From 6b7765a73bfd74d42006629eb2aa2cebed1dc2b0 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 2 May 2022 16:19:23 +0200 Subject: [PATCH 001/652] New Crowdin updates (#18213) * New translations activerecord.en.yml (Ido) * New translations en.json (Ido) * New translations activerecord.en.yml (Ido) * New translations en.json (Ido) * New translations en.json (Ido) * New translations en.json (Ido) * New translations en.json (Ido) * New translations en.json (Ido) * New translations en.yml (Armenian) * New translations en.json (Armenian) * New translations en.yml (Russian) * New translations en.yml (Armenian) * New translations en.json (Armenian) * New translations en.yml (Armenian) * New translations en.json (Japanese) * New translations en.json (Armenian) * New translations en.yml (Armenian) * New translations en.json (Japanese) * New translations doorkeeper.en.yml (Armenian) * New translations simple_form.en.yml (Sorani (Kurdish)) * New translations simple_form.en.yml (Sorani (Kurdish)) * New translations en.json (Spanish) * New translations en.json (Portuguese) * New translations en.yml (Chinese Simplified) * New translations en.json (Portuguese) * New translations devise.en.yml (Chinese Simplified) * New translations en.json (Portuguese) * New translations en.yml (Portuguese) * New translations en.yml (Portuguese) * New translations en.yml (Polish) * New translations doorkeeper.en.yml (Japanese) * New translations activerecord.en.yml (Japanese) * New translations devise.en.yml (Japanese) * New translations doorkeeper.en.yml (Japanese) * New translations simple_form.en.yml (Japanese) * New translations simple_form.en.yml (Japanese) * New translations en.json (Japanese) * New translations simple_form.en.yml (Japanese) * New translations en.json (Japanese) * New translations en.json (Galician) * New translations en.json (Japanese) * New translations en.json (Japanese) * New translations en.yml (Japanese) * New translations en.yml (Japanese) * New translations en.yml (Japanese) * New translations en.yml (Japanese) * New translations en.yml (Japanese) * New translations en.yml (Japanese) * New translations en.yml (Japanese) * New translations en.yml (Japanese) * New translations en.yml (Japanese) * New translations en.yml (Japanese) * New translations en.yml (Japanese) * New translations en.yml (Japanese) * New translations en.yml (Japanese) * New translations en.yml (Japanese) * New translations simple_form.en.yml (Japanese) * New translations devise.en.yml (Japanese) * New translations en.yml (Scottish Gaelic) * New translations en.json (Scottish Gaelic) * New translations simple_form.en.yml (Scottish Gaelic) * New translations activerecord.en.yml (Scottish Gaelic) * New translations devise.en.yml (Scottish Gaelic) * New translations doorkeeper.en.yml (Scottish Gaelic) * New translations en.yml (Danish) * New translations en.yml (Danish) * New translations en.json (Welsh) * New translations en.json (Welsh) * New translations en.json (Welsh) * New translations en.json (Welsh) * New translations en.json (Welsh) * New translations en.json (Welsh) * New translations en.json (Icelandic) * New translations en.json (Icelandic) * New translations en.json (Icelandic) * New translations en.yml (Icelandic) * New translations simple_form.en.yml (Icelandic) * New translations en.json (Icelandic) * New translations en.json (Icelandic) * New translations en.json (Welsh) * New translations en.json (Welsh) * New translations en.json (Welsh) * New translations en.json (Icelandic) * New translations en.json (Welsh) * New translations en.json (Welsh) * New translations en.json (Icelandic) * New translations simple_form.en.yml (Icelandic) * New translations en.json (Welsh) * New translations en.json (Welsh) * New translations en.json (Welsh) * New translations en.json (Czech) * New translations en.json (German) * New translations en.json (Czech) * New translations en.json (Czech) * New translations en.json (Czech) * New translations doorkeeper.en.yml (Ido) * New translations en.json (Icelandic) * New translations doorkeeper.en.yml (Ido) * New translations doorkeeper.en.yml (Ido) * New translations doorkeeper.en.yml (Ido) * New translations doorkeeper.en.yml (Ido) * New translations doorkeeper.en.yml (Ido) * New translations doorkeeper.en.yml (Ido) * New translations doorkeeper.en.yml (Ido) * New translations en.yml (Korean) * New translations en.yml (Hungarian) * New translations en.yml (Georgian) * New translations en.yml (Lithuanian) * New translations en.yml (Macedonian) * New translations en.yml (Dutch) * New translations en.yml (Norwegian) * New translations en.yml (Punjabi) * New translations en.yml (Albanian) * New translations en.yml (Basque) * New translations en.yml (Serbian (Cyrillic)) * New translations en.yml (Turkish) * New translations en.yml (Ukrainian) * New translations en.yml (Chinese Traditional) * New translations en.yml (Urdu (Pakistan)) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Indonesian) * New translations en.yml (Tamil) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Finnish) * New translations en.yml (Greek) * New translations en.yml (Galician) * New translations en.yml (Slovak) * New translations en.yml (Swedish) * New translations en.yml (Arabic) * New translations en.yml (French) * New translations en.yml (Spanish) * New translations en.yml (Catalan) * New translations en.yml (Hebrew) * New translations en.yml (Italian) * New translations en.yml (Slovenian) * New translations en.yml (German) * New translations en.yml (Vietnamese) * New translations en.yml (Thai) * New translations en.yml (Occitan) * New translations en.yml (Persian) * New translations en.yml (Romanian) * New translations en.yml (Afrikaans) * New translations en.yml (Bulgarian) * New translations en.yml (Czech) * New translations en.yml (Spanish, Mexico) * New translations en.yml (Bengali) * New translations en.yml (Cornish) * New translations en.yml (Irish) * New translations en.yml (Standard Moroccan Tamazight) * New translations en.yml (Silesian) * New translations en.yml (Taigi) * New translations en.yml (Ido) * New translations en.yml (Kabyle) * New translations en.yml (Sanskrit) * New translations en.yml (Sardinian) * New translations en.yml (Corsican) * New translations en.yml (Sorani (Kurdish)) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.yml (Serbian (Latin)) * New translations en.yml (Asturian) * New translations en.yml (Kannada) * New translations en.yml (Sinhala) * New translations en.yml (Marathi) * New translations en.yml (Malay) * New translations en.yml (Croatian) * New translations en.yml (Norwegian Nynorsk) * New translations en.yml (Kazakh) * New translations en.yml (Estonian) * New translations en.yml (Latvian) * New translations en.yml (Hindi) * New translations en.yml (Telugu) * New translations en.yml (Breton) * New translations en.yml (Welsh) * New translations en.yml (Esperanto) * New translations en.yml (Uyghur) * New translations en.yml (Chinese Traditional, Hong Kong) * New translations en.yml (Tatar) * New translations en.yml (Malayalam) * New translations en.yml (English, United Kingdom) * New translations en.yml (Chinese Traditional) * New translations en.json (Chinese Simplified) * New translations en.json (Chinese Simplified) * New translations en.json (Chinese Simplified) * New translations en.json (Chinese Simplified) * New translations en.json (Chinese Simplified) * New translations en.yml (Ido) * New translations en.json (Chinese Simplified) * New translations doorkeeper.en.yml (Ido) * New translations en.yml (Korean) * New translations doorkeeper.en.yml (Ido) * New translations doorkeeper.en.yml (Ido) * New translations en.yml (Japanese) * New translations en.yml (Turkish) * New translations en.yml (Chinese Simplified) * New translations en.json (Chinese Simplified) * New translations en.json (Chinese Simplified) * New translations en.yml (Vietnamese) * New translations en.yml (Greek) * New translations en.yml (Catalan) * New translations en.yml (French) * New translations en.yml (Spanish) * New translations en.yml (Polish) * New translations doorkeeper.en.yml (Persian) * New translations en.yml (Czech) * New translations en.yml (Icelandic) * New translations en.json (Icelandic) * New translations en.yml (Russian) * New translations en.yml (Hungarian) * New translations en.yml (Swedish) * New translations en.yml (Indonesian) * New translations en.yml (Swedish) * New translations en.yml (Welsh) * New translations en.json (Swedish) * New translations en.yml (Danish) * New translations en.yml (Galician) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/cs.json | 16 +- app/javascript/mastodon/locales/cy.json | 230 +++++------ app/javascript/mastodon/locales/de.json | 6 +- app/javascript/mastodon/locales/es.json | 4 +- app/javascript/mastodon/locales/gd.json | 12 +- app/javascript/mastodon/locales/gl.json | 2 +- app/javascript/mastodon/locales/hy.json | 66 ++-- app/javascript/mastodon/locales/io.json | 90 ++--- app/javascript/mastodon/locales/is.json | 20 +- app/javascript/mastodon/locales/ja.json | 68 ++-- app/javascript/mastodon/locales/pt-PT.json | 16 +- app/javascript/mastodon/locales/sv.json | 10 +- app/javascript/mastodon/locales/zh-CN.json | 122 +++--- config/locales/activerecord.io.yml | 31 ++ config/locales/activerecord.ja.yml | 4 +- config/locales/ca.yml | 2 + config/locales/cs.yml | 2 + config/locales/cy.yml | 2 + config/locales/da.yml | 4 + config/locales/devise.ja.yml | 22 +- config/locales/devise.zh-CN.yml | 2 +- config/locales/doorkeeper.fa.yml | 10 + config/locales/doorkeeper.hy.yml | 22 ++ config/locales/doorkeeper.io.yml | 140 +++++++ config/locales/doorkeeper.ja.yml | 6 +- config/locales/el.yml | 3 + config/locales/en-GB.yml | 12 + config/locales/es.yml | 2 + config/locales/fr.yml | 2 + config/locales/gd.yml | 18 +- config/locales/gl.yml | 2 + config/locales/hu.yml | 2 + config/locales/hy.yml | 74 +++- config/locales/id.yml | 2 + config/locales/io.yml | 3 + config/locales/is.yml | 2 + config/locales/it.yml | 2 +- config/locales/ja.yml | 434 +++++++++++---------- config/locales/ko.yml | 2 + config/locales/pl.yml | 12 + config/locales/pt-PT.yml | 16 +- config/locales/ru.yml | 4 +- config/locales/simple_form.ckb.yml | 3 +- config/locales/simple_form.gd.yml | 2 +- config/locales/simple_form.is.yml | 6 +- config/locales/simple_form.ja.yml | 14 +- config/locales/sv.yml | 30 ++ config/locales/tr.yml | 2 + config/locales/vi.yml | 2 + config/locales/zh-CN.yml | 6 +- config/locales/zh-TW.yml | 2 + 51 files changed, 959 insertions(+), 609 deletions(-) create mode 100644 config/locales/en-GB.yml diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 6260e2cb8..df1e750b7 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -93,7 +93,7 @@ "community.column_settings.media_only": "Pouze média", "community.column_settings.remote_only": "Pouze vzdálené", "compose_form.direct_message_warning_learn_more": "Zjistit více", - "compose_form.encryption_warning": "Příspěvky v Mastodonu nejsou šifrovány end-to-end. Nesdílejte žádné nebezpečné informace přes Mastodon.", + "compose_form.encryption_warning": "Příspěvky na Mastodonu nejsou end-to-end šifrovány. Nesdílejte přes Mastodon žádné nebezpečné informace.", "compose_form.hashtag_warning": "Tento příspěvek nebude zobrazen pod žádným hashtagem, neboť je neuvedený. Pouze veřejné příspěvky mohou být vyhledány podle hashtagu.", "compose_form.lock_disclaimer": "Váš účet není {locked}. Kdokoliv vás může sledovat a vidět vaše příspěvky učené pouze pro sledující.", "compose_form.lock_disclaimer.lock": "uzamčen", @@ -166,7 +166,7 @@ "empty_column.blocks": "Ještě jste nezablokovali žádného uživatele.", "empty_column.bookmarked_statuses": "Ještě nemáte v záložkách žádné příspěvky. Pokud si do nich nějaký přidáte, zobrazí se zde.", "empty_column.community": "Místní časová osa je prázdná. Napište něco veřejně a rozhýbejte to tu!", - "empty_column.conversations": "Jakmile pošlete nebo obdržíte příspěvek, který je viditelný pouze pro lidi v něm uvedené, zobrazí se zde.", + "empty_column.conversations": "Jakmile pošlete nebo obdržíte příspěvek, který je viditelný pouze lidem v něm zmíněným, objeví se tady.", "empty_column.domain_blocks": "Ještě nemáte žádné blokované domény.", "empty_column.explore_statuses": "Momentálně není nic populární. Vraťte se později!", "empty_column.favourited_statuses": "Ještě nemáte žádné oblíbené příspěvky. Pokud si nějaký oblíbíte, zobrazí se zde.", @@ -230,7 +230,7 @@ "keyboard_shortcuts.boost": "Boostnout příspěvek", "keyboard_shortcuts.column": "Focus na sloupec", "keyboard_shortcuts.compose": "Focus na textové pole nového příspěvku", - "keyboard_shortcuts.conversations": "pro otevření sloupce konverzací", + "keyboard_shortcuts.conversations": "Otevřít sloupec konverzací", "keyboard_shortcuts.description": "Popis", "keyboard_shortcuts.down": "Posunout dolů v seznamu", "keyboard_shortcuts.enter": "Otevřít příspěvek", @@ -365,13 +365,13 @@ "poll_button.add_poll": "Přidat anketu", "poll_button.remove_poll": "Odstranit anketu", "privacy.change": "Změnit soukromí příspěvku", - "privacy.direct.long": "Viditelné pouze pro zmíněné uživatele", - "privacy.direct.short": "Pouze lidé, které zmiňuji", - "privacy.private.long": "Viditelné pouze pro sledující", + "privacy.direct.long": "Viditelný pouze pro zmíněné uživatele", + "privacy.direct.short": "Pouze lidé, které zmíním", + "privacy.private.long": "Viditelný pouze pro sledující", "privacy.private.short": "Pouze sledující", - "privacy.public.long": "Viditelné pro všechny", + "privacy.public.long": "Viditelný pro všechny", "privacy.public.short": "Veřejný", - "privacy.unlisted.long": "Viditelné pro všechny, ale bez objevovacích funkcí", + "privacy.unlisted.long": "Viditelný pro všechny, ale vyňat z funkcí objevování", "privacy.unlisted.short": "Neuvedený", "refresh": "Obnovit", "regeneration_indicator.label": "Načítání…", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 039379315..7edb1d1cf 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -4,20 +4,20 @@ "account.badges.bot": "Bot", "account.badges.group": "Grŵp", "account.block": "Blocio @{name}", - "account.block_domain": "Cuddio popeth rhag {domain}", + "account.block_domain": "Blocio parth {domain}", "account.blocked": "Blociwyd", "account.browse_more_on_origin_server": "Pori mwy ar y proffil gwreiddiol", "account.cancel_follow_request": "Canslo cais dilyn", "account.direct": "Neges breifat @{name}", "account.disable_notifications": "Stopiwch fy hysbysu pan fydd @{name} yn postio", - "account.domain_blocked": "Parth wedi ei guddio", + "account.domain_blocked": "Parth wedi ei flocio", "account.edit_profile": "Golygu proffil", "account.enable_notifications": "Rhowch wybod i fi pan fydd @{name} yn postio", "account.endorse": "Arddangos ar fy mhroffil", "account.follow": "Dilyn", "account.followers": "Dilynwyr", - "account.followers.empty": "Nid oes neb yn dilyn y defnyddiwr hwn eto.", - "account.followers_counter": "{count, plural, one {{counter} Ddilynwr} other {{counter} o Ddilynwyr}}", + "account.followers.empty": "Does neb yn dilyn y defnyddiwr hwn eto.", + "account.followers_counter": "{count, plural, one {{counter} Dilynwr} other {{counter} o Ddilynwyr}}", "account.following": "Yn dilyn", "account.following_counter": "{count, plural, one {{counter} yn Dilyn} other {{counter} yn Dilyn}}", "account.follows.empty": "Nid yw'r defnyddiwr hwn yn dilyn unrhyw un eto.", @@ -32,8 +32,8 @@ "account.mute": "Tawelu @{name}", "account.mute_notifications": "Cuddio hysbysiadau o @{name}", "account.muted": "Distewyd", - "account.posts": "Tŵtiau", - "account.posts_with_replies": "Tŵtiau ac atebion", + "account.posts": "Postiadau", + "account.posts_with_replies": "Postiadau ac atebion", "account.report": "Adrodd @{name}", "account.requested": "Aros am gymeradwyaeth. Cliciwch er mwyn canslo cais dilyn", "account.share": "Rhannwch broffil @{name}", @@ -48,17 +48,17 @@ "account.unmute_notifications": "Dad-dawelu hysbysiadau o @{name}", "account.unmute_short": "Dad-dewi", "account_note.placeholder": "Clicio i ychwanegu nodyn", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Cyfradd cadw defnyddwyr fesul diwrnod ar ôl cofrestru", + "admin.dashboard.monthly_retention": "Cyfradd cadw defnyddwyr fesul mis ar ôl cofrestru", "admin.dashboard.retention.average": "Cyfartaledd", - "admin.dashboard.retention.cohort": "Sign-up month", + "admin.dashboard.retention.cohort": "Mis cofrestru", "admin.dashboard.retention.cohort_size": "Defnyddwyr newydd", "alert.rate_limited.message": "Ceisiwch eto ar ôl {retry_time, time, medium}.", "alert.rate_limited.title": "Cyfradd gyfyngedig", "alert.unexpected.message": "Digwyddodd gwall annisgwyl.", "alert.unexpected.title": "Wps!", "announcement.announcement": "Cyhoeddiad", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(heb eu prosesu)", "autosuggest_hashtag.per_week": "{count} yr wythnos", "boost_modal.combo": "Mae modd gwasgu {combo} er mwyn sgipio hyn tro nesa", "bundle_column_error.body": "Aeth rhywbeth o'i le tra'n llwytho'r elfen hon.", @@ -70,7 +70,7 @@ "column.blocks": "Defnyddwyr a flociwyd", "column.bookmarks": "Tudalnodau", "column.community": "Ffrwd lleol", - "column.conversations": "Conversations", + "column.conversations": "Sgyrsiau", "column.directory": "Pori proffiliau", "column.domain_blocks": "Parthau cuddiedig", "column.favourites": "Ffefrynnau", @@ -79,7 +79,7 @@ "column.lists": "Rhestrau", "column.mutes": "Defnyddwyr a ddistewyd", "column.notifications": "Hysbysiadau", - "column.pins": "Tŵtiau wedi eu pinio", + "column.pins": "Postiadau wedi eu pinio", "column.public": "Ffrwd y ffederasiwn", "column_back_button.label": "Nôl", "column_header.hide_settings": "Cuddio dewisiadau", @@ -93,9 +93,9 @@ "community.column_settings.media_only": "Cyfryngau yn unig", "community.column_settings.remote_only": "Anghysbell yn unig", "compose_form.direct_message_warning_learn_more": "Dysgu mwy", - "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": "Ni fydd y tŵt hwn wedi ei restru o dan unrhyw hashnod gan ei fod heb ei restru. Dim ond tŵtiau cyhoeddus gellid chwilota amdanynt drwy hashnod.", - "compose_form.lock_disclaimer": "Nid yw eich cyfri wedi'i {locked}. Gall unrhyw un eich dilyn i weld eich tŵtiau dilynwyr-yn-unig.", + "compose_form.encryption_warning": "Dyw postiadau ar Mastodon ddim wedi'u hamgryptio o ben i ben. Peidiwch â rhannu unrhyw wybodaeth beryglus dros Mastodon.", + "compose_form.hashtag_warning": "Ni fydd y post hwn wedi ei restru o dan unrhyw hashnod gan ei fod heb ei restru. Dim ond postiadau cyhoeddus gellid chwilio amdanynt drwy hashnod.", + "compose_form.lock_disclaimer": "Nid yw eich cyfri wedi'i {locked}. Gall unrhyw un eich dilyn i weld eich postiadau dilynwyr-yn-unig.", "compose_form.lock_disclaimer.lock": "wedi ei gloi", "compose_form.placeholder": "Beth sydd ar eich meddwl?", "compose_form.poll.add_option": "Ychwanegu Dewisiad", @@ -106,7 +106,7 @@ "compose_form.poll.switch_to_single": "Newid pleidlais i gyfyngu i un dewis", "compose_form.publish": "Tŵt", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Cadw newidiadau", "compose_form.sensitive.hide": "Marcio cyfryngau fel eu bod yn sensitif", "compose_form.sensitive.marked": "Cyfryngau wedi'u marcio'n sensitif", "compose_form.sensitive.unmarked": "Nid yw'r cyfryngau wedi'u marcio'n sensitif", @@ -118,11 +118,11 @@ "confirmations.block.confirm": "Blocio", "confirmations.block.message": "Ydych chi'n sicr eich bod eisiau blocio {name}?", "confirmations.delete.confirm": "Dileu", - "confirmations.delete.message": "Ydych chi'n sicr eich bod eisiau dileu y tŵt hwn?", + "confirmations.delete.message": "Ydych chi'n sicr eich bod eisiau dileu y post hwn?", "confirmations.delete_list.confirm": "Dileu", "confirmations.delete_list.message": "Ydych chi'n sicr eich bod eisiau dileu y rhestr hwn am byth?", "confirmations.discard_edit_media.confirm": "Gwaredu", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.message": "Mae gennych newidiadau heb eu cadw i'r disgrifiad cyfryngau neu'r rhagolwg, eu taflu beth bynnag?", "confirmations.domain_block.confirm": "Cuddio parth cyfan", "confirmations.domain_block.message": "A ydych yn hollol, hollol sicr eich bod am flocio y {domain} cyfan? Yn y nifer helaeth o achosion mae blocio neu tawelu ambell gyfrif yn ddigonol ac yn well. Ni fyddwch yn gweld cynnwys o'r parth hwnnw mewn unrhyw ffrydiau cyhoeddus na chwaith yn eich hysbysiadau. Bydd hyn yn cael gwared o'ch dilynwyr o'r parth hwnnw.", "confirmations.logout.confirm": "Allgofnodi", @@ -131,7 +131,7 @@ "confirmations.mute.explanation": "Bydd hyn yn cuddio pyst oddi wrthynt a physt sydd yn sôn amdanynt, ond bydd hyn dal yn gadael iddyn nhw gweld eich pyst a'ch dilyn.", "confirmations.mute.message": "Ydych chi'n sicr eich bod am ddistewi {name}?", "confirmations.redraft.confirm": "Dileu & ailddrafftio", - "confirmations.redraft.message": "Ydych chi'n siwr eich bod eisiau dileu y tŵt hwn a'i ailddrafftio? Bydd ffefrynnau a bwstiau'n cael ei colli, a bydd ymatebion i'r tŵt gwreiddiol yn cael eu hamddifadu.", + "confirmations.redraft.message": "Ydych chi'n siwr eich bod eisiau dileu y post hwn a'i ailddrafftio? Bydd ffefrynnau a hybiau'n cael ei colli, a bydd ymatebion i'r post gwreiddiol yn cael eu hamddifadu.", "confirmations.reply.confirm": "Ateb", "confirmations.reply.message": "Bydd ateb nawr yn cymryd lle y neges yr ydych yn cyfansoddi ar hyn o bryd. Ydych chi'n sicr yr ydych am barhau?", "confirmations.unfollow.confirm": "Dad-ddilynwch", @@ -140,11 +140,11 @@ "conversation.mark_as_read": "Nodi fel wedi'i ddarllen", "conversation.open": "Gweld sgwrs", "conversation.with": "Gyda {names}", - "directory.federated": "O ffedysawd hysbys", + "directory.federated": "O'r ffedysawd cyfan", "directory.local": "O {domain} yn unig", "directory.new_arrivals": "Newydd-ddyfodiaid", "directory.recently_active": "Yn weithredol yn ddiweddar", - "embed.instructions": "Mewnblannwch y tŵt hwn ar eich gwefan drwy gopïo'r côd isod.", + "embed.instructions": "Gosodwch y post hwn ar eich gwefan drwy gopïo'r côd isod.", "embed.preview": "Dyma sut olwg fydd arno:", "emoji_button.activity": "Gweithgarwch", "emoji_button.custom": "Unigryw", @@ -160,42 +160,42 @@ "emoji_button.search_results": "Canlyniadau chwilio", "emoji_button.symbols": "Symbolau", "emoji_button.travel": "Teithio & Llefydd", - "empty_column.account_suspended": "Account suspended", - "empty_column.account_timeline": "Dim tŵtiau fama!", + "empty_column.account_suspended": "Cyfrif wedi'i atal", + "empty_column.account_timeline": "Dim postiadau yma!", "empty_column.account_unavailable": "Proffil ddim ar gael", "empty_column.blocks": "Nid ydych wedi blocio unrhyw ddefnyddwyr eto.", "empty_column.bookmarked_statuses": "Nid oes gennych unrhyw dwtiau tudalnodiedig eto. Pan y byddwch yn tudalnodi un, mi fydd yn ymddangos yma.", "empty_column.community": "Mae'r ffrwd lleol yn wag. Ysgrifenwch rhywbeth yn gyhoeddus i gael dechrau arni!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.conversations": "Unwaith y byddwch chi'n anfon neu'n derbyn post sydd ond yn weladwy i'r bobl a grybwyllir ynddo, bydd yn ymddangos yma.", "empty_column.domain_blocks": "Nid oes yna unrhyw barthau cuddiedig eto.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "Does dim byd yn trendio ar hyn o bryd. Gwiriwch yn ôl yn nes ymlaen!", "empty_column.favourited_statuses": "Nid oes gennych unrhyw hoff dwtiau eto. Pan y byddwch yn hoffi un, mi fydd yn ymddangos yma.", - "empty_column.favourites": "Nid oes neb wedi hoffi'r tŵt yma eto. Pan bydd rhywun yn ei hoffi, byddent yn ymddangos yma.", - "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", + "empty_column.favourites": "Does neb wedi hoffi'r post hwn eto. Pan bydd rhywun yn ei hoffi, byddent yn ymddangos yma.", + "empty_column.follow_recommendations": "Does dim awgrymiadau yma i chi. Gallwch geisio chwilio am bobl yr ydych yn eu hadnabod neu archwilio hashnodau sy'n trendio.", "empty_column.follow_requests": "Nid oes gennych unrhyw geisiadau dilyn eto. Pan dderbyniwch chi un, byddent yn ymddangos yma.", "empty_column.hashtag": "Nid oes dim ar yr hashnod hwn eto.", "empty_column.home": "Mae eich ffrwd gartref yn wag! Ymwelwch a {public} neu defnyddiwch y chwilotwr i ddechrau arni ac i gwrdd a defnyddwyr eraill.", - "empty_column.home.suggestions": "See some suggestions", + "empty_column.home.suggestions": "Gweler awgrymiadau", "empty_column.list": "Nid oes dim yn y rhestr yma eto. Pan y bydd aelodau'r rhestr yn cyhoeddi statws newydd, mi fydd yn ymddangos yma.", "empty_column.lists": "Nid oes gennych unrhyw restrau eto. Pan grëwch chi un, mi fydd yn ymddangos yma.", "empty_column.mutes": "Nid ydych wedi tawelu unrhyw ddefnyddwyr eto.", "empty_column.notifications": "Nid oes gennych unrhyw hysbysiadau eto. Rhyngweithiwch ac eraill i ddechrau'r sgwrs.", "empty_column.public": "Does dim byd yma! Ysgrifennwch rhywbeth yn gyhoeddus, neu dilynwch ddefnyddwyr o achosion eraill i'w lenwi", "error.unexpected_crash.explanation": "Oherwydd gwall yn ein cod neu oherwydd problem cysondeb porwr, nid oedd y dudalen hon gallu cael ei dangos yn gywir.", - "error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.", + "error.unexpected_crash.explanation_addons": "Ni ellid arddangos y dudalen hon yn gywir. Mae'r gwall hwn yn debygol o gael ei achosi gan ategyn porwr neu offer cyfieithu awtomatig.", "error.unexpected_crash.next_steps": "Ceisiwch ail-lwytho y dudalen. Os nad yw hyn yn eich helpu, efallai gallech defnyddio Mastodon trwy borwr neu ap brodorol gwahanol.", - "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", + "error.unexpected_crash.next_steps_addons": "Ceisiwch eu hanalluogi ac adnewyddu'r dudalen. Os nad yw hynny'n helpu, efallai y byddwch yn dal i allu defnyddio Mastodon trwy borwr neu ap cynhenid arall.", "errors.unexpected_crash.copy_stacktrace": "Copïo'r olrhain stac i'r clipfwrdd", "errors.unexpected_crash.report_issue": "Rhoi gwybod am broblem", - "explore.search_results": "Search results", + "explore.search_results": "Canlyniadau chwilio", "explore.suggested_follows": "I chi", "explore.title": "Archwilio", "explore.trending_links": "Newyddion", "explore.trending_statuses": "Postiau", "explore.trending_tags": "Hanshnodau", "follow_recommendations.done": "Wedi gorffen", - "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", - "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", + "follow_recommendations.heading": "Dilynwch y bobl yr hoffech chi weld eu postiadau! Dyma ambell i awgrymiad.", + "follow_recommendations.lead": "Bydd postiadau gan bobl rydych chi'n eu dilyn yn ymddangos mewn trefn amser ar eich ffrwd cartref. Peidiwch â bod ofn gwneud camgymeriadau, gallwch chi ddad-ddilyn pobl yr un mor hawdd unrhyw bryd!", "follow_request.authorize": "Caniatau", "follow_request.reject": "Gwrthod", "follow_requests.unlocked_explanation": "Er nid yw eich cyfrif wedi'i gloi, oedd y staff {domain} yn meddwl efallai hoffech adolygu ceisiadau dilyn o'r cyfrifau rhain wrth law.", @@ -218,7 +218,7 @@ "hashtag.column_settings.tag_mode.none": "Dim o'r rhain", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", "home.column_settings.basic": "Syml", - "home.column_settings.show_reblogs": "Dangos bŵstiau", + "home.column_settings.show_reblogs": "Dangos hybiau", "home.column_settings.show_replies": "Dangos ymatebion", "home.hide_announcements": "Cuddio cyhoeddiadau", "home.show_announcements": "Dangos cyhoeddiadau", @@ -228,26 +228,26 @@ "keyboard_shortcuts.back": "i lywio nôl", "keyboard_shortcuts.blocked": "i agor rhestr defnyddwyr a flociwyd", "keyboard_shortcuts.boost": "i fŵstio", - "keyboard_shortcuts.column": "i ffocysu tŵt yn un o'r colofnau", + "keyboard_shortcuts.column": "Ffocysu colofn", "keyboard_shortcuts.compose": "i ffocysu yr ardal cyfansoddi testun", - "keyboard_shortcuts.conversations": "to open conversations column", + "keyboard_shortcuts.conversations": "i agor colofn sgyrsiau", "keyboard_shortcuts.description": "Disgrifiad", "keyboard_shortcuts.down": "i symud lawr yn y rhestr", - "keyboard_shortcuts.enter": "i agor tŵt", + "keyboard_shortcuts.enter": "Agor post", "keyboard_shortcuts.favourite": "i hoffi", "keyboard_shortcuts.favourites": "i agor rhestr hoffi", "keyboard_shortcuts.federated": "i agor ffrwd y ffederasiwn", "keyboard_shortcuts.heading": "Llwybrau byr allweddell", "keyboard_shortcuts.home": "i agor ffrwd cartref", "keyboard_shortcuts.hotkey": "Bysell brys", - "keyboard_shortcuts.legend": "i ddangos yr arwr yma", + "keyboard_shortcuts.legend": "i ddangos y rhestr hon", "keyboard_shortcuts.local": "i agor ffrwd lleol", "keyboard_shortcuts.mention": "i grybwyll yr awdur", "keyboard_shortcuts.muted": "i agor rhestr defnyddwyr a dawelwyd", "keyboard_shortcuts.my_profile": "i agor eich proffil", "keyboard_shortcuts.notifications": "i agor colofn hysbysiadau", "keyboard_shortcuts.open_media": "i agor cyfryngau", - "keyboard_shortcuts.pinned": "i agor rhestr tŵtiau wedi'i pinio", + "keyboard_shortcuts.pinned": "Agor rhestr postiadau wedi'u pinio", "keyboard_shortcuts.profile": "i agor proffil yr awdur", "keyboard_shortcuts.reply": "i ateb", "keyboard_shortcuts.requests": "i agor rhestr ceisiadau dilyn", @@ -256,7 +256,7 @@ "keyboard_shortcuts.start": "i agor colofn \"dechrau arni\"", "keyboard_shortcuts.toggle_hidden": "i ddangos/cuddio testun tu ôl i CW", "keyboard_shortcuts.toggle_sensitivity": "i ddangos/gyddio cyfryngau", - "keyboard_shortcuts.toot": "i ddechrau tŵt newydd sbon", + "keyboard_shortcuts.toot": "Dechrau post newydd", "keyboard_shortcuts.unfocus": "i ddad-ffocysu ardal cyfansoddi testun/chwilio", "keyboard_shortcuts.up": "i symud yn uwch yn y rhestr", "lightbox.close": "Cau", @@ -275,7 +275,7 @@ "lists.replies_policy.list": "Aelodau'r rhestr", "lists.replies_policy.none": "Neb", "lists.replies_policy.title": "Dangos ymatebion i:", - "lists.search": "Chwilio ymysg pobl yr ydych yn ei ddilyn", + "lists.search": "Chwilio ymysg pobl yr ydych yn eu dilyn", "lists.subheading": "Eich rhestrau", "load_pending": "{count, plural, one {# eitem newydd} other {# eitemau newydd}}", "loading_indicator.label": "Llwytho...", @@ -289,7 +289,7 @@ "navigation_bar.blocks": "Defnyddwyr wedi eu blocio", "navigation_bar.bookmarks": "Tudalnodau", "navigation_bar.community_timeline": "Ffrwd leol", - "navigation_bar.compose": "Cyfansoddi tŵt newydd", + "navigation_bar.compose": "Cyfansoddi post newydd", "navigation_bar.discover": "Darganfod", "navigation_bar.domain_blocks": "Parthau cuddiedig", "navigation_bar.edit_profile": "Golygu proffil", @@ -304,28 +304,28 @@ "navigation_bar.logout": "Allgofnodi", "navigation_bar.mutes": "Defnyddwyr a dawelwyd", "navigation_bar.personal": "Personol", - "navigation_bar.pins": "Tŵtiau wedi eu pinio", + "navigation_bar.pins": "Postiadau wedi eu pinio", "navigation_bar.preferences": "Dewisiadau", "navigation_bar.public_timeline": "Ffrwd y ffederasiwn", "navigation_bar.security": "Diogelwch", - "notification.admin.sign_up": "{name} signed up", - "notification.favourite": "hoffodd {name} eich tŵt", - "notification.follow": "dilynodd {name} chi", + "notification.admin.sign_up": "Cofrestrodd {name}", + "notification.favourite": "Hoffodd {name} eich post", + "notification.follow": "Dilynodd {name} chi", "notification.follow_request": "Mae {name} wedi gwneud cais i'ch dilyn", "notification.mention": "Soniodd {name} amdanoch chi", "notification.own_poll": "Mae eich pôl wedi diweddu", "notification.poll": "Mae pleidlais rydych wedi pleidleisio ynddi wedi dod i ben", - "notification.reblog": "Hysbysebodd {name} eich tŵt", + "notification.reblog": "Hybodd {name} eich post", "notification.status": "{name} newydd ei bostio", - "notification.update": "{name} edited a post", + "notification.update": "Golygodd {name} bost", "notifications.clear": "Clirio hysbysiadau", "notifications.clear_confirmation": "Ydych chi'n sicr eich bod am glirio'ch holl hysbysiadau am byth?", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "Cofrestriadau newydd:", "notifications.column_settings.alert": "Hysbysiadau bwrdd gwaith", "notifications.column_settings.favourite": "Ffefrynnau:", "notifications.column_settings.filter_bar.advanced": "Dangos pob categori", "notifications.column_settings.filter_bar.category": "Bar hidlo", - "notifications.column_settings.filter_bar.show_bar": "Show filter bar", + "notifications.column_settings.filter_bar.show_bar": "Dangos bar hidlo", "notifications.column_settings.follow": "Dilynwyr newydd:", "notifications.column_settings.follow_request": "Ceisiadau dilyn newydd:", "notifications.column_settings.mention": "Crybwylliadau:", @@ -335,10 +335,10 @@ "notifications.column_settings.show": "Dangos yn y golofn", "notifications.column_settings.sound": "Chwarae sain", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_notifications.category": "Unread notifications", - "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.unread_notifications.category": "Hysbysiadau heb eu darllen", + "notifications.column_settings.unread_notifications.highlight": "Amlygu hysbysiadau heb eu darllen", "notifications.column_settings.update": "Golygiadau:", - "notifications.filter.all": "Pob", + "notifications.filter.all": "Popeth", "notifications.filter.boosts": "Hybiadau", "notifications.filter.favourites": "Ffefrynnau", "notifications.filter.follows": "Yn dilyn", @@ -361,116 +361,116 @@ "poll.total_votes": "{count, plural, one {# bleidlais} other {# o bleidleisiau}}", "poll.vote": "Pleidleisio", "poll.voted": "Pleidleisioch chi am yr ateb hon", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# bleidlais} other {# o bleidleisiau}}", "poll_button.add_poll": "Ychwanegu pleidlais", "poll_button.remove_poll": "Tynnu pleidlais", - "privacy.change": "Addasu preifatrwdd y tŵt", + "privacy.change": "Addasu preifatrwdd y post", "privacy.direct.long": "Cyhoeddi i'r defnyddwyr sy'n cael eu crybwyll yn unig", - "privacy.direct.short": "Direct", + "privacy.direct.short": "Dim ond pobl rwy'n eu crybwyll", "privacy.private.long": "Cyhoeddi i ddilynwyr yn unig", - "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all", + "privacy.private.short": "Dilynwyr yn unig", + "privacy.public.long": "Gweladwy i bawb", "privacy.public.short": "Cyhoeddus", - "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", + "privacy.unlisted.long": "Gweladwy i bawb, ond wedi optio allan o nodweddion darganfod", "privacy.unlisted.short": "Heb ei restru", "refresh": "Adnewyddu", "regeneration_indicator.label": "Llwytho…", "regeneration_indicator.sublabel": "Mae eich ffrwd cartref yn cael ei baratoi!", "relative_time.days": "{number}dydd", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.days": "{number, plural, one {# dydd} other {# o ddyddiau}} yn ôl", + "relative_time.full.hours": "{number, plural, one {# awr} other {# o oriau}} yn ôl", "relative_time.full.just_now": "jyst nawr", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", - "relative_time.hours": "{number}awr", + "relative_time.full.minutes": "{number, plural, one {# funud} other {# o funudau}} yn ôl", + "relative_time.full.seconds": "{number, plural, one {# eiliad} other {# o eiliadau}} yn ôl", + "relative_time.hours": "{number} awr", "relative_time.just_now": "nawr", - "relative_time.minutes": "{number}munud", + "relative_time.minutes": "{number} munud", "relative_time.seconds": "{number}eiliad", "relative_time.today": "heddiw", "reply_indicator.cancel": "Canslo", "report.block": "Blocio", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.block_explanation": "Ni welwch chi eu postiadau. Ni allan nhw weld eich postiadau na'ch dilyn. Byddan nhw'n gallu gweld eu bod nhw wedi'u rhwystro.", "report.categories.other": "Arall", "report.categories.spam": "Sbam", - "report.categories.violation": "Content violates one or more server rules", - "report.category.subtitle": "Choose the best match", - "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", + "report.categories.violation": "Mae cynnwys yn torri un neu fwy o reolau'r gweinydd", + "report.category.subtitle": "Dewiswch yr ateb gorau", + "report.category.title": "Beth sy'n bod â'r {type} hwn?", + "report.category.title_account": "proffil", "report.category.title_status": "post", - "report.close": "Done", - "report.comment.title": "Is there anything else you think we should know?", + "report.close": "Iawn", + "report.comment.title": "Oes unrhyw beth arall y dylem ei wybod yn eich barn chi?", "report.forward": "Ymlaen i {target}", "report.forward_hint": "Mae'r cyfrif o weinydd arall. Anfon copi anhysbys o'r adroddiad yno hefyd?", - "report.mute": "Mute", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.mute": "Mudo", + "report.mute_explanation": "Ni fyddwch yn gweld eu postiadau. Gallant eich dilyn o hyd a gweld eich postiadau ac ni fyddant yn gwybod eu bod nhw wedi'u mudo.", + "report.next": "Nesaf", "report.placeholder": "Sylwadau ychwanegol", - "report.reasons.dislike": "I don't like it", - "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", - "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", - "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", - "report.reasons.violation": "It violates server rules", - "report.reasons.violation_description": "You are aware that it breaks specific rules", - "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", - "report.statuses.subtitle": "Select all that apply", - "report.statuses.title": "Are there any posts that back up this report?", + "report.reasons.dislike": "Dydw i ddim yn ei hoffi", + "report.reasons.dislike_description": "Nid yw'n rhywbeth yr ydych am ei weld", + "report.reasons.other": "Mae'n rhywbeth arall", + "report.reasons.other_description": "Nid yw'r mater yn ffitio i gategorïau eraill", + "report.reasons.spam": "Sothach yw e", + "report.reasons.spam_description": "Cysylltiadau maleisus, ymgysylltu ffug, neu atebion ailadroddus", + "report.reasons.violation": "Mae'n torri rheolau'r gweinydd", + "report.reasons.violation_description": "Rydych yn ymwybodol ei fod yn torri rheolau penodol", + "report.rules.subtitle": "Dewiswch bob un sy'n berthnasol", + "report.rules.title": "Pa reolau sy'n cael eu torri?", + "report.statuses.subtitle": "Dewiswch bob un sy'n berthnasol", + "report.statuses.title": "Oes postiadau eraill sy'n cefnogi'r adroddiad hwn?", "report.submit": "Cyflwyno", "report.target": "Cwyno am {target}", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", - "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", - "report.unfollow": "Unfollow @{name}", - "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report.thanks.take_action": "Dyma'ch opsiynau ar gyfer rheoli'r hyn a welwch ar Mastodon:", + "report.thanks.take_action_actionable": "Tra byddwn yn edrych ar hyn, gallwch gymryd camau yn erbyn @{name}:", + "report.thanks.title": "Ddim eisiau gweld hwn?", + "report.thanks.title_actionable": "Diolch am adrodd, byddwn yn ymchwilio i hyn.", + "report.unfollow": "Dad-ddilyn @{name}", + "report.unfollow_explanation": "Rydych chi'n dilyn y cyfrif hwn. I beidio â gweld eu postiadau yn eich porthiant cartref mwyach, dad-ddilynwch nhw.", "search.placeholder": "Chwilio", "search_popout.search_format": "Fformat chwilio uwch", - "search_popout.tips.full_text": "Mae testun syml yn dychwelyd tŵtiau yr ydych wedi ysgrifennu, hoffi, wedi'u bŵstio, neu wedi'ch crybwyll ynddynt, ynghyd a chyfateb a enwau defnyddwyr, enwau arddangos ac hashnodau.", + "search_popout.tips.full_text": "Mae testun syml yn dychwelyd postiadau yr ydych wedi ysgrifennu, hoffi, wedi'u hybio, neu wedi'ch crybwyll ynddynt, ynghyd a chyfateb a enwau defnyddwyr, enwau arddangos ac hashnodau.", "search_popout.tips.hashtag": "hashnod", - "search_popout.tips.status": "tŵt", + "search_popout.tips.status": "post", "search_popout.tips.text": "Mae testun syml yn dychwelyd enwau arddangos, enwau defnyddwyr a hashnodau sy'n cyfateb", "search_popout.tips.user": "defnyddiwr", "search_results.accounts": "Pobl", - "search_results.all": "Pob", + "search_results.all": "Popeth", "search_results.hashtags": "Hanshnodau", - "search_results.nothing_found": "Could not find anything for these search terms", - "search_results.statuses": "Tŵtiau", - "search_results.statuses_fts_disabled": "Nid yw chwilio Tŵtiau yn ôl eu cynnwys wedi'i alluogi ar y gweinydd Mastodon hwn.", - "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "search_results.nothing_found": "Methu dod o hyd i unrhyw beth ar gyfer y termau chwilio hyn", + "search_results.statuses": "Postiadau", + "search_results.statuses_fts_disabled": "Nid yw chwilio postiadau yn ôl eu cynnwys wedi'i alluogi ar y gweinydd Mastodon hwn.", + "search_results.total": "{count, number} {count, plural, zero {canlyniad} one {canlyniad} two {ganlyniad} other {o ganlyniadau}}", "status.admin_account": "Agor rhyngwyneb goruwchwylio ar gyfer @{name}", - "status.admin_status": "Agor y tŵt yn y rhyngwyneb goruwchwylio", + "status.admin_status": "Agor y post hwn yn y rhyngwyneb goruwchwylio", "status.block": "Blocio @{name}", "status.bookmark": "Tudalnodi", "status.cancel_reblog_private": "Dadfŵstio", - "status.cannot_reblog": "Ni ellir sbarduno'r tŵt hwn", - "status.copy": "Copïo cysylltiad i'r tŵt", + "status.cannot_reblog": "Ni ellir hybio'r post hwn", + "status.copy": "Copïo dolen i'r post", "status.delete": "Dileu", "status.detailed_status": "Golwg manwl o'r sgwrs", "status.direct": "Neges breifat @{name}", "status.edit": "Golygu", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edited": "Ymunodd {date}", + "status.edited_x_times": "Golygwyd {count, plural, one {unwaith} two {dwywaith} other {{count} gwaith}}", "status.embed": "Plannu", "status.favourite": "Hoffi", "status.filtered": "Wedi'i hidlo", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} greuodd {date}", + "status.history.edited": "{name} olygodd {date}", "status.load_more": "Llwythwch mwy", "status.media_hidden": "Cyfryngau wedi'u cuddio", "status.mention": "Crybwyll @{name}", "status.more": "Mwy", "status.mute": "Tawelu @{name}", "status.mute_conversation": "Tawelu sgwrs", - "status.open": "Ehangu'r tŵt hwn", + "status.open": "Ehangu'r post hwn", "status.pin": "Pinio ar y proffil", - "status.pinned": "Pinio tŵt", + "status.pinned": "Pinio post", "status.read_more": "Darllen mwy", "status.reblog": "Hybu", "status.reblog_private": "Hybu i'r gynulleidfa wreiddiol", - "status.reblogged_by": "Bŵstio {name}", - "status.reblogs.empty": "Does neb wedi bŵstio'r tŵt yma eto. Pan y bydd rhywun yn gwneud, byddent yn ymddangos yma.", + "status.reblogged_by": "Hybio {name}", + "status.reblogs.empty": "Does neb wedi hybio'r post yma eto. Pan y bydd rhywun yn gwneud, byddent yn ymddangos yma.", "status.redraft": "Dileu & ailddrafftio", "status.remove_bookmark": "Tynnu'r tudalnod", "status.reply": "Ateb", @@ -501,7 +501,7 @@ "timeline_hint.remote_resource_not_displayed": "ni chaiff {resource} o gweinyddion eraill ei ddangos.", "timeline_hint.resources.followers": "Dilynwyr", "timeline_hint.resources.follows": "Yn dilyn", - "timeline_hint.resources.statuses": "Tŵtiau henach", + "timeline_hint.resources.statuses": "Postiadau hŷn", "trends.counter_by_accounts": "{count, plural, one {{counter} berson} other {{counter} o bobl}}", "trends.trending_now": "Yn tueddu nawr", "ui.beforeunload": "Mi fyddwch yn colli eich drafft os gadewch Mastodon.", @@ -514,20 +514,20 @@ "upload_error.poll": "Nid oes modd uwchlwytho ffeiliau â phleidleisiau.", "upload_form.audio_description": "Disgrifio ar gyfer pobl sydd â cholled clyw", "upload_form.description": "Disgrifio i'r rheini a nam ar ei golwg", - "upload_form.description_missing": "No description added", + "upload_form.description_missing": "Dim disgrifiad wedi'i ychwanegu", "upload_form.edit": "Golygu", "upload_form.thumbnail": "Newid mân-lun", "upload_form.undo": "Dileu", "upload_form.video_description": "Disgrifio ar gyfer pobl sydd â cholled clyw neu amhariad golwg", "upload_modal.analyzing_picture": "Dadansoddi llun…", "upload_modal.apply": "Gweithredu", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Gweithio…", "upload_modal.choose_image": "Dewis delwedd", "upload_modal.description_placeholder": "Mae ei phen bach llawn jocs, 'run peth a fy nghot golff, rhai dyddiau", "upload_modal.detect_text": "Canfod testun o'r llun", "upload_modal.edit_media": "Golygu cyfryngau", "upload_modal.hint": "Cliciwch neu llusgwch y cylch ar y rhagolwg i ddewis y canolbwynt a fydd bob amser i'w weld ar bob mân-lunau.", - "upload_modal.preparing_ocr": "Preparing OCR…", + "upload_modal.preparing_ocr": "Paratoi OCR…", "upload_modal.preview_label": "Rhagolwg ({ratio})", "upload_progress.label": "Uwchlwytho...", "video.close": "Cau fideo", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 1bf817c7b..87f2b2017 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -368,10 +368,10 @@ "privacy.direct.long": "Wird an erwähnte Profile gesendet", "privacy.direct.short": "Nur Leute, die ich erwähne", "privacy.private.long": "Nur für Folgende sichtbar", - "privacy.private.short": "Nur Folgende", - "privacy.public.long": "Sichtbar für alle", + "privacy.private.short": "Nur Follower", + "privacy.public.long": "Für alle sichtbar", "privacy.public.short": "Öffentlich", - "privacy.unlisted.long": "Sichtbar für alle, aber nicht für Entdeckungsfunktionen", + "privacy.unlisted.long": "Sichtbar für alle, aber nicht über Entdeckungsfunktionen", "privacy.unlisted.short": "Nicht gelistet", "refresh": "Aktualisieren", "regeneration_indicator.label": "Laden…", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 723b7d333..83888e634 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -369,9 +369,9 @@ "privacy.direct.short": "Solo la gente que yo menciono", "privacy.private.long": "Sólo mostrar a seguidores", "privacy.private.short": "Solo seguidores", - "privacy.public.long": "Visible por todos", + "privacy.public.long": "Visible para todos", "privacy.public.short": "Público", - "privacy.unlisted.long": "Visible para todos, pero excluido de las características de descubrimiento", + "privacy.unlisted.long": "Visible para todos, pero excluido de las funciones de descubrimiento", "privacy.unlisted.short": "No listado", "refresh": "Actualizar", "regeneration_indicator.label": "Cargando…", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 8fec2747c..be1b10025 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -93,7 +93,7 @@ "community.column_settings.media_only": "Meadhanan a-mhàin", "community.column_settings.remote_only": "Feadhainn chèin a-mhàin", "compose_form.direct_message_warning_learn_more": "Barrachd fiosrachaidh", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "Chan eil crioptachadh ceann gu ceann air postaichean Mhastodon. Na co-roinn fiosrachadh cunnartach idir le Mastodon.", "compose_form.hashtag_warning": "Cha nochd am post seo fon taga hais on a tha e falaichte o liostaichean. Cha ghabh ach postaichean poblach a lorg a-rèir an tagaichean hais.", "compose_form.lock_disclaimer": "Chan eil an cunntas agad {locked}. ’S urrainn do dhuine sam bith leantainn ort is na postaichean agad a tha ag amas air an luchd-leantainn agad a-mhàin a shealltainn.", "compose_form.lock_disclaimer.lock": "glaiste", @@ -166,7 +166,7 @@ "empty_column.blocks": "Cha do bhac thu cleachdaiche sam bith fhathast.", "empty_column.bookmarked_statuses": "Chan eil comharra-lìn ri post agad fhathast. Nuair a nì thu comharra-lìn de dh’fhear, nochdaidh e an-seo.", "empty_column.community": "Tha an loidhne-ama ionadail falamh. Sgrìobh rudeigin gu poblach airson toiseach-tòiseachaidh a dhèanamh!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.conversations": "Nuair a chuireas no gheibh thu post nach fhaic ach an fheadhainn le iomradh orra ann, nochdaidh e an-seo.", "empty_column.domain_blocks": "Cha deach àrainn sam bith a bhacadh fhathast.", "empty_column.explore_statuses": "Chan eil dad a’ treandadh an-dràsta fhèin. Thoir sùil a-rithist an ceann greis!", "empty_column.favourited_statuses": "Chan eil annsachd air post agad fhathast. Nuair a nì thu annsachd de dh’fhear, nochdaidh e an-seo.", @@ -230,7 +230,7 @@ "keyboard_shortcuts.boost": "Brosnaich post", "keyboard_shortcuts.column": "Cuir am fòcas air colbh", "keyboard_shortcuts.compose": "Cuir am fòcas air raon teacsa an sgrìobhaidh", - "keyboard_shortcuts.conversations": "to open conversations column", + "keyboard_shortcuts.conversations": "a dh’fhosgladh colbh nan còmhraidhean", "keyboard_shortcuts.description": "Tuairisgeul", "keyboard_shortcuts.down": "Gluais sìos air an liosta", "keyboard_shortcuts.enter": "Fosgail post", @@ -290,7 +290,7 @@ "navigation_bar.bookmarks": "Comharran-lìn", "navigation_bar.community_timeline": "Loidhne-ama ionadail", "navigation_bar.compose": "Sgrìobh post ùr", - "navigation_bar.discover": "Fidir", + "navigation_bar.discover": "Rùraich", "navigation_bar.domain_blocks": "Àrainnean bacte", "navigation_bar.edit_profile": "Deasaich a’ phròifil", "navigation_bar.explore": "Rùraich", @@ -369,9 +369,9 @@ "privacy.direct.short": "Daoine air an dug mi iomradh a-mhàin", "privacy.private.long": "Chan fhaic ach na daoine a tha a’ leantainn ort seo", "privacy.private.short": "Luchd-leantainn a-mhàin", - "privacy.public.long": "Visible for all", + "privacy.public.long": "Chì a h-uile duine e", "privacy.public.short": "Poblach", - "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", + "privacy.unlisted.long": "Chì a h-uile duine e ach cha nochd e ann an gleusan rùrachaidh", "privacy.unlisted.short": "Falaichte o liostaichean", "refresh": "Ath-nuadhaich", "regeneration_indicator.label": "’Ga luchdadh…", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 0879afb36..114d90335 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -314,7 +314,7 @@ "notification.follow_request": "{name} solicitou seguirte", "notification.mention": "{name} mencionoute", "notification.own_poll": "A túa enquisa rematou", - "notification.poll": "Unha enquisa na que votaches rematou", + "notification.poll": "Rematou a enquisa na que votaches", "notification.reblog": "{name} compartiu a túa publicación", "notification.status": "{name} publicou", "notification.update": "{name} editou unha publicación", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index ed70d1a21..c7ba3b852 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -18,8 +18,8 @@ "account.followers": "Հետեւողներ", "account.followers.empty": "Այս օգտատիրոջը դեռ ոչ մէկ չի հետեւում։", "account.followers_counter": "{count, plural, one {{counter} Հետեւորդ} other {{counter} Հետեւորդ}}", - "account.following": "Following", - "account.following_counter": "{count, plural, one {{counter} հետեւած} other {{counter} հետեւած}}", + "account.following": "Հետեւած", + "account.following_counter": "{count, plural, one {{counter} Հետեւած} other {{counter} Հետեւած}}", "account.follows.empty": "Այս օգտատէրը դեռ ոչ մէկի չի հետեւում։", "account.follows_you": "Հետեւում է քեզ", "account.hide_reblogs": "Թաքցնել @{name}֊ի տարածածները", @@ -41,12 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Գրառում} other {{counter} Գրառումներ}}", "account.unblock": "Ապաարգելափակել @{name}֊ին", "account.unblock_domain": "Ցուցադրել {domain} թաքցուած տիրոյթի գրառումները", - "account.unblock_short": "Unblock", + "account.unblock_short": "Արգելաբացել", "account.unendorse": "Չցուցադրել անձնական էջում", "account.unfollow": "Ապահետեւել", "account.unmute": "Ապալռեցնել @{name}֊ին", "account.unmute_notifications": "Միացնել ծանուցումները @{name}֊ից", - "account.unmute_short": "Unmute", + "account.unmute_short": "Ապախլացնել", "account_note.placeholder": "Սեղմէ՛ք գրառելու համար\n", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -70,7 +70,7 @@ "column.blocks": "Արգելափակուած օգտատէրեր", "column.bookmarks": "Էջանիշեր", "column.community": "Տեղական հոսք", - "column.conversations": "Conversations", + "column.conversations": "Զրոյցներ", "column.directory": "Զննել անձնական էջերը", "column.domain_blocks": "Թաքցուած տիրոյթները", "column.favourites": "Հաւանածներ", @@ -106,7 +106,7 @@ "compose_form.poll.switch_to_single": "Հարցումը դարձնել եզակի ընտրութեամբ", "compose_form.publish": "Հրապարակել", "compose_form.publish_loud": "Հրապարակե՜լ", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Պահպանել փոփոխութիւնները", "compose_form.sensitive.hide": "Նշել մեդիան որպէս դիւրազգաց", "compose_form.sensitive.marked": "Մեդիան նշուած է որպէս դիւրազգաց", "compose_form.sensitive.unmarked": "Մեդիան նշուած չէ որպէս դիւրազգաց", @@ -189,7 +189,7 @@ "errors.unexpected_crash.report_issue": "Զեկուցել խնդրի մասին", "explore.search_results": "Որոնման արդիւնքներ", "explore.suggested_follows": "Ձեզ համար", - "explore.title": "Explore", + "explore.title": "Բացայայտել", "explore.trending_links": "Նորութիւններ", "explore.trending_statuses": "Գրառումներ", "explore.trending_tags": "Պիտակներ", @@ -293,7 +293,7 @@ "navigation_bar.discover": "Բացայայտել", "navigation_bar.domain_blocks": "Թաքցուած տիրոյթներ", "navigation_bar.edit_profile": "Խմբագրել անձնական էջը", - "navigation_bar.explore": "Explore", + "navigation_bar.explore": "Բացայայտել", "navigation_bar.favourites": "Հաւանածներ", "navigation_bar.filters": "Լռեցուած բառեր", "navigation_bar.follow_requests": "Հետեւելու հայցեր", @@ -308,7 +308,7 @@ "navigation_bar.preferences": "Նախապատուութիւններ", "navigation_bar.public_timeline": "Դաշնային հոսք", "navigation_bar.security": "Անվտանգութիւն", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.sign_up": "{name}-ը գրանցուած է", "notification.favourite": "{name} հաւանեց գրառումդ", "notification.follow": "{name} սկսեց հետեւել քեզ", "notification.follow_request": "{name} քեզ հետեւելու հայց է ուղարկել", @@ -317,10 +317,10 @@ "notification.poll": "Հարցումը, ուր դու քուէարկել ես, աւարտուեց։", "notification.reblog": "{name} տարածեց գրառումդ", "notification.status": "{name} հենց նոր գրառում արեց", - "notification.update": "{name} edited a post", + "notification.update": "{name}-ը փոխել է գրառումը", "notifications.clear": "Մաքրել ծանուցումները", "notifications.clear_confirmation": "Վստա՞հ ես, որ ուզում ես մշտապէս մաքրել քո բոլոր ծանուցումները։", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "Նոր գրանցումներ՝", "notifications.column_settings.alert": "Աշխատատիրոյթի ծանուցումներ", "notifications.column_settings.favourite": "Հաւանածներից՝", "notifications.column_settings.filter_bar.advanced": "Ցուցադրել բոլոր կատեգորիաները", @@ -337,7 +337,7 @@ "notifications.column_settings.status": "Նոր գրառումներ։", "notifications.column_settings.unread_notifications.category": "Չկարդացուած ծանուցումներ", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "Խմբագրածներ՝", "notifications.filter.all": "Բոլորը", "notifications.filter.boosts": "Տարածածները", "notifications.filter.favourites": "Հաւանածները", @@ -361,15 +361,15 @@ "poll.total_votes": "{count, plural, one {# ձայն} other {# ձայն}}", "poll.vote": "Քուէարկել", "poll.voted": "Դու քուէարկել ես այս տարբերակի համար", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# ձայն} other {# ձայն}}", "poll_button.add_poll": "Աւելացնել հարցում", "poll_button.remove_poll": "Հեռացնել հարցումը", "privacy.change": "Կարգաւորել գրառման գաղտնիութիւնը", "privacy.direct.long": "Կը տեսնեն միայն նշուած օգտատէրերը", - "privacy.direct.short": "Direct", + "privacy.direct.short": "Միայն նշածս մարդիկ", "privacy.private.long": "Կը տեսնեն միայն հետեւորդները", - "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all", + "privacy.private.short": "Միայն հետեւողները", + "privacy.public.long": "Տեսանելի բոլորին", "privacy.public.short": "Հրապարակային", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Ծածուկ", @@ -377,39 +377,39 @@ "regeneration_indicator.label": "Բեռնւում է…", "regeneration_indicator.sublabel": "պատրաստւում է հիմնական հոսքդ", "relative_time.days": "{number}օր", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number, plural, one {# օր} other {# օր}} առաջ", + "relative_time.full.hours": "{number, plural, one {# ժամ} other {# ժամ}} առաջ", + "relative_time.full.just_now": "հէնց նոր", + "relative_time.full.minutes": "{number, plural, one {# րոպէ} other {# րոպէ}} առաջ", + "relative_time.full.seconds": "{number, plural, one {# վայրկեան} other {# վայրկեան}} առաջ", "relative_time.hours": "{number}ժ", "relative_time.just_now": "նոր", "relative_time.minutes": "{number}ր", "relative_time.seconds": "{number}վ", "relative_time.today": "Այսօր", "reply_indicator.cancel": "Չեղարկել", - "report.block": "Block", + "report.block": "Արգելափակել", "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", - "report.categories.other": "Other", - "report.categories.spam": "Spam", + "report.categories.other": "Այլ", + "report.categories.spam": "Սպամ", "report.categories.violation": "Content violates one or more server rules", "report.category.subtitle": "Choose the best match", "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", - "report.category.title_status": "post", - "report.close": "Done", + "report.category.title_account": "հաշիւ", + "report.category.title_status": "գրառում", + "report.close": "Աւարտել", "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Փոխանցել {target}֊ին", "report.forward_hint": "Այս հաշիւ այլ հանգոյցից է։ Ուղարկե՞մ այնտեղ էլ այս բողոքի անոնիմ պատճէնը։", - "report.mute": "Mute", + "report.mute": "Լռեցնել", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.next": "Յաջորդ", "report.placeholder": "Լրացուցիչ մեկնաբանութիւններ", - "report.reasons.dislike": "I don't like it", + "report.reasons.dislike": "Ինձ դուր չի գալիս", "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", + "report.reasons.other": "Այլ բան է", "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", + "report.reasons.spam": "Սպամ է", "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", "report.reasons.violation": "It violates server rules", "report.reasons.violation_description": "You are aware that it breaks specific rules", @@ -499,7 +499,7 @@ "time_remaining.moments": "Մնացել է մի քանի վարկեան", "time_remaining.seconds": "{number, plural, one {# վարկեան} other {# վարկեան}} անց", "timeline_hint.remote_resource_not_displayed": "{resource} այլ սպասարկիչներից չեն ցուցադրվել:", - "timeline_hint.resources.followers": "Հետևորդներ", + "timeline_hint.resources.followers": "Հետեւորդ", "timeline_hint.resources.follows": "Հետեւել", "timeline_hint.resources.statuses": "Հին գրառումներ", "trends.counter_by_accounts": "{count, plural, one {{counter} մարդ} other {{counter} մարդիկ}} խօսում են", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 6637e992a..d0ce09335 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -1,72 +1,72 @@ { - "account.account_note_header": "Note", - "account.add_or_remove_from_list": "Add or Remove from lists", - "account.badges.bot": "Bot", - "account.badges.group": "Group", + "account.account_note_header": "Noto", + "account.add_or_remove_from_list": "Insertez o removez de listi", + "account.badges.bot": "Boto", + "account.badges.group": "Grupo", "account.block": "Blokusar @{name}", "account.block_domain": "Hide everything from {domain}", - "account.blocked": "Blocked", - "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", + "account.blocked": "Restriktita", + "account.browse_more_on_origin_server": "Videz plu che originala profilo", + "account.cancel_follow_request": "Removez sequodemando", "account.direct": "Direct Message @{name}", - "account.disable_notifications": "Stop notifying me when @{name} posts", + "account.disable_notifications": "Cesez avizar me kande @{name} postas", "account.domain_blocked": "Domain hidden", "account.edit_profile": "Modifikar profilo", - "account.enable_notifications": "Notify me when @{name} posts", - "account.endorse": "Feature on profile", + "account.enable_notifications": "Avizez me kande @{name} postas", + "account.endorse": "Traito di profilo", "account.follow": "Sequar", "account.followers": "Sequanti", - "account.followers.empty": "No one follows this user yet.", - "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", - "account.following": "Following", - "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", - "account.follows.empty": "This user doesn't follow anyone yet.", + "account.followers.empty": "Nulu sequas ca uzanto til nun.", + "account.followers_counter": "{count, plural, one {{counter} Sequanto} other {{counter} Sequanti}}", + "account.following": "Sequata", + "account.following_counter": "{count, plural, one {{counter} Sequas} other {{counter} Sequanti}}", + "account.follows.empty": "Ca uzanto ne sequa irgu til nun.", "account.follows_you": "Sequas tu", - "account.hide_reblogs": "Hide boosts from @{name}", - "account.joined": "Joined {date}", - "account.link_verified_on": "Ownership of this link was checked on {date}", - "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", - "account.media": "Media", + "account.hide_reblogs": "Celez busti de @{name}", + "account.joined": "Juntas ye {date}", + "account.link_verified_on": "Proprieteso di ca ligilo kontrolesis ye {date}", + "account.locked_info": "La privatesostaco di ca konto fixesas quale lokata. Proprietato manue kontrolas personi qui povas sequar.", + "account.media": "Medio", "account.mention": "Mencionar @{name}", - "account.moved_to": "{name} has moved to:", + "account.moved_to": "{name} movesis a:", "account.mute": "Celar @{name}", - "account.mute_notifications": "Mute notifications from @{name}", - "account.muted": "Muted", + "account.mute_notifications": "Silencigez avizi de @{name}", + "account.muted": "Silencigata", "account.posts": "Mesaji", "account.posts_with_replies": "Toots with replies", "account.report": "Denuncar @{name}", "account.requested": "Vartante aprobo", - "account.share": "Share @{name}'s profile", - "account.show_reblogs": "Show boosts from @{name}", + "account.share": "Partigez profilo di @{name}", + "account.show_reblogs": "Montrez busti de @{name}", "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "Desblokusar @{name}", "account.unblock_domain": "Unhide {domain}", - "account.unblock_short": "Unblock", - "account.unendorse": "Don't feature on profile", + "account.unblock_short": "Derestriktez", + "account.unendorse": "Ne publikigez che profilo", "account.unfollow": "Ne plus sequar", "account.unmute": "Ne plus celar @{name}", - "account.unmute_notifications": "Unmute notifications from @{name}", - "account.unmute_short": "Unmute", + "account.unmute_notifications": "Desilencigez avizi de @{name}", + "account.unmute_short": "Desilencigez", "account_note.placeholder": "Click to add a note", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", - "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.", - "alert.rate_limited.title": "Rate limited", - "alert.unexpected.message": "An unexpected error occurred.", - "alert.unexpected.title": "Oops!", - "announcement.announcement": "Announcement", - "attachments_list.unprocessed": "(unprocessed)", - "autosuggest_hashtag.per_week": "{count} per week", + "admin.dashboard.retention.average": "Averajo", + "admin.dashboard.retention.cohort": "Registromonato", + "admin.dashboard.retention.cohort_size": "Nova uzanti", + "alert.rate_limited.message": "Riprobez pos {retry_time, time, medium}.", + "alert.rate_limited.title": "Limitizita multeso", + "alert.unexpected.message": "Neexpektita eroro eventis.", + "alert.unexpected.title": "Problemo!", + "announcement.announcement": "Anunco", + "attachments_list.unprocessed": "(neprocedita)", + "autosuggest_hashtag.per_week": "{count} dum singla semano", "boost_modal.combo": "Tu povas presar sur {combo} por omisar co en la venonta foyo", - "bundle_column_error.body": "Something went wrong while loading this component.", - "bundle_column_error.retry": "Try again", - "bundle_column_error.title": "Network error", - "bundle_modal_error.close": "Close", - "bundle_modal_error.message": "Something went wrong while loading this component.", - "bundle_modal_error.retry": "Try again", + "bundle_column_error.body": "Nulo ne functionis dum chargar ca kompozaj.", + "bundle_column_error.retry": "Probez itere", + "bundle_column_error.title": "Rederor", + "bundle_modal_error.close": "Klozez", + "bundle_modal_error.message": "Nulo ne functionis dum chargar ca kompozaj.", + "bundle_modal_error.retry": "Probez itere", "column.blocks": "Blokusita uzeri", "column.bookmarks": "Bookmarks", "column.community": "Lokala tempolineo", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 7df325463..053c18fcf 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -1,7 +1,7 @@ { "account.account_note_header": "Minnispunktur", "account.add_or_remove_from_list": "Bæta við eða fjarlægja af listum", - "account.badges.bot": "Róbót", + "account.badges.bot": "Vélmenni", "account.badges.group": "Hópur", "account.block": "Loka á @{name}", "account.block_domain": "Útiloka lénið {domain}", @@ -71,7 +71,7 @@ "column.bookmarks": "Bókamerki", "column.community": "Staðvær tímalína", "column.conversations": "Samtöl", - "column.directory": "Skoða notandasnið", + "column.directory": "Vafra notandasnið", "column.domain_blocks": "Útilokuð lén", "column.favourites": "Eftirlæti", "column.follow_requests": "Beiðnir um að fylgjast með", @@ -95,8 +95,8 @@ "compose_form.direct_message_warning_learn_more": "Kanna nánar", "compose_form.encryption_warning": "Færslur á Mastodon eru ekki enda-í-enda dulritaðar. Ekki deila viðkvæmum upplýsingum á Mastodon.", "compose_form.hashtag_warning": "Þessi færsla verður ekki talin með undir nokkru myllumerki þar sem það er óskráð. Einungis er hægt að leita að opinberum færslum eftir myllumerkjum.", - "compose_form.lock_disclaimer": "Aðgangurinn þinn er ekki {locked}. Hver sem er getur fylgst með þeim færslum þínum sem einungis eru til fylgjenda þinna.", - "compose_form.lock_disclaimer.lock": "læst", + "compose_form.lock_disclaimer": "Aðgangurinn þinn er ekki {locked}. Hver sem er getur fylgst með þér til að sjá þær færslur sem einungis eru til fylgjenda þinna.", + "compose_form.lock_disclaimer.lock": "læstur", "compose_form.placeholder": "Hvað varstu að hugsa?", "compose_form.poll.add_option": "Bæta við valkosti", "compose_form.poll.duration": "Tímalengd könnunar", @@ -130,7 +130,7 @@ "confirmations.mute.confirm": "Þagga", "confirmations.mute.explanation": "Þetta mun fela færslur frá þeim og þær færslur þar sem minnst er á þau, en það mun samt sem áður gera þeim kleift að sjá færslurnar þínar og að fylgjast með þér.", "confirmations.mute.message": "Ertu viss um að þú viljir þagga niður í {name}?", - "confirmations.redraft.confirm": "Eyða og enduvinna drög", + "confirmations.redraft.confirm": "Eyða og endurvinna drög", "confirmations.redraft.message": "Ertu viss um að þú viljir eyða þessari færslu og enduvinna drögin? Eftirlæti og endurbirtingar munu glatast og svör við upprunalegu færslunni munu verða munaðarlaus.", "confirmations.reply.confirm": "Svara", "confirmations.reply.message": "Ef þú svarar núna verður skrifað yfir skilaboðin sem þú ert að semja núna. Ertu viss um að þú viljir halda áfram?", @@ -147,7 +147,7 @@ "embed.instructions": "Felldu þessa færslu inn í vefsvæðið þitt með því að afrita kóðann hér fyrir neðan.", "embed.preview": "Svona mun þetta líta út:", "emoji_button.activity": "Virkni", - "emoji_button.custom": "Sérsniðið", + "emoji_button.custom": "Sérsniðin", "emoji_button.flags": "Flögg", "emoji_button.food": "Matur og drykkur", "emoji_button.label": "Setja inn tjáningartákn", @@ -155,7 +155,7 @@ "emoji_button.not_found": "Engin samsvarandi tjáningartákn fundust", "emoji_button.objects": "Hlutir", "emoji_button.people": "Fólk", - "emoji_button.recent": "Oft notað", + "emoji_button.recent": "Oft notuð", "emoji_button.search": "Leita...", "emoji_button.search_results": "Leitarniðurstöður", "emoji_button.symbols": "Tákn", @@ -166,7 +166,7 @@ "empty_column.blocks": "Þú hefur ekki ennþá útilokað neina notendur.", "empty_column.bookmarked_statuses": "Þú ert ekki ennþá með neinar bókamerktar færslur. Þegar þú bókamerkir færslu, mun það birtast hér.", "empty_column.community": "Staðværa tímalínan er tóm. Skrifaðu eitthvað opinberlega til að láta boltann fara að rúlla!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.conversations": "Þegar þú hefur sent eða móttekið færslu sem er aðeins sýnileg fólki sem nefnt er í henni þá birtist hún hér.", "empty_column.domain_blocks": "Það eru ennþá engin útilokuð lén.", "empty_column.explore_statuses": "Ekkert er á uppleið í augnablikinu. Athugaðu aftur síðar!", "empty_column.favourited_statuses": "Þú ert ekki ennþá með neinar eftirlætisfærslur. Þegar þú setur færslu í eftirlæti, munu þau birtast hér.", @@ -371,7 +371,7 @@ "privacy.private.short": "Einungis fylgjendur", "privacy.public.long": "Sýnilegt fyrir alla", "privacy.public.short": "Opinbert", - "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", + "privacy.unlisted.long": "Sýnilegt öllum, en ekki tekið með í uppgötvunareiginleikum", "privacy.unlisted.short": "Óskráð", "refresh": "Endurlesa", "regeneration_indicator.label": "Hleð inn…", @@ -471,7 +471,7 @@ "status.reblog_private": "Endurbirta til upphaflegra lesenda", "status.reblogged_by": "{name} endurbirti", "status.reblogs.empty": "Enginn hefur ennþá endurbirt þessa færslu. Þegar einhver gerir það, mun það birtast hér.", - "status.redraft": "Eyða og enduvinna drög", + "status.redraft": "Eyða og endurvinna drög", "status.remove_bookmark": "Fjarlægja bókamerki", "status.reply": "Svara", "status.replyAll": "Svara þræði", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 8a24101b1..98f998f90 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -9,10 +9,10 @@ "account.browse_more_on_origin_server": "リモートで表示", "account.cancel_follow_request": "フォローリクエストを取り消す", "account.direct": "@{name}さんにダイレクトメッセージ", - "account.disable_notifications": "@{name} の投稿時の通知を停止", + "account.disable_notifications": "@{name}さんの投稿時の通知を停止", "account.domain_blocked": "ドメインブロック中", "account.edit_profile": "プロフィール編集", - "account.enable_notifications": "@{name} の投稿時に通知", + "account.enable_notifications": "@{name}さんの投稿時に通知", "account.endorse": "プロフィールで紹介する", "account.follow": "フォロー", "account.followers": "フォロワー", @@ -27,7 +27,7 @@ "account.link_verified_on": "このリンクの所有権は{date}に確認されました", "account.locked_info": "このアカウントは承認制アカウントです。相手が承認するまでフォローは完了しません。", "account.media": "メディア", - "account.mention": "@{name}さんに投稿", + "account.mention": "@{name}さんにメンション", "account.moved_to": "{name}さんは引っ越しました:", "account.mute": "@{name}さんをミュート", "account.mute_notifications": "@{name}さんからの通知を受け取らない", @@ -70,7 +70,7 @@ "column.blocks": "ブロックしたユーザー", "column.bookmarks": "ブックマーク", "column.community": "ローカルタイムライン", - "column.conversations": "ダイレクトメッセージ", + "column.conversations": "会話", "column.directory": "ディレクトリ", "column.domain_blocks": "ブロックしたドメイン", "column.favourites": "お気に入り", @@ -93,7 +93,7 @@ "community.column_settings.media_only": "メディアのみ表示", "community.column_settings.remote_only": "リモートのみ表示", "compose_form.direct_message_warning_learn_more": "もっと詳しく", - "compose_form.encryption_warning": "Mastodon の投稿はエンドツーエンド暗号化に対応していません。安全に送受信されるべき情報を Mastodon で共有しないでください。", + "compose_form.encryption_warning": "Mastodonの投稿はエンドツーエンド暗号化に対応していません。安全に送受信されるべき情報をMastodonで共有しないでください。", "compose_form.hashtag_warning": "この投稿は公開設定ではないのでハッシュタグの一覧に表示されません。公開投稿だけがハッシュタグで検索できます。", "compose_form.lock_disclaimer": "あなたのアカウントは{locked}になっていません。誰でもあなたをフォローすることができ、フォロワー限定の投稿を見ることができます。", "compose_form.lock_disclaimer.lock": "承認制", @@ -166,7 +166,7 @@ "empty_column.blocks": "まだ誰もブロックしていません。", "empty_column.bookmarked_statuses": "まだ何もブックマーク登録していません。ブックマーク登録するとここに表示されます。", "empty_column.community": "ローカルタイムラインはまだ使われていません。何か書いてみましょう!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.conversations": "メンションした相手にだけ表示されるメッセージを一度でも送受信した場合、ここに表示されます。", "empty_column.domain_blocks": "ブロックしているドメインはありません。", "empty_column.explore_statuses": "まだ何もありません。後で確認してください。", "empty_column.favourited_statuses": "まだ何もお気に入り登録していません。お気に入り登録するとここに表示されます。", @@ -198,18 +198,18 @@ "follow_recommendations.lead": "あなたがフォローしている人の投稿は、ホームフィードに時系列で表示されます。いつでも簡単に解除できるので、気軽にフォローしてみてください!", "follow_request.authorize": "許可", "follow_request.reject": "拒否", - "follow_requests.unlocked_explanation": "あなたのアカウントは承認制ではありませんが、{domain} のスタッフはこれらのアカウントからのフォローリクエストの確認が必要であると判断しました。", + "follow_requests.unlocked_explanation": "あなたのアカウントは承認制ではありませんが、{domain}のスタッフはこれらのアカウントからのフォローリクエストの確認が必要であると判断しました。", "generic.saved": "保存しました", "getting_started.developers": "開発", "getting_started.directory": "ディレクトリ", "getting_started.documentation": "ドキュメント", "getting_started.heading": "スタート", "getting_started.invite": "招待", - "getting_started.open_source_notice": "Mastodonはオープンソースソフトウェアです。誰でもGitHub ( {github} ) から開発に参加したり、問題を報告したりできます。", + "getting_started.open_source_notice": "Mastodonはオープンソースソフトウェアです。誰でもGitHub ({github}) から開発に参加したり、問題を報告したりできます。", "getting_started.security": "アカウント設定", "getting_started.terms": "プライバシーポリシー", - "hashtag.column_header.tag_mode.all": "と {additional}", - "hashtag.column_header.tag_mode.any": "か {additional}", + "hashtag.column_header.tag_mode.all": "と{additional}", + "hashtag.column_header.tag_mode.any": "か{additional}", "hashtag.column_header.tag_mode.none": "({additional} を除く)", "hashtag.column_settings.select.no_options_message": "提案はありません", "hashtag.column_settings.select.placeholder": "ハッシュタグを入力してください…", @@ -230,7 +230,7 @@ "keyboard_shortcuts.boost": "ブースト", "keyboard_shortcuts.column": "左からn番目のカラムの最新に移動", "keyboard_shortcuts.compose": "投稿の入力欄に移動", - "keyboard_shortcuts.conversations": "to open conversations column", + "keyboard_shortcuts.conversations": "会話カラムを開く", "keyboard_shortcuts.description": "説明", "keyboard_shortcuts.down": "カラム内一つ下に移動", "keyboard_shortcuts.enter": "投稿の詳細を表示", @@ -277,7 +277,7 @@ "lists.replies_policy.title": "リプライを表示:", "lists.search": "フォローしている人の中から検索", "lists.subheading": "あなたのリスト", - "load_pending": "{count} 件の新着", + "load_pending": "{count}件の新着", "loading_indicator.label": "読み込み中...", "media_gallery.toggle_visible": "メディアを隠す", "missing_indicator.label": "見つかりません", @@ -299,7 +299,7 @@ "navigation_bar.follow_requests": "フォローリクエスト", "navigation_bar.follows_and_followers": "フォロー・フォロワー", "navigation_bar.info": "このサーバーについて", - "navigation_bar.keyboard_shortcuts": "ホットキー", + "navigation_bar.keyboard_shortcuts": "キーボードショートカット", "navigation_bar.lists": "リスト", "navigation_bar.logout": "ログアウト", "navigation_bar.mutes": "ミュートしたユーザー", @@ -308,16 +308,16 @@ "navigation_bar.preferences": "ユーザー設定", "navigation_bar.public_timeline": "連合タイムライン", "navigation_bar.security": "セキュリティ", - "notification.admin.sign_up": "{name} がサインアップしました", + "notification.admin.sign_up": "{name}さんがサインアップしました", "notification.favourite": "{name}さんがあなたの投稿をお気に入りに登録しました", "notification.follow": "{name}さんにフォローされました", - "notification.follow_request": "{name} さんがあなたにフォローリクエストしました", + "notification.follow_request": "{name}さんがあなたにフォローリクエストしました", "notification.mention": "{name}さんがあなたに返信しました", "notification.own_poll": "アンケートが終了しました", "notification.poll": "アンケートが終了しました", "notification.reblog": "{name}さんがあなたの投稿をブーストしました", "notification.status": "{name}さんが投稿しました", - "notification.update": "{name} が投稿を編集しました", + "notification.update": "{name}さんが投稿を編集しました", "notifications.clear": "通知を消去", "notifications.clear_confirmation": "本当に通知を消去しますか?", "notifications.column_settings.admin.sign_up": "新規登録:", @@ -346,13 +346,13 @@ "notifications.filter.polls": "アンケート結果", "notifications.filter.statuses": "フォローしている人の新着情報", "notifications.grant_permission": "権限の付与", - "notifications.group": "{count} 件の通知", + "notifications.group": "{count}件の通知", "notifications.mark_as_read": "すべて既読にする", "notifications.permission_denied": "ブラウザの通知が拒否されているためデスクトップ通知は利用できません", "notifications.permission_denied_alert": "ブラウザの通知が拒否されているためデスクトップ通知を有効にできません", "notifications.permission_required": "必要な権限が付与されていないため、デスクトップ通知は利用できません。", "notifications_permission_banner.enable": "デスクトップ通知を有効にする", - "notifications_permission_banner.how_to_control": "Mastodon を閉じている間でも通知を受信するにはデスクトップ通知を有効にしてください。有効にすると上の {icon} ボタンから通知の内容を細かくカスタマイズできます。", + "notifications_permission_banner.how_to_control": "Mastodonを閉じている間でも通知を受信するにはデスクトップ通知を有効にしてください。有効にすると上の {icon} ボタンから通知の内容を細かくカスタマイズできます。", "notifications_permission_banner.title": "お見逃しなく", "picture_in_picture.restore": "元に戻す", "poll.closed": "終了", @@ -366,7 +366,7 @@ "poll_button.remove_poll": "アンケートを削除", "privacy.change": "公開範囲を変更", "privacy.direct.long": "送信した相手のみ閲覧可", - "privacy.direct.short": "ダイレクト", + "privacy.direct.short": "メンションした相手のみ", "privacy.private.long": "フォロワーのみ閲覧可", "privacy.private.short": "フォロワーのみ", "privacy.public.long": "誰でも閲覧可", @@ -377,11 +377,11 @@ "regeneration_indicator.label": "読み込み中…", "regeneration_indicator.sublabel": "ホームタイムラインは準備中です!", "relative_time.days": "{number}日前", - "relative_time.full.days": "{number} 日前", - "relative_time.full.hours": "{number} 時間前", + "relative_time.full.days": "{number}日前", + "relative_time.full.hours": "{number}時間前", "relative_time.full.just_now": "今", - "relative_time.full.minutes": "{number} 分前", - "relative_time.full.seconds": "{number} 秒前", + "relative_time.full.minutes": "{number}分前", + "relative_time.full.seconds": "{number}秒前", "relative_time.hours": "{number}時間前", "relative_time.just_now": "今", "relative_time.minutes": "{number}分前", @@ -399,7 +399,7 @@ "report.category.title_status": "投稿", "report.close": "完了", "report.comment.title": "その他に私たちに伝えておくべき事はありますか?", - "report.forward": "{target} に転送する", + "report.forward": "{target}に転送する", "report.forward_hint": "このアカウントは別のサーバーに所属しています。通報内容を匿名で転送しますか?", "report.mute": "ミュート", "report.mute_explanation": "相手の投稿は表示されなくなります。相手は引き続きあなたをフォローして、あなたの投稿を表示することができますが、ミュートされていることはわかりません。", @@ -420,10 +420,10 @@ "report.submit": "通報する", "report.target": "{target}さんを通報する", "report.thanks.take_action": "次のような方法はいかがでしょうか?", - "report.thanks.take_action_actionable": "私達が確認している間でも、あなたは @{name} さんに対して対応することが出来ます:", + "report.thanks.take_action_actionable": "私達が確認している間でも、あなたは@{name}さんに対して対応することが出来ます:", "report.thanks.title": "見えないようにしたいですか?", "report.thanks.title_actionable": "ご報告ありがとうございます、追って確認します。", - "report.unfollow": "@{name}のフォローを解除", + "report.unfollow": "@{name}さんのフォローを解除", "report.unfollow_explanation": "このアカウントをフォローしています。ホームフィードに彼らの投稿を表示しないようにするには、彼らのフォローを外してください。", "search.placeholder": "検索", "search_popout.search_format": "高度な検索フォーマット", @@ -439,7 +439,7 @@ "search_results.statuses": "投稿", "search_results.statuses_fts_disabled": "このサーバーでは投稿本文の検索は利用できません。", "search_results.total": "{count, number}件の結果", - "status.admin_account": "@{name} のモデレーション画面を開く", + "status.admin_account": "@{name}さんのモデレーション画面を開く", "status.admin_status": "この投稿をモデレーション画面で開く", "status.block": "@{name}さんをブロック", "status.bookmark": "ブックマーク", @@ -450,13 +450,13 @@ "status.detailed_status": "詳細な会話ビュー", "status.direct": "@{name}さんにダイレクトメッセージ", "status.edit": "編集", - "status.edited": "{date} 編集済み", - "status.edited_x_times": "{count} 回編集", + "status.edited": "{date}に編集", + "status.edited_x_times": "{count}回編集", "status.embed": "埋め込み", "status.favourite": "お気に入り", "status.filtered": "フィルターされました", - "status.history.created": "{name}さんが {date} に作成", - "status.history.edited": "{name}さんが {date} に編集", + "status.history.created": "{name}さんが{date}に作成", + "status.history.edited": "{name}さんが{date}に編集", "status.load_more": "もっと見る", "status.media_hidden": "非表示のメディア", "status.mention": "@{name}さんに投稿", @@ -502,7 +502,7 @@ "timeline_hint.resources.followers": "フォロワー", "timeline_hint.resources.follows": "フォロー", "timeline_hint.resources.statuses": "以前の投稿", - "trends.counter_by_accounts": "{counter} 人が投稿", + "trends.counter_by_accounts": "{counter}人が投稿", "trends.trending_now": "トレンドタグ", "ui.beforeunload": "Mastodonから離れると送信前の投稿は失われます。", "units.short.billion": "{count}B", @@ -512,7 +512,7 @@ "upload_button.label": "メディアを追加 (複数の画像または1つの動画か音声ファイル)", "upload_error.limit": "アップロードできる上限を超えています。", "upload_error.poll": "アンケートではファイルをアップロードできません。", - "upload_form.audio_description": "聴取が難しいユーザーへの説明", + "upload_form.audio_description": "聴き取りが難しいユーザーへの説明", "upload_form.description": "閲覧が難しいユーザーへの説明", "upload_form.description_missing": "説明を追加していません", "upload_form.edit": "編集", @@ -527,7 +527,7 @@ "upload_modal.detect_text": "画像からテキストを検出", "upload_modal.edit_media": "メディアを編集", "upload_modal.hint": "サムネイルの焦点にしたい場所をクリックするか円形の枠をその場所にドラッグしてください。", - "upload_modal.preparing_ocr": "OCR の準備中…", + "upload_modal.preparing_ocr": "OCRの準備中…", "upload_modal.preview_label": "プレビュー ({ratio})", "upload_progress.label": "アップロード中...", "video.close": "動画を閉じる", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 12860d7ab..f36683346 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -70,7 +70,7 @@ "column.blocks": "Utilizadores Bloqueados", "column.bookmarks": "Itens salvos", "column.community": "Cronologia local", - "column.conversations": "Conversations", + "column.conversations": "Conversações", "column.directory": "Procurar perfis", "column.domain_blocks": "Domínios escondidos", "column.favourites": "Favoritos", @@ -93,7 +93,7 @@ "community.column_settings.media_only": "Somente media", "community.column_settings.remote_only": "Remoto apenas", "compose_form.direct_message_warning_learn_more": "Conhecer mais", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "As publicações no Mastodon não são criptografadas de ponta a ponta. Não partilhe nenhuma informação sensível através do Mastodon.", "compose_form.hashtag_warning": "Este toot não será listado em nenhuma hashtag por ser não listado. Apenas toots públics podem ser pesquisados por hashtag.", "compose_form.lock_disclaimer": "A sua conta não é {locked}. Qualquer pessoa pode segui-lo e ver as publicações direcionadas apenas a seguidores.", "compose_form.lock_disclaimer.lock": "bloqueado", @@ -166,7 +166,7 @@ "empty_column.blocks": "Ainda não bloqueaste qualquer utilizador.", "empty_column.bookmarked_statuses": "Ainda não adicionou nenhum toot aos Itens salvos. Quando adicionar, eles serão exibidos aqui.", "empty_column.community": "A timeline local está vazia. Escreve algo publicamente para começar!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.conversations": "Quando enviar ou receber uma publicação que seja visível apenas para as pessoas nela mencionadas, ela aparecerá aqui.", "empty_column.domain_blocks": "Ainda não há qualquer domínio escondido.", "empty_column.explore_statuses": "Nada em destaque por agora. Volte mais tarde!", "empty_column.favourited_statuses": "Ainda não tens quaisquer toots favoritos. Quando tiveres algum, ele irá aparecer aqui.", @@ -230,7 +230,7 @@ "keyboard_shortcuts.boost": "para partilhar", "keyboard_shortcuts.column": "para focar uma publicação numa das colunas", "keyboard_shortcuts.compose": "para focar na área de publicação", - "keyboard_shortcuts.conversations": "to open conversations column", + "keyboard_shortcuts.conversations": "para abrir a coluna de conversações", "keyboard_shortcuts.description": "Descrição", "keyboard_shortcuts.down": "para mover para baixo na lista", "keyboard_shortcuts.enter": "para expandir uma publicação", @@ -366,12 +366,12 @@ "poll_button.remove_poll": "Remover votação", "privacy.change": "Ajustar a privacidade da publicação", "privacy.direct.long": "Apenas para utilizadores mencionados", - "privacy.direct.short": "Direct", + "privacy.direct.short": "Apenas pessoas que menciono", "privacy.private.long": "Apenas para os seguidores", - "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all", + "privacy.private.short": "Apenas seguidores", + "privacy.public.long": "Visível para todos", "privacy.public.short": "Público", - "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", + "privacy.unlisted.long": "Visível para todos, mas não incluir em funcionalidades de divulgação", "privacy.unlisted.short": "Não listar", "refresh": "Actualizar", "regeneration_indicator.label": "A carregar…", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index da2a4588c..15d2f7aeb 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -32,8 +32,8 @@ "account.mute": "Tysta @{name}", "account.mute_notifications": "Stäng av notifieringar från @{name}", "account.muted": "Tystad", - "account.posts": "Tutningar", - "account.posts_with_replies": "Tutningar och svar", + "account.posts": "Inlägg", + "account.posts_with_replies": "Inlägg och svar", "account.report": "Rapportera @{name}", "account.requested": "Inväntar godkännande. Klicka för att avbryta följarförfrågan", "account.share": "Dela @{name}s profil", @@ -247,7 +247,7 @@ "keyboard_shortcuts.my_profile": "för att öppna din profil", "keyboard_shortcuts.notifications": "för att öppna Meddelanden", "keyboard_shortcuts.open_media": "öppna media", - "keyboard_shortcuts.pinned": "för att öppna Nålade toots", + "keyboard_shortcuts.pinned": "för att öppna nålade inlägg", "keyboard_shortcuts.profile": "för att öppna skaparens profil", "keyboard_shortcuts.reply": "för att svara", "keyboard_shortcuts.requests": "för att öppna Följförfrågningar", @@ -334,7 +334,7 @@ "notifications.column_settings.reblog": "Knuffar:", "notifications.column_settings.show": "Visa i kolumnen", "notifications.column_settings.sound": "Spela upp ljud", - "notifications.column_settings.status": "Nya tutor:", + "notifications.column_settings.status": "Nya inlägg:", "notifications.column_settings.unread_notifications.category": "O-lästa aviseringar", "notifications.column_settings.unread_notifications.highlight": "Markera o-lästa aviseringar", "notifications.column_settings.update": "Redigeringar:", @@ -436,7 +436,7 @@ "search_results.all": "Alla", "search_results.hashtags": "Hashtaggar", "search_results.nothing_found": "Kunde inte hitta något för dessa sökord", - "search_results.statuses": "Tutor", + "search_results.statuses": "Inlägg", "search_results.statuses_fts_disabled": "Att söka toots med deras innehåll är inte möjligt på denna Mastodon-server.", "search_results.total": "{count, number} {count, plural, ett {result} andra {results}}", "status.admin_account": "Öppet modereringsgränssnitt för @{name}", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index b38cbc278..0195dee2e 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -13,7 +13,7 @@ "account.domain_blocked": "域名已屏蔽", "account.edit_profile": "修改个人资料", "account.enable_notifications": "当 @{name} 发嘟时通知我", - "account.endorse": "推荐在个人页上", + "account.endorse": "在个人资料中推荐此用户", "account.follow": "关注", "account.followers": "关注者", "account.followers.empty": "目前无人关注此用户。", @@ -24,8 +24,8 @@ "account.follows_you": "关注了你", "account.hide_reblogs": "隐藏来自 @{name} 的转贴", "account.joined": "加入于 {date}", - "account.link_verified_on": "此链接的所有权已在 {date} 检查", - "account.locked_info": "此账户已锁嘟。账户所有者会手动审核关注者。", + "account.link_verified_on": "此链接的所有权已在 {date} 被检查", + "account.locked_info": "此账户已锁嘟。账户所有者会手动审核关注申请。", "account.media": "媒体", "account.mention": "提及 @{name}", "account.moved_to": "{name} 已经迁移到:", @@ -35,8 +35,8 @@ "account.posts": "帖子", "account.posts_with_replies": "帖子和回复", "account.report": "举报 @{name}", - "account.requested": "正在等待对方同意。点击以取消发送关注请求", - "account.share": "分享 @{name} 的个人资料", + "account.requested": "正在等待对方通过关注申请。点击以取消发送关注申请", + "account.share": "分享 @{name} 的用户简介", "account.show_reblogs": "显示来自 @{name} 的转嘟", "account.statuses_counter": "{counter} 条嘟文", "account.unblock": "取消屏蔽 @{name}", @@ -68,19 +68,19 @@ "bundle_modal_error.message": "载入这个组件时发生了错误。", "bundle_modal_error.retry": "重试", "column.blocks": "已屏蔽的用户", - "column.bookmarks": "书签", + "column.bookmarks": "收藏夹", "column.community": "本站时间轴", - "column.conversations": "对话", + "column.conversations": "会话", "column.directory": "浏览用户资料", "column.domain_blocks": "已屏蔽的域名", - "column.favourites": "收藏", - "column.follow_requests": "关注请求", + "column.favourites": "喜欢", + "column.follow_requests": "关注申请", "column.home": "主页", "column.lists": "列表", "column.mutes": "已隐藏的用户", "column.notifications": "通知", "column.pins": "置顶帖子", - "column.public": "跨站公共时间轴", + "column.public": "跨站时间轴", "column_back_button.label": "返回", "column_header.hide_settings": "隐藏设置", "column_header.moveLeft_settings": "将此栏左移", @@ -89,16 +89,16 @@ "column_header.show_settings": "显示设置", "column_header.unpin": "取消置顶", "column_subheading.settings": "设置", - "community.column_settings.local_only": "仅限本站", + "community.column_settings.local_only": "仅在本站显示", "community.column_settings.media_only": "仅限媒体", "community.column_settings.remote_only": "仅限外部", "compose_form.direct_message_warning_learn_more": "了解更多", - "compose_form.encryption_warning": "Mastodon上的帖子不是端到端加密的。不要在Mastodon上分享敏感信息。", + "compose_form.encryption_warning": "Mastodon 上的嘟文并未端到端加密。请不要在 Mastodon 上分享敏感信息。", "compose_form.hashtag_warning": "此帖子被设置为“不公开”,因此它不会出现在任何话题标签的列表下。只有公开帖子才能通过话题标签进行搜索。", "compose_form.lock_disclaimer": "你的账号没有{locked}。任何人在关注你后都能立即查看仅关注者可见的帖子。", - "compose_form.lock_disclaimer.lock": "开启保护", + "compose_form.lock_disclaimer.lock": "锁嘟", "compose_form.placeholder": "在想些什么?", - "compose_form.poll.add_option": "添加选项", + "compose_form.poll.add_option": "添加一个选项", "compose_form.poll.duration": "投票持续时间", "compose_form.poll.option_placeholder": "选项 {number}", "compose_form.poll.remove_option": "移除此选项", @@ -112,28 +112,28 @@ "compose_form.sensitive.unmarked": "媒体未被标记为敏感内容", "compose_form.spoiler.marked": "移除内容警告", "compose_form.spoiler.unmarked": "添加内容警告", - "compose_form.spoiler_placeholder": "写下你的警告", + "compose_form.spoiler_placeholder": "在此处写下内容警告", "confirmation_modal.cancel": "取消", "confirmations.block.block_and_report": "屏蔽与举报", "confirmations.block.confirm": "屏蔽", "confirmations.block.message": "你确定要屏蔽 {name} 吗?", "confirmations.delete.confirm": "删除", - "confirmations.delete.message": "你确定要删除这条嘟文吗?", + "confirmations.delete.message": "你确定要删除这个帖子吗?", "confirmations.delete_list.confirm": "删除", "confirmations.delete_list.message": "你确定要永久删除此列表吗?", "confirmations.discard_edit_media.confirm": "丢弃", - "confirmations.discard_edit_media.message": "您还有未保存的媒体描述或预览修改,仍然丢弃它们吗?", - "confirmations.domain_block.confirm": "屏蔽整个域名", - "confirmations.domain_block.message": "你真的确定要屏蔽所有来自 {domain} 的内容吗?多数情况下,屏蔽或隐藏几个特定的用户就已经足够了。来自该网站的内容将不再出现在你的任何公共时间轴或通知列表里。来自该网站的关注者将会被移除。", + "confirmations.discard_edit_media.message": "您还有未保存的媒体描述或预览修改,仍然要丢弃它们吗?", + "confirmations.domain_block.confirm": "隐藏所有来自此域名的内容", + "confirmations.domain_block.message": "你真的确定要屏蔽所有来自 {domain} 的内容吗?多数情况下,屏蔽或隐藏几个特定的用户就已经足够了。来自该域名的内容将不再出现在你的公共时间轴或通知列表里。来自该域名的关注者将会被移除。", "confirmations.logout.confirm": "登出", "confirmations.logout.message": "你确定要登出吗?", "confirmations.mute.confirm": "隐藏", "confirmations.mute.explanation": "这将隐藏他们的嘟文以及提到他们的嘟文,但他们仍可以看到你的嘟文并关注你。", "confirmations.mute.message": "你确定要隐藏 {name} 吗?", "confirmations.redraft.confirm": "删除并重新编辑", - "confirmations.redraft.message": "你确定要删除这条嘟文并重新编辑它吗?所有相关的转嘟和喜欢都会被清除,回复将会失去关联。", + "confirmations.redraft.message": "你确定要删除这条嘟文并重新编辑它吗?所有相关的转嘟和喜欢都会被清除,回复将失去与这条嘟文的关联。", "confirmations.reply.confirm": "回复", - "confirmations.reply.message": "回复此消息将会覆盖当前正在编辑的信息。确定继续吗?", + "confirmations.reply.message": "回复此消息将会覆盖当前正在编辑的信息。仍要继续吗?", "confirmations.unfollow.confirm": "取消关注", "confirmations.unfollow.message": "你确定要取消关注 {name} 吗?", "conversation.delete": "删除对话", @@ -142,9 +142,9 @@ "conversation.with": "与 {names}", "directory.federated": "来自联邦宇宙的已知部分", "directory.local": "仅来自 {domain}", - "directory.new_arrivals": "新来者", + "directory.new_arrivals": "新用户", "directory.recently_active": "最近活跃", - "embed.instructions": "复制以下代码在你的网站上嵌入此文章,", + "embed.instructions": "要在你的网站上嵌入此嘟文,请复制以下代码。", "embed.preview": "它会像这样显示出来:", "emoji_button.activity": "活动", "emoji_button.custom": "自定义", @@ -156,31 +156,31 @@ "emoji_button.objects": "物体", "emoji_button.people": "人物", "emoji_button.recent": "常用", - "emoji_button.search": "搜索…", + "emoji_button.search": "搜索……", "emoji_button.search_results": "搜索结果", "emoji_button.symbols": "符号", "emoji_button.travel": "旅行和地点", "empty_column.account_suspended": "账户已停用", "empty_column.account_timeline": "这里没有帖子!", - "empty_column.account_unavailable": "个人资料不可用", + "empty_column.account_unavailable": "用户资料不可用", "empty_column.blocks": "你还未屏蔽任何用户。", - "empty_column.bookmarked_statuses": "你还未将任何帖子加入书签。在你添加书签后,帖子将显示在此。", - "empty_column.community": "本站时间轴一片空白,快写点什么让它动起来吧!", - "empty_column.conversations": "一旦您发送或接收了一个只对其中提到的人可见的帖子,它就会显示在这里。", + "empty_column.bookmarked_statuses": "你还未将任何帖子加入收藏夹。在你加入收藏夹后,帖子将显示在此。", + "empty_column.community": "本站时间轴暂时没有内容,快写点什么让它动起来吧!", + "empty_column.conversations": "发送或收到仅对提及对象可见的嘟文后,就会显示在这里。", "empty_column.domain_blocks": "目前没有被隐藏的站点。", "empty_column.explore_statuses": "目前没有热门话题,稍后再来看看吧!", "empty_column.favourited_statuses": "你还未喜欢过任何帖子。当你喜欢帖子时,它将显示在此。", - "empty_column.favourites": "没有人喜欢过这条嘟文。如果有人喜欢会显示在此。", + "empty_column.favourites": "没有人喜欢过这条嘟文。如果有人喜欢了,就会显示在这里。", "empty_column.follow_recommendations": "似乎无法为你生成任何建议。你可以尝试使用搜索寻找你可能知道的人或探索热门标签。", - "empty_column.follow_requests": "你没有收到新的关注请求。收到后将显示在此。", + "empty_column.follow_requests": "你没有收到新的关注申请。收到后将显示在此。", "empty_column.hashtag": "这个话题标签下暂时没有内容。", "empty_column.home": "你的主页时间线是空的!快去关注更多人吧。 {suggestions}", "empty_column.home.suggestions": "查看一些建议", - "empty_column.list": "此列表中暂时没有内容。列表中用户所发送的的新嘟文将会在这里显示。", - "empty_column.lists": "你还没有创建过列表。你创建的列表会在这里显示。", + "empty_column.list": "此列表中暂时没有内容。列表中用户所发送的的新嘟文将会显示在这里。", + "empty_column.lists": "你还没有创建过列表。你创建的列表会显示在这里。", "empty_column.mutes": "你没有隐藏任何用户。", "empty_column.notifications": "你还没有收到过任何通知,快和其他用户互动吧。", - "empty_column.public": "这里什么都没有!写一些公开帖子,或者关注其他服务器的用户后,这里就会有嘟文出现了", + "empty_column.public": "这里什么都没有!写一些公开帖子,或者关注来自其他服务器的用户后,这里就会有嘟文出现了", "error.unexpected_crash.explanation": "此页面无法正确显示,这可能是因为我们的代码中有错误,也可能是因为浏览器兼容问题。", "error.unexpected_crash.explanation_addons": "此页面无法正确显示,这个错误很可能是由浏览器附加组件或自动翻译工具造成的。", "error.unexpected_crash.next_steps": "刷新一下页面试试。如果没用,你可以换个浏览器或者用本地应用。", @@ -190,7 +190,7 @@ "explore.search_results": "搜索结果", "explore.suggested_follows": "为你推荐", "explore.title": "探索", - "explore.trending_links": "最新消息", + "explore.trending_links": "新闻", "explore.trending_statuses": "帖子", "explore.trending_tags": "话题标签", "follow_recommendations.done": "完成", @@ -198,7 +198,7 @@ "follow_recommendations.lead": "你关注的人的帖子将按时间顺序显示在你的主页。 别担心,你可以随时取消关注!", "follow_request.authorize": "授权", "follow_request.reject": "拒绝", - "follow_requests.unlocked_explanation": "虽说你没有锁嘟,但是 {domain} 的工作人员觉得你可能想手工审核这些账号的关注请求。", + "follow_requests.unlocked_explanation": "虽然你没有锁嘟,但是 {domain} 的管理人员觉得你可能想人工审核这些账号的关注申请。", "generic.saved": "已保存", "getting_started.developers": "开发", "getting_started.directory": "用户目录", @@ -212,7 +212,7 @@ "hashtag.column_header.tag_mode.any": "或是 {additional}", "hashtag.column_header.tag_mode.none": "而不用 {additional}", "hashtag.column_settings.select.no_options_message": "没有找到建议", - "hashtag.column_settings.select.placeholder": "输入话题标签…", + "hashtag.column_settings.select.placeholder": "输入话题标签……", "hashtag.column_settings.tag_mode.all": "全部", "hashtag.column_settings.tag_mode.any": "任一", "hashtag.column_settings.tag_mode.none": "无一", @@ -226,8 +226,8 @@ "intervals.full.hours": "{number} 小时", "intervals.full.minutes": "{number} 分钟", "keyboard_shortcuts.back": "返回上一页", - "keyboard_shortcuts.blocked": "打开被屏蔽用户列表", - "keyboard_shortcuts.boost": "转贴", + "keyboard_shortcuts.blocked": "打开已屏蔽用户列表", + "keyboard_shortcuts.boost": "转嘟", "keyboard_shortcuts.column": "选择某栏", "keyboard_shortcuts.compose": "选择输入框", "keyboard_shortcuts.conversations": "打开对话栏", @@ -250,7 +250,7 @@ "keyboard_shortcuts.pinned": "打开置顶帖子列表", "keyboard_shortcuts.profile": "打开作者的个人资料", "keyboard_shortcuts.reply": "回复帖子", - "keyboard_shortcuts.requests": "打开关注请求列表", + "keyboard_shortcuts.requests": "打开关注申请列表", "keyboard_shortcuts.search": "选择搜索框", "keyboard_shortcuts.spoilers": "显示或隐藏被折叠的正文", "keyboard_shortcuts.start": "打开“开始使用”栏", @@ -273,21 +273,21 @@ "lists.new.title_placeholder": "新列表的标题", "lists.replies_policy.followed": "任何被关注的用户", "lists.replies_policy.list": "列表成员", - "lists.replies_policy.none": "没人", + "lists.replies_policy.none": "没有人", "lists.replies_policy.title": "显示回复给:", "lists.search": "搜索你关注的人", "lists.subheading": "你的列表", "load_pending": "{count} 项", - "loading_indicator.label": "加载中…", + "loading_indicator.label": "加载中……", "media_gallery.toggle_visible": "隐藏图片", "missing_indicator.label": "找不到内容", "missing_indicator.sublabel": "无法找到此资源", "mute_modal.duration": "持续时长", - "mute_modal.hide_notifications": "同时隐藏来自这个用户的通知?", + "mute_modal.hide_notifications": "是否同时隐藏来自这个用户的通知?", "mute_modal.indefinite": "无期限", "navigation_bar.apps": "移动应用", "navigation_bar.blocks": "已屏蔽的用户", - "navigation_bar.bookmarks": "书签", + "navigation_bar.bookmarks": "收藏夹", "navigation_bar.community_timeline": "本站时间轴", "navigation_bar.compose": "撰写新帖子", "navigation_bar.discover": "发现", @@ -296,7 +296,7 @@ "navigation_bar.explore": "探索", "navigation_bar.favourites": "喜欢", "navigation_bar.filters": "隐藏关键词", - "navigation_bar.follow_requests": "关注请求", + "navigation_bar.follow_requests": "关注申请", "navigation_bar.follows_and_followers": "关注管理", "navigation_bar.info": "关于此服务", "navigation_bar.keyboard_shortcuts": "快捷键列表", @@ -305,17 +305,17 @@ "navigation_bar.mutes": "已隐藏的用户", "navigation_bar.personal": "个人", "navigation_bar.pins": "置顶帖子", - "navigation_bar.preferences": "首选项", - "navigation_bar.public_timeline": "跨站公共时间轴", - "navigation_bar.security": "安全性", - "notification.admin.sign_up": "{name} 已注册", + "navigation_bar.preferences": "偏好", + "navigation_bar.public_timeline": "跨站时间轴", + "navigation_bar.security": "安全", + "notification.admin.sign_up": "{name} 已被注册", "notification.favourite": "{name} 喜欢了你的帖子", "notification.follow": "{name} 开始关注你", "notification.follow_request": "{name} 向你发送了关注请求", "notification.mention": "{name} 提及了你", "notification.own_poll": "你的投票已经结束", "notification.poll": "你参与的一个投票已经结束", - "notification.reblog": "{name} 转贴了你的帖子", + "notification.reblog": "{name} 转发了你的帖子", "notification.status": "{name} 刚刚发帖", "notification.update": "{name} 编辑了帖子", "notifications.clear": "清空通知列表", @@ -327,19 +327,19 @@ "notifications.column_settings.filter_bar.category": "快速过滤栏", "notifications.column_settings.filter_bar.show_bar": "显示过滤栏", "notifications.column_settings.follow": "新关注者:", - "notifications.column_settings.follow_request": "新关注请求:", + "notifications.column_settings.follow_request": "新关注申请:", "notifications.column_settings.mention": "提及:", "notifications.column_settings.poll": "投票结果:", "notifications.column_settings.push": "推送通知", - "notifications.column_settings.reblog": "转贴:", + "notifications.column_settings.reblog": "转发:", "notifications.column_settings.show": "在通知栏显示", - "notifications.column_settings.sound": "播放声音", - "notifications.column_settings.status": "新贴:", + "notifications.column_settings.sound": "播放音效", + "notifications.column_settings.status": "新帖:", "notifications.column_settings.unread_notifications.category": "未读通知", "notifications.column_settings.unread_notifications.highlight": "高亮显示未读通知", "notifications.column_settings.update": "编辑:", "notifications.filter.all": "全部", - "notifications.filter.boosts": "转贴", + "notifications.filter.boosts": "转发", "notifications.filter.favourites": "喜欢", "notifications.filter.follows": "关注", "notifications.filter.mentions": "提及", @@ -348,9 +348,9 @@ "notifications.grant_permission": "授予权限", "notifications.group": "{count} 条通知", "notifications.mark_as_read": "将所有通知标为已读", - "notifications.permission_denied": "由于权限被拒绝,无法启用桌面通知。", + "notifications.permission_denied": "由于权限不可用,无法启用桌面通知。", "notifications.permission_denied_alert": "由于在此之前浏览器权限请求就已被拒绝,所以启用桌面通知失败", - "notifications.permission_required": "所需权限未被授予,所以桌面通知不可用", + "notifications.permission_required": "未授予所需权限,所以桌面通知不可用", "notifications_permission_banner.enable": "启用桌面通知", "notifications_permission_banner.how_to_control": "启用桌面通知以在 Mastodon 未打开时接收通知。你可以通过交互通过上面的 {icon} 按钮来精细控制可以发送桌面通知的交互类型。", "notifications_permission_banner.title": "精彩不容错过", @@ -366,15 +366,15 @@ "poll_button.remove_poll": "移除投票", "privacy.change": "设置帖子的可见范围", "privacy.direct.long": "只有被提及的用户能看到", - "privacy.direct.short": "仅我提到的人", + "privacy.direct.short": "仅对提及的人可见", "privacy.private.long": "仅关注者可见", - "privacy.private.short": "仅关注者", + "privacy.private.short": "仅对关注者可见", "privacy.public.long": "所有人可见", "privacy.public.short": "公开", - "privacy.unlisted.long": "对所有人都可见,但关闭发现功能", - "privacy.unlisted.short": "不公开", + "privacy.unlisted.long": "对所有人可见,但不加入探索功能", + "privacy.unlisted.short": "非公开", "refresh": "刷新", - "regeneration_indicator.label": "加载中…", + "regeneration_indicator.label": "加载中……", "regeneration_indicator.sublabel": "你的主页动态正在准备中!", "relative_time.days": "{number} 天", "relative_time.full.days": "{number, plural, one {# 天} other {# 天}}前", diff --git a/config/locales/activerecord.io.yml b/config/locales/activerecord.io.yml index c63dc0e8d..38304ef93 100644 --- a/config/locales/activerecord.io.yml +++ b/config/locales/activerecord.io.yml @@ -1 +1,32 @@ +--- io: + activerecord: + attributes: + poll: + expires_at: Fina dato + options: Selektaji + user: + agreement: Servokonkordo + email: Retpostoadreso + locale: Regiono + password: Pasvorto + user/account: + username: Uzantonomo + user/invite_request: + text: Rezono + errors: + models: + account: + attributes: + username: + invalid: mustas konsistar nur literi, nombri e sublinei + reserved: rezervitas + status: + attributes: + reblog: + taken: de postajo ja existas + user: + attributes: + email: + blocked: uzas nepermisata retpostodomeno + unreachable: semblas ne existar diff --git a/config/locales/activerecord.ja.yml b/config/locales/activerecord.ja.yml index ad4c1eccf..ab13dce6c 100644 --- a/config/locales/activerecord.ja.yml +++ b/config/locales/activerecord.ja.yml @@ -28,5 +28,5 @@ ja: user: attributes: email: - blocked: は禁止されているプロバイダメールを使用します - unreachable: 存在しないようです + blocked: は禁止されているメールプロバイダを使用しています + unreachable: は存在しないようです diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 779b43fe9..3e1c1c6b7 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -802,6 +802,7 @@ ca: other: Compartit per %{count} persones en la darrera setmana title: Enllaços en tendència usage_comparison: Compartit %{today} vegades avui, comparat amb %{yesterday} d'ahir + only_allowed: Només permesos pending_review: Revisió pendent preview_card_providers: allowed: Els enllaços d'aquest mitjà poden estar en tendència @@ -843,6 +844,7 @@ ca: one: Emprat per una persona en la darrera setmana other: Emprat per %{count} persones en la darrera setmana title: Tendència + trending: Tendència warning_presets: add_new: Afegir-ne un de nou delete: Esborra diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 4c373d74c..717bb5614 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -832,6 +832,7 @@ cs: other: Sdílený %{count} lidmi za poslední týden title: Populární odkazy usage_comparison: Za dnešek %{today} sdílení, oproti %{yesterday} včera + only_allowed: Jen povolené pending_review: Čeká na posouzení preview_card_providers: allowed: Odkazy z tohoto vydavatele se smí objevovat mezi populárními @@ -877,6 +878,7 @@ cs: one: Použit jedním člověkem za poslední týden other: Použit %{count} lidmi za poslední týden title: Trendy + trending: Populární warning_presets: add_new: Přidat nové delete: Smazat diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 812b97c77..1b788574e 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -527,6 +527,8 @@ cy: review: Adolygu statws updated_msg: Gosodiadau hashnodau wedi'i diweddaru'n llwyddiannus title: Gweinyddiaeth + trends: + only_allowed: Derbyniwyd yn unig warning_presets: add_new: Ychwanegu newydd delete: Dileu diff --git a/config/locales/da.yml b/config/locales/da.yml index 86f926574..28c009ef3 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -801,6 +801,7 @@ da: other: Delt af %{count} personer den seneste uge title: Populære links usage_comparison: Delt %{today} gange i dag, sammenlignet med %{yesterday} i går + only_allowed: Kun tilladte pending_review: Afventer revision preview_card_providers: allowed: Links fra denne udgiver kan trende @@ -842,6 +843,7 @@ da: one: Brugt af én person den seneste uge other: Brugt af %{count} personer den seneste uge title: Trends + trending: Populært warning_presets: add_new: Tilføj ny delete: Slet @@ -1027,6 +1029,7 @@ da: strikes: action_taken: Handling foretaget appeal: Appel + appeal_approved: Kontoanmeldelsen er blevet appelleret og er ikke længere gyldig appeal_rejected: Appellen er afvist appeal_submitted_at: Appel indgivet appealed_msg: Din appel er indgivet. Godkendes den, underrettes du. @@ -1553,6 +1556,7 @@ da: title: Arkiv download suspicious_sign_in: change_password: skift din adgangskode + details: 'Her er nogle detaljer om login-forsøget:' explanation: Indlogning på din konto fra en ny IP-adresse detekteret. further_actions_html: Hvis dette ikke var dig, anbefaler vi, at du %{action} med det samme og aktiverer to-faktor godkendelse for at holde din konto sikker. subject: Din konto er blevet tilgået fra en ny IP-adresse diff --git a/config/locales/devise.ja.yml b/config/locales/devise.ja.yml index 73e79be23..ca8ac0584 100644 --- a/config/locales/devise.ja.yml +++ b/config/locales/devise.ja.yml @@ -19,10 +19,10 @@ ja: mailer: confirmation_instructions: action: メールアドレスの確認 - action_with_app: 確認し %{app} に戻る + action_with_app: 確認し%{app}に戻る explanation: このメールアドレスで%{host}にアカウントを作成しました。アカウントの有効化まであと一歩です。なお、もし心当たりがない場合は、申し訳ありませんがこのメールを無視してください。 - explanation_when_pending: このメールアドレスで %{host} への登録を申請しました。あなたがメールアドレスを確認したら、サーバー管理者が申請を審査します。ログインして一部設定を変更したりアカウントを削除できますが、ほとんどの機能は申請が承認されるまで利用できません。申請が却下された場合、あなたのデータは削除されますので以降の操作は必要ありません。もし心当たりがない場合、申し訳ありませんがこのメールを無視してください。 - extra_html: あわせて、サーバーのルール利用規約 もお読みください。 + explanation_when_pending: このメールアドレスで%{host}への登録を申請しました。あなたがメールアドレスを確認したら、サーバー管理者が申請を審査します。ログインして一部設定を変更したりアカウントを削除できますが、ほとんどの機能は申請が承認されるまで利用できません。申請が却下された場合、あなたのデータは削除されますので以降の操作は必要ありません。もし心当たりがない場合、申し訳ありませんがこのメールを無視してください。 + extra_html: あわせて、サーバーのルール利用規約もお読みください。 subject: 'Mastodon: メールアドレスの確認 %{instance}' title: メールアドレスの確認 email_changed: @@ -47,17 +47,17 @@ ja: subject: 'Mastodon: パスワード再発行' title: パスワード再発行 two_factor_disabled: - explanation: あなたのアカウントの二段階認証が無効化されました。メールとパスワードのみでログインできます。 - subject: 'Mastodon: 二段階認証が無効になりました' - title: 二段階認証が無効化されました + explanation: あなたのアカウントの二要素認証が無効化されました。メールとパスワードのみでログインできます。 + subject: 'Mastodon: 二要素認証が無効になりました' + title: 二要素認証が無効化されました two_factor_enabled: - explanation: あなたのアカウントの二段階認証が有効化されました。ログインするには TOTP アプリで生成されたコードが必要です。 - subject: 'Mastodon: 二段階認証が有効になりました' - title: 二段階認証が有効化されました + explanation: あなたのアカウントの二要素認証が有効化されました。ログインするには TOTP アプリで生成されたコードが必要です。 + subject: 'Mastodon: 二要素認証が有効になりました' + title: 二要素認証が有効化されました two_factor_recovery_codes_changed: explanation: 以前のリカバリーコードが無効化され、新しいコードが生成されました。 - subject: 'Mastodon: 二段階認証のリカバリーコードが再生成されました' - title: 二段階認証のリカバリーコードが変更されました + subject: 'Mastodon: 二要素認証のリカバリーコードが再生成されました' + title: 二要素認証のリカバリーコードが変更されました unlock_instructions: subject: 'Mastodon: アカウントのロックの解除' webauthn_credential: diff --git a/config/locales/devise.zh-CN.yml b/config/locales/devise.zh-CN.yml index 072d4bc8d..dc87d8ddb 100644 --- a/config/locales/devise.zh-CN.yml +++ b/config/locales/devise.zh-CN.yml @@ -22,7 +22,7 @@ zh-CN: action_with_app: 确认并返回%{app} explanation: 你在 %{host} 上使用此电子邮箱地址创建了一个账号。点击下面的链接即可激活账号。如果你没有创建账号,请忽略此邮件。 explanation_when_pending: 你用这个电子邮件申请了在 %{host} 注册。在确认电子邮件地址之后,我们会审核你的申请。在此之前,你不能登录。如果你的申请被驳回,你的数据会被移除,因此你无需再采取任何行动。如果申请人不是你,请忽略这封邮件。 - extra_html: 请记得阅读本服务器的相关规定我们的使用条款。 + extra_html: 请记得阅读本实例的相关规定我们的使用条款。 subject: Mastodon:来自 %{instance} 的确认指引 title: 验证电子邮件地址 email_changed: diff --git a/config/locales/doorkeeper.fa.yml b/config/locales/doorkeeper.fa.yml index 9f455e64b..799f46945 100644 --- a/config/locales/doorkeeper.fa.yml +++ b/config/locales/doorkeeper.fa.yml @@ -60,6 +60,7 @@ fa: error: title: خطایی رخ داد new: + prompt_html: "%{client_name} خواهان اجازه دسترسی به حساب کاربری شماست. اگر به آن اعتماد ندارید، نباید تاییدش کنید." review_permissions: بازبینی اجازه‌ها title: نیاز به اجازه دادن show: @@ -70,7 +71,12 @@ fa: confirmations: revoke: آیا مطمئن هستید؟ index: + authorized_at: تایید شده در %{date} + description_html: اینها نرم‌افزار هایی هستند که می‌توانند به حساب کاربری شما با استفاده از رابط نرم‌افزاری دسترسی پیدا کنند. اگر نرم‌افزار های در اینجا هستند که نمی‌شناسید، یا نرم‌افزاری که رفتار مشکوک دارد، می‌توانید دسترسی اش را باطل کنید. + last_used_at: آخرین استفاده در %{date} + never_used: هرگز استفاده نشده scopes: اجازه‌ها + superapp: داخلی title: برنامه‌های مجاز errors: messages: @@ -113,6 +119,9 @@ fa: write: فقط دسترسی نوشتن title: accounts: حساب‌ها + admin/accounts: مدیریت حساب های کاربری + admin/all: تمامی عملکرد های مدیریتی + admin/reports: مدیریت بازخورد ها all: همه چیز blocks: مسدودها bookmarks: نشانک‌ها @@ -120,6 +129,7 @@ fa: crypto: رمزگذاری سرتاسری favourites: پسندیده‌ها filters: پالایه‌ها + follow: ارتباطات follows: پی‌گرفتگان lists: سیاهه‌ها media: پیوست‌های رسانه‌ای diff --git a/config/locales/doorkeeper.hy.yml b/config/locales/doorkeeper.hy.yml index f9e1e22bd..94ef091f3 100644 --- a/config/locales/doorkeeper.hy.yml +++ b/config/locales/doorkeeper.hy.yml @@ -69,6 +69,9 @@ hy: confirmations: revoke: Վստա՞հ ես index: + never_used: Երբեք չի օգտագործուել + scopes: Թոյլտուութիւններ + superapp: Ներքին title: Քո նոյնականացրած ծրագրերը errors: messages: @@ -104,6 +107,25 @@ hy: authorized_applications: destroy: notice: Յաւելուածը չեղարկուել է։ + grouped_scopes: + access: + read: Միայն կարդալու հնարաւորութիւն + read/write: Կարդալու եւ գրելու հնարաւորութիւն + write: Միայն գրելու հնարաւորութիւն + title: + accounts: Հաշիւներ + all: Բոլորը + blocks: Արգելափակումներ + bookmarks: Էջանիշեր + conversations: Զրոյցներ + favourites: Հաւանածներ + filters: Զտիչներ + follow: Կապեր + lists: Ցանկեր + mutes: Լռեցուածներ + notifications: Ծանուցումներ + push: Հրելու ծանուցումներ + statuses: Գրառումներ layouts: admin: nav: diff --git a/config/locales/doorkeeper.io.yml b/config/locales/doorkeeper.io.yml index ff1fdf9c2..0e03ab79f 100644 --- a/config/locales/doorkeeper.io.yml +++ b/config/locales/doorkeeper.io.yml @@ -5,6 +5,8 @@ io: doorkeeper/application: name: Nomo redirect_uri: URI di plussendo + scopes: Skopi + website: Apliksito errors: models: doorkeeper/application: @@ -31,15 +33,153 @@ io: help: native_redirect_uri: Uzez %{native_redirect_uri} por lokala probi redirect_uri: Uzez un lineo por singla URI + scopes: Separez skopi per spaci. Lasez quale vakua por uzar originala skopi. index: + application: Apliko + callback_url: Retrovokligilo + delete: Efacez + empty: Vu ne havas apliki. + name: Nomo new: New Application + scopes: Skopi + show: Montrez + title: Vua apliki new: title: New Application show: + actions: Agi application_id: Application Id callback_urls: Callback urls + scopes: Skopi secret: Secret + title: 'Apliko: %{name}' + authorizations: + buttons: + authorize: Permisez + deny: Despermisez + error: + title: Eroro eventis + new: + prompt_html: "%{client_name} volas permiso por acesar vua konti. Ol esas externa apliko. Se vu ne fidas, lore vu debas ne permisar." + review_permissions: Kontrolez permisi + title: Permiso bezonesas + show: + title: Kopiez ca permisnumero e glutinez adsur la apliko. + authorized_applications: + buttons: + revoke: Deaprobez + confirmations: + revoke: Ka vu esas certa? + index: + authorized_at: Permisesis ye %{date} + description_html: Co esas apliki quo povas acesar vua konto per API. Se existas apliki quon vu ne rikonocas hike, o apliko misfuncionas, vu povas desaprobar ola aceso. + last_used_at: Antee uzesis ye %{date} + never_used: Nulaloke uzesas + scopes: Permisi + superapp: Interna + title: Vua permisita apliki + errors: + messages: + access_denied: Resursproprietanto o permisservilo refuzis la demando. + credential_flow_not_configured: Resursproprietantpasvortidentesesofluo faliis pro ke Doorkeeper.configure.resource_owner_from_credentials ne ajustesis. + invalid_client: Klientpermiso falias pro nesavita kliento, neinkluzita klientpermiso o nesuportita permismetodo. + invalid_grant: Provizita permiso esis nevalida, expiris, deaprobesis, ne parigas uzita ridirektoligilo dum permisdemando o facesis a altra kliento. + invalid_redirect_uri: La inkluzita ridirektoligilo esas nevalida. + invalid_request: + missing_param: 'Bezonita parametro: %{value}.' + request_not_authorized: Demando bezonas permisesar. Bezonita parametro por permisar demando ne existas o esas nevalida. + unknown: La demando ne havas bezonita parametro, inkluzas nesuportita parametro o malformesas. + invalid_resource_owner: Provizita resursproprietantidenteso esas nevalida o resursproprietanto ne existas + invalid_scope: La demandita skopo esas nevalida, nesavata o malformata. + invalid_token: + expired: La acesficho expiris + revoked: Acesficho deaprobesis + unknown: Acesficho esas nevalida + resource_owner_authenticator_not_configured: Resursproprietanto falias trovar pro ke Doorkeeper.configure.resource_owner_authenticator ne ajustesis. + server_error: Permisservilo trovas neanticipata situeso quo preventas ol finar la demando. + temporarily_unavailable: Permisservilo nu ne povas direktar la demando pro provizora eceso o servilmanteno. + unauthorized_client: La kliento ne permisesis agar ca demando per ca metodo. + unsupported_grant_type: Permisprovizontipo ne suportesas da permisservilo. + unsupported_response_type: La permisservilo ne suportas ca responsotipo. + flash: + applications: + create: + notice: Apliko kreesis. + destroy: + notice: Apliko efacesis. + update: + notice: Apliko novigesis. + authorized_applications: + destroy: + notice: Apliko aprobesis. + grouped_scopes: + access: + read: Lekto-nura aceso + read/write: Lekto e skrib-nura aceso + write: Skrib-nura aceso + title: + accounts: Konti + admin/accounts: Administrar di konti + admin/all: Omna administrofuncioni + admin/reports: Administro di raporti + all: Omno + blocks: Restriktita + bookmarks: Libromarki + conversations: Konversi + crypto: Intersequanta chifro + favourites: Favorati + filters: Filtrili + follow: Relataji + follows: Sequati + lists: Listi + media: Mediatachaji + mutes: Silencigati + notifications: Avizi + push: Pulsavizi + reports: Raportigi + search: Trovez + statuses: Posti + layouts: + admin: + nav: + applications: Apliki + oauth2_provider: Provizanto di OAuth2 + application: + title: Permiso di OAuth bezonesas scopes: + admin:read: lektez omna informi di la servilo + admin:read:accounts: lektez privata informo di omna konti + admin:read:reports: lektez privata informo di omna raportigo e raportigita konti + admin:write: modifikez omna informi di la servilo + admin:write:accounts: jerez konti + admin:write:reports: jerez raportigi + crypto: uzas intersequanta chifro follow: follow, block, unblock and unfollow accounts + push: ganez vua pulsavizi read: read your account's data + read:accounts: videz kontinformo + read:blocks: videz restrikti + read:bookmarks: videz vua libromarki + read:favourites: videz vua favorati + read:filters: videz vua filtrili + read:follows: videz vua sequinti + read:lists: videz vua listi + read:mutes: videz vua silencigi + read:notifications: videz vua avizi + read:reports: videz vua rapotigi + read:search: trovez por vu + read:statuses: videz omna posti write: post on your behalf + write:accounts: modifikez vua porfilo + write:blocks: restriktez konti e domeni + write:bookmarks: libromarkez posti + write:conversations: silencigez e efacez konversi + write:favourites: favorata posti + write:filters: kreez filtrili + write:follows: sequez personi + write:lists: kreez listi + write:media: chargez medifaili + write:mutes: silencigez personi e konversi + write:notifications: efacez vua avizi + write:reports: raportigez altra omni + write:statuses: publikigez posti diff --git a/config/locales/doorkeeper.ja.yml b/config/locales/doorkeeper.ja.yml index 8f99abcb1..30c48f0dc 100644 --- a/config/locales/doorkeeper.ja.yml +++ b/config/locales/doorkeeper.ja.yml @@ -60,7 +60,7 @@ ja: error: title: エラーが発生しました new: - prompt_html: "%{client_name} があなたのアカウントにアクセスする許可を求めています。心当たりが無い場合はアクセス許可しないでください。" + prompt_html: "%{client_name}があなたのアカウントにアクセスする許可を求めています。心当たりが無い場合はアクセス許可しないでください。" review_permissions: アクセス許可を確認 title: 認証が必要です show: @@ -71,7 +71,7 @@ ja: confirmations: revoke: 本当に取り消しますか? index: - authorized_at: "%{date} に承認されました" + authorized_at: "%{date}に承認されました" description_html: これらは、APIを使用してアカウントにアクセスできるアプリケーションです。ここに見覚えのないアプリケーションがある場合、またはアプリケーションの動作がおかしい場合、そのアクセスを取り消すことができます。 last_used_at: 最終使用日 %{date} never_used: 使用されていない @@ -95,7 +95,7 @@ ja: expired: アクセストークンの有効期限が切れています revoked: アクセストークンは取り消されています unknown: アクセストークンが無効です - resource_owner_authenticator_not_configured: Doorkeeper.configure.resource_owner_authenticator が設定されていないため、リソース所有者の検索に失敗しました。 + resource_owner_authenticator_not_configured: Doorkeeper.configure.resource_owner_authenticatorが設定されていないため、リソース所有者の検索に失敗しました。 server_error: 認証サーバーに予期せぬ例外が発生したため、リクエストを実行できなくなりました。 temporarily_unavailable: 現在、認証サーバーに一時的な過負荷が掛かっているか、またはメンテナンス中のため、リクエストを処理できません。 unauthorized_client: クライアントはこのメゾットで要求を実行する権限がありません。 diff --git a/config/locales/el.yml b/config/locales/el.yml index 2d475c518..71b07a24d 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -608,6 +608,9 @@ el: review: Κατάσταση έγκρισης updated_msg: Οι ρυθμίσεις των ετικετών ενημερώθηκαν επιτυχώς title: Διαχείριση + trends: + only_allowed: Μόνο επιτρεπόμενα + trending: Δημοφιλή warning_presets: add_new: Πρόσθεση νέου delete: Διαγραφή diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml new file mode 100644 index 000000000..fc7fc9edf --- /dev/null +++ b/config/locales/en-GB.yml @@ -0,0 +1,12 @@ +--- +en-GB: + errors: + '400': The request you submitted was invalid or malformed. + '403': You don't have permission to view this page. + '404': The page you are looking for isn't here. + '406': This page is not available in the requested format. + '410': The page you were looking for doesn't exist here anymore. + '422': + '429': Too many requests + '500': + '503': The page could not be served due to a temporary server failure. diff --git a/config/locales/es.yml b/config/locales/es.yml index 3a369f38e..8988ddadc 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -802,6 +802,7 @@ es: other: Compartido por %{count} personas durante la última semana title: Enlaces en tendencia usage_comparison: Compartido %{today} veces hoy, comparado con %{yesterday} ayer + only_allowed: Sólo permitido pending_review: Revisión pendiente preview_card_providers: allowed: Los enlaces de este medio pueden ser tendencia @@ -843,6 +844,7 @@ es: one: Usada por una persona durante la última semana other: Usada por %{count} personas durante la última semana title: Tendencias + trending: En tendencia warning_presets: add_new: Añadir nuevo delete: Borrar diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 7b8d3a581..63fce2af6 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -802,6 +802,7 @@ fr: other: Partagé par %{count} personnes au cours de la dernière semaine title: Liens tendances usage_comparison: Partagé %{today} fois aujourd'hui, comparé à %{yesterday} hier + only_allowed: Seuls autorisés pending_review: En attente de révision preview_card_providers: allowed: Les liens de cet éditeur peuvent être tendance @@ -843,6 +844,7 @@ fr: one: Utilisé par %{count} personne au cours de la dernière semaine other: Utilisé par %{count} personnes au cours de la dernière semaine title: Tendances + trending: Tendances warning_presets: add_new: Ajouter un nouveau delete: Supprimer diff --git a/config/locales/gd.yml b/config/locales/gd.yml index 074ca49ba..f46ba4f8f 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -17,7 +17,7 @@ gd: contact_missing: Cha deach a shuidheachadh contact_unavailable: Chan eil seo iomchaidh continue_to_web: Lean air adhart dhan aplacaid-lìn - discover_users: Lorg cleachdaichean + discover_users: Rùraich cleachdaichean documentation: Docamaideadh federation_hint_html: Le cunntas air %{instance}, ’s urrainn dhut leantainn air daoine air frithealaiche Mastodon sam bith is a bharrachd. get_apps: Feuch aplacaid mobile @@ -40,7 +40,7 @@ gd: other: post two: phost status_count_before: A dh’fhoillsich - tagline: Lean air caraidean ’s lorg feadhainn ùra + tagline: Lean air caraidean ’s rùraich feadhainn ùra terms: Teirmichean na seirbheise unavailable_content: Frithealaichean fo mhaorsainneachd unavailable_content_description: @@ -598,7 +598,7 @@ gd: relays: add_new: Cuir ath-sheachadan ùr ris delete: Sguab às - description_html: "’S e frithealaiche eadar-mheadhanach a th’ ann an ath-sheachadan co-nasgaidh a nì iomlaid air grunnan mòra de phostaichean poblach eadar na frithealaichean a dh’fho-sgrìobhas ’s a dh’fhoillsicheas dha. ’S urrainn dha cuideachadh a thoirt do dh’fhrithealaichean beaga is meadhanach mòr ach an lorg iad susbaint sa cho-shaoghal agus às an aonais, bhiodh aig cleachdaichean ionadail leantainn air daoine eile air frithealaichean cèine a làimh." + description_html: "’S e frithealaiche eadar-mheadhanach a th’ ann an ath-sheachadan co-nasgaidh a nì iomlaid air grunnan mòra de phostaichean poblach eadar na frithealaichean a dh’fho-sgrìobhas ’s a dh’fhoillsicheas dha. ’S urrainn dha cuideachadh a thoirt do dh’fhrithealaichean beaga is meadhanach mòr ach an rùraich iad susbaint sa cho-shaoghal agus às an aonais, bhiodh aig cleachdaichean ionadail leantainn air daoine eile air frithealaichean cèine a làimh." disable: Cuir à comas disabled: Chaidh a chur à comas enable: Cuir an comas @@ -714,12 +714,12 @@ gd: title: Dealbh suaichnein peers_api_enabled: desc_html: Ainmean àrainne air an do thachair am frithealaiche seo sa cho-shaoghal - title: Foillsich liosta nam frithealaichean a chaidh a lorg san API + title: Foillsich liosta nam frithealaichean a chaidh a rùrachadh san API preview_sensitive_media: desc_html: Ro-sheallaidh ceanglaichean dealbhag fhiù ’s ma chaidh comharradh gu bheil am meadhan frionasach title: Seall meadhanan frionasach ann an ro-sheallaidhean OpenGraph profile_directory: - desc_html: Suidhich gun gabh cleachdaichean a lorg + desc_html: Suidhich gun gabh cleachdaichean a rùrachadh title: Cuir eòlaire nam pròifil an comas registrations: closed_message: @@ -845,7 +845,7 @@ gd: description_html: Seo na postaichean air a bheil am frithealaiche agad eòlach ’s a tha ’gan co-roinneadh is ’nan annsachd gu tric aig an àm seo. Faodaidh iad a bhith ’nan cuideachadh dhan luchd-cleachdaidh ùr no a thill ach an lorg iad daoine airson leantainn orra. Cha dèid postaichean a shealltainn gu poblach gus an gabh thu ris an ùghdar agus gus an aontaich an t-ùghdar gun dèid an cunntas aca a mholadh do dhaoine eile. ’S urrainn dhut postaichean àraidh a cheadachadh no a dhiùltadh cuideachd. disallow: Na ceadaich am post disallow_account: Na ceadaich an t-ùghdar - not_discoverable: Cha do chuir an t-ùghdar roimhe gun gabh a lorg + not_discoverable: Cha do chuir an t-ùghdar roimhe gun gabh a rùrachadh shared_by: few: Chaidh a cho-roinneadh no ’na annsachd %{friendly_count} tursan one: Chaidh a cho-roinneadh no ’na annsachd %{friendly_count} turas @@ -930,7 +930,7 @@ gd: advanced_web_interface_hint: 'Ma tha thu airson leud gu lèir na sgrìn agad a chleachdadh, leigidh an eadar-aghaidh-lìn adhartach leat gun rèitich thu mòran cholbhan eadar-dhealaichte ach am faic thu na thogras tu de dh’fhiosrachadh aig an aon àm: Dachaigh, brathan, loidhne-ama cho-naisgte, na thogras tu de liostaichean is tagaichean hais.' animations_and_accessibility: Beòthachaidhean agus so-ruigsinneachd confirmation_dialogs: Còmhraidhean dearbhaidh - discovery: Lorg + discovery: Rùrachadh localization: body: Tha Mastodon ’ga eadar-theangachadh le saor-thoilich. guide_link: https://crowdin.com/project/mastodon @@ -1056,7 +1056,7 @@ gd: username_unavailable: Cha bhi an t-ainm-cleachdaiche agad ri fhaighinn fhathast directories: directory: Eòlaire nam pròifil - explanation: Lorg cleachdaichean stèidhichte air an ùidhean + explanation: Rùraich cleachdaichean stèidhichte air an ùidhean explore_mastodon: Rùraich %{title} disputes: strikes: @@ -1627,7 +1627,7 @@ gd: disable: Chan urrainn dhut an cunntas agad a chleachdadh tuilleadh ach mairidh a’ phròifil ’s an dàta eile agad. Faodaidh tu lethbhreac-glèidhidh dhen dàta agad iarraidh, roghainnean a’ chunntais atharrachadh no an cunntas agad a sguabadh às. mark_statuses_as_sensitive: Chuir maoir %{instance} comharra na frionasachd ri cuid dhe na postaichean agad. Is ciall dha seo gum feumar gnogag a thoirt air na meadhanan sna postaichean mus faicear ro-shealladh. ’S urrainn dhut fhèin comharra a chur gu bheil meadhan frionasach nuair a sgrìobhas tu post san à ri teachd. sensitive: O seo a-mach, thèid comharra na frionasachd a chur ri faidhle meadhain sam bith a luchdaicheas tu suas agus thèid am falach air cùlaibh rabhaidh a ghabhas briogadh air. - silence: "’S urrainn dhut an cunntas agad a chleachdadh fhathast ach chan fhaic ach na daoine a tha a’ leantainn ort mu thràth na postaichean agad air an fhrithealaiche seo agus dh’fhaoidte gun dèid d’ às-dhùnadh o iomadh gleus luirg. Gidheadh, faodaidh càch leantainn ort a làimh fhathast." + silence: "’S urrainn dhut an cunntas agad a chleachdadh fhathast ach chan fhaic ach na daoine a tha a’ leantainn ort mu thràth na postaichean agad air an fhrithealaiche seo agus dh’fhaoidte gun dèid d’ às-dhùnadh o iomadh gleus rùrachaidh. Gidheadh, faodaidh càch leantainn ort a làimh fhathast." suspend: Chan urrainn dhut an cunntas agad a chleachdadh tuilleadh agus chan fhaigh thu grèim air a’ phròifil no air an dàta eile agad. ’S urrainn dhut clàradh a-steach fhathast airson lethbhreac-glèidhidh dhen dàta agad iarraidh mur dèid an dàta a thoirt air falbh an ceann 30 latha gu slàn ach cumaidh sinn cuid dhen dàta bhunasach ach nach seachain thu an cur à rèim. reason: 'Adhbhar:' statuses: 'Iomradh air postaichean:' diff --git a/config/locales/gl.yml b/config/locales/gl.yml index c85f89b40..a183c6436 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -802,6 +802,7 @@ gl: other: Compartido por %{count} persoas na última semana title: Ligazóns en voga usage_comparison: Compartido %{today} veces hoxe, comparado con %{yesterday} onte + only_allowed: Só as permitidas pending_review: Revisión pendente preview_card_providers: allowed: As ligazóns desta orixe poden estar en voga @@ -843,6 +844,7 @@ gl: one: Utilizado por unha persoa na última semana other: Utilizado por %{count} persoas na última semana title: Tendencias + trending: Tendencias warning_presets: add_new: Engadir novo delete: Eliminar diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 73a63b3de..0a1fd439c 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -804,6 +804,7 @@ hu: other: "%{count} ember osztotta meg a múlt héten" title: Felkapott hivatkozások usage_comparison: "%{today} alkalommal lett ma megosztva, a tegnapi %{yesterday} alkalomhoz képest" + only_allowed: Csak engedélyezett pending_review: Áttekintésre vár preview_card_providers: allowed: A közzétevő hivatkozásai felkapottak lehetnek @@ -845,6 +846,7 @@ hu: one: Egy ember használta a múlt héten other: "%{count} ember használta a múlt héten" title: Trendek + trending: Felkapott warning_presets: add_new: Új hozzáadása delete: Törlés diff --git a/config/locales/hy.yml b/config/locales/hy.yml index 4c10773cb..b12349596 100644 --- a/config/locales/hy.yml +++ b/config/locales/hy.yml @@ -8,7 +8,7 @@ hy: active_footnote: Ամսեկան ակտիւ օգտատէրեր (MAU) administered_by: Ադմինիստրատոր՝ api: API - apps: Բջջային հավելվածներ + apps: Բջջային յաւելուածներ apps_platforms: Մաստադոնը հասանելի է iOS, Android եւ այլ տարբեր հենքերում browse_directory: Պրպտիր օգտատէրերի շտեմարանը եւ գտիր հետաքրքիր մարդկանց browse_local_posts: Տես այս հանգոյցի հանրային գրառումների հոսքը @@ -18,8 +18,8 @@ hy: contact_unavailable: Ոչինչ չկա discover_users: Գտնել օգտատերներ documentation: Փաստաթղթեր - federation_hint_html: "«%{instance}»-ում հաշիւ բացելով դուք կը կարողանաք հետեւել մարդկանց Մաստադոնի ցանկացած հանգոյցից և ոչ միայն։" - get_apps: Փորձեք բջջային հավելվածը + federation_hint_html: "«%{instance}»-ում հաշիւ բացելով դու կը կարողանաս հետեւել մարդկանց Մաստոդոնի ցանկացած հանգոյցից և ոչ միայն։" + get_apps: Փորձէք բջջային յաւելուածը hosted_on: Մաստոդոնը տեղակայուած է %{domain}ում instance_actor_flash: "Այս հաշիւ վիրտուալ դերասան է, օգտագործուում է սպասարկիչը, այլ ոչ անհատ օգտատիրոջը ներկայացնելու, համար։ Օգտագործուում է ֆեդերացիայի նպատակով, ու չպէտք է արգելափակուի, եթէ չէք ցանկանում արգելափակել ողջ հանգոյցը, որի դէպքում պէտք է օգտագործէք տիրոյթի արգելափակումը։ \n" learn_more: Իմանալ ավելին @@ -30,9 +30,9 @@ hy: server_stats: Սերվերի վիճակը․ source_code: Ելատեքստ status_count_after: - one: ստատուս + one: գրառում other: ստատուս - status_count_before: Ովքեր գրել են՝ + status_count_before: Որոնք արել են՝ tagline: Հետեւիր ընկերներիդ եւ գտիր նորերին terms: Ծառայութեան պայմանները unavailable_content: Մոդերացուող սպասարկիչներ @@ -47,7 +47,7 @@ hy: suspended_title: Կասեցուած սպասարկիչներ unavailable_content_html: Մաստոդոնն ընդհանրապէս թոյլատրում է տեսնել բովանդակութիւնը եւ շփուել այլ դաշնեզերքի այլ հանգոյցների հետ։ Սրանք բացառութիւններն են, որոնք կիրառուել են հէնց այս հանգոյցի համար։ user_count_after: - one: օգտատեր + one: օգտատէր other: օգտատերեր user_count_before: Այստեղ են what_is_mastodon: Ի՞նչ է Մաստոդոնը @@ -57,9 +57,9 @@ hy: featured_tags_hint: Դու կարող ես ցուցադրել յատուկ պիտակներ, որոնք կը ցուցադրուեն այստեղ։ follow: Հետևել followers: - one: Հետևորդ + one: Հետեւորդ other: Հետևորդներ - following: Հետևում եք + following: Հետեւած instance_actor_flash: Այս հաշիւը վիրտուալ դերասան է, որը ներկայացնում է հանգոյցը, եւ ոչ որեւէ անհատ օգտատիրոջ։ Այն օգտագործուում է ֆեդերացիայի նպատակներով եւ չպէտք է կասեցուի։ joined: Միացել են %{date} last_active: վերջին այցը @@ -310,9 +310,12 @@ hy: updated_msg: Էմոջին թարմացուեց upload: Վերբեռնել dashboard: + active_users: ակտիւ օգտատէրեր + new_users: նոր օգտուողներ software: Ծրագրային ապահովում space: Տարածքի օգտագործում title: Գործիքների վահանակ + website: Կայք domain_allows: add_new: Թոյլատրել ֆեդերացիա տիրոյթի հետ created_msg: Տիրոյթը յաջողութեամբ թոյլատրուեց ֆեդերացուելու @@ -348,6 +351,7 @@ hy: follow_recommendations: language: Լեզուի համար status: Կարգավիճակ + title: Խորհուրդ ենք տալիս հետեւել instances: back_to_all: Բոլորը back_to_limited: Սահամանփակ @@ -403,6 +407,8 @@ hy: save_and_enable: Պահպանել եւ միացնել status: Կարգավիճակ title: Վերահեռարձակիչներ + report_notes: + today_at: Այսօր ժամը %{time}-ին reports: account: notes: @@ -415,8 +421,10 @@ hy: comment: none: Ոչ մի created_at: Բողոքարկուած + delete_and_resolve: Ջնջեք գրառումը mark_as_resolved: Նշել որպէս լուծուած mark_as_unresolved: Նշել որպէս չլուծուած + no_one_assigned: Ոչ ոք notes: create: Ավելացնել նշում delete: Ջնջել @@ -430,6 +438,7 @@ hy: unassign: Չնշանակել unresolved: Չլուծուած updated_at: Թարմացուած + view_profile: Նայել անձնական էջը rules: add_new: Աւելացնել կանոն delete: Ջնջել @@ -488,6 +497,8 @@ hy: destroyed_msg: Կայքի վերբեռնումը բարեյաջող ջնջուեց statuses: back_to_account: Վերադառնալ անձնական էջ + batch: + report: Բողոքել deleted: Ջնջված է media: title: Մեդիա @@ -496,12 +507,33 @@ hy: tags: review: Վերանայել գրառումը title: Ադմինիստարցիա + trends: + allow: Թոյլատրել + approved: Հաստատուած + disallow: Արգելուած + preview_card_providers: + title: Հրապարակողներ + rejected: Մերժուած + statuses: + disallow: Արգելել գրառումը + disallow_account: Արգելել հեղինակին + title: Թրենդային գրառումներ + tags: + listable: Կարող է առաջարկուել + not_listable: Չի կարող առաջարկուել + not_usable: Չի կարող օգտագործուել + title: Թրենդային պիտակներ + usable: Կարող է օգտագործուել + title: Թրենդներ warning_presets: add_new: Ավելացնել նորը delete: Ջնջել admin_mailer: new_report: subject: Նոր բողոք %{instance}ի համար(#%{id}) + new_trends: + new_trending_statuses: + title: Թրենդային գրառումներ appearance: advanced_web_interface: Սյունակավոր ինտերֆեյս advanced_web_interface_hint: Եթէ ցանկանում ես օգտագործել էկրանիդ ամբողջ լայնքը, ապա ընդլայնուած վեբ ինտերֆեյսով հնարաւոր է էկրանը բաժանել սիւնակների՝ զուգահեռ տեսնելու տարբեր տիպի ինֆորմացիա՝ տեղական հոսքը, ծանուցումները, ֆեդերացված հոսքը, և ցանկացած թվի ցուցակ ու հեշթեգ։ @@ -548,6 +580,7 @@ hy: account_status: Հաշուի կարգավիճակ pending: Դիմումը պէտք է քննուի մեր անձնակազմի կողմից, ինչը կարող է մի փոքր ժամանակ խլել։ Դիմումի հաստատուելու դէպքում, կտեղեկացնենք նամակով։ trouble_logging_in: Մուտք գործելու խնդիրնե՞ր կան։ + use_security_key: Օգտագործել անվտանգութեան բանալի authorize_follow: already_following: Դու արդէն հետեւում ես այս հաշուին already_requested: Դու արդէն ուղարկել ես հետեւմանն յայտ այս հաշուին @@ -652,8 +685,10 @@ hy: changes_saved_msg: Փոփոխութիւնները յաջող պահուած են copy: Պատճենել delete: Ջնջել + none: Ոչ մի order_by: Դասաւորել ըստ save_changes: Պահպանել փոփոխութիւնները + today: այսօր imports: errors: over_rows_processing_limit: տողերի քանակը աւելին է քան %{count}-ը @@ -704,6 +739,7 @@ hy: past_migrations: Նախոդ միգրացիաները proceed_with_move: Տեղափոխել հետեւորդներին redirecting_to: Քո հաշիւը վերահասցեաորում է %{acct}-ին + set_redirect: Կարգաւորել վերահասցէաւորումը warning: followers: Այս քայլով քո բոլոր հետեւորդներին այս հաշուից կը տեղափոխես դէպի նորը only_redirect_html: Որպէս այլընտրանք, կարող ես ուղղակի վերահասցէաւորել քո հաշիւը @@ -711,8 +747,12 @@ hy: moderation: title: Մոդերացիա notification_mailer: + admin: + sign_up: + subject: "%{name}-ը գրանցուած է" digest: action: Դիտել բոլոր ծանուցումները + mention: "%{name} նշել է քեզ՝" title: Երբ բացակայ էիր... favourite: body: Քո գրառումը հաւանել է %{name}-ը։ @@ -737,6 +777,8 @@ hy: title: Նոր տարածում status: subject: "%{name}-ը հենց նոր գրառում արեց" + update: + subject: "%{name}-ը փոխել է գրառումը" notifications: email_events_hint: Ընտրիր իրադարձութիւնները, որոնց վերաբերեալ ցանկանում ես ստանալ ծանուցումներ․ other_settings: Ծանուցումների այլ կարգաւորումներ @@ -868,6 +910,7 @@ hy: one: "%{count} վիդեո" other: "%{count} վիդեո" content_warning: Նախազգուշացում։ %{warning} + edited_at_html: Խմբագրուած՝ %{date} open_in_web: Բացել վէբում over_character_limit: "%{max} նիշի սահմանը գերազանցուած է" poll: @@ -900,7 +943,7 @@ hy: '2629746': 1 ամիս '31556952': 1 տարի '5259492': 2 ամիս - '604800': 1 week + '604800': 1 շաբաթ '63113904': 2 տարի '7889238': 3 ամիս stream_entries: @@ -1000,6 +1043,7 @@ hy: formats: default: "%b %d, %Y, %H:%M" month: "%b %Y" + time: "%H:%M" two_factor_authentication: add: Ավելացնել disable: Անջատել @@ -1010,16 +1054,22 @@ hy: generate_recovery_codes: Ստեղծել վերականգնման կոդեր lost_recovery_codes: Վերականգնման կոդերը հնարաւորութիւն են տալիս մուտք գործել հաշիւ՝ հեռախօսի կորստի դէպքում։ Եթէ կորցրել ես վերականգնման կոդերը, այստեղ կարող ես ստեղծել նորերը։ Նախկին վերականգման կոդերը կչեղարկվեն։ methods: Երկքայլ նոյնականացում տարբերակներ - otp: Նոյնականացման հավելված + otp: Նոյնականացման յաւելուած recovery_codes: Վերականգնման կոդեր recovery_codes_regenerated: Վերականգման կոդերը հաջողութեամբ ստեղծուել են webauthn: Անվտանգութեան բանալիներ user_mailer: + suspicious_sign_in: + title: Նոր մուտք warning: + categories: + spam: Սպամ + reason: Պատճառ՝ subject: disable: Քո %{acct} հաշիւը սառեցուել է none: Նախազգուշացուեմ %{acct}-ին title: + delete_statuses: Գրառումները ջնջուած են disable: Հաշիւը սառեցուած է none: Զգուշացում silence: Հաշիւը սահմանափակուած է @@ -1030,9 +1080,9 @@ hy: final_step: 'Սկսիր գրել։ Անգամ առանց հետեւորդների քո հանրային գրառումներ կարող են երևալ ուրիշների մօտ, օրինակ՝ տեղական հոսում կամ հեշթեգերում։ Թէ ցանկանաս, կարող ես յայտնել քո մասին օգտագործելով #եսնորեկեմ հեշթեգը։' review_preferences_action: Փոփոխել կարգաւորումները subject: Բարի գալուստ Մաստոդոն - tip_federated_timeline: Դաշնային հոսքում երևում է ամբողջ Մաստոդոնի ցանցը։ Բայց այն ներառում է միայն այն օգտատերերին որոնց բաժանորդագրուած են ձեր հարևաններ, այդ պատճառով այն կարող է լինել ոչ ամբողջական։ + tip_federated_timeline: Դաշնային հոսքում երևում է ամբողջ Մաստոդոնի ցանցը։ Բայց այն ներառում է միայն այն օգտատէրերին որոնց բաժանորդագրուած են ձեր հարևաններ, այդ պատճառով այն կարող է լինել ոչ ամբողջական։ tip_following: Դու հետեւում էս քո հանգոյցի ադմին(ներ)ին լռելայն։ Այլ հետաքրքիր անձանց գտնելու համար՝ թերթիր տեղական և դաշնային հոսքերը։ - tip_local_timeline: Տեղական հոսքում երևում են %{instance} հանգոյցի օգտատերի գրառումները։ Նրանք քո հանգոյցի հարևաններն են։ + tip_local_timeline: Տեղական հոսքում երևում են %{instance} հանգոյցի մարդկանց գրառումները։ Նրանք քո հանգոյցի հարևաններն են։ tips: Հուշումներ title: Բարի գալուստ նաւամատոյց, %{name} users: diff --git a/config/locales/id.yml b/config/locales/id.yml index b63807705..d6d00581e 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -785,6 +785,7 @@ id: other: Dibagikan oleh %{count} orang selama seminggu terakhir title: Tautan sedang tren usage_comparison: Dibagikan %{today} kali hari ini, dibandingkan %{yesterday} kemarin + only_allowed: Yang diizinkan saja pending_review: Tinjauan tertunda preview_card_providers: allowed: Tautan dari penerbit ini dapat menjadi tren @@ -824,6 +825,7 @@ id: used_by_over_week: other: Digunakan oleh %{count} orang selama seminggu terakhir title: Tren + trending: Sedang tren warning_presets: add_new: Tambah baru delete: Hapus diff --git a/config/locales/io.yml b/config/locales/io.yml index f2fa8ce07..b6f7937c3 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -45,6 +45,9 @@ io: title: Extended site description site_title: Site title title: Site Settings + trends: + only_allowed: Nur permisato + trending: Tendenco application_mailer: settings: 'Chanjar la retpost-mesajala preferi: %{link}' view: 'Vidar:' diff --git a/config/locales/is.yml b/config/locales/is.yml index 052d652bf..3e3ca0ed5 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -802,6 +802,7 @@ is: other: Deilt af %{count} aðilum síðustu vikuna title: Vinsælir tenglar usage_comparison: Deilt %{today} sinnum í dag, samanborið við %{yesterday} í gær + only_allowed: Aðeins leyfð pending_review: Bíður eftir yfirlestri preview_card_providers: allowed: Tenglar frá þessum útgefanda geta verið með í vinsældum @@ -843,6 +844,7 @@ is: one: Notað af einum aðila síðustu vikuna other: Notað af %{count} aðilum síðustu vikuna title: Tilhneiging + trending: Vinsælt warning_presets: add_new: Bæta við nýju delete: Eyða diff --git a/config/locales/it.yml b/config/locales/it.yml index 3ab203c39..c0e802f84 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -27,7 +27,7 @@ it: È utilizzato per scopi di federazione e non dovrebbe essere bloccato a meno che non si voglia bloccare l'intera istanza: in questo caso si dovrebbe utilizzare un blocco di dominio. learn_more: Scopri altro logged_in_as_html: Sei correntemente connesso come %{username}. - logout_before_registering: Hai giù acceduto. + logout_before_registering: Hai già effettuato l'accesso. privacy_policy: Politica della privacy rules: Regole del server rules_html: 'Di seguito è riportato un riassunto delle regole che devi seguire se vuoi avere un account su questo server di Mastodon:' diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 87d6d33e9..13b1b149f 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -2,7 +2,7 @@ ja: about: about_hashtag_html: ハッシュタグ #%{hashtag} の公開投稿です。どこか連合に参加しているSNS上にアカウントを作れば、会話に参加することができます。 - about_mastodon_html: Mastodon は、オープンなウェブプロトコルを採用した、自由でオープンソースなソーシャルネットワークです。電子メールのような分散型の仕組みを採っています。 + about_mastodon_html: Mastodonは、オープンなウェブプロトコルを採用した、自由でオープンソースなソーシャルネットワークです。電子メールのような分散型の仕組みを採っています。 about_this: 詳細情報 active_count_after: 人がアクティブ active_footnote: 月間アクティブユーザー数 (MAU) @@ -19,12 +19,12 @@ ja: continue_to_web: アプリで続ける discover_users: ユーザーを見つける documentation: ドキュメント - federation_hint_html: "%{instance} のアカウントひとつでどんなMastodon互換サーバーのユーザーでもフォローできるでしょう。" + federation_hint_html: "%{instance}のアカウントひとつでどんなMastodon互換サーバーのユーザーでもフォローできるでしょう。" get_apps: モバイルアプリを試す hosted_on: Mastodon hosted on %{domain} instance_actor_flash: "このアカウントはサーバーそのものを示す仮想的なもので、特定のユーザーを示すものではありません。これはサーバーの連合のために使用されます。サーバー全体をブロックするときは、このアカウントをブロックせずに、ドメインブロックを使用してください。 \n" learn_more: もっと詳しく - logged_in_as_html: "%{username} としてログインしています。" + logged_in_as_html: "%{username}としてログインしています。" logout_before_registering: 既にログインしています。 privacy_policy: プライバシーポリシー rules: サーバーのルール @@ -47,13 +47,13 @@ ja: silenced_title: サイレンス済みのサーバー suspended: 'これらのサーバーからのデータは処理されず、保存や変換もされません。該当するユーザーとの交流もできません:' suspended_title: 停止済みのサーバー - unavailable_content_html: 通常 Mastodon では連合先のどんなサーバーのユーザーとでもやりとりできます。ただし次のサーバーには例外が設定されています。 + unavailable_content_html: 通常Mastodonでは連合先のどんなサーバーのユーザーとでもやりとりできます。ただし次のサーバーには例外が設定されています。 user_count_after: other: 人 user_count_before: ユーザー数 - what_is_mastodon: Mastodon とは? + what_is_mastodon: Mastodonとは? accounts: - choices_html: "%{name} によるおすすめ:" + choices_html: "%{name}によるおすすめ:" endorsements_hint: あなたがフォローしている中でおすすめしたい人をここで紹介できます。 featured_tags_hint: 特定のハッシュタグをここに表示できます。 follow: フォロー @@ -61,15 +61,15 @@ ja: other: フォロワー following: フォロー中 instance_actor_flash: このアカウントは、個々のユーザーではなく、サーバー自体を表すために使用される仮想のユーザーです。 連合のために使用されるため、停止しないで下さい。 - joined: "%{date} に登録" + joined: "%{date}に登録" last_active: 最後の活動 - link_verified_on: このリンクの所有権は %{date} に確認されました + link_verified_on: このリンクの所有権は%{date}に確認されました media: メディア - moved_html: "%{name} さんは引っ越しました %{new_profile_link}:" + moved_html: "%{name}さんは%{new_profile_link}に引っ越しました:" network_hidden: この情報は利用できません nothing_here: 何もありません! - people_followed_by: "%{name} さんがフォロー中のアカウント" - people_who_follow: "%{name} さんをフォロー中のアカウント" + people_followed_by: "%{name}さんがフォロー中のアカウント" + people_who_follow: "%{name}さんをフォロー中のアカウント" pin_errors: following: おすすめしたい人はあなたが既にフォローしている必要があります posts: @@ -94,7 +94,7 @@ ja: accounts: add_email_domain_block: メールドメインブロックに追加 approve: 承認 - approved_msg: "%{username} の登録申請を承認しました" + approved_msg: "%{username}さんの登録申請を承認しました" are_you_sure: 本当に実行しますか? avatar: アイコン by_domain: ドメイン @@ -104,7 +104,7 @@ ja: label: メールアドレスを変更 new_email: 新しいメールアドレス submit: メールアドレスの変更 - title: "%{username} さんのメールアドレスを変更" + title: "%{username}さんのメールアドレスを変更" confirm: 確認 confirmed: 確認済み confirming: 確認中 @@ -112,10 +112,10 @@ ja: delete: データを削除する deleted: 削除済み demote: 降格 - destroyed_msg: "%{username} のデータは完全に削除されるよう登録されました" + destroyed_msg: "%{username}さんのデータは完全に削除されるよう登録されました" disable: 無効化 disable_sign_in_token_auth: メールトークン認証を無効にする - disable_two_factor_authentication: 二段階認証を無効にする + disable_two_factor_authentication: 二要素認証を無効にする disabled: 無効 display_name: 表示名 domain: ドメイン @@ -125,7 +125,7 @@ ja: enable: 有効化 enable_sign_in_token_auth: メールトークン認証を有効にする enabled: 有効 - enabled_msg: "%{username} の無効化を解除しました" + enabled_msg: "%{username}の無効化を解除しました" followers: フォロワー数 follows: フォロー数 header: ヘッダー @@ -166,13 +166,13 @@ ja: public: パブリック push_subscription_expires: PuSH購読期限 redownload: プロフィールを更新 - redownloaded_msg: "%{username} のプロフィールを正常に更新しました" + redownloaded_msg: "%{username}のプロフィールを正常に更新しました" reject: 却下 - rejected_msg: "%{username} の登録申請を却下しました" + rejected_msg: "%{username}さんの登録申請を却下しました" remove_avatar: アイコンを削除 remove_header: ヘッダーを削除 - removed_avatar_msg: "%{username} のアバター画像を削除しました" - removed_header_msg: "%{username} のヘッダー画像を削除しました" + removed_avatar_msg: "%{username}さんのアバター画像を削除しました" + removed_header_msg: "%{username}さんのヘッダー画像を削除しました" resend_confirmation: already_confirmed: メールアドレスは確認済みです send: 確認メールを再送 @@ -188,10 +188,10 @@ ja: user: ユーザー search: 検索 search_same_email_domain: 同じドメインのメールアドレスを使用しているユーザー - search_same_ip: 同じ IP のユーザーを検索 + search_same_ip: 同じIPのユーザーを検索 security_measures: only_password: パスワードのみ - password_and_2fa: パスワードと 2FA + password_and_2fa: パスワードと二要素認証 sensitive: 閲覧注意 sensitized: 閲覧注意としてマーク済み shared_inbox_url: Shared inbox URL @@ -206,17 +206,17 @@ ja: suspend: サスペンド suspended: 停止済み suspension_irreversible: このアカウントのデータは削除され元に戻せなくなります。後日アカウントの凍結を解除することはできますがデータは元に戻せません。 - suspension_reversible_hint_html: アカウントは停止されており、データは %{date} に完全に削除されます。それまではアカウントを元に戻すことができます。今すぐ完全に削除したい場合は以下から行うことができます。 + suspension_reversible_hint_html: アカウントは停止されており、データは%{date}に完全に削除されます。それまではアカウントを元に戻すことができます。今すぐ完全に削除したい場合は以下から行うことができます。 title: アカウント unblock_email: メールアドレスのブロックを解除 - unblocked_email_msg: "%{username} のメールアドレスのブロックを解除しました" + unblocked_email_msg: "%{username}さんのメールアドレスのブロックを解除しました" unconfirmed_email: 確認待ちのメールアドレス undo_sensitized: 閲覧注意から戻す undo_silenced: サイレンスから戻す undo_suspension: 停止から戻す - unsilenced_msg: "%{username} のサイレンス解除に成功しました" + unsilenced_msg: "%{username}さんのサイレンス解除に成功しました" unsubscribe: 購読の解除 - unsuspended_msg: "%{username} の無効化を解除しました" + unsuspended_msg: "%{username}さんの無効化を解除しました" username: ユーザー名 view_domain: ドメインの概要を表示 warn: 警告 @@ -247,12 +247,12 @@ ja: destroy_ip_block: IPルールを削除 destroy_status: 投稿を削除 destroy_unavailable_domain: 配送できないドメインを削除 - disable_2fa_user: 二段階認証を無効化 + disable_2fa_user: 二要素認証を無効化 disable_custom_emoji: カスタム絵文字を無効化 - disable_sign_in_token_auth_user: ユーザーのE-mail トークン認証を無効にする + disable_sign_in_token_auth_user: ユーザーのメールトークン認証を無効にする disable_user: ユーザーを無効化 enable_custom_emoji: カスタム絵文字を有効化 - enable_sign_in_token_auth_user: E-mail トークンのユーザー認証を有効にする + enable_sign_in_token_auth_user: メールトークンのユーザー認証を有効にする enable_user: ユーザーを有効化 memorialize_account: 追悼アカウント化 promote_user: ユーザーを昇格 @@ -275,56 +275,56 @@ ja: update_domain_block: ドメインブロックを更新 update_status: 投稿を更新 actions: - approve_appeal_html: "%{name} さんが %{target} からの抗議を承認しました" - approve_user_html: "%{target} から登録された %{name} さんを承認しました" - assigned_to_self_report_html: "%{name} さんが通報 %{target} を自身の担当に割り当てました" - change_email_user_html: "%{name} さんが %{target} さんのメールアドレスを変更しました" - confirm_user_html: "%{name} さんが %{target} さんのメールアドレスを確認済みにしました" - create_account_warning_html: "%{name} さんが %{target} さんに警告メールを送信しました" - create_announcement_html: "%{name} さんが新しいお知らせ %{target} を作成しました" - create_custom_emoji_html: "%{name} さんがカスタム絵文字 %{target} を追加しました" - create_domain_allow_html: "%{name} さんが %{target} の連合を許可しました" - create_domain_block_html: "%{name} さんがドメイン %{target} をブロックしました" - create_email_domain_block_html: "%{name} さんが %{target} をメールドメインブロックに追加しました" - create_ip_block_html: "%{name} さんが IP %{target} のルールを作成しました" - create_unavailable_domain_html: "%{name} がドメイン %{target} への配送を停止しました" - demote_user_html: "%{name} さんが %{target} さんを降格しました" - destroy_announcement_html: "%{name} さんがお知らせ %{target} を削除しました" - destroy_custom_emoji_html: "%{name} さんがカスタム絵文字 %{target} を削除しました" - destroy_domain_allow_html: "%{name} さんが %{target} の連合許可を外しました" - destroy_domain_block_html: "%{name} さんがドメイン %{target} のブロックを外しました" - destroy_email_domain_block_html: "%{name} さんが %{target} をメールドメインブロックから外しました" - destroy_instance_html: "%{name} さんが %{target} をドメインブロックしました" - destroy_ip_block_html: "%{name} さんが IP %{target} のルールを削除しました" - destroy_status_html: "%{name} さんが %{target} さんの投稿を削除しました" - destroy_unavailable_domain_html: "%{name} がドメイン %{target} への配送を再開しました" - disable_2fa_user_html: "%{name} さんが %{target} さんの二段階認証を無効化しました" - disable_custom_emoji_html: "%{name} さんがカスタム絵文字 %{target} を無効化しました" - disable_sign_in_token_auth_user_html: "%{name} が %{target} のメールトークン認証を無効にしました" - disable_user_html: "%{name} さんが %{target} さんのログインを無効化しました" - enable_custom_emoji_html: "%{name} さんがカスタム絵文字 %{target} を有効化しました" - enable_sign_in_token_auth_user_html: "%{name} が %{target} のメールトークン認証を有効にしました" - enable_user_html: "%{name} さんが %{target} さんのログインを有効化しました" - memorialize_account_html: "%{name} さんが %{target} さんを追悼アカウントページに登録しました" - promote_user_html: "%{name} さんが %{target} さんを昇格しました" - reject_appeal_html: "%{name} さんが %{target} からの抗議を却下しました" - reject_user_html: "%{target} から登録された %{name} さんを拒否しました" - remove_avatar_user_html: "%{name} さんが %{target} さんのアイコンを削除しました" - reopen_report_html: "%{name} さんが通報 %{target} を未解決に戻しました" - reset_password_user_html: "%{name} さんが %{target} さんのパスワードをリセットしました" - resolve_report_html: "%{name} さんが通報 %{target} を解決済みにしました" - sensitive_account_html: "%{name} さんが %{target} さんのメディアを閲覧注意にマークしました" - silence_account_html: "%{name} さんが %{target} さんをサイレンスにしました" - suspend_account_html: "%{name} さんが %{target} さんを停止しました" - unassigned_report_html: "%{name} さんが通報 %{target} の担当を外しました" - unblock_email_account_html: "%{name} さんが %{target} のドメインブロックを解除しました" - unsensitive_account_html: "%{name} さんが %{target} さんのメディアの閲覧注意を解除しました" - unsilence_account_html: "%{name} さんが %{target} さんのサイレンスを解除しました" - unsuspend_account_html: "%{name} さんが %{target} さんの停止を解除しました" - update_announcement_html: "%{name} さんがお知らせ %{target} を更新しました" - update_custom_emoji_html: "%{name} さんがカスタム絵文字 %{target} を更新しました" - update_domain_block_html: "%{name} が %{target} のドメインブロックを更新しました" - update_status_html: "%{name} さんが %{target} さんの投稿を更新しました" + approve_appeal_html: "%{name}さんが%{target}さんからの抗議を承認しました" + approve_user_html: "%{target}から登録された%{name}さんを承認しました" + assigned_to_self_report_html: "%{name}さんが通報 %{target}を自身の担当に割り当てました" + change_email_user_html: "%{name}さんが%{target}さんのメールアドレスを変更しました" + confirm_user_html: "%{name}さんが%{target}さんのメールアドレスを確認済みにしました" + create_account_warning_html: "%{name}さんが%{target}さんに警告メールを送信しました" + create_announcement_html: "%{name}さんが新しいお知らせ %{target}を作成しました" + create_custom_emoji_html: "%{name}さんがカスタム絵文字 %{target}を追加しました" + create_domain_allow_html: "%{name}さんが%{target}の連合を許可しました" + create_domain_block_html: "%{name}さんがドメイン %{target}をブロックしました" + create_email_domain_block_html: "%{name}さんが%{target}をメールドメインブロックに追加しました" + create_ip_block_html: "%{name}さんがIP %{target}のルールを作成しました" + create_unavailable_domain_html: "%{name}がドメイン %{target}への配送を停止しました" + demote_user_html: "%{name}さんが%{target}さんを降格しました" + destroy_announcement_html: "%{name}さんがお知らせ %{target}を削除しました" + destroy_custom_emoji_html: "%{name}さんがカスタム絵文字 %{target}を削除しました" + destroy_domain_allow_html: "%{name}さんが%{target}の連合許可を外しました" + destroy_domain_block_html: "%{name}さんがドメイン %{target}のブロックを外しました" + destroy_email_domain_block_html: "%{name}さんが%{target}をメールドメインブロックから外しました" + destroy_instance_html: "%{name}さんがドメイン %{target}をブロックしました" + destroy_ip_block_html: "%{name}さんが IP %{target}のルールを削除しました" + destroy_status_html: "%{name}さんが%{target}さんの投稿を削除しました" + destroy_unavailable_domain_html: "%{name}がドメイン %{target}への配送を再開しました" + disable_2fa_user_html: "%{name}さんが%{target}さんの二要素認証を無効化しました" + disable_custom_emoji_html: "%{name}さんがカスタム絵文字 %{target}を無効化しました" + disable_sign_in_token_auth_user_html: "%{name}さんが%{target}さんのメールトークン認証を無効にしました" + disable_user_html: "%{name}さんが%{target}さんのログインを無効化しました" + enable_custom_emoji_html: "%{name}さんがカスタム絵文字 %{target}を有効化しました" + enable_sign_in_token_auth_user_html: "%{name}さんが%{target}さんのメールトークン認証を有効にしました" + enable_user_html: "%{name}さんが%{target}さんのログインを有効化しました" + memorialize_account_html: "%{name}さんが%{target}さんを追悼アカウントページに登録しました" + promote_user_html: "%{name}さんが%{target}さんを昇格しました" + reject_appeal_html: "%{name}さんが%{target}からの抗議を却下しました" + reject_user_html: "%{target}から登録された%{name}さんを拒否しました" + remove_avatar_user_html: "%{name}さんが%{target}さんのアイコンを削除しました" + reopen_report_html: "%{name}さんが通報 %{target}を未解決に戻しました" + reset_password_user_html: "%{name}さんが%{target}さんのパスワードをリセットしました" + resolve_report_html: "%{name}さんが通報 %{target}を解決済みにしました" + sensitive_account_html: "%{name}さんが%{target}さんのメディアを閲覧注意にマークしました" + silence_account_html: "%{name}さんが%{target}さんをサイレンスにしました" + suspend_account_html: "%{name}さんが%{target}さんを停止しました" + unassigned_report_html: "%{name}さんが通報 %{target}の担当を外しました" + unblock_email_account_html: "%{name}さんがドメイン %{target}のブロックを解除しました" + unsensitive_account_html: "%{name}さんが%{target}さんのメディアの閲覧注意を解除しました" + unsilence_account_html: "%{name}さんが%{target}さんのサイレンスを解除しました" + unsuspend_account_html: "%{name}さんが%{target}さんの停止を解除しました" + update_announcement_html: "%{name}さんがお知らせ %{target}を更新しました" + update_custom_emoji_html: "%{name}さんがカスタム絵文字 %{target}を更新しました" + update_domain_block_html: "%{name}さんが%{target}のドメインブロックを更新しました" + update_status_html: "%{name}さんが%{target}さんの投稿を更新しました" deleted_status: "(削除済)" empty: ログが見つかりませんでした filter_by_action: アクションでフィルター @@ -341,7 +341,7 @@ ja: title: お知らせを追加 publish: 公開する published_msg: お知らせを掲載しました - scheduled_for: "%{time} に予約" + scheduled_for: "%{time}に予約" scheduled_msg: お知らせの掲載を予約しました title: お知らせ unpublish: 非公開にする @@ -387,13 +387,13 @@ ja: new_users: 新規ユーザー opened_reports: 新規通報 pending_appeals_html: - other: 保留中の抗議 %{count} 件 + other: 保留中の抗議 %{count}件 pending_reports_html: - other: 保留中の通報 %{count} 件 + other: 保留中の通報 %{count}件 pending_tags_html: - other: 保留中のハッシュタグ %{count} 件 + other: 保留中のハッシュタグ %{count}件 pending_users_html: - other: 保留中のユーザー %{count} 件 + other: 保留中のユーザー %{count}件 resolved_reports: 解決済みの通報 software: ソフトウェア sources: サインアップソース @@ -455,7 +455,7 @@ ja: title: 新規メールドメインブロック no_email_domain_block_selected: 何も選択されていないためメールドメインブロックを変更しませんでした resolved_dns_records_hint_html: ドメイン名はDNSでMXドメインに名前解決され、最終的にメールを受け付ける役割を担います。目に見えるドメイン名が異なっていても、同じMXドメインを使用するメールアドレスからのアカウント登録がブロックされます。主要なメールプロバイダーをブロックしないように注意して下さい。 - resolved_through_html: "%{domain} を通して解決しました" + resolved_through_html: "%{domain}を通して解決しました" title: メールドメインブロック follow_recommendations: description_html: "おすすめフォローは、新規ユーザーが興味のあるコンテンツをすばやく見つけるのに役立ちます。ユーザーが他のユーザーとの交流を十分にしていない場合、パーソナライズされたおすすめフォローを生成する代わりに、これらのアカウントが表示されます。最近のエンゲージメントが最も高いアカウントと、特定の言語のローカルフォロワー数が最も多いアカウントを組み合わせて、毎日再計算されます。" @@ -467,7 +467,7 @@ ja: unsuppress: おすすめフォローを復元 instances: availability: - failure_threshold_reached: "%{date} に失敗のしきい値に達しました。" + failure_threshold_reached: "%{date}に失敗のしきい値に達しました。" failures_recorded: other: "%{count}日間試行に失敗しました。" no_failures_recorded: 失敗は記録されていません。 @@ -505,8 +505,8 @@ ja: unavailable: 配送不可 delivery_available: 配送可能 delivery_error_days: 配送エラー発生日 - delivery_error_hint: "%{count} 日間配送ができない場合は、自動的に配送不可としてマークされます。" - destroyed_msg: "%{domain} からのデータは、すぐに削除されるように、キューに追加されました。" + delivery_error_hint: "%{count}日間配送ができない場合は、自動的に配送不可としてマークされます。" + destroyed_msg: "%{domain}からのデータは、すぐに削除されるように、キューに追加されました。" empty: ドメインが見つかりませんでした。 known_accounts: other: 既知のアカウント数 %{count} @@ -538,7 +538,7 @@ ja: delete: 削除 expires_in: '1209600': 2週間 - '15778476': 6ヶ月 + '15778476': 半年 '2629746': 1ヶ月 '31556952': 1年 '86400': 1日 @@ -572,7 +572,7 @@ ja: reports: account: notes: - other: "%{count} 件のメモ" + other: "%{count}件のメモ" action_log: 監査ログ action_taken_by: 通報処理者 actions: @@ -582,7 +582,7 @@ ja: resolve_description_html: 報告されたアカウントに対していかなる措置も取られず、ストライクも記録されず、報告は終了します。 silence_description_html: 既にフォローしている人、または自分で参照した人にのみ表示されるため、プロフィールが届く範囲が大きく制限されます。いつでも元に戻すことができます。 suspend_description_html: プロフィールとすべてのコンテンツは、最終的に削除されるまでアクセスできなくなります。アカウントとのやり取りは不可能です。30日以内に取り消し可能です。 - actions_description_html: このレポートを解決するために取るアクションを決定します。 報告されたアカウントに対して懲罰的な措置を取った場合、メール通知が送信されます スパム カテゴリが選択されている場合を除きます。 + actions_description_html: このレポートを解決するために取るアクションを決定します。 報告されたアカウントに対して懲罰的な措置を取った場合、メール通知が送信されますがスパムカテゴリが選択されている場合を除きます。 add_to_report: 通報にさらに追加 are_you_sure: 本当に実行しますか? assign_to_self: 担当になる @@ -592,11 +592,11 @@ ja: category_description_html: 選択した理由は通報されたアカウントへの連絡時に引用されます comment: none: なし - comment_description_html: "%{name} からの詳細情報:" + comment_description_html: "%{name}からの詳細情報:" created_at: 通報日時 delete_and_resolve: 投稿を削除 forwarded: 転送済み - forwarded_to: "%{domain} に転送されました" + forwarded_to: "%{domain}に転送されました" mark_as_resolved: 解決済みとしてマーク mark_as_sensitive: 閲覧注意にする mark_as_unresolved: 未解決に戻す @@ -609,9 +609,9 @@ ja: placeholder: どのような措置が取られたか、または関連する更新を記述してください… title: メモ notes_description_html: 他のモデレーターと将来の自分にメモを残してください - remote_user_placeholder: "%{instance} からのリモートユーザー" + remote_user_placeholder: "%{instance}からのリモートユーザー" reopen: 未解決に戻す - report: 通報#%{id} + report: '通報 #%{id}' reported_account: 報告対象アカウント reported_by: 報告者 resolved: 解決済み @@ -703,7 +703,7 @@ ja: desc_html: あなたのサーバーにおける行動規範やルール、ガイドライン、そのほかの記述をする際に最適な場所です。HTMLタグが使えます title: カスタム詳細説明 site_short_description: - desc_html: サイドバーと meta タグに表示されます。Mastodon とは何か、そしてこのサーバーの特別な何かを1段落で記述してください。空欄の場合、サーバーの説明が使用されます。 + desc_html: サイドバーとmetaタグに表示されます。Mastodonとは何か、そしてこのサーバーの特別な何かを1段落で記述してください。空欄の場合、サーバーの説明が使用されます。 title: 短いサーバーの説明 site_terms: desc_html: 独自のプライバシーポリシーや利用規約、その他の法的根拠を記述できます。HTMLタグが使えます @@ -713,7 +713,7 @@ ja: desc_html: OpenGraphとAPIによるプレビューに使用されます。サイズは1200×630px推奨です title: サーバーのサムネイル timeline_preview: - desc_html: ランディングページに公開タイムラインへのリンクを表示し、認証なしでの公開タイムラインへの API アクセスを許可します + desc_html: ランディングページに公開タイムラインへのリンクを表示し、認証なしでの公開タイムラインへのAPIアクセスを許可します title: 公開タイムラインへの未認証のアクセスを許可する title: サイト設定 trendable_by_default: @@ -739,13 +739,13 @@ ja: with_media: メディアあり strikes: actions: - delete_statuses: "%{name} さんが %{target} さんの投稿を削除しました" + delete_statuses: "%{name}さんが%{target}さんの投稿を削除しました" disable: "%{name}さんが%{target}さんを凍結しました" - mark_statuses_as_sensitive: "%{name} さんが %{target} さんの投稿を閲覧注意としてマークしました" - none: "%{name} が %{target} に警告を送信しました" - sensitive: "%{name} さんが %{target} さんのアカウントを閲覧注意としてマークしました" + mark_statuses_as_sensitive: "%{name}さんが%{target}さんの投稿を閲覧注意としてマークしました" + none: "%{name}さんが%{target}さんに警告を送信しました" + sensitive: "%{name}さんが%{target}さんのアカウントを閲覧注意としてマークしました" silence: "%{name}さんが%{target}さんを制限しました" - suspend: "%{name} さんが %{target} さんのアカウントを停止しました" + suspend: "%{name}さんが%{target}さんのアカウントを停止しました" appeal_approved: 抗議済み appeal_pending: 保留中の抗議 system_checks: @@ -755,12 +755,12 @@ ja: message_html: Elasticsearchに接続できませんでした。Elasticsearchが実行されていることを確認するか、全文検索を無効にしてください。 elasticsearch_version_check: message_html: '互換性のない Elasticsearch バージョン: %{value}' - version_comparison: Elasticsearch %{running_version} が実行されていますが、 %{required_version} が必要です + version_comparison: Elasticsearch %{running_version}が実行されていますが、%{required_version}が必要です rules_check: action: サーバーのルールを管理 message_html: サーバーのルールを定義していません。 sidekiq_process_check: - message_html: "%{value} キューに対応するSidekiq プロセスがありません。Sidekiq の設定を確認してください。" + message_html: "%{value}キューに対応するSidekiqプロセスがありません。Sidekiqの設定を確認してください。" tags: review: 審査状況 updated_msg: ハッシュタグ設定が更新されました @@ -778,7 +778,8 @@ ja: shared_by_over_week: other: 週間%{count}人に共有されました title: トレンドリンク - usage_comparison: 今日は %{today} 回、昨日は %{yesterday} 回共有されました + usage_comparison: 今日は%{today}回、昨日は%{yesterday}回共有されました + only_allowed: 許可済み pending_review: 保留中 preview_card_providers: allowed: この発行者からのリンクを許可 @@ -805,15 +806,16 @@ ja: not_listable: おすすめに表示しない not_trendable: トレンドに表示しない not_usable: 使用を禁止 - peaked_on_and_decaying: "%{date} 以降、しばらく使われていません" + peaked_on_and_decaying: "%{date}以降、しばらく使われていません" title: トレンドタグ trendable: トレンドに表示する - trending_rank: '人気: %{rank} 位' + trending_rank: '人気: %{rank}位' usable: 使用を許可 - usage_comparison: 今日は %{today} 回、昨日は %{yesterday} 回使用されました。 + usage_comparison: 今日は%{today}回、昨日は%{yesterday}回使用されました。 used_by_over_week: other: 週間%{count}人に使用されました title: トレンド + trending: トレンド warning_presets: add_new: 追加 delete: 削除 @@ -831,14 +833,14 @@ ja: silence: アカウントを制限する suspend: アカウントを停止する next_steps: モデレーションの決定を取り消すために申し立てを承認するか、無視することができます。 - subject: "%{instance} で %{username} からモデレーションへの申し立てが届きました。" + subject: "%{instance}で%{username}さんからモデレーションへの申し立てが届きました。" new_pending_account: body: 新しいアカウントの詳細は以下の通りです。この申請を承認または却下することができます。 - subject: "%{instance} で新しいアカウント (%{username}) が承認待ちです" + subject: "%{instance}で新しいアカウント (%{username}) が承認待ちです" new_report: - body: "%{reporter} が %{target} を通報しました" - body_remote: "%{domain} の誰かが %{target} を通報しました" - subject: "%{instance} の新しい通報 (#%{id})" + body: "%{reporter}さんが%{target}さんを通報しました" + body_remote: "%{domain}の誰かが%{target}さんを通報しました" + subject: "%{instance}の新しい通報 (#%{id})" new_trends: body: 以下の項目は、公開する前に審査が必要です。 new_trending_links: @@ -850,7 +852,7 @@ ja: new_trending_tags: no_approved_tags: 承認されたトレンドハッシュタグはありません。 title: トレンドハッシュタグ - subject: "%{instance} で新しいトレンド が審査待ちです" + subject: "%{instance}で新しいトレンドが審査待ちです" aliases: add_new: エイリアスを作成 created_msg: エイリアスを作成しました。これで以前のアカウントから引っ越しを開始できます。 @@ -859,7 +861,7 @@ ja: hint_html: 他のアカウントからこのアカウントにフォロワーを引き継いで引っ越したい場合、ここでエイリアスを作成しておく必要があります。エイリアス自体は無害で、取り消すことができます。引っ越しは以前のアカウント側から開始する必要があります。 remove: エイリアスを削除 appearance: - advanced_web_interface: 上級者向け UI + advanced_web_interface: 上級者向けUI advanced_web_interface_hint: ディスプレイを幅いっぱいまで活用したい場合、上級者向け UI をおすすめします。ホーム、通知、連合タイムライン、更にはリストやハッシュタグなど、様々な異なるカラムから望む限りの情報を一度に受け取れるような設定が可能になります。 animations_and_accessibility: アニメーションとアクセシビリティー confirmation_dialogs: 確認ダイアログ @@ -872,7 +874,7 @@ ja: toot_layout: 投稿のレイアウト application_mailer: notification_preferences: メール設定の変更 - salutation: "%{name} さん" + salutation: "%{name}さん" settings: 'メール設定の変更: %{link}' view: 'リンク:' view_profile: プロフィールを表示 @@ -888,19 +890,19 @@ ja: auth: apply_for_account: 登録を申請する change_password: パスワード - checkbox_agreement_html: サーバーのルールプライバシーポリシー に同意します - checkbox_agreement_without_rules_html: 利用規約 に同意します + checkbox_agreement_html: サーバーのルールプライバシーポリシーに同意します + checkbox_agreement_without_rules_html: 利用規約に同意します delete_account: アカウントの削除 - delete_account_html: アカウントを削除したい場合、こちら から手続きが行えます。削除する前に、確認画面があります。 + delete_account_html: アカウントを削除したい場合、こちらから手続きが行えます。削除する前に、確認画面があります。 description: - prefix_invited_by_user: "@%{name} があなたをこの Mastodon サーバーに招待しました" - prefix_sign_up: 今すぐ Mastodon を始めよう! - suffix: アカウントがあれば、どんな Mastodon 互換サーバーのユーザーでもフォローしたりメッセージをやり取りできるようになります! + prefix_invited_by_user: "@%{name}さんがあなたをこのMastodonサーバーに招待しました" + prefix_sign_up: 今すぐMastodonを始めよう! + suffix: アカウントがあれば、どんなMastodon互換サーバーのユーザーでもフォローしたりメッセージをやり取りできるようになります! didnt_get_confirmation: 確認メールを受信できませんか? dont_have_your_security_key: セキュリティキーを持っていませんか? forgot_password: パスワードをお忘れですか? invalid_reset_password_token: パスワードリセットトークンが正しくないか期限切れです。もう一度リクエストしてください。 - link_to_otp: 携帯電話から二段階認証コードを入力するか、リカバリーコードを入力してください + link_to_otp: 携帯電話から二要素認証コードを入力するか、リカバリーコードを入力してください link_to_webauth: セキュリティキーを使用する log_in_with: 次の方法でログイン login: ログイン @@ -912,21 +914,21 @@ ja: cas: CAS saml: SAML register: 登録する - registration_closed: "%{instance} は現在、新規登録停止中です" + registration_closed: "%{instance}は現在、新規登録停止中です" resend_confirmation: 確認メールを再送する reset_password: パスワードを再発行 security: セキュリティ set_new_password: 新しいパスワード setup: email_below_hint_html: 下記のメールアドレスが間違っている場合、ここで変更することで新たに確認メールを受信できます。 - email_settings_hint_html: 確認用のメールを %{email} に送信しました。メールアドレスが正しくない場合、以下より変更することができます。 + email_settings_hint_html: 確認用のメールを%{email}に送信しました。メールアドレスが正しくない場合、以下より変更することができます。 title: セットアップ status: account_status: アカウントの状態 confirming: メールアドレスの確認が完了するのを待っています。 functional: アカウントは完全に機能しています。 pending: あなたの申請は現在サーバー管理者による審査待ちです。これにはしばらくかかります。申請が承認されるとメールが届きます。 - redirecting_to: アカウントは %{acct} に引っ越し設定されているため非アクティブになっています。 + redirecting_to: アカウントは%{acct}に引っ越し設定されているため非アクティブになっています。 view_strikes: 過去のストライクを表示 too_fast: フォームの送信が速すぎます。もう一度やり直してください。 trouble_logging_in: ログインできませんか? @@ -941,17 +943,17 @@ ja: post_follow: close: またはこのウィンドウを閉じます。 return: ユーザーのプロフィールを見る - web: Web を開く - title: "%{acct} をフォロー" + web: Webを開く + title: "%{acct}さんをフォロー" challenge: confirm: 続ける - hint_html: 以後 1 時間はパスワードの再入力を求めません + hint_html: 以後1時間はパスワードの再入力を求めません invalid_password: パスワードが間違っています prompt: 続行するにはパスワードを入力してください crypto: errors: - invalid_key: 有効な Ed25519 または Curve25519 キーではありません - invalid_signature: 有効な Ed25519 署名ではありません + invalid_key: 有効なEd25519またはCurve25519キーではありません + invalid_signature: 有効なEd25519署名ではありません date: formats: default: "%Y年%m月%d日" @@ -981,7 +983,7 @@ ja: caches: 他のサーバーにコンテンツのキャッシュがずっと残る場合があります data_removal: あなたの投稿やその他のデータはこのサーバーから完全に削除されます email_change_html: アカウントを削除しなくてもメールアドレスを変更できます - email_contact_html: それでも届かない場合、%{email} までメールで問い合わせてください + email_contact_html: それでも届かない場合、%{email}までメールで問い合わせてください email_reconfirmation_html: 確認のメールが届かない場合、もう一度申請できます。 irreversible: 削除操作の撤回やアカウントの復活はできません more_details_html: 詳しくはプライバシーポリシーをご覧ください。 @@ -1003,7 +1005,7 @@ ja: submit: 抗議を送信 associated_report: 関連する通報 created_at: 日時 - description_html: これらは、%{instance} のスタッフがあなたのアカウントに対して行った措置や、あなたに送られた警告です。 + description_html: これらは、%{instance}のスタッフがあなたのアカウントに対して行った措置や、あなたに送られた警告です。 recipient: 送信元 status: '投稿 #%{id}' status_removed: 既に削除されています @@ -1038,7 +1040,7 @@ ja: noscript_html: Mastodonのウェブアプリケーションを利用する場合はJavaScriptを有効にしてください。またはあなたのプラットフォーム向けのMastodonネイティブアプリを探すことができます。 existing_username_validator: not_found: そのようなユーザー名はローカルに見つかりませんでした - not_found_multiple: "%{usernames} は見つかりませんでした" + not_found_multiple: "%{usernames}さんは見つかりませんでした" exports: archive_takeout: date: 日時 @@ -1058,7 +1060,7 @@ ja: add_new: 追加 errors: limit: 注目のハッシュタグの上限に達しました - hint_html: "注目のハッシュタグとは?プロフィールページに目立つ形で表示され、そのハッシュタグのついたあなたの公開投稿だけを抽出して閲覧できるようにします。クリエイティブな仕事や長期的なプロジェクトを追うのに優れた機能です。" + hint_html: "注目のハッシュタグとは? プロフィールページに目立つ形で表示され、そのハッシュタグのついたあなたの公開投稿だけを抽出して閲覧できるようにします。クリエイティブな仕事や長期的なプロジェクトを追うのに優れた機能です。" filters: contexts: account: プロフィール @@ -1092,12 +1094,12 @@ ja: save_changes: 変更を保存 today: 今日 validation_errors: - other: エラーが発生しました! 以下の%{count}個のエラーを確認してください + other: エラーが発生しました! 以下の%{count}件のエラーを確認してください html_validator: invalid_markup: '無効なHTMLマークアップが含まれています: %{error}' imports: errors: - over_rows_processing_limit: "%{count} 行以上" + over_rows_processing_limit: "%{count}行以上" modes: merge: 統合 merge_long: 現在のレコードを保持したまま新しいものを追加します @@ -1117,12 +1119,12 @@ ja: delete: 無効化 expired: 期限切れ expires_in: - '1800': 30 分 - '21600': 6 時間 - '3600': 1 時間 - '43200': 12 時間 - '604800': 1 週間 - '86400': 1 日 + '1800': 30分 + '21600': 6時間 + '3600': 1時間 + '43200': 12時間 + '604800': 1週間 + '86400': 1日 expires_in_prompt: 無期限 generate: 招待リンクを作成 invited_by: '次の人に招待されました:' @@ -1139,14 +1141,14 @@ ja: limit: リストの上限に達しました login_activities: authentication_methods: - otp: 2要素認証 + otp: 二要素認証アプリ password: パスワード - sign_in_token: 電子メールセキュリティコード + sign_in_token: メールセキュリティコード webauthn: セキュリティキー - description_html: 認識できないアクティビティが表示された場合は、パスワードの変更と2要素認証の有効化を検討してください。 + description_html: 認識できないアクティビティが表示された場合は、パスワードの変更と二要素認証の有効化を検討してください。 empty: 利用可能な認証履歴がありません - failed_sign_in_html: "%{ip} (%{browser}) からの %{method} を利用したサインインに失敗しました。" - successful_sign_in_html: "%{ip} (%{browser}) からの %{method} を利用したサインインに成功しました" + failed_sign_in_html: "%{ip} (%{browser}) から%{method}を利用したサインインに失敗しました。" + successful_sign_in_html: "%{ip} (%{browser}) から%{method}を利用したサインインに成功しました" title: 認証履歴 media_attachments: validations: @@ -1167,13 +1169,13 @@ ja: followers_count: 引き継がれるフォロワー incoming_migrations: 別のアカウントから引っ越す incoming_migrations_html: 別のアカウントからこのアカウントに引っ越すには、まずアカウントエイリアスを作成する必要があります。 - moved_msg: アカウントは %{acct} に引っ越し設定されており、フォロワーは引っ越し先に引き継がれています。 + moved_msg: アカウントは%{acct}に引っ越し設定されており、フォロワーは引っ越し先に引き継がれています。 not_redirecting: アカウントは現在引っ越し設定されていません。 - on_cooldown: あなたは最近アカウントを引っ越しました。この機能は %{count} 日後に再度利用できるようになります。 + on_cooldown: あなたは最近アカウントを引っ越しました。この機能は%{count}日後に再度利用できるようになります。 past_migrations: 過去の引っ越し proceed_with_move: フォロワーを引き継ぐ - redirected_msg: あなたのアカウントは現在 %{acct} にリダイレクトされています。 - redirecting_to: アカウントは %{acct} に引っ越し設定されています。 + redirected_msg: あなたのアカウントは現在%{acct}にリダイレクトされています。 + redirecting_to: アカウントは%{acct}に引っ越し設定されています。 set_redirect: 引っ越しを設定 warning: backreference_required: まずは引っ越し先のアカウントでこのアカウントに対しエイリアスを作成する必要があります @@ -1187,50 +1189,50 @@ ja: moderation: title: モデレーション move_handler: - carry_blocks_over_text: このユーザーは、あなたがブロックしていた %{acct} から引っ越しました。 - carry_mutes_over_text: このユーザーは、あなたがミュートしていた %{acct} から引っ越しました。 - copy_account_note_text: このユーザーは %{acct} から引っ越しました。これは以前のメモです。 + carry_blocks_over_text: このユーザーは、あなたがブロックしていた%{acct}から引っ越しました。 + carry_mutes_over_text: このユーザーは、あなたがミュートしていた%{acct}から引っ越しました。 + copy_account_note_text: このユーザーは%{acct}から引っ越しました。これは以前のメモです。 notification_mailer: admin: sign_up: - subject: "%{name} がサインアップしました" + subject: "%{name}さんがサインアップしました" digest: action: 全ての通知を表示 body: '最後のログイン(%{since})からの出来事:' - mention: "%{name} さんがあなたに返信しました:" + mention: "%{name}さんがあなたに返信しました:" new_followers_summary: - other: また、離れている間に%{count} 人の新たなフォロワーを獲得しました! + other: また、離れている間に%{count}人の新たなフォロワーを獲得しました! subject: - other: "前回の訪問から%{count} 件の新しい通知 🐘" + other: "前回の訪問から%{count}件の新しい通知 🐘" title: 不在の間に… favourite: - body: "%{name} さんにお気に入り登録された、あなたの投稿があります:" - subject: "%{name} さんにお気に入りに登録されました" + body: "%{name}さんにお気に入り登録された、あなたの投稿があります:" + subject: "%{name}さんにお気に入りに登録されました" title: 新たなお気に入り登録 follow: - body: "%{name} さんにフォローされています!" - subject: "%{name} さんにフォローされています" + body: "%{name}さんにフォローされています!" + subject: "%{name}さんにフォローされています" title: 新たなフォロワー follow_request: action: フォローリクエストの管理 - body: "%{name} さんがあなたにフォローをリクエストしました" - subject: "%{name} さんからのフォローリクエスト" + body: "%{name}さんがあなたにフォローをリクエストしました" + subject: "%{name}さんからのフォローリクエスト" title: 新たなフォローリクエスト mention: action: 返信 - body: "%{name} さんから返信がありました:" - subject: "%{name} さんに返信されました" + body: "%{name}さんから返信がありました:" + subject: "%{name}さんに返信されました" title: 新たな返信 poll: - subject: "%{name}  さんの投票が終了しました" + subject: "%{name} さんの投票が終了しました" reblog: - body: "%{name} さんにブーストされた、あなたの投稿があります:" - subject: "%{name} さんにブーストされました" + body: "%{name}さんにブーストされた、あなたの投稿があります:" + subject: "%{name}さんにブーストされました" title: 新たなブースト status: - subject: "%{name} さんが投稿しました" + subject: "%{name}さんが投稿しました" update: - subject: "%{name} さんが投稿を更新しました" + subject: "%{name}さんが投稿を更新しました" notifications: email_events: メールによる通知 email_events_hint: '受信する通知を選択:' @@ -1301,7 +1303,7 @@ ja: no_account_html: アカウントをお持ちではないですか?こちらからサインアップできます proceed: フォローする prompt: 'フォローしようとしています:' - reason_html: "なぜこの手順が必要でしょうか?%{instance}はあなたが登録されているサーバーではないかもしれないので、まずあなたのサーバーに転送する必要があります。" + reason_html: "なぜこの手順が必要でしょうか? %{instance}はあなたが登録されているサーバーではないかもしれないので、まずあなたのサーバーに転送する必要があります。" remote_interaction: favourite: proceed: お気に入り登録する @@ -1316,8 +1318,8 @@ ja: errors: invalid_rules: 有効なルールを参照していません scheduled_statuses: - over_daily_limit: その日予約できる投稿数 %{limit} を超えています - over_total_limit: 予約できる投稿数 %{limit} を超えています + over_daily_limit: その日予約できる投稿数 %{limit}を超えています + over_total_limit: 予約できる投稿数 %{limit}を超えています too_soon: より先の時間を指定してください sessions: activity: 最後のアクティビティ @@ -1341,7 +1343,7 @@ ja: uc_browser: UCBrowser weibo: Weibo current_session: 現在のセッション - description: "%{platform} 上の %{browser}" + description: "%{platform}上の%{browser}" explanation: あなたのMastodonアカウントに現在ログインしているウェブブラウザの一覧です。 ip: IP platforms: @@ -1367,7 +1369,7 @@ ja: aliases: アカウントエイリアス appearance: 外観 authorized_apps: 認証済みアプリ - back: Mastodon に戻る + back: Mastodonに戻る delete: アカウントの削除 development: 開発 edit_profile: プロフィールを編集 @@ -1382,18 +1384,18 @@ ja: relationships: フォロー・フォロワー statuses_cleanup: 投稿の自動削除 strikes: モデレーションストライク - two_factor_authentication: 二段階認証 + two_factor_authentication: 二要素認証 webauthn_authentication: セキュリティキー statuses: attached: audio: - other: "%{count} 本のオーディオ" + other: "%{count}本のオーディオ" description: '添付: %{attached}' image: - other: "%{count} 枚の画像" + other: "%{count}枚の画像" video: - other: "%{count} 本の動画" - boosted_from_html: "%{acct_link} からブースト" + other: "%{count}本の動画" + boosted_from_html: "%{acct_link}からブースト" content_warning: '閲覧注意: %{warning}' default_language: UIの表示言語 disallowed_hashtags: @@ -1402,7 +1404,7 @@ ja: errors: in_reply_not_found: あなたが返信しようとしている投稿は存在しないようです。 open_in_web: Webで開く - over_character_limit: 上限は %{max}文字までです + over_character_limit: 上限は%{max}文字です pin_errors: direct: 返信したユーザーのみに表示される投稿はピン留めできません limit: 固定できる投稿数の上限に達しました @@ -1410,7 +1412,7 @@ ja: reblog: ブーストを固定することはできません poll: total_people: - other: "%{count} 人" + other: "%{count}人" total_votes: other: "%{count}票" vote: 投票 @@ -1451,11 +1453,11 @@ ja: keep_self_fav_hint: 自分自身でお気に入りに登録した投稿を削除せずに残します min_age: '1209600': 2週間 - '15778476': 6ヶ月 + '15778476': 半年 '2629746': 1ヶ月 '31556952': 1年 '5259492': 2ヶ月 - '604800': 1 週間 + '604800': 1週間 '63113904': 2年 '7889238': 3ヶ月 min_age_label: 投稿を保持する期間 @@ -1497,7 +1499,7 @@ ja:

情報をどのように保護しますか?

-

私たちはあなたが入力・送信する際や自身の情報にアクセスする際に個人情報を安全に保つため、さまざまなセキュリティ上の対策を実施します。特にブラウザーセッションだけでなくアプリケーションとAPI間の通信もSSLによって保護されます。またパスワードは強力な不可逆アルゴリズムでハッシュ化されます。二段階認証を有効にし、アカウントへのアクセスをさらに安全にすることができます。

+

私たちはあなたが入力・送信する際や自身の情報にアクセスする際に個人情報を安全に保つため、さまざまなセキュリティ上の対策を実施します。特にブラウザーセッションだけでなくアプリケーションとAPI間の通信もSSLによって保護されます。またパスワードは強力な不可逆アルゴリズムでハッシュ化されます。二要素認証を有効にし、アカウントへのアクセスをさらに安全にすることができます。


@@ -1564,10 +1566,10 @@ ja: two_factor_authentication: add: 追加 disable: 無効化 - disabled_success: 二段階認証が無効になりました + disabled_success: 二要素認証が無効になりました edit: 編集 - enabled: 二段階認証は有効になっています - enabled_success: 二段階認証が有効になりました + enabled: 二要素認証は有効になっています + enabled_success: 二要素認証が有効になりました generate_recovery_codes: リカバリーコードを生成 lost_recovery_codes: リカバリーコードを使用すると携帯電話を紛失した場合でもアカウントにアクセスできるようになります。 リカバリーコードを紛失した場合もここで再生成することができますが、古いリカバリーコードは無効になります。 methods: 方式 @@ -1579,12 +1581,12 @@ ja: user_mailer: appeal_approved: action: アカウントへ - explanation: "%{strike_date} のストライクに対して、あなたが %{appeal_date} に行った申し立ては承認されました。アカウントは正常な状態に戻りました。" - subject: "%{date} の申し立てが承認されました" + explanation: "%{strike_date}のストライクに対して、あなたが%{appeal_date}に行った申し立ては承認されました。アカウントは正常な状態に戻りました。" + subject: "%{date}の申し立てが承認されました" title: 申し立てが承認されました。 appeal_rejected: - explanation: "%{strike_date} のストライクに対して、あなたが %{appeal_date} に行った申し立ては却下されました。" - subject: "%{date} の申し立てが拒否されました" + explanation: "%{strike_date}のストライクに対して、あなたが%{appeal_date}に行った申し立ては却下されました。" + subject: "%{date}の申し立てが拒否されました" title: 却下された抗議 backup_ready: explanation: Mastodonアカウントのアーカイブを受け付けました。今すぐダウンロードできます! @@ -1594,32 +1596,32 @@ ja: change_password: パスワードを変更する details: 'ログインの詳細は以下のとおりです:' explanation: 新しいIPアドレスからあなたのアカウントへのサインインが検出されました。 - further_actions_html: あなたがログインしていない場合は、すぐに %{action} し、アカウントを安全に保つために二段階認証を有効にすることをお勧めします。 + further_actions_html: あなたがログインしていない場合は、すぐに%{action}し、アカウントを安全に保つために二要素認証を有効にすることをお勧めします。 subject: 新しいIPアドレスからのアクセスがありました title: 新しいサインイン warning: appeal: 抗議を送信 - appeal_description: これが間違いだと思われる場合は、 %{instance} のスタッフに申し立てすることができます。 + appeal_description: これが間違いだと思われる場合は、%{instance}のスタッフに申し立てすることができます。 categories: spam: スパム violation: コンテンツは以下のコミュニティガイドラインに違反しています explanation: - delete_statuses: あなたの投稿のいくつかは、1つ以上のコミュニティガイドラインに違反していることが判明し、%{instance} のモデレータによって削除されました。 + delete_statuses: あなたの投稿のいくつかは、1つ以上のコミュニティガイドラインに違反していることが判明し、%{instance}のモデレータによって削除されました。 disable: アカウントは使用できませんが、プロフィールやその他のデータはそのまま残ります。 データのバックアップをリクエストしたり、アカウント設定を変更したり、アカウントを削除したりできます。 - mark_statuses_as_sensitive: あなたのいくつかの投稿は、 %{instance} のモデレータによって閲覧注意としてマークされています。これは、プレビューが表示される前にユーザが投稿内のメディアをタップする必要があることを意味します。あなたは将来投稿する際に自分自身でメディアを閲覧注意としてマークすることができます。 + mark_statuses_as_sensitive: あなたのいくつかの投稿は、%{instance}のモデレータによって閲覧注意としてマークされています。これは、プレビューが表示される前にユーザが投稿内のメディアをタップする必要があることを意味します。あなたは将来投稿する際に自分自身でメディアを閲覧注意としてマークすることができます。 sensitive: 今後、アップロードされたすべてのメディアファイルは閲覧注意としてマークされ、クリック解除式の警告で覆われるようになります。 silence: アカウントが制限されています。このサーバーでは既にフォローしている人だけがあなたの投稿を見ることができます。 様々な発見機能から除外されるかもしれません。他の人があなたを手動でフォローすることは可能です。 suspend: アカウントは使用できなくなり、プロフィールなどのデータにもアクセスできなくなります。約30日後にデータが完全に削除されるまでは、ログインしてデータのバックアップを要求することができますが、アカウントの停止回避を防ぐために一部の基本データを保持します。 reason: '理由:' statuses: '投稿:' subject: - delete_statuses: "%{acct} の投稿が削除されました" - disable: あなたのアカウント %{acct} は凍結されました - mark_statuses_as_sensitive: あなたの %{acct} の投稿は閲覧注意としてマークされました - none: "%{acct} に対する警告" - sensitive: あなたの %{acct} の投稿はこれから閲覧注意としてマークされます - silence: あなたのアカウント %{acct} はサイレンスにされました - suspend: あなたのアカウント %{acct} は停止されました + delete_statuses: "%{acct}さんの投稿が削除されました" + disable: あなたのアカウント %{acct}は凍結されました + mark_statuses_as_sensitive: あなたの%{acct}の投稿は閲覧注意としてマークされました + none: "%{acct}に対する警告" + sensitive: あなたの%{acct}の投稿はこれから閲覧注意としてマークされます + silence: あなたのアカウント %{acct}はサイレンスにされました + suspend: あなたのアカウント %{acct}は停止されました title: delete_statuses: 投稿が削除されました disable: アカウントが凍結されました @@ -1637,18 +1639,18 @@ ja: full_handle: あなたの正式なユーザーID full_handle_hint: 別のサーバーの友達とフォローやメッセージをやり取りする際には、これを伝えることになります。 review_preferences_action: 設定の変更 - review_preferences_step: 受け取りたいメールの種類や投稿のデフォルト公開範囲など、ユーザー設定を必ず済ませておきましょう。目が回らない自信があるなら、アニメーション GIF を自動再生する設定もご検討ください。 - subject: Mastodon へようこそ - tip_federated_timeline: 連合タイムラインは Mastodon ネットワークの流れを見られるものです。ただしあなたと同じサーバーの人がフォローしている人だけが含まれるので、それが全てではありません。 + review_preferences_step: 受け取りたいメールの種類や投稿のデフォルト公開範囲など、ユーザー設定を必ず済ませておきましょう。目が回らない自信があるなら、アニメーションGIFを自動再生する設定もご検討ください。 + subject: Mastodonへようこそ + tip_federated_timeline: 連合タイムラインはMastodonネットワークの流れを見られるものです。ただしあなたと同じサーバーの人がフォローしている人だけが含まれるので、それが全てではありません。 tip_following: 最初は、サーバーの管理者をフォローした状態になっています。もっと興味のある人たちを見つけるには、ローカルタイムラインと連合タイムラインを確認してみましょう。 - tip_local_timeline: ローカルタイムラインは %{instance} にいる人々の流れを見られるものです。彼らはあなたと同じサーバーにいる隣人のようなものです! - tip_mobile_webapp: お使いのモバイル端末で、ブラウザから Mastodon をホーム画面に追加できますか? もし追加できる場合、プッシュ通知の受け取りなど、まるで「普通の」アプリのような機能が楽しめます! + tip_local_timeline: ローカルタイムラインは%{instance}にいる人々の流れを見られるものです。彼らはあなたと同じサーバーにいる隣人のようなものです! + tip_mobile_webapp: お使いのモバイル端末で、ブラウザからMastodonをホーム画面に追加できますか? もし追加できる場合、プッシュ通知の受け取りなど、まるで「普通の」アプリのような機能が楽しめます! tips: 豆知識 - title: ようこそ、%{name}! + title: ようこそ、%{name}さん! users: - follow_limit_reached: あなたは現在 %{limit} 人以上フォローできません - invalid_otp_token: 二段階認証コードが間違っています - otp_lost_help_html: どちらも使用できない場合、%{email} に連絡を取ると解決できるかもしれません + follow_limit_reached: あなたは現在 %{limit}人以上フォローできません + invalid_otp_token: 二要素認証コードが間違っています + otp_lost_help_html: どちらも使用できない場合、%{email}に連絡を取ると解決できるかもしれません seamless_external_login: あなたは外部サービスを介してログインしているため、パスワードとメールアドレスの設定は利用できません。 signed_in_as: '下記でログイン中:' verification: @@ -1669,5 +1671,5 @@ ja: nickname_hint: セキュリティキーの名前を入力してください not_enabled: まだセキュリティキーを有効にしていません not_supported: このブラウザはセキュリティキーに対応していないようです - otp_required: セキュリティキーを使用するには、まず二段階認証を有効にしてください。 - registered_on: "%{date} に登録" + otp_required: セキュリティキーを使用するには、まず二要素認証を有効にしてください。 + registered_on: "%{date}に登録" diff --git a/config/locales/ko.yml b/config/locales/ko.yml index c24e40261..0c1576776 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -789,6 +789,7 @@ ko: other: 지난 주 동안 %{count} 명의 사람들이 공유했습니다 title: 유행하는 링크 usage_comparison: 오늘은 %{today}회 공유되었고, 어제는 %{yesterday}회 공유되었습니다 + only_allowed: 허용된 것만 pending_review: 심사 대기 preview_card_providers: allowed: 이 출처의 링크는 유행 목록에 실릴 수 있습니다 @@ -828,6 +829,7 @@ ko: used_by_over_week: other: 지난 주 동안 %{count} 명의 사람들이 사용했습니다 title: 유행 + trending: 유행중 warning_presets: add_new: 새로 추가 delete: 삭제 diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 3a2798f32..7a322a730 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -801,6 +801,7 @@ pl: disallow_provider: Nie zezwalaj na wydawcę title: Popularne linki usage_comparison: Udostępnione %{today} razy dzisiaj, w porównaniu z %{yesterday} wczoraj + only_allowed: Tylko dozwolone pending_review: Oczekuje na przegląd preview_card_providers: allowed: Linki od tego wydawcy mogą podlegać trendom @@ -835,7 +836,13 @@ pl: trending_rank: 'Popularne #%{rank}' usable: Może być użyty usage_comparison: Używane %{today} razy dzisiaj, w porównaniu z %{yesterday} wczoraj + used_by_over_week: + few: Użyte przez %{count} osoby w ciągu ostatniego tygodnia + many: Użyte przez %{count} osób w ciągu ostatniego tygodnia + one: Użyte przez jedną osobę w ciągu ostatniego tygodnia + other: Użyte przez %{count} osób w ciągu ostatniego tygodnia title: Na czasie + trending: Popularne warning_presets: add_new: Dodaj nowy delete: Usuń @@ -1235,6 +1242,11 @@ pl: many: "(%{count}) nowych osób Cię śledzi! Wspaniale!" one: Dodatkowo, w czasie nieobecności zaczęła śledzić Cię jedna osoba Gratulacje! other: Dodatkowo, zaczęło Cię śledzić %{count} nowych osób! Wspaniale! + subject: + few: "%{count} nowe powiadomienia od Twojej ostatniej wizyty 🐘" + many: "%{count} nowych powiadomień od Twojej ostatniej wizyty 🐘" + one: "1 nowe powiadomienie od Twojej ostatniej wizyty 🐘" + other: "%{count} nowych powiadomień od Twojej ostatniej wizyty 🐘" title: W trakcie Twojej nieobecności… favourite: body: 'Twój wpis został polubiony przez %{name}:' diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 7bded6f28..f196d525f 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -1672,15 +1672,15 @@ pt-PT: silence: Conta limitada suspend: Conta suspensa welcome: - edit_profile_action: Configura o perfil - edit_profile_step: Podes personalizar o teu perfil carregando uma imagem de perfil e de cabeçalho ou alterando o nome a exibir, entre outras opções. Se preferires rever os novos seguidores antes deles te poderem seguir, podes tornar a tua conta privada. - explanation: Aqui estão algumas dicas para começares - final_action: Começa a publicar - final_step: 'Começa a publicar! Mesmo sem seguidores, as tuas mensagens públicas podem ser vistas por outros, por exemplo, na cronologia local e em hashtags. Tu podes querer apresentar-te na hashtag #introductions.' - full_handle: O teu nome completo - full_handle_hint: Isto é o que você diria aos seus amigos para que eles lhe possam enviar mensagens ou seguir a partir de outra instância. + edit_profile_action: Configurar o perfil + edit_profile_step: Pode personalizar o seu perfil carregando uma imagem de perfil e de cabeçalho ou alterando o nome a exibir, entre outras opções. Se preferir rever os novos seguidores antes de estes o poderem seguir, pode tornar a sua conta privada. + explanation: Aqui estão algumas dicas para começar + final_action: Começar a publicar + final_step: 'Começa a publicar! Mesmo sem seguidores, as suas mensagens públicas podem ser vistas por outros, por exemplo, na cronologia local e em hashtags. Pode querer apresentar-se utilizando a hashtag #introduções ou #introductions.' + full_handle: O seu nome completo + full_handle_hint: Isto é o que tem de facultar aos seus amigos para que eles lhe possam enviar mensagens ou seguir a partir de outra instância. review_preferences_action: Alterar preferências - review_preferences_step: Certifique-se de configurar as suas preferências, tais como os e-mails que gostaria de receber ou o nível de privacidade que deseja que as suas publicações tenham por defeito. Se não sofres de enjoo, podes ativar a opção de auto-iniciar GIFs. + review_preferences_step: Certifique-se de configurar as suas preferências, tais como os e-mails que gostaria de receber ou o nível de privacidade que deseja que as suas publicações tenham por defeito. Se não sofre de enjoo de movimento, pode ativar a opção de auto-iniciar GIFs. subject: Bem-vindo ao Mastodon tip_federated_timeline: A cronologia federativa é uma visão global da rede Mastodon. Mas só inclui pessoas que os teus vizinhos subscrevem, por isso não é uma visão completa. tip_following: Segues o(s) administrador(es) do teu servidor por defeito. Para encontrar mais pessoas interessantes, procura nas cronologias local e federada. diff --git a/config/locales/ru.yml b/config/locales/ru.yml index fd82bcf36..2187ae409 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -780,6 +780,7 @@ ru: other: Поделился %{count} человек за последнюю неделю title: Актуальные ссылки usage_comparison: Поделились %{today} раз сегодня, по сравнению с %{yesterday} вчера + only_allowed: Только разрешенное pending_review: Ожидает рассмотрения preview_card_providers: allowed: Ссылки этого издания могут отображаться в «актуальном» @@ -810,6 +811,7 @@ ru: one: За последнюю неделю использовал один человек other: За последнюю неделю использовал %{count} человек title: Популярное + trending: Популярное warning_presets: add_new: Добавить delete: Удалить @@ -849,7 +851,7 @@ ru: discovery: Обзор localization: body: Mastodon переводится добровольцами. - guide_link: https://sasha-sorokin.gitlab.io/mastodon-ru/ + guide_link: https://ru.crowdin.com/project/mastodon guide_link_text: Каждый может внести свой вклад. sensitive_content: Содержимое деликатного характера toot_layout: Структура постов diff --git a/config/locales/simple_form.ckb.yml b/config/locales/simple_form.ckb.yml index 08634c559..32fda85a4 100644 --- a/config/locales/simple_form.ckb.yml +++ b/config/locales/simple_form.ckb.yml @@ -37,7 +37,7 @@ ckb: inbox_url: نیشانەی پەڕەی سەرەکی ئەو رێڵە کە هەرەکتە بەکاریببەیت ڕوونووس دەکات irreversible: توتە فلتەرکراوەکە بە شێوەیەکی نەگەڕاو فرەدەدرێن، تەنانەت ئەگەر فلتەردواتر لاببرێت locale: زمانی ڕووکاری بەکارهێنەر، ئیمەیلەکان و ئاگانامەکان - locked: بە دەستی شوێنکەوتوانی خۆت پەسەند بکە + locked: خۆت بڕیار بدە کێ دەتوانێت شوێنت بکەوێت بە وەرگتنی داوای شوێنکەوتن password: لایەنی کەم 8 نووسە بەکار بهێنە phrase: سەربەخۆ لە بچکۆلی و گەورەیی پیتەکان، لەگەڵ دەقی ئەسڵی یان ئاگانامەکانی ناوەرۆکی توتەکان هاوئاهەنگ دەکرێت scopes: APIـیەکانی بەرنامەنووسی کە ئەم ماڵپەڕە دەستپێگەیشتنی لەگەڵیان هیە. ئەگەر بەرزترین ئاست هەڵبژێرن ئیتر نیاز بە بژاردەی ئاستی نزم نییە. @@ -201,6 +201,7 @@ ckb: 'no': نە recommended: پێشنیارکراوە required: + mark: "*" text: پێویستە title: sessions: diff --git a/config/locales/simple_form.gd.yml b/config/locales/simple_form.gd.yml index 614a6b819..63199e2cd 100644 --- a/config/locales/simple_form.gd.yml +++ b/config/locales/simple_form.gd.yml @@ -37,7 +37,7 @@ gd: current_password: A chùm tèarainteachd, cuir a-steach facal-faire a’ chunntais làithrich current_username: Airson seo a dhearbhadh, cuir a-steach ainm-cleachdaiche a’ chunntais làithrich digest: Cha dèid seo a chur ach nuair a bhios tu air ùine mhòr gun ghnìomh a ghabhail agus ma fhuair thu teachdaireachd phearsanta fhad ’s a bha thu air falbh - discoverable: Ceadaich gun lorg coigrich an cunntas agad le taic o mholaidhean, treandaichean is gleusan eile + discoverable: Ceadaich gun rùraich coigrich an cunntas agad le taic o mholaidhean, treandaichean is gleusan eile email: Thèid post-d dearbhaidh a chur thugad fields: Faodaidh tu suas ri 4 nithean a shealltainn mar chlàr air a’ phròifil agad header: PNG, GIF or JPG. %{size} air a char as motha. Thèid a sgèileadh sìos gu %{dimensions}px diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml index 44b6a54a8..528e9a52a 100644 --- a/config/locales/simple_form.is.yml +++ b/config/locales/simple_form.is.yml @@ -60,7 +60,7 @@ is: setting_use_blurhash: Litstiglarnir byggja á litunum í földu myndunum, en gera öll smáatriði óskýr setting_use_pending_items: Fela uppfærslur tímalínu þar til smellt er, í stað þess að hún skruni streyminu sjálfvirkt username: Notandanafnið þitt verður einstakt á %{domain} - whole_word: Þegar stikkorð eða frasi er einungis tölur og bókstafir, verður það aðeins notað ef það samsvarar heilu orði + whole_word: Þegar stikkorð eða setning er einungis tölur og bókstafir, verður það aðeins notað ef það samsvarar heilu orði domain_allow: domain: Þetta lén mun geta sótt gögn af þessum vefþjóni og tekið verður á móti innsendum gögnum frá léninu til vinnslu og geymslu email_domain_block: @@ -126,7 +126,7 @@ is: defaults: autofollow: Bjóða að fylgjast með aðgangnum þínum avatar: Auðkennismynd - bot: Þetta er aðgangur fyrir róbót + bot: Þetta er aðgangur fyrir vélmenni chosen_languages: Sía tungumál confirm_new_password: Staðfestu nýja lykilorðið confirm_password: Staðfestu lykilorðið @@ -149,7 +149,7 @@ is: note: Æviágrip otp_attempt: Teggja-þátta kóði password: Lykilorð - phrase: Stikkorð eða frasi + phrase: Stikkorð eða setning setting_advanced_layout: Virkja ítarlegt vefviðmót setting_aggregate_reblogs: Hópa endurbirtingar í tímalínum setting_always_send_emails: Alltaf senda tilkynningar í tölvupósti diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index 803064a26..5f61ee19c 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -59,7 +59,7 @@ ja: setting_show_application: 投稿するのに使用したアプリが投稿の詳細ビューに表示されるようになります setting_use_blurhash: ぼかしはメディアの色を元に生成されますが、細部は見えにくくなっています setting_use_pending_items: 新着があってもタイムラインを自動的にスクロールしないようにします - username: あなたのユーザー名は %{domain} の中で重複していない必要があります + username: あなたのユーザー名は%{domain}の中で重複していない必要があります whole_word: キーワードまたはフレーズが英数字のみの場合、単語全体と一致する場合のみ適用されるようになります domain_allow: domain: 登録するとこのサーバーからデータを受信したり、このドメインから受信するデータを処理して保存できるようになります @@ -71,7 +71,7 @@ ja: form_challenge: current_password: セキュリティ上重要なエリアにアクセスしています imports: - data: 他の Mastodon サーバーからエクスポートしたCSVファイルを選択して下さい + data: 他のMastodonサーバーからエクスポートしたCSVファイルを選択して下さい invite_request: text: このサーバーは現在承認制です。申請を承認する際に役立つメッセージを添えてください ip_block: @@ -85,7 +85,7 @@ ja: rule: text: ユーザーのためのルールや要件を記述してください。短くシンプルにしてください。 sessions: - otp: '携帯電話のアプリで生成された二段階認証コードを入力するか、リカバリーコードを使用してください:' + otp: '携帯電話のアプリで生成された二要素認証コードを入力するか、リカバリーコードを使用してください:' webauthn: USBキーの場合は、必ず挿入し、必要に応じてタップしてください。 tag: name: 視認性向上などのためにアルファベット大文字小文字の変更のみ行うことができます @@ -99,7 +99,7 @@ ja: account_alias: acct: 引っ越し元のユーザー ID account_migration: - acct: 引っ越し先のユーザー ID + acct: 引っ越し先のユーザーID account_warning_preset: text: プリセット警告文 title: タイトル @@ -126,7 +126,7 @@ ja: defaults: autofollow: 招待から参加後、あなたをフォロー avatar: アイコン - bot: これは BOT アカウントです + bot: これはBOTアカウントです chosen_languages: 表示する言語 confirm_new_password: 新しいパスワード(確認用) confirm_password: パスワード(確認用) @@ -147,10 +147,10 @@ ja: max_uses: 使用できる回数 new_password: 新しいパスワード note: プロフィール - otp_attempt: 二段階認証コード + otp_attempt: 二要素認証コード password: パスワード phrase: キーワードまたはフレーズ - setting_advanced_layout: 上級者向け UI を有効にする + setting_advanced_layout: 上級者向けUIを有効にする setting_aggregate_reblogs: ブーストをまとめる setting_always_send_emails: 常にメール通知を送信する setting_auto_play_gif: アニメーションGIFを自動再生する diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 6984b8fba..b7f8c6747 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -411,6 +411,12 @@ sv: back_to_limited: Begränsat back_to_warning: Varning by_domain: Domän + content_policies: + policies: + silence: Gräns + policy: Policy + reason: Offentlig orsak + title: Riktlinjer för innehåll delivery: all: Alla clear: Rensa leverans-fel @@ -425,6 +431,7 @@ sv: title: Moderering private_comment: Privat kommentar public_comment: Offentlig kommentar + purge: Rensa title: Kända instanser total_blocked_by_us: Blockerad av oss total_followed_by_them: Följs av dem @@ -471,6 +478,7 @@ sv: report_notes: created_msg: Anmälningsanteckning har skapats! destroyed_msg: Anmälningsanteckning har raderats! + today_at: Idag kl. %{time} reports: account: notes: @@ -601,6 +609,8 @@ sv: delete: Radera uppladdad fil statuses: back_to_account: Tillbaka till kontosidan + batch: + report: Rapportera deleted: Raderad media: title: Media @@ -611,19 +621,26 @@ sv: delete_statuses: "%{name} raderade %{target}s inlägg" disable: "%{name} frös %{target}s konto" silence: "%{name} begränsade %{target}s konto" + appeal_approved: Överklagad system_checks: rules_check: action: Hantera serverregler message_html: Du har inte definierat några serverregler. title: Administration trends: + allow: Tillåt + approved: Godkänd statuses: allow: Godkänn inlägg allow_account: Godkänn författare + title: Trender warning_presets: add_new: Lägg till ny delete: Radera admin_mailer: + new_appeal: + actions: + none: en varning new_report: body: "%{reporter} har rapporterat %{target}" body_remote: Någon från %{domain} har rapporterat %{target} @@ -753,6 +770,8 @@ sv: strikes: created_at: Daterad status: 'Inlägg #%{id}' + title_actions: + none: Varning domain_validator: invalid_domain: är inte ett giltigt domännamn errors: @@ -816,6 +835,7 @@ sv: delete: Radera order_by: Sortera efter save_changes: Spara ändringar + today: idag validation_errors: one: Något är inte riktigt rätt ännu! Kontrollera felet nedan other: Något är inte riktigt rätt ännu! Kontrollera dom %{count} felen nedan @@ -904,6 +924,9 @@ sv: carry_mutes_over_text: Den här användaren flyttade från %{acct} som du hade tystat. copy_account_note_text: 'Den här användaren flyttade från %{acct}, här var dina föregående anteckningar om dem:' notification_mailer: + admin: + sign_up: + subject: "%{name} registrerade sig" digest: action: Visa alla aviseringar body: Här är en kort sammanfattning av de meddelanden du missade sedan ditt senaste besök på %{since} @@ -938,6 +961,8 @@ sv: title: Ny knuff status: subject: "%{name} publicerade nyss" + update: + subject: "%{name} redigerade ett inlägg" notifications: email_events: Händelser för e-postaviseringar email_events_hint: 'Välj händelser som du vill ta emot aviseringar för:' @@ -1267,14 +1292,17 @@ sv: title: Arkivuttagning suspicious_sign_in: change_password: Ändra ditt lösenord + title: En ny inloggning warning: reason: 'Anledning:' + statuses: 'Inlägg citerades:' subject: disable: Ditt konto %{acct} har blivit fruset none: Varning för %{acct} silence: Ditt konto %{acct} har blivit begränsat suspend: Ditt konto %{acct} har stängts av title: + delete_statuses: Inlägg borttagna disable: Kontot fruset none: Varning silence: Kontot begränsat @@ -1310,4 +1338,6 @@ sv: delete_confirmation: Är du säker på att du vill ta bort denna säkerhetsnyckel? destroy: success: Din säkerhetsnyckel har raderats. + invalid_credential: Ogiltig säkerhetsnyckel not_enabled: Du har inte aktiverat WebAuthn än + registered_on: Registrerad den %{date} diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 2099a066c..922f4fd82 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -802,6 +802,7 @@ tr: other: Geçen hafta %{count} kişi paylaştı title: Öne çıkan bağlantılar usage_comparison: Bugün %{today} kere paylaşıldı, dün %{yesterday} kere paylaşılmıştı + only_allowed: Sadece izin verilenler pending_review: İnceleme bekliyor preview_card_providers: allowed: Bu yayıncının bağlantıları öne çıkabilir @@ -843,6 +844,7 @@ tr: one: Geçen hafta bir kişi tarafından kullanıldı other: Geçen hafta %{count} kişi tarafından kullanıldı title: Öne çıkanlar + trending: Öne çıkanlar warning_presets: add_new: Yeni ekle delete: Sil diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 8dffdabe3..a685c73ec 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -785,6 +785,7 @@ vi: other: "%{count} người chia sẻ tuần rồi" title: Liên kết xu hướng usage_comparison: Chia sẻ %{today} lần hôm nay, so với %{yesterday} lần hôm qua + only_allowed: Chỉ cho phép pending_review: Đang chờ preview_card_providers: allowed: Liên kết từ nguồn đăng này có thể thành xu hướng @@ -824,6 +825,7 @@ vi: used_by_over_week: other: "%{count} người dùng tuần rồi" title: Xu hướng + trending: Xu hướng warning_presets: add_new: Thêm mới delete: Xóa bỏ diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 51b9b3892..9515ffad8 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -29,7 +29,7 @@ zh-CN: logged_in_as_html: 您当前以 %{username} 登录。 logout_before_registering: 您已登录。 privacy_policy: 隐私政策 - rules: 服务器规则 + rules: 实例规则 rules_html: 如果你想要在此Mastodon服务器上拥有一个账户,你必须遵守相应的规则,摘要如下: see_whats_happening: 看看有什么新鲜事 server_stats: 服务器统计数据: @@ -787,6 +787,7 @@ zh-CN: other: 过去一周内被 %{count} 个人分享过 title: 热门链接 usage_comparison: 今日被分享 %{today} 次,前一日为 %{yesterday} 次 + only_allowed: 仅显示已允许的内容 pending_review: 待审核 preview_card_providers: allowed: 来自此发布者的链接可进入流行列表 @@ -826,6 +827,7 @@ zh-CN: used_by_over_week: other: 过去一周内被 %{count} 个人使用过 title: 流行趋势 + trending: 当前热门 warning_presets: add_new: 添加新条目 delete: 删除 @@ -904,7 +906,7 @@ zh-CN: auth: apply_for_account: 请求邀请 change_password: 密码 - checkbox_agreement_html: 我同意 服务器规则服务条款 + checkbox_agreement_html: 我同意 实例规则服务条款 checkbox_agreement_without_rules_html: 我同意 服务条款 delete_account: 删除帐户 delete_account_html: 如果你想删除你的帐户,请点击这里继续。你需要确认你的操作。 diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 8948932bb..0d1716790 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -787,6 +787,7 @@ zh-TW: other: 上週被 %{count} 名使用者分享 title: 熱門連結 usage_comparison: 於今日被 %{today} 人分享,相較於昨日 %{yesterday} 人 + only_allowed: 僅允許 pending_review: 等待審核中 preview_card_providers: allowed: 此發行者之連結能登上熱門 @@ -826,6 +827,7 @@ zh-TW: used_by_over_week: other: 上週被 %{count} 個人使用 title: 熱門榜 + trending: 熱門 warning_presets: add_new: 新增 delete: 刪除 From 71d02ffcf3a79dfc1c413dcc7ff45c77ce9cb94c Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 2 May 2022 17:41:01 +0200 Subject: [PATCH 002/652] Fix compatibility with Friendica regarding pinned posts (#18254) * Fix multiple database queries when fetching pinned posts for remote account * Fix compatibility with Friendica regarding pinned posts Fixes #18066 * Add tests --- .../fetch_featured_collection_service.rb | 38 ++++-- .../fetch_featured_collection_service_spec.rb | 123 ++++++++++++++++++ 2 files changed, 148 insertions(+), 13 deletions(-) create mode 100644 spec/services/activitypub/fetch_featured_collection_service_spec.rb diff --git a/app/services/activitypub/fetch_featured_collection_service.rb b/app/services/activitypub/fetch_featured_collection_service.rb index 07a9fe039..e62470f70 100644 --- a/app/services/activitypub/fetch_featured_collection_service.rb +++ b/app/services/activitypub/fetch_featured_collection_service.rb @@ -7,20 +7,34 @@ class ActivityPub::FetchFeaturedCollectionService < BaseService return if account.featured_collection_url.blank? || account.suspended? || account.local? @account = account - @json = fetch_resource(@account.featured_collection_url, true) + @json = fetch_resource(@account.featured_collection_url, true, local_follower) - return unless supported_context? + return unless supported_context?(@json) - case @json['type'] - when 'Collection', 'CollectionPage' - process_items @json['items'] - when 'OrderedCollection', 'OrderedCollectionPage' - process_items @json['orderedItems'] - end + process_items(collection_items(@json)) end private + def collection_items(collection) + collection = fetch_collection(collection['first']) if collection['first'].present? + return unless collection.is_a?(Hash) + + case collection['type'] + when 'Collection', 'CollectionPage' + collection['items'] + when 'OrderedCollection', 'OrderedCollectionPage' + collection['orderedItems'] + end + end + + def fetch_collection(collection_or_uri) + return collection_or_uri if collection_or_uri.is_a?(Hash) + return if invalid_origin?(collection_or_uri) + + fetch_resource_without_id_validation(collection_or_uri, nil, true, local_follower) + end + def process_items(items) status_ids = items.filter_map do |item| uri = value_or_id(item) @@ -53,11 +67,9 @@ class ActivityPub::FetchFeaturedCollectionService < BaseService end end - def supported_context? - super(@json) - end - def local_follower - @local_follower ||= @account.followers.local.without_suspended.first + return @local_follower if defined?(@local_follower) + + @local_follower = @account.followers.local.without_suspended.first end end diff --git a/spec/services/activitypub/fetch_featured_collection_service_spec.rb b/spec/services/activitypub/fetch_featured_collection_service_spec.rb new file mode 100644 index 000000000..f552b9dc0 --- /dev/null +++ b/spec/services/activitypub/fetch_featured_collection_service_spec.rb @@ -0,0 +1,123 @@ +require 'rails_helper' + +RSpec.describe ActivityPub::FetchFeaturedCollectionService, type: :service do + let(:actor) { Fabricate(:account, domain: 'example.com', uri: 'https://example.com/account', featured_collection_url: 'https://example.com/account/pinned') } + + let!(:known_status) { Fabricate(:status, account: actor, uri: 'https://example.com/account/pinned/1') } + + let(:status_json_1) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + type: 'Note', + id: 'https://example.com/account/pinned/1', + content: 'foo', + attributedTo: actor.uri, + to: 'https://www.w3.org/ns/activitystreams#Public', + } + end + + let(:status_json_2) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + type: 'Note', + id: 'https://example.com/account/pinned/2', + content: 'foo', + attributedTo: actor.uri, + to: 'https://www.w3.org/ns/activitystreams#Public', + } + end + + let(:status_json_4) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + type: 'Note', + id: 'https://example.com/account/pinned/4', + content: 'foo', + attributedTo: actor.uri, + to: 'https://www.w3.org/ns/activitystreams#Public', + } + end + + let(:items) do + [ + 'https://example.com/account/pinned/1', # known + status_json_2, # unknown inlined + 'https://example.com/account/pinned/3', # unknown unreachable + 'https://example.com/account/pinned/4', # unknown reachable + ] + end + + let(:payload) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + type: 'Collection', + id: actor.featured_collection_url, + items: items, + }.with_indifferent_access + end + + subject { described_class.new } + + shared_examples 'sets pinned posts' do + before do + stub_request(:get, 'https://example.com/account/pinned/1').to_return(status: 200, body: Oj.dump(status_json_1)) + stub_request(:get, 'https://example.com/account/pinned/2').to_return(status: 200, body: Oj.dump(status_json_2)) + stub_request(:get, 'https://example.com/account/pinned/3').to_return(status: 404) + stub_request(:get, 'https://example.com/account/pinned/4').to_return(status: 200, body: Oj.dump(status_json_4)) + + subject.call(actor) + end + + it 'sets expected posts as pinned posts' do + expect(actor.pinned_statuses.pluck(:uri)).to match_array ['https://example.com/account/pinned/1', 'https://example.com/account/pinned/2', 'https://example.com/account/pinned/4'] + end + end + + describe '#call' do + context 'when the endpoint is a Collection' do + before do + stub_request(:get, actor.featured_collection_url).to_return(status: 200, body: Oj.dump(payload)) + end + + it_behaves_like 'sets pinned posts' + end + + context 'when the endpoint is an OrderedCollection' do + let(:payload) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + type: 'OrderedCollection', + id: actor.featured_collection_url, + orderedItems: items, + }.with_indifferent_access + end + + before do + stub_request(:get, actor.featured_collection_url).to_return(status: 200, body: Oj.dump(payload)) + end + + it_behaves_like 'sets pinned posts' + end + + context 'when the endpoint is a paginated Collection' do + let(:payload) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + type: 'Collection', + id: actor.featured_collection_url, + first: { + type: 'CollectionPage', + partOf: actor.featured_collection_url, + items: items, + } + }.with_indifferent_access + end + + before do + stub_request(:get, actor.featured_collection_url).to_return(status: 200, body: Oj.dump(payload)) + end + + it_behaves_like 'sets pinned posts' + end + end +end From bc19c083cef6f66d28528d79548cf692fa8a2ca6 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 2 May 2022 17:41:34 +0200 Subject: [PATCH 003/652] Add ability to set approval-based registration through tootctl (#18248) Fixes #18235 Add `tootctl settings registrations approved` with optional `--require-reason` switch. --- lib/mastodon/settings_cli.rb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lib/mastodon/settings_cli.rb b/lib/mastodon/settings_cli.rb index 061650a80..488c655de 100644 --- a/lib/mastodon/settings_cli.rb +++ b/lib/mastodon/settings_cli.rb @@ -16,6 +16,20 @@ module Mastodon say('OK', :green) end + desc 'approved', 'Open approval-based registrations' + option :require_reason, type: :boolean, aliases: [:require_invite_text] + long_desc <<~LONG_DESC + Set registrations to require review from staff. + + With --require-reason, require users to enter a reason when registering, + otherwise this field is optional. + LONG_DESC + def approved + Setting.registrations_mode = 'approved' + Setting.require_invite_text = options[:require_reason] unless options[:require_reason].nil? + say('OK', :green) + end + desc 'close', 'Close registrations' def close Setting.registrations_mode = 'none' From 0597e5db68a4b43b69d3bfcb93d0b0042d91b17f Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 2 May 2022 19:34:39 +0200 Subject: [PATCH 004/652] Fix ArgumentError when processing pinned posts from Friendica (#18260) Follow-up to #18254 --- app/services/activitypub/fetch_featured_collection_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/activitypub/fetch_featured_collection_service.rb b/app/services/activitypub/fetch_featured_collection_service.rb index e62470f70..37d05e055 100644 --- a/app/services/activitypub/fetch_featured_collection_service.rb +++ b/app/services/activitypub/fetch_featured_collection_service.rb @@ -32,7 +32,7 @@ class ActivityPub::FetchFeaturedCollectionService < BaseService return collection_or_uri if collection_or_uri.is_a?(Hash) return if invalid_origin?(collection_or_uri) - fetch_resource_without_id_validation(collection_or_uri, nil, true, local_follower) + fetch_resource_without_id_validation(collection_or_uri, local_follower, true) end def process_items(items) From b3496583e0d85be80b84657dcfed9c354e5aebe2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 May 2022 09:55:23 +0900 Subject: [PATCH 005/652] Bump aws-sdk-s3 from 1.113.1 to 1.113.2 (#18269) Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.113.1 to 1.113.2. - [Release notes](https://github.com/aws/aws-sdk-ruby/releases) - [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md) - [Commits](https://github.com/aws/aws-sdk-ruby/commits) --- updated-dependencies: - dependency-name: aws-sdk-s3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 8751775ef..55f088ea7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -81,7 +81,7 @@ GEM attr_required (1.0.1) awrence (1.1.1) aws-eventstream (1.2.0) - aws-partitions (1.579.0) + aws-partitions (1.582.0) aws-sdk-core (3.130.2) aws-eventstream (~> 1, >= 1.0.2) aws-partitions (~> 1, >= 1.525.0) @@ -90,7 +90,7 @@ GEM aws-sdk-kms (1.56.0) aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.113.1) + aws-sdk-s3 (1.113.2) aws-sdk-core (~> 3, >= 3.127.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.4) From 51ce836edbeb164c51a7616e8e952692f4b07dbb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 May 2022 10:10:45 +0900 Subject: [PATCH 006/652] Bump pghero from 2.8.2 to 2.8.3 (#18278) Bumps [pghero](https://github.com/ankane/pghero) from 2.8.2 to 2.8.3. - [Release notes](https://github.com/ankane/pghero/releases) - [Changelog](https://github.com/ankane/pghero/blob/master/CHANGELOG.md) - [Commits](https://github.com/ankane/pghero/compare/v2.8.2...v2.8.3) --- updated-dependencies: - dependency-name: pghero dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 55f088ea7..3a673a745 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -448,7 +448,7 @@ GEM pastel (0.8.0) tty-color (~> 0.5) pg (1.3.5) - pghero (2.8.2) + pghero (2.8.3) activerecord (>= 5) pkg-config (1.4.7) posix-spawn (0.3.15) From 5a8a6a1e8c157f384ab0ec69abde7a407ff7c990 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 May 2022 10:11:42 +0900 Subject: [PATCH 007/652] Bump rspec-rails from 5.1.1 to 5.1.2 (#18092) Bumps [rspec-rails](https://github.com/rspec/rspec-rails) from 5.1.1 to 5.1.2. - [Release notes](https://github.com/rspec/rspec-rails/releases) - [Changelog](https://github.com/rspec/rspec-rails/blob/main/Changelog.md) - [Commits](https://github.com/rspec/rspec-rails/compare/v5.1.1...v5.1.2) --- updated-dependencies: - dependency-name: rspec-rails dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 3a673a745..b4a4b9685 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -552,10 +552,10 @@ GEM rspec-expectations (3.11.0) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.11.0) - rspec-mocks (3.11.0) + rspec-mocks (3.11.1) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.11.0) - rspec-rails (5.1.1) + rspec-rails (5.1.2) actionpack (>= 5.2) activesupport (>= 5.2) railties (>= 5.2) From 9723b768c5cfd4e478a68bd4727123a8d69f668d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 May 2022 10:19:24 +0900 Subject: [PATCH 008/652] Bump @babel/core from 7.17.9 to 7.17.10 (#18277) Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.17.9 to 7.17.10. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.17.10/packages/babel-core) --- updated-dependencies: - dependency-name: "@babel/core" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 137 ++++++++++++++++++++++++++++++--------------------- 2 files changed, 81 insertions(+), 58 deletions(-) diff --git a/package.json b/package.json index 2521fe0f7..0cdc802fd 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ }, "private": true, "dependencies": { - "@babel/core": "^7.17.9", + "@babel/core": "^7.17.10", "@babel/plugin-proposal-decorators": "^7.17.9", "@babel/plugin-transform-react-inline-elements": "^7.16.7", "@babel/plugin-transform-runtime": "^7.17.0", diff --git a/yarn.lock b/yarn.lock index 20bae6f91..98e8b324d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -28,40 +28,40 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.8.tgz#31560f9f29fdf1868de8cb55049538a1b9732a60" integrity sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q== -"@babel/compat-data@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.7.tgz#078d8b833fbbcc95286613be8c716cef2b519fa2" - integrity sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ== +"@babel/compat-data@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" + integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw== -"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.17.9", "@babel/core@^7.7.2", "@babel/core@^7.8.0": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.9.tgz#6bae81a06d95f4d0dec5bb9d74bbc1f58babdcfe" - integrity sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw== +"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.17.10", "@babel/core@^7.7.2", "@babel/core@^7.8.0": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.10.tgz#74ef0fbf56b7dfc3f198fc2d927f4f03e12f4b05" + integrity sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.9" - "@babel/helper-compilation-targets" "^7.17.7" + "@babel/generator" "^7.17.10" + "@babel/helper-compilation-targets" "^7.17.10" "@babel/helper-module-transforms" "^7.17.7" "@babel/helpers" "^7.17.9" - "@babel/parser" "^7.17.9" + "@babel/parser" "^7.17.10" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.9" - "@babel/types" "^7.17.0" + "@babel/traverse" "^7.17.10" + "@babel/types" "^7.17.10" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.17.9", "@babel/generator@^7.7.2": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.9.tgz#f4af9fd38fa8de143c29fce3f71852406fc1e2fc" - integrity sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ== +"@babel/generator@^7.17.10", "@babel/generator@^7.7.2": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.10.tgz#c281fa35b0c349bbe9d02916f4ae08fc85ed7189" + integrity sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg== dependencies: - "@babel/types" "^7.17.0" + "@babel/types" "^7.17.10" + "@jridgewell/gen-mapping" "^0.1.0" jsesc "^2.5.1" - source-map "^0.5.0" "@babel/helper-annotate-as-pure@^7.16.7": version "7.16.7" @@ -86,14 +86,14 @@ "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz#a3c2924f5e5f0379b356d4cfb313d1414dc30e46" - integrity sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w== +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz#09c63106d47af93cf31803db6bc49fef354e2ebe" + integrity sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ== dependencies: - "@babel/compat-data" "^7.17.7" + "@babel/compat-data" "^7.17.10" "@babel/helper-validator-option" "^7.16.7" - browserslist "^4.17.5" + browserslist "^4.20.2" semver "^6.3.0" "@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.9": @@ -337,10 +337,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.9", "@babel/parser@^7.7.0": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.9.tgz#9c94189a6062f0291418ca021077983058e171ef" - integrity sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.10", "@babel/parser@^7.7.0": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.10.tgz#873b16db82a8909e0fbd7f115772f4b739f6ce78" + integrity sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": version "7.16.7" @@ -1068,26 +1068,26 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.9.tgz#1f9b207435d9ae4a8ed6998b2b82300d83c37a0d" - integrity sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw== +"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.10", "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.10.tgz#1ee1a5ac39f4eac844e6cf855b35520e5eb6f8b5" + integrity sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw== dependencies: "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.9" + "@babel/generator" "^7.17.10" "@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-function-name" "^7.17.9" "@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.17.9" - "@babel/types" "^7.17.0" + "@babel/parser" "^7.17.10" + "@babel/types" "^7.17.10" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" - integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.10", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.10.tgz#d35d7b4467e439fcf06d195f8100e0fea7fc82c4" + integrity sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A== dependencies: "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" @@ -1408,11 +1408,24 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/resolve-uri@^3.0.3": version "3.0.4" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.4.tgz#b876e3feefb9c8d3aa84014da28b5e52a0640d72" integrity sha512-cz8HFjOFfUBtvN+NXYSFMHYRdxZMaEl0XypVrhzxBgadKIXhIkRd8aMeHhmF56Sl7SuS8OnUpQ73/k9LE4VnLg== +"@jridgewell/set-array@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.0.tgz#1179863356ac8fbea64a5a4bcde93a4871012c01" + integrity sha512-SfJxIxNVYLTsKwzB3MoOQ1yxf4w/E6MdkvTgrgAt1bfxjSrLUoHMKrDOykwN14q65waezZIdqDneUIPh4/sKxg== + "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.10" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.10.tgz#baf57b4e2a690d4f38560171f91783656b7f8186" @@ -2765,17 +2778,6 @@ browserslist@^4.0.0, browserslist@^4.12.0: escalade "^3.1.1" node-releases "^1.1.71" -browserslist@^4.17.5: - version "4.17.5" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.5.tgz#c827bbe172a4c22b123f5e337533ceebadfdd559" - integrity sha512-I3ekeB92mmpctWBoLXe0d5wPS2cBuRvvW0JyyJHMrk9/HmP2ZjrTboNAZ8iuGqaEIlKguljbQY32OkOJIRrgoA== - dependencies: - caniuse-lite "^1.0.30001271" - electron-to-chromium "^1.3.878" - escalade "^3.1.1" - node-releases "^2.0.1" - picocolors "^1.0.0" - browserslist@^4.19.1: version "4.19.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" @@ -2787,6 +2789,17 @@ browserslist@^4.19.1: node-releases "^2.0.1" picocolors "^1.0.0" +browserslist@^4.20.2: + version "4.20.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" + integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== + dependencies: + caniuse-lite "^1.0.30001332" + electron-to-chromium "^1.4.118" + escalade "^3.1.1" + node-releases "^2.0.3" + picocolors "^1.0.0" + bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -2968,11 +2981,16 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001219, caniuse-lite@^1.0.30001271, caniuse-lite@^1.0.30001286: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001219, caniuse-lite@^1.0.30001286: version "1.0.30001310" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001310.tgz#da02cd07432c9eece6992689d1b84ca18139eea8" integrity sha512-cb9xTV8k9HTIUA3GnPUJCk0meUnrHL5gy5QePfDjxHyNBcnzPzrHFv5GqfP7ue5b1ZyzZL0RJboD6hQlPXjhjg== +caniuse-lite@^1.0.30001332: + version "1.0.30001335" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001335.tgz#899254a0b70579e5a957c32dced79f0727c61f2a" + integrity sha512-ddP1Tgm7z2iIxu6QTtbZUv6HJxSaV/PZeSrWFZtbY4JZ69tOeNhBCl3HyRQgeNZKE5AOn1kpV7fhljigy0Ty3w== + chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -4096,10 +4114,10 @@ electron-to-chromium@^1.3.723: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.736.tgz#f632d900a1f788dab22fec9c62ec5c9c8f0c4052" integrity sha512-DY8dA7gR51MSo66DqitEQoUMQ0Z+A2DSXFi7tK304bdTVqczCAfUuyQw6Wdg8hIoo5zIxkU1L24RQtUce1Ioig== -electron-to-chromium@^1.3.878: - version "1.3.886" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.886.tgz#ac039c4001b665b1dd0f0ed9c2e4da90ff3c9267" - integrity sha512-+vYdeBosI63VkCtNWnEVFjgNd/IZwvnsWkKyPtWAvrhA+XfByKoBJcbsMgudVU/bUcGAF9Xp3aXn96voWlc3oQ== +electron-to-chromium@^1.4.118: + version "1.4.129" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.129.tgz#c675793885721beefff99da50f57c6525c2cd238" + integrity sha512-GgtN6bsDtHdtXJtlMYZWGB/uOyjZWjmRDumXTas7dGBaB9zUyCjzHet1DY2KhyHN8R0GLbzZWqm4efeddqqyRQ== electron-to-chromium@^1.4.17: version "1.4.47" @@ -7593,6 +7611,11 @@ node-releases@^2.0.1: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== +node-releases@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.4.tgz#f38252370c43854dc48aa431c766c6c398f40476" + integrity sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ== + normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" @@ -10044,7 +10067,7 @@ source-map@0.5.6: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" integrity sha1-dc449SvwczxafwwRjYEzSiu19BI= -source-map@^0.5.0, source-map@^0.5.6: +source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= From 3cc0233adc0dfb205c2c85f1ca6f9d29dcdcb30a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 May 2022 10:19:40 +0900 Subject: [PATCH 009/652] Bump @babel/plugin-transform-runtime from 7.17.0 to 7.17.10 (#18283) Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.17.0 to 7.17.10. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.17.10/packages/babel-plugin-transform-runtime) --- updated-dependencies: - dependency-name: "@babel/plugin-transform-runtime" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 0cdc802fd..71e0a9cef 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "@babel/core": "^7.17.10", "@babel/plugin-proposal-decorators": "^7.17.9", "@babel/plugin-transform-react-inline-elements": "^7.16.7", - "@babel/plugin-transform-runtime": "^7.17.0", + "@babel/plugin-transform-runtime": "^7.17.10", "@babel/preset-env": "^7.16.11", "@babel/preset-react": "^7.16.7", "@babel/runtime": "^7.17.9", diff --git a/yarn.lock b/yarn.lock index 98e8b324d..394759ad5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -871,10 +871,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-runtime@^7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz#0a2e08b5e2b2d95c4b1d3b3371a2180617455b70" - integrity sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A== +"@babel/plugin-transform-runtime@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.10.tgz#b89d821c55d61b5e3d3c3d1d636d8d5a81040ae1" + integrity sha512-6jrMilUAJhktTr56kACL8LnWC5hx3Lf27BS0R0DSyW/OoJfb/iTHeE96V3b1dgKG3FSFdd/0culnYWMkjcKCig== dependencies: "@babel/helper-module-imports" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" From 5bfdc11fb9bfdce05436d5a5d0554ef0f5e7bb00 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 May 2022 10:20:22 +0900 Subject: [PATCH 010/652] Bump babel-loader from 8.2.4 to 8.2.5 (#18096) Bumps [babel-loader](https://github.com/babel/babel-loader) from 8.2.4 to 8.2.5. - [Release notes](https://github.com/babel/babel-loader/releases) - [Changelog](https://github.com/babel/babel-loader/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel-loader/compare/v8.2.4...v8.2.5) --- updated-dependencies: - dependency-name: babel-loader dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 71e0a9cef..3e517ec0c 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,7 @@ "arrow-key-navigation": "^1.2.0", "autoprefixer": "^9.8.8", "axios": "^0.26.1", - "babel-loader": "^8.2.4", + "babel-loader": "^8.2.5", "babel-plugin-lodash": "^3.3.4", "babel-plugin-preval": "^5.1.0", "babel-plugin-react-intl": "^6.2.0", diff --git a/yarn.lock b/yarn.lock index 394759ad5..ee53f929c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2399,10 +2399,10 @@ babel-jest@^27.5.1: graceful-fs "^4.2.9" slash "^3.0.0" -babel-loader@^8.2.4: - version "8.2.4" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.4.tgz#95f5023c791b2e9e2ca6f67b0984f39c82ff384b" - integrity sha512-8dytA3gcvPPPv4Grjhnt8b5IIiTcq/zeXOPk4iTYI0SVXcsmuGg7JtBRDp8S9X+gJfhQ8ektjXZlDu1Bb33U8A== +babel-loader@^8.2.5: + version "8.2.5" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.5.tgz#d45f585e654d5a5d90f5350a779d7647c5ed512e" + integrity sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ== dependencies: find-cache-dir "^3.3.1" loader-utils "^2.0.0" From ce2449421c97642e9464f8f9f61a7a6054a439e7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 May 2022 10:22:05 +0900 Subject: [PATCH 011/652] Bump rails from 6.1.5 to 6.1.5.1 (#18276) Bumps [rails](https://github.com/rails/rails) from 6.1.5 to 6.1.5.1. - [Release notes](https://github.com/rails/rails/releases) - [Commits](https://github.com/rails/rails/compare/v6.1.5...v6.1.5.1) --- updated-dependencies: - dependency-name: rails dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 108 +++++++++++++++++++++++++-------------------------- 1 file changed, 54 insertions(+), 54 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index b4a4b9685..6897519d4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,40 +1,40 @@ GEM remote: https://rubygems.org/ specs: - actioncable (6.1.5) - actionpack (= 6.1.5) - activesupport (= 6.1.5) + actioncable (6.1.5.1) + actionpack (= 6.1.5.1) + activesupport (= 6.1.5.1) nio4r (~> 2.0) websocket-driver (>= 0.6.1) - actionmailbox (6.1.5) - actionpack (= 6.1.5) - activejob (= 6.1.5) - activerecord (= 6.1.5) - activestorage (= 6.1.5) - activesupport (= 6.1.5) + actionmailbox (6.1.5.1) + actionpack (= 6.1.5.1) + activejob (= 6.1.5.1) + activerecord (= 6.1.5.1) + activestorage (= 6.1.5.1) + activesupport (= 6.1.5.1) mail (>= 2.7.1) - actionmailer (6.1.5) - actionpack (= 6.1.5) - actionview (= 6.1.5) - activejob (= 6.1.5) - activesupport (= 6.1.5) + actionmailer (6.1.5.1) + actionpack (= 6.1.5.1) + actionview (= 6.1.5.1) + activejob (= 6.1.5.1) + activesupport (= 6.1.5.1) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 2.0) - actionpack (6.1.5) - actionview (= 6.1.5) - activesupport (= 6.1.5) + actionpack (6.1.5.1) + actionview (= 6.1.5.1) + activesupport (= 6.1.5.1) rack (~> 2.0, >= 2.0.9) rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.2.0) - actiontext (6.1.5) - actionpack (= 6.1.5) - activerecord (= 6.1.5) - activestorage (= 6.1.5) - activesupport (= 6.1.5) + actiontext (6.1.5.1) + actionpack (= 6.1.5.1) + activerecord (= 6.1.5.1) + activestorage (= 6.1.5.1) + activesupport (= 6.1.5.1) nokogiri (>= 1.8.5) - actionview (6.1.5) - activesupport (= 6.1.5) + actionview (6.1.5.1) + activesupport (= 6.1.5.1) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) @@ -45,22 +45,22 @@ GEM case_transform (>= 0.2) jsonapi-renderer (>= 0.1.1.beta1, < 0.3) active_record_query_trace (1.8) - activejob (6.1.5) - activesupport (= 6.1.5) + activejob (6.1.5.1) + activesupport (= 6.1.5.1) globalid (>= 0.3.6) - activemodel (6.1.5) - activesupport (= 6.1.5) - activerecord (6.1.5) - activemodel (= 6.1.5) - activesupport (= 6.1.5) - activestorage (6.1.5) - actionpack (= 6.1.5) - activejob (= 6.1.5) - activerecord (= 6.1.5) - activesupport (= 6.1.5) + activemodel (6.1.5.1) + activesupport (= 6.1.5.1) + activerecord (6.1.5.1) + activemodel (= 6.1.5.1) + activesupport (= 6.1.5.1) + activestorage (6.1.5.1) + actionpack (= 6.1.5.1) + activejob (= 6.1.5.1) + activerecord (= 6.1.5.1) + activesupport (= 6.1.5.1) marcel (~> 1.0) mini_mime (>= 1.1.0) - activesupport (6.1.5) + activesupport (6.1.5.1) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) minitest (>= 5.1) @@ -375,7 +375,7 @@ GEM activesupport (>= 4) railties (>= 4) request_store (~> 1.0) - loofah (2.16.0) + loofah (2.17.0) crass (~> 1.0.2) nokogiri (>= 1.5.9) mail (2.7.1) @@ -490,20 +490,20 @@ GEM rack rack-test (1.1.0) rack (>= 1.0, < 3) - rails (6.1.5) - actioncable (= 6.1.5) - actionmailbox (= 6.1.5) - actionmailer (= 6.1.5) - actionpack (= 6.1.5) - actiontext (= 6.1.5) - actionview (= 6.1.5) - activejob (= 6.1.5) - activemodel (= 6.1.5) - activerecord (= 6.1.5) - activestorage (= 6.1.5) - activesupport (= 6.1.5) + rails (6.1.5.1) + actioncable (= 6.1.5.1) + actionmailbox (= 6.1.5.1) + actionmailer (= 6.1.5.1) + actionpack (= 6.1.5.1) + actiontext (= 6.1.5.1) + actionview (= 6.1.5.1) + activejob (= 6.1.5.1) + activemodel (= 6.1.5.1) + activerecord (= 6.1.5.1) + activestorage (= 6.1.5.1) + activesupport (= 6.1.5.1) bundler (>= 1.15.0) - railties (= 6.1.5) + railties (= 6.1.5.1) sprockets-rails (>= 2.0.0) rails-controller-testing (1.0.5) actionpack (>= 5.0.1.rc1) @@ -519,9 +519,9 @@ GEM railties (>= 6.0.0, < 7) rails-settings-cached (0.6.6) rails (>= 4.2.0) - railties (6.1.5) - actionpack (= 6.1.5) - activesupport (= 6.1.5) + railties (6.1.5.1) + actionpack (= 6.1.5.1) + activesupport (= 6.1.5.1) method_source rake (>= 12.2) thor (~> 1.0) From 80da6580693c275e4ae7c118bfea42ca4c54429b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 May 2022 10:30:14 +0900 Subject: [PATCH 012/652] Bump @babel/preset-env from 7.16.11 to 7.17.10 (#18281) Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.16.11 to 7.17.10. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.17.10/packages/babel-preset-env) --- updated-dependencies: - dependency-name: "@babel/preset-env" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 226 +++++++++++++++++++++++++++++---------------------- 2 files changed, 131 insertions(+), 97 deletions(-) diff --git a/package.json b/package.json index 3e517ec0c..590aaac50 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "@babel/plugin-proposal-decorators": "^7.17.9", "@babel/plugin-transform-react-inline-elements": "^7.16.7", "@babel/plugin-transform-runtime": "^7.17.10", - "@babel/preset-env": "^7.16.11", + "@babel/preset-env": "^7.17.10", "@babel/preset-react": "^7.16.7", "@babel/runtime": "^7.17.9", "@gamestdio/websocket": "^0.3.2", diff --git a/yarn.lock b/yarn.lock index ee53f929c..a3900c812 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,12 +23,7 @@ dependencies: "@babel/highlight" "^7.16.7" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4", "@babel/compat-data@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.8.tgz#31560f9f29fdf1868de8cb55049538a1b9732a60" - integrity sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q== - -"@babel/compat-data@^7.17.10": +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.17.0", "@babel/compat-data@^7.17.10": version "7.17.10" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw== @@ -96,7 +91,7 @@ browserslist "^4.20.2" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.9": +"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.6", "@babel/helper-create-class-features-plugin@^7.17.9": version "7.17.9" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz#71835d7fb9f38bd9f1378e40a4c0902fdc2ea49d" integrity sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ== @@ -117,6 +112,14 @@ "@babel/helper-annotate-as-pure" "^7.16.7" regexpu-core "^4.7.1" +"@babel/helper-create-regexp-features-plugin@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1" + integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + regexpu-core "^5.0.1" + "@babel/helper-define-polyfill-provider@^0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz#c5b10cf4b324ff840140bb07e05b8564af2ae971" @@ -257,13 +260,6 @@ "@babel/traverse" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/helper-simple-access@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7" - integrity sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g== - dependencies: - "@babel/types" "^7.16.7" - "@babel/helper-simple-access@^7.17.7": version "7.17.7" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367" @@ -375,12 +371,12 @@ "@babel/helper-create-class-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-proposal-class-static-block@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz#712357570b612106ef5426d13dc433ce0f200c2a" - integrity sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw== +"@babel/plugin-proposal-class-static-block@^7.17.6": + version "7.17.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz#164e8fd25f0d80fa48c5a4d1438a6629325ad83c" + integrity sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.17.6" "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-class-static-block" "^7.14.5" @@ -444,12 +440,12 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz#94593ef1ddf37021a25bdcb5754c4a8d534b01d8" - integrity sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA== +"@babel/plugin-proposal-object-rest-spread@^7.17.3": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz#d9eb649a54628a51701aef7e0ea3d17e2b9dd390" + integrity sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw== dependencies: - "@babel/compat-data" "^7.16.4" + "@babel/compat-data" "^7.17.0" "@babel/helper-compilation-targets" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" @@ -682,10 +678,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-destructuring@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz#ca9588ae2d63978a4c29d3f33282d8603f618e23" - integrity sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A== +"@babel/plugin-transform-destructuring@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz#49dc2675a7afa9a5e4c6bdee636061136c3408d1" + integrity sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ== dependencies: "@babel/helper-plugin-utils" "^7.16.7" @@ -751,23 +747,23 @@ "@babel/helper-plugin-utils" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz#cdee19aae887b16b9d331009aa9a219af7c86afe" - integrity sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA== +"@babel/plugin-transform-modules-commonjs@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz#274be1a2087beec0254d4abd4d86e52442e1e5b6" + integrity sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw== dependencies: - "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-module-transforms" "^7.17.7" "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-simple-access" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz#887cefaef88e684d29558c2b13ee0563e287c2d7" - integrity sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw== +"@babel/plugin-transform-modules-systemjs@^7.17.8": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz#81fd834024fae14ea78fbe34168b042f38703859" + integrity sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw== dependencies: "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-module-transforms" "^7.17.7" "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-validator-identifier" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" @@ -780,12 +776,12 @@ "@babel/helper-module-transforms" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-named-capturing-groups-regex@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz#7f860e0e40d844a02c9dcf9d84965e7dfd666252" - integrity sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw== +"@babel/plugin-transform-named-capturing-groups-regex@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.10.tgz#715dbcfafdb54ce8bccd3d12e8917296a4ba66a4" + integrity sha512-v54O6yLaJySCs6mGzaVOUw9T967GnH38T6CQSAtnzdNPwu84l2qAjssKzo/WSO8Yi7NF+7ekm5cVbF/5qiIgNA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-create-regexp-features-plugin" "^7.17.0" "@babel/plugin-transform-new-target@^7.16.7": version "7.16.7" @@ -857,12 +853,12 @@ "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-regenerator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb" - integrity sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q== +"@babel/plugin-transform-regenerator@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz#0a33c3a61cf47f45ed3232903683a0afd2d3460c" + integrity sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ== dependencies: - regenerator-transform "^0.14.2" + regenerator-transform "^0.15.0" "@babel/plugin-transform-reserved-words@^7.16.7": version "7.16.7" @@ -934,27 +930,27 @@ "@babel/helper-create-regexp-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/preset-env@^7.16.11": - version "7.16.11" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982" - integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g== +"@babel/preset-env@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.17.10.tgz#a81b093669e3eb6541bb81a23173c5963c5de69c" + integrity sha512-YNgyBHZQpeoBSRBg0xixsZzfT58Ze1iZrajvv0lJc70qDDGuGfonEnMGfWeSY0mQ3JTuCWFbMkzFRVafOyJx4g== dependencies: - "@babel/compat-data" "^7.16.8" - "@babel/helper-compilation-targets" "^7.16.7" + "@babel/compat-data" "^7.17.10" + "@babel/helper-compilation-targets" "^7.17.10" "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-validator-option" "^7.16.7" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" "@babel/plugin-proposal-async-generator-functions" "^7.16.8" "@babel/plugin-proposal-class-properties" "^7.16.7" - "@babel/plugin-proposal-class-static-block" "^7.16.7" + "@babel/plugin-proposal-class-static-block" "^7.17.6" "@babel/plugin-proposal-dynamic-import" "^7.16.7" "@babel/plugin-proposal-export-namespace-from" "^7.16.7" "@babel/plugin-proposal-json-strings" "^7.16.7" "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" "@babel/plugin-proposal-numeric-separator" "^7.16.7" - "@babel/plugin-proposal-object-rest-spread" "^7.16.7" + "@babel/plugin-proposal-object-rest-spread" "^7.17.3" "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" "@babel/plugin-proposal-optional-chaining" "^7.16.7" "@babel/plugin-proposal-private-methods" "^7.16.11" @@ -980,7 +976,7 @@ "@babel/plugin-transform-block-scoping" "^7.16.7" "@babel/plugin-transform-classes" "^7.16.7" "@babel/plugin-transform-computed-properties" "^7.16.7" - "@babel/plugin-transform-destructuring" "^7.16.7" + "@babel/plugin-transform-destructuring" "^7.17.7" "@babel/plugin-transform-dotall-regex" "^7.16.7" "@babel/plugin-transform-duplicate-keys" "^7.16.7" "@babel/plugin-transform-exponentiation-operator" "^7.16.7" @@ -989,15 +985,15 @@ "@babel/plugin-transform-literals" "^7.16.7" "@babel/plugin-transform-member-expression-literals" "^7.16.7" "@babel/plugin-transform-modules-amd" "^7.16.7" - "@babel/plugin-transform-modules-commonjs" "^7.16.8" - "@babel/plugin-transform-modules-systemjs" "^7.16.7" + "@babel/plugin-transform-modules-commonjs" "^7.17.9" + "@babel/plugin-transform-modules-systemjs" "^7.17.8" "@babel/plugin-transform-modules-umd" "^7.16.7" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.8" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.10" "@babel/plugin-transform-new-target" "^7.16.7" "@babel/plugin-transform-object-super" "^7.16.7" "@babel/plugin-transform-parameters" "^7.16.7" "@babel/plugin-transform-property-literals" "^7.16.7" - "@babel/plugin-transform-regenerator" "^7.16.7" + "@babel/plugin-transform-regenerator" "^7.17.9" "@babel/plugin-transform-reserved-words" "^7.16.7" "@babel/plugin-transform-shorthand-properties" "^7.16.7" "@babel/plugin-transform-spread" "^7.16.7" @@ -1007,11 +1003,11 @@ "@babel/plugin-transform-unicode-escapes" "^7.16.7" "@babel/plugin-transform-unicode-regex" "^7.16.7" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.16.8" + "@babel/types" "^7.17.10" babel-plugin-polyfill-corejs2 "^0.3.0" babel-plugin-polyfill-corejs3 "^0.5.0" babel-plugin-polyfill-regenerator "^0.3.0" - core-js-compat "^3.20.2" + core-js-compat "^3.22.1" semver "^6.3.0" "@babel/preset-modules@^0.1.5": @@ -2778,18 +2774,7 @@ browserslist@^4.0.0, browserslist@^4.12.0: escalade "^3.1.1" node-releases "^1.1.71" -browserslist@^4.19.1: - version "4.19.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" - integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A== - dependencies: - caniuse-lite "^1.0.30001286" - electron-to-chromium "^1.4.17" - escalade "^3.1.1" - node-releases "^2.0.1" - picocolors "^1.0.0" - -browserslist@^4.20.2: +browserslist@^4.20.2, browserslist@^4.20.3: version "4.20.3" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== @@ -2981,7 +2966,7 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001219, caniuse-lite@^1.0.30001286: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001219: version "1.0.30001310" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001310.tgz#da02cd07432c9eece6992689d1b84ca18139eea8" integrity sha512-cb9xTV8k9HTIUA3GnPUJCk0meUnrHL5gy5QePfDjxHyNBcnzPzrHFv5GqfP7ue5b1ZyzZL0RJboD6hQlPXjhjg== @@ -3401,12 +3386,12 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js-compat@^3.20.0, core-js-compat@^3.20.2: - version "3.20.3" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.20.3.tgz#d71f85f94eb5e4bea3407412e549daa083d23bd6" - integrity sha512-c8M5h0IkNZ+I92QhIpuSijOxGAcj3lgpsWdkCqmUTZNwidujF4r3pi6x1DCN+Vcs5qTS2XWWMfWSuCqyupX8gw== +core-js-compat@^3.20.0, core-js-compat@^3.22.1: + version "3.22.4" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.22.4.tgz#d700f451e50f1d7672dcad0ac85d910e6691e579" + integrity sha512-dIWcsszDezkFZrfm1cnB4f/J85gyhiCpxbgBdohWCDtSVuAaChTSpPV7ldOQf/Xds2U5xCIJZOK82G4ZPAIswA== dependencies: - browserslist "^4.19.1" + browserslist "^4.20.3" semver "7.0.0" core-js-pure@^3.0.0: @@ -4119,11 +4104,6 @@ electron-to-chromium@^1.4.118: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.129.tgz#c675793885721beefff99da50f57c6525c2cd238" integrity sha512-GgtN6bsDtHdtXJtlMYZWGB/uOyjZWjmRDumXTas7dGBaB9zUyCjzHet1DY2KhyHN8R0GLbzZWqm4efeddqqyRQ== -electron-to-chromium@^1.4.17: - version "1.4.47" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.47.tgz#5d5535cdbca2b9264abee4d6ea121995e9554bbe" - integrity sha512-ZHc8i3/cgeCRK/vC7W2htAG6JqUmOUgDNn/f9yY9J8UjfLjwzwOVEt4MWmgJAdvmxyrsR5KIFA/6+kUHGY0eUA== - elliptic@^6.5.3: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" @@ -7606,11 +7586,6 @@ node-releases@^1.1.71: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.72.tgz#14802ab6b1039a79a0c7d662b610a5bbd76eacbe" integrity sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw== -node-releases@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" - integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== - node-releases@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.4.tgz#f38252370c43854dc48aa431c766c6c398f40476" @@ -9311,6 +9286,13 @@ redux@^4.0.0, redux@^4.1.2: dependencies: "@babel/runtime" "^7.9.2" +regenerate-unicode-properties@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" + integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties@^8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" @@ -9323,6 +9305,11 @@ regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.1.tgz#cad92ad8e6b591773485fbe05a485caf4f457e6f" integrity sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A== +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + regenerator-runtime@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" @@ -9338,10 +9325,10 @@ regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4, regenerator-runtime@^0 resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== -regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" - integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== +regenerator-transform@^0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537" + integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg== dependencies: "@babel/runtime" "^7.8.4" @@ -9386,11 +9373,28 @@ regexpu-core@^4.7.1: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.2.0" +regexpu-core@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" + integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^10.0.1" + regjsgen "^0.6.0" + regjsparser "^0.8.2" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.0.0" + regjsgen@^0.5.1: version "0.5.2" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== +regjsgen@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" + integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== + regjsparser@^0.6.4: version "0.6.4" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" @@ -9398,6 +9402,13 @@ regjsparser@^0.6.4: dependencies: jsesc "~0.5.0" +regjsparser@^0.8.2: + version "0.8.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" + integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== + dependencies: + jsesc "~0.5.0" + rellax@^1.12.1: version "1.12.1" resolved "https://registry.yarnpkg.com/rellax/-/rellax-1.12.1.tgz#1b433ef7ac4aa3573449a33efab391c112f6b34d" @@ -10883,6 +10894,11 @@ unicode-canonical-property-names-ecmascript@^1.0.4: resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + unicode-match-property-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" @@ -10891,16 +10907,34 @@ unicode-match-property-ecmascript@^1.0.4: unicode-canonical-property-names-ecmascript "^1.0.4" unicode-property-aliases-ecmascript "^1.0.4" +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== +unicode-match-property-value-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" + integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== + unicode-property-aliases-ecmascript@^1.0.4: version "1.1.0" resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== +unicode-property-aliases-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" + integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== + union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" From d96000bd31cb44d4151f992876dab64f77a94980 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 May 2022 10:40:18 +0900 Subject: [PATCH 013/652] Bump express from 4.18.0 to 4.18.1 (#18271) Bumps [express](https://github.com/expressjs/express) from 4.18.0 to 4.18.1. - [Release notes](https://github.com/expressjs/express/releases) - [Changelog](https://github.com/expressjs/express/blob/master/History.md) - [Commits](https://github.com/expressjs/express/compare/4.18.0...4.18.1) --- updated-dependencies: - dependency-name: express dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 590aaac50..039aea790 100644 --- a/package.json +++ b/package.json @@ -95,7 +95,7 @@ "es6-symbol": "^3.1.3", "escape-html": "^1.0.3", "exif-js": "^2.3.0", - "express": "^4.18.0", + "express": "^4.18.1", "file-loader": "^6.2.0", "font-awesome": "^4.7.0", "glob": "^7.2.0", diff --git a/yarn.lock b/yarn.lock index a3900c812..9a8a01b31 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4717,10 +4717,10 @@ expect@^27.5.1: jest-matcher-utils "^27.5.1" jest-message-util "^27.5.1" -express@^4.17.1, express@^4.18.0: - version "4.18.0" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.0.tgz#7a426773325d0dd5406395220614c0db10b6e8e2" - integrity sha512-EJEXxiTQJS3lIPrU1AE2vRuT7X7E+0KBbpm5GSoK524yl0K8X+er8zS2P14E64eqsVNoWbMCT7MpmQ+ErAhgRg== +express@^4.17.1, express@^4.18.1: + version "4.18.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" + integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== dependencies: accepts "~1.3.8" array-flatten "1.1.1" From a6508d652b8a6e99980909bb67db59b39e831c81 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 May 2022 10:40:48 +0900 Subject: [PATCH 014/652] Bump react-select from 5.3.0 to 5.3.1 (#18273) Bumps [react-select](https://github.com/JedWatson/react-select) from 5.3.0 to 5.3.1. - [Release notes](https://github.com/JedWatson/react-select/releases) - [Changelog](https://github.com/JedWatson/react-select/blob/master/docs/CHANGELOG.md) - [Commits](https://github.com/JedWatson/react-select/compare/react-select@5.3.0...react-select@5.3.1) --- updated-dependencies: - dependency-name: react-select dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 137 +++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 101 insertions(+), 38 deletions(-) diff --git a/package.json b/package.json index 039aea790..ab0213cf7 100644 --- a/package.json +++ b/package.json @@ -140,7 +140,7 @@ "react-redux-loading-bar": "^4.0.8", "react-router-dom": "^4.1.1", "react-router-scroll-4": "^1.0.0-beta.1", - "react-select": "^5.3.0", + "react-select": "^5.3.1", "react-sparklines": "^1.7.0", "react-swipeable-views": "^0.14.0", "react-textarea-autosize": "^8.3.3", diff --git a/yarn.lock b/yarn.lock index 9a8a01b31..5836b181b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -557,7 +557,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.16.7": +"@babel/plugin-syntax-jsx@^7.12.13", "@babel/plugin-syntax-jsx@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665" integrity sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q== @@ -1048,7 +1048,7 @@ dependencies: regenerator-runtime "^0.12.0" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.9", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.9", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": version "7.17.9" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== @@ -1093,44 +1093,62 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@emotion/cache@^11.1.3", "@emotion/cache@^11.4.0": - version "11.4.0" - resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.4.0.tgz#293fc9d9a7a38b9aad8e9337e5014366c3b09ac0" - integrity sha512-Zx70bjE7LErRO9OaZrhf22Qye1y4F7iDl+ITjet0J+i+B88PrAOBkKvaAWhxsZf72tDLajwCgfCjJ2dvH77C3g== +"@emotion/babel-plugin@^11.7.1": + version "11.9.2" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.9.2.tgz#723b6d394c89fb2ef782229d92ba95a740576e95" + integrity sha512-Pr/7HGH6H6yKgnVFNEj2MVlreu3ADqftqjqwUvDy/OJzKFgxKeTQ+eeUf20FOTuHVkDON2iNa25rAXVYtWJCjw== + dependencies: + "@babel/helper-module-imports" "^7.12.13" + "@babel/plugin-syntax-jsx" "^7.12.13" + "@babel/runtime" "^7.13.10" + "@emotion/hash" "^0.8.0" + "@emotion/memoize" "^0.7.5" + "@emotion/serialize" "^1.0.2" + babel-plugin-macros "^2.6.1" + convert-source-map "^1.5.0" + escape-string-regexp "^4.0.0" + find-root "^1.1.0" + source-map "^0.5.7" + stylis "4.0.13" + +"@emotion/cache@^11.4.0", "@emotion/cache@^11.7.1": + version "11.7.1" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.7.1.tgz#08d080e396a42e0037848214e8aa7bf879065539" + integrity sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A== dependencies: "@emotion/memoize" "^0.7.4" - "@emotion/sheet" "^1.0.0" + "@emotion/sheet" "^1.1.0" "@emotion/utils" "^1.0.0" "@emotion/weak-memoize" "^0.2.5" - stylis "^4.0.3" + stylis "4.0.13" "@emotion/hash@^0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== -"@emotion/memoize@^0.7.4": +"@emotion/memoize@^0.7.4", "@emotion/memoize@^0.7.5": version "0.7.5" resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.5.tgz#2c40f81449a4e554e9fc6396910ed4843ec2be50" integrity sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ== -"@emotion/react@^11.1.1": - version "11.1.4" - resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.1.4.tgz#ddee4247627ff7dd7d0c6ae52f1cfd6b420357d2" - integrity sha512-9gkhrW8UjV4IGRnEe4/aGPkUxoGS23aD9Vu6JCGfEDyBYL+nGkkRBoMFGAzCT9qFdyUvQp4UUtErbKWxq/JS4A== +"@emotion/react@^11.8.1": + version "11.9.0" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.9.0.tgz#b6d42b1db3bd7511e7a7c4151dc8bc82e14593b8" + integrity sha512-lBVSF5d0ceKtfKCDQJveNAtkC7ayxpVlgOohLgXqRwqWr9bOf4TZAFFyIcNngnV6xK6X4x2ZeXq7vliHkoVkxQ== dependencies: - "@babel/runtime" "^7.7.2" - "@emotion/cache" "^11.1.3" - "@emotion/serialize" "^1.0.0" - "@emotion/sheet" "^1.0.1" - "@emotion/utils" "^1.0.0" + "@babel/runtime" "^7.13.10" + "@emotion/babel-plugin" "^11.7.1" + "@emotion/cache" "^11.7.1" + "@emotion/serialize" "^1.0.3" + "@emotion/utils" "^1.1.0" "@emotion/weak-memoize" "^0.2.5" hoist-non-react-statics "^3.3.1" -"@emotion/serialize@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.0.0.tgz#1a61f4f037cf39995c97fc80ebe99abc7b191ca9" - integrity sha512-zt1gm4rhdo5Sry8QpCOpopIUIKU+mUSpV9WNmFILUraatm5dttNEaYzUWWSboSMUE6PtN2j1cAsuvcugfdI3mw== +"@emotion/serialize@^1.0.2", "@emotion/serialize@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.0.3.tgz#99e2060c26c6292469fb30db41f4690e1c8fea63" + integrity sha512-2mSSvgLfyV3q+iVh3YWgNlUc2a9ZlDU7DjuP5MjK3AXRR0dYigCrP99aeFtaB2L/hjfEZdSThn5dsZ0ufqbvsA== dependencies: "@emotion/hash" "^0.8.0" "@emotion/memoize" "^0.7.4" @@ -1138,10 +1156,10 @@ "@emotion/utils" "^1.0.0" csstype "^3.0.2" -"@emotion/sheet@^1.0.0", "@emotion/sheet@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.0.1.tgz#245f54abb02dfd82326e28689f34c27aa9b2a698" - integrity sha512-GbIvVMe4U+Zc+929N1V7nW6YYJtidj31lidSmdYcWozwoBIObXBnaJkKNDjZrLm9Nc0BR+ZyHNaRZxqNZbof5g== +"@emotion/sheet@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.1.0.tgz#56d99c41f0a1cda2726a05aa6a20afd4c63e58d2" + integrity sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g== "@emotion/unitless@^0.7.5": version "0.7.5" @@ -1153,6 +1171,11 @@ resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.0.0.tgz#abe06a83160b10570816c913990245813a2fd6af" integrity sha512-mQC2b3XLDs6QCW+pDQDiyO/EdGZYOygE8s5N5rrzjSI4M3IejPE/JPndCBwRT9z982aqQNi6beWs1UeayrQxxA== +"@emotion/utils@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.1.0.tgz#86b0b297f3f1a0f2bdb08eeac9a2f49afd40d0cf" + integrity sha512-iRLa/Y4Rs5H/f2nimczYmS5kFJEbpiVvgN3XVfZ022IYhuNA1IRSHEizcof88LtCTXtl9S2Cxt32KgaXEu72JQ== + "@emotion/weak-memoize@^0.2.5": version "0.2.5" resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" @@ -2444,6 +2467,15 @@ babel-plugin-lodash@^3.3.4: lodash "^4.17.10" require-package-name "^2.0.1" +babel-plugin-macros@^2.6.1: + version "2.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== + dependencies: + "@babel/runtime" "^7.7.2" + cosmiconfig "^6.0.0" + resolve "^1.12.0" + babel-plugin-macros@^3.0.1: version "3.1.0" resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" @@ -3359,6 +3391,13 @@ convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: dependencies: safe-buffer "~5.1.1" +convert-source-map@^1.5.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== + dependencies: + safe-buffer "~5.1.1" + cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -3424,6 +3463,17 @@ cosmiconfig@^5.0.0: js-yaml "^3.13.1" parse-json "^4.0.0" +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + cosmiconfig@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" @@ -4913,6 +4963,11 @@ find-cache-dir@^3.3.1: make-dir "^3.0.2" pkg-dir "^4.1.0" +find-root@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -5662,6 +5717,14 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" +import-fresh@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + import-from@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" @@ -9084,14 +9147,14 @@ react-router@^4.3.1: prop-types "^15.6.1" warning "^4.0.1" -react-select@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.3.0.tgz#dc77c1f95e1037ec4cb01c5e5d6272d80be8d3f6" - integrity sha512-GM6Fbv1+X+kb3e5Fc4oNeyOJkCIesY/D4NBiReKlGY4RxoeztFYm3J0KREgwMaIKQqwTiuLqTlpUBY3SYw5goQ== +react-select@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.3.1.tgz#2cb651b71493e494c56f6b4ce40011669b34bd95" + integrity sha512-Y195MmhDoDAj/8gTDyYZU1Raf7tmZd81wxM6RkFko4pqJ4Xv0/ilqUMtSn+GYkwmSlTWeMlzh+e+t7PJgtuXPw== dependencies: "@babel/runtime" "^7.12.0" "@emotion/cache" "^11.4.0" - "@emotion/react" "^11.1.1" + "@emotion/react" "^11.8.1" "@types/react-transition-group" "^4.4.0" memoize-one "^5.0.0" prop-types "^15.6.0" @@ -10078,7 +10141,7 @@ source-map@0.5.6: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" integrity sha1-dc449SvwczxafwwRjYEzSiu19BI= -source-map@^0.5.6: +source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -10420,10 +10483,10 @@ stylehacks@^4.0.0: postcss "^7.0.0" postcss-selector-parser "^3.0.0" -stylis@^4.0.3: - version "4.0.6" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.0.6.tgz#0d8b97b6bc4748bea46f68602b6df27641b3c548" - integrity sha512-1igcUEmYFBEO14uQHAJhCUelTR5jPztfdVKrYxRnDa5D5Dn3w0NxXupJNPr/VV/yRfZYEAco8sTIRZzH3sRYKg== +stylis@4.0.13: + version "4.0.13" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.0.13.tgz#f5db332e376d13cc84ecfe5dace9a2a51d954c91" + integrity sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag== substring-trie@^1.0.2: version "1.0.2" @@ -11581,7 +11644,7 @@ yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== -yaml@^1.10.0: +yaml@^1.10.0, yaml@^1.7.2: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== From aed1c47cb15ac6fc62da9ff479d639244b5b1443 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 May 2022 10:41:21 +0900 Subject: [PATCH 015/652] Bump sass from 1.50.1 to 1.51.0 (#18285) Bumps [sass](https://github.com/sass/dart-sass) from 1.50.1 to 1.51.0. - [Release notes](https://github.com/sass/dart-sass/releases) - [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md) - [Commits](https://github.com/sass/dart-sass/compare/1.50.1...1.51.0) --- updated-dependencies: - dependency-name: sass dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index ab0213cf7..80fbcc511 100644 --- a/package.json +++ b/package.json @@ -154,7 +154,7 @@ "requestidlecallback": "^0.3.0", "reselect": "^4.1.5", "rimraf": "^3.0.2", - "sass": "^1.50.1", + "sass": "^1.51.0", "sass-loader": "^10.2.0", "stacktrace-js": "^2.0.2", "stringz": "^2.1.0", diff --git a/yarn.lock b/yarn.lock index 5836b181b..4aa6d32d0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9743,10 +9743,10 @@ sass-loader@^10.2.0: schema-utils "^3.0.0" semver "^7.3.2" -sass@^1.50.1: - version "1.50.1" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.50.1.tgz#e9b078a1748863013c4712d2466ce8ca4e4ed292" - integrity sha512-noTnY41KnlW2A9P8sdwESpDmo+KBNkukI1i8+hOK3footBUcohNHtdOJbckp46XO95nuvcHDDZ+4tmOnpK3hjw== +sass@^1.51.0: + version "1.51.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.51.0.tgz#25ea36cf819581fe1fe8329e8c3a4eaaf70d2845" + integrity sha512-haGdpTgywJTvHC2b91GSq+clTKGbtkkZmVAb82jZQN/wTy6qs8DdFm2lhEQbEwrY0QDRgSQ3xDurqM977C3noA== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" From 7e244879feaa8de9894e1147ff49a7e762fe462a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 3 May 2022 09:09:09 +0200 Subject: [PATCH 016/652] Change "Conversations" back to "Direct messages" and add warning in web UI (#18289) Partially reverts #18146 --- app/javascript/mastodon/components/status_action_bar.js | 1 + .../mastodon/features/account/components/header.js | 1 + app/javascript/mastodon/features/direct_timeline/index.js | 5 +++-- app/javascript/mastodon/features/getting_started/index.js | 2 +- app/javascript/mastodon/features/keyboard_shortcuts/index.js | 2 +- .../mastodon/features/ui/components/navigation_panel.js | 2 +- app/javascript/styles/mastodon/components.scss | 2 +- 7 files changed, 9 insertions(+), 6 deletions(-) diff --git a/app/javascript/mastodon/components/status_action_bar.js b/app/javascript/mastodon/components/status_action_bar.js index a21b066a5..1d8fe23da 100644 --- a/app/javascript/mastodon/components/status_action_bar.js +++ b/app/javascript/mastodon/components/status_action_bar.js @@ -266,6 +266,7 @@ class StatusActionBar extends ImmutablePureComponent { menu.push({ text: intl.formatMessage(messages.redraft), action: this.handleRedraftClick }); } else { menu.push({ text: intl.formatMessage(messages.mention, { name: account.get('username') }), action: this.handleMentionClick }); + menu.push({ text: intl.formatMessage(messages.direct, { name: account.get('username') }), action: this.handleDirectClick }); menu.push(null); if (relationship && relationship.get('muting')) { diff --git a/app/javascript/mastodon/features/account/components/header.js b/app/javascript/mastodon/features/account/components/header.js index 83dc8d9b8..2830bee29 100644 --- a/app/javascript/mastodon/features/account/components/header.js +++ b/app/javascript/mastodon/features/account/components/header.js @@ -177,6 +177,7 @@ class Header extends ImmutablePureComponent { if (account.get('id') !== me) { menu.push({ text: intl.formatMessage(messages.mention, { name: account.get('username') }), action: this.props.onMention }); + menu.push({ text: intl.formatMessage(messages.direct, { name: account.get('username') }), action: this.props.onDirect }); menu.push(null); } diff --git a/app/javascript/mastodon/features/direct_timeline/index.js b/app/javascript/mastodon/features/direct_timeline/index.js index 46a56e942..debb2d721 100644 --- a/app/javascript/mastodon/features/direct_timeline/index.js +++ b/app/javascript/mastodon/features/direct_timeline/index.js @@ -10,7 +10,7 @@ import { connectDirectStream } from '../../actions/streaming'; import ConversationsListContainer from './containers/conversations_list_container'; const messages = defineMessages({ - title: { id: 'column.conversations', defaultMessage: 'Conversations' }, + title: { id: 'column.direct', defaultMessage: 'Direct messages' }, }); export default @connect() @@ -91,7 +91,8 @@ class DirectTimeline extends React.PureComponent { scrollKey={`direct_timeline-${columnId}`} timelineId='direct' onLoadMore={this.handleLoadMore} - emptyMessage={} + prepend={
} + emptyMessage={} /> ); diff --git a/app/javascript/mastodon/features/getting_started/index.js b/app/javascript/mastodon/features/getting_started/index.js index 678fb089c..65cee7498 100644 --- a/app/javascript/mastodon/features/getting_started/index.js +++ b/app/javascript/mastodon/features/getting_started/index.js @@ -22,7 +22,7 @@ const messages = defineMessages({ settings_subheading: { id: 'column_subheading.settings', defaultMessage: 'Settings' }, community_timeline: { id: 'navigation_bar.community_timeline', defaultMessage: 'Local timeline' }, explore: { id: 'navigation_bar.explore', defaultMessage: 'Explore' }, - direct: { id: 'column.conversations', defaultMessage: 'Conversations' }, + direct: { id: 'navigation_bar.direct', defaultMessage: 'Direct messages' }, bookmarks: { id: 'navigation_bar.bookmarks', defaultMessage: 'Bookmarks' }, preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' }, follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' }, diff --git a/app/javascript/mastodon/features/keyboard_shortcuts/index.js b/app/javascript/mastodon/features/keyboard_shortcuts/index.js index 5f38e2f4e..8f1631d82 100644 --- a/app/javascript/mastodon/features/keyboard_shortcuts/index.js +++ b/app/javascript/mastodon/features/keyboard_shortcuts/index.js @@ -122,7 +122,7 @@ class KeyboardShortcuts extends ImmutablePureComponent { g+d - + g+s diff --git a/app/javascript/mastodon/features/ui/components/navigation_panel.js b/app/javascript/mastodon/features/ui/components/navigation_panel.js index 9a3940b5b..fe4ed5d77 100644 --- a/app/javascript/mastodon/features/ui/components/navigation_panel.js +++ b/app/javascript/mastodon/features/ui/components/navigation_panel.js @@ -16,7 +16,7 @@ const NavigationPanel = () => ( - + diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index c04b30420..472fa9407 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -4053,7 +4053,7 @@ a.status-card.compact:hover { } & > span { - max-width: 400px; + max-width: 500px; } a { From e2d1d3b4289306d23be71271a1e00be404472100 Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 3 May 2022 12:30:40 +0200 Subject: [PATCH 017/652] =?UTF-8?q?Change=20=E2=80=9COnly=20people=20I=20m?= =?UTF-8?q?ention=E2=80=9D=20to=20=E2=80=9CMentioned=20people=20only?= =?UTF-8?q?=E2=80=9D=20(#18291)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mastodon/features/compose/components/privacy_dropdown.js | 2 +- app/javascript/mastodon/locales/defaultMessages.json | 4 ++-- app/javascript/mastodon/locales/en.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/javascript/mastodon/features/compose/components/privacy_dropdown.js b/app/javascript/mastodon/features/compose/components/privacy_dropdown.js index c94db59c5..1f0e998d3 100644 --- a/app/javascript/mastodon/features/compose/components/privacy_dropdown.js +++ b/app/javascript/mastodon/features/compose/components/privacy_dropdown.js @@ -16,7 +16,7 @@ const messages = defineMessages({ unlisted_long: { id: 'privacy.unlisted.long', defaultMessage: 'Visible for all, but opted-out of discovery features' }, private_short: { id: 'privacy.private.short', defaultMessage: 'Followers only' }, private_long: { id: 'privacy.private.long', defaultMessage: 'Visible for followers only' }, - direct_short: { id: 'privacy.direct.short', defaultMessage: 'Only people I mention' }, + direct_short: { id: 'privacy.direct.short', defaultMessage: 'Mentioned people only' }, direct_long: { id: 'privacy.direct.long', defaultMessage: 'Visible for mentioned users only' }, change_privacy: { id: 'privacy.change', defaultMessage: 'Adjust status privacy' }, }); diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 7a8af7042..b48495325 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -1326,7 +1326,7 @@ "id": "privacy.private.long" }, { - "defaultMessage": "Only people I mention", + "defaultMessage": "Mentioned people only", "id": "privacy.direct.short" }, { @@ -3657,4 +3657,4 @@ ], "path": "app/javascript/mastodon/features/video/index.json" } -] \ No newline at end of file +] diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index e20c5e497..26fc2cb52 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -366,7 +366,7 @@ "poll_button.remove_poll": "Remove poll", "privacy.change": "Change post privacy", "privacy.direct.long": "Visible for mentioned users only", - "privacy.direct.short": "Only people I mention", + "privacy.direct.short": "Mentioned people only", "privacy.private.long": "Visible for followers only", "privacy.private.short": "Followers only", "privacy.public.long": "Visible for all", From 340fa34513b5a290ee0ce7d348a6dd4cf14d4a80 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 4 May 2022 00:26:46 +0200 Subject: [PATCH 018/652] Bump minimum Ruby version (#18294) Mastodon has been incompatible with Ruby 2.5 for a few releases due to some dependencies, this just updates the Gemfile description to match that situation. --- Gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index 6bcec97ad..b34061a26 100644 --- a/Gemfile +++ b/Gemfile @@ -1,7 +1,7 @@ # frozen_string_literal: true source 'https://rubygems.org' -ruby '>= 2.5.0', '< 3.1.0' +ruby '>= 2.6.0', '< 3.1.0' gem 'pkg-config', '~> 1.4' gem 'rexml', '~> 3.2' From 014065913ca59ae58559239eabd49f5c06e62dbc Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 4 May 2022 00:57:42 +0200 Subject: [PATCH 019/652] Bump version to 3.5.2 (#18295) * Bump version to 3.5.2 * Change some entries to be more clear * Add some extra notes * Fix line wrap Co-authored-by: Eugen Rochko --- CHANGELOG.md | 52 +++++++++++++++++++++++++++++++++++++++++ chart/values.yaml | 2 +- lib/mastodon/version.rb | 2 +- 3 files changed, 54 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8814d5a4c..841c01bfb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,58 @@ Changelog All notable changes to this project will be documented in this file. +## [3.5.2] - 2022-05-04 +### Added + +- Add warning on direct messages screen in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/18289)) + - We already had a warning when composing a direct message, it has now been reworded to be more clear + - Same warning is now displayed when viewing sent and received direct messages +- Add ability to set approval-based registration through tootctl ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18248)) +- Add pre-filling of domain from search filter in domain allow/block admin UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18172)) + +## Changed + +- Change name of “Direct” visibility to “Mentioned people only” in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/18146), [Gargron](https://github.com/mastodon/mastodon/pull/18289), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18291)) +- Change trending posts to only show one post from each account ([Gargron](https://github.com/mastodon/mastodon/pull/18181)) +- Change half-life of trending posts from 6 hours to 2 hours ([Gargron](https://github.com/mastodon/mastodon/pull/18182)) +- Change full-text search feature to also include polls you have voted in ([tribela](https://github.com/mastodon/mastodon/pull/18070)) +- Change Redis from using one connection per process, to using a connection pool ([Gargron](https://github.com/mastodon/mastodon/pull/18135), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18160), [Gargron](https://github.com/mastodon/mastodon/pull/18171)) + - Different threads no longer have to wait on a mutex over a single connection + - However, this does increase the number of Redis connections by a fair amount + - We are planning to optimize Redis use so that the pool can be made smaller in the future + +## Removed + +- Remove IP matching from e-mail domain blocks ([Gargron](https://github.com/mastodon/mastodon/pull/18190)) + - The IPs of the blocked e-mail domain or its MX records are no longer checked + - Previously it was too easy to block e-mail providers by mistake + +## Fixed + +- Fix compatibility with Friendica's pinned posts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18254), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18260)) +- Fix error when looking up handle with surrounding spaces in REST API ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18225)) +- Fix double render error when authorizing interaction ([Gargron](https://github.com/mastodon/mastodon/pull/18203)) +- Fix error when a post references an invalid media attachment ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18211)) +- Fix error when trying to revoke OAuth token without supplying a token ([Gargron](https://github.com/mastodon/mastodon/pull/18205)) +- Fix error caused by missing subject in Webfinger response ([Gargron](https://github.com/mastodon/mastodon/pull/18204)) +- Fix error on attempting to delete an account moderation note ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18196)) +- Fix light-mode emoji borders in web UI ([Gaelan](https://github.com/mastodon/mastodon/pull/18131)) +- Fix being able to scroll away from the loading bar in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/18170)) +- Fix error when a bookmark or favorite has been reported and deleted ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18174)) +- Fix being offered empty “Server rules violation” report option in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18165)) +- Fix temporary network errors preventing from authorizing interactions with remote accounts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18161)) +- Fix incorrect link in "new trending tags" email ([cdzombak](https://github.com/mastodon/mastodon/pull/18156)) +- Fix missing indexes on some foreign keys ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18157)) +- Fix n+1 query on feed merge and populate operations ([Gargron](https://github.com/mastodon/mastodon/pull/18111)) +- Fix feed unmerge worker being exceptionally slow in some conditions ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18110)) +- Fix PeerTube videos appearing with an erroneous “Edited at” marker ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18100)) +- Fix instance actor being created incorrectly when running through migrations ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18109)) +- Fix web push notifications containing HTML entities ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18071)) +- Fix inconsistent parsing of `TRUSTED_PROXY_IP` ([ykzts](https://github.com/mastodon/mastodon/pull/18051)) +- Fix error when fetching pinned posts ([tribela](https://github.com/mastodon/mastodon/pull/18030)) +- Fix wrong optimization in feed populate operation ([dogelover911](https://github.com/mastodon/mastodon/pull/18009)) +- Fix error in alias settings page ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18004)) + ## [3.5.1] - 2022-04-08 ### Added diff --git a/chart/values.yaml b/chart/values.yaml index ef105f625..57d0b7391 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -8,7 +8,7 @@ image: # built from the most recent commit # # tag: latest - tag: v3.5.1 + tag: v3.5.2 # use `Always` when using `latest` tag pullPolicy: IfNotPresent diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index 23e164b2e..73024e612 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -13,7 +13,7 @@ module Mastodon end def patch - 1 + 2 end def flags From a01580f09f33c275fcc0ffe616b5b5b403f46cae Mon Sep 17 00:00:00 2001 From: mayaeh Date: Wed, 4 May 2022 09:40:26 +0900 Subject: [PATCH 020/652] Update translation strings for direct message (#18300) --- .../mastodon/locales/defaultMessages.json | 30 ++++++++++++------- app/javascript/mastodon/locales/en.json | 7 +++-- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index b48495325..90dbd5e9a 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -1616,12 +1616,20 @@ { "descriptors": [ { - "defaultMessage": "Conversations", - "id": "column.conversations" + "defaultMessage": "Direct messages", + "id": "column.direct" }, { - "defaultMessage": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", - "id": "empty_column.conversations" + "defaultMessage": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "id": "compose_form.encryption_warning" + }, + { + "defaultMessage": "Learn more", + "id": "compose_form.direct_message_warning_learn_more" + }, + { + "defaultMessage": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "id": "empty_column.direct" } ], "path": "app/javascript/mastodon/features/direct_timeline/index.json" @@ -1965,8 +1973,8 @@ "id": "navigation_bar.explore" }, { - "defaultMessage": "Conversations", - "id": "column.conversations" + "defaultMessage": "Direct messages", + "id": "navigation_bar.direct" }, { "defaultMessage": "Bookmarks", @@ -2222,8 +2230,8 @@ "id": "keyboard_shortcuts.federated" }, { - "defaultMessage": "to open conversations column", - "id": "keyboard_shortcuts.conversations" + "defaultMessage": "to open direct messages column", + "id": "keyboard_shortcuts.direct" }, { "defaultMessage": "to open \"get started\" column", @@ -3513,8 +3521,8 @@ "id": "tabs_bar.federated_timeline" }, { - "defaultMessage": "Conversations", - "id": "column.conversations" + "defaultMessage": "Direct messages", + "id": "navigation_bar.direct" }, { "defaultMessage": "Favourites", @@ -3657,4 +3665,4 @@ ], "path": "app/javascript/mastodon/features/video/index.json" } -] +] \ No newline at end of file diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 26fc2cb52..dd9f52374 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -70,7 +70,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", @@ -166,7 +166,7 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked posts yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "There are no blocked domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite posts yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Boost post", "keyboard_shortcuts.column": "Focus column", "keyboard_shortcuts.compose": "Focus compose textarea", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "Move down in the list", "keyboard_shortcuts.enter": "Open post", "keyboard_shortcuts.favourite": "Favourite post", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new post", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Blocked domains", "navigation_bar.edit_profile": "Edit profile", From 6e736f2452d2e6fdd4da6d8f6f2f44da9d83fa4f Mon Sep 17 00:00:00 2001 From: rinsuki <428rinsuki+git@gmail.com> Date: Wed, 4 May 2022 10:20:44 +0900 Subject: [PATCH 021/652] fix: embed.js doesn't expands iframes height (#18301) also including some refactoring: - add `// @ts-check` - use Map to completely avoid prototype pollution - assign random id to each iframe for reduce chance to brute-force attack, and leak of iframe counts - check iframe.contentWindow and MessageEvent.source to validate message is coming from correct iframe (it works on latest Chrome/Firefox/Safari but I'm not sure this is allowed by spec) follow-up of #17420 fix #18299 --- public/embed.js | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/public/embed.js b/public/embed.js index d597fd33c..5607c24d5 100644 --- a/public/embed.js +++ b/public/embed.js @@ -1,6 +1,11 @@ +// @ts-check + (function() { 'use strict'; + /** + * @param {() => void} loaded + */ var ready = function(loaded) { if (['interactive', 'complete'].indexOf(document.readyState) !== -1) { loaded(); @@ -10,26 +15,43 @@ }; ready(function() { - var iframes = []; + /** @type {Map} */ + var iframes = new Map(); window.addEventListener('message', function(e) { var data = e.data || {}; - if (data.type !== 'setHeight' || !iframes[data.id] || window.location.origin !== e.origin || data.id.toString() === '__proto__') { + if (typeof data !== 'object' || data.type !== 'setHeight' || !iframes.has(data.id)) { return; } - iframes[data.id].height = data.height; + var iframe = iframes.get(data.id); + + if ('source' in e && iframe.contentWindow !== e.source) { + return; + } + + iframe.height = data.height; }); [].forEach.call(document.querySelectorAll('iframe.mastodon-embed'), function(iframe) { + // select unique id for each iframe + var id = 0, failCount = 0, idBuffer = new Uint32Array(1); + while (id === 0 || iframes.has(id)) { + id = crypto.getRandomValues(idBuffer)[0]; + failCount++; + if (failCount > 100) { + // give up and assign (easily guessable) unique number if getRandomValues is broken or no luck + id = -(iframes.size + 1); + break; + } + } + + iframes.set(id, iframe); + iframe.scrolling = 'no'; iframe.style.overflow = 'hidden'; - iframes.push(iframe); - - var id = iframes.length - 1; - iframe.onload = function() { iframe.contentWindow.postMessage({ type: 'setHeight', From 381415bd97e032145b7e015ec89f33de714272cc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 May 2022 13:42:37 +0900 Subject: [PATCH 022/652] Bump redis from 4.0.6 to 4.1.0 (#18282) Bumps [redis](https://github.com/redis/node-redis) from 4.0.6 to 4.1.0. - [Release notes](https://github.com/redis/node-redis/releases) - [Changelog](https://github.com/redis/node-redis/blob/master/CHANGELOG.md) - [Commits](https://github.com/redis/node-redis/compare/redis@4.0.6...redis@4.1.0) --- updated-dependencies: - dependency-name: redis dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 101 ++++++++++++++++++++++----------------------------- 2 files changed, 45 insertions(+), 58 deletions(-) diff --git a/package.json b/package.json index 80fbcc511..18db69724 100644 --- a/package.json +++ b/package.json @@ -145,7 +145,7 @@ "react-swipeable-views": "^0.14.0", "react-textarea-autosize": "^8.3.3", "react-toggle": "^4.1.2", - "redis": "^4.0.6", + "redis": "^4.1.0", "redux": "^4.1.2", "redux-immutable": "^4.0.0", "redux-thunk": "^2.4.1", diff --git a/yarn.lock b/yarn.lock index 4aa6d32d0..bb6daf7c4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1458,41 +1458,6 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@node-redis/bloom@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@node-redis/bloom/-/bloom-1.0.1.tgz#144474a0b7dc4a4b91badea2cfa9538ce0a1854e" - integrity sha512-mXEBvEIgF4tUzdIN89LiYsbi6//EdpFA7L8M+DHCvePXg+bfHWi+ct5VI6nHUFQE5+ohm/9wmgihCH3HSkeKsw== - -"@node-redis/client@1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@node-redis/client/-/client-1.0.5.tgz#ebac5e2bbf12214042a37621604973a954ede755" - integrity sha512-ESZ3bd1f+od62h4MaBLKum+klVJfA4wAeLHcVQBkoXa1l0viFesOWnakLQqKg+UyrlJhZmXJWtu0Y9v7iTMrig== - dependencies: - cluster-key-slot "1.1.0" - generic-pool "3.8.2" - redis-parser "3.0.0" - yallist "4.0.0" - -"@node-redis/graph@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@node-redis/graph/-/graph-1.0.0.tgz#baf8eaac4a400f86ea04d65ec3d65715fd7951ab" - integrity sha512-mRSo8jEGC0cf+Rm7q8mWMKKKqkn6EAnA9IA2S3JvUv/gaWW/73vil7GLNwion2ihTptAm05I9LkepzfIXUKX5g== - -"@node-redis/json@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@node-redis/json/-/json-1.0.2.tgz#8ad2d0f026698dc1a4238cc3d1eb099a3bee5ab8" - integrity sha512-qVRgn8WfG46QQ08CghSbY4VhHFgaTY71WjpwRBGEuqGPfWwfRcIf3OqSpR7Q/45X+v3xd8mvYjywqh0wqJ8T+g== - -"@node-redis/search@1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@node-redis/search/-/search-1.0.5.tgz#96050007eb7c50a7e47080320b4f12aca8cf94c4" - integrity sha512-MCOL8iCKq4v+3HgEQv8zGlSkZyXSXtERgrAJ4TSryIG/eLFy84b57KmNNa/V7M1Q2Wd2hgn2nPCGNcQtk1R1OQ== - -"@node-redis/time-series@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@node-redis/time-series/-/time-series-1.0.2.tgz#5dd3638374edd85ebe0aa6b0e87addc88fb9df69" - integrity sha512-HGQ8YooJ8Mx7l28tD7XjtB3ImLEjlUxG1wC1PAjxu6hPJqjPshUZxAICzDqDjtIbhDTf48WXXUcx8TQJB1XTKA== - "@npmcli/move-file@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464" @@ -1510,6 +1475,40 @@ resolved "https://registry.yarnpkg.com/@rails/ujs/-/ujs-6.1.5.tgz#bb1afddd0d771f00924f44b21634969e329532e1" integrity sha512-Ir4yd2fdDldWIghavPr874copVKf6OOoecKHZiFRlPtm38tFvhyxr+ywzNieXGwolF9JQe3D5GrM8ejkzUgh5Q== +"@redis/bloom@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@redis/bloom/-/bloom-1.0.2.tgz#42b82ec399a92db05e29fffcdfd9235a5fc15cdf" + integrity sha512-EBw7Ag1hPgFzdznK2PBblc1kdlj5B5Cw3XwI9/oG7tSn85/HKy3X9xHy/8tm/eNXJYHLXHJL/pkwBpFMVVefkw== + +"@redis/client@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@redis/client/-/client-1.1.0.tgz#e52a85aee802796ceb14bf27daf9550f51f238b8" + integrity sha512-xO9JDIgzsZYDl3EvFhl6LC52DP3q3GCMUer8zHgKV6qSYsq1zB+pZs9+T80VgcRogrlRYhi4ZlfX6A+bHiBAgA== + dependencies: + cluster-key-slot "1.1.0" + generic-pool "3.8.2" + yallist "4.0.0" + +"@redis/graph@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@redis/graph/-/graph-1.0.1.tgz#eabc58ba99cd70d0c907169c02b55497e4ec8a99" + integrity sha512-oDE4myMCJOCVKYMygEMWuriBgqlS5FqdWerikMoJxzmmTUErnTRRgmIDa2VcgytACZMFqpAOWDzops4DOlnkfQ== + +"@redis/json@1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@redis/json/-/json-1.0.3.tgz#a13fde1d22ebff0ae2805cd8e1e70522b08ea866" + integrity sha512-4X0Qv0BzD9Zlb0edkUoau5c1bInWSICqXAGrpwEltkncUwcxJIGEcVryZhLgb0p/3PkKaLIWkjhHRtLe9yiA7Q== + +"@redis/search@1.0.6": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@redis/search/-/search-1.0.6.tgz#53d7451c2783f011ebc48ec4c2891264e0b22f10" + integrity sha512-pP+ZQRis5P21SD6fjyCeLcQdps+LuTzp2wdUbzxEmNhleighDDTD5ck8+cYof+WLec4csZX7ks+BuoMw0RaZrA== + +"@redis/time-series@1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@redis/time-series/-/time-series-1.0.3.tgz#4cfca8e564228c0bddcdf4418cba60c20b224ac4" + integrity sha512-OFp0q4SGrTH0Mruf6oFsHGea58u8vS/iI5+NpYdicaM+7BgqBZH8FFvNZ8rYYLrUO/QRqMq72NpXmxLVNcdmjA== + "@sinonjs/commons@^1.7.0": version "1.8.1" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.1.tgz#e7df00f98a203324f6dc7cc606cad9d4a8ab2217" @@ -9308,29 +9307,17 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" -redis-errors@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad" - integrity sha1-62LSrbFeTq9GEMBK/hUpOEJQq60= - -redis-parser@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4" - integrity sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ= +redis@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/redis/-/redis-4.1.0.tgz#6e400e8edf219e39281afe95e66a3d5f7dcf7289" + integrity sha512-5hvJ8wbzpCCiuN1ges6tx2SAh2XXCY0ayresBmu40/SGusWHFW86TAlIPpbimMX2DFHOX7RN34G2XlPA1Z43zg== dependencies: - redis-errors "^1.0.0" - -redis@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/redis/-/redis-4.0.6.tgz#a2ded4d9f4f4bad148e54781051618fc684cd858" - integrity sha512-IaPAxgF5dV0jx+A9l6yd6R9/PAChZIoAskDVRzUODeLDNhsMlq7OLLTmu0AwAr0xjrJ1bibW5xdpRwqIQ8Q0Xg== - dependencies: - "@node-redis/bloom" "1.0.1" - "@node-redis/client" "1.0.5" - "@node-redis/graph" "1.0.0" - "@node-redis/json" "1.0.2" - "@node-redis/search" "1.0.5" - "@node-redis/time-series" "1.0.2" + "@redis/bloom" "1.0.2" + "@redis/client" "1.1.0" + "@redis/graph" "1.0.1" + "@redis/json" "1.0.3" + "@redis/search" "1.0.6" + "@redis/time-series" "1.0.3" redux-immutable@^4.0.0: version "4.0.0" From 881d71e58c7aa916a3beb2abdda4e76f4f4fab21 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 May 2022 13:43:02 +0900 Subject: [PATCH 023/652] Bump rubocop from 1.27.0 to 1.28.2 (#18084) Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.27.0 to 1.28.2. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.27.0...v1.28.2) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Gemfile b/Gemfile index b34061a26..be951757d 100644 --- a/Gemfile +++ b/Gemfile @@ -132,7 +132,7 @@ group :development do gem 'letter_opener', '~> 1.8' gem 'letter_opener_web', '~> 2.0' gem 'memory_profiler' - gem 'rubocop', '~> 1.27', require: false + gem 'rubocop', '~> 1.28', require: false gem 'rubocop-rails', '~> 2.14', require: false gem 'brakeman', '~> 5.2', require: false gem 'bundler-audit', '~> 0.9', require: false diff --git a/Gemfile.lock b/Gemfile.lock index 6897519d4..df2bd4522 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -442,7 +442,7 @@ GEM orm_adapter (0.5.0) ox (2.14.11) parallel (1.22.1) - parser (3.1.1.0) + parser (3.1.2.0) ast (~> 2.4.1) parslet (2.0.0) pastel (0.8.0) @@ -534,7 +534,7 @@ GEM redis (4.5.1) redis-namespace (1.8.2) redis (>= 3.0.4) - regexp_parser (2.3.0) + regexp_parser (2.3.1) request_store (1.5.1) rack (>= 1.4) responders (3.0.1) @@ -569,13 +569,13 @@ GEM rspec-support (3.11.0) rspec_junit_formatter (0.5.1) rspec-core (>= 2, < 4, != 2.12.0) - rubocop (1.27.0) + rubocop (1.28.2) parallel (~> 1.10) parser (>= 3.1.0.0) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.8, < 3.0) rexml - rubocop-ast (>= 1.16.0, < 2.0) + rubocop-ast (>= 1.17.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 1.4.0, < 3.0) rubocop-ast (1.17.0) @@ -825,7 +825,7 @@ DEPENDENCIES rspec-rails (~> 5.1) rspec-sidekiq (~> 3.1) rspec_junit_formatter (~> 0.5) - rubocop (~> 1.27) + rubocop (~> 1.28) rubocop-rails (~> 2.14) ruby-progressbar (~> 1.11) sanitize (~> 6.0) From f18c620d4b44e6c270454d236a0fbda629cf09b1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 May 2022 13:49:53 +0900 Subject: [PATCH 024/652] Bump brakeman from 5.2.2 to 5.2.3 (#18274) Bumps [brakeman](https://github.com/presidentbeef/brakeman) from 5.2.2 to 5.2.3. - [Release notes](https://github.com/presidentbeef/brakeman/releases) - [Changelog](https://github.com/presidentbeef/brakeman/blob/main/CHANGES.md) - [Commits](https://github.com/presidentbeef/brakeman/compare/v5.2.2...v5.2.3) --- updated-dependencies: - dependency-name: brakeman dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index df2bd4522..896ccbfe1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -116,7 +116,7 @@ GEM ffi (~> 1.14) bootsnap (1.11.1) msgpack (~> 1.2) - brakeman (5.2.2) + brakeman (5.2.3) browser (4.2.0) brpoplpush-redis_script (0.1.2) concurrent-ruby (~> 1.0, >= 1.0.5) From c08bc2da61dbad4643910c7d54d6c1e5bbcf8ad3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 May 2022 13:55:05 +0900 Subject: [PATCH 025/652] Bump ws from 8.5.0 to 8.6.0 (#18279) Bumps [ws](https://github.com/websockets/ws) from 8.5.0 to 8.6.0. - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/8.5.0...8.6.0) --- updated-dependencies: - dependency-name: ws dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 18db69724..94228ff4c 100644 --- a/package.json +++ b/package.json @@ -171,7 +171,7 @@ "webpack-cli": "^3.3.12", "webpack-merge": "^5.8.0", "wicg-inert": "^3.1.1", - "ws": "^8.5.0" + "ws": "^8.6.0" }, "devDependencies": { "@testing-library/jest-dom": "^5.16.4", diff --git a/yarn.lock b/yarn.lock index bb6daf7c4..6b04aa57e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11591,10 +11591,10 @@ ws@^7.3.1, ws@^7.4.5: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== -ws@^8.5.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" - integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== +ws@^8.6.0: + version "8.6.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.6.0.tgz#e5e9f1d9e7ff88083d0c0dd8281ea662a42c9c23" + integrity sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw== xml-name-validator@^3.0.0: version "3.0.0" From 8c644dcbd9bada5b5ad00a2c3d94fb46a4e77cb4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 May 2022 14:06:49 +0900 Subject: [PATCH 026/652] Bump jest from 27.5.1 to 28.0.3 (#18280) * Bump jest from 27.5.1 to 28.0.3 Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 27.5.1 to 28.0.3. - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v28.0.3/packages/jest) --- updated-dependencies: - dependency-name: jest dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Bump babel-jest from 27.5.1 to 28.0.3 Bumps [babel-jest](https://github.com/facebook/jest/tree/HEAD/packages/babel-jest) from 27.5.1 to 28.0.3. - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v28.0.3/packages/babel-jest) --- updated-dependencies: - dependency-name: babel-jest dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Add jest-environment-jsdom Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Yamagishi Kazutoshi --- jest.config.js | 32 ++ package.json | 37 +- yarn.lock | 1196 +++++++++++++++++++++++++----------------------- 3 files changed, 656 insertions(+), 609 deletions(-) create mode 100644 jest.config.js diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 000000000..d7b5610b8 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,32 @@ +module.exports = { + 'testEnvironment': 'jsdom', + 'projects': [ + '/app/javascript/mastodon', + ], + 'testPathIgnorePatterns': [ + '/node_modules/', + '/vendor/', + '/config/', + '/log/', + '/public/', + '/tmp/', + ], + 'setupFiles': [ + 'raf/polyfill', + ], + 'setupFilesAfterEnv': [ + '/app/javascript/mastodon/test_setup.js', + ], + 'collectCoverageFrom': [ + 'app/javascript/mastodon/**/*.js', + '!app/javascript/mastodon/features/emoji/emoji_compressed.js', + '!app/javascript/mastodon/locales/locale-data/*.js', + '!app/javascript/mastodon/service_worker/entry.js', + '!app/javascript/mastodon/test_setup.js', + ], + 'coverageDirectory': '/coverage', + 'moduleDirectories': [ + '/node_modules', + '/app/javascript', + ], +}; diff --git a/package.json b/package.json index 94228ff4c..26d9e53e2 100644 --- a/package.json +++ b/package.json @@ -28,38 +28,6 @@ "iOS >= 9", "not dead" ], - "jest": { - "testEnvironment": "jsdom", - "projects": [ - "/app/javascript/mastodon" - ], - "testPathIgnorePatterns": [ - "/node_modules/", - "/vendor/", - "/config/", - "/log/", - "/public/", - "/tmp/" - ], - "setupFiles": [ - "raf/polyfill" - ], - "setupFilesAfterEnv": [ - "/app/javascript/mastodon/test_setup.js" - ], - "collectCoverageFrom": [ - "app/javascript/mastodon/**/*.js", - "!app/javascript/mastodon/features/emoji/emoji_compressed.js", - "!app/javascript/mastodon/locales/locale-data/*.js", - "!app/javascript/mastodon/service_worker/entry.js", - "!app/javascript/mastodon/test_setup.js" - ], - "coverageDirectory": "/coverage", - "moduleDirectories": [ - "/node_modules", - "/app/javascript" - ] - }, "private": true, "dependencies": { "@babel/core": "^7.17.10", @@ -177,13 +145,14 @@ "@testing-library/jest-dom": "^5.16.4", "@testing-library/react": "^12.1.5", "babel-eslint": "^10.1.0", - "babel-jest": "^27.5.1", + "babel-jest": "^28.0.3", "eslint": "^7.32.0", "eslint-plugin-import": "~2.26.0", "eslint-plugin-jsx-a11y": "~6.5.1", "eslint-plugin-promise": "~6.0.0", "eslint-plugin-react": "~7.29.4", - "jest": "^27.5.1", + "jest": "^28.0.3", + "jest-environment-jsdom": "^28.0.2", "prettier": "^2.6.2", "raf": "^3.4.1", "react-intl-translations-manager": "^5.0.3", diff --git a/yarn.lock b/yarn.lock index 6b04aa57e..f956bdf2a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -28,7 +28,7 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw== -"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.17.10", "@babel/core@^7.7.2", "@babel/core@^7.8.0": +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.17.10", "@babel/core@^7.7.2": version "7.17.10" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.10.tgz#74ef0fbf56b7dfc3f198fc2d927f4f03e12f4b05" integrity sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA== @@ -1248,163 +1248,184 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@jest/console@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" - integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== +"@jest/console@^28.0.2": + version "28.0.2" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.0.2.tgz#d11e8b43ae431ae9b3112656848417ae4008fcad" + integrity sha512-tiRpnMeeyQuuzgL5UNSeiqMwF8UOWPbAE5rzcu/1zyq4oPG2Ox6xm4YCOruwbp10F8odWc+XwVxTyGzMSLMqxA== dependencies: - "@jest/types" "^27.5.1" + "@jest/types" "^28.0.2" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^27.5.1" - jest-util "^27.5.1" + jest-message-util "^28.0.2" + jest-util "^28.0.2" slash "^3.0.0" -"@jest/core@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" - integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== +"@jest/core@^28.0.3": + version "28.0.3" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.0.3.tgz#2b8223914ef6ae16ff740e65235ef8ef49c46d52" + integrity sha512-cCQW06vEZ+5r50SB06pOnSWsOBs7F+lswPYnKKfBz1ncLlj1sMqmvjgam8q40KhlZ8Ut4eNAL2Hvfx4BKIO2FA== dependencies: - "@jest/console" "^27.5.1" - "@jest/reporters" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/console" "^28.0.2" + "@jest/reporters" "^28.0.3" + "@jest/test-result" "^28.0.2" + "@jest/transform" "^28.0.3" + "@jest/types" "^28.0.2" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - emittery "^0.8.1" + ci-info "^3.2.0" exit "^0.1.2" graceful-fs "^4.2.9" - jest-changed-files "^27.5.1" - jest-config "^27.5.1" - jest-haste-map "^27.5.1" - jest-message-util "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-resolve-dependencies "^27.5.1" - jest-runner "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - jest-watcher "^27.5.1" + jest-changed-files "^28.0.2" + jest-config "^28.0.3" + jest-haste-map "^28.0.2" + jest-message-util "^28.0.2" + jest-regex-util "^28.0.2" + jest-resolve "^28.0.3" + jest-resolve-dependencies "^28.0.3" + jest-runner "^28.0.3" + jest-runtime "^28.0.3" + jest-snapshot "^28.0.3" + jest-util "^28.0.2" + jest-validate "^28.0.2" + jest-watcher "^28.0.2" micromatch "^4.0.4" + pretty-format "^28.0.2" rimraf "^3.0.0" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" - integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== +"@jest/environment@^28.0.2": + version "28.0.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.0.2.tgz#a865949d876b2d364b979bbc0a46338ffd23de26" + integrity sha512-IvI7dEfqVEffDYlw9FQfVBt6kXt/OI38V7QUIur0ulOQgzpKYJDVvLzj4B1TVmHWTGW5tcnJdlZ3hqzV6/I9Qg== dependencies: - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/fake-timers" "^28.0.2" + "@jest/types" "^28.0.2" "@types/node" "*" - jest-mock "^27.5.1" + jest-mock "^28.0.2" -"@jest/fake-timers@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" - integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== +"@jest/expect-utils@^28.0.2": + version "28.0.2" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.0.2.tgz#0a055868d225261eac82a12013e2e0735238774d" + integrity sha512-YryfH2zN5c7M8eLtn9oTBRj1sfD+X4cHNXJnTejqCveOS33wADEZUxJ7de5++lRvByNpRpfAnc8zTK7yrUJqgA== dependencies: - "@jest/types" "^27.5.1" - "@sinonjs/fake-timers" "^8.0.1" + jest-get-type "^28.0.2" + +"@jest/expect@^28.0.3": + version "28.0.3" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-28.0.3.tgz#80e0233bee62586e1112f904d28b904dd1143ef2" + integrity sha512-VEzZr85bqNomgayQkR7hWG5HnbZYWYWagQriZsixhLmOzU6PCpMP61aeVhkCoRrg7ri5f7JDpeTPzDAajIwFHw== + dependencies: + expect "^28.0.2" + jest-snapshot "^28.0.3" + +"@jest/fake-timers@^28.0.2": + version "28.0.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.0.2.tgz#d36e62bc58f39d65ea6adac1ff7749e63aff05f3" + integrity sha512-R75yUv+WeybPa4ZVhX9C+8XN0TKjUoceUX+/QEaDVQGxZZOK50eD74cs7iMDTtpodh00d8iLlc9197vgF6oZjA== + dependencies: + "@jest/types" "^28.0.2" + "@sinonjs/fake-timers" "^9.1.1" "@types/node" "*" - jest-message-util "^27.5.1" - jest-mock "^27.5.1" - jest-util "^27.5.1" + jest-message-util "^28.0.2" + jest-mock "^28.0.2" + jest-util "^28.0.2" -"@jest/globals@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" - integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== +"@jest/globals@^28.0.3": + version "28.0.3" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.0.3.tgz#70f68a06c863d1c9d14aea151c69b9690e3efeb4" + integrity sha512-q/zXYI6CKtTSIt1WuTHBYizJhH7K8h+xG5PE3C0oawLlPIvUMDYmpj0JX0XsJwPRLCsz/fYXHZVG46AaEhSPmw== dependencies: - "@jest/environment" "^27.5.1" - "@jest/types" "^27.5.1" - expect "^27.5.1" + "@jest/environment" "^28.0.2" + "@jest/expect" "^28.0.3" + "@jest/types" "^28.0.2" -"@jest/reporters@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" - integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== +"@jest/reporters@^28.0.3": + version "28.0.3" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.0.3.tgz#9996189e5552e37fcdffe0f41c07754f5d2ea854" + integrity sha512-xrbIc7J/xwo+D7AY3enAR9ZWYCmJ8XIkstTukTGpKDph0gLl/TJje9jl3dssvE4KJzYqMKiSrnE5Nt68I4fTEg== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/console" "^28.0.2" + "@jest/test-result" "^28.0.2" + "@jest/transform" "^28.0.3" + "@jest/types" "^28.0.2" + "@jridgewell/trace-mapping" "^0.3.7" "@types/node" "*" chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" - glob "^7.1.2" + glob "^7.1.3" graceful-fs "^4.2.9" istanbul-lib-coverage "^3.0.0" istanbul-lib-instrument "^5.1.0" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.1.3" - jest-haste-map "^27.5.1" - jest-resolve "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" + jest-util "^28.0.2" + jest-worker "^28.0.2" slash "^3.0.0" - source-map "^0.6.0" string-length "^4.0.1" terminal-link "^2.0.0" - v8-to-istanbul "^8.1.0" + v8-to-istanbul "^9.0.0" -"@jest/source-map@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" - integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== +"@jest/schemas@^28.0.2": + version "28.0.2" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.0.2.tgz#08c30df6a8d07eafea0aef9fb222c5e26d72e613" + integrity sha512-YVDJZjd4izeTDkij00vHHAymNXQ6WWsdChFRK86qck6Jpr3DCL5W3Is3vslviRlP+bLuMYRLbdp98amMvqudhA== dependencies: + "@sinclair/typebox" "^0.23.3" + +"@jest/source-map@^28.0.2": + version "28.0.2" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-28.0.2.tgz#914546f4410b67b1d42c262a1da7e0406b52dc90" + integrity sha512-Y9dxC8ZpN3kImkk0LkK5XCEneYMAXlZ8m5bflmSL5vrwyeUpJfentacCUg6fOb8NOpOO7hz2+l37MV77T6BFPw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.7" callsites "^3.0.0" graceful-fs "^4.2.9" - source-map "^0.6.0" -"@jest/test-result@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" - integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== +"@jest/test-result@^28.0.2": + version "28.0.2" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.0.2.tgz#bc8e15a95347e3c2149572ae06a5a6fed939c522" + integrity sha512-4EUqgjq9VzyUiVTvZfI9IRJD6t3NYBNP4f+Eq8Zr93+hkJ0RrGU4OBTw8tfNzidKX+bmuYzn8FxqpxOPIGGCMA== dependencies: - "@jest/console" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/console" "^28.0.2" + "@jest/types" "^28.0.2" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" - integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== +"@jest/test-sequencer@^28.0.2": + version "28.0.2" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-28.0.2.tgz#7669b7d8ff2aa7a8221b11bb37cce552de81b1bb" + integrity sha512-zhnZ8ydkZQTPL7YucB86eOlD79zPy5EGSUKiR2Iv93RVEDU6OEP33kwDBg70ywOcxeJGDRhyo09q7TafNCBiIg== dependencies: - "@jest/test-result" "^27.5.1" + "@jest/test-result" "^28.0.2" graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-runtime "^27.5.1" + jest-haste-map "^28.0.2" + slash "^3.0.0" -"@jest/transform@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" - integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== +"@jest/transform@^28.0.3": + version "28.0.3" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.0.3.tgz#591fb5ebc1d84db5c5f21e1225c7406c35f5eb1e" + integrity sha512-+Y0ikI7SwoW/YbK8t9oKwC70h4X2Gd0OVuz5tctRvSV/EDQU00AAkoqevXgPSSFimUmp/sp7Yl8s/1bExDqOIg== dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^27.5.1" + "@babel/core" "^7.11.6" + "@jest/types" "^28.0.2" + "@jridgewell/trace-mapping" "^0.3.7" babel-plugin-istanbul "^6.1.1" chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-regex-util "^27.5.1" - jest-util "^27.5.1" + jest-haste-map "^28.0.2" + jest-regex-util "^28.0.2" + jest-util "^28.0.2" micromatch "^4.0.4" pirates "^4.0.4" slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" + write-file-atomic "^4.0.1" "@jest/types@^25.5.0": version "25.5.0" @@ -1416,7 +1437,7 @@ "@types/yargs" "^15.0.0" chalk "^3.0.0" -"@jest/types@^27.0.2", "@jest/types@^27.5.1": +"@jest/types@^27.0.2": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== @@ -1427,6 +1448,18 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" +"@jest/types@^28.0.2": + version "28.0.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.0.2.tgz#70b9538c1863fb060b2f438ca008b5563d00c5b4" + integrity sha512-hi3jUdm9iht7I2yrV5C4s3ucCJHUP8Eh3W6rQ1s4n/Qw9rQgsda4eqCt+r3BKRi7klVmZfQlMx1nGlzNMP2d8A== + dependencies: + "@jest/schemas" "^28.0.2" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + "@jridgewell/gen-mapping@^0.1.0": version "0.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" @@ -1458,6 +1491,14 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@jridgewell/trace-mapping@^0.3.7": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@npmcli/move-file@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464" @@ -1509,6 +1550,11 @@ resolved "https://registry.yarnpkg.com/@redis/time-series/-/time-series-1.0.3.tgz#4cfca8e564228c0bddcdf4418cba60c20b224ac4" integrity sha512-OFp0q4SGrTH0Mruf6oFsHGea58u8vS/iI5+NpYdicaM+7BgqBZH8FFvNZ8rYYLrUO/QRqMq72NpXmxLVNcdmjA== +"@sinclair/typebox@^0.23.3": + version "0.23.5" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.23.5.tgz#93f7b9f4e3285a7a9ade7557d9a8d36809cbc47d" + integrity sha512-AFBVi/iT4g20DHoujvMH1aEDn8fGJh4xsRGCP6d8RpLPMqsNPvW01Jcn0QysXTsg++/xj25NmJsGyH9xug/wKg== + "@sinonjs/commons@^1.7.0": version "1.8.1" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.1.tgz#e7df00f98a203324f6dc7cc606cad9d4a8ab2217" @@ -1516,10 +1562,10 @@ dependencies: type-detect "4.0.8" -"@sinonjs/fake-timers@^8.0.1": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz#1c1c9a91419f804e59ae8df316a07dd1c3a76b94" - integrity sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew== +"@sinonjs/fake-timers@^9.1.1": + version "9.1.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" + integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw== dependencies: "@sinonjs/commons" "^1.7.0" @@ -1561,17 +1607,17 @@ "@testing-library/dom" "^8.0.0" "@types/react-dom" "<18.0.0" -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== +"@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== "@types/aria-query@^4.2.0": version "4.2.0" resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.0.tgz#14264692a9d6e2fa4db3df5e56e94b5e25647ac0" integrity sha512-iIgQNzCm0v7QMhhe4Jjn9uRh+I6GoPmt03CbEtwx3ao8/EfoQcmgtqH4vQ5Db/lxiIGaWDv6nwvunuh0RyX0+A== -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.12", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.3": +"@types/babel__core@^7.1.12", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.3": version "7.1.18" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.18.tgz#1a29abcc411a9c05e2094c98f9a1b7da6cdf49f8" integrity sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ== @@ -1604,13 +1650,6 @@ dependencies: "@babel/types" "^7.3.0" -"@types/babel__traverse@^7.0.4": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.15.tgz#db9e4238931eb69ef8aab0ad6523d4d4caa39d03" - integrity sha512-Pzh9O3sTK8V6I1olsXpCfj2k/ygO2q1X0vhhnDrEQyYLHZesWz+zMZMVcwXLCYf0U36EtmyYaFGPfXlTtDHe3A== - dependencies: - "@babel/types" "^7.3.0" - "@types/color-name@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" @@ -1630,10 +1669,10 @@ "@types/minimatch" "*" "@types/node" "*" -"@types/graceful-fs@^4.1.2": - version "4.1.3" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.3.tgz#039af35fe26bec35003e8d86d2ee9c586354348f" - integrity sha512-AiHRaEB50LQg0pZmm659vNBb9f4SJ0qrAnteuzhSeAUcJKxoYgEnprg/83kppCnc2zvtCKbdZry1a5pVY3lOTQ== +"@types/graceful-fs@^4.1.3": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" + integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== dependencies: "@types/node" "*" @@ -1680,6 +1719,15 @@ jest-diff "^25.2.1" pretty-format "^25.2.1" +"@types/jsdom@^16.2.4": + version "16.2.14" + resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-16.2.14.tgz#26fe9da6a8870715b154bb84cd3b2e53433d8720" + integrity sha512-6BAy1xXEmMuHeAJ4Fv4yXKwBDTGTOseExKE3OaHiNycdHdZw59KfYzrt0DkDluvwmik1HRt6QS7bImxUmpSy+w== + dependencies: + "@types/node" "*" + "@types/parse5" "*" + "@types/tough-cookie" "*" + "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": version "7.0.6" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" @@ -1705,6 +1753,11 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== +"@types/parse5@*": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.3.tgz#705bb349e789efa06f43f128cef51240753424cb" + integrity sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g== + "@types/prettier@^2.1.5": version "2.2.3" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.2.3.tgz#ef65165aea2924c9359205bf748865b8881753c0" @@ -1784,6 +1837,11 @@ dependencies: "@types/jest" "*" +"@types/tough-cookie@*": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.2.tgz#6286b4c7228d58ab7866d19716f3696e03a09397" + integrity sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw== + "@types/yargs-parser@*": version "15.0.0" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" @@ -1803,6 +1861,13 @@ dependencies: "@types/yargs-parser" "*" +"@types/yargs@^17.0.8": + version "17.0.10" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.10.tgz#591522fce85d8739bca7b8bb90d048e4478d186a" + integrity sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA== + dependencies: + "@types/yargs-parser" "*" + "@webassemblyjs/ast@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" @@ -1958,10 +2023,10 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -abab@^2.0.3, abab@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" - integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== +abab@^2.0.5, abab@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" @@ -2021,11 +2086,16 @@ acorn@^7.1.1, acorn@^7.4.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.0.4, acorn@^8.2.4: +acorn@^8.0.4: version "8.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.3.0.tgz#1193f9b96c4e8232f00b11a9edff81b2c8b98b88" integrity sha512-tqPKHZ5CaBJw0Xmy0ZZvLs1qTV+BNFSyvn77ASXkpBNfIRk8ev26fKrD9iLGwGA9zedPao52GSHzq8lyZG0NUw== +acorn@^8.5.0: + version "8.7.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" + integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== + agent-base@6: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" @@ -2403,16 +2473,15 @@ babel-eslint@^10.1.0: eslint-visitor-keys "^1.0.0" resolve "^1.12.0" -babel-jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" - integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== +babel-jest@^28.0.3: + version "28.0.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.0.3.tgz#843dc170da5b9671d4054ada9fdcd28f85f92a6e" + integrity sha512-S0ADyYdcrt5fp9YldRYWCUHdk1BKt9AkvBkLWBoNAEV9NoWZPIj5+MYhPcGgTS65mfv3a+Ymf2UqgWoAVd41cA== dependencies: - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/transform" "^28.0.3" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^27.5.1" + babel-preset-jest "^28.0.2" chalk "^4.0.0" graceful-fs "^4.2.9" slash "^3.0.0" @@ -2445,14 +2514,14 @@ babel-plugin-istanbul@^6.1.1: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" - integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== +babel-plugin-jest-hoist@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.0.2.tgz#9307d03a633be6fc4b1a6bc5c3a87e22bd01dd3b" + integrity sha512-Kizhn/ZL+68ZQHxSnHyuvJv8IchXD62KQxV77TBDV/xoBFBOfgRAk97GNs6hXdTTCiVES9nB2I6+7MXXrk5llQ== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" + "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" babel-plugin-lodash@^3.3.4: @@ -2554,12 +2623,12 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" - integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== +babel-preset-jest@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.0.2.tgz#d8210fe4e46c1017e9fa13d7794b166e93aa9f89" + integrity sha512-sYzXIdgIXXroJTFeB3S6sNDWtlJ2dllCdTEsnZ65ACrMojj3hVNFRmnJ1HZtomGi+Be7aqpY/HJ92fr8OhKVkQ== dependencies: - babel-plugin-jest-hoist "^27.5.1" + babel-plugin-jest-hoist "^28.0.2" babel-preset-current-node-syntax "^1.0.0" babel-runtime@^6.26.0: @@ -3755,10 +3824,10 @@ csso@^4.0.2: dependencies: css-tree "1.0.0-alpha.39" -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== +cssom@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" + integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== cssom@~0.3.6: version "0.3.8" @@ -3800,14 +3869,14 @@ damerau-levenshtein@^1.0.7: resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz#64368003512a1a6992593741a09a9d31a836f55d" integrity sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw== -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== +data-urls@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143" + integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" + abab "^2.0.6" + whatwg-mimetype "^3.0.0" + whatwg-url "^11.0.0" debug@2.6.9, debug@^2.1.1, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: version "2.6.9" @@ -3816,10 +3885,10 @@ debug@2.6.9, debug@^2.1.1, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: dependencies: ms "2.0.0" -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== +debug@4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" @@ -3830,15 +3899,22 @@ debug@^3.1.1, debug@^3.2.6, debug@^3.2.7: dependencies: ms "^2.1.1" +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" + decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -decimal.js@^10.2.1: - version "10.2.1" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3" - integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw== +decimal.js@^10.3.1: + version "10.3.1" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" + integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== decode-uri-component@^0.2.0: version "0.2.0" @@ -3992,10 +4068,10 @@ diff-sequences@^25.2.6: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== -diff-sequences@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" - integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== +diff-sequences@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.0.2.tgz#40f8d4ffa081acbd8902ba35c798458d0ff1af41" + integrity sha512-YtEoNynLDFCRznv/XDalsKGSZDoj0U5kLnXvY0JSq3nBboRrZXjD81+eSiwi+nzcZDwedMmcowcxNwwgFW23mQ== diffie-hellman@^5.0.0: version "5.0.3" @@ -4091,12 +4167,12 @@ domelementtype@^2.0.1: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== +domexception@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" + integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== dependencies: - webidl-conversions "^5.0.0" + webidl-conversions "^7.0.0" domutils@^1.7.0: version "1.7.0" @@ -4166,10 +4242,10 @@ elliptic@^6.5.3: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" -emittery@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" - integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== +emittery@^0.10.2: + version "0.10.2" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" + integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== "emoji-mart@npm:emoji-mart-lazyload": version "3.0.1-j" @@ -4756,15 +4832,16 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -expect@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" - integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== +expect@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-28.0.2.tgz#86f0d6fa971bc533faf68d4d103d00f343d6a4b3" + integrity sha512-X0qIuI/zKv98k34tM+uGeOgAC73lhs4vROF9MkPk94C1zujtwv4Cla8SxhWn0G1OwvG9gLLL7RjFBkwGVaZ83w== dependencies: - "@jest/types" "^27.5.1" - jest-get-type "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" + "@jest/expect-utils" "^28.0.2" + jest-get-type "^28.0.2" + jest-matcher-utils "^28.0.2" + jest-message-util "^28.0.2" + jest-util "^28.0.2" express@^4.17.1, express@^4.18.1: version "4.18.1" @@ -5045,10 +5122,10 @@ for-in@^1.0.2: resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" @@ -5547,12 +5624,12 @@ hsla-regex@^1.0.0: resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== +html-encoding-sniffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" + integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== dependencies: - whatwg-encoding "^1.0.5" + whatwg-encoding "^2.0.0" html-entities@^1.3.1: version "1.3.1" @@ -5605,12 +5682,12 @@ http-parser-js@>=0.5.1: resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== +http-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== dependencies: - "@tootallnate/once" "1" + "@tootallnate/once" "2" agent-base "6" debug "4" @@ -5639,9 +5716,9 @@ https-browserify@^1.0.0: integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= https-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: agent-base "6" debug "4" @@ -5658,6 +5735,13 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + icss-utils@^5.0.0, icss-utils@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" @@ -6251,11 +6335,6 @@ is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typedarray@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - is-url@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" @@ -6352,85 +6431,82 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jest-changed-files@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5" - integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== +jest-changed-files@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-28.0.2.tgz#7d7810660a5bd043af9e9cfbe4d58adb05e91531" + integrity sha512-QX9u+5I2s54ZnGoMEjiM2WeBvJR2J7w/8ZUmH2um/WLAuGAYFQcsVXY9+1YL6k0H/AGUdH8pXUAv6erDqEsvIA== dependencies: - "@jest/types" "^27.5.1" execa "^5.0.0" throat "^6.0.1" -jest-circus@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" - integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== +jest-circus@^28.0.3: + version "28.0.3" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.0.3.tgz#45f77090b4b9fe5c1b84f72816868c9d4c0f57b1" + integrity sha512-HJ3rUCm3A3faSy7KVH5MFCncqJLtrjEFkTPn9UIcs4Kq77+TXqHsOaI+/k73aHe6DJQigLUXq9rCYj3MYFlbIw== dependencies: - "@jest/environment" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/environment" "^28.0.2" + "@jest/expect" "^28.0.3" + "@jest/test-result" "^28.0.2" + "@jest/types" "^28.0.2" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" dedent "^0.7.0" - expect "^27.5.1" is-generator-fn "^2.0.0" - jest-each "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" + jest-each "^28.0.2" + jest-matcher-utils "^28.0.2" + jest-message-util "^28.0.2" + jest-runtime "^28.0.3" + jest-snapshot "^28.0.3" + jest-util "^28.0.2" + pretty-format "^28.0.2" slash "^3.0.0" stack-utils "^2.0.3" throat "^6.0.1" -jest-cli@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" - integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== +jest-cli@^28.0.3: + version "28.0.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.0.3.tgz#4a4e55078ec772e0ea2583dd4c4b38fb306dc556" + integrity sha512-NCPTEONCnhYGo1qzPP4OOcGF04YasM5GZSwQLI1HtEluxa3ct4U65IbZs6DSRt8XN1Rq0jhXwv02m5lHB28Uyg== dependencies: - "@jest/core" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/core" "^28.0.3" + "@jest/test-result" "^28.0.2" + "@jest/types" "^28.0.2" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.9" import-local "^3.0.2" - jest-config "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" + jest-config "^28.0.3" + jest-util "^28.0.2" + jest-validate "^28.0.2" prompts "^2.0.1" - yargs "^16.2.0" + yargs "^17.3.1" -jest-config@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" - integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== +jest-config@^28.0.3: + version "28.0.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-28.0.3.tgz#9c0556d60d692153a6bc8652974182c22db9244f" + integrity sha512-3gWOEHwGpNhyYOk9vnUMv94x15QcdjACm7A3lERaluwnyD6d1WZWe9RFCShgIXVOHzRfG1hWxsI2U0gKKSGgDQ== dependencies: - "@babel/core" "^7.8.0" - "@jest/test-sequencer" "^27.5.1" - "@jest/types" "^27.5.1" - babel-jest "^27.5.1" + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^28.0.2" + "@jest/types" "^28.0.2" + babel-jest "^28.0.3" chalk "^4.0.0" ci-info "^3.2.0" deepmerge "^4.2.2" - glob "^7.1.1" + glob "^7.1.3" graceful-fs "^4.2.9" - jest-circus "^27.5.1" - jest-environment-jsdom "^27.5.1" - jest-environment-node "^27.5.1" - jest-get-type "^27.5.1" - jest-jasmine2 "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-runner "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" + jest-circus "^28.0.3" + jest-environment-node "^28.0.2" + jest-get-type "^28.0.2" + jest-regex-util "^28.0.2" + jest-resolve "^28.0.3" + jest-runner "^28.0.3" + jest-util "^28.0.2" + jest-validate "^28.0.2" micromatch "^4.0.4" parse-json "^5.2.0" - pretty-format "^27.5.1" + pretty-format "^28.0.2" slash "^3.0.0" strip-json-comments "^3.1.1" @@ -6444,151 +6520,128 @@ jest-diff@^25.2.1: jest-get-type "^25.2.6" pretty-format "^25.5.0" -jest-diff@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" - integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== +jest-diff@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.0.2.tgz#a543c90082560cd6cb14c5f28c39e6d4618ad7a6" + integrity sha512-33Rnf821Y54OAloav0PGNWHlbtEorXpjwchnToyyWbec10X74FOW7hGfvrXLGz7xOe2dz0uo9JVFAHHj/2B5pg== dependencies: chalk "^4.0.0" - diff-sequences "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" + diff-sequences "^28.0.2" + jest-get-type "^28.0.2" + pretty-format "^28.0.2" -jest-docblock@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" - integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== +jest-docblock@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-28.0.2.tgz#3cab8abea53275c9d670cdca814fc89fba1298c2" + integrity sha512-FH10WWw5NxLoeSdQlJwu+MTiv60aXV/t8KEwIRGEv74WARE1cXIqh1vGdy2CraHuWOOrnzTWj/azQKqW4fO7xg== dependencies: detect-newline "^3.0.0" -jest-each@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" - integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== +jest-each@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-28.0.2.tgz#fcf6843e9afe5a3f2d0b1c02aab1f41889d92f1d" + integrity sha512-/W5Wc0b+ipR36kDaLngdVEJ/5UYPOITK7rW0djTlCCQdMuWpCFJweMW4TzAoJ6GiRrljPL8FwiyOSoSHKrda2w== dependencies: - "@jest/types" "^27.5.1" + "@jest/types" "^28.0.2" chalk "^4.0.0" - jest-get-type "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" + jest-get-type "^28.0.2" + jest-util "^28.0.2" + pretty-format "^28.0.2" -jest-environment-jsdom@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" - integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== +jest-environment-jsdom@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-28.0.2.tgz#b923f861f4cd896d2ba1971255060e1f413e9a04" + integrity sha512-rQhgV9reB6Id7VPa5jEkKx80Ppa/I6C7vKTMnceBS+d/rt+aTfbxbK/P4HRLMLE8KKsETszPpzYtGgsa8xMg7g== dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/environment" "^28.0.2" + "@jest/fake-timers" "^28.0.2" + "@jest/types" "^28.0.2" + "@types/jsdom" "^16.2.4" "@types/node" "*" - jest-mock "^27.5.1" - jest-util "^27.5.1" - jsdom "^16.6.0" + jest-mock "^28.0.2" + jest-util "^28.0.2" + jsdom "^19.0.0" -jest-environment-node@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" - integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== +jest-environment-node@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.0.2.tgz#bd58e192b8f36a37e52c52fac812bd24b360c0b9" + integrity sha512-o9u5UHZ+NCuIoa44KEF0Behhsz/p1wMm0WumsZfWR1k4IVoWSt3aN0BavSC5dd26VxSGQvkrCnJxxOzhhUEG3Q== dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/environment" "^28.0.2" + "@jest/fake-timers" "^28.0.2" + "@jest/types" "^28.0.2" "@types/node" "*" - jest-mock "^27.5.1" - jest-util "^27.5.1" + jest-mock "^28.0.2" + jest-util "^28.0.2" jest-get-type@^25.2.6: version "25.2.6" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== -jest-get-type@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" - integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== +jest-get-type@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-28.0.2.tgz#34622e628e4fdcd793d46db8a242227901fcf203" + integrity sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA== -jest-haste-map@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" - integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== +jest-haste-map@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.0.2.tgz#0c768f43680013cfd2a4471a3ec76c47bfb9e7c6" + integrity sha512-EokdL7l5uk4TqWGawwrIt8w3tZNcbeiRxmKGEURf42pl+/rWJy3sCJlon5HBhJXZTW978jk6600BLQOI7i25Ig== dependencies: - "@jest/types" "^27.5.1" - "@types/graceful-fs" "^4.1.2" + "@jest/types" "^28.0.2" + "@types/graceful-fs" "^4.1.3" "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" graceful-fs "^4.2.9" - jest-regex-util "^27.5.1" - jest-serializer "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" + jest-regex-util "^28.0.2" + jest-util "^28.0.2" + jest-worker "^28.0.2" micromatch "^4.0.4" walker "^1.0.7" optionalDependencies: fsevents "^2.3.2" -jest-jasmine2@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" - integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== +jest-leak-detector@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.0.2.tgz#cbde3d22d09bd690ececdc2ed01c608435328456" + integrity sha512-UGaSPYtxKXl/YKacq6juRAKmMp1z2os8NaU8PSC+xvNikmu3wF6QFrXrihMM4hXeMr9HuNotBrQZHmzDY8KIBQ== dependencies: - "@jest/environment" "^27.5.1" - "@jest/source-map" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - expect "^27.5.1" - is-generator-fn "^2.0.0" - jest-each "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - throat "^6.0.1" + jest-get-type "^28.0.2" + pretty-format "^28.0.2" -jest-leak-detector@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" - integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== - dependencies: - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - -jest-matcher-utils@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" - integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== +jest-matcher-utils@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.0.2.tgz#eb461af204b6d0f05281e9228094f0ab7e9e8537" + integrity sha512-SxtTiI2qLJHFtOz/bySStCnwCvISAuxQ/grS+74dfTy5AuJw3Sgj9TVUvskcnImTfpzLoMCDJseRaeRrVYbAOA== dependencies: chalk "^4.0.0" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" + jest-diff "^28.0.2" + jest-get-type "^28.0.2" + pretty-format "^28.0.2" -jest-message-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" - integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== +jest-message-util@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.0.2.tgz#f3cf36be72be4c4c4058cb34bd6673996d26dee3" + integrity sha512-knK7XyojvwYh1XiF2wmVdskgM/uN11KsjcEWWHfnMZNEdwXCrqB4sCBO94F4cfiAwCS8WFV6CDixDwPlMh/wdA== dependencies: "@babel/code-frame" "^7.12.13" - "@jest/types" "^27.5.1" + "@jest/types" "^28.0.2" "@types/stack-utils" "^2.0.0" chalk "^4.0.0" graceful-fs "^4.2.9" micromatch "^4.0.4" - pretty-format "^27.5.1" + pretty-format "^28.0.2" slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" - integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== +jest-mock@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.0.2.tgz#059b500b34c1dd76474ebcdeccc249fe4dd0249f" + integrity sha512-vfnJ4zXRB0i24jOTGtQJyl26JKsgBKtqRlCnsrORZbG06FToSSn33h2x/bmE8XxqxkLWdZBRo+/65l8Vi3nD+g== dependencies: - "@jest/types" "^27.5.1" + "@jest/types" "^28.0.2" "@types/node" "*" jest-pnp-resolver@^1.2.2: @@ -6596,162 +6649,154 @@ jest-pnp-resolver@^1.2.2: resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== -jest-regex-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" - integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== +jest-regex-util@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" + integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== -jest-resolve-dependencies@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" - integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== +jest-resolve-dependencies@^28.0.3: + version "28.0.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-28.0.3.tgz#76d8f59f7e76ba36d76a1677eeaaed24560da7e0" + integrity sha512-lCgHMm0/5p0qHemrOzm7kI6JDei28xJwIf7XOEcv1HeAVHnsON8B8jO/woqlU+/GcOXb58ymieYqhk3zjGWnvQ== dependencies: - "@jest/types" "^27.5.1" - jest-regex-util "^27.5.1" - jest-snapshot "^27.5.1" + jest-regex-util "^28.0.2" + jest-snapshot "^28.0.3" -jest-resolve@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" - integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== +jest-resolve@^28.0.3: + version "28.0.3" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-28.0.3.tgz#63f8e6b53e40f265b3ca9116195221dd43e3d16d" + integrity sha512-lfgjd9JhEjpjIN3HLUfdysdK+A7ePQoYmd7WL9DUEWqdnngb1rF56eee6iDXJxl/3eSolpP43VD7VrhjL3NsoQ== dependencies: - "@jest/types" "^27.5.1" chalk "^4.0.0" graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" + jest-haste-map "^28.0.2" jest-pnp-resolver "^1.2.2" - jest-util "^27.5.1" - jest-validate "^27.5.1" + jest-util "^28.0.2" + jest-validate "^28.0.2" resolve "^1.20.0" resolve.exports "^1.1.0" slash "^3.0.0" -jest-runner@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" - integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== +jest-runner@^28.0.3: + version "28.0.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-28.0.3.tgz#a8a409c685ad3081a44b149b2eb04bc4d47faaf9" + integrity sha512-4OsHMjBLtYUWCENucAQ4Za0jGfEbOFi/Fusv6dzUuaweqx8apb4+5p2LR2yvgF4StFulmxyC238tGLftfu+zBA== dependencies: - "@jest/console" "^27.5.1" - "@jest/environment" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/console" "^28.0.2" + "@jest/environment" "^28.0.2" + "@jest/test-result" "^28.0.2" + "@jest/transform" "^28.0.3" + "@jest/types" "^28.0.2" "@types/node" "*" chalk "^4.0.0" - emittery "^0.8.1" + emittery "^0.10.2" graceful-fs "^4.2.9" - jest-docblock "^27.5.1" - jest-environment-jsdom "^27.5.1" - jest-environment-node "^27.5.1" - jest-haste-map "^27.5.1" - jest-leak-detector "^27.5.1" - jest-message-util "^27.5.1" - jest-resolve "^27.5.1" - jest-runtime "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - source-map-support "^0.5.6" + jest-docblock "^28.0.2" + jest-environment-node "^28.0.2" + jest-haste-map "^28.0.2" + jest-leak-detector "^28.0.2" + jest-message-util "^28.0.2" + jest-resolve "^28.0.3" + jest-runtime "^28.0.3" + jest-util "^28.0.2" + jest-watcher "^28.0.2" + jest-worker "^28.0.2" + source-map-support "0.5.13" throat "^6.0.1" -jest-runtime@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" - integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== +jest-runtime@^28.0.3: + version "28.0.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-28.0.3.tgz#02346a34de0ac61d23bdb0e8c035ad973d7bb087" + integrity sha512-7FtPUmvbZEHLOdjsF6dyHg5Pe4E0DU+f3Vvv8BPzVR7mQA6nFR4clQYLAPyJGnsUvN8WRWn+b5a5SVwnj1WaGg== dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/globals" "^27.5.1" - "@jest/source-map" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/environment" "^28.0.2" + "@jest/fake-timers" "^28.0.2" + "@jest/globals" "^28.0.3" + "@jest/source-map" "^28.0.2" + "@jest/test-result" "^28.0.2" + "@jest/transform" "^28.0.3" + "@jest/types" "^28.0.2" chalk "^4.0.0" cjs-module-lexer "^1.0.0" collect-v8-coverage "^1.0.0" execa "^5.0.0" glob "^7.1.3" graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-message-util "^27.5.1" - jest-mock "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" + jest-haste-map "^28.0.2" + jest-message-util "^28.0.2" + jest-mock "^28.0.2" + jest-regex-util "^28.0.2" + jest-resolve "^28.0.3" + jest-snapshot "^28.0.3" + jest-util "^28.0.2" slash "^3.0.0" strip-bom "^4.0.0" -jest-serializer@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" - integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== +jest-snapshot@^28.0.3: + version "28.0.3" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-28.0.3.tgz#9a768d0c617d070e87c1bd37240f22b344616154" + integrity sha512-nVzAAIlAbrMuvVUrS1YxmAeo1TfSsDDU+K5wv/Ow56MBp+L+Y71ksAbwRp3kGCgZAz4oOXcAMPAwtT9Yh1hlQQ== dependencies: - "@types/node" "*" - graceful-fs "^4.2.9" - -jest-snapshot@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" - integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== - dependencies: - "@babel/core" "^7.7.2" + "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" "@babel/plugin-syntax-typescript" "^7.7.2" "@babel/traverse" "^7.7.2" - "@babel/types" "^7.0.0" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/babel__traverse" "^7.0.4" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^28.0.2" + "@jest/transform" "^28.0.3" + "@jest/types" "^28.0.2" + "@types/babel__traverse" "^7.0.6" "@types/prettier" "^2.1.5" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^27.5.1" + expect "^28.0.2" graceful-fs "^4.2.9" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - jest-haste-map "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-util "^27.5.1" + jest-diff "^28.0.2" + jest-get-type "^28.0.2" + jest-haste-map "^28.0.2" + jest-matcher-utils "^28.0.2" + jest-message-util "^28.0.2" + jest-util "^28.0.2" natural-compare "^1.4.0" - pretty-format "^27.5.1" - semver "^7.3.2" + pretty-format "^28.0.2" + semver "^7.3.5" -jest-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" - integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== +jest-util@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.0.2.tgz#8e22cdd6e0549e0a393055f0e2da7eacc334b143" + integrity sha512-EVdpIRCC8lzqhp9A0u0aAKlsFIzufK6xKxNK7awsnebTdOP4hpyQW5o6Ox2qPl8gbeUKYF+POLyItaND53kpGA== dependencies: - "@jest/types" "^27.5.1" + "@jest/types" "^28.0.2" "@types/node" "*" chalk "^4.0.0" ci-info "^3.2.0" graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" - integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== +jest-validate@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.0.2.tgz#58bb7e826c054a8bb3b54c05f73758d96cf6dbef" + integrity sha512-nr0UOvCTtxP0YPdsk01Gk7e7c0xIiEe2nncAe3pj0wBfUvAykTVrMrdeASlAJnlEQCBuwN/GF4hKoCzbkGNCNw== dependencies: - "@jest/types" "^27.5.1" + "@jest/types" "^28.0.2" camelcase "^6.2.0" chalk "^4.0.0" - jest-get-type "^27.5.1" + jest-get-type "^28.0.2" leven "^3.1.0" - pretty-format "^27.5.1" + pretty-format "^28.0.2" -jest-watcher@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" - integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== +jest-watcher@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.0.2.tgz#649fa24df531d4071be5784b6274d494d788c88b" + integrity sha512-uIVJLpQ/5VTGQWBiBatHsi7jrCqHjHl0e0dFHMWzwuIfUbdW/muk0DtSr0fteY2T7QTFylv+7a5Rm8sBKrE12Q== dependencies: - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/test-result" "^28.0.2" + "@jest/types" "^28.0.2" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - jest-util "^27.5.1" + emittery "^0.10.2" + jest-util "^28.0.2" string-length "^4.0.1" jest-worker@^26.5.0: @@ -6763,23 +6808,23 @@ jest-worker@^26.5.0: merge-stream "^2.0.0" supports-color "^7.0.0" -jest-worker@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== +jest-worker@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.0.2.tgz#75f7e5126541289ba02e9c1a67e46349ddb8141d" + integrity sha512-pijNxfjxT0tGAx+8+OzZ+eayVPCwy/rsZFhebmC0F4YnXu1EHPEPxg7utL3m5uX3EaFH1/jwDxGa1EbjJCST2g== dependencies: "@types/node" "*" merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" - integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== +jest@^28.0.3: + version "28.0.3" + resolved "https://registry.yarnpkg.com/jest/-/jest-28.0.3.tgz#92a7d6ee097b61de4ba2db7f3ab723e81a99b32d" + integrity sha512-uS+T5J3w5xyzd1KSJCGKhCo8WTJXbNl86f5SW11wgssbandJOVLRKKUxmhdFfmKxhPeksl1hHZ0HaA8VBzp7xA== dependencies: - "@jest/core" "^27.5.1" + "@jest/core" "^28.0.3" import-local "^3.0.2" - jest-cli "^27.5.1" + jest-cli "^28.0.3" js-base64@^2.1.9: version "2.6.4" @@ -6806,23 +6851,23 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" -jsdom@^16.6.0: - version "16.6.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.6.0.tgz#f79b3786682065492a3da6a60a4695da983805ac" - integrity sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg== +jsdom@^19.0.0: + version "19.0.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-19.0.0.tgz#93e67c149fe26816d38a849ea30ac93677e16b6a" + integrity sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A== dependencies: abab "^2.0.5" - acorn "^8.2.4" + acorn "^8.5.0" acorn-globals "^6.0.0" - cssom "^0.4.4" + cssom "^0.5.0" cssstyle "^2.3.0" - data-urls "^2.0.0" - decimal.js "^10.2.1" - domexception "^2.0.1" + data-urls "^3.0.1" + decimal.js "^10.3.1" + domexception "^4.0.0" escodegen "^2.0.0" - form-data "^3.0.0" - html-encoding-sniffer "^2.0.1" - http-proxy-agent "^4.0.1" + form-data "^4.0.0" + html-encoding-sniffer "^3.0.0" + http-proxy-agent "^5.0.0" https-proxy-agent "^5.0.0" is-potential-custom-element-name "^1.0.1" nwsapi "^2.2.0" @@ -6831,13 +6876,13 @@ jsdom@^16.6.0: symbol-tree "^3.2.4" tough-cookie "^4.0.0" w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.5.0" - ws "^7.4.5" - xml-name-validator "^3.0.0" + w3c-xmlserializer "^3.0.0" + webidl-conversions "^7.0.0" + whatwg-encoding "^2.0.0" + whatwg-mimetype "^3.0.0" + whatwg-url "^10.0.0" + ws "^8.2.3" + xml-name-validator "^4.0.0" jsesc@^2.5.1: version "2.5.2" @@ -7141,7 +7186,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.0.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.3.0, lodash@^4.7.0, lodash@~4.17.10: +lodash@^4.0.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.3.0, lodash@~4.17.10: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -7331,7 +7376,19 @@ mime-db@1.51.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== -mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.24: +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime-types@~2.1.17, mime-types@~2.1.24: version "2.1.27" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== @@ -8764,14 +8821,15 @@ pretty-format@^27.0.2: ansi-styles "^5.0.0" react-is "^17.0.1" -pretty-format@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" - integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== +pretty-format@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.0.2.tgz#6a24d71cbb61a5e5794ba7513fe22101675481bc" + integrity sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw== dependencies: + "@jest/schemas" "^28.0.2" ansi-regex "^5.0.1" ansi-styles "^5.0.0" - react-is "^17.0.1" + react-is "^18.0.0" process-nextick-args@~2.0.0: version "2.0.1" @@ -9051,6 +9109,11 @@ react-is@^17.0.1, react-is@^17.0.2: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== +react-is@^18.0.0: + version "18.1.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.1.0.tgz#61aaed3096d30eacf2a2127118b5b41387d32a67" + integrity sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg== + react-lifecycles-compat@^3.0.2, react-lifecycles-compat@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" @@ -9694,7 +9757,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -10110,7 +10173,15 @@ source-map-resolve@^0.6.0: atob "^2.1.2" decode-uri-component "^0.2.0" -source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.19: +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@~0.5.12, source-map-support@~0.5.19: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -10138,7 +10209,7 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3, source-map@~0.7.2: +source-map@~0.7.2: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== @@ -10818,10 +10889,10 @@ tough-cookie@^4.0.0: punycode "^2.1.1" universalify "^0.1.2" -tr46@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" - integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== +tr46@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" + integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== dependencies: punycode "^2.1.1" @@ -10917,13 +10988,6 @@ type@^2.0.0: resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -11169,14 +11233,14 @@ v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.1: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== -v8-to-istanbul@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz#0aeb763894f1a0a1676adf8a8b7612a38902446c" - integrity sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA== +v8-to-istanbul@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.0.tgz#be0dae58719fc53cb97e5c7ac1d7e6d4f5b19511" + integrity sha512-HcvgY/xaRm7isYmyx+lFKA4uQmfUbN0J4M0nNItvzTvH/iQ9kW5j/t4YSR+Ge323/lrgDAWJoF46tzGQHwBHFw== dependencies: + "@jridgewell/trace-mapping" "^0.3.7" "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" - source-map "^0.7.3" value-equal@^0.4.0: version "0.4.0" @@ -11210,12 +11274,12 @@ w3c-hr-time@^1.0.2: dependencies: browser-process-hrtime "^1.0.0" -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== +w3c-xmlserializer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz#06cdc3eefb7e4d0b20a560a5a3aeb0d2d9a65923" + integrity sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg== dependencies: - xml-name-validator "^3.0.0" + xml-name-validator "^4.0.0" walker@^1.0.7: version "1.0.7" @@ -11268,15 +11332,10 @@ webidl-conversions@^3.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== webpack-assets-manifest@^4.0.6: version "4.0.6" @@ -11451,17 +11510,33 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== +whatwg-encoding@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" + integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== dependencies: - iconv-lite "0.4.24" + iconv-lite "0.6.3" -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== +whatwg-mimetype@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" + integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== + +whatwg-url@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-10.0.0.tgz#37264f720b575b4a311bd4094ed8c760caaa05da" + integrity sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w== + dependencies: + tr46 "^3.0.0" + webidl-conversions "^7.0.0" + +whatwg-url@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" + integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== + dependencies: + tr46 "^3.0.0" + webidl-conversions "^7.0.0" whatwg-url@^5.0.0: version "5.0.0" @@ -11471,15 +11546,6 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" -whatwg-url@^8.0.0, whatwg-url@^8.5.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.6.0.tgz#27c0205a4902084b872aecb97cf0f2a7a3011f4c" - integrity sha512-os0KkeeqUOl7ccdDT1qqUcS4KH4tcBTSKK5Nl5WKb2lyxInIZ/CpjkqKa1Ss12mjfdcRX9mHmPPs7/SxG1Hbdw== - dependencies: - lodash "^4.7.0" - tr46 "^2.1.0" - webidl-conversions "^6.1.0" - which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" @@ -11562,15 +11628,13 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== +write-file-atomic@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.1.tgz#9faa33a964c1c85ff6f849b80b42a88c2c537c8f" + integrity sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ== dependencies: imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" + signal-exit "^3.0.7" write@^0.2.1: version "0.2.1" @@ -11586,20 +11650,20 @@ ws@^6.2.1: dependencies: async-limiter "~1.0.0" -ws@^7.3.1, ws@^7.4.5: +ws@^7.3.1: version "7.4.6" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== -ws@^8.6.0: +ws@^8.2.3, ws@^8.6.0: version "8.6.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.6.0.tgz#e5e9f1d9e7ff88083d0c0dd8281ea662a42c9c23" integrity sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw== -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== +xml-name-validator@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" + integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== xmlchars@^2.2.0: version "2.2.0" @@ -11644,11 +11708,6 @@ yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^20.2.2: - version "20.2.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.3.tgz#92419ba867b858c868acf8bae9bf74af0dd0ce26" - integrity sha512-emOFRT9WVHw03QSvN5qor9QQT9+sw5vwxfYweivSMHTcAXPefwVae2FjO7JJjj8hCE4CzPOPeFM83VwT29HCww== - yargs-parser@^21.0.0: version "21.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.0.tgz#a485d3966be4317426dd56bdb6a30131b281dc55" @@ -11670,20 +11729,7 @@ yargs@^13.3.2: y18n "^4.0.0" yargs-parser "^13.1.2" -yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yargs@^17.4.1: +yargs@^17.3.1, yargs@^17.4.1: version "17.4.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.4.1.tgz#ebe23284207bb75cee7c408c33e722bfb27b5284" integrity sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g== From 8a6b7964404ebc1d92d49f2edaace7b719a5afdd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 May 2022 22:25:40 +0900 Subject: [PATCH 027/652] Bump axios from 0.26.1 to 0.27.2 (#18270) Bumps [axios](https://github.com/axios/axios) from 0.26.1 to 0.27.2. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/master/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v0.26.1...v0.27.2) --- updated-dependencies: - dependency-name: axios dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 28 +++++++++++++++++++--------- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 26d9e53e2..df74e9175 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "array-includes": "^3.1.4", "arrow-key-navigation": "^1.2.0", "autoprefixer": "^9.8.8", - "axios": "^0.26.1", + "axios": "^0.27.2", "babel-loader": "^8.2.5", "babel-plugin-lodash": "^3.3.4", "babel-plugin-preval": "^5.1.0", diff --git a/yarn.lock b/yarn.lock index f956bdf2a..53dd02548 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2449,12 +2449,13 @@ axe-core@^4.3.5: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.3.5.tgz#78d6911ba317a8262bfee292aeafcc1e04b49cc5" integrity sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA== -axios@^0.26.1: - version "0.26.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9" - integrity sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA== +axios@^0.27.2: + version "0.27.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972" + integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ== dependencies: - follow-redirects "^1.14.8" + follow-redirects "^1.14.9" + form-data "^4.0.0" axobject-query@^2.2.0: version "2.2.0" @@ -5107,10 +5108,10 @@ flush-write-stream@^1.0.0: inherits "^2.0.3" readable-stream "^2.3.6" -follow-redirects@^1.0.0, follow-redirects@^1.14.8: - version "1.14.8" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc" - integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA== +follow-redirects@^1.0.0, follow-redirects@^1.14.9: + version "1.14.9" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7" + integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w== font-awesome@^4.7.0: version "4.7.0" @@ -5131,6 +5132,15 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + forwarded@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" From 132239008d3341c2372936ae2a71482606b8394a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 May 2022 22:29:51 +0900 Subject: [PATCH 028/652] Bump redux from 4.1.2 to 4.2.0 (#18087) Bumps [redux](https://github.com/reduxjs/redux) from 4.1.2 to 4.2.0. - [Release notes](https://github.com/reduxjs/redux/releases) - [Changelog](https://github.com/reduxjs/redux/blob/master/CHANGELOG.md) - [Commits](https://github.com/reduxjs/redux/compare/v4.1.2...v4.2.0) --- updated-dependencies: - dependency-name: redux dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index df74e9175..74180c8f1 100644 --- a/package.json +++ b/package.json @@ -114,7 +114,7 @@ "react-textarea-autosize": "^8.3.3", "react-toggle": "^4.1.2", "redis": "^4.1.0", - "redux": "^4.1.2", + "redux": "^4.2.0", "redux-immutable": "^4.0.0", "redux-thunk": "^2.4.1", "regenerator-runtime": "^0.13.9", diff --git a/yarn.lock b/yarn.lock index 53dd02548..8c8a0dccb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9402,10 +9402,10 @@ redux-thunk@^2.4.1: resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.4.1.tgz#0dd8042cf47868f4b29699941de03c9301a75714" integrity sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q== -redux@^4.0.0, redux@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/redux/-/redux-4.1.2.tgz#140f35426d99bb4729af760afcf79eaaac407104" - integrity sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw== +redux@^4.0.0, redux@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.0.tgz#46f10d6e29b6666df758780437651eeb2b969f13" + integrity sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA== dependencies: "@babel/runtime" "^7.9.2" From 8f4d7f54f86a00f8f20c4c275e404c73ecd3e963 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 May 2022 22:33:19 +0900 Subject: [PATCH 029/652] Bump stoplight from 2.2.1 to 3.0.0 (#17645) Bumps [stoplight](https://github.com/orgsync/stoplight) from 2.2.1 to 3.0.0. - [Release notes](https://github.com/orgsync/stoplight/releases) - [Changelog](https://github.com/bolshakov/stoplight/blob/master/CHANGELOG.md) - [Commits](https://github.com/orgsync/stoplight/compare/v2.2.1...v3.0.0) --- updated-dependencies: - dependency-name: stoplight dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index be951757d..cf0c52978 100644 --- a/Gemfile +++ b/Gemfile @@ -85,7 +85,7 @@ gem 'sidekiq-bulk', '~>0.2.0' gem 'simple-navigation', '~> 4.3' gem 'simple_form', '~> 5.1' gem 'sprockets-rails', '~> 3.4', require: 'sprockets/railtie' -gem 'stoplight', '~> 2.2.1' +gem 'stoplight', '~> 3.0.0' gem 'strong_migrations', '~> 0.7' gem 'tty-prompt', '~> 0.23', require: false gem 'twitter-text', '~> 3.1.0' diff --git a/Gemfile.lock b/Gemfile.lock index 896ccbfe1..b3e06e6a2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -643,7 +643,7 @@ GEM net-ssh (>= 2.8.0) stackprof (0.2.19) statsd-ruby (1.5.0) - stoplight (2.2.1) + stoplight (3.0.0) strong_migrations (0.7.9) activerecord (>= 5) swd (1.3.0) @@ -840,7 +840,7 @@ DEPENDENCIES sprockets (~> 3.7.2) sprockets-rails (~> 3.4) stackprof - stoplight (~> 2.2.1) + stoplight (~> 3.0.0) strong_migrations (~> 0.7) thor (~> 1.2) tty-prompt (~> 0.23) From 39820a940fbde0d1603529b42cf11b9a76dc57b2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 May 2022 22:38:02 +0900 Subject: [PATCH 030/652] Bump glob from 7.2.0 to 8.0.1 (#18013) Bumps [glob](https://github.com/isaacs/node-glob) from 7.2.0 to 8.0.1. - [Release notes](https://github.com/isaacs/node-glob/releases) - [Changelog](https://github.com/isaacs/node-glob/blob/main/changelog.md) - [Commits](https://github.com/isaacs/node-glob/compare/v7.2.0...v8.0.1) --- updated-dependencies: - dependency-name: glob dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 28 +++++++++++++++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 74180c8f1..01f1d116a 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "express": "^4.18.1", "file-loader": "^6.2.0", "font-awesome": "^4.7.0", - "glob": "^7.2.0", + "glob": "^8.0.1", "history": "^4.10.1", "http-link-header": "^1.0.4", "immutable": "^4.0.0", diff --git a/yarn.lock b/yarn.lock index 8c8a0dccb..358ae7de3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2763,6 +2763,13 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + braces@^2.3.1, braces@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -5333,7 +5340,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" -glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.2.0: +glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== @@ -5345,6 +5352,18 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, gl once "^1.3.0" path-is-absolute "^1.0.0" +glob@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.1.tgz#00308f5c035aa0b2a447cd37ead267ddff1577d3" + integrity sha512-cF7FYZZ47YzmCu7dDy50xSRRfO3ErRfrXuLZcNIuyiJEco0XSrGtuilG19L5xp3NcwTx7Gn+X6Tv3fmsUPTbow== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@~7.1.1: version "7.1.7" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" @@ -7463,6 +7482,13 @@ minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" +minimatch@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" + integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== + dependencies: + brace-expansion "^2.0.1" + minimatch@~3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" From db01df2ddabdc39afecdbf75ccd0b4ecc292240c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 May 2022 22:47:05 +0900 Subject: [PATCH 031/652] Bump sidekiq-scheduler from 3.2.0 to 4.0.0 (#18275) Bumps [sidekiq-scheduler](https://github.com/moove-it/sidekiq-scheduler) from 3.2.0 to 4.0.0. - [Release notes](https://github.com/moove-it/sidekiq-scheduler/releases) - [Changelog](https://github.com/moove-it/sidekiq-scheduler/blob/master/CHANGELOG.md) - [Commits](https://github.com/moove-it/sidekiq-scheduler/compare/v3.2.0...v4.0.0) --- updated-dependencies: - dependency-name: sidekiq-scheduler dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 13 ++++--------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/Gemfile b/Gemfile index cf0c52978..1c479e6cb 100644 --- a/Gemfile +++ b/Gemfile @@ -79,7 +79,7 @@ gem 'ruby-progressbar', '~> 1.11' gem 'sanitize', '~> 6.0' gem 'scenic', '~> 1.6' gem 'sidekiq', '~> 6.4' -gem 'sidekiq-scheduler', '~> 3.2' +gem 'sidekiq-scheduler', '~> 4.0' gem 'sidekiq-unique-jobs', '~> 7.1' gem 'sidekiq-bulk', '~>0.2.0' gem 'simple-navigation', '~> 4.3' diff --git a/Gemfile.lock b/Gemfile.lock index b3e06e6a2..d5aa4df06 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -203,7 +203,6 @@ GEM dotenv-rails (2.7.6) dotenv (= 2.7.6) railties (>= 3.2) - e2mmap (0.1.0) ed25519 (1.3.0) elasticsearch (7.13.3) elasticsearch-api (= 7.13.3) @@ -607,12 +606,10 @@ GEM redis (>= 4.2.0) sidekiq-bulk (0.2.0) sidekiq - sidekiq-scheduler (3.2.0) - e2mmap - redis (>= 3, < 5) + sidekiq-scheduler (4.0.0) + redis (>= 4.2.0) rufus-scheduler (~> 3.2) - sidekiq (>= 3) - thwait + sidekiq (>= 4) tilt (>= 1.4.0) sidekiq-unique-jobs (7.1.21) brpoplpush-redis_script (> 0.1.1, <= 2.0.0) @@ -656,8 +653,6 @@ GEM terrapin (0.6.0) climate_control (>= 0.0.3, < 1.0) thor (1.2.1) - thwait (0.2.0) - e2mmap tilt (2.0.10) tpm-key_attestation (0.9.0) bindata (~> 2.4) @@ -832,7 +827,7 @@ DEPENDENCIES scenic (~> 1.6) sidekiq (~> 6.4) sidekiq-bulk (~> 0.2.0) - sidekiq-scheduler (~> 3.2) + sidekiq-scheduler (~> 4.0) sidekiq-unique-jobs (~> 7.1) simple-navigation (~> 4.3) simple_form (~> 5.1) From 336c23336addeaf5dba42007dd2a5b3c06795d71 Mon Sep 17 00:00:00 2001 From: Sara Golemon Date: Thu, 5 May 2022 17:41:42 -0500 Subject: [PATCH 032/652] Allow VerifyLinkService to accept backlinks with differing case (#18320) --- app/services/verify_link_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/verify_link_service.rb b/app/services/verify_link_service.rb index 878a2188d..0a39d7f26 100644 --- a/app/services/verify_link_service.rb +++ b/app/services/verify_link_service.rb @@ -28,7 +28,7 @@ class VerifyLinkService < BaseService links = Nokogiri::HTML(@body).xpath('//a[contains(concat(" ", normalize-space(@rel), " "), " me ")]|//link[contains(concat(" ", normalize-space(@rel), " "), " me ")]') - if links.any? { |link| link['href'] == @link_back } + if links.any? { |link| link['href'].downcase == @link_back.downcase } true elsif links.empty? false From 99d7684dfdd362ded673e474403afb88a6cc0419 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Fri, 6 May 2022 00:41:56 +0200 Subject: [PATCH 033/652] Replace leftover `envelope` icons with `at` icons (#18305) --- app/helpers/application_helper.rb | 2 +- app/helpers/statuses_helper.rb | 2 +- app/javascript/mastodon/components/status.js | 2 +- .../mastodon/features/status/components/detailed_status.js | 2 +- app/javascript/mastodon/features/ui/components/boost_modal.js | 2 +- app/views/statuses/_simple_status.html.haml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 9984820da..19dc0acd6 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -132,7 +132,7 @@ module ApplicationHelper elsif status.private_visibility? || status.limited_visibility? fa_icon('lock', title: I18n.t('statuses.visibilities.private')) elsif status.direct_visibility? - fa_icon('envelope', title: I18n.t('statuses.visibilities.direct')) + fa_icon('at', title: I18n.t('statuses.visibilities.direct')) end end diff --git a/app/helpers/statuses_helper.rb b/app/helpers/statuses_helper.rb index e92b4c839..488eabeec 100644 --- a/app/helpers/statuses_helper.rb +++ b/app/helpers/statuses_helper.rb @@ -101,7 +101,7 @@ module StatusesHelper when 'private' fa_icon 'lock fw' when 'direct' - fa_icon 'envelope fw' + fa_icon 'at fw' end end diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js index 8d917a995..766093226 100644 --- a/app/javascript/mastodon/components/status.js +++ b/app/javascript/mastodon/components/status.js @@ -468,7 +468,7 @@ class Status extends ImmutablePureComponent { 'public': { icon: 'globe', text: intl.formatMessage(messages.public_short) }, 'unlisted': { icon: 'unlock', text: intl.formatMessage(messages.unlisted_short) }, 'private': { icon: 'lock', text: intl.formatMessage(messages.private_short) }, - 'direct': { icon: 'envelope', text: intl.formatMessage(messages.direct_short) }, + 'direct': { icon: 'at', text: intl.formatMessage(messages.direct_short) }, }; const visibilityIcon = visibilityIconInfo[status.get('visibility')]; diff --git a/app/javascript/mastodon/features/status/components/detailed_status.js b/app/javascript/mastodon/features/status/components/detailed_status.js index c99e01f73..13bce1b83 100644 --- a/app/javascript/mastodon/features/status/components/detailed_status.js +++ b/app/javascript/mastodon/features/status/components/detailed_status.js @@ -185,7 +185,7 @@ class DetailedStatus extends ImmutablePureComponent { 'public': { icon: 'globe', text: intl.formatMessage(messages.public_short) }, 'unlisted': { icon: 'unlock', text: intl.formatMessage(messages.unlisted_short) }, 'private': { icon: 'lock', text: intl.formatMessage(messages.private_short) }, - 'direct': { icon: 'envelope', text: intl.formatMessage(messages.direct_short) }, + 'direct': { icon: 'at', text: intl.formatMessage(messages.direct_short) }, }; const visibilityIcon = visibilityIconInfo[status.get('visibility')]; diff --git a/app/javascript/mastodon/features/ui/components/boost_modal.js b/app/javascript/mastodon/features/ui/components/boost_modal.js index f8a344690..ab87ee427 100644 --- a/app/javascript/mastodon/features/ui/components/boost_modal.js +++ b/app/javascript/mastodon/features/ui/components/boost_modal.js @@ -88,7 +88,7 @@ class BoostModal extends ImmutablePureComponent { 'public': { icon: 'globe', text: intl.formatMessage(messages.public_short) }, 'unlisted': { icon: 'unlock', text: intl.formatMessage(messages.unlisted_short) }, 'private': { icon: 'lock', text: intl.formatMessage(messages.private_short) }, - 'direct': { icon: 'envelope', text: intl.formatMessage(messages.direct_short) }, + 'direct': { icon: 'at', text: intl.formatMessage(messages.direct_short) }, }; const visibilityIcon = visibilityIconInfo[status.get('visibility')]; diff --git a/app/views/statuses/_simple_status.html.haml b/app/views/statuses/_simple_status.html.haml index 13b6613ce..552b42078 100644 --- a/app/views/statuses/_simple_status.html.haml +++ b/app/views/statuses/_simple_status.html.haml @@ -65,6 +65,6 @@ - elsif status.private_visibility? || status.limited_visibility? = fa_icon 'lock fw' - else - = fa_icon 'envelope fw' + = fa_icon 'at fw' = link_to remote_interaction_path(status, type: :favourite), class: 'status__action-bar-button icon-button modal-button' do = fa_icon 'star fw' From 9250578e6bfe805e81e65fc5d9684bac3503f189 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 6 May 2022 14:53:22 +0200 Subject: [PATCH 034/652] New Crowdin updates (#18255) * New translations doorkeeper.en.yml (Chinese Traditional, Hong Kong) * New translations doorkeeper.en.yml (Tatar) * New translations doorkeeper.en.yml (Malayalam) * New translations doorkeeper.en.yml (Breton) * New translations doorkeeper.en.yml (Sinhala) * New translations doorkeeper.en.yml (Standard Moroccan Tamazight) * New translations en.json (Chinese Traditional) * New translations en.json (Catalan) * New translations en.json (Japanese) * New translations en.json (French) * New translations en.json (Spanish) * New translations en.yml (Hebrew) * New translations en.yml (Hebrew) * New translations en.yml (Hebrew) * New translations en.yml (Hebrew) * New translations en.json (Kurmanji (Kurdish)) * New translations en.yml (Hebrew) * New translations en.yml (Hebrew) * New translations en.json (Korean) * New translations en.yml (Hebrew) * New translations en.yml (Hebrew) * New translations en.yml (Hebrew) * New translations en.yml (Hebrew) * New translations en.json (Korean) * New translations en.yml (Hebrew) * New translations en.json (Chinese Simplified) * New translations en.yml (Hebrew) * New translations en.json (Vietnamese) * New translations en.json (Turkish) * New translations en.json (Galician) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` * Add whitelist_en-GB.json [ci skip] * New translations en.json (Ukrainian) * New translations en.json (Ukrainian) * New translations en.json (Ukrainian) * New translations en.yml (Hebrew) * New translations en.json (Ukrainian) * New translations en.yml (Hebrew) * New translations en.json (Ukrainian) * New translations en.yml (Hebrew) * New translations en.json (Ukrainian) * New translations en.yml (Hebrew) * New translations en.json (Ukrainian) * New translations en.yml (Hebrew) * New translations en.json (Swedish) * New translations en.json (Ukrainian) * New translations en.yml (Hebrew) * New translations en.json (Ukrainian) * New translations en.yml (Hebrew) * New translations en.json (Greek) * New translations en.json (Ukrainian) * New translations en.yml (Hebrew) * New translations en.json (Ukrainian) * New translations en.json (Thai) * New translations en.yml (Hebrew) * New translations en.yml (Ukrainian) * New translations en.json (Polish) * New translations en.json (Ukrainian) * New translations doorkeeper.en.yml (Ukrainian) * New translations en.json (Thai) * New translations en.yml (Hebrew) * New translations en.yml (Ukrainian) * New translations en.json (Danish) * New translations en.json (Hebrew) * New translations en.json (Ido) * New translations simple_form.en.yml (Ukrainian) * New translations en.yml (Hebrew) * New translations en.json (Danish) * New translations en.json (Ido) * New translations en.yml (Hebrew) * New translations doorkeeper.en.yml (Hebrew) * New translations en.json (Ido) * New translations en.yml (Hebrew) * New translations en.yml (Afrikaans) * New translations en.json (Afrikaans) * New translations en.yml (Hebrew) * New translations en.json (Afrikaans) * New translations en.json (Hebrew) * New translations en.json (Slovenian) * New translations simple_form.en.yml (Hebrew) * New translations en.yml (Slovenian) * New translations en.json (Hebrew) * New translations en.json (Slovenian) * New translations en.json (Ukrainian) * New translations simple_form.en.yml (Hebrew) * New translations simple_form.en.yml (Slovenian) * New translations en.yml (Hebrew) * New translations en.json (Hebrew) * New translations en.json (Latvian) * New translations simple_form.en.yml (Hebrew) * New translations simple_form.en.yml (Slovenian) * New translations en.yml (Hebrew) * New translations en.json (Hebrew) * New translations simple_form.en.yml (Hebrew) * New translations simple_form.en.yml (Slovenian) * New translations en.yml (Hebrew) * New translations en.yml (Slovenian) * New translations en.json (Hebrew) * New translations simple_form.en.yml (Ukrainian) * New translations simple_form.en.yml (Hebrew) * New translations simple_form.en.yml (Slovenian) * New translations en.yml (Hebrew) * New translations en.yml (Slovenian) * New translations en.json (German) * New translations simple_form.en.yml (Hebrew) * New translations en.yml (Hebrew) * New translations simple_form.en.yml (Hebrew) * New translations en.yml (Hebrew) * New translations en.yml (Slovenian) * New translations en.json (Russian) * New translations simple_form.en.yml (Hebrew) * New translations en.yml (Hebrew) * New translations en.yml (Slovenian) * New translations en.json (Icelandic) * New translations simple_form.en.yml (Hebrew) * New translations en.yml (Hebrew) * New translations en.yml (Hebrew) * New translations en.json (Hungarian) * New translations simple_form.en.yml (Hebrew) * New translations simple_form.en.yml (Hungarian) * New translations en.yml (Hebrew) * New translations en.yml (Hungarian) * New translations en.json (Hungarian) * New translations en.yml (Hebrew) * New translations en.json (Czech) * New translations en.yml (Hebrew) * New translations en.json (Czech) * New translations en.yml (Spanish) * New translations en.yml (Hebrew) * New translations en.json (Spanish) * New translations en.yml (Hebrew) * New translations en.json (Chinese Simplified) * New translations en.yml (Hebrew) * New translations en.json (Portuguese) * New translations en.yml (Hebrew) * New translations en.yml (Japanese) * New translations simple_form.en.yml (Japanese) * New translations doorkeeper.en.yml (Japanese) * New translations en.json (Danish) * New translations activerecord.en.yml (Japanese) * New translations en.yml (Hebrew) * New translations en.yml (Slovenian) * New translations en.json (Welsh) * New translations en.yml (Slovenian) * New translations en.json (Italian) * New translations en.yml (Slovenian) * New translations en.json (Indonesian) * New translations en.yml (Slovenian) * New translations en.yml (Slovenian) * New translations en.yml (Thai) * New translations en.yml (Slovenian) * New translations en.yml (Thai) * New translations en.yml (Slovenian) * New translations en.yml (Thai) * New translations en.yml (Thai) * New translations en.yml (Slovenian) * New translations en.yml (Danish) * New translations en.json (Swedish) * New translations en.yml (Slovenian) * New translations en.json (Vietnamese) * New translations en.yml (Slovenian) * New translations en.yml (Slovenian) * New translations en.yml (Slovenian) * New translations en.yml (Slovenian) * New translations en.yml (Welsh) * New translations simple_form.en.yml (Slovenian) * New translations en.yml (Slovenian) * New translations en.yml (Scottish Gaelic) * New translations en.json (Scottish Gaelic) * New translations en.yml (Slovenian) * New translations en.yml (Welsh) * New translations en.json (Scottish Gaelic) * New translations en.yml (Slovenian) * New translations en.yml (Slovenian) * New translations en.json (Danish) * New translations en.yml (Slovenian) * New translations en.json (Portuguese, Brazilian) * New translations en.yml (Slovenian) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Slovenian) * New translations doorkeeper.en.yml (Slovenian) * New translations simple_form.en.yml (Slovenian) * New translations en.yml (Slovenian) * New translations en.json (Spanish, Argentina) * New translations en.yml (Slovenian) * New translations en.json (Scottish Gaelic) * New translations en.json (Slovenian) * New translations simple_form.en.yml (Slovenian) * New translations en.json (Welsh) * New translations en.json (French) * New translations en.json (Welsh) * New translations en.json (French) * New translations en.yml (Arabic) * New translations en.json (Arabic) * New translations simple_form.en.yml (Welsh) * New translations en.json (French) * New translations simple_form.en.yml (Ukrainian) * New translations en.json (Ukrainian) * New translations en.json (Ukrainian) * New translations en.yml (German) * New translations en.yml (Ukrainian) * New translations en.json (Ukrainian) * New translations en.yml (Hebrew) * New translations en.json (Chinese Simplified) * New translations en.yml (Hebrew) * New translations en.yml (Hebrew) * New translations en.yml (Hebrew) * New translations en.yml (Hebrew) * New translations en.yml (Hebrew) * New translations en.yml (Hebrew) * New translations en.yml (Hebrew) * New translations en.yml (Hebrew) * New translations en.json (Ido) * New translations en.json (Ido) * New translations en.json (Ido) * New translations en.json (Chinese Simplified) * New translations en.json (Chinese Simplified) * New translations en.json (Chinese Simplified) * New translations en.yml (Chinese Simplified) * New translations en.yml (Chinese Simplified) * New translations en.json (Chinese Simplified) * New translations en.json (Chinese Simplified) * New translations en.json (Chinese Simplified) * New translations en.yml (Arabic) * New translations en.json (Asturian) * New translations en.yml (Thai) * New translations en.json (Thai) * New translations en.json (German) * New translations en.json (Ido) * New translations en.json (Welsh) * New translations en.json (Ido) * New translations en.json (Welsh) * New translations en.json (German) * New translations en.json (German) * New translations en.json (German) * New translations en.json (German) * New translations en.json (German) * New translations en.yml (German) * New translations en.yml (Catalan) * New translations en.json (Catalan) * New translations en.json (German) * New translations en.json (Albanian) * New translations en.json (German) * New translations en.yml (German) * New translations en.json (German) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 35 +- app/javascript/mastodon/locales/ar.json | 17 +- app/javascript/mastodon/locales/ast.json | 7 +- app/javascript/mastodon/locales/bg.json | 7 +- app/javascript/mastodon/locales/bn.json | 7 +- app/javascript/mastodon/locales/br.json | 7 +- app/javascript/mastodon/locales/ca.json | 75 +- app/javascript/mastodon/locales/ckb.json | 7 +- app/javascript/mastodon/locales/co.json | 7 +- app/javascript/mastodon/locales/cs.json | 9 +- app/javascript/mastodon/locales/cy.json | 27 +- app/javascript/mastodon/locales/da.json | 9 +- app/javascript/mastodon/locales/de.json | 37 +- app/javascript/mastodon/locales/el.json | 9 +- app/javascript/mastodon/locales/en-GB.json | 544 +++++++ app/javascript/mastodon/locales/eo.json | 7 +- app/javascript/mastodon/locales/es-AR.json | 9 +- app/javascript/mastodon/locales/es-MX.json | 15 +- app/javascript/mastodon/locales/es.json | 9 +- app/javascript/mastodon/locales/et.json | 7 +- app/javascript/mastodon/locales/eu.json | 7 +- app/javascript/mastodon/locales/fa.json | 7 +- app/javascript/mastodon/locales/fi.json | 7 +- app/javascript/mastodon/locales/fr.json | 35 +- app/javascript/mastodon/locales/ga.json | 7 +- app/javascript/mastodon/locales/gd.json | 11 +- app/javascript/mastodon/locales/gl.json | 17 +- app/javascript/mastodon/locales/he.json | 533 +++---- app/javascript/mastodon/locales/hi.json | 7 +- app/javascript/mastodon/locales/hr.json | 7 +- app/javascript/mastodon/locales/hu.json | 23 +- app/javascript/mastodon/locales/hy.json | 9 +- app/javascript/mastodon/locales/id.json | 9 +- app/javascript/mastodon/locales/io.json | 161 +- app/javascript/mastodon/locales/is.json | 9 +- app/javascript/mastodon/locales/it.json | 9 +- app/javascript/mastodon/locales/ja.json | 11 +- app/javascript/mastodon/locales/ka.json | 7 +- app/javascript/mastodon/locales/kab.json | 7 +- app/javascript/mastodon/locales/kk.json | 7 +- app/javascript/mastodon/locales/kn.json | 7 +- app/javascript/mastodon/locales/ko.json | 11 +- app/javascript/mastodon/locales/ku.json | 9 +- app/javascript/mastodon/locales/kw.json | 7 +- app/javascript/mastodon/locales/lt.json | 7 +- app/javascript/mastodon/locales/lv.json | 9 +- app/javascript/mastodon/locales/mk.json | 7 +- app/javascript/mastodon/locales/ml.json | 7 +- app/javascript/mastodon/locales/mr.json | 7 +- app/javascript/mastodon/locales/ms.json | 7 +- app/javascript/mastodon/locales/nl.json | 9 +- app/javascript/mastodon/locales/nn.json | 7 +- app/javascript/mastodon/locales/no.json | 7 +- app/javascript/mastodon/locales/oc.json | 7 +- app/javascript/mastodon/locales/pa.json | 7 +- app/javascript/mastodon/locales/pl.json | 9 +- app/javascript/mastodon/locales/pt-BR.json | 29 +- app/javascript/mastodon/locales/pt-PT.json | 9 +- app/javascript/mastodon/locales/ro.json | 7 +- app/javascript/mastodon/locales/ru.json | 9 +- app/javascript/mastodon/locales/sa.json | 7 +- app/javascript/mastodon/locales/sc.json | 7 +- app/javascript/mastodon/locales/si.json | 7 +- app/javascript/mastodon/locales/sk.json | 7 +- app/javascript/mastodon/locales/sl.json | 91 +- app/javascript/mastodon/locales/sq.json | 9 +- app/javascript/mastodon/locales/sr-Latn.json | 7 +- app/javascript/mastodon/locales/sr.json | 7 +- app/javascript/mastodon/locales/sv.json | 17 +- app/javascript/mastodon/locales/szl.json | 7 +- app/javascript/mastodon/locales/ta.json | 7 +- app/javascript/mastodon/locales/tai.json | 7 +- app/javascript/mastodon/locales/te.json | 7 +- app/javascript/mastodon/locales/th.json | 13 +- app/javascript/mastodon/locales/tr.json | 11 +- app/javascript/mastodon/locales/tt.json | 7 +- app/javascript/mastodon/locales/ug.json | 7 +- app/javascript/mastodon/locales/uk.json | 269 ++-- app/javascript/mastodon/locales/ur.json | 7 +- app/javascript/mastodon/locales/vi.json | 11 +- .../mastodon/locales/whitelist_en-GB.json | 2 + app/javascript/mastodon/locales/zgh.json | 7 +- app/javascript/mastodon/locales/zh-CN.json | 101 +- app/javascript/mastodon/locales/zh-HK.json | 7 +- app/javascript/mastodon/locales/zh-TW.json | 9 +- config/locales/activerecord.he.yml | 19 + config/locales/af.yml | 4 + config/locales/ar.yml | 6 + config/locales/ca.yml | 22 +- config/locales/cy.yml | 9 +- config/locales/da.yml | 3 +- config/locales/de.yml | 16 +- config/locales/devise.he.yml | 58 +- config/locales/devise.io.yml | 55 + config/locales/devise.th.yml | 2 +- config/locales/doorkeeper.en-GB.yml | 1 + config/locales/doorkeeper.he.yml | 77 +- config/locales/doorkeeper.sl.yml | 6 +- config/locales/doorkeeper.th.yml | 4 +- config/locales/doorkeeper.uk.yml | 6 +- config/locales/es-AR.yml | 2 + config/locales/es-MX.yml | 2 + config/locales/es.yml | 2 +- config/locales/gd.yml | 2 + config/locales/he.yml | 1380 ++++++++++++++++- config/locales/hu.yml | 2 +- config/locales/it.yml | 2 + config/locales/ku.yml | 2 + config/locales/lv.yml | 2 + config/locales/pt-BR.yml | 134 ++ config/locales/pt-PT.yml | 2 + config/locales/simple_form.ca.yml | 24 +- config/locales/simple_form.cy.yml | 2 + config/locales/simple_form.he.yml | 172 +- config/locales/simple_form.hu.yml | 2 +- config/locales/simple_form.sl.yml | 63 +- config/locales/simple_form.uk.yml | 5 + config/locales/sl.yml | 710 ++++++++- config/locales/th.yml | 23 +- config/locales/uk.yml | 20 + config/locales/zh-CN.yml | 6 +- 121 files changed, 4311 insertions(+), 1093 deletions(-) create mode 100644 app/javascript/mastodon/locales/en-GB.json create mode 100644 app/javascript/mastodon/locales/whitelist_en-GB.json create mode 100644 config/locales/doorkeeper.en-GB.yml diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index fe91569bc..2f596a325 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -57,12 +57,12 @@ "alert.rate_limited.title": "Rate limited", "alert.unexpected.message": "An unexpected error occurred.", "alert.unexpected.title": "Oops!", - "announcement.announcement": "Announcement", + "announcement.announcement": "Aankondiging", "attachments_list.unprocessed": "(unprocessed)", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.body": "Something went wrong while loading this component.", - "bundle_column_error.retry": "Try again", + "bundle_column_error.retry": "Probeer weer", "bundle_column_error.title": "Network error", "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", @@ -70,26 +70,26 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.conversations": "Conversations", + "column.direct": "Direkte boodskappe", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", "column.follow_requests": "Follow requests", - "column.home": "Home", - "column.lists": "Lists", - "column.mutes": "Muted users", - "column.notifications": "Notifications", + "column.home": "Tuis", + "column.lists": "Lyste", + "column.mutes": "Gedempte gebruikers", + "column.notifications": "Kennisgewings", "column.pins": "Pinned toot", "column.public": "Federated timeline", - "column_back_button.label": "Back", - "column_header.hide_settings": "Hide settings", - "column_header.moveLeft_settings": "Move column to the left", - "column_header.moveRight_settings": "Move column to the right", + "column_back_button.label": "Terug", + "column_header.hide_settings": "Versteek instellings", + "column_header.moveLeft_settings": "Skuif kolom na links", + "column_header.moveRight_settings": "Skuif kolom na regs", "column_header.pin": "Pin", - "column_header.show_settings": "Show settings", + "column_header.show_settings": "Wys instellings", "column_header.unpin": "Unpin", - "column_subheading.settings": "Settings", - "community.column_settings.local_only": "Local only", + "column_subheading.settings": "Instellings", + "community.column_settings.local_only": "Slegs plaaslik", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Remote only", "compose_form.direct_message_warning_learn_more": "Learn more", @@ -166,7 +166,7 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "Jy het nog nie direkte boodskappe nie. Wanneer jy een stuur of ontvang, sal dit hier verskyn.", "empty_column.domain_blocks": "There are no blocked domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", + "keyboard_shortcuts.direct": "om direkte boodskappe kolom oop te maak", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", + "navigation_bar.direct": "Direkte boodskappe", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", @@ -366,7 +367,7 @@ "poll_button.remove_poll": "Remove poll", "privacy.change": "Adjust status privacy", "privacy.direct.long": "Visible for mentioned users only", - "privacy.direct.short": "Direct", + "privacy.direct.short": "Slegs genoemde persone", "privacy.private.long": "Visible for followers only", "privacy.private.short": "Followers-only", "privacy.public.long": "Visible for all", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index ac93bf706..cd085fa86 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -70,7 +70,7 @@ "column.blocks": "المُستَخدِمون المَحظورون", "column.bookmarks": "الفواصل المرجعية", "column.community": "الخيط الزمني المحلي", - "column.conversations": "المحادثات", + "column.direct": "الرسائل المباشِرة", "column.directory": "تَصَفُّحُ المَلفات الشخصية", "column.domain_blocks": "النِّطاقَاتُ المَحظُورَة", "column.favourites": "المُفَضَّلَة", @@ -166,7 +166,7 @@ "empty_column.blocks": "لم تقم بحظر أي مستخدِم بعد.", "empty_column.bookmarked_statuses": "ليس لديك أية منشورات في الفواصل المرجعية بعد. عندما ستقوم بإضافة البعض منها، ستظهر هنا.", "empty_column.community": "الخط العام المحلي فارغ. أكتب شيئا ما للعامة كبداية!", - "empty_column.conversations": "عندما ترسل أو تستلم منشورًا محصورٌا على الأشخاص المشار إليهم فيه، سيظهر هنا.", + "empty_column.direct": "لم تتلق أية رسالة خاصة مباشِرة بعد. سوف يتم عرض الرسائل المباشرة هنا إن قمت بإرسال واحدة أو تلقيت البعض منها.", "empty_column.domain_blocks": "ليس هناك نطاقات مخفية بعد.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "ليس لديك أية منشورات مفضلة بعد. عندما ستقوم بالإعجاب بواحدة، ستظهر هنا.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "للترقية", "keyboard_shortcuts.column": "للتركيز على منشور على أحد الأعمدة", "keyboard_shortcuts.compose": "للتركيز على نافذة تحرير النصوص", - "keyboard_shortcuts.conversations": "لفتح عمود المحادثات", "keyboard_shortcuts.description": "الوصف", + "keyboard_shortcuts.direct": "لفتح عمود الرسائل المباشرة", "keyboard_shortcuts.down": "للانتقال إلى أسفل القائمة", "keyboard_shortcuts.enter": "لفتح المنشور", "keyboard_shortcuts.favourite": "للإضافة إلى المفضلة", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "الفواصل المرجعية", "navigation_bar.community_timeline": "الخيط العام المحلي", "navigation_bar.compose": "لتحرير منشور جديد", + "navigation_bar.direct": "الرسائل المباشِرة", "navigation_bar.discover": "اكتشف", "navigation_bar.domain_blocks": "النطاقات المخفية", "navigation_bar.edit_profile": "عدّل الملف التعريفي", @@ -366,7 +367,7 @@ "poll_button.remove_poll": "إزالة استطلاع الرأي", "privacy.change": "اضبط خصوصية المنشور", "privacy.direct.long": "أنشر إلى المستخدمين المشار إليهم فقط", - "privacy.direct.short": "للمشار إليهم فقط", + "privacy.direct.short": "الأشخاص المشار إليهم فقط", "privacy.private.long": "أنشر لمتابعيك فقط", "privacy.private.short": "للمتابِعين فقط", "privacy.public.long": "مرئي للكل", @@ -393,7 +394,7 @@ "report.categories.other": "أخرى", "report.categories.spam": "مزعج", "report.categories.violation": "المحتوى ينتهك شرطا أو عدة شروط استخدام للخادم", - "report.category.subtitle": "Choose the best match", + "report.category.subtitle": "اختر أفضل تطابق", "report.category.title": "Tell us what's going on with this {type}", "report.category.title_account": "ملف تعريفي", "report.category.title_status": "منشور", @@ -413,13 +414,13 @@ "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", "report.reasons.violation": "ينتهك قواعد الخادم", "report.reasons.violation_description": "You are aware that it breaks specific rules", - "report.rules.subtitle": "Select all that apply", + "report.rules.subtitle": "اختر كل ما ينطبق", "report.rules.title": "ما هي القواعد المنتهكة؟", - "report.statuses.subtitle": "Select all that apply", + "report.statuses.subtitle": "اختر كل ما ينطبق", "report.statuses.title": "هل توجد مشاركات تدعم صحة هذا البلاغ؟", "report.submit": "إرسال", "report.target": "ابلغ عن {target}", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action": "يمكنك هنا التحكم في ما يعرض لك على ماستدون:", "report.thanks.take_action_actionable": "في أثناء مراجعتنا للبلاغ، يمكنك اتخاذ إجراء ضد @{name}:", "report.thanks.title": "هل ترغب في مشاهدة هذا؟", "report.thanks.title_actionable": "شُكرًا لَكَ على الإبلاغ، سَوفَ نَنظُرُ فِي هَذَا الأمر.", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 3400e3cd1..984153c12 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -70,7 +70,7 @@ "column.blocks": "Usuarios bloquiaos", "column.bookmarks": "Marcadores", "column.community": "Llinia temporal llocal", - "column.conversations": "Conversations", + "column.direct": "Mensaxes direutos", "column.directory": "Browse profiles", "column.domain_blocks": "Dominios anubríos", "column.favourites": "Favoritos", @@ -166,7 +166,7 @@ "empty_column.blocks": "Entá nun bloquiesti a nengún usuariu.", "empty_column.bookmarked_statuses": "Entá nun tienes nengún barritu en Marcadores. Cuando amiestes unu, va amosase equí.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "Entá nun tienes nengún mensaxe direutu. Cuando unvies o recibas dalgún, apaez equí.", "empty_column.domain_blocks": "Entá nun hai dominios anubríos.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Entá nun tienes nengún barritu en Favoritos. Cuando amiestes unu, va amosase equí.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "pa compartir un toot", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "Enfocar l'área de composición", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Descripción", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "pa baxar na llista", "keyboard_shortcuts.enter": "p'abrir estaos", "keyboard_shortcuts.favourite": "p'amestar a Favoritos", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Llinia temporal llocal", "navigation_bar.compose": "Compose new post", + "navigation_bar.direct": "Mensaxes direutos", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Dominios anubríos", "navigation_bar.edit_profile": "Editar el perfil", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 42cd08f1f..166ed4601 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -70,7 +70,7 @@ "column.blocks": "Блокирани потребители", "column.bookmarks": "Отметки", "column.community": "Локална емисия", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Преглед на профили", "column.domain_blocks": "Hidden domains", "column.favourites": "Любими", @@ -166,7 +166,7 @@ "empty_column.blocks": "Не сте блокирали потребители все още.", "empty_column.bookmarked_statuses": "Все още нямате отметнати публикации. Когато отметнете някоя, тя ще се покаже тук.", "empty_column.community": "Локалната емисия е празна. Напишете нещо публично, за да започнете!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "There are no hidden domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Все още нямате любими публикации. Когато поставите някоя в любими, тя ще се покаже тук.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "за споделяне", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "за фокусиране на текстовото пространство за композиране", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Описание", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "за придвижване надолу в списъка", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "за поставяне в любими", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Отметки", "navigation_bar.community_timeline": "Локална емисия", "navigation_bar.compose": "Композиране на нова публикация", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Откриване", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Редактирай профил", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index b009d5964..718a1b2b2 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -70,7 +70,7 @@ "column.blocks": "যাদের ব্লক করা হয়েছে", "column.bookmarks": "বুকমার্ক", "column.community": "স্থানীয় সময়সারি", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "প্রোফাইল ব্রাউজ করুন", "column.domain_blocks": "লুকোনো ডোমেনগুলি", "column.favourites": "পছন্দের গুলো", @@ -166,7 +166,7 @@ "empty_column.blocks": "আপনি কোনো ব্যবহারকারীদের ব্লক করেন নি।", "empty_column.bookmarked_statuses": "আপনার কাছে এখনও কোনও বুকমার্কড টুট নেই। আপনি যখন একটি বুকমার্ক করেন, এটি এখানে প্রদর্শিত হবে।", "empty_column.community": "স্থানীয় সময়রেখাতে কিছু নেই। প্রকাশ্যভাবে কিছু লিখে লেখালেখির উদ্বোধন করে ফেলুন!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "এখনও কোনও লুকানো ডোমেন নেই।", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "আপনার পছন্দের কোনো টুট এখনো নেই। আপনি কোনো লেখা পছন্দের হিসেবে চিহ্নিত করলে এখানে পাওয়া যাবে।", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "সমর্থন করতে", "keyboard_shortcuts.column": "কোনো কলামএ কোনো লেখা ফোকাস করতে", "keyboard_shortcuts.compose": "লেখা সম্পদনার জায়গায় ফোকাস করতে", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "বিবরণ", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "তালিকার ভেতরে নিচে যেতে", "keyboard_shortcuts.enter": "অবস্থা দেখতে", "keyboard_shortcuts.favourite": "পছন্দের দেখতে", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "বুকমার্ক", "navigation_bar.community_timeline": "স্থানীয় সময়রেখা", "navigation_bar.compose": "নতুন টুট লিখুন", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "ঘুরে দেখুন", "navigation_bar.domain_blocks": "লুকানো ডোমেনগুলি", "navigation_bar.edit_profile": "নিজের পাতা সম্পাদনা করতে", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index 74d430b50..e7711e4d9 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -70,7 +70,7 @@ "column.blocks": "Implijer·ezed·ien berzet", "column.bookmarks": "Sinedoù", "column.community": "Red-amzer lec'hel", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Mont a-dreuz ar profiloù", "column.domain_blocks": "Domani berzet", "column.favourites": "Muiañ-karet", @@ -166,7 +166,7 @@ "empty_column.blocks": "N'eus ket bet berzet implijer·ez ganeoc'h c'hoazh.", "empty_column.bookmarked_statuses": "N'ho peus toud ebet enrollet en ho sinedoù c'hoazh. Pa vo ouzhpennet unan ganeoc'h e teuio war wel amañ.", "empty_column.community": "Goulo eo ar red-amzer lec'hel. Skrivit'ta un dra evit lakaat tan dezhi !", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "N'eus domani kuzh ebet c'hoazh.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "N'ho peus toud muiañ-karet ebet c'hoazh. Pa vo lakaet unan ganeoc'h e vo diskouezet amañ.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "da skignañ", "keyboard_shortcuts.column": "Fokus ar bann", "keyboard_shortcuts.compose": "Fokus an takad testenn", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Deskrivadur", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "Diskennañ er roll", "keyboard_shortcuts.enter": "evit digeriñ un toud", "keyboard_shortcuts.favourite": "Lakaat an toud evel muiañ-karet", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Sinedoù", "navigation_bar.community_timeline": "Red-amzer lec'hel", "navigation_bar.compose": "Skrivañ un toud nevez", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Dizoleiñ", "navigation_bar.domain_blocks": "Domanioù kuzhet", "navigation_bar.edit_profile": "Aozañ ar profil", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 16de55828..9946b6a9c 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -1,24 +1,24 @@ { "account.account_note_header": "Nota", - "account.add_or_remove_from_list": "Afegeix o treu de les llistes", + "account.add_or_remove_from_list": "Afegeix o elimina de les llistes", "account.badges.bot": "Bot", "account.badges.group": "Grup", "account.block": "Bloqueja @{name}", - "account.block_domain": "Amaga-ho tot de {domain}", + "account.block_domain": "Bloqueja el domini {domain}", "account.blocked": "Bloquejat", "account.browse_more_on_origin_server": "Navega més en el perfil original", "account.cancel_follow_request": "Anul·la la sol·licitud de seguiment", "account.direct": "Envia missatge directe a @{name}", - "account.disable_notifications": "Deixa de notificar-me les publicacions de @{name}", + "account.disable_notifications": "No em notifiquis les publicacions de @{name}", "account.domain_blocked": "Domini bloquejat", "account.edit_profile": "Edita el perfil", "account.enable_notifications": "Notifica’m les publicacions de @{name}", "account.endorse": "Recomana en el teu perfil", "account.follow": "Segueix", "account.followers": "Seguidors", - "account.followers.empty": "Encara ningú no segueix aquest usuari.", + "account.followers.empty": "Ningú segueix aquest usuari encara.", "account.followers_counter": "{count, plural, one {{counter} Seguidor} other {{counter} Seguidors}}", - "account.following": "Seguits", + "account.following": "Seguint", "account.following_counter": "{count, plural, other {{counter} Seguint}}", "account.follows.empty": "Aquest usuari encara no segueix ningú.", "account.follows_you": "Et segueix", @@ -26,8 +26,8 @@ "account.joined": "Membre des de {date}", "account.link_verified_on": "La propietat d'aquest enllaç es va verificar el dia {date}", "account.locked_info": "Aquest estat de privadesa del compte està definit com a bloquejat. El propietari revisa manualment qui pot seguir-lo.", - "account.media": "Mèdia", - "account.mention": "Esmenta @{name}", + "account.media": "Multimèdia", + "account.mention": "Menciona @{name}", "account.moved_to": "{name} s'ha traslladat a:", "account.mute": "Silencia @{name}", "account.mute_notifications": "Silencia les notificacions de @{name}", @@ -41,10 +41,10 @@ "account.statuses_counter": "{count, plural, one {{counter} Publicació} other {{counter} Publicacions}}", "account.unblock": "Desbloqueja @{name}", "account.unblock_domain": "Desbloqueja el domini {domain}", - "account.unblock_short": "Desbloqueja", - "account.unendorse": "No recomanis en el perfil", - "account.unfollow": "Deixa de seguir", - "account.unmute": "Deixa de silenciar @{name}", + "account.unblock_short": "Desbloquejar", + "account.unendorse": "No recomanar en el perfil", + "account.unfollow": "Deixar de seguir", + "account.unmute": "Deixar de silenciar @{name}", "account.unmute_notifications": "Activar notificacions de @{name}", "account.unmute_short": "Deixa de silenciar", "account_note.placeholder": "Fes clic per afegir una nota", @@ -62,16 +62,16 @@ "autosuggest_hashtag.per_week": "{count} per setmana", "boost_modal.combo": "Pots prémer {combo} per evitar-ho el pròxim cop", "bundle_column_error.body": "S'ha produït un error en carregar aquest component.", - "bundle_column_error.retry": "Torna-ho a provar", + "bundle_column_error.retry": "Tornar-ho a provar", "bundle_column_error.title": "Error de connexió", "bundle_modal_error.close": "Tanca", "bundle_modal_error.message": "S'ha produït un error en carregar aquest component.", - "bundle_modal_error.retry": "Torna-ho a provar", + "bundle_modal_error.retry": "Tornar-ho a provar", "column.blocks": "Usuaris bloquejats", "column.bookmarks": "Marcadors", "column.community": "Línia de temps local", - "column.conversations": "Converses", - "column.directory": "Navega pels perfils", + "column.direct": "Missatges directes", + "column.directory": "Navegar pels perfils", "column.domain_blocks": "Dominis bloquejats", "column.favourites": "Favorits", "column.follow_requests": "Peticions per a seguir-te", @@ -95,16 +95,16 @@ "compose_form.direct_message_warning_learn_more": "Més informació", "compose_form.encryption_warning": "Les publicacions a Mastodon no estant xifrades punt a punt. No comparteixis informació perillosa mitjançant Mastodon.", "compose_form.hashtag_warning": "Aquesta publicació no es mostrarà en cap etiqueta, ja que no està llistada. Només les publicacions públiques es poden cercar per etiqueta.", - "compose_form.lock_disclaimer": "El teu compte no està bloquejat {locked}. Tothom pot seguir-te i veure els teus missatges només per a seguidors.", + "compose_form.lock_disclaimer": "El teu compte no està {locked}. Tothom pot seguir-te i veure les publicacions de només per a seguidors.", "compose_form.lock_disclaimer.lock": "bloquejat", "compose_form.placeholder": "Què et passa pel cap?", - "compose_form.poll.add_option": "Afegeix una opció", + "compose_form.poll.add_option": "Afegir una opció", "compose_form.poll.duration": "Durada de l'enquesta", "compose_form.poll.option_placeholder": "Opció {number}", "compose_form.poll.remove_option": "Elimina aquesta opció", "compose_form.poll.switch_to_multiple": "Canvia l’enquesta per a permetre diverses opcions", "compose_form.poll.switch_to_single": "Canvia l’enquesta per permetre una única opció", - "compose_form.publish": "Publica", + "compose_form.publish": "Publicar", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Desa els canvis", "compose_form.sensitive.hide": "{count, plural, one {Marca contingut com a sensible} other {Marca contingut com a sensible}}", @@ -118,7 +118,7 @@ "confirmations.block.confirm": "Bloqueja", "confirmations.block.message": "Segur que vols bloquejar a {name}?", "confirmations.delete.confirm": "Suprimeix", - "confirmations.delete.message": "Segur que vols suprimir aquesta publicació?", + "confirmations.delete.message": "Segur que vols eliminar la publicació?", "confirmations.delete_list.confirm": "Suprimeix", "confirmations.delete_list.message": "Segur que vols suprimir permanentment aquesta llista?", "confirmations.discard_edit_media.confirm": "Descarta", @@ -161,12 +161,12 @@ "emoji_button.symbols": "Símbols", "emoji_button.travel": "Viatges i llocs", "empty_column.account_suspended": "Compte suspès", - "empty_column.account_timeline": "Aquí no hi ha publicacions!", + "empty_column.account_timeline": "No hi ha publicacions aquí!", "empty_column.account_unavailable": "Perfil no disponible", "empty_column.blocks": "Encara no has bloquejat cap usuari.", "empty_column.bookmarked_statuses": "Encara no has marcat com publicació com a preferida. Quan en marquis una apareixerà aquí.", "empty_column.community": "La línia de temps local és buida. Escriu alguna cosa públicament per posar-ho tot en marxa!", - "empty_column.conversations": "Cada vegada que envies o reps una publicació que és només visible per la gent que hi has mencionat en ella, serà mostrada aquí.", + "empty_column.direct": "Encara no tens missatges directes. Quan n'enviïs o en rebis, es mostraran aquí.", "empty_column.domain_blocks": "Encara no hi ha dominis bloquejats.", "empty_column.explore_statuses": "No hi ha res en tendència ara mateix. Revisa-ho més tard!", "empty_column.favourited_statuses": "Encara no has marcat cap publicació com a preferida. Quan les marquis, apareixeran aquí.", @@ -227,14 +227,14 @@ "intervals.full.minutes": "{number, plural, one {# minut} other {# minuts}}", "keyboard_shortcuts.back": "Anar enrere", "keyboard_shortcuts.blocked": "Obre la llista d'usuaris bloquejats", - "keyboard_shortcuts.boost": "Impulsa publicació", + "keyboard_shortcuts.boost": "Impulsa la publicació", "keyboard_shortcuts.column": "Centra la columna", "keyboard_shortcuts.compose": "Centra l'àrea de composició del text", - "keyboard_shortcuts.conversations": "per a obrir la columna de converses", "keyboard_shortcuts.description": "Descripció", + "keyboard_shortcuts.direct": "per obrir la columna de missatges directes", "keyboard_shortcuts.down": "Mou-lo avall en la llista", - "keyboard_shortcuts.enter": "Obre publicació", - "keyboard_shortcuts.favourite": "Afavorir publicació", + "keyboard_shortcuts.enter": "Obrir publicació", + "keyboard_shortcuts.favourite": "Afavoreix la publicació", "keyboard_shortcuts.favourites": "Obre la llista de preferits", "keyboard_shortcuts.federated": "Obre la línia de temps federada", "keyboard_shortcuts.heading": "Dreceres de teclat", @@ -242,7 +242,7 @@ "keyboard_shortcuts.hotkey": "Tecla d'accés directe", "keyboard_shortcuts.legend": "Mostra aquesta llegenda", "keyboard_shortcuts.local": "Obre la línia de temps local", - "keyboard_shortcuts.mention": "Esmenta l'autor", + "keyboard_shortcuts.mention": "Mencionar l'autor", "keyboard_shortcuts.muted": "Obre la llista d'usuaris silenciats", "keyboard_shortcuts.my_profile": "Obre el teu perfil", "keyboard_shortcuts.notifications": "Obre la columna de notificacions", @@ -256,7 +256,7 @@ "keyboard_shortcuts.start": "Obre la columna \"Primers passos\"", "keyboard_shortcuts.toggle_hidden": "Mostra/oculta el text marcat com a sensible", "keyboard_shortcuts.toggle_sensitivity": "Mostra/amaga contingut multimèdia", - "keyboard_shortcuts.toot": "Inicia una nova publicació", + "keyboard_shortcuts.toot": "Iniciar una publicació nova", "keyboard_shortcuts.unfocus": "Descentra l'àrea de composició de text/cerca", "keyboard_shortcuts.up": "Moure amunt en la llista", "lightbox.close": "Tanca", @@ -289,7 +289,8 @@ "navigation_bar.blocks": "Usuaris bloquejats", "navigation_bar.bookmarks": "Marcadors", "navigation_bar.community_timeline": "Línia de temps local", - "navigation_bar.compose": "Redacta una nova publicació", + "navigation_bar.compose": "Redactar una nova publicació", + "navigation_bar.direct": "Missatges directes", "navigation_bar.discover": "Descobrir", "navigation_bar.domain_blocks": "Dominis bloquejats", "navigation_bar.edit_profile": "Edita el perfil", @@ -301,7 +302,7 @@ "navigation_bar.info": "Sobre aquest servidor", "navigation_bar.keyboard_shortcuts": "Dreceres de teclat", "navigation_bar.lists": "Llistes", - "navigation_bar.logout": "Tanca la sessió", + "navigation_bar.logout": "Tancar sessió", "navigation_bar.mutes": "Usuaris silenciats", "navigation_bar.personal": "Personal", "navigation_bar.pins": "Publicacions fixades", @@ -312,11 +313,11 @@ "notification.favourite": "{name} ha afavorit la teva publicació", "notification.follow": "{name} et segueix", "notification.follow_request": "{name} ha sol·licitat seguir-te", - "notification.mention": "{name} t'ha esmentat", + "notification.mention": "{name} t'ha mencionat", "notification.own_poll": "La teva enquesta ha finalitzat", "notification.poll": "Ha finalitzat una enquesta en què has votat", - "notification.reblog": "{name} ha impulsat el teu estat", - "notification.status": "ha publicat {name}", + "notification.reblog": "{name} ha impulsat la teva publicació", + "notification.status": "{name} acaba de publicar", "notification.update": "{name} ha editat una publicació", "notifications.clear": "Esborra les notificacions", "notifications.clear_confirmation": "Segur que vols esborrar permanentment totes les teves notificacions?", @@ -362,11 +363,11 @@ "poll.vote": "Vota", "poll.voted": "Vas votar per aquesta resposta", "poll.votes": "{votes, plural, one {# vot} other {# vots}}", - "poll_button.add_poll": "Afegeix una enquesta", + "poll_button.add_poll": "Afegir una enquesta", "poll_button.remove_poll": "Elimina l'enquesta", - "privacy.change": "Ajusta la privacitat de la publicació", + "privacy.change": "Canvia la privacitat de la publicació", "privacy.direct.long": "Visible només per als usuaris esmentats", - "privacy.direct.short": "Només la gent que menciono", + "privacy.direct.short": "Només gent mencionada", "privacy.private.long": "Visible només per als seguidors", "privacy.private.short": "Només seguidors", "privacy.public.long": "Visible per tothom", @@ -440,12 +441,12 @@ "search_results.statuses_fts_disabled": "La cerca de publicacions pel seu contingut no està habilitada en aquest servidor Mastodon.", "search_results.total": "{count, number} {count, plural, one {resultat} other {resultats}}", "status.admin_account": "Obre l'interfície de moderació per a @{name}", - "status.admin_status": "Obre aquesta publicació a la interfície de moderació", + "status.admin_status": "Obrir aquesta publicació a la interfície de moderació", "status.block": "Bloqueja @{name}", "status.bookmark": "Afavoreix", "status.cancel_reblog_private": "Desfés l'impuls", "status.cannot_reblog": "Aquesta publicació no es pot impulsar", - "status.copy": "Copia l'enllaç a l'estat", + "status.copy": "Copia l'enllaç a la publicació", "status.delete": "Esborra", "status.detailed_status": "Visualització detallada de la conversa", "status.direct": "Envia missatge directe a @{name}", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 5a64eaebb..2a4106c4b 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -70,7 +70,7 @@ "column.blocks": "بەکارهێنەرە بلۆککراوەکان", "column.bookmarks": "نیشانەکان", "column.community": "هێڵی کاتی ناوخۆیی", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "گەڕان لە پرۆفایلەکان", "column.domain_blocks": "دۆمەینە داخراوەکان", "column.favourites": "دڵخوازترینەکان", @@ -166,7 +166,7 @@ "empty_column.blocks": "تۆ هێشتا هیچ بەکارهێنەرێکت بلۆک نەکردووە.", "empty_column.bookmarked_statuses": "تۆ هێشتا هیچ توتێکی دیاریکراوت نیە کاتێک نیشانەیەک نیشان دەکەیت، لێرە دەرئەکەویت.", "empty_column.community": "هێڵی کاتی ناوخۆیی بەتاڵە. شتێک بە ئاشکرا بنووسە بۆ ئەوەی تۆپەکە بسووڕێت!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "هێشتا هیچ دۆمەینێکی بلۆک کراو نییە.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "تۆ هێشتا هیچ توتێکی دڵخوازت نییە، کاتێک حەزت لە دانەیەکی باشە، لێرە دەرئەکەویت.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "بۆ بەهێزکردن", "keyboard_shortcuts.column": "بۆ ئەوەی تیشک بخاتە سەر توتێک لە یەکێک لە ستوونەکان", "keyboard_shortcuts.compose": "بۆ سەرنجدان بە نووسینی ناوچەی دەق", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "وه‌سف", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "بۆ چوونە خوارەوە لە لیستەکەدا", "keyboard_shortcuts.enter": "بۆ کردنەوەی توت", "keyboard_shortcuts.favourite": "بۆ دڵخواز", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "نیشانکراوەکان", "navigation_bar.community_timeline": "دەمنامەی ناوخۆیی", "navigation_bar.compose": "نووسینی توتی نوێ", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "دۆزینەوە", "navigation_bar.domain_blocks": "دۆمەینە بلۆک کراوەکان", "navigation_bar.edit_profile": "دەستکاری پرۆفایل بکە", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 770bd71bc..a746fe606 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -70,7 +70,7 @@ "column.blocks": "Utilizatori bluccati", "column.bookmarks": "Segnalibri", "column.community": "Linea pubblica lucale", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Percorre i prufili", "column.domain_blocks": "Duminii piattati", "column.favourites": "Favuriti", @@ -166,7 +166,7 @@ "empty_column.blocks": "Per avà ùn avete bluccatu manc'un utilizatore.", "empty_column.bookmarked_statuses": "Ùn avete manc'un segnalibru. Quandu aghjunghjerate unu, sarà mustratu quì.", "empty_column.community": "Ùn c'hè nunda indè a linea lucale. Scrivete puru qualcosa!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Ùn c'hè manc'un duminiu bluccatu avà.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Ùn avete manc'unu statutu favuritu. Quandu aghjunghjerate unu à i vostri favuriti, sarà mustratu quì.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "sparte", "keyboard_shortcuts.column": "fucalizà un statutu indè una colonna", "keyboard_shortcuts.compose": "fucalizà nant'à l'area di ridazzione", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Descrizzione", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "falà indè a lista", "keyboard_shortcuts.enter": "apre u statutu", "keyboard_shortcuts.favourite": "aghjunghje à i favuriti", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Segnalibri", "navigation_bar.community_timeline": "Linea pubblica lucale", "navigation_bar.compose": "Scrive un novu statutu", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Scopre", "navigation_bar.domain_blocks": "Duminii piattati", "navigation_bar.edit_profile": "Mudificà u prufile", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index df1e750b7..6b50244df 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -70,7 +70,7 @@ "column.blocks": "Blokovaní uživatelé", "column.bookmarks": "Záložky", "column.community": "Místní časová osa", - "column.conversations": "Konverzace", + "column.direct": "Přímé zprávy", "column.directory": "Prozkoumat profily", "column.domain_blocks": "Blokované domény", "column.favourites": "Oblíbené", @@ -166,7 +166,7 @@ "empty_column.blocks": "Ještě jste nezablokovali žádného uživatele.", "empty_column.bookmarked_statuses": "Ještě nemáte v záložkách žádné příspěvky. Pokud si do nich nějaký přidáte, zobrazí se zde.", "empty_column.community": "Místní časová osa je prázdná. Napište něco veřejně a rozhýbejte to tu!", - "empty_column.conversations": "Jakmile pošlete nebo obdržíte příspěvek, který je viditelný pouze lidem v něm zmíněným, objeví se tady.", + "empty_column.direct": "Ještě nemáte žádné přímé zprávy. Pokud nějakou pošlete nebo dostanete, zobrazí se zde.", "empty_column.domain_blocks": "Ještě nemáte žádné blokované domény.", "empty_column.explore_statuses": "Momentálně není nic populární. Vraťte se později!", "empty_column.favourited_statuses": "Ještě nemáte žádné oblíbené příspěvky. Pokud si nějaký oblíbíte, zobrazí se zde.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Boostnout příspěvek", "keyboard_shortcuts.column": "Focus na sloupec", "keyboard_shortcuts.compose": "Focus na textové pole nového příspěvku", - "keyboard_shortcuts.conversations": "Otevřít sloupec konverzací", "keyboard_shortcuts.description": "Popis", + "keyboard_shortcuts.direct": "Otevřít sloupec přímých zpráv", "keyboard_shortcuts.down": "Posunout dolů v seznamu", "keyboard_shortcuts.enter": "Otevřít příspěvek", "keyboard_shortcuts.favourite": "Oblíbit příspěvek", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Záložky", "navigation_bar.community_timeline": "Místní časová osa", "navigation_bar.compose": "Vytvořit nový příspěvek", + "navigation_bar.direct": "Přímé zprávy", "navigation_bar.discover": "Objevujte", "navigation_bar.domain_blocks": "Blokované domény", "navigation_bar.edit_profile": "Upravit profil", @@ -366,7 +367,7 @@ "poll_button.remove_poll": "Odstranit anketu", "privacy.change": "Změnit soukromí příspěvku", "privacy.direct.long": "Viditelný pouze pro zmíněné uživatele", - "privacy.direct.short": "Pouze lidé, které zmíním", + "privacy.direct.short": "Jen zmínění lidé", "privacy.private.long": "Viditelný pouze pro sledující", "privacy.private.short": "Pouze sledující", "privacy.public.long": "Viditelný pro všechny", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 7edb1d1cf..7e90d8fe0 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -70,7 +70,7 @@ "column.blocks": "Defnyddwyr a flociwyd", "column.bookmarks": "Tudalnodau", "column.community": "Ffrwd lleol", - "column.conversations": "Sgyrsiau", + "column.direct": "Negeseuon preifat", "column.directory": "Pori proffiliau", "column.domain_blocks": "Parthau cuddiedig", "column.favourites": "Ffefrynnau", @@ -166,10 +166,10 @@ "empty_column.blocks": "Nid ydych wedi blocio unrhyw ddefnyddwyr eto.", "empty_column.bookmarked_statuses": "Nid oes gennych unrhyw dwtiau tudalnodiedig eto. Pan y byddwch yn tudalnodi un, mi fydd yn ymddangos yma.", "empty_column.community": "Mae'r ffrwd lleol yn wag. Ysgrifenwch rhywbeth yn gyhoeddus i gael dechrau arni!", - "empty_column.conversations": "Unwaith y byddwch chi'n anfon neu'n derbyn post sydd ond yn weladwy i'r bobl a grybwyllir ynddo, bydd yn ymddangos yma.", + "empty_column.direct": "Does gennych unrhyw negeseuon preifat eto. Pan byddwch yn anfon neu derbyn un, bydd yn ymddangos yma.", "empty_column.domain_blocks": "Nid oes yna unrhyw barthau cuddiedig eto.", "empty_column.explore_statuses": "Does dim byd yn trendio ar hyn o bryd. Gwiriwch yn ôl yn nes ymlaen!", - "empty_column.favourited_statuses": "Nid oes gennych unrhyw hoff dwtiau eto. Pan y byddwch yn hoffi un, mi fydd yn ymddangos yma.", + "empty_column.favourited_statuses": "Nid oes gennych unrhyw hoff bostiadau eto. Pan y byddwch yn hoffi un, mi fydd yn ymddangos yma.", "empty_column.favourites": "Does neb wedi hoffi'r post hwn eto. Pan bydd rhywun yn ei hoffi, byddent yn ymddangos yma.", "empty_column.follow_recommendations": "Does dim awgrymiadau yma i chi. Gallwch geisio chwilio am bobl yr ydych yn eu hadnabod neu archwilio hashnodau sy'n trendio.", "empty_column.follow_requests": "Nid oes gennych unrhyw geisiadau dilyn eto. Pan dderbyniwch chi un, byddent yn ymddangos yma.", @@ -191,8 +191,8 @@ "explore.suggested_follows": "I chi", "explore.title": "Archwilio", "explore.trending_links": "Newyddion", - "explore.trending_statuses": "Postiau", - "explore.trending_tags": "Hanshnodau", + "explore.trending_statuses": "Postiadau", + "explore.trending_tags": "Hashnodau", "follow_recommendations.done": "Wedi gorffen", "follow_recommendations.heading": "Dilynwch y bobl yr hoffech chi weld eu postiadau! Dyma ambell i awgrymiad.", "follow_recommendations.lead": "Bydd postiadau gan bobl rydych chi'n eu dilyn yn ymddangos mewn trefn amser ar eich ffrwd cartref. Peidiwch â bod ofn gwneud camgymeriadau, gallwch chi ddad-ddilyn pobl yr un mor hawdd unrhyw bryd!", @@ -222,7 +222,7 @@ "home.column_settings.show_replies": "Dangos ymatebion", "home.hide_announcements": "Cuddio cyhoeddiadau", "home.show_announcements": "Dangos cyhoeddiadau", - "intervals.full.days": "{number, plural, one {# ddydd} other {# o ddyddiau}}", + "intervals.full.days": "{number, plural, one {# dydd} two {# ddydd} other {# o ddyddiau}}", "intervals.full.hours": "{number, plural, one {# awr} other {# o oriau}}", "intervals.full.minutes": "{number, plural, one {# funud} other {# o funudau}}", "keyboard_shortcuts.back": "i lywio nôl", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "i fŵstio", "keyboard_shortcuts.column": "Ffocysu colofn", "keyboard_shortcuts.compose": "i ffocysu yr ardal cyfansoddi testun", - "keyboard_shortcuts.conversations": "i agor colofn sgyrsiau", "keyboard_shortcuts.description": "Disgrifiad", + "keyboard_shortcuts.direct": "i agor colofn negeseuon preifat", "keyboard_shortcuts.down": "i symud lawr yn y rhestr", "keyboard_shortcuts.enter": "Agor post", "keyboard_shortcuts.favourite": "i hoffi", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Tudalnodau", "navigation_bar.community_timeline": "Ffrwd leol", "navigation_bar.compose": "Cyfansoddi post newydd", + "navigation_bar.direct": "Negeseuon preifat", "navigation_bar.discover": "Darganfod", "navigation_bar.domain_blocks": "Parthau cuddiedig", "navigation_bar.edit_profile": "Golygu proffil", @@ -366,7 +367,7 @@ "poll_button.remove_poll": "Tynnu pleidlais", "privacy.change": "Addasu preifatrwdd y post", "privacy.direct.long": "Cyhoeddi i'r defnyddwyr sy'n cael eu crybwyll yn unig", - "privacy.direct.short": "Dim ond pobl rwy'n eu crybwyll", + "privacy.direct.short": "Pobl sy wedi'u crybwyll yn unig", "privacy.private.long": "Cyhoeddi i ddilynwyr yn unig", "privacy.private.short": "Dilynwyr yn unig", "privacy.public.long": "Gweladwy i bawb", @@ -376,7 +377,7 @@ "refresh": "Adnewyddu", "regeneration_indicator.label": "Llwytho…", "regeneration_indicator.sublabel": "Mae eich ffrwd cartref yn cael ei baratoi!", - "relative_time.days": "{number}dydd", + "relative_time.days": "{number} dydd", "relative_time.full.days": "{number, plural, one {# dydd} other {# o ddyddiau}} yn ôl", "relative_time.full.hours": "{number, plural, one {# awr} other {# o oriau}} yn ôl", "relative_time.full.just_now": "jyst nawr", @@ -385,7 +386,7 @@ "relative_time.hours": "{number} awr", "relative_time.just_now": "nawr", "relative_time.minutes": "{number} munud", - "relative_time.seconds": "{number}eiliad", + "relative_time.seconds": "{number} eiliad", "relative_time.today": "heddiw", "reply_indicator.cancel": "Canslo", "report.block": "Blocio", @@ -434,7 +435,7 @@ "search_popout.tips.user": "defnyddiwr", "search_results.accounts": "Pobl", "search_results.all": "Popeth", - "search_results.hashtags": "Hanshnodau", + "search_results.hashtags": "Hashnodau", "search_results.nothing_found": "Methu dod o hyd i unrhyw beth ar gyfer y termau chwilio hyn", "search_results.statuses": "Postiadau", "search_results.statuses_fts_disabled": "Nid yw chwilio postiadau yn ôl eu cynnwys wedi'i alluogi ar y gweinydd Mastodon hwn.", @@ -465,11 +466,11 @@ "status.mute_conversation": "Tawelu sgwrs", "status.open": "Ehangu'r post hwn", "status.pin": "Pinio ar y proffil", - "status.pinned": "Pinio post", + "status.pinned": "Post wedi'i binio", "status.read_more": "Darllen mwy", "status.reblog": "Hybu", "status.reblog_private": "Hybu i'r gynulleidfa wreiddiol", - "status.reblogged_by": "Hybio {name}", + "status.reblogged_by": "Hybodd {name}", "status.reblogs.empty": "Does neb wedi hybio'r post yma eto. Pan y bydd rhywun yn gwneud, byddent yn ymddangos yma.", "status.redraft": "Dileu & ailddrafftio", "status.remove_bookmark": "Tynnu'r tudalnod", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index e04a0634c..40ccdcfb0 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -70,7 +70,7 @@ "column.blocks": "Blokerede brugere", "column.bookmarks": "Bogmærker", "column.community": "Lokal tidslinje", - "column.conversations": "Konversationer", + "column.direct": "Direkte beskeder", "column.directory": "Tjek profiler", "column.domain_blocks": "Blokerede domæner", "column.favourites": "Favoritter", @@ -166,7 +166,7 @@ "empty_column.blocks": "Ingen brugere blokeret endnu.", "empty_column.bookmarked_statuses": "Du har ingen bogmærkede indlæg endnu. Når du bogmærker ét, vil det dukke op hér.", "empty_column.community": "Den lokale tidslinje er tom. Skriv noget offentligt for at sætte tingene i gang!", - "empty_column.conversations": "Når der sendes eller modtages indlæg, som kun er synligt for personer nævnt heri, vil de dukke op her.", + "empty_column.direct": "Der er endnu ingen direkte beskeder. Når en sendes eller modtages, dukker den op hér.", "empty_column.domain_blocks": "Ingen blokerede domæner endnu.", "empty_column.explore_statuses": "Ingen nye tendensen pt. Tjek igen senere!", "empty_column.favourited_statuses": "Du har endnu ingen favoritindlæg. Når du favoritmarkerer ét, vil det dukke op hér.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Boost indlæg", "keyboard_shortcuts.column": "Fokusér kolonne", "keyboard_shortcuts.compose": "Fokusér skriveområdet", - "keyboard_shortcuts.conversations": "for at åbne konversationskolonnen", "keyboard_shortcuts.description": "Beskrivelse", + "keyboard_shortcuts.direct": "for at åbne direkte beskeder-kolonnen", "keyboard_shortcuts.down": "Flyt nedad på listen", "keyboard_shortcuts.enter": "Åbn indlæg", "keyboard_shortcuts.favourite": "Favoritmarkér indlæg", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Bogmærker", "navigation_bar.community_timeline": "Lokal tidslinje", "navigation_bar.compose": "Skriv nyt indlæg", + "navigation_bar.direct": "Direkte beskeder", "navigation_bar.discover": "Opdag", "navigation_bar.domain_blocks": "Blokerede domæner", "navigation_bar.edit_profile": "Redigér profil", @@ -366,7 +367,7 @@ "poll_button.remove_poll": "Fjern afstemning", "privacy.change": "Justér indlægsfortrolighed", "privacy.direct.long": "Kun synlig for nævnte brugere", - "privacy.direct.short": "Kun personer, jeg nævner", + "privacy.direct.short": "Kun nævnte personer", "privacy.private.long": "Kun synlig for følgere", "privacy.private.short": "Kun følgere", "privacy.public.long": "Synlig for alle", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 87f2b2017..813d84bce 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -13,10 +13,10 @@ "account.domain_blocked": "Domain versteckt", "account.edit_profile": "Profil bearbeiten", "account.enable_notifications": "Benachrichtige mich wenn @{name} etwas postet", - "account.endorse": "Im Profil anzeigen", + "account.endorse": "Auf Profil hervorheben", "account.follow": "Folgen", "account.followers": "Follower", - "account.followers.empty": "Diesem Profil folgt bislang niemand.", + "account.followers.empty": "Diesem Profil folgt noch niemand.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Follower}}", "account.following": "Folgt", "account.following_counter": "{count, plural, one {{counter} Folgt} other {{counter} Folgt}}", @@ -70,7 +70,7 @@ "column.blocks": "Blockierte Profile", "column.bookmarks": "Lesezeichen", "column.community": "Lokale Zeitleiste", - "column.conversations": "Konversationen", + "column.direct": "Mensaxes directas", "column.directory": "Profile durchsuchen", "column.domain_blocks": "Blockierte Domains", "column.favourites": "Favoriten", @@ -166,7 +166,7 @@ "empty_column.blocks": "Du hast keine Profile blockiert.", "empty_column.bookmarked_statuses": "Du hast bis jetzt keine Beiträge als Lesezeichen gespeichert. Wenn du einen Beitrag als Lesezeichen speicherst wird er hier erscheinen.", "empty_column.community": "Die lokale Zeitleiste ist leer. Schreibe einen öffentlichen Beitrag, um den Ball ins Rollen zu bringen!", - "empty_column.conversations": "Sobald du einen Beitrag sendest oder empfängst, der nur für die in ihm erwähnten Personen sichtbar ist, wird er hier angezeigt.", + "empty_column.direct": "Du hast noch keine Direktnachrichten. Sobald du eine sendest oder empfängst, wird sie hier zu sehen sein.", "empty_column.domain_blocks": "Es sind noch keine Domains versteckt.", "empty_column.explore_statuses": "Momentan ist nichts im Trend. Schau später wieder!", "empty_column.favourited_statuses": "Du hast noch keine favorisierten Tröts. Wenn du einen favorisierst, wird er hier erscheinen.", @@ -174,7 +174,7 @@ "empty_column.follow_recommendations": "Es sieht so aus, als könnten keine Vorschläge für dich generiert werden. Du kannst versuchen nach Leuten zu suchen, die du vielleicht kennst oder du kannst angesagte Hashtags erkunden.", "empty_column.follow_requests": "Du hast noch keine Folge-Anfragen. Sobald du eine erhältst, wird sie hier angezeigt.", "empty_column.hashtag": "Unter diesem Hashtag gibt es noch nichts.", - "empty_column.home": "Deine Startseite ist leer! Besuche {public} oder nutze die Suche, um loszulegen und andere Leute zu finden.", + "empty_column.home": "Deine Startseite ist leer! Folge mehr Leuten, um sie zu füllen. {suggestions}", "empty_column.home.suggestions": "Ein paar Vorschläge ansehen", "empty_column.list": "Diese Liste ist derzeit leer. Wenn Konten auf dieser Liste neue Beiträge veröffentlichen werden sie hier erscheinen.", "empty_column.lists": "Du hast noch keine Listen. Wenn du eine anlegst, wird sie hier angezeigt.", @@ -198,7 +198,7 @@ "follow_recommendations.lead": "Beiträge von Personen, denen du folgst, werden in chronologischer Reihenfolge auf deiner Startseite angezeigt. Hab keine Angst, Fehler zu machen, du kannst den Leuten jederzeit wieder entfolgen!", "follow_request.authorize": "Erlauben", "follow_request.reject": "Ablehnen", - "follow_requests.unlocked_explanation": "Auch wenn dein Konto nicht gesperrt ist, haben die Mitarbeiter von {domain} gedacht, dass es besser wäre den Follow manuell zu bestätigen.", + "follow_requests.unlocked_explanation": "Auch wenn dein Konto nicht gesperrt ist, haben die Moderator_innen von {domain} gedacht, dass du diesen Follower lieber manuell bestätigen solltest.", "generic.saved": "Gespeichert", "getting_started.developers": "Entwickler", "getting_started.directory": "Profilverzeichnis", @@ -225,13 +225,13 @@ "intervals.full.days": "{number, plural, one {# Tag} other {# Tage}}", "intervals.full.hours": "{number, plural, one {# Stunde} other {# Stunden}}", "intervals.full.minutes": "{number, plural, one {# Minute} other {# Minuten}}", - "keyboard_shortcuts.back": "zurück navigieren", + "keyboard_shortcuts.back": "Zurück navigieren", "keyboard_shortcuts.blocked": "Liste blockierter Profile öffnen", "keyboard_shortcuts.boost": "teilen", "keyboard_shortcuts.column": "einen Beitrag in einer der Spalten fokussieren", "keyboard_shortcuts.compose": "fokussiere das Eingabefeld", - "keyboard_shortcuts.conversations": "um die Konversationsspalte zu öffnen", "keyboard_shortcuts.description": "Beschreibung", + "keyboard_shortcuts.direct": "um Direktnachrichtenspalte zu öffnen", "keyboard_shortcuts.down": "sich in der Liste hinunter bewegen", "keyboard_shortcuts.enter": "Beitrag öffnen", "keyboard_shortcuts.favourite": "um zu favorisieren", @@ -279,7 +279,7 @@ "lists.subheading": "Deine Listen", "load_pending": "{count, plural, one {# neuer Beitrag} other {# neue Beiträge}}", "loading_indicator.label": "Wird geladen …", - "media_gallery.toggle_visible": "Sichtbarkeit umschalten", + "media_gallery.toggle_visible": "{number, plural, one {Bild verbergen} other {Bilder verbergen}}", "missing_indicator.label": "Nicht gefunden", "missing_indicator.sublabel": "Die Ressource konnte nicht gefunden werden", "mute_modal.duration": "Dauer", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Lesezeichen", "navigation_bar.community_timeline": "Lokale Zeitleiste", "navigation_bar.compose": "Neuen Beitrag verfassen", + "navigation_bar.direct": "Direktnachrichten", "navigation_bar.discover": "Entdecken", "navigation_bar.domain_blocks": "Versteckte Domains", "navigation_bar.edit_profile": "Profil bearbeiten", @@ -366,7 +367,7 @@ "poll_button.remove_poll": "Umfrage entfernen", "privacy.change": "Sichtbarkeit des Beitrags anpassen", "privacy.direct.long": "Wird an erwähnte Profile gesendet", - "privacy.direct.short": "Nur Leute, die ich erwähne", + "privacy.direct.short": "Nur erwähnte Personen", "privacy.private.long": "Nur für Folgende sichtbar", "privacy.private.short": "Nur Follower", "privacy.public.long": "Für alle sichtbar", @@ -392,23 +393,23 @@ "report.block_explanation": "Du wirst die Beiträge von diesem Konto nicht sehen. Das Konto wird nicht in der Lage sein, deine Beiträge zu sehen oder dir zu folgen. Die Person hinter dem Konto wird wissen, dass du das Konto blockiert hast.", "report.categories.other": "Andere", "report.categories.spam": "Spam", - "report.categories.violation": "Inhalt verletzt ein oder mehrere Server-Regeln", - "report.category.subtitle": "Wähle die beste Zugehörigkeit", - "report.category.title": "Sag uns, was mit diesem {type} vor sich geht", + "report.categories.violation": "Der Inhalt verletzt eine oder mehrere Server-Regeln", + "report.category.subtitle": "Wähle die passendste Kategorie", + "report.category.title": "Sag uns, was das Problem mit diesem {type} ist", "report.category.title_account": "Profil", "report.category.title_status": "Beitrag", "report.close": "Fertig", "report.comment.title": "Gibt es etwas anderes, was wir wissen sollten?", "report.forward": "An {target} weiterleiten", - "report.forward_hint": "Dieses Konto ist von einem anderen Server. Soll eine anonymisierte Kopie des Berichts auch dorthin geschickt werden?", + "report.forward_hint": "Dieses Konto gehört zu einem anderen Server. Soll eine anonymisierte Kopie der Meldung auch dorthin geschickt werden?", "report.mute": "Stummschalten", "report.mute_explanation": "Du wirst die Beiträge vom Konto nicht mehr sehen. Das Konto kann dir immernoch folgen und die Person hinter dem Konto wird deine Beiträge sehen können und nicht wissen, dass du sie stumm geschaltet hast.", "report.next": "Weiter", "report.placeholder": "Zusätzliche Kommentare", "report.reasons.dislike": "Das gefällt mir nicht", - "report.reasons.dislike_description": "Das ist nicht etwas, was ihr nicht sehen wollt", + "report.reasons.dislike_description": "Es ist etwas, das du nicht sehen willst", "report.reasons.other": "Da ist was anderes", - "report.reasons.other_description": "Das Problem passt nicht in eine der Kategorien", + "report.reasons.other_description": "Das Problem passt nicht in die Kategorien", "report.reasons.spam": "Das ist Spam", "report.reasons.spam_description": "Bösartige Links, gefälschtes Engagement oder wiederholte Antworten", "report.reasons.violation": "Es verstößt gegen Serverregeln", @@ -419,10 +420,10 @@ "report.statuses.title": "Gibt es Beiträge, die diesen Bericht unterstützen?", "report.submit": "Absenden", "report.target": "{target} melden", - "report.thanks.take_action": "Hier sind deine Optionen, die es dir erlauben zu kontrollieren, was du auf Mastodon sehen möchtest:", + "report.thanks.take_action": "Das sind deine Möglichkeiten, zu bestimmen, was du auf Mastodon sehen möchtest:", "report.thanks.take_action_actionable": "Während wir dies überprüfen, kannst du gegen @{name} vorgehen:", "report.thanks.title": "Möchtest du das nicht sehen?", - "report.thanks.title_actionable": "Vielen Dank für die Berichterstattung, wir werden uns damit befassen.", + "report.thanks.title_actionable": "Vielen Dank für die Meldung, wir werden uns das ansehen.", "report.unfollow": "@{name} entfolgen", "report.unfollow_explanation": "Du folgst diesem Konto. Um die Beiträge nicht mehr auf deiner Startseite zu sehen, entfolge dem Konto.", "search.placeholder": "Suche", diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 5a6af8291..47cd09ba9 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -70,7 +70,7 @@ "column.blocks": "Αποκλεισμένοι χρήστες", "column.bookmarks": "Σελιδοδείκτες", "column.community": "Τοπική ροή", - "column.conversations": "Συνομιλίες", + "column.direct": "Προσωπικά μηνύματα", "column.directory": "Δες προφίλ", "column.domain_blocks": "Κρυμμένοι τομείς", "column.favourites": "Αγαπημένα", @@ -166,7 +166,7 @@ "empty_column.blocks": "Δεν έχεις αποκλείσει κανέναν χρήστη ακόμα.", "empty_column.bookmarked_statuses": "Δεν έχεις κανένα αποθηκευμένο τουτ ακόμα. Μόλις αποθηκεύσεις κάποιο, θα εμφανιστεί εδώ.", "empty_column.community": "Η τοπική ροή είναι κενή. Γράψε κάτι δημόσιο παραμύθι ν' αρχινίσει!", - "empty_column.conversations": "Μόλις στείλετε ή λάβετε μια δημοσίευση που είναι ορατή μόνο σε άτομα που αναφέρονται σε αυτή, θα εμφανιστεί εδώ.", + "empty_column.direct": "Δεν έχεις προσωπικά μηνύματα ακόμα. Όταν στείλεις ή λάβεις κανένα, θα εμφανιστεί εδώ.", "empty_column.domain_blocks": "Δεν υπάρχουν αποκλεισμένοι τομείς ακόμα.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Δεν έχεις κανένα αγαπημένο τουτ ακόμα. Μόλις αγαπήσεις κάποιο, θα εμφανιστεί εδώ.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "προώθηση", "keyboard_shortcuts.column": "εμφάνιση της κατάστασης σε μια από τις στήλες", "keyboard_shortcuts.compose": "εστίαση στην περιοχή συγγραφής", - "keyboard_shortcuts.conversations": "για να ανοίξετε στήλη συνομιλιών", "keyboard_shortcuts.description": "Περιγραφή", + "keyboard_shortcuts.direct": "άνοιγμα στήλης προσωπικών μηνυμάτων", "keyboard_shortcuts.down": "κίνηση προς τα κάτω στη λίστα", "keyboard_shortcuts.enter": "εμφάνιση κατάστασης", "keyboard_shortcuts.favourite": "σημείωση ως αγαπημένο", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Σελιδοδείκτες", "navigation_bar.community_timeline": "Τοπική ροή", "navigation_bar.compose": "Γράψε νέο τουτ", + "navigation_bar.direct": "Προσωπικά μηνύματα", "navigation_bar.discover": "Ανακάλυψη", "navigation_bar.domain_blocks": "Κρυμμένοι τομείς", "navigation_bar.edit_profile": "Επεξεργασία προφίλ", @@ -366,7 +367,7 @@ "poll_button.remove_poll": "Αφαίρεση δημοσκόπησης", "privacy.change": "Προσαρμογή ιδιωτικότητας δημοσίευσης", "privacy.direct.long": "Δημοσίευση μόνο σε όσους και όσες αναφέρονται", - "privacy.direct.short": "Μόνο άτομα που αναφέρω", + "privacy.direct.short": "Αναφερόμενα άτομα μόνο", "privacy.private.long": "Δημοσίευση μόνο στους ακόλουθους", "privacy.private.short": "Μόνο ακόλουθοι", "privacy.public.long": "Ορατό σε όλους", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json new file mode 100644 index 000000000..cf698618e --- /dev/null +++ b/app/javascript/mastodon/locales/en-GB.json @@ -0,0 +1,544 @@ +{ + "account.account_note_header": "Note", + "account.add_or_remove_from_list": "Add or Remove from lists", + "account.badges.bot": "Bot", + "account.badges.group": "Group", + "account.block": "Block @{name}", + "account.block_domain": "Block domain {domain}", + "account.blocked": "Blocked", + "account.browse_more_on_origin_server": "Browse more on the original profile", + "account.cancel_follow_request": "Cancel follow request", + "account.direct": "Direct message @{name}", + "account.disable_notifications": "Stop notifying me when @{name} posts", + "account.domain_blocked": "Domain blocked", + "account.edit_profile": "Edit profile", + "account.enable_notifications": "Notify me when @{name} posts", + "account.endorse": "Feature on profile", + "account.follow": "Follow", + "account.followers": "Followers", + "account.followers.empty": "No one follows this user yet.", + "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", + "account.following": "Following", + "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", + "account.follows.empty": "This user doesn't follow anyone yet.", + "account.follows_you": "Follows you", + "account.hide_reblogs": "Hide boosts from @{name}", + "account.joined": "Joined {date}", + "account.link_verified_on": "Ownership of this link was checked on {date}", + "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", + "account.media": "Media", + "account.mention": "Mention @{name}", + "account.moved_to": "{name} has moved to:", + "account.mute": "Mute @{name}", + "account.mute_notifications": "Mute notifications from @{name}", + "account.muted": "Muted", + "account.posts": "Posts", + "account.posts_with_replies": "Posts and replies", + "account.report": "Report @{name}", + "account.requested": "Awaiting approval. Click to cancel follow request", + "account.share": "Share @{name}'s profile", + "account.show_reblogs": "Show boosts from @{name}", + "account.statuses_counter": "{count, plural, one {{counter} Post} other {{counter} Posts}}", + "account.unblock": "Unblock @{name}", + "account.unblock_domain": "Unblock domain {domain}", + "account.unblock_short": "Unblock", + "account.unendorse": "Don't feature on profile", + "account.unfollow": "Unfollow", + "account.unmute": "Unmute @{name}", + "account.unmute_notifications": "Unmute notifications from @{name}", + "account.unmute_short": "Unmute", + "account_note.placeholder": "Click to add a note", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Average", + "admin.dashboard.retention.cohort": "Sign-up month", + "admin.dashboard.retention.cohort_size": "New users", + "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.", + "alert.rate_limited.title": "Rate limited", + "alert.unexpected.message": "An unexpected error occurred.", + "alert.unexpected.title": "Oops!", + "announcement.announcement": "Announcement", + "attachments_list.unprocessed": "(unprocessed)", + "autosuggest_hashtag.per_week": "{count} per week", + "boost_modal.combo": "You can press {combo} to skip this next time", + "bundle_column_error.body": "Something went wrong while loading this component.", + "bundle_column_error.retry": "Try again", + "bundle_column_error.title": "Network error", + "bundle_modal_error.close": "Close", + "bundle_modal_error.message": "Something went wrong while loading this component.", + "bundle_modal_error.retry": "Try again", + "column.blocks": "Blocked users", + "column.bookmarks": "Bookmarks", + "column.community": "Local timeline", + "column.direct": "Direct messages", + "column.directory": "Browse profiles", + "column.domain_blocks": "Blocked domains", + "column.favourites": "Favourites", + "column.follow_requests": "Follow requests", + "column.home": "Home", + "column.lists": "Lists", + "column.mutes": "Muted users", + "column.notifications": "Notifications", + "column.pins": "Pinned post", + "column.public": "Federated timeline", + "column_back_button.label": "Back", + "column_header.hide_settings": "Hide settings", + "column_header.moveLeft_settings": "Move column to the left", + "column_header.moveRight_settings": "Move column to the right", + "column_header.pin": "Pin", + "column_header.show_settings": "Show settings", + "column_header.unpin": "Unpin", + "column_subheading.settings": "Settings", + "community.column_settings.local_only": "Local only", + "community.column_settings.media_only": "Media only", + "community.column_settings.remote_only": "Remote only", + "compose_form.direct_message_warning_learn_more": "Learn more", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "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": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", + "compose_form.lock_disclaimer.lock": "locked", + "compose_form.placeholder": "What is on your mind?", + "compose_form.poll.add_option": "Add a choice", + "compose_form.poll.duration": "Poll duration", + "compose_form.poll.option_placeholder": "Choice {number}", + "compose_form.poll.remove_option": "Remove this choice", + "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", + "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", + "compose_form.publish": "Toot", + "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", + "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", + "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", + "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", + "compose_form.spoiler.marked": "Text is hidden behind warning", + "compose_form.spoiler.unmarked": "Text is not hidden", + "compose_form.spoiler_placeholder": "Write your warning here", + "confirmation_modal.cancel": "Cancel", + "confirmations.block.block_and_report": "Block & Report", + "confirmations.block.confirm": "Block", + "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.delete.confirm": "Delete", + "confirmations.delete.message": "Are you sure you want to delete this status?", + "confirmations.delete_list.confirm": "Delete", + "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", + "confirmations.discard_edit_media.confirm": "Discard", + "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.domain_block.confirm": "Hide entire domain", + "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", + "confirmations.logout.confirm": "Log out", + "confirmations.logout.message": "Are you sure you want to log out?", + "confirmations.mute.confirm": "Mute", + "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.", + "confirmations.mute.message": "Are you sure you want to mute {name}?", + "confirmations.redraft.confirm": "Delete & redraft", + "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.", + "confirmations.reply.confirm": "Reply", + "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", + "confirmations.unfollow.confirm": "Unfollow", + "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", + "conversation.delete": "Delete conversation", + "conversation.mark_as_read": "Mark as read", + "conversation.open": "View conversation", + "conversation.with": "With {names}", + "directory.federated": "From known fediverse", + "directory.local": "From {domain} only", + "directory.new_arrivals": "New arrivals", + "directory.recently_active": "Recently active", + "embed.instructions": "Embed this status on your website by copying the code below.", + "embed.preview": "Here is what it will look like:", + "emoji_button.activity": "Activity", + "emoji_button.custom": "Custom", + "emoji_button.flags": "Flags", + "emoji_button.food": "Food & Drink", + "emoji_button.label": "Insert emoji", + "emoji_button.nature": "Nature", + "emoji_button.not_found": "No matching emojis found", + "emoji_button.objects": "Objects", + "emoji_button.people": "People", + "emoji_button.recent": "Frequently used", + "emoji_button.search": "Search...", + "emoji_button.search_results": "Search results", + "emoji_button.symbols": "Symbols", + "emoji_button.travel": "Travel & Places", + "empty_column.account_suspended": "Account suspended", + "empty_column.account_timeline": "No posts found", + "empty_column.account_unavailable": "Profile unavailable", + "empty_column.blocks": "You haven't blocked any users yet.", + "empty_column.bookmarked_statuses": "You don't have any bookmarked posts yet. When you bookmark one, it will show up here.", + "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.domain_blocks": "There are no blocked domains yet.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.favourited_statuses": "You don't have any favourite posts yet. When you favourite one, it will show up here.", + "empty_column.favourites": "No one has favourited this post yet. When someone does, they will show up here.", + "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", + "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.", + "empty_column.hashtag": "There is nothing in this hashtag yet.", + "empty_column.home": "Your home timeline is empty! Follow more people to fill it up. {suggestions}", + "empty_column.home.suggestions": "See some suggestions", + "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.", + "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.", + "empty_column.mutes": "You haven't muted any users yet.", + "empty_column.notifications": "You don't have any notifications yet. When other people interact with you, you will see it here.", + "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up", + "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.", + "error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.", + "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", + "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", + "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", + "errors.unexpected_crash.report_issue": "Report issue", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", + "follow_recommendations.done": "Done", + "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", + "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", + "follow_request.authorize": "Authorize", + "follow_request.reject": "Reject", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "generic.saved": "Saved", + "getting_started.developers": "Developers", + "getting_started.directory": "Profile directory", + "getting_started.documentation": "Documentation", + "getting_started.heading": "Getting started", + "getting_started.invite": "Invite people", + "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.security": "Security", + "getting_started.terms": "Terms of service", + "hashtag.column_header.tag_mode.all": "and {additional}", + "hashtag.column_header.tag_mode.any": "or {additional}", + "hashtag.column_header.tag_mode.none": "without {additional}", + "hashtag.column_settings.select.no_options_message": "No suggestions found", + "hashtag.column_settings.select.placeholder": "Enter hashtags…", + "hashtag.column_settings.tag_mode.all": "All of these", + "hashtag.column_settings.tag_mode.any": "Any of these", + "hashtag.column_settings.tag_mode.none": "None of these", + "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "home.column_settings.basic": "Basic", + "home.column_settings.show_reblogs": "Show boosts", + "home.column_settings.show_replies": "Show replies", + "home.hide_announcements": "Hide announcements", + "home.show_announcements": "Show announcements", + "intervals.full.days": "{number, plural, one {# day} other {# days}}", + "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", + "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", + "keyboard_shortcuts.back": "to navigate back", + "keyboard_shortcuts.blocked": "to open blocked users list", + "keyboard_shortcuts.boost": "to boost", + "keyboard_shortcuts.column": "to focus a status in one of the columns", + "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.description": "Description", + "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.down": "to move down in the list", + "keyboard_shortcuts.enter": "to open status", + "keyboard_shortcuts.favourite": "to favourite", + "keyboard_shortcuts.favourites": "to open favourites list", + "keyboard_shortcuts.federated": "to open federated timeline", + "keyboard_shortcuts.heading": "Keyboard Shortcuts", + "keyboard_shortcuts.home": "to open home timeline", + "keyboard_shortcuts.hotkey": "Hotkey", + "keyboard_shortcuts.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.open_media": "to open media", + "keyboard_shortcuts.pinned": "to open pinned posts list", + "keyboard_shortcuts.profile": "to open author's profile", + "keyboard_shortcuts.reply": "to 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 post", + "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search", + "keyboard_shortcuts.up": "to move up in the list", + "lightbox.close": "Close", + "lightbox.compress": "Compress image view box", + "lightbox.expand": "Expand image view box", + "lightbox.next": "Next", + "lightbox.previous": "Previous", + "lists.account.add": "Add to list", + "lists.account.remove": "Remove from list", + "lists.delete": "Delete list", + "lists.edit": "Edit list", + "lists.edit.submit": "Change title", + "lists.new.create": "Add list", + "lists.new.title_placeholder": "New list title", + "lists.replies_policy.followed": "Any followed user", + "lists.replies_policy.list": "Members of the list", + "lists.replies_policy.none": "No one", + "lists.replies_policy.title": "Show replies to:", + "lists.search": "Search among people you follow", + "lists.subheading": "Your lists", + "load_pending": "{count, plural, one {# new item} other {# new items}}", + "loading_indicator.label": "Loading...", + "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", + "missing_indicator.label": "Not found", + "missing_indicator.sublabel": "This resource could not be found", + "mute_modal.duration": "Duration", + "mute_modal.hide_notifications": "Hide notifications from this user?", + "mute_modal.indefinite": "Indefinite", + "navigation_bar.apps": "Mobile apps", + "navigation_bar.blocks": "Blocked users", + "navigation_bar.bookmarks": "Bookmarks", + "navigation_bar.community_timeline": "Local timeline", + "navigation_bar.compose": "Compose new post", + "navigation_bar.direct": "Direct messages", + "navigation_bar.discover": "Discover", + "navigation_bar.domain_blocks": "Hidden domains", + "navigation_bar.edit_profile": "Edit profile", + "navigation_bar.explore": "Explore", + "navigation_bar.favourites": "Favourites", + "navigation_bar.filters": "Muted words", + "navigation_bar.follow_requests": "Follow requests", + "navigation_bar.follows_and_followers": "Follows and followers", + "navigation_bar.info": "About this server", + "navigation_bar.keyboard_shortcuts": "Hotkeys", + "navigation_bar.lists": "Lists", + "navigation_bar.logout": "Logout", + "navigation_bar.mutes": "Muted users", + "navigation_bar.personal": "Personal", + "navigation_bar.pins": "Pinned posts", + "navigation_bar.preferences": "Preferences", + "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.security": "Security", + "notification.admin.sign_up": "{name} signed up", + "notification.favourite": "{name} favourited your status", + "notification.follow": "{name} followed you", + "notification.follow_request": "{name} has requested to follow you", + "notification.mention": "{name} mentioned you", + "notification.own_poll": "Your poll has ended", + "notification.poll": "A poll you have voted in has ended", + "notification.reblog": "{name} boosted your status", + "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", + "notifications.clear": "Clear notifications", + "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.alert": "Desktop notifications", + "notifications.column_settings.favourite": "Favourites:", + "notifications.column_settings.filter_bar.advanced": "Display all categories", + "notifications.column_settings.filter_bar.category": "Quick filter bar", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", + "notifications.column_settings.follow": "New followers:", + "notifications.column_settings.follow_request": "New follow requests:", + "notifications.column_settings.mention": "Mentions:", + "notifications.column_settings.poll": "Poll results:", + "notifications.column_settings.push": "Push notifications", + "notifications.column_settings.reblog": "Boosts:", + "notifications.column_settings.show": "Show in column", + "notifications.column_settings.sound": "Play sound", + "notifications.column_settings.status": "New posts:", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", + "notifications.filter.all": "All", + "notifications.filter.boosts": "Boosts", + "notifications.filter.favourites": "Favourites", + "notifications.filter.follows": "Follows", + "notifications.filter.mentions": "Mentions", + "notifications.filter.polls": "Poll results", + "notifications.filter.statuses": "Updates from people you follow", + "notifications.grant_permission": "Grant permission.", + "notifications.group": "{count} notifications", + "notifications.mark_as_read": "Mark every notification as read", + "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", + "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", + "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.", + "notifications_permission_banner.enable": "Enable desktop notifications", + "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", + "notifications_permission_banner.title": "Never miss a thing", + "picture_in_picture.restore": "Put it back", + "poll.closed": "Closed", + "poll.refresh": "Refresh", + "poll.total_people": "{count, plural, one {# person} other {# people}}", + "poll.total_votes": "{count, plural, one {# vote} other {# votes}}", + "poll.vote": "Vote", + "poll.voted": "You voted for this answer", + "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll_button.add_poll": "Add a poll", + "poll_button.remove_poll": "Remove poll", + "privacy.change": "Adjust status privacy", + "privacy.direct.long": "Visible for mentioned users only", + "privacy.direct.short": "Direct", + "privacy.private.long": "Visible for followers only", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", + "privacy.public.short": "Public", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", + "privacy.unlisted.short": "Unlisted", + "refresh": "Refresh", + "regeneration_indicator.label": "Loading…", + "regeneration_indicator.sublabel": "Your home feed is being prepared!", + "relative_time.days": "{number}d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.hours": "{number}h", + "relative_time.just_now": "now", + "relative_time.minutes": "{number}m", + "relative_time.seconds": "{number}s", + "relative_time.today": "today", + "reply_indicator.cancel": "Cancel", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", + "report.forward": "Forward to {target}", + "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", + "report.placeholder": "Type or paste additional comments", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", + "report.submit": "Submit report", + "report.target": "Report {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "search.placeholder": "Search", + "search_popout.search_format": "Advanced search format", + "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", + "search_popout.tips.hashtag": "hashtag", + "search_popout.tips.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "search_results.accounts": "People", + "search_results.all": "All", + "search_results.hashtags": "Hashtags", + "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.statuses": "Posts", + "search_results.statuses_fts_disabled": "Searching posts by their content is not enabled on this Mastodon server.", + "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", + "status.block": "Block @{name}", + "status.bookmark": "Bookmark", + "status.cancel_reblog_private": "Unboost", + "status.cannot_reblog": "This post cannot be boosted", + "status.copy": "Copy link to status", + "status.delete": "Delete", + "status.detailed_status": "Detailed conversation view", + "status.direct": "Direct message @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.embed": "Embed", + "status.favourite": "Favourite", + "status.filtered": "Filtered", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", + "status.load_more": "Load more", + "status.media_hidden": "Media hidden", + "status.mention": "Mention @{name}", + "status.more": "More", + "status.mute": "Mute @{name}", + "status.mute_conversation": "Mute conversation", + "status.open": "Expand this status", + "status.pin": "Pin on profile", + "status.pinned": "Pinned post", + "status.read_more": "Read more", + "status.reblog": "Boost", + "status.reblog_private": "Boost with original visibility", + "status.reblogged_by": "{name} boosted", + "status.reblogs.empty": "No one has boosted this post yet. When someone does, they will show up here.", + "status.redraft": "Delete & re-draft", + "status.remove_bookmark": "Remove bookmark", + "status.reply": "Reply", + "status.replyAll": "Reply to thread", + "status.report": "Report @{name}", + "status.sensitive_warning": "Sensitive content", + "status.share": "Share", + "status.show_less": "Show less", + "status.show_less_all": "Show less for all", + "status.show_more": "Show more", + "status.show_more_all": "Show more for all", + "status.show_thread": "Show thread", + "status.uncached_media_warning": "Not available", + "status.unmute_conversation": "Unmute conversation", + "status.unpin": "Unpin from profile", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", + "tabs_bar.federated_timeline": "Federated", + "tabs_bar.home": "Home", + "tabs_bar.local_timeline": "Local", + "tabs_bar.notifications": "Notifications", + "tabs_bar.search": "Search", + "time_remaining.days": "{number, plural, one {# day} other {# days}} left", + "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", + "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", + "time_remaining.moments": "Moments remaining", + "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left", + "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.", + "timeline_hint.resources.followers": "Followers", + "timeline_hint.resources.follows": "Follows", + "timeline_hint.resources.statuses": "Older posts", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.trending_now": "Trending now", + "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", + "units.short.billion": "{count}B", + "units.short.million": "{count}M", + "units.short.thousand": "{count}K", + "upload_area.title": "Drag & drop to upload", + "upload_button.label": "Add images, a video or an audio file", + "upload_error.limit": "File upload limit exceeded.", + "upload_error.poll": "File upload not allowed with polls.", + "upload_form.audio_description": "Describe for people with hearing loss", + "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", + "upload_form.edit": "Edit", + "upload_form.thumbnail": "Change thumbnail", + "upload_form.undo": "Delete", + "upload_form.video_description": "Describe for people with hearing loss or visual impairment", + "upload_modal.analyzing_picture": "Analyzing picture…", + "upload_modal.apply": "Apply", + "upload_modal.applying": "Applying…", + "upload_modal.choose_image": "Choose image", + "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog", + "upload_modal.detect_text": "Detect text from picture", + "upload_modal.edit_media": "Edit media", + "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", + "upload_modal.preparing_ocr": "Preparing OCR…", + "upload_modal.preview_label": "Preview ({ratio})", + "upload_progress.label": "Uploading…", + "video.close": "Close video", + "video.download": "Download file", + "video.exit_fullscreen": "Exit full screen", + "video.expand": "Expand video", + "video.fullscreen": "Full screen", + "video.hide": "Hide video", + "video.mute": "Mute sound", + "video.pause": "Pause", + "video.play": "Play", + "video.unmute": "Unmute sound" +} diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 315c416db..a9b1890df 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -70,7 +70,7 @@ "column.blocks": "Blokitaj uzantoj", "column.bookmarks": "Legosignoj", "column.community": "Loka templinio", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Trarigardi profilojn", "column.domain_blocks": "Blokitaj domajnoj", "column.favourites": "Stelumoj", @@ -166,7 +166,7 @@ "empty_column.blocks": "Vi ankoraŭ ne blokis uzanton.", "empty_column.bookmarked_statuses": "Vi ankoraŭ ne aldonis mesaĝon al viaj legosignoj. Kiam vi aldonos iun, tiu aperos ĉi tie.", "empty_column.community": "La loka templinio estas malplena. Skribu ion por plenigi ĝin!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Ankoraŭ neniu domajno estas blokita.", "empty_column.explore_statuses": "Nenio tendencas nun. Rekontrolu poste!", "empty_column.favourited_statuses": "Vi ankoraŭ ne stelumis mesaĝon. Kiam vi stelumos iun, tiu aperos ĉi tie.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "diskonigi", "keyboard_shortcuts.column": "fokusi mesaĝon en unu el la kolumnoj", "keyboard_shortcuts.compose": "enfokusigi la tekstujon", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Priskribo", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "iri suben en la listo", "keyboard_shortcuts.enter": "malfermi mesaĝon", "keyboard_shortcuts.favourite": "stelumi", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Legosignoj", "navigation_bar.community_timeline": "Loka templinio", "navigation_bar.compose": "Skribi novan mesaĝon", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Esplori", "navigation_bar.domain_blocks": "Blokitaj domajnoj", "navigation_bar.edit_profile": "Redakti profilon", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 1eac00cff..873e1cb07 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -70,7 +70,7 @@ "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", "column.community": "Línea temporal local", - "column.conversations": "Conversaciones", + "column.direct": "Mensajes directos", "column.directory": "Explorar perfiles", "column.domain_blocks": "Dominios bloqueados", "column.favourites": "Favoritos", @@ -166,7 +166,7 @@ "empty_column.blocks": "Todavía no bloqueaste a ningún usuario.", "empty_column.bookmarked_statuses": "Todavía no tenés mensajes guardados en \"Marcadores\". Cuando guardés uno en \"Marcadores\", se mostrará acá.", "empty_column.community": "La línea temporal local está vacía. ¡Escribí algo en modo público para que se empiece a correr la bola!", - "empty_column.conversations": "Una vez que enviés o recibás un mensaje que sólo sea visible para la gente mencionada en él, aparecerá aquí.", + "empty_column.direct": "Todavía no tenés ningún mensaje directo. Cuando enviés o recibás uno, se mostrará acá.", "empty_column.domain_blocks": "Todavía no hay dominios bloqueados.", "empty_column.explore_statuses": "No hay nada en tendencia ahora mismo. ¡Volvé a revisar más tarde!", "empty_column.favourited_statuses": "Todavía no tenés mensajes favoritos. Cuando marqués uno como favorito, se mostrará acá.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Adherir al mensaje", "keyboard_shortcuts.column": "Enfocar columna", "keyboard_shortcuts.compose": "Enfocar el área de texto de redacción", - "keyboard_shortcuts.conversations": "para abrir la columna de conversaciones", "keyboard_shortcuts.description": "Descripción", + "keyboard_shortcuts.direct": "para abrir columna de mensajes directos", "keyboard_shortcuts.down": "Bajar en la lista", "keyboard_shortcuts.enter": "Abrir mensaje", "keyboard_shortcuts.favourite": "Marcar mensaje como favorito", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Línea temporal local", "navigation_bar.compose": "Redactar un nuevo mensaje", + "navigation_bar.direct": "Mensajes directos", "navigation_bar.discover": "Descubrir", "navigation_bar.domain_blocks": "Dominios bloqueados", "navigation_bar.edit_profile": "Editar perfil", @@ -366,7 +367,7 @@ "poll_button.remove_poll": "Quitar encuesta", "privacy.change": "Configurar privacidad del mensaje", "privacy.direct.long": "Visible sólo para los usuarios mencionados", - "privacy.direct.short": "Sólo a las cuentas que menciono", + "privacy.direct.short": "Sólo cuentas mencionadas", "privacy.private.long": "Visible sólo para los seguidores", "privacy.private.short": "Sólo para seguidores", "privacy.public.long": "Visible para todos", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index c51ed52a6..55a3f67cd 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -70,7 +70,7 @@ "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", "column.community": "Línea de tiempo local", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Buscar perfiles", "column.domain_blocks": "Dominios ocultados", "column.favourites": "Favoritos", @@ -93,7 +93,7 @@ "community.column_settings.media_only": "Solo media", "community.column_settings.remote_only": "Solo remoto", "compose_form.direct_message_warning_learn_more": "Aprender mas", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "Los mensajes en Mastodon no están cifrados de extremo a extremo. No comparta ninguna información confidencial en Mastodon.", "compose_form.hashtag_warning": "Este toot no se mostrará bajo hashtags porque no es público. Sólo los toots públicos se pueden buscar por hashtag.", "compose_form.lock_disclaimer": "Tu cuenta no está bloqueada. Todos pueden seguirte para ver tus toots solo para seguidores.", "compose_form.lock_disclaimer.lock": "bloqueado", @@ -166,7 +166,7 @@ "empty_column.blocks": "Aún no has bloqueado a ningún usuario.", "empty_column.bookmarked_statuses": "Aún no tienes ningún toot guardado como marcador. Cuando guardes uno, se mostrará aquí.", "empty_column.community": "La línea de tiempo local está vacía. ¡Escribe algo para empezar la fiesta!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Todavía no hay dominios ocultos.", "empty_column.explore_statuses": "Nada es tendencia en este momento. ¡Revisa más tarde!", "empty_column.favourited_statuses": "Aún no tienes toots preferidos. Cuando marques uno como favorito, aparecerá aquí.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "retootear", "keyboard_shortcuts.column": "enfocar un estado en una de las columnas", "keyboard_shortcuts.compose": "enfocar el área de texto de redacción", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Descripción", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "mover hacia abajo en la lista", "keyboard_shortcuts.enter": "abrir estado", "keyboard_shortcuts.favourite": "añadir a favoritos", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Historia local", "navigation_bar.compose": "Escribir un nuevo toot", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Descubrir", "navigation_bar.domain_blocks": "Dominios ocultos", "navigation_bar.edit_profile": "Editar perfil", @@ -368,10 +369,10 @@ "privacy.direct.long": "Sólo mostrar a los usuarios mencionados", "privacy.direct.short": "Direct", "privacy.private.long": "Sólo mostrar a seguidores", - "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all", + "privacy.private.short": "Solo seguidores", + "privacy.public.long": "Visible para todos", "privacy.public.short": "Público", - "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", + "privacy.unlisted.long": "Visible para todos, pero excluido de las funciones de descubrimiento", "privacy.unlisted.short": "No listado", "refresh": "Actualizar", "regeneration_indicator.label": "Cargando…", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 83888e634..d8ea364d6 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -70,7 +70,7 @@ "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", "column.community": "Línea de tiempo local", - "column.conversations": "Conversaciones", + "column.direct": "Mensajes directos", "column.directory": "Buscar perfiles", "column.domain_blocks": "Dominios ocultados", "column.favourites": "Favoritos", @@ -166,7 +166,7 @@ "empty_column.blocks": "Aún no has bloqueado a ningún usuario.", "empty_column.bookmarked_statuses": "Aún no tienes ninguna publicación guardada como marcador. Cuando guardes una, se mostrará aquí.", "empty_column.community": "La línea de tiempo local está vacía. ¡Escribe algo para empezar la fiesta!", - "empty_column.conversations": "Una vez que envíe o reciba un mensaje que solo sea visible para la gente mencionada en él, aparecerá aquí.", + "empty_column.direct": "Aún no tienes ningún mensaje directo. Cuando envíes o recibas uno, se mostrará aquí.", "empty_column.domain_blocks": "Todavía no hay dominios ocultos.", "empty_column.explore_statuses": "Nada está en tendencia en este momento. ¡Revisa más tarde!", "empty_column.favourited_statuses": "Aún no tienes publicaciones favoritas. Cuando marques una como favorita, aparecerá aquí.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Retootear", "keyboard_shortcuts.column": "enfocar un estado en una de las columnas", "keyboard_shortcuts.compose": "enfocar el área de texto de redacción", - "keyboard_shortcuts.conversations": "para abrir la columna de conversaciones", "keyboard_shortcuts.description": "Descripción", + "keyboard_shortcuts.direct": "para abrir la columna de mensajes directos", "keyboard_shortcuts.down": "mover hacia abajo en la lista", "keyboard_shortcuts.enter": "abrir estado", "keyboard_shortcuts.favourite": "añadir a favoritos", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Línea de tiempo local", "navigation_bar.compose": "Escribir nueva publicación", + "navigation_bar.direct": "Mensajes directos", "navigation_bar.discover": "Descubrir", "navigation_bar.domain_blocks": "Dominios ocultos", "navigation_bar.edit_profile": "Editar perfil", @@ -366,7 +367,7 @@ "poll_button.remove_poll": "Eliminar encuesta", "privacy.change": "Ajustar privacidad", "privacy.direct.long": "Sólo mostrar a los usuarios mencionados", - "privacy.direct.short": "Solo la gente que yo menciono", + "privacy.direct.short": "Sólo cuentas mencionadas", "privacy.private.long": "Sólo mostrar a seguidores", "privacy.private.short": "Solo seguidores", "privacy.public.long": "Visible para todos", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index ca40ff370..6cccbb666 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -70,7 +70,7 @@ "column.blocks": "Blokeeritud kasutajad", "column.bookmarks": "Järjehoidjad", "column.community": "Kohalik ajajoon", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Sirvi profiile", "column.domain_blocks": "Peidetud domeenid", "column.favourites": "Lemmikud", @@ -166,7 +166,7 @@ "empty_column.blocks": "Sa ei ole veel ühtegi kasutajat blokeerinud.", "empty_column.bookmarked_statuses": "Teil pole veel järjehoidjatesse lisatud tuututusi. Kui lisate mõne, näete neid siin.", "empty_column.community": "Kohalik ajajoon on tühi. Kirjutage midagi avalikult, et pall veerema ajada!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Siin ei ole veel peidetud domeene.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Teil pole veel lemmikuid tuute. Kui märgite mõne, näete neid siin.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "upitamiseks", "keyboard_shortcuts.column": "fokuseerimaks staatust ühele tulpadest", "keyboard_shortcuts.compose": "fokuseerimaks tekstikoostamise alale", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Kirjeldus", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "liikumaks nimstus alla", "keyboard_shortcuts.enter": "staatuse avamiseks", "keyboard_shortcuts.favourite": "lemmikuks märkimiseks", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Järjehoidjad", "navigation_bar.community_timeline": "Kohalik ajajoon", "navigation_bar.compose": "Koosta uus tuut", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Avasta", "navigation_bar.domain_blocks": "Peidetud domeenid", "navigation_bar.edit_profile": "Muuda profiili", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 119395b2f..6a328edf0 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -70,7 +70,7 @@ "column.blocks": "Blokeatutako erabiltzaileak", "column.bookmarks": "Laster-markak", "column.community": "Denbora-lerro lokala", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Arakatu profilak", "column.domain_blocks": "Ezkutatutako domeinuak", "column.favourites": "Gogokoak", @@ -166,7 +166,7 @@ "empty_column.blocks": "Ez duzu erabiltzailerik blokeatu oraindik.", "empty_column.bookmarked_statuses": "Oraindik ez dituzu bidalketa laster-markatutarik. Bat laster-markatzerakoan, hemen agertuko da.", "empty_column.community": "Denbora-lerro lokala hutsik dago. Idatzi zerbait publikoki pilota biraka jartzeko!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Ez dago ezkutatutako domeinurik oraindik.", "empty_column.explore_statuses": "Ez dago joerarik une honetan. Begiratu beranduago!", "empty_column.favourited_statuses": "Ez duzu gogokorik oraindik. Gogokoren bat duzunean hemen agertuko da.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Bultzatu bidalketa", "keyboard_shortcuts.column": "mezu bat zutabe batean fokatzea", "keyboard_shortcuts.compose": "testua konposatzeko arean fokatzea", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Deskripzioa", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "zerrendan behera mugitzea", "keyboard_shortcuts.enter": "Ireki bidalketa", "keyboard_shortcuts.favourite": "Egin gogoko bidalketa", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Laster-markak", "navigation_bar.community_timeline": "Denbora-lerro lokala", "navigation_bar.compose": "Idatzi bidalketa berria", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Aurkitu", "navigation_bar.domain_blocks": "Ezkutatutako domeinuak", "navigation_bar.edit_profile": "Aldatu profila", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index ae74607ab..a3bd5bbf8 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -70,7 +70,7 @@ "column.blocks": "کاربران مسدود شده", "column.bookmarks": "نشانک‌ها", "column.community": "خط زمانی محلّی", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "مرور نمایه‌ها", "column.domain_blocks": "دامنه‌های مسدود شده", "column.favourites": "پسندیده‌ها", @@ -166,7 +166,7 @@ "empty_column.blocks": "هنوز کسی را مسدود نکرده‌اید.", "empty_column.bookmarked_statuses": "هنوز هیچ فرستهٔ نشانه‌گذاری شده‌ای ندارید. هنگامی که فرسته‌ای را نشانه‌گذاری کنید، این‌جا نشان داده خواهد شد.", "empty_column.community": "خط زمانی محلّی خالی است. چیزی بنویسید تا چرخش بچرخد!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "هنوز هیچ دامنه‌ای مسدود نشده است.", "empty_column.explore_statuses": "الآن چیزی پرطرفدار نیست. بعداً دوباره بررسی کنید!", "empty_column.favourited_statuses": "شما هنوز هیچ فرسته‌ای را نپسندیده‌اید. هنگامی که فرسته‌ای را بپسندید، این‌جا نشان داده خواهد شد.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "تقویت فرسته", "keyboard_shortcuts.column": "برای تمرکز روی یک فرسته در یکی از ستون‌ها", "keyboard_shortcuts.compose": "تمرکز روی محیط نوشتن", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "توضیح", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "پایین بردن در سیاهه", "keyboard_shortcuts.enter": "گشودن فرسته", "keyboard_shortcuts.favourite": "پسندیدن فرسته", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "نشانک‌ها", "navigation_bar.community_timeline": "خط زمانی محلّی", "navigation_bar.compose": "نوشتن فرستهٔ تازه", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "گشت و گذار", "navigation_bar.domain_blocks": "دامنه‌های مسدود شده", "navigation_bar.edit_profile": "ویرایش نمایه", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 99f81be6e..7a5f18267 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -70,7 +70,7 @@ "column.blocks": "Estetyt käyttäjät", "column.bookmarks": "Kirjanmerkit", "column.community": "Paikallinen aikajana", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Selaa profiileja", "column.domain_blocks": "Piilotetut verkkotunnukset", "column.favourites": "Suosikit", @@ -166,7 +166,7 @@ "empty_column.blocks": "Et ole vielä estänyt yhtään käyttäjää.", "empty_column.bookmarked_statuses": "Et ole vielä lisännyt viestejä kirjanmerkkeihisi. Kun lisäät yhden, se näkyy tässä.", "empty_column.community": "Paikallinen aikajana on tyhjä. Kirjoita jotain julkista, niin homma lähtee käyntiin!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Yhtään verkko-osoitetta ei ole vielä estetty.", "empty_column.explore_statuses": "Mikään ei ole nyt trendi. Tarkista myöhemmin!", "empty_column.favourited_statuses": "Et ole vielä lisännyt viestejä kirjanmerkkeihisi. Kun lisäät yhden, se näkyy tässä.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Buustaa viestiä", "keyboard_shortcuts.column": "Kohdista sarakkeeseen", "keyboard_shortcuts.compose": "siirry tekstinsyöttöön", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Kuvaus", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "Siirry listassa alaspäin", "keyboard_shortcuts.enter": "Avaa julkaisu", "keyboard_shortcuts.favourite": "Lisää suosikkeihin", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Kirjanmerkit", "navigation_bar.community_timeline": "Paikallinen aikajana", "navigation_bar.compose": "Luo uusi viesti", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Löydä uutta", "navigation_bar.domain_blocks": "Estetyt verkkotunnukset", "navigation_bar.edit_profile": "Muokkaa profiilia", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 32f2e3f6e..b22213ec4 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -1,25 +1,25 @@ { "account.account_note_header": "Note", "account.add_or_remove_from_list": "Ajouter ou retirer des listes", - "account.badges.bot": "Robot", + "account.badges.bot": "Bot", "account.badges.group": "Groupe", "account.block": "Bloquer @{name}", "account.block_domain": "Bloquer le domaine {domain}", - "account.blocked": "Bloqué", + "account.blocked": "Bloqué·e", "account.browse_more_on_origin_server": "Parcourir davantage sur le profil original", "account.cancel_follow_request": "Annuler la demande de suivi", "account.direct": "Envoyer un message direct à @{name}", - "account.disable_notifications": "Arrêter de me notifier quand @{name} publie", + "account.disable_notifications": "Ne plus me notifier quand @{name} publie quelque chose", "account.domain_blocked": "Domaine bloqué", "account.edit_profile": "Modifier le profil", - "account.enable_notifications": "Me notifier quand @{name} publie", + "account.enable_notifications": "Me notifier quand @{name} publie quelque chose", "account.endorse": "Recommander sur votre profil", "account.follow": "Suivre", - "account.followers": "Abonnés", + "account.followers": "Abonné·e·s", "account.followers.empty": "Personne ne suit cet·te utilisateur·rice pour l’instant.", "account.followers_counter": "{count, plural, one {{counter} Abonné·e} other {{counter} Abonné·e·s}}", "account.following": "Abonnements", - "account.following_counter": "{count, plural, other {{counter} Abonnements}}", + "account.following_counter": "{count, plural, one {{counter} Abonnement} other {{counter} Abonnements}}", "account.follows.empty": "Cet·te utilisateur·rice ne suit personne pour l’instant.", "account.follows_you": "Vous suit", "account.hide_reblogs": "Masquer les partages de @{name}", @@ -30,12 +30,12 @@ "account.mention": "Mentionner @{name}", "account.moved_to": "{name} a déménagé vers :", "account.mute": "Masquer @{name}", - "account.mute_notifications": "Ignorer les notifications de @{name}", + "account.mute_notifications": "Masquer les notifications de @{name}", "account.muted": "Masqué·e", "account.posts": "Messages", "account.posts_with_replies": "Messages et réponses", "account.report": "Signaler @{name}", - "account.requested": "En attente d’approbation. Cliquez pour annuler la requête", + "account.requested": "En attente d’approbation. Cliquez pour annuler la demande", "account.share": "Partager le profil de @{name}", "account.show_reblogs": "Afficher les partages de @{name}", "account.statuses_counter": "{count, plural, one {{counter} Message} other {{counter} Messages}}", @@ -48,8 +48,8 @@ "account.unmute_notifications": "Ne plus masquer les notifications de @{name}", "account.unmute_short": "Ne plus masquer", "account_note.placeholder": "Cliquez pour ajouter une note", - "admin.dashboard.daily_retention": "Taux de maintien des utilisateur·rice·s par jour après inscription", - "admin.dashboard.monthly_retention": "Brugerfastholdelsesrate efter måned efter tilmelding", + "admin.dashboard.daily_retention": "Taux de rétention des utilisateur·rice·s par jour après inscription", + "admin.dashboard.monthly_retention": "Taux de rétention des utilisateur·rice·s par mois après inscription", "admin.dashboard.retention.average": "Moyenne", "admin.dashboard.retention.cohort": "Mois d'inscription", "admin.dashboard.retention.cohort_size": "Nouveaux utilisateurs", @@ -70,7 +70,7 @@ "column.blocks": "Comptes bloqués", "column.bookmarks": "Marque-pages", "column.community": "Fil public local", - "column.conversations": "Conversations", + "column.direct": "Messages directs", "column.directory": "Parcourir les profils", "column.domain_blocks": "Domaines bloqués", "column.favourites": "Favoris", @@ -146,10 +146,10 @@ "directory.recently_active": "Actif·ve·s récemment", "embed.instructions": "Intégrez ce message à votre site en copiant le code ci-dessous.", "embed.preview": "Il apparaîtra comme cela :", - "emoji_button.activity": "Activité", + "emoji_button.activity": "Activités", "emoji_button.custom": "Personnalisés", "emoji_button.flags": "Drapeaux", - "emoji_button.food": "Nourriture & Boisson", + "emoji_button.food": "Nourriture et boisson", "emoji_button.label": "Insérer un émoji", "emoji_button.nature": "Nature", "emoji_button.not_found": "Aucun émoji correspondant n'a été trouvé", @@ -159,14 +159,14 @@ "emoji_button.search": "Recherche...", "emoji_button.search_results": "Résultats de la recherche", "emoji_button.symbols": "Symboles", - "emoji_button.travel": "Lieux & Voyages", + "emoji_button.travel": "Voyage et lieux", "empty_column.account_suspended": "Compte suspendu", "empty_column.account_timeline": "Aucun message ici !", "empty_column.account_unavailable": "Profil non disponible", "empty_column.blocks": "Vous n’avez bloqué aucun compte pour le moment.", "empty_column.bookmarked_statuses": "Vous n'avez pas de message en marque-page. Lorsque vous en ajouterez un, il apparaîtra ici.", "empty_column.community": "Le fil public local est vide. Écrivez donc quelque chose pour le remplir !", - "empty_column.conversations": "Une fois que vous avez envoyé ou reçu un message qui ne sera visible que par les personnes mentionnées, il apparaîtra ici.", + "empty_column.direct": "Vous n’avez pas encore de messages directs. Lorsque vous en enverrez ou recevrez un, il s’affichera ici.", "empty_column.domain_blocks": "Il n’y a aucun domaine bloqué pour le moment.", "empty_column.explore_statuses": "Rien n'est en tendance pour le moment. Revenez plus tard !", "empty_column.favourited_statuses": "Vous n’avez pas encore de message en favori. Lorsque vous en ajouterez un, il apparaîtra ici.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Partager le message", "keyboard_shortcuts.column": "Se placer dans une colonne", "keyboard_shortcuts.compose": "Se placer dans la zone de rédaction", - "keyboard_shortcuts.conversations": "pour ouvrir la colonne des conversations", "keyboard_shortcuts.description": "Description", + "keyboard_shortcuts.direct": "ouvrir la colonne des messages directs", "keyboard_shortcuts.down": "Descendre dans la liste", "keyboard_shortcuts.enter": "Ouvrir le message", "keyboard_shortcuts.favourite": "Ajouter le message aux favoris", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Marque-pages", "navigation_bar.community_timeline": "Fil public local", "navigation_bar.compose": "Rédiger un nouveau message", + "navigation_bar.direct": "Messages directs", "navigation_bar.discover": "Découvrir", "navigation_bar.domain_blocks": "Domaines bloqués", "navigation_bar.edit_profile": "Modifier le profil", @@ -366,7 +367,7 @@ "poll_button.remove_poll": "Supprimer le sondage", "privacy.change": "Ajuster la confidentialité du message", "privacy.direct.long": "Visible uniquement par les comptes mentionnés", - "privacy.direct.short": "Seulement les personnes mentionnées", + "privacy.direct.short": "Personnes mentionnées uniquement", "privacy.private.long": "Visible uniquement par vos abonné·e·s", "privacy.private.short": "Abonné·e·s uniquement", "privacy.public.long": "Visible pour tous", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 6370cd9d6..217b9358c 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -70,7 +70,7 @@ "column.blocks": "Cuntais choiscthe", "column.bookmarks": "Leabharmharcanna", "column.community": "Local timeline", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", @@ -166,7 +166,7 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked posts yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "There are no blocked domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite posts yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "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.favourite": "to favourite", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new post", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Cuir an phróifíl in eagar", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index be1b10025..7cef3d69c 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -50,7 +50,7 @@ "account_note.placeholder": "Briog airson nòta a chur ris", "admin.dashboard.daily_retention": "Reat glèidheadh nan cleachdaichean às dèidh an clàradh a-rèir latha", "admin.dashboard.monthly_retention": "Reat glèidheadh nan cleachdaichean às dèidh an clàradh a-rèir mìos", - "admin.dashboard.retention.average": "Cuibheasach", + "admin.dashboard.retention.average": "Średnia", "admin.dashboard.retention.cohort": "Mìos a’ chlàraidh", "admin.dashboard.retention.cohort_size": "Cleachdaichean ùra", "alert.rate_limited.message": "Feuch ris a-rithist às dèidh {retry_time, time, medium}.", @@ -70,7 +70,7 @@ "column.blocks": "Cleachdaichean bacte", "column.bookmarks": "Comharran-lìn", "column.community": "Loidhne-ama ionadail", - "column.conversations": "Còmhraidhean", + "column.direct": "Teachdaireachdan dìreach", "column.directory": "Rùraich sna pròifilean", "column.domain_blocks": "Àrainnean bacte", "column.favourites": "Na h-annsachdan", @@ -166,7 +166,7 @@ "empty_column.blocks": "Cha do bhac thu cleachdaiche sam bith fhathast.", "empty_column.bookmarked_statuses": "Chan eil comharra-lìn ri post agad fhathast. Nuair a nì thu comharra-lìn de dh’fhear, nochdaidh e an-seo.", "empty_column.community": "Tha an loidhne-ama ionadail falamh. Sgrìobh rudeigin gu poblach airson toiseach-tòiseachaidh a dhèanamh!", - "empty_column.conversations": "Nuair a chuireas no gheibh thu post nach fhaic ach an fheadhainn le iomradh orra ann, nochdaidh e an-seo.", + "empty_column.direct": "Chan eil teachdaireachd dhìreach agad fhathast. Nuair a chuireas no a gheibh thu tè, nochdaidh i an-seo.", "empty_column.domain_blocks": "Cha deach àrainn sam bith a bhacadh fhathast.", "empty_column.explore_statuses": "Chan eil dad a’ treandadh an-dràsta fhèin. Thoir sùil a-rithist an ceann greis!", "empty_column.favourited_statuses": "Chan eil annsachd air post agad fhathast. Nuair a nì thu annsachd de dh’fhear, nochdaidh e an-seo.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Brosnaich post", "keyboard_shortcuts.column": "Cuir am fòcas air colbh", "keyboard_shortcuts.compose": "Cuir am fòcas air raon teacsa an sgrìobhaidh", - "keyboard_shortcuts.conversations": "a dh’fhosgladh colbh nan còmhraidhean", "keyboard_shortcuts.description": "Tuairisgeul", + "keyboard_shortcuts.direct": "a dh’fhosgladh colbh nan teachdaireachdan dìreach", "keyboard_shortcuts.down": "Gluais sìos air an liosta", "keyboard_shortcuts.enter": "Fosgail post", "keyboard_shortcuts.favourite": "Cuir post ris na h-annsachdan", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Comharran-lìn", "navigation_bar.community_timeline": "Loidhne-ama ionadail", "navigation_bar.compose": "Sgrìobh post ùr", + "navigation_bar.direct": "Teachdaireachdan dìreach", "navigation_bar.discover": "Rùraich", "navigation_bar.domain_blocks": "Àrainnean bacte", "navigation_bar.edit_profile": "Deasaich a’ phròifil", @@ -366,7 +367,7 @@ "poll_button.remove_poll": "Thoir air falbh an cunntas-bheachd", "privacy.change": "Cuir gleus air prìobhaideachd a’ phuist", "privacy.direct.long": "Chan fhaic ach na cleachdaichean le iomradh orra seo", - "privacy.direct.short": "Daoine air an dug mi iomradh a-mhàin", + "privacy.direct.short": "An fheadhainn le iomradh orra a-mhàin", "privacy.private.long": "Chan fhaic ach na daoine a tha a’ leantainn ort seo", "privacy.private.short": "Luchd-leantainn a-mhàin", "privacy.public.long": "Chì a h-uile duine e", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 114d90335..8cd8cecbc 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -70,7 +70,7 @@ "column.blocks": "Usuarias bloqueadas", "column.bookmarks": "Marcadores", "column.community": "Cronoloxía local", - "column.conversations": "Conversas", + "column.direct": "Mensaxes directas", "column.directory": "Procurar perfís", "column.domain_blocks": "Dominios agochados", "column.favourites": "Favoritos", @@ -166,7 +166,7 @@ "empty_column.blocks": "Aínda non bloqueaches a ningún usuaria.", "empty_column.bookmarked_statuses": "Aínda non marcaches ningunha publicación. Cando o fagas, aparecerán aquí.", "empty_column.community": "A cronoloxía local está baleira. Escribe algo de xeito público para espallalo!", - "empty_column.conversations": "Aquí verás as publicacións que envíes ou recibas é só son visibles para as persoas mencionadas.", + "empty_column.direct": "Aínda non tes mensaxes directas. Cando envíes ou recibas unha, amosarase aquí.", "empty_column.domain_blocks": "Aínda non hai dominios agochados.", "empty_column.explore_statuses": "Non hai temas en voga. Volve máis tarde!", "empty_column.favourited_statuses": "Aínda non tes publicacións favoritas. Cando che guste algunha, aparecerá aquí.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Promover publicación", "keyboard_shortcuts.column": "Destacar unha columna", "keyboard_shortcuts.compose": "Por o cursor na área de escritura", - "keyboard_shortcuts.conversations": "para abrir a columna das conversas", "keyboard_shortcuts.description": "Descrición", + "keyboard_shortcuts.direct": "para abrir a columna de mensaxes directas", "keyboard_shortcuts.down": "Para mover cara abaixo na listaxe", "keyboard_shortcuts.enter": "Para abrir publicación", "keyboard_shortcuts.favourite": "Para engadir a favoritos", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Cronoloxía local", "navigation_bar.compose": "Escribir unha nova publicación", + "navigation_bar.direct": "Mensaxes directas", "navigation_bar.discover": "Descubrir", "navigation_bar.domain_blocks": "Dominios agochados", "navigation_bar.edit_profile": "Editar perfil", @@ -366,7 +367,7 @@ "poll_button.remove_poll": "Eliminar enquisa", "privacy.change": "Axustar privacidade", "privacy.direct.long": "Só para as usuarias mencionadas", - "privacy.direct.short": "Só para persoas mencionadas", + "privacy.direct.short": "Só persoas mencionadas", "privacy.private.long": "Só para os seguidoras", "privacy.private.short": "Só para seguidoras", "privacy.public.long": "Visible por todas", @@ -408,11 +409,11 @@ "report.reasons.dislike": "Non me gusta", "report.reasons.dislike_description": "Non é algo que queiras ver", "report.reasons.other": "É outra cousa", - "report.reasons.other_description": "O asunto non cae dentro de outras categorías", + "report.reasons.other_description": "O problema non cae dentro de outras categorías", "report.reasons.spam": "É spam", "report.reasons.spam_description": "Ligazóns perigosas, relacións falsas, ou respostas repetitivas", "report.reasons.violation": "Viola as regras do servidor", - "report.reasons.violation_description": "Daste conta de que quebra unhas normas en concreto", + "report.reasons.violation_description": "Décheste conta de que quebra unhas normas en concreto", "report.rules.subtitle": "Elixe todo o que sexa de aplicación", "report.rules.title": "Que regras foron incumpridas?", "report.statuses.subtitle": "Elixe todo o que corresponda", @@ -455,8 +456,8 @@ "status.embed": "Incrustar", "status.favourite": "Favorito", "status.filtered": "Filtrado", - "status.history.created": "{name} creado o {date}", - "status.history.edited": "{name} editado o {date}", + "status.history.created": "{name} creouno o {date}", + "status.history.edited": "{name} editouno o {date}", "status.load_more": "Cargar máis", "status.media_hidden": "Contido multimedia agochado", "status.mention": "Mencionar @{name}", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index efa740656..0cd308923 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -1,24 +1,24 @@ { - "account.account_note_header": "ההודעה שלך ל@{name}", + "account.account_note_header": "הערה", "account.add_or_remove_from_list": "הוסף או הסר מהרשימות", "account.badges.bot": "בוט", "account.badges.group": "קבוצה", - "account.block": "חסימת @{name}", - "account.block_domain": "להסתיר הכל מהקהילה {domain}", + "account.block": "חסמי את @{name}", + "account.block_domain": "חסמו את שם המתחם (דומיין) {domain}", "account.blocked": "חסום", - "account.browse_more_on_origin_server": "המשך לגלוש בפרופיל המקורי", + "account.browse_more_on_origin_server": "ראה יותר בפרופיל המקורי", "account.cancel_follow_request": "בטל בקשת מעקב", - "account.direct": "Direct Message @{name}", + "account.direct": "הודעה ישירה ל@{name}", "account.disable_notifications": "הפסק לשלוח לי התראות כש@{name} מפרסמים", - "account.domain_blocked": "הדומיין חסוי", + "account.domain_blocked": "הדומיין חסום", "account.edit_profile": "עריכת פרופיל", - "account.enable_notifications": "שלח לי התראות כש@{name} מפרסמים", - "account.endorse": "הצג בפרופיל", - "account.follow": "מעקב", + "account.enable_notifications": "שלח לי התראות כש@{name} מפרסם", + "account.endorse": "קדם את החשבון בפרופיל", + "account.follow": "עקוב", "account.followers": "עוקבים", "account.followers.empty": "אף אחד לא עוקב אחר המשתמש הזה עדיין.", "account.followers_counter": "{count, plural,one {עוקב אחד} other {{counter} עוקבים}}", - "account.following": "Following", + "account.following": "נעקבים", "account.following_counter": "{count, plural,one {עוקב אחרי {counter}}other {עוקב אחרי {counter}}}", "account.follows.empty": "משתמש זה לא עוקב אחר אף אחד עדיין.", "account.follows_you": "במעקב אחריך", @@ -30,28 +30,28 @@ "account.mention": "אזכור של @{name}", "account.moved_to": "החשבון {name} הועבר אל:", "account.mute": "להשתיק את @{name}", - "account.mute_notifications": "להסתיר התראות מאת @{name}", + "account.mute_notifications": "להסתיר התראות מ @{name}", "account.muted": "מושתק", - "account.posts": "הודעות", - "account.posts_with_replies": "Toots with replies", - "account.report": "לדווח על @{name}", - "account.requested": "בהמתנה לאישור", - "account.share": "לשתף את הפרופיל של @{name}", - "account.show_reblogs": "להראות הדהודים מאת @{name}", + "account.posts": "חצרוצים", + "account.posts_with_replies": "חצרוצים ותגובות", + "account.report": "דווח על @{name}", + "account.requested": "בהמתנה לאישור. לחצי כדי לבטל בקשת מעקב", + "account.share": "שתף את הפרופיל של @{name}", + "account.show_reblogs": "הצג הדהודים מאת @{name}", "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", - "account.unblock": "הסרת חסימה מעל @{name}", - "account.unblock_domain": "הסר חסימה מקהילת {domain}", - "account.unblock_short": "Unblock", - "account.unendorse": "לא להציג בפרופיל", + "account.unblock": "הסר את החסימה של @{name}", + "account.unblock_domain": "הסראת שם המתחם {domain}", + "account.unblock_short": "הסר חסימה", + "account.unendorse": "אל תקדם בפרופיל", "account.unfollow": "הפסקת מעקב", "account.unmute": "הפסקת השתקת @{name}", - "account.unmute_notifications": "להפסיק הסתרת הודעות מעם @{name}", - "account.unmute_short": "Unmute", - "account_note.placeholder": "ללא הערה", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "account.unmute_notifications": "להפסיק השתקת הודעות מ @{name}", + "account.unmute_short": "ביטול השתקה", + "account_note.placeholder": "יש ללחוץ כדי להוסיף הערות", + "admin.dashboard.daily_retention": "קצב שימור משתמשים (פר יום) אחרי ההרשמה", + "admin.dashboard.monthly_retention": "קצב שימור משתמשים (פר חודש) אחרי ההרשמה", "admin.dashboard.retention.average": "ממוצע", - "admin.dashboard.retention.cohort": "Sign-up month", + "admin.dashboard.retention.cohort": "חודש רישום", "admin.dashboard.retention.cohort_size": "משתמשים חדשים", "alert.rate_limited.message": "נא לנסות אחרי {retry_time, time, medium}.", "alert.rate_limited.title": "מגבלות מיכסה", @@ -70,7 +70,7 @@ "column.blocks": "חסימות", "column.bookmarks": "סימניות", "column.community": "ציר זמן מקומי", - "column.conversations": "Conversations", + "column.direct": "הודעות ישירות", "column.directory": "גלוש פרופילים", "column.domain_blocks": "Hidden domains", "column.favourites": "חיבובים", @@ -93,7 +93,7 @@ "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "מרחוק בלבד", "compose_form.direct_message_warning_learn_more": "מידע נוסף", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "חצרוצים במסטודון אינם מוצפנים מקצה לקצה. לעולם אל תחלקו מידע רגיש דרך מסטודון.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "חשבונך אינו {locked}. כל אחד יוכל לעקוב אחריך כדי לקרוא את הודעותיך המיועדות לעוקבים בלבד.", "compose_form.lock_disclaimer.lock": "נעול", @@ -105,11 +105,11 @@ "compose_form.poll.switch_to_multiple": "אפשרו בחירה מרובה בסקר", "compose_form.poll.switch_to_single": "אפשרו בחירה בודדת בסקר", "compose_form.publish": "ללחוש", - "compose_form.publish_loud": "לחצרץ!", - "compose_form.save_changes": "Save changes", - "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", - "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", - "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", + "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "שמירת שינויים", + "compose_form.sensitive.hide": "{count, plural, one {סימון מידע כרגיש} other {סימון מידע כרגיש}}", + "compose_form.sensitive.marked": "{count, plural, one {מידע מסומן כרגיש} other {מידע מסומן כרגיש}}", + "compose_form.sensitive.unmarked": "{count, plural, one {מידע לא מסומן כרגיש} other {מידע לא מסומן כרגיש}}", "compose_form.spoiler.marked": "Text is hidden behind warning", "compose_form.spoiler.unmarked": "Text is not hidden", "compose_form.spoiler_placeholder": "אזהרת תוכן", @@ -121,14 +121,14 @@ "confirmations.delete.message": "למחוק את ההודעה?", "confirmations.delete_list.confirm": "למחוק", "confirmations.delete_list.message": "האם אתם בטוחים שאתם רוצים למחוק את הרשימה לצמיתות?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "השלך", + "confirmations.discard_edit_media.message": "יש לך שינויים לא שמורים לתיאור המדיה. להשליך אותם בכל זאת?", "confirmations.domain_block.confirm": "הסתר קהילה שלמה", "confirmations.domain_block.message": "באמת באמת לחסום את כל קהילת {domain}? ברב המקרים השתקות נבחרות של מספר משתמשים מסויימים צריכה להספיק.", "confirmations.logout.confirm": "להתנתק", "confirmations.logout.message": "האם אתם בטוחים שאתם רוצים להתנתק?", "confirmations.mute.confirm": "להשתיק", - "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.", + "confirmations.mute.explanation": "זה יסתיר חצרוצים שלהם וחצרוצים המזכירים אותם, אבל עדיין יתיר להם לראות פוסטים שלך ולעקוב אחריך.", "confirmations.mute.message": "להשתיק את {name}?", "confirmations.redraft.confirm": "מחק וערוך מחדש", "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.", @@ -140,9 +140,9 @@ "conversation.mark_as_read": "סמן כנקרא", "conversation.open": "צפו בשיחה", "conversation.with": "עם {names}", - "directory.federated": "From known fediverse", - "directory.local": "From {domain} only", - "directory.new_arrivals": "New arrivals", + "directory.federated": "מהפדרציה הידועה", + "directory.local": "מ- {domain} בלבד", + "directory.new_arrivals": "חדשים כאן", "directory.recently_active": "פעילים לאחרונה", "embed.instructions": "ניתן להטמיע את ההודעה באתרך ע\"י העתקת הקוד שלהלן.", "embed.preview": "דוגמא כיצד זה יראה:", @@ -166,109 +166,109 @@ "empty_column.blocks": "עדיין לא חסמתם משתמשים אחרים.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "טור הסביבה ריק. יש לפרסם משהו כדי שדברים יתרחילו להתגלגל!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "אין לך שום הודעות פרטיות עדיין. כשתשלחו או תקבלו אחת, היא תופיע כאן.", "empty_column.domain_blocks": "There are no hidden domains yet.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "אין נושאים חמים כרגע. אולי אחר כך!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", - "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", - "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.", + "empty_column.follow_recommendations": "נראה שלא ניתן לייצר המלצות עבורך. נסה/י להשתמש בחיפוש כדי למצוא אנשים מוכרים או לבדוק את הנושאים החמים.", + "empty_column.follow_requests": "אין לך שום בקשות מעקב עדיין. לכשיתקבלו כאלה, הן תופענה כאן.", "empty_column.hashtag": "אין כלום בהאשתג הזה עדיין.", - "empty_column.home": "אף אחד לא במעקב עדיין. אפשר לבקר ב{public} או להשתמש בחיפוש כדי להתחיל ולהכיר חצוצרנים אחרים.", - "empty_column.home.suggestions": "See some suggestions", + "empty_column.home": "אף אחד לא במעקב עדיין. אפשר לבקר ב{public} או להשתמש בחיפוש כדי להתחיל ולהכיר חצוצרנים אחרים. {suggestions}", + "empty_column.home.suggestions": "ראה/י כמה הצעות", "empty_column.list": "אין עדיין מאום ברשימה.", - "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.", - "empty_column.mutes": "You haven't muted any users yet.", + "empty_column.lists": "אין לך שום רשימות עדיין. לכשיהיו, הן תופענה כאן.", + "empty_column.mutes": "עוד לא השתקת שום משתמש.", "empty_column.notifications": "אין התראות עדיין. יאללה, הגיע הזמן להתחיל להתערבב.", "empty_column.public": "אין פה כלום! כדי למלא את הטור הזה אפשר לכתוב משהו, או להתחיל לעקוב אחרי אנשים מקהילות אחרות", - "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.", - "error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.", - "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", - "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", - "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", - "errors.unexpected_crash.report_issue": "Report issue", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", - "follow_recommendations.done": "Done", - "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", - "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", + "error.unexpected_crash.explanation": "עקב תקלה בקוד שלנו או בעיית תאימות דפדפן, לא ניתן להציג דף זה כראוי.", + "error.unexpected_crash.explanation_addons": "לא ניתן להציג דף זה כראוי. הבעיה נגרמת כנראה עקב תוסף דפדפן או כלי תרגום אוטומטי.", + "error.unexpected_crash.next_steps": "נסה/י לרענן את הדף. אם זה לא עוזר, אולי אפשר עדיין להשתמש במסטודון דרך דפדפן אחר או באמצעות אפליקציה ילידית.", + "error.unexpected_crash.next_steps_addons": "נסה/י להסיר אותם ולרענן את הדף. אם זה לא עוזר, אולי אפשר עדיין להשתמש במסטודון דרך דפדפן אחר או באמצעות אפליקציה ילידית.", + "errors.unexpected_crash.copy_stacktrace": "להעתיק את הקוד ללוח הכתיבה", + "errors.unexpected_crash.report_issue": "דווח על בעיה", + "explore.search_results": "תוצאות חיפוש", + "explore.suggested_follows": "עבורך", + "explore.title": "סיור", + "explore.trending_links": "חדשות", + "explore.trending_statuses": "חצרוצים", + "explore.trending_tags": "האשטאגים", + "follow_recommendations.done": "בוצע", + "follow_recommendations.heading": "עקב/י אחרי אנשים שתרצה/י לראות את חצרוציהם! הנה כמה הצעות.", + "follow_recommendations.lead": "חצרוצים מאנשים במעקב יופיעו בסדר כרונולוגי בפיד הבית. אל תחששו מטעויות, אפשר להסיר מעקב באותה הקלות ובכל זמן!", "follow_request.authorize": "קבלה", "follow_request.reject": "דחיה", - "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", - "generic.saved": "Saved", - "getting_started.developers": "Developers", - "getting_started.directory": "Profile directory", - "getting_started.documentation": "Documentation", + "follow_requests.unlocked_explanation": "למרות שחשבונך אינו נעול, צוות {domain} חושב שאולי כדאי לוודא את בקשות המעקב האלה ידנית.", + "generic.saved": "נשמר", + "getting_started.developers": "מפתחות", + "getting_started.directory": "ספריית פרופילים", + "getting_started.documentation": "תיעוד", "getting_started.heading": "בואו נתחיל", - "getting_started.invite": "Invite people", + "getting_started.invite": "להזמין אנשים", "getting_started.open_source_notice": "מסטודון היא תוכנה חופשית (בקוד פתוח). ניתן לתרום או לדווח על בעיות בגיטהאב: {github}.", "getting_started.security": "Security", - "getting_started.terms": "Terms of service", - "hashtag.column_header.tag_mode.all": "and {additional}", - "hashtag.column_header.tag_mode.any": "or {additional}", - "hashtag.column_header.tag_mode.none": "without {additional}", - "hashtag.column_settings.select.no_options_message": "No suggestions found", - "hashtag.column_settings.select.placeholder": "Enter hashtags…", - "hashtag.column_settings.tag_mode.all": "All of these", - "hashtag.column_settings.tag_mode.any": "Any of these", - "hashtag.column_settings.tag_mode.none": "None of these", + "getting_started.terms": "תנאי שימוש", + "hashtag.column_header.tag_mode.all": "ו- {additional}", + "hashtag.column_header.tag_mode.any": "או {additional}", + "hashtag.column_header.tag_mode.none": "ללא {additional}", + "hashtag.column_settings.select.no_options_message": "לא נמצאו הצעות", + "hashtag.column_settings.select.placeholder": "הזן תגי הקבצה…", + "hashtag.column_settings.tag_mode.all": "כל אלה", + "hashtag.column_settings.tag_mode.any": "כל אלה", + "hashtag.column_settings.tag_mode.none": "אפאחד מאלה", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", "home.column_settings.basic": "למתחילים", "home.column_settings.show_reblogs": "הצגת הדהודים", "home.column_settings.show_replies": "הצגת תגובות", - "home.hide_announcements": "Hide announcements", - "home.show_announcements": "Show announcements", - "intervals.full.days": "{number, plural, one {# day} other {# days}}", - "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", - "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", + "home.hide_announcements": "הסתר הכרזות", + "home.show_announcements": "הצג הכרזות", + "intervals.full.days": "{number, plural, one {# יום} other {# ימים}}", + "intervals.full.hours": "{number, plural, one {# שעה} other {# שעות}}", + "intervals.full.minutes": "{number, plural, one {# דקה} other {# דקות}}", "keyboard_shortcuts.back": "ניווט חזרה", - "keyboard_shortcuts.blocked": "to open blocked users list", + "keyboard_shortcuts.blocked": "פתיחת רשימת חסומים", "keyboard_shortcuts.boost": "להדהד", "keyboard_shortcuts.column": "להתמקד בהודעה באחד מהטורים", "keyboard_shortcuts.compose": "להתמקד בתיבת חיבור ההודעות", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "תיאור", + "keyboard_shortcuts.direct": "לפתיחת טור הודעות ישירות", "keyboard_shortcuts.down": "לנוע במורד הרשימה", - "keyboard_shortcuts.enter": "to open status", + "keyboard_shortcuts.enter": "פתח חצרוץ", "keyboard_shortcuts.favourite": "לחבב", - "keyboard_shortcuts.favourites": "to open favourites list", - "keyboard_shortcuts.federated": "to open federated timeline", + "keyboard_shortcuts.favourites": "פתיחת רשימת מועדפים", + "keyboard_shortcuts.federated": "פתיחת ציר זמן בין-קהילתי", "keyboard_shortcuts.heading": "Keyboard Shortcuts", - "keyboard_shortcuts.home": "to open home timeline", + "keyboard_shortcuts.home": "פתיחת ציר זמן אישי", "keyboard_shortcuts.hotkey": "מקש קיצור", "keyboard_shortcuts.legend": "להציג את הפירוש", - "keyboard_shortcuts.local": "to open local timeline", + "keyboard_shortcuts.local": "פתיחת ציר זמן קהילתי", "keyboard_shortcuts.mention": "לאזכר את המחבר(ת)", - "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.open_media": "to open media", - "keyboard_shortcuts.pinned": "to open pinned toots list", - "keyboard_shortcuts.profile": "to open author's profile", + "keyboard_shortcuts.muted": "פתיחת רשימת משתמשים מושתקים", + "keyboard_shortcuts.my_profile": "פתיחת הפרופיל שלך", + "keyboard_shortcuts.notifications": "פתיחת טור התראות", + "keyboard_shortcuts.open_media": "פתיחת מדיה", + "keyboard_shortcuts.pinned": "פתיחת רשימת חצרותים מוצמדים", + "keyboard_shortcuts.profile": "פתח את פרופיל המשתמש", "keyboard_shortcuts.reply": "לענות", - "keyboard_shortcuts.requests": "to open follow requests list", + "keyboard_shortcuts.requests": "פתיחת רשימת בקשות מעקב", "keyboard_shortcuts.search": "להתמקד בחלון החיפוש", - "keyboard_shortcuts.spoilers": "to show/hide CW field", + "keyboard_shortcuts.spoilers": "הצגת/הסתרת שדה אזהרת תוכן (CW)", "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.toggle_hidden": "הצגת/הסתרת טקסט מוסתר מאחורי אזהרת תוכן", + "keyboard_shortcuts.toggle_sensitivity": "הצגת/הסתרת מדיה", "keyboard_shortcuts.toot": "להתחיל חיצרוץ חדש", "keyboard_shortcuts.unfocus": "לצאת מתיבת חיבור/חיפוש", "keyboard_shortcuts.up": "לנוע במעלה הרשימה", "lightbox.close": "סגירה", - "lightbox.compress": "Compress image view box", - "lightbox.expand": "Expand image view box", + "lightbox.compress": "דחיסת קופסת צפייה בתמונה", + "lightbox.expand": "הרחבת קופסת צפייה בתמונה", "lightbox.next": "הלאה", "lightbox.previous": "הקודם", "lists.account.add": "הוסף לרשימה", "lists.account.remove": "הסר מרשימה", - "lists.delete": "Delete list", - "lists.edit": "Edit list", - "lists.edit.submit": "Change title", + "lists.delete": "מחיקת רשימה", + "lists.edit": "עריכת רשימה", + "lists.edit.submit": "שנה/י כותרת", "lists.new.create": "הוספת רשימה", "lists.new.title_placeholder": "כותרת הרשימה החדשה", "lists.replies_policy.followed": "משתמשים שאני עוקב אחריהם", @@ -277,7 +277,7 @@ "lists.replies_policy.title": "הצג תגובות ל:", "lists.search": "חיפוש בין אנשים שאני עוקב\\ת אחריהם", "lists.subheading": "הרשימות שלך", - "load_pending": "{count, plural, one {# new item} other {# new items}}", + "load_pending": "{count, plural, one {# פריט חדש} other {# פריטים חדשים}}", "loading_indicator.label": "טוען...", "media_gallery.toggle_visible": "נראה\\בלתי נראה", "missing_indicator.label": "לא נמצא", @@ -285,146 +285,147 @@ "mute_modal.duration": "משך הזמן", "mute_modal.hide_notifications": "להסתיר הודעות מחשבון זה?", "mute_modal.indefinite": "ללא תאריך סיום", - "navigation_bar.apps": "Mobile apps", + "navigation_bar.apps": "יישומונים לנייד", "navigation_bar.blocks": "חסימות", - "navigation_bar.bookmarks": "Bookmarks", + "navigation_bar.bookmarks": "סימניות", "navigation_bar.community_timeline": "ציר זמן מקומי", "navigation_bar.compose": "Compose new toot", - "navigation_bar.discover": "Discover", + "navigation_bar.direct": "הודעות ישירות", + "navigation_bar.discover": "גלה", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "עריכת פרופיל", - "navigation_bar.explore": "Explore", + "navigation_bar.explore": "חקור", "navigation_bar.favourites": "חיבובים", - "navigation_bar.filters": "Muted words", + "navigation_bar.filters": "מילים מושתקות", "navigation_bar.follow_requests": "בקשות מעקב", - "navigation_bar.follows_and_followers": "Follows and followers", + "navigation_bar.follows_and_followers": "נעקבים ועוקבים", "navigation_bar.info": "מידע נוסף", "navigation_bar.keyboard_shortcuts": "קיצורי מקלדת", - "navigation_bar.lists": "Lists", + "navigation_bar.lists": "רשימות", "navigation_bar.logout": "יציאה", "navigation_bar.mutes": "השתקות", - "navigation_bar.personal": "Personal", + "navigation_bar.personal": "אישי", "navigation_bar.pins": "חיצרוצים מקובעים", "navigation_bar.preferences": "העדפות", "navigation_bar.public_timeline": "ציר זמן בין-קהילתי", - "navigation_bar.security": "Security", - "notification.admin.sign_up": "{name} signed up", + "navigation_bar.security": "בטיחות", + "notification.admin.sign_up": "{name} נרשמו", "notification.favourite": "חצרוצך חובב על ידי {name}", "notification.follow": "{name} במעקב אחרייך", - "notification.follow_request": "{name} has requested to follow you", + "notification.follow_request": "{name} ביקשו לעקוב אחריך", "notification.mention": "אוזכרת על ידי {name}", - "notification.own_poll": "Your poll has ended", - "notification.poll": "A poll you have voted in has ended", + "notification.own_poll": "הסקר שלך הסתיים", + "notification.poll": "סקר שהצבעת בו הסתיים", "notification.reblog": "חצרוצך הודהד על ידי {name}", - "notification.status": "{name} just posted", + "notification.status": "{name} הרגע פרסמו", "notification.update": "{name} ערכו פוסט", "notifications.clear": "הסרת התראות", "notifications.clear_confirmation": "להסיר את כל ההתראות? בטוח?", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "הרשמות חדשות:", "notifications.column_settings.alert": "התראות לשולחן העבודה", "notifications.column_settings.favourite": "מחובבים:", - "notifications.column_settings.filter_bar.advanced": "Display all categories", - "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show_bar": "Show filter bar", + "notifications.column_settings.filter_bar.advanced": "הצג את כל הקטגוריות", + "notifications.column_settings.filter_bar.category": "שורת סינון מהיר", + "notifications.column_settings.filter_bar.show_bar": "הצג שורת סינון", "notifications.column_settings.follow": "עוקבים חדשים:", - "notifications.column_settings.follow_request": "New follow requests:", + "notifications.column_settings.follow_request": "בקשות מעקב חדשות:", "notifications.column_settings.mention": "פניות:", - "notifications.column_settings.poll": "Poll results:", + "notifications.column_settings.poll": "תוצאות סקר:", "notifications.column_settings.push": "הודעות בדחיפה", "notifications.column_settings.reblog": "הדהודים:", "notifications.column_settings.show": "הצגה בטור", "notifications.column_settings.sound": "שמע מופעל", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_notifications.category": "Unread notifications", - "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.unread_notifications.category": "התראות שלא נקראו", + "notifications.column_settings.unread_notifications.highlight": "הבלט התראות שלא נקראו", "notifications.column_settings.update": "שינויים:", - "notifications.filter.all": "All", - "notifications.filter.boosts": "Boosts", - "notifications.filter.favourites": "Favourites", - "notifications.filter.follows": "Follows", - "notifications.filter.mentions": "Mentions", - "notifications.filter.polls": "Poll results", - "notifications.filter.statuses": "Updates from people you follow", - "notifications.grant_permission": "Grant permission.", - "notifications.group": "{count} notifications", - "notifications.mark_as_read": "Mark every notification as read", - "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", - "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", - "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.", - "notifications_permission_banner.enable": "Enable desktop notifications", - "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", - "notifications_permission_banner.title": "Never miss a thing", - "picture_in_picture.restore": "Put it back", - "poll.closed": "Closed", - "poll.refresh": "Refresh", - "poll.total_people": "{count, plural, one {# person} other {# people}}", - "poll.total_votes": "{count, plural, one {# vote} other {# votes}}", - "poll.vote": "Vote", - "poll.voted": "You voted for this answer", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", - "poll_button.add_poll": "Add a poll", - "poll_button.remove_poll": "Remove poll", + "notifications.filter.all": "הכל", + "notifications.filter.boosts": "הדהודים", + "notifications.filter.favourites": "חיבובים", + "notifications.filter.follows": "נעקבים", + "notifications.filter.mentions": "אזכורים", + "notifications.filter.polls": "תוצאות סקר", + "notifications.filter.statuses": "עדכונים מאנשים במעקב", + "notifications.grant_permission": "מתן הרשאה.", + "notifications.group": "{count} התראות", + "notifications.mark_as_read": "סימון כל ההודעות כנקראו", + "notifications.permission_denied": "לא ניתן להציג התראות מסך כיוון כיוון שהרשאות דפדפן נשללו בעבר", + "notifications.permission_denied_alert": "לא ניתן לאפשר נוטיפיקציות מסך שכן הדפדפן סורב הרשאה בעבר", + "notifications.permission_required": "לא ניתן לאפשר נוטיפיקציות מסך כיוון שהרשאה דרושה לא ניתנה.", + "notifications_permission_banner.enable": "לאפשר נוטיפיקציות מסך", + "notifications_permission_banner.how_to_control": "כדי לקבל הודעות גם כאשר מסטודון סגור יש לאפשר נוטיפיקציות מסך. ניתן לשלוט בדיוק איזה סוג של אינטראקציות יביא לנוטיפיקציות מסך דרך כפתור ה- {icon} מרגע שהן מאופשרות.", + "notifications_permission_banner.title": "לעולם אל תחמיץ דבר", + "picture_in_picture.restore": "החזירי למקומו", + "poll.closed": "סגור", + "poll.refresh": "רענון", + "poll.total_people": "{count, plural, one {# איש/אישה} other {# אנשים}}", + "poll.total_votes": "{count, plural, one {# קול} other {# קולות}}", + "poll.vote": "קול", + "poll.voted": "הצבעת לתשובה זו", + "poll.votes": "{votes, plural, one {# קול} other {# קולות}}", + "poll_button.add_poll": "הוספת סקר", + "poll_button.remove_poll": "הסרת סקר", "privacy.change": "שינוי פרטיות ההודעה", "privacy.direct.long": "הצג רק למי שהודעה זו פונה אליו", - "privacy.direct.short": "Direct", + "privacy.direct.short": "אנשים מוזכרים בלבד", "privacy.private.long": "הצג לעוקבים בלבד", - "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all", + "privacy.private.short": "עוקבים בלבד", + "privacy.public.long": "גלוי לכל", "privacy.public.short": "פומבי", - "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", + "privacy.unlisted.long": "גלוי לכל, אבל מוסתר מאמצעי גילוי", "privacy.unlisted.short": "לא לפיד הכללי", - "refresh": "Refresh", - "regeneration_indicator.label": "Loading…", - "regeneration_indicator.sublabel": "Your home feed is being prepared!", - "relative_time.days": "{number}d", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", - "relative_time.hours": "{number}h", + "refresh": "רענון", + "regeneration_indicator.label": "טוען…", + "regeneration_indicator.sublabel": "פיד הבית שלך בהכנה!", + "relative_time.days": "{number} ימים", + "relative_time.full.days": "לפני {number, plural, one {# יום} other {# ימים}}", + "relative_time.full.hours": "לפני {number, plural, one {# שעה} other {# שעות}}", + "relative_time.full.just_now": "ממש עכשיו", + "relative_time.full.minutes": "לפני {number, plural, one {# דקה} other {# דקות}}", + "relative_time.full.seconds": "לפני {number, plural, one {# שניה} other {# שניות}}", + "relative_time.hours": "{number} שעות", "relative_time.just_now": "כרגע", - "relative_time.minutes": "{number}m", - "relative_time.seconds": "{number}s", - "relative_time.today": "today", + "relative_time.minutes": "{number} דקות", + "relative_time.seconds": "{number} שניות", + "relative_time.today": "היום", "reply_indicator.cancel": "ביטול", - "report.block": "Block", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", - "report.categories.other": "Other", - "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", - "report.category.subtitle": "Choose the best match", - "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", - "report.category.title_status": "post", - "report.close": "Done", - "report.comment.title": "Is there anything else you think we should know?", - "report.forward": "Forward to {target}", - "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", - "report.mute": "Mute", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.block": "לחסום", + "report.block_explanation": "לא ניתן יהיה לראות את חצרוציהם. הם לא יוכלו לראות את חצרוציך או לעקוב אחריך. הם יוכלו לדעת שהם חסומים.", + "report.categories.other": "אחר", + "report.categories.spam": "ספאם", + "report.categories.violation": "התוכן מפר אחד או יותר מחוקי השרת", + "report.category.subtitle": "בחר/י את המתאים ביותר", + "report.category.title": "ספר/י לנו מה קורה עם ה-{type} הזה", + "report.category.title_account": "פרופיל", + "report.category.title_status": "חצרוץ", + "report.close": "בוצע", + "report.comment.title": "האם יש דבר נוסף שלדעתך חשוב שנדע?", + "report.forward": "קדם ל-{target}", + "report.forward_hint": "חשבון זה הוא משרת אחר. האם לשלוח בנוסף עותק אנונימי לשם?", + "report.mute": "להשתיק", + "report.mute_explanation": "לא ניתן יהיה לראות את חצרוציהם. הם עדיין יוכלו לעקוב אחריך ולראות את חצרוציך ולא ידעו שהם מושתקים.", + "report.next": "הבא", "report.placeholder": "הערות נוספות", - "report.reasons.dislike": "I don't like it", - "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", - "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", - "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", - "report.reasons.violation": "It violates server rules", - "report.reasons.violation_description": "You are aware that it breaks specific rules", - "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", - "report.statuses.subtitle": "Select all that apply", - "report.statuses.title": "Are there any posts that back up this report?", + "report.reasons.dislike": "אני לא אוהב את זה", + "report.reasons.dislike_description": "זה לא משהו שתרצה/י לראות", + "report.reasons.other": "זה משהו אחר", + "report.reasons.other_description": "הבעיה לא מתאימה לקטגוריות אחרות", + "report.reasons.spam": "זה ספאם", + "report.reasons.spam_description": "קישורים מרושעים, התייחסות מזוייפת או תגובות חוזרות", + "report.reasons.violation": "מפר את חוקי השרת", + "report.reasons.violation_description": "את/ה מודע/ת לכך שזה מפר חוקים ספציפיים", + "report.rules.subtitle": "בחר/י את כל המתאימים", + "report.rules.title": "אילו חוקים מופרים?", + "report.statuses.subtitle": "בחר/י את כל המתאימים", + "report.statuses.title": "האם ישנם חצרוצים התומכים בדיווח זה?", "report.submit": "שליחה", - "report.target": "דיווח", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", - "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", - "report.unfollow": "Unfollow @{name}", - "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report.target": "דיווח על {target}", + "report.thanks.take_action": "הנה כמה אפשרויות לשליטה בתצוגת מסטודון:", + "report.thanks.take_action_actionable": "בזמן שאנו בוחנות את הדיווח, ניתן לפעול כנגד @{name}:", + "report.thanks.title": "לא מעוניין/ת לראות את זה?", + "report.thanks.title_actionable": "תודה על הדיווח, נבדוק את העניין.", + "report.unfollow": "הפסיקו לעקוב אחרי @{name}", + "report.unfollow_explanation": "אתם עוקבים אחרי החשבון הזה. כדי להפסיק לראות את הפרסומים שלו בפיד הבית שלכם, הפסיקו לעקוב אחריהם.", "search.placeholder": "חיפוש", "search_popout.search_format": "מבנה חיפוש מתקדם", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -432,112 +433,112 @@ "search_popout.tips.status": "status", "search_popout.tips.text": "טקסט פשוט מחזיר כינויים, שמות משתמש והאשתגים", "search_popout.tips.user": "משתמש(ת)", - "search_results.accounts": "People", - "search_results.all": "All", - "search_results.hashtags": "Hashtags", - "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.accounts": "אנשים", + "search_results.all": "כל התוצאות", + "search_results.hashtags": "האשתגיות", + "search_results.nothing_found": "לא נמצא דבר עבור תנאי חיפוש אלה", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.total": "{count, number} {count, plural, one {תוצאה} other {תוצאות}}", - "status.admin_account": "Open moderation interface for @{name}", + "status.admin_account": "פתח/י ממשק ניהול עבור @{name}", "status.admin_status": "Open this status in the moderation interface", - "status.block": "Block @{name}", - "status.bookmark": "Bookmark", - "status.cancel_reblog_private": "Unboost", + "status.block": "חסימת @{name}", + "status.bookmark": "סימניה", + "status.cancel_reblog_private": "הסרת הדהוד", "status.cannot_reblog": "לא ניתן להדהד הודעה זו", "status.copy": "Copy link to status", "status.delete": "מחיקה", - "status.detailed_status": "Detailed conversation view", + "status.detailed_status": "תצוגת שיחה מפורטת", "status.direct": "הודעה ישירה ל@{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "עריכה", + "status.edited": "נערך ב{date}", + "status.edited_x_times": "נערך {count, plural, one {פעם {count}} other {{count} פעמים}}", "status.embed": "הטמעה", "status.favourite": "חיבוב", - "status.filtered": "Filtered", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.filtered": "סונן", + "status.history.created": "{name} יצר/ה {date}", + "status.history.edited": "{name} ערך/ה {date}", "status.load_more": "עוד", "status.media_hidden": "מדיה מוסתרת", "status.mention": "פניה אל @{name}", "status.more": "עוד", - "status.mute": "Mute @{name}", + "status.mute": "להשתיק את @{name}", "status.mute_conversation": "השתקת שיחה", "status.open": "הרחבת הודעה", "status.pin": "לקבע באודות", "status.pinned": "Pinned toot", - "status.read_more": "Read more", + "status.read_more": "לקרוא עוד", "status.reblog": "הדהוד", - "status.reblog_private": "Boost with original visibility", + "status.reblog_private": "להדהד ברמת הנראות המקורית", "status.reblogged_by": "הודהד על ידי {name}", "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", - "status.redraft": "Delete & re-draft", - "status.remove_bookmark": "Remove bookmark", + "status.redraft": "מחיקה ועריכה מחדש", + "status.remove_bookmark": "הסרת סימניה", "status.reply": "תגובה", "status.replyAll": "תגובה לכולם", "status.report": "דיווח על @{name}", "status.sensitive_warning": "תוכן רגיש", "status.share": "שיתוף", "status.show_less": "הראה פחות", - "status.show_less_all": "Show less for all", + "status.show_less_all": "להציג פחות מהכל", "status.show_more": "הראה יותר", - "status.show_more_all": "Show more for all", - "status.show_thread": "Show thread", - "status.uncached_media_warning": "Not available", + "status.show_more_all": "להציג יותר מהכל", + "status.show_thread": "להציג סיב", + "status.uncached_media_warning": "לא זמין", "status.unmute_conversation": "הסרת השתקת שיחה", "status.unpin": "לשחרר מקיבוע באודות", - "suggestions.dismiss": "Dismiss suggestion", - "suggestions.header": "You might be interested in…", + "suggestions.dismiss": "להתעלם מהצעה", + "suggestions.header": "ייתכן שזה יעניין אותך…", "tabs_bar.federated_timeline": "ציר זמן בין-קהילתי", "tabs_bar.home": "בבית", "tabs_bar.local_timeline": "ציר זמן מקומי", "tabs_bar.notifications": "התראות", - "tabs_bar.search": "Search", - "time_remaining.days": "{number, plural, one {# day} other {# days}} left", - "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", - "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", - "time_remaining.moments": "Moments remaining", - "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left", - "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.", - "timeline_hint.resources.followers": "Followers", - "timeline_hint.resources.follows": "Follows", + "tabs_bar.search": "חיפוש", + "time_remaining.days": "נותרו {number, plural, one {# יום} other {# ימים}}", + "time_remaining.hours": "נותרו {number, plural, one {# שעה} other {# שעות}}", + "time_remaining.minutes": "נותרו {number, plural, one {# דקה} other {# דקות}}", + "time_remaining.moments": "רגעים נותרו", + "time_remaining.seconds": "נותרו {number, plural, one {# שניה} other {# שניות}}", + "timeline_hint.remote_resource_not_displayed": "{resource} משרתים אחרים לא מוצגים.", + "timeline_hint.resources.followers": "עוקבים", + "timeline_hint.resources.follows": "נעקבים", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", - "trends.trending_now": "Trending now", + "trends.counter_by_accounts": "{count, plural, one {{counter} אחד/ת מדבר/ת} other {{counter} אנשים מדברים}}", + "trends.trending_now": "נושאים חמים", "ui.beforeunload": "הטיוטא תאבד אם תעזבו את מסטודון.", - "units.short.billion": "{count}B", - "units.short.million": "{count}M", - "units.short.thousand": "{count}K", + "units.short.billion": "{count} מליארד", + "units.short.million": "{count} מליון", + "units.short.thousand": "{count} אלפים", "upload_area.title": "ניתן להעלות על ידי Drag & drop", "upload_button.label": "הוספת מדיה", - "upload_error.limit": "File upload limit exceeded.", - "upload_error.poll": "File upload not allowed with polls.", - "upload_form.audio_description": "Describe for people with hearing loss", + "upload_error.limit": "קובץ להעלאה חורג מנפח מותר.", + "upload_error.poll": "לא ניתן להעלות קובץ עם סקר.", + "upload_form.audio_description": "תאר/י עבור לקויי שמיעה", "upload_form.description": "תיאור לכבדי ראיה", - "upload_form.description_missing": "No description added", - "upload_form.edit": "Edit", - "upload_form.thumbnail": "Change thumbnail", + "upload_form.description_missing": "לא הוסף תיאור", + "upload_form.edit": "עריכה", + "upload_form.thumbnail": "שנה/י תמונה ממוזערת", "upload_form.undo": "ביטול", - "upload_form.video_description": "Describe for people with hearing loss or visual impairment", - "upload_modal.analyzing_picture": "Analyzing picture…", - "upload_modal.apply": "Apply", - "upload_modal.applying": "Applying…", - "upload_modal.choose_image": "Choose image", - "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog", - "upload_modal.detect_text": "Detect text from picture", - "upload_modal.edit_media": "Edit media", - "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", - "upload_modal.preparing_ocr": "Preparing OCR…", - "upload_modal.preview_label": "Preview ({ratio})", + "upload_form.video_description": "תאר/י עבור לקויי שמיעה ולקויי ראייה", + "upload_modal.analyzing_picture": "מנתח תמונה…", + "upload_modal.apply": "החל", + "upload_modal.applying": "מחיל…", + "upload_modal.choose_image": "בחר/י תמונה", + "upload_modal.description_placeholder": "דג סקרן שט בים מאוכזב ולפתע מצא חברה", + "upload_modal.detect_text": "זהה טקסט מתמונה", + "upload_modal.edit_media": "עריכת מדיה", + "upload_modal.hint": "הקליקי או גררי את המעגל על גבי התצוגה המקדימה על מנת לבחור בנקודת המוקד שתראה תמיד בכל התמונות הממוזערות.", + "upload_modal.preparing_ocr": "מכין OCR…", + "upload_modal.preview_label": "תצוגה ({ratio})", "upload_progress.label": "עולה...", "video.close": "סגירת וידאו", - "video.download": "Download file", + "video.download": "הורדת קובץ", "video.exit_fullscreen": "יציאה ממסך מלא", "video.expand": "להרחיב וידאו", - "video.fullscreen": "Full screen", + "video.fullscreen": "מסך מלא", "video.hide": "להסתיר וידאו", "video.mute": "השתקת צליל", - "video.pause": "Pause", + "video.pause": "השהיה", "video.play": "ניגון", "video.unmute": "החזרת צליל" } diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index d208cf51e..3ee12c30d 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -70,7 +70,7 @@ "column.blocks": "ब्लॉक्ड यूज़र्स", "column.bookmarks": "पुस्तकचिह्न:", "column.community": "लोकल टाइम्लाइन", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "प्रोफाइल्स खोजें", "column.domain_blocks": "छुपे डोमेन्स", "column.favourites": "पसंदीदा", @@ -166,7 +166,7 @@ "empty_column.blocks": "आप अभी तक किसी भी यूजर के द्वारा ब्लॉक्ड नहीं हो।", "empty_column.bookmarked_statuses": "आपके पास अभी तक कोई बुकमार्क नहीं है। जब आप एक बुकमार्क करते हैं, तो यह यहां दिखाई देगा।", "empty_column.community": "लोकल टाइम्लाइन खाली है, कुछ देखने के लिये सार्वजनिक रूप से कुछ लिखें!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "अभी तक कोई छुपा हुआ डोमेन नहीं है।", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "आपके पास अभी कोई भी चहिता टूट नहीं है. जब आप किसी टूट को पसंद (स्टार) करेंगे, तब वो यहाँ दिखेगा।", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "बढ़ावा देने के लिए", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "कंपोज़ टेक्स्ट-एरिया पर ध्यान केंद्रित करने के लिए", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "विवरण", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "सूची में शामिल करने के लिए", "keyboard_shortcuts.enter": "स्टेटस खोलने के लिए", "keyboard_shortcuts.favourite": "पसंदीदा के लिए", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "पुस्तकचिह्न:", "navigation_bar.community_timeline": "लोकल टाइम्लाइन", "navigation_bar.compose": "नया टूट् लिखें", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "खोजें", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "प्रोफ़ाइल संपादित करें", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index 16434ea46..f0c7954a3 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -70,7 +70,7 @@ "column.blocks": "Blokirani korisnici", "column.bookmarks": "Knjižne oznake", "column.community": "Lokalna vremenska crta", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Pregledavanje profila", "column.domain_blocks": "Blokirane domene", "column.favourites": "Favoriti", @@ -166,7 +166,7 @@ "empty_column.blocks": "Još niste blokirali nikoga.", "empty_column.bookmarked_statuses": "Još nemaš niti jedan označeni toot. Kada označiš jedan, prikazad će se ovdje.", "empty_column.community": "Lokalna vremenska crta je prazna. Napišite nešto javno da biste pokrenuli stvari!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Još nema blokiranih domena.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "za boostanje", "keyboard_shortcuts.column": "za fokusiranje na toot u jednom od stupaca", "keyboard_shortcuts.compose": "za fokusiranje na tekstualni okvir za stvaranje", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Opis", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "za pomak dolje na listi", "keyboard_shortcuts.enter": "za otvaranje toota", "keyboard_shortcuts.favourite": "za označavanje favoritom", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Lokalna vremenska crta", "navigation_bar.compose": "Compose new toot", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Istraživanje", "navigation_bar.domain_blocks": "Blokirane domene", "navigation_bar.edit_profile": "Uredi profil", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index ccf0dd3fd..4986cd199 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -70,7 +70,7 @@ "column.blocks": "Letiltott felhasználók", "column.bookmarks": "Könyvjelzők", "column.community": "Helyi idővonal", - "column.conversations": "Beszélgetések", + "column.direct": "Közvetlen üzenetek", "column.directory": "Profilok böngészése", "column.domain_blocks": "Rejtett domainek", "column.favourites": "Kedvencek", @@ -86,7 +86,7 @@ "column_header.moveLeft_settings": "Oszlop elmozdítása balra", "column_header.moveRight_settings": "Oszlop elmozdítása jobbra", "column_header.pin": "Kitűzés", - "column_header.show_settings": "Beállítások mutatása", + "column_header.show_settings": "Beállítások megjelenítése", "column_header.unpin": "Kitűzés eltávolítása", "column_subheading.settings": "Beállítások", "community.column_settings.local_only": "Csak helyi", @@ -166,7 +166,7 @@ "empty_column.blocks": "Még senkit sem tiltottál le.", "empty_column.bookmarked_statuses": "Még nincs egyetlen könyvjelzőzött bejegyzésed sem. Ha könyvjelzőzöl egyet, itt fog megjelenni.", "empty_column.community": "A helyi idővonal üres. Tégy közzé valamit nyilvánosan, hogy elindítsd az eseményeket!", - "empty_column.conversations": "Ha olyan bejegyzést küldesz vagy fogadsz, melyet csak az abban megemlítettek látnak, itt fog megjelenni.", + "empty_column.direct": "Még nincs egy közvetlen üzeneted sem. Ha küldesz vagy kapsz egyet, itt fog megjelenni.", "empty_column.domain_blocks": "Még nem rejtettél el egyetlen domaint sem.", "empty_column.explore_statuses": "Jelenleg semmi sem felkapott. Nézz vissza később!", "empty_column.favourited_statuses": "Még nincs egyetlen kedvenc bejegyzésed sem. Ha kedvencnek jelölsz egyet, itt fog megjelenni.", @@ -219,9 +219,9 @@ "hashtag.column_settings.tag_toggle": "Új címkék felvétele ehhez az oszlophoz", "home.column_settings.basic": "Alapvető", "home.column_settings.show_reblogs": "Megtolások mutatása", - "home.column_settings.show_replies": "Válaszok mutatása", + "home.column_settings.show_replies": "Válaszok megjelenítése", "home.hide_announcements": "Közlemények elrejtése", - "home.show_announcements": "Közlemények mutatása", + "home.show_announcements": "Közlemények megjelenítése", "intervals.full.days": "{number, plural, one {# nap} other {# nap}}", "intervals.full.hours": "{number, plural, one {# óra} other {# óra}}", "intervals.full.minutes": "{number, plural, one {# perc} other {# perc}}", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Bejegyzés megtolása", "keyboard_shortcuts.column": "Fókuszálás egy oszlopra", "keyboard_shortcuts.compose": "fókuszálás a szerkesztési szövegdobozra", - "keyboard_shortcuts.conversations": "beszélgetések megnyitása", "keyboard_shortcuts.description": "Leírás", + "keyboard_shortcuts.direct": "közvetlen üzenetek megnyitása", "keyboard_shortcuts.down": "lefele navigálás a listában", "keyboard_shortcuts.enter": "Bejegyzés megnyitása", "keyboard_shortcuts.favourite": "Bejegyzés kedvencnek jelölése", @@ -252,10 +252,10 @@ "keyboard_shortcuts.reply": "Válasz bejegyzésre", "keyboard_shortcuts.requests": "követési kérések listájának megnyitása", "keyboard_shortcuts.search": "fókuszálás a keresőre", - "keyboard_shortcuts.spoilers": "CW mező mutatása/elrejtése", + "keyboard_shortcuts.spoilers": "Tartalmi figyelmeztetés mező megjelenítése/elrejtése", "keyboard_shortcuts.start": "\"Első lépések\" megnyitása", - "keyboard_shortcuts.toggle_hidden": "tartalmi figyelmeztetéssel ellátott szöveg mutatása/elrejtése", - "keyboard_shortcuts.toggle_sensitivity": "média mutatása/elrejtése", + "keyboard_shortcuts.toggle_hidden": "Tartalmi figyelmeztetéssel ellátott szöveg megjelenítése/elrejtése", + "keyboard_shortcuts.toggle_sensitivity": "Média megjelenítése/elrejtése", "keyboard_shortcuts.toot": "Új bejegyzés írása", "keyboard_shortcuts.unfocus": "Szerkesztés/keresés fókuszból való kivétele", "keyboard_shortcuts.up": "felfelé mozdítás a listában", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Könyvjelzők", "navigation_bar.community_timeline": "Helyi idővonal", "navigation_bar.compose": "Új bejegyzés írása", + "navigation_bar.direct": "Közvetlen üzenetek", "navigation_bar.discover": "Felfedezés", "navigation_bar.domain_blocks": "Rejtett domainek", "navigation_bar.edit_profile": "Profil szerkesztése", @@ -323,7 +324,7 @@ "notifications.column_settings.admin.sign_up": "Új regisztrálók:", "notifications.column_settings.alert": "Asztali értesítések", "notifications.column_settings.favourite": "Kedvencek:", - "notifications.column_settings.filter_bar.advanced": "Minden kategória mutatása", + "notifications.column_settings.filter_bar.advanced": "Minden kategória megjelenítése", "notifications.column_settings.filter_bar.category": "Gyorskereső mező", "notifications.column_settings.filter_bar.show_bar": "Szűrősáv mutatása", "notifications.column_settings.follow": "Új követők:", @@ -366,7 +367,7 @@ "poll_button.remove_poll": "Szavazás törlése", "privacy.change": "Bejegyzés láthatóságának módosítása", "privacy.direct.long": "Csak a megemlített felhasználóknak látható", - "privacy.direct.short": "Csak a megemlítettek", + "privacy.direct.short": "Csak megemlítetteknek", "privacy.private.long": "Csak követőknek látható", "privacy.private.short": "Csak követők", "privacy.public.long": "Mindenki számára látható", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index c7ba3b852..1bce7a771 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -70,7 +70,7 @@ "column.blocks": "Արգելափակուած օգտատէրեր", "column.bookmarks": "Էջանիշեր", "column.community": "Տեղական հոսք", - "column.conversations": "Զրոյցներ", + "column.direct": "Direct messages", "column.directory": "Զննել անձնական էջերը", "column.domain_blocks": "Թաքցուած տիրոյթները", "column.favourites": "Հաւանածներ", @@ -166,7 +166,7 @@ "empty_column.blocks": "Դու դեռ ոչ մէկի չես արգելափակել։", "empty_column.bookmarked_statuses": "Դու դեռ չունես որեւէ էջանշուած գրառում։ Երբ էջանշես, դրանք կը երեւան այստեղ։", "empty_column.community": "Տեղական հոսքը դատարկ է։ Հրապարակային մի բան գրի՛ր շարժիչը գործարկելու համար։", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Թաքցուած տիրոյթներ դեռ չկան։", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Դու դեռ չունես որեւէ հաւանած գրառում։ Երբ հաւանես, դրանք կերեւան այստեղ։", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "տարածելու համար", "keyboard_shortcuts.column": "սիւներից մէկի վրայ սեւեռուելու համար", "keyboard_shortcuts.compose": "շարադրման տիրոյթին սեւեռուելու համար", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Նկարագրութիւն", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "ցանկով ներքեւ շարժուելու համար", "keyboard_shortcuts.enter": "Գրառումը բացելու համար", "keyboard_shortcuts.favourite": "հաւանելու համար", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Էջանիշեր", "navigation_bar.community_timeline": "Տեղական հոսք", "navigation_bar.compose": "Ստեղծել նոր գրառում", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Բացայայտել", "navigation_bar.domain_blocks": "Թաքցուած տիրոյթներ", "navigation_bar.edit_profile": "Խմբագրել անձնական էջը", @@ -366,7 +367,7 @@ "poll_button.remove_poll": "Հեռացնել հարցումը", "privacy.change": "Կարգաւորել գրառման գաղտնիութիւնը", "privacy.direct.long": "Կը տեսնեն միայն նշուած օգտատէրերը", - "privacy.direct.short": "Միայն նշածս մարդիկ", + "privacy.direct.short": "Direct", "privacy.private.long": "Կը տեսնեն միայն հետեւորդները", "privacy.private.short": "Միայն հետեւողները", "privacy.public.long": "Տեսանելի բոլորին", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index c093688e4..75b039177 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -70,7 +70,7 @@ "column.blocks": "Pengguna yang diblokir", "column.bookmarks": "Markah", "column.community": "Linimasa Lokal", - "column.conversations": "Percakapan", + "column.direct": "Pesan langsung", "column.directory": "Jelajahi profil", "column.domain_blocks": "Topik tersembunyi", "column.favourites": "Favorit", @@ -166,7 +166,7 @@ "empty_column.blocks": "Anda belum memblokir siapapun.", "empty_column.bookmarked_statuses": "Anda belum memiliki toot termarkah. Saat Anda menandainya sebagai markah, ia akan muncul di sini.", "empty_column.community": "Linimasa lokal masih kosong. Tulis sesuatu secara publik dan buat roda berputar!", - "empty_column.conversations": "Saat Anda mengirim atau menerima kiriman yang hanya terlihat oleh orang yang disebutkan, itu akan muncul di sini.", + "empty_column.direct": "Anda belum memiliki pesan langsung. Ketika Anda mengirim atau menerimanya, maka akan muncul di sini.", "empty_column.domain_blocks": "Tidak ada topik tersembunyi.", "empty_column.explore_statuses": "Tidak ada yang sedang tren pada saat ini. Silakan mengecek lagi nanti!", "empty_column.favourited_statuses": "Anda belum memiliki toot favorit. Ketika Anda mengirim atau menerimanya, maka akan muncul di sini.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "untuk menyebarkan", "keyboard_shortcuts.column": "untuk fokus kepada sebuah status di sebuah kolom", "keyboard_shortcuts.compose": "untuk fokus ke area penulisan", - "keyboard_shortcuts.conversations": "untuk membuka kolom percakapan", "keyboard_shortcuts.description": "Deskripsi", + "keyboard_shortcuts.direct": "untuk membuka kolom pesan langsung", "keyboard_shortcuts.down": "untuk pindah ke bawah dalam sebuah daftar", "keyboard_shortcuts.enter": "untuk membuka status", "keyboard_shortcuts.favourite": "untuk memfavoritkan", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Markah", "navigation_bar.community_timeline": "Linimasa lokal", "navigation_bar.compose": "Tulis toot baru", + "navigation_bar.direct": "Pesan langsung", "navigation_bar.discover": "Temukan", "navigation_bar.domain_blocks": "Domain tersembunyi", "navigation_bar.edit_profile": "Ubah profil", @@ -366,7 +367,7 @@ "poll_button.remove_poll": "Hapus japat", "privacy.change": "Tentukan privasi status", "privacy.direct.long": "Kirim hanya ke pengguna yang disebut", - "privacy.direct.short": "Hanya orang yang saya sebut", + "privacy.direct.short": "Orang yang disebutkan saja", "privacy.private.long": "Kirim postingan hanya kepada pengikut", "privacy.private.short": "Pengikut saja", "privacy.public.long": "Terlihat oleh semua", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index d0ce09335..1752bda65 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -48,8 +48,8 @@ "account.unmute_notifications": "Desilencigez avizi de @{name}", "account.unmute_short": "Desilencigez", "account_note.placeholder": "Click to add a note", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Dia uzantoretenseso pos registro", + "admin.dashboard.monthly_retention": "Monata uzantoreteneso pos registro", "admin.dashboard.retention.average": "Averajo", "admin.dashboard.retention.cohort": "Registromonato", "admin.dashboard.retention.cohort_size": "Nova uzanti", @@ -68,116 +68,116 @@ "bundle_modal_error.message": "Nulo ne functionis dum chargar ca kompozaj.", "bundle_modal_error.retry": "Probez itere", "column.blocks": "Blokusita uzeri", - "column.bookmarks": "Bookmarks", + "column.bookmarks": "Libromarki", "column.community": "Lokala tempolineo", - "column.conversations": "Conversations", - "column.directory": "Browse profiles", + "column.direct": "Direta mesaji", + "column.directory": "Videz profili", "column.domain_blocks": "Hidden domains", "column.favourites": "Favorati", "column.follow_requests": "Demandi di sequado", "column.home": "Hemo", - "column.lists": "Lists", + "column.lists": "Listi", "column.mutes": "Celita uzeri", "column.notifications": "Savigi", "column.pins": "Pinned toot", "column.public": "Federata tempolineo", "column_back_button.label": "Retro", - "column_header.hide_settings": "Hide settings", - "column_header.moveLeft_settings": "Move column to the left", - "column_header.moveRight_settings": "Move column to the right", - "column_header.pin": "Pin", - "column_header.show_settings": "Show settings", - "column_header.unpin": "Unpin", - "column_subheading.settings": "Settings", - "community.column_settings.local_only": "Local only", + "column_header.hide_settings": "Celez ajusti", + "column_header.moveLeft_settings": "Movez kolumno a la sinistro", + "column_header.moveRight_settings": "Movez kolumno a la dextro", + "column_header.pin": "Pinglagez", + "column_header.show_settings": "Montrez ajusti", + "column_header.unpin": "Depinglagez", + "column_subheading.settings": "Ajusti", + "community.column_settings.local_only": "Lokala nur", "community.column_settings.media_only": "Media only", - "community.column_settings.remote_only": "Remote only", - "compose_form.direct_message_warning_learn_more": "Learn more", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "community.column_settings.remote_only": "Fora nur", + "compose_form.direct_message_warning_learn_more": "Lernez plu", + "compose_form.encryption_warning": "Posti di Mastodon ne intersequante chifrigesas. Ne partigez irga danjera informo che Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", - "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", - "compose_form.lock_disclaimer.lock": "locked", + "compose_form.lock_disclaimer": "Vua konto ne esas {locked}. Irgu povas sequar vu por vidar vua sequanto-nura posti.", + "compose_form.lock_disclaimer.lock": "klefagesas", "compose_form.placeholder": "Quo esas en tua spirito?", - "compose_form.poll.add_option": "Add a choice", - "compose_form.poll.duration": "Poll duration", - "compose_form.poll.option_placeholder": "Choice {number}", - "compose_form.poll.remove_option": "Remove this choice", - "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", - "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", + "compose_form.poll.add_option": "Insertez selekto", + "compose_form.poll.duration": "Votpostoduro", + "compose_form.poll.option_placeholder": "Selektato {number}", + "compose_form.poll.remove_option": "Efacez ca selektajo", + "compose_form.poll.switch_to_multiple": "Chanjez votposto por permisar multiselektaji", + "compose_form.poll.switch_to_single": "Chanjez votposto por permisar una selektajo", "compose_form.publish": "Siflar", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", - "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", - "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", - "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", + "compose_form.save_changes": "Sparez chanji", + "compose_form.sensitive.hide": "{count, plural,one {Markigez medii quale privata} other {Markigez medii quale privata}}", + "compose_form.sensitive.marked": "{count, plural,one {Medii markigesis quale privata} other {Medii markigesis quale privata}}", + "compose_form.sensitive.unmarked": "{count, plural,one {Medii ne markigesis quale privata} other {Medii ne markigesis quale privata}}", "compose_form.spoiler.marked": "Text is hidden behind warning", "compose_form.spoiler.unmarked": "Text is not hidden", "compose_form.spoiler_placeholder": "Averto di kontenajo", - "confirmation_modal.cancel": "Cancel", - "confirmations.block.block_and_report": "Block & Report", - "confirmations.block.confirm": "Block", - "confirmations.block.message": "Are you sure you want to block {name}?", - "confirmations.delete.confirm": "Delete", + "confirmation_modal.cancel": "Extingez", + "confirmations.block.block_and_report": "Restriktez e Raportigez", + "confirmations.block.confirm": "Restriktez", + "confirmations.block.message": "Ka vu certe volas restrikar {name}?", + "confirmations.delete.confirm": "Efacez", "confirmations.delete.message": "Are you sure you want to delete this status?", - "confirmations.delete_list.confirm": "Delete", - "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.delete_list.confirm": "Efacez", + "confirmations.delete_list.message": "Ka vu certe volas netempale efacar ca listo?", + "confirmations.discard_edit_media.confirm": "Efacez", + "confirmations.discard_edit_media.message": "Vu havas nesparita chanji di mediodeskript o prevido, vu volas jus efacar?", "confirmations.domain_block.confirm": "Hide entire domain", "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.", - "confirmations.logout.confirm": "Log out", - "confirmations.logout.message": "Are you sure you want to log out?", - "confirmations.mute.confirm": "Mute", - "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.", - "confirmations.mute.message": "Are you sure you want to mute {name}?", - "confirmations.redraft.confirm": "Delete & redraft", + "confirmations.logout.confirm": "Ekirez", + "confirmations.logout.message": "Ka tu certe volas ekirar?", + "confirmations.mute.confirm": "Silencigez", + "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": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.", - "confirmations.reply.confirm": "Reply", - "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", - "confirmations.unfollow.confirm": "Unfollow", - "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", - "conversation.delete": "Delete conversation", - "conversation.mark_as_read": "Mark as read", - "conversation.open": "View conversation", - "conversation.with": "With {names}", - "directory.federated": "From known fediverse", - "directory.local": "From {domain} only", - "directory.new_arrivals": "New arrivals", - "directory.recently_active": "Recently active", + "confirmations.reply.confirm": "Respondez", + "confirmations.reply.message": "Respondar nun remplos mesajo quon vu nun igas. Ka vu certe volas durar?", + "confirmations.unfollow.confirm": "Desequez", + "confirmations.unfollow.message": "Ka vu certe volas desequar {name}?", + "conversation.delete": "Efacez konverso", + "conversation.mark_as_read": "Markigez quale lektita", + "conversation.open": "Videz konverso", + "conversation.with": "Kun {names}", + "directory.federated": "De savita fediverso", + "directory.local": "De {domain} nur", + "directory.new_arrivals": "Nova venanti", + "directory.recently_active": "Recenta aktivo", "embed.instructions": "Embed this status on your website by copying the code below.", - "embed.preview": "Here is what it will look like:", - "emoji_button.activity": "Activity", - "emoji_button.custom": "Custom", - "emoji_button.flags": "Flags", - "emoji_button.food": "Food & Drink", + "embed.preview": "Co esas quon ol semblos tale:", + "emoji_button.activity": "Ago", + "emoji_button.custom": "Kustumizato", + "emoji_button.flags": "Flagi", + "emoji_button.food": "Manjajo & Drinkajo", "emoji_button.label": "Insertar emoji", - "emoji_button.nature": "Nature", - "emoji_button.not_found": "No matching emojis found", - "emoji_button.objects": "Objects", - "emoji_button.people": "People", - "emoji_button.recent": "Frequently used", - "emoji_button.search": "Search...", - "emoji_button.search_results": "Search results", - "emoji_button.symbols": "Symbols", - "emoji_button.travel": "Travel & Places", - "empty_column.account_suspended": "Account suspended", + "emoji_button.nature": "Naturo", + "emoji_button.not_found": "Nula tala parigata emojii", + "emoji_button.objects": "Kozi", + "emoji_button.people": "Personi", + "emoji_button.recent": "Ofta uzato", + "emoji_button.search": "Trovez...", + "emoji_button.search_results": "Trovuri", + "emoji_button.symbols": "Simboli", + "emoji_button.travel": "Vizito & Plasi", + "empty_column.account_suspended": "Konto restriktesis", "empty_column.account_timeline": "No toots here!", - "empty_column.account_unavailable": "Profile unavailable", - "empty_column.blocks": "You haven't blocked any users yet.", + "empty_column.account_unavailable": "Profilo esas nedisponebla", + "empty_column.blocks": "Vu ne restriktis irga uzanti til nun.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "La lokala tempolineo esas vakua. Skribez ulo publike por iniciar la agiveso!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "Vu ne havas irga direta mesaji til nun. Kande vu sendas o ganas, ol montresos hike.", "empty_column.domain_blocks": "There are no hidden domains yet.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "Nulo esas tendenca nun. Videz itere pose!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", - "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", - "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.", + "empty_column.follow_recommendations": "Semblas tale nula sugestato povas facesar por vu. Vu povas probar trovar personi quon vu forsan konocas o exploras tendenca hashtagi.", + "empty_column.follow_requests": "Vu ne havas irga sequodemandi til nun. Kande vu ganas talo, ol montresos hike.", "empty_column.hashtag": "Esas ankore nulo en ta gretovorto.", "empty_column.home": "Tu sequas ankore nulu. Vizitez {public} od uzez la serchilo por komencar e renkontrar altra uzeri.", - "empty_column.home.suggestions": "See some suggestions", + "empty_column.home.suggestions": "Videz ula sugestati", "empty_column.list": "There is nothing in this list yet.", - "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.", + "empty_column.lists": "Vu ne havas irga listi til nun. Kande vu kreas talo, ol montresos hike.", "empty_column.mutes": "You haven't muted any users yet.", "empty_column.notifications": "Tu havas ankore nula savigo. Komunikez kun altri por debutar la konverso.", "empty_column.public": "Esas nulo hike! Skribez ulo publike, o manuale sequez uzeri de altra instaluri por plenigar ol.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", + "keyboard_shortcuts.direct": "apertar kolumno di direta mesaji", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "to favourite", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Lokala tempolineo", "navigation_bar.compose": "Compose new toot", + "navigation_bar.direct": "Direta mesaji", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Modifikar profilo", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 053c18fcf..8e3212f8f 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -70,7 +70,7 @@ "column.blocks": "Útilokaðir notendur", "column.bookmarks": "Bókamerki", "column.community": "Staðvær tímalína", - "column.conversations": "Samtöl", + "column.direct": "Bein skilaboð", "column.directory": "Vafra notandasnið", "column.domain_blocks": "Útilokuð lén", "column.favourites": "Eftirlæti", @@ -166,7 +166,7 @@ "empty_column.blocks": "Þú hefur ekki ennþá útilokað neina notendur.", "empty_column.bookmarked_statuses": "Þú ert ekki ennþá með neinar bókamerktar færslur. Þegar þú bókamerkir færslu, mun það birtast hér.", "empty_column.community": "Staðværa tímalínan er tóm. Skrifaðu eitthvað opinberlega til að láta boltann fara að rúlla!", - "empty_column.conversations": "Þegar þú hefur sent eða móttekið færslu sem er aðeins sýnileg fólki sem nefnt er í henni þá birtist hún hér.", + "empty_column.direct": "Þú átt ennþá engin bein skilaboð. Þegar þú sendir eða tekur á móti slíkum skilaboðum, munu þau birtast hér.", "empty_column.domain_blocks": "Það eru ennþá engin útilokuð lén.", "empty_column.explore_statuses": "Ekkert er á uppleið í augnablikinu. Athugaðu aftur síðar!", "empty_column.favourited_statuses": "Þú ert ekki ennþá með neinar eftirlætisfærslur. Þegar þú setur færslu í eftirlæti, munu þau birtast hér.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Endurbirta færslu", "keyboard_shortcuts.column": "Setja virkni í dálk", "keyboard_shortcuts.compose": "Setja virkni á textainnsetningarreit", - "keyboard_shortcuts.conversations": "að opna samtalsdálka", "keyboard_shortcuts.description": "Lýsing", + "keyboard_shortcuts.direct": "að opna dálk með beinum skilaboðum", "keyboard_shortcuts.down": "Fara neðar í listanum", "keyboard_shortcuts.enter": "Opna færslu", "keyboard_shortcuts.favourite": "Eftirlætisfærsla", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Bókamerki", "navigation_bar.community_timeline": "Staðvær tímalína", "navigation_bar.compose": "Semja nýja færslu", + "navigation_bar.direct": "Bein skilaboð", "navigation_bar.discover": "Uppgötva", "navigation_bar.domain_blocks": "Útilokuð lén", "navigation_bar.edit_profile": "Breyta notandasniði", @@ -366,7 +367,7 @@ "poll_button.remove_poll": "Fjarlægja könnun", "privacy.change": "Aðlaga gagnaleynd færslu", "privacy.direct.long": "Senda einungis á notendur sem minnst er á", - "privacy.direct.short": "Aðeins fólk sem ég minnist á", + "privacy.direct.short": "Aðeins fólk sem minnst er á", "privacy.private.long": "Senda einungis á fylgjendur", "privacy.private.short": "Einungis fylgjendur", "privacy.public.long": "Sýnilegt fyrir alla", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 8e881e284..c5fb5c731 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -70,7 +70,7 @@ "column.blocks": "Utenti bloccati", "column.bookmarks": "Segnalibri", "column.community": "Timeline locale", - "column.conversations": "Conversazioni", + "column.direct": "Messaggi diretti", "column.directory": "Sfoglia profili", "column.domain_blocks": "Domini bloccati", "column.favourites": "Preferiti", @@ -166,7 +166,7 @@ "empty_column.blocks": "Non hai ancora bloccato alcun utente.", "empty_column.bookmarked_statuses": "Non hai ancora segnato alcun post. Quando ne segni uno, sarà mostrato qui.", "empty_column.community": "La timeline locale è vuota. Condividi qualcosa pubblicamente per dare inizio alla festa!", - "empty_column.conversations": "Quando invii o ricevi un post visibile solo alle persone citate in esso, apparirà qui.", + "empty_column.direct": "Non hai ancora nessun messaggio diretto. Quando ne manderai o riceverai qualcuno, apparirà qui.", "empty_column.domain_blocks": "Non vi sono domini nascosti.", "empty_column.explore_statuses": "Nulla è in tendenza in questo momento. Riprova più tardi!", "empty_column.favourited_statuses": "Non hai ancora segnato nessun post come apprezzato. Quando lo farai, comparirà qui.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Condividi il post", "keyboard_shortcuts.column": "per portare il focus su uno status in una delle colonne", "keyboard_shortcuts.compose": "per portare il focus nell'area di composizione", - "keyboard_shortcuts.conversations": "per aprire la colonna conversazioni", "keyboard_shortcuts.description": "Descrizione", + "keyboard_shortcuts.direct": "per aprire la colonna dei messaggi diretti", "keyboard_shortcuts.down": "Spostati in basso nella lista", "keyboard_shortcuts.enter": "Apri il post", "keyboard_shortcuts.favourite": "Apprezza post", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Segnalibri", "navigation_bar.community_timeline": "Timeline locale", "navigation_bar.compose": "Componi nuovo toot", + "navigation_bar.direct": "Messaggi diretti", "navigation_bar.discover": "Scopri", "navigation_bar.domain_blocks": "Domini nascosti", "navigation_bar.edit_profile": "Modifica profilo", @@ -366,7 +367,7 @@ "poll_button.remove_poll": "Rimuovi sondaggio", "privacy.change": "Modifica privacy del post", "privacy.direct.long": "Invia solo a utenti menzionati", - "privacy.direct.short": "Solo le persone che menziono", + "privacy.direct.short": "Solo persone citate", "privacy.private.long": "Invia solo ai follower", "privacy.private.short": "Solo i seguaci", "privacy.public.long": "Visibile a tutti", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 98f998f90..e2a6a318f 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -70,7 +70,7 @@ "column.blocks": "ブロックしたユーザー", "column.bookmarks": "ブックマーク", "column.community": "ローカルタイムライン", - "column.conversations": "会話", + "column.direct": "ダイレクトメッセージ", "column.directory": "ディレクトリ", "column.domain_blocks": "ブロックしたドメイン", "column.favourites": "お気に入り", @@ -166,7 +166,7 @@ "empty_column.blocks": "まだ誰もブロックしていません。", "empty_column.bookmarked_statuses": "まだ何もブックマーク登録していません。ブックマーク登録するとここに表示されます。", "empty_column.community": "ローカルタイムラインはまだ使われていません。何か書いてみましょう!", - "empty_column.conversations": "メンションした相手にだけ表示されるメッセージを一度でも送受信した場合、ここに表示されます。", + "empty_column.direct": "ダイレクトメッセージはまだありません。ダイレクトメッセージをやりとりすると、ここに表示されます。", "empty_column.domain_blocks": "ブロックしているドメインはありません。", "empty_column.explore_statuses": "まだ何もありません。後で確認してください。", "empty_column.favourited_statuses": "まだ何もお気に入り登録していません。お気に入り登録するとここに表示されます。", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "ブースト", "keyboard_shortcuts.column": "左からn番目のカラムの最新に移動", "keyboard_shortcuts.compose": "投稿の入力欄に移動", - "keyboard_shortcuts.conversations": "会話カラムを開く", "keyboard_shortcuts.description": "説明", + "keyboard_shortcuts.direct": "ダイレクトメッセージのカラムを開く", "keyboard_shortcuts.down": "カラム内一つ下に移動", "keyboard_shortcuts.enter": "投稿の詳細を表示", "keyboard_shortcuts.favourite": "お気に入り", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "ブックマーク", "navigation_bar.community_timeline": "ローカルタイムライン", "navigation_bar.compose": "投稿の新規作成", + "navigation_bar.direct": "ダイレクトメッセージ", "navigation_bar.discover": "見つける", "navigation_bar.domain_blocks": "ブロックしたドメイン", "navigation_bar.edit_profile": "プロフィールを編集", @@ -365,8 +366,8 @@ "poll_button.add_poll": "アンケートを追加", "poll_button.remove_poll": "アンケートを削除", "privacy.change": "公開範囲を変更", - "privacy.direct.long": "送信した相手のみ閲覧可", - "privacy.direct.short": "メンションした相手のみ", + "privacy.direct.long": "指定された相手のみ閲覧可", + "privacy.direct.short": "指定された相手のみ", "privacy.private.long": "フォロワーのみ閲覧可", "privacy.private.short": "フォロワーのみ", "privacy.public.long": "誰でも閲覧可", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index 6b5fa5c97..a9437bdb1 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -70,7 +70,7 @@ "column.blocks": "დაბლოკილი მომხმარებლები", "column.bookmarks": "Bookmarks", "column.community": "ლოკალური თაიმლაინი", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Browse profiles", "column.domain_blocks": "დამალული დომენები", "column.favourites": "ფავორიტები", @@ -166,7 +166,7 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "ლოკალური თაიმლაინი ცარიელია. დაწერეთ რაიმე ღიად ან ქენით რაიმე სხვა!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "There are no hidden domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "დასაბუსტად", "keyboard_shortcuts.column": "ერთ-ერთი სვეტში სტატუსზე ფოკუსირებისთვის", "keyboard_shortcuts.compose": "შედგენის ტექსტ-არეაზე ფოკუსირებისთვის", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "აღწერილობა", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "სიაში ქვემოთ გადასაადგილებლად", "keyboard_shortcuts.enter": "სტატუსის გასახსნელად", "keyboard_shortcuts.favourite": "ფავორიტად ქცევისთვის", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "ლოკალური თაიმლაინი", "navigation_bar.compose": "Compose new toot", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "აღმოაჩინე", "navigation_bar.domain_blocks": "დამალული დომენები", "navigation_bar.edit_profile": "შეცვალე პროფილი", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 48a1d6fa8..9d77262dd 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -70,7 +70,7 @@ "column.blocks": "Imiḍanen yettusḥebsen", "column.bookmarks": "Ticraḍ", "column.community": "Tasuddemt tadigant", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Inig deg imaɣnuten", "column.domain_blocks": "Taɣulin yeffren", "column.favourites": "Ismenyifen", @@ -166,7 +166,7 @@ "empty_column.blocks": "Ur tesḥebseḍ ula yiwen n umseqdac ar tura.", "empty_column.bookmarked_statuses": "Ulac tijewwaqin i terniḍ ɣer yismenyifen-ik ar tura. Ticki terniḍ yiwet, ad d-tettwasken da.", "empty_column.community": "Tasuddemt tazayezt tadigant n yisallen d tilemt. Aru ihi kra akken ad tt-teččareḍ!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Ulac kra n taɣult yettwaffren ar tura.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Ulac ula yiwet n tjewwaqt deg yismenyifen-ik ar tura. Ticki Tella-d yiwet, ad d-ban da.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "i beṭṭu tikelt-nniḍen", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Aglam", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "i kennu ɣer wadda n tebdart", "keyboard_shortcuts.enter": "i tildin n tsuffeɣt", "keyboard_shortcuts.favourite": "akken ad ternuḍ ɣer yismenyifen", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Ticraḍ", "navigation_bar.community_timeline": "Tasuddemt tadigant", "navigation_bar.compose": "Aru tajewwiqt tamaynut", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Ẓer", "navigation_bar.domain_blocks": "Tiɣula yeffren", "navigation_bar.edit_profile": "Ẓreg amaɣnu", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index fd9074afd..110d33ae4 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -70,7 +70,7 @@ "column.blocks": "Бұғатталғандар", "column.bookmarks": "Бетбелгілер", "column.community": "Жергілікті желі", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Профильдерді аралау", "column.domain_blocks": "Жасырылған домендер", "column.favourites": "Таңдаулылар", @@ -166,7 +166,7 @@ "empty_column.blocks": "Ешкімді бұғаттамағансыз.", "empty_column.bookmarked_statuses": "Ешқандай жазба Бетбелгілер тізіміне қосылмапты. Қосылғаннан кейін осында жинала бастайды.", "empty_column.community": "Жергілікті желі бос. Сіз бастап жазыңыз!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Бұғатталған домен жоқ.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Ешқандай жазба 'Таңдаулылар' тізіміне қосылмапты. Қосылғаннан кейін осында жинала бастайды.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "жазба бөлісу", "keyboard_shortcuts.column": "бағандардағы жазбаны оқу", "keyboard_shortcuts.compose": "пост жазу", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Сипаттама", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "тізімде төмен түсу", "keyboard_shortcuts.enter": "жазбаны ашу", "keyboard_shortcuts.favourite": "таңдаулыға қосу", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Бетбелгілер", "navigation_bar.community_timeline": "Жергілікті желі", "navigation_bar.compose": "Жаңа жазба бастау", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "шарлау", "navigation_bar.domain_blocks": "Жабық домендер", "navigation_bar.edit_profile": "Профиль түзету", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index 222a62164..d00d7feb7 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -70,7 +70,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Browse profiles", "column.domain_blocks": "Hidden domains", "column.favourites": "Favourites", @@ -166,7 +166,7 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "There are no hidden domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "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.favourite": "to favourite", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 4af91f569..a9c4fc6ce 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -70,7 +70,7 @@ "column.blocks": "차단한 사용자", "column.bookmarks": "보관함", "column.community": "로컬 타임라인", - "column.conversations": "대화", + "column.direct": "다이렉트 메시지", "column.directory": "프로필 둘러보기", "column.domain_blocks": "차단한 도메인", "column.favourites": "좋아요", @@ -93,7 +93,7 @@ "community.column_settings.media_only": "미디어만", "community.column_settings.remote_only": "원격만", "compose_form.direct_message_warning_learn_more": "더 알아보기", - "compose_form.encryption_warning": "마스토돈의 게시물들은 종단간 암호화가 되지 않습니아. 위험한 정보를 마스토돈을 통해 전달하지 마세요.", + "compose_form.encryption_warning": "마스토돈의 게시물들은 종단간 암호화가 되지 않습니다. 위험한 정보를 마스토돈을 통해 전달하지 마세요.", "compose_form.hashtag_warning": "이 게시물은 어떤 해시태그로도 검색 되지 않습니다. 전체공개로 게시 된 게시물만이 해시태그로 검색 될 수 있습니다.", "compose_form.lock_disclaimer": "이 계정은 {locked}로 설정 되어 있지 않습니다. 누구나 이 계정을 팔로우 할 수 있으며, 팔로워 공개의 포스팅을 볼 수 있습니다.", "compose_form.lock_disclaimer.lock": "비공개", @@ -166,7 +166,7 @@ "empty_column.blocks": "아직 아무도 차단하지 않았습니다.", "empty_column.bookmarked_statuses": "아직 보관한 게시물이 없습니다. 게시물을 보관하면 여기에 나타납니다.", "empty_column.community": "로컬 타임라인에 아무 것도 없습니다. 아무거나 적어 보세요!", - "empty_column.conversations": "멘션한 사람만 볼 수 있는 게시물을 보내거나 받은 경우에, 여기에 나타납니다.", + "empty_column.direct": "아직 다이렉트 메시지가 없습니다. 다이렉트 메시지를 보내거나 받은 경우, 여기에 표시 됩니다.", "empty_column.domain_blocks": "아직 차단한 도메인이 없습니다.", "empty_column.explore_statuses": "아직 유행하는 것이 없습니다. 나중에 다시 확인하세요!", "empty_column.favourited_statuses": "아직 마음에 들어한 게시물이 없습니다. 게시물을 좋아요 하면 여기에 나타납니다.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "게시물 부스트", "keyboard_shortcuts.column": "해당 컬럼에 포커스", "keyboard_shortcuts.compose": "작성창에 포커스", - "keyboard_shortcuts.conversations": "대화 컬럼 열기", "keyboard_shortcuts.description": "설명", + "keyboard_shortcuts.direct": "다이렉트 메시지 컬럼 열기", "keyboard_shortcuts.down": "리스트에서 아래로 이동", "keyboard_shortcuts.enter": "게시물 열기", "keyboard_shortcuts.favourite": "관심글 지정", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "보관함", "navigation_bar.community_timeline": "로컬 타임라인", "navigation_bar.compose": "새 게시물 작성", + "navigation_bar.direct": "다이렉트 메시지", "navigation_bar.discover": "발견하기", "navigation_bar.domain_blocks": "차단한 도메인", "navigation_bar.edit_profile": "프로필 편집", @@ -366,7 +367,7 @@ "poll_button.remove_poll": "투표 삭제", "privacy.change": "게시물의 프라이버시 설정을 변경", "privacy.direct.long": "멘션한 사용자에게만 공개", - "privacy.direct.short": "내가 멘션한 사람만", + "privacy.direct.short": "멘션한 사람들만", "privacy.private.long": "팔로워에게만 공개", "privacy.private.short": "팔로워 전용", "privacy.public.long": "모두가 볼 수 있음", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 02df9eff6..89765f8ff 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -70,7 +70,7 @@ "column.blocks": "Bikarhênerên astengkirî", "column.bookmarks": "Şûnpel", "column.community": "Demnameya herêmî", - "column.conversations": "Axaftin", + "column.direct": "Peyamên rasterast", "column.directory": "Li profîlan bigere", "column.domain_blocks": "Navperên astengkirî", "column.favourites": "Bijarte", @@ -166,7 +166,7 @@ "empty_column.blocks": "Te tu bikarhêner asteng nekiriye.", "empty_column.bookmarked_statuses": "Hîn tu peyamên şûnpelkirî tuneye. Gava ku hûn yek şûnpel bikin, ew ê li vir xûya bike.", "empty_column.community": "Demnameya herêmî vala ye. Tiştek ji raya giştî re binivsînin da ku rûpel biherike!", - "empty_column.conversations": "Dema tu şandiyekê bişîninî an jî bistînî ku tenê ji kesên qalkirî re xuyabar in, ew ê li vir xuya bibe.", + "empty_column.direct": "Hêj peyameke te yê rasterast tuneye. Gava ku tu yekî bişeynî an jî bigirî, ew ê li vir xûya bike.", "empty_column.domain_blocks": "Hê jî navperên hatine asteng kirin tune ne.", "empty_column.explore_statuses": "Tiştek niha di rojevê de tune. Paşê vegere!", "empty_column.favourited_statuses": "Hîn tu peyamên te yên bijare tunene. Gava ku te yekî bijart, ew ê li vir xûya bike.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Şandiyê bilind bike", "keyboard_shortcuts.column": "Stûna balkişandinê", "keyboard_shortcuts.compose": "Bal bikşîne cîhê nivîsê/textarea", - "keyboard_shortcuts.conversations": "ji bo vekirina stûna axaftinan", "keyboard_shortcuts.description": "Danasîn", + "keyboard_shortcuts.direct": "ji bo vekirina stûnê peyamên rasterast", "keyboard_shortcuts.down": "Di rêzokê de dakêşe jêr", "keyboard_shortcuts.enter": "Şandiyê veke", "keyboard_shortcuts.favourite": "Şandiya bijarte", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Şûnpel", "navigation_bar.community_timeline": "Demnameya herêmî", "navigation_bar.compose": "Şandiyeke nû binivsîne", + "navigation_bar.direct": "Peyamên rasterast", "navigation_bar.discover": "Vekolê", "navigation_bar.domain_blocks": "Navparên astengkirî", "navigation_bar.edit_profile": "Profîl serrast bike", @@ -366,7 +367,7 @@ "poll_button.remove_poll": "Rapirsî yê rake", "privacy.change": "Nepênîtiya şandiyan biguherîne", "privacy.direct.long": "Tenê ji bo bikarhênerên qalkirî tê dîtin", - "privacy.direct.short": "Tenê mirovên ku min qalkirî", + "privacy.direct.short": "Tenê kesên qalkirî", "privacy.private.long": "Tenê bo şopîneran xuyabar e", "privacy.private.short": "Tenê şopîneran", "privacy.public.long": "Ji bo hemûyan xuyabar e", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index 7aa686a7a..60dca71f5 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -70,7 +70,7 @@ "column.blocks": "Devnydhyoryon lettys", "column.bookmarks": "Folennosow", "column.community": "Amserlin leel", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Peuri profilys", "column.domain_blocks": "Gorfarthow lettys", "column.favourites": "Re drudh", @@ -166,7 +166,7 @@ "empty_column.blocks": "Ny wrussowgh lettya devnydhyoryon vyth hwath.", "empty_column.bookmarked_statuses": "Nyns eus dhywgh postow gans folennos hwath. Pan wrewgh gorra onan, ev a wra omdhiskwedhes omma.", "empty_column.community": "An amserlin leel yw gwag. Skrifewgh neppytn yn poblek dh'y lonchya!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Nyns eus gorfarthow lettys hwath.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Nyns eus dhywgh postow drudh hwath. Pan wrewgh merkya onan vel drudh, ev a wra omdhiskwedhes omma.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Kenertha post", "keyboard_shortcuts.column": "Fogella koloven", "keyboard_shortcuts.compose": "Fogella tekstva gomposya", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Deskrifans", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "Movya war-nans y'n rol", "keyboard_shortcuts.enter": "Ygeri post", "keyboard_shortcuts.favourite": "Merkya post vel drudh", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Folennosow", "navigation_bar.community_timeline": "Amserlin leel", "navigation_bar.compose": "Komposya post nowydh", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Diskudha", "navigation_bar.domain_blocks": "Gorfarthow lettys", "navigation_bar.edit_profile": "Golegi profil", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index ade4933f9..4d44ffac6 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -70,7 +70,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Browse profiles", "column.domain_blocks": "Hidden domains", "column.favourites": "Mėgstamiausi", @@ -166,7 +166,7 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "There are no hidden domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "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.favourite": "to favourite", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 3bfb7532a..24311b859 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -70,7 +70,7 @@ "column.blocks": "Bloķētie lietotāji", "column.bookmarks": "Grāmatzīmes", "column.community": "Vietējā ziņu līnija", - "column.conversations": "Sarunas", + "column.direct": "Privātie ziņojumi", "column.directory": "Pārlūkot profilus", "column.domain_blocks": "Bloķētie domēni", "column.favourites": "Izlase", @@ -166,7 +166,7 @@ "empty_column.blocks": "Patreiz tu neesi nevienu bloķējis.", "empty_column.bookmarked_statuses": "Patreiz tev nav neviena grāmatzīmēm pievienota ieraksta. Kad tādu pievienosi, tas parādīsies šeit.", "empty_column.community": "Vietējā ziņu lenta ir tukša. Uzraksti kaut ko publiski, lai viss notiktu!", - "empty_column.conversations": "Kad nosūtīsi vai saņemsi ziņu, kas ir redzama tikai tajā minētajām personām, tā tiks parādīta šeit.", + "empty_column.direct": "Patrez tev nav privātu ziņu. Tiklīdz tādu nosūtīsi vai saņemsi, tās parādīsies šeit.", "empty_column.domain_blocks": "Vēl nav neviena bloķēta domēna.", "empty_column.explore_statuses": "Pašlaik nekas nav tendēts. Pārbaudiet vēlāk!", "empty_column.favourited_statuses": "Patreiz tev nav neviena izceltā ieraksta. Kad kādu izcelsi, tas parādīsies šeit.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Palielināt ziņu", "keyboard_shortcuts.column": "Fokusēt kolonnu", "keyboard_shortcuts.compose": "Fokusēt veidojamā teksta lauku", - "keyboard_shortcuts.conversations": "lai atvērtu sarunu kolonnu", "keyboard_shortcuts.description": "Apraksts", + "keyboard_shortcuts.direct": "lai atvērtu privāto ziņojumu kolonnu", "keyboard_shortcuts.down": "Pārvietot sarakstā uz leju", "keyboard_shortcuts.enter": "Atvērt ziņu", "keyboard_shortcuts.favourite": "Pievienot izlasei", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Grāmatzīmes", "navigation_bar.community_timeline": "Vietējā ziņu lenta", "navigation_bar.compose": "Veidot jaunu ziņu", + "navigation_bar.direct": "Privātie ziņojumi", "navigation_bar.discover": "Atklāt", "navigation_bar.domain_blocks": "Bloķētie domēni", "navigation_bar.edit_profile": "Rediģēt profilu", @@ -366,7 +367,7 @@ "poll_button.remove_poll": "Noņemt aptauju", "privacy.change": "Mainīt ziņas privātumu", "privacy.direct.long": "Redzams tikai pieminētajiem lietotājiem", - "privacy.direct.short": "Tikai cilvēki, kurus es pieminu", + "privacy.direct.short": "Tikai minētie cilvēki", "privacy.private.long": "Redzams tikai sekotājiem", "privacy.private.short": "Tikai sekotājiem", "privacy.public.long": "Redzama visiem", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index 72bb52adf..aa6e8a969 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -70,7 +70,7 @@ "column.blocks": "Блокирани корисници", "column.bookmarks": "Bookmarks", "column.community": "Локална временска зона", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Види профили", "column.domain_blocks": "Скриени домеини", "column.favourites": "Омилени", @@ -166,7 +166,7 @@ "empty_column.blocks": "Немате сеуште блокирано корисници.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "Локалниот времеплов е празен. Објавете нешто јавно за да може да почне шоуто!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Немате сокриени домеини уште.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "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.favourite": "to favourite", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Уреди профил", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index a1db3f5a5..908db9833 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -70,7 +70,7 @@ "column.blocks": "തടയപ്പെട്ട ഉപയോക്താക്കൾ", "column.bookmarks": "ബുക്ക്മാർക്കുകൾ", "column.community": "പ്രാദേശികമായ സമയരേഖ", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "പ്രൊഫൈലുകൾ മറിച്ചുനോക്കുക", "column.domain_blocks": "മറയ്ക്കപ്പെട്ട മേഖലകൾ", "column.favourites": "പ്രിയപ്പെട്ടവ", @@ -166,7 +166,7 @@ "empty_column.blocks": "നിങ്ങൾ ഇതുവരെ ഒരു ഉപയോക്താക്കളെയും തടഞ്ഞിട്ടില്ല.", "empty_column.bookmarked_statuses": "നിങ്ങൾക് ഇതുവരെ അടയാളപ്പെടുത്തിയ ടൂട്ടുകൾ ഇല്ല. അടയാളപ്പെടുത്തിയാൽ അത് ഇവിടെ വരും.", "empty_column.community": "പ്രാദേശികമായ സമയരേഖ ശൂന്യമാണ്. എന്തെങ്കിലും പരസ്യമായി എഴുതി തുടക്കം കുറിക്കു!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "മറയ്ക്കപ്പെട്ടിരിക്കുന്ന മേഖലകൾ ഇതുവരെ ഇല്ല.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "നിങ്ങൾക്ക് ഇത് വരെ ഒരു പ്രിയപ്പെട്ട ടൂട്ടും ഇല്ല. നിങ്ങൾ അങ്ങനെ ഒന്ന് പ്രിയപ്പെടുന്ന പക്ഷം അതിവിടെ കാണപ്പെടുന്നതാണ്.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "ബൂസ്റ്റ് ചെയ്യുക", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "വിവരണം", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "ടൂട്ട് എടുക്കാൻ", "keyboard_shortcuts.favourite": "to favourite", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "ബുക്ക്മാർക്കുകൾ", "navigation_bar.community_timeline": "പ്രാദേശിക സമയരേഖ", "navigation_bar.compose": "പുതിയ ടൂട്ട് എഴുതുക", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "കണ്ടെത്തുക", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "പ്രൊഫൈൽ തിരുത്തുക", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index 9c3500443..c34c836ce 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -70,7 +70,7 @@ "column.blocks": "ब्लॉक केलेले खातेधारक", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Browse profiles", "column.domain_blocks": "गुप्त डोमेन्स", "column.favourites": "आवडते", @@ -166,7 +166,7 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "There are no hidden domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "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.favourite": "to favourite", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 0c6996463..405b3eeb6 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -70,7 +70,7 @@ "column.blocks": "Pengguna yang disekat", "column.bookmarks": "Tanda buku", "column.community": "Garis masa tempatan", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Layari profil", "column.domain_blocks": "Domain disekat", "column.favourites": "Kegemaran", @@ -166,7 +166,7 @@ "empty_column.blocks": "Anda belum menyekat sesiapa.", "empty_column.bookmarked_statuses": "Anda belum ada hantaran yang ditanda buku. Apabila anda menanda buku sesuatu, ia akan muncul di sini.", "empty_column.community": "Garis masa tempatan kosong. Tulislah secara awam untuk memulakan sesuatu!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Belum ada domain yang disekat.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Anda belum ada hantaran yang digemari. Apabila anda menggemari sesuatu, ia akan muncul di sini.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "Tumpu pada lajur", "keyboard_shortcuts.compose": "to focus the compose textarea", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Keterangan", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "Buka hantaran", "keyboard_shortcuts.favourite": "to favourite", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Tanda buku", "navigation_bar.community_timeline": "Garis masa tempatan", "navigation_bar.compose": "Karang hantaran baharu", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Teroka", "navigation_bar.domain_blocks": "Domain disekat", "navigation_bar.edit_profile": "Sunting profil", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 5e40dacb8..ad27cf200 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -70,7 +70,7 @@ "column.blocks": "Geblokkeerde gebruikers", "column.bookmarks": "Bladwijzers", "column.community": "Lokale tijdlijn", - "column.conversations": "Gesprekken", + "column.direct": "Direct messages", "column.directory": "Gebruikersgids", "column.domain_blocks": "Geblokkeerde domeinen", "column.favourites": "Favorieten", @@ -166,7 +166,7 @@ "empty_column.blocks": "Jij hebt nog geen enkele gebruiker geblokkeerd.", "empty_column.bookmarked_statuses": "Jij hebt nog geen berichten aan je bladwijzers toegevoegd. Wanneer je er een aan jouw bladwijzers toevoegt, valt deze hier te zien.", "empty_column.community": "De lokale tijdlijn is nog leeg. Plaats een openbaar bericht om de spits af te bijten!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Er zijn nog geen geblokkeerde domeinen.", "empty_column.explore_statuses": "Momenteel zijn er geen trends. Kom later terug!", "empty_column.favourited_statuses": "Jij hebt nog geen favoriete berichten. Wanneer je er een aan jouw favorieten toevoegt, valt deze hier te zien.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Bericht boosten", "keyboard_shortcuts.column": "Op één van de kolommen focussen", "keyboard_shortcuts.compose": "Tekstveld om een bericht te schrijven focussen", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Omschrijving", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "Naar beneden in de lijst bewegen", "keyboard_shortcuts.enter": "Volledig bericht tonen", "keyboard_shortcuts.favourite": "Aan jouw favorieten toevoegen", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Bladwijzers", "navigation_bar.community_timeline": "Lokale tijdlijn", "navigation_bar.compose": "Nieuw bericht schrijven", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Ontdekken", "navigation_bar.domain_blocks": "Geblokkeerde domeinen", "navigation_bar.edit_profile": "Profiel bewerken", @@ -366,7 +367,7 @@ "poll_button.remove_poll": "Poll verwijderen", "privacy.change": "Zichtbaarheid van bericht aanpassen", "privacy.direct.long": "Alleen aan vermelde gebruikers tonen", - "privacy.direct.short": "Alleen gebruikers die ik noem", + "privacy.direct.short": "Direct", "privacy.private.long": "Alleen aan volgers tonen", "privacy.private.short": "Alleen volgers", "privacy.public.long": "Voor iedereen zichtbaar", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 521403c51..76095b2e8 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -70,7 +70,7 @@ "column.blocks": "Blokkerte brukarar", "column.bookmarks": "Bokmerke", "column.community": "Lokal tidsline", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Sjå gjennom profilar", "column.domain_blocks": "Gøymde domene", "column.favourites": "Favorittar", @@ -166,7 +166,7 @@ "empty_column.blocks": "Du har ikkje blokkert nokon brukarar enno.", "empty_column.bookmarked_statuses": "Du har ikkje nokon bokmerkte tut enno. Når du bokmerkjer eit, dukkar det opp her.", "empty_column.community": "Den lokale samtiden er tom. Skriv noko offentleg å få ballen til å rulle!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Det er ingen gøymde domene ennå.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Du har ingen favoritt-tut ennå. Når du merkjer ein som favoritt, så dukkar det opp her.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "for å framheva", "keyboard_shortcuts.column": "for å fokusera på ein status i ei av kolonnane", "keyboard_shortcuts.compose": "for å fokusera tekstfeltet for skriving", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Skildring", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "for å flytta seg opp og ned i lista", "keyboard_shortcuts.enter": "for å opna status", "keyboard_shortcuts.favourite": "for å merkja som favoritt", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Bokmerke", "navigation_bar.community_timeline": "Lokal tidsline", "navigation_bar.compose": "Lag eit nytt tut", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Oppdag", "navigation_bar.domain_blocks": "Skjulte domene", "navigation_bar.edit_profile": "Rediger profil", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 707564404..3279fa547 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -70,7 +70,7 @@ "column.blocks": "Blokkerte brukere", "column.bookmarks": "Bokmerker", "column.community": "Lokal tidslinje", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Bla gjennom profiler", "column.domain_blocks": "Skjulte domener", "column.favourites": "Likt", @@ -166,7 +166,7 @@ "empty_column.blocks": "Du har ikke blokkert noen brukere enda.", "empty_column.bookmarked_statuses": "Du har ikke bokmerket noen tuter enda. Når du bokmerker en, vil den dukke opp her.", "empty_column.community": "Den lokale tidslinjen er tom. Skriv noe offentlig for å få snøballen til å rulle!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Det er ingen skjulte domener enda.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Du har ikke likt noen tuter enda. Når du liker en, vil den dukke opp her.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "å fremheve", "keyboard_shortcuts.column": "å fokusere en status i en av kolonnene", "keyboard_shortcuts.compose": "å fokusere komponeringsfeltet", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Beskrivelse", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "for å flytte ned i listen", "keyboard_shortcuts.enter": "å åpne status", "keyboard_shortcuts.favourite": "for å favorittmarkere", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Bokmerker", "navigation_bar.community_timeline": "Lokal tidslinje", "navigation_bar.compose": "Skriv en ny tut", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Oppdag", "navigation_bar.domain_blocks": "Skjulte domener", "navigation_bar.edit_profile": "Rediger profil", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index e13c68c3f..e74d5315a 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -70,7 +70,7 @@ "column.blocks": "Personas blocadas", "column.bookmarks": "Marcadors", "column.community": "Flux public local", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Percórrer los perfils", "column.domain_blocks": "Domenis resconduts", "column.favourites": "Favorits", @@ -166,7 +166,7 @@ "empty_column.blocks": "Avètz pas blocat degun pel moment.", "empty_column.bookmarked_statuses": "Avètz pas cap de tuts marcats pel moment. Quand ne marquetz un, serà mostrat aquí.", "empty_column.community": "Lo flux public local es void. Escrivètz quicòm per lo garnir !", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "I a pas encara cap de domeni amagat.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Avètz pas encara cap de tut favorit. Quand n’auretz un, apareisserà aquí.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "partejar", "keyboard_shortcuts.column": "centrar un estatut a una colomna", "keyboard_shortcuts.compose": "anar al camp tèxte", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "descripcion", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "far davalar dins la lista", "keyboard_shortcuts.enter": "dobrir los estatuts", "keyboard_shortcuts.favourite": "apondre als favorits", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Marcadors", "navigation_bar.community_timeline": "Flux public local", "navigation_bar.compose": "Escriure un nòu tut", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Trobar", "navigation_bar.domain_blocks": "Domenis resconduts", "navigation_bar.edit_profile": "Modificar lo perfil", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index 09d473ef4..c4baf0533 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -70,7 +70,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", @@ -166,7 +166,7 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "There are no blocked domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "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.favourite": "to favourite", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 1f4f4ae3d..0110d5713 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -70,7 +70,7 @@ "column.blocks": "Zablokowani użytkownicy", "column.bookmarks": "Zakładki", "column.community": "Lokalna oś czasu", - "column.conversations": "Konwersacje", + "column.direct": "Wiadomości bezpośrednie", "column.directory": "Przeglądaj profile", "column.domain_blocks": "Ukryte domeny", "column.favourites": "Ulubione", @@ -166,7 +166,7 @@ "empty_column.blocks": "Nie zablokowałeś(-aś) jeszcze żadnego użytkownika.", "empty_column.bookmarked_statuses": "Nie dodałeś(-aś) żadnego wpisu do zakładek. Kiedy to zrobisz, pojawi się on tutaj.", "empty_column.community": "Lokalna oś czasu jest pusta. Napisz coś publicznie, aby zagaić!", - "empty_column.conversations": "Gdy wyślesz lub otrzymasz wpis, który jest widoczny tylko dla osób w nim wymienionych, pojawi się on tutaj.", + "empty_column.direct": "Nie masz żadnych wiadomości bezpośrednich. Kiedy dostaniesz lub wyślesz jakąś, pojawi się ona tutaj.", "empty_column.domain_blocks": "Brak ukrytych domen.", "empty_column.explore_statuses": "Nic nie jest w tej chwili popularne. Sprawdź później!", "empty_column.favourited_statuses": "Nie dodałeś(-aś) żadnego wpisu do ulubionych. Kiedy to zrobisz, pojawi się on tutaj.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "aby podbić wpis", "keyboard_shortcuts.column": "aby przejść do wpisu z jednej z kolumn", "keyboard_shortcuts.compose": "aby przejść do pola tworzenia wpisu", - "keyboard_shortcuts.conversations": "aby otworzyć kolumnę konwersacji", "keyboard_shortcuts.description": "Opis", + "keyboard_shortcuts.direct": "aby otworzyć kolumnę wiadomości bezpośrednich", "keyboard_shortcuts.down": "aby przejść na dół listy", "keyboard_shortcuts.enter": "aby otworzyć wpis", "keyboard_shortcuts.favourite": "aby dodać do ulubionych", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Zakładki", "navigation_bar.community_timeline": "Lokalna oś czasu", "navigation_bar.compose": "Utwórz nowy wpis", + "navigation_bar.direct": "Wiadomości bezpośrednie", "navigation_bar.discover": "Odkrywaj", "navigation_bar.domain_blocks": "Ukryte domeny", "navigation_bar.edit_profile": "Edytuj profil", @@ -366,7 +367,7 @@ "poll_button.remove_poll": "Usuń głosowanie", "privacy.change": "Dostosuj widoczność wpisów", "privacy.direct.long": "Widoczny tylko dla wspomnianych", - "privacy.direct.short": "Tylko wspominane osoby", + "privacy.direct.short": "Tylko wspomniane osoby", "privacy.private.long": "Widoczny tylko dla osób, które Cię śledzą", "privacy.private.short": "Tylko śledzący", "privacy.public.long": "Widoczne dla każdego", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 67725b3ee..ba1bc592e 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -70,7 +70,7 @@ "column.blocks": "Usuários bloqueados", "column.bookmarks": "Salvos", "column.community": "Linha local", - "column.conversations": "Conversations", + "column.direct": "Mensagens diretas", "column.directory": "Explorar perfis", "column.domain_blocks": "Domínios bloqueados", "column.favourites": "Favoritos", @@ -93,7 +93,7 @@ "community.column_settings.media_only": "Somente mídia", "community.column_settings.remote_only": "Somente global", "compose_form.direct_message_warning_learn_more": "Saiba mais", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "Postagens no Mastodon não são criptografados de ponta a ponta. Não compartilhe nenhuma informação perigosa sobre o Mastodon.", "compose_form.hashtag_warning": "Este toot não aparecerá em nenhuma hashtag porque está como não-listado. Somente toots públicos podem ser pesquisados por hashtag.", "compose_form.lock_disclaimer": "Seu perfil não está {locked}. Qualquer um pode te seguir e ver os toots privados.", "compose_form.lock_disclaimer.lock": "trancado", @@ -166,7 +166,7 @@ "empty_column.blocks": "Nada aqui.", "empty_column.bookmarked_statuses": "Nada aqui. Quando você salvar um toot, ele aparecerá aqui.", "empty_column.community": "A linha local está vazia. Publique algo para começar!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "Você ainda não tem mensagens diretas. Quando você enviar ou receber uma, será exibida aqui.", "empty_column.domain_blocks": "Nada aqui.", "empty_column.explore_statuses": "Nada está em alta no momento. Volte mais tarde!", "empty_column.favourited_statuses": "Nada aqui. Quando você favoritar um toot, ele aparecerá aqui.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "dar boost", "keyboard_shortcuts.column": "focar na coluna", "keyboard_shortcuts.compose": "focar no compositor", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Descrição", + "keyboard_shortcuts.direct": "para abrir a coluna de mensagens diretas", "keyboard_shortcuts.down": "mover para baixo", "keyboard_shortcuts.enter": "abrir toot", "keyboard_shortcuts.favourite": "favoritar toot", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Salvos", "navigation_bar.community_timeline": "Linha do tempo local", "navigation_bar.compose": "Compor novo toot", + "navigation_bar.direct": "Mensagens diretas", "navigation_bar.discover": "Descobrir", "navigation_bar.domain_blocks": "Domínios bloqueados", "navigation_bar.edit_profile": "Editar perfil", @@ -337,7 +338,7 @@ "notifications.column_settings.status": "Novos toots:", "notifications.column_settings.unread_notifications.category": "Notificações não lidas", "notifications.column_settings.unread_notifications.highlight": "Destacar notificações não lidas", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "Editar:", "notifications.filter.all": "Tudo", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favoritos", @@ -366,22 +367,22 @@ "poll_button.remove_poll": "Remover enquete", "privacy.change": "Alterar privacidade do toot", "privacy.direct.long": "Postar só para usuários mencionados", - "privacy.direct.short": "Direct", + "privacy.direct.short": "Apenas pessoas mencionadas", "privacy.private.long": "Postar só para seguidores", - "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all", + "privacy.private.short": "Apenas seguidores", + "privacy.public.long": "Visível para todos", "privacy.public.short": "Público", - "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", + "privacy.unlisted.long": "Visível para todos, mas desativou os recursos de descoberta", "privacy.unlisted.short": "Não-listado", "refresh": "Atualizar", "regeneration_indicator.label": "Carregando…", "regeneration_indicator.sublabel": "Sua página inicial está sendo preparada!", "relative_time.days": "{number}d", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.days": "{number, plural, one {# dia} other {# dias}} atrás", + "relative_time.full.hours": "{number, plural, one {# hora} other {# horas}} atrás", "relative_time.full.just_now": "agora mesmo", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.minutes": "{number, plural, one {# minuto} other {# minutos}} atrás", + "relative_time.full.seconds": "{number, plural, one {# segundo} other {# segundos}} atrás", "relative_time.hours": "{number}h", "relative_time.just_now": "agora", "relative_time.minutes": "{number}m", @@ -451,7 +452,7 @@ "status.direct": "Enviar toot direto para @{name}", "status.edit": "Editar", "status.edited": "Editado em {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edited_x_times": "Editado {count, plural, one {{count} hora} other {{count} vezes}}", "status.embed": "Incorporar", "status.favourite": "Favoritar", "status.filtered": "Filtrado", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index f36683346..1149fc658 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -70,7 +70,7 @@ "column.blocks": "Utilizadores Bloqueados", "column.bookmarks": "Itens salvos", "column.community": "Cronologia local", - "column.conversations": "Conversações", + "column.direct": "Mensagens diretas", "column.directory": "Procurar perfis", "column.domain_blocks": "Domínios escondidos", "column.favourites": "Favoritos", @@ -166,7 +166,7 @@ "empty_column.blocks": "Ainda não bloqueaste qualquer utilizador.", "empty_column.bookmarked_statuses": "Ainda não adicionou nenhum toot aos Itens salvos. Quando adicionar, eles serão exibidos aqui.", "empty_column.community": "A timeline local está vazia. Escreve algo publicamente para começar!", - "empty_column.conversations": "Quando enviar ou receber uma publicação que seja visível apenas para as pessoas nela mencionadas, ela aparecerá aqui.", + "empty_column.direct": "Ainda não tem qualquer mensagem direta. Quando enviar ou receber alguma, ela irá aparecer aqui.", "empty_column.domain_blocks": "Ainda não há qualquer domínio escondido.", "empty_column.explore_statuses": "Nada em destaque por agora. Volte mais tarde!", "empty_column.favourited_statuses": "Ainda não tens quaisquer toots favoritos. Quando tiveres algum, ele irá aparecer aqui.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "para partilhar", "keyboard_shortcuts.column": "para focar uma publicação numa das colunas", "keyboard_shortcuts.compose": "para focar na área de publicação", - "keyboard_shortcuts.conversations": "para abrir a coluna de conversações", "keyboard_shortcuts.description": "Descrição", + "keyboard_shortcuts.direct": "para abrir a coluna das mensagens diretas", "keyboard_shortcuts.down": "para mover para baixo na lista", "keyboard_shortcuts.enter": "para expandir uma publicação", "keyboard_shortcuts.favourite": "para adicionar aos favoritos", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Itens salvos", "navigation_bar.community_timeline": "Cronologia local", "navigation_bar.compose": "Escrever novo toot", + "navigation_bar.direct": "Mensagens diretas", "navigation_bar.discover": "Descobrir", "navigation_bar.domain_blocks": "Domínios escondidos", "navigation_bar.edit_profile": "Editar perfil", @@ -366,7 +367,7 @@ "poll_button.remove_poll": "Remover votação", "privacy.change": "Ajustar a privacidade da publicação", "privacy.direct.long": "Apenas para utilizadores mencionados", - "privacy.direct.short": "Apenas pessoas que menciono", + "privacy.direct.short": "Apenas pessoas mencionadas", "privacy.private.long": "Apenas para os seguidores", "privacy.private.short": "Apenas seguidores", "privacy.public.long": "Visível para todos", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 5a0932f5b..f4f20df2d 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -70,7 +70,7 @@ "column.blocks": "Utilizatori blocați", "column.bookmarks": "Marcaje", "column.community": "Cronologie locală", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Explorează profiluri", "column.domain_blocks": "Domenii blocate", "column.favourites": "Favorite", @@ -166,7 +166,7 @@ "empty_column.blocks": "Momentan nu ai blocat niciun utilizator.", "empty_column.bookmarked_statuses": "Momentan nu ai nicio postare marcată. Când vei marca una, va apărea aici.", "empty_column.community": "Nu există nimic în cronologia locală. Postează ceva public pentru a sparge gheața!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Momentan nu există domenii blocate.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Momentan nu ai nicio postare favorită. Când vei adăuga una, va apărea aici.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Distribuie postarea", "keyboard_shortcuts.column": "Focalizează pe coloană", "keyboard_shortcuts.compose": "Focalizează pe zona de text", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Descriere", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "Coboară în listă", "keyboard_shortcuts.enter": "Deschide postarea", "keyboard_shortcuts.favourite": "Adaugă postarea la favorite", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Marcaje", "navigation_bar.community_timeline": "Cronologie locală", "navigation_bar.compose": "Compune o nouă postare", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Descoperă", "navigation_bar.domain_blocks": "Domenii blocate", "navigation_bar.edit_profile": "Modifică profilul", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index dfc37e8d1..4846509be 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -70,7 +70,7 @@ "column.blocks": "Заблокированные пользователи", "column.bookmarks": "Закладки", "column.community": "Локальная лента", - "column.conversations": "Диалоги", + "column.direct": "Личные сообщения", "column.directory": "Просмотр профилей", "column.domain_blocks": "Заблокированные домены", "column.favourites": "Избранное", @@ -166,7 +166,7 @@ "empty_column.blocks": "Вы ещё никого не заблокировали.", "empty_column.bookmarked_statuses": "У вас пока нет постов в закладках. Как добавите один, он отобразится здесь.", "empty_column.community": "Локальная лента пуста. Напишите что-нибудь, чтобы разогреть народ!", - "empty_column.conversations": "Здесь отображаются адресованные посты. Как только вы отправите или получите один, он отобразится здесь.", + "empty_column.direct": "У вас пока нет личных сообщений. Как только вы отправите или получите одно, оно появится здесь.", "empty_column.domain_blocks": "Скрытых доменов пока нет.", "empty_column.explore_statuses": "Нет актуального. Проверьте позже!", "empty_column.favourited_statuses": "Вы не добавили ни один пост в «Избранное». Как только вы это сделаете, он появится здесь.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "продвинуть пост", "keyboard_shortcuts.column": "фокус на одном из столбцов", "keyboard_shortcuts.compose": "фокус на поле ввода", - "keyboard_shortcuts.conversations": "открыть колонку диалогов", "keyboard_shortcuts.description": "Описание", + "keyboard_shortcuts.direct": "чтобы открыть колонку с личными сообщениями", "keyboard_shortcuts.down": "вниз по списку", "keyboard_shortcuts.enter": "открыть пост", "keyboard_shortcuts.favourite": "в избранное", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Закладки", "navigation_bar.community_timeline": "Локальная лента", "navigation_bar.compose": "Создать новый пост", + "navigation_bar.direct": "Личные сообщения", "navigation_bar.discover": "Изучайте", "navigation_bar.domain_blocks": "Скрытые домены", "navigation_bar.edit_profile": "Изменить профиль", @@ -366,7 +367,7 @@ "poll_button.remove_poll": "Удалить опрос", "privacy.change": "Изменить видимость поста", "privacy.direct.long": "Показать только упомянутым", - "privacy.direct.short": "Для упомянутых", + "privacy.direct.short": "Только упомянутые", "privacy.private.long": "Показать только подписчикам", "privacy.private.short": "Для подписчиков", "privacy.public.long": "Виден всем", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index ed5dc9ebd..13d3244d7 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -70,7 +70,7 @@ "column.blocks": "निषिद्धभोक्तारः", "column.bookmarks": "पुटचिह्नानि", "column.community": "स्थानीयसमयतालिका", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "व्यक्तित्वानि दृश्यन्ताम्", "column.domain_blocks": "निषिद्धप्रदेशाः", "column.favourites": "प्रियाः", @@ -166,7 +166,7 @@ "empty_column.blocks": "नैकोऽप्युपभोक्ता निषिद्धो वर्तते", "empty_column.bookmarked_statuses": "नैकमपि पुटचिह्नयुक्तदौत्यानि सन्ति । यदा भविष्यति तदत्र दृश्यते ।", "empty_column.community": "स्थानीयसमयतालिका रिक्ता । सार्वजनिकत्वेनाऽत्र किमपि लिख्यताम् ।", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "न निषिद्धप्रदेशाः सन्ति ।", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "न प्रियदौत्यानि सन्ति । यदा प्रीतिरित्यङ्क्यतेऽत्र दृश्यते ।", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "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.favourite": "to favourite", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index fe6dd22cf..48a471352 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -70,7 +70,7 @@ "column.blocks": "Persones blocadas", "column.bookmarks": "Sinnalibros", "column.community": "Lìnia de tempus locale", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Nàviga in is profilos", "column.domain_blocks": "Domìnios blocados", "column.favourites": "Preferidos", @@ -166,7 +166,7 @@ "empty_column.blocks": "No as blocadu ancora nemos.", "empty_column.bookmarked_statuses": "Non tenes ancora peruna publicatzione in is marcadores. Cando nd'as a agiùnghere una, at a èssere ammustrada inoghe.", "empty_column.community": "Sa lìnia de tempus locale est bòida. Iscrie inoghe pro cumintzare sa festa!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Non tenes ancora perunu domìniu blocadu.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Non tenes ancora peruna publicatzione in is preferidos. Cando nd'as a agiùnghere una, at a èssere ammustrada inoghe.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "pro cumpartzire", "keyboard_shortcuts.column": "pro atzentrare una publicatzione in una de is colunnas", "keyboard_shortcuts.compose": "pro atzentrare in s'àrea de cumpositzione de testu", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Descritzione", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "pro mòere in bàsciu in sa lista", "keyboard_shortcuts.enter": "pro abèrrere una publicatzione", "keyboard_shortcuts.favourite": "pro marcare comente a preferidu", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Sinnalibros", "navigation_bar.community_timeline": "Lìnia de tempus locale", "navigation_bar.compose": "Cumpone una publicatzione noa", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Iscoberi", "navigation_bar.domain_blocks": "Domìnios blocados", "navigation_bar.edit_profile": "Modìfica profilu", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 1190bbe00..e9e383968 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -70,7 +70,7 @@ "column.blocks": "අවහිර කළ පරිශීලකයින්", "column.bookmarks": "පොත් යොමු", "column.community": "Local timeline", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "පැතිකඩයන් පිරික්සන්න", "column.domain_blocks": "අවහිර කළ වසම්", "column.favourites": "ප්‍රියතමයන්", @@ -166,7 +166,7 @@ "empty_column.blocks": "ඔබ තවමත් කිසිදු පරිශීලකයෙකු අවහිර කර නැත.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "අවහිර කළ වසම් නොමැත.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", - "keyboard_shortcuts.conversations": "to open conversations column", "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.favourite": "to favourite", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "පොත් යොමු", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "පැතිකඩ සංස්කරණය", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index aee720837..809145b40 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -70,7 +70,7 @@ "column.blocks": "Blokovaní užívatelia", "column.bookmarks": "Záložky", "column.community": "Miestna časová os", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Prehľadávaj profily", "column.domain_blocks": "Skryté domény", "column.favourites": "Obľúbené", @@ -166,7 +166,7 @@ "empty_column.blocks": "Ešte si nikoho nezablokoval/a.", "empty_column.bookmarked_statuses": "Ešte nemáš žiadné záložky. Keď si pridáš príspevok k záložkám, zobrazí sa tu.", "empty_column.community": "Lokálna časová os je prázdna. Napíšte niečo, aby sa to tu začalo hýbať!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Žiadne domény ešte niesú skryté.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Nemáš obľúbené ešte žiadne príspevky. Keď si nejaký obľúbiš, bude zobrazený práve tu.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "Vyzdvihni príspevok", "keyboard_shortcuts.column": "zameraj sa na príspevok v jednom zo stĺpcov", "keyboard_shortcuts.compose": "zameraj sa na písaciu plochu", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Popis", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "posunúť sa dole v zozname", "keyboard_shortcuts.enter": "Otvor príspevok", "keyboard_shortcuts.favourite": "pridaj do obľúbených", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Záložky", "navigation_bar.community_timeline": "Miestna časová os", "navigation_bar.compose": "Napíš nový príspevok", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Objavuj", "navigation_bar.domain_blocks": "Skryté domény", "navigation_bar.edit_profile": "Uprav profil", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 23061d152..11539f209 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -18,11 +18,11 @@ "account.followers": "Sledilci", "account.followers.empty": "Nihče ne sledi temu uporabniku.", "account.followers_counter": "{count, plural, one {ima {count} sledilca} two {ima {count} sledilca} few {ima {count} sledilcev} other {ima {count} sledilce}}", - "account.following": "Following", + "account.following": "Sledim", "account.following_counter": "{count, plural, one {sledi {count} osebi} two {sledi {count} osebama} few {sledi {count} osebam} other {sledi {count} osebam}}", "account.follows.empty": "Ta uporabnik še ne sledi nikomur.", "account.follows_you": "Vam sledi", - "account.hide_reblogs": "Skrij spodbude od @{name}", + "account.hide_reblogs": "Skrij izpostavitve od @{name}", "account.joined": "Pridružen/a {date}", "account.link_verified_on": "Lastništvo te povezave je bilo preverjeno {date}", "account.locked_info": "Stanje zasebnosti računa je nastavljeno na zaklenjeno. Lastnik ročno pregleda, kdo ga lahko spremlja.", @@ -32,12 +32,12 @@ "account.mute": "Utišaj @{name}", "account.mute_notifications": "Utišaj obvestila od @{name}", "account.muted": "Utišan", - "account.posts": "Tuti", - "account.posts_with_replies": "Tuti in odgovori", + "account.posts": "Objave", + "account.posts_with_replies": "Objave in odgovori", "account.report": "Prijavi @{name}", "account.requested": "Čakanje na odobritev. Kliknite, da prekličete prošnjo za sledenje", "account.share": "Delite profil osebe @{name}", - "account.show_reblogs": "Pokaži spodbude osebe @{name}", + "account.show_reblogs": "Pokaži izpostavitve osebe @{name}", "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "Odblokiraj @{name}", "account.unblock_domain": "Razkrij {domain}", @@ -70,7 +70,7 @@ "column.blocks": "Blokirani uporabniki", "column.bookmarks": "Zaznamki", "column.community": "Lokalna časovnica", - "column.conversations": "Conversations", + "column.direct": "Neposredna sporočila", "column.directory": "Prebrskaj profile", "column.domain_blocks": "Skrite domene", "column.favourites": "Priljubljene", @@ -79,7 +79,7 @@ "column.lists": "Seznami", "column.mutes": "Utišani uporabniki", "column.notifications": "Obvestila", - "column.pins": "Pripeti tuti", + "column.pins": "Pripete objave", "column.public": "Združena časovnica", "column_back_button.label": "Nazaj", "column_header.hide_settings": "Skrij nastavitve", @@ -92,9 +92,9 @@ "community.column_settings.local_only": "Samo krajevno", "community.column_settings.media_only": "Samo mediji", "community.column_settings.remote_only": "Samo oddaljeno", - "compose_form.direct_message_warning_learn_more": "Nauči se več", - "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": "Ta tut ne bo naveden pod nobenim ključnikom, ker ni javen. Samo javne tute lahko iščete s ključniki.", + "compose_form.direct_message_warning_learn_more": "Izvej več", + "compose_form.encryption_warning": "Objave na Mastodonu niso šifrirane od kraja do kraja. Prek Mastodona ne delite nobenih občutljivih informacij.", + "compose_form.hashtag_warning": "Ta objava ne bo navedena pod nobenim ključnikom, ker ni javen. Samo javne objave lahko iščete s ključniki.", "compose_form.lock_disclaimer": "Vaš račun ni {locked}. Vsakdo vam lahko sledi in si ogleda objave, ki so namenjene samo sledilcem.", "compose_form.lock_disclaimer.lock": "zaklenjen", "compose_form.placeholder": "O čem razmišljaš?", @@ -104,7 +104,7 @@ "compose_form.poll.remove_option": "Odstrani to izbiro", "compose_form.poll.switch_to_multiple": "Spremenite anketo, da omogočite več izbir", "compose_form.poll.switch_to_single": "Spremenite anketo, da omogočite eno izbiro", - "compose_form.publish": "Tutni", + "compose_form.publish": "Objavi", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Shrani spremembe", "compose_form.sensitive.hide": "Označi medij kot občutljiv", @@ -118,7 +118,7 @@ "confirmations.block.confirm": "Blokiraj", "confirmations.block.message": "Ali ste prepričani, da želite blokirati {name}?", "confirmations.delete.confirm": "Izbriši", - "confirmations.delete.message": "Ali ste prepričani, da želite izbrisati to stanje?", + "confirmations.delete.message": "Ali ste prepričani, da želite izbrisati to objavo?", "confirmations.delete_list.confirm": "Izbriši", "confirmations.delete_list.message": "Ali ste prepričani, da želite trajno izbrisati ta seznam?", "confirmations.discard_edit_media.confirm": "Opusti", @@ -131,7 +131,7 @@ "confirmations.mute.explanation": "S tem boste skrili objave pred njimi in objave, ki jih omenjajo, še vedno pa bodo lahko videli vaše objave in vam sledili.", "confirmations.mute.message": "Ali ste prepričani, da želite utišati {name}?", "confirmations.redraft.confirm": "Izbriši in preoblikuj", - "confirmations.redraft.message": "Ali ste prepričani, da želite izbrisati ta status in ga preoblikovati? Vzljubi in spodbude bodo izgubljeni, odgovori na izvirno objavo pa bodo osiroteli.", + "confirmations.redraft.message": "Ali ste prepričani, da želite izbrisati ta status in ga preoblikovati? Vzljubi in izpostavitve bodo izgubljeni, odgovori na izvirno objavo pa bodo osiroteli.", "confirmations.reply.confirm": "Odgovori", "confirmations.reply.message": "Odgovarjanje bo prepisalo sporočilo, ki ga trenutno sestavljate. Ali ste prepričani, da želite nadaljevati?", "confirmations.unfollow.confirm": "Prenehaj slediti", @@ -161,16 +161,16 @@ "emoji_button.symbols": "Simboli", "emoji_button.travel": "Potovanja in Kraji", "empty_column.account_suspended": "Račun je suspendiran", - "empty_column.account_timeline": "Tukaj ni tutov!", + "empty_column.account_timeline": "Tukaj ni objav!", "empty_column.account_unavailable": "Profil ni na voljo", "empty_column.blocks": "Niste še blokirali nobenega uporabnika.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "Lokalna časovnica je prazna. Napišite nekaj javnega, da se bo žoga zakotalila!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "Nimate še nobenih neposrednih sporočil. Ko ga boste poslali ali prejeli, se bo prikazal tukaj.", "empty_column.domain_blocks": "Še vedno ni skritih domen.", "empty_column.explore_statuses": "Trenutno ni nič v trendu. Preverite znova kasneje!", - "empty_column.favourited_statuses": "Nimate priljubljenih tutov. Ko boste vzljubili kakšnega, se bo prikazal tukaj.", - "empty_column.favourites": "Nihče še ni vzljubil tega tuta. Ko ga bo nekdo, se bo pojavil tukaj.", + "empty_column.favourited_statuses": "Nimate priljubljenih objav. Ko boste vzljubili kakšno, bo prikazana tukaj.", + "empty_column.favourites": "Nihče še ni vzljubil te objave. Ko jo bo nekdo, se bo pojavila tukaj.", "empty_column.follow_recommendations": "Kaže, da za vas ni mogoče pripraviti nobenih predlogov. Poskusite uporabiti iskanje, da poiščete osebe, ki jih poznate, ali raziščete ključnike, ki so v trendu.", "empty_column.follow_requests": "Nimate prošenj za sledenje. Ko boste prejeli kakšno, se bo prikazala tukaj.", "empty_column.hashtag": "V tem ključniku še ni nič.", @@ -218,7 +218,7 @@ "hashtag.column_settings.tag_mode.none": "Nič od naštetega", "hashtag.column_settings.tag_toggle": "Za ta stolpec vključi dodatne oznake", "home.column_settings.basic": "Osnovno", - "home.column_settings.show_reblogs": "Pokaži spodbude", + "home.column_settings.show_reblogs": "Pokaži izpostavitve", "home.column_settings.show_replies": "Pokaži odgovore", "home.hide_announcements": "Skrij objave", "home.show_announcements": "Prikaži objave", @@ -227,11 +227,11 @@ "intervals.full.minutes": "{number, plural, one {# minuta} two {# minuti} few {# minute} other {# minut}}", "keyboard_shortcuts.back": "pojdi nazaj", "keyboard_shortcuts.blocked": "odpri seznam blokiranih uporabnikov", - "keyboard_shortcuts.boost": "spodbudi", + "keyboard_shortcuts.boost": "Izpostavi objavo", "keyboard_shortcuts.column": "fokusiraj na status v enemu od stolpcev", "keyboard_shortcuts.compose": "fokusiraj na območje za sestavljanje besedila", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Opis", + "keyboard_shortcuts.direct": "odpri stolpec za neposredna sporočila", "keyboard_shortcuts.down": "premakni se navzdol po seznamu", "keyboard_shortcuts.enter": "odpri status", "keyboard_shortcuts.favourite": "vzljubi", @@ -241,13 +241,13 @@ "keyboard_shortcuts.home": "odpri domačo časovnico", "keyboard_shortcuts.hotkey": "Hitra tipka", "keyboard_shortcuts.legend": "pokaži to legendo", - "keyboard_shortcuts.local": "odpri lokalno časovnico", + "keyboard_shortcuts.local": "Odpri krajevno časovnico", "keyboard_shortcuts.mention": "omeni avtorja", "keyboard_shortcuts.muted": "odpri seznam utišanih uporabnikov", "keyboard_shortcuts.my_profile": "odpri svoj profil", "keyboard_shortcuts.notifications": "odpri stolpec z obvestili", "keyboard_shortcuts.open_media": "to open media", - "keyboard_shortcuts.pinned": "odpri seznam pripetih tutov", + "keyboard_shortcuts.pinned": "Odpri seznam pripetih objav", "keyboard_shortcuts.profile": "odpri avtorjev profil", "keyboard_shortcuts.reply": "odgovori", "keyboard_shortcuts.requests": "odpri seznam s prošnjami za sledenje", @@ -256,7 +256,7 @@ "keyboard_shortcuts.start": "odpri stolpec \"začni\"", "keyboard_shortcuts.toggle_hidden": "prikaži/skrij besedilo za CW", "keyboard_shortcuts.toggle_sensitivity": "prikaži/skrij medije", - "keyboard_shortcuts.toot": "začni povsem nov tut", + "keyboard_shortcuts.toot": "Začni povsem novo objavo", "keyboard_shortcuts.unfocus": "odfokusiraj območje za sestavljanje besedila/iskanje", "keyboard_shortcuts.up": "premakni se navzgor po seznamu", "lightbox.close": "Zapri", @@ -289,7 +289,8 @@ "navigation_bar.blocks": "Blokirani uporabniki", "navigation_bar.bookmarks": "Zaznamki", "navigation_bar.community_timeline": "Lokalna časovnica", - "navigation_bar.compose": "Sestavi nov tut", + "navigation_bar.compose": "Sestavi novo objavo", + "navigation_bar.direct": "Neposredna sporočila", "navigation_bar.discover": "Odkrijte", "navigation_bar.domain_blocks": "Skrite domene", "navigation_bar.edit_profile": "Uredi profil", @@ -304,7 +305,7 @@ "navigation_bar.logout": "Odjava", "navigation_bar.mutes": "Utišani uporabniki", "navigation_bar.personal": "Osebno", - "navigation_bar.pins": "Pripeti tuti", + "navigation_bar.pins": "Pripete objave", "navigation_bar.preferences": "Nastavitve", "navigation_bar.public_timeline": "Združena časovnica", "navigation_bar.security": "Varnost", @@ -315,7 +316,7 @@ "notification.mention": "{name} vas je omenil/a", "notification.own_poll": "Vaša anketa se je končala", "notification.poll": "Glasovanje, v katerem ste sodelovali, se je končalo", - "notification.reblog": "{name} je spodbudil/a vaš status", + "notification.reblog": "{name} je izpostavila/a vašo objavo", "notification.status": "{name} je pravkar objavil/a", "notification.update": "{name} je uredil(a) objavo", "notifications.clear": "Počisti obvestila", @@ -331,7 +332,7 @@ "notifications.column_settings.mention": "Omembe:", "notifications.column_settings.poll": "Rezultati glasovanja:", "notifications.column_settings.push": "Potisna obvestila", - "notifications.column_settings.reblog": "Spodbude:", + "notifications.column_settings.reblog": "Izpostavitve:", "notifications.column_settings.show": "Prikaži v stolpcu", "notifications.column_settings.sound": "Predvajaj zvok", "notifications.column_settings.status": "New toots:", @@ -339,7 +340,7 @@ "notifications.column_settings.unread_notifications.highlight": "Poudari neprebrana obvestila", "notifications.column_settings.update": "Urejanja:", "notifications.filter.all": "Vse", - "notifications.filter.boosts": "Spodbude", + "notifications.filter.boosts": "Izpostavitev", "notifications.filter.favourites": "Priljubljeni", "notifications.filter.follows": "Sledi", "notifications.filter.mentions": "Omembe", @@ -366,12 +367,12 @@ "poll_button.remove_poll": "Odstrani anketo", "privacy.change": "Prilagodi zasebnost statusa", "privacy.direct.long": "Objavi samo omenjenim uporabnikom", - "privacy.direct.short": "Direct", + "privacy.direct.short": "Samo omenjeni", "privacy.private.long": "Objavi samo sledilcem", - "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all", + "privacy.private.short": "Samo sledilci", + "privacy.public.long": "Vidno vsem", "privacy.public.short": "Javno", - "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", + "privacy.unlisted.long": "Vidno za vse, vendar izključeno iz funkcionalnosti odkrivanja", "privacy.unlisted.short": "Ni prikazano", "refresh": "Osveži", "regeneration_indicator.label": "Nalaganje…", @@ -427,24 +428,24 @@ "report.unfollow_explanation": "Temu računu sledite. Da ne boste več videli njegovih objav v svojem domačem viru, mu prenehajte slediti.", "search.placeholder": "Iskanje", "search_popout.search_format": "Napredna oblika iskanja", - "search_popout.tips.full_text": "Enostavno besedilo vrne statuse, ki ste jih napisali, vzljubili, spodbudili ali ste bili v njih omenjeni, kot tudi ujemajoča se uporabniška imena, prikazna imena in ključnike.", + "search_popout.tips.full_text": "Enostavno besedilo vrne objave, ki ste jih napisali, vzljubili, izpostavili ali ste bili v njih omenjeni, kot tudi ujemajoča se uporabniška imena, prikazna imena in ključnike.", "search_popout.tips.hashtag": "ključnik", - "search_popout.tips.status": "stanje", + "search_popout.tips.status": "objava", "search_popout.tips.text": "Enostavno besedilo vrne ujemajoča se prikazna imena, uporabniška imena in ključnike", "search_popout.tips.user": "uporabnik", "search_results.accounts": "Ljudje", "search_results.all": "Vse", "search_results.hashtags": "Ključniki", "search_results.nothing_found": "Za ta iskalni niz ni zadetkov", - "search_results.statuses": "Tuti", - "search_results.statuses_fts_disabled": "Iskanje tutov po njihovi vsebini ni omogočeno na tem strežniku Mastodon.", + "search_results.statuses": "Objave", + "search_results.statuses_fts_disabled": "Iskanje objav po njihovi vsebini ni omogočeno na tem strežniku Mastodon.", "search_results.total": "{count, number} {count, plural, one {rezultat} other {rezultatov}}", "status.admin_account": "Odpri vmesnik za moderiranje za @{name}", "status.admin_status": "Odpri status v vmesniku za moderiranje", "status.block": "Blokiraj @{name}", "status.bookmark": "Dodaj med zaznamke", - "status.cancel_reblog_private": "Prekini spodbudo", - "status.cannot_reblog": "Te objave ni mogoče spodbuditi", + "status.cancel_reblog_private": "Prekliči izpostavitev", + "status.cannot_reblog": "Te objave ni mogoče izpostaviti", "status.copy": "Kopiraj povezavo do statusa", "status.delete": "Izbriši", "status.detailed_status": "Podroben pogled pogovora", @@ -465,12 +466,12 @@ "status.mute_conversation": "Utišaj pogovor", "status.open": "Razširi ta status", "status.pin": "Pripni na profil", - "status.pinned": "Pripeti tut", + "status.pinned": "Pripeta objava", "status.read_more": "Preberi več", - "status.reblog": "Spodbudi", - "status.reblog_private": "Spodbudi izvirnemu občinstvu", - "status.reblogged_by": "{name} spodbuja", - "status.reblogs.empty": "Nihče še ni spodbudil tega tuta. Ko se bo to zgodilo, se bodo pojavili tukaj.", + "status.reblog": "Izpostavi", + "status.reblog_private": "Izpostavi z izvirno vidljivostjo", + "status.reblogged_by": "{name} je izpostavil/a", + "status.reblogs.empty": "Nihče še ni izpostavil te objave. Ko se bo to zgodilo, se bodo pojavile tukaj.", "status.redraft": "Izbriši in preoblikuj", "status.remove_bookmark": "Odstrani zaznamek", "status.reply": "Odgovori", @@ -490,7 +491,7 @@ "suggestions.header": "Morda bi vas zanimalo…", "tabs_bar.federated_timeline": "Združeno", "tabs_bar.home": "Domov", - "tabs_bar.local_timeline": "Lokalno", + "tabs_bar.local_timeline": "Krajevno", "tabs_bar.notifications": "Obvestila", "tabs_bar.search": "Iskanje", "time_remaining.days": "{number, plural, one {# dan} other {# dni}} je ostalo", @@ -514,7 +515,7 @@ "upload_error.poll": "Prenos datoteke z anketami ni dovoljen.", "upload_form.audio_description": "Opiši za osebe z okvaro sluha", "upload_form.description": "Opišite za slabovidne", - "upload_form.description_missing": "No description added", + "upload_form.description_missing": "Noben opis ni bil dodan", "upload_form.edit": "Uredi", "upload_form.thumbnail": "Spremeni sličico", "upload_form.undo": "Izbriši", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 3535d4ea2..f51dbd002 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -70,7 +70,7 @@ "column.blocks": "Përdorues të bllokuar", "column.bookmarks": "Faqerojtës", "column.community": "Rrjedhë kohore vendore", - "column.conversations": "Biseda", + "column.direct": "Mesazhe të drejtpërdrejtë", "column.directory": "Shfletoni profile", "column.domain_blocks": "Përkatësi të bllokuara", "column.favourites": "Të parapëlqyer", @@ -166,7 +166,7 @@ "empty_column.blocks": "S’keni bllokuar ende ndonjë përdorues.", "empty_column.bookmarked_statuses": "S’keni faqeruajtur ende ndonjë mesazh. Kur faqeruani një të tillë, ai do të shfaqet këtu.", "empty_column.community": "Rrjedha kohore vendore është e zbrazët. Shkruani diçka publikisht që t’i hyhet valles!", - "empty_column.conversations": "Pasi të dërgoni ose merrni një postim që është i dukshëm vetëm për personat e përmendur në të, do të shfaqet këtu.", + "empty_column.direct": "S’keni ende ndonjë mesazh të drejtpërdrejtë. Kur dërgoni ose merrni një të tillë, ai do të shfaqet këtu.", "empty_column.domain_blocks": "Ende s’ka përkatësi të fshehura.", "empty_column.explore_statuses": "Asgjë në modë tani. Kontrolloni më vonë!", "empty_column.favourited_statuses": "S’keni ende ndonjë mesazh të parapëlqyer. Kur parapëlqeni një të tillë, ai do të shfaqet këtu.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "për përforcim", "keyboard_shortcuts.column": "për kalim fokusi mbi një gjendje te një nga shtyllat", "keyboard_shortcuts.compose": "për kalim fokusi te fusha e hartimit të mesazheve", - "keyboard_shortcuts.conversations": "për të hapur shtyllë bisedash", "keyboard_shortcuts.description": "Përshkrim", + "keyboard_shortcuts.direct": "për hapje shtylle mesazhesh të drejtpërdrejtë", "keyboard_shortcuts.down": "për zbritje poshtë nëpër listë", "keyboard_shortcuts.enter": "për hapje gjendjeje", "keyboard_shortcuts.favourite": "për t’i vënë shenjë si të parapëlqyer", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Faqerojtës", "navigation_bar.community_timeline": "Rrjedhë kohore vendore", "navigation_bar.compose": "Hartoni mesazh të ri", + "navigation_bar.direct": "Mesazhe të drejtpërdrejtë", "navigation_bar.discover": "Zbuloni", "navigation_bar.domain_blocks": "Përkatësi të bllokuara", "navigation_bar.edit_profile": "Përpunoni profilin", @@ -366,7 +367,7 @@ "poll_button.remove_poll": "Hiqe pyetësorin", "privacy.change": "Rregulloni privatësi mesazhesh", "privacy.direct.long": "I dukshëm vetëm për përdorues të përmendur", - "privacy.direct.short": "Vetëm persona që përmend", + "privacy.direct.short": "Vetëm për personat e përmendur", "privacy.private.long": "I dukshëm vetëm për ndjekës", "privacy.private.short": "Vetëm ndjekës", "privacy.public.long": "I dukshëm për të tërë", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index e732873c4..453ff7a0e 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -70,7 +70,7 @@ "column.blocks": "Blokirani korisnici", "column.bookmarks": "Bookmarks", "column.community": "Lokalna lajna", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Browse profiles", "column.domain_blocks": "Hidden domains", "column.favourites": "Omiljeni", @@ -166,7 +166,7 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "Lokalna lajna je prazna. Napišite nešto javno da lajna produva!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "There are no hidden domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "da podržite", "keyboard_shortcuts.column": "da se prebacite na status u jednoj od kolona", "keyboard_shortcuts.compose": "da se prebacite na pisanje novog tuta", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Opis", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "da se pomerite na dole u listi", "keyboard_shortcuts.enter": "da otvorite status", "keyboard_shortcuts.favourite": "da označite kao omiljeno", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Lokalna lajna", "navigation_bar.compose": "Compose new toot", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Izmeni profil", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 15f8640c6..f183c343c 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -70,7 +70,7 @@ "column.blocks": "Блокирани корисници", "column.bookmarks": "Обележивачи", "column.community": "Локална временска линија", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Претражи налоге", "column.domain_blocks": "Скривени домени", "column.favourites": "Омиљене", @@ -166,7 +166,7 @@ "empty_column.blocks": "Још увек немате блокираних корисника.", "empty_column.bookmarked_statuses": "Још увек немате обележене трубе. Када их обележите, појавиће се овде.", "empty_column.community": "Локална временска линија је празна. Напишите нешто јавно да започнете!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Још увек нема сакривених домена.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Још увек немате труба које су вам се свиделе. Када вам се једна свиди, појавиће се овде.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "да подржите", "keyboard_shortcuts.column": "да се пребаците на статус у једној од колона", "keyboard_shortcuts.compose": "да се пребаците на писање новог тута", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Опис", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "да се померите на доле у листи", "keyboard_shortcuts.enter": "да отворите статус", "keyboard_shortcuts.favourite": "да означите као омиљено", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Маркери", "navigation_bar.community_timeline": "Локална временска линија", "navigation_bar.compose": "Саставите нову трубу", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Откриј", "navigation_bar.domain_blocks": "Сакривени домени", "navigation_bar.edit_profile": "Измени налог", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 15d2f7aeb..0741f14d0 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -70,7 +70,7 @@ "column.blocks": "Blockerade användare", "column.bookmarks": "Bokmärken", "column.community": "Lokal tidslinje", - "column.conversations": "Konversationer", + "column.direct": "Direktmeddelanden", "column.directory": "Bläddra bland profiler", "column.domain_blocks": "Dolda domäner", "column.favourites": "Favoriter", @@ -80,7 +80,7 @@ "column.mutes": "Tystade användare", "column.notifications": "Aviseringar", "column.pins": "Nålade toots", - "column.public": "Förenad tidslinje", + "column.public": "Federerad tidslinje", "column_back_button.label": "Tillbaka", "column_header.hide_settings": "Dölj inställningar", "column_header.moveLeft_settings": "Flytta kolumnen åt vänster", @@ -166,7 +166,7 @@ "empty_column.blocks": "Du har ännu ej blockerat några användare.", "empty_column.bookmarked_statuses": "Du har inte bokmärkt några tutar än. När du gör ett bokmärke kommer det synas här.", "empty_column.community": "Den lokala tidslinjen är tom. Skriv något offentligt för att sätta bollen i rullning!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "Du har inga direktmeddelanden. När du skickar eller tar emot ett direktmeddelande kommer det att visas här.", "empty_column.domain_blocks": "Det finns ännu inga dolda domäner.", "empty_column.explore_statuses": "Ingenting är trendigt just nu. Kom tillbaka senare!", "empty_column.favourited_statuses": "Du har inga favoritmarkerade toots än. När du favoritmarkerar en kommer den visas här.", @@ -230,13 +230,13 @@ "keyboard_shortcuts.boost": "för att knuffa", "keyboard_shortcuts.column": "för att fokusera en status i en av kolumnerna", "keyboard_shortcuts.compose": "för att fokusera skrivfältet", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Beskrivning", + "keyboard_shortcuts.direct": "för att öppna Direktmeddelanden", "keyboard_shortcuts.down": "för att flytta nedåt i listan", "keyboard_shortcuts.enter": "för att öppna en status", "keyboard_shortcuts.favourite": "för att sätta som favorit", "keyboard_shortcuts.favourites": "för att öppna Favoriter", - "keyboard_shortcuts.federated": "för att öppna Förenad tidslinje", + "keyboard_shortcuts.federated": "Öppna federerad tidslinje", "keyboard_shortcuts.heading": "Tangentbordsgenvägar", "keyboard_shortcuts.home": "för att öppna Hem-tidslinjen", "keyboard_shortcuts.hotkey": "Kommando", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Bokmärken", "navigation_bar.community_timeline": "Lokal tidslinje", "navigation_bar.compose": "Författa ny toot", + "navigation_bar.direct": "Direktmeddelanden", "navigation_bar.discover": "Upptäck", "navigation_bar.domain_blocks": "Dolda domäner", "navigation_bar.edit_profile": "Redigera profil", @@ -306,7 +307,7 @@ "navigation_bar.personal": "Personligt", "navigation_bar.pins": "Nålade inlägg (toots)", "navigation_bar.preferences": "Inställningar", - "navigation_bar.public_timeline": "Förenad tidslinje", + "navigation_bar.public_timeline": "Federerad tidslinje", "navigation_bar.security": "Säkerhet", "notification.admin.sign_up": "{name} registrerade sig", "notification.favourite": "{name} favoriserade din status", @@ -366,7 +367,7 @@ "poll_button.remove_poll": "Ta bort omröstning", "privacy.change": "Justera sekretess", "privacy.direct.long": "Skicka endast till nämnda användare", - "privacy.direct.short": "Bara personer jag nämner", + "privacy.direct.short": "Direct", "privacy.private.long": "Endast synligt för följare", "privacy.private.short": "Endast följare", "privacy.public.long": "Synlig för alla", @@ -488,7 +489,7 @@ "status.unpin": "Ångra fäst i profil", "suggestions.dismiss": "Avfärda förslag", "suggestions.header": "Du kanske är intresserad av…", - "tabs_bar.federated_timeline": "Förenad", + "tabs_bar.federated_timeline": "Federerad", "tabs_bar.home": "Hem", "tabs_bar.local_timeline": "Lokal", "tabs_bar.notifications": "Aviseringar", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index 09d473ef4..c4baf0533 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -70,7 +70,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", @@ -166,7 +166,7 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "There are no blocked domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "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.favourite": "to favourite", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index e8c9757ad..4d159b844 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -70,7 +70,7 @@ "column.blocks": "தடுக்கப்பட்ட பயனர்கள்", "column.bookmarks": "அடையாளக்குறிகள்", "column.community": "சுய நிகழ்வு காலவரிசை", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "சுயவிவரங்களை உலாவு", "column.domain_blocks": "மறைந்திருக்கும் திரளங்கள்", "column.favourites": "பிடித்தவைகள்", @@ -166,7 +166,7 @@ "empty_column.blocks": "நீங்கள் இதுவரை எந்தப் பயனர்களையும் முடக்கியிருக்கவில்லை.", "empty_column.bookmarked_statuses": "உங்களிடம் அடையாளக்குறியிட்ட டூட்டுகள் எவையும் இல்லை. அடையாளக்குறியிட்ட பிறகு அவை இங்கே காட்டப்படும்.", "empty_column.community": "உங்கள் மாஸ்டடான் முச்சந்தியில் யாரும் இல்லை. எதையேனும் எழுதி ஆட்டத்தைத் துவக்குங்கள்!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "தடுக்கப்பட்டக் களங்கள் இதுவரை இல்லை.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "உங்களுக்குப் பிடித்த டூட்டுகள் இதுவரை இல்லை. ஒரு டூட்டில் நீங்கள் விருப்பக்குறி இட்டால், அது இங்கே காண்பிக்கப்படும்.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "பகிர", "keyboard_shortcuts.column": "ஏதேனும் ஒரு நெடுவரிசையில் உள்ள டூட்டுல் கவனம் செலுத்த", "keyboard_shortcuts.compose": "பதிவு எழுதும் பெட்டியில் கவனம் செலுத்த", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "விவரம்", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "பட்டியலின் கீழே செல்ல", "keyboard_shortcuts.enter": "டூட்டைத் திறக்க", "keyboard_shortcuts.favourite": "விருப்பக்குறி இட", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "அடையாளக்குறிகள்", "navigation_bar.community_timeline": "உள்ளூர் காலக்கெடு", "navigation_bar.compose": "புதியவற்றை எழுதுக toot", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "கண்டு பிடி", "navigation_bar.domain_blocks": "மறைந்த களங்கள்", "navigation_bar.edit_profile": "சுயவிவரத்தைத் திருத்தவும்", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index d76b9a451..37f0bf261 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -70,7 +70,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", @@ -166,7 +166,7 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "There are no blocked domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "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.favourite": "to favourite", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index 8eb92f7ad..9c46c7950 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -70,7 +70,7 @@ "column.blocks": "బ్లాక్ చేయబడిన వినియోగదారులు", "column.bookmarks": "Bookmarks", "column.community": "స్థానిక కాలక్రమం", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Browse profiles", "column.domain_blocks": "దాచిన డొమైన్లు", "column.favourites": "ఇష్టపడినవి", @@ -166,7 +166,7 @@ "empty_column.blocks": "మీరు ఇంకా ఏ వినియోగదారులనూ బ్లాక్ చేయలేదు.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "స్థానిక కాలక్రమం ఖాళీగా ఉంది. మొదలుపెట్టడానికి బహిరంగంగా ఏదో ఒకటి వ్రాయండి!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "దాచబడిన డొమైన్లు ఇంకా ఏమీ లేవు.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "మీకు ఇష్టపడిన టూట్లు ఇంకా ఎమీ లేవు. మీరు ఒకదానిని ఇష్టపడినప్పుడు, అది ఇక్కడ కనిపిస్తుంది.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "బూస్ట్ చేయడానికి", "keyboard_shortcuts.column": "నిలువు వరుసలలో ఒకదానిపై దృష్టి పెట్టడానికి", "keyboard_shortcuts.compose": "కంపోజ్ టెక్స్ట్ఏరియా పై దృష్టి పెట్టడానికి", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "Description", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "జాబితాలో క్రిందికి వెళ్ళడానికి", "keyboard_shortcuts.enter": "to open status", "keyboard_shortcuts.favourite": "ఇష్టపడడానికి", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "స్థానిక కాలక్రమం", "navigation_bar.compose": "కొత్త టూట్ను రాయండి", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "కనుగొను", "navigation_bar.domain_blocks": "దాచిన డొమైన్లు", "navigation_bar.edit_profile": "ప్రొఫైల్ని సవరించండి", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 423d3efd4..b2bbf78b3 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -70,7 +70,7 @@ "column.blocks": "ผู้ใช้ที่ปิดกั้นอยู่", "column.bookmarks": "ที่คั่นหน้า", "column.community": "เส้นเวลาในเซิร์ฟเวอร์", - "column.conversations": "การสนทนา", + "column.direct": "ข้อความโดยตรง", "column.directory": "เรียกดูโปรไฟล์", "column.domain_blocks": "โดเมนที่ปิดกั้นอยู่", "column.favourites": "รายการโปรด", @@ -166,7 +166,7 @@ "empty_column.blocks": "คุณยังไม่ได้ปิดกั้นผู้ใช้ใด ๆ", "empty_column.bookmarked_statuses": "คุณยังไม่มีโพสต์ที่เพิ่มที่คั่นหน้าไว้ใด ๆ เมื่อคุณเพิ่มที่คั่นหน้าโพสต์ โพสต์จะปรากฏที่นี่", "empty_column.community": "เส้นเวลาในเซิร์ฟเวอร์ว่างเปล่า เขียนบางอย่างเป็นสาธารณะเพื่อเริ่มต้น!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "คุณยังไม่มีข้อความโดยตรงใด ๆ เมื่อคุณส่งหรือรับข้อความ ข้อความจะปรากฏที่นี่", "empty_column.domain_blocks": "ยังไม่มีโดเมนที่ปิดกั้นอยู่", "empty_column.explore_statuses": "ไม่มีสิ่งใดที่กำลังนิยมในตอนนี้ กลับมาตรวจสอบในภายหลัง!", "empty_column.favourited_statuses": "คุณยังไม่มีโพสต์ที่ชื่นชอบใด ๆ เมื่อคุณชื่นชอบโพสต์ โพสต์จะปรากฏที่นี่", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "ดันโพสต์", "keyboard_shortcuts.column": "โฟกัสคอลัมน์", "keyboard_shortcuts.compose": "โฟกัสพื้นที่เขียนข้อความ", - "keyboard_shortcuts.conversations": "เพื่อเปิดคอลัมน์การสนทนา", "keyboard_shortcuts.description": "คำอธิบาย", + "keyboard_shortcuts.direct": "เพื่อเปิดคอลัมน์ข้อความโดยตรง", "keyboard_shortcuts.down": "ย้ายลงในรายการ", "keyboard_shortcuts.enter": "เปิดโพสต์", "keyboard_shortcuts.favourite": "ชื่นชอบโพสต์", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "ที่คั่นหน้า", "navigation_bar.community_timeline": "เส้นเวลาในเซิร์ฟเวอร์", "navigation_bar.compose": "เขียนโพสต์ใหม่", + "navigation_bar.direct": "ข้อความโดยตรง", "navigation_bar.discover": "ค้นพบ", "navigation_bar.domain_blocks": "โดเมนที่ปิดกั้นอยู่", "navigation_bar.edit_profile": "แก้ไขโปรไฟล์", @@ -366,7 +367,7 @@ "poll_button.remove_poll": "เอาการสำรวจความคิดเห็นออก", "privacy.change": "เปลี่ยนความเป็นส่วนตัวของโพสต์", "privacy.direct.long": "ปรากฏแก่ผู้ใช้ที่กล่าวถึงเท่านั้น", - "privacy.direct.short": "เฉพาะผู้คนที่ฉันกล่าวถึงเท่านั้น", + "privacy.direct.short": "ผู้คนที่กล่าวถึงเท่านั้น", "privacy.private.long": "ปรากฏแก่ผู้ติดตามเท่านั้น", "privacy.private.short": "ผู้ติดตามเท่านั้น", "privacy.public.long": "ปรากฏแก่ทั้งหมด", @@ -512,13 +513,13 @@ "upload_button.label": "เพิ่มไฟล์ภาพ, วิดีโอ หรือเสียง", "upload_error.limit": "เกินขีดจำกัดการอัปโหลดไฟล์", "upload_error.poll": "ไม่อนุญาตให้อัปโหลดไฟล์กับการลงคะแนน", - "upload_form.audio_description": "อธิบายสำหรับผู้สูญเสียการได้ยิน", + "upload_form.audio_description": "อธิบายสำหรับผู้ที่สูญเสียการได้ยิน", "upload_form.description": "อธิบายสำหรับผู้บกพร่องทางการมองเห็น", "upload_form.description_missing": "ไม่มีการเพิ่มคำอธิบาย", "upload_form.edit": "แก้ไข", "upload_form.thumbnail": "เปลี่ยนภาพขนาดย่อ", "upload_form.undo": "ลบ", - "upload_form.video_description": "อธิบายสำหรับผู้สูญเสียการได้ยินหรือบกพร่องทางการมองเห็น", + "upload_form.video_description": "อธิบายสำหรับผู้ที่สูญเสียการได้ยินหรือบกพร่องทางการมองเห็น", "upload_modal.analyzing_picture": "กำลังวิเคราะห์รูปภาพ…", "upload_modal.apply": "นำไปใช้", "upload_modal.applying": "กำลังนำไปใช้…", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index bc0e8f721..b16b5577c 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -70,7 +70,7 @@ "column.blocks": "Engellenen kullanıcılar", "column.bookmarks": "Yer İmleri", "column.community": "Yerel zaman tüneli", - "column.conversations": "Sohbetler", + "column.direct": "Doğrudan iletiler", "column.directory": "Profillere göz at", "column.domain_blocks": "Engellenen alan adları", "column.favourites": "Favoriler", @@ -166,7 +166,7 @@ "empty_column.blocks": "Henüz herhangi bir kullanıcıyı engellemedin.", "empty_column.bookmarked_statuses": "Henüz yer imine eklediğin toot yok. Bir tanesi yer imine eklendiğinde burada görünür.", "empty_column.community": "Yerel zaman çizelgesi boş. Daha fazla eğlence için herkese açık bir gönderi paylaşın!", - "empty_column.conversations": "Sadece bahsedilen kişilere özel gönderi paylaştığında veya bu gizlilik seçeneğinde bir gönderi aldığında bu sayfada gözükecek.", + "empty_column.direct": "Henüz doğrudan iletiniz yok. Bir tane gönderdiğinizde veya aldığınız burada listelenecekler.", "empty_column.domain_blocks": "Henüz engellenmiş bir alan adı yok.", "empty_column.explore_statuses": "Şu an öne çıkan birşey yok. Daha sonra tekrar bakın!", "empty_column.favourited_statuses": "Favori tootun yok. Favori tootun olduğunda burada görünür.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "gönderiyi boostla", "keyboard_shortcuts.column": "sütunlardan birindeki duruma odaklanmak için", "keyboard_shortcuts.compose": "yazma alanına odaklanmak için", - "keyboard_shortcuts.conversations": "sohbetler sütununu açmak için", "keyboard_shortcuts.description": "Açıklama", + "keyboard_shortcuts.direct": "doğrudan iletiler sütununu açmak için", "keyboard_shortcuts.down": "listede aşağıya inmek için", "keyboard_shortcuts.enter": "gönderiyi aç", "keyboard_shortcuts.favourite": "gönderiyi favorilerine ekle", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Yer İmleri", "navigation_bar.community_timeline": "Yerel Zaman Tüneli", "navigation_bar.compose": "Yeni gönderi yaz", + "navigation_bar.direct": "Doğrudan iletiler", "navigation_bar.discover": "Keşfet", "navigation_bar.domain_blocks": "Engellenen alan adları", "navigation_bar.edit_profile": "Profili düzenle", @@ -315,7 +316,7 @@ "notification.mention": "{name} senden bahsetti", "notification.own_poll": "Anketiniz sona erdi", "notification.poll": "Oy verdiğiniz bir anket sona erdi", - "notification.reblog": "{name} gönderini teşvik etti", + "notification.reblog": "{name} gönderini boostladı", "notification.status": "{name} az önce gönderdi", "notification.update": "{name} bir gönderiyi düzenledi", "notifications.clear": "Bildirimleri temizle", @@ -366,7 +367,7 @@ "poll_button.remove_poll": "Anketi kaldır", "privacy.change": "Gönderi gizliliğini değiştir", "privacy.direct.long": "Sadece bahsedilen kullanıcılar için görünür", - "privacy.direct.short": "Sadece bahsettiğim kişiler", + "privacy.direct.short": "Sadece bahsedilen kişiler", "privacy.private.long": "Sadece takipçiler için görünür", "privacy.private.short": "Sadece takipçiler", "privacy.public.long": "Herkese açık", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index bd20b1efe..8e78f551f 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -70,7 +70,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Кыстыргычлар", "column.community": "Local timeline", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", @@ -166,7 +166,7 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "There are no blocked domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", - "keyboard_shortcuts.conversations": "to open conversations column", "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.favourite": "to favourite", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Кыстыргычлар", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Профильны үзгәртү", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index 09d473ef4..c4baf0533 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -70,7 +70,7 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", @@ -166,7 +166,7 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "There are no blocked domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "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.favourite": "to favourite", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Edit profile", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 16d4e0b3b..2dfa8ccd9 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -6,30 +6,30 @@ "account.block": "Заблокувати @{name}", "account.block_domain": "Заблокувати домен {domain}", "account.blocked": "Заблоковані", - "account.browse_more_on_origin_server": "Переглянути більше в оригіналі", + "account.browse_more_on_origin_server": "Переглянути більше в оригінальному профілі", "account.cancel_follow_request": "Скасувати запит на підписку", - "account.direct": "Пряме повідомлення @{name}", + "account.direct": "Надіслати пряме повідомлення @{name}", "account.disable_notifications": "Не повідомляти мене про дописи @{name}", - "account.domain_blocked": "Домен приховано", + "account.domain_blocked": "Домен заблоковано", "account.edit_profile": "Редагувати профіль", "account.enable_notifications": "Повідомляти мене про дописи @{name}", - "account.endorse": "Публікувати у профілі", + "account.endorse": "Рекомендувати у профілі", "account.follow": "Підписатися", "account.followers": "Підписники", - "account.followers.empty": "Ніхто ще не підписався на цього користувача.", - "account.followers_counter": "{count, plural, one {{counter} Підписник} few {{counter} Підписники} many {{counter} Підписників} other {{counter} Підписники}}", - "account.following": "Стежите", - "account.following_counter": "{count, plural, one {{counter} Підписка} few {{counter} Підписки} many {{counter} Підписок} other {{counter} Підписки}}", + "account.followers.empty": "Ніхто ще не підписаний на цього користувача.", + "account.followers_counter": "{count, plural, one {{counter} підписник} few {{counter} підписника} many {{counter} підписників} other {{counter} підписники}}", + "account.following": "Ви стежите", + "account.following_counter": "{count, plural, one {{counter} підписка} few {{counter} підписки} many {{counter} підписок} other {{counter} підписки}}", "account.follows.empty": "Цей користувач ще ні на кого не підписався.", - "account.follows_you": "Підписаний(-а) на вас", - "account.hide_reblogs": "Сховати передмухи від @{name}", - "account.joined": "Долучення {date}", + "account.follows_you": "Підписані на вас", + "account.hide_reblogs": "Сховати поширення від @{name}", + "account.joined": "Долучилися {date}", "account.link_verified_on": "Права власності на це посилання були перевірені {date}", - "account.locked_info": "Статус конфіденційності цього облікового запису встановлено у заблокований. Власник вручну переглядає, хто може за ним стежити.", + "account.locked_info": "Це закритий обліковий запис. Власник вручну обирає, хто може на нього підписуватися.", "account.media": "Медіа", "account.mention": "Згадати @{name}", "account.moved_to": "{name} переїхав на:", - "account.mute": "Нехтувати @{name}", + "account.mute": "Приховати @{name}", "account.mute_notifications": "Не показувати сповіщення від @{name}", "account.muted": "Нехтується", "account.posts": "Дмухи", @@ -48,38 +48,38 @@ "account.unmute_notifications": "Показувати сповіщення від @{name}", "account.unmute_short": "Не нехтувати", "account_note.placeholder": "Коментарі відсутні", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Щоденний показник утримання користувачів після реєстрації", + "admin.dashboard.monthly_retention": "Щомісячний показник утримання користувачів після реєстрації", "admin.dashboard.retention.average": "Середнє", "admin.dashboard.retention.cohort": "Місяць реєстрації", "admin.dashboard.retention.cohort_size": "Нові користувачі", "alert.rate_limited.message": "Спробуйте ще раз через {retry_time, time, medium}.", "alert.rate_limited.title": "Швидкість обмежена", - "alert.unexpected.message": "Трапилась неочікувана помилка.", + "alert.unexpected.message": "Сталася неочікувана помилка.", "alert.unexpected.title": "Ой!", "announcement.announcement": "Оголошення", "attachments_list.unprocessed": "(не оброблено)", "autosuggest_hashtag.per_week": "{count} в тиждень", "boost_modal.combo": "Ви можете натиснути {combo}, щоб пропустити це наступного разу", - "bundle_column_error.body": "Щось пішло не так під час завантаження компоненту.", + "bundle_column_error.body": "Щось пішло не так під час завантаження цього компоненту.", "bundle_column_error.retry": "Спробуйте ще раз", "bundle_column_error.title": "Помилка мережі", "bundle_modal_error.close": "Закрити", - "bundle_modal_error.message": "Щось пішло не так під час завантаження компоненту.", + "bundle_modal_error.message": "Щось пішло не так під час завантаження цього компоненту.", "bundle_modal_error.retry": "Спробувати ще раз", "column.blocks": "Заблоковані користувачі", "column.bookmarks": "Закладки", "column.community": "Локальна стрічка", - "column.conversations": "Бесіди", + "column.direct": "Прямі повідомлення", "column.directory": "Переглянути профілі", - "column.domain_blocks": "Приховані домени", + "column.domain_blocks": "Заблоковані домени", "column.favourites": "Вподобане", "column.follow_requests": "Запити на підписку", "column.home": "Головна", "column.lists": "Списки", "column.mutes": "Нехтувані користувачі", "column.notifications": "Сповіщення", - "column.pins": "Закріплені дмухи", + "column.pins": "Закріплені дописи", "column.public": "Глобальна стрічка", "column_back_button.label": "Назад", "column_header.hide_settings": "Приховати налаштування", @@ -89,22 +89,22 @@ "column_header.show_settings": "Показати налаштування", "column_header.unpin": "Відкріпити", "column_subheading.settings": "Налаштування", - "community.column_settings.local_only": "Тільки локальні", - "community.column_settings.media_only": "Тільки медіа", - "community.column_settings.remote_only": "Тільки видалені", + "community.column_settings.local_only": "Лише локальні", + "community.column_settings.media_only": "Лише з медіа", + "community.column_settings.remote_only": "Лише віддалені", "compose_form.direct_message_warning_learn_more": "Дізнатися більше", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", - "compose_form.hashtag_warning": "Цей дмух не буде відображений у жодній стрічці хештеґу, оскільки він прихований. Тільки публічні дмухи можуть бути знайдені за хештеґом.", - "compose_form.lock_disclaimer": "Ваш акаунт не {locked}. Будь-який користувач може підписатися на вас та переглядати ваші приватні пости.", + "compose_form.encryption_warning": "Дописи на Mastodon не захищені шифруванням. Не поширюйте жодну потенційно небезпечну інформацію.", + "compose_form.hashtag_warning": "Цей допис не буде зображений у жодній стрічці гештеґу, оскільки він прихований. Тільки публічні дописи можуть бути знайдені за гештеґом.", + "compose_form.lock_disclaimer": "Ваш обліковий запис не {locked}. Будь-який користувач може підписатися на вас та переглядати ваші дописи для підписників.", "compose_form.lock_disclaimer.lock": "приватний", "compose_form.placeholder": "Що у вас на думці?", "compose_form.poll.add_option": "Додати варіант", "compose_form.poll.duration": "Тривалість опитування", "compose_form.poll.option_placeholder": "Варіант {number}", "compose_form.poll.remove_option": "Видалити цей варіант", - "compose_form.poll.switch_to_multiple": "Перемкнути у режим вибору декількох відповідей", + "compose_form.poll.switch_to_multiple": "Дозволити вибір декількох відповідей", "compose_form.poll.switch_to_single": "Перемкнути у режим вибору однієї відповіді", - "compose_form.publish": "Дмухнути", + "compose_form.publish": "Надіслати", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Зберегти зміни", "compose_form.sensitive.hide": "{count, plural, one {Позначити медіа делікатним} other {Позначити медіа делікатними}}", @@ -123,67 +123,67 @@ "confirmations.delete_list.message": "Ви впевнені, що хочете видалити цей список назавжди?", "confirmations.discard_edit_media.confirm": "Відкинути", "confirmations.discard_edit_media.message": "У вас є незбережені зміни в описі медіа або попереднього перегляду, все одно відкинути їх?", - "confirmations.domain_block.confirm": "Сховати весь домен", - "confirmations.domain_block.message": "Ви точно, точно впевнені, що хочете заблокувати весь домен {domain}? У більшості випадків для нормальної роботи краще заблокувати або нехтувати лише деяких користувачів. Ви не зможете бачити контент з цього домену у будь-яких стрічках або ваших сповіщеннях. Ваші підписники з цього домену будуть відписані від вас.", + "confirmations.domain_block.confirm": "Заблокувати весь домен", + "confirmations.domain_block.message": "Ви точно, точно впевнені, що хочете заблокувати весь домен {domain}? У більшості випадків для нормальної роботи краще заблокувати або приховати лише деяких користувачів. Ви не зможете бачити контент з цього домену у будь-яких стрічках або ваших сповіщеннях. Ваші підписники з цього домену будуть відписані від вас.", "confirmations.logout.confirm": "Вийти", "confirmations.logout.message": "Ви впевнені, що хочете вийти?", "confirmations.mute.confirm": "Нехтуавти", "confirmations.mute.explanation": "Це сховає дописи від них і дописи зі згадками про них, проте вони все одно матимуть змогу бачити ваші дописи й підписуватися на вас.", - "confirmations.mute.message": "Ви впевнені, що хочете нехтувати {name}?", - "confirmations.redraft.confirm": "Видалити та перестворити", - "confirmations.redraft.message": "Ви впевнені, що хочете видалити допис і перестворити його? Ви втратите всі відповіді, передмухи та вподобайки допису.", + "confirmations.mute.message": "Ви впевнені, що хочете приховати {name}?", + "confirmations.redraft.confirm": "Видалити та виправити", + "confirmations.redraft.message": "Ви впевнені, що хочете відредагувати допис? Ви втратите всі відповіді, поширення та вподобайки допису.", "confirmations.reply.confirm": "Відповісти", - "confirmations.reply.message": "Поточна відповідь перезапише повідомлення, яке ви зараз пишете. Ви впевнені, що хочете продовжити?", + "confirmations.reply.message": "Нова відповідь перезапише повідомлення, яке ви зараз пишете. Ви впевнені, що хочете продовжити?", "confirmations.unfollow.confirm": "Відписатися", "confirmations.unfollow.message": "Ви впевнені, що хочете відписатися від {name}?", - "conversation.delete": "Видалити цю бесіду", + "conversation.delete": "Видалити бесіду", "conversation.mark_as_read": "Позначити як прочитане", "conversation.open": "Переглянути бесіду", "conversation.with": "З {names}", "directory.federated": "З відомого федесвіту", - "directory.local": "Тільки з домену {domain}", + "directory.local": "Лише з домену {domain}", "directory.new_arrivals": "Нові надходження", - "directory.recently_active": "Активні нещодавно", - "embed.instructions": "Вбудуйте цей статус до вашого вебсайту, скопіювавши код нижче.", + "directory.recently_active": "Нещодавно активні", + "embed.instructions": "Вбудуйте цей допис до вашого вебсайту, скопіювавши код нижче.", "embed.preview": "Ось як він виглядатиме:", - "emoji_button.activity": "Заняття", - "emoji_button.custom": "Особливі", + "emoji_button.activity": "Діяльність", + "emoji_button.custom": "Власні", "emoji_button.flags": "Прапори", "emoji_button.food": "Їжа та напої", - "emoji_button.label": "Вставити емодзі", + "emoji_button.label": "Вставити емоджі", "emoji_button.nature": "Природа", - "emoji_button.not_found": "Немає емодзі!! (╯°□°)╯︵ ┻━┻", + "emoji_button.not_found": "Немає емоджі!! (╯°□°)╯︵ ┻━┻", "emoji_button.objects": "Предмети", "emoji_button.people": "Люди", "emoji_button.recent": "Часто використовувані", "emoji_button.search": "Шукати...", "emoji_button.search_results": "Результати пошуку", "emoji_button.symbols": "Символи", - "emoji_button.travel": "Подорожі", + "emoji_button.travel": "Подорожі та місця", "empty_column.account_suspended": "Обліковий запис заблоковано", - "empty_column.account_timeline": "Тут дмухалок немає!", + "empty_column.account_timeline": "Тут немає дописів!", "empty_column.account_unavailable": "Профіль недоступний", "empty_column.blocks": "Ви ще не заблокували жодного користувача.", - "empty_column.bookmarked_statuses": "У вас ще немає дмухів у закладках. Коли ви щось додасте до заклкдок, воно з'явиться тут.", + "empty_column.bookmarked_statuses": "У вас ще немає дописів у закладках. Коли ви щось додасте до закладок, воно з'явиться тут.", "empty_column.community": "Локальна стрічка пуста. Напишіть щось, щоб розігріти народ!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "У вас ще немає прямих повідомлень. Коли ви щось отримаєте чи надішлете, воно з'явиться тут.", "empty_column.domain_blocks": "Тут поки немає прихованих доменів.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", - "empty_column.favourited_statuses": "У вас ще немає вподобаних дмухів. Коли ви щось вподобаєте, воно з'явиться тут.", - "empty_column.favourites": "Ніхто ще не вподобав цього дмуху. Коли хтось це зробить, вони з'являться тут.", - "empty_column.follow_recommendations": "Схоже, для вас не буде створено жодної пропозиції. Ви можете спробувати скористатися пошуком людей, яких ви можете знати або переглянути популярні хештеґи.", + "empty_column.explore_statuses": "Нема нічого популярного. Подивіться пізніше!", + "empty_column.favourited_statuses": "У вас ще немає вподобаних дописів. Коли ви щось вподобаєте, воно з'явиться тут.", + "empty_column.favourites": "Ніхто ще не вподобав цей допис. Коли хтось це зробить, він з'явиться тут.", + "empty_column.follow_recommendations": "Схоже, для вас не було створено жодної пропозиції. Ви можете спробувати скористатися пошуком людей, яких ви можете знати, або переглянути популярні гештеґи.", "empty_column.follow_requests": "У вас ще немає запитів на підписку. Коли ви їх отримаєте, вони з'являться тут.", - "empty_column.hashtag": "Дописів з цим хештегом поки не існує.", - "empty_column.home": "Ви поки ні на кого не підписані. Погортайте {public}, або скористуйтесь пошуком, щоб освоїтися та познайомитися з іншими користувачами.", + "empty_column.hashtag": "Дописів з цим гештеґом поки не існує.", + "empty_column.home": "Ваша стрічка порожня! Підпишіться на інших, щоб її заповнити. {suggestions}", "empty_column.home.suggestions": "Переглянути пропозиції", - "empty_column.list": "Немає нічого в цьому списку. Коли його учасники дмухнуть нові статуси, вони з'являться тут.", + "empty_column.list": "Цей список порожній. Коли його учасники додадуть нові дописи, вони з'являться тут.", "empty_column.lists": "У вас ще немає списків. Коли ви їх створите, вони з'являться тут.", "empty_column.mutes": "Ви ще не нехтуєте жодного користувача.", "empty_column.notifications": "У вас ще немає сповіщень. Переписуйтесь з іншими користувачами, щоб почати розмову.", - "empty_column.public": "Тут поки нічого немає! Опублікуйте щось, або вручну підпишіться на користувачів інших інстанцій, щоб заповнити стрічку", - "error.unexpected_crash.explanation": "Ця сторінка не може бути коректно відображена через баґ у нашому коді або через проблему сумісності браузера.", + "empty_column.public": "Тут поки нічого немає! Опублікуйте щось, або вручну підпишіться на користувачів інших серверів, щоб заповнити стрічку", + "error.unexpected_crash.explanation": "Через помилку у нашому коді або несумісність браузера, ця сторінка не може бути зображена коректно.", "error.unexpected_crash.explanation_addons": "Неможливо правильно показати цю сторінку. Ймовірно, цю помилку викликано додатком браузера або автоматичним засобом перекладу.", - "error.unexpected_crash.next_steps": "Спробуйте перезавантажити сторінку. Якщо це не допоможе, ви все ще зможете використовувати Mastodon через інший браузер або рідний додаток.", + "error.unexpected_crash.next_steps": "Спробуйте перезавантажити сторінку. Якщо це не допоможе, ви все ще зможете використовувати Mastodon через інший браузер або рідний застосунок.", "error.unexpected_crash.next_steps_addons": "Спробуйте їх вимкнути та оновити сторінку. Якщо це не допомагає, ви можете використовувати Mastodon через інший браузер або окремий застосунок.", "errors.unexpected_crash.copy_stacktrace": "Скопіювати трасування стека у буфер обміну", "errors.unexpected_crash.report_issue": "Повідомити про проблему", @@ -203,53 +203,53 @@ "getting_started.developers": "Розробникам", "getting_started.directory": "Каталог профілів", "getting_started.documentation": "Документація", - "getting_started.heading": "Ласкаво просимо", - "getting_started.invite": "Запросіть людей", - "getting_started.open_source_notice": "Mastodon — програма з відкритим сирцевим кодом. Ви можете допомогти проекту, або повідомити про проблеми на GitHub за адресою {github}.", - "getting_started.security": "Безпека", + "getting_started.heading": "Розпочати", + "getting_started.invite": "Запросити людей", + "getting_started.open_source_notice": "Mastodon — програма з відкритим сирцевим кодом. Ви можете допомогти проєкту, або повідомити про проблеми на GitHub: {github}.", + "getting_started.security": "Налаштування облікового запису", "getting_started.terms": "Умови використання", "hashtag.column_header.tag_mode.all": "та {additional}", "hashtag.column_header.tag_mode.any": "або {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", - "hashtag.column_settings.select.no_options_message": "Не знайдено пропозицій", - "hashtag.column_settings.select.placeholder": "Введіть хештеґи…", - "hashtag.column_settings.tag_mode.all": "Усі ці", - "hashtag.column_settings.tag_mode.any": "Який-небудь з цих", - "hashtag.column_settings.tag_mode.none": "Жоден з цих", - "hashtag.column_settings.tag_toggle": "Додайте додаткові теґи до цього стовпчика", + "hashtag.column_settings.select.no_options_message": "Пропозицій не знайдено", + "hashtag.column_settings.select.placeholder": "Введіть гештеґи…", + "hashtag.column_settings.tag_mode.all": "Усе зі списку", + "hashtag.column_settings.tag_mode.any": "Який-небудь зі списку", + "hashtag.column_settings.tag_mode.none": "Жоден зі списку", + "hashtag.column_settings.tag_toggle": "Додати додаткові теґи до цього стовпчика", "home.column_settings.basic": "Основні", - "home.column_settings.show_reblogs": "Показувати передмухи", + "home.column_settings.show_reblogs": "Показувати поширення", "home.column_settings.show_replies": "Показувати відповіді", "home.hide_announcements": "Приховати оголошення", "home.show_announcements": "Показати оголошення", "intervals.full.days": "{number, plural, one {# день} few {# дні} other {# днів}}", "intervals.full.hours": "{number, plural, one {# година} few {# години} other {# годин}}", "intervals.full.minutes": "{number, plural, one {# хвилина} few {# хвилини} other {# хвилин}}", - "keyboard_shortcuts.back": "переходити назад", - "keyboard_shortcuts.blocked": "відкрити список заблокованих користувачів", - "keyboard_shortcuts.boost": "передмухувати", - "keyboard_shortcuts.column": "фокусуватися на одній з колонок", - "keyboard_shortcuts.compose": "фокусуватися на полі введення", - "keyboard_shortcuts.conversations": "to open conversations column", + "keyboard_shortcuts.back": "Перейти назад", + "keyboard_shortcuts.blocked": "Відкрити список заблокованих користувачів", + "keyboard_shortcuts.boost": "Поширити допис", + "keyboard_shortcuts.column": "Фокусуватися на одній з колонок", + "keyboard_shortcuts.compose": "Фокусуватися на полі введення", "keyboard_shortcuts.description": "Опис", - "keyboard_shortcuts.down": "рухатися вниз стрічкою", - "keyboard_shortcuts.enter": "відкрити статус", - "keyboard_shortcuts.favourite": "вподобати", - "keyboard_shortcuts.favourites": "відкрити список улюбленого", - "keyboard_shortcuts.federated": "відкрити глобальну стрічку", - "keyboard_shortcuts.heading": "Гарячі клавіші", - "keyboard_shortcuts.home": "відкрити домашню стрічку", + "keyboard_shortcuts.direct": "щоб відкрити колонку прямих повідомлень", + "keyboard_shortcuts.down": "Рухатися вниз стрічкою", + "keyboard_shortcuts.enter": "Відкрити допис", + "keyboard_shortcuts.favourite": "Вподобати допис", + "keyboard_shortcuts.favourites": "Відкрити список вподобаного", + "keyboard_shortcuts.federated": "Відкрити глобальну стрічку", + "keyboard_shortcuts.heading": "Комбінації клавіш", + "keyboard_shortcuts.home": "Відкрити домашню стрічку", "keyboard_shortcuts.hotkey": "Гаряча клавіша", - "keyboard_shortcuts.legend": "показати підказку", - "keyboard_shortcuts.local": "відкрити локальну стрічку", - "keyboard_shortcuts.mention": "згадати автора", + "keyboard_shortcuts.legend": "Показати легенду", + "keyboard_shortcuts.local": "Відкрити локальну стрічку", + "keyboard_shortcuts.mention": "Згадати автора", "keyboard_shortcuts.muted": "Відкрити список нехтуваних користувачів", - "keyboard_shortcuts.my_profile": "відкрити ваш профіль", - "keyboard_shortcuts.notifications": "відкрити колонку сповіщень", - "keyboard_shortcuts.open_media": "відкрити медіа", - "keyboard_shortcuts.pinned": "відкрити список закріплених дмухів", - "keyboard_shortcuts.profile": "відкрити профіль автора", - "keyboard_shortcuts.reply": "відповісти", + "keyboard_shortcuts.my_profile": "Відкрити ваш профіль", + "keyboard_shortcuts.notifications": "Відкрити колонку сповіщень", + "keyboard_shortcuts.open_media": "Відкрити медіа", + "keyboard_shortcuts.pinned": "Відкрити список закріплених дописів", + "keyboard_shortcuts.profile": "Відкрити профіль автора", + "keyboard_shortcuts.reply": "Відповісти", "keyboard_shortcuts.requests": "відкрити список бажаючих підписатися", "keyboard_shortcuts.search": "сфокусуватися на пошуку", "keyboard_shortcuts.spoilers": "показати/приховати поле CW", @@ -285,41 +285,42 @@ "mute_modal.duration": "Тривалість", "mute_modal.hide_notifications": "Сховати сповіщення від користувача?", "mute_modal.indefinite": "Не визначено", - "navigation_bar.apps": "Мобільні додатки", + "navigation_bar.apps": "Мобільні застосунки", "navigation_bar.blocks": "Заблоковані користувачі", "navigation_bar.bookmarks": "Закладки", "navigation_bar.community_timeline": "Локальна стрічка", - "navigation_bar.compose": "Написати новий дмух", - "navigation_bar.discover": "Знайти", - "navigation_bar.domain_blocks": "Приховані домени", + "navigation_bar.compose": "Написати новий допис", + "navigation_bar.direct": "Прямі повідомлення", + "navigation_bar.discover": "Дослідити", + "navigation_bar.domain_blocks": "Заблоковані домени", "navigation_bar.edit_profile": "Редагувати профіль", "navigation_bar.explore": "Огляд", "navigation_bar.favourites": "Вподобане", "navigation_bar.filters": "Приховані слова", "navigation_bar.follow_requests": "Запити на підписку", - "navigation_bar.follows_and_followers": "Підписки і підписники", - "navigation_bar.info": "Про сайт", + "navigation_bar.follows_and_followers": "Підписки та підписники", + "navigation_bar.info": "Про цей сервер", "navigation_bar.keyboard_shortcuts": "Гарячі клавіші", "navigation_bar.lists": "Списки", "navigation_bar.logout": "Вийти", "navigation_bar.mutes": "Нехтувані користувачі", "navigation_bar.personal": "Особисте", - "navigation_bar.pins": "Закріплені дмухи", + "navigation_bar.pins": "Закріплені дописи", "navigation_bar.preferences": "Налаштування", "navigation_bar.public_timeline": "Глобальна стрічка", "navigation_bar.security": "Безпека", - "notification.admin.sign_up": "{name} приєднується", - "notification.favourite": "{name} вподобав(-ла) ваш допис", - "notification.follow": "{name} підписався(-лась) на вас", - "notification.follow_request": "{name} відправив(-ла) запит на підписку", - "notification.mention": "{name} згадав(-ла) вас", + "notification.admin.sign_up": "{name} приєдналися", + "notification.favourite": "{name} вподобали ваш допис", + "notification.follow": "{name} підписалися на вас", + "notification.follow_request": "{name} відправили запит на підписку", + "notification.mention": "{name} згадали вас", "notification.own_poll": "Ваше опитування завершено", "notification.poll": "Опитування, у якому ви голосували, закінчилося", - "notification.reblog": "{name} передмухнув(-ла) Ваш допис", + "notification.reblog": "{name} поширили ваш допис", "notification.status": "{name} щойно дописує", "notification.update": "{name} змінює допис", "notifications.clear": "Очистити сповіщення", - "notifications.clear_confirmation": "Ви впевнені, що хочете назавжди видалити всі сповіщеня?", + "notifications.clear_confirmation": "Ви впевнені, що хочете назавжди видалити всі сповіщення?", "notifications.column_settings.admin.sign_up": "Нові реєстрації:", "notifications.column_settings.alert": "Сповіщення на комп'ютері", "notifications.column_settings.favourite": "Вподобане:", @@ -360,22 +361,22 @@ "poll.total_people": "{count, plural, one {# особа} other {# осіб}}", "poll.total_votes": "{count, plural, one {# голос} few {# голоси} many {# голосів} other {# голосів}}", "poll.vote": "Проголосувати", - "poll.voted": "Ви голосували за цю відповідь", + "poll.voted": "Ви проголосували за цю відповідь", "poll.votes": "{votes, plural, one {# голос} few {# голоси} many {# голосів} other {# голоса}}", "poll_button.add_poll": "Додати опитування", "poll_button.remove_poll": "Видалити опитування", "privacy.change": "Змінити видимість допису", "privacy.direct.long": "Показати тільки згаданим користувачам", - "privacy.direct.short": "Лише люди, яких я згадую", + "privacy.direct.short": "Лише згадані люди", "privacy.private.long": "Показати тільки підписникам", "privacy.private.short": "Тільки для підписників", - "privacy.public.long": "Visible for all", + "privacy.public.long": "Видимий для всіх", "privacy.public.short": "Публічно", - "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", + "privacy.unlisted.long": "Видимий для всіх, але не через можливості виявлення", "privacy.unlisted.short": "Прихований", "refresh": "Оновити", "regeneration_indicator.label": "Завантаження…", - "regeneration_indicator.sublabel": "Ваша домашня стрічка готується!", + "regeneration_indicator.sublabel": "Хвилинку, ми готуємо вашу стрічку!", "relative_time.days": "{number}д", "relative_time.full.days": "{number, plural, one {# день} few {# дні} other {# днів}} тому", "relative_time.full.hours": "{number, plural, one {# година} few {# години} other {# годин}} тому", @@ -389,16 +390,16 @@ "relative_time.today": "сьогодні", "reply_indicator.cancel": "Відмінити", "report.block": "Заблокувати", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.block_explanation": "Ви не будете бачити дописи цього користувача, а вони не зможуть бачити ваші дописи або підписуватися на вас. Вони будуть бачити, що ви їх заблокували.", "report.categories.other": "Інше", "report.categories.spam": "Спам", "report.categories.violation": "Контент порушує одне або кілька правил сервера", "report.category.subtitle": "Оберіть найкращий збіг", - "report.category.title": "Tell us what's going on with this {type}", + "report.category.title": "Розкажіть нам, що не так з цим {type}", "report.category.title_account": "профіль", "report.category.title_status": "допис", "report.close": "Готово", - "report.comment.title": "Is there anything else you think we should know?", + "report.comment.title": "Чи є щось, що нам потрібно знати?", "report.forward": "Надіслати до {target}", "report.forward_hint": "Це акаунт з іншого серверу. Відправити анонімізовану копію скарги і туди?", "report.mute": "Нехтувати", @@ -406,25 +407,25 @@ "report.next": "Далі", "report.placeholder": "Додаткові коментарі", "report.reasons.dislike": "Мені це не подобається", - "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.dislike_description": "Вам би не хотілося це бачити", "report.reasons.other": "Це щось інше", - "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.other_description": "Ця проблема не відповідає жодній іншій категорії", "report.reasons.spam": "Це спам", - "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.spam_description": "Шкідливі посилання, фальшиві взаємодії, або повідомлення, що повторюються", "report.reasons.violation": "Порушує правила сервера", "report.reasons.violation_description": "Ви впевнені, що це порушує певні правила", "report.rules.subtitle": "Виберіть усі варіанти, що підходять", "report.rules.title": "Які правила порушено?", "report.statuses.subtitle": "Виберіть усі варіанти, що підходять", - "report.statuses.title": "Are there any posts that back up this report?", + "report.statuses.title": "Чи є дописи, які належать до цієї скарги?", "report.submit": "Відправити", "report.target": "Скаржимося на {target}", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", - "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.take_action": "Ось ваші варіанти управління тим, що ви бачите в Mastodon:", + "report.thanks.take_action_actionable": "Поки ми переглядаємо це, ви можете вжити власних заходів проти @{name}:", "report.thanks.title": "Не хочете це бачити?", "report.thanks.title_actionable": "Дякуємо за скаргу, ми розглянемо її.", "report.unfollow": "Відписатися від @{name}", - "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report.unfollow_explanation": "Ви підписані на цього користувача. Щоб більше не бачити їхні дописи у вашій стрічці, відпишіться від них.", "search.placeholder": "Пошук", "search_popout.search_format": "Розширений формат пошуку", "search_popout.tips.full_text": "Пошук за текстом знаходить статуси, які ви написали, вподобали, передмухнули, або в яких вас згадували. Також він знаходить імена користувачів, реальні імена та хештеґи.", @@ -461,8 +462,8 @@ "status.media_hidden": "Медіа приховано", "status.mention": "Згадати @{name}", "status.more": "Більше", - "status.mute": "Нехтувати @{name}", - "status.mute_conversation": "Нехтувати діалог", + "status.mute": "Приховати @{name}", + "status.mute_conversation": "Ігнорувати діалог", "status.open": "Розгорнути допис", "status.pin": "Закріпити у профілі", "status.pinned": "Закріплений дмух", @@ -484,7 +485,7 @@ "status.show_more_all": "Показувати більше для всіх", "status.show_thread": "Показати ланцюжок", "status.uncached_media_warning": "Недоступно", - "status.unmute_conversation": "Не нехтувати діалог", + "status.unmute_conversation": "Не ігнорувати діалог", "status.unpin": "Відкріпити від профілю", "suggestions.dismiss": "Відхилити пропозицію", "suggestions.header": "Вас може зацікавити…", @@ -498,42 +499,42 @@ "time_remaining.minutes": "{number, plural, one {# хвилина} few {# хвилини} other {# хвилин}}", "time_remaining.moments": "Залишилось секунд", "time_remaining.seconds": "{number, plural, one {# секунда} few {# секунди} other {# секунд}}", - "timeline_hint.remote_resource_not_displayed": "{resource} з інших серверів не відображається.", + "timeline_hint.remote_resource_not_displayed": "{resource} з інших серверів не зображується.", "timeline_hint.resources.followers": "Підписники", "timeline_hint.resources.follows": "Підписки", - "timeline_hint.resources.statuses": "Старіші дмухи", + "timeline_hint.resources.statuses": "Попередні дописи", "trends.counter_by_accounts": "{count, plural, one {{counter} особа обговорює} few {{counter} особи обговорюють} many {{counter} осіб обговорюють} other {{counter} особи обговорюють}}", "trends.trending_now": "Актуальні", "ui.beforeunload": "Вашу чернетку буде втрачено, якщо ви покинете Mastodon.", - "units.short.billion": "{count} млрд", - "units.short.million": "{count} млн", - "units.short.thousand": "{count} тис", + "units.short.billion": "{count} млрд.", + "units.short.million": "{count} млн.", + "units.short.thousand": "{count} тис.", "upload_area.title": "Перетягніть сюди, щоб завантажити", - "upload_button.label": "Додати медіа", + "upload_button.label": "Додати зображення, відео або аудіо", "upload_error.limit": "Ліміт завантаження файлів перевищено.", "upload_error.poll": "Не можна завантажувати файли до опитувань.", "upload_form.audio_description": "Опишіть для людей із вадами слуху", "upload_form.description": "Опишіть для людей з вадами зору", - "upload_form.description_missing": "Опису не додано", + "upload_form.description_missing": "Немає опису", "upload_form.edit": "Змінити", "upload_form.thumbnail": "Змінити мініатюру", "upload_form.undo": "Видалити", "upload_form.video_description": "Опишіть для людей із вадами слуху або зору", - "upload_modal.analyzing_picture": "Аналізуємо малюнок…", + "upload_modal.analyzing_picture": "Аналізуємо зображення…", "upload_modal.apply": "Застосувати", "upload_modal.applying": "Застосування…", "upload_modal.choose_image": "Вибрати зображення", "upload_modal.description_placeholder": "Щурячий бугай із їжаком-харцизом в'ючись підписали ґешефт у єнах", - "upload_modal.detect_text": "Виявити текст на малюнку", + "upload_modal.detect_text": "Виявити текст на зображенні", "upload_modal.edit_media": "Редагувати медіа", - "upload_modal.hint": "Клацніть або перетягніть коло на превью, щоб обрати точку, яку буде завжди видно на мініатюрах.", + "upload_modal.hint": "Клацніть або перетягніть коло на превʼю, щоб обрати точку, яку буде завжди видно на мініатюрах.", "upload_modal.preparing_ocr": "Підготовка OCR…", "upload_modal.preview_label": "Переглянути ({ratio})", "upload_progress.label": "Завантаження...", "video.close": "Закрити відео", - "video.download": "Завантаження файла", + "video.download": "Завантажити файл", "video.exit_fullscreen": "Вийти з повноекранного режиму", - "video.expand": "Розширити відео", + "video.expand": "Розгорнути відео", "video.fullscreen": "На весь екран", "video.hide": "Приховати відео", "video.mute": "Вимкнути звук", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index 42728af0f..ba59a393f 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -70,7 +70,7 @@ "column.blocks": "مسدود صارفین", "column.bookmarks": "بُک مارکس", "column.community": "مقامی زمانی جدول", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "مشخصات کا مطالعہ کریں", "column.domain_blocks": "پوشیدہ ڈومین", "column.favourites": "پسندیدہ", @@ -166,7 +166,7 @@ "empty_column.blocks": "آپ نے ابھی کسی صارف کو مسدود نہیں کیا ہے.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "مقامی جدول خالی ہے. کچھ تحریر کریں تاکہ بات آگے بڑھے!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "ابھی تک کوئی چھپا ہوا ڈومین نہیں ہے.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "آپ کا کوئی پسندیدہ ٹوٹ نہیں ہے. جب آپ پسند کریں گے، یہاں نظر آئےگا.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "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.favourite": "to favourite", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "بُک مارکس", "navigation_bar.community_timeline": "مقامی ٹائم لائن", "navigation_bar.compose": "Compose new toot", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "دریافت کریں", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "پروفائل میں ترمیم کریں", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 6692d2b21..63bc7bd5a 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -70,7 +70,7 @@ "column.blocks": "Người đã chặn", "column.bookmarks": "Đã lưu", "column.community": "Máy chủ của bạn", - "column.conversations": "Thảo luận", + "column.direct": "Nhắn riêng", "column.directory": "Tìm người cùng sở thích", "column.domain_blocks": "Máy chủ đã chặn", "column.favourites": "Thích", @@ -118,7 +118,7 @@ "confirmations.block.confirm": "Chặn", "confirmations.block.message": "Bạn có thật sự muốn chặn {name}?", "confirmations.delete.confirm": "Xóa bỏ", - "confirmations.delete.message": "Bạn \bthật sự muốn xóa tút này?", + "confirmations.delete.message": "Bạn thật sự muốn xóa tút này?", "confirmations.delete_list.confirm": "Xóa bỏ", "confirmations.delete_list.message": "Bạn thật sự muốn xóa vĩnh viễn danh sách này?", "confirmations.discard_edit_media.confirm": "Bỏ qua", @@ -166,7 +166,7 @@ "empty_column.blocks": "Bạn chưa chặn bất cứ ai.", "empty_column.bookmarked_statuses": "Bạn chưa lưu tút nào. Nếu có, nó sẽ hiển thị ở đây.", "empty_column.community": "Máy chủ của bạn chưa có tút nào công khai. Bạn hãy thử viết gì đó đi!", - "empty_column.conversations": "Khi bạn gửi hoặc nhận một tút chỉ hiển thị với những người được nhắc đến trong đó, tút đó sẽ hiển thị ở đây.", + "empty_column.direct": "Bạn chưa có tin nhắn riêng nào. Khi bạn gửi hoặc nhận một tin nhắn riêng, nó sẽ xuất hiện ở đây.", "empty_column.domain_blocks": "Chưa ẩn bất kỳ máy chủ nào.", "empty_column.explore_statuses": "Chưa có xu hướng nào. Kiểm tra lại sau!", "empty_column.favourited_statuses": "Bạn chưa thích tút nào. Hãy thử đi, nó sẽ xuất hiện ở đây.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "đăng lại", "keyboard_shortcuts.column": "mở các mục", "keyboard_shortcuts.compose": "mở khung soạn tút", - "keyboard_shortcuts.conversations": "mở mục thảo luận", "keyboard_shortcuts.description": "Mô tả", + "keyboard_shortcuts.direct": "để mở cột tin nhắn", "keyboard_shortcuts.down": "di chuyển xuống dưới danh sách", "keyboard_shortcuts.enter": "viết tút mới", "keyboard_shortcuts.favourite": "thích", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Đã lưu", "navigation_bar.community_timeline": "Cộng đồng", "navigation_bar.compose": "Viết tút mới", + "navigation_bar.direct": "Tin nhắn", "navigation_bar.discover": "Khám phá", "navigation_bar.domain_blocks": "Máy chủ đã ẩn", "navigation_bar.edit_profile": "Sửa hồ sơ", @@ -366,7 +367,7 @@ "poll_button.remove_poll": "Hủy cuộc bình chọn", "privacy.change": "Thay đổi quyền riêng tư", "privacy.direct.long": "Chỉ người được nhắc đến mới thấy", - "privacy.direct.short": "Chỉ người tôi nhắc đến", + "privacy.direct.short": "Chỉ người được nhắc", "privacy.private.long": "Dành riêng cho người theo dõi", "privacy.private.short": "Chỉ người theo dõi", "privacy.public.long": "Hiển thị với mọi người", diff --git a/app/javascript/mastodon/locales/whitelist_en-GB.json b/app/javascript/mastodon/locales/whitelist_en-GB.json new file mode 100644 index 000000000..0d4f101c7 --- /dev/null +++ b/app/javascript/mastodon/locales/whitelist_en-GB.json @@ -0,0 +1,2 @@ +[ +] diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index a6ddaab09..60835209e 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -70,7 +70,7 @@ "column.blocks": "ⵉⵏⵙⵙⵎⵔⵙⵏ ⵜⵜⵓⴳⴷⵍⵏⵉⵏ", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "ⵜⵓⴼⵓⵜⵉⵏ", @@ -166,7 +166,7 @@ "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "There are no blocked domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "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.favourite": "to favourite", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new toot", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "ⵙⵏⴼⵍ ⵉⴼⵔⵙ", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 0195dee2e..473b84b8d 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -25,7 +25,7 @@ "account.hide_reblogs": "隐藏来自 @{name} 的转贴", "account.joined": "加入于 {date}", "account.link_verified_on": "此链接的所有权已在 {date} 被检查", - "account.locked_info": "此账户已锁嘟。账户所有者会手动审核关注申请。", + "account.locked_info": "此账户已锁嘟。账户所有者会手动审核关注者。", "account.media": "媒体", "account.mention": "提及 @{name}", "account.moved_to": "{name} 已经迁移到:", @@ -35,8 +35,8 @@ "account.posts": "帖子", "account.posts_with_replies": "帖子和回复", "account.report": "举报 @{name}", - "account.requested": "正在等待对方通过关注申请。点击以取消发送关注申请", - "account.share": "分享 @{name} 的用户简介", + "account.requested": "正在等待对方同意。点击以取消发送关注请求", + "account.share": "分享 @{name} 的个人资料页", "account.show_reblogs": "显示来自 @{name} 的转嘟", "account.statuses_counter": "{counter} 条嘟文", "account.unblock": "取消屏蔽 @{name}", @@ -68,19 +68,19 @@ "bundle_modal_error.message": "载入这个组件时发生了错误。", "bundle_modal_error.retry": "重试", "column.blocks": "已屏蔽的用户", - "column.bookmarks": "收藏夹", + "column.bookmarks": "书签", "column.community": "本站时间轴", - "column.conversations": "会话", + "column.direct": "私信", "column.directory": "浏览用户资料", "column.domain_blocks": "已屏蔽的域名", "column.favourites": "喜欢", - "column.follow_requests": "关注申请", + "column.follow_requests": "关注请求", "column.home": "主页", "column.lists": "列表", "column.mutes": "已隐藏的用户", "column.notifications": "通知", "column.pins": "置顶帖子", - "column.public": "跨站时间轴", + "column.public": "跨站公共时间轴", "column_back_button.label": "返回", "column_header.hide_settings": "隐藏设置", "column_header.moveLeft_settings": "将此栏左移", @@ -89,14 +89,14 @@ "column_header.show_settings": "显示设置", "column_header.unpin": "取消置顶", "column_subheading.settings": "设置", - "community.column_settings.local_only": "仅在本站显示", + "community.column_settings.local_only": "仅限本站", "community.column_settings.media_only": "仅限媒体", "community.column_settings.remote_only": "仅限外部", "compose_form.direct_message_warning_learn_more": "了解更多", "compose_form.encryption_warning": "Mastodon 上的嘟文并未端到端加密。请不要在 Mastodon 上分享敏感信息。", "compose_form.hashtag_warning": "此帖子被设置为“不公开”,因此它不会出现在任何话题标签的列表下。只有公开帖子才能通过话题标签进行搜索。", "compose_form.lock_disclaimer": "你的账号没有{locked}。任何人在关注你后都能立即查看仅关注者可见的帖子。", - "compose_form.lock_disclaimer.lock": "锁嘟", + "compose_form.lock_disclaimer.lock": "开启保护", "compose_form.placeholder": "在想些什么?", "compose_form.poll.add_option": "添加一个选项", "compose_form.poll.duration": "投票持续时间", @@ -107,42 +107,42 @@ "compose_form.publish": "嘟嘟", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "保存更改", - "compose_form.sensitive.hide": "将媒体标记为敏感内容", - "compose_form.sensitive.marked": "媒体已被标记为敏感内容", + "compose_form.sensitive.hide": "{count, plural, one {将媒体标记为敏感内容} other {将媒体标记为敏感内容}}", + "compose_form.sensitive.marked": "{count, plural, one {媒体已被标记为敏感内容} other {媒体已被标记为敏感内容}}", "compose_form.sensitive.unmarked": "媒体未被标记为敏感内容", "compose_form.spoiler.marked": "移除内容警告", "compose_form.spoiler.unmarked": "添加内容警告", - "compose_form.spoiler_placeholder": "在此处写下内容警告", + "compose_form.spoiler_placeholder": "写下你的警告", "confirmation_modal.cancel": "取消", "confirmations.block.block_and_report": "屏蔽与举报", "confirmations.block.confirm": "屏蔽", "confirmations.block.message": "你确定要屏蔽 {name} 吗?", "confirmations.delete.confirm": "删除", - "confirmations.delete.message": "你确定要删除这个帖子吗?", + "confirmations.delete.message": "你确定要删除这条嘟文吗?", "confirmations.delete_list.confirm": "删除", "confirmations.delete_list.message": "你确定要永久删除此列表吗?", "confirmations.discard_edit_media.confirm": "丢弃", - "confirmations.discard_edit_media.message": "您还有未保存的媒体描述或预览修改,仍然要丢弃它们吗?", - "confirmations.domain_block.confirm": "隐藏所有来自此域名的内容", - "confirmations.domain_block.message": "你真的确定要屏蔽所有来自 {domain} 的内容吗?多数情况下,屏蔽或隐藏几个特定的用户就已经足够了。来自该域名的内容将不再出现在你的公共时间轴或通知列表里。来自该域名的关注者将会被移除。", + "confirmations.discard_edit_media.message": "您还有未保存的媒体描述或预览修改,仍然丢弃它们吗?", + "confirmations.domain_block.confirm": "屏蔽整个域名", + "confirmations.domain_block.message": "你真的确定要屏蔽所有来自 {domain} 的内容吗?多数情况下,屏蔽或隐藏几个特定的用户就已经足够了。来自该网站的内容将不再出现在你的任何公共时间轴或通知列表里。来自该网站的关注者将会被移除。", "confirmations.logout.confirm": "登出", "confirmations.logout.message": "你确定要登出吗?", "confirmations.mute.confirm": "隐藏", "confirmations.mute.explanation": "这将隐藏他们的嘟文以及提到他们的嘟文,但他们仍可以看到你的嘟文并关注你。", "confirmations.mute.message": "你确定要隐藏 {name} 吗?", "confirmations.redraft.confirm": "删除并重新编辑", - "confirmations.redraft.message": "你确定要删除这条嘟文并重新编辑它吗?所有相关的转嘟和喜欢都会被清除,回复将失去与这条嘟文的关联。", + "confirmations.redraft.message": "你确定要删除这条嘟文并重新编辑它吗?所有相关的转嘟和喜欢都会被清除,回复将会失去关联。", "confirmations.reply.confirm": "回复", - "confirmations.reply.message": "回复此消息将会覆盖当前正在编辑的信息。仍要继续吗?", + "confirmations.reply.message": "回复此消息将会覆盖当前正在编辑的信息。确定继续吗?", "confirmations.unfollow.confirm": "取消关注", "confirmations.unfollow.message": "你确定要取消关注 {name} 吗?", "conversation.delete": "删除对话", "conversation.mark_as_read": "标记为已读", "conversation.open": "查看对话", "conversation.with": "与 {names}", - "directory.federated": "来自联邦宇宙的已知部分", + "directory.federated": "来自已知联邦宇宙", "directory.local": "仅来自 {domain}", - "directory.new_arrivals": "新用户", + "directory.new_arrivals": "新来者", "directory.recently_active": "最近活跃", "embed.instructions": "要在你的网站上嵌入此嘟文,请复制以下代码。", "embed.preview": "它会像这样显示出来:", @@ -156,31 +156,31 @@ "emoji_button.objects": "物体", "emoji_button.people": "人物", "emoji_button.recent": "常用", - "emoji_button.search": "搜索……", + "emoji_button.search": "搜索…", "emoji_button.search_results": "搜索结果", "emoji_button.symbols": "符号", "emoji_button.travel": "旅行和地点", "empty_column.account_suspended": "账户已停用", "empty_column.account_timeline": "这里没有帖子!", - "empty_column.account_unavailable": "用户资料不可用", + "empty_column.account_unavailable": "个人资料不可用", "empty_column.blocks": "你还未屏蔽任何用户。", - "empty_column.bookmarked_statuses": "你还未将任何帖子加入收藏夹。在你加入收藏夹后,帖子将显示在此。", + "empty_column.bookmarked_statuses": "你还未将任何帖子加入书签。在你添加书签后,帖子将显示在此。", "empty_column.community": "本站时间轴暂时没有内容,快写点什么让它动起来吧!", - "empty_column.conversations": "发送或收到仅对提及对象可见的嘟文后,就会显示在这里。", + "empty_column.direct": "你还未使用过私信。当你发出或者收到私信时,它将显示在此。", "empty_column.domain_blocks": "目前没有被隐藏的站点。", "empty_column.explore_statuses": "目前没有热门话题,稍后再来看看吧!", "empty_column.favourited_statuses": "你还未喜欢过任何帖子。当你喜欢帖子时,它将显示在此。", "empty_column.favourites": "没有人喜欢过这条嘟文。如果有人喜欢了,就会显示在这里。", "empty_column.follow_recommendations": "似乎无法为你生成任何建议。你可以尝试使用搜索寻找你可能知道的人或探索热门标签。", - "empty_column.follow_requests": "你没有收到新的关注申请。收到后将显示在此。", + "empty_column.follow_requests": "你没有收到新的关注请求。收到后将显示在此。", "empty_column.hashtag": "这个话题标签下暂时没有内容。", "empty_column.home": "你的主页时间线是空的!快去关注更多人吧。 {suggestions}", "empty_column.home.suggestions": "查看一些建议", - "empty_column.list": "此列表中暂时没有内容。列表中用户所发送的的新嘟文将会显示在这里。", - "empty_column.lists": "你还没有创建过列表。你创建的列表会显示在这里。", + "empty_column.list": "此列表中暂时没有内容。列表中用户所发送的的新嘟文将会在这里显示。", + "empty_column.lists": "你还没有创建过列表。你创建的列表会在这里显示。", "empty_column.mutes": "你没有隐藏任何用户。", "empty_column.notifications": "你还没有收到过任何通知,快和其他用户互动吧。", - "empty_column.public": "这里什么都没有!写一些公开帖子,或者关注来自其他服务器的用户后,这里就会有嘟文出现了", + "empty_column.public": "这里什么都没有!写一些公开帖子,或者关注其他服务器的用户后,这里就会有嘟文出现了", "error.unexpected_crash.explanation": "此页面无法正确显示,这可能是因为我们的代码中有错误,也可能是因为浏览器兼容问题。", "error.unexpected_crash.explanation_addons": "此页面无法正确显示,这个错误很可能是由浏览器附加组件或自动翻译工具造成的。", "error.unexpected_crash.next_steps": "刷新一下页面试试。如果没用,你可以换个浏览器或者用本地应用。", @@ -190,7 +190,7 @@ "explore.search_results": "搜索结果", "explore.suggested_follows": "为你推荐", "explore.title": "探索", - "explore.trending_links": "新闻", + "explore.trending_links": "最新消息", "explore.trending_statuses": "帖子", "explore.trending_tags": "话题标签", "follow_recommendations.done": "完成", @@ -198,7 +198,7 @@ "follow_recommendations.lead": "你关注的人的帖子将按时间顺序显示在你的主页。 别担心,你可以随时取消关注!", "follow_request.authorize": "授权", "follow_request.reject": "拒绝", - "follow_requests.unlocked_explanation": "虽然你没有锁嘟,但是 {domain} 的管理人员觉得你可能想人工审核这些账号的关注申请。", + "follow_requests.unlocked_explanation": "虽说你没有锁嘟,但是 {domain} 的工作人员觉得你可能想手工审核这些账号的关注请求。", "generic.saved": "已保存", "getting_started.developers": "开发", "getting_started.directory": "用户目录", @@ -212,7 +212,7 @@ "hashtag.column_header.tag_mode.any": "或是 {additional}", "hashtag.column_header.tag_mode.none": "而不用 {additional}", "hashtag.column_settings.select.no_options_message": "没有找到建议", - "hashtag.column_settings.select.placeholder": "输入话题标签……", + "hashtag.column_settings.select.placeholder": "输入话题标签…", "hashtag.column_settings.tag_mode.all": "全部", "hashtag.column_settings.tag_mode.any": "任一", "hashtag.column_settings.tag_mode.none": "无一", @@ -226,12 +226,12 @@ "intervals.full.hours": "{number} 小时", "intervals.full.minutes": "{number} 分钟", "keyboard_shortcuts.back": "返回上一页", - "keyboard_shortcuts.blocked": "打开已屏蔽用户列表", + "keyboard_shortcuts.blocked": "打开被屏蔽用户列表", "keyboard_shortcuts.boost": "转嘟", "keyboard_shortcuts.column": "选择某栏", "keyboard_shortcuts.compose": "选择输入框", - "keyboard_shortcuts.conversations": "打开对话栏", "keyboard_shortcuts.description": "说明", + "keyboard_shortcuts.direct": "打开私信栏", "keyboard_shortcuts.down": "在列表中让光标下移", "keyboard_shortcuts.enter": "展开帖子", "keyboard_shortcuts.favourite": "喜欢帖子", @@ -250,7 +250,7 @@ "keyboard_shortcuts.pinned": "打开置顶帖子列表", "keyboard_shortcuts.profile": "打开作者的个人资料", "keyboard_shortcuts.reply": "回复帖子", - "keyboard_shortcuts.requests": "打开关注申请列表", + "keyboard_shortcuts.requests": "打开关注请求列表", "keyboard_shortcuts.search": "选择搜索框", "keyboard_shortcuts.spoilers": "显示或隐藏被折叠的正文", "keyboard_shortcuts.start": "打开“开始使用”栏", @@ -283,20 +283,21 @@ "missing_indicator.label": "找不到内容", "missing_indicator.sublabel": "无法找到此资源", "mute_modal.duration": "持续时长", - "mute_modal.hide_notifications": "是否同时隐藏来自这个用户的通知?", + "mute_modal.hide_notifications": "同时隐藏来自这个用户的通知?", "mute_modal.indefinite": "无期限", "navigation_bar.apps": "移动应用", "navigation_bar.blocks": "已屏蔽的用户", - "navigation_bar.bookmarks": "收藏夹", + "navigation_bar.bookmarks": "书签", "navigation_bar.community_timeline": "本站时间轴", "navigation_bar.compose": "撰写新帖子", + "navigation_bar.direct": "私信", "navigation_bar.discover": "发现", "navigation_bar.domain_blocks": "已屏蔽的域名", "navigation_bar.edit_profile": "修改个人资料", "navigation_bar.explore": "探索", "navigation_bar.favourites": "喜欢", "navigation_bar.filters": "隐藏关键词", - "navigation_bar.follow_requests": "关注申请", + "navigation_bar.follow_requests": "关注请求", "navigation_bar.follows_and_followers": "关注管理", "navigation_bar.info": "关于此服务", "navigation_bar.keyboard_shortcuts": "快捷键列表", @@ -305,17 +306,17 @@ "navigation_bar.mutes": "已隐藏的用户", "navigation_bar.personal": "个人", "navigation_bar.pins": "置顶帖子", - "navigation_bar.preferences": "偏好", - "navigation_bar.public_timeline": "跨站时间轴", + "navigation_bar.preferences": "首选项", + "navigation_bar.public_timeline": "跨站公共时间轴", "navigation_bar.security": "安全", - "notification.admin.sign_up": "{name} 已被注册", + "notification.admin.sign_up": "{name} 已注册", "notification.favourite": "{name} 喜欢了你的帖子", "notification.follow": "{name} 开始关注你", "notification.follow_request": "{name} 向你发送了关注请求", "notification.mention": "{name} 提及了你", "notification.own_poll": "你的投票已经结束", "notification.poll": "你参与的一个投票已经结束", - "notification.reblog": "{name} 转发了你的帖子", + "notification.reblog": "{name} 转嘟了你的嘟文", "notification.status": "{name} 刚刚发帖", "notification.update": "{name} 编辑了帖子", "notifications.clear": "清空通知列表", @@ -327,19 +328,19 @@ "notifications.column_settings.filter_bar.category": "快速过滤栏", "notifications.column_settings.filter_bar.show_bar": "显示过滤栏", "notifications.column_settings.follow": "新关注者:", - "notifications.column_settings.follow_request": "新关注申请:", + "notifications.column_settings.follow_request": "新关注请求:", "notifications.column_settings.mention": "提及:", "notifications.column_settings.poll": "投票结果:", "notifications.column_settings.push": "推送通知", - "notifications.column_settings.reblog": "转发:", + "notifications.column_settings.reblog": "转贴:", "notifications.column_settings.show": "在通知栏显示", "notifications.column_settings.sound": "播放音效", - "notifications.column_settings.status": "新帖:", + "notifications.column_settings.status": "新嘟文:", "notifications.column_settings.unread_notifications.category": "未读通知", "notifications.column_settings.unread_notifications.highlight": "高亮显示未读通知", "notifications.column_settings.update": "编辑:", "notifications.filter.all": "全部", - "notifications.filter.boosts": "转发", + "notifications.filter.boosts": "转嘟", "notifications.filter.favourites": "喜欢", "notifications.filter.follows": "关注", "notifications.filter.mentions": "提及", @@ -348,9 +349,9 @@ "notifications.grant_permission": "授予权限", "notifications.group": "{count} 条通知", "notifications.mark_as_read": "将所有通知标为已读", - "notifications.permission_denied": "由于权限不可用,无法启用桌面通知。", + "notifications.permission_denied": "由于权限被拒绝,无法启用桌面通知。", "notifications.permission_denied_alert": "由于在此之前浏览器权限请求就已被拒绝,所以启用桌面通知失败", - "notifications.permission_required": "未授予所需权限,所以桌面通知不可用", + "notifications.permission_required": "所需权限未被授予,所以桌面通知不可用", "notifications_permission_banner.enable": "启用桌面通知", "notifications_permission_banner.how_to_control": "启用桌面通知以在 Mastodon 未打开时接收通知。你可以通过交互通过上面的 {icon} 按钮来精细控制可以发送桌面通知的交互类型。", "notifications_permission_banner.title": "精彩不容错过", @@ -366,13 +367,13 @@ "poll_button.remove_poll": "移除投票", "privacy.change": "设置帖子的可见范围", "privacy.direct.long": "只有被提及的用户能看到", - "privacy.direct.short": "仅对提及的人可见", + "privacy.direct.short": "仅提到的人", "privacy.private.long": "仅关注者可见", "privacy.private.short": "仅对关注者可见", "privacy.public.long": "所有人可见", "privacy.public.short": "公开", "privacy.unlisted.long": "对所有人可见,但不加入探索功能", - "privacy.unlisted.short": "非公开", + "privacy.unlisted.short": "不公开", "refresh": "刷新", "regeneration_indicator.label": "加载中……", "regeneration_indicator.sublabel": "你的主页动态正在准备中!", @@ -467,7 +468,7 @@ "status.pin": "在个人资料页面置顶", "status.pinned": "置顶帖子", "status.read_more": "查看更多", - "status.reblog": "转贴", + "status.reblog": "转嘟", "status.reblog_private": "转贴(可见者不变)", "status.reblogged_by": "{name} 转贴了", "status.reblogs.empty": "没有人转贴过此贴。如果有人转贴了将显示在此。", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 45e030833..f59ad7a2a 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -70,7 +70,7 @@ "column.blocks": "封鎖名單", "column.bookmarks": "書籤", "column.community": "本站時間軸", - "column.conversations": "Conversations", + "column.direct": "Direct messages", "column.directory": "瀏覽個人資料", "column.domain_blocks": "封鎖的服務站", "column.favourites": "最愛的文章", @@ -166,7 +166,7 @@ "empty_column.blocks": "你還沒有封鎖任何使用者。", "empty_column.bookmarked_statuses": "你還沒建立任何書籤。這裡將會顯示你建立的書籤。", "empty_column.community": "本站時間軸暫時未有內容,快寫一點東西來搶頭香啊!", - "empty_column.conversations": "Once you send or receive a post that's only visible to people mentioned in it, it will show up here.", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "尚未隱藏任何網域。", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "你還沒收藏任何文章。這裡將會顯示你收藏的嘟文。", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "轉推", "keyboard_shortcuts.column": "把標示移動到其中一列", "keyboard_shortcuts.compose": "把標示移動到文字輸入區", - "keyboard_shortcuts.conversations": "to open conversations column", "keyboard_shortcuts.description": "描述", + "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "在列表往下移動", "keyboard_shortcuts.enter": "打開文章", "keyboard_shortcuts.favourite": "收藏文章", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "書籤", "navigation_bar.community_timeline": "本站時間軸", "navigation_bar.compose": "撰寫新文章", + "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "探索", "navigation_bar.domain_blocks": "封鎖的服務站", "navigation_bar.edit_profile": "修改個人資料", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 811e998bb..f78e07ee2 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -70,7 +70,7 @@ "column.blocks": "已封鎖的使用者", "column.bookmarks": "書籤", "column.community": "本站時間軸", - "column.conversations": "對話", + "column.direct": "私訊", "column.directory": "瀏覽個人檔案", "column.domain_blocks": "已封鎖的網域", "column.favourites": "最愛", @@ -166,7 +166,7 @@ "empty_column.blocks": "您還沒有封鎖任何使用者。", "empty_column.bookmarked_statuses": "您還沒建立任何書籤。當您建立書簽時,它將於此顯示。", "empty_column.community": "本站時間軸是空的。快公開嘟些文搶頭香啊!", - "empty_column.conversations": "一旦您傳送或收到僅對其中提到之人可見的嘟文,就會在這邊顯示。", + "empty_column.direct": "您還沒有任何私訊。當您私訊別人或收到私訊時,它將於此顯示。", "empty_column.domain_blocks": "尚未封鎖任何網域。", "empty_column.explore_statuses": "目前沒有熱門討論,請稍候再回來看看!", "empty_column.favourited_statuses": "您還沒加過任何嘟文至最愛。當您收藏嘟文時,它將於此顯示。", @@ -230,8 +230,8 @@ "keyboard_shortcuts.boost": "轉嘟", "keyboard_shortcuts.column": "將焦點放在其中一欄的嘟文", "keyboard_shortcuts.compose": "將焦點移至撰寫文字區塊", - "keyboard_shortcuts.conversations": "開啟對話欄", "keyboard_shortcuts.description": "說明", + "keyboard_shortcuts.direct": "開啟私訊欄", "keyboard_shortcuts.down": "在列表中往下移動", "keyboard_shortcuts.enter": "檢視嘟文", "keyboard_shortcuts.favourite": "加到最愛", @@ -290,6 +290,7 @@ "navigation_bar.bookmarks": "書籤", "navigation_bar.community_timeline": "本站時間軸", "navigation_bar.compose": "撰寫新嘟文", + "navigation_bar.direct": "私訊", "navigation_bar.discover": "探索", "navigation_bar.domain_blocks": "隱藏的網域", "navigation_bar.edit_profile": "編輯個人檔案", @@ -366,7 +367,7 @@ "poll_button.remove_poll": "移除投票", "privacy.change": "調整嘟文隱私狀態", "privacy.direct.long": "只有被提及的使用者能看到", - "privacy.direct.short": "僅限於我提及的人", + "privacy.direct.short": "僅限提及的人", "privacy.private.long": "只有跟隨您的使用者能看到", "privacy.private.short": "僅限跟隨者", "privacy.public.long": "對所有人可見", diff --git a/config/locales/activerecord.he.yml b/config/locales/activerecord.he.yml index e3b363efc..5dc8ddc96 100644 --- a/config/locales/activerecord.he.yml +++ b/config/locales/activerecord.he.yml @@ -1,13 +1,32 @@ --- he: 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: שמור status: attributes: reblog: taken: של החצרוץ כבר קיים + user: + attributes: + email: + blocked: עושה שימוש בספק דוא"ל אסור + unreachable: נראה שלא קיים diff --git a/config/locales/af.yml b/config/locales/af.yml index 4afb11de5..c60cbf41a 100644 --- a/config/locales/af.yml +++ b/config/locales/af.yml @@ -1,5 +1,9 @@ --- af: + admin: + trends: + only_allowed: Slegs toegelate + trending: Gewild errors: '400': The request you submitted was invalid or malformed. '403': You don't have permission to view this page. diff --git a/config/locales/ar.yml b/config/locales/ar.yml index aba42bb43..13c698853 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -295,6 +295,7 @@ ar: update_domain_block: تحديث كتلة النطاق update_status: تحديث الحالة actions: + approve_user_html: قبل %{name} تسجيل %{target} assigned_to_self_report_html: قام %{name} بتعيين التقرير %{target} لأنفسهم change_email_user_html: غيّر %{name} عنوان البريد الإلكتروني للمستخدم %{target} confirm_user_html: "%{name} قد قام بتأكيد عنوان البريد الإلكتروني لـ %{target}" @@ -324,6 +325,7 @@ ar: enable_user_html: قام %{name} بتنشيط تسجيل الدخول للمستخدم %{target} memorialize_account_html: قام %{name} بتحويل حساب %{target} إلى صفحة تذكارية promote_user_html: قام %{name} بترويج المستخدم %{target} + reject_user_html: رفض %{name} تسجيل %{target} remove_avatar_user_html: قام %{name} بإزالة صورة %{target} الرمزية reopen_report_html: قام %{name} بإعادة فتح الشكوى %{target} reset_password_user_html: قام %{name} بإعادة تعيين كلمة مرور المستخدم %{target} @@ -762,6 +764,7 @@ ar: usable: يمكن استخدامه usage_comparison: تم استخدامه %{today} مرات اليوم، مقارنة بـ %{yesterday} بالأمس title: المتداوَلة + trending: المتداولة warning_presets: add_new: إضافة واحد جديد delete: حذف @@ -1564,7 +1567,10 @@ ar: title: المغادرة بأرشيف الحساب suspicious_sign_in: change_password: غيّر كلمتك السرية + details: 'فيما يلي تفاصيل تسجيل الدخول:' + explanation: لقد اكتشفنا تسجيل دخول إلى حسابك من عنوان IP جديد. subject: تم النفاذ عبر حسابك من خلال عنوان إيبي جديد + title: تسجيل دخول جديد warning: appeal: تقديم طعن appeal_description: إذا كنت تعتقد أن هذا خطأ، يمكنك تقديم طعن إلى فريق %{instance}. diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 3e1c1c6b7..f5fa3ece0 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -17,15 +17,15 @@ ca: contact_missing: No configurat contact_unavailable: N/D continue_to_web: Continua a l'aplicació web - discover_users: Descobreix usuaris + discover_users: Descobrir usuaris documentation: Documentació federation_hint_html: Amb un compte de %{instance}, podràs seguir persones de qualsevol servidor Mastodon i de molts més. - get_apps: Prova una aplicació mòbil + get_apps: Provar una aplicació mòbil hosted_on: Mastodon allotjat a %{domain} instance_actor_flash: | Aquest compte és un actor virtual usat per representar el servidor i no qualsevol usuari individual. Es fa servir per a propòsits de federació i no s'ha de ser bloquejar si no voleu bloquejar tota la instància. En aquest cas, hauríeu d'utilitzar un bloqueig de domini. - learn_more: Més informació + learn_more: Aprèn més logged_in_as_html: Actualment has iniciat sessió com a %{username}. logout_before_registering: Ja has iniciat sessió. privacy_policy: Política de privadesa @@ -73,7 +73,7 @@ ca: moved_html: "%{name} s'ha mogut a %{new_profile_link}:" network_hidden: Aquesta informació no està disponible nothing_here: No hi ha res aquí! - people_followed_by: Usuaris seguits per %{name} + people_followed_by: Persones seguides per %{name} people_who_follow: Usuaris que segueixen %{name} pin_errors: following: Has d'estar seguint la persona que vulguis avalar @@ -911,7 +911,7 @@ ca: settings: 'Canvia les preferències de correu: %{link}' view: 'Visualització:' view_profile: Mostra el perfil - view_status: Mostra l'estat + view_status: Mostra la publicació applications: created: L'aplicació s'ha creat correctament destroyed: L'aplicació s'ha suprimit correctament @@ -1124,7 +1124,7 @@ ca: delete: Esborra none: Cap order_by: Ordena per - save_changes: Desar els canvis + save_changes: Desa els canvis today: avui validation_errors: one: Alguna cosa no va bé! Si us plau, revisa l'error @@ -1150,7 +1150,7 @@ ca: upload: Carrega in_memoriam_html: En Memòria. invites: - delete: Desactivar + delete: Desactiva expired: Caducat expires_in: '1800': 30 minuts @@ -1399,14 +1399,14 @@ ca: revoke: Revoca revoke_success: S'ha revocat la sessió amb èxit title: Sessions - view_authentication_history: Veure l'historial d'autenticació del teu compte + view_authentication_history: Mostra l'historial d'autenticació del compte settings: account: Compte account_settings: Configuració del compte aliases: Àlies de compte appearance: Aparença authorized_apps: Aplicacions autoritzades - back: Tornar a Mastodon + back: Torna a Mastodon delete: Eliminació del compte development: Desenvolupament edit_profile: Edita el perfil @@ -1474,7 +1474,7 @@ ca: unlisted: No llistat unlisted_long: Tothom ho pot veure, però no es mostra en les línies de temps públiques statuses_cleanup: - enabled: Esborrar automàticament publicacions antigues + enabled: Esborra automàticament publicacions antigues enabled_hint: Suprimeix automàticament les teves publicacions quan arribin a un llindar d’edat especificat, tret que coincideixin amb una de les excepcions següents exceptions: Excepcions explanation: Com que suprimir publicacions és una operació cara, es fa lentament amb el pas del temps i quan el servidor no està ocupat. Per aquest motiu, és possible que les teves publicacions se suprimeixin un temps després d’assolir el llindar d’edat. @@ -1503,7 +1503,7 @@ ca: '604800': 1 setmana '63113904': 2 anys '7889238': 3 mesos - min_age_label: Llindar d'edat + min_age_label: Antiguitat min_favs: Mantenir les publicacions afavorides més de min_favs_hint: No suprimeix cap de les teves publicacions que hagin rebut més d'aquesta quantitat de favorits. Deixa-ho en blanc per suprimir publicacions independentment del nombre de favorits que tinguin min_reblogs: Mantenir les publicacions impulsades més de diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 1b788574e..51fde7837 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -7,6 +7,7 @@ cy: active_count_after: yn weithredol active_footnote: Defnyddwyr Gweithredol Misol (DGM) administered_by: 'Gweinyddir gan:' + api: API apps: Apiau symudol apps_platforms: Defnyddio Mastodon o iOS, Android a phlatfformau eraill browse_directory: Pori cyfeiriadur proffil a hidlo wrth diddordebau @@ -24,7 +25,7 @@ cy: instance_actor_flash: | Mae'r cyfrif hwn yn actor rhithwir a ddefnyddir i gynrychioli'r gweinydd ei hun ac nid unrhyw ddefnyddiwr unigol. Fe'i defnyddir at ddibenion ffederasiwn ac ni ddylid ei rwystro oni bai eich bod am rwystro'r achos cyfan, ac os felly dylech ddefnyddio bloc parth. - learn_more: Dysu mwy + learn_more: Dysgu mwy logged_in_as_html: Rydych chi wedi mewngofnodi fel %{username}. logout_before_registering: Rydych chi eisoes wedi mewngofnodi. privacy_policy: Polisi preifatrwydd @@ -40,7 +41,7 @@ cy: other: statwsau two: statwsau zero: statwsau - status_count_before: Ysgriffennwyd gan + status_count_before: Ysgrifennwyd gan tagline: Dilyn ffrindiau a darganfod rhai newydd terms: Telerau gwasanaeth unavailable_content: Cynnwys nad yw ar gael @@ -76,6 +77,7 @@ cy: two: Dilynwyr zero: Dilynwyr following: Yn dilyn + instance_actor_flash: Mae'r cyfrif hwn yn actor rhithwir a ddefnyddir i gynrychioli'r gweinydd ei hun ac nid unrhyw ddefnyddiwr unigol. Fe'i defnyddir at ddibenion ffederasiwn ac ni ddylid ei atal. joined: Ymunodd %{date} last_active: diweddaraf link_verified_on: Gwiriwyd perchnogaeth y ddolen yma ar %{date} @@ -347,6 +349,8 @@ cy: title: Cofnod newydd yng nghosbrestr e-byst title: Cosbrestr e-bost instances: + back_to_all: Popeth + back_to_warning: Rhybudd by_domain: Parth delivery_available: Mae'r cyflenwad ar gael moderation: @@ -1036,6 +1040,7 @@ cy: zero: "%{count} pleidlais" vote: Pleidleisio show_more: Dangos mwy + show_older: Dangos pethau hŷn show_thread: Dangos edefyn sign_in_to_participate: Mengofnodwch i gymryd rhan yn y sgwrs visibilities: diff --git a/config/locales/da.yml b/config/locales/da.yml index 28c009ef3..0455b700b 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -517,6 +517,7 @@ da: delivery: all: Alle clear: Ryd leveringsfejl + failing: Fejler restart: Genstart levering stop: Stop levering unavailable: Utilgængelig @@ -843,7 +844,7 @@ da: one: Brugt af én person den seneste uge other: Brugt af %{count} personer den seneste uge title: Trends - trending: Populært + trending: Populære warning_presets: add_new: Tilføj ny delete: Slet diff --git a/config/locales/de.yml b/config/locales/de.yml index 26e914fe7..2da287708 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -441,7 +441,7 @@ de: obfuscate: Domainname verschleiern obfuscate_hint: Den Domainnamen in der Liste teilweise verschleiern, wenn die Liste der Domänenbeschränkungen aktiviert ist private_comment: Privater Kommentar - private_comment_hint: Kommentar zu dieser Domain-Beschränkung für die interne Nutzung durch die Moderatoren. + private_comment_hint: Kommentar zu dieser Domain-Beschränkung für die interne Nutzung durch die Moderator_innen. public_comment: Öffentlicher Kommentar public_comment_hint: Kommentar zu dieser Domain-Beschränkung für die allgemeine Öffentlichkeit, wenn das Veröffentlichen der Blockliste aktiviert ist. reject_media: Mediendateien ablehnen @@ -607,7 +607,7 @@ de: add_to_report: Mehr zur Meldung hinzufügen are_you_sure: Bist du dir sicher? assign_to_self: Mir zuweisen - assigned: Zugewiesener Moderator + assigned: Zugewiesene_r Moderator_in by_target_domain: Domain des gemeldeten Kontos category: Kategorie category_description_html: Der Grund, warum dieses Konto und/oder der Inhalt gemeldet wurden, wird in der Kommunikation mit dem gemeldeten Konto zitiert @@ -629,7 +629,7 @@ de: delete: Löschen placeholder: Beschreibe, welche Maßnahmen ergriffen wurden oder irgendwelche andere Neuigkeiten… title: Notizen - notes_description_html: Zeige und hinterlasse Notizen an andere Moderatoren und dein zukünftiges Selbst + notes_description_html: Zeige und hinterlasse Notizen an andere Moderator_innen und dein zukünftiges Ich quick_actions_description_html: 'Führe eine schnelle Aktion aus oder scrolle nach unten, um gemeldete Inhalte zu sehen:' remote_user_placeholder: der entfernte Benutzer von %{instance} reopen: Meldung wieder eröffnen @@ -802,6 +802,7 @@ de: other: In der letzten Woche von %{count} Personen geteilt title: Angesagte Links usage_comparison: Heute %{today} mal geteilt, gestern %{yesterday} mal + only_allowed: Nur Erlaubte pending_review: Überprüfung ausstehend preview_card_providers: allowed: Links von diesem Herausgeber können angesagt sein @@ -843,6 +844,7 @@ de: one: In der letzten Woche von einer Person genutzt other: In der letzten Woche von %{count} Personen genutzt title: Trends + trending: Häufig diskutiert warning_presets: add_new: Neu hinzufügen delete: Löschen @@ -1070,7 +1072,7 @@ de: '503': Die Seite konnte wegen eines temporären Serverfehlers nicht angezeigt werden. noscript_html: Bitte aktiviere JavaScript, um die Mastodon-Web-Anwendung zu verwenden. Alternativ kannst du auch eine der nativen Mastodon-Anwendungen für deine Plattform probieren. existing_username_validator: - not_found: kann lokalen Benutzer nicht mit diesem Nuternamen finden + not_found: kann lokalen Benutzer nicht mit diesem Nutzernamen finden not_found_multiple: kann %{usernames} nicht finden exports: archive_takeout: @@ -1644,14 +1646,14 @@ de: title: Eine neue Anmeldung warning: appeal: Einspruch einsenden - appeal_description: Wenn du glaubst, dass dies ein Fehler ist, kannst du einen Einspruch an die Mitarbeiter von %{instance} senden. + appeal_description: Wenn du glaubst, dass es sich um einen Fehler handelt, kannst du einen Einspruch an die Administration von %{instance} senden. categories: spam: Spam violation: Inhalt verletzt die folgenden Community-Richtlinien explanation: - delete_statuses: Einige deiner Beiträge wurden als Verstoß gegen eine oder mehrere Communityrichtlinien erkannt und von den Moderatoren von %{instance} entfernt. + delete_statuses: Einige deiner Beiträge wurden als Verstoß gegen eine oder mehrere Communityrichtlinien erkannt und von den Moderator_innen von %{instance} entfernt. disable: Du kannst dein Konto nicht mehr verwenden, aber dein Profil und andere Daten bleiben unversehrt. Du kannst ein Backup deiner Daten anfordern, die Kontoeinstellungen ändern oder dein Konto löschen. - mark_statuses_as_sensitive: Einige deiner Beiträge wurden von den Moderatoren von %{instance} als NSFW markiert. Das bedeutet, dass die Nutzer die Medien in den Beiträgen antippen müssen, bevor eine Vorschau angezeigt wird. Du kannst Medien in Zukunft als NSFW markieren, wenn du Beiträge verfasst. + mark_statuses_as_sensitive: Einige deiner Beiträge wurden von den Moderator_innen von %{instance} als NSFW markiert. Das bedeutet, dass die Nutzer die Medien in den Beiträgen antippen müssen, bevor eine Vorschau angezeigt wird. Du kannst Medien in Zukunft als NSFW markieren, wenn du Beiträge verfasst. sensitive: Von nun an werden alle deine hochgeladenen Mediendateien als sensibel markiert und hinter einer Warnung versteckt. silence: Solange dein Konto limitiert ist, können nur die Leute, die dir bereits folgen, deine Beiträge auf dem Server sehen und es könnte sein, dass du von verschiedenen öffentlichen Listungen ausgeschlossen wirst. Andererseits können andere dir manuell folgen. suspend: Du kannst dein Konto nicht mehr verwenden und dein Profil und andere Daten sind nicht mehr verfügbar. Du kannst dich immer noch anmelden, um ein Backup deiner Daten anzufordern, bis die Daten innerhalb von 30 Tagen vollständig gelöscht wurden. Allerdings werden wir einige Daten speichern, um zu verhindern, dass du die Sperrung umgehst. diff --git a/config/locales/devise.he.yml b/config/locales/devise.he.yml index be8af6f9e..63bb3aedd 100644 --- a/config/locales/devise.he.yml +++ b/config/locales/devise.he.yml @@ -2,8 +2,8 @@ he: devise: confirmations: - confirmed: כתובת הדוא"ל אומתה בהצלחה. - send_instructions: נשלח אליך דוא"ל עם הוראות לאימות כתובת הדוא"ל שאמור להתקבל בדקות הקרובות. יש לבדוק את תיבת הספאם ליתר בטחון אם ההודעה לא הגיעה תוך דקות ספורות. + confirmed: כתובת הדוא"ל שלך אומתה בהצלחה. + send_instructions: נשלח אליך דוא"ל עם הוראות לאימות כתובת הדוא"ל שאמור להתקבל בדקות הקרובות. יש לבדוק את תיבת הספאם ליתר בטחון אם ההודעה לא הגיעה. send_paranoid_instructions: אם כתובת הדוא"ל שלך קיימת במסד הנתונים, יתקבל בדקות הקרובות דוא"ל עם הוראות לאימות כתובתך. יש לבדוק את תיבת הספאם ליתר בטחון אם ההודעה לא הגיעה תוך דקות ספורות. failure: already_authenticated: חשבון זה כבר מחובר. @@ -12,18 +12,71 @@ he: last_attempt: יש לך עוד ניסיון אחד לפני נעילת החשבון. locked: חשבון זה נעול. not_found_in_database: "%{authentication_keys} או סיסמא לא נכונים." + pending: חשבונך נמצא עדיין בבדיקה. timeout: פג תוקף השהיה בחשבון. נא להכנס מחדש על מנת להמשיך. unauthenticated: יש להרשם או להכנס לחשבון על מנת להמשיך. unconfirmed: יש לאמת את כתובת הדוא"ל על מנת להמשיך. mailer: confirmation_instructions: + action: אימות כתובת דוא״ל + action_with_app: אישור וחזרה ל-%{app} + explanation: יצרת חשבון ב-%{host} עם כתובת דוא"ל זו. רק קליק יחיד נותר כדי להפעילו. אם לא את/ה יצרת את החשבון, בבקשה התעלם/י מהדוא"ל הזה. + explanation_when_pending: הוגשה בקשה להזמנה ל-%{host} עם כתובת דוא"ל זו. ברגע שתאשר/י את כתובת הדוא"ל נבחן את בקשתך. ניתן להכנס לאתר על מנת לשנות פרטים או למחוק את החשבון, אבל לא ניתן לגשת לרוב הפעילויות לפני שהחשבון יאושר. אם בקשתך תדחה, המידע שלך יימחק ולא יידרש ממך כל פעולה נוספת. אם בקשה זו לא הגיעה ממך, אנא התעלם/י מדוא"ל זה. + extra_html: בנוסף, אנא עיין/י בחוקי השרת ובתנאי השירות. subject: 'מסטודון: הוראות אימות %{instance}' + title: אימות כתובת דוא״ל + email_changed: + explanation: 'כתובת הדוא"ל של חשבונך שונתה ל:' + extra: אם לא שינית את כתובת הדוא"ל שלך, יכול להיות שמישהו השתלט על חשבונך. נא לשנות את הסיסמא מיידית או ליצור קשר עם מנהלי השרת אם ננעלת מחוץ לחשבון. + subject: 'מסטודון: כתובת הדוא"ל שונתה' + title: כתובת דוא״ל חדשה password_change: + explanation: הסיסמא לחשבונך שונתה. + extra: אם לא שינית את סיסמתך, יכול להיות שמישהו השתלט על חשבונך. נא לשנות את הסיסמא מיידית או ליצור קשר עם מנהלי השרת אם ננעלת מחוץ לחשבון. subject: 'מסטודון: הסיסמא שונתה' + title: הסיסמא שונתה + reconfirmation_instructions: + explanation: נא לאמת את הכתובת הדוא"ל החדשה על מנת לשנותה. + extra: אם שינוי זה לא בוצע על ידך, נא להתעלם מדוא"ל זה. כתובת הדוא"ל של חשבון המסטודון שלך לא תשונה אלא אם תלחץ הקישורית לעיל. + subject: 'מסטודון: נא לאשר כתובת דוא"ל עבור %{instance}' + title: אימות כתובת דוא״ל reset_password_instructions: + action: שינוי סיסמא + explanation: ביקשת סיסמא חדשה לחשבון. + extra: אם לא ביקשת את זה, נא להתעלם מדוא"ל זה. סיסמתך לא תשתנה עוד שתלחץ הקישורית לעיל ותיוצר סיסמא חדשה. subject: 'מסטודון: הוראות לאיפוס סיסמא' + title: איפוס סיסמה + two_factor_disabled: + explanation: האימות הדו-גורמי לחשבונך בוטל. ניתן עתה להכנס לחשבון עם כתובת דוא"ל וסיסמא בלבד. + subject: 'מסטודון: אימות דו גורמי מושבת' + title: אימות דו-גורמי הושעה + two_factor_enabled: + explanation: אימות דו-גורמי הופעל בחשבונך. עתה על מנת להכנס לחשבון נדרש אסימון המיוצר על אפליקציית ה-TOTP המצומדת. + subject: 'מסטודון: אימות דו גורמי הופעל' + title: אימות דו־גורמי הופעל + two_factor_recovery_codes_changed: + explanation: צפני האיחזור הקודמים בוטלו, וחדשים נוצרו. + subject: 'מסטודון: צפני אחזור דו-גורמי יוצרו מחדש' + title: צפני אחזור דו-גורמי השתנו unlock_instructions: subject: 'מסטודון: הוראות לביטול נעילה' + webauthn_credential: + added: + explanation: מפתח האבטחה הבא הוסף לחשבונך + subject: 'מסטודון: מפתח אבטחה חדש' + title: מפתח אבטחה חדש הוסף + deleted: + explanation: מפתח האבטחה הבא נמחק מחשבונך + subject: 'מסטודון: מפתח האבטחה נמחק' + title: אחד ממפתחות האבטחה שלך נמחק + webauthn_disabled: + explanation: בוטלה האפשרות לאמת את חשבונך בעזרת מפתחות אבטחה. כניסה לחשבון אפשרית עכשיו רק בעזרת אסימון שיוצר באפליקציית ה-TOTP המצומדת. + subject: 'מסטודון: אימות בעזרת מפתחות אבטחה הושעה' + title: מפתחות אבטחה הושעו + webauthn_enabled: + explanation: אימות בעזרת מפתחות אבטחה הופעלו עבור חשבונך. ניתן עתה להשתמש במפתח האבטחה שלך על מנת להכנס לחשבון. + subject: 'מסטודון: אימות בעזרת מפתח אבטחה אופשר' + title: מפתחות אבטחה אופשרו omniauth_callbacks: failure: 'לא ניתן לאמת את חשבונך מ־%{kind} מהסיבה: "%{reason}".' success: נכשל אימות מחשבון %{kind}. @@ -38,6 +91,7 @@ he: signed_up: ברוכים הבאים! נרשמת בהצלחה. signed_up_but_inactive: נרשמת בהצלחה. למרות זאת לא הצליחה הכניסה לחשבון מאחר וחשבונך עוד לא הופעל. signed_up_but_locked: נרשמת בהצלחה. למרות זאת לא הצליחה הכניסה לחשבון מאחר וחשבונך נעול. + signed_up_but_pending: מסר עם קישורית אישור נשלח לכתובת הדוא"ל שלך. אחרי לחיצה על הקישורית, נבחן את בקשתך. הודעה תמסר אם בקשתך תתקבל. signed_up_but_unconfirmed: דוא"ל עם קישורית לאימות נשלך לכתובתך. נא לעקוב אחר הקישורית על מנת להפעיל את החשבון. יש לבדוק את תיבת הספאם ליתר בטחון אם ההודעה לא הגיעה תוך דקות ספורות. update_needs_confirmation: עדכת את חשבונך בהצלחה, אך יש צורך לאמת את כתובת הדוא"ל החדשה שלך. נא לבדוק בחשבון הדוא"ל לקבלת קישורית אימות על מנת לאמת את הכתובת החדשה. יש לבדוק את תיבת הספאם ליתר בטחון אם ההודעה לא הגיעה תוך דקות ספורות. updated: חשבונך עודכן בהצלחה. diff --git a/config/locales/devise.io.yml b/config/locales/devise.io.yml index fce061a65..a6d7a6d02 100644 --- a/config/locales/devise.io.yml +++ b/config/locales/devise.io.yml @@ -12,18 +12,71 @@ io: last_attempt: Tu ankore povas probar unfoye ante ke tua konto esos extingita. 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. unauthenticated: Tu devas enirar o membreskar por durar. unconfirmed: Tu devas konfirmar tua konto por durar. mailer: confirmation_instructions: + action: Verifikez retpostadreso + action_with_app: Konfirmez e retrovenez a %{app} + explanation: Vu kreis konto che %{host} per ca retpostadreso. Vu povas facile aktivigar lu. Se vu ne agis lu, ignorez ca retposto. + explanation_when_pending: Vu aplikis por ganar invito a %{host} per ca retpostkonto. Pos vu konfirmas vua retpostkonto, ni kontrolos vua apliko. Vu povas enirar por chanjar vua detali o efacar vua konto, ma vu ne povas acesar maxim de funcioni til vua konto aprobesas. Se vua apliko refuzesas, vua informi efacesos, do plusa ago ne bezonesos de vu. Se vu ne agis lu, ignorez ca retposto. + extra_html: Anke videz reguli di la servilo e nia servokondicioni. subject: Instrucioni por konfirmar %{instance} + title: Verifikez retpostadreso + email_changed: + explanation: 'Retpostadreso di vua konto chanjesas a:' + extra: Se vu ne chanjesis vua retpostadreso, nulu posible acesis vua konto. Chanjez vua pasvorto quik o kontaktez serviladministratero se vu ne povas enirar vua konto. + subject: 'Mastodon: Retpostadreso chanjesis' + title: Nova retpostadreso password_change: + explanation: La pasvorto di vua konto chanjesis. + extra: Se vu ne chanjesis vua pasvorto, nulu posible acesis vua konto. Chanjez vua pasvorto quik o kontaktez serviladministratero se vu ne povas enirar vua konto. subject: Tua pasvorto chanjesis senprobleme. + title: Pasvorto chanjesis + reconfirmation_instructions: + explanation: Konfirmez la nova adreso por chanjar vua retpostadreso. + extra: Se ca chanjo ne komencesis da vu, ignorez ca retposto. La retpostadreso por konto di Mastodon ne chanjesos til vu acesas la supera ligilo. + subject: 'Mastodon: Konfirmez retpostadreso por %{instance}' + title: Verifikez retpostadreso reset_password_instructions: + action: Chanjez pasvorto + explanation: Vu demandis nova pasvorto por vua konto. + extra: Se vu ne demandas co, ignorez ca retposto. Vua pasvorto ne chanjesas til vu acesas la supera ligilo e kreas novo. subject: Instrucioni por chanjar la pasvorto + title: Richanjo di pasvorto + two_factor_disabled: + explanation: 2-faktorverifiko por vua konto deaktivigesis. Eniro esas nun posible per nur retpostadreso e pasvorto. + subject: 'Mastodon: 2-faktorverifiko deaktivigesis' + title: 2FA deaktivigesis + two_factor_enabled: + explanation: 2-faktorverifiko aktivigesis por vua konto. Fisho quo facesis da parigita apliko TOTP bezonesos por eniro. + subject: 'Mastodon: 2-faktorverifiko aktivigesis' + title: 2FA aktivigesis + two_factor_recovery_codes_changed: + explanation: Antea rigannumeri devalidesis e novo facesis. + subject: 'Mastodon: 2-faktorrigannumeri rifacesis' + title: 2FA rigannumeri chanjesis unlock_instructions: subject: Instructioni por riacendar la konto + webauthn_credential: + added: + explanation: Ca sekurklefo insertesis a vua konto + subject: 'Mastodon: Nova sekurklefo' + title: Nova sekurklefo insertesis + deleted: + explanation: Ca sekurklefo efacesis de vua konto + subject: 'Mastodon: Sekurklefo efacesis' + title: 1 de vua sekurklefi efacesis + webauthn_disabled: + explanation: Verifiko per sekurklefi deaktivigesis por vua konto. Eniro nun esas posibla per nur ficho quo facesis da parita apliko TOTP. + subject: 'Mastodon: Verifiko per sekurklefi deaktivigesis' + title: Sekurklefi deaktivigesis + webauthn_enabled: + explanation: Sekurklefverifiko aktivigesis por vua konto. Vua sekurklefo nun povas uzesar por eniro. + subject: 'Mastodon: Sekurklefverifiko aktivigesis' + title: Sekurklefi aktivigesis omniauth_callbacks: failure: 'Ni ne povis autentikigar tu per %{kind}: ''%{reason}''.' success: Autentikigita senprobleme per %{kind}. @@ -31,12 +84,14 @@ io: no_token: Tu ne povas irar a ta pagino per altra voyo kam retpost-mesajo por chanjar pasvorto. Se tu venas de tala retpost-mesajo, kontrolez ke tu uzis la tota URL. send_instructions: Tu recevos retpost-mesajo kun instrucioni por chanjar tua pasvorto pos kelka minuti. send_paranoid_instructions: Se tua retpost-adreso existas en nia datumbazo, tu recevos ligilo por chanjar tua pasvorto per retpost-mesajo. + updated: Vua konto sucese chanjesis. Vu nun eniras. updated_not_active: Tua pasvorto redaktesis senprobleme. registrations: destroyed: Til! Tua konto efacesis senprobleme. Ni esperas rividar tu balde. signed_up: Bonveno! Tu membreskis senprobleme. signed_up_but_inactive: Tu bone membreskis, ma tu ankore ne povas enirar pro ke tua konto ne konfirmesis. signed_up_but_locked: Tu bone membreskis, ma tu ne povas enirar pro ke tua konto extingesis. + signed_up_but_pending: Mesajo kun konfirmoligilo sendesis a vua retpostadreso. Pos vu kliktas la ligilo, ni kontrolos vua apliko. Vu notifikesos se ol aprobesas. signed_up_but_unconfirmed: Retpost-mesajo kun tua ligilo por konfirmar tua konto sendesis a tua retpost-adreso. Voluntez uzar ta ligilo por konfirmar tua konto. update_needs_confirmation: Tu vone aktualigis tua konto, ma ni bezonas kontrolar tua nova retpost-adreso. Voluntez kontrolar tua retpost-mesaji ed uzar la ligilo por konfirmar tua nova retpost-adreso. updated: Tua konto aktualigesis senprobleme. diff --git a/config/locales/devise.th.yml b/config/locales/devise.th.yml index 287ea49c5..e46500796 100644 --- a/config/locales/devise.th.yml +++ b/config/locales/devise.th.yml @@ -21,7 +21,7 @@ th: action: ยืนยันที่อยู่อีเมล action_with_app: ยืนยันแล้วกลับไปยัง %{app} explanation: คุณได้สร้างบัญชีใน %{host} ด้วยที่อยู่อีเมลนี้ คุณเหลืออีกคลิกเดียวเพื่อเปิดใช้งานบัญชี หากนี่ไม่ใช่คุณ โปรดเพิกเฉยต่ออีเมลนี้ - explanation_when_pending: คุณได้สมัครเพื่อขอคำเชิญสู่ %{host} ด้วยที่อยู่อีเมลนี้ เมื่อคุณยืนยันที่อยู่อีเมลของคุณ เราจะตรวจทานใบสมัครของคุณ คุณสามารถเข้าสู่ระบบเพื่อเปลี่ยนรายละเอียดของคุณหรือลบบัญชีของคุณ แต่คุณไม่สามารถเข้าถึงฟังก์ชันส่วนใหญ่ได้จนกว่าจะมีการอนุมัติบัญชีของคุณ หากมีการปฏิเสธใบสมัครของคุณ จะเอาข้อมูลของคุณออก ดังนั้นจึงไม่ต้องมีการกระทำเพิ่มเติมจากคุณ หากนี่ไม่ใช่คุณ โปรดเพิกเฉยต่ออีเมลนี้ + explanation_when_pending: คุณได้สมัครเพื่อขอคำเชิญสู่ %{host} ด้วยที่อยู่อีเมลนี้ เมื่อคุณยืนยันที่อยู่อีเมลของคุณ เราจะตรวจทานใบสมัครของคุณ คุณสามารถเข้าสู่ระบบเพื่อเปลี่ยนรายละเอียดของคุณหรือลบบัญชีของคุณ แต่คุณไม่สามารถเข้าถึงฟังก์ชันส่วนใหญ่ได้จนกว่าจะมีการอนุมัติบัญชีของคุณ หากมีการปฏิเสธใบสมัครของคุณ จะเอาข้อมูลของคุณออก ดังนั้นจึงไม่ต้องการการกระทำเพิ่มเติมจากคุณ หากนี่ไม่ใช่คุณ โปรดเพิกเฉยต่ออีเมลนี้ extra_html: นอกจากนี้โปรดตรวจสอบ กฎของเซิร์ฟเวอร์ และ เงื่อนไขการให้บริการของเรา subject: 'Mastodon: คำแนะนำการยืนยันสำหรับ %{instance}' title: ยืนยันที่อยู่อีเมล diff --git a/config/locales/doorkeeper.en-GB.yml b/config/locales/doorkeeper.en-GB.yml new file mode 100644 index 000000000..ef03d1810 --- /dev/null +++ b/config/locales/doorkeeper.en-GB.yml @@ -0,0 +1 @@ +en-GB: diff --git a/config/locales/doorkeeper.he.yml b/config/locales/doorkeeper.he.yml index cbbef63b1..e2f0c3401 100644 --- a/config/locales/doorkeeper.he.yml +++ b/config/locales/doorkeeper.he.yml @@ -3,7 +3,7 @@ he: activerecord: attributes: doorkeeper/application: - name: שם + name: שם יישום redirect_uri: קישורית הפניה scopes: תחומים website: אתר יישום @@ -38,6 +38,7 @@ he: application: יישום callback_url: כתובת גישה חוזרת (Callback URL) delete: למחוק + empty: אין לך אפליקציות. name: שם new: ישום חדש scopes: תחומים @@ -48,7 +49,7 @@ he: show: actions: פעולות application_id: זהות ישום - callback_urls: כתובות לקריאה חוזרת (Callback URLs) + callback_urls: קישורית Callback scopes: תחומים secret: סוד title: 'ישום: %{name}' @@ -59,6 +60,8 @@ he: error: title: התרחשה שגיאה new: + prompt_html: "%{client_name} מעוניין בהרשאה לגשת לחשבונך. זוהי אפליקציית צד-שלישי. אם יש סיבה לא לבטוח בה, נא לא לאשר." + review_permissions: עיון בהרשאות title: נדרשת הרשאה show: title: יש להעתיק את קוד ההרשאה הזה ולהדביקו ביישום שביקש אותו. @@ -68,6 +71,12 @@ he: confirmations: revoke: בטוח? index: + authorized_at: אושר ב-%{date} + description_html: אלה אפליקציות שיכולות לגשת לחשבונך בעזרת הממשק. אם ישנן כאן אפליקציות שאינך מזהה, או אפליקציה שאינה פועלת כראוי, ניתן להסיר את הגישה שלה. + last_used_at: נראה לאחרונה ב-%{date} + never_used: מעולם לא היה בשימוש + scopes: הרשאות + superapp: פנימי title: ישומיך המאושרים errors: messages: @@ -76,6 +85,10 @@ he: invalid_client: הרשאת הלקוח נכשלה עקב לקוח שאינו ידוע, חוסר בהרשאת לקוח או שיטת הרשאה שאינה נתמכת. invalid_grant: חוזה ההרשאה המצורף אינו חוקי, אינו תקף, מבוטל, או שאינו מתאים לקישורית ההפניה שבשימוש על ידי בקשת ההרשאה, או שהופק על ידי לקוח אחר. invalid_redirect_uri: קישורית ההפניה המצורפת אינה חוקית. + invalid_request: + missing_param: 'חסר פרמטר נדרש: %{value}.' + request_not_authorized: יש לאשר את הבקשה. פרמטר הנדרש על מנת לאשר את הבקשה חסר או לקוי. + unknown: הבקשה חסרה פרמטר נדרש, כוללת ערך שלא נתמך או לקויה בדרך אחרת. invalid_resource_owner: הרשאות בעלי המשאב שהוזנו אינן חוקיות, או שלא ניתן למצוא את בעלי המשאב invalid_scope: התחום המבוקש אינו חוקי, אינו ידוע, או שתצורותו שגויה. invalid_token: @@ -99,6 +112,33 @@ he: authorized_applications: destroy: notice: הישום בוטל. + grouped_scopes: + access: + read: גישה לקריאה בלבד + read/write: גישה לקריאה ולכתיבה + write: גישה לכתיבה בלבד + title: + accounts: חשבונות + admin/accounts: חשבונות ניהול + admin/all: כל פעולות האדמין + admin/reports: ניהול דיווחים + all: הכל + blocks: חסימות + bookmarks: סימניות + conversations: שיחות + crypto: הצפנה מקצה לקצה + favourites: חיבובים + filters: מסננים + follow: יחסים + follows: נעקבים + lists: רשימות + media: קבצי מדיה מצורפים + mutes: השתקות + notifications: התראות + push: התראות בדחיפה + reports: דיווחים + search: חיפוש + statuses: חצרוצים layouts: admin: nav: @@ -107,6 +147,39 @@ he: application: title: נדרשת הרשאת OAuth scopes: + admin:read: לקרוא את כל המידע על השרת + admin:read:accounts: לקרוא מידע רגיש בכל החשבונות + admin:read:reports: לקרוא מידע רגיש בכל הדוחות וכל החשבונות המדווחים + admin:write: לשנות את כל המידע על השרת + admin:write:accounts: ביצוע פעולות הנהלה על חשבונות + admin:write:reports: ביצוע פעולות הנהלה על חשבונות + crypto: שימוש בהצפנה מקצה לקצה follow: לעקוב, לחסום, להסיר חסימה ולהפסיק לעקוב אחרי חשבונות + push: קבלת התראות בדחיפה read: לקרוא את המידע שבחשבונך + read:accounts: צפיה במידע על חשבונות + read:blocks: צפייה בחסימות + read:bookmarks: צפייה בסימניות + read:favourites: צפייה בחיבובים + read:filters: צפייה במסננים + read:follows: צפייה בנעקבים + read:lists: צפיה ברשימותיך + read:mutes: צפיה במושתקיך + read:notifications: צפיה בהתראותיך + read:reports: צפיה בדוחותיך + read:search: חיפוש מטעם עצמך + read:statuses: צפיה בכל החצרוצים write: להפיץ הודעות בשמך + write:accounts: שינוי הפרופיל שלך + write:blocks: חסימת חשבונות ודומיינים + write:bookmarks: סימון חצרוצים + write:conversations: השתקת ומחיקת שיחות + write:favourites: חצרוצים מחובבים + write:filters: יצירת מסננים + write:follows: עקיבה אחר אנשים + write:lists: יצירת רשימות + write:media: העלאת קבצי מדיה + write:mutes: השתקת אנשים ושיחות + write:notifications: ניקוי התראותיך + write:reports: דיווח על אנשים אחרים + write:statuses: פרסום חצרוצים diff --git a/config/locales/doorkeeper.sl.yml b/config/locales/doorkeeper.sl.yml index d75752c8d..5267b7fa2 100644 --- a/config/locales/doorkeeper.sl.yml +++ b/config/locales/doorkeeper.sl.yml @@ -168,13 +168,13 @@ sl: read:notifications: oglejte si svoja obvestila read:reports: oglejte si svoje prijave read:search: iščite v svojem imenu - read:statuses: oglejte si vsa stanja + read:statuses: oglejte si vse objave write: spremenite vse podatke svojega računa write:accounts: spremenite svoj profil write:blocks: blokirajte račune in domene write:bookmarks: objave zaznamkov write:conversations: utišaj in izbriši pogovore - write:favourites: priljubljena stanja + write:favourites: priljubljene objave write:filters: ustvari filtre write:follows: sledi osebam write:lists: ustvarite sezname @@ -182,4 +182,4 @@ sl: write:mutes: utišaj osebe in pogovore write:notifications: počisti svoja obvestila write:reports: prijavi druge osebe - write:statuses: objavi stanja + write:statuses: objavi objave diff --git a/config/locales/doorkeeper.th.yml b/config/locales/doorkeeper.th.yml index b608be384..dd25d88b6 100644 --- a/config/locales/doorkeeper.th.yml +++ b/config/locales/doorkeeper.th.yml @@ -62,7 +62,7 @@ th: new: prompt_html: "%{client_name} ต้องการสิทธิอนุญาตเพื่อเข้าถึงบัญชีของคุณ แอปพลิเคชันเป็นแอปพลิเคชันจากบุคคลที่สาม หากคุณไม่เชื่อถือแอปพลิเคชัน คุณไม่ควรอนุญาตแอปพลิเคชัน" review_permissions: ตรวจทานสิทธิอนุญาต - title: ต้องมีการอนุญาต + title: ต้องการการอนุญาต show: title: คัดลอกรหัสการอนุญาตนี้แล้ววางลงในแอปพลิเคชัน authorized_applications: @@ -135,7 +135,7 @@ th: applications: แอปพลิเคชัน oauth2_provider: ผู้ให้บริการ OAuth2 application: - title: ต้องมีการอนุญาต OAuth + title: ต้องการการอนุญาต OAuth scopes: admin:read: อ่านข้อมูลทั้งหมดในเซิร์ฟเวอร์ admin:read:accounts: อ่านข้อมูลที่ละเอียดอ่อนของบัญชีทั้งหมด diff --git a/config/locales/doorkeeper.uk.yml b/config/locales/doorkeeper.uk.yml index e04ba9e0b..79b09cdb2 100644 --- a/config/locales/doorkeeper.uk.yml +++ b/config/locales/doorkeeper.uk.yml @@ -3,10 +3,10 @@ uk: activerecord: attributes: doorkeeper/application: - name: Назва додатку + name: Назва застосунку redirect_uri: URI перенаправлення scopes: Рамки - website: Веб-сайт додатку + website: Вебсайт застосунку errors: models: doorkeeper/application: @@ -60,6 +60,7 @@ uk: error: title: Сталася помилка new: + prompt_html: "%{client_name} хоче отримати доступ до вашого облікового запису. Це сторонній застосунок. Якщо ви йому не довіряєте, не варто авторизувати його." review_permissions: Переглянути дозволи title: Необхідна авторизація show: @@ -71,6 +72,7 @@ uk: revoke: Ви впевнені? index: authorized_at: Авторизовано %{date} + description_html: Це застосунки, які мають доступ до вашого облікового запису через API. Якщо тут є застосунки, які Ви не розпізнаєте, або програма працює неправильно, ви можете відкликати їхній доступ. last_used_at: Востаннє використано %{date} never_used: Ніколи не використовувалися scopes: Дозволи diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 98b790487..ad333ae29 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -802,6 +802,7 @@ es-AR: other: Compartido por %{count} personas durante la última semana title: Enlaces en tendencia usage_comparison: Compartido %{today} veces hoy, comparado con la/s %{yesterday} vez/veces de ayer + only_allowed: Sólo permitidas pending_review: Revisión pendiente preview_card_providers: allowed: Los enlaces de este medio pueden ser tendencia @@ -843,6 +844,7 @@ es-AR: one: Usada por una persona durante la última semana other: Usada por %{count} personas durante la última semana title: Tendencias + trending: En tendencia warning_presets: add_new: Agregar nuevo delete: Eliminar diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 32c2f702c..360a790fe 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -802,6 +802,7 @@ es-MX: other: Compartido por %{count} personas durante la última semana title: Enlaces en tendencia usage_comparison: Compartido %{today} veces hoy, comparado a %{yesterday} ayer + only_allowed: Sólo permitido pending_review: Revisión pendiente preview_card_providers: allowed: Los enlaces de este editor pueden ser tendencia @@ -843,6 +844,7 @@ es-MX: one: Usada por una persona durante la última semana other: Usada por %{count} personas durante la última semana title: Tendencias + trending: En tendencia warning_presets: add_new: Añadir nuevo delete: Borrar diff --git a/config/locales/es.yml b/config/locales/es.yml index 8988ddadc..7df72d59d 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -802,7 +802,7 @@ es: other: Compartido por %{count} personas durante la última semana title: Enlaces en tendencia usage_comparison: Compartido %{today} veces hoy, comparado con %{yesterday} ayer - only_allowed: Sólo permitido + only_allowed: Sólo las permitidas pending_review: Revisión pendiente preview_card_providers: allowed: Los enlaces de este medio pueden ser tendencia diff --git a/config/locales/gd.yml b/config/locales/gd.yml index f46ba4f8f..6156901ac 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -832,6 +832,7 @@ gd: two: Chaidh a cho-roinneadh le %{count} rè na seachdain seo chaidh title: Ceanglaichean a’ treandadh usage_comparison: Chaidh a cho-roinneadh %{today} tura(i)s an-diugh an coimeas ri %{yesterday} an-dè + only_allowed: An fheadhainn cheadaichte a-mhàin pending_review: A’ feitheamh air lèirmheas preview_card_providers: allowed: Faodaidh ceanglaichean on fhoillsichear seo treandadh @@ -877,6 +878,7 @@ gd: other: Chaidh a chleachdadh le %{count} rè na seachdain seo chaidh two: Chaidh a chleachdadh le %{count} rè na seachdain seo chaidh title: Treandaichean + trending: A’ treandadh warning_presets: add_new: Cuir fear ùr ris delete: Sguab às diff --git a/config/locales/he.yml b/config/locales/he.yml index d20fec3f7..a5712909b 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -4,43 +4,131 @@ he: about_hashtag_html: אלו סטטוסים פומביים המתוייגים בתור#%{hashtag}. ניתן להגיב, להדהד או לחבב אותם אם יש לך חשבון בכל מקום בפדרציה. about_mastodon_html: מסטודון היא רשת חברתית חופשית, מבוססת תוכנה חופשית ("קוד פתוח"). כאלטרנטיבה בלתי ריכוזית לפלטפרומות המסחריות, מסטודון מאפשרת להמנע מהסיכונים הנלווים להפקדת התקשורת שלך בידי חברה יחידה. שמת את מבטחך בשרת אחד — לא משנה במי בחרת, תמיד אפשר לדבר עם כל שאר המשתמשים. לכל מי שרוצה יש את האפשרות להקים שרת מסטודון עצמאי, ולהשתתף ברשת החברתית באופן חלק. about_this: אודות שרת זה + active_count_after: פעיל + active_footnote: משתמשים פעילים חודשית (MAU) + administered_by: 'מנוהל ע"י:' + api: ממשק apps: יישומונים לנייד + apps_platforms: שימוש במסטודון מ-iOS, אנדרואיד ופלטפורמות אחרות + browse_directory: עיון בספריית פרופילים וסינון לפי תחומי עניין + browse_local_posts: עיון בפיד חי של חצרוצים פומביים בשרת זה + browse_public_posts: עיון בפיד חי של חצרוצים פומביים בשרת זה contact: יצירת קשר contact_missing: ללא הגדרה contact_unavailable: לא רלוונטי/חסר + continue_to_web: להמשיך לאפליקציית ווב + discover_users: גילוי משתמשים documentation: תיעוד + federation_hint_html: עם חשבון ב-%{instance} ניתן לעקוב אחרי אנשים בכל שרת מסטודון ומעבר. + get_apps: נסה/י יישומון לנייד hosted_on: מסטודון שיושב בכתובת %{domain} + instance_actor_flash: | + חשבון זה הינו פועל וירטואלי המשמש לייצוג השרת עצמו ולא משתמש ספציפי. + הוא משמש למטרת פדרציה ואין לחסום אותו אלא למטרת חסימת המופע כולו, ובמקרה כזה עדיף להשתמש בחסימת מופע. learn_more: מידע נוסף + logged_in_as_html: הנך מחובר/ת כרגע כ-%{username}. + logout_before_registering: חשבון זה כבר מחובר. + privacy_policy: מדיניות פרטיות + rules: כללי השרת + rules_html: 'להלן סיכום הכללים שעליך לעקוב אחריהם על מנת להשתמש בחשבון בשרת מסטודון זה:' + see_whats_happening: מה קורה כעת + server_stats: 'סטטיסטיקות שרת:' source_code: קוד מקור + status_count_after: + many: חצרוצים + one: חצרוץ + other: חצרוצים + two: חצרוצים status_count_before: שכתבו + tagline: מעקב אחרי חברים וגילוי חדשים + terms: תנאי שימוש + unavailable_content: שרתים מוגבלים + unavailable_content_description: + domain: שרת + reason: סיבה + rejecting_media: 'קבצי מדיה משרתים אלה לא יעובדו או ישמרו, ותמונות ממוזערות לא יוצגו. נדרשת הקלקה ידנית על מנת לצפות בקובץ המקורי:' + rejecting_media_title: מדיה מסוננת + silenced: 'חצרוצים משרתים אלה יוסתרו מפידים ושיחות פומביים, ושום התראות לא ינתנו על אינטראקציות עם משתמשיהם, אלא אם הינך במעקב אחריהם:' + silenced_title: שרתים מוגבלים + suspended: 'שום מידע עם שרתים אלה לא יעובד, יישמר או יוחלף, מה שהופך כל תקשורת עם משתמשיהם לבלתי אפשרית:' + suspended_title: שרתים מושעים + unavailable_content_html: ככלל מסטודון מאפשר לך לצפות בתוכן ולתקשר עם משתמשים בכל שרת בפדרציה. אלו הם היוצאים מן הכלל שהוגדרו עבור שרת זה. + user_count_after: + many: משתמשים + one: משתמש + other: משתמשים + two: משתמשים user_count_before: ביתם של what_is_mastodon: מה זה מסטודון? accounts: + choices_html: 'בחירותיו/ה של %{name}:' + endorsements_hint: תוכל/י להמליץ על אנשים לעקוב אחריהם דרך ממשק הווב, והם יופיעו כאן. + featured_tags_hint: תוכל/י להציג האשתגיות ספציפיות והן תופענה כאן. follow: לעקוב + followers: + many: עוקבים + one: עוקב + other: עוקבים + two: עוקבים following: נעקבים + instance_actor_flash: חשבון זה הינו פועל וירטואלי המשמש לייצוג השרת עצמו ולא אף משתמש ספציפי. הוא משמש למטרות פדרציה ואין להשעותו. + joined: הצטרף/ה ב-%{date} + last_active: פעילות אחרונה + link_verified_on: בעלות על קישורית זו נבדקה לאחרונה ב-%{date} media: מדיה moved_html: "%{name} עבר(ה) אל %{new_profile_link}:" + network_hidden: מידע זה אינו זמין nothing_here: אין פה שום דבר! people_followed_by: הנעקבים של %{name} people_who_follow: העוקבים של %{name} + pin_errors: + following: עליך לעקוב אחרי חשבון לפני שניתן יהיה להמליץ עליו + posts: + many: חצרוצים + one: חצרוץ + other: חצרוצים + two: חצרוצים + posts_tab_heading: חצרוצים posts_with_replies: חצרוצים ותגובות roles: admin: מנהל + bot: בוט + group: קבוצה moderator: מנחה + unavailable: פרופיל לא זמין unfollow: הפסקת מעקב admin: + account_actions: + action: בצע/י פעולה + title: ביצוע פעולות הנהלה על %{acct} account_moderation_notes: create: ליצור created_msg: הודעת מנחה נוצרה בהצלחה! destroyed_msg: הודעת מנחה נמחקה בהצלחה! accounts: + add_email_domain_block: חסמו לגמרי את שם המתחם (דומיין) של הדוא"ל + approve: אשר + approved_msg: בקשת %{username} להירשם אושרה בהצלחה are_you_sure: בטוח? + avatar: יַצְגָן by_domain: שם מתחם + change_email: + changed_msg: כתובת הדוא"ל המשוייכת לחשבון שונתה בהצלחה ! + current_email: כתובת דוא"ל נוכחית + label: שינוי כתובת דוא"ל משוייכת לחשבון + new_email: כתובת דוא"ל חדשה + submit: שלחי בקשה לשינוי דוא"ל + title: שינוי כתובת דוא"ל עבור המשתמש.ת %{username} confirm: אישור confirmed: אושר confirming: המאשר + custom: התאמה אישית + delete: מחיקת חשבון + deleted: מחוקים demote: הורדה בדרגה + destroyed_msg: הנתונים של %{username} נכנסו לתור המחיקה וצפויים להימחק באופן מיידי disable: לחסום + disable_sign_in_token_auth: השעיית הזדהות באמצעות אסימון בדוא"ל של משתמש disable_two_factor_authentication: ביטול הזדהות דו-שלבית disabled: נחסם display_name: שם לתצוגה @@ -49,11 +137,17 @@ he: email: דוא"ל email_status: סטטוס דוא"ל enable: לאפשר + enable_sign_in_token_auth: הפעלת אסימון הזדהות בדוא"ל של משתמש enabled: מאופשר + enabled_msg: ביטול השעית החשבון של %{username} בוצע בהצלחה followers: עוקבים follows: נעקבים + header: כותרת inbox_url: כתובת תיבה נכנסת + invite_request_text: סיבות להצטרפות + invited_by: הוזמן על ידי ip: כתובת IP + joined: תאריך הצטרפות location: all: הכל local: מקומי @@ -62,20 +156,40 @@ he: login_status: מצב חיבור media_attachments: תוספות מדיה memorialize: הפוך לדף זכרון + memorialized: מונצחים + memorialized_msg: החשבון %{username} הונצח בהצלחה moderation: + active: פעילים all: הכל + pending: בהמתנה suspended: מושהים title: ניהול קהילה moderation_notes: הודעות מנחה most_recent_activity: פעילות עדכנית most_recent_ip: כתובות אחרונות + no_account_selected: לא בוצעו שינויים בחשבונות ל שכן לא נבחרו חשבונות + no_limits_imposed: לא הוטלו הגבלות not_subscribed: לא רשום + pending: ממתינים לסקירה perform_full_suspension: ביצוע השעייה מלאה + previous_strikes: פסילות קודמות + previous_strikes_description_html: + many: לחשבון הזה יש %{count} פסילות. + one: לחשבון הזה פסילה אחת. + other: לחשבון הזה %{count} פסילות. + two: לחשבון הזה %{count} פסילות. promote: להעלות בדרגה protocol: פרטיכל public: פומבי push_subscription_expires: הרשמה להודעות בדחיפה פגה redownload: לקריאה מחדש של האווטאר + redownloaded_msg: הפרופיל של %{username} רוענן בהצלחה מהמקור + reject: דחויים + rejected_msg: בקשת ההרשמה של %{username} נדחתה בהצלחה + remove_avatar: הסרת תמונת פרופיל + remove_header: הסרת כותרת + removed_avatar_msg: תמונת הפרופיל של %{username} הוסרה בהצלחה + removed_header_msg: תמונת הראשה של %{username} הוסרה בהצלחה resend_confirmation: already_confirmed: משתמש זה כבר אושר send: שלח מחדש דוא"ל אימות @@ -87,113 +201,830 @@ he: roles: admin: מנהל מערכת moderator: מנחה דיונים + staff: צוות user: משתמש(ת) search: חיפוש + search_same_email_domain: משתמשים אחרים מאותו דומיין דוא"ל + search_same_ip: משתמשים אחרים מאותה כתובת IP + security_measures: + only_password: סיסמא בלבד + password_and_2fa: סיסמא ואימות דו-גורמי + sensitive: מאולצים לרגישות + sensitized: מסומנים כרגישים shared_inbox_url: תיבה משותפת לדואר נכנס show: created_reports: דיווחים מאת חשבון זה targeted_reports: דיווחים נגד חשבון זה silence: השתקה + silenced: מוגבלים statuses: הודעות strikes: עבירות קודמות subscribe: הרשמה suspend: השעייה + suspended: מושעים + suspension_irreversible: המידע בחשבון זה נמחק באופן בלתי הפיך. ניתן להסיר את ההשעיה מהחשבון על מנת להחזיר אותו למצב שמיש, אבל שום מידע שהיה בבעלותו לא ישוחזר. + suspension_reversible_hint_html: חשבון זה הושעה, והמידע בו יוסר במלואו בתאריך %{date}. עד אז, ניתן לשחזר את החשבון ללא תופעות לוואי שליליות. אם ברצונך להסיר את כל המידע בחשבון באופן מידי, ניתן לעשות כן להלן. title: חשבונות + unblock_email: ביטול חסימת כתובת דוא"ל + unblocked_email_msg: הסרת חסימה מכתובת הדוא"ל של %{username} בוצעה בהצלחה + unconfirmed_email: כתובת דוא"ל לא מאומתת + undo_sensitized: בטל רגישות לכח undo_silenced: ביטול השתקה undo_suspension: ביטול השעייה + unsilenced_msg: ביטול הגבלה לחשבונו של %{username} בוצע בהצלחה unsubscribe: הפסקת הרשמה + unsuspended_msg: הסרת השעיה מהחשבון של %{username} בוצעה בהצלחה username: שם משתמש + view_domain: צפיה בסיכום שרת + warn: אזהרה web: רשת + whitelisted: מותר לפדרציה + action_logs: + action_types: + approve_appeal: אישור ערעור + approve_user: אישור משתמש + assigned_to_self_report: הקצאת דו"ח + change_email_user: שינוי כתובת דוא"ל למשתמש + confirm_user: אשר משתמש + create_account_warning: יצירת אזהרה + create_announcement: יצירת הכרזה + create_custom_emoji: יצירת אמוג'י מיוחד + create_domain_allow: יצירת דומיין מותר + create_domain_block: יצירת דומיין חסום + create_email_domain_block: יצירת חסימת דומיין דוא"ל + create_ip_block: יצירת כלל IP + create_unavailable_domain: יצירת דומיין בלתי זמין + demote_user: הורדת משתמש בדרגה + destroy_announcement: מחיקת הכרזה + destroy_custom_emoji: מחיקת אמוג'י יחודי + destroy_domain_allow: מחיקת דומיין מותר + destroy_domain_block: מחיקת דומיין חסום + destroy_email_domain_block: מחיקת חסימת דומיין דוא"ל + destroy_instance: טיהור דומיין + destroy_ip_block: מחיקת כלל IP + destroy_status: מחיקת חצרוץ + destroy_unavailable_domain: מחיקת דומיין בלתי זמין + disable_2fa_user: השעיית זיהוי דו-גורמי + disable_custom_emoji: השעיית אמוג'י מיוחד + disable_sign_in_token_auth_user: השעיית אסימון הזדהות בדוא"ל של משתמש + disable_user: השעיית משתמש + enable_custom_emoji: הפעלת אמוג'י מיוחד + enable_sign_in_token_auth_user: הפעלת אסימון הזדהות בדוא"ל של משתמש + enable_user: אפשור משתמש + memorialize_account: הנצחת חשבון + promote_user: קידום משתמש + reject_appeal: דחיית ערעור + reject_user: דחיית משתמש + remove_avatar_user: הסרת תמונת פרופיל + reopen_report: פתיחת דו"ח מחדש + reset_password_user: איפוס סיסמא + resolve_report: פתירת דו"ח + sensitive_account: חשבון רגיש לכח + silence_account: הגבלת חשבון + suspend_account: השעיית חשבון + unassigned_report: ביטול הקצאת דו"ח + unblock_email_account: ביטול חסימת כתובת דוא"ל + unsensitive_account: ביטול Force-Sensitive לחשבון + unsilence_account: ביטול השתקת חשבון + unsuspend_account: ביטול השעיית חשבון + update_announcement: עדכון הכרזה + update_custom_emoji: עדכון סמלון מותאם אישית + update_domain_block: עדכון חסימת שם מתחם + update_status: סטטוס עדכון + actions: + approve_appeal_html: "%{name} אישר/ה ערעור על החלטת מנהלי הקהילה מ-%{target}" + approve_user_html: "%{name} אישר/ה הרשמה מ-%{target}" + assigned_to_self_report_html: '%{name} הקצה/תה דו"ח %{target} לעצמם' + change_email_user_html: '%{name} שינה/תה את כתובת הדוא"ל של המשתמש %{target}' + confirm_user_html: '%{name} אישר/ה את כותבת הדו"אל של המשתמש %{target}' + create_account_warning_html: "%{name} שלח/ה אזהרה ל %{target}" + create_announcement_html: "%{name} יצר/ה הכרזה חדשה %{target}" + create_custom_emoji_html: "%{name} העלו אמוג'י חדש %{target}" + create_domain_allow_html: "%{name} אישר/ה פדרציה עם הדומיין %{target}" + create_domain_block_html: "%{name} חסם/ה את הדומיין %{target}" + create_email_domain_block_html: '%{name} חסם/ה את דומיין הדוא"ל %{target}' + create_ip_block_html: "%{name} יצר/ה כלל עבור IP %{target}" + create_unavailable_domain_html: "%{name} הפסיק/ה משלוח לדומיין %{target}" + demote_user_html: "%{name} הוריד/ה בדרגה את המשתמש %{target}" + destroy_announcement_html: "%{name} מחק/ה את ההכרזה %{target}" + destroy_custom_emoji_html: "%{name} השמיד/ה את האמוג'י %{target}" + destroy_domain_allow_html: "%{name} לא התיר/ה פדרציה עם הדומיין %{target}" + destroy_domain_block_html: "%{name} הסיר/ה חסימה מהדומיין %{target}" + destroy_email_domain_block_html: '%{name} הסיר/ה חסימה מדומיין הדוא"ל %{target}' + destroy_instance_html: "%{name} טיהר/ה את הדומיין %{target}" + destroy_ip_block_html: "%{name} מחק/ה את הכלל עבור IP %{target}" + destroy_status_html: "%{name} הסיר/ה חצרוץ מאת %{target}" + destroy_unavailable_domain_html: "%{name} התחיל/ה מחדש משלוח לדומיין %{target}" + disable_2fa_user_html: "%{name} ביטל/ה את הדרישה לאימות דו-גורמי למשתמש %{target}" + disable_custom_emoji_html: "%{name} השבית/ה את האמוג'י %{target}" + disable_sign_in_token_auth_user_html: '%{name} השבית/ה את האימות בעזרת אסימון דוא"ל עבור %{target}' + disable_user_html: "%{name} חסם/ה כניסה מהמשתמש/ת %{target}" + enable_custom_emoji_html: "%{name} אפשר/ה את האמוג'י %{target}" + enable_sign_in_token_auth_user_html: '%{name} אפשר/ה אימות בעזרת אסימון דוא"ל עבור %{target}' + enable_user_html: "%{name} אפשר/ה כניסה עבור המשתמש %{target}" + memorialize_account_html: "%{name} הפך/ה את חשבונו של %{target} לדף הנצחה" + promote_user_html: "%{name} העלה בדרגה את המשתמש %{target}" + reject_appeal_html: "%{name} דחו ערעור על החלטת הנהלת הקהילה מ-%{target}" + reject_user_html: "%{name} דחו הרשמה מ-%{target}" + remove_avatar_user_html: "%{name} הסירו את תמונת הפרופיל של %{target}" + reopen_report_html: '%{name} פתח מחדש דו"ח %{target}' + reset_password_user_html: "%{name} איפס/ה סיסמא עבור המשתמש %{target}" + resolve_report_html: '%{name} פתר/ה דו"ח %{target}' + sensitive_account_html: "%{name} סימן/ה את המדיה של %{target} כרגיש" + silence_account_html: "%{name} הגביל/ה את חשבונו של %{target}" + suspend_account_html: "%{name} השעו את חשבונו של %{target}" + unassigned_report_html: '%{name} דו"ח לא מוקצה %{target}' + unblock_email_account_html: '%{name} הסיר/ה חסימה מחשבון הדוא"ל של %{target}' + unsensitive_account_html: "%{name} ביטל/ה את סימון המדיה של %{target} כרגישה" + unsilence_account_html: "%{name} ביטל/ה ההגבלה מהחשבון של %{target}" + unsuspend_account_html: "%{name} ביטל/ה את ההשעיה של החשבון של %{target}" + update_announcement_html: "%{name} עדכן/ה הכרזה %{target}" + update_custom_emoji_html: "%{name} עדכן/ה אמוג'י %{target}" + update_domain_block_html: "%{name} עדכן/ה חסימת דומיין עבור %{target}" + update_status_html: "%{name} עדכן/ה חצרוץ של %{target}" + deleted_status: "(חצרוץ נמחק)" + empty: לא נמצאו יומנים. + filter_by_action: סינון לפי פעולה + filter_by_user: סינון לפי משתמש + title: ביקורת יומן + announcements: + destroyed_msg: הכרזה נמחקה בהצלחה! + edit: + title: עריכת הכרזה + empty: לא נמצאו הכרזות. + live: חי + new: + create: יצירת הכרזה + title: הכרזה חדשה + publish: פרסום + published_msg: ההכרזה פורסמה בהצלחה! + scheduled_for: מתוזמן ל-%{time} + scheduled_msg: ההכרזה תוזמנה לפרסום! + title: הכרזות + unpublish: ביטול פרסום + unpublished_msg: פרסום ההכרזה בוטל בהצלחה! + updated_msg: ההכרזה עודכנה בהצלחה! + custom_emojis: + assign_category: הקצאת קטגוריה + by_domain: לפי קהילה + copied_msg: עותק מקומי של האמוג'י נוצר בהצלחה + copy: להעתיק + copy_failed_msg: לא ניתן ליצור עותק מקומי של האמוג'י הזה + create_new_category: צור קטגוריה חדשה + created_msg: אמוג'י נוצר בהצלחה! + delete: למחוק + destroyed_msg: אמוג'י הושמד בהצלחה! + disable: השבתה + disabled: מושבת + disabled_msg: השבתת אמוג'י זה בוצעה בהצלחה + emoji: אמוג'י + enable: לאפשר + enabled: מאופשר + enabled_msg: אמוג'י זה אופשר בהצלחה + image_hint: PNG או GIF עד לגודל %{size} + list: רשימה + listed: ברשימה + new: + title: הוספת אמוג'י מיוחד חדש + not_permitted: אין לך הרשאות לביצוע פעולה זו + overwrite: לדרוס + shortcode: קוד קצר + shortcode_hint: לפחות 2 תוים, אלפאנומריים או קו תחתי + title: יצגנים מותאמים אישית + uncategorized: לא מסווגים + unlist: בטל רישום + unlisted: לא רשומים + update_failed_msg: לא ניתן היה לעדכן את היצגן הזה + updated_msg: יצגן עודכן בהצלחה! + upload: העלאה + dashboard: + active_users: משתמשים פעילים + interactions: אינטראקציות + media_storage: נפח אחסון מדיה + new_users: משתמשים חדשים + opened_reports: דו"חות פתוחים + pending_appeals_html: + many: "%{count} ערעורים ממתינים" + one: ערעור %{count} ממתין + other: "%{count} ערעורים ממתינים" + two: "%{count} ערעורים ממתינים" + pending_reports_html: + many: "%{count} דוחות ממתינים" + one: דו"ח %{count} ממתין + other: "%{count} דוחות ממתינים" + two: "%{count} דוחות ממתינים" + pending_tags_html: + many: "%{count} האשתגיות ממתינות" + one: "%{count} האשתג ממתין" + other: "%{count} האשתגיות ממתינות" + two: "%{count} האשתגיות ממתינות" + pending_users_html: + many: "%{count} משתמשים ממתינים" + one: "%{count} משתמש/ת ממתינ/ה" + other: "%{count} משתמשים ממתינים" + two: "%{count} משתמשים ממתינים" + resolved_reports: דו"חות נפתרו + software: תוכנה + sources: משאבי הרשמה + space: נפח בשימוש + title: לוח בקרה + top_languages: שפות פעילות מובילות + top_servers: שרתים פעילים מובילים + website: אתר + disputes: + appeals: + empty: לא נמצאו ערעורים. + title: ערעורים + domain_allows: + add_new: אפשר מַאֲחָד (פדרציה) עם שם המתחם + created_msg: הדומיין אופשר לפדרציה בהצלחה + destroyed_msg: הדומיין לא אופשר לפדרציה + undo: אסור מַאֲחָד (פדרציה) עם שם המתחם domain_blocks: add_new: הוספת חדש created_msg: חסימת שרת בתהליך destroyed_msg: חסימת שרת בוטלה domain: שרת + edit: עריכת חסימת שם מתחם + existing_domain_block_html: כבר הפעלת הגבלות חמורות יותר על %{name}, עליך ראשית להסיר מעליו/ה את החסימה. new: create: יצירת חסימה hint: חסימת השרת לא תמנע יצירת רישומי חשבון במסד הנתונים, אבל תבצע פעולות ניהול קהילה מסוימות על חשבונות אלו אוטומטית ורטרואקטיבית. severity: desc_html: "השתקה תחביא הודעות מחשבון זה לכל מי שלא עוקב אחריו. השעייה תסיר מהשרת את כל התוכן, מדיה ותכונות הפרופיל שמקושרות לחשבון זה. כלום כדי לחסום קבצי מדיה בלבד." + noop: ללא silence: השתקה suspend: השעייה title: חסימת שרת חדשה + obfuscate: לערפל את שם הדומיין + obfuscate_hint: לערפל באופן חלקי את שם הדומיין ברשימה אם פרסום רשימת ההגבלות על דומיינים מאופשר + private_comment: הערה פרטית + private_comment_hint: הערה על הגבלות לדומיין זה לשימוש פנימי של מנהלי הקהילה. + public_comment: תגובה פומבית + public_comment_hint: הערה אודות הגבלת דומיין זה לציבור הכללי, אם פרסום רשימת הגבלות הדומיינים מאופשר. reject_media: חסימת קבצי מדיה reject_media_hint: מסירה קבצי מדיה השמורים מקומית ומונעת מהורדת קבצים נוספים בעתיד. לא רלוונטי להשעיות + reject_reports: דחה דוחות + reject_reports_hint: התעלמות מכל הדיווחים הבאים מהדומיין הזה. לא רלוונטי עבור השעיות undo: ביטול + view: צפייה בחסימת דומיינים + email_domain_blocks: + add_new: הוספת חדש + attempts_over_week: + many: "%{count} נסיונות הרשמה במשך השבוע שעבר" + one: "%{count} נסיון במשך השבוע שעבר" + other: "%{count} נסיונות הרשמה במשך השבוע שעבר" + two: "%{count} נסיונות הרשמה במשך השבוע שעבר" + created_msg: כתובת מייל נחסמה בהצלחה + delete: מחיקה + dns: + types: + mx: רשומת MX + domain: דומיין + new: + create: הוספת דומיין + resolve: פתור דומיין + title: חסימת דומיין דוא"ל + no_email_domain_block_selected: לא בוצעו שינויים לחסימת דומייני דוא"ל שכן לא נבחרו דומיינים + resolved_dns_records_hint_html: שם הדומיין מוביל לדומייניי ה-MX הבאים, שהם בסופו של דבר אחראיים לקבלת דוא"ל. חסימת דומיין MX תוביל לחסימת הרשמות מכל כתובת דוא"ל שעושה שימוש בדומיין MX זה, אפילו אם הדומיין הגלוי שונה. יש להמנע מלחסום ספקי דוא"ל מובילים. + resolved_through_html: נמצא דרך %{domain} + title: דומייניי דוא"ל חסומים + follow_recommendations: + description_html: "עקבו אחר ההמלצות על מנת לעזור למשתמשים חדשים למצוא תוכן מעניין. במידה ומשתמש לא תקשר מספיק עם משתמשים אחרים כדי ליצור המלצות מעקב, חשבונות אלה יומלצו במקום. הם מחושבים מחדש על בסיסי יומיומי מתערובת של החשבונות הפעילים ביותר עם החשבונות הנעקבים ביותר עבור שפה נתונה." + language: עבור שפה + status: מצב + suppress: דכא המלצות מעקב + suppressed: מדוכא + title: המלצות מעקב + unsuppress: שחזור המלצות מעקב instances: + availability: + description_html: + many: אם משלוח לדומיין נכשל במשך %{count} ימים שונים ולא מצליח, נסיונות משלוח נוספים לא יעשו אלא אם התקבל משלוח מהדומיין. + one: אם משלוח לדומיין נכשל במשך %{count} ימים ולא מצליח, נסיונות משלוח נוספים לא יעשו אלא אם התקבל משלוח מהדומיין. + other: אם משלוח לדומיין נכשל במשך %{count} ימים שונים ולא מצליח, נסיונות משלוח נוספים לא יעשו אלא אם התקבל משלוח מהדומיין. + two: אם משלוח לדומיין נכשל במשך %{count} ימים שונים ולא מצליח, נסיונות משלוח נוספים לא יעשו אלא אם התקבל משלוח מהדומיין. + failure_threshold_reached: סף כשלון הושג ב-%{date}. + failures_recorded: + many: נסיונות כושלים ב-%{count} ימים שונים. + one: נסיון כושל ביום %{count}. + other: נסיונות כושלים ב-%{count} ימים שונים. + two: נסיונות כושלים ב-%{count} ימים שונים. + no_failures_recorded: לא נמצאו כשלונות. + title: זמינות + warning: הנסיון האחרון להתחבר לשרת זה לא עלה בהצלחה + back_to_all: כל + back_to_limited: מוגבל + back_to_warning: אזהרה + by_domain: דומיין + confirm_purge: האם את/ה בטוח/ה שברצונך למחוק באופן סופי מידע מדומיין זה? + content_policies: + comment: הערה פנימית + description_html: ביכולתך להגדיר מדיניות תוכן שתופעל על כל החשבונות מדומיין זה ומתת-דומייניו. + policies: + reject_media: דחיית מדיה + reject_reports: דחיית דו"חות + silence: הגבלה + suspend: השעייה + policy: מדיניות + reason: סיבה פומבית + title: מדיניות תוכן + dashboard: + instance_accounts_dimension: חשבונות בעלי העוקבים הרבים ביותר + instance_accounts_measure: חשבונות מאופסנים + instance_followers_measure: עוקבינו שם + instance_follows_measure: עוקביהם כאן + instance_languages_dimension: שפות מובילות + instance_media_attachments_measure: קבצי מדיה מאופסנים + instance_reports_measure: דו"חות אודותיהם + instance_statuses_measure: חצרוצים מאופסנים delivery: + all: הכל + clear: ניקוי שגיאות משלוח failing: נכשל + restart: אתחול משלוח מחדש + stop: הפסקת משלוח + unavailable: לא זמין + delivery_available: משלוח זמין + delivery_error_days: ימי שגיאת משלוח + delivery_error_hint: אם לא התאפשר משלוח במשך %{count} ימים, הוא יסומן אוטומטית כבלתי ניתן למשלוח. + destroyed_msg: מידע מ-%{domain} נמצא עתה בתור למחיקה מיידית. + empty: לא נמצאו דומיינים. + known_accounts: + many: "%{count} חשבונות ידועים" + one: חשבון ידוע %{count} + other: "%{count} חשבונות ידועים" + two: "%{count} חשבונות ידועים" + moderation: + all: הכל + limited: מוגבלים + title: ניהול קהילה + private_comment: הערה פרטית + public_comment: תגובה פומבית + purge: טיהור + purge_description_html: אם יש יסוד להניח שדומיין זה מנותק לעד, ניתן למחוק את כל רשומות החשבונות והמידע המשוייך לדומיין זה משטח האפסון שלך. זה עשוי לקחת זמן מה. title: שרתים מוכרים + total_blocked_by_us: חסום על ידינו + total_followed_by_them: נעקב על ידם + total_followed_by_us: נעקב על ידינו + total_reported: דוחות אודותיהם + total_storage: קבצי מדיה מצורפים + totals_time_period_hint_html: הסכומים המוצגים להלן כוללים מידע מכל הזמנים. + invites: + deactivate_all: להשבית הכל + filter: + all: כל ההזמנות + available: זמין + expired: פג תוקף + title: מסנן + title: הזמנות + ip_blocks: + add_new: צור כלל + created_msg: כלל IP חדש הוסף בהצלחה + delete: למחוק + expires_in: + '1209600': שבועיים + '15778476': 6 חודשים + '2629746': חודש אחד + '31556952': שנה אחת + '86400': יום אחד + '94670856': 3 שנים + new: + title: יצירת כלל IP + no_ip_block_selected: שום כלל IP לא שונה כי שום כלל IP לא נבחר + title: כללי IP + relationships: + title: היחסים של %{acct} + relays: + add_new: הוספת ממסר חדש + delete: מחיקה + description_html: "ממסר פדרטיבי הוא שרת מתווך שמחליף כמויות גדולות של חצרוצים פומביים בין שרתים שרשומים ומפרסמים אליו. הוא יכול לעזור לשרתים קטנים ובינוניים לגלות תוכן מהפדרציה, מה שאחרת היה דורש ממשתמשים מקומיים לעקוב ידנית אחרי אנשים בשרתים מרוחקים." + disable: השבתה + disabled: מושבת + enable: לאפשר + enable_hint: מרגע שאופשר, השרת שלך יירשם לכל החצרוצים הפומביים מהממסר הזה, ויתחיל לשלוח את חצרוציו הפומביים לממסר. + enabled: מאופשר + inbox_url: קישורית ממסר + pending: ממתין לאישור הממסר + save_and_enable: שמור והפעל + setup: הגדר חיבור לממסר + signatures_not_enabled: ממסרים לא עובדים נכון כשמאופשרים מצב מאובטח או מצב פדרציה מוגבל + status: מצב + title: ממסרים report_notes: + created_msg: הערה על דו"ח נוצרה בהצלחה! + destroyed_msg: הערה על דו"ח נמחקה בהצלחה! today_at: היום, ב%{time} reports: + account: + notes: + many: "%{count} הערות" + one: הערה %{count} + other: "%{count} הערות" + two: "%{count} הערות" + action_log: ביקורת יומן + action_taken_by: פעולה בוצעה ע"י actions: delete_description_html: הפוסטים המדווחים יימחקו ותרשם עבירה על מנת להקל בהעלאה של דיווחים עתידיים על אותה חשבון. + mark_as_sensitive_description_html: המדיה בחצרוצים מדווחים תסומן כרגישה ועבירה תרשם כדי לעזור לך להסלים באינטראקציות עתידיות עם אותו החשבון. + other_description_html: ראו אפשרויות נוספות לשליטה בהתנהגות החשבון וכדי לבצע התאמות בתקשורת עם החשבון המדווח. resolve_description_html: אף פעולה לא תבוצע נגד החשבון עליו דווח, לא תירשם עבירה, והדיווח ייסגר. + silence_description_html: הפרופיל יהיה גלוי אך ורק לאלה שכבר עוקבים אחריו או לאלה שיחפשו אותו ידנית, מה שיגביל מאד את תפוצתו. ניתן תמיד להחזיר את המצב לקדמותו. + suspend_description_html: הפרופיל וכל תכולתו יחסמו לכל גישה עד שבסופו של דבר ימחקו. כל תקשורת עם החשבון תהיה בלתי אפשרית. ניתן לביטול תוך 30 יום. + actions_description_html: בחר/י איזו פעולה לבצע על מנת לפתור את הדו"ח. אם תופעל פעולת ענישה כנגד החשבון המדווח, הודעת דוא"ל תשלח אליהם, אלא אם נבחרה קטגוריית הספאם. add_to_report: הוספת פרטים לדיווח are_you_sure: 100% על בטוח? + assign_to_self: הקצה אלי + assigned: מנחה מוקצה + by_target_domain: דומיין החשבון המדווח category: קטגוריה + category_description_html: הסיבה בגללה חשבון זה ו/או תוכנו דווחו תצוטט בתקשורת עם החשבון המדווח comment: none: ללא comment_description_html: 'על מנת לספק עוד מידע, %{name} כתב\ה:' + created_at: מדווח + delete_and_resolve: מחיקת חצרוצים + forwarded: קודם + forwarded_to: קודם ל-%{domain} mark_as_resolved: סימון כפתור + mark_as_sensitive: סימון כרגיש + mark_as_unresolved: סימון כלא פתור no_one_assigned: אף אחד notes: + create: הוספת הערה + create_and_resolve: פתרון עם הערה + create_and_unresolve: פתיחה מחדש עם הערה + delete: מחיקה + placeholder: תאר/י אילו פעולות ננקטו, או עדכונים קשורים אחרים... title: הערות + notes_description_html: צפייה והשארת הערות למנחים אחרים או לעצמך העתידי + quick_actions_description_html: 'נקוט/י פעולה מהירה או גלול/י למטה לצפייה בתוכן המדווח:' + remote_user_placeholder: המשתמש המרוחק מ-%{instance} + reopen: פתיחת דו"ח מחדש report: 'דווח על #%{id}' reported_account: חשבון מדווח reported_by: דווח על ידי resolved: פתור + resolved_msg: הדו"ח נפתר בהצלחה! + skip_to_actions: דלג/י לפעולות status: הודעה statuses: התוכן עליו דווח + statuses_description_html: התוכן הפוגע יצוטט בתקשורת עם החשבון המדווח + target_origin: מקור החשבון המדווח title: דיווחים + unassign: ביטול הקצאה unresolved: לא פתור + updated_at: עודכן view_profile: צפה בפרופיל + rules: + add_new: הוספת כלל + delete: מחיקה + description_html: בעוד הרוב טוען שקרא והסכים לתנאי השימוש, אנשים לא נוטים לקרוא אותם עד הסוף עד שמתעוררת בעיה. כדי שיקל לראות את כללי השרת במבט, יש לספקם כרשימת נקודות. כדאי לשמור על הכללים קצרים ופשוטים, אבל מאידך גם לא לפצל אותם ליותר מדי נקודות נפרדות. + edit: עריכת כלל + empty: שום כללי שרת לא הוגדרו עדיין. + title: כללי שרת settings: + activity_api_enabled: + desc_html: מספר החצרוצים שפורסמו מקומית, משתמשים פעילים, והרשמות חדשות בדליים שבועיים + title: פרסום סטטיסטיקות מקובצות עבור פעילות משתמשים בממשק + bootstrap_timeline_accounts: + desc_html: הפרדת משתמשים מרובים בפסיק. למשתמשים אלה מובטח שהם יכללו בהמלצות המעקב + title: המלצה על חשבונות אלה למשתמשים חדשים contact_information: email: נא להקליד כתובת דוא"ל פומבית username: נא להכניס שם משתמש + custom_css: + desc_html: שינוי המראה בעזרת CSS הנטען בכל דף + title: CSS יחודי + default_noindex: + desc_html: משפיע על כל המשתמשים שלא שינו את ההגדרה בעצמם + title: לא לכלול משתמשים במנוע החיפוש כברירת מחדל + domain_blocks: + all: לכולם + disabled: לאף אחד + title: צפיה בחסימת דומיינים + users: למשתמשים מקומיים מחוברים + domain_blocks_rationale: + title: הצגת רציונל + hero: + desc_html: מוצגת בדף הראשי. מומלץ לפחות 600x100px. אם לא נבחר, מוצגת במקום תמונה מוקטנת מהשרת + title: תמונת גיבור + mascot: + desc_html: מוצגת בכל מיני דפים. מומלץ לפחות 293×205px. אם לא נבחר, מוצג במקום קמע ברירת המחדל + title: תמונת קמע + peers_api_enabled: + desc_html: שמות דומיינים ששרת זה נתקל בהם ברחבי הפדרציה + title: פרסם רשימה של שרתים שנתגלו דרך הממשק + preview_sensitive_media: + desc_html: תצוגה מקדימה של קישוריות לאתרים אחרים יוצגו כתמונה מוקטנת אפילו אם המדיה מסומנת כרגישה + title: הצגת מדיה רגישה בתצוגה מקדימה של OpenGraph + profile_directory: + desc_html: הרשאה למשתמשים להתגלות + title: הרשאה לספריית פרופילים registrations: closed_message: - desc_html: מוצג על הדף הראשי כאשר ההרשמות סגורות
ניתן להשתמש בתגיות HTML + desc_html: מוצג על הדף הראשי כאשר ההרשמות סגורות. ניתן להשתמש בתגיות HTML title: מסר סגירת הרשמות + deletion: + desc_html: הרשאה לכולם למחוק את חשבונם + title: פתיחת מחיקת חשבון + min_invite_role: + disabled: אף אחד + title: אפשר הזמנות לפי + require_invite_text: + desc_html: כאשר הרשמות דורשות אישור ידני, הפיכת טקסט ה"מדוע את/ה רוצה להצטרף" להכרחי במקום אופציונלי + title: אלץ משתמשים חדשים למלא סיבת הצטרפות + registrations_mode: + modes: + approved: נדרש אישור הרשמה + none: אף אחד לא יכול להרשם + open: כל אחד יכול להרשם + title: מצב הרשמות + show_known_fediverse_at_about_page: + desc_html: כאשר לא מופעל, מגביל את הפיד הפומבי המקושר מדף הנחיתה להצגת תוכן מקומי בלבד + title: הכללת תוכן פדרטיבי בדף הפיד הפומבי הבלתי מאומת + show_staff_badge: + desc_html: הצג תג צוות בדף המשתמש + title: הצג תג צוות site_description: desc_html: מוצג כפסקה על הדף הראשי ומשמש כתגית מטא. ניתן להשתמש בתגיות HTML, ובמיוחד ב־ < a> ו־ < em> . title: תיאור האתר site_description_extended: - desc_html: מוצג על עמוד המידע הנוסף
ניתן להשתמש בתגיות HTML + desc_html: מקום טוב להצגת כללים, הנחיות, ודברים אחרים שמבדלים אותך ממופעים אחרים. ניתן להשתמש בתגיות HTML title: תיאור אתר מורחב + site_short_description: + desc_html: מוצג בעמודה הצידית ובמטא תגים. מתאר מהו מסטודון ומה מיחד שרת זה בפסקה בודדת. + title: תאור שרת קצר + site_terms: + desc_html: ניתן לכתוב מדיניות פרטיות, תנאי שירות ושאר מסמכים חוקיים בעצמך. ניתן להשתמש בתגי HTML + title: תנאי שירות יחודיים site_title: כותרת האתר + thumbnail: + desc_html: משמש לתצוגה מקדימה דרך OpenGraph והממשק. מומלץ 1200x630px + title: תמונה ממוזערת מהשרת + timeline_preview: + desc_html: הצגת קישורית לפיד הפומבי מדף הנחיתה והרשאה לממשק לגשת לפיד הפומבי ללא אימות + title: הרשאת גישה בלתי מאומתת לפיד הפומבי title: הגדרות אתר + trendable_by_default: + desc_html: משפיע על האשתגיות שלא נאסרו קודם לכן + title: הרשאה להאשתגיות להופיע בנושאים החמים ללא אישור מוקדם + trends: + desc_html: הצגה פומבית של תוכן שנסקר בעבר ומופיע כרגע בנושאים החמים + title: נושאים חמים + site_uploads: + delete: מחיקת קובץ שהועלה + destroyed_msg: העלאת אתר נמחקה בהצלחה! statuses: + back_to_account: חזרה לדף החשבון back_to_report: חזרה לעמוד הדיווח batch: remove_from_report: הסרה מהדיווח report: דווח + deleted: מחוקים + media: + title: מדיה + no_status_selected: לא בוצעו שינויים בחצרוצים שכן לא נבחרו חצרוצים + title: חצרוצי חשבון + with_media: עם מדיה + strikes: + actions: + delete_statuses: "%{name} מחק/ה את חצרוציו של %{target}" + disable: "%{name} הקפיא/ה את חשבונו של %{target}" + mark_statuses_as_sensitive: "%{name} סימנה את חצרוציו של %{target} כרגישים" + none: "%{name} שלח/ה אזהרה ל-%{target}" + sensitive: "%{name} סימן/ה את חשבונו של %{target} כרגיש" + silence: "%{name} הגביל/ה את חשבונו/ה של %{target}" + suspend: "%{name} השעה/תה את חשבונו/ה של %{target}" + appeal_approved: עורער + appeal_pending: בהמתנה לערעור + system_checks: + database_schema_check: + message_html: נדרשות הגירות מבני נתונים. אנא הריצו אותן כדי להבטיח שהיישום מתנהג כצפוי + elasticsearch_running_check: + message_html: לא ניתן להתחבר לחיפוש אלסטיק. בדקו בבקשה הוא רץ, או בטלו את חיפוש הטקסט המלא + elasticsearch_version_check: + message_html: 'גרסת חיפוש אלסטיק לא מתאימה: %{value}' + version_comparison: גרסת חיפוש אלסטיק %{running_version} רצה בעוד גרסא %{required_version} נדרשת + rules_check: + action: ניהול כללי שרת + message_html: לא הוגדרו שום כללי שרת. + sidekiq_process_check: + message_html: שום הליכי Sidekiq לא רצים עבור %{value} תור(ות). בחנו בבקשה את הגדרות Sidekiq + tags: + review: סקירת מצב + updated_msg: הגדרות האשתג עודכנו בהצלחה title: ניהול + trends: + allow: לאפשר + approved: אישור + disallow: לא לאשר + links: + allow: אישור קישורית + allow_provider: אישור מפרסם + description_html: בקישוריות אלה נעשה כרגע שימוש על ידי חשבונות רבים שהשרת שלך רואה חצרוצים מהם. זה עשוי לסייע למשתמשיך לברר מה קורה בעולם. שום קישוריות לא יוצגו עד שתאשרו את המפרסם. ניתן גם לאפשר או לדחות קישוריות ספציפיות. + disallow: לא לאשר קישורית + disallow_provider: לא לאשר מפרסם + shared_by_over_week: + many: הופץ על ידי %{count} אנשים בשבוע האחרון + one: הופץ על ידי אדם אחד בשבוע האחרון + other: הופץ על ידי %{count} אנשים בשבוע האחרון + two: הופץ על ידי %{count} אנשים בשבוע האחרון + title: קישוריות חמות + usage_comparison: הופץ %{today} פעמים היום, לעומת %{yesterday} אתמול + only_allowed: רק כאלה שהותרו + pending_review: בהמתנה לבדיקה + preview_card_providers: + allowed: קישוריות ממפרסם זה יכולות להכלל בנושאים החמים + description_html: אלה הם דומיינים מהם קישוריות מופצות תדיר לשרת שלך. קישוריות לא יכללו בנושאים החמים אלא אם דומיין הקישורית יאושר. אישורך (או דחייתך) יכלול גם תת-דומיינים. + rejected: קישוריות ממפרסם זה לא תכללנה בנושאים החמים + title: מפרסמים + rejected: דחוי + statuses: + allow: הרשאת חצרוץ + allow_account: הרשאת מחבר/ת + description_html: אלו הם חצרוצים שהשרת שלך מכיר וזוכים להדהודים וחיבובים רבים כרגע. זה עשוי למשתמשיך החדשים והחוזרים למצוא עוד נעקבים. החצרוצים לא מוצגים עד שיאושר המחבר/ת, והמחבר/ת יאשרו שחשבונים יומלץ לאחרים. ניתן לאשר או לדחות חצרוצים ספציפיים. + disallow: לא לאשר חצרוץ + disallow_account: לא לאשר מחבר/ת + not_discoverable: המחבר/ת לא בחר/ה לאפשר את גילויים + shared_by: + many: הודהד וחובב %{friendly_count} פעמים + one: הודהד או חובב פעם אחת + other: הודהד וחובב %{friendly_count} פעמים + two: הודהד וחובב %{friendly_count} פעמים + title: חצרוצים חמים + tags: + current_score: ציון נוכחי %{score} + dashboard: + tag_accounts_measure: שימושים יחודיים + tag_languages_dimension: שפות מובילות + tag_servers_dimension: שרתים מובילים + tag_servers_measure: שרתים שונים + tag_uses_measure: כלל השימושים + description_html: אלו הן האשתגיות שמופיעות הרבה כרגע בחצרוצים המגיעים לשרת. זה עשוי לעזור למשתמשיך למצוא על מה אנשים מרבים לדבר כרגע. שום האשתגיות לא יוצגו בפומבי עד שתאושרנה. + listable: ניתנות להצעה + not_listable: לא תוצענה + not_trendable: לא תופענה תחת נושאים חמים + not_usable: לא שמישות + peaked_on_and_decaying: הגיע לשיא ב-%{date}, ודועך עכשיו + title: האשתגיות חמות + trendable: עשויה להופיע תחת נושאים חמים + trending_rank: 'מדורגת #%{rank}' + usable: ניתנת לשימוש + usage_comparison: שומשה %{today} פעמים היום, לעומת %{yesterday} אתמול + used_by_over_week: + many: הוצגה על ידי %{count} משתמשים במשך השבוע שעבר + one: הוצגה על ידי משתמש בודד במשך השבוע שעבר + other: הוצגה על ידי %{count} משתמשים במשך השבוע שעבר + two: הוצגה על ידי %{count} משתמשים במשך השבוע שעבר + title: נושאים חמים + trending: נושאים חמים + warning_presets: + add_new: הוספת חדש + delete: למחוק + edit_preset: ערוך/י טקסט מוכן מראש לאזהרה + empty: לא הגדרת עדיין שום טקסט מוכן מראש לאזהרה. + title: ניהול טקסטים מוכנים מראש לאזהרות + admin_mailer: + new_appeal: + actions: + delete_statuses: כדי למחוק את חצרוציהם + disable: כדי להקפיא את חשבונם + mark_statuses_as_sensitive: כדי לסמן את חצרוציהם כרגישים + none: אזהרה + sensitive: כדי לסמן את חשבונם כרגיש + silence: כדי להגביל את חשבונם + suspend: כדי להשעות את חשבונם + body: "%{target} מערערים על החלטת מנהלי הקהילה ב-%{action_taken_by} מתאריך %{date}, שהיה %{type}. הם כתבו:" + next_steps: ניתן לאשר את הערער כדי להפוך את החלטת מנהלי הקהילה, או להתעלם ממנו. + subject: "%{username} מערערים על החלטת מנהלי הקהילה במופע %{instance}" + new_pending_account: + body: פרטי החשבון החדש מובאים להלן. ניתן לאשר או לדחות את הבקשה. + subject: חשבון חדש מובא לסקירה ב-%{instance} (%{username}) + new_report: + body: "%{reporter} דיווחו על %{target}" + body_remote: מישהם מהמופע %{domain} דיווחו על %{target} + subject: דו"ח חדש מהמופע %{instance} (#%{id}) + new_trends: + body: 'הפריטים הבאים זקוקים לסקירה לפני שניתן יהיה להציגם פומבית:' + new_trending_links: + no_approved_links: אין כרגע שום קישוריות חמות מאושרות. + requirements: כל אחד מהמועמדים האלה עשוי לעבור את הקישורית החמה המאושרת מדרגה %{rank}, שהיא כרגע %{lowest_link_title} עם ציון של %{lowest_link_score}. + title: נושאים חמים + new_trending_statuses: + no_approved_statuses: אין כרגע שום חצרוצים חמים מאושרים. + requirements: כל אחד מהמועמדים האלה עשוי לעבור החצרוץ החם המאושר מדרגה %{rank}, שההא כרגע %{lowest_status_url} עם ציון של %{lowest_status_score}. + title: חצרוצים לוהטים + new_trending_tags: + no_approved_tags: אין כרגע שום האשתגיות חמות מאושרות. + requirements: כל אחת מהמועמדות האלה עשויה לעבור את ההאשתגית החמה המאושרת מדרגה %{rank}, שהיא כרגע %{lowest_tag_name} עם ציון של %{lowest_tag_score}. + title: האשתגיות חמות + subject: נושאים חמים חדשים מוכנים לסקירה ב-%{instance} + aliases: + add_new: יצירת שם נרדף + created_msg: שם נרדף חדש נוצר בהצלחה. ניתן להתחיל עכשיו את המעבר מהחשבון הישן. + deleted_msg: שם נרדף הוסר בהצלחה. מעבר מהחשבון ההוא לזה לא אפשרי יותר. + empty: אין לך שמות נרדפים. + hint_html: אם ברצונך לעבור מחשבון אחר לחשבון הזה, כאן ניתן ליצור שם נרדף, הנדרש לפני שאפשר יהיה להמשיך עם העברת עוקבים מהחשבון הישן לזה. הפעולה עצמה הפיכה ובלתי מזיקה. הגירת החשבון מופעלת מהחשבון הישן. + remove: הסרת שם נרדף + appearance: + advanced_web_interface: ממשק ווב מתקדם + advanced_web_interface_hint: 'אם ברצונך לעשות שימוש במלוא רוחב המסך, ממשק הווב המתקדם מאפשר לך להגדיר עמודות רבות ושונות כדי לראות בו זמנית כמה מידע שתרצה/י: פיד הבית, התראות, פרהסיה ומספר כלשהו של רשימות והאשתגיות.' + animations_and_accessibility: הנפשות ונגישות + confirmation_dialogs: חלונות אישור + discovery: גילוי + localization: + body: מסטודון מתורגם על ידי מתנדבים. + guide_link: https://crowdin.com/project/mastodon + guide_link_text: כולם יכולים לתרום. + sensitive_content: תוכן רגיש + toot_layout: פריסת חצרוץ application_mailer: + notification_preferences: שינוי העדפות דוא"ל + salutation: "%{name}," settings: 'שינוי הגדרות דוא"ל: %{link}' view: 'תצוגה:' + view_profile: צפיה בפרופיל + view_status: הצגת חצרוץ applications: + created: ישום נוצר בהצלחה + destroyed: ישום נמחק בהצלחה invalid_url: כתובת הקישורית אינה חוקית + regenerate_token: יצירת אסימון גישה מחדש + token_regenerated: אסימון גישה יוצר מחדש בהצלחה + warning: זהירות רבה נדרשת עם מידע זה. אין לחלוק אותו אף פעם עם אף אחד! + your_token: אסימון הגישה שלך auth: + apply_for_account: בקשת הזמנה + change_password: סיסמא + checkbox_agreement_html: אני מסכים/ה לכללי השרת ולתנאי השימוש + checkbox_agreement_without_rules_html: אני מסכים/ה לתנאי השימוש + delete_account: מחיקת חשבון + delete_account_html: אם ברצונך למחוק את החשבון, ניתן להמשיך כאן. תתבקש/י לספק אישור נוסף. + description: + prefix_invited_by_user: "@%{name} מזמין אותך להצטרף לשרת זה במסטודון!" + prefix_sign_up: הרשם/י למסטודון היום! + suffix: כבעל/ת חשבון, תוכל/י לעקוב אחרי אנשים, לפרסם עדכונים ולהחליף מסרים עם משתמשים מכל שרת מסטודון ועוד! didnt_get_confirmation: לא התקבלו הוראות אימות? + dont_have_your_security_key: אין לך מפתח אבטחה? forgot_password: הנשתכחה סיסמתך? + invalid_reset_password_token: אסימון איפוס הסיסמא לא תקין או פג תוקף. נא לבקש אחד חדש. + link_to_otp: נא להכניס את קוד האימות הדו-גורמי מהטלפון או את קוד האחזור + link_to_webauth: נא להשתמש במכשיר מפתח האבטחה log_in_with: התחבר באמצעות login: כניסה logout: יציאה + migrate_account: מעבר לחשבון אחר + migrate_account_html: אם ברצונך להכווין את החשבון לעבר חשבון אחר, ניתן להגדיר זאת כאן. + or_log_in_with: או התחבר באמצעות + providers: + cas: CAS + saml: SAML register: הרשמה + registration_closed: "%{instance} לא מקבל חברים חדשים" resend_confirmation: שלח הוראות אימות בשנית reset_password: איפוס סיסמא security: החלפת סיסמא set_new_password: שינוי סיסמא + setup: + email_below_hint_html: אם כתובת הדוא"ל להלן לא נכונה, ניתן לשנותה כאן ולקבל דוא"ל אישור חדש. + email_settings_hint_html: דוא"ל האישור נשלח ל-%{email}. אם כתובת הדוא"ל הזו לא נכונה, ניתן לשנותה בהגדרות החשבון. + title: הגדרות status: + account_status: מצב חשבון + confirming: ממתין שדוא"ל האישור יושלם. functional: החשבון שלכם פעיל לגמרי. + pending: בקשתך ממתינה לאישור על ידי הצוות שלנו. זה עשוי לקחת זמן מה. דוא"ל יישלח אליך אם בקשתך התקבלה. redirecting_to: חשבונכם לא פעיל כעת מכיוון שמפנה ל%{acct}. + view_strikes: צפיה בעברות קודמות שנרשמו נגד חשבונך + too_fast: הטופס הוגש מהר מדי, נסה/י שוב. + trouble_logging_in: בעיה להתחבר לאתר? + use_security_key: שימוש במפתח אבטחה authorize_follow: + already_following: את/ה כבר עוקב/ת אחרי חשבון זה + already_requested: כבר נשלחה בקשת מעקב לחשבון זה error: למרבה הצער, היתה שגיאה בחיפוש החשבון המרוחק follow: לעקוב + follow_request: 'שלחת בקשת מעקב ל:' + following: 'הצלחה! הינך עוקב עכשיו אחרי:' + post_follow: + close: או, פשוט לסגור חלון זה. + return: הצג את פרופיל המשתמש + web: מעבר לווב title: לעקוב אחרי %{acct} + challenge: + confirm: המשך + hint_html: "טיפ: לא נבקש את סיסמתך שוב בשעה הקרובה." + invalid_password: סיסמא שגויה + prompt: אשר/י סיסמא להמשך + crypto: + errors: + invalid_key: זהו לא מפתח Ed25519 או Curve25519 קביל + invalid_signature: היא לא חתימת Ed25519 קבילה + date: + formats: + default: "%b %d, %Y" + with_month_name: "%B %d, %Y" datetime: distance_in_words: about_x_hours: "%{count} שעות" @@ -208,116 +1039,653 @@ he: x_minutes: "%{count} דקות" x_months: "%{count} חודשים" x_seconds: "%{count} שניות" + deletes: + challenge_not_passed: המידע שהכנסת לא היה נכון + confirm_password: נא להכניס את הסיסמא הנוכחית כדי לוודא את זהותך + confirm_username: נא להכניס את שם המשתמש כדאי לאשר את הפעולה + proceed: מחיקת חשבון + success_msg: חשבונך נמחק בהצלחה + warning: + before: 'לפני שנמשיך, נא לקרוא בזהירות את ההערות הבאות:' + caches: מידע שהוטמן על ידי שרתים אחרים עשוי להתמיד + data_removal: חצרוציך וכל מידע אחר יוסרו לתמיד + email_change_html: ניתן לשנות את כתובת הדוא"ל שלך מבלי למחוק את החשבון + email_contact_html: אם הוא עדיין לא הגיע, ניתן לקבל עזרה על ידי משלוח דואל ל-%{email} + email_reconfirmation_html: אם לא מתקבל דוא"ל האישור, ניתן לבקש אותו שוב + irreversible: לא ניתן יהיה לשחזר או להפעיל מחדש את חשבונך + more_details_html: לפרטים נוספים, ראו את מדיניות הפרטיות. + username_available: שם המשתמש שלך שוב יהיה זמין + username_unavailable: שם המשתמש שלך יישאר בלתי זמין + directories: + directory: מדריך פרופילים + explanation: גלו משתמשים בהתבסס על תחומי העניין שלהם + explore_mastodon: חקור את %{title} + disputes: + strikes: + action_taken: הפעולה שבוצעה + appeal: ערער + appeal_approved: הערעור על פסילה זו התקבל + appeal_rejected: ערעור זה נדחה + appeal_submitted_at: ערעור הוגש + appealed_msg: הערעור שלך הוגש. במידה ויאושר, תיודע. + appeals: + submit: הגש ערעור + associated_report: הדו"ח המשויך + created_at: מתאריך + description_html: אלו הן הפעולות שננקטו כנגד חשבונך והאזהרות שנשלחו אליך על ידי צוות %{instance}. + recipient: הנמען + status: 'חצרוץ #%{id}' + status_removed: החצרוץ כבר הוסר מהמערכת + title: "%{action} מתאריך %{date}" + title_actions: + delete_statuses: הסרת חצרוץ + disable: הקפאת חשבון + mark_statuses_as_sensitive: סימון חצרוצים כרגישים + none: אזהרה + sensitive: סימו חשבון כרגיש + silence: הגבלת חשבון + suspend: השעית חשבון + your_appeal_approved: ערעורך התקבל + your_appeal_pending: הגשת ערעור + your_appeal_rejected: ערעורך נדחה + domain_validator: + invalid_domain: הוא לא שם דומיין קביל errors: - '400': The request you submitted was invalid or malformed. + '400': הבקשה שהגשת לא תקינה. '403': חסרות לך הרשאות לצפיה בעמוד זה. '404': הדף המבוקש לא קיים. - '406': This page is not available in the requested format. + '406': הדף לא זמין בפורמט המבוקש. '410': הדף המבוקש כבר לא קיים. '422': content: בדיקת אבטחה נכשלה. החסמת עוגיותיך מפנינו? title: בדיקת בטיחות נכשלה '429': הוחנק - '500': - '503': The page could not be served due to a temporary server failure. + '500': + content: אנו מצטערות, אבל משהו השתבש בצד שלנו. + title: דף זה אינו נכון + '503': לא ניתן להציג דף זה עקב תקלת שרת זמנית. + noscript_html: על מנת להשתמש ביישום הווב של מסטודון, נא לאפשר שימוש בג'אווהסקריפט. לחילופין אפשר לנסות את אחת האפליקציות הילידיות שלנו המתאימה לסביבתך. + existing_username_validator: + not_found: לא נמצא משתמש מקומי בשם זה + not_found_multiple: לא נמצאו %{usernames} exports: + archive_takeout: + date: תאריך + download: הורדת הארכיון שלך + hint_html: ניתן לבקש ארכיון של חצרוציך וקבצי המדיה שלך. המידע המיוצא יהיה בפורמט אקטיביטיפאב, שיכול להיקרא על ידי כל תוכנה התומכת בו. ניתן לבקש ארכיון מדי 7 ימים. + in_progress: מייצר את הארכיון שלך... + request: לבקש את הארכיון שלך + size: גודל blocks: רשימת חסימות + bookmarks: סימניות + csv: CSV + domain_blocks: חסימות דומיינים + lists: רשימות mutes: רשימת השתקות storage: אחסון מדיה + featured_tags: + add_new: הוספת חדש + errors: + limit: המספר המירבי של האשתגיות כבר מוצג + hint_html: "מהן האשתגיות נבחרות? הן מוצגות במובלט בפרופיל הפומבי שלך ומאפשר לאנשים לעיין בחצרוציך הפומביים המסמונים בהאשתגיות אלה. הן כלי אדיר למעקב אחר עבודות יצירה ופרוייקטים לטווח ארוך." + filters: + contexts: + account: פרופילים + home: בית ורשימות + notifications: התראות + public: פידים פומביים + thread: שיחות + edit: + title: ערוך מסנן + errors: + invalid_context: לא סופק הקשר או הקשר לא תקין + invalid_irreversible: סינון בלתי הפיך עובד רק בהקשר פיד הבית או התראות + index: + delete: למחוק + empty: אין לך מסננים. + title: מסננים + new: + title: הוספת מסנן חדש + footer: + developers: מפתחות + more: עוד… + resources: משאבים + trending_now: נושאים חמים generic: + all: הכל changes_saved_msg: השינויים נשמרו בהצלחה! + copy: להעתיק + delete: למחוק + none: כלום + order_by: מיין לפי save_changes: שמור שינויים + today: היום + validation_errors: + many: משהו עדיין לא בסדר! נא לעיין ב-%{count} השגיאות להלן + one: משהו עדיין לא בסדר! נא לעיין בשגיאה להלן + other: משהו עדיין לא בסדר! נא לעיין ב-%{count} השגיאות להלן + two: משהו עדיין לא בסדר! נא לעיין ב-%{count} השגיאות להלן + html_validator: + invalid_markup: 'מכיל קוד HTML לא תקין: %{error}' imports: + errors: + over_rows_processing_limit: מכיל יותר מ-%{count} עמודות + modes: + merge: מיזוג + merge_long: שמירת רשומות קיימות והוספת חדשות + overwrite: דריסה + overwrite_long: החלף רשומות נוכחיות בחדשות preface: ניתן ליבא מידע מסויים כגון כל הנעקבים או המשתמשים החסומים לתוך חשבונך על שרת זה, מתוך קבצים שנוצרו על ידי יצוא משרת אחר כגון רשימת הנעקבים והחסומים שלך. success: כל המידע יובא בהצלחה, ויעובד בזמן הקרוב types: blocking: רשימת חסימות + bookmarks: סימניות + domain_blocking: רשימת שמות מתחם חסומים following: רשימת נעקבים muting: רשימת השתקות upload: יבוא + in_memoriam_html: לזכר. + invites: + delete: ביטול הפעלה + expired: פג תוקף + expires_in: + '1800': חצי שעה + '21600': 6 שעות + '3600': שעה + '43200': 12 שעות + '604800': שבוע + '86400': יום אחד + expires_in_prompt: לעולם לא + generate: צור קישור להזמנה + invited_by: הוזמנת ע"י + max_uses: + many: "%{count} שימושים" + one: שימוש אחד + other: "%{count} שימושים" + two: "%{count} שימושים" + max_uses_prompt: ללא הגבלה + prompt: צור ושתף קישורים לאחרים על מנת להעניק גישה לשרת זה + table: + expires_at: פוקעת ב + uses: שימושים + title: הזמנת אנשים + lists: + errors: + limit: הגעת למספר הרשימות המירבי. + login_activities: + authentication_methods: + otp: יישומון אימות דו-שלבי + password: סיסמא + sign_in_token: קוד אימות בדוא"ל + webauthn: מפתחות אבטחה + description_html: אם את/ה רואה פעילות שאינך מזהה, אנא שנה/י את סיסמתך והפעל/י אימות דו-גורמי. + empty: הסטוריית אימותים אינה זמינה + failed_sign_in_html: נסיון כניסה כושל בשיטת %{method} מכתובת %{ip} (%{browser}) + successful_sign_in_html: נסיון כניסה מוצלח בשיטה %{method} מכתובת %{ip} (%{browser}) + title: הסטוריית אימותים media_attachments: validations: images_and_video: לא ניתן להוסיף וידאו לחצרוץ שכבר מכיל תמונות + not_ready: לא ניתן להצמיד קבצים שהעלאתם לא הסתיימה. נסה/י שוב בעוד רגע! too_many: לא ניתן להוסיף יותר מארבעה קבצים migrations: + acct: עבר אל + cancel: ביטול הפניה + cancel_explanation: ביטול ההפניה יפעיל מחדש את החשבון הנוכחי, אבל לא יחזיר את העוקבים שהועברו לחשבון החדש. + cancelled_msg: ההפניה בוטלה בהצלחה. + errors: + already_moved: זה אותו החשבון שכבר עברת אליו + missing_also_known_as: לא שם נרדף של החשבון הזה + move_to_self: לא יכול להיות החשבון הנוכחי + not_found: לא נמצאו + on_cooldown: את/ה בתקופת צינון + followers_count: עוקבים בזמן המעבר + incoming_migrations: מעבר לחשבון אחר + incoming_migrations_html: כדי לעבור מחשבון אחר לחשבון זה, עליך ראשית ליצור שם נרדף לחשבון. + moved_msg: חשבונך מופנה עתה ל-%{acct} וכל עוקביך מועברים לשם. not_redirecting: חשבונכם לא מפנה לשום חשבון אחר כעת. + on_cooldown: חשבונך היגר לאחרונה. אפשרות זו תאופשר מחדש בעוד %{count} ימים. + past_migrations: הגירות עבר + proceed_with_move: העברת עוקבים redirected_msg: חשבונכם כעת מפנה ל%{acct}. redirecting_to: חשבונכם מפנה ל%{acct}. set_redirect: הגדר הפניה + warning: + backreference_required: ראשית יש להגדיר את החשבון החדש כך שיצביע לאחור לעבר חשבון זה + before: 'לפני שנמשיך, נא לקרוא בזהירות את ההערות הבאות:' + cooldown: לאחר המעבר ישנה תקופת המתנה בה לא ניתן לעבור שוב + disabled_account: חשבונך הנוכחי לא יהיה שמיש לחלוטין לאחר מכן. עם זאת, ניתן יהיה לגשת ליצוא המידע, וכמו כן להפעילו מחדש. + followers: פעולה זו תעביר את כל העוקבים מהחשבון הנוכחי לחשבון החדש + only_redirect_html: לחילופין, ניתן להסתפק בהכוונה מחדש בפרופילך. + other_data: שום מידע לא יועבר אוטומטית + redirect: פרופיל חשבונך הנוכחי יעודכן עם הודעת הכוונה מחדש ויוחרג מחיפושים + moderation: + title: ניהול קהילה + move_handler: + carry_blocks_over_text: חשבון זה עבר מ-%{acct}, אותו חסמת בעבר. + carry_mutes_over_text: חשבון זה עבר מ-%{acct}, אותו השתקת בעבר. + copy_account_note_text: 'חשבון זה הועבר מ-%{acct}, הנה הערותיך הקודמות לגביהם:' notification_mailer: admin: sign_up: subject: "%{name} נרשמו" digest: + action: הצגת כל ההתראות body: להלן סיכום זריז של הדברים שקרו על מאז ביקורך האחרון ב-%{since} mention: "%{name} פנה אליך ב:" + new_followers_summary: + many: חוץ מזה, נוספו לך %{count} עוקבים חדשים בזמן שלא היית! מדהים! + one: חוץ מזה, נוסף לך עוקב חדש בזמן שלא היית! הידד! + other: חוץ מזה, נוספו לך %{count} עוקבים חדשים בזמן שלא היית! מדהים! + two: חוץ מזה, נוספו לך %{count} עוקבים חדשים בזמן שלא היית! מדהים! + subject: + many: "%{count} התראות חדשות מאז ביקורך האחרון 🐘" + one: "התראה חדשה אחת מאז ביקורך האחרון 🐘" + other: "%{count} התראות חדשות מאז ביקורך האחרון 🐘" + two: "%{count} התראות חדשות מאז ביקורך האחרון 🐘" + title: בהעדרך... favourite: body: 'חצרוצך חובב על ידי %{name}:' subject: חצרוצך חובב על ידי %{name} + title: חיבוב חדש follow: body: "%{name} עכשיו במעקב אחריך!" subject: "%{name} עכשיו במעקב אחריך" + title: עוקב/ת חדש/ה follow_request: + action: ניהול בקשות מעקב body: התקבלה בקשת מעקב מ־%{name} subject: 'בקשת מעקב בהמתנה: %{name}' + title: בקשת מעקב חדשה mention: + action: תגובה body: 'התקבלה פניה עבורך מאת %{name} ב:' subject: התקבלה פניה עבורך מאת %{name} + title: אזכור חדש + poll: + subject: סקר מאת %{name} הסתיים reblog: body: 'חצרוצך הודהד על ידי %{name}:' subject: חצרוצך הודהד על ידי%{name} + title: הדהוד חדש + status: + subject: "%{name} בדיוק חצרץ" update: subject: "%{name} ערכו פוסט" + notifications: + email_events: ארועים להתראות דוא"ל + email_events_hint: 'בחר/י ארועים עבורים תרצה/י לקבל התראות:' + other_settings: הגדרות התראות אחרות + number: + human: + decimal_units: + format: "%n%u" + units: + billion: מליארד + million: מליון + quadrillion: קוואדריליון + thousand: אלף + trillion: טריליון + otp_authentication: + code_hint: על מנת לאשר, נא להכניס את הקוד שיוצר על ידי יישום האימות שלך + description_html: אם אופשר אימות דו-גורמי בעזרת אפליקציית אימות, כניסה לאתר תדרוש שימוש בטלפון ליצירת אסימוני כניסה עבורך. + enable: לאפשר + instructions_html: "נא לסרוק את קוד ה-QR בעזרת Google Authenticator או יישום TOTP דומה בטלפונך. מעתה ואילך, יישום זה ייצר אסימונים שיש להזין בזמן הכניסה לאתר." + manual_instructions: 'אם לא ניתן לסרוק את קוד ה-QR ויש להכניסו ידנית, הנה הסוד כטקסט:' + setup: הגדרה + wrong_code: הקוד שהוכנס אינו תקין! האם זמן השרת וזמן המכשיר נכונים? pagination: + newer: חדש יותר next: הבא + older: ישן יותר prev: הקודם + truncate: "…" + polls: + errors: + already_voted: כבר הצבעת בסקר זה + duplicate_options: מכיל פריטים כפולים + duration_too_long: רחוק מדי בעתיד + duration_too_short: מוקדם מדי + expired: סקר זה כבר הסתיים + invalid_choice: ההצבעה שנבחרה אינה קיימת + over_character_limit: לא יכולים להיות יותר מ-%{max} תוים כל אחד + too_few_options: חייב להכיל יותר מפריט אחד + too_many_options: לא יכול להכיל יותר מ-%{max} פריטים + preferences: + other: שונות + posting_defaults: ברירות מחדל לחצרוץ + public_timelines: פידים פומביים + reactions: + errors: + limit_reached: גבול מספר התגובות השונות הושג + unrecognized_emoji: הוא לא אמוג'י מוכר + relationships: + activity: רמת פעילות + dormant: רדומים + follow_selected_followers: עקוב אחר הנעקבים שנבחרו + followers: עוקבים + following: נעקבים + invited: הוזמנו + last_active: פעילות אחרונה + most_recent: העדכניות ביותר + moved: הועברו + mutual: הדדיים + primary: עיקריים + relationship: יחסים + remove_selected_domains: הסר את כל העוקבים משמות המתחם שסומנו + remove_selected_followers: הסר את העוקבים שסומנו + remove_selected_follows: בטל מעקב אחר המשתמשים שסומנו + status: מצב חשבון remote_follow: acct: נא להקליד שם_משתמש@קהילה מהם ברצונך לעקוב missing_resource: לא ניתן למצוא קישורית להפניה לחשבונך + no_account_html: אין לך חשבון? ניתן להרשם כאן proceed: להמשיך ולעקוב prompt: 'לעקוב אחרי:' + reason_html: "למה שלב זה הכרחי? %{instance} עשוי לא להיות השרת בו את/ה רשום/ה, כך שנצטרך קודם כל להעביר אותך לשרת הבית." + remote_interaction: + favourite: + proceed: המשך לחיבוב + prompt: 'ברצונך לחבב חצרוץ זה:' + reblog: + proceed: המשיכו להדהוד + prompt: 'ברצונך להדהד חצרוץ זה:' + reply: + proceed: המשיבו לתגובה + prompt: 'ברצונך להשיב לחצרוץ זה:' + reports: + errors: + invalid_rules: לא מתייחס לכללים קבילים + scheduled_statuses: + over_daily_limit: חרגת מהמספר המקסימלי של חצרוצים מתוזמנים להיום, שהוא %{limit} + over_total_limit: חרגת מהמספר המקסימלי של חצרוצים מתוזמנים, שהוא %{limit} + too_soon: תאריך התזמון חייב להיות בעתיד + sessions: + activity: פעילות אחרונה + browser: דפדפן + browsers: + alipay: Alipay + blackberry: בלקברי + chrome: כרום + edge: מייקרוסופט אדג' + electron: אלקטרון + firefox: פיירפוקס + generic: דפדפן לא ידוע + ie: אינטרנט אקספלורר + micro_messenger: MicroMessenger + nokia: Nokia S40 Ovi Browser + opera: אופרה + otter: Otter + phantom_js: PhantomJS + qq: דפדפן QQ + safari: ספארי + uc_browser: UCBrowser + weibo: Weibo + current_session: חיבור נוכחי + description: "%{browser} על %{platform}" + explanation: אלה הם הדפדפנים המחוברים כרגע לחשבון המסטודון שלך. + ip: IP + platforms: + adobe_air: אדובה אייר + android: אנדרואיד + blackberry: בלקברי + chrome_os: Chrome OS + firefox_os: Firefox OS + ios: iOS + linux: לינוקס + mac: macOS + other: סביבה לא ידועה + windows: חלונות + windows_mobile: חלונות מובייל + windows_phone: טלפון חלונות + revoke: שלילה + revoke_success: החיבור נשלל בהצלחה + title: מכשירים מחוברים + view_authentication_history: צפיה בהיסטוריית התחברויות לחשבונך settings: + account: חשבון + account_settings: הגדרות חשבון + aliases: שמות נרדפים לחשבון + appearance: תצוגה authorized_apps: ישומים מאושרים back: חזרה למסטודון + delete: מחיקת חשבון + development: פיתוח edit_profile: עריכת פרופיל export: יצוא מידע + featured_tags: האשתגיות נבחרות import: יבוא + import_and_export: יבוא ויצוא + migrate: הגירת חשבון + notifications: התראות preferences: העדפות + profile: פרופיל + relationships: נעקבים ועוקבים + statuses_cleanup: מחיקת חצרוצים אוטומטית + strikes: עבירות מנהלתיות two_factor_authentication: אימות דו-שלבי + webauthn_authentication: מפתחות אבטחה statuses: + attached: + audio: + many: "%{count} אודיו" + one: אודיו %{count} + other: "%{count} אודיו" + two: "%{count} אודיו" + description: 'מצורף: %{attached}' + image: + many: "%{count} תמונות" + one: תמונה %{count} + other: "%{count} תמונות" + two: "%{count} תמונות" + video: + many: "%{count} סרטונים" + one: סרטון %{count} + other: "%{count} סרטונים" + two: "%{count} סרטונים" + boosted_from_html: הודהד מ-%{acct_link} + content_warning: 'אזהרת תוכן: %{warning}' default_language: זהה לשפת ממשק + disallowed_hashtags: + many: 'מכיל את ההאשתגיות האסורות: %{tags}' + one: 'מכיל את ההאשתג האסור: %{tags}' + other: 'מכיל את ההאשתגיות האסורות: %{tags}' + two: 'מכיל את ההאשתגיות האסורות: %{tags}' + edited_at_html: נערך ב-%{date} + errors: + in_reply_not_found: נראה שהחצרוץ שאת/ה מנסה להגיב לו לא קיים. open_in_web: פתח ברשת over_character_limit: חריגה מגבול התווים של %{max} + pin_errors: + direct: לא ניתן לקבע חצרוצים שנראותם מוגבלת למכותבים בלבד + limit: הגעת למספר החצרוצים המוצמדים המירבי. + ownership: חצרוצים של אחרים לא יכולים להיות מוצמדים + reblog: אין אפשרות להצמיד הדהודים + poll: + total_people: + many: "%{count} אנשים" + one: איש/ה %{count} + other: "%{count} אנשים" + two: "%{count} אנשים" + total_votes: + many: "%{count} קולות" + one: קול %{count} + other: "%{count} קולות" + two: "%{count} קולות" + vote: הצבעה show_more: עוד + show_newer: הצג חדשים יותר + show_older: הצג ישנים יותר + show_thread: הצג שרשור + sign_in_to_participate: הכנס כדי להשתתף בשיחה + title: '%{name}: "%{quote}"' visibilities: + direct: ישיר private: לעוקבים בלבד private_long: להצגה לעוקבים בלבד public: פומבי public_long: כולם יוכלו לקרוא unlisted: מוסתר unlisted_long: פומבי, אבל לא להצגה בפיד הציבורי + statuses_cleanup: + enabled: מחק חצרוצים ישנים אוטומטית + enabled_hint: מוחק אוטומטית את חצרוציך לכשהגיעו לסף גיל שנקבע מראש, אלא אם הם תואמים את אחת ההחרגות למטה + exceptions: החרגות + explanation: היות ומחיקת חצרוצים היא פעולה יקרה במשאבים, היא נעשית לאט לאורך זמן כאשר השרת לא עסוק במשימות אחרות. לכן, ייתכן שהחצרוצים שלך ימחקו מעט אחרי שיגיעו לסף הגיל שהוגדר. + ignore_favs: התעלם ממחובבים + ignore_reblogs: התעלם מהדהודים + interaction_exceptions: החרגות מבוססות אינטראקציות + interaction_exceptions_explanation: שים.י לב שאין עֲרֻבָּה למחיקת חצרוצים אם הם יורדים מתחת לסף החיבובים או ההדהודים לאחר הסריקה הראשונית. + keep_direct: שמירת הודעות ישירות + keep_direct_hint: לא מוחק אך אחת מההודעות הישירות שלך + keep_media: שמור חצרוצים עם מדיה + keep_media_hint: לא מוחק את חצרוציך שמצורפים אליהם קבצי מדיה + keep_pinned: שמור חצרוצים מוצמדים + keep_pinned_hint: לא מוחק אף אחד מהחצרוצים המוצמדים שלך + keep_polls: שמור סקרים + keep_polls_hint: לא מוחר אף אחד מהסקרים שלך + keep_self_bookmark: שמור חצרוצים שסימנת + keep_self_bookmark_hint: לא מוחק חצרוצים שסימנת + keep_self_fav: שמור חצרומים שחיבבת + keep_self_fav_hint: לא מוחק חצרוצים שלך אם חיבבת אותם + min_age: + '1209600': שבועיים + '15778476': חצי שנה + '2629746': חודש + '31556952': שנה + '5259492': חודשיים + '604800': שבוע + '63113904': שנתיים + '7889238': 3 חודשים + min_age_label: סף גיל + min_favs: השאר חצרוצים מחובבים לפחות + min_favs_hint: לא מוחק מי מחצרוציך שקיבלו לפחות את המספר הזה של חיבובים. להשאיר ריק כדי למחוק חצרוצים ללא קשר למספר החיבובים שקיבלו + min_reblogs: שמור חצרוצים מהודהדים לפחות + min_reblogs_hint: לא מוחק מי מחצרוציך שקיבלו לפחות את המספר הזה של הדהודים. להשאיר ריק כדי למחוק חצרוצים ללא קשר למספר ההדהודים שקיבלו stream_entries: + pinned: חצרוץ מוצמד reblogged: הודהד sensitive_content: תוכן רגיש + tags: + does_not_match_previous_name: לא תואם את השם האחרון + terms: + title: תנאי שימוש ומדיניות פרטיות ב-%{instance} + themes: + contrast: מסטודון (ניגודיות גבוהה) + default: מסטודון (כהה) + mastodon-light: מסטודון (בהיר) time: formats: default: "%d %b %Y, %H:%M" + month: "%b %Y" time: "%H:%M" two_factor_authentication: + add: הוספה disable: כיבוי + disabled_success: אימות דו-גורמי בוטל בהצלחה + edit: עריכה + enabled: אימות דו-גורמי הופעל enabled_success: אימות דו-שלבי הופעל בהצלחה generate_recovery_codes: ייצור קודי אחזור lost_recovery_codes: קודי האחזור מאפשרים אחזור גישה לחשבון במידה ומכשירך אבד. במידה וקודי האחזור אבדו, ניתן לייצרם מחדש כאן. תוקף קודי האחזור הישנים יפוג. + methods: שיטות אימות דו-גורמי + otp: יישום אימות + recovery_codes: קודי אחזור recovery_codes_regenerated: קודי האחזור יוצרו בהצלחה recovery_instructions_html: במידה והגישה למכשירך תאבד, ניתן לייצר קודי אחזור למטה על מנת לאחזר גישה לחשבונך בכל עת. נא לשמור על קודי הגישה במקום בטוח. לדוגמא על ידי הדפסתם ושמירתם עם מסמכים חשובים אחרים, או שימוש בתוכנה ייעודית לניהול סיסמאות וסודות. + webauthn: מפתחות אבטחה user_mailer: + appeal_approved: + action: מעבר לחשבונך + explanation: הערעור על העברה שנרשמה כנגד חשבונך ב-%{strike_date} שהגשת ב-%{appeal_date} התקבל. חשבונך חזר להיות נקי מכל רבב. + subject: ערעורך מתאריך %{date} התקבל + title: הערעור התקבל + appeal_rejected: + explanation: הערעור על העברה שנרשמה כנגד חשבונך ב-%{strike_date} שהגשת ב-%{appeal_date} נדחה. + subject: ערעורך מתאריך %{date} נדחה + title: הערעור נדחה + backup_ready: + explanation: ביקשת גיבוי מלא של חשבון המסטודון שלך. הוא מוכן להורדה! + subject: הארכיון שלך מוכן להורדה + title: הוצאת ארכיון + suspicious_sign_in: + change_password: שינוי הסיסמא שלך + details: 'הנה פרטי ההתחברות:' + explanation: זיהינו התחברות לחשבונך מכתובת IP חדשה. + further_actions_html: אם לא את/ה התחברת, אנו ממליצים שתבצע/י %{action} מיידית ותאפשר/י אימות דו גורמי על מנת לשמור על החשבון בטוח. + subject: נרשמה גישה לחשבונך מכתובת IP חדשה + title: התחברות חדשה warning: + appeal: הגשת ערעור + appeal_description: אם את/ה מאמין/ה שזו טעות, ניתן להגיש ערעור לצוות של %{instance}. categories: spam: ספאם + violation: התוכן מפר את כללי הקהילה הבאים + explanation: + delete_statuses: כמה מחצרוציך מפרים אחד או יותר מכללי הקהילה וכתוצאה הוסרו על ידי מנחי הקהילה של %{instance}. + disable: אינך יכול/ה יותר להשתמש בחשבונך, אבל הפרופיל ושאר המידע נשארו על עומדם. ניתן לבקש גיבוי של המידע, לשנות את הגדרות החשבון או למחוק אותו. + mark_statuses_as_sensitive: כמה מחצרוציך סומנו כרגישים על ידי מנחי הקהילה של %{instance}. זה אומר שאנשים יצטרכו להקיש על המדיה בחצרוצים לפני שתופיע תצוגה מקדימה. ניתן לסמן את המידע כרגיש בעצמך בחצרוציך העתידיים. + sensitive: מעתה ואילך כל קבצי המדיה שיועלו על ידך יסומנו כרגישים ויוסתרו מאחורי אזהרה. + silence: ניתן עדיין להשתמש בחשבונך אבל רק אנשים שכבר עוקבים אחריך יראו את חצרוציך בשרת זה, וייתכן שתוחרג/י מאמצעי גילוי משתמשים. עם זאת, אחרים יוכלו עדיין לעקוב אחריך. + suspend: לא ניתן יותר להשתמש בחשבונך, ופרופילך וכל מידע אחר לא נגישים יותר. ניתן עדיין להתחבר על מנת לבקש גיבוי של המידע שלך עד שיוסר סופית בעוד כ-30 יום, אבל מידע מסויים ישמר על מנת לוודא שלא תחמוק/י מההשעיה. reason: 'סיבה:' + statuses: 'חצרוצים מצוטטים:' subject: delete_statuses: הפוסטים שלכם ב%{acct} הוסרו + disable: חשבונך %{acct} הוקפא + mark_statuses_as_sensitive: חצרוציך ב-%{acct} סומנו כרגישים + none: אזהרה עבור %{acct} + sensitive: חצרוציך ב-%{acct} יסומנו כרגישים מעתה ואילך + silence: חשבונך %{acct} הוגבל + suspend: חשבונך %{acct} הושעה title: delete_statuses: פוסטים שהוסרו + disable: חשבון קפוא + mark_statuses_as_sensitive: חצרוצים סומנו כרגישים + none: אזהרה + sensitive: החשבון סומן כרגיש + silence: חשבון מוגבל + suspend: חשבון מושעה + welcome: + edit_profile_action: הגדרת פרופיל + edit_profile_step: תוכל.י להתאים אישית את הפרויל באמצעות העלאת יצגן (אוואטר), כותרת, שינוי כינוי ועוד. אם תרצה.י לסקור את עוקביך/ייך החדשים לפני שתרשה.י להם לעקוב אחריך/ייך, תוכל.י לנעול את החשבון לשם כך. + explanation: הנה כמה טיפים לעזור לך להתחיל + final_action: התחל/ילי לחצרץ + final_step: 'התחל/ילי לחצרץ ! אפילו ללא עוקבים ייתכן שהחצרוצים הפומביים של יצפו ע"י אחרים, למשל בציר הזמן המקומי או בתגי הקבצה (האשטגים). כדאי להציג את עצמך תחת התג #introductions או #היוש' + full_handle: שם המשתמש המלא שלך + full_handle_hint: זה מה שתאמר.י לחברייך כדי שיוכלו לשלוח לך הודעה או לעקוב אחרייך ממופע אחר. + review_preferences_action: שנה הגדרות + review_preferences_step: וודא לקבוע את העדפותייך, למשל איזה הודעות דוא"ל תרצה/י לקבל, או איזו רמת פרטיות תרצה כברירת מחדל לחצרוצים שלך. אם אין לך בעיה עם זה, תוכל לאפשר הפעלה אוטומטית של הנפשות GIF + subject: ברוכים הבאים למסטודון + tip_federated_timeline: ציר הזמן הפדרטיבי הוא מבט לכל הפדיברס, אך הוא כולל רק אנשים שחבריך למופע הספציפי שהתחברת אליו נרשמו אליו, כך שהוא לא שלם. + tip_following: את.ה כבר עוקב.ת אחר האדמין (מנהל השרת) כברירת מחדל. על מנת למצוא עוד אנשים מעניינים, בדוק את צירי הזמן המקומי והפדרטיבי. + tip_local_timeline: ציר הזמן המקומי מספק מבט לאנשים במופע זה (%{instance}). אלו הם שכנייך המידיים ! + tip_mobile_webapp: אם דפדפן הנייד שלך מאפשר את הוספת מסטודון למסך הבית שלך, תוכל לקבל התראות בדחיפה (push). במובנים רבים אפשרות זאת מתנהגת כמו ישומון ! + tips: טיפים + title: ברוך/ה הבא/ה, %{name} ! users: + follow_limit_reached: לא תוכל לעקוב אחר יותר מ %{limit} אנשים invalid_otp_token: קוד דו-שלבי שגוי + otp_lost_help_html: אם איבדת גישה לשניהם, ניתן ליצור קשר ב-%{email} + seamless_external_login: את.ה מחובר דרך שירות חיצוני, לכן אפשרויות הסיסמא והדוא"ל לא מאופשרות. + signed_in_as: 'מחובר בתור:' + verification: + explanation_html: 'ניתן לאמת את עצמך כבעלים של הקישורית במטא-נתונים של פרופילך. כדי לעשות זאת, האתר המקושם חייב להכיל קישורית חוזרת לפרופיל המסטודון שלך. הקישורית החוזרת חייבת להכיל תכונת rel="me". התוכן הטקסטואלי של הקישורית לא משנה. הנה דוגמא:' + verification: אימות + webauthn_credentials: + add: הוספת מפתח אבטחה חדש + create: + error: היתה בעיה בהוספת מפתח האבטחה. נסה שנית. + success: מפתח האבטחה הוסף בהצלחה. + delete: למחוק + delete_confirmation: האם אתה בטוח שברצונך למחוק מפתח אבטחה זה? + description_html: אם יאופשר אימות במפתח אבטחה, כניסה לאתר תדרוש שימוש באחד ממפתחות האבטחה שלך. + destroy: + error: היתה בעיה במחיקת מפתח האבטחה. נסה בשנית. + success: מפתח האבטחה נמחק בהצלחה. + invalid_credential: אסימון אבטחה לא תקין + nickname_hint: הכנס.י כינוי למפתח האבטחה החדש שלך + not_enabled: לא אפשרת את WebAuthn עדיין + not_supported: דפדפן זה לא תומך במפתחות אבטחה + otp_required: על מנת להשתמש במפתחות אבטחה אנא אפשר.י אימות דו-שלבי קודם. + registered_on: נרשם ב %{date} diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 0a1fd439c..d91dd28b5 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -722,7 +722,7 @@ hu: title: Stáb-jelvény megjelenítése site_description: desc_html: Rövid bemutatkozás a főoldalon és a meta fejlécekben. Írd le, mi teszi ezt a szervert különlegessé! Használhatod a <a> és <em> HTML tageket. - title: A szerver bemutatása + title: Kiszolgáló leírása site_description_extended: desc_html: Ide teheted például a közösségi és egyéb szabályzatot, útmutatókat és mindent, ami egyedivé teszi szerveredet. HTML-tageket is használhatsz title: További egyéni információk diff --git a/config/locales/it.yml b/config/locales/it.yml index c0e802f84..ed3fc3785 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -802,6 +802,7 @@ it: other: Condiviso da %{count} persone nell'ultima settimana title: Link in tendenza usage_comparison: Condiviso %{today} volte oggi, rispetto a %{yesterday} ieri + only_allowed: Solo consentiti pending_review: Revisione in sospeso preview_card_providers: allowed: I link da questa fonte possono essere in tendenza @@ -843,6 +844,7 @@ it: one: Usato da una persona nell'ultima settimana other: Usato da %{count} persone nell'ultima settimana title: Tendenze + trending: Di tendenza warning_presets: add_new: Aggiungi nuovo delete: Cancella diff --git a/config/locales/ku.yml b/config/locales/ku.yml index 192cd0b8f..547bfcce0 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -804,6 +804,7 @@ ku: other: Di nava hefteya dawî de ji aliyê %{count} ve hate parvekirin title: Girêdanên di rojevê de usage_comparison: Îro %{today} car hate parvekirin, li gorî %{yesterday} duh + only_allowed: Tenê yên mafdayî pending_review: Li benda nirxandinê ye preview_card_providers: allowed: Girêdanên ji vê weşangerê dikarin bibin rojev @@ -845,6 +846,7 @@ ku: one: Di nava hefteya dawî de ji aliyê kesekî ve hatiye bikaranîn other: Di nava hefteya dawî de ji %{count} kes ve hatiye bikaranîn title: Rojev + trending: Rojev warning_presets: add_new: Yeka nû tevlî bike delete: Jê bibe diff --git a/config/locales/lv.yml b/config/locales/lv.yml index c97a183f9..61e15c679 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -817,6 +817,7 @@ lv: zero: Pēdējās nedēļas laikā kopīgoja %{count} personas title: Populārākās saites usage_comparison: Šodien kopīgots %{today} reizes, salīdzinot ar %{yesterday} vakar + only_allowed: Tikai atļautās pending_review: Gaida pārskatīšanu preview_card_providers: allowed: Šī publicētāja saites var mainīties @@ -860,6 +861,7 @@ lv: other: Pēdējās nedēļas laikā izmantoja %{count} personas zero: Pēdējās nedēļas laikā izmantoja %{count} personas title: Tendences + trending: Tendences warning_presets: add_new: Pievienot jaunu delete: Dzēst diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 1a83cc022..e647b4c01 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -16,6 +16,7 @@ pt-BR: contact: Contato contact_missing: Não definido contact_unavailable: Não disponível + continue_to_web: Continuar no aplicativo web discover_users: Descubra usuários documentation: Documentação federation_hint_html: Com uma conta em %{instance} você vai poder seguir e interagir com pessoas de qualquer canto do fediverso. @@ -163,6 +164,10 @@ pt-BR: not_subscribed: Não inscrito pending: Revisão pendente perform_full_suspension: Banir + previous_strikes: Ataques anteriores + previous_strikes_description_html: + one: Esta conta tem um ataque. + other: Esta conta tem %{count} ataques. promote: Promover protocol: Protocolo public: Público @@ -203,6 +208,7 @@ pt-BR: silence: Silenciar silenced: Silenciado statuses: Toots + strikes: Ataques anteriores subscribe: Inscrever-se suspend: Suspender suspended: Banido @@ -225,6 +231,7 @@ pt-BR: whitelisted: Permitido action_logs: action_types: + approve_appeal: Aprovar recurso approve_user: Aprovar Usuário assigned_to_self_report: Adicionar relatório change_email_user: Editar e-mail do usuário @@ -243,6 +250,7 @@ pt-BR: destroy_domain_allow: Excluir domínio permitido destroy_domain_block: Excluir Bloqueio de Domínio destroy_email_domain_block: Excluir bloqueio de domínio de e-mail + destroy_instance: Limpar Domínio destroy_ip_block: Excluir regra de IP destroy_status: Excluir Status destroy_unavailable_domain: Deletar domínio indisponível @@ -275,6 +283,7 @@ pt-BR: update_status: Editar Status actions: approve_appeal_html: "%{name} aprovou o recurso de decisão de moderação de %{target}" + approve_user_html: "%{name} aprovado inscrição de %{target}" assigned_to_self_report_html: "%{name} atribuiu o relatório %{target} para si" change_email_user_html: "%{name} alterou o endereço de e-mail do usuário %{target}" confirm_user_html: "%{name} confirmou o endereço de e-mail do usuário %{target}" @@ -292,6 +301,7 @@ pt-BR: destroy_domain_allow_html: "%{name} bloqueou federação com domínio %{target}" destroy_domain_block_html: "%{name} deixou de bloquear domínio %{target}" destroy_email_domain_block_html: "%{name} adicionou domínio de e-mail %{target} à lista branca" + destroy_instance_html: "%{name} purgou o domínio %{target}" destroy_ip_block_html: "%{name} excluiu regra para o IP %{target}" destroy_status_html: "%{name} excluiu post de %{target}" destroy_unavailable_domain_html: "%{name} retomou a entrega ao domínio %{target}" @@ -304,6 +314,7 @@ pt-BR: enable_user_html: "%{name} ativou o login para %{target}" memorialize_account_html: "%{name} transformou a conta de %{target} em um memorial" promote_user_html: "%{name} promoveu o usuário %{target}" + reject_appeal_html: "%{name} rejeitou recurso de decisão de moderação de %{target}" reject_user_html: "%{name} rejeitou a inscrição de %{target}" remove_avatar_user_html: "%{name} removeu a imagem de perfil de %{target}" reopen_report_html: "%{name} reabriu a denúncia %{target}" @@ -360,6 +371,7 @@ pt-BR: enable: Ativar enabled: Ativado enabled_msg: Emoji ativado com sucesso + image_hint: PNG ou GIF até %{size} list: Listar listed: Listado new: @@ -381,6 +393,18 @@ pt-BR: media_storage: Armazenamento de mídia new_users: novos usuários opened_reports: denúncias abertas + pending_appeals_html: + one: "%{count} recurso pendente" + other: "%{count} recursos pendentes" + pending_reports_html: + one: "%{count} relatório pendente" + other: "%{count} relatórios pendentes" + pending_tags_html: + one: "%{count} hashtag pendente" + other: "%{count} hashtags pendentes" + pending_users_html: + one: "%{count} usuário pendente" + other: "%{count} usuários pendentes" resolved_reports: denúncias solucionadas software: Software sources: Origem das inscrições @@ -391,6 +415,7 @@ pt-BR: website: Site disputes: appeals: + empty: Nenhum recurso encontrado. title: Apelações domain_allows: add_new: Permitir domínio @@ -427,13 +452,22 @@ pt-BR: view: Ver domínios bloqueados email_domain_blocks: add_new: Adicionar novo + attempts_over_week: + one: "%{count} tentativa na última semana" + other: "%{count} tentativas de inscrição na última semana" created_msg: Domínio de e-mail adicionado à lista negra com sucesso delete: Excluir + dns: + types: + mx: Registro MX domain: Domínio new: create: Adicionar domínio resolve: Resolver domínio title: Nova entrada de lista negra de e-mail + no_email_domain_block_selected: Nenhum bloco de domínio de e-mail foi alterado, pois nenhum foi selecionado + resolved_dns_records_hint_html: O nome de domínio resolve os seguintes domínios MX, que são responsáveis finais por aceitar o e-mail. Bloquear um domínio MX bloqueará inscrições de qualquer endereço de e-mail que use o mesmo domínio MX, mesmo que o nome de domínio visível seja diferente. Cuidado para não bloquear os principais provedores de e-mail. + resolved_through_html: Resolvido através de %{domain} title: Lista de negra de e-mail follow_recommendations: description_html: "A recomendação de contas ajuda os novos usuários a encontrar rapidamente conteúdo interessante. Quando um usuário ainda não tiver interagido o suficiente para gerar recomendações de contas, essas contas serão recomendadas. Essas recomendações são recalculadas diariamente a partir de uma lista de contas com alto engajamento e maior número de seguidores locais em uma dada língua." @@ -445,21 +479,56 @@ pt-BR: unsuppress: Restaurar recomendação de contas instances: availability: + description_html: + one: Se a entrega ao domínio falhar %{count} dia sem sucesso, nenhuma tentativa de entrega será feita a menos que uma entrega de do domínio seja recebida. + other: Se a entrega ao domínio falhar em %{count} dias diferentes sem sucesso, nenhuma tentativa de entrega será feita a menos que uma entrega de do domínio seja recebida. + failure_threshold_reached: Limite de falhas atingido em %{date}. + failures_recorded: + one: Falha na tentativa em %{count} dia. + other: Tentativas falhas em %{count} dias diferentes. + no_failures_recorded: Sem falhas no registro. title: Disponibilidade + warning: A última tentativa de se conectar a este servidor não foi bem sucedida back_to_all: Todas + back_to_limited: Limitado back_to_warning: Aviso by_domain: Domínio confirm_purge: Você tem certeza de que deseja excluir permanentemente os dados deste domínio? content_policies: + comment: Nota interna + description_html: Você pode definir políticas de conteúdo que serão aplicadas a todas as contas deste domínio e a qualquer um dos seus subdomínios. + policies: + reject_media: Rejeitar mídia + reject_reports: Rejeitar relatórios + silence: Limite + suspend: Suspender policy: Políticas + reason: Razão pública + title: Políticas de conteúdo + dashboard: + instance_accounts_dimension: Contas mais seguidas + instance_accounts_measure: contas armazenadas + instance_followers_measure: nossos seguidores lá + instance_follows_measure: seus seguidores aqui + instance_languages_dimension: Idiomas principais + instance_media_attachments_measure: anexos de mídia armazenados + instance_reports_measure: relatórios sobre eles + instance_statuses_measure: publicações armazenadas delivery: all: Todos clear: Limpar erros de entrega + failing: Falhando restart: Reiniciar a entrega stop: Parar entrega unavailable: Indisponível delivery_available: Envio disponível + delivery_error_days: Dias de erro de entrega + delivery_error_hint: Se a entrega não for possível durante %{count} dias, será automaticamente marcada como não realizável. + destroyed_msg: Dados de %{domain} agora estão na fila para exclusão iminente. empty: Nenhum domínio encontrado. + known_accounts: + one: "%{count} conta conhecida" + other: "%{count} contas conhecidas" moderation: all: Todos limited: Limitados @@ -467,12 +536,14 @@ pt-BR: private_comment: Comentário privado public_comment: Comentário público purge: Limpar + purge_description_html: Se você acredita que este domínio está offline definitivamente, você pode excluir todos os registros de conta e dados associados deste domínio do seu armazenamento. Isso pode demorar um pouco. title: Federação total_blocked_by_us: Bloqueado por nós total_followed_by_them: Seguidos por eles total_followed_by_us: Seguidos por nós total_reported: Denúncias sobre eles total_storage: Mídias anexadas + totals_time_period_hint_html: Os totais exibidos abaixo incluem dados para todo o tempo. invites: deactivate_all: Desativar todos filter: @@ -517,6 +588,7 @@ pt-BR: report_notes: created_msg: Nota de denúncia criada com sucesso! destroyed_msg: Nota de denúncia excluída com sucesso! + today_at: Hoje às %{time} reports: account: notes: @@ -742,6 +814,14 @@ pt-BR: body: "%{reporter} denunciou %{target}" body_remote: Alguém da instância %{domain} reportou %{target} subject: Nova denúncia sobre %{instance} (#%{id}) + new_trends: + new_trending_statuses: + title: Publicações em alta + new_trending_tags: + no_approved_tags: No momento, não há hashtags de tendências aprovadas. + requirements: 'Qualquer um desses candidatos poderia ultrapassar a hashtag de tendência aprovada #%{rank} , que é atualmente #%{lowest_tag_name} com uma pontuação de %{lowest_tag_score}.' + title: Hashtags em alta + subject: Novas tendências para revisão em %{instance} aliases: add_new: Criar alias created_msg: Um novo alias foi criado com sucesso. Agora você pode iniciar a mudança da conta antiga. @@ -793,6 +873,7 @@ pt-BR: invalid_reset_password_token: Código de alteração de senha é inválido ou expirou. Por favor, solicite um novo. link_to_otp: Digite um código de duas etapas do seu telefone ou um código de recuperação link_to_webauth: Use seu dispositivo de chave de segurança + log_in_with: Iniciar sessão com login: Entrar logout: Sair migrate_account: Mudar-se para outra conta @@ -814,8 +895,10 @@ pt-BR: status: account_status: Status da conta confirming: Confirmação por e-mail pendente. + functional: Sua conta está totalmente operacional. pending: Sua solicitação está com revisão pendente por parte de nossa equipe. Você receberá um e-mail se ela for aprovada. redirecting_to: Sua conta está inativa porque atualmente está redirecionando para %{acct}. + view_strikes: Veja os ataques anteriores contra a sua conta too_fast: O formulário foi enviado muito rapidamente, tente novamente. trouble_logging_in: Problemas para entrar? use_security_key: Usar chave de segurança @@ -851,8 +934,10 @@ pt-BR: about_x_years: "%{count}a" almost_x_years: "%{count}a" half_a_minute: Agora + less_than_x_minutes: "%{count}min" less_than_x_seconds: Agora over_x_years: "%{count}a" + x_days: "%{count}dias" x_minutes: "%{count}min" x_months: "%{count}m" x_seconds: "%{count}seg" @@ -879,11 +964,32 @@ pt-BR: explore_mastodon: Explore o %{title} disputes: strikes: + action_taken: Ações tomadas + appeal: Recurso + appeal_approved: Este recurso foi contestado e não é mais válido + appeal_rejected: O recurso foi rejeitado + appeal_submitted_at: Recurso enviado + appealed_msg: Seu recurso foi enviado. Se ele for aprovado, você será notificado. + appeals: + submit: Enviar recurso + associated_report: Relatório associado + created_at: Datado + description_html: Estas são ações tomadas contra sua conta e avisos que foram enviados a você pela equipe de %{instance}. + recipient: Endereçado para + status: 'Postagem #%{id}' + status_removed: Postagem já removida do sistema + title: "%{action} de %{date}" title_actions: + delete_statuses: Remoção de publicações + disable: Congelamento de conta + mark_statuses_as_sensitive: Marcar as postagens como sensíveis none: Aviso sensitive: Marcar a conta como sensível silence: Limitação da conta suspend: Suspensão de conta + your_appeal_approved: Seu recurso foi aprovado + your_appeal_pending: Você submeteu um recurso + your_appeal_rejected: Seu recurso foi rejeitado domain_validator: invalid_domain: não é um nome de domínio válido errors: @@ -1008,6 +1114,7 @@ pt-BR: authentication_methods: otp: autenticação de dois fatores password: senha + sign_in_token: código de segurança do e-mail webauthn: chaves de segurança description_html: Se você vir atividades suspeitas ou não reconhecidas, considere alterar sua senha e ativar a autenticação de dois fatores. empty: Sem histórico de autenticação disponível @@ -1057,6 +1164,9 @@ pt-BR: carry_mutes_over_text: Este usuário mudou de %{acct}, que você havia silenciado. copy_account_note_text: 'Este usuário saiu de %{acct}, aqui estão suas notas anteriores sobre ele:' notification_mailer: + admin: + sign_up: + subject: "%{name} se inscreveu" digest: action: Ver todas as notificações body: Aqui está um breve resumo das mensagens que você perdeu desde o seu último acesso em %{since} @@ -1064,6 +1174,9 @@ pt-BR: new_followers_summary: one: Você tem um novo seguidor! Uia! other: Você tem %{count} novos seguidores! AÊÊÊ! + subject: + one: "Uma nova notificação desde o seu último acesso 🐘" + other: "%{count} novas notificações desde o seu último acesso 🐘" title: Enquanto você estava ausente... favourite: body: "%{name} favoritou seu toot:" @@ -1091,6 +1204,8 @@ pt-BR: title: Novo boost status: subject: "%{name} acabou de postar" + update: + subject: "%{name} editou uma publicação" notifications: email_events: Eventos para notificações por e-mail email_events_hint: 'Selecione os eventos que deseja receber notificações:' @@ -1172,6 +1287,9 @@ pt-BR: reply: proceed: Continue para responder prompt: 'Você responderá este toot:' + reports: + errors: + invalid_rules: não faz referência a regras válidas scheduled_statuses: over_daily_limit: Você excedeu o limite de %{limit} toots agendados para esse dia over_total_limit: Você excedeu o limite de %{limit} toots agendados @@ -1238,6 +1356,7 @@ pt-BR: profile: Perfil relationships: Seguindo e seguidores statuses_cleanup: Exclusão automatizada de publicações + strikes: Moderação de ataques two_factor_authentication: Autenticação de dois fatores webauthn_authentication: Chaves de segurança statuses: @@ -1254,9 +1373,11 @@ pt-BR: other: "%{count} vídeos" boosted_from_html: Boost de %{acct_link} content_warning: 'Aviso de Conteúdo: %{warning}' + default_language: Igual ao idioma da interface disallowed_hashtags: one: 'continha hashtag não permitida: %{tags}' other: 'continha hashtags não permitidas: %{tags}' + edited_at_html: Editado em %{date} errors: in_reply_not_found: O toot que você quer responder parece não existir. open_in_web: Abrir no navegador @@ -1420,6 +1541,7 @@ pt-BR: formats: default: "%H:%M em %d de %b de %Y" month: "%b de %Y" + time: "%H:%M" two_factor_authentication: add: Adicionar disable: Desativar @@ -1438,15 +1560,27 @@ pt-BR: user_mailer: appeal_approved: action: Acessar perfil + explanation: O recurso do ataque contra sua conta em %{strike_date} que você submeteu em %{appeal_date} foi aprovado. Sua conta está novamente em situação regular. + subject: Seu recurso de %{date} foi aprovado title: Contestação aprovada appeal_rejected: + explanation: O recurso do ataque contra sua conta em %{strike_date} que você submeteu em %{appeal_date} foi rejeitado. + subject: Seu recurso de %{date} foi rejeitado title: Contestação rejeitada backup_ready: explanation: Você pediu um backup completo da sua conta no Mastodon. E agora está pronto para ser baixado! subject: Seu arquivo está pronto para ser baixado title: Baixar arquivo + suspicious_sign_in: + change_password: Altere sua senha + details: 'Aqui estão os detalhes do acesso:' + explanation: Detectamos um login em sua conta a partir de um novo endereço IP. + further_actions_html: Se não foi você, recomendamos que você %{action} imediatamente e ative a autenticação de dois fatores para manter sua conta segura. + subject: Sua conta foi acessada a partir de um novo endereço IP + title: Um novo login warning: appeal: Enviar uma contestação + appeal_description: Se você acredita que isso é um erro, você pode enviar um apelo para a equipe de %{instance}. categories: spam: Spam violation: O conteúdo viola as seguintes diretrizes da comunidade diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index f196d525f..fa8d33b58 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -802,6 +802,7 @@ pt-PT: other: Partilhado por %{count} pessoas na última semana title: Links em destaque usage_comparison: Partilhado %{today} vezes hoje, em comparação com %{yesterday} ontem + only_allowed: Apenas permitidos pending_review: Pendente de revisão preview_card_providers: allowed: Links deste editor poderão ser incluídos nos destaques @@ -843,6 +844,7 @@ pt-PT: one: Utilizada por uma pessoa na última semana other: Utilizada por %{count} pessoas na última semana title: Tendências + trending: Em destaque warning_presets: add_new: Adicionar novo delete: Eliminar diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index b89237b1e..2e0632648 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -44,7 +44,7 @@ ca: inbox_url: Copia l'URL de la pàgina principal del relay que vols utilitzar irreversible: Les publicacions filtrades desapareixeran de manera irreversible, fins i tot si el filtre s'elimina més tard locale: L'idioma de la interfície d’usuari, els correus i les notificacions push - locked: Controla manualment qui et pot seguir i aprovar les peticions + locked: Controla manualment qui et pot seguir, aprovant sol·licituds password: Utilitza com a mínim 8 caràcters phrase: Es combinarà independentment del format en el text o l'avís de contingut de la publicació scopes: API permeses per accedir a l'aplicació. Si selecciones un àmbit de nivell superior, no cal que en seleccions un d'individual. @@ -143,16 +143,16 @@ ca: inbox_url: URL de la safata d'entrada del relay irreversible: Cau en lloc d'ocultar locale: Idioma de la interfície - locked: Torna aquest compte privat + locked: Requereix sol·licituds de seguiment max_uses: Nombre màxim d'usos new_password: Contrasenya nova note: Biografia otp_attempt: Codi de dos factors password: Contrasenya phrase: Paraula clau o frase - setting_advanced_layout: Activar l’interfície web avançada + setting_advanced_layout: Activa la interfície web avançada setting_aggregate_reblogs: Agrupar impulsos en les línies de temps - setting_always_send_emails: Envia sempre notificacions per correu electrònic + setting_always_send_emails: Envia'm sempre notificacions per correu electrònic setting_auto_play_gif: Reproduir automàticament els GIFs animats setting_boost_modal: Mostrar la finestra de confirmació abans d'impulsar setting_crop_images: Retalla les imatges en publicacions no ampliades a 16x9 @@ -160,14 +160,14 @@ ca: setting_default_privacy: Privacitat de les publicacions setting_default_sensitive: Marcar sempre el contingut gràfic com a sensible setting_delete_modal: Mostrar la finestra de confirmació abans d'esborrar una publicació - setting_disable_swiping: Desactivar les animacions + setting_disable_swiping: Desactiva les animacions setting_display_media: Visualització multimèdia setting_display_media_default: Per defecte setting_display_media_hide_all: Amaga-ho tot setting_display_media_show_all: Mostra-ho tot setting_expand_spoilers: Sempre ampliar les publicacions marcades amb advertències de contingut setting_hide_network: Amagar la teva xarxa - setting_noindex: Desactivar la indexació dels motors de cerca + setting_noindex: Desactiva la indexació dels motors de cerca setting_reduce_motion: Reduir el moviment de les animacions setting_show_application: Revelar l'aplicació utilitzada per fer les publicacions setting_system_font_ui: Utilitzar el tipus de lletra predeterminat del sistema @@ -187,8 +187,8 @@ ca: featured_tag: name: Etiqueta interactions: - must_be_follower: Blocar les notificacions de persones que no et segueixen - must_be_following: Blocar les notificacions de persones que no segueixes + must_be_follower: Bloqueja les notificacions de persones que no em segueixen + must_be_following: Bloqueja les notificacions de persones no seguides must_be_following_dm: Blocar els missatges directes de persones que no segueixes invite: comment: Comenta @@ -203,11 +203,11 @@ ca: severity: Regla notification_emails: appeal: Algú ha apel·lat una decisió de moderació - digest: Enviar un resum per correu electrònic + digest: Envia'm un resum per correu electrònic favourite: Algú marca com a preferit el teu estat - follow: Algú t'ha seguit - follow_request: Envia un correu electrònic si algú sol·licita seguir-te - mention: Algú t'ha esmentat + follow: Algú et segueix + follow_request: Algú sol·licita seguir-te + mention: Algú et menciona pending_account: Un nou compte necessita revisió reblog: Algú comparteix el teu estat report: Nou informe és emés diff --git a/config/locales/simple_form.cy.yml b/config/locales/simple_form.cy.yml index 68ff7898e..77b46ad2b 100644 --- a/config/locales/simple_form.cy.yml +++ b/config/locales/simple_form.cy.yml @@ -165,6 +165,8 @@ cy: comment: Sylw invite_request: text: Pam hoffech ymuno? + ip_block: + severity: Rheol notification_emails: digest: Anfonwch e-byst crynhoi favourite: Anfon e-bost pan mae rhywun yn ffefrynnu eich statws diff --git a/config/locales/simple_form.he.yml b/config/locales/simple_form.he.yml index 36d7cbf67..6faf1842a 100644 --- a/config/locales/simple_form.he.yml +++ b/config/locales/simple_form.he.yml @@ -2,27 +2,146 @@ he: simple_form: hints: + account_alias: + acct: נא לציין משתמש@דומיין של החשבון ממנו תרצה/י לעבור + account_migration: + acct: נא לציין משתמש@דומיין של החשבון אליו תרצה/י לעבור + account_warning_preset: + text: ניתן להשתמש בתחביר חצרוצי, כגון קישוריות, האשתגיות ואזכורים + title: אופציונלי. בלתי נראה למקבל ההודעה + admin_account_action: + include_statuses: המשתמש יראה אילו חצרוצים גרמו לפעולה או לאזהרה + send_email_notification: המשתמש יקבל הסבר מה קרה לחשבונם + text_html: אופציונלי. ניתן להשתמש בתחביר חצרוצי. ניתן להוסיף הגדרות אזהרה כדי לחסוך זמן + type_html: נא לבחור מה לעשות עם %{acct} + types: + disable: מנעי מהמשתמש להשתמש בחשבונם, מבלי למחוק או להסתיר את תוכנו. + none: השתמשי בזה כדי לשלוח למשתמש אזהרה, מבלי לגרור פעולות נוספות. + sensitive: אלצי את כל קבצי המדיה המצורפים על ידי המשתמש להיות מסומנים כרגישים. + silence: מנעי מהמשתמש להיות מסוגל לחצרץ בנראות פומבית, החביאי את חצרוציהם והתראותיהם מאנשים שלא עוקבים אחריהם. + suspend: מנעי כל התקשרות עם חשבון זה ומחקי את תוכנו. ניתן לשחזור תוך 30 יום. + warning_preset_id: אופציונלי. ניתן עדיין להוסיף טקסט ייחודי לסוף ההגדרה + announcement: + all_day: אם נבחר, רק התאריכים בטווח הזמן יוצגו + ends_at: אופציונלי. הכרזות יוסרו באופן אוטומטי בזמן זה + scheduled_at: נא להשאיר ריק כדי לפרסם את ההכרזה באופן מיידי + starts_at: אופציונלי. במקרה שהכרזתך כבולה לטווח זמן ספציפי + text: ניתן להשתמש בתחביר חצרוצי. נא לשים לב לשטח שתתפוס ההכרזה על מסך המשתמש + appeal: + text: ניתן לערער על עברה רק פעם אחת defaults: + autofollow: אנשים שיצטרפו בעזרת ההזמנה יעקבו אחריך באופן אוטומטי avatar: PNG, GIF או JPG. מקסימום %{size}. גודל התמונה יוקטן ל-%{dimensions}px + bot: איתות לאחרים שהחשבון מבצע בעיקר פעולות אוטומטיות ועשוי לא להיות מנוטר + context: הקשר אחד או יותר בהם יופעל המסנן + current_password: מסיבות אבטחה נא להזין את הסיסמא של החשבון הנוכחי + current_username: על מנת לאשר, נא להכניס את שם המשתמש של החשבון הנוכחי digest: נשלח לאחר תקופה ארוכה של אי-פעילות עם סיכום איזכורים שקיבלת בהעדרך + discoverable: אשר/י לחשבונך להתגלות לזרים על ידי המלצות, נושאים חמים ושאר דרכים + email: דוא"ל אישור יישלח אליך + fields: ניתן להציג עד ארבעה פריטים כטבלה בפרופילך header: PNG, GIF או JPG. מקסימום %{size}. גודל התמונה יוקטן %{dimensions}px + inbox_url: נא להעתיק את הקישורית מדף הבית של הממסר בו תרצה/י להשתמש + irreversible: חצרוצים מסוננים יעלמו באופן בלתי הפיך, אפילו אם מאוחר יותר יוסר המסנן + locale: שפת ממשק המשתמש, הדוא"ל וההתראות בדחיפה locked: מחייב אישור עוקבים באופן ידני. פרטיות ההודעות תהיה עוקבים-בלבד אלא אם יצוין אחרת + password: נא להשתמש בלפחות 8 תוים + phrase: התאמה תמצא ללא תלות באזהרת תוכן בחצרוץ + scopes: לאיזה ממשק יורשה היישום לגשת. בבחירת תחום כללי, אין צורך לבחור ממשקים ספציפיים. + setting_aggregate_reblogs: לא להראות הדהודים של חצרוצים שהודהדו לאחרונה (משפיע רק על הדהודים שהתקבלו לא מזמן) + setting_always_send_emails: בדרך כלל התראות דוא"ל לא יישלחו בזמן שימוש פעיל במסטודון + setting_default_sensitive: מדיה רגישה מוסתרת כברירת מחדל וניתן להציגה בקליק + setting_display_media_default: הסתרת מדיה המסומנת כרגישה + setting_display_media_hide_all: הסתר מדיה תמיד + setting_display_media_show_all: גלה מדיה תמיד + setting_hide_network: עוקבייך ונעקבייך יוסתרו בפרופילך setting_noindex: משפיע על הפרופיל הציבורי שלך ועמודי ההודעות + setting_show_application: היישום בו נעשה שימוש כדי לחצרץ יופיע בתצוגה המפורטת של החצרוץ + setting_use_blurhash: הגראדיינטים מבוססים על תוכן התמונה המוסתרת, אבל מסתירים את כל הפרטים + setting_use_pending_items: הסתר עדכוני פיד מאחורי קליק במקום לגלול את הפיד אוטומטית + username: שם המשתמש שלך יהיה ייחודי ב-%{domain} + whole_word: אם מילת מפתח או ביטוי הם אלפאנומריים בלבד, הם יופעלו רק אם נמצאה התאמה למילה שלמה + domain_allow: + domain: דומיין זה יוכל לייבא מידע משרת זה והמידע המגיע ממנו יעובד ויאופסן + email_domain_block: + domain: זה יכול להיות שם הדומיין המופיע בכתובת הדוא"ל או רשומת ה-MX בה הוא משתמש. הם ייבדקו בהרשמה. + with_dns_records: ייעשה נסיון למצוא את רשומות ה-DNS של דומיין נתון והתוצאות ייחסמו גם הן + featured_tag: + name: 'אולי תרצה/י להשתמש באחד מאלה:' + form_challenge: + current_password: את.ה נכנס. ת לאזור מאובטח imports: data: קובץ CSV שיוצא משרת מסטודון אחר + invite_request: + text: זה יעזור לנו בסקירת הבקשה שלך + ip_block: + comment: רשות. זכור/י מדוע הוספת את הכלל הזה. + expires_in: כתובות IP הם משאב מוגבל, לפעמים הם משותפים ולעתים קרובות מחליפים ידיים. לכן, חסימות IP לצמיתות לא מומלצות. + ip: נא להכניס כתובת IPv4 או IPv6. ניתן לחסום תחומים שלמים על ידי שימוש בתחביר CIDR. זהירות לא לנעול את עצמכם בחוץ! + severities: + no_access: חסימת גישה לכל המשאבים + sign_up_requires_approval: הרשמות חדשות ידרשו את אישורך + severity: נא לבחור מה יקרה לבקשות מכתובת IP זו + rule: + text: נא לתאר את הכלל או הדרישה למשתמשים משרת זה. על התיאור להיות קצר ובהיר sessions: - otp: נא להקליד קוד אימות דו-שלבי ממכשירך או קוד אחזור גישה. + otp: 'נא להקליד קוד אימות דו-שלבי ממכשירך או להשתמש באחד מקודי אחזור הגישה שלך:' + webauthn: אם זהו מכשיר USB יש לוודא שהוא מוכנס, ואם יש צורך, להקיש עליו. + tag: + name: ניתן רק להחליף בין אותיות קטנות וגדולות, למשל כדי לשפר את הקריאות + user: + chosen_languages: אם פעיל, רק חצרוצים בשפות הנבחרות יוצגו לפידים הפומביים labels: + account: + fields: + name: תווית + value: תוכן + account_alias: + acct: שם משתמש של החשבון הישן + account_migration: + acct: שם משתמש של החשבון החדש + account_warning_preset: + text: טקסט קבוע מראש + title: כותרת + admin_account_action: + include_statuses: כלול חצרוצים מדווחים בהודעת הדוא"ל + send_email_notification: יידע את המשתמש באמצעות דוא"ל + text: התראה בהתאמה אישית + type: פעולה + types: + disable: הקפא + none: שלח התרעה + sensitive: רגיש + silence: הגבלה + suspend: השעייה + warning_preset_id: השתמש/י בטקסט מוכן מראש לאזהרה + announcement: + all_day: אירוע למשך כל היום + ends_at: סוף האירוע + scheduled_at: תיזמון פרסום + starts_at: תחילת האירוע + text: הכרזה + appeal: + text: הסבר מדוע יש להפוך את ההחלטה defaults: + autofollow: להזמין מעקב אחרי חשבונך avatar: תמונת פרופיל + bot: זהו חשבון מסוג בוט + chosen_languages: סינון שפות confirm_new_password: אישור סיסמא חדשה confirm_password: אישור סיסמא + context: סינון לפי הקשר current_password: סיסמא נוכחית data: מידע + discoverable: הצע חשבון לאחרים display_name: שם להצגה email: כתובת דוא"ל expires_in: תפוגה לאחר + fields: מטא-נתונים על הפרופיל header: ראשה + honeypot: "%{label} (לא למלא)" + inbox_url: קישורית לתיבת ממסר + irreversible: הסרה במקום הסתרה locale: שפה locked: הפוך חשבון לפרטי max_uses: מספר מרבי של שימושים @@ -30,31 +149,82 @@ he: note: אודות otp_attempt: קוד אימות דו-שלבי password: סיסמא + phrase: מילת מפתח או ביטוי + setting_advanced_layout: אפשר ממשק ווב מתקדם + setting_aggregate_reblogs: קבץ הדהודים זהים + setting_always_send_emails: תמיד שלח התראות לדוא"ל setting_auto_play_gif: ניגון אוטומטי של גיפים setting_boost_modal: הצגת דיאלוג אישור לפני הדהוד + setting_crop_images: קטום תמונות בחצרוצים לא מורחבים ל 16 על 9 + setting_default_language: שפת חצרוץ setting_default_privacy: פרטיות ההודעות setting_default_sensitive: תמיד לתת סימון "רגיש" למדיה setting_delete_modal: להראות תיבת אישור לפני מחיקת חיצרוץ + setting_disable_swiping: ביטול החלקת-צד + setting_display_media: תצוגת מדיה + setting_display_media_default: ברירת מחדל + setting_display_media_hide_all: להסתיר הכל + setting_display_media_show_all: להציג הכול + setting_expand_spoilers: להרחיב תמיד חצרוצים מסומנים באזהרת תוכן + setting_hide_network: להחביא את הגרף החברתי שלך setting_noindex: לבקש הסתרה ממנועי חיפוש setting_reduce_motion: הפחתת תנועה בהנפשות + setting_show_application: הצגת הישום ששימש לחצרוץ setting_system_font_ui: להשתמש בגופן ברירת המחדל של המערכת setting_theme: ערכת העיצוב של האתר + setting_trends: הצגת הנושאים החמים setting_unfollow_modal: להראות תיבת אישור לפני הפסקת מעקב אחרי אחרים + setting_use_blurhash: הצגת גראדיינטים צבעוניים למדיה מוסתרת + setting_use_pending_items: מצב איטי severity: חומרה + sign_in_token_attempt: קוד אבטחה type: סוג יבוא username: שם משתמש + username_or_email: שם משתמש או דוא"ל + whole_word: מילה שלמה + email_domain_block: + with_dns_records: לכלול רשומות MX וכתובות IP של הדומיין + featured_tag: + name: האשתג interactions: must_be_follower: חסימת התראות משאינם עוקבים must_be_following: חסימת התראות משאינם נעקבים must_be_following_dm: חסימת הודעות ישירות מכותבים שאינם במעקב + invite: + comment: הערה + invite_request: + text: למה תרצה/י להצטרף? + ip_block: + comment: הערה + ip: IP + severities: + no_access: חסימת גישה + sign_up_requires_approval: הגבלת הרשמות + severity: כלל notification_emails: + appeal: מישהם מערערים על החלטת מנהל קהילה digest: שליחת הודעות דוא"ל מסכמות favourite: שליחת דוא"ל כשמחבבים חצרוץ follow: שליחת דוא"ל כשנוספות עוקבות follow_request: שליחת דוא"ל כשמבקשים לעקוב mention: שליחת דוא"ל כשפונים אלייך + pending_account: נדרשת סקירה של חשבון חדש reblog: שליחת דוא"ל כשמהדהדים חצרוץ שלך + report: דו"ח חדש הוגש + trending_tag: נושאים חמים חדשים דורשים סקירה + rule: + text: כלל + tag: + listable: הרשה/י להאשתג זה להופיע בחיפושים והצעות + name: האשתג + trendable: הרשה/י להאשתג זה להופיע תחת נושאים חמים + usable: הרשה/י לחצרוצים להכיל האשתג זה 'no': לא + recommended: מומלץ required: + mark: "*" text: שדה חובה + title: + sessions: + webauthn: נא להשתמש באחד ממפתחות האבטחה שלך כדי להכנס 'yes': כן diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index 0df4f2df1..993961667 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -174,7 +174,7 @@ hu: setting_theme: Megjelenítési sablon setting_trends: Mai trend mutatása setting_unfollow_modal: Megerősítés kérése mielőtt abbahagyod valaki követését - setting_use_blurhash: Rejtett média helyett homály mutatása + setting_use_blurhash: Színátmenetek megjelenítése a rejtett médiáknál setting_use_pending_items: Lassú mód severity: Súlyosság sign_in_token_attempt: Biztonsági kód diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml index 7c8cdeadc..f1870ab9a 100644 --- a/config/locales/simple_form.sl.yml +++ b/config/locales/simple_form.sl.yml @@ -2,39 +2,61 @@ sl: simple_form: hints: + account_alias: + acct: Določite uporabniškoime@domena računa, od katerega se želite preseliti + account_migration: + acct: Določite uporabniškoime@domena računa, na katerega se želite preseliti account_warning_preset: - text: Lahko uporabite skladnjo tuta, kot so URL-ji, ključniki in omembe + text: Lahko uporabite skladnjo objave, kot so URL-ji, ključniki in omembe title: Neobvezno. Ni vidno prejemniku admin_account_action: + include_statuses: Uporabnik vidi, katere objave so povzročile dejanje moderiranja ali opozorilo send_email_notification: Uporabnik bo prejel razlago, kaj se je zgodilo z njihovim računom - text_html: Neobvezno. Lahko uporabite skladnjo tuta. Prednastavite opozorila, da prihranite čas + text_html: Neobvezno. Lahko uporabite skladnjo objave. Prednastavite opozorila, da prihranite čas type_html: Izberite, kaj boste storili z %{acct} + types: + disable: Preprečite uporabniku, da uporablja svoj račun, vendar ne izbrišite ali skrijte njegove vsebine. + none: Uporabite to, da pošljete opozorilo uporabnik, ne da bi sprožili kakšno drugo dejanje. + sensitive: Vsilite, da so vse medijske priponke tega uporabnika označene kot občutljive. + silence: Prepreči uporabniku, da lahko objavlja javno, skrije njihove objave in obvestila pred osebami, ki mu ne sledijo. + suspend: Prepreči vsakršno interakcijo od ali do tega računa in izbriše njegovo vsebino. Povratno v roku 30 dni. warning_preset_id: Neobvezno. Še vedno lahko dodate besedilo po meri na konec prednastavitve + announcement: + all_day: Če je potrjeno, bodo prikazani le datumi časovnega obsega + ends_at: Neobvezno. Obvestilo bo samodejno neobjavljeno v navedenem času + scheduled_at: Pustite prazno, da objavite obvestilo takoj + starts_at: Neobvezno. V primeru, da je vaše obvestilo vezano na določen časovni obseg + text: Uporabite lahko skladnjo objav. Pazite na prostor, ki ga zavzame obvestilo na zaslonu uporabnika + appeal: + text: Na ukrep se lahko pritožite le enkrat defaults: autofollow: Osebe, ki se prijavijo prek povabila, vas bodo samodejno sledile avatar: PNG, GIF ali JPG. Največ %{size}. Zmanjšana bo na %{dimensions}px bot: Ta račun v glavnem opravlja samodejna dejanja in morda ni pod nadzorom context: En ali več kontekstov, kjer naj se uporabi filter + current_password: Iz varnostnih razlogov vnesite geslo trenutnega računa current_username: Za potrditev vnesite uporabniško ime trenutnega računa digest: Pošlje se le po dolgem obdobju nedejavnosti in samo, če ste prejeli osebna sporočila v vaši odsotnosti + discoverable: Dovolite, da vaš račun odkrijejo neznanci prek priporočil, trendov in drugih funkcij email: Poslali vam bomo potrditveno e-pošto fields: Na svojem profilu lahko imate do 4 predmete prikazane kot tabelo. header: PNG, GIF ali JPG. Največ %{size}. Zmanjšana bo na %{dimensions}px inbox_url: Kopirajte URL naslov s prve strani releja, ki ga želite uporabiti - irreversible: Filtrirani trobi bodo nepovratno izginili, tudi če je filter kasneje odstranjen + irreversible: Filtrirane objave bodo nepovratno izginile, tudi če je filter kasneje odstranjen locale: Jezik uporabniškega vmesnika, e-poštnih sporočil in potisnih obvestil locked: Zahteva, da ročno odobrite sledilce password: Uporabite najmanj 8 znakov - phrase: Se bo ujemal, ne glede na začetnice v tekstu ali opozorilo o vsebini troba + phrase: Se bo ujemal, ne glede na začetnice v besedilu ali opozorilo o vsebini objave scopes: Do katerih API-jev bo imel program dostop. Če izberete obseg najvišje ravni, vam ni treba izbrati posameznih. - setting_aggregate_reblogs: Ne prikažite novih spodbud za tute, ki so bili nedavno spodbujeni (vpliva samo na novo prejete spodbude) + setting_aggregate_reblogs: Ne prikažite novih izpostavitev za objave, ki so bile nedavno izpostavljene (vpliva samo na novo prejete izpostavitve) + setting_always_send_emails: Običajno e-obvestila ne bodo poslana, če ste na Mastodonu dejavni setting_default_sensitive: Občutljivi mediji so privzeto skriti in jih je mogoče razkriti s klikom setting_display_media_default: Skrij medij, ki je označen kot občutljiv setting_display_media_hide_all: Vedno skrij vse medije setting_display_media_show_all: Vedno pokaži medij, ki je označen kot občutljiv setting_hide_network: Kogar spremljate in kdo vas spremlja ne bo prikazano na vašem profilu - setting_noindex: Vpliva na vaš javni profil in na strani s stanjem - setting_show_application: Aplikacija, ki jo uporabljate za tutanje, bo prikazana v podrobnem pogledu vaših tutov + setting_noindex: Vpliva na vaš javni profil in na strani z objavami + setting_show_application: Aplikacija, ki jo uporabljate za objavljanje, bo prikazana v podrobnem pogledu vaših objav setting_use_blurhash: Gradienti temeljijo na barvah skrite vizualne slike, vendar zakrivajo vse podrobnosti setting_use_pending_items: Skrij posodobitev časovnice za klikom namesto samodejnega posodabljanja username: Vaše uporabniško ime bo edinstveno na %{domain} @@ -43,6 +65,7 @@ sl: domain: Ta domena bo lahko prejela podatke s tega strežnika, dohodni podatki z nje pa bodo obdelani in shranjeni email_domain_block: domain: To je lahko ime domene, ki se pokaže v e-poštnem naslovu, ali zapis MX, ki ga uporablja. Ob prijavi bo preverjeno. + with_dns_records: Poskus razrešitve zapisov DNS danih domen bo izveden in rezultati bodo prav tako blokirani featured_tag: name: 'Morda boste želeli uporabiti eno od teh:' form_challenge: @@ -53,14 +76,21 @@ sl: text: To nam bo pomagalo pregledati vašo prijavo ip_block: comment: Neobvezno. Spomnite se, zakaj ste dodali to pravilo. + expires_in: Naslovi IP so končno imejen vir, včasij si jih delimo in pogosto menjajo rabo. Zato nedoločeni bloki IP niso priporočeni. + ip: Vnesite naslov IPv4 oz. IPv6. S skladnjo CIDR lahko blokirate celotne obsege. Pazite, da se ne zaklenete ven! severities: no_access: Blokiraj dostop do vseh virov sign_up_requires_approval: Za nove registracije bo potrebna vaša odobritev severity: Izberite, kaj se bo zgodilo z zahtevami iz tega IP-naslova + rule: + text: Opišite pravilo ali zahtevo za uporabnike na tem strežniku. Poskusite biti kratki in jasni sessions: otp: 'Vnesite dvomestno kodo, ki je ustvarjena z aplikacijo na telefonu, ali uporabite eno od vaših obnovitvenih kod:' + webauthn: Če gre za ključek USB, ga ne pozabite vstaviti in, če je potrebno, tapniti. + tag: + name: Spremenite lahko le npr. velikost črk (velike/male), da je bolj berljivo user: - chosen_languages: Ko je označeno, bodo v javnih časovnicah prikazani samo trobi v izbranih jezikih + chosen_languages: Ko je označeno, bodo v javnih časovnicah prikazane samo objave v izbranih jezikih labels: account: fields: @@ -121,23 +151,25 @@ sl: password: Geslo phrase: Ključna beseda ali fraza setting_advanced_layout: Omogoči napredni spletni vmesnik - setting_aggregate_reblogs: Skupinske spodbude na časovnicah + setting_aggregate_reblogs: Skupinske izpostavitve na časovnicah + setting_always_send_emails: Vedno pošlji e-obvestila setting_auto_play_gif: Samodejno predvajanje animiranih GIF-ov - setting_boost_modal: Pred sunkom pokaži potrditveno okno + setting_boost_modal: Pred izpostavljanjem pokaži potrditveno okno setting_crop_images: Obreži slike v nerazširjenih objavah v razmerju 16:9 setting_default_language: Jezik objavljanja setting_default_privacy: Zasebnost objave setting_default_sensitive: Vedno označi medije kot občutljive - setting_delete_modal: Pred brisanjem troba prikaži okno za pritrditev + setting_delete_modal: Pred brisanjem objave prikaži okno za pritrditev + setting_disable_swiping: Onemogoči poteze drsanja setting_display_media: Prikaz medijev setting_display_media_default: Privzeto setting_display_media_hide_all: Skrij vse setting_display_media_show_all: Prikaži vse - setting_expand_spoilers: Vedno razširi trobe, označene z opozorili o vsebini + setting_expand_spoilers: Vedno razširi objave, označene z opozorili o vsebini setting_hide_network: Skrij svoje omrežje setting_noindex: Odsotnost indeksiranja iskalnikov setting_reduce_motion: Zmanjšanje premikanja v animacijah - setting_show_application: Razkrij aplikacijo za pošiljanje tutov + setting_show_application: Razkrij aplikacijo za pošiljanje objav setting_system_font_ui: Uporabi privzeto pisavo sistema setting_theme: Tema strani setting_trends: Pokaži današnje trende @@ -170,13 +202,14 @@ sl: sign_up_requires_approval: Omeji število prijav severity: Pravilo notification_emails: + appeal: Nekdo se je pritožil na odločitev moderatorja digest: Pošlji izvlečke e-pošt - favourite: Pošlji e-pošto, ko nekdo doda vaše stanje med priljubljene + favourite: Pošlji e-pošto, ko nekdo doda vašo objavo med priljubljene follow: Pošlji e-pošto, ko vas nekdo sledi follow_request: Pošlji e-pošto, ko vam nekdo želi slediti mention: Pošlji e-pošto, ko vas nekdo omeni pending_account: Pošlji e-pošto, ko je potreben pregled novega računa - reblog: Pošlji e-pošto, ko nekdo sune vaše stanje + reblog: Pošlji e-sporočilo, ko nekdo izpostavi vašo objavo report: Novo poročilo je oddano trending_tag: Nov trend zahteva pregled rule: diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index f33b31831..4d023b77d 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -27,6 +27,8 @@ uk: scheduled_at: Залиште поля незаповненими, щоб опублікувати оголошення відразу starts_at: Необов'язково. У разі якщо оголошення прив'язується до певного періоду часу text: Ви можете використовувати той же синтаксис, що і в постах. Будьте завбачливі щодо місця, яке займе оголошення на екрані користувачів + appeal: + text: Ви можете оскаржити рішення лише один раз defaults: autofollow: Люди, що зареєструвалися за вашим запрошенням, автоматично підпишуться на вас avatar: PNG, GIF, або JPG. Максимум - %{size}. Буде зменшено до %{dimensions}px @@ -35,6 +37,7 @@ uk: current_password: Для цілей безпеки, будь ласка, введіть пароль поточного облікового запису current_username: Для підтвердження, будь ласка, введіть ім'я користувача поточного облікового запису digest: Буде послано тільки після довгого періоду неактивності, та тільки якщо ви отримаєте персональне повідомлення у цей період + discoverable: Дозволити знаходити ваш обліковий запис стороннім людям за допомогою рекомендацій, трендів та інших функцій email: Вам надійде електронний лист з підтвердженням fields: До 4 елементів може бути відображено як таблиця у вашому профілі header: PNG, GIF, або JPG. Максимум - %{size}. Буде зменшено до %{dimensions}px @@ -46,6 +49,7 @@ uk: phrase: Шукає без врахування регістру у тексті дмуха або у його попередженні про вміст scopes: Які API додатку буде дозволено використовувати. Якщо ви виберете самий верхній, нижчестоящі будуть обрані автоматично. setting_aggregate_reblogs: Не показувати передмухи для дмухів, які нещодавно вже були передмухнуті (не вплине на вже отримані передмухи) + setting_always_send_emails: Зазвичай, під час активного користування Mastodon, сповіщення не будуть відправлятися електронною поштою setting_default_sensitive: Дражливі медіа приховані за промовчанням та можуть бути розкрити кліком setting_display_media_default: Приховувати медіа, помічені як дражливі setting_display_media_hide_all: Завжди приховувати медіа @@ -60,6 +64,7 @@ uk: domain_allow: domain: Цей домен зможе отримувати дані з цього серверу. Вхідні дані будуть оброблені та збережені email_domain_block: + domain: Це може бути доменне ім'я, яке відображується в адресі електронної пошти, або використовуваний запис MX. Вони будуть перевірятися при реєстрації. with_dns_records: Спроба визначення DNS-записів заданого домену буде здійснена, а результати також будуть занесені до чорного списку featured_tag: name: 'Можливо, ви захочете використовувати один з цих:' diff --git a/config/locales/sl.yml b/config/locales/sl.yml index cf7564542..fe38db82f 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -1,16 +1,16 @@ --- sl: about: - about_hashtag_html: To so javni tuti, označeni z #%{hashtag}. Z njimi se lahko povežete, če imate račun kjerkoli v fediverse-u. + about_hashtag_html: To so javne objave, označene z #%{hashtag}. Z njimi se lahko povežete, če imate račun kjerkoli v fediverzumu. about_mastodon_html: Mastodon je socialno omrežje, ki temelji na odprtih spletnih protokolih in prosti ter odprtokodni programski opremi. Je decentraliziran, kot e-pošta. about_this: O Mastodonu - active_count_after: dejaven + active_count_after: dejavnih active_footnote: Aktivni mesečni uporabniki (AMU) administered_by: 'Upravlja:' api: API (programerski vmesnik aplikacije) apps: Mobilne aplikacije apps_platforms: Uporabljajte Mastodon iz iOS, Android ali iz drugih platform - browse_directory: Brskajte po imeniku profilov in filtriranje po interesih + browse_directory: Brskajte po imeniku profilov in jih filtrirajte po interesih browse_local_posts: Prebrskaj živi tok javnih objav s tega strežnika browse_public_posts: Brskajte javnih objav v živo na Mastodonu contact: Kontakt @@ -19,7 +19,7 @@ sl: continue_to_web: Nadaljuj v spletno aplikacijo discover_users: Odkrijte uporabnike documentation: Dokumentacija - federation_hint_html: Z računom na %{instance} boste lahko spremljali ljudi na kateremkoli Mastodon strežniku. + federation_hint_html: Z računom na %{instance} boste lahko spremljali osebe na poljubnem strežniku Mastodon. get_apps: Poskusite mobilno aplikacijo hosted_on: Mastodon gostuje na %{domain} instance_actor_flash: | @@ -37,7 +37,7 @@ sl: status_count_after: few: stanja one: stanje - other: stanj + other: objav two: stanja status_count_before: Ki so avtorji tagline: Sledite prijateljem in odkrijte nove @@ -46,7 +46,13 @@ sl: unavailable_content_description: domain: Strežnik reason: Razlog + rejecting_media: 'Medijske datoteke s teh strežnikov ne bodo obdelane ali shranjene, nobene ogledne sličice ne bodo prikazane, kar bo zahtevalo ročno klikanje po izvorni datoteki:' + rejecting_media_title: Filtrirane datoteke + silenced: 'Objave s teh strežnikov bodo skrite v javnih časovnicah ter pogovorih in nobena obvestila ne bodo izdelana iz interakcij njihovih uporabnikov, razen če jim sledite:' silenced_title: Omejeni strežniki + suspended: 'Nobeni podatki s teh strežnikov ne bodo obdelani, shranjeni ali izmenjani, zaradi česar je nemogoča kakršna koli interakcija ali komunikacija z uporabniki s teh strežnikov:' + suspended_title: Suspendirani strežniki + unavailable_content_html: Mastodon vam splošno omogoča ogled vsebin in interakcijo z uporabniki iz vseh drugih strežnikov v fediverzumu. To so izjeme, opravljene na tem strežniku. user_count_after: few: uporabniki one: uporabnik @@ -56,6 +62,8 @@ sl: what_is_mastodon: Kaj je Mastodon? accounts: choices_html: "%{name} izbire:" + endorsements_hint: Osebe, ki jim sledite, lahko podprete prek spletnega vmesnika in prikazane bodo tukaj. + featured_tags_hint: Izpostavite lahko določene ključnike, ki bodo prikazani na tem mestu. follow: Sledi followers: few: Sledilci @@ -63,6 +71,7 @@ sl: other: Sledilcev two: Sledilca following: Sledim + instance_actor_flash: Ta račun je navidezni akter, ki se uporablja za predstavljanje strežnika samega in ne posameznega uporabnika. Uporablja se za namene federacije in se ne sme začasno ustaviti. joined: Se je pridružil na %{date} last_active: zadnja dejavnost link_verified_on: Lastništvo te povezave je bilo preverjeno na %{date} @@ -77,13 +86,15 @@ sl: posts: few: Tuti one: Tut - other: Tutov + other: Objav two: Tuta - posts_tab_heading: Tuti - posts_with_replies: Tuti in odgovori + posts_tab_heading: Objave + posts_with_replies: Objave in odgovori roles: admin: Skrbnik bot: Robot + group: Skupina + moderator: Mod unavailable: Profil ni na voljo unfollow: Prenehaj slediti admin: @@ -97,6 +108,7 @@ sl: accounts: add_email_domain_block: Blokiraj domeno e-pošte approve: Odobri + approved_msg: Uspešno odobrena aplikacija prijave uporabnika %{username} are_you_sure: Ali ste prepričani? avatar: Podoba by_domain: Domena @@ -114,7 +126,9 @@ sl: delete: Izbriši podatke deleted: Izbrisano demote: Degradiraj + destroyed_msg: Podatki uporabnika %{username} so zdaj v vrsti za trajen izbris disable: Onemogoči + disable_sign_in_token_auth: Onemogoči overjanje z žetonom po e-pošti disable_two_factor_authentication: Onemogoči 2FA disabled: Onemogočeno display_name: Prikazno ime @@ -123,7 +137,9 @@ sl: email: E-pošta email_status: Stanje e-pošte enable: Omogoči + enable_sign_in_token_auth: Omogoči overjanje z žetonom po e-pošti enabled: Omogočeno + enabled_msg: Uspešno odmrznjen račun uporabnika %{username} followers: Sledilci follows: Sledi header: Glava @@ -140,6 +156,8 @@ sl: login_status: Stanje prijave media_attachments: Predstavnostne priloge memorialize: Spremenite v spomin + memorialized: Spomenificirano + memorialized_msg: Uspešno preoblikovan %{username} v spominski račun moderation: active: Dejaven all: Vse @@ -154,14 +172,24 @@ sl: not_subscribed: Ni naročen pending: Čakanje na pregled perform_full_suspension: Suspendiraj + previous_strikes: Predhodni ukrepi + previous_strikes_description_html: + few: Ta račun ima %{count} ukrepe. + one: Ta račun ima %{count} ukrep. + other: Ta račun ima %{count} ukrepov. + two: Ta račun ima %{count} ukrepa. promote: Promoviraj protocol: Protokol public: Javen push_subscription_expires: Naročnina PuSH preteče redownload: Osveži profil + redownloaded_msg: Uspešno osvežen profil %{username} iz izvirnika reject: Zavrni + rejected_msg: Uspešno zavrnjena aplikacija prijave uporabnika %{username} remove_avatar: Odstrani podobo remove_header: Odstrani glavo + removed_avatar_msg: Uspešno odstranjena slika avatarja uporabnika %{username} + removed_header_msg: Uspešno odstranjena naslovna slika uporabnika %{username} resend_confirmation: already_confirmed: Ta uporabnik je že potrjen send: Ponovno pošlji potrditveno e-pošto @@ -180,21 +208,32 @@ sl: search_same_ip: Drugi uporabniki z istim IP security_measures: only_password: Samo geslo + password_and_2fa: Geslo in 2FA + sensitive: Občutljivo + sensitized: Označeno kot občutljivo shared_inbox_url: URL mape "Prejeto v skupni rabi" show: - created_reports: Narejene prijave + created_reports: Opravljene prijave targeted_reports: Prijavili drugi silence: Utišaj silenced: Utišan - statuses: Stanja + statuses: Objave + strikes: Predhodni ukrepi subscribe: Naroči suspend: Suspendiraj suspended: Suspendiran + suspension_irreversible: Podatki tega računa so bili nepovrazno izbrisani. Račun lahko vrnete iz suspenza, da bo ponovno uporaben, vendar preteklih podatkov ne boste mogli obnoviti. + suspension_reversible_hint_html: Račun je bil suspendiran, podatki pa bodo v celoti odstranjeni %{date}. Do takrat je mogoče račun obnoviti brez negativnih posledic. Če želite takoj odstraniti vse podatke računa, lahko to storite spodaj. title: Računi + unblock_email: Odblokiraj e-poštni naslov + unblocked_email_msg: E-poštni naslov uporabnika %{username} uspešno odblokiran unconfirmed_email: Nepotrjena e-pošta + undo_sensitized: Ni občutljivo undo_silenced: Razveljavi utišanje undo_suspension: Razveljavi suspendiranje + unsilenced_msg: Uspešno razveljavljena omejitev računa uporabnika %{username} unsubscribe: Odjavi se od naročnine + unsuspended_msg: Uspešno preklican suspenz računa uporabnika %{username} username: Uporabniško ime view_domain: Pokaži povzetek za domeno warn: Opozori @@ -202,28 +241,109 @@ sl: whitelisted: Na belem seznamu action_logs: action_types: + approve_appeal: Odobri pritožbo approve_user: Odobri uporabnika - assigned_to_self_report: Dodeli poročilo + assigned_to_self_report: Dodeli prijavo change_email_user: Spremeni e-poštni naslov uporabnika confirm_user: Potrdi uporabnika create_account_warning: Ustvari opozorilo create_announcement: Ustvari obvestilo + create_custom_emoji: Ustvari emodži po meri + create_domain_allow: Ustvari odobritev domene + create_domain_block: Ustvari blokado domene + create_email_domain_block: Ustvari blokado domene e-pošte create_ip_block: Ustvari pravilo IP create_unavailable_domain: Ustvari domeno, ki ni na voljo + demote_user: Ponižaj uporabnika destroy_announcement: Izbriši obvestilo + destroy_custom_emoji: Izbriši emodži po meri destroy_domain_allow: Izbriši odobritev domene destroy_domain_block: Izbriši blokado domene + destroy_email_domain_block: Izbriši blokado domene e-pošte + destroy_instance: Očisti domeno destroy_ip_block: Izbriši pravilo IP destroy_status: Izbriši objavo + destroy_unavailable_domain: Izbriši domeno, ki ni na voljo + disable_2fa_user: Onemogoči + disable_custom_emoji: Onemogoči emodži po meri + disable_sign_in_token_auth_user: Onemogoči overjanje z žetonom po e-pošti za uporabnika disable_user: Onemogoči uporabnika + enable_custom_emoji: Omogoči emodži po meri + enable_sign_in_token_auth_user: Omogoči overjanje z žetonom po e-pošti za uporabnika enable_user: Omogoči uporabnika + memorialize_account: Spomenificiraj račun + promote_user: Povišaj uporabnika + reject_appeal: Zavrni pritožbo reject_user: Zavrni uporabnika remove_avatar_user: Odstrani avatar reopen_report: Ponovno odpri prijavo reset_password_user: Ponastavi geslo + resolve_report: Razreši prijavo + sensitive_account: Občutljivi račun silence_account: Omeji račun + suspend_account: Začasno prekini račun + unassigned_report: Prekliči dodelitev prijave + unblock_email_account: Odblokiraj e-poštni naslov + unsensitive_account: Ni občutljiv račun + unsilence_account: Razveljavi omejitev računa + unsuspend_account: Prekliči začasno prekinitev računa + update_announcement: Posodobi objavo + update_custom_emoji: Posodobi emodži po meri + update_domain_block: Posodobi blokado domene update_status: Posodobi objavo - deleted_status: "(izbrisano stanje)" + actions: + approve_appeal_html: "%{name} je ugodil pritožbi uporabnika %{target} na moderatorsko odločitev" + approve_user_html: "%{name} je odobril/a registracijo iz %{target}" + assigned_to_self_report_html: "%{name} je dodelil/a prijavo %{target} sebi" + change_email_user_html: "%{name} je spremenil/a naslov e-pošte uporabnika %{target}" + confirm_user_html: "%{name} je potrdil/a naslov e-pošte uporabnika %{target}" + create_account_warning_html: "%{name} je poslal/a opozorilo %{target}" + create_announcement_html: "%{name} je ustvarila/a novo obvestilo %{target}" + create_custom_emoji_html: "%{name} je posodobil/a emotikone %{target}" + create_domain_allow_html: "%{name} je dovolil/a federacijo z domeno %{target}" + create_domain_block_html: "%{name} je blokiral/a domeno %{target}" + create_email_domain_block_html: "%{name} je dal/a na črni seznam e-pošto domene %{target}" + create_ip_block_html: "%{name} je ustvaril/a pravilo za IP %{target}" + create_unavailable_domain_html: "%{name} je prekinil/a dostavo v domeno %{target}" + demote_user_html: "%{name} je ponižal/a uporabnika %{target}" + destroy_announcement_html: "%{name} je izbrisal/a obvestilo %{target}" + destroy_custom_emoji_html: "%{name} je uničil/a emotikone %{target}" + destroy_domain_allow_html: "%{name} ni dovolil/a federacije z domeno %{target}" + destroy_domain_block_html: "%{name} je odblokiral/a domeno %{target}" + destroy_email_domain_block_html: "%{name} je odblokiral/a e-pošto domene %{target}" + destroy_instance_html: "%{name} je očistil/a domeno %{target}" + destroy_ip_block_html: "%{name} je izbrisal/a pravilo za IP %{target}" + destroy_status_html: "%{name} je odstranil/a objavo uporabnika %{target}" + destroy_unavailable_domain_html: "%{name} je nadaljeval/a dostav v domeno %{target}" + disable_2fa_user_html: "%{name} je onemogočil/a dvofaktorsko zahtevo za uporabnika %{target}" + disable_custom_emoji_html: "%{name} je onemogočil/a emotikone %{target}" + disable_sign_in_token_auth_user_html: "%{name} je onemogočil/a overjanje z žetonom po e-pošti za uporabnika %{target}" + disable_user_html: "%{name} je onemogočil/a prijavo za uporabnika %{target}" + enable_custom_emoji_html: "%{name} je omogočil/a emotikone %{target}" + enable_sign_in_token_auth_user_html: "%{name} je omogočil/a overjanje z žetonom po e-pošti za uporabnika %{target}" + enable_user_html: "%{name} je omogočil/a prijavo za uporabnika %{target}" + memorialize_account_html: "%{name} je spremenil/a račun uporabnika %{target} v spominsko stran" + promote_user_html: "%{name} je povišal/a uporabnika %{target}" + reject_appeal_html: "%{name} je zavrnil/a pritožbo uporabnika %{target} na moderatorsko odločitev" + reject_user_html: "%{name} je zavrnil/a registracijo iz %{target}" + remove_avatar_user_html: "%{name} je odstranil podobo (avatar) uporabnika %{target}" + reopen_report_html: "%{name} je ponovno odprl/a prijavo %{target}" + reset_password_user_html: "%{name} je ponastavil/a geslo uporabnika %{target}" + resolve_report_html: "%{name} je razrešil/a prijavo %{target}" + sensitive_account_html: "%{name} je označil/a medije računa %{target}'s kot občutljive" + silence_account_html: "%{name} je omejil/a račun uporabnika %{target}" + suspend_account_html: "%{name} je suspendiral/a račun uporabnika %{target}" + unassigned_report_html: "%{name} je preklical dodelitev prijave uporabnika %{target}" + unblock_email_account_html: "%{name} je odblokiral/a e-poštni naslov uporabnika %{target}" + unsensitive_account_html: "%{name} je odznačil/a medije računa %{target}'s kot občutljive" + unsilence_account_html: "%{name} je preklical omejitev računa %{target}" + unsuspend_account_html: "%{name} je preklical suspenz računa %{target}" + update_announcement_html: "%{name} je posodobil/a objavo %{target}" + update_custom_emoji_html: "%{name} je posodobil/a emotikone %{target}" + update_domain_block_html: "%{name} je posodobil/a domenski blok za %{target}" + update_status_html: "%{name} je posodobil/a objavo uporabnika %{target}" + deleted_status: "(izbrisana objava)" + empty: Ni najdenih zapisnikov. filter_by_action: Filtriraj po dejanjih filter_by_user: Filtriraj po uporabnikih title: Dnevnik revizije @@ -238,8 +358,12 @@ sl: title: Novo obvestilo publish: Objavi published_msg: Obvestilo je bilo uspešno objavljeno! + scheduled_for: Načrtovano ob %{time} + scheduled_msg: Obvestilo ima načrtovano objavo! title: Obvestila unpublish: Umakni iz objave + unpublished_msg: Obvestilo je bilo uspešno umaknjeno! + updated_msg: Obvestilo je bilo uspešno posodobljeno! custom_emojis: assign_category: Dodeli kategorijo by_domain: Domena @@ -262,11 +386,13 @@ sl: listed: Navedeno new: title: Dodaj nove emotikone + not_permitted: Nimate pravic za izvedbo tega dejanja. overwrite: Prepiši shortcode: Kratka koda shortcode_hint: Najmanj 2 znaka, samo alfanumerični znaki in podčrtaji title: Emotikoni po meri uncategorized: Brez kategorije + unlist: Ne prikaži na seznamu unlisted: Neuvrščeni update_failed_msg: Tega emotikona ni bilo mogoče posodobiti updated_msg: Emotikon je uspešno posodobljen! @@ -274,12 +400,41 @@ sl: dashboard: active_users: dejavnih uporabnikov interactions: interakcij + media_storage: Shramba za medije new_users: novih uporabnikov - opened_reports: odprtih poročil + opened_reports: odprtih prijav + pending_appeals_html: + few: "%{count} čakajoče pritožbe" + one: "%{count} čakajoča pritožba" + other: "%{count} čakajočih pritožb" + two: "%{count} čakajoči pritožbi" + pending_reports_html: + few: "%{count} čakajoče prijave" + one: "%{count} čakajoča prijava" + other: "%{count} čakajočih prijav" + two: "%{count} čakajoči prijavi" + pending_tags_html: + few: "%{count} čakajoči ključniki" + one: "%{count} čakajoči ključnik" + other: "%{count} čakajočih ključnikov" + two: "%{count} čakajoča ključnika" + pending_users_html: + few: "%{count} čakajoči uporabniki" + one: "%{count} čakajoči uporabnik" + other: "%{count} čakajočih uporabnikov" + two: "%{count} čakajoča uporabnika" + resolved_reports: razrešenih prijav software: Programska oprema + sources: Viri registracij space: Uporaba prostora title: Nadzorna plošča + top_languages: Najbolj dejavni jeziki + top_servers: Najbolj dejavni strežniki website: Spletišče + disputes: + appeals: + empty: Ni najdenih pritožb. + title: Pritožbe domain_allows: add_new: Dodaj domeno na beli seznam created_msg: Domena je bila uspešno dodana na beli seznam @@ -301,15 +456,25 @@ sl: silence: Utišaj suspend: Suspendiraj title: Nov domenski blok + obfuscate: Zakrij ime domene + obfuscate_hint: Delno zakrij ime domene na seznamu, če je omogočeno oglaševanje omejitev seznama domen private_comment: Zasebni komentar + private_comment_hint: Komentar o tej omejitvi domene za interno uporabo moderatorjev. public_comment: Javni komentar + public_comment_hint: Komentar o tej omejitvi domene za širšo javnost, če je omogočeno oglaševanje seznama omejitev domene. reject_media: Zavrni predstavnostne datoteke reject_media_hint: Odstrani lokalno shranjene predstavnostne datoteke in zavrača prenašanje le-teh v prihodnosti. Za suspenzije ni pomembno reject_reports: Zavrnjene prijave reject_reports_hint: Prezri vse prijave, ki pridejo iz te domene. Za suspenzije ni pomembno undo: Razveljavi domenski blok + view: Pokaži domenski blok email_domain_blocks: add_new: Dodaj novo + attempts_over_week: + few: "%{count} poskusi prijave zadnji teden" + one: "%{count} poskus prijave zadnji teden" + other: "%{count} poskusov prijave zadnji teden" + two: "%{count} poskusa prijave zadnji teden" created_msg: Domena e-pošte je bila uspešno dodana na črni seznam delete: Izbriši dns: @@ -321,26 +486,44 @@ sl: resolve: Razreši domeno title: Nov vnos e-pošte na črni seznam no_email_domain_block_selected: Nobena domena e-računa ni bila spremenjena, ker nobena ni bila izbrana + resolved_dns_records_hint_html: Ime domene se razreši na naslednje domene MX, ki so končno odgovorne za sprejemanje e-pošte. Blokiranje domene MX bo blokiralo prijave s poljubnega e-poštnega naslova, ki uporablja isto domeno MX, tudi če je vidno ime domene drugačno. Pazite, da ne blokirate večjih ponudnikov e-pošte. resolved_through_html: Razrešeno prek %{domain} title: Črni seznam e-pošt follow_recommendations: + description_html: "Sledi priporočilom pomaga novim uporabnikom, da hitro najdejo zanimivo vsebino. Če uporabnik ni dovolj komuniciral z drugimi, da bi oblikoval prilagojena priporočila za sledenje, se namesto tega priporočajo ti računi. Dnevno se ponovno izračunajo iz kombinacije računov z najvišjimi nedavnimi angažiranostmi in najvišjim številom krajevnih sledilcev za določen jezik." language: Za jezik status: Stanje + suppress: Zatri sledenje priporočilom + suppressed: Zatrto + title: Sledi priporočilom + unsuppress: Obnovi sledenje priporočilom instances: availability: + description_html: + few: Če dostava v domeno spodleti %{count} različne dni brez uspeha, ne bo nadaljnjih poskusov dostopa, razen če je prejeta dostava iz domene. + one: Če dostava v domeno spodleti %{count} dan brez uspeha, ne bo nadaljnjih poskusov dostopa, razen če je prejeta dostava iz domene. + other: Če dostava v domeno spodleti %{count} različne dni brez uspeha, ne bo nadaljnjih poskusov dostopa, razen če je prejeta dostava iz domene. + two: Če dostava v domeno spodleti %{count} različna dneva brez uspeha, ne bo nadaljnjih poskusov dostopa, razen če je prejeta dostava iz domene. failure_threshold_reached: Prag neuspelih poskusov dosežen %{date}. + failures_recorded: + few: Neuspeli poskusi %{count} različnih dni. + one: Neuspel poskus %{count} različen dan. + other: Neuspeli poskusi %{count} različnih dni. + two: Neuspeli poskusi %{count} različnih dni. no_failures_recorded: Ni zabeleženih neuspelih poskusov. title: Razpoložljivost + warning: Zadnji poskus povezave na ta strežnik je spodletel back_to_all: Vse back_to_limited: Omejeno back_to_warning: Opozorilo by_domain: Domena + confirm_purge: Ali ste prepričani, da želite trajno izbrisati podatke s te domene? content_policies: comment: Interna opomba description_html: Določite lahko pravila (t.i. politike), ki bodo veljale za vse račune te domene ter vseh njenih poddomen. policies: reject_media: Zavrni večpredstavnost - reject_reports: Zarvni poročila + reject_reports: Zavrni prijave silence: Omeji suspend: Suspendiraj policy: Pravila @@ -353,26 +536,38 @@ sl: instance_follows_measure: njihovih sledilcev tukaj instance_languages_dimension: Naj jeziki instance_media_attachments_measure: shranjenih predstavnostnih priponk - instance_reports_measure: poročil o njih + instance_reports_measure: prijav o njih instance_statuses_measure: shanjenih objav delivery: all: Vse clear: Počisti napake dostave + failing: Spodletuje + restart: Ponovno zaženi dostavo stop: Ustavi dostavo unavailable: Ni na voljo delivery_available: Na voljo je dostava + delivery_error_days: Dnevi napak pri dostavi + delivery_error_hint: Če dostava ni možna %{count} dni, bo samodejno označeno kot nedostavljivo. + destroyed_msg: Podatki iz %{domain} so zdaj v vrsti za takojšnje brisanje. + empty: Ni zadetkov med domenami. + known_accounts: + few: "%{count} znani računi" + one: "%{count} znan račun" + other: "%{count} znani računi" + two: "%{count} znana računa" moderation: all: Vse limited: Omejeno title: Moderiranje private_comment: Zasebni komentar public_comment: Javni komentar + purge: Očisti purge_description_html: Če menite, da je ta domena trajno nedosegljiva, lahko v svoji shrambi izbrišete vse zapise računov in povezane podatke iz te domene. To lahko vzame nekaj časa. title: Federacija total_blocked_by_us: Blokirano iz naše strani total_followed_by_them: Oni ti sledijo total_followed_by_us: Mi ti sledimo - total_reported: Poročila o njih + total_reported: Prijave o njih total_storage: Predstavnostne priloge totals_time_period_hint_html: Spodaj prikazani seštevki vključujejo podatke za celotno obdobje. invites: @@ -381,9 +576,11 @@ sl: all: Vse available: Razpoložljivo expired: Potekel + title: Filter title: Povabila ip_blocks: add_new: Ustvari pravilo + created_msg: Uspešno dodano novo pravilo IP delete: Izbriši expires_in: '1209600': 2 tedna @@ -394,36 +591,63 @@ sl: '94670856': 3 leta new: title: Ustvari novo pravilo IP + no_ip_block_selected: Nobeno pravilo IP ni bilo spremenjeno, ker nobeno ni bilo izbrano title: IP-pravila + relationships: + title: Odnosi računa %{acct} relays: add_new: Dodaj nov rele delete: Izbriši - description_html: "Rele federacije je posredniški strežnik, ki si izmenjuje velike količine javnih tutov med strežniki, ki so se naročili in objavili na njem. Majhnim in srednjim strežnikom lahko pomaga pri odkrivanju vsebine iz sistema fediverse, kar bi sicer zahtevalo, da lokalni uporabniki ročno sledijo druge osebe na oddaljenih strežnikih." + description_html: "Rele federacije je posredniški strežnik, ki si izmenjuje velike količine javnih objav med strežniki, ki so se naročili in objavili na njem. Majhnim in srednjim strežnikom lahko pomaga pri odkrivanju vsebine iz sistema fediverse, kar bi sicer zahtevalo, da lokalni uporabniki ročno sledijo druge osebe na oddaljenih strežnikih." disable: Onemogoči disabled: Onemogočeno enable: Omogoči - enable_hint: Ko je omogočen, se bo vaš strežnik naročil na vse javne tute iz tega releja in začel pošiljati javne tute tega strežnika. + enable_hint: Ko je omogočen, se bo vaš strežnik naročil na vse javne objave iz tega releja in začel pošiljati javne objave tega strežnika. enabled: Omogočeno inbox_url: URL releja pending: Čakanje na odobritev releja save_and_enable: Shrani in omogoči setup: Nastavi povezavo releja + signatures_not_enabled: Posredovanja ne bodo delovala pravilno, ko je omogočen varni način ali omejen način federacije status: Stanje title: Releji report_notes: created_msg: Opomba o prijavi je uspešno ustvarjena! destroyed_msg: Opomba o prijavi je uspešno izbrisana! + today_at: Danes ob %{time} reports: + account: + notes: + few: "%{count} opombe" + one: "%{count} opomba" + other: "%{count} opomb" + two: "%{count} opombi" + action_log: Revizijski zapisnik action_taken_by: Dejanje, ki ga je sprejel + actions: + delete_description_html: Prijavljene objave bodo izbrisane in ukrep bo zabeležen, da vam pomaga stopnjevati ukrepe ob naslednjih kršitvah z istega računa. + mark_as_sensitive_description_html: Mediji v prijavljenih objavah bodo označeni kot občutljivi in ukrep bo zabeležen, da vam pomaga stopnjevati ukrepe ob naslednjih kršitvah z istega računa. + other_description_html: Oglejte si več možnosti za nadzor vedenja računa in prilagodite komunikacijo s prijavljenim računom. + resolve_description_html: Proti prijavljenemu računu ne bo izvedeno nobeno dejanje, noben ukrep ne bo zabeležen in prijava bo zaprta. + silence_description_html: Profil bo viden samo tistim, ki mu že sledijo ali ga ročno poiščejo, s čimer bo resno omejen njegov doseg. To je vedno možno povrniti. + suspend_description_html: Profil in vsa njegova vsebina bodo postali nedosegljivi, dokler niso dokončno izbrisani. Interakcija z računom ne bo možna. Povrnitev je možna v času 30 dni. + actions_description_html: Odločite se, katere ukrepe boste sprejeli za rešitev te prijave. Če sprejmete kazenski ukrep proti prijavljenemu računu, mu bo poslano e-poštno obvestilo, razen če je izbrana kategorija Neželena pošta. + add_to_report: Dodaj več v prijavo are_you_sure: Ali ste prepričani? assign_to_self: Dodeli meni assigned: Dodeljen moderator + by_target_domain: Domena prijavljenega računa category: Kategorija + category_description_html: Razlog, zakaj je ta račun in/ali vsebina prijavljena, bo naveden v komunikaciji z računom iz prijave comment: none: Brez + comment_description_html: 'V pojasnilo je %{name} zapisal/a:' created_at: Prijavljeno delete_and_resolve: Izbriši objave + forwarded: Posredovano + forwarded_to: Posredovano na %{domain} mark_as_resolved: Označi kot rešeno + mark_as_sensitive: Označi, kot občutljivo mark_as_unresolved: Označi kot nerešeno no_one_assigned: Nihče notes: @@ -431,17 +655,22 @@ sl: create_and_resolve: Razreši z opombo create_and_unresolve: Ponovo odpri z opombo delete: Izbriši - placeholder: Opišite dejanja, ki ste jih izvedli, ali katere koli druge posodobitve... + placeholder: Opišite dejanja, ki ste jih izvedli, ali katere koli druge posodobitve ... title: Zapiski - quick_actions_description_html: 'Opravite hitro dejanje ali podrsajte navzdol, da si ogledate poročano vsebino:' + notes_description_html: Pokaži in pusti opombe drugim moderatorjem in sebi v prihodnosti + quick_actions_description_html: 'Opravite hitro dejanje ali podrsajte navzdol, da si ogledate prijavljeno vsebino:' + remote_user_placeholder: oddaljeni uporabnik iz %{instance} reopen: Ponovno odpri prijavo report: 'Prijavi #%{id}' reported_account: Prijavljeni račun - reported_by: Prijavljen od + reported_by: Prijavil/a resolved: Razrešeni resolved_msg: Prijava je uspešno razrešena! skip_to_actions: Preskoči na dejanja status: Stanje + statuses: Prijavljena vsebina + statuses_description_html: Žaljiva vsebina bo citirana v komunikaciji z računom iz prijave + target_origin: Izvor prijavljenega računa title: Prijave unassign: Odstopljeni unresolved: Nerešeni @@ -450,12 +679,13 @@ sl: rules: add_new: Dodaj pravilo delete: Izbriši + description_html: Večina trdi, da so prebrali in da se strinjajo s pogoji rabe storitve, vendar le-teh ponavadi ne preberejo, dokler ne pride do težav. Poenostavite in naredite pravila svojega strežnika vidna na prvi pogled tako, da jih izpišete v označenem seznamu.Posamezna pravila skušajte ohraniti kratka in enostavna, ne razbijajte pa jih v preveč različnih točk. edit: Uredi pravilo empty: Zaenkrat še ni opredeljenih pravil. title: Pravila strežnika settings: activity_api_enabled: - desc_html: Številke lokalno objavljenih stanj, aktivnih uporabnikov in novih registracij na tedenskih seznamih + desc_html: Številke lokalno objavljenih objav, aktivnih uporabnikov in novih registracij na tedenskih seznamih title: Objavi združeno statistiko o dejavnosti uporabnikov bootstrap_timeline_accounts: desc_html: Več uporabniških imen ločite z vejico. Deluje samo na lokalnih in odklenjenih računih. Privzeto, ko je prazno, je pri vseh lokalnih skrbnikih. @@ -466,6 +696,16 @@ sl: custom_css: desc_html: Spremeni videz z naloženim CSS na vsaki strani title: CSS po meri + default_noindex: + desc_html: Vpliva na vse uporabnike, ki niso sami spremenili te nastavitve + title: Privzeto izvzemi uporabnike iz indeksiranja iskalnika + domain_blocks: + all: Vsem + disabled: Nikomur + title: Domenske bloke pokaži + users: Prijavljenim krajevnim uporabnikom + domain_blocks_rationale: + title: Pokaži razlago hero: desc_html: Prikazano na sprednji strani. Priporoča se vsaj 600x100px. Ko ni nastavljen, se vrne na sličico strežnika title: Slika junaka @@ -491,6 +731,9 @@ sl: min_invite_role: disabled: Nihče title: Dovoli vabila od + require_invite_text: + desc_html: Če registracije zahtevajo ročno potrditev, nastavite vnos besedila pod »Zakaj se želite pridružiti?« za obveznega + title: Zahteva, da novi uprorabniki navedejo razlog, zakaj se želijo registrirati registrations_mode: modes: approved: Potrebna je odobritev za prijavo @@ -498,7 +741,7 @@ sl: open: Vsakdo se lahko prijavi title: Način registracije show_known_fediverse_at_about_page: - desc_html: Ko preklopite, bo prikazal tute vseh znanih fediverse-ov v predogledu. V nasprotnem primeru bodo prikazani samo lokalni tuti. + desc_html: Ko preklopite, bo prikazal objave vseh znanih fediverzumov v predogledu. V nasprotnem primeru bodo prikazane samo krajevne objave. title: Pokaži znane fediverse-e v predogledu časovnice show_staff_badge: desc_html: Prikaži značko osebja na uporabniški strani @@ -523,18 +766,54 @@ sl: desc_html: Prikaži javno časovnico na ciljni strani title: Predogled časovnice title: Nastavitve strani + trendable_by_default: + desc_html: Velja za ključnike, ki niso bili poprej onemogočeni + title: Dovoli, da so ključniki v trendu brez predhodnega pregleda trends: + desc_html: Javno prikaži poprej pregledano vsebino, ki je trenutno v trendu title: Trendi + site_uploads: + delete: Izbriši naloženo datoteko + destroyed_msg: Prenos na strežnik uspešno izbrisan! statuses: back_to_account: Nazaj na stran računa + back_to_report: Nazaj na stran prijave batch: - remove_from_report: Odstrani iz poročila + remove_from_report: Odstrani iz prijave + report: Poročaj deleted: Izbrisano media: title: Mediji - no_status_selected: Nobeno stanje ni bilo spremenjeno, ker ni bilo izbrano nobeno - title: Stanja računa + no_status_selected: Nobena objava ni bila spremenjena, ker ni bila nobena izbrana + title: Objave računa with_media: Z mediji + strikes: + actions: + delete_statuses: "%{name} je izbrisal/a objave uporabnika %{target}" + disable: "%{name} je zamrznil/a račun uporabnika %{target}" + mark_statuses_as_sensitive: "%{name} je označil/a objave računa %{target} kot občutljive" + none: "%{name} je poslal/a opozorilo %{target}" + sensitive: "%{name} je označil/a račun %{target} kot občutljiv" + silence: "%{name} je omejil/a račun uporabnika %{target}" + suspend: "%{name} je suspendiral/a račun uporabnika %{target}" + appeal_approved: Pritoženo + appeal_pending: Čakajoč na ugovor + system_checks: + database_schema_check: + message_html: Na čakanju so migracije zbirke podatkov. Prosimo, izvedite jih, da zagotovite, da se program vede pričakovano + elasticsearch_running_check: + message_html: Povezava z Elasticsearch ni uspela. Preverite, da deluje, ali onemogočite iskanje po vsem besedilu + elasticsearch_version_check: + message_html: 'Nezdružljiva različica Elasticsearch: %{value}' + version_comparison: Izvaja se Elasticsearch %{running_version}, zahtevana pa je različica %{required_version} + rules_check: + action: Upravljaj pravila strežnika + message_html: Nobenih pravil strežnika niste določili. + sidekiq_process_check: + message_html: Noben proces Sidekiq ne poteka za %{value} vrst. Preglejte svojo prilagoditev Sidekiq + tags: + review: Stanje pregleda + updated_msg: Nastavitve ključnikov uspešno posodobljene title: Upravljanje trends: allow: Dovoli @@ -542,21 +821,83 @@ sl: disallow: Ne dovoli links: allow: Dovoli povezavo + allow_provider: Dovoli izdajatelja + description_html: To so povezave, ki jih trenutno veliko delijo računi, iz katerih vaš strežnik vidi objave. Vašim uporabnikom lahko pomaga izvedeti, kaj se dogaja po svetu. Nobene povezave niso javno prikazane, dokler ne odobrite izdajatelja. Posamezne povezave lahko tudi dovolite ali zavrnete. + disallow: Ne dovoli povezave + disallow_provider: Ne dovoli izdajatelja + shared_by_over_week: + few: Delile %{count} osebe v zadnjem tednu + one: Delila %{count} oseba v zadnjem tednu + other: Delilo %{count} oseb v zadnjem tednu + two: Delili %{count} osebi v zadnjem tednu + title: Povezave v trendu + usage_comparison: Danes deljeno %{today}-krat, včeraj pa %{yesterday}-krat + only_allowed: Samo dovoljeni pending_review: Čakajoče na pregled + preview_card_providers: + allowed: Povezave tega izdajatelja so lahko v trendu + description_html: To so domene, iz katerih se povezave pogosto delijo na vašem strežniku. Povezave ne bodo javno objavljene, razen če je domena povezave odobrena. Vaša odobritev (ali zavrnitev) se nanaša na poddomene. + rejected: Povezave tega izdajatelja ne bodo v trendu + title: Izdajatelji + rejected: Zavrnjen + statuses: + allow: Dovoli objavo + allow_account: Dovoli avtorja + description_html: To so objave, za katere vaš strežnik ve, da so trenutno v skupni rabi in med priljubljenimi. Vašim novim uporabnikom in uporabnikom, ki se vračajo, lahko pomaga najti več oseb, ki jim bodo sledili. Nobena objava ni javno prikazana, dokler avtorja ne odobrite in avtor ne dovoli, da se njegov račun predlaga drugim. Posamezne objave lahko tudi dovolite ali zavrnete. + disallow: Ne dovoli objave + disallow_account: Ne dovoli avtorja + not_discoverable: Avtor ni dovolil, da bi ga bilo moč odkriti + shared_by: + few: Deljeno ali priljubljeno %{friendly_count}-krat + one: Deljeno ali priljubljeno %{friendly_count}-krat + other: Deljeno ali priljubljeno %{friendly_count}-krat + two: Deljeno ali priljubljeno %{friendly_count}-krat + title: Trendne objave tags: + current_score: Trenutni rezultat %{score} dashboard: + tag_accounts_measure: enkratnih uporab tag_languages_dimension: Naj jeziki tag_servers_dimension: Naj strežniki + tag_servers_measure: različnih strežnikov + tag_uses_measure: uporab skupaj + description_html: To so ključniki, ki se trenutno pojavljajo v številnih objavah, ki jih vidi vaš strežnik. Uporabnikom lahko pomaga ugotoviti, o čem ljudje trenutno največ govorijo. Noben ključnik ni javno prikazan, dokler ga ne odobrite. + listable: Je moč predlagati + not_listable: Ne bo predlagano + not_trendable: Se ne bo pojavilo med trendi + not_usable: Ni mogoče uporabiti + peaked_on_and_decaying: Vrh dne %{date}, zdaj v upadu + title: Ključniki v trendu + trendable: Se lahko pojavi med trendi + trending_rank: 'V trendu #%{rank}' + usable: Je moč uporabiti + usage_comparison: Danes uporabljeno %{today}-krat, včeraj pa %{yesterday}-krat + used_by_over_week: + few: Uporabile %{count} osebe v zadnjem tednu + one: Uporabila %{count} oseba v zadnjem tednu + other: Uporabilo %{count} oseb v zadnjem tednu + two: Uporabili %{count} osebi v zadnjem tednu title: Trendi + trending: V porastu warning_presets: add_new: Dodaj novo delete: Izbriši edit_preset: Uredi prednastavitev opozoril + empty: Zaenkrat še niste določili nobenih opozorilnih prednastavitev. title: Upravljaj prednastavitev opozoril admin_mailer: new_appeal: actions: + delete_statuses: brisanje njihovih objav, + disable: zamrznitev njihovega računa, + mark_statuses_as_sensitive: označitev njihovih objav kot občutljivih, none: opozorilo + sensitive: označitev njihovega računa kot občutljivega, + silence: omejitev njihovega računa, + suspend: suspenz njihovega računa, + body: "%{target} se pritožuje na moderatorsko odločitev %{action_taken_by} z dne %{date}, ki je bila %{type}. Zapisal/a je:" + next_steps: Pritožbi lahko ugodite in s tem razveljavite moderatorsko odločitev ali pa jo prezrete. + subject: "%{username} se je pritožil na moderatorsko odločitev na %{instance}" new_pending_account: body: Podrobnosti o novem računu so navedene spodaj. To aplikacijo lahko odobrite ali zavrnete. subject: Nov račun za pregled na %{instance} (%{username}) @@ -564,22 +905,47 @@ sl: body: "%{reporter} je prijavil %{target}" body_remote: Nekdo iz %{domain} je prijavil %{target} subject: Nove prijave za %{instance} (#%{id}) + new_trends: + body: 'Naslednji elementi potrebujejo pregled, preden jih je možno javno prikazati:' + new_trending_links: + no_approved_links: Trenutno ni odobrenih povezav v trendu. + requirements: Vsak od teh kandidatov bi lahko presegel odobreno povezavo v trendu št. %{rank}, ki je trenutno %{lowest_link_title} z rezultatom %{lowest_link_score}. + title: Povezave v trendu + new_trending_statuses: + no_approved_statuses: Trenutno ni odobrenih objav v trendu. + requirements: Vsak od teh kandidatov bi lahko presegel odobreno trendno objavo št. %{rank}, ki je trenutno %{lowest_status_url} z rezultatom %{lowest_status_score}. + title: Trendne objave + new_trending_tags: + no_approved_tags: Trenutno ni odobrenih ključnikov v trendu. + requirements: Vsak od teh kandidatov bi lahko presegel odobreni ključnik v trendu št. %{rank}, ki je trenutno %{lowest_tag_name} z rezultatom %{lowest_tag_score}. + title: Ključniki v trendu + subject: Novi trendi za pregled na %{instance} + aliases: + add_new: Ustvari vzdevek + created_msg: Uspešno ustvarjen novi vzdevek. Zdaj lahko pričnete s selitvijo s starega računa. + deleted_msg: Uspešno odstranjen vzdevek. Selitev iz tistega računa na tega ne bo več možna. + empty: Nimate vzdevkov. + hint_html: Če se želite preseliti iz drugega računa v tega, lahko tukaj ustvarite vzdevek, ki je potreben, preden lahko nadaljujete s selitvijo sledilcev iz starega računa v tega. To dejanje je samo po sebi neškodljivo in povratno. Selitev računa sprožite iz starega računa. + remove: Razveži vzdevek appearance: advanced_web_interface: Napredni spletni vmesnik advanced_web_interface_hint: 'Če želite uporabiti celotno širino zaslona, vam napredni spletni vmesnik omogoča, da si nastavite več različnih stolpcev in da si hkrati ogledate toliko informacij, kot želite: domačo stran, obvestila, združeno časovnico, poljubno število seznamov in ključnikov.' animations_and_accessibility: Animacije in dostopnost confirmation_dialogs: Potrditvena okna + discovery: Odkrito localization: body: Mastodon prevajamo prostovoljci. guide_link: https://crowdin.com/project/mastodon guide_link_text: Vsakdo lahko prispeva. sensitive_content: Občutljiva vsebina + toot_layout: Postavitev objave application_mailer: notification_preferences: Spremenite e-poštne nastavitve + salutation: "%{name}," settings: 'Spremenite e-poštne nastavitve: %{link}' view: 'Pogled:' view_profile: Ogled profila - view_status: Ogled stanja + view_status: Pokaži objavo applications: created: Aplikacija je bila uspešno ustvarjena destroyed: Aplikacija je bila uspešno izbrisana @@ -595,9 +961,16 @@ sl: checkbox_agreement_without_rules_html: Strinjam se s pogoji storitve delete_account: Izbriši račun delete_account_html: Če želite izbrisati svoj račun, lahko nadaljujete tukaj. Prosili vas bomo za potrditev. + description: + prefix_invited_by_user: "@%{name} vas vabi, da se pridružite temu strežniku Mastodon!" + prefix_sign_up: Še danes se priključite Mastodonu! + suffix: Z računom boste lahko sledili osebam, objavljali posodobitve in izmenjevali sporočila z uporabniki s poljubnega strežnika Mastodon in še veliko več! didnt_get_confirmation: Niste prejeli navodil za potrditev? + dont_have_your_security_key: Ali imate svoj varnostni ključ? forgot_password: Ste pozabili svoje geslo? invalid_reset_password_token: Žeton za ponastavitev gesla je neveljaven ali je potekel. Zahtevajte novo. + link_to_otp: Vnesite dvofaktorsko kodo s svojega telefona ali obnovitveno kodo + link_to_webauth: Vnesite svojo napravo za varnostni ključ log_in_with: Prijavi se s login: Prijava logout: Odjava @@ -622,10 +995,14 @@ sl: confirming: Čakanje na potrditev e-pošte. functional: Vaš račun je polno opravilen. pending: Naše osebje preverja vašo prijavo. To lahko traja nekaj časa. Če bo vaša prijava odobrena, boste prejeli e-pošto. + redirecting_to: Vaš račun ni dejaven, ker trenutno preusmerja na račun %{acct}. + view_strikes: Pokaži pretekle ukrepe proti mojemu računu + too_fast: Obrazec oddan prehitro, poskusite znova. trouble_logging_in: Težave pri prijavi? use_security_key: Uporabi varnostni ključ authorize_follow: already_following: Temu računu že sledite + already_requested: Temu računu ste že poslali zahtevo po sledenju error: Na žalost je prišlo do napake pri iskanju oddaljenega računa follow: Sledi follow_request: 'Prošnjo za sledenje se poslali:' @@ -637,32 +1014,87 @@ sl: title: Sledi %{acct} challenge: confirm: Nadaljuj + hint_html: "Namig: naslednjo uro vas ne bomo več vprašali po vašem geslu." invalid_password: Neveljavno geslo prompt: Potrdite geslo za nadaljevanje + crypto: + errors: + invalid_key: ni veljaven ključ Ed25519 ali Curve25519 + invalid_signature: ni veljaven podpis Ed25519 + date: + formats: + default: "%d %b %Y" + with_month_name: "%B %d %Y" datetime: distance_in_words: + about_x_hours: "%{count} u" + about_x_months: "%{count} m" + about_x_years: "%{count} l" + almost_x_years: "%{count} l" half_a_minute: Pravkar + less_than_x_minutes: "%{count} min" less_than_x_seconds: Pravkar + over_x_years: "%{count} l" + x_days: "%{count} d" + x_minutes: "%{count} min" + x_months: "%{count} m" + x_seconds: "%{count} s" deletes: + challenge_not_passed: Podatki, ki ste jih vnesli, niso pravilni confirm_password: Vnesite svoje trenutno geslo, da potrdite svojo identiteto confirm_username: Vnesite svoje uporabniško ime, da potrdite postopek proceed: Izbriši račun success_msg: Vaš račun je bil uspešno izbrisan + warning: + before: 'Pred nadaljevanjem previdno preberite naslednje opombe:' + caches: Vsebina, ki jo medpomnijo drugi strežniki, lahko vztraja + data_removal: Vaše objave in drugi podatki bodo trajno odstranjeni + email_change_html: Svoj e-naslov lahko spremenite brez izbrisa svojega računa + email_contact_html: Če še vedno ni dostavljeno, lahko za pomoč pošljete e-sporočilo na naslov %{email} + email_reconfirmation_html: Če niste prejeli potrditvenega e-sporočila, lahko znova zaprosite zanj + irreversible: Vašega računa ne boste mogli obnoviti ali ponovno aktivirati + more_details_html: Za podrobnosti glejte politiko zasebnosti. + username_available: Vaše uporabniško ime bo znova na voljo + username_unavailable: Vaše uporabniško ime še vedno ne bo na voljo directories: directory: Imenik profilov explanation: Odkrijte uporabnike glede na njihove interese explore_mastodon: Razišči %{title} disputes: strikes: + action_taken: Izvedeno dejanje + appeal: Pritoži se + appeal_approved: Pritožba na ukrep je bila uspešna in ukrep ni več veljaven + appeal_rejected: Pritožba je bila zavržena + appeal_submitted_at: Pritožba oddana + appealed_msg: Vaša pritožba je oddana. Če bo odobrena, boste o tem obveščeni. + appeals: + submit: Pošlji pritožbo + associated_report: Povezana prijava + created_at: Datum + description_html: To so dejanja, izvedena proti vašemu računu ter opozorila, ki so vam jih poslali sodelavci %{instance}. + recipient: Naslovljeno na + status: 'Objava #%{id}' + status_removed: Objava je že odstranjena iz sistema + title: "%{action} dne %{date}" title_actions: delete_statuses: Odstranitev objave + disable: Zamrznitev računa + mark_statuses_as_sensitive: Označevanje objav kot občutljivih none: Opozorilo + sensitive: Označevanj računa kot občutljivega silence: Omejitev računa + suspend: Suspenz računa + your_appeal_approved: Vaša pritožba je bila odobrena + your_appeal_pending: Oddali ste pritožbo + your_appeal_rejected: Vaša pritožba je bila zavržena + domain_validator: + invalid_domain: ni veljavno ime domene errors: - '400': The request you submitted was invalid or malformed. + '400': Zahteva, ki ste jo oddali, je neveljavna ali nepravilno oblikovana. '403': Nimate dovoljenja za ogled te strani. '404': Iskana stran ne obstaja. - '406': This page is not available in the requested format. + '406': Ta stran ni na voljo v zahtevani obliki. '410': Iskana stran ne obstaja več. '422': content: Varnostno preverjanje ni uspelo. Ali blokirate piškotke? @@ -671,7 +1103,7 @@ sl: '500': content: Žal nam je, toda na našem koncu je prišlo do napake. title: Ta stran ni pravilna - '503': The page could not be served due to a temporary server failure. + '503': Strani ni mogoče postreči zaradi začasne odpovedi strežnika. noscript_html: Če želite uporabljati spletno aplikacijo Mastodon, omogočite JavaScript. Druga možnost je, da za svojo platformo poskusite eno od lastnih aplikacij za Mastodon. existing_username_validator: not_found: s tem uporabniškim imenom ni bilo mogoče najti lokalnega uporabnika @@ -680,12 +1112,13 @@ sl: archive_takeout: date: Datum download: Prenesi svoj arhiv - hint_html: Zahtevate lahko arhiv vaših tutov in naloženih medijev. Izvoženi podatki bodo v formatu ActivityPub, ki ga bo mogoče brati s katerokoli skladno programsko opremo. Arhiv lahko zahtevate vsakih 7 dni. + hint_html: Zahtevate lahko arhiv vaših objav in naloženih medijev. Izvoženi podatki bodo v zapisu ActivityPub, ki ga bo mogoče brati s poljubno skladno programsko opremo. Arhiv lahko zahtevate vsakih 7 dni. in_progress: Prevajanje arhiva... request: Zahtevajte svoj arhiv size: Velikost blocks: Blokirate bookmarks: Zaznamki + csv: CSV domain_blocks: Bloki domene lists: Seznami mutes: Utišate @@ -694,6 +1127,7 @@ sl: add_new: Dodaj novo errors: limit: Ste že dodali največje število ključnikov + hint_html: "Kaj so izpostavljeni ključniki? Prikazani so vidno na vašem javnem profilu in ljudem omogočajo brskanje po vaših javnih objavah posebej pod temi ključniki. So odlično orodje za spremljanje ustvarjalnih del ali dolgoročnih projektov." filters: contexts: account: Profili @@ -708,6 +1142,7 @@ sl: invalid_irreversible: Nepovratno filtriranje deluje le v kontekstu doma ali obvestil index: delete: Izbriši + empty: Nimate filtrov. title: Filtri new: title: Dodaj nov filter @@ -733,6 +1168,8 @@ sl: html_validator: invalid_markup: 'vsebuje neveljavno oznako HTML: %{error}' imports: + errors: + over_rows_processing_limit: vsebuje več kot %{count} vrstic modes: merge: Združi merge_long: Ohrani obstoječe zapise in dodaj nove @@ -777,18 +1214,61 @@ sl: limit: Dosegli ste največje število seznamov login_activities: authentication_methods: + otp: aplikacija za dvoravenjsko overjanje password: geslo + sign_in_token: varnostna koda po e-pošti webauthn: varnostni ključi + description_html: Če opazite dejavnost, ki je ne prepoznate kot svoje, razmislite o spremembi svojega gesla in omogočanju dvoravenskega overjanja. + empty: Zgodovina overjanja ni na voljo + failed_sign_in_html: Spodletela prijava z metodo %{method} iz %{ip} (%{browser}) + successful_sign_in_html: Uspešna prijava z metodo %{method} iz %{ip} (%{browser}) + title: Zgodovina overjanja media_attachments: validations: - images_and_video: Videoposnetka ni mogoče priložiti stanju, ki že vsebuje slike + images_and_video: Videoposnetka ni mogoče priložiti objavi, ki že vsebuje slike + not_ready: Datotek, katerih obdelava ni dokončana, ni mogoče pripeti. Poskusite znova kmalu! too_many: Ni možno priložiti več kot 4 datoteke migrations: acct: username@domain novega računa + cancel: Prekliči preusmeritev + cancel_explanation: Preklic preusmeritve ponovno aktivira vaš trenutni račun, vendar ne povrne sledilcev, ki so bili preseljeni na tisti račun. + cancelled_msg: Preusmeritev je bila uspešno preklicana. + errors: + already_moved: je isti račun, na katerega ste se že preselili + missing_also_known_as: ni vzdevek za ta račun + move_to_self: ne more biti trenutni račun + not_found: ni mogoče najti + on_cooldown: Ste na ohlajanju + followers_count: Sledilcev ob času selitve + incoming_migrations: Selitev iz drugega računa + incoming_migrations_html: Če se želite preseliti iz drugega računa na tega, morate najprej ustvariti vzdevek računa. + moved_msg: Vaš račun se zdaj preusmerja na %{acct} in vaši sledilci so preseljeni. + not_redirecting: Vaš račun trenutno ne preusmerja na noben drug račun. + on_cooldown: Nedavno ste migrirali svoj račun. Funkcija bo znova na voljo čez %{count} dni. + past_migrations: Pretekle migracije proceed_with_move: Premakni sledilce + redirected_msg: Vaš račun se zdaj preusmerja na %{acct}. + redirecting_to: Vaš račun se preusmerja na %{acct}. + set_redirect: Nastavi preusmeritev + warning: + backreference_required: Novi račun je potrebno najprej prilagoditi, da se bo skliceval nazaj na tega + before: 'Pred nadaljevanjem previdno preberite naslednje opombe:' + cooldown: Po selitvi sledi čakalna doba, v kateri računa ne boste mogli ponovno seliti + disabled_account: Vaš trenutni račun zatem ne bo polno uporaben. Vendar pa boste imeli dostop do izvoza podatkov kot tudi do ponovne aktivacije. + followers: S tem dejanjem boste preselili vse sledilce iz trenutnega računa na novi račun + only_redirect_html: Namesto tega lahko na svojem profilu zgolj vzpostavite preusmeritev. + other_data: Nobeni drugi podatki se ne bodo preselili samodejno + redirect: Profil vašega trenutnega računa bo posodobljen z obvestilom o preusmeritvi in bo izključen iz iskanj moderation: title: Moderiranje + move_handler: + carry_blocks_over_text: Ta uporabnik se je preselil iz računa %{acct}, ki ste ga blokirali. + carry_mutes_over_text: Ta uporabnik se je preselil iz računa %{acct}, ki ste ga utišali. + copy_account_note_text: 'Ta uporabnik se je preselil iz %{acct}, tukaj so vaše poprejšnje opombe o njem:' notification_mailer: + admin: + sign_up: + subject: "%{name} se je vpisal/a" digest: action: Prikaži vsa obvestila body: Tukaj je kratek povzetek sporočil, ki ste jih zamudili od vašega zadnjega obiska v %{since} @@ -798,10 +1278,15 @@ sl: one: Prav tako ste pridobili enega novega sledilca, ko ste bili odsotni! Juhu! other: Prav tako ste pridobili %{count} novih sledilcev, ko ste bili odsotni! Juhu! two: Prav tako ste pridobili %{count} nova sledilca, ko ste bili odsotni! Juhu! + subject: + few: "%{count} nova obvestila od vašega zadnjega obiska 🐘" + one: "%{count} novo obvestilo od vašega zadnjega obiska 🐘" + other: "%{count} novih obvestil od vašega zadnjega obiska 🐘" + two: "%{count} novi obvestili od vašega zadnjega obiska 🐘" title: V vaši odsotnosti... favourite: - body: "%{name} je vzljubil/a vaše stanje:" - subject: "%{name} je vzljubil/a vaše stanje" + body: "%{name} je vzljubil/a vašo objavo:" + subject: "%{name} je vzljubil/a vašo objavo" title: Novo priljubljeno follow: body: "%{name} vam sedaj sledi!" @@ -817,19 +1302,44 @@ sl: body: "%{name} vas je omenil/a v:" subject: "%{name} vas je omenil/a" title: Nova omemba + poll: + subject: Anketa, ki jo je pripravil/a %{name}, se je iztekla reblog: - body: "%{name} je spodbudil/a vaše stanje:" - subject: "%{name} je spodbudil/a vaše stanje" - title: Nova spodbuda + body: 'Vašo objavo je izpostavil/a %{name}:' + subject: "%{name} je izpostavil/a vašo objavo" + title: Nova izpostavitev + status: + subject: "%{name} je pravkar objavil/a" update: subject: "%{name} je uredil(a) objavo" + notifications: + email_events: Dogodki za e-obvestila + email_events_hint: 'Izberite dogodke, za katere želite prejmati obvestila:' + other_settings: Druge nastavitve obvestil + number: + human: + decimal_units: + format: "%n %u" + units: + billion: B + million: M + quadrillion: Q + thousand: K + trillion: T otp_authentication: + code_hint: Za potrditev vnesite kodo, ki jo je ustvarila aplikacija za preverjanje pristnosti + description_html: Če omogočite dvofaktorsko preverjanje pristnosti z aplikacijo za overjanje, boste za prijavo morali imeti pri sebi svoj telefon, s katerim boste ustvarili žetone za vstop. enable: Omogoči + instructions_html: "Skenirajte to QR-kodo z Google Authenticator ali s podobno aplikacijo TOTP na vašem telefnu. Od zdaj naprej bo ta aplikacija ustvarjala žetone, ki jih boste morali vnesti ob prijavi." + manual_instructions: 'Če ne morete skenirati QR-kode in jo morate vnesti ročno, je tu skrivnost v tekstovni obliki:' + setup: Vzpostavi + wrong_code: Vnesena koda je neveljavna! Ali sta čas strežnika in čas naprave pravilna? pagination: newer: Novejše next: Naprej older: Starejše prev: Nazaj + truncate: "…" polls: errors: already_voted: Na tej anketi ste že glasovali @@ -837,6 +1347,7 @@ sl: duration_too_long: je predaleč v prihodnosti duration_too_short: je prezgodaj expired: Glasovanje se je že zaključilo + invalid_choice: Izbrana možnost glasovanja ne obstaja over_character_limit: ne more biti daljše od %{max} znakov too_few_options: mora imeti več kot en element too_many_options: ne more vsebovati več kot %{max} elementov @@ -844,10 +1355,17 @@ sl: other: Ostalo posting_defaults: Privzete nastavitev objavljanja public_timelines: Javne časovnice + reactions: + errors: + limit_reached: Dosežena omejitev različnih reakcij/odzivov + unrecognized_emoji: ni prepoznan emotikon relationships: activity: Dejavnost računa dormant: Skrit follow_selected_followers: Sledi izbranim sledilcem + followers: Sledilci + following: Sledi + invited: Vabljeni last_active: Zadnja dejavnost most_recent: Najnovejša moved: Prestavljeno @@ -868,19 +1386,19 @@ sl: remote_interaction: favourite: proceed: Nadaljuj s priljubljenim - prompt: 'Ali želite vzljubiti ta tut:' + prompt: 'Želite vzljubiti to objavo:' reblog: - proceed: Nadaljuj s spodbudo - prompt: 'Ali želite spodbuditi ta tut:' + proceed: Nadaljuj s izpostavljanjem + prompt: 'Želite izpostaviti to objavo:' reply: proceed: Nadaljuj z odgovorom - prompt: 'Ali želite odgovoriti na ta tut:' + prompt: 'Želite odgovoriti na to objavo:' reports: errors: invalid_rules: se ne sklicuje na veljavna pravila scheduled_statuses: - over_daily_limit: Za ta dan ste presegli omejitev %{limit} načrtovanih tutov - over_total_limit: Presegli ste omejitev %{limit} načrtovanih tutov + over_daily_limit: Za ta dan ste presegli omejitev %{limit} načrtovanih objav + over_total_limit: Presegli ste omejitev %{limit} načrtovanih objav too_soon: Načrtovani datum mora biti v prihodnosti sessions: activity: Zadnja dejavnost @@ -923,6 +1441,7 @@ sl: revoke: Prekliči revoke_success: Seja je bila uspešno preklicana title: Seje + view_authentication_history: Oglejte si zgodovino overjanja za vaš račun settings: account: Račun account_settings: Nastavitve računa @@ -942,10 +1461,17 @@ sl: preferences: Nastavitve profile: Profil relationships: Sledenja in sledilci + statuses_cleanup: Samodejno brisanje objav + strikes: Ukrepi morediranja two_factor_authentication: Dvofaktorsko overjanje webauthn_authentication: Varnostni ključi statuses: attached: + audio: + few: "%{count} zvočni posnetki" + one: "%{count} zvočni posnetek" + other: "%{count} zvočnih posnetkov" + two: "%{count} zvočna posnetka" description: 'Priloženo: %{attached}' image: few: "%{count} slike" @@ -957,21 +1483,30 @@ sl: one: "%{count} video posnetek" other: "%{count} video posnetkov" two: "%{count} video posnetka" - boosted_from_html: Spodbujeno iz %{acct_link} + boosted_from_html: Izpostavljeno z računa %{acct_link} content_warning: 'Opozorilo o vsebini: %{warning}' + default_language: Enak kot jezik vmesnika disallowed_hashtags: few: 'vsebuje nedovoljene ključnike: %{tags}' one: 'vsebuje nedovoljeni ključnik: %{tags}' other: 'vsebuje nedovoljenih ključnikov: %{tags}' two: 'vsebuje nedovoljena ključnika: %{tags}' edited_at_html: Urejeno %{date} + errors: + in_reply_not_found: Objava, na katero želite odgovoriti, ne obstaja. open_in_web: Odpri na spletu over_character_limit: omejitev %{max} znakov je presežena pin_errors: - limit: Pripeli ste največje število tutov - ownership: Trob nekoga drugega ne more biti pripet - reblog: Spodbuda ne more biti pripeta + direct: Objav, ki so vidne samo omenjenum uporabnikom, ni mogoče pripenjati + limit: Pripeli ste največje število objav + ownership: Objava nekoga drugega ne more biti pripeta + reblog: Izpostavitev ne more biti pripeta poll: + total_people: + few: "%{count} osebe" + one: "%{count} Oseba" + other: "%{count} oseb" + two: "%{count} osebi" total_votes: few: "%{count} glasovi" one: "%{count} glas" @@ -983,7 +1518,9 @@ sl: show_older: Pokaži starejše show_thread: Pokaži nit sign_in_to_participate: Prijavite se, če želite sodelovati v pogovoru + title: "%{name}: »%{quote}«" visibilities: + direct: Neposredno private: Samo sledilci private_long: Prikaži samo sledilcem public: Javno @@ -991,22 +1528,46 @@ sl: unlisted: Ni prikazano unlisted_long: Vsi lahko vidijo, vendar ni objavljeno na javnih časovnicah statuses_cleanup: + enabled: Samodejno izbriši stare objave + enabled_hint: Samodejno izbriše vaše objave, ko dosežejo določen starostni prag, razen če ne ustrezajo eni od spodnjih izjem + exceptions: Izjeme + explanation: Ker je brisanje objav draga operacija, se to postopoma izvaja počasi, ko strežnik sicer ni zaseden. Zaradi tega se lahko vaše objave izbrišejo nekaj časa po tem, ko dosežejo starostni prag. + ignore_favs: Prezri priljubljene + ignore_reblogs: Prezri izpostavitve + interaction_exceptions: Izjeme na osnovi interakcije + interaction_exceptions_explanation: Upoštevajte, da ni nobene garancije za objave, ki bodo izbrisane, če padejo pod prag priljubljenosti ali izpostavljenosti, ko so ga že enkrat presegle. + keep_direct: Ohrani neposredna sporočila + keep_direct_hint: Ne izbriše nobenega izmed vaših neposrednih sporočil + keep_media: Ohrani objave z medijskimi priponkami + keep_media_hint: Ne izbriše nobene vaših objav, ki imajo medijske priponke + keep_pinned: Ohrani pripete objave + keep_pinned_hint: Ne izbriše nobene od vaših pripetih objav keep_polls: Ohrani ankete keep_polls_hint: Ne izbriše vaših anket + keep_self_bookmark: Ohrani objave z zaznamki + keep_self_bookmark_hint: Ne izbriše vaših lastnih objav, če ste jih postavili med zaznamke + keep_self_fav: Ohrani priljubljene objave + keep_self_fav_hint: Ne izbriše vaših lastnih objav, če ste jih postavili med priljubljene min_age: '1209600': 2 tedna '15778476': 6 mesecev '2629746': 1 mesec '31556952': 1 leto '5259492': 2 meseca - '604800': 1 week + '604800': 1 teden '63113904': 2 leti '7889238': 3 mesece min_age_label: Starostna meja + min_favs: Obrži objave priljubljene vsaj + min_favs_hint: Ne izbriše nobene od vaših objav, ki je prejela vsaj takšno količino priljubljenih. Pustite prazno, če želite izbrisati objave ne glede na število všečkov + min_reblogs: Obdrži objave izpostavljene vsaj + min_reblogs_hint: Ne izbriše nobene od vaših objav, ki je bila vsaj tolikokrat podprta. Pustite prazno, če želite izbrisati objave ne glede na število izpostavitev stream_entries: - pinned: Pripet trob - reblogged: spodbujen + pinned: Pripeta objava + reblogged: izpostavljeno sensitive_content: Občutljiva vsebina + tags: + does_not_match_previous_name: se ne ujema s prejšnjim imenom terms: body_html: |

Pravilnik o zasebnosti

@@ -1094,34 +1655,76 @@ sl: contrast: Mastodon (Visok kontrast) default: Mastodon (Temna) mastodon-light: Mastodon (Svetla) + time: + formats: + default: "%b %d %Y, %H:%M" + month: "%b %Y" + time: "%H:%M" two_factor_authentication: add: Dodaj disable: Onemogoči + disabled_success: Dvofaktorsko preverjanje pristnosti je uspešno onemogočeno edit: Uredi enabled: Dvofaktorsko preverjanje pristnosti je omogočeno enabled_success: Dvofaktorsko preverjanje pristnosti je uspešno omogočeno generate_recovery_codes: Ustvari kode za obnovitev lost_recovery_codes: Obnovitvene kode vam omogočajo, da ponovno pridobite dostop do svojega računa, če izgubite telefon. Če ste izgubili obnovitvene kode, jih lahko obnovite tukaj. Vaše stare obnovitvene kode bodo neveljavne. + methods: Dvofaktorske metode + otp: Avtentikacijska aplikacija recovery_codes: Varnostna kopija obnovitvenih kod recovery_codes_regenerated: Obnovitvene kode so bile uspešno regenerirane recovery_instructions_html: Če kdaj izgubite dostop do telefona, lahko uporabite eno od spodnjih obnovitvenih kod, da ponovno pridobite dostop do svojega računa. Shranite obnovitvene kode. Lahko jih natisnete in shranite z drugimi pomembnimi dokumenti. webauthn: Varnostni ključi user_mailer: + appeal_approved: + action: Pojdite na svoj račun + explanation: Pritožbi na ukrep proti vašemu računu z dne %{strike_date}, ki ste jo oddali dne %{appeal_date}, je bilo ugodeno. Vaš račun je znova nesporen. + subject: Vaši pritožbi z dne %{date} je bilo ugodeno + title: Pritožbi ugodeno + appeal_rejected: + explanation: Pritožba na ukrep proti vašemu računu z dne %{strike_date}, ki ste jo oddali dne %{appeal_date}, je bila zavrnjena. + subject: Vaša pritožba z dne %{date} je bila zavrnjena + title: Pritožba zavrnjena backup_ready: explanation: Zahtevali ste popolno varnostno kopijo računa Mastodon. Zdaj je pripravljen za prenos! subject: Vaš arhiv je pripravljen za prenos title: Prevzem arhiva + suspicious_sign_in: + change_password: spremenite svoje geslo + details: 'Tukaj so podrobnosti prijave:' + explanation: Zaznali smo prijavo v vaš račun z novega naslova IP. + further_actions_html: Če to niste bili vi, priporočamo da takoj ukrepate (%{action}) in omogočite dvo-ravensko overjanje (2FA), da ohranite račun varen. + subject: Do vašega računa je bil opravljen dostop z novega naslova IP + title: Nova prijava warning: + appeal: Pošlji pritožbo + appeal_description: Če menite, da gre za napako, lahko pošljete pritožbo osebju %{instance}. + categories: + spam: Neželeno + violation: Vsebina krši naslednja navodila skupnosti + explanation: + delete_statuses: Za nekatere vaših objav se je izkazalo, da kršijo eno ali več pravil skupnosti, zato so jih moderatorji %{instance} posledično odstranili. + disable: Svojega računa ne morete več uporabljati, vendar vaš profil in drugi podatki ostajajo nedotaknjeni. Zahtevate lahko varnostno kopiranje svojih podatkov, spremenite nastavitve računa ali izbrišete svoj račun. + mark_statuses_as_sensitive: Nekatere vaše objave so moderatorji %{instance} označili kot občutljive. To pomeni, da se bodo morale osebe dotakniti medijskih vsebin v objavah, preden se prikaže predogled. Med objavljanjem v prihodnosti lahko sami označite medijske vsebine kot občutljive. + sensitive: Odslej bodo vse vaše naložene medijske datoteke označene kot občutljive in skrite za opozorilom, ki ga je potrebno klikniti. + silence: Še vedno lahko uporabljate svoj račun, vendar bodo samo osebe, ki vas že spremljajo, videle vaše objave na tem strežniku in morda boste izključeni iz različnih funkcij odkrivanja. Vendar vam lahko drugi še vedno ročno sledijo. + suspend: Ne morete več uporabljati svojega računa, vaš profil in drugi podatki pa niso več dostopni. Še vedno se lahko prijavite in zahtevate varnostno kopijo svojih podatkov, dokler podatki niso v celoti odstranjeni v približno 30 dneh, vendar bomo ohranili nekaj osnovnih podatkov, da preprečimo, da bi se izognili suspenzu. reason: 'Razlog:' + statuses: 'Citirane objave:' subject: + delete_statuses: Vaše objave na %{acct} so bile odstranjene disable: Vaš račun %{acct} je zamrznjen + mark_statuses_as_sensitive: Vaše objave na računu %{acct} so bile označene kot občutljive none: Opozorila za %{acct} + sensitive: Vaše objave na računu %{acct} bodo odslej označene kot občutljive silence: Vaš račun %{acct} je omejen suspend: Vaš račun %{acct} je suspendiran title: delete_statuses: Objave odstranjene disable: Račun je zamrznjen + mark_statuses_as_sensitive: Objave, označene kot občuljive none: Opozorilo + sensitive: Račun je označen kot občutljiv silence: Račun je omejen suspend: Račun je suspendiran welcome: @@ -1153,10 +1756,17 @@ sl: webauthn_credentials: add: Dodaj nov varnostni ključ create: + error: Pri dodajanju vašega varnostnega ključa je prišlo do težav. Poskusite znova. success: Vaš varnostni ključ je bil uspešno dodan. delete: Izbriši delete_confirmation: Ali ste prepričani, da želite izbrisati ta varnostni ključ? + description_html: Če omogočite overjanje z varnostnim ključem, boste morali ob prijavi uporabiti enega od svojih varnostnih ključev. destroy: + error: Pri brisanju vašega varnostnega ključa je prišlo do težav. Poskusite znova. success: Vaš varnostni ključ je bil uspešno izbrisan. invalid_credential: Neveljaven varnostni ključ + nickname_hint: Vnesite vzdevek svojega novega varnostnega ključa + not_enabled: Niste še omogočili WebAuthn not_supported: Ta brskalnik ne podpira varnostnih ključev + otp_required: Za uporabo varnostnih ključev morate najprej omogočiti 2FA (dvostopenjsko overjanje). + registered_on: Datum registracije %{date} diff --git a/config/locales/th.yml b/config/locales/th.yml index 5fb25d2db..cee5cecfb 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -406,7 +406,7 @@ th: undo: ไม่อนุญาตการติดต่อกับภายนอกกับโดเมน domain_blocks: add_new: เพิ่มการปิดกั้นโดเมนใหม่ - created_msg: กำลังประมวลผลการปิดกั้นโดเมน + created_msg: ตอนนี้กำลังประมวลผลการปิดกั้นโดเมน destroyed_msg: เลิกทำการปิดกั้นโดเมนแล้ว domain: โดเมน edit: แก้ไขการปิดกั้นโดเมน @@ -578,6 +578,7 @@ th: create_and_unresolve: เปิดใหม่โดยมีหมายเหตุ delete: ลบ title: หมายเหตุ + quick_actions_description_html: 'ดำเนินการอย่างรวดเร็วหรือเลื่อนลงเพื่อดูเนื้อหาที่รายงาน:' remote_user_placeholder: ผู้ใช้ระยะไกลจาก %{instance} reopen: เปิดรายงานใหม่ report: 'รายงาน #%{id}' @@ -652,7 +653,7 @@ th: title: ต้องให้ผู้ใช้ใหม่ป้อนเหตุผลที่จะเข้าร่วม registrations_mode: modes: - approved: ต้องมีการอนุมัติสำหรับการลงทะเบียน + approved: ต้องการการอนุมัติสำหรับการลงทะเบียน none: ไม่มีใครสามารถลงทะเบียน open: ใครก็ตามสามารถลงทะเบียน title: โหมดการลงทะเบียน @@ -738,6 +739,7 @@ th: other: แบ่งปันโดย %{count} คนในช่วงสัปดาห์ที่ผ่านมา title: ลิงก์ที่กำลังนิยม usage_comparison: แบ่งปัน %{today} ครั้งวันนี้ เทียบกับ %{yesterday} เมื่อวานนี้ + only_allowed: อนุญาตเท่านั้น pending_review: การตรวจทานที่รอดำเนินการ preview_card_providers: allowed: ลิงก์จากผู้เผยแพร่นี้สามารถขึ้นแนวโน้ม @@ -773,6 +775,7 @@ th: used_by_over_week: other: ใช้โดย %{count} คนในช่วงสัปดาห์ที่ผ่านมา title: แนวโน้ม + trending: กำลังนิยม warning_presets: add_new: เพิ่มใหม่ delete: ลบ @@ -794,6 +797,7 @@ th: subject: "%{username} กำลังอุทธรณ์การตัดสินใจในการควบคุมใน %{instance}" new_pending_account: body: รายละเอียดของบัญชีใหม่อยู่ด้านล่าง คุณสามารถอนุมัติหรือปฏิเสธใบสมัครนี้ + subject: บัญชีใหม่สำหรับตรวจทานใน %{instance} (%{username}) new_report: body: "%{reporter} ได้รายงาน %{target}" body_remote: ใครสักคนจาก %{domain} ได้รายงาน %{target} @@ -891,7 +895,7 @@ th: error: น่าเสียดาย มีข้อผิดพลาดในการค้นหาบัญชีระยะไกล follow: ติดตาม follow_request: 'คุณได้ส่งคำขอติดตามไปยัง:' - following: 'สำเร็จ! คุณกำลังติดตาม:' + following: 'สำเร็จ! ตอนนี้คุณกำลังติดตาม:' post_follow: close: หรือคุณสามารถปิดหน้าต่างนี้ return: แสดงโปรไฟล์ของผู้ใช้ @@ -934,6 +938,7 @@ th: caches: เนื้อหาที่ได้รับการแคชโดยเซิร์ฟเวอร์อื่น ๆ อาจยังคงอยู่ data_removal: จะเอาโพสต์และข้อมูลอื่น ๆ ของคุณออกโดยถาวร email_change_html: คุณสามารถ เปลี่ยนที่อยู่อีเมลของคุณ ได้โดยไม่ต้องลบบัญชีของคุณ + email_contact_html: หากอีเมลยังคงมาไม่ถึง คุณสามารถส่งอีเมลถึง %{email} สำหรับความช่วยเหลือ email_reconfirmation_html: หากคุณไม่ได้รับอีเมลยืนยัน คุณสามารถ ขออีเมลอีกครั้ง irreversible: คุณจะไม่สามารถคืนค่าหรือเปิดใช้งานบัญชีของคุณใหม่ more_details_html: สำหรับรายละเอียดเพิ่มเติม ดู นโยบายความเป็นส่วนตัว @@ -956,6 +961,7 @@ th: description_html: นี่คือการกระทำที่ใช้กับบัญชีของคุณและคำเตือนที่ส่งถึงคุณโดยพนักงานของ %{instance} recipient: ส่งถึง status: 'โพสต์ #%{id}' + status_removed: เอาโพสต์ออกจากระบบไปแล้ว title: "%{action} จาก %{date}" title_actions: delete_statuses: การเอาโพสต์ออก @@ -984,6 +990,7 @@ th: content: เราขออภัย แต่มีบางอย่างผิดพลาดในส่วนของเรา title: หน้านี้ไม่ถูกต้อง '503': ไม่สามารถให้บริการหน้าได้เนื่องจากเซิร์ฟเวอร์ล้มเหลวชั่วคราว + noscript_html: เพื่อใช้แอปพลิเคชันเว็บ Mastodon โปรดเปิดใช้งาน JavaScript หรืออีกวิธีหนึ่ง ลองหนึ่งใน แอปเนทีฟ สำหรับ Mastodon สำหรับแพลตฟอร์มของคุณ existing_username_validator: not_found: ไม่พบผู้ใช้ในเซิร์ฟเวอร์ที่มีชื่อผู้ใช้นั้น not_found_multiple: ไม่พบ %{usernames} @@ -1094,6 +1101,7 @@ th: migrations: acct: ย้ายไปยัง cancel: ยกเลิกการเปลี่ยนเส้นทาง + cancel_explanation: การยกเลิกการเปลี่ยนเส้นทางจะเปิดใช้งานบัญชีปัจจุบันของคุณใหม่ แต่จะไม่นำผู้ติดตามที่ได้รับการย้ายไปยังบัญชีนั้นกลับมา cancelled_msg: ยกเลิกการเปลี่ยนเส้นทางสำเร็จ errors: missing_also_known_as: ไม่ใช่นามแฝงของบัญชีนี้ @@ -1106,7 +1114,7 @@ th: on_cooldown: คุณเพิ่งโยกย้ายบัญชีของคุณ ฟังก์ชันนี้จะพร้อมใช้งานอีกครั้งในอีก %{count} วัน past_migrations: การโยกย้ายที่ผ่านมา proceed_with_move: ย้ายผู้ติดตาม - redirected_msg: บัญชีของคุณกำลังเปลี่ยนเส้นทางไปยัง %{acct} + redirected_msg: ตอนนี้บัญชีของคุณกำลังเปลี่ยนเส้นทางไปยัง %{acct} redirecting_to: บัญชีของคุณกำลังเปลี่ยนเส้นทางไปยัง %{acct} set_redirect: ตั้งการเปลี่ยนเส้นทาง warning: @@ -1136,8 +1144,8 @@ th: subject: "%{name} ได้ชื่นชอบโพสต์ของคุณ" title: รายการโปรดใหม่ follow: - body: "%{name} กำลังติดตามคุณ!" - subject: "%{name} กำลังติดตามคุณ" + body: ตอนนี้ %{name} กำลังติดตามคุณ! + subject: ตอนนี้ %{name} กำลังติดตามคุณ title: ผู้ติดตามใหม่ follow_request: action: จัดการคำขอติดตาม @@ -1424,6 +1432,9 @@ th: suspicious_sign_in: change_password: เปลี่ยนรหัสผ่านของคุณ details: 'นี่คือรายละเอียดของการลงชื่อเข้า:' + explanation: เราตรวจพบการลงชื่อเข้าบัญชีของคุณจากที่อยู่ IP ใหม่ + further_actions_html: หากนี่ไม่ใช่คุณ เราแนะนำให้คุณ %{action} ทันทีและเปิดใช้งานการรับรองความถูกต้องด้วยสองปัจจัยเพื่อรักษาบัญชีของคุณให้ปลอดภัย + subject: มีการเข้าถึงบัญชีของคุณจากที่อยู่ IP ใหม่ title: การลงชื่อเข้าใหม่ warning: appeal: ส่งการอุทธรณ์ diff --git a/config/locales/uk.yml b/config/locales/uk.yml index cb2b7c720..72937cbca 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -170,6 +170,12 @@ uk: not_subscribed: Не підписані pending: Відгук в очікуванні perform_full_suspension: Призупинити + previous_strikes: Попередні скарги + previous_strikes_description_html: + few: У цього облікового запису є %{count} скарги. + many: У цього облікового запису є %{count} скарг. + one: У цього облікового запису є одна скарга. + other: У цього облікового запису є %{count} скарг. promote: Просунути protocol: Протокол public: Публічний @@ -210,6 +216,7 @@ uk: silence: Глушення silenced: Заглушені statuses: Статуси + strikes: Попередні скарги subscribe: Підписатися suspend: Призупинити suspended: Призупинені @@ -392,6 +399,11 @@ uk: media_storage: Медіасховище new_users: нові користувачі opened_reports: звітів відкрито + pending_appeals_html: + few: "%{count} апеляції в черзі" + many: "%{count} апеляцій в черзі" + one: "%{count} апеляція в черзі" + other: "%{count} апеляції в черзі" pending_reports_html: few: "%{count} звіти у черзі" many: "%{count} звітів у черзі" @@ -481,6 +493,12 @@ uk: unsuppress: Відновити поради щодо підписок instances: availability: + failures_recorded: + few: Невдалих спроб за %{count} різні дні. + many: Невдалих спроб за %{count} різних днів. + one: Невдалих спроб за %{count} день. + other: Невдалих спроб за %{count} різних днів. + no_failures_recorded: Проблем щодо запису немає. title: Доступність back_to_all: Усі back_to_limited: Обмежені @@ -784,6 +802,7 @@ uk: disallow_provider: Заборонити публікатора title: Популярні посилання usage_comparison: Сьогодні поширено %{today} разів, у порівнянні з %{yesterday} вчора + only_allowed: Тільки дозволене pending_review: Очікує перевірки preview_card_providers: allowed: Посилання цього публікатора можуть бути популярними @@ -1551,6 +1570,7 @@ uk: silence: Ви й надалі можете користуватися своїм обліковим записом, але ваші дописи на цьому сервері бачитимуть лише ті люди, які вже стежать за вами, а вас може бути виключено з різних можливостей виявлення. Проте, інші можуть почати стежити за вами вручну. suspend: Ви більше не можете користуватися своїм обліковим записом, а ваші інші дані більше недоступні. Ви досі можете увійти, щоб надіслати запит на отримання резервної копії своїх даних до повного видалення впродовж приблизно 30 днів, але ми збережемо деякі основні дані, щоб унеможливити ухилення вами від призупинення. reason: 'Причина:' + statuses: 'Цитовані дописи:' subject: delete_statuses: Ваші дописи на %{acct} були вилучені disable: Ваш обліковий запис %{acct} було заморожено diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 9515ffad8..2deb4ccbd 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -29,7 +29,7 @@ zh-CN: logged_in_as_html: 您当前以 %{username} 登录。 logout_before_registering: 您已登录。 privacy_policy: 隐私政策 - rules: 实例规则 + rules: 服务器规则 rules_html: 如果你想要在此Mastodon服务器上拥有一个账户,你必须遵守相应的规则,摘要如下: see_whats_happening: 看看有什么新鲜事 server_stats: 服务器统计数据: @@ -646,8 +646,8 @@ zh-CN: desc_html: 本站一周内的嘟文数、活跃用户数以及新用户数 title: 公开用户活跃度的统计数据 bootstrap_timeline_accounts: - desc_html: 用半角逗号分隔多个用户名。只能添加来自本站且未开启保护的帐户。如果留空,则默认关注本站所有的管理员。 - title: 新用户默认关注 + desc_html: 用半角逗号分隔多个用户名。这些账户一定会在推荐关注中展示。 + title: 新用户推荐关注 contact_information: email: 用于联系的公开电子邮件地址 username: 用于联系的公开用户名 From a53003c6f18cd5b4177810e118b158290131b6ec Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 6 May 2022 21:40:20 +0200 Subject: [PATCH 035/652] Fix account warnings not being recorded in audit log (#18338) * Fix account warnings not being recorded in audit log Fixes #18334 * Only record warnings if they are not associated to another action --- app/models/admin/account_action.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/models/admin/account_action.rb b/app/models/admin/account_action.rb index 850ea6d82..237975880 100644 --- a/app/models/admin/account_action.rb +++ b/app/models/admin/account_action.rb @@ -92,6 +92,10 @@ class Admin::AccountAction text: text_for_warning, status_ids: status_ids ) + + # A log entry is only interesting if the warning contains + # custom text from someone. Otherwise it's just noise. + log_action(:create, @warning) if @warning.text.present? && type == 'none' end def process_reports! From 5a448d0d7143475dabe315e6038ec27b59e9e6b5 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 6 May 2022 21:40:49 +0200 Subject: [PATCH 036/652] Fix floating action button obscuring last element (#18332) Fixes #18331 Add some padding below the last element of scrollable lists when the FAB is shown in order for users to always be able to fully see the last element. --- .../mastodon/features/ui/components/columns_area.js | 2 +- app/javascript/styles/mastodon/components.scss | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/javascript/mastodon/features/ui/components/columns_area.js b/app/javascript/mastodon/features/ui/components/columns_area.js index db047f5f0..e665f4447 100644 --- a/app/javascript/mastodon/features/ui/components/columns_area.js +++ b/app/javascript/mastodon/features/ui/components/columns_area.js @@ -234,7 +234,7 @@ class ColumnsArea extends ImmutablePureComponent { -
+
{content}
diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 472fa9407..b53648ead 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -2469,6 +2469,10 @@ a.account__display-name { .columns-area__panels__pane--compositional { display: none; } + + .with-fab .scrollable .item-list:last-child { + padding-bottom: 5.25rem; + } } @media screen and (min-width: 600px + (285px * 1) + (10px * 1)) { From 991353682d96cecd4695e150cb6030613d447844 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 6 May 2022 21:41:34 +0200 Subject: [PATCH 037/652] Fix ambiguous wording on appeal actions (#18328) Fixes #18322 --- app/views/disputes/strikes/show.html.haml | 4 ++-- config/locales/en.yml | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/views/disputes/strikes/show.html.haml b/app/views/disputes/strikes/show.html.haml index 0b71e14a3..1be50331a 100644 --- a/app/views/disputes/strikes/show.html.haml +++ b/app/views/disputes/strikes/show.html.haml @@ -3,8 +3,8 @@ - content_for :heading_actions do - if @appeal.persisted? - = link_to t('admin.accounts.approve'), approve_admin_disputes_appeal_path(@appeal), method: :post, class: 'button' if can?(:approve, @appeal) - = link_to t('admin.accounts.reject'), reject_admin_disputes_appeal_path(@appeal), method: :post, class: 'button button--destructive' if can?(:reject, @appeal) + = link_to t('disputes.strikes.approve_appeal'), approve_admin_disputes_appeal_path(@appeal), method: :post, class: 'button' if can?(:approve, @appeal) + = link_to t('disputes.strikes.reject_appeal'), reject_admin_disputes_appeal_path(@appeal), method: :post, class: 'button button--destructive' if can?(:reject, @appeal) - if @strike.overruled? %p.hint diff --git a/config/locales/en.yml b/config/locales/en.yml index a90409a7c..2c8455d0a 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1036,10 +1036,12 @@ en: appealed_msg: Your appeal has been submitted. If it is approved, you will be notified. appeals: submit: Submit appeal + approve_appeal: Approve appeal associated_report: Associated report created_at: Dated description_html: These are actions taken against your account and warnings that have been sent to you by the staff of %{instance}. recipient: Addressed to + reject_appeal: Reject appeal status: 'Post #%{id}' status_removed: Post already removed from system title: "%{action} from %{date}" From f17e73da09e6c63665aee4e9731df7808094960e Mon Sep 17 00:00:00 2001 From: Claire Date: Sat, 7 May 2022 04:50:40 +0200 Subject: [PATCH 038/652] Fix streaming notifications not using quick filter logic (#18316) Fixes #18309 The quickFilter logic was used on display and to request new notification pages, but not for live updates. The main issue this caused is bump the unread notifications count regardless of the quickFilter setting. Since notifications are re-fetched when changing quickFilter settings, it is safe to drop live notifications that do not match the selected filter. --- app/javascript/mastodon/actions/notifications.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/javascript/mastodon/actions/notifications.js b/app/javascript/mastodon/actions/notifications.js index 00e8d74d7..96cf628d6 100644 --- a/app/javascript/mastodon/actions/notifications.js +++ b/app/javascript/mastodon/actions/notifications.js @@ -58,7 +58,8 @@ export const loadPending = () => ({ export function updateNotifications(notification, intlMessages, intlLocale) { return (dispatch, getState) => { - const showInColumn = getState().getIn(['settings', 'notifications', 'shows', notification.type], true); + const activeFilter = getState().getIn(['settings', 'notifications', 'quickFilter', 'active']); + const showInColumn = activeFilter === 'all' ? getState().getIn(['settings', 'notifications', 'shows', notification.type], true) : activeFilter === notification.type; const showAlert = getState().getIn(['settings', 'notifications', 'alerts', notification.type], true); const playSound = getState().getIn(['settings', 'notifications', 'sounds', notification.type], true); const filters = getFiltersRegex(getState(), { contextType: 'notifications' }); From 2b8dc58b7ff7fb708687c08a75c99b3fb30efc49 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 9 May 2022 07:43:08 +0200 Subject: [PATCH 039/652] Change RSS feeds (#18356) * Change RSS feeds - Use date and time for titles instead of ellipsized text - Use full content in body, even when there is a content warning - Use media extensions * Change feed icons and add width and height attributes to custom emojis * Fix custom emoji animate on hover breaking * Fix tests --- app/controllers/accounts_controller.rb | 1 - app/controllers/tags_controller.rb | 1 - app/helpers/application_helper.rb | 4 +- app/helpers/formatting_helper.rb | 26 +++++ app/lib/emoji_formatter.rb | 28 ++++- app/lib/rss/builder.rb | 33 ++++++ app/lib/rss/channel.rb | 49 ++++++++ app/lib/rss/element.rb | 24 ++++ app/lib/rss/item.rb | 45 ++++++++ app/lib/rss/media_content.rb | 29 +++++ app/lib/rss/serializer.rb | 55 --------- app/lib/rss_builder.rb | 130 ---------------------- app/serializers/rss/account_serializer.rb | 28 ----- app/serializers/rss/tag_serializer.rb | 25 ----- app/views/accounts/show.rss.ruby | 37 ++++++ app/views/tags/show.rss.ruby | 36 ++++++ config/locales/en.yml | 5 + spec/lib/emoji_formatter_spec.rb | 6 +- spec/lib/rss/serializer_spec.rb | 56 ---------- 19 files changed, 311 insertions(+), 307 deletions(-) create mode 100644 app/lib/rss/builder.rb create mode 100644 app/lib/rss/channel.rb create mode 100644 app/lib/rss/element.rb create mode 100644 app/lib/rss/item.rb create mode 100644 app/lib/rss/media_content.rb delete mode 100644 app/lib/rss/serializer.rb delete mode 100644 app/lib/rss_builder.rb delete mode 100644 app/serializers/rss/account_serializer.rb delete mode 100644 app/serializers/rss/tag_serializer.rb create mode 100644 app/views/accounts/show.rss.ruby create mode 100644 app/views/tags/show.rss.ruby delete mode 100644 spec/lib/rss/serializer_spec.rb diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb index ddd38cbb0..fe7d934dc 100644 --- a/app/controllers/accounts_controller.rb +++ b/app/controllers/accounts_controller.rb @@ -44,7 +44,6 @@ class AccountsController < ApplicationController limit = params[:limit].present? ? [params[:limit].to_i, PAGE_SIZE_MAX].min : PAGE_SIZE @statuses = filtered_statuses.without_reblogs.limit(limit) @statuses = cache_collection(@statuses, Status) - render xml: RSS::AccountSerializer.render(@account, @statuses, params[:tag]) end format.json do diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb index 6616ba107..b82da8f0c 100644 --- a/app/controllers/tags_controller.rb +++ b/app/controllers/tags_controller.rb @@ -26,7 +26,6 @@ class TagsController < ApplicationController format.rss do expires_in 0, public: true - render xml: RSS::TagSerializer.render(@tag, @statuses) end format.json do diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 19dc0acd6..bba7070d0 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -243,7 +243,7 @@ module ApplicationHelper end.values end - def prerender_custom_emojis(html, custom_emojis) - EmojiFormatter.new(html, custom_emojis, animate: prefers_autoplay?).to_s + def prerender_custom_emojis(html, custom_emojis, other_options = {}) + EmojiFormatter.new(html, custom_emojis, other_options.merge(animate: prefers_autoplay?)).to_s end end diff --git a/app/helpers/formatting_helper.rb b/app/helpers/formatting_helper.rb index a58dd608f..f5b8dbed8 100644 --- a/app/helpers/formatting_helper.rb +++ b/app/helpers/formatting_helper.rb @@ -18,6 +18,32 @@ module FormattingHelper html_aware_format(status.text, status.local?, preloaded_accounts: [status.account] + (status.respond_to?(:active_mentions) ? status.active_mentions.map(&:account) : [])) end + def rss_status_content_format(status) + html = status_content_format(status) + + before_html = begin + if status.spoiler_text? + "

#{I18n.t('rss.content_warning', locale: valid_locale_or_nil(status.language))} #{h(status.spoiler_text)}


" + else + '' + end + end.html_safe # rubocop:disable Rails/OutputSafety + + after_html = begin + if status.preloadable_poll + "

#{status.preloadable_poll.options.map { |o| " #{h(o)}" }.join('
')}

" + else + '' + end + end.html_safe # rubocop:disable Rails/OutputSafety + + prerender_custom_emojis( + safe_join([before_html, html, after_html]), + status.emojis, + style: 'width: 1.1em; height: 1.1em; object-fit: contain; vertical-align: middle; margin: -.2ex .15em .2ex' + ).to_str + end + def account_bio_format(account) html_aware_format(account.note, account.local?) end diff --git a/app/lib/emoji_formatter.rb b/app/lib/emoji_formatter.rb index f808f3a22..194849c23 100644 --- a/app/lib/emoji_formatter.rb +++ b/app/lib/emoji_formatter.rb @@ -11,6 +11,7 @@ class EmojiFormatter # @param [Array] custom_emojis # @param [Hash] options # @option options [Boolean] :animate + # @option options [String] :style def initialize(html, custom_emojis, options = {}) raise ArgumentError unless html.html_safe? @@ -85,14 +86,29 @@ class EmojiFormatter def image_for_emoji(shortcode, emoji) original_url, static_url = emoji - if animate? - image_tag(original_url, draggable: false, class: 'emojione', alt: ":#{shortcode}:", title: ":#{shortcode}:") - else - image_tag(original_url, draggable: false, class: 'emojione custom-emoji', alt: ":#{shortcode}:", title: ":#{shortcode}:", data: { original: original_url, static: static_url }) - end + image_tag( + animate? ? original_url : static_url, + image_attributes.merge(alt: ":#{shortcode}:", title: ":#{shortcode}:", data: image_data_attributes(original_url, static_url)) + ) + end + + def image_attributes + { rel: 'emoji', draggable: false, width: 16, height: 16, class: image_class_names, style: image_style } + end + + def image_data_attributes(original_url, static_url) + { original: original_url, static: static_url } unless animate? + end + + def image_class_names + animate? ? 'emojione' : 'emojione custom-emoji' + end + + def image_style + @options[:style] end def animate? - @options[:animate] + @options[:animate] || @options.key?(:style) end end diff --git a/app/lib/rss/builder.rb b/app/lib/rss/builder.rb new file mode 100644 index 000000000..a9b3f08c5 --- /dev/null +++ b/app/lib/rss/builder.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +class RSS::Builder + attr_reader :dsl + + def self.build + new.tap do |builder| + yield builder.dsl + end.to_xml + end + + def initialize + @dsl = RSS::Channel.new + end + + def to_xml + (''.dup << Ox.dump(wrap_in_document, effort: :tolerant)).force_encoding('UTF-8') + end + + private + + def wrap_in_document + Ox::Document.new(version: '1.0').tap do |document| + document << Ox::Element.new('rss').tap do |rss| + rss['version'] = '2.0' + rss['xmlns:webfeeds'] = 'http://webfeeds.org/rss/1.0' + rss['xmlns:media'] = 'http://search.yahoo.com/mrss/' + + rss << @dsl.to_element + end + end + end +end diff --git a/app/lib/rss/channel.rb b/app/lib/rss/channel.rb new file mode 100644 index 000000000..1dba94e47 --- /dev/null +++ b/app/lib/rss/channel.rb @@ -0,0 +1,49 @@ +# frozen_string_literal: true + +class RSS::Channel < RSS::Element + def initialize + super() + + @root = create_element('channel') + end + + def title(str) + append_element('title', str) + end + + def link(str) + append_element('link', str) + end + + def last_build_date(date) + append_element('lastBuildDate', date.to_formatted_s(:rfc822)) + end + + def image(url, title, link) + append_element('image') do |image| + image << create_element('url', url) + image << create_element('title', title) + image << create_element('link', link) + end + end + + def description(str) + append_element('description', str) + end + + def generator(str) + append_element('generator', str) + end + + def icon(str) + append_element('webfeeds:icon', str) + end + + def logo(str) + append_element('webfeeds:logo', str) + end + + def item(&block) + @root << RSS::Item.with(&block) + end +end diff --git a/app/lib/rss/element.rb b/app/lib/rss/element.rb new file mode 100644 index 000000000..7142fa039 --- /dev/null +++ b/app/lib/rss/element.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +class RSS::Element + def self.with(*args, &block) + new(*args).tap(&block).to_element + end + + def create_element(name, content = nil) + Ox::Element.new(name).tap do |element| + yield element if block_given? + element << content if content.present? + end + end + + def append_element(name, content = nil) + @root << create_element(name, content).tap do |element| + yield element if block_given? + end + end + + def to_element + @root + end +end diff --git a/app/lib/rss/item.rb b/app/lib/rss/item.rb new file mode 100644 index 000000000..c02991ace --- /dev/null +++ b/app/lib/rss/item.rb @@ -0,0 +1,45 @@ +# frozen_string_literal: true + +class RSS::Item < RSS::Element + def initialize + super() + + @root = create_element('item') + end + + def title(str) + append_element('title', str) + end + + def link(str) + append_element('guid', str) do |guid| + guid['isPermaLink'] = 'true' + end + + append_element('link', str) + end + + def pub_date(date) + append_element('pubDate', date.to_formatted_s(:rfc822)) + end + + def description(str) + append_element('description', str) + end + + def category(str) + append_element('category', str) + end + + def enclosure(url, type, size) + append_element('enclosure') do |enclosure| + enclosure['url'] = url + enclosure['length'] = size + enclosure['type'] = type + end + end + + def media_content(url, type, size, &block) + @root << RSS::MediaContent.with(url, type, size, &block) + end +end diff --git a/app/lib/rss/media_content.rb b/app/lib/rss/media_content.rb new file mode 100644 index 000000000..7aefd8b40 --- /dev/null +++ b/app/lib/rss/media_content.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +class RSS::MediaContent < RSS::Element + def initialize(url, type, size) + super() + + @root = create_element('media:content') do |content| + content['url'] = url + content['type'] = type + content['fileSize'] = size + end + end + + def medium(str) + @root['medium'] = str + end + + def rating(str) + append_element('media:rating', str) do |rating| + rating['scheme'] = 'urn:simple' + end + end + + def description(str) + append_element('media:description', str) do |description| + description['type'] = 'plain' + end + end +end diff --git a/app/lib/rss/serializer.rb b/app/lib/rss/serializer.rb deleted file mode 100644 index d44e94221..000000000 --- a/app/lib/rss/serializer.rb +++ /dev/null @@ -1,55 +0,0 @@ -# frozen_string_literal: true - -class RSS::Serializer - include FormattingHelper - - private - - def render_statuses(builder, statuses) - statuses.each do |status| - builder.item do |item| - item.title(status_title(status)) - .link(ActivityPub::TagManager.instance.url_for(status)) - .pub_date(status.created_at) - .description(status_description(status)) - - status.ordered_media_attachments.each do |media| - item.enclosure(full_asset_url(media.file.url(:original, false)), media.file.content_type, media.file.size) - end - end - end - end - - def status_title(status) - preview = status.proper.spoiler_text.presence || status.proper.text - - if preview.length > 30 || preview[0, 30].include?("\n") - preview = preview[0, 30] - preview = preview[0, preview.index("\n").presence || 30] + '…' - end - - preview = "#{status.proper.spoiler_text.present? ? 'CW ' : ''}“#{preview}”#{status.proper.sensitive? ? ' (sensitive)' : ''}" - - if status.reblog? - "#{status.account.acct} boosted #{status.reblog.account.acct}: #{preview}" - else - "#{status.account.acct}: #{preview}" - end - end - - def status_description(status) - if status.proper.spoiler_text? - status.proper.spoiler_text - else - html = status_content_format(status.proper).to_str - after_html = '' - - if status.proper.preloadable_poll - poll_options_html = status.proper.preloadable_poll.options.map { |o| "[ ] #{o}" }.join('
') - after_html = "

#{poll_options_html}

" - end - - "#{html}#{after_html}" - end - end -end diff --git a/app/lib/rss_builder.rb b/app/lib/rss_builder.rb deleted file mode 100644 index 63ddba2e8..000000000 --- a/app/lib/rss_builder.rb +++ /dev/null @@ -1,130 +0,0 @@ -# frozen_string_literal: true - -class RSSBuilder - class ItemBuilder - def initialize - @item = Ox::Element.new('item') - end - - def title(str) - @item << (Ox::Element.new('title') << str) - - self - end - - def link(str) - @item << Ox::Element.new('guid').tap do |guid| - guid['isPermalink'] = 'true' - guid << str - end - - @item << (Ox::Element.new('link') << str) - - self - end - - def pub_date(date) - @item << (Ox::Element.new('pubDate') << date.to_formatted_s(:rfc822)) - - self - end - - def description(str) - @item << (Ox::Element.new('description') << str) - - self - end - - def enclosure(url, type, size) - @item << Ox::Element.new('enclosure').tap do |enclosure| - enclosure['url'] = url - enclosure['length'] = size - enclosure['type'] = type - end - - self - end - - def to_element - @item - end - end - - def initialize - @document = Ox::Document.new(version: '1.0') - @channel = Ox::Element.new('channel') - - @document << (rss << @channel) - end - - def title(str) - @channel << (Ox::Element.new('title') << str) - - self - end - - def link(str) - @channel << (Ox::Element.new('link') << str) - - self - end - - def image(str) - @channel << Ox::Element.new('image').tap do |image| - image << (Ox::Element.new('url') << str) - image << (Ox::Element.new('title') << '') - image << (Ox::Element.new('link') << '') - end - - @channel << (Ox::Element.new('webfeeds:icon') << str) - - self - end - - def cover(str) - @channel << Ox::Element.new('webfeeds:cover').tap do |cover| - cover['image'] = str - end - - self - end - - def logo(str) - @channel << (Ox::Element.new('webfeeds:logo') << str) - - self - end - - def accent_color(str) - @channel << (Ox::Element.new('webfeeds:accentColor') << str) - - self - end - - def description(str) - @channel << (Ox::Element.new('description') << str) - - self - end - - def item - @channel << ItemBuilder.new.tap do |item| - yield item - end.to_element - - self - end - - def to_xml - ('' + Ox.dump(@document, effort: :tolerant)).force_encoding('UTF-8') - end - - private - - def rss - Ox::Element.new('rss').tap do |rss| - rss['version'] = '2.0' - rss['xmlns:webfeeds'] = 'http://webfeeds.org/rss/1.0' - end - end -end diff --git a/app/serializers/rss/account_serializer.rb b/app/serializers/rss/account_serializer.rb deleted file mode 100644 index 81e24af0d..000000000 --- a/app/serializers/rss/account_serializer.rb +++ /dev/null @@ -1,28 +0,0 @@ -# frozen_string_literal: true - -class RSS::AccountSerializer < RSS::Serializer - include ActionView::Helpers::NumberHelper - include AccountsHelper - include RoutingHelper - - def render(account, statuses, tag) - builder = RSSBuilder.new - - builder.title("#{display_name(account)} (@#{account.local_username_and_domain})") - .description(account_description(account)) - .link(tag.present? ? short_account_tag_url(account, tag) : short_account_url(account)) - .logo(full_pack_url('media/images/logo.svg')) - .accent_color('2b90d9') - - builder.image(full_asset_url(account.avatar.url(:original))) if account.avatar? - builder.cover(full_asset_url(account.header.url(:original))) if account.header? - - render_statuses(builder, statuses) - - builder.to_xml - end - - def self.render(account, statuses, tag) - new.render(account, statuses, tag) - end -end diff --git a/app/serializers/rss/tag_serializer.rb b/app/serializers/rss/tag_serializer.rb deleted file mode 100644 index e549ac367..000000000 --- a/app/serializers/rss/tag_serializer.rb +++ /dev/null @@ -1,25 +0,0 @@ -# frozen_string_literal: true - -class RSS::TagSerializer < RSS::Serializer - include ActionView::Helpers::NumberHelper - include ActionView::Helpers::SanitizeHelper - include RoutingHelper - - def render(tag, statuses) - builder = RSSBuilder.new - - builder.title("##{tag.name}") - .description(strip_tags(I18n.t('about.about_hashtag_html', hashtag: tag.name))) - .link(tag_url(tag)) - .logo(full_pack_url('media/images/logo.svg')) - .accent_color('2b90d9') - - render_statuses(builder, statuses) - - builder.to_xml - end - - def self.render(tag, statuses) - new.render(tag, statuses) - end -end diff --git a/app/views/accounts/show.rss.ruby b/app/views/accounts/show.rss.ruby new file mode 100644 index 000000000..73c1c51e0 --- /dev/null +++ b/app/views/accounts/show.rss.ruby @@ -0,0 +1,37 @@ +RSS::Builder.build do |doc| + doc.title(display_name(@account)) + doc.description(I18n.t('rss.descriptions.account', acct: @account.local_username_and_domain)) + doc.link(params[:tag].present? ? short_account_tag_url(@account, params[:tag]) : short_account_url(@account)) + doc.image(full_asset_url(@account.avatar.url(:original)), display_name(@account), params[:tag].present? ? short_account_tag_url(@account, params[:tag]) : short_account_url(@account)) + doc.last_build_date(@statuses.first.created_at) if @statuses.any? + doc.icon(full_asset_url(@account.avatar.url(:original))) + doc.logo(full_pack_url('media/images/logo_transparent_white.svg')) + doc.generator("Mastodon v#{Mastodon::Version.to_s}") + + @statuses.each do |status| + doc.item do |item| + item.title(l(status.created_at)) + item.link(ActivityPub::TagManager.instance.url_for(status)) + item.pub_date(status.created_at) + item.description(rss_status_content_format(status)) + + if status.ordered_media_attachments.first&.audio? + media = status.ordered_media_attachments.first + item.enclosure(full_asset_url(media.file.url(:original, false)), media.file.content_type, media.file.size) + end + + status.ordered_media_attachments.each do |media| + item.media_content(full_asset_url(media.file.url(:original, false)), media.file.content_type, media.file.size) do |media_content| + media_content.medium(media.gifv? ? 'image' : media.type.to_s) + media_content.rating(status.sensitive? ? 'adult' : 'nonadult') + media_content.description(media.description) if media.description.present? + media_content.thumbnail(media.thumbnail.url(:original, false)) if media.thumbnail? + end + end + + status.tags.each do |tag| + item.category(tag.name) + end + end + end +end diff --git a/app/views/tags/show.rss.ruby b/app/views/tags/show.rss.ruby new file mode 100644 index 000000000..4152ecd24 --- /dev/null +++ b/app/views/tags/show.rss.ruby @@ -0,0 +1,36 @@ +RSS::Builder.build do |doc| + doc.title("##{@tag.name}") + doc.description(I18n.t('rss.descriptions.tag', hashtag: @tag.name)) + doc.link(tag_url(@tag)) + doc.last_build_date(@statuses.first.created_at) if @statuses.any? + doc.icon(full_asset_url(@account.avatar.url(:original))) + doc.logo(full_pack_url('media/images/logo_transparent_white.svg')) + doc.generator("Mastodon v#{Mastodon::Version.to_s}") + + @statuses.each do |status| + doc.item do |item| + item.title(l(status.created_at)) + item.link(ActivityPub::TagManager.instance.url_for(status)) + item.pub_date(status.created_at) + item.description(rss_status_content_format(status)) + + if status.ordered_media_attachments.first&.audio? + media = status.ordered_media_attachments.first + item.enclosure(full_asset_url(media.file.url(:original, false)), media.file.content_type, media.file.size) + end + + status.ordered_media_attachments.each do |media| + item.media_content(full_asset_url(media.file.url(:original, false)), media.file.content_type, media.file.size) do |media_content| + media_content.medium(media.gifv? ? 'image' : media.type.to_s) + media_content.rating(status.sensitive? ? 'adult' : 'nonadult') + media_content.description(media.description) if media.description.present? + media_content.thumbnail(media.thumbnail.url(:original, false)) if media.thumbnail? + end + end + + status.tags.each do |tag| + item.category(tag.name) + end + end + end +end diff --git a/config/locales/en.yml b/config/locales/en.yml index 2c8455d0a..50e762db7 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1357,6 +1357,11 @@ en: reports: errors: invalid_rules: does not reference valid rules + rss: + content_warning: 'Content warning:' + descriptions: + account: Public posts from @%{acct} + tag: 'Public posts tagged #%{hashtag}' scheduled_statuses: over_daily_limit: You have exceeded the limit of %{limit} scheduled posts for today over_total_limit: You have exceeded the limit of %{limit} scheduled posts diff --git a/spec/lib/emoji_formatter_spec.rb b/spec/lib/emoji_formatter_spec.rb index 129445aa5..e1747bdd9 100644 --- a/spec/lib/emoji_formatter_spec.rb +++ b/spec/lib/emoji_formatter_spec.rb @@ -24,7 +24,7 @@ RSpec.describe EmojiFormatter do let(:text) { preformat_text(':coolcat: Beep boop') } it 'converts the shortcode to an image tag' do - is_expected.to match(/:coolcat: Date: Mon, 9 May 2022 23:19:11 +0200 Subject: [PATCH 040/652] Fix redis configuration not being changed by mastodon:setup (#18383) Fixes #18342 --- lib/tasks/mastodon.rake | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake index a89af6778..d652468b3 100644 --- a/lib/tasks/mastodon.rake +++ b/lib/tasks/mastodon.rake @@ -8,6 +8,14 @@ namespace :mastodon do prompt = TTY::Prompt.new env = {} + # When the application code gets loaded, it runs `lib/mastodon/redis_configuration.rb`. + # This happens before application environment configuration and sets REDIS_URL etc. + # These variables are then used even when REDIS_HOST etc. are changed, so clear them + # out so they don't interfer with our new configuration. + ENV.delete('REDIS_URL') + ENV.delete('CACHE_REDIS_URL') + ENV.delete('SIDEKIQ_REDIS_URL') + begin prompt.say('Your instance is identified by its domain name. Changing it afterward will break things.') env['LOCAL_DOMAIN'] = prompt.ask('Domain name:') do |q| From 662ed53c18b39bb0c89cf18ede3436af15ee3447 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 9 May 2022 23:20:19 +0200 Subject: [PATCH 041/652] Fix block/mute lists showing a follow button when unblocking a user (#18364) Fixes #601 --- app/javascript/mastodon/components/account.js | 9 ++++++++- app/javascript/mastodon/features/blocks/index.js | 2 +- app/javascript/mastodon/features/mutes/index.js | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/app/javascript/mastodon/components/account.js b/app/javascript/mastodon/components/account.js index 62b5843a9..af9f119c8 100644 --- a/app/javascript/mastodon/components/account.js +++ b/app/javascript/mastodon/components/account.js @@ -18,6 +18,8 @@ const messages = defineMessages({ unmute: { id: 'account.unmute', defaultMessage: 'Unmute @{name}' }, mute_notifications: { id: 'account.mute_notifications', defaultMessage: 'Mute notifications from @{name}' }, unmute_notifications: { id: 'account.unmute_notifications', defaultMessage: 'Unmute notifications from @{name}' }, + mute: { id: 'account.mute', defaultMessage: 'Mute @{name}' }, + block: { id: 'account.block', defaultMessage: 'Block @{name}' }, }); export default @injectIntl @@ -33,6 +35,7 @@ class Account extends ImmutablePureComponent { hidden: PropTypes.bool, actionIcon: PropTypes.string, actionTitle: PropTypes.string, + defaultAction: PropTypes.string, onActionClick: PropTypes.func, }; @@ -61,7 +64,7 @@ class Account extends ImmutablePureComponent { } render () { - const { account, intl, hidden, onActionClick, actionIcon, actionTitle } = this.props; + const { account, intl, hidden, onActionClick, actionIcon, actionTitle, defaultAction } = this.props; if (!account) { return
; @@ -105,6 +108,10 @@ class Account extends ImmutablePureComponent { {hidingNotificationsButton} ); + } else if (defaultAction === 'mute') { + buttons = ; + } else if (defaultAction === 'block') { + buttons = ; } else if (!account.get('moved') || following) { buttons = ; } diff --git a/app/javascript/mastodon/features/blocks/index.js b/app/javascript/mastodon/features/blocks/index.js index 7ec177434..e00f2b60e 100644 --- a/app/javascript/mastodon/features/blocks/index.js +++ b/app/javascript/mastodon/features/blocks/index.js @@ -69,7 +69,7 @@ class Blocks extends ImmutablePureComponent { bindToDocument={!multiColumn} > {accountIds.map(id => - , + , )} diff --git a/app/javascript/mastodon/features/mutes/index.js b/app/javascript/mastodon/features/mutes/index.js index c1d50d194..c21433cc4 100644 --- a/app/javascript/mastodon/features/mutes/index.js +++ b/app/javascript/mastodon/features/mutes/index.js @@ -69,7 +69,7 @@ class Mutes extends ImmutablePureComponent { bindToDocument={!multiColumn} > {accountIds.map(id => - , + , )} From 898fe2fa8e886d62de2bd9b15eb758054216d33d Mon Sep 17 00:00:00 2001 From: luzpaz Date: Mon, 9 May 2022 22:58:04 -0400 Subject: [PATCH 042/652] Fix typo in source `setted`->`set` (#18385) Found via `codespell -q 3 -S ./CHANGELOG.md,./AUTHORS.md,./config/locales,./app/javascript/mastodon/locales -L ba,keypair,medias,ro` --- .../confirmations_controller_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/controllers/settings/two_factor_authentication/confirmations_controller_spec.rb b/spec/controllers/settings/two_factor_authentication/confirmations_controller_spec.rb index 7b86513be..569c8322b 100644 --- a/spec/controllers/settings/two_factor_authentication/confirmations_controller_spec.rb +++ b/spec/controllers/settings/two_factor_authentication/confirmations_controller_spec.rb @@ -22,7 +22,7 @@ describe Settings::TwoFactorAuthentication::ConfirmationsController do let(:user) { Fabricate(:user, email: 'local-part@domain', otp_secret: with_otp_secret ? 'oldotpsecret' : nil) } describe 'GET #new' do - context 'when signed in and a new otp secret has been setted in the session' do + context 'when signed in and a new otp secret has been set in the session' do subject do sign_in user, scope: :user get :new, session: { challenge_passed_at: Time.now.utc, new_otp_secret: 'thisisasecretforthespecofnewview' } @@ -36,7 +36,7 @@ describe Settings::TwoFactorAuthentication::ConfirmationsController do expect(response).to redirect_to('/auth/sign_in') end - it 'redirects if a new otp_secret has not been setted in the session' do + it 'redirects if a new otp_secret has not been set in the session' do sign_in user, scope: :user get :new, session: { challenge_passed_at: Time.now.utc } expect(response).to redirect_to('/settings/otp_authentication') From b4d373a3df2752d9f8bdc0d7f02350528f3789b2 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 10 May 2022 09:44:35 +0200 Subject: [PATCH 043/652] Add `limited` attribute to accounts in REST API and a warning in web UI (#18344) --- app/javascript/mastodon/actions/accounts.js | 7 +++ app/javascript/mastodon/components/avatar.js | 28 +++++---- .../features/account/components/header.js | 57 ++++++++++--------- .../account_timeline/components/header.js | 8 ++- .../components/limited_account_hint.js | 35 ++++++++++++ .../containers/header_container.js | 3 +- .../features/account_timeline/index.js | 16 ++++-- .../mastodon/features/followers/index.js | 20 +++++-- .../mastodon/features/following/index.js | 20 +++++-- app/javascript/mastodon/reducers/accounts.js | 7 ++- app/javascript/mastodon/selectors/index.js | 8 +++ .../styles/mastodon/components.scss | 9 +++ app/serializers/rest/account_serializer.rb | 7 ++- 13 files changed, 166 insertions(+), 59 deletions(-) create mode 100644 app/javascript/mastodon/features/account_timeline/components/limited_account_hint.js diff --git a/app/javascript/mastodon/actions/accounts.js b/app/javascript/mastodon/actions/accounts.js index ce7bb6d5f..eedf61dc9 100644 --- a/app/javascript/mastodon/actions/accounts.js +++ b/app/javascript/mastodon/actions/accounts.js @@ -77,6 +77,8 @@ export const FOLLOW_REQUEST_REJECT_REQUEST = 'FOLLOW_REQUEST_REJECT_REQUEST'; export const FOLLOW_REQUEST_REJECT_SUCCESS = 'FOLLOW_REQUEST_REJECT_SUCCESS'; export const FOLLOW_REQUEST_REJECT_FAIL = 'FOLLOW_REQUEST_REJECT_FAIL'; +export const ACCOUNT_REVEAL = 'ACCOUNT_REVEAL'; + export function fetchAccount(id) { return (dispatch, getState) => { dispatch(fetchRelationships([id])); @@ -780,3 +782,8 @@ export function unpinAccountFail(error) { error, }; }; + +export const revealAccount = id => ({ + type: ACCOUNT_REVEAL, + id, +}); diff --git a/app/javascript/mastodon/components/avatar.js b/app/javascript/mastodon/components/avatar.js index 570505833..12ab7d2df 100644 --- a/app/javascript/mastodon/components/avatar.js +++ b/app/javascript/mastodon/components/avatar.js @@ -2,11 +2,12 @@ import React from 'react'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { autoPlayGif } from '../initial_state'; +import classNames from 'classnames'; export default class Avatar extends React.PureComponent { static propTypes = { - account: ImmutablePropTypes.map.isRequired, + account: ImmutablePropTypes.map, size: PropTypes.number.isRequired, style: PropTypes.object, inline: PropTypes.bool, @@ -37,15 +38,6 @@ export default class Avatar extends React.PureComponent { const { account, size, animate, inline } = this.props; const { hovering } = this.state; - const src = account.get('avatar'); - const staticSrc = account.get('avatar_static'); - - let className = 'account__avatar'; - - if (inline) { - className = className + ' account__avatar-inline'; - } - const style = { ...this.props.style, width: `${size}px`, @@ -53,15 +45,21 @@ export default class Avatar extends React.PureComponent { backgroundSize: `${size}px ${size}px`, }; - if (hovering || animate) { - style.backgroundImage = `url(${src})`; - } else { - style.backgroundImage = `url(${staticSrc})`; + if (account) { + const src = account.get('avatar'); + const staticSrc = account.get('avatar_static'); + + if (hovering || animate) { + style.backgroundImage = `url(${src})`; + } else { + style.backgroundImage = `url(${staticSrc})`; + } } + return (
{ @@ -123,7 +124,7 @@ class Header extends ImmutablePureComponent { } render () { - const { account, intl, domain } = this.props; + const { account, hidden, intl, domain } = this.props; if (!account) { return null; @@ -267,21 +268,25 @@ class Header extends ImmutablePureComponent { {!suspended && info}
- + {!(suspended || hidden) && }
- +
{!suspended && (
- {actionBtn} - {bellBtn} + {!hidden && ( + + {actionBtn} + {bellBtn} + + )}
@@ -295,30 +300,30 @@ class Header extends ImmutablePureComponent {
-
-
- {fields.size > 0 && ( -
- {fields.map((pair, i) => ( -
-
+ {!(suspended || hidden) && ( +
+
+ {fields.size > 0 && ( +
+ {fields.map((pair, i) => ( +
+
-
- {pair.get('verified_at') && } -
-
- ))} -
- )} +
+ {pair.get('verified_at') && } +
+
+ ))} +
+ )} - {account.get('id') !== me && !suspended && } + {account.get('id') !== me && } - {account.get('note').length > 0 && account.get('note') !== '

' &&
} + {account.get('note').length > 0 && account.get('note') !== '

' &&
} -
-
+
+
- {!suspended && (
- )} -
+
+ )}
); diff --git a/app/javascript/mastodon/features/account_timeline/components/header.js b/app/javascript/mastodon/features/account_timeline/components/header.js index 507b6c895..fab0bc597 100644 --- a/app/javascript/mastodon/features/account_timeline/components/header.js +++ b/app/javascript/mastodon/features/account_timeline/components/header.js @@ -24,6 +24,7 @@ export default class Header extends ImmutablePureComponent { onAddToList: PropTypes.func.isRequired, hideTabs: PropTypes.bool, domain: PropTypes.string.isRequired, + hidden: PropTypes.bool, }; static contextTypes = { @@ -91,7 +92,7 @@ export default class Header extends ImmutablePureComponent { } render () { - const { account, hideTabs } = this.props; + const { account, hidden, hideTabs } = this.props; if (account === null) { return null; @@ -99,7 +100,7 @@ export default class Header extends ImmutablePureComponent { return (
- {account.get('moved') && } + {(!hidden && account.get('moved')) && }
); diff --git a/app/javascript/mastodon/features/compose/components/language_dropdown.js b/app/javascript/mastodon/features/compose/components/language_dropdown.js new file mode 100644 index 000000000..d76490c77 --- /dev/null +++ b/app/javascript/mastodon/features/compose/components/language_dropdown.js @@ -0,0 +1,332 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { injectIntl, defineMessages } from 'react-intl'; +import TextIconButton from './text_icon_button'; +import Overlay from 'react-overlays/lib/Overlay'; +import Motion from 'mastodon/features/ui/util/optional_motion'; +import spring from 'react-motion/lib/spring'; +import { supportsPassiveEvents } from 'detect-passive-events'; +import classNames from 'classnames'; +import { languages as preloadedLanguages } from 'mastodon/initial_state'; +import fuzzysort from 'fuzzysort'; + +const messages = defineMessages({ + changeLanguage: { id: 'compose.language.change', defaultMessage: 'Change language' }, + search: { id: 'compose.language.search', defaultMessage: 'Search languages...' }, + clear: { id: 'emoji_button.clear', defaultMessage: 'Clear' }, +}); + +// Copied from emoji-mart for consistency with emoji picker and since +// they don't export the icons in the package +const icons = { + loupe: ( + + + + ), + + delete: ( + + + + ), +}; + +const listenerOptions = supportsPassiveEvents ? { passive: true } : false; + +class LanguageDropdownMenu extends React.PureComponent { + + static propTypes = { + style: PropTypes.object, + value: PropTypes.string.isRequired, + frequentlyUsedLanguages: PropTypes.arrayOf(PropTypes.string).isRequired, + placement: PropTypes.string.isRequired, + onClose: PropTypes.func.isRequired, + onChange: PropTypes.func.isRequired, + languages: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string)), + intl: PropTypes.object, + }; + + static defaultProps = { + languages: preloadedLanguages, + }; + + state = { + mounted: false, + searchValue: '', + }; + + handleDocumentClick = e => { + if (this.node && !this.node.contains(e.target)) { + this.props.onClose(); + } + } + + componentDidMount () { + document.addEventListener('click', this.handleDocumentClick, false); + document.addEventListener('touchend', this.handleDocumentClick, listenerOptions); + this.setState({ mounted: true }); + } + + componentWillUnmount () { + document.removeEventListener('click', this.handleDocumentClick, false); + document.removeEventListener('touchend', this.handleDocumentClick, listenerOptions); + } + + setRef = c => { + this.node = c; + } + + setListRef = c => { + this.listNode = c; + } + + handleSearchChange = ({ target }) => { + this.setState({ searchValue: target.value }); + } + + search () { + const { languages, value, frequentlyUsedLanguages } = this.props; + const { searchValue } = this.state; + + if (searchValue === '') { + return [...languages].sort((a, b) => { + // Push current selection to the top of the list + + if (a[0] === value) { + return -1; + } else if (b[0] === value) { + return 1; + } else { + // Sort according to frequently used languages + + const indexOfA = frequentlyUsedLanguages.indexOf(a[0]); + const indexOfB = frequentlyUsedLanguages.indexOf(b[0]); + + return ((indexOfA > -1 ? indexOfA : Infinity) - (indexOfB > -1 ? indexOfB : Infinity)); + } + }); + } + + return fuzzysort.go(searchValue, languages, { + keys: ['0', '1', '2'], + limit: 5, + threshold: -10000, + }).map(result => result.obj); + } + + frequentlyUsed () { + const { languages, value } = this.props; + const current = languages.find(lang => lang[0] === value); + const results = []; + + if (current) { + results.push(current); + } + + return results; + } + + handleClick = e => { + const value = e.currentTarget.getAttribute('data-index'); + + e.preventDefault(); + + this.props.onClose(); + this.props.onChange(value); + } + + handleKeyDown = e => { + const { onClose } = this.props; + const index = Array.from(this.listNode.childNodes).findIndex(node => node === e.currentTarget); + + let element = null; + + switch(e.key) { + case 'Escape': + onClose(); + break; + case 'Enter': + this.handleClick(e); + break; + case 'ArrowDown': + element = this.listNode.childNodes[index + 1] || this.listNode.firstChild; + break; + case 'ArrowUp': + element = this.listNode.childNodes[index - 1] || this.listNode.lastChild; + break; + case 'Tab': + if (e.shiftKey) { + element = this.listNode.childNodes[index - 1] || this.listNode.lastChild; + } else { + element = this.listNode.childNodes[index + 1] || this.listNode.firstChild; + } + break; + case 'Home': + element = this.listNode.firstChild; + break; + case 'End': + element = this.listNode.lastChild; + break; + } + + if (element) { + element.focus(); + e.preventDefault(); + e.stopPropagation(); + } + } + + handleSearchKeyDown = e => { + const { onChange, onClose } = this.props; + const { searchValue } = this.state; + + let element = null; + + switch(e.key) { + case 'Tab': + case 'ArrowDown': + element = this.listNode.firstChild; + + if (element) { + element.focus(); + e.preventDefault(); + e.stopPropagation(); + } + + break; + case 'Enter': + element = this.listNode.firstChild; + + if (element) { + onChange(element.getAttribute('data-index')); + onClose(); + } + break; + case 'Escape': + if (searchValue !== '') { + e.preventDefault(); + this.handleClear(); + } + + break; + } + } + + handleClear = () => { + this.setState({ searchValue: '' }); + } + + renderItem = lang => { + const { value } = this.props; + + return ( +
+ {lang[2]} ({lang[1]}) +
+ ); + } + + render () { + const { style, placement, intl } = this.props; + const { mounted, searchValue } = this.state; + const isSearching = searchValue !== ''; + const results = this.search(); + + return ( + + {({ opacity, scaleX, scaleY }) => ( + // It should not be transformed when mounting because the resulting + // size will be used to determine the coordinate of the menu by + // react-overlays +
+
+ + +
+ +
+ {results.map(this.renderItem)} +
+
+ )} +
+ ); + } + +} + +export default @injectIntl +class LanguageDropdown extends React.PureComponent { + + static propTypes = { + value: PropTypes.string, + frequentlyUsedLanguages: PropTypes.arrayOf(PropTypes.string), + intl: PropTypes.object.isRequired, + onChange: PropTypes.func, + onClose: PropTypes.func, + }; + + state = { + open: false, + placement: 'bottom', + }; + + handleToggle = ({ target }) => { + const { top } = target.getBoundingClientRect(); + + if (this.state.open && this.activeElement) { + this.activeElement.focus({ preventScroll: true }); + } + + this.setState({ placement: top * 2 < innerHeight ? 'bottom' : 'top' }); + this.setState({ open: !this.state.open }); + } + + handleClose = () => { + const { value, onClose } = this.props; + + if (this.state.open && this.activeElement) { + this.activeElement.focus({ preventScroll: true }); + } + + this.setState({ open: false }); + onClose(value); + } + + handleChange = value => { + const { onChange } = this.props; + onChange(value); + } + + render () { + const { value, intl, frequentlyUsedLanguages } = this.props; + const { open, placement } = this.state; + + return ( +
+
+ +
+ + + + +
+ ); + } + +} diff --git a/app/javascript/mastodon/features/compose/components/text_icon_button.js b/app/javascript/mastodon/features/compose/components/text_icon_button.js index f0b133538..cd644b680 100644 --- a/app/javascript/mastodon/features/compose/components/text_icon_button.js +++ b/app/javascript/mastodon/features/compose/components/text_icon_button.js @@ -17,11 +17,6 @@ export default class TextIconButton extends React.PureComponent { ariaControls: PropTypes.string, }; - handleClick = (e) => { - e.preventDefault(); - this.props.onClick(); - } - render () { const { label, title, active, ariaControls } = this.props; @@ -31,7 +26,7 @@ export default class TextIconButton extends React.PureComponent { aria-label={title} className={`text-icon-button ${active ? 'active' : ''}`} aria-expanded={active} - onClick={this.handleClick} + onClick={this.props.onClick} aria-controls={ariaControls} style={iconStyle} > {label} diff --git a/app/javascript/mastodon/features/compose/containers/language_dropdown_container.js b/app/javascript/mastodon/features/compose/containers/language_dropdown_container.js new file mode 100644 index 000000000..2a040a13f --- /dev/null +++ b/app/javascript/mastodon/features/compose/containers/language_dropdown_container.js @@ -0,0 +1,34 @@ +import { connect } from 'react-redux'; +import LanguageDropdown from '../components/language_dropdown'; +import { changeComposeLanguage } from 'mastodon/actions/compose'; +import { useLanguage } from 'mastodon/actions/languages'; +import { createSelector } from 'reselect'; +import { Map as ImmutableMap } from 'immutable'; + +const getFrequentlyUsedLanguages = createSelector([ + state => state.getIn(['settings', 'frequentlyUsedLanguages'], ImmutableMap()), +], languageCounters => ( + languageCounters.keySeq() + .sort((a, b) => languageCounters.get(a) - languageCounters.get(b)) + .reverse() + .toArray() +)); + +const mapStateToProps = state => ({ + frequentlyUsedLanguages: getFrequentlyUsedLanguages(state), + value: state.getIn(['compose', 'language']), +}); + +const mapDispatchToProps = dispatch => ({ + + onChange (value) { + dispatch(changeComposeLanguage(value)); + }, + + onClose (value) { + dispatch(useLanguage(value)); + }, + +}); + +export default connect(mapStateToProps, mapDispatchToProps)(LanguageDropdown); diff --git a/app/javascript/mastodon/initial_state.js b/app/javascript/mastodon/initial_state.js index 1389a3c3d..a6d54f134 100644 --- a/app/javascript/mastodon/initial_state.js +++ b/app/javascript/mastodon/initial_state.js @@ -27,5 +27,6 @@ export const showTrends = getMeta('trends'); export const title = getMeta('title'); export const cropImages = getMeta('crop_images'); export const disableSwiping = getMeta('disable_swiping'); +export const languages = initialState && initialState.languages; export default initialState; diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 0ea2a287c..4725d2d7c 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -1257,6 +1257,23 @@ ], "path": "app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.json" }, + { + "descriptors": [ + { + "defaultMessage": "Change language", + "id": "compose.language.change" + }, + { + "defaultMessage": "Search languages...", + "id": "compose.language.search" + }, + { + "defaultMessage": "Clear", + "id": "emoji_button.clear" + } + ], + "path": "app/javascript/mastodon/features/compose/components/language_dropdown.json" + }, { "descriptors": [ { diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index b32005a23..d82f4cb0d 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media Only", "community.column_settings.remote_only": "Remote only", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "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.", @@ -147,6 +149,7 @@ "embed.instructions": "Embed this post on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Activity", + "emoji_button.clear": "Clear", "emoji_button.custom": "Custom", "emoji_button.flags": "Flags", "emoji_button.food": "Food & Drink", diff --git a/app/javascript/mastodon/reducers/compose.js b/app/javascript/mastodon/reducers/compose.js index ea882a71f..d7478c33d 100644 --- a/app/javascript/mastodon/reducers/compose.js +++ b/app/javascript/mastodon/reducers/compose.js @@ -28,6 +28,7 @@ import { COMPOSE_SPOILERNESS_CHANGE, COMPOSE_SPOILER_TEXT_CHANGE, COMPOSE_VISIBILITY_CHANGE, + COMPOSE_LANGUAGE_CHANGE, COMPOSE_COMPOSING_CHANGE, COMPOSE_EMOJI_INSERT, COMPOSE_UPLOAD_CHANGE_REQUEST, @@ -79,6 +80,7 @@ const initialState = ImmutableMap({ suggestions: ImmutableList(), default_privacy: 'public', default_sensitive: false, + default_language: 'en', resetFileKey: Math.floor((Math.random() * 0x10000)), idempotencyKey: null, tagHistory: ImmutableList(), @@ -117,7 +119,8 @@ function clearAll(state) { map.set('is_changing_upload', false); map.set('in_reply_to', null); map.set('privacy', state.get('default_privacy')); - map.set('sensitive', false); + map.set('sensitive', state.get('default_sensitive')); + map.set('language', state.get('default_language')); map.update('media_attachments', list => list.clear()); map.set('poll', null); map.set('idempotencyKey', uuid()); @@ -440,6 +443,7 @@ export default function compose(state = initialState, action) { map.set('caretPosition', null); map.set('idempotencyKey', uuid()); map.set('sensitive', action.status.get('sensitive')); + map.set('language', action.status.get('language')); if (action.status.get('spoiler_text').length > 0) { map.set('spoiler', true); @@ -468,6 +472,7 @@ export default function compose(state = initialState, action) { map.set('caretPosition', null); map.set('idempotencyKey', uuid()); map.set('sensitive', action.status.get('sensitive')); + map.set('language', action.status.get('language')); if (action.spoiler_text.length > 0) { map.set('spoiler', true); @@ -497,6 +502,8 @@ export default function compose(state = initialState, action) { return state.updateIn(['poll', 'options'], options => options.delete(action.index)); case COMPOSE_POLL_SETTINGS_CHANGE: return state.update('poll', poll => poll.set('expires_in', action.expiresIn).set('multiple', action.isMultiple)); + case COMPOSE_LANGUAGE_CHANGE: + return state.set('language', action.language); default: return state; } diff --git a/app/javascript/mastodon/reducers/settings.js b/app/javascript/mastodon/reducers/settings.js index 39639f3dc..afffce917 100644 --- a/app/javascript/mastodon/reducers/settings.js +++ b/app/javascript/mastodon/reducers/settings.js @@ -3,6 +3,7 @@ import { NOTIFICATIONS_FILTER_SET } from '../actions/notifications'; import { COLUMN_ADD, COLUMN_REMOVE, COLUMN_MOVE, COLUMN_PARAMS_CHANGE } from '../actions/columns'; import { STORE_HYDRATE } from '../actions/store'; import { EMOJI_USE } from '../actions/emojis'; +import { LANGUAGE_USE } from '../actions/languages'; import { LIST_DELETE_SUCCESS, LIST_FETCH_FAIL } from '../actions/lists'; import { Map as ImmutableMap, fromJS } from 'immutable'; import uuid from '../uuid'; @@ -129,6 +130,8 @@ const changeColumnParams = (state, uuid, path, value) => { const updateFrequentEmojis = (state, emoji) => state.update('frequentlyUsedEmojis', ImmutableMap(), map => map.update(emoji.id, 0, count => count + 1)).set('saved', false); +const updateFrequentLanguages = (state, language) => state.update('frequentlyUsedLanguages', ImmutableMap(), map => map.update(language, 0, count => count + 1)).set('saved', false); + const filterDeadListColumns = (state, listId) => state.update('columns', columns => columns.filterNot(column => column.get('id') === 'LIST' && column.get('params').get('id') === listId)); export default function settings(state = initialState, action) { @@ -154,6 +157,8 @@ export default function settings(state = initialState, action) { return changeColumnParams(state, action.uuid, action.path, action.value); case EMOJI_USE: return updateFrequentEmojis(state, action.emoji); + case LANGUAGE_USE: + return updateFrequentLanguages(state, action.language); case SETTING_SAVE: return state.set('saved', true); case LIST_FETCH_FAIL: diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 1a1cec6db..b066d3abd 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -4349,7 +4349,6 @@ a.status-card.compact:hover { background: $simple-background-color; box-shadow: 2px 4px 15px rgba($base-shadow-color, 0.4); border-radius: 4px; - margin-left: 40px; overflow: hidden; z-index: 2; @@ -4450,6 +4449,71 @@ a.status-card.compact:hover { } } +.language-dropdown { + &__dropdown { + position: absolute; + background: $simple-background-color; + box-shadow: 2px 4px 15px rgba($base-shadow-color, 0.4); + border-radius: 4px; + overflow: hidden; + z-index: 2; + + &.top { + transform-origin: 50% 100%; + } + + &.bottom { + transform-origin: 50% 0; + } + + .emoji-mart-search { + padding-right: 10px; + } + + .emoji-mart-search-icon { + right: 10px + 5px; + } + + .emoji-mart-scroll { + padding: 0 10px 10px; + } + + &__results { + &__item { + cursor: pointer; + color: $inverted-text-color; + font-weight: 500; + padding: 10px; + border-radius: 4px; + + &:focus, + &:active, + &:hover { + background: $ui-secondary-color; + } + + &__common-name { + color: $darker-text-color; + } + + &.active { + background: $ui-highlight-color; + color: $primary-text-color; + outline: 0; + + .language-dropdown__dropdown__results__item__common-name { + color: $secondary-text-color; + } + + &:hover { + background: lighten($ui-highlight-color, 4%); + } + } + } + } + } +} + .search { position: relative; } diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb index b3b913946..34190a91d 100644 --- a/app/serializers/initial_state_serializer.rb +++ b/app/serializers/initial_state_serializer.rb @@ -2,7 +2,8 @@ class InitialStateSerializer < ActiveModel::Serializer attributes :meta, :compose, :accounts, - :media_attachments, :settings + :media_attachments, :settings, + :languages has_one :push_subscription, serializer: REST::WebPushSubscriptionSerializer @@ -59,6 +60,7 @@ class InitialStateSerializer < ActiveModel::Serializer store[:me] = object.current_account.id.to_s store[:default_privacy] = object.visibility || object.current_account.user.setting_default_privacy store[:default_sensitive] = object.current_account.user.setting_default_sensitive + store[:default_language] = object.current_account.user.preferred_posting_language end store[:text] = object.text if object.text @@ -77,6 +79,10 @@ class InitialStateSerializer < ActiveModel::Serializer { accept_content_types: MediaAttachment.supported_file_extensions + MediaAttachment.supported_mime_types } end + def languages + LanguagesHelper::SUPPORTED_LOCALES.map { |(key, value)| [key, value[0], value[1]] } + end + private def instance_presenter diff --git a/package.json b/package.json index 3b24cd17b..d9d78a98f 100644 --- a/package.json +++ b/package.json @@ -66,6 +66,7 @@ "express": "^4.18.1", "file-loader": "^6.2.0", "font-awesome": "^4.7.0", + "fuzzysort": "^1.9.0", "glob": "^8.0.1", "history": "^4.10.1", "http-link-header": "^1.0.4", diff --git a/yarn.lock b/yarn.lock index 9cd6c481a..f13170e47 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5254,6 +5254,11 @@ functions-have-names@^1.2.2: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== +fuzzysort@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/fuzzysort/-/fuzzysort-1.9.0.tgz#d36d27949eae22340bb6f7ba30ea6751b92a181c" + integrity sha512-MOxCT0qLTwLqmEwc7UtU045RKef7mc8Qz8eR4r2bLNEq9dy/c3ZKMEFp6IEst69otkQdFZ4FfgH2dmZD+ddX1g== + gauge@^4.0.3: version "4.0.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" From 6c699b17234355598d6d3237e8826adf6f0688f9 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 16 May 2022 19:13:36 +0200 Subject: [PATCH 063/652] Fix preferred posting language returning unusable value in REST API (#18428) --- app/models/user.rb | 3 ++- app/serializers/rest/preferences_serializer.rb | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index ab832bcd0..ab2e391e9 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -53,6 +53,7 @@ class User < ApplicationRecord include Settings::Extend include UserRoles include Redisable + include LanguagesHelper # The home and list feeds will be stored in Redis for this amount # of time, and status fan-out to followers will include only people @@ -248,7 +249,7 @@ class User < ApplicationRecord end def preferred_posting_language - settings.default_language || locale + valid_locale_cascade(settings.default_language, locale) end def setting_default_privacy diff --git a/app/serializers/rest/preferences_serializer.rb b/app/serializers/rest/preferences_serializer.rb index 119f0e06d..874bd990d 100644 --- a/app/serializers/rest/preferences_serializer.rb +++ b/app/serializers/rest/preferences_serializer.rb @@ -17,7 +17,7 @@ class REST::PreferencesSerializer < ActiveModel::Serializer end def posting_default_language - object.user.setting_default_language.presence + object.user.preferred_posting_language end def reading_default_sensitive_media From d25015fc5b6c6b31dcf726b02dd0742475d9d9c8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 16 May 2022 20:14:20 +0200 Subject: [PATCH 064/652] Revert "Bump redis from 4.0.6 to 4.1.0" (#18430) --- package.json | 2 +- yarn.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index d9d78a98f..f623faac7 100644 --- a/package.json +++ b/package.json @@ -114,7 +114,7 @@ "react-swipeable-views": "^0.14.0", "react-textarea-autosize": "^8.3.3", "react-toggle": "^4.1.2", - "redis": "^4.1.0", + "redis": "^4.0.6", "redux": "^4.2.0", "redux-immutable": "^4.0.0", "redux-thunk": "^2.4.1", diff --git a/yarn.lock b/yarn.lock index f13170e47..b5e3314cf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9436,7 +9436,7 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" -redis@^4.1.0: +redis@^4.0.6: version "4.1.0" resolved "https://registry.yarnpkg.com/redis/-/redis-4.1.0.tgz#6e400e8edf219e39281afe95e66a3d5f7dcf7289" integrity sha512-5hvJ8wbzpCCiuN1ges6tx2SAh2XXCY0ayresBmu40/SGusWHFW86TAlIPpbimMX2DFHOX7RN34G2XlPA1Z43zg== From c78a622ba4bd7fce511e5f079dd6b8deb17f9cef Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Tue, 17 May 2022 17:12:00 +0900 Subject: [PATCH 065/652] Prevent update to redis 4.1.0 (#18444) --- package.json | 2 +- yarn.lock | 101 +++++++++++++++++++++++++++++---------------------- 2 files changed, 58 insertions(+), 45 deletions(-) diff --git a/package.json b/package.json index f623faac7..e2097f050 100644 --- a/package.json +++ b/package.json @@ -114,7 +114,7 @@ "react-swipeable-views": "^0.14.0", "react-textarea-autosize": "^8.3.3", "react-toggle": "^4.1.2", - "redis": "^4.0.6", + "redis": "^4.0.6 <4.1.0", "redux": "^4.2.0", "redux-immutable": "^4.0.0", "redux-thunk": "^2.4.1", diff --git a/yarn.lock b/yarn.lock index b5e3314cf..9bf4a32c3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1500,6 +1500,41 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@node-redis/bloom@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@node-redis/bloom/-/bloom-1.0.1.tgz#144474a0b7dc4a4b91badea2cfa9538ce0a1854e" + integrity sha512-mXEBvEIgF4tUzdIN89LiYsbi6//EdpFA7L8M+DHCvePXg+bfHWi+ct5VI6nHUFQE5+ohm/9wmgihCH3HSkeKsw== + +"@node-redis/client@1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@node-redis/client/-/client-1.0.5.tgz#ebac5e2bbf12214042a37621604973a954ede755" + integrity sha512-ESZ3bd1f+od62h4MaBLKum+klVJfA4wAeLHcVQBkoXa1l0viFesOWnakLQqKg+UyrlJhZmXJWtu0Y9v7iTMrig== + dependencies: + cluster-key-slot "1.1.0" + generic-pool "3.8.2" + redis-parser "3.0.0" + yallist "4.0.0" + +"@node-redis/graph@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@node-redis/graph/-/graph-1.0.0.tgz#baf8eaac4a400f86ea04d65ec3d65715fd7951ab" + integrity sha512-mRSo8jEGC0cf+Rm7q8mWMKKKqkn6EAnA9IA2S3JvUv/gaWW/73vil7GLNwion2ihTptAm05I9LkepzfIXUKX5g== + +"@node-redis/json@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@node-redis/json/-/json-1.0.2.tgz#8ad2d0f026698dc1a4238cc3d1eb099a3bee5ab8" + integrity sha512-qVRgn8WfG46QQ08CghSbY4VhHFgaTY71WjpwRBGEuqGPfWwfRcIf3OqSpR7Q/45X+v3xd8mvYjywqh0wqJ8T+g== + +"@node-redis/search@1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@node-redis/search/-/search-1.0.5.tgz#96050007eb7c50a7e47080320b4f12aca8cf94c4" + integrity sha512-MCOL8iCKq4v+3HgEQv8zGlSkZyXSXtERgrAJ4TSryIG/eLFy84b57KmNNa/V7M1Q2Wd2hgn2nPCGNcQtk1R1OQ== + +"@node-redis/time-series@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@node-redis/time-series/-/time-series-1.0.2.tgz#5dd3638374edd85ebe0aa6b0e87addc88fb9df69" + integrity sha512-HGQ8YooJ8Mx7l28tD7XjtB3ImLEjlUxG1wC1PAjxu6hPJqjPshUZxAICzDqDjtIbhDTf48WXXUcx8TQJB1XTKA== + "@npmcli/move-file@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464" @@ -1517,40 +1552,6 @@ resolved "https://registry.yarnpkg.com/@rails/ujs/-/ujs-6.1.6.tgz#de486ae0a663e1bed637a012cbb2739bfcfa2031" integrity sha512-2M4zlthYmOC6X/tcPcFd//sIL26a7JbCpGNl8uIrQf+pR1Z47uhYt9cOwVqJTJZPurdy2k+YY3Pn64pqruAPEA== -"@redis/bloom@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@redis/bloom/-/bloom-1.0.2.tgz#42b82ec399a92db05e29fffcdfd9235a5fc15cdf" - integrity sha512-EBw7Ag1hPgFzdznK2PBblc1kdlj5B5Cw3XwI9/oG7tSn85/HKy3X9xHy/8tm/eNXJYHLXHJL/pkwBpFMVVefkw== - -"@redis/client@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@redis/client/-/client-1.1.0.tgz#e52a85aee802796ceb14bf27daf9550f51f238b8" - integrity sha512-xO9JDIgzsZYDl3EvFhl6LC52DP3q3GCMUer8zHgKV6qSYsq1zB+pZs9+T80VgcRogrlRYhi4ZlfX6A+bHiBAgA== - dependencies: - cluster-key-slot "1.1.0" - generic-pool "3.8.2" - yallist "4.0.0" - -"@redis/graph@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@redis/graph/-/graph-1.0.1.tgz#eabc58ba99cd70d0c907169c02b55497e4ec8a99" - integrity sha512-oDE4myMCJOCVKYMygEMWuriBgqlS5FqdWerikMoJxzmmTUErnTRRgmIDa2VcgytACZMFqpAOWDzops4DOlnkfQ== - -"@redis/json@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@redis/json/-/json-1.0.3.tgz#a13fde1d22ebff0ae2805cd8e1e70522b08ea866" - integrity sha512-4X0Qv0BzD9Zlb0edkUoau5c1bInWSICqXAGrpwEltkncUwcxJIGEcVryZhLgb0p/3PkKaLIWkjhHRtLe9yiA7Q== - -"@redis/search@1.0.6": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@redis/search/-/search-1.0.6.tgz#53d7451c2783f011ebc48ec4c2891264e0b22f10" - integrity sha512-pP+ZQRis5P21SD6fjyCeLcQdps+LuTzp2wdUbzxEmNhleighDDTD5ck8+cYof+WLec4csZX7ks+BuoMw0RaZrA== - -"@redis/time-series@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@redis/time-series/-/time-series-1.0.3.tgz#4cfca8e564228c0bddcdf4418cba60c20b224ac4" - integrity sha512-OFp0q4SGrTH0Mruf6oFsHGea58u8vS/iI5+NpYdicaM+7BgqBZH8FFvNZ8rYYLrUO/QRqMq72NpXmxLVNcdmjA== - "@sinclair/typebox@^0.23.3": version "0.23.5" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.23.5.tgz#93f7b9f4e3285a7a9ade7557d9a8d36809cbc47d" @@ -9436,17 +9437,29 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" -redis@^4.0.6: - version "4.1.0" - resolved "https://registry.yarnpkg.com/redis/-/redis-4.1.0.tgz#6e400e8edf219e39281afe95e66a3d5f7dcf7289" - integrity sha512-5hvJ8wbzpCCiuN1ges6tx2SAh2XXCY0ayresBmu40/SGusWHFW86TAlIPpbimMX2DFHOX7RN34G2XlPA1Z43zg== +redis-errors@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad" + integrity sha1-62LSrbFeTq9GEMBK/hUpOEJQq60= + +redis-parser@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4" + integrity sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ= dependencies: - "@redis/bloom" "1.0.2" - "@redis/client" "1.1.0" - "@redis/graph" "1.0.1" - "@redis/json" "1.0.3" - "@redis/search" "1.0.6" - "@redis/time-series" "1.0.3" + redis-errors "^1.0.0" + +"redis@^4.0.6 <4.1.0": + version "4.0.6" + resolved "https://registry.yarnpkg.com/redis/-/redis-4.0.6.tgz#a2ded4d9f4f4bad148e54781051618fc684cd858" + integrity sha512-IaPAxgF5dV0jx+A9l6yd6R9/PAChZIoAskDVRzUODeLDNhsMlq7OLLTmu0AwAr0xjrJ1bibW5xdpRwqIQ8Q0Xg== + dependencies: + "@node-redis/bloom" "1.0.1" + "@node-redis/client" "1.0.5" + "@node-redis/graph" "1.0.0" + "@node-redis/json" "1.0.2" + "@node-redis/search" "1.0.5" + "@node-redis/time-series" "1.0.2" redux-immutable@^4.0.0: version "4.0.0" From e0bdaeab657d9a320aaf506d98ca82d41e7bfdd5 Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 17 May 2022 14:52:26 +0200 Subject: [PATCH 066/652] Fix NoMethodError when resolving a link that redirects to a local post (#18314) * Fix NoMethodError when resolving a link that redirects to a local post * Fix tests --- .../fetch_remote_status_service.rb | 1 + .../fetch_remote_status_service_spec.rb | 40 +++++++++---------- .../fetch_remote_status_service_spec.rb | 6 +-- spec/services/resolve_url_service_spec.rb | 19 +++++++++ 4 files changed, 42 insertions(+), 24 deletions(-) diff --git a/app/services/activitypub/fetch_remote_status_service.rb b/app/services/activitypub/fetch_remote_status_service.rb index 9672b3d2b..803098245 100644 --- a/app/services/activitypub/fetch_remote_status_service.rb +++ b/app/services/activitypub/fetch_remote_status_service.rb @@ -30,6 +30,7 @@ class ActivityPub::FetchRemoteStatusService < BaseService end return if activity_json.nil? || object_uri.nil? || !trustworthy_attribution?(@json['id'], actor_uri) + return ActivityPub::TagManager.instance.uri_to_resource(object_uri, Status) if ActivityPub::TagManager.instance.local_uri?(object_uri) actor = account_from_uri(actor_uri) diff --git a/spec/services/activitypub/fetch_remote_status_service_spec.rb b/spec/services/activitypub/fetch_remote_status_service_spec.rb index 943cb161d..7359ca0b4 100644 --- a/spec/services/activitypub/fetch_remote_status_service_spec.rb +++ b/spec/services/activitypub/fetch_remote_status_service_spec.rb @@ -3,16 +3,15 @@ require 'rails_helper' RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do include ActionView::Helpers::TextHelper - let!(:sender) { Fabricate(:account).tap { |account| account.update(uri: ActivityPub::TagManager.instance.uri_for(account)) } } + let!(:sender) { Fabricate(:account, domain: 'foo.bar', uri: 'https://foo.bar') } let!(:recipient) { Fabricate(:account) } - let!(:valid_domain) { Rails.configuration.x.local_domain } let(:existing_status) { nil } let(:note) do { '@context': 'https://www.w3.org/ns/activitystreams', - id: "https://#{valid_domain}/@foo/1234", + id: "https://foo.bar/@foo/1234", type: 'Note', content: 'Lorem ipsum', attributedTo: ActivityPub::TagManager.instance.uri_for(sender), @@ -22,7 +21,8 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do subject { described_class.new } before do - stub_request(:head, 'https://example.com/watch?v=12345').to_return(status: 404, body: '') + stub_request(:get, 'https://foo.bar/watch?v=12345').to_return(status: 404, body: '') + stub_request(:get, object[:id]).to_return(body: Oj.dump(object)) end describe '#call' do @@ -46,7 +46,7 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do let(:object) do { '@context': 'https://www.w3.org/ns/activitystreams', - id: "https://#{valid_domain}/@foo/1234", + id: "https://foo.bar/@foo/1234", type: 'Video', name: 'Nyan Cat 10 hours remix', attributedTo: ActivityPub::TagManager.instance.uri_for(sender), @@ -54,13 +54,13 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do { type: 'Link', mimeType: 'application/x-bittorrent', - href: "https://#{valid_domain}/12345.torrent", + href: "https://foo.bar/12345.torrent", }, { type: 'Link', mimeType: 'text/html', - href: "https://#{valid_domain}/watch?v=12345", + href: "https://foo.bar/watch?v=12345", }, ], } @@ -70,8 +70,8 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do status = sender.statuses.first expect(status).to_not be_nil - expect(status.url).to eq "https://#{valid_domain}/watch?v=12345" - expect(strip_tags(status.text)).to eq "Nyan Cat 10 hours remixhttps://#{valid_domain}/watch?v=12345" + expect(status.url).to eq "https://foo.bar/watch?v=12345" + expect(strip_tags(status.text)).to eq "Nyan Cat 10 hours remixhttps://foo.bar/watch?v=12345" end end @@ -79,7 +79,7 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do let(:object) do { '@context': 'https://www.w3.org/ns/activitystreams', - id: "https://#{valid_domain}/@foo/1234", + id: "https://foo.bar/@foo/1234", type: 'Audio', name: 'Nyan Cat 10 hours remix', attributedTo: ActivityPub::TagManager.instance.uri_for(sender), @@ -87,13 +87,13 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do { type: 'Link', mimeType: 'application/x-bittorrent', - href: "https://#{valid_domain}/12345.torrent", + href: "https://foo.bar/12345.torrent", }, { type: 'Link', mimeType: 'text/html', - href: "https://#{valid_domain}/watch?v=12345", + href: "https://foo.bar/watch?v=12345", }, ], } @@ -103,8 +103,8 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do status = sender.statuses.first expect(status).to_not be_nil - expect(status.url).to eq "https://#{valid_domain}/watch?v=12345" - expect(strip_tags(status.text)).to eq "Nyan Cat 10 hours remixhttps://#{valid_domain}/watch?v=12345" + expect(status.url).to eq "https://foo.bar/watch?v=12345" + expect(strip_tags(status.text)).to eq "Nyan Cat 10 hours remixhttps://foo.bar/watch?v=12345" end end @@ -112,7 +112,7 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do let(:object) do { '@context': 'https://www.w3.org/ns/activitystreams', - id: "https://#{valid_domain}/@foo/1234", + id: "https://foo.bar/@foo/1234", type: 'Event', name: "Let's change the world", attributedTo: ActivityPub::TagManager.instance.uri_for(sender) @@ -123,8 +123,8 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do status = sender.statuses.first expect(status).to_not be_nil - expect(status.url).to eq "https://#{valid_domain}/@foo/1234" - expect(strip_tags(status.text)).to eq "Let's change the worldhttps://#{valid_domain}/@foo/1234" + expect(status.url).to eq "https://foo.bar/@foo/1234" + expect(strip_tags(status.text)).to eq "Let's change the worldhttps://foo.bar/@foo/1234" end end @@ -154,7 +154,7 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do let(:object) do { '@context': 'https://www.w3.org/ns/activitystreams', - id: "https://#{valid_domain}/@foo/1234/create", + id: "https://foo.bar/@foo/1234/create", type: 'Create', actor: ActivityPub::TagManager.instance.uri_for(sender), object: note, @@ -174,7 +174,7 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do let(:object) do { '@context': 'https://www.w3.org/ns/activitystreams', - id: "https://#{valid_domain}/@foo/1234/create", + id: "https://foo.bar/@foo/1234/create", type: 'Create', actor: ActivityPub::TagManager.instance.uri_for(sender), object: { @@ -208,7 +208,7 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do let(:object) do { '@context': 'https://www.w3.org/ns/activitystreams', - id: "https://#{valid_domain}/@foo/1234/create", + id: "https://foo.bar/@foo/1234/create", type: 'Create', actor: ActivityPub::TagManager.instance.uri_for(sender), object: note.merge(updated: '2021-09-08T22:39:25Z'), diff --git a/spec/services/fetch_remote_status_service_spec.rb b/spec/services/fetch_remote_status_service_spec.rb index 0e63cc9eb..fe5f1aed1 100644 --- a/spec/services/fetch_remote_status_service_spec.rb +++ b/spec/services/fetch_remote_status_service_spec.rb @@ -1,14 +1,13 @@ require 'rails_helper' RSpec.describe FetchRemoteStatusService, type: :service do - let(:account) { Fabricate(:account) } + let(:account) { Fabricate(:account, domain: 'example.org', uri: 'https://example.org/foo') } let(:prefetched_body) { nil } - let(:valid_domain) { Rails.configuration.x.local_domain } let(:note) do { '@context': 'https://www.w3.org/ns/activitystreams', - id: "https://#{valid_domain}/@foo/1234", + id: "https://example.org/@foo/1234", type: 'Note', content: 'Lorem ipsum', attributedTo: ActivityPub::TagManager.instance.uri_for(account), @@ -20,7 +19,6 @@ RSpec.describe FetchRemoteStatusService, type: :service do let(:prefetched_body) { Oj.dump(note) } before do - account.update(uri: ActivityPub::TagManager.instance.uri_for(account)) subject end diff --git a/spec/services/resolve_url_service_spec.rb b/spec/services/resolve_url_service_spec.rb index 1b639dea9..b3e3defbf 100644 --- a/spec/services/resolve_url_service_spec.rb +++ b/spec/services/resolve_url_service_spec.rb @@ -126,5 +126,24 @@ describe ResolveURLService, type: :service do end end end + + context 'searching for a link that redirects to a local public status' do + let(:account) { Fabricate(:account) } + let(:poster) { Fabricate(:account) } + let!(:status) { Fabricate(:status, account: poster, visibility: :public) } + let(:url) { 'https://link.to/foobar' } + let(:status_url) { ActivityPub::TagManager.instance.url_for(status) } + let(:uri) { ActivityPub::TagManager.instance.uri_for(status) } + + before do + stub_request(:get, url).to_return(status: 302, headers: { 'Location' => status_url }) + body = ActiveModelSerializers::SerializableResource.new(status, serializer: ActivityPub::NoteSerializer, adapter: ActivityPub::Adapter).to_json + stub_request(:get, status_url).to_return(body: body, headers: { 'Content-Type' => 'application/activity+json' }) + end + + it 'returns status by url' do + expect(subject.call(url, on_behalf_of: account)).to eq(status) + end + end end end From 9fcef31580075d679c0a66f9a5e99cd1b526a24c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 May 2022 21:01:23 +0900 Subject: [PATCH 067/652] Bump @babel/core from 7.17.10 to 7.17.12 (#18439) Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.17.10 to 7.17.12. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.17.12/packages/babel-core) --- updated-dependencies: - dependency-name: "@babel/core" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 107 ++++++++++++++++++++++++--------------------------- 2 files changed, 52 insertions(+), 57 deletions(-) diff --git a/package.json b/package.json index e2097f050..9922115b2 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ ], "private": true, "dependencies": { - "@babel/core": "^7.17.10", + "@babel/core": "^7.17.12", "@babel/plugin-proposal-decorators": "^7.17.9", "@babel/plugin-transform-react-inline-elements": "^7.16.7", "@babel/plugin-transform-runtime": "^7.17.10", diff --git a/yarn.lock b/yarn.lock index 9bf4a32c3..004c8fabb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -28,34 +28,34 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw== -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.17.10", "@babel/core@^7.7.2": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.10.tgz#74ef0fbf56b7dfc3f198fc2d927f4f03e12f4b05" - integrity sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA== +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.17.12", "@babel/core@^7.7.2": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.12.tgz#b4eb2d7ebc3449b062381644c93050db545b70ee" + integrity sha512-44ODe6O1IVz9s2oJE3rZ4trNNKTX9O7KpQpfAP4t8QII/zwrVRHL7i2pxhqtcY7tqMLrrKfMlBKnm1QlrRFs5w== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.10" + "@babel/generator" "^7.17.12" "@babel/helper-compilation-targets" "^7.17.10" - "@babel/helper-module-transforms" "^7.17.7" + "@babel/helper-module-transforms" "^7.17.12" "@babel/helpers" "^7.17.9" - "@babel/parser" "^7.17.10" + "@babel/parser" "^7.17.12" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.10" - "@babel/types" "^7.17.10" + "@babel/traverse" "^7.17.12" + "@babel/types" "^7.17.12" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.17.10", "@babel/generator@^7.7.2": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.10.tgz#c281fa35b0c349bbe9d02916f4ae08fc85ed7189" - integrity sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg== +"@babel/generator@^7.17.12", "@babel/generator@^7.7.2": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.12.tgz#5970e6160e9be0428e02f4aba62d8551ec366cc8" + integrity sha512-V49KtZiiiLjH/CnIW6OjJdrenrGoyh6AmKQ3k2AZFKozC1h846Q4NYlZ5nqAigPDUXfGzC88+LOUuG8yKd2kCw== dependencies: - "@babel/types" "^7.17.10" - "@jridgewell/gen-mapping" "^0.1.0" + "@babel/types" "^7.17.12" + "@jridgewell/gen-mapping" "^0.3.0" jsesc "^2.5.1" "@babel/helper-annotate-as-pure@^7.16.7": @@ -214,10 +214,10 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-module-transforms@^7.16.7", "@babel/helper-module-transforms@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" - integrity sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw== +"@babel/helper-module-transforms@^7.16.7", "@babel/helper-module-transforms@^7.17.12", "@babel/helper-module-transforms@^7.17.7": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.12.tgz#bec00139520cb3feb078ef7a4578562480efb77e" + integrity sha512-t5s2BeSWIghhFRPh9XMn6EIGmvn8Lmw5RVASJzkIx1mSemubQQBNIZiQD7WzaFmaHIrjAec4x8z9Yx8SjJ1/LA== dependencies: "@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-module-imports" "^7.16.7" @@ -225,8 +225,8 @@ "@babel/helper-split-export-declaration" "^7.16.7" "@babel/helper-validator-identifier" "^7.16.7" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" - "@babel/types" "^7.17.0" + "@babel/traverse" "^7.17.12" + "@babel/types" "^7.17.12" "@babel/helper-optimise-call-expression@^7.16.7": version "7.16.7" @@ -333,10 +333,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.10", "@babel/parser@^7.7.0": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.10.tgz#873b16db82a8909e0fbd7f115772f4b739f6ce78" - integrity sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.12", "@babel/parser@^7.7.0": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.12.tgz#36c2ed06944e3691ba82735fc4cf62d12d491a23" + integrity sha512-FLzHmN9V3AJIrWfOpvRlZCeVg/WLdicSnTMsLur6uDj9TT8ymUlG9XxURdW/XvuygK+2CW0poOJABdA4m/YKxA== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": version "7.16.7" @@ -1064,26 +1064,26 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.10", "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.10.tgz#1ee1a5ac39f4eac844e6cf855b35520e5eb6f8b5" - integrity sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw== +"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.12", "@babel/traverse@^7.17.9", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.12.tgz#011874d2abbca0ccf1adbe38f6f7a4ff1747599c" + integrity sha512-zULPs+TbCvOkIFd4FrG53xrpxvCBwLIgo6tO0tJorY7YV2IWFxUfS/lXDJbGgfyYt9ery/Gxj2niwttNnB0gIw== dependencies: "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.10" + "@babel/generator" "^7.17.12" "@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-function-name" "^7.17.9" "@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.17.10" - "@babel/types" "^7.17.10" + "@babel/parser" "^7.17.12" + "@babel/types" "^7.17.12" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.10", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.10.tgz#d35d7b4467e439fcf06d195f8100e0fea7fc82c4" - integrity sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A== +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.10", "@babel/types@^7.17.12", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.12.tgz#1210690a516489c0200f355d87619157fbbd69a0" + integrity sha512-rH8i29wcZ6x9xjzI5ILHL/yZkbQnCERdHlogKuIb4PUr7do4iT8DPekrTbBLWTnRQm6U0GYABbTMSzijmEqlAg== dependencies: "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" @@ -1461,13 +1461,14 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" -"@jridgewell/gen-mapping@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" - integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== +"@jridgewell/gen-mapping@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9" + integrity sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg== dependencies: "@jridgewell/set-array" "^1.0.0" "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" "@jridgewell/resolve-uri@^3.0.3": version "3.0.4" @@ -1500,6 +1501,14 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" + integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@node-redis/bloom@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@node-redis/bloom/-/bloom-1.0.1.tgz#144474a0b7dc4a4b91badea2cfa9538ce0a1854e" @@ -3462,14 +3471,7 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== - dependencies: - safe-buffer "~5.1.1" - -convert-source-map@^1.5.0: +convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.8.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== @@ -3895,7 +3897,7 @@ debug@2.6.9, debug@^2.1.1, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: dependencies: ms "2.0.0" -debug@4: +debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -3909,13 +3911,6 @@ debug@^3.1.1, debug@^3.2.6, debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== - dependencies: - ms "2.1.2" - decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" From 82d4a45630028fb9bc8c72db3e5fd3188d807b83 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 May 2022 21:01:58 +0900 Subject: [PATCH 068/652] Bump @babel/preset-react from 7.16.7 to 7.17.12 (#18436) Bumps [@babel/preset-react](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-react) from 7.16.7 to 7.17.12. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.17.12/packages/babel-preset-react) --- updated-dependencies: - dependency-name: "@babel/preset-react" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 51 +++++++++++++++++++++++++++++++++------------------ 2 files changed, 34 insertions(+), 19 deletions(-) diff --git a/package.json b/package.json index 9922115b2..bb739d25f 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "@babel/plugin-transform-react-inline-elements": "^7.16.7", "@babel/plugin-transform-runtime": "^7.17.10", "@babel/preset-env": "^7.17.10", - "@babel/preset-react": "^7.16.7", + "@babel/preset-react": "^7.17.12", "@babel/runtime": "^7.17.9", "@gamestdio/websocket": "^0.3.2", "@github/webauthn-json": "^0.5.7", diff --git a/yarn.lock b/yarn.lock index 004c8fabb..5403e6518 100644 --- a/yarn.lock +++ b/yarn.lock @@ -235,10 +235,10 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" - integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.17.12", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz#86c2347da5acbf5583ba0a10aed4c9bf9da9cf96" + integrity sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA== "@babel/helper-remap-async-to-generator@^7.16.8": version "7.16.8" @@ -557,13 +557,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.12.13", "@babel/plugin-syntax-jsx@^7.16.7": +"@babel/plugin-syntax-jsx@^7.12.13": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665" integrity sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q== dependencies: "@babel/helper-plugin-utils" "^7.16.7" +"@babel/plugin-syntax-jsx@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.17.12.tgz#834035b45061983a491f60096f61a2e7c5674a47" + integrity sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" @@ -834,16 +841,16 @@ dependencies: "@babel/plugin-transform-react-jsx" "^7.16.7" -"@babel/plugin-transform-react-jsx@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.7.tgz#86a6a220552afd0e4e1f0388a68a372be7add0d4" - integrity sha512-8D16ye66fxiE8m890w0BpPpngG9o9OVBBy0gH2E+2AR7qMR2ZpTYJEqLxAsoroenMId0p/wMW+Blc0meDgu0Ag== +"@babel/plugin-transform-react-jsx@^7.16.7", "@babel/plugin-transform-react-jsx@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.12.tgz#2aa20022709cd6a3f40b45d60603d5f269586dba" + integrity sha512-Lcaw8bxd1DKht3thfD4A12dqo1X16he1Lm8rIv8sTwjAYNInRS1qHa9aJoqvzpscItXvftKDCfaEQzwoVyXpEQ== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-jsx" "^7.16.7" - "@babel/types" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-jsx" "^7.17.12" + "@babel/types" "^7.17.12" "@babel/plugin-transform-react-pure-annotations@^7.16.7": version "7.16.7" @@ -1021,15 +1028,15 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.16.7.tgz#4c18150491edc69c183ff818f9f2aecbe5d93852" - integrity sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA== +"@babel/preset-react@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.17.12.tgz#62adbd2d1870c0de3893095757ed5b00b492ab3d" + integrity sha512-h5U+rwreXtZaRBEQhW1hOJLMq8XNJBQ/9oymXiCXTuT/0uOwpbT0gUt+sXeOqoXBgNuUKI7TaObVwoEyWkpFgA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-validator-option" "^7.16.7" "@babel/plugin-transform-react-display-name" "^7.16.7" - "@babel/plugin-transform-react-jsx" "^7.16.7" + "@babel/plugin-transform-react-jsx" "^7.17.12" "@babel/plugin-transform-react-jsx-development" "^7.16.7" "@babel/plugin-transform-react-pure-annotations" "^7.16.7" @@ -1088,6 +1095,14 @@ "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" +"@babel/types@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.12.tgz#1210690a516489c0200f355d87619157fbbd69a0" + integrity sha512-rH8i29wcZ6x9xjzI5ILHL/yZkbQnCERdHlogKuIb4PUr7do4iT8DPekrTbBLWTnRQm6U0GYABbTMSzijmEqlAg== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" From a4d7426f10efac27527cb2a9b24b829596d2a1cf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 May 2022 21:02:31 +0900 Subject: [PATCH 069/652] Bump @babel/plugin-transform-runtime from 7.17.10 to 7.17.12 (#18441) Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.17.10 to 7.17.12. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.17.12/packages/babel-plugin-transform-runtime) --- updated-dependencies: - dependency-name: "@babel/plugin-transform-runtime" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index bb739d25f..4d2bdc181 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "@babel/core": "^7.17.12", "@babel/plugin-proposal-decorators": "^7.17.9", "@babel/plugin-transform-react-inline-elements": "^7.16.7", - "@babel/plugin-transform-runtime": "^7.17.10", + "@babel/plugin-transform-runtime": "^7.17.12", "@babel/preset-env": "^7.17.10", "@babel/preset-react": "^7.17.12", "@babel/runtime": "^7.17.9", diff --git a/yarn.lock b/yarn.lock index 5403e6518..1c126f9e3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -874,13 +874,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-runtime@^7.17.10": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.10.tgz#b89d821c55d61b5e3d3c3d1d636d8d5a81040ae1" - integrity sha512-6jrMilUAJhktTr56kACL8LnWC5hx3Lf27BS0R0DSyW/OoJfb/iTHeE96V3b1dgKG3FSFdd/0culnYWMkjcKCig== +"@babel/plugin-transform-runtime@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.12.tgz#5dc79735c4038c6f4fc0490f68f2798ce608cadd" + integrity sha512-xsl5MeGjWnmV6Ui9PfILM2+YRpa3GqLOrczPpXV3N2KCgQGU+sU8OfzuMbjkIdfvZEZIm+3y0V7w58sk0SGzlw== dependencies: "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" babel-plugin-polyfill-corejs2 "^0.3.0" babel-plugin-polyfill-corejs3 "^0.5.0" babel-plugin-polyfill-regenerator "^0.3.0" From d842f645d11e99521d1c27a13ce53f97de357d52 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 May 2022 21:16:16 +0900 Subject: [PATCH 070/652] Bump @babel/plugin-proposal-decorators from 7.17.9 to 7.17.12 (#18442) Bumps [@babel/plugin-proposal-decorators](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-proposal-decorators) from 7.17.9 to 7.17.12. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.17.12/packages/babel-plugin-proposal-decorators) --- updated-dependencies: - dependency-name: "@babel/plugin-proposal-decorators" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Yamagishi Kazutoshi --- package.json | 2 +- yarn.lock | 32 ++++++++++++++++---------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index 4d2bdc181..f332b2568 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "private": true, "dependencies": { "@babel/core": "^7.17.12", - "@babel/plugin-proposal-decorators": "^7.17.9", + "@babel/plugin-proposal-decorators": "^7.17.12", "@babel/plugin-transform-react-inline-elements": "^7.16.7", "@babel/plugin-transform-runtime": "^7.17.12", "@babel/preset-env": "^7.17.10", diff --git a/yarn.lock b/yarn.lock index 1c126f9e3..c6246eea8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -91,10 +91,10 @@ browserslist "^4.20.2" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.6", "@babel/helper-create-class-features-plugin@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz#71835d7fb9f38bd9f1378e40a4c0902fdc2ea49d" - integrity sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ== +"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.12", "@babel/helper-create-class-features-plugin@^7.17.6": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.12.tgz#d4f8393fc4838cbff6b7c199af5229aee16d07cf" + integrity sha512-sZoOeUTkFJMyhqCei2+Z+wtH/BehW8NVKQt7IRUQlRiOARuXymJYfN/FCcI8CvVbR0XVyDM6eLFOlR7YtiXnew== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-environment-visitor" "^7.16.7" @@ -380,16 +380,16 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-proposal-decorators@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.9.tgz#67a1653be9c77ce5b6c318aa90c8287b87831619" - integrity sha512-EfH2LZ/vPa2wuPwJ26j+kYRkaubf89UlwxKXtxqEm57HrgSEYDB8t4swFP+p8LcI9yiP9ZRJJjo/58hS6BnaDA== +"@babel/plugin-proposal-decorators@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.12.tgz#26a6a605f271a6703abf97f8fafd1368834c131c" + integrity sha512-gL0qSSeIk/VRfTDgtQg/EtejENssN/r3p5gJsPie1UacwiHibprpr19Z0pcK3XKuqQvjGVxsQ37Tl1MGfXzonA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.17.9" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-replace-supers" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/plugin-syntax-decorators" "^7.17.0" + "@babel/plugin-syntax-decorators" "^7.17.12" charcodes "^0.2.0" "@babel/plugin-proposal-dynamic-import@^7.16.7": @@ -522,12 +522,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-decorators@^7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.0.tgz#a2be3b2c9fe7d78bd4994e790896bc411e2f166d" - integrity sha512-qWe85yCXsvDEluNP0OyeQjH63DlhAR3W7K9BxxU1MvbDb48tgBG+Ao6IJJ6smPDrrVzSQZrbF6donpkFBMcs3A== +"@babel/plugin-syntax-decorators@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.12.tgz#02e8f678602f0af8222235271efea945cfdb018a" + integrity sha512-D1Hz0qtGTza8K2xGyEdVNCYLdVHukAcbQr4K3/s6r/esadyEriZovpJimQOpu8ju4/jV8dW/1xdaE0UpDroidw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" From 1a880533acb1a8b6ee11db357d8cb8864f0e05e3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 May 2022 21:25:23 +0900 Subject: [PATCH 071/652] Bump @babel/preset-env from 7.17.10 to 7.17.12 (#18443) Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.17.10 to 7.17.12. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.17.12/packages/babel-preset-env) --- updated-dependencies: - dependency-name: "@babel/preset-env" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Yamagishi Kazutoshi --- package.json | 2 +- yarn.lock | 484 ++++++++++++++++++++++++++------------------------- 2 files changed, 246 insertions(+), 240 deletions(-) diff --git a/package.json b/package.json index f332b2568..d0360b561 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "@babel/plugin-proposal-decorators": "^7.17.12", "@babel/plugin-transform-react-inline-elements": "^7.16.7", "@babel/plugin-transform-runtime": "^7.17.12", - "@babel/preset-env": "^7.17.10", + "@babel/preset-env": "^7.17.12", "@babel/preset-react": "^7.17.12", "@babel/runtime": "^7.17.9", "@gamestdio/websocket": "^0.3.2", diff --git a/yarn.lock b/yarn.lock index c6246eea8..fe72c5b74 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,7 +23,7 @@ dependencies: "@babel/highlight" "^7.16.7" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.17.0", "@babel/compat-data@^7.17.10": +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.17.10": version "7.17.10" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw== @@ -91,6 +91,19 @@ browserslist "^4.20.2" semver "^6.3.0" +"@babel/helper-create-class-features-plugin@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.12.tgz#d4f8393fc4838cbff6b7c199af5229aee16d07cf" + integrity sha512-sZoOeUTkFJMyhqCei2+Z+wtH/BehW8NVKQt7IRUQlRiOARuXymJYfN/FCcI8CvVbR0XVyDM6eLFOlR7YtiXnew== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-member-expression-to-functions" "^7.17.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.12", "@babel/helper-create-class-features-plugin@^7.17.6": version "7.17.12" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.12.tgz#d4f8393fc4838cbff6b7c199af5229aee16d07cf" @@ -112,10 +125,10 @@ "@babel/helper-annotate-as-pure" "^7.16.7" regexpu-core "^4.7.1" -"@babel/helper-create-regexp-features-plugin@^7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1" - integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA== +"@babel/helper-create-regexp-features-plugin@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz#bb37ca467f9694bbe55b884ae7a5cc1e0084e4fd" + integrity sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" regexpu-core "^5.0.1" @@ -214,7 +227,7 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-module-transforms@^7.16.7", "@babel/helper-module-transforms@^7.17.12", "@babel/helper-module-transforms@^7.17.7": +"@babel/helper-module-transforms@^7.17.12": version "7.17.12" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.12.tgz#bec00139520cb3feb078ef7a4578562480efb77e" integrity sha512-t5s2BeSWIghhFRPh9XMn6EIGmvn8Lmw5RVASJzkIx1mSemubQQBNIZiQD7WzaFmaHIrjAec4x8z9Yx8SjJ1/LA== @@ -338,46 +351,46 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.12.tgz#36c2ed06944e3691ba82735fc4cf62d12d491a23" integrity sha512-FLzHmN9V3AJIrWfOpvRlZCeVg/WLdicSnTMsLur6uDj9TT8ymUlG9XxURdW/XvuygK+2CW0poOJABdA4m/YKxA== -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050" - integrity sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz#1dca338caaefca368639c9ffb095afbd4d420b1e" + integrity sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz#cc001234dfc139ac45f6bcf801866198c8c72ff9" - integrity sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz#0d498ec8f0374b1e2eb54b9cb2c4c78714c77753" + integrity sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - "@babel/plugin-proposal-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-optional-chaining" "^7.17.12" -"@babel/plugin-proposal-async-generator-functions@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz#3bdd1ebbe620804ea9416706cd67d60787504bc8" - integrity sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ== +"@babel/plugin-proposal-async-generator-functions@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz#094a417e31ce7e692d84bab06c8e2a607cbeef03" + integrity sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-remap-async-to-generator" "^7.16.8" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" - integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww== +"@babel/plugin-proposal-class-properties@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz#84f65c0cc247d46f40a6da99aadd6438315d80a4" + integrity sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-proposal-class-static-block@^7.17.6": - version "7.17.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz#164e8fd25f0d80fa48c5a4d1438a6629325ad83c" - integrity sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA== +"@babel/plugin-proposal-class-static-block@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.12.tgz#947f09dd496322c9543ec3b318bf52b4d9833334" + integrity sha512-8ILyDG6eL14F8iub97dVc8q35Md0PJYAnA5Kz9NACFOkt6ffCcr0FISyUPKHsvuAy36fkpIitxZ9bVYPFMGQHA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.17.6" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-proposal-decorators@^7.17.12": @@ -400,36 +413,36 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-proposal-export-namespace-from@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz#09de09df18445a5786a305681423ae63507a6163" - integrity sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA== +"@babel/plugin-proposal-export-namespace-from@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz#b22864ccd662db9606edb2287ea5fd1709f05378" + integrity sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz#9732cb1d17d9a2626a08c5be25186c195b6fa6e8" - integrity sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ== +"@babel/plugin-proposal-json-strings@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz#f4642951792437233216d8c1af370bb0fbff4664" + integrity sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz#be23c0ba74deec1922e639832904be0bea73cdea" - integrity sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg== +"@babel/plugin-proposal-logical-assignment-operators@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz#c64a1bcb2b0a6d0ed2ff674fd120f90ee4b88a23" + integrity sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99" - integrity sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz#1e93079bbc2cbc756f6db6a1925157c4a92b94be" + integrity sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" "@babel/plugin-proposal-numeric-separator@^7.16.7": @@ -440,16 +453,16 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.17.3": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz#d9eb649a54628a51701aef7e0ea3d17e2b9dd390" - integrity sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw== +"@babel/plugin-proposal-object-rest-spread@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.12.tgz#f94a91715a7f2f8cfb3c06af820c776440bc0148" + integrity sha512-6l9cO3YXXRh4yPCPRA776ZyJ3RobG4ZKJZhp7NDRbKIOeV3dBPG8FXCF7ZtiO2RTCIOkQOph1xDDcc01iWVNjQ== dependencies: - "@babel/compat-data" "^7.17.0" - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/compat-data" "^7.17.10" + "@babel/helper-compilation-targets" "^7.17.10" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.16.7" + "@babel/plugin-transform-parameters" "^7.17.12" "@babel/plugin-proposal-optional-catch-binding@^7.16.7": version "7.16.7" @@ -459,40 +472,40 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a" - integrity sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA== +"@babel/plugin-proposal-optional-chaining@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz#f96949e9bacace3a9066323a5cf90cfb9de67174" + integrity sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-methods@^7.16.11": - version "7.16.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz#e8df108288555ff259f4527dbe84813aac3a1c50" - integrity sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw== +"@babel/plugin-proposal-private-methods@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz#c2ca3a80beb7539289938da005ad525a038a819c" + integrity sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.10" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-proposal-private-property-in-object@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz#b0b8cef543c2c3d57e59e2c611994861d46a3fce" - integrity sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ== +"@babel/plugin-proposal-private-property-in-object@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz#b02efb7f106d544667d91ae97405a9fd8c93952d" + integrity sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-create-class-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.16.7", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz#635d18eb10c6214210ffc5ff4932552de08188a2" - integrity sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg== +"@babel/plugin-proposal-unicode-property-regex@^7.17.12", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz#3dbd7a67bd7f94c8238b394da112d86aaf32ad4d" + integrity sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-regexp-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -634,20 +647,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-arrow-functions@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154" - integrity sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ== +"@babel/plugin-transform-arrow-functions@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz#dddd783b473b1b1537ef46423e3944ff24898c45" + integrity sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-async-to-generator@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz#b83dff4b970cf41f1b819f8b49cc0cfbaa53a808" - integrity sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg== +"@babel/plugin-transform-async-to-generator@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz#dbe5511e6b01eee1496c944e35cdfe3f58050832" + integrity sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ== dependencies: "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-remap-async-to-generator" "^7.16.8" "@babel/plugin-transform-block-scoped-functions@^7.16.7": @@ -657,40 +670,40 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-block-scoping@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87" - integrity sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ== +"@babel/plugin-transform-block-scoping@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.17.12.tgz#68fc3c4b3bb7dfd809d97b7ed19a584052a2725c" + integrity sha512-jw8XW/B1i7Lqwqj2CbrViPcZijSxfguBWZP2aN59NHgxUyO/OcO1mfdCxH13QhN5LbWhPkX+f+brKGhZTiqtZQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-classes@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00" - integrity sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ== +"@babel/plugin-transform-classes@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.17.12.tgz#da889e89a4d38375eeb24985218edeab93af4f29" + integrity sha512-cvO7lc7pZat6BsvH6l/EGaI8zpl8paICaoGk+7x7guvtfak/TbIf66nYmJOH13EuG0H+Xx3M+9LQDtSvZFKXKw== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-replace-supers" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470" - integrity sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw== +"@babel/plugin-transform-computed-properties@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz#bca616a83679698f3258e892ed422546e531387f" + integrity sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-destructuring@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz#49dc2675a7afa9a5e4c6bdee636061136c3408d1" - integrity sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ== +"@babel/plugin-transform-destructuring@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.12.tgz#0861d61e75e2401aca30f2570d46dfc85caacf35" + integrity sha512-P8pt0YiKtX5UMUL5Xzsc9Oyij+pJE6JuC+F1k0/brq/OOGs5jDa1If3OY0LRWGvJsJhI+8tsiecL3nJLc0WTlg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.16.7" @@ -700,12 +713,12 @@ "@babel/helper-create-regexp-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-duplicate-keys@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz#2207e9ca8f82a0d36a5a67b6536e7ef8b08823c9" - integrity sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw== +"@babel/plugin-transform-duplicate-keys@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz#a09aa709a3310013f8e48e0e23bc7ace0f21477c" + integrity sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-exponentiation-operator@^7.16.7": version "7.16.7" @@ -715,12 +728,12 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-for-of@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c" - integrity sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg== +"@babel/plugin-transform-for-of@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.17.12.tgz#5397c22554ec737a27918e7e7e0e7b679b05f5ec" + integrity sha512-76lTwYaCxw8ldT7tNmye4LLwSoKDbRCBzu6n/DcK/P3FOR29+38CIIaVIZfwol9By8W/QHORYEnYSLuvcQKrsg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-function-name@^7.16.7": version "7.16.7" @@ -731,12 +744,12 @@ "@babel/helper-function-name" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1" - integrity sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ== +"@babel/plugin-transform-literals@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz#97131fbc6bbb261487105b4b3edbf9ebf9c830ae" + integrity sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-member-expression-literals@^7.16.7": version "7.16.7" @@ -745,57 +758,58 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-modules-amd@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz#b28d323016a7daaae8609781d1f8c9da42b13186" - integrity sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g== +"@babel/plugin-transform-modules-amd@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.17.12.tgz#08ec1f10f854c15bb3b44952e60f1fc126d7d481" + integrity sha512-p5rt9tB5Ndcc2Za7CeNxVf7YAjRcUMR6yi8o8tKjb9KhRkEvXwa+C0hj6DA5bVDkKRxB0NYhMUGbVKoFu4+zEA== dependencies: - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-module-transforms" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz#274be1a2087beec0254d4abd4d86e52442e1e5b6" - integrity sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw== +"@babel/plugin-transform-modules-commonjs@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.12.tgz#37691c7404320d007288edd5a2d8600bcef61c34" + integrity sha512-tVPs6MImAJz+DiX8Y1xXEMdTk5Lwxu9jiPjlS+nv5M2A59R7+/d1+9A8C/sbuY0b3QjIxqClkj6KAplEtRvzaA== dependencies: - "@babel/helper-module-transforms" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-module-transforms" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-simple-access" "^7.17.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.17.8": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz#81fd834024fae14ea78fbe34168b042f38703859" - integrity sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw== +"@babel/plugin-transform-modules-systemjs@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.12.tgz#e631b151b99d25401cd9679476cc35e6e5bbc7d4" + integrity sha512-NVhDb0q00hqZcuLduUf/kMzbOQHiocmPbIxIvk23HLiEqaTKC/l4eRxeC7lO63M72BmACoiKOcb9AkOAJRerpw== dependencies: "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-module-transforms" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-module-transforms" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-validator-identifier" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz#23dad479fa585283dbd22215bff12719171e7618" - integrity sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ== +"@babel/plugin-transform-modules-umd@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.17.12.tgz#b37be3ecf198c1fea10e6268461729ced05644e1" + integrity sha512-BnsPkrUHsjzZGpnrmJeDFkOMMljWFHPjDc9xDcz71/C+ybF3lfC3V4m3dwXPLZrE5b3bgd4V+3/Pj+3620d7IA== dependencies: - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-module-transforms" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-named-capturing-groups-regex@^7.17.10": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.10.tgz#715dbcfafdb54ce8bccd3d12e8917296a4ba66a4" - integrity sha512-v54O6yLaJySCs6mGzaVOUw9T967GnH38T6CQSAtnzdNPwu84l2qAjssKzo/WSO8Yi7NF+7ekm5cVbF/5qiIgNA== +"@babel/plugin-transform-named-capturing-groups-regex@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz#9c4a5a5966e0434d515f2675c227fd8cc8606931" + integrity sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.17.0" + "@babel/helper-create-regexp-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-new-target@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz#9967d89a5c243818e0800fdad89db22c5f514244" - integrity sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg== +"@babel/plugin-transform-new-target@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.17.12.tgz#10842cd605a620944e81ea6060e9e65c265742e3" + integrity sha512-CaOtzk2fDYisbjAD4Sd1MTKGVIpRtx9bWLyj24Y/k6p4s4gQ3CqDGJauFJxt8M/LEx003d0i3klVqnN73qvK3w== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-object-super@^7.16.7": version "7.16.7" @@ -805,12 +819,12 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-replace-supers" "^7.16.7" -"@babel/plugin-transform-parameters@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f" - integrity sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw== +"@babel/plugin-transform-parameters@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz#eb467cd9586ff5ff115a9880d6fdbd4a846b7766" + integrity sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-property-literals@^7.16.7": version "7.16.7" @@ -867,12 +881,12 @@ dependencies: regenerator-transform "^0.15.0" -"@babel/plugin-transform-reserved-words@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz#1d798e078f7c5958eec952059c460b220a63f586" - integrity sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg== +"@babel/plugin-transform-reserved-words@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz#7dbd349f3cdffba751e817cf40ca1386732f652f" + integrity sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-runtime@^7.17.12": version "7.17.12" @@ -893,12 +907,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-spread@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44" - integrity sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg== +"@babel/plugin-transform-spread@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz#c112cad3064299f03ea32afed1d659223935d1f5" + integrity sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" "@babel/plugin-transform-sticky-regex@^7.16.7": @@ -908,19 +922,19 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-template-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab" - integrity sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA== +"@babel/plugin-transform-template-literals@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.17.12.tgz#4aec0a18f39dd86c442e1d077746df003e362c6e" + integrity sha512-kAKJ7DX1dSRa2s7WN1xUAuaQmkTpN+uig4wCKWivVXIObqGbVTUlSavHyfI2iZvz89GFAMGm9p2DBJ4Y1Tp0hw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-typeof-symbol@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz#9cdbe622582c21368bd482b660ba87d5545d4f7e" - integrity sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ== +"@babel/plugin-transform-typeof-symbol@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz#0f12f57ac35e98b35b4ed34829948d42bd0e6889" + integrity sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-unicode-escapes@^7.16.7": version "7.16.7" @@ -937,32 +951,32 @@ "@babel/helper-create-regexp-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/preset-env@^7.17.10": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.17.10.tgz#a81b093669e3eb6541bb81a23173c5963c5de69c" - integrity sha512-YNgyBHZQpeoBSRBg0xixsZzfT58Ze1iZrajvv0lJc70qDDGuGfonEnMGfWeSY0mQ3JTuCWFbMkzFRVafOyJx4g== +"@babel/preset-env@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.17.12.tgz#b81ae0bb762b683d68b07b6d2d4020ccbef8d67a" + integrity sha512-Kke30Rj3Lmcx97bVs71LO0s8M6FmJ7tUAQI9fNId62rf0cYG1UAWwdNO9/sE0/pLEahAw1MqMorymoD12bj5Fg== dependencies: "@babel/compat-data" "^7.17.10" "@babel/helper-compilation-targets" "^7.17.10" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" - "@babel/plugin-proposal-async-generator-functions" "^7.16.8" - "@babel/plugin-proposal-class-properties" "^7.16.7" - "@babel/plugin-proposal-class-static-block" "^7.17.6" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.17.12" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.17.12" + "@babel/plugin-proposal-async-generator-functions" "^7.17.12" + "@babel/plugin-proposal-class-properties" "^7.17.12" + "@babel/plugin-proposal-class-static-block" "^7.17.12" "@babel/plugin-proposal-dynamic-import" "^7.16.7" - "@babel/plugin-proposal-export-namespace-from" "^7.16.7" - "@babel/plugin-proposal-json-strings" "^7.16.7" - "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" + "@babel/plugin-proposal-export-namespace-from" "^7.17.12" + "@babel/plugin-proposal-json-strings" "^7.17.12" + "@babel/plugin-proposal-logical-assignment-operators" "^7.17.12" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.17.12" "@babel/plugin-proposal-numeric-separator" "^7.16.7" - "@babel/plugin-proposal-object-rest-spread" "^7.17.3" + "@babel/plugin-proposal-object-rest-spread" "^7.17.12" "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" - "@babel/plugin-proposal-optional-chaining" "^7.16.7" - "@babel/plugin-proposal-private-methods" "^7.16.11" - "@babel/plugin-proposal-private-property-in-object" "^7.16.7" - "@babel/plugin-proposal-unicode-property-regex" "^7.16.7" + "@babel/plugin-proposal-optional-chaining" "^7.17.12" + "@babel/plugin-proposal-private-methods" "^7.17.12" + "@babel/plugin-proposal-private-property-in-object" "^7.17.12" + "@babel/plugin-proposal-unicode-property-regex" "^7.17.12" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" "@babel/plugin-syntax-class-static-block" "^7.14.5" @@ -977,40 +991,40 @@ "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.16.7" - "@babel/plugin-transform-async-to-generator" "^7.16.8" + "@babel/plugin-transform-arrow-functions" "^7.17.12" + "@babel/plugin-transform-async-to-generator" "^7.17.12" "@babel/plugin-transform-block-scoped-functions" "^7.16.7" - "@babel/plugin-transform-block-scoping" "^7.16.7" - "@babel/plugin-transform-classes" "^7.16.7" - "@babel/plugin-transform-computed-properties" "^7.16.7" - "@babel/plugin-transform-destructuring" "^7.17.7" + "@babel/plugin-transform-block-scoping" "^7.17.12" + "@babel/plugin-transform-classes" "^7.17.12" + "@babel/plugin-transform-computed-properties" "^7.17.12" + "@babel/plugin-transform-destructuring" "^7.17.12" "@babel/plugin-transform-dotall-regex" "^7.16.7" - "@babel/plugin-transform-duplicate-keys" "^7.16.7" + "@babel/plugin-transform-duplicate-keys" "^7.17.12" "@babel/plugin-transform-exponentiation-operator" "^7.16.7" - "@babel/plugin-transform-for-of" "^7.16.7" + "@babel/plugin-transform-for-of" "^7.17.12" "@babel/plugin-transform-function-name" "^7.16.7" - "@babel/plugin-transform-literals" "^7.16.7" + "@babel/plugin-transform-literals" "^7.17.12" "@babel/plugin-transform-member-expression-literals" "^7.16.7" - "@babel/plugin-transform-modules-amd" "^7.16.7" - "@babel/plugin-transform-modules-commonjs" "^7.17.9" - "@babel/plugin-transform-modules-systemjs" "^7.17.8" - "@babel/plugin-transform-modules-umd" "^7.16.7" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.10" - "@babel/plugin-transform-new-target" "^7.16.7" + "@babel/plugin-transform-modules-amd" "^7.17.12" + "@babel/plugin-transform-modules-commonjs" "^7.17.12" + "@babel/plugin-transform-modules-systemjs" "^7.17.12" + "@babel/plugin-transform-modules-umd" "^7.17.12" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.12" + "@babel/plugin-transform-new-target" "^7.17.12" "@babel/plugin-transform-object-super" "^7.16.7" - "@babel/plugin-transform-parameters" "^7.16.7" + "@babel/plugin-transform-parameters" "^7.17.12" "@babel/plugin-transform-property-literals" "^7.16.7" "@babel/plugin-transform-regenerator" "^7.17.9" - "@babel/plugin-transform-reserved-words" "^7.16.7" + "@babel/plugin-transform-reserved-words" "^7.17.12" "@babel/plugin-transform-shorthand-properties" "^7.16.7" - "@babel/plugin-transform-spread" "^7.16.7" + "@babel/plugin-transform-spread" "^7.17.12" "@babel/plugin-transform-sticky-regex" "^7.16.7" - "@babel/plugin-transform-template-literals" "^7.16.7" - "@babel/plugin-transform-typeof-symbol" "^7.16.7" + "@babel/plugin-transform-template-literals" "^7.17.12" + "@babel/plugin-transform-typeof-symbol" "^7.17.12" "@babel/plugin-transform-unicode-escapes" "^7.16.7" "@babel/plugin-transform-unicode-regex" "^7.16.7" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.17.10" + "@babel/types" "^7.17.12" babel-plugin-polyfill-corejs2 "^0.3.0" babel-plugin-polyfill-corejs3 "^0.5.0" babel-plugin-polyfill-regenerator "^0.3.0" @@ -1087,15 +1101,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.10", "@babel/types@^7.17.12", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.12.tgz#1210690a516489c0200f355d87619157fbbd69a0" - integrity sha512-rH8i29wcZ6x9xjzI5ILHL/yZkbQnCERdHlogKuIb4PUr7do4iT8DPekrTbBLWTnRQm6U0GYABbTMSzijmEqlAg== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - to-fast-properties "^2.0.0" - -"@babel/types@^7.17.12": +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.12", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": version "7.17.12" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.12.tgz#1210690a516489c0200f355d87619157fbbd69a0" integrity sha512-rH8i29wcZ6x9xjzI5ILHL/yZkbQnCERdHlogKuIb4PUr7do4iT8DPekrTbBLWTnRQm6U0GYABbTMSzijmEqlAg== From 6048eeed045693be63ad34dc97e98f7b2e519a70 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 May 2022 03:27:02 +0900 Subject: [PATCH 072/652] Bump faker from 2.20.0 to 2.21.0 (#18434) Bumps [faker](https://github.com/faker-ruby/faker) from 2.20.0 to 2.21.0. - [Release notes](https://github.com/faker-ruby/faker/releases) - [Changelog](https://github.com/faker-ruby/faker/blob/master/CHANGELOG.md) - [Commits](https://github.com/faker-ruby/faker/compare/v2.20.0...v2.21.0) --- updated-dependencies: - dependency-name: faker dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 002a44f7f..9d5fe51b6 100644 --- a/Gemfile +++ b/Gemfile @@ -114,7 +114,7 @@ end group :test do gem 'capybara', '~> 3.37' gem 'climate_control', '~> 0.2' - gem 'faker', '~> 2.20' + gem 'faker', '~> 2.21' gem 'microformats', '~> 4.2' gem 'rails-controller-testing', '~> 1.0' gem 'rspec-sidekiq', '~> 3.1' diff --git a/Gemfile.lock b/Gemfile.lock index 2e77ded16..640320702 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -219,7 +219,7 @@ GEM tzinfo excon (0.76.0) fabrication (2.28.0) - faker (2.20.0) + faker (2.21.0) i18n (>= 1.8.11, < 2) faraday (1.9.3) faraday-em_http (~> 1.0) @@ -757,7 +757,7 @@ DEPENDENCIES dotenv-rails (~> 2.7) ed25519 (~> 1.3) fabrication (~> 2.28) - faker (~> 2.20) + faker (~> 2.21) fast_blank (~> 1.0) fastimage fog-core (<= 2.1.0) From 6b4e2d5ce686140797dd207b1ba932a86665262f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 May 2022 03:27:55 +0900 Subject: [PATCH 073/652] Bump rubocop from 1.28.2 to 1.29.1 (#18433) Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.28.2 to 1.29.1. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.28.2...v1.29.1) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index 9d5fe51b6..445b10496 100644 --- a/Gemfile +++ b/Gemfile @@ -132,7 +132,7 @@ group :development do gem 'letter_opener', '~> 1.8' gem 'letter_opener_web', '~> 2.0' gem 'memory_profiler' - gem 'rubocop', '~> 1.28', require: false + gem 'rubocop', '~> 1.29', require: false gem 'rubocop-rails', '~> 2.14', require: false gem 'brakeman', '~> 5.2', require: false gem 'bundler-audit', '~> 0.9', require: false diff --git a/Gemfile.lock b/Gemfile.lock index 640320702..0600862df 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -568,16 +568,16 @@ GEM rspec-support (3.11.0) rspec_junit_formatter (0.5.1) rspec-core (>= 2, < 4, != 2.12.0) - rubocop (1.28.2) + rubocop (1.29.1) parallel (~> 1.10) parser (>= 3.1.0.0) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.8, < 3.0) - rexml + rexml (>= 3.2.5, < 4.0) rubocop-ast (>= 1.17.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 1.4.0, < 3.0) - rubocop-ast (1.17.0) + rubocop-ast (1.18.0) parser (>= 3.1.1.0) rubocop-rails (2.14.2) activesupport (>= 4.2.0) @@ -820,7 +820,7 @@ DEPENDENCIES rspec-rails (~> 5.1) rspec-sidekiq (~> 3.1) rspec_junit_formatter (~> 0.5) - rubocop (~> 1.28) + rubocop (~> 1.29) rubocop-rails (~> 2.14) ruby-progressbar (~> 1.11) sanitize (~> 6.0) From a918a76bfbdd300e3ef549307706bdfa630f824b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 May 2022 03:29:53 +0900 Subject: [PATCH 074/652] Bump glob from 8.0.1 to 8.0.3 (#18440) Bumps [glob](https://github.com/isaacs/node-glob) from 8.0.1 to 8.0.3. - [Release notes](https://github.com/isaacs/node-glob/releases) - [Changelog](https://github.com/isaacs/node-glob/blob/main/changelog.md) - [Commits](https://github.com/isaacs/node-glob/compare/v8.0.1...v8.0.3) --- updated-dependencies: - dependency-name: glob dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 22 ++++------------------ 2 files changed, 5 insertions(+), 19 deletions(-) diff --git a/package.json b/package.json index d0360b561..6ccb2a728 100644 --- a/package.json +++ b/package.json @@ -67,7 +67,7 @@ "file-loader": "^6.2.0", "font-awesome": "^4.7.0", "fuzzysort": "^1.9.0", - "glob": "^8.0.1", + "glob": "^8.0.3", "history": "^4.10.1", "http-link-header": "^1.0.4", "immutable": "^4.0.0", diff --git a/yarn.lock b/yarn.lock index fe72c5b74..86a2bc38f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -104,19 +104,6 @@ "@babel/helper-replace-supers" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" -"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.12", "@babel/helper-create-class-features-plugin@^7.17.6": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.12.tgz#d4f8393fc4838cbff6b7c199af5229aee16d07cf" - integrity sha512-sZoOeUTkFJMyhqCei2+Z+wtH/BehW8NVKQt7IRUQlRiOARuXymJYfN/FCcI8CvVbR0XVyDM6eLFOlR7YtiXnew== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.17.9" - "@babel/helper-member-expression-to-functions" "^7.17.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/helper-create-regexp-features-plugin@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz#0cb82b9bac358eb73bfbd73985a776bfa6b14d48" @@ -5385,17 +5372,16 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.1.tgz#00308f5c035aa0b2a447cd37ead267ddff1577d3" - integrity sha512-cF7FYZZ47YzmCu7dDy50xSRRfO3ErRfrXuLZcNIuyiJEco0XSrGtuilG19L5xp3NcwTx7Gn+X6Tv3fmsUPTbow== +glob@^8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" + integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" minimatch "^5.0.1" once "^1.3.0" - path-is-absolute "^1.0.0" glob@~7.1.1: version "7.1.7" From ffc2971466417aafe778eddcb1510ea934cef973 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 May 2022 03:30:31 +0900 Subject: [PATCH 075/652] Bump dotenv from 16.0.0 to 16.0.1 (#18438) Bumps [dotenv](https://github.com/motdotla/dotenv) from 16.0.0 to 16.0.1. - [Release notes](https://github.com/motdotla/dotenv/releases) - [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md) - [Commits](https://github.com/motdotla/dotenv/compare/v16.0.0...v16.0.1) --- updated-dependencies: - dependency-name: dotenv dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 6ccb2a728..cdc36fb0c 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "css-loader": "^5.2.7", "cssnano": "^4.1.11", "detect-passive-events": "^2.0.3", - "dotenv": "^16.0.0", + "dotenv": "^16.0.1", "emoji-mart": "npm:emoji-mart-lazyload", "es6-symbol": "^3.1.3", "escape-html": "^1.0.3", diff --git a/yarn.lock b/yarn.lock index 86a2bc38f..49ac26104 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4203,10 +4203,10 @@ dot-prop@^5.2.0: dependencies: is-obj "^2.0.0" -dotenv@^16.0.0: - version "16.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.0.tgz#c619001253be89ebb638d027b609c75c26e47411" - integrity sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q== +dotenv@^16.0.1: + version "16.0.1" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.1.tgz#8f8f9d94876c35dac989876a5d3a82a267fdce1d" + integrity sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ== duplexer@^0.1.2: version "0.1.2" From ded5a0254a4d29a7384ef766a1e92467fe4ebd2b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 May 2022 03:33:13 +0900 Subject: [PATCH 076/652] Bump yargs from 17.4.1 to 17.5.1 (#18437) Bumps [yargs](https://github.com/yargs/yargs) from 17.4.1 to 17.5.1. - [Release notes](https://github.com/yargs/yargs/releases) - [Changelog](https://github.com/yargs/yargs/blob/main/CHANGELOG.md) - [Commits](https://github.com/yargs/yargs/compare/v17.4.1...v17.5.1) --- updated-dependencies: - dependency-name: yargs dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index cdc36fb0c..4d44cee2b 100644 --- a/package.json +++ b/package.json @@ -160,7 +160,7 @@ "react-test-renderer": "^16.14.0", "sass-lint": "^1.13.1", "webpack-dev-server": "^3.11.3", - "yargs": "^17.4.1" + "yargs": "^17.5.1" }, "resolutions": { "kind-of": "^6.0.3" diff --git a/yarn.lock b/yarn.lock index 49ac26104..44b8abacf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11821,10 +11821,10 @@ yargs@^13.3.2: y18n "^4.0.0" yargs-parser "^13.1.2" -yargs@^17.3.1, yargs@^17.4.1: - version "17.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.4.1.tgz#ebe23284207bb75cee7c408c33e722bfb27b5284" - integrity sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g== +yargs@^17.3.1, yargs@^17.5.1: + version "17.5.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e" + integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== dependencies: cliui "^7.0.2" escalade "^3.1.1" From 679b7158e3cd3881e8cbaf2d2c0c97725b3b5fd9 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 18 May 2022 23:29:14 +0200 Subject: [PATCH 077/652] Change search indexing to use batches to minimize resource usage (#18451) --- Gemfile | 2 +- app/chewy/accounts_index.rb | 2 +- app/chewy/statuses_index.rb | 2 +- app/chewy/tags_index.rb | 2 +- app/workers/scheduler/indexing_scheduler.rb | 26 ++++++++++++++++++++ config/application.rb | 2 +- config/initializers/chewy.rb | 5 ++-- config/sidekiq.yml | 4 +++ lib/chewy/strategy/custom_sidekiq.rb | 11 --------- lib/chewy/strategy/mastodon.rb | 27 +++++++++++++++++++++ 10 files changed, 64 insertions(+), 19 deletions(-) create mode 100644 app/workers/scheduler/indexing_scheduler.rb delete mode 100644 lib/chewy/strategy/custom_sidekiq.rb create mode 100644 lib/chewy/strategy/mastodon.rb diff --git a/Gemfile b/Gemfile index 445b10496..2e77fb42a 100644 --- a/Gemfile +++ b/Gemfile @@ -81,7 +81,7 @@ gem 'scenic', '~> 1.6' gem 'sidekiq', '~> 6.4' gem 'sidekiq-scheduler', '~> 4.0' gem 'sidekiq-unique-jobs', '~> 7.1' -gem 'sidekiq-bulk', '~>0.2.0' +gem 'sidekiq-bulk', '~> 0.2.0' gem 'simple-navigation', '~> 4.3' gem 'simple_form', '~> 5.1' gem 'sprockets-rails', '~> 3.4', require: 'sprockets/railtie' diff --git a/app/chewy/accounts_index.rb b/app/chewy/accounts_index.rb index 6f9ea76e9..763958a3f 100644 --- a/app/chewy/accounts_index.rb +++ b/app/chewy/accounts_index.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class AccountsIndex < Chewy::Index - settings index: { refresh_interval: '5m' }, analysis: { + settings index: { refresh_interval: '30s' }, analysis: { analyzer: { content: { tokenizer: 'whitespace', diff --git a/app/chewy/statuses_index.rb b/app/chewy/statuses_index.rb index 1304aeedb..c20009879 100644 --- a/app/chewy/statuses_index.rb +++ b/app/chewy/statuses_index.rb @@ -3,7 +3,7 @@ class StatusesIndex < Chewy::Index include FormattingHelper - settings index: { refresh_interval: '15m' }, analysis: { + settings index: { refresh_interval: '30s' }, analysis: { filter: { english_stop: { type: 'stop', diff --git a/app/chewy/tags_index.rb b/app/chewy/tags_index.rb index f9db2b03a..a5b139bca 100644 --- a/app/chewy/tags_index.rb +++ b/app/chewy/tags_index.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class TagsIndex < Chewy::Index - settings index: { refresh_interval: '15m' }, analysis: { + settings index: { refresh_interval: '30s' }, analysis: { analyzer: { content: { tokenizer: 'keyword', diff --git a/app/workers/scheduler/indexing_scheduler.rb b/app/workers/scheduler/indexing_scheduler.rb new file mode 100644 index 000000000..3a6f47a29 --- /dev/null +++ b/app/workers/scheduler/indexing_scheduler.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +class Scheduler::IndexingScheduler + include Sidekiq::Worker + include Redisable + + sidekiq_options retry: 0 + + def perform + indexes.each do |type| + with_redis do |redis| + ids = redis.smembers("chewy:queue:#{type.name}") + + type.import!(ids) + + redis.pipelined do |pipeline| + ids.each { |id| pipeline.srem("chewy:queue:#{type.name}", id) } + end + end + end + end + + def indexes + [AccountsIndex, TagsIndex, StatusesIndex] + end +end diff --git a/config/application.rb b/config/application.rb index 64987cfe7..24fa2a978 100644 --- a/config/application.rb +++ b/config/application.rb @@ -38,7 +38,7 @@ require_relative '../lib/mastodon/version' require_relative '../lib/mastodon/rack_middleware' require_relative '../lib/devise/two_factor_ldap_authenticatable' require_relative '../lib/devise/two_factor_pam_authenticatable' -require_relative '../lib/chewy/strategy/custom_sidekiq' +require_relative '../lib/chewy/strategy/mastodon' require_relative '../lib/webpacker/manifest_extensions' require_relative '../lib/webpacker/helper_extensions' require_relative '../lib/rails/engine_extensions' diff --git a/config/initializers/chewy.rb b/config/initializers/chewy.rb index f303fc54d..752fc3c6d 100644 --- a/config/initializers/chewy.rb +++ b/config/initializers/chewy.rb @@ -13,15 +13,14 @@ Chewy.settings = { journal: false, user: user, password: password, - sidekiq: { queue: 'pull' }, } # We use our own async strategy even outside the request-response # cycle, which takes care of checking if Elasticsearch is enabled # or not. However, mind that for the Rails console, the :urgent # strategy is set automatically with no way to override it. -Chewy.root_strategy = :custom_sidekiq -Chewy.request_strategy = :custom_sidekiq +Chewy.root_strategy = :mastodon +Chewy.request_strategy = :mastodon Chewy.use_after_commit_callbacks = false module Chewy diff --git a/config/sidekiq.yml b/config/sidekiq.yml index 26be26326..2a3871468 100644 --- a/config/sidekiq.yml +++ b/config/sidekiq.yml @@ -21,6 +21,10 @@ every: '6h' class: Scheduler::Trends::ReviewNotificationsScheduler queue: scheduler + indexing_scheduler: + every: '5m' + class: Scheduler::IndexingScheduler + queue: scheduler media_cleanup_scheduler: cron: '<%= Random.rand(0..59) %> <%= Random.rand(3..5) %> * * *' class: Scheduler::MediaCleanupScheduler diff --git a/lib/chewy/strategy/custom_sidekiq.rb b/lib/chewy/strategy/custom_sidekiq.rb deleted file mode 100644 index 794ae4ed4..000000000 --- a/lib/chewy/strategy/custom_sidekiq.rb +++ /dev/null @@ -1,11 +0,0 @@ -# frozen_string_literal: true - -module Chewy - class Strategy - class CustomSidekiq < Sidekiq - def update(_type, _objects, _options = {}) - super if Chewy.enabled? - end - end - end -end diff --git a/lib/chewy/strategy/mastodon.rb b/lib/chewy/strategy/mastodon.rb new file mode 100644 index 000000000..ee8b92186 --- /dev/null +++ b/lib/chewy/strategy/mastodon.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +module Chewy + class Strategy + class Mastodon < Base + def initialize + super + + @stash = Hash.new { |hash, key| hash[key] = [] } + end + + def update(type, objects, _options = {}) + @stash[type].concat(type.root.id ? Array.wrap(objects) : type.adapter.identify(objects)) if Chewy.enabled? + end + + def leave + RedisConfiguration.with do |redis| + redis.pipelined do |pipeline| + @stash.each do |type, ids| + pipeline.sadd("chewy:queue:#{type.name}", ids) + end + end + end + end + end + end +end From 9a0fa28993568cb3f106f0ea6457b0ff0f9a132e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 19 May 2022 12:58:16 +0200 Subject: [PATCH 078/652] New Crowdin updates (#18419) * New translations en.json (German) * New translations en.json (Welsh) * New translations en.json (Japanese) * New translations en.json (Korean) * New translations en.json (Turkish) * New translations en.json (Chinese Simplified) * New translations en.json (Vietnamese) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Asturian) * New translations en.json (Irish) * New translations en.json (Arabic) * New translations en.json (Scottish Gaelic) * New translations en.json (Galician) * New translations en.json (Czech) * New translations en.json (Slovak) * New translations en.json (Icelandic) * New translations en.json (Sorani (Kurdish)) * New translations en.json (English, United Kingdom) * New translations en.json (Norwegian) * New translations en.json (Romanian) * New translations en.json (French) * New translations en.json (Spanish) * New translations en.json (Afrikaans) * New translations en.json (Bulgarian) * New translations en.json (Persian) * New translations en.json (Tamil) * New translations en.json (Malayalam) * New translations en.json (Silesian) * New translations en.json (Taigi) * New translations en.json (Ido) * New translations en.json (Kabyle) * New translations en.json (Sanskrit) * New translations en.json (Sardinian) * New translations en.json (Corsican) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Serbian (Latin)) * New translations en.json (Occitan) * New translations en.json (Kannada) * New translations en.json (Cornish) * New translations en.json (Sinhala) * New translations en.json (Breton) * New translations en.json (Tatar) * New translations en.json (Spanish, Argentina) * New translations en.json (Kazakh) * New translations en.json (Spanish, Mexico) * New translations en.json (Bengali) * New translations en.json (Marathi) * New translations en.json (Thai) * New translations en.json (Croatian) * New translations en.json (Norwegian Nynorsk) * New translations en.json (Estonian) * New translations en.json (Chinese Traditional, Hong Kong) * New translations en.json (Latvian) * New translations en.json (Hindi) * New translations en.json (Malay) * New translations en.json (Telugu) * New translations en.json (Esperanto) * New translations en.json (Uyghur) * New translations en.json (Standard Moroccan Tamazight) * New translations en.yml (Icelandic) * New translations en.json (German) * New translations en.json (Turkish) * New translations en.json (Icelandic) * New translations en.json (Greek) * New translations en.json (Chinese Traditional) * New translations en.json (Catalan) * New translations en.json (Latvian) * New translations en.json (Czech) * New translations en.json (Indonesian) * New translations en.json (Korean) * New translations en.json (Russian) * New translations en.json (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.json (German) * New translations en.json (Spanish, Argentina) * New translations en.json (Spanish, Argentina) * New translations en.json (Danish) * New translations en.json (Chinese Simplified) * New translations en.json (Afrikaans) * New translations en.json (Ukrainian) * New translations en.json (Portuguese) * New translations en.yml (Italian) * New translations en.json (Italian) * New translations en.yml (Italian) * New translations en.json (Catalan) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.json (French) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.json (Arabic) * New translations en.yml (Arabic) * New translations en.yml (Hungarian) * New translations en.json (Hungarian) * New translations en.yml (Galician) * New translations en.json (Galician) * New translations en.yml (Scottish Gaelic) * New translations en.yml (Ido) * New translations en.json (Scottish Gaelic) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.json (Catalan) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.json (Korean) * New translations en.json (Polish) * New translations en.yml (Ido) * New translations en.json (Czech) * New translations en.json (Hungarian) * New translations en.json (Spanish, Argentina) * New translations en.json (Ido) * New translations en.json (Russian) * New translations en.json (Latvian) * New translations en.yml (Russian) * New translations en.json (Russian) * New translations devise.en.yml (Russian) * New translations en.yml (Ido) * New translations en.json (Icelandic) * New translations en.json (Portuguese) * New translations en.yml (Ido) * New translations en.json (Catalan) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * Run `yarn manage:translations` * New translations en.json (Chinese Simplified) * New translations en.yml (Slovenian) * New translations en.json (Slovenian) * New translations en.json (Vietnamese) * New translations en.json (Chinese Traditional) * New translations en.json (Chinese Simplified) * New translations en.json (Spanish) * New translations en.json (Greek) * New translations en.json (Thai) * New translations en.json (Turkish) * New translations en.json (Turkish) * New translations en.json (Italian) * New translations en.json (Kurmanji (Kurdish)) * New translations en.yml (Japanese) * New translations en.json (Japanese) * New translations en.json (Afrikaans) * New translations en.yml (Basque) * New translations en.yml (German) * New translations en.json (German) * New translations en.yml (Esperanto) * New translations en.json (German) * New translations en.yml (Esperanto) * New translations en.yml (Esperanto) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.json (Chinese Simplified) * New translations en.json (German) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Korean) * New translations en.yml (Galician) * New translations en.json (Galician) * New translations devise.en.yml (Galician) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Russian) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.json (Chinese Simplified) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.json (Kurmanji (Kurdish)) * New translations en.yml (Ido) * New translations en.json (Kurmanji (Kurdish)) * New translations en.yml (German) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Korean) * New translations en.json (Korean) * New translations simple_form.en.yml (Korean) * New translations en.yml (Korean) * New translations en.json (Ukrainian) * New translations en.yml (Arabic) * New translations en.json (Arabic) * New translations en.json (Arabic) * New translations en.json (Arabic) * New translations en.json (Arabic) * New translations en.json (Thai) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Russian) * New translations en.json (Portuguese, Brazilian) * New translations en.yml (Chinese Simplified) * New translations en.json (Chinese Simplified) * New translations simple_form.en.yml (Chinese Simplified) * New translations devise.en.yml (Chinese Simplified) * New translations en.yml (Ido) * New translations en.json (French) * New translations en.json (Indonesian) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Vietnamese) * New translations en.json (Esperanto) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations doorkeeper.en.yml (Portuguese, Brazilian) * New translations en.yml (Ido) * New translations en.yml (Ido) * New translations en.yml (Ido) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 7 +- app/javascript/mastodon/locales/ar.json | 31 +- app/javascript/mastodon/locales/ast.json | 3 + app/javascript/mastodon/locales/bg.json | 3 + app/javascript/mastodon/locales/bn.json | 3 + app/javascript/mastodon/locales/br.json | 3 + app/javascript/mastodon/locales/ca.json | 7 +- app/javascript/mastodon/locales/ckb.json | 3 + app/javascript/mastodon/locales/co.json | 3 + app/javascript/mastodon/locales/cs.json | 7 +- app/javascript/mastodon/locales/cy.json | 3 + app/javascript/mastodon/locales/da.json | 7 +- app/javascript/mastodon/locales/de.json | 11 +- app/javascript/mastodon/locales/el.json | 7 +- app/javascript/mastodon/locales/en-GB.json | 3 + app/javascript/mastodon/locales/eo.json | 5 +- app/javascript/mastodon/locales/es-AR.json | 7 +- app/javascript/mastodon/locales/es-MX.json | 13 +- app/javascript/mastodon/locales/es.json | 9 +- app/javascript/mastodon/locales/et.json | 3 + app/javascript/mastodon/locales/eu.json | 3 + app/javascript/mastodon/locales/fa.json | 3 + app/javascript/mastodon/locales/fi.json | 3 + app/javascript/mastodon/locales/fr.json | 7 +- app/javascript/mastodon/locales/ga.json | 3 + app/javascript/mastodon/locales/gd.json | 9 +- app/javascript/mastodon/locales/gl.json | 7 +- app/javascript/mastodon/locales/he.json | 3 + app/javascript/mastodon/locales/hi.json | 3 + app/javascript/mastodon/locales/hr.json | 3 + app/javascript/mastodon/locales/hu.json | 7 +- app/javascript/mastodon/locales/hy.json | 3 + app/javascript/mastodon/locales/id.json | 7 +- app/javascript/mastodon/locales/io.json | 7 +- app/javascript/mastodon/locales/is.json | 7 +- app/javascript/mastodon/locales/it.json | 7 +- app/javascript/mastodon/locales/ja.json | 7 +- app/javascript/mastodon/locales/ka.json | 3 + app/javascript/mastodon/locales/kab.json | 3 + app/javascript/mastodon/locales/kk.json | 3 + app/javascript/mastodon/locales/kn.json | 3 + app/javascript/mastodon/locales/ko.json | 23 +- app/javascript/mastodon/locales/ku.json | 7 +- app/javascript/mastodon/locales/kw.json | 3 + app/javascript/mastodon/locales/lt.json | 3 + app/javascript/mastodon/locales/lv.json | 7 +- app/javascript/mastodon/locales/mk.json | 3 + app/javascript/mastodon/locales/ml.json | 3 + app/javascript/mastodon/locales/mr.json | 3 + app/javascript/mastodon/locales/ms.json | 3 + app/javascript/mastodon/locales/nl.json | 3 + app/javascript/mastodon/locales/nn.json | 3 + app/javascript/mastodon/locales/no.json | 3 + app/javascript/mastodon/locales/oc.json | 3 + app/javascript/mastodon/locales/pa.json | 3 + app/javascript/mastodon/locales/pl.json | 3 + app/javascript/mastodon/locales/pt-BR.json | 7 +- app/javascript/mastodon/locales/pt-PT.json | 7 +- app/javascript/mastodon/locales/ro.json | 3 + app/javascript/mastodon/locales/ru.json | 9 +- app/javascript/mastodon/locales/sa.json | 3 + app/javascript/mastodon/locales/sc.json | 3 + app/javascript/mastodon/locales/si.json | 3 + app/javascript/mastodon/locales/sk.json | 3 + app/javascript/mastodon/locales/sl.json | 7 +- app/javascript/mastodon/locales/sq.json | 3 + app/javascript/mastodon/locales/sr-Latn.json | 3 + app/javascript/mastodon/locales/sr.json | 3 + app/javascript/mastodon/locales/sv.json | 3 + app/javascript/mastodon/locales/szl.json | 3 + app/javascript/mastodon/locales/ta.json | 3 + app/javascript/mastodon/locales/tai.json | 3 + app/javascript/mastodon/locales/te.json | 3 + app/javascript/mastodon/locales/th.json | 5 +- app/javascript/mastodon/locales/tr.json | 7 +- app/javascript/mastodon/locales/tt.json | 3 + app/javascript/mastodon/locales/ug.json | 3 + app/javascript/mastodon/locales/uk.json | 7 +- app/javascript/mastodon/locales/ur.json | 3 + app/javascript/mastodon/locales/vi.json | 7 +- app/javascript/mastodon/locales/zgh.json | 3 + app/javascript/mastodon/locales/zh-CN.json | 31 +- app/javascript/mastodon/locales/zh-HK.json | 3 + app/javascript/mastodon/locales/zh-TW.json | 7 +- config/locales/ar.yml | 8 + config/locales/de.yml | 4 +- config/locales/devise.gl.yml | 2 +- config/locales/devise.ru.yml | 2 +- config/locales/doorkeeper.pt-BR.yml | 2 + config/locales/eo.yml | 9 +- config/locales/eu.yml | 2 +- config/locales/gd.yml | 3 + config/locales/gl.yml | 9 +- config/locales/hu.yml | 3 + config/locales/io.yml | 1577 +++++++++++++++++- config/locales/is.yml | 3 + config/locales/it.yml | 16 +- config/locales/ja.yml | 6 + config/locales/ko.yml | 42 +- config/locales/ru.yml | 9 +- config/locales/simple_form.ko.yml | 12 +- config/locales/sl.yml | 3 + config/locales/vi.yml | 6 +- 103 files changed, 2019 insertions(+), 159 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index cd60d2532..650a3b708 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Slegs plaaslik", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Slegs afgeleë", + "compose.language.change": "Verander taal", + "compose.language.search": "Soek tale...", "compose_form.direct_message_warning_learn_more": "Leer meer", "compose_form.encryption_warning": "Plasings op Mastodon het nie end-tot-end enkripsie nie. Moet nie enige gevaarlike inligting oor Mastodon deel nie.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", @@ -147,6 +149,7 @@ "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Activity", + "emoji_button.clear": "Maak skoon", "emoji_button.custom": "Custom", "emoji_button.flags": "Flags", "emoji_button.food": "Food & Drink", @@ -264,8 +267,8 @@ "lightbox.expand": "Expand image view box", "lightbox.next": "Next", "lightbox.previous": "Previous", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Vertoon profiel in elkgeval", + "limited_account_hint.title": "Hierdie profiel is deur moderators van jou bediener versteek.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index a1e1478b5..1f113213c 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -72,15 +72,15 @@ "column.community": "الخيط الزمني المحلي", "column.direct": "الرسائل المباشِرة", "column.directory": "تَصَفُّحُ المَلفات الشخصية", - "column.domain_blocks": "النِّطاقَاتُ المَحظُورَة", + "column.domain_blocks": "النطاقات المحظورة", "column.favourites": "المُفَضَّلَة", - "column.follow_requests": "طَلَبَاتُ المُتَابَعَة", + "column.follow_requests": "طلبات المتابعة", "column.home": "الرئيسية", "column.lists": "القوائم", "column.mutes": "المُستَخدِمون المَكتومون", "column.notifications": "الإشعارات", "column.pins": "المنشورات المُثَبَّتَة", - "column.public": "الخَطُّ الزَّمَنِيُّ المُوَحَّد", + "column.public": "الخيط الزمني المُوَحَّد", "column_back_button.label": "العودة", "column_header.hide_settings": "إخفاء الإعدادات", "column_header.moveLeft_settings": "نقل العامود إلى اليسار", @@ -92,6 +92,8 @@ "community.column_settings.local_only": "المحلي فقط", "community.column_settings.media_only": "الوسائط فقط", "community.column_settings.remote_only": "عن بُعد فقط", + "compose.language.change": "تغيير اللغة", + "compose.language.search": "البحث عن لغة…", "compose_form.direct_message_warning_learn_more": "تَعَلَّم المَزيد", "compose_form.encryption_warning": "إنّ المنشورات على ماستدون ليست مشفرة من النهاية إلى النهاية. لا تشارك أي معلومات حساسة عبر ماستدون.", "compose_form.hashtag_warning": "لن يُدرَج هذا المنشور تحت أي وسم بما أنَّه غير مُدرَج. فقط المنشورات العامة يُمكن البحث عنها بواسطة الوسم.", @@ -104,7 +106,7 @@ "compose_form.poll.remove_option": "إزالة هذا الخيار", "compose_form.poll.switch_to_multiple": "تغيِير الاستطلاع للسماح باِخيارات مُتعدِّدة", "compose_form.poll.switch_to_single": "تغيِير الاستطلاع للسماح باِخيار واحد فقط", - "compose_form.publish": "تبويق", + "compose_form.publish": "بوّق", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "احفظ التعديلات", "compose_form.sensitive.hide": "{count, plural, one {الإشارة إلى الوَسط كمُحتوى حسّاس} two{الإشارة إلى الوسطان كمُحتويان حسّاسان} other {الإشارة إلى الوسائط كمُحتويات حسّاسة}}", @@ -130,7 +132,7 @@ "confirmations.mute.confirm": "أكتم", "confirmations.mute.explanation": "هذا سيخفي المنشورات عنهم وتلك المشار فيها إليهم، لكنه سيسمح لهم برؤية منشوراتك ومتابعتك.", "confirmations.mute.message": "هل أنت متأكد أنك تريد كتم {name} ؟", - "confirmations.redraft.confirm": "إزالة و إعادة الصياغة", + "confirmations.redraft.confirm": "إزالة وإعادة الصياغة", "confirmations.redraft.message": "هل أنت متأكد من أنك تريد حذف هذا المنشور و إعادة صياغته؟ سوف تفقد جميع الإعجابات و الترقيات أما الردود المتصلة به فستُصبِح يتيمة.", "confirmations.reply.confirm": "رد", "confirmations.reply.message": "الرد في الحين سوف يُعيد كتابة الرسالة التي أنت بصدد كتابتها. متأكد من أنك تريد المواصلة؟", @@ -147,12 +149,13 @@ "embed.instructions": "يمكنكم إدماج هذا المنشور على موقعكم الإلكتروني عن طريق نسخ الشفرة أدناه.", "embed.preview": "هكذا ما سوف يبدو عليه:", "emoji_button.activity": "الأنشطة", + "emoji_button.clear": "امسح", "emoji_button.custom": "مخصص", "emoji_button.flags": "الأعلام", "emoji_button.food": "الطعام والشراب", "emoji_button.label": "أدرج إيموجي", "emoji_button.nature": "الطبيعة", - "emoji_button.not_found": "لا إيموجو!! (╯°□°)╯︵ ┻━┻", + "emoji_button.not_found": "لا توجد هناك وجوه تعبيرية مطابقة", "emoji_button.objects": "أشياء", "emoji_button.people": "الناس", "emoji_button.recent": "الشائعة الاستخدام", @@ -264,8 +267,8 @@ "lightbox.expand": "توسيع مربع عرض الصور", "lightbox.next": "التالي", "lightbox.previous": "العودة", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "إظهار الملف التعريفي على أي حال", + "limited_account_hint.title": "أخف مشرف الخادم هذا الملف التعريفي.", "lists.account.add": "أضف إلى القائمة", "lists.account.remove": "احذف من القائمة", "lists.delete": "احذف القائمة", @@ -280,8 +283,8 @@ "lists.search": "إبحث في قائمة الحسابات التي تُتابِعها", "lists.subheading": "قوائمك", "load_pending": "{count, plural, one {# عنصر جديد} other {# عناصر جديدة}}", - "loading_indicator.label": "تحميل...", - "media_gallery.toggle_visible": "عرض / إخفاء", + "loading_indicator.label": "جارٍ التحميل…", + "media_gallery.toggle_visible": "{number, plural, zero {} one {اخف الصورة} two {اخف الصورتين} few {اخف الصور} many {اخف الصور} other {اخف الصور}}", "missing_indicator.label": "غير موجود", "missing_indicator.sublabel": "تعذر العثور على هذا المورد", "mute_modal.duration": "المدة", @@ -290,11 +293,11 @@ "navigation_bar.apps": "تطبيقات الأجهزة المحمولة", "navigation_bar.blocks": "الحسابات المحجوبة", "navigation_bar.bookmarks": "الفواصل المرجعية", - "navigation_bar.community_timeline": "الخيط العام المحلي", - "navigation_bar.compose": "لتحرير منشور جديد", + "navigation_bar.community_timeline": "الخيط المحلي", + "navigation_bar.compose": "تحرير منشور جديد", "navigation_bar.direct": "الرسائل المباشِرة", "navigation_bar.discover": "اكتشف", - "navigation_bar.domain_blocks": "النطاقات المخفية", + "navigation_bar.domain_blocks": "النطاقات المحظورة", "navigation_bar.edit_profile": "عدّل الملف التعريفي", "navigation_bar.explore": "استكشف", "navigation_bar.favourites": "المفضلة", @@ -368,7 +371,7 @@ "poll_button.add_poll": "إضافة استطلاع للرأي", "poll_button.remove_poll": "إزالة استطلاع الرأي", "privacy.change": "اضبط خصوصية المنشور", - "privacy.direct.long": "أنشر إلى المستخدمين المشار إليهم فقط", + "privacy.direct.long": "مرئي للمستخدمين المذكورين فقط", "privacy.direct.short": "الأشخاص المشار إليهم فقط", "privacy.private.long": "أنشر لمتابعيك فقط", "privacy.private.short": "للمتابِعين فقط", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index d49a4dfbd..148527b96 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Namái multimedia", "community.column_settings.remote_only": "Remote only", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Saber más", "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.", @@ -147,6 +149,7 @@ "embed.instructions": "Empotra esti estáu nun sitiu web copiando'l códigu d'embaxo.", "embed.preview": "Asina ye cómo va vese:", "emoji_button.activity": "Actividaes", + "emoji_button.clear": "Clear", "emoji_button.custom": "Custom", "emoji_button.flags": "Banderes", "emoji_button.food": "Comida y bébora", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 246a7cf22..06d4760f0 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Само локално", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Само дистанционно", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "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": "Тази публикация няма да бъде изброена под нито един хаштаг, тъй като е скрита. Само публични публикации могат да се търсят по хаштаг.", @@ -147,6 +149,7 @@ "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Ето как ще изглежда:", "emoji_button.activity": "Дейност", + "emoji_button.clear": "Clear", "emoji_button.custom": "Персонализирано", "emoji_button.flags": "Знамена", "emoji_button.food": "Храна и напитки", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index b91740cbb..e89f4690b 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "শুধুমাত্র স্থানীয়", "community.column_settings.media_only": "শুধুমাত্র ছবি বা ভিডিও", "community.column_settings.remote_only": "শুধুমাত্র দূরবর্তী", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "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": "কোনো হ্যাশট্যাগের ভেতরে এই টুটটি থাকবেনা কারণ এটি তালিকাবহির্ভূত। শুধুমাত্র প্রকাশ্য ঠোটগুলো হ্যাশট্যাগের ভেতরে খুঁজে পাওয়া যাবে।", @@ -147,6 +149,7 @@ "embed.instructions": "এই লেখাটি আপনার ওয়েবসাইটে যুক্ত করতে নিচের কোডটি বেবহার করুন।", "embed.preview": "সেটা দেখতে এরকম হবে:", "emoji_button.activity": "কার্যকলাপ", + "emoji_button.clear": "Clear", "emoji_button.custom": "প্রথা", "emoji_button.flags": "পতাকা", "emoji_button.food": "খাদ্য ও পানীয়", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index 0ea9c5915..cbe7fc6cb 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Nemet lec'hel", "community.column_settings.media_only": "Nemet Mediaoù", "community.column_settings.remote_only": "Nemet a-bell", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Gouzout hiroc'h", "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": "Ne vo ket lakaet an toud-mañ er rolloù gerioù-klik dre mard eo anlistennet. N'eus nemet an toudoù foran a c'hall bezañ klasket dre c'her-klik.", @@ -147,6 +149,7 @@ "embed.instructions": "Enkorfit ar statud war ho lec'hienn en ur eilañ ar c'hod dindan.", "embed.preview": "Setu penaos e vo diskouezet:", "emoji_button.activity": "Obererezh", + "emoji_button.clear": "Clear", "emoji_button.custom": "Kempennet", "emoji_button.flags": "Bannieloù", "emoji_button.food": "Boued hag Evaj", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 6f9b35588..1072001b4 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Només local", "community.column_settings.media_only": "Només multimèdia", "community.column_settings.remote_only": "Només remot", + "compose.language.change": "Canvia d'idioma", + "compose.language.search": "Cerca idiomes...", "compose_form.direct_message_warning_learn_more": "Més informació", "compose_form.encryption_warning": "Les publicacions a Mastodon no estant xifrades punt a punt. No comparteixis informació perillosa mitjançant Mastodon.", "compose_form.hashtag_warning": "Aquesta publicació no es mostrarà en cap etiqueta, ja que no està llistada. Només les publicacions públiques es poden cercar per etiqueta.", @@ -147,6 +149,7 @@ "embed.instructions": "Incrusta aquesta publicació a la teva pàgina web copiant el codi següent.", "embed.preview": "Aquí està quin aspecte tindrà:", "emoji_button.activity": "Activitat", + "emoji_button.clear": "Neteja", "emoji_button.custom": "Personalitzat", "emoji_button.flags": "Banderes", "emoji_button.food": "Menjar i beure", @@ -264,8 +267,8 @@ "lightbox.expand": "Amplia el quadre de visualització de l’imatge", "lightbox.next": "Següent", "lightbox.previous": "Anterior", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Mostra el perfil", + "limited_account_hint.title": "Aquest perfil ha estat amagat pels moderadors del servidor.", "lists.account.add": "Afegeix a la llista", "lists.account.remove": "Elimina de la llista", "lists.delete": "Esborra la llista", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 22410e1aa..1ade0d5ef 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "تەنها خۆماڵی", "community.column_settings.media_only": "تەنها میدیا", "community.column_settings.remote_only": "تەنها بۆ دوور", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "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": "ئەم توتە لە ژێر هیچ هاشتاگییەک دا ناکرێت وەک ئەوەی لە لیستەکەدا نەریزراوە. تەنها توتی گشتی دەتوانرێت بە هاشتاگی بگەڕێت.", @@ -147,6 +149,7 @@ "embed.instructions": "ئەم توتە بنچین بکە لەسەر وێب سایتەکەت بە کۆپیکردنی کۆدەکەی خوارەوە.", "embed.preview": "ئەمە ئەو شتەیە کە لە شێوەی خۆی دەچێت:", "emoji_button.activity": "چالاکی", + "emoji_button.clear": "Clear", "emoji_button.custom": "ئاسایی", "emoji_button.flags": "ئاڵاکان", "emoji_button.food": "خواردن& خواردنەوە", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index ac2932334..d2db35f16 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Solu lucale", "community.column_settings.media_only": "Solu media", "community.column_settings.remote_only": "Solu distante", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Amparà di più", "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": "Stu statutu ùn hè \"Micca listatu\" è ùn sarà micca listatu indè e circate da hashtag. Per esse vistu in quesse, u statutu deve esse \"Pubblicu\".", @@ -147,6 +149,7 @@ "embed.instructions": "Integrà stu statutu à u vostru situ cù u codice quì sottu.", "embed.preview": "Hà da parè à quessa:", "emoji_button.activity": "Attività", + "emoji_button.clear": "Clear", "emoji_button.custom": "Persunalizati", "emoji_button.flags": "Bandere", "emoji_button.food": "Manghjusca è Bienda", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 59a3a0c76..91dda4f44 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Pouze místní", "community.column_settings.media_only": "Pouze média", "community.column_settings.remote_only": "Pouze vzdálené", + "compose.language.change": "Změnit jazyk", + "compose.language.search": "Prohledat jazyky...", "compose_form.direct_message_warning_learn_more": "Zjistit více", "compose_form.encryption_warning": "Příspěvky na Mastodonu nejsou end-to-end šifrovány. Nesdílejte přes Mastodon žádné nebezpečné informace.", "compose_form.hashtag_warning": "Tento příspěvek nebude zobrazen pod žádným hashtagem, neboť je neuvedený. Pouze veřejné příspěvky mohou být vyhledány podle hashtagu.", @@ -147,6 +149,7 @@ "embed.instructions": "Pro přidání příspěvku na vaši webovou stránku zkopírujte níže uvedený kód.", "embed.preview": "Takhle to bude vypadat:", "emoji_button.activity": "Aktivita", + "emoji_button.clear": "Vyčistit", "emoji_button.custom": "Vlastní", "emoji_button.flags": "Vlajky", "emoji_button.food": "Jídla a nápoje", @@ -264,8 +267,8 @@ "lightbox.expand": "Ukázat obrázek v plné velikosti", "lightbox.next": "Další", "lightbox.previous": "Předchozí", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Přesto profil zobrazit", + "limited_account_hint.title": "Tento profil byl skryt moderátory vašeho serveru.", "lists.account.add": "Přidat do seznamu", "lists.account.remove": "Odebrat ze seznamu", "lists.delete": "Smazat seznam", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 8a32bc28b..2a29cbbfb 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Lleol yn unig", "community.column_settings.media_only": "Cyfryngau yn unig", "community.column_settings.remote_only": "Anghysbell yn unig", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Dysgu mwy", "compose_form.encryption_warning": "Dyw postiadau ar Mastodon ddim wedi'u hamgryptio o ben i ben. Peidiwch â rhannu unrhyw wybodaeth beryglus dros Mastodon.", "compose_form.hashtag_warning": "Ni fydd y post hwn wedi ei restru o dan unrhyw hashnod gan ei fod heb ei restru. Dim ond postiadau cyhoeddus gellid chwilio amdanynt drwy hashnod.", @@ -147,6 +149,7 @@ "embed.instructions": "Gosodwch y post hwn ar eich gwefan drwy gopïo'r côd isod.", "embed.preview": "Dyma sut olwg fydd arno:", "emoji_button.activity": "Gweithgarwch", + "emoji_button.clear": "Clear", "emoji_button.custom": "Unigryw", "emoji_button.flags": "Baneri", "emoji_button.food": "Bwyd a Diod", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 9a56520f3..5a03f86d0 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Kun lokalt", "community.column_settings.media_only": "Kun medier", "community.column_settings.remote_only": "Kun udefra", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Få mere at vide", "compose_form.encryption_warning": "Indlæg på Mastodon er ikke ende-til-ende krypteret. Del derfor ikke sensitiv information over Mastodon.", "compose_form.hashtag_warning": "Da indlægget ikke er offentligt, vises det ikke under noget hashtag, idet kun offentlige indlæg kan søges via hashtags.", @@ -147,6 +149,7 @@ "embed.instructions": "Indlejr dette indlæg på dit websted ved at kopiere nedenstående kode.", "embed.preview": "Sådan kommer det til at se ud:", "emoji_button.activity": "Aktivitet", + "emoji_button.clear": "Clear", "emoji_button.custom": "Tilpasset", "emoji_button.flags": "Flag", "emoji_button.food": "Mad og drikke", @@ -264,8 +267,8 @@ "lightbox.expand": "Udvid billedevisningsfelt", "lightbox.next": "Næste", "lightbox.previous": "Forrige", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Vis profil alligevel", + "limited_account_hint.title": "Denne profil er blevet skjult af servermoderatorerne.", "lists.account.add": "Føj til liste", "lists.account.remove": "Fjern fra liste", "lists.delete": "Slet liste", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index cc7282eb1..f0d225414 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Nur lokal", "community.column_settings.media_only": "Nur Medien", "community.column_settings.remote_only": "Nur entfernt", + "compose.language.change": "Sprache ändern", + "compose.language.search": "Sprachen durchsuchen...", "compose_form.direct_message_warning_learn_more": "Mehr erfahren", "compose_form.encryption_warning": "Beiträge auf Mastodon sind nicht Ende-zu-Ende-verschlüsselt. Teile keine sensiblen Informationen über Mastodon.", "compose_form.hashtag_warning": "Dieser Beitrag wird nicht durch Hashtags entdeckbar sein, weil er ungelistet ist. Nur öffentliche Beiträge tauchen in Hashtag-Zeitleisten auf.", @@ -133,7 +135,7 @@ "confirmations.redraft.confirm": "Löschen und neu erstellen", "confirmations.redraft.message": "Bist du dir sicher, dass du diesen Beitrag löschen und neu machen möchtest? Favoriten und Boosts werden verloren gehen und Antworten zu diesem Beitrag werden verwaist sein.", "confirmations.reply.confirm": "Antworten", - "confirmations.reply.message": "Wenn du jetzt antwortest wird es die gesamte Nachricht verwerfen, die du gerade schreibst. Möchtest du wirklich fortfahren?", + "confirmations.reply.message": "Wenn du jetzt antwortest wird die gesamte Nachricht verworfen, die du gerade schreibst. Möchtest du wirklich fortfahren?", "confirmations.unfollow.confirm": "Entfolgen", "confirmations.unfollow.message": "Bist du dir sicher, dass du {name} entfolgen möchtest?", "conversation.delete": "Unterhaltung löschen", @@ -147,6 +149,7 @@ "embed.instructions": "Du kannst diesen Beitrag auf deiner Webseite einbetten, indem du den folgenden Code einfügst.", "embed.preview": "So wird es aussehen:", "emoji_button.activity": "Aktivitäten", + "emoji_button.clear": "Leeren", "emoji_button.custom": "Eigene", "emoji_button.flags": "Flaggen", "emoji_button.food": "Essen und Trinken", @@ -165,7 +168,7 @@ "empty_column.account_unavailable": "Konto nicht verfügbar", "empty_column.blocks": "Du hast keine Profile blockiert.", "empty_column.bookmarked_statuses": "Du hast bis jetzt keine Beiträge als Lesezeichen gespeichert. Wenn du einen Beitrag als Lesezeichen speicherst wird er hier erscheinen.", - "empty_column.community": "Die lokale Zeitleiste ist leer. Schreibe einen öffentlichen Beitrag, um den Ball ins Rollen zu bringen!", + "empty_column.community": "Die lokale Zeitleiste ist leer. Schreibe einen öffentlichen Beitrag, um den Stein ins Rollen zu bringen!", "empty_column.direct": "Du hast noch keine Direktnachrichten. Sobald du eine sendest oder empfängst, wird sie hier zu sehen sein.", "empty_column.domain_blocks": "Es sind noch keine Domains versteckt.", "empty_column.explore_statuses": "Momentan ist nichts im Trend. Schau später wieder!", @@ -264,8 +267,8 @@ "lightbox.expand": "Bildansicht erweitern", "lightbox.next": "Weiter", "lightbox.previous": "Zurück", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Profil trotzdem anzeigen", + "limited_account_hint.title": "Dieses Profil wurde von den Moderatoren deines Servers versteckt.", "lists.account.add": "Zur Liste hinzufügen", "lists.account.remove": "Von der Liste entfernen", "lists.delete": "Liste löschen", diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 72b6dfa52..f9f62b9cb 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Τοπικά μόνο", "community.column_settings.media_only": "Μόνο πολυμέσα", "community.column_settings.remote_only": "Απομακρυσμένα μόνο", + "compose.language.change": "Αλλαγή γλώσσας", + "compose.language.search": "Αναζήτηση γλωσσών...", "compose_form.direct_message_warning_learn_more": "Μάθετε περισσότερα", "compose_form.encryption_warning": "Οι δημοσιεύσεις στο Mastodon δεν είναι κρυπτογραφημένες από άκρο σε άκρο. Μην μοιράζεστε επικίνδυνες πληροφορίες μέσω του Mastodon.", "compose_form.hashtag_warning": "Αυτό το τουτ δεν θα εμφανίζεται κάτω από κανένα hashtag καθώς είναι αφανές. Μόνο τα δημόσια τουτ μπορούν να αναζητηθούν ανά hashtag.", @@ -147,6 +149,7 @@ "embed.instructions": "Ενσωματώστε αυτή την κατάσταση στην ιστοσελίδα σας αντιγράφοντας τον παρακάτω κώδικα.", "embed.preview": "Ορίστε πως θα φαίνεται:", "emoji_button.activity": "Δραστηριότητα", + "emoji_button.clear": "Καθαρισμός", "emoji_button.custom": "Προσαρμοσμένα", "emoji_button.flags": "Σημαίες", "emoji_button.food": "Φαγητά & Ποτά", @@ -264,8 +267,8 @@ "lightbox.expand": "Ανάπτυξη πλαισίου εμφάνισης εικόνας", "lightbox.next": "Επόμενο", "lightbox.previous": "Προηγούμενο", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Εμφάνιση προφίλ ούτως ή άλλως", + "limited_account_hint.title": "Αυτό το προφίλ έχει αποκρυφτεί από τους διαχειριστές του διακομιστή σας.", "lists.account.add": "Πρόσθεσε στη λίστα", "lists.account.remove": "Βγάλε από τη λίστα", "lists.delete": "Διαγραφή λίστας", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 20f264f9d..51f8463cd 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Remote only", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "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.", @@ -147,6 +149,7 @@ "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Activity", + "emoji_button.clear": "Clear", "emoji_button.custom": "Custom", "emoji_button.flags": "Flags", "emoji_button.food": "Food & Drink", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 5a0b89a64..0eb9ee682 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Nur loka", "community.column_settings.media_only": "Nur aŭdovidaĵoj", "community.column_settings.remote_only": "Nur malproksima", + "compose.language.change": "Ŝanĝi lingvon", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Lerni pli", "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": "Ĉi tiu mesaĝo ne estos listigita per ajna kradvorto. Nur publikaj mesaĝoj estas serĉeblaj per kradvortoj.", @@ -147,6 +149,7 @@ "embed.instructions": "Enkorpigu ĉi tiun mesaĝon en vian retejon per kopio de la suba kodo.", "embed.preview": "Ĝi aperos tiel:", "emoji_button.activity": "Agadoj", + "emoji_button.clear": "Clear", "emoji_button.custom": "Propraj", "emoji_button.flags": "Flagoj", "emoji_button.food": "Manĝi kaj trinki", @@ -371,7 +374,7 @@ "privacy.direct.long": "Videbla nur al menciitaj uzantoj", "privacy.direct.short": "Direct", "privacy.private.long": "Videbla nur al viaj sekvantoj", - "privacy.private.short": "Followers-only", + "privacy.private.short": "Nur abonantoj", "privacy.public.long": "Videbla por ĉiuj", "privacy.public.short": "Publika", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 9467fd019..6f5ebee70 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Sólo local", "community.column_settings.media_only": "Sólo medios", "community.column_settings.remote_only": "Sólo remoto", + "compose.language.change": "Cambiar idioma", + "compose.language.search": "Buscar idiomas…", "compose_form.direct_message_warning_learn_more": "Aprendé más", "compose_form.encryption_warning": "Los mensajes en Mastodon no están cifrados de extremo a extremo. No comparta ninguna información sensible al usar Mastodon.", "compose_form.hashtag_warning": "Este mensaje no se mostrará bajo ninguna etiqueta porque no es público. Sólo los mensajes públicos se pueden buscar por etiquetas.", @@ -147,6 +149,7 @@ "embed.instructions": "Insertá este mensaje a tu sitio web copiando el código de abajo.", "embed.preview": "Así es cómo se verá:", "emoji_button.activity": "Actividad", + "emoji_button.clear": "Limpiar", "emoji_button.custom": "Personalizado", "emoji_button.flags": "Banderas", "emoji_button.food": "Comida y bebida", @@ -264,8 +267,8 @@ "lightbox.expand": "Expandir cuadro de vista de imagen", "lightbox.next": "Siguiente", "lightbox.previous": "Anterior", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Mostrar perfil de todos modos", + "limited_account_hint.title": "Este perfil fue ocultado por los moderadores de tu servidor.", "lists.account.add": "Agregar a lista", "lists.account.remove": "Quitar de lista", "lists.delete": "Eliminar lista", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index d3c5460e7..bb18bfa95 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -70,7 +70,7 @@ "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", "column.community": "Línea de tiempo local", - "column.direct": "Direct messages", + "column.direct": "Mensajes directos", "column.directory": "Buscar perfiles", "column.domain_blocks": "Dominios ocultados", "column.favourites": "Favoritos", @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Solo local", "community.column_settings.media_only": "Solo media", "community.column_settings.remote_only": "Solo remoto", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Aprender mas", "compose_form.encryption_warning": "Los mensajes en Mastodon no están cifrados de extremo a extremo. No comparta ninguna información confidencial en Mastodon.", "compose_form.hashtag_warning": "Este toot no se mostrará bajo hashtags porque no es público. Sólo los toots públicos se pueden buscar por hashtag.", @@ -147,6 +149,7 @@ "embed.instructions": "Añade este toot a tu sitio web con el siguiente código.", "embed.preview": "Así es como se verá:", "emoji_button.activity": "Actividad", + "emoji_button.clear": "Clear", "emoji_button.custom": "Personalizado", "emoji_button.flags": "Marcas", "emoji_button.food": "Comida y bebida", @@ -166,7 +169,7 @@ "empty_column.blocks": "Aún no has bloqueado a ningún usuario.", "empty_column.bookmarked_statuses": "Aún no tienes ningún toot guardado como marcador. Cuando guardes uno, se mostrará aquí.", "empty_column.community": "La línea de tiempo local está vacía. ¡Escribe algo para empezar la fiesta!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "Aún no tienes ningún mensaje directo. Cuando envíes o recibas uno, se mostrará aquí.", "empty_column.domain_blocks": "Todavía no hay dominios ocultos.", "empty_column.explore_statuses": "Nada es tendencia en este momento. ¡Revisa más tarde!", "empty_column.favourited_statuses": "Aún no tienes toots preferidos. Cuando marques uno como favorito, aparecerá aquí.", @@ -231,7 +234,7 @@ "keyboard_shortcuts.column": "enfocar un estado en una de las columnas", "keyboard_shortcuts.compose": "enfocar el área de texto de redacción", "keyboard_shortcuts.description": "Descripción", - "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.direct": "para abrir la columna de mensajes directos", "keyboard_shortcuts.down": "mover hacia abajo en la lista", "keyboard_shortcuts.enter": "abrir estado", "keyboard_shortcuts.favourite": "añadir a favoritos", @@ -292,7 +295,7 @@ "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Historia local", "navigation_bar.compose": "Escribir un nuevo toot", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Mensajes directos", "navigation_bar.discover": "Descubrir", "navigation_bar.domain_blocks": "Dominios ocultos", "navigation_bar.edit_profile": "Editar perfil", @@ -369,7 +372,7 @@ "poll_button.remove_poll": "Eliminar encuesta", "privacy.change": "Ajustar privacidad", "privacy.direct.long": "Sólo mostrar a los usuarios mencionados", - "privacy.direct.short": "Direct", + "privacy.direct.short": "Sólo cuentas mencionadas", "privacy.private.long": "Sólo mostrar a seguidores", "privacy.private.short": "Solo seguidores", "privacy.public.long": "Visible para todos", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index a520f2812..0fef6af61 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -4,7 +4,7 @@ "account.badges.bot": "Bot", "account.badges.group": "Grupo", "account.block": "Bloquear a @{name}", - "account.block_domain": "Ocultar todo de {domain}", + "account.block_domain": "Bloquear dominio {domain}", "account.blocked": "Bloqueado", "account.browse_more_on_origin_server": "Ver más en el perfil original", "account.cancel_follow_request": "Cancelar la solicitud de seguimiento", @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Solo local", "community.column_settings.media_only": "Solo media", "community.column_settings.remote_only": "Solo remoto", + "compose.language.change": "Cambiar idioma", + "compose.language.search": "Buscar idiomas...", "compose_form.direct_message_warning_learn_more": "Aprender más", "compose_form.encryption_warning": "Los mensajes en Mastodon no están cifrados de extremo a extremo. No comparta ninguna información confidencial en Mastodon.", "compose_form.hashtag_warning": "Esta publicación no se mostrará bajo ningún hashtag porque no está listada. Sólo las publicaciones públicas se pueden buscar por hashtag.", @@ -147,6 +149,7 @@ "embed.instructions": "Añade esta publicación a tu sitio web con el siguiente código.", "embed.preview": "Así es como se verá:", "emoji_button.activity": "Actividad", + "emoji_button.clear": "Limpiar", "emoji_button.custom": "Personalizado", "emoji_button.flags": "Marcas", "emoji_button.food": "Comida y bebida", @@ -264,8 +267,8 @@ "lightbox.expand": "Expandir cuadro de visualización de imagen", "lightbox.next": "Siguiente", "lightbox.previous": "Anterior", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Mostrar perfil de todos modos", + "limited_account_hint.title": "Este perfil ha sido ocultado por los moderadores de tu servidor.", "lists.account.add": "Añadir a lista", "lists.account.remove": "Quitar de lista", "lists.delete": "Borrar lista", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 09fd9bd9a..8c25a6af5 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Ainult kohalik", "community.column_settings.media_only": "Ainult meedia", "community.column_settings.remote_only": "Ainult kaug", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Vaata veel", "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": "Seda tuuti ei kuvata ühegi sildi all, sest see on kirjendamata. Ainult avalikud tuutid on sildi järgi otsitavad.", @@ -147,6 +149,7 @@ "embed.instructions": "Manusta see staatus oma veebilehele, kopeerides alloleva koodi.", "embed.preview": "Nii näeb see välja:", "emoji_button.activity": "Tegevus", + "emoji_button.clear": "Clear", "emoji_button.custom": "Mugandatud", "emoji_button.flags": "Lipud", "emoji_button.food": "Toit & Jook", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 422f25f88..4ab0c44be 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Lokala soilik", "community.column_settings.media_only": "Multimedia besterik ez", "community.column_settings.remote_only": "Urrunekoa soilik", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Ikasi gehiago", "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": "Bidalketa hau ez da traoletan agertuko zerrendatu gabekoa baita. Traoletan bidalketa publikoak besterik ez dira agertzen.", @@ -147,6 +149,7 @@ "embed.instructions": "Txertatu bidalketa hau zure webgunean beheko kodea kopiatuz.", "embed.preview": "Hau da izango duen itxura:", "emoji_button.activity": "Jarduera", + "emoji_button.clear": "Clear", "emoji_button.custom": "Pertsonalizatua", "emoji_button.flags": "Banderak", "emoji_button.food": "Janari eta edaria", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index f89f242b7..5ae0872ca 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "فقط محلّی", "community.column_settings.media_only": "فقط رسانه", "community.column_settings.remote_only": "تنها دوردست", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "بیشتر بدانید", "compose_form.encryption_warning": "فرسته‌های ماستودون رمزگذاری سرتاسری نشده‌اند. هیچ اطّلاعات خطرناکی را روی ماستودون هم‌رسانی نکنید.", "compose_form.hashtag_warning": "از آن‌جا که این فرسته فهرست نشده است، در نتایج جست‌وجوی هشتگ‌ها پیدا نخواهد شد. تنها فرسته‌های عمومی را می‌توان با جست‌وجوی هشتگ یافت.", @@ -147,6 +149,7 @@ "embed.instructions": "برای جاسازی این فرسته در سایت خودتان، کد زیر را رونوشت کنید.", "embed.preview": "این گونه دیده خواهد شد:", "emoji_button.activity": "فعالیت", + "emoji_button.clear": "Clear", "emoji_button.custom": "سفارشی", "emoji_button.flags": "پرچم‌ها", "emoji_button.food": "غذا و نوشیدنی", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 50295592e..586d9858a 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Vain paikalliset", "community.column_settings.media_only": "Vain media", "community.column_settings.remote_only": "Vain etäkäyttö", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Lisätietoja", "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": "Tätä julkaisua listata minkään hastagin alle, koska se on listaamaton. Ainoastaan julkisia julkaisuja etsiä hastageilla.", @@ -147,6 +149,7 @@ "embed.instructions": "Upota julkaisu verkkosivullesi kopioimalla alla oleva koodi.", "embed.preview": "Se tulee näyttämään tältä:", "emoji_button.activity": "Aktiviteetit", + "emoji_button.clear": "Clear", "emoji_button.custom": "Mukautetut", "emoji_button.flags": "Liput", "emoji_button.food": "Ruoka ja juoma", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index a822ba203..cf7918fa5 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Local seulement", "community.column_settings.media_only": "Média uniquement", "community.column_settings.remote_only": "Distant seulement", + "compose.language.change": "Changer de langue", + "compose.language.search": "Rechercher des langues …", "compose_form.direct_message_warning_learn_more": "En savoir plus", "compose_form.encryption_warning": "Les messages sur Mastodon ne sont pas chiffrés de bout en bout. Ne partagez aucune information confidentielle sur Mastodon.", "compose_form.hashtag_warning": "Ce pouet ne sera pas listé dans les recherches par hashtag car sa visibilité est réglée sur « non listé ». Seuls les pouets avec une visibilité « publique » peuvent être recherchés par hashtag.", @@ -147,6 +149,7 @@ "embed.instructions": "Intégrez ce message à votre site en copiant le code ci-dessous.", "embed.preview": "Il apparaîtra comme cela :", "emoji_button.activity": "Activités", + "emoji_button.clear": "Effacer", "emoji_button.custom": "Personnalisés", "emoji_button.flags": "Drapeaux", "emoji_button.food": "Nourriture et boisson", @@ -264,8 +267,8 @@ "lightbox.expand": "Agrandir la fenêtre de visualisation des images", "lightbox.next": "Suivant", "lightbox.previous": "Précédent", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Afficher le profil quand même", + "limited_account_hint.title": "Ce profil a été masqué par la modération de votre serveur.", "lists.account.add": "Ajouter à la liste", "lists.account.remove": "Supprimer de la liste", "lists.delete": "Supprimer la liste", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index d701d0d98..f56e6d5fa 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Remote only", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "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.", @@ -147,6 +149,7 @@ "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Gníomhaíocht", + "emoji_button.clear": "Clear", "emoji_button.custom": "Custom", "emoji_button.flags": "Flags", "emoji_button.food": "Bia ⁊ Ól", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 9406f2e5d..0f5ffab04 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Feadhainn ionadail a-mhàin", "community.column_settings.media_only": "Meadhanan a-mhàin", "community.column_settings.remote_only": "Feadhainn chèin a-mhàin", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Barrachd fiosrachaidh", "compose_form.encryption_warning": "Chan eil crioptachadh ceann gu ceann air postaichean Mhastodon. Na co-roinn fiosrachadh cunnartach idir le Mastodon.", "compose_form.hashtag_warning": "Cha nochd am post seo fon taga hais on a tha e falaichte o liostaichean. Cha ghabh ach postaichean poblach a lorg a-rèir an tagaichean hais.", @@ -147,6 +149,7 @@ "embed.instructions": "Leabaich am post seo san làrach-lìn agad is tu a’ dèanamh lethbhreac dhen chòd gu h-ìosal.", "embed.preview": "Seo an coltas a bhios air:", "emoji_button.activity": "Gnìomhachd", + "emoji_button.clear": "Clear", "emoji_button.custom": "Gnàthaichte", "emoji_button.flags": "Brataichean", "emoji_button.food": "Biadh ⁊ deoch", @@ -264,8 +267,8 @@ "lightbox.expand": "Leudaich bogsa sealladh an deilbh", "lightbox.next": "Air adhart", "lightbox.previous": "Air ais", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Seall a’ phròifil co-dhiù", + "limited_account_hint.title": "Chaidh a’ phròifil seo fhalach le maoir an fhrithealaiche agad.", "lists.account.add": "Cuir ris an liosta", "lists.account.remove": "Thoir air falbh on liosta", "lists.delete": "Sguab às an liosta", @@ -319,7 +322,7 @@ "notification.own_poll": "Thàinig an cunntas-bheachd agad gu crìoch", "notification.poll": "Thàinig cunntas-bheachd sa bhòt thu gu crìoch", "notification.reblog": "Bhrosnaich {name} am post agad", - "notification.status": "Tha {name} air rud a phostadh", + "notification.status": "Phostaich {name} rud", "notification.update": "Dheasaich {name} post", "notifications.clear": "Falamhaich na brathan", "notifications.clear_confirmation": "A bheil thu cinnteach gu bheil thu airson na brathan uile agad fhalamhachadh gu buan?", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index a1a476623..3a158ec76 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Só local", "community.column_settings.media_only": "Só multimedia", "community.column_settings.remote_only": "Só remoto", + "compose.language.change": "Elixe o idioma", + "compose.language.search": "Buscar idiomas...", "compose_form.direct_message_warning_learn_more": "Coñecer máis", "compose_form.encryption_warning": "As publicacións en Mastodon non están cifradas de extremo-a-extremo. Non compartas información sensible en Mastodon.", "compose_form.hashtag_warning": "Esta publicación non aparecerá baixo ningún cancelo (hashtag) porque non está listada. Só se poden procurar publicacións públicas por cancelos.", @@ -147,6 +149,7 @@ "embed.instructions": "Engade esta publicación ó teu sitio web copiando o seguinte código.", "embed.preview": "Así será mostrado:", "emoji_button.activity": "Actividade", + "emoji_button.clear": "Limpar", "emoji_button.custom": "Personalizado", "emoji_button.flags": "Marcas", "emoji_button.food": "Comida e Bebida", @@ -264,8 +267,8 @@ "lightbox.expand": "Expandir a caixa de vista da imaxe", "lightbox.next": "Seguinte", "lightbox.previous": "Anterior", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Mostrar perfil igualmente", + "limited_account_hint.title": "Este perfil foi agochado pola moderación do teu servidor.", "lists.account.add": "Engadir á listaxe", "lists.account.remove": "Eliminar da listaxe", "lists.delete": "Eliminar listaxe", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 4c672a80a..3dcb7c9c7 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "מקומי בלבד", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "מרחוק בלבד", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "מידע נוסף", "compose_form.encryption_warning": "חצרוצים במסטודון אינם מוצפנים מקצה לקצה. לעולם אל תחלקו מידע רגיש דרך מסטודון.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", @@ -147,6 +149,7 @@ "embed.instructions": "ניתן להטמיע את ההודעה באתרך ע\"י העתקת הקוד שלהלן.", "embed.preview": "דוגמא כיצד זה יראה:", "emoji_button.activity": "פעילות", + "emoji_button.clear": "Clear", "emoji_button.custom": "מיוחדים", "emoji_button.flags": "דגלים", "emoji_button.food": "אוכל ושתיה", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index 32ebbe450..b347784af 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "स्थानीय ही", "community.column_settings.media_only": "सिर्फ़ मीडिया", "community.column_settings.remote_only": "केवल सुदूर", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "और जानें", "compose_form.encryption_warning": "मास्टोडॉन पर पोस्ट एन्ड-टू-एन्ड एन्क्रिप्टेड नहीं है", "compose_form.hashtag_warning": "यह टूट् किसी भी हैशटैग के तहत सूचीबद्ध नहीं होगा क्योंकि यह अनलिस्टेड है। हैशटैग द्वारा केवल सार्वजनिक टूट्स खोजे जा सकते हैं।", @@ -147,6 +149,7 @@ "embed.instructions": "अपने वेबसाइट पर, निचे दिए कोड को कॉपी करके, इस स्टेटस को एम्बेड करें", "embed.preview": "यह ऐसा दिखेगा :", "emoji_button.activity": "गतिविधि", + "emoji_button.clear": "Clear", "emoji_button.custom": "निजीकृत", "emoji_button.flags": "झंडे", "emoji_button.food": "भोजन एवं पेय", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index 1d02d6e40..4096c98d0 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Samo lokalno", "community.column_settings.media_only": "Samo medijski sadržaj", "community.column_settings.remote_only": "Samo udaljeno", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Saznajte više", "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": "Ovaj toot neće biti prikazan ni pod jednim hashtagom jer je postavljen kao neprikazan. Samo javni tootovi mogu biti pretraživani pomoći hashtagova.", @@ -147,6 +149,7 @@ "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Evo kako će izgledati:", "emoji_button.activity": "Aktivnost", + "emoji_button.clear": "Clear", "emoji_button.custom": "Prilagođeno", "emoji_button.flags": "Zastave", "emoji_button.food": "Hrana i piće", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 80059f852..b22778e71 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Csak helyi", "community.column_settings.media_only": "Csak média", "community.column_settings.remote_only": "Csak távoli", + "compose.language.change": "Nyelv megváltoztatása", + "compose.language.search": "Nyelv keresése...", "compose_form.direct_message_warning_learn_more": "Tudj meg többet", "compose_form.encryption_warning": "A bejegyzések a Mastodonon nem használnak végpontok közötti titkosítást. Ne ossz meg érzékeny információt Mastodonon.", "compose_form.hashtag_warning": "Ez a bejegyzésed nem fog megjelenni semmilyen hashtag alatt, mivel listázatlan. Csak a nyilvános bejegyzések kereshetők hashtaggel.", @@ -147,6 +149,7 @@ "embed.instructions": "Ágyazd be ezt a bejegyzést a weboldaladba az alábbi kód kimásolásával.", "embed.preview": "Így fog kinézni:", "emoji_button.activity": "Tevékenység", + "emoji_button.clear": "Törlés", "emoji_button.custom": "Egyéni", "emoji_button.flags": "Zászlók", "emoji_button.food": "Étel és Ital", @@ -264,8 +267,8 @@ "lightbox.expand": "Képnézet kinagyítása", "lightbox.next": "Következő", "lightbox.previous": "Előző", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Mindenképpen mutassa a profilt", + "limited_account_hint.title": "Ezt a profilt a kiszolgálód moderátorai elrejtették.", "lists.account.add": "Hozzáadás a listához", "lists.account.remove": "Eltávolítás a listából", "lists.delete": "Lista törlése", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index bb3092daf..493deba27 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Միայն տեղական", "community.column_settings.media_only": "Միայն մեդիա", "community.column_settings.remote_only": "Միայն հեռակայ", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "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": "Այս գրառումը չի հաշուառուի որեւէ պիտակի տակ, քանզի այն ծածուկ է։ Միայն հրապարակային թթերը հնարաւոր է որոնել պիտակներով։", @@ -147,6 +149,7 @@ "embed.instructions": "Այս գրառումը քո կայքում ներդնելու համար կարող ես պատճէնել ներքեւի կոդը։", "embed.preview": "Ահա, թէ ինչ տեսք կունենայ այն՝", "emoji_button.activity": "Զբաղմունքներ", + "emoji_button.clear": "Clear", "emoji_button.custom": "Յատուկ", "emoji_button.flags": "Դրօշներ", "emoji_button.food": "Կերուխում", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index ed4a36b2a..ada2876dd 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Hanya lokal", "community.column_settings.media_only": "Hanya media", "community.column_settings.remote_only": "Hanya jarak jauh", + "compose.language.change": "Ganti bahasa", + "compose.language.search": "Telusuri bahasa...", "compose_form.direct_message_warning_learn_more": "Pelajari selengkapnya", "compose_form.encryption_warning": "Kiriman di Mastodon tidak dienkripsi end-to-end. Jangan bagikan informasi rahasial melalui Mastodon.", "compose_form.hashtag_warning": "Toot ini tidak akan ada dalam daftar tagar manapun karena telah diatur sebagai tidak terdaftar. Hanya postingan publik yang bisa dicari dengan tagar.", @@ -147,6 +149,7 @@ "embed.instructions": "Sematkan kiriman ini di website anda dengan menyalin kode di bawah ini.", "embed.preview": "Tampilan akan seperti ini nantinya:", "emoji_button.activity": "Aktivitas", + "emoji_button.clear": "Hapus", "emoji_button.custom": "Kustom", "emoji_button.flags": "Bendera", "emoji_button.food": "Makanan & Minuman", @@ -264,8 +267,8 @@ "lightbox.expand": "Besarkan kotak tampilan gambar", "lightbox.next": "Selanjutnya", "lightbox.previous": "Sebelumnya", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Tetap tampilkan profil", + "limited_account_hint.title": "Profil ini telah disembunyikan oleh moderator server Anda.", "lists.account.add": "Tambah ke daftar", "lists.account.remove": "Hapus dari daftar", "lists.delete": "Hapus daftar", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 3e1821acb..27dc52ce9 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Lokala nur", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Fora nur", + "compose.language.change": "Chanjez linguo", + "compose.language.search": "Trovez linguo...", "compose_form.direct_message_warning_learn_more": "Lernez plu", "compose_form.encryption_warning": "Posti di Mastodon ne intersequante chifrigesas. Ne partigez irga danjera informo che Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", @@ -147,6 +149,7 @@ "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Co esas quon ol semblos tale:", "emoji_button.activity": "Ago", + "emoji_button.clear": "Efacez", "emoji_button.custom": "Kustumizato", "emoji_button.flags": "Flagi", "emoji_button.food": "Manjajo & Drinkajo", @@ -264,8 +267,8 @@ "lightbox.expand": "Expansez imajvidbuxo", "lightbox.next": "Nexta", "lightbox.previous": "Antea", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Jus montrez profilo", + "limited_account_hint.title": "Ca profilo celesas da jerero di vua servilo.", "lists.account.add": "Insertez a listo", "lists.account.remove": "Efacez de listo", "lists.delete": "Efacez listo", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 0dd9d1a87..845d0f8d5 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Einungis staðvært", "community.column_settings.media_only": "Einungis myndskrár", "community.column_settings.remote_only": "Einungis fjartengt", + "compose.language.change": "Skipta um tungumál", + "compose.language.search": "Leita að tungumálum...", "compose_form.direct_message_warning_learn_more": "Kanna nánar", "compose_form.encryption_warning": "Færslur á Mastodon eru ekki enda-í-enda dulritaðar. Ekki deila viðkvæmum upplýsingum á Mastodon.", "compose_form.hashtag_warning": "Þessi færsla verður ekki talin með undir nokkru myllumerki þar sem það er óskráð. Einungis er hægt að leita að opinberum færslum eftir myllumerkjum.", @@ -147,6 +149,7 @@ "embed.instructions": "Felldu þessa færslu inn í vefsvæðið þitt með því að afrita kóðann hér fyrir neðan.", "embed.preview": "Svona mun þetta líta út:", "emoji_button.activity": "Virkni", + "emoji_button.clear": "Hreinsa", "emoji_button.custom": "Sérsniðin", "emoji_button.flags": "Flögg", "emoji_button.food": "Matur og drykkur", @@ -264,8 +267,8 @@ "lightbox.expand": "Fletta út myndskoðunarreit", "lightbox.next": "Næsta", "lightbox.previous": "Fyrra", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Birta notandasniðið samt", + "limited_account_hint.title": "Þetta notandasnið hefur verið falið af umsjónarmönnum netþjónsins þíns.", "lists.account.add": "Bæta á lista", "lists.account.remove": "Fjarlægja af lista", "lists.delete": "Eyða lista", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 40cdb6211..46e509b07 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Solo Locale", "community.column_settings.media_only": "Solo Media", "community.column_settings.remote_only": "Solo Remoto", + "compose.language.change": "Cambia lingua", + "compose.language.search": "Ricerca lingue...", "compose_form.direct_message_warning_learn_more": "Scopri di più", "compose_form.encryption_warning": "I messaggi su Mastodon non sono crittografati end-to-end. Non condividere alcuna informazione sensibile su Mastodon.", "compose_form.hashtag_warning": "Questo post non sarà elencato sotto alcun hashtag poiché senza elenco. Solo i toot pubblici possono essere ricercati per hashtag.", @@ -147,6 +149,7 @@ "embed.instructions": "Incorpora questo post sul tuo sito web copiando il codice sotto.", "embed.preview": "Ecco come apparirà:", "emoji_button.activity": "Attività", + "emoji_button.clear": "Cancella", "emoji_button.custom": "Personalizzato", "emoji_button.flags": "Bandiere", "emoji_button.food": "Cibo & Bevande", @@ -264,8 +267,8 @@ "lightbox.expand": "Espandi casella di visualizzazione immagine", "lightbox.next": "Successivo", "lightbox.previous": "Precedente", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Mostra comunque il profilo", + "limited_account_hint.title": "Questo profilo è stato nascosto dai moderatori del tuo server.", "lists.account.add": "Aggiungi alla lista", "lists.account.remove": "Togli dalla lista", "lists.delete": "Elimina lista", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index cd3b8518c..34d2a8a02 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "ローカルのみ表示", "community.column_settings.media_only": "メディアのみ表示", "community.column_settings.remote_only": "リモートのみ表示", + "compose.language.change": "言語を変更", + "compose.language.search": "言語を検索...", "compose_form.direct_message_warning_learn_more": "もっと詳しく", "compose_form.encryption_warning": "Mastodonの投稿はエンドツーエンド暗号化に対応していません。安全に送受信されるべき情報をMastodonで共有しないでください。", "compose_form.hashtag_warning": "この投稿は公開設定ではないのでハッシュタグの一覧に表示されません。公開投稿だけがハッシュタグで検索できます。", @@ -147,6 +149,7 @@ "embed.instructions": "下記のコードをコピーしてウェブサイトに埋め込みます。", "embed.preview": "表示例:", "emoji_button.activity": "活動", + "emoji_button.clear": "クリア", "emoji_button.custom": "カスタム絵文字", "emoji_button.flags": "国旗", "emoji_button.food": "食べ物", @@ -264,8 +267,8 @@ "lightbox.expand": "画像ビューボックスを開く", "lightbox.next": "次", "lightbox.previous": "前", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "構わず表示する", + "limited_account_hint.title": "このプロフィールはサーバーのモデレーターによって非表示になっています。", "lists.account.add": "リストに追加", "lists.account.remove": "リストから外す", "lists.delete": "リストを削除", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index 8d245f797..2ded9c350 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "მხოლოდ მედია", "community.column_settings.remote_only": "Remote only", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "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": "ეს ტუტი არ მოექცევა ჰეშტეგების ქვეს, რამეთუ ის არაა მითითებული. მხოლოდ ღია ტუტები მოიძებნება ჰეშტეგით.", @@ -147,6 +149,7 @@ "embed.instructions": "ეს სტატუსი ჩასვით თქვენს ვებ-საიტზე შემდეგი კოდის კოპირებით.", "embed.preview": "ესაა თუ როგორც გამოჩნდება:", "emoji_button.activity": "აქტივობა", + "emoji_button.clear": "Clear", "emoji_button.custom": "პერსონალიზირებული", "emoji_button.flags": "დროშები", "emoji_button.food": "საჭმელი და სასლმელი", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index b619a7012..37c4c9d0b 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Adigan kan", "community.column_settings.media_only": "Allal n teywalt kan", "community.column_settings.remote_only": "Anmeggag kan", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Issin ugar", "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 toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", @@ -147,6 +149,7 @@ "embed.instructions": "Ẓẓu addad-agi deg usmel-inek s wenγal n tangalt yellan sdaw-agi.", "embed.preview": "Akka ara d-iban:", "emoji_button.activity": "Aqeddic", + "emoji_button.clear": "Clear", "emoji_button.custom": "Udmawan", "emoji_button.flags": "Innayen", "emoji_button.food": "Tegwella & Tissit", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index 568485774..659c45db4 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Тек жергілікті", "community.column_settings.media_only": "Тек медиа", "community.column_settings.remote_only": "Тек сыртқы", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "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": "Бұл пост іздеуде хэштегпен шықпайды, өйткені ол бәріне ашық емес. Тек ашық жазбаларды ғана хэштег арқылы іздеп табуға болады.", @@ -147,6 +149,7 @@ "embed.instructions": "Төмендегі кодты көшіріп алу арқылы жазбаны басқа сайттарға да орналастыра аласыз.", "embed.preview": "Былай көрінетін болады:", "emoji_button.activity": "Белсенділік", + "emoji_button.clear": "Clear", "emoji_button.custom": "Жеке", "emoji_button.flags": "Тулар", "emoji_button.food": "Тамақ", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index f6b1c0b8c..af99045bb 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Remote only", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", @@ -147,6 +149,7 @@ "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Activity", + "emoji_button.clear": "Clear", "emoji_button.custom": "Custom", "emoji_button.flags": "Flags", "emoji_button.food": "Food & Drink", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 4810cb955..37b7eb672 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -16,11 +16,11 @@ "account.endorse": "프로필에 추천하기", "account.follow": "팔로우", "account.followers": "팔로워", - "account.followers.empty": "아직 아무도 이 유저를 팔로우하고 있지 않습니다.", + "account.followers.empty": "아직 아무도 이 사용자를 팔로우하고 있지 않습니다.", "account.followers_counter": "{counter} 팔로워", "account.following": "팔로잉", "account.following_counter": "{counter} 팔로잉", - "account.follows.empty": "이 유저는 아직 아무도 팔로우하고 있지 않습니다.", + "account.follows.empty": "이 사용자는 아직 아무도 팔로우하고 있지 않습니다.", "account.follows_you": "날 팔로우합니다", "account.hide_reblogs": "@{name}의 부스트를 숨기기", "account.joined": "{date}에 가입함", @@ -92,6 +92,8 @@ "community.column_settings.local_only": "로컬만", "community.column_settings.media_only": "미디어만", "community.column_settings.remote_only": "원격만", + "compose.language.change": "언어 변경", + "compose.language.search": "언어 검색...", "compose_form.direct_message_warning_learn_more": "더 알아보기", "compose_form.encryption_warning": "마스토돈의 게시물들은 종단간 암호화가 되지 않습니다. 위험한 정보를 마스토돈을 통해 전달하지 마세요.", "compose_form.hashtag_warning": "이 게시물은 어떤 해시태그로도 검색 되지 않습니다. 전체공개로 게시 된 게시물만이 해시태그로 검색 될 수 있습니다.", @@ -147,6 +149,7 @@ "embed.instructions": "아래의 코드를 복사하여 대화를 원하는 곳으로 공유하세요.", "embed.preview": "다음과 같이 표시됩니다:", "emoji_button.activity": "활동", + "emoji_button.clear": "지우기", "emoji_button.custom": "커스텀", "emoji_button.flags": "깃발", "emoji_button.food": "음식과 마실것", @@ -180,7 +183,7 @@ "empty_column.lists": "아직 리스트가 없습니다. 리스트를 만들면 여기에 나타납니다.", "empty_column.mutes": "아직 아무도 뮤트하지 않았습니다.", "empty_column.notifications": "아직 알림이 없습니다. 다른 사람들이 당신에게 반응했을 때, 여기에서 볼 수 있습니다.", - "empty_column.public": "여기엔 아직 아무 것도 없습니다! 공개적으로 무언가 포스팅하거나, 다른 서버의 유저를 팔로우 해서 채워보세요", + "empty_column.public": "여기엔 아직 아무 것도 없습니다! 공개적으로 무언가 포스팅하거나, 다른 서버의 사용자를 팔로우 해서 채워보세요", "error.unexpected_crash.explanation": "버그 혹은 브라우저 호환성 문제로 이 페이지를 올바르게 표시할 수 없습니다.", "error.unexpected_crash.explanation_addons": "이 페이지는 올바르게 보여질 수 없습니다. 브라우저 애드온이나 자동 번역 도구 등으로 인해 발생된 에러일 수 있습니다.", "error.unexpected_crash.next_steps": "페이지를 새로고침 해보세요. 그래도 해결되지 않는 경우, 다른 브라우저나 네이티브 앱으로도 마스토돈을 이용하실 수 있습니다.", @@ -226,7 +229,7 @@ "intervals.full.hours": "{number} 시간", "intervals.full.minutes": "{number} 분", "keyboard_shortcuts.back": "뒤로가기", - "keyboard_shortcuts.blocked": "차단한 유저 리스트 열기", + "keyboard_shortcuts.blocked": "차단된 사용자 목록 열기", "keyboard_shortcuts.boost": "게시물 부스트", "keyboard_shortcuts.column": "해당 컬럼에 포커스", "keyboard_shortcuts.compose": "작성창에 포커스", @@ -243,7 +246,7 @@ "keyboard_shortcuts.legend": "이 개요 표시", "keyboard_shortcuts.local": "로컬 타임라인 열기", "keyboard_shortcuts.mention": "작성자에게 멘션", - "keyboard_shortcuts.muted": "뮤트 된 유저 리스트 열기", + "keyboard_shortcuts.muted": "뮤트된 사용자 목록 열기", "keyboard_shortcuts.my_profile": "내 프로필 열기", "keyboard_shortcuts.notifications": "알림 컬럼 열기", "keyboard_shortcuts.open_media": "미디어 열기", @@ -264,8 +267,8 @@ "lightbox.expand": "이미지 박스 확장", "lightbox.next": "다음", "lightbox.previous": "이전", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "그래도 프로필 보기", + "limited_account_hint.title": "이 프로필은 서버 운영진에 의해 숨겨진 상태입니다.", "lists.account.add": "리스트에 추가", "lists.account.remove": "리스트에서 제거", "lists.delete": "리스트 삭제", @@ -430,11 +433,11 @@ "report.unfollow_explanation": "당신을 이 계정을 팔로우 하고 있습니다. 홈 피드에서 게시물을 보지 않으려면, 팔로우를 해제하세요.", "search.placeholder": "검색", "search_popout.search_format": "고급 검색 방법", - "search_popout.tips.full_text": "단순한 텍스트 검색은 당신이 작성했거나, 관심글로 지정했거나, 부스트했거나, 멘션을 받은 게시글, 그리고 유저네임, 디스플레이네임, 해시태그를 반환합니다.", + "search_popout.tips.full_text": "단순한 텍스트 검색은 당신이 작성했거나, 관심글로 지정했거나, 부스트했거나, 멘션을 받은 게시글, 그리고 사용자명, 표시되는 이름, 해시태그를 반환합니다.", "search_popout.tips.hashtag": "해시태그", "search_popout.tips.status": "게시물", - "search_popout.tips.text": "단순한 텍스트 검색은 관계된 프로필 이름, 유저 이름 그리고 해시태그를 표시합니다", - "search_popout.tips.user": "유저", + "search_popout.tips.text": "단순한 텍스트 검색은 관계된 프로필 이름, 사용자명 그리고 해시태그를 표시합니다", + "search_popout.tips.user": "사용자", "search_results.accounts": "사람", "search_results.all": "전부", "search_results.hashtags": "해시태그", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 42e9976b3..6470e50ca 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Tenê herêmî", "community.column_settings.media_only": "Tenê media", "community.column_settings.remote_only": "Tenê ji dûr ve", + "compose.language.change": "Ziman biguherîne", + "compose.language.search": "Li zimanan bigere...", "compose_form.direct_message_warning_learn_more": "Bêtir fêr bibe", "compose_form.encryption_warning": "Şandiyên li ser Mastodon dawî-bi-dawî ne şîfrekirî ne. Li ser Mastodon zanyariyên talûke parve neke.", "compose_form.hashtag_warning": "Ev şandî ji ber ku nehatiye tomarkirin dê di binê hashtagê de neyê tomar kirin. Tenê peyamên gelemperî dikarin bi hashtagê werin lêgerîn.", @@ -147,6 +149,7 @@ "embed.instructions": "Bi jêgirtina koda jêrîn vê şandiyê li ser malpera xwe bicîh bikin.", "embed.preview": "Wa ye wê wusa xuya bike:", "emoji_button.activity": "Çalakî", + "emoji_button.clear": "Pak bike", "emoji_button.custom": "Kesanekirî", "emoji_button.flags": "Nîşankirî", "emoji_button.food": "Xwarin û vexwarin", @@ -264,8 +267,8 @@ "lightbox.expand": "Qutîya wêneya nîşan dike fireh bike", "lightbox.next": "Pêş", "lightbox.previous": "Paş", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Bi heman awayî profîlê nîşan bide", + "limited_account_hint.title": "Ev profîl ji aliyê çavêriya li ser rajekarê te hatiye veşartin.", "lists.account.add": "Tevlî rêzokê bike", "lists.account.remove": "Ji rêzokê rake", "lists.delete": "Rêzokê jê bibe", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index 96540d796..555b39da5 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Leel hepken", "community.column_settings.media_only": "Myski hepken", "community.column_settings.remote_only": "A-bell hepken", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Dyski moy", "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": "Ny vydh an post ma diskwedhys yn-dann vòlnos vyth awos y vos mes a rol. Ny yllir hwilas saw poblow postek dre vòlnos.", @@ -147,6 +149,7 @@ "embed.instructions": "Stagewgh an post ma a-berth yn agas gwiasva ow tasskrifa'n kod a-wòles.", "embed.preview": "Ottomma fatel hevel:", "emoji_button.activity": "Gwrians", + "emoji_button.clear": "Clear", "emoji_button.custom": "A-vusur", "emoji_button.flags": "Baneryow", "emoji_button.food": "Bòs & Diwes", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 27e24b2cf..a37b946b4 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Remote only", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", @@ -147,6 +149,7 @@ "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Activity", + "emoji_button.clear": "Clear", "emoji_button.custom": "Custom", "emoji_button.flags": "Flags", "emoji_button.food": "Food & Drink", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index aff6d01e6..7ef2c2c6f 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Tikai vietējie", "community.column_settings.media_only": "Tikai mediji", "community.column_settings.remote_only": "Tikai attālinātie", + "compose.language.change": "Mainīt valodu", + "compose.language.search": "Meklēt valodas...", "compose_form.direct_message_warning_learn_more": "Uzzināt vairāk", "compose_form.encryption_warning": "Ziņas vietnē Mastodon nav pilnībā šifrētas. Nedalies ar bīstamu informāciju caur Mastodon.", "compose_form.hashtag_warning": "Ziņojumu nebūs iespējams atrast zem haštagiem jo tas nav publisks. Tikai publiskos ziņojumus ir iespējams meklēt pēc tiem.", @@ -147,6 +149,7 @@ "embed.instructions": "Iestrādā šo ziņu savā mājaslapā, kopējot zemāk redzmo kodu.", "embed.preview": "Tas izskatīsies šādi:", "emoji_button.activity": "Aktivitāte", + "emoji_button.clear": "Notīrīt", "emoji_button.custom": "Pielāgots", "emoji_button.flags": "Karogi", "emoji_button.food": "Ēdieni un dzērieni", @@ -264,8 +267,8 @@ "lightbox.expand": "Paplašināt attēla ietvaru", "lightbox.next": "Tālāk", "lightbox.previous": "Iepriekš", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Tik un tā rādīt profilu", + "limited_account_hint.title": "Tava servera moderatori ir paslēpuši šo profilu.", "lists.account.add": "Pievienot sarakstam", "lists.account.remove": "Noņemt no saraksta", "lists.delete": "Dzēst sarakstu", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index 27fb4cda4..df7d84d4b 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Само медиа", "community.column_settings.remote_only": "Remote only", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "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 toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", @@ -147,6 +149,7 @@ "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Активност", + "emoji_button.clear": "Clear", "emoji_button.custom": "Custom", "emoji_button.flags": "Flags", "emoji_button.food": "Храна & Пијалаци", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index 0f5956018..69267f652 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "പ്രാദേശികം മാത്രം", "community.column_settings.media_only": "മാധ്യമങ്ങൾ മാത്രം", "community.column_settings.remote_only": "Remote only", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "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": "ഈ ടൂട്ട് പട്ടികയിൽ ഇല്ലാത്തതിനാൽ ഒരു ചർച്ചാവിഷയത്തിന്റെ പട്ടികയിലും പെടുകയില്ല. പരസ്യമായ ടൂട്ടുകൾ മാത്രമേ ചർച്ചാവിഷയം അടിസ്ഥാനമാക്കി തിരയുവാൻ സാധിക്കുകയുള്ളു.", @@ -147,6 +149,7 @@ "embed.instructions": "ചുവടെയുള്ള കോഡ് പകർത്തിക്കൊണ്ട് നിങ്ങളുടെ വെബ്‌സൈറ്റിൽ ഈ ടൂട്ട് ഉൾച്ചേർക്കുക.", "embed.preview": "ഇത് ഇങ്ങനെ കാണപ്പെടും:", "emoji_button.activity": "പ്രവര്‍ത്തനം", + "emoji_button.clear": "Clear", "emoji_button.custom": "സ്വന്തമായ ഭേദഗതി", "emoji_button.flags": "കൊടികൾ", "emoji_button.food": "ഭക്ഷണവും പാനീയവും", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index 42b40afb4..6728c0999 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "केवळ मीडिया", "community.column_settings.remote_only": "Remote only", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "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 toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", @@ -147,6 +149,7 @@ "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Activity", + "emoji_button.clear": "Clear", "emoji_button.custom": "Custom", "emoji_button.flags": "Flags", "emoji_button.food": "Food & Drink", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 6f0133671..4cb6437f4 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Tempatan sahaja", "community.column_settings.media_only": "Media sahaja", "community.column_settings.remote_only": "Jauh sahaja", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Ketahui lebih lanjut", "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": "Hantaran ini tidak akan disenaraikan di bawah mana-mana tanda pagar kerana ia tidak tersenarai. Hanya hantaran awam sahaja boleh dicari menggunakan tanda pagar.", @@ -147,6 +149,7 @@ "embed.instructions": "Benam hantaran ini di laman sesawang anda dengan menyalin kod berikut.", "embed.preview": "Begini rupanya nanti:", "emoji_button.activity": "Aktiviti", + "emoji_button.clear": "Clear", "emoji_button.custom": "Tersuai", "emoji_button.flags": "Bendera", "emoji_button.food": "Makanan & Minuman", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index efbc172fe..3319f4bd7 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Alleen lokaal", "community.column_settings.media_only": "Alleen media", "community.column_settings.remote_only": "Alleen andere servers", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Meer leren", "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": "Dit bericht valt niet onder een hashtag te bekijken, omdat deze niet op openbare tijdlijnen wordt getoond. Alleen openbare berichten kunnen via hashtags gevonden worden.", @@ -147,6 +149,7 @@ "embed.instructions": "Embed dit bericht op jouw website door de onderstaande code te kopiëren.", "embed.preview": "Zo komt het eruit te zien:", "emoji_button.activity": "Activiteiten", + "emoji_button.clear": "Clear", "emoji_button.custom": "Lokale emoji’s", "emoji_button.flags": "Vlaggen", "emoji_button.food": "Eten en drinken", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 863ed2b98..24a4e98b7 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Berre lokalt", "community.column_settings.media_only": "Berre media", "community.column_settings.remote_only": "Berre eksternt", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Lær meir", "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": "Dette tutet vert ikkje oppført under nokon emneknagg sidan det ikkje er oppført. Berre offentlege tut kan verta søkt etter med emneknagg.", @@ -147,6 +149,7 @@ "embed.instructions": "Bygg inn denne statusen på nettsida di ved å kopiera koden under.", "embed.preview": "Slik bid det å sjå ut:", "emoji_button.activity": "Aktivitet", + "emoji_button.clear": "Clear", "emoji_button.custom": "Eige", "emoji_button.flags": "Flagg", "emoji_button.food": "Mat & drikke", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 2634da282..78d145f55 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Kun lokalt", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Kun eksternt", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Lær mer", "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": "Denne tuten blir ikke listet under noen emneknagger da den er ulistet. Kun offentlige tuter kan søktes etter med emneknagg.", @@ -147,6 +149,7 @@ "embed.instructions": "Kopier koden under for å bygge inn denne statusen på hjemmesiden din.", "embed.preview": "Slik kommer det til å se ut:", "emoji_button.activity": "Aktivitet", + "emoji_button.clear": "Clear", "emoji_button.custom": "Tilpasset", "emoji_button.flags": "Flagg", "emoji_button.food": "Mat og drikke", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 135461dc3..c2041d10d 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Sonque local", "community.column_settings.media_only": "Solament los mèdias", "community.column_settings.remote_only": "Sonque alonhat", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Ne saber mai", "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": "Aqueste tut serà pas ligat a cap d’etiqueta estant qu’es pas listat. Òm pòt pas cercar que los tuts publics per etiqueta.", @@ -147,6 +149,7 @@ "embed.instructions": "Embarcar aqueste estatut per lo far veire sus un site Internet en copiar lo còdi çai-jos.", "embed.preview": "Semblarà aquò :", "emoji_button.activity": "Activitats", + "emoji_button.clear": "Clear", "emoji_button.custom": "Personalizats", "emoji_button.flags": "Drapèus", "emoji_button.food": "Beure e manjar", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index bbd8b8771..7b041a208 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Remote only", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", @@ -147,6 +149,7 @@ "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Activity", + "emoji_button.clear": "Clear", "emoji_button.custom": "Custom", "emoji_button.flags": "Flags", "emoji_button.food": "Food & Drink", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index f350f2a95..a14fce01b 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Tylko Lokalne", "community.column_settings.media_only": "Tylko zawartość multimedialna", "community.column_settings.remote_only": "Tylko Zdalne", + "compose.language.change": "Zmień język", + "compose.language.search": "Szukaj języków...", "compose_form.direct_message_warning_learn_more": "Dowiedz się więcej", "compose_form.encryption_warning": "Posty na Mastodon nie są szyfrowane end-to-end. Nie udostępniaj żadnych wrażliwych informacji przez Mastodon.", "compose_form.hashtag_warning": "Ten wpis nie będzie widoczny pod podanymi hasztagami, ponieważ jest oznaczony jako niewidoczny. Tylko publiczne wpisy mogą zostać znalezione z użyciem hasztagów.", @@ -147,6 +149,7 @@ "embed.instructions": "Osadź ten wpis na swojej stronie wklejając poniższy kod.", "embed.preview": "Tak będzie to wyglądać:", "emoji_button.activity": "Aktywność", + "emoji_button.clear": "Wyczyść", "emoji_button.custom": "Niestandardowe", "emoji_button.flags": "Flagi", "emoji_button.food": "Żywność i napoje", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 8c7a970c5..d6f0ead94 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Somente local", "community.column_settings.media_only": "Somente mídia", "community.column_settings.remote_only": "Somente global", + "compose.language.change": "Alterar idioma", + "compose.language.search": "Pesquisar idiomas...", "compose_form.direct_message_warning_learn_more": "Saiba mais", "compose_form.encryption_warning": "Postagens no Mastodon não são criptografados de ponta a ponta. Não compartilhe nenhuma informação perigosa sobre o Mastodon.", "compose_form.hashtag_warning": "Este toot não aparecerá em nenhuma hashtag porque está como não-listado. Somente toots públicos podem ser pesquisados por hashtag.", @@ -147,6 +149,7 @@ "embed.instructions": "Incorpore este toot no seu site ao copiar o código abaixo.", "embed.preview": "Aqui está como vai ficar:", "emoji_button.activity": "Atividade", + "emoji_button.clear": "Limpar", "emoji_button.custom": "Personalizados", "emoji_button.flags": "Bandeiras", "emoji_button.food": "Comida e Bebida", @@ -264,8 +267,8 @@ "lightbox.expand": "Abrir imagem", "lightbox.next": "Próximo", "lightbox.previous": "Anterior", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Exibir perfil mesmo assim", + "limited_account_hint.title": "Este perfil foi ocultado pelos moderadores do seu servidor.", "lists.account.add": "Adicionar à lista", "lists.account.remove": "Remover da lista", "lists.delete": "Excluir lista", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 8f9105afc..89e6a68ee 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Local apenas", "community.column_settings.media_only": "Somente media", "community.column_settings.remote_only": "Remoto apenas", + "compose.language.change": "Alterar idioma", + "compose.language.search": "Pesquisar idiomas...", "compose_form.direct_message_warning_learn_more": "Conhecer mais", "compose_form.encryption_warning": "As publicações no Mastodon não são criptografadas de ponta a ponta. Não partilhe nenhuma informação sensível através do Mastodon.", "compose_form.hashtag_warning": "Este toot não será listado em nenhuma hashtag por ser não listado. Apenas toots públics podem ser pesquisados por hashtag.", @@ -147,6 +149,7 @@ "embed.instructions": "Incorpore esta publicação no seu site copiando o código abaixo.", "embed.preview": "Podes ver aqui como irá ficar:", "emoji_button.activity": "Actividade", + "emoji_button.clear": "Limpar", "emoji_button.custom": "Personalizar", "emoji_button.flags": "Bandeiras", "emoji_button.food": "Comida & Bebida", @@ -264,8 +267,8 @@ "lightbox.expand": "Expandir caixa de visualização de imagem", "lightbox.next": "Próximo", "lightbox.previous": "Anterior", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Exibir perfil mesmo assim", + "limited_account_hint.title": "Este perfil foi ocultado pelos moderadores do seu servidor.", "lists.account.add": "Adicionar à lista", "lists.account.remove": "Remover da lista", "lists.delete": "Eliminar lista", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index b939188aa..0756608ab 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Doar local", "community.column_settings.media_only": "Doar media", "community.column_settings.remote_only": "Doar la distanţă", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Află mai multe", "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": "Această postare nu va fi listată sub niciun hashtag deoarece este nelistată. Doar postările publice pot fi căutate cu un hashtag.", @@ -147,6 +149,7 @@ "embed.instructions": "Integrează această postare în site-ul tău copiind codul de mai jos.", "embed.preview": "Iată cum va arăta:", "emoji_button.activity": "Activități", + "emoji_button.clear": "Clear", "emoji_button.custom": "Personalizați", "emoji_button.flags": "Steaguri", "emoji_button.food": "Alimente și băuturi", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index b357799f7..588117830 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Только локальные", "community.column_settings.media_only": "Только с медиафайлами", "community.column_settings.remote_only": "Только удалённые", + "compose.language.change": "Изменить язык", + "compose.language.search": "Поиск языков...", "compose_form.direct_message_warning_learn_more": "Подробнее", "compose_form.encryption_warning": "Посты в Mastodon не защищены сквозным шифрованием. Не делитесь потенциально опасной информацией.", "compose_form.hashtag_warning": "Так как этот пост не публичный, он не отобразится в поиске по хэштегам.", @@ -122,7 +124,7 @@ "confirmations.delete_list.confirm": "Удалить", "confirmations.delete_list.message": "Вы действительно хотите навсегда удалить этот список?", "confirmations.discard_edit_media.confirm": "Отменить", - "confirmations.discard_edit_media.message": "У вас имеются несохранённые изменения превью и описания медиафайла, отменить их?", + "confirmations.discard_edit_media.message": "У вас есть несохранённые изменения описания мультимедиа или предпросмотра, отменить их?", "confirmations.domain_block.confirm": "Да, заблокировать узел", "confirmations.domain_block.message": "Вы точно уверены, что хотите скрыть все посты с узла {domain}? В большинстве случаев пары блокировок и скрытий вполне достаточно.\n\nПри блокировке узла, вы перестанете получать уведомления оттуда, все посты будут скрыты из публичных лент, а подписчики убраны.", "confirmations.logout.confirm": "Выйти", @@ -147,6 +149,7 @@ "embed.instructions": "Встройте этот пост на свой сайт, скопировав следующий код:", "embed.preview": "Так это будет выглядеть:", "emoji_button.activity": "Занятия", + "emoji_button.clear": "Очистить", "emoji_button.custom": "С этого узла", "emoji_button.flags": "Флаги", "emoji_button.food": "Еда и напитки", @@ -264,8 +267,8 @@ "lightbox.expand": "Развернуть окно просмотра изображений", "lightbox.next": "Далее", "lightbox.previous": "Назад", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Все равно показать профиль", + "limited_account_hint.title": "Этот профиль был скрыт модераторами вашего сервера.", "lists.account.add": "Добавить в список", "lists.account.remove": "Убрать из списка", "lists.delete": "Удалить список", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index 43430be3e..fef1913cf 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "केवलं स्थानीयम्", "community.column_settings.media_only": "सामग्री केवलम्", "community.column_settings.remote_only": "दर्गमः केवलम्", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "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": "न कस्मिन्नपि प्रचलितवस्तुषु सूचितमिदं दौत्यम् । केवलं सार्वजनिकदौत्यानि प्रचलितवस्तुचिह्नेन अन्वेषयितुं शक्यते ।", @@ -147,6 +149,7 @@ "embed.instructions": "दौत्यमेतत् स्वीयजालस्थाने स्थापयितुमधो लिखितो विध्यादेशो युज्यताम्", "embed.preview": "अत्रैवं दृश्यते तत्:", "emoji_button.activity": "आचरणम्", + "emoji_button.clear": "Clear", "emoji_button.custom": "स्वीयानुकूलम्", "emoji_button.flags": "ध्वजाः", "emoji_button.food": "भोजनं पेयञ्च", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index d3d174f31..4c3c485c6 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Isceti locale", "community.column_settings.media_only": "Isceti multimediale", "community.column_settings.remote_only": "Isceti remotu", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Àteras informatziones", "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": "Custa publicatzione no at a èssere ammustrada in peruna eticheta, dae chi no est listada. Isceti is publicatziones pùblicas podent èssere chircadas cun etichetas.", @@ -147,6 +149,7 @@ "embed.instructions": "Inserta custa publicatzione in su situ web tuo copiende su còdighe de suta.", "embed.preview": "At a aparèssere aici:", "emoji_button.activity": "Atividade", + "emoji_button.clear": "Clear", "emoji_button.custom": "Personalizadu", "emoji_button.flags": "Banderas", "emoji_button.food": "Mandigòngiu e bufòngiu", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index c8865c9a7..4c63e0eb4 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "ස්ථානීයව පමණයි", "community.column_settings.media_only": "මාධ්‍ය පමණයි", "community.column_settings.remote_only": "දුරස්ථව පමණයි", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "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 toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", @@ -147,6 +149,7 @@ "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "ක්‍රියාකාරකම", + "emoji_button.clear": "Clear", "emoji_button.custom": "අභිරුචි", "emoji_button.flags": "Flags", "emoji_button.food": "ආහාර සහ පාන", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index a0a7bc70d..48d67de4c 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Iba miestna", "community.column_settings.media_only": "Iba médiá", "community.column_settings.remote_only": "Iba odľahlé", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Zisti viac", "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": "Tento toot nebude zobrazený pod žiadným haštagom lebo nieje listovaný. Iba verejné tooty môžu byť nájdené podľa haštagu.", @@ -147,6 +149,7 @@ "embed.instructions": "Umiestni kód uvedený nižšie pre pridanie tohto statusu na tvoju web stránku.", "embed.preview": "Tu je ako to bude vyzerať:", "emoji_button.activity": "Aktivita", + "emoji_button.clear": "Clear", "emoji_button.custom": "Vlastné", "emoji_button.flags": "Vlajky", "emoji_button.food": "Jedlá a nápoje", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index fb5fb43ff..b094abfff 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Samo krajevno", "community.column_settings.media_only": "Samo mediji", "community.column_settings.remote_only": "Samo oddaljeno", + "compose.language.change": "Spremeni jezik", + "compose.language.search": "Poišči jezik ...", "compose_form.direct_message_warning_learn_more": "Izvej več", "compose_form.encryption_warning": "Objave na Mastodonu niso šifrirane od kraja do kraja. Prek Mastodona ne delite nobenih občutljivih informacij.", "compose_form.hashtag_warning": "Ta objava ne bo navedena pod nobenim ključnikom, ker ni javen. Samo javne objave lahko iščete s ključniki.", @@ -147,6 +149,7 @@ "embed.instructions": "Vstavi ta status na svojo spletno stran tako, da kopirate spodnjo kodo.", "embed.preview": "Tako bo izgledalo:", "emoji_button.activity": "Dejavnost", + "emoji_button.clear": "Počisti", "emoji_button.custom": "Po meri", "emoji_button.flags": "Zastave", "emoji_button.food": "Hrana in Pijača", @@ -264,8 +267,8 @@ "lightbox.expand": "Razširi ogledno polje slike", "lightbox.next": "Naslednji", "lightbox.previous": "Prejšnji", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Vseeno pokaži profil", + "limited_account_hint.title": "Profil so moderatorji vašega strežnika skrili.", "lists.account.add": "Dodaj na seznam", "lists.account.remove": "Odstrani s seznama", "lists.delete": "Izbriši seznam", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 68011e254..2112e0f0c 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Vetëm vendore", "community.column_settings.media_only": "Vetëm Media", "community.column_settings.remote_only": "Vetëm të largëta", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Mësoni më tepër", "compose_form.encryption_warning": "Postimet në Mastodon nuk fshehtëzohen skaj-më-skaj. Mos ndani me të tjerë gjëra me spec në Mastodon.", "compose_form.hashtag_warning": "Ky mesazh s’do të paraqitet nën ndonjë hashtag, ngaqë s’i është caktuar ndonjë. Vetëm mesazhet publike mund të kërkohen sipas hashtagësh.", @@ -147,6 +149,7 @@ "embed.instructions": "Trupëzojeni këtë gjendje në sajtin tuaj duke kopjuar kodin më poshtë.", "embed.preview": "Ja si do të duket:", "emoji_button.activity": "Veprimtari", + "emoji_button.clear": "Clear", "emoji_button.custom": "Vetjak", "emoji_button.flags": "Flamuj", "emoji_button.food": "Ushqim & Pije", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 706c909f6..b4e992a07 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Remote only", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", @@ -147,6 +149,7 @@ "embed.instructions": "Ugradi ovaj status na Vaš veb sajt kopiranjem koda ispod.", "embed.preview": "Ovako će da izgleda:", "emoji_button.activity": "Aktivnost", + "emoji_button.clear": "Clear", "emoji_button.custom": "Proizvoljno", "emoji_button.flags": "Zastave", "emoji_button.food": "Hrana & piće", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 60bdb666b..159628b6c 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Само локално", "community.column_settings.media_only": "Само Медији", "community.column_settings.remote_only": "Само удаљено", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "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": "Ова труба неће бити излистана под било којом тарабом јер је сакривена. Само јавне трубе могу бити претражене тарабом.", @@ -147,6 +149,7 @@ "embed.instructions": "Угради овај статус на Ваш веб сајт копирањем кода испод.", "embed.preview": "Овако ће да изгледа:", "emoji_button.activity": "Активност", + "emoji_button.clear": "Clear", "emoji_button.custom": "Произвољно", "emoji_button.flags": "Заставе", "emoji_button.food": "Храна и пиће", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 9447910fe..6085241dc 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Endast lokalt", "community.column_settings.media_only": "Endast media", "community.column_settings.remote_only": "Endast fjärr", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Lär dig mer", "compose_form.encryption_warning": "Inlägg på Mastodon är inte end-to-end-krypterade. Dela inte någon känslig information över Mastodon.", "compose_form.hashtag_warning": "Denna toot kommer inte att visas under någon hashtag eftersom den är onoterad. Endast offentliga toots kan sökas med hashtag.", @@ -147,6 +149,7 @@ "embed.instructions": "Lägg in denna status på din webbplats genom att kopiera koden nedan.", "embed.preview": "Så här kommer det att se ut:", "emoji_button.activity": "Aktivitet", + "emoji_button.clear": "Clear", "emoji_button.custom": "Anpassad", "emoji_button.flags": "Flaggor", "emoji_button.food": "Mat & dryck", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index bbd8b8771..7b041a208 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Remote only", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", @@ -147,6 +149,7 @@ "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Activity", + "emoji_button.clear": "Clear", "emoji_button.custom": "Custom", "emoji_button.flags": "Flags", "emoji_button.food": "Food & Drink", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 7b061a4fd..43508be01 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "அருகிலிருந்து மட்டுமே", "community.column_settings.media_only": "படங்கள் மட்டுமே", "community.column_settings.remote_only": "தொலைவிலிருந்து மட்டுமே", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "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": "இது ஒரு பட்டியலிடப்படாத டூட் என்பதால் எந்த ஹேஷ்டேகின் கீழும் வராது. ஹேஷ்டேகின் மூலம் பொதுவில் உள்ள டூட்டுகளை மட்டுமே தேட முடியும்.", @@ -147,6 +149,7 @@ "embed.instructions": "இந்தப் பதிவை உங்கள் வலைதளத்தில் பொதிக்கக் கீழே உள்ள வரிகளை காப்பி செய்யவும்.", "embed.preview": "பார்க்க இப்படி இருக்கும்:", "emoji_button.activity": "செயல்பாடு", + "emoji_button.clear": "Clear", "emoji_button.custom": "தனிப்பயன்", "emoji_button.flags": "கொடிகள்", "emoji_button.food": "உணவு மற்றும் பானம்", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 1128afd81..2bc2a29da 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Remote only", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", @@ -147,6 +149,7 @@ "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Activity", + "emoji_button.clear": "Clear", "emoji_button.custom": "Custom", "emoji_button.flags": "Flags", "emoji_button.food": "Food & Drink", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index f1039b9bb..a25a019fb 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "మీడియా మాత్రమే", "community.column_settings.remote_only": "Remote only", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "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": "ఈ టూట్ అన్లిస్టెడ్ కాబట్టి ఏ హాష్ ట్యాగ్ క్రిందకూ రాదు. పబ్లిక్ టూట్ లను మాత్రమే హాష్ ట్యాగ్ ద్వారా శోధించవచ్చు.", @@ -147,6 +149,7 @@ "embed.instructions": "దిగువ కోడ్ను కాపీ చేయడం ద్వారా మీ వెబ్సైట్లో ఈ స్టేటస్ ని పొందుపరచండి.", "embed.preview": "అది ఈ క్రింది విధంగా కనిపిస్తుంది:", "emoji_button.activity": "కార్యకలాపాలు", + "emoji_button.clear": "Clear", "emoji_button.custom": "అనుకూలీకరించిన", "emoji_button.flags": "ఫ్లాగ్స్", "emoji_button.food": "ఆహారం & పానీయం", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 057af060e..84faa0a1c 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "ในเซิร์ฟเวอร์เท่านั้น", "community.column_settings.media_only": "สื่อเท่านั้น", "community.column_settings.remote_only": "ระยะไกลเท่านั้น", + "compose.language.change": "เปลี่ยนภาษา", + "compose.language.search": "ค้นหาภาษา...", "compose_form.direct_message_warning_learn_more": "เรียนรู้เพิ่มเติม", "compose_form.encryption_warning": "โพสต์ใน Mastodon ไม่ได้เข้ารหัสแบบต้นทางถึงปลายทาง อย่าแบ่งปันข้อมูลที่เป็นอันตรายใด ๆ ผ่าน Mastodon", "compose_form.hashtag_warning": "จะไม่แสดงรายการโพสต์นี้ภายใต้แฮชแท็กใด ๆ เนื่องจากไม่อยู่ในรายการ เฉพาะโพสต์สาธารณะเท่านั้นที่สามารถค้นหาได้โดยแฮชแท็ก", @@ -147,6 +149,7 @@ "embed.instructions": "ฝังโพสต์นี้ในเว็บไซต์ของคุณโดยคัดลอกโค้ดด้านล่าง", "embed.preview": "นี่คือลักษณะที่จะปรากฏ:", "emoji_button.activity": "กิจกรรม", + "emoji_button.clear": "ล้าง", "emoji_button.custom": "กำหนดเอง", "emoji_button.flags": "ธง", "emoji_button.food": "อาหารและเครื่องดื่ม", @@ -264,7 +267,7 @@ "lightbox.expand": "ขยายกล่องดูภาพ", "lightbox.next": "ถัดไป", "lightbox.previous": "ก่อนหน้า", - "limited_account_hint.action": "Show profile anyway", + "limited_account_hint.action": "แสดงโปรไฟล์ต่อไป", "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", "lists.account.add": "เพิ่มไปยังรายการ", "lists.account.remove": "เอาออกจากรายการ", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 9b04faf66..f98574e11 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Sadece yerel", "community.column_settings.media_only": "Sadece medya", "community.column_settings.remote_only": "Sadece uzak", + "compose.language.change": "Dili değiştir", + "compose.language.search": "Dilleri ara...", "compose_form.direct_message_warning_learn_more": "Daha fazla bilgi edinin", "compose_form.encryption_warning": "Mastodondaki gönderiler uçtan uca şifrelemeli değildir. Mastodon üzerinden hassas olabilecek bir bilginizi paylaşmayın.", "compose_form.hashtag_warning": "Bu gönderi liste dışı olduğu için hiç bir etikette yer almayacak. Sadece herkese açık gönderiler etiketlerde bulunabilir.", @@ -147,6 +149,7 @@ "embed.instructions": "Aşağıdaki kodu kopyalayarak bu durumu sitenize gömün.", "embed.preview": "İşte nasıl görüneceği:", "emoji_button.activity": "Aktivite", + "emoji_button.clear": "Temizle", "emoji_button.custom": "Özel", "emoji_button.flags": "Bayraklar", "emoji_button.food": "Yiyecek ve İçecek", @@ -264,8 +267,8 @@ "lightbox.expand": "Resim görüntüleme kutusunu genişlet", "lightbox.next": "Sonraki", "lightbox.previous": "Önceki", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Yine de profili göster", + "limited_account_hint.title": "Bu profil sunucunuzun moderatörleri tarafından gizlendi.", "lists.account.add": "Listeye ekle", "lists.account.remove": "Listeden kaldır", "lists.delete": "Listeyi sil", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index 16a62138e..e05804d93 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Remote only", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", @@ -147,6 +149,7 @@ "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Активлык", + "emoji_button.clear": "Clear", "emoji_button.custom": "Куелган", "emoji_button.flags": "Байраклар", "emoji_button.food": "Food & Drink", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index bbd8b8771..7b041a208 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Remote only", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", @@ -147,6 +149,7 @@ "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Activity", + "emoji_button.clear": "Clear", "emoji_button.custom": "Custom", "emoji_button.flags": "Flags", "emoji_button.food": "Food & Drink", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index dbf73e86c..d7e8a446f 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Лише локальні", "community.column_settings.media_only": "Лише з медіа", "community.column_settings.remote_only": "Лише віддалені", + "compose.language.change": "Змінити мову", + "compose.language.search": "Шукати мови...", "compose_form.direct_message_warning_learn_more": "Дізнатися більше", "compose_form.encryption_warning": "Дописи на Mastodon не захищені шифруванням. Не поширюйте жодну потенційно небезпечну інформацію.", "compose_form.hashtag_warning": "Цей допис не буде зображений у жодній стрічці гештеґу, оскільки він прихований. Тільки публічні дописи можуть бути знайдені за гештеґом.", @@ -147,6 +149,7 @@ "embed.instructions": "Вбудуйте цей допис до вашого вебсайту, скопіювавши код нижче.", "embed.preview": "Ось як він виглядатиме:", "emoji_button.activity": "Діяльність", + "emoji_button.clear": "Очистити", "emoji_button.custom": "Власні", "emoji_button.flags": "Прапори", "emoji_button.food": "Їжа та напої", @@ -264,8 +267,8 @@ "lightbox.expand": "Розгорнути поле перегляду зображень", "lightbox.next": "Далі", "lightbox.previous": "Назад", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Усе одно показати профіль", + "limited_account_hint.title": "Цей профіль прихований модераторами вашого сервера.", "lists.account.add": "Додати до списку", "lists.account.remove": "Видалити зі списку", "lists.delete": "Видалити список", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index 7ca016326..d5ed07a9c 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "صرف مقامی", "community.column_settings.media_only": "وسائل فقط", "community.column_settings.remote_only": "صرف خارجی", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "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": "چونکہ یہ ٹوٹ غیر مندرجہ ہے لہذا یہ کسی بھی ہیش ٹیگ کے تحت درج نہیں کیا جائے گا. ہیش ٹیگ کے تحت صرف \nعمومی ٹوٹ تلاش کئے جا سکتے ہیں.", @@ -147,6 +149,7 @@ "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "یہ اس طرح نظر آئے گا:", "emoji_button.activity": "سرگرمی", + "emoji_button.clear": "Clear", "emoji_button.custom": "حسب منشا", "emoji_button.flags": "پرچم", "emoji_button.food": "عذا و مشروب", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index b9de72e79..e4e7c233b 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "Chỉ máy chủ của bạn", "community.column_settings.media_only": "Chỉ xem media", "community.column_settings.remote_only": "Chỉ người dùng ở máy chủ khác", + "compose.language.change": "Đổi ngôn ngữ", + "compose.language.search": "Tìm ngôn ngữ...", "compose_form.direct_message_warning_learn_more": "Tìm hiểu thêm", "compose_form.encryption_warning": "Các tút trên Mastodon không được mã hóa đầu cuối. Không chia sẻ bất kỳ thông tin nhạy cảm nào qua Mastodon.", "compose_form.hashtag_warning": "Tút này sẽ không xuất hiện công khai. Chỉ những tút công khai mới có thể được tìm kiếm thông qua hashtag.", @@ -147,6 +149,7 @@ "embed.instructions": "Sao chép đoạn mã dưới đây và chèn vào trang web của bạn.", "embed.preview": "Nó sẽ hiển thị như vầy:", "emoji_button.activity": "Hoạt động", + "emoji_button.clear": "Xóa", "emoji_button.custom": "Độc đáo", "emoji_button.flags": "Cờ", "emoji_button.food": "Ăn uống", @@ -264,8 +267,8 @@ "lightbox.expand": "Phóng to hình", "lightbox.next": "Tiếp", "lightbox.previous": "Trước", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Vẫn cứ xem", + "limited_account_hint.title": "Người này bị ẩn bởi kiểm duyệt viên máy chủ.", "lists.account.add": "Thêm vào danh sách", "lists.account.remove": "Xóa khỏi danh sách", "lists.delete": "Xóa danh sách", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index cca76dffb..02b0ed563 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "ⵖⴰⵙ ⴰⴷⵖⴰⵔⴰⵏ", "community.column_settings.media_only": "ⵖⴰⵙ ⵉⵙⵏⵖⵎⵉⵙⵏ", "community.column_settings.remote_only": "Remote only", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "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 toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", @@ -147,6 +149,7 @@ "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Activity", + "emoji_button.clear": "Clear", "emoji_button.custom": "Custom", "emoji_button.flags": "ⵉⵛⵏⵢⴰⵍⵏ", "emoji_button.food": "ⵓⵜⵛⵉ & ⵜⵉⵙⵙⵉ", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 43fecbd5e..d4b7db72a 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -92,7 +92,9 @@ "community.column_settings.local_only": "仅限本站", "community.column_settings.media_only": "仅限媒体", "community.column_settings.remote_only": "仅限外部", - "compose_form.direct_message_warning_learn_more": "了解更多", + "compose.language.change": "更改语言", + "compose.language.search": "搜索语言...", + "compose_form.direct_message_warning_learn_more": "了解详情", "compose_form.encryption_warning": "Mastodon 上的嘟文并未端到端加密。请不要在 Mastodon 上分享敏感信息。", "compose_form.hashtag_warning": "这条嘟文被设置为“不公开”,因此它不会出现在任何话题标签的列表下。只有公开的嘟文才能通过话题标签进行搜索。", "compose_form.lock_disclaimer": "你的帐户没有{locked}。任何人都可以在关注你后立即查看仅关注者可见的嘟文。", @@ -124,7 +126,7 @@ "confirmations.discard_edit_media.confirm": "丢弃", "confirmations.discard_edit_media.message": "您还有未保存的媒体描述或预览修改,仍然丢弃它们吗?", "confirmations.domain_block.confirm": "屏蔽整个域名", - "confirmations.domain_block.message": "你真的确定要屏蔽所有来自 {domain} 的内容吗?多数情况下,对几个特定的用户进行屏蔽或禁用对他们的消息提醒就足够了。屏蔽后,来自该域名的内容将不再出现在你任何的公共时间轴或通知列表里,你来自该域名下的关注者也将被移除。", + "confirmations.domain_block.message": "你真的确定要屏蔽所有来自 {domain} 的内容吗?多数情况下,屏蔽或隐藏几个特定的用户就已经足够了。来自该网站的内容将不再出现在你的任何公共时间轴或通知列表里。来自该网站的关注者将会被移除。", "confirmations.logout.confirm": "登出", "confirmations.logout.message": "你确定要登出吗?", "confirmations.mute.confirm": "隐藏", @@ -147,6 +149,7 @@ "embed.instructions": "复制下列代码以在你的网站中嵌入此嘟文。", "embed.preview": "它会像这样显示出来:", "emoji_button.activity": "活动", + "emoji_button.clear": "清除", "emoji_button.custom": "自定义", "emoji_button.flags": "旗帜", "emoji_button.food": "食物和饮料", @@ -176,7 +179,7 @@ "empty_column.hashtag": "这个话题标签下暂时没有内容。", "empty_column.home": "你的主页时间线是空的!快去关注更多人吧。 {suggestions}", "empty_column.home.suggestions": "查看一些建议", - "empty_column.list": "此列表中暂时没有内容。列表中用户所发送的的新嘟文将会在这里显示。", + "empty_column.list": "此列表中暂时没有内容。列表中用户所发送的新嘟文将会在这里显示。", "empty_column.lists": "你还没有创建过列表。你创建的列表会在这里显示。", "empty_column.mutes": "你没有隐藏任何用户。", "empty_column.notifications": "你还没有收到过任何通知,快和其他用户互动吧。", @@ -264,8 +267,8 @@ "lightbox.expand": "放大查看图片", "lightbox.next": "下一个", "lightbox.previous": "上一个", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "仍然显示个人资料", + "limited_account_hint.title": "此个人资料已被服务器监察员隐藏。", "lists.account.add": "添加到列表", "lists.account.remove": "从列表中移除", "lists.delete": "删除列表", @@ -301,7 +304,7 @@ "navigation_bar.filters": "隐藏关键词", "navigation_bar.follow_requests": "关注请求", "navigation_bar.follows_and_followers": "关注管理", - "navigation_bar.info": "关于此服务", + "navigation_bar.info": "关于本站", "navigation_bar.keyboard_shortcuts": "快捷键列表", "navigation_bar.lists": "列表", "navigation_bar.logout": "登出", @@ -311,7 +314,7 @@ "navigation_bar.preferences": "首选项", "navigation_bar.public_timeline": "跨站公共时间轴", "navigation_bar.security": "安全", - "notification.admin.sign_up": "{name} 已注册", + "notification.admin.sign_up": "{name} 注册了", "notification.favourite": "{name} 喜欢了你的嘟文", "notification.follow": "{name} 开始关注你", "notification.follow_request": "{name} 向你发送了关注请求", @@ -334,7 +337,7 @@ "notifications.column_settings.mention": "提及:", "notifications.column_settings.poll": "投票结果:", "notifications.column_settings.push": "推送通知", - "notifications.column_settings.reblog": "转贴:", + "notifications.column_settings.reblog": "转嘟:", "notifications.column_settings.show": "在通知栏显示", "notifications.column_settings.sound": "播放音效", "notifications.column_settings.status": "新嘟文:", @@ -367,7 +370,7 @@ "poll.votes": "{votes, plural, one {# 票} other {# 票}}", "poll_button.add_poll": "发起投票", "poll_button.remove_poll": "移除投票", - "privacy.change": "设置帖子的可见范围", + "privacy.change": "设置嘟文的可见范围", "privacy.direct.long": "只有被提及的用户能看到", "privacy.direct.short": "仅提到的人", "privacy.private.long": "仅关注者可见", @@ -399,7 +402,7 @@ "report.category.subtitle": "选择最佳匹配", "report.category.title": "告诉我们这个 {type} 的情况", "report.category.title_account": "个人资料", - "report.category.title_status": "帖子", + "report.category.title_status": "嘟文", "report.close": "完成", "report.comment.title": "还有什么你认为我们应该知道的吗?", "report.forward": "转发举报至 {target}", @@ -432,14 +435,14 @@ "search_popout.search_format": "高级搜索格式", "search_popout.tips.full_text": "输入关键词检索所有你发送、喜欢、转嘟过或提及到你的帖子,以及其他用户公开的用户名、昵称和话题标签。", "search_popout.tips.hashtag": "话题标签", - "search_popout.tips.status": "帖子", + "search_popout.tips.status": "嘟文", "search_popout.tips.text": "输入关键词检索昵称、用户名和话题标签", "search_popout.tips.user": "用户", "search_results.accounts": "用户", "search_results.all": "全部", "search_results.hashtags": "话题标签", "search_results.nothing_found": "无法找到符合这些搜索词的任何内容", - "search_results.statuses": "帖子", + "search_results.statuses": "嘟文", "search_results.statuses_fts_disabled": "此 Mastodon 服务器未启用帖子内容搜索。", "search_results.total": "共 {count, number} 个结果", "status.admin_account": "打开 @{name} 的管理界面", @@ -467,7 +470,7 @@ "status.mute": "隐藏 @{name}", "status.mute_conversation": "禁用此对话的消息提醒", "status.open": "展开嘟文", - "status.pin": "固定在个人资料页面上", + "status.pin": "在个人资料页面置顶", "status.pinned": "置顶嘟文", "status.read_more": "查看更多", "status.reblog": "转嘟", @@ -488,7 +491,7 @@ "status.show_thread": "显示全部对话", "status.uncached_media_warning": "暂不可用", "status.unmute_conversation": "恢复此对话的通知提醒", - "status.unpin": "从个人资料页面上取消固定", + "status.unpin": "在个人资料页面取消置顶", "suggestions.dismiss": "关闭建议", "suggestions.header": "你可能会感兴趣…", "tabs_bar.federated_timeline": "跨站", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index efec4807d..dc0b794dd 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "只顯示本站", "community.column_settings.media_only": "只顯示多媒體", "community.column_settings.remote_only": "只顯示外站", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", "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": "這文章因為不是公開,所以不會被標籤搜索。只有公開的文章才會被標籤搜索。", @@ -147,6 +149,7 @@ "embed.instructions": "要內嵌此文章,請將以下代碼貼進你的網站。", "embed.preview": "看上去會是這樣:", "emoji_button.activity": "活動", + "emoji_button.clear": "Clear", "emoji_button.custom": "自訂", "emoji_button.flags": "旗幟", "emoji_button.food": "飲飲食食", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 82b774a4b..17d0b9998 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -92,6 +92,8 @@ "community.column_settings.local_only": "只有本站", "community.column_settings.media_only": "只有媒體", "community.column_settings.remote_only": "只有遠端", + "compose.language.change": "變更語言", + "compose.language.search": "搜尋語言...", "compose_form.direct_message_warning_learn_more": "了解更多", "compose_form.encryption_warning": "Mastodon 上的嘟文並未端到端加密。請不要透過 Mastodon 分享任何敏感資訊。", "compose_form.hashtag_warning": "由於這則嘟文設定為「不公開」,它將不會被列於任何主題標籤下。只有公開的嘟文才能藉由主題標籤找到。", @@ -147,6 +149,7 @@ "embed.instructions": "要在您的網站嵌入此嘟文,請複製以下程式碼。", "embed.preview": "它將顯示成這樣:", "emoji_button.activity": "活動", + "emoji_button.clear": "清除", "emoji_button.custom": "自訂", "emoji_button.flags": "旗幟", "emoji_button.food": "食物 & 飲料", @@ -264,8 +267,8 @@ "lightbox.expand": "展開圖片檢視框", "lightbox.next": "下一步", "lightbox.previous": "上一步", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "一律顯示個人檔案", + "limited_account_hint.title": "此個人檔案已被您伺服器的管理員隱藏。", "lists.account.add": "新增至列表", "lists.account.remove": "從列表中移除", "lists.delete": "刪除列表", diff --git a/config/locales/ar.yml b/config/locales/ar.yml index a9f0c1730..d4cc81f1b 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -496,6 +496,13 @@ ar: delivery_error_days: أيام أخطاء التوصيل delivery_error_hint: إذا كان التوصيل غير ممكناً لـ%{count} يوم، فستوضع عليها علامة {غير قابلة للتسليم} تلقائياً. empty: لم يتم العثور على نطاقات. + known_accounts: + few: "%{count} حسابات معروفة" + many: "%{count} حسابًا معروفًا" + one: حساب %{count} معروف + other: "%{count} حساب معروف" + two: حسابان %{count} معروفان + zero: "%{count} حسابًا معروفًا" moderation: all: كافتها limited: محدود @@ -1389,6 +1396,7 @@ ar: open_in_web: افتح في الويب over_character_limit: تم تجاوز حد الـ %{max} حرف المسموح بها pin_errors: + direct: لا يمكن تثبيت المنشورات التي يراها فقط المتسخدمون المشار إليهم limit: لقد بلغت الحد الأقصى للمنشورات المثبتة ownership: لا يمكن تثبيت منشور نشره شخص آخر reblog: لا يمكن تثبيت ترقية diff --git a/config/locales/de.yml b/config/locales/de.yml index 79ed79d3b..58be571a8 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -1329,7 +1329,7 @@ de: last_active: Zuletzt aktiv most_recent: Neuste moved: Umgezogen - mutual: Bekannt + mutual: Gegenseitig primary: Primär relationship: Beziehung remove_selected_domains: Entferne alle Follower von den ausgewählten Domains @@ -1484,7 +1484,7 @@ de: enabled: Automatisch alte Beiträge löschen enabled_hint: Löscht automatisch deine Beiträge, sobald sie einen bestimmten Altersgrenzwert erreicht haben, es sei denn, sie entsprechen einer der folgenden Ausnahmen exceptions: Ausnahmen - explanation: Da das Löschen von Beiträgen eine kostspielige Operation ist, geschieht dies langsam im Laufe der Zeit, wenn der Server sonst nicht beschäftigt ist. Aus diesem Grund können deine Beiträge gelöscht werden, eine Weile nachdem sie die Altersgrenze erreicht haben. + explanation: Damit Mastodon nicht durch das Löschen von Beiträgen ausgebremst wird, wartet der Server damit bis wenig los ist. Aus diesem Grund werden deine Beiträge ggf. erst einige Zeit nach Erreichen der Altersgrenze gelöscht. ignore_favs: Favoriten ignorieren ignore_reblogs: Boosts ignorieren interaction_exceptions: Ausnahmen basierend auf Interaktionen diff --git a/config/locales/devise.gl.yml b/config/locales/devise.gl.yml index 0bb52d8e2..7ea022992 100644 --- a/config/locales/devise.gl.yml +++ b/config/locales/devise.gl.yml @@ -92,7 +92,7 @@ gl: signed_up_but_inactive: A túa conta foi rexistada. Porén aínda non está activada. signed_up_but_locked: A túa conta foi rexistada. Porén está bloqueada. signed_up_but_pending: Unha mensaxe cunha ligazón de confirmación foi enviada ó teu enderezo de email. Após premer na ligazón, revisaremos a túa aplicación. Serás notificado se a túa conta é aprobada. - signed_up_but_unconfirmed: Unha mensaxe cunha ligazón de confirmación foi enviada ó teu email. Por favor, segue esa ligazón para activar a túa conta. Comproba o teu cartafol de correo lixo (spam) se ves que non recibiches o correo. + signed_up_but_unconfirmed: Enviouse unha mensaxe cunha ligazón de confirmación ao teu email. Por favor, preme nesa ligazón para activar a túa conta. Comproba o teu cartafol de correo lixo (spam) se ves que non recibiches o correo. update_needs_confirmation: Actualizaches a túa conta de xeito correcto, pero precisamos verificar o teu novo enderezo de email. Por favor, revisa o teu email e segue a ligazón para confirmar o teu novo enderezo de email. Comproba o teu cartafol de correo lixo (spam) se ves que non recibiches o correo. updated: A túa conta foi actualizada de xeito correcto. sessions: diff --git a/config/locales/devise.ru.yml b/config/locales/devise.ru.yml index ada7867f2..d2903ce23 100644 --- a/config/locales/devise.ru.yml +++ b/config/locales/devise.ru.yml @@ -57,7 +57,7 @@ ru: two_factor_recovery_codes_changed: explanation: Предыдущие резервные коды были аннулированы и созданы новые. subject: 'Mastodon: Резервные коды двуфакторной авторизации обновлены' - title: Резервные коды 2ФА изменены + title: Коды восстановления 2FA изменены unlock_instructions: subject: 'Mastodon: Инструкция по разблокировке' webauthn_credential: diff --git a/config/locales/doorkeeper.pt-BR.yml b/config/locales/doorkeeper.pt-BR.yml index 93cd0c55a..684b993ab 100644 --- a/config/locales/doorkeeper.pt-BR.yml +++ b/config/locales/doorkeeper.pt-BR.yml @@ -70,6 +70,7 @@ pt-BR: confirmations: revoke: Você tem certeza? index: + authorized_at: Autorizado em %{date} never_used: Nunca usado scopes: Permissões superapp: Interno @@ -140,6 +141,7 @@ pt-BR: admin:write: alterar todos os dados no servidor admin:write:accounts: executar ações de moderação em contas admin:write:reports: executar ações de moderação em denúncias + crypto: usar criptografia de ponta-a-ponta follow: alterar o relacionamento das contas push: receber notificações push read: ler todos os dados da sua conta diff --git a/config/locales/eo.yml b/config/locales/eo.yml index d7e08e9a5..0609d8735 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -791,6 +791,7 @@ eo: strikes: title_actions: delete_statuses: Forigo de afiŝo + none: Averto domain_validator: invalid_domain: ne estas valida domajna nomo errors: @@ -861,6 +862,7 @@ eo: changes_saved_msg: Ŝanĝoj sukcese konservitaj! copy: Kopii delete: Forigi + none: Neniu order_by: Ordigi de save_changes: Konservi ŝanĝojn today: hodiaŭ @@ -951,6 +953,9 @@ eo: new_followers_summary: one: Ankaŭ, vi ekhavis novan sekvanton en via foresto! Jej! other: Ankaŭ, vi ekhavis %{count} novajn sekvantojn en via foresto! Mirinde! + subject: + one: "1 nova sciigo ekde via lasta vizito 🐘" + other: "%{count} novaj sciigoj ekde via lasta vizito 🐘" title: En via foresto… favourite: body: "%{name} stelumis vian mesaĝon:" @@ -1180,7 +1185,7 @@ eo: '2629746': 1 monato '31556952': 1 jaro '5259492': 2 monatoj - '604800': 1 week + '604800': 1 semajno '63113904': 2 jaroj '7889238': 3 monatoj stream_entries: @@ -1219,6 +1224,8 @@ eo: subject: Via arkivo estas preta por elŝutado title: Arkiva elŝuto warning: + categories: + spam: Spamo subject: disable: Via konto %{acct} estas frostigita none: Averto por %{acct} diff --git a/config/locales/eu.yml b/config/locales/eu.yml index bfb06e3ee..bc515fe5e 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -887,7 +887,7 @@ eu: cas: CAS saml: SAML register: Eman izena - registration_closed: "%{instance} instantziak ez ditu kide berriak onartzen" + registration_closed: "%{instance} instantziak ez du kide berririk onartzen" resend_confirmation: Birbidali berresteko argibideak reset_password: Berrezarri pasahitza security: Segurtasuna diff --git a/config/locales/gd.yml b/config/locales/gd.yml index c6a0c39f1..450134bbc 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -1573,6 +1573,9 @@ gd: pinned: Post prìnichte reblogged: "’ga bhrosnachadh" sensitive_content: Susbaint fhrionasach + strikes: + errors: + too_late: Tha e ro anmoch airson an rabhadh seo ath-thagradh tags: does_not_match_previous_name: "– chan eil seo a-rèir an ainm roimhe" terms: diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 56a33eb6b..93634adcd 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -931,7 +931,7 @@ gl: prefix_invited_by_user: "@%{name} convídate a que te unas a este servidor Mastodon!" prefix_sign_up: Rexístrate agora en Mastodon! suffix: Ao abrir unha conta, poderás seguir a xente, actualizacións das publicacións e intercambiar mensaxes coas usuarias de calquera servidor de Mastodon e moito máis! - didnt_get_confirmation: Non recibeu as instruccións de confirmación? + didnt_get_confirmation: Non recibiches as instruccións de confirmación? dont_have_your_security_key: "¿Non tes a túa chave de seguridade?" forgot_password: Esqueceu o contrasinal? invalid_reset_password_token: O testemuño para restablecer o contrasinal non é válido ou caducou. Por favor solicite un novo. @@ -953,8 +953,8 @@ gl: security: Seguranza set_new_password: Estabelecer novo contrasinal setup: - email_below_hint_html: Se o enderezo inferior non é correcto, pode cambialo aquí e recibir un correo de confirmación. - email_settings_hint_html: Enviouse un correo de confirmación a %{email}. Se o enderezo non é correcto pode cambialo nos axustes da conta. + email_below_hint_html: Se o enderezo inferior non é correcto, podes cambialo aquí e recibir un correo de confirmación. + email_settings_hint_html: Enviouse un correo de confirmación a %{email}. Se o enderezo non é correcto podes cambialo nos axustes da conta. title: Axustes status: account_status: Estado da conta @@ -1519,6 +1519,9 @@ gl: pinned: Publicación fixada reblogged: promoveu sensitive_content: Contido sensible + strikes: + errors: + too_late: É demasiado tarde para recurrir este aviso tags: does_not_match_previous_name: non concorda co nome anterior terms: diff --git a/config/locales/hu.yml b/config/locales/hu.yml index b6108c6e6..1ee801fd0 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -1521,6 +1521,9 @@ hu: pinned: Kitűzött bejegyzés reblogged: megtolta sensitive_content: Kényes tartalom + strikes: + errors: + too_late: Túl késő, hogy fellebbezd ezt a szankciót tags: does_not_match_previous_name: nem illeszkedik az előző névvel terms: diff --git a/config/locales/io.yml b/config/locales/io.yml index 044dbf22e..58d7f99f3 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -1,166 +1,1729 @@ --- io: about: + about_hashtag_html: Co esas publika posti quo etiketigesis kun #%{hashtag}. Vu povas interagar kun oli se vu havas konto irgaloke en fediverso. about_mastodon_html: Mastodon esas gratuita, apertitkodexa sociala reto. Ol esas sencentra altra alternativo a komercala servadi. Ol evitigas, ke sola firmo guvernez tua tota komunikadol. Selektez servero, quan tu fidas. Irge qua esas tua selekto, tu povas komunikar kun omna altra uzeri. Irgu povas krear sua propra instaluro di Mastodon en sua servero, e partoprenar en la sociala reto tote glate. about_this: Pri ta instaluro + active_count_after: aktiva + active_footnote: Monade Aktiva Uzanti (MAU) + administered_by: 'Administresis da:' + api: API + apps: Smartfonsoftwari + apps_platforms: Uzez Mastodon de iOS, Android e altra platformi + browse_directory: Videz profilcheflisto e filtrez segun interesi + browse_local_posts: Videz samtempa video di publika posti de ca servilo + browse_public_posts: Videz samtempa video di publika posti che Mastodon contact: Kontaktar + contact_missing: Ne fixigita + contact_unavailable: Nula + continue_to_web: Durez a retsoftwaro + discover_users: Deskovrez uzanti + documentation: Dokumentajo + federation_hint_html: Per konto che %{instance}, vu povas sequar persono che irga servilo di Mastodon e altra siti. + get_apps: Probez smartfonsoftwaro + hosted_on: Mastodon hostigesas che %{domain} + instance_actor_flash: 'Ca konto esas virtuala aganto quo uzesas por reprezentar la servilo e ne irga individuala uzanto. Ol uzesas por federskopo e ne debas restriktesar se vu ne volas obstruktar tota instanco, se ol esas la kaso, do vu debas uzar domenobstrukto. + + ' + learn_more: Lernez plu + logged_in_as_html: Vu nun eniras quale %{username}. + logout_before_registering: Vu ja eniris. + privacy_policy: Privatesguidilo + rules: Servilreguli + rules_html: 'La subo montras rezumo di reguli quon vu bezonas sequar se vu volas havar konto che ca servilo di Mastodon:' + see_whats_happening: Videz quo eventas + server_stats: 'Servilstatistiko:' source_code: Fontkodexo + status_count_after: + one: posto + other: posti status_count_before: Qua publikigis + tagline: Sequez amiki e deskovrez nova personi + terms: Serveskondicioni + unavailable_content: Jerata servili + unavailable_content_description: + domain: Servilo + reason: Motivo + rejecting_media: 'Mediifaili de ca servili ne procedagesas o retenesos, e imajeti ne montresos, do manuala klikto bezonesas a originala failo:' + rejecting_media_title: Filtrita medii + silenced: 'Posti de ca servili celesos en publika tempolinei e konversi, e notifiki ne facesos de oli uzantinteragi, se vu ne sequas oli:' + silenced_title: Limitizita servili + suspended: 'Informi de ca servili procedagesos o retenesos o kambiesos, do irga interago o komuniko kun uzanti de ca servili esas imposebla:' + suspended_title: Restriktita servili + unavailable_content_html: Mastodon generale permisas on vidar kontenajo e interagar kun uzanti de irga altra servilo en fediverso. Existas eceptioni quo facesis che ca partikulara servilo. + user_count_after: + one: uzanto + other: uzanti user_count_before: Hemo di + what_is_mastodon: Quo esas Mastodon? accounts: + choices_html: 'Selektaji di %{name}:' + endorsements_hint: Vu povas rekomendar personi quon vu sequas de retintervizajo, e oli montresos hike. + featured_tags_hint: Vu povas estalar partikulara hashtagi quo montresos hike. follow: Sequar + followers: + one: Sequanto + other: Sequanti following: Sequati + instance_actor_flash: Ca konto esas virtuala aganto quo uzesas por reprezentar la servilo e ne irga individuala uzanto. Ol uzesas por federskopo e ne debas restriktesar. + joined: Juntis ye %{date} + last_active: lasta aktiva tempo + link_verified_on: Proprieteso di ca ligilo kontrolesis ye %{date} + media: Medii + moved_html: "%{name} transferesis a %{new_profile_link}:" + network_hidden: Ca informi ne esas disponebla nothing_here: Esas nulo hike! people_followed_by: Sequati da %{name} people_who_follow: Sequanti di %{name} + pin_errors: + following: Vu mustas ja sequar persono quon vu volas estalar + posts: + one: Posto + other: Posti + posts_tab_heading: Posti + posts_with_replies: Posti e respondi + roles: + admin: Administrero + bot: Boto + group: Grupo + moderator: Jerero + unavailable: Profilo esas nedisponebla unfollow: Dessequar admin: + account_actions: + action: Agez + title: Agez jero a %{acct} + account_moderation_notes: + create: Pozez noto + created_msg: Jernoto sucesoze kreesis! + destroyed_msg: Jernoto sucesoze efacesis! accounts: + add_email_domain_block: Obstruktez retpostodomeno + approve: Aprobez + approved_msg: Sucesoze aprobis registroapliko di %{username} are_you_sure: Ka tu esas certa? + avatar: Profilimajo + by_domain: Domeno + change_email: + changed_msg: Kontoretposto sucesoze chanjesis! + current_email: Nuna retposto + label: Chanjez retposto + new_email: Nova retposto + submit: Chanjez retposto + title: Chanjez retposto por %{username} + confirm: Konfirmez + confirmed: Konfirmita + confirming: Ankore konfirmesas + custom: Kustuma + delete: Efacez informi + deleted: Efacita + demote: Despromocez + destroyed_msg: Informi di %{username} nun aranjesis por efacesar aparante + disable: Frostigez + disable_sign_in_token_auth: Desaktivigez retpostofichyurizeso + disable_two_factor_authentication: Desaktivigez 2FA + disabled: Desinterdiktita + display_name: Profilnomo + domain: Domeno + edit: Modifikez email: E-mail + email_status: Retpostostando + enable: Defrostigez + enable_sign_in_token_auth: Aktivigez retpostofichyurizeso + enabled: Aktivigita + enabled_msg: Sucesoze desfrostigas konto di %{username} + followers: Uzanti + follows: Uzati + header: Kapimajo + inbox_url: URL di enbuxo + invite_request_text: Juntomotivo + invited_by: Invitesis da + ip: IP + joined: Juntita + location: + all: Omna + local: Lokala + remote: Nelokala + title: Loko + login_status: Enirstando + media_attachments: Mediiatachaji + memorialize: Memorializez + memorialized: Memorializita + memorialized_msg: Sucesoze chanjesis %{username} a memorialkonto + moderation: + active: Aktiva + all: Omna + pending: Vartanta + suspended: Restriktita + title: Jero + moderation_notes: Jernoti + most_recent_activity: Maxim recenta aktiveso + most_recent_ip: Maxim recenta IP + no_account_selected: Nula konti chanjesis pro ke nulo selektesis + no_limits_imposed: Limiti ne fixesis + not_subscribed: Ne abonita + pending: Vartar kontrolo perform_full_suspension: Perform full suspension + previous_strikes: Antea streki + previous_strikes_description_html: + one: Ca konto havas 1 streko. + other: Ca konto havas %{count} streki. + promote: Promocez + protocol: Protokolo + public: Publika + push_subscription_expires: Abono PuSH expiras + redownload: Rifreshigez profilo + redownloaded_msg: Sucesoze rifreshis profilo di %{username} de origino + reject: Refuzez + rejected_msg: Sucesoze refuzis registroapliko di %{username} + 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 konfirmretposto + success: Konfirmretposto sucesoze sendesas! + reset: Richanjez + reset_password: Richanjez pasvorto + resubscribe: Riabonez + role: Permisi + roles: + admin: Administrero + moderator: Jerero + staff: Laborero + user: Uzanto + search: Trovez + search_same_email_domain: Altra uzanti kun sama retpostodomeno + search_same_ip: Altra uzanti kun sama IP + security_measures: + only_password: Nur pasvorto + password_and_2fa: Pasvorto e 2FA + sensitive: Forcsentoza + sensitized: Markizesis quale sentoza + shared_inbox_url: Partigita enbux-URL show: created_reports: Reports created by this account targeted_reports: Reports made about this account + silence: Limito + silenced: Limitizita + statuses: Posti + strikes: Antea streki + subscribe: Abonez + suspend: Restriktez + suspended: Restriktita + suspension_irreversible: Ca informi di ca konto neinversigeble efacesis. Vu povas derestriktar konto por uzebligar lu ma ol ne riganos irga dati quon ol antee havis. + suspension_reversible_hint_html: Ca konto restriktesis, e ca informi tota efacesos en %{date}. Ante ta tempo, konto povas riganesar sen irga mala efekti. Se vu volas efacar omna informi di konto quik, vu povas agar lu sube. + title: Konti + unblock_email: Deobstruktez retpostoadreso + unblocked_email_msg: Sucesoze deobstruktis retpostoadreso di %{username} + unconfirmed_email: Nekonfirmita retposto + undo_sensitized: Deagez forcsentoza + undo_silenced: Deagez limito + undo_suspension: Deagez restrikto + unsilenced_msg: Sucesoza inversigis limito di konto di %{username} + unsubscribe: Deabonez + unsuspended_msg: Sucesoze derestriktis konto di %{username} + username: Uzantonomo + view_domain: Videz rezumo di domeno + warn: Avertez + web: Interret + whitelisted: Permisesis por federato + action_logs: + action_types: + approve_appeal: Aprobez apelo + approve_user: Aprobez uzanto + assigned_to_self_report: Taskigez raporto + change_email_user: Chanjez retposto por uzanto + confirm_user: Konfirmez uzanto + create_account_warning: Kreez averto + create_announcement: Kreez anunco + create_custom_emoji: Kreez kustumizita emocimajo + create_domain_allow: Kreez domenpermiso + create_domain_block: Kreez domenobstrukto + create_email_domain_block: Kreez retpostodomenobstrukto + create_ip_block: Kreez IP-regulo + create_unavailable_domain: Kreez nedisponebla domeno + demote_user: Despromocez uzanto + destroy_announcement: Efacez anunco + destroy_custom_emoji: Efacez kustumizita emocimajo + destroy_domain_allow: Efacez domenpermiso + destroy_domain_block: Efacez domenobstrukto + destroy_email_domain_block: Efacez retpostodomenobstrukto + destroy_instance: Efacez domeno + destroy_ip_block: Efacez IP-regulo + destroy_status: Efacez posto + destroy_unavailable_domain: Efacez nedisponebla domeno + disable_2fa_user: Desaktivigez 2FA + disable_custom_emoji: Desaktivigez kustumizita emocimajo + disable_sign_in_token_auth_user: Desaktivigez retpostofichyurizo por uzanto + disable_user: Desaktivigez uzanto + enable_custom_emoji: Aktivigez kustumizita emocimajo + enable_sign_in_token_auth_user: Aktivigez retpostofichyurizo por uzanto + enable_user: Aktivigez uzanto + memorialize_account: Memorializez konto + promote_user: Promocez uzanto + reject_appeal: Refuzez apelo + reject_user: Refuzez uzanto + remove_avatar_user: Efacez profilimajo + reopen_report: Riapertez raporto + reset_password_user: Richanjez pasvorto + resolve_report: Rezolvez raporto + sensitive_account: Forcsentoza konto + silence_account: Limitizez konto + suspend_account: Restriktez konto + unassigned_report: Destaskigez raporto + unblock_email_account: Deobstruktez retpostoadreso + unsensitive_account: Deagez forcsentoza konto + unsilence_account: Deagez limitkonto + unsuspend_account: Derestriktez konto + update_announcement: Novigez anunco + update_custom_emoji: Novigez kustumizita emocimajo + update_domain_block: Novigez domenobstrukto + update_status: Novigez posto + actions: + approve_appeal_html: "%{name} aprobis jerdecidapelo de %{target}" + approve_user_html: "%{name} aprobis registro de %{target}" + assigned_to_self_report_html: "%{name} taskigis raporto %{target} a su" + change_email_user_html: "%{name} chanjis retpostoadreso di uzanto %{target}" + confirm_user_html: "%{name} konfirmis retpostoadreso di uzanto %{target}" + create_account_warning_html: "%{name} sendis averto a %{target}" + create_announcement_html: "%{name} kreis nova anunco %{target}" + create_custom_emoji_html: "%{name} adchargis nova emocimajo %{target}" + create_domain_allow_html: "%{name} permisis federato kun domeno %{target}" + create_domain_block_html: "%{name} obstruktis domeno %{target}" + create_email_domain_block_html: "%{name} obstruktis retpostodomeno %{target}" + create_ip_block_html: "%{name} kreis regulo por IP %{target}" + create_unavailable_domain_html: "%{name} cesis sendo a domeno %{target}" + demote_user_html: "%{name} despromocis uzanto %{target}" + destroy_announcement_html: "%{name} efacis anunco %{target}" + destroy_custom_emoji_html: "%{name} destruktis emocimajo %{target}" + destroy_domain_allow_html: "%{name} despermisis federato kun domeno %{target}" + destroy_domain_block_html: "%{name} deobstruktis domeno %{target}" + destroy_email_domain_block_html: "%{name} deobstruktis retpostodomeno %{target}" + destroy_instance_html: "%{name} efacis domeno %{target}" + destroy_ip_block_html: "%{name} efacis regulo por IP %{target}" + destroy_status_html: "%{name} efacis posto da %{target}" + destroy_unavailable_domain_html: "%{name} durigis sendo a domeno %{target}" + disable_2fa_user_html: "%{name} desaktivigis 2-faktorbezono por uzanto %{target}" + disable_custom_emoji_html: "%{name} desaktivigis emocimajo %{target}" + disable_sign_in_token_auth_user_html: "%{name} desaktivigis retpostofichyurizo por %{target}" + disable_user_html: "%{name} desaktivigis eniro por uzanto %{target}" + enable_custom_emoji_html: "%{name} aktivigis emocimajo %{target}" + enable_sign_in_token_auth_user_html: "%{name} aktivigis retpostofichyurizo por %{target}" + enable_user_html: "%{name} aktivigis eniro por uzanto %{target}" + memorialize_account_html: "%{name} kauzigis konto di %{target} divenar memorialpagino" + promote_user_html: "%{name} promocis uzanto %{target}" + reject_appeal_html: "%{name} refuzis jerdecidapelo de %{target}" + reject_user_html: "%{name} refuzis registro de %{target}" + remove_avatar_user_html: "%{name} efacis profilimajo de %{target}" + reopen_report_html: "%{name} riapertis raporto %{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" + silence_account_html: "%{name} limitizis konto di %{target}" + suspend_account_html: "%{name} restriktis konto di %{target}" + unassigned_report_html: "%{name} detaskigis raporto %{target}" + unblock_email_account_html: "%{name} deobstruktis retpostoadreso di %{target}" + unsensitive_account_html: "%{name} demarkizis medii di %{target} quale sentoza" + unsilence_account_html: "%{name} efacis limito di konto di %{target}" + unsuspend_account_html: "%{name} derestriktis konto di %{target}" + update_announcement_html: "%{name} novigis anunco %{target}" + update_custom_emoji_html: "%{name} novigis emocimajo %{target}" + update_domain_block_html: "%{name} novigis domenobstrukto por %{target}" + update_status_html: "%{name} novigis posto da %{target}" + deleted_status: "(efacita posto)" + empty: Nula logi. + filter_by_action: Filtrez segun ago + filter_by_user: Filtrez segun uzanto + title: Kontrollogo + announcements: + destroyed_msg: Anunco sucesoze efacesas! + edit: + title: Modifikez anunco + empty: Nula anunci. + live: Samtempe + new: + create: Kreez anunco + title: Nova anunco + publish: Publikigez + published_msg: Anunco sucesoze publikigesas! + scheduled_for: Projetita por eventas en %{time} + scheduled_msg: Anunco projetesis por publikigo! + title: Anunci + unpublish: Depublikigez + unpublished_msg: Anunco sucesoze depublikigesas! + updated_msg: Anunco sucesoza novigesas! + custom_emojis: + assign_category: Insertez kategorio + by_domain: Domeno + copied_msg: Sucesoze kreis lokala kopiuro di emocimajo + copy: Kopiez + copy_failed_msg: Ne povas igar lokala kopiur di ta emocimajo + create_new_category: Kreez nova kategorio + created_msg: Emocimajo sucesoze kreesas! + delete: Efacez + destroyed_msg: Kustumizita emocimajo sucesoza destruktesas! + disable: Desaktivigez + disabled: Desaktivigita + disabled_msg: Sucesoze desaktivigis ta emocimajo + emoji: Emocimajo + enable: Aktivigez + enabled: Aktivigita + enabled_msg: Sucesoze aktivigis ta emocimajo + image_hint: Maximo grandeso di PNG o GIF esas %{size} + list: Listo + listed: Listita + new: + title: Insertez nova kustumizita emocimajo + not_permitted: Vu ne permisesis agar co + overwrite: Remplasez + shortcode: Kurtnumero + shortcode_hint: Minime 2 simboli, nur literi e nombri e sublinei + title: Kustumizita emocimaji + uncategorized: Nekategorigita + unlist: Delistigez + unlisted: Delistigita + update_failed_msg: Ne povas novigar ta emocimajo + updated_msg: Emocimajo sucesoze novigesis! + upload: Adchargez + dashboard: + active_users: aktiva uzanti + interactions: interagi + media_storage: Mediireteneso + new_users: nova uzanti + opened_reports: raporti apertesis + pending_appeals_html: + one: "%{count} vartanta apelo" + other: "%{count} vartanta apeli" + pending_reports_html: + one: "%{count} vartanta raporto" + other: "%{count} vartanta raporti" + pending_tags_html: + one: "%{count} vartanta hashtago" + other: "%{count} vartanta hashtagi" + pending_users_html: + one: "%{count} vartanta uzanti" + other: "%{count} vartanta uzanti" + resolved_reports: raporti rezolvesis + software: Softwaro + sources: Registrofonti + space: Spacuzeso + title: Chefpanelo + top_languages: Maxim aktiva lingui + top_servers: Maxim aktiva servili + website: Retsito + disputes: + appeals: + empty: Nula apeli. + title: Apeli + domain_allows: + add_new: Permisez federato kun domeno + created_msg: Domeno sucesoza permisesas por federato + destroyed_msg: Domeno despermisesas de federato + undo: Despermisez federato kun domeno domain_blocks: add_new: Add new + created_msg: Domenobstrukto nun procedesas + destroyed_msg: Domenobstrukto desagesis + domain: Domeno + edit: Modifikez domenobstrukto + existing_domain_block_html: Vu ja povis plu rigoroza limiti a %{name}, vu bezonas deobstruktar unesme. new: + 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: "Silence will make the account's posts invisible to anyone who isn't following them. Suspend will remove all of the account's content, media, and profile data." + noop: Nulo + silence: Silencigez + suspend: Restriktez + title: Nova domenobstrukto + obfuscate: Nedicernebligez domennomo + obfuscate_hint: Partala nedicernebligez domennomo en listo se reklamo di listo di domenlimito aktivigesas + private_comment: Privata komento + private_comment_hint: Komento pri ca domenlimito esas por interna uzo da jereri. + public_comment: Publika komento + public_comment_hint: Komentez pri ca domenlimito por la publiko, se reklamar listo di domenlimito aktivigesis. + reject_media: Refusez mediifaili + reject_media_hint: Efacas lokale retenita mediifaili e refuzas deschargar irgo en futuro. Nerelatata por restrikti + reject_reports: Refuzez raporti + reject_reports_hint: Ignorez omna raporti quo venas de ca domeno. Nerelatata por restrikti undo: Undo + view: Videz domenobstrukto + email_domain_blocks: + add_new: Insertez novo + attempts_over_week: + one: "%{count} probo de pos 1 week" + other: "%{count} registroprobi de pos 1 week" + created_msg: Sucesoze obstruktis retpostodomeno + delete: Efacez + dns: + types: + mx: Rekordo MX + domain: Domeno + new: + create: Insertez domeno + resolve: Rezolvez domeno + title: Obstruktez nova retpostodomeno + no_email_domain_block_selected: Retpostodomenobstrukti ne chanjesis por ke nulo selektesis + 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. Sorgemez e ne obstruktez majora retpostositi. + resolved_through_html: Rezolvesis tra %{domain} + title: Obstruktita retpostodomeni + follow_recommendations: + description_html: "Sequorekomendi helpas nova uzanti rapide trovar interesanta kontenajo. 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 + status: Stando + suppress: Desfortigez sequorekomendo + suppressed: Desfortigita + title: Sequez rekomendi + unsuppress: Riganez sequorekomendo instances: + availability: + description_html: + one: Se sendar a domeno falias %{count} dio sen sucesar, plua sendoprobi ne agesos se sendo de la domeno ne ganesas. + other: Se sendar a domeno falias en %{count} diferanta dii sen sucesar, plua sendoprobi ne agesos se sendo de la domeno ne ganesas. + failure_threshold_reached: Faliolimito atingesis en %{date}. + failures_recorded: + one: Falita probo en %{count} dio. + other: Falita probi en %{count} dii. + no_failures_recorded: Nula falio en rekordo. + title: Disponebleso + warning: Antea probo di konekto a ca servilo esas nesucesoza + back_to_all: Omna + back_to_limited: Limitizita + back_to_warning: Averto + by_domain: Domeno + confirm_purge: Ka vu certe volas netempale efacar informi de ca domeno? + content_policies: + comment: Interna noto + description_html: Vu povas fixar kontenajguidili quo aplikesos a omna konti de ca domeno e irga oli subdomeni. + policies: + reject_media: Refusez medii + reject_reports: Refusez raporti + silence: Limito + suspend: Restriktez + policy: Guidilo + reason: Publika motivo + title: Kontenajguidili + dashboard: + instance_accounts_dimension: Maxim sequata konti + instance_accounts_measure: retenata konti + instance_followers_measure: nia sequanti ibe + instance_follows_measure: olia sequanti hike + instance_languages_dimension: Maxim uzata lingui + instance_media_attachments_measure: retenata mediiatachaji + instance_reports_measure: raporti pri oli + instance_statuses_measure: retenata posti + delivery: + all: Omna + clear: Efacez senderori + failing: Falias + restart: Rikomencez sendo + stop: Cesez sendo + unavailable: Nedisponebla + delivery_available: Sendo esas disponebla + delivery_error_days: Senderordii + delivery_error_hint: Se sendo ne esas posebla dum %{count} dii, ol automata markizesos quale ne sendebla. + destroyed_msg: Informi de %{domain} nun faskigesis por partikulara efaco. + empty: Nula domeni. + known_accounts: + one: "%{count} savata konto" + other: "%{count} savata konti" + moderation: + all: Omna + limited: Limitizita + title: Jero + private_comment: Privata komento + public_comment: Publika komento + purge: Efacez grande + purge_description_html: Se vu kredas ke ca domeno esas nekonektata netempale, vu povas efacar omna kontorekordi e relatata informi de ca domeno de vua reteneyo. Co forsan esas nekurta. title: Known Instances + total_blocked_by_us: Obstruktesis da ni + total_followed_by_them: Sequesis da oli + total_followed_by_us: Sequesis da ni + total_reported: Raporti pri oli + total_storage: Mediiatachaji + totals_time_period_hint_html: Sumi quo montresas sube inkluzas informi de pos la komenco. + invites: + deactivate_all: Deaktivigez omno + filter: + all: Omna + available: Disponebla + expired: Expirita + title: Filtrez + title: Inviti + ip_blocks: + add_new: Kreez regulo + created_msg: Sucesoze insertis nova regulo di IP + delete: Efacez + expires_in: + '1209600': 2 semani + '15778476': 6 monati + '2629746': 1 monato + '31556952': 1 yaro + '86400': 1 dio + '94670856': 3 yari + new: + title: Kreez nova regulo di IP + no_ip_block_selected: Reguli di IP nechanjesis por ke nulo selektesis + title: Reguli di IP + relationships: + title: "%{acct} relatesi" + relays: + add_new: Insertez nova relayo + delete: Efacez + description_html: "Federatrelayo esas mediatajservilo quo interchanjas multa publika posti inter servili quo abonas e publikigas ibe. Ol povas helpar mikra e mezgranda servili deskovrar kontenajo de fediverso, quale ne bezonas lokala uzanti manuale sequar altra personi en nelokala servili." + disable: Desaktivigez + disabled: Desaktivigita + enable: Aktivigez + enable_hint: Pos aktivigesar, vua servilo abonos omna publika posti de ca relayo, e komencos sendar publika posti di ca servilo a ol. + enabled: Aktivigita + inbox_url: URL di relayo + pending: Vartas aprobo di relayo + save_and_enable: Sparez e aktivigez + setup: Facez relayokonekto + signatures_not_enabled: Relayi ne korekta funcionos dum ke sekurmodo o limigita federatmodo aktivigesis + status: Stando + title: Relayi + report_notes: + created_msg: Raportnoto sucesoze kreesis! + destroyed_msg: Raportnoto sucesoze efacesis! + today_at: Hodie en %{time} + reports: + account: + notes: + one: "%{count} noto" + other: "%{count} noti" + action_log: Kontrollogo + action_taken_by: Agesis da + actions: + delete_description_html: Raportizita posti efacesos e streko rekordigesos por helpar vu intensigar en nexta malagi da la sama konto. + 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: Profilo esos videbla nur por personi quo ja sequis o manuale trovis, se severe limitizas ola porteo. Sempre povas inversigesar. + suspend_description_html: Ca profilo e omna ola kontenaji divenos neacesebla til ol eventuale efacesas. Interagar kun la konto divenos neposebla. Inversigebla til 30 dii. + actions_description_html: Decidez ago por rezolvar ca raporto. Se vu decidar puniso kontre raportizesis konto, retpostoavizo sendesos a ol, ecepte kande Spam kategorio selektesis. + add_to_report: Insertez plu a raporto + are_you_sure: Ka vu esas certa? + assign_to_self: Taskigez me + assigned: Taskigita jerero + by_target_domain: Domeno di raportizita konto + 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 informo, %{name} skribis:' + created_at: Raportizesis + delete_and_resolve: Efacez posti + forwarded: Sendesis + forwarded_to: Sendesis a %{domain} + mark_as_resolved: Markizez quale rezolvita + mark_as_sensitive: Markizez quale sentoza + mark_as_unresolved: Markizez quale nerezolvita + no_one_assigned: Nulu + notes: + create: Insertez noto + create_and_resolve: Rezolvez per noto + create_and_unresolve: Riapertez per noto + delete: Efacez + 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 + quick_actions_description_html: 'Agetez o volvez base por vidar raportizita kontenajo:' + remote_user_placeholder: nelokala uzanti de %{instance} + reopen: Riapertez raporto + report: 'Raporto #%{id}' + reported_account: Raportizita konto + reported_by: Raportizesis da + resolved: Rezolvesis + resolved_msg: Raporto sucesoze rezolvesis! + skip_to_actions: Saltez a agi + status: Stando + statuses: Raportizita kontenajo + statuses_description_html: Ofensanta kontenajo citesos en komuniko kun raportizita konto + target_origin: Fonto di raportizita konto + title: Raporti + unassign: Detaskigez + unresolved: Nerezolvita + updated_at: Novigesis + view_profile: Videz profilo + rules: + add_new: Insertez regulo + delete: Efacez + description_html: Quankam maxim multa personi asertar ke lu ja lektis e konsentis serveskondicioni, frequente personi ne komplete lektas til problemo eventas. Faciligez on vidar vua reguli di servilo kurte per pozar puntostrukturlisto. Lasez singla reguli esar kurta e simpla, ma ne fendez a multa separata kozi anke. + edit: Modifikez regulo + empty: Nula servilreguli fixesis til nun. + title: Servilreguli settings: + activity_api_enabled: + desc_html: Quanto de lokale publikigita posti, aktiva uzanti e nova registri quale semane faski + title: Publikigez rezumstatistiko pri uzantoaktiveso en API + bootstrap_timeline_accounts: + desc_html: Separez multopla uzantonomi kun komo. Ca konti garantiesos montresar en sequorekomendi + title: Rekomendez ca konti a nova uzanti contact_information: email: Enter a public e-mail address username: Enter a username + custom_css: + desc_html: Modifikez aspekto kun CSS chargasas che singla pagino + title: Kustumizita CSS + default_noindex: + desc_html: Efektigar omna uzanti quo ne chanjis ca opciono per su + title: Despartoprenigez uzanti de trovmotorindexo quale originala stando + domain_blocks: + all: A omnu + disabled: A nulu + title: Montrez domenobstrukti + users: A enirinta lokala uzanti + domain_blocks_rationale: + title: Montrez motivo + hero: + desc_html: Montresas che chefpagino. Minime 600x100px rekomendesas. Se ne fixesis, ol retrouzas servilimajeto + title: Heroimajo + mascot: + desc_html: Montresas che multa chefpagino. Minime 293x205px rekomendesas. Se ne fixesis, ol retrouzas reprezentanto + title: Reprezenterimajo + peers_api_enabled: + desc_html: Domennomo quon ca servilo renkontris en fediverso + title: Publikigez listo di deskovrita servili en API + preview_sensitive_media: + desc_html: Ligilprevidi che altra retsiti montros imajeto mem se medii markizesas quale sentoza + title: Montrez sentoza medii e OpenGraph previdi + profile_directory: + desc_html: Permisez uzanti deskovresar + title: Aktivigez profilcheflisto registrations: closed_message: desc_html: Displayed on frontpage when registrations are closed
You can use HTML tags + title: Mesajo di klozita registro + deletion: + desc_html: Permisez irgu efacar sua konto + title: Apertez kontoefaco + min_invite_role: + disabled: Nulu + title: Permisez inviti da + require_invite_text: + desc_html: Se registri bezonas manuala aprobo, kauzigar "Por quo vu volas juntar?" textoenpoz divenar obligata + title: Bezonez nova uzanti insertar motivo por juntar + registrations_mode: + modes: + approved: Aprobo bezonesas por registro + none: Nulu povas registrar + open: Irgu povas registrar + title: Registromodo + show_known_fediverse_at_about_page: + desc_html: Se desaktivigesis, co permisas publika tempolineo quo ligesas de atingopagino montrar nur lokala kontenajo + title: Inkluzez federatita kontenajo che neyurizita publika tempolineopagino + show_staff_badge: + desc_html: Montrez laborerinsigno che uzantopagino + title: Montrez laborerinsigno site_description: desc_html: Displayed as a paragraph on the frontpage and used as a meta tag.
You can use HTML tags, in particular <a> and <em>. title: Site description site_description_extended: desc_html: Displayed on extended information page
You can use HTML tags title: Extended site description + site_short_description: + desc_html: Montresas en flankobaro e metatagi. Deskriptez Mastodon e por quo ca servilo esas specala per 1 paragrafo. + title: Kurta servildeskripto + site_terms: + desc_html: Vu povas skribar sua privatesguidilo, serveskondicioni e altra legi. Vu povas uzar HTML-tagi + title: Kustumizita serveskondicioni site_title: Site title + thumbnail: + desc_html: Uzesis por previdi tra OpenGraph e API. 1200x630px rekomendesas + title: Servilimajeto + timeline_preview: + desc_html: Montrez ligilo e publika tempolineo che atingopagino e permisez API acesar publika tempolineo sen yurizo + title: Permisez neyurizita aceso a publika tempolineo title: Site Settings + trendable_by_default: + desc_html: Efektigas hashtagi quo ante nepermisesis + title: Permisez hashtagi divenies tendencoza sen bezonata kontrolo + trends: + desc_html: Publika montrez antee kontrolita kontenajo quo nun esas tendencoza + title: Tendenci + site_uploads: + delete: Efacez adchargita failo + destroyed_msg: Sitadchargito sucesoze efacesis! + statuses: + back_to_account: Retrovenez a kontopagino + back_to_report: Retrovenez a raportpagino + batch: + remove_from_report: Efacez de raporto + report: Raportizez + deleted: Efacesis + media: + title: Medii + no_status_selected: Nula posti chanjesis pro ke nulo selektesis + title: Kontoposti + with_media: Kun medii + strikes: + actions: + delete_statuses: "%{name} efacis posti di %{target}" + disable: "%{name} frostigis konto di %{target}" + mark_statuses_as_sensitive: "%{name} markizis posti di %{target} quale sentoza" + none: "%{name} sendis averto a %{target}" + sensitive: "%{name} markizis konto di %{target} quale sentoza" + silence: "%{name} limitizis konto di %{target}" + suspend: "%{name} restriktis konto di %{target}" + appeal_approved: Apelis + appeal_pending: Vartata apelo + system_checks: + database_schema_check: + message_html: Existas vartanta datamaturmigri. Startez por certigar ke la softwaro kondutar quale expektita + elasticsearch_running_check: + message_html: Ne povas konektas a Elasticsearch. Kontrolez ke ol functionas o desaktivigez textokompleta trovo + elasticsearch_version_check: + message_html: 'Nekonciliebla versiono di Elasticsearch: %{value}' + version_comparison: Elasticsearch %{running_version} funcionas ma %{required_version} bezonesas + rules_check: + action: Jerez servilreguli + 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 + tags: + review: Kontrolez stando + updated_msg: Hashtagopcioni novigesis sucesoze + title: Administro trends: + allow: Permisez + approved: Aprobesis + disallow: Despermisez + links: + allow: Permisez ligilo + allow_provider: Permisez publikiganto + description_html: Co esas ligili quo nun multe partigesas da konti kun posti quon vua servilo vidas. Ol povas helpar vua uzanti lernar quo eventas en mondo. Ligili ne publike montresas til vu aprobar publikiganto. Vu povas anke permisar o refuzar individuala ligili. + disallow: Despermisez ligilo + disallow_provider: Despermisez publikiganto + shared_by_over_week: + one: Partigesis da 1 persono de pos antea semano + other: Partigesis da %{count} personi de pos antea semano + title: Tendencoza ligili + usage_comparison: Partigesis %{today} foyi hodie, la nombro esas %{yesterday} hiere only_allowed: Nur permisato + pending_review: Vartas kontrolo + preview_card_providers: + allowed: Ligili de ca publikiganto povas divenar tendenco + description_html: Co esas domen quo havas ligili quo frequente partigesas en vua servilo. Ligili ne divenas tendenco publike se domeno di ligilo ne aprobesas. Vua aprobo (o refuzo) anke esas por subdomeni. + rejected: Ligili de ca publikiganto ne divenos tendenco + title: Publikiganti + rejected: Refuzesis + statuses: + allow: Permisez posto + allow_account: Permisez skribanto + description_html: Co esas posti quon vua servilo savas quale nun partigesas e favorizesas multe nun. Ol povas helpar vua nova e retrovenanta uzanti trovar plu multa personi por sequar. Posti ne publike montresas til vu aprobar la skribanto, e la skribanto permisas sua konto sugestesas a altra personi. Vu povas anke permisar o refuzar individuala posti. + disallow: Despermisez posto + disallow_account: Despermisez skribanto + not_discoverable: Skribanto ne konsentis pri esar deskovrebla + shared_by: + one: Partigesis o favorizesis 1 foye + other: Partigesis o favorizesis %{friendly_count} foye + title: Tendencoza posti + tags: + current_score: Nuna punto esas %{score} + dashboard: + tag_accounts_measure: specala uzeso + tag_languages_dimension: Maxim uzita lingui + tag_servers_dimension: Maxim uzita servili + tag_servers_measure: diferanta servili + tag_uses_measure: uzsumo + description_html: Co esas hashtagi quo nun aparas en multa posti quon vua servilo vidas. Ol povas helpar vua uzanti lernar quon personi parolas frequente nun. Hashtagi ne montresas publike til vu aprobar. + listable: Povas sugestesar + not_listable: Ne sugestesar + not_trendable: Ne aparas che tendenci + not_usable: Ne povas uzesar + peaked_on_and_decaying: Maxim uzita ye %{date}, nun diminutesas + title: Tendencoza hashtagi + trendable: Povas aparar che tendenci + trending_rank: 'Tendencorango #%{rank}' + usable: Povas uzesar + usage_comparison: Uzesis %{today} foyi hodie, la nombro esas %{yesterday} hiere + used_by_over_week: + one: Uzesis da 1 persono de pos 1 semano + other: Uzesis da %{count} personi de pos 1 semano + title: Tendenci trending: Tendenco + warning_presets: + add_new: Insertez novo + delete: Efacez + edit_preset: Modifikez avertfixito + empty: Vu ne fixis irga avertfixito til nun. + title: Jerez avertfixiti + admin_mailer: + new_appeal: + actions: + delete_statuses: efacos ola posti + disable: frostigar olia konto + mark_statuses_as_sensitive: markizos ola posti quale sentoza + none: averto + sensitive: markizos ola konto quale sentoza + silence: limitizos ola konto + suspend: restriktos ola konto + 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_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}) + new_report: + body: "%{reporter} raportizis %{target}" + body_remote: Ulu de %{domain} raportizis %{target} + subject: Nova raporto por %{instance} (#%{id}) + new_trends: + body: 'Ca kozi bezonas kontrol ante ol povas montresar publike:' + new_trending_links: + no_approved_links: Nun no existas aprobita tendencoza ligili. + requirements: 'Irga ca probanti povas ecesar la #%{rank} aprobita tendencoligilo, quale nun esas %{lowest_link_title} kun punto %{lowest_link_score}.' + title: Tendencoza ligili + new_trending_statuses: + no_approved_statuses: Nun ne existas aprobita tendencoza posti. + requirements: 'Irga ca probanti povas ecesar la #%{rank} aprobita tendencoligilo, quale nun esas %{lowest_status_url} kun punto %{lowest_status_score}.' + title: Tendencoza posti + new_trending_tags: + no_approved_tags: Nun ne existas aprobita tendencoza hashtagi. + requirements: 'Irga ca probanti povas ecesar la #%{rank} aprobita tendencoligilo, quale nun esas %{lowest_tag_name} kun punto %{lowest_tag_score}.' + title: Tendencoza hashtagi + subject: Nova tendenci bezonas kontrolesar che %{instance} + aliases: + add_new: Kreez alternativa nomo + created_msg: Sucesoze kreis nova alternativa nomo. Vu povas nun komencar transfero de la olda konto. + deleted_msg: Sucesoze efacis alternativa nomo. Transferar de ta konto a co ne esos posebla. + empty: Vu ne havas alternativa nomi. + hint_html: Se vu volas transferesar de altra konto a co, hike vu povas krear alternativnomo, quo bezonesas ante vu povas durigar transferar sequanti de la olda konto a co. Ca ago esas nedanjeroza e inversigebla. Kontomigro komencesas de la olda konto. + remove: Deligez alternative nomo + appearance: + advanced_web_interface: Avanca retintervizajo + advanced_web_interface_hint: 'Se vu volas uzar tota skrenlong, avanca retintervizajo povigas vu modifikar multa diferanta kolumni por vida multa informi en sama tempo quon vu volas: Hemo, avizi, federatata tempolineo, multa listi e hashtagi.' + animations_and_accessibility: Animo e aceseso + confirmation_dialogs: Konfirmdialogi + discovery: Deskovro + localization: + body: Mastodon tradukesas da voluntarii. + guide_link: https://crowdin.com/project/mastodon + guide_link_text: Omnu povas kontributar. + sensitive_content: Sentoza kontenajo + toot_layout: Postostrukturo application_mailer: + notification_preferences: Chanjez retpostopreferaji + salutation: "%{name}," settings: 'Chanjar la retpost-mesajala preferi: %{link}' view: 'Vidar:' + view_profile: Videz profilo + view_status: Videz posto applications: + created: Apliko sucesoze kreesas + destroyed: Apliko sucesoze efacesas invalid_url: La URL donita ne esas valida + 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: Demandez invito + change_password: Pasvorto + checkbox_agreement_html: Se konsentas servilreguli e serveskondiconi + checkbox_agreement_without_rules_html: Me konsentar serveskondicioni + delete_account: Efacez konto + delete_account_html: Se vu volas efacar vua konto, vu povas irar hike. 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 plu! didnt_get_confirmation: Ka tu ne recevis la instrucioni por konfirmar? + 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. + link_to_otp: Insertez 2-faktornumero de vua fono o rigannumero + link_to_webauth: Uzez vua sekuresklefaparato + log_in_with: Enirez per login: Enirar logout: Ekirar + migrate_account: Transferez a diferanta konto + migrate_account_html: Se vu volas ridirektar ca konto a diferanto, vu povas opcionagar hike. + or_log_in_with: O eniras per + providers: + cas: CAS + saml: SAML register: Membreskar + registration_closed: "%{instance} ne aceptas nova membri" resend_confirmation: Risendar la instrucioni por konfirmar reset_password: Chanjar la pasvorto security: Chanjar pasvorto set_new_password: Selektar nova pasvorto + setup: + email_below_hint_html: Se suba retpostoadreso esas nekorekta, vu povas chanjar hike e ganar nova konfirmretposto. + email_settings_hint_html: Konfirmretposto sendesis a %{email}. Se ta retpostoadreso ne esas korekta, vu povas chanjar en kontoopcioni. + title: Komencoprocedo + status: + account_status: Kontostando + confirming: Vartas retpostokonfirmo finar. + 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}. + view_strikes: Videz antea streki kontre vua konto + too_fast: Formulario sendesis tro rapide, probez itere. + trouble_logging_in: Ka ne povas enirar? + use_security_key: Uzes sekuresklefo authorize_follow: + already_following: Vu ja sequis ca konto + already_requested: Vu ja sendis sequodemando a ta konto error: Regretinde, eventis eraro probante konsultar la fora konto follow: Sequar + follow_request: 'Vu sendis sequodemando a:' + following: 'Suceso! Vu nun sequas:' + post_follow: + close: O, vu volas jus klozar ca panelo. + return: Montrez priflo de uzanti + web: Irez a interreto title: Sequar %{acct} + challenge: + confirm: Durez + hint_html: "Guidilo: Ni ne demandos vua pasvorto itere til 1 horo." + invalid_password: Nevalida pasvorto + prompt: Konfirmez pasvorto por durar + crypto: + errors: + invalid_key: ne esas valida klefo Ed25519 o Curve25519 + invalid_signature: ne esas valida parafo Ed25519 + date: + formats: + default: "%d %b, %Y" + with_month_name: "%d %B, %Y" datetime: distance_in_words: + about_x_hours: "%{count}h" + about_x_months: "%{count}mo" + about_x_years: "%{count}y" + almost_x_years: "%{count}y" half_a_minute: Jus + less_than_x_minutes: "%{count}m" less_than_x_seconds: Jus + over_x_years: "%{count}y" + x_days: "%{count}d" + x_minutes: "%{count}m" + x_months: "%{count}mo" + x_seconds: "%{count}s" + deletes: + challenge_not_passed: Informo quon vu insertis ne esas korekta + confirm_password: Insertez nuna pasvorto por verifikar vua identeso + confirm_username: Insertez vua uzantonomo por konfirmar procedo + proceed: Efacez konto + success_msg: Vua konto sucesoze efacesis + warning: + before: 'Ante durar, lektez ca noti sorgeme:' + caches: Kontenajo quo memoresis da altra servilo forsan restas + data_removal: Vua posti e altra informi netempale efacesis + email_change_html: Vu povas chanjar vua retpostoadreso sen efacar vua konto + email_contact_html: Se ol ankore ne venas, vu povas retpostigar a %{email} por ganar helpo + email_reconfirmation_html: Se vu ne ganas konfirmretposto, vu povas demandar itere + irreversible: Vu ne povos riganar o riaktivigar vua konto + more_details_html: Por plu detali, videz privatesguidilo. + username_available: Vua uzantonomo divenos disponebla itere + username_unavailable: Vua uzantonomo restos nedisponebla + directories: + directory: Profilcheflisto + explanation: Deskovrez uzanti segun olia intereso + explore_mastodon: Explorez %{title} disputes: strikes: + action_taken: Agesis + appeal: Apelo + appeal_approved: Ca streko sucesoza apelesis e nun ne esas valida + appeal_rejected: Apelo refuzesis + appeal_submitted_at: Apelo sendesis + appealed_msg: Vua apelo sendesis. Se ola aprobesis, vu notifikesos. + appeals: + submit: Sendez apelo approve_appeal: Aprobez rikonsidero + associated_report: Relatata raporto + created_at: Dato + description_html: Co esas agi kontre vua konto e averti quo sendesis a vu da laborero di %{instance}. + recipient: Sendesas a reject_appeal: Refusez rikonsidero + status: 'Posto #%{id}' + status_removed: Posto ja efacis de sistemo + title: "%{action} de %{date}" + title_actions: + delete_statuses: Postoefaco + disable: Frostigo di konto + mark_statuses_as_sensitive: Markizo di posti quale sentoza + none: Averto + sensitive: Markizo di konto quale sentoza + silence: Limitizo di konto + suspend: Restrikto de konto + your_appeal_approved: Vua konto aprobesis + your_appeal_pending: Vu sendis apelo + your_appeal_rejected: Vua apelo refuzesis + domain_validator: + invalid_domain: ne esas valida domennomo errors: - '400': The request you submitted was invalid or malformed. - '403': You don't have permission to view this page. + '400': Demando quon vu sendis esas nevalida o malstrukturala. + '403': Vu ne havas permiso por vidar ca pagino. '404': La pagino quan tu serchas ne existas. - '406': This page is not available in the requested format. + '406': Ca pagino ne esas displonebla kun demandita formato. '410': La pagino quan tu serchas ne plus existas. - '422': - '429': Too many requests - '500': - '503': The page could not be served due to a temporary server failure. + '422': + content: Sekuresverifiko faliis. Ka vu obstruktas kukii? + title: Sekuresverifiko faliis + '429': Tro multa agi + '500': + content: Regreto, ma evas nefuncionas che nia latero. + title: Ca pagino ne esas korekta + '503': La pagino ne povas montresas pro tempala servilfalio. + noscript_html: Por uzar retsoftwaro di Mastodon, aktivigez JavaScript. Alternative, probez 1 de konciliebla softwari por Mastodon por vua platformo. + existing_username_validator: + not_found: ne povas trovar lokala uzanti kun ta uzantonomo + not_found_multiple: ne povas trovar %{usernames} exports: + archive_takeout: + date: Dato + download: Deschargez vua arkivo + hint_html: Vu povas demandar arkivo di vua posti e adchargita medii. Exportacita informi esos kun ActivityPub format, e lektebla da irga konciliebla softwaro. Vu povas demandar arkivo pos singla 7 dii. + in_progress: Kompilar vua arkivo... + request: Demandez vua arkivo + size: Grandeso blocks: Tu blokusas + bookmarks: Libromarki + csv: CSV + domain_blocks: Domenobstrukti + lists: Listi + mutes: Vu silencigesas storage: Konservado di kontenajo + featured_tags: + add_new: Insertez novo + errors: + limit: Vu ja estelis maxima hashtagi + hint_html: "Quo esas estelita hashtagi? 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: + account: Profili + home: Hemo e listi + notifications: Avizi + public: Publika tempolinei + thread: Konversi + edit: + title: Modifikez filtrilo + errors: + invalid_context: Nula o nevalida kuntexto donesis + invalid_irreversible: Neinversigebla filtro nur funcionas kun hemo- e aviz- kuntexto + index: + delete: Efacez + empty: Vu ne havas filtrili. + title: Filtrili + new: + title: Insertez nova filtrilo + footer: + developers: Developeri + more: Plu… + resources: Resursi + trending_now: Nuna tendenco generic: + all: Omna changes_saved_msg: Chanji senprobleme konservita! + copy: Kopiez + delete: Efacez + none: Nulo + order_by: Asortez quale save_changes: Konservar la chanji + today: hodie validation_errors: one: Ulo ne eventis senprobleme! Voluntez konsultar la suba eror-raporto other: Ulo ne eventis senprobleme! Voluntez konsultar la suba %{count} eror-raporti + html_validator: + invalid_markup: 'kontenas nevalida kompozuro di HTML: %{error}' imports: + errors: + over_rows_processing_limit: kontenas plu kam %{count} horizontala lineo + modes: + merge: Kombinez + merge_long: Retenez displonebla rekordi e insertez novi + overwrite: Remplasez + overwrite_long: Remplasez nuna rekordi per novi 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. success: Tua datumi esis senprobleme importacita ed esos traktita quale projetita types: blocking: Listo de blokusiti + bookmarks: Libromarki + domain_blocking: Domenobstruktolisto following: Listo de sequati + muting: Silenciglisto upload: Kargar + in_memoriam_html: Memorialo. + invites: + delete: Deaktivigez + expired: Expiris + expires_in: + '1800': 30 minuti + '21600': 6 hori + '3600': 1 horo + '43200': 12 hori + '604800': 1 semano + '86400': 1 dio + expires_in_prompt: Nulatempe + generate: Facez invitligilo + invited_by: 'Vu invitesis da:' + max_uses: + one: 1 uzo + other: "%{count} uzi" + max_uses_prompt: Nula limito + prompt: Facez e partigez ligili kun altra personi por donar aceso a ca servilo + table: + expires_at: Expiros + uses: Uzi + title: Invitez personi + lists: + errors: + limit: Vu astingas maxima listi + login_activities: + authentication_methods: + otp: 2-faktoryurizessoftwaro + password: pasvorto + sign_in_token: retpostosekuresnumero + webauthn: sekuresklefi + description_html: Se vu vidas aktiveso quon vu ne rikonocas, konsiderez chanjar vua pasvorto e aktivigez 2-faktoryurizo. + empty: Yurizeshistorio esas nedisponebla + failed_sign_in_html: Falita enirprob per %{method} de %{ip} (%{browser}) + successful_sign_in_html: Sucesoza eniro per %{method} de %{ip} (%{browser}) + title: Yurizeshistorio + media_attachments: + validations: + images_and_video: Ne povas atachar video a posto quo ja kontenar imaji + not_ready: Ne povas faili quo ankore procedigesas. Probez itere pose! + too_many: Ne povas atachar plu kam 4 faili + migrations: + acct: Transferesis a + cancel: Extingar ridirekto + cancel_explanation: Extingar ridirekto riaktivigos vua nuna konto, ma ne riganos sequanti quo transferesis a ta konto. + cancelled_msg: Sucesoze extingar ridirekto. + errors: + already_moved: esas sama transferkonto + missing_also_known_as: ne esas alternativa nomo di ca konto + move_to_self: ne povas esar nuna konto + not_found: ne povas trovesar + on_cooldown: Vu havas varttempo + followers_count: Sequanti en transfertempo + incoming_migrations: Transfero de diferanta konto + incoming_migrations_html: Por transferar de irga konto a to, unesme vu bezonas krear kontoalternativnomo. + moved_msg: Vua konto nun ridirektesas a %{acct} e vua sequanti transferesas. + not_redirecting: Vua konto ne ridirektesas a irga altra konto nun. + on_cooldown: Vu recente migrigis vua konto. Ca funciono divenos disponebla itere pos %{count} dii. + past_migrations: Antea migri + proceed_with_move: Transferez sequanti + redirected_msg: Vua konto nun ridirektesas a %{acct}. + redirecting_to: Vua konto ridirektesas a %{acct}. + set_redirect: Fixez ridirekto + warning: + backreference_required: Nova konto mustas unesme havar opciono quo dopreferas co + before: 'Ante durar, lektez ca noti sorgeme:' + cooldown: Pos transferesar, existas varttempo kande vu ne povas transferesar itere + disabled_account: Vua nuna konto ne divenos tote uzebla pose. Tamen, vu povas acesar informexportaco e anke riaktivigo. + followers: Ca ago transferos omna sequanti de nuna konto a nova konto + only_redirect_html: Alternative, vu povas nur pozar ridirekto che vua profilo. + other_data: Altra informi ne transferesos automate + redirect: Vua nuna profilo di konto novigesos kun ridirektoavizo e neinkluzesos de trovi + moderation: + title: Jero + move_handler: + carry_blocks_over_text: Ca uzanti transferesis de %{acct} quon vu restriktis. + carry_mutes_over_text: Ca uzanti transferesis de %{acct} quon vu silencigis. + copy_account_note_text: 'Ca uzanti transferesis de %{acct}, co esas vua antea noti pri ol:' notification_mailer: + admin: + sign_up: + subject: "%{name} registris" digest: + action: Videz omna avizi body: Yen mikra rezumo di to, depos ke tu laste vizitis en %{since} mention: "%{name} mencionis tu en:" new_followers_summary: one: Tu obtenis nova sequanto! Yey! other: Tu obtenis %{count} nova sequanti! Astonive! + subject: + one: "1 nova avizo de pos vua antea vizito 🐘" + other: "%{count} nova avizi de pos vua antea vizito 🐘" + title: Dum vua neprezenteso... favourite: body: "%{name} favoris tua mesajo:" subject: "%{name} favoris tua mesajo" + title: Nova favorato follow: body: "%{name} sequeskas tu!" subject: "%{name} sequeskas tu" + title: Nova sequanto follow_request: + action: Jerez sequodemandi body: "%{name} demandis sequar tu" subject: "%{name} demandis sequar tu" + title: Nova sequodemando mention: + action: Respondez body: "%{name} mencionis tu en:" subject: "%{name} mencionis tu" + title: Nova menciono + poll: + subject: Votposto di %{name} finis reblog: body: "%{name} diskonocigis tua mesajo:" subject: "%{name} diskonocigis tua mesajo" + title: Nova busto + status: + subject: "%{name} nove postigis" + update: + subject: "%{name} modifikis posto" + notifications: + email_events: Eventi por retpostoavizi + email_events_hint: 'Selektez eventi quon vu volas ganar avizi:' + other_settings: Altra avizopcioni + number: + human: + decimal_units: + format: "%n%u" + units: + billion: G + million: M + quadrillion: Q + thousand: K + trillion: T + otp_authentication: + code_hint: Insertez numero quo facesis da vua yurizsoftwaro por konfirmar + description_html: Se vu aktivigas 2-faktoryurizo per yurizsoftwaro, eniro bezonos vu havar vua fono, quale facas fichi por vu por enirar. + enable: Aktivigez + instructions_html: "Skanez ca QR-numero a Google Authenticator o simila TOTP-softwaro en vua fono. Pos co, ta softwaro facos fichi quon vu bezonos insertar kande enirar." + manual_instructions: 'Se vu ne povas skanar numero QR e bezonas insertar manuala, subo esas textosekreto:' + setup: Facez + wrong_code: Insertita numero esas nevalida! Ka serviltempo e aparattempo esas korekta? pagination: + newer: Nova next: Sequanta + older: Olda prev: Preiranta + truncate: "…" + polls: + errors: + already_voted: Vu ja votis che ca votposto + duplicate_options: havas duplikatkozi + duration_too_long: esas tro distanta en futuro + duration_too_short: es tro balde + expired: Votposto ja finis + invalid_choice: Selektita votselektajo ne existas + over_character_limit: ne povas esar plu longa kam %{max} literi por sing + 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 + reactions: + errors: + limit_reached: Limito di diferanta reakto atingesis + unrecognized_emoji: ne esas rikonocita emocimajo + relationships: + activity: Kontoaktiveso + dormant: Neaktiva + follow_selected_followers: Sequez kelka sequanti + followers: Sequanti + following: Sequati + invited: Invititi + last_active: Recente aktiva + most_recent: Maxim recenta + moved: Transferesis + mutual: Reciproka + primary: Primara + relationship: Relateso + remove_selected_domains: Efacez omna sequanti de selektita domeni + remove_selected_followers: Efacez selektita sequanti + remove_selected_follows: Desequez selektita uzanti + status: Kontostando remote_follow: acct: Enpozez tua uzernomo@instaluro de ube tu volas sequar ta uzero missing_resource: La URL di plussendado ne povis esar trovita + no_account_html: Ka vu ne havas konto? Vu povas registrar hike proceed: Durar por plussendar prompt: 'Tu sequeskos:' + reason_html: "Por quo ca demarsho bezonesas? %{instance} forsan ne esas servilo ube vu registris, do ni bezonas ridirektar vu a vua hemservilo unesme." + remote_interaction: + favourite: + proceed: Durez favorizar + prompt: 'Vu povas favorizar ca posto:' + reblog: + proceed: Durez bustar + prompt: 'Vu volas bustar ca posto:' + reply: + proceed: Durez respondar + prompt: 'Vu volas respondar ca posto:' + reports: + errors: + invalid_rules: ne refera valida reguli rss: content_warning: 'Kontenajaverto:' descriptions: account: Publika posti de @%{acct} tag: 'Publika posti kun tago #%{hashtag}' + scheduled_statuses: + 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 + sessions: + activity: Antea aktiveso + browser: Vidilo + browsers: + alipay: Alipay + blackberry: Blackberry + chrome: Chrome + edge: Microsoft Edge + electron: Electron + firefox: Firefox + generic: Nesavita vidilo + ie: Internet Explorer + micro_messenger: MicroMessenger + nokia: Vidilo Nokia S40 Ovi + opera: Opera + otter: Otter + phantom_js: PhantomJS + qq: Vidilo QQ + safari: Safari + uc_browser: UCBrowser + weibo: Weibo + current_session: Nuna sesiono + description: "%{browser} che %{platform}" + explanation: Co esas retvidili quo nun konektesis a vua konto di Mastodon. + ip: IP + platforms: + adobe_air: Adobe Air + android: Android + blackberry: Blackberry + chrome_os: Chrome OS + firefox_os: Firefox OS + ios: iOS + linux: Linux + mac: macOS + other: nesavata platformo + windows: Windows + windows_mobile: Windows Mobile + windows_phone: Windows Phone + revoke: Depermisez + revoke_success: Sesiono sucesoze deaprobesas + title: Sesioni + view_authentication_history: Videz yurizeshistorio di vua konto settings: + account: Konto + account_settings: Kontoopcioni + aliases: Kontoaltnomi + appearance: Formo authorized_apps: Yurizita apliki back: Retro a Mastodon + delete: Kontoefaco + development: Developo edit_profile: Redaktar la profilo export: Exportacar datumi + featured_tags: Estelata hashtagi import: Importacar + import_and_export: Importaco e exportaco + migrate: Kontomigro + notifications: Avizi preferences: Preferi + profile: Profilo + relationships: Sequati e sequanti + statuses_cleanup: Automata postoefaco + strikes: Jerstreki two_factor_authentication: Dufaktora autentikigo + webauthn_authentication: Sekuresklefi statuses: + attached: + audio: + one: "%{count} audio" + other: "%{count} audii" + description: 'Atachajo: %{attached}' + image: + one: "%{count} imajo" + other: "%{count} imaji" + video: + one: "%{count} video" + other: "%{count} videi" + boosted_from_html: Bustesis de %{acct_link} + content_warning: 'Kontenajaverto: %{warning}' + default_language: Sama quale intervizajlinguo + disallowed_hashtags: + one: 'kontenas nepermisita hashtago: %{tags}' + other: 'kontenas nepermisita hashtagi: %{tags}' + edited_at_html: Modifikesis ye %{date} + errors: + in_reply_not_found: Posto quon vu probas respondar semblas ne existas. open_in_web: Apertar retnavigile over_character_limit: limito de %{max} signi ecesita + pin_errors: + 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 + poll: + total_people: + one: "%{count} persono" + other: "%{count} personi" + total_votes: + one: "%{count} voto" + other: "%{count} voti" + vote: Votez show_more: Montrar plue + show_newer: Montrez plu nova kozo + show_older: Montrez plu olda kozo + show_thread: Montrez postaro + sign_in_to_participate: Registrez por partoprenar en konverso + title: '%{name}: "%{quote}"' visibilities: + direct: Direta private: Montrar nur a sequanti + private_long: Nur montrez a sequanti public: Publika + public_long: Omnu povas vidar unlisted: Publika, ma ne aperos en publika tempolinei + unlisted_long: Omnu povas vidar ma ne listigesas che publika tempolinei + statuses_cleanup: + enabled: Automata efacez olda posti + enabled_hint: Automata efacez vua posti pos oli atingar fixita oldeslimito, se oli ne parigesas a 1 de suba ecepti + 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 + 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. + keep_direct: Retenez direta mesaji + keep_direct_hint: Ne efacas irga vua direta mesaji + keep_media: Retenez posti kun mediiatachaji + keep_media_hint: Ne efacas irga vua posti quo havas mediiatachaji + keep_pinned: Retenez pinglagita posti + keep_pinned_hint: Ne efacas irga vua pinglagita posti + keep_polls: Retenez votposti + keep_polls_hint: Ne efacas irga vua votposti + keep_self_bookmark: Retenez posti quon vu libromarkizis + keep_self_bookmark_hint: Ne efacas vua sua posti se vu libromarkizis li + keep_self_fav: Retenez posti quon vu favorizis + keep_self_fav_hint: Ne efacas vua sua posti se vu favorizis li + min_age: + '1209600': 2 semani + '15778476': 6 monati + '2629746': 1 monato + '31556952': 1 yaro + '5259492': 2 monati + '604800': 1 semano + '63113904': 2 yari + '7889238': 3 monati + min_age_label: Oldeslimito + min_favs: Retenez favorizita posti mine + min_favs_hint: Ne efacas irga vua posti quo ganis mine ca favorizquanto. Restez quale vakua por efacar posti sen suciar olia favorizquanto + 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 stream_entries: + pinned: Pinglagita posto reblogged: diskonocigita sensitive_content: Titiliva kontenajo strikes: errors: too_late: Ol esas tro tarda ye apelar ca strekizo + tags: + does_not_match_previous_name: ne parigesas a antea nomo + terms: + body_html: | +

Privatesguidilo

+

Quo informi kolektesas da ni?

+ +
    +
  • Bazala kontoinformo
  • +
  • Posti, sequo e altra publika informo
  • +
  • Direta e sequantinura posti: Noto, operacero di servilo e gananta servilo povas vidar tala mesaji. Ne partigez irga privata informi che Mastodon.
  • +
  • IP e altra metainformi
  • +
+ +
+ +

Por quo ni uzas vua informi?

+ +

+ Irga informi quon ni kolektas de vu forsan uzesas per ca metodi:

+ +
    +
  • Por donar precipua funciono di Mastodon.
  • +
  • Por helpar jero di komunitato.
  • +
  • Retpostoadreso quon vu donas forsan uzesas por sendar informi a vu.
  • +
+ +
+ +

Quale ni protektas vua informi?

+ +

Ni facar diversa sekuresdemarsh por mmantenar sekureso di vua personala informi kande vu enirar, sendar o acesar vua personala informi.

+ +
+ +

Quo esas nia informiretenguidilo?

+ +

Ni esforcive proba:

+ +
    +
  • Retenar servillogi quo kontenar IP-adreso di omna demandi a ca servilo.
  • +
  • Retenar IP-adresi quo relatata kun registrinta uzanti til 12 monati.
  • +
+ +

Vu povas demandar e deschargar arkivo di vua kontenajo.

+ +

Vu povas inversigebla efacar vua konto irgatempe.

+ +
+ +

Ka ni uzas kukii?

+ +

Yes. (Se vu permisas)

+ +

Ni uzas kukii por komprenar e sparar vua preferaji por viziti en futuro.

+ +
+ +

Ka ni revelas irga informi a externe grupi?

+ +

Ni ne vendas, komercar e transferar a externe grupi vua personala identigebla informi.

+ +

Vua publika kontenajo forsan deschargesas da altra servili en reto.

+ +

Kande vu yurizas softwaro uzar vua konto, ol forsan ganar vua publika profilinformi.

+ +
+ +

Situzo da pueri

+ +

Se ca servilo esas en EU o EEA: Minimo esas 16 yari. (General Data Protection Regulation)

+ +

Se ca servilo esas en USA: Minimo esas 13 yari. (Children's Online Privacy Protection Act)

+ +

Legalbezonaji forsan esas diferanta se ca servilo esas en altra regiono.

+ +
+ +

Chanji di privatesguidilo

+ +

Se ni decidas chanjar nia privatesguidilo, ni postigos ta chanji a ca pagino.

+ +

Ca dokumento esas CC-BY-SA.

+ +

Tradukesis e modifikesis de Angla de Discourse privacy policy.

+ title: Serveskondiconi e Privatesguidilo di %{instance} + themes: + contrast: Mastodon (Alta kontrasteso) + default: Mastodon (Obskura) + mastodon-light: Mastodon (Brila) + time: + formats: + default: "%d %b, %Y, %H:%M" + month: "%b %Y" + time: "%H:%M" two_factor_authentication: + add: Insertez disable: Extingar + disabled_success: 2-faktoryurizeso sucesoze desaktivigesas + edit: Modifikez + enabled: 2-faktoryurizeso aktivigesas + enabled_success: 2-faktoryurizeso sucesoze aktivigesas generate_recovery_codes: Generate Recovery Codes + lost_recovery_codes: Rigannumeri povigas vu riganas aceso a vua konto se vu perdas vua fono. Se vu perdas vua rigannumeri, vu povas rifacar hike. Vua olda rigannumeri nevalidigesos. + methods: 2-faktormetodi + otp: Yurizsoftwaro + recovery_codes: Kopiez rigannumeri + recovery_codes_regenerated: Rigannumeri sucesoze rifacesas recovery_instructions_html: If you ever lose access to your phone, you can use one of the recovery codes below to regain access to your account. Keep the recovery codes safe, for example by printing them and storing them with other important documents. + webauthn: Sekuresklefi + user_mailer: + appeal_approved: + action: Irez a vua konto + explanation: Apelo di streko kontre vua konto en %{strike_date} quale vu sendis en %{appeal_date} aprobesis. Vua konto itere standas bone. + subject: Vua apelo de %{date} aprobesis + title: Apelo aprobesis + appeal_rejected: + explanation: Apelo di streko kontre vua konto en %{strike_date} quale vu sendis en %{appeal_date} refuzesis. + subject: Vua apelo de %{date} refuzesis + title: Apelo refuzesis + backup_ready: + explanation: Vu demandis kompleta kopiur di vua konto di Mastodon. Ol esas nun pronte deschargebla! + subject: Vua arkivo pronte deschargebla + title: Arkivekpreno + suspicious_sign_in: + change_password: chanjez vua pasvorto + details: 'Co esas detali di eniro:' + explanation: Ni deskovris eniro a vua konto de nova adreso IP. + further_actions_html: Se co ne agesis da vu, ni rekomendas ke vu %{action} quik e aktivigas 2-faktoryurizo por sekurigar vua konto. + subject: Vua konto acesesis de nova adreso IP + title: Nova eniro + warning: + appeal: Sendez apelo + appeal_description: Se vu kredas ke co esas eroro, vu povas sendar apelo a laboreri di %{instance}. + categories: + spam: Spamo + violation: Kontenajo nesequas ca komunitatguidili + explanation: + delete_statuses: Ol trovesis ke kelka vua posti nesequas komunitatguidilo e do efacesis da jereri di %{instance}. + disable: Vu ne povas uzar vua konto plu, ma vua profilo e altra informi restas bone. Vu povas demandar kopiur di vua informi, chanjar kontoopcioni e efacar vua konto. + mark_statuses_as_sensitive: Kelka vua posti markizesis quale sentoza da jereri di %{instance}. Do, personi bezonos kliktar medii en posti ante prevido montresas. Vu povas markizar medii quale sentoza per su kande postar en futuro. + sensitive: Pos co, omna vua adchargita mediifaili markizesos quale sentoza e celesos dop kliktoaverto. + silence: Vu povas ankore uzar vua konto ma nur personi quo ja sequis vu vidos vua posti en ca servilo, e vu forsan neinkluzesas de diversa deskovrotraiti. Tamen, altra personi povas ankore manuala sequar vu. + suspend: Vu ne povas uzar vua konto pluse, e vua profilo e altra informi ne esas acesebla pluse. Vu povas ankore enirar por demandar kopiur di vua informi til informi komplete efacesas pos cirkum 30 dii, ma ni retenos kelka bazala informi por preventar vu evitar restrikto. + reason: 'Motivo:' + statuses: 'Citita posti:' + subject: + delete_statuses: Vua posti che %{acct} efacis + disable: Vua konto %{acct} frostigesis + mark_statuses_as_sensitive: Vua posti che %{acct} markizesis quale sentoza + none: Averto por %{acct} + sensitive: Vua posti che %{acct} markizesos quale sentoza pos nun + silence: Vua konto %{acct} limitizesis + suspend: Vua konto %{acct} restriktesis + title: + delete_statuses: Posti efacesis + disable: Konto frostigesis + mark_statuses_as_sensitive: Posti markizesis quale sentoza + none: Averto + sensitive: Konto markizesis quale sentoza + silence: Konto limitizesis + suspend: Konto restriktigesis + welcome: + edit_profile_action: Facez profilo + edit_profile_step: Vu povas kustumizar vua profilo per adchargar profilimajo, kapimajo, chanjar vua montronomo e plu. Se vu volas kontrolar nova sequanti ante oli permisesar sequantar vu, vu povas klefklozar vua konto. + explanation: Subo esas guidilo por helpar vu komencar + final_action: Komencez postigar + final_step: 'Jus postigez! Mem sen sequanti, vua publika posti povas videsar da altra personi, exemplo es en lokala tempolineo e en hashtagi. Vu povas anke introduktar su en #introductions hashtagi.' + full_handle: Vua kompleta profilnomo + full_handle_hint: Co esas quon vu dicos a amiki por ke oli povas mesajigar o sequar vu de altra servilo. + review_preferences_action: Chanjez preferaji + review_preferences_step: Certigez ke vu fixas vua preferaji, tale quala retposto quon vu volas ganar, o privatesnivelo quo vu volas vua posti normale uzar. Se vu ne havas movmalado, vu povas selektar aktivigar GIF-autopleo. + subject: Bonveno a Mastodon + tip_federated_timeline: Federatata tempolineo esas generala vido di reto di Mastodon. Ma, ol nur inkluzas personi quon vua vicini abonis, do ol ne esas kompleta. + tip_following: Vu sequas vua administrer(o) di servilo quale originala stando. Por sequar plua interesanta personi, videz lokala e federatata tempolinei. + tip_local_timeline: Lokala tempolineo esas generala vido di personi che %{instance}. Co esas vua apuda vicini! + tip_mobile_webapp: Se vua fonvidilo povigas vu pozar Mastodon a vua hemskreno, vu povas ganar pulsavizi. Ol funcionas tale traiti di fonsoftwaro! + tips: Guidili + title: Bonveno, %{name}! users: + follow_limit_reached: Vu ne povas sequar plu kam %{limit} personi invalid_otp_token: La dufaktora autentikigila kodexo ne esas valida + otp_lost_help_html: Se vu perdas aceso de 2 konto, vu povas kontaktar kun %{email} + seamless_external_login: Vu enirar tra externa serveso, do pasvorto e retpostoopcioni ne esas disponebla. + signed_in_as: 'Eniris quale:' + verification: + explanation_html: 'Vu povas verifikar su kom proprietero di ligili en vua profilmetainformi. En ta kazo, ligita retsito mustas havar rel="me" atributo. Textokontenajo di ligilo ne esas importanta. Co esas exemplo:' + verification: Verifikeso + webauthn_credentials: + add: Insertez nova sekuresklefo + create: + error: Existas problemo kande insertar vua sekuresklefo. Probez itere. + success: Vua sekuresklefo sucesoze insertesas. + delete: Efacez + delete_confirmation: Ka vu certe volas efacar ca sekuresklefo? + description_html: Se vu aktivigas sekuresklefyurizo, eniro bezonos vu uzar 1 de vua sekuresklefi. + destroy: + error: Existas problemo kande efacar vua sekuresklefo. Probez itere. + success: Vua sekuresklefo sucesoze efacesis. + invalid_credential: Nevalida sekuresklefo + nickname_hint: Insertez nometo di vua nova sekuresklefo + not_enabled: Vu ne aktivigesas WebAuthn til nun + not_supported: Ca vidilo ne suportas sekuresklefi + otp_required: Por uzar sekuresklefi, aktivigez 2-faktoryurizeso unesme. + registered_on: Registris ye %{date} diff --git a/config/locales/is.yml b/config/locales/is.yml index 02a2e0254..63d3809a3 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -1519,6 +1519,9 @@ is: pinned: Fest færsla reblogged: endurbirt sensitive_content: Viðkvæmt efni + strikes: + errors: + too_late: Það er orðið of sint að áfrýja þessari refsingu tags: does_not_match_previous_name: samsvarar ekki fyrra nafni terms: diff --git a/config/locales/it.yml b/config/locales/it.yml index 7963c2afe..c404ea3ac 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -164,9 +164,9 @@ it: not_subscribed: Non sottoscritto pending: Revisioni in attesa perform_full_suspension: Sospendi - previous_strikes: Provvedimenti precedenti + previous_strikes: Sanzioni precedenti previous_strikes_description_html: - one: Questo account ha una violazione. + one: Questo account ha una sanzione. other: Questo account ha %{count} violazioni. promote: Promuovi protocol: Protocollo @@ -208,7 +208,7 @@ it: silence: Silenzia silenced: Silenziato statuses: Stati - strikes: Provvedimenti precedenti + strikes: Sanzioni precedenti subscribe: Sottoscrivi suspend: Sospendi suspended: Sospeso @@ -597,10 +597,10 @@ it: action_log: Registro di controllo action_taken_by: Azione intrapresa da actions: - delete_description_html: I post segnalati saranno eliminati e la violazione sarà registrata per aiutarti a prendere ulteriori provvedimenti sulle future infrazioni dello stesso account. - mark_as_sensitive_description_html: I contenuti nei post segnalati saranno segnati come sensibili e verrà registrata una violazione per aiutarti a prendere ulteriori provvedimenti sulle future infrazioni dello stesso account. + delete_description_html: I post segnalati saranno eliminati e la sanzione sarà registrata per aiutarti a prendere ulteriori provvedimenti sulle future infrazioni dello stesso account. + mark_as_sensitive_description_html: I contenuti nei post segnalati saranno segnati come sensibili e verrà registrata una sanzione per aiutarti a prendere ulteriori provvedimenti sulle future infrazioni dello stesso account. other_description_html: Vedi altre opzioni per controllare il comportamento dell'account e personalizzare la comunicazione all'account segnalato. - resolve_description_html: Nessuna azione sarà intrapresa contro l'account segnalato, nessuna violazione registrata, e la segnalazione sarà chiusa. + resolve_description_html: Nessuna azione sarà intrapresa contro l'account segnalato, nessuna sanzione registrata, e la segnalazione sarà chiusa. silence_description_html: Il profilo sarà visibile solo a coloro che lo seguono o lo cercano manualmente, limitandone fortemente la raggiungibilità. Può sempre essere annullato. suspend_description_html: Il profilo e tutti i suoi contenuti diventeranno inaccessibili fino a quando non sarà cancellato. L'interazione con l'account sarà impossibile. Annullabile entro 30 giorni. actions_description_html: Decidete quali azioni intraprendere per risolvere la segnalazione. Se si intraprende un'azione punitiva contro l'account segnalato, gli sarà inviata una notifica via e-mail, tranne quando è selezionata la categoria Spam. @@ -964,7 +964,7 @@ it: functional: Il tuo profilo è completamente operativo. pending: La tua richiesta è in attesa di esame da parte del nostro staff. Potrebbe richiedere un po' di tempo. Riceverai una e-mail se la richiesta è approvata. redirecting_to: Il tuo account è inattivo perché attualmente reindirizza a %{acct}. - view_strikes: Visualizza gli avvisi passati contro il tuo profilo + view_strikes: Visualizza le sanzioni precedenti prese nei confronti del tuo account too_fast: Modulo inviato troppo velocemente, riprova. trouble_logging_in: Problemi di accesso? use_security_key: Usa la chiave di sicurezza @@ -1429,7 +1429,7 @@ it: profile: Profilo relationships: Follows e followers statuses_cleanup: Cancellazione automatica dei post - strikes: Avvisi di moderazione + strikes: Sanzioni di moderazione two_factor_authentication: Autenticazione a due fattori webauthn_authentication: Chiavi di sicurezza statuses: diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 6e7b6b0a7..54dcbc9fa 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -611,6 +611,7 @@ ja: placeholder: どのような措置が取られたか、または関連する更新を記述してください… title: メモ notes_description_html: 他のモデレーターと将来の自分にメモを残してください + quick_actions_description_html: 'クイックアクションを実行するかスクロールして報告された通報を確認してください:' remote_user_placeholder: "%{instance}からのリモートユーザー" reopen: 未解決に戻す report: '通報 #%{id}' @@ -1321,6 +1322,11 @@ ja: reports: errors: invalid_rules: 有効なルールを参照していません + rss: + content_warning: '閲覧注意:' + descriptions: + account: "@%{acct}からの公開投稿" + tag: "#%{hashtag}が付けられた公開投稿" scheduled_statuses: over_daily_limit: その日予約できる投稿数 %{limit}を超えています over_total_limit: 予約できる投稿数 %{limit}を超えています diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 124708d34..c16c4f324 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -17,13 +17,13 @@ ko: contact_missing: 미설정 contact_unavailable: 없음 continue_to_web: 웹앱에서 계속하기 - discover_users: 유저 발견하기 + discover_users: 사용자 발견하기 documentation: 문서 federation_hint_html: "%{instance}에 계정을 만드는 것으로 모든 마스토돈 서버, 그리고 호환 되는 모든 서버의 사용자를 팔로우 할 수 있습니다." get_apps: 모바일 앱 사용해 보기 hosted_on: "%{domain}에서 호스팅 되는 마스토돈" instance_actor_flash: | - 이 계정은 가상의 actor로서 개인 유저가 아닌 서버 자체를 나타냅니다. + 이 계정은 가상의 actor로서 개인 사용자가 아닌 서버 자체를 나타냅니다. 이것은 페더레이션을 목적으로 사용 되며 인스턴스 전체를 차단하려 하지 않는 이상 차단하지 않아야 합니다, 그 경우에는 도메인 차단을 사용하세요. learn_more: 자세히 logged_in_as_html: 현재 %{username}으로 로그인 했습니다. @@ -49,7 +49,7 @@ ko: silenced_title: 침묵 된 서버들 suspended: 이 서버의 아무도 팔로우 할 수 없으며, 어떤 데이터도 처리되거나 저장 되지 않고 데이터가 교환 되지도 않습니다. suspended_title: 금지된 서버들 - unavailable_content_html: 마스토돈은 일반적으로 연합우주에 있는 어떤 서버의 유저와도 게시물을 보고 응답을 할 수 있도록 허용합니다. 다음 항목들은 특정한 서버에 대해 만들어 진 예외사항입니다. + unavailable_content_html: 마스토돈은 일반적으로 연합우주에 있는 어떤 서버의 사용자와도 게시물을 보고 응답을 할 수 있도록 허용합니다. 다음 항목들은 특정한 서버에 대해 만들어 진 예외사항입니다. user_count_after: other: 명 user_count_before: 사용자 수 @@ -330,7 +330,7 @@ ko: deleted_status: "(삭제된 게시물)" empty: 로그를 찾을 수 없습니다 filter_by_action: 행동으로 거르기 - filter_by_user: 유저로 거르기 + filter_by_user: 사용자로 거르기 title: 감사 기록 announcements: destroyed_msg: 공지가 성공적으로 삭제되었습니다! @@ -498,8 +498,8 @@ ko: dashboard: instance_accounts_dimension: 제일 많이 팔로우된 계정 instance_accounts_measure: 보관된 계정 - instance_followers_measure: 저쪽을 팔로우 하는 우리의 팔로워 수 - instance_follows_measure: 우리를 팔로우 하는 저쪽의 팔로워 수 + instance_followers_measure: 우리를 팔로우 하는 저쪽의 팔로워 수 + instance_follows_measure: 저쪽을 팔로우 하는 우리의 팔로워 수 instance_languages_dimension: 상위 언어 instance_media_attachments_measure: 보관된 미디어 첨부파일 instance_reports_measure: 이들에 대한 신고 @@ -561,7 +561,7 @@ ko: relays: add_new: 릴레이 추가 delete: 삭제 - description_html: "연합 릴레이는 서버들 사이에서 많은 양의 공개 게시물을 구독하고 중개하는 서버입니다. 이것은 중소 규모의 서버에서 연합우주를 발견하는 데에 도움을 줄 수 있습니다, 이제 로컬 유저들이 다른 서버의 유저들을 수동으로 팔로우 하지 않아도 됩니다." + description_html: "연합 릴레이는 서버들 사이에서 많은 양의 공개 게시물을 구독하고 중개하는 서버입니다. 이것은 중소 규모의 서버에서 연합우주를 발견하는 데에 도움을 줄 수 있습니다, 이제 로컬 사용자들이 다른 서버의 사용자들을 수동으로 팔로우 하지 않아도 됩니다." disable: 비활성화 disabled: 비활성화 됨 enable: 활성화 @@ -646,24 +646,24 @@ ko: settings: activity_api_enabled: desc_html: 주별 로컬에 게시 된 글, 활성 사용자 및 새로운 가입자 수 - title: 유저 활동에 대한 통계 발행 + title: 사용자 활동에 대한 통계 발행 bootstrap_timeline_accounts: - desc_html: 콤마로 여러 유저명을 구분. 이 계정들은 팔로우 추천에 반드시 나타나게 됩니다 + desc_html: 콤마로 여러 사용자명을 구분. 이 계정들은 팔로우 추천에 반드시 나타나게 됩니다 title: 새로운 사용자들에게 추천할 계정들 contact_information: email: 공개할 메일 주소를 입력 - username: 연락 받을 관리자 유저네임 + username: 연락 받을 관리자 사용자명 custom_css: desc_html: 모든 페이지에 적용할 CSS title: 커스텀 CSS default_noindex: - desc_html: 이 설정을 바꾸지 않은 모든 유저들에게 적용 됩니다 - title: 유저들이 기본적으로 검색엔진에 인덱싱 되지 않도록 합니다 + desc_html: 이 설정을 바꾸지 않은 모든 사용자들에게 적용 됩니다 + title: 사용자들이 기본적으로 검색엔진에 인덱싱 되지 않도록 합니다 domain_blocks: all: 모두에게 disabled: 아무에게도 안 함 title: 도메인 차단 보여주기 - users: 로그인 한 유저에게 + users: 로그인 한 사용자에게 domain_blocks_rationale: title: 사유 보여주기 hero: @@ -679,14 +679,14 @@ ko: desc_html: 민감한 미디어로 설정되었더라도 다른 웹사이트에서 링크 미리보기에 썸네일을 보여줍니다 title: 민감한 미디어를 오픈그래프 미리보기에 보여주기 profile_directory: - desc_html: 유저들이 발견 될 수 있도록 허용 + desc_html: 사용자들이 발견 될 수 있도록 허용 title: 프로필 책자 활성화 registrations: closed_message: desc_html: 신규 등록을 받지 않을 때 프론트 페이지에 표시됩니다. HTML 태그를 사용할 수 있습니다 title: 신규 등록 정지 시 메시지 deletion: - desc_html: 유저가 자신의 계정을 삭제할 수 있도록 허용합니다 + desc_html: 사용자가 자신의 계정을 삭제할 수 있도록 허용합니다 title: 계정 삭제를 허가함 min_invite_role: disabled: 아무도 못 하게 @@ -704,7 +704,7 @@ ko: desc_html: 활성화 되면 프리뷰 페이지에서 페디버스의 모든 게시물을 표시합니다. 비활성화시 로컬에 있는 게시물만 표시 됩니다. title: 타임라인 프리뷰에 알려진 페디버스 표시하기 show_staff_badge: - desc_html: 유저 페이지에 스태프 배지를 표시합니다 + desc_html: 사용자 페이지에 스태프 배지를 표시합니다 title: 스태프 배지 표시 site_description: desc_html: API의 소개문에 사용 됩니다.이 마스토돈 서버의 특별한 점 등을 설명하세요. HTML 태그, 주로 <a>, <em> 같은 것을 사용 가능합니다. @@ -915,7 +915,7 @@ ko: description: prefix_invited_by_user: "@%{name} 님이 당신을 이 마스토돈 서버로 초대했습니다!" prefix_sign_up: 마스토돈에 가입하세요! - suffix: 계정 하나로 사람들을 팔로우 하고, 게시물을 작성하며 마스토돈을 포함한 다른 어떤 서버의 유저와도 메시지를 주고 받을 수 있습니다! + suffix: 계정 하나로 사람들을 팔로우 하고, 게시물을 작성하며 마스토돈을 포함한 다른 어떤 서버의 사용자와도 메시지를 주고 받을 수 있습니다! didnt_get_confirmation: 확인 메일을 받지 못하셨습니까? dont_have_your_security_key: 보안 키가 없습니까? forgot_password: 비밀번호를 잊어버리셨습니까? @@ -960,7 +960,7 @@ ko: following: '성공! 당신은 다음 계정을 팔로우 하고 있습니다:' post_follow: close: 혹은, 당신은 이 윈도우를 닫을 수 있습니다. - return: 유저 프로필 보기 + return: 사용자 프로필 보기 web: 웹으로 가기 title: "%{acct} 를 팔로우" challenge: @@ -1009,7 +1009,7 @@ ko: username_unavailable: 당신의 계정명은 앞으로 사용할 수 없습니다 directories: directory: 프로필 책자 - explanation: 관심사에 대한 유저들을 발견합니다 + explanation: 관심사에 대한 사용자들을 발견합니다 explore_mastodon: "%{title} 탐사하기" disputes: strikes: @@ -1059,7 +1059,7 @@ ko: '503': 이 페이지는 임시적인 서버 문제로 인해 제공 될 수 없습니다. noscript_html: 마스토돈을 사용하기 위해서는 자바스크립트를 켜 주십시오. 아니면 네이티브 앱 중 하나를 사용할 수 있습니다. existing_username_validator: - not_found: 해당 유저네임에 대한 로컬 유저를 찾을 수 없습니다 + not_found: 해당 사용자명에 대한 로컬 유저를 찾을 수 없습니다 not_found_multiple: "%{usernames}를 찾을 수 없습니다" exports: archive_takeout: @@ -1315,7 +1315,7 @@ ko: relationship: 관계 remove_selected_domains: 선택한 도메인의 모든 팔로워 삭제 remove_selected_followers: 선택한 팔로워 삭제 - remove_selected_follows: 선택한 유저들을 팔로우 해제 + remove_selected_follows: 선택한 사용자들을 팔로우 해제 status: 계정 상태 remote_follow: acct: 당신이 사용하는 아이디@도메인을 입력해 주십시오 diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 5123a2d6f..8b2d2787d 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -244,7 +244,7 @@ ru: approve_appeal: Одобрить обжалование approve_user: Утвердить assigned_to_self_report: Присвоение жалоб - change_email_user: Изменение e-mail пользователей + change_email_user: Изменение эл. почты пользователя confirm_user: Подтверждение пользователей create_account_warning: Выдача предупреждения create_announcement: Создание объявлений @@ -292,6 +292,7 @@ ru: update_domain_block: Изменение блокировки домена update_status: Изменение постов actions: + approve_appeal_html: "%{name} одобрил апелляцию на умеренное решение от %{target}" approve_user_html: "%{name} утвердил(а) регистрацию %{target}" assigned_to_self_report_html: "%{name} назначил(а) себя для решения жалобы %{target}" change_email_user_html: "%{name} сменил(а) e-mail пользователя %{target}" @@ -323,6 +324,7 @@ ru: enable_user_html: "%{name} разморозил(а) пользователя %{target}" memorialize_account_html: "%{name} перевел(а) учётную запись пользователя %{target} в статус памятника" promote_user_html: "%{name} повысил(а) пользователя %{target}" + reject_appeal_html: "%{name} отклонил апелляцию на модерацию от %{target}" reject_user_html: "%{name} отклонил(а) регистрацию %{target}" remove_avatar_user_html: "%{name} убрал(а) аватарку пользователя %{target}" reopen_report_html: "%{name} повторно открыл(а) жалобу %{target}" @@ -466,7 +468,9 @@ ru: domain: Домен new: create: Создать блокировку + resolve: Отрезолвенные домены title: Новая блокировка по домену + no_email_domain_block_selected: Блоки домена электронной почты не были изменены, так как не были выбраны resolved_through_html: Разрешено через %{domain} title: Блокировка e-mail доменов follow_recommendations: @@ -821,6 +825,9 @@ ru: title: Управление шаблонами предупреждений admin_mailer: new_appeal: + actions: + silence: ограничить учётную запись + suspend: приостановить действие учётной записи subject: "%{username} обжалует решение модерации на %{instance}" new_pending_account: body: Ниже указана информация учётной записи. Вы можете одобрить или отклонить заявку. diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index 7c1f284ec..9d82e43a4 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -11,7 +11,7 @@ ko: title: 선택사항. 수신자에게는 보이지 않습니다 admin_account_action: include_statuses: 사용자는 어떤 게시물에 대해 경고나 조치가 취해졌는지 볼 수 있게 됩니다 - send_email_notification: 유저는 어떤 일이 일어났는 지에 대한 설명을 받게 됩니다 + send_email_notification: 사용자는 어떤 일이 일어났는 지에 대한 설명을 받게 됩니다 text_html: 선택사항. 게시물 문법을 사용할 수 있습니다. 경고 틀을 추가하여 시간을 절약할 수 있습니다 type_html: "%{acct}에 대해 취할 행동 선택" types: @@ -43,7 +43,7 @@ ko: header: PNG, GIF 혹은 JPG. 최대 %{size}. %{dimensions}px로 축소 됨 inbox_url: 사용 할 릴레이 서버의 프론트페이지에서 URL을 복사합니다 irreversible: 필터링 된 게시물은 나중에 필터가 사라지더라도 돌아오지 않게 됩니다 - locale: 유저 인터페이스, 이메일, 푸시 알림 언어 + locale: 사용자 인터페이스, 이메일, 푸시 알림 언어 locked: 팔로우 요청을 승인함으로써 누가 당신을 팔로우 할 수 있는지를 수동으로 제어합니다. password: 최소 8글자 phrase: 게시물 내용이나 열람주의 내용 안에서 대소문자 구분 없이 매칭 됩니다 @@ -59,7 +59,7 @@ ko: setting_show_application: 당신이 게시물을 작성하는데에 사용한 앱이 게시물의 상세정보에 표시 됩니다 setting_use_blurhash: 그라디언트는 숨겨진 내용의 색상을 기반으로 하지만 상세 내용은 보이지 않게 합니다 setting_use_pending_items: 타임라인의 새 게시물을 자동으로 보여 주는 대신, 클릭해서 나타내도록 합니다 - username: 당신의 유저네임은 %{domain} 안에서 유일해야 합니다 + username: 당신의 사용자명은 %{domain} 안에서 유일해야 합니다 whole_word: 키워드가 영문과 숫자로만 이루어 진 경우, 단어 전체에 매칭 되었을 때에만 작동하게 합니다 domain_allow: domain: 이 도메인은 이 서버에서 데이터를 가져갈 수 있고 이 도메인에서 보내진 데이터는 처리되고 저장 됩니다 @@ -105,7 +105,7 @@ ko: title: 제목 admin_account_action: include_statuses: 신고된 게시물을 이메일에 포함 - send_email_notification: 이메일로 유저에게 알리기 + send_email_notification: 이메일로 사용자에게 알리기 text: 커스텀 경고 type: 조치 types: @@ -179,8 +179,8 @@ ko: severity: 심각도 sign_in_token_attempt: 보안 코드 type: 불러오기 종류 - username: 유저 이름 - username_or_email: 유저네임 또는 이메일 + username: 사용자명 + username_or_email: 사용자명 또는 이메일 whole_word: 단어 전체에 매칭 email_domain_block: with_dns_records: 도메인의 IP와 MX 레코드 값을 포함 diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 1280e164c..d846c8b92 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -1573,6 +1573,9 @@ sl: pinned: Pripeta objava reblogged: izpostavljeno sensitive_content: Občutljiva vsebina + strikes: + errors: + too_late: Prepozno je, da bi se pritožili na ta ukrep tags: does_not_match_previous_name: se ne ujema s prejšnjim imenom terms: diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 9812d33bb..c724b0ebc 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -579,7 +579,7 @@ vi: notes: other: "%{count} kiểm duyệt" action_log: Nhật ký kiểm duyệt - action_taken_by: Hành động được thực hiện bởi + action_taken_by: Quyết định bởi actions: delete_description_html: Những tút bị báo cáo sẽ được xóa và 1 lần cảnh cáo sẽ được ghi lại để giúp bạn lưu ý về tài khoản này trong tương lai. mark_as_sensitive_description_html: Media trong các tút bị báo cáo sẽ được đánh dấu là nhạy cảm và 1 lần cảnh cáo sẽ được ghi lại để giúp bạn nắm bắt nhanh những vi phạm của cùng một tài khoản. @@ -1009,7 +1009,7 @@ vi: explore_mastodon: Thành viên %{title} disputes: strikes: - action_taken: Hành động thực hiện + action_taken: Hành động áp dụng appeal: Khiếu nại appeal_approved: Khiếu nại đã được chấp nhận và cảnh cáo không còn giá trị appeal_rejected: Khiếu nại bị từ chối @@ -1602,7 +1602,7 @@ vi: mark_statuses_as_sensitive: Vài tút của bạn đã bị kiểm duyệt viên %{instance} đánh dấu nhạy cảm. Mọi người cần nhấn vào media để xem nó. Bạn có thể tự đánh dấu tài khoản của bạn là nhạy cảm. sensitive: Từ giờ trở đi, tất cả các media của bạn bạn tải lên sẽ được đánh dấu là nhạy cảm và ẩn đằng sau cảnh báo nhấp chuột. silence: Bạn vẫn có thể sử dụng tài khoản của mình, nhưng chỉ những người đang theo dõi bạn mới thấy bài đăng của bạn. Bạn cũng bị loại khỏi các tính năng khám phá khác. Tuy nhiên, những người khác vẫn có thể theo dõi bạn. - suspend: Bạn không còn có thể sử dụng tài khoản của bạn, hồ sơ và các dữ liệu khác không còn có thể truy cập được. Bạn vẫn có thể đăng nhập để yêu cầu sao lưu dữ liệu của mình cho đến khi dữ liệu bị xóa hoàn toàn trong khoảng 30 ngày, nhưng chúng tôi sẽ giữ lại một số dữ liệu cơ bản để ngăn bạn tránh bị đình chỉ. + suspend: Bạn không còn có thể sử dụng tài khoản của bạn, hồ sơ và các dữ liệu khác không còn có thể truy cập được. Trong vòng 30 ngày, bạn vẫn có thể đăng nhập để yêu cầu bản sao dữ liệu của mình cho đến khi dữ liệu bị xóa hoàn toàn, nhưng chúng tôi sẽ giữ lại một số dữ liệu cơ bản để ngăn bạn thoát khỏi việc vô hiệu hóa. reason: 'Lý do:' statuses: 'Tút lưu ý:' subject: From e925b06721057f83f2e3e8e7bdb21f39318b90a2 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Fri, 20 May 2022 02:26:19 +0900 Subject: [PATCH 079/652] Fix languages dropdown on light theme (#18460) --- .../styles/mastodon-light/diff.scss | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss index 2c8162b28..61c2d0d66 100644 --- a/app/javascript/styles/mastodon-light/diff.scss +++ b/app/javascript/styles/mastodon-light/diff.scss @@ -330,6 +330,7 @@ html { .actions-modal ul li:not(:empty) a:focus button, .actions-modal ul li:not(:empty) a:hover, .actions-modal ul li:not(:empty) a:hover button, +.language-dropdown__dropdown__results__item.active, .admin-wrapper .sidebar ul .simple-navigation-active-leaf a, .simple_form .block-button, .simple_form .button, @@ -337,6 +338,14 @@ html { color: $white; } +.language-dropdown__dropdown__results__item .language-dropdown__dropdown__results__item__common-name { + color: lighten($ui-base-color, 8%); +} + +.language-dropdown__dropdown__results__item.active .language-dropdown__dropdown__results__item__common-name { + color: darken($ui-base-color, 12%); +} + .dropdown-menu__separator, .dropdown-menu__item.edited-timestamp__history__item, .dropdown-menu__container__header, @@ -371,12 +380,13 @@ html { border: 1px solid lighten($ui-base-color, 8%); } -.reactions-bar__item { - &:hover, - &:focus, - &:active { - background-color: $ui-base-color; - } +.reactions-bar__item:hover, +.reactions-bar__item:focus, +.reactions-bar__item:active, +.language-dropdown__dropdown__results__item:hover, +.language-dropdown__dropdown__results__item:focus, +.language-dropdown__dropdown__results__item:active { + background-color: $ui-base-color; } .reactions-bar__item.active { From dfb9e6dab1b119c907dece5555408c9b98ec8f2c Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Fri, 20 May 2022 11:39:05 +0900 Subject: [PATCH 080/652] Disable transpile to older iOS versions (#18462) --- .browserslistrc | 9 +++++++++ .devcontainer/devcontainer.json | 3 ++- package.json | 6 ------ 3 files changed, 11 insertions(+), 7 deletions(-) create mode 100644 .browserslistrc diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 000000000..d5734664c --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,9 @@ +[production] +defaults +not IE 11 +not dead + +[development] +last 1 chrome version +last 1 firefox version +last 1 safari version diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 628efc8ec..9d9e54d4f 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -11,7 +11,8 @@ "extensions": [ "EditorConfig.EditorConfig", "dbaeumer.vscode-eslint", - "rebornix.Ruby" + "rebornix.Ruby", + "webben.browserslist" ], // Use 'forwardPorts' to make a list of ports inside the container available locally. diff --git a/package.json b/package.json index 4d44cee2b..90fc54edc 100644 --- a/package.json +++ b/package.json @@ -22,12 +22,6 @@ "type": "git", "url": "https://github.com/mastodon/mastodon.git" }, - "browserslist": [ - "last 2 versions", - "not IE 11", - "iOS >= 9", - "not dead" - ], "private": true, "dependencies": { "@babel/core": "^7.17.12", From 54bb659ad14fda8d3427752d2c99716420997d6e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 21 May 2022 15:43:36 +0900 Subject: [PATCH 081/652] Bump sidekiq from 6.4.1 to 6.4.2 (#18091) Bumps [sidekiq](https://github.com/mperham/sidekiq) from 6.4.1 to 6.4.2. - [Release notes](https://github.com/mperham/sidekiq/releases) - [Changelog](https://github.com/mperham/sidekiq/blob/main/Changes.md) - [Commits](https://github.com/mperham/sidekiq/compare/v6.4.1...v6.4.2) --- updated-dependencies: - dependency-name: sidekiq dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 0600862df..e12fdc237 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -600,7 +600,7 @@ GEM railties (>= 4.0.0) securecompare (1.0.0) semantic_range (3.0.0) - sidekiq (6.4.1) + sidekiq (6.4.2) connection_pool (>= 2.2.2) rack (~> 2.0) redis (>= 4.2.0) From a9b64b24d6c076cb96a66307c07d4f0158dc07da Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 22 May 2022 22:16:43 +0200 Subject: [PATCH 082/652] Change algorithm of `tootctl search deploy` to improve performance (#18463) --- app/chewy/accounts_index.rb | 6 +- app/chewy/statuses_index.rb | 2 + app/chewy/tags_index.rb | 8 +- app/lib/importer/accounts_index_importer.rb | 30 +++++ app/lib/importer/base_importer.rb | 87 +++++++++++++ app/lib/importer/statuses_index_importer.rb | 89 ++++++++++++++ app/lib/importer/tags_index_importer.rb | 26 ++++ app/models/trends/history.rb | 20 +-- lib/mastodon/search_cli.rb | 129 ++++++-------------- 9 files changed, 294 insertions(+), 103 deletions(-) create mode 100644 app/lib/importer/accounts_index_importer.rb create mode 100644 app/lib/importer/base_importer.rb create mode 100644 app/lib/importer/statuses_index_importer.rb create mode 100644 app/lib/importer/tags_index_importer.rb diff --git a/app/chewy/accounts_index.rb b/app/chewy/accounts_index.rb index 763958a3f..e38e14a10 100644 --- a/app/chewy/accounts_index.rb +++ b/app/chewy/accounts_index.rb @@ -23,7 +23,7 @@ class AccountsIndex < Chewy::Index }, } - index_scope ::Account.searchable.includes(:account_stat), delete_if: ->(account) { account.destroyed? || !account.searchable? } + index_scope ::Account.searchable.includes(:account_stat) root date_detection: false do field :id, type: 'long' @@ -36,8 +36,8 @@ class AccountsIndex < Chewy::Index field :edge_ngram, type: 'text', analyzer: 'edge_ngram', search_analyzer: 'content' end - field :following_count, type: 'long', value: ->(account) { account.following.local.count } - field :followers_count, type: 'long', value: ->(account) { account.followers.local.count } + field :following_count, type: 'long', value: ->(account) { account.following_count } + field :followers_count, type: 'long', value: ->(account) { account.followers_count } field :last_status_at, type: 'date', value: ->(account) { account.last_status_at || account.created_at } end end diff --git a/app/chewy/statuses_index.rb b/app/chewy/statuses_index.rb index c20009879..6dd4fb18b 100644 --- a/app/chewy/statuses_index.rb +++ b/app/chewy/statuses_index.rb @@ -33,6 +33,8 @@ class StatusesIndex < Chewy::Index }, } + # We do not use delete_if option here because it would call a method that we + # expect to be called with crutches without crutches, causing n+1 queries index_scope ::Status.unscoped.kept.without_reblogs.includes(:media_attachments, :preloadable_poll) crutch :mentions do |collection| diff --git a/app/chewy/tags_index.rb b/app/chewy/tags_index.rb index a5b139bca..df3d9e4cc 100644 --- a/app/chewy/tags_index.rb +++ b/app/chewy/tags_index.rb @@ -23,7 +23,11 @@ class TagsIndex < Chewy::Index }, } - index_scope ::Tag.listable, delete_if: ->(tag) { tag.destroyed? || !tag.listable? } + index_scope ::Tag.listable + + crutch :time_period do + 7.days.ago.to_date..0.days.ago.to_date + end root date_detection: false do field :name, type: 'text', analyzer: 'content' do @@ -31,7 +35,7 @@ class TagsIndex < Chewy::Index end field :reviewed, type: 'boolean', value: ->(tag) { tag.reviewed? } - field :usage, type: 'long', value: ->(tag) { tag.history.reduce(0) { |total, day| total + day.accounts } } + field :usage, type: 'long', value: ->(tag, crutches) { tag.history.aggregate(crutches.time_period).accounts } field :last_status_at, type: 'date', value: ->(tag) { tag.last_status_at || tag.created_at } end end diff --git a/app/lib/importer/accounts_index_importer.rb b/app/lib/importer/accounts_index_importer.rb new file mode 100644 index 000000000..792a31b1b --- /dev/null +++ b/app/lib/importer/accounts_index_importer.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +class Importer::AccountsIndexImporter < Importer::BaseImporter + def import! + scope.includes(:account_stat).find_in_batches(batch_size: @batch_size) do |tmp| + in_work_unit(tmp) do |accounts| + bulk = Chewy::Index::Import::BulkBuilder.new(index, to_index: accounts).bulk_body + + indexed = bulk.select { |entry| entry[:index] }.size + deleted = bulk.select { |entry| entry[:delete] }.size + + Chewy::Index::Import::BulkRequest.new(index).perform(bulk) + + [indexed, deleted] + end + end + + wait! + end + + private + + def index + AccountsIndex + end + + def scope + Account.searchable + end +end diff --git a/app/lib/importer/base_importer.rb b/app/lib/importer/base_importer.rb new file mode 100644 index 000000000..ea522c600 --- /dev/null +++ b/app/lib/importer/base_importer.rb @@ -0,0 +1,87 @@ +# frozen_string_literal: true + +class Importer::BaseImporter + # @param [Integer] batch_size + # @param [Concurrent::ThreadPoolExecutor] executor + def initialize(batch_size:, executor:) + @batch_size = batch_size + @executor = executor + @wait_for = Concurrent::Set.new + end + + # Callback to run when a concurrent work unit completes + # @param [Proc] + def on_progress(&block) + @on_progress = block + end + + # Callback to run when a concurrent work unit fails + # @param [Proc] + def on_failure(&block) + @on_failure = block + end + + # Reduce resource usage during and improve speed of indexing + def optimize_for_import! + Chewy.client.indices.put_settings index: index.index_name, body: { index: { refresh_interval: -1 } } + end + + # Restore original index settings + def optimize_for_search! + Chewy.client.indices.put_settings index: index.index_name, body: { index: { refresh_interval: index.settings_hash[:settings][:index][:refresh_interval] } } + end + + # Estimate the amount of documents that would be indexed. Not exact! + # @returns [Integer] + def estimate! + ActiveRecord::Base.connection_pool.with_connection { |connection| connection.select_one("SELECT reltuples AS estimate FROM pg_class WHERE relname = '#{index.adapter.target.table_name}'")['estimate'].to_i } + end + + # Import data from the database into the index + def import! + raise NotImplementedError + end + + # Remove documents from the index that no longer exist in the database + def clean_up! + index.scroll_batches do |documents| + ids = documents.map { |doc| doc['_id'] } + existence_map = index.adapter.target.where(id: ids).pluck(:id).each_with_object({}) { |id, map| map[id.to_s] = true } + tmp = ids.reject { |id| existence_map[id] } + + next if tmp.empty? + + in_work_unit(tmp) do |deleted_ids| + bulk = Chewy::Index::Import::BulkBuilder.new(index, delete: deleted_ids).bulk_body + + Chewy::Index::Import::BulkRequest.new(index).perform(bulk) + + [0, bulk.size] + end + end + + wait! + end + + protected + + def in_work_unit(*args, &block) + work_unit = Concurrent::Promises.future_on(@executor, *args, &block) + + work_unit.on_fulfillment!(&@on_progress) + work_unit.on_rejection!(&@on_failure) + work_unit.on_resolution! { @wait_for.delete(work_unit) } + + @wait_for << work_unit + rescue Concurrent::RejectedExecutionError + sleep(0.1) && retry # Backpressure + end + + def wait! + Concurrent::Promises.zip(*@wait_for).wait + end + + def index + raise NotImplementedError + end +end diff --git a/app/lib/importer/statuses_index_importer.rb b/app/lib/importer/statuses_index_importer.rb new file mode 100644 index 000000000..7c6532560 --- /dev/null +++ b/app/lib/importer/statuses_index_importer.rb @@ -0,0 +1,89 @@ +# frozen_string_literal: true + +class Importer::StatusesIndexImporter < Importer::BaseImporter + def import! + # The idea is that instead of iterating over all statuses in the database + # and calculating the searchable_by for each of them (majority of which + # would be empty), we approach the index from the other end + + scopes.each do |scope| + # We could be tempted to keep track of status IDs we have already processed + # from a different scope to avoid indexing them multiple times, but that + # could end up being a very large array + + scope.find_in_batches(batch_size: @batch_size) do |tmp| + in_work_unit(tmp.map(&:status_id)) do |status_ids| + bulk = ActiveRecord::Base.connection_pool.with_connection do + Chewy::Index::Import::BulkBuilder.new(index, to_index: Status.includes(:media_attachments, :preloadable_poll).where(id: status_ids)).bulk_body + end + + indexed = 0 + deleted = 0 + + # We can't use the delete_if proc to do the filtering because delete_if + # is called before rendering the data and we need to filter based + # on the results of the filter, so this filtering happens here instead + bulk.map! do |entry| + new_entry = begin + if entry[:index] && entry.dig(:index, :data, 'searchable_by').blank? + { delete: entry[:index].except(:data) } + else + entry + end + end + + if new_entry[:index] + indexed += 1 + else + deleted += 1 + end + + new_entry + end + + Chewy::Index::Import::BulkRequest.new(index).perform(bulk) + + [indexed, deleted] + end + end + end + + wait! + end + + private + + def index + StatusesIndex + end + + def scopes + [ + local_statuses_scope, + local_mentions_scope, + local_favourites_scope, + local_votes_scope, + local_bookmarks_scope, + ] + end + + def local_mentions_scope + Mention.where(account: Account.local, silent: false).select(:id, :status_id) + end + + def local_favourites_scope + Favourite.where(account: Account.local).select(:id, :status_id) + end + + def local_bookmarks_scope + Bookmark.select(:id, :status_id) + end + + def local_votes_scope + Poll.joins(:votes).where(votes: { account: Account.local }).select('polls.id, polls.status_id') + end + + def local_statuses_scope + Status.local.select('id, coalesce(reblog_of_id, id) as status_id') + end +end diff --git a/app/lib/importer/tags_index_importer.rb b/app/lib/importer/tags_index_importer.rb new file mode 100644 index 000000000..f5bd8f052 --- /dev/null +++ b/app/lib/importer/tags_index_importer.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +class Importer::TagsIndexImporter < Importer::BaseImporter + def import! + index.adapter.default_scope.find_in_batches(batch_size: @batch_size) do |tmp| + in_work_unit(tmp) do |tags| + bulk = Chewy::Index::Import::BulkBuilder.new(index, to_index: tags).bulk_body + + indexed = bulk.select { |entry| entry[:index] }.size + deleted = bulk.select { |entry| entry[:delete] }.size + + Chewy::Index::Import::BulkRequest.new(index).perform(bulk) + + [indexed, deleted] + end + end + + wait! + end + + private + + def index + TagsIndex + end +end diff --git a/app/models/trends/history.rb b/app/models/trends/history.rb index 608e33792..74723e35c 100644 --- a/app/models/trends/history.rb +++ b/app/models/trends/history.rb @@ -11,11 +11,11 @@ class Trends::History end def uses - redis.mget(*@days.map { |day| day.key_for(:uses) }).map(&:to_i).sum + with_redis { |redis| redis.mget(*@days.map { |day| day.key_for(:uses) }).map(&:to_i).sum } end def accounts - redis.pfcount(*@days.map { |day| day.key_for(:accounts) }) + with_redis { |redis| redis.pfcount(*@days.map { |day| day.key_for(:accounts) }) } end end @@ -33,19 +33,21 @@ class Trends::History attr_reader :day def accounts - redis.pfcount(key_for(:accounts)) + with_redis { |redis| redis.pfcount(key_for(:accounts)) } end def uses - redis.get(key_for(:uses))&.to_i || 0 + with_redis { |redis| redis.get(key_for(:uses))&.to_i || 0 } end def add(account_id) - redis.pipelined do - redis.incrby(key_for(:uses), 1) - redis.pfadd(key_for(:accounts), account_id) - redis.expire(key_for(:uses), EXPIRE_AFTER) - redis.expire(key_for(:accounts), EXPIRE_AFTER) + with_redis do |redis| + redis.pipelined do |pipeline| + pipeline.incrby(key_for(:uses), 1) + pipeline.pfadd(key_for(:accounts), account_id) + pipeline.expire(key_for(:uses), EXPIRE_AFTER) + pipeline.expire(key_for(:accounts), EXPIRE_AFTER) + end end end diff --git a/lib/mastodon/search_cli.rb b/lib/mastodon/search_cli.rb index 74f980ba1..b579ebc14 100644 --- a/lib/mastodon/search_cli.rb +++ b/lib/mastodon/search_cli.rb @@ -16,19 +16,21 @@ module Mastodon StatusesIndex, ].freeze - option :concurrency, type: :numeric, default: 2, aliases: [:c], desc: 'Workload will be split between this number of threads' - option :batch_size, type: :numeric, default: 1_000, aliases: [:b], desc: 'Number of records in each batch' + option :concurrency, type: :numeric, default: 5, aliases: [:c], desc: 'Workload will be split between this number of threads' + option :batch_size, type: :numeric, default: 100, aliases: [:b], desc: 'Number of records in each batch' option :only, type: :array, enum: %w(accounts tags statuses), desc: 'Only process these indices' + option :import, type: :boolean, default: true, desc: 'Import data from the database to the index' + option :clean, type: :boolean, default: true, desc: 'Remove outdated documents from the index' desc 'deploy', 'Create or upgrade Elasticsearch indices and populate them' long_desc <<~LONG_DESC If Elasticsearch is empty, this command will create the necessary indices and then import data from the database into those indices. This command will also upgrade indices if the underlying schema has been - changed since the last run. + changed since the last run. Index upgrades erase index data. Even if creating or upgrading indices is not necessary, data from the - database will be imported into the indices. + database will be imported into the indices, unless overriden with --no-import. LONG_DESC def deploy if options[:concurrency] < 1 @@ -49,7 +51,9 @@ module Mastodon end end - progress = ProgressBar.create(total: nil, format: '%t%c/%u |%b%i| %e (%r docs/s)', autofinish: false) + 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) # First, ensure all indices are created and have the correct # structure, so that live data can already be written @@ -59,99 +63,46 @@ module Mastodon index.specification.lock! end + progress.title = 'Estimating workload ' + progress.total = indices.sum { |index| importers[index].estimate! } + reset_connection_pools! - pool = Concurrent::FixedThreadPool.new(options[:concurrency]) - added = Concurrent::AtomicFixnum.new(0) - removed = Concurrent::AtomicFixnum.new(0) + added = 0 + removed = 0 - progress.title = 'Estimating workload ' - - # Estimate the amount of data that has to be imported first - progress.total = indices.sum { |index| index.adapter.default_scope.count } - - # Now import all the actual data. Mind that unlike chewy:sync, we don't - # fetch and compare all record IDs from the database and the index to - # find out which to add and which to remove from the index. Because with - # potentially millions of rows, the memory footprint of such a calculation - # is uneconomical. So we only ever add. indices.each do |index| - progress.title = "Importing #{index} " - batch_size = options[:batch_size] - slice_size = (batch_size / options[:concurrency]).ceil + importer = importers[index] + importer.optimize_for_import! - index.adapter.default_scope.reorder(nil).find_in_batches(batch_size: batch_size) do |batch| - futures = [] - - batch.each_slice(slice_size) do |records| - futures << Concurrent::Future.execute(executor: pool) do - begin - if !progress.total.nil? && progress.progress + records.size > progress.total - # The number of items has changed between start and now, - # since there is no good way to predict the final count from - # here, just change the progress bar to an indeterminate one - - progress.total = nil - end - - grouped_records = nil - bulk_body = nil - index_count = 0 - delete_count = 0 - - ActiveRecord::Base.connection_pool.with_connection do - grouped_records = records.to_a.group_by do |record| - index.adapter.send(:delete_from_index?, record) ? :delete : :to_index - end - - bulk_body = Chewy::Index::Import::BulkBuilder.new(index, **grouped_records).bulk_body - end - - index_count = grouped_records[:to_index].size if grouped_records.key?(:to_index) - delete_count = grouped_records[:delete].size if grouped_records.key?(:delete) - - # The following is an optimization for statuses specifically, since - # we want to de-index statuses that cannot be searched by anybody, - # but can't use Chewy's delete_if logic because it doesn't use - # crutches and our searchable_by logic depends on them - if index == StatusesIndex - bulk_body.map! do |entry| - if entry[:to_index] && entry.dig(:to_index, :data, 'searchable_by').blank? - index_count -= 1 - delete_count += 1 - - { delete: entry[:to_index].except(:data) } - else - entry - end - end - end - - Chewy::Index::Import::BulkRequest.new(index).perform(bulk_body) - - progress.progress += records.size - - added.increment(index_count) - removed.increment(delete_count) - - sleep 1 - rescue => e - progress.log pastel.red("Error importing #{index}: #{e}") - ensure - RedisConfiguration.pool.checkin if Thread.current[:redis] - Thread.current[:redis] = nil - end - end - end - - futures.map(&:value) + importer.on_progress do |(indexed, deleted)| + progress.total = nil if progress.progress + indexed + deleted > progress.total + progress.progress += indexed + deleted + added += indexed + removed += deleted end + + importer.on_failure do |reason| + progress.log(pastel.red("Error while importing #{index}: #{reason}")) + end + + if options[:import] + progress.title = "Importing #{index} " + importer.import! + end + + if options[:clean] + progress.title = "Cleaning #{index} " + importer.clean_up! + end + ensure + importer.optimize_for_search! end - progress.title = '' - progress.stop + progress.title = 'Done! ' + progress.finish - say("Indexed #{added.value} records, de-indexed #{removed.value}", :green, true) + say("Indexed #{added} records, de-indexed #{removed}", :green, true) end end end From e5997a195602624efdb366e9f09ffa377e859580 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 23 May 2022 20:38:29 +0200 Subject: [PATCH 083/652] Fix warning an account outside of a report closing all reports for that account (#18387) * Fix warning an account outside of a report closing all reports for that account * Make it clear what actions solve other reports * Revert "Make it clear what actions solve other reports" This reverts commit ad006de821f72e75480701298d13f0945b509059. --- app/models/admin/account_action.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models/admin/account_action.rb b/app/models/admin/account_action.rb index 237975880..aed3bc0c7 100644 --- a/app/models/admin/account_action.rb +++ b/app/models/admin/account_action.rb @@ -164,8 +164,8 @@ class Admin::AccountAction def reports @reports ||= begin - if type == 'none' && with_report? - [report] + if type == 'none' + with_report? ? [report] : [] else Report.where(target_account: target_account).unresolved end From 96f29ce91ad622a0127bc3c3bf2dc503062ed0dc Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 24 May 2022 16:33:18 +0200 Subject: [PATCH 084/652] New Crowdin updates (#18458) * New translations en.yml (Ido) * New translations en.json (Ido) * New translations doorkeeper.en.yml (Ido) * New translations devise.en.yml (Ido) * New translations simple_form.en.yml (Ido) * New translations doorkeeper.en.yml (Ido) * New translations simple_form.en.yml (Ido) * New translations en.yml (Ido) * New translations en.json (Ido) * New translations doorkeeper.en.yml (Ido) * New translations simple_form.en.yml (Ido) * New translations en.yml (Ido) * New translations en.json (Ido) * New translations en.yml (Ido) * New translations en.json (Ido) * New translations doorkeeper.en.yml (Ido) * New translations simple_form.en.yml (Ido) * New translations en.json (Esperanto) * New translations en.yml (Esperanto) * New translations en.json (Esperanto) * New translations doorkeeper.en.yml (Esperanto) * New translations en.json (Esperanto) * New translations en.yml (Ido) * New translations en.json (Ido) * New translations en.json (Ido) * New translations doorkeeper.en.yml (Ido) * New translations en.yml (Ido) * New translations en.json (Ido) * New translations simple_form.en.yml (Ido) * New translations en.json (Armenian) * New translations en.json (Armenian) * New translations en.json (Armenian) * New translations en.json (Scottish Gaelic) * New translations en.yml (Ido) * New translations simple_form.en.yml (Ido) * New translations en.yml (Ido) * New translations simple_form.en.yml (Ido) * New translations en.yml (Russian) * New translations en.json (Estonian) * New translations en.json (Estonian) * New translations en.json (Estonian) * New translations en.json (Estonian) * New translations en.yml (Estonian) * New translations en.json (Estonian) * New translations en.json (Estonian) * New translations en.yml (Estonian) * New translations en.json (Estonian) * New translations en.yml (Estonian) * New translations en.json (Estonian) * New translations en.json (Estonian) * New translations en.yml (Russian) * New translations en.yml (Russian) * New translations simple_form.en.yml (Russian) * New translations en.yml (Russian) * New translations simple_form.en.yml (Russian) * New translations en.json (Sorani (Kurdish)) * New translations en.json (Sorani (Kurdish)) * New translations en.json (Sorani (Kurdish)) * New translations activerecord.en.yml (Sorani (Kurdish)) * New translations doorkeeper.en.yml (Sorani (Kurdish)) * New translations en.yml (Sorani (Kurdish)) * New translations doorkeeper.en.yml (Sorani (Kurdish)) * New translations en.yml (Sorani (Kurdish)) * New translations en.yml (Sorani (Kurdish)) * New translations en.yml (Sorani (Kurdish)) * New translations en.yml (Sorani (Kurdish)) * New translations en.yml (Sorani (Kurdish)) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/ckb.json | 88 +++++------ app/javascript/mastodon/locales/eo.json | 8 +- app/javascript/mastodon/locales/et.json | 84 +++++------ app/javascript/mastodon/locales/gd.json | 10 +- app/javascript/mastodon/locales/hy.json | 8 +- app/javascript/mastodon/locales/io.json | 54 +++---- config/locales/activerecord.ckb.yml | 15 ++ config/locales/ckb.yml | 182 ++++++++++++++++++++++- config/locales/devise.io.yml | 6 +- config/locales/doorkeeper.ckb.yml | 42 ++++++ config/locales/doorkeeper.eo.yml | 8 + config/locales/doorkeeper.io.yml | 50 +++---- config/locales/eo.yml | 8 + config/locales/et.yml | 18 ++- config/locales/io.yml | 74 ++++----- config/locales/ru.yml | 19 ++- config/locales/simple_form.io.yml | 24 +-- config/locales/simple_form.ru.yml | 8 +- 18 files changed, 477 insertions(+), 229 deletions(-) diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 1ade0d5ef..a642c8a81 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -19,7 +19,7 @@ "account.followers.empty": "کەسێک شوێن ئەم بەکارهێنەرە نەکەوتووە", "account.followers_counter": "{count, plural, one {{counter} شوێنکەوتوو} other {{counter} شوێنکەوتوو}}", "account.following": "دواکەوتن", - "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", + "account.following_counter": "{count, plural, one {{counter} شوێنکەوتوو} other {{counter} شوێنکەوتوو}}", "account.follows.empty": "ئەم بەکارهێنەرە تا ئێستا شوێن کەس نەکەوتووە.", "account.follows_you": "شوێنکەوتووەکانت", "account.hide_reblogs": "داشاردنی بووستەکان لە @{name}", @@ -48,9 +48,9 @@ "account.unmute_notifications": "بێدەنگکردنی هۆشیارییەکان لە @{name}", "account.unmute_short": "بێدەنگی مەکە", "account_note.placeholder": "کرتەبکە بۆ زیادکردنی تێبینی", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", - "admin.dashboard.retention.average": "Average", + "admin.dashboard.daily_retention": "ڕێژەی مانەوەی بەکارهێنەر بەپێی ڕۆژ دوای ناو تۆمارکردن", + "admin.dashboard.monthly_retention": "ڕێژەی مانەوەی بەکارهێنەر بەپێی مانگ دوای ناو تۆمارکردن", + "admin.dashboard.retention.average": "ڕێژە", "admin.dashboard.retention.cohort": "چوونەژوورەوەی مانگانە", "admin.dashboard.retention.cohort_size": "ئەندامی نوێ", "alert.rate_limited.message": "تکایە هەوڵبدەرەوە دوای {retry_time, time, medium}.", @@ -123,8 +123,8 @@ "confirmations.delete.message": "ئایا دڵنیایت لەوەی دەتەوێت ئەم توتە بسڕیتەوە?", "confirmations.delete_list.confirm": "سڕینەوە", "confirmations.delete_list.message": "ئایا دڵنیایت لەوەی دەتەوێت بە هەمیشەیی ئەم لیستە بسڕیتەوە?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "ڕەتکردنەوە", + "confirmations.discard_edit_media.message": "گۆڕانکاریت لە وەسف یان پێشبینی میدیادا هەڵنەگیراوە، بەهەر حاڵ فڕێیان بدە؟", "confirmations.domain_block.confirm": "بلۆککردنی هەموو دۆمەینەکە", "confirmations.domain_block.message": "ئایا بەڕاستی، بەڕاستی تۆ دەتەوێت هەموو {domain} بلۆک بکەیت؟ لە زۆربەی حاڵەتەکاندا چەند بلۆکێکی ئامانجدار یان بێدەنگەکان پێویست و پەسەندن. تۆ ناوەڕۆک ێک نابینیت لە دۆمەینەکە لە هیچ هێڵی کاتی گشتی یان ئاگانامەکانت. شوێنکەوتوانی تۆ لەو دۆمەینەوە لادەبرێن.", "confirmations.logout.confirm": "چوونە دەرەوە", @@ -149,7 +149,7 @@ "embed.instructions": "ئەم توتە بنچین بکە لەسەر وێب سایتەکەت بە کۆپیکردنی کۆدەکەی خوارەوە.", "embed.preview": "ئەمە ئەو شتەیە کە لە شێوەی خۆی دەچێت:", "emoji_button.activity": "چالاکی", - "emoji_button.clear": "Clear", + "emoji_button.clear": "ڕوون", "emoji_button.custom": "ئاسایی", "emoji_button.flags": "ئاڵاکان", "emoji_button.food": "خواردن& خواردنەوە", @@ -169,12 +169,12 @@ "empty_column.blocks": "تۆ هێشتا هیچ بەکارهێنەرێکت بلۆک نەکردووە.", "empty_column.bookmarked_statuses": "تۆ هێشتا هیچ توتێکی دیاریکراوت نیە کاتێک نیشانەیەک نیشان دەکەیت، لێرە دەرئەکەویت.", "empty_column.community": "هێڵی کاتی ناوخۆیی بەتاڵە. شتێک بە ئاشکرا بنووسە بۆ ئەوەی تۆپەکە بسووڕێت!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "تا ئێستا هیچ نامەیەکی ڕاستەوخۆت نییە. کاتێک یەکێکیان دەنێری یان وەریدەگریت، لێرە دەردەکەوێت.", "empty_column.domain_blocks": "هێشتا هیچ دۆمەینێکی بلۆک کراو نییە.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "لە ئێستادا هیچ شتێک ترێند نییە. دواتر سەیری بکە!", "empty_column.favourited_statuses": "تۆ هێشتا هیچ توتێکی دڵخوازت نییە، کاتێک حەزت لە دانەیەکی باشە، لێرە دەرئەکەویت.", "empty_column.favourites": "کەس ئەم توتەی دڵخواز نەکردووە،کاتێک کەسێک وا بکات، لێرە دەرئەکەون.", - "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", + "empty_column.follow_recommendations": "پێدەچێت هیچ پێشنیارێک بۆ تۆ دروست نەکرێت. دەتوانیت هەوڵبدەیت گەڕان بەکاربهێنیت بۆ گەڕان بەدوای ئەو کەسانەی کە ڕەنگە بیانناسیت یان بەدوای هاشتاگە ڕەوتەکاندا بگەڕێیت.", "empty_column.follow_requests": "تۆ هێشتا هیچ داواکارییەکی بەدواداچووت نیە. کاتێک یەکێکت بۆ هات، لێرە دەرئەکەویت.", "empty_column.hashtag": "هێشتا هیچ شتێک لەم هاشتاگەدا نییە.", "empty_column.home": "تایم لاینی ماڵەوەت بەتاڵە! سەردانی {public} بکە یان گەڕان بەکاربێنە بۆ دەستپێکردن و بینینی بەکارهێنەرانی تر.", @@ -267,8 +267,8 @@ "lightbox.expand": "فراوانکردنی سندوقی بینینی وێنە", "lightbox.next": "داهاتوو", "lightbox.previous": "پێشوو", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "بەهەر حاڵ پڕۆفایلی پیشان بدە", + "limited_account_hint.title": "ئەم پرۆفایلییە لەلایەن بەڕێوەبەرانی سێرڤەرەکەتەوە شاراوەتەوە.", "lists.account.add": "زیادکردن بۆ لیست", "lists.account.remove": "لابردن لە لیست", "lists.delete": "سڕینەوەی لیست", @@ -282,7 +282,7 @@ "lists.replies_policy.title": "پیشاندانی وەڵامەکان بۆ:", "lists.search": "بگەڕێ لەناو ئەو کەسانەی کە شوێنیان کەوتویت", "lists.subheading": "لیستەکانت", - "load_pending": "{count, plural, one {# new item} other {# new items}}", + "load_pending": "{count, plural, one {# بەڕگەی نوێ} other {# بەڕگەی نوێ}}", "loading_indicator.label": "بارکردن...", "media_gallery.toggle_visible": "شاردنەوەی {number, plural, one {image} other {images}}", "missing_indicator.label": "نەدۆزرایەوە", @@ -341,22 +341,22 @@ "notifications.column_settings.show": "لە ستووندا پیشان بدە", "notifications.column_settings.sound": "لێدانی دەنگ", "notifications.column_settings.status": "توتەکانی نوێ:", - "notifications.column_settings.unread_notifications.category": "Unread notifications", - "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.unread_notifications.category": "ئاگاداریی نەبینراو", + "notifications.column_settings.unread_notifications.highlight": "تیشک بخە سەر ئاگاداری نەخوێنراو", "notifications.column_settings.update": "دەستکاری:", "notifications.filter.all": "هەموو", "notifications.filter.boosts": "دووبارەتوتەکان", "notifications.filter.favourites": "دڵخوازەکان", - "notifications.filter.follows": "شوێنکەوتن", + "notifications.filter.follows": "بەدواداچوون", "notifications.filter.mentions": "ئاماژەکان", "notifications.filter.polls": "ئەنجامەکانی ڕاپرسی", "notifications.filter.statuses": "نوێکردنەوەکان ئەو کەسانەی کە پەیڕەوی دەکەیت", - "notifications.grant_permission": "Grant permission.", + "notifications.grant_permission": "مۆڵەت بدە.", "notifications.group": "{count} ئاگانامە", "notifications.mark_as_read": "هەموو ئاگانامەکان وەک خوێندراوەتەوە نیشان بکە", "notifications.permission_denied": "ناتوانرێت ئاگانامەکانی دێسکتۆپ چالاک بکرێت وەک ڕێپێدان ڕەتکرایەوە.", "notifications.permission_denied_alert": "ناتوانرێت ئاگانامەکانی دێسکتۆپ چالاک بکرێت، چونکە پێشتر مۆڵەتی وێبگەڕ ڕەتکرایەوە", - "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.", + "notifications.permission_required": "ئاگادارکردنەوەکانی سەر مێز بەردەست نین چونکە مۆڵەتی پێویست نەدراوە.", "notifications_permission_banner.enable": "چالاککردنی ئاگانامەکانی دێسکتۆپ", "notifications_permission_banner.how_to_control": "بۆ وەرگرتنی ئاگانامەکان کاتێک ماستۆدۆن نەکراوەیە، ئاگانامەکانی دێسکتۆپ چالاک بکە. دەتوانیت بە وردی کۆنترۆڵی جۆری کارلێکەکان بکەیت کە ئاگانامەکانی دێسکتۆپ دروست دەکەن لە ڕێگەی دوگمەی {icon} لەسەرەوە کاتێک چالاک دەکرێن.", "notifications_permission_banner.title": "هەرگیز شتێک لە دەست مەدە", @@ -367,27 +367,27 @@ "poll.total_votes": "{count, plural, one {# دەنگ} other {# دەنگ}}\n", "poll.vote": "دەنگ", "poll.voted": "تۆ دەنگت بەو وەڵامە دا", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# دەنگ} other {# دەنگ}}", "poll_button.add_poll": "ڕاپرسییەک زیاد بکە", "poll_button.remove_poll": "ده‌نگدان بسڕه‌وه‌‌", "privacy.change": "ڕێکخستنی تایبەتمەندی توت", "privacy.direct.long": "تەنیا بۆ بەکارهێنەرانی ناوبراو", - "privacy.direct.short": "Direct", + "privacy.direct.short": "تەنها کەسانی باس کراو", "privacy.private.long": "بینراو تەنها بۆ شوێنکەوتوان", - "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all", + "privacy.private.short": "تەنیا شوێنکەوتووان", + "privacy.public.long": "بۆ هەمووان دیارە", "privacy.public.short": "گشتی", - "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", + "privacy.unlisted.long": "بۆ هەمووان دیارە، بەڵام لە تایبەتمەندییەکانی دۆزینەوە دەرچووە", "privacy.unlisted.short": "لە لیست نەکراو", "refresh": "نوێکردنەوە", "regeneration_indicator.label": "بارکردن…", "regeneration_indicator.sublabel": "ڕاگەیەنەری ماڵەوەت ئامادە دەکرێت!", "relative_time.days": "{number}ڕۆژ", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number, plural, one {# ڕۆژ} other {# ڕۆژ}} ماوە", + "relative_time.full.hours": "{number, plural, one {# کاتژمێر} other {# کاتژمێر}} ماوە", + "relative_time.full.just_now": "ئێستا", + "relative_time.full.minutes": "{number, plural, one {# خولەک} other {# خولەک}} ماوە", + "relative_time.full.seconds": "{number, plural, one {# چرکە} other {# چرکە}} ماوە", "relative_time.hours": "{number}کات", "relative_time.just_now": "ئێستا", "relative_time.minutes": "{number}کات", @@ -418,19 +418,19 @@ "report.reasons.spam": "ئەوە سپامە", "report.reasons.spam_description": "لینکە خراپەکان، بەشداری ساختە، یان وەڵامدانەوەی دووبارە", "report.reasons.violation": "یاساکانی سێرڤەر پێشێل دەکات", - "report.reasons.violation_description": "You are aware that it breaks specific rules", - "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", - "report.statuses.subtitle": "Select all that apply", - "report.statuses.title": "Are there any posts that back up this report?", + "report.reasons.violation_description": "ئاگاداری ئەوەن کە یاسا تایبەتەکان دەشکێنێت", + "report.rules.subtitle": "هەموو ئەوانەی کە کاریان پێدەکرێت هەڵبژێرە", + "report.rules.title": "کام یاسا پێشێل دەکرێت؟", + "report.statuses.subtitle": "هەموو ئەوانەی کە کاریان پێدەکرێت هەڵبژێرە", + "report.statuses.title": "ئایا هیچ پۆستێک هەیە کە پشتگیری ئەم ڕاپۆرتە بکات؟", "report.submit": "ناردن", "report.target": "گوزارشتکردنی{target}", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", - "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", - "report.unfollow": "Unfollow @{name}", - "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report.thanks.take_action": "لێرەدا بژاردەکانت بۆ کۆنترۆڵکردنی ئەو شتانە دەخەینەڕوو کە لە ماستۆدۆن دەیبینیت:", + "report.thanks.take_action_actionable": "لە کاتێکدا ئێمە پێداچوونەوە بەم بابەتە دەکەین، دەتوانیت ڕێوشوێن بگریتەبەر دژی @{name}:", + "report.thanks.title": "ناتەوێت ئەمە ببینیت؟", + "report.thanks.title_actionable": "سوپاس بۆ ڕاپۆرتکردن، ئێمە سەیری ئەم بابەتە دەکەین.", + "report.unfollow": "بەدوادانەچوو@{name}", + "report.unfollow_explanation": "تۆ شوێنکەوتووی ئەم هەژماررەی دەکەیت. بۆ ئەوەی چیتر نووسراوەکانیان لە هۆم فیدی خۆت نەبینی، بەدوایان مەچۆ.", "search.placeholder": "گەڕان", "search_popout.search_format": "شێوەی گەڕانی پێشکەوتوو", "search_popout.tips.full_text": "گەڕانێکی دەقی سادە دەتوانێت توتەکانی ئێوە کە، نووسیوتانە،پەسەنتان کردووە، دووبارەتانکردووە، یان ئەو توتانە کە باسی ئێوەی تێدا کراوە پەیدا دەکا. هەروەها ناوی بەکارهێنەران، ناوی پیشاندراو و هەشتەگەکانیش لە خۆ دەگرێت.", @@ -457,12 +457,12 @@ "status.direct": "پەیامی ڕاستەوخۆ @{name}", "status.edit": "دەستکاری", "status.edited": "بەشداری {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edited_x_times": "دەستکاریکراوە {count, plural, one {{count} کات} other {{count} کات}}", "status.embed": "نیشتەجێ بکە", "status.favourite": "دڵخواز", "status.filtered": "پاڵاوتن", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} دروستکراوە لە{date}", + "status.history.edited": "{name} دروستکاریکراوە لە{date}", "status.load_more": "زیاتر بار بکە", "status.media_hidden": "میدیای شاراوە", "status.mention": "ناوبنێ @{name}", @@ -520,14 +520,14 @@ "upload_error.poll": "فایل و ڕاپرسی پێکەوە ڕێپێنەدراون.", "upload_form.audio_description": "پەیامەکەت بۆ نابیستەکان", "upload_form.description": "پەیامەکەت بۆ نابیناکان", - "upload_form.description_missing": "No description added", + "upload_form.description_missing": "هیچ وەسفێک زیاد نەکراوە", "upload_form.edit": "دەستکاری", "upload_form.thumbnail": "گۆڕانی وینۆچکە", "upload_form.undo": "بیسڕەوە", "upload_form.video_description": "پەیامەکەت بۆ نابیست و نابیناکان", "upload_modal.analyzing_picture": "وێنەکە شی دەکرێتەوە…", "upload_modal.apply": "بیسەپێنە", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "داواکاری…", "upload_modal.choose_image": "وێنە هەڵبژێرە", "upload_modal.description_placeholder": "بە دڵ کەین با بە نەشئەی مەی غوباری میحنەتی دونیا", "upload_modal.detect_text": "نووسینی ناو وێنەکە دەستنیشان بکە", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 0eb9ee682..917994561 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -18,7 +18,7 @@ "account.followers": "Sekvantoj", "account.followers.empty": "Ankoraŭ neniu sekvas tiun uzanton.", "account.followers_counter": "{count, plural, one{{counter} Sekvanto} other {{counter} Sekvantoj}}", - "account.following": "Following", + "account.following": "Sekvantaj", "account.following_counter": "{count, plural, one {{counter} Sekvato} other {{counter} Sekvatoj}}", "account.follows.empty": "Tiu uzanto ankoraŭ ne sekvas iun.", "account.follows_you": "Sekvas vin", @@ -149,7 +149,7 @@ "embed.instructions": "Enkorpigu ĉi tiun mesaĝon en vian retejon per kopio de la suba kodo.", "embed.preview": "Ĝi aperos tiel:", "emoji_button.activity": "Agadoj", - "emoji_button.clear": "Clear", + "emoji_button.clear": "Forviŝi", "emoji_button.custom": "Propraj", "emoji_button.flags": "Flagoj", "emoji_button.food": "Manĝi kaj trinki", @@ -267,7 +267,7 @@ "lightbox.expand": "Pligrandigi bildan vidkeston", "lightbox.next": "Sekva", "lightbox.previous": "Antaŭa", - "limited_account_hint.action": "Show profile anyway", + "limited_account_hint.action": "Montru profilon ĉiukaze", "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", "lists.account.add": "Aldoni al la listo", "lists.account.remove": "Forigi de la listo", @@ -331,7 +331,7 @@ "notifications.column_settings.favourite": "Stelumoj:", "notifications.column_settings.filter_bar.advanced": "Montri ĉiujn kategoriojn", "notifications.column_settings.filter_bar.category": "Rapida filtra breto", - "notifications.column_settings.filter_bar.show_bar": "Show filter bar", + "notifications.column_settings.filter_bar.show_bar": "Montru filtrilon", "notifications.column_settings.follow": "Novaj sekvantoj:", "notifications.column_settings.follow_request": "Novaj petoj de sekvado:", "notifications.column_settings.mention": "Mencioj:", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 8c25a6af5..e7c153681 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -1,5 +1,5 @@ { - "account.account_note_header": "Note", + "account.account_note_header": "Märge", "account.add_or_remove_from_list": "Lisa või Eemalda nimekirjadest", "account.badges.bot": "Robot", "account.badges.group": "Grupp", @@ -8,7 +8,7 @@ "account.blocked": "Blokeeritud", "account.browse_more_on_origin_server": "Browse more on the original profile", "account.cancel_follow_request": "Tühista jälgimistaotlus", - "account.direct": "Otsesõnum @{name}", + "account.direct": "Saada otsesõnum @{name}'ile", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domeen peidetud", "account.edit_profile": "Muuda profiili", @@ -17,28 +17,28 @@ "account.follow": "Jälgi", "account.followers": "Jälgijad", "account.followers.empty": "Keegi ei jälgi seda kasutajat veel.", - "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", + "account.followers_counter": "{count, plural, one {{counter} jälgija} other {{counter} jälgijat}}", "account.following": "Following", - "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", + "account.following_counter": "{count, plural, one {{counter} jälgitav} other {{counter} jälgitavat}}", "account.follows.empty": "See kasutaja ei jälgi veel kedagi.", "account.follows_you": "Jälgib Teid", "account.hide_reblogs": "Peida upitused kasutajalt @{name}", - "account.joined": "Joined {date}", + "account.joined": "Liitus {date}", "account.link_verified_on": "Selle lingi autorsust kontrolliti {date}", "account.locked_info": "Selle konto privaatsussätteks on lukustatud. Omanik vaatab manuaalselt üle, kes teda jägida saab.", "account.media": "Meedia", - "account.mention": "Maini @{name}", + "account.mention": "Maini @{name}'i", "account.moved_to": "{name} on kolinud:", "account.mute": "Vaigista @{name}", "account.mute_notifications": "Vaigista teated kasutajalt @{name}", "account.muted": "Vaigistatud", - "account.posts": "Tuututused", - "account.posts_with_replies": "Tuututused ja vastused", + "account.posts": "Postitused", + "account.posts_with_replies": "Postitused ja vastused", "account.report": "Raporteeri @{name}", "account.requested": "Ootab kinnitust. Klõpsa jälgimise soovi tühistamiseks", "account.share": "Jaga @{name} profiili", "account.show_reblogs": "Näita kasutaja @{name} upitusi", - "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", + "account.statuses_counter": "{count, plural, one {{counter} postitus} other {{counter} postitust}}", "account.unblock": "Eemalda blokeering @{name}", "account.unblock_domain": "Tee {domain} nähtavaks", "account.unblock_short": "Unblock", @@ -47,7 +47,7 @@ "account.unmute": "Ära vaigista @{name}", "account.unmute_notifications": "Ära vaigista teateid kasutajalt @{name}", "account.unmute_short": "Unmute", - "account_note.placeholder": "Click to add a note", + "account_note.placeholder": "Klõpsa märkme lisamiseks", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", @@ -99,14 +99,14 @@ "compose_form.hashtag_warning": "Seda tuuti ei kuvata ühegi sildi all, sest see on kirjendamata. Ainult avalikud tuutid on sildi järgi otsitavad.", "compose_form.lock_disclaimer": "Teie konto ei ole {locked}. Igaüks saab Teid jälgida ja näha Teie ainult-jälgijatele postitusi.", "compose_form.lock_disclaimer.lock": "lukus", - "compose_form.placeholder": "Millest mõtlete?", + "compose_form.placeholder": "Millest mõtled?", "compose_form.poll.add_option": "Lisa valik", "compose_form.poll.duration": "Küsitluse kestus", "compose_form.poll.option_placeholder": "Valik {number}", "compose_form.poll.remove_option": "Eemalda see valik", "compose_form.poll.switch_to_multiple": "Muuda küsitlust lubamaks mitut valikut", "compose_form.poll.switch_to_single": "Muuda küsitlust lubamaks ainult ühte valikut", - "compose_form.publish": "Tuut", + "compose_form.publish": "Tuututa", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "Märgista meedia tundlikuks", @@ -152,7 +152,7 @@ "emoji_button.clear": "Clear", "emoji_button.custom": "Mugandatud", "emoji_button.flags": "Lipud", - "emoji_button.food": "Toit & Jook", + "emoji_button.food": "Toit & jook", "emoji_button.label": "Sisesta emoji", "emoji_button.nature": "Loodus", "emoji_button.not_found": "Ei ole emojosi!! (╯°□°)╯︵ ┻━┻", @@ -162,7 +162,7 @@ "emoji_button.search": "Otsi...", "emoji_button.search_results": "Otsitulemused", "emoji_button.symbols": "Sümbolid", - "emoji_button.travel": "Reisimine & Kohad", + "emoji_button.travel": "Reisimine & kohad", "empty_column.account_suspended": "Account suspended", "empty_column.account_timeline": "Siin tuute ei ole!", "empty_column.account_unavailable": "Profiil pole saadaval", @@ -171,11 +171,11 @@ "empty_column.community": "Kohalik ajajoon on tühi. Kirjutage midagi avalikult, et pall veerema ajada!", "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "Siin ei ole veel peidetud domeene.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "Ükski postitus pole hetkel populaarne. Tule hiljem tagasi!", "empty_column.favourited_statuses": "Teil pole veel lemmikuid tuute. Kui märgite mõne, näete neid siin.", "empty_column.favourites": "Keegi pole veel seda tuuti lemmikuks märkinud. Kui seegi seda teeb, näed seda siin.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", - "empty_column.follow_requests": "Teil pole veel ühtegi jälgimise taotlust. Kui saate mõne, näete neid siin.", + "empty_column.follow_requests": "Teil pole hetkel ühtegi jälgimistaotlust. Kui saate mõne, näete neid siin.", "empty_column.hashtag": "Selle sildiga pole veel midagi.", "empty_column.home": "Teie kodu ajajoon on tühi! Külastage {public} või kasutage otsingut alustamaks ja kohtamaks teisi kasutajaid.", "empty_column.home.suggestions": "See some suggestions", @@ -190,12 +190,12 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Kopeeri stacktrace lõikelauale", "errors.unexpected_crash.report_issue": "Teavita veast", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", + "explore.search_results": "Otsingutulemused", + "explore.suggested_follows": "Sinu jaoks", + "explore.title": "Avasta", + "explore.trending_links": "Uudised", + "explore.trending_statuses": "Postitused", + "explore.trending_tags": "Sildid", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -236,7 +236,7 @@ "keyboard_shortcuts.description": "Kirjeldus", "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "liikumaks nimstus alla", - "keyboard_shortcuts.enter": "staatuse avamiseks", + "keyboard_shortcuts.enter": "Ava postitus", "keyboard_shortcuts.favourite": "lemmikuks märkimiseks", "keyboard_shortcuts.favourites": "avamaks lemmikute nimistut", "keyboard_shortcuts.federated": "avamaks föderatsiooni ajajoont", @@ -284,13 +284,13 @@ "lists.subheading": "Teie nimistud", "load_pending": "{count, plural, one {# uus kirje} other {# uut kirjet}}", "loading_indicator.label": "Laeb..", - "media_gallery.toggle_visible": "Lülita nähtavus", + "media_gallery.toggle_visible": "{number, plural, one {Varja pilt} other {Varja pildid}}", "missing_indicator.label": "Ei leitud", "missing_indicator.sublabel": "Seda ressurssi ei leitud", "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Kas peita teated sellelt kasutajalt?", "mute_modal.indefinite": "Indefinite", - "navigation_bar.apps": "Mobiilrakendused", + "navigation_bar.apps": "Mobiilirakendused", "navigation_bar.blocks": "Blokeeritud kasutajad", "navigation_bar.bookmarks": "Järjehoidjad", "navigation_bar.community_timeline": "Kohalik ajajoon", @@ -299,7 +299,7 @@ "navigation_bar.discover": "Avasta", "navigation_bar.domain_blocks": "Peidetud domeenid", "navigation_bar.edit_profile": "Muuda profiili", - "navigation_bar.explore": "Explore", + "navigation_bar.explore": "Avasta", "navigation_bar.favourites": "Lemmikud", "navigation_bar.filters": "Vaigistatud sõnad", "navigation_bar.follow_requests": "Jälgimistaotlused", @@ -364,13 +364,13 @@ "poll.closed": "Suletud", "poll.refresh": "Värskenda", "poll.total_people": "{count, plural,one {# inimene} other {# inimest}}", - "poll.total_votes": "{count, plural, one {# hääl} other {# hääli}}", + "poll.total_votes": "{count, plural, one {# hääl} other {# häält}}", "poll.vote": "Hääleta", "poll.voted": "Teie hääletasite selle poolt", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# hääl} other {# häält}}", "poll_button.add_poll": "Lisa küsitlus", "poll_button.remove_poll": "Eemalda küsitlus", - "privacy.change": "Muuda staatuse privaatsust", + "privacy.change": "Muuda postituse nähtavust", "privacy.direct.long": "Postita ainult mainitud kasutajatele", "privacy.direct.short": "Direct", "privacy.private.long": "Postita ainult jälgijatele", @@ -384,7 +384,7 @@ "regeneration_indicator.sublabel": "Teie kodu voog on ettevalmistamisel!", "relative_time.days": "{number}p", "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.hours": "{number, plural, one {# tund} other {# tundi}} tagasi", "relative_time.full.just_now": "just now", "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", @@ -439,7 +439,7 @@ "search_popout.tips.text": "Lihtne tekst toob esile kattuvad kuvanimed, kasutajanimed ning sildid", "search_popout.tips.user": "kasutaja", "search_results.accounts": "Inimesed", - "search_results.all": "All", + "search_results.all": "Kõik", "search_results.hashtags": "Sildid", "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Tuudid", @@ -451,10 +451,10 @@ "status.bookmark": "Järjehoidja", "status.cancel_reblog_private": "Äraupita", "status.cannot_reblog": "Seda postitust ei saa upitada", - "status.copy": "Kopeeri link staatusesse", + "status.copy": "Kopeeri postituse link", "status.delete": "Kustuta", "status.detailed_status": "Detailne vestluskuva", - "status.direct": "Otsesõnum @{name}", + "status.direct": "Saada otsesõnum @{name}'ile", "status.edit": "Edit", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", @@ -463,13 +463,13 @@ "status.filtered": "Filtreeritud", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", - "status.load_more": "Lae veel", + "status.load_more": "Lae rohkem", "status.media_hidden": "Meedia peidetud", - "status.mention": "Mainimine @{name}", + "status.mention": "Maini @{name}'i", "status.more": "Veel", "status.mute": "Vaigista @{name}", "status.mute_conversation": "Vaigista vestlus", - "status.open": "Laienda see staatus", + "status.open": "Laienda see postitus", "status.pin": "Kinnita profiilile", "status.pinned": "Kinnitatud tuut", "status.read_more": "Loe veel", @@ -481,7 +481,7 @@ "status.remove_bookmark": "Eemalda järjehoidja", "status.reply": "Vasta", "status.replyAll": "Vasta lõimele", - "status.report": "Raport @{name}", + "status.report": "Raporteeri @{name}", "status.sensitive_warning": "Tundlik sisu", "status.share": "Jaga", "status.show_less": "Näita vähem", @@ -499,17 +499,17 @@ "tabs_bar.local_timeline": "Kohalik", "tabs_bar.notifications": "Teated", "tabs_bar.search": "Otsi", - "time_remaining.days": "{number, plural, one {# päev} other {# päeva}} left", - "time_remaining.hours": "{number, plural, one {# tund} other {# tundi}} left", - "time_remaining.minutes": "{number, plural, one {# minut} other {# minutit}} left", + "time_remaining.days": "{number, plural, one {# päev} other {# päeva}} jäänud", + "time_remaining.hours": "{number, plural, one {# tund} other {# tundi}} jäänud", + "time_remaining.minutes": "{number, plural, one {# minut} other {# minutit}} jäänud", "time_remaining.moments": "Hetked jäänud", - "time_remaining.seconds": "{number, plural, one {# sekund} other {# sekundit}} left", + "time_remaining.seconds": "{number, plural, one {# sekund} other {# sekundit}} jäänud", "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.", "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", - "trends.trending_now": "Praegu populaarne", + "trends.trending_now": "Hetkel populaarne", "ui.beforeunload": "Teie mustand läheb kaotsi, kui lahkute Mastodonist.", "units.short.billion": "{count}B", "units.short.million": "{count}M", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 0f5ffab04..4294cee84 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Feadhainn ionadail a-mhàin", "community.column_settings.media_only": "Meadhanan a-mhàin", "community.column_settings.remote_only": "Feadhainn chèin a-mhàin", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "Atharraich an cànan", + "compose.language.search": "Lorg cànan…", "compose_form.direct_message_warning_learn_more": "Barrachd fiosrachaidh", "compose_form.encryption_warning": "Chan eil crioptachadh ceann gu ceann air postaichean Mhastodon. Na co-roinn fiosrachadh cunnartach idir le Mastodon.", "compose_form.hashtag_warning": "Cha nochd am post seo fon taga hais on a tha e falaichte o liostaichean. Cha ghabh ach postaichean poblach a lorg a-rèir an tagaichean hais.", @@ -149,7 +149,7 @@ "embed.instructions": "Leabaich am post seo san làrach-lìn agad is tu a’ dèanamh lethbhreac dhen chòd gu h-ìosal.", "embed.preview": "Seo an coltas a bhios air:", "emoji_button.activity": "Gnìomhachd", - "emoji_button.clear": "Clear", + "emoji_button.clear": "Falamhaich", "emoji_button.custom": "Gnàthaichte", "emoji_button.flags": "Brataichean", "emoji_button.food": "Biadh ⁊ deoch", @@ -206,7 +206,7 @@ "getting_started.developers": "Luchd-leasachaidh", "getting_started.directory": "Eòlaire nam pròifil", "getting_started.documentation": "Docamaideadh", - "getting_started.heading": "Dèan toiseach-tòiseachaidh", + "getting_started.heading": "Toiseach", "getting_started.invite": "Thoir cuireadh do dhaoine", "getting_started.open_source_notice": "’S e bathar-bog le bun-tùs fosgailte a th’ ann am Mastodon. ’S urrainn dhut cuideachadh leis no aithris a dhèanamh air duilgheadasan air GitHub fo {github}.", "getting_started.security": "Roghainnean a’ chunntais", @@ -256,7 +256,7 @@ "keyboard_shortcuts.requests": "Fosgail liosta nan iarrtasan leantainn", "keyboard_shortcuts.search": "Cuir am fòcas air a’ bhàr-luirg", "keyboard_shortcuts.spoilers": "Seall/Falaich raon an rabhaidh susbainte", - "keyboard_shortcuts.start": "Fosgail an colbh “dèan toiseach-tòiseachaidh”", + "keyboard_shortcuts.start": "Fosgail an colbh “Toiseach”", "keyboard_shortcuts.toggle_hidden": "Seall/Falaich an teacsa fo rabhadh susbainte", "keyboard_shortcuts.toggle_sensitivity": "Seall/Falaich na meadhanan", "keyboard_shortcuts.toot": "Tòisich air post ùr", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index 493deba27..1285403fc 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -70,7 +70,7 @@ "column.blocks": "Արգելափակուած օգտատէրեր", "column.bookmarks": "Էջանիշեր", "column.community": "Տեղական հոսք", - "column.direct": "Direct messages", + "column.direct": "Հասցէագրուած", "column.directory": "Զննել անձնական էջերը", "column.domain_blocks": "Թաքցուած տիրոյթները", "column.favourites": "Հաւանածներ", @@ -95,7 +95,7 @@ "compose.language.change": "Change language", "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Իմանալ աւելին", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "Մաստոդոնում գրառումները ծայրից-ծայր գաղտնագրուող չեն։ Գաղտնիք պարունակող նամակներ մի ուղարկէք։", "compose_form.hashtag_warning": "Այս գրառումը չի հաշուառուի որեւէ պիտակի տակ, քանզի այն ծածուկ է։ Միայն հրապարակային թթերը հնարաւոր է որոնել պիտակներով։", "compose_form.lock_disclaimer": "Քո հաշիւը {locked} չէ։ Իւրաքանչիւրութիւն ոք կարող է հետեւել քեզ եւ տեսնել միայն հետեւողների համար նախատեսուած գրառումները։", "compose_form.lock_disclaimer.lock": "փակ", @@ -169,7 +169,7 @@ "empty_column.blocks": "Դու դեռ ոչ մէկի չես արգելափակել։", "empty_column.bookmarked_statuses": "Դու դեռ չունես որեւէ էջանշուած գրառում։ Երբ էջանշես, դրանք կը երեւան այստեղ։", "empty_column.community": "Տեղական հոսքը դատարկ է։ Հրապարակային մի բան գրի՛ր շարժիչը գործարկելու համար։", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "Դու դեռ չունես ոչ մի հասցէագրուած հաղորդագրութիւն։ Երբ ուղարկես կամ ստանաս որեւէ անձնական նամակ, այն կերեւայ այստեղ։", "empty_column.domain_blocks": "Թաքցուած տիրոյթներ դեռ չկան։", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Դու դեռ չունես որեւէ հաւանած գրառում։ Երբ հաւանես, դրանք կերեւան այստեղ։", @@ -295,7 +295,7 @@ "navigation_bar.bookmarks": "Էջանիշեր", "navigation_bar.community_timeline": "Տեղական հոսք", "navigation_bar.compose": "Ստեղծել նոր գրառում", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Հասցէագրուած նամակներ", "navigation_bar.discover": "Բացայայտել", "navigation_bar.domain_blocks": "Թաքցուած տիրոյթներ", "navigation_bar.edit_profile": "Խմբագրել անձնական էջը", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 27dc52ce9..bb13779f3 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -6,7 +6,7 @@ "account.block": "Blokusar @{name}", "account.block_domain": "Hide everything from {domain}", "account.blocked": "Restriktita", - "account.browse_more_on_origin_server": "Videz plu che originala profilo", + "account.browse_more_on_origin_server": "Videz pluse che originala profilo", "account.cancel_follow_request": "Removez sequodemando", "account.direct": "Direct Message @{name}", "account.disable_notifications": "Cesez avizar me kande @{name} postas", @@ -94,7 +94,7 @@ "community.column_settings.remote_only": "Fora nur", "compose.language.change": "Chanjez linguo", "compose.language.search": "Trovez linguo...", - "compose_form.direct_message_warning_learn_more": "Lernez plu", + "compose_form.direct_message_warning_learn_more": "Lernez pluse", "compose_form.encryption_warning": "Posti di Mastodon ne intersequante chifrigesas. Ne partigez irga danjera informo che Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Vua konto ne esas {locked}. Irgu povas sequar vu por vidar vua sequanto-nura posti.", @@ -109,14 +109,14 @@ "compose_form.publish": "Siflar", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Sparez chanji", - "compose_form.sensitive.hide": "{count, plural,one {Markigez medii quale privata} other {Markigez medii quale privata}}", - "compose_form.sensitive.marked": "{count, plural,one {Medii markigesis quale privata} other {Medii markigesis quale privata}}", - "compose_form.sensitive.unmarked": "{count, plural,one {Medii ne markigesis quale privata} other {Medii ne markigesis quale privata}}", + "compose_form.sensitive.hide": "{count, plural,one {Markizez medii quale privata} other {Markizez medii quale privata}}", + "compose_form.sensitive.marked": "{count, plural,one {Medii markizesis quale privata} other {Medii markizesis quale privata}}", + "compose_form.sensitive.unmarked": "{count, plural,one {Medii ne markizesis quale privata} other {Medii ne markizesis quale privata}}", "compose_form.spoiler.marked": "Text is hidden behind warning", "compose_form.spoiler.unmarked": "Text is not hidden", "compose_form.spoiler_placeholder": "Averto di kontenajo", - "confirmation_modal.cancel": "Extingez", - "confirmations.block.block_and_report": "Restriktez e Raportigez", + "confirmation_modal.cancel": "Anulez", + "confirmations.block.block_and_report": "Restriktez e Raportizez", "confirmations.block.confirm": "Restriktez", "confirmations.block.message": "Ka vu certe volas restrikar {name}?", "confirmations.delete.confirm": "Efacez", @@ -139,7 +139,7 @@ "confirmations.unfollow.confirm": "Desequez", "confirmations.unfollow.message": "Ka vu certe volas desequar {name}?", "conversation.delete": "Efacez konverso", - "conversation.mark_as_read": "Markigez quale lektita", + "conversation.mark_as_read": "Markizez quale lektita", "conversation.open": "Videz konverso", "conversation.with": "Kun {names}", "directory.federated": "De savita fediverso", @@ -184,7 +184,7 @@ "empty_column.mutes": "Vu ne silencigis irga uzanti til nun.", "empty_column.notifications": "Tu havas ankore nula savigo. Komunikez kun altri por debutar la konverso.", "empty_column.public": "Esas nulo hike! Skribez ulo publike, o manuale sequez uzeri de altra instaluri por plenigar ol.", - "error.unexpected_crash.explanation": "Pro eroro en nia numero o vidilkonciliebloproblemo, ca pagino ne povas korekte montresar.", + "error.unexpected_crash.explanation": "Pro eroro en nia kodexo o vidilkonciliebloproblemo, ca pagino ne povas korekte montresar.", "error.unexpected_crash.explanation_addons": "Ca pagino ne povas korekte montresar. Ca eroro posible kauzigesas vidilplusajo o automata tradukutensili.", "error.unexpected_crash.next_steps": "Probez rifreshar pagino. Se to ne helpas, vu forsan ankore povas uzar Mastodon per diferenta vidilo o provizita softwaro.", "error.unexpected_crash.next_steps_addons": "Probez desaktivigar e rifreshar pagino. Se to ne helpas, vu forsan ankore povas uzar Mastodon per diferenta vidilo o provizita softwaro.", @@ -286,11 +286,11 @@ "loading_indicator.label": "Kargante...", "media_gallery.toggle_visible": "Chanjar videbleso", "missing_indicator.label": "Ne trovita", - "missing_indicator.sublabel": "Ca resurso ne existas", + "missing_indicator.sublabel": "Ca moyeno ne existas", "mute_modal.duration": "Durado", "mute_modal.hide_notifications": "Celez avizi de ca uzanto?", "mute_modal.indefinite": "Nedefinitiva", - "navigation_bar.apps": "Telefonprogrami", + "navigation_bar.apps": "Smartfonsoftwari", "navigation_bar.blocks": "Blokusita uzeri", "navigation_bar.bookmarks": "Libromarki", "navigation_bar.community_timeline": "Lokala tempolineo", @@ -353,7 +353,7 @@ "notifications.filter.statuses": "Niuz de personi quon vu sequas", "notifications.grant_permission": "Donez permiso.", "notifications.group": "{count} avizi", - "notifications.mark_as_read": "Markigez singla avizi quale lektita", + "notifications.mark_as_read": "Markizez singla avizi quale lektita", "notifications.permission_denied": "Desktopavizi esas nedisplonebla pro antea refuzita vidilpermisdemando", "notifications.permission_denied_alert": "Desktopavizi ne povas aktivigesar pro ke vidilpermiso refuzesis", "notifications.permission_required": "Desktopavizi esas nedisplonebla pro ke bezonata permiso ne donesis.", @@ -398,7 +398,7 @@ "report.block_explanation": "Vu ne vidos olia posti. Oli ne povas vidar vua posti o sequar vu. Oli savos ke oli restriktesis.", "report.categories.other": "Altra", "report.categories.spam": "Spamo", - "report.categories.violation": "Kontenaj nesequas 1 o plu servilreguli", + "report.categories.violation": "Kontenaj nesequas servilregulo", "report.category.subtitle": "Selektez maxim bona parigato", "report.category.title": "Savigez ni pri quo eventas kun ca {type}", "report.category.title_account": "profilo", @@ -428,11 +428,11 @@ "report.thanks.take_action": "Co esas vua opcioni por regularar quo vu vidas che Mastodon:", "report.thanks.take_action_actionable": "Dum ke ni kontrolas co, vu povas demarshar kontra @{name}:", "report.thanks.title": "Ka vu ne volas vidar co?", - "report.thanks.title_actionable": "Danko por raportigar, ni kontrolos co.", + "report.thanks.title_actionable": "Danko por raportizar, ni kontrolos co.", "report.unfollow": "Desequez @{name}", - "report.unfollow_explanation": "Vu sequas ca konto. Por ne vidar olia posti en vua hemniuzeto plu, desequez oli.", + "report.unfollow_explanation": "Vu sequas ca konto. Por ne vidar olia posti en vua hemniuzeto pluse, desequez oli.", "search.placeholder": "Serchez", - "search_popout.search_format": "Avance trovformato", + "search_popout.search_format": "Avancata trovformato", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtago", "search_popout.tips.status": "status", @@ -466,13 +466,13 @@ "status.load_more": "Kargar pluse", "status.media_hidden": "Kontenajo celita", "status.mention": "Mencionar @{name}", - "status.more": "Plu", + "status.more": "Pluse", "status.mute": "Silencigez @{name}", "status.mute_conversation": "Silencigez konverso", "status.open": "Detaligar ca mesajo", "status.pin": "Pinglagez che profilo", "status.pinned": "Pinned toot", - "status.read_more": "Lektez plu", + "status.read_more": "Lektez pluse", "status.reblog": "Repetar", "status.reblog_private": "Bustez kun originala videbleso", "status.reblogged_by": "{name} repetita", @@ -487,7 +487,7 @@ "status.show_less": "Montrar mine", "status.show_less_all": "Montrez min por omno", "status.show_more": "Montrar plue", - "status.show_more_all": "Montrez plu por omno", + "status.show_more_all": "Montrez pluse por omno", "status.show_thread": "Montrez postaro", "status.uncached_media_warning": "Nedisplonebla", "status.unmute_conversation": "Desilencigez konverso", @@ -516,23 +516,23 @@ "units.short.thousand": "{count}K", "upload_area.title": "Tranar faligar por kargar", "upload_button.label": "Adjuntar kontenajo", - "upload_error.limit": "Failcharglimito ecesesis.", - "upload_error.poll": "Failchargo ne permisesas kun votposti.", - "upload_form.audio_description": "Deskriptez por personi kun min audkapableso", - "upload_form.description": "Deskriptez por personi kun min vidkapableso", + "upload_error.limit": "Failadcharglimito ecesesis.", + "upload_error.poll": "Failadchargo ne permisesas kun votposti.", + "upload_form.audio_description": "Deskriptez por personi kun audnekapableso", + "upload_form.description": "Deskriptez por personi kun vidnekapableso", "upload_form.description_missing": "Deskriptajo ne insertesis", "upload_form.edit": "Modifikez", - "upload_form.thumbnail": "Chanjez mikroimajo", + "upload_form.thumbnail": "Chanjez imajeto", "upload_form.undo": "Desfacar", - "upload_form.video_description": "Deskriptez por personi kun min audkapableso o min vidkapableso", + "upload_form.video_description": "Deskriptez por personi kun audnekapableso o vidnekapableso", "upload_modal.analyzing_picture": "Analizas imajo…", "upload_modal.apply": "Aplikez", "upload_modal.applying": "Aplikas…", "upload_modal.choose_image": "Selektez imajo", - "upload_modal.description_placeholder": "Rapida bruna foxo saltas super indolenta hundo", + "upload_modal.description_placeholder": "Rapida bruna foxo saltas super la indolenta hundo", "upload_modal.detect_text": "Deskovrez texto de imajo", "upload_modal.edit_media": "Modifikez medii", - "upload_modal.hint": "Kliktez o tirez cirklo che prevido por selektar central punto quo sempre montresas kun omna mikroimaji.", + "upload_modal.hint": "Kliktez o tirez cirklo che prevido por selektar centrala punto quo sempre montresas kun omna imajeti.", "upload_modal.preparing_ocr": "Preparas OCR…", "upload_modal.preview_label": "Previdez ({ratio})", "upload_progress.label": "Kargante...", diff --git a/config/locales/activerecord.ckb.yml b/config/locales/activerecord.ckb.yml index 8da0598a1..0dc0fd7a3 100644 --- a/config/locales/activerecord.ckb.yml +++ b/config/locales/activerecord.ckb.yml @@ -5,13 +5,28 @@ ckb: poll: expires_at: وادەی کۆتایی options: هەڵبژاردنەکان + user: + agreement: ڕێکەوتنی خزمەتگوزاری + email: ناونیشانی ئیمەیڵ + locale: ناوچەیی + password: تێپەڕوشە + user/account: + username: ناوی بەکارهێنەر + user/invite_request: + text: هۆکار errors: models: account: attributes: username: invalid: تەنها پیت، ژمارە و ژێرەوە + reserved: تەرخان کراوە status: attributes: reblog: taken: لە بار بوونی هەیە + user: + attributes: + email: + blocked: دابینکەرێکی ئیمەیڵی ڕێگەپێنەدراو بەکاردەهێنێت + unreachable: پێناچێت بوونی هەبێت diff --git a/config/locales/ckb.yml b/config/locales/ckb.yml index 14ff930fe..ee0f31344 100644 --- a/config/locales/ckb.yml +++ b/config/locales/ckb.yml @@ -7,6 +7,7 @@ ckb: active_count_after: چالاک active_footnote: بەکارهێنەرانی چالاکی مانگانە (MAU) administered_by: 'بەڕێوەبراو لەلایەن:' + api: API apps: ئەپەکانی مۆبایل apps_platforms: بەکارهێنانی ماستۆدۆن لە iOS، ئەندرۆید و سەکۆکانی تر browse_directory: گەڕان لە ڕێبەرێکی پرۆفایل و پاڵاوتن بەپێی بەرژەوەندیەکان @@ -24,13 +25,17 @@ ckb: ئەم هەژمارەیە ئەکتەرێکی خەیاڵی بەکارهاتووە بۆ نوێنەرایەتی کردنی خودی ڕاژەکە و نەک هیچ بەکارهێنەرێکی تاک. بۆ مەبەستی فیدراسیۆن بەکاردێت و نابێت بلۆک بکرێت مەگەر دەتەوێت هەموو نمونەکە بلۆک بکەیت، کە لە حاڵەتەش دا پێویستە بلۆکی دۆمەین بەکاربهێنیت. learn_more: زیاتر فێربه + logged_in_as_html: لە ئێستادا تۆ وەک %{username} چوویتە ژوورەوە. + logout_before_registering: تۆ پێشتر چوویتە ژوورەوە. privacy_policy: ڕامیاری تایبەتێتی + rules: یاساکانی سێرڤەر + rules_html: 'لە خوارەوە کورتەیەک لەو یاسایانە دەخەینەڕوو کە پێویستە پەیڕەوی لێبکەیت ئەگەر بتەوێت ئەکاونتێکت هەبێت لەسەر ئەم سێرڤەرەی ماستۆدۆن:' see_whats_happening: بزانە چی ڕوودەدات server_stats: 'زانیاری ڕاژەکار:' source_code: کۆدی سەرچاوە status_count_after: one: دۆخ - other: دۆخەکان + other: پۆست status_count_before: لە لایەن یەکەوە tagline: دوای هاوڕێکان بکەوە و ئەوانەی نوێ بدۆزیەوە terms: مەرجەکانی خزمەتگوزاری @@ -59,6 +64,7 @@ ckb: one: شوێنکەوتوو other: شوێن‌کەوتووان following: شوێن‌کەوتووی + instance_actor_flash: ئەم ئەکاونتە ئەکتەرێکی مەجازییە کە بەکاردێت بۆ نوێنەرایەتیکردنی خودی سێرڤەرەکە نەک هیچ بەکارهێنەرێکی تاکەکەسی. بۆ مەبەستی فیدراسیۆن بەکاردێت و نابێت ڕابگیرێت. joined: بەشداری %{date} last_active: دوا چالاکی link_verified_on: خاوەنداریەتی ئەم لینکە لە %{date} چێک کراوە @@ -107,11 +113,13 @@ ckb: confirm: پشتڕاستی بکەوە confirmed: پشتڕاست کرا confirming: پشتڕاستکردنەوە + custom: ڕاسپێراو delete: سڕینەوەی داتا deleted: سڕینەوە demote: پلە نزمکرایەوە destroyed_msg: دراوەکانی %{username} لە ڕیزی سڕینەوەن disable: بەستن + disable_sign_in_token_auth: ڕەسەنایەتی نیشانەی ئیمەیڵ لەکاربخە disable_two_factor_authentication: لەکارخستنی 2FA disabled: بەستوو display_name: ناوی پیشاندان @@ -120,12 +128,14 @@ ckb: email: پۆستی ئەلکترۆنی email_status: دۆخی ئیمەیڵ enable: چالاک کردن + enable_sign_in_token_auth: ڕەسەنایەتی نیشانەی ئیمەیڵ چالاک بکە enabled: چالاککراوە enabled_msg: هەژمارە %{username} بە سەرکەوتوویی سنووردار کرا followers: شوێنکەوتوان follows: شوێنکەوتوان header: سەرپەڕە inbox_url: نیشانی هاتنەژوور + invite_request_text: هۆکارەکانی بەشداریکردن invited_by: هاتۆتە ژورەوە لە لایەن ip: ئای‌پی joined: ئەندام بوو لە @@ -153,6 +163,7 @@ ckb: not_subscribed: بەشدار نەبوو pending: پێداچوونەوەی چاوەڕوان perform_full_suspension: ڕاگرتن + previous_strikes: مانگرتنەکانی پێشوو promote: بەرزکردنەوە protocol: پرۆتۆکۆل public: گشتی @@ -181,6 +192,9 @@ ckb: search: گەڕان search_same_email_domain: بەکارهێنەرانی دیکە بە ئیمەیلی یەکسان search_same_ip: بەکارهێنەرانی تر بەهەمان ئای پی + security_measures: + only_password: تەنها وشەی نهێنی + password_and_2fa: وشەی نهێنی و 2FA sensitive: هەستیار sensitized: وەک هەستیار نیشان کراوە shared_inbox_url: بەستەری سندوقی هاوبەشکراو @@ -209,6 +223,8 @@ ckb: whitelisted: پێرستی ڕێپێدراو action_logs: action_types: + approve_appeal: پەسەندکردنی تانەدان + approve_user: پەسەندکردنی بەکارهێنەر assigned_to_self_report: تەرخانکردنی گوزارشت change_email_user: گۆڕینی ئیمەیڵ بۆ بەکارهێنەر confirm_user: دڵنیابوون لە بەکارهێنەر @@ -219,21 +235,28 @@ ckb: create_domain_block: دروستکردنی بلۆکی دۆمەین create_email_domain_block: دروستکردنی بلۆکی دۆمەینی ئیمەیڵ create_ip_block: دروستکردنی یاسای IP + create_unavailable_domain: دروستکردنی دۆمەینی بەردەست نییە demote_user: دابەزاندنی ئاستی بەکارهێنەر destroy_announcement: سڕینەوەی راگەیەندراو destroy_custom_emoji: سڕینەوەی ئێمۆمۆجی تایبەتمەند destroy_domain_allow: سڕینەوەی ڕێپێدان بە دۆمەین destroy_domain_block: سڕینەوەی بلۆکی دۆمەین destroy_email_domain_block: سڕینەوەی بلۆکی دۆمەینی ئیمەیڵ + destroy_instance: پاککردنەوەی دۆمەین destroy_ip_block: سڕینەوەی یاسای IP destroy_status: دۆخ بسڕەوە + destroy_unavailable_domain: دۆمەینی بەردەست نییە بسڕەوە disable_2fa_user: لەکارخستنی 2FA disable_custom_emoji: سڕینەوەی ئێمۆمۆجی تایبەتمەند + disable_sign_in_token_auth_user: ڕەسەنایەتی نیشانەی ئیمەیڵ بۆ بەکارهێنەر لەکاربخە disable_user: بەکارهێنەر لە کاربخە enable_custom_emoji: ئیمۆمۆجی تایبەتمەند چالاک بکە + enable_sign_in_token_auth_user: ڕەسەنایەتی نیشانەی ئیمەیڵ بۆ بەکارهێنەر چالاک بکە enable_user: چالاککردنی بەکارهێنەر memorialize_account: هەژماری بیرکەوتنەوە promote_user: بەرزکردنەوەی بەکارهێنەر + reject_appeal: تانەدان ڕەتبکەرەوە + reject_user: بەکارهێنەر ڕەت بکەرەوە remove_avatar_user: لابردنی وێنۆجکە reopen_report: دووبارە کردنەوەی گوزارشت reset_password_user: گەڕانەوەی تێپەڕوشە @@ -242,12 +265,16 @@ ckb: silence_account: هەژماری بێدەنگی suspend_account: ڕاگرتنی هەژمارە unassigned_report: گوزارشتی دیارینەکراو + unblock_email_account: ناونیشانی ئیمەیڵەکە بلۆک بکەرەوە unsensitive_account: میدیاکە لە هەژمارەکەت وەک هەستیار نیشانە مەکە unsilence_account: هەژماری بێ دەنگ unsuspend_account: هەژماری هەڵنەوەستێنراو update_announcement: بەڕۆژکردنەوەی راگەیەندراو update_custom_emoji: بەڕۆژکردنی ئێمۆمۆجی دڵخواز + update_domain_block: نوێکردنەوەی بلۆکی دۆمەین update_status: بەڕۆژکردنی دۆخ + actions: + update_status_html: "%{name} پۆستی نوێکراوە لەلایەن %{target}" deleted_status: "(نووسراوە سڕاوە)" empty: هیچ لاگی کارنەدۆزرایەوە. filter_by_action: فلتەر کردن بە کردار @@ -262,10 +289,12 @@ ckb: new: create: دروستکردنی راگەیەندراو title: ڕاگەیاندنی نوێ + publish: بڵاوی بکەوە published_msg: بانگەوازەکە بە سەرکەوتوویی بڵاو کرایەوە! scheduled_for: خشتەکراوە بۆ %{time} scheduled_msg: ڕاگەیاندنی خشتەی بۆ بڵاوکردنەوە! title: ڕاگه یه نراوەکان + unpublish: بڵاونەکردنەوە unpublished_msg: بانگەواز بە سەرکەوتوویی بڵاونەکرایەوە! updated_msg: بانگەوازەکە بە سەرکەوتوویی نوێکرایەوە! custom_emojis: @@ -285,6 +314,7 @@ ckb: enable: چالاککردن enabled: چالاککراوە enabled_msg: ئەو ئیمۆجییە بە سەرکەوتووانە چالاک کرا + image_hint: PNG یا GIF بۆ %{size} list: پێرست listed: پێرستکراوە new: @@ -301,11 +331,25 @@ ckb: updated_msg: ئیمۆجی بە سەرکەوتوویی نوێکرایەوە! upload: بارکردن dashboard: + active_users: بەکارهێنەرانی چالاک + interactions: پیکداچوونەوەکان + media_storage: هەمارگەی میدیا + new_users: ئەندامی نوێ + opened_reports: ڕاپۆرتەکان کرانەوە + resolved_reports: ڕاپۆرتەکان چارەسەر کران software: نەرمەکالا + sources: سەرچاوەی ناو تۆمارکردن space: بەکارهێنانی بۆشایی title: داشبۆرد + top_languages: زمانە چالاکەکانی سەرەوە + top_servers: سەرەکیترین سێرڤەرە چالاکەکان + website: ماڵپەڕ + disputes: + appeals: + empty: هیچ تانەیەک نەدۆزراوەتەوە. + title: تانەدان domain_allows: - add_new: ڕێپێدان بە دۆمەین + add_new: ڕێگە بە فیدراسیۆن بدە لەگەڵ دۆمەین created_msg: دۆمەین بە سەرکەوتوویی رێگەی پێدرا destroyed_msg: دۆمەین لە پێرستی رێگەی پێدرا لابرا undo: لابردن لە پێرستی ڕێپێدراو @@ -325,6 +369,8 @@ ckb: silence: بێدەنگ suspend: ڕاگرتن title: بلۆکی دۆمەینی نوێ + obfuscate: ناوی دۆمەینەکە تەمومژاوی بکە + obfuscate_hint: ناوی دۆمەینەکە لە لیستی ریکلامەکاندا بەشێکی تەمومژاوی بکە لیستی سنووردارکردنی دۆمەینەکە چالاک کراوە private_comment: لێدوانی تایبەت private_comment_hint: لێدوان دەربارەی سنوورداری ئەم دۆمەینە بۆ بەکارهێنانی ناوخۆیی لەلایەن مۆدەرەکان. public_comment: سەرنجی گشتی @@ -339,26 +385,87 @@ ckb: add_new: زیادکردنی نوێ created_msg: بە سەرکەوتوویی دۆمەینی ئیمەیڵ بلۆک کرا delete: سڕینەوە + dns: + types: + mx: تۆماری MX domain: دۆمەین new: create: زیادکردنی دۆمەین + resolve: چارەسەرکردنی دۆمەین title: بلۆککردنی دۆمەینی ئیمەیڵی نوێ + no_email_domain_block_selected: هیچ بلۆکێکی دۆمەینی ئیمەیڵ نەگۆڕدرا چونکە هیچیان هەڵنەبژێردرابوون + resolved_dns_records_hint_html: ناوی دۆمەینەکە چارەسەر دەبێت بۆ ئەم دۆمەینانەی خوارەوەی MX، کە لە کۆتاییدا بەرپرسیارن لە وەرگرتنی ئیمەیڵ. ڕێگریکردن لە دۆمەینی MX ڕێگری دەکات لە ناو تۆمارکردن لە هەر ناونیشانێکی ئیمەیڵەوە کە هەمان دۆمەینی MX بەکاردەهێنێت، تەنانەت ئەگەر ناوی دۆمەینی بینراو جیاواز بێت. ئاگاداربە کە دابینکەرانی ئیمەیڵی سەرەکی بلۆک نەکەیت. + resolved_through_html: لە ڕێگەی %{domain} چارەسەر دەکرێت title: دۆمەینە بلۆککراوەکانی ئیمەیڵ + follow_recommendations: + description_html: "پەیڕەوکردنی پێشنیارەکان یارمەتی بەکارهێنەرانی نوێ دەدەن بە خێرایی ناوەڕۆکی سەرنجڕاکێش بدۆزنەوە. کاتێک بەکارهێنەرێک ئەوەندە کارلێکی لەگەڵ کەسانی دیکە نەکردووە کە پێشنیاری بەدواداچوونی کەسی پێکبهێنێت، لەبری ئەوە ئەم ئەکاونتانە پێشنیار دەکرێن. ئەوان ڕۆژانە لە تێکەڵەیەک لە ئەکاونتەکانەوە دووبارە حیساب دەکرێنەوە کە بەرزترین پەیوەندییەکانی ئەم دواییە و بەرزترین ژمارەی فۆڵۆوەری ناوخۆیی بۆ زمانێکی دیاریکراویان هەیە." + language: بۆ زمان + status: دۆخ + suppress: سەرکوتکردنی پێشنیاری شوێنکەوتن + suppressed: سەرکوت کراوە + title: پێشنیارەکان جێبەجێ بکە + unsuppress: گەڕاندنەوە بەدواداچوون بۆ پێشنیارەکان instances: + availability: + failure_threshold_reached: ئاستی شکست گەیشتە %{date}. + no_failures_recorded: هیچ شکستێک لە تۆماردا نییە. + title: بەردەست بوونی + warning: دوایین هەوڵ بۆ پەیوەندیکردن بەم سێرڤەرە سەرکەوتوو نەبوو + back_to_all: هەمووی + back_to_limited: سنووردار + back_to_warning: ئاگاداری by_domain: دۆمەین + confirm_purge: ئایا دڵنیای کە دەتەوێت بۆ هەمیشە زانیارییەکان لەم دۆمەینە بسڕیتەوە? + content_policies: + comment: تێبینی ناوخۆیی + description_html: دەتوانیت سیاسەتی ناوەڕۆک پێناسە بکەیت کە بۆ هەموو ئەکاونتەکان لەم دۆمەین و هەر یەکێک لە دۆمەینەکانی لاوەکییەوە جێبەجێ دەکرێن. + policies: + reject_media: میدیا ڕەت بکەرەوە + reject_reports: گوزارشتەکان ڕەت بکەوە + silence: سنوور + suspend: ڕاگرتن + policy: سیاسەت + reason: هۆکاری گشتی + title: سیاسەتەکانی ناوەڕۆک + dashboard: + instance_accounts_dimension: زۆرترین هەژمارەی بەدواداچوو + instance_accounts_measure: هەژمارەی هەڵگیراوەکان + instance_followers_measure: شوێنکەوتووانمان لەوێ + instance_follows_measure: شوێنکەوتووانمان لێرە + instance_languages_dimension: زمانە سەرەکییەکان + instance_media_attachments_measure: هاوپێچەکانی میدیای هەڵگیراو + instance_reports_measure: گوزارشت له باره یان + instance_statuses_measure: پۆستە هەڵگیراوەکان + delivery: + all: هەمووی + clear: هەڵەکانی گەیاندن پاک بکەرەوە + failing: شکستهێنان + restart: دووبارە دەستپێکردنەوەی گەیاندن + stop: گەیاندن بوەستێنە + unavailable: بەردەست نییە delivery_available: گەیاندن بەردەستە + delivery_error_days: ڕۆژانی هەڵەی گەیاندن + delivery_error_hint: ئەگەر گەیاندن بۆ %{count} ڕۆژەکان نەتوانرێت، بە شێوەیەکی ئۆتۆماتیکی وەک ناگەیاندن نیشان دەدرێت. + destroyed_msg: ئێستا داتا لە %{domain} لە ڕیزدا دانراوە بۆ سڕینەوەی نزیک. + empty: هیچ دۆمەینێک نەدۆزرایەوە. + known_accounts: + one: "%{count} ئەژمێری ناسراو" + other: "%{count} ئەژمێری ناسراو" moderation: all: هەموو limited: سنووردار title: بەڕێوەبردن private_comment: لێدوانی تایبەت public_comment: سەرنجی گشتی + purge: پاککردنەوە + purge_description_html: ئەگەر پێت وایە ئەم دۆمەینە بۆ هەمیشە ئۆفلاینە، دەتوانیت هەموو تۆمارەکانی ئەکاونت و زانیارییە پەیوەندیدارەکانی ئەم دۆمەینە لە هەڵگرتنەکەت بسڕیتەوە. لەوانەیە ئەمە ماوەیەکی پێ بچێت. title: پەیوەندی نێوان ڕاژە total_blocked_by_us: لەلایەن ئێمە بەربەست کراوە total_followed_by_them: شوێنمان دەکەون total_followed_by_us: شوێنیان کەوتین total_reported: گوزارشت له باره یان total_storage: هاوپێچی میدیا + totals_time_period_hint_html: ئەو کۆی گشتیانەی لە خوارەوە پیشان دراون داتای هەموو کاتەکان لەخۆدەگرن. invites: deactivate_all: هەموو لەکارخستنی filter: @@ -403,38 +510,73 @@ ckb: report_notes: created_msg: تێبینی ڕاپۆرت کردن بە سەرکەوتوویی دروست کرا! destroyed_msg: تێبینی گوزارشت بە سەرکەوتوویی سڕاوەتەوە! + today_at: ئەمڕۆ لە %{time} reports: account: notes: one: "%{count} یاداشت" - other: "%{count} یاداشت" + other: "%{count} تێبینی" + action_log: لۆگی وردبینی action_taken_by: کردەوە لە لایەن + actions: + delete_description_html: ئەو پۆستانەی کە ڕاپۆرت کراون دەسڕدرێنەوە و مانگرتنێک تۆمار دەکرێت بۆ ئەوەی یارمەتیت بدات لەسەر پێشێلکارییەکانی داهاتوو لەلایەن هەمان ئەکاونتەوە زیاد بکەیت. + mark_as_sensitive_description_html: میدیاکان لە پۆستە ڕاپۆرتکراوەکاندا وەک هەستیار نیشانە دەکرێن و مانگرتنێک تۆمار دەکرێت بۆ ئەوەی یارمەتیت بدات لەسەر پێشێلکارییەکانی داهاتوو لەلایەن هەمان ئەکاونتەوە زیاد بکەیت. + other_description_html: بژاردەی زیاتر ببینە بۆ کۆنترۆڵکردنی هەڵسوکەوتی ئەکاونتەکە و خۆکارکردنی پەیوەندی بۆ ئەژمێری ڕاپۆرتکراو. + resolve_description_html: هیچ ئیجرائاتێک لە دژی ئەو حسابە ڕاپۆرت کراوە ناگیرێتەبەر، هیچ مانگرتنێک تۆمار ناکرێت، ڕاپۆرتەکەش دادەخرێت. + silence_description_html: پرۆفایلەکە تەنها بۆ ئەو کەسانە دیار دەبێت کە پێشتر فۆڵۆوی دەکەن یان بە دەست سەیری دەکەن، ئەمەش گەیشتنەکەی بە توندی سنووردار دەکات. هەمیشە دەتوانرێت بگەڕێندرێتەوە. + suspend_description_html: پرۆفایلەکە و هەموو ناوەڕۆکەکانی دەستڕاگەیشتنیان پێناگات تا لە کۆتاییدا دەسڕدرێتەوە. کارلێککردن لەگەڵ ئەکاونتەکەدا مەحاڵ دەبێت. لە ماوەی ٣٠ ڕۆژدا دەگەڕێتەوە. + actions_description_html: بڕیار بدە کام رێوشوێن بگیرێتەبەر بۆ چارەسەرکردنی ئەم راپۆرتە. ئەگەر تۆ ڕێوشوێنی سزادان لە دژی ئەژمێری ڕاپۆرتکراو بگریتەبەر، ئاگادارکردنەوەیەکی ئیمەیڵیان بۆ دەنێردرێت، تەنها کاتێک نەبێت کە پۆلی سپام هەڵبژێردرابێت. + add_to_report: زیاتر زیاد بکە بۆ ڕاپۆرت are_you_sure: دڵنیای? assign_to_self: دیاریکردن بۆ من assigned: بەڕێوەبەری بەرپرس by_target_domain: دۆمەینی هەژمارەی گوزارشتدراو + category: جۆر + category_description_html: هۆکاری ڕاپۆرتکردنی ئەم ئەکاونتە و/یان ناوەڕۆکە لە پەیوەندی لەگەڵ ئەکاونتی ڕاپۆرتکراودا ئاماژەی پێدەکرێت comment: none: هیچ + comment_description_html: 'بۆ پێدانی زانیاری زیاتر %{name} نووسیویەتی:' created_at: گوزارشتکرا + delete_and_resolve: پۆستەکان بسڕەوە + forwarded: پێشکەش دەکرێت + forwarded_to: پێشکەش دەکرێت بۆ %{domain} mark_as_resolved: نیشانەی بکە وەک چارەسەرکراو + mark_as_sensitive: نیشانەکردن وەک هەستیار mark_as_unresolved: نیشانەکردن وەک چارەسەرنەکراوە + no_one_assigned: هیچکەس notes: create: زیادکردنی تێبینی create_and_resolve: چارەسەر کردن لەگەڵ تێبینی create_and_unresolve: دووبارە کردنەوەی بە تێبینی delete: سڕینەوە placeholder: باسی ئەو کردارانە بکە کە ئەنجام دراون، یان هەر نوێکردنەوەیەکی پەیوەندیداری ت... + title: تێبینی + notes_description_html: بینین و تێبینی بۆ بەڕێوەبەرانی تر و خودی داهاتووتان بەجێبهێڵە + quick_actions_description_html: 'کارێکی خێرا ئەنجام بدە یان بچۆرە خوارەوە بۆ بینینی ناوەڕۆکی ڕاپۆرتکراو:' + remote_user_placeholder: بەکارهێنەری دوور لە %{instance} reopen: دووبارە کردنەوەی گوزارشت report: 'گوزارشت #%{id}' reported_account: گوزارشتی هەژمارە reported_by: گوزارشت لە لایەن resolved: چارەسەرکرا resolved_msg: گوزارشتکردن بە سەرکەوتوویی چارەسەر کرا! + skip_to_actions: باز بدە بۆ کردارەکان status: دۆخ + statuses: ناوەڕۆکی ڕاپۆرتکراو + statuses_description_html: ناوەڕۆکی توڕەکەر لە پەیوەندی لەگەڵ ئەکاونتی ڕاپۆرتکراودا ئاماژەی پێدەکرێت + target_origin: سەرچاوەی ئەکاونتی ڕاپۆرتکراو title: گوزارشتکرا unassign: دیارینەکراوە unresolved: چارەسەر نەکراوە updated_at: نوێکرایەوە + view_profile: نیشاندانی پڕۆفایل + rules: + add_new: یاسا زیاد بکە + delete: سڕینەوە + description_html: لە کاتێکدا زۆربەیان بانگەشەی ئەوە دەکەن کە مەرجەکانی خزمەتگوزارییان خوێندووەتەوە و ڕازین، بەزۆری خەڵک تا دوای سەرهەڵدانی کێشەیەک ناخوێننەوە. ئاسانتر بکە بۆ بینینی یاساکانی سێرڤەرەکەت بە چاوێک بە دابینکردنی لە لیستی خاڵە فیشەکییە تەختەکاندا. هەوڵبدە یاسا تاکەکەسییەکان کورت و سادە بن، بەڵام هەوڵبدە دابەشیان نەکەیت بۆ چەندین بابەتی جیاواز. + edit: یاسای دەستکاریکردن + empty: هێشتا هیچ یاسایەکی سێرڤەر پێناسە نەکراوە. + title: یاساکانی سێرڤەر settings: activity_api_enabled: desc_html: ژماردنی دۆخی بڵاوکراوە ی ناوخۆیی و بەکارهێنەرە چالاکەکان و تۆماری نوێ لە سەتڵی هەفتانە @@ -483,6 +625,8 @@ ckb: min_invite_role: disabled: هیچکەس title: ڕێپێدانی بانگهێشتەکان لەلایەن + require_invite_text: + desc_html: کاتێک تۆمارکردنەکان پێویستیان بە ڕەزامەندی دەستی هەیە، "بۆچی دەتەوێت بەشداری بکەیت؟" نووسینی دەق ئیجبارییە نەک ئیختیاری registrations_mode: modes: approved: پەسەندکردنی داواکراو بۆ ناوتۆمارکردن @@ -569,6 +713,7 @@ ckb: toot_layout: لۆی توت application_mailer: notification_preferences: گۆڕینی پەسەندکراوەکانی ئیمەیڵ + salutation: "%{name}," settings: 'گۆڕینی پەسەندکراوەکانی ئیمەیڵ: %{link}' view: 'نیشاندان:' view_profile: پرۆفایل نیشان بدە @@ -598,11 +743,15 @@ ckb: invalid_reset_password_token: وشەی نهێنی دووبارە ڕێکبخەوە دروست نیە یان بەسەرچووە. تکایە داوایەکی نوێ بکە. link_to_otp: کۆدی دوو فاکتەر لە تەلەفۆنەکەت یان کۆدی چاککردنەوە تێبنووسە link_to_webauth: بەکارهێنانی ئامێری کلیلی پاراستن + log_in_with: بڕۆ ژوورەوە ڵەگەڵ login: چوونەژوورەوە logout: چوونەدەرەوە migrate_account: گواستنەوە بۆ ئەژمێرێکی تر migrate_account_html: ئەگەر دەتەوێت ئەم هەژمارە دووبارە ئاڕاستە بکەیت بۆ ئەژمێرێکی تر، دەتوانیت کرتەیەک لێرە بکەی . or_log_in_with: یان چوونە ژوورەوە بە + providers: + cas: CAS + saml: SAML register: خۆ تۆمارکردن registration_closed: "%{instance} ئەندامانی نوێ قبووڵ ناکات" resend_confirmation: دووبارە ناردنی ڕێنماییەکانی دووپاتکردنەوە @@ -616,8 +765,11 @@ ckb: status: account_status: دۆخی هەژمارە confirming: چاوەڕوانی دڵنیاکردنەوەی ئیمەیڵ بۆ تەواوکردن. + functional: هەژمارەکەت بەتەواوی کاردەکات. pending: ئەپلیکەیشەنەکەت چاوەڕوانی پێداچوونەوەیە لەلایەن ستافەکەمانەوە. لەوانەیە ئەمە هەندێک کاتی بخایەنێت ئەگەر ئەۆپەکەت پەسەند کرا، ئیمەیڵت پێدەگات. redirecting_to: هەژمارەکەت ناچالاکە لەبەرئەوەی ئێستا دووبارە ئاڕاستەدەکرێتەوە بۆ %{acct}. + view_strikes: بینینی لێدانەکانی ڕابردوو لە دژی ئەکاونتەکەت + too_fast: فۆڕم زۆر خێرا پێشکەش کراوە، دووبارە هەوڵبدەرەوە. trouble_logging_in: کێشە ت هەیە بۆ چوونە ژوورەوە? use_security_key: کلیلی ئاسایش بەکاربهێنە authorize_follow: @@ -641,15 +793,24 @@ ckb: errors: invalid_key: کلیلی باوڕپێکراو Ed25519 یان Curve25519 دروست نییە invalid_signature: واژووی Ed25519 بڕوادار نییە + date: + formats: + default: "%b %d, %Y" + with_month_name: "%B %d, %Y" datetime: distance_in_words: - about_x_hours: "%{count}کات" - about_x_years: "%{count}ساڵ" - almost_x_years: "%{count}ساڵ" + 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}ڕۆژ" + over_x_years: "%{count}س" + x_days: "%{count}ڕ" + x_minutes: "%{count}خ" + x_months: "%{count}ما" + x_seconds: "%{count}چ" deletes: challenge_not_passed: ئەو زانیاریانەی تێنووست کردووە ڕاست نەبوو confirm_password: تێپەڕوشەی ئێستات تێبنووسە بۆ سەلماندنی ناسنامەکەت @@ -671,6 +832,10 @@ ckb: directory: ڕێنیشاندەرێکی پرۆفایل explanation: دۆزینەوەی بەکارهێنەران لەسەر بنەمای بەرژەوەندییەکانیان explore_mastodon: گەڕان لە %{title} + disputes: + strikes: + title_actions: + none: ئاگاداری domain_validator: invalid_domain: ناوی دۆمەین بڕوادار نییە errors: @@ -1154,6 +1319,7 @@ ckb: title: disable: هەژمارە بەستراوە none: ئاگاداری + sensitive: هەژمارە وەک هەستیار نیشان کراوە silence: هەژماری سنووردار suspend: هەژمار ڕاگیرا welcome: diff --git a/config/locales/devise.io.yml b/config/locales/devise.io.yml index a0ad7a7c6..7d5668c92 100644 --- a/config/locales/devise.io.yml +++ b/config/locales/devise.io.yml @@ -55,9 +55,9 @@ io: subject: 'Mastodon: 2-faktorverifiko aktivigesis' title: 2FA aktivigesis two_factor_recovery_codes_changed: - explanation: Antea rigannumeri devalidesis e novo facesis. - subject: 'Mastodon: 2-faktorrigannumeri rifacesis' - title: 2FA rigannumeri chanjesis + explanation: Antea rigankodexi devalidesis e novo facesis. + subject: 'Mastodon: 2-faktorrigankodexi rifacesis' + title: 2FA-rigankodexi chanjesis unlock_instructions: subject: Instructioni por riacendar la konto webauthn_credential: diff --git a/config/locales/doorkeeper.ckb.yml b/config/locales/doorkeeper.ckb.yml index f9a688279..3262cc17f 100644 --- a/config/locales/doorkeeper.ckb.yml +++ b/config/locales/doorkeeper.ckb.yml @@ -60,6 +60,8 @@ ckb: error: title: هەڵەیەک ڕوویدا new: + prompt_html: "%{client_name} حەز دەکات مۆڵەت بدرێت بۆ چوونە ناو ئەکاونتەکەت. ئەپڵیکەیشنێکی لایەنی سێیەمە. ئەگەر متمانەت پێی نییە، ئەوا نابێت ڕێگەی پێبدەیت." + review_permissions: پێداچوونەوە بە مۆڵەتەکاندا بکە title: ڕێپێدان پێویستە show: title: کۆپیکردنی کۆدی ئەم رێپێدانە و لکاندنی بە بەرنامەکە. @@ -69,6 +71,12 @@ ckb: confirmations: revoke: ئایا دڵنیایت? index: + authorized_at: ڕێگەپێدراوە لە %{date} + description_html: ئەمانە ئەو بەرنامانەن کە دەتوانن بە بەکارهێنانی API بچنە ناو ئەکاونتەکەتەوە. ئەگەر بەرنامەیەک هەبێت کە لێرەدا نایناسیتەوە، یان بەرنامەیەک هەڵسوکەوتی خراپ دەکات، دەتوانیت دەستڕاگەیشتنەکەی هەڵبوەشێنیتەوە. + last_used_at: دوایین جار لە %{date} بەکارهاتووە + never_used: هه‌رگیز به‌كارنه‌هاتووه‌ + scopes: مۆڵەتەکان + superapp: ناوخۆیی title: بەرنامە ڕێگەپێدراوەکانت errors: messages: @@ -77,6 +85,10 @@ ckb: invalid_client: سەلماندنی کڕیار سەرکەوتوو نەبوو بەهۆی کڕیاری نەناسراوەوە، هیچ ڕەسەنایەتی سەلماندنێکی کلایەنت لەخۆوە نەدەگرێت، یان شێوازی سەلماندنی پەسەند نەکراو. invalid_grant: بەخشین مۆڵەتی دابینکراو نایاساییە، بەسەرچووە، هەڵوەشاندنەوەیە، ناگونجێلەگەڵ ئاراستەی URI بەکارهاتوو لە داواکاری ڕێپێدان، یان دەرچووە بۆ کڕیارێکی تر. invalid_redirect_uri: Uri دووبارە ئاڕاستەکردنەوەکە لەخۆدەگرێت دروست نیە. + invalid_request: + missing_param: 'پارامێتری پێویست نەماوە: %{value}.' + request_not_authorized: داواکاری پێویستە ڕێگەپێدراو بێت. پارامێتری پێویست بۆ ڕێگەدان بە داواکاری نەماوە یان نادروستە. + unknown: داواکارییەکە پارامێتەرێکی پێویستی تێدا نییە، بەهای پارامێتەرێکی پشتگیری نەکراو لەخۆدەگرێت، یان بە شێوەیەکی تر خراپە. invalid_resource_owner: بڕواپێدانەکانی خاوەنی سەرچاوەی دابینکراو دروست نیە، یان ناتوانرێت خاوەنی سەرچاوە بدۆزرێتەوە invalid_scope: بواری داواکراو نادروستە، نەناسراو، یان تێکچووە. invalid_token: @@ -100,10 +112,38 @@ ckb: authorized_applications: destroy: notice: بەرنامە هەڵوەشێنڕا. + grouped_scopes: + access: + read: دەستڕاگەیشتن بە تەنها خوێندنەوە + read/write: دەستڕاگەیشتن بە خوێندنەوە و نووسین + write: دەستڕاگەیشتن بە تەنها نووسین + title: + accounts: هەژمارەکان + admin/accounts: بەڕێوەبردنی ژمێریارییەکان + admin/all: هەموو ئەرکە کارگێڕییەکان + admin/reports: بەڕێوەبردنی ڕاپۆرتەکان + all: هەمووی + blocks: بلۆک + bookmarks: نیشانەکان + conversations: گفتوگۆکان + crypto: کۆدکردنی کۆتایی بۆ کۆتایی + favourites: دڵخوازەکان + filters: پاڵێوراوەکان + follow: پەیوەندیەکان + follows: بەدواداچووان + lists: پێرستەکان + media: هاوپێچەکانی میدیا + mutes: بێ دەنگ + notifications: ئاگادارییەکان + push: پاڵ بە ئاگادارکردنەوەکانەوە بنێ + reports: ڕاپۆرتەکان + search: گەڕان + statuses: نووسراوەکان layouts: admin: nav: applications: بەرنامەکان + oauth2_provider: دابینکەری OAuth2 application: title: داوای ڕێپێدانی OAuth scopes: @@ -113,6 +153,7 @@ ckb: admin:write: دەستکاری هەموو داتاکان بکە لەسەر ڕاژەکار admin:write:accounts: ئەنجامدانی کاری میانڕەوی لەسەر هەژمارەکان admin:write:reports: ئەنجامدانی کاری میانڕەوی لەسەر گوزارشتەکان + crypto: کۆدکردنی کۆتایی بۆ کۆتایی بەکاربهێنە follow: دەستکاریکردنی پەیوەندییەکانی هەژمارەی بەکارهێنەر push: وەرگرتنی ئاگانامەکانی پاڵنان read: هەموو دراوەکانی هەژمارەکەت بخوێنەوە @@ -132,6 +173,7 @@ ckb: write:accounts: دەستکاری پرۆفایلەکەت بکە write:blocks: بلۆک کردنی هەژمارەکەی دۆمەینەکان write:bookmarks: بارەکانی نیشانکەر + write:conversations: بێدەنگکردن و سڕینەوەی گفتوگۆکان write:favourites: دۆخی دڵخوازەکان write:filters: پاڵێوەر دروست بکە write:follows: دوای خەڵک بکەوە diff --git a/config/locales/doorkeeper.eo.yml b/config/locales/doorkeeper.eo.yml index ba4c43122..1584fddf0 100644 --- a/config/locales/doorkeeper.eo.yml +++ b/config/locales/doorkeeper.eo.yml @@ -104,6 +104,14 @@ eo: authorized_applications: destroy: notice: Aplikaĵo malrajtigita. + grouped_scopes: + title: + blocks: Blokita + bookmarks: Legosignoj + lists: Listoj + mutes: Silentigitaj + search: Serĉi + statuses: Afiŝoj layouts: admin: nav: diff --git a/config/locales/doorkeeper.io.yml b/config/locales/doorkeeper.io.yml index 05a537fb9..4d41f9e93 100644 --- a/config/locales/doorkeeper.io.yml +++ b/config/locales/doorkeeper.io.yml @@ -4,7 +4,7 @@ io: attributes: doorkeeper/application: name: Nomo - redirect_uri: Deviacligilo + redirect_uri: Ridirektoligilo scopes: Skopi website: Apliksito errors: @@ -55,52 +55,52 @@ io: title: 'Apliko: %{name}' authorizations: buttons: - authorize: Permisez + authorize: Yurizar deny: Despermisez error: title: Eroro eventis new: - prompt_html: "%{client_name} volas permiso por acesar vua konti. Ol esas externa softwaro. Se vu ne fidas, lore vu debas ne permisar." + prompt_html: "%{client_name} volas permiso por acesar vua konti. Ol esas externa softwaro. Se vu ne fidas, lore vu debas ne yurizar." review_permissions: Kontrolez permisi - title: Permiso bezonesas + title: Yurizo bezonesas show: - title: Kopiez ca permisnumero e glutinez adsur la apliko. + title: Kopiez ca yurizkodexo e glutinez a la apliko. authorized_applications: buttons: revoke: Deaprobez confirmations: revoke: Ka vu esas certa? index: - authorized_at: Permisesis ye %{date} + authorized_at: Yurizesis ye %{date} description_html: Co esas softwari quo povas acesar vua konto per API. Se existas softwari quon vu ne rikonocas hike, o softwari misfuncionas, vu povas desaprobar ola aceso. last_used_at: Antee uzesis ye %{date} never_used: Nulaloke uzesas scopes: Permisi superapp: Interna - title: Vua permisita softwari + title: Vua yurizita softwari errors: messages: - access_denied: Resursproprietanto o permisservilo refuzis la demando. - credential_flow_not_configured: Resursproprietantpasvortidentesesofluo faliis pro ke Doorkeeper.configure.resource_owner_from_credentials ne ajustesis. + access_denied: Moyenproprietanto o yurizservilo refuzis la demando. + credential_flow_not_configured: Moyenproprietantpasvortidentesesofluo faliis pro ke Doorkeeper.configure.resource_owner_from_credentials ne ajustesis. invalid_client: Klientpermiso falias pro nesavita kliento, neinkluzita klientpermiso o nesuportita permismetodo. - invalid_grant: Provizita permiso esis nevalida, expiris, deaprobesis, ne parigas uzita ridirektoligilo dum permisdemando o facesis a altra kliento. + invalid_grant: Provizita yurizo esis nevalida, expiris, deaprobesis, ne parigas uzita ridirektoligilo dum yurizdemando o facesis a altra kliento. invalid_redirect_uri: La inkluzita ridirektoligilo esas nevalida. invalid_request: missing_param: 'Bezonita parametro: %{value}.' - request_not_authorized: Demando bezonas permisesar. Bezonita parametro por permisar demando ne existas o esas nevalida. + request_not_authorized: Demando bezonas yurizesar. Bezonita parametro por yurizar demando ne existas o esas nevalida. unknown: La demando ne havas bezonita parametro, inkluzas nesuportita parametro o malformesas. - invalid_resource_owner: Provizita resursproprietantidenteso esas nevalida o resursproprietanto ne existas + invalid_resource_owner: Provizita Moyenproprietantidenteso esas nevalida o moyenproprietanto ne existas invalid_scope: La demandita skopo esas nevalida, nesavata o malformata. invalid_token: expired: La acesficho expiris revoked: Acesficho deaprobesis unknown: Acesficho esas nevalida - resource_owner_authenticator_not_configured: Resursproprietanto falias trovar pro ke Doorkeeper.configure.resource_owner_authenticator ne ajustesis. - server_error: Permisservilo trovas neanticipata situeso quo preventas ol finar la demando. - temporarily_unavailable: Permisservilo nu ne povas direktar la demando pro provizora eceso o servilmanteno. - unauthorized_client: La kliento ne permisesis agar ca demando per ca metodo. - unsupported_grant_type: Permisprovizontipo ne suportesas da permisservilo. - unsupported_response_type: La permisservilo ne suportas ca responsotipo. + resource_owner_authenticator_not_configured: Moyenproprietanto falias trovar pro ke Doorkeeper.configure.resource_owner_authenticator ne ajustesis. + server_error: Yurizservilo trovas neanticipata situeso quo preventas ol finar la demando. + temporarily_unavailable: Yurizservilo nu ne povas direktar la demando pro provizora eceso o servilmanteno. + unauthorized_client: La kliento ne yurizesis agar ca demando per ca metodo. + unsupported_grant_type: Yurizprovizontipo ne suportesas da yurizservilo. + unsupported_response_type: La yurizservilo ne suportas ca responstipo. flash: applications: create: @@ -111,7 +111,7 @@ io: notice: Apliko novigesis. authorized_applications: destroy: - notice: Apliko aprobesis. + notice: Apliko deaprobesis. grouped_scopes: access: read: Lekto-nura aceso @@ -136,7 +136,7 @@ io: mutes: Silencigati notifications: Avizi push: Pulsavizi - reports: Raportigi + reports: Raporti search: Trovez statuses: Posti layouts: @@ -145,14 +145,14 @@ io: applications: Apliki oauth2_provider: Provizanto di OAuth2 application: - title: Permiso di OAuth bezonesas + title: Yurizo di OAuth bezonesas scopes: admin:read: lektez omna informi di la servilo admin:read:accounts: lektez privata informo di omna konti - admin:read:reports: lektez privata informo di omna raportigo e raportigita konti + admin:read:reports: lektez privata informo di omna raporti e raportizita konti admin:write: modifikez omna informi di la servilo admin:write:accounts: jerez konti - admin:write:reports: jerez raportigi + admin:write:reports: jerez raporti crypto: uzas intersequanta chifro follow: follow, block, unblock and unfollow accounts push: ganez vua pulsavizi @@ -178,8 +178,8 @@ io: write:filters: kreez filtrili write:follows: sequez personi write:lists: kreez listi - write:media: chargez medifaili + write:media: adchargez mediifaili write:mutes: silencigez personi e konversi write:notifications: efacez vua avizi - write:reports: raportigez altra omni + write:reports: raportizez altra omni write:statuses: publikigez posti diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 0609d8735..2ab3692b2 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -104,6 +104,7 @@ eo: confirm: Konfirmi confirmed: Konfirmita confirming: Konfirmante + custom: Kutimo delete: Forigi datumojn deleted: Forigita demote: Degradi @@ -185,6 +186,7 @@ eo: silenced: Silentigita statuses: Mesaĝoj subscribe: Aboni + suspend: Haltigu suspended: Haltigita title: Kontoj unblock_email: Malbloki retpoŝtadresojn @@ -398,6 +400,7 @@ eo: content_policies: policies: reject_reports: Malakcepti raportojn + silence: Kaŝu policy: Politiko dashboard: instance_accounts_dimension: Plej sekvataj kontoj @@ -416,6 +419,7 @@ eo: title: Kontrolo private_comment: Privata komento public_comment: Publika komento + purge: Purigu title: Federacio total_blocked_by_us: Blokitaj de ni total_followed_by_them: Sekvataj de ili @@ -643,6 +647,7 @@ eo: tag_servers_measure: malsamaj serviloj not_usable: Ne povas esti uzata title: Tendencantaj kradvortoj + title: Tendencoj warning_presets: add_new: Aldoni novan delete: Forigi @@ -789,6 +794,7 @@ eo: explore_mastodon: Esplori %{title} disputes: strikes: + created_at: Datita title_actions: delete_statuses: Forigo de afiŝo none: Averto @@ -1204,6 +1210,7 @@ eo: formats: default: "%Y-%m-%d %H:%M" month: "%b %Y" + time: "%H:%M" two_factor_authentication: add: Aldoni disable: Malebligi @@ -1226,6 +1233,7 @@ eo: warning: categories: spam: Spamo + reason: 'Kialo:' subject: disable: Via konto %{acct} estas frostigita none: Averto por %{acct} diff --git a/config/locales/et.yml b/config/locales/et.yml index e08b091b1..3c48bad5b 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -7,7 +7,8 @@ et: active_count_after: aktiivne active_footnote: Igakuiselt aktiivseid kasutajaid (MAU) administered_by: 'Administraator:' - apps: Mobiilrakendused + api: API + apps: Mobiilirakendused apps_platforms: Kasuta Mastodoni iOS-is, Androidis ja teistel platvormidel browse_directory: Sirvi profiilide kataloogi ja filtreeri huvide alusel browse_local_posts: Sirvi reaalajas voogu avalikest postitustest sellest serverist @@ -25,19 +26,22 @@ et: Seda kasutatakse föderatiivsetel põhjustel ning seda ei tohiks blokeerida, välja arvatud juhul, kui soovite blokeerida tervet serverit, kuid sellel juhul soovitame hoopis kasutada domeeni blokeerimist. learn_more: Lisateave privacy_policy: Privaatsuspoliitika + rules: Serveri reeglid + rules_html: 'Järgneb kokkuvõte reeglitest, mida pead järgima, kui lood endale siin Mastodoni serveris konto:' see_whats_happening: Vaata, mis toimub server_stats: 'Serveri statistika:' source_code: Lähtekood status_count_after: - one: staatust + one: postitust other: staatuseid - status_count_before: Kes omavad + status_count_before: Kes on avaldanud tagline: Jälgi sõpru ja leia uusi terms: Kasutustingimused unavailable_content: Sisu pole saadaval unavailable_content_description: reason: Põhjus rejecting_media: 'Meedia failid sellelt serverilt ei töödelda ega salvestata ning mitte ühtegi eelvaadet ei kuvata, mis nõuab manuaalselt vajutust originaalfailile:' + rejecting_media_title: Filtreeritud meediaga silenced: 'Postitused nendelt serveritelt peidetakse avalikes ajajoontes ja vestlustes ning mitte ühtegi teavitust ei tehta nende kasutajate tegevustest, välja arvatud juhul, kui Te neid jälgite:' suspended: 'Mitte mingeid andmeid nendelt serveritelt ei töödelda, salvestata ega vahetata, tehes igasuguse interaktsiooni või kirjavahetuse kasutajatega nendelt serveritelt võimatuks:' unavailable_content_html: Mastodon tavaliselt lubab Teil vaadata sisu ning suhelda kasutajatega üks kõik millisest teisest serverist fediversumis. Need on erandid, mis on paika pandud sellel kindlal serveril. @@ -67,10 +71,10 @@ et: pin_errors: following: Te peate juba olema selle kasutaja jälgija, keda te heaks kiidate posts: - one: Tuututus - other: Tuututused - posts_tab_heading: Tuututused - posts_with_replies: Tuututused ja vastused + one: Postitus + other: Postitused + posts_tab_heading: Postitused + posts_with_replies: Postitused ja vastused roles: admin: Administraator bot: Robot diff --git a/config/locales/io.yml b/config/locales/io.yml index 58d7f99f3..1d0304d09 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -25,7 +25,7 @@ io: instance_actor_flash: 'Ca konto esas virtuala aganto quo uzesas por reprezentar la servilo e ne irga individuala uzanto. Ol uzesas por federskopo e ne debas restriktesar se vu ne volas obstruktar tota instanco, se ol esas la kaso, do vu debas uzar domenobstrukto. ' - learn_more: Lernez plu + learn_more: Lernez pluse logged_in_as_html: Vu nun eniras quale %{username}. logout_before_registering: Vu ja eniris. privacy_policy: Privatesguidilo @@ -48,7 +48,7 @@ io: rejecting_media_title: Filtrita medii silenced: 'Posti de ca servili celesos en publika tempolinei e konversi, e notifiki ne facesos de oli uzantinteragi, se vu ne sequas oli:' silenced_title: Limitizita servili - suspended: 'Informi de ca servili procedagesos o retenesos o kambiesos, do irga interago o komuniko kun uzanti de ca servili esas imposebla:' + suspended: 'Informi de ca servili procedagesos o retenesos o interchanjesos, do irga interago o komuniko kun uzanti de ca servili esas neposibla:' suspended_title: Restriktita servili unavailable_content_html: Mastodon generale permisas on vidar kontenajo e interagar kun uzanti de irga altra servilo en fediverso. Existas eceptioni quo facesis che ca partikulara servilo. user_count_after: @@ -135,7 +135,7 @@ io: followers: Uzanti follows: Uzati header: Kapimajo - inbox_url: URL di enbuxo + inbox_url: URL di mesajbuxo invite_request_text: Juntomotivo invited_by: Invitesis da ip: IP @@ -201,7 +201,7 @@ io: password_and_2fa: Pasvorto e 2FA sensitive: Forcsentoza sensitized: Markizesis quale sentoza - shared_inbox_url: Partigita enbux-URL + shared_inbox_url: Partigita URL di mesajbuxo show: created_reports: Reports created by this account targeted_reports: Reports made about this account @@ -378,7 +378,7 @@ io: title: Insertez nova kustumizita emocimajo not_permitted: Vu ne permisesis agar co overwrite: Remplasez - shortcode: Kurtnumero + shortcode: Kurtkodexo shortcode_hint: Minime 2 simboli, nur literi e nombri e sublinei title: Kustumizita emocimaji uncategorized: Nekategorigita @@ -480,8 +480,8 @@ io: instances: availability: description_html: - one: Se sendar a domeno falias %{count} dio sen sucesar, plua sendoprobi ne agesos se sendo de la domeno ne ganesas. - other: Se sendar a domeno falias en %{count} diferanta dii sen sucesar, plua sendoprobi ne agesos se sendo de la domeno ne ganesas. + one: Se sendar a domeno falias %{count} dio sen sucesar, plusa sendoprobi ne agesos se sendo de la domeno ne ganesas. + other: Se sendar a domeno falias en %{count} diferanta dii sen sucesar, plusa sendoprobi ne agesos se sendo de la domeno ne ganesas. failure_threshold_reached: Faliolimito atingesis en %{date}. failures_recorded: one: Falita probo en %{count} dio. @@ -523,7 +523,7 @@ io: unavailable: Nedisponebla delivery_available: Sendo esas disponebla delivery_error_days: Senderordii - delivery_error_hint: Se sendo ne esas posebla dum %{count} dii, ol automata markizesos quale ne sendebla. + delivery_error_hint: Se sendo ne esas posibla dum %{count} dii, ol automata markizesos quale ne sendebla. destroyed_msg: Informi de %{domain} nun faskigesis por partikulara efaco. empty: Nula domeni. known_accounts: @@ -602,9 +602,9 @@ io: 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: Profilo esos videbla nur por personi quo ja sequis o manuale trovis, se severe limitizas ola porteo. Sempre povas inversigesar. - suspend_description_html: Ca profilo e omna ola kontenaji divenos neacesebla til ol eventuale efacesas. Interagar kun la konto divenos neposebla. Inversigebla til 30 dii. + suspend_description_html: Ca profilo e omna ola kontenaji divenos neacesebla til ol eventuale efacesas. Interagar kun la konto divenos neposibla. Inversigebla til 30 dii. actions_description_html: Decidez ago por rezolvar ca raporto. Se vu decidar puniso kontre raportizesis konto, retpostoavizo sendesos a ol, ecepte kande Spam kategorio selektesis. - add_to_report: Insertez plu a raporto + add_to_report: Insertez pluse a raporto are_you_sure: Ka vu esas certa? assign_to_self: Taskigez me assigned: Taskigita jerero @@ -613,7 +613,7 @@ io: 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 informo, %{name} skribis:' + comment_description_html: 'Por donar plu multa informo, %{name} skribis:' created_at: Raportizesis delete_and_resolve: Efacez posti forwarded: Sendesis @@ -889,14 +889,14 @@ io: aliases: add_new: Kreez alternativa nomo created_msg: Sucesoze kreis nova alternativa nomo. Vu povas nun komencar transfero de la olda konto. - deleted_msg: Sucesoze efacis alternativa nomo. Transferar de ta konto a co ne esos posebla. + deleted_msg: Sucesoze efacis alternativa nomo. Transferar de ta konto a co ne esos posibla. empty: Vu ne havas alternativa nomi. hint_html: Se vu volas transferesar de altra konto a co, hike vu povas krear alternativnomo, quo bezonesas ante vu povas durigar transferar sequanti de la olda konto a co. Ca ago esas nedanjeroza e inversigebla. Kontomigro komencesas de la olda konto. remove: Deligez alternative nomo appearance: - advanced_web_interface: Avanca retintervizajo - advanced_web_interface_hint: 'Se vu volas uzar tota skrenlong, avanca retintervizajo povigas vu modifikar multa diferanta kolumni por vida multa informi en sama tempo quon vu volas: Hemo, avizi, federatata tempolineo, multa listi e hashtagi.' - animations_and_accessibility: Animo e aceseso + advanced_web_interface: Avancata retintervizajo + advanced_web_interface_hint: 'Se vu volas uzar tota skrenlongeso, avancata retintervizajo povigas vu modifikar multa diferanta kolumni por vida multa informi en sama tempo quon vu volas: Hemo, avizi, federatata tempolineo, multa listi e hashtagi.' + animations_and_accessibility: Animacii e aceseso confirmation_dialogs: Konfirmdialogi discovery: Deskovro localization: @@ -930,18 +930,18 @@ io: 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 plu! + 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 tu ne recevis la instrucioni por konfirmar? 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. - link_to_otp: Insertez 2-faktornumero de vua fono o rigannumero + link_to_otp: Insertez 2-faktorkodexo de vua fono o rigankodexo link_to_webauth: Uzez vua sekuresklefaparato log_in_with: Enirez per login: Enirar logout: Ekirar migrate_account: Transferez a diferanta konto - migrate_account_html: Se vu volas ridirektar ca konto a diferanto, vu povas opcionagar hike. + migrate_account_html: Se vu volas ridirektar ca konto a diferanto, vu povas ajustar hike. or_log_in_with: O eniras per providers: cas: CAS @@ -1019,7 +1019,7 @@ io: email_contact_html: Se ol ankore ne venas, vu povas retpostigar a %{email} por ganar helpo email_reconfirmation_html: Se vu ne ganas konfirmretposto, vu povas demandar itere irreversible: Vu ne povos riganar o riaktivigar vua konto - more_details_html: Por plu detali, videz privatesguidilo. + more_details_html: Por plu multa detali, videz privatesguidilo. username_available: Vua uzantonomo divenos disponebla itere username_unavailable: Vua uzantonomo restos nedisponebla directories: @@ -1116,8 +1116,8 @@ io: title: Insertez nova filtrilo footer: developers: Developeri - more: Plu… - resources: Resursi + more: Pluse… + resources: Moyeni trending_now: Nuna tendenco generic: all: Omna @@ -1180,7 +1180,7 @@ io: authentication_methods: otp: 2-faktoryurizessoftwaro password: pasvorto - sign_in_token: retpostosekuresnumero + sign_in_token: retpostosekureskodexo webauthn: sekuresklefi description_html: Se vu vidas aktiveso quon vu ne rikonocas, konsiderez chanjar vua pasvorto e aktivigez 2-faktoryurizo. empty: Yurizeshistorio esas nedisponebla @@ -1194,9 +1194,9 @@ io: too_many: Ne povas atachar plu kam 4 faili migrations: acct: Transferesis a - cancel: Extingar ridirekto - cancel_explanation: Extingar ridirekto riaktivigos vua nuna konto, ma ne riganos sequanti quo transferesis a ta konto. - cancelled_msg: Sucesoze extingar ridirekto. + cancel: Anulez ridirekto + cancel_explanation: Anular ridirekto riaktivigos vua nuna konto, ma ne riganos sequanti quo transferesis a ta konto. + cancelled_msg: Sucesoze anulis ridirekto. errors: already_moved: esas sama transferkonto missing_also_known_as: ne esas alternativa nomo di ca konto @@ -1215,7 +1215,7 @@ io: redirecting_to: Vua konto ridirektesas a %{acct}. set_redirect: Fixez ridirekto warning: - backreference_required: Nova konto mustas unesme havar opciono quo dopreferas co + backreference_required: Nova konto mustas unesme ajustesar por dopreferar co before: 'Ante durar, lektez ca noti sorgeme:' cooldown: Pos transferesar, existas varttempo kande vu ne povas transferesar itere disabled_account: Vua nuna konto ne divenos tote uzebla pose. Tamen, vu povas acesar informexportaco e anke riaktivigo. @@ -1287,13 +1287,13 @@ io: thousand: K trillion: T otp_authentication: - code_hint: Insertez numero quo facesis da vua yurizsoftwaro por konfirmar - description_html: Se vu aktivigas 2-faktoryurizo per yurizsoftwaro, eniro bezonos vu havar vua fono, quale facas fichi por vu por enirar. + code_hint: Insertez kodexo quo facesis da vua yurizsoftwaro por konfirmar + description_html: Se vu aktivigas 2-faktoryurizo per yurizsoftwaro, eniro bezonos vu havar vua smartfono, quale facas fichi por vu por enirar. enable: Aktivigez - instructions_html: "Skanez ca QR-numero a Google Authenticator o simila TOTP-softwaro en vua fono. Pos co, ta softwaro facos fichi quon vu bezonos insertar kande enirar." - manual_instructions: 'Se vu ne povas skanar numero QR e bezonas insertar manuala, subo esas textosekreto:' + instructions_html: "Skanez ca QR-kodexo a Google Authenticator o simila TOTP-softwaro en vua smartfono. Pos co, ta softwaro facos fichi quon vu bezonos insertar kande enirar." + manual_instructions: 'Se vu ne povas skanar QR-kodexo e bezonas insertar manuala, subo esas textosekreto:' setup: Facez - wrong_code: Insertita numero esas nevalida! Ka serviltempo e aparattempo esas korekta? + wrong_code: Insertita kodexo esas nevalida! Ka serviltempo e aparattempo esas korekta? pagination: newer: Nova next: Sequanta @@ -1411,7 +1411,7 @@ io: account: Konto account_settings: Kontoopcioni aliases: Kontoaltnomi - appearance: Formo + appearance: Aspekto authorized_apps: Yurizita apliki back: Retro a Mastodon delete: Kontoefaco @@ -1625,7 +1625,7 @@ io: enabled: 2-faktoryurizeso aktivigesas enabled_success: 2-faktoryurizeso sucesoze aktivigesas generate_recovery_codes: Generate Recovery Codes - lost_recovery_codes: Rigannumeri povigas vu riganas aceso a vua konto se vu perdas vua fono. Se vu perdas vua rigannumeri, vu povas rifacar hike. Vua olda rigannumeri nevalidigesos. + lost_recovery_codes: Rigankodexi povigas vu riganas aceso a vua konto se vu perdas vua smartfono. Se vu perdas vua rigankodexi, vu povas rifacar hike. Vua olda rigankodexi nevalidigesos. methods: 2-faktormetodi otp: Yurizsoftwaro recovery_codes: Kopiez rigannumeri @@ -1661,7 +1661,7 @@ io: violation: Kontenajo nesequas ca komunitatguidili explanation: delete_statuses: Ol trovesis ke kelka vua posti nesequas komunitatguidilo e do efacesis da jereri di %{instance}. - disable: Vu ne povas uzar vua konto plu, ma vua profilo e altra informi restas bone. Vu povas demandar kopiur di vua informi, chanjar kontoopcioni e efacar vua konto. + disable: Vu ne povas uzar vua konto pluse, ma vua profilo e altra informi restas bone. Vu povas demandar kopiur di vua informi, chanjar kontoopcioni e efacar vua konto. mark_statuses_as_sensitive: Kelka vua posti markizesis quale sentoza da jereri di %{instance}. Do, personi bezonos kliktar medii en posti ante prevido montresas. Vu povas markizar medii quale sentoza per su kande postar en futuro. sensitive: Pos co, omna vua adchargita mediifaili markizesos quale sentoza e celesos dop kliktoaverto. silence: Vu povas ankore uzar vua konto ma nur personi quo ja sequis vu vidos vua posti en ca servilo, e vu forsan neinkluzesas de diversa deskovrotraiti. Tamen, altra personi povas ankore manuala sequar vu. @@ -1686,7 +1686,7 @@ io: suspend: Konto restriktigesis welcome: edit_profile_action: Facez profilo - edit_profile_step: Vu povas kustumizar vua profilo per adchargar profilimajo, kapimajo, chanjar vua montronomo e plu. Se vu volas kontrolar nova sequanti ante oli permisesar sequantar vu, vu povas klefklozar vua konto. + edit_profile_step: Vu povas kustumizar vua profilo per adchargar profilimajo, kapimajo, chanjar vua montronomo e pluse. Se vu volas kontrolar nova sequanti ante oli permisesar sequantar vu, vu povas klefklozar vua konto. explanation: Subo esas guidilo por helpar vu komencar final_action: Komencez postigar final_step: 'Jus postigez! Mem sen sequanti, vua publika posti povas videsar da altra personi, exemplo es en lokala tempolineo e en hashtagi. Vu povas anke introduktar su en #introductions hashtagi.' @@ -1696,9 +1696,9 @@ io: review_preferences_step: Certigez ke vu fixas vua preferaji, tale quala retposto quon vu volas ganar, o privatesnivelo quo vu volas vua posti normale uzar. Se vu ne havas movmalado, vu povas selektar aktivigar GIF-autopleo. subject: Bonveno a Mastodon tip_federated_timeline: Federatata tempolineo esas generala vido di reto di Mastodon. Ma, ol nur inkluzas personi quon vua vicini abonis, do ol ne esas kompleta. - tip_following: Vu sequas vua administrer(o) di servilo quale originala stando. Por sequar plua interesanta personi, videz lokala e federatata tempolinei. + tip_following: Vu sequas vua administrer(o) di servilo quale originala stando. Por sequar plu multa interesanta personi, videz lokala e federatata tempolinei. tip_local_timeline: Lokala tempolineo esas generala vido di personi che %{instance}. Co esas vua apuda vicini! - tip_mobile_webapp: Se vua fonvidilo povigas vu pozar Mastodon a vua hemskreno, vu povas ganar pulsavizi. Ol funcionas tale traiti di fonsoftwaro! + tip_mobile_webapp: Se vua smartfonvidilo povigas vu pozar Mastodon a vua hemskreno, vu povas ganar pulsavizi. Ol funcionas tale traiti di smartfonsoftwaro! tips: Guidili title: Bonveno, %{name}! users: diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 8b2d2787d..b3038846e 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -492,6 +492,9 @@ ru: by_domain: Домен confirm_purge: Вы уверены, что хотите навсегда удалить данные с этого домена? content_policies: + comment: Внутренняя заметка + policies: + reject_media: Отклонить медиа policy: Политика dashboard: instance_accounts_measure: сохраненные учетные записи @@ -826,6 +829,7 @@ ru: admin_mailer: new_appeal: actions: + none: предупреждение silence: ограничить учётную запись suspend: приостановить действие учётной записи subject: "%{username} обжалует решение модерации на %{instance}" @@ -987,6 +991,7 @@ ru: disputes: strikes: action_taken: Предпринятые меры + appeal: Обжаловать appeal_approved: Это замечание было успешно обжаловано и более не действительно appeal_rejected: Апелляция была отклонена appeal_submitted_at: Апелляция отправлена @@ -1048,7 +1053,7 @@ ru: add_new: Добавить errors: limit: Вы уже добавили максимальное число хэштегов - hint_html: "Особенные хэштеги отображаются в вашем профиле и позволяют людям просматривать ваши посты, отмеченные ими. Это отличный инструмент для отслеживания долгосрочных проектов и творческих работ." + hint_html: "Избранные хэштеги отображаются в вашем профиле и позволяют людям быстро найти посты, отмеченные ими. Это отличный инструмент для отслеживания долгосрочных проектов и творческих работ." filters: contexts: account: Посты в профилях @@ -1379,7 +1384,7 @@ ru: development: Разработчикам edit_profile: Изменить профиль export: Экспорт данных - featured_tags: Особенные хэштеги + featured_tags: Избранные хэштеги import: Импорт import_and_export: Импорт и экспорт migrate: Миграция учётной записи @@ -1455,9 +1460,9 @@ ru: unlisted_long: Показывать всем, но не отображать в публичных лентах statuses_cleanup: enabled: Автоматически удалять устаревшие посты - enabled_hint: Автоматически удаляет ваши посты после того, как они достигли определённого возраста, за некоторыми исключениями ниже. + enabled_hint: Автоматически удаляет ваши посты после того, как они достигли определённого возрастного порога, за некоторыми исключениями ниже. exceptions: Исключения - explanation: Из-за того, что удаление постов — это ресурсоёмкий процесс, оно производится медленно со временем, когда сервер менее всего занят. По этой причине, посты могут удаляться не сразу, а спустя определённое время, по достижению возрастного порога. + explanation: Из-за того, что удаление постов — это ресурсоёмкий процесс, оно производится медленно со временем, когда сервер менее всего загружен. По этой причине, посты могут удаляться не сразу, а спустя определённое время, по достижению возрастного порога. ignore_favs: Игнорировать отметки «избранного» ignore_reblogs: Игнорировать продвижения interaction_exceptions: Исключения на основе взаимодействий @@ -1465,13 +1470,13 @@ ru: keep_direct: Не удалять адресованные посты keep_direct_hint: Не удалять ваши посты с «адресованной» видимостью. keep_media: Не удалять посты с вложениями - keep_media_hint: Не удалять ваши посты, содержащие любые медийные вложения + keep_media_hint: Не удалять ваши посты, содержащие любые медийные вложения. keep_pinned: Не удалять закреплённые посты keep_pinned_hint: Не удалять ваши посты, которые закреплены в профиле. keep_polls: Не удалять опросы keep_polls_hint: Не удалять ваши посты с опросами. keep_self_bookmark: Не удалять закладки - keep_self_bookmark_hint: Не удалять ваши посты с закладками + keep_self_bookmark_hint: Не удалять ваши посты с закладками. keep_self_fav: Оставить посты, отмеченные «избранными» keep_self_fav_hint: Не удалять ваши посты, если вы отметили их как «избранные». min_age: @@ -1674,7 +1679,7 @@ ru: seamless_external_login: Вы залогинены через сторонний сервис, поэтому настройки e-mail и пароля недоступны. signed_in_as: 'Выполнен вход под именем:' verification: - explanation_html: 'Владение ссылками в профиле можно подтвердить. Для этого на указанном сайте должна содержаться ссылка на ваш профиль Mastodon, а у самой ссылки должен быть атрибут rel="me". Что внутри ссылки — значения не имеет. Вот вам пример ссылки:' + explanation_html: 'Вы можете подтвердить владение любой из ссылок в таблице. Для этого страница по ссылке должна содержать обратную ссылку на ваш профиль Mastodon, а у самой ссылки должен атрибут rel="me". Текст ссылки значения не имеет. Вот пример:' verification: Верификация ссылок webauthn_credentials: add: Добавить новый ключ безопасности diff --git a/config/locales/simple_form.io.yml b/config/locales/simple_form.io.yml index 4f6f2f782..0e2d5e3a9 100644 --- a/config/locales/simple_form.io.yml +++ b/config/locales/simple_form.io.yml @@ -17,7 +17,7 @@ io: types: 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 markigesar quale sentiva. + sensitive: Koaktez omna mediiatachaji da ca uzanto markizesar quale sentoza. silence: Preventez la uzanto de povar postar per publika videbleso, celez olia posti e avizi de personi quo ne sequas oli. suspend: Preventez irga interago de o a ca konto e efacez ola kontenaji. Inversebla til 30 dii. warning_preset_id: Neobligata. Vu povas ankore insertar kustume texto a extremajo di fixito @@ -33,7 +33,7 @@ io: autofollow: Personi quo registresesas tra invito automatika sequos vu avatar: En la formato PNG, GIF o JPG. Til %{size}. Esos mikrigita a %{dimensions}px bot: Signalez a altra personi ke la konto precipue havas automatikigita agi e forsan ne surveyesas - context: 1 o plu situeso kande filtrilo debas aplikesar + context: Situeso kande filtrilo debas aplikesar current_password: Por sekuresorezoni, pozez pasvorto di ca konto current_username: Por konfirmar, pozez uzantonomo di ca konto digest: Nur sendesas pos longa neaktiveso e nur se vu ganis irga mesaji dum ke vu esas neprezenta @@ -51,7 +51,7 @@ io: setting_aggregate_reblogs: Ne montrez nova busti di posti quo recente bustesas (nova busti) 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 markigesis quale sentoza + setting_display_media_default: Celez medii quo markizesis quale sentoza setting_display_media_hide_all: Sempre celez medii setting_display_media_show_all: Sempre montrez medii setting_hide_network: Vua sequato e sequanto celesos che vua profilo @@ -76,10 +76,10 @@ io: text: Co helpos ni kontrolar vua apliko ip_block: comment: Neobligata. Memorez por quo vu insertas ca regulo. - expires_in: IP-Adresi esas finita resurs, oli kelkafoye partigesas e frequenta uzesas da multa personi. Do, nedefinita IP-restrikti ne rekomendesas. + expires_in: IP-Adresi esas finita moyeno, oli kelkafoye partigesas e frequenta uzesas da multa personi. Do, nedefinita IP-restrikti ne rekomendesas. ip: Tipez adreso di IPv4 o IPv6. Vu povas restrikar tota porteo per sintaxo CIDR. Sorgemez por ke vu ne klefklozas su! severities: - no_access: Restriktez aceso a omna resursi + no_access: Restriktez aceso a omna moyeni sign_up_requires_approval: Nova registro bezonos vua aprobo severity: Selektez quo eventos kun demandi de ca IP rule: @@ -104,7 +104,7 @@ io: text: Fixita texto title: Titulo admin_account_action: - include_statuses: Inkluzez raportigita posti en retposto + include_statuses: Inkluzez raportizita posti en retposto send_email_notification: Notifikez la uzanto di retposto text: Kustumizita averto type: Ago @@ -140,7 +140,7 @@ io: fields: Profilmetadato header: Kapimajo honeypot: "%{label} (ne plenigez)" - inbox_url: URL di relayoenbuxo + inbox_url: URL di relayomesajbuxo irreversible: Deslevez e ne celez locale: Linguo locked: Privatigar la konto @@ -150,7 +150,7 @@ io: otp_attempt: Dufaktora identigilo password: Pasvorto phrase: Klefvorto o frazo - setting_advanced_layout: Aktivigez avanca retintervizajo + setting_advanced_layout: Aktivigez avancata retintervizajo setting_aggregate_reblogs: Grupbusti en tempolinei setting_always_send_emails: Sempre sendez retpostoavizi setting_auto_play_gif: Automate pleez animigita GIFi @@ -158,17 +158,17 @@ io: setting_crop_images: Ektranchez imaji en neexpansigita posti a 16x9 setting_default_language: Postolinguo setting_default_privacy: Videbleso di la mesaji - setting_default_sensitive: Sempre markigez medii quale privata + setting_default_sensitive: Sempre markizez medii quale sentoza setting_delete_modal: Montrez konfirmdialogo ante efacar posto setting_disable_swiping: Desaktivigez fingromovi setting_display_media: Mediomontrajo setting_display_media_default: Originalo setting_display_media_hide_all: Celez omno setting_display_media_show_all: Montrez omno - setting_expand_spoilers: Sempre expansigez posti quo markigesis kun kontenajaverti + setting_expand_spoilers: Sempre expansigez posti quo markizesis kun kontenajaverti setting_hide_network: Celez vua sociala grafiko setting_noindex: Desjuntez trovmotorindexigo - setting_reduce_motion: Diminutez animmovo + setting_reduce_motion: Diminutez moveso di animacii setting_show_application: Montrez softwaro quo uzesis por sendar posti setting_system_font_ui: Uzez originala literfonto di sistemo setting_theme: Sittemo @@ -177,7 +177,7 @@ io: setting_use_blurhash: Montrez koloroza inklini por celata medii setting_use_pending_items: Modo lenta severity: Severeso - sign_in_token_attempt: Sekuresnumero + sign_in_token_attempt: Sekureskodexo type: Tipo di importaco username: Uzernomo username_or_email: Uzantonomo o retposto diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml index 30e7bd3a3..839be0a69 100644 --- a/config/locales/simple_form.ru.yml +++ b/config/locales/simple_form.ru.yml @@ -37,9 +37,9 @@ ru: current_password: В целях безопасности введите пароль текущей учётной записи current_username: Для подтверждения, пожалуйста, введите имя пользователя текущей учётной записи digest: Если вы долго не заглядывали, отправим вам дайджест событий, которые происходили в период вашего отсутствия. - discoverable: Разрешить другим людям находить ваш профиль через рекомендации, тренды и другие функции + discoverable: Разрешить другим людям находить ваш профиль через рекомендации, тренды и другие функции. email: Вам будет отправлено электронное письмо с подтверждением. - fields: В профиле можно отобразить до 4 пунктов в виде таблицы. + fields: В профиле можно отобразить до 4 пунктов в виде таблицы. Например, ваши местоимения, часовой пояс или ссылку на свой сайт. header: Поддерживается PNG, GIF и JPG. Максимальный размер — %{size}. Будет уменьшена до %{dimensions}px. inbox_url: Копировать URL с главной страницы ретранслятора, который вы хотите использовать irreversible: Отфильтрованные посты будут утеряны навсегда, даже если в будущем фильтр будет убран @@ -133,7 +133,7 @@ ru: context: Контекст фильтра current_password: Текущий пароль data: Данные - discoverable: Показывать эту учётную запись в каталоге + discoverable: Рекомендовать учётную запись другим пользователям display_name: Отображаемое имя email: Адрес e-mail expires_in: Истекает через @@ -185,7 +185,7 @@ ru: email_domain_block: with_dns_records: Включить MX-записи и IP-адреса домена featured_tag: - name: Хэштег + name: Добавить хэштег interactions: must_be_follower: Присылать уведомления только от подписчиков must_be_following: Присылать уведомления только от людей на которых вы подписаны From 25dda3061e4308a5005d3a2fef373acffc510a66 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 26 May 2022 00:20:30 +0200 Subject: [PATCH 085/652] Fix unnecessary query on status creation (#17901) --- app/models/status.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/status.rb b/app/models/status.rb index a4e685ce3..4828d6340 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -454,7 +454,7 @@ class Status < ApplicationRecord end def set_poll_id - update_column(:poll_id, poll.id) unless poll.nil? + update_column(:poll_id, poll.id) if association(:poll).loaded? && poll.present? end def set_visibility From 4d48d83b0088f9e039691435407bd3d6e92e6f63 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 May 2022 08:05:53 +0900 Subject: [PATCH 086/652] Bump @babel/core from 7.17.12 to 7.18.0 (#18490) Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.17.12 to 7.18.0. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.0/packages/babel-core) --- updated-dependencies: - dependency-name: "@babel/core" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 84 ++++++++++++++++++++++++++-------------------------- 2 files changed, 43 insertions(+), 43 deletions(-) diff --git a/package.json b/package.json index 90fc54edc..4bf2dd849 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ }, "private": true, "dependencies": { - "@babel/core": "^7.17.12", + "@babel/core": "^7.18.0", "@babel/plugin-proposal-decorators": "^7.17.12", "@babel/plugin-transform-react-inline-elements": "^7.16.7", "@babel/plugin-transform-runtime": "^7.17.12", diff --git a/yarn.lock b/yarn.lock index 44b8abacf..b983c9bbb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -28,33 +28,33 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw== -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.17.12", "@babel/core@^7.7.2": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.12.tgz#b4eb2d7ebc3449b062381644c93050db545b70ee" - integrity sha512-44ODe6O1IVz9s2oJE3rZ4trNNKTX9O7KpQpfAP4t8QII/zwrVRHL7i2pxhqtcY7tqMLrrKfMlBKnm1QlrRFs5w== +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.0", "@babel/core@^7.7.2": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.0.tgz#c58d04d7c6fbfb58ea7681e2b9145cfb62726756" + integrity sha512-Xyw74OlJwDijToNi0+6BBI5mLLR5+5R3bcSH80LXzjzEGEUlvNzujEE71BaD/ApEZHAvFI/Mlmp4M5lIkdeeWw== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.12" + "@babel/generator" "^7.18.0" "@babel/helper-compilation-targets" "^7.17.10" - "@babel/helper-module-transforms" "^7.17.12" - "@babel/helpers" "^7.17.9" - "@babel/parser" "^7.17.12" + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helpers" "^7.18.0" + "@babel/parser" "^7.18.0" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.12" - "@babel/types" "^7.17.12" + "@babel/traverse" "^7.18.0" + "@babel/types" "^7.18.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.17.12", "@babel/generator@^7.7.2": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.12.tgz#5970e6160e9be0428e02f4aba62d8551ec366cc8" - integrity sha512-V49KtZiiiLjH/CnIW6OjJdrenrGoyh6AmKQ3k2AZFKozC1h846Q4NYlZ5nqAigPDUXfGzC88+LOUuG8yKd2kCw== +"@babel/generator@^7.18.0", "@babel/generator@^7.7.2": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.0.tgz#46d28e8a18fc737b028efb25ab105d74473af43f" + integrity sha512-81YO9gGx6voPXlvYdZBliFXAZU8vZ9AZ6z+CjlmcnaeOcYSFbMTpdeDUO9xD9dh/68Vq03I8ZspfUTPfitcDHg== dependencies: - "@babel/types" "^7.17.12" + "@babel/types" "^7.18.0" "@jridgewell/gen-mapping" "^0.3.0" jsesc "^2.5.1" @@ -214,10 +214,10 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-module-transforms@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.12.tgz#bec00139520cb3feb078ef7a4578562480efb77e" - integrity sha512-t5s2BeSWIghhFRPh9XMn6EIGmvn8Lmw5RVASJzkIx1mSemubQQBNIZiQD7WzaFmaHIrjAec4x8z9Yx8SjJ1/LA== +"@babel/helper-module-transforms@^7.17.12", "@babel/helper-module-transforms@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz#baf05dec7a5875fb9235bd34ca18bad4e21221cd" + integrity sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA== dependencies: "@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-module-imports" "^7.16.7" @@ -225,8 +225,8 @@ "@babel/helper-split-export-declaration" "^7.16.7" "@babel/helper-validator-identifier" "^7.16.7" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.12" - "@babel/types" "^7.17.12" + "@babel/traverse" "^7.18.0" + "@babel/types" "^7.18.0" "@babel/helper-optimise-call-expression@^7.16.7": version "7.16.7" @@ -306,14 +306,14 @@ "@babel/traverse" "^7.16.8" "@babel/types" "^7.16.8" -"@babel/helpers@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.9.tgz#b2af120821bfbe44f9907b1826e168e819375a1a" - integrity sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q== +"@babel/helpers@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.0.tgz#aff37c3590de42102b54842446146d0205946370" + integrity sha512-AE+HMYhmlMIbho9nbvicHyxFwhrO+xhKB6AhRxzl8w46Yj0VXTZjEsAoBVC7rB2I0jzX+yWyVybnO08qkfx6kg== dependencies: "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.9" - "@babel/types" "^7.17.0" + "@babel/traverse" "^7.18.0" + "@babel/types" "^7.18.0" "@babel/highlight@^7.10.4": version "7.12.13" @@ -333,10 +333,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.12", "@babel/parser@^7.7.0": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.12.tgz#36c2ed06944e3691ba82735fc4cf62d12d491a23" - integrity sha512-FLzHmN9V3AJIrWfOpvRlZCeVg/WLdicSnTMsLur6uDj9TT8ymUlG9XxURdW/XvuygK+2CW0poOJABdA4m/YKxA== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.18.0", "@babel/parser@^7.7.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.0.tgz#10a8d4e656bc01128d299a787aa006ce1a91e112" + integrity sha512-AqDccGC+m5O/iUStSJy3DGRIUFu7WbY/CppZYwrEUB4N0tZlnI8CSTsgL7v5fHVFmUbRv2sd+yy27o8Ydt4MGg== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.17.12": version "7.17.12" @@ -1072,26 +1072,26 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.12", "@babel/traverse@^7.17.9", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.12.tgz#011874d2abbca0ccf1adbe38f6f7a4ff1747599c" - integrity sha512-zULPs+TbCvOkIFd4FrG53xrpxvCBwLIgo6tO0tJorY7YV2IWFxUfS/lXDJbGgfyYt9ery/Gxj2niwttNnB0gIw== +"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.0.tgz#0e5ec6db098660b2372dd63d096bf484e32d27ba" + integrity sha512-oNOO4vaoIQoGjDQ84LgtF/IAlxlyqL4TUuoQ7xLkQETFaHkY1F7yazhB4Kt3VcZGL0ZF/jhrEpnXqUb0M7V3sw== dependencies: "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.12" + "@babel/generator" "^7.18.0" "@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-function-name" "^7.17.9" "@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.17.12" - "@babel/types" "^7.17.12" + "@babel/parser" "^7.18.0" + "@babel/types" "^7.18.0" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.12", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.12.tgz#1210690a516489c0200f355d87619157fbbd69a0" - integrity sha512-rH8i29wcZ6x9xjzI5ILHL/yZkbQnCERdHlogKuIb4PUr7do4iT8DPekrTbBLWTnRQm6U0GYABbTMSzijmEqlAg== +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.12", "@babel/types@^7.18.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.0.tgz#ef523ea349722849cb4bf806e9342ede4d071553" + integrity sha512-vhAmLPAiC8j9K2GnsnLPCIH5wCrPpYIVBCWRBFDCB7Y/BXLqi/O+1RSTTM2bsmg6U/551+FCf9PNPxjABmxHTw== dependencies: "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" From 2bc5e41b8384b1c62832be2abead47670d169dfa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 May 2022 08:06:29 +0900 Subject: [PATCH 087/652] Bump @babel/runtime from 7.17.9 to 7.18.0 (#18494) Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.17.9 to 7.18.0. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.0/packages/babel-runtime) --- updated-dependencies: - dependency-name: "@babel/runtime" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 4bf2dd849..c8212d3f3 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "@babel/plugin-transform-runtime": "^7.17.12", "@babel/preset-env": "^7.17.12", "@babel/preset-react": "^7.17.12", - "@babel/runtime": "^7.17.9", + "@babel/runtime": "^7.18.0", "@gamestdio/websocket": "^0.3.2", "@github/webauthn-json": "^0.5.7", "@rails/ujs": "^6.1.6", diff --git a/yarn.lock b/yarn.lock index b983c9bbb..d77bdede5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1056,10 +1056,10 @@ dependencies: regenerator-runtime "^0.12.0" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.9", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" - integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.0", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.0.tgz#6d77142a19cb6088f0af662af1ada37a604d34ae" + integrity sha512-YMQvx/6nKEaucl0MY56mwIG483xk8SDNdlUwb2Ts6FUpr7fm85DxEmsY18LXBNhcTz6tO6JwZV8w1W06v8UKeg== dependencies: regenerator-runtime "^0.13.4" From 01db33165757042f3d95a6e372a9652b0223c5c2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 May 2022 08:06:55 +0900 Subject: [PATCH 088/652] Bump @babel/plugin-transform-runtime from 7.17.12 to 7.18.0 (#18489) Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.17.12 to 7.18.0. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.0/packages/babel-plugin-transform-runtime) --- updated-dependencies: - dependency-name: "@babel/plugin-transform-runtime" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index c8212d3f3..591f6a1c3 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "@babel/core": "^7.18.0", "@babel/plugin-proposal-decorators": "^7.17.12", "@babel/plugin-transform-react-inline-elements": "^7.16.7", - "@babel/plugin-transform-runtime": "^7.17.12", + "@babel/plugin-transform-runtime": "^7.18.0", "@babel/preset-env": "^7.17.12", "@babel/preset-react": "^7.17.12", "@babel/runtime": "^7.18.0", diff --git a/yarn.lock b/yarn.lock index d77bdede5..63008da4d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -875,10 +875,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-runtime@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.12.tgz#5dc79735c4038c6f4fc0490f68f2798ce608cadd" - integrity sha512-xsl5MeGjWnmV6Ui9PfILM2+YRpa3GqLOrczPpXV3N2KCgQGU+sU8OfzuMbjkIdfvZEZIm+3y0V7w58sk0SGzlw== +"@babel/plugin-transform-runtime@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.0.tgz#894cdab4b353dcb7639f03fb74c59db1d344f71c" + integrity sha512-7kM/jJ3DD/y1hDPn0jov12DoUIFsxLiItprhNydUSibxaywaxNqKwq+ODk72J9ePn4LWobIc5ik6TAJhVl8IkQ== dependencies: "@babel/helper-module-imports" "^7.16.7" "@babel/helper-plugin-utils" "^7.17.12" From ddddd4c043bd722b7e01a0595cd5f7a606fde281 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 May 2022 08:41:07 +0900 Subject: [PATCH 089/652] Bump immutable from 4.0.0 to 4.1.0 (#18502) Bumps [immutable](https://github.com/immutable-js/immutable-js) from 4.0.0 to 4.1.0. - [Release notes](https://github.com/immutable-js/immutable-js/releases) - [Changelog](https://github.com/immutable-js/immutable-js/blob/main/CHANGELOG.md) - [Commits](https://github.com/immutable-js/immutable-js/compare/v4.0.0...v4.1.0) --- updated-dependencies: - dependency-name: immutable dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 591f6a1c3..e1c4add61 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ "glob": "^8.0.3", "history": "^4.10.1", "http-link-header": "^1.0.4", - "immutable": "^4.0.0", + "immutable": "^4.1.0", "imports-loader": "^1.2.0", "intersection-observer": "^0.12.0", "intl": "^1.2.5", diff --git a/yarn.lock b/yarn.lock index 63008da4d..e635d876f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5832,10 +5832,10 @@ ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -immutable@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23" - integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw== +immutable@^4.0.0, immutable@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef" + integrity sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ== import-cwd@^2.0.0: version "2.1.0" From 77823333bb38a12705af486fa9b69cbd646dbd79 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 May 2022 09:06:44 +0900 Subject: [PATCH 090/652] Bump @babel/plugin-transform-runtime from 7.17.12 to 7.18.2 (#18511) Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.17.12 to 7.18.2. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.2/packages/babel-plugin-transform-runtime) --- updated-dependencies: - dependency-name: "@babel/plugin-transform-runtime" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index e1c4add61..3308ed5ba 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "@babel/core": "^7.18.0", "@babel/plugin-proposal-decorators": "^7.17.12", "@babel/plugin-transform-react-inline-elements": "^7.16.7", - "@babel/plugin-transform-runtime": "^7.18.0", + "@babel/plugin-transform-runtime": "^7.18.2", "@babel/preset-env": "^7.17.12", "@babel/preset-react": "^7.17.12", "@babel/runtime": "^7.18.0", diff --git a/yarn.lock b/yarn.lock index e635d876f..2e0a3a8f9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -875,10 +875,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-runtime@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.0.tgz#894cdab4b353dcb7639f03fb74c59db1d344f71c" - integrity sha512-7kM/jJ3DD/y1hDPn0jov12DoUIFsxLiItprhNydUSibxaywaxNqKwq+ODk72J9ePn4LWobIc5ik6TAJhVl8IkQ== +"@babel/plugin-transform-runtime@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.2.tgz#04637de1e45ae8847ff14b9beead09c33d34374d" + integrity sha512-mr1ufuRMfS52ttq+1G1PD8OJNqgcTFjq3hwn8SZ5n1x1pBhi0E36rYMdTK0TsKtApJ4lDEdfXJwtGobQMHSMPg== dependencies: "@babel/helper-module-imports" "^7.16.7" "@babel/helper-plugin-utils" "^7.17.12" From 86f4dba47ef26aa8690354948c49009c3fd49960 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 May 2022 09:16:19 +0900 Subject: [PATCH 091/652] Bump @babel/preset-env from 7.17.12 to 7.18.2 (#18512) Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.17.12 to 7.18.2. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.2/packages/babel-preset-env) --- updated-dependencies: - dependency-name: "@babel/preset-env" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 171 ++++++++++++++++++++++++++++++--------------------- 2 files changed, 101 insertions(+), 72 deletions(-) diff --git a/package.json b/package.json index 3308ed5ba..03802a939 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "@babel/plugin-proposal-decorators": "^7.17.12", "@babel/plugin-transform-react-inline-elements": "^7.16.7", "@babel/plugin-transform-runtime": "^7.18.2", - "@babel/preset-env": "^7.17.12", + "@babel/preset-env": "^7.18.2", "@babel/preset-react": "^7.17.12", "@babel/runtime": "^7.18.0", "@gamestdio/websocket": "^0.3.2", diff --git a/yarn.lock b/yarn.lock index 2e0a3a8f9..0a56188ba 100644 --- a/yarn.lock +++ b/yarn.lock @@ -81,10 +81,10 @@ "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.10": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz#09c63106d47af93cf31803db6bc49fef354e2ebe" - integrity sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ== +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.10", "@babel/helper-compilation-targets@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz#67a85a10cbd5fc7f1457fec2e7f45441dc6c754b" + integrity sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ== dependencies: "@babel/compat-data" "^7.17.10" "@babel/helper-validator-option" "^7.16.7" @@ -104,6 +104,19 @@ "@babel/helper-replace-supers" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" +"@babel/helper-create-class-features-plugin@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz#fac430912606331cb075ea8d82f9a4c145a4da19" + integrity sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-member-expression-to-functions" "^7.17.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-create-regexp-features-plugin@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz#0cb82b9bac358eb73bfbd73985a776bfa6b14d48" @@ -214,7 +227,7 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-module-transforms@^7.17.12", "@babel/helper-module-transforms@^7.18.0": +"@babel/helper-module-transforms@^7.18.0": version "7.18.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz#baf05dec7a5875fb9235bd34ca18bad4e21221cd" integrity sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA== @@ -267,6 +280,13 @@ dependencies: "@babel/types" "^7.17.0" +"@babel/helper-simple-access@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz#4dc473c2169ac3a1c9f4a51cfcd091d1c36fcff9" + integrity sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ== + dependencies: + "@babel/types" "^7.18.2" + "@babel/helper-skip-transparent-expression-wrappers@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" @@ -371,12 +391,12 @@ "@babel/helper-create-class-features-plugin" "^7.17.12" "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-proposal-class-static-block@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.12.tgz#947f09dd496322c9543ec3b318bf52b4d9833334" - integrity sha512-8ILyDG6eL14F8iub97dVc8q35Md0PJYAnA5Kz9NACFOkt6ffCcr0FISyUPKHsvuAy36fkpIitxZ9bVYPFMGQHA== +"@babel/plugin-proposal-class-static-block@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz#7d02253156e3c3793bdb9f2faac3a1c05f0ba710" + integrity sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-create-class-features-plugin" "^7.18.0" "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-class-static-block" "^7.14.5" @@ -440,10 +460,10 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.12.tgz#f94a91715a7f2f8cfb3c06af820c776440bc0148" - integrity sha512-6l9cO3YXXRh4yPCPRA776ZyJ3RobG4ZKJZhp7NDRbKIOeV3dBPG8FXCF7ZtiO2RTCIOkQOph1xDDcc01iWVNjQ== +"@babel/plugin-proposal-object-rest-spread@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz#79f2390c892ba2a68ec112eb0d895cfbd11155e8" + integrity sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw== dependencies: "@babel/compat-data" "^7.17.10" "@babel/helper-compilation-targets" "^7.17.10" @@ -543,6 +563,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-syntax-import-assertions@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz#58096a92b11b2e4e54b24c6a0cc0e5e607abcedd" + integrity sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" @@ -685,10 +712,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-destructuring@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.12.tgz#0861d61e75e2401aca30f2570d46dfc85caacf35" - integrity sha512-P8pt0YiKtX5UMUL5Xzsc9Oyij+pJE6JuC+F1k0/brq/OOGs5jDa1If3OY0LRWGvJsJhI+8tsiecL3nJLc0WTlg== +"@babel/plugin-transform-destructuring@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz#dc4f92587e291b4daa78aa20cc2d7a63aa11e858" + integrity sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw== dependencies: "@babel/helper-plugin-utils" "^7.17.12" @@ -715,10 +742,10 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-for-of@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.17.12.tgz#5397c22554ec737a27918e7e7e0e7b679b05f5ec" - integrity sha512-76lTwYaCxw8ldT7tNmye4LLwSoKDbRCBzu6n/DcK/P3FOR29+38CIIaVIZfwol9By8W/QHORYEnYSLuvcQKrsg== +"@babel/plugin-transform-for-of@^7.18.1": + version "7.18.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz#ed14b657e162b72afbbb2b4cdad277bf2bb32036" + integrity sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg== dependencies: "@babel/helper-plugin-utils" "^7.17.12" @@ -745,42 +772,42 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-modules-amd@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.17.12.tgz#08ec1f10f854c15bb3b44952e60f1fc126d7d481" - integrity sha512-p5rt9tB5Ndcc2Za7CeNxVf7YAjRcUMR6yi8o8tKjb9KhRkEvXwa+C0hj6DA5bVDkKRxB0NYhMUGbVKoFu4+zEA== +"@babel/plugin-transform-modules-amd@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz#7ef1002e67e36da3155edc8bf1ac9398064c02ed" + integrity sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA== dependencies: - "@babel/helper-module-transforms" "^7.17.12" + "@babel/helper-module-transforms" "^7.18.0" "@babel/helper-plugin-utils" "^7.17.12" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.12.tgz#37691c7404320d007288edd5a2d8600bcef61c34" - integrity sha512-tVPs6MImAJz+DiX8Y1xXEMdTk5Lwxu9jiPjlS+nv5M2A59R7+/d1+9A8C/sbuY0b3QjIxqClkj6KAplEtRvzaA== +"@babel/plugin-transform-modules-commonjs@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz#1aa8efa2e2a6e818b6a7f2235fceaf09bdb31e9e" + integrity sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ== dependencies: - "@babel/helper-module-transforms" "^7.17.12" + "@babel/helper-module-transforms" "^7.18.0" "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-simple-access" "^7.17.7" + "@babel/helper-simple-access" "^7.18.2" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.12.tgz#e631b151b99d25401cd9679476cc35e6e5bbc7d4" - integrity sha512-NVhDb0q00hqZcuLduUf/kMzbOQHiocmPbIxIvk23HLiEqaTKC/l4eRxeC7lO63M72BmACoiKOcb9AkOAJRerpw== +"@babel/plugin-transform-modules-systemjs@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.0.tgz#50ecdb43de97c8483824402f7125edb94cddb09a" + integrity sha512-vwKpxdHnlM5tIrRt/eA0bzfbi7gUBLN08vLu38np1nZevlPySRe6yvuATJB5F/WPJ+ur4OXwpVYq9+BsxqAQuQ== dependencies: "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-module-transforms" "^7.17.12" + "@babel/helper-module-transforms" "^7.18.0" "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-validator-identifier" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.17.12.tgz#b37be3ecf198c1fea10e6268461729ced05644e1" - integrity sha512-BnsPkrUHsjzZGpnrmJeDFkOMMljWFHPjDc9xDcz71/C+ybF3lfC3V4m3dwXPLZrE5b3bgd4V+3/Pj+3620d7IA== +"@babel/plugin-transform-modules-umd@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz#56aac64a2c2a1922341129a4597d1fd5c3ff020f" + integrity sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA== dependencies: - "@babel/helper-module-transforms" "^7.17.12" + "@babel/helper-module-transforms" "^7.18.0" "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-named-capturing-groups-regex@^7.17.12": @@ -861,11 +888,12 @@ "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-regenerator@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz#0a33c3a61cf47f45ed3232903683a0afd2d3460c" - integrity sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ== +"@babel/plugin-transform-regenerator@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz#44274d655eb3f1af3f3a574ba819d3f48caf99d5" + integrity sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw== dependencies: + "@babel/helper-plugin-utils" "^7.17.12" regenerator-transform "^0.15.0" "@babel/plugin-transform-reserved-words@^7.17.12": @@ -909,10 +937,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-template-literals@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.17.12.tgz#4aec0a18f39dd86c442e1d077746df003e362c6e" - integrity sha512-kAKJ7DX1dSRa2s7WN1xUAuaQmkTpN+uig4wCKWivVXIObqGbVTUlSavHyfI2iZvz89GFAMGm9p2DBJ4Y1Tp0hw== +"@babel/plugin-transform-template-literals@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz#31ed6915721864847c48b656281d0098ea1add28" + integrity sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g== dependencies: "@babel/helper-plugin-utils" "^7.17.12" @@ -938,27 +966,27 @@ "@babel/helper-create-regexp-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/preset-env@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.17.12.tgz#b81ae0bb762b683d68b07b6d2d4020ccbef8d67a" - integrity sha512-Kke30Rj3Lmcx97bVs71LO0s8M6FmJ7tUAQI9fNId62rf0cYG1UAWwdNO9/sE0/pLEahAw1MqMorymoD12bj5Fg== +"@babel/preset-env@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.2.tgz#f47d3000a098617926e674c945d95a28cb90977a" + integrity sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q== dependencies: "@babel/compat-data" "^7.17.10" - "@babel/helper-compilation-targets" "^7.17.10" + "@babel/helper-compilation-targets" "^7.18.2" "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-validator-option" "^7.16.7" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.17.12" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.17.12" "@babel/plugin-proposal-async-generator-functions" "^7.17.12" "@babel/plugin-proposal-class-properties" "^7.17.12" - "@babel/plugin-proposal-class-static-block" "^7.17.12" + "@babel/plugin-proposal-class-static-block" "^7.18.0" "@babel/plugin-proposal-dynamic-import" "^7.16.7" "@babel/plugin-proposal-export-namespace-from" "^7.17.12" "@babel/plugin-proposal-json-strings" "^7.17.12" "@babel/plugin-proposal-logical-assignment-operators" "^7.17.12" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.17.12" "@babel/plugin-proposal-numeric-separator" "^7.16.7" - "@babel/plugin-proposal-object-rest-spread" "^7.17.12" + "@babel/plugin-proposal-object-rest-spread" "^7.18.0" "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" "@babel/plugin-proposal-optional-chaining" "^7.17.12" "@babel/plugin-proposal-private-methods" "^7.17.12" @@ -969,6 +997,7 @@ "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.17.12" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" @@ -984,34 +1013,34 @@ "@babel/plugin-transform-block-scoping" "^7.17.12" "@babel/plugin-transform-classes" "^7.17.12" "@babel/plugin-transform-computed-properties" "^7.17.12" - "@babel/plugin-transform-destructuring" "^7.17.12" + "@babel/plugin-transform-destructuring" "^7.18.0" "@babel/plugin-transform-dotall-regex" "^7.16.7" "@babel/plugin-transform-duplicate-keys" "^7.17.12" "@babel/plugin-transform-exponentiation-operator" "^7.16.7" - "@babel/plugin-transform-for-of" "^7.17.12" + "@babel/plugin-transform-for-of" "^7.18.1" "@babel/plugin-transform-function-name" "^7.16.7" "@babel/plugin-transform-literals" "^7.17.12" "@babel/plugin-transform-member-expression-literals" "^7.16.7" - "@babel/plugin-transform-modules-amd" "^7.17.12" - "@babel/plugin-transform-modules-commonjs" "^7.17.12" - "@babel/plugin-transform-modules-systemjs" "^7.17.12" - "@babel/plugin-transform-modules-umd" "^7.17.12" + "@babel/plugin-transform-modules-amd" "^7.18.0" + "@babel/plugin-transform-modules-commonjs" "^7.18.2" + "@babel/plugin-transform-modules-systemjs" "^7.18.0" + "@babel/plugin-transform-modules-umd" "^7.18.0" "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.12" "@babel/plugin-transform-new-target" "^7.17.12" "@babel/plugin-transform-object-super" "^7.16.7" "@babel/plugin-transform-parameters" "^7.17.12" "@babel/plugin-transform-property-literals" "^7.16.7" - "@babel/plugin-transform-regenerator" "^7.17.9" + "@babel/plugin-transform-regenerator" "^7.18.0" "@babel/plugin-transform-reserved-words" "^7.17.12" "@babel/plugin-transform-shorthand-properties" "^7.16.7" "@babel/plugin-transform-spread" "^7.17.12" "@babel/plugin-transform-sticky-regex" "^7.16.7" - "@babel/plugin-transform-template-literals" "^7.17.12" + "@babel/plugin-transform-template-literals" "^7.18.2" "@babel/plugin-transform-typeof-symbol" "^7.17.12" "@babel/plugin-transform-unicode-escapes" "^7.16.7" "@babel/plugin-transform-unicode-regex" "^7.16.7" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.17.12" + "@babel/types" "^7.18.2" babel-plugin-polyfill-corejs2 "^0.3.0" babel-plugin-polyfill-corejs3 "^0.5.0" babel-plugin-polyfill-regenerator "^0.3.0" @@ -1088,10 +1117,10 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.12", "@babel/types@^7.18.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.0.tgz#ef523ea349722849cb4bf806e9342ede4d071553" - integrity sha512-vhAmLPAiC8j9K2GnsnLPCIH5wCrPpYIVBCWRBFDCB7Y/BXLqi/O+1RSTTM2bsmg6U/551+FCf9PNPxjABmxHTw== +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.12", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.2.tgz#191abfed79ebe6f4242f643a9a5cbaa36b10b091" + integrity sha512-0On6B8A4/+mFUto5WERt3EEuG1NznDirvwca1O8UwXQHVY8g3R7OzYgxXdOfMwLO08UrpUD/2+3Bclyq+/C94Q== dependencies: "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" From 440eb71310e41d668f00980b73358edd5f8df043 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 26 May 2022 15:50:33 +0200 Subject: [PATCH 092/652] Change unapproved and unconfirmed account to not be accessible in the REST API (#17530) * Change unapproved and unconfirmed account to not be accessible in the REST API * Change Account#searchable? to reject unconfirmed and unapproved users * Disable search for unapproved and unconfirmed users in Account.search_for * Disable search for unapproved and unconfirmed users in Account.advanced_search_for * Remove unconfirmed and unapproved accounts from Account.searchable scope * Prevent mentions to unapproved/unconfirmed accounts * Fix some old tests for Account.advanced_search_for * Add some Account.advanced_search_for tests for existing behaviors * Add some tests for Account.search_for * Add Account.advanced_search_for tests unconfirmed and unapproved accounts * Add Account.searchable tests * Fix Account.without_unapproved scope potentially messing with previously-applied scopes * Allow lookup of unconfirmed/unapproved accounts through /api/v1/accounts/lookup This is so that the API can still be used to check whether an username is free to use. --- app/controllers/api/v1/accounts_controller.rb | 10 + app/models/account.rb | 9 +- app/services/process_mentions_service.rb | 3 + spec/models/account_spec.rb | 178 +++++++++++++++++- 4 files changed, 194 insertions(+), 6 deletions(-) diff --git a/app/controllers/api/v1/accounts_controller.rb b/app/controllers/api/v1/accounts_controller.rb index 5134bfb94..5537cc9b0 100644 --- a/app/controllers/api/v1/accounts_controller.rb +++ b/app/controllers/api/v1/accounts_controller.rb @@ -9,6 +9,8 @@ class Api::V1::AccountsController < Api::BaseController before_action :require_user!, except: [:show, :create] before_action :set_account, except: [:create] + before_action :check_account_approval, except: [:create] + before_action :check_account_confirmation, except: [:create] before_action :check_enabled_registrations, only: [:create] skip_before_action :require_authenticated_user!, only: :create @@ -74,6 +76,14 @@ class Api::V1::AccountsController < Api::BaseController @account = Account.find(params[:id]) end + def check_account_approval + raise(ActiveRecord::RecordNotFound) if @account.local? && @account.user_pending? + end + + def check_account_confirmation + raise(ActiveRecord::RecordNotFound) if @account.local? && !@account.user_confirmed? + end + def relationships(**options) AccountRelationshipsPresenter.new([@account.id], current_user.account_id, **options) end diff --git a/app/models/account.rb b/app/models/account.rb index 7b460b054..bd94142c4 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -109,7 +109,8 @@ class Account < ApplicationRecord scope :matches_username, ->(value) { where(arel_table[:username].matches("#{value}%")) } scope :matches_display_name, ->(value) { where(arel_table[:display_name].matches("#{value}%")) } scope :matches_domain, ->(value) { where(arel_table[:domain].matches("%#{value}%")) } - scope :searchable, -> { without_suspended.where(moved_to_account_id: nil) } + scope :without_unapproved, -> { left_outer_joins(:user).remote.or(left_outer_joins(:user).merge(User.approved.confirmed)) } + scope :searchable, -> { without_unapproved.without_suspended.where(moved_to_account_id: nil) } scope :discoverable, -> { searchable.without_silenced.where(discoverable: true).left_outer_joins(:account_stat) } scope :followable_by, ->(account) { joins(arel_table.join(Follow.arel_table, Arel::Nodes::OuterJoin).on(arel_table[:id].eq(Follow.arel_table[:target_account_id]).and(Follow.arel_table[:account_id].eq(account.id))).join_sources).where(Follow.arel_table[:id].eq(nil)).joins(arel_table.join(FollowRequest.arel_table, Arel::Nodes::OuterJoin).on(arel_table[:id].eq(FollowRequest.arel_table[:target_account_id]).and(FollowRequest.arel_table[:account_id].eq(account.id))).join_sources).where(FollowRequest.arel_table[:id].eq(nil)) } scope :by_recent_status, -> { order(Arel.sql('(case when account_stats.last_status_at is null then 1 else 0 end) asc, account_stats.last_status_at desc, accounts.id desc')) } @@ -193,7 +194,7 @@ class Account < ApplicationRecord end def searchable? - !(suspended? || moved?) + !(suspended? || moved?) && (!local? || (approved? && confirmed?)) end def possibly_stale? @@ -461,9 +462,11 @@ class Account < ApplicationRecord accounts.*, ts_rank_cd(#{TEXTSEARCH}, to_tsquery('simple', :tsquery), 32) AS rank FROM accounts + LEFT JOIN users ON accounts.id = users.account_id WHERE to_tsquery('simple', :tsquery) @@ #{TEXTSEARCH} AND accounts.suspended_at IS NULL AND accounts.moved_to_account_id IS NULL + AND (accounts.domain IS NOT NULL OR (users.approved = TRUE AND users.confirmed_at IS NOT NULL)) ORDER BY rank DESC LIMIT :limit OFFSET :offset SQL @@ -539,9 +542,11 @@ class Account < ApplicationRecord (count(f.id) + 1) * ts_rank_cd(#{TEXTSEARCH}, to_tsquery('simple', :tsquery), 32) AS rank FROM accounts LEFT OUTER JOIN follows AS f ON (accounts.id = f.account_id AND f.target_account_id = :id) OR (accounts.id = f.target_account_id AND f.account_id = :id) + LEFT JOIN users ON accounts.id = users.account_id WHERE to_tsquery('simple', :tsquery) @@ #{TEXTSEARCH} AND accounts.suspended_at IS NULL AND accounts.moved_to_account_id IS NULL + AND (accounts.domain IS NOT NULL OR (users.approved = TRUE AND users.confirmed_at IS NOT NULL)) GROUP BY accounts.id ORDER BY rank DESC LIMIT :limit OFFSET :offset diff --git a/app/services/process_mentions_service.rb b/app/services/process_mentions_service.rb index 9d239fc65..8c63b611d 100644 --- a/app/services/process_mentions_service.rb +++ b/app/services/process_mentions_service.rb @@ -37,6 +37,9 @@ class ProcessMentionsService < BaseService mentioned_account = Account.find_remote(username, domain) + # Unapproved and unconfirmed accounts should not be mentionable + next if mentioned_account&.local? && !(mentioned_account.user_confirmed? && mentioned_account.user_approved?) + # If the account cannot be found or isn't the right protocol, # first try to resolve it if mention_undeliverable?(mentioned_account) diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index 681134d49..dc0ca3da3 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -350,6 +350,45 @@ RSpec.describe Account, type: :model do ) end + it 'does not return suspended users' do + match = Fabricate( + :account, + display_name: 'Display Name', + username: 'username', + domain: 'example.com', + suspended: true + ) + + results = Account.search_for('username') + expect(results).to eq [] + end + + it 'does not return unapproved users' do + match = Fabricate( + :account, + display_name: 'Display Name', + username: 'username' + ) + + match.user.update(approved: false) + + results = Account.search_for('username') + expect(results).to eq [] + end + + it 'does not return unconfirmed users' do + match = Fabricate( + :account, + display_name: 'Display Name', + username: 'username' + ) + + match.user.update(confirmed_at: nil) + + results = Account.search_for('username') + expect(results).to eq [] + end + it 'accepts ?, \, : and space as delimiter' do match = Fabricate( :account, @@ -422,8 +461,114 @@ RSpec.describe Account, type: :model do end describe '.advanced_search_for' do + let(:account) { Fabricate(:account) } + + context 'when limiting search to followed accounts' do + it 'accepts ?, \, : and space as delimiter' do + match = Fabricate( + :account, + display_name: 'A & l & i & c & e', + username: 'username', + domain: 'example.com' + ) + account.follow!(match) + + results = Account.advanced_search_for('A?l\i:c e', account, 10, true) + expect(results).to eq [match] + end + + it 'does not return non-followed accounts' do + match = Fabricate( + :account, + display_name: 'A & l & i & c & e', + username: 'username', + domain: 'example.com' + ) + + results = Account.advanced_search_for('A?l\i:c e', account, 10, true) + expect(results).to eq [] + end + + it 'does not return suspended users' do + match = Fabricate( + :account, + display_name: 'Display Name', + username: 'username', + domain: 'example.com', + suspended: true + ) + + results = Account.advanced_search_for('username', account, 10, true) + expect(results).to eq [] + end + + it 'does not return unapproved users' do + match = Fabricate( + :account, + display_name: 'Display Name', + username: 'username' + ) + + match.user.update(approved: false) + + results = Account.advanced_search_for('username', account, 10, true) + expect(results).to eq [] + end + + it 'does not return unconfirmed users' do + match = Fabricate( + :account, + display_name: 'Display Name', + username: 'username' + ) + + match.user.update(confirmed_at: nil) + + results = Account.advanced_search_for('username', account, 10, true) + expect(results).to eq [] + end + end + + it 'does not return suspended users' do + match = Fabricate( + :account, + display_name: 'Display Name', + username: 'username', + domain: 'example.com', + suspended: true + ) + + results = Account.advanced_search_for('username', account) + expect(results).to eq [] + end + + it 'does not return unapproved users' do + match = Fabricate( + :account, + display_name: 'Display Name', + username: 'username' + ) + + match.user.update(approved: false) + + results = Account.advanced_search_for('username', account) + expect(results).to eq [] + end + + it 'does not return unconfirmed users' do + match = Fabricate( + :account, + display_name: 'Display Name', + username: 'username' + ) + + match.user.update(confirmed_at: nil) + + results = Account.advanced_search_for('username', account) + expect(results).to eq [] + end + it 'accepts ?, \, : and space as delimiter' do - account = Fabricate(:account) match = Fabricate( :account, display_name: 'A & l & i & c & e', @@ -437,18 +582,17 @@ RSpec.describe Account, type: :model do it 'limits by 10 by default' do 11.times { Fabricate(:account, display_name: "Display Name") } - results = Account.search_for("display") + results = Account.advanced_search_for("display", account) expect(results.size).to eq 10 end it 'accepts arbitrary limits' do 2.times { Fabricate(:account, display_name: "Display Name") } - results = Account.search_for("display", 1) + results = Account.advanced_search_for("display", account, 1) expect(results.size).to eq 1 end it 'ranks followed accounts higher' do - account = Fabricate(:account) match = Fabricate(:account, username: "Matching") followed_match = Fabricate(:account, username: "Matcher") Fabricate(:follow, account: account, target_account: followed_match) @@ -775,6 +919,32 @@ RSpec.describe Account, type: :model do expect(Account.suspended).to match_array([account_1]) end end + + describe 'searchable' do + let!(:suspended_local) { Fabricate(:account, suspended: true, username: 'suspended_local') } + let!(:suspended_remote) { Fabricate(:account, suspended: true, domain: 'example.org', username: 'suspended_remote') } + let!(:silenced_local) { Fabricate(:account, silenced: true, username: 'silenced_local') } + let!(:silenced_remote) { Fabricate(:account, silenced: true, domain: 'example.org', username: 'silenced_remote') } + let!(:unconfirmed) { Fabricate(:user, confirmed_at: nil).account } + let!(:unapproved) { Fabricate(:user, approved: false).account } + let!(:unconfirmed_unapproved) { Fabricate(:user, confirmed_at: nil, approved: false).account } + let!(:local_account) { Fabricate(:account, username: 'local_account') } + let!(:remote_account) { Fabricate(:account, domain: 'example.org', username: 'remote_account') } + + before do + # Accounts get automatically-approved depending on settings, so ensure they aren't approved + unapproved.user.update(approved: false) + unconfirmed_unapproved.user.update(approved: false) + end + + it 'returns every usable non-suspended account' do + expect(Account.searchable).to match_array([silenced_local, silenced_remote, local_account, remote_account]) + end + + it 'does not mess with previously-applied scopes' do + expect(Account.where.not(id: remote_account.id).searchable).to match_array([silenced_local, silenced_remote, local_account]) + end + end end context 'when is local' do From a4fa9e23fc1ddb42452bb8f051a31894796c8002 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 26 May 2022 17:55:05 +0200 Subject: [PATCH 093/652] Change "dangerous" to "sensitive" in privacy policy and web UI (#18515) Fix #18470 --- app/javascript/mastodon/locales/defaultMessages.json | 4 ++-- app/javascript/mastodon/locales/en.json | 2 +- config/locales/en.yml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 4725d2d7c..aa1213faf 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -1546,7 +1546,7 @@ "id": "compose_form.hashtag_warning" }, { - "defaultMessage": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "defaultMessage": "Posts on Mastodon are not end-to-end encrypted. Do not share any sensitive information over Mastodon.", "id": "compose_form.encryption_warning" }, { @@ -3711,4 +3711,4 @@ ], "path": "app/javascript/mastodon/features/video/index.json" } -] \ No newline at end of file +] diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index d82f4cb0d..4fc0849fb 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -95,7 +95,7 @@ "compose.language.change": "Change language", "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Learn more", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any sensitive 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": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "locked", diff --git a/config/locales/en.yml b/config/locales/en.yml index b90402cdd..fc0ec6e3e 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1533,7 +1533,7 @@ en:
  • Basic account information: If you register on this server, you may be asked to enter a username, an e-mail address and a password. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly.
  • Posts, following and other public information: The list of people you follow is listed publicly, the same is true for your followers. When you submit a message, the date and time is stored as well as the application you submitted the message from. Messages may contain media attachments, such as pictures and videos. Public and unlisted posts are available publicly. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public.
  • -
  • Direct and followers-only posts: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. Please keep in mind that the operators of the server and any receiving server may view such messages, and that recipients may screenshot, copy or otherwise re-share them. Do not share any dangerous information over Mastodon.
  • +
  • Direct and followers-only posts: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. Please keep in mind that the operators of the server and any receiving server may view such messages, and that recipients may screenshot, copy or otherwise re-share them. Do not share any sensitive information over Mastodon.
  • IPs and other metadata: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server.
@@ -1604,7 +1604,7 @@ en:

If we decide to change our privacy policy, we will post those changes on this page.

-

This document is CC-BY-SA. It was last updated March 7, 2018.

+

This document is CC-BY-SA. It was last updated May 26, 2022.

Originally adapted from the Discourse privacy policy.

title: "%{instance} Terms of Service and Privacy Policy" From 088dc0ec5a383006952c0b15508af882a4c1109c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 26 May 2022 18:05:47 +0200 Subject: [PATCH 094/652] Fix regression in `tootctl search deploy` caused by unloaded attribute (#18514) --- app/models/poll.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/models/poll.rb b/app/models/poll.rb index ba08309a1..1a326e452 100644 --- a/app/models/poll.rb +++ b/app/models/poll.rb @@ -39,13 +39,12 @@ class Poll < ApplicationRecord before_validation :prepare_options, if: :local? before_validation :prepare_votes_count - - after_initialize :prepare_cached_tallies + before_validation :prepare_cached_tallies after_commit :reset_parent_cache, on: :update def loaded_options - options.map.with_index { |title, key| Option.new(self, key.to_s, title, show_totals_now? ? cached_tallies[key] : nil) } + options.map.with_index { |title, key| Option.new(self, key.to_s, title, show_totals_now? ? (cached_tallies[key] || 0) : nil) } end def possibly_stale? From d8abc0018f59ed63fb6c5fae2f6081c141a4b978 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 26 May 2022 18:43:14 +0200 Subject: [PATCH 095/652] Remove 3.3.x from supported versions in security policy (#18516) --- SECURITY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SECURITY.md b/SECURITY.md index 12f50ed88..62e23f736 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -14,7 +14,7 @@ A "vulnerability in Mastodon" is a vulnerability in the code distributed through | ------- | ------------------ | | 3.5.x | Yes | | 3.4.x | Yes | -| 3.3.x | Yes | +| 3.3.x | No | | < 3.3 | No | [bug-bounty]: https://app.intigriti.com/programs/mastodon/mastodonio/detail From 702b709d9a8df2ed65c54d32d585a4cf5fe13de1 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Fri, 27 May 2022 03:29:28 +0900 Subject: [PATCH 096/652] Add ES6 compatibility to browserslist (#18519) --- .browserslistrc | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.browserslistrc b/.browserslistrc index d5734664c..54dd3aaf3 100644 --- a/.browserslistrc +++ b/.browserslistrc @@ -4,6 +4,4 @@ not IE 11 not dead [development] -last 1 chrome version -last 1 firefox version -last 1 safari version +supports es6-module From 3e0e7a1cfb617837ccada330afc13ed804c3c47b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 26 May 2022 20:32:48 +0200 Subject: [PATCH 097/652] Fix follower and other counters being able to go negative (#18517) --- app/models/account_stat.rb | 12 ++++++++++++ app/models/status_stat.rb | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/app/models/account_stat.rb b/app/models/account_stat.rb index b49827267..a5d71a5b8 100644 --- a/app/models/account_stat.rb +++ b/app/models/account_stat.rb @@ -20,4 +20,16 @@ class AccountStat < ApplicationRecord belongs_to :account, inverse_of: :account_stat update_index('accounts', :account) + + def following_count + [attributes['following_count'], 0].max + end + + def followers_count + [attributes['followers_count'], 0].max + end + + def statuses_count + [attributes['statuses_count'], 0].max + end end diff --git a/app/models/status_stat.rb b/app/models/status_stat.rb index 024c467e7..437861d1c 100644 --- a/app/models/status_stat.rb +++ b/app/models/status_stat.rb @@ -17,6 +17,18 @@ class StatusStat < ApplicationRecord after_commit :reset_parent_cache + def replies_count + [attributes['replies_count'], 0].max + end + + def reblogs_count + [attributes['reblogs_count'], 0].max + end + + def favourites_count + [attributes['favourites_count'], 0].max + end + private def reset_parent_cache From 96129c2f10a82520648f6ae04e585cf797403617 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 26 May 2022 22:03:54 +0200 Subject: [PATCH 098/652] Fix confirmation redirect to app without `Location` header (#18523) --- app/controllers/auth/confirmations_controller.rb | 2 +- app/lib/application_extension.rb | 4 ++++ config/initializers/doorkeeper.rb | 7 +++++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/app/controllers/auth/confirmations_controller.rb b/app/controllers/auth/confirmations_controller.rb index 1475bbcef..010fd3755 100644 --- a/app/controllers/auth/confirmations_controller.rb +++ b/app/controllers/auth/confirmations_controller.rb @@ -40,7 +40,7 @@ class Auth::ConfirmationsController < Devise::ConfirmationsController def after_confirmation_path_for(_resource_name, user) if user.created_by_application && truthy_param?(:redirect_to_app) - user.created_by_application.redirect_uri + user.created_by_application.confirmation_redirect_uri else super end diff --git a/app/lib/application_extension.rb b/app/lib/application_extension.rb index a1fea6430..d61ec0e6e 100644 --- a/app/lib/application_extension.rb +++ b/app/lib/application_extension.rb @@ -12,4 +12,8 @@ module ApplicationExtension def most_recently_used_access_token @most_recently_used_access_token ||= access_tokens.where.not(last_used_at: nil).order(last_used_at: :desc).first end + + def confirmation_redirect_uri + redirect_uri.lines.first.strip + end end diff --git a/config/initializers/doorkeeper.rb b/config/initializers/doorkeeper.rb index f78db8653..84b649f5c 100644 --- a/config/initializers/doorkeeper.rb +++ b/config/initializers/doorkeeper.rb @@ -128,6 +128,13 @@ Doorkeeper.configure do # force_ssl_in_redirect_uri false + # Specify what redirect URI's you want to block during Application creation. + # Any redirect URI is whitelisted by default. + # + # You can use this option in order to forbid URI's with 'javascript' scheme + # for example. + forbid_redirect_uri { |uri| %w[data vbscript javascript].include?(uri.scheme.to_s.downcase) } + # Specify what grant flows are enabled in array of Strings. The valid # strings and the flows they enable are: # From 9f81b9f29a14093cefcdbf09058ace089cd8e06b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 26 May 2022 22:04:05 +0200 Subject: [PATCH 099/652] Fix suspended users being able to access APIs that don't require a user (#18524) --- app/controllers/activitypub/base_controller.rb | 1 + app/controllers/api/base_controller.rb | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/app/controllers/activitypub/base_controller.rb b/app/controllers/activitypub/base_controller.rb index 196d85a32..b8a7e0ab9 100644 --- a/app/controllers/activitypub/base_controller.rb +++ b/app/controllers/activitypub/base_controller.rb @@ -2,6 +2,7 @@ class ActivityPub::BaseController < Api::BaseController skip_before_action :require_authenticated_user! + skip_before_action :require_not_suspended! skip_around_action :set_locale private diff --git a/app/controllers/api/base_controller.rb b/app/controllers/api/base_controller.rb index d96285b44..2e393fbb6 100644 --- a/app/controllers/api/base_controller.rb +++ b/app/controllers/api/base_controller.rb @@ -11,6 +11,7 @@ class Api::BaseController < ApplicationController skip_before_action :require_functional!, unless: :whitelist_mode? before_action :require_authenticated_user!, if: :disallow_unauthenticated_api_access? + before_action :require_not_suspended! before_action :set_cache_headers protect_from_forgery with: :null_session @@ -97,6 +98,10 @@ class Api::BaseController < ApplicationController render json: { error: 'This method requires an authenticated user' }, status: 401 unless current_user end + def require_not_suspended! + render json: { error: 'Your login is currently disabled' }, status: 403 if current_user&.account&.suspended? + end + def require_user! if !current_user render json: { error: 'This method requires an authenticated user' }, status: 422 From 976cd6413e9b2a1531a2ad17945342deaeec538c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 26 May 2022 22:04:16 +0200 Subject: [PATCH 100/652] Fix moderator leak in undo_mark_statuses_as_sensitive (#18525) Signed-off-by: Eugen Rochko Co-authored-by: 40826d <74816220+40826d@users.noreply.github.com> --- app/services/approve_appeal_service.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/services/approve_appeal_service.rb b/app/services/approve_appeal_service.rb index 37a08b46e..96aaaa7d0 100644 --- a/app/services/approve_appeal_service.rb +++ b/app/services/approve_appeal_service.rb @@ -52,8 +52,9 @@ class ApproveAppealService < BaseService end def undo_mark_statuses_as_sensitive! + representative_account = Account.representative @strike.statuses.includes(:media_attachments).each do |status| - UpdateStatusService.new.call(status, @current_account.id, sensitive: false) if status.with_media? + UpdateStatusService.new.call(status, representative_account.id, sensitive: false) if status.with_media? end end From 1ff4877945e18820f3e518a1cfbac243da65e1a5 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 26 May 2022 22:06:10 +0200 Subject: [PATCH 101/652] Fix empty votes arbitrarily increasing voters count in polls (#18526) --- app/services/vote_service.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/services/vote_service.rb b/app/services/vote_service.rb index ccd04dbfc..114ec285c 100644 --- a/app/services/vote_service.rb +++ b/app/services/vote_service.rb @@ -7,6 +7,8 @@ class VoteService < BaseService include Lockable def call(account, poll, choices) + return if choices.empty? + authorize_with account, poll, :vote? @account = account From c4d2c39a75eccdbc60c3540c259e1e7ea5881ac6 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 26 May 2022 22:08:02 +0200 Subject: [PATCH 102/652] Fix being able to report otherwise inaccessible statuses (#18528) --- app/models/admin/status_batch_action.rb | 6 +++++- app/services/report_service.rb | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/models/admin/status_batch_action.rb b/app/models/admin/status_batch_action.rb index 631af183c..7bf6fa6da 100644 --- a/app/models/admin/status_batch_action.rb +++ b/app/models/admin/status_batch_action.rb @@ -103,7 +103,7 @@ class Admin::StatusBatchAction def handle_report! @report = Report.new(report_params) unless with_report? - @report.status_ids = (@report.status_ids + status_ids.map(&:to_i)).uniq + @report.status_ids = (@report.status_ids + allowed_status_ids).uniq @report.save! @report_id = @report.id @@ -135,4 +135,8 @@ class Admin::StatusBatchAction def report_params { account: current_account, target_account: target_account } end + + def allowed_status_ids + AccountStatusesFilter.new(@report.target_account, current_account).results.with_discarded.where(id: status_ids).pluck(:id) + end end diff --git a/app/services/report_service.rb b/app/services/report_service.rb index 9d784c341..d251bb33f 100644 --- a/app/services/report_service.rb +++ b/app/services/report_service.rb @@ -57,7 +57,7 @@ class ReportService < BaseService end def reported_status_ids - @target_account.statuses.with_discarded.find(Array(@status_ids)).pluck(:id) + AccountStatusesFilter.new(@target_account, @source_account).results.with_discarded.find(Array(@status_ids)).pluck(:id) end def payload From 8a9acbe604667215c9589154d72b3f313755c210 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 26 May 2022 22:08:12 +0200 Subject: [PATCH 103/652] Fix being able to appeal a strike unlimited times (#18529) Peculiarity of the `has_one` association is that the convenience creation method deletes the previous association even if the new one is invalid --- app/services/appeal_service.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/services/appeal_service.rb b/app/services/appeal_service.rb index 1397c50f5..cef9be05f 100644 --- a/app/services/appeal_service.rb +++ b/app/services/appeal_service.rb @@ -14,7 +14,8 @@ class AppealService < BaseService private def create_appeal! - @appeal = @strike.create_appeal!( + @appeal = Appeal.create!( + strike: @strike, text: @text, account: @strike.target_account ) From 52f4e834f293c9fdbf5805639d022ac4e3856b75 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 26 May 2022 22:14:47 +0200 Subject: [PATCH 104/652] Fix concurrent unfollowing decrementing follower count more than once (#18527) --- app/services/unfollow_service.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/services/unfollow_service.rb b/app/services/unfollow_service.rb index 151f3674f..d83a60e4e 100644 --- a/app/services/unfollow_service.rb +++ b/app/services/unfollow_service.rb @@ -2,6 +2,8 @@ class UnfollowService < BaseService include Payloadable + include Redisable + include Lockable # Unfollow and notify the remote user # @param [Account] source_account Where to unfollow from @@ -13,7 +15,9 @@ class UnfollowService < BaseService @target_account = target_account @options = options - unfollow! || undo_follow_request! + with_lock("relationship:#{[source_account.id, target_account.id].sort.join(':')}") do + unfollow! || undo_follow_request! + end end private From 0a1992430db7a859b3b7faa3d9ce4f07734b5fd8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 26 May 2022 23:02:42 +0200 Subject: [PATCH 105/652] Fix errors when rendering RSS feeds (#18531) --- app/helpers/formatting_helper.rb | 2 +- app/helpers/languages_helper.rb | 4 ++++ app/lib/rss/media_content.rb | 6 ++++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/helpers/formatting_helper.rb b/app/helpers/formatting_helper.rb index f5b8dbed8..a9d2f9651 100644 --- a/app/helpers/formatting_helper.rb +++ b/app/helpers/formatting_helper.rb @@ -23,7 +23,7 @@ module FormattingHelper before_html = begin if status.spoiler_text? - "

#{I18n.t('rss.content_warning', locale: valid_locale_or_nil(status.language))} #{h(status.spoiler_text)}


" + "

#{I18n.t('rss.content_warning', locale: available_locale_or_nil(status.language) || I18n.default_locale)} #{h(status.spoiler_text)}


" else '' end diff --git a/app/helpers/languages_helper.rb b/app/helpers/languages_helper.rb index d39bb6c93..4077e19bd 100644 --- a/app/helpers/languages_helper.rb +++ b/app/helpers/languages_helper.rb @@ -254,4 +254,8 @@ module LanguagesHelper def valid_locale?(locale) locale.present? && SUPPORTED_LOCALES.key?(locale.to_sym) end + + def available_locale_or_nil(locale_name) + locale_name.to_sym if locale_name.present? && I18n.available_locales.include?(locale_name.to_sym) + end end diff --git a/app/lib/rss/media_content.rb b/app/lib/rss/media_content.rb index 7aefd8b40..f281fe29e 100644 --- a/app/lib/rss/media_content.rb +++ b/app/lib/rss/media_content.rb @@ -26,4 +26,10 @@ class RSS::MediaContent < RSS::Element description['type'] = 'plain' end end + + def thumbnail(str) + append_element('media:thumbnail') do |thumbnail| + thumbnail['url'] = str + end + end end From fbcbf7898f000d9d1a21d52e8a8d3ed4602aa7db Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 26 May 2022 23:26:15 +0200 Subject: [PATCH 106/652] Bump version to 3.5.3 (#18530) --- CHANGELOG.md | 47 +++++++++++++++++++++++++++++++++++++++++ lib/mastodon/version.rb | 2 +- 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 841c01bfb..ed4cdd881 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,53 @@ Changelog All notable changes to this project will be documented in this file. +## [3.5.3] - 2022-05-26 +### Added + +- **Add language dropdown to compose form in web UI** ([Gargron](https://github.com/mastodon/mastodon/pull/18420), [ykzts](https://github.com/mastodon/mastodon/pull/18460)) +- **Add warning for limited accounts in web UI** ([Gargron](https://github.com/mastodon/mastodon/pull/18344)) +- Add `limited` attribute to accounts in REST API ([Gargron](https://github.com/mastodon/mastodon/pull/18344)) + +### Changed + +- **Change RSS feeds** ([Gargron](https://github.com/mastodon/mastodon/pull/18356), [tribela](https://github.com/mastodon/mastodon/pull/18406)) + - Titles are now date and time of post + - Bodies now render all content faithfully, including polls and emojis + - All media attachments are included with Media RSS +- Change "dangerous" to "sensitive" in privacy policy and web UI ([Gargron](https://github.com/mastodon/mastodon/pull/18515)) +- Change unconfirmed accounts to not be visible in REST API ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17530)) +- Change `tootctl search deploy` to improve performance ([Gargron](https://github.com/mastodon/mastodon/pull/18463), [Gargron](https://github.com/mastodon/mastodon/pull/18514)) +- Change search indexing to use batches to minimize resource usage ([Gargron](https://github.com/mastodon/mastodon/pull/18451)) + +### Fixed + +- Fix follower and other counters being able to go negative ([Gargron](https://github.com/mastodon/mastodon/pull/18517)) +- Fix unnecessary query on when creating a status ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17901)) +- Fix warning an account outside of a report closing all reports for that account ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18387)) +- Fix error when resolving a link that redirects to a local post ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18314)) +- Fix preferred posting language returning unusable value in REST API ([Gargron](https://github.com/mastodon/mastodon/pull/18428)) +- Fix race condition error when external status is reblogged ([ykzts](https://github.com/mastodon/mastodon/pull/18424)) +- Fix missing string for appeal validation error ([Gargron](https://github.com/mastodon/mastodon/pull/18410)) +- Fix block/mute lists showing a follow button in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18364)) +- Fix Redis configuration not being changed by `mastodon:setup` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18383)) +- Fix streaming notifications not using quick filter logic in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18316)) +- Fix ambiguous wording on appeal actions in admin UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18328)) +- Fix floating action button obscuring last element in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18332)) +- Fix account warnings not being recorded in audit log ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18338)) +- Fix leftover icons for direct visibility statuses ([Steffo99](https://github.com/mastodon/mastodon/pull/18305)) +- Fix link verification requiring case sensitivity on links ([sgolemon](https://github.com/mastodon/mastodon/pull/18320)) +- Fix embeds not setting their height correctly ([rinsuki](https://github.com/mastodon/mastodon/pull/18301)) + +### Security + +- Fix concurrent unfollowing decrementing follower count more than once ([Gargron](https://github.com/mastodon/mastodon/pull/18527)) +- Fix being able to appeal a strike unlimited times ([Gargron](https://github.com/mastodon/mastodon/pull/18529)) +- Fix being able to report otherwise inaccessible statuses ([Gargron](https://github.com/mastodon/mastodon/pull/18528)) +- Fix empty votes arbitrarily increasing voters count in polls ([Gargron](https://github.com/mastodon/mastodon/pull/18526)) +- Fix moderator identity leak when approving appeal of sensitive marked statuses ([Gargron](https://github.com/mastodon/mastodon/pull/18525)) +- Fix suspended users being able to access APIs that don't require a user ([Gargron](https://github.com/mastodon/mastodon/pull/18524)) +- Fix confirmation redirect to app without `Location` header ([Gargron](https://github.com/mastodon/mastodon/pull/18523)) + ## [3.5.2] - 2022-05-04 ### Added diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index 73024e612..8ed955aa0 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -13,7 +13,7 @@ module Mastodon end def patch - 2 + 3 end def flags From e34dd3644c830895988a3116a7b6949fd81ed3fa Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 27 May 2022 20:05:22 +0200 Subject: [PATCH 107/652] Remove unused `filtered_languages` column (#18533) * Remove unused `filtered_languages` column Fixes #18522 * Fix tests --- app/models/user.rb | 2 +- ...0527114923_remove_filtered_languages_from_users.rb | 11 +++++++++++ db/schema.rb | 3 +-- .../settings/preferences/other_controller_spec.rb | 2 +- 4 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 db/post_migrate/20220527114923_remove_filtered_languages_from_users.rb diff --git a/app/models/user.rb b/app/models/user.rb index ab2e391e9..23febb6fe 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -26,7 +26,6 @@ # otp_required_for_login :boolean default(FALSE), not null # last_emailed_at :datetime # otp_backup_codes :string is an Array -# filtered_languages :string default([]), not null, is an Array # account_id :bigint(8) not null # disabled :boolean default(FALSE), not null # moderator :boolean default(FALSE), not null @@ -48,6 +47,7 @@ class User < ApplicationRecord current_sign_in_ip last_sign_in_ip skip_sign_in_token + filtered_languages ) include Settings::Extend diff --git a/db/post_migrate/20220527114923_remove_filtered_languages_from_users.rb b/db/post_migrate/20220527114923_remove_filtered_languages_from_users.rb new file mode 100644 index 000000000..bd3664c72 --- /dev/null +++ b/db/post_migrate/20220527114923_remove_filtered_languages_from_users.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class RemoveFilteredLanguagesFromUsers < ActiveRecord::Migration[6.1] + disable_ddl_transaction! + + def change + safety_assured do + remove_column :users, :filtered_languages, :string, array: true, default: [], null: false + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 726989bef..081955660 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2022_04_29_101850) do +ActiveRecord::Schema.define(version: 2022_05_27_114923) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -983,7 +983,6 @@ ActiveRecord::Schema.define(version: 2022_04_29_101850) do t.boolean "otp_required_for_login", default: false, null: false t.datetime "last_emailed_at" t.string "otp_backup_codes", array: true - t.string "filtered_languages", default: [], null: false, array: true t.bigint "account_id", null: false t.boolean "disabled", default: false, null: false t.boolean "moderator", default: false, null: false diff --git a/spec/controllers/settings/preferences/other_controller_spec.rb b/spec/controllers/settings/preferences/other_controller_spec.rb index 1b556ac7f..960378a01 100644 --- a/spec/controllers/settings/preferences/other_controller_spec.rb +++ b/spec/controllers/settings/preferences/other_controller_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' describe Settings::Preferences::OtherController do render_views - let(:user) { Fabricate(:user, filtered_languages: []) } + let(:user) { Fabricate(:user, chosen_languages: []) } before do sign_in user, scope: :user From d21251f8fe318ca468d14134dd767382447249de Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 27 May 2022 20:05:34 +0200 Subject: [PATCH 108/652] Remove unused assets (#18541) --- app/javascript/images/elephant-fren.png | Bin 34530 -> 0 bytes app/javascript/images/logo_alt.svg | 1 - .../images/logo_transparent_black.svg | 1 - .../images/proof_providers/keybase.png | Bin 12665 -> 0 bytes app/javascript/images/screen_federation.svg | 1 - app/javascript/images/screen_hello.svg | 1 - app/javascript/images/screen_interactions.svg | 1 - .../mastodon/features/introduction/index.js | 197 ------------------ app/javascript/styles/application.scss | 1 - .../styles/mastodon/introduction.scss | 154 -------------- 10 files changed, 357 deletions(-) delete mode 100644 app/javascript/images/elephant-fren.png delete mode 100644 app/javascript/images/logo_alt.svg delete mode 100644 app/javascript/images/logo_transparent_black.svg delete mode 100644 app/javascript/images/proof_providers/keybase.png delete mode 100644 app/javascript/images/screen_federation.svg delete mode 100644 app/javascript/images/screen_hello.svg delete mode 100644 app/javascript/images/screen_interactions.svg delete mode 100644 app/javascript/mastodon/features/introduction/index.js delete mode 100644 app/javascript/styles/mastodon/introduction.scss diff --git a/app/javascript/images/elephant-fren.png b/app/javascript/images/elephant-fren.png deleted file mode 100644 index 38b1e3cba5a677da3cc109e3a149112b8d940b5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34530 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 diff --git a/app/javascript/images/logo_transparent_black.svg b/app/javascript/images/logo_transparent_black.svg deleted file mode 100644 index e44bcf5e1..000000000 --- a/app/javascript/images/logo_transparent_black.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/app/javascript/images/proof_providers/keybase.png b/app/javascript/images/proof_providers/keybase.png deleted file mode 100644 index 7e3ac657f419d3dab558f4454f85221b0932dcc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12665 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 S`TmyzL`FhEyjs*S=>GvLj@fen diff --git a/app/javascript/images/screen_federation.svg b/app/javascript/images/screen_federation.svg deleted file mode 100644 index 7019a7356..000000000 --- a/app/javascript/images/screen_federation.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/app/javascript/images/screen_hello.svg b/app/javascript/images/screen_hello.svg deleted file mode 100644 index 7bcdd0afd..000000000 --- a/app/javascript/images/screen_hello.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/app/javascript/images/screen_interactions.svg b/app/javascript/images/screen_interactions.svg deleted file mode 100644 index 66a36f978..000000000 --- a/app/javascript/images/screen_interactions.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/app/javascript/mastodon/features/introduction/index.js b/app/javascript/mastodon/features/introduction/index.js deleted file mode 100644 index 5820750a4..000000000 --- a/app/javascript/mastodon/features/introduction/index.js +++ /dev/null @@ -1,197 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import ReactSwipeableViews from 'react-swipeable-views'; -import classNames from 'classnames'; -import { connect } from 'react-redux'; -import { FormattedMessage } from 'react-intl'; -import { closeOnboarding } from '../../actions/onboarding'; -import screenHello from '../../../images/screen_hello.svg'; -import screenFederation from '../../../images/screen_federation.svg'; -import screenInteractions from '../../../images/screen_interactions.svg'; -import logoTransparent from '../../../images/logo_transparent.svg'; -import { disableSwiping } from 'mastodon/initial_state'; - -const FrameWelcome = ({ domain, onNext }) => ( -
-
- -
- -
-

-

{domain} }} />

-
- -
- -
-
-); - -FrameWelcome.propTypes = { - domain: PropTypes.string.isRequired, - onNext: PropTypes.func.isRequired, -}; - -const FrameFederation = ({ onNext }) => ( -
-
- -
- -
-
-

-

-
- -
-

-

-
- -
-

-

-
-
- -
- -
-
-); - -FrameFederation.propTypes = { - onNext: PropTypes.func.isRequired, -}; - -const FrameInteractions = ({ onNext }) => ( -
-
- -
- -
-
-

-

-
- -
-

-

-
- -
-

-

-
-
- -
- -
-
-); - -FrameInteractions.propTypes = { - onNext: PropTypes.func.isRequired, -}; - -export default @connect(state => ({ domain: state.getIn(['meta', 'domain']) })) -class Introduction extends React.PureComponent { - - static propTypes = { - domain: PropTypes.string.isRequired, - dispatch: PropTypes.func.isRequired, - }; - - state = { - currentIndex: 0, - }; - - componentWillMount () { - this.pages = [ - , - , - , - ]; - } - - componentDidMount() { - window.addEventListener('keyup', this.handleKeyUp); - } - - componentWillUnmount() { - window.addEventListener('keyup', this.handleKeyUp); - } - - handleDot = (e) => { - const i = Number(e.currentTarget.getAttribute('data-index')); - e.preventDefault(); - this.setState({ currentIndex: i }); - } - - handlePrev = () => { - this.setState(({ currentIndex }) => ({ - currentIndex: Math.max(0, currentIndex - 1), - })); - } - - handleNext = () => { - const { pages } = this; - - this.setState(({ currentIndex }) => ({ - currentIndex: Math.min(currentIndex + 1, pages.length - 1), - })); - } - - handleSwipe = (index) => { - this.setState({ currentIndex: index }); - } - - handleFinish = () => { - this.props.dispatch(closeOnboarding()); - } - - handleKeyUp = ({ key }) => { - switch (key) { - case 'ArrowLeft': - this.handlePrev(); - break; - case 'ArrowRight': - this.handleNext(); - break; - } - } - - render () { - const { currentIndex } = this.state; - const { pages } = this; - - return ( -
- - {pages.map((page, i) => ( -
{page}
- ))} -
- -
- {pages.map((_, i) => ( -
- ))} -
-
- ); - } - -} diff --git a/app/javascript/styles/application.scss b/app/javascript/styles/application.scss index 8ebc45b62..cb65b9567 100644 --- a/app/javascript/styles/application.scss +++ b/app/javascript/styles/application.scss @@ -17,7 +17,6 @@ @import 'mastodon/boost'; @import 'mastodon/components'; @import 'mastodon/polls'; -@import 'mastodon/introduction'; @import 'mastodon/modal'; @import 'mastodon/emoji_picker'; @import 'mastodon/about'; diff --git a/app/javascript/styles/mastodon/introduction.scss b/app/javascript/styles/mastodon/introduction.scss deleted file mode 100644 index b44ae7306..000000000 --- a/app/javascript/styles/mastodon/introduction.scss +++ /dev/null @@ -1,154 +0,0 @@ -.introduction { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - height: 100vh; - background: $ui-base-color; - - @media screen and (max-width: 920px) { - display: block !important; - } - - &__pager { - background: darken($ui-base-color, 8%); - box-shadow: 0 0 15px rgba($base-shadow-color, 0.2); - overflow: hidden; - } - - &__pager, - &__frame { - border-radius: 10px; - width: 50vw; - min-width: 920px; - - @media screen and (max-width: 920px) { - min-width: 0; - width: 100%; - border-radius: 0; - box-shadow: none; - } - } - - &__frame-wrapper { - opacity: 0; - transition: opacity 500ms linear; - - &.active { - opacity: 1; - transition: opacity 50ms linear; - } - } - - &__frame { - overflow: hidden; - } - - &__illustration { - height: 50vh; - - @media screen and (max-width: 630px) { - height: auto; - } - - img { - object-fit: cover; - display: block; - margin: 0; - width: 100%; - height: 100%; - } - } - - &__text { - border-top: 2px solid $ui-highlight-color; - - &--columnized { - display: flex; - - & > div { - flex: 1 1 33.33%; - text-align: center; - padding: 25px; - padding-bottom: 30px; - } - - @media screen and (max-width: 630px) { - display: block; - padding: 15px 0; - padding-bottom: 20px; - - & > div { - padding: 10px 25px; - } - } - } - - h3 { - font-size: 24px; - line-height: 1.5; - font-weight: 700; - margin-bottom: 10px; - } - - p { - font-size: 16px; - line-height: 24px; - font-weight: 400; - color: $darker-text-color; - - code { - display: inline-block; - background: darken($ui-base-color, 8%); - font-size: 15px; - border: 1px solid lighten($ui-base-color, 8%); - border-radius: 2px; - padding: 1px 3px; - } - } - - &--centered { - padding: 25px; - padding-bottom: 30px; - text-align: center; - } - } - - &__dots { - display: flex; - align-items: center; - justify-content: center; - padding: 25px; - - @media screen and (max-width: 630px) { - display: none; - } - } - - &__dot { - width: 14px; - height: 14px; - border-radius: 14px; - border: 1px solid $ui-highlight-color; - background: transparent; - margin: 0 3px; - cursor: pointer; - - &:hover { - background: lighten($ui-base-color, 8%); - } - - &.active { - cursor: default; - background: $ui-highlight-color; - } - } - - &__action { - padding: 25px; - padding-top: 0; - display: flex; - align-items: center; - justify-content: center; - } -} From 379a7a7ca7cf913cbc130a6323f821b534fc14c4 Mon Sep 17 00:00:00 2001 From: Alexander Ivanov Date: Sat, 28 May 2022 02:06:40 +0800 Subject: [PATCH 109/652] Add support for webp uploads (#18506) --- app/javascript/mastodon/utils/resize_image.js | 2 +- app/models/concerns/account_avatar.rb | 2 +- app/models/concerns/account_header.rb | 2 +- app/models/custom_emoji.rb | 2 +- app/models/media_attachment.rb | 4 ++-- app/models/preview_card.rb | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/javascript/mastodon/utils/resize_image.js b/app/javascript/mastodon/utils/resize_image.js index 22ff86801..fb8c3c11e 100644 --- a/app/javascript/mastodon/utils/resize_image.js +++ b/app/javascript/mastodon/utils/resize_image.js @@ -109,7 +109,7 @@ const loadImage = inputFile => new Promise((resolve, reject) => { }); const getOrientation = (img, type = 'image/png') => new Promise(resolve => { - if (type !== 'image/jpeg') { + if (!['image/jpeg', 'image/webp'].includes(type)) { resolve(1); return; } diff --git a/app/models/concerns/account_avatar.rb b/app/models/concerns/account_avatar.rb index 1af53ed23..0cfd9167c 100644 --- a/app/models/concerns/account_avatar.rb +++ b/app/models/concerns/account_avatar.rb @@ -3,7 +3,7 @@ module AccountAvatar extend ActiveSupport::Concern - IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif'].freeze + IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'].freeze LIMIT = 2.megabytes class_methods do diff --git a/app/models/concerns/account_header.rb b/app/models/concerns/account_header.rb index 72a3d0566..a8c0a28ef 100644 --- a/app/models/concerns/account_header.rb +++ b/app/models/concerns/account_header.rb @@ -3,7 +3,7 @@ module AccountHeader extend ActiveSupport::Concern - IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif'].freeze + IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'].freeze LIMIT = 2.megabytes MAX_PIXELS = 750_000 # 1500x500px diff --git a/app/models/custom_emoji.rb b/app/models/custom_emoji.rb index a85feb73a..b08893e77 100644 --- a/app/models/custom_emoji.rb +++ b/app/models/custom_emoji.rb @@ -31,7 +31,7 @@ class CustomEmoji < ApplicationRecord :(#{SHORTCODE_RE_FRAGMENT}): (?=[^[:alnum:]:]|$)/x - IMAGE_MIME_TYPES = %w(image/png image/gif).freeze + IMAGE_MIME_TYPES = %w(image/png image/gif image/webp).freeze belongs_to :category, class_name: 'CustomEmojiCategory', optional: true has_one :local_counterpart, -> { where(domain: nil) }, class_name: 'CustomEmoji', primary_key: :shortcode, foreign_key: :shortcode diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb index 21c663e47..e6a0548eb 100644 --- a/app/models/media_attachment.rb +++ b/app/models/media_attachment.rb @@ -44,7 +44,7 @@ class MediaAttachment < ApplicationRecord MAX_VIDEO_MATRIX_LIMIT = 2_304_000 # 1920x1200px MAX_VIDEO_FRAME_RATE = 60 - IMAGE_FILE_EXTENSIONS = %w(.jpg .jpeg .png .gif).freeze + IMAGE_FILE_EXTENSIONS = %w(.jpg .jpeg .png .gif .webp).freeze VIDEO_FILE_EXTENSIONS = %w(.webm .mp4 .m4v .mov).freeze AUDIO_FILE_EXTENSIONS = %w(.ogg .oga .mp3 .wav .flac .opus .aac .m4a .3gp .wma).freeze @@ -55,7 +55,7 @@ class MediaAttachment < ApplicationRecord small ).freeze - IMAGE_MIME_TYPES = %w(image/jpeg image/png image/gif).freeze + IMAGE_MIME_TYPES = %w(image/jpeg image/png image/gif image/webp).freeze VIDEO_MIME_TYPES = %w(video/webm video/mp4 video/quicktime video/ogg).freeze VIDEO_CONVERTIBLE_MIME_TYPES = %w(video/webm video/quicktime).freeze AUDIO_MIME_TYPES = %w(audio/wave audio/wav audio/x-wav audio/x-pn-wave audio/ogg audio/vorbis audio/mpeg audio/mp3 audio/webm audio/flac audio/aac audio/m4a audio/x-m4a audio/mp4 audio/3gpp video/x-ms-asf).freeze diff --git a/app/models/preview_card.rb b/app/models/preview_card.rb index 0d2c32c35..c49c51a1b 100644 --- a/app/models/preview_card.rb +++ b/app/models/preview_card.rb @@ -34,7 +34,7 @@ class PreviewCard < ApplicationRecord include Attachmentable - IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif'].freeze + IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'].freeze LIMIT = 1.megabytes BLURHASH_OPTIONS = { From 9a4b84d7eac2a8c2e8251a2d05d25062685c8e65 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 28 May 2022 11:43:38 +0900 Subject: [PATCH 110/652] Bump rack from 2.2.3 to 2.2.3.1 (#18540) Bumps [rack](https://github.com/rack/rack) from 2.2.3 to 2.2.3.1. - [Release notes](https://github.com/rack/rack/releases) - [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md) - [Commits](https://github.com/rack/rack/compare/2.2.3...2.2.3.1) --- updated-dependencies: - dependency-name: rack dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index e12fdc237..f2b1225d5 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -474,7 +474,7 @@ GEM activesupport (>= 3.0.0) raabro (1.4.0) racc (1.6.0) - rack (2.2.3) + rack (2.2.3.1) rack-attack (6.6.1) rack (>= 1.0, < 3) rack-cors (1.1.1) From 38ff5fd6f1c93d9727f382aa0fa3d1a4d6233143 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 28 May 2022 21:22:32 +0900 Subject: [PATCH 111/652] Bump sass from 1.51.0 to 1.52.1 (#18491) Bumps [sass](https://github.com/sass/dart-sass) from 1.51.0 to 1.52.1. - [Release notes](https://github.com/sass/dart-sass/releases) - [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md) - [Commits](https://github.com/sass/dart-sass/compare/1.51.0...1.52.1) --- updated-dependencies: - dependency-name: sass dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 03802a939..8ca0ae035 100644 --- a/package.json +++ b/package.json @@ -117,7 +117,7 @@ "requestidlecallback": "^0.3.0", "reselect": "^4.1.5", "rimraf": "^3.0.2", - "sass": "^1.51.0", + "sass": "^1.52.1", "sass-loader": "^10.2.0", "stacktrace-js": "^2.0.2", "stringz": "^2.1.0", diff --git a/yarn.lock b/yarn.lock index 0a56188ba..eb1a8a64d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9912,10 +9912,10 @@ sass-loader@^10.2.0: schema-utils "^3.0.0" semver "^7.3.2" -sass@^1.51.0: - version "1.51.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.51.0.tgz#25ea36cf819581fe1fe8329e8c3a4eaaf70d2845" - integrity sha512-haGdpTgywJTvHC2b91GSq+clTKGbtkkZmVAb82jZQN/wTy6qs8DdFm2lhEQbEwrY0QDRgSQ3xDurqM977C3noA== +sass@^1.52.1: + version "1.52.1" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.52.1.tgz#554693da808543031f9423911d62c60a1acf7889" + integrity sha512-fSzYTbr7z8oQnVJ3Acp9hV80dM1fkMN7mSD/25mpcct9F7FPBMOI8krEYALgU1aZoqGhQNhTPsuSmxjnIvAm4Q== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" From 0ac6e5d434f9d24a5d9fb3865acd4ced0bb1bf02 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 28 May 2022 21:22:47 +0900 Subject: [PATCH 112/652] Bump eslint-plugin-react from 7.29.4 to 7.30.0 (#18503) Bumps [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) from 7.29.4 to 7.30.0. - [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases) - [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md) - [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.29.4...v7.30.0) --- updated-dependencies: - dependency-name: eslint-plugin-react dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 99 +++++++++++++++++++++++++++++++++------------------- 2 files changed, 65 insertions(+), 36 deletions(-) diff --git a/package.json b/package.json index 8ca0ae035..ed58098ea 100644 --- a/package.json +++ b/package.json @@ -145,7 +145,7 @@ "eslint-plugin-import": "~2.26.0", "eslint-plugin-jsx-a11y": "~6.5.1", "eslint-plugin-promise": "~6.0.0", - "eslint-plugin-react": "~7.29.4", + "eslint-plugin-react": "~7.30.0", "jest": "^28.1.0", "jest-environment-jsdom": "^28.1.0", "prettier": "^2.6.2", diff --git a/yarn.lock b/yarn.lock index eb1a8a64d..0f260cba5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2405,14 +2405,15 @@ array.prototype.flat@^1.2.5: define-properties "^1.1.3" es-abstract "^1.19.0" -array.prototype.flatmap@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz#908dc82d8a406930fdf38598d51e7411d18d4446" - integrity sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA== +array.prototype.flatmap@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz#a7e8ed4225f4788a70cd910abcf0791e76a5534f" + integrity sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.19.0" + es-abstract "^1.19.2" + es-shim-unscopables "^1.0.0" arrow-key-navigation@^1.2.0: version "1.2.0" @@ -4407,6 +4408,42 @@ es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.18.0-next.0, es- string.prototype.trimstart "^1.0.5" unbox-primitive "^1.0.2" +es-abstract@^1.19.2: + version "1.20.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.1.tgz#027292cd6ef44bd12b1913b828116f54787d1814" + integrity sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.1.1" + get-symbol-description "^1.0.0" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + is-callable "^1.2.4" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-weakref "^1.0.2" + object-inspect "^1.12.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + regexp.prototype.flags "^1.4.3" + string.prototype.trimend "^1.0.5" + string.prototype.trimstart "^1.0.5" + unbox-primitive "^1.0.2" + +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -4588,25 +4625,25 @@ eslint-plugin-promise@~6.0.0: resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz#017652c07c9816413a41e11c30adc42c3d55ff18" integrity sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw== -eslint-plugin-react@~7.29.4: - version "7.29.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz#4717de5227f55f3801a5fd51a16a4fa22b5914d2" - integrity sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ== +eslint-plugin-react@~7.30.0: + version "7.30.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.30.0.tgz#8e7b1b2934b8426ac067a0febade1b13bd7064e3" + integrity sha512-RgwH7hjW48BleKsYyHK5vUAvxtE9SMPDKmcPRQgtRCYaZA0XQPt5FSkrU3nhz5ifzMZcA8opwmRJ2cmOO8tr5A== dependencies: - array-includes "^3.1.4" - array.prototype.flatmap "^1.2.5" + array-includes "^3.1.5" + array.prototype.flatmap "^1.3.0" doctrine "^2.1.0" estraverse "^5.3.0" jsx-ast-utils "^2.4.1 || ^3.0.0" minimatch "^3.1.2" object.entries "^1.1.5" object.fromentries "^2.0.5" - object.hasown "^1.1.0" + object.hasown "^1.1.1" object.values "^1.1.5" prop-types "^15.8.1" resolve "^2.0.0-next.3" semver "^6.3.0" - string.prototype.matchall "^4.0.6" + string.prototype.matchall "^4.0.7" eslint-scope@^4.0.3: version "4.0.3" @@ -7971,13 +8008,13 @@ object.getownpropertydescriptors@^2.1.0: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" -object.hasown@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.0.tgz#7232ed266f34d197d15cac5880232f7a4790afe5" - integrity sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg== +object.hasown@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.1.tgz#ad1eecc60d03f49460600430d97f23882cf592a3" + integrity sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A== dependencies: - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.19.5" object.pick@^1.3.0: version "1.3.0" @@ -9571,15 +9608,7 @@ regexp.prototype.flags@^1.2.0: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" -regexp.prototype.flags@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" - integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -regexp.prototype.flags@^1.4.1: +regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== @@ -10523,18 +10552,18 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string.prototype.matchall@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz#5abb5dabc94c7b0ea2380f65ba610b3a544b15fa" - integrity sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg== +string.prototype.matchall@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" + integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== dependencies: call-bind "^1.0.2" define-properties "^1.1.3" es-abstract "^1.19.1" get-intrinsic "^1.1.1" - has-symbols "^1.0.2" + has-symbols "^1.0.3" internal-slot "^1.0.3" - regexp.prototype.flags "^1.3.1" + regexp.prototype.flags "^1.4.1" side-channel "^1.0.4" string.prototype.trimend@^1.0.5: From fed7380e9f6811ac069b1891546581aa4bccb122 Mon Sep 17 00:00:00 2001 From: Jeong Arm Date: Sat, 28 May 2022 21:32:08 +0900 Subject: [PATCH 113/652] Prevent use locale with empty string (#18543) Somehow user's locale could be an empty string, And empty string itself are treated as true value. --- app/mailers/user_mailer.rb | 40 ++++++++++++--------- app/workers/move_worker.rb | 4 +-- app/workers/web/push_notification_worker.rb | 2 +- 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/app/mailers/user_mailer.rb b/app/mailers/user_mailer.rb index e47bedec6..09e2b7c53 100644 --- a/app/mailers/user_mailer.rb +++ b/app/mailers/user_mailer.rb @@ -18,7 +18,7 @@ class UserMailer < Devise::Mailer return unless @resource.active_for_authentication? - I18n.with_locale(@resource.locale || I18n.default_locale) do + I18n.with_locale(locale) do mail to: @resource.unconfirmed_email.presence || @resource.email, subject: I18n.t(@resource.pending_reconfirmation? ? 'devise.mailer.reconfirmation_instructions.subject' : 'devise.mailer.confirmation_instructions.subject', instance: @instance), template_name: @resource.pending_reconfirmation? ? 'reconfirmation_instructions' : 'confirmation_instructions' @@ -32,7 +32,7 @@ class UserMailer < Devise::Mailer return unless @resource.active_for_authentication? - I18n.with_locale(@resource.locale || I18n.default_locale) do + I18n.with_locale(locale) do mail to: @resource.email, subject: I18n.t('devise.mailer.reset_password_instructions.subject') end end @@ -43,7 +43,7 @@ class UserMailer < Devise::Mailer return unless @resource.active_for_authentication? - I18n.with_locale(@resource.locale || I18n.default_locale) do + I18n.with_locale(locale) do mail to: @resource.email, subject: I18n.t('devise.mailer.password_change.subject') end end @@ -54,7 +54,7 @@ class UserMailer < Devise::Mailer return unless @resource.active_for_authentication? - I18n.with_locale(@resource.locale || I18n.default_locale) do + I18n.with_locale(locale) do mail to: @resource.email, subject: I18n.t('devise.mailer.email_changed.subject') end end @@ -65,7 +65,7 @@ class UserMailer < Devise::Mailer return unless @resource.active_for_authentication? - I18n.with_locale(@resource.locale || I18n.default_locale) do + I18n.with_locale(locale) do mail to: @resource.email, subject: I18n.t('devise.mailer.two_factor_enabled.subject') end end @@ -76,7 +76,7 @@ class UserMailer < Devise::Mailer return unless @resource.active_for_authentication? - I18n.with_locale(@resource.locale || I18n.default_locale) do + I18n.with_locale(locale) do mail to: @resource.email, subject: I18n.t('devise.mailer.two_factor_disabled.subject') end end @@ -87,7 +87,7 @@ class UserMailer < Devise::Mailer return unless @resource.active_for_authentication? - I18n.with_locale(@resource.locale || I18n.default_locale) do + I18n.with_locale(locale) do mail to: @resource.email, subject: I18n.t('devise.mailer.two_factor_recovery_codes_changed.subject') end end @@ -98,7 +98,7 @@ class UserMailer < Devise::Mailer return unless @resource.active_for_authentication? - I18n.with_locale(@resource.locale || I18n.default_locale) do + I18n.with_locale(locale) do mail to: @resource.email, subject: I18n.t('devise.mailer.webauthn_enabled.subject') end end @@ -109,7 +109,7 @@ class UserMailer < Devise::Mailer return unless @resource.active_for_authentication? - I18n.with_locale(@resource.locale || I18n.default_locale) do + I18n.with_locale(locale) do mail to: @resource.email, subject: I18n.t('devise.mailer.webauthn_disabled.subject') end end @@ -121,7 +121,7 @@ class UserMailer < Devise::Mailer return unless @resource.active_for_authentication? - I18n.with_locale(@resource.locale || I18n.default_locale) do + I18n.with_locale(locale) do mail to: @resource.email, subject: I18n.t('devise.mailer.webauthn_credential.added.subject') end end @@ -133,7 +133,7 @@ class UserMailer < Devise::Mailer return unless @resource.active_for_authentication? - I18n.with_locale(@resource.locale || I18n.default_locale) do + I18n.with_locale(locale) do mail to: @resource.email, subject: I18n.t('devise.mailer.webauthn_credential.deleted.subject') end end @@ -144,7 +144,7 @@ class UserMailer < Devise::Mailer return unless @resource.active_for_authentication? - I18n.with_locale(@resource.locale || I18n.default_locale) do + I18n.with_locale(locale) do mail to: @resource.email, subject: I18n.t('user_mailer.welcome.subject') end end @@ -156,7 +156,7 @@ class UserMailer < Devise::Mailer return unless @resource.active_for_authentication? - I18n.with_locale(@resource.locale || I18n.default_locale) do + I18n.with_locale(locale) do mail to: @resource.email, subject: I18n.t('user_mailer.backup_ready.subject') end end @@ -167,7 +167,7 @@ class UserMailer < Devise::Mailer @instance = Rails.configuration.x.local_domain @statuses = @warning.statuses.includes(:account, :preloadable_poll, :media_attachments, active_mentions: [:account]) - I18n.with_locale(@resource.locale || I18n.default_locale) do + I18n.with_locale(locale) do mail to: @resource.email, subject: I18n.t("user_mailer.warning.subject.#{@warning.action}", acct: "@#{user.account.local_username_and_domain}") end end @@ -177,7 +177,7 @@ class UserMailer < Devise::Mailer @instance = Rails.configuration.x.local_domain @appeal = appeal - I18n.with_locale(@resource.locale || I18n.default_locale) do + I18n.with_locale(locale) do mail to: @resource.email, subject: I18n.t('user_mailer.appeal_approved.subject', date: l(@appeal.created_at)) end end @@ -187,7 +187,7 @@ class UserMailer < Devise::Mailer @instance = Rails.configuration.x.local_domain @appeal = appeal - I18n.with_locale(@resource.locale || I18n.default_locale) do + I18n.with_locale(locale) do mail to: @resource.email, subject: I18n.t('user_mailer.appeal_rejected.subject', date: l(@appeal.created_at)) end end @@ -200,8 +200,14 @@ class UserMailer < Devise::Mailer @detection = Browser.new(user_agent) @timestamp = timestamp.to_time.utc - I18n.with_locale(@resource.locale || I18n.default_locale) do + I18n.with_locale(locale) do mail to: @resource.email, subject: I18n.t('user_mailer.suspicious_sign_in.subject') end end + + private + + def locale + @resource.locale.presence || I18n.default_locale + end end diff --git a/app/workers/move_worker.rb b/app/workers/move_worker.rb index 4a900e3b8..c3167f9ca 100644 --- a/app/workers/move_worker.rb +++ b/app/workers/move_worker.rb @@ -47,7 +47,7 @@ class MoveWorker def copy_account_notes! AccountNote.where(target_account: @source_account).find_each do |note| - text = I18n.with_locale(note.account.user&.locale || I18n.default_locale) do + text = I18n.with_locale(note.account.user&.locale.presence || I18n.default_locale) do I18n.t('move_handler.copy_account_note_text', acct: @source_account.acct) end @@ -90,7 +90,7 @@ class MoveWorker def add_account_note_if_needed!(account, id) unless AccountNote.where(account: account, target_account: @target_account).exists? - text = I18n.with_locale(account.user&.locale || I18n.default_locale) do + text = I18n.with_locale(account.user&.locale.presence || I18n.default_locale) do I18n.t(id, acct: @source_account.acct) end AccountNote.create!(account: account, target_account: @target_account, comment: text) diff --git a/app/workers/web/push_notification_worker.rb b/app/workers/web/push_notification_worker.rb index 57f5b5c22..1ed5bb9e0 100644 --- a/app/workers/web/push_notification_worker.rb +++ b/app/workers/web/push_notification_worker.rb @@ -51,7 +51,7 @@ class Web::PushNotificationWorker private def push_notification_json - json = I18n.with_locale(@subscription.locale || I18n.default_locale) do + json = I18n.with_locale(@subscription.locale.presence || I18n.default_locale) do ActiveModelSerializers::SerializableResource.new( @notification, serializer: Web::NotificationSerializer, From dc7e2985e60c90e8efe82e56edb4fdd473bd1651 Mon Sep 17 00:00:00 2001 From: Jeong Arm Date: Sat, 28 May 2022 22:50:36 +0900 Subject: [PATCH 114/652] Add lang html attr to each posts (#18544) --- app/javascript/mastodon/components/status_content.js | 9 +++++---- app/views/statuses/_detailed_status.html.haml | 2 +- app/views/statuses/_simple_status.html.haml | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/app/javascript/mastodon/components/status_content.js b/app/javascript/mastodon/components/status_content.js index d01365afb..724165ada 100644 --- a/app/javascript/mastodon/components/status_content.js +++ b/app/javascript/mastodon/components/status_content.js @@ -176,6 +176,7 @@ export default class StatusContent extends React.PureComponent { const content = { __html: status.get('contentHtml') }; const spoilerContent = { __html: status.get('spoilerHtml') }; + const lang = status.get('language'); const classNames = classnames('status__content', { 'status__content--with-action': this.props.onClick && this.context.router, 'status__content--with-spoiler': status.get('spoiler_text').length > 0, @@ -212,14 +213,14 @@ export default class StatusContent extends React.PureComponent { return (
{mentionsPlaceholder} -
+
{!hidden && !!status.get('poll') && } @@ -229,7 +230,7 @@ export default class StatusContent extends React.PureComponent { } else if (this.props.onClick) { const output = [
-
+
{!!status.get('poll') && } @@ -245,7 +246,7 @@ export default class StatusContent extends React.PureComponent { } else { return (
-
+
{!!status.get('poll') && } diff --git a/app/views/statuses/_detailed_status.html.haml b/app/views/statuses/_detailed_status.html.haml index 1d0e5a38c..c67f0e4d9 100644 --- a/app/views/statuses/_detailed_status.html.haml +++ b/app/views/statuses/_detailed_status.html.haml @@ -20,7 +20,7 @@ %p< %span.p-summary> #{prerender_custom_emojis(h(status.spoiler_text), status.emojis)}  %button.status__content__spoiler-link= t('statuses.show_more') - .e-content + .e-content{ :lang => status.language } = prerender_custom_emojis(status_content_format(status), status.emojis) - if status.preloadable_poll diff --git a/app/views/statuses/_simple_status.html.haml b/app/views/statuses/_simple_status.html.haml index 552b42078..f16d2c186 100644 --- a/app/views/statuses/_simple_status.html.haml +++ b/app/views/statuses/_simple_status.html.haml @@ -32,7 +32,7 @@ %p< %span.p-summary> #{prerender_custom_emojis(h(status.spoiler_text), status.emojis)}  %button.status__content__spoiler-link= t('statuses.show_more') - .e-content + .e-content{ :lang => status.language } = prerender_custom_emojis(status_content_format(status), status.emojis) - if status.preloadable_poll From 083bc137bcb7626a58e6a68b6a31bb971d46fe53 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 29 May 2022 22:27:10 +0900 Subject: [PATCH 115/652] Bump react-textarea-autosize from 8.3.3 to 8.3.4 (#18492) Bumps [react-textarea-autosize](https://github.com/Andarist/react-textarea-autosize) from 8.3.3 to 8.3.4. - [Release notes](https://github.com/Andarist/react-textarea-autosize/releases) - [Changelog](https://github.com/Andarist/react-textarea-autosize/blob/main/CHANGELOG.md) - [Commits](https://github.com/Andarist/react-textarea-autosize/compare/v8.3.3...v8.3.4) --- updated-dependencies: - dependency-name: react-textarea-autosize dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 45 +++++++++++++++++++-------------------------- 2 files changed, 20 insertions(+), 27 deletions(-) diff --git a/package.json b/package.json index ed58098ea..38523c5c3 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,7 @@ "react-select": "^5.3.2", "react-sparklines": "^1.7.0", "react-swipeable-views": "^0.14.0", - "react-textarea-autosize": "^8.3.3", + "react-textarea-autosize": "^8.3.4", "react-toggle": "^4.1.2", "redis": "^4.0.6 <4.1.0", "redux": "^4.2.0", diff --git a/yarn.lock b/yarn.lock index 0f260cba5..de282d742 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9405,14 +9405,14 @@ react-test-renderer@^16.14.0: react-is "^16.8.6" scheduler "^0.19.1" -react-textarea-autosize@^8.3.3: - version "8.3.3" - resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.3.3.tgz#f70913945369da453fd554c168f6baacd1fa04d8" - integrity sha512-2XlHXK2TDxS6vbQaoPbMOfQ8GK7+irc2fVK6QFIcC8GOnH3zI/v481n+j1L0WaPVvKxwesnY93fEfH++sus2rQ== +react-textarea-autosize@^8.3.4: + version "8.3.4" + resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz#270a343de7ad350534141b02c9cb78903e553524" + integrity sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ== dependencies: "@babel/runtime" "^7.10.2" - use-composed-ref "^1.0.0" - use-latest "^1.0.0" + use-composed-ref "^1.3.0" + use-latest "^1.2.1" react-toggle@^4.1.2: version "4.1.2" @@ -11051,11 +11051,6 @@ tr46@~0.0.3: resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= -ts-essentials@^2.0.3: - version "2.0.12" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-2.0.12.tgz#c9303f3d74f75fa7528c3d49b80e089ab09d8745" - integrity sha512-3IVX4nI6B5cc31/GFFE+i8ey/N2eA0CZDbo6n0yrz0zDX8ZJ8djmU1p+XRz7G3is0F3bB3pu2pAroFdAWQKU3w== - tsconfig-paths@^3.14.1: version "3.14.1" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" @@ -11289,24 +11284,22 @@ url@^0.11.0: punycode "1.3.2" querystring "0.2.0" -use-composed-ref@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.0.0.tgz#bb13e8f4a0b873632cde4940abeb88b92d03023a" - integrity sha512-RVqY3NFNjZa0xrmK3bIMWNmQ01QjKPDc7DeWR3xa/N8aliVppuutOE5bZzPkQfvL+5NRWMMp0DJ99Trd974FIw== - dependencies: - ts-essentials "^2.0.3" +use-composed-ref@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.3.0.tgz#3d8104db34b7b264030a9d916c5e94fbe280dbda" + integrity sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ== -use-isomorphic-layout-effect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.0.0.tgz#f56b4ed633e1c21cd9fc76fe249002a1c28989fb" - integrity sha512-JMwJ7Vd86NwAt1jH7q+OIozZSIxA4ND0fx6AsOe2q1H8ooBUp5aN6DvVCqZiIaYU6JaMRJGyR0FO7EBCIsb/Rg== +use-isomorphic-layout-effect@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" + integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== -use-latest@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.1.0.tgz#7bf9684555869c3f5f37e10d0884c8accf4d3aa6" - integrity sha512-gF04d0ZMV3AMB8Q7HtfkAWe+oq1tFXP6dZKwBHQF5nVXtGsh2oAYeeqma5ZzxtlpOcW8Ro/tLcfmEodjDeqtuw== +use-latest@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.2.1.tgz#d13dfb4b08c28e3e33991546a2cee53e14038cf2" + integrity sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw== dependencies: - use-isomorphic-layout-effect "^1.0.0" + use-isomorphic-layout-effect "^1.1.1" use@^3.1.0: version "3.1.1" From 0d00ecb6bc1fd883b6a614ca27e8bf1997bc01bf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 29 May 2022 22:27:31 +0900 Subject: [PATCH 116/652] Bump bundler-audit from 0.9.0.1 to 0.9.1 (#18488) Bumps [bundler-audit](https://github.com/postmodern/bundler-audit) from 0.9.0.1 to 0.9.1. - [Release notes](https://github.com/postmodern/bundler-audit/releases) - [Changelog](https://github.com/rubysec/bundler-audit/blob/master/ChangeLog.md) - [Commits](https://github.com/postmodern/bundler-audit/compare/v0.9.0.1...v0.9.1) --- updated-dependencies: - dependency-name: bundler-audit dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index f2b1225d5..ba7439478 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -125,7 +125,7 @@ GEM bullet (7.0.1) activesupport (>= 3.0.0) uniform_notifier (~> 1.11) - bundler-audit (0.9.0.1) + bundler-audit (0.9.1) bundler (>= 1.2.0, < 3) thor (~> 1.0) byebug (11.1.3) From d9ee3219abf15a8cf82e253ed8bce5af75ddeea8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 29 May 2022 22:28:07 +0900 Subject: [PATCH 117/652] Bump microformats from 4.3.1 to 4.4.1 (#18500) Bumps [microformats](https://github.com/microformats/microformats-ruby) from 4.3.1 to 4.4.1. - [Release notes](https://github.com/microformats/microformats-ruby/releases) - [Commits](https://github.com/microformats/microformats-ruby/compare/v4.3.1...v4.4.1) --- updated-dependencies: - dependency-name: microformats dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index 2e77fb42a..853984c84 100644 --- a/Gemfile +++ b/Gemfile @@ -115,7 +115,7 @@ group :test do gem 'capybara', '~> 3.37' gem 'climate_control', '~> 0.2' gem 'faker', '~> 2.21' - gem 'microformats', '~> 4.2' + gem 'microformats', '~> 4.4' gem 'rails-controller-testing', '~> 1.0' gem 'rspec-sidekiq', '~> 3.1' gem 'simplecov', '~> 0.21', require: false diff --git a/Gemfile.lock b/Gemfile.lock index ba7439478..05efade2e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -320,7 +320,7 @@ GEM idn-ruby (0.1.4) ipaddress (0.8.3) jmespath (1.6.1) - json (2.5.1) + json (2.6.2) json-canonicalization (0.3.0) json-jwt (1.13.0) activesupport (>= 4.2) @@ -387,7 +387,7 @@ GEM matrix (0.4.2) memory_profiler (1.0.0) method_source (1.0.0) - microformats (4.3.1) + microformats (4.4.1) json (~> 2.2) nokogiri (~> 1.10) mime-types (3.4.1) @@ -783,7 +783,7 @@ DEPENDENCIES makara (~> 0.5) mario-redis-lock (~> 1.2) memory_profiler - microformats (~> 4.2) + microformats (~> 4.4) mime-types (~> 3.4.1) net-ldap (~> 0.17) nokogiri (~> 1.13) From 7f6e79241d31a51e394415373357d4b626dc5f99 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 29 May 2022 22:28:47 +0900 Subject: [PATCH 118/652] Bump sidekiq-unique-jobs from 7.1.22 to 7.1.23 (#18499) Bumps [sidekiq-unique-jobs](https://github.com/mhenrixon/sidekiq-unique-jobs) from 7.1.22 to 7.1.23. - [Release notes](https://github.com/mhenrixon/sidekiq-unique-jobs/releases) - [Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/blob/main/CHANGELOG.md) - [Commits](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v7.1.22...v7.1.23) --- updated-dependencies: - dependency-name: sidekiq-unique-jobs dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 05efade2e..e9fd6687e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -611,7 +611,7 @@ GEM rufus-scheduler (~> 3.2) sidekiq (>= 4) tilt (>= 1.4.0) - sidekiq-unique-jobs (7.1.22) + sidekiq-unique-jobs (7.1.23) brpoplpush-redis_script (> 0.1.1, <= 2.0.0) concurrent-ruby (~> 1.0, >= 1.0.5) sidekiq (>= 5.0, < 8.0) From 1497aa81c626e35091bb421b2e3f4eab3be9d41e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 29 May 2022 22:30:10 +0900 Subject: [PATCH 119/652] Bump oj from 3.13.11 to 3.13.13 (#18495) Bumps [oj](https://github.com/ohler55/oj) from 3.13.11 to 3.13.13. - [Release notes](https://github.com/ohler55/oj/releases) - [Changelog](https://github.com/ohler55/oj/blob/develop/CHANGELOG.md) - [Commits](https://github.com/ohler55/oj/compare/v3.13.11...v3.13.13) --- updated-dependencies: - dependency-name: oj dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index e9fd6687e..9568ccb34 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -412,7 +412,7 @@ GEM concurrent-ruby (~> 1.0, >= 1.0.2) sidekiq (>= 3.5) statsd-ruby (~> 1.4, >= 1.4.0) - oj (3.13.11) + oj (3.13.13) omniauth (1.9.1) hashie (>= 3.4.6) rack (>= 1.6.2, < 3) From 3238f570db500f179c4405f0c307f3d451ca562e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 30 May 2022 08:49:43 +0200 Subject: [PATCH 120/652] New Crowdin updates (#18507) * New translations en.yml (Galician) * New translations en.json (Galician) * New translations en.yml (Esperanto) * New translations en.json (Esperanto) * New translations en.json (Dutch) * New translations en.json (Dutch) * New translations en.json (Dutch) * New translations en.yml (Korean) * New translations en.yml (Polish) * New translations en.yml (Finnish) * New translations en.yml (Hungarian) * New translations en.yml (Armenian) * New translations en.yml (Georgian) * New translations en.yml (Lithuanian) * New translations en.yml (Macedonian) * New translations en.yml (Dutch) * New translations en.yml (Norwegian) * New translations en.yml (Punjabi) * New translations en.yml (Portuguese) * New translations en.yml (Greek) * New translations en.yml (Albanian) * New translations en.yml (Serbian (Cyrillic)) * New translations en.yml (Turkish) * New translations en.yml (Ukrainian) * New translations en.yml (Chinese Traditional) * New translations en.yml (Urdu (Pakistan)) * New translations en.yml (Icelandic) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Indonesian) * New translations en.yml (Tamil) * New translations en.yml (Basque) * New translations en.yml (German) * New translations en.yml (Galician) * New translations en.yml (Slovak) * New translations en.yml (Chinese Simplified) * New translations en.yml (Swedish) * New translations en.yml (Arabic) * New translations en.yml (French) * New translations en.yml (Spanish) * New translations en.yml (Catalan) * New translations en.yml (Hebrew) * New translations en.yml (Italian) * New translations en.yml (Japanese) * New translations en.yml (Russian) * New translations en.yml (Slovenian) * New translations en.yml (Danish) * New translations en.yml (Vietnamese) * New translations en.yml (Thai) * New translations en.yml (Scottish Gaelic) * New translations en.yml (Occitan) * New translations en.json (Catalan) * New translations en.yml (Persian) * New translations en.yml (Romanian) * New translations en.yml (Afrikaans) * New translations en.yml (Bulgarian) * New translations en.yml (Czech) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Spanish, Mexico) * New translations en.json (Chinese Simplified) * New translations en.yml (Kabyle) * New translations en.yml (Ido) * New translations en.yml (Taigi) * New translations en.yml (Silesian) * New translations en.yml (Standard Moroccan Tamazight) * New translations en.json (German) * New translations en.json (Japanese) * New translations en.json (Korean) * New translations en.json (Turkish) * New translations en.json (Vietnamese) * New translations en.yml (Sardinian) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Asturian) * New translations en.json (Irish) * New translations en.yml (Irish) * New translations en.json (Arabic) * New translations en.json (Scottish Gaelic) * New translations en.json (Welsh) * New translations en.json (Galician) * New translations en.json (Icelandic) * New translations en.yml (Sanskrit) * New translations en.yml (Corsican) * New translations en.yml (Bengali) * New translations en.yml (Marathi) * New translations en.yml (Croatian) * New translations en.yml (Norwegian Nynorsk) * New translations en.yml (Kazakh) * New translations en.yml (Estonian) * New translations en.yml (Latvian) * New translations en.yml (Hindi) * New translations en.yml (Malay) * New translations en.yml (Telugu) * New translations en.yml (Welsh) * New translations en.yml (Uyghur) * New translations en.yml (Sorani (Kurdish)) * New translations en.yml (Chinese Traditional, Hong Kong) * New translations en.yml (Tatar) * New translations en.yml (Malayalam) * New translations en.yml (Breton) * New translations en.yml (Sinhala) * New translations en.yml (Cornish) * New translations en.yml (Kannada) * New translations en.yml (Asturian) * New translations en.yml (Serbian (Latin)) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.json (Sorani (Kurdish)) * New translations en.json (English, United Kingdom) * New translations en.json (Bengali) * New translations en.json (Swedish) * New translations en.json (Ukrainian) * New translations en.json (Chinese Traditional) * New translations en.json (Urdu (Pakistan)) * New translations en.json (Indonesian) * New translations en.json (Persian) * New translations en.json (Tamil) * New translations en.json (Spanish, Argentina) * New translations en.json (Spanish, Mexico) * New translations en.json (Marathi) * New translations en.json (Albanian) * New translations en.json (Thai) * New translations en.json (Croatian) * New translations en.json (Norwegian Nynorsk) * New translations en.json (Kazakh) * New translations en.json (Latvian) * New translations en.json (Hindi) * New translations en.json (Malay) * New translations en.json (Telugu) * New translations en.json (Serbian (Cyrillic)) * New translations en.json (Slovenian) * New translations en.yml (English, United Kingdom) * New translations en.json (Finnish) * New translations en.json (Norwegian) * New translations en.json (Romanian) * New translations en.json (French) * New translations en.json (Spanish) * New translations en.json (Afrikaans) * New translations en.json (Bulgarian) * New translations en.json (Czech) * New translations en.json (Danish) * New translations en.json (Greek) * New translations en.json (Basque) * New translations en.json (Hebrew) * New translations en.json (Russian) * New translations en.json (Hungarian) * New translations en.json (Armenian) * New translations en.json (Italian) * New translations en.json (Georgian) * New translations en.json (Lithuanian) * New translations en.json (Macedonian) * New translations en.json (Dutch) * New translations en.json (Punjabi) * New translations en.json (Polish) * New translations en.json (Portuguese) * New translations en.json (Uyghur) * New translations en.json (Chinese Traditional, Hong Kong) * New translations en.json (Corsican) * New translations en.json (Silesian) * New translations en.json (Taigi) * New translations en.json (Ido) * New translations en.json (Kabyle) * New translations en.json (Sanskrit) * New translations en.json (Sardinian) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Tatar) * New translations en.json (Serbian (Latin)) * New translations en.json (Occitan) * New translations en.json (Kannada) * New translations en.json (Cornish) * New translations en.json (Sinhala) * New translations en.json (Breton) * New translations en.json (Malayalam) * New translations en.json (Standard Moroccan Tamazight) * New translations en.yml (Dutch) * New translations en.yml (Dutch) * New translations en.yml (Chinese Traditional) * New translations en.json (Turkish) * New translations en.json (Polish) * New translations en.json (Chinese Traditional) * New translations en.yml (Dutch) * New translations en.yml (Chinese Traditional) * New translations en.yml (Latvian) * New translations en.json (Latvian) * New translations en.yml (Polish) * New translations en.json (Czech) * New translations en.json (Dutch) * New translations en.json (Catalan) * New translations en.yml (Dutch) * New translations en.json (Dutch) * New translations en.yml (Dutch) * New translations en.json (Icelandic) * New translations en.json (Kurmanji (Kurdish)) * New translations en.yml (Icelandic) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.yml (Occitan) * New translations en.json (Occitan) * New translations en.json (Afrikaans) * New translations en.json (Spanish, Argentina) * New translations en.json (Greek) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Czech) * New translations en.json (Ukrainian) * New translations en.json (Russian) * New translations en.json (Slovenian) * New translations en.yml (Slovenian) * New translations en.json (Ido) * New translations en.yml (Ido) * New translations en.json (Polish) * New translations en.yml (Spanish) * New translations en.yml (Spanish, Mexico) * New translations en.yml (Galician) * New translations en.yml (Galician) * New translations en.json (Chinese Simplified) * New translations en.yml (Galician) * New translations en.json (Galician) * New translations en.yml (Chinese Traditional) * New translations en.json (Chinese Simplified) * New translations en.json (Chinese Simplified) * New translations en.json (Italian) * New translations en.json (Hungarian) * New translations en.yml (Hungarian) * New translations en.json (Scottish Gaelic) * New translations en.yml (Scottish Gaelic) * New translations simple_form.en.yml (Esperanto) * New translations simple_form.en.yml (Esperanto) * New translations simple_form.en.yml (Esperanto) * New translations en.json (Russian) * New translations en.json (Spanish) * New translations en.yml (Spanish) * New translations en.json (Vietnamese) * New translations en.json (Portuguese) * New translations en.json (Danish) * New translations en.yml (Danish) * New translations en.yml (Chinese Traditional) * New translations en.yml (Vietnamese) * New translations en.json (Thai) * New translations en.json (French) * New translations en.json (Esperanto) * New translations en.yml (Esperanto) * New translations en.json (Esperanto) * New translations doorkeeper.en.yml (Esperanto) * New translations activerecord.en.yml (Esperanto) * New translations devise.en.yml (Esperanto) * New translations en.yml (Italian) * New translations en.json (Italian) * New translations en.json (Kurmanji (Kurdish)) * New translations en.yml (Chinese Simplified) * New translations en.json (Korean) * New translations en.json (Ido) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 2 +- app/javascript/mastodon/locales/ar.json | 2 +- app/javascript/mastodon/locales/ca.json | 2 +- app/javascript/mastodon/locales/cs.json | 2 +- app/javascript/mastodon/locales/cy.json | 2 +- app/javascript/mastodon/locales/da.json | 2 +- app/javascript/mastodon/locales/de.json | 2 +- .../mastodon/locales/defaultMessages.json | 4 +- app/javascript/mastodon/locales/el.json | 2 +- app/javascript/mastodon/locales/eo.json | 10 +- app/javascript/mastodon/locales/es-AR.json | 2 +- app/javascript/mastodon/locales/es-MX.json | 12 +- app/javascript/mastodon/locales/es.json | 2 +- app/javascript/mastodon/locales/et.json | 2 +- app/javascript/mastodon/locales/fa.json | 2 +- app/javascript/mastodon/locales/fr.json | 2 +- app/javascript/mastodon/locales/gd.json | 2 +- app/javascript/mastodon/locales/gl.json | 4 +- app/javascript/mastodon/locales/he.json | 2 +- app/javascript/mastodon/locales/hi.json | 2 +- app/javascript/mastodon/locales/hu.json | 2 +- app/javascript/mastodon/locales/hy.json | 2 +- app/javascript/mastodon/locales/id.json | 2 +- app/javascript/mastodon/locales/io.json | 8 +- app/javascript/mastodon/locales/it.json | 2 +- app/javascript/mastodon/locales/ja.json | 2 +- app/javascript/mastodon/locales/ko.json | 4 +- app/javascript/mastodon/locales/ku.json | 10 +- app/javascript/mastodon/locales/lv.json | 2 +- app/javascript/mastodon/locales/nl.json | 28 ++-- app/javascript/mastodon/locales/oc.json | 40 +++--- app/javascript/mastodon/locales/pl.json | 4 +- app/javascript/mastodon/locales/pt-BR.json | 2 +- app/javascript/mastodon/locales/pt-PT.json | 2 +- app/javascript/mastodon/locales/ru.json | 2 +- app/javascript/mastodon/locales/sk.json | 2 +- app/javascript/mastodon/locales/sq.json | 2 +- app/javascript/mastodon/locales/sv.json | 2 +- app/javascript/mastodon/locales/th.json | 2 +- app/javascript/mastodon/locales/uk.json | 2 +- app/javascript/mastodon/locales/zh-CN.json | 8 +- config/locales/ar.yml | 82 ----------- config/locales/ca.yml | 81 ----------- config/locales/ckb.yml | 77 ----------- config/locales/co.yml | 81 ----------- config/locales/cs.yml | 6 +- config/locales/cy.yml | 81 ----------- config/locales/da.yml | 81 ++++++++++- config/locales/de.yml | 83 ------------ config/locales/devise.fa.yml | 2 +- config/locales/devise.gl.yml | 2 +- config/locales/el.yml | 81 ----------- config/locales/eo.yml | 4 +- config/locales/es-AR.yml | 52 +++---- config/locales/es-MX.yml | 86 +----------- config/locales/es.yml | 127 +++++++----------- config/locales/eu.yml | 81 ----------- config/locales/fa.yml | 125 +++-------------- config/locales/fr.yml | 81 ----------- config/locales/gd.yml | 96 ++++++++++++- config/locales/gl.yml | 107 ++------------- config/locales/hu.yml | 12 +- config/locales/hy.yml | 85 ------------ config/locales/id.yml | 81 ----------- config/locales/is.yml | 60 ++++----- config/locales/it.yml | 25 ++-- config/locales/ja.yml | 81 ----------- config/locales/ka.yml | 81 ----------- config/locales/kk.yml | 81 ----------- config/locales/ko.yml | 81 ----------- config/locales/ku.yml | 12 +- config/locales/lt.yml | 79 ----------- config/locales/lv.yml | 50 +++---- config/locales/nl.yml | 39 ++++-- config/locales/nn.yml | 90 ------------- config/locales/no.yml | 81 ----------- config/locales/oc.yml | 89 +----------- config/locales/pl.yml | 65 +++++---- config/locales/pt-BR.yml | 81 ----------- config/locales/pt-PT.yml | 81 ----------- config/locales/ro.yml | 79 ----------- config/locales/ru.yml | 77 ----------- config/locales/sc.yml | 81 ----------- config/locales/simple_form.eo.yml | 4 +- config/locales/sk.yml | 33 +---- config/locales/sl.yml | 34 ++--- config/locales/sq.yml | 81 ----------- config/locales/sv.yml | 81 ----------- config/locales/tr.yml | 81 ----------- config/locales/uk.yml | 1 - config/locales/vi.yml | 91 +++++++------ config/locales/zh-CN.yml | 60 ++++----- config/locales/zh-HK.yml | 81 ----------- config/locales/zh-TW.yml | 35 ++--- 94 files changed, 650 insertions(+), 3031 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 650a3b708..e25b0d7ee 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -95,7 +95,7 @@ "compose.language.change": "Verander taal", "compose.language.search": "Soek tale...", "compose_form.direct_message_warning_learn_more": "Leer meer", - "compose_form.encryption_warning": "Plasings op Mastodon het nie end-tot-end enkripsie nie. Moet nie enige gevaarlike inligting oor Mastodon deel nie.", + "compose_form.encryption_warning": "Plasings op Mastodon het nie end-tot-end enkripsie nie. Moet nie enige sensitiewe inligting oor Mastodon deel nie.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "gesluit", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 1f113213c..2a592ffd2 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -95,7 +95,7 @@ "compose.language.change": "تغيير اللغة", "compose.language.search": "البحث عن لغة…", "compose_form.direct_message_warning_learn_more": "تَعَلَّم المَزيد", - "compose_form.encryption_warning": "إنّ المنشورات على ماستدون ليست مشفرة من النهاية إلى النهاية. لا تشارك أي معلومات حساسة عبر ماستدون.", + "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": "لن يُدرَج هذا المنشور تحت أي وسم بما أنَّه غير مُدرَج. فقط المنشورات العامة يُمكن البحث عنها بواسطة الوسم.", "compose_form.lock_disclaimer": "حسابُك غير {locked}. يُمكن لأي شخص مُتابعتك لرؤية (منشورات المتابعين فقط).", "compose_form.lock_disclaimer.lock": "مُقفَل", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 1072001b4..4ca981f4b 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -95,7 +95,7 @@ "compose.language.change": "Canvia d'idioma", "compose.language.search": "Cerca idiomes...", "compose_form.direct_message_warning_learn_more": "Més informació", - "compose_form.encryption_warning": "Les publicacions a Mastodon no estant xifrades punt a punt. No comparteixis informació perillosa mitjançant Mastodon.", + "compose_form.encryption_warning": "Les publicacions a Mastodon no estant xifrades punt a punt. No comparteixis informació sensible mitjançant Mastodon.", "compose_form.hashtag_warning": "Aquesta publicació no es mostrarà en cap etiqueta, ja que no està llistada. Només les publicacions públiques es poden cercar per etiqueta.", "compose_form.lock_disclaimer": "El teu compte no està {locked}. Tothom pot seguir-te i veure les publicacions de només per a seguidors.", "compose_form.lock_disclaimer.lock": "bloquejat", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 91dda4f44..1c2413793 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -95,7 +95,7 @@ "compose.language.change": "Změnit jazyk", "compose.language.search": "Prohledat jazyky...", "compose_form.direct_message_warning_learn_more": "Zjistit více", - "compose_form.encryption_warning": "Příspěvky na Mastodonu nejsou end-to-end šifrovány. Nesdílejte přes Mastodon žádné nebezpečné informace.", + "compose_form.encryption_warning": "Příspěvky na Mastodonu nejsou end-to-end šifrovány. Nesdílejte přes Mastodon žádné citlivé informace.", "compose_form.hashtag_warning": "Tento příspěvek nebude zobrazen pod žádným hashtagem, neboť je neuvedený. Pouze veřejné příspěvky mohou být vyhledány podle hashtagu.", "compose_form.lock_disclaimer": "Váš účet není {locked}. Kdokoliv vás může sledovat a vidět vaše příspěvky učené pouze pro sledující.", "compose_form.lock_disclaimer.lock": "uzamčen", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 2a29cbbfb..e22abb220 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -95,7 +95,7 @@ "compose.language.change": "Change language", "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Dysgu mwy", - "compose_form.encryption_warning": "Dyw postiadau ar Mastodon ddim wedi'u hamgryptio o ben i ben. Peidiwch â rhannu unrhyw wybodaeth beryglus dros Mastodon.", + "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": "Ni fydd y post hwn wedi ei restru o dan unrhyw hashnod gan ei fod heb ei restru. Dim ond postiadau cyhoeddus gellid chwilio amdanynt drwy hashnod.", "compose_form.lock_disclaimer": "Nid yw eich cyfri wedi'i {locked}. Gall unrhyw un eich dilyn i weld eich postiadau dilynwyr-yn-unig.", "compose_form.lock_disclaimer.lock": "wedi ei gloi", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 5a03f86d0..319040804 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -95,7 +95,7 @@ "compose.language.change": "Change language", "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Få mere at vide", - "compose_form.encryption_warning": "Indlæg på Mastodon er ikke ende-til-ende krypteret. Del derfor ikke sensitiv information over Mastodon.", + "compose_form.encryption_warning": "Indlæg på Mastodon er ikke ende-til-ende krypteret. Del derfor ikke sensitiv information via Mastodon.", "compose_form.hashtag_warning": "Da indlægget ikke er offentligt, vises det ikke under noget hashtag, idet kun offentlige indlæg kan søges via hashtags.", "compose_form.lock_disclaimer": "Din konto er ikke {locked}. Enhver kan følge dig og se indlæg kun beregnet for følgere.", "compose_form.lock_disclaimer.lock": "låst", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index f0d225414..320f9fb6b 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -95,7 +95,7 @@ "compose.language.change": "Sprache ändern", "compose.language.search": "Sprachen durchsuchen...", "compose_form.direct_message_warning_learn_more": "Mehr erfahren", - "compose_form.encryption_warning": "Beiträge auf Mastodon sind nicht Ende-zu-Ende-verschlüsselt. Teile keine sensiblen Informationen über Mastodon.", + "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": "Dieser Beitrag wird nicht durch Hashtags entdeckbar sein, weil er ungelistet ist. Nur öffentliche Beiträge tauchen in Hashtag-Zeitleisten auf.", "compose_form.lock_disclaimer": "Dein Profil ist nicht {locked}. Wer dir folgen will, kann das jederzeit tun und dann auch deine privaten Beiträge sehen.", "compose_form.lock_disclaimer.lock": "gesperrt", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index aa1213faf..4725d2d7c 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -1546,7 +1546,7 @@ "id": "compose_form.hashtag_warning" }, { - "defaultMessage": "Posts on Mastodon are not end-to-end encrypted. Do not share any sensitive information over Mastodon.", + "defaultMessage": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "id": "compose_form.encryption_warning" }, { @@ -3711,4 +3711,4 @@ ], "path": "app/javascript/mastodon/features/video/index.json" } -] +] \ No newline at end of file diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index f9f62b9cb..43f5087f2 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -95,7 +95,7 @@ "compose.language.change": "Αλλαγή γλώσσας", "compose.language.search": "Αναζήτηση γλωσσών...", "compose_form.direct_message_warning_learn_more": "Μάθετε περισσότερα", - "compose_form.encryption_warning": "Οι δημοσιεύσεις στο Mastodon δεν είναι κρυπτογραφημένες από άκρο σε άκρο. Μην μοιράζεστε επικίνδυνες πληροφορίες μέσω του Mastodon.", + "compose_form.encryption_warning": "Οι δημοσιεύσεις στο Mastodon δεν είναι κρυπτογραφημένες από άκρο σε άκρο. Μην μοιράζεστε ευαίσθητες πληροφορίες μέσω του Mastodon.", "compose_form.hashtag_warning": "Αυτό το τουτ δεν θα εμφανίζεται κάτω από κανένα hashtag καθώς είναι αφανές. Μόνο τα δημόσια τουτ μπορούν να αναζητηθούν ανά hashtag.", "compose_form.lock_disclaimer": "Ο λογαριασμός σου δεν είναι {locked}. Οποιοσδήποτε μπορεί να σε ακολουθήσει για να δει τις δημοσιεύσεις σας προς τους ακολούθους σας.", "compose_form.lock_disclaimer.lock": "κλειδωμένο", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 917994561..2b26a0f97 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -93,7 +93,7 @@ "community.column_settings.media_only": "Nur aŭdovidaĵoj", "community.column_settings.remote_only": "Nur malproksima", "compose.language.change": "Ŝanĝi lingvon", - "compose.language.search": "Search languages...", + "compose.language.search": "Serĉi lingvojn...", "compose_form.direct_message_warning_learn_more": "Lerni pli", "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": "Ĉi tiu mesaĝo ne estos listigita per ajna kradvorto. Nur publikaj mesaĝoj estas serĉeblaj per kradvortoj.", @@ -169,7 +169,7 @@ "empty_column.blocks": "Vi ankoraŭ ne blokis uzanton.", "empty_column.bookmarked_statuses": "Vi ankoraŭ ne aldonis mesaĝon al viaj legosignoj. Kiam vi aldonos iun, tiu aperos ĉi tie.", "empty_column.community": "La loka templinio estas malplena. Skribu ion por plenigi ĝin!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "Vi ankoraŭ ne havas rektan mesaĝon. Kiam vi sendos aŭ ricevos iun, ĝi aperos ĉi tie.", "empty_column.domain_blocks": "Ankoraŭ neniu domajno estas blokita.", "empty_column.explore_statuses": "Nenio tendencas nun. Rekontrolu poste!", "empty_column.favourited_statuses": "Vi ankoraŭ ne stelumis mesaĝon. Kiam vi stelumos iun, tiu aperos ĉi tie.", @@ -234,7 +234,7 @@ "keyboard_shortcuts.column": "fokusi mesaĝon en unu el la kolumnoj", "keyboard_shortcuts.compose": "enfokusigi la tekstujon", "keyboard_shortcuts.description": "Priskribo", - "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.direct": "malfermi la kolumnon de rektaj mesaĝoj", "keyboard_shortcuts.down": "iri suben en la listo", "keyboard_shortcuts.enter": "malfermi mesaĝon", "keyboard_shortcuts.favourite": "stelumi", @@ -473,8 +473,8 @@ "status.pin": "Alpingli profile", "status.pinned": "Alpinglita mesaĝo", "status.read_more": "Legi pli", - "status.reblog": "Diskonigi", - "status.reblog_private": "Diskonigi al la originala atentaro", + "status.reblog": "Plusendi", + "status.reblog_private": "Plusendi kiel la originala videbleco", "status.reblogged_by": "{name} diskonigis", "status.reblogs.empty": "Ankoraŭ neniu diskonigis tiun mesaĝon. Kiam iu faros tion, tiu aperos ĉi tie.", "status.redraft": "Forigi kaj reskribi", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 6f5ebee70..65a7b699f 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -95,7 +95,7 @@ "compose.language.change": "Cambiar idioma", "compose.language.search": "Buscar idiomas…", "compose_form.direct_message_warning_learn_more": "Aprendé más", - "compose_form.encryption_warning": "Los mensajes en Mastodon no están cifrados de extremo a extremo. No comparta ninguna información sensible al usar Mastodon.", + "compose_form.encryption_warning": "Los mensajes en Mastodon no están cifrados de extremo a extremo. No compartas ninguna información sensible al usar Mastodon.", "compose_form.hashtag_warning": "Este mensaje no se mostrará bajo ninguna etiqueta porque no es público. Sólo los mensajes públicos se pueden buscar por etiquetas.", "compose_form.lock_disclaimer": "Tu cuenta no es {locked}. Todos pueden seguirte para ver tus mensajes marcados como \"Sólo para seguidores\".", "compose_form.lock_disclaimer.lock": "privada", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index bb18bfa95..c58ec5aa6 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -92,10 +92,10 @@ "community.column_settings.local_only": "Solo local", "community.column_settings.media_only": "Solo media", "community.column_settings.remote_only": "Solo remoto", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "Cambiar idioma", + "compose.language.search": "Buscar idiomas...", "compose_form.direct_message_warning_learn_more": "Aprender mas", - "compose_form.encryption_warning": "Los mensajes en Mastodon no están cifrados de extremo a extremo. No comparta ninguna información confidencial en Mastodon.", + "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": "Este toot no se mostrará bajo hashtags porque no es público. Sólo los toots públicos se pueden buscar por hashtag.", "compose_form.lock_disclaimer": "Tu cuenta no está bloqueada. Todos pueden seguirte para ver tus toots solo para seguidores.", "compose_form.lock_disclaimer.lock": "bloqueado", @@ -149,7 +149,7 @@ "embed.instructions": "Añade este toot a tu sitio web con el siguiente código.", "embed.preview": "Así es como se verá:", "emoji_button.activity": "Actividad", - "emoji_button.clear": "Clear", + "emoji_button.clear": "Limpiar", "emoji_button.custom": "Personalizado", "emoji_button.flags": "Marcas", "emoji_button.food": "Comida y bebida", @@ -267,8 +267,8 @@ "lightbox.expand": "Expandir cuadro de visualización de imagen", "lightbox.next": "Siguiente", "lightbox.previous": "Anterior", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Mostrar perfil de todos modos", + "limited_account_hint.title": "Este perfil ha sido ocultado por los moderadores de tu servidor.", "lists.account.add": "Añadir a lista", "lists.account.remove": "Quitar de lista", "lists.delete": "Borrar lista", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 0fef6af61..a7556a560 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -95,7 +95,7 @@ "compose.language.change": "Cambiar idioma", "compose.language.search": "Buscar idiomas...", "compose_form.direct_message_warning_learn_more": "Aprender más", - "compose_form.encryption_warning": "Los mensajes en Mastodon no están cifrados de extremo a extremo. No comparta ninguna información confidencial en Mastodon.", + "compose_form.encryption_warning": "Las publicaciones en Mastodon no están cifradas de extremo a extremo. No comparta ninguna información sensible en Mastodon.", "compose_form.hashtag_warning": "Esta publicación no se mostrará bajo ningún hashtag porque no está listada. Sólo las publicaciones públicas se pueden buscar por hashtag.", "compose_form.lock_disclaimer": "Tu cuenta no está {locked}. Todos pueden seguirte para ver tus publicaciones solo para seguidores.", "compose_form.lock_disclaimer.lock": "bloqueado", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index e7c153681..d5f85c54d 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Eemalda see valik", "compose_form.poll.switch_to_multiple": "Muuda küsitlust lubamaks mitut valikut", "compose_form.poll.switch_to_single": "Muuda küsitlust lubamaks ainult ühte valikut", - "compose_form.publish": "Tuututa", + "compose_form.publish": "Tuut", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "Märgista meedia tundlikuks", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 5ae0872ca..1d14dc63e 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -95,7 +95,7 @@ "compose.language.change": "Change language", "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "بیشتر بدانید", - "compose_form.encryption_warning": "فرسته‌های ماستودون رمزگذاری سرتاسری نشده‌اند. هیچ اطّلاعات خطرناکی را روی ماستودون هم‌رسانی نکنید.", + "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": "از آن‌جا که این فرسته فهرست نشده است، در نتایج جست‌وجوی هشتگ‌ها پیدا نخواهد شد. تنها فرسته‌های عمومی را می‌توان با جست‌وجوی هشتگ یافت.", "compose_form.lock_disclaimer": "حسابتان {locked} نیست. هر کسی می‌تواند پی‌گیرتان شده و فرسته‌های ویژهٔ پی‌گیرانتان را ببیند.", "compose_form.lock_disclaimer.lock": "قفل‌شده", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index cf7918fa5..65f289a2e 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -95,7 +95,7 @@ "compose.language.change": "Changer de langue", "compose.language.search": "Rechercher des langues …", "compose_form.direct_message_warning_learn_more": "En savoir plus", - "compose_form.encryption_warning": "Les messages sur Mastodon ne sont pas chiffrés de bout en bout. Ne partagez aucune information confidentielle sur Mastodon.", + "compose_form.encryption_warning": "Les messages sur Mastodon ne sont pas chiffrés de bout en bout. Ne partagez aucune information sensible sur Mastodon.", "compose_form.hashtag_warning": "Ce pouet ne sera pas listé dans les recherches par hashtag car sa visibilité est réglée sur « non listé ». Seuls les pouets avec une visibilité « publique » peuvent être recherchés par hashtag.", "compose_form.lock_disclaimer": "Votre compte n’est pas {locked}. Tout le monde peut vous suivre et voir vos messages privés.", "compose_form.lock_disclaimer.lock": "verrouillé", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 4294cee84..107130011 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -95,7 +95,7 @@ "compose.language.change": "Atharraich an cànan", "compose.language.search": "Lorg cànan…", "compose_form.direct_message_warning_learn_more": "Barrachd fiosrachaidh", - "compose_form.encryption_warning": "Chan eil crioptachadh ceann gu ceann air postaichean Mhastodon. Na co-roinn fiosrachadh cunnartach idir le Mastodon.", + "compose_form.encryption_warning": "Chan eil crioptachadh ceann gu ceann air postaichean Mhastodon. Na co-roinn fiosrachadh dìomhair idir le Mastodon.", "compose_form.hashtag_warning": "Cha nochd am post seo fon taga hais on a tha e falaichte o liostaichean. Cha ghabh ach postaichean poblach a lorg a-rèir an tagaichean hais.", "compose_form.lock_disclaimer": "Chan eil an cunntas agad {locked}. ’S urrainn do dhuine sam bith leantainn ort is na postaichean agad a tha ag amas air an luchd-leantainn agad a-mhàin a shealltainn.", "compose_form.lock_disclaimer.lock": "glaiste", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 3a158ec76..c42f9bab3 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -135,7 +135,7 @@ "confirmations.redraft.confirm": "Eliminar e reescribir", "confirmations.redraft.message": "Tes a certeza de querer eliminar esta publicación e reescribila? Perderás os compartidos e favoritos, e as respostas á publicación orixinal ficarán orfas.", "confirmations.reply.confirm": "Responder", - "confirmations.reply.message": "Responder agora sobrescribirá a mensaxe que estás a compor. Tes a certeza de que queres continuar?", + "confirmations.reply.message": "Ao responder sobrescribirás a mensaxe que estás a compor. Tes a certeza de que queres continuar?", "confirmations.unfollow.confirm": "Deixar de seguir", "confirmations.unfollow.message": "Desexas deixar de seguir a {name}?", "conversation.delete": "Eliminar conversa", @@ -480,7 +480,7 @@ "status.redraft": "Eliminar e reescribir", "status.remove_bookmark": "Eliminar marcador", "status.reply": "Responder", - "status.replyAll": "Responder ó fío", + "status.replyAll": "Responder ao tema", "status.report": "Denunciar @{name}", "status.sensitive_warning": "Contido sensíbel", "status.share": "Compartir", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 3dcb7c9c7..21ef7a6c2 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -95,7 +95,7 @@ "compose.language.change": "Change language", "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "מידע נוסף", - "compose_form.encryption_warning": "חצרוצים במסטודון אינם מוצפנים מקצה לקצה. לעולם אל תחלקו מידע רגיש דרך מסטודון.", + "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 toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "חשבונך אינו {locked}. כל אחד יוכל לעקוב אחריך כדי לקרוא את הודעותיך המיועדות לעוקבים בלבד.", "compose_form.lock_disclaimer.lock": "נעול", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index b347784af..5c3523c2d 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -95,7 +95,7 @@ "compose.language.change": "Change language", "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "और जानें", - "compose_form.encryption_warning": "मास्टोडॉन पर पोस्ट एन्ड-टू-एन्ड एन्क्रिप्टेड नहीं है", + "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": "यह टूट् किसी भी हैशटैग के तहत सूचीबद्ध नहीं होगा क्योंकि यह अनलिस्टेड है। हैशटैग द्वारा केवल सार्वजनिक टूट्स खोजे जा सकते हैं।", "compose_form.lock_disclaimer": "आपका खाता {locked} नहीं है। आपको केवल फॉलोवर्स को दिखाई दिए जाने वाले पोस्ट देखने के लिए कोई भी फॉलो कर सकता है।", "compose_form.lock_disclaimer.lock": "लॉक्ड", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index b22778e71..ccaf9a482 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -95,7 +95,7 @@ "compose.language.change": "Nyelv megváltoztatása", "compose.language.search": "Nyelv keresése...", "compose_form.direct_message_warning_learn_more": "Tudj meg többet", - "compose_form.encryption_warning": "A bejegyzések a Mastodonon nem használnak végpontok közötti titkosítást. Ne ossz meg érzékeny információt Mastodonon.", + "compose_form.encryption_warning": "A bejegyzések Mastodonon nem használnak végpontok közötti titkosítást. Ne ossz meg semmilyen érzékeny információt Mastodonon.", "compose_form.hashtag_warning": "Ez a bejegyzésed nem fog megjelenni semmilyen hashtag alatt, mivel listázatlan. Csak a nyilvános bejegyzések kereshetők hashtaggel.", "compose_form.lock_disclaimer": "A fiókod nincs {locked}. Bárki követni tud, hogy megtekintse a kizárólag követőknek szánt bejegyzéseket.", "compose_form.lock_disclaimer.lock": "lezárva", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index 1285403fc..63309c5c5 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -95,7 +95,7 @@ "compose.language.change": "Change language", "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Իմանալ աւելին", - "compose_form.encryption_warning": "Մաստոդոնում գրառումները ծայրից-ծայր գաղտնագրուող չեն։ Գաղտնիք պարունակող նամակներ մի ուղարկէք։", + "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": "Այս գրառումը չի հաշուառուի որեւէ պիտակի տակ, քանզի այն ծածուկ է։ Միայն հրապարակային թթերը հնարաւոր է որոնել պիտակներով։", "compose_form.lock_disclaimer": "Քո հաշիւը {locked} չէ։ Իւրաքանչիւրութիւն ոք կարող է հետեւել քեզ եւ տեսնել միայն հետեւողների համար նախատեսուած գրառումները։", "compose_form.lock_disclaimer.lock": "փակ", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index ada2876dd..35fad0170 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -95,7 +95,7 @@ "compose.language.change": "Ganti bahasa", "compose.language.search": "Telusuri bahasa...", "compose_form.direct_message_warning_learn_more": "Pelajari selengkapnya", - "compose_form.encryption_warning": "Kiriman di Mastodon tidak dienkripsi end-to-end. Jangan bagikan informasi rahasial melalui Mastodon.", + "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": "Toot ini tidak akan ada dalam daftar tagar manapun karena telah diatur sebagai tidak terdaftar. Hanya postingan publik yang bisa dicari dengan tagar.", "compose_form.lock_disclaimer": "Akun anda tidak {locked}. Semua orang dapat mengikuti anda untuk melihat postingan khusus untuk pengikut anda.", "compose_form.lock_disclaimer.lock": "terkunci", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index bb13779f3..fc25e931d 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -95,7 +95,7 @@ "compose.language.change": "Chanjez linguo", "compose.language.search": "Trovez linguo...", "compose_form.direct_message_warning_learn_more": "Lernez pluse", - "compose_form.encryption_warning": "Posti di Mastodon ne intersequante chifrigesas. Ne partigez irga danjera informo che Mastodon.", + "compose_form.encryption_warning": "Posti en Mastodon ne intersequante chifrigesas. Ne partigez irga privata informo che Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", "compose_form.lock_disclaimer": "Vua konto ne esas {locked}. Irgu povas sequar vu por vidar vua sequanto-nura posti.", "compose_form.lock_disclaimer.lock": "klefagesas", @@ -177,7 +177,7 @@ "empty_column.follow_recommendations": "Semblas tale nula sugestato povas facesar por vu. Vu povas probar trovar personi quon vu forsan konocas o exploras tendenca hashtagi.", "empty_column.follow_requests": "Vu ne havas irga sequodemandi til nun. Kande vu ganas talo, ol montresos hike.", "empty_column.hashtag": "Esas ankore nulo en ta gretovorto.", - "empty_column.home": "Tu sequas ankore nulu. Vizitez {public} od uzez la serchilo por komencar e renkontrar altra uzeri.", + "empty_column.home": "Vua hemtempolineo esas vakua! Sequez plu multa personi por plenigar lu. {suggestions}", "empty_column.home.suggestions": "Videz ula sugestati", "empty_column.list": "There is nothing in this list yet.", "empty_column.lists": "Vu ne havas irga listi til nun. Kande vu kreas talo, ol montresos hike.", @@ -209,7 +209,7 @@ "getting_started.heading": "Debuto", "getting_started.invite": "Invitez personi", "getting_started.open_source_notice": "Mastodon esas programaro kun apertita kodexo. Tu povas kontributar o signalar problemi en GitHub ye {github}.", - "getting_started.security": "Security", + "getting_started.security": "Kontoopcioni", "getting_started.terms": "Servkondicioni", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", @@ -305,7 +305,7 @@ "navigation_bar.follow_requests": "Demandi di sequado", "navigation_bar.follows_and_followers": "Sequati e sequanti", "navigation_bar.info": "Detaloza informi", - "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.keyboard_shortcuts": "Rapidklavi", "navigation_bar.lists": "Listi", "navigation_bar.logout": "Ekirar", "navigation_bar.mutes": "Celita uzeri", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 46e509b07..b68b71115 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -95,7 +95,7 @@ "compose.language.change": "Cambia lingua", "compose.language.search": "Ricerca lingue...", "compose_form.direct_message_warning_learn_more": "Scopri di più", - "compose_form.encryption_warning": "I messaggi su Mastodon non sono crittografati end-to-end. Non condividere alcuna informazione sensibile su Mastodon.", + "compose_form.encryption_warning": "I messaggi su Mastodon non sono crittografati end-to-end. Non condividere dati sensibili su Mastodon.", "compose_form.hashtag_warning": "Questo post non sarà elencato sotto alcun hashtag poiché senza elenco. Solo i toot pubblici possono essere ricercati per hashtag.", "compose_form.lock_disclaimer": "Il tuo profilo non è {locked}. Chiunque può seguirti e vedere le tue pubblicazioni visibili solo dai follower.", "compose_form.lock_disclaimer.lock": "bloccato", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 34d2a8a02..57c3b2133 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -95,7 +95,7 @@ "compose.language.change": "言語を変更", "compose.language.search": "言語を検索...", "compose_form.direct_message_warning_learn_more": "もっと詳しく", - "compose_form.encryption_warning": "Mastodonの投稿はエンドツーエンド暗号化に対応していません。安全に送受信されるべき情報をMastodonで共有しないでください。", + "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": "この投稿は公開設定ではないのでハッシュタグの一覧に表示されません。公開投稿だけがハッシュタグで検索できます。", "compose_form.lock_disclaimer": "あなたのアカウントは{locked}になっていません。誰でもあなたをフォローすることができ、フォロワー限定の投稿を見ることができます。", "compose_form.lock_disclaimer.lock": "承認制", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 37b7eb672..49712f6fa 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -95,7 +95,7 @@ "compose.language.change": "언어 변경", "compose.language.search": "언어 검색...", "compose_form.direct_message_warning_learn_more": "더 알아보기", - "compose_form.encryption_warning": "마스토돈의 게시물들은 종단간 암호화가 되지 않습니다. 위험한 정보를 마스토돈을 통해 전달하지 마세요.", + "compose_form.encryption_warning": "마스토돈의 게시물들은 종단간 암호화가 되지 않습니다. 민감한 정보를 마스토돈을 통해 전달하지 마세요.", "compose_form.hashtag_warning": "이 게시물은 어떤 해시태그로도 검색 되지 않습니다. 전체공개로 게시 된 게시물만이 해시태그로 검색 될 수 있습니다.", "compose_form.lock_disclaimer": "이 계정은 {locked}로 설정 되어 있지 않습니다. 누구나 이 계정을 팔로우 할 수 있으며, 팔로워 공개의 포스팅을 볼 수 있습니다.", "compose_form.lock_disclaimer.lock": "비공개", @@ -268,7 +268,7 @@ "lightbox.next": "다음", "lightbox.previous": "이전", "limited_account_hint.action": "그래도 프로필 보기", - "limited_account_hint.title": "이 프로필은 서버 운영진에 의해 숨겨진 상태입니다.", + "limited_account_hint.title": "이 프로필은 이 서버의 중재자에 의해 숨겨진 상태입니다.", "lists.account.add": "리스트에 추가", "lists.account.remove": "리스트에서 제거", "lists.delete": "리스트 삭제", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 6470e50ca..8c9cf6705 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -11,7 +11,7 @@ "account.direct": "Peyamekê bişîne @{name}", "account.disable_notifications": "Êdî min agahdar neke gava @{name} diweşîne", "account.domain_blocked": "Navper hate astengkirin", - "account.edit_profile": "Profîl serrast bike", + "account.edit_profile": "Profîlê serrast bike", "account.enable_notifications": "Min agahdar bike gava @{name} diweşîne", "account.endorse": "Taybetiyên li ser profîl", "account.follow": "Bişopîne", @@ -81,7 +81,7 @@ "column.notifications": "Agahdarî", "column.pins": "Şandiya derzîkirî", "column.public": "Demnameyê federalîkirî", - "column_back_button.label": "Veger", + "column_back_button.label": "Vegere", "column_header.hide_settings": "Sazkariyan veşêre", "column_header.moveLeft_settings": "Stûnê bilivîne bo çepê", "column_header.moveRight_settings": "Stûnê bilivîne bo rastê", @@ -95,7 +95,7 @@ "compose.language.change": "Ziman biguherîne", "compose.language.search": "Li zimanan bigere...", "compose_form.direct_message_warning_learn_more": "Bêtir fêr bibe", - "compose_form.encryption_warning": "Şandiyên li ser Mastodon dawî-bi-dawî ne şîfrekirî ne. Li ser Mastodon zanyariyên talûke parve neke.", + "compose_form.encryption_warning": "Şandiyên li ser Mastodon dawî-bi-dawî ne şîfrekirî ne. Li ser Mastodon zanyariyên hestyar parve neke.", "compose_form.hashtag_warning": "Ev şandî ji ber ku nehatiye tomarkirin dê di binê hashtagê de neyê tomar kirin. Tenê peyamên gelemperî dikarin bi hashtagê werin lêgerîn.", "compose_form.lock_disclaimer": "Ajimêrê te {locked} nîne. Herkes dikare te bişopîne da ku şandiyên te yên tenê şopînerên te ra xûya dibin bibînin.", "compose_form.lock_disclaimer.lock": "girtî ye", @@ -207,7 +207,7 @@ "getting_started.directory": "Rêgeha profîlê", "getting_started.documentation": "Pelbend", "getting_started.heading": "Destpêkirin", - "getting_started.invite": "Mirovan Vexwîne", + "getting_started.invite": "Kesan vexwîne", "getting_started.open_source_notice": "Mastodon nermalava çavkaniya vekirî ye. Tu dikarî pirsgirêkan li ser GitHub-ê ragihînî di {github} de an jî dikarî tevkariyê bikî.", "getting_started.security": "Sazkariyên ajimêr", "getting_started.terms": "Mercên karûberan", @@ -298,7 +298,7 @@ "navigation_bar.direct": "Peyamên rasterast", "navigation_bar.discover": "Vekolê", "navigation_bar.domain_blocks": "Navparên astengkirî", - "navigation_bar.edit_profile": "Profîl serrast bike", + "navigation_bar.edit_profile": "Profîlê serrast bike", "navigation_bar.explore": "Vekole", "navigation_bar.favourites": "Bijarte", "navigation_bar.filters": "Peyvên bêdengkirî", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 7ef2c2c6f..82fc40e32 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -95,7 +95,7 @@ "compose.language.change": "Mainīt valodu", "compose.language.search": "Meklēt valodas...", "compose_form.direct_message_warning_learn_more": "Uzzināt vairāk", - "compose_form.encryption_warning": "Ziņas vietnē Mastodon nav pilnībā šifrētas. Nedalies ar bīstamu informāciju caur Mastodon.", + "compose_form.encryption_warning": "Ziņas vietnē Mastodon nav pilnībā šifrētas. Nedalies ar sensitīvu informāciju caur Mastodon.", "compose_form.hashtag_warning": "Ziņojumu nebūs iespējams atrast zem haštagiem jo tas nav publisks. Tikai publiskos ziņojumus ir iespējams meklēt pēc tiem.", "compose_form.lock_disclaimer": "Tavs konts nav {locked}. Ikviens var Tev sekot lai apskatītu tikai sekotājiem paredzētos ziņojumus.", "compose_form.lock_disclaimer.lock": "slēgts", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 3319f4bd7..d36745411 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -48,8 +48,8 @@ "account.unmute_notifications": "Meldingen van @{name} niet langer negeren", "account.unmute_short": "Niet langer negeren", "account_note.placeholder": "Klik om een opmerking toe te voegen", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Retentiegraad van gebruikers per dag, vanaf registratie", + "admin.dashboard.monthly_retention": "Retentiegraad van gebruikers per maand, vanaf registratie", "admin.dashboard.retention.average": "Gemiddelde", "admin.dashboard.retention.cohort": "Aanmeldingsmaand", "admin.dashboard.retention.cohort_size": "Nieuwe gebruikers", @@ -70,7 +70,7 @@ "column.blocks": "Geblokkeerde gebruikers", "column.bookmarks": "Bladwijzers", "column.community": "Lokale tijdlijn", - "column.direct": "Direct messages", + "column.direct": "Directe berichten", "column.directory": "Gebruikersgids", "column.domain_blocks": "Geblokkeerde domeinen", "column.favourites": "Favorieten", @@ -92,10 +92,10 @@ "community.column_settings.local_only": "Alleen lokaal", "community.column_settings.media_only": "Alleen media", "community.column_settings.remote_only": "Alleen andere servers", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "Taal veranderen", + "compose.language.search": "Talen zoeken...", "compose_form.direct_message_warning_learn_more": "Meer leren", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "Berichten op Mastodon worden, net zoals op andere social media, niet end-to-end versleuteld. Deel daarom geen gevoelige informatie via Mastodon.", "compose_form.hashtag_warning": "Dit bericht valt niet onder een hashtag te bekijken, omdat deze niet op openbare tijdlijnen wordt getoond. Alleen openbare berichten kunnen via hashtags gevonden worden.", "compose_form.lock_disclaimer": "Jouw account is niet {locked}. Iedereen kan jou volgen en kan de berichten zien die je alleen aan jouw volgers hebt gericht.", "compose_form.lock_disclaimer.lock": "besloten", @@ -149,7 +149,7 @@ "embed.instructions": "Embed dit bericht op jouw website door de onderstaande code te kopiëren.", "embed.preview": "Zo komt het eruit te zien:", "emoji_button.activity": "Activiteiten", - "emoji_button.clear": "Clear", + "emoji_button.clear": "Leegmaken", "emoji_button.custom": "Lokale emoji’s", "emoji_button.flags": "Vlaggen", "emoji_button.food": "Eten en drinken", @@ -169,7 +169,7 @@ "empty_column.blocks": "Jij hebt nog geen enkele gebruiker geblokkeerd.", "empty_column.bookmarked_statuses": "Jij hebt nog geen berichten aan je bladwijzers toegevoegd. Wanneer je er een aan jouw bladwijzers toevoegt, valt deze hier te zien.", "empty_column.community": "De lokale tijdlijn is nog leeg. Plaats een openbaar bericht om de spits af te bijten!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "Je hebt nog geen directe berichten. Wanneer je er een verzend of ontvangt, komt deze hier te staan.", "empty_column.domain_blocks": "Er zijn nog geen geblokkeerde domeinen.", "empty_column.explore_statuses": "Momenteel zijn er geen trends. Kom later terug!", "empty_column.favourited_statuses": "Jij hebt nog geen favoriete berichten. Wanneer je er een aan jouw favorieten toevoegt, valt deze hier te zien.", @@ -234,7 +234,7 @@ "keyboard_shortcuts.column": "Op één van de kolommen focussen", "keyboard_shortcuts.compose": "Tekstveld om een bericht te schrijven focussen", "keyboard_shortcuts.description": "Omschrijving", - "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.direct": "Directe berichten tonen", "keyboard_shortcuts.down": "Naar beneden in de lijst bewegen", "keyboard_shortcuts.enter": "Volledig bericht tonen", "keyboard_shortcuts.favourite": "Aan jouw favorieten toevoegen", @@ -267,8 +267,8 @@ "lightbox.expand": "Afbeelding groot weergeven", "lightbox.next": "Volgende", "lightbox.previous": "Vorige", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Alsnog het profiel tonen", + "limited_account_hint.title": "Dit profiel is door de moderatoren van jouw server verborgen.", "lists.account.add": "Aan lijst toevoegen", "lists.account.remove": "Uit lijst verwijderen", "lists.delete": "Lijst verwijderen", @@ -295,7 +295,7 @@ "navigation_bar.bookmarks": "Bladwijzers", "navigation_bar.community_timeline": "Lokale tijdlijn", "navigation_bar.compose": "Nieuw bericht schrijven", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Directe berichten", "navigation_bar.discover": "Ontdekken", "navigation_bar.domain_blocks": "Geblokkeerde domeinen", "navigation_bar.edit_profile": "Profiel bewerken", @@ -372,12 +372,12 @@ "poll_button.remove_poll": "Poll verwijderen", "privacy.change": "Zichtbaarheid van bericht aanpassen", "privacy.direct.long": "Alleen aan vermelde gebruikers tonen", - "privacy.direct.short": "Direct", + "privacy.direct.short": "Alleen aan vermelde gebruikers tonen", "privacy.private.long": "Alleen aan volgers tonen", "privacy.private.short": "Alleen volgers", "privacy.public.long": "Voor iedereen zichtbaar", "privacy.public.short": "Openbaar", - "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", + "privacy.unlisted.long": "Voor iedereen zichtbaar, maar niet onder trends, hashtags en op openbare tijdlijnen", "privacy.unlisted.short": "Minder openbaar", "refresh": "Vernieuwen", "regeneration_indicator.label": "Aan het laden…", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index c2041d10d..4b094bcbd 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -18,7 +18,7 @@ "account.followers": "Seguidors", "account.followers.empty": "Degun sèc pas aqueste utilizaire pel moment.", "account.followers_counter": "{count, plural, one {{counter} Seguidor} other {{counter} Seguidors}}", - "account.following": "Following", + "account.following": "Abonat", "account.following_counter": "{count, plural, one {{counter} Abonaments} other {{counter} Abonaments}}", "account.follows.empty": "Aqueste utilizaire sèc pas degun pel moment.", "account.follows_you": "Vos sèc", @@ -41,12 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Tut} other {{counter} Tuts}}", "account.unblock": "Desblocar @{name}", "account.unblock_domain": "Desblocar {domain}", - "account.unblock_short": "Unblock", + "account.unblock_short": "Desblocat", "account.unendorse": "Mostrar pas pel perfil", "account.unfollow": "Quitar de sègre", "account.unmute": "Quitar de rescondre @{name}", "account.unmute_notifications": "Mostrar las notificacions de @{name}", - "account.unmute_short": "Unmute", + "account.unmute_short": "Tornar afichar", "account_note.placeholder": "Clicar per ajustar una nòta", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -70,7 +70,7 @@ "column.blocks": "Personas blocadas", "column.bookmarks": "Marcadors", "column.community": "Flux public local", - "column.direct": "Direct messages", + "column.direct": "Messatges dirèctes", "column.directory": "Percórrer los perfils", "column.domain_blocks": "Domenis resconduts", "column.favourites": "Favorits", @@ -92,10 +92,10 @@ "community.column_settings.local_only": "Sonque local", "community.column_settings.media_only": "Solament los mèdias", "community.column_settings.remote_only": "Sonque alonhat", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "Cambiar de lenga", + "compose.language.search": "Recercar de lengas...", "compose_form.direct_message_warning_learn_more": "Ne saber mai", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "Las pubicacions sus Mastodon son pas chifradas del cap a la fin. Partegetz pas d’informacions sensiblas sus Mastodon.", "compose_form.hashtag_warning": "Aqueste tut serà pas ligat a cap d’etiqueta estant qu’es pas listat. Òm pòt pas cercar que los tuts publics per etiqueta.", "compose_form.lock_disclaimer": "Vòstre compte es pas {locked}. Tot lo mond pòt vos sègre e veire los estatuts reservats als seguidors.", "compose_form.lock_disclaimer.lock": "clavat", @@ -149,7 +149,7 @@ "embed.instructions": "Embarcar aqueste estatut per lo far veire sus un site Internet en copiar lo còdi çai-jos.", "embed.preview": "Semblarà aquò :", "emoji_button.activity": "Activitats", - "emoji_button.clear": "Clear", + "emoji_button.clear": "Escafar", "emoji_button.custom": "Personalizats", "emoji_button.flags": "Drapèus", "emoji_button.food": "Beure e manjar", @@ -169,7 +169,7 @@ "empty_column.blocks": "Avètz pas blocat degun pel moment.", "empty_column.bookmarked_statuses": "Avètz pas cap de tuts marcats pel moment. Quand ne marquetz un, serà mostrat aquí.", "empty_column.community": "Lo flux public local es void. Escrivètz quicòm per lo garnir !", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "Avètz pas encara cap de messatges. Quand ne mandatz un o que ne recebètz un, serà mostrat aquí.", "empty_column.domain_blocks": "I a pas encara cap de domeni amagat.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Avètz pas encara cap de tut favorit. Quand n’auretz un, apareisserà aquí.", @@ -191,11 +191,11 @@ "errors.unexpected_crash.copy_stacktrace": "Copiar las traças al quichapapièrs", "errors.unexpected_crash.report_issue": "Senhalar un problèma", "explore.search_results": "Resultats de recèrca", - "explore.suggested_follows": "For you", + "explore.suggested_follows": "Per vos", "explore.title": "Explorar", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", + "explore.trending_links": "Novèlas", + "explore.trending_statuses": "Publicacions", + "explore.trending_tags": "Etiquetas", "follow_recommendations.done": "Acabat", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -295,11 +295,11 @@ "navigation_bar.bookmarks": "Marcadors", "navigation_bar.community_timeline": "Flux public local", "navigation_bar.compose": "Escriure un nòu tut", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Messatges dirèctes", "navigation_bar.discover": "Trobar", "navigation_bar.domain_blocks": "Domenis resconduts", "navigation_bar.edit_profile": "Modificar lo perfil", - "navigation_bar.explore": "Explore", + "navigation_bar.explore": "Explorar", "navigation_bar.favourites": "Favorits", "navigation_bar.filters": "Mots ignorats", "navigation_bar.follow_requests": "Demandas d’abonament", @@ -314,7 +314,7 @@ "navigation_bar.preferences": "Preferéncias", "navigation_bar.public_timeline": "Flux public global", "navigation_bar.security": "Seguretat", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.sign_up": "{name} se marquèt", "notification.favourite": "{name} a ajustat a sos favorits", "notification.follow": "{name} vos sèc", "notification.follow_request": "{name} a demandat a vos sègre", @@ -323,7 +323,7 @@ "notification.poll": "Avètz participat a un sondatge que ven de s’acabar", "notification.reblog": "{name} a partejat vòstre estatut", "notification.status": "{name} ven de publicar", - "notification.update": "{name} edited a post", + "notification.update": "{name} modiquè sa publicacion", "notifications.clear": "Escafar", "notifications.clear_confirmation": "Volètz vertadièrament escafar totas vòstras las notificacions ?", "notifications.column_settings.admin.sign_up": "New sign-ups:", @@ -372,10 +372,10 @@ "poll_button.remove_poll": "Levar lo sondatge", "privacy.change": "Ajustar la confidencialitat del messatge", "privacy.direct.long": "Mostrar pas qu’a las personas mencionadas", - "privacy.direct.short": "Direct", + "privacy.direct.short": "Sonque per las personas mencionadas", "privacy.private.long": "Mostrar pas qu’a vòstres seguidors", - "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all", + "privacy.private.short": "Sonque pels seguidors", + "privacy.public.long": "Visiblas per totes", "privacy.public.short": "Public", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Pas-listat", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index a14fce01b..2ec80e6ef 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -267,8 +267,8 @@ "lightbox.expand": "Rozwiń pole widoku obrazu", "lightbox.next": "Następne", "lightbox.previous": "Poprzednie", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Pokaż profil mimo wszystko", + "limited_account_hint.title": "Ten profil został ukryty przez moderatorów Twojego serwera.", "lists.account.add": "Dodaj do listy", "lists.account.remove": "Usunąć z listy", "lists.delete": "Usuń listę", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index d6f0ead94..971f8aa94 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -95,7 +95,7 @@ "compose.language.change": "Alterar idioma", "compose.language.search": "Pesquisar idiomas...", "compose_form.direct_message_warning_learn_more": "Saiba mais", - "compose_form.encryption_warning": "Postagens no Mastodon não são criptografados de ponta a ponta. Não compartilhe nenhuma informação perigosa sobre o Mastodon.", + "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": "Este toot não aparecerá em nenhuma hashtag porque está como não-listado. Somente toots públicos podem ser pesquisados por hashtag.", "compose_form.lock_disclaimer": "Seu perfil não está {locked}. Qualquer um pode te seguir e ver os toots privados.", "compose_form.lock_disclaimer.lock": "trancado", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 89e6a68ee..99ab7feb0 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -95,7 +95,7 @@ "compose.language.change": "Alterar idioma", "compose.language.search": "Pesquisar idiomas...", "compose_form.direct_message_warning_learn_more": "Conhecer mais", - "compose_form.encryption_warning": "As publicações no Mastodon não são criptografadas de ponta a ponta. Não partilhe nenhuma informação sensível através do Mastodon.", + "compose_form.encryption_warning": "As publicações no Mastodon não são encriptadas ponta a ponta. Não partilhe nenhuma informação sensível através do Mastodon.", "compose_form.hashtag_warning": "Este toot não será listado em nenhuma hashtag por ser não listado. Apenas toots públics podem ser pesquisados por hashtag.", "compose_form.lock_disclaimer": "A sua conta não é {locked}. Qualquer pessoa pode segui-lo e ver as publicações direcionadas apenas a seguidores.", "compose_form.lock_disclaimer.lock": "bloqueado", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 588117830..badae99c0 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -95,7 +95,7 @@ "compose.language.change": "Изменить язык", "compose.language.search": "Поиск языков...", "compose_form.direct_message_warning_learn_more": "Подробнее", - "compose_form.encryption_warning": "Посты в Mastodon не защищены сквозным шифрованием. Не делитесь потенциально опасной информацией.", + "compose_form.encryption_warning": "Посты в Mastodon не защищены сквозным шифрованием. Не делитесь конфиденциальной информацией через Mastodon.", "compose_form.hashtag_warning": "Так как этот пост не публичный, он не отобразится в поиске по хэштегам.", "compose_form.lock_disclaimer": "Ваша учётная запись {locked}. Любой пользователь сможет подписаться на вас и просматривать посты для подписчиков.", "compose_form.lock_disclaimer.lock": "не закрыта", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 48d67de4c..d69adc3bd 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -92,7 +92,7 @@ "community.column_settings.local_only": "Iba miestna", "community.column_settings.media_only": "Iba médiá", "community.column_settings.remote_only": "Iba odľahlé", - "compose.language.change": "Change language", + "compose.language.change": "Zmeň jazyk", "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Zisti viac", "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 2112e0f0c..9f9ab8a1e 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -95,7 +95,7 @@ "compose.language.change": "Change language", "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Mësoni më tepër", - "compose_form.encryption_warning": "Postimet në Mastodon nuk fshehtëzohen skaj-më-skaj. Mos ndani me të tjerë gjëra me spec në Mastodon.", + "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": "Ky mesazh s’do të paraqitet nën ndonjë hashtag, ngaqë s’i është caktuar ndonjë. Vetëm mesazhet publike mund të kërkohen sipas hashtagësh.", "compose_form.lock_disclaimer": "Llogaria juaj s’është {locked}. Mund ta ndjekë cilido, për të parë postimet tuaja vetëm për ndjekësit.", "compose_form.lock_disclaimer.lock": "e kyçur", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 6085241dc..eb4efbc7a 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -95,7 +95,7 @@ "compose.language.change": "Change language", "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Lär dig mer", - "compose_form.encryption_warning": "Inlägg på Mastodon är inte end-to-end-krypterade. Dela inte någon känslig information över Mastodon.", + "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": "Denna toot kommer inte att visas under någon hashtag eftersom den är onoterad. Endast offentliga toots kan sökas med hashtag.", "compose_form.lock_disclaimer": "Ditt konto är inte {locked}. Vem som helst kan följa dig för att se dina inlägg som endast är för följare.", "compose_form.lock_disclaimer.lock": "låst", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 84faa0a1c..746fc1673 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -95,7 +95,7 @@ "compose.language.change": "เปลี่ยนภาษา", "compose.language.search": "ค้นหาภาษา...", "compose_form.direct_message_warning_learn_more": "เรียนรู้เพิ่มเติม", - "compose_form.encryption_warning": "โพสต์ใน Mastodon ไม่ได้เข้ารหัสแบบต้นทางถึงปลายทาง อย่าแบ่งปันข้อมูลที่เป็นอันตรายใด ๆ ผ่าน Mastodon", + "compose_form.encryption_warning": "โพสต์ใน Mastodon ไม่ได้เข้ารหัสแบบต้นทางถึงปลายทาง อย่าแบ่งปันข้อมูลที่ละเอียดอ่อนใด ๆ ผ่าน Mastodon", "compose_form.hashtag_warning": "จะไม่แสดงรายการโพสต์นี้ภายใต้แฮชแท็กใด ๆ เนื่องจากไม่อยู่ในรายการ เฉพาะโพสต์สาธารณะเท่านั้นที่สามารถค้นหาได้โดยแฮชแท็ก", "compose_form.lock_disclaimer": "บัญชีของคุณไม่ได้ {locked} ใครก็ตามสามารถติดตามคุณเพื่อดูโพสต์สำหรับผู้ติดตามเท่านั้นของคุณ", "compose_form.lock_disclaimer.lock": "ล็อคอยู่", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index d7e8a446f..012f3c0b8 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -95,7 +95,7 @@ "compose.language.change": "Змінити мову", "compose.language.search": "Шукати мови...", "compose_form.direct_message_warning_learn_more": "Дізнатися більше", - "compose_form.encryption_warning": "Дописи на Mastodon не захищені шифруванням. Не поширюйте жодну потенційно небезпечну інформацію.", + "compose_form.encryption_warning": "Дописи на Mastodon не захищені шифруванням. Не поширюйте жодну делікатну інформацію.", "compose_form.hashtag_warning": "Цей допис не буде зображений у жодній стрічці гештеґу, оскільки він прихований. Тільки публічні дописи можуть бути знайдені за гештеґом.", "compose_form.lock_disclaimer": "Ваш обліковий запис не {locked}. Будь-який користувач може підписатися на вас та переглядати ваші дописи для підписників.", "compose_form.lock_disclaimer.lock": "приватний", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index d4b7db72a..8511543e6 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "移除此选项", "compose_form.poll.switch_to_multiple": "将投票改为多选", "compose_form.poll.switch_to_single": "将投票改为单选", - "compose_form.publish": "嘟嘟", + "compose_form.publish": "Toot!", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "保存更改", "compose_form.sensitive.hide": "{count, plural, one {将媒体标记为敏感内容} other {将媒体标记为敏感内容}}", @@ -321,7 +321,7 @@ "notification.mention": "{name} 提及了你", "notification.own_poll": "你的投票已经结束", "notification.poll": "你参与的一个投票已经结束", - "notification.reblog": "{name} 转嘟了你的嘟文", + "notification.reblog": "{name} 转发了你的嘟文", "notification.status": "{name} 刚刚发嘟", "notification.update": "{name} 编辑了嘟文", "notifications.clear": "清空通知列表", @@ -373,8 +373,8 @@ "privacy.change": "设置嘟文的可见范围", "privacy.direct.long": "只有被提及的用户能看到", "privacy.direct.short": "仅提到的人", - "privacy.private.long": "仅关注者可见", - "privacy.private.short": "仅对关注者可见", + "privacy.private.long": "仅对关注者可见", + "privacy.private.short": "仅关注者", "privacy.public.long": "所有人可见", "privacy.public.short": "公开", "privacy.unlisted.long": "对所有人可见,但不加入探索功能", diff --git a/config/locales/ar.yml b/config/locales/ar.yml index d4cc81f1b..9d78451bb 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -1472,88 +1472,6 @@ ar: tags: does_not_match_previous_name: لا يطابق الإسم السابق terms: - body_html: | -

سياسة الخصوصية

-

ما هي المعلومات التي نجمعها؟

-
    -
  • معلومات الحساب الأساسية: إذا سجلت على هذا الخادم، فسيُطلب منك أن تُدخل اسم المستخدم، عنوان بريد إلكتروني، وكلمة سر، وتستطيع أن تُدخل معلومات تعريفية إضافية مثل اسم معروض، وسيرة ذاتية، وصورة رمزية، وصورة رأسية. اسم المستخدم، والاسم المعروض، والسيرة الذاتية، والصورة الرمزية، والصورة الرأسية سيكونون ظاهرين بشكل علني للجميع دائماً.
  • -
  • المنشورات، المتابَعون، ومعلومات علنية أخرى: قائمة الأشخاص الذين تُتابِعُهم علنية للجميع، نفس الشيء مع قائمة متابِعيك. عندما تُرسل رسالة، يتم تخزين التاريخ والوقت واسم البرنامج المنَشور منه. يُمكن للرسائل أن تحتوي على وسائط مُرفقة مثل الصور ومقاطع الفيديو. المنشورات العامة والغير مُدرجة متوفرات بشكل علني. عندما تُميّز منشور على ملفك الشخصي، فهذه أيضاً معلومات متوفرة بشكل علني. يتم تسليم منشوراتك إلى متابِعيك، في بعض الأحيان، يتم تسليمهم إلى خوادم مختلفة ويتم نسخهم وحفظهم هناك. عندما تحذف منشور معيّن، يتم تسليم هذه المعلومة على نفس المنوال إلى متابِعيك أيضاً، إعادة النشر والإعجاب بمنشور معيّن هما أضاً تصرفات علنية دائماً.
  • -
  • المنشورات المباشرة ومنشورات المتابِعين فقط: تُخزّن وتُعالج كل المنشورات على الخادم. يتم تسليم "منشورات المتابعين فقط" إلى متابِعيك والأشخاص المذكورين في المنشور، ويتم تسليم المنشورات المباشرة إلى الأشخاص المذكورين في المنشور فقط لا غير. في بعض الأحيان يتم تسليمهم إلى خوادم مختلفة ويتم حفظ نُسخ منهم هناك. نحن نبذل جهداً حسن النية للحد من إمكانية وصول المنشورات إلى الأشخاص المُصرّح لهم فقط، ولكن قد تفشل الخوادم الأخرى في القيام بذلك، لذلك من المهم أن تُراجِع الخوادم التي ينتمي إليها متابِعوك. تستطيع أن تُصحّح في الإعدادات على خيار "الموافقة أو الرفض اليدوي" للمتابِعين الجدد. ضع في الحسبان أنه من الممكن أن يقرأ أيُّ أحد من الخوادم هذه الرسائل أو المنشورات، ومن الممكن أن يلتقط المُستقبِلون لقطات شاشة أو أن ينسخوا أو يعيدوا مشاركتهم بطريقة أخرى، لذلك لا تنشر أي معلومات خطرة على ماستدون.
  • - -
  • عناوين الـIP وبيانات وصفية أخرى: عندما تُسجل دخولك، نقوم بتسجيل عنوان الـIP الذي دخلت منه، وأيضاً اسم المتصفح الذي دخلت منه، كل عناوين الـIP لتسجيلات الدخول متاحة لك للمراجعة وللإبطال في الإعدادات. يبقى آخر عنوان IP مُسجل لما يصل إلى 12 شهراً. ومن الممكن أن نحتفظ بسجلات الخادم التي تحتوي على عنوان الـIP من كل طلب وصول إلى خادمنا.
  • -
- -
- -

بماذا نستعمل معلوماتك؟

- -

أي معلومات نجمعها عنك قَد تُستخدم بالطرق التالية:

- -
    -
  • لتوفير الوظائف الأساسية لماستدون، تستطيع أن تتفاعل مع محتوى الآخرين وأن تنشر محتواك الخاص عندما تُسجل دخولك. كمثال، تستطيع أن تُتابِع حسابات أشخاص آخرين لعرض منشوراتهم المُجمّعة في خطك الزمني الشخصي الرئيسي.
  • -
  • للمساعدة في اعتدال المجتمع. كمثال، مقارنة عنوان الـIP الخاص بك بعناوين IP أخرى معروفة لمعرفة ما إذا ثمة هناك أي تهرب من الحظر أو انتهاكات أخرى.
  • -
  • يمكن أن يُستعمل عنوان بريدك الإلكتروني الذي أدخلته لإرسال معلومات إليك، أو إشعارات عن تفاعل أشخاص آخرين مع محتواك أو إرسالهم راسائل إليك، أو للرد على استفسارات، و/أو طلبات أو أسئلة أخرى.
  • -
- -
- -

كيف نحمي معلوماتك؟

- -

نقوم بتنفيذ مجموعة متنوعة من التدابير الأمنية للحفاظ على سلامة معلوماتك الشخصية عندما تدخلها، أو ترسلها، أو تقوم بالوصول إليها. بجاني أشياء أخرى، تؤَمن جلسة المتصفح الخاص بك، وحركة المرور بين تطبيقاتك والـAPI (واجهة برمجة التطبيقات) باستخدام SSL (بروتوكول طبقة المقابس الآمنة)، وتُهَش أو بالأحرى تُجَزأ كلمة السر الخاصة بك باستخدام خوارزمية أحادية الاتجاه، يمكنك تفعيل خاصّية "الاستيثاق بخطوتين" لتؤَمن وتُصعب إمكانية الوصول إلى حسابك أكثر.

- -
- -

ما هي سياسة الاحتفاظ بالبيانات لدينا؟

- -

سنبذل جهداً حسن النية لـ:

- -
    -
  • حفظ سجلّات بيانات الخوادم التي تحتوي على عنوان الـIP من كل طلب وصول إلى خادمنا، بقدر ما يتم الاحتفاظ بهذه السجلات، لا تزيد عن 90 يومًا.
  • -
  • الاحتفاظ بعناوين الـIP المربوطة بالمُستخدمين المُسجلين دخولهم لمدة لا تزيد عن 12 شهراً.
  • -
- -

تستطيع أن تطلب وتُنزل أرشيف لمحتواك، الذي يحتوي على منشوراتك، ووسائطك المُرفقة، وصورك الرمزية، وصورك الرأسية.

- -

تستطيع أن تحذف حسابك بشكل لا رجعة فيه في أي وقت تريد.

- -
- -

هل نستخدم الـCookies (ملفات تعريف الارتباط)؟

- -

نعم، الـcookies هي عبارة عن قطعة نصية صغيرة مخزنة على قرص حاسوبك من قبل متصفحك (إذا سمحت له). تسمح هذه الـcookies للموقع بأن يتعرف على متصفحك، وإذا كنت قد سجلت دخولك إلى حسابك، فسيربطه بحسابك المسجل.

- -

نستعمل الـcookies لفهم ولحفظ تفضيلاتك للزيارات المستقبلية

- -
- -

هل نُفصح عن أي معلومات لأطراف خارجية؟

- -

نحن لا نبيع، أو نتاجر، أو بأي طريقة أخرى نُحول بياناتك التعريفية الشخصية إلى جهات خارجية. طبعاً هذا الكلام لا ينطبق على الجهات الموثوقة التي تساعدنا في تشغيل موقعنا، أو في إجراء أعمالنا، أو في خدمتك طالما أنهم يوافقون على الحفاظ على سرّيتها. ومن الممكن أن نُطلق أو أن نُصرّح بمعلوماتك عندما نؤمِن بأن هذا هو التصرّف الصحيح للامتثال للقانون، أو لتطبيق سياسة موقعنا، أو لحفظ الحقوق، أو الأملاك، أو الأمان الخاص بنا أو بغيرنا.

- -

من الممكن أن يُنزل محتواك من قبل خوادم أخرى في الشبكة، يتم تسليم منشوراتك "العامة" ومنشورات "المتابعين فقط" إلى الخوادم التي يقيم فيها متابِعوك، وتُسلم الرسائل المباشرة إلى خوادم التي يُقيم فيها المُستقبلون، طالما أن هؤلاء المتابِعين أو المُستلمين يقيمون في خوادم مختلفة عن هذا الخادم.

- -

عندما تخوّل تطبيق معين لاستخدام حسابك، وطبعاً على حسب نطاق الأذونات التي سمحت له بها، فيستطيع هذا التطبيق الوصول إلى معلومات ملفك التعريفي العامة، قائمة المتابَعون منك، قائمة المتابِعون لك، كل منشوراتك، وكل إعجاباتك. لا يمكن للتطبيقات الوصول إلى عنوان بريدك الإلكتروني أو إلى كلمة مرورك.

- -
- -

استخدام الأطفال للموقع

- -

إذا كان هذا الخادم في الـEU (الإتحاد الأوروبي) أو في الـEEA (المنطقة الاقتصادية الأوروبية): فموقعنا، ومنتجاتنا وخدماتنا كلها موجهة للأشخاص الذين لا تقل أعمارهم عن الـ16 سنة، إذا كنت تحت هذا السن، حسب متطلبات الـGDPR (النظام الأوروبي العام لحماية البيانات) فلا تستخدم هذا الموقع.

- - -

إذا كان هذا السيرفر في الـUS (الولايات المتحدة الأمريكية): فموقعنا، ومنتجاتنا وخدماتنا كلها موجهة للأشخاص الذين لا تقل أعمارهم عن الـ13 سنة، إذا كنت تحت هذا السن، حسب متطلبات الـCOPPA (قانون حماية خصوصية الأطفال على الإنترنت) فلا تستخدم هذا الموقع.

- -

من الممكن أن تكون المتطلبات القانونية مختلفة إذا كان هذا الخادم في ولاية قضائية أخرى.

- -
- -

تغييرات لسياستنا للخصوصية

- -

إذا قررنا أن نغير سياستنا للخصوصية، فسنَنشر هذه التغييرات على هذه الصفحة.

- -

هذه الوثيقة هي CC-BY-SA (النسبة-الترخيص بالمثل)، تم آخر تحديث لها في 7 مارس، 2018.

- -

مقتبسة في الأصل من Discourse privacy policy.

title: شروط الخدمة وسياسة الخصوصية على %{instance} themes: contrast: ماستدون (تباين عالٍ) diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 0017ee42e..461d27fa3 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -1525,87 +1525,6 @@ ca: tags: does_not_match_previous_name: no coincideix amb el nom anterior terms: - body_html: | -

Política de Privacitat

-

Quina informació recollim?

- -
    -
  • Informació bàsica del compte: Si et registres en aquest servidor, se´t pot demanar que introdueixis un nom d'usuari, una adreça de correu electrònic i una contrasenya. També pots introduir informació de perfil addicional, com ara un nom de visualització i una biografia, i carregar una imatge de perfil i de capçalera. El nom d'usuari, el nom de visualització, la biografia, la imatge de perfil i la imatge de capçalera sempre apareixen públicament.
  • -
  • Publicacions, seguiment i altra informació pública: La llista de persones que segueixes s'enumeren públicament i el mateix passa amb els teus seguidors. Quan envies un missatge, la data i l'hora s'emmagatzemen, així com l'aplicació que va enviar el missatge. Els missatges poden contenir multimèdia, com ara imatges i vídeos. Els toots públics i no llistats estan disponibles públicament. En quan tinguis un toot en el teu perfil, aquest també és informació pública. Les teves entrades es lliuren als teus seguidors que en alguns casos significa que es lliuren a diferents servidors en els quals s'hi emmagatzemen còpies. Quan suprimeixes publicacions, també es lliuraran als teus seguidors. L'acció d'impulsar o marcar com a favorit una publicació sempre és pública.
  • -
  • Toots directes i per a només seguidors: Totes les publicacions s'emmagatzemen i processen al servidor. Els toots per a només seguidors només es lliuren als teus seguidors i als usuaris que s'esmenten en ells i els toots directes només es lliuren als usuaris esmentats. En alguns casos, significa que es lliuren a diferents servidors i s'hi emmagatzemen còpies. Fem un esforç de bona fe per limitar l'accés a aquestes publicacions només a les persones autoritzades, però és possible que altres servidors no ho facin. Per tant, és important revisar els servidors als quals pertanyen els teus seguidors. Pots canviar la opció de aprovar o rebutjar els nous seguidors manualment a la configuració. Tingues en compte que els operadors del servidor i qualsevol servidor receptor poden visualitzar aquests missatges i els destinataris poden fer una captura de pantalla, copiar-los o tornar-los a compartir. No comparteixis cap informació perillosa a Mastodon.
  • -
  • IPs i altres metadades: Quan inicies sessió registrem l'adreça IP en que l'has iniciat, així com el nom de l'aplicació o navegador. Totes les sessions registrades estan disponibles per a la teva revisió i revocació a la configuració. L'última adreça IP utilitzada s'emmagatzema durant un màxim de 12 mesos. També podrem conservar els registres que inclouen l'adreça IP de cada sol·licitud al nostre servidor.
  • -
- -
- -

Per a què utilitzem la teva informació?

- -

Qualsevol de la informació que recopilem de tu es pot utilitzar de la manera següent:

- -
    -
  • Per proporcionar la funcionalitat bàsica de Mastodon. Només pots interactuar amb el contingut d'altres persones i publicar el teu propi contingut quan hàgis iniciat la sessió. Per exemple, pots seguir altres persones per veure les publicacions combinades a la teva pròpia línia de temps personalitzada.
  • -
  • Per ajudar a la moderació de la comunitat, per exemple comparar la teva adreça IP amb altres conegudes per determinar l'evasió de prohibicions o altres infraccions.
  • -
  • L'adreça electrònica que ens proporciones pot utilitzar-se per enviar-te informació, notificacions sobre altres persones que interactuen amb el teu contingut o t'envien missatges, i per respondre a les consultes i / o altres sol·licituds o preguntes.
  • -
- -
- -

Com protegim la teva informació

- -

Implementem diverses mesures per mantenir la seguretat quan introdueixes, envies o accedeixes a la teva informació personal. Entre altres mesures, la sessió del teu navegador així com el trànsit entre les teves aplicacions i l'API estan protegides amb SSL i la teva contrasenya es codifica utilitzant un algoritme de direcció única. Pots habilitar l'autenticació de dos factors per a garantir l'accés segur al teu compte.

- -
- -

Quina és la nostra política de retenció de dades?

- -

Farem un esforç de bona fe per:

- -
    -
  • Conservar els registres del servidor que continguin l'adreça IP de totes les sol·licituds que rebi, tenint em compte que aquests registres es mantenen no més de 90 dies.
  • -
  • Conservar les adreces IP associades als usuaris registrats no més de 12 mesos.
  • -
- -

Pots sol·licitar i descarregar un arxiu del teu contingut incloses les publicacions, els fitxers adjunts multimèdia, la imatge de perfil i la imatge de capçalera.

- -

Pots eliminar el teu compte de forma irreversible en qualsevol moment.

- -
- -

Utilitzem cookies?

- -

Sí. Les cookies són petits fitxers que un lloc o el proveïdor de serveis transfereix al disc dur del teu ordinador a través del navegador web (si ho permet). Aquestes galetes permeten al lloc reconèixer el teu navegador i, si tens un compte registrat, associar-lo al teu compte registrat.

- -

Utilitzem cookies per entendre i guardar les teves preferències per a futures visites.

- -
- -

Revelem informació a terceres parts?

- -

No venem, comercialitzem ni transmetem a tercers la teva informació d'identificació personal. Això no inclou tercers de confiança que ens ajuden a operar el nostre lloc, a dur a terme el nostre servei o a servir-te, sempre que aquestes parts acceptin mantenir confidencial aquesta informació. També podem publicar la teva informació quan creiem que l'alliberament és apropiat per complir amb la llei, fer complir les polítiques del nostre lloc o protegir els nostres drets o altres drets, propietat o seguretat.

- -

Els altres servidors de la teva xarxa poden descarregar contingut públic. Els teus toots públics i per a només seguidors es lliuren als servidors on resideixen els teus seguidors i els missatges directes s'envien als servidors dels destinataris, sempre que aquests seguidors o destinataris resideixin en un servidor diferent d'aquest.

- -

Quan autoritzes una aplicació a utilitzar el teu compte, segons l'abast dels permisos que aprovis, pot accedir a la teva informació de perfil pública, a la teva llista de seguits, als teus seguidors, a les teves llistes, a totes les teves publicacions i als teus favorits. Les aplicacions mai no poden accedir a la teva adreça de correu electrònic o contrasenya.

- -
- -

Ús del lloc dels nens

- -

Si el servidor és a EU o EEA: el nostre lloc, productes i serveis estan dirigits a persones que tenen almenys 16 anys. Si tens menys de 16 anys, seguint els requisits del GDPR (Reglament General de Protecció de Dades) no utilitzis aquest lloc.

- -

Si aquest servidor es troba als EUA: el nostre lloc, productes i serveis estan dirigits a persones que tenen almenys 13 anys. Si tens menys de 13 anys, segons els requisits de COPPA (Children's Online Privacy Protection Act) no utilitzis aquest lloc.

- -

Els requisits legals poden ser diferents si aquest servidor està en una altra jurisdicció.

- -
- -

Canvis a la nostra política de privacitat

- -

Si decidim canviar la nostra política de privadesa, publicarem aquests canvis en aquesta pàgina.

- -

Aquest document és CC-BY-SA. Actualitzat per darrera vegada el 7 de Març del 2018.

- -

Originalment adaptat des del Discourse privacy policy.

title: "%{instance} Condicions del servei i política de privadesa" themes: contrast: Mastodon (alt contrast) diff --git a/config/locales/ckb.yml b/config/locales/ckb.yml index ee0f31344..6429696ed 100644 --- a/config/locales/ckb.yml +++ b/config/locales/ckb.yml @@ -1208,83 +1208,6 @@ ckb: tags: does_not_match_previous_name: لەگەڵ ناوی پێشوو یەک ناگرێتەوە terms: - body_html: | -

سیاسەتی تایبەت

-

چ زانیاریێک کۆ دەکەینەوە؟

-
    -
  • زانیاری ئەژمێری بنەڕەتی: ئەگەر تۆ لەسەر ئەم ڕاژەی تۆماربکەیت، لەوانەیە داوات لێبکرێت ناوی بەکارهێنەر، ناونیشانی ئیمەیڵ و نهێنوشە تێبنووسیت. هەروەها دەتوانیت زانیاری پرۆفایلی زیاتر تێبنووسی ت وەک ناوی پیشاندان و ژیاننامە، و بارکردنی وێنەی پرۆفایل و وێنەی سەرپەڕە. ناوی بەکارهێنەر، ناوی پیشاندان، ژیاننامە، وێنەی پرۆفایل و وێنەی سەرپەڕە هەمیشە بە ئاشکرا لیست کراوە.
  • -
  • پۆستەکان، بەدواکەوتن و زانیاری گشتی : لیستی ئەو کەسانەی کە پەیڕەوی دەکەیت بە ئاشکرا لیست کراوە، هەمان شت بۆ شوێنکەوتەکانت ڕاستە. کاتێک ئیمەیڵێکت پێشکەش کرد، بەروار و کات خەزن کراوە و هەروەها ئەو بەرنامەیەی کە نامەکەت لەوە پێشکەش کردووە. نامەکان لەوانەیە هاوپێچی میدیای تێدابێت، وەک وێنە و ڤیدیۆ. گشتی و لیستە نەکراوەکان بابەتەکان بە ئاشکرا بەردەستن. کاتێک بابەتێک پێشکەش دەکەیت لەسەر پرۆفایلەکەت، کە هەروەها زانیاری بەردەستی گشتیە. بابەتەکانت دەگەیەنینە شوێنکەوتەکانت، لە هەندێک حاڵەتدا مانای وایە دەگەیەنینە ڕاژەکاری جیاواز و کۆپیەکان لەوێ هەڵگیراون. کاتێک بابەتەکان دەسڕیتەوە، ئەمە بە هەمان شێوەیە دەگەیەنیتە شوێنکەوتوانی خۆت. کاری سەرلێبڕین یان بە دڵنییاکردنی پۆستی تر هەمیشە گشتیە.
  • -
  • ڕاستەوخۆ و تەنها شوێنکەوتوانی بابەتەکان: هەموو بابەتەکان خەزن کراون و لە ڕاژەکارەکە دا پرۆسەکراون. پۆست تەنها شوێنکەوتوانی خۆت دەگەیەنینە شوێنکەوتوانی خۆت و بەکارهێنەران کە تێیدا باس دەکرێت، و پۆستی ڕاستەوخۆش تەنها دەگەیەنینە ئەو بەکارهێنەرانەی کە ئاماژەیان پێکراوە لە هەندێک حاڵەتدا واتە دەگەیەنینە ڕاژەی جیاوازەکان و کۆپیەکان لەوێ هەڵگیراون ئێمە هەوڵی باوەڕێکی باش دەکەین بۆ سنووردارکردنی گەیشتن بەو پۆستانە تەنها بۆ کەسانی ڕێگەپێدراو، بەڵام لەوانەیە ڕاژەکارەکانی تر سەرکەوتوو نەبوون. بۆیە گرنگە پێداچوونەوە بە سێرڤەرەکان بکەیت کە شوێنکەوتوانی تۆ هی ئەوەن. لەوانەیە بژاردەیەک بگۆڕیت بۆ پەسەندکردن و ڕەتکردنەوەی شوێنکەوتوانی نوێ بە دەستی لە ڕێکبەندەکان. تکایە لە بیرت بێت کە کارپێکەرەکانی سێرڤەرەکە و هەر خزمەتکاری وەرگرێک لەوانەیە ئەم جۆرە نامانە ، و وەرگرەکان لەوانەیە گرتەی شاشە یان کۆپی بکەن یان بە پێچەوانەوە دووبارە بەشداری پێبکەن. هیچ زانیاریەکی مەترسیدار لەسەر ماستۆدۆن بڵاو
  • -
  • ئای پی و مێتاداتای تر: کاتێک دەچیتە ژوورەوە، ئێمە ئەو ئای پی ە تۆمار دەکەین کە تۆ لە ناوی ەوە داخڵ تدەکەیت، هەروەها ناوی بەرنامەی وێبگەڕەکەت. هەموو ئەو کۆکراوانەی لە کۆبوونەوەکاندا هەن بۆ پێداچوونەوە و بەتاڵکردنەوەت لە ڕێکبەندەکان. نوێترین ناونیشانی IP بەکارهێنراوە خەزن کراوە بۆ ١٢ مانگ. هەروەها لەوانەیە ئێمە مادە ڕاژەکارەکان بهێڵین کە ئای پی ئەدرێسی هەموو داواکارییەک بۆ ڕاژەکارەکانمان
  • -
- < hr="spacer" /> - -

ئێمە زانیاری ئێوەمان بۆ چییە؟

- -

ئەو زانیاریانەی لە ئێوە کۆی دەکەین لەوانەیە بەم ڕێگایانە بەکار بهێنرێت:

- -
    -
  • بۆ دابینکردنی ئەرکە سەرەکیەکانی ماستۆدۆن. دەتوانیت تەنها کارلێک بکەیت لەگەڵ ناوەڕۆکی کەسانی تر و ناوەڕۆکی خۆت پۆست بکەیت کاتێک دەچیتە ژوورەوە. بۆ نموونە، لەوانەیە شوێن کەسانی تر بکەویت بۆ بینینی پۆستە تێکەڵەکانیان لە تایم لاینی ماڵەوەی تایبەتی خۆت.
  • -
  • بۆ چاودێری کردنی کۆمەڵگا، بۆ نموونە بەراوردکردنی ناونیشانی IPەکەت لەگەڵ کەسانی ناسراو بۆ دیاریکردنی خۆدزینەوە یان پێشێلکاریتر.
  • -
  • ئەو ئیمەیڵەی کە تۆ دەستەبەرت کردووە لەوانەیە بەکاربێت بۆ ناردنی زانیاری، ئاگاداری دەربارەی کەسانی تر کە کارلێک دەکەن لەگەڵ ناوەڕۆکەکەت یان ناردنی نامەکانت، و وەڵامدانەوەی پرسیارکردنەکان، و/یان داواکارییان یان پرسیارەکانی تر.
  • -
- < hr="spacer" /> - -

چۆن زانیاریەکەت دەپارێزین؟

- -

ئێمە چەندین پێوانەی ئەمنی جۆراوجۆر جێبەجێ دەکەین بۆ پاراستنی سەلامەتی زانیاری ە تایبەتیەکانت کاتێک تۆ داخڵت کردووە یان پێشکەشکردن یان چوونە ژوورەوە بۆ زانیاری تایبەتی. لە نێوان شتەکانی تردا، دانیشتنی وێبگەڕەکەت، هەروەها ترافیکی نێوان کاربەرنامەکانت و API، بە SSL پارێزراوە، و نهێنوشەکەت بە بەکارهێنانی ئەلگاریتمی یەک-ڕێگەی بەهێز بە هاوسێکراوە. دەتوانیت سەلماندنی دوو-فاکتەر بەتوانا بکەیت بۆ زیاتر پاراستنی چوونە ژوورەوە بۆ ئەژمێرەکەت.

- - < hr="spacer" /> - < hr="spacer" /> - -

بیمەنامەی هێشتنەوە داتامان چییە؟

- -

ئێمە بە باشی هەوڵ بۆ باوەڕەکان

- -
    -
  • سێرڤەری پاراستنی ناونووسەکان کە ناونیشانی ئای پی تێدایە بۆ هەموو داواکاریەکان بۆ ئەم سێرڤەرە، تا ئێستا وەک ئەو جۆرە لۆگانە پارێزراون، زیاتر لە 90 ڕۆژ.
  • -
  • ئای پیەکە بپارێزە کە پەیوەندی بە بەکارهێنەرە تۆمارکراوەکان هەیە زیاتر لە 12 مانگ.
  • -
-

دەتوانیت داواکاری و داگرتنی ئەرشیفی ناوەڕۆکەکەت بکەیت، لەوانە بابەتەکانت، هاوپێچەکانی میدیا، وێنەی پرۆفایل، و وێنەی سەرپەڕە.

- -

تۆ دەتوانیت بە شێوەیەکی نائاسایی ئەژمێرەکەت بسڕیتەوە لە هەر کاتێکدا.

- - < hr="spacer"/> - -

ئایا ئێمە کۆکیز بەکار بێنە؟

- -

بەڵێ کۆکیزەکان فایلی بچووکن کە سایتێک یان دابینکەری خزمەتگوزاریەکەی دەیگوێزێتەوە بۆ هارد درایڤی کۆمپیوتەرەکەت لە ڕێگەی وێبگەڕەکەت (ئەگەر ڕێگەت پێ بدەیت). ئەم کۆکیزانە وێبسایتە بەتوانا دەکەن بۆ ناسینەوەی وێبگەڕەکەت و، ئەگەر ئەژمێرێکی تۆمارکراوت هەیە، بیبەستە بە ئەژمێری تۆمارکراو.

- -

کۆکیز بەکاربێنە بۆ تێگەیشتن و هەڵگرتنی پەسەندیەکانی تۆ بۆ سەردانەکانی داهاتوو.

- - < hr="spacer" /> - -

> ئایا هیچ زانیارییەک بۆ حزبەکانی دەرەوە ئاشکرا دەکەین؟ - -

ئێمە زانیاریە تایبەتەکانت نافرۆشین، بازرگانی دەکەین، یان ناگوازرێتەوە بۆ حزبەکانی دەرەوە. ئەمە لایەنی سێیەمی باوەڕپێکراو ی تێدا نییە کە یارمەتیمان دەدات لە کارپێکردنی سایتەکەمان، ئەنجامدانی کارەکانمان، یان خزمەتکردنی ئێوە، هەتا ئەو حزبانە ڕازی بن بە نهێنی هێشتنەوەی ئەم زانیاریانە. هەروەها لەوانەیە زانیاریەکەت بڵاوکەینەوه کاتێک پێمان وایە ئازادکردن گونجاوە بۆ پابەندبوون بە یاسا، سەپاندنی سیاسەتی ماڵپەڕەکەمان، یان پاراستنی مافەکانمان یان مافی تر، موڵک، یان سەلامەتی.

- -

لەوانەیە ناوەڕۆکی گشتیت دابەزێنرابێت لەلایەن خزمەتگوزاریەکانی ترەوە لە تۆڕەکەدا. پۆستە گشتی و تەنها شوێنکەوتوانی تۆ دەگەیەنینە ئەو سێرڤەرانەی کە شوێنکەوتوانی تێیدا نواندووە، و پەیامی ڕاستەوخۆ دەگەیەنینە خزمەتکارەکانی وەرگرەکان، لە دووری ئەوەی کە شوێنکەوتوانی یان وەرگرەکان لە سێرڤەرێکی جیاواز لەم.

- -

کاتێک تۆ مۆڵەت بە کاربەرنامەیەک بدەیت بۆ بەکارهێنانی ئەژمێرەکەت، بەگوێرەی مەودای مۆڵەتەکانت کە پەسەندت کردووە، لەوانەیە بچێتە ناو زانیاری پرۆفایلی گشتی، لیستی خوارەوەت، شوێنکەوتوانی تۆ، لیستەکانت، هەموو بابەتەکانت، و دڵراوەکانی تۆ. کاربەرنامەکان هەرگیز ناتوانن دەستگەیشتنیان هەبێت بە ناونیشانی ئیمەیڵ یان نهێنوشە.

- < hr="spacer" /> - -

بەکارهێنانی سایت لەلایەن منداڵانەوە

- -

ئەگەر ئەم سێرڤەرە لە یەکێتی ئەورووپا یان ئی ئی ئی ئەی بێت: ماڵپەڕ، بەرهەم و خزمەتگوزارییەکانی ئێمە هەموویان ئاراستەی ئەو کەسانە دەکرێت کە بە لایەنی کەمەوە 16 ساڵ ن. ئەگەر تەمەنت لە خوار 16 ساڵەوە بێت، لە سەر پێداویستی GDPR (General Data Protection Regulation) ئەم سایتە بەکارمەهێنیت.

- -

ئەگەر ئەم سێرڤەرە لە ئەمریکا بێت: ماڵپەڕ و بەرهەم و خزمەتگوزاریەکانمان هەمووی ئاراستەی ئەو کەسانە دەکرێت کە بە لایەنی کەمەوە 13 ساڵ ن. ئەگەر تۆ لە خوار تەمەنی 13 ساڵیەوەبیت، لە سەر داواکاریەکانی COPPA (Children's Online Privacy Protection act) ئەم سایتە بەکارمەهێنیت.

- -

یاسا دەتوانێت جیاواز بێت ئەگەر ئەم سێرڤەرە لە دەسەڵاتی دادوەری تر بێت.

- - < hr="spacer" /> - -

گۆڕانکاریەکان لە سیاسەتی تایبەتمەندیمان

- -

ئەگەر بڕیارمان دا سیاسەتی تایبەتمەندیمان بگۆڕین، ئەو گۆڕانکاریانە لەم پەڕەیە بڵاودەکەینەوە.

- -

ئەم دۆکیومێنتە CC-BY-SA ە. دوایین جار نوێکرایەوە لە 7ی ئازاری 2018.

- -

لە بنەڕەتدا لە < href="https://github.com/discourse/discourse">Discourse privacy policy.

title: "%{instance} مەرجەکانی خزمەتگوزاری و سیاسەتی تایبەتیێتی" themes: contrast: ماستۆدۆن (کۆنتراستی بەرز) diff --git a/config/locales/co.yml b/config/locales/co.yml index 156ec696e..ca4c7ed3d 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -1243,87 +1243,6 @@ co: tags: does_not_match_previous_name: ùn currisponde micca à l'anzianu nome terms: - body_html: | -

Politique de confidentialité

-

Quelles informations collectons-nous ?

- -
    -
  • Informations de base sur votre compte : Si vous vous inscrivez sur ce serveur, il vous sera demandé de rentrer un identifiant, une adresse électronique et un mot de passe. Vous pourrez également ajouter des informations additionnelles sur votre profil, telles qu’un nom public et une biographie, ainsi que téléverser une image de profil et une image d’en-tête. Vos identifiant, nom public, biographie, image de profil et image d’en-tête seront toujours affichés publiquement.
  • -
  • Posts, liste d’abonnements et autres informations publiques : La liste de vos abonnements ainsi que la liste de vos abonné·e·s sont publiques. Quand vous postez un message, la date et l’heure d’envoi ainsi que le nom de l’application utilisée pour sa transmission sont enregistré·e·s. Des médias, tels que des images ou des vidéos, peuvent être joints aux messages. Les posts publics et non listés sont affichés publiquement. Quand vous mettez en avant un post sur votre profil, ce post est également affiché publiquement. Vos messages sont délivrés à vos abonné·e·s, ce qui, dans certains cas, signifie qu’ils sont délivrés à des serveurs tiers et que ces derniers en stockent une copie. Quand vous supprimer un post, il est probable que vos abonné·e·s en soient informé·e·s. Partager un message ou le marquer comme favori est toujours une action publique.
  • -
  • Posts directs et abonné·e·s uniquement : Tous les posts sont stockés et traités par le serveur. Les messages abonné·e·s uniquement ne sont transmis qu’à vos abonné·e·s et aux personnes mentionnées dans le corps du message, tandis que les messages directs ne sont transmis qu’aux personnes mentionnées. Dans certains cas, cela signifie qu’ils sont délivrés à des serveurs tiers et que ces derniers en stockent une copie. Nous faisons un effort de bonne fois pour en limiter l’accès uniquement aux personnes autorisées, mais ce n’est pas nécessairement le cas des autres serveurs. Il est donc très important que vous vérifiiez les serveurs auxquels appartiennent vos abonné·e·s. Il vous est possible d’activer une option dans les paramètres afin d’approuver et de rejeter manuellement les nouveaux·lles abonné·e·s. Gardez s’il-vous-plaît en mémoire que les opérateur·rice·s du serveur ainsi que celles et ceux de n’importe quel serveur récepteur peuvent voir ces messages et qu’il est possible pour les destinataires de faire des captures d’écran, de copier et plus généralement de repartager ces messages. Ne partager aucune information sensible à l’aide de Mastodon.
  • -
  • IP et autres métadonnées : Quand vous vous connectez, nous enregistrons votre adresse IP ainsi que le nom de votre navigateur web. Toutes les sessions enregistrées peuvent être consultées dans les paramètres, afin que vous puissiez les surveiller et éventuellement les révoquer. La dernière adresse IP utilisée est conservée pour une durée de 12 mois. Nous sommes également susceptibles de conserver les journaux du serveur, ce qui inclut l’adresse IP de chaque requête reçue.
  • -
- -
- -

Que faisons-nous des informations que nous collectons ?

- -

Toutes les informations que nous collectons sur vous peuvent être utilisées d’une des manières suivantes :

- -
    -
  • Pour vous fournir les fonctionnalités de base de Mastodon. Vous ne pouvez interagir avec le contenu des autres et poster votre propre contenu que lorsque vous êtes connecté·e. Par exemple, vous pouvez vous abonner à plusieurs autres comptes pour voir l’ensemble de leurs posts dans votre fil d’accueil personnalisé.
  • -
  • Pour aider à la modération de la communauté, par exemple, comparer votre adresse IP à d’autres afin de déterminer si un bannissement a été contourné ou si une autre violation aux règles a été commise.
  • -
  • L’adresse électronique que vous nous avez fournie peut être utilisée pour vous envoyez des informations, des notifications lorsque d’autres personnes interagissent avec votre contenu ou vous envoient des messages, pour répondre à des demandes de votre part ainsi que pour tout autres requêtes ou questions.
  • -
- -
- -

Comment protégeons-nous vos informations ?

- -

Nous mettons en œuvre une variété de mesures de sécurité afin de garantir la sécurité de vos informations personnelles quand vous les saisissez, les soumettez et les consultez. Entre autres choses, votre session de navigation ainsi que le trafic entre votre application et l’API sont sécurisés à l’aide de TLS tandis que votre mot de passe est haché en utilisant un puissant algorithme à sens unique. Vous pouvez également activer l’authentification à deux facteurs pour sécuriser encore plus l’accès à votre compte.

- -
- -

Quelle est notre politique de conservation des données ?

- -

Nous ferons un effort de bonne foi :

- -
    -
  • Pour ne pas conserver plus de 90 jours les journaux systèmes contenant les adresses IP de toutes les requêtes reçues par ce serveur.
  • -
  • Pour ne pas conserver plus de 12 mois les adresses IP associées aux utilisateur·ice·s enregistré·e·s.
  • -
- -

Vous pouvez demander une archive de votre contenu, incluant vos posts, vos médias joints, votre image de profil et votre image d’en-tête.

- -

Vous pouvez, à n’importe quel moment, supprimer votre compte de manière définitive.

- -
- -

Utilisons-nous des témoins de connexion ?

- -

Oui. Les témoins de connexion sont de petits fichiers qu’un site ou un service transféres sur le disque dur de votre ordinateur via votre navigateur web (si vous l’avez autorisé). Ces témoins permettent au site de reconnaître votre navigateur et de, dans le cas où vous possédez un compte, de vous associer avec ce dernier.

- -

Nous utilisons les témoins de connexion comme un moyen de comprendre et de nous souvenir de vos préférences pour vos prochaines visites.

- -
- -

Divulguons-nous des informations à des tierces parties ?

- -

Nous ne vendons, n’échangeons ou ne transférons d’une quelque manière que soit des informations permettant de vous identifier personnellement. Cela n’inclut pas les tierces parties de confiance qui nous aident à opérer ce site, à conduire nos activités commerciales ou à vous servir, tant qu’elles acceptent de garder ces informations confidentielles. Nous sommes également susceptibles de partager vos informations quand nous pensons que c’est nécessaire pour nous conformer à la loi, pour appliquer les politiques de notre site ainsi que pour défendre nos droits, notre propriété, notre sécurité et celles et ceux d’autres personnes.

- -

Votre contenu public peut être téléchargé par d’autres serveurs du réseau. Dans le cas où vos abonné·e·s et vos destinataires résideraient sur des serveurs différents du vôtre, vos posts publics et abonné·e·s uniquement peuvent être délivrés vers les serveurs de vos abonné·e·s tandis que vos messages directs sont délivrés aux serveurs de vos destinataires.

- -

Quand vous autorisez une application à utiliser votre compte, en fonction de l’étendue des permissions que vous approuvez, il est possible qu’elle puisse accéder aux informations publiques de votre profil, votre liste d’abonnements, votre liste d’abonné·e·s, vos listes, tout vos posts et vos favoris. Les applications ne peuvent en aucun cas accéder à votre adresse électronique et à votre mot de passe.

- -
- -

Utilisation de ce site par les enfants

- -

Si ce serveur est situé dans dans l’UE ou l’EEE : Notre site, produits et services sont tous destinés à des personnes âgées de 16 ans ou plus. Si vous avez moins de 16 ans, en application du RGPD (Règlement Général sur la Protection des Données), merci de ne pas utiliser ce site.

- -

Si ce serveur est situé dans aux États-Unis d’Amérique : Notre site, produits et services sont tous destinés à des personnes âgées de 13 ans ou plus. Si vous avez moins de 13 ans, en application du COPPA (Children's Online Privacy Protection Act), merci de ne pas utiliser ce site.

- -

Les exigences légales peuvent être différentes si ce serveur se trouve dans une autre juridiction.

- -
- -

Modifications de notre politique de confidentialité

- -

Dans le cas où nous déciderions de changer notre politique de confidentialité, nous posterons les modifications sur cette page.

- -

Ce document est publié sous lincence CC-BY-SA. Il a été mis à jours pour la dernière fois le 7 mars 2018.

- -

Originellement adapté de la politique de confidentialité de Discourse.

title: Termini d’usu è di cunfidenzialità per %{instance} themes: contrast: Mastodon (Cuntrastu altu) diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 61997886a..9244ddeac 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -1586,7 +1586,7 @@ cs:
  • Základní informace o účtu: Pokud se na tomto serveru zaregistrujete, můžeme vás požádat o zadání uživatelského jména, e-mailové adresy a hesla. Můžete také zadat dodatečné profilové informace, jako například zobrazované jméno, krátký životopis, nebo si nahrát profilovou fotografii a obrázek záhlaví. Uživatelské i zobrazované jméno, životopis, profilová fotografie a obrázek záhlaví jsou vždy veřejně dostupné.
  • Příspěvky, sledující a další veřejné informace: Seznam lidí, které sledujete, je uveden veřejně, totéž platí i pro uživatele sledující vás. Pro každou vámi napsanou zprávu, bude uloženo datum a čas a informace o aplikaci, ze které jste zprávu odeslali. Zprávy mohou obsahovat mediální přílohy, jako jsou obrázky a videa. Veřejné a neuvedené příspěvky jsou dostupné veřejně. Pokud na vašem profilu uvedete příspěvek, bude také dostupný veřejně. Vaše příspěvky jsou doručeny uživatelům, kteří vás sledují, což v některých případech znamená, že budou příspěvky doručeny na různé servery, na kterých budou ukládány jejich kopie. Pokud příspěvky smažete, bude tato akce taktéž doručeno vašim sledujícím. Akce opětovného sdílení nebo oblíbení jiného příspěvku je vždy veřejná.
  • -
  • Příspěvky přímé a pouze pro sledující: Všechny příspěvky jsou na serveru uloženy a zpracovány. Příspěvky pouze pro sledující jsou doručeny uživatelům, kteří vás sledují, a uživatelům v příspěvcích zmíněným. Přímé příspěvky jsou doručeny pouze uživatelům v nich zmíněným. V některých případech to znamená, že budou příspěvky doručeny na různé servery, na kterých budou ukládány jejich kopie. Upřímně se snažíme omezit přístup k těmto příspěvkům pouze na autorizované uživatele, ovšem ostatní servery tak činit nemusí. Proto je důležité posoudit servery, ke kterým uživatelé, kteří vás sledují patří. V nastavení si můžete zapnout volbu pro manuální schvalování či odmítnutí nových sledujících. Mějte prosím na paměti, že správci tohoto serveru a kteréhokoliv přijímacího serveru mohou tyto zprávy vidět a příjemci mohou vytvořit jejich snímek, zkopírovat je, nebo je jinak sdílet. Nesdílejte přes Mastodon žádné nebezpečné informace.
  • +
  • Příspěvky přímé a pouze pro sledující: Všechny příspěvky jsou na serveru uloženy a zpracovány. Příspěvky pouze pro sledující jsou doručeny uživatelům, kteří vás sledují, a uživatelům v příspěvcích zmíněným. Přímé příspěvky jsou doručeny pouze uživatelům v nich zmíněným. V některých případech to znamená, že budou příspěvky doručeny na různé servery, na kterých budou ukládány jejich kopie. Upřímně se snažíme omezit přístup k těmto příspěvkům pouze na autorizované uživatele, ovšem ostatní servery tak činit nemusí. Proto je důležité posoudit servery, ke kterým uživatelé, kteří vás sledují patří. V nastavení si můžete zapnout volbu pro manuální schvalování či odmítnutí nových sledujících. Mějte prosím na paměti, že správci tohoto serveru a kteréhokoliv přijímacího serveru mohou tyto zprávy vidět a příjemci mohou vytvořit jejich snímek, zkopírovat je, nebo je jinak sdílet. Nesdílejte přes Mastodon žádné citlivé informace.
  • IP adresy a další metadata: Při vašem přihlášení zaznamenáváme IP adresu, ze které se přihlašujete, a název vašeho webového prohlížeče. Všechny vaše webové relace jsou v nastavení přístupné k vašemu posouzení a odvolání. Poslední použitá IP adresa je uložena maximálně po dobu 12 měsíců. Můžeme také uchovávat serverové záznamy, které obsahují IP adresy každého požadavku odeslaného na náš server.
@@ -1657,9 +1657,9 @@ cs:

Rozhodneme-li se naše zásady ochrany osobních údajů změnit, zveřejníme tyto změny na této stránce.

-

Tento dokument je dostupný pod licencí CC-BY-SA. Byl naposledy aktualizován 7. března 2018.

+

Tento dokument je dostupný pod licencí CC-BY-SA. Byl naposledy aktualizován 26. května 2022.

-

Původně adaptováno ze zásad ochrna osobních údajů projektem Discourse.

+

Původně adaptováno ze zásad ochrany osobních údajů projektu Discourse.

title: Podmínky používání a zásady ochrany osobních údajů na serveru %{instance} themes: contrast: Mastodon (vysoký kontrast) diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 306df5979..351067346 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -1080,87 +1080,6 @@ cy: tags: does_not_match_previous_name: ddim yn cyfateb i'r enw blaenorol terms: - body_html: | -

Polisi Preifatrwydd

-

Pa wybodaeth ydyn ni'n ei gasglu?

- -
    -
  • Gwybodaeth cyfrif sylfaenol: Os ydych yn cofrestru ar y gweinydd hwn, mae'n bosib y byddwch yn cael eich gofyn i fewnbynnu enw defnyddiwr, cyfeiriad e-bost a chyfrinair. Mae modd i chi hefyd fewnbynnu gwybodaeth ychwanegol megis enw arddangos a bywgraffiad ac uwchlwytho llun proffil a llun pennawd. Mae'r enw defnyddiwr, enw arddangos, bywgraffiad, llun proffil a'r llun pennawd wedi eu rhestru'n gyhoeddus bob tro.
  • -
  • Postio, dilyn a gwybodaeth gyhoeddus arall: Mae'r rhestr o bobl yr ydych yn dilyn wedi ei restru'n gyhoeddus, mae'r un peth yn wir am eich dilynwyr. Pan yr ydych yn mewnosod neges, mae'r dyddiad a'r amser yn cael ei gofnodi ynghyd a'r rhaglen y wnaethoch anfon y neges ohonni. Gall negeseuon gynnwys atodiadau cyfryngau, megis lluniau neu fideo. Mae negeseuon cyhoeddus a negeseuon heb eu rhestru ar gael yn gyhoeddus. Pan yr ydych yn nodweddu neges ar eich proffil, mae hynny hefyd yn wybodaeth sydd ar gael yn gyhoeddus. Mae eich negeseuon yn cael eu hanfon i'ch dilynwyr, mewn rhai achosion mae hyn yn golygu eu bod yn cael eu hanfon i amryw o weinyddwyr ac fe fydd copiau yn cael eu cadw yno. Pan yr ydych yn dileu negeseuon, mae hyn hefyd yn cael ei hanfon i'ch dilynwyr. Mae'r weithred o rannu neu hoffi neges arall yn gyhoeddus bob tro.
  • -
  • Negeseuon uniongyrchol a dilynwyr yn unig: Mae pob neges yn cael eu cadw a'u prosesu ar y gweinydd. Mae negeseuon dilynwyr yn unig yn cael eu hanfon i'ch dilynwyr a'r defnyddwyr sy'n cael eu crybwyll ynddynt tra bod negeseuon uniongyrchol yn cael eu hanfon at rheini sy'n cael crybwyll ynddynt yn unig. Mewn rhai achostion golyga hyn eu bod yn cael eu hanfon i weinyddwyr gwahanol a'u cadw yno. yr ydym yn gnweud ymgais ewyllys da i gyfyngu'r mynediad at y negeseuon yna i bobl ac awdurdod yn unig, ond mae'n bosib y bydd gweinyddwyr eraill yn methu a gwneud hyn. Mae'n bwysig felly i chi fod yn wyliadwrus o ba weinyddwyr y mae eich dilynwyr yn perthyn iddynt. Mae modd i chi osod y dewis i ganiatau a gwrthod dilynwyr newydd a llaw yn y gosodiadau. Cofiwch gall gweithredwyr y gweinydd ac unrhyw weinydd derbyn weld unrhyw negeseuon o'r fath, ac fe all y derbynwyr gymryd sgrinlin, copïo neu drwy ddulliau eraill rannu rhain. Peidiwch a rhannu unrhyw wybodaeth beryglus dros Mastodon.
  • -
  • IPs a mathau eraill o metadata: Pan yr ydych yn mewngofnodi, yr ydym yn cofnodi y cyfeiriad IP yr ydych yn mewngofnodi ohonno, ynghyd a enw eich rhaglen pori. Mae pob un sesiwn mewngofnodi ar gael i chi adolygu a gwrthod yn y gosodiadau. Mae'r cyfeiriad IP diweddaraf yn cael ei storio hyd at 12 mis. Mae'n bosib y byddwn hefyd yn cadw cofnodion gweinydd sy'n cynnwys y cyfeiriad IP am bob cais sy'n cael ei wneud i'n gweinydd.
  • -
- -
- -

Beth ydym yn defnyddio eich gywbodaeth ar ei gyfer?

- -

Gall unrhyw wybodaeth yr ydym yn ei gasglu oddi wrthych gael ei ddefnyddio yn y ffyrdd canlynol:

- -
    -
  • I ddarparu prif weithgaredd Mastodon. Gallwch ond rhyngweithio a chynnwys pobl eraill pan yr ydych wedi'ch mewngofnodi. Er enghraifft, gallwch ddilyn pobl eraill i weld eu negeseuon wedi cyfuno ar ffrwd gartref bersonol.
  • -
  • I helpu gyda goruwchwylio'r gymuned, er enghraifft drwy gymharu eich cyfeiriad IP gyda rhai eraill hysbys er mwyn sefydlu ymgais i geisio hepgor gwaharddiad neu droseddau eraill.
  • -
  • Gall y cyfeiriad e-bost yr ydych yn ei ddarparu gael ei ddefnyddio i anfon gwybodaeth atoch, hsybysiadau am bobl eraill yn rhyngweithio a'ch cynnwys neu'n anfon negeseuon atoch a/neu geisiadau neu gwestiynnau eraill.
  • -
- -
- -

Sut ydym yn amddiffyn eich gwybodaeth?

- -

Mae gennym amryw o fesurau diogelwch er mwyn cynnal diogelwch eich gwybodaeth bersonol pan yr ydych yn mewnosod, cyflwyno neu'n cael mynediad at eich gwybodaeth bersonol. Ymysg pethau eraill, mae sesiwn eich porwr, ynghyd a'r traffig rhwng eich rhaglenni a'r API wedi eu diogelu gan SSL, ac mae'ch cyfrinair yn cael ei stwnshio drwy ddefnyddio algorithm cryf un-ffordd. Gallwch alluogi dilysu dau-gam er mwyn cryfhau diogelwch mynediad i'ch cyfrif ymhellach.

- -
- -

Beth yw ein polisi cadw data?

- -

Gwnawn ymdrech ewyllys da i:

- -
    -
  • Gadw cofnod gweinydd yn cynnwys y cyfeiriad IP o bob cais i'r gweinydd hwn, i'r graddau y mae cofnodion o'r fath yn cael eu cadw, am ddim mwy na 90 diwrnod.
  • -
  • Gadw cyfeiriadau IP a chysylltiad i ddefnyddwyr cofrestredig am ddim mwy na 12 mis.
  • -
- -

Mae modd i chi wneud cais am, a lawrlwytho archif o'ch cynnwys, gan gynnwys eich tŵtiau, atodiadau cyfryngau, llun proffil a llun pennawd.

- -

Mae modd i chi ddileu eich cyfrif heb ei adfer ar unrhyw bryd

- -
- -

Ydyn ni'n defnyddio cwcis?

- -

Ydyn. Dogfennau bach sy'n cael eu trosglwyddo i ddisg galed eich cyfrifiadur drwy eich porwr gan wefan neu wasanaeth yw cwcis (os ydych yn eu caniatau). Galluoga'r cwcis hyn i'r wefan i adnabod eich porwr ac, os oes gennych gyfrif wedi ei gofrestru, ei gysylltu gyda'r cyfrif yr ydych wedi ei gofrestru.

- -

Rydym yn defnyddio cwcis i ddeall a chadw eich dewisiadau ar gyfer ymweliadau yn y dyfodol.

- -
- -

Ydyn ni'n datgelu unrhyw wybodaeth i bartïoedd allanol?

- -

Nid ydym yn gwerthu, cyfnewid neu mewn unrhyw ddull yn trosglwyddo i bartïoedd allanol eich gwybodaeth bersonol. Nid yw hyn yn cynnwys trydydd partïon yr ydym yn ymddiried ynddynt sy'n ein cynorthwyo i weithredu ein gwefan, cynnal ein busnes neu'ch gwasanaethu chi, cyhyd a bod y partïoedd hynny yn cytuno i gadw'r wybodaeth yma'n gyfrinachol. Mae'n bosib i ni ryddhau eich gwybodaeth pan yr ydym yn credu fod ei ryddhau yn briodol er mwyn cydymffurfio a'r gyfraith, gorfodi ein polisiau, neu i amddiffyn hawliau, eiddo neu diogelwch eraill.

- -

Gall eich cynnwys cyhoeddus gael ei lawrlwytho gan weinyddwyr eraill yn y rhwydwaith. Mae eich tŵtiau cyhoeddus a'r rhai dilynwyr yn unig yn cael eu hanfon i'r gweinyddwyr sy'n lletya eich dilynwyr, tra bod negeseuon uniongrychol yn cael eu hanfon at weinyddwyr y derbynwyr, cyn belled a fod y dilynwyr neu'r derbynwyr hynny yn bodoli ar weinydd gwahanol i'r un hwn.

- -

Pan yr ydych yn caniatau y rhaglen hwn i ddefnyddio'ch cyfrif, yn dibynnu ar sgôp yr hyn yr ydych yn caniatau, gallai gael mynediad at eich gwybodaeth proffil cyhoeddus, eich rhestr dilynwyr, eich dilynwyr, eich rhestrau, eich holl dŵtiau a'ch ffefrynnau. Ni all rhaglenni byth gael mynediad at eich cyfeiriad e-bost na chwaith eich cyfrinair.

- -
- -

Defnydd o'r wefan gan blant

- -

Os yw'r gweinydd hwn yn yr UE neu'r EEA: Mae ein gwefan, ein nwyddau a'n gwasanaethau oll wedi eu cyfeirio at bobl sydd dros 16 mlwydd oed. Os ydych o dan 16, yn ôl gofyniad y GDPR (General Data Protection Regulation) peidiwch a defnyddio'r wefan hon.

- -

Os yw'r gweinydd hwn yn UDA: Mae ein gwefan, ein nwyddau a'n gwasanaethau oll wedi eu cyfeirio at bobl sydd dros 13 mlwydd oed oleiaf. Os ydych o dan 13 mlwydd oed, yn ôl gofyniad COPPA (Children's Online Privacy Protection Act) peidiwch a defnyddio'r wefan hon.

- -

Mae gofynion y gyfraith yn gallu bod yn wahanol os yw'r gweinydd hwn mewn awdurdodaeth wahanol.

- -
- -

Newidiadau i'n Polisi Preifatrwydd

- -

Os ydyn yn penderfynnu i newid ein polisi preifatrwydd, fe wnawn ni roi'r newidiadau hynny ar y dudalen hon.

- -

Mae'r ddogfen hon yn CC-BY-SA. Cafodd ei ddiweddaru diwethaf ar y 7fed o Fawrth, 2018.

- -

Cafodd ei addasu yn wreiddiol o'rPolisi preifatrwydd disgwrs.

title: "%{instance} Termau Gwasanaeth a Polisi Preifatrwydd" themes: contrast: Mastodon (Cyferbyniad uchel) diff --git a/config/locales/da.yml b/config/locales/da.yml index 698e772f4..b1c26b68b 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -1525,7 +1525,86 @@ da: tags: does_not_match_previous_name: matcher ikke det foregående navn terms: - body_html: "

Fortrolighedspolitik

\n

Hvilke oplysninger indsamler vi?

\n\n
    \n  
  • Grundlæggende kontooplysninger: Opretter du dig på denne server, kan du blive bedt om at angive brugernavn, e-mailadresse og adgangskode. Du kan også angive yderligere profiloplysninger, såsom visningsnavn og biografi, samt uploade et profil- og overskriftsbillede. Brugernavn, visningsnavn, biografi, profil- og overskriftsbilleder vises altid offentligt.
  • \n  
  • Indlæg, følgning og andre offentlige oplysninger: Listen over personer, du følger, er offentligt tilgængelig, det samme gælder dine følgere. Når du sender en besked, gemmes dato og klokkeslæt såvel som det program, du sendte beskeden fra. Beskeder kan indeholde medievedhæftninger, såsom billeder og videoer. Offentlige og ulistede indlæg er offentligt tilgængelige. Når du fremhæver et indlæg på din profil, er det også offentligt tilgængelig information. Dine indlæg leveres til dine følgere, i visse tilfælde betyder det, at de leveres til forskellige servere, hvor kopier gemmes. Når du sletter indlæg, leveres det også til dine følgere. Genbloggingshandlinger eller favoritmarkeringer af andre indlæg sker altid i offentligt regi.
  • \n  
  • Direkte og kun-følgere indlæg: Alle indlæg gemmes og behandles på serveren. Kun-følgere indlæg leveres til dine følgere og brugere, nævnt heri, og direkte indlæg leveres kun til brugere nævnt heri. I visse tilfælde betyder dette, at de leveres til forskellige servere, hvor kopier gemmes. Vi gør en bedste-evne indsats for at begrænse adgangen til disse indlæg til kun godkendte personer, men andre servere kan undlade dette tiltag. Det er derfor vigtigt at gennemgå de servere, dine følgere tilhører. Man kan via indstillingerne manuelt slå muligheden Godkend/Afvis nye følgere til/fra.Husk dog på, at operatørerne af serveren og enhver modtagende server vil kunne se sådanne meddelelser, og at modtagere vil kunne tage skærmfotos, kopiere eller på anden vis deler disse igen. Del ingen sensitive mv. oplysninger over Mastodon.
  • \n  
  • IP'er og andre metadata: Når der logges ind, registreres den IP-adresse, der logges ind fra, samt navnet på browser-applikationen. Du vil have alle indloggede sessioner tilgængelige mhp. gennemgang og tilbagekaldelse via indstillingerne. Den senest anvendte IP-adresse gemmes i op til 12 måneder. Vi kan også beholde serverlogfiler indeholdende IP-adressen for hver forespørgsel til vores server.
  • \n
\n\n
\n\n

Hvad bruger vi dine oplysninger til?

\n\n

Enhver oplysning indsamlet fra/om dig, kan blive brugt på flg. måder:

\n\n
    \n  
  • Til at levere Mastodon-kernfunktionalitet. Man kan kun interagere med andres indhold og indsende eget ditto, når man indlogget ind. Man kan f.eks. følge andre personer for at se deres kombinerede indlæg på sin egen personlige tidslinje.
  • \n  
  • Som hjælp til moderering af fællesskabet, f.eks. sammenligning af din IP-adresse med andre kendte mhp. at fastslå udelukkelsesomgåelse eller andre overtrædelser.
  • \n  
  • Den af dig angivne e-mailadresse kan bruges til at sende dig oplysninger, notifikationer om andre personer, som interagerer med dit indhold eller sender dig beskeder samt til at svare på henvendelser og/eller andre forespørgsler eller spørgsmål.
  • \n
\n\n
\n\n

Hvordan beskytter vi dine oplysninger?

\n\n

Vi implementerer en vifte af sikkerhedsforanstaltninger for at sikre dine personlige oplysninger, når du angiver, indsender eller tilgår personlige oplysninger. Bl.a. sikres din browsersession samt trafikken mellem dine applikationer og API'en med SSL, og din adgangskode hashes vha. en stærk envejsalgoritme. Tofaktorgodkendelse kan endvidere aktiveres til yderligere adgangssikring af kontoen.

\n\n
\n\n

Hvad er vores datalagringspolitik?

\n\n

Vi vil efter bedste evne bestræbe os på at:

\n\n
    \n  
  • Ikke at beholde/lagre serverlogfiler indeholdende IP-adressen på alle forespørgsler til denne server, for så vidt at sådanne logfiler gemmes, længere end 90 dage.
  • \n  
  • Ikke at beholde/lagre IP-adresser tilknyttet registrerede brugere længere end 12 måneder.
  • \n
\n\n

Du kan anmode om, og downloade, et arkiv af dit indhold, herunder indlæg, medievedhæftninger samt profil- og overskriftsbilleder

\n\n

Du kan til enhver tid slette din konto permanent.

\n\n
\n\n

Bruger vi cookies?

\n\n

Ja. Cookies er små filer, som et websted eller dets tjenesteudbyder gemmer til din computers harddisk via din webbrowser (hvis du tillader det). Disse cookies gør det muligt for webstedet at genkende din browser og, hvis du har en registreret konto, associerer den med din registrerede konto.

\n\n

Vi bruger cookies til at forstå og gemme dine præferencer for fremtidige besøg.

\n\n
\n\n

Videregiver vi oplysninger til eksterne parter?

\n\n

Vi hverken sælger, handler/bytter eller overfører på anden vis dine personlige identificerbare oplysninger til eksterne parter. Herfra undtaget er dog betroede tredjeparter, som hjælper os med at drive vores websted, drive vores forretning eller servicere dig, så længe parterne accepterer at holde disse oplysninger fortrolige. Vi kan også vælge at frigive dine oplysninger, såfremt vi mener, at frigivelsen er hensigtsmæssig ift. at overholde loven, håndhæve vores webstedspolitikker eller beskytte vores/andres rettigheder, ejendom eller sikkerhed.

\n\n

Dit offentlige indhold kan blive downloadet af andre servere i netværket. Dine offentlige og kun-følgere indlæg leveres til de servere, hvor dine tilhængere er hjemhørende, og direkte beskeder leveres til modtagerens servere, for så vidt som disse følgere/modtagere ikke er hjemhørende på denne server.

\n\n

Når du godkender en applikation til at bruge din konto, godkender du, afhængt af tilladelsesomfanget, at denne kan tilgå dine offentlige profiloplysninger, listen over dem, du følger, følgere, lister, alle indlæg og favoritter. Applikationer kan aldrig tilgå din e-mailadresse eller adgangskode.

\n\n
\n\n

Børns brug af webstedet

\n\n

Hvis denne server er i EU eller EØS: Vores websted, produkter og tjenester er alle er alle beregnet på personer, som er fyldt 16 år. Er man ikke fyldt 16 år, så benyt ikke, jf. kravene i GDPR, (Generel Databeskyttelsesforordning), dette websted.

\n\n

Hvis denne server er i USA: Vores websted, produkter og tjenester er alle rettet mod personer, som er fyldt 13 år. Er man ikke fyldt 13 år, så benyt ikke, jf. kravene i COPPA, (Børns online fortrolighedsbeskyttelsesslov), dette websted.

\n\n

Lovkrav kan afvige, hvis denne server befinder sig i et andet retsområde.

\n\n
\n\n

Ændringer i vores Fortrolighedspolitik

\n\n

Beslutter vi os for at ændre vores Fortrolighedspolitik, vil disse ændringer fremgå på denne side.

\n\n

Dette dokument er CC-BY-SA, og det blev senest opdateret 7. marts 2018.

\n\n

Oprindelig tilpasset fra Discourse privacy policy.

\n" + body_html: | +

Fortrolighedspolitik

+

Hvilke oplysninger indsamle vi?

+ +
    +
  • Grundlæggende kontooplysninger: Registrerer man sig på denne server, kan man blive anmodet om at angive et brugernavn, en e-mail-adresse samt en adgangskode. Der vil også kunne angive yderligere profiloplysninger, såsom visningsnavn og biografi samt uploade et profilbillede og et overskriftsbillede. Brugernavn, visningsnavn, biografien, profilbillede og overskriftsbillede vises altid offentligt.
  • +
  • Opslag, følgninger og andre offentlige oplysninger: Listen over personer, man følger, er offentlig, hvilket ligeledes gælder ens følgere. Når en besked indsendes, gemmes dato og klokkeslæt samt den applikation, hvorfra beskeden blev indsendt. Beskeder kan indeholde medievedhæftningsfiler, såsom billeder og videoer. Offentlige og ikke-listede indlæg er offentligt tilgængelige. Når man fremhæver et opslag på sin profil, er dette også offentligt tilgængelig information. Ens indlæg bliver leveret til ens følgere, hvilket i nogle tilfælde betyder, at de leveres til forskellige servere og kopier lagres dér. Når man sletter indlæg, leveres dette ligeledes til ens følgere. Handlingen at genblogge eller favorisere et andet indlæg er altid offentligt.
  • +
  • Direkte og kun-følgere indlæg: Alle indlæg lagres og behandles på serveren. Kun-følgere Indlæg leveres til ens følgere og brugere, nævnt heri, og direkte indlæg leveres kun til brugere nævnt heri. I visse tilfælde betyder det, at de leveres til forskellige servere, og at kopier lagres dér. Vi gør efter bedste evne indsats for at begrænse adgangen til disse indlæg til autoriserede personer alene, men andre servere kan undlade lignende tiltag. Det er derfor vigtigt at gennemgå servere, ens følgere tilhører. Man kan skifte mellem en mulighed for at godkende og afvise nye følgere manuelt i indstillingerne. Husk, at operatørerne af serveren og enhver modtagende server kan se beskederne, og at modtagere kan tage skærmfotos, kopiere eller på anden vis videredele disse. Del derfor ingen sensitive oplysninger over Mastodon.
  • +
  • IP'er og andre metadata: Når man logger ind, registrerer vi den IP-adresse, der er logget ind fra, samt navnet på browserapplikationen. Man vil kunne gennemgå alle loggede sessioner, f.eks. mhp. tilbagekaldelse via indstillingerne. Den seneste anvendte IP-adresse gemmes i op til 12 måneder. Vi kan også beholde serverlogfiler, som inkluderer IP-adressen for hver anmodning til vores server.
  • +
+ +
+ +

Hvad bruger vi dine oplysninger til?

+ +

Alle indsamlede oplysninger vil kunne bruges på flg. måder:

+ +
    +
  • Mhp. at levere kernefunktionaliteten i Mastodon. Man kan kun interagere med andres indhold og poste eget indhold, når man er logget ind. Man kan f.eks. følge andre brugere for at se deres kombinerede indlæg på ens egen personligt tilpassede hjemmetidslinje.
  • +
  • For at hjælpe med fællesskabsmodereringen, f.eks. sammenligning af IP-adressen med andre kendte for at fastslå omgåelse af forbud eller andre overtrædelser.
  • +
  • Den angivne e-mailadresse kan blive brugt til at sende oplysninger, meddelelser om andre personer, som interagerer med ens indhold eller sender beskeder, og til at svare på forespørgsler og/eller andre anmodninger eller spørgsmål.
  • +
+ +
+ +

Hvordan beskytter vi dine oplysninger?

+ +

Vi har implementeret en række sikkerhedsforanstaltninger for at opretholde sikkerheden af ens ​​personlige oplysninger, når man angiver, indsender eller får adgang til sine personlige oplysninger. Blandt andet er ens browsersession, samt trafikken mellem ens applikationer og API'et, sikret med SSL, og ens adgangskode hashes vha. en stærk envejsalgoritme. Man kan aktivere tofaktorgodkendelse for yderligere at sikre adgangen til sin konto.

+ +
+ +

Hvad er vores politik for dataopbevaring?

+ +

Vi vil gøre efter bedste evne indsats for at:

+ +
  • Kun opbevare serverlogfiler indeholdende IP-adressen for alle anmodninger til denne server, i det omfang sådanne logfiler opbevares, i maks. 90 dage.
  • +
  • Kun opbevare de IP-adresser, som er tilknyttet registrerede brugere, i maks. 12 måneder.
  • +
+ +

Man kan anmode om og downloade et arkiv af sit indhold, inkl. ens indlæg, medievedhæftninger, profilbillede og sidehovedbillede.

+ +

Man kan til enhver tid slette sin konto irreversibelt.

+ +
+ +

Bruger vi cookies?

+ +

Ja. Cookies er små filer, som et websted eller dets tjenesteudbyder overfører til en lokal computers harddisk via webbrowseren (såfremt man tillader dette). Cookies muliggør for webstedet at genkende en browser og, hvis man har en registreret konto, knytte den til en registrerer konto.

+ +

Vi bruger cookies til at forstå og gemme brugerpræferencer til fremtidige besøg.

+ +
+ +

Videregiver vi nogen oplysninger til eksterne parter?

+ +

Vi hverken sælger, bytter eller overfører på anden vis personligt identificerbare brugeroplysninger til eksterne parter. Dette inkluderer dog ikke betroede tredjeparter, som hjælper os med at drive vores websted, drive vores forretning eller servicere brugere, så længe disse parter accepterer at holde disse oplysninger fortrolige. Vi kan også frigive brugeroplysninger, når vi mener, at frigivelse er passende for at overholde loven, håndhæve vores webstedspolitikker eller beskytte vores eller andres rettigheder, ejendom eller sikkerhed.

+ +

Ens offentlige indhold kan blive downloadet af andre servere på netværket. Ens offentlige og kun-følgere indlæg leveres til de servere, hvor ens følgere hidhører, og direkte beskeder leveres til modtagernes servere, i det omfang disse følgere eller modtagere hidhører på en anden server end denne.

+ +

Når man godkender en applikation til at bruge ens konto, kan den, afhængigt af tilladelsesomfanget, man godkender, opnå adgang til ens offentlige profiloplysninger, følgende liste, følgere, lister, alle opslag og favoritter. Programmer kan aldrig tilgå ens e-mail-adresse eller adgangskode.

+ +
+ +

Børns brug af webstedet

+ +

Hvis denne server er i EU eller EØS: Vores websted, produkter og tjenester er alle rettet mod et publikum på mindst 16 år. Er man under 16 år, skal man iht. kravene i GDPR (General Data Protection Regulation) ikke bruge dette websted.

+ +

Hvis denne server er i USA: Vores websted, produkter og tjenester er alle rettet mod et publikum på mindst 13 år. Er man under 13 år, skal du iht. kravene i COPPA (Children's Online Privacy Protection Act) ikke bruge dette websted.

+ +

Lovkravene kan være anderledes, hvis denne server er i en anden jurisdiktion.

+ +
+ +

Ændringer i vores fortrolighedspolitik

+ +

Hvis vi beslutter at ændre vores fortrolighedspolitik, vil sådanne ændringer blive offentliggort på denne side.

+ +

Dette dokument er CC-BY-SA. Det er senest opdateret 26. maj 2022.

+ +

Oprindeligt tilpasset fra Discourse-fortrolighedspolitik.

title: Tjenestevilkår og Fortrolighedspolitik for %{instance} themes: contrast: Mastodon (høj kontrast) diff --git a/config/locales/de.yml b/config/locales/de.yml index 58be571a8..abe988a98 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -1525,89 +1525,6 @@ de: tags: does_not_match_previous_name: entspricht nicht dem vorherigen Namen terms: - body_html: | -

Datenschutzerklärung

-

Welche Informationen sammeln wir?

- -
    -
  • Grundlegende Kontoinformationen: Wenn du dich auf diesem Server registrierst, wirst du darum gebeten, einen Benutzernamen, eine E-Mail-Adresse und ein Passwort einzugeben. Du kannst auch zusätzliche Profilinformationen wie etwa einen Anzeigenamen oder eine Biografie eingeben und ein Profilbild oder ein Headerbild hochladen. Der Benutzername, der Anzeigename, die Biografie, das Profilbild und das Headerbild werden immer öffentlich angezeigt.
  • -
  • Beiträge, Folge- und andere öffentliche Informationen: Die Liste der Leute, denen du folgst, wird öffentlich gezeigt, das gleiche gilt für deine Folgenden (Follower). Sobald du eine Nachricht übermittelst, wird das Datum und die Uhrzeit gemeinsam mit der Information, welche Anwendung du dafür verwendet hast, gespeichert. Nachricht können Medienanhänge enthalten, etwa Bilder und Videos. Öffentliche und ungelistete Beiträge sind öffentlich verfügbar. Sobald du einen Beitrag auf deinem Profil anpinnst, sind dies auch öffentlich verfügbare Informationen. Deine Beiträge werden an deine Folgenden ausgeliefert, was in manchen Fällen bedeutet, dass sie an andere Server ausgeliefert werden und dort Kopien gespeichert werden. Sobald du Beiträge löschst, wird dies ebenso an deine Follower ausgeliefert. Die Handlungen des Teilens und Favorisieren eines anderen Beitrages ist immer öffentlich.
  • -
  • Direkte und "Nur Folgende"-Beiträge: Alle Beiträge werden auf dem Server gespeichert und verarbeitet. "Nur Folgende"-Beiträge werden an deine Folgenden und an Benutzer, die du in ihnen erwähnst, ausgeliefert, direkte Beiträge nur an in ihnen erwähnte Benutzer. In manchen Fällen bedeutet dass, dass sie an andere Server ausgeliefert werden und dort Kopien gespeichert werden. Wir bemühen uns nach bestem Wissen und Gewissen, den Zugriff auf diese Beiträge auf nur autorisierte Personen einzuschränken, jedoch könnten andere Server dabei scheitern. Deswegen ist es wichtig, die Server, zu denen deine Folgenden gehören, zu überprüfen. Du kannst eine Option in den Einstellungen umschalten, um neue Folgenden manuell anzunehmen oder abzuweisen. Bitte beachte, dass die Betreiber des Server und jedes empfangenden Servers solche Nachrichten anschauen könnten und dass Empfänger von diesen eine Bildschirmkopie erstellen könnten, sie kopieren oder anderweitig weiterverteilen könnten. Teile nicht irgendwelche gefährlichen Informationen über Mastodon.
  • -
  • Internet Protocol-Adressen (IP-Adressen) und andere Metadaten: Sobald du dich anmeldest, erfassen wir sowohl die IP-Adresse, von der aus du dich anmeldest, als auch den Namen deine Browseranwendung. Alle angemeldeten Sitzungen (Sessions) sind für deine Überprüfung und Widerruf in den Einstellungen verfügbar. Die letzte verwendete IP-Adresse wird bis zu 12 Monate lang gespeichert. Wir könnten auch Serverprotokoll behalten, welche die IP-Adresse von jeder Anfrage an unseren Server enthalten.
  • -
- -
- -

Für was verwenden wir deine Informationen?

- -

Jede der von dir gesammelten Information kann in den folgenden Weisen verwendet werden:

- -
    -
  • Um die Kernfunktionalität von Mastodon bereitzustellen. Du kannst du mit dem Inhalt anderer Leute interagieren und deine eigenen Inhalte beitragen, wenn du angemeldet bist. Zum Beispiel kannst du anderen folgen, um deren kombinierten Beiträge in deine personalisierten Start-Timeline zu sehen.
  • -
  • Um Moderation der Community zu ermöglichen, zum Beispiel beim Vergleichen deiner IP-Adresse mit anderen bekannten, um Verbotsumgehung oder andere Vergehen festzustellen.
  • -
  • Die E-Mail-Adresse, die du bereitstellst, kann dazu verwendet werden, dir Informationen, Benachrichtigungen über andere Leute, die mit deinen Inhalten interagieren oder dir Nachrichten senden, und auf Anfragen, Wünsche und/oder Fragen zu antworten.
  • -
- -
- -

Wie beschützen wir deine Informationen?

- -

Wir implementieren eine Reihe von Sicherheitsmaßnahmen, um die Sicherheit deiner persönlichen Information sicherzustellen, wenn du persönliche Informationen eingibst, übermittelst oder auf sie zugreifst. Neben anderen Dingen, wird sowohl deine Browsersitzung, als auch der Datenverkehr zwischen deinen Anwendungen und der Programmierschnittstelle (API) mit SSL gesichert, dein Passwort wird mit einem starken Einwegalgorithmus gehasht. Du kannst Zwei-Faktor-Authentifizierung aktivieren, um den Zugriff auf dein Konto zusätzlich abzusichern.

- -
- -

Was ist unsere Datenspeicherungsrichtlinie?

- -

Wir werden mit bestem Wissen und Gewissen:

- -
    -
  • Serverprotokolle, die IP-Adressen von allen deinen Anfragen an diesen Server, falls solche Protokolle behalten werden, für nicht mehr als 90 Tage behalten.
  • -
  • registrierten Benutzer zugeordnete IP-Adressen nicht länger als 12 Monate behalten.
  • -
- -

Du kannst ein Archiv deines Inhalts anfordern und herunterladen, inkludierend deiner Beiträge, Medienanhänge, Profilbilder und Headerbilder.

- -

Es ist in den meisten Fällen möglich dein Konto jederzeit eigenmächtig unwiderruflich zu löschen.

- -
- -

Verwenden wir Cookies?

- -

Ja. Cookies sind kleine Dateien, die eine Webseite oder ihr Serviceanbieter über deinen Webbrowser (sofern er es erlaubt) auf die Festplatte deines Computers überträgt. Diese Cookies ermöglichen es der Seite deinen Browser wiederzuerkennen und, sofern du ein registriertes Konto hast, diesen mit deinem registrierten Konto zu verknüpfen.

- -

Wir verwenden Cookies, um deine Einstellungen zu verstehen und für zukünftige Besuche zu speichern.

- -
- -

Offenbaren wir Informationen an Dritte?

- -

Wir verkaufen nicht, handeln nicht mit oder übertragen deine persönlich identifizierbaren Informationen nicht an Dritte. Dies beinhaltet nicht Dritte, die vertrauenswürdig sind und uns beim Betreiben unserer Seite, Leiten unseres Geschäftes oder dabei, die Dienste für dich bereitzustellen, unterstützen, sofern diese Dritte zustimmen, diese Informationen vertraulich zu halten. Wir können auch Informationen freigeben, wenn wir glauben, dass Freigabe angemessen ist, um dem Gesetz zu entsprechen, unsere Seitenrichtlinien durchzusetzen oder unsere Rechte, Eigentum und/oder Sicherheit oder die anderer zu beschützen.

- -

Dein öffentlicher Inhalt kann durch andere Server im Netzwerk heruntergeladen werden. Deine öffentlichen und "Nur Folgende"-Beiträge werden an die Server ausgeliefert, bei denen sich deine Folgenden befinden und direkte Nachrichten werden an die Server des Empfängers ausgeliefert, falls diese Folgenden oder Empfänger sich auf einem anderen Server als diesen befinden.

- -

Wenn du eine Anwendung autorisierst, dein Konto zu benutzen, kann diese – abhängig von den von dir genehmigten Befugnissen – auf deine öffentlichen Profilinformationen, deine Folgt- und Folgende-Liste, deine Listen, alle deine Beiträge und deine Favoriten zugreifen. Anwendungen können nie auf deine E-Mail-Adresse oder dein Passwort zugreifen

- -
- -

Webseitenbenutzung durch Kinder

- -

Wenn sich dieser Server in der EU oder im Europäischen Wirtschaftsraum befindet: Unsere Website, Produkte und Dienstleistungen sind alle an Leute gerichtet, die mindestens 16 Jahre als sind. Wenn du unter 16 bist, darfst du nach den Bestimmungen der DSGVO (Datenschutz-Grundverordnung) diese Webseite nicht benutzen.

- -

Wenn sich dieser Server in den USA befindet: Unsere Webseite, Produkte und Dienstleistungen sind alle an Leute gerichtet, die mindestens 13 Jahre alt sind. Wenn du unter 13 bist, darfst du nach den Bestimmungen des COPPA (Children's Online Privacy Protection Act, dt. "Gesetz zum Schutz der Privatsphäre von Kindern im Internet") diese Webseite nicht benutzen.

- -

Gesetzesvorschriften können unterschiedlich sein, wenn sich dieser Server in anderer Gerichtsbarkeit befindet.

- -
- -

Änderung an unserer Datenschutzerklärung

- -

Wenn wir uns entscheiden, Änderungen an unserer Datenschutzerklärung vorzunehmen, werden wir diese Änderungen auf dieser Seite bekannt gegeben.

- -

Dies ist eine Übersetzung, Irrtümer und Übersetzungsfehler vorbehalten. Im Zweifelsfall gilt die englische Originalversion.

- -

Dieses Dokument ist CC-BY-SA. Es wurde zuletzt aktualisiert am 7. März 2018.

- -

Ursprünglich übernommen von der Discourse-Datenschutzerklärung.

title: "%{instance} Nutzungsbedingungen und Datenschutzerklärung" themes: contrast: Mastodon (Hoher Kontrast) diff --git a/config/locales/devise.fa.yml b/config/locales/devise.fa.yml index c13df9989..bb7134731 100644 --- a/config/locales/devise.fa.yml +++ b/config/locales/devise.fa.yml @@ -38,7 +38,7 @@ fa: reconfirmation_instructions: explanation: نشانی تازه را تأیید کنید تا ایمیل‌تان عوض شود. extra: اگر شما باعث این تغییر نبودید، لطفاً این ایمیل را نادیده بگیرید. تا زمانی که شما پیوند بالا را باز نکنید، نشانی ایمیل مربوط به حساب شما عوض نخواهد شد. - subject: 'ماستدون: تأیید ایمیل برای %{instance}' + subject: 'ماستودون: تأیید رایانامه برای %{instance}' title: تأیید نشانی ایمیل reset_password_instructions: action: تغییر رمز diff --git a/config/locales/devise.gl.yml b/config/locales/devise.gl.yml index 7ea022992..96ebb68c3 100644 --- a/config/locales/devise.gl.yml +++ b/config/locales/devise.gl.yml @@ -91,7 +91,7 @@ gl: signed_up: Benvido! Rexistrácheste de xeito correcto. signed_up_but_inactive: A túa conta foi rexistada. Porén aínda non está activada. signed_up_but_locked: A túa conta foi rexistada. Porén está bloqueada. - signed_up_but_pending: Unha mensaxe cunha ligazón de confirmación foi enviada ó teu enderezo de email. Após premer na ligazón, revisaremos a túa aplicación. Serás notificado se a túa conta é aprobada. + signed_up_but_pending: Acabamos de enviar unha mensaxe ao teu email cunha ligazón de confirmación. Após premer na ligazón, revisaremos a túa solicitude. Recibirás unha notificación se a túa conta é aprobada. signed_up_but_unconfirmed: Enviouse unha mensaxe cunha ligazón de confirmación ao teu email. Por favor, preme nesa ligazón para activar a túa conta. Comproba o teu cartafol de correo lixo (spam) se ves que non recibiches o correo. update_needs_confirmation: Actualizaches a túa conta de xeito correcto, pero precisamos verificar o teu novo enderezo de email. Por favor, revisa o teu email e segue a ligazón para confirmar o teu novo enderezo de email. Comproba o teu cartafol de correo lixo (spam) se ves que non recibiches o correo. updated: A túa conta foi actualizada de xeito correcto. diff --git a/config/locales/el.yml b/config/locales/el.yml index c8cdf2d20..47f7097e8 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -1152,87 +1152,6 @@ el: tags: does_not_match_previous_name: δεν ταιριάζει με το προηγούμενο όνομα terms: - body_html: | -

Πολιτική Απορρήτου

-

Ποιες πληροφορίες συλλέγουμε;

- -
    -
  • Βασικά στοιχεία λογαριασμού: Όταν εγγραφείς σε αυτό τον διακομιστή, μπορεί να σου ζητηθεί όνομα χρήστη, διεύθυνση email και ένας κωδικός. Μπορεί επίσης να εισάγεις επιπλέον πληροφορίες λογαριασμού όπως ένα όνομα λογαριασμού και σύντομο βιογραφικό και να ανεβάσεις εικόνα προφίλ και επικεφαλίδας. Το όνομα χρήστη, το όνομα λογαριασμού, το βιογραφικό και οι εικόνες προφίλ και επικεφαλίδας είναι πάντα δημόσια εμφανείς.
  • -
  • Δημοσιεύσεις, ακόλουθοι και λοιπά δημόσια στοιχεία: Η λίστα των ανθρώπων που ακολουθείς εμφανίζεται δημόσια, το ίδιο και οι ακόλουθοί σου. Όταν υποβάλλεις ένα μήνυμα, η ημερομηνία και ώρα αποθηκεύονται καθώς και η εφαρμογή που χρησιμοποίησες για την υποβολή του. Τα μηνύματα μπορεί να περιέχουν συνημμένα πολυμέσα όπως εικόνες και βίντεο. Τα δημόσια και τα μη καταχωρημένα μηνύματα είναι δημόσια διαθέσιμα. Όταν προβάλεις μια δημοσίευση στο προφίλ σου, είναι και αυτό δημόσια διαθέσιμο. Οι δημοσιεύσεις σου παραδίδονται στους ακολούθους σου, σε κάποιες περιπτώσεις αυτό σημαίνει ότι παραδίδονται σε διαφορετικούς διακομιστές (servers) και αντίγραφά τους αποθηκεύονται σε αυτούς. Παρομοίως, όταν διαγράψεις δημοσιεύσεις, αυτό μεταφέρεται στους ακόλουθους σου. Η αναδημοσίευση και η σημείωση ως αγαπημένης μιας δημοσίευσης είναι πάντα δημόσια.
  • -
  • Προσωπικές δημοσιεύσεις και προς ακόλουθους: Όλες οι δημοσιεύσεις αποθηκεύονται και επεξεργάζονται στον διακομιστή. Οι δημοσιεύσεις προς τους ακόλουθους παραδίδονται στους ακόλουθους σου και σε όσους χρήστες αναφέρονται σε αυτές. Σε κάποιες περιπτώσεις αυτό σημαίνει πως παραδίδονται σε διαφορετικούς διακομιστές και αντίγραφά τους αποθηκεύονται σε αυτούς. Καταβάλουμε ειλικρινή προσπάθεια περιορισμού πρόσβασης σε αυτές τις δημοσιεύσεις μόνο σε εγκεκριμένα άτομα, όμως διαφορετικοί διακομιστές μπορεί να μην το πετυχαίνουν αυτό. Για αυτό, είναι σημαντικό να ελέγχεις τους διακομιστές στους οποίους ανήκουν οι ακόλουθοί σου. Μπορείς να ενεργοποιήσεις την επιλογή χειροκίνητης αποδοχής ή απόρριψης των νέων ακόλουθών σου στις ρυθμίσεις. Παρακαλούμε έχε υπόψιν σου πως οι διαχειριστές του διακομιστή και των αποδεκτών διακομιστών πιθανόν να κοιτάνε αυτά τα μηνύματα, και πως οι τελικοί αποδέκτες μπορούν να αποθηκεύσουν την οθόνη, το μήνυμα ή να το αναμεταδώσουν με άλλους τρόπους. Μην μοιράζεσαι επικύνδυνες πληροφορίες μέσω του Mastodon.
  • -
  • Διευθύνσεις IP και άλλα metadata: Όταν συνδέεσαι, καταγράφουμε την διεύθυνση IP σου, καθώς και το όνομα της εφαρμογής του φυλλομετρητή σου (browser). Όλες οι τρέχουσες συνδέσεις στον λογαριασμό σου είναι διαθέσιμες προς ανασκόπηση στις ρυθμίσεις. Η πιο πρόσφατη διεύθυνση IP αποθηκεύεται για μέχρι 12 μήνες. Επίσης μπορεί να διατηρήσουμε ιστορικό του διακομιστή (log files) που να περιέχει την διεύθυνση ΙΡ κάθε κλήσης προς τον διακομιστή μας.
  • -
- -
- -

Πως χρησιμοποιούμε τις πληροφορίες σου;

- -

Οι πληροφορίες σου που συλλέγουμε μπορεί να χρησιμοποιηθούν με τους ακόλουθους τρόπους:

- -
    -
  • Για να παρέχουμε την βασική λειτουργικότητα του Mastodon. Μπορείς να αλληλεπιδράσεις με τις δημοσιεύσεις άλλων και να κάνεις τις δικές σου μόνο αφού συνδεθείς. Για παράδειγμα, μπορείς να ακολουθήσεις άλλους χρήστες για να βλέπεις τις συνολικές δημοσιεύσεις τους στη δική σου, προσωπική αρχική ροή.
  • -
  • Για να διευκολύνουμε τη διαχείριση της κοινότητας, για παράδειγμα συγκρίνοντας τη δική σου διεύθυνση IP με άλλες γνωστές διευθύνσεις για να καθορίσουμε περιπτώσεις αποφυγής αποκλεισμού ή άλλων παραβάσεων.
  • -
  • Η διεύθυνση email που δίνεις μπορεί να χρησιμοποιηθεί για να σου στείλουμε πληροφορίες, ειδοποιήσεις για αλληλεπιδράσεις άλλων χρηστών με τις δημοσιεύσεις σου και να ανταποκριθούμε σε ερωτήματά σου.
  • -
- -
- -

Πως προστατεύουμε τις πληροφορίες σου;

- -

Εφαρμόζουμε μια σειρά μεθόδων ασφαλείας για να διασφαλίσουμε τις προσωπικές πληροφορίες που εισάγεις, καταθέτεις ή κοιτάζεις. Μεταξύ άλλων, η σύνδεση του φυλλομετρητή σου καθώς και οι ανταλασσόμενες πληροφορίες μεταξύ των εφαρμογών σου και του API είναι κρυπτογραφημένες μέσω SSL και το συνθηματικό σου κωδικοποιείται με ισχυρό, μη αντιστρέψιμο αλγόριθμο. Μπορείς να ενεργοποιήσεις την ταυτοπόίηση 2 παραγόντων (2FA) για επιπλέον ασφαλή πρόσβαση στο λογαριασμό σου.

- -
- -

Ποια είναι η πολιτική διατήρησης πληροφοριών μας;

- -

Καταβάλουμε κάθε δυνατή προσπάθεια να:

- -
    -
  • Διατηρήσουμε αρχεία ενεργειών των διακομιστών (servers) για όλα τα αιτήματα σε αυτόν τον διακομιστή, και αυτά τα αρχεία διατηρούνται για μέγιστο χρόνο 90 ημερών.
  • -
  • Διατηρήσουμε τις διευθύνσεις IP που σχετίζονται με εγγεγραμμένους χρήστες για μέγιστο χρόνο 12 μηνών.
  • -
- -

Μπορείς να αιτηθείς και να αποθηκεύσεις τοπικά ένα αρχείο του περιεχομένου σου που περιλαμβάνει τις δημοσιεύσεις, τα συνημμένα πολυμέσα, την εικόνα προφίλ και την εικόνα επικεφαλίδας.

- -

Μπορείς ανά πάσα στιγμή να διαγράψεις οριστικά και αμετάκλητα το λογαριασμό σου.

- -
- -

Χρησιμοποιούμε cookies;

- -

Ναι. Τα cookies είναι μικρά αρχεία που ένας ιστοτοπος (site) ή πάροχος υπηρεσίας μεταφέρει στον σκληρό δίσκο του υπολογιστή μέσω του φυλλομετρητή (αν το επιτρέψεις). Τα cookies αυτά επιτρέπουν στον ιστότοπο να αναγνωρίζει τον φυλλομετρητή σου και, αν έχεις λογαριασμό, να τον συνδέσει με αυτόν.

- -

Χρησιμοποιούμε τα cookies για να αναγνωρίσουμε και αποθηκεύσουμε τις προτιμήσεις σου για τις μελλοντικές σου επισκέψεις.

- -
- -

Αποκαλύπτουμε πληροφορίες σε τρίτους;

- -

Δεν πουλάμε, ανταλλάσσουμε ή με άλλο τρόπο μεταφέρουμε σε τρίτα μέρη πληροφορίες που σε προσωποποιούν. Αυτό δεν περιλαμβάνει αξιόπιστα τρίτα μέρη που μας βοηθούν να λειτουργούμε τον ιστότοπό μας, να διεξάγουμε τις εργασίες μας ή να σε εξυπηρετούμε, στο βαθμό που αυτά τα τρίτα μέρη συμφωνούν να διατηρούν αυτές τις πληροφορίες εμπιστευτικές. Επίσης μπορεί να μοιραστούμε τις πληροφορίες σου όταν θεωρήσουμε πως αυτό είναι σύμφωνο με τον νόμο, με την πολιτική του ιστότοπου μας ή διαφυλάσσει τα δικά μας δικαιώματα ή τρίτων, την ιδιοκτησία ή την ασφάλεια.

- -

Το δημόσιο περιεχόμενο σου μπορεί να αποθηκευτεί από άλλους διακομιστές (servers) στο δίκτυο. Οι δημόσιες και οι προς ακόλουθους δημοσιεύσεις σου παραδίδονται στους διακομιστές των ακολούθων σου και τα προσωπικά μηνύματα στους διακομιστές των παραληπτών, όταν αυτοί βρίσκονται σε διαφορετικό διακομιστή.

- -

Όταν επιτρέψεις σε μια εφαρμογή να χρησιμοποιήσει τον λογαριασμό σου, ανάλογα με το εύρος των δικαιωμάτων που εγκρίνεις, μπορεί να έχει πρόσβαση στις πληροφορίες του δημόσιου προφιλ σου, στη λίστα των ακολούθων σου, στους ακόλουθούς σου, στις λίστες σου, σε όλες τις δημοσιεύσεις σου και στα αγαπημένα σου. Οι εφαρμογές ποτέ δεν έχουν πρόσβαση στις διευθύνσεις email και στα συνθηματικά σου.

- -
- -

Χρήση από παιδιά

- -

Αν αυτός ο διακομιστής βρίσκεται στην ΕΕ (Ευρωπαϊκή Ένωση) ή στον ΕΟΧ (Ευρωπαϊκός Οικονομικός Χώρος): Ο ιστότοπός μας, τα προϊόντα και οι υπηρεσίες μας απευθύνονται σε άτομα ηλικίας άνω των 16. Αν είσαι κάτω των 16, σύμφωνα με τις απαιτήσεις του Γενικού Κανονισμού Προστασίας Δεδομένων "GDPR" (General Data Protection Regulation) μην χρησιμοποιήσεις αυτόν τον ιστότοπο.

- -

Αν αυτός ο διακομιστής βρίσκεται στις ΗΠΑ: Ο ιστότοπός μας, τα προϊόντα και οι υπηρεσίες μας απευθύνονται σε άτομα ηλικίας τουλάχιστον 13 ετών. Αν είσαι κάτω των 13, σύμφωνα με τις απαιτήσεις του COPPA (Children's Online Privacy Protection Act) μην χρησιμοποιήσεις αυτόν τον ιστότοπο.

- -

Οι νομικές απαιτήσεις μπορεί να είναι διαφορετικές αν ο διακομιστής αυτός βρίσκεται σε άλλη δικαιοδοσία.

- -
- -

Αλλαγές στην πολιτική απορρήτου μας

- -

Αν αποφασίσουμε να κάνουμε αλλαγές στην πολιτική απορρήτου μας, θα τις δηλώσουμε σε αυτήν εδώ τη σελίδα.

- -

Η άδεια χρήσης αυτού του κειμένου είναι κατάCC-BY-SA. Ενημερώθηκε τελευταία φορά στις 7 Μαρτίου, 2018.

- -

Οι παραπάνω όροι έχουν προσαρμοστεί από τους αντίστοιχους όρους του Discourse.

title: Όροι Χρήσης και Πολιτική Απορρήτου του κόμβου %{instance} themes: contrast: Mastodon (Υψηλή αντίθεση) diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 2ab3692b2..babbce7da 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -1178,13 +1178,15 @@ eo: private_long: Montri nur al sekvantoj public: Publika public_long: Ĉiuj povas vidi - unlisted: Nelistigita + unlisted: Ne enlistigita unlisted_long: Ĉiuj povas vidi, sed nelistigita en publikaj templinioj statuses_cleanup: enabled: Aŭtomate forigi malnovajn postojn exceptions: Esceptoj ignore_favs: Ignori ŝatatajn ignore_reblogs: Ignori akcelojn + keep_direct: Konservi rektajn mesaĝojn + keep_direct_hint: Ne forigos viajn rektajn mesagôjn min_age: '1209600': 2 semajnoj '15778476': 6 monatoj diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index beefc4193..b01f983b0 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -1530,42 +1530,42 @@ es-AR:

¿Qué información recolectamos?

    -
  • Información básica de la cuenta: Si te registrás en este servidor, se te va a pedir un nombre de usuario, una dirección de correo electrónico y una contraseña. También podés ingresar información adicional de perfil como un nombre para mostrar y una biografía, y subir un avatar y una imagen de cabecera. El nombre de usuario, nombre para mostrar, biografía, avatar e imagen de cabecera siempre son visibles públicamente.
  • -
  • Mensajes, seguimiento y otra información pública: La lista de cuentas a las que seguís es mostrada públicamente, al igual que la de tus seguidores. Cuando enviás un mensaje, se almacenan la fecha y hora, así como la aplicación desde la cual enviaste el mensaje. Los mensajes pueden contener archivos adjuntos de medios, como imágenes y videos. Los mensajes públicos y no listados están técnicamente disponibles para todos. Cuando destacás un mensaje en tu perfil, eso también se considera información disponible públicamente. Tus mensajes son entregados a tus seguidores; en algunos casos significa que son entregados a diferentes servidores y las copias son almacenadas allí. Cuando eliminás mensajes, esto también afecta a tus seguidores. La acción de adherir o marcar como favorito otro mensaje es siempre pública.
  • -
  • Mensajes directos y sólo para seguidores: Todos los mensajes se almacenan y procesan en el servidor. Los mensajes sólo para seguidores se entregan a los seguidores y usuarios que se mencionan en ellos, y los mensajes directos se entregan sólo a los usuarios que se mencionan en ellos. En algunos casos significa que se entregan a diferentes servidores y que las copias se almacenan allí. Hacemos un esfuerzo de buena fe para limitar el acceso a esos mensajes sólo a las cuentas autorizadas, pero otros servidores pueden no hacerlo. Por lo tanto, es importante revisar los servidores a los que pertenecen tus seguidores. Podés cambiar una opción para aprobar y rechazar nuevos seguidores manualmente en la configuración. Por favor, tené en cuenta que los operadores del servidor y de cualquier servidor receptor pueden ver dichos mensajes, y que los destinatarios pueden tomar capturas de pantalla, copiarlos o volver a compartirlos de alguna otra manera. No compartas ninguna información peligrosa en Mastodon.
  • -
  • Direcciones IP y otros metadatos: Cuando iniciás sesión, registramos la dirección IP desde dónde lo estás haciendo, así como el nombre de tu navegador web. Todos los inicios de sesiones están disponibles para tu revisión y revocación en la configuración. La última dirección IP usada se almacena hasta por 12 meses. También podemos conservar los registros del servidor que incluyen la dirección IP de cada solicitud a nuestro servidor.
  • +
  • Información básica de la cuenta: Si te registrás en este servidor, se te va a pedir que ingresés un nombre de usuario, una dirección de correo electrónico y una contraseña. También podés ingresar información adicional de perfil, como un nombre a mostrar y una biografía/descripción sobre vos mismo, así como subir una imagen de avatar y una imagen de cabecera. El nombre de usuario, el nombre a mostrar, la biografía y las imágenes de avatar y cabecera siempre se muestran públicamente.
  • +
  • Mensajes, seguimientos y otra información pública: La lista de gente que seguís se muestra públicamente; lo mismo ocurre con tus seguidores. Cuando enviás un mensaje, la fecha y la hora de ese mensajes queda registrada, así como el nombre del programa o la aplicación que usaste para enviar dicho mensaje. Los mensajes pueden contener archivos adjuntos de medios, como audios, imágenes o videos. No sólo los mensajes públicos están disponibles públicamente, sino también aquellos mensajes no listados. Cuando destacás un mensaje en tu perfil, esta información también está disponible de modo público. Tus mensajes son entregados a tus seguidores; en muchos casos, eso significa que son entregados a diferentes servidores y que las copias de esos mensajes quedan almacenadas allí. Cuando eliminás mensajes, esta acción también es entregada a tus seguidores. La acción de adherir a un mensaje o de marcarlo como favorito siempre es pública.
  • +
  • Mensajes sólo para seguidores y directos: Todos los mensajes son almacenados y procesados en el servidor. Los mensajes sólo para seguidores son entregados a tus seguidores y a los usuarios que son mencionados en ellos, mientras que los mensajes directos son entregados sólo a los usuarios mencionados en ellos; en muchos casos, eso significa que son entregados a diferentes servidores y las copias de esos mensajes quedan almacenadas allí. Hacemos el esfuerzo de buena fe para limitar el acceso a esos mensajes sólo a las cuentas autorizadas, pero otros servidores podrían no seguir estas pautas. Por lo tanto, es importante revisar los servidores a los cuales pertenecen tus seguidores. Podés activar una opción para aprobar y rechazar nuevos seguidores manualmente en la configuración de tu cuenta de Mastodon. Por favor, tené en mente que los operadores del servidor y de cualquier servidor receptor podría ver tales mensajes, y que los destinatarios podrías tomar capturas de pantalla, copiarlos o recompartirlos entre ellos. No compartas ninguna información sensible al usar Mastodon.
  • +
  • Dirección IP y otros metadatos: Cuando iniciás sesión, registramos tu dirección IP, así como el nombre de tu navegador web o programa/aplicación. Todas las sesiones registradas están disponibles para que la revisés y revoqués en la configuración de tu cuenta de Mastodon. La última dirección IP usada es almacenada por hasta 12 meses. También podríamos retener registros de servidor, los cuales incluyen la dirección IP de cada solicitud a nuestro servidor.

-

¿Para qué usamos tu información?

+

¿Para qué usamos esta información?

-

Toda la información que recolectamos de vos puede ser usada de las siguientes maneras:

+

Cualquier información que recolectamos de vos puede ser usada de las siguientes maneras:

    -
  • Para proporcionar la funcionalidad principal de Mastodon. Sólo podés interactuar con el contenido de otras cuentas y publicar tu propio contenido cuando hayás iniciado sesión. Por ejemplo, podés seguir a otras cuentas para ver sus mensajes combinados en tu propia línea temporal personalizada.
  • -
  • Para ayudar a la moderación de la comunidad, por ejemplo, comparando tu dirección IP con otras conocidas para determinar la evasión de prohibiciones u otras violaciones.
  • -
  • La dirección de correo electrónico que nos proporcionés podría usarse para enviarte información, notificaciones sobre otras cuentas que interactúen con tu contenido o para enviarte mensajes, así como para responder a consultas y/u otras solicitudes o preguntas.
  • +
  • Para proveer la funcionalidad central de Mastodon. Sólo podés interactuar con el contenido de otras cuentas y enviar tu propio contenido cuando iniciaste sesión. Por ejemplo, podrías seguir otras cuentas para ver sus mensajes combinados en tu propia línea temporal principal personalizada.
  • +
  • Para ayudar a la moderación de la comunidad, por ejemplo comparando tu dirección IP con otras conocidas, para determinar la evasión de expulsaciones u otras violaciones.
  • +
  • La dirección de correo electrónico que ofrecés puede ser usada para enviarte información, notificaciones sobre otras cuentas interactuando con tu contenido o enviándote mensajes, y responder a consultas y/u otras solicitudes o consultas.

¿Cómo protegemos tu información?

-

Implementamos una variedad de medidas de seguridad para mantener la seguridad de tu información personal cuando ingresás, enviás o accedés a tu información personal. Entre otras cosas, la sesión de tu navegador web, así como el tráfico entre sus aplicaciones y la API, están protegidos con SSL; y tu contraseña está protegida mediante un algoritmo unidireccional fuerte. Podés habilitar la autenticación de dos factores para obtener un acceso más seguro a tu cuenta.

+

Implementamos una variedad de medidas de seguridad para mantener la seguridad de tu información personal cuando ingresás, enviás o accedés a tu información personal. Entre otras cosas, la sesión de tu navegador web o programa/aplicación, así como el tráfico entre tus aplicaciones y la API, están aseguradas con SSL, y tu contraseña está cifrada usando un fuerte algoritmo de un solo sentido. Podés habilitar la autenticación de dos factores para fortalecer el acceso seguro a tu cuenta.


-

¿Cuál es nuestra política de retención de datos?

+

¿Cuál es nuestra política de retención?

-

Hacemos un esfuerzo de buena fe para:

+

Haremos el esfuerzo de buena fe para:

    -
  • Conservar los registros del servidor que contengan la dirección IP de todas las solicitudes a este servidor, en la medida en que se mantengan dichos registros, por no más de 90 días.
  • -
  • Conservar las direcciones IP asociadas a los usuarios registrados, por no más de 12 meses.
  • +
  • Retener los registros de servidor conteniendo las direcciones IP de todas las solicitudes a este servidor, por no más de 90 días.
  • +
  • Retener las direcciones IP asociadas a los usuarios registrados por no más de 12 meses.
-

Podés solicitar y descargar un archivo historial de tu contenido, incluyendo tus mensajes, archivos adjuntos de medios, avatar e imagen de cabecera.

+

Podés solicitar y descargar un archivo de tu contenido, incluyendo tus mensajes, archivos adjuntos de medios e imágenes de avatar y cabecera.

Podés eliminar tu cuenta de forma irreversible en cualquier momento.

@@ -1573,29 +1573,29 @@ es-AR:

¿Usamos cookies?

-

Sí. Las cookies son pequeños archivos que un sitio web o su proveedor de servicios transfiere a la unidad de almacenamiento de tu computadora a través de tu navegador web (si así lo permitís). Estas cookies permiten al sitio reconocer tu navegador web y, si tenés una cuenta registrada, asociarla con la misma.

+

Sí. Las cookies son diminutos archivos que un sitio web o su provedor de servicio transfiere a la unidad de almacenamiento de tu computadora a través de tu navegador web (si así lo permitís). Estas cookies habilitan al sitio web a reconocer a tu navegador web y, si tenés una cuenta registrada, asociarlo a tu cuenta registrada.

Usamos cookies para entender y guardar tu configuración para futuras visitas.


-

¿Revelamos alguna información a terceros?

+

¿Revelamos alguna información a entidades externas?

-

No vendemos, comercializamos ni transferimos de ninguna otra manera a terceros tu información personal identificable. Esto no incluye a los terceros de confianza que nos asisten en la operación de nuestro sitio, en la realización de nuestros negocios o en la prestación de servicios, siempre y cuando dichas partes acuerden mantener la confidencialidad de esta información. También podríamos liberar tu información cuando creamos que es apropiado para cumplir con la ley, hacer cumplir las políticas de nuestro sitio web, o proteger derechos, propiedad o seguridad, nuestros o de otros.

+

No vendemos, intercambiamos ni transferimos tu información personal identificable a entidades externas. Esto no incluye terceros de confianza quienes nos asisten en operar nuestro sitio web, dirigir nuestro negocio u ofrecerte servicios, mientras esos terceros acepten conservar esa información de modo confidencial. También podríamos liberar tu información cuando creemos que liberarla es apropiado para cumplir con la ley, enforzar nuestras políticas del sitio web, o proteger nuestros u otros derechos, propiedad o seguridad.

-

Tu contenido público puede ser descargado por otros servidores de la red. Tus mensajes públicos y tus mensajes sólo para seguidores se envían a los servidores donde residen tus seguidores, y los mensajes directos se envían a los servidores de los destinatarios, en la medida en que dichos seguidores o destinatarios residan en un servidor diferente.

+

Tu contenido público puede ser descargado por otros servidores en la red. Tus mensajes públicos y sólo para seguidores son entregados a los servidores en donde tus seguidores tienen cuenta, y los mensajes directos son entregados a los servidores de los destinatarios, es decir en los servidores en los que esos seguidores o destinatarios tengan su cuenta, diferentes de este servidor.

-

Cuando autorizás a una aplicación a usar tu cuenta, dependiendo del alcance de los permisos que aprobés, puede acceder a la información de tu perfil público, tu lista de seguimiento, tus seguidores, tus listas, todos tus mensajes y tus favoritos. Las aplicaciones nunca podrán acceder a tu dirección de correo electrónico o contraseña.

+

Cuando autorizás a un programa o aplicación a usar tu cuenta, dependiendo del alcance de los permisos que aprobés, podría acceder a tu información pública de perfil, tu lista de seguimientos, tus listas, todos tus mensajes y tus mensajes marcados como favoritos. Los programas o aplicaciones jamás pueden acceder a tu dirección de correo electrónico o contraseña.


-

Uso del sitio web por parte de niños

+

Sitio web usado por niños

-

Si este servidor está en la UE o en el EEE: Nuestro sitio web, productos y servicios están dirigidos a personas mayores de 16 años. Si tenés menos de 16 años, según los requisitos de la GDPR (Reglamento General de Protección de Datos) entonces, por favor, no usés este sitio web.

+

Si este servidor está ubicado geográficamente en la Unión Europea o en el Espacio Económico Europeo: Nuestro sitio web, productos y servicios son todos dirigios a personas de al menos 16 años de edad. Si tenés menos de 16 años, por los requerimientos del GDPR (Reglamento General de Protección de Datos) no usés este sitio web.

-

Si este servidor está en los EE.UU.: Nuestro sitio web, productos y servicios están dirigidos a personas que tienen al menos 13 años de edad. Si tenés menos de 13 años, según los requisitos de COPPA (Acta de Protección de la Privacidad en Línea de Niños [en inglés]) entonces, por favor, no usés este sitio web.

+

Si este servidor está ubicado geográficamente en los Estados Unidos de América: Nuestro sitio web, productos y servicios son todos dirigidos a personas de al menos 13 años de edad. Si tenés menos de 13 años, por los requerimientos de la COPPA (Ley de Protección de la Privacidad en Línea para Niños) no usés este sitio web.

-

Los requisitos legales pueden ser diferentes si este servidor está en otra jurisdicción.

+

Los requerimientos legales pueden ser diferente en este servidor si se encuentra geográficamente en otra jurisdicción.


@@ -1603,9 +1603,9 @@ es-AR:

Si decidimos cambiar nuestra política de privacidad, publicaremos dichos cambios en esta página.

-

Este documento es CC-BY-SA. Fue actualizado por última vez el 7 de marzo de 2018.

+

Este documento se publica bajo la licencia CC-BY-SA (Creative Commons - Atribución - CompartirIgual) y fue actualizado por última vez el 26 de mayo de 2022.

-

Adaptado originalmente desde la política de privacidad de Discourse.

+

Originalmente adaptado de la Política de privacidad de Discourse.

title: Términos del servicio y Políticas de privacidad de %{instance} themes: contrast: Alto contraste diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 5b1b04100..f396d6138 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -1342,7 +1342,7 @@ es-MX: no_account_html: "¿No tienes una cuenta? Puedes registrarte aqui" proceed: Proceder a seguir prompt: 'Vas a seguir a:' - reason_html: "¿¿Por qué es necesario este paso? %{instance} puede que no sea el servidor donde estás registrado, así que necesitamos redirigirte primero a tu servidor de origen." + reason_html: "¿Por qué es necesario este paso? %{instance} puede que no sea el servidor donde estás registrado, así que necesitamos redirigirte primero a tu servidor de origen." remote_interaction: favourite: proceed: Proceder a marcar como favorito @@ -1519,90 +1519,12 @@ es-MX: pinned: Toot fijado reblogged: retooteado sensitive_content: Contenido sensible + strikes: + errors: + too_late: Es demasiado tarde para apelar esta amonestación tags: does_not_match_previous_name: no coincide con el nombre anterior terms: - body_html: | -

Política de Privacidad

-

¿Qué información recogemos?

- -
    -
  • Información básica sobre su cuenta: Si se registra en este servidor, se le requerirá un nombre de usuario, una dirección de correo electrónico y una contraseña. Además puede incluir información adicional en el perfil como un nombre de perfil y una biografía, y subir una foto de perfil y una imagen de cabecera. El nombre de usuario, nombre de perfil, biografía, foto de perfil e imagen de cabecera siempre son visibles públicamente
  • -
  • Publicaciones, seguimiento y otra información pública: La lista de gente a la que sigue es mostrada públicamente, al igual que sus seguidores. Cuando publica un mensaje, la fecha y hora es almacenada, así como la aplicación desde la cual publicó el mensaje. Los mensajes pueden contener archivos adjuntos multimedia, como imágenes y vídeos. Las publicaciones públicas y no listadas están disponibles públicamente. Cuando destaca una entrada en su perfil, también es información disponible públicamente. Sus publicaciones son entregadas a sus seguidores, en algunos casos significa que son entregadas a diferentes servidores y las copias son almacenadas allí. Cuando elimina publicaciones, esto también se transfiere a sus seguidores. La acción de rebloguear o marcar como favorito otra publicación es siempre pública.
  • -
  • Publicaciones directas y sólo para seguidores: Todos los mensajes se almacenan y procesan en el servidor. Los mensajes sólo para seguidores se entregan a los seguidores y usuarios que se mencionan en ellos, y los mensajes directos se entregan sólo a los usuarios que se mencionan en ellos. En algunos casos significa que se entregan a diferentes servidores y que las copias se almacenan allí. Hacemos un esfuerzo de buena fe para limitar el acceso a esas publicaciones sólo a las personas autorizadas, pero otros servidores pueden no hacerlo. Por lo tanto, es importante revisar los servidores a los que pertenecen sus seguidores. Puede cambiar una opción para aprobar y rechazar nuevos seguidores manualmente en la configuración Por favor, tenga en cuenta que los operadores del servidor y de cualquier servidor receptor pueden ver dichos mensajes, y que los destinatarios pueden capturarlos, copiarlos o volver a compartirlos de alguna otra manera. No comparta ninguna información peligrosa en Mastodon.
  • -
  • Direcciones IP y otros metadatos: Al iniciar sesión, registramos la dirección IP desde la que se ha iniciado sesión, así como el nombre de la aplicación de su navegador. Todas las sesiones iniciadas están disponibles para su revisión y revocación en los ajustes. La última dirección IP utilizada se almacena hasta 12 meses. También podemos conservar los registros del servidor que incluyen la dirección IP de cada solicitud a nuestro servidor.
  • -
- -
- -

¿Para qué utilizamos su información?

- -

Toda la información que obtenemos de usted puede ser utilizada de las siguientes maneras:

- -
    -
  • Para proporcionar la funcionalidad principal de Mastodon. Sólo puedes interactuar con el contenido de otras personas y publicar tu propio contenido cuando estés conectado. Por ejemplo, puedes seguir a otras personas para ver sus mensajes combinados en tu propia línea de tiempo personalizada.
  • -
  • Para ayudar a la moderación de la comunidad, por ejemplo, comparando su dirección IP con otras conocidas para determinar la evasión de prohibiciones u otras violaciones.
  • -
  • La dirección de correo electrónico que nos proporcione podrá utilizarse para enviarle información, notificaciones sobre otras personas que interactúen con su contenido o para enviarle mensajes, así como para responder a consultas y/u otras solicitudes o preguntas.
  • -
- -
- -

¿Cómo protegemos su información?

- -

Implementamos una variedad de medidas de seguridad para mantener la seguridad de su información personal cuando usted ingresa, envía o accede a su información personal. Entre otras cosas, la sesión de su navegador, así como el tráfico entre sus aplicaciones y la API, están protegidos con SSL, y su contraseña está protegida mediante un algoritmo unidireccional fuerte. Puede habilitar la autenticación de dos factores para un acceso más seguro a su cuenta.

- -
- -

¿Cuál es nuestra política de retención de datos?

- -

Haremos un esfuerzo de buena fe para:

- -
    -
  • Conservar los registros del servidor que contengan la dirección IP de todas las peticiones a este servidor, en la medida en que se mantengan dichos registros, no más de 90 días.
  • -
  • Conservar las direcciones IP asociadas a los usuarios registrados no más de 12 meses.
  • -
- -

Puede solicitar y descargar un archivo de su contenido, incluidos sus mensajes, archivos adjuntos multimedia, foto de perfil e imagen de cabecera.

- -

Usted puede borrar su cuenta de forma irreversible en cualquier momento.

- -
- -

¿Utilizamos cookies?

- -

Sí. Las cookies son pequeños archivos que un sitio o su proveedor de servicios transfiere al disco duro de su ordenador a través de su navegador web (si usted lo permite). Estas cookies permiten al sitio reconocer su navegador y, si tiene una cuenta registrada, asociarla con su cuenta registrada.

- -

Utilizamos cookies para entender y guardar sus preferencias para futuras visitas.

- -
- -

¿Revelamos alguna información a terceros?

- -

No vendemos, comerciamos ni transferimos a terceros su información personal identificable. Esto no incluye a los terceros de confianza que nos asisten en la operación de nuestro sitio, en la realización de nuestros negocios o en la prestación de servicios, siempre y cuando dichas partes acuerden mantener la confidencialidad de esta información. También podemos divulgar su información cuando creamos que es apropiado para cumplir con la ley, hacer cumplir las políticas de nuestro sitio, o proteger nuestros u otros derechos, propiedad o seguridad.

- -

Su contenido público puede ser descargado por otros servidores de la red. Tus mensajes públicos y sólo para seguidores se envían a los servidores donde residen tus seguidores, y los mensajes directos se envían a los servidores de los destinatarios, en la medida en que dichos seguidores o destinatarios residan en un servidor diferente.

- -

Cuando usted autoriza a una aplicación a usar su cuenta, dependiendo del alcance de los permisos que usted apruebe, puede acceder a la información de su perfil público, su lista de seguimiento, sus seguidores, sus listas, todos sus mensajes y sus favoritos. Las aplicaciones nunca podrán acceder a su dirección de correo electrónico o contraseña.

- -
- -

Uso del sitio por parte de los niños

- -

Si este servidor está en la UE o en el EEE: Nuestro sitio, productos y servicios están dirigidos a personas mayores de 16 años. Si es menor de 16 años, según los requisitos de la GDPR (General Data Protection Regulation) no utilice este sitio.

- -

Si este servidor está en los EE.UU.: Nuestro sitio, productos y servicios están todos dirigidos a personas que tienen al menos 13 años de edad. Si usted es menor de 13 años, según los requisitos de COPPA (Children's Online Privacy Protection Act) no utilice este sitio.

- -

Los requisitos legales pueden ser diferentes si este servidor está en otra jurisdicción.

- -
- -

Cambios en nuestra Política de Privacidad

- -

Si decidimos cambiar nuestra política de privacidad, publicaremos esos cambios en esta página.

- -

Este documento es CC-BY-SA. Fue actualizado por última vez el 7 de marzo de 2018.

- -

Adaptado originalmente desde la política de privacidad de Discourse.

title: Términos del Servicio y Políticas de Privacidad de %{instance} themes: contrast: Alto contraste diff --git a/config/locales/es.yml b/config/locales/es.yml index 8abd8212f..fcab7856a 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -1342,7 +1342,7 @@ es: no_account_html: "¿No tienes una cuenta? Puedes registrarte aqui" proceed: Proceder a seguir prompt: 'Vas a seguir a:' - reason_html: "¿¿Por qué es necesario este paso? %{instance} puede que no sea el servidor donde estás registrado, así que necesitamos redirigirte primero a tu servidor de origen." + reason_html: "¿Por qué es necesario este paso? %{instance} puede que no sea el servidor donde estás registrado, así que necesitamos redirigirte primero a tu servidor de origen." remote_interaction: favourite: proceed: Proceder a marcar como favorito @@ -1527,85 +1527,52 @@ es: terms: body_html: |

Política de Privacidad

-

¿Qué información recogemos?

- -
    -
  • Información básica sobre su cuenta: Si se registra en este servidor, se le requerirá un nombre de usuario, una dirección de correo electrónico y una contraseña. Además puede incluir información adicional en el perfil como un nombre de perfil y una biografía, y subir una foto de perfil y una imagen de cabecera. El nombre de usuario, nombre de perfil, biografía, foto de perfil e imagen de cabecera siempre son visibles públicamente
  • -
  • Publicaciones, seguimiento y otra información pública: La lista de gente a la que sigue es mostrada públicamente, al igual que sus seguidores. Cuando publica un mensaje, la fecha y hora es almacenada, así como la aplicación desde la cual publicó el mensaje. Los mensajes pueden contener archivos adjuntos multimedia, como imágenes y vídeos. Las publicaciones públicas y no listadas están disponibles públicamente. Cuando destaca una entrada en su perfil, también es información disponible públicamente. Sus publicaciones son entregadas a sus seguidores, en algunos casos significa que son entregadas a diferentes servidores y las copias son almacenadas allí. Cuando elimina publicaciones, esto también se transfiere a sus seguidores. La acción de rebloguear o marcar como favorito otra publicación es siempre pública.
  • -
  • Publicaciones directas y sólo para seguidores: Todos los mensajes se almacenan y procesan en el servidor. Los mensajes sólo para seguidores se entregan a los seguidores y usuarios que se mencionan en ellos, y los mensajes directos se entregan sólo a los usuarios que se mencionan en ellos. En algunos casos significa que se entregan a diferentes servidores y que las copias se almacenan allí. Hacemos un esfuerzo de buena fe para limitar el acceso a esas publicaciones sólo a las personas autorizadas, pero otros servidores pueden no hacerlo. Por lo tanto, es importante revisar los servidores a los que pertenecen sus seguidores. Puede cambiar una opción para aprobar y rechazar nuevos seguidores manualmente en la configuración Por favor, tenga en cuenta que los operadores del servidor y de cualquier servidor receptor pueden ver dichos mensajes, y que los destinatarios pueden capturarlos, copiarlos o volver a compartirlos de alguna otra manera. No comparta ninguna información peligrosa en Mastodon.
  • -
  • Direcciones IP y otros metadatos: Al iniciar sesión, registramos la dirección IP desde la que se ha iniciado sesión, así como el nombre de la aplicación de su navegador. Todas las sesiones iniciadas están disponibles para su revisión y revocación en los ajustes. La última dirección IP utilizada se almacena hasta 12 meses. También podemos conservar los registros del servidor que incluyen la dirección IP de cada solicitud a nuestro servidor.
  • -
- -
- -

¿Para qué utilizamos su información?

- -

Toda la información que obtenemos de usted puede ser utilizada de las siguientes maneras:

- -
    -
  • Para proporcionar la funcionalidad principal de Mastodon. Sólo puedes interactuar con el contenido de otras personas y publicar tu propio contenido cuando estés conectado. Por ejemplo, puedes seguir a otras personas para ver sus mensajes combinados en tu propia línea de tiempo personalizada.
  • -
  • Para ayudar a la moderación de la comunidad, por ejemplo, comparando su dirección IP con otras conocidas para determinar la evasión de prohibiciones u otras violaciones.
  • -
  • La dirección de correo electrónico que nos proporcione podrá utilizarse para enviarle información, notificaciones sobre otras personas que interactúen con su contenido o para enviarle mensajes, así como para responder a consultas y/u otras solicitudes o preguntas.
  • -
- -
- -

¿Cómo protegemos su información?

- -

Implementamos una variedad de medidas de seguridad para mantener la seguridad de su información personal cuando usted ingresa, envía o accede a su información personal. Entre otras cosas, la sesión de su navegador, así como el tráfico entre sus aplicaciones y la API, están protegidos con SSL, y su contraseña está protegida mediante un algoritmo unidireccional fuerte. Puede habilitar la autenticación de dos factores para un acceso más seguro a su cuenta.

- -
- -

¿Cuál es nuestra política de retención de datos?

- -

Haremos un esfuerzo de buena fe para:

- -
    -
  • Conservar los registros del servidor que contengan la dirección IP de todas las peticiones a este servidor, en la medida en que se mantengan dichos registros, no más de 90 días.
  • -
  • Conservar las direcciones IP asociadas a los usuarios registrados no más de 12 meses.
  • -
- -

Puede solicitar y descargar un archivo de su contenido, incluidos sus mensajes, archivos adjuntos multimedia, foto de perfil e imagen de cabecera.

- -

Usted puede borrar su cuenta de forma irreversible en cualquier momento.

- -
- -

¿Utilizamos cookies?

- -

Sí. Las cookies son pequeños archivos que un sitio o su proveedor de servicios transfiere al disco duro de su ordenador a través de su navegador web (si usted lo permite). Estas cookies permiten al sitio reconocer su navegador y, si tiene una cuenta registrada, asociarla con su cuenta registrada.

- -

Utilizamos cookies para entender y guardar sus preferencias para futuras visitas.

- -
- -

¿Revelamos alguna información a terceros?

- -

No vendemos, comerciamos ni transferimos a terceros su información personal identificable. Esto no incluye a los terceros de confianza que nos asisten en la operación de nuestro sitio, en la realización de nuestros negocios o en la prestación de servicios, siempre y cuando dichas partes acuerden mantener la confidencialidad de esta información. También podemos divulgar su información cuando creamos que es apropiado para cumplir con la ley, hacer cumplir las políticas de nuestro sitio, o proteger nuestros u otros derechos, propiedad o seguridad.

- -

Su contenido público puede ser descargado por otros servidores de la red. Tus mensajes públicos y sólo para seguidores se envían a los servidores donde residen tus seguidores, y los mensajes directos se envían a los servidores de los destinatarios, en la medida en que dichos seguidores o destinatarios residan en un servidor diferente.

- -

Cuando usted autoriza a una aplicación a usar su cuenta, dependiendo del alcance de los permisos que usted apruebe, puede acceder a la información de su perfil público, su lista de seguimiento, sus seguidores, sus listas, todos sus mensajes y sus favoritos. Las aplicaciones nunca podrán acceder a su dirección de correo electrónico o contraseña.

- -
- -

Uso del sitio por parte de los niños

- -

Si este servidor está en la UE o en el EEE: Nuestro sitio, productos y servicios están dirigidos a personas mayores de 16 años. Si es menor de 16 años, según los requisitos de la GDPR (General Data Protection Regulation) no utilice este sitio.

- -

Si este servidor está en los EE.UU.: Nuestro sitio, productos y servicios están todos dirigidos a personas que tienen al menos 13 años de edad. Si usted es menor de 13 años, según los requisitos de COPPA (Children's Online Privacy Protection Act) no utilice este sitio.

- -

Los requisitos legales pueden ser diferentes si este servidor está en otra jurisdicción.

- -
- -

Cambios en nuestra Política de Privacidad

- -

Si decidimos cambiar nuestra política de privacidad, publicaremos esos cambios en esta página.

- -

Este documento es CC-BY-SA. Fue actualizado por última vez el 7 de marzo de 2018.

- -

Adaptado originalmente desde la política de privacidad de Discourse.

+

¿Qué información recogemos?

+
    +
  • Información básica sobre su cuenta: Si se registra en este servidor, se le requerirá un nombre de usuario, una dirección de correo electrónico y una contraseña. Además puede incluir información adicional en el perfil como un nombre de perfil y una biografía, y subir una foto de perfil y una imagen de cabecera. El nombre de usuario, nombre de perfil, biografía, foto de perfil e imagen de cabecera siempre son visibles públicamente
  • +
  • Publicaciones, seguimiento y otra información pública: La lista de gente a la que sigue es mostrada públicamente, al igual que sus seguidores. Cuando publica un mensaje, la fecha y hora es almacenada, así como la aplicación desde la cual publicó el mensaje. Los mensajes pueden contener archivos adjuntos multimedia, como imágenes y vídeos. Las publicaciones públicas y no listadas están disponibles públicamente. Cuando destaca una entrada en su perfil, también es información disponible públicamente. Sus publicaciones son entregadas a sus seguidores, en algunos casos significa que son entregadas a diferentes servidores y las copias son almacenadas allí. Cuando elimina publicaciones, esto también se transfiere a sus seguidores. La acción de rebloguear o marcar como favorito otra publicación es siempre pública.
  • +
  • Publicaciones directas y sólo para seguidores: Todos los mensajes se almacenan y procesan en el servidor. Los mensajes sólo para seguidores se entregan a los seguidores y usuarios que se mencionan en ellos, y los mensajes directos se entregan sólo a los usuarios que se mencionan en ellos. En algunos casos significa que se entregan a diferentes servidores y que las copias se almacenan allí. Hacemos un esfuerzo de buena fe para limitar el acceso a esas publicaciones sólo a las personas autorizadas, pero otros servidores pueden no hacerlo. Por lo tanto, es importante revisar los servidores a los que pertenecen sus seguidores. Puede cambiar una opción para aprobar y rechazar nuevos seguidores manualmente en la configuración Por favor, tenga en cuenta que los operadores del servidor y de cualquier servidor receptor pueden ver dichos mensajes, y que los destinatarios pueden capturarlos, copiarlos o volver a compartirlos de alguna otra manera. No comparta ninguna información sensible en Mastodon.
  • +
  • Direcciones IP y otros metadatos: Al iniciar sesión, registramos la dirección IP desde la que se ha iniciado sesión, así como el nombre de la aplicación de su navegador. Todas las sesiones iniciadas están disponibles para su revisión y revocación en los ajustes. La última dirección IP utilizada se almacena hasta 12 meses. También podemos conservar los registros del servidor que incluyen la dirección IP de cada solicitud a nuestro servidor.
  • +
+
+

¿Para qué utilizamos su información?

+

Toda la información que obtenemos de usted puede ser utilizada de las siguientes maneras:

+
    +
  • Para proporcionar la funcionalidad principal de Mastodon. Sólo puedes interactuar con el contenido de otras personas y publicar tu propio contenido cuando estés conectado. Por ejemplo, puedes seguir a otras personas para ver sus mensajes combinados en tu propia línea de tiempo personalizada.
  • +
  • Para ayudar a la moderación de la comunidad, por ejemplo, comparando su dirección IP con otras conocidas para determinar la evasión de prohibiciones u otras violaciones.
  • +
  • La dirección de correo electrónico que nos proporcione podrá utilizarse para enviarle información, notificaciones sobre otras personas que interactúen con su contenido o para enviarle mensajes, así como para responder a consultas y/u otras solicitudes o preguntas.
  • +
+
+

¿Cómo protegemos su información?

+

Implementamos una variedad de medidas de seguridad para mantener la seguridad de su información personal cuando usted ingresa, envía o accede a su información personal. Entre otras cosas, la sesión de su navegador, así como el tráfico entre sus aplicaciones y la API, están protegidos con SSL, y su contraseña está protegida mediante un algoritmo unidireccional fuerte. Puede habilitar la autenticación de dos factores para un acceso más seguro a su cuenta.

+
+

¿Cuál es nuestra política de retención de datos?

+

Haremos un esfuerzo de buena fe para:

+
    +
  • Conservar los registros del servidor que contengan la dirección IP de todas las peticiones a este servidor, en la medida en que se mantengan dichos registros, no más de 90 días.
  • +
  • Conservar las direcciones IP asociadas a los usuarios registrados no más de 12 meses.
  • +
+

Puede solicitar y descargar un archivo de su contenido, incluidos sus mensajes, archivos adjuntos multimedia, foto de perfil e imagen de cabecera.

+

Usted puede borrar su cuenta de forma irreversible en cualquier momento.

+
+

¿Utilizamos cookies?

+

Sí. Las cookies son pequeños archivos que un sitio o su proveedor de servicios transfiere al disco duro de su ordenador a través de su navegador web (si usted lo permite). Estas cookies permiten al sitio reconocer su navegador y, si tiene una cuenta registrada, asociarla con su cuenta registrada.

+

Utilizamos cookies para entender y guardar sus preferencias para futuras visitas.

+
+

¿Revelamos alguna información a terceros?

+

No vendemos, comerciamos ni transferimos a terceros su información personal identificable. Esto no incluye a los terceros de confianza que nos asisten en la operación de nuestro sitio, en la realización de nuestros negocios o en la prestación de servicios, siempre y cuando dichas partes acuerden mantener la confidencialidad de esta información. También podemos divulgar su información cuando creamos que es apropiado para cumplir con la ley, hacer cumplir las políticas de nuestro sitio, o proteger nuestros u otros derechos, propiedad o seguridad.

+

Su contenido público puede ser descargado por otros servidores de la red. Tus mensajes públicos y sólo para seguidores se envían a los servidores donde residen tus seguidores, y los mensajes directos se envían a los servidores de los destinatarios, en la medida en que dichos seguidores o destinatarios residan en un servidor diferente.

+

Cuando usted autoriza a una aplicación a usar su cuenta, dependiendo del alcance de los permisos que usted apruebe, puede acceder a la información de su perfil público, su lista de seguimiento, sus seguidores, sus listas, todos sus mensajes y sus favoritos. Las aplicaciones nunca podrán acceder a su dirección de correo electrónico o contraseña.

+
+

Uso del sitio por parte de los niños

+

Si este servidor está en la UE o en el EEE: Nuestro sitio, productos y servicios están dirigidos a personas mayores de 16 años. Si es menor de 16 años, según los requisitos de la GDPR (General Data Protection Regulation) no utilice este sitio.

+

Si este servidor está en los EE.UU.: Nuestro sitio, productos y servicios están todos dirigidos a personas que tienen al menos 13 años de edad. Si usted es menor de 13 años, según los requisitos de COPPA (Children's Online Privacy Protection Act) no utilice este sitio.

+

Los requisitos legales pueden ser diferentes si este servidor está en otra jurisdicción.

+
+

Cambios en nuestra Política de Privacidad

+

Si decidimos cambiar nuestra política de privacidad, publicaremos esos cambios en esta página.

+

Este documento es CC-BY-SA. Fue actualizado por última vez el 26 de mayo de 2022.

+

Adaptado originalmente desde la política de privacidad de Discourse.

title: Términos del Servicio y Políticas de Privacidad de %{instance} themes: contrast: Alto contraste diff --git a/config/locales/eu.yml b/config/locales/eu.yml index bc515fe5e..096dd276b 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -1417,87 +1417,6 @@ eu: tags: does_not_match_previous_name: ez dator aurreko izenarekin bat terms: - body_html: | -

Pribatutasun politika

-

Zer informazio biltzen dugu?

- -
    -
  • Kontuaren oinarrizko informazioa: Zerbitzari honetan izena ematen baduzu, erabiltzaile-izena, e-posta helbidea eta pasahitza sartzea galdetu dakizuke. Profilean bestelako informazioa sartu dezakezu esaterako pantaila-izena eta biografia, eta profileko eta goiburuko irudiak igo ditzakezu. Erabiltzaile-izena, pantaila-izena, biografia, profileko irudia eta goiburuko irudia beti dira publikoak.
  • -
  • Bidalketak, jarraitzea eta beste informazioa: Jarraitzen duzun jendearen zerrenda publikoa da, baita zure jarraitzaileena ere. Bidalketa bat argitaratzean, data eta ordua eta mezua bidaltzeko erabilitako aplikazioa gordetzen dira. Bidalketek eranskinak izan ditzakete, esaterako irudiak eta bideoak. Bidalketa publikoak eta zerrendatu gabeak publikoki ikusi daitezke. Zure profilean bidalketa bat sustatzen duzunean, informazio hori ere publikoki eskuragarri dago. Zure bidalketak zure jarraitzaileei bidaltzen zaizkie, kasu batzuetan honek esan nahi du beste zerbitzari batzuetara bidaltzen dela eta han kopiak gordetzen dituztela. Bidalketak ezabatzen dituzunean, hori ere zure jarraitzaileei bidaltzen zaie. Beste bidalketa batzuk zabaltzea edo gogoko izatea beti da informazio publikoa.
  • -
  • Mezu zuzenak eta soilik jarraitzaileentzako bidalketak: Bidalketa guztiak zerbitzarian gorde eta prozesatzen dira. Soilik jarraitzaileentzako diren bidalketak zure jarraitzaileei bidaltzen zaizkie eta bertan aipatutako erabiltzaileei. Mezu zuzenak soilik aipatutako erabiltzaileei bidaltzen zaizkie. Honek esan nahi du kasu batzuetan beste zerbitzari batzuetara bidaltzen dela mezua eta han kopiak gordetzen direla. Borondate oneko ahalegin bat egiten dugu mezuok soilik baimena duten pertsonek ikus ditzaten, baina beste zerbitzariek agian ez. Hortaz, zure jarraitzaileen zerbitzaria zein den egiaztatzea garrantzitsua da. Jarraitzaileak eskuz onartu eta ukatzeko aukera aldatu dezakezu. Kontuan izan zerbitzariaren operadoreak eta mezua jasotzen duen edozein zerbitzariko operadoreek mezuok ikus ditzaketela eta edonork atera dezakeela pantaila argazki bat, kopiatu edo beste modu batean partekatu.Ez partekatu informazio arriskutsua Mastodon bidez.
  • -
  • IP-ak eta bestelako meta-datuak: Saioa hasten duzunean, zure IP helbidea gordetzen dugu, eta erabiltzen duzun nabigatzaile edo aplikazioa. Hasitako saio guztiak zuk ikusteko moduan daude eta ezarpenetan indargabetu ditzakezu. Erabilitako azken IP helbidea 12 hilabetez gordetzen da. Gure zerbitzariak jasotako eskari guztiak eta IP-a duten zerbitzariko egunkariak gorde genitzake.
  • -
- -
- -

Zertarako erabiltzen dugu zure informazioa?

- -

Biltzen dugun informazio guztia honela erabiltzen da:

- -
    -
  • Mastodon zerbitzuko funtzio nagusietarako. Beste pertsonen edukiarekin harremanetan sartzeko edo zure edukia argitaratzeko saioa hasi behar duzu. Adibidez, beste pertsona batzuk jarraitu ditzakezu zure denbora-lerro pertsonalizatu bat izateko.
  • -
  • Komunitatearen moderazioari laguntzeko, esaterako zure IP-a ezagutzen ditugun beste batzuekin alderatu dezakegu, debekuak ekiditea edo bestelako arau-urraketak eragozteko.
  • -
  • Emandako e-posta helbidea informazioa bidaltzeko erabili genezake, beste pertsonek zure edukiekin harremanetan jartzean jakinarazteko, edo mezu bat bidaltzen dizutenean, galderak erantzutean eta bestelako eskari eta galderetarako.
  • -
- -
- -

Nola babesten dugu zure informazioa?

- -

Hainbat segurtasun neurri hartzen ditugu zure informazio pertsonalaren segurtasuna babesteko, informazio pertsonala sartzen duzunean, bidaltzen duzunean edo atzitzen duzunean. Besteak beste zure nabigatzailearen saioa eta zure aplikazioen eta API-aren arteko trafikoa, SSL bidez babesten da, eta zure pasahitza alde bateko algoritmo sendo batekin hash-eatzen da. Bi faktoreetako autentifikazioa gaitu dezakezu zure kontuaren segurtasuna areagotzeko.

- -
- -

Zein da gure datuak biltzeko politika?

- -

Borondate oneko ahalegina egingo dugu honetarako:

- -
    -
  • Zerbitzari honetara egindako eskari guztien egunkaria IP helbidearekin, 90 egunez gehienez.
  • -
  • Izena eman duten erabiltzaileen eskariekin lotutako IP helbideak, 12 hilabetez gehienez..
  • -
- -

Zure edukiaren kopia duen artxibo bat eskatu eta deskargatu dezakezu, bertan mezuak multimedia eranskinak, profileko irudia eta goiburuko irudia daude.

- -

Zure kontua behin betirako ezabatu dezakezu nahi duzunean.

- -
- -

Cookie-ak erabiltzen ditugu?

- -

Bai. Cookie-ak gune edo zerbitzu hornitzaile baten zure ordenagailuko disko gogorrera bidaltzen dituen fitxategi txikiak dira (zuk baimentzen baduzu). Cookie hauek guneari zure nabigatzailea identifikatzea, konturik duzun jakin, eta erregistratutako kontuarekin erlazionatzea ahalbidetzen diote.

- -

Cookie-ak erabiltzen ditugu zure hobespenak ulertu eta hurrengo saioetarako gordetzeko

- -
- -

Informazioa kanpoko inorekin partekatzen dugu?

- -

Ez dugu identifikatu zaitzakeen informazio pertsonala saltzen, trukatzen edo kanpora bidaltzen. Salbuespena konfiantzako hirugarrengoak dira, gunea martxan izaten laguntzen digutenak, negozioa aurrera eramateko aholkua ematen digutenak edo zuri zerbitzua ematen laguntzen digutenak, hauek informazioaren konfidentzialtasuna errespetatzea onartzen dutenean. Agian legearekin betetzeko beharrezkoa den informazioa ere eman genezake, gunearen politika indarrean jartzeko behar dena, edo gure eskubideak, jabetzak, edo segurtasuna babesteko beharrezkoa dena.

- -

Zure eduki publikoak sareko beste zerbitzariek deskargatu dezakete. Zure bidalketa publikoak eta soilik jarraitzaileentzat diren mezuak zure jarraitzaileen zerbitzarietara bidaltzen dira, jarraitzaile edo hartzaile horiek beste zerbitzari batean badute kontua.

- -

Aplikazio bati zure kontua erabiltzeko baimena ematen diozunean, onartutako baimen esparruaren arabera, zure profileko informazio publikoa atzitu lezake, zuk jarraitutakoen zerrenda, zure jarraitzaileen zerrenda, zure bidalketa guztiak eta zure gogokoak. Aplikazioen ezin dute inoiz zure e-posta helbidea edo pasahitza atzitu.

- -
- -

Umeek gunea erabiltzea

- -

Zerbitzari hau Europar Batasunean edo Europako Ekonomia-Eremuan badago: Gure gunea, produktua eta zerbitzuak 16 urte edo gehiago dituztenei zuzenduta daude. 16 urte baino gazteagoa bazara, GDPR legearen arabera ezin duzu gune hau erabili (General Data Protection Regulation)

- -

Zerbitzari hau Amerikako Estatu Batuetan badago: Gure gunea, produktua eta zerbitzuak 13 urte edo gehiago dituztenei zuzenduta daude. 13 urte baino gazteagoa bazara, COPPA legearen arabera ezin duzu gune hau erabili (Children's Online Privacy Protection Act).

- -

Zerbitzari hau beste eremu legal batean badago, legearen eskariak desberdinak izan daitezke.

- -
- -

Aldaketak gure pribatutasun politikan

- -

Gure pribatutasun politika aldatzea erabakitzen badugu, aldaketak orri honetan argitaratuko ditugu.

- -

Dokumentu honek CC-BY-SA lizentzia du. Eta azkenekoz 2018ko martxoak 7an eguneratu zen

- -

Jatorrian Discourse sarearen pribatutasun politikatik moldatua.

title: "%{instance} instantziaren erabilera baldintzak eta pribatutasun politika" themes: contrast: Mastodon (Kontraste altua) diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 05a1ce434..1c7b9f9cc 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -105,12 +105,12 @@ fa: avatar: تصویر نمایه by_domain: دامین change_email: - changed_msg: نشانی ایمیل این حساب با موفقیت تغییر کرد! - current_email: ایمیل کنونی - label: تغییر نشانی ایمیل - new_email: ایمیل تازه - submit: تغییر ایمیل - title: تغییر ایمیل برای %{username} + changed_msg: نشانی رایانامهٔ این حساب با موفقیت تغییر کرد! + current_email: رایانامهٔ کنونی + label: تغییر رایانامه + new_email: رایانامهٔ جدید + submit: تغییر رایانامه + title: تغییر رایانامه برای %{username} confirm: تأیید confirmed: تأیید شد confirming: تأیید @@ -126,8 +126,8 @@ fa: display_name: نام نمایشی domain: دامنه edit: ویرایش - email: ایمیل - email_status: وضعیت ایمیل + email: رایانامه + email_status: وضعیت رایانامه enable: به کار انداختن enable_sign_in_token_auth: به کار انداختن تأیید هویت ژتون رایانامه‌ای enabled: به کار افتاده @@ -179,8 +179,8 @@ fa: removed_header_msg: تصویر سرایند %{username} با موفّقیت برداشته شد resend_confirmation: already_confirmed: این کاربر قبلا تایید شده است - send: ایمیل تایید را دوباره بفرستید - success: ایمیل تایید با موفقیت ارسال شد! + send: ارسال دوبارهٔ رایانامهٔ تأیید + success: رایانامه تأیید با موفقیت ارسال شد! reset: بازنشانی reset_password: بازنشانی رمز resubscribe: اشتراک دوباره @@ -212,9 +212,9 @@ fa: suspension_irreversible: داده‌های این حساب به صورت بی‌بازگشت حذف شد. می‌توانید برای قابل استفاده کردنش، آن را نامعلّق کنید، ولی این کار هیچ داده‌ای را که از پیش داده، برنخواهد گرداند. suspension_reversible_hint_html: حساب معلّق شد و داده‌ها به صورت کامل در %{date} برداشته خواهند شد. تا آن زمان، حساب می‌تواند بی هیچ عوارضی بازگردانده شود. اگر می‌خواهید فوراً همهٔ داده‌های حساب را بردارید، می‌توانید در پایین این کار را بکنید. title: حساب‌ها - unblock_email: رفع مسدودیت نشانی ایمیل - unblocked_email_msg: مسدودیت نشانی ایمیل %{username} با موفقیت رفع شد - unconfirmed_email: ایمیل تأییدنشده + unblock_email: رفع مسدودیت نشانی رایانامه + unblocked_email_msg: مسدودیت نشانی رایانامهٔ %{username} با موفقیت رفع شد + unconfirmed_email: رایانامهٔ تأیید نشده undo_sensitized: بازگردانی حساس undo_silenced: واگردانی بی‌صداکردن undo_suspension: واگردانی تعلیق @@ -270,7 +270,7 @@ fa: silence_account: خموشی حساب suspend_account: تعلیق حساب unassigned_report: رفع واگذاری گزارش - unblock_email_account: رفع مسدودیت ایمیل + unblock_email_account: رفع مسدودیت رایانامه unsensitive_account: برداشتن علامت رسانه در حسابتان به عنوان حساس unsilence_account: رفع خموشی حساب unsuspend_account: رفع تعلیق حساب @@ -321,7 +321,7 @@ fa: silence_account_html: "%{name} حساب %{target} را محدود کرد" suspend_account_html: "%{name} حساب %{target} را تعلیق کرد" unassigned_report_html: "%{name} گزارش %{target} را از حالت محول شده خارج کرد" - unblock_email_account_html: "%{name} نشانی ایمیل %{target} را رفع مسدودیت کرد" + unblock_email_account_html: "%{name} نشانی رایانامهٔ %{target} را رفع مسدودیت کرد" unsensitive_account_html: "%{name} علامت حساس رسانهٔ %{target} را برداشت" unsilence_account_html: "%{name} محدودیت حساب %{target} را برداشت" unsuspend_account_html: "%{name} حساب %{target} را از تعلیق خارج کرد" @@ -449,7 +449,7 @@ fa: view: دیدن مسدودسازی دامنه email_domain_blocks: add_new: افزودن تازه - created_msg: مسدودسازی دامین ایمیل با موفقیت ساخته شد + created_msg: دامنهٔ رایانامه با موفقیت مسدود شد delete: پاک‌کردن dns: types: @@ -457,8 +457,8 @@ fa: domain: دامین new: create: ساختن مسدودسازی - title: مسدودسازی دامین ایمیل تازه - title: مسدودسازی دامین‌های ایمیل + title: مسدودسازی دامنهٔ رایانامهٔ جدید + title: دامنه‌های رایانامهٔ مسدود شده follow_recommendations: description_html: "پیشنهادات پیگیری به کاربران جدید کک می‌کند تا سریع‌تر محتوای جالب را پیدا کنند. زمانی که کاربری هنوز به اندازه کافی با دیگران تعامل نداشته است تا پیشنهادات پیگیری شخصی‌سازی‌شده دریافت کند، این حساب‌ها را به جای آن فهرست مشاهده خواهد کرد. این حساب‌ها به صورت روزانه و در ترکیب با بیشتری تعاملات و بالاترین دنبال‌کنندگان محلی برای یک زبان مشخص بازمحاسبه می‌شوند." language: برای زبان @@ -618,7 +618,7 @@ fa: desc_html: نام‌های کاربری را با ویرگول از هم جدا کنید. این حساب‌ها تضمین می‌شوند که در پیشنهادهای پی‌گیری نشان داده شوند title: پیگیری‌های پیش‌فرض برای کاربران تازه contact_information: - email: ایمیل کاری + email: رایانامهٔ تجاری username: نام کاربری custom_css: desc_html: ظاهر ماستودون را با CSS-ای که در همهٔ صفحه‌ها جاسازی می‌شود تغییر دهید @@ -674,13 +674,13 @@ fa: desc_html: نمایش علامت همکار روی صفحهٔ کاربر title: نمایش علامت همکار site_description: - desc_html: معرفی کوتاهی دربارهٔ رابط برنامه‌نویسی کاربردی. دربارهٔ این که چه چیزی دربارهٔ این سرور ماستدون ویژه است یا هر چیز مهم دیگری بنویسید. می‌توانید HTML بنویسید، به‌ویژه <a> و <em>. + desc_html: معرفی کوتاهی دربارهٔ رابط برنامه‌نویسی کاربردی. دربارهٔ این که چه چیزی دربارهٔ این کارساز ماستودون ویژه است یا هر چیز مهم دیگری بنویسید. می‌توانید HTML بنویسید، به‌ویژه <a> و <em>. title: دربارهٔ این سرور site_description_extended: desc_html: جای خوبی برای نوشتن سیاست‌های کاربری، قانون‌ها، راهنماها، و هر چیزی که ویژهٔ این سرور است. تگ‌های HTML هم مجاز است title: اطلاعات تکمیلی سفارشی site_short_description: - desc_html: روی نوار کناری و همچنین به عنوان فرادادهٔ صفحه‌ها نمایش می‌یابد. در یک بند توضیح دهید که ماستدون چیست و چرا این سرور با بقیه فرق دارد. + desc_html: روی نوار کناری و همچنین به عنوان فرادادهٔ صفحه‌ها نمایش می‌یابد. در یک بند توضیح دهید که ماستودون چیست و چرا این کارساز با بقیه فرق دارد. title: توضیح کوتاه دربارهٔ سرور site_terms: desc_html: می‌توانید سیاست رازداری، شرایط استفاده، یا سایر مسائل قانونی را به دلخواه خود بنویسید. تگ‌های HTML هم مجاز است @@ -950,7 +950,7 @@ fa: content: شرمنده، یک چیزی از سمت ما اشتباه شده. title: این صفحه درست نیست '503': این صفحه به خاطر یک مشکل موقت در کارساز در دسترس نیست. - noscript_html: برای استفاده از نسخهٔ تحت وب ماستودون، لطفاً جاوااسکریپت را فعال کنید. یا به جایش می‌توانید یک اپ ماستدون را به‌کار ببرید. + noscript_html: برای استفاده از نسخهٔ تحت وب ماستودون، لطفاً جاوااسکریپت را فعال کنید. یا به جایش می‌توانید یک کارهٔ ماستودون را به کار ببرید. existing_username_validator: not_found: کاربری با این نام کاربری در این کارساز پیدا نشد not_found_multiple: "%{usernames} پیدا نشد" @@ -1384,87 +1384,6 @@ fa: tags: does_not_match_previous_name: با نام پیشین مطابق نیست terms: - body_html: | -

سیاست رازداری

-

What information do we collect?

- -
    -
  • Basic account information: If you register on this server, you may be asked to enter a username, an e-mail address and a password. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly.
  • -
  • Posts, following and other public information: The list of people you follow is listed publicly, the same is true for your followers. When you submit a message, the date and time is stored as well as the application you submitted the message from. Messages may contain media attachments, such as pictures and videos. Public and unlisted posts are available publicly. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public.
  • -
  • Direct and followers-only posts: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. Please keep in mind that the operators of the server and any receiving server may view such messages, and that recipients may screenshot, copy or otherwise re-share them. Do not share any dangerous information over Mastodon.
  • -
  • IPs and other metadata: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server.
  • -
- -
- -

What do we use your information for?

- -

Any of the information we collect from you may be used in the following ways:

- -
    -
  • To provide the core functionality of Mastodon. You can only interact with other people's content and post your own content when you are logged in. For example, you may follow other people to view their combined posts in your own personalized home timeline.
  • -
  • To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations.
  • -
  • The email address you provide may be used to send you information, notifications about other people interacting with your content or sending you messages, and to respond to inquiries, and/or other requests or questions.
  • -
- -
- -

How do we protect your information?

- -

We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL, and your password is hashed using a strong one-way algorithm. You may enable two-factor authentication to further secure access to your account.

- -
- -

What is our data retention policy?

- -

We will make a good faith effort to:

- -
    -
  • Retain server logs containing the IP address of all requests to this server, in so far as such logs are kept, no more than 90 days.
  • -
  • Retain the IP addresses associated with registered users no more than 12 months.
  • -
- -

You can request and download an archive of your content, including your posts, media attachments, profile picture, and header image.

- -

You may irreversibly delete your account at any time.

- -
- -

Do we use cookies?

- -

Yes. Cookies are small files that a site or its service provider transfers to your computer's hard drive through your Web browser (if you allow). These cookies enable the site to recognize your browser and, if you have a registered account, associate it with your registered account.

- -

We use cookies to understand and save your preferences for future visits.

- -
- -

Do we disclose any information to outside parties?

- -

We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety.

- -

Your public content may be downloaded by other servers in the network. Your public and followers-only posts are delivered to the servers where your followers reside, and direct messages are delivered to the servers of the recipients, in so far as those followers or recipients reside on a different server than this.

- -

When you authorize an application to use your account, depending on the scope of permissions you approve, it may access your public profile information, your following list, your followers, your lists, all your posts, and your favourites. Applications can never access your e-mail address or password.

- -
- -

Site usage by children

- -

If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site.

- -

If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site.

- -

Law requirements can be different if this server is in another jurisdiction.

- -
- -

Changes to our Privacy Policy

- -

If we decide to change our privacy policy, we will post those changes on this page.

- -

This document is CC-BY-SA. It was last updated March 7, 2018.

- -

Originally adapted from the Discourse privacy policy.

title: شرایط استفاده و سیاست رازداری %{instance} themes: contrast: ماستودون (سایه‌روشن بالا) diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 3fcd67bb2..109fd6849 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -1522,87 +1522,6 @@ fr: tags: does_not_match_previous_name: ne correspond pas au nom précédent terms: - body_html: | -

Politique de confidentialité

-

Quelles informations collectons-nous ?

- -
    -
  • Informations de base sur votre compte : si vous vous inscrivez sur ce serveur, il vous sera demandé de rentrer un identifiant, une adresse électronique et un mot de passe. Vous pourrez également ajouter des informations additionnelles sur votre profil, telles qu’un nom public et une biographie, ainsi que téléverser une image de profil et une image d’en-tête. Vos identifiant, nom public, biographie, image de profil et image d’en-tête seront toujours affichés publiquement.
  • -
  • Posts, liste d’abonnements et autres informations publiques : la liste de vos abonnements ainsi que la liste de vos abonné·e·s sont publiques. Quand vous postez un message, la date et l’heure d’envoi ainsi que le nom de l’application utilisée pour sa transmission sont enregistré·e·s. Des médias, tels que des images ou des vidéos, peuvent être joints aux messages. Les posts publics et non listés sont affichés publiquement. Quand vous mettez en avant un post sur votre profil, ce post est également affiché publiquement. Vos messages sont délivrés à vos abonné·e·s, ce qui, dans certains cas, signifie qu’ils sont délivrés à des serveurs tiers et que ces derniers en stockent une copie. Quand vous supprimez un post, il est probable que l'action soit aussi délivrée à vos abonné·e·s. Partager un message ou le marquer comme favori est toujours une action publique.
  • -
  • Posts directs et abonné·e·s uniquement : tous les posts sont stockés et traités par le serveur. Les messages abonné·e·s uniquement ne sont transmis qu’à vos abonné·e·s et aux personnes mentionnées dans le corps du message, tandis que les messages directs ne sont transmis qu’aux personnes mentionnées. Dans certains cas, cela signifie qu’ils sont délivrés à des serveurs tiers et que ces derniers en stockent une copie. Nous faisons un effort de bonne foi pour en limiter l’accès uniquement aux personnes autorisées, mais ce n’est pas nécessairement le cas des autres serveurs. Il est donc très important que vous vérifiiez les serveurs auxquels appartiennent vos abonné·e·s. Il vous est possible d’activer une option dans les paramètres afin d’approuver et de rejeter manuellement les nouveaux·lles abonné·e·s. Gardez s’il vous plaît en mémoire que les opérateur·rice·s du serveur ainsi que celles et ceux de n’importe quel serveur récepteur peuvent voir ces messages et qu’il est possible pour les destinataires de faire des captures d’écran, de copier et plus généralement de repartager ces messages. Ne partagez aucune information sensible à l’aide de Mastodon !
  • -
  • IP et autres métadonnées : quand vous vous connectez, nous enregistrons votre adresse IP ainsi que le nom de votre navigateur web. Toutes les sessions enregistrées peuvent être consultées dans les paramètres, afin que vous puissiez les surveiller et éventuellement les révoquer. La dernière adresse IP utilisée est conservée pour une durée de 12 mois. Nous sommes également susceptibles de conserver les journaux du serveur, ce qui inclut l’adresse IP de chaque requête reçue.
  • -
- -
- -

Que faisons-nous des informations que nous collectons ?

- -

Toutes les informations que nous collectons sur vous peuvent être utilisées des manières suivantes :

- -
    -
  • pour vous fournir les fonctionnalités de base de Mastodon. Vous ne pouvez interagir avec le contenu des autres et poster votre propre contenu que lorsque vous êtes connecté·e. Par exemple, vous pouvez vous abonner à plusieurs autres comptes pour voir l’ensemble de leurs posts dans votre fil d’accueil personnalisé.
  • -
  • pour aider à la modération de la communauté : par exemple, comparer votre adresse IP avec d’autres afin de déterminer si un bannissement a été contourné ou si une autre violation aux règles a été commise.
  • -
  • l’adresse électronique que vous nous avez fournie peut être utilisée pour vous envoyer des informations, des notifications lorsque d’autres personnes interagissent avec votre contenu ou vous envoient des messages, pour répondre à des demandes de votre part ainsi que pour toutes autres requêtes ou questions.
  • -
- -
- -

Comment protégeons-nous vos informations ?

- -

Nous mettons en œuvre une variété de mesures de sécurité afin de garantir la sécurité de vos informations personnelles quand vous les saisissez, les soumettez et les consultez. Entre autres choses, votre session de navigation ainsi que le trafic entre votre application et l’API sont sécurisés à l’aide de TLS ; tandis que votre mot de passe est haché en utilisant un puissant algorithme à sens unique. Vous pouvez également activer l’authentification à deux facteurs pour sécuriser encore plus l’accès à votre compte.

- -
- -

Quelle est notre politique de conservation des données ?

- -

Nous ferons un effort de bonne foi :

- -
    -
  • pour ne pas conserver plus de 90 jours les journaux systèmes contenant les adresses IP de toutes les requêtes reçues par ce serveur.
  • -
  • pour ne pas conserver plus de 12 mois les adresses IP associées aux utilisateur·ice·s enregistré·e·s.
  • -
- -

Vous pouvez demander une archive de votre contenu, incluant vos posts, vos médias joints, votre image de profil et votre image d’en-tête.

- -

Vous pouvez, à n’importe quel moment, supprimer votre compte de manière définitive.

- -
- -

Utilisons-nous des témoins de connexion ?

- -

Oui. Les témoins de connexion sont de petits fichiers qu’un site ou un service transfère sur le disque dur de votre ordinateur via votre navigateur web (si vous l’avez autorisé). Ces témoins permettent au site de reconnaître votre navigateur et, dans le cas où vous possédez un compte, de vous associer avec ce dernier.

- -

Nous utilisons les témoins de connexion comme un moyen de comprendre et de nous souvenir de vos préférences pour vos prochaines visites.

- -
- -

Divulguons-nous des informations à des tiers ?

- -

Nous ne vendons, n’échangeons ou ne transférons d’une quelconque manière que ce soit des informations permettant de vous identifier personnellement. Cela n’inclut pas les tiers de confiance qui nous aident à faire fonctionner ce site, à conduire nos activités commerciales ou à vous servir, du moment qu’ils acceptent de garder ces informations confidentielles. Nous sommes également susceptibles de partager vos informations quand nous pensons que cela est nécessaire pour nous conformer à la loi, pour faire respecter les règles de notre site, ainsi que pour défendre nos droits, notre propriété, notre sécurité, ou ceux d’autres personnes.

- -

Votre contenu public peut être téléchargé par d’autres serveurs du réseau. Dans le cas où vos abonné·e·s et vos destinataires résideraient sur des serveurs différents du vôtre, vos posts publics et abonné·e·s uniquement peuvent être délivrés vers les serveurs de vos abonné·e·s tandis que vos messages directs sont délivrés aux serveurs de vos destinataires.

- -

Quand vous autorisez une application à utiliser votre compte, en fonction de l’étendue des permissions que vous approuvez, il est possible qu’elle puisse accéder aux informations publiques de votre profil, à votre liste d’abonnements, votre liste d’abonné·e·s, vos listes, tous vos posts et vos favoris. Les applications ne peuvent en aucun cas accéder à votre adresse électronique et à votre mot de passe.

- -
- -

Utilisation de ce site par les enfants

- -

Si ce serveur est situé dans l’UE ou l’EEE : notre site, nos produits et nos services sont tous destinés à des personnes âgées de 16 ans ou plus. Si vous avez moins de 16 ans, en application du RGPD (Règlement Général sur la Protection des Données), merci de ne pas utiliser ce site.

- -

Si ce serveur est situé aux États-Unis d’Amérique : notre site, nos produits et nos services sont tous destinés à des personnes âgées de 13 ans ou plus. Si vous avez moins de 13 ans, en application du COPPA (Children's Online Privacy Protection Act), merci de ne pas utiliser ce site.

- -

Les exigences légales peuvent être différentes si ce serveur se trouve dans une autre juridiction.

- -
- -

Modifications de notre politique de confidentialité

- -

Dans le cas où nous déciderions de changer notre politique de confidentialité, nous posterons les modifications sur cette page.

- -

Ce document est publié sous licence CC-BY-SA. Il a été mis à jour pour la dernière fois le 7 mars 2018.

- -

Originellement adapté de la politique de confidentialité de Discourse.

title: Conditions d’utilisation et politique de confidentialité de %{instance} themes: contrast: Mastodon (Contraste élevé) diff --git a/config/locales/gd.yml b/config/locales/gd.yml index 450134bbc..931cea4fb 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -1579,9 +1579,101 @@ gd: tags: does_not_match_previous_name: "– chan eil seo a-rèir an ainm roimhe" terms: - body_html: '

Poileasaidh prìobhaideachd

Dè am fiosrachadh a chruinnicheas sinn?

  • Fiosrachadh bunasach a’ cunntais: Ma chlàraicheas tu leis an fhrithealaiche seo, dh’fhaoidte gun dèid iarraidh ort gun cuir thu a-steach ainm-cleachdaiche, seòladh puist-d agus facal-faire. Faodaidh tu barrachd fiosrachaidh a chur ris a’ phròifil agad ma thogras tu, can ainm-taisbeanaidh agus teacsa mu do dhèidhinn agus dealbhan pròifile ’s banna-chinn a luchdadh suas. Thèid an t-ainm-cleachdaiche, an t-ainm-taisbeanaidh, an teacsa mu do dhèidhinn agus dealbhan na pròifile ’s a bhanna-chinn a shealltainn gu poblach an-còmhnaidh.
  • Postaichean, luchd-leantainn agus fiosrachadh poblach eile: Tha liosta nan daoine air a leanas tu poblach mar a tha i dhan luchd-leantainn agad. Nuair a chuireas tu a-null teachdaireachd, thèid an t-àm ’s an ceann-latha a stòradh cho math ris an aplacaid leis an do chuir thu am foirm a-null. Faodaidh ceanglachain meadhain a bhith am broinn teachdaireachdan, can dealbhan no videothan. Tha postaichean poblach agus postaichean falaichte o liostaichean ri ’m faighinn gu poblach. Nuair a bhrosnaicheas tu post air a’ phròifil agad, ’s e fiosrachadh poblach a tha sin cuideachd. Thèid na postaichean agad a lìbhrigeadh dhan luchd-leantainn agad agus is ciall dha seo gun dèid an lìbhrigeadh gu frithealaichean eile aig amannan is gun dèid lethbhreacan dhiubh a stòradh thall. Nuair a sguabas tu às post, thèid sin a lìbhrigeadh dhan luchd-leantainn agad cuideachd. Tha ath-bhlogachadh no dèanamh annsachd de phost eile poblach an-còmhnaidh.
  • Postaichean dìreach is dhan luchd-leantainn a-mhàin: Thèid a h-uile post a stòradh ’s a phròiseasadh air an fhrithealaiche. Thèid na postaichean dhan luchd-leantainn a-mhàin a lìbhrigeadh dhan luchd-leantainn agad agus dhan luchd-chleachdaidh a chaidh iomradh a dhèanamh orra sa phost. Thèid postaichean dìreach a lìbhrigeadh dhan luchd-chleachdaidh a chaidh iomradh a dhèanamh orra sa phost a-mhàin. Is ciall dha seo gun dèid an lìbhrigeadh gu frithealaichean eile aig amannan is gun dèid lethbhreacan dhiubh a stòradh thall. Nì sinn ar dìcheall gun cuingich sinn an t-inntrigeadh dha na postaichean air na daoine a fhuair ùghdarrachadh dhaibh ach dh’fhaoidte nach dèan frithealaichean eile seo. Mar sin dheth, tha e cudromach gun doir thu sùil air na frithealaichean dhan a bhuineas an luchd-leantainn agad. Faodaidh tu roghainn a chur air no dheth a leigeas leat aontachadh ri luchd-leantainn ùra no an diùltadh a làimh. Thoir an aire gum faic rianairean an fhrithealaiche agus frithealaiche sam bith a gheibh am fiosrachadh na teachdaireachdan dhen leithid agus gur urrainn dha na faightearan glacaidhean-sgrìn no lethbhreacan dhiubh a dhèanamh no an cho-roinneadh air dòighean eile. Na co-roinn fiosrachadh cunnartach air Mastodon idir.
  • IPan is meata-dàta eile: Nuair a nì thu clàradh a-steach, clàraidh sinn an seòladh IP on a rinn thu clàradh a-steach cuide ri ainm aplacaid a’ bhrabhsair agad. Bidh a h-uile seisean clàraidh a-steach ri làimh dhut airson an lèirmheas agus an cùl-ghairm sna roghainnean. Thèid an seòladh IP as ùire a chleachd thu a stòradh suas ri 12 mhìos. Faodaidh sinn cuideachd logaichean an fhrithealaiche a chumail a ghabhas a-steach seòladh IP aig a h-uile iarrtas dhan fhrithealaiche againn.

Dè na h-adhbharan air an cleachd sinn am fiosrachadh agad?

Seo na dòighean air an cleachd sinn fiosrachadh sam bith a chruinnich sinn uat ma dh’fhaoidte:

  • Airson bun-ghleusan Mhastodon a lìbhrigeadh. Chan urrainn dhut eadar-ghnìomh a ghabhail le susbaint càich no an t-susbaint agad fhèin a phostadh ach nuair a bhios tu air do chlàradh a-steach. Mar eisimpleir, faodaidh tu leantainn air càch ach am faic thu na postaichean aca còmhla air loidhne-ama pearsanaichte na dachaigh agad.
  • Airson cuideachadh le maorsainneachd na coimhearsnachd, can airson coimeas a dhèanamh eadar an seòladh IP agad ri feadhainn eile feuch am mothaich sinn do sheachnadh toirmisg no briseadh eile nan riaghailtean.
  • Faodaidh sinn an seòladh puist-d agad a chleachdadh airson fiosrachadh no brathan mu eadar-ghnìomhan a ghabh càch leis an t-susbaint agad no teachdaireachdan a chur thugad, airson freagairt ri ceasnachaidhean agus/no iarrtasan no ceistean eile.

Ciamar a dhìonas sinn am fiosrachadh agad?

Cuiridh sinn iomadh gleus tèarainteachd an sàs ach an glèidheadh sinn sàbhailteachd an fhiosrachaidh phearsanta agad nuair a chuireas tu gin a-steach, nuair a chuireas tu a-null e no nuair a nì thu inntrigeadh air. Am measg gleusan eile, thèid seisean a’ bhrabhsair agad cuide ris an trafaig eadar na h-aplacaidean agad ’s an API a dhìon le SSL agus thèid hais a dhèanamh dhen fhacal-fhaire agad le algairim aon-shligheach làidir. Faodaidh tu dearbhadh dà-cheumnach a chur an comas airson barrachd tèarainteachd a chur ris an inntrigeadh dhan chunntas agad.


Dè am poileasaidh cumail dàta againn?

Nì sinn ar dìcheall:

  • Nach cùm sinn logaidhean an fhrithealaiche sa bheil seòlaidhean IP nan iarrtasan uile dhan fhrithealaiche seo nas fhaide na 90 latha ma chumas sinn logaichean dhen leithid idir.
  • Nach cùm sinn na seòlaidhean IP a tha co-cheangailte ri cleachdaichean clàraichte nas fhaide na 12 mhìos.

’S urrainn dhut tasg-lann iarraidh dhen t-susbaint agad ’s a luchdadh a-nuas is gabhaidh seo a-staigh na postaichean, na ceanglachain meadhain, dealbh na pròifil agus dealbh a’ bhanna-chinn agad.

’S urrainn dhut an cunntas agad a sguabadh às gu buan uair sam bith.


An cleachd sinn briosgaidhean?

Cleachdaidh. ’S e faidhlichean beaga a tha sna briosgaidean a thar-chuireas làrach no solaraiche seirbheise gu clàr-cruaidh a’ choimpiutair agad leis a’ bhrabhsair-lìn agad (ma cheadaicheas tu sin). Bheir na briosgaidean sin comas dhan làrach gun aithnich i am brabhsair agad agus ma tha cunntas clàraichte agad, gun co-cheangail i ris a’ chunntas chlàraichte agad e.

Cleachdaidh sinn briosgaidean airson na roghainnean agad a thuigsinn ’s a ghlèidheadh gus an tadhail thu oirnn san àm ri teachd.


Am foillsich sinn fiosrachadh sam bith gu pàrtaidhean air an taobh a-muigh?

Cha reic, malairt no tar-chuir sinn fiosrachadh air a dh’aithnichear thu fhèin gu pàrtaidh sam bith air an taobh a-muigh. Cha ghabh seo a-staigh treas-phàrtaidhean earbsach a chuidicheas leinn le ruith na làraich againn, le obrachadh a’ ghnìomhachais againn no gus an t-seirbheis a thoirt leat cho fada ’s a dh’aontaicheas na treas-phàrtaidhean sin gun cùm iad am fiosrachadh dìomhair. Faodaidh sinn am fiosrachadh agad fhoillseachadh cuideachd nuair a bhios sinn dhen bheachd gu bheil am foillseachadh sin iomchaidh airson gèilleadh dhan lagh, poileasaidhean na làraich againn èigneachadh no na còraichean, an sealbh no an t-sàbhailteachd againn fhèin no aig càch a dhìon.

Dh’fhaoidte gun dèid an t-susbaint phoblach agad a luchdadh a-nuas le frithealaichean eile san lìonra. Thèid na postaichean poblach agad ’s an fheadhainn dhan luchd-leantainn a-mhàin a lìbhrigeadh dha na frithealaichean far a bheil an luchd-leantainn agad a’ còmhnaidh agus thèid na teachdaireachdan dìreach a lìbhrigeadh gu frithealaichean nam faightearan nuair a bhios iad a’ còmhnaidh air frithealaiche eile.

Nuair a dh’ùghdarraicheas tu aplacaid gun cleachd i an cunntas agad, a-rèir sgòp nan ceadan a dh’aontaicheas tu riutha, faodaidh i fiosrachadh poblach na pròifil agad, liosta na feadhna air a bhios tu a’ leantainn, an luchd-leantainn agad, na liostaichean agad, na postaichean agad uile ’s na h-annsachdan agad inntrigeadh. Chan urrainn do dh’aplacaidean an seòladh puist-d no am facal-faire agad inntrigeadh idir.


Cleachdadh na làraich leis a’ chloinn

Ma tha am frithealaiche seo san Aonadh Eòrpach (AE) no san Roinn Eaconomach na h-Eòrpa (EEA): Tha an làrach, na batharan agus na seirbheisean againn uile ag amas air an fheadhainn a tha co-dhiù 16 bliadhnaichean a dh’aois. Ma tha thu nas òige na 16 bliadhnaichean a dh’aois, tha e riatanach fon GDPR (General Data Protection Regulation) nach cleachd thu an làrach seo.

Ma tha am frithealaiche seo sna Stàitean Aonaichte (SAA): Tha an làrach, na batharan agus na seirbheisean againn uile ag amas air an fheadhainn a tha co-dhiù 13 bliadhnaichean a dh’aois. Ma tha thu nas òige na 16 bliadhnaichean a dh’aois, tha e riatanach fon COPPA (Children''s Online Privacy Protection Act)ha an làrach, na batharan agus na seirbheisean againn uile ag amas air an fheadhainn a tha co-dhiù 16 bliadhnaichean a dh’aois. Ma tha thu nas òige na 16 bliadhnaichean a dh’aois, tha e riatanach fon GDPR (General Data Protection Regulation) nach cleachd thu an làrach seo.

Ma tha am frithealaiche seo sna Stàitean Aonaichte (SAA): Tha an làrach, na batharan agus na seirbheisean againn uile ag amas air an fheadhainn a tha co-dhiù 13 bliadhnaichean a dh’aois. Ma tha thu nas òige na 16 bliadhnaichean a dh’aois, tha e riatanach fon COPPA (Children''s Online Privacy Protection Act) nach cleachd thu an làrach seo.

Dh’fhaoidte gu bheil am frithealaiche seo fo riatanasan lagha eile ma tha e ann an uachdranas laghail eile.


Atharraichean air a’ phoileasaidh phrìobhaideachd againn

Ma chuireas sinn romhainn am poileasaidh prìobhaideachd againn atharrachadh, postaichidh sinn na h-atharraichean dhan duilleag seo.

Tha an sgrìobhainn seo fo cheadachas CC-BY-SA. Chaidh ùrachadh an turas mu dheireadh an t-7mh dhen Mhart 2018.

Chaidh a fhreagarrachadh o thùs o phoileasaidh prìobhaideachd Discourse.

+ body_html: | +

Poileasaidh prìobhaideachd

- ' +

Dè am fiosrachadh a chruinnicheas sinn?

+ +
    + +
  • Fiosrachadh bunasach a’ cunntais: Ma chlàraicheas tu leis an fhrithealaiche seo, dh’fhaoidte gun dèid iarraidh ort gun cuir thu a-steach ainm-cleachdaiche, seòladh puist-d agus facal-faire. Faodaidh tu barrachd fiosrachaidh a chur ris a’ phròifil agad ma thogras tu, can ainm-taisbeanaidh agus teacsa mu do dhèidhinn agus dealbhan pròifile ’s banna-chinn a luchdadh suas. Thèid an t-ainm-cleachdaiche, an t-ainm-taisbeanaidh, an teacsa mu do dhèidhinn agus dealbhan na pròifile ’s a bhanna-chinn a shealltainn gu poblach an-còmhnaidh.
  • + +
  • Postaichean, luchd-leantainn agus fiosrachadh poblach eile: Tha liosta nan daoine air a leanas tu poblach mar a tha i dhan luchd-leantainn agad. Nuair a chuireas tu a-null teachdaireachd, thèid an t-àm ’s an ceann-latha a stòradh cho math ris an aplacaid leis an do chuir thu am foirm a-null. Faodaidh ceanglachain meadhain a bhith am broinn teachdaireachdan, can dealbhan no videothan. Tha postaichean poblach agus postaichean falaichte o liostaichean ri ’m faighinn gu poblach. Nuair a bhrosnaicheas tu post air a’ phròifil agad, ’s e fiosrachadh poblach a tha sin cuideachd. Thèid na postaichean agad a lìbhrigeadh dhan luchd-leantainn agad agus is ciall dha seo gun dèid an lìbhrigeadh gu frithealaichean eile aig amannan is gun dèid lethbhreacan dhiubh a stòradh thall. Nuair a sguabas tu às post, thèid sin a lìbhrigeadh dhan luchd-leantainn agad cuideachd. Tha ath-bhlogachadh no dèanamh annsachd de phost eile poblach an-còmhnaidh.
  • + +
  • Postaichean dìreach is dhan luchd-leantainn a-mhàin: Thèid a h-uile post a stòradh ’s a phròiseasadh air an fhrithealaiche. Thèid na postaichean dhan luchd-leantainn a-mhàin a lìbhrigeadh dhan luchd-leantainn agad agus dhan luchd-chleachdaidh a chaidh iomradh a dhèanamh orra sa phost. Thèid postaichean dìreach a lìbhrigeadh dhan luchd-chleachdaidh a chaidh iomradh a dhèanamh orra sa phost a-mhàin. Is ciall dha seo gun dèid an lìbhrigeadh gu frithealaichean eile aig amannan is gun dèid lethbhreacan dhiubh a stòradh thall. Nì sinn ar dìcheall gun cuingich sinn an t-inntrigeadh dha na postaichean air na daoine a fhuair ùghdarrachadh dhaibh ach dh’fhaoidte nach dèan frithealaichean eile seo. Mar sin dheth, tha e cudromach gun doir thu sùil air na frithealaichean dhan a bhuineas an luchd-leantainn agad. Faodaidh tu roghainn a chur air no dheth a leigeas leat aontachadh ri luchd-leantainn ùra no an diùltadh a làimh. Thoir an aire gum faic rianairean an fhrithealaiche agus frithealaiche sam bith a gheibh am fiosrachadh na teachdaireachdan dhen leithid agus gur urrainn dha na faightearan glacaidhean-sgrìn no lethbhreacan dhiubh a dhèanamh no an cho-roinneadh air dòighean eile. Na co-roinn fiosrachadh dìomhair air Mastodon idir.
  • + +
  • IPan is meata-dàta eile: Nuair a nì thu clàradh a-steach, clàraidh sinn an seòladh IP on a rinn thu clàradh a-steach cuide ri ainm aplacaid a’ bhrabhsair agad. Bidh a h-uile seisean clàraidh a-steach ri làimh dhut airson an lèirmheas agus an cùl-ghairm sna roghainnean. Thèid an seòladh IP as ùire a chleachd thu a stòradh suas ri 12 mhìos. Faodaidh sinn cuideachd logaichean an fhrithealaiche a chumail a ghabhas a-steach seòladh IP aig a h-uile iarrtas dhan fhrithealaiche againn.
  • + +
+ +
+ +

Dè na h-adhbharan air an cleachd sinn am fiosrachadh agad?

+ +

Seo na dòighean air an cleachd sinn fiosrachadh sam bith a chruinnich sinn uat ma dh’fhaoidte:

+ +
    + +
  • Airson bun-ghleusan Mhastodon a lìbhrigeadh. Chan urrainn dhut eadar-ghnìomh a ghabhail le susbaint càich no an t-susbaint agad fhèin a phostadh ach nuair a bhios tu air do chlàradh a-steach. Mar eisimpleir, faodaidh tu leantainn air càch ach am faic thu na postaichean aca còmhla air loidhne-ama pearsanaichte na dachaigh agad.
  • + +
  • Airson cuideachadh le maorsainneachd na coimhearsnachd, can airson coimeas a dhèanamh eadar an seòladh IP agad ri feadhainn eile feuch am mothaich sinn do sheachnadh toirmisg no briseadh eile nan riaghailtean.
  • + +
  • Faodaidh sinn an seòladh puist-d agad a chleachdadh airson fiosrachadh no brathan mu eadar-ghnìomhan a ghabh càch leis an t-susbaint agad no teachdaireachdan a chur thugad, airson freagairt ri ceasnachaidhean agus/no iarrtasan no ceistean eile.
  • + +
+ +
+ +

Ciamar a dhìonas sinn am fiosrachadh agad?

+ +

Cuiridh sinn iomadh gleus tèarainteachd an sàs ach an glèidheadh sinn sàbhailteachd an fhiosrachaidh phearsanta agad nuair a chuireas tu gin a-steach, nuair a chuireas tu a-null e no nuair a nì thu inntrigeadh air. Am measg gleusan eile, thèid seisean a’ bhrabhsair agad cuide ris an trafaig eadar na h-aplacaidean agad ’s an API a dhìon le SSL agus thèid hais a dhèanamh dhen fhacal-fhaire agad le algairim aon-shligheach làidir. Faodaidh tu dearbhadh dà-cheumnach a chur an comas airson barrachd tèarainteachd a chur ris an inntrigeadh dhan chunntas agad.

+ +
+ +

Dè am poileasaidh cumail dàta againn?

+ +

Nì sinn ar dìcheall:

+ +
    + +
  • Nach cùm sinn logaidhean an fhrithealaiche sa bheil seòlaidhean IP nan iarrtasan uile dhan fhrithealaiche seo nas fhaide na 90 latha ma chumas sinn logaichean dhen leithid idir.
  • + +
  • Nach cùm sinn na seòlaidhean IP a tha co-cheangailte ri cleachdaichean clàraichte nas fhaide na 12 mhìos.
  • + +
+ +

’S urrainn dhut tasg-lann iarraidh dhen t-susbaint agad ’s a luchdadh a-nuas is gabhaidh seo a-staigh na postaichean, na ceanglachain meadhain, dealbh na pròifil agus dealbh a’ bhanna-chinn agad.

+ +

’S urrainn dhut an cunntas agad a sguabadh às gu buan uair sam bith.

+ +
+ +

An cleachd sinn briosgaidhean?

+ +

Cleachdaidh. ’S e faidhlichean beaga a tha sna briosgaidean a thar-chuireas làrach no solaraiche seirbheise gu clàr-cruaidh a’ choimpiutair agad leis a’ bhrabhsair-lìn agad (ma cheadaicheas tu sin). Bheir na briosgaidean sin comas dhan làrach gun aithnich i am brabhsair agad agus ma tha cunntas clàraichte agad, gun co-cheangail i ris a’ chunntas chlàraichte agad e.

+ +

Cleachdaidh sinn briosgaidean airson na roghainnean agad a thuigsinn ’s a ghlèidheadh gus an tadhail thu oirnn san àm ri teachd.

+ +
+ +

Am foillsich sinn fiosrachadh sam bith gu pàrtaidhean air an taobh a-muigh?

+ +

Cha reic, malairt no tar-chuir sinn fiosrachadh air a dh’aithnichear thu fhèin gu pàrtaidh sam bith air an taobh a-muigh. Cha ghabh seo a-staigh treas-phàrtaidhean earbsach a chuidicheas leinn le ruith na làraich againn, le obrachadh a’ ghnìomhachais againn no gus an t-seirbheis a thoirt leat cho fada ’s a dh’aontaicheas na treas-phàrtaidhean sin gun cùm iad am fiosrachadh dìomhair. Faodaidh sinn am fiosrachadh agad fhoillseachadh cuideachd nuair a bhios sinn dhen bheachd gu bheil am foillseachadh sin iomchaidh airson gèilleadh dhan lagh, poileasaidhean na làraich againn èigneachadh no na còraichean, an sealbh no an t-sàbhailteachd againn fhèin no aig càch a dhìon.

+ +

Dh’fhaoidte gun dèid an t-susbaint phoblach agad a luchdadh a-nuas le frithealaichean eile san lìonra. Thèid na postaichean poblach agad ’s an fheadhainn dhan luchd-leantainn a-mhàin a lìbhrigeadh dha na frithealaichean far a bheil an luchd-leantainn agad a’ còmhnaidh agus thèid na teachdaireachdan dìreach a lìbhrigeadh gu frithealaichean nam faightearan nuair a bhios iad a’ còmhnaidh air frithealaiche eile.

+ +

Nuair a dh’ùghdarraicheas tu aplacaid gun cleachd i an cunntas agad, a-rèir sgòp nan ceadan a dh’aontaicheas tu riutha, faodaidh i fiosrachadh poblach na pròifil agad, liosta na feadhna air a bhios tu a’ leantainn, an luchd-leantainn agad, na liostaichean agad, na postaichean agad uile ’s na h-annsachdan agad inntrigeadh. Chan urrainn do dh’aplacaidean an seòladh puist-d no am facal-faire agad inntrigeadh idir.

+ +
+ +

Cleachdadh na làraich leis a’ chloinn

+ +

Ma tha am frithealaiche seo san Aonadh Eòrpach (AE) no san Roinn Eaconomach na h-Eòrpa (EEA): Tha an làrach, na batharan agus na seirbheisean againn uile ag amas air an fheadhainn a tha co-dhiù 16 bliadhnaichean a dh’aois. Ma tha thu nas òige na 16 bliadhnaichean a dh’aois, tha e riatanach fon GDPR (General Data Protection Regulation) nach cleachd thu an làrach seo.

+ +

Ma tha am frithealaiche seo sna Stàitean Aonaichte (SAA): Tha an làrach, na batharan agus na seirbheisean againn uile ag amas air an fheadhainn a tha co-dhiù 13 bliadhnaichean a dh’aois. Ma tha thu nas òige na 16 bliadhnaichean a dh’aois, tha e riatanach fon COPPA (Children''s Online Privacy Protection Act) nach cleachd thu an làrach seo.

+ + +

Dh’fhaoidte gu bheil am frithealaiche seo fo riatanasan lagha eile ma tha e ann an uachdranas laghail eile.

+ +
+ +

Atharraichean air a’ phoileasaidh phrìobhaideachd againn

+ +

Ma chuireas sinn romhainn am poileasaidh prìobhaideachd againn atharrachadh, postaichidh sinn na h-atharraichean dhan duilleag seo.

+ +

Tha an sgrìobhainn seo fo cheadachas CC-BY-SA. Chaidh ùrachadh an turas mu dheireadh an t-26mh dhen Chèitean 2022.

+ +

Chaidh a fhreagarrachadh o thùs o phoileasaidh prìobhaideachd Discourse.

title: Teirmichean na seirbheise ⁊ poileasaidh prìobhaideachd %{instance} themes: contrast: Mastodon (iomsgaradh àrd) diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 93634adcd..ba3084f90 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -906,7 +906,7 @@ gl: sensitive_content: Contido sensible toot_layout: Disposición da publicación application_mailer: - notification_preferences: Cambiar os axustes de correo-e + notification_preferences: Cambiar os axustes de email salutation: "%{name}," settings: 'Mudar as preferencias de e-mail: %{link}' view: 'Vista:' @@ -933,7 +933,7 @@ gl: suffix: Ao abrir unha conta, poderás seguir a xente, actualizacións das publicacións e intercambiar mensaxes coas usuarias de calquera servidor de Mastodon e moito máis! didnt_get_confirmation: Non recibiches as instruccións de confirmación? dont_have_your_security_key: "¿Non tes a túa chave de seguridade?" - forgot_password: Esqueceu o contrasinal? + forgot_password: Non lembras o contrasinal? invalid_reset_password_token: O testemuño para restablecer o contrasinal non é válido ou caducou. Por favor solicite un novo. link_to_otp: Escribe o código do segundo factor do móbil ou un código de recuperación link_to_webauth: Usa o teu dispositivo de chave de seguridade @@ -946,7 +946,7 @@ gl: providers: cas: CAS saml: SAML - register: Rexistro + register: Crear conta registration_closed: "%{instance} non está a aceptar novas usuarias" resend_confirmation: Reenviar as intruccións de confirmación reset_password: Restablecer contrasinal @@ -1206,7 +1206,7 @@ gl: followers_count: Seguidoras no momento da migración incoming_migrations: Movendo desde unha conta diferente incoming_migrations_html: Para migrar doutra conta cara esta, primeiro debes crear un alcume da conta. - moved_msg: A túa conta está redirixindo agora a %{acct} e os teus seguidores movéronse alí. + moved_msg: A túa conta foi redirixida a %{acct} e os teus seguimentos movéronse alí. not_redirecting: Neste momento a túa conta non está redirixindo cara a ningunha outra. on_cooldown: Migraches recentemente a conta. Esta función estará dispoñible de novo en %{count} días. past_migrations: Migracións pasadas @@ -1388,7 +1388,7 @@ gl: weibo: Weibo current_session: Sesión actual description: "%{browser} en %{platform}" - explanation: Estos son os navegadores web nos que actualmente ten sesión iniciada. + explanation: Estos son os navegadores web nos que actualmente tes sesión iniciada. ip: IP platforms: adobe_air: Adobe Air @@ -1484,7 +1484,7 @@ gl: enabled: Borrar automáticamente publicacións antigas enabled_hint: Borra automáticamente as túas publicacións unha vez acadan certa lonxevidade, a menos que cumpran algunha destas excepcións exceptions: Excepcións - explanation: Como o borrado de publicacións consume moitos recursos, este faise lentamente cando o servidor non ten moita carga de traballo. Así, a eliminación das túas publicacións podería ser lixeiramente posterior a cando lle correspondería por idade. + explanation: Como o borrado de publicacións consume moitos recursos, esta faise aos poucos cando o servidor non ten moita carga de traballo. Así, a eliminación das túas publicacións podería ser lixeiramente posterior a cando lle correspondería por idade. ignore_favs: Ignorar favoritas ignore_reblogs: Ignorar promocións interaction_exceptions: Excepcións baseadas en interaccións @@ -1525,87 +1525,6 @@ gl: tags: does_not_match_previous_name: non concorda co nome anterior terms: - body_html: | -

Privacidade

-

Qué información recollemos?

- -
    -
  • Información básica da conta: Se se rexistra en este servidor, pediráselle un nome de usuaria, un enderezo de correo electrónico e un contrasinal. De xeito adicional tamén poderá introducir información como un nome público e biografía, tamén subir unha fotografía de perfil e unha imaxe para a cabeceira. O nome de usuaria, o nome público, a biografía e as imaxes de perfil e cabeceira sempre se mostran publicamente.
  • -
  • Publicacións, seguimento e outra información pública: O listado das persoas que segue é un listado público, o mesmo acontece coas súas seguidoras. Cando evía unha mensaxe, a data e hora gárdanse así como o aplicativo que utilizou para enviar a mensaxe. As publicacións poderían conter ficheiros de medios anexos, como fotografías e vídeos. As publicacións públicas e as non listadas están dispoñibles de xeito público. Cando destaca unha publicación no seu perfil tamén é pública. As publicacións son enviadas as súas seguidoras, en algúns casos pode acontecer que estén en diferentes servidores e gárdanse copias neles. Cando elemina unha publicación tamén se envía as súas seguidoras. A acción de volver a publicar ou marcar como favorita outra publicación sempre é pública.
  • -
  • Mensaxes directas e só para seguidoras: Todas as mensaxes gárdanse e procésanse no servidor. As mensaxes só para seguidoras son entregadas as súas seguidoras e as usuarias que son mencionadas en elas, e as mensaxes directas entréganse só as usuarias mencionadas en elas. En algúns casos esto implica que son entregadas a diferentes servidores e gárdanse copias alí. Facemos un esforzo sincero para limitar o acceso a esas publicacións só as persoas autorizadas, pero outros servidores poderían non ser tan escrupulosos. Polo tanto, é importante revisar os servidores onde se hospedan as súas seguidoras. Nos axustes pode activar a opción de aprovar ou rexeitar novas seguidoras de xeito manual. Teña en conta que a administración do servidor e todos os outros servidores implicados poden ver as mensaxes., e as destinatarias poderían facer capturas de pantalla, copiar e volver a compartir as mensaxes. Non comparta información comprometida en Mastodon.
  • -
  • IPs e outros metadatos: Cando se conecta, gravamos o IP desde onde se conecta, así como o nome do aplicativo desde onde o fai. Todas as sesións conectadas están dispoñibles para revisar e revogar nos axustes. O último enderezo IP utilizado gárdase ate por 12 meses. Tamén poderiamos gardar informes do servidor que inclúan o enderezo IP de cada petición ao servidor.
  • -
- -
- -

De qué xeito utilizamos os seus datos?

- -

Toda a información que recollemos podería ser utilizada dos seguintes xeitos:

- -
    -
  • Para proporcionar a funcionabiliade básica de Mastodon. Só pode interactuar co contido de outra xente e publicar o seu propio contido se está conectada. Por exemplo, podería seguir outra xente e ver as súas publicacións combinadas nunha liña temporal inicial personalizada.
  • -
  • Para axudar a moderar a comunidade, por exemplo comparando o seu enderezo IP con outros coñecidos para evitar esquivar os rexeitamentos ou outras infraccións.
  • -
  • O endero de correo electrónico que nos proporciona podería ser utilizado para enviarlle información, notificacións sobre outra xente que interactúa cos seus contidos ou lle envía mensaxes, e para respostar a consultas, e/ou outras cuestións ou peticións.
  • -
- -
- -

Cómo proxetemos os seus datos?

- -

Implementamos varias medidas de seguridade para protexer os seus datos persoais cando introduce, envía ou accede a súa información persoal. Entre outras medidas, a súa sesión de navegación, así como o tráfico entre os seus aplicativos e o API están aseguradas mediante SSL, e o seu contrasinal está camuflado utilizando un algoritmo potente de unha sóa vía. Pode habilitar a autenticación de doble factor para protexer o acceso a súa conta aínda máis.

- -
- -

Cal é a nosa política de retención de datos?

- -

Faremos un sincero esforzo en:

- -
    -
  • Protexer informes do servidor que conteñan direccións IP das peticións ao servidor, ate a data estos informes gárdanse por non máis de 90 días.
  • -
  • Reter os enderezos IP asociados con usuarias rexistradas non máis de 12 meses.
  • -
- -

Pode solicitar e descargar un ficheiro cos seus contidos, incluíndo publicacións, anexos de medios, imaxes de perfil e imaxe da cabeceira.

- -

En calquer momento pode eliminar de xeito irreversible a súa conta.

- -
- -

Utilizamos testemuños?

- -

Si. Os testemuños son pequenos ficheiros que un sitio web ou o provedor de servizo transfiren ao disco duro da súa computadora a través do navegador web (se vostede o permite). Estos testemuños posibilitan ao sitio web recoñecer o seu navegador e, se ten unha conta rexistrada, asocialo con dita conta.

- -

Utilizamos testemuños para comprender e gardar as súas preferencias para futuras visitas.

- -
- -

Entregamos algunha información a terceiras alleas?

- -

Non vendemos, negociamos ou transferimos de algún xeito a terceiras partes alleas a súa información identificativa persoal. Esto non inclúe terceiras partes de confianza que nos axudan a operar o sitio web, a xestionar a empresa, ou darlle servizo se esas partes aceptan manter esa información baixo confidencialidade. Poderiamos liberar esa información se cremos que eso da cumplimento axeitado a lei, reforza as políticas do noso sitio ou protexe os nosos, e de outros, dereitos, propiedade ou seguridade.

- -

O seu contido público podería ser descargado por outros servidores na rede. As súas publicacións públicas e para só seguidoras son entregadas aos servidores onde residen as súas seguidoras na rede, e as mensaxes directas son entregadas aos servidores das destinatarias sempre que esas seguidoras ou destinatarios residan en servidores distintos de este.

- -

Cado autoriza a este aplicativo a utilizar a súa conta, dependendo da amplitude dos permisos que autorice, podería acceder a información pública de perfil, ao listado de seguimento, as súas seguidoras, os seus listados, todas as súas publicacións, as publicacións favoritas. Os aplicativos non poden nunca acceder ao seu enderezo de correo nin ao seu contrasinal.

- -
- -

Utilización do sitio web por menores

- -

Se este servidor está na UE ou no EEE: a nosa web, productos e servizos están dirixidos a persoas de 16 ou máis anos. Se ten menos de 16 anos, a requerimento da GDPR (General Data Protection Regulation) non utilice esta web.

- -

Se este servidor está nos EEUU: a nosa web, productos e servizos están dirixidos a persoas de 13 ou máis anos. Se non ten 13 anos de idade, a requerimento de COPPA (Children's Online Privacy Protection Act) non utilice esta web.

- -

Os requerimentos legais poden ser diferentes si este servidor está baixo outra xurisdición.

- -
- -

Cambios na nosa política de intimidade

- -

Se decidimos cambiar a nosa política de intimidade publicaremos os cambios en esta páxina.

- -

Este documento ten licenza CC-BY-SA. Actualizouse o 7 de Marzo de 2018.

- -

Adaptado do orixinal Discourse privacy policy.

title: "%{instance} Termos do Servizo e Política de Intimidade" themes: contrast: Mastodon (Alto contraste) @@ -1687,24 +1606,24 @@ gl: edit_profile_action: Configurar perfil edit_profile_step: Podes personalizar o teu perfil subindo un avatar, cabeceira, cambiar o nome público e aínda máis. Se restrinxes a túa conta podes revisar a conta das persoas que solicitan seguirte antes de permitirlles o acceso aos teus toots. explanation: Aquí tes algunhas endereitas para ir aprendendo - final_action: Comece a publicar + final_action: Comeza a publicar final_step: 'Publica! Incluso sen seguidoras as túas mensaxes públicas serán vistas por outras persoas, por exemplo na cronoloxía local e nos cancelos. Poderías presentarte ao #fediverso utilizando o cancelo #introductions.' - full_handle: O seu alcume completo - full_handle_hint: Esto é o que lle dirá aos seus amigos para que poidan seguila ou enviarlle mensaxes desde outro servidor. + full_handle: O teu alcume completo + full_handle_hint: Compárteo coas túas amizades para que poidan seguirte ou enviarche mensaxes desde outros servidores. review_preferences_action: Cambiar preferencias - review_preferences_step: Lembre establecer as preferencias, tales como qué correos-e lle querería recibir, ou o nivel de intimidade por omisión para as súas mensaxes. Se non lle molestan as imaxes con movemento, pode escoller que os GIF se reproduzan automáticamente. + review_preferences_step: Lembra establecer as preferencias, tales como o tipo de emails que queres recibir, ou o nivel de privacidade por defecto para as túas publicacións. Se non che molestan as imaxes con movemento, podes elexir que os GIF se reproduzan automáticamente. subject: Benvida a Mastodon - tip_federated_timeline: A cronoloxía federada é unha visión reducida da rede Mastodon. Inclúe xente a que segue xente que ti segues, así que non é completa. + tip_federated_timeline: A cronoloxía federada é unha visión reducida da rede Mastodon. Só inclúe a persoas relacionadas coas persoas ás que estás subscrita, polo que non é a totalidade do fediverso. tip_following: Por defecto segues a Admin(s) no teu servidor. Para atopar máis xente interesante, mira nas cronoloxías local e federada. tip_local_timeline: A cronoloxía local é unha ollada xeral sobre a xente en %{instance}. Son as súas veciñas máis próximas! - tip_mobile_webapp: Si o navegador móbil lle ofrece engadir Mastodon a pantalla de inicio, pode recibir notificacións push. En moitos aspectos comportarase como un aplicativo nativo! + tip_mobile_webapp: Se o navegador móbil che ofrece engadir Mastodon a pantalla de inicio, podes recibir notificacións push. En moitos aspectos comportarase como unha aplicación nativa! tips: Consellos title: Benvida, %{name}! users: follow_limit_reached: Non pode seguir a máis de %{limit} persoas invalid_otp_token: O código do segundo factor non é válido otp_lost_help_html: Se perdes o acceso a ambos, podes contactar con %{email} - seamless_external_login: Accedeches a través dun servizo externo, polo que os axustes de contrasinal e correo-e non están dispoñibles. + seamless_external_login: Accedeches a través dun servizo externo, polo que os axustes de contrasinal e email non están dispoñibles. signed_in_as: 'Rexistrada como:' verification: explanation_html: 'Podes validarte a ti mesma como a dona das ligazóns nos metadatos do teu perfil. Para esto, o sitio web ligado debe conter unha ligazón de retorno ao perfil de Mastodon. Esta ligazón de retorno ten que ter un atributo rel="me". O texto da ligazón non importa. Aquí tes un exemplo:' diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 1ee801fd0..0e3ff6440 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -1532,10 +1532,10 @@ hu:

Milyen adatokat gyűjtünk?

    -
  • Alapvető fiókadatok: Ha regisztrálsz ezen a szerveren, kérhetünk tőled felhasználói nevet, e-mail címet és jelszót is. Megadhatsz magadról egyéb profil információt, megjelenítendő nevet, bemutatkozást, feltölthetsz profilképet, háttérképet. A felhasználói neved, megjelenítendő neved, bemutatkozásod, profil képed és háttér képed mindig nyilvános mindenki számára.
  • -
  • Bejegyzések, követések, más nyilvános adatok: Az általad követett emberek listája nyilvános. Ugyanez igaz a te követőidre is. Ha küldesz egy üzenetet, ennek az idejét eltároljuk azzal az alkalmazással együtt, melyből az üzenetet küldted. Az üzenetek tartalmazhatnak média csatolmányt, képeket, videókat. A nyilvános és nem listázott bejegyzések bárki számára elérhetőek. Ha egy bejegyzést kiemelsz a profilodon, az is nyilvánossá válik. Amikor a bejegyzéseidet a követőidnek továbbítjuk, a bejegyzés más szerverekre is átkerülhet, melyeken így másolatok keletkezhetnek. Ha törölsz egy bejegyzést, ez is továbbítódik a követőid felé. A megtolás (reblog) és kedvencnek jelölés művelete is mindig nyilvános.
  • -
  • Közvetlen és csak követőknek szánt bejegyzések: Minden bejegyzés a szerveren tárolódik. A csak követőknek szánt bejegyzéseidet a követőidnek és az ezekben megemlítetteknek továbbítjuk, míg a közvetlen üzeneteket kizárólag az ebben megemlítettek kapják. Néhány esetben ez azt jelenti, hogy ezek más szerverekre is továbbítódnak, így ott másolatok keletkezhetnek. Jóhiszeműen feltételezzük, hogy más szerverek is hasonlóan járnak el, mikor ezeket az üzeneteket csak az arra jogosultaknak mutatják meg. Ugyanakkor ez nem feltétlenül igaz. Érdemes ezért megvizsgálni azokat a szervereket, melyeken követőid vannak. Be tudod állítani, hogy minden követési kérelmet jóvá kelljen hagynod. Tartsd észben, hogy a ennek és más szervereknek az üzemeltetői láthatják az ilyen üzeneteket, illetve a fogadók képernyőképet, másolatot készíthetnek belőlük, vagy újraoszthatják őket. Ne ossz meg semmilyen veszélyes információt a Mastodon hálózaton!
  • -
  • IP címek és egyéb metaadatok: Bejelentkezéskor eltároljuk a használt böngésződet és IP címedet. Minden rögzített munkamenet elérhető és visszavonható a beállítások között. Az utoljára rögzített IP címet maximum 12 hónapig tároljuk. Egyéb szerver logokat is megtarthatunk, melyek HTTP kérésenként is tárolhatják az IP címedet.
  • +
  • Alapvető fiókadatok: Ha regisztrálsz ezen a szerveren, kérhetünk tőled felhasználói nevet, e-mail címet és jelszót is. Megadhatsz magadról egyéb profil információt, megjelenítendő nevet, bemutatkozást, feltölthetsz profilképet, háttérképet. A felhasználói neved, megjelenítendő neved, bemutatkozásod, profil képed és háttér képed mindig nyilvánosak mindenki számára.
  • +
  • Bejegyzések, követések, más nyilvános adatok: Az általad követett emberek listája nyilvános. Ugyanez igaz a te követőidre is. Ha küldesz egy üzenetet, ennek az idejét eltároljuk azzal az alkalmazással együtt, melyből az üzenetet küldted. Az üzenetek tartalmazhatnak média csatolmányt, képeket, videókat. A nyilvános bejegyzések bárki számára elérhetőek. Ha egy bejegyzést kiemelsz a profilodon, az is nyilvánossá válik. Amikor a bejegyzéseidet a követőidnek továbbítjuk, a bejegyzés más szerverekre is átkerülhet, melyeken így másolatok képződhetnek. Ha törölsz bejegyzéseket, ez is továbbítódik a követőid felé. A megtolás (reblog) és kedvencnek jelölés művelete is mindig nyilvános.
  • +
  • Közvetlen üzenetek és csak követőknek szánt bejegyzések: Minden bejegyzés a szerveren tárolódik. A csak követőknek szánt bejegyzéseket a követőidnek és az ezekben megemlítetteknek továbbítjuk, míg a közvetlen üzeneteket kizárólag az ebben megemlítettek kapják. Néhány esetben ez azt jelenti, hogy ezek más szerverekre is továbbítódnak, így ott másolatok keletkezhetnek. Jóhiszeműen feltételezzük, hogy más szerverek is hasonlóan járnak el, mikor ezeket az üzeneteket csak az arra jogosultaknak mutatják meg. Ugyanakkor ez nem feltétlenül teljesül. Érdemes ezért megvizsgálni azokat a szervereket, melyeken követőid vannak. Be tudod állítani, hogy minden követési kérelmet jóvá kelljen hagynod. Tartsd észben, hogy a szerver üzemeltetői láthatják az üzeneteket, illetve a fogadók képernyőképet, másolatot készíthetnek belőlük, vagy újraoszthatják őket. Ne ossz meg érzékeny információt a Mastodon hálózaton!
  • +
  • IP címek és egyéb metaadatok: Bejelentkezéskor letároljuk a használt böngésződet és IP címedet. Minden rögzített munkamenet elérhető és visszavonható a beállítások között. Az utoljára rögzített IP címet maximum 12 hónapig tároljuk. Egyéb szerver logokat is megtarthatunk, melyek HTTP kérésenként is tárolhatják az IP címedet.

@@ -1577,7 +1577,7 @@ hu:

Igen. A sütik pici állományok, melyeket az oldalunk a böngésződön keresztül a háttértáradra rak, ha engedélyezed ezt. Ezek a sütik teszik lehetővé, hogy az oldalunk felismerje a böngésződet, és ha regisztráltál, hozzá tudjon kötni a fiókodhoz.

-

Arra is használjuk a sütiket, hogy elmenthessük a beállításaidat egy következő látogatás alkalmára.

+

Arra is használjuk a sütiket, hogy elmenthessük a beállításaidat egy következő látogatás céljából.


@@ -1605,7 +1605,7 @@ hu:

Ha úgy döntünk, hogy megváltoztatjuk az adatvédelmi nyilatkozatot, ezt ezen az oldalon közzé fogjuk tenni.

-

Ez a dokumentum CC-BY-SA. Utoljára 2018.03.07 frissült.

+

Ez a dokumentum CC-BY-SA. Utoljára 2022.05.26-án frissült.

Eredetileg innen adaptálva Discourse privacy policy.

title: "%{instance} Felhasználási feltételek és Adatkezelési nyilatkozat" diff --git a/config/locales/hy.yml b/config/locales/hy.yml index b12349596..f24b3197e 100644 --- a/config/locales/hy.yml +++ b/config/locales/hy.yml @@ -950,91 +950,6 @@ hy: pinned: Ամրացուած գրառում reblogged: տարածուած sensitive_content: Կասկածելի բովանդակութիւն - terms: - body_html: | -

Գաղտնիութեան քաղաքականութիւն

-

Ոչ պաշտօնական, ոչ իրաւական թարգմանութիւն

-

Ինչ անձնական տեղեկութիւններ ենք մենք հաւաքում

- -
    -
  • Առաջնային հաւաքուող տուեալներ: Եթե դուք գրանցուէք էք այս սերուերում, ձեզանից կարող են պահանջել մուտքագրել օգտուողի անուն, էլ-փոստի հասցէ և գաղտնաբառ։ Դուք կարող էք նաև մուտքագրել յաւելեալ տուեալներ, ինչպիսիք են օրինակ՝ ցուցադրուող անունը եւ կենսագրութիւնը, նաև վերբեռնել գլխանկար և ետնանակար։ Օգտուողի անունը, կենսագրութիւնը, գլխանկարը և ետնանկարը համարվում են հանրային տեղեկատուութիւն։
  • -
  • Գրառումները, հետեւումները և այլ հանրային տեղեկատուութիւնը։ Ձեր հետևած մարդկանց ցուցակը ներկայացուած է հանրայնօրէն, նոյնը ճշմարիտ է նաև հետևորդների համար։ Երբ դուք ուղարկում էք հաղորդագրութիւն, հաղորդագրութեան ուղարկման ամսաթիւը և ժամանակը, ինչպէս նաև յաւելուածը որից այն ուղարկուել է, պահւում է։ Հաղորդագրութիւնները կարող են պարունակել մեդիա կցումներ, ինչպիսիք են նկարները և տեսանիւթերը։ Հանրային և ծածուկ գրառումները հանրայնօրէն հասանելի են։ Անձնական էջում կցուած գրառումները նոյնպես հանրայնօրէն հասանելի տեղեկատուութիւն է։ Ձեր գրառումները ուղարկւում են ձեր հետևորդներին, ինչը նշանակում է, որ որոշ դէպքերում դրանք ուղարկւում են այլ սերուերներ և պատճէները պահւում են այնտեղ։ Երբ դուք ջնջում էք ձեր գրառումները, սա նոյնպէս ուղարկւում է ձեր հետևորդներին։ Մէկ այլ գրառման տարածումը կամ հաւանումը միշտ հանրային է։
  • -
  • Հասցէագրած և միայն հետևորդներին գրառումները: Բոլոր գրառումները պահւում և մշակւում են սերուերի վրայ։ Միայն հետևորդներին գրառումները ուղարկւում են միայն ձեր հետևորդներին և այն օգտատէրերին ովքեր նշուած են գրառման մէջ, իսկ հասցէագրեցուած գրառումները ուղարկւում են միայն դրանում նշուած օգտատէրերին։ Որոշ դէպքերում դա նշանակում է, որ այդ գրառումները ուղարկւում են այլ սերուերներ և պատճէները պահւում այնտեղ։ Մենք բարեխիղճ ջանք են գործադրում սահմանափակելու այդ գրառումների մուտքը միայն լիազօրուած անձանց, բայց այլ սերուերներ կարող են ձախողել դրա կատարումը։ Այդ պատճառով կարևոր է վերանայել այն սերուերները որին ձեր հետևորդները պատկանում են։ Դուք կարող էք կարգաւորումներից միացնել նոր հետևորդներին ինքնուրոյն ընդունելու և մերժելու ընտրանքը։ Խնդրում ենք յիշել, որ սերուերի գործարկուն և ցանկացած ստացող սերուեր կարող է դիտել այդ տեսակ հաղորդագրութիւնները, իսկ ստացողները կարող են էկրանահանել, պատճէնել և այլ կերպ վերատարածել դրանք։Մաստադոնով մի կիսուէք որևէ վտանգաւոր տեղեկատուութեամբ։
  • -
  • IP հասցէներ և այլ մետատուեալներ: Երբ դուք մուտք էք գործում, մենք պահում են ձեր մուտք գործելու IP հասցէն, ինչպէս նաև զննարկիչի տեսակը։ Կարգաւորումներում հասանելի է մուտքի բոլոր սեսիաների վերանայման և մարման հնարաւորութիւնը։ Վերջին օգտագործուած IP հասցէն պահւում է մինչև 12 ամիս ժամկէտով։ Մենք կարող ենք նաև պահել սերուերի մատեանի նիշքերը, որը պարունակում է սերուերին արուած իւրաքանչիւր հարցման IP հասցէն։
  • -
- -
- -

Ինչպէս ենք օգտագործում ձեր անձնական տեղեկութիւնները

- -

Ցանկացած տուեալ, որը մենք հաւաքում ենք ձեզնից կարող է օգտագործուել հետեւեալ նպատակներով՝

- -
    -
  • Մատուցելու Մաստադոնի հիմնական գործառութիւնները։ Դուք կարող էք փոխգործակցել այլ մարդկանց բովանդակութեան հետ և տեղադրել ձեր սեփական բովանդակութիւնը միայն մուտք գործելուց յետոյ։ Օրինակ՝ դուք կարող էք հետեւել այլ մարդկանց նրանց համակցուած գրառումները ձեր անձնական հոսքում տեսնելու համար ։
  • -
  • Նպաստելու համայնքի մոդերացիային։ Օրինակ՝ համեմատելու ձեր IP հասցէն այլ արդեն յայտնի հասցէի հետ՝ բացայայտելու արգելափակումից խուսափելու կամ այլ խախտումների դէպքերը ։
  • -
  • Ձեր տրամադրած էլ-փոստի հասցէն կարող է օգտագործուել ձեզ տեղեկատուութիւն տրամադրելու, այլ մարդկանց՝ ձեր բովանդակութեան հետ փոխգործակցութեան կամ ձեզ հասցէագրած նամակի մասին ծանուցելու, ինչպէս նաև հայցումներին կամ այլ յայտերին ու հարցերին պատասխանելու համար։
  • -
- -
- -

Ինչպէս ենք պաշտպանում ձեր անձնական

- -

Մենք կիրառում ենք տարբեր անվտանգութեան միջոցների պահպանելու ձեր անձնական տուեալների անվտանգութիւնը, երբ դուք մուտքագրում, ուղարկում կամ դիտում էգ ձեր անձնական տեղեկութիւնները։ Ի թիւս մնացած բաների, ձեր դիտարկչի սեսիան, ինչպէս նաև ձեր յաւելուածի և API միջև տրաֆիկը պաշտպանուած են SSL-ով, իսկ ձեր գաղտնաբառը պատահականացուած է միակողմանի ալգորիթմով։ Դուք կարող էք միացնել երկաստիճան ինքնորոշումը, ձեր հաշուի մուտքը աւելի պաշտպանուած դարձնելու համար։

- -
- -

Տվյալներ պահպանման քաղաքականութիւնը

- -

Մենք գործադրում ենք բարեխիղճ ջանք՝

- -
    -
  • պահպանելու սերուերի մատեանի նիշքերը՝ այս սերուերին արուած բոլոր հարցումների IP հասցէներով, այնքանով որքանով նման նիշքերը պահւում են, ոչ աւել քան 90 օր ժամկէտով։
  • -
  • պահպանելու գրանցուած օգտատէրի հաշուի հետ կապակցուած IP հասցէները, ոչ աւել քան 12 ամիս ժամկէտով։
  • -
- -

Դուք կարող էք ուղարկել հայց ներբեռնելու ձեր բովանդակութեան պատճէն՝ ներառեալ ձեր գրառումները, մեդիա կցումները, գլխանկարը և ետնանկարը։

- -

Դուք կարող էք ընդմիշտ ջնջել ձեր հաշիւը ցանկացած ժամանակ

- -
- -

Օգտագործում էք արդեօ՞ք թխուկներ

- -

Այո։ Թխուկները փոքր ֆայլեր են որը կայքը կամ նրան ծառայութեան մատուցողը փոխանցում է ձեր համակարգչի կոշտ սկաւառակին դիտարկչի միջոցով (ձեր թոյլատուութիւն)։ Թխուկները հնարաւորութիւն են տալիս կայքին ճանաչելու ձեր դիտարկիչը, և գրանցուած հաշուի դէպքում՝ նոյնացնելու այն ձեր հաշուի հետ։ - - Մենք օգտագործում ենք թխուկները հասկանալու և պահպանելու ձեր նախընտրանքները ապագայ այցերի համար։

- -
- -

Բացայայտում երրորդ կողմերին

- -

Մենք չենք վաճառում, փոխանակում, կամ այլ կերպ փոխանցում անձնական նոյնացնող տեղեկատուութիւն երրորդ կողմերին։ Սա չի ներառում վստահելի երրորդ կողմերին որոնք օգնում են կայքի գործարկման, մեր գործունէութեան ծավալման, կամ ձեզ ծառայելու համար, այնքան ժամանակ որքան այդ երրորդ կողմերը համաձայն են գաղտնի պահել այդ տուեալները։ Մենք կարող ենք նաև հանրայնացնել ձեր տեղեկատուութիւնը երբ հաւատացած ենք որ դրա հանրայնացումը անհրաժեշտ է օրէնքի պահանջների կատարման, կամ կայքի քաղաքականութեան կիրառման համար, կամ պաշտպանելու մեր կամ այլոց իրաւունքները, սեփականութիւնը կամ անվտանգութիւնը։

- -

Ձեր հանրային բովանդակութիւնը կարող է բեռնուել ցանցի միւս սերուերների կողմից։ Ձեր հանրային և միայն հետևորդներին գրառումները ուղարկւում են այն սերուերներին որտեղ գրանցած են ձեր հետևորդները, և հասցէական հաղորդագրութիւնները ուղարկւում են հասցէատէրերի սերուերներին, այն դէպքում երբ այդ հետևորդները կամ հասցէատէրերը գտնւում են այս սերուերից տարբեր սերուերի վրայ։

- -

Երբ դուք թոյլատրում էք յաւելուածի օգտագործել ձեր հաշիւը, կախուած թոյլտւութիւնների շրջանակից, այն կարող է մուտք ունենալ ձեր հաշիւ հանրային տեղեկատւութեանը, ձեր հետևողների ցանկին, ձեր հետևորդներից ցանկին, ցանկերին, ձեր բոլոր գրառումներին, և ձեր հաւանումներին։ Յաւելուածները երբեք չենք կարող մուտք ունենալ ձեր էլ-փոստի հասցէին կամ գաղտնաբառին։

- -
- -

Կայքի օգտագործումը երեխաների կողմից

- -

Եթէ այս սերուերը գտնում է ԵՄ-ում կամ ԵՏԳ-ում. Մեր կայքը, արտադրանքները և ծառայութիւնները նախատեսուած են 16 տարին լրացած անձանց համար: Եթէ ձեր 16 տարեկանը չի լրացել, ապա հետևելով GDPR (General Data Protection Regulation) պահանջներին՝ մի օգտագործէք այս կայքը։

- -

Եթէ այս սերուերը գտնւում է ԱՄՆ-ում. Մեր կայքը, արտադրանքները և ծառայութիւնները նախատեսուած են 13 տարին լրացած անձանց համար: Եթէ ձեր 16 տարեկանը չի լրացել, ապա հետևելով COPPA (Children's Online Privacy Protection Act) պահանջներին՝ մի օգտագործէք այս կայքը։ - -

Այլ երկրների իրաւասութիւն շրջաններում օրէնքի պահանջները կարող են տարբերուել։

- -
- -

Գաղտնիութեան քաղաքականութեան փոփոխութիւնները

- -

Եթէ մենք որոշենք փոփոխել մեր գաղտնիութեան քաղաքականութիւնը, ապա այդ փոփոխութիւնները կհրապարակենք այս էջում։

- -

Այս փաստաթուղթը լիազօրուած է CC-BY-SA լիցենզիայով։ Վերջին թարմացումը՝ 7-ը մարտի 2018

- -

Փոխառնուած է Discourse-ի գաղտնիութեան քաղաքականութիւնից.

- -

Ոչ պաշտօնական, ոչ իրաւական թարգմանութիւն

themes: contrast: Mastodon (բարձր կոնտրաստով) default: Mastodon (Մուգ) diff --git a/config/locales/id.yml b/config/locales/id.yml index 610a45e1c..8b364ddc9 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -1496,87 +1496,6 @@ id: tags: does_not_match_previous_name: tidak cocok dengan nama sebelumnya terms: - body_html: | -

Privacy Policy

-

What information do we collect?

- -
    -
  • Basic account information: If you register on this server, you may be asked to enter a username, an e-mail address and a password. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly.
  • -
  • Posts, following and other public information: The list of people you follow is listed publicly, the same is true for your followers. When you submit a message, the date and time is stored as well as the application you submitted the message from. Messages may contain media attachments, such as pictures and videos. Public and unlisted posts are available publicly. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public.
  • -
  • Direct and followers-only posts: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. Please keep in mind that the operators of the server and any receiving server may view such messages, and that recipients may screenshot, copy or otherwise re-share them. Do not share any dangerous information over Mastodon.
  • -
  • IPs and other metadata: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server.
  • -
- -
- -

What do we use your information for?

- -

Any of the information we collect from you may be used in the following ways:

- -
    -
  • To provide the core functionality of Mastodon. You can only interact with other people's content and post your own content when you are logged in. For example, you may follow other people to view their combined posts in your own personalized home timeline.
  • -
  • To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations.
  • -
  • The email address you provide may be used to send you information, notifications about other people interacting with your content or sending you messages, and to respond to inquiries, and/or other requests or questions.
  • -
- -
- -

How do we protect your information?

- -

We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL, and your password is hashed using a strong one-way algorithm. You may enable two-factor authentication to further secure access to your account.

- -
- -

What is our data retention policy?

- -

We will make a good faith effort to:

- -
    -
  • Retain server logs containing the IP address of all requests to this server, in so far as such logs are kept, no more than 90 days.
  • -
  • Retain the IP addresses associated with registered users no more than 12 months.
  • -
- -

You can request and download an archive of your content, including your posts, media attachments, profile picture, and header image.

- -

You may irreversibly delete your account at any time.

- -
- -

Do we use cookies?

- -

Yes. Cookies are small files that a site or its service provider transfers to your computer's hard drive through your Web browser (if you allow). These cookies enable the site to recognize your browser and, if you have a registered account, associate it with your registered account.

- -

We use cookies to understand and save your preferences for future visits.

- -
- -

Do we disclose any information to outside parties?

- -

We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety.

- -

Your public content may be downloaded by other servers in the network. Your public and followers-only posts are delivered to the servers where your followers reside, and direct messages are delivered to the servers of the recipients, in so far as those followers or recipients reside on a different server than this.

- -

When you authorize an application to use your account, depending on the scope of permissions you approve, it may access your public profile information, your following list, your followers, your lists, all your posts, and your favourites. Applications can never access your e-mail address or password.

- -
- -

Site usage by children

- -

If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site.

- -

If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site.

- -

Law requirements can be different if this server is in another jurisdiction.

- -
- -

Changes to our Privacy Policy

- -

If we decide to change our privacy policy, we will post those changes on this page.

- -

This document is CC-BY-SA. It was last updated March 7, 2018.

- -

Originally adapted from the Discourse privacy policy.

title: "%{instance} Ketentuan Layanan dan Kebijakan Privasi" themes: contrast: Mastodon (Kontras tinggi) diff --git a/config/locales/is.yml b/config/locales/is.yml index 63d3809a3..28d6914e5 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -1526,33 +1526,33 @@ is: does_not_match_previous_name: samsvarar ekki fyrra nafni terms: body_html: | -

Persónuverndarstefna

+

Persónuverndarstefna

Hvaða upplýsingum söfnum við?

    -
  • Grunnupplýsingar um notandaaðgang: Ef þú skráir þig á þessum netþjóni gætirðu verið beðinn um að slá inn notandanafn, tölvupóstfang og lykilorð. Þú getur einnig sett inn viðbótarupplýsingar eins og birtingarnafn og æviágrip auk þess að hlaða inn auðkennismynd eða mynd til að birta á síðuhaus. Notandanafn, birtingarnafn, æviágrip, auðkennismynd og hausmynd eru alltaf skráð opinberlega.
  • -
  • Færslur, fylgnigögn og aðrar opinberar upplýsingar: Listinn yfir þá sem þú fylgist með er skráður opinberlega, það sama er að segja um þá sem fylgjast með þér. Þegar þú sendir skilaboð er dagsetning og tími vistaður sem og hvaða forrit þú sendir skilaboðin frá. Skilaboð geta innihaldið viðhengi, svo sem myndir og myndskeið. Opinberar og óskráðar færslur er aðgengilegar opinberlega. Þegar þú birtir færslu á notandasniðinu þínu (forsíðu) eru það einnig opinberar upplýsingar. Færslurnar þínar eru sendar þeim sem fylgjast með þér, í sumum tilvikum þýðir það að þær eru afhentar á aðra netþjóna og afrit geymd þar. Þegar þú eyðir færslum er það sömuleiðis birt fylgjendum þínum. Aðgerðir eins og að endurbirta eða setja færslu í eftirlæti eru ávallt opinberar.
  • -
  • Beinar færslur og eingöngu til fylgjenda: Öll innlegg eru geymd og unnin á netþjóninum. Færslur sem eingöngu eru til fylgjenda berast til fylgjenda þinna og þeirra notenda sem minnst er á í þeim, beinar færslur berast aðeins til notenda sem getið er um í viðkomandi færslu. Í sumum tilvikum þýðir það að færslurnar eru afhentar á aðra netþjóna og afrit geymd þar. Við leggjum mikla áherslu á að takmarka aðgang að þessum færslum einungis við aðila sem til þess hafa heimild, en aðrir utanaðkomandi netþjónar gætu mögulega ekki gert það. Þess vegna er mikilvægt að skoða vel þá netþjóna sem fylgjendur þínir tilheyra. Þú getur valið að þurfa að samþykkja og hafna nýjum fylgjendum handvirkt í stillingunum.Hafðu í huga að rekstraraðilar netþjónsins og allir viðtakendamiðlarar geta skoðað slík skilaboð og að viðtakendur geta tekið skjámyndir, afritað eða á annan hátt deilt þessum gögnum. Ekki deila hættulegum upplýsingum í gegnum Mastodon.
  • -
  • IP-vistföng og önnur lýsigögn: Þegar þú skráir þig inn skráum við IP-töluna sem þú skráir þig inn af, sem og heiti vafraforritsins þíns. Allar innskráðar setur verða tiltækar til skoðunar og afturköllunar í stillingunum. Síðast notaða IP-talan er geymd í allt að 12 mánuði. Við gætum líka haldið eftir atvikaskrám netþjónsins sem gæti innihaldið IP-tölur allra beiðna til netþjónsins.
  • +
  • Grunnupplýsingar um notandaaðgang: Ef þú skráir þig á þennan netþjón gætir þú verið beðinn um að setja inn notandanafn, tölvupóstfang og lykilorð. Þú getur líka slegið inn viðbótarupplýsingar um notandasniðið eins og birtingarnafn og æviágrip og hlaðið inn auðkennismynd og mynd á hausborða. Notandanafn, birtingarnafn, æviágrip, auðkennismynd og hausmynd eru alltaf skráð opinberlega.
  • +
  • Færslur, fylgjendur og aðrar opinberar upplýsingar: Listinn yfir fólk sem þú fylgist með er skráður opinberlega, það sama á við um fylgjendur þína. Þegar þú sendir skilaboð er dagsetning og tími vistuð sem og forritið sem þú sendir skilaboðin frá. Skilaboð geta innihaldið margmiðlunarviðhengi, svo sem myndir og myndskeið. Opinberar og óskráðar færslur eru aðgengilegar opinberlega. Þegar þú birtir færslu á notandaaðgangnum þínum eru það einnig opinberar upplýsingar. Færslurnar þínar eru afhentar fylgjendum þínum, í sumum tilfellum þýðir það að þær eru sendar á mismunandi netþjóna og afrit eru geymd þar. Þegar þú eyðir færslum er þetta líka sent til fylgjenda þinna. Aðgerðin að endurbirta eða setja aðra færslu sem eftirlæti er alltaf opinber.
  • +
  • Bein skilaboð og eingöngu til fylgjenda: Allar færslur eru geymdar og unnar á þjóninum. Færslur sem eingöngu eru fyrir fylgjendur eru sendar fylgjendum þínum og notendum sem eru nefndir í þeim og bein skilaboð eru aðeins send til notenda sem nefndir eru í þeim. Í sumum tilfellum þýðir það að þeir eru afhentir á mismunandi netþjóna og afrit eru geymd þar. Við leggjum mikið upp úr því að takmarka aðgang að þessum færslum við viðurkennda aðila, en aðrir netþjónar gætu ekki gert það. Þess vegna er mikilvægt að skoða netþjónanana sem fylgjendur þínir tilheyra. Þú getur virkjað valkosti til að samþykkja og hafna nýjum fylgjendum handvirkt í stillingunum. Vinsamlegast hafðu í huga að stjórnendur netþjónsins og móttökuþjóna geta skoðað slík skilaboð og að viðtakendur geta tekið skjámyndir, afritað eða endurdeilt þeim á annan hátt. Ekki deila neinum viðkvæmum upplýsingum í gegnum Mastodon.
  • +
  • IP-vistföng og önnur lýsigögn: Þegar þú skráir þig inn tökum við upp IP-töluna sem þú skráir þig inn af, svo og heiti vafraforritsins þíns. Allar innskráðar setur eru tiltækar til skoðunar og afturköllunar í stillingunum. Nýjasta IP-talan sem notuð er er geymd í allt að 12 mánuði. Við gætum líka geymt netþjónaskrár sem innihalda IP-tölu hverrar beiðni til netþjónsins okkar.

-

Til hvers notum við upplýsingarnar þínar?

+

Í hvað notum við upplýsingarnar þínar?

-

Hvað sem er af þeim upplýsingum sem við söfnum frá þér má nota á eftirfarandi vegu:

+

Allar þær upplýsingar sem við söfnum frá þér gætu verið notaðar á eftirfarandi hátt:

    -
  • Til að veita grunnvirkni Mastodon. Þú getur aðeins haft samskipti við efni annarra eða sent inn þitt eigið efni þegar þú ert skráð/ur inn. Til dæmis gætirðu fylgst með öðru fólki og skoðað safn færslna þeirra á þinni eigin persónulega sérsniðnu tímalínu.
  • -
  • Til að hjálpa til við umsjón og viðhald samfélags/hóps, til dæmis að bera saman IP-tölu þína við aðrar þekktar til að greina frávik frá bönnum eða öðrum brotum.
  • -
  • Tölvupóstfangið sem þú gefur upp má nota til að senda þér upplýsingar, tilkynningar um annað fólk sem átt hefur við efnið þitt eða til að senda þér skilaboð eða svara fyrirspurnum og/eða öðrum beiðnum eða spurningum.
  • +
  • Til að veita kjarnavirkni Mastodon. Þú getur aðeins haft samskipti við efni annarra og birt þitt eigið efni þegar þú ert skráð/ur inn. Til dæmis geturðu fylgst með öðru fólki til að skoða sameinaðar færslur þeirra á þinni eigin persónulegu heimatímalínu.
  • +
  • Til að hjálpa við umsjón samfélagsins, til dæmis að bera saman IP-vistfang þitt við önnur þekkt til að ákvarða bönn eða önnur brot.
  • +
  • Tölvupóstfangið sem þú gefur upp gæti verið notað til að senda þér upplýsingar, tilkynningar um annað fólk sem hefur samskipti við efnið þitt eða sendir þér skilaboð og til að svara fyrirspurnum og/eða öðrum beiðnum eða spurningum.

-

Hvernig verndum við upplýsingarnar þínar?

+

Hvernig verndum við upplýsingarnar þínar?

-

Við setjum upp margvíslegar öryggisráðstafanir til að viðhalda öryggi persónuupplýsinganna þinna þegar þú setur inn, sendir eða opnar persónulegar upplýsingar. Meðal annars er vafrasetan þín, svo og umferðin milli forritanna þinna og API-kerfisviðmótsins tryggð með SSL, og lykilorðið þitt er varið með tætigildi (hashed) með sterku einhliða reikniriti. Þú gætir virkjað tveggja-þátta auðkenningu til að tryggja enn frekar aðganginn að notandaaðgangnum þínum.

+

Við innleiðum margvíslegar öryggisráðstafanir til að viðhalda öryggi persónuupplýsinga þinna þegar þú slærð inn, sendir inn eða opnar persónuupplýsingar þínar. Meðal annars er vafralotan þín, sem og umferðin milli forritanna þinna og API-kerfisviðmótsins, tryggð með SSL og lykilorðið þitt er gert að tætigildi með sterku einstefnualgrími. Þú gætir virkjað tveggja-þátta auðkenningu til að tryggja enn frekar aðgang að reikningnum þínum.


@@ -1561,51 +1561,51 @@ is:

Við munum leggja okkur fram um að:

    -
  • Halda eftir atvikaskrám netþjóns sem innihalda IP-tölu allra beiðna til þessa netþjóns, að svo miklu leyti sem slíkar skrár eru geymdar, ekki lengur en í en 90 daga.
  • -
  • Halda eftir IP-tölum sem tengjast skráðum notendum ekki lengur en 12 mánuði.
  • +
  • Geyma netþjónaskrár sem innihalda IP-tölu allra beiðna til þessa netþjóns, að því marki sem slíkar skrár eru geymdar, ekki lengur en í 90 daga.
  • +
  • Geyma IP-tölur tengdar skráðum notendum ekki lengur en í 12 mánuði.
-

Þú getur beðið um og ná í safnskrá með öllu þínu efni, þar með taldar færslur, margmiðlunarviðhengi, auðkennismynd og mynd á síðuhaus.

+

Þú getur beðið um og sótt safnskrá með efninu þínu, þar á meðal færslurnar þínar, margmiðlunarviðhengjum, auðkennismynd og hausmynd.

-

Þú getur eytt reikningi þínum óafturkræft hvenær sem er.

+

Þú getur eytt reikningnum þínum óafturkræft hvenær sem er.


-

Notum við vefkökur?

+

Notum við vafrakökur?

-

Já. Vefkökur eða fótspor eru litlar skrár sem vefsvæði eða þjónustuveitandi setur á harða diskinn í tölvunni þinni í gegnum vafrann þinn (ef þú leyfir það). Þessar vefkökur gera vefsvæðinu kleift að þekkja vafrann þinn og ef þú ert með skráðan notandaaðgang skaltu tengja vafrann við skráða notandaaðganginn þinn.

+

Já. Vafrakökur eru litlar skrár sem síða eða þjónustuaðili hennar flytur á harða disk tölvunnar þinnar í gegnum netvafrann þinn (ef þú leyfir). Þessar vafrakökur gera síðunni kleift að þekkja vafrann þinn og, ef þú ert með skráðan reikning, tengja hann við skráða reikninginn þinn.

-

Við notum vafrakökur til að skilja og vista kjörstillingar þínar fyrir næstu heimsóknir.

+

Við notum vafrakökur til að skilja og vista kjörstillingar þínar fyrir framtíðarheimsóknir.


-

Veitum við upplýsingar til utanaðkomandi aðila?

+

Gefum við utanaðkomandi aðilum einhverjar upplýsingar?

-

Við seljum ekki, verslum eða flytjum á annan hátt persónulegar upplýsingar þínar til utanaðkomandi aðila. Þetta nær ekki til traustra þriðja aðila sem aðstoða okkur við að reka síðuna okkar, aðstoða við starfsemi okkar eða við að þjónusta þig, svo framarlega sem þessir aðilar eru sammála um að halda þessum gögnum sem trúnaðarupplýsingum. Við gætum einnig átt það til að gefa upp upplýsingar frá þér þegar við teljum að birting þeirra sé viðeigandi til að fara eftir lögum, framfylgja stefnu okkar á vefnum eða vernda réttindi okkar, eignir eða öryggi okkar eða annarra.

+

Við seljum ekki, skiptum eða sendum á annan hátt til utanaðkomandi aðila neinar persónugreinanlegar upplýsingar um þig. Þetta felur ekki í sér treysta utanaðkomandi aðila sem aðstoða okkur við að reka síðuna okkar, stunda viðskipti við okkur eða þjónusta þig, svo framarlega sem þessir aðilar eru sammála um að halda þessum upplýsingum sem trúnaðarmáli. Við gætum einnig gefið út upplýsingarnar þínar þegar við teljum að það sé viðeigandi til að fara að lögum, framfylgja stefnu okkar á vefsvæðinu eða verja réttindi okkar eða annarra, eignir eða öryggi okkar.

-

Opinberu efni þínu getur verið hlaðið inn af öðrum netþjónum á netinu. Opinberu skilaboðin þín ásamt færslum eingöngu til fylgjenda berast þeim netþjónum þar sem fylgjendur þínir eru skráðir og bein skilaboð eru send til netþjóna viðtakendanna, að svo miklu leyti sem þeir fylgjendur eða viðtakendur eru skráðir á öðrum netþjónum en þessum.

+

Opinberu efni frá þér gæti verið hlaðið niður af öðrum netþjónum á netinu. Opinberu færslurnar þínar og þær sem eingöngu eru fyrir fylgjendur eru sendar til netþjónanna þar sem fylgjendur þínir eru hýstir og bein skilaboð eru send til netþjóna viðtakenda, að svo miklu leyti sem þessir fylgjendur eða viðtakendur eru hýstir á öðrum netþjóni en þessum.

-

Þegar þú leyfir forriti að nota aðganginn þinn, fer það eftir umfangi heimildanna sem þú gefur hvort það getur það fengið aðgang að opinberum notandasniðsupplýsingum þínum, lista yfir þá sem þú fylgist með, lista yfir þá sem fylgjast með þér, öðrum listum þínum, öllum þínum færslum og eftirlætum. Forrit geta aldrei fengið tölvupóstfangið þitt eða lykilorð.

+

Þegar þú heimilar forriti að nota reikninginn þinn, fer það eftir umfangi þeirra heimilda sem þú samþykkir, hvort það fái aðgang að opinberum upplýsingunum notandaaðgangsins þínus, lista yfir þá sem þú fylgist með, fylgjendur þína, listunum þínum, öllum færslum þínum og eftirlætum. Forrit hafa aldrei aðgang að netfanginu þínu eða lykilorði.


-

Notkun vefsvæðis fyrir börn

+

Vefsíðunotkun barna

-

Ef þessi netþjónn er innan ESB eða EES: Vefnum okkar, vörum og þjónustu er allri beint að fólki sem er að minnsta kosti 16 ára gamalt. Ef þú ert yngri en 16 ára, þá máttu samkvæmt kröfum GDPR ( Almenn reglugerð um gagnavernd) ekki nota þessa síðu.

+

Ef þessi netþjónn er í ESB eða EES: Vefsvæðinu okkar, vörum og þjónustu er öllum beint til fólks sem er að minnsta kosti 16 ára. Ef þú ert yngri en 16 ára, máttu samkvæmt kröfum (GDPR - Almennu gagnaverndarreglugerðinni ) ekki nota þessa síðu .

-

Ef þessi netþjónn er í Bandaríkjunum: Vefnum okkar, vörum og þjónustu er allri beint að fólki sem er að minnsta kosti 13 ára gamalt. Ef þú ert yngri en 13 ára, þá máttu samkvæmt kröfum COPPA (Lög um persónuvernd barna á netinu) ekki nota þessa síðu.

+

Ef þessi netþjónn er í Bandaríkjunum: Vefsvæðinu okkar, vörum og þjónustu er öllum beint til fólks sem er að minnsta kosti 13 ára. Ef þú ert yngri en 13 ára, máttu samkvæmt kröfum (COPPA - Children's Online Privacy Protection Act) ekki nota þessari síðu.

-

Lagakröfur geta verið aðrar ef þessi netþjónn er í annarri lögsögu.

+

Lagakröfur geta verið mismunandi ef þessi þjónn er í öðru lögsagnarumdæmi.


Breytingar á persónuverndarstefnu okkar

-

Ef við ákveðum að breyta persónuverndarstefnu okkar munum við birta þær breytingar á þessari síðu.

+

Ef við ákveðum að breyta persónuverndarstefnu okkar munum við birta þær breytingar á þessari síðu.

-

Þetta skjal er með CC-BY-SA notkunarleyfi. Það var síðast uppfært 7. mars 2018.

+

Þetta skjal er CC-BY-SA nptkunarleyfi. Það var síðast uppfært 26. maí 2022.

-

Upprunalega aðlagað úr persónuverndarstefnu Discourse.

+

Upphaflega aðlagað frá persónuverndarstefnu Discourse.

title: "%{instance} - Þjónustuskilmálar og persónuverndarstefna" themes: contrast: Mastodon (mikil birtuskil) diff --git a/config/locales/it.yml b/config/locales/it.yml index c404ea3ac..43fa1c07b 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -1532,12 +1532,10 @@ it:

Che informazioni raccogliamo?

    -
  • Informazioni di base del profilo: Se ti registri su questo server, ti potrebbe venir chiesto di inserire un nome utente, un indirizzo e-mail ed una password. Potresti anche inserire informazioni aggiuntive del profilo come un nome a schermo ed una biografia e caricare una foto profilo ed un'immagine di intestazione. Il nome utente, il nome a schermo, la biografia, la foto profilo e l'immagine di intestazione, sono sempre elencati pubblicamente.
  • -
  • I post, i seguiti ed altre informazioni pubbliche: L'elenco di persone che segui viene elencata pubblicamente, la stessa cosa è vera per i tuoi seguaci. Quando invii un messaggio, la data e l'orario sono memorizzati così come l'applicazione da cui hai inviato il messaggio. - I messaggi potrebbero contenere allegati media, come immagini e video. I post pubblici e non elencati sono disponibili pubblicamente. Quando mostri un post sul tuo profilo, anche questo diventa disponibile pubblicamente. I tuoi post sono consegnati ai tuoi seguaci, in alcuni casi significa che sono consegnati a server differenti e che lì sono memorizzate delle copie. Quando elimini i post, anche questo viene notificato ai tuoi seguaci. L'azione di ripubblicare o preferire un altro post è sempre pubblica.
  • -
  • Post diretti e solo per i seguaci: Tutti i post sono archiviati ed elaborati sul server. I post solo per seguaci sono consegnati ai tuoi seguaci ed agli utenti che vi hai menzionato, ed i post diretti sono consegnati solo agli utenti in essi menzionati. In alcuni casi significa che sono consegnati a server differenti e che lì sono memorizzate delle copie. Compiamo uno sforzo in buona fede per limitare l'accesso a questi post solo a persone autorizzate, ma gli altri server potrebbero non riuscire a fare ciò. Dunque, è importante rivedere i server a cui appartengono i tuoi seguaci. Potresti attivare/disattivare un'opzione per approvare e rifiutare i nuovi seguaci manualmente nelle impostazioni. - Sei pregato di tenere a mente che gli operatori del server e di ogni server ricevente potrebbero visualizzare tali messaggi e che i riceventi potrebbero fotografarli, copiarlo o altrimenti ricondividerli. Non condividere alcuna informazione pericolosa su Mastodon.
  • -
  • IP ed altri metadati: Quando accedi, registriamo l'indirizzo IP da cui accedi, così come il nome della tua applicazione browser. Tutte le sessioni accedute sono disponibili per la tua revisione e revoca nelle impostazioni. L'ultimo indirizzo IP usato è memorizzato anche fino a 12 mesi. Potremmo anche trattenere i registri del server che includono l'indirizzo IP di ogni richiesta al nostro server.
  • +
  • Informazioni di base del profilo: Se ti registri su questo server, ti potrebbe venir chiesto di inserire un nome utente, un indirizzo e-mail ed una password. Potresti anche inserire informazioni aggiuntive del profilo come un nome a schermo ed una biografia e caricare una foto profilo ed un'immagine di intestazione. Il nome utente, il nome a schermo, la biografia, la foto profilo e l'immagine di intestazione, sono sempre elencati pubblicamente.
  • +
  • I post, i seguiti ed altre informazioni pubbliche: L'elenco di persone che segui viene elencata pubblicamente, la stessa cosa è vera per i tuoi seguaci. Quando invii un messaggio, la data e l'orario sono memorizzati così come l'applicazione da cui hai inviato il messaggio. I messaggi potrebbero contenere allegati media, come immagini e video. I post pubblici e non elencati sono disponibili pubblicamente. Quando mostri un post sul tuo profilo, anche questo diventa disponibile pubblicamente. I tuoi post sono consegnati ai tuoi seguaci, in alcuni casi significa che sono consegnati a server differenti e che lì sono memorizzate delle copie. Quando elimini i post, anche questo viene notificato ai tuoi seguaci. L'azione di ripubblicare o preferire un altro post è sempre pubblica.
  • +
  • Post diretti e solo per i seguaci: Tutti i post sono archiviati ed elaborati sul server. I post solo per seguaci sono consegnati ai tuoi seguaci ed agli utenti che vi hai menzionato, ed i post diretti sono consegnati solo agli utenti in essi menzionati. In alcuni casi significa che sono consegnati a server differenti e che lì sono memorizzate delle copie. Compiamo uno sforzo in buona fede per limitare l'accesso a questi post solo a persone autorizzate, ma gli altri server potrebbero non riuscire a fare ciò. Dunque, è importante rivedere i server a cui appartengono i tuoi seguaci. Potresti attivare/disattivare un'opzione per approvare e rifiutare i nuovi seguaci manualmente nelle impostazioni. Sei pregato di tenere a mente che gli operatori del server e di ogni server ricevente potrebbero visualizzare tali messaggi e che i riceventi potrebbero fotografarli, copiarlo o altrimenti ricondividerli. Non condividere dati sensibili su Mastodon.
  • +
  • IP ed altri metadati: Quando accedi, registriamo l'indirizzo IP da cui accedi, così come il nome della tua applicazione browser. Tutte le sessioni accedute sono disponibili per la tua revisione e revoca nelle impostazioni. L'ultimo indirizzo IP usato è memorizzato anche fino a 12 mesi. Potremmo anche trattenere i registri del server che includono l'indirizzo IP di ogni richiesta al nostro server.

@@ -1547,9 +1545,9 @@ it:

Ogni informazioni che raccogliamo da te potrebbe essere usata nei modi seguenti:

    -
  • Per fornire la funzionalità principale di Mastodon. Puoi interagire solo con il contenuto di altre persone ed postare i tuoi contenuti quando sei acceduto. Per esempio, potresti seguire altre persone per vedere i loro post combinati nella timeline principale personalizzata e tua.
  • -
  • Per aiutare a moderare la comunità, per esempio comparando il tuo indirizzo IP con altri noti per determinare evasioni dei ban o altre violazioni.
  • -
  • L'indirizzo email che fornisci potrebbe essere usato per inviarti informazioni, notifiche sull'interazione di altre persone con i tuoi contenuti o inviarti messaggi e per rispondere a interrogativi e/o altre richieste o domande.
  • +
  • Per fornire la funzionalità principale di Mastodon. Puoi interagire solo con il contenuto di altre persone ed postare i tuoi contenuti quando sei acceduto. Per esempio, potresti seguire altre persone per vedere i loro post combinati nella timeline principale personalizzata e tua.
  • +
  • Per aiutare a moderare la comunità, per esempio comparando il tuo indirizzo IP con altri noti per determinare evasioni dei ban o altre violazioni.
  • +
  • L'indirizzo email che fornisci potrebbe essere usato per inviarti informazioni, notifiche sull'interazione di altre persone con i tuoi contenuti o inviarti messaggi e per rispondere a interrogativi e/o altre richieste o domande.

@@ -1565,8 +1563,8 @@ it:

Faremo un grande sforzo in buona fede per:

    -
  • Tratteniamo i registri del server contenenti l'indirizzo IP di tutte le richieste in questo server, in cui i registri sono mantenuti, per non più di 90 giorni.
  • -
  • Tratteniamo gli indirizzi IP associati con utenti registrati da non oltre 12 mesi.
  • +
  • Tratteniamo i registri del server contenenti l'indirizzo IP di tutte le richieste in questo server, in cui i registri sono mantenuti, per non più di 90 giorni.
  • +
  • Tratteniamo gli indirizzi IP associati con utenti registrati da non oltre 12 mesi.

Puoi richiedere e scaricare un archivio del tuo contenuto, inclusi i tuoi post, allegati media, foto profilo ed immagine di intestazione.

@@ -1595,8 +1593,7 @@ it:

Uso del sito da bambini

-

Se questo server è in UE o nell'EEA: Il nostro sito, i prodotti ed i servizi sono tutti diretti a persone che abbiano almeno 16 anni. Se hai meno di 16 anni, per i requisiti del GDPR - (General Data Protection Regulation) non usare questo sito.

+

Se questo server è in UE o nell'EEA: Il nostro sito, i prodotti ed i servizi sono tutti diretti a persone che abbiano almeno 16 anni. Se hai meno di 16 anni, per i requisiti del GDPR (General Data Protection Regulation) non usare questo sito.

Se questo server è negli USA: Il nostro sito, i prodotti ed i servizi sono tutti diretti a persone che abbiano almeno 13 anni. Se hai meno di 13 anni, per i requisiti del COPPA (Children's Online Privacy Protection Act) non usare questo sito.

@@ -1608,7 +1605,7 @@ it:

Se decidiamo di modificare la nostra politica della privacy, posteremo queste modifiche su questa pagina.

-

Questo documento è CC-BY-SA. L'ultimo aggiornamento è del 7 Marzo, 2018.

+

Questo documento è CC-BY-SA. L'ultimo aggiornamento è del 26 maggio 2022.

Adattato originalmente dal Discorso Politica della Privacy.

title: "%{instance} Termini di servizio e politica della privacy" diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 54dcbc9fa..38420d07f 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -1482,87 +1482,6 @@ ja: tags: does_not_match_previous_name: 以前の名前と一致しません terms: - body_html: | -

プライバシーポリシー

-

どのような情報を収集しますか?

- -
    -
  • 基本的なアカウント情報: 当サイトに登録すると、ユーザー名・メールアドレス・パスワードの入力を求められることがあります。また表示名や自己紹介・プロフィール画像・ヘッダー画像といった追加のプロフィールを登録できます。ユーザー名・表示名・自己紹介・プロフィール画像・ヘッダー画像は常に公開されます。
  • -
  • 投稿・フォロー・その他公開情報: フォローしているユーザーの一覧は一般公開されます。フォロワーも同様です。メッセージを投稿する際、日時だけでなく投稿に使用したアプリケーション名も記録されます。メッセージには写真や動画といった添付メディアを含むことがあります。「公開」や「未収載」の投稿は一般公開されます。プロフィールに投稿を載せるとそれもまた公開情報となります。投稿はフォロワーに配信されます。場合によっては他のサーバーに配信され、そこにコピーが保存されることを意味します。投稿を削除した場合も同様にフォロワーに配信されます。他の投稿をリブログやお気に入り登録する行動は常に公開されます。
  • -
  • 「ダイレクト」と「フォロワー限定」投稿: すべての投稿はサーバーに保存され、処理されます。「フォロワー限定」投稿はフォロワーと投稿に書かれたユーザーに配信されます。「ダイレクト」投稿は投稿に書かれたユーザーにのみ配信されます。場合によっては他のサーバーに配信され、そこにコピーが保存されることを意味します。私たちはこれらの閲覧を一部の許可された者に限定するよう誠意を持って努めます。しかし他のサーバーにおいても同様に扱われるとは限りません。したがって、相手の所属するサーバーを吟味することが重要です。設定で新しいフォロワーの承認または拒否を手動で行うよう切り替えることもできます。サーバー管理者は「ダイレクト」や「フォロワー限定」投稿も閲覧する可能性があることを忘れないでください。また受信者がスクリーンショットやコピー、もしくは共有する可能性があることを忘れないでください。いかなる危険な情報もMastodon上で共有しないでください。
  • -
  • IPアドレスやその他メタデータ: ログインする際IPアドレスだけでなくブラウザーアプリケーション名を記録します。ログインしたセッションはすべてユーザー設定で見直し、取り消すことができます。使用されている最新のIPアドレスは最大12ヵ月間保存されます。またサーバーへのIPアドレスを含むすべてのリクエストのログを保持することがあります。
  • -
- -
- -

情報を何に使用しますか?

- -

収集した情報は次の用途に使用されることがあります:

- -
    -
  • Mastodonのコア機能の提供: ログインしている間にかぎり他の人たちと投稿を通じて交流することができます。例えば自分専用のホームタイムラインで投稿をまとめて読むために他の人たちをフォローできます。
  • -
  • コミュニティ維持の補助: 例えばIPアドレスを既知のものと比較し、BAN回避目的の複数登録者やその他違反者を判別します。
  • -
  • 提供されたメールアドレスはお知らせの送信・投稿に対するリアクションやメッセージ送信の通知・お問い合わせやその他要求や質問への返信に使用されることがあります。
  • -
- -
- -

情報をどのように保護しますか?

- -

私たちはあなたが入力・送信する際や自身の情報にアクセスする際に個人情報を安全に保つため、さまざまなセキュリティ上の対策を実施します。特にブラウザーセッションだけでなくアプリケーションとAPI間の通信もSSLによって保護されます。またパスワードは強力な不可逆アルゴリズムでハッシュ化されます。二要素認証を有効にし、アカウントへのアクセスをさらに安全にすることができます。

- -
- -

データ保持方針はどうなっていますか?

- -

私たちは次のように誠意を持って努めます:

- -
    -
  • 当サイトへのIPアドレスを含むすべての要求に対するサーバーログを90日以内のできるかぎりの間保持します。
  • -
  • 登録されたユーザーに関連付けられたIPアドレスを12ヵ月以内の間保持します。
  • -
- -

あなたは投稿・添付メディア・プロフィール画像・ヘッダー画像を含む自身のデータのアーカイブを要求し、ダウンロードすることができます。

- -

あなたはいつでもアカウントの削除を要求できます。削除は取り消すことができません。

- -
- -

クッキーを使用していますか?

- -

はい。クッキーは (あなたが許可した場合に) WebサイトやサービスがWebブラウザーを介してコンピューターに保存する小さなファイルです。使用することでWebサイトがブラウザーを識別し、登録済みのアカウントがある場合関連付けます。

- -

私たちはクッキーを将来の訪問のために設定を保存し呼び出す用途に使用します。

- -
- -

なんらかの情報を外部に提供していますか?

- -

私たちは個人を特定できる情報を外部へ販売・取引・その他方法で渡すことはありません。これには当サイトの運営・業務遂行・サービス提供を行ううえで補助する信頼できる第三者をこの機密情報の保護に同意するかぎり含みません。法令の遵守やサイトポリシーの施行、権利・財産・安全の保護に適切と判断した場合、あなたの情報を公開することがあります。

- -

あなたの公開情報はネットワーク上の他のサーバーにダウンロードされることがあります。相手が異なるサーバーに所属する場合、「公開」と「フォロワー限定」投稿はフォロワーの所属するサーバーに配信され、「ダイレクト」投稿は受信者の所属するサーバーに配信されます。

- -

あなたがアカウントの使用をアプリケーションに許可すると、承認した権限の範囲内で公開プロフィール情報・フォローリスト・フォロワー・リスト・すべての投稿・お気に入り登録にアクセスできます。アプリケーションはメールアドレスやパスワードに決してアクセスできません。

- -
- -

児童によるサイト利用について

- -

サーバーがEUまたはEEA圏内にある場合: 当サイト・製品・サービスは16歳以上の人を対象としています。あなたが16歳未満の場合、GDPR (General Data Protection Regulation - EU一般データ保護規則) により当サイトを使用できません。

- -

サーバーが米国にある場合: 当サイト・製品・サービスは13歳以上の人を対象としています。あなたが13歳未満の場合、COPPA (Children's Online Privacy Protection Act - 児童オンラインプライバシー保護法) により当サイトを使用できません。

- -

サーバーが別の管轄区域にある場合、法的要件は異なることがあります。

- -
- -

プライバシーポリシーの変更

- -

プライバシーポリシーの変更を決定した場合、このページに変更点を掲載します。

- -

この文章のライセンスはCC-BY-SAです。最終更新日は2018年3月7日です。

- -

オリジナルの出典: Discourse privacy policy

title: "%{instance} 利用規約・プライバシーポリシー" themes: contrast: Mastodon (ハイコントラスト) diff --git a/config/locales/ka.yml b/config/locales/ka.yml index 151817ef4..7e6d591ec 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -594,87 +594,6 @@ ka: reblogged: გაზრდილი sensitive_content: მგრძნობიარე კონტენტი terms: - body_html: | -

კონფიდენციალურობის პოლიტიკა

-

რა ინფორმაციას ვაგროვებთ?

- -
    -
  • ძირითადი ანგარიშის ინფორმაცია: თუ დარეგისტრირდებით ამ სერვერზე, შესაძლოა მოგთხოვოთ მომხმარებლის სახელი, ელ-ფოსტის მისამართი და პაროლი. შესაძლებელია, ასევე შეიყვანოთ დამატებითი პროფილის ინორმაცია, როგორიცაა დისპლეის სახელი და ბიოგრაფია, ასევე ატვირთოთ პროფილის და დასათაურების სურათი. მომხმარებლის სახელი, დისპლეის სახელი, ბიოგრაფია, პროფილის სურათი, დასათაურების სურათი ყოველთვის ღიადაა ჩამოთვლილი.
  • -
  • პოსტები, დადევნებები და სხვა საჯარო ინფორმაცია: ადამიანების სია, რომლებსაც მიჰყვებით საჯაროდაა ჩამოთვლილი, იგივე ეხება თქვენს მიდევრებსაც. როდესაც აგზავნით წერილს, თარიღი, დრო და აპლიკაცია თუ საიდანაც განათავსეთ წერილი ინახება. წერილები შესაძლოა შეიცავდნენ მედია ფაილებს, როგორებიცაა სურათები და ვიდეოები. ღია და ჩამოუთვლელი პოსტები ხელმისაწვდომია საჯაროდ. როდესაც ათავსებთ პოსტს თქვენს პროფილზე, ის ასევე საჟაროდ წვდომადი ხდება. თქვენი პოსტები ეგზავნებათ თქვენს მიმდევრებს, ზოგიერთ შემთხვევაში ეს ნიშნავს, რომ ისინი იგზავნება სხვა სერვერებზე და მათი ასლები იქვე ინახება. როდესაც აუქმებთ პოსტს, ეს მოქმედება ეგზავნებათ თქვენს მიმდევრებს. რე-ბლოგირების ან ფავორიტად ქცევის ქმედებები ასევე საქვეყნოა.
  • -
  • პირდაპირი და პოსტები მხოლოდ-მიმდევრებისთვის: ყველა პოსტი ინახება და მათი პროცესირება ხდება სერვერზე. პოსტები რომლებიც განეკუთვნება მხოლოდ მიმდევრებს მიეწოდებათ მათ, მომხმარებლები, რომლებიც დასახელებულია პოსტებში და პირდაპირი პოსტები ეგზავნებათ მხოლოდ ჩამოთვლილ მომხმარებლებს. ზოგიერთ შემთხვევაში, ეს ნიშნავს, რომ გადაგზავნა ხდება გარე სერვერებზე და ასლებიც იქ ინახება. ჩვენ დიდ ძალისხმევას ვუწევთ წვდომის ლიმიტს მხოლოდ აუტორიზირებული ადამიანებისთვის, თუმცა სხვა სერვერებმა შეიძლება ეს არ აწარმოონ. აქედან გამომდინარე, მნიშვნელოვანია განიხილოთ სერვერები, საიდანაც მოდიან თქვენი მიმდევრები. შეგიძლიათ ჩართოთ ან გამორთოთ პარამეტრი, დაადასტუროთ ან უარყოთ ახალი მიმდევარი. გთხოვთ გაითვალისწინოთ, რომ სერვერის ოპერაციები და სხვა მიმღები სერვერები შესაძლოა კითხულობდნენ ამგვარ წერილებს, მიმღებებს შეუძლიათ შექმნან სქრინშოთი, დააკოპირონ ან ხელახლა გააზიარონ ისინი. არ გააზიაროთ საშიში ინფორმაცია მასტოდონით.
  • -
  • აი-პიები და სხვა მეტა-მონაცემები: როდესაც გაივლით აუტენტიფიკაციას, ჩვენ ვინახავთ აი-პი მისამართს საიდანაც შემოხვედით, ასევე ბრაუზერის აპლიკაციას. ყველა ავტორიზირებული სესია თქვენთვის განსახილველად და გასაუქმებლად ხელმისაწვდომია პარამეტრებში. ბოლო შენახული აი-პი მისამართი ინახება მაქსიმუმ 12 თვით. ჩვენ ასევე შეიძლება გაგვაჩნდეს სერვერის ლოგი, რომელიც ინახავს თითოეული მოთხოვნის IP მისამართს.
  • -
- -
- -

რაში ვიყენებთ ინფორმაციას?

- -

ნებისმიერი სხვა ინფორმაცია, რომელსაც ვაგროვებთ თქვენგან შესაძლოა გამოყენებულ იქნას შემდეგი გზებით:

- -
    -
  • რომ უზრუნველვყოთ მასტოდონის მთავარი ფუნქციონალი. შეგიძლიათ ინტერაქცია გაუწიოთ მხოლოდ სხვის კონტენტს და შექმნათ პოსტები მაშინ როდესაც ავტორიზებული ხართ. მაგალითად, შესაძლოა გაჰყვეთ სხვა ადამიანებს, რათა იხილოთ მათი ჯამური პოსტები საკუთარ პერსონალიზებულ სახლის თაიმლაინზე.
  • -
  • რომ შევუწყვოთ ხელი საზოგადოების მოდერაციას, მაგალითად შევადაროთ თქვენი აი-პი მისამართი სხვა ცნობილ მისამართებს, რათა ამოვიცნოთ ბანის გადაუხდელობა ან სხვა დარღვევები.
  • -
  • ელ-ფოსტის მისამართი რომელსაც გვაწვდით, შესაძლოა გამოვიყენოთ თქვენთვის ინფორმაციის გამოსაგძავნად, შეგატყობინოთ სხვა ადამიანების ინტერაქციაზე თქვენს კონტენტთან ან თქვენთვის გამოგზავნილ წერილებზე, ასევე რომ გიპასუხოთ მოთხოვნებზე და/ან სხვა საკითხებზე.
  • -
- -
- -

როგორ ვიცავთ თქვენს ინფორმაციას?

- -

მიღებული გვაქვს სხვადასხვა ზომა, შევინარჩუნოთ თქვენი პირადი ინფორმაციის უსაფრთხოება, რომელსაც აგზავნით, შეგყავთ ან კითხულობთ. ამ ყველაფერთან ერთად თქვენი ბრაუზერის სესია, ტრეფიკი თქვენს აპლიკაციასა და აპის შორის დაცულია სსლ-ით, თქვენი პაროლი იშიფრება ძლიერი ალგორითმით. შეგიძლიათ ჩართოთ მეორე-ფაქტორის აუტენტიფიკაცია, რათა გააღმაოთ თქვენი ანგარიშის თავდაცვა.

- -
- -

რა არის ჩვენი მონაცემის უარყოფის პოლიტიკა?

- -

ჩვენ არ დავიშურებთ ძალისხმევას რომ:

- -
    -
  • შევინარჩუნოთ სერვერის ლოგები, რომლებიც მოიცავენ ყველა მოთხოვნის აი-პი მისამართს, თუმცა ესეთი ლოგები არ ინახება 90 დღეზე მეტ ხანს.
  • -
  • შევინარჩუნოთ რეგისტრირებული მომხმარებლების აი-პი მისამართები მაქსიმუმ 12 თვით.
  • -
- -

შეგიძლიათ მოითხოვოთ და ჩამოტვირთოთ თქვენი კონტენტის არქივი, რომელიც მოიცავს თქვენს პოსტებს, მედია ფაილებს, პროფილის და დასათაურების სურათს.

- -

შეგიძლიათ დაუბრუნებლად გააუქმოთ თქვენი ანგარიში ნებისმიერ დროს.

- -
- -

ვიყენებთ თუ არა ქუქის?

- -

დიახ. ქუქიები წარმოადგენენ პატარა ფაილებს, რომელთაც, საიტი ან სერვის-პროვაიდერი, ათავსებს თქვენი კომპიუტერის მყარ დისკზე, ვებ-ბრაუზერის (თუ ნებას რთავთ) მეშვეობით. ქუქიები საშუალებას აძლევს საიტს ამოიცნონ თქვენი ბრაუზზერი და თუ გაქვთ რეგისტრირებული ანგარიში მისი ასოციაცია მოახდინონ თქვენს ანგარიშთან.

- -

ჩვენ ვიყენებთ ქუქის, ვიცოდეთ და შევინახოთ თქვენი პრეფერენსიები სამომავლო სტუმრობებისთვის.

- -
- -

ვამჟღავნებთ თუ არა ინფორმაციას გარე მხარეებისთვის?

- -

ჩვენ არ ვყიდით, ვვაჭრობთ ან გადაქვაქ თქვენთვის პირადად იდენტიფიცირებადი ინფორმაცია სხვა მხარეებისთვის. ეს არ მოიცავს სანდო მხარეებს, რომლებიც გვეხმარება საიტის ოპერირებაში, ჩვენი საქმიანობის ჩატარებაში, ან თქვენთვის მომსახურების გაწევაში, წინაპირობით კონფიდენციალურად შეინახონ თქვენი ინფორმაცია. ჩვენ შესაძლოა გამოვაქვეყნოთ თქვენი ინფორმაცია, რომელიც შესაბამისად შეიძლება ჩავთვალოთ კანონმდებლობასთან შეთავსებისთვის, აღვასრულოთ პოლიტიკა ან დავიცვათ ჩვენი ან სხვისი უფლებები, კუთვნილება ან უსაფრთხოება.

- -

თქვენი საჯარო ინფორმაცია შესაძლოა ჩამოტვირთულ იქნას სხვა სერვერების მიერ ქსელში. თქვენი ღია და მიმდევრებზე გათვლილი პოსტები მიეწოდება სერვერებს სადაც თქვენი მიმდევრები მოღვაწეობენ, იმ შემთხვევაში თუ მიმღებები მომდინარეობენ სხვა სერვერიდან, პირდაპირი წერილები მიეწოდებათ მიმღებების სერვერებს.

- -

როდესაც უფლებას მისცემთ აპლიკაციას გამოიყენოს თქვენი ანგარიში, უფლებებისგან გამომდინარე, მან შესაძლოა მოიპოვოს თქვენი საჯარო ინფორმაცია, თქვენი დადევნების სიები, თქვენი მიმდევრები, თქვენი სიები, ყველა პოსტი და თქვენი ფავორიტები. აპლიკაციები ვერასდროს იქონიებენ წვდომას თქვენი ელ-ფოსტის მისამართზე ან პაროლზე.

- -
- -

საიტის მოხმარებს ბავშვების მიერ

- -

თუ ეს სერვერი მდებარეობს ეუ-ში ან ეეა-ში: ჩვენი საიტი, პროდუქტები და სერვისები მიმართულია ადამიანებისთვის, რომელთაც შეუსრულდათ 16 წელი. თუ თქვენი ასაკი 16 წელიწადზე ნაკლებია, ჯიდიფიარის (ზოგადი მონაცემების დაცვის რეგულაცია/a>) მოთხოვნის მიხედვით არ გამოიყენოთ ეს საიტი.

- -

თუ ეს სერვერი მდებარეობს ა.შ.შ.-ში: ჩვენი საიტი პროდუქტი და სერვისები მიმართულია ადამიანებისთვის, რომელთაც შეუსრულდათ 13 წელი. თუ თქვენი ასაკი 13 წელიწადზე ნაკლებია, კოპპას (ბავშვთა ონლაინ კონფიდენციალურობის დაცვის აქტი) მოთხოვნების მიხედვით არ გამოიყენოთ ეს საიტი.

- -

იურიდიული მოთხოვნილებები შეიძლება განსხვავდებოდეს, თუ ეს სერვერი იმყოფება სხვა იურისდიქციის ქვეშ.

- -
- -

ცვლილებები კონფიდენციალურობის პოლიტიკაში

- -

თუ გადავწყვეტთ შევცვალოთ კონფიდენციალურობის პოლიტიკა, გამოვაქვეყნებთ ამ გვერდზე.

- -

ეს დოკუმენტი არის ცც-ბაი-სა. ეს ბოლოს განახლდა 2018 წლის, 17 აგვისტოს.

- -

საწყისად ადაპტირებულია გამჟღავნების კონფიდენციალური პოლიტიკისგან.

title: "%{instance} მომსახურების პირობები და კონფიდენციალურობის პოლიტიკა" themes: contrast: მაღალი კონტრასტი diff --git a/config/locales/kk.yml b/config/locales/kk.yml index 1cf4b3ccf..a01a2424a 100644 --- a/config/locales/kk.yml +++ b/config/locales/kk.yml @@ -911,87 +911,6 @@ kk: tags: does_not_match_previous_name: алдыңғы атқа сәйкес келмейді terms: - body_html: | -

Құпиялылық шарттары

-

What information do we collect?

- -
    -
  • Basic account information: If you register on this server, you may be asked to enter a username, an e-mail address and a password. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly.
  • -
  • Posts, following and other public information: The list of people you follow is listed publicly, the same is true for your followers. When you submit a message, the date and time is stored as well as the application you submitted the message from. Messages may contain media attachments, such as pictures and videos. Public and unlisted posts are available publicly. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public.
  • -
  • Direct and followers-only posts: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. Please keep in mind that the operators of the server and any receiving server may view such messages, and that recipients may screenshot, copy or otherwise re-share them. Do not share any dangerous information over Mastodon.
  • -
  • IPs and other metadata: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server.
  • -
- -
- -

What do we use your information for?

- -

Any of the information we collect from you may be used in the following ways:

- -
    -
  • To provide the core functionality of Mastodon. You can only interact with other people's content and post your own content when you are logged in. For example, you may follow other people to view their combined posts in your own personalized home timeline.
  • -
  • To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations.
  • -
  • The email address you provide may be used to send you information, notifications about other people interacting with your content or sending you messages, and to respond to inquiries, and/or other requests or questions.
  • -
- -
- -

How do we protect your information?

- -

We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL, and your password is hashed using a strong one-way algorithm. You may enable two-factor authentication to further secure access to your account.

- -
- -

What is our data retention policy?

- -

We will make a good faith effort to:

- -
    -
  • Retain server logs containing the IP address of all requests to this server, in so far as such logs are kept, no more than 90 days.
  • -
  • Retain the IP addresses associated with registered users no more than 12 months.
  • -
- -

You can request and download an archive of your content, including your posts, media attachments, profile picture, and header image.

- -

You may irreversibly delete your account at any time.

- -
- -

Do we use cookies?

- -

Yes. Cookies are small files that a site or its service provider transfers to your computer's hard drive through your Web browser (if you allow). These cookies enable the site to recognize your browser and, if you have a registered account, associate it with your registered account.

- -

We use cookies to understand and save your preferences for future visits.

- -
- -

Do we disclose any information to outside parties?

- -

We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety.

- -

Your public content may be downloaded by other servers in the network. Your public and followers-only posts are delivered to the servers where your followers reside, and direct messages are delivered to the servers of the recipients, in so far as those followers or recipients reside on a different server than this.

- -

When you authorize an application to use your account, depending on the scope of permissions you approve, it may access your public profile information, your following list, your followers, your lists, all your posts, and your favourites. Applications can never access your e-mail address or password.

- -
- -

Site usage by children

- -

If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site.

- -

If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site.

- -

Law requirements can be different if this server is in another jurisdiction.

- -
- -

Changes to our Privacy Policy

- -

If we decide to change our privacy policy, we will post those changes on this page.

- -

This document is CC-BY-SA. It was last updated March 7, 2018.

- -

Originally adapted from the Discourse privacy policy.

title: "%{instance} Қызмет көрсету шарттары және Құпиялылық саясаты" themes: contrast: Mastodon (Жоғары контраст) diff --git a/config/locales/ko.yml b/config/locales/ko.yml index c16c4f324..538c14a91 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -1500,87 +1500,6 @@ ko: tags: does_not_match_previous_name: 이전 이름과 맞지 않습니다 terms: - body_html: | -

개인정보 정책

-

우리가 어떤 정보를 수집하나요?

- -
    -
  • 기본 계정 정보: 이 서버에 가입하실 때 사용자명, 이메일 주소, 패스워드 등을 입력 받게 됩니다. 추가적으로 표시되는 이름이나 자기소개, 프로필 이미지, 헤더 이미지 등의 프로필 정보를 입력하게 됩니다. 사용자명, 표시되는 이름, 자기소개, 프로필 이미지와 헤더 이미지는 언제나 공개적으로 게시됩니다.
  • -
  • 게시물, 팔로잉, 기타 공개된 정보: 당신이 팔로우 하는 사람들의 리스트는 공개됩니다. 당신을 팔로우 하는 사람들도 마찬가지입니다. 당신이 게시물을 작성하는 경우, 응용프로그램이 메시지를 받았을 때의 날짜와 시간이 기록 됩니다. 게시물은 그림이나 영상 등의 미디어를 포함할 수 있습니다. 퍼블릭과 미표시(unlisted) 게시물은 공개적으로 접근이 가능합니다. 프로필에 게시물을 고정하는 경우 마찬가지로 공개적으로 접근 가능한 정보가 됩니다. 당신의 게시물들은 당신의 팔로워들에게 전송 됩니다. 몇몇 경우 이것은 다른 서버에 전송되고 그곳에 사본이 저장 됩니다. 당신이 게시물을 삭제하는 경우 이 또한 당신의 팔로워들에게 전송 됩니다. 다른 게시물을 리블로깅 하거나 좋아요 하는 경우 이는 언제나 공개적으로 제공 됩니다.
  • -
  • DM, 팔로워 공개 게시물: 모든 게시물들은 서버에서 처리되고 저장됩니다. 팔로워 공개 게시물은 당신의 팔로워와 멘션 된 사람들에게 전달이 됩니다. 다이렉트 메시지는 멘션 된 사람들에게만 전송 됩니다. 몇몇 경우 이것은 다른 서버에 전송 되고 그곳에 사본이 저장됨을 의미합니다. 우리는 이 게시물들이 권한을 가진 사람들만 열람이 가능하도록 노력을 할 것이지만 다른 서버에서는 이것이 실패할 수도 있습니다. 그러므로 당신의 팔로워들이 속한 서버를 재확인하는 것이 중요합니다. 당신은 새 팔로워를 수동으로 승인하거나 거절하도록 설정을 변경할 수 있습니다. 해당 서버의 운영자는 서버가 받는 메시지를 열람할 수 있다는 것을 항상 염두해 두세요, 그리고 수신자들은 스크린샷을 찍거나 복사하는 등의 방법으로 다시 공유할 수 있습니다. 위험한 정보를 마스토돈을 통해 공유하지 마세요.
  • -
  • IP와 기타 메타데이터: 당신이 로그인 하는 경우 IP 주소와 브라우저의 이름을 저장합니다. 모든 세션은 당신이 검토하고 취소할 수 있도록 설정에서 제공 됩니다. 마지막으로 사용 된 IP 주소는 최대 12개월 간 저장됩니다. 또한, 모든 요청에 대해 IP주소를 포함한 정보를 로그에 저장할 수 있습니다.
  • -
- -
- -

우리가 당신의 정보를 어디에 쓰나요?

- -

당신에게서 수집한 정보는 다음과 같은 곳에 사용 됩니다:

- -
    -
  • 마스토돈의 주요 기능 제공. 다른 사람의 게시물에 상호작용 하거나 자신의 게시물을 작성하기 위해서는 로그인을 해야 합니다. 예를 들어, 다른 사람의 게시물을 자신만의 홈 타임라인에서 모아 보기 위해 팔로우를 할 수 있습니다.
  • -
  • 커뮤니티의 중재를 위해, 예를 들어 당신의 IP 주소와 기타 사항을 비교하여 금지를 우회하거나 다른 규칙을 위반하는지 판단하는 데에 사용할 수 있습니다.
  • -
  • 당신이 제공한 이메일 주소를 통해 정보, 다른 사람들의 반응이나 받은 메시지에 대한 알림, 기타 요청 등에 관한 응답 요청 등을 보내는 데에 활용됩니다.
  • -
- -
- -

어떻게 당신의 정보를 보호하나요?

- -

우리는 당신이 입력, 전송, 접근하는 개인정보를 보호하기 위해 다양한 보안 대책을 적용합니다. 당신의 브라우저 세션, 당신의 응용프로그램과의 통신, API는 SSL로 보호 되며 패스워드는 강력한 단방향 해시 알고리즘을 사용합니다. 계정의 더 나은 보안을 위해 2단계 인증을 활성화 할 수 있습니다.

- -
- -

자료 저장 정책은 무엇이죠?

- -

우리는 다음을 위해 노력을 할 것입니다:

- -
    -
  • IP를 포함해 이 서버에 전송 되는 모든 요청에 대한 로그는 90일을 초과하여 저장되지 않습니다.
  • -
  • 가입 된 사용자의 IP 정보는 12개월을 초과하여 저장 되지 않습니다.
  • -
- -

당신은 언제든지 게시물, 미디어 첨부, 프로필 이미지, 헤더 이미지를 포함한 당신의 컨텐트에 대한 아카이브를 요청하고 다운로드 할 수 있습니다.

- -

언제든지 계정을 완전히 삭제할 수 있습니다.

- -
- -

쿠키를 사용하나요?

- -

네. 쿠키는 (당신이 허용한다면) 당신의 웹 브라우저를 통해 서버에서 당신의 하드드라이브에 저장하도록 전송하는 작은 파일들입니다. 이 쿠키들은 당신의 브라우저를 인식하고, 계정이 있는 경우 이와 연결하는 것을 가능하게 합니다.

- -

당신의 환경설정을 저장하고 다음 방문에 활용하기 위해 쿠키를 사용합니다.

- -
- -

외부에 정보를 공개하나요?

- -

우리는 당신을 식별 가능한 개인정보를 외부에 팔거나 제공하거나 전송하지 않습니다. 이는 당사의 사이트를 운영하기 위한, 기밀 유지에 동의하는, 신뢰 가능한 서드파티를 포함하지 않습니다. 또한 법률 준수, 사이트 정책 시행, 또는 당사나 타인에 대한 권리, 재산, 또는 안전보호를 위해 적절하다고 판단되는 경우 당신의 정보를 공개할 수 있습니다.

- -

당신의 공개 게시물은 네트워크에 속한 다른 서버가 다운로드 할 수 있습니다. 당신의 팔로워나 수신자가 이 서버가 아닌 다른 곳에 존재하는 경우 당신의 공개, 팔로워 공개 게시물은 당신의 팔로워가 존재하는 서버로 전송되며, 다이렉트메시지는 수신자가 존재하는 서버로 전송 됩니다.

- -

당신이 계정을 사용하기 위해 응용프로그램을 승인하는 경우 당신이 허용한 권한에 따라 응용프로그램은 당신의 공개 계정정보, 팔로잉 리스트, 팔로워 리스트, 게시물, 좋아요 등에 접근이 가능해집니다. 응용프로그램은 절대로 당신의 이메일 주소나 패스워드에 접근할 수 없습니다.

- -
- -

어린이의 사이트 사용

- -

이 서버가 EU나 EEA에 속해 있다면: 당사의 사이트, 제품과 서비스는 16세 이상인 사람들을 위해 제공됩니다. 당신이 16세 미만이라면 GDPR(General Data Protection Regulation)의 요건에 따라 이 사이트를 사용할 수 없습니다.

- -

이 서버가 미국에 속해 있다면: 당사의 사이트, 제품과 서비스는 13세 이상인 사람들을 위해 제공됩니다. 당신이 13세 미만이라면 COPPA (Children's Online Privacy Protection Act)의 요건에 따라 이 사이트를 사용할 수 없습니다.

- -

이 서버가 있는 관할권에 따라 법적 요구가 달라질 수 있습니다.

- -
- -

개인정보 정책의 변경

- -

만약 우리의 개인정보 정책이 바뀐다면, 이 페이지에 바뀐 정책이 게시됩니다.

- -

이 문서는 CC-BY-SA 라이센스입니다. 마지막 업데이트는 2018년 3월 7일입니다.

- -

Originally adapted from the Discourse privacy policy.

title: "%{instance} 이용약관과 개인정보 취급 방침" themes: contrast: 마스토돈 (고대비) diff --git a/config/locales/ku.yml b/config/locales/ku.yml index 3b4ab87c2..085624c54 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -1528,13 +1528,13 @@ ku: does_not_match_previous_name: bi navê berê re li hev nayê terms: body_html: | -

Privacy Policy

-

What information do we collect?

+

Politîka taybetiyê

+

Em çi zanyarî kom dikin?

    -
  • Basic account information: If you register on this server, you may be asked to enter a username, an e-mail address and a password. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly.
  • -
  • Posts, following and other public information: The list of people you follow is listed publicly, the same is true for your followers. When you submit a message, the date and time is stored as well as the application you submitted the message from. Messages may contain media attachments, such as pictures and videos. Public and unlisted posts are available publicly. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public.
  • -
  • Direct and followers-only posts: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. Please keep in mind that the operators of the server and any receiving server may view such messages, and that recipients may screenshot, copy or otherwise re-share them. Do not share any dangerous information over Mastodon.
  • +
  • Zanyariyên asayî: Ku tu xwe li ser vê rajekarê tomar bikî, Wê ji te xwestin ku e-name û borînpeyvekê têxî. Her wiha dibe ku tu zanyariyên vebijêrkî têxî wekî zanyariyên profîlê profile mînak: Navê xuyangê û jiyanname, wêneya profîlê û wêneya jormalperê bar bikî. Navê bikarhêneriyê, navê xuyangê, jiyanname, wêneya profîlê û wêneya jormalperêher dem bi giştî tên nîşandan.
  • +
  • Şandî, şopandin û zanyariyên giştî yên din: Kesên ku tu wan dişopînî bi giştî tê nîşandan, heman tişt bo şopîneran e. Dema tu peyamekê dişînî, dane û dem tên tomarkirin wekî sepanê. Messages may contain media attachments, such as pictures and videos. Public and unlisted posts are available publicly. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public.
  • +
  • Direct and followers-only posts: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. Please keep in mind that the operators of the server and any receiving server may view such messages, and that recipients may screenshot, copy or otherwise re-share them. Do not share any sensitive information over Mastodon.
  • IPs and other metadata: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server.
@@ -1605,7 +1605,7 @@ ku:

If we decide to change our privacy policy, we will post those changes on this page.

-

This document is CC-BY-SA. It was last updated March 7, 2018.

+

This document is CC-BY-SA. It was last updated May 26, 2022.

Originally adapted from the Discourse privacy policy.

title: "%{instance} mercên bikaranîn û politîkayên nehêniyê" diff --git a/config/locales/lt.yml b/config/locales/lt.yml index 5544fbc4d..864d2f43f 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -616,85 +616,6 @@ lt: reblogged: pakeltas sensitive_content: Jautrus turinys terms: - body_html: | -

Privatumo politika

-

Kokia informacija yra renkama?

-
    -
  • Paprasa paskyros informacija: Jeigu Jūs užsiregistruojate šiame serveryje, Jūsų gali paklausti, kad įrašytumėte slapyvardį, el pašto adresą ir paskyros slaptąžodį. Jūs irgi galite įrašyti papildomą profilio informaciją, tokią kaip rodomas vardas ir biografiją bei įkelti profilio nuotrauką ir antraštės nuotrauką. Slapyvardis , rodomas vardas, biografija, profilio nuotrauka ir antraštės nuotrauka visada viešai prieinama informacija.
  • -
  • Įrašai, sekami ir kita vieša informacija: Sąrašas žmonių, kuriuos Jūs sekate yra matomas viešai, taip pat kaip ir Jūsų sekėjams. Kai Jūs išsiunčiate žinutę, data ir laikas yra išsaugomi bei aplikacija iš kurios jūs išsiuntėte žinutę. Žinutėse gali būti prisegtų medijos failų kaip vaizdo įrašai bei nuotraukos. Viešos ir neįtrauktos į sąrašus žinutės yra viešai prieinamos. Kai nusprendžiate rodyti pranešimą ant savo profilio, tai irgi yra viešai prieinama informacija. Jūsų pranešimai yra pristatomi Jūsų sekėjams, kai kuriais atvėjais tai gali reikšti, kad šie pranešimai yra pristatomi į kitus serverius ir saugomi ten. Kai Jūs ištrinate įrašus, šie įrašai ištrinami ir Jūsų sekėjams. Veiksmas pamėgti kitus įrašus irgi yra viešas. -
  • Tiesioginiai ir tik sekėjams įrašai: Visi įrašai yra saugomi ir apdorojami serveryje. Tik sekėjams įrašai yra pristatomi Jūsų sekėjams ir vartotojams, kurie yra paminėti įrašuose, ir tiesioginiai įrašai pristatomi tik vartotojams, kurie yra paminėti įraše. Kai kuriais atvėjais tai gali reikšti, kad šie įrašai yra pristatomi į kitą serverį ir įrašų kopijos saugomos ten. Mes stengiames riboti prieigą prie šių pranešimų tiktai autorizuotiems gavėjams, tačiau kiti serveriai to gali nedaryti. Todėl yra svarbu peržiurėti serverius, kuriems Jūsų sekėjai priklauso. Jūs galite įjungti būseną nustatymuose, kad galėtumetė priimti arba atmesti naujas sekimo užklausas. Prašome nepamiršti, kad serverio operatoriai ir kiti serveriai, kurie gauna šias žinutes, gali jas peržiurėti bei, kad gavėjai gali padaryti foto kopija, tektso kopija ar kitaip pasidalinti Jūsų žinutėmis. Nesidalinkite jokia jautria ar pavojinga informacija naudojantis Mastodon.
  • -
  • IP adresai ir kiti metaduomenys: Kai prisijungiate, mes įrašome IP adresą iš kurio jūs prisijungėte, ir naudojamos naršyklės pavadinimą. Visos prisijungimo sesijos yra prieinamos Jūsų apžvalgai ir atšaukimams nustatymuose. Paskutiniai IP adresai yra saugomi iki 12-kos mėnesių. Mes taipogi galime pasilikti serverio registrą, kuriuose yra saugoma IP adresai iš visų bandymu prisijungti prie serverio prašant informacijos. -
- -
- -

Kam mes naudojame Jūsų informaciją?

-

Visa surinkta informacija apie jus, gali būti panaudota šiems tikslams:

-
    -
  • Suteikti pagrindį Mastodon funkcialumą. Jūs galite sąveikauti su kitų vartotojų turiniu ir kelti sąvajį, kuomet esate prisijungęs. Pavyzdžiui, galite sekti kitus žmones, peržiūrėti jų sujungtus įrašus savo pačio personalizuotoje laiko juostoje.
  • -
  • Padėti bendruomenės moderavimui, pavyzdžiui, lyginant Jūsų IP adresą, su kitu žinomu IP adresu, kad nustatyti bandymus vengti užblokavimo.
  • -
  • Jūsų el pašto adresas gali būti naudojamas išsiųsti informacija jums, priminimus apie kitų vartotojų interakciją su jūsų paskyra, pavyzdžiui, kai jie jums siunčia žinutes, ir atsakyti į užklausas ir/arba kitais klausimais.
  • -
- -
- -

Kaip mes saugome Jūsų informacija?

- -

Mes implementavome saugumo priemones, tam, kad apsaugotume Jūsų privačią informaciją. Tarp šių dalykų, Jūsų naršyklės sesija, taip pat ir eismas tarp Jūsų aplikacijos ir API yra apsaugoti SSL, ir Jūsų slaptažodis yra užsifruotas sudėtingu algoritmu. Jūs galite įjungti dviejų veiksnių autentikaciją savo paskyrai, taip apsaugodami ją dar daugiau. -

- -
-

Kokia yra mūsų duomenų laikymo politika?

- -

Mes stengiamės:

- -
    -
  • Išsaugoti serverio registrą, kuriame yra visi IP adresai, kurie kreipėsi į serverį, šie duomenys laikomi neilgiau nei 90 dienų.
  • -
  • Išsaugoti IP adresus asocijuotus su registruotais vartotojais, ne ilgiau nei 12 mėnesių.
  • -
- -

Jūs galite pateikti prašymą ir parsisiųsti savo turinio archyvą, kuriame bus Jūsų įrašai, medijos failai, profilio nuotrauka ir antraštės nuotrauka.

- -

Jūs galite VISIŠKAI ištrinti savo paskyrą bet kuriuo metu.

- -
- -

Ar mes naudojame sausainiukus?

- -

Taip. Sausainiukai yra mažos apimties failai, kuriuos svetainė arba svetainės tiekėjas perkelia į Jūsų kompiuterio kietąjį diską naudojantis interneto naršykle (jeigu jūs leidžiate). Šie sausainiai leidžia svetainiai prisiminti Jūsų naršyklę ir jeigu turite registruotą vartotoją, ji asocijuoti su Jūsu vartotoju.

-

Mes naudojame sausainius, kad suprastumėme ir išsaugotumėme Jūsų poreikius kitam apsilankymui.

- -
- -

Ar mes atskleidžiame Jūsų informacija kitoms šalims?

- -

Mes neparduodame, nesikeičiame, ar kitaip mainomės Jūsų privačiais duomenimis su trečiosiomis šalimis. Į šį sąrašą neįeina patikimos trečiosios šalys, kurios padeda mums naudotis tinklalapiu, daryti verslą, ar padėti jums, tol, kol šios šalys sutinka laikyti šią informaciją konfidencialiai. Mes taippat galime paviešinti Jūsų informaciją, jeigu manome, kad Jūs pažeidėte įstatymus, naudojimosi politiką, ar apsaugoti, ginti Jūsų, mūsų ar kitų teises.

- -

Jūsų vieši duomenys gali būti atsisiųsti kitų serverių esančių tinkle. Jūsų vieši bei tik sekėjams skirti įrašai pristatomi serveriams, kuriuose Jūsų sekėjai egzistuoja, o tiesioginės žinutės pristatomos tiesiai į gavėjo serverį, tol, kol šie sekėjai ar gavėjai yra naudotojai iš kitų serverių.

- -

Kai jūs patvirtinate Jūsų paskyros naudojimą aplikacijai, atitinkamai priklausant nuo leidimų, kuriuos jūs suteikėte, aplikacija turi prieiga prie Jūsų viešojo profilio informacijos, Jūsų sekėjų sąrašo, sekamų sąrašo, visų Jūsų įrašų, ir pamėgtų įrašų. - Aplikacijos niekada negali turėti prieigos prie Jūsų el pašto adreso arba slaptažodžio.

- -
- - -

Tinklalapio naudojimas nepilnamečiams

- -

Jeigu serveris yra EU arba EEA: Mūsų tinklalapis, produktai ir visi teikiami aptarnavimai yra teikiami tik žmonėms, kuriems yra bent 16 metų. Jeigu jums yra mažiau nei 16 metų, sekant GDPR reikalavimais (General Data Protection Regulation) prašome nenaudoti šios svetainės.

- -

Jeigu šis serveris yra USA: Mūsų tinklalapis, produktai ir visi teikiami aptarnavimai yra teikiami žmonėms, kuriems yra bent 13 metų. Jeigu jums mažiau nei 13 metų, sekant COPPA reikalavimais (Children's Online Privacy Protection Act) prašome nenaudotis šios svetainės.

- -

Legalūs reikalavimai gali būti kitokie, jeigu serveris yra kitoje jurisdikcijoje.

- -
- -

Pasikeitimai mūsų privatumo politikoje

- -

Jeigu mes nusprendžiame pakeisti savo privatumo politiką, mes įrašysime šiuos pakeitimus šiame tinklalapyje.

- -

Šis dokumentas yra CC-BY-SA. Paskutinį kartą keistas Kovo 7, 2018.

- -

Originaliai adaptuotas iš Discourse privatumo politika.

title: "%{instance} Naudojimosi Sąlygos ir Privatumo Politika" themes: contrast: Mastodon (Didelio Kontrasto) diff --git a/config/locales/lv.yml b/config/locales/lv.yml index e62264acd..e7882c510 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -1553,48 +1553,36 @@ lv: does_not_match_previous_name: nesakrīt ar iepriekšējo nosaukumu terms: body_html: | -

Privātuma politika

+

Konfidencialitātes politika

Kādu informāciju mēs apkopojam?

    -
  • Konta pamatinformācija: Ja tu reģistrējies šajā serverī, iespējams, tev tiks lūgts ievadīt lietotājvārdu, e-pasta adresi un paroli. Vari arī ievadīt papildu profila informāciju, piemēram, parādāmo vārdu un biogrāfiju, kā arī augšupielādēt profila attēlu un galvenes attēlu. Lietotājvārds, parādāmais vārds, biogrāfija, profila attēls un galvenes attēls vienmēr ir publiski.
  • -
  • Ziņas, sekošana un cita publiska informācija: To personu saraksts, kurām tu seko, ir publiski pieejams, tas pats attiecas uz taviem sekotājiem. Iesniedzot ziņojumu, tiek saglabāts datums un laiks, kā arī pieteikums, no kura iesniedzi ziņojumu. Ziņojumos var būt mediju pielikumi, piemēram, attēli un videoklipi. Publiskās un nerindotās ziņas ir pieejamas publiski. Ja savā profilā ievieto ziņu, tā ir arī publiski pieejama informācija. Ziņas tiek piegādātas taviem sekotājiem, dažos gadījumos tas nozīmē, ka tās tiek piegādātas uz dažādiem serveriem un tur tiek glabātas to kopijas. Dzēšot ziņas, tas tāpat tiek piegādāts taviem sekotājiem. Atkārtota emuāra pievienošana vai citas ziņas pievienošana izlasei vienmēr ir publiskas.
  • -
  • Tiešas un tikai sekotāju ziņas: Visas ziņas tiek glabātas un apstrādātas serverī. Tikai sekotājiem paredzētās ziņas tiek piegādātas taviem sekotājiem un tajās minētajiem lietotājiem, un tiešās ziņas tiek piegādātas tikai tajās minētajiem lietotājiem. Dažos gadījumos tas nozīmē, ka tās tiek piegādātas uz dažādiem serveriem un tur tiek saglabātas kopijas. Mēs godprātīgi cenšamies ierobežot piekļuvi šīm ziņām tikai pilnvarotām personām, taču citiem serveriem tas var neizdoties. Tāpēc ir svarīgi pārskatīt serverus, kuriem pieder tavi sekotāji. Iestatījumos varat manuāli pārslēgt iespēju apstiprināt un noraidīt jaunus sekotājus. Lūdzu, ņemiet vērā, ka servera operatori un jebkura saņēmēja servera operatori var skatīt šādus ziņojumus un adresāti var uzņemt to ekrānšāviņus, kopēt vai citādi atkārtoti kopīgot. Nekopīgo nekādu sensitīvu informāciju, izmantojot Mastodon.
  • -
  • IP un citi metadati: Kad tu piesakies, mēs ierakstām IP adresi, no kuras piesakies, kā arī tavu pārlūkprogrammas un/vai lietojumprogrammas nosaukumu. Visas pieteikušās sesijas ir pieejamas iestatījumos pārskatīšanai un atsaukšanai. Pēdējā izmantotā IP adrese tiek glabāta līdz 12 mēnešiem. Mēs varam arī saglabāt servera žurnālus, kuros ir iekļauta katra mūsu serverim nosūtītā pieprasījuma IP adrese.
  • +
  • Konta pamatinformācija: ja reģistrējaties šajā serverī, iespējams, jums tiks lūgts ievadīt lietotājvārdu, e-pasta adresi un paroli. Varat arī ievadīt papildu profila informāciju, piemēram, parādāmo vārdu un biogrāfiju, kā arī augšupielādēt profila attēlu un galvenes attēlu. Lietotājvārds, parādāmais vārds, biogrāfija, profila attēls un galvenes attēls vienmēr ir publiski norādīti.
  • +
  • Ziņas, sekošana un cita publiska informācija: to personu saraksts, kurām sekojat, ir publiski pieejams, tas pats attiecas uz jūsu sekotājiem. Iesniedzot ziņojumu, tiek saglabāts datums un laiks, kā arī pieteikums, no kura iesniedzāt ziņojumu. Ziņojumos var būt multivides pielikumi, piemēram, attēli un video. Publiskās un nerindotās ziņas ir pieejamas publiski. Ja savā profilā ievietojat ziņu, tā ir arī publiski pieejama informācija. Jūsu ziņas tiek piegādātas jūsu sekotājiem, dažos gadījumos tas nozīmē, ka tās tiek piegādātas uz dažādiem serveriem un tur tiek glabātas kopijas. Dzēšot ziņas, tas tāpat tiek piegādāts jūsu sekotājiem. Atkārtota emuāra pievienošana vai citas ziņas pievienošana izlasei vienmēr ir publiska.
  • +
  • Tiešas un tikai sekotāju ziņas: visas ziņas tiek glabātas un apstrādātas serverī. Tikai sekotājiem paredzētās ziņas tiek piegādātas jūsu sekotājiem un tajos minētajiem lietotājiem, un tiešās ziņas tiek piegādātas tikai tajos minētajiem lietotājiem. Dažos gadījumos tas nozīmē, ka tie tiek piegādāti uz dažādiem serveriem un tur tiek saglabātas kopijas. Mēs godprātīgi cenšamies ierobežot piekļuvi šīm ziņām tikai pilnvarotām personām, taču citiem serveriem tas var neizdoties. Tāpēc ir svarīgi pārskatīt serverus, kuriem pieder jūsu sekotāji. Iestatījumos varat manuāli pārslēgt iespēju apstiprināt un noraidīt jaunus sekotājus. Lūdzu, ņemiet vērā, ka servera operatori un jebkura saņēmēja servera operatori var skatīt šādus ziņojumus un ka adresāti var tos ekrānuzņēmumus, kopēt vai citādi atkārtoti kopīgot. Nekopīgojiet sensitīvu informāciju pakalpojumā Mastodon.
  • +
  • IP un citi metadati: kad jūs piesakāties, mēs ierakstām IP adresi, no kuras piesakāties, kā arī jūsu pārlūkprogrammas lietojumprogrammas nosaukumu. Visas reģistrētās sesijas iestatījumos ir pieejamas pārskatīšanai un atsaukšanai. Pēdējā izmantotā IP adrese tiek glabāta līdz 12 mēnešiem. Mēs varam arī saglabāt servera žurnālus, kuros ir iekļauta katra mūsu serverim nosūtītā pieprasījuma IP adrese.

-

Kam mēs izmantojam tavu informāciju?

- -

Jebkuru informāciju, ko mēs apkopojam par tevi, var izmantot šādos veidos:

- -
    -
  • Lai nodrošinātu Mastodon pamatfunkcionalitāti. Tu vari mijiedarboties ar citu personu saturu un izlikt savu saturu tikai tad, kad esi pieteicies. Piemēram, tu vari sekot citām personām, lai skatītu viņu apvienotās ziņas savā personalizētajā mājas laika skalā.
  • -
  • Lai palīdzētu regulēt kopienu, piemēram, salīdzinot tavu IP adresi ar citām zināmām, lai noteiktu izvairīšanos no aizlieguma vai citus pārkāpumus.
  • -
  • Tevis norādītā e-pasta adrese var tikt izmantota, lai nosūtītu tev informāciju, paziņojumus par citām personām, kas mijiedarbojas ar tavu saturu vai sūta tev ziņojumus, kā arī atbildētu uz jautājumiem un/vai citiem pieprasījumiem vai jautājumiem.
  • -
- -
- -

Kā mēs aizsargājam tavu informāciju?

- -

Mēs ieviešam dažādus drošības pasākumus, lai saglabātu tavas personiskās informācijas drošību, kad ievadi, iesniedz vai piekļūsti savai personas informācijai. Cita starpā pārlūkprogrammas sesija, kā arī datplūsma starp lietojumprogrammām un API ir aizsargāta ar SSL, un tava parole tiek sajaukta, izmantojot spēcīgu vienvirziena algoritmu. Vari iespējot divu faktoru autentifikāciju, lai vēl vairāk aizsargātu piekļuvi savam kontam.

- -
- -

Kam mēs izmantojam tavu informāciju?

+

Kam mēs izmantojam jūsu informāciju?

Jebkuru informāciju, ko mēs apkopojam no jums, var izmantot šādos veidos:

    -
  • Lai nodrošinātu Mastodon pamatfunkcionalitāti. Jūs varat mijiedarboties ar citu personu saturu un izlikt savu saturu tikai tad, kad esat pieteicies. Piemēram, varat sekot citām personām, lai skatītu viņu apvienotās ziņas savā personalizētajā mājas laika skalā.
  • +
  • Lai nodrošinātu Mastodon pamatfunkcionalitāti. Jūs varat mijiedarboties ar citu cilvēku saturu un izlikt savu saturu tikai tad, kad esat pieteicies. Piemēram, varat sekot citām personām, lai skatītu viņu apvienotās ziņas savā personalizētajā mājas laika skalā.
  • Lai palīdzētu regulēt kopienu, piemēram, salīdzinot jūsu IP adresi ar citām zināmām, lai noteiktu izvairīšanos no aizlieguma vai citus pārkāpumus.
  • Jūsu norādītā e-pasta adrese var tikt izmantota, lai nosūtītu jums informāciju, paziņojumus par citām personām, kas mijiedarbojas ar jūsu saturu vai sūta jums ziņojumus, kā arī atbildētu uz jautājumiem un/vai citiem pieprasījumiem vai jautājumiem.

+

Kā mēs aizsargājam jūsu informāciju?

+ +

Mēs ieviešam dažādus drošības pasākumus, lai saglabātu jūsu personiskās informācijas drošību, kad ievadāt, iesniedzat vai piekļūstat savai personas informācijai. Cita starpā jūsu pārlūkprogrammas sesija, kā arī datplūsma starp jūsu lietojumprogrammām un API ir aizsargāta ar SSL, un jūsu parole tiek sajaukta, izmantojot spēcīgu vienvirziena algoritmu. Varat iespējot divu faktoru autentifikāciju, lai vēl vairāk aizsargātu piekļuvi savam kontam.

+ +
+

Kāda ir mūsu datu saglabāšanas politika?

Mēs godprātīgi centīsimies:

@@ -1606,13 +1594,13 @@ lv:

Varat pieprasīt un lejupielādēt sava satura arhīvu, tostarp ziņas, multivides pielikumus, profila attēlu un galvenes attēlu.

-

Jūs jebkurā laikā varat neatgriezeniski izdzēst savu kontu.

+

Jūs jebkurā laikā varat neatgriezeniski dzēst savu kontu.


Vai mēs izmantojam sīkfailus?

-

Jā. Sīkfaili ir mazi faili, ko vietne vai tās pakalpojumu sniedzējs pārsūta uz jūsu datora cieto disku, izmantojot jūsu tīmekļa pārlūkprogrammu (ja atļaujat). Šīs sīkdatnes ļauj vietnei atpazīt jūsu pārlūkprogrammu un, ja jums ir reģistrēts konts, saistīt to ar jūsu reģistrēto kontu.

+

Jā. Sīkfaili ir nelieli faili, ko vietne vai tās pakalpojumu sniedzējs pārsūta uz jūsu datora cieto disku, izmantojot jūsu tīmekļa pārlūkprogrammu (ja atļaujat). Šīs sīkdatnes ļauj vietnei atpazīt jūsu pārlūkprogrammu un, ja jums ir reģistrēts konts, saistīt to ar jūsu reģistrēto kontu.

Mēs izmantojam sīkfailus, lai saprastu un saglabātu jūsu preferences turpmākiem apmeklējumiem.

@@ -1620,11 +1608,11 @@ lv:

Vai mēs izpaužam kādu informāciju ārējām pusēm?

-

Mēs nepārdodam, netirgojam vai citādi nenododam ārējām pusēm jūsu personu identificējošo informāciju. Tas neietver uzticamas trešās puses, kas palīdz mums darboties mūsu vietnē, veikt mūsu uzņēmējdarbību vai apkalpot jūs, ja vien šīs puses piekrīt saglabāt šīs informācijas konfidencialitāti. Mēs varam arī izpaust jūsu informāciju, ja uzskatām, ka tā ir piemērota, lai ievērotu likumus, īstenotu mūsu vietnes politikas vai aizsargātu mūsu vai citu tiesības, īpašumu vai drošību.

+

Mēs nepārdodam, netirgojam vai citādi nesniedzam trešajām pusēm jūsu personu identificējošo informāciju. Tas neietver uzticamas trešās puses, kas palīdz mums darboties mūsu vietnē, veikt mūsu uzņēmējdarbību vai apkalpot jūs, ja vien šīs puses piekrīt saglabāt šīs informācijas konfidencialitāti. Mēs varam arī izpaust jūsu informāciju, ja uzskatām, ka tā ir piemērota, lai ievērotu likumus, īstenotu mūsu vietnes politikas vai aizsargātu mūsu vai citu tiesības, īpašumu vai drošību.

Jūsu publisko saturu var lejupielādēt citi tīkla serveri. Jūsu publiskās un tikai sekotājiem paredzētās ziņas tiek piegādātas serveros, kur atrodas jūsu sekotāji, un tiešie ziņojumi tiek piegādāti adresātu serveriem, ja šie sekotāji vai adresāti atrodas citā serverī, nevis šajā.

-

Kad jūs pilnvarojat lietojumprogrammu izmantot jūsu kontu, atkarībā no jūsu apstiprināto atļauju apjoma, tā var piekļūt jūsu publiskā profila informācijai, jūsu sekojošajam sarakstam, jūsu sekotājiem, sarakstiem, visām jūsu ziņām un jūsu izlasei. Lietojumprogrammas nekad nevar piekļūt jūsu e-pasta adresei vai parolei.

+

Kad jūs pilnvarojat lietojumprogrammu izmantot jūsu kontu, atkarībā no jūsu apstiprināto atļauju apjoma, tā var piekļūt jūsu publiskā profila informācijai, jūsu sekojošajam sarakstam, jūsu sekotājiem, jūsu sarakstiem, visām jūsu ziņām un jūsu izlasei. Lietojumprogrammas nekad nevar piekļūt jūsu e-pasta adresei vai parolei.


@@ -1642,9 +1630,9 @@ lv:

Ja mēs nolemsim mainīt savu konfidencialitātes politiku, mēs publicēsim šīs izmaiņas šajā lapā.

-

Šis dokuments ir CC-BY-SA. Pēdējo reizi tas tika atjaunināts 2018. gada 7. martā.

+

Šis dokuments ir CC-BY-SA. Pēdējo reizi tas tika atjaunināts 2022. gada 26. maijā.

-

Sākotnēji pielāgots no Discourse konfidencialitātes politikas.

+

Sākotnēji adaptēts no Discourse konfidencialitātes politikas.

title: "%{instance} Pakalpojuma Noteikumi un Privātuma Politika" themes: contrast: Mastodon (Augsts kontrasts) diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 8e12893f4..764ae42d6 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -16,6 +16,7 @@ nl: contact: Contact contact_missing: Niet ingesteld contact_unavailable: n.v.t + continue_to_web: Doorgaan in de web-app discover_users: Gebruikers ontdekken documentation: Documentatie federation_hint_html: Met een account op %{instance} ben je in staat om mensen die zich op andere Mastodonservers (en op andere plekken) bevinden te volgen. @@ -23,6 +24,8 @@ nl: hosted_on: Mastodon op %{domain} instance_actor_flash: "Dit account is een virtuel actor dat wordt gebruikt om de server zelf te vertegenwoordigen en is geen individuele gebruiker. Het wordt voor federatiedoeleinden gebruikt en moet niet worden geblokkeerd, tenzij je de hele server wilt blokkeren. In zo'n geval dien je echter een domeinblokkade te gebruiken. \n" learn_more: Meer leren + logged_in_as_html: Je bent momenteel ingelogd als %{username}. + logout_before_registering: Je bent al ingelogd. privacy_policy: Privacybeleid rules: Serverregels rules_html: 'Hieronder vind je een samenvatting van de regels die je op deze Mastodon-server moet opvolgen:' @@ -157,6 +160,10 @@ nl: not_subscribed: Niet geabonneerd pending: Moet nog beoordeeld worden perform_full_suspension: Opschorten + previous_strikes: Vorige overtredingen + previous_strikes_description_html: + one: Dit account heeft één overtreding. + other: Dit account heeft %{count} overtredingen. promote: Promoveren protocol: Protocol public: Openbaar @@ -781,6 +788,16 @@ nl: directory: Gebruikersgids explanation: Ontdek gebruikers aan de hand van hun interesses explore_mastodon: "%{title} verkennen" + disputes: + strikes: + appeal: Beroep + appeal_approved: Het aangetekende beroep is goedgekeurd en deze overtreding is niet langer geldig + appeal_rejected: Het aangetekende beroep is afgewezen + appeal_submitted_at: Beroep aangetekend + appealed_msg: Jouw aangetekende beroep is ingediend. Wanneer deze wordt goedgekeurd, krijg je hiervan bericht. + appeals: + submit: Beroep aantekenen + approve_appeal: Beroep goedkeuren domain_validator: invalid_domain: is een ongeldige domeinnaam errors: @@ -849,8 +866,10 @@ nl: changes_saved_msg: Wijzigingen succesvol opgeslagen! copy: Kopiëren delete: Verwijderen + none: Geen order_by: Sorteer op save_changes: Wijzigingen opslaan + today: vandaag validation_errors: one: Er is iets niet helemaal goed! Bekijk onderstaande fout other: Er is iets niet helemaal goed! Bekijk onderstaande %{count} fouten @@ -1182,10 +1201,10 @@ nl:

What information do we collect?

    -
  • Basic account information: If you register on this server, you may be asked to enter a username, an e-mail address and a password. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly.
  • -
  • Posts, following and other public information: The list of people you follow is listed publicly, the same is true for your followers. When you submit a message, the date and time is stored as well as the application you submitted the message from. Messages may contain media attachments, such as pictures and videos. Public and unlisted posts are available publicly. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public.
  • -
  • Direct and followers-only posts: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. Please keep in mind that the operators of the server and any receiving server may view such messages, and that recipients may screenshot, copy or otherwise re-share them. Do not share any dangerous information over Mastodon.
  • -
  • IPs and other metadata: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server.
  • +
  • Basic account information: If you register on this server, you may be asked to enter a username, an e-mail address and a password. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly.
  • +
  • Posts, following and other public information: The list of people you follow is listed publicly, the same is true for your followers. When you submit a message, the date and time is stored as well as the application you submitted the message from. Messages may contain media attachments, such as pictures and videos. Public and unlisted posts are available publicly. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public.
  • +
  • Direct and followers-only posts: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. Please keep in mind that the operators of the server and any receiving server may view such messages, and that recipients may screenshot, copy or otherwise re-share them. Do not share any sensitive information over Mastodon.
  • +
  • IPs and other metadata: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server.

@@ -1195,9 +1214,9 @@ nl:

Any of the information we collect from you may be used in the following ways:

    -
  • To provide the core functionality of Mastodon. You can only interact with other people's content and post your own content when you are logged in. For example, you may follow other people to view their combined posts in your own personalized home timeline.
  • -
  • To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations.
  • -
  • The email address you provide may be used to send you information, notifications about other people interacting with your content or sending you messages, and to respond to inquiries, and/or other requests or questions.
  • +
  • To provide the core functionality of Mastodon. You can only interact with other people's content and post your own content when you are logged in. For example, you may follow other people to view their combined posts in your own personalized home timeline.
  • +
  • To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations.
  • +
  • The email address you provide may be used to send you information, notifications about other people interacting with your content or sending you messages, and to respond to inquiries, and/or other requests or questions.

@@ -1213,8 +1232,8 @@ nl:

We will make a good faith effort to:

    -
  • Retain server logs containing the IP address of all requests to this server, in so far as such logs are kept, no more than 90 days.
  • -
  • Retain the IP addresses associated with registered users no more than 12 months.
  • +
  • Retain server logs containing the IP address of all requests to this server, in so far as such logs are kept, no more than 90 days.
  • +
  • Retain the IP addresses associated with registered users no more than 12 months.

You can request and download an archive of your content, including your posts, media attachments, profile picture, and header image.

@@ -1255,7 +1274,7 @@ nl:

If we decide to change our privacy policy, we will post those changes on this page.

-

This document is CC-BY-SA. It was last updated March 7, 2018.

+

This document is CC-BY-SA. It was last updated May 26, 2022.

Originally adapted from the Discourse privacy policy.

title: Gebruiksvoorwaarden en privacybeleid van %{instance} diff --git a/config/locales/nn.yml b/config/locales/nn.yml index 48191ce98..ea5020bbf 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -29,9 +29,6 @@ nn: see_whats_happening: Sjå kva som skjer server_stats: 'Tenarstatistikk:' source_code: Kjeldekode - status_count_after: - one: innlegg - other: statuser status_count_before: Som skreiv tagline: Fylg vener og oppdag nye terms: Brukarvilkår @@ -1090,9 +1087,6 @@ nn: image: one: "%{count} bilete" other: "%{count} bilete" - video: - one: "%{count} video" - other: "%{count} videoer" boosted_from_html: Framheva av %{acct_link} content_warning: 'Innhaldsåtvaring: %{warning}' disallowed_hashtags: @@ -1108,9 +1102,6 @@ nn: ownership: Du kan ikkje festa andre sine tut reblog: Ei framheving kan ikkje festast poll: - total_people: - one: "%{count} person" - other: "%{count} personer" total_votes: one: "%{count} røyst" other: "%{count} røyster" @@ -1136,87 +1127,6 @@ nn: tags: does_not_match_previous_name: stemmar ikkje med det førre namnet terms: - body_html: | -

Privatlivsretningslinjer

-

Hva slags informasjon samler vi inn?

- -
    -
  • Grunnleggende kontoinformasjon: Dersom du registrerer deg på denne tjeneren, vil du kanskje bli spurt om å skrive inn et brukernavn, en E-postadresse, og et passord. Du kan også skrive inn ytterligere profilinformasjon som f.eks. et visningsnavn og selvbiografi, og laste opp et profilbilde og toppfeltbilde. Brukernavnet, visningsnavnet, selvbiografien, profilbildet, og toppfeltbildet blir alltid vist offentlig.
  • -
  • Innlegg, følging, og annen offentlig informasjon: Listen over folk du følger blir vist offentlig, det samme gjelder for følgerne dine. Når du sender inn en melding, blir datoen og tidspunktet lagret såvel som programmet du sendte inn meldingen ifra. Meldinger kan inneholde mediavedlegg, som f.eks. bilder og videoer. Offentlige og uoppførte innlegg er offentlig tilgjengelige. Når du viser frem et innlegg på profilen din, er det også offentlig tilgjengelig informasjon. Dinne innlegg blir levert til dine følgere, og i noen tilfeller betyr det at blir levert til forskjellige tjenere og at kopier blir lagret der. Når du sletter innlegg, blir også det levert til dine følgere. Det å fremheve eller like et annet innlegg er alltid offentlig.
  • -
  • Direkteinnlegg og innlegg som kun er for følgere: Alle innlegg er lagret og behandlet på tjeneren. Innlegg som kun er for følgere, blir levert til dine følgere, og direkteinnlegg leveres kun til brukere som er nevnt i dem. I noen tilfeller betyr det at de blir levert til forskjellige tjenere og at kopier blir lagret der. Vi gjør et forsøk i god sportsånd for å begrense tilgangen til disse innleggene til kun autoriserte personer, men andre tjenere kan mislykkes med sådan. Derfor er det viktig å gå i gjennom tjenerne som følgerne dine hører til i. I innstillingene kan du veksle på en innstilling for å godkjenne og avslå nye følgere manuelt. Vennligst ha i tankene at operatørene til tjeneren og enhver mottakende tjener kan se slike meldinger, og at mottakere kan ta skjermklipp av, kopiere, eller på annet vis dele dem videre. Ikke del noe farlig informasjon over Mastodon.
  • -
  • IP-er og andre metadata: Når du logger på, lagrer vi IP-adressen som du logget deg på fra, såvel som navnet til nettleserprogrammet ditt. Du kan gå gjennom og tilbakekalle alle påloggede økter i innstillingene. Den seneste IP-adressen du brukte, blir lagret i opptil 12 måneder. Vi vil kanskje også holde på tjenerloggføringer som inkluderer IP-adressen til alle forespørsler til tjeneren vår.
  • -
- -
- -

Hva bruker vi informasjonen din til?

- -

Hva som helst av informasjonen som vi samler inn fra deg, kan bli brukt på de følgende måtene:

- -
    -
  • Til å levere grunnfunksjonaliteten til Mastodon. Du kan bare samhandle med andre folks innhold og legge ut ditt eget innhold når du er logget på. For eksempel kan du følge andre folk for å se deres kombinerte innlegg i din egen personliggjorte hjemmetidslinje.
  • -
  • Til å bistå i moderasjonen av samfunnet, for eksempel å sammenligne IP-adressen din med andre andre kjente adresser for å avgjøre saker om bannlysningsunngåelse eller andre regelbrudd.
  • -
  • E-postadressen du oppgir kan bli brukt til å sende deg informasjon, varsler om at andre folk samhandler med innholdet ditt eller sender deg meldinger, og å svare på brukerstøttespørsmål, og/eller andre forespørsler eller spørsmål.
  • -
- -
- -

Hvordan beskytter vi informasjonen din?

- -

Vi implementer en rekke sikkerhetstiltak for å holde på sikkerheten til din personlige informasjon når du skriver inn, sender inn, eller besøker din personlige informasjon. Blant annet er din nettleserøkt, såvel som trafikken mellom dine apper og API-er, sikret med SSL, og passordet ditt er saltet med en kraftig énveisalgoritme. Du kan skru på 2-trinnsinnlogging for å sikre tilgangen til kontoen din ytterligere.

- -
- -

Hva er våre databeholdingsretningslinjer?

- -

Vi vil gjøre en innsats i god sportsånd for å

- -
    -
  • Beholde tjenerloggføringer som inneholder IP-adressen til alle forespørsler til denne tjeneren, dersom det blir loggført i det hele tatt, i ikke mer enn 90 dager.
  • -
  • Beholde IP-adressene som er forbundet med registrerte brukere i ikke mer enn 12 måneder.
  • -
- -

Du kan be om og laste ned et arkiv av innholdet ditt, inkludert dine innlegg, media, mediavedlegg, profilbilde, og toppfeltbilde.

- -

Du kan ugjenkallelig slette kontoen til enhver tid.

- -
- -

Bruker vi infokapsler?

- -

Ja. Infokapsler er små filer som et nettsted eller dens tjenesteleverandør overfører til harddisken på datamaskinen din gjennom nettleseren din (dersom du tillater dette). Disse infokapslene lar nettstedet kjenne igjen nettleseren din og, dersom du har en registrert konto, assosiere den med din registrerte konto.

- -

Vi benytter infokapsler for å forstå og lagre dinne innstillinger til fremtidige besøk.

- -
- -

Forteller vi om noe informasjon til utenforstående parter?

- -

Vi hverken selger, bytter, eller på andre måter overfører din personlig identifiserbare informasjon til utenforstående parter. Dette inkluderer ikke tredjeparter som vi stoler på og som hjelper oss med å drifte nettstedet vårt, drifte våre forretninger, eller å yte tjenester til deg, så lenge disse partene sier seg enige i å holde denne informasjonen hemmelig. Vi kan også frigi informasjonen vår dersom vi mener et frigiving er passende for å møte loven, handle i tråd med vår nettstedsretningslinjer, eller å beskytte vår eller andres rettigheter, eiendom, eller trygghet.

- -

Ditt offentlige innhold kan bli lastet ned av andre tjenere i nettverket. Dine offentlige innlegg og innlegg som kun er for følgere blir levert til tjenerne der følgerne dine holder til, og direktemeldinger blir levert il mottakernes tjenere, i den grad de følgerne eller mottakerne holder på en annen tjener enn denne.

- -

Når du gir et program autorisasjon til å bruke kontoen din, avhengig av omfanget av tillatelser som du tillater, kan den få tilgang til din offentlige profilinformasjon, din følgingsliste, dine følgere, dine lister, alle dine innlegg, og dine likinger. Programmer kan aldri få tilgang til E-postadressen eller passordet ditt.

- -
- -

Nettstedsbruk av barn

- -

Dersom denne tjeneren er i EU eller EØS: Vårt nettsted, produkter og tjenester er alle siktet inn mot folk som er minst 16 år gamle. Dersom du er under 16, sier GDPR (General Data Protection Regulation) at du ikke kan bruke dette nettstedet.

- -

Dersom denne tjeneren er i USA: Vårt nettsted, produkter og tjenester er alle siktet inn mot folk som er minst 16 år gamle. Dersom du er under 16, sier COPPA (Children's Online Privacy Protection Act) at du ikke kan bruke dette nettstedet.

- -

Lovmessige krav kan være forskjellige dersom denne tjeneren befinner seg i en annen jurisdiksjon.

- -
- -

Endringer i våre privatlivsretningslinjer

- -

Dersom vi bestemmer oss for å endre våre privatlivsretningslinjer, vil vi legge ut endringene på denne siden.

- -

Dette dokumentet er lisensiert under CC BY-SA. Den engelske originalversjonen ble sist oppdatert den 7. mars 2018. Den norske oversettelsen ble sist oppdatert den 13. desember 2019.

- -

Opprinnelig modifisert utifra Discourse sine privatlivsretningslinjer.

title: Tenestevilkår og personvernsvilkår for %{instance} themes: contrast: Mastodon (Høg kontrast) diff --git a/config/locales/no.yml b/config/locales/no.yml index 9f0d7b8c4..4abc8f086 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -1117,87 +1117,6 @@ tags: does_not_match_previous_name: samsvarer ikke med det forrige navnet terms: - body_html: | -

Privatlivsretningslinjer

-

Hva slags informasjon samler vi inn?

- -
    -
  • Grunnleggende kontoinformasjon: Dersom du registrerer deg på denne tjeneren, vil du kanskje bli spurt om å skrive inn et brukernavn, en E-postadresse, og et passord. Du kan også skrive inn ytterligere profilinformasjon som f.eks. et visningsnavn og selvbiografi, og laste opp et profilbilde og toppfeltbilde. Brukernavnet, visningsnavnet, selvbiografien, profilbildet, og toppfeltbildet blir alltid vist offentlig.
  • -
  • Innlegg, følging, og annen offentlig informasjon: Listen over folk du følger blir vist offentlig, det samme gjelder for følgerne dine. Når du sender inn en melding, blir datoen og tidspunktet lagret såvel som programmet du sendte inn meldingen ifra. Meldinger kan inneholde mediavedlegg, som f.eks. bilder og videoer. Offentlige og uoppførte innlegg er offentlig tilgjengelige. Når du viser frem et innlegg på profilen din, er det også offentlig tilgjengelig informasjon. Dinne innlegg blir levert til dine følgere, og i noen tilfeller betyr det at blir levert til forskjellige tjenere og at kopier blir lagret der. Når du sletter innlegg, blir også det levert til dine følgere. Det å fremheve eller like et annet innlegg er alltid offentlig.
  • -
  • Direkteinnlegg og innlegg som kun er for følgere: Alle innlegg er lagret og behandlet på tjeneren. Innlegg som kun er for følgere, blir levert til dine følgere, og direkteinnlegg leveres kun til brukere som er nevnt i dem. I noen tilfeller betyr det at de blir levert til forskjellige tjenere og at kopier blir lagret der. Vi gjør et forsøk i god sportsånd for å begrense tilgangen til disse innleggene til kun autoriserte personer, men andre tjenere kan mislykkes med sådan. Derfor er det viktig å gå i gjennom tjenerne som følgerne dine hører til i. I innstillingene kan du veksle på en innstilling for å godkjenne og avslå nye følgere manuelt. Vennligst ha i tankene at operatørene til tjeneren og enhver mottakende tjener kan se slike meldinger, og at mottakere kan ta skjermklipp av, kopiere, eller på annet vis dele dem videre. Ikke del noe farlig informasjon over Mastodon.
  • -
  • IP-er og andre metadata: Når du logger på, lagrer vi IP-adressen som du logget deg på fra, såvel som navnet til nettleserprogrammet ditt. Du kan gå gjennom og tilbakekalle alle påloggede økter i innstillingene. Den seneste IP-adressen du brukte, blir lagret i opptil 12 måneder. Vi vil kanskje også holde på tjenerloggføringer som inkluderer IP-adressen til alle forespørsler til tjeneren vår.
  • -
- -
- -

Hva bruker vi informasjonen din til?

- -

Hva som helst av informasjonen som vi samler inn fra deg, kan bli brukt på de følgende måtene:

- -
    -
  • Til å levere grunnfunksjonaliteten til Mastodon. Du kan bare samhandle med andre folks innhold og legge ut ditt eget innhold når du er logget på. For eksempel kan du følge andre folk for å se deres kombinerte innlegg i din egen personliggjorte hjemmetidslinje.
  • -
  • Til å bistå i moderasjonen av samfunnet, for eksempel å sammenligne IP-adressen din med andre andre kjente adresser for å avgjøre saker om bannlysningsunngåelse eller andre regelbrudd.
  • -
  • E-postadressen du oppgir kan bli brukt til å sende deg informasjon, varsler om at andre folk samhandler med innholdet ditt eller sender deg meldinger, og å svare på brukerstøttespørsmål, og/eller andre forespørsler eller spørsmål.
  • -
- -
- -

Hvordan beskytter vi informasjonen din?

- -

Vi implementer en rekke sikkerhetstiltak for å holde på sikkerheten til din personlige informasjon når du skriver inn, sender inn, eller besøker din personlige informasjon. Blant annet er din nettleserøkt, såvel som trafikken mellom dine apper og API-er, sikret med SSL, og passordet ditt er saltet med en kraftig énveisalgoritme. Du kan skru på 2-trinnsinnlogging for å sikre tilgangen til kontoen din ytterligere.

- -
- -

Hva er våre databeholdingsretningslinjer?

- -

Vi vil gjøre en innsats i god sportsånd for å

- -
    -
  • Beholde tjenerloggføringer som inneholder IP-adressen til alle forespørsler til denne tjeneren, dersom det blir loggført i det hele tatt, i ikke mer enn 90 dager.
  • -
  • Beholde IP-adressene som er forbundet med registrerte brukere i ikke mer enn 12 måneder.
  • -
- -

Du kan be om og laste ned et arkiv av innholdet ditt, inkludert dine innlegg, media, mediavedlegg, profilbilde, og toppfeltbilde.

- -

Du kan ugjenkallelig slette kontoen til enhver tid.

- -
- -

Bruker vi infokapsler?

- -

Ja. Infokapsler er små filer som et nettsted eller dens tjenesteleverandør overfører til harddisken på datamaskinen din gjennom nettleseren din (dersom du tillater dette). Disse infokapslene lar nettstedet kjenne igjen nettleseren din og, dersom du har en registrert konto, assosiere den med din registrerte konto.

- -

Vi benytter infokapsler for å forstå og lagre dinne innstillinger til fremtidige besøk.

- -
- -

Forteller vi om noe informasjon til utenforstående parter?

- -

Vi hverken selger, bytter, eller på andre måter overfører din personlig identifiserbare informasjon til utenforstående parter. Dette inkluderer ikke tredjeparter som vi stoler på og som hjelper oss med å drifte nettstedet vårt, drifte våre forretninger, eller å yte tjenester til deg, så lenge disse partene sier seg enige i å holde denne informasjonen hemmelig. Vi kan også frigi informasjonen vår dersom vi mener et frigiving er passende for å møte loven, handle i tråd med vår nettstedsretningslinjer, eller å beskytte vår eller andres rettigheter, eiendom, eller trygghet.

- -

Ditt offentlige innhold kan bli lastet ned av andre tjenere i nettverket. Dine offentlige innlegg og innlegg som kun er for følgere blir levert til tjenerne der følgerne dine holder til, og direktemeldinger blir levert il mottakernes tjenere, i den grad de følgerne eller mottakerne holder på en annen tjener enn denne.

- -

Når du gir et program autorisasjon til å bruke kontoen din, avhengig av omfanget av tillatelser som du tillater, kan den få tilgang til din offentlige profilinformasjon, din følgingsliste, dine følgere, dine lister, alle dine innlegg, og dine likinger. Programmer kan aldri få tilgang til E-postadressen eller passordet ditt.

- -
- -

Nettstedsbruk av barn

- -

Dersom denne tjeneren er i EU eller EØS: Vårt nettsted, produkter og tjenester er alle siktet inn mot folk som er minst 16 år gamle. Dersom du er under 16, sier GDPR (General Data Protection Regulation) at du ikke kan bruke dette nettstedet.

- -

Dersom denne tjeneren er i USA: Vårt nettsted, produkter og tjenester er alle siktet inn mot folk som er minst 16 år gamle. Dersom du er under 16, sier COPPA (Children's Online Privacy Protection Act) at du ikke kan bruke dette nettstedet.

- -

Lovmessige krav kan være forskjellige dersom denne tjeneren befinner seg i en annen jurisdiksjon.

- -
- -

Endringer i våre privatlivsretningslinjer

- -

Dersom vi bestemmer oss for å endre våre privatlivsretningslinjer, vil vi legge ut endringene på denne siden.

- -

Dette dokumentet er lisensiert under CC BY-SA. Den engelske originalversjonen ble sist oppdatert den 7. mars 2018. Den norske oversettelsen ble sist oppdatert den 13. desember 2019.

- -

Opprinnelig modifisert utifra Discourse sine privatlivsretningslinjer.

title: "%{instance} Personvern og villkår for bruk av nettstedet" themes: contrast: Mastodon (Høykontrast) diff --git a/config/locales/oc.yml b/config/locales/oc.yml index 2a194350d..678d5d0dc 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -182,6 +182,7 @@ oc: silenced: Rescondut statuses: Estatuts subscribe: S’abonar + suspend: Suspendre suspended: Suspendut title: Comptes unconfirmed_email: Adreça pas confirmada @@ -264,6 +265,7 @@ oc: enable: Activar enabled: Activat enabled_msg: Aqueste emoji es ben activat + image_hint: PNG o GIF fins a %{size} list: Listar listed: Listat new: @@ -334,7 +336,11 @@ oc: language: Per lenga status: Estat instances: + availability: + title: Disponibilitat by_domain: Domeni + dashboard: + instance_languages_dimension: Lengas principalas delivery_available: Liurason disponibla moderation: all: Totas @@ -1036,89 +1042,6 @@ oc: tags: does_not_match_previous_name: correspond pas al nom precedent terms: - body_html: | -

Politica de confidencialitat

-

Quinas informacions reculhèm ?

- -
    -
  • Inforacions de basa del compte : se vos marcatz sus aqueste servidor, vos podèm demandar de picar un escais-nom, una adreça de corrièl e un senhal. Podètz tanben ajustar d’informacions de perfil addicionalas coma un nom de far veire, una biografia, un imatge de perfil e una banièra. L’escais-nom, lo nom d’afichatge, la biografia, l’imatge de perfil e la banièra son totjorn indicats per èsser vistes publicament.
  • -
  • Publicacions, abonaments e autras informacions publicas : La lista del monde que seguètz es visibla publicament, tot parièr per vòstres seguidors. Quand enviatz un messatge, la data e l’ora son gardats, l’aplicacion qu’avètz utilizada tanben. Los messatges pòdon conténer de mèdias juntats coma d’imatge e vidèos. Las publicacions publicas e pas listadas son disponiblas publicament. Quand penjatz una publicacion per vòstre perfil, aquò tanben es visible per tot lo monde. Vòstras publicacions son mandadas a vòstre seguidors, dins qualques cases aquò significa que passaràn per diferents servidors e seràn copiadas e gardadas sus aqueles servidors. Quand escafatz de publicacions, aquò es tanben mandat a vòstre seguidors. L’accion de partejar o d’ajustar als favorits una publicacion es totjorn quicòm de public.
  • -
  • Publicacions dirèctas e solament pels seguidors :
  • totas las publicacions son gardadas e tractadas pel servidor. Las publicacions pas que per vòstres seguidors son enviadas a vòstres seguidors e las personas mencionadas dedins, las publicacions dirèctas son pas qu’enviadas a las personas mencionadas. Dins qualques cases aquò significa que passaràn per diferents servidors, copiadas e gardadas sus eles. Ensagem de limitar l’accès a aquelas publicacions a monde autorizat, mas los demai servidors pòdon fracar a far parièr. A causa d’aquò es fòrça important de repassar los servidors d’apertenéncia de vòstres seguidors. Podètz activar una opcion per autorizar o regetar una demanda de seguiment dins los paramètres. Vos cal pas oblidar que’ls administrators dels servidors e dels servidors de recepcion pòdon veire aqueles messatges, e que’ls destinataris pòdon realizar de captura d’ecran, copiar e tornar partejar los messatges.Partegetz pas cap informacion perilhosa sus Mastodon
  • . -
  • Adreças IP e autras metadonadas : quand vos connectatz, enregistrem l’adreça IP qu’utilizatz per establir la connexion, e tanben lo nom de vòstre navigador. Totas las sessions de connexion son disponiblas per que las repassetz e tiretz dins los paramètres. Las darrièras adreças IP son salvagardas fins a 12 meses. Podèm tanben gardar de jornals d’audit del servidor que pòdon conténer las adreças IP de cada requèstas mandadas a nòstre servidor.
  • - -
- -
- -

Qué fasèm de vòstras informacions ?

- -

Totas las informacions que collectem de vos pòdon servir dins los cases seguents :

- -
    -
  • Per provesir la foncionament màger de Mastodon. Podètz pas qu’interagir amb lo contengut del monde e de vòstras publicacions quand sètz connectat. Per exemple, avètz la possibilitat de sègre de monde per veire lors publicacions amassadas dins vòstre flux d’actualitat personalizat.
  • -
  • Per ajudar la moderacion de la comunitat, per exemple en comparant vòstra adreça IP amb d’autras per determinar d’ensages de contornament de bandiment e d’autras violéncias.
  • -
  • Podèm utilizar l’adreça qu’avètz donada per vos enviar d’informacions e de notificacions que demandatz tocant de cambiaments dins los subjèctes del forum o en responsa a vòstre nom d’utilizaire, en responsa a una demanda, e/o tota autra question.
  • -
- -
- -

Cossí protegèm vòstras informacions ?

- -

Apliquem tota una mena de mesuras de seguretat per manténer la fisança de vòstras informacions personalas quand las picatz, mandatz, o i accedètz. Entre aquelas, vòstre session de navigacion, coma lo trafic entre vòstra aplicacion e l’API, son securizats amb SSL e lo senhal es copat en tròces en emplegar un algorisme fòrt a sens unic. Podètz activar l’autentificacion en dos temps pels accèsses futurs a vòstre compte.

-
- -

Quala es nòstra politica de conservacion de donadas ?

- -

Farem esfòrces per :

- -
    -
  • Gardar los jornals del servidor que contenon las adreças IP de totas las demandas al servidor pas mai de 90 jorns.
  • -
  • Gardar las adreças IP ligadas als utilizaires e lors publicacions pas mai de 12 messes.
  • -
- -

Podètz demandar e telecargar vòstre archiu de contengut, amb vòstras publicacions, los mèdias enviats, l’imatge de perfil e l’imatge de bandièra.

- -

Podètz suprimir sens anullacion possibla vòstre compte quand volgatz.

- -
- - -

Utilizem de cookies ?

- -

Òc-ben. Los cookies son de pichons fichièrs qu’un site o sos provesidors de servicis plaçan dins lo disc dur de vòstre ordenador via lo navigator Web (Se los acceptatz). Aqueles cookies permeton al site de reconéisser vòstre navigator e se tenètz un compte enregistrat de l’associar a vòstre compte.

- -

Empleguem de cookies per comprendre e enregistrar vòstras preferéncias per vòstras visitas venentas

- -
- -

Divulguem d’informacions a de tèrces ?

- - -

Vendèm pas, comercem o qualque transferiment que siasque a de tèrces vòstras informacions personalas identificablas. Aquò inclutz pas los tèrces partits de confisança que nos assiston a menar nòstre site, menar nòstre afar o vos servir, baste que son d’acòrd per gardar aquelas informacions confidencialas. Pòt tanben arribar que liberèssem vòstras informacions quand cresèm qu’es apropriat d’o far per se sometre a la lei, per refortir nòstras politicas, o per protegir los dreches, proprietats o seguritat de qualqu’un o de nosautres.

- -

Vòstre contengut public pòt èsser telecargat per los autres servidors del malhum. Vòstras publicacions publicas e las dels seguidors solament son enviadas als servidors qu’albergan vòstres seguidors, los messatges dirèctes son mandats als servidors dels destinaris se son pas de vòstra instància.

- -

Quand autorizatz una aplicacion d’utilizar vòstre compte, segon l’encastre que volètz permetre, pòt accedir a l’informacion de vòstre perfil public, vòstra lista d’abonaments, vòstres seguidors, vòstras listas, totas vòstras publicacions e vòstres favorits. Las aplicacions pòdon pas jamai accedir a vòstra adreça electronica o vòstre senhal.

- -
- -

Utilizacion del site pels enfants

- -

S’aqueste servidor es en EU o la EEA : òstre site, nòstres produches e servicis son totas a destinacion de monde de mai de 16 ans. S’avètz mens de 16 ans, per cumplir lo RGPD (Reglament General de Proteccion de Donadas) utilizetz pas aqueste site.

- -

S’aqueste servidor se tròba en los Estats Units : nòstre site, nòstres produches e servicis son totas a destinacion de monde de mai de 13 ans. S’avètz mens de 13 ans, per acontentar las exigéncias del COPPA (Children's Online Privacy Protection Act) utilizetz pas aqueste site.

- -

Las exigéncias legalas pòdon èsser diferentas se lo servidor es en una autra juridiccion

- -
- -

Cambiament dins nòstra politica de confidencialitat

- -

Se decidèm de cambiar nòstra politica de confidencialitat, publicarem los cambiaments sus aquesta pagina.

- -

Aqueste document es jos licéncia CC-BY-SA. Darrièra mesa a jorn lo 4 de març de 2018

- -

Prima adaptacion de la politica de confidencialitat de Discourse.

title: Condicions d’utilizacion e politica de confidencialitat de %{instance} themes: contrast: Mastodon (Fòrt contrast) diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 76b3535fe..845e0237d 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -1566,85 +1566,84 @@ pl: terms: body_html: |

Polityka prywatności

-

Jakie informacje zbieramy?

+

Jakie informacje zbieramy?

.
    -
  • Podstawowe informacje o koncie: Podczas rejestracji na tym serwerze, możesz zostać poproszony(-a) o wprowadzenie nazwy użytkownika, adresu e-mail i hasła. Możesz także wprowadzić dodatkowe informacje o profilu, takie jak nazwa wyświetlana i biografia oraz wysłać awatar i obraz nagłówka. Nazwa użytkownika, nazwa wyświetlana, biografia, awatar i obraz nagłówka są zawsze widoczne dla wszystkich.
  • -
  • Wpisy, śledzenie i inne publiczne informacje: Lista osób które śledzisz jest widoczna publicznie, tak jak lista osób, które Cię śledzą. Jeżeli dodasz wpis, data i czas jego utworzenia i aplikacja, z której go wysłano są przechowywane. Wiadomości mogą zawierać załączniki multimedialne, takie jak zdjęcia i filmy. Publiczne i niewidoczne wpisy są dostępne publicznie. Udostępniony wpis również jest widoczny publicznie. Twoje wpisy są dostarczane obserwującym, co oznacza że jego kopie mogą zostać dostarczone i być przechowywane na innych serwerach. Kiedy usuniesz wpis, przestaje być widoczny również dla osób śledzących Cię. „Podbijanie” i dodanie do ulubionych jest zawsze publiczne.
  • -
  • Wpisy bezpośrednie i tylko dla śledzących: Wszystkie wpisy są przechowywane i przetwarzane na serwerze. Wpisy przeznaczone tylko dla śledzących są widoczne tylko dla nich i osób wspomnianych we wpisie, a wpisy bezpośrednie tylko dla wspomnianych. W wielu przypadkach oznacza to, że ich kopie są dostarczane i przechowywane na innych serwerach. Staramy się ograniczać zasięg tych wpisów wyłącznie do właściwych odbiorców, ale inne serwery mogą tego nie robić. Ważne jest, aby sprawdzać jakich serwerów używają osoby, które Cię śledzą. Możesz aktywować opcję pozwalającą na ręczne akceptowanie i odrzucanie nowych śledzących. Pamiętaj, że właściciele serwerów mogą zobaczyć te wiadomości, a odbiorcy mogą wykonać zrzut ekranu, skopiować lub udostępniać ten wpis. Nie udostępniaj wrażliwych danych z użyciem Mastodona.
  • -
  • Adresy IP i inne metadane: Kiedy zalogujesz się, przechowujemy adres IP użyty w trakcie logowania wraz z nazwą używanej przeglądarki. Wszystkie aktywne sesje możesz zobaczyć (i wygasić) w ustawieniach. Ostatnio używany adres IP jest przechowywany przez nas do 12 miesięcy. Możemy również przechowywać adresy IP wykorzystywane przy każdym działaniu na serwerze.
  • +
  • Podstawowe informacje o koncie: Podczas rejestracji na tym serwerze możesz zostać poproszony o podanie nazwy użytkownika, adresu e-mail i hasła. Możesz również wprowadzić dodatkowe informacje dotyczące profilu, takie jak nazwa użytkownika i biogram, a także przesłać zdjęcie profilowe i obrazek w nagłówku. Nazwa użytkownika, nazwa wyświetlana, biogram, zdjęcie profilowe i obrazek w nagłówku są zawsze wyświetlane publicznie.
  • Posty, obserwacje i inne informacje publiczne: Lista osób, które obserwujesz, jest dostępna publicznie; to samo dotyczy osób Ciebie śledzących. Gdy wysyłasz wiadomość, zapisywana jest data i godzina, a także aplikacja, z której wysłałeś wiadomość. Wiadomości mogą zawierać załączniki multimedialne, takie jak zdjęcia i filmy. Publiczne i niepubliczne posty są dostępne publicznie. Gdy wyróżnisz post na swoim profilu, jest to również informacja dostępna publicznie. Twoje posty są dostarczane do Twoich obserwatorów, w niektórych przypadkach oznacza to, że są dostarczane na różne serwery i tam przechowywane są ich kopie. Kiedy usuwasz posty, również jest to przekazywane Twoim obserwatorom. Czynność reblogowania lub lajkowania innego postu jest zawsze publiczna.
  • +
  • Posty bezpośrednie i posty tylko dla obserwatorów: Wszystkie posty są przechowywane i przetwarzane na serwerze. Posty tylko dla followersów są dostarczane do followersów i użytkowników, którzy są w nich wymienieni, a posty bezpośrednie są dostarczane tylko do użytkowników, którzy są w nich wymienieni. W niektórych przypadkach oznacza to, że są one dostarczane na różne serwery i tam przechowywane są ich kopie. Dokładamy starań, aby ograniczyć dostęp do tych postów tylko do osób upoważnionych, ale inne serwery mogą tego nie robić. Dlatego ważne jest, aby sprawdzać serwery, na których znajdują się osoby śledzące Twoje posty. Możesz włączyć w ustawieniach opcję ręcznego zatwierdzania i odrzucania nowych obserwatorów. Miej na uwadze, że operatorzy serwera i każdego serwera odbierającego mogą zobaczyć takie wiadomości, oraz że Odbiorcy mogą wykonywać zrzuty ekranu, kopiować je lub w inny sposób udostępniać. Nie udostępniaj żadnych wrażliwych informacji za pośrednictwem Mastodona.
  • +
  • Adresy IP i inne metadane: Gdy użytkownik się loguje, zapisujemy adres IP, z którego się loguje, a także nazwę przeglądarki, z której korzysta. Wszystkie zalogowane sesje są dostępne do wglądu i usunięcia w ustawieniach. Ostatnio używany adres IP jest przechowywany przez okres do 12 miesięcy. Możemy również przechowywać dzienniki serwera, które zawierają adres IP każdego żądania skierowanego do naszego serwera.

-

W jakim celu wykorzystujecie informacje?

+

Do czego wykorzystujemy informacje o użytkowniku?

-

Zebrane informacje mogą zostać użyte w następujące sposoby:

+

Wszelkie zebrane przez nas informacje mogą być wykorzystane w następujący sposób:

    -
  • Aby dostarczyć podstawową funkcjonalność Mastodona. Możesz wchodzić w interakcje z zawartością tworzoną przez innych tylko gdy jesteś zalogowany. Na przykład, możesz śledzić innych, aby widzieć ich wpisy w dostosowanej osi czasu.
  • -
  • Aby wspomóc moderację społeczności, na przykład porównując Twój adres IP ze znanymi, aby rozpoznać próbę obejścia blokady i inne naruszenia.
  • -
  • Adres e-mail może zostać wykorzystany, aby wysyłać Ci informacje, powiadomienia o osobach wchodzących w interakcje z tworzoną przez Ciebie zawartością, wysyłających Ci wiadomości, odpowiadać na zgłoszenia i inne żądania lub zapytania.
  • +
  • Aby zapewnić podstawową funkcjonalność serwisu Mastodon. Użytkownik może wchodzić w interakcje z treściami innych osób i publikować własne treści tylko wtedy, gdy jest zalogowany. Użytkownik może na przykład śledzić inne osoby, aby wyświetlać ich posty na własnej, spersonalizowanej osi czasu.
  • +
  • Aby wspomóc moderację społeczności, na przykład porównując Twój adres IP z innymi znanymi adresami w celu stwierdzenia przypadków omijania zakazów lub innych naruszeń.
  • +
  • Podany przez Ciebie adres e-mail może być wykorzystywany do wysyłania Ci informacji, powiadomień o interakcji innych osób z treściami lub wysyłania Ci wiadomości, a także do odpowiadania na zapytania i/lub inne prośby lub pytania.

-

W jaki sposób chronimy Twoje dane?

+

Jak chronimy Twoje dane?

-

Wykorzystujemy różne zabezpieczenia, aby zapewnić bezpieczeństwo informacji, które wprowadzasz, wysyłasz lub do których uzyskujesz dostęp. Poza tym, sesja przeglądarki oraz ruch pomiędzy aplikacją a API jest zabezpieczany z użyciem SSL, a hasło jest hashowane z użyciem silnego algorytmu. Możesz też aktywować uwierzytelnianie dwustopniowe, aby lepiej zabezpieczyć dostęp do konta.

+

Wdrażamy szereg zabezpieczeń, aby zapewnić bezpieczeństwo Twoich danych osobowych podczas ich wprowadzania, przesyłania lub uzyskiwania do nich dostępu. Na przykład sesja przeglądarki, a także ruch między aplikacjami użytkownika a interfejsem API są zabezpieczone protokołem SSL, a hasło użytkownika jest haszowane przy użyciu silnej funkcji skrótu. Możesz włączyć uwierzytelnianie dwuskładnikowe, aby jeszcze bardziej zabezpieczyć dostęp do swojego konta.


-

Jaka jest nasza polityka przechowywania danych?

+

Jakie są nasze zasady przechowywania danych?

-

Staramy się:

+

W dobrej wierze podejmiemy starania, aby:

    -
  • Przechowywać logi zawierające adresy IP używane przy każdym żądaniu do serwera przez nie dłużej niż 90 dni.
  • -
  • Przechowywać adresy IP przypisane do użytkowników przez nie dłużej niż 12 miesięcy.
  • +
  • Przechowywać dzienniki serwera zawierające adres IP wszystkich żądań kierowanych do tego serwera, na tyle, na ile takie dzienniki są przechowywane, nie dłużej niż 90 dni.
  • +
  • Przechowywać adresy IP związane z zarejestrowanymi użytkownikami nie dłużej niż 12 miesięcy.
-

Możesz zażądać i pobrać archiwum tworzonej zawartości, wliczając Twoje wpisy, załączniki multimedialne, awatar i zdjęcie nagłówka.

+

Możesz zażądać i pobrać archiwum swojej zawartości, w tym posty, załączniki multimedialne, zdjęcie profilowe i obrazek w nagłówku.

-

Możesz nieodwracalnie usunąć konto w każdej chwili.

+

Możesz w każdej chwili nieodwracalnie usunąć swoje konto.


-

Czy używany plików cookies?

+

Czy używamy plików cookie?

-

Tak. Pliki cookies są małymi plikami, które strona lub dostawca jej usługi dostarcza na dysk twardy komputera z użyciem przeglądarki internetowej (jeżeli na to pozwoli). Pliki cookies pozwalają na rozpoznanie przeglądarki i – jeśli jesteś zarejestrowany(-a) – przypisanie jej do konta.

+

Tak. Pliki cookie to małe pliki, które witryna lub jej dostawca usług przesyłają na dysk twardy komputera użytkownika za pośrednictwem przeglądarki internetowej (jeśli użytkownik na to pozwala). Pliki te pozwalają witrynie rozpoznać Twoją przeglądarkę i, jeśli masz zarejestrowane konto, powiązać je z Twoim zarejestrowanym kontem.

-

Wykorzystujemy pliki cookies, aby przechowywać preferencje użytkowników na przyszłe wizyty.

+

Używamy plików cookie, aby zrozumieć i zapisać preferencje użytkownika na potrzeby przyszłych wizyt.


-

Czy przekazujemy informacje osobom trzecim?

+

Czy ujawniamy jakieś informacje podmiotom zewnętrznym?

-

Nie sprzedajemy, nie wymieniamy i nie przekazujemy osobom trzecim informacji pozwalających na identyfikację Ciebie. Nie dotyczy to zaufanych dostawców pomagających w prowadzeniu strony lub obsługiwaniu użytkowników, jeżeli zgadzają się, aby nie przekazywać dalej tych informacji. Możemy również udostępnić informacje, jeżeli uważany to za wymagane przez prawo, konieczne do wypełnienia polityki strony, przestrzegania naszych lub cudzych praw, własności i bezpieczeństwa.

+

Nie sprzedajemy, zamieniamy ani w inny sposób nie przekazujemy podmiotom zewnętrznym danych osobowych użytkowników. Nie dotyczy to zaufanych osób trzecich, które pomagają nam w prowadzeniu naszej witryny, działalności gospodarczej lub obsłudze użytkowników, o ile osoby te zobowiążą się do zachowania poufności tych informacji. Możemy również ujawnić informacje o użytkowniku, jeśli uznamy to za stosowne w celu zachowania zgodności z prawem, egzekwowania zasad obowiązujących na naszej stronie lub ochrony praw, własności lub bezpieczeństwa naszego lub innych podmiotów.

-

Twoja publiczna zawartość może zostać pobrana przez inne serwery w sieci. Wpisy publiczne i tylko dla śledzących są dostarczane na serwery, na których znajdują się śledzący Cię, a wiadomości bezpośrednie trafiają na serwery adresatów, jeżeli są oni użytkownikami innego serwera.

+

Twoje treści publiczne mogą być pobierane przez inne serwery w sieci. Twoje posty publiczne i posty przeznaczone tylko dla followersów są dostarczane do serwerów, na których rezydują Twoi followersi, a wiadomości bezpośrednie są dostarczane do serwerów odbiorców, o ile ci followersi lub odbiorcy rezydują na innym serwerze niż ten.

-

Kiedy pozwolisz aplikacji na dostęp do Twojego konta, w zależności od nadanych jej pozwoleń, może uzyskać dostęp do publicznych informacji, listy śledzonych, Twoich list, wszystkich wpisów i ulubionych. Aplikacje nie mogą uzyskać dostępu do Twojego adresu e-mail i hasła.

+

Gdy upoważnisz aplikację do korzystania z Twojego konta, w zależności od zakresu uprawnień, które zatwierdzisz, może ona uzyskać dostęp do informacji o Twoim profilu publicznym, listy Twoich followersów, Twoich list, wszystkich Twoich postów i polubień. Aplikacje nigdy nie mogą uzyskać dostępu do Twojego adresu e-mail ani hasła.


-

Korzystanie ze strony przez dzieci

+

Korzystanie z witryny przez dzieci

-

Jeżeli serwer znajduje się w UE lub w EOG: Ta strona, produkty i usługi są przeznaczone dla osób, które ukończyły 16 lat. Jeżeli nie ukończyłeś(-aś) 16 roku życia, zgodnie z wymogami RODO (Ogólne rozporządzenie o ochronie danych), nie używaj tej strony.

+

Jeśli ten serwer znajduje się w Unii Europejskiej lub Europejskim Obszarze Gospodarczym: Nasza strona, produkty i usługi są skierowane do osób, które ukończyły 16 lat. Jeśli nie masz ukończonych 16 lat, zgodnie z wymogami RODO (Ogólne rozporządzenie o ochronie danych) nie używaj tego portalu.

-

Jeżeli serwer znajduje się w USA: Ta strona, produkty i usługi są przeznaczone dla osób, które ukończyły 13 lat. Jeżeli nie ukończyłeś(-aś) 13 roku życia, zgodnie z wymogami COPPA (Prawo o Ochronie Prywatności Dzieci w Internecie), nie używaj tej strony.

+

Jeśli ten serwer znajduje się w USA: Nasza strona, produkty i usługi są skierowane do osób, które ukończyły 13 lat. Jeśli masz mniej niż 13 lat, zgodnie z wymogami COPPA (Children's Online Privacy Protection Act) nie używaj tego portalu.

-

Wymogi mogą być inne, jeżeli serwer znajduje się w innym kraju.

+

Wymagania prawne mogą być inne, jeśli serwer znajduje się w innej jurysdykcji.


-

Zmiany w naszej polityce prywatności

+

Zmiany w naszej Polityce prywatności

-

Jeżeli zdecydujemy się na zmiany w polityce prywatności, pojawią się na tej stronie.

+

Jeśli zdecydujemy się na zmianę naszej polityki prywatności, opublikujemy te zmiany tutaj.

-

Dokument jest dostępny na licencji CC-BY-SA. Ostatnio zmodyfikowano go 7 marca 2018, przetłumaczono 9 kwietnia 2018. Tłumaczenie (mimo dołożenia wszelkich starań) może nie być w pełni poprawne.

+

Ten dokument jest CC-BY-SA. Data ostatniej aktualizacji: 26 maja 2022.

-

Bazowano na polityce prywatności Discourse.

+

Oryginalnie zaadaptowany z Discourse privacy policy.

title: Zasady korzystania i polityka prywatności %{instance} themes: contrast: Mastodon (Wysoki kontrast) diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index e647b4c01..b24811049 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -1451,87 +1451,6 @@ pt-BR: tags: does_not_match_previous_name: não corresponde ao nome anterior terms: - body_html: | -

Política de Privacidade

-

Quais dados nós coletamos?

- -
    -
  • Dados básicos de conta: Se você criar conta nesta instância, um nome de usuário, um e-mail e uma senha serão exigidos. Você também pode adicionar dados extras como nome de exibição, biografia, imagem de perfil e capa. Com exceção do e-mail e da senha, os dados citados sempre são públicos.
  • -
  • Toots, seguindo e outros dados públicos: A lista de pessoas que você segue e a sua lista de seguidores são públicas. Ao enviar um toot, a data, a hora e o aplicativo usado são armazenados. Toots podem conter mídias anexadas, como áudios, imagens e vídeos. Toots públicos e não-listados são visíveis publicamente. Os toots fixados no seu perfil são públicos. Seus toots são enviados aos seus seguidores, em alguns casos isso significa que os toots são enviados para instâncias diferentes e cópias são armazenadas lá. Quando você exclui toots, essa informação também é enviada aos seus seguidores. O ato de dar boost ou favoritar outro toot é sempre público.
  • -
  • Mensagens Diretas e toots privados: Todos os toots são armazenados e processados na instância. Toots privados são enviados aos seus seguidores e aos usuários mencionados neles; Mensagens Diretas (ou toots diretos) são enviadas somente aos usuários mencionados nelas. Em alguns casos isso significa que os toots são enviados para instâncias diferentes e cópias são armazenadas lá. Nós trabalhamos constantemente para limitar o acesso a estes toots somente às pessoas autorizadas, porém outras instâncias podem não fazer o mesmo. Portanto, é importante analisar as instâncias dos seus seguidores. Você pode trancar a conta para aprovar ou vetar novos seguidores manualmente nas configurações. Por favor, tenha em mente que os operadores da instância em que se está e das instâncias receptoras podem ver tais toots, e que os destinatários podem fazer capturas de tela, copiar ou usar outra maneira para compartilhar os toots. Não compartilhe informação confidencial pelo Mastodon.
  • -
  • IPs e outros metadados: Ao entrar na sua conta, nós armazenamos o seu endereço de IP e o nome do navegador usado. Todas as sessões abertas estão disponíveis para serem analisadas e revogadas nas configurações. O último endereço de IP usado é armazenado por até 12 meses. Nós também podemos reter históricos da instância que incluem o endereço de IP de todas as conexões à nossa instância.
  • -
- -
- -

Como usamos os seus dados?

- -

Todo dado que coletamos pode ser usado das seguintes maneiras:

- -
    -
  • Para prover a funcionalidade básica do Mastodon. Você só pode interagir com o conteúdo de outras pessoas e postar seu próprio conteúdo usando uma conta. Por exemplo, você pode seguir outras pessoas para ver seus toots na sua própria linha do tempo personalizada.
  • -
  • Para auxiliar na moderação da comunidade, por exemplo ao comparar o seu endereço de IP com outros endereços de IP conhecidos para determinar evasão de banimento e outras violações.
  • -
  • O endereço de e-mail que você fornecer pode ser usado para te enviar informações, notificações sobre outras pessoas interagindo com o seu conteúdo ou contigo e para responder a questões ou outras solicitações.
  • -
- -
- -

Como protegemos seus dados?

- -

Nós implementamos diversas medidas de segurança para manter suas informações pessoais seguras quando você as acessa ou as envia. Entre outras coisas, sua sessão do navegador, bem como o tráfego entre os aplicativos e a API são asseguradas usando SSL e a sua senha é guardada usando um algoritmo forte de criptografia de mão única. Você pode ativar autenticação em dois fatores como forma de aumentar a segurança no acesso à sua conta.

- -
- -

Qual é a nossa política de retenção de dados?

- -

Nós trabalhamos constantemente para:

- -
    -
  • Reter o histórico da instância contendo os endereços de IP de todas as conexões a essa instância. O histórico é mantido por não mais que 90 dias.
  • -
  • Reter os endereços de IP associados à usuários da instância por não mais que 12 meses.
  • -
- -

Você pode solicitar e baixar um arquivo de todo o conteúdo da sua conta, incluindo seus toots, suas mídias, imagem de perfil e capa.

- -

YVocê pode excluir a sua conta irreversivelmente a qualquer momento.

- -
- -

Nós usamos cookies?

- -

Sim. Cookies são pequenos arquivos que um site ou serviço baixa através do seu navegador (se você permitir). Esses cookies permitem ao site conhecer seu navegador e, se você tiver uma conta, associá-lo a ela.

- -

Nós usamos cookies para salvar suas preferências para futuras visitas.

- -
- -

Nós compartilhamos algum dado para terceiros?

- -

Nós não vendemos, trocamos ou compartilhamos de qualquer maneira dados que possam te identificar à terceiros. Isso não inclui terceiros confiáveis que nos auxiliam a operar o nosso site, realizar nosso serviço ou prestar assistência, contanto que esses terceiros se comprometam a manter essa informação confidencial. Nós podemos também divulgar informação quando acreditamos que é apropriado para obedecer a lei, para fazer cumprir nossas políticas ou proteger os nossos direitos, propriedade ou segurança, ou de outrém.

- -

Seu conteúdo público pode ser acessado por outras instâncias na rede. Seus toots públicos e privados são enviados às instâncias dos seus seguidores e seus toots diretos são enviados às instâncias dos usuários mencionados neles, contanto que esses seguidores ou usuários estejam em uma instância diferente desta.

- -

Quando você autoriza um aplicativo a usar sua conta, dependendo do nível de autorização das permissões que você aprovar, o aplicativo pode acessar seus dados públicos, a lista de usuários que você segue, seus seguidores, suas listas, suas Mensagens Diretas e seus toots favoritos. Aplicativos nunca podem acessar o seu endereço de e-mail ou senha.

- -
- -

Uso desse site por crianças

- -

Se a instância está na UE ou no EEE: Nosso site, produto e serviço são direcionados às pessoas que tem ao menos 16 anos de idade. Se você tem menos de 16 anos, de acordo com os requisitos da RGPD (Regulamento Geral sobre Proteção de Dados) não use este site.

- -

Se esta instância está nos EUA: Nosso site, produto e serviço são direcionados às pessoas que tem ao menos 13 anos de idade. Se você tem menos de 13 anos, de acordo com os requerimentos da COPPA (Children's Online Privacy Protection Act) não use este site

- -

Os requisitos da lei podem ser diferentes em outra jurisdição.

- -
- -

Alterações na nossa Política de Privacidade

- -

Se decidirmos mudar nossa Política de Privacidade, iremos disponibilizar as alterações nesta página.

- -

CC-BY-SA. Atualizado pela última vez em 7 de março de 2018.

- -

Adaptado originalmente de Política de Privacidade Discourse.

title: Termos de Serviço e Política de Privacidade de %{instance} themes: contrast: Mastodon (Alto contraste) diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 49cee32d0..2765bf941 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -1525,87 +1525,6 @@ pt-PT: tags: does_not_match_previous_name: não coincide com o nome anterior terms: - body_html: | -

Política de privacidade

-

Que informação nós recolhemos?

- -
    -
  • Informação básica da conta: Se te registares neste servidor, pode-te ser pedido que indiques um nome de utilizador, um endereço de email e uma palavra-passe. Também podes introduzir informação adicional de perfil, tal como um nome a mostrar e dados biográficos, que carregues uma fotografia para o teu perfil e para o cabeçalho. O nome de utilizador, o nome a mostrar, a biografia, a imagem de perfil e a imagem de cabeçalho são sempre listados publicamente.
  • -
  • Publicações, seguimento e outra informação pública: A lista de pessoas que tu segues é pública, o mesmo é verdade para os teus seguidores. Quando tu publicas uma mensagem, a data e a hora são guardados, tal como a aplicação a partir da qual a mensagem foi enviada. As mensagens podem conter anexos média, tais como fotografias ou vídeos. Publicações públicas e não listadas são acessíveis publicamente. Quando expões uma publicação no teu perfil, isso é também informação disponível publicamente. As tuas publicações são enviadas aos teus seguidores. Em alguns casos isso significa que elas são enviadas para servidores diferentes onde são guardadas cópias. Quando tu apagas publicações, isso também é enviado para os teus seguidores. A ação de republicar ou favoritar outra publicação é sempre pública.
  • -
  • Publicações diretas e exclusivas para seguidores: Todas as publicações são guardadas e processadas no servidor. Publicações exclusivas para seguidores são enviadas para os teus seguidores e para utilizadores que são nelas mencionados. As publicações diretas são enviadas apenas para os utilizadores nelas mencionados. Em alguns casos isso significa que elas são enviadas para diferentes servidores onde são guardadas cópias das mesmas. Nós fazemos um grande esforço para limitar o acesso a estas publicações aos utilizadores autorizados, mas outros servidores podem falhar neste objetivo. Por isso, tu deves rever os servidores a que os teus seguidores pertencem. Tu podes ativar uma opção para aprovar e rejeitar manualmente novos seguidores nas configurações. Por favor, tem em mente que os gestores do servidor e qualquer servidor que receba a publicação pode lê-la e que os destinatários podem fazer uma captura de tela, copiar ou partilhar a publicação. Não partilhes qualquer informação perigosa no Mastodon.
  • -
  • IPs e outros metadados: Quando inicias sessão, nós guardamos o endereço de IP a partir do qual iniciaste a sessão, tal como o nome do teu navegador. Todas as sessões estão disponíveis para verificação e revogação nas configurações. O último endereço de IP usado é guardado até 12 meses. Nós também podemos guardar registos de servidor, os quais incluem o endereço de IP de cada pedido dirigido ao nosso servidor.
  • -
- -
- -

Para que usamos a tua informação?

- -

Qualquer informação que recolhemos sobre ti pode ser usada dos seguintes modos:

- -
    -
  • Para providenciar a funcionalidade central do Mastodon. Tu só podes interagir com o conteúdo de outras pessoas e publicar o teu próprio conteúdo depois de teres iniciado sessão. Por exemplo, tu podes seguir outras pessoas para veres as suas publicações na tua cronologia inicial personalizada.
  • -
  • Para ajudar na moderação da comunidade para, por exemplo, comparar o teu endereço IP com outros conhecidos, para determinar a fuga ao banimento ou outras violações.
  • -
  • O endereço de e-mail que tu forneces pode ser usado para te enviar informações e/ou notificações sobre outras pessoas que estão a interagir com o teu conteúdo ou a enviar-te mensagens, para responderes a inquéritos e/ou outros pedidos ou questões.
  • -
- -
- -

Como é que nós protegemos a tua informação?

- -

Nós implementamos uma variedade de medidas de segurança para garantir a segurança da tua informação pessoal quando tu introduzes, submetes ou acedes à mesma. Entre outras coisas, a tua sessão de navegação, tal como o tráfego entre as tuas aplicações e a API, estão seguras por SSL e a tua palavra-passe é codificada usando um forte algoritmo de sentido único. Tu podes activar a autenticação em dois passos para aumentares ainda mais a segurança do acesso à tua conta.

- -
- -

Qual é a nossa política de retenção de dados?

- -

Nós envidaremos todos os esforços no sentido de:

- -
    -
  • Guardar registos do servidor contendo o endereço de IP de todos os pedidos feitos a este servidor, considerando que estes registos não serão guardados por mais de 90 dias.
  • -
  • Guardar os endereços de IP associados aos utilizadores registados durante um período que não ultrapassará os 12 meses.
  • -
- -

Tu podes pedir e descarregar um ficheiro com o teu conteúdo, incluindo as tuas publicações, os ficheiros multimédia, a imagem de perfil e a imagem de cabeçalho.

- -

Tu podes apagar a tua conta de modo definitivo e a qualquer momento.

- -
- -

Usamos cookies?

- -

Sim. Cookies são pequenos ficheiros que um site ou o seu fornecedor de serviço transfere para o disco rígido do teu computador através do teu navegador (se tu permitires). Estes cookies permitem ao site reconhecer o teu navegador e, se tu tiveres uma conta registada, associá-lo a ela.

- -

Nós usamos os cookies para compreender e guardar as tuas preferências para as visitas futuras.

- -
- -

Nós divulgamos alguma informação para entidades externas?

- -

Nós não vendemos, trocamos ou transferimos de qualquer modo a tua informação pessoal que seja identificável para qualquer entidade externa. Isto não inclui terceiros de confiança que nos ajudam a manter o nosso site, conduzir o nosso negócio ou prestar-te este serviço, desde que esses terceiros concordem em manter essa informação confidencial. Poderemos também revelar a tua informação quando nós acreditamos que isso é apropriado para cumprir a lei, forçar a aplicação dos nossos termos de serviço ou proteger os direitos, propriedade e segurança, nossos e de outrem.

- -

O teu conteúdo público pode ser descarregado por outros servidores na rede. As tuas publicações públicas e exclusivas para os teus seguidores são enviadas para os servidores onde os teus seguidores residem e as mensagens directas são entregues aos servidores dos seus destinatários, no caso desses seguidores ou destinatários residirem num servidor diferente deste.

- -

Quando tu autorizas uma aplicação a usar a tua conta, dependendo da abrangência das permissões que tu aprovas, ela pode ter acesso à informação pública do teu perfil, à lista de quem segues, aos teus seguidores, às tuas listas, a todas as tuas publicações e aos teus favoritos. As aplicações nunca terão acesso ao teu endereço de e-mail ou à tua palavra-passe.

- -
- -

Utilização do site por crianças

- -

Se este servidor estiver na EU ou na EEA: O nosso site, produtos e serviços são todos dirigidos a pessoas que têm, pelo menos, 16 de idade. Se tu tens menos de 16 anos, devido aos requisitos da GDPR (General Data Protection Regulation) não uses este site.

- -

Se este servidor estiver nos EUA: O nosso site, produtos e serviços são todos dirigidos a pessoas que têm, pelo menos, 13 anos de idade. Se tu tens menos de 13 anos de idade, devido aos requisitos da COPPA (Children's Online Privacy Protection Act) não uses este site.

- -

Os requisitos legais poderão ser diferentes se este servidor estiver noutra jurisdição.

- -
- -

Alterações à nossa Política de Privacidade

- -

Se nós decidirmos alterar a nossa política de privacidade, nós iremos publicar essas alterações nesta página.

- -

Este documento é CC-BY-SA. Ele foi actualizado pela última vez em 7 de Março 2018.

- -

Originalmente adaptado de Discourse privacy policy.

title: "%{instance} Termos de Serviço e Política de Privacidade" themes: contrast: Mastodon (Elevado contraste) diff --git a/config/locales/ro.yml b/config/locales/ro.yml index 4f3861b00..d13aa5464 100644 --- a/config/locales/ro.yml +++ b/config/locales/ro.yml @@ -605,85 +605,6 @@ ro: tags: does_not_match_previous_name: nu se potrivește cu numele anterior terms: - body_html: | -

Politica de confidențialitate

-

Ce informații colectăm?

- -
    -
  • Informații de bază despre cont : dacă vă înregistrați pe acest server, vi se poate cere să introduceți un nume de utilizator, o adresă de e-mail și o parolă. De asemenea, puteți introduce informații suplimentare despre profil, cum ar fi numele afișat și biografie, și puteți încărca o imagine de profil și o imagine de antet. Numele de utilizator, numele afișat, biografia, imaginea de profil și imaginea antetului sunt întotdeauna listate public.
  • -
  • Postări, umăriri și alte informații publice : Lista persoanelor pe care le urmărești este listată public, aceeași este valabilă și pentru urmăritorii tăi. Când trimiteți un mesaj, data și ora sunt stocate, precum și aplicația din care ați trimis mesajul. Mesajele pot conține atașamente media, cum ar fi imagini și videoclipuri. Postările publice și nelistate sunt disponibile public. Când aveți o postare pe profilul dvs., aceasta este, de asemenea, informații disponibile publicului. Postările dvs. sunt livrate urmăritorilor dvs., în unele cazuri înseamnă că sunt livrate pe diferite servere și copiile sunt stocate acolo. Când ștergeți postări, acest lucru este de asemenea livrat urmăritorilor dvs. Acțiunea de a impulsiona sau favoriza o altă postare este întotdeauna publică.
  • -
  • Postări directe și doar pentru urmăritori : toate postările sunt stocate și procesate pe server. Postările destinate numai urmăritorilor sunt livrate urmăritorilor și utilizatorilor dvs. menționați în ele, iar postările directe sunt livrate numai utilizatorilor menționați în ele. În unele cazuri, înseamnă că sunt livrate pe diferite servere și copiile sunt stocate acolo. Facem un efort de bună-credință pentru a limita accesul la aceste postări doar persoanelor autorizate, dar este posibil ca alte servere să nu reușească. Prin urmare, este important să revizuiți serverele de pe care urmăritorii dvs provin. Puteți comuta o opțiune pentru a aproba și respinge manual următorii noi din setări. Vă rugăm să rețineți că operatorii serverului și orice server primitor pot vizualiza astfel de mesaje și că destinatarii pot face captură de ecran, copie sau distribuirea lor. Nu împărtășiți informații periculoase pe servere.
  • -
  • IP-uri și alte metadate : atunci când vă conectați, înregistrăm adresa IP de lacare vă conectați, precum și numele aplicației dvs. de navigare pe internet. Toate sesiunile conectate sunt disponibile pentru revizuire și revocare în setări. Cea mai recentă adresă IP folosită este stocată până la 12 luni. De asemenea, putem păstra jurnalele de server care includ adresa IP a fiecărei solicitări către serverul nostru.
  • - - -
    - -

    Pentru ce folosim informațiile dvs.?

    - -

    Toate informațiile pe care le colectăm de la dvs. pot fi utilizate în următoarele moduri:

    - -
      -
    • Pentru a oferi funcționalitatea de bază a platformei. Puteți interacționa cu conținutul altor persoane și puteți posta propriul conținut atunci când sunteți autentificat. De exemplu, puteți urmări alte persoane pentru a vizualiza postările combinate în fluxul personal.
    • -
    • Pentru a ajuta la moderarea comunității, de exemplu, compararea adresei IP cu altele cunoscute pentru a determina evaziunea interdicției sau alte încălcări.
    • -
    • Adresa de e-mail pe care o furnizați poate fi utilizată pentru a vă trimite informații, notificări despre alte persoane care interacționează cu conținutul dvs. sau pentru a vă trimite mesaje și pentru a răspunde la întrebări și / sau alte solicitări sau întrebări.
    • - - -
      - -

      Cum vă protejăm informațiile?

      - -

      Implementăm o varietate de măsuri de securitate pentru a menține siguranța informațiilor dvs. personale atunci când introduceți, trimiteți sau accesați informațiile dvs. personale. Printre altele, sesiunea navigatorului dvs., precum și traficul dintre aplicațiile dvs. și API-ul, sunt securizate cu SSL, iar parola dvs. este salvată folosind un algoritm puternic unidirecțional. Puteți activa autentificarea în doi pași pentru a asigura accesul suplimentar la contul dvs..

      - -
      - -

      Care este politica noastră de păstrare a datelor?

      - -

      Vom depune eforturi de bună credință pentru:

      - -
        -
      • Păstrarea jurnalelor serverului care conțin adresa IP a tuturor solicitărilor către acest server, în măsura în care se păstrează astfel de jurnale, nu mai mult de 90 de zile.
      • -
      • Păstrarea adreselor IP asociate cu utilizatorii înregistrați nu mai mult de 12 luni.
      • - - -

        Puteți solicita și descărca o arhivă a conținutului dvs., inclusiv postările, atașamentele media, poza de profil și imaginea antetului.

        - -

        Puteți șterge ireversibil contul în orice moment.

        - -
        - -

        Folosim module cookie?

        - -

        Da. Cookie-urile sunt fișiere mici pe care un site sau furnizorul său de servicii le transferă pe hard disk-ul computerului prin intermediul navigatorului dvs. Web (dacă permiteți). Aceste cookie-uri permit site-ului să vă recunoască navigatorul și, dacă aveți un cont înregistrat, să îl asociați cu contul dvs. înregistrat.

        - -

        Folosim cookie-uri pentru a înțelege și salva preferințele pentru vizitele viitoare.

        - -
        - -

        Dezvăluim informații părților din afară?

        - -

        Nu vindem, comercializăm sau nu transferăm în alte părți informațiilor dvs. de identificare personală. Aceasta nu include terți de încredere care ne ajută în operarea site-ului nostru, în desfășurarea activității noastre sau în deservirea dvs., atât timp cât acele părți acceptă să păstreze aceste informații confidențiale. De asemenea, putem elibera informațiile dvs. atunci când considerăm că eliberarea este adecvată pentru a respecta legea, a aplica politicile site-ului nostru sau a proteja drepturile noastre, proprietatea sau siguranța noastră sau a altor persoane.

        - -

        Conținutul dvs. public poate fi descărcat de alte servere din rețea. Postările dvs. publice și cele doar pentru urmăritori sunt livrate pe serverele de unde provin urmăritorii dvs., iar mesajele directe sunt livrate către serverele destinatarilor, în măsura în care acei urmăritori sau destinatari provin de pe un server diferit decât acesta.

        - -

        Atunci când autorizați o aplicație să vă utilizeze contul, în funcție de sfera de autorizare pe care o aprobați, aceasta poate accesa informațiile despre profilul dvs. public, lista dvs. de urmăritori, urmăritorii, listele dvs., toate postările și favorizările dvs. Aplicațiile nu vă pot accesa niciodată adresa de e-mail sau parola.

        - -
        - -

        Utilizarea site-ului de către copii

        - -

        Site-ul nostru, produsele și serviciile noastre sunt destinate tuturor persoanelor care au cel puțin 16 ani. Dacă aveți sub 16 ani, conform cerințelor GDPR ( Regulamentul general privind protecția datelor ) nu utilizați acest site . - -

        Cerințele legii pot fi diferite dacă acest server se află într-o altă jurisdicție.

        - -
        - -

        Modificări ale politicii noastre de confidențialitate

        - -

        Dacă decidem să ne schimbăm politica de confidențialitate, vom posta aceste modificări pe această pagină.

        - -

        Acsta a fost actualizat ultima dată pe 27 aprilie 2020.

        - -

        Adaptat inițial din Politica de confidențialitate Discourse .

        title: "%{instance} Termeni de utilizare și Politica de confidențialitate" themes: contrast: Mastodon (contrast mare) diff --git a/config/locales/ru.yml b/config/locales/ru.yml index b3038846e..c0495c3ee 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -1503,83 +1503,6 @@ ru: tags: does_not_match_previous_name: не совпадает с предыдущим именем terms: - body_html: | -

        Privacy Policy

        -

        What information do we collect?

        - -
          -
        • Basic account information: If you register on this server, you may be asked to enter a username, an e-mail address and a password. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly.
        • -
        • Posts, following and other public information: The list of people you follow is listed publicly, the same is true for your followers. When you submit a message, the date and time is stored as well as the application you submitted the message from. Messages may contain media attachments, such as pictures and videos. Public and unlisted posts are available publicly. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public.
        • -
        • Direct and followers-only posts: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. Please keep in mind that the operators of the server and any receiving server may view such messages, and that recipients may screenshot, copy or otherwise re-share them. Do not share any dangerous information over Mastodon.
        • -
        • IPs and other metadata: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server.
        • -
        - -
        - -

        What do we use your information for?

        - -

        Any of the information we collect from you may be used in the following ways:

        - -
          -
        • To provide the core functionality of Mastodon. You can only interact with other people's content and post your own content when you are logged in. For example, you may follow other people to view their combined posts in your own personalized home timeline.
        • -
        • To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations.
        • -
        • The email address you provide may be used to send you information, notifications about other people interacting with your content or sending you messages, and to respond to inquiries, and/or other requests or questions.
        • -
        - -
        - -

        How do we protect your information?

        - -

        We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL, and your password is hashed using a strong one-way algorithm. You may enable two-factor authentication to further secure access to your account.

        - -
        - -

        What is our data retention policy?

        - -

        We will make a good faith effort to:

        - -
          -
        • Retain server logs containing the IP address of all requests to this server, in so far as such logs are kept, no more than 90 days.
        • -
        • Retain the IP addresses associated with registered users no more than 12 months.
        • -
        - -

        You can request and download an archive of your content, including your posts, media attachments, profile picture, and header image.

        - -

        You may irreversibly delete your account at any time.

        - -
        - -

        Do we use cookies?

        - -

        Yes. Cookies are small files that a site or its service provider transfers to your computer's hard drive through your Web browser (if you allow). These cookies enable the site to recognize your browser and, if you have a registered account, associate it with your registered account.

        - -

        We use cookies to understand and save your preferences for future visits.

        - -
        - -

        Do we disclose any information to outside parties?

        - -

        We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety.

        - -

        Your public content may be downloaded by other servers in the network. Your public and followers-only posts are delivered to the servers where your followers reside, and direct messages are delivered to the servers of the recipients, in so far as those followers or recipients reside on a different server than this.

        - -

        When you authorize an application to use your account, depending on the scope of permissions you approve, it may access your public profile information, your following list, your followers, your lists, all your posts, and your favourites. Applications can never access your e-mail address or password.

        - -
        - -

        Children's Online Privacy Protection Act Compliance

        - -

        Our site, products and services are all directed to people who are at least 13 years old. If this server is in the USA, and you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site.

        - -
        - -

        Changes to our Privacy Policy

        - -

        If we decide to change our privacy policy, we will post those changes on this page.

        - -

        This document is CC-BY-SA. It was last updated March 7, 2018.

        - -

        Originally adapted from the Discourse privacy policy.

        title: Условия обслуживания и политика конфиденциальности %{instance} themes: contrast: Mastodon (высококонтрастная) diff --git a/config/locales/sc.yml b/config/locales/sc.yml index d4b9f6639..99cd3f0b5 100644 --- a/config/locales/sc.yml +++ b/config/locales/sc.yml @@ -1173,87 +1173,6 @@ sc: tags: does_not_match_previous_name: non cointzidet cun su nòmine anteriore terms: - body_html: | -

        Polìtica de riservadesa

        -

        Ite informatziones collimus?

        - -
          -
        • Informatziones de base de su contu: Si t'as a registrare in custu serbidore, ti diant pòdere pedire de insertare unu nòmine utente, un'indiritzu de posta eletrònica e una crae de intrada. Dias pòdere insertare fintzas àteras informatziones de profilu, che a unu nòmine de ammustrare e una biografia, e carrigare un'immàgine de profilu e una de cobertedda. Su nòmine utente, cussu ammustradu, sa biografia, s'immàgine de profilu e de cobertedda sunt semper allistados in pùblicu.
        • -
        • Publicatziones, sighidores e àteras informatziones pùblicas: Sa lista de is persones chi sighis est allistada in pùblicu, e sa matessi cosa balet pro is chi ti sighint. Cando imbias unu messàgiu sa data e s'ora benint sarvadas, aici comente s'aplicatzione dae sa cale as imbiadu su messàgiu. Is messàgios diant pòdere cuntènnere cuntenutos multimediales allongiados, che a immàgines e vìdeos. Is publicatziones pùblicas e no allistadas sunt a disponimentu in abertu. Cando ammustras una publicatzione in su profilu tuo, fintzas cussa est un'informatzione a disponimentu pùblicu. Is publicatziones tuas benint imbiadas a is sighidores tuos, cosa chi a bortas bolet nàrrere chi benint intregadas a serbidores diferentes chi nde sarvant còpias in cue. Cando cantzellas publicatziones, custu acuntessimentu benit imbiadu fintzas issu a is persones chi ti sighint. S'atzione de torrare a cumpartzire o de pònnere in is preferidos un'àtera publicatzione est semper pùblica.
        • -
        • Publicatziones diretas e pro chie ti sighit ebbia: Totu is publicatziones benint archiviadas e protzessadas in su serbidore. Is publicatziones pro is sighidores ebbia benint intregadas a chie ti sighit e a is utentes mentovados in intro, e is publicatziones diretas benint intregadas isceti a chie sighit a chi ddoe sunt mentovados in intro. In unos cantos casos bolet nàrrere chi benint intregados a serbidores diferentes e chi còpias issoro benint sarvadas in cue. Nois chircamus de limitare s'atzessu a custas publicatziones a is persones autorizadas ebbia, ma àteros serbidores bi diant pòdere non resessere. Pro custa resone est de importu mannu su de revisionare is serbidores a is cales faghent parte is sighiduras tuas. Podes impreare un'optzione pro aprovare o refudare in manera automàtica sighiduras noas in is cunfiguratziones. Regorda·ti chi is operadores de su serbidore e cale si siat serbidore chi ddos retzit podent castiare custos messàgios, e chi is retzidores ddos diant pòdere sarvare faghende caturas, copiende·los o torrende·los a cumpartzire in àteras maneras. Non cumpartzas peruna informatzione perigulosa impreende Mastodon.
        • -
        • IP e àteros metadatos: Cando intras in su contu tuo sarvamus s'indiritzu IP dae ue ses intrende, e fintzas su nòmine de s'aplicatzione chi impreas comente navigadore. Totu is sessiones de atzessu abertas sunt a disponimentu pro sa revisione e sa rèvoca in is cunfiguratziones tuas. S'ùrtimu indiritzu IP impreadu benit sarvadu finas a 12 meses. Diamus pòdere archiviare fintzas raportos chi includent is indiritzos IP de totu is rechestas a su serbidore nostru.
        • -
        - -
        - -

        Pro ite cosas impreamus is informatziones tuas?

        - -

        Totu is informatziones chi collimus dae tene diant pòdere èssere impreadas in is maneras chi sighint:

        - -
          -
        • Pro frunire sa funtzionalidade de base de Mastodon. Podes interagire cun is cuntenutos de is àteras persones, e cumpartzire is tuos, isceti cando as fatu s'atzessu in su contu tuo. Pro esèmpiu, podes sighire àteras persones pro castiare is publicatziones cumbinadas issoro in sa lìnia de tempus personalizada printzipale tua.
        • -
        • Pro agiudare sa moderatzione de sa comunidade, pro esèmpiu cunfrontende s'indiritzu IP tuo cun àteros giai connotos pro verificare evasiones de blocos o àteras violatziones.
        • -
        • S'indiritzu de posta eletrònica chi as a frunire diat pòdere èssere impreadu pro t'imbiare informatziones, notìficas a pitzu de àteras persones chi ant a interagire cun is cuntenutos tuos o chi t'ant a imbiare messàgios, e pro rispòndere a interrogativos e/o àteras rechestas o preguntas.
        • -
        - -
        - -

        Comente amparamus is informatziones tuas?

        - -

        Impreamus medidas de seguresa vàrias pro amparare sa seguresa de is informatziones personales tuas cando insertas o imbias is informatziones personales tuas, o cando bi atzedes. In paris a àteras cosas, sa sessione de su navigadore tuo, e fintzas su tràficu intre s'aplicatzione tua e s'API, benint amparados cun SSL, e sa crae tua benit tzifrada impreende un'algoritmu forte a una diretzione. Pro afortiare sa seguresa de s'atzessu a su contu tuo ancora de prus podes abilitare s'autenticatzione in duos fatores.

        - -
        - -

        Cale est sa polìtica nostra de archiviatzione de is datos?

        - -

        Amus a fàghere un'isfortzu in fide bona pro chircare de:

        - -
          -
        • Mantènnere in archìviu is raportos chi cuntenent is indiritzos IP de totu is rechestas a custu serbidore, cando cussas rechestas benint registradas, pro non prus de 90 dies.
        • -
        • Mantènnere in archìviu is indiritzos IP assotziados a is utentes registrados pro non prus de 12 meses.
        • -
        - -

        Podes pedire e iscarrigare un'archìviu de is cuntenutos tuos chi includet is publicatziones tuas, is elementos multimediales allongiados, s'immàgine de profilu e cussa de cobertedda.

        - -

        Podes cantzellare su contu tuo in manera irreversìbile in cale si siat momentu.

        - -
        - -

        Impreamus is testimòngios?

        - -

        Eja. Is testimòngios ("cookies") sunt documentos minores chi unu situ o su frunidore de servìtzios suos tramudant a su discu tèteru de s'elaboradore tuo pro mèdiu de su navigadore web tuo (si si ddu permitis). Custos testimòngios permitint a su situ de reconnòschere su navigadore tuo e, si tenes unu contu registradu, de ddu assotziare cun su contu tuo.

        - -

        Impreamus is testimòngios pro cumprèndere e sarvare is preferèntzias tuas pro is visitas imbenientes.

        - -
        - -

        Rivelamus calicuna informatzione a tertzas partes?

        - -

        Non bendimus, cuncambiamus, o tramudamus in àteras maneras is informatziones tuas chi ti diant pòdere individuare in manera personale. Custu no incluit sugetos de tertzas partes fidados chi nos agiudant a amministrare su situ, fàghere is fainas nostras, o a t'agiudare, finas a cando cussos sugetos atzetant de mantènnere cunfidentziales cussas informatziones. Diamus fintzas pòdere frunire is informatziones tuas si amus a èssere cumbintos chi siat apropriadu pro sighire is leges, aplicare is polìticas de su situ nostru, e amparare is deretos, propiedades o seguresas nostros o de àteros.

        - -

        Is cuntenutos pùblicos tuos diant pòdere èssere iscarrigados dae àteros serbidores in sa rete. Is publicatziones pùblicas e pro is sighiduras ebbia benint intregadas a is serbidores in ue istant is retzidores, si istant in unu serbidore chi no est custu.

        - -

        Cando autorizas un'aplicatzione a impreare su contu tuo, a segunda de sa mannària de is permissos chi frunis, cussa diat pòdere atzèdere a is informatziones pùblicas de profilu tuas, a sa lista de is persones chi sighis e chi ti sighint, a is listas tuas, a totu is publicatziones tuas e a is referidos tuos. Is aplicatziones non podent mai tènnere atzessu a s'indiritzu de posta eletrònica tuo e a sa crae de intrada tua.

        - -
        - -

        Impreu de custu situ dae parte de minores

        - -

        Si custu serbidore est in s'UE o in s'ÀEE: Su situ nostru, is produtos nostros e is servìtzios nostros sunt totu cantos pensados pro persones chi tenent a su mancu 16 annos de edade. Si tenes de mancu de 16 annos, in aplicatzione de is rechisitos de su GDPR (General Data Protection Regulation) no imprees custu situ.

        - -

        Si custu serbidore est in is IUA: Su situ nostru, is produtos e is servìtzios suos sunt totu cantos pensados pro persones chi tenent a su mancu 13 annos de edade. Si tenes de mancu de 13 annos, in aplicatzione de su COPPA (Children's Online Privacy Protection Act) no imprees custu situ.

        - -

        Is rechisitos de sa lege diant pòdere èssere diferentes si custu serbidore est in suta de un'àtera giurisditzione.

        - -
        - -

        Modìficas a sa polìtica de riservadesa nostra

        - -

        Si amus a seberare de cambiare sa polìtica de riservadesa nostra amus a publicare is modìficas in custa pàgina.

        - -

        Custu documentu tenet una litzèntzia CC-BY-SA. Est istadu agiornadu s'ùrtima borta su 7 de martzu de su 2018.

        - -

        Adatadu, in orìgine, dae sa Polìtica de riservadesa de Discourse.

        title: "%{instance} Cunditziones de su servìtziu e polìtica de riservadesa" themes: contrast: Mastodon (cuntrastu artu) diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml index 11eeac74e..47ec6559d 100644 --- a/config/locales/simple_form.eo.yml +++ b/config/locales/simple_form.eo.yml @@ -156,14 +156,14 @@ eo: setting_expand_spoilers: Ĉiam malfoldas mesaĝojn markitajn per averto pri enhavo setting_hide_network: Kaŝi viajn sekvantojn kaj sekvatojn setting_noindex: Ellistiĝi de retserĉila indeksado - setting_reduce_motion: Redukti movecon en la animacioj + setting_reduce_motion: Redukti la movecojn de la animacioj setting_show_application: Publikigi la aplikaĵon uzatan por sendi mesaĝojn setting_system_font_ui: Uzi la dekomencan tiparon de la sistemo setting_theme: Reteja etoso setting_trends: Montri hodiaŭajn furoraĵojn setting_unfollow_modal: Montri konfirman fenestron antaŭ ol ĉesi sekvi iun setting_use_blurhash: Montri buntajn transirojn por kaŝitaj aŭdovidaĵoj - setting_use_pending_items: Malrapida reĝimo + setting_use_pending_items: Malrapida modo severity: Graveco sign_in_token_attempt: Sekureca kodo type: Importa tipo diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 8a46b531f..d59e81cc8 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -367,10 +367,15 @@ sk: title: Odporáčania na sledovanie unsuppress: Obnoviť odporúčanie na sledovanie instances: + availability: + title: Dostupnosť back_to_all: Všetko back_to_limited: Obmedzené back_to_warning: Upozornenie by_domain: Doména + content_policies: + policies: + suspend: Vylúč delivery: all: Všetko unavailable: Nedostupné @@ -442,9 +447,11 @@ sk: comment: none: Žiadne created_at: Nahlásené + delete_and_resolve: Vymaž príspevky forwarded: Preposlané forwarded_to: Preposlané na %{domain} mark_as_resolved: Označiť ako vyriešené + mark_as_sensitive: Označ ako chúlostivé mark_as_unresolved: Označ ako nevyriešené no_one_assigned: Nikoho notes: @@ -1092,32 +1099,6 @@ sk: tags: does_not_match_previous_name: nezhoduje sa s predošlým názvom terms: - body_html: | -

        Podmienky súkromia

        - -

        Aké informácie sú zbierané?

        - -
          -
        • Základné informácie o účte: Ak sa na tomto serveri zaregistruješ, budeš môcť byť požiadaný/á zadať prezývku, emailovú adresu a heslo. Budeš tiež môcť zadať aj ďalšie profilové údaje, ako napríklad meno a životopis, a nahrať profilovú fotku aj obrázok v záhlaví. Tvoja prezývka, meno, životopis, profilová fotka a obrázok v záhlaví sú vždy zobrazené verejne.
        • Príspevky, sledovania a iné verejné informácie: - Zoznam ľudí, ktorých sleduješ je zobrazený verejne, a to isté platí aj pre zoznam tvojích nasledovateľov. Keď pošleš správu, ukladá sa jej dátum a čas, ale aj z akej aplikácie bola poslaná. Správy môžu obsahovať mediálne prílohy, ako obrázky a videá. Verejné, a nezaradené príspevky sú verejne prístupné. Keď si pripneš príspevok na svoj profil, toto je tiež verejne dostupnou informáciou. Tvoje príspevky sú takisto doručené tvojím sledovateľom, a to aj v rámci iných serverov, kde je potom uložená kópia tvojho príspevku. Ak vymažeš príspevok, táto akcia bude takisto doručená tvojím sledovateľom. Vyzdvihnutie, alebo obľúbenie iného príspevku je vždy verejne viditeľné.
        • - -
        • Priame príspevky, a príspevky určené iba pre sledovateľov: Všetky príspevky sú uložené a spracované na serveri. Príspevky iba pre sledovateľov sú doručené tvojím sledovateľom a užívateľom ktorí sú v nich spomenutí, pričom priame príspevky sú doručené iba tím užívateľom ktorí sú v nich spomenutí. V niektorých prípadoch to môže znamenať, že tieto príspevkz sú doručené aj v rámci iných serverov, a kópie príspevkov sú na nich uložené. - V dobrej viere robíme všetko preto, aby bol prístup k tímto príspevkom vymedzený iba pre oprávnených používateľov, ale môže sa stať, že iné servery v tomto ohľade zlyhajú. Preto je dôležité prezrieť si a zhodnotiť, na aké servery patria tvoji následovatelia. V nastaveniach si môžeš zapnúť voľbu ručne povoľovať a odmietať nových následovateľov. - Prosím maj na pamäti, že správcovia tvojho, aj vzdialeného obdŕžiavajúceho servera majú možnosť vidieť dané príspevky a správy, ale aj, že obdŕžitelia týchto správ si ich môzu odfotiť, skopírovať, alebo ich inak zdieľať. Nezdieľaj žiadne nebezpečné, alebo ohrozujúce správy pomocou Mastodonu!
        • - -
        • IPky a iné metadáta: Keď sa prihlásiš, zaznamenáva sa IP adresa z ktorej si sa prihlásil/a, takisto ako aj názov tvojho prehliadača. Všetky zaznamenané sezóny sú pre teba dostupné na konktolu, alebo na zamietnutie prístupu v nastaveniach. Posledná použitá IP adresa je uložená až po dobu dvanástich mesiacov. Môžeme si tiež ponechať serverové záznamy, ktoré obsahujú IP adresu každej požiadavky na tento server.
        • -
        - -
        - -

        Načo sú tvoje údaje používané?

        - -

        Hociktorá z informácií, ktoré sú o tebe zozbierané, môže byť použité následujúcimi spôsobmi:

        -
          -
        • Pre zabezpečenie základného fungovania Mastodonu. Narábať s užívateľským obsahom iných, ako aj prispievať svoj vlastný obsah, možeš len keď si prihlásený/á. Môžeš napríklad nasledovať iných ľudí, aby si potom videl/a ich príspevky v rámci svojej osobne prispôsobenej domácej osi.
        • -
        • Pre lepšie moderovanie komunity sa napríklad môže tvoja IP adresa porovnať s ostatnými už známimi adresami, aby bolo možné zistiť, či nedochádza napríklad k obchádzaniu pravidiel vylúčenia, aleb k iným porušeniam zásad.
        • -
        • Emailová adresa, ktorú poskytneš, môže byť použitá na zasielanie informácií, oboznámení keď ostatní užívatelia interaktujú s tvojím obsahom, alebo na posielanie správ, odpovedí na otázky a iné požiadavky.
        • -
        title: Podmienky užívania, a pravidlá súkromia pre %{instance} themes: contrast: Mastodon (vysoký kontrast) diff --git a/config/locales/sl.yml b/config/locales/sl.yml index d846c8b92..58190e95b 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -1580,14 +1580,14 @@ sl: does_not_match_previous_name: se ne ujema s prejšnjim imenom terms: body_html: | -

        Pravilnik o zasebnosti

        -

        Katere informacije zbiramo?

        +

        Politika zasebnosti

        +

        Katere vrste podatkov zbiramo?

          -
        • Osnovni podatki o računu: Če se registrirate na tem strežniku, boste morda morali vnesti uporabniško ime, e-poštni naslov in geslo. Vnesete lahko tudi dodatne informacije o profilu, na primer prikazno ime in biografijo, ter naložite sliko profila in sliko glave. Uporabniško ime, prikazno ime, biografija, slika profila in slika glave so vedno javno dostopni.
        • -
        • Objave, sledenja in druge javne informacije: Seznam oseb, ki jim sledite, je javno dostopen, enako velja za vaše sledilce. Ko pošljete sporočilo, sta datum in čas shranjena, kot tudi aplikacija, iz katere ste poslali sporočilo. Sporočila lahko vsebujejo medijske priloge, kot so slike in video posnetki. Javne in neprikazane objave so javno dostopne. Ko v profilu vključite objavo, je to tudi javno dostopna informacija. Vaše objave, ki so dostavljene vašim sledilcem, so včasih dostavljeni na različne strežnike, kjer se kopije objav tudi shranijo. Ko izbrišete objave, se to prav tako dostavi vašim sledilcem. Spodbujanje in vzljubitev drugih objav sta veno javni.
        • -
        • Neposredne objave in objave samo za sledilce: Vse objave so shranjene in obdelane na strežniku. Objave samo za sledilce se dostavijo vašim sledilcem in uporabnikom, ki so v njih omenjeni. Neposredne objave se posredujejo samo uporabnikom, ki so v njih omenjeni. V nekaterih primerih so dostavljeni na različne strežnike, kopije pa se shranijo tam. V dobri veri si prizadevamo omejiti dostop do teh objav samo pooblaščenim osebam, vendar drugi strežniki to morda ne bodo storili. Zato je pomembno, da pregledate strežnike, na katerih so sledilci. V nastavitvah lahko preklapljate med možnostmi za odobritev in zavrnitev novih sledilcev. Ne pozabite, da lahko operaterji strežnika in kateri koli prejemni strežnik takšna sporočila pregledajo in da jih lahko prejemniki posnamejo, kopirajo ali drugače ponovno delijo. Ne pošiljajte nevarnih informacij skozi Mastodon.
        • -
        • IP-ji in drugi metapodatki: Ko se prijavite, zabeležimo naslov IP, s katerega se prijavljate, in ime aplikacije brskalnika. V nastavitvah so za pregled in preklic na voljo vse prijavljene seje. Zadnji uporabljeni IP naslov je shranjen do 12 mesecev. Prav tako lahko obdržimo dnevnike strežnikov, ki vsebujejo IP naslov vsake zahteve na naš strežnik.
        • +
        • Osnovni podatki o računu: Če se registrirate na tem strežniku, boste morda morali vnesti uporabniško ime, e-poštni naslov in geslo. Vnesete lahko tudi dodatne informacije o profilu, npr. pojavno ime in biografijo, ter naložite sliko profila in sliko glave. Uporabniško ime, pojavno ime, biografija, slika profila in slika glave so vedno javno dostopni.
        • +
        • Objave, sledenja in druge javne informacije: Seznam oseb, ki jim sledite, je javno dostopen, enako velja za vaše sledilce. Ko pošljete sporočilo, sta datum in čas shranjena, kot tudi aplikacija, iz katere ste poslali sporočilo. Sporočila lahko vsebujejo medijske priloge, kot so slike in videoposnetki. Javne in neprikazane objave so javno dostopne. Ko v profilu vključite objavo, je to tudi javno dostopna informacija. Vaše objave, ki so dostavljene vašim sledilcem, so včasih dostavljeni na različne strežnike, kjer se kopije objav tudi shranijo. Ko izbrišete objave, se to prav tako dostavi vašim sledilcem. Spodbujanje in vzljubitev drugih objav sta vedno javni.
        • +
        • Neposredne objave in objave samo za sledilce: Vse objave so shranjene in obdelane na strežniku. Objave samo za sledilce se dostavijo vašim sledilcem in uporabnikom, ki so v njih omenjeni. Neposredne objave se posredujejo samo uporabnikom, ki so v njih omenjeni. V nekaterih primerih so dostavljeni na različne strežnike, kopije pa se shranijo tam. V dobri veri si prizadevamo omejiti dostop do teh objav samo pooblaščenim osebam, vendar drugi strežniki to morda ne bodo storili. Zato je pomembno, da pregledate strežnike, na katerih so sledilci. V nastavitvah lahko preklapljate med možnostmi za odobritev in zavrnitev novih sledilcev. Ne pozabite, da lahko operaterji strežnika in poljubni prejemni strežnik takšna sporočila pregledajo in da jih lahko prejemniki poslikajo, kopirajo ali drugače ponovno delijo. Ne pošiljajte občutljivih informacij skozi Mastodon.
        • +
        • IP-ji in drugi metapodatki: Ko se prijavite, zabeležimo naslov IP, s katerega se prijavljate, in ime aplikacije brskalnika. V nastavitvah so za pregled in preklic na voljo vse prijavljene seje. Zadnji uporabljeni IP naslov je shranjen največ 12 mesecev. Prav tako lahko obdržimo dnevnike strežnikov, ki vsebujejo IP-naslov vsake zahteve na naš strežnik.

        @@ -1597,9 +1597,9 @@ sl:

        Vse informacije, ki jih zbiramo od vas, so lahko uporabljene na naslednje načine:

          -
        • Za zagotavljanje osrednje funkcionalnosti Mastodona. Komunicirate lahko z vsebino drugih oseb in objavljate lastno vsebino, ko ste prijavljeni. Na primer, lahko spremljate druge osebe in si ogledate njihove kombinirane objave v svoji prilagojeni domači časovnici.
        • -
        • Za pomoč pri moderiranju skupnosti, na primer primerjavo vašega naslova IP naslova z drugimi znanimi, za izobčitev izmikanja ali drugih kršitev.
        • -
        • E-poštni naslov, ki ga navedete, se lahko uporabi za pošiljanje informacij, obvestil o drugih osebah, ki komunicirajo z vašo vsebino ali pošiljanju sporočil, ter za odzivanje na poizvedbe in/ali druge zahteve ali vprašanja.
        • +
        • Za zagotavljanje osrednje funkcionalnosti Mastodona. Komunicirate lahko z vsebino drugih oseb in objavljate lastno vsebino, ko ste prijavljeni. Primer: spremljate lahko druge osebe in si ogledate njihove kombinirane objave v svoji prilagojeni domači časovnici.
        • +
        • Za pomoč pri moderiranju skupnosti, npr. primerjavo vašega naslova IP z drugimi znanimi za ugotavljanje izmikanja prepovedim ali drugih kršitev.
        • +
        • E-poštni naslov, ki ga navedete, se lahko uporabi za pošiljanje informacij, obvestil o drugih osebah, ki komunicirajo z vašo vsebino ali vam pošiljajo sporočila, ter za odzivanje na poizvedbe in/ali druge zahteve ali vprašanja.

        @@ -1615,8 +1615,8 @@ sl:

        Prizadevali si bomo za:

          -
        • Shranjevanje dnevnike strežnikov, ki vsebujejo naslov IP vseh zahtev za ta strežnik, če so hranjeni, največ 90 dni.
        • -
        • Obdržiitev naslovov IP, povezane z registriranimi uporabniki, ne več kot 12 mesecev.
        • +
        • Shranjevanje dnevnikov strežnikov, ki vsebujejo naslov IP vseh zahtev za ta strežnik, če so hranjeni, največ 90 dni.
        • +
        • Obdržiitev naslovov IP, povezanih z registriranimi uporabniki, ne več kot 12 mesecev.

        Lahko zahtevate in prenesete arhiv vaše vsebine, vključno z objavami, predstavnostnimi prilogami, sliko profila in sliko glave.

        @@ -1635,7 +1635,7 @@ sl:

        Ali razkrivamo informacije zunanjim strankam?

        -

        Vaših osebnih podatkov ne prodajamo, preprodajamo ali kako drugače posredujemo zunanjim osebam. To ne vključuje zaupanja vrednih tretjih oseb, ki nam pomagajo pri upravljanju naše spletne strani, vodenju našega poslovanja ali storitev, če se te strani strinjajo, da bodo te informacije zaupne. Vaše podatke lahko tudi objavimo, če menimo, da je objava ustrezna in v skladu z zakonom, uveljavlja pravilnike o spletnih mestih ali ščiti naše ali druge pravice, lastnino ali varnost.

        +

        Vaših osebnih podatkov ne prodajamo, preprodajamo ali kako drugače posredujemo tretjim osebam. To ne vključuje zaupanja vrednih tretjih oseb, ki nam pomagajo pri upravljanju naše spletne strani, vodenju našega poslovanja ali storitev, če se te strani strinjajo, da bodo te informacije zaupne. Vaše podatke lahko tudi objavimo, če menimo, da je objava ustrezna in v skladu z zakonom, uveljavlja pravilnike o spletnih mestih ali ščiti naše ali druge pravice, lastnino ali varnost.

        Vaše javne vsebine lahko prenesejo drugi strežniki v omrežju. Vaše objave in objave samo za sledilce so dostavljene na strežnike, na katerih prebivajo vaši sledilci, in neposredna sporočila so dostavljena na strežnike prejemnikov, če so ti sledilci ali prejemniki na drugem strežniku.

        @@ -1643,23 +1643,23 @@ sl:
        -

        Uporaba strani s strani otrok

        +

        Uporaba spletišča s strani otrok

        -

        Če je ta strežnik v EU ali EEA: Naše spletno mesto, izdelki in storitve so namenjeni ljudem, ki so stari vsaj 16 let. Če ste mlajši od 16 let, po zahtevah GDPR (General Data Protection Regulation) ne uporabljajte tega spletnega mesta.

        +

        Če je ta strežnik v EU ali EEA: Naše spletno mesto, izdelki in storitve so namenjeni ljudem, ki so stari vsaj 16 let. Če ste mlajši od 16 let, po zahtevah GDPR (General Data Protection Regulation) ne uporabljajte tega spletnega mesta. (General Data Protection Regulation).

        -

        Če je ta strežnik v ZDA Naše spletno mesto, izdelki in storitve so namenjeni ljudem, ki so stari vsaj 13 let. Če ste mlajši od 13 let, po zahtevah COPPA (Children's Online Privacy Protection Act) ne uporabljajte tega spletnega mesta.

        +

        Če je ta strežnik v ZDA: Naše spletno mesto, izdelki in storitve so namenjeni ljudem, ki so stari vsaj 13 let. Če ste mlajši od 13 let, po zahtevah COPPA (Children's Online Privacy Protection Act), ne uporabljajte tega spletnega mesta.

        Če je ta strežnik v drugi jurisdikciji, so lahko zakonske zahteve drugačne.


        -

        Spremembe našega pravilnika o zasebnosti

        +

        Spremembe naše politike zasebnosti

        Če se odločimo za spremembo našega pravilnika o zasebnosti, bomo te spremembe objavili na tej strani.

        Ta dokument je CC-BY-SA. Zadnja posodobitev je bila 7. marca 2018.

        -

        Prvotno je bila prilagojena v skladu s pravilnikom o zasebnosti diskurza.

        +

        Prvotno je bila prilagojena v skladu s politiko zasebnost Discourse.

        title: "%{instance} Pogoji storitve in pravilnik o zasebnosti" themes: contrast: Mastodon (Visok kontrast) diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 30b701c25..8974b9c84 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -1513,87 +1513,6 @@ sq: tags: does_not_match_previous_name: s’përputhet me emrin e mëparshëm terms: - body_html: | -

        Rregulla Privatësie

        -

        Ç’të dhëna grumbullojmë?

        - -
          -
        • Të dhëna bazë llogarie: Nëse regjistroheni në këtë shërbyes, mund t’ju kërkohet të jepni një emër përdoruesi, një adresë email dhe një fjalëkalim. Mundet të jepni edhe të dhëna shtesë profili, të tilla si emër në ekran dhe jetëshkrim, dhe të ngarkoni një foto profili dhe figurë kryesh. Emri i përdoruesit, emri për në ekran, jetëshkrimi, fotoja e profilit dhe figura për kryet shfaqen përherë publikisht.
        • -
        • Postime, ndjekje dhe të tjera të dhëna publike: Lista e personave që ndiqni, shfaqet publikisht, po njësoj edhe ajo e ndjekësve tuaj. Kur parashtroni një mesazh, depozitohet data dhe koha, si dhe aplikacioni prej nga u parashtrua mesazhi. Mesazhet mund të përmbajnë bashkëngjitje media, bie fjala, foto dhe video. Postimet publike dhe ato të pashfaqura janë të passhme publikisht. Kur një postim e vini të zgjedhur në profilin tuaj, edhe ky është informacion i passhëm publikisht. Postimet tuaja u dërgohen ndjekësve tuaj, në disa raste kjo do të thotë se dërgohen në shërbyes të ndryshëm dhe në ta depozitohen kopje të tyre. Kur fshini postime, edhe kjo u dërgohet ndjekësve tuaj. Veprimi i riblogimit apo i parapëlqimit të një postimi tjetër është përherë publik.
        • -
        • Postime të drejtpërdrejta dhe ato vetëm për ndjekësit: Krejt postimet depozitohen dhe trajtohen te shërbyesi. Postimet vetëm për ndjekës u dërgohen ndjekësve tuaj të cilët përmenden në to, dhe postimet e drejtpërdrejta u dërgohen vetëm përdoruesve të përmendur në to. Në disa raste kjo do të thotë se dërgohen në shërbyes të ndryshëm dhe në ta depozitohen kopje të tyre. Përpiqemi pa hile të kufizojmë hyrjen në këto postime vetëm të personave të autorizuar, por shërbyesit e tjerë mund të mos bëjnë të njëjtën gjë. Ndaj është e rëndësishme të shqyrtoni shërbyesit pjesë e të cilëve janë ndjekësit tuaj. Te rregullimet mund të përdorni një mundësi për të miratuar ose hedhur poshtë dorazi ndjekës të rinj. Ju lutemi, mbani parasysh se operatorët e shërbyesit dhe cilido shërbyes marrës mund t’i shohin mesazhe të tillë, dhe që marrësit mund të bëjnë për ta foto ekrani, t’i kopjojnë ose t’i rindajnë ato me të tjerët. Mos u jepni të tjerëve të dhëna të rrezikshme përmes Mastodon-it.
        • -
        • IP dhe të tjera tejtëdhëna: Kur bëni hyrjen, regjistrojmë adresën IP prej nga hytë, si dhe emrin e shfletuesit tuaj. Te rregullimet mund të shqyrtoni dhe shfuqizoni krejt sesionet ku keni qenë të futur. Adresa e fundit IP e përdorur depozitohet për 12 muaj. Mund të mbajmë edhe regjistra shërbyesi të cilët përfshijnë adresën IP të çdo kërkese ndaj shërbyesit tonë.
        • -
        - -
        - -

        Përse i përdorim të dhënat tuaja?

        - -

        Cilado prej të dhënave që grumbullojmë prej jush mund të përdoret në rrugët vijuese:

        - -
          -
        • Për të mundësuar funksionimin bazë të Mastodon-it. Mundeni të ndërveproni me lëndën e personave të tjerë dhe të postoni lëndë tuajën vetëm kur jeni i futur në llogarinë tuaj. Për shembull, mund të ndiqni njerëz të tjerë për të parë postimet e tyre të ndërthurura te rrjedha juaj kohore e përshtatur.
        • -
        • Për të ndihmuar moderimin e bashkësisë, për shembull, duke krahasuar adresën tuaj IP me të tjera të njohura, për të përcaktuar shmangie nga dëbime ose cenime të tjera.
        • -
        • Adresa email që jepni mund të përdoret për t’ju dërguar informacion, njoftime mbi persona të tjerë që ndërveprojnë me lëndën tuaj ose që ju dërgojnë mesazhe, dhe për t’iu përgjigju pyetjeve dhe/ose kërkesave të tjera.
        • -
        - -
        - -

        Si i mbrojmë të dhënat tuaja?

        - -

        Vëmë në punë një larmi masash sigurie për të ruajtur të parrezikuara të dhënat tuaja personale kur jepni, parashtroni, ose hyni në to. Mes të tjerash, sesioni juaj i shfletimit, si edhe trafiku mes aplikacioneve tuaja dhe API-t, sigurohen me SSL, dhe fjalëkalimi juaj mbrohet duke përdorur një algoritëm të sigurt njëdrejtimsh. Për të siguruar edhe më hyrjet te llogaria juaj, mund të aktivizoni mirëfilltësimin dyfaktorësh.

        - -
        - -

        Cilat janë rregullat tona mbi mbajtjen e të dhënave?

        - -

        Do të përpiqemi pa hile:

        - -
          -
        • Të mbajmë regjistra shërbyesi që përmbajnë adresën IP të krejt kërkesave te ky shërbyes, sa kohë që regjistra të tillë mbahen, për jo më shumë se 90 ditë.
        • -
        • Të mbajmë adresat IP përshoqëruar me përdoruesit e regjistruar, për jo më shumë se 12 muaj.
        • -
        - -

        Mund të kërkoni dhe të shkarkoni një arkiv të lëndës tuaj, përfshi postimet tuaja, bashkëngjitje media, foto profili, dhe figurë kryesh.

        - -

        Mund të fshini në mënyrë të pakthyeshme llogarinë tuaj në çfarëdo kohe.

        - -
        - -

        A përdorim cookies?

        - -

        Po. Cookie-t janë kartela të vockla, ose furnizuesi i shërbimit për të, i depoziton në diskun e kompjuterit tuaj përmes shfletuesit (nëse e lejoni ju). Këto cookies i bëjnë të mundur sajtit të njohë shfletuesin tuaj dhe, nëse keni një llogari të regjistruar, ta përshoqërojë atë me llogarinë tuaj të regjistruar.

        - -

        Ne i përdorim cookie-t për të kuptuar dhe ruajtur parapëlqimet tuaja, për vizita të ardhshme.

        - -
        - -

        A u japim palëve të treta ndonjë të dhënë?

        - -

        Nuk u shesim, shkëmbejmë, ose transferojmë në rrugë të tjera palëve të treta të dhëna tuajat personale që lejojnë identifikimin tuaj. Kjo përfshin palë të treta të besuara që na ndihmojnë të xhirojmë sajtin tonë, të bëjmë punën tonë, ose t’ju shërbejmë juve, sa kohë që këto palë pajtohen t’i mbajnë të fshehta këto të dhëna. Mund të japim të dhëna tuajat kur besojmë se kjo është e nevojshme për të qenë në rregull me ligjin, për të zbatuar rregullat e sajtit tonë, ose për të mbrojtur të drejta, pronësi, ose siguri tonën apo të të tjerëve.

        - -

        Lënda juaj publike mund të shkarkohet nga shërbyes të tjerë në rrjet. Postimet tuaja publike dhe ato vetëm për ndjekësit dërgohen te shërbyesit ku gjenden ndjekësit tuaj, dhe mesazhet e drejtpërdrejtë jepen te shërbyesit e marrësve, për rastet ku këta ndjekës apo marrës gjenden në një tjetër shërbyes nga i këtushmi.

        - -

        Kur autorizoni një aplikacion të përdorë llogarinë tuaj, në varësi të shtrirje së lejeve që miratoni, aplikacioni mund të hyjë në të dhënat e profilit tuaj publik, listat tuaja të ndjekjeve, ndjekësit tuaj, lista tuajat, krejt postimet tuaja, dhe të parapëlqyerit tuaj. Aplikacionet s’mund të njohin kurrë adresën tuaj email ose fjalëkalimin.

        - -
        - -

        Përdorim i sajtit nga fëmijë

        - -

        Nëse ky shërbyes gjendet në BE apo në ZEE: Krejt sajti, produktet dhe shërbimet tona u drejtohen personave që janë të paktën 16 vjeç. Nëse jeni nën moshën 16 vjeç, sipas kërkesave të GDPR-së (General Data Protection Regulation), mos e përdorni këtë sajt.

        - -

        Nëse ky shërbyes gjendet në ShBA: Krejt sajti, produktet dhe shërbimet tona u drejtohen personave që janë të paktën 13 vjeç. Nëse jeni nën moshën 13 vjeç, sipas kërkesave të COPPA (Children's Online Privacy Protection Act), mos e përdorni këtë sajt.

        - -

        Domosdoshmëritë e ligjit mund të jenë të ndryshme, nëse ky shërbyes gjendet në një tjetër juridiksion.

        - -
        - -

        Ndryshime te Rregullat tona të Privatësisë

        - -

        Nëse vendosim të ndryshojmë rregullat tona të privatësisë, këto ndryshime do t’i botojmë në këtë faqe.

        - -

        Ky dokument është CC-BY-SA. U përditësua së fundi më 7 mars, 2018.

        - -

        Përshtatur fillimisht nga rregullat e privatësisë në Discourse.

        title: Kushte Shërbimi dhe Rregulla Privatësie te %{instance} themes: contrast: Mastodon (Me shumë kontrast) diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 7bfeb5e0e..715358d5e 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -1183,87 +1183,6 @@ sv: tags: does_not_match_previous_name: matchar inte det föregående namnet terms: - body_html: | -

        Integritetspolicy

        -

        Vilken information samlar vi in?

        - -
          -
        • Grundläggande kontoinformation: Det användarnamn du väljer, visningsnamn, biografi, avatar/profilbild och bakgrundsbild kommer alltid vara tillgängliga för alla som kan nå webbsidan.
        • -
        • Inlägg, vem du följer och annan tillgänglig information: Dina följare och de konton du följer är alltid tillgängliga. När du skapar ett nytt inlägg sparas datum och tid för meddelandet, samt vilket program du använde för att skapa inlägget. Detta gäller även bilder och media som inlägg kan innehålla.Både "Publika" och "Olistade" inlägg kan vara tillgängliga för alla som har åtkomst till webbsidan. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public.
        • -
        • Direct and followers-only posts: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. Please keep in mind that the operators of the server and any receiving server may view such messages, and that recipients may screenshot, copy or otherwise re-share them. Do not share any dangerous information over Mastodon.
        • -
        • IPs and other metadata: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server.
        • -
        - -
        - -

        What do we use your information for?

        - -

        Any of the information we collect from you may be used in the following ways:

        - -
          -
        • To provide the core functionality of Mastodon. You can only interact with other people's content and post your own content when you are logged in. For example, you may follow other people to view their combined posts in your own personalized home timeline.
        • -
        • To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations.
        • -
        • The email address you provide may be used to send you information, notifications about other people interacting with your content or sending you messages, and to respond to inquiries, and/or other requests or questions.
        • -
        - -
        - -

        How do we protect your information?

        - -

        We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL, and your password is hashed using a strong one-way algorithm. You may enable two-factor authentication to further secure access to your account.

        - -
        - -

        What is our data retention policy?

        - -

        We will make a good faith effort to:

        - -
          -
        • Retain server logs containing the IP address of all requests to this server, in so far as such logs are kept, no more than 90 days.
        • -
        • Retain the IP addresses associated with registered users no more than 12 months.
        • -
        - -

        You can request and download an archive of your content, including your posts, media attachments, profile picture, and header image.

        - -

        You may irreversibly delete your account at any time.

        - -
        - -

        Do we use cookies?

        - -

        Yes. Cookies are small files that a site or its service provider transfers to your computer's hard drive through your Web browser (if you allow). These cookies enable the site to recognize your browser and, if you have a registered account, associate it with your registered account.

        - -

        We use cookies to understand and save your preferences for future visits.

        - -
        - -

        Do we disclose any information to outside parties?

        - -

        We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety.

        - -

        Your public content may be downloaded by other servers in the network. Your public and followers-only posts are delivered to the servers where your followers reside, and direct messages are delivered to the servers of the recipients, in so far as those followers or recipients reside on a different server than this.

        - -

        When you authorize an application to use your account, depending on the scope of permissions you approve, it may access your public profile information, your following list, your followers, your lists, all your posts, and your favourites. Applications can never access your e-mail address or password.

        - -
        - -

        Site usage by children

        - -

        If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site.

        - -

        If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site.

        - -

        Law requirements can be different if this server is in another jurisdiction.

        - -
        - -

        Changes to our Privacy Policy

        - -

        If we decide to change our privacy policy, we will post those changes on this page.

        - -

        This document is CC-BY-SA. It was last updated March 7, 2018.

        - -

        Originally adapted from the Discourse privacy policy.

        title: "%{instance} Användarvillkor och Sekretesspolicy" themes: contrast: Hög kontrast diff --git a/config/locales/tr.yml b/config/locales/tr.yml index ad03aa7e4..15f4bf57c 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -1525,87 +1525,6 @@ tr: tags: does_not_match_previous_name: önceki adla eşleşmiyor terms: - body_html: | -

        Gizlilik Politikası

        -

        Hangi bilgileri topluyoruz?

        - -
          -
        • Temel hesap bilgileri: Bu sunucuya kaydolursanız, bir kullanıcı adı, bir e-posta adresi ve bir parola girmeniz istenebilir. Ayrıca, ekran adı ve biyografi gibi ek profil bilgileri girebilir ve bir profil fotoğrafı ve başlık resmi yükleyebilirsiniz. Kullanıcı adı, ekran ad, biyografi, profil fotoğrafı ve başlık resmi her zaman herkese açık olarak listelenir.
        • -
        • Gönderiler, takip etmeler ve diğer herkese açık bilgiler: Takip ettiğiniz kişilerin listesi herkese açık olarak listelenir, sizi takip edenler için de aynısı geçerlidir. Bir mesaj gönderdiğinizde, mesajı gönderdiğiniz uygulamanın yanı sıra tarih ve saati de saklanır. Mesajlar, resim ve video gibi medya ekleri içerebilir. Herkese açık ve listelenmemiş gönderiler halka açıktır. Profilinizde bir gönderiyi yayınladığınızda, bu da herkese açık olarak mevcut bir bilgidir. Gönderileriniz takipçilerinize iletilir, bazı durumlarda farklı sunuculara gönderilir ve kopyalar orada saklanır. Gönderilerinizi sildiğinizde, bu da takipçilerinize iletilir. Başka bir gönderiyi yeniden bloglama veya favorileme eylemi her zaman halka açıktır.
        • -
        • Doğrudan ve takipçilere özel gönderiler: Tüm gönderiler sunucuda saklanır ve işlenir. Takipçilere özel gönderiler, takipçilerinize ve içinde bahsedilen kullanıcılara, doğrudan gönderiler ise yalnızca içinde bahsedilen kullanıcılara iletilir. Bu, bazı durumlarda farklı sunuculara iletildiği ve kopyaların orada saklandığı anlamına gelir. Bu gönderilere erişimi yalnızca yetkili kişilerle sınırlamak için iyi niyetle çalışıyoruz, ancak diğer sunucular bunu yapamayabilir. Bu nedenle, takipçilerinizin ait olduğu sunucuları incelemek önemlidir. Ayarlarda yeni izleyicileri manuel olarak onaylama ve reddetme seçeneğini değiştirebilirsiniz. Sunucuyu ve alıcı sunucuyu işleten kişilerin bu mesajları görüntüleyebileceğini unutmayın, ve alıcılar ekran görüntüsü alabilir, kopyalayabilir veya başka bir şekilde yeniden paylaşabilir. Mastodon üzerinden herhangi bir tehlikeli bilgi paylaşmayın.
        • -
        • IP'ler ve diğer meta veriler: Oturum açarken, giriş yaptığınız IP adresini ve tarayıcı uygulamanızın adını kaydederiz. Giriş yapılan tüm oturumlar, incelemek ve iptal etmek için ayarlarda mevcuttur. En son kullanılan IP adresi 12 aya kadar saklanır. Sunucumuza gelen her isteğin IP adresini içeren sunucu loglarını da saklayabiliriz.
        • -
        - -
        - -

        Bilgilerinizi ne için kullanıyoruz?

        - -

        Sizden topladığımız bilgilerin herhangi bir kısmı aşağıdaki şekillerde kullanılabilir:

        - -
          -
        • Mastodon'un ana işlevselliğini sağlamak için. Yalnızca oturum açtığınızda diğer kişilerin içeriğiyle etkileşime girebilir ve kendi içeriğinizi gönderebilirsiniz. Örneğin, başkalarının kombine gönderilerini kendi kişiselleştirilmiş ana sayfanızdaki zaman çizelgenizde görüntülemek için onları takip edebilirsiniz.
        • -
        • Topluluğun denetlenmesine yardımcı olmak için, örneğin, yasaktan kaçınma veya diğer ihlalleri belirlemek için IP adresinizin diğer bilinen adreslerle karşılaştırılması.
        • -
        • Verdiğiniz e-posta adresi, size bilgi, içeriğinizle etkileşimde bulunan diğer kişilerle ilgili bildirimler veya mesaj göndermek, sorgulara ve/veya diğer istek ve sorulara cevap vermek için kullanılabilir.
        • -
        - -
        - -

        Bilgilerinizi nasıl koruyoruz?

        - -

        Kişisel bilgilerinizi girerken, gönderirken veya onlara erişirken kişisel bilgilerinizin güvenliğini sağlamak için çeşitli güvenlik önlemleri uyguluyoruz. Diğer şeylerin yanı sıra, tarayıcı oturumunuz ve uygulamalarınız ile API arasındaki trafik SSL ile güvence altına alınır ve şifreniz sağlam bir tek yönlü bir algoritma kullanılarak şifrelenir. Hesabınıza daha güvenli bir şekilde erişebilmek için iki adımlı kimlik doğrulamasını etkinleştirebilirsiniz.

        - -
        - -

        Veri saklama politikamız nedir?

        - -

        Şunları yapmak için iyi niyetli bir şekilde çalışacağız:

        - -
          -
        • Bu sunucuya yapılan tüm isteklerin IP adresini içeren sunucu loglarını, bu tür logların şimdiye kadar saklandığı gibi, 90 günden fazla saklamayacağız.
        • -
        • Kayıtlı kullanıcılarla ilişkili IP adreslerini en fazla 12 ay boyunca saklayacağız.
        • -
        - -

        Gönderileriniz, medya ekleriniz, profil fotoğrafınız ve başlık resminiz dahil, içeriğimizin arşivini talep edebilir ve indirebilirsiniz.

        - -

        Hesabınızı istediğiniz zaman geri alınamaz şekilde silebilirsiniz.

        - -
        - -

        Çerez kullanıyor muyuz?

        - -

        Evet. Çerezler, bir sitenin veya servis sağlayıcısının Web tarayıcınız üzerinden bilgisayarınızın sabit diskine aktardığı küçük dosyalardır (eğer izin verirseniz). Bu çerezler sitenin tarayıcınızı tanımasını ve kayıtlı bir hesabınız varsa, kayıtlı hesabınızla ilişkilendirmesini sağlar.

        - -

        Sonraki ziyaretlerde tercihlerinizi anlamak ve kaydetmek için çerezleri kullanıyoruz.

        - -
        - -

        Herhangi bir bilgiyi dış taraflara açıklıyor muyuz?

        - -

        Kişisel olarak tanımlanabilir bilgilerinizi dış taraflara satmıyor, takas etmiyor veya devretmiyoruz. Bu, taraflarımız bu bilgileri gizli tutmayı kabul ettiği sürece sitemizi işletmemize, işimizi yürütmemize veya size hizmet etmemize yardımcı olan güvenilir üçüncü tarafları içermemektedir. Ayrıca, yayınlanmanın yasalara uymayı, site politikalarımızı yürürlüğe koymayı ya da kendimizin ya da diğerlerinin haklarını, mülklerini ya da güvenliğini korumamızı sağladığına inandığımızda bilgilerinizi açıklayabiliriz.

        - -

        Herkese açık içeriğiniz ağdaki diğer sunucular tarafından indirilebilir. Bu takipçiler veya alıcılar bundan farklı bir sunucuda bulundukları sürece, herkese açık ve takipçilere özel gönderileriniz, takipçilerinizin bulunduğu sunuculara, ve doğrudan mesajlar, alıcıların sunucularına iletilir.

        - -

        Hesabınızı kullanması için bir uygulamayı yetkilendirdiğinizde, onayladığınız izinlerin kapsamına bağlı olarak, herkese açık profil bilgilerinize, takip ettiklerinizin listesine, takipçilerinize, listelerinize, tüm gönderilerinize ve favorilerinize erişebilir. Uygulamalar e-posta adresinize veya parolanıza asla erişemez.

        - -
        - -

        Sitenin çocuklar tarafından kullanımı

        - -

        Bu sunucu AB’de veya AEA’da ise: Site, ürün ve hizmetlerimizin tamamı en az 16 yaşında olan kişilere yöneliktir. Eğer 16 yaşın altındaysanız, GDPR yükümlülükleri gereği (General Data Protection Regulation) bu siteyi kullanmayın.

        - -

        Bu sunucu ABD’de ise: Site, ürün ve hizmetlerimizin tamamı en az 13 yaşında olan kişilere yöneliktir. Eğer 13 yaşın altındaysanız, COPPA yükümlülükleri gereği (Children's Online Privacy Protection Act) bu siteyi kullanmayın.

        - -

        Bu sunucu başka bir ülkede ise yasal gereklilikler farklı olabilir.

        - -
        - -

        Gizlilik Politikamızdaki Değişiklikler

        - -

        Gizlilik politikamızı değiştirmeye karar verirsek, bu değişiklikleri bu sayfada yayınlayacağız.

        - -

        Bu belge CC-BY-SA altında lisanslanmıştır. En son 7 Mart 2018 tarihinde güncellenmiştir.

        - -

        Discourse gizlilik politikasından uyarlanmıştır.

        title: "%{instance} Hizmet Şartları ve Gizlilik Politikası" themes: contrast: Mastodon (Yüksek karşıtlık) diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 1142fa140..dfe25ebb2 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -1543,7 +1543,6 @@ uk: tags: does_not_match_previous_name: не збігається з попереднім ім'ям terms: - body_html: "

        Політика конфіденційності

        \n

        Яку інформацію ми збираємо?

        \n\n
          \n
        • Основна інформація про обліковий запис: Якщо ви реєструєтесь на цьому сервері, вас можуть попросити ввести ім’я користувача, електронну адресу та пароль. Ви також можете ввести додаткову інформацію профілю, наприклад, ім'я для відображення та біографію, завантажити зображення профілю та зображення заголовка. Ім'я користувача, відображуване ім’я, біографія, зображення профілю та зображення заголовка завжди є загальнодоступними.
        • \n
        • Повідомлення, підписки та інша публічна інформація: Список людей, на яких ви підписані, є публічним, це ж стосується і списка ваших підписників. Коли ви надсилаєте повідомлення, дата та час зберігаються, а також програма, за допомогою якої ви надіслали повідомлення. Повідомлення можуть містити мультимедійні вкладення, такі як зображення та відео. Загальнодоступні публікації, навіть приховані зі стрічок, доступні для всіх. Коли ви розміщуєте публікацію у своєму профілі, це також загальнодоступна інформація. Ваші публікації доставляються вашим підписникам, у деяких випадках це означає, що вони доставляються на інші сервери і копії зберігаються там. Коли ви видаляєте публікації, ця інформація також доставляється вашим \nпідписникам. Перепости та вподобання завжди публічні.
        • \n
        • Прямі публікації та пости лише для підписників: Усі повідомлення зберігаються та обробляються на сервері. Публікації лише для підписників доставляються вашим підписникам та користувачам, які згадуються в них, а прямі повідомлення надсилаються лише тим користувачам, які в них згадуються. У \nдеяких випадках це означає, що вони доставляються на інші сервери і копії зберігаються там. Ми докладаємо сумлінних зусиль, щоб обмежити доступ до цих постів лише уповноваженим особам, але інші сервери можуть цього не зробити. Тому важливо переглянути сервери, до яких належать ваші підписники. Ви можете переключити параметр для схвалення та відхилення нових підписників вручну в налаштуваннях. Будь ласка, майте на увазі, що оператори нашого сервера та будь-якого приймаючого сервера, можуть переглядати такі повідомлення, і що одержувачі можуть робити скріншот, копіювати або повторно ділитися ними. Не діліться будь-якою небезпечною інформацією на Mastodon.
        • \n
        • IP-адреси та інші метадані: Коли ви входите в систему, ми записуємо IP-адресу, з якої ви входите, а також назву веб-переглядача. Усі сеанси, якими ви ввійшли в систему, доступні вам для перегляду та скасування в налаштуваннях. Остання використана IP-адреса зберігається до 12 місяців. Ми також можемо зберігати журнали серверів, які включають IP-адресу кожного запиту на наш сервер.
        • \n
        \n\n
        \n\n

        Для чого ми використовуємо вашу інформацію?

        \n\n

        Будь-яка інформація, яку ми збираємо від вас, може використовуватися такими способами:

        \n\n
          \n
        • Для забезпечення основної функціональності Mastodon. Ви можете взаємодіяти з вмістом інших людей та розміщувати власний вміст лише тоді, коли ви ввійшли в систему. Наприклад, ви можете підписатись на інших людей, щоб переглядати їх публікації об’єднаними на вашій власній персоналізованій локальній стрічці.
        • \n
        • Щоб сприяти модерації спільноти, наприклад, порівнюючи вашу IP-адресу з іншими відомими адресами для визначення ухилення від бану чи інших порушень.
        • \n
        • Електронна адреса, яку ви вводите, може використовуватися для надсилання вам інформації, сповіщень про інших людей, які взаємодіють з вашим вмістом або надсилають вам повідомлення, а також для відповіді на запити та/або інші запитання./li>\n
        \n\n
        \n\n

        Як ми захищаємо вашу інформацію?

        \n\n

        Ми застосовуємо різноманітні заходи безпеки для підтримки безпеки вашої особистої інформації під час введення, подання чи доступу до вашої особистої інформації. Крім усього іншого, сеанс вашого веб-переглядача, а також трафік між вашими програмами та API захищені SSL, а ваш пароль хеширується за допомогою сильного одностороннього алгоритму. Ви можете дозволити двофакторну автентифікацію для подальшого захисту доступу до свого облікового запису.

        \n\n
        \n\n

        Яка наша політика збереження даних?

        \n\n

        Ми докладемо зусиль для того, щоб:

        \n\n
          \n
        • Зберігати журнали сервера, що містять IP-адресу всіх запитів на цьому сервері, але більше 90 днів.
        • \n
        • Зберігати IP-адреси, пов’язані з зареєстрованими користувачами, не більше 12 місяців.
        • \n
        \n\n

        Ви можете запитати та завантажити архів свого вмісту, включаючи ваші публікації, медіа-додатки, зображення профілю та зображення заголовка.

        \n\n

        Ви можете в будь-який час безповоротно видалити свій обліковий запис.

        \n\n
        \n\n

        Чи використовуємо ми файли cookie?

        \n\n

        Так. Файли cookie — це невеликі файли, які сайт або його постачальник послуг передає на жорсткий диск вашого комп'ютера через веб-браузер (якщо ви це дозволите). Ці файли cookie дозволяють сайту розпізнавати ваш веб-переглядач і, якщо у вас зареєстрований обліковий запис, пов’язувати його зі своїм зареєстрованим обліковим записом.

        \n\n

        Ми використовуємо файли cookie, щоб зрозуміти і зберегти ваші налаштування для майбутніх відвідувань.

        \n\n
        \n\n

        Чи розкриваємо ми будь-яку інформацію іншим сторонам?

        \n\n

        Ми не продаємо, не торгуємо та іншим чином не передаємо назовні вашої особистої інформації. Це не стосується довірених третіх осіб, які допомагають нам керувати нашим сайтом, вести наш бізнес або обслуговувати вас, якщо ці сторони погоджуються зберігати цю інформацію конфіденційною. Ми також можемо оприлюднити вашу інформацію, коли вважаємо, що випуск доцільний для дотримання законодавства, \nзастосування політики нашого веб-сайта чи захисту наших або інших прав, власності чи безпеки.

        \n\n

        Ваш загальнодоступний вміст може завантажуватися іншими серверами в мережі. Ваші загальнодоступні публікації та публікації лише для підписників, доставляються на сервери, де \"проживають\" ваші підписники, а прямі повідомлення надходять на сервери одержувачів, якщо ці підписники або одержувачі проживають на іншому сервері, ніж цей./p>\n\n

        Коли ви дозволяєте додатку використовувати ваш обліковий запис, залежно від обсягу дозволів, які ви затверджуєте, він може отримати доступ до вашої інформації про загальнодоступний профіль, список ваших підписок, ваші підписники, ваші списки, всі ваші публікації та вибране. Програми ніколи не можуть отримати доступ до вашої електронної адреси чи пароля.

        \n\n
        \n\n

        Використання сайту дітьми

        \n\n

        Якщо цей сервер знаходиться в ЄС або ЄЕП: наш сайт, продукти та послуги спрямовані на людей, яким не менше 16 років. Якщо вам не виповнилося 16 років, відповідно до вимог GDPR (Загальне положення про захист даних) не використовуйте цей веб-сайт.

        \n\n

        Якщо цей сервер знаходиться в США: наш сайт, продукти та послуги спрямовані на людей, яким не менше 13 років. Якщо вам не виповнилося 13 років, відповідно до вимог COPPA (Закон про захист конфіденційності дітей в Інтернеті) не використовуйте цей сайт.

        \n\n

        Законодавчі вимоги можуть бути різними, якщо цей сервер знаходиться в іншій юрисдикції.

        \n\n
        \n\n

        Зміни в нашій Політиці конфіденційності

        \n\n

        Якщо ми вирішимо змінити нашу політику конфіденційності, ми опублікуємо ці зміни на цій сторінці.

        \n\n

        Цей документ є CC-BY-SA. Востаннє оновлено 7 березня 2018 року.

        \n\n

        Первісно адаптовано з політики конфіденційності дискурсу.

        \n" title: Умови використання та Політика приватності %{instance} themes: contrast: Висока контрасність diff --git a/config/locales/vi.yml b/config/locales/vi.yml index c724b0ebc..7f0022191 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -1498,52 +1498,51 @@ vi: terms: body_html: |

        Chính sách bảo mật

        -

        Chúng tôi thu thập những thông tin gì?

        - -
          -
        • Thông tin tài khoản cơ bản: Nếu bạn đăng ký trên máy chủ này, bạn phải cung cấp tên người dùng, địa chỉ email và mật khẩu. Bạn cũng có thể tùy chọn bổ sung tên hiển thị, tiểu sử, ảnh đại diện, ảnh bìa. Tên người dùng, tên hiển thị, tiểu sử, ảnh hồ sơ và ảnh bìa luôn được hiển thị công khai.
        • -
        • Tút, lượt theo dõi và nội dung công khai khác: Danh sách những người bạn theo dõi được liệt kê công khai, cũng tương tự như danh sách những người theo dõi bạn. Khi bạn đăng tút, ngày giờ và ứng dụng sử dụng được lưu trữ. Tút có thể chứa tệp đính kèm hình ảnh và video. Tút công khai và tút mở sẽ hiển thị công khai. Khi bạn đăng một tút trên trang hồ sơ của bạn, đó là nội dung công khai. Tút của bạn sẽ gửi đến những người theo dõi của bạn, đồng nghĩa với việc sẽ có các bản sao được lưu trữ ở máy chủ của họ. Khi bạn xóa bài viết, bản sao từ những người theo dõi của bạn cũng bị xóa theo. Hành động chia sẻ hoặc thích một tút luôn luôn là công khai.
        • -
        • Tin nhắn và tút dành cho người theo dõi: Toàn bộ tút được lưu trữ và xử lý trên máy chủ. Các tút dành cho người theo dõi được gửi đến những người theo dõi và những người được gắn thẻ trong tút. Còn các tin nhắn chỉ được gửi đến cho người nhận. Điều đó có nghĩa là chúng được gửi đến các máy chủ khác nhau và có các bản sao được lưu trữ ở đó. Chúng tôi đề nghị chỉ cho những người được ủy quyền truy cập vào đó, nhưng không phải máy chủ nào cũng làm như vậy. Do đó, điều quan trọng là phải xem xét kỹ máy chủ của người theo dõi của bạn. Bạn có thể thiết lập tự mình phê duyệt và từ chối người theo dõi mới trong cài đặt. Xin lưu ý rằng quản trị viên máy chủ của bạn và bất kỳ máy chủ của người nhận nào cũng có thể xem các tin nhắn. Người nhận tin nhắn có thể chụp màn hình, sao chép hoặc chia sẻ lại chúng. Không nên chia sẻ bất kỳ thông tin rủi ro nào trên Mastodon.
        • -
        • Địa chỉ IP và siêu dữ liệu khác: Khi bạn đăng nhập, chúng tôi ghi nhớ địa chỉ IP đăng nhập cũng như tên trình duyệt của bạn. Tất cả các phiên đăng nhập sẽ để bạn xem xét và hủy bỏ trong phần cài đặt. Địa chỉ IP sử dụng được lưu trữ tối đa 12 tháng. Chúng tôi cũng có thể giữ lại nhật ký máy chủ bao gồm địa chỉ IP của những lượt đăng ký tài khoản trên máy chủ của chúng tôi.
        • -

        -

        Chúng tôi sử dụng thông tin của bạn để làm gì?

        -

        Bất kỳ thông tin nào chúng tôi thu thập từ bạn là:

        -
          -
        • Để cung cấp các chức năng cốt lõi của Mastodon. Sau khi đăng nhập, bạn mới có thể tương tác với nội dung của người khác và đăng nội dung của riêng bạn. Ví dụ: bạn có thể theo dõi người khác để xem các tút của họ trong bảng tin của bạn.
        • -
        • Để hỗ trợ kiểm duyệt. Ví dụ so sánh địa chỉ IP của bạn với các địa chỉ đã biết khác để xác định hacker hoặc spammer.
        • -
        • Địa chỉ email bạn cung cấp chỉ được sử dụng để gửi các thông báo quan trọng, trả lời các câu hỏi cũng như yêu cầu khác từ chính bạn.
        • -
        -
        -

        Chúng tôi bảo vệ thông tin của bạn như thế nào?

        -

        Chúng tôi thực hiện nhiều biện pháp để duy trì sự an toàn khi bạn nhập, gửi hoặc truy cập thông tin cá nhân của bạn. Một vài trong số đó như là kiểm soát phiên đăng nhập của bạn, lưu lượng giữa các ứng dụng và API, bảo mật bằng SSL và băm nhỏ mật khẩu nhờ thuật toán một chiều mạnh mẽ. Bạn có thể kích hoạt xác thực hai yếu tố để tiếp tục truy cập an toàn vào tài khoản của mình.

        -
        -

        Chúng tôi lưu trữ dữ liệu như thế nào?

        -

        Chúng tôi tiến hành:

        -
          -
        • Giữ lại nhật ký máy chủ chứa địa chỉ IP của tất cả các yêu cầu đến máy chủ này, cho đến khi các nhật ký đó bị xóa đi trong vòng 90 ngày.
        • -
        • Giữ lại các địa chỉ IP được liên kết với người dùng đã đăng ký trong vòng 12 tháng.
        • -
        -

        Bạn có thể tải xuống một bản sao lưu trữ nội dung của bạn, bao gồm các tút, tập tin đính kèm, ảnh đại diện và ảnh bìa.

        -

        Bạn có thể xóa tài khoản của mình bất cứ lúc nào.

        -
        -

        Chúng tôi có sử dụng cookie không?

        -

        Có. Cookie là các tệp nhỏ mà một trang web hoặc nhà cung cấp dịch vụ internet chuyển vào ổ cứng máy tính của bạn thông qua trình duyệt Web (nếu bạn cho phép). Những cookie này cho phép trang web nhận ra trình duyệt của bạn và nếu bạn có tài khoản đã đăng ký, nó sẽ liên kết với tài khoản đã đăng ký của bạn.

        -

        Chúng tôi sử dụng cookie để hiểu và lưu các tùy chọn của bạn cho các lần truy cập trong tiếp theo.

        -
        -

        Chúng tôi có tiết lộ bất cứ thông tin nào ra ngoài không?

        -

        Chúng tôi không bán, trao đổi hoặc chuyển nhượng thông tin nhận dạng cá nhân của bạn cho bên thứ ba. Trừ khi bên thứ ba đó đang hỗ trợ chúng tôi điều hành Mastodon, tiến hành kinh doanh hoặc phục vụ bạn, miễn là các bên đó đồng ý giữ bí mật thông tin này. Chúng tôi cũng có thể tiết lộ thông tin của bạn nếu việc công bố là để tuân thủ luật pháp, thực thi quy tắc máy chủ của chúng tôi hoặc bảo vệ quyền, tài sản hợp pháp hoặc sự an toàn của chúng tôi hoặc bất kỳ ai.

        -

        Nội dung công khai của bạn có thể được tải xuống bởi các máy chủ khác trong mạng liên hợp. Các tút công khai hay dành cho người theo dõi được gửi đến các máy chủ nơi người theo dõi của bạn là thành viên và tin nhắn được gửi đến máy chủ của người nhận, cho đến khi những người theo dõi hoặc người nhận đó chuyển sang một máy chủ khác.

        -

        Nếu bạn cho phép một ứng dụng sử dụng tài khoản của mình, tùy thuộc vào phạm vi quyền bạn phê duyệt, ứng dụng có thể truy cập thông tin trang hồ sơ, danh sách người theo dõi, danh sách của bạn, tất cả tút và lượt thích của bạn. Các ứng dụng không bao giờ có thể truy cập địa chỉ e-mail hoặc mật khẩu của bạn.

        -
        -

        Cấm trẻ em sử dụng

        -

        Nếu máy chủ này ở EU hoặc EEA: Trang web của chúng tôi, các sản phẩm và dịch vụ đều dành cho những người trên 16 tuổi. Nếu bạn dưới 16 tuổi, xét theo GDPR (Quy định bảo vệ dữ liệu chung) thì không được sử dụng trang web này.

        -

        Nếu máy chủ này ở Hoa Kỳ: Trang web của chúng tôi, các sản phẩm và dịch vụ đều dành cho những người trên 13 tuổi. Nếu bạn dưới 13 tuổi, xét theo COPPA (Đạo luật bảo vệ quyền riêng tư trực tuyến của trẻ em) thì không được sử dụng trang web này.

        -

        Quy định pháp luật có thể khác biệt nếu máy chủ này ở khu vực địa lý khác.

        -
        -

        Cập nhật thay đổi

        -

        Nếu có thay đổi chính sách bảo mật, chúng tôi sẽ đăng những thay đổi đó ở mục này.

        -

        Tài liệu này phát hành dưới hình thức CC-BY-SA và được cập nhật lần cuối vào ngày 7 tháng 3 năm 2018.

        -

        Chỉnh sửa và hoàn thiện từ Discourse.

        +

        Chúng tôi thu thập những thông tin gì?

        +
          +
        • Thông tin tài khoản cơ bản: Nếu bạn đăng ký trên máy chủ này, bạn phải cung cấp tên người dùng, địa chỉ email và mật khẩu. Bạn cũng có thể tùy chọn bổ sung tên hiển thị, tiểu sử, ảnh đại diện, ảnh bìa. Tên người dùng, tên hiển thị, tiểu sử, ảnh hồ sơ và ảnh bìa luôn được hiển thị công khai.
        • +
        • Tút, lượt theo dõi và nội dung công khai khác: Danh sách những người bạn theo dõi được liệt kê công khai, cũng tương tự như danh sách những người theo dõi bạn. Khi bạn đăng tút, ngày giờ và ứng dụng sử dụng được lưu trữ. Tút có thể chứa tệp đính kèm hình ảnh và video. Tút công khai và tút mở sẽ hiển thị công khai. Khi bạn đăng một tút trên trang hồ sơ của bạn, đó là nội dung công khai. Tút của bạn sẽ gửi đến những người theo dõi của bạn, đồng nghĩa với việc sẽ có các bản sao được lưu trữ ở máy chủ của họ. Khi bạn xóa bài viết, bản sao từ những người theo dõi của bạn cũng bị xóa theo. Hành động chia sẻ hoặc thích một tút luôn luôn là công khai.
        • +
        • Tin nhắn và tút dành cho người theo dõi: Toàn bộ tút được lưu trữ và xử lý trên máy chủ. Các tút dành cho người theo dõi được gửi đến những người theo dõi và những người được gắn thẻ trong tút. Còn các tin nhắn chỉ được gửi đến cho người nhận. Điều đó có nghĩa là chúng được gửi đến các máy chủ khác nhau và có các bản sao được lưu trữ ở đó. Chúng tôi đề nghị chỉ cho những người được ủy quyền truy cập vào đó, nhưng không phải máy chủ nào cũng làm như vậy. Do đó, điều quan trọng là phải xem xét kỹ máy chủ của người theo dõi của bạn. Bạn có thể thiết lập tự mình phê duyệt và từ chối người theo dõi mới trong cài đặt. Xin lưu ý rằng quản trị viên máy chủ của bạn và bất kỳ máy chủ của người nhận nào cũng có thể xem các tin nhắn. Người nhận tin nhắn có thể chụp màn hình, sao chép hoặc chia sẻ lại chúng. Không nên chia sẻ bất kỳ thông tin rủi ro nào trên Mastodon.
        • +
        • Địa chỉ IP và siêu dữ liệu khác: Khi bạn đăng nhập, chúng tôi ghi nhớ địa chỉ IP đăng nhập cũng như tên trình duyệt của bạn. Tất cả các phiên đăng nhập sẽ để bạn xem xét và hủy bỏ trong phần cài đặt. Địa chỉ IP sử dụng được lưu trữ tối đa 12 tháng. Chúng tôi cũng có thể giữ lại nhật ký máy chủ bao gồm địa chỉ IP của những lượt đăng ký tài khoản trên máy chủ của chúng tôi.
        • +

        +

        Chúng tôi sử dụng thông tin của bạn để làm gì?

        +

        Bất kỳ thông tin nào chúng tôi thu thập từ bạn là:

        +
          +
        • Để cung cấp các chức năng cốt lõi của Mastodon. Sau khi đăng nhập, bạn mới có thể tương tác với nội dung của người khác và đăng nội dung của riêng bạn. Ví dụ: bạn có thể theo dõi người khác để xem các tút của họ trong bảng tin của bạn.
        • +
        • Để hỗ trợ kiểm duyệt. Ví dụ so sánh địa chỉ IP của bạn với các địa chỉ đã biết khác để xác định hacker hoặc spammer.
        • +
        • Địa chỉ email bạn cung cấp chỉ được sử dụng để gửi các thông báo quan trọng, trả lời các câu hỏi cũng như yêu cầu khác từ chính bạn.
        • +
        +
        +

        Chúng tôi bảo vệ thông tin của bạn như thế nào?

        +

        Chúng tôi thực hiện nhiều biện pháp để duy trì sự an toàn khi bạn nhập, gửi hoặc truy cập thông tin cá nhân của bạn. Một vài trong số đó như là kiểm soát phiên đăng nhập của bạn, lưu lượng giữa các ứng dụng và API, bảo mật bằng SSL và băm nhỏ mật khẩu nhờ thuật toán một chiều mạnh mẽ. Bạn có thể kích hoạt xác thực hai yếu tố để tiếp tục truy cập an toàn vào tài khoản của mình.

        +
        +

        Chúng tôi lưu trữ dữ liệu như thế nào?

        +

        Chúng tôi tiến hành:

        +
          +
        • Giữ lại nhật ký máy chủ chứa địa chỉ IP của tất cả các yêu cầu đến máy chủ này, cho đến khi các nhật ký đó bị xóa đi trong vòng 90 ngày.
        • +
        • Giữ lại các địa chỉ IP được liên kết với người dùng đã đăng ký trong vòng 12 tháng.
        • +
        +

        Bạn có thể tải xuống một bản sao lưu trữ nội dung của bạn, bao gồm các tút, tập tin đính kèm, ảnh đại diện và ảnh bìa.

        +

        Bạn có thể xóa tài khoản của mình bất cứ lúc nào.

        +
        +

        Chúng tôi có sử dụng cookie không?

        +

        Có. Cookie là các tệp nhỏ mà một trang web hoặc nhà cung cấp dịch vụ internet chuyển vào ổ cứng máy tính của bạn thông qua trình duyệt Web (nếu bạn cho phép). Những cookie này cho phép trang web nhận ra trình duyệt của bạn và nếu bạn có tài khoản đã đăng ký, nó sẽ liên kết với tài khoản đã đăng ký của bạn.

        +

        Chúng tôi sử dụng cookie để hiểu và lưu các tùy chọn của bạn cho các lần truy cập trong tiếp theo.

        +
        +

        Chúng tôi có tiết lộ bất cứ thông tin nào ra ngoài không?

        +

        Chúng tôi không bán, trao đổi hoặc chuyển nhượng thông tin nhận dạng cá nhân của bạn cho bên thứ ba. Trừ khi bên thứ ba đó đang hỗ trợ chúng tôi điều hành Mastodon, tiến hành kinh doanh hoặc phục vụ bạn, miễn là các bên đó đồng ý giữ bí mật thông tin này. Chúng tôi cũng có thể tiết lộ thông tin của bạn nếu việc công bố là để tuân thủ luật pháp, thực thi quy tắc máy chủ của chúng tôi hoặc bảo vệ quyền, tài sản hợp pháp hoặc sự an toàn của chúng tôi hoặc bất kỳ ai.

        +

        Nội dung công khai của bạn có thể được tải xuống bởi các máy chủ khác trong mạng liên hợp. Các tút công khai hay dành cho người theo dõi được gửi đến các máy chủ nơi người theo dõi của bạn là thành viên và tin nhắn được gửi đến máy chủ của người nhận, cho đến khi những người theo dõi hoặc người nhận đó chuyển sang một máy chủ khác.

        +

        Nếu bạn cho phép một ứng dụng sử dụng tài khoản của mình, tùy thuộc vào phạm vi quyền bạn phê duyệt, ứng dụng có thể truy cập thông tin trang hồ sơ, danh sách người theo dõi, danh sách của bạn, tất cả tút và lượt thích của bạn. Các ứng dụng không bao giờ có thể truy cập địa chỉ e-mail hoặc mật khẩu của bạn.

        +
        +

        Cấm trẻ em sử dụng

        +

        Nếu máy chủ này ở EU hoặc EEA: Trang web của chúng tôi, các sản phẩm và dịch vụ đều dành cho những người trên 16 tuổi. Nếu bạn dưới 16 tuổi, xét theo Quy định bảo vệ dữ liệu chung (GDPR) thì không được sử dụng trang web này.

        +

        Nếu máy chủ này ở Hoa Kỳ: Trang web của chúng tôi, các sản phẩm và dịch vụ đều dành cho những người trên 13 tuổi. Nếu bạn dưới 13 tuổi, xét theo Đạo luật bảo vệ quyền riêng tư trực tuyến của trẻ em (COPPA) thì không được sử dụng trang web này.

        +

        Quy định pháp luật có thể khác nếu máy chủ này ở khu vực địa lý khác.

        +
        +

        Cập nhật thay đổi

        +

        Nếu có thay đổi chính sách bảo mật, chúng tôi sẽ đăng những thay đổi đó ở mục này.

        +

        Tài liệu này phát hành dưới giấy phép CC-BY-SA và được cập nhật lần cuối vào ngày 26 tháng 5 năm 2022.

        +

        Chỉnh sửa và hoàn thiện từ Discourse.

        title: Quy tắc của %{instance} themes: contrast: Mastodon (Độ tương phản cao) diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 425d1d186..783733a0a 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -1503,80 +1503,80 @@ zh-CN:

        我们收集什么信息?

          -
        • 基本帐户信息:如果你在此服务器上注册,可能会要求你输入用户名,电子邮件地址和密码。 你还可以输入其他个人资料信息,例如显示名称和传记,并上传个人资料照片和标题图像。 用户名,显示名称,传记,个人资料图片和标题图片始终公开列出。
        • -
        • 帖子,关注和其他公共信息: 你关注的人员列表会公开列出,你的粉丝也是如此。 提交邮件时,会存储日期和时间以及你提交邮件的应用程序。 消息可能包含媒体附件,例如图片和视频。 公开和非上市帖子可公开获取。 当你在个人资料中添加帖子时,这也是公开信息。 你的帖子会发送给你的关注者,在某些情况下,这意味着他们会将其发送到不同的服务器,并将副本存储在那里。 当你删除帖子时,同样会将其发送给你的关注者。 重新记录或赞成其他职位的行为始终是公开的。
        • -
        • 直接和关注者的帖子: 所有帖子都在服务器上存储和处理。 仅限关注者的帖子会发送给你的关注者和用户,并且直接帖子仅会发送给他们中提到的用户。 在某些情况下,这意味着它们被传送到不同的服务器并且副本存储在那里。 我们善意努力限制只有授权人员访问这些帖子,但其他服务器可能无法这样做。 因此,查看你的关注者所属的服务器非常重要。 你可以在设置中切换选项以手动批准和拒绝新关注者。 请记住,服务器和任何接收服务器的操作员可能会查看此类消息, 并且收件人可以截图,复制或以其他方式重新共享它们。 不要在 Mastodon 上分享任何危险信息。
        • -
        • IP和其他元数据: 登录时,我们会记录你登录的IP地址以及浏览器应用程序的名称。 所有登录的会话都可供你在设置中查看和撤销。 使用的最新IP地址最长可存储12个月。 我们还可以保留服务器日志,其中包括我们服务器的每个请求的IP地址。
        • +
        • 基本账号信息:要注册到此服务器,你可能被要求输入用户名、邮箱地址、以及一组密码。你也可输入其他个人资料信息如昵称和自我描述,上传个人资料图片和顶部图像。账号、昵称、自我描述、个人资料图片和顶部图像始终公开显示。
        • +
        • 嘟文、正在关注以及其他公开信息:你的正在关注列表和粉丝列表均为公开显示。当您发送私信时、时间戳和发送来源应用程序将会被储存。私信中可能包含媒体附件,如图片和视频。公开和未公开嘟文可被公开存取。当你在个人资料页面展示特色嘟文时,其也将公开可用。你的嘟文將被投送至你的粉丝——某些情況下这意味着它们将被投送至其他不同的服务器,并于该处存储。当你删除嘟文时,删除信息也将被发送至你的粉丝。将其他嘟文转嘟或加入最爱动作为公开信息。
        • +
        • 私信以及仅限粉丝的嘟文:所有的嘟文都存储和处理于服务器上。仅限粉丝的嘟文将被发送至您的粉丝以及被提及的帐号,私信嘟文将仅被发送至被提及的帐号。某些情况下这代表它们将被投送至其他不同的服务器,并于该处存储。 我们致力于限制这些嘟文仅能被获得授权的使用者存取,但在其他某些服务器可能无法生效。因此,请检查您粉丝所在的服务器。您可以于设置中切换手动允许或拒绝粉丝的开关。请注意,服务器的运营者以及任何接收嘟文的服务器都有可能查看信息,此外,接收方也可能截图、复制嘟文、或以其他方式再次分享。请不要于 Mastodon 分享任何敏感信息。
        • +
        • IP 地址以及其他描述资料:当您登录时,我们会记录您登录来源的 IP 地址,以及用以登录的应用程序。所有已登录的会话都可以在设置中查看和撤销。最近的 IP 地址将被保存至多 12 个月。我们也可能保留服务器记录档,其中包含对我们服务器的所有请求的来源 IP 地址。

        -

        我们将你的信息用于什么?

        +

        我们将您的信息用于什么?

        -

        我们向你收集的任何信息均可通过以下方式使用:

        +

        我们从您那里收集的信息均可能用于以下用途:

          -
        • 提供Mastodon的核心功能。 你只能在登录时与其他人的内容进行互动并发布你自己的内容。例如,你可以关注其他人在你自己的个性化家庭时间轴中查看他们的组合帖子。
        • -
        • 为了帮助社区适度,例如将你的IP地址与其他已知的IP地址进行比较,以确定禁止逃税或其他违规行为。
        • -
        • 你提供的电子邮件地址可能用于向你发送信息,有关其他人与你的内容交互或向你发送消息的通知,以及回复查询和/或其他请求或问题。
        • +
        • 提供 Mastodon 核心功能。您仅能于登录时与其他人的内容互动和发送自己的嘟文。譬如,您可以通过关注其他人来查看您自己个人的首页时间轴上他们的嘟文。
        • +
        • 协助管理社群,例如将您的 IP 地址与其他已知地址进行比较,以决定是否违反服务器规则。
        • +
        • 您提供的 邮箱 地址将用于向您发送信息、关于其他人与您内容互动或私信的通知、回复询问,且/或其他请求和问题。

        -

        我们如何保护你的信息?

        +

        我们如何保护您的信息?

        -

        当你输入,提交或访问你的个人信息时,我们会实施各种安全措施以维护你的个人信息的安全。 除此之外,你的浏览器会话以及应用程序和API之间的流量都使用SSL进行保护,你的密码使用强大的单向算法进行哈希处理。 你可以启用双因素身份验证,以进一步保护对你帐户的访问。

        +

        当您输入、提交或访问您的个人信息时,我们会实施各种安全措施来维护您个人信息的安全。除此之外,您的浏览器会话与您应用程序及 API 间的流量都以 SSL 保护,您的密码也使用了一种强力的单向算法来散列(哈希化)。您可以启用两步验证来进一步提高您帐号的安全程度。


        -

        我们的数据保留政策是什么?

        +

        我们的数据保留政策如何?

        -

        我们真诚的努力:

        +

        我们将致力于:

          -
        • 保留包含此服务器的所有请求的IP地址的服务器日志,只要保留此类日志,不超过90天。
        • -
        • 保留与注册用户关联的IP地址不超过12个月。
        • +
        • 保留包含所有对此服务器请求的 IP 位置的服务器记录档,只要此类记录档不保留超过 90 天。
        • +
        • 保留与注册使用者相关的 IP 位置不超过 12 个月。
        -

        你可以请求并下载我们内容的存档,包括你的帖子,媒体附件,个人资料图片和标题图片。

        +

        您可以请求并下载您内容的存档,包含了您的嘟文、媒体附件、个人资料图片和顶部图像。

        -

        你可以随时不可逆转地删除你的帐户。

        +

        您随时都能永久不可逆地删除您的帐号。


        -

        我们使用 cookies 吗?

        +

        我们是否使用 cookies ?

        -

        是。 Cookie是网站或其服务提供商通过Web浏览器传输到计算机硬盘的小文件(如果允许)。 这些cookie使网站能够识别你的浏览器,如果你有注册帐户,则将其与你的注册帐户相关联。

        +

        是的。Cookies 是网站或其服务提供商通过您的网络浏览器(若您允许)传送到您电脑硬盘的小型文件。这些 cookies 让网站可以识别您的浏览器,且如果您有注册帐号,其将会关联到您已注册的帐号。

        -

        我们使用Cookie来了解并保存你对未来访问的偏好。

        +

        我们使用 cookies 来了解并存储您的偏好设置以供未来访问。


        -

        我们是否透露任何信息给其他方?

        +

        我们会向外界泄露任何信息吗?

        -

        我们不会将你的个人身份信息出售,交易或以其他方式转让给外方。 这不包括协助我们操作我们的网站,开展业务或为你服务的受信任的第三方,只要这些方同意保密这些信息。 当我们认为发布适合遵守法律,执行我们的网站政策或保护我们或他人的权利,财产或安全时,我们也可能会发布你的信息。

        +

        我们不会出售、交易或是以其他方式向外界传输您的个人身份信息。这不包含协助我们营运网站、开展业务或是服务您的可信任的第三方,只要这些第三方同意对这些信息保密。当我们认为发布您的信息是为了遵守法律、执行我们网站的政策、或是保护我们或其他人的权利、财产或安全时,我们也可能会发布您的信息。

        -

        你的公共内容可能会被网络中的其他服务器下载。 你的公开帖子和关注者帖子会发送到关注者所在的服务器,并且直接邮件会传递到收件人的服务器,只要这些关注者或收件人位于与此不同的服务器上。

        +

        您的公开内容可能被网络中其他服务器下载。您的公开与仅粉丝嘟文将会投送到您的粉丝所在的服务器,直接私信则会投送到接收者所在的服务器,前提是这些粉丝或接收者在不同的服务器上。

        -

        当你授权应用程序使用你的帐户时,根据你批准的权限范围,它可能会访问你的公开个人资料信息,以下列表,你的关注者,你的列表,所有帖子和你的收藏夹。 应用程序永远不能访问你的电子邮件地址或密码。

        +

        当您授权应用程序使用您的帐号时,根据您所批准的授权范围,其可能会访问您的公开个人档案信息、您的关注列表、您的粉丝、您的列表、您所有的嘟文以及您的收藏。应用程序永远无法访问您的电子邮件地址或密码。


        儿童使用网站

        -

        如果此服务器位于欧盟或欧洲经济区:我们的网站,产品和服务都是针对至少16岁的人。 如果你未满16岁,则符合GDPR的要求(General Data Protection Regulation) 不要使用这个网站。

        +

        如果服务器位于欧盟或欧洲经济区中:我们的网站、产品与服务均供至少 16 岁的人使用。如果您小于 16 岁,根据 GDPR (一般资料保护规范) 的要求,请勿使用此网站。

        -

        如果此服务器位于美国:我们的网站,产品和服务均面向至少13岁的人。 如果你未满13岁,则符合COPPA的要求 (Children's Online Privacy Protection Act) 不要使用这个网站。

        +

        若此服务器位于美国:我们的网站、产品与服务均供至少 13 岁的人使用。如果您小于 13 岁,根据 COPPA (儿童网络隐私保护法) 的要求,请勿使用此网站。

        -

        如果此服务器位于另一个辖区,则法律要求可能不同。

        +

        如果此服务器位于其他司法管辖区,则法律要求可能会有所不同。


        -

        我们隐私政策的变更

        +

        隐私权政策变更

        -

        如果我们决定更改我们的隐私政策,我们会在此页面上发布这些更改。

        +

        若我们决定变更我们的隐私权政策,我们将会在当前页面贴出那些变更。

        -

        本文件为CC-BY-SA。 它最后更新于2018年3月7日。

        +

        此文件以 CC-BY-SA 授权。最后更新时间为 2022 年 5 月 26 日。

        最初改编自 Discourse 隐私政策.

        title: "%{instance} 使用条款和隐私权政策" diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index 6437a57e1..bbf5b4dad 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -1222,87 +1222,6 @@ zh-HK: tags: does_not_match_previous_name: 和舊有名稱並不符合 terms: - body_html: | -

        隱私權政策

        -

        我們蒐集甚麼資訊?

        - -
          -
        • 基本帳戶資訊:如果您在此服務器上註冊,我們可能會要求您輸入用戶名、電子郵件地址和密碼。 您還可以輸入其他個人資料信息(例如顯示名稱和自我簡介),並上傳個人資料圖片和標題圖片。 用戶名、顯示名稱、自我簡介、個人資料圖片和標題圖片會持續公開。
        • -
        • 帖文,關注和其他公共信息:您的關注和追隨者名單為公開資訊。 在發佈帖文時,我們將會存儲日期和時間,以及您用以發佈帖文的應用程序。 帖文可能包含多媒體附件,例如圖片和視頻。 公開和非公開(unlisted)的帖文為公開資訊。 您在個人資料上推薦的帖文時也是公開的資訊。 您的追隨者會收到你的帖文,在某些情況下,它們有可能會在不同的服務器互相傳遞並將儲存副本。 您刪除帖文時亦同樣會傳遞給您的追隨者。 轉發或收藏其他帖文的操作始終是公開的。
        • -
        • 私訊和追隨者限定的帖文:所有的帖子都在服務器上被儲存和處理。 追隨者限定的帖文將傳遞給您的追隨者和其中提及的用家,而私訊僅會傳遞給其中提及的用戶。 在某些情況下,它們有可能會在不同的服務器互相傳遞並將儲存副本。 我們將努力地將訪問權限制為僅授權人員,但其他服務器可能無法這樣做。 因此,請檢查您的追隨者所屬的服務器。 您可以在設置中選擇手動批准和拒絕新追隨者。請記住,服務器和任何接收服務器的操作員都可以查看此類消息,並且收件人可以截屏,複製或以其他方式重新分享。 請勿在Mastodon上分享任何危險信息。
        • -
        • IP和其他元數據:登錄時,我們會記錄您登錄時使用的IP位址以及瀏覽器應用程序的名稱。 您可以在設置中查看和撤消所有已登錄的作業階段。 最新上傳的IP位址最多可以儲存12個月。 我們還可能保留服務器日誌,其中包括對我們服務器的每個請求的IP地位。
        • -
        - -
        - -

        您的資訊將會被用在甚麼用途?

        - -

        我們從您那裡收集的任何資訊都可能通過以下方式使用:

        - -
          -
        • 提供Mastodon的核心功能:您只可以在登錄後與其他人的內容交流並發佈自己的內容。例如,您可以追隨其他人以在自己的個人化主頁中查看他們的帖文。
        • -
        • 社區管理:例如將您的IP位址與其他已知的IP位址進行比較來鑑定逃避封鎖或其他侵權行為。
        • -
        • 您的電郵地址:可能會被用於向您發送信息,有關其他人與您互動或向您發送消息的通知,並用於答複查詢和/或其他請求或問題。
        • -
        - -
        - -

        我們如何保護您的資訊?

        - -

        當您輸入,提交或訪問您的個人信息時,我們會採取各種安全措施來維護您的個人信息的安全。 除其他事項外,您的瀏覽器作業階段以及應用程序和API之間的流量均使用SSL進行保護。您的密碼也會以強大的單向算法進行散列處理。 您亦可以啟用多重驗證,以進一步安全地訪問您的帳戶。

        - -
        - -

        我們的數據保留政策

        - -

        我們會致力:

        - -
          -
        • 保留包含對該服務器所有請求的IP位址的服務器日誌,而保留時間將不會超過90天。
        • -
        • 保留與註冊用戶關聯的IP位址不超過12個月。
        • -
        - -

        您可以請求並下載您的內容備份,包括您的帖文,媒體附件,個人資料圖片和標題圖片。

        - -

        您亦可以隨時不可逆地刪除您的帳戶。

        - -
        - -

        我們使用cookies嗎?

        - -

        是。 Cookies是站點或其服務提供商通過Web瀏覽器(如果允許)傳輸到計算機硬盤的小文件。 這些cookies使站點能夠識別您的瀏覽器,並且如果您已經擁有註冊帳戶,會連結至您的註冊帳戶。

        - -

        我們使用Cookie來了解並保存您的偏好,以供將來訪問。

        - -
        - -

        我們會否透露任何信息給第三方機構?

        - -

        我們不會將您的個人身份信息出售,交易或以其他方式轉讓給第三方。 這不包括同意對這些信息保密的運營方,和我們開展業務或為您提供服務的受信任的第三方。我們或會在基於對法律的尊重,或在執行我們的網站政策或保護我們或其他人的權利、財產或安全時釋出你的個人資料。

        - -

        您的公開內容可能會被網絡中的其他服務器下載。 只要這些追隨者或收件人位於與之不同的服務器上,您的公開帖文和追隨者限定帖文將傳遞到您的追隨者所在的服務器,而私信將傳遞給收件人的服務器。

        - -

        當您授權應用程序使用您的帳戶時,根據您批准的權限範圍,它可能會訪問您的公開資訊,您的關注列表,您的關注者,您的列表,所有帖文以及您的收藏夾。 應用程序永遠無法取得您的電子郵件地址或密碼。

        - -
        - -

        兒童在網站的應用

        - -

        如果此服務器位於歐盟或EEA中:我們的網站,產品和服務只為16歲或以上的人提供服務。 如果您未滿16歲,請按照GDPR的要求 (歐盟一般資料保護規範)不使用此網站。

        - -

        如果此服務器位於美國:我們的網站,產品和服務只為13歲或以上的人提供服務。 如果您未滿13歲,請按照COPPA的要求 (兒童在線隱私權保護法)不使用此網站。

        - -

        在其他管轄區內,法律要求可能會有所不同。

        - -
        - -

        隱私權政策更改

        - -

        請根據英文版本所準,此中文版本只為英文版隱私政策的翻譯版本

        - -

        此文件以 CC-BY-SA 授權。英文版本的發佈日期為2018年3月7日。此中文翻譯的翻譯日期為2020年11月28日。

        - -

        最初改編自 Discourse的隱私權政策.

        title: "%{instance} 使用條款和隱私權政策" themes: contrast: 高對比 diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 0a6d6f9e7..95561abb7 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -1500,24 +1500,25 @@ zh-TW: terms: body_html: |

        隱私權政策

        -

        我們會蒐集哪些資訊?

        +

        我們蒐集什麼資訊?

          -
        • 基本帳號資訊:若您在此伺服氣上註冊,您可能會被要求輸入使用者名稱、電子郵件地址與密碼。您也可能會輸入額外的個人檔案資訊,如顯示名稱或簡介等,以及上傳個人資料圖片與封面圖片。使用者名稱、顯示名稱、簡介、個人檔案名稱與封面圖片一律都會公開陳列。
        • -
        • 貼文、追蹤與其他資訊:您追蹤的人的清單會是公開陳列的,您的追蹤者同樣如此。當您地交了一條訊息,日期與時間,以及您從哪個應用程式遞交訊息也同樣會被儲存。訊息可能會包含多媒體附件,如圖片或影片。公開或未列出的貼文都可公開使用。當您在您的個人資料上特別突顯了某篇貼文,那麼這也會是公開資訊。您的貼文會被遞送給您的追蹤者,在某些情況下,這代表了它們會被遞送到其他伺服器,並儲存在那邊。當您刪除貼文時,同樣會遞送給您的追蹤者。轉發或收藏其他貼文的動作也同樣是公開的。
        • -
        • 直接與僅限追蹤者的貼文:所有貼文都由伺服器儲存並處理。僅限追蹤者的貼文會被遞送給您的追蹤者,以及其中所提及的使用者,而直接貼文則僅會遞送給其中提到的使用者。在某些情況下,這代表了它們會被遞送到其他伺服器,並儲存在那邊。我們非常努力地讓這些貼文的存取僅供被授權的人使用,但其他伺服器可能沒有這樣做。因此審閱您的追蹤者屬於的伺服器也很重要。您可以在設定中切換批准與回絕新追蹤者的選項。請注意,伺服器的營運者與任何接收的伺服器都可以檢視這輛的訊息,且接收者可能會螢幕截圖、複製或以其他方式轉分享這類訊息。所以請不要透過 Mastodon 分享任何危險的資訊。
        • -
        • IP 與詮釋資料:當您登入時,我們會紀錄從登入的 IP 位置,以及您瀏覽器應用程式的名稱。您可以在設定中審閱並撤銷所有已登入的工作階段。最新使用的 IP 位置會儲存長達 12 個月。我們也可能會保留伺服器紀錄檔,其中包含了每個請求存取我們的伺服器的 IP 位置。
        +
      • 基本帳號資訊:若您於此伺服器註冊,您可能被要求輸入使用者帳號、e-mail 地址、以及一組密碼。您也可能輸入額外個人資料資訊例如顯示名稱及自我描述,並且上傳大頭貼照片和橫幅圖片。使用者帳號、顯示名稱、自我描述、大頭貼照片和橫幅圖片將永遠為公開顯示。
      • +
      • 嘟文、跟隨中以及其他公開資訊:您跟隨中的使用者列表以及跟隨您的使用者列表是公開的。當您發送一則訊息,資料、時間戳、以及您用以發送訊息的應用程式將會被儲存。訊息中可能夾帶多媒體附件,例如圖片或影音。公開和非公共時間軸顯示之嘟文將可被公開存取。當您於個人資料頁面展示特色嘟文時,其將也成為公開可取得之資訊。您的嘟文將被發送至您的跟隨者、某些情況下這代表它們將被撒送至其他不同的伺服器,並儲存於該處。當您刪除嘟文時,刪除訊息也將被發送至您的跟隨者。將其他嘟文轉嘟或加入最愛之動作為公開資訊。
      • +
      • 私訊以及僅限跟隨者之嘟文:所有的嘟文儲存及處理於伺服器上。僅限跟隨者之嘟文將被發送至您的跟隨者以及被提及之帳號,私訊嘟文將僅被發送至被提及之帳號。某些情況下這代表它們將被撒送至其他不同的伺服器,並儲存於該處。 我們致力於限制這些嘟文僅被獲得授權之使用者存取,然而其他某些伺服器可能無法做到。因此,檢查您跟隨者所在之伺服器。您可以於設定中切換手動核准或拒絕跟隨者的開關。請注意,伺服器之營運者以及任何接收嘟文之伺服器皆有可能檢視訊息,此外,接收方也可能截圖、複製嘟文、或以其他方式重新分享。請不要於 Mastodon 分享任何敏感資訊。
      • +
      • IP 地址以及其他描述資料:當您登入時,我們紀錄您登入來源之 IP 地址,以及您所用以登入之應用程式名稱。所有以登入之工作階段皆可供您於設定中檢視及撤銷。最近的 IP 地址將被保存至多 12 個月。我們也可能保留伺服器紀錄檔,其中包含對於我們伺服器之所有請求的來源 IP 地址。
      • +

      -

      我們會將您的資訊用於何種目的?

      +

      我們將您的資訊用以何種目的?

      我們從您那裡蒐集而來的資訊都可能作為以下用途:

        -
      • 提供 Mastodon 的核心功能。您只能在登入後與其他人的內容互動,並張貼您自己的內容。舉例來說,您可能會追蹤其他人,以在您個人化的家時間軸中檢視各種貼文的結合。
      • -
      • 協助社群管理,例如比較您的 IP 位置與其他已知的 IP 位置進行比較,以確定是否有逃避禁令或其他違規行為。
      • -
      • 您提供的電子郵件地址可能會用於傳送關於其他人與您的內容互動的資訊、通知或是訊息給您,以及回覆查詢,及/或其他請求或問題。
      • +
      • 提供 Mastodon 核心功能。您僅能於登入時與其他人的內容互動及發送自己的嘟文。舉例來說,您可以透過跟隨其他人以檢視您自己個人化的首頁時間軸上他們的嘟文。
      • +
      • 協助管理社群,例如將您之 IP 地址與其他已知地址進行比較用以決定是否違反伺服器規則。
      • +
      • 您提供之 email 地址將用以寄送您資訊、其他人與您內容互動相關之通知、或您自己的訊息,並且回覆詢問,且/或其他請求或問題。

      @@ -1530,20 +1531,21 @@ zh-TW:

      我們的資料保留政策是什麼?

      -

      我們將努力:

      +

      我們將致力於:

      • 保留包含所有對此伺服器請求的 IP 位置的伺服器紀錄檔,只要此類紀錄檔不保留超過 90 天。
      • 保留與註冊使用者相關的 IP 位置不超過 12 個月。
      -

      您可以請求並下載您內容的封存檔案,包含了您的貼文、多媒體附件、個人檔案圖片與封面圖片。

      +

      您可以請求並下載您內容的封存檔案,包含了您的貼文、多媒體附件、大頭貼與封面圖片。

      -

      您隨時都可以不可逆地刪除您的帳號。

      +

      您隨時都能不可逆地刪除您的帳號。


      我們會使用 cookies 嗎?

      +

      是的。Cookies 是網站或其服務提供者透過您的網路瀏覽器(若您允許)傳送到您電腦硬碟的小檔案。這些 cookies 讓網站可以識別您的瀏覽器,以及如果您有註冊帳號的話,同時關聯到您已註冊的帳號。

      我們使用 cookies 來了解並儲存您的偏好設定以供未來存取。

      @@ -1558,25 +1560,28 @@ zh-TW:

      當您授權應用程式使用您的帳號時,根據您所批准的授權範圍,其可能會存取您的公開個人檔案資訊、您的追蹤清單、您的追蹤者、您的清單、您所有的貼文以及您的收藏。應用程式永遠無法存取您的電子郵件地址或密碼。

      +

      兒童使用網站

      如果伺服器位於歐盟或歐洲經濟區中:我們的網站、產品與服務均供至少 16 歲的人使用。如果您小於 16 歲,根據 GDPR(一般資料保護規範)的要求,請勿使用此網站。

      -

      若此伺服器位於美國:我們的網站、產品與服務均供至少 13 歲的人使用。如果您小於 13 歲,根據 COPPA(兒童線上隱私保護法)的要求,請勿使用此忘站。

      +

      若此伺服器位於美國:我們的網站、產品與服務均供至少 13 歲的人使用。如果您小於 13 歲,根據 COPPA(兒童線上隱私保護法)的要求,請勿使用此忘站。

      +

      如果此伺服器位於其他司法管轄區,則法律要求可能會有所不同。

      +

      我們隱私權政策的變更

      若我們決定變更我們的隱私權政策,我們將會在此頁面張貼那些變更。

      -

      此文件以 CC-BY-SA 授權。最後更新時間為2018年3月7日。

      +

      此文件以 CC-BY-SA 授權。最後更新時間為 2022 年 5 月 26 日。

      -

      最初改編自 Discourse 隱私權政策

      +

      最初改編自 Discourse 隱私權政策.

      title: "%{instance} 使用條款和隱私權政策" themes: contrast: Mastodon(高對比) From 2f6416db53fd987b702969afa0de69a06caf0d27 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 30 May 2022 17:10:13 +0200 Subject: [PATCH 121/652] Remove unnused otherAccounts property (#18556) Leftover from before #11896 --- app/javascript/mastodon/components/status.js | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js index 766093226..7c44669d2 100644 --- a/app/javascript/mastodon/components/status.js +++ b/app/javascript/mastodon/components/status.js @@ -3,7 +3,6 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; import Avatar from './avatar'; import AvatarOverlay from './avatar_overlay'; -import AvatarComposite from './avatar_composite'; import RelativeTimestamp from './relative_timestamp'; import DisplayName from './display_name'; import StatusContent from './status_content'; @@ -70,7 +69,6 @@ class Status extends ImmutablePureComponent { static propTypes = { status: ImmutablePropTypes.map, account: ImmutablePropTypes.map, - otherAccounts: ImmutablePropTypes.list, onClick: PropTypes.func, onReply: PropTypes.func, onFavourite: PropTypes.func, @@ -297,7 +295,7 @@ class Status extends ImmutablePureComponent { let media = null; let statusAvatar, prepend, rebloggedByText; - const { intl, hidden, featured, otherAccounts, unread, showThread, scrollKey, pictureInPicture } = this.props; + const { intl, hidden, featured, unread, showThread, scrollKey, pictureInPicture } = this.props; let { status, account, ...other } = this.props; @@ -456,9 +454,7 @@ class Status extends ImmutablePureComponent { ); } - if (otherAccounts && otherAccounts.size > 0) { - statusAvatar = ; - } else if (account === undefined || account === null) { + if (account === undefined || account === null) { statusAvatar = ; } else { statusAvatar = ; @@ -492,7 +488,7 @@ class Status extends ImmutablePureComponent { {statusAvatar}
- +
From 14d7cf39f42e23445c70e2e1f26c7b3cd1fab306 Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 31 May 2022 05:53:43 +0200 Subject: [PATCH 122/652] Change language to be carried over on reply (#18557) In most cases, replies to a toot are written in the same language as the toot being replied to. --- app/javascript/mastodon/reducers/compose.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/javascript/mastodon/reducers/compose.js b/app/javascript/mastodon/reducers/compose.js index d7478c33d..7aac87b5c 100644 --- a/app/javascript/mastodon/reducers/compose.js +++ b/app/javascript/mastodon/reducers/compose.js @@ -328,6 +328,10 @@ export default function compose(state = initialState, action) { map.set('preselectDate', new Date()); map.set('idempotencyKey', uuid()); + if (action.status.get('language')) { + map.set('language', action.status.get('language')); + } + if (action.status.get('spoiler_text').length > 0) { map.set('spoiler', true); map.set('spoiler_text', action.status.get('spoiler_text')); From 28212bd2beaf89bbe89793c354d083c11e0e6ed7 Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 31 May 2022 18:25:24 +0200 Subject: [PATCH 123/652] Fix TagManager#local_url? erroring out on invalid URL (#18580) --- app/lib/tag_manager.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/lib/tag_manager.rb b/app/lib/tag_manager.rb index 39a98c3eb..a1d12a654 100644 --- a/app/lib/tag_manager.rb +++ b/app/lib/tag_manager.rb @@ -24,8 +24,11 @@ class TagManager def local_url?(url) uri = Addressable::URI.parse(url).normalize + return false unless uri.host domain = uri.host + (uri.port ? ":#{uri.port}" : '') TagManager.instance.web_domain?(domain) + rescue Addressable::URI::InvalidURIError + false end end From 628c177ebe50defab67f2e210cfd28719cf54c82 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 1 Jun 2022 05:03:12 +0200 Subject: [PATCH 124/652] Change label of publish button to be "Publish" again (#18583) --- .../mastodon/features/compose/components/compose_form.js | 2 +- app/javascript/mastodon/locales/defaultMessages.json | 4 ++-- app/javascript/mastodon/locales/en.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/javascript/mastodon/features/compose/components/compose_form.js b/app/javascript/mastodon/features/compose/components/compose_form.js index 4620d1c43..cd10d0eda 100644 --- a/app/javascript/mastodon/features/compose/components/compose_form.js +++ b/app/javascript/mastodon/features/compose/components/compose_form.js @@ -27,7 +27,7 @@ const allowedAroundShortCode = '><\u0085\u0020\u00a0\u1680\u2000\u2001\u2002\u20 const messages = defineMessages({ placeholder: { id: 'compose_form.placeholder', defaultMessage: 'What is on your mind?' }, spoiler_placeholder: { id: 'compose_form.spoiler_placeholder', defaultMessage: 'Write your warning here' }, - publish: { id: 'compose_form.publish', defaultMessage: 'Toot' }, + publish: { id: 'compose_form.publish', defaultMessage: 'Publish' }, publishLoud: { id: 'compose_form.publish_loud', defaultMessage: '{publish}!' }, saveChanges: { id: 'compose_form.save_changes', defaultMessage: 'Save changes' }, }); diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 4725d2d7c..986962bed 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -1182,7 +1182,7 @@ "id": "compose_form.spoiler_placeholder" }, { - "defaultMessage": "Toot", + "defaultMessage": "Publish", "id": "compose_form.publish" }, { @@ -3711,4 +3711,4 @@ ], "path": "app/javascript/mastodon/features/video/index.json" } -] \ No newline at end of file +] diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 4fc0849fb..a0a1e1cdf 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Remove this choice", "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", - "compose_form.publish": "Toot", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", From 3abf32e64f049bb644e53d4a7ea5207f62bfe129 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Jun 2022 19:49:52 +0900 Subject: [PATCH 125/652] Bump @babel/core from 7.18.0 to 7.18.2 (#18571) Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.18.0 to 7.18.2. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.2/packages/babel-core) --- updated-dependencies: - dependency-name: "@babel/core" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 59 ++++++++++++++++++++++++++++------------------------ 2 files changed, 33 insertions(+), 28 deletions(-) diff --git a/package.json b/package.json index 38523c5c3..f8016d5db 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ }, "private": true, "dependencies": { - "@babel/core": "^7.18.0", + "@babel/core": "^7.18.2", "@babel/plugin-proposal-decorators": "^7.17.12", "@babel/plugin-transform-react-inline-elements": "^7.16.7", "@babel/plugin-transform-runtime": "^7.18.2", diff --git a/yarn.lock b/yarn.lock index de282d742..6b0722476 100644 --- a/yarn.lock +++ b/yarn.lock @@ -28,33 +28,33 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw== -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.0", "@babel/core@^7.7.2": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.0.tgz#c58d04d7c6fbfb58ea7681e2b9145cfb62726756" - integrity sha512-Xyw74OlJwDijToNi0+6BBI5mLLR5+5R3bcSH80LXzjzEGEUlvNzujEE71BaD/ApEZHAvFI/Mlmp4M5lIkdeeWw== +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.2", "@babel/core@^7.7.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.2.tgz#87b2fcd7cce9becaa7f5acebdc4f09f3dd19d876" + integrity sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.18.0" - "@babel/helper-compilation-targets" "^7.17.10" + "@babel/generator" "^7.18.2" + "@babel/helper-compilation-targets" "^7.18.2" "@babel/helper-module-transforms" "^7.18.0" - "@babel/helpers" "^7.18.0" + "@babel/helpers" "^7.18.2" "@babel/parser" "^7.18.0" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.18.0" - "@babel/types" "^7.18.0" + "@babel/traverse" "^7.18.2" + "@babel/types" "^7.18.2" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.18.0", "@babel/generator@^7.7.2": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.0.tgz#46d28e8a18fc737b028efb25ab105d74473af43f" - integrity sha512-81YO9gGx6voPXlvYdZBliFXAZU8vZ9AZ6z+CjlmcnaeOcYSFbMTpdeDUO9xD9dh/68Vq03I8ZspfUTPfitcDHg== +"@babel/generator@^7.18.2", "@babel/generator@^7.7.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d" + integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw== dependencies: - "@babel/types" "^7.18.0" + "@babel/types" "^7.18.2" "@jridgewell/gen-mapping" "^0.3.0" jsesc "^2.5.1" @@ -168,6 +168,11 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-environment-visitor@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd" + integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ== + "@babel/helper-explode-assignable-expression@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" @@ -326,14 +331,14 @@ "@babel/traverse" "^7.16.8" "@babel/types" "^7.16.8" -"@babel/helpers@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.0.tgz#aff37c3590de42102b54842446146d0205946370" - integrity sha512-AE+HMYhmlMIbho9nbvicHyxFwhrO+xhKB6AhRxzl8w46Yj0VXTZjEsAoBVC7rB2I0jzX+yWyVybnO08qkfx6kg== +"@babel/helpers@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.2.tgz#970d74f0deadc3f5a938bfa250738eb4ac889384" + integrity sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg== dependencies: "@babel/template" "^7.16.7" - "@babel/traverse" "^7.18.0" - "@babel/types" "^7.18.0" + "@babel/traverse" "^7.18.2" + "@babel/types" "^7.18.2" "@babel/highlight@^7.10.4": version "7.12.13" @@ -1101,19 +1106,19 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.0.tgz#0e5ec6db098660b2372dd63d096bf484e32d27ba" - integrity sha512-oNOO4vaoIQoGjDQ84LgtF/IAlxlyqL4TUuoQ7xLkQETFaHkY1F7yazhB4Kt3VcZGL0ZF/jhrEpnXqUb0M7V3sw== +"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.2.tgz#b77a52604b5cc836a9e1e08dca01cba67a12d2e8" + integrity sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA== dependencies: "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.18.0" - "@babel/helper-environment-visitor" "^7.16.7" + "@babel/generator" "^7.18.2" + "@babel/helper-environment-visitor" "^7.18.2" "@babel/helper-function-name" "^7.17.9" "@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" "@babel/parser" "^7.18.0" - "@babel/types" "^7.18.0" + "@babel/types" "^7.18.2" debug "^4.1.0" globals "^11.1.0" From 1d696fd0706ed4e177fe7235626465129eaf11b8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Jun 2022 19:50:28 +0900 Subject: [PATCH 126/652] Bump @babel/runtime from 7.18.0 to 7.18.3 (#18572) Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.18.0 to 7.18.3. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.3/packages/babel-runtime) --- updated-dependencies: - dependency-name: "@babel/runtime" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index f8016d5db..a34c71865 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "@babel/plugin-transform-runtime": "^7.18.2", "@babel/preset-env": "^7.18.2", "@babel/preset-react": "^7.17.12", - "@babel/runtime": "^7.18.0", + "@babel/runtime": "^7.18.3", "@gamestdio/websocket": "^0.3.2", "@github/webauthn-json": "^0.5.7", "@rails/ujs": "^6.1.6", diff --git a/yarn.lock b/yarn.lock index 6b0722476..0837705a9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1090,10 +1090,10 @@ dependencies: regenerator-runtime "^0.12.0" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.0", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.0.tgz#6d77142a19cb6088f0af662af1ada37a604d34ae" - integrity sha512-YMQvx/6nKEaucl0MY56mwIG483xk8SDNdlUwb2Ts6FUpr7fm85DxEmsY18LXBNhcTz6tO6JwZV8w1W06v8UKeg== +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": + version "7.18.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.3.tgz#c7b654b57f6f63cf7f8b418ac9ca04408c4579f4" + integrity sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug== dependencies: regenerator-runtime "^0.13.4" From 129de8e4c7535b7c46bc3ce65fb3a2808e23d2a8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Jun 2022 20:07:37 +0900 Subject: [PATCH 127/652] Bump @babel/plugin-proposal-decorators from 7.17.12 to 7.18.2 (#18570) Bumps [@babel/plugin-proposal-decorators](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-proposal-decorators) from 7.17.12 to 7.18.2. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.2/packages/babel-plugin-proposal-decorators) --- updated-dependencies: - dependency-name: "@babel/plugin-proposal-decorators" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 52 ++++++++++++++++------------------------------------ 2 files changed, 17 insertions(+), 37 deletions(-) diff --git a/package.json b/package.json index a34c71865..f06abc6e5 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "private": true, "dependencies": { "@babel/core": "^7.18.2", - "@babel/plugin-proposal-decorators": "^7.17.12", + "@babel/plugin-proposal-decorators": "^7.18.2", "@babel/plugin-transform-react-inline-elements": "^7.16.7", "@babel/plugin-transform-runtime": "^7.18.2", "@babel/preset-env": "^7.18.2", diff --git a/yarn.lock b/yarn.lock index 0837705a9..4a85d8a59 100644 --- a/yarn.lock +++ b/yarn.lock @@ -91,20 +91,7 @@ browserslist "^4.20.2" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.12.tgz#d4f8393fc4838cbff6b7c199af5229aee16d07cf" - integrity sha512-sZoOeUTkFJMyhqCei2+Z+wtH/BehW8NVKQt7IRUQlRiOARuXymJYfN/FCcI8CvVbR0XVyDM6eLFOlR7YtiXnew== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.17.9" - "@babel/helper-member-expression-to-functions" "^7.17.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - -"@babel/helper-create-class-features-plugin@^7.18.0": +"@babel/helper-create-class-features-plugin@^7.17.12", "@babel/helper-create-class-features-plugin@^7.18.0": version "7.18.0" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz#fac430912606331cb075ea8d82f9a4c145a4da19" integrity sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg== @@ -211,13 +198,6 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-member-expression-to-functions@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz#42b9ca4b2b200123c3b7e726b0ae5153924905b0" - integrity sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q== - dependencies: - "@babel/types" "^7.16.7" - "@babel/helper-member-expression-to-functions@^7.17.7": version "7.17.7" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" @@ -267,16 +247,16 @@ "@babel/helper-wrap-function" "^7.16.8" "@babel/types" "^7.16.8" -"@babel/helper-replace-supers@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1" - integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw== +"@babel/helper-replace-supers@^7.16.7", "@babel/helper-replace-supers@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz#41fdfcc9abaf900e18ba6e5931816d9062a7b2e0" + integrity sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q== dependencies: - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-environment-visitor" "^7.18.2" + "@babel/helper-member-expression-to-functions" "^7.17.7" "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/traverse" "^7.16.7" - "@babel/types" "^7.16.7" + "@babel/traverse" "^7.18.2" + "@babel/types" "^7.18.2" "@babel/helper-simple-access@^7.17.7": version "7.17.7" @@ -405,14 +385,14 @@ "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-proposal-decorators@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.12.tgz#26a6a605f271a6703abf97f8fafd1368834c131c" - integrity sha512-gL0qSSeIk/VRfTDgtQg/EtejENssN/r3p5gJsPie1UacwiHibprpr19Z0pcK3XKuqQvjGVxsQ37Tl1MGfXzonA== +"@babel/plugin-proposal-decorators@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.18.2.tgz#dbe4086d2d42db489399783c3aa9272e9700afd4" + integrity sha512-kbDISufFOxeczi0v4NQP3p5kIeW6izn/6klfWBrIIdGZZe4UpHR+QU03FAoWjGGd9SUXAwbw2pup1kaL4OQsJQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-create-class-features-plugin" "^7.18.0" "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-replace-supers" "^7.18.2" "@babel/helper-split-export-declaration" "^7.16.7" "@babel/plugin-syntax-decorators" "^7.17.12" charcodes "^0.2.0" @@ -1106,7 +1086,7 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": +"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": version "7.18.2" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.2.tgz#b77a52604b5cc836a9e1e08dca01cba67a12d2e8" integrity sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA== From f5783182c39b07cb119861edb6db6a1c9b2213e9 Mon Sep 17 00:00:00 2001 From: Meisam <39205857+MFTabriz@users.noreply.github.com> Date: Wed, 1 Jun 2022 16:24:07 +0200 Subject: [PATCH 128/652] =?UTF-8?q?Add=20=E2=80=9Cservices=E2=80=9D=20and?= =?UTF-8?q?=20=E2=80=9Cmetadata=E2=80=9D=20to=20NodeInfo=20(#18563)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add services to NodeInfo response * add metadata to NodeInfo response * learning ruby syntax! * patch the patch * rm trailing whitespace * use [] instead of empty array constructor --- app/serializers/nodeinfo/serializer.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/serializers/nodeinfo/serializer.rb b/app/serializers/nodeinfo/serializer.rb index 7ff8aabec..afae7f00a 100644 --- a/app/serializers/nodeinfo/serializer.rb +++ b/app/serializers/nodeinfo/serializer.rb @@ -3,7 +3,7 @@ class NodeInfo::Serializer < ActiveModel::Serializer include RoutingHelper - attributes :version, :software, :protocols, :usage, :open_registrations + attributes :version, :software, :protocols, :services, :usage, :open_registrations, :metadata def version '2.0' @@ -37,6 +37,10 @@ class NodeInfo::Serializer < ActiveModel::Serializer Setting.registrations_mode != 'none' && !Rails.configuration.x.single_user_mode end + def metadata + [] + end + private def instance_presenter From 28329ba62f90890b110517f6da69ca81d588f2f5 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 1 Jun 2022 17:31:36 +0200 Subject: [PATCH 129/652] Add /api/v1/admin/domain_blocks (#18247) * Add /api/v1/admin/domain_blocks Fixes #18140 - `GET /api/v1/admin/domain_blocks` lists domain blocks - `GET /api/v1/admin/domain_blocks/:id` shows one by ID - `DELETE /api/v1/admin/domain_blocks/:id` deletes a given domain block - `POST /api/v1/admin/domain_blocks` to create a new domain block: if it conflicts with an existing one, returns an error with an attribute `existing_domain_block` with the rendered domain block * Simplify conflict handling as suggested in review --- .../api/v1/admin/domain_blocks_controller.rb | 109 +++++++++++++++ app/models/domain_block.rb | 1 + .../rest/admin/domain_block_serializer.rb | 11 ++ .../existing_domain_block_error_serializer.rb | 15 ++ config/locales/en.yml | 1 + config/routes.rb | 2 + .../v1/admin/domain_blocks_controller_spec.rb | 132 ++++++++++++++++++ 7 files changed, 271 insertions(+) create mode 100644 app/controllers/api/v1/admin/domain_blocks_controller.rb create mode 100644 app/serializers/rest/admin/domain_block_serializer.rb create mode 100644 app/serializers/rest/admin/existing_domain_block_error_serializer.rb create mode 100644 spec/controllers/api/v1/admin/domain_blocks_controller_spec.rb diff --git a/app/controllers/api/v1/admin/domain_blocks_controller.rb b/app/controllers/api/v1/admin/domain_blocks_controller.rb new file mode 100644 index 000000000..229870eee --- /dev/null +++ b/app/controllers/api/v1/admin/domain_blocks_controller.rb @@ -0,0 +1,109 @@ +# frozen_string_literal: true + +class Api::V1::Admin::DomainBlocksController < Api::BaseController + include Authorization + include AccountableConcern + + LIMIT = 100 + + before_action -> { authorize_if_got_token! :'admin:read', :'admin:read:domain_blocks' }, only: [:index, :show] + before_action -> { authorize_if_got_token! :'admin:write', :'admin:write:domain_blocks' }, except: [:index, :show] + before_action :require_staff! + before_action :set_domain_blocks, only: :index + before_action :set_domain_block, only: [:show, :update, :destroy] + + after_action :insert_pagination_headers, only: :index + + PAGINATION_PARAMS = %i(limit).freeze + + def create + authorize :domain_block, :create? + + existing_domain_block = resource_params[:domain].present? ? DomainBlock.rule_for(resource_params[:domain]) : nil + return render json: existing_domain_block, serializer: REST::Admin::ExistingDomainBlockErrorSerializer, status: 422 if existing_domain_block.present? + + @domain_block = DomainBlock.create!(resource_params) + DomainBlockWorker.perform_async(@domain_block.id) + log_action :create, @domain_block + render json: @domain_block, serializer: REST::Admin::DomainBlockSerializer + end + + def index + authorize :domain_block, :index? + render json: @domain_blocks, each_serializer: REST::Admin::DomainBlockSerializer + end + + def show + authorize @domain_block, :show? + render json: @domain_block, serializer: REST::Admin::DomainBlockSerializer + end + + def update + authorize @domain_block, :update? + + @domain_block.update(domain_block_params) + severity_changed = @domain_block.severity_changed? + @domain_block.save! + DomainBlockWorker.perform_async(@domain_block.id, severity_changed) + log_action :update, @domain_block + render json: @domain_block, serializer: REST::Admin::DomainBlockSerializer + end + + def destroy + authorize @domain_block, :destroy? + UnblockDomainService.new.call(@domain_block) + log_action :destroy, @domain_block + render json: @domain_block, serializer: REST::Admin::DomainBlockSerializer + end + + private + + def set_domain_blocks + @domain_blocks = filtered_domain_blocks.order(id: :desc).to_a_paginated_by_id(limit_param(LIMIT), params_slice(:max_id, :since_id, :min_id)) + end + + def set_domain_block + @domain_block = DomainBlock.find(params[:id]) + end + + def filtered_domain_blocks + # TODO: no filtering yet + DomainBlock.all + end + + def domain_block_params + params.permit(:severity, :reject_media, :reject_reports, :private_comment, :public_comment, :obfuscate) + end + + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + + def next_path + api_v1_admin_domain_blocks_url(pagination_params(max_id: pagination_max_id)) if records_continue? + end + + def prev_path + api_v1_admin_domain_blocks_url(pagination_params(min_id: pagination_since_id)) unless @domain_blocks.empty? + end + + def pagination_max_id + @domain_blocks.last.id + end + + def pagination_since_id + @domain_blocks.first.id + end + + def records_continue? + @domain_blocks.size == limit_param(LIMIT) + end + + def pagination_params(core_params) + params.slice(*PAGINATION_PARAMS).permit(*PAGINATION_PARAMS).merge(core_params) + end + + def resource_params + params.permit(:domain, :severity, :reject_media, :reject_reports, :private_comment, :public_comment, :obfuscate) + end +end diff --git a/app/models/domain_block.rb b/app/models/domain_block.rb index 2b797ef91..a15206b5e 100644 --- a/app/models/domain_block.rb +++ b/app/models/domain_block.rb @@ -16,6 +16,7 @@ # class DomainBlock < ApplicationRecord + include Paginable include DomainNormalizable include DomainMaterializable diff --git a/app/serializers/rest/admin/domain_block_serializer.rb b/app/serializers/rest/admin/domain_block_serializer.rb new file mode 100644 index 000000000..b955d008a --- /dev/null +++ b/app/serializers/rest/admin/domain_block_serializer.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class REST::Admin::DomainBlockSerializer < ActiveModel::Serializer + attributes :id, :domain, :created_at, :severity, + :reject_media, :reject_reports, + :private_comment, :public_comment, :obfuscate + + def id + object.id.to_s + end +end diff --git a/app/serializers/rest/admin/existing_domain_block_error_serializer.rb b/app/serializers/rest/admin/existing_domain_block_error_serializer.rb new file mode 100644 index 000000000..629566dad --- /dev/null +++ b/app/serializers/rest/admin/existing_domain_block_error_serializer.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class REST::Admin::ExistingDomainBlockErrorSerializer < ActiveModel::Serializer + attributes :error + + has_one :existing_domain_block, serializer: REST::Admin::DomainBlockSerializer + + def error + I18n.t('admin.domain_blocks.existing_domain_block', name: existing_domain_block.domain) + end + + def existing_domain_block + object + end +end diff --git a/config/locales/en.yml b/config/locales/en.yml index fc0ec6e3e..6bb0cc7ab 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -428,6 +428,7 @@ en: destroyed_msg: Domain block has been undone domain: Domain edit: Edit domain block + existing_domain_block: You have already imposed stricter limits on %{name}. existing_domain_block_html: You have already imposed stricter limits on %{name}, you need to unblock it first. new: create: Create block diff --git a/config/routes.rb b/config/routes.rb index b05d31e4e..dfce94929 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -559,6 +559,8 @@ Rails.application.routes.draw do end end + resources :domain_blocks, only: [:index, :show, :update, :create, :destroy] + namespace :trends do resources :tags, only: [:index] resources :links, only: [:index] diff --git a/spec/controllers/api/v1/admin/domain_blocks_controller_spec.rb b/spec/controllers/api/v1/admin/domain_blocks_controller_spec.rb new file mode 100644 index 000000000..196f6dc28 --- /dev/null +++ b/spec/controllers/api/v1/admin/domain_blocks_controller_spec.rb @@ -0,0 +1,132 @@ +require 'rails_helper' + +RSpec.describe Api::V1::Admin::DomainBlocksController, type: :controller do + render_views + + let(:role) { 'admin' } + let(:user) { Fabricate(:user, role: role) } + let(:scopes) { 'admin:read admin:write' } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } + + before do + allow(controller).to receive(:doorkeeper_token) { token } + end + + shared_examples 'forbidden for wrong scope' do |wrong_scope| + let(:scopes) { wrong_scope } + + it 'returns http forbidden' do + expect(response).to have_http_status(403) + end + end + + shared_examples 'forbidden for wrong role' do |wrong_role| + let(:role) { wrong_role } + + it 'returns http forbidden' do + expect(response).to have_http_status(403) + end + end + + describe 'GET #index' do + let!(:block) { Fabricate(:domain_block) } + + before do + get :index + end + + it_behaves_like 'forbidden for wrong scope', 'write:statuses' + it_behaves_like 'forbidden for wrong role', 'user' + it_behaves_like 'forbidden for wrong role', 'moderator' + + it 'returns http success' do + expect(response).to have_http_status(200) + end + + it 'returns the expected domain blocks' do + json = body_as_json + expect(json.length).to eq 1 + expect(json[0][:id].to_i).to eq block.id + end + end + + describe 'GET #show' do + let!(:block) { Fabricate(:domain_block) } + + before do + get :show, params: { id: block.id } + end + + it_behaves_like 'forbidden for wrong scope', 'write:statuses' + it_behaves_like 'forbidden for wrong role', 'user' + it_behaves_like 'forbidden for wrong role', 'moderator' + + it 'returns http success' do + expect(response).to have_http_status(200) + end + + it 'returns expected domain name' do + json = body_as_json + expect(json[:domain]).to eq block.domain + end + end + + describe 'DELETE #destroy' do + let!(:block) { Fabricate(:domain_block) } + + before do + delete :destroy, params: { id: block.id } + end + + it_behaves_like 'forbidden for wrong scope', 'write:statuses' + it_behaves_like 'forbidden for wrong role', 'user' + it_behaves_like 'forbidden for wrong role', 'moderator' + + it 'returns http success' do + expect(response).to have_http_status(200) + end + + it 'deletes the block' do + expect(DomainBlock.find_by(id: block.id)).to be_nil + end + end + + describe 'POST #create' do + let(:existing_block_domain) { 'example.com' } + let!(:block) { Fabricate(:domain_block, domain: existing_block_domain, severity: :suspend) } + + before do + post :create, params: { domain: 'foo.bar.com', severity: :silence } + end + + it_behaves_like 'forbidden for wrong scope', 'write:statuses' + it_behaves_like 'forbidden for wrong role', 'user' + it_behaves_like 'forbidden for wrong role', 'moderator' + + it 'returns http success' do + expect(response).to have_http_status(200) + end + + it 'returns expected domain name' do + json = body_as_json + expect(json[:domain]).to eq 'foo.bar.com' + end + + it 'creates a domain block' do + expect(DomainBlock.find_by(domain: 'foo.bar.com')).to_not be_nil + end + + context 'when a stricter domain block already exists' do + let(:existing_block_domain) { 'bar.com' } + + it 'returns http unprocessable entity' do + expect(response).to have_http_status(422) + end + + it 'renders existing domain block in error' do + json = body_as_json + expect(json[:existing_domain_block][:domain]).to eq existing_block_domain + end + end + end +end From 3f1426057474e15c32b0130280e0349ab5e682c0 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 1 Jun 2022 19:09:37 +0200 Subject: [PATCH 130/652] Add StatusRelationshipsPresenter specs (#18588) --- .../status_relationships_presenter_spec.rb | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 spec/presenters/status_relationships_presenter_spec.rb diff --git a/spec/presenters/status_relationships_presenter_spec.rb b/spec/presenters/status_relationships_presenter_spec.rb new file mode 100644 index 000000000..03296bd17 --- /dev/null +++ b/spec/presenters/status_relationships_presenter_spec.rb @@ -0,0 +1,73 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe StatusRelationshipsPresenter do + describe '.initialize' do + before do + allow(Status).to receive(:reblogs_map).with(status_ids, current_account_id).and_return(default_map) + allow(Status).to receive(:favourites_map).with(status_ids, current_account_id).and_return(default_map) + allow(Status).to receive(:bookmarks_map).with(status_ids, current_account_id).and_return(default_map) + allow(Status).to receive(:mutes_map).with(anything, current_account_id).and_return(default_map) + allow(Status).to receive(:pins_map).with(anything, current_account_id).and_return(default_map) + end + + let(:presenter) { StatusRelationshipsPresenter.new(statuses, current_account_id, **options) } + let(:current_account_id) { Fabricate(:account).id } + let(:statuses) { [Fabricate(:status)] } + let(:status_ids) { statuses.map(&:id) } + let(:default_map) { { 1 => true } } + + context 'options are not set' do + let(:options) { {} } + + it 'sets default maps' do + expect(presenter.reblogs_map).to eq default_map + expect(presenter.favourites_map).to eq default_map + expect(presenter.bookmarks_map).to eq default_map + expect(presenter.mutes_map).to eq default_map + expect(presenter.pins_map).to eq default_map + end + end + + context 'options[:reblogs_map] is set' do + let(:options) { { reblogs_map: { 2 => true } } } + + it 'sets @reblogs_map merged with default_map and options[:reblogs_map]' do + expect(presenter.reblogs_map).to eq default_map.merge(options[:reblogs_map]) + end + end + + context 'options[:favourites_map] is set' do + let(:options) { { favourites_map: { 3 => true } } } + + it 'sets @favourites_map merged with default_map and options[:favourites_map]' do + expect(presenter.favourites_map).to eq default_map.merge(options[:favourites_map]) + end + end + + context 'options[:bookmarks_map] is set' do + let(:options) { { bookmarks_map: { 4 => true } } } + + it 'sets @bookmarks_map merged with default_map and options[:bookmarks_map]' do + expect(presenter.bookmarks_map).to eq default_map.merge(options[:bookmarks_map]) + end + end + + context 'options[:mutes_map] is set' do + let(:options) { { mutes_map: { 5 => true } } } + + it 'sets @mutes_map merged with default_map and options[:mutes_map]' do + expect(presenter.mutes_map).to eq default_map.merge(options[:mutes_map]) + end + end + + context 'options[:pins_map] is set' do + let(:options) { { pins_map: { 6 => true } } } + + it 'sets @pins_map merged with default_map and options[:pins_map]' do + expect(presenter.pins_map).to eq default_map.merge(options[:pins_map]) + end + end + end +end From 84266f87e7f3ecc0f6b4aa35d18a2a5dccb47cd4 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Thu, 2 Jun 2022 02:22:35 +0900 Subject: [PATCH 131/652] Replace from Code Climate to Super-Linter (#18587) --- .codeclimate.yml | 8 +- .eslintrc.js | 4 +- .github/workflows/linter.yml | 71 + .sass-lint.yml | 37 - app/javascript/styles/fonts/montserrat.scss | 10 +- app/javascript/styles/fonts/roboto-mono.scss | 5 +- app/javascript/styles/fonts/roboto.scss | 20 +- .../styles/mastodon-light/diff.scss | 8 +- .../styles/mastodon-light/variables.scss | 4 +- app/javascript/styles/mastodon/about.scss | 6 +- app/javascript/styles/mastodon/admin.scss | 5 +- app/javascript/styles/mastodon/basics.scss | 6 +- .../styles/mastodon/components.scss | 49 +- app/javascript/styles/mastodon/dashboard.scss | 1 - .../styles/mastodon/emoji_picker.scss | 6 +- app/javascript/styles/mastodon/forms.scss | 30 +- app/javascript/styles/mastodon/polls.scss | 9 +- app/javascript/styles/mastodon/statuses.scss | 2 +- app/javascript/styles/mastodon/variables.scss | 2 + package.json | 14 +- stylelint.config.js | 28 + yarn.lock | 1216 ++++++++--------- 22 files changed, 799 insertions(+), 742 deletions(-) create mode 100644 .github/workflows/linter.yml delete mode 100644 .sass-lint.yml create mode 100644 stylelint.config.js diff --git a/.codeclimate.yml b/.codeclimate.yml index ee9022cda..59051aae7 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -26,13 +26,11 @@ plugins: bundler-audit: enabled: true eslint: - enabled: true - channel: eslint-7 + enabled: false rubocop: - enabled: true - channel: rubocop-1-9-1 + enabled: false sass-lint: - enabled: true + enabled: false exclude_patterns: - spec/ - vendor/asset/ diff --git a/.eslintrc.js b/.eslintrc.js index 2a882f59c..e4ada6fe0 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -12,7 +12,7 @@ module.exports = { ATTACHMENT_HOST: false, }, - parser: 'babel-eslint', + parser: '@babel/eslint-parser', plugins: [ 'react', @@ -27,7 +27,7 @@ module.exports = { experimentalObjectRestSpread: true, jsx: true, }, - ecmaVersion: 2018, + ecmaVersion: 2021, }, settings: { diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml new file mode 100644 index 000000000..fd535ea9a --- /dev/null +++ b/.github/workflows/linter.yml @@ -0,0 +1,71 @@ +--- +################################# +################################# +## Super Linter GitHub Actions ## +################################# +################################# +name: Lint Code Base + +# +# Documentation: +# https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions +# + +############################# +# Start the job on all push # +############################# +on: + push: + branches-ignore: [main] + # Remove the line above to run when pushing to master + pull_request: + branches: [main] + +############### +# Set the Job # +############### +permissions: + checks: write + contents: read + pull-requests: write + statuses: write + +jobs: + build: + # Name the Job + name: Lint Code Base + # Set the agent to run on + runs-on: ubuntu-latest + + ################## + # Load all steps # + ################## + steps: + ########################## + # Checkout the code base # + ########################## + - name: Checkout Code + uses: actions/checkout@v3 + with: + # Full git history is needed to get a proper list of changed files within `super-linter` + fetch-depth: 0 + + - name: Intall dependencies + run: yarn install --frozen-lockfile + + ################################ + # Run Linter against code base # + ################################ + - name: Lint Code Base + uses: github/super-linter@v4 + env: + CSS_FILE_NAME: stylelint.config.js + DEFAULT_BRANCH: main + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + JAVASCRIPT_ES_CONFIG_FILE: .eslintrc.js + LINTER_RULES_PATH: . + RUBY_CONFIG_FILE: .rubocop.yml + VALIDATE_ALL_CODEBASE: false + VALIDATE_CSS: true + VALIDATE_JAVASCRIPT_ES: true + VALIDATE_RUBY: true diff --git a/.sass-lint.yml b/.sass-lint.yml deleted file mode 100644 index a84adff3f..000000000 --- a/.sass-lint.yml +++ /dev/null @@ -1,37 +0,0 @@ -# Linter Documentation: -# https://github.com/sasstools/sass-lint/tree/v1.13.1/docs/options - -files: - include: app/javascript/styles/**/*.scss - ignore: - - app/javascript/styles/mastodon/reset.scss - -rules: - # Disallows - no-color-literals: 0 - no-css-comments: 0 - no-duplicate-properties: 0 - no-ids: 0 - no-important: 0 - no-mergeable-selectors: 0 - no-misspelled-properties: 0 - no-qualifying-elements: 0 - no-transition-all: 0 - no-vendor-prefixes: 0 - - # Nesting - force-element-nesting: 0 - force-attribute-nesting: 0 - force-pseudo-nesting: 0 - - # Name Formats - class-name-format: 0 - leading-zero: 0 - - # Style Guide - attribute-quotes: 0 - hex-length: 0 - indentation: 0 - nesting-depth: 0 - property-sort-order: 0 - quotes: 0 diff --git a/app/javascript/styles/fonts/montserrat.scss b/app/javascript/styles/fonts/montserrat.scss index ea7e04536..170fe6542 100644 --- a/app/javascript/styles/fonts/montserrat.scss +++ b/app/javascript/styles/fonts/montserrat.scss @@ -1,6 +1,7 @@ @font-face { - font-family: 'mastodon-font-display'; - src: local('Montserrat'), + font-family: mastodon-font-display; + src: + local('Montserrat'), url('../fonts/montserrat/Montserrat-Regular.woff2') format('woff2'), url('../fonts/montserrat/Montserrat-Regular.woff') format('woff'), url('../fonts/montserrat/Montserrat-Regular.ttf') format('truetype'); @@ -10,8 +11,9 @@ } @font-face { - font-family: 'mastodon-font-display'; - src: local('Montserrat Medium'), + font-family: mastodon-font-display; + src: + local('Montserrat Medium'), url('../fonts/montserrat/Montserrat-Medium.ttf') format('truetype'); font-weight: 500; font-display: swap; diff --git a/app/javascript/styles/fonts/roboto-mono.scss b/app/javascript/styles/fonts/roboto-mono.scss index bd9839abf..3802212a9 100644 --- a/app/javascript/styles/fonts/roboto-mono.scss +++ b/app/javascript/styles/fonts/roboto-mono.scss @@ -1,6 +1,7 @@ @font-face { - font-family: 'mastodon-font-monospace'; - src: local('Roboto Mono'), + font-family: mastodon-font-monospace; + src: + local('Roboto Mono'), url('../fonts/roboto-mono/robotomono-regular-webfont.woff2') format('woff2'), url('../fonts/roboto-mono/robotomono-regular-webfont.woff') format('woff'), url('../fonts/roboto-mono/robotomono-regular-webfont.ttf') format('truetype'), diff --git a/app/javascript/styles/fonts/roboto.scss b/app/javascript/styles/fonts/roboto.scss index f3a6dcb6e..657152380 100644 --- a/app/javascript/styles/fonts/roboto.scss +++ b/app/javascript/styles/fonts/roboto.scss @@ -1,6 +1,7 @@ @font-face { - font-family: 'mastodon-font-sans-serif'; - src: local('Roboto Italic'), + font-family: mastodon-font-sans-serif; + src: + local('Roboto Italic'), url('../fonts/roboto/roboto-italic-webfont.woff2') format('woff2'), url('../fonts/roboto/roboto-italic-webfont.woff') format('woff'), url('../fonts/roboto/roboto-italic-webfont.ttf') format('truetype'), @@ -11,8 +12,9 @@ } @font-face { - font-family: 'mastodon-font-sans-serif'; - src: local('Roboto Bold'), + font-family: mastodon-font-sans-serif; + src: + local('Roboto Bold'), url('../fonts/roboto/roboto-bold-webfont.woff2') format('woff2'), url('../fonts/roboto/roboto-bold-webfont.woff') format('woff'), url('../fonts/roboto/roboto-bold-webfont.ttf') format('truetype'), @@ -23,8 +25,9 @@ } @font-face { - font-family: 'mastodon-font-sans-serif'; - src: local('Roboto Medium'), + font-family: mastodon-font-sans-serif; + src: + local('Roboto Medium'), url('../fonts/roboto/roboto-medium-webfont.woff2') format('woff2'), url('../fonts/roboto/roboto-medium-webfont.woff') format('woff'), url('../fonts/roboto/roboto-medium-webfont.ttf') format('truetype'), @@ -35,8 +38,9 @@ } @font-face { - font-family: 'mastodon-font-sans-serif'; - src: local('Roboto'), + font-family: mastodon-font-sans-serif; + src: + local('Roboto'), url('../fonts/roboto/roboto-regular-webfont.woff2') format('woff2'), url('../fonts/roboto/roboto-regular-webfont.woff') format('woff'), url('../fonts/roboto/roboto-regular-webfont.ttf') format('truetype'), diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss index 61c2d0d66..0bc6247ef 100644 --- a/app/javascript/styles/mastodon-light/diff.scss +++ b/app/javascript/styles/mastodon-light/diff.scss @@ -542,10 +542,10 @@ html { } .simple_form { - input[type=text], - input[type=number], - input[type=email], - input[type=password], + input[type="text"], + input[type="number"], + input[type="email"], + input[type="password"], textarea { &:hover { border-color: lighten($ui-base-color, 12%); diff --git a/app/javascript/styles/mastodon-light/variables.scss b/app/javascript/styles/mastodon-light/variables.scss index bc039ff03..f6bc3ac96 100644 --- a/app/javascript/styles/mastodon-light/variables.scss +++ b/app/javascript/styles/mastodon-light/variables.scss @@ -28,10 +28,10 @@ $inverted-text-color: $black !default; $lighter-text-color: $classic-base-color !default; $light-text-color: #444b5d; -//Newly added colors +// Newly added colors $account-background-color: $white !default; -//Invert darkened and lightened colors +// Invert darkened and lightened colors @function darken($color, $amount) { @return hsl(hue($color), saturation($color), lightness($color) + $amount); } diff --git a/app/javascript/styles/mastodon/about.scss b/app/javascript/styles/mastodon/about.scss index 9f2a1a3af..ac2fdb2c7 100644 --- a/app/javascript/styles/mastodon/about.scss +++ b/app/javascript/styles/mastodon/about.scss @@ -41,7 +41,7 @@ $small-breakpoint: 960px; p { margin-top: 0; - margin-bottom: .85em; + margin-bottom: 0.85em; &:last-child { margin-bottom: 0; @@ -73,7 +73,7 @@ $small-breakpoint: 960px; h6 { font-family: $font-display, sans-serif; margin-top: 1.275em; - margin-bottom: .85em; + margin-bottom: 0.85em; font-weight: 500; color: $secondary-text-color; } @@ -436,7 +436,7 @@ $small-breakpoint: 960px; width: 100%; height: 0; border: 0; - border-bottom: 1px solid rgba($ui-base-lighter-color, .6); + border-bottom: 1px solid rgba($ui-base-lighter-color, 0.6); margin: 20px 0; &.spacer { diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index 68e6d2482..921c529d1 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -183,12 +183,9 @@ $content-width: 840px; &-heading { display: flex; - padding-bottom: 36px; border-bottom: 1px solid lighten($ui-base-color, 8%); - margin: -15px -15px 40px 0; - flex-wrap: wrap; align-items: center; justify-content: space-between; @@ -294,7 +291,7 @@ $content-width: 840px; width: 100%; height: 0; border: 0; - border-bottom: 1px solid rgba($ui-base-lighter-color, .6); + border-bottom: 1px solid rgba($ui-base-lighter-color, 0.6); margin: 20px 0; &.spacer { diff --git a/app/javascript/styles/mastodon/basics.scss b/app/javascript/styles/mastodon/basics.scss index 9e63b1d31..391f1fad9 100644 --- a/app/javascript/styles/mastodon/basics.scss +++ b/app/javascript/styles/mastodon/basics.scss @@ -16,7 +16,7 @@ body { text-rendering: optimizelegibility; font-feature-settings: "kern"; text-size-adjust: none; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + -webkit-tap-highlight-color: rgba(0, 0, 0, 0%); -webkit-tap-highlight-color: transparent; &.system-font { @@ -31,7 +31,7 @@ body { // Droid Sans => Older Androids (<4.0) // Helvetica Neue => Older macOS <10.11 // $font-sans-serif => web-font (Roboto) fallback and newer Androids (>=4.0) - font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", $font-sans-serif, sans-serif; + font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", $font-sans-serif, sans-serif; } &.app-body { @@ -202,7 +202,7 @@ button { } p { - margin-bottom: .85em; + margin-bottom: 0.85em; &:last-child { margin-bottom: 0; diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index b066d3abd..401cf02ac 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -341,7 +341,6 @@ &__sensitive-button { padding: 10px; padding-top: 0; - font-size: 14px; font-weight: 500; @@ -349,7 +348,7 @@ color: $highlight-text-color; } - input[type=checkbox] { + input[type="checkbox"] { display: none; } @@ -709,7 +708,7 @@ font-size: inherit; vertical-align: middle; object-fit: contain; - margin: -.2ex .15em .2ex; + margin: -0.2ex 0.15em 0.2ex; width: 16px; height: 16px; @@ -1313,9 +1312,9 @@ .account__avatar { @include avatar-radius; + display: block; position: relative; - width: 36px; height: 36px; background-size: 36px 36px; @@ -1328,6 +1327,7 @@ &-composite { @include avatar-radius; + border-radius: 50%; overflow: hidden; position: relative; @@ -1365,6 +1365,7 @@ a .account__avatar { img { @include avatar-radius; + width: 100%; height: 100%; } @@ -1381,6 +1382,7 @@ a .account__avatar { img { @include avatar-radius; + width: 100%; height: 100%; } @@ -2328,7 +2330,7 @@ a.account__display-name { .scrollable { overflow: visible; - @supports(display: grid) { + @supports (display: grid) { contain: content; } } @@ -2751,7 +2753,7 @@ a.account__display-name { overflow-y: auto; } - @supports(display: grid) { // hack to fix Chrome <57 + @supports (display: grid) { // hack to fix Chrome <57 contain: strict; } @@ -2772,7 +2774,7 @@ a.account__display-name { } .scrollable.fullscreen { - @supports(display: grid) { // hack to fix Chrome <57 + @supports (display: grid) { // hack to fix Chrome <57 contain: none; } } @@ -3980,6 +3982,7 @@ a.status-card.compact:hover { &__menu { @include search-popout; + padding: 0; background: $ui-secondary-color; } @@ -4061,7 +4064,7 @@ a.status-card.compact:hover { align-items: center; justify-content: center; - @supports(display: grid) { // hack to fix Chrome <57 + @supports (display: grid) { // hack to fix Chrome <57 contain: strict; } @@ -4878,7 +4881,7 @@ a.status-card.compact:hover { padding: 0; border: 0; font-size: 0; - transition: opacity .2s ease-in-out; + transition: opacity 0.2s ease-in-out; &.active { opacity: 1; @@ -4933,7 +4936,6 @@ a.status-card.compact:hover { height: 100%; box-sizing: border-box; padding: 25px; - display: none; flex-direction: column; align-items: center; justify-content: center; @@ -5274,7 +5276,6 @@ a.status-card.compact:hover { display: block; box-sizing: border-box; width: 100%; - margin: 0; color: $inverted-text-color; background: $simple-background-color; padding: 10px; @@ -5406,7 +5407,6 @@ a.status-card.compact:hover { font-family: inherit; font-size: 14px; resize: none; - border: 0; outline: 0; border-radius: 4px; border: 1px solid $ui-secondary-color; @@ -5857,6 +5857,7 @@ a.status-card.compact:hover { overflow: hidden; position: absolute; } + /* End Media Gallery */ .detailed, @@ -5869,7 +5870,6 @@ a.status-card.compact:hover { .video-player__volume__handle { bottom: 23px; } - } .audio-player { @@ -5991,7 +5991,7 @@ a.status-card.compact:hover { background: linear-gradient(0deg, rgba($base-shadow-color, 0.85) 0, rgba($base-shadow-color, 0.45) 60%, transparent); padding: 0 15px; opacity: 0; - transition: opacity .1s ease; + transition: opacity 0.1s ease; &.active { opacity: 1; @@ -6066,7 +6066,6 @@ a.status-card.compact:hover { .player-button { display: inline-block; outline: 0; - flex: 0 0 auto; background: transparent; padding: 5px; @@ -6237,7 +6236,7 @@ a.status-card.compact:hover { box-shadow: 1px 2px 6px rgba($base-shadow-color, 0.2); .no-reduce-motion & { - transition: opacity .1s ease; + transition: opacity 0.1s ease; } &.active { @@ -6405,14 +6404,13 @@ a.status-card.compact:hover { display: inline-block; padding: 6px 0; line-height: 18px; - cursor: default; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; cursor: pointer; - input[type=radio], - input[type=checkbox] { + input[type="radio"], + input[type="checkbox"] { display: none; } @@ -6505,14 +6503,16 @@ noscript { .navigation-bar__actions { & > .icon-button.close { will-change: opacity transform; - transition: opacity $duration * 0.5 $delay, - transform $duration $delay; + transition: + opacity $duration * 0.5 $delay, + transform $duration $delay; } & > .compose__action-bar .icon-button { will-change: opacity transform; - transition: opacity $duration * 0.5 $delay + $duration * 0.5, - transform $duration $delay; + transition: + opacity $duration * 0.5 $delay + $duration * 0.5, + transform $duration $delay; } } } @@ -7286,7 +7286,7 @@ noscript { border-radius: 50%; width: 0.625rem; height: 0.625rem; - margin: -.1ex .15em .1ex; + margin: -0.1ex 0.15em 0.1ex; } &__content { @@ -7549,7 +7549,6 @@ noscript { position: absolute; top: 0; left: 0; - pointer-events: 0; width: 100%; height: 100%; border-left: 2px solid $highlight-text-color; diff --git a/app/javascript/styles/mastodon/dashboard.scss b/app/javascript/styles/mastodon/dashboard.scss index 0a881bc10..7d0e51fde 100644 --- a/app/javascript/styles/mastodon/dashboard.scss +++ b/app/javascript/styles/mastodon/dashboard.scss @@ -37,7 +37,6 @@ text-align: center; font-weight: 500; font-size: 24px; - line-height: 21px; color: $primary-text-color; font-family: $font-display, sans-serif; margin-bottom: 20px; diff --git a/app/javascript/styles/mastodon/emoji_picker.scss b/app/javascript/styles/mastodon/emoji_picker.scss index e73057465..24061d2ca 100644 --- a/app/javascript/styles/mastodon/emoji_picker.scss +++ b/app/javascript/styles/mastodon/emoji_picker.scss @@ -46,7 +46,7 @@ text-align: center; padding: 12px 4px; overflow: hidden; - transition: color .1s ease-out; + transition: color 0.1s ease-out; cursor: pointer; background: transparent; border: 0; @@ -242,8 +242,8 @@ padding: 5px 6px; padding-top: 70px; - .emoji-mart-no-results-label { - margin-top: .2em; + .emoji-mart-no-results-label { + margin-top: 0.2em; } .emoji-mart-emoji:hover::before { diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss index 90d56b075..94f553b76 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -352,7 +352,7 @@ code { flex: 1 1 auto; } - input[type=checkbox] { + input[type="checkbox"] { position: absolute; left: 0; top: 5px; @@ -368,11 +368,11 @@ code { border-radius: 4px; } - input[type=text], - input[type=number], - input[type=email], - input[type=password], - input[type=url], + input[type="text"], + input[type="number"], + input[type="email"], + input[type="password"], + input[type="url"], textarea { box-sizing: border-box; font-size: 16px; @@ -410,10 +410,10 @@ code { } } - input[type=text], - input[type=number], - input[type=email], - input[type=password] { + input[type="text"], + input[type="number"], + input[type="email"], + input[type="password"] { &:focus:invalid:not(:placeholder-shown), &:required:invalid:not(:placeholder-shown) { border-color: lighten($error-red, 12%); @@ -425,10 +425,10 @@ code { color: lighten($error-red, 12%); } - input[type=text], - input[type=number], - input[type=email], - input[type=password], + input[type="text"], + input[type="number"], + input[type="email"], + input[type="password"], textarea, select { border-color: lighten($error-red, 12%); @@ -1000,7 +1000,7 @@ code { flex: 1 1 auto; } - input[type=text] { + input[type="text"] { background: transparent; border: 0; padding: 10px; diff --git a/app/javascript/styles/mastodon/polls.scss b/app/javascript/styles/mastodon/polls.scss index a719044ea..f553c5501 100644 --- a/app/javascript/styles/mastodon/polls.scss +++ b/app/javascript/styles/mastodon/polls.scss @@ -64,8 +64,8 @@ max-width: calc(100% - 45px - 25px); } - input[type=radio], - input[type=checkbox] { + input[type="radio"], + input[type="checkbox"] { display: none; } @@ -73,7 +73,7 @@ flex: 1 1 auto; } - input[type=text] { + input[type="text"] { display: block; box-sizing: border-box; width: 100%; @@ -109,7 +109,6 @@ box-sizing: border-box; width: 18px; height: 18px; - flex: 0 0 auto; margin-right: 10px; top: -1px; border-radius: 50%; @@ -198,7 +197,7 @@ &:active, &:focus { - background-color: rgba($dark-text-color, .1); + background-color: rgba($dark-text-color, 0.1); } } diff --git a/app/javascript/styles/mastodon/statuses.scss b/app/javascript/styles/mastodon/statuses.scss index 078714325..a926aff96 100644 --- a/app/javascript/styles/mastodon/statuses.scss +++ b/app/javascript/styles/mastodon/statuses.scss @@ -139,7 +139,7 @@ a.button.logo-button { .embed, .public-layout { - .status__content[data-spoiler=folded] { + .status__content[data-spoiler="folded"] { .e-content { display: none; } diff --git a/app/javascript/styles/mastodon/variables.scss b/app/javascript/styles/mastodon/variables.scss index f463419c8..47d7e6f87 100644 --- a/app/javascript/styles/mastodon/variables.scss +++ b/app/javascript/styles/mastodon/variables.scss @@ -38,6 +38,7 @@ $highlight-text-color: $ui-highlight-color !default; $action-button-color: $ui-base-lighter-color !default; $passive-text-color: $gold-star !default; $active-passive-text-color: $success-green !default; + // For texts on inverted backgrounds $inverted-text-color: $ui-base-color !default; $lighter-text-color: $ui-base-lighter-color !default; @@ -48,6 +49,7 @@ $cjk-langs: ja, ko, zh-CN, zh-HK, zh-TW; // Variables for components $media-modal-media-max-width: 100%; + // put margins on top and bottom of image to avoid the screen covered by image. $media-modal-media-max-height: 80%; diff --git a/package.json b/package.json index f06abc6e5..e2c03e178 100644 --- a/package.json +++ b/package.json @@ -13,10 +13,10 @@ "test": "${npm_execpath} run test:lint:js && ${npm_execpath} run test:jest", "test:lint": "${npm_execpath} run test:lint:js && ${npm_execpath} run test:lint:sass", "test:lint:js": "eslint --ext=js . --cache", - "test:lint:sass": "sass-lint -v", + "test:lint:sass": "stylelint '**/*.scss'", "test:jest": "cross-env NODE_ENV=test jest", - "format": "prettier --write '**/*.{json,yml}", - "format-check": "prettier --write '**/*.{json,yml}" + "format": "prettier --write '**/*.{json,yml}'", + "format-check": "prettier --write '**/*.{json,yml}'" }, "repository": { "type": "git", @@ -43,7 +43,6 @@ "babel-plugin-preval": "^5.1.0", "babel-plugin-react-intl": "^6.2.0", "babel-plugin-transform-react-remove-prop-types": "^0.4.24", - "babel-runtime": "^6.26.0", "blurhash": "^1.1.5", "classnames": "^2.3.1", "color-blend": "^3.0.1", @@ -84,6 +83,7 @@ "offline-plugin": "^5.0.7", "path-complete-extname": "^1.0.0", "pg": "^8.5.0", + "postcss": "^8.4.14", "postcss-loader": "^3.0.0", "postcss-object-fit-images": "^1.1.2", "promise.prototype.finally": "^3.1.3", @@ -137,9 +137,9 @@ "ws": "^8.6.0" }, "devDependencies": { + "@babel/eslint-parser": "^7.18.2", "@testing-library/jest-dom": "^5.16.4", "@testing-library/react": "^12.1.5", - "babel-eslint": "^10.1.0", "babel-jest": "^28.1.0", "eslint": "^7.32.0", "eslint-plugin-import": "~2.26.0", @@ -148,11 +148,13 @@ "eslint-plugin-react": "~7.30.0", "jest": "^28.1.0", "jest-environment-jsdom": "^28.1.0", + "postcss-scss": "^4.0.4", "prettier": "^2.6.2", "raf": "^3.4.1", "react-intl-translations-manager": "^5.0.3", "react-test-renderer": "^16.14.0", - "sass-lint": "^1.13.1", + "stylelint": "^14.8.5", + "stylelint-config-standard-scss": "^4.0.0", "webpack-dev-server": "^3.11.3", "yargs": "^17.5.1" }, diff --git a/stylelint.config.js b/stylelint.config.js new file mode 100644 index 000000000..0f8267a81 --- /dev/null +++ b/stylelint.config.js @@ -0,0 +1,28 @@ +module.exports = { + extends: ['stylelint-config-standard-scss'], + ignoreFiles: [ + 'app/javascript/styles/mastodon/reset.scss', + 'node_modules/**/*', + 'vendor/**/*', + ], + rules: { + 'at-rule-empty-line-before': null, + 'color-function-notation': null, + 'color-hex-length': null, + 'declaration-block-no-redundant-longhand-properties': null, + 'max-line-length': null, + 'no-descending-specificity': null, + 'no-duplicate-selectors': null, + 'number-max-precision': 8, + 'property-no-unknown': null, + 'property-no-vendor-prefix': null, + 'selector-class-pattern': null, + 'selector-id-pattern': null, + 'string-quotes': null, + 'value-keyword-case': null, + 'value-no-vendor-prefix': null, + + 'scss/dollar-variable-empty-line-before': null, + 'scss/no-global-function-names': null, + }, +}; diff --git a/yarn.lock b/yarn.lock index 4a85d8a59..17134d95e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -49,6 +49,15 @@ json5 "^2.2.1" semver "^6.3.0" +"@babel/eslint-parser@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.18.2.tgz#e14dee36c010edfb0153cf900c2b0815e82e3245" + integrity sha512-oFQYkE8SuH14+uR51JVAmdqwKYXGRjEXx7s+WiagVjqQ+HPE+nnwyF2qlVG8evUsUHmPcA+6YXMEDbIhEyQc5A== + dependencies: + eslint-scope "^5.1.1" + eslint-visitor-keys "^2.1.0" + semver "^6.3.0" + "@babel/generator@^7.18.2", "@babel/generator@^7.7.2": version "7.18.2" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d" @@ -338,7 +347,7 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.18.0", "@babel/parser@^7.7.0": +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.18.0": version "7.18.0" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.0.tgz#10a8d4e656bc01128d299a787aa006ce1a91e112" integrity sha512-AqDccGC+m5O/iUStSJy3DGRIUFu7WbY/CppZYwrEUB4N0tZlnI8CSTsgL7v5fHVFmUbRv2sd+yy27o8Ydt4MGg== @@ -1086,7 +1095,7 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": +"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.7.2": version "7.18.2" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.2.tgz#b77a52604b5cc836a9e1e08dca01cba67a12d2e8" integrity sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA== @@ -1102,7 +1111,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.12", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.12", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.18.2" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.2.tgz#191abfed79ebe6f4242f643a9a5cbaa36b10b091" integrity sha512-0On6B8A4/+mFUto5WERt3EEuG1NznDirvwca1O8UwXQHVY8g3R7OzYgxXdOfMwLO08UrpUD/2+3Bclyq+/C94Q== @@ -1566,6 +1575,27 @@ resolved "https://registry.yarnpkg.com/@node-redis/time-series/-/time-series-1.0.2.tgz#5dd3638374edd85ebe0aa6b0e87addc88fb9df69" integrity sha512-HGQ8YooJ8Mx7l28tD7XjtB3ImLEjlUxG1wC1PAjxu6hPJqjPshUZxAICzDqDjtIbhDTf48WXXUcx8TQJB1XTKA== +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + "@npmcli/move-file@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464" @@ -1776,11 +1806,21 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== +"@types/minimist@^1.2.0": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" + integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== + "@types/node@*": version "14.11.1" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.11.1.tgz#56af902ad157e763f9ba63d671c39cda3193c835" integrity sha512-oTQgnd0hblfLsJ6BvJzzSL+Inogp3lq9fGgqRkMB/ziKMgEUaFl801OncOzUmalfzt14N0oPHMK47ipl+wbTIw== +"@types/normalize-package-data@^2.4.0": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" + integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== + "@types/parse-json@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" @@ -2077,13 +2117,6 @@ acorn-globals@^6.0.0: acorn "^7.1.1" acorn-walk "^7.1.1" -acorn-jsx@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" - integrity sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s= - dependencies: - acorn "^3.0.4" - acorn-jsx@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" @@ -2099,16 +2132,6 @@ acorn-walk@^8.0.0: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.0.0.tgz#56ae4c0f434a45fff4a125e7ea95fa9c98f67a16" integrity sha512-oZRad/3SMOI/pxbbmqyurIx7jHw1wZDcR9G44L8pUVFEomX/0dH89SrM1KaDXuv1NpzAXz6Op/Xu/Qd5XXzdEA== -acorn@^3.0.4: - version "3.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" - integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= - -acorn@^5.5.0: - version "5.7.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" - integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== - acorn@^6.4.1: version "6.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" @@ -2149,24 +2172,11 @@ ajv-errors@^1.0.0: resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== -ajv-keywords@^1.0.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" - integrity sha1-MU3QpLM2j609/NxU7eYXG4htrzw= - ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^4.7.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" - integrity sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY= - dependencies: - co "^4.6.0" - json-stable-stringify "^1.0.1" - ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" @@ -2202,11 +2212,6 @@ ansi-colors@^4.1.1: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== -ansi-escapes@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" - integrity sha1-06ioOzGapneTZisT52HHkRQiMG4= - ansi-escapes@^4.2.1: version "4.3.1" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" @@ -2224,11 +2229,6 @@ ansi-regex@^2.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - ansi-regex@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" @@ -2371,6 +2371,11 @@ array-union@^1.0.1: dependencies: array-uniq "^1.0.1" +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" @@ -2400,6 +2405,11 @@ array.prototype.flatmap@^1.3.0: es-abstract "^1.19.2" es-shim-unscopables "^1.0.0" +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== + arrow-key-navigation@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/arrow-key-navigation/-/arrow-key-navigation-1.2.0.tgz#edefc5f8b4fc4e384e7c20ddecf81db7ffc970a9" @@ -2496,18 +2506,6 @@ axobject-query@^2.2.0: resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== -babel-eslint@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" - integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.7.0" - "@babel/traverse" "^7.7.0" - "@babel/types" "^7.7.0" - eslint-visitor-keys "^1.0.0" - resolve "^1.12.0" - babel-jest@^28.1.0: version "28.1.0" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.0.tgz#95a67f8e2e7c0042e7b3ad3951b8af41a533b5ea" @@ -2666,19 +2664,16 @@ babel-preset-jest@^28.0.2: babel-plugin-jest-hoist "^28.0.2" babel-preset-current-node-syntax "^1.0.0" -babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= +balanced-match@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-2.0.0.tgz#dc70f920d78db8b858535795867bf48f820633d9" + integrity sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA== + base64-js@^1.0.2: version "1.3.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" @@ -2820,7 +2815,7 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" -braces@^3.0.1, braces@~3.0.2: +braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -3059,13 +3054,6 @@ caller-callsite@^2.0.0: dependencies: callsites "^2.0.0" -caller-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" - integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8= - dependencies: - callsites "^0.2.0" - caller-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" @@ -3073,11 +3061,6 @@ caller-path@^2.0.0: dependencies: caller-callsite "^2.0.0" -callsites@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" - integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= - callsites@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" @@ -3088,6 +3071,15 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +camelcase-keys@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" + integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== + dependencies: + camelcase "^5.3.1" + map-obj "^4.0.0" + quick-lru "^4.0.1" + camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" @@ -3118,7 +3110,7 @@ caniuse-lite@^1.0.30001332: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001335.tgz#899254a0b70579e5a957c32dced79f0727c61f2a" integrity sha512-ddP1Tgm7z2iIxu6QTtbZUv6HJxSaV/PZeSrWFZtbY4JZ69tOeNhBCl3HyRQgeNZKE5AOn1kpV7fhljigy0Ty3w== -chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: +chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= @@ -3228,11 +3220,6 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" -circular-json@^0.3.1: - version "0.3.3" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" - integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== - cjs-module-lexer@^1.0.0: version "1.2.1" resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.1.tgz#2fd46d9906a126965aa541345c499aaa18e8cd73" @@ -3258,18 +3245,6 @@ clean-stack@^2.0.0: resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -cli-cursor@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" - integrity sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc= - dependencies: - restore-cursor "^1.0.1" - -cli-width@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" - integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== - cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -3297,6 +3272,13 @@ clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" +clone-regexp@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clone-regexp/-/clone-regexp-2.2.0.tgz#7d65e00885cd8796405c35a737e7a86b7429e36f" + integrity sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q== + dependencies: + is-regexp "^2.0.0" + cluster-key-slot@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz#30474b2a981fb12172695833052bc0d01336d10d" @@ -3316,11 +3298,6 @@ coa@^2.0.2: chalk "^2.4.1" q "^1.1.2" -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - collect-v8-coverage@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" @@ -3384,6 +3361,11 @@ color@^3.0.0: color-convert "^1.9.1" color-string "^1.5.2" +colord@^2.9.2: + version "2.9.2" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1" + integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ== + colorette@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" @@ -3396,7 +3378,7 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -commander@^2.20.0, commander@^2.8.1: +commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -3452,7 +3434,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.4.6, concat-stream@^1.5.0: +concat-stream@^1.5.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -3541,11 +3523,6 @@ core-js-pure@^3.0.0: resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA== -core-js@^2.4.0: - version "2.6.11" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" - integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== - core-js@^2.5.0: version "2.6.12" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" @@ -3577,7 +3554,7 @@ cosmiconfig@^6.0.0: path-type "^4.0.0" yaml "^1.7.2" -cosmiconfig@^7.0.0: +cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== @@ -3696,6 +3673,11 @@ css-font-weight-keywords@^1.0.0: resolved "https://registry.yarnpkg.com/css-font-weight-keywords/-/css-font-weight-keywords-1.0.0.tgz#9bc04671ac85bc724b574ef5d3ac96b0d604fd97" integrity sha1-m8BGcayFvHJLV07106yWsNYE/Zc= +css-functions-list@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/css-functions-list/-/css-functions-list-3.0.1.tgz#1460df7fb584d1692c30b105151dbb988c8094f9" + integrity sha512-PriDuifDt4u4rkDgnqRCLnjfMatufLmWNfQnGCq34xZwpY3oabwhB9SqRBmuvWUgndbemCFlKqg+nO7C2q0SBw== + css-global-keywords@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/css-global-keywords/-/css-global-keywords-1.0.1.tgz#72a9aea72796d019b1d2a3252de4e5aaa37e4a69" @@ -3913,14 +3895,14 @@ data-urls@^3.0.1: whatwg-mimetype "^3.0.0" whatwg-url "^11.0.0" -debug@2.6.9, debug@^2.1.1, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: +debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -3934,7 +3916,15 @@ debug@^3.1.1, debug@^3.2.6, debug@^3.2.7: dependencies: ms "^2.1.1" -decamelize@^1.2.0: +decamelize-keys@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" + integrity sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg== + dependencies: + decamelize "^1.1.0" + map-obj "^1.0.0" + +decamelize@^1.1.0, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -4111,6 +4101,13 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + dns-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" @@ -4131,14 +4128,6 @@ dns-txt@^2.0.2: dependencies: buffer-indexof "^1.0.0" -doctrine@^1.2.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" - integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= - dependencies: - esutils "^2.0.2" - isarray "^1.0.0" - doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" @@ -4438,7 +4427,7 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14: +es5-ext@^0.10.35, es5-ext@^0.10.50: version "0.10.53" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== @@ -4447,7 +4436,7 @@ es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14: es6-symbol "~3.1.3" next-tick "~1.0.0" -es6-iterator@^2.0.3, es6-iterator@~2.0.1, es6-iterator@~2.0.3: +es6-iterator@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= @@ -4456,38 +4445,7 @@ es6-iterator@^2.0.3, es6-iterator@~2.0.1, es6-iterator@~2.0.3: es5-ext "^0.10.35" es6-symbol "^3.1.1" -es6-map@^0.1.3: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" - integrity sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA= - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-set "~0.1.5" - es6-symbol "~3.1.1" - event-emitter "~0.3.5" - -es6-set@~0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" - integrity sha1-0rPsXU2ADO2BjbU40ol02wpzzLE= - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-symbol "3.1.1" - event-emitter "~0.3.5" - -es6-symbol@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" - integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc= - dependencies: - d "1" - es5-ext "~0.10.14" - -es6-symbol@^3.1.1, es6-symbol@^3.1.3, es6-symbol@~3.1.1, es6-symbol@~3.1.3: +es6-symbol@^3.1.1, es6-symbol@^3.1.3, es6-symbol@~3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== @@ -4495,16 +4453,6 @@ es6-symbol@^3.1.1, es6-symbol@^3.1.3, es6-symbol@~3.1.1, es6-symbol@~3.1.3: d "^1.0.1" ext "^1.1.2" -es6-weak-map@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" - integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== - dependencies: - d "1" - es5-ext "^0.10.46" - es6-iterator "^2.0.3" - es6-symbol "^3.1.1" - escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -4542,16 +4490,6 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" -escope@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" - integrity sha1-4Bl16BJ4GhY6ba392AOY3GTIicM= - dependencies: - es6-map "^0.1.3" - es6-weak-map "^2.0.1" - esrecurse "^4.1.0" - estraverse "^4.1.1" - eslint-import-resolver-node@^0.3.6: version "0.3.6" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" @@ -4653,7 +4591,7 @@ eslint-utils@^2.1.0: dependencies: eslint-visitor-keys "^1.1.0" -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== @@ -4663,44 +4601,10 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== -eslint@^2.7.0: - version "2.13.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-2.13.1.tgz#e4cc8fa0f009fb829aaae23855a29360be1f6c11" - integrity sha1-5MyPoPAJ+4KaquI4VaKTYL4fbBE= - dependencies: - chalk "^1.1.3" - concat-stream "^1.4.6" - debug "^2.1.1" - doctrine "^1.2.2" - es6-map "^0.1.3" - escope "^3.6.0" - espree "^3.1.6" - estraverse "^4.2.0" - esutils "^2.0.2" - file-entry-cache "^1.1.1" - glob "^7.0.3" - globals "^9.2.0" - ignore "^3.1.2" - imurmurhash "^0.1.4" - inquirer "^0.12.0" - is-my-json-valid "^2.10.0" - is-resolvable "^1.0.0" - js-yaml "^3.5.1" - json-stable-stringify "^1.0.0" - levn "^0.3.0" - lodash "^4.0.0" - mkdirp "^0.5.0" - optionator "^0.8.1" - path-is-absolute "^1.0.0" - path-is-inside "^1.0.1" - pluralize "^1.2.1" - progress "^1.1.8" - require-uncached "^1.0.2" - shelljs "^0.6.0" - strip-json-comments "~1.0.1" - table "^3.7.8" - text-table "~0.2.0" - user-home "^2.0.0" +eslint-visitor-keys@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== eslint@^7.32.0: version "7.32.0" @@ -4748,14 +4652,6 @@ eslint@^7.32.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" -espree@^3.1.6: - version "3.5.4" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" - integrity sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A== - dependencies: - acorn "^5.5.0" - acorn-jsx "^3.0.0" - espree@^7.3.0, espree@^7.3.1: version "7.3.1" resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" @@ -4784,7 +4680,7 @@ esrecurse@^4.1.0, esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1, estraverse@^4.2.0: +estraverse@^4.1.1: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== @@ -4804,14 +4700,6 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -event-emitter@~0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= - dependencies: - d "1" - es5-ext "~0.10.14" - eventemitter3@^4.0.0: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" @@ -4865,16 +4753,18 @@ execa@^5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" +execall@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/execall/-/execall-2.0.0.tgz#16a06b5fe5099df7d00be5d9c06eecded1663b45" + integrity sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow== + dependencies: + clone-regexp "^2.1.0" + exif-js@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/exif-js/-/exif-js-2.3.0.tgz#9d10819bf571f873813e7640241255ab9ce1a814" integrity sha1-nRCBm/Vx+HOBPnZAJBJVq5zhqBQ= -exit-hook@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" - integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g= - exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -4989,6 +4879,17 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-glob@^3.2.11, fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -4999,6 +4900,18 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +fastest-levenshtein@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" + integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + faye-websocket@^0.11.3: version "0.11.3" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" @@ -5018,22 +4931,6 @@ figgy-pudding@^3.5.1: resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== -figures@^1.3.5: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= - dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" - -file-entry-cache@^1.1.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-1.3.1.tgz#44c61ea607ae4be9c1402f41f44270cbfe334ff8" - integrity sha1-RMYepgeuS+nBQC9B9EJwy/4zT/g= - dependencies: - flat-cache "^1.2.1" - object-assign "^4.0.1" - file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -5144,16 +5041,6 @@ findup-sync@^3.0.0: micromatch "^3.0.4" resolve-dir "^1.0.1" -flat-cache@^1.2.1: - version "1.3.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f" - integrity sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg== - dependencies: - circular-json "^0.3.1" - graceful-fs "^4.1.2" - rimraf "~2.6.2" - write "^0.2.1" - flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -5224,22 +5111,6 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" -front-matter@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/front-matter/-/front-matter-2.1.2.tgz#f75983b9f2f413be658c93dfd7bd8ce4078f5cdb" - integrity sha1-91mDufL0E75ljJPf172M5AePXNs= - dependencies: - js-yaml "^3.4.6" - -fs-extra@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" - integrity sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE= - dependencies: - graceful-fs "^4.1.2" - jsonfile "^3.0.0" - universalify "^0.1.0" - fs-extra@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" @@ -5328,20 +5199,6 @@ gauge@^4.0.3: strip-ansi "^6.0.1" wide-align "^1.1.5" -generate-function@^2.0.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f" - integrity sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ== - dependencies: - is-property "^1.0.2" - -generate-object-property@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" - integrity sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA= - dependencies: - is-property "^1.0.0" - generic-pool@3.8.2: version "3.8.2" resolved "https://registry.yarnpkg.com/generic-pool/-/generic-pool-3.8.2.tgz#aab4f280adb522fdfbdc5e5b64d718d3683f04e9" @@ -5371,6 +5228,11 @@ get-package-type@^0.1.0: resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== +get-stdin@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" + integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== + get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -5411,7 +5273,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" -glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: +glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== @@ -5434,18 +5296,6 @@ glob@^8.0.3: minimatch "^5.0.1" once "^1.3.0" -glob@~7.1.1: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - global-modules@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" @@ -5494,10 +5344,17 @@ globals@^13.6.0, globals@^13.9.0: dependencies: type-fest "^0.20.2" -globals@^9.2.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" globby@^6.1.0: version "6.1.0" @@ -5510,21 +5367,10 @@ globby@^6.1.0: pify "^2.0.0" pinkie-promise "^2.0.0" -globule@^1.0.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/globule/-/globule-1.3.2.tgz#d8bdd9e9e4eef8f96e245999a5dee7eb5d8529c4" - integrity sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA== - dependencies: - glob "~7.1.1" - lodash "~4.17.10" - minimatch "~3.0.2" - -gonzales-pe-sl@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/gonzales-pe-sl/-/gonzales-pe-sl-4.2.3.tgz#6a868bc380645f141feeb042c6f97fcc71b59fe6" - integrity sha1-aoaLw4BkXxQf7rBCxvl/zHG1n+Y= - dependencies: - minimist "1.1.x" +globjoin@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" + integrity sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg== graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.9: version "4.2.9" @@ -5543,6 +5389,11 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== +hard-rejection@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" + integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== + has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -5715,6 +5566,18 @@ homedir-polyfill@^1.0.1: dependencies: parse-passwd "^1.0.0" +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +hosted-git-info@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== + dependencies: + lru-cache "^6.0.0" + hpack.js@^2.1.6: version "2.1.6" resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" @@ -5752,6 +5615,11 @@ html-escaper@^2.0.0: resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== +html-tags@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.2.0.tgz#dbb3518d20b726524e4dd43de397eb0a95726961" + integrity sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg== + http-deceiver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" @@ -5873,16 +5741,16 @@ iferr@^0.1.5: resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= -ignore@^3.1.2: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== - ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== +ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + immutable@^4.0.0, immutable@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef" @@ -5926,6 +5794,11 @@ import-from@^2.1.0: dependencies: resolve-from "^3.0.0" +import-lazy@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" + integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== + import-local@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" @@ -6000,25 +5873,6 @@ ini@^1.3.4, ini@^1.3.5: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ== -inquirer@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" - integrity sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34= - dependencies: - ansi-escapes "^1.1.0" - ansi-regex "^2.0.0" - chalk "^1.0.0" - cli-cursor "^1.0.1" - cli-width "^2.0.0" - figures "^1.3.5" - lodash "^4.3.0" - readline2 "^1.0.1" - run-async "^0.1.0" - rx-lite "^3.1.2" - string-width "^1.0.1" - strip-ansi "^3.0.0" - through "^2.3.6" - internal-ip@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" @@ -6203,6 +6057,13 @@ is-core-module@^2.2.0, is-core-module@^2.8.1: dependencies: has "^1.0.3" +is-core-module@^2.5.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" + integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -6267,13 +6128,6 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -6303,22 +6157,6 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-my-ip-valid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824" - integrity sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ== - -is-my-json-valid@^2.10.0: - version "2.20.5" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.20.5.tgz#5eca6a8232a687f68869b7361be1612e7512e5df" - integrity sha512-VTPuvvGQtxvCeghwspQu1rBgjYUT6FGxPlvFKbYuFtgc4ADsX3U5ihZOYN0qyU6u+d4X9xXb0IT5O6QpXKt87A== - dependencies: - generate-function "^2.0.0" - generate-object-property "^1.1.0" - is-my-ip-valid "^1.0.0" - jsonpointer "^4.0.0" - xtend "^4.0.0" - is-nan@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" @@ -6373,6 +6211,11 @@ is-path-inside@^2.1.0: dependencies: path-is-inside "^1.0.2" +is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== + is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -6380,16 +6223,16 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" +is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== + is-potential-custom-element-name@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== -is-property@^1.0.0, is-property@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" - integrity sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ= - is-regex@^1.0.4: version "1.1.0" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.0.tgz#ece38e389e490df0dc21caea2bd596f987f767ff" @@ -6405,6 +6248,11 @@ is-regex@^1.1.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-regexp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-2.1.0.tgz#cd734a56864e23b956bf4e7c66c396a4c0b22c2d" + integrity sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA== + is-resolvable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" @@ -6949,7 +6797,7 @@ js-base64@^2.1.9: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.13.1, js-yaml@^3.4.6, js-yaml@^3.5.1, js-yaml@^3.5.4: +js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -7032,7 +6880,7 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: +json-stable-stringify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= @@ -7061,13 +6909,6 @@ json5@^2.1.2, json5@^2.2.1: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== -jsonfile@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66" - integrity sha1-pezG9l9T9mLEQVx2daAzHQmS7GY= - optionalDependencies: - graceful-fs "^4.1.6" - jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -7080,11 +6921,6 @@ jsonify@~0.0.0: resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= -jsonpointer@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.1.0.tgz#501fb89986a2389765ba09e6053299ceb4f2c2cc" - integrity sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg== - "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b" @@ -7123,10 +6959,10 @@ knot.js@^1.1.5: resolved "https://registry.yarnpkg.com/knot.js/-/knot.js-1.1.5.tgz#28e72522f703f50fe98812fde224dd72728fef5d" integrity sha1-KOclIvcD9Q/piBL94iTdcnKP710= -known-css-properties@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.3.0.tgz#a3d135bbfc60ee8c6eacf2f7e7e6f2d4755e49a4" - integrity sha512-QMQcnKAiQccfQTqtBh/qwquGZ2XK/DXND1jrcN9M8gMMy99Gwla7GQjndVUsEqIaRyP6bsFRuhwRj5poafBGJQ== +known-css-properties@^0.25.0: + version "0.25.0" + resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.25.0.tgz#6ebc4d4b412f602e5cfbeb4086bd544e34c0a776" + integrity sha512-b0/9J1O9Jcyik1GC6KC42hJ41jKwdO/Mq8Mdo5sYN+IuRTXs2YFHZC3kZSx6ueusqa95x3wLYe/ytKjbAfGixA== language-subtag-registry@~0.3.2: version "0.3.20" @@ -7145,14 +6981,6 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -7161,6 +6989,14 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" @@ -7229,11 +7065,6 @@ lockfile@^1.0: dependencies: signal-exit "^3.0.2" -lodash.capitalize@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz#f826c9b4e2a8511d84e3aca29db05e1a4f3b72a9" - integrity sha1-+CbJtOKoUR2E46yinbBeGk87cqk= - lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" @@ -7274,11 +7105,6 @@ lodash.isobject@^3.0.2: resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-3.0.2.tgz#3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d" integrity sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0= -lodash.kebabcase@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" - integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY= - lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -7299,7 +7125,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.0.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.3.0, lodash@~4.17.10: +lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -7362,6 +7188,16 @@ map-cache@^0.2.2: resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= +map-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== + +map-obj@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" + integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== + map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" @@ -7379,6 +7215,11 @@ marky@^1.2.4: resolved "https://registry.yarnpkg.com/marky/-/marky-1.2.4.tgz#d02bb4c08be2366687c778ecd2a328971ce23d7f" integrity sha512-zd2/GiSn6U3/jeFVZ0J9CA1LzQ8RfIVvXkb/U0swFHF/zT+dVohTAWjmo2DcIuofmIIIROlwTbd+shSeXmxr0w== +mathml-tag-names@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" + integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== + md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -7424,6 +7265,24 @@ memory-fs@^0.5.0: errno "^0.1.3" readable-stream "^2.0.1" +meow@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-9.0.0.tgz#cd9510bc5cac9dee7d03c73ee1f9ad959f4ea364" + integrity sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ== + dependencies: + "@types/minimist" "^1.2.0" + camelcase-keys "^6.2.2" + decamelize "^1.2.0" + decamelize-keys "^1.1.0" + hard-rejection "^2.1.0" + minimist-options "4.1.0" + normalize-package-data "^3.0.0" + read-pkg-up "^7.0.1" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.18.0" + yargs-parser "^20.2.3" + merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -7434,10 +7293,10 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" - integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== methods@~1.1.2: version "1.1.2" @@ -7471,6 +7330,14 @@ micromatch@^4.0.4: braces "^3.0.1" picomatch "^2.2.3" +micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -7573,17 +7440,14 @@ minimatch@^5.0.1: dependencies: brace-expansion "^2.0.1" -minimatch@~3.0.2: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== +minimist-options@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" + integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== dependencies: - brace-expansion "^1.1.7" - -minimist@1.1.x: - version "1.1.3" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8" - integrity sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag= + arrify "^1.0.1" + is-plain-obj "^1.1.0" + kind-of "^6.0.3" minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" @@ -7655,7 +7519,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: +mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -7712,11 +7576,6 @@ multicast-dns@^6.0.1: dns-packet "^1.3.1" thunky "^1.0.2" -mute-stream@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" - integrity sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA= - nan@^2.12.1: version "2.14.1" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" @@ -7727,6 +7586,11 @@ nanoid@^3.1.23: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c" integrity sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA== +nanoid@^3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -7830,6 +7694,26 @@ node-releases@^2.0.3: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.4.tgz#f38252370c43854dc48aa431c766c6c398f40476" integrity sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ== +normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-package-data@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" + integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== + dependencies: + hosted-git-info "^4.0.1" + is-core-module "^2.5.0" + semver "^7.3.4" + validate-npm-package-license "^3.0.1" + normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" @@ -7888,17 +7772,12 @@ num2fraction@^1.2.2: resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - nwsapi@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -8052,11 +7931,6 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" - integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k= - onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" @@ -8117,11 +7991,6 @@ os-browserify@^0.3.0: resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -8328,7 +8197,7 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@^1.0.1, path-is-inside@^1.0.2: +path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= @@ -8457,6 +8326,11 @@ picomatch@^2.2.3: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -8498,11 +8372,6 @@ pkg-dir@^4.1.0, pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -pluralize@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" - integrity sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU= - portfinder@^1.0.26: version "1.0.28" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" @@ -8591,6 +8460,11 @@ postcss-loader@^3.0.0: postcss-load-config "^2.0.0" schema-utils "^1.0.0" +postcss-media-query-parser@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244" + integrity sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ= + postcss-merge-longhand@^4.0.11: version "4.0.11" resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" @@ -8800,6 +8674,21 @@ postcss-reduce-transforms@^4.0.2: postcss "^7.0.0" postcss-value-parser "^3.0.0" +postcss-resolve-nested-selector@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#29ccbc7c37dedfac304e9fff0bf1596b3f6a0e4e" + integrity sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4= + +postcss-safe-parser@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz#bb4c29894171a94bc5c996b9a30317ef402adaa1" + integrity sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ== + +postcss-scss@^4.0.2, postcss-scss@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-4.0.4.tgz#aa8f60e19ee18259bc193db9e4b96edfce3f3b1f" + integrity sha512-aBBbVyzA8b3hUL0MGrpydxxXKXFZc5Eqva0Q3V9qsBOLEMsjb6w49WfpsoWzpEgcqJGW4t7Rio8WXVU9Gd8vWg== + postcss-selector-parser@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" @@ -8809,6 +8698,14 @@ postcss-selector-parser@^3.0.0: indexes-of "^1.0.1" uniq "^1.0.1" +postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.6: + version "6.0.10" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" + integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + postcss-selector-parser@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" @@ -8856,6 +8753,11 @@ postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== +postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + postcss@^5.0.16: version "5.2.18" resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" @@ -8884,6 +8786,15 @@ postcss@^8.2.15: nanoid "^3.1.23" source-map-js "^0.6.2" +postcss@^8.4.14: + version "8.4.14" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" + integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + postgres-array@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-2.0.0.tgz#48f8fce054fbc69671999329b8834b772652d82e" @@ -8961,11 +8872,6 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= -progress@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" - integrity sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74= - progress@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" @@ -9107,6 +9013,16 @@ querystringify@^2.1.1: resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quick-lru@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" + integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== + quote@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/quote/-/quote-0.4.0.tgz#10839217f6c1362b89194044d29b233fd7f32f01" @@ -9435,6 +9351,25 @@ react@^16.14.0: object-assign "^4.1.1" prop-types "^15.6.2" +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" @@ -9473,15 +9408,6 @@ readdirp@~3.5.0: dependencies: picomatch "^2.2.1" -readline2@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" - integrity sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - mute-stream "0.0.5" - redent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" @@ -9555,11 +9481,6 @@ regenerate@^1.4.2: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - regenerator-runtime@^0.12.0: version "0.12.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" @@ -9700,14 +9621,6 @@ require-package-name@^2.0.1: resolved "https://registry.yarnpkg.com/require-package-name/-/require-package-name-2.0.1.tgz#c11e97276b65b8e2923f75dabf5fb2ef0c3841b9" integrity sha1-wR6XJ2tluOKSP3Xav1+y7ww4Qbk= -require-uncached@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" - integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM= - dependencies: - caller-path "^0.1.0" - resolve-from "^1.0.0" - requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" @@ -9740,11 +9653,6 @@ resolve-dir@^1.0.0, resolve-dir@^1.0.1: expand-tilde "^2.0.0" global-modules "^1.0.0" -resolve-from@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" - integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY= - resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" @@ -9780,7 +9688,7 @@ resolve.exports@^1.1.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== -resolve@^1.12.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0: +resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0: version "1.22.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== @@ -9797,14 +9705,6 @@ resolve@^2.0.0-next.3: is-core-module "^2.2.0" path-parse "^1.0.6" -restore-cursor@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" - integrity sha1-NGYfRohjJ/7SmRR5FSJS35LapUE= - dependencies: - exit-hook "^1.0.0" - onetime "^1.0.0" - ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -9815,6 +9715,11 @@ retry@^0.12.0: resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + rgb-regex@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" @@ -9839,13 +9744,6 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" -rimraf@~2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -9854,12 +9752,12 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -run-async@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" - integrity sha1-yK1KXhEGYeQCp9IbUw4AnyX444k= +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: - once "^1.3.0" + queue-microtask "^1.2.2" run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" @@ -9868,11 +9766,6 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" -rx-lite@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" - integrity sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI= - safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -9895,26 +9788,6 @@ safe-regex@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sass-lint@^1.13.1: - version "1.13.1" - resolved "https://registry.yarnpkg.com/sass-lint/-/sass-lint-1.13.1.tgz#5fd2b2792e9215272335eb0f0dc607f61e8acc8f" - integrity sha512-DSyah8/MyjzW2BWYmQWekYEKir44BpLqrCFsgs9iaWiVTcwZfwXHF586hh3D1n+/9ihUNMfd8iHAyb9KkGgs7Q== - dependencies: - commander "^2.8.1" - eslint "^2.7.0" - front-matter "2.1.2" - fs-extra "^3.0.1" - glob "^7.0.0" - globule "^1.0.0" - gonzales-pe-sl "^4.2.3" - js-yaml "^3.5.4" - known-css-properties "^0.3.0" - lodash.capitalize "^4.1.0" - lodash.kebabcase "^4.0.0" - merge "^1.2.0" - path-is-absolute "^1.0.0" - util "^0.10.3" - sass-loader@^10.2.0: version "10.2.0" resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.2.0.tgz#3d64c1590f911013b3fa48a0b22a83d5e1494716" @@ -10002,16 +9875,16 @@ selfsigned@^1.10.8: dependencies: node-forge "^0.10.0" +"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + semver@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@^5.5.0, semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" @@ -10024,6 +9897,13 @@ semver@^7.2.1, semver@^7.3.2, semver@^7.3.5: dependencies: lru-cache "^6.0.0" +semver@^7.3.4: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + dependencies: + lru-cache "^6.0.0" + send@0.18.0: version "0.18.0" resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" @@ -10152,11 +10032,6 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shelljs@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.6.1.tgz#ec6211bed1920442088fe0f70b2837232ed2c8a8" - integrity sha1-7GIRvtGSBEIIj+D3Cyg3Iy7SyKg= - side-channel@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" @@ -10207,11 +10082,6 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slice-ansi@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" - integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= - slice-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" @@ -10287,6 +10157,11 @@ source-map-js@^0.6.2: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -10347,6 +10222,32 @@ source-map@~0.7.2: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.11" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95" + integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== + spdy-transport@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" @@ -10370,6 +10271,11 @@ spdy@^4.0.2: select-hose "^2.0.0" spdy-transport "^3.0.0" +specificity@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/specificity/-/specificity-0.4.1.tgz#aab5e645012db08ba182e151165738d00887b019" + integrity sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg== + split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" @@ -10502,15 +10408,6 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" @@ -10520,14 +10417,6 @@ string-width@^1.0.1: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -10597,13 +10486,6 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" @@ -10662,10 +10544,10 @@ strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -strip-json-comments@~1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" - integrity sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E= +style-search@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902" + integrity sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI= stylehacks@^4.0.0: version "4.0.3" @@ -10676,6 +10558,92 @@ stylehacks@^4.0.0: postcss "^7.0.0" postcss-selector-parser "^3.0.0" +stylelint-config-recommended-scss@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-6.0.0.tgz#02baeace2b7f30f80369b6ee2da77aae5a01bff6" + integrity sha512-6QOe2/OzXV2AP5FE12A7+qtKdZik7Saf42SMMl84ksVBBPpTdrV+9HaCbPYiRMiwELY9hXCVdH4wlJ+YJb5eig== + dependencies: + postcss-scss "^4.0.2" + stylelint-config-recommended "^7.0.0" + stylelint-scss "^4.0.0" + +stylelint-config-recommended@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-7.0.0.tgz#7497372ae83ab7a6fffc18d7d7b424c6480ae15e" + integrity sha512-yGn84Bf/q41J4luis1AZ95gj0EQwRX8lWmGmBwkwBNSkpGSpl66XcPTulxGa/Z91aPoNGuIGBmFkcM1MejMo9Q== + +stylelint-config-standard-scss@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/stylelint-config-standard-scss/-/stylelint-config-standard-scss-4.0.0.tgz#9c1dc99eea73394bf22ad15648a5b1d9b74ff649" + integrity sha512-xizu8PTEyB6zYXBiVg6VtvUYn9m57x+6ZtaOdaxsfpbe5eagLPGNlbYnKfm/CfN69ArUpnwR6LjgsTHzlGbtXQ== + dependencies: + stylelint-config-recommended-scss "^6.0.0" + stylelint-config-standard "^25.0.0" + +stylelint-config-standard@^25.0.0: + version "25.0.0" + resolved "https://registry.yarnpkg.com/stylelint-config-standard/-/stylelint-config-standard-25.0.0.tgz#2c916984e6655d40d6e8748b19baa8603b680bff" + integrity sha512-21HnP3VSpaT1wFjFvv9VjvOGDtAviv47uTp3uFmzcN+3Lt+RYRv6oAplLaV51Kf792JSxJ6svCJh/G18E9VnCA== + dependencies: + stylelint-config-recommended "^7.0.0" + +stylelint-scss@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/stylelint-scss/-/stylelint-scss-4.2.0.tgz#e25fd390ee38a7e89fcfaec2a8f9dce2ec6ddee8" + integrity sha512-HHHMVKJJ5RM9pPIbgJ/XA67h9H0407G68Rm69H4fzFbFkyDMcTV1Byep3qdze5+fJ3c0U7mJrbj6S0Fg072uZA== + dependencies: + lodash "^4.17.21" + postcss-media-query-parser "^0.2.3" + postcss-resolve-nested-selector "^0.1.1" + postcss-selector-parser "^6.0.6" + postcss-value-parser "^4.1.0" + +stylelint@^14.8.5: + version "14.8.5" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.8.5.tgz#0fcbf5b6821283b5a249dde36d70f1158da0a2a3" + integrity sha512-e3t4H/hlWlspkcNUrkhf44RU3OpPTA7uBOoREGBzSwdEF+2g/+gbZq7WEpMP7BpopcSe/uLaTvDuL+URL7cdnQ== + dependencies: + balanced-match "^2.0.0" + colord "^2.9.2" + cosmiconfig "^7.0.1" + css-functions-list "^3.0.1" + debug "^4.3.4" + execall "^2.0.0" + fast-glob "^3.2.11" + fastest-levenshtein "^1.0.12" + file-entry-cache "^6.0.1" + get-stdin "^8.0.0" + global-modules "^2.0.0" + globby "^11.1.0" + globjoin "^0.1.4" + html-tags "^3.2.0" + ignore "^5.2.0" + import-lazy "^4.0.0" + imurmurhash "^0.1.4" + is-plain-object "^5.0.0" + known-css-properties "^0.25.0" + mathml-tag-names "^2.1.3" + meow "^9.0.0" + micromatch "^4.0.5" + normalize-path "^3.0.0" + picocolors "^1.0.0" + postcss "^8.4.14" + postcss-media-query-parser "^0.2.3" + postcss-resolve-nested-selector "^0.1.1" + postcss-safe-parser "^6.0.0" + postcss-selector-parser "^6.0.10" + postcss-value-parser "^4.2.0" + resolve-from "^5.0.0" + specificity "^0.4.1" + string-width "^4.2.3" + strip-ansi "^6.0.1" + style-search "^0.1.0" + supports-hyperlinks "^2.2.0" + svg-tags "^1.0.0" + table "^6.8.0" + v8-compile-cache "^2.3.0" + write-file-atomic "^4.0.1" + stylis@4.0.13: version "4.0.13" resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.0.13.tgz#f5db332e376d13cc84ecfe5dace9a2a51d954c91" @@ -10734,11 +10702,24 @@ supports-hyperlinks@^2.0.0: has-flag "^4.0.0" supports-color "^7.0.0" +supports-hyperlinks@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" + integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +svg-tags@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" + integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q= + svgo@^1.0.0: version "1.3.2" resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" @@ -10763,18 +10744,6 @@ symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -table@^3.7.8: - version "3.8.3" - resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" - integrity sha1-K7xULw/amGGnVdOUf+/Ys/UThV8= - dependencies: - ajv "^4.7.0" - ajv-keywords "^1.0.0" - chalk "^1.1.1" - lodash "^4.0.0" - slice-ansi "0.0.4" - string-width "^2.0.0" - table@^6.0.9: version "6.7.1" resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" @@ -10787,6 +10756,17 @@ table@^6.0.9: string-width "^4.2.0" strip-ansi "^6.0.0" +table@^6.8.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca" + integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA== + dependencies: + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + tapable@^1.0, tapable@^1.0.0, tapable@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" @@ -10896,7 +10876,7 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" -text-table@^0.2.0, text-table@~0.2.0: +text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= @@ -10921,11 +10901,6 @@ through2@^2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" -through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - thunky@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" @@ -11036,6 +11011,11 @@ tr46@~0.0.3: resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= +trim-newlines@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" + integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== + tsconfig-paths@^3.14.1: version "3.14.1" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" @@ -11095,11 +11075,26 @@ type-fest@^0.11.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== +type-fest@^0.18.0: + version "0.18.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" + integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== + type-fest@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -11291,13 +11286,6 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -user-home@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" - integrity sha1-nHC/2Babwdy/SGBODwS4tJzenp8= - dependencies: - os-homedir "^1.0.0" - utf-8-validate@^5.0.9: version "5.0.9" resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.9.tgz#ba16a822fbeedff1a58918f2a6a6b36387493ea3" @@ -11327,13 +11315,6 @@ util@0.10.3: dependencies: inherits "2.0.1" -util@^0.10.3: - version "0.10.4" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" - integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== - dependencies: - inherits "2.0.3" - util@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" @@ -11361,6 +11342,11 @@ v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.1: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== +v8-compile-cache@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + v8-to-istanbul@^9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.0.tgz#be0dae58719fc53cb97e5c7ac1d7e6d4f5b19511" @@ -11370,6 +11356,14 @@ v8-to-istanbul@^9.0.0: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + value-equal@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-0.4.0.tgz#c5bdd2f54ee093c04839d71ce2e4758a6890abc7" @@ -11764,13 +11758,6 @@ write-file-atomic@^4.0.1: imurmurhash "^0.1.4" signal-exit "^3.0.7" -write@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" - integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= - dependencies: - mkdirp "^0.5.1" - ws@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" @@ -11836,6 +11823,11 @@ yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^20.2.3: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + yargs-parser@^21.0.0: version "21.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.0.tgz#a485d3966be4317426dd56bdb6a30131b281dc55" From ae4f068a845d710c2e60ecf8b49144892505e773 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 1 Jun 2022 19:22:55 +0200 Subject: [PATCH 132/652] Fix CAS_DISPLAY_NAME, SAML_DISPLAY_NAME and OIDC_DISPLAY_NAME being ignored (#18568) --- app/helpers/application_helper.rb | 3 ++- config/initializers/omniauth.rb | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index bba7070d0..705cc2e3f 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -83,7 +83,8 @@ module ApplicationHelper end def provider_sign_in_link(provider) - link_to I18n.t("auth.providers.#{provider}", default: provider.to_s.chomp('_oauth2').capitalize), omniauth_authorize_path(:user, provider), class: "button button-#{provider}", method: :post + label = Devise.omniauth_configs[provider]&.strategy&.display_name.presence || I18n.t("auth.providers.#{provider}", default: provider.to_s.chomp('_oauth2').capitalize) + link_to label, omniauth_authorize_path(:user, provider), class: "button button-#{provider}", method: :post end def open_deletion? diff --git a/config/initializers/omniauth.rb b/config/initializers/omniauth.rb index 51241e546..f01670146 100644 --- a/config/initializers/omniauth.rb +++ b/config/initializers/omniauth.rb @@ -9,7 +9,7 @@ Devise.setup do |config| # CAS strategy if ENV['CAS_ENABLED'] == 'true' cas_options = {} - cas_options[:display_name] = ENV['CAS_DISPLAY_NAME'] || 'cas' + cas_options[:display_name] = ENV['CAS_DISPLAY_NAME'] cas_options[:url] = ENV['CAS_URL'] if ENV['CAS_URL'] cas_options[:host] = ENV['CAS_HOST'] if ENV['CAS_HOST'] cas_options[:port] = ENV['CAS_PORT'] if ENV['CAS_PORT'] @@ -38,7 +38,7 @@ Devise.setup do |config| # SAML strategy if ENV['SAML_ENABLED'] == 'true' saml_options = {} - saml_options[:display_name] = ENV['SAML_DISPLAY_NAME'] || 'saml' + saml_options[:display_name] = ENV['SAML_DISPLAY_NAME'] saml_options[:assertion_consumer_service_url] = ENV['SAML_ACS_URL'] if ENV['SAML_ACS_URL'] saml_options[:issuer] = ENV['SAML_ISSUER'] if ENV['SAML_ISSUER'] saml_options[:idp_sso_target_url] = ENV['SAML_IDP_SSO_TARGET_URL'] if ENV['SAML_IDP_SSO_TARGET_URL'] @@ -70,7 +70,7 @@ Devise.setup do |config| # OpenID Connect Strategy if ENV['OIDC_ENABLED'] == 'true' oidc_options = {} - oidc_options[:display_name] = ENV['OIDC_DISPLAY_NAME'] || 'openid_connect' #OPTIONAL + oidc_options[:display_name] = ENV['OIDC_DISPLAY_NAME'] #OPTIONAL oidc_options[:issuer] = ENV['OIDC_ISSUER'] if ENV['OIDC_ISSUER'] #NEED oidc_options[:discovery] = ENV['OIDC_DISCOVERY'] == 'true' if ENV['OIDC_DISCOVERY'] #OPTIONAL (default: false) oidc_options[:client_auth_method] = ENV['OIDC_CLIENT_AUTH_METHOD'] if ENV['OIDC_CLIENT_AUTH_METHOD'] #OPTIONAL (default: basic) From 9d4861b4988e07636aa9c02f0732e8228791e9df Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 1 Jun 2022 19:23:31 +0200 Subject: [PATCH 133/652] Remove dependency on running Redis server for db:setup (#18560) --- app/models/account.rb | 2 +- lib/paperclip/attachment_extensions.rb | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/models/account.rb b/app/models/account.rb index bd94142c4..730ef6293 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -88,7 +88,7 @@ class Account < ApplicationRecord # Local user validations validates :username, format: { with: /\A[a-z0-9_]+\z/i }, length: { maximum: 30 }, if: -> { local? && will_save_change_to_username? && actor_type != 'Application' } - validates_with UnreservedUsernameValidator, if: -> { local? && will_save_change_to_username? } + validates_with UnreservedUsernameValidator, if: -> { local? && will_save_change_to_username? && actor_type != 'Application' } validates :display_name, length: { maximum: 30 }, if: -> { local? && will_save_change_to_display_name? } validates :note, note_length: { maximum: 500 }, if: -> { local? && will_save_change_to_note? } validates :fields, length: { maximum: 4 }, if: -> { local? && will_save_change_to_fields? } diff --git a/lib/paperclip/attachment_extensions.rb b/lib/paperclip/attachment_extensions.rb index 786f558e9..d66a17623 100644 --- a/lib/paperclip/attachment_extensions.rb +++ b/lib/paperclip/attachment_extensions.rb @@ -81,6 +81,9 @@ module Paperclip # to respond or don't respond at all and as such minimize the # impact of object storage outages on application throughput def save + # Don't go through Stoplight if we don't have anything object-storage-oriented to do + return super if @queued_for_delete.empty? && @queued_for_write.empty? && !dirty? + Stoplight('object-storage') { super }.with_threshold(STOPLIGHT_THRESHOLD).with_cool_off_time(STOPLIGHT_COOLDOWN).with_error_handler do |error, handle| if error.is_a?(Seahorse::Client::NetworkingError) handle.call(error) From 80fc165bb59082f0032fddb60fefc7e085cd70c5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Jun 2022 22:00:22 +0200 Subject: [PATCH 134/652] Bump eventsource from 1.0.7 to 1.1.1 (#18584) Bumps [eventsource](https://github.com/EventSource/eventsource) from 1.0.7 to 1.1.1. - [Release notes](https://github.com/EventSource/eventsource/releases) - [Changelog](https://github.com/EventSource/eventsource/blob/master/HISTORY.md) - [Commits](https://github.com/EventSource/eventsource/compare/v1.0.7...v1.1.1) --- updated-dependencies: - dependency-name: eventsource dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 17134d95e..2520237bf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4711,9 +4711,9 @@ events@^3.0.0: integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== eventsource@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" - integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== + version "1.1.1" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.1.tgz#4544a35a57d7120fba4fa4c86cb4023b2c09df2f" + integrity sha512-qV5ZC0h7jYIAOhArFJgSfdyz6rALJyb270714o7ZtNnw2WSJ+eexhKtE0O8LYPRsHZHf2osHKZBxGPvm3kPkCA== dependencies: original "^1.0.0" From 1485bd9b4bf407d1051a6b160d2530c9ca93f10b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Jun 2022 22:00:50 +0200 Subject: [PATCH 135/652] Bump minimist from 1.2.5 to 1.2.6 (#18590) Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6. - [Release notes](https://github.com/substack/minimist/releases) - [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6) --- updated-dependencies: - dependency-name: minimist dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/yarn.lock b/yarn.lock index 2520237bf..55bfb3a6c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7449,12 +7449,7 @@ minimist-options@4.1.0: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -minimist@^1.2.6: +minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== From 2c9c2d2b9568e02e0c1b397e5d5885a7dcf3840a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 3 Jun 2022 12:50:53 +0900 Subject: [PATCH 136/652] Bump rubocop from 1.29.1 to 1.30.0 (#18577) Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.29.1 to 1.30.0. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.29.1...v1.30.0) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index 853984c84..7ba831b71 100644 --- a/Gemfile +++ b/Gemfile @@ -132,7 +132,7 @@ group :development do gem 'letter_opener', '~> 1.8' gem 'letter_opener_web', '~> 2.0' gem 'memory_profiler' - gem 'rubocop', '~> 1.29', require: false + gem 'rubocop', '~> 1.30', require: false gem 'rubocop-rails', '~> 2.14', require: false gem 'brakeman', '~> 5.2', require: false gem 'bundler-audit', '~> 0.9', require: false diff --git a/Gemfile.lock b/Gemfile.lock index 9568ccb34..e1817ccf1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -533,7 +533,7 @@ GEM redis (4.5.1) redis-namespace (1.8.2) redis (>= 3.0.4) - regexp_parser (2.4.0) + regexp_parser (2.5.0) request_store (1.5.1) rack (>= 1.4) responders (3.0.1) @@ -568,13 +568,13 @@ GEM rspec-support (3.11.0) rspec_junit_formatter (0.5.1) rspec-core (>= 2, < 4, != 2.12.0) - rubocop (1.29.1) + rubocop (1.30.0) parallel (~> 1.10) parser (>= 3.1.0.0) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.8, < 3.0) rexml (>= 3.2.5, < 4.0) - rubocop-ast (>= 1.17.0, < 2.0) + rubocop-ast (>= 1.18.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 1.4.0, < 3.0) rubocop-ast (1.18.0) @@ -820,7 +820,7 @@ DEPENDENCIES rspec-rails (~> 5.1) rspec-sidekiq (~> 3.1) rspec_junit_formatter (~> 0.5) - rubocop (~> 1.29) + rubocop (~> 1.30) rubocop-rails (~> 2.14) ruby-progressbar (~> 1.11) sanitize (~> 6.0) From 593228fe17dc44805877a49765f374ec52b96d65 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 3 Jun 2022 12:51:24 +0900 Subject: [PATCH 137/652] Bump ws from 8.6.0 to 8.7.0 (#18573) Bumps [ws](https://github.com/websockets/ws) from 8.6.0 to 8.7.0. - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/8.6.0...8.7.0) --- updated-dependencies: - dependency-name: ws dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index e2c03e178..b92123549 100644 --- a/package.json +++ b/package.json @@ -134,7 +134,7 @@ "webpack-cli": "^3.3.12", "webpack-merge": "^5.8.0", "wicg-inert": "^3.1.1", - "ws": "^8.6.0" + "ws": "^8.7.0" }, "devDependencies": { "@babel/eslint-parser": "^7.18.2", diff --git a/yarn.lock b/yarn.lock index 55bfb3a6c..8bb49bc7b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11765,10 +11765,10 @@ ws@^7.3.1: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== -ws@^8.2.3, ws@^8.6.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.6.0.tgz#e5e9f1d9e7ff88083d0c0dd8281ea662a42c9c23" - integrity sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw== +ws@^8.2.3, ws@^8.7.0: + version "8.7.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.7.0.tgz#eaf9d874b433aa00c0e0d8752532444875db3957" + integrity sha512-c2gsP0PRwcLFzUiA8Mkr37/MI7ilIlHQxaEAtd0uNMbVMoy8puJyafRlm0bV9MbGSabUPeLrRRaqIBcFcA2Pqg== xml-name-validator@^4.0.0: version "4.0.0" From 0c23a2fe0b22602de4aebb0de1bf5fc9531eb015 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 3 Jun 2022 12:53:13 +0900 Subject: [PATCH 138/652] Bump simple-navigation from 4.3.0 to 4.4.0 (#18576) Bumps [simple-navigation](https://github.com/codeplant/simple-navigation) from 4.3.0 to 4.4.0. - [Release notes](https://github.com/codeplant/simple-navigation/releases) - [Changelog](https://github.com/codeplant/simple-navigation/blob/master/CHANGELOG.md) - [Commits](https://github.com/codeplant/simple-navigation/compare/v4.3.0...v4.4.0) --- updated-dependencies: - dependency-name: simple-navigation dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 7ba831b71..778036a29 100644 --- a/Gemfile +++ b/Gemfile @@ -82,7 +82,7 @@ gem 'sidekiq', '~> 6.4' gem 'sidekiq-scheduler', '~> 4.0' gem 'sidekiq-unique-jobs', '~> 7.1' gem 'sidekiq-bulk', '~> 0.2.0' -gem 'simple-navigation', '~> 4.3' +gem 'simple-navigation', '~> 4.4' gem 'simple_form', '~> 5.1' gem 'sprockets-rails', '~> 3.4', require: 'sprockets/railtie' gem 'stoplight', '~> 3.0.0' diff --git a/Gemfile.lock b/Gemfile.lock index e1817ccf1..d42b0cb33 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -616,7 +616,7 @@ GEM concurrent-ruby (~> 1.0, >= 1.0.5) sidekiq (>= 5.0, < 8.0) thor (>= 0.20, < 3.0) - simple-navigation (4.3.0) + simple-navigation (4.4.0) activesupport (>= 2.3.2) simple_form (5.1.0) actionpack (>= 5.2) @@ -829,7 +829,7 @@ DEPENDENCIES sidekiq-bulk (~> 0.2.0) sidekiq-scheduler (~> 4.0) sidekiq-unique-jobs (~> 7.1) - simple-navigation (~> 4.3) + simple-navigation (~> 4.4) simple_form (~> 5.1) simplecov (~> 0.21) sprockets (~> 3.7.2) From 17ba5e1e616c853a389b9c24a347d873747f2126 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 4 Jun 2022 06:44:49 +0200 Subject: [PATCH 139/652] New Crowdin updates (#18561) * New translations en.yml (Portuguese) * New translations en.yml (Lithuanian) * New translations en.yml (Serbian (Cyrillic)) * New translations en.yml (Turkish) * New translations en.yml (Ukrainian) * New translations en.yml (Chinese Traditional) * New translations en.yml (Urdu (Pakistan)) * New translations en.yml (Icelandic) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Indonesian) * New translations en.yml (Tamil) * New translations en.yml (Macedonian) * New translations en.yml (Korean) * New translations en.yml (Georgian) * New translations en.yml (Slovak) * New translations en.yml (Chinese Simplified) * New translations en.yml (Swedish) * New translations en.yml (Hebrew) * New translations en.yml (Italian) * New translations en.yml (Japanese) * New translations en.yml (Russian) * New translations en.yml (Slovenian) * New translations en.yml (Armenian) * New translations en.yml (Vietnamese) * New translations en.yml (Scottish Gaelic) * New translations en.yml (Occitan) * New translations en.yml (Persian) * New translations en.yml (Galician) * New translations en.yml (Hungarian) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Irish) * New translations en.json (Arabic) * New translations en.json (Irish) * New translations en.json (German) * New translations en.yml (Spanish, Mexico) * New translations en.json (Turkish) * New translations en.yml (Kabyle) * New translations en.yml (Ido) * New translations en.yml (Taigi) * New translations en.yml (Silesian) * New translations en.yml (Standard Moroccan Tamazight) * New translations en.json (Japanese) * New translations en.json (Korean) * New translations en.json (Vietnamese) * New translations en.json (Chinese Simplified) * New translations en.yml (Sardinian) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Asturian) * New translations en.json (Scottish Gaelic) * New translations en.json (Welsh) * New translations en.json (Galician) * New translations en.json (Slovak) * New translations en.json (Icelandic) * New translations en.yml (Sanskrit) * New translations en.yml (Corsican) * New translations en.yml (Bengali) * New translations en.yml (Esperanto) * New translations en.yml (Marathi) * New translations en.yml (Croatian) * New translations en.yml (Norwegian Nynorsk) * New translations en.yml (Kazakh) * New translations en.yml (Estonian) * New translations en.yml (Latvian) * New translations en.yml (Hindi) * New translations en.yml (Malay) * New translations en.yml (Telugu) * New translations en.yml (Welsh) * New translations en.yml (Uyghur) * New translations en.yml (Sorani (Kurdish)) * New translations en.yml (Chinese Traditional, Hong Kong) * New translations en.yml (Tatar) * New translations en.yml (Malayalam) * New translations en.yml (Breton) * New translations en.yml (Sinhala) * New translations en.yml (Cornish) * New translations en.yml (Kannada) * New translations en.yml (Asturian) * New translations en.yml (Serbian (Latin)) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.json (Sorani (Kurdish)) * New translations en.json (Greek) * New translations en.json (Romanian) * New translations en.json (French) * New translations en.json (Spanish) * New translations en.json (Afrikaans) * New translations en.json (Bulgarian) * New translations en.json (Czech) * New translations en.json (Danish) * New translations en.json (Basque) * New translations en.json (Finnish) * New translations en.json (Hebrew) * New translations en.json (Spanish, Mexico) * New translations en.json (Marathi) * New translations en.json (Bengali) * New translations en.json (English, United Kingdom) * New translations en.json (Spanish, Argentina) * New translations en.json (Tamil) * New translations en.json (Croatian) * New translations en.json (Persian) * New translations en.json (Thai) * New translations en.json (Malay) * New translations en.json (Norwegian Nynorsk) * New translations en.json (Kazakh) * New translations en.json (Estonian) * New translations en.json (Latvian) * New translations en.json (Hindi) * New translations en.json (Urdu (Pakistan)) * New translations en.json (Telugu) * New translations en.json (Esperanto) * New translations en.json (Indonesian) * New translations en.json (Slovenian) * New translations en.json (Chinese Traditional) * New translations en.json (Dutch) * New translations en.json (Norwegian) * New translations en.json (Hungarian) * New translations en.json (Armenian) * New translations en.json (Italian) * New translations en.json (Georgian) * New translations en.json (Lithuanian) * New translations en.json (Macedonian) * New translations en.json (Punjabi) * New translations en.json (Ukrainian) * New translations en.json (Polish) * New translations en.json (Portuguese) * New translations en.json (Russian) * New translations en.yml (English, United Kingdom) * New translations en.json (Albanian) * New translations en.json (Serbian (Cyrillic)) * New translations en.json (Swedish) * New translations en.json (Uyghur) * New translations en.json (Chinese Traditional, Hong Kong) * New translations en.json (Corsican) * New translations en.json (Silesian) * New translations en.json (Taigi) * New translations en.json (Ido) * New translations en.json (Kabyle) * New translations en.json (Sanskrit) * New translations en.json (Sardinian) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Tatar) * New translations en.json (Serbian (Latin)) * New translations en.json (Occitan) * New translations en.json (Kannada) * New translations en.json (Cornish) * New translations en.json (Sinhala) * New translations en.json (Breton) * New translations en.json (Malayalam) * New translations en.json (Standard Moroccan Tamazight) * New translations en.json (Spanish, Argentina) * New translations en.json (Galician) * New translations en.json (Chinese Traditional) * New translations en.json (Greek) * New translations en.json (Swedish) * New translations en.json (Russian) * New translations en.json (Chinese Simplified) * New translations en.json (Catalan) * New translations en.json (Polish) * New translations en.json (Latvian) * New translations en.yml (Turkish) * New translations en.json (Turkish) * New translations en.json (Czech) * New translations en.json (Slovenian) * New translations en.json (Icelandic) * New translations en.json (Hungarian) * New translations en.json (Italian) * New translations en.json (Vietnamese) * New translations en.yml (Russian) * New translations doorkeeper.en.yml (Russian) * New translations en.yml (Japanese) * New translations en.json (Japanese) * New translations en.json (Danish) * New translations en.json (Dutch) * New translations en.json (Portuguese) * New translations en.json (Frisian) * New translations en.yml (Frisian) * New translations simple_form.en.yml (Frisian) * New translations activerecord.en.yml (Frisian) * New translations devise.en.yml (Frisian) * New translations doorkeeper.en.yml (Frisian) * New translations en.json (Frisian) * New translations en.yml (Breton) * New translations en.json (Breton) * New translations en.yml (Polish) * New translations en.yml (Russian) * New translations en.yml (Catalan) * New translations en.yml (Korean) * New translations en.yml (Spanish, Argentina) * New translations en.json (Korean) * New translations en.yml (Greek) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.yml (Ukrainian) * New translations en.yml (Czech) * New translations en.json (Ukrainian) * New translations en.yml (Icelandic) * New translations en.yml (Portuguese) * New translations en.yml (Latvian) * New translations en.yml (Hungarian) * New translations en.json (Irish) * New translations en.json (Irish) * New translations en.json (Irish) * New translations en.yml (Czech) * New translations en.yml (Danish) * New translations en.yml (Chinese Traditional) * New translations en.yml (Galician) * New translations en.yml (Galician) * New translations simple_form.en.yml (Galician) * New translations en.json (Frisian) * New translations en.json (Frisian) * New translations en.json (Frisian) * New translations en.json (Frisian) * New translations en.yml (Frisian) * New translations en.json (Frisian) * New translations en.yml (Frisian) * New translations activerecord.en.yml (Frisian) * New translations activerecord.en.yml (Frisian) * New translations en.json (Frisian) * New translations devise.en.yml (Frisian) * New translations doorkeeper.en.yml (Frisian) * New translations en.json (Frisian) * New translations en.yml (Frisian) * New translations en.yml (Slovenian) * New translations en.json (Frisian) * New translations en.yml (Frisian) * New translations doorkeeper.en.yml (Frisian) * New translations en.json (Frisian) * New translations en.yml (Frisian) * New translations simple_form.en.yml (Frisian) * New translations en.json (Frisian) * New translations en.yml (Frisian) * New translations en.json (Frisian) * New translations en.json (Frisian) * New translations en.json (Frisian) * New translations en.json (Frisian) * New translations en.yml (Indonesian) * New translations en.json (Indonesian) * New translations en.json (Spanish) * New translations en.yml (Spanish) * New translations en.yml (Italian) * New translations en.yml (Ido) * New translations en.json (Ido) * New translations en.json (French) * New translations en.yml (Korean) * New translations simple_form.en.yml (Korean) * New translations simple_form.en.yml (Korean) * New translations en.yml (Russian) * New translations en.yml (Russian) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` * Fix default message Co-authored-by: Yamagishi Kazutoshi --- .../features/ui/components/columns_area.js | 2 +- app/javascript/mastodon/locales/af.json | 2 +- app/javascript/mastodon/locales/ar.json | 2 +- app/javascript/mastodon/locales/ast.json | 2 +- app/javascript/mastodon/locales/bg.json | 2 +- app/javascript/mastodon/locales/bn.json | 2 +- app/javascript/mastodon/locales/br.json | 22 +- app/javascript/mastodon/locales/ca.json | 2 +- app/javascript/mastodon/locales/ckb.json | 2 +- app/javascript/mastodon/locales/co.json | 2 +- app/javascript/mastodon/locales/cs.json | 2 +- app/javascript/mastodon/locales/cy.json | 2 +- app/javascript/mastodon/locales/da.json | 2 +- app/javascript/mastodon/locales/de.json | 10 +- .../mastodon/locales/defaultMessages.json | 4 +- app/javascript/mastodon/locales/el.json | 2 +- app/javascript/mastodon/locales/en-GB.json | 2 +- app/javascript/mastodon/locales/eo.json | 2 +- app/javascript/mastodon/locales/es-AR.json | 2 +- app/javascript/mastodon/locales/es-MX.json | 4 +- app/javascript/mastodon/locales/es.json | 2 +- app/javascript/mastodon/locales/et.json | 2 +- app/javascript/mastodon/locales/eu.json | 2 +- app/javascript/mastodon/locales/fa.json | 2 +- app/javascript/mastodon/locales/fi.json | 2 +- app/javascript/mastodon/locales/fr.json | 2 +- app/javascript/mastodon/locales/fy.json | 549 ++++++++++++++++++ app/javascript/mastodon/locales/ga.json | 22 +- app/javascript/mastodon/locales/gd.json | 2 +- app/javascript/mastodon/locales/gl.json | 2 +- app/javascript/mastodon/locales/he.json | 2 +- app/javascript/mastodon/locales/hi.json | 2 +- app/javascript/mastodon/locales/hr.json | 2 +- app/javascript/mastodon/locales/hu.json | 2 +- app/javascript/mastodon/locales/hy.json | 2 +- app/javascript/mastodon/locales/id.json | 2 +- app/javascript/mastodon/locales/io.json | 10 +- app/javascript/mastodon/locales/is.json | 2 +- app/javascript/mastodon/locales/it.json | 2 +- app/javascript/mastodon/locales/ja.json | 4 +- app/javascript/mastodon/locales/ka.json | 2 +- app/javascript/mastodon/locales/kab.json | 2 +- app/javascript/mastodon/locales/kk.json | 2 +- app/javascript/mastodon/locales/kn.json | 2 +- app/javascript/mastodon/locales/ko.json | 2 +- app/javascript/mastodon/locales/ku.json | 2 +- app/javascript/mastodon/locales/kw.json | 2 +- app/javascript/mastodon/locales/lt.json | 2 +- app/javascript/mastodon/locales/lv.json | 2 +- app/javascript/mastodon/locales/mk.json | 2 +- app/javascript/mastodon/locales/ml.json | 2 +- app/javascript/mastodon/locales/mr.json | 2 +- app/javascript/mastodon/locales/ms.json | 2 +- app/javascript/mastodon/locales/nl.json | 2 +- app/javascript/mastodon/locales/nn.json | 2 +- app/javascript/mastodon/locales/no.json | 2 +- app/javascript/mastodon/locales/oc.json | 2 +- app/javascript/mastodon/locales/pa.json | 2 +- app/javascript/mastodon/locales/pl.json | 2 +- app/javascript/mastodon/locales/pt-BR.json | 2 +- app/javascript/mastodon/locales/pt-PT.json | 2 +- app/javascript/mastodon/locales/ro.json | 2 +- app/javascript/mastodon/locales/ru.json | 2 +- app/javascript/mastodon/locales/sa.json | 2 +- app/javascript/mastodon/locales/sc.json | 2 +- app/javascript/mastodon/locales/si.json | 2 +- app/javascript/mastodon/locales/sk.json | 2 +- app/javascript/mastodon/locales/sq.json | 2 +- app/javascript/mastodon/locales/sr-Latn.json | 2 +- app/javascript/mastodon/locales/sr.json | 2 +- app/javascript/mastodon/locales/sv.json | 2 +- app/javascript/mastodon/locales/szl.json | 2 +- app/javascript/mastodon/locales/ta.json | 2 +- app/javascript/mastodon/locales/tai.json | 2 +- app/javascript/mastodon/locales/te.json | 2 +- app/javascript/mastodon/locales/th.json | 2 +- app/javascript/mastodon/locales/tr.json | 2 +- app/javascript/mastodon/locales/tt.json | 2 +- app/javascript/mastodon/locales/ug.json | 2 +- app/javascript/mastodon/locales/uk.json | 2 +- app/javascript/mastodon/locales/ur.json | 2 +- .../mastodon/locales/whitelist_fy.json | 2 + app/javascript/mastodon/locales/zgh.json | 2 +- app/javascript/mastodon/locales/zh-CN.json | 2 +- app/javascript/mastodon/locales/zh-HK.json | 2 +- config/locales/activerecord.fy.yml | 24 + config/locales/br.yml | 5 + config/locales/ca.yml | 1 + config/locales/cs.yml | 29 +- config/locales/da.yml | 1 + config/locales/de.yml | 49 ++ config/locales/devise.fy.yml | 7 + config/locales/doorkeeper.fy.yml | 23 + config/locales/doorkeeper.ru.yml | 1 + config/locales/el.yml | 1 + config/locales/es-AR.yml | 1 + config/locales/es-MX.yml | 48 ++ config/locales/es.yml | 1 + config/locales/fy.yml | 54 ++ config/locales/gl.yml | 49 ++ config/locales/hu.yml | 1 + config/locales/id.yml | 1 + config/locales/io.yml | 1 + config/locales/is.yml | 1 + config/locales/it.yml | 1 + config/locales/ja.yml | 81 +++ config/locales/ko.yml | 90 ++- config/locales/ku.yml | 1 + config/locales/lv.yml | 1 + config/locales/pl.yml | 1 + config/locales/pt-PT.yml | 1 + config/locales/ru.yml | 11 + config/locales/simple_form.fy.yml | 6 + config/locales/simple_form.ko.yml | 6 +- config/locales/sl.yml | 1 + config/locales/th.yml | 1 + config/locales/tr.yml | 80 +++ config/locales/uk.yml | 1 + config/locales/zh-TW.yml | 1 + 119 files changed, 1225 insertions(+), 135 deletions(-) create mode 100644 app/javascript/mastodon/locales/fy.json create mode 100644 app/javascript/mastodon/locales/whitelist_fy.json create mode 100644 config/locales/activerecord.fy.yml create mode 100644 config/locales/devise.fy.yml create mode 100644 config/locales/doorkeeper.fy.yml create mode 100644 config/locales/fy.yml create mode 100644 config/locales/simple_form.fy.yml diff --git a/app/javascript/mastodon/features/ui/components/columns_area.js b/app/javascript/mastodon/features/ui/components/columns_area.js index e665f4447..68017a5f1 100644 --- a/app/javascript/mastodon/features/ui/components/columns_area.js +++ b/app/javascript/mastodon/features/ui/components/columns_area.js @@ -50,7 +50,7 @@ const componentMap = { }; const messages = defineMessages({ - publish: { id: 'compose_form.publish', defaultMessage: 'Toot' }, + publish: { id: 'compose_form.publish', defaultMessage: 'Publish' }, }); const shouldHideFAB = path => path.match(/^\/statuses\/|^\/@[^/]+\/\d+|^\/publish|^\/explore|^\/getting-started|^\/start/); diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index e25b0d7ee..8d261dbbc 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Verwyder hierdie keuse", "compose_form.poll.switch_to_multiple": "Verander die peiling na verskeie keuses", "compose_form.poll.switch_to_single": "Verander die peiling na 'n enkel keuse", - "compose_form.publish": "Toet", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Stoor veranderinge", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 2a592ffd2..f655b694c 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "إزالة هذا الخيار", "compose_form.poll.switch_to_multiple": "تغيِير الاستطلاع للسماح باِخيارات مُتعدِّدة", "compose_form.poll.switch_to_single": "تغيِير الاستطلاع للسماح باِخيار واحد فقط", - "compose_form.publish": "بوّق", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "احفظ التعديلات", "compose_form.sensitive.hide": "{count, plural, one {الإشارة إلى الوَسط كمُحتوى حسّاس} two{الإشارة إلى الوسطان كمُحتويان حسّاسان} other {الإشارة إلى الوسائط كمُحتويات حسّاسة}}", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 148527b96..0f18f7376 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Desaniciar esta escoyeta", "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", - "compose_form.publish": "Barritar", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 06d4760f0..69f4796ff 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Премахване на този избор", "compose_form.poll.switch_to_multiple": "Промяна на анкетата, за да се позволят множество възможни избора", "compose_form.poll.switch_to_single": "Промяна на анкетата, за да се позволи един възможен избор", - "compose_form.publish": "Раздумай", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Маркиране на мултимедията като деликатна} other {Маркиране на мултимедиите като деликатни}}", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index e89f4690b..912a7eb7e 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "এই বিকল্পটি মুছে ফেলুন", "compose_form.poll.switch_to_multiple": "একাধিক পছন্দ অনুমতি দেওয়ার জন্য পোল পরিবর্তন করুন", "compose_form.poll.switch_to_single": "একটি একক পছন্দের অনুমতি দেওয়ার জন্য পোল পরিবর্তন করুন", - "compose_form.publish": "টুট", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "এই ছবি বা ভিডিওটি সংবেদনশীল হিসেবে চিহ্নিত করতে", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index cbe7fc6cb..c5559a277 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -41,7 +41,7 @@ "account.statuses_counter": "{count, plural, one {{counter} Toud} other {{counter} Toud}}", "account.unblock": "Diverzañ @{name}", "account.unblock_domain": "Diverzañ an domani {domain}", - "account.unblock_short": "Unblock", + "account.unblock_short": "Distankañ", "account.unendorse": "Paouez da lakaat war-wel war ar profil", "account.unfollow": "Diheuliañ", "account.unmute": "Diguzhat @{name}", @@ -92,7 +92,7 @@ "community.column_settings.local_only": "Nemet lec'hel", "community.column_settings.media_only": "Nemet Mediaoù", "community.column_settings.remote_only": "Nemet a-bell", - "compose.language.change": "Change language", + "compose.language.change": "Cheñch yezh", "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Gouzout hiroc'h", "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Lemel an dibab-mañ", "compose_form.poll.switch_to_multiple": "Kemmañ ar sontadeg evit aotren meur a zibab", "compose_form.poll.switch_to_single": "Kemmañ ar sontadeg evit aotren un dibab hepken", - "compose_form.publish": "Toudañ", + "compose_form.publish": "Embann", "compose_form.publish_loud": "{publish} !", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "Merkañ ar media evel kizidik", @@ -191,9 +191,9 @@ "errors.unexpected_crash.copy_stacktrace": "Eilañ ar roudoù diveugañ er golver", "errors.unexpected_crash.report_issue": "Danevellañ ur fazi", "explore.search_results": "Disoc'hoù an enklask", - "explore.suggested_follows": "For you", + "explore.suggested_follows": "Evidoc'h", "explore.title": "Ergerzhit", - "explore.trending_links": "News", + "explore.trending_links": "Keleier", "explore.trending_statuses": "Posts", "explore.trending_tags": "Gerioù-klik", "follow_recommendations.done": "Graet", @@ -295,11 +295,11 @@ "navigation_bar.bookmarks": "Sinedoù", "navigation_bar.community_timeline": "Red-amzer lec'hel", "navigation_bar.compose": "Skrivañ un toud nevez", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Kemennadoù prevez", "navigation_bar.discover": "Dizoleiñ", "navigation_bar.domain_blocks": "Domanioù kuzhet", "navigation_bar.edit_profile": "Aozañ ar profil", - "navigation_bar.explore": "Explore", + "navigation_bar.explore": "Ergerzhit", "navigation_bar.favourites": "Ar re vuiañ-karet", "navigation_bar.filters": "Gerioù kuzhet", "navigation_bar.follow_requests": "Pedadoù heuliañ", @@ -394,16 +394,16 @@ "relative_time.seconds": "{number}eil", "relative_time.today": "hiziv", "reply_indicator.cancel": "Nullañ", - "report.block": "Block", + "report.block": "Stankañ", "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", "report.category.subtitle": "Choose the best match", "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", + "report.category.title_account": "profil", "report.category.title_status": "post", - "report.close": "Done", + "report.close": "Graet", "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Treuzkas da: {target}", "report.forward_hint": "War ur servijer all emañ ar c'hont-se. Kas dezhañ un adskrid disanv eus an danevell ivez?", @@ -455,7 +455,7 @@ "status.delete": "Dilemel", "status.detailed_status": "Gwel kaozeadenn munudek", "status.direct": "Kas ur c'hemennad prevez da @{name}", - "status.edit": "Edit", + "status.edit": "Aozañ", "status.edited": "Edited {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Enframmañ", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 4ca981f4b..5490bb6b7 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Elimina aquesta opció", "compose_form.poll.switch_to_multiple": "Canvia l’enquesta per a permetre diverses opcions", "compose_form.poll.switch_to_single": "Canvia l’enquesta per permetre una única opció", - "compose_form.publish": "Publicar", + "compose_form.publish": "Publica-ho", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Desa els canvis", "compose_form.sensitive.hide": "{count, plural, one {Marca contingut com a sensible} other {Marca contingut com a sensible}}", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index a642c8a81..e7c4dab71 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "لابردنی ئەم هەڵبژاردەیە", "compose_form.poll.switch_to_multiple": "ڕاپرسی بگۆڕە بۆ ڕێگەدان بە چەند هەڵبژاردنێک", "compose_form.poll.switch_to_single": "گۆڕینی ڕاپرسی بۆ ڕێگەدان بە تاکە هەڵبژاردنێک", - "compose_form.publish": "توت", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "پاشکەوتی گۆڕانکاریەکان", "compose_form.sensitive.hide": "نیشانکردنی میدیا وەک هەستیار", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index d2db35f16..9172aea2e 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Toglie sta scelta", "compose_form.poll.switch_to_multiple": "Cambià u scandagliu per accittà parechje scelte", "compose_form.poll.switch_to_single": "Cambià u scandagliu per ùn accittà ch'una scelta", - "compose_form.publish": "Toot", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Indicà u media cum'è sensibile} other {Indicà i media cum'è sensibili}}", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 1c2413793..e1602dacf 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Odstranit tuto volbu", "compose_form.poll.switch_to_multiple": "Povolit u ankety výběr více možností", "compose_form.poll.switch_to_single": "Povolit u ankety výběr jediné možnosti", - "compose_form.publish": "Odeslat", + "compose_form.publish": "Zveřejnit", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Uložit změny", "compose_form.sensitive.hide": "{count, plural, one {Označit média za citlivá} few {Označit média za citlivá} many {Označit média za citlivá} other {Označit média za citlivá}}", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index e22abb220..42fef4732 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Tynnu'r dewisiad", "compose_form.poll.switch_to_multiple": "Newid pleidlais i adael mwy nag un dewis", "compose_form.poll.switch_to_single": "Newid pleidlais i gyfyngu i un dewis", - "compose_form.publish": "Tŵt", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Cadw newidiadau", "compose_form.sensitive.hide": "Marcio cyfryngau fel eu bod yn sensitif", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 319040804..537fa6af6 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Fjern denne valgmulighed", "compose_form.poll.switch_to_multiple": "Ændr afstemning til flervalgstype", "compose_form.poll.switch_to_single": "Ændr afstemning til enkeltvalgstype", - "compose_form.publish": "Udgiv", + "compose_form.publish": "Publicér", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Gem ændringer", "compose_form.sensitive.hide": "{count, plural, one {Markér medie som følsomt} other {Markér medier som følsomme}}", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 320f9fb6b..8a77b212c 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -20,11 +20,11 @@ "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Follower}}", "account.following": "Folgt", "account.following_counter": "{count, plural, one {{counter} Folgt} other {{counter} Folgt}}", - "account.follows.empty": "Dieses Profil folgt noch niemandem.", + "account.follows.empty": "Diesem Profil folgt niemand", "account.follows_you": "Folgt dir", "account.hide_reblogs": "Geteilte Beiträge von @{name} verbergen", "account.joined": "Beigetreten am {date}", - "account.link_verified_on": "Besitz dieses Links wurde geprüft am {date}", + "account.link_verified_on": "Diesem Profil folgt niemand", "account.locked_info": "Der Privatsphärenstatus dieses Accounts wurde auf „gesperrt“ gesetzt. Die Person bestimmt manuell, wer ihm/ihr folgen darf.", "account.media": "Medien", "account.mention": "@{name} erwähnen", @@ -95,7 +95,7 @@ "compose.language.change": "Sprache ändern", "compose.language.search": "Sprachen durchsuchen...", "compose_form.direct_message_warning_learn_more": "Mehr erfahren", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "Beiträge von Mastodon sind nicht Ende-zu-Ende verschlüsselt. Teile keine senible Infomartionen über Mastodon.", "compose_form.hashtag_warning": "Dieser Beitrag wird nicht durch Hashtags entdeckbar sein, weil er ungelistet ist. Nur öffentliche Beiträge tauchen in Hashtag-Zeitleisten auf.", "compose_form.lock_disclaimer": "Dein Profil ist nicht {locked}. Wer dir folgen will, kann das jederzeit tun und dann auch deine privaten Beiträge sehen.", "compose_form.lock_disclaimer.lock": "gesperrt", @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Wahl entfernen", "compose_form.poll.switch_to_multiple": "Umfrage ändern, um mehrere Optionen zu erlauben", "compose_form.poll.switch_to_single": "Umfrage ändern, um eine einzige Wahl zu erlauben", - "compose_form.publish": "Tröt", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Änderungen speichern", "compose_form.sensitive.hide": "Medien als NSFW markieren", @@ -171,7 +171,7 @@ "empty_column.community": "Die lokale Zeitleiste ist leer. Schreibe einen öffentlichen Beitrag, um den Stein ins Rollen zu bringen!", "empty_column.direct": "Du hast noch keine Direktnachrichten. Sobald du eine sendest oder empfängst, wird sie hier zu sehen sein.", "empty_column.domain_blocks": "Es sind noch keine Domains versteckt.", - "empty_column.explore_statuses": "Momentan ist nichts im Trend. Schau später wieder!", + "empty_column.explore_statuses": "Momentan ist nichts im Trend. Schau später wieder vorbei!", "empty_column.favourited_statuses": "Du hast noch keine favorisierten Tröts. Wenn du einen favorisierst, wird er hier erscheinen.", "empty_column.favourites": "Noch niemand hat diesen Beitrag favorisiert. Sobald es jemand tut, wird das hier angezeigt.", "empty_column.follow_recommendations": "Es sieht so aus, als könnten keine Vorschläge für dich generiert werden. Du kannst versuchen nach Leuten zu suchen, die du vielleicht kennst oder du kannst angesagte Hashtags erkunden.", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 986962bed..250987be3 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -3294,7 +3294,7 @@ { "descriptors": [ { - "defaultMessage": "Toot", + "defaultMessage": "Publish", "id": "compose_form.publish" } ], @@ -3711,4 +3711,4 @@ ], "path": "app/javascript/mastodon/features/video/index.json" } -] +] \ No newline at end of file diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 43f5087f2..6f324860c 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Αφαίρεση επιλογής", "compose_form.poll.switch_to_multiple": "Ενημέρωση δημοσκόπησης με πολλαπλές επιλογές", "compose_form.poll.switch_to_single": "Ενημέρωση δημοσκόπησης με μοναδική επιλογή", - "compose_form.publish": "Τουτ", + "compose_form.publish": "Δημοσίευση", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Αποθήκευση αλλαγών", "compose_form.sensitive.hide": "Σημείωσε τα πολυμέσα ως ευαίσθητα", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 51f8463cd..71874cb45 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Remove this choice", "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", - "compose_form.publish": "Toot", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 2b26a0f97..9abba0bfa 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Forigi ĉi tiu elekteblon", "compose_form.poll.switch_to_multiple": "Ŝanĝi la balotenketon por permesi multajn elektojn", "compose_form.poll.switch_to_single": "Ŝanĝi la balotenketon por permesi unu solan elekton", - "compose_form.publish": "Hup", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Konservi ŝanĝojn", "compose_form.sensitive.hide": "Marki la aŭdovidaĵojn kiel tiklaj", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 65a7b699f..78d81b38f 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Quitar esta opción", "compose_form.poll.switch_to_multiple": "Cambiar encuesta para permitir opciones múltiples", "compose_form.poll.switch_to_single": "Cambiar encuesta para permitir una sola opción", - "compose_form.publish": "Enviar", + "compose_form.publish": "Publicar", "compose_form.publish_loud": "¡{publish}!", "compose_form.save_changes": "Guardar cambios", "compose_form.sensitive.hide": "Marcar medio como sensible", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index c58ec5aa6..4e8a3c4c6 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -95,7 +95,7 @@ "compose.language.change": "Cambiar idioma", "compose.language.search": "Buscar idiomas...", "compose_form.direct_message_warning_learn_more": "Aprender mas", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "Las publicaciones en Mastodon no están cifradas de extremo a extremo. No comparta ninguna información sensible en Mastodon.", "compose_form.hashtag_warning": "Este toot no se mostrará bajo hashtags porque no es público. Sólo los toots públicos se pueden buscar por hashtag.", "compose_form.lock_disclaimer": "Tu cuenta no está bloqueada. Todos pueden seguirte para ver tus toots solo para seguidores.", "compose_form.lock_disclaimer.lock": "bloqueado", @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Eliminar esta opción", "compose_form.poll.switch_to_multiple": "Modificar encuesta para permitir múltiples opciones", "compose_form.poll.switch_to_single": "Modificar encuesta para permitir una única opción", - "compose_form.publish": "Tootear", + "compose_form.publish": "Publish", "compose_form.publish_loud": "¡{publish}!", "compose_form.save_changes": "Guardar cambios", "compose_form.sensitive.hide": "Marcar multimedia como sensible", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index a7556a560..0befa9153 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Eliminar esta opción", "compose_form.poll.switch_to_multiple": "Modificar encuesta para permitir múltiples opciones", "compose_form.poll.switch_to_single": "Modificar encuesta para permitir una única opción", - "compose_form.publish": "Tootear", + "compose_form.publish": "Publicar", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Guardar cambios", "compose_form.sensitive.hide": "{count, plural, one {Marcar material como sensible} other {Marcar material como sensible}}", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index d5f85c54d..eb3425f79 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Eemalda see valik", "compose_form.poll.switch_to_multiple": "Muuda küsitlust lubamaks mitut valikut", "compose_form.poll.switch_to_single": "Muuda küsitlust lubamaks ainult ühte valikut", - "compose_form.publish": "Tuut", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "Märgista meedia tundlikuks", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 4ab0c44be..c8182640a 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Kendu aukera hau", "compose_form.poll.switch_to_multiple": "Aldatu inkesta hainbat aukera onartzeko", "compose_form.poll.switch_to_single": "Aldatu inkesta aukera bakarra onartzeko", - "compose_form.publish": "Toot", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Gorde aldaketak", "compose_form.sensitive.hide": "Markatu multimedia hunkigarri gisa", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 1d14dc63e..c76c596eb 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "برداشتن این گزینه", "compose_form.poll.switch_to_multiple": "تبدیل به نظرسنجی چندگزینه‌ای", "compose_form.poll.switch_to_single": "تبدیل به نظرسنجی تک‌گزینه‌ای", - "compose_form.publish": "بوق", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "ذخیرهٔ تغییرات", "compose_form.sensitive.hide": "{count, plural, one {علامت‌گذاری رسانه به عنوان حساس} other {علامت‌گذاری رسانه‌ها به عنوان حساس}}", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 586d9858a..fb3725664 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Poista tämä valinta", "compose_form.poll.switch_to_multiple": "Muuta kysely monivalinnaksi", "compose_form.poll.switch_to_single": "Muuta kysely sallimaan vain yksi valinta", - "compose_form.publish": "Lähetä viesti", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Tallenna muutokset", "compose_form.sensitive.hide": "{count, plural, one {Merkitse media arkaluontoiseksi} other {Merkitse media arkaluontoiseksi}}", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 65f289a2e..0d8759e25 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Supprimer ce choix", "compose_form.poll.switch_to_multiple": "Changer le sondage pour autoriser plusieurs choix", "compose_form.poll.switch_to_single": "Changer le sondage pour autoriser qu'un seul choix", - "compose_form.publish": "Pouet", + "compose_form.publish": "Publier", "compose_form.publish_loud": "{publish} !", "compose_form.save_changes": "Enregistrer les modifications", "compose_form.sensitive.hide": "Marquer le média comme sensible", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json new file mode 100644 index 000000000..f8485270a --- /dev/null +++ b/app/javascript/mastodon/locales/fy.json @@ -0,0 +1,549 @@ +{ + "account.account_note_header": "Note", + "account.add_or_remove_from_list": "Add or Remove from lists", + "account.badges.bot": "Bot", + "account.badges.group": "Groep", + "account.block": "Block @{name}", + "account.block_domain": "Block domain {domain}", + "account.blocked": "Blocked", + "account.browse_more_on_origin_server": "Browse more on the original profile", + "account.cancel_follow_request": "Cancel follow request", + "account.direct": "Direct message @{name}", + "account.disable_notifications": "Stop notifying me when @{name} posts", + "account.domain_blocked": "Domein blokkearre", + "account.edit_profile": "Profyl oanpasse", + "account.enable_notifications": "Notify me when @{name} posts", + "account.endorse": "Feature on profile", + "account.follow": "Folgje", + "account.followers": "Folgers", + "account.followers.empty": "No one follows this user yet.", + "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", + "account.following": "Folget", + "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", + "account.follows.empty": "This user doesn't follow anyone yet.", + "account.follows_you": "Folget dy", + "account.hide_reblogs": "Hide boosts from @{name}", + "account.joined": "Registrearre op {date}", + "account.link_verified_on": "Ownership of this link was checked on {date}", + "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", + "account.media": "Media", + "account.mention": "Fermeld @{name}", + "account.moved_to": "{name} has moved to:", + "account.mute": "Mute @{name}", + "account.mute_notifications": "Mute notifications from @{name}", + "account.muted": "Muted", + "account.posts": "Posts", + "account.posts_with_replies": "Posts and replies", + "account.report": "Report @{name}", + "account.requested": "Awaiting approval. Click to cancel follow request", + "account.share": "Share @{name}'s profile", + "account.show_reblogs": "Show boosts from @{name}", + "account.statuses_counter": "{count, plural, one {{counter} Post} other {{counter} Posts}}", + "account.unblock": "Unblock @{name}", + "account.unblock_domain": "Unblock domain {domain}", + "account.unblock_short": "Unblock", + "account.unendorse": "Don't feature on profile", + "account.unfollow": "Net mear folgje", + "account.unmute": "Unmute @{name}", + "account.unmute_notifications": "Unmute notifications from @{name}", + "account.unmute_short": "Net mear negearre", + "account_note.placeholder": "Click to add a note", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Gemiddelde", + "admin.dashboard.retention.cohort": "Sign-up month", + "admin.dashboard.retention.cohort_size": "Nije brûkers", + "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.", + "alert.rate_limited.title": "Rate limited", + "alert.unexpected.message": "An unexpected error occurred.", + "alert.unexpected.title": "Oops!", + "announcement.announcement": "Announcement", + "attachments_list.unprocessed": "(net ferwurke)", + "autosuggest_hashtag.per_week": "{count} per week", + "boost_modal.combo": "You can press {combo} to skip this next time", + "bundle_column_error.body": "Something went wrong while loading this component.", + "bundle_column_error.retry": "Try again", + "bundle_column_error.title": "Network error", + "bundle_modal_error.close": "Slute", + "bundle_modal_error.message": "Something went wrong while loading this component.", + "bundle_modal_error.retry": "Opnij probearje", + "column.blocks": "Blokkearre brûkers", + "column.bookmarks": "Blêdwizers", + "column.community": "Local timeline", + "column.direct": "Direct messages", + "column.directory": "Browse profiles", + "column.domain_blocks": "Blokkeare domeinen", + "column.favourites": "Favoriten", + "column.follow_requests": "Follow requests", + "column.home": "Home", + "column.lists": "Listen", + "column.mutes": "Negearre brûkers", + "column.notifications": "Notifikaasjes", + "column.pins": "Fêstsette berjochten", + "column.public": "Federated timeline", + "column_back_button.label": "Werom", + "column_header.hide_settings": "Ynstellings ferbergje", + "column_header.moveLeft_settings": "Kolom nei links ferpleatse", + "column_header.moveRight_settings": "Kolom nei rjochts ferpleatse", + "column_header.pin": "Fêstsette", + "column_header.show_settings": "Ynstellings sjen litte", + "column_header.unpin": "Los helje", + "column_subheading.settings": "Ynstellings", + "community.column_settings.local_only": "Allinnich lokaal", + "community.column_settings.media_only": "Allinnich media", + "community.column_settings.remote_only": "Allinnich oare tsjinners", + "compose.language.change": "Fan taal feroarje", + "compose.language.search": "Talen sykje...", + "compose_form.direct_message_warning_learn_more": "Lês mear", + "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": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", + "compose_form.lock_disclaimer.lock": "locked", + "compose_form.placeholder": "Wat wolst kwyt?", + "compose_form.poll.add_option": "Add a choice", + "compose_form.poll.duration": "Poll duration", + "compose_form.poll.option_placeholder": "Choice {number}", + "compose_form.poll.remove_option": "Remove this choice", + "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", + "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", + "compose_form.publish": "Publisearje", + "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", + "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", + "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", + "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", + "compose_form.spoiler.marked": "Ynhâldswarskôging fuortsmite", + "compose_form.spoiler.unmarked": "Ynhâldswarskôging tafoegje", + "compose_form.spoiler_placeholder": "Write your warning here", + "confirmation_modal.cancel": "Ofbrekke", + "confirmations.block.block_and_report": "Blokkearre & Oanjaan", + "confirmations.block.confirm": "Blokkearre", + "confirmations.block.message": "Wolle jo {name} werklik blokkearre?", + "confirmations.delete.confirm": "Fuortsmite", + "confirmations.delete.message": "Wolle jo dit berjocht werklik fuortsmite?", + "confirmations.delete_list.confirm": "Fuortsmite", + "confirmations.delete_list.message": "Wolle jo dizze list werklik foar ivich fuortsmite?", + "confirmations.discard_edit_media.confirm": "Discard", + "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.domain_block.confirm": "Hide entire domain", + "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", + "confirmations.logout.confirm": "Log out", + "confirmations.logout.message": "Wolle jo werklik útlogge?", + "confirmations.mute.confirm": "Negearre", + "confirmations.mute.explanation": "Dit sil berjochten fan harren ûnsichtber meitsje en berjochen wêr se yn fermeld wurde, mar se sille jo berjochten noch immen sjen kinne en jo folgje kinne.", + "confirmations.mute.message": "Wolle jo {name} werklik negearre?", + "confirmations.redraft.confirm": "Delete & redraft", + "confirmations.redraft.message": "Wolle jo dit berjocht werklik fuortsmite en opnij opstelle? Favoriten en boosts geane dan ferlern, en reaksjes op it oarspronklike berjocht reitsje jo kwyt.", + "confirmations.reply.confirm": "Reagearre", + "confirmations.reply.message": "Troch no te reagearjen sil it berjocht wat jo no oan it skriuwen binne oerskreaun wurde. Wolle jo troch gean?", + "confirmations.unfollow.confirm": "Net mear folgje", + "confirmations.unfollow.message": "Wolle jo {name} werklik net mear folgje?", + "conversation.delete": "Petear fuortsmite", + "conversation.mark_as_read": "As lêzen oanmurkje", + "conversation.open": "Petear besjen", + "conversation.with": "Mei {names}", + "directory.federated": "From known fediverse", + "directory.local": "From {domain} only", + "directory.new_arrivals": "New arrivals", + "directory.recently_active": "Resintlik warber", + "embed.instructions": "Embed this status on your website by copying the code below.", + "embed.preview": "Here is what it will look like:", + "emoji_button.activity": "Activity", + "emoji_button.clear": "Clear", + "emoji_button.custom": "Custom", + "emoji_button.flags": "Flags", + "emoji_button.food": "Food & Drink", + "emoji_button.label": "Insert emoji", + "emoji_button.nature": "Nature", + "emoji_button.not_found": "No matching emojis found", + "emoji_button.objects": "Objects", + "emoji_button.people": "People", + "emoji_button.recent": "Frequently used", + "emoji_button.search": "Search...", + "emoji_button.search_results": "Search results", + "emoji_button.symbols": "Symbols", + "emoji_button.travel": "Travel & Places", + "empty_column.account_suspended": "Account suspended", + "empty_column.account_timeline": "Gjin berjochten hjir!", + "empty_column.account_unavailable": "Profyl net beskikber", + "empty_column.blocks": "Jo hawwe noch gjin brûkers blokkearre.", + "empty_column.bookmarked_statuses": "You don't have any bookmarked posts yet. When you bookmark one, it will show up here.", + "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.domain_blocks": "Der binne noch gjin blokkearre domeinen.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.favourited_statuses": "You don't have any favourite posts yet. When you favourite one, it will show up here.", + "empty_column.favourites": "No one has favourited this post yet. When someone does, they will show up here.", + "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", + "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.", + "empty_column.hashtag": "There is nothing in this hashtag yet.", + "empty_column.home": "Your home timeline is empty! Follow more people to fill it up. {suggestions}", + "empty_column.home.suggestions": "Suggestjes besjen", + "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.", + "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.", + "empty_column.mutes": "Jo hawwe noch gjin brûkers negearre.", + "empty_column.notifications": "Jo hawwe noch gjin notifikaasjes. Ynteraksjes mei oare minsken sjogge jo hjir.", + "empty_column.public": "Der is hjir neat! Skriuw eat publyklik, of folgje sels brûkers fan oare tsjinners om it hjir te foljen", + "error.unexpected_crash.explanation": "Troch in bug in ús koade as in probleem mei de komptabiliteit fan jo browser, koe dizze side net sjen litten wurde.", + "error.unexpected_crash.explanation_addons": "Dizze side kin net goed sjen litten wurde. Dit probleem komt faaks troch in browser útwreiding of ark foar automatysk oersetten.", + "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", + "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", + "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", + "errors.unexpected_crash.report_issue": "Technysk probleem oanjaan", + "explore.search_results": "Search results", + "explore.suggested_follows": "Foar jo", + "explore.title": "Ferkenne", + "explore.trending_links": "Nijs", + "explore.trending_statuses": "Berjochten", + "explore.trending_tags": "Hashtags", + "follow_recommendations.done": "Klear", + "follow_recommendations.heading": "Folgje minsken wer as jo graach berjochten fan sjen wolle! Hjir binne wat suggestjes.", + "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", + "follow_request.authorize": "Goedkarre", + "follow_request.reject": "Ofkarre", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "generic.saved": "Bewarre", + "getting_started.developers": "Untwikkelders", + "getting_started.directory": "Profile directory", + "getting_started.documentation": "Dokumintaasje", + "getting_started.heading": "Utein sette", + "getting_started.invite": "Minsken útnûgje", + "getting_started.open_source_notice": "Mastodon is iepen boarne software. Jo kinne sels bydrage of problemen oanjaan troch GitHub op {github}.", + "getting_started.security": "Account ynstellings", + "getting_started.terms": "Terms of service", + "hashtag.column_header.tag_mode.all": "en {additional}", + "hashtag.column_header.tag_mode.any": "of {additional}", + "hashtag.column_header.tag_mode.none": "sûnder {additional}", + "hashtag.column_settings.select.no_options_message": "No suggestions found", + "hashtag.column_settings.select.placeholder": "Enter hashtags…", + "hashtag.column_settings.tag_mode.all": "All of these", + "hashtag.column_settings.tag_mode.any": "Any of these", + "hashtag.column_settings.tag_mode.none": "None of these", + "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "home.column_settings.basic": "Basic", + "home.column_settings.show_reblogs": "Show boosts", + "home.column_settings.show_replies": "Show replies", + "home.hide_announcements": "Hide announcements", + "home.show_announcements": "Show announcements", + "intervals.full.days": "{number, plural, one {# day} other {# days}}", + "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", + "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", + "keyboard_shortcuts.back": "to navigate back", + "keyboard_shortcuts.blocked": "to open blocked users list", + "keyboard_shortcuts.boost": "to boost", + "keyboard_shortcuts.column": "to focus a status in one of the columns", + "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.description": "Description", + "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.down": "to move down in the list", + "keyboard_shortcuts.enter": "to open status", + "keyboard_shortcuts.favourite": "to favourite", + "keyboard_shortcuts.favourites": "to open favourites list", + "keyboard_shortcuts.federated": "to open federated timeline", + "keyboard_shortcuts.heading": "Keyboard Shortcuts", + "keyboard_shortcuts.home": "to open home timeline", + "keyboard_shortcuts.hotkey": "Hotkey", + "keyboard_shortcuts.legend": "to display this legend", + "keyboard_shortcuts.local": "to open local timeline", + "keyboard_shortcuts.mention": "Skriuwer beneame", + "keyboard_shortcuts.muted": "to open muted users list", + "keyboard_shortcuts.my_profile": "Jo profyl iepenje", + "keyboard_shortcuts.notifications": "Notifikaasjes sjen litte", + "keyboard_shortcuts.open_media": "Media iepenje", + "keyboard_shortcuts.pinned": "Fêstsette berjochten sjen litte", + "keyboard_shortcuts.profile": "Profyl fan skriuwer iepenje", + "keyboard_shortcuts.reply": "Berjocht beäntwurdzje", + "keyboard_shortcuts.requests": "Folgfersiken sjen litte", + "keyboard_shortcuts.search": "to focus search", + "keyboard_shortcuts.spoilers": "CW fjild ferstopje/sjen litte", + "keyboard_shortcuts.start": "\"Útein sette\" iepenje", + "keyboard_shortcuts.toggle_hidden": "Tekst efter CW fjild ferstopje/sjen litte", + "keyboard_shortcuts.toggle_sensitivity": "Media ferstopje/sjen litte", + "keyboard_shortcuts.toot": "Nij berjocht skriuwe", + "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search", + "keyboard_shortcuts.up": "Nei boppe yn list ferpleatse", + "lightbox.close": "Slute", + "lightbox.compress": "Compress image view box", + "lightbox.expand": "Expand image view box", + "lightbox.next": "Fierder", + "lightbox.previous": "Werom", + "limited_account_hint.action": "Profyl dochs besjen", + "limited_account_hint.title": "Dit profyl is ferstoppe troch de behearders fan jo tsjinner.", + "lists.account.add": "Oan list tafoegje", + "lists.account.remove": "Ut list wei smite", + "lists.delete": "List fuortsmite", + "lists.edit": "Edit list", + "lists.edit.submit": "Titel feroarje", + "lists.new.create": "Add list", + "lists.new.title_placeholder": "Nije list titel", + "lists.replies_policy.followed": "Elke folge brûker", + "lists.replies_policy.list": "Leden fan de list", + "lists.replies_policy.none": "Net ien", + "lists.replies_policy.title": "Reaksjes sjen litte oan:", + "lists.search": "Search among people you follow", + "lists.subheading": "Jo listen", + "load_pending": "{count, plural, one {# new item} other {# new items}}", + "loading_indicator.label": "Loading...", + "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", + "missing_indicator.label": "Net fûn", + "missing_indicator.sublabel": "This resource could not be found", + "mute_modal.duration": "Duration", + "mute_modal.hide_notifications": "Notifikaasjes fan dizze brûker ferstopje?", + "mute_modal.indefinite": "Indefinite", + "navigation_bar.apps": "Mobile apps", + "navigation_bar.blocks": "Blokkearre brûkers", + "navigation_bar.bookmarks": "Blêdwiizers", + "navigation_bar.community_timeline": "Local timeline", + "navigation_bar.compose": "Compose new post", + "navigation_bar.direct": "Direct messages", + "navigation_bar.discover": "Untdekke", + "navigation_bar.domain_blocks": "Blokkearre domeinen", + "navigation_bar.edit_profile": "Edit profile", + "navigation_bar.explore": "Explore", + "navigation_bar.favourites": "Favoriten", + "navigation_bar.filters": "Negearre wurden", + "navigation_bar.follow_requests": "Folgfersiken", + "navigation_bar.follows_and_followers": "Folgers en folgjenden", + "navigation_bar.info": "Oer dizze tsjinner", + "navigation_bar.keyboard_shortcuts": "Fluchtoetsen", + "navigation_bar.lists": "Listen", + "navigation_bar.logout": "Utlogge", + "navigation_bar.mutes": "Negearre brûkers", + "navigation_bar.personal": "Persoanlik", + "navigation_bar.pins": "Fêstsette berjochten", + "navigation_bar.preferences": "Foarkarren", + "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.security": "Security", + "notification.admin.sign_up": "{name} hat harren ynskreaun", + "notification.favourite": "{name} hat jo berjocht as favoryt markearre", + "notification.follow": "{name} folget jo", + "notification.follow_request": "{name} hat jo in folgfersyk stjoerd", + "notification.mention": "{name} hat jo fermeld", + "notification.own_poll": "Jo poll is beëinige", + "notification.poll": "In poll wêr jo yn stimt ha is beëinige", + "notification.reblog": "{name} hat jo berjocht boost", + "notification.status": "{name} hat in berjocht pleatst", + "notification.update": "{name} hat in berjocht feroare", + "notifications.clear": "Notifikaasjes leegje", + "notifications.clear_confirmation": "Wolle jo al jo notifikaasjes werklik foar ivich fuortsmite?", + "notifications.column_settings.admin.sign_up": "Nije ynskriuwingen:", + "notifications.column_settings.alert": "Desktop notifikaasjes", + "notifications.column_settings.favourite": "Favoriten:", + "notifications.column_settings.filter_bar.advanced": "Alle kategorien sjen litte", + "notifications.column_settings.filter_bar.category": "Quick filter bar", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", + "notifications.column_settings.follow": "Nije folgers:", + "notifications.column_settings.follow_request": "New follow requests:", + "notifications.column_settings.mention": "Fermeldingen:", + "notifications.column_settings.poll": "Poll results:", + "notifications.column_settings.push": "Push notifications", + "notifications.column_settings.reblog": "Boosts:", + "notifications.column_settings.show": "Show in column", + "notifications.column_settings.sound": "Play sound", + "notifications.column_settings.status": "New posts:", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", + "notifications.filter.all": "All", + "notifications.filter.boosts": "Boosts", + "notifications.filter.favourites": "Favourites", + "notifications.filter.follows": "Follows", + "notifications.filter.mentions": "Fermeldingen", + "notifications.filter.polls": "Poll results", + "notifications.filter.statuses": "Updates from people you follow", + "notifications.grant_permission": "Grant permission.", + "notifications.group": "{count} notifications", + "notifications.mark_as_read": "Mark every notification as read", + "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", + "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", + "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.", + "notifications_permission_banner.enable": "Enable desktop notifications", + "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", + "notifications_permission_banner.title": "Never miss a thing", + "picture_in_picture.restore": "Put it back", + "poll.closed": "Closed", + "poll.refresh": "Refresh", + "poll.total_people": "{count, plural, one {# persoan} other {# minsken}}", + "poll.total_votes": "{count, plural, one {# stim} other {# stimmen}}", + "poll.vote": "Stim", + "poll.voted": "Jo hawwe hjir op stimt", + "poll.votes": "{votes, plural, one {# stim} other {# stimmen}}", + "poll_button.add_poll": "In poll tafoegje", + "poll_button.remove_poll": "Poll fuortsmite", + "privacy.change": "Adjust status privacy", + "privacy.direct.long": "Allinnich sichtber foar fermelde brûkers", + "privacy.direct.short": "Allinnich fermelde minsken", + "privacy.private.long": "Allinnich sichtber foar folgers", + "privacy.private.short": "Allinnich folgers", + "privacy.public.long": "Sichtber foar elkenien", + "privacy.public.short": "Iepenbier", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", + "privacy.unlisted.short": "Unlisted", + "refresh": "Fernije", + "regeneration_indicator.label": "Loading…", + "regeneration_indicator.sublabel": "Your home feed is being prepared!", + "relative_time.days": "{number}d", + "relative_time.full.days": "{number, plural, one {# dei} other {# dagen}} lyn", + "relative_time.full.hours": "{number, plural, one {# oere} other {# oeren}} lyn", + "relative_time.full.just_now": "no krekt", + "relative_time.full.minutes": "{number, plural, one {# minút} other {# minuten}} lyn", + "relative_time.full.seconds": "{number, plural, one {# sekonde} other {# sekonden}} lyn", + "relative_time.hours": "{number}o", + "relative_time.just_now": "no", + "relative_time.minutes": "{number}m", + "relative_time.seconds": "{number}s", + "relative_time.today": "hjoed", + "reply_indicator.cancel": "Ofbrekke", + "report.block": "Blokkearre", + "report.block_explanation": "Jo sille harren berjochten net sjen kinne. Se sille jo berjochten net sjen kinne en jo net folgje kinne. Se sille wol sjen kinne dat se blokkearre binne.", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Ynhâld ferbrekt ien of mear tsjinner regels", + "report.category.subtitle": "Selektearje wat it bêst past", + "report.category.title": "Fertel ús wat der mei dit {type} oan de hân is", + "report.category.title_account": "profyl", + "report.category.title_status": "berjocht", + "report.close": "Klear", + "report.comment.title": "Tinke jo dat wy noch mear witte moatte?", + "report.forward": "Troch stjoere nei {target}", + "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", + "report.mute": "Negearre", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Fierder", + "report.placeholder": "Type or paste additional comments", + "report.reasons.dislike": "Ik fyn der neat oan", + "report.reasons.dislike_description": "It is net eat wat jo sjen wolle", + "report.reasons.other": "It is wat oars", + "report.reasons.other_description": "It probleem stiet der net tusken", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", + "report.submit": "Submit report", + "report.target": "Report {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "search.placeholder": "Search", + "search_popout.search_format": "Advanced search format", + "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", + "search_popout.tips.hashtag": "hashtag", + "search_popout.tips.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "search_results.accounts": "People", + "search_results.all": "All", + "search_results.hashtags": "Hashtags", + "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.statuses": "Posts", + "search_results.statuses_fts_disabled": "Searching posts by their content is not enabled on this Mastodon server.", + "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", + "status.block": "Block @{name}", + "status.bookmark": "Bookmark", + "status.cancel_reblog_private": "Unboost", + "status.cannot_reblog": "This post cannot be boosted", + "status.copy": "Copy link to status", + "status.delete": "Delete", + "status.detailed_status": "Detaillearre oersjoch fan petear", + "status.direct": "Direct message @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "{count, plural, one {{count} kear} other {{count} kearen}} bewurke", + "status.embed": "Ynslute", + "status.favourite": "Favorite", + "status.filtered": "Filtere", + "status.history.created": "{name} makke dit {date}", + "status.history.edited": "{name} feroare dit {date}", + "status.load_more": "Load more", + "status.media_hidden": "Media ferstoppe", + "status.mention": "Fermeld @{name}", + "status.more": "Mear", + "status.mute": "Negearje @{name}", + "status.mute_conversation": "Petear negearre", + "status.open": "Dit berjocht útflappe", + "status.pin": "Op profyl fêstsette", + "status.pinned": "Fêstset berjocht", + "status.read_more": "Lês mear", + "status.reblog": "Boost", + "status.reblog_private": "Boost with original visibility", + "status.reblogged_by": "{name} hat boost", + "status.reblogs.empty": "No one has boosted this post yet. When someone does, they will show up here.", + "status.redraft": "Fuortsmite en opnij opstelle", + "status.remove_bookmark": "Remove bookmark", + "status.reply": "Reagearre", + "status.replyAll": "Op elkenien reagearre", + "status.report": "Jou @{name} oan", + "status.sensitive_warning": "Sensitive content", + "status.share": "Diele", + "status.show_less": "Minder sjen litte", + "status.show_less_all": "Foar alles minder sjen litte", + "status.show_more": "Mear sjen litte", + "status.show_more_all": "Foar alles mear sjen litte", + "status.show_thread": "Petear sjen litte", + "status.uncached_media_warning": "Net beskikber", + "status.unmute_conversation": "Petear net mear negearre", + "status.unpin": "Unpin from profile", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", + "tabs_bar.federated_timeline": "Federated", + "tabs_bar.home": "Home", + "tabs_bar.local_timeline": "Local", + "tabs_bar.notifications": "Notifikaasjes", + "tabs_bar.search": "Sykje", + "time_remaining.days": "{number, plural, one {# dei} other {# dagen}} te gean", + "time_remaining.hours": "{number, plural, one {# oere} other {# oeren}} te gean", + "time_remaining.minutes": "{number, plural, one {# minút} other {# minuten}} te gean", + "time_remaining.moments": "Noch krekt even te gean", + "time_remaining.seconds": "{number, plural, one {# sekonde} other {# sekonden}} te gean", + "timeline_hint.remote_resource_not_displayed": "{resource} fan oare tsjinners wurde net sjen litten.", + "timeline_hint.resources.followers": "Folgers", + "timeline_hint.resources.follows": "Follows", + "timeline_hint.resources.statuses": "Aldere berjochten", + "trends.counter_by_accounts": "{count, plural, one {{counter} persoan is} other {{counter} persoanen binne}} yn petear", + "trends.trending_now": "Trending now", + "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", + "units.short.billion": "{count}B", + "units.short.million": "{count}M", + "units.short.thousand": "{count}K", + "upload_area.title": "Drag & drop to upload", + "upload_button.label": "Add images, a video or an audio file", + "upload_error.limit": "File upload limit exceeded.", + "upload_error.poll": "File upload not allowed with polls.", + "upload_form.audio_description": "Describe for people with hearing loss", + "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", + "upload_form.edit": "Edit", + "upload_form.thumbnail": "Change thumbnail", + "upload_form.undo": "Delete", + "upload_form.video_description": "Describe for people with hearing loss or visual impairment", + "upload_modal.analyzing_picture": "Analyzing picture…", + "upload_modal.apply": "Apply", + "upload_modal.applying": "Applying…", + "upload_modal.choose_image": "Choose image", + "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog", + "upload_modal.detect_text": "Detect text from picture", + "upload_modal.edit_media": "Edit media", + "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", + "upload_modal.preparing_ocr": "Preparing OCR…", + "upload_modal.preview_label": "Preview ({ratio})", + "upload_progress.label": "Uploading…", + "video.close": "Close video", + "video.download": "Download file", + "video.exit_fullscreen": "Exit full screen", + "video.expand": "Expand video", + "video.fullscreen": "Full screen", + "video.hide": "Hide video", + "video.mute": "Mute sound", + "video.pause": "Pause", + "video.play": "Play", + "video.unmute": "Unmute sound" +} diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index f56e6d5fa..bb9c4ac1f 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -71,7 +71,7 @@ "column.bookmarks": "Leabharmharcanna", "column.community": "Local timeline", "column.direct": "Direct messages", - "column.directory": "Browse profiles", + "column.directory": "Brabhsáil próifílí", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", "column.follow_requests": "Follow requests", @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Remove this choice", "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", - "compose_form.publish": "Toot", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", @@ -165,7 +165,7 @@ "emoji_button.travel": "Taisteal ⁊ Áiteanna", "empty_column.account_suspended": "Account suspended", "empty_column.account_timeline": "No posts found", - "empty_column.account_unavailable": "Profile unavailable", + "empty_column.account_unavailable": "Níl an phróifíl ar fáil", "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked posts yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", @@ -204,7 +204,7 @@ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "generic.saved": "Saved", "getting_started.developers": "Developers", - "getting_started.directory": "Profile directory", + "getting_started.directory": "Eolaire na próifíle", "getting_started.documentation": "Documentation", "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", @@ -247,11 +247,11 @@ "keyboard_shortcuts.local": "to open local timeline", "keyboard_shortcuts.mention": "to mention author", "keyboard_shortcuts.muted": "Oscail liosta na n-úsáideoirí balbhaithe", - "keyboard_shortcuts.my_profile": "to open your profile", + "keyboard_shortcuts.my_profile": "Oscail do phróifíl", "keyboard_shortcuts.notifications": "to open notifications column", "keyboard_shortcuts.open_media": "to open media", "keyboard_shortcuts.pinned": "to open pinned posts list", - "keyboard_shortcuts.profile": "to open author's profile", + "keyboard_shortcuts.profile": "Oscail próifíl an t-údar", "keyboard_shortcuts.reply": "to reply", "keyboard_shortcuts.requests": "to open follow requests list", "keyboard_shortcuts.search": "to focus search", @@ -267,8 +267,8 @@ "lightbox.expand": "Expand image view box", "lightbox.next": "Next", "lightbox.previous": "Previous", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Taispeáin an phróifíl ar aon nós", + "limited_account_hint.title": "Tá an phróifíl seo curtha i bhfolach ag na modhnóra do fhreastalaí.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", @@ -401,7 +401,7 @@ "report.categories.violation": "Content violates one or more server rules", "report.category.subtitle": "Choose the best match", "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", + "report.category.title_account": "próifíl", "report.category.title_status": "post", "report.close": "Déanta", "report.comment.title": "Is there anything else you think we should know?", @@ -470,7 +470,7 @@ "status.mute": "Balbhaigh @{name}", "status.mute_conversation": "Balbhaigh comhrá", "status.open": "Expand this status", - "status.pin": "Pin on profile", + "status.pin": "Pionnáil ar do phróifíl", "status.pinned": "Pinned post", "status.read_more": "Read more", "status.reblog": "Boost", @@ -491,7 +491,7 @@ "status.show_thread": "Show thread", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Díbhalbhaigh comhrá", - "status.unpin": "Unpin from profile", + "status.unpin": "Díphionnáil de do phróifíl", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 107130011..1910e1037 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Thoir an roghainn seo air falbh", "compose_form.poll.switch_to_multiple": "Atharraich an cunntas-bheachd ach an gabh iomadh roghainn a thaghadh", "compose_form.poll.switch_to_single": "Atharraich an cunntas-bheachd gus nach gabh ach aon roghainn a thaghadh", - "compose_form.publish": "Postaich", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Sàbhail na h-atharraichean", "compose_form.sensitive.hide": "{count, plural, one {Cuir comharra gu bheil am meadhan frionasach} two {Cuir comharra gu bheil na meadhanan frionasach} few {Cuir comharra gu bheil na meadhanan frionasach} other {Cuir comharra gu bheil na meadhanan frionasach}}", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index c42f9bab3..0a6aac287 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Eliminar esta opción", "compose_form.poll.switch_to_multiple": "Mudar a enquisa para permitir múltiples escollas", "compose_form.poll.switch_to_single": "Mudar a enquisa para permitir unha soa escolla", - "compose_form.publish": "Toot", + "compose_form.publish": "Publicar", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Gardar cambios", "compose_form.sensitive.hide": "{count, plural, one {Marca multimedia como sensible} other {Marca multimedia como sensibles}}", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 21ef7a6c2..bc2485c6f 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "הסר בחירה זו", "compose_form.poll.switch_to_multiple": "אפשרו בחירה מרובה בסקר", "compose_form.poll.switch_to_single": "אפשרו בחירה בודדת בסקר", - "compose_form.publish": "ללחוש", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "שמירת שינויים", "compose_form.sensitive.hide": "{count, plural, one {סימון מידע כרגיש} other {סימון מידע כרגיש}}", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index 5c3523c2d..df0085067 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "इस विकल्प को हटाएँ", "compose_form.poll.switch_to_multiple": "कई विकल्पों की अनुमति देने के लिए पोल बदलें", "compose_form.poll.switch_to_single": "एक ही विकल्प के लिए अनुमति देने के लिए पोल बदलें", - "compose_form.publish": "टूट्", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "परिवर्तनों को सहेजें", "compose_form.sensitive.hide": "मीडिया को संवेदनशील के रूप में चिह्नित करें", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index 4096c98d0..1ed57960e 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Ukloni ovu opciju", "compose_form.poll.switch_to_multiple": "Omogući višestruki odabir opcija ankete", "compose_form.poll.switch_to_single": "Omogući odabir samo jedne opcije ankete", - "compose_form.publish": "Tootni", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "Označi medijski sadržaj kao osjetljiv", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index ccaf9a482..403e9edfe 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Lehetőség törlése", "compose_form.poll.switch_to_multiple": "Szavazás megváltoztatása több választásosra", "compose_form.poll.switch_to_single": "Szavazás megváltoztatása egyetlen választásosra", - "compose_form.publish": "Tülk", + "compose_form.publish": "Közzététel", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Módosítások mentése", "compose_form.sensitive.hide": "{count, plural, one {Média kényesnek jelölése} other {Média kényesnek jelölése}}", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index 63309c5c5..7d80b18d8 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Հեռացնել այս տարբերակը", "compose_form.poll.switch_to_multiple": "Հարցումը դարձնել բազմակի ընտրութեամբ", "compose_form.poll.switch_to_single": "Հարցումը դարձնել եզակի ընտրութեամբ", - "compose_form.publish": "Հրապարակել", + "compose_form.publish": "Publish", "compose_form.publish_loud": "Հրապարակե՜լ", "compose_form.save_changes": "Պահպանել փոփոխութիւնները", "compose_form.sensitive.hide": "Նշել մեդիան որպէս դիւրազգաց", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 35fad0170..9b8b6f5fe 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Hapus opsi ini", "compose_form.poll.switch_to_multiple": "Ubah japat menjadi pilihan ganda", "compose_form.poll.switch_to_single": "Ubah japat menjadi pilihan tunggal", - "compose_form.publish": "Toot", + "compose_form.publish": "Terbitkan", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Simpan perubahan", "compose_form.sensitive.hide": "{count, plural, other {Tandai media sebagai sensitif}}", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index fc25e931d..4c609edb7 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -33,12 +33,12 @@ "account.mute_notifications": "Silencigez avizi de @{name}", "account.muted": "Silencigata", "account.posts": "Mesaji", - "account.posts_with_replies": "Toots with replies", + "account.posts_with_replies": "Posti e respondi", "account.report": "Denuncar @{name}", "account.requested": "Vartante aprobo", "account.share": "Partigez profilo di @{name}", "account.show_reblogs": "Montrez busti de @{name}", - "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", + "account.statuses_counter": "{count, plural, one {{counter} Posto} other {{counter} Posti}}", "account.unblock": "Desblokusar @{name}", "account.unblock_domain": "Unhide {domain}", "account.unblock_short": "Derestriktez", @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Efacez ca selektajo", "compose_form.poll.switch_to_multiple": "Chanjez votposto por permisar multiselektaji", "compose_form.poll.switch_to_single": "Chanjez votposto por permisar una selektajo", - "compose_form.publish": "Siflar", + "compose_form.publish": "Publikigez", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Sparez chanji", "compose_form.sensitive.hide": "{count, plural,one {Markizez medii quale privata} other {Markizez medii quale privata}}", @@ -193,7 +193,7 @@ "explore.search_results": "Trovuri", "explore.suggested_follows": "Por vu", "explore.title": "Explorez", - "explore.trending_links": "Niuz", + "explore.trending_links": "Niuzi", "explore.trending_statuses": "Posti", "explore.trending_tags": "Hashtagi", "follow_recommendations.done": "Fina", @@ -350,7 +350,7 @@ "notifications.filter.follows": "Sequati", "notifications.filter.mentions": "Mencioni", "notifications.filter.polls": "Votpostorezulti", - "notifications.filter.statuses": "Niuz de personi quon vu sequas", + "notifications.filter.statuses": "Novaji de personi quon vu sequas", "notifications.grant_permission": "Donez permiso.", "notifications.group": "{count} avizi", "notifications.mark_as_read": "Markizez singla avizi quale lektita", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 845d0f8d5..2cdf3c2c0 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Fjarlægja þennan valkost", "compose_form.poll.switch_to_multiple": "Breyta könnun svo hægt sé að hafa marga valkosti", "compose_form.poll.switch_to_single": "Breyta könnun svo hægt sé að hafa einn stakan valkost", - "compose_form.publish": "Tíst", + "compose_form.publish": "Birta", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Vista breytingar", "compose_form.sensitive.hide": "{count, plural, one {Merkja mynd sem viðkvæma} other {Merkja myndir sem viðkvæmar}}", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index b68b71115..d28316242 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Rimuovi questa scelta", "compose_form.poll.switch_to_multiple": "Modifica sondaggio per consentire scelte multiple", "compose_form.poll.switch_to_single": "Modifica sondaggio per consentire una singola scelta", - "compose_form.publish": "Toot", + "compose_form.publish": "Pubblica", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Salva modifiche", "compose_form.sensitive.hide": "Segna media come sensibile", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 57c3b2133..95d35c0ef 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -95,7 +95,7 @@ "compose.language.change": "言語を変更", "compose.language.search": "言語を検索...", "compose_form.direct_message_warning_learn_more": "もっと詳しく", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "Mastodonの投稿はエンドツーエンド暗号化に対応していません。安全に送受信されるべき情報をMastodonで共有しないでください。", "compose_form.hashtag_warning": "この投稿は公開設定ではないのでハッシュタグの一覧に表示されません。公開投稿だけがハッシュタグで検索できます。", "compose_form.lock_disclaimer": "あなたのアカウントは{locked}になっていません。誰でもあなたをフォローすることができ、フォロワー限定の投稿を見ることができます。", "compose_form.lock_disclaimer.lock": "承認制", @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "この項目を削除", "compose_form.poll.switch_to_multiple": "複数選択に変更", "compose_form.poll.switch_to_single": "単一選択に変更", - "compose_form.publish": "トゥート", + "compose_form.publish": "投稿", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "変更を保存", "compose_form.sensitive.hide": "メディアを閲覧注意にする", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index 2ded9c350..d97673fc4 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Remove this choice", "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", - "compose_form.publish": "ტუტი", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 37c4c9d0b..b19bb8e49 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Sfeḍ afran-agi", "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", - "compose_form.publish": "Jewweq", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Sekles ibeddilen", "compose_form.sensitive.hide": "Creḍ allal n teywalt d anafri", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index 659c45db4..1364311ac 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Бұл жауапты өшір", "compose_form.poll.switch_to_multiple": "Бірнеше жауап таңдайтындай қылу", "compose_form.poll.switch_to_single": "Тек бір жауап таңдайтындай қылу", - "compose_form.publish": "Түрт", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "Сезімтал ретінде белгіле", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index af99045bb..630431d39 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Remove this choice", "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", - "compose_form.publish": "Toot", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 49712f6fa..34fabbacf 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "이 항목 삭제", "compose_form.poll.switch_to_multiple": "다중 선택이 가능한 투표로 변경", "compose_form.poll.switch_to_single": "단일 선택 투표로 변경", - "compose_form.publish": "뿌우", + "compose_form.publish": "게시", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "변경사항 저장", "compose_form.sensitive.hide": "미디어를 민감함으로 설정하기", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 8c9cf6705..12c15e389 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Vê hilbijarê rake", "compose_form.poll.switch_to_multiple": "Rapirsî yê biguherînin da ku destûr bidin vebijarkên pirjimar", "compose_form.poll.switch_to_single": "Rapirsîyê biguherîne da ku mafê bidî tenê vebijêrkek", - "compose_form.publish": "Toot", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Guhertinan tomar bike", "compose_form.sensitive.hide": "{count, plural, one {Medya wekî hestiyar nîşan bide} other {Medya wekî hestiyar nîşan bide}}", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index 555b39da5..6a8c9933a 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Dilea'n dewis ma", "compose_form.poll.switch_to_multiple": "Chanjya sondyans dhe asa lies dewis", "compose_form.poll.switch_to_single": "Chanjya sondyans dhe asa unn dewis hepken", - "compose_form.publish": "Tout", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Merkya myski vel tender} other {Merkya myski vel tender}}", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index a37b946b4..afff3a79c 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Remove this choice", "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", - "compose_form.publish": "Toot", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 82fc40e32..1a981ea0e 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Noņemt šo izvēli", "compose_form.poll.switch_to_multiple": "Maini aptaujas veidu, lai atļautu vairākas izvēles", "compose_form.poll.switch_to_single": "Maini aptaujas veidu, lai atļautu vienu izvēli", - "compose_form.publish": "Taurēt", + "compose_form.publish": "Publicēt", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Saglabāt izmaiņas", "compose_form.sensitive.hide": "{count, plural, one {Atzīmēt mediju kā sensitīvu} other {Atzīmēt medijus kā sensitīvus}}", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index df7d84d4b..1b868de07 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Избриши избор", "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", - "compose_form.publish": "Тутови", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "Обележи медиа како сензитивна", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index 69267f652..674f74dd6 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "ഈ ഡിവൈസ് മാറ്റുക", "compose_form.poll.switch_to_multiple": "വോട്ടെടുപ്പിൽ ഒന്നിലധികം ചോയ്‌സുകൾ ഉൾപ്പെടുതുക", "compose_form.poll.switch_to_single": "വോട്ടെടുപ്പിൽ ഒരൊറ്റ ചോയ്‌സ്‌ മാത്രം ആക്കുക", - "compose_form.publish": "ടൂട്ട്", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{പ്രസിദ്ധീകരിക്കുക}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index 6728c0999..d9dafa222 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "हा पर्याय काढा", "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", - "compose_form.publish": "Toot", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 4cb6437f4..c3ca25965 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Buang pilihan ini", "compose_form.poll.switch_to_multiple": "Ubah kepada membenarkan aneka undian", "compose_form.poll.switch_to_single": "Ubah kepada undian pilihan tunggal", - "compose_form.publish": "Toot", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Tandakan media sbg sensitif} other {Tandakan media sbg sensitif}}", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index d36745411..76a631b55 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Deze keuze verwijderen", "compose_form.poll.switch_to_multiple": "Poll wijzigen om meerdere keuzes toe te staan", "compose_form.poll.switch_to_single": "Poll wijzigen om een enkele keuze toe te staan", - "compose_form.publish": "Toot", + "compose_form.publish": "Toot!", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Wijzigingen opslaan", "compose_form.sensitive.hide": "{count, plural, one {Media als gevoelig markeren} other {Media als gevoelig markeren}}", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 24a4e98b7..cd802bed0 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Ta vekk dette valet", "compose_form.poll.switch_to_multiple": "Endre avstemninga til å tillate fleirval", "compose_form.poll.switch_to_single": "Endra avstemninga til tillate berre eitt val", - "compose_form.publish": "Tut", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "Merk medium som sensitivt", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 78d145f55..c188a868b 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Fjern dette valget", "compose_form.poll.switch_to_multiple": "Endre avstemning til å tillate flere valg", "compose_form.poll.switch_to_single": "Endre avstemning til å tillate ett valg", - "compose_form.publish": "Tut", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "Merk media som sensitivt", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 4b094bcbd..62c64acec 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Levar aquesta opcion", "compose_form.poll.switch_to_multiple": "Cambiar lo sondatge per permetre de causidas multiplas", "compose_form.poll.switch_to_single": "Cambiar lo sondatge per permetre una sola causida", - "compose_form.publish": "Tut", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish} !", "compose_form.save_changes": "Salvar los cambiaments", "compose_form.sensitive.hide": "Marcar coma sensible", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index 7b041a208..658a3318e 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Remove this choice", "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", - "compose_form.publish": "Toot", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 2ec80e6ef..afaa9358f 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Usuń tę opcję", "compose_form.poll.switch_to_multiple": "Pozwól na wybranie wielu opcji", "compose_form.poll.switch_to_single": "Pozwól na wybranie tylko jednej opcji", - "compose_form.publish": "Wyślij", + "compose_form.publish": "Opublikuj", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Zapisz zmiany", "compose_form.sensitive.hide": "Oznacz multimedia jako wrażliwe", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 971f8aa94..71a57bcb4 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Remover opção", "compose_form.poll.switch_to_multiple": "Permitir múltiplas escolhas", "compose_form.poll.switch_to_single": "Opção única", - "compose_form.publish": "TOOT", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Salvar alterações", "compose_form.sensitive.hide": "{count, plural, one {Marcar mídia como sensível} other {Marcar mídias como sensível}}", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 99ab7feb0..90285a70f 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Eliminar esta opção", "compose_form.poll.switch_to_multiple": "Alterar a votação para permitir múltiplas escolhas", "compose_form.poll.switch_to_single": "Alterar a votação para permitir uma única escolha", - "compose_form.publish": "Toot", + "compose_form.publish": "Publicar", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Guardar alterações", "compose_form.sensitive.hide": "Marcar media como sensível", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 0756608ab..34328e65b 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Elimină acestă opțiune", "compose_form.poll.switch_to_multiple": "Modifică sondajul pentru a permite mai multe opțiuni", "compose_form.poll.switch_to_single": "Modifică sondajul pentru a permite o singură opțiune", - "compose_form.publish": "Postează", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Marchează conținutul media ca fiind sensibil} few {Marchează conținuturile media ca fiind sensibile} other {Marchează conținuturile media ca fiind sensibile}}", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index badae99c0..d6927e0e4 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Убрать этот вариант", "compose_form.poll.switch_to_multiple": "Разрешить выбор нескольких вариантов", "compose_form.poll.switch_to_single": "Переключить в режим выбора одного ответа", - "compose_form.publish": "Запостить", + "compose_form.publish": "Опубликовать", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Сохранить", "compose_form.sensitive.hide": "{count, plural, one {Отметить медифайл как деликатный} other {Отметить медифайлы как деликатные}}", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index fef1913cf..f0861f9bc 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "मतमेतन्नश्यताम्", "compose_form.poll.switch_to_multiple": "मतदानं परिवर्तयित्वा बहुवैकल्पिकमतदानं क्रियताम्", "compose_form.poll.switch_to_single": "मतदानं परिवर्तयित्वा निर्विकल्पमतदानं क्रियताम्", - "compose_form.publish": "दौत्यम्", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "संवेदनशीलसामग्रीत्यङ्यताम्", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 4c3c485c6..202caa5ca 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Boga custa optzione", "compose_form.poll.switch_to_multiple": "Muda su sondàgiu pro permìtere multi-optziones", "compose_form.poll.switch_to_single": "Muda su sondàgiu pro permìtere un'optzione isceti", - "compose_form.publish": "Tut", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Marca elementu multimediale comente a sensìbile} other {Marca elementos multimediales comente sensìbiles}}", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 4c63e0eb4..4d9e0d3b5 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "මෙම තේරීම ඉවත් කරන්න", "compose_form.poll.switch_to_multiple": "තේරීම් කිහිපයකට ඉඩ දීම සඳහා මත විමසුම වෙනස් කරන්න", "compose_form.poll.switch_to_single": "තනි තේරීමකට ඉඩ දීම සඳහා මත විමසුම වෙනස් කරන්න", - "compose_form.publish": "පිඹින්න", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {මාධ්‍ය සංවේදී ලෙස සලකුණු කරන්න} other {මාධ්‍ය සංවේදී ලෙස සලකුණු කරන්න}}", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index d69adc3bd..bec2fae64 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Odstráň túto voľbu", "compose_form.poll.switch_to_multiple": "Zmeň anketu pre povolenie viacerých možností", "compose_form.poll.switch_to_single": "Zmeň anketu na takú s jedinou voľbou", - "compose_form.publish": "Pošli", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Ulož zmeny", "compose_form.sensitive.hide": "Označ médiá ako chúlostivé", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 9f9ab8a1e..5aa5d5ef3 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Hiqe këtë zgjedhje", "compose_form.poll.switch_to_multiple": "Ndrysho votimin për të lejuar shumë zgjedhje", "compose_form.poll.switch_to_single": "Ndrysho votimin për të lejuar vetëm një zgjedhje", - "compose_form.publish": "Mesazh", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Ruaji ndryshimet", "compose_form.sensitive.hide": "{count, plural, one {Vëri shenjë medias si rezervat} other {Vëru shenjë mediave si rezervat}}", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index b4e992a07..498cbf963 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Remove this choice", "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", - "compose_form.publish": "Tutni", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 159628b6c..1e6ec2086 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Одстрани овај избор", "compose_form.poll.switch_to_multiple": "Промените анкету да бисте омогућили више избора", "compose_form.poll.switch_to_single": "Промените анкету да бисте омогућили један избор", - "compose_form.publish": "Труби", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "Означи мултимедију као осетљиву", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index eb4efbc7a..46baa722e 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Ta bort detta val", "compose_form.poll.switch_to_multiple": "Ändra enkät för att tillåta flera val", "compose_form.poll.switch_to_single": "Ändra enkät för att tillåta ett enda val", - "compose_form.publish": "Tut", + "compose_form.publish": "Publicera", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Spara ändringar", "compose_form.sensitive.hide": "Markera media som känsligt", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index 7b041a208..658a3318e 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Remove this choice", "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", - "compose_form.publish": "Toot", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 43508be01..68b11b61b 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "இந்தத் தேர்வை அகற்று", "compose_form.poll.switch_to_multiple": "பல தேர்வுகளை அனுமதிக்குமாறு மாற்று", "compose_form.poll.switch_to_single": "ஒரே ஒரு தேர்வை மட்டும் அனுமதிக்குமாறு மாற்று", - "compose_form.publish": "டூட்", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "அனைவருக்கும் ஏற்றப் படம் இல்லை எனக் குறியிடு", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 2bc2a29da..89683cb63 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Remove this choice", "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", - "compose_form.publish": "Toot", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index a25a019fb..c84ecd00d 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "ఈ ఎంపికను తొలగించు", "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", - "compose_form.publish": "టూట్", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 746fc1673..5bc08533e 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "เอาตัวเลือกนี้ออก", "compose_form.poll.switch_to_multiple": "เปลี่ยนการสำรวจความคิดเห็นเป็นอนุญาตหลายตัวเลือก", "compose_form.poll.switch_to_single": "เปลี่ยนการสำรวจความคิดเห็นเป็นอนุญาตตัวเลือกเดี่ยว", - "compose_form.publish": "โพสต์", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "บันทึกการเปลี่ยนแปลง", "compose_form.sensitive.hide": "{count, plural, other {ทำเครื่องหมายสื่อว่าละเอียดอ่อน}}", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index f98574e11..c813ee1c2 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Bu seçeneği kaldır", "compose_form.poll.switch_to_multiple": "Birden çok seçeneğe izin vermek için anketi değiştir", "compose_form.poll.switch_to_single": "Tek bir seçeneğe izin vermek için anketi değiştir", - "compose_form.publish": "Tootla", + "compose_form.publish": "Yayınla", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Değişiklikleri kaydet", "compose_form.sensitive.hide": "{count, plural, one {Medyayı hassas olarak işaretle} other {Medyayı hassas olarak işaretle}}", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index e05804d93..862325f1c 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Remove this choice", "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", - "compose_form.publish": "Toot", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index 7b041a208..658a3318e 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Remove this choice", "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", - "compose_form.publish": "Toot", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 012f3c0b8..32d5dce84 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Видалити цей варіант", "compose_form.poll.switch_to_multiple": "Дозволити вибір декількох відповідей", "compose_form.poll.switch_to_single": "Перемкнути у режим вибору однієї відповіді", - "compose_form.publish": "Надіслати", + "compose_form.publish": "Опублікувати", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Зберегти зміни", "compose_form.sensitive.hide": "{count, plural, one {Позначити медіа делікатним} other {Позначити медіа делікатними}}", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index d5ed07a9c..d4daaceb3 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "یہ انتخاب ہٹا دیں", "compose_form.poll.switch_to_multiple": "متعدد انتخاب کی اجازت دینے کے لیے پول تبدیل کریں", "compose_form.poll.switch_to_single": "کسی ایک انتخاب کے لیے پول تبدیل کریں", - "compose_form.publish": "ٹوٹ", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "وسائل کو حساس نشاندہ کریں", diff --git a/app/javascript/mastodon/locales/whitelist_fy.json b/app/javascript/mastodon/locales/whitelist_fy.json new file mode 100644 index 000000000..0d4f101c7 --- /dev/null +++ b/app/javascript/mastodon/locales/whitelist_fy.json @@ -0,0 +1,2 @@ +[ +] diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index 02b0ed563..c6528fbe7 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Remove this choice", "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", - "compose_form.publish": "Toot", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 8511543e6..a7bf96f9e 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "移除此选项", "compose_form.poll.switch_to_multiple": "将投票改为多选", "compose_form.poll.switch_to_single": "将投票改为单选", - "compose_form.publish": "Toot!", + "compose_form.publish": "发布", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "保存更改", "compose_form.sensitive.hide": "{count, plural, one {将媒体标记为敏感内容} other {将媒体标记为敏感内容}}", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index dc0b794dd..d757b9daf 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "移除此選擇", "compose_form.poll.switch_to_multiple": "變更投票為允許多個選項", "compose_form.poll.switch_to_single": "變更投票為限定單一選項", - "compose_form.publish": "發文", + "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "標記媒體為敏感內容", diff --git a/config/locales/activerecord.fy.yml b/config/locales/activerecord.fy.yml new file mode 100644 index 000000000..a3398cfba --- /dev/null +++ b/config/locales/activerecord.fy.yml @@ -0,0 +1,24 @@ +--- +fy: + activerecord: + attributes: + poll: + options: Karren + user: + email: E-mailadres + locale: Taal + password: Wachtwurd + user/account: + username: Brûkersnamme + user/invite_request: + text: Reden + errors: + models: + account: + attributes: + username: + invalid: mei allinnich letters, nûmers en ûnderstreekjes befetsje + user: + attributes: + email: + unreachable: liket net te bestean diff --git a/config/locales/br.yml b/config/locales/br.yml index 07e12a531..f7c060579 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -10,6 +10,8 @@ br: discover_users: Dizoleiñ implijer·ien·ezed learn_more: Gouzout hiroc'h privacy_policy: Reolennoù prevezded + rules: Reolennoù ar servijer + server_stats: 'Stadegoù ar servijer:' source_code: Boneg tarzh status_count_after: few: toud @@ -36,6 +38,7 @@ br: other: Heulier·ez two: Heulier·ez following: O heuliañ + media: Media posts: few: Toud many: Toud @@ -52,6 +55,7 @@ br: unfollow: Diheuliañ admin: accounts: + avatar: Avatar by_domain: Domani change_email: current_email: Postel bremanel @@ -60,6 +64,7 @@ br: submit: Kemm ar postel deleted: Dilamet domain: Domani + edit: Aozañ email: Postel enable: Gweredekaat enabled: Gweredekaet diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 461d27fa3..f0efd3f50 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -428,6 +428,7 @@ ca: destroyed_msg: El bloqueig de domini s'ha desfet domain: Domini edit: Editar el bloqueig del domini + existing_domain_block: Ja s'han imposat mesures més estrictes a %{name}. existing_domain_block_html: Ja has imposat uns límits més estrictes a %{name}, l'hauries de desbloquejar-lo primer. new: create: Crea un bloqueig diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 9244ddeac..0140d4127 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -76,7 +76,7 @@ cs: last_active: naposledy aktivní link_verified_on: Vlastnictví tohoto odkazu bylo zkontrolováno %{date} media: Média - moved_html: "%{name} se přesunul a na %{new_profile_link}:" + moved_html: 'Uživatel %{name} se přesunul na %{new_profile_link}:' network_hidden: Tato informace není k dispozici nothing_here: Nic tu není! people_followed_by: Lidé, které sleduje %{name} @@ -209,8 +209,8 @@ cs: security_measures: only_password: Pouze heslo password_and_2fa: Heslo a 2FA - sensitive: Citlivý - sensitized: označen jako citlivý + sensitive: Vynutit citlivost + sensitized: Označen jako citlivý shared_inbox_url: URL sdílené příchozí schránky show: created_reports: Vytvořená hlášení @@ -228,10 +228,10 @@ cs: unblock_email: Odblokovat e-mailovou adresu unblocked_email_msg: E-mailová adresa %{username} byla úspěšně odblokována unconfirmed_email: Nepotvrzený e-mail - undo_sensitized: Vrátit zpět citlivost + undo_sensitized: Zrušit vynucení citlivosti undo_silenced: Zrušit omezení undo_suspension: Zrušit pozastavení - unsilenced_msg: Omezení účtu %{username} úspěšně odstraněno + unsilenced_msg: Omezení účtu %{username} úspěšně zrušeno unsubscribe: Přestat odebírat unsuspended_msg: Úspěšně obnoven účet %{username} username: Uživatelské jméno @@ -279,12 +279,12 @@ cs: reopen_report: Znovu otevřít hlášení reset_password_user: Obnovit heslo resolve_report: Označit hlášení jako vyřešené - sensitive_account: Označit média ve vašem účtu jako citlivá + sensitive_account: Vynucení citlivosti účtu silence_account: Omezit účet suspend_account: Pozastavit účet unassigned_report: Zrušit přiřazení hlášení unblock_email_account: Odblokovat e-mailovou adresu - unsensitive_account: Zrušit označení médií ve vašem účtu jako citlivých + unsensitive_account: Zrušit vynucení citlivosti účtu unsilence_account: Zrušit omezení účtu unsuspend_account: Zrušit pozastavení účtu update_announcement: Aktualizovat oznámení @@ -331,12 +331,12 @@ cs: reset_password_user_html: Uživatel %{name} obnovil heslo uživatele %{target} resolve_report_html: Uživatel %{name} vyřešil hlášení %{target} sensitive_account_html: "%{name} označil média účtu %{target} jako citlivá" - silence_account_html: Uživatel %{name} ztišil uživatele %{target} + silence_account_html: Uživatel %{name} omezil účet %{target} suspend_account_html: Uživatel %{name} pozastavil účet uživatele %{target} unassigned_report_html: Uživatel %{name} odebral hlášení %{target} unblock_email_account_html: Uživatel %{name} odblokoval e-mailovou adresu %{target} unsensitive_account_html: "%{name} zrušil označení médií účtu %{target} jako citlivých" - unsilence_account_html: Uživatel %{name} zrušil ztišení uživatele %{target} + unsilence_account_html: Uživatel %{name} zrušil omezení účtu %{target} unsuspend_account_html: Uživatel %{name} zrušil pozastavení účtu uživatele %{target} update_announcement_html: Uživatel %{name} aktualizoval oznámení %{target} update_custom_emoji_html: Uživatel %{name} aktualizoval emoji %{target} @@ -443,10 +443,11 @@ cs: domain_blocks: add_new: Přidat novou blokaci domény created_msg: Blokace domény se právě vyřizuje - destroyed_msg: Blokace domény byla vrácena + destroyed_msg: Blokace domény byla odvolána domain: Doména edit: Upravit blokaci domény - existing_domain_block_html: Pro účet %{name} jste už nastavili přísnější omezení, nejprve jej odblokujte. + existing_domain_block: Pro %{name} už jste nastavili přísnější omezení. + existing_domain_block_html: Pro %{name} už jste nastavili přísnější omezení, nejprve ji odblokujte. new: create: Vytvořit blokaci hint: Blokace domény nezakáže vytváření záznamů účtů v databázi, ale bude na tyto účty zpětně a automaticky aplikovat specifické metody moderování. @@ -466,7 +467,7 @@ cs: reject_media_hint: Odstraní lokálně uložené mediální soubory a odmítne jejich stahování v budoucnosti. Nepodstatné pro pozastavení reject_reports: Odmítat hlášení reject_reports_hint: Ignorovat všechna hlášení pocházející z této domény. Nepodstatné pro pozastavení - undo: Vrátit blokaci domény + undo: Odvolat blokaci domény view: Zobrazit blokaci domény email_domain_blocks: add_new: Přidat @@ -1332,7 +1333,7 @@ cs: code_hint: Pro potvrzení zadejte kód vygenerovaný Vaší ověřovací aplikací description_html: Zapnete-li dvoufázové ověřování pomocí ověřovací aplikace, k přihlášení budete u sebe muset mít svůj mobil, který pro Vás bude generovat kódy k opsání. enable: Zapnout - instructions_html: "Naskenujte tento QR kód do Google Authenticator nebo podobné TOTP aplikace na Vašem telefonu. Následně bude tato aplikace generovat kódy, které budete zadávat při přihlašování." + instructions_html: "Naskenujte tento QR kód do Google Authenticator nebo podobné TOTP aplikace na svém telefonu. Následně bude tato aplikace generovat kódy, které budete zadávat při přihlašování." manual_instructions: 'Nemůžete-li načíst QR kód a potřebujete ho zadat ručně, zde je tajemství v textové podobě:' setup: Nastavit wrong_code: Zadaný kód je neplatný! Je čas na serveru i zařízení generujícím kód správný? @@ -1404,7 +1405,7 @@ cs: account: Veřejné příspěvky od @%{acct} tag: 'Veřejné příspěvky s hashtagem #%{hashtag}' scheduled_statuses: - over_daily_limit: Překročili jste limit %{limit} příspěvků naplánovaných na tento den + over_daily_limit: Pro dnešek jste překročili limit %{limit} naplánovaných příspěvků over_total_limit: Překročili jste limit %{limit} naplánovaných příspěvků too_soon: Plánované datum musí být v budoucnosti sessions: diff --git a/config/locales/da.yml b/config/locales/da.yml index b1c26b68b..0195aa5a3 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -428,6 +428,7 @@ da: destroyed_msg: Domæneblokering er blevet fjernet domain: Domæne edit: Redigér domæneblokering + existing_domain_block: "%{name} er allerede pålagt strengere restriktioner." existing_domain_block_html: Der har allerede pålagt %{name} strengere begrænsninger, så dette kræver først en afblokering. new: create: Opret blokering diff --git a/config/locales/de.yml b/config/locales/de.yml index abe988a98..a52841a39 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -1525,6 +1525,55 @@ de: tags: does_not_match_previous_name: entspricht nicht dem vorherigen Namen terms: + body_html: | +

Datenschutzerklärung

+

Welche Informationen sammeln wir?

+
    +
  • Grundlegende Kontoinformationen: Wenn du dich auf diesem Server registrierst, wirst du darum gebeten, einen Benutzernamen, eine E-Mail-Adresse und ein Passwort einzugeben. Du kannst auch zusätzliche Profilinformationen wie etwa einen Anzeigenamen oder eine Biografie eingeben und ein Profilbild oder ein Headerbild hochladen. Der Benutzername, der Anzeigename, die Biografie, das Profilbild und das Headerbild werden immer öffentlich angezeigt.
  • +
  • Beiträge, Folge- und andere öffentliche Informationen: Die Liste der Leute, denen du folgst, wird öffentlich gezeigt, das gleiche gilt für deine Folgenden (Follower). Sobald du eine Nachricht übermittelst, wird das Datum und die Uhrzeit gemeinsam mit der Information, welche Anwendung du dafür verwendet hast, gespeichert. Nachricht können Medienanhänge enthalten, etwa Bilder und Videos. Öffentliche und ungelistete Beiträge sind öffentlich verfügbar. Sobald du einen Beitrag auf deinem Profil anpinnst, sind dies auch öffentlich verfügbare Informationen. Deine Beiträge werden an deine Folgenden ausgeliefert, was in manchen Fällen bedeutet, dass sie an andere Server ausgeliefert werden und dort Kopien gespeichert werden. Sobald du Beiträge löschst, wird dies ebenso an deine Follower ausgeliefert. Die Handlungen des Teilens und Favorisieren eines anderen Beitrages ist immer öffentlich.
  • +
  • Direkte und "Nur Folgende"-Beiträge: Alle Beiträge werden auf dem Server gespeichert und verarbeitet. "Nur Folgende"-Beiträge werden an deine Folgenden und an Benutzer, die du in ihnen erwähnst, ausgeliefert, direkte Beiträge nur an in ihnen erwähnte Benutzer. In manchen Fällen bedeutet dass, dass sie an andere Server ausgeliefert werden und dort Kopien gespeichert werden. Wir bemühen uns nach bestem Wissen und Gewissen, den Zugriff auf diese Beiträge auf nur autorisierte Personen einzuschränken, jedoch könnten andere Server dabei scheitern. Deswegen ist es wichtig, die Server, zu denen deine Folgenden gehören, zu überprüfen. Du kannst eine Option in den Einstellungen umschalten, um neue Folgenden manuell anzunehmen oder abzuweisen. Bitte beachte, dass die Betreiber des Server und jedes empfangenden Servers solche Nachrichten anschauen könnten und dass Empfänger von diesen eine Bildschirmkopie erstellen könnten, sie kopieren oder anderweitig weiterverteilen könnten. Teile nicht irgendwelche sensiblen Informationen über Mastodon.
  • +
  • Internet Protocol-Adressen (IP-Adressen) und andere Metadaten: Sobald du dich anmeldest, erfassen wir sowohl die IP-Adresse, von der aus du dich anmeldest, als auch den Namen deine Browseranwendung. Alle angemeldeten Sitzungen (Sessions) sind für deine Überprüfung und Widerruf in den Einstellungen verfügbar. Die letzte verwendete IP-Adresse wird bis zu 12 Monate lang gespeichert. Wir könnten auch Serverprotokoll behalten, welche die IP-Adresse von jeder Anfrage an unseren Server enthalten.
  • +
+
+

Für was verwenden wir deine Informationen?

+

Jede der von dir gesammelten Information kann in den folgenden Weisen verwendet werden:

+
    +
  • Um die Kernfunktionalität von Mastodon bereitzustellen. Du kannst du mit dem Inhalt anderer Leute interagieren und deine eigenen Inhalte beitragen, wenn du angemeldet bist. Zum Beispiel kannst du anderen folgen, um deren kombinierten Beiträge in deine personalisierten Start-Timeline zu sehen.
  • +
  • Um Moderation der Community zu ermöglichen, zum Beispiel beim Vergleichen deiner IP-Adresse mit anderen bekannten, um Verbotsumgehung oder andere Vergehen festzustellen.
  • +
  • Die E-Mail-Adresse, die du bereitstellst, kann dazu verwendet werden, dir Informationen, Benachrichtigungen über andere Leute, die mit deinen Inhalten interagieren oder dir Nachrichten senden, und auf Anfragen, Wünsche und/oder Fragen zu antworten.
  • +
+
+

Wie beschützen wir deine Informationen?

+

Wir implementieren eine Reihe von Sicherheitsmaßnahmen, um die Sicherheit deiner persönlichen Information sicherzustellen, wenn du persönliche Informationen eingibst, übermittelst oder auf sie zugreifst. Neben anderen Dingen, wird sowohl deine Browsersitzung, als auch der Datenverkehr zwischen deinen Anwendungen und der Programmierschnittstelle (API) mit SSL gesichert, dein Passwort wird mit einem starken Einwegalgorithmus gehasht. Du kannst Zwei-Faktor-Authentifizierung aktivieren, um den Zugriff auf dein Konto zusätzlich abzusichern.

+
+

Was ist unsere Datenspeicherungsrichtlinie?

+

Wir werden mit bestem Wissen und Gewissen:

+
    +
  • Serverprotokolle, die IP-Adressen von allen deinen Anfragen an diesen Server, falls solche Protokolle behalten werden, für nicht mehr als 90 Tage behalten.
  • +
  • registrierten Benutzer zugeordnete IP-Adressen nicht länger als 12 Monate behalten.
  • +
+

Du kannst ein Archiv deines Inhalts anfordern und herunterladen, inkludierend deiner Beiträge, Medienanhänge, Profilbilder und Headerbilder.

+

Es ist in den meisten Fällen möglich dein Konto jederzeit eigenmächtig unwiderruflich zu löschen.

+
+

Verwenden wir Cookies?

+

Ja. Cookies sind kleine Dateien, die eine Webseite oder ihr Serviceanbieter über deinen Webbrowser (sofern er es erlaubt) auf die Festplatte deines Computers überträgt. Diese Cookies ermöglichen es der Seite deinen Browser wiederzuerkennen und, sofern du ein registriertes Konto hast, diesen mit deinem registrierten Konto zu verknüpfen.

+

Wir verwenden Cookies, um deine Einstellungen zu verstehen und für zukünftige Besuche zu speichern.

+
+

Offenbaren wir Informationen an Dritte?

+

Wir verkaufen nicht, handeln nicht mit oder übertragen deine persönlich identifizierbaren Informationen nicht an Dritte. Dies beinhaltet nicht Dritte, die vertrauenswürdig sind und uns beim Betreiben unserer Seite, Leiten unseres Geschäftes oder dabei, die Dienste für dich bereitzustellen, unterstützen, sofern diese Dritte zustimmen, diese Informationen vertraulich zu halten. Wir können auch Informationen freigeben, wenn wir glauben, dass Freigabe angemessen ist, um dem Gesetz zu entsprechen, unsere Seitenrichtlinien durchzusetzen oder unsere Rechte, Eigentum und/oder Sicherheit oder die anderer zu beschützen.

+

Dein öffentlicher Inhalt kann durch andere Server im Netzwerk heruntergeladen werden. Deine öffentlichen und "Nur Folgende"-Beiträge werden an die Server ausgeliefert, bei denen sich deine Folgenden befinden und direkte Nachrichten werden an die Server des Empfängers ausgeliefert, falls diese Folgenden oder Empfänger sich auf einem anderen Server als diesen befinden.

+

Wenn du eine Anwendung autorisierst, dein Konto zu benutzen, kann diese – abhängig von den von dir genehmigten Befugnissen – auf deine öffentlichen Profilinformationen, deine Folgt- und Folgende-Liste, deine Listen, alle deine Beiträge und deine Favoriten zugreifen. Anwendungen können nie auf deine E-Mail-Adresse oder dein Passwort zugreifen

+
+

Webseitenbenutzung durch Kinder

+

Wenn sich dieser Server in der EU oder im Europäischen Wirtschaftsraum befindet: Unsere Website, Produkte und Dienstleistungen sind alle an Leute gerichtet, die mindestens 16 Jahre als sind. Wenn du unter 16 bist, darfst du nach den Bestimmungen der DSGVO (Datenschutz-Grundverordnung) diese Webseite nicht benutzen.

+

Wenn sich dieser Server in den USA befindet: Unsere Webseite, Produkte und Dienstleistungen sind alle an Leute gerichtet, die mindestens 13 Jahre alt sind. Wenn du unter 13 bist, darfst du nach den Bestimmungen des COPPA (Children's Online Privacy Protection Act, dt. "Gesetz zum Schutz der Privatsphäre von Kindern im Internet") diese Webseite nicht benutzen.

+

Gesetzesvorschriften können unterschiedlich sein, wenn sich dieser Server in anderer Gerichtsbarkeit befindet.

+
+

Änderung an unserer Datenschutzerklärung

+

Wenn wir uns entscheiden, Änderungen an unserer Datenschutzerklärung vorzunehmen, werden wir diese Änderungen auf dieser Seite bekannt gegeben.

+

Dies ist eine Übersetzung, Irrtümer und Übersetzungsfehler vorbehalten. Im Zweifelsfall gilt die englische Originalversion.

+

Dieses Dokument ist CC-BY-SA. Es wurde zuletzt aktualisiert am 26. Mai 2022.

+

Ursprünglich übernommen von der Discourse-Datenschutzerklärung.

title: "%{instance} Nutzungsbedingungen und Datenschutzerklärung" themes: contrast: Mastodon (Hoher Kontrast) diff --git a/config/locales/devise.fy.yml b/config/locales/devise.fy.yml new file mode 100644 index 000000000..e96c4089d --- /dev/null +++ b/config/locales/devise.fy.yml @@ -0,0 +1,7 @@ +--- +fy: + devise: + failure: + inactive: Jo account is not net aktivearre. + passwords: + updated_not_active: Jo wachtwurd is mei sukses feroare. diff --git a/config/locales/doorkeeper.fy.yml b/config/locales/doorkeeper.fy.yml new file mode 100644 index 000000000..385274868 --- /dev/null +++ b/config/locales/doorkeeper.fy.yml @@ -0,0 +1,23 @@ +--- +fy: + activerecord: + attributes: + doorkeeper/application: + name: Namme fan applikaasje + website: Webstee fan applikaasje + errors: + models: + doorkeeper/application: + attributes: + redirect_uri: + fragment_present: mei gjin fragmint befetsje. + invalid_uri: moat in jildige URI wêze. + relative_uri: moat in absolute URI wêze. + secured_uri: moat in HTTPS/SSL URI wêze. + doorkeeper: + grouped_scopes: + title: + conversations: Petearen + scopes: + write:conversations: petearen negearre en fuortsmite + write:mutes: minsken en petearen negearre diff --git a/config/locales/doorkeeper.ru.yml b/config/locales/doorkeeper.ru.yml index ff0e48720..7f4cca82b 100644 --- a/config/locales/doorkeeper.ru.yml +++ b/config/locales/doorkeeper.ru.yml @@ -76,6 +76,7 @@ ru: last_used_at: Последнее использование %{date} never_used: Не использовалось scopes: Разрешения + superapp: Внутреннее title: Ваши авторизованные приложения errors: messages: diff --git a/config/locales/el.yml b/config/locales/el.yml index 47f7097e8..1320dcbb4 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -340,6 +340,7 @@ el: destroyed_msg: Ο αποκλεισμός τομέα άρθηκε domain: Τομέας edit: Διαχείρηση αποκλεισμένου τομέα + existing_domain_block: Έχετε ήδη επιβάλει αυστηρότερα όρια στο %{name}. existing_domain_block_html: Έχεις ήδη επιβάλλει αυστηρότερους περιορισμούς στο %{name}, πρώτα θα πρέπει να τους αναιρέσεις. new: create: Δημιουργία αποκλεισμού diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index b01f983b0..aeba0b97d 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -428,6 +428,7 @@ es-AR: destroyed_msg: Se deshizo el bloqueo de dominio domain: Dominio edit: Editar bloqueo de dominio + existing_domain_block: Ya impusiste límites más estrictos a %{name}. existing_domain_block_html: Ya le aplicaste límites más estrictos a %{name}, por lo que primero necesitás desbloquearlo. new: create: Crear bloqueo diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index f396d6138..5f9a9f5e7 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -1525,6 +1525,54 @@ es-MX: tags: does_not_match_previous_name: no coincide con el nombre anterior terms: + body_html: | +

Política de Privacidad

+

¿Qué información recogemos?

+
    +
  • Información básica sobre su cuenta: Si se registra en este servidor, se le requerirá un nombre de usuario, una dirección de correo electrónico y una contraseña. Además puede incluir información adicional en el perfil como un nombre de perfil y una biografía, y subir una foto de perfil y una imagen de cabecera. El nombre de usuario, nombre de perfil, biografía, foto de perfil e imagen de cabecera siempre son visibles públicamente
  • +
  • Publicaciones, seguimiento y otra información pública: La lista de gente a la que sigue es mostrada públicamente, al igual que sus seguidores. Cuando publica un mensaje, la fecha y hora es almacenada, así como la aplicación desde la cual publicó el mensaje. Los mensajes pueden contener archivos adjuntos multimedia, como imágenes y vídeos. Las publicaciones públicas y no listadas están disponibles públicamente. Cuando destaca una entrada en su perfil, también es información disponible públicamente. Sus publicaciones son entregadas a sus seguidores, en algunos casos significa que son entregadas a diferentes servidores y las copias son almacenadas allí. Cuando elimina publicaciones, esto también se transfiere a sus seguidores. La acción de rebloguear o marcar como favorito otra publicación es siempre pública.
  • +
  • Publicaciones directas y sólo para seguidores: Todos los mensajes se almacenan y procesan en el servidor. Los mensajes sólo para seguidores se entregan a los seguidores y usuarios que se mencionan en ellos, y los mensajes directos se entregan sólo a los usuarios que se mencionan en ellos. En algunos casos significa que se entregan a diferentes servidores y que las copias se almacenan allí. Hacemos un esfuerzo de buena fe para limitar el acceso a esas publicaciones sólo a las personas autorizadas, pero otros servidores pueden no hacerlo. Por lo tanto, es importante revisar los servidores a los que pertenecen sus seguidores. Puede cambiar una opción para aprobar y rechazar nuevos seguidores manualmente en la configuración Por favor, tenga en cuenta que los operadores del servidor y de cualquier servidor receptor pueden ver dichos mensajes, y que los destinatarios pueden capturarlos, copiarlos o volver a compartirlos de alguna otra manera. No comparta ninguna información sensible en Mastodon.
  • +
  • Direcciones IP y otros metadatos: Al iniciar sesión, registramos la dirección IP desde la que se ha iniciado sesión, así como el nombre de la aplicación de su navegador. Todas las sesiones iniciadas están disponibles para su revisión y revocación en los ajustes. La última dirección IP utilizada se almacena hasta 12 meses. También podemos conservar los registros del servidor que incluyen la dirección IP de cada solicitud a nuestro servidor.
  • +
+
+

¿Para qué utilizamos su información?

+

Toda la información que obtenemos de usted puede ser utilizada de las siguientes maneras:

+
    +
  • Para proporcionar la funcionalidad principal de Mastodon. Sólo puedes interactuar con el contenido de otras personas y publicar tu propio contenido cuando estés conectado. Por ejemplo, puedes seguir a otras personas para ver sus mensajes combinados en tu propia línea de tiempo personalizada.
  • +
  • Para ayudar a la moderación de la comunidad, por ejemplo, comparando su dirección IP con otras conocidas para determinar la evasión de prohibiciones u otras violaciones.
  • +
  • La dirección de correo electrónico que nos proporcione podrá utilizarse para enviarle información, notificaciones sobre otras personas que interactúen con su contenido o para enviarle mensajes, así como para responder a consultas y/u otras solicitudes o preguntas.
  • +
+
+

¿Cómo protegemos su información?

+

Implementamos una variedad de medidas de seguridad para mantener la seguridad de su información personal cuando usted ingresa, envía o accede a su información personal. Entre otras cosas, la sesión de su navegador, así como el tráfico entre sus aplicaciones y la API, están protegidos con SSL, y su contraseña está protegida mediante un algoritmo unidireccional fuerte. Puede habilitar la autenticación de dos factores para un acceso más seguro a su cuenta.

+
+

¿Cuál es nuestra política de retención de datos?

+

Haremos un esfuerzo de buena fe para:

+
    +
  • Conservar los registros del servidor que contengan la dirección IP de todas las peticiones a este servidor, en la medida en que se mantengan dichos registros, no más de 90 días.
  • +
  • Conservar las direcciones IP asociadas a los usuarios registrados no más de 12 meses.
  • +
+

Puede solicitar y descargar un archivo de su contenido, incluidos sus mensajes, archivos adjuntos multimedia, foto de perfil e imagen de cabecera.

+

Usted puede borrar su cuenta de forma irreversible en cualquier momento.

+
+

¿Utilizamos cookies?

+

Sí. Las cookies son pequeños archivos que un sitio o su proveedor de servicios transfiere al disco duro de su ordenador a través de su navegador web (si usted lo permite). Estas cookies permiten al sitio reconocer su navegador y, si tiene una cuenta registrada, asociarla con su cuenta registrada.

+

Utilizamos cookies para entender y guardar sus preferencias para futuras visitas.

+
+

¿Revelamos alguna información a terceros?

+

No vendemos, comerciamos ni transferimos a terceros su información personal identificable. Esto no incluye a los terceros de confianza que nos asisten en la operación de nuestro sitio, en la realización de nuestros negocios o en la prestación de servicios, siempre y cuando dichas partes acuerden mantener la confidencialidad de esta información. También podemos divulgar su información cuando creamos que es apropiado para cumplir con la ley, hacer cumplir las políticas de nuestro sitio, o proteger nuestros u otros derechos, propiedad o seguridad.

+

Su contenido público puede ser descargado por otros servidores de la red. Tus mensajes públicos y sólo para seguidores se envían a los servidores donde residen tus seguidores, y los mensajes directos se envían a los servidores de los destinatarios, en la medida en que dichos seguidores o destinatarios residan en un servidor diferente.

+

Cuando usted autoriza a una aplicación a usar su cuenta, dependiendo del alcance de los permisos que usted apruebe, puede acceder a la información de su perfil público, su lista de seguimiento, sus seguidores, sus listas, todos sus mensajes y sus favoritos. Las aplicaciones nunca podrán acceder a su dirección de correo electrónico o contraseña.

+
+

Uso del sitio por parte de los niños

+

Si este servidor está en la UE o en el EEE: Nuestro sitio, productos y servicios están dirigidos a personas mayores de 16 años. Si es menor de 16 años, según los requisitos de la GDPR (General Data Protection Regulation) no utilice este sitio.

+

Si este servidor está en los EE.UU.: Nuestro sitio, productos y servicios están todos dirigidos a personas que tienen al menos 13 años de edad. Si usted es menor de 13 años, según los requisitos de COPPA (Children's Online Privacy Protection Act) no utilice este sitio.

+

Los requisitos legales pueden ser diferentes si este servidor está en otra jurisdicción.

+
+

Cambios en nuestra Política de Privacidad

+

Si decidimos cambiar nuestra política de privacidad, publicaremos esos cambios en esta página.

+

Este documento es CC-BY-SA. Fue actualizado por última vez el 26 de mayo de 2022.

+

Adaptado originalmente desde la política de privacidad de Discourse.

title: Términos del Servicio y Políticas de Privacidad de %{instance} themes: contrast: Alto contraste diff --git a/config/locales/es.yml b/config/locales/es.yml index fcab7856a..900193134 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -428,6 +428,7 @@ es: destroyed_msg: El bloque de dominio se deshizo domain: Dominio edit: Editar nuevo dominio bloqueado + existing_domain_block: Ya impusiste límites más estrictos a %{name}. existing_domain_block_html: Ya ha impuesto límites más estrictos a %{name}, necesita desbloquearlo primero. new: create: Crear bloque diff --git a/config/locales/fy.yml b/config/locales/fy.yml new file mode 100644 index 000000000..fa727d6fe --- /dev/null +++ b/config/locales/fy.yml @@ -0,0 +1,54 @@ +--- +fy: + about: + active_count_after: warber + active_footnote: Moanliks Warbere Brûkers (MWB) + accounts: + last_active: letst warber + admin: + accounts: + moderation: + active: Aktyf + security_measures: + only_password: Allinnich wachtwurd + password_and_2fa: Wachtwurd en 2FA + dashboard: + active_users: warbere brûkers + top_languages: Meast aktive talen + top_servers: Meast aktive tsjinners + instances: + confirm_purge: Wolle jo werklik alle gegevens fan dit domein foar ivich fuortsmite? + dashboard: + instance_accounts_measure: bewarre accounts + system_checks: + database_schema_check: + message_html: Der binne database migraasjes yn ôfwachting. Jo moatte dizze útfiere om der foar te soargjen dat de applikaasje wurkjen bliuwt sa as it heard + errors: + '400': The request you submitted was invalid or malformed. + '403': You don't have permission to view this page. + '404': The page you are looking for isn't here. + '406': This page is not available in the requested format. + '410': The page you were looking for doesn't exist here anymore. + '422': + '429': Too many requests + '500': + '503': The page could not be served due to a temporary server failure. + filters: + contexts: + thread: Petearen + notification_mailer: + digest: + mention: "%{name} hat jo fermeld yn:" + mention: + action: Beäntwurdzje + body: 'Jo binne fermeld troch %{name} yn:' + subject: Jo binne fermeld troch %{name} + title: Nije fermelding + relationships: + last_active: Letst warber + rss: + content_warning: 'Ynhâldswarskôging:' + statuses: + content_warning: 'Ynhâldswarskôging: %{warning}' + pin_errors: + direct: Berjochten dy allinnich sichtber binne foar fermelde brûkers kinne net fêstset wurde diff --git a/config/locales/gl.yml b/config/locales/gl.yml index ba3084f90..48435b45b 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -428,6 +428,7 @@ gl: destroyed_msg: Desfíxose o bloqueo de dominio domain: Dominio edit: Editar bloqueo de dominio + existing_domain_block: Xa tes establecidas restricións maiores para %{name}. existing_domain_block_html: Xa impuxeches límites máis estrictos a %{name}, precisas desbloquealo primeiro. new: create: Crear bloqueo @@ -1525,6 +1526,54 @@ gl: tags: does_not_match_previous_name: non concorda co nome anterior terms: + body_html: | +

Privacidade

+

Que información recollemos?

+
    +
  • Información básica da conta: Se te rexistras neste servidor, pedirémosche un nome de usuaria, un enderezo de correo electrónico e un contrasinal. De xeito adicional tamén poderás incluír información como un nome público e biografía, tamén subir unha fotografía de perfil e unha imaxe para a cabeceira. O nome de usuaria, o nome público, a biografía e as imaxes de perfil e cabeceira sempre se mostran de xeito público.
  • +
  • Publicacións, seguimento e outra información pública: A lista das persoas que segues é unha lista pública, o mesmo acontece coas persoas que te seguen. Cando envías unha mensaxe, a data e hora gárdanse así como a aplicación que utilizaches para enviar a mensaxe. As publicacións poderían incluír ficheiros multimeda, como fotografías e vídeos. As publicacións públicas e as non listadas están dispoñibles de xeito público. Cando destacas unha publicación no teu perfil tamén é pública. As publicacións son enviadas as túas seguidoras, nalgúns casos pode acontecer que estén en diferentes servidores e gárdanse copias neles. Cando eleminas unha publicación tamén se envía ás túas seguidoras. A acción de volver a publicar ou marcar como favorita outra publicación sempre é pública.
  • +
  • Mensaxes directas e só para seguidoras: Todas as mensaxes gárdanse e procésanse no servidor. As mensaxes só para seguidoras son entregadas ás túas seguidoras e ás usuarias que son mencionadas nelas, e as mensaxes directas entréganse só ás usuarias mencionadas en elas. Nalgúns casos esto implica que son entregadas a diferentes servidores e gárdanse copias alí. Facemos un esforzo honesto para limitar o acceso a esas publicacións só ás persoas autorizadas, pero outros servidores poderían non ser tan escrupulosos. Polo tanto, é importante revisar os servidores onde se hospedan as túas seguidoras. Nos axustes podes activar a opción de aprobar ou rexeitar novas seguidoras de xeito manual. Ten en conta que a administración do servidor e todos os outros servidores implicados poden ver as mensaxes., e as destinatarias poderían facer capturas de pantalla, copiar e volver a compartir as mensaxes. Non compartas información sensible en Mastodon.
  • +
  • IPs e outros metadatos: Cando te conectas, gravamos o IP desde onde te conectas, así como o nome da aplicación desde onde o fas. Todas as sesións conectadas están dispoñibles para revisar e revogar nos axustes. O último enderezo IP utilizado gárdase ate por 12 meses. Tamén poderiamos gardar informes do servidor que inclúan o enderezo IP de cada petición ao servidor.
  • +
+
+

De que xeito utilizamos os teus datos?

+

Toda a información que recollemos podería ser utilizada dos seguintes xeitos:

+
    +
  • Para proporcionar a funcionabiliade básica de Mastodon. Só podes interactuar co contido de outra xente e publicar o teu propio contido se inicias sesión. Por exemplo, poderías seguir outra xente e ver as súas publicacións combinadas nunha cronoloxía de inicio personalizada.
  • +
  • Para axudar a moderar a comunidade, por exemplo comparando o teu enderezo IP con outros coñecidos para evitar esquivar os rexeitamentos ou outras infraccións.
  • +
  • O enderezo de correo electrónico que nos proporcionas podería ser utilizado para enviarche información, notificacións sobre outra xente que interactúa coas túas publicacións ou che envía mensaxes, e para responder a consultas, e/ou outras cuestións ou peticións.
  • +
+
+

Como proxetemos os teus datos?

+

Implementamos varias medidas de seguridade para protexer os teus datos persoais cando introduces, envías ou accedes á túa información persoal. Entre outras medidas, a túa sesión de navegación, así como o tráfico entre as túas aplicacións e o API están aseguradas mediante SSL, e o teu contrasinal está camuflado utilizando un algoritmo potente de unha sóa vía. Podes habilitar a autenticación por dobre factor para protexer aínda máis o acceso á túa conta.

+
+

Cal é a nosa política de retención de datos?

+

Faremos un sincero esforzo en:

+
    +
  • Protexer informes do servidor que conteñan direccións IP das peticións ao servidor, actualmente estos informes gárdanse por non máis de 90 días.
  • +
  • Reter os enderezos IP asociados con usuarias rexistradas non máis de 12 meses.
  • +
+

Podes solicitar e descargar un ficheiro cos teus contidos, incluíndo publicacións, anexos multimedia, imaxes de perfil e imaxe da cabeceira.

+

En todo momento podes eliminar de xeito irreversible a túa conta.

+
+

Utilizamos cookies?

+

Si. As cookies son pequenos ficheiros que un sitio web ou o provedor de servizo transfiren ao disco duro da túa computadora a través do navegador web (se o permites). Estas cookies posibilitan ao sitio web recoñecer o teu navegador e, se tes unha conta rexistrada, asocialo con dita conta.

+

Utilizamos cookies para comprender e gardar as túas preferencias para futuras visitas.

+
+

Entregamos algunha información a terceiras partes alleas?

+

Non vendemos, negociamos ou transferimos de ningún xeito a terceiras partes alleas a túa información identificativa persoal. Esto non inclúe terceiras partes de confianza que nos axudan a xestionar o sitio web, a xestionar a empresa, ou darche servizo se esas partes aceptan manter esa información baixo confidencialidade. Poderiamos liberar esa información se cremos que eso da cumplimento axeitado a lei, reforza as políticas do noso sitio ou protexe os nosos, e de outros, dereitos, propiedade ou seguridade.

+

O teu contido público podería ser descargado por outros servidores na rede. As túas publicacións públicas e para só seguidoras son entregadas aos servidores onde residen as túas seguidoras na rede, e as mensaxes directas son entregadas aos servidores das destinatarias sempre que esas seguidoras ou destinatarios residan en servidores distintos de este.

+

Cado autorizas a unha aplicación a utilizar a túa conta, dependendo do ámbito dos permisos que autorices, podería acceder a información pública de perfil, á lista de seguimento, ás túas seguidoras, as túas listas, todas as túas publicacións, as publicacións favoritas. As aplicacións non poden acceder nunca ao teu enderezo de correo nin ao teu contrasinal.

+
+

Utilización do sitio web por menores

+

Se este servidor está na UE ou no EEE: a nosa web, productos e servizos están dirixidos a persoas de 16 ou máis anos. Se tes menos de 16 anos, a requerimento da GDPR (General Data Protection Regulation) non uses esta web.

+

Se este servidor está nos EEUU: a nosa web, productos e servizos están dirixidos a persoas de 13 ou máis anos. Se non tes 13 anos de idade, a requerimento de COPPA (Children's Online Privacy Protection Act) non uses esta web.

+

Os requerimentos legais poden ser diferentes se este servidor está baixo outra xurisdición.

+
+

Cambios na nosa política de privacidade

+

Se decidimos cambiar a nosa política de privacidade publicaremos os cambios nesta páxina.

+

Este documento ten licenza CC-BY-SA. Actualizouse o 26 de maio de 2022.

+

Adaptado do orixinal política de privacidade de Discourse.

title: "%{instance} Termos do Servizo e Política de Intimidade" themes: contrast: Mastodon (Alto contraste) diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 0e3ff6440..faee9de06 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -430,6 +430,7 @@ hu: destroyed_msg: A domain tiltása feloldva domain: Domain edit: Domain tiltás szerkesztése + existing_domain_block: 'Már szigorúbb korlátozások vonatkoznak a következőre: %{name}.' existing_domain_block_html: A %{name} domainen már szorosabb korlátokat állítottál be, először oldd fel a tiltást. new: create: Tiltás létrehozása diff --git a/config/locales/id.yml b/config/locales/id.yml index 8b364ddc9..c278f749f 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -417,6 +417,7 @@ id: destroyed_msg: Pemblokiran domain telah dibatalkan domain: Domain edit: Edit blok domain + existing_domain_block: Anda sudah menerapkan batasan ketat terhadap %{name}. existing_domain_block_html: Anda telah menerapkan batasan yang lebih ketat pada %{name}, Anda harus membuka blokirnya lebih dulu. new: create: Buat pemblokiran diff --git a/config/locales/io.yml b/config/locales/io.yml index 1d0304d09..3649ec946 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -428,6 +428,7 @@ io: destroyed_msg: Domenobstrukto desagesis domain: Domeno edit: Modifikez domenobstrukto + existing_domain_block: Vu ja exekutis plu rigoroza limiti a %{name}. existing_domain_block_html: Vu ja povis plu rigoroza limiti a %{name}, vu bezonas deobstruktar unesme. new: create: Kreez obstrukto diff --git a/config/locales/is.yml b/config/locales/is.yml index 28d6914e5..4e3f9353e 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -428,6 +428,7 @@ is: destroyed_msg: Útilokun léns hefur verið aflétt domain: Lén edit: Breyta útilokun léns + existing_domain_block: Þú hefur þegar gert kröfu um strangari takmörk fyrir %{name}. existing_domain_block_html: Þú ert þegar búin/n að setja strangari takmörk á %{name}, þú þarft fyrst að aflétta útilokun á því. new: create: Búa til útilokun diff --git a/config/locales/it.yml b/config/locales/it.yml index 43fa1c07b..708436ee1 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -428,6 +428,7 @@ it: destroyed_msg: Il blocco del dominio è stato rimosso domain: Dominio edit: Modifica blocco di dominio + existing_domain_block: Hai già imposto limiti più severi a %{name}. existing_domain_block_html: Hai già impostato limitazioni più stringenti su %{name}, dovresti sbloccarlo prima. new: create: Crea blocco diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 38420d07f..defd5ab7c 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -1482,6 +1482,87 @@ ja: tags: does_not_match_previous_name: 以前の名前と一致しません terms: + body_html: | +

プライバシーポリシー

+

どのような情報を収集しますか?

+ +
    +
  • 基本的なアカウント情報: 当サイトに登録すると、ユーザー名・メールアドレス・パスワードの入力を求められることがあります。また表示名や自己紹介・プロフィール画像・ヘッダー画像といった追加のプロフィールを登録できます。ユーザー名・表示名・自己紹介・プロフィール画像・ヘッダー画像は常に公開されます。
  • +
  • 投稿・フォロー・その他公開情報: フォローしているユーザーの一覧は一般公開されます。フォロワーも同様です。メッセージを投稿する際、日時だけでなく投稿に使用したアプリケーション名も記録されます。メッセージには写真や動画といった添付メディアを含むことがあります。「公開」や「未収載」の投稿は一般公開されます。プロフィールに投稿を載せるとそれもまた公開情報となります。投稿はフォロワーに配信されます。場合によっては他のサーバーに配信され、そこにコピーが保存されることを意味します。投稿を削除した場合も同様にフォロワーに配信されます。他の投稿をリブログやお気に入り登録する行動は常に公開されます。
  • +
  • 「ダイレクト」と「フォロワー限定」投稿: すべての投稿はサーバーに保存され、処理されます。「フォロワー限定」投稿はフォロワーと投稿に書かれたユーザーに配信されます。「ダイレクト」投稿は投稿に書かれたユーザーにのみ配信されます。場合によっては他のサーバーに配信され、そこにコピーが保存されることを意味します。私たちはこれらの閲覧を一部の許可された者に限定するよう誠意を持って努めます。しかし他のサーバーにおいても同様に扱われるとは限りません。したがって、相手の所属するサーバーを吟味することが重要です。設定で新しいフォロワーの承認または拒否を手動で行うよう切り替えることもできます。サーバー管理者は「ダイレクト」や「フォロワー限定」投稿も閲覧する可能性があることを忘れないでください。また受信者がスクリーンショットやコピー、もしくは共有する可能性があることを忘れないでください。いかなる機微な情報もMastodon上で共有しないでください。
  • +
  • IPアドレスやその他メタデータ: ログインする際IPアドレスだけでなくブラウザーアプリケーション名を記録します。ログインしたセッションはすべてユーザー設定で見直し、取り消すことができます。使用されている最新のIPアドレスは最大12ヵ月間保存されます。またサーバーへのIPアドレスを含むすべてのリクエストのログを保持することがあります。
  • +
+ +
+ +

情報を何に使用しますか?

+ +

収集した情報は次の用途に使用されることがあります:

+ +
    +
  • Mastodonのコア機能の提供: ログインしている間にかぎり他の人たちと投稿を通じて交流することができます。例えば自分専用のホームタイムラインで投稿をまとめて読むために他の人たちをフォローできます。
  • +
  • コミュニティ維持の補助: 例えばIPアドレスを既知のものと比較し、BAN回避目的の複数登録者やその他違反者を判別します。
  • +
  • 提供されたメールアドレスはお知らせの送信・投稿に対するリアクションやメッセージ送信の通知・お問い合わせやその他要求や質問への返信に使用されることがあります。
  • +
+ +
+ +

情報をどのように保護しますか?

+ +

私たちはあなたが入力・送信する際や自身の情報にアクセスする際に個人情報を安全に保つため、さまざまなセキュリティ上の対策を実施します。特にブラウザーセッションだけでなくアプリケーションとAPI間の通信もSSLによって保護されます。またパスワードは強力な不可逆アルゴリズムでハッシュ化されます。二要素認証を有効にし、アカウントへのアクセスをさらに安全にすることができます。

+ +
+ +

データ保持方針はどうなっていますか?

+ +

私たちは次のように誠意を持って努めます:

+ +
    +
  • 当サイトへのIPアドレスを含むすべての要求に対するサーバーログを90日以内のできるかぎりの間保持します。
  • +
  • 登録されたユーザーに関連付けられたIPアドレスを12ヵ月以内の間保持します。
  • +
+ +

あなたは投稿・添付メディア・プロフィール画像・ヘッダー画像を含む自身のデータのアーカイブを要求し、ダウンロードすることができます。

+ +

あなたはいつでもアカウントの削除を要求できます。削除は取り消すことができません。

+ +
+ +

クッキーを使用していますか?

+ +

はい。クッキーは (あなたが許可した場合に) WebサイトやサービスがWebブラウザーを介してコンピューターに保存する小さなファイルです。使用することでWebサイトがブラウザーを識別し、登録済みのアカウントがある場合関連付けます。

+ +

私たちはクッキーを将来の訪問のために設定を保存し呼び出す用途に使用します。

+ +
+ +

なんらかの情報を外部に提供していますか?

+ +

私たちは個人を特定できる情報を外部へ販売・取引・その他方法で渡すことはありません。これには当サイトの運営・業務遂行・サービス提供を行ううえで補助する信頼できる第三者をこの機密情報の保護に同意するかぎり含みません。法令の遵守やサイトポリシーの施行、権利・財産・安全の保護に適切と判断した場合、あなたの情報を公開することがあります。

+ +

あなたの公開情報はネットワーク上の他のサーバーにダウンロードされることがあります。相手が異なるサーバーに所属する場合、「公開」と「フォロワー限定」投稿はフォロワーの所属するサーバーに配信され、「ダイレクト」投稿は受信者の所属するサーバーに配信されます。

+ +

あなたがアカウントの使用をアプリケーションに許可すると、承認した権限の範囲内で公開プロフィール情報・フォローリスト・フォロワー・リスト・すべての投稿・お気に入り登録にアクセスできます。アプリケーションはメールアドレスやパスワードに決してアクセスできません。

+ +
+ +

児童によるサイト利用について

+ +

サーバーがEUまたはEEA圏内にある場合: 当サイト・製品・サービスは16歳以上の人を対象としています。あなたが16歳未満の場合、GDPR (General Data Protection Regulation - EU一般データ保護規則) により当サイトを使用できません。

+ +

サーバーが米国にある場合: 当サイト・製品・サービスは13歳以上の人を対象としています。あなたが13歳未満の場合、COPPA (Children's Online Privacy Protection Act - 児童オンラインプライバシー保護法) により当サイトを使用できません。

+ +

サーバーが別の管轄区域にある場合、法的要件は異なることがあります。

+ +
+ +

プライバシーポリシーの変更

+ +

プライバシーポリシーの変更を決定した場合、このページに変更点を掲載します。

+ +

この文章のライセンスはCC-BY-SAです。最終更新日は2021年6月1日です。

+ +

オリジナルの出典: Discourse privacy policy

title: "%{instance} 利用規約・プライバシーポリシー" themes: contrast: Mastodon (ハイコントラスト) diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 538c14a91..630beabfb 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -419,6 +419,7 @@ ko: destroyed_msg: 도메인 차단이 해제되었습니다 domain: 도메인 edit: 도메인 차단 수정 + existing_domain_block: 이미 %{name}에 대한 더 강력한 제한이 있습니다. existing_domain_block_html: 이미 %{name}에 대한 더 강력한 제한이 걸려 있습니다, 차단 해제를 먼저 해야 합니다. new: create: 차단 추가 @@ -525,7 +526,7 @@ ko: private_comment: 비공개 주석 public_comment: 공개 주석 purge: 제거 - purge_description_html: 이 도메인이 영구적으로 오프라인 상태라고 생각되면 스토리지에서 이 도메인의 모든 계정 레코드와 관련 데이터를 삭제할 수 있습니다. 이 작업은 시간이 좀 걸릴 수 있습니다. + purge_description_html: 이 도메인이 영구적으로 오프라인 상태라고 생각되면, 스토리지에서 이 도메인의 모든 계정 레코드와 관련 데이터를 삭제할 수 있습니다. 이 작업은 시간이 좀 걸릴 수 있습니다. title: 연합 total_blocked_by_us: 우리에게 차단 됨 total_followed_by_them: 우리를 팔로우 @@ -591,7 +592,7 @@ ko: resolve_description_html: 신고된 계정에 대해 아무런 동작도 취하지 않으며, 처벌기록이 남지 않으며, 신고는 처리됨으로 변경됩니다. silence_description_html: 이미 팔로우 하고 있는 사람이나 수동으로 찾아보는 사람에게만 프로필이 보여지고, 도달 범위를 엄격하게 제한합니다. 언제든지 되돌릴 수 있습니다. suspend_description_html: 프로필과 모든 컨텐츠가 최종적으로 삭제될 때까지 접근 불가상태가 됩니다. 이 계정과의 상호작용은 불가능해집니다. 30일 이내에 되돌릴 수 있습니다. - actions_description_html: 이 보고서를 해결하기 위해 취해야 할 조치를 지정해주세요. 신고된 계정에 대해 처벌 조치를 취하면 스팸 카테고리가 선택된 경우를 제외하고 이메일 알림이 해당 계정으로 전송됩니다. + actions_description_html: 이 신고를 해결하기 위해 취해야 할 조치를 지정해주세요. 신고된 계정에 대해 처벌 조치를 취하면, 스팸 카테고리가 선택된 경우를 제외하고 해당 계정으로 이메일 알림이 전송됩니다. add_to_report: 신고에 더 추가하기 are_you_sure: 정말로 실행하시겠습니까? assign_to_self: 나에게 할당하기 @@ -618,7 +619,7 @@ ko: placeholder: 이 리포트에 대한 조치, 기타 관련 된 사항에 대해 설명합니다… title: 노트 notes_description_html: 확인하고 다른 중재자나 미래의 자신을 위해 기록을 작성합니다 - quick_actions_description_html: '보고된 콘텐츠를 보려면 빠른 조치를 취하거나 아래로 스크롤하세요:' + quick_actions_description_html: '빠른 조치를 취하거나 아래로 스크롤해서 신고된 콘텐츠를 확인하세요:' remote_user_placeholder: "%{instance}의 리모트 사용자" reopen: 리포트 다시 열기 report: '신고 #%{id}' @@ -1500,6 +1501,87 @@ ko: tags: does_not_match_previous_name: 이전 이름과 맞지 않습니다 terms: + body_html: | +

개인정보 정책

+

우리가 어떤 정보를 수집하나요?

+ +
    +
  • 기본 계정 정보: 이 서버에 가입하실 때 사용자명, 이메일 주소, 패스워드 등을 입력 받게 됩니다. 추가적으로 표시되는 이름이나 자기소개, 프로필 이미지, 헤더 이미지 등의 프로필 정보를 입력하게 됩니다. 사용자명, 표시되는 이름, 자기소개, 프로필 이미지와 헤더 이미지는 언제나 공개적으로 게시됩니다.
  • +
  • 게시물, 팔로잉, 기타 공개된 정보: 당신이 팔로우 하는 사람들의 리스트는 공개됩니다. 당신을 팔로우 하는 사람들도 마찬가지입니다. 당신이 게시물을 작성하는 경우, 응용프로그램이 메시지를 받았을 때의 날짜와 시간이 기록 됩니다. 게시물은 그림이나 영상 등의 미디어를 포함할 수 있습니다. 퍼블릭과 미표시(unlisted) 게시물은 공개적으로 접근이 가능합니다. 프로필에 게시물을 고정하는 경우 마찬가지로 공개적으로 접근 가능한 정보가 됩니다. 당신의 게시물들은 당신의 팔로워들에게 전송 됩니다. 몇몇 경우 이것은 다른 서버에 전송되고 그곳에 사본이 저장 됩니다. 당신이 게시물을 삭제하는 경우 이 또한 당신의 팔로워들에게 전송 됩니다. 다른 게시물을 리블로깅 하거나 좋아요 하는 경우 이는 언제나 공개적으로 제공 됩니다.
  • +
  • DM, 팔로워 공개 게시물: 모든 게시물들은 서버에서 처리되고 저장됩니다. 팔로워 공개 게시물은 당신의 팔로워와 멘션 된 사람들에게 전달이 됩니다. 다이렉트 메시지는 멘션 된 사람들에게만 전송 됩니다. 몇몇 경우 이것은 다른 서버에 전송 되고 그곳에 사본이 저장됨을 의미합니다. 우리는 이 게시물들이 권한을 가진 사람들만 열람이 가능하도록 노력을 할 것이지만 다른 서버에서는 이것이 실패할 수도 있습니다. 그러므로 당신의 팔로워들이 속한 서버를 재확인하는 것이 중요합니다. 당신은 새 팔로워를 수동으로 승인하거나 거절하도록 설정을 변경할 수 있습니다. 해당 서버의 운영자는 서버가 받는 메시지를 열람할 수 있다는 것을 항상 염두해 두세요, 그리고 수신자들은 스크린샷을 찍거나 복사하는 등의 방법으로 다시 공유할 수 있습니다. 민감한 정보를 마스토돈을 통해 공유하지 마세요.
  • +
  • IP와 기타 메타데이터: 당신이 로그인 하는 경우 IP 주소와 브라우저의 이름을 저장합니다. 모든 세션은 당신이 검토하고 취소할 수 있도록 설정에서 제공 됩니다. 마지막으로 사용 된 IP 주소는 최대 12개월 간 저장됩니다. 또한, 모든 요청에 대해 IP주소를 포함한 정보를 로그에 저장할 수 있습니다.
  • +
+ +
+ +

우리가 당신의 정보를 어디에 쓰나요?

+ +

당신에게서 수집한 정보는 다음과 같은 곳에 사용 됩니다:

+ +
    +
  • 마스토돈의 주요 기능 제공. 다른 사람의 게시물에 상호작용 하거나 자신의 게시물을 작성하기 위해서는 로그인을 해야 합니다. 예를 들어, 다른 사람의 게시물을 자신만의 홈 타임라인에서 모아 보기 위해 팔로우를 할 수 있습니다.
  • +
  • 커뮤니티의 중재를 위해, 예를 들어 당신의 IP 주소와 기타 사항을 비교하여 금지를 우회하거나 다른 규칙을 위반하는지 판단하는 데에 사용할 수 있습니다.
  • +
  • 당신이 제공한 이메일 주소를 통해 정보, 다른 사람들의 반응이나 받은 메시지에 대한 알림, 기타 요청 등에 관한 응답 요청 등을 보내는 데에 활용됩니다.
  • +
+ +
+ +

어떻게 당신의 정보를 보호하나요?

+ +

우리는 당신이 입력, 전송, 접근하는 개인정보를 보호하기 위해 다양한 보안 대책을 적용합니다. 당신의 브라우저 세션, 당신의 응용프로그램과의 통신, API는 SSL로 보호 되며 패스워드는 강력한 단방향 해시 알고리즘을 사용합니다. 계정의 더 나은 보안을 위해 2단계 인증을 활성화 할 수 있습니다.

+ +
+ +

자료 저장 정책은 무엇이죠?

+ +

우리는 다음을 위해 노력을 할 것입니다:

+ +
    +
  • IP를 포함해 이 서버에 전송 되는 모든 요청에 대한 로그는 90일을 초과하여 저장되지 않습니다.
  • +
  • 가입 된 사용자의 IP 정보는 12개월을 초과하여 저장 되지 않습니다.
  • +
+ +

당신은 언제든지 게시물, 미디어 첨부, 프로필 이미지, 헤더 이미지를 포함한 당신의 컨텐트에 대한 아카이브를 요청하고 다운로드 할 수 있습니다.

+ +

언제든지 계정을 완전히 삭제할 수 있습니다.

+ +
+ +

쿠키를 사용하나요?

+ +

네. 쿠키는 (당신이 허용한다면) 당신의 웹 브라우저를 통해 서버에서 당신의 하드드라이브에 저장하도록 전송하는 작은 파일들입니다. 이 쿠키들은 당신의 브라우저를 인식하고, 계정이 있는 경우 이와 연결하는 것을 가능하게 합니다.

+ +

당신의 환경설정을 저장하고 다음 방문에 활용하기 위해 쿠키를 사용합니다.

+ +
+ +

외부에 정보를 공개하나요?

+ +

우리는 당신을 식별 가능한 개인정보를 외부에 팔거나 제공하거나 전송하지 않습니다. 이는 당사의 사이트를 운영하기 위한, 기밀 유지에 동의하는, 신뢰 가능한 서드파티를 포함하지 않습니다. 또한 법률 준수, 사이트 정책 시행, 또는 당사나 타인에 대한 권리, 재산, 또는 안전보호를 위해 적절하다고 판단되는 경우 당신의 정보를 공개할 수 있습니다.

+ +

당신의 공개 게시물은 네트워크에 속한 다른 서버가 다운로드 할 수 있습니다. 당신의 팔로워나 수신자가 이 서버가 아닌 다른 곳에 존재하는 경우 당신의 공개, 팔로워 공개 게시물은 당신의 팔로워가 존재하는 서버로 전송되며, 다이렉트메시지는 수신자가 존재하는 서버로 전송 됩니다.

+ +

당신이 계정을 사용하기 위해 응용프로그램을 승인하는 경우 당신이 허용한 권한에 따라 응용프로그램은 당신의 공개 계정정보, 팔로잉 리스트, 팔로워 리스트, 게시물, 좋아요 등에 접근이 가능해집니다. 응용프로그램은 절대로 당신의 이메일 주소나 패스워드에 접근할 수 없습니다.

+ +
+ +

어린이의 사이트 사용

+ +

이 서버가 EU나 EEA에 속해 있다면: 당사의 사이트, 제품과 서비스는 16세 이상인 사람들을 위해 제공됩니다. 당신이 16세 미만이라면 GDPR(General Data Protection Regulation)의 요건에 따라 이 사이트를 사용할 수 없습니다.

+ +

이 서버가 미국에 속해 있다면: 당사의 사이트, 제품과 서비스는 13세 이상인 사람들을 위해 제공됩니다. 당신이 13세 미만이라면 COPPA (Children's Online Privacy Protection Act)의 요건에 따라 이 사이트를 사용할 수 없습니다.

+ +

이 서버가 있는 관할권에 따라 법적 요구가 달라질 수 있습니다.

+ +
+ +

개인정보 정책의 변경

+ +

만약 우리의 개인정보 정책이 바뀐다면, 이 페이지에 바뀐 정책이 게시됩니다.

+ +

이 문서는 CC-BY-SA 라이센스입니다. 마지막 업데이트는 2012년 5월 26일입니다.

+ +

Originally adapted from the Discourse privacy policy.

title: "%{instance} 이용약관과 개인정보 취급 방침" themes: contrast: 마스토돈 (고대비) @@ -1553,7 +1635,7 @@ ko: spam: 스팸 violation: 컨텐츠가 다음의 커뮤니티 규정을 위반합니다 explanation: - delete_statuses: 귀하의 게시물 중 일부가 하나 이상의 커뮤니티 가이드라인을 위반한 것으로 확인되어 %{instance} 모더레이터에 의해 삭제되었습니다. + delete_statuses: 귀하의 게시물 중 일부가 하나 이상의 커뮤니티 가이드라인을 위반한 것으로 확인되어 %{instance}의 중재자에 의해 삭제되었습니다. disable: 당신은 더이상 당신의 계정을 사용할 수 없습니다, 하지만 프로필과 다른 데이터들은 여전히 그대로 남아있습니다. 당신의 데이터에 대한 백업을 요청하거나, 계정 설정을 변경 또는 계정을 삭제할 수 있습니다. mark_statuses_as_sensitive: 당신의 몇몇 게시물들은 %{instance}의 중재자에 의해 민감함으로 설정되었습니다. 이것은 사람들이 미리보기를 보기 전에 미디어를 한번 눌러야 함을 의미합니다. 당신은 스스로도 자신의 게시물을 작성할 때 미디어를 민감함으로 설정할 수 있습니다. sensitive: 지금부터는, 당신이 업로드한 미디어 파일들은 민감함 표시가 뜨게 되고 클릭해야만 볼 수 있다는 경고문 뒤에 가려지게 됩니다. diff --git a/config/locales/ku.yml b/config/locales/ku.yml index 085624c54..78d99c2e5 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -428,6 +428,7 @@ ku: destroyed_msg: Navpera asteng kirinê hat rakirin domain: Navper edit: Astengkirina navperê serrast bike + existing_domain_block: Jixwe te sînorên tundtir li ser %{name} daye kirine. existing_domain_block_html: Te bi bandorê mezin sînor danî ser %{name}, Divê tu asteng kirinê rabikî, pêşî ya . new: create: Astengkirinekê çê bike diff --git a/config/locales/lv.yml b/config/locales/lv.yml index e7882c510..f9d404303 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -437,6 +437,7 @@ lv: destroyed_msg: Domēna bloķēšana ir atsaukta domain: Domēns edit: Rediģēt domēna bloķēšanu + existing_domain_block: Tu jau esi noteicis stingrākus ierobežojumus %{name}. existing_domain_block_html: Tu jau esi noteicis stingrākus ierobežojumus %{name}, vispirms tev jāatbloķē. new: create: Izveodot bloku diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 845e0237d..2709572de 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -446,6 +446,7 @@ pl: destroyed_msg: Blokada domeny nie może zostać odwrócona domain: Domena edit: Edytuj blokadę domeny + existing_domain_block: Już nałożyłeś surowsze limity na %{name}. existing_domain_block_html: Już narzuciłeś bardziej rygorystyczne limity na %{name}, musisz najpierw je odblokować. new: create: Utwórz blokadę diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 2765bf941..377360a9d 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -428,6 +428,7 @@ pt-PT: destroyed_msg: Bloqueio de domínio está a ser removido domain: Domínio edit: Editar bloqueio de domínio + existing_domain_block: Já impôs limites mais rigorosos a %{name}. existing_domain_block_html: Você já impôs limites mais restritivos a %{name}, é necessário primeiro desbloqueá-lo. new: create: Criar bloqueio diff --git a/config/locales/ru.yml b/config/locales/ru.yml index c0495c3ee..39a3b3eb7 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -426,6 +426,7 @@ ru: destroyed_msg: Блокировка домена снята domain: Домен edit: Редактировать блокировку + existing_domain_block: Вы уже установили более строгие ограничения для %{name}. existing_domain_block_html: Вы уже ввели более строгие ограничения на %{name}, вам нужно разблокировать его сначала. new: create: Создать блокировку @@ -495,8 +496,12 @@ ru: comment: Внутренняя заметка policies: reject_media: Отклонить медиа + silence: Лимит + suspend: Приостановить policy: Политика + reason: Публичная причина dashboard: + instance_accounts_dimension: Популярные аккаунты instance_accounts_measure: сохраненные учетные записи instance_languages_dimension: Популярные языки instance_media_attachments_measure: сохраненные медиафайлы @@ -796,6 +801,8 @@ ru: title: Издатели rejected: Отклонённые statuses: + allow: Разрешить пост + allow_account: Разрешить автора title: Популярные посты tags: current_score: Текущий счет %{score} @@ -847,6 +854,7 @@ ru: new_trending_statuses: title: Популярные посты new_trending_tags: + no_approved_tags: На данный момент популярные подтвержденные хэштеги отсутствуют. title: Популярные хэштеги aliases: add_new: Создать псевдоним @@ -1008,9 +1016,12 @@ ru: title: "%{action} от %{date}" title_actions: delete_statuses: Удаление поста + disable: Заморозка аккаунта mark_statuses_as_sensitive: Помечать посты как деликатные + none: Требующие внимания sensitive: Отметить учетную запись как деликатную silence: Ограничение учетной записи + suspend: Приостановка Аккаунта your_appeal_approved: Ваша апелляция одобрена your_appeal_pending: Вы подали апелляцию your_appeal_rejected: Ваша апелляция отклонена diff --git a/config/locales/simple_form.fy.yml b/config/locales/simple_form.fy.yml new file mode 100644 index 000000000..b568750e2 --- /dev/null +++ b/config/locales/simple_form.fy.yml @@ -0,0 +1,6 @@ +--- +fy: + simple_form: + labels: + notification_emails: + mention: Ien hat jo fermeld diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index 9d82e43a4..71d4058c8 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -37,7 +37,7 @@ ko: current_password: 보안을 위해 현재 계정의 암호를 입력해주세요 current_username: 확인을 위해, 현재 계정의 사용자명을 입력해주세요 digest: 오랫동안 활동하지 않았을 때 받은 멘션들에 대한 요약 받기 - discoverable: 추천, 트렌드 및 기타 기능을 통해 낯선 사람이 귀하의 계정을 찾을 수 있도록 허용합니다 + discoverable: 추천, 트렌드 및 기타 기능을 통해 낯선 사람이 내 계정을 발견할 수 있도록 허용합니다 email: 당신은 확인 메일을 받게 됩니다 fields: 당신의 프로파일에 최대 4개까지 표 형식으로 나타낼 수 있습니다 header: PNG, GIF 혹은 JPG. 최대 %{size}. %{dimensions}px로 축소 됨 @@ -206,10 +206,10 @@ ko: digest: 요약 이메일 보내기 favourite: 누군가 내 상태를 마음에 들어했을 때 follow: 누군가 나를 팔로우 했을 때 - follow_request: 누군가 나를 팔로우 하길 원할 때 + follow_request: 누군가 나를 팔로우 하길 요청할 때 mention: 누군가 나를 언급했을 때 pending_account: 새 계정이 심사가 필요할 때 - reblog: 누군가 내 툿을 부스트 했을 때 + reblog: 누군가 내 게시물을 부스트 했을 때 report: 새 신고가 접수되었을 때 trending_tag: 새 트렌드에 대한 리뷰가 필요할 때 rule: diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 58190e95b..8f54e9f74 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -446,6 +446,7 @@ sl: destroyed_msg: Domenski blok je bil razveljavljen domain: Domena edit: Uredi domenski blok + existing_domain_block: Ste že uveljavili strožje omejitve na %{name}. existing_domain_block_html: Uvedli ste strožje omejitve za %{name}, sedaj ga morate najprej odblokirati. new: create: Ustvari blok diff --git a/config/locales/th.yml b/config/locales/th.yml index 25fc7034e..9fd23f5b3 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -174,6 +174,7 @@ th: already_confirmed: ผู้ใช้นี้ได้รับการยืนยันอยู่แล้ว send: ส่งอีเมลยืนยันใหม่ success: ส่งอีเมลยืนยันสำเร็จ! + reset: รีเซ็ต reset_password: ตั้งรหัสผ่านใหม่ resubscribe: บอกรับใหม่ role: สิทธิอนุญาต diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 15f4bf57c..23fe6508b 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -1525,6 +1525,86 @@ tr: tags: does_not_match_previous_name: önceki adla eşleşmiyor terms: + body_html: | +

Gizlilik Politikası

+

Hangi bilgileri topluyoruz?

+ +
    +
  • Temel hesap bilgileri: Bu sunucuya kaydolursanız, bir kullanıcı adı, bir e-posta adresi ve bir parola girmeniz istenebilir. Ayrıca, ekran adı ve biyografi gibi ek profil bilgileri girebilir ve bir profil fotoğrafı ve başlık resmi yükleyebilirsiniz. Kullanıcı adı, ekran ad, biyografi, profil fotoğrafı ve başlık resmi her zaman herkese açık olarak listelenir.
  • +
  • Gönderiler, takip etmeler ve diğer herkese açık bilgiler: Takip ettiğiniz kişilerin listesi herkese açık olarak listelenir, sizi takip edenler için de aynısı geçerlidir. Bir mesaj gönderdiğinizde, mesajı gönderdiğiniz uygulamanın yanı sıra tarih ve saati de saklanır. Mesajlar, resim ve video gibi medya ekleri içerebilir. Herkese açık ve listelenmemiş gönderiler halka açıktır. Profilinizde bir gönderiyi yayınladığınızda, bu da herkese açık olarak mevcut bir bilgidir. Gönderileriniz takipçilerinize iletilir, bazı durumlarda farklı sunuculara gönderilir ve kopyalar orada saklanır. Gönderilerinizi sildiğinizde, bu da takipçilerinize iletilir. Başka bir gönderiyi yeniden bloglama veya favorileme eylemi her zaman halka açıktır.
  • +
  • Doğrudan ve takipçilere özel gönderiler: Tüm gönderiler sunucuda saklanır ve işlenir. Takipçilere özel gönderiler, takipçilerinize ve içinde bahsedilen kullanıcılara, doğrudan gönderiler ise yalnızca içinde bahsedilen kullanıcılara iletilir. Bu, bazı durumlarda farklı sunuculara iletildiği ve kopyaların orada saklandığı anlamına gelir. Bu gönderilere erişimi yalnızca yetkili kişilerle sınırlamak için iyi niyetle çalışıyoruz, ancak diğer sunucular bunu yapamayabilir. Bu nedenle, takipçilerinizin ait olduğu sunucuları incelemek önemlidir. Ayarlarda yeni izleyicileri manuel olarak onaylama ve reddetme seçeneğini değiştirebilirsiniz. Sunucuyu ve alıcı sunucuyu işleten kişilerin bu mesajları görüntüleyebileceğini unutmayın, ve alıcılar ekran görüntüsü alabilir, kopyalayabilir veya başka bir şekilde yeniden paylaşabilir. Mastodon üzerinden herhangi bir hassas bilgi paylaşmayın.
  • +
  • IP'ler ve diğer meta veriler: Oturum açarken, giriş yaptığınız IP adresini ve tarayıcı uygulamanızın adını kaydederiz. Giriş yapılan tüm oturumlar, incelemek ve iptal etmek için ayarlarda mevcuttur. En son kullanılan IP adresi 12 aya kadar saklanır. Sunucumuza gelen her isteğin IP adresini içeren sunucu loglarını da saklayabiliriz.
  • +
+ +
+ +

Bilgilerinizi ne için kullanıyoruz?

+ +

Sizden topladığımız bilgilerin herhangi bir kısmı aşağıdaki şekillerde kullanılabilir:

+ +
    +
  • Mastodon'un ana işlevselliğini sağlamak için. Yalnızca oturum açtığınızda diğer kişilerin içeriğiyle etkileşime girebilir ve kendi içeriğinizi gönderebilirsiniz. Örneğin, başkalarının kombine gönderilerini kendi kişiselleştirilmiş ana sayfanızdaki zaman çizelgenizde görüntülemek için onları takip edebilirsiniz.
  • +
  • Topluluğun denetlenmesine yardımcı olmak için, örneğin, yasaktan kaçınma veya diğer ihlalleri belirlemek için IP adresinizin diğer bilinen adreslerle karşılaştırılması.
  • +
  • Verdiğiniz e-posta adresi, size bilgi, içeriğinizle etkileşimde bulunan diğer kişilerle ilgili bildirimler veya mesaj göndermek, sorgulara ve/veya diğer istek ve sorulara cevap vermek için kullanılabilir.
  • +
+ +
+ +

Bilgilerinizi nasıl koruyoruz?

+ +

Kişisel bilgilerinizi girerken, gönderirken veya onlara erişirken kişisel bilgilerinizin güvenliğini sağlamak için çeşitli güvenlik önlemleri uyguluyoruz. Diğer şeylerin yanı sıra, tarayıcı oturumunuz ve uygulamalarınız ile API arasındaki trafik SSL ile güvence altına alınır ve şifreniz sağlam bir tek yönlü bir algoritma kullanılarak şifrelenir. Hesabınıza daha güvenli bir şekilde erişebilmek için iki adımlı kimlik doğrulamasını etkinleştirebilirsiniz.

+ +
+ +

Veri saklama politikamız nedir?

+ +

Şunları yapmak için iyi niyetli bir şekilde çalışacağız:

+ +
    +
  • Bu sunucuya yapılan tüm isteklerin IP adresini içeren sunucu loglarını, bu tür logların şimdiye kadar saklandığı gibi, 90 günden fazla saklamayacağız.
  • +
  • Kayıtlı kullanıcılarla ilişkili IP adreslerini en fazla 12 ay boyunca saklayacağız.
  • +
+

Gönderileriniz, medya ekleriniz, profil fotoğrafınız ve başlık resminiz dahil, içeriğimizin arşivini talep edebilir ve indirebilirsiniz.

+ +

Hesabınızı istediğiniz zaman geri alınamaz şekilde silebilirsiniz.

+ +
+ +

Çerez kullanıyor muyuz?

+ +

Evet. Çerezler, bir sitenin veya servis sağlayıcısının Web tarayıcınız üzerinden bilgisayarınızın sabit diskine aktardığı küçük dosyalardır (eğer izin verirseniz). Bu çerezler sitenin tarayıcınızı tanımasını ve kayıtlı bir hesabınız varsa, kayıtlı hesabınızla ilişkilendirmesini sağlar.

+ +

Sonraki ziyaretlerde tercihlerinizi anlamak ve kaydetmek için çerezleri kullanıyoruz.

+ +
+ +

Herhangi bir bilgiyi dış taraflara açıklıyor muyuz?

+ +

Kişisel olarak tanımlanabilir bilgilerinizi dış taraflara satmıyor, takas etmiyor veya devretmiyoruz. Bu, taraflarımız bu bilgileri gizli tutmayı kabul ettiği sürece sitemizi işletmemize, işimizi yürütmemize veya size hizmet etmemize yardımcı olan güvenilir üçüncü tarafları içermemektedir. Ayrıca, yayınlanmanın yasalara uymayı, site politikalarımızı yürürlüğe koymayı ya da kendimizin ya da diğerlerinin haklarını, mülklerini ya da güvenliğini korumamızı sağladığına inandığımızda bilgilerinizi açıklayabiliriz.

+ +

Herkese açık içeriğiniz ağdaki diğer sunucular tarafından indirilebilir. Bu takipçiler veya alıcılar bundan farklı bir sunucuda bulundukları sürece, herkese açık ve takipçilere özel gönderileriniz, takipçilerinizin bulunduğu sunuculara, ve doğrudan mesajlar, alıcıların sunucularına iletilir.

+ +

Hesabınızı kullanması için bir uygulamayı yetkilendirdiğinizde, onayladığınız izinlerin kapsamına bağlı olarak, herkese açık profil bilgilerinize, takip ettiklerinizin listesine, takipçilerinize, listelerinize, tüm gönderilerinize ve favorilerinize erişebilir. Uygulamalar e-posta adresinize veya parolanıza asla erişemez.

+ +
+ +

Sitenin çocuklar tarafından kullanımı

+ +

Bu sunucu AB’de veya AEA’da ise: Site, ürün ve hizmetlerimizin tamamı en az 16 yaşında olan kişilere yöneliktir. Eğer 16 yaşın altındaysanız, GDPR yükümlülükleri gereği (General Data Protection Regulation) bu siteyi kullanmayın.

+ +

Bu sunucu ABD’de ise: Site, ürün ve hizmetlerimizin tamamı en az 13 yaşında olan kişilere yöneliktir. Eğer 13 yaşın altındaysanız, COPPA yükümlülükleri gereği (Children's Online Privacy Protection Act) bu siteyi kullanmayın.

+ +

Bu sunucu başka bir ülkede ise yasal gereklilikler farklı olabilir.

+ +
+ +

Gizlilik Politikamızdaki Değişiklikler

+ +

Gizlilik politikamızı değiştirmeye karar verirsek, bu değişiklikleri bu sayfada yayınlayacağız.

+ +

Bu belge CC-BY-SA altında lisanslanmıştır. En son 26 Mayıs 2022 tarihinde güncellenmiştir.

+ +

Discourse gizlilik politikasından uyarlanmıştır.

title: "%{instance} Hizmet Şartları ve Gizlilik Politikası" themes: contrast: Mastodon (Yüksek karşıtlık) diff --git a/config/locales/uk.yml b/config/locales/uk.yml index dfe25ebb2..aa210c980 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -444,6 +444,7 @@ uk: destroyed_msg: Блокування домену знято domain: Домен edit: Редагувати блокування доменів + existing_domain_block: Ви вже наклали суворіші обмеження на %{name}. existing_domain_block_html: Ви вже наклали більш суворі обмеження на %{name}, вам треба спочатку розблокувати його. new: create: Створити блокування diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 95561abb7..032a5c951 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -417,6 +417,7 @@ zh-TW: destroyed_msg: 已撤銷站點封鎖 domain: 站點 edit: 更改封鎖的站台 + existing_domain_block: 您已對 %{name} 施加了更嚴格的限制。 existing_domain_block_html: 您已經對 %{name} 施加了更嚴格的限制,您需要先把他取消封鎖。 new: create: 新增封鎖 From a2871cd74719a7a5a104daaa3dcc0e2670b7c2df Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 9 Jun 2022 21:57:36 +0200 Subject: [PATCH 140/652] Add administrative webhooks (#18510) * Add administrative webhooks * Fix error when webhook is deleted before delivery worker runs --- .../admin/webhooks/secrets_controller.rb | 19 +++++ app/controllers/admin/webhooks_controller.rb | 77 +++++++++++++++++++ app/javascript/styles/mastodon/admin.scss | 8 ++ app/models/admin/action_log.rb | 1 + app/models/report.rb | 6 ++ app/models/user.rb | 10 ++- app/models/webhook.rb | 58 ++++++++++++++ app/policies/webhook_policy.rb | 35 +++++++++ app/presenters/webhooks/event_presenter.rb | 13 ++++ .../rest/admin/report_serializer.rb | 3 +- .../rest/admin/webhook_event_serializer.rb | 26 +++++++ app/services/base_service.rb | 4 + app/services/webhook_service.rb | 22 ++++++ app/validators/url_validator.rb | 2 +- app/views/admin/webhooks/_form.html.haml | 11 +++ app/views/admin/webhooks/_webhook.html.haml | 19 +++++ app/views/admin/webhooks/edit.html.haml | 4 + app/views/admin/webhooks/index.html.haml | 18 +++++ app/views/admin/webhooks/new.html.haml | 4 + app/views/admin/webhooks/show.html.haml | 34 ++++++++ app/views/layouts/admin.html.haml | 5 +- app/workers/trigger_webhook_worker.rb | 12 +++ app/workers/webhooks/delivery_worker.rb | 37 +++++++++ config/locales/activerecord.en.yml | 8 ++ config/locales/en.yml | 21 ++++- config/locales/simple_form.en.yml | 6 ++ config/navigation.rb | 1 + config/routes.rb | 11 +++ db/migrate/20220606044941_create_webhooks.rb | 12 +++ db/schema.rb | 12 ++- spec/fabricators/webhook_fabricator.rb | 5 ++ spec/models/webhook_spec.rb | 32 ++++++++ spec/validators/url_validator_spec.rb | 2 +- 33 files changed, 530 insertions(+), 8 deletions(-) create mode 100644 app/controllers/admin/webhooks/secrets_controller.rb create mode 100644 app/controllers/admin/webhooks_controller.rb create mode 100644 app/models/webhook.rb create mode 100644 app/policies/webhook_policy.rb create mode 100644 app/presenters/webhooks/event_presenter.rb create mode 100644 app/serializers/rest/admin/webhook_event_serializer.rb create mode 100644 app/services/webhook_service.rb create mode 100644 app/views/admin/webhooks/_form.html.haml create mode 100644 app/views/admin/webhooks/_webhook.html.haml create mode 100644 app/views/admin/webhooks/edit.html.haml create mode 100644 app/views/admin/webhooks/index.html.haml create mode 100644 app/views/admin/webhooks/new.html.haml create mode 100644 app/views/admin/webhooks/show.html.haml create mode 100644 app/workers/trigger_webhook_worker.rb create mode 100644 app/workers/webhooks/delivery_worker.rb create mode 100644 db/migrate/20220606044941_create_webhooks.rb create mode 100644 spec/fabricators/webhook_fabricator.rb create mode 100644 spec/models/webhook_spec.rb diff --git a/app/controllers/admin/webhooks/secrets_controller.rb b/app/controllers/admin/webhooks/secrets_controller.rb new file mode 100644 index 000000000..16af1cf7b --- /dev/null +++ b/app/controllers/admin/webhooks/secrets_controller.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +module Admin + class Webhooks::SecretsController < BaseController + before_action :set_webhook + + def rotate + authorize @webhook, :rotate_secret? + @webhook.rotate_secret! + redirect_to admin_webhook_path(@webhook) + end + + private + + def set_webhook + @webhook = Webhook.find(params[:webhook_id]) + end + end +end diff --git a/app/controllers/admin/webhooks_controller.rb b/app/controllers/admin/webhooks_controller.rb new file mode 100644 index 000000000..d6fb1a4ea --- /dev/null +++ b/app/controllers/admin/webhooks_controller.rb @@ -0,0 +1,77 @@ +# frozen_string_literal: true + +module Admin + class WebhooksController < BaseController + before_action :set_webhook, except: [:index, :new, :create] + + def index + authorize :webhook, :index? + + @webhooks = Webhook.page(params[:page]) + end + + def new + authorize :webhook, :create? + + @webhook = Webhook.new + end + + def create + authorize :webhook, :create? + + @webhook = Webhook.new(resource_params) + + if @webhook.save + redirect_to admin_webhook_path(@webhook) + else + render :new + end + end + + def show + authorize @webhook, :show? + end + + def edit + authorize @webhook, :update? + end + + def update + authorize @webhook, :update? + + if @webhook.update(resource_params) + redirect_to admin_webhook_path(@webhook) + else + render :show + end + end + + def enable + authorize @webhook, :enable? + @webhook.enable! + redirect_to admin_webhook_path(@webhook) + end + + def disable + authorize @webhook, :disable? + @webhook.disable! + redirect_to admin_webhook_path(@webhook) + end + + def destroy + authorize @webhook, :destroy? + @webhook.destroy! + redirect_to admin_webhooks_path + end + + private + + def set_webhook + @webhook = Webhook.find(params[:id]) + end + + def resource_params + params.require(:webhook).permit(:url, events: []) + end + end +end diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index 921c529d1..18638e18f 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -203,6 +203,14 @@ $content-width: 840px; } } + h2 small { + font-size: 12px; + display: block; + font-weight: 500; + color: $darker-text-color; + line-height: 18px; + } + @media screen and (max-width: $no-columns-breakpoint) { border-bottom: 0; padding-bottom: 0; diff --git a/app/models/admin/action_log.rb b/app/models/admin/action_log.rb index 852bff713..401bfd9ac 100644 --- a/app/models/admin/action_log.rb +++ b/app/models/admin/action_log.rb @@ -1,4 +1,5 @@ # frozen_string_literal: true + # == Schema Information # # Table name: admin_action_logs diff --git a/app/models/report.rb b/app/models/report.rb index 6d4166540..2efb6d4a7 100644 --- a/app/models/report.rb +++ b/app/models/report.rb @@ -55,6 +55,8 @@ class Report < ApplicationRecord before_validation :set_uri, only: :create + after_create_commit :trigger_webhooks + def object_type :flag end @@ -143,4 +145,8 @@ class Report < ApplicationRecord errors.add(:rule_ids, I18n.t('reports.errors.invalid_rules')) unless rules.size == rule_ids&.size end + + def trigger_webhooks + TriggerWebhookWorker.perform_async('report.created', 'Report', id) + end end diff --git a/app/models/user.rb b/app/models/user.rb index 23febb6fe..81f6a58f6 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -37,7 +37,6 @@ # sign_in_token_sent_at :datetime # webauthn_id :string # sign_up_ip :inet -# skip_sign_in_token :boolean # class User < ApplicationRecord @@ -120,6 +119,7 @@ class User < ApplicationRecord before_validation :sanitize_languages before_create :set_approved after_commit :send_pending_devise_notifications + after_create_commit :trigger_webhooks # This avoids a deprecation warning from Rails 5.1 # It seems possible that a future release of devise-two-factor will @@ -182,7 +182,9 @@ class User < ApplicationRecord end def update_sign_in!(new_sign_in: false) - old_current, new_current = current_sign_in_at, Time.now.utc + old_current = current_sign_in_at + new_current = Time.now.utc + self.last_sign_in_at = old_current || new_current self.current_sign_in_at = new_current @@ -472,4 +474,8 @@ class User < ApplicationRecord def invite_text_required? Setting.require_invite_text && !invited? && !external? && !bypass_invite_request_check? end + + def trigger_webhooks + TriggerWebhookWorker.perform_async('account.created', 'Account', account_id) + end end diff --git a/app/models/webhook.rb b/app/models/webhook.rb new file mode 100644 index 000000000..431edd75d --- /dev/null +++ b/app/models/webhook.rb @@ -0,0 +1,58 @@ +# frozen_string_literal: true + +# == Schema Information +# +# Table name: webhooks +# +# id :bigint(8) not null, primary key +# url :string not null +# events :string default([]), not null, is an Array +# secret :string default(""), not null +# enabled :boolean default(TRUE), not null +# created_at :datetime not null +# updated_at :datetime not null +# + +class Webhook < ApplicationRecord + EVENTS = %w( + account.created + report.created + ).freeze + + scope :enabled, -> { where(enabled: true) } + + validates :url, presence: true, url: true + validates :secret, presence: true, length: { minimum: 12 } + validates :events, presence: true + + validate :validate_events + + before_validation :strip_events + before_validation :generate_secret + + def rotate_secret! + update!(secret: SecureRandom.hex(20)) + end + + def enable! + update!(enabled: true) + end + + def disable! + update!(enabled: false) + end + + private + + def validate_events + errors.add(:events, :invalid) if events.any? { |e| !EVENTS.include?(e) } + end + + def strip_events + self.events = events.map { |str| str.strip.presence }.compact if events.present? + end + + def generate_secret + self.secret = SecureRandom.hex(20) if secret.blank? + end +end diff --git a/app/policies/webhook_policy.rb b/app/policies/webhook_policy.rb new file mode 100644 index 000000000..2c55703a1 --- /dev/null +++ b/app/policies/webhook_policy.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +class WebhookPolicy < ApplicationPolicy + def index? + admin? + end + + def create? + admin? + end + + def show? + admin? + end + + def update? + admin? + end + + def enable? + admin? + end + + def disable? + admin? + end + + def rotate_secret? + admin? + end + + def destroy? + admin? + end +end diff --git a/app/presenters/webhooks/event_presenter.rb b/app/presenters/webhooks/event_presenter.rb new file mode 100644 index 000000000..dac14a3f0 --- /dev/null +++ b/app/presenters/webhooks/event_presenter.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class Webhooks::EventPresenter < ActiveModelSerializers::Model + attributes :type, :created_at, :object + + def initialize(type, object) + super() + + @type = type + @created_at = Time.now.utc + @object = object + end +end diff --git a/app/serializers/rest/admin/report_serializer.rb b/app/serializers/rest/admin/report_serializer.rb index 74bc0c520..237f41d8e 100644 --- a/app/serializers/rest/admin/report_serializer.rb +++ b/app/serializers/rest/admin/report_serializer.rb @@ -1,7 +1,8 @@ # frozen_string_literal: true class REST::Admin::ReportSerializer < ActiveModel::Serializer - attributes :id, :action_taken, :category, :comment, :created_at, :updated_at + attributes :id, :action_taken, :action_taken_at, :category, :comment, + :created_at, :updated_at has_one :account, serializer: REST::Admin::AccountSerializer has_one :target_account, serializer: REST::Admin::AccountSerializer diff --git a/app/serializers/rest/admin/webhook_event_serializer.rb b/app/serializers/rest/admin/webhook_event_serializer.rb new file mode 100644 index 000000000..fe0ac23f9 --- /dev/null +++ b/app/serializers/rest/admin/webhook_event_serializer.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +class REST::Admin::WebhookEventSerializer < ActiveModel::Serializer + def self.serializer_for(model, options) + case model.class.name + when 'Account' + REST::Admin::AccountSerializer + when 'Report' + REST::Admin::ReportSerializer + else + super + end + end + + attributes :event, :created_at + + has_one :virtual_object, key: :object + + def virtual_object + object.object + end + + def event + object.type + end +end diff --git a/app/services/base_service.rb b/app/services/base_service.rb index 99e8c875f..b0c0f9ec4 100644 --- a/app/services/base_service.rb +++ b/app/services/base_service.rb @@ -5,4 +5,8 @@ class BaseService include ActionView::Helpers::SanitizeHelper include RoutingHelper + + def call(*) + raise NotImplementedError + end end diff --git a/app/services/webhook_service.rb b/app/services/webhook_service.rb new file mode 100644 index 000000000..aafa38318 --- /dev/null +++ b/app/services/webhook_service.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +class WebhookService < BaseService + def call(event, object) + @event = Webhooks::EventPresenter.new(event, object) + @body = serialize_event + + webhooks_for_event.each do |webhook_id| + Webhooks::DeliveryWorker.perform_async(webhook_id, @body) + end + end + + private + + def webhooks_for_event + Webhook.enabled.where('? = ANY(events)', @event.type).pluck(:id) + end + + def serialize_event + Oj.dump(ActiveModelSerializers::SerializableResource.new(@event, serializer: REST::Admin::WebhookEventSerializer, scope: nil, scope_name: :current_user).as_json) + end +end diff --git a/app/validators/url_validator.rb b/app/validators/url_validator.rb index f50abbe24..75d1edb87 100644 --- a/app/validators/url_validator.rb +++ b/app/validators/url_validator.rb @@ -2,7 +2,7 @@ class URLValidator < ActiveModel::EachValidator def validate_each(record, attribute, value) - record.errors.add(attribute, I18n.t('applications.invalid_url')) unless compliant?(value) + record.errors.add(attribute, :invalid) unless compliant?(value) end private diff --git a/app/views/admin/webhooks/_form.html.haml b/app/views/admin/webhooks/_form.html.haml new file mode 100644 index 000000000..c1e8f8979 --- /dev/null +++ b/app/views/admin/webhooks/_form.html.haml @@ -0,0 +1,11 @@ += simple_form_for @webhook, url: @webhook.new_record? ? admin_webhooks_path : admin_webhook_path(@webhook) do |f| + = render 'shared/error_messages', object: @webhook + + .fields-group + = f.input :url, wrapper: :with_block_label, input_html: { placeholder: 'https://' } + + .fields-group + = f.input :events, collection: Webhook::EVENTS, wrapper: :with_block_label, include_blank: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li' + + .actions + = f.button :button, @webhook.new_record? ? t('admin.webhooks.add_new') : t('generic.save_changes'), type: :submit diff --git a/app/views/admin/webhooks/_webhook.html.haml b/app/views/admin/webhooks/_webhook.html.haml new file mode 100644 index 000000000..d94a41eb3 --- /dev/null +++ b/app/views/admin/webhooks/_webhook.html.haml @@ -0,0 +1,19 @@ +.applications-list__item + = link_to admin_webhook_path(webhook), class: 'announcements-list__item__title' do + = fa_icon 'inbox' + = webhook.url + + .announcements-list__item__action-bar + .announcements-list__item__meta + - if webhook.enabled? + %span.positive-hint= t('admin.webhooks.enabled') + - else + %span.negative-hint= t('admin.webhooks.disabled') + + • + + %abbr{ title: webhook.events.join(', ') }= t('admin.webhooks.enabled_events', count: webhook.events.size) + + %div + = table_link_to 'pencil', t('admin.webhooks.edit'), edit_admin_webhook_path(webhook) if can?(:update, webhook) + = table_link_to 'trash', t('admin.webhooks.delete'), admin_webhook_path(webhook), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') } if can?(:destroy, webhook) diff --git a/app/views/admin/webhooks/edit.html.haml b/app/views/admin/webhooks/edit.html.haml new file mode 100644 index 000000000..3dc0ace9b --- /dev/null +++ b/app/views/admin/webhooks/edit.html.haml @@ -0,0 +1,4 @@ +- content_for :page_title do + = t('admin.webhooks.edit') + += render partial: 'form' diff --git a/app/views/admin/webhooks/index.html.haml b/app/views/admin/webhooks/index.html.haml new file mode 100644 index 000000000..e4499e078 --- /dev/null +++ b/app/views/admin/webhooks/index.html.haml @@ -0,0 +1,18 @@ +- content_for :page_title do + = t('admin.webhooks.title') + +- content_for :heading_actions do + = link_to t('admin.webhooks.add_new'), new_admin_webhook_path, class: 'button' if can?(:create, :webhook) + +%p= t('admin.webhooks.description_html') + +%hr.spacer/ + +- if @webhooks.empty? + %div.muted-hint.center-text + = t 'admin.webhooks.empty' +- else + .applications-list + = render partial: 'webhook', collection: @webhooks + + = paginate @webhooks diff --git a/app/views/admin/webhooks/new.html.haml b/app/views/admin/webhooks/new.html.haml new file mode 100644 index 000000000..1258df74a --- /dev/null +++ b/app/views/admin/webhooks/new.html.haml @@ -0,0 +1,4 @@ +- content_for :page_title do + = t('admin.webhooks.new') + += render partial: 'form' diff --git a/app/views/admin/webhooks/show.html.haml b/app/views/admin/webhooks/show.html.haml new file mode 100644 index 000000000..cc450de26 --- /dev/null +++ b/app/views/admin/webhooks/show.html.haml @@ -0,0 +1,34 @@ +- content_for :page_title do + = t('admin.webhooks.title') + +- content_for :heading do + %h2 + %small + = fa_icon 'inbox' + = t('admin.webhooks.webhook') + = @webhook.url + +- content_for :heading_actions do + = link_to t('admin.webhooks.edit'), edit_admin_webhook_path, class: 'button' if can?(:update, @webhook) + +.table-wrapper + %table.table.horizontal-table + %tbody + %tr + %th= t('admin.webhooks.status') + %td + - if @webhook.enabled? + %span.positive-hint= t('admin.webhooks.enabled') + = table_link_to 'power-off', t('admin.webhooks.disable'), disable_admin_webhook_path(@webhook), method: :post if can?(:disable, @webhook) + - else + %span.negative-hint= t('admin.webhooks.disabled') + = table_link_to 'power-off', t('admin.webhooks.enable'), enable_admin_webhook_path(@webhook), method: :post if can?(:enable, @webhook) + %tr + %th= t('admin.webhooks.events') + %td + %abbr{ title: @webhook.events.join(', ') }= t('admin.webhooks.enabled_events', count: @webhook.events.size) + %tr + %th= t('admin.webhooks.secret') + %td + %samp= @webhook.secret + = table_link_to 'refresh', t('admin.webhooks.rotate_secret'), rotate_admin_webhook_secret_path(@webhook), method: :post if can?(:rotate_secret, @webhook) diff --git a/app/views/layouts/admin.html.haml b/app/views/layouts/admin.html.haml index 62716ab1e..0f6433781 100644 --- a/app/views/layouts/admin.html.haml +++ b/app/views/layouts/admin.html.haml @@ -23,7 +23,10 @@ .content-wrapper .content .content-heading - %h2= yield :page_title + - if content_for?(:heading) + = yield :heading + - else + %h2= yield :page_title - if :heading_actions .content-heading-actions diff --git a/app/workers/trigger_webhook_worker.rb b/app/workers/trigger_webhook_worker.rb new file mode 100644 index 000000000..2ffb6246f --- /dev/null +++ b/app/workers/trigger_webhook_worker.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +class TriggerWebhookWorker + include Sidekiq::Worker + + def perform(event, class_name, id) + object = class_name.constantize.find(id) + WebhookService.new.call(event, object) + rescue ActiveRecord::RecordNotFound + true + end +end diff --git a/app/workers/webhooks/delivery_worker.rb b/app/workers/webhooks/delivery_worker.rb new file mode 100644 index 000000000..b1e345c5e --- /dev/null +++ b/app/workers/webhooks/delivery_worker.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +class Webhooks::DeliveryWorker + include Sidekiq::Worker + include JsonLdHelper + + sidekiq_options queue: 'push', retry: 16, dead: false + + def perform(webhook_id, body) + @webhook = Webhook.find(webhook_id) + @body = body + @response = nil + + perform_request + rescue ActiveRecord::RecordNotFound + true + end + + private + + def perform_request + request = Request.new(:post, @webhook.url, body: @body) + + request.add_headers( + 'Content-Type' => 'application/json', + 'X-Hub-Signature' => "sha256=#{signature}" + ) + + request.perform do |response| + raise Mastodon::UnexpectedResponseError, response unless response_successful?(response) || response_error_unsalvageable?(response) + end + end + + def signature + OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), @webhook.secret, @body) + end +end diff --git a/config/locales/activerecord.en.yml b/config/locales/activerecord.en.yml index d5f19ca64..720b0f5e3 100644 --- a/config/locales/activerecord.en.yml +++ b/config/locales/activerecord.en.yml @@ -21,6 +21,14 @@ en: username: invalid: must contain only letters, numbers and underscores reserved: is reserved + admin/webhook: + attributes: + url: + invalid: is not a valid URL + doorkeeper/application: + attributes: + website: + invalid: is not a valid URL status: attributes: reblog: diff --git a/config/locales/en.yml b/config/locales/en.yml index 6bb0cc7ab..b73b352c7 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -852,6 +852,26 @@ en: edit_preset: Edit warning preset empty: You haven't defined any warning presets yet. title: Manage warning presets + webhooks: + add_new: Add endpoint + delete: Delete + description_html: A webhook enables Mastodon to push real-time notifications about chosen events to your own application, so your application can automatically trigger reactions. + disable: Disable + disabled: Disabled + edit: Edit endpoint + empty: You don't have any webhook endpoints configured yet. + enable: Enable + enabled: Active + enabled_events: + one: 1 enabled event + other: "%{count} enabled events" + events: Events + new: New webhook + rotate_secret: Rotate secret + secret: Signing secret + status: Status + title: Webhooks + webhook: Webhook admin_mailer: new_appeal: actions: @@ -916,7 +936,6 @@ en: applications: created: Application successfully created destroyed: Application successfully deleted - invalid_url: The provided URL is invalid regenerate_token: Regenerate access token token_regenerated: Access token successfully regenerated warning: Be very careful with this data. Never share it with anyone! diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index b784b1da7..7e4f52849 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -91,6 +91,9 @@ en: name: You can only change the casing of the letters, for example, to make it more readable user: chosen_languages: When checked, only posts in selected languages will be displayed in public timelines + webhook: + events: Select events to send + url: Where events will be sent to labels: account: fields: @@ -219,6 +222,9 @@ en: name: Hashtag trendable: Allow this hashtag to appear under trends usable: Allow posts to use this hashtag + webhook: + events: Enabled events + url: Endpoint URL 'no': 'No' recommended: Recommended required: diff --git a/config/navigation.rb b/config/navigation.rb index 620f78c57..ec5719e3e 100644 --- a/config/navigation.rb +++ b/config/navigation.rb @@ -56,6 +56,7 @@ SimpleNavigation::Configuration.run do |navigation| s.item :rules, safe_join([fa_icon('gavel fw'), t('admin.rules.title')]), admin_rules_path, highlights_on: %r{/admin/rules} s.item :announcements, safe_join([fa_icon('bullhorn fw'), t('admin.announcements.title')]), admin_announcements_path, highlights_on: %r{/admin/announcements} s.item :custom_emojis, safe_join([fa_icon('smile-o fw'), t('admin.custom_emojis.title')]), admin_custom_emojis_url, highlights_on: %r{/admin/custom_emojis} + s.item :webhooks, safe_join([fa_icon('inbox fw'), t('admin.webhooks.title')]), admin_webhooks_path, highlights_on: %r{/admin/webhooks} s.item :relays, safe_join([fa_icon('exchange fw'), t('admin.relays.title')]), admin_relays_url, if: -> { current_user.admin? && !whitelist_mode? }, highlights_on: %r{/admin/relays} s.item :sidekiq, safe_join([fa_icon('diamond fw'), 'Sidekiq']), sidekiq_url, link_html: { target: 'sidekiq' }, if: -> { current_user.admin? } s.item :pghero, safe_join([fa_icon('database fw'), 'PgHero']), pghero_url, link_html: { target: 'pghero' }, if: -> { current_user.admin? } diff --git a/config/routes.rb b/config/routes.rb index dfce94929..87833539f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -235,6 +235,17 @@ Rails.application.routes.draw do resources :rules + resources :webhooks do + member do + post :enable + post :disable + end + + resource :secret, only: [], controller: 'webhooks/secrets' do + post :rotate + end + end + resources :reports, only: [:index, :show] do resources :actions, only: [:create], controller: 'reports/actions' diff --git a/db/migrate/20220606044941_create_webhooks.rb b/db/migrate/20220606044941_create_webhooks.rb new file mode 100644 index 000000000..cca48fce6 --- /dev/null +++ b/db/migrate/20220606044941_create_webhooks.rb @@ -0,0 +1,12 @@ +class CreateWebhooks < ActiveRecord::Migration[6.1] + def change + create_table :webhooks do |t| + t.string :url, null: false, index: { unique: true } + t.string :events, array: true, null: false, default: [] + t.string :secret, null: false, default: '' + t.boolean :enabled, null: false, default: true + + t.timestamps + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 081955660..5d8aea601 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2022_05_27_114923) do +ActiveRecord::Schema.define(version: 2022_06_06_044941) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -1035,6 +1035,16 @@ ActiveRecord::Schema.define(version: 2022_05_27_114923) do t.index ["user_id"], name: "index_webauthn_credentials_on_user_id" end + create_table "webhooks", force: :cascade do |t| + t.string "url", null: false + t.string "events", default: [], null: false, array: true + t.string "secret", default: "", null: false + t.boolean "enabled", default: true, null: false + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + t.index ["url"], name: "index_webhooks_on_url", unique: true + end + add_foreign_key "account_aliases", "accounts", on_delete: :cascade add_foreign_key "account_conversations", "accounts", on_delete: :cascade add_foreign_key "account_conversations", "conversations", on_delete: :cascade diff --git a/spec/fabricators/webhook_fabricator.rb b/spec/fabricators/webhook_fabricator.rb new file mode 100644 index 000000000..fa4f17b55 --- /dev/null +++ b/spec/fabricators/webhook_fabricator.rb @@ -0,0 +1,5 @@ +Fabricator(:webhook) do + url { Faker::Internet.url } + secret { SecureRandom.hex } + events { Webhook::EVENTS } +end diff --git a/spec/models/webhook_spec.rb b/spec/models/webhook_spec.rb new file mode 100644 index 000000000..60c3d9524 --- /dev/null +++ b/spec/models/webhook_spec.rb @@ -0,0 +1,32 @@ +require 'rails_helper' + +RSpec.describe Webhook, type: :model do + let(:webhook) { Fabricate(:webhook) } + + describe '#rotate_secret!' do + it 'changes the secret' do + previous_value = webhook.secret + webhook.rotate_secret! + expect(webhook.secret).to_not be_blank + expect(webhook.secret).to_not eq previous_value + end + end + + describe '#enable!' do + before do + webhook.disable! + end + + it 'enables the webhook' do + webhook.enable! + expect(webhook.enabled?).to be true + end + end + + describe '#disable!' do + it 'disables the webhook' do + webhook.disable! + expect(webhook.enabled?).to be false + end + end +end diff --git a/spec/validators/url_validator_spec.rb b/spec/validators/url_validator_spec.rb index a44878a44..85eadeb63 100644 --- a/spec/validators/url_validator_spec.rb +++ b/spec/validators/url_validator_spec.rb @@ -19,7 +19,7 @@ RSpec.describe URLValidator, type: :validator do let(:compliant) { false } it 'calls errors.add' do - expect(errors).to have_received(:add).with(attribute, I18n.t('applications.invalid_url')) + expect(errors).to have_received(:add).with(attribute, :invalid) end end From 45aa5781ce611ea411e34e3b18358a9fe15f67ce Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 9 Jun 2022 22:25:23 +0200 Subject: [PATCH 141/652] Change brand color and logotypes (#18592) - Add rake task for generating Apple/Android icons and favicons from SVG - Add rake task for generating PNG icons and logos for e-mails from SVG - Remove obsolete Microsoft icons and configuration - Remove PWA shortcut icons --- .rubocop.yml | 3 + README.md | 9 +- app/helpers/accounts_helper.rb | 16 +--- app/helpers/application_helper.rb | 11 +-- app/helpers/branding_helper.rb | 37 +++++++++ .../icons/android-chrome-144x144.png | Bin 0 -> 6644 bytes .../icons/android-chrome-192x192.png | Bin 0 -> 10138 bytes .../icons/android-chrome-256x256.png | Bin 0 -> 14194 bytes app/javascript/icons/android-chrome-36x36.png | Bin 0 -> 1050 bytes .../icons/android-chrome-384x384.png | Bin 0 -> 25667 bytes app/javascript/icons/android-chrome-48x48.png | Bin 0 -> 1468 bytes .../icons/android-chrome-512x512.png | Bin 0 -> 39853 bytes app/javascript/icons/android-chrome-72x72.png | Bin 0 -> 2501 bytes app/javascript/icons/android-chrome-96x96.png | Bin 0 -> 3713 bytes .../icons/apple-touch-icon-1024x1024.png | Bin 0 -> 104580 bytes .../icons/apple-touch-icon-114x114.png | Bin 0 -> 4641 bytes .../icons/apple-touch-icon-120x120.png | Bin 0 -> 4914 bytes .../icons/apple-touch-icon-144x144.png | Bin 0 -> 6644 bytes .../icons/apple-touch-icon-152x152.png | Bin 0 -> 7002 bytes .../icons/apple-touch-icon-167x167.png | Bin 0 -> 8096 bytes .../icons/apple-touch-icon-180x180.png | Bin 0 -> 8947 bytes .../icons/apple-touch-icon-57x57.png | Bin 0 -> 1857 bytes .../icons/apple-touch-icon-60x60.png | Bin 0 -> 1952 bytes .../icons/apple-touch-icon-72x72.png | Bin 0 -> 2501 bytes .../icons/apple-touch-icon-76x76.png | Bin 0 -> 2617 bytes app/javascript/icons/favicon-16x16.png | Bin 0 -> 650 bytes app/javascript/icons/favicon-32x32.png | Bin 0 -> 1248 bytes app/javascript/icons/favicon-48x48.png | Bin 0 -> 1798 bytes app/javascript/images/app-icon.svg | 28 +++++++ app/javascript/images/icon_cached.svg | 2 - app/javascript/images/icon_done.svg | 4 - app/javascript/images/icon_email.svg | 4 - app/javascript/images/icon_file_download.svg | 4 - app/javascript/images/icon_flag.svg | 4 - app/javascript/images/icon_grade.svg | 4 - app/javascript/images/icon_lock_open.svg | 4 - app/javascript/images/icon_person_add.svg | 4 - app/javascript/images/icon_reply.svg | 4 - app/javascript/images/icons/icon_cached.svg | 1 + app/javascript/images/icons/icon_done.svg | 1 + app/javascript/images/icons/icon_email.svg | 1 + .../images/icons/icon_file_download.svg | 1 + app/javascript/images/icons/icon_flag.svg | 1 + app/javascript/images/icons/icon_grade.svg | 1 + .../images/icons/icon_lock_open.svg | 1 + .../images/icons/icon_person_add.svg | 1 + app/javascript/images/icons/icon_reply.svg | 1 + app/javascript/images/logo-symbol-icon.svg | 2 + .../images/logo-symbol-wordmark.svg | 11 +++ app/javascript/images/logo.svg | 11 ++- app/javascript/images/logo_full.svg | 1 - app/javascript/images/logo_transparent.svg | 1 - .../images/logo_transparent_white.svg | 1 - app/javascript/images/mailer/icon_cached.png | Bin 423 -> 2014 bytes app/javascript/images/mailer/icon_done.png | Bin 253 -> 817 bytes app/javascript/images/mailer/icon_email.png | Bin 387 -> 2120 bytes .../images/mailer/icon_file_download.png | Bin 225 -> 813 bytes app/javascript/images/mailer/icon_flag.png | Bin 0 -> 693 bytes app/javascript/images/mailer/icon_grade.png | Bin 412 -> 3243 bytes .../images/mailer/icon_lock_open.png | Bin 387 -> 2498 bytes .../images/mailer/icon_person_add.png | Bin 376 -> 2356 bytes app/javascript/images/mailer/icon_reply.png | Bin 319 -> 2146 bytes app/javascript/images/mailer/icon_warning.png | Bin 371 -> 0 bytes app/javascript/images/mailer/logo.png | Bin 0 -> 1745 bytes app/javascript/images/mailer/logo_full.png | Bin 2371 -> 0 bytes .../images/mailer/logo_transparent.png | Bin 506 -> 0 bytes app/javascript/images/mailer/wordmark.png | Bin 0 -> 8942 bytes app/javascript/images/preview.jpg | Bin 292252 -> 0 bytes app/javascript/images/preview.png | Bin 0 -> 514463 bytes app/javascript/packs/mailer.js | 2 + app/javascript/styles/application.scss | 1 + app/javascript/styles/mastodon/about.scss | 2 +- app/javascript/styles/mastodon/branding.scss | 3 + .../styles/mastodon/components.scss | 1 - .../styles/mastodon/containers.scss | 5 +- app/javascript/styles/mastodon/footer.scss | 8 +- app/javascript/styles/mastodon/variables.scss | 2 +- app/serializers/manifest_serializer.rb | 57 +++++-------- app/serializers/rest/instance_serializer.rb | 2 +- app/views/about/more.html.haml | 2 +- app/views/about/show.html.haml | 4 +- app/views/accounts/show.rss.ruby | 1 - .../custom_emojis/_custom_emoji.html.haml | 2 +- app/views/application/_sidebar.html.haml | 2 +- app/views/layouts/admin.html.haml | 4 +- app/views/layouts/application.html.haml | 21 +++-- app/views/layouts/auth.html.haml | 2 +- app/views/layouts/embedded.html.haml | 2 +- app/views/layouts/mailer.html.haml | 4 +- app/views/layouts/public.html.haml | 4 +- app/views/shared/_og.html.haml | 2 +- app/views/tags/show.rss.ruby | 1 - app/views/user_mailer/warning.html.haml | 2 +- config/locales/en.yml | 2 +- lib/assets/wordmark.dark.css | 1 + lib/assets/wordmark.dark.png | Bin 0 -> 8942 bytes lib/assets/wordmark.light.css | 1 + lib/assets/wordmark.light.png | Bin 0 -> 8576 bytes lib/tasks/branding.rake | 78 ++++++++++++++++++ public/android-chrome-192x192.png | Bin 13534 -> 0 bytes public/apple-touch-icon.png | Bin 4880 -> 0 bytes public/badge.png | Bin 3342 -> 4248 bytes public/browserconfig.xml | 9 -- public/favicon-dev.ico | Bin 9086 -> 0 bytes public/favicon.ico | Bin 9086 -> 15086 bytes public/mask-icon.svg | 1 - public/mstile-150x150.png | Bin 4523 -> 0 bytes public/shortcuts/direct.png | Bin 3045 -> 0 bytes public/shortcuts/new-status.png | Bin 3031 -> 0 bytes public/shortcuts/notifications.png | Bin 3067 -> 0 bytes public/shortcuts/profile.png | Bin 4190 -> 0 bytes spec/helpers/application_helper_spec.rb | 7 -- 112 files changed, 257 insertions(+), 152 deletions(-) create mode 100644 app/helpers/branding_helper.rb create mode 100644 app/javascript/icons/android-chrome-144x144.png create mode 100644 app/javascript/icons/android-chrome-192x192.png create mode 100644 app/javascript/icons/android-chrome-256x256.png create mode 100644 app/javascript/icons/android-chrome-36x36.png create mode 100644 app/javascript/icons/android-chrome-384x384.png create mode 100644 app/javascript/icons/android-chrome-48x48.png create mode 100644 app/javascript/icons/android-chrome-512x512.png create mode 100644 app/javascript/icons/android-chrome-72x72.png create mode 100644 app/javascript/icons/android-chrome-96x96.png create mode 100644 app/javascript/icons/apple-touch-icon-1024x1024.png create mode 100644 app/javascript/icons/apple-touch-icon-114x114.png create mode 100644 app/javascript/icons/apple-touch-icon-120x120.png create mode 100644 app/javascript/icons/apple-touch-icon-144x144.png create mode 100644 app/javascript/icons/apple-touch-icon-152x152.png create mode 100644 app/javascript/icons/apple-touch-icon-167x167.png create mode 100644 app/javascript/icons/apple-touch-icon-180x180.png create mode 100644 app/javascript/icons/apple-touch-icon-57x57.png create mode 100644 app/javascript/icons/apple-touch-icon-60x60.png create mode 100644 app/javascript/icons/apple-touch-icon-72x72.png create mode 100644 app/javascript/icons/apple-touch-icon-76x76.png create mode 100644 app/javascript/icons/favicon-16x16.png create mode 100644 app/javascript/icons/favicon-32x32.png create mode 100644 app/javascript/icons/favicon-48x48.png create mode 100644 app/javascript/images/app-icon.svg delete mode 100644 app/javascript/images/icon_cached.svg delete mode 100644 app/javascript/images/icon_done.svg delete mode 100644 app/javascript/images/icon_email.svg delete mode 100644 app/javascript/images/icon_file_download.svg delete mode 100644 app/javascript/images/icon_flag.svg delete mode 100644 app/javascript/images/icon_grade.svg delete mode 100644 app/javascript/images/icon_lock_open.svg delete mode 100644 app/javascript/images/icon_person_add.svg delete mode 100644 app/javascript/images/icon_reply.svg create mode 100644 app/javascript/images/icons/icon_cached.svg create mode 100644 app/javascript/images/icons/icon_done.svg create mode 100644 app/javascript/images/icons/icon_email.svg create mode 100644 app/javascript/images/icons/icon_file_download.svg create mode 100644 app/javascript/images/icons/icon_flag.svg create mode 100644 app/javascript/images/icons/icon_grade.svg create mode 100644 app/javascript/images/icons/icon_lock_open.svg create mode 100644 app/javascript/images/icons/icon_person_add.svg create mode 100644 app/javascript/images/icons/icon_reply.svg create mode 100644 app/javascript/images/logo-symbol-icon.svg create mode 100644 app/javascript/images/logo-symbol-wordmark.svg delete mode 100644 app/javascript/images/logo_full.svg delete mode 100644 app/javascript/images/logo_transparent.svg delete mode 100644 app/javascript/images/logo_transparent_white.svg create mode 100644 app/javascript/images/mailer/icon_flag.png delete mode 100644 app/javascript/images/mailer/icon_warning.png create mode 100644 app/javascript/images/mailer/logo.png delete mode 100644 app/javascript/images/mailer/logo_full.png delete mode 100644 app/javascript/images/mailer/logo_transparent.png create mode 100644 app/javascript/images/mailer/wordmark.png delete mode 100644 app/javascript/images/preview.jpg create mode 100644 app/javascript/images/preview.png create mode 100644 app/javascript/styles/mastodon/branding.scss create mode 100644 lib/assets/wordmark.dark.css create mode 100644 lib/assets/wordmark.dark.png create mode 100644 lib/assets/wordmark.light.css create mode 100644 lib/assets/wordmark.light.png create mode 100644 lib/tasks/branding.rake delete mode 100644 public/android-chrome-192x192.png delete mode 100644 public/apple-touch-icon.png delete mode 100644 public/browserconfig.xml delete mode 100644 public/favicon-dev.ico delete mode 100644 public/mask-icon.svg delete mode 100644 public/mstile-150x150.png delete mode 100644 public/shortcuts/direct.png delete mode 100644 public/shortcuts/new-status.png delete mode 100644 public/shortcuts/notifications.png delete mode 100644 public/shortcuts/profile.png diff --git a/.rubocop.yml b/.rubocop.yml index a76937426..9e3ff21f2 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -281,6 +281,9 @@ Style/RedundantRegexpEscape: Style/RedundantReturn: Enabled: true +Style/RedundantBegin: + Enabled: false + Style/RegexpLiteral: Enabled: false diff --git a/README.md b/README.md index 4b48e071d..eade19ef8 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ -![Mastodon](https://i.imgur.com/NhZc40l.png) -======== +

+ + + Mastodon +

[![GitHub release](https://img.shields.io/github/release/mastodon/mastodon.svg)][releases] [![Build Status](https://img.shields.io/circleci/project/github/mastodon/mastodon.svg)][circleci] @@ -35,7 +38,7 @@ Click below to **learn more** in a video: ## Features - + ### No vendor lock-in: Fully interoperable with any conforming platform diff --git a/app/helpers/accounts_helper.rb b/app/helpers/accounts_helper.rb index 557f60f26..d37634964 100644 --- a/app/helpers/accounts_helper.rb +++ b/app/helpers/accounts_helper.rb @@ -23,20 +23,20 @@ module AccountsHelper if user_signed_in? if account.id == current_user.account_id link_to settings_profile_url, class: 'button logo-button' do - safe_join([svg_logo, t('settings.edit_profile')]) + safe_join([logo_as_symbol, t('settings.edit_profile')]) end elsif current_account.following?(account) || current_account.requested?(account) link_to account_unfollow_path(account), class: 'button logo-button button--destructive', data: { method: :post } do - safe_join([svg_logo, t('accounts.unfollow')]) + safe_join([logo_as_symbol, t('accounts.unfollow')]) end elsif !(account.memorial? || account.moved?) link_to account_follow_path(account), class: "button logo-button#{account.blocking?(current_account) ? ' disabled' : ''}", data: { method: :post } do - safe_join([svg_logo, t('accounts.follow')]) + safe_join([logo_as_symbol, t('accounts.follow')]) end end elsif !(account.memorial? || account.moved?) link_to account_remote_follow_path(account), class: 'button logo-button modal-button', target: '_new' do - safe_join([svg_logo, t('accounts.follow')]) + safe_join([logo_as_symbol, t('accounts.follow')]) end end end @@ -99,12 +99,4 @@ module AccountsHelper [prepend_str, account.note].join(' · ') end - - def svg_logo - content_tag(:svg, tag(:use, 'xlink:href' => '#mastodon-svg-logo'), 'viewBox' => '0 0 216.4144 232.00976') - end - - def svg_logo_full - content_tag(:svg, tag(:use, 'xlink:href' => '#mastodon-svg-logo-full'), 'viewBox' => '0 0 713.35878 175.8678') - end end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 705cc2e3f..db33292c1 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -99,11 +99,6 @@ module ApplicationHelper end end - def favicon_path - env_suffix = Rails.env.production? ? '' : '-dev' - "/favicon#{env_suffix}.ico" - end - def title Rails.env.production? ? site_title : "#{site_title} (Dev)" end @@ -147,8 +142,8 @@ module ApplicationHelper end end - def custom_emoji_tag(custom_emoji, animate = true) - if animate + def custom_emoji_tag(custom_emoji) + if prefers_autoplay? image_tag(custom_emoji.image.url, class: 'emojione', alt: ":#{custom_emoji.shortcode}:") else image_tag(custom_emoji.image.url(:static), class: 'emojione custom-emoji', alt: ":#{custom_emoji.shortcode}", 'data-original' => full_asset_url(custom_emoji.image.url), 'data-static' => full_asset_url(custom_emoji.image.url(:static))) @@ -198,7 +193,7 @@ module ApplicationHelper def quote_wrap(text, line_width: 80, break_sequence: "\n") text = word_wrap(text, line_width: line_width - 2, break_sequence: break_sequence) - text.split("\n").map { |line| '> ' + line }.join("\n") + text.split("\n").map { |line| "> #{line}" }.join("\n") end def render_initial_state diff --git a/app/helpers/branding_helper.rb b/app/helpers/branding_helper.rb new file mode 100644 index 000000000..c91661e56 --- /dev/null +++ b/app/helpers/branding_helper.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +module BrandingHelper + def logo_as_symbol(version = :icon) + case version + when :icon + _logo_as_symbol_icon + when :wordmark + _logo_as_symbol_wordmark + end + end + + def _logo_as_symbol_wordmark + content_tag(:svg, tag(:use, href: '#logo-symbol-wordmark'), viewBox: '0 0 261 66', class: 'logo logo--wordmark') + end + + def _logo_as_symbol_icon + content_tag(:svg, tag(:use, href: '#logo-symbol-icon'), viewBox: '0 0 79 75', class: 'logo logo--icon') + end + + def render_logo + image_pack_tag('logo.svg', alt: 'Mastodon', class: 'logo logo--icon') + end + + def render_symbol(version = :icon) + path = begin + case version + when :icon + 'logo-symbol-icon.svg' + when :wordmark + 'logo-symbol-wordmark.svg' + end + end + + render(file: Rails.root.join('app', 'javascript', 'images', path)).html_safe # rubocop:disable Rails/OutputSafety + end +end diff --git a/app/javascript/icons/android-chrome-144x144.png b/app/javascript/icons/android-chrome-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..d282a6d3d63432a3198d0ecbe882ba32915b8fe5 GIT binary patch literal 6644 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 literal 0 HcmV?d00001 diff --git a/app/javascript/icons/android-chrome-192x192.png b/app/javascript/icons/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..d3f9959c5aea246408b324e6700c4c0647b947c2 GIT binary patch literal 10138 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 KL2INfKK&1y=3s*W literal 0 HcmV?d00001 diff --git a/app/javascript/icons/android-chrome-256x256.png b/app/javascript/icons/android-chrome-256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..98ce6ffbbbc9d4482c2ca02a3a105d13fab9dc17 GIT binary patch literal 14194 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 U8o2OnMgRZ+07*qoM6N<$f>V6=+W-In literal 0 HcmV?d00001 diff --git a/app/javascript/icons/android-chrome-384x384.png b/app/javascript/icons/android-chrome-384x384.png new file mode 100644 index 0000000000000000000000000000000000000000..60b3753547ae92fd71a12f2ba6eeaac6085bfd14 GIT binary patch literal 25667 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 literal 0 HcmV?d00001 diff --git a/app/javascript/icons/android-chrome-48x48.png b/app/javascript/icons/android-chrome-48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..ce49448d43f48d48b3ba4d3d2f5e249ebdadf825 GIT binary patch literal 1468 zcmV;t1w;CYP)7RryNRDO(r5)%WG7~_*~ zU{oX^rp6dUVl+PZ;*$>=qc6Vbg9tGyLL*4R1BoVT6(Rwt3NDsze-=txy8YYxd&Y;| zcJH>`dv}Woedz3c*|{@kzB4mt?##gh2MLxEv3m_*E-eEJqh&y0#DSL9DdR-)USr53 z4swZk2$q_MsFWOvl*x^oV0A0T>Y%a$G!2;ox{k8~(^CWhmPKh3$L>%v3Eh9tjouQD z4(@+GU5uQ<GuordfWqm<`(wwHboWL*Vp6T4Ye`cx}8;5XTyYuH8uFeZhorMfj}Q~3O@Ek zkL=L=D@;$rM;}<-7kXzoYulR-zo}PL;K}3m@gqI6{L`Jy2RqaUH!8E7t=su`Cv6Bc z7#1?1me#yv{OXw1eIX(AN>#5?^(vuP#;^2!{+V^@qI>+v4L^T0+4t!u=Hz590z^fSa~}nWi(H z<->!?`lk8=9h%?>0FI3(zLr4H*PFLtMIjp~AZo!LA^-%RwwWfOMG$Dk3dVVMpKI1} zp_KtpQs*ZsEV?psr_rj`LfMJ3Kr2gsCmKOh-ghe8@O zu9cZ-sq49eM)RDp?g8=c`_%xz1^UE@=6T3*U}Ef6Sw(EoNev9SWlCS`J)4qwT7D=w zn&->mAy0@hkW?5?cneErI=5tb1zX=H0HCpn2e(n><(QFN*_@O7>x!ueognC-g*N$= zN_hYx^Jn#1_4T)-P{<`dS~X9S2!1>}g@IKOis`9GZn=31VNeQ5p80m-pYEg)sf9p9 z;Zw(8zg;APLgcx0>YMQsM{ja&kn}>@kI=cSH|{KGV{Fu`spG*o1`^K2U(;PbPAB3? z#)YO=0n95`^8kf-DDiLFN|R>fZHqB{=d}UGprKi0ETz)0KWEGPu88@A{!{ zIAI|p5?nv=#ps63Mt!63zj^kh=*@n6pm)5WDu59BOf`bwT+VG{@2)?CC5Xs0$68wJ z-g>XGDw>xxwk0q9HZ_=V#ztLDN8MoMl}cl?+SsBUexZjX1?TU=fcEU{4iO=8JIj=8t@SGp#m0|m2< z_JXz$xT4N91&g`pDed-ShDc$e;JbzTlM(>UY2*J7x~m(oC3oq$3@D720fo_$1N0x7 W(E>uC=G@5u0000tt|2&slK{arxCeKa8Qg*e2ol_#V8IzI!QI{6-Dj5P|LptW z-P#YkAGd02Zq1qQ>N}@z_wPubb8eKXvOE?#89D#}!20}2MjZfvfBOj!K>ZK#Ba^Or zBgkfo@-hI}e?GY#B}o7PHQ=+1q^5V~NrzXn{k#^_gMP_TcxoZjA&aQ&@DFyyx*rH1 z)BeGkulz#``DGFOE4(rVpVv;S<>nVyZDfsBd8c!O*Iorh7#R0w792ZNq# zLQ3ULol!Fv!!NrK!EZfEEJ^?pOyu6=p8vo3|FzY~N4sbq{-4d{$+dZLdfU}$G&eZX|L41D zPx)U6jKKc~5iDU}5c&Q?Wv3t3|AQ5RJ$T;#=|=;Ebep89rvd&utSE@=e|WI}@7@3B zs0A7B|Bgob&(t)~2>{3;-P}doaQ|)oLisPP2Vf$Hm@1gUcfGZX2^s(In|wi7|1-)a z_rHHaobdl1vl%A;h3My)=FWO}S^zpkv`boJ-7!4hNq1CNNjn_Igj#^}hzi>QNmZ^P=|u4QHA#gIa0 zgG@z5du#MA13QLnL%DBomhna=-e;;qJQM>L9a~R$TkQonJ1|oXq(rTA+B%P^JfjU*sL2(qlwdVf*a7-%rl|W28(v-vtgIrl*PC2HJ@0XpWpnO&cK(yPfyql{n6g8Y6uM;eno}<2?;jkMu6Wn z0*bQE>l$fU_m}*Juzyzs1!QpPP z=hq*1viHm7dKBQirv%MnI=Jk=>ZjZ_$8eQQLeY2wSut79Gv7<_`}*bcjb%rt=9Qr{ zF78a%FDqj6{|XbV$9Dz26ChCP_4`?W(;$QC4Ei+6G(eiL;1rXIRk#y`u5DYneM2rI z{m^v;Co;gVZNx%7(E4U9PugO&kt=K8`%2_7#JE=)=MOP4UlO7Qyzl%tdt4i4xLVh> zIM|T*n$0M&8 zvi)n|#p_5t^QD&r%8egt1+8N7>cxkJ{zLNL-#gUnztH(*3V@d+IT3mPL!Z)Vs z)2ruE!_7HDwn!teulj*=(0|gH7873(nd<2<#kvu@ilvlZ>+4_2=O-$Rk{p(`DN8BJ zLX*7gcmqK)>xtqYb69>O>r|@*stV}jD)>y48T>uZ4q${GL|ijb&d0PQDPh`MqyZM_ zBg?1;&i&Ck9y#;|H#NrbSPs2(Wx}eu41FY3J}rLR=AM4taZSm%zc6gZ zaK$lX2i~67gsz7jjP)J<)@eDssWZ#ysqWuWSqcx1X6&*sKg6x;PeFa@(fe%AQ8kj5 zwUwg_eJK=6FX`6p7r${Y{~>f7myE~0AuX_LB>PFS`SxS` zc7KM5r~63h;lOiB;d<1i$g|HA(>?aPe{xb$KJ)sCWHxG-Exk9vLp7|}zUQj)JPG>` zQ^ZSD(Ej#W_ytj^_c(j-OWw{iDpIeaz;P#E#k-;NTf@bmC$<++ymO|BD|>8Yhlu?5>w6BT^J2-N2>r z{Gxl(NA_@Ex(PoJHvAm6)9?e#@}BK4T^1%h{O|S=swWfZY|WlaX}_pc5>7qfBPMz@ zh^|+EZSJ8{r_JMWz7VRLsMHzf4atOUXSSVvGNspX4e$`mQ~Y{PbJs?LSM_%ip>#@r zJxF(ZCA-JQ;LI!z3z>BRF)?{^+~6Gorio)*;8j-adm}JTU~Wepx*2@r2w|G{8{kM# zqk%jjUfC+ZYq!PgnhH}8#a?YwN$%DBbs)tdv7D=o=6qkQ$h0r<$#0h;DV@HipI^GN zxTF~zI#vpe==`%|T}{*;LY?#6%ewz2$H4-&DvUp378 z_!tp0!r_>&i$5TXJ{h@VUZoMKoV^3|QL!600-PwpDdJ}6zG=B{goGfl(KVUx^>T(@ zIBk-)1~C7=`!AKO`*6Fl^wVuf6Z=QunbK_>#f9c2h_u)D`BdsM&1;cN!^9&ET;y8% z$R46FYRP70RJ_#kmWICb*ZLRzbu%#94ne3AvJ#mRK#6%M8iX8py!^h#_e+7?<+;); zQVQ_ydVm2vBq@@$Lx7(T!m28^G{4artNfTXN%1wYA=rCQCxs*u z^kt9*&PN#p%bOz>&yi08>_+kOa0`8NyrXHN!K($0^#SK zyA3!wwUi^i@ysdZqyLlz7EoJ64HQIHZr0kZT^dcP6R4-+tRcSfToE{{j{Bt5 z+yE^*P*6sSkG~ABv1O3FS$m(#ioAvEB6?e4kKTSciUsfr$j72(Y^nuYqI|*4D2AyJ zrln^VDdkr=tjB?#hwF6=^aODd^bC=tjFXEQDjXM6yT+#&JrbYqu}oKxsZi_!8`f8(OEz37;=15T?j*TO@bo;)B_liTrwbT z&tRWGO4!r-2mCuO7O0kZ4)%-+^W%LCOWtL-Oo&p8RbhdbISXrnZF(!`rzsEBpD4AK zZwzLcX+uoD@cb@jxhQV3kcm|Z%;%U2BC+@ElIcS1lF8+U%-6zJ*aHti-wXo2G*nxM z^;5~_sK_6s9+sv^2BUugd4FH$$Rm~}e2;=KczQ_iw^T`uvhQb*0EStI5ufOwTLUoy z%|~ht6jmj;S6$4m0!I zjvazZ*4JD=pww{4&ZrcX32UZ}9gndbJk#=(isZA@rLWW^iwHMlcd8e4UL5mt zof|`Gl@QT!q&2@k6l~kc!wPZ8H>@+|HO6NPF{i_W*bDTHk^`>aKeq5C4$|-f?(DxK zy>WkD|7RF}D4Y1ICF0i~Z^;!{OJ?1DO2=FWafVNtYI{HGYU|F+aQ^Crch1(~&e;f( z*E;AR#S|;3+f72F@-^G9c!*#UBJ?nuD%pGt^7Wl!;uh+Li9ZBeSsfJXUo@gz%@U#B zKezNuj$_eD@5*h4tL2VB&mLi&I+p9#Lus#z$EJbYN52LzBT52=y6wz1Er8h}Lp57P z(;Mb6b=k@0Kq)nbI3eFz=tx9dUmHOmSn%m~@Vb^BB=IFk^YOxogw>1$;CX7>e!TxH z7I`Laa%V!kfHBb7@|t(j_h-oyoi^pxBkZkmCfJ zzhFiG2vFrh!w<>*ig}P8w9B6+F&Wt&(c6!+WIt}1PzDs(8hVL6R5RMjL z`7sA2>$CP2M+O{q5KzHN7Be(zoXHb4xfD`AWIS^dF@+fJk~_p(Dqf?EDdQ`a`UQ@d zPTNcM0ZnQ^@9Yu5Db1%lHa!(ioZ5lcq>mep+jgcFcETRGnVKQ;#~REF8iEGJ68r_; zHPQ0p-2~{&=}Fqk@J?!F~(0%MFE{-lP&6IWOtyRm%xOfRCiyW^WVZ zXI-TFE&yq)_46`;)lCCEp6QRY${*;Mq4;7460cD?*56V-DsifxtNxvjB4JL4SJMPs zQNxw@XoiQaA~|;}KSkwaz`fyuwG#erhV=w6Z6?_J-Cyk z`H1T;URwjv{J8)DMi0GbB(Xz8YsY{Tup~5xetIMoGKuke08`&lm`J8y0*YNDg0+!ry zZ<(8v!#pyEgkk^ld;XgCayXCZr5&(Z4`SCq0&-xwWLlO(`|WA0;C6lZ>##D2P$e#; zLzd+B{gVt+JgzDW0!h?8gc@PXScFt!1o&i*)uQO)3KnbZ4MPLx(KSPFAAd@Ad5<2G z5gVp?3_^ov4s!~hX4s%~rNyQMbodB^YJgc!zzaKE?nlN-EB1#ayZ2l^dI-F!)C%Zz zCS3_{?te3LD-`d;Z5Hu|P8bSVZBm2ZU5)2+vZG@(#1vfm6E43c)e>-IDbZ~w1AuJC zj>^%6)QRt4BF~t8#Dsgp0J!cLXuZJ!T*>@}B`orHXYKuSDwd_j3zoEGhY0f+uAv69 zOn9)-=2pz%9}#!AX=W0WxZJ$A1;C{_0(IZwARqXQ+qLf$#Y)M^WL!@JpMPyRkx(A3 zO1kI@{)9`p1k+QWbo#x%x8fbhe#b38@o9qHv(Qumb&Tp^&=?m7cfZE(m0fV(+y0>R z(;n)BRvqgiqdMa`82+dpQt*3D(c_{jh z=?4pVGD^yzjFEo7?H*6W_wO{fqw1k>xFKHWjw`-?1rovH`*{d;+ZF2&W3i{$=7nkCR_)!i z%5|sMW6n-7dtU0L;F&={jfbl*nGq~} zPa3D1H!@#L-Ev4V8E8sEc(5P1HPbx&8?BqyGF52lSyNll0y>zJ<;J(6cKozndID)5 z!3n5(ZG3(^A=yzaLR4^StXC9@I9slUemRYv`MX^ITqbj?KW5*Xm>he&l)sMXoP+Mo zUw5o8Rz%DX8Y6D>3|ITFH7-(c*|guZk%@SIhxEtr0&I_ilkZssU2pt78_t>}uYmA@ z*FY}dvpd@f>1STLt|-Lp@B9AKZ?=9z4R}aA(tMEr5A*`rV@8<6eDNHGnp5EmZP&^# z-3Ky&E`sKIx;rj)2=`pI8S&(pg?)Ari+3Kv+G>0cz4#&fIhON=^Ibb{3)lG^Q{{K& zNagM8lsB}K6+Adu-l>?8-%2so_E4^GG~@l~CE(ab_r4~+R2w~}05;eQ;r z{u(xi0(C`G_2VL=H`zk-UJ@Ws0$@_+Lp93Rn!CGR=wN1dS~XeSR;Dn~{pa&xAarx~ zT(rHP;`297R{feKCv~=6JQ-2%<>Bo6R)G(W5RH$jBqG^9!mz%6Z3xsP@F^{_Yl5)X zK4Lh>>lWwbdJpKQW$x%`kEKS3Kwm>8anEbwf(ENcKR(*!9E?A$=^u~aMHYLMpa$t zY0(t59W+Errl>~3t+@Bk0$<|Ne>qZ?@H<~n!(P`b10VUubE9vbZBgj?&+;ia+xCv; zUrnxO*VoBYL6yd&xZllTFyoiQqk#L$$d57?OSoNqdb1MTH)sR^1i7lGoP7Y~p{O2s zUt={Ha}45Lge_WM-$M_F3UE&G*0>T4b$^bjxJMF~SD1+_tRv4|v&lZ`<^$E{V;{5U z#n1cK7uz?2)k^rexUPXv!(+D`n=J7YcuMv4XiqSsO!X`_Dv?0}MNj$?wvLh4Z9Hsd z1uz3AO|BQM-}4x=OG@ zBPN8O6=~i69-xxbehzieZ<^#Ef1icveKL9120K0q$N_ooo_y9p(~hqBhLZ2m5Ykp| z(A$JyBO;-HaMLqb;}7ji3_E=j>R&ljw*>i=!@9{yPxh=i7encA?%lGBI-PyPiVm-} zG9iYspQ&Q-<{dTiUHYqFfh(2^O1QV{9XK#PfH>@B5AqPDH#G=ZTdog32K`uorCVRE zLvMHefX^dCEgIAh{K{z5S!m@S{U+vQ6W!V=YRPBSbIvrA3Zb<>a?RlqGlUU{VoFp3 zPP4-b`n^{C?cA&e4o7{)s9yW$o}u=;1KDDo6b&ryawpWwG2K~9MO45L~Y=7du|0d0vgcN9LkXu|pWaOw7cm_}@p; zs0No_p!1PYF5AA(Shr(TV)8_*58~TqFu%@~r`~n_z_Z1GvZ0zI!vvEvjpESMuv#3k z@-ai4agbgmOb#WoZbCwpmFNirxjUOlMf~Nos%d3u<&T4IRYOB4@L@GY1^PP87E?l( zV$4po8$h^3!yDP^fO1q!k$i)3>U=g+hH~z-pBB)KQI7}YmLEUwGE@xV;G3c%s62ZgPW8 z7}s>(vXNE)L5+9=K7@RO60(G5 z>lZTj$7lOq9P8(R3_T}hL*_y896ONPW5xA$r}*_aQnSB!{gjl((-YX5wkYtH0gWLI zqAm7jVkA*i@DsKiz^hmSl$>RkD!7oGqL2ApcM7l@NYhy}DXNQghj?3L|U&uy)aOL0P?#2*^<`Q=G zrAId5UmfJ%u=J$$r@OgjKh9-#jOBv^YgR zJhA78&h-bCVfpy)hRC5=2&~@$5KlxruwBit)E1X?@lJH4mMVMgEG$1gCd@zzu)+j0%^kc^!6kRrlgiKQ(+MZg!&?T_7UN8l7bG zr-~xMPe~_J7Qt3<*)vd?Snn1IlljDQFV^I>e*SuQwPltgm7ET|=$xa&Ib~DqmUvAk zum^M#bP%e4m1unKWB6IMh`sdg$8&*A-kPB5A%4pM{ocu6uzq56q{O&*CoCSid^B`) za01?PQ#50pCxb(k>+;#R+&30va_bfRrn!d4xc`gz8^yo}^S?#`ooQ}hIDu04UH!3D zJ`Ah9mw)f=Wc70pH@)jW|g;CI8M+7-xN?ngQ{@`?RQEmQ()# z_FA%-WGlTmqo-1S7kI5q9n4uo99PZ(&u!i5Jm#jf_y+iZ^Bm6mZo-k5bd^T&+f8d! zRE=!3A5LXsl*FU=%09JjD^!NJHRTi&UqrmcaYoDDCH~=CiETF}^iI)Dog#L57=6Bn zjy~(if6mxk#J&(#sU_+DgYf28D}dc_5rlIiyM-R_U5h)O{L_)Rar?%rL{rCnJyf2w z<~1{`+{r?_BcnR;N7|jZATTa%7F4<-o$&G+uHiBk=j*Uhd6vH`myLx-2q?dzq1)-t%i*>#JsaXD#vRtF%BF z(l%^{l1&r}AS$IqroK$K-nlIyS-}Lh9`UJ!nn7$} zAzF%ulu}~@FH$Qau@k6Zlt-OpWv!{h`Ay-#)Rv@tW6;6d;_JU5asCPJ4HOVVAK4#E83mvU?_eMzi z=FRuCF48b!xS>#AjC0{}-DYi)gv_s}fgAOf!89AL%(MKvGVtb`EePkZ7^1|9+m-#) z>X#X&rFf8CPE!!C#h~1uDSo|A+b%j|?JJkqzEs0S4HR{)o)S~o%E;EqgHyO>qz`AR zAYA_tYEg@&s3<{EA8**3*ApfwmM(*U5H*)f26q@q4gc_xg{XHge7`RA7B52fI{PAR zod(ba%Cxz7vM|r7x|$iZE}w4dXu`HjAabu%6y(q6%c-C{jS7Y#w{wO6|fQ@2D-dy6%QJ^NB6-7F*U)^N?zM%461YTSO~_&=T@v6oCA&|MYHMX4 z%7?1kxsZfnM$()~w?o%=BsxB@co7|M#CEyqc;#2G%2YlGY+PHJO6(2fW-30msJ~Hz zx}r=Z_>GKtCIw%EB{Kxk1{urCGMt3f^hxXb!PUiu3YBf|_Z>AP9dv02eu^v&QSYrZ zHjRxj?%{NTZj1F-)>w7~AqJQLDu39~rS$XPj_nokqf*B38vYjpE=vZ(ws8NMG(dX( zoVm#FeVLz%1Gd}cXv6OIP3&a*gZyccuD{ol6<^IN6(4v&2MBCjtyQ&d){NLAYOGW; zV?`>1cb8DbvaPwQlad(#U`3h*kJO8kgpU2*Dnt+PTCf32ydT*q;e-cNH}f8dhw=PG z4d*F?1!CQE1$5q4q1-9d>YAqo&3WwEPWaFqm3%8egs8?JLBvgEHE3=-n&_v98LII? zi-MACTwv1tV&9e2zsHb38=?6Xz_<0JXYtEgtx)MOVu0w&=v*qWgK5SPe)#A)@sksC zm7u9vhq(Iirr1Nrn|Ki%WWsG4*ovP|qhuC+@joD0f~NtYvW5qLM*J%1y+H;0v-`_x zp_CUM-MSgrjZw(i23e+V#5H@ypLN&T~#{(d{aw9wzrSby^Ux1g96;thU zg>gQ2PK}QQREAhZF7;)aEmIP7NxmAPfI+@0w;>E9=~8v&Ip5Y)2x`evA|uIerBH(B!B3tE zK=55ED$Vn?LwPt^F8sWk;mUvKb<2z5%ovd>f0d+Erg^0;c^~MrE0oS4;HuL49?w-J z4m%0REuyI3G+Ixug)kr~q&U>b7wMW4DM4Vw*6IlE^c&bPLbq<)~6_5Le*(2h$vrWtf=Y$^GbdM>he@Cv<*m&Zj| z9V4|USHTZUii=rCRUo>EUQPo)VV@UV`_8#oe$J z-N!>e2_yl{c^59VkUN2`TR=g7gpdFEZ~hQ(RdYP4gvf9hR(qc_2T3b?5c4w0{9_RX9vR_;)yK?=7O14i8u`Hv1!^cyGyAmRmt*=069YJ{HEs zF+Y^u?89f1@{R^*a=K9!tW4zUChhb_kp6D%sPk)QAgO|Lz@0=eUW08Q5ZNJ8i2Pi? ztxZvVpay0h3+WA_8twV$BoVUzNJMOmty34Vuxkhr(d(dVUj z7%(6>pQq}?lV2W7fA7LR@D7L`H^p^W{a4O3Sa(!Mt-1mFx}6dJ77RZisQi_6w0}UA z3#ID3kg~O~JuQDVLWg-m1>INNyzIuku$wPTMxc}a^XxSIgn|o6H4iWZOL@hV#BwJi z$QQ!(8(f}&2y)&pS%~iVyf#oj#{21+&*!L@WWpasT? z_k^l1g@oY9hPHGlhXx<`d8J3OKXL+1PvtcCOP1`LNj|0Zk#7Ah^O+p|ly2Y$H3CTq zG4|?ht@aXTfiL`OvucHqFganaw>gzUc-mPj`XL7f!p&RS>Nqq9hGY%jXOlb9yu-Vi z-L|#4wd z(#FKB!+=x`w{@`!#cqa=EAl*y_hZH_WWvO_5w%-$h*&tzCt&`Yw>qr=DNUaTVBs}{ zS;1i2kO8LhQfteNDfXgo0z*K#lJ5-UCj4i2l>5D>kTLIvpr2u(WHGwqPUfbB-p~VL z^X?dKmEYd*4$hHZ$2V$)6tp09id3}zsQ2{kCEvS0RcxjU&qCmpsll7FSEv# z%xbJ|#V0kiEEq?gxCWQDSe@X@ad1NSh-VLv%`rrBnYsrzQDTXXXi-;6L5 z?df`erb>~Y1y^%I-xyMRVH)$w^&KYc+;*Tox6k`D@3r=V+ok%*L?13CGV>A1PJ{XKkl44L{fggau+i>DdghBHGPks+ zmKUUb|4d58BKfmqW?&>TMzavzmjjGQ6U7(ZX>4s(+{SuL9nV9_T;M+at^PtscB>Ac$w!RdTDVyhWDdpba0 zU{EM8+YCIjWeV40w3FmZI9x+^Wc_)j!)7Eg^>-VvQ|`wXl1 zBwNz;WlYE*B+~ThuJm|U;VVt7znUd|6Nx*82o8- zfg<^@J$`tL+>-&E@9fuXCu`{*YYY5MjG;STUn6i>0ubuZoX7)RsATYQ1^2%*TT>lb z^rt5i5a8`|%BKQ0oYo-jhn9c-@U55&+QormvOAt!{l z=?4Wsjx%d?X4DeX<6B%C;5}I&J^o5Q0(fMAiP{<*?+gl z#fne8yzEP4+%UF*tYekG(JomuiGVv<<@LenF8VFF>o_u^DMHiaI0`t4Bb?gqUp8)Y zx~(v_p;*a@fbV*55OfY_jkPntyCa19JyXzpD2i`9Ocl?0BfS?T+a)!b8Qw;uG`??s z2F7(%`t?(xnS_|;cMLB}ExE->eKu&?zmb$T$iatkEsl|0q&_Fv9yBuS}9W3j$O6G-DkcT)8Ob z{N-|V?}rjDOdS7%=2Y5i6bBkh^57c1)a|`r7xlVi5NjjjY|g!Wt#N9-hxJ6Y++R6vEi;AG03$eBY9P z9(1Vi^1&ze0OUVe0zd&K>sdqq_>zSk1LIL6o)UlRie{GkPU{}0y+%z}LOT%rBf*~d z9NW7mUw7wZK@xcDb}g{VTc6EKP^a&d)3W<#Zy(t4Gzro*(!=Xei{)uV5G9ftlG@4K zh@&D+mZrET*IAB1jH)arC0xh}c4w~z&E@Jq9QR_K(zB{+?OXfeC}Nx1J1(bE$6x;D zuu}*o^fSaT1YHNQ++!pXgs>p&AH6eoAmO%je0-||=~#@w=?djz%Jw@+%=i#-k_8y{M%+h618?r&dF4`P_!HQ9PW-E;`MOQj$o~>8nzz+7;(x2 zT?3tbmg7fil3v9)A^DeVkk;F|WsD$U^;kM17p+%EN$M6%hItOM1{{8Mos`0p);+g( zrfOA`zQU@J_L?SEatOBh_q~feT2T_=*{1Nhz)0vWFkE(cmYUk+SUWf4xF4P4&OH84 z$GUtLRUDpZs+)|b_)6Z%x%d>>49`$uF(8Xjz~3dc9Skus#>hu#Z2?*N}WRdPB&``i>2DJonysfn4*Hd~fe9 zz2|Z!+ccW2Ox-Bhczq+mis1jFbdG*HiilOzVAh}ncy~}PoEbh`aT^khu|G2Q38{l$ zhf0=DZ-P$=a1*=GhDDk%`P($TZ(wt0OB$HJ-^jWhEV0m3@}+w|?^+p81e71unQdOa zU|gY5P3^Fp{W=Bv015D;6Ejlu5!-yZt~Y+7+UHuC4fXDsB{WG-IHh}+u}B)c{3K7J zQ3_=D-_brn8{SmAaw{=XyxM>Hd14H^dfC;f1V+^5TV}+bSc6R8d?qqURFp_e+#Zy^ z-SaSlc3{{JSn-)K9?b^f^KG1HDi@czrksS%yuEM%PxFELqU2y3nnvSCfW6QG)TqU; z_e^ZRujOo@d+Zf`k3%1$%FuU9-iiF+labzFj>yd2QRR&63c?mqP&-_%%>p4=P^2Z> z4+&kD=bf|pbN~4jB;pTKPAE}tiSxkA)P3vyPcz1GL!T2uKXnO#8a$2ih_P>!Yp6$w z2rY$#I?`AErW=L>yMV7;`_-+!8=DOi2K9W4vTWdmhp3N%sW}3Ew~s^NpqSA+b?oozMmKD8 z9e_-b>+>CZU>(s3j1BmTAfNRFx{wGw>*KkFi|N5Rr?I9H-eNx(Y5C3UdfAU(S{`Mg zB{cRpmdfwgS#;9LOjsMEBX1Dsb64CnW-}itpiCN{`Hzh>DgRY&@yzrPiNR+os+C;S ztS%Lu{Jy*#3w+s8lhJm2*J$?sxSS5be~=-T%6~hP{rmV%MHv;tVT91n$qU08DNzKJ z`Zy0ct-aRw)F!YssS!O+?&_ks6?VcVN4)wP@f$IwsR<*o&W!ED*)MQ$&>_FzU!b88 zB~b|fppntBSwTH=n$LOmpW$p2_i8RnfZ*EQFj3SiArlpOMO0G3bl`*NOQT=G<(|H?$5vF$PPgeLUzLR457!pzU!~0g{}Qn^5iOlrh{kkC$r=qf_c!Xw03BUs zfB?zYF4F{!mk0`nk#XYNrzgVPL~4a>@!#Vrrni^U=bJcaadAyM^t8_5Um?K$6O}GS z<282Vz>Xt0Y+5;|J~g-S_`+)RS{d3=0eCnkpJ#&ymS=doa7E`WY2u7I-CE9*&oTqN z%|&iK>cUHw%*=^gBPX8AKZ=Y4y5#<7Z!x><~@iKPNlq|Vnjot+=i%;*4F(m7M^L& z5ND-3MHGaK;UdeiCB`D`YhN6*$tZUoAOQX=X^(X(*Ezjv?% zJ{mhuf9DM@!3x$u%fcMsz4aB8S9KBK9E`e}k{o<*CPts!W;Z|L1*^AWUis>wR1q~~ zt39uFd8IQpGOExfKTQ3WdxuUs>8|)Y`jSL3a^$O>?G>H$)ROa$KQgDHVv(X{98?%< z<~SYTFan+cG!!%$MJFfld7x&(y^8|)tk{>!*+Y!#oql3hDgY6Wsy57$rS{V=?c3U+ z>w@ba0PfRH+P1A|Z!Sdn7&InEG(j!Op@+~kW-&$9-obU94$q%2!v3{5{lkE&jPRg< zccpv?D`9j@BtC643kqb6`#OQ^N^~(&k{i6|&&Zrw1X&g7Gisn(%WTKa#=K*!S&p!A z8WvR6k<2z=^Y46pSMJ-$!<|7-N_jZB?WY>TyRXEP6;cIod4`zB!Ed1fT)kYQ;W<*X z>{P4$E%`q;zvH^`2w(n|D7RXg&fuMhB5NH%%5Nm+fzL74JMZ;;sVB_( z!l9oyw%U>zBqcH15B}_pVPt&m-1w+Y3aFWpUhm(Gvw(aahvq*Y7ZsAtWZJa9_`R65 z(ymRB$;L~a&noH5{~~R^E^=!Pm1ai}77XSchjq&B1V~=EiOC3aW_=a(V0HOjs6$EG zkXImwWlUe}(2dD|^H#z2DxIPt^9<_iAO(k|mdsA0C8*q?>W6Bc&z(*kX*3n};mX z_6ZKfPu3_3wc#Jv-0!cC_rTrr>l1?K?UnY6GW-fh3wHe5!ssa>-OZc-lrm|fFqz$> z-!ZCwuiSWcsIV8p6$v# zK4PTOE9nDL@GGrV zXiY<3`fOFd0EuCcH0~e#y__iT{EsQV=twFb{Z$LV0~xe=E#{CP5kb6&Ryt!j7qcjY zC-4*Z4Cu+dVx^VE9X?kI5PhT`+vVN}EYvdLe(1X-pZ}Ok6fV*>VS)hA31BDrKpt)U zqLm+Z;3|=h_f_SsB0hlGmyTKd>?7Y1e1VUJwCPy(pyi`-zen|f!Ve>3BowL2Wf!{U zJiTISp5K06AEz-%Lyg)Qo&qlrYm-tFzjA)4`O)a@TFAop*Fnks6{C*hnh$K8G3e9W z8)$0FneYegkS1TsixxfbcVI`6fq)v)%iSC>C2D~r6+=^7b@0JRdV5_BO3Vx|@fHODCziE$ zo*~0(Da)bJtD4Lo%Cimgg*hqwO^-Wu^<17)CH4gH2&`rLgmRZ{iTqFV%^BIZKk&Wd zLWFCnAT{>XOS9Rn!G9*(*$*rWFYkGW8oa$;S3b+Y-!hq7Q8P&C7m5c@j(OPp+d8@i z^>8-iz)I^yGPysx{Yr5A<=UFFwYdw*?-43TXZu87UHrkkl&;@HQ%y0|D5IqVVzH(} z3DoEe`IH=>qhVcG%bCD|W~ZhzL@r^K+nBFd`Gf|i<|Ci}?R-hYOBlliLuY5}SC5}G zG52LFcIjxfGFXQAHap7sn`SSvBu|atz(|#rb`E#c-Ff}9UI<*^9ou{q`}tGJ1Eoo) zZj%I>aFa%YRt)i}@T8}makkuNRMuAId`3l{YM;(F5u}=UB?n|U-rmJ=FGWJv*8+k( zJ!@RM*xhyh`A2m1yf|B+kR?!;$Z(d2r!(5)CVspqRiq;}fL*uHhlvgVRsM>{p}o>1 z190ccuCjxhuc93;)pCRN}6DiMx!E;$EeV{46$pU%oVA<5c% z7j$7{FZ*_|oo7NUL3DlrY+QAW3a# zoWky_MvFNkiZ+SpFv3>j*rye9Jm4yFRY^hMMC_qi&>hoSYI`>Av#)3up+`y{W4g{C znt)yCKq>UE4`atsKJQ~ig=`h*<`~|`IZI@y3e`cE>dj9DmuCTTskYRZq6g_)xRS2^ zXnz((j3l%?Cp5+KlQQh*>4)3GiJAp9;qaoJW_txr#L(Rlg9y|u8w$gTjd%Mh`A+IFuYX zo8!2t$7xdK@J4OAdz`*o8Yq>w>*RLUsk=&DC8g`0!}6;e5nlll@9PirIs!tP6*yBH zffn71DxCpv4A-cEVg7RHdzq`^F*<^P_pei_;izq#W481L9uzIbaccY+9-3%hwfZUc z`7_}*vOk^&RpNWG>U98ed-wM4}2VjI4qe}-YqlUwqZvOG$^oiJ}{(EzHhq3|}z zfgjunTc{};PXCnjhicz~t8?{^VV8rcn$FPX`1<;@A4aXtg@ks}3>L&95<9yTGK8t4 z`heRPL14u7n3HcU;V9ajgCxa#_h@h+yAC7Puhs?Lb9B57+UI*s`6??}ihvx#Bh*#; zVU8%YxyDSpSg@egutY;9nE0zr5p7@hua}I+Jw4ns&e%Un3KGcG?Tiy{YM&2^danmh`8EiFL?SzmU(Bi*f&|j3NtM6 zBlA$2%w_yuv+(W*g$OSukruk+rH3?8FvY$lQ`~;2(jUJYHY#cq>qzpw+JJ2bQf|Al zENjKI*+=ROK0f^>HD=hi<4-cN-+%G(Rn0{&_lpnBTpricwif)8>iem&Sm2AXE9^IZ z%06!JYJcUejm*KMQP|5Z9{FR)Oc&v;>IrqQm7Z65>C^%@4n>PmG}nILN3rRnJC$C* zNfsyj{N-b)qY+QYq`lmBQW7u`y+(?~Tl&W;5;GL}VyLd|6FFh5hlQ8_vZrA^@LiV? z|2v$->C9d+8a<#IYN4*V)x{r&K}9?R7*LP7MX0^iWMF*olh)NM2Wp$6keJ=DwaiMJdq+l ztd)}P>_??-UXd>8vhuDd=Sc{H+Vi zOP46a{6#Wj1xJef7I_Z&7-LRphXLJ@TK%!O=qIuz4Az|R3yoW8L21KC z_2M8IcE8RSGU-S}mO5-5hfGAb_zO-o9yKZ{wEg*4*`8}c)F1Je_b8}6#vUzT=E`&e zmcO#QE$Ca{@fnxOqyJYe01npRh;9~b1!Y!nfq!v2&Ar_NE-#v6bG%wr0L?Cz4}l!U zaVg#rIhk#hF?i?$2rt+kf+Slwd6s6c zg@jWWWIUODb8W{d)yh6%jldrewEs&&h5uSrYjbay-9OS2sAUw^sz_BI0^;+pN7T z6fjc6WzXDbg5$7v9%#$cSn4sTqUth#(5bt!ldE)3RybP&J1Vp*pGYL;5)|>MUr0C> z$b~-7R1vHZvJDUFBhwAD&cLLKLGpL!y7JW3=3xnJ216olrL3Do%&TEwZVGl`>8&2E z>y3X=bLBR-(xF8`ccH;;5i}X5m9I}hqlW(g$Oe5&nSd{_IO~zU{96=rk+RCp z%LrFJno+xgN=i3RMj5pvEm!tyy@`T?=-iCS85Q+S`b%Z3W`;i3S-14fDT5yRHCMQu zu_Nm!)=28jjaksutqeJ4sU?i_=%7N4JtgqmO-#sor~z)k#|KPaHy%)1zX87$w`urI zYbId6zQxmp(oxITQI3kyv1zzEN8wVhP6ErYiybW4tszG;Rbif^Zk&pMPA^)mU^*f3 zmrYgdr^QtHC$jVe`r&mO_S)P+odk2=L1q-j7y7ZHOZgZ}7HyRP(!f*7aOE^sH!~Dx zgKpI`=55AuE7ncc=pnmV9-*(6h|p%TBLvw3anCrBrq7KC!bk{*+TXG-;QtagZV0=c;IfqE4zLC)MWyA{ z>fcXl6uivG!j`gzqnry02`Ly15?@7RLs%^&kXSkK^~h@f50<_%psnWlI)va7oZ{|Y z+_ktvarYK?iUw)%;suIpai_SuyOiSYPJv)=p5OodkmP>K-8*+@cINDyvqrIf0J7Yd zs@Ythu3Gvxp9XrmRA2Z1y8pR?ugV#%Gev^!$}Ct>m?evvq>}Q5ff4>&yb0smLsdJw zSq~9ff#}x^`*Nt^9S)2eArPKB8J3bciu`E+{HJmcR8HfkaAIpv#4$I>&tpCsncC% z4f7&C>p^o-vW*RcrXYiwtqCpBk5Iaz}S9E?q@U_wWu4jbEXFdDHT* zqB2gd_#?zrc1Z>5UkL&Vf0DLzQ8d%l5C8DssGC?(vzxzJ87Lz~oik3Hy2WWD0%-9o z+>d{)h@IT&y&sAgF%;P9Z*AO?MTmsc7N|HL*OmsuN{5Iv#=Roaxs$a0yw-r1Lyn42 zG6duD{7(2GgLN+|M_8YuaYq4`0^P#HPH4U^5)tk;sX{~^b<{LJ^Uw0Z2|AquYTxR_ylijP)i?2BpoEqF;e@gkM(UA#xX^_m<1G zEv}hVL&*ee+g3X4uc4=Oe&=SuMdD-55fX)W1z5~j7kxt8t$o41Zcx{? zczOgCR(iwel}lJVsZ52F!Cn#bf?S>bvxT7j?5G5yms`SZvFb$J&d2{}- z#ssqoRA|%rX{X_WGd92eb+-)=j86~v7O|j!0Ym~ZNV%r}Yz!KGDaj0#DecaDW-AmO zbyjr7ngB;|;6Da2iY-zNeVVSE`G_DWwEc_2fxN+iE!X@%pRX0_;ST2F{2P>yH~9X3 zAmKB`)uD2NH5GOa#lb>ykkIL(UVRAfO&1^Q%9)C0!ibD}*qj%in7~K2bUH^__v3#4 z{4aUsEVvczv`}Hfw}aLlXwZiNchf5;ccO5lCO2*_Zrt~jEZ;&{bP+N1Ut6j_MWAy_ zy+QxRU^ro4jH2Si%Q5A>5^5l74;^^rzw`D?@$=Cca!PUHfw8(|8~}vVveGZwr9B(W zEsn=7MC7gB{hqow#5<%_!MP39W#;k!v!e2;CKd^ay;VgbyT_7i3%~K^9}b5m)qGNN zm5=l}UTaY&!DoehLj}0rfG)gM1DkO9f;}q}p!|4|$s-`^mE2?3f>gcW zEVUPssXTK^%XP!`TNaC$mxsP&VdJIq;^AUXYLl%46ctrRr}ub!O|%?W`(Y#;R(qoz zGZfIO+1%P#)8*vkh;T<2zA zWZ73;Gyt$m^#028j-DL7g7q&JF*WRwL5BfV1oTVDJ$Y2sN)uI7r_!{?9Vduqs^B4nCrzd|>6mY#ej7 z73VueyTcjTU00g_zw$wHB`OhNFNxnt zO$HJ7-TZ=x?0&5Sx8YznDTpjU5{?nm<=T zN0eC3m5 zlPm2RMj~ASr3s#E9XZ&YrOkPf&@_jW%dB|o)jtj9=FIbaZi`*L)BAv*S@$spQCaH3 zffDAH$l9VFAfP_+;XCYPf3L9y`X1uhoh^s&K_$mFoJWk0_32!2tj7j_1^|hcnhjT} zF79SH{49T#)%P~c|NMAQiuBuY%FDDxT1$G^TfPQ4#FU-hg{jca86#aH2L0kM-;|TL4n%|d-O3P+N)^bv; z>pzBL^6#V3bjg5>9)A-XJ>^}q%L++LRRME1yI9(JZ!t2E7imUIk;E83d{rk6t!?Ki zJtIND5>_ED6Iq{l!wmz5dhcx)Z{HT6l;hv8hwd@_K7WfWwI7>+-(;MslKw+qyi9@& zYm+0t^Ub%cHIt=X;fJ^=uuxxu+{vNkek7Z8 zk*=fnN9Z{|Lg1DJ$@r!I(WO1P)5)WnIu=RONy8>o^TNLo#`81Qcy*7cqsQTeOr62uQcCh;|Qn@$>;%y-+1`- zYwCP#{?NmN@lwdsJovu><@~Bu)wfCqlcceyK>y9DfgI!QEE2^o7Q*d#txAvHa zvM<*Rx5rl|wf<8+|CkaDlb+h;hsrV1BYLV5%St(KjnBV7EcS1mi#?ff_TL^clvAnW9w41($PD*XC?eTeCem9i5w{p zyEZWS3?Dl~=)tB<56pM_A?*tsZB(TxwfvIrj~@RK$H(^jshGTzU@p(XFR|$1k!aK* zY}B5u+SuH4znb&#q`3fmfdFQ4KWMT8NEW@Rv&po)+5)Vco!RS*w`}1O3WQrA%3)!_ zwbXECmeHq}L^g8v>-W9lXLaRiLFkdD$n0X#Rn$gHUXiYH^h(GIirRdP;pLD zAv1#RX>-`8wn48LohIroAB_f}Awp>&H0X?}Ma4Z!gJ0hDp^Nt}Xjq_m0}XI+PJ^lS zT#`(= z22s{@mA*;$1qYPhnd&&=*!*uchCF;?t?O>7A4HRu{ECe=0=WhKt6jZi$l4eApri=X zRMD;tdd8LJKb+S&nB2PT`A{PC(eJD3&opyK*qTYnxMEMci_D<JO_DA1uuzc6aqe zs_u2tK~?e=+#t;D$wj4EA`atu|0w>$b1EM48PAWcMG)TS-^jw^@p}!tLY}N3WINUA z_6v+)#vYOBV7sgoipSM-lo)GQO>A#aks6+siS|iz2&r+bbY-~FD^T%0fH4|QFlFv| zo<{$q68FyAvk@+|?L@LL3hBg|q5Mg450w2y^F_RF)YqISqA=_@pG0ef|NS`d9bkTE zs>rf`)BRxeV77h)|LG%pz} zIYu%mX9aAZ4>8v2l9P+g3me2&fz3W-g))8`pr>&Lwq$c&x~nA3O9O~O|FqOzI8MKiQRX*LXyeKRF9@}vwdQxL z$iM7Jj%+VK-5!s8)lz($v|y1n%I9B1cu@XrgjiX4_xoWiC7Qk#++nWDXEUSrzCnV9Ajq%snj-;s1&sxNuIBUVpqD~BA~{Y z&IR;wW}%j}i@}dSSBC$X%n~l0%2s;bI@CzEtMS7nN_+rY?K)84;xxt|Q zuodQ+lR5!jZwiyRsdxr=Pdt0#u;FNyWxBAIW32UrbcX`+cp7I!Q_e?<=6>N2VsU$? zMvJkIPj1z*cpu&_cEerK{(-jq6x!omyrt6(&4Novw{;zEKHRQotj~buD3RzK2q$gM zfB#|Mn%>=XH4Ja~x)5EW#(A4Ge`a5;}s0^j%*ukVai(2q>22pd z%rVtZ%pPdGx}9DZE%gj)z%b<$UspS9TfE(rYAGW!=?l(}j%$b8Bf{>!nd!NOJq_1A z$VQJk;;E~>|0NZ&^f-&5p7&-buvlEm`EZ>2BQx+rLPEtHKuU0JFk1sMlwBnTTPtfW zxum~Ag8-R=ydzKr^Jnj;`q}g(qoIk|KwlSN+r^>#V;?vxWFs!=r3!7*cJCKlcnL|& z(-IPl4Hq`3$V31SaM^zNNzffZzN4K|t{1~t807&d5HixM4UIDIekTD|{d^y=rDbba zt|T@f7cG0b#))kr?PNOtKQ>gECZ@sS<`2Xb zq~=@1(gKkHX*~g*mG#!-dd>!wp0fN_C%doC0z&6?3MFZ_Z0<@A)jgcKI39%J?AL=iHXF$Nh^hKyfhPDgw8P$np^jgQ;J-MkHPZ6|q{lS_2~ zzxmoPVzGnf6B^sirC0B9@Sy(VKn^N*aw9?!+0q3GEvc{ECG;d-0lVEA2&L7=BF{`9cOR zJBIUkUS>Q9Nl6r+Z;jJD1|kewh?hb)W`M}D62W53)f@_RS&DXyW_qFm=4*20EYG#z zEZ2K0<0T;VpAfFz%jhgw_$i)PPgumBD&Y-md7%0Zq7dgRUZ6}&j@!Q4@c&hmXM z`_E2s!0krp65tOR=Sh1DjD4Lt?}3zITZ8VpvV#Md`@d4JBcc!tcf;hhQ_mcgby3J7AV`GJfxhW zcl5!)=-@u_SwVrqxwdyhag96JqVxE9Olv7($?>J#lp2@ngUyrFWvnFlZ-cfAvvLE& z4S2be?+n1L-?DFj*kx<}=5>O-j#_;K*?alSTtccU# z+dS5O$jdJ&Om29AfMab!79a+JMlG|fgFG~5Nb_rbvyaO6$t!W`l#|@+^Wsv^xZwLu zD-VjBk)1Q}^U(;Fx0x;w-Q9Vv<(py&DwSXgRyJgf=dDdt zjmm-nCsW#NQ{Cfb?}{VpBbEs^D%1s)qrUk!PYVH2f$VdZlDEvAuDA0@%kVhgmK}O1 z&X~V+x)gi@!e>mY!oJ83_^}!>m@9!~)~KtqIokd)QM|jOWp_QjZdh@Z~W(`(BTczuf=SVUcB^?&JY2H z(SEGl=H$SyY^GB8B5o_M(<{|5;4ft>$iHqhs1Y^p`4mN3^!|tf<0^*yPZ~ z514MI+dJ=XcfGR`PtrZ0_~4;TIq9+VO6B}-S3NH*MMH~~UcwFrtX#$@N_y0NT|jGuO4WOGub~?PtuDK1N(WSHSEmkaRV?ceik=A5*g= zX9YQ_<9(yy^HZ1CZKPawl0aCrl)Brekr*3D8Y9|A6uwwzkTc1F5P=#0qfmWBNzy_yfcjfeILTy{IvvM^Joem zG5}Z%WdsadE4KzYz2~f-%Jc}A6C$jDBJNT|mj=zB4@_@+W#S_ToRZ7W;_$E*H*<;1wDW`|hE%wfF599T zj_}{S{sv+lA3lG*4cHhaeZNkDg18b2e=aukI;QlT{pNPs$#KS@0-Z^wNM+tyx23eA zTtijP6hTki%X^_usPbUuSk{a}3fmuk!O8%UmcF`hac-+TAhni)stY-_xY=1I>Q)O)kI(QR<_VjZPGq2~%KC*ia&W$7o^=@`K!+mCA*$D<%Oth1ov6jXp;GDZg6_m{5g7Wa#nz8wa_ z?>LzkasL6ohco|lQ($9c7DsT6c;ICL*|N1A-h z+sF+MPgF|7!1$QRR{1FDL_{fi8X$&nCtiq7gb2h1gu;F8x5~MdKJK)_idb98Jq1Dj zzH=*i3L!$L>E3R6rg%NxwH5RFcY0JHZzPy_jyo7Uc9Bpj7dU`A1w|iSB{kOvsj2`d zL?Lu<=)^F1ST618umJG26o7LpRaFcZ`kh?N7201U?6s)UQ-AQc#{BZ`X|m%YPW3eC zU(J)AMUaK-t2FMTXEukVZC)!8fOrw(fF*x5==T*|a<(u14 zHt)$L>yYm@%#fZMa#F#0*pkY&dSCQXD&7_HGH{@F42Wu%h`b4>-7>Xkce>xf!r{9M zVuXPg0*AQhg+YuD zRCt>*&W^i3^m{86P`w#`q|wKvr3ZN&RR3%j?(;Pxka#Qcr(Q_JpU9D3sZ+Dq`IVzb z9`Fg{Tc_)@-ANLK*h@>0ko)xmc33l8t;3d5Vq3vFdHONAh`88E4%`G9kSF3ti#Fv* zq#5lbh2f)Z8cYYkN!vOE%CIDQLxr0xq5O28EfBC>M<&dD1ARwNswUR@JOa+~y)0L< zRV7DJeV292C__f~SRZ{hcuFyV5ca?;EZ?B^*|e#Q&Y;qYnL4;bKP1a-T!(X zTl_EF+1gOP`qI8XCci((@ZPccKfMCjIHgG6P8mQEe%jn2$T7cU0NQ?UY}mt`1Qk`6 zG#h%YZ(|4K52M?W1>su?e{Cyz{9ZlbhvF+Pn%v-4W7fl7q{DPAdY!(fU5f$^y}I|G ziHMW|6%^Q!TIz8gD(cr$Tw~KC>6i1CECXnI)bX%@q`&Pf+TioHcF-C4HXB(Ww_AIM z+bH9hCx6B87EY9_j6?B$YG3*1zFMs$)@-229LrOE6GjO9LZ*1%Hxx(@wE=Z9HJhw= zw0HC>@cA^U{EUFV5Ao^;vei3Y%yZ*_!_EP@&f44lrc|{of$cu+o-N#xw>RetB}>}2 zs+-9#A3MCKJf>79<9}{ZYu3rmJB^?z59sW^lchdT+ZBgPd`7Y8s|7GbBuUg^Abi6Z ziiD>b2L46H=}$;nmd_M$!&AbNi87E^r2iB}>L#!opGjqV6p&$ZygMZNH{jx3^lQb2gTSS|tl_9MWeFX9XgFhW!W@QCx@LCc4xM1A7hdX0TQ?fs2o%k*>Ed<}=j zk%F}>?`wZ6RvWk9jViGanznmxwHP{^ej$+p$k)Gg7qUmwJg7yiym)`Y(Lw#KTk-RC%DV9SUq=5izWeI_O_$P zQcVn6o<~Pl$34HOIk?XsDy2Xhv%o^a#&bXfI7top<8lcZ2(a-v$3C$8V?=TOl=dG} z}C#3{cD3wgQy^OY6R_GilGhwaL^w|>1gZZe3-<;;%C-Ni=x^I}Ho zR;@TZ;GM9?^X}S2Js7=x=k>L1>b3*+vo+(Dl>lrCA3$h@LPyI9b*qd_Ie;QB2}!FK+~D{F}n<>UkCZW+MYR$HM8S zeNkIs4wOV&VA@pZVFOY2>arJ#)XeLWHjDQs>|o^nbiRH*jeXQ_egJlnk_-B7SM7@) zKrcFfz1?;McxN36fAOxLiMe<~Ov}*^dOALCY+9@`HuifOJ%$-=y|d2u272efAeCyO z7!ys&Me?$GP0qGaL?l7ro?!6e!9(CMDE~7p4Ejhd-;V()oRsqmxt0qy@RcqBE7H;)*N#%~fp zWD=myzj?S^Yso*7q@v-sj+WH3@IU`UlOj?~`b;t_>qjK|YG;Cg>$KDIGqY3Y|! zmD+|;o2#Sa_2A0<1PSldkHSJkiBngqmj)D1q|&8?Jza@2k8`6Gp@u6D0vY8q@)7`T zQxqXm&@6gQG8g0W2_2BNVUpp6I@@vbHQ`~6E)3v-AqI9x0@5P)-~5gI6;{N1W#SvS z*C*~__68~lC*G0!uC~z*2WXM-^+DZf+CQk8n);#u0FVlMoDRDZgkD7s_SX(>MGhud zPW0gp4C{3cUauqdY*VvMRs|4NcMn6%Q>7n8i+5{7p*p( z{zA1JG~{ab$JSN@8n|+>Y>??!IR2>#lbnpNOYA?YAOIJ;=j8_(_fr=xA)S~QURhaJtBU_F$v>lGSelAsV&Y3n zf2ao|hLgaF_pffCaw&q}Y3Q3?lbg zbf4k)Fm0rfsap>mHr&;&#te3<+DCq#d;}G!;?I7spIfs1#ZRjGs44fIYz~_@W1w5T z)~&p;RZ}a#=LQ;kJjhdwQQgW_hd-&rP$80yvm~AJ-|*bxNlVQMfORRvDffGIZY$ce zr6itUu@oq<4xD!s{TUJe2Q9r#(2Zd4zYWoT5lEFpubA@7b7EnB`hij_Kx5_o7e{Cc z+7P+VlDZ?g&l>?SVOQi_a0zU2tAL!3*9e#b5%krFb}-vH{3TQUBVIHIm4wLxuMgi8 zHGQ23{IqhWs|HPRN&CAQ`KgkLQJ+TAU;NX#PFnDb#TuQTeP<=Kc2{t94+w zf%lMWM^vt{jH*U+=<=-G_E)CxK+s+rLw z2G&`eteb3!OyIv8+d$KT`(tJ=V3A0T(ITq#@P!XBMJITT7}saU{iHkWxRvd@pLp$6WkaOIBQkR_@+ z-alU7|L9(J@5x(v*!-K&BHr(GY#br+iEshix%Yi`m{Li7ONDOG7WFCK?{>m

tm8Dah$%SL^J`n6@ghcKc%P$Ha{eD?%d=v5Ao-dY_<(v~Fr( zNNEm5qI#Fx?~03I4eIZBu5w88Ar!Al^L1|oVxNN9sp&&J;gEkI>4@`>!Qa@25sYYi zy9T0Ayw!h2TIbdC+kQzzg!N3`4)$FT`9M)11jXdNucG&U7UH+Jx`pIc`c&pZ$~!nX z2>H)1KR2@8C0Do3R4%N}BUbmUCa*M=WsGAcH4C%`WNE3_wfiwT`|3S(M(Q{b%Z zqx+gJyX2Hbee3wRU?%zMQLdFs_#qx7lbAk#0fIAVt)qd2Wtx@J}X^U@uD8}*p1C^6LDz4Sfz}oKR#kE zNaM_9gO%f|;3-y%*h!Hb!wKweX-RhubUdG- zPzwki_gdko*>&v12LLX~z?h_>Urq-bGvvSKJaedxW4d&WS$v-TNN=baZd@rtw+puV z;r=y+Hi5PY&EXEk&%~)-PG_$4-}?=xz;`L$O8jBWT*NF_2e)dJ)*(q;CK2j|Qh1awIy?|#^>RUhVCO6Fkz?-}4#!)k#MIEZXan_(aP&kt3d~xCa!3d=Ha+S- z&v$)&%~?C+B1JFc__4UFz?J3EsB(d-g_Bsw8;oV=RrYwuFf`8U_HRb4HsxCK^8*|l z1h(?K9rb4FhZEyYB{qun0#0#V>i6>~UDuT!i}X5SOUHloZR^}RT@ zVr(|#k=>CF-jQ<`b3f00ljU!5!6;%JGJ-e~%B$Y0{4gFI94aen12Rcep0WJm;u`KU z0b>;2mn7S%Iw0wz22{~J>fgc*6nt19^A>+E;_8vv@*!R5Kv#O3W~$O63>BM*L=ijTJe=sO zkj35SgcNeebB3{x4Sx~r*ROH3W<`X5wb4k?3QMpvJdF{dLa0;ZzO*7KEFKs92tvh@ zJupA2wO%J|T|%k~q2Y@mNmlRT{k|B{_3m|MHOQF;lxsiD18M)w;RG$#d#5)Z1c%c- zw$XNVsuk_l-6=cx3ee-(4A>9{0svnZ=&z+EfV8(nI-^9m*okxo&9XONO;D2uu>cy# zJoP^X!_!MYh;90!R-dO@SKjnHv!zWdd>!Ey9=1*wMN<#7j^cRehnRJ6rEQ^L?Y8Du z&=+k2W#V~q8Bgo&l#P*v{U+6xwwTodE1eU?-0}jC&Nop-CoYkQq|Lz8AhW03343`H z>fDNeo)8FBlp6AOXKMRT7q3L@B_kN=%~JeJ$sbbrApuzlUM6Fif%Noor>~&u^kdrE z@>`P<5g$WC8^MtxZ8lm54Jg-J9yI9-t!#={PJ8L8N%IqssF1TQURd!1&a%XKKEn-- zmG_SC-X2htMVk36LBS-S%WXa6R6k_!i)JGpoLdUEwHgMXWlBx>_(1%#;6_^tSjX%a zEb<%M)uMLE$SA-A3NPY|;2r>cGl0(f@y3flcUKBw0JXLdn?%vcxG;3%rBk}(HbL*3 z$|v0-tkYIURItX`X3j7wTziI4>@5!n_}w7?ESohudg-ksFaNy z4s*w|D;}PU=MQB$b^A6<2k-jHaU>GjS@;E`qn}hP-DU}6_u$pR%4(9|l@c>PnK2xL z`+`iVV4)ua*-7Y~#80gB2g)M2e&+2u0d`~r#l8Gb)#48wBlrGh&DG9td& zKjG5M4T%(aI`GSV^VqXimXdT3(hU{k&F) zkRP?;ZI$Qys9%7-DlFGjL=+n#$xu-3DN-2Hw90%j+^_{sp+=sSFShGm*mzt&ze(2f zocPbuOrHzc;1zhKxloG0i|!{eH)XpIjsa-C>VkZIfx&4V2xh?u@>(G8ioqzXKQ_8; z`muJN@3Fq%{HWjHe`Wgcc!qfUOTt~>->B4OU72ZkSA+zBWk`+&SZW$#^=y!qpYJBc zzQ=oT_}up^d?-6gNPG2AF1ym;A!6_x=Sf4CrXE_0ch2x-Sood^ZIvjW%)@)D_eBVd zILt~@Yacl)MIu9ruNF;*jr}r0p&D?yLn9YQkt|y|Qbh;s?z-~+ZuGFeJ=?2^N)6#M z`^S{rjFB-BzprT5fd0IVGU;j7h`&%u+ws$~|M>UBA8l7U zduFmUa*U=GZSN1{$r*Afe~yUrYVnuOzU@8A>*8Dx@0}CEEw7k@R+d4-uU5y)`#M2^ z9KjuNu+$E7Hb}j=Mv;(k45a|{K9S6xWsGKAMeVKULPZGmudUrq1tlP}x%^RAJb<<_ zSV4!|u;}xrCxI4nI}MjyD;423a;#FUIo^$`KtS4p=`xAUS}LCae8;ni8wcvfaGt|; zTh8-osTVm)FlrZk8a$l5dLi$^9(HZxIS;~~YEOk9`w7TPr~PDecT^v$515S85sN4! zCqnu+(K2lDVt#jF4=b#2f1<-*{w4(=`Dx}#ThsyKh05GbS#gAMDBiANO2sChaXTmq zB-DSGVh5fwfV(+@pLdbX(n7u=nzC*P7W=hNuF>}>S{s3Fh7K?&;Zmv6Vu zPUFgzXIcyr8e53{z}LkoGI38|JgxV*!Gu|Kuf9p76Wz3I+rXn}~6iu+n zdq^CaOgN7syI>NwbgV}B^TCm(bw}HBwI`6qH__DLId-1Y3p=tId zNC=J;Z@UKfEnHG2-G_c`x8<0{E>Uh+7TUYK3dRCT@( z)(@JA@Q}0pw?~&cdD=Fz0HHgv1q{UE zPjPDBV=&~~Mzxhn{`ooS3(roeg%L^nwsknzTmDp$E#kg8VwMe(T@>==Hzq=pTYddC zYn$)8I3B?P9>gf+OxieK;9#->m&n{Bs}GZ+nLpPRUBm`(`eh&ch%3LsM`J+V%=6#lQb{k3pnj9e9A;@6jo zk%zR5z+>`<4+uVZg5^R1C5X<)j~fZ@s(;S(+HT*i49A$lshk6!-vQ3V`V|3as|Uf9 zAa+u=ex@yW>kb~gL8O3Qx>@hRPGY8>r;d=pNB0@b*1z#TWk5W-5aC{V4DzC))(;G` zVSo$?06-ozHm1ZOt_G8D#pHb=O*u{HpluVTE91SsZcB*!p{^amnMNk5eCg<)(7?xIoQZjjSiK(OdaJ$bVL< zrfn9E1*|cacr+EG88@K1)HZvYn6nPC)+~mi6Po5ekrRu!>QY=ZHDv-S0+>?bK0D<5 zH7N()ukv5k$_>$1H&u1khOoP@Cn(p)I$mS&VoEJQt6oa~&c8OqOxW11j7TfAUgv70 zoCwbaq+h{_Y+YncshKUo?#ULv=~G8Ef$Eub)bdjXyp=5xXu`?~rs_RDzIIou%z4`! z-inkBOfi;qB^_$>mWnC{L$MNxGk!(>Gftl~sz&(F;ou6-}dO2R9N76eg5Sd)R)2Htx2w}9WIrFF* zBo-b5oJZ6hZv`|LZ->Ks(M_G#LHpVM{(+8_d&@yuqfNCsr^iXc{)LaT@#80-FKVi4Un{XhDJGj;{2q|feV?Fo!|5)rPEM=14+nrw8 z2;186hekf?ni$a+h;{t?A=_Rsg+7GIubOo(3>(J$QD@u5k+}QsAghYnD_4N&Ll%kY z%eL~!rS9=Y_6(vg@_(axc8c5T4$<7Oh`mscM8pOE?v4;6n@?LxVc>(i+}+`=c@MS z=UIC~-D;yw&%0Q|vFOTUu?(|+e|??2eh24SJj>rq`&d5P{r9~s@4l^fa~QdQl@uUN zW4H@7@Za*T3c8D~zdn_47smr)9U@vN44)w+6oqJ28*jM*feMk#E%ud+0Lp5DJ}Qq{ zeoeXw?u|}pMoz)h^XyS@-kKVsONHs9HW2EW4oOC1vJFj&p{uMPcTrhDa~AS!g}s7T z3Mie;e$gv$+NnFc!`B*^~Hflk?vlA$;gSHznVb zi(T^}1tavy9EPI4UwlX87!$K~DR1f1@J@7IKxF;hyJOU`rNH}|2DCp={zA|Gv_(8r z4CGZJYLs?(O12ASj+R2YB4mGT^q>hesqGIIw7#^^o>EhwMBzcU?}@2DX5ee8Dj2gb zyAYlQsmvx+*d8DZ)Mk4w)j))uo43Lr*l@8W_f05fABN8c#O8R_qr8N!@htH7?w_%C zF{Gl|D!Jw@Bjv#b3(N9^{xzZG*hsD5gT0#33kYPG3=uUxRUV)%zgECPs&+*_t&e!Q zI;R_SN6{(fX-Ss5rfDP$%79W63)JFKhCcbNM`U0nVHqRBX=y! zakL34dtQa9mLQc@p@Wf`tNgkI&CEDxKxTh~6|HQhaq{p)EIy+e^96N#ttJ}s>SBAdZc{r|^#jrI z(f|GNL07&1QIR#W^dPiu)6X0jO!L8zqC?AE-_2^ogt>^g44A-!ioy~T2{bH zp)kuTRiM7k1efI zHCV4%B^T^Kf0~FnZaH0YWSg|#&L)EVGvNVHP=5_F#s589_%szs=K5SRXY+;k5#c0& zIXLk(Tx;aSUMc8-g5zaSyyLxaqdik_9d7ru6(IQ;a4EQD#niUu=G>j5DkW{hE8O>p zsq&~Ii1N>HphQmo)o`uvDof;sf)yh;)~`i4ae+?05;RfZe8dhPj0GW+{edAHKO01d zObyY-F65)pLM)`ol~=msx*=M#7-fJRKigFGI%>P#?qU9E=;FHu1@ej>yu8!AQLvD6 zu7g5SM*@=OteUX7o!m)s$8VO!+IF{qwwoxibO3(XoyFOteh2G}$~mQXFd#lN7tp-R|% zjKuwAd|*SEUO&bO-TY`#82-PY6CFh!8X?_zyQG@(o@D2t59An8PZ!h+(-|- zZF+j&{QzAqX?onFFaVD*_v1z2PSM8ebIKRTjQTlmgLM$#E)bAx3|BG?5fNf$f}2n9 z@>a?d8gz8%_6)Z|ayksq{-Bzpv?!-Y@xvV$@&s=vF%DY)RKt~X8kCL8V(J`uBOi|Z ziA=Ii9Uwm}2W4Z}5zj)Nc%S?O2V(j*n!yp|{OJ7l9C;t;;}L#=r}RQKyQu~F&?-}c zcqw8INI^P6&4UZHl&RA-!%H8KXwATLBrz^!#P}Ep=RiSIW+b;u*7yMj&UH900vRoN z5v$c7)P)LiqJTXr59bsjiD)s#^H-a{>xBL=p~i#(dG#Y|*YZLQ4b4#yz~!tmqw8)= z_jRnR>v!F1E!8AnZYDaQ$Z?U=b}55}@;k=N3o%cLW#&^km=V^L@2AyJ6HNP@Od!+OkE#O{bAAu{U zhI|>XkU}5;v_gV0vPUg1c@8At9W0Cxn&V5RSOE;bty1?^SmND?YxwnW1ua4f;Ss3i zO;Hrr7O+qyd|nn#-cAX#pO(6OtpmLR7%u7u!GK8Xg%+U2qcERG@armrgtMgWq@<&b z8Mn@htoUAj{&>k0JAIQPN%lu$!RUjBzDBubddQ#6CgwcHrxOIs_fh~aB#RG;D`)3p zS$bsY)EdYBtX9b;MVd1q(g>$&^2AhRqjUvs1^@~FQ>E&+q^_r9T+{3|g<17L4o8GQ zrV zwaKEKY(#+_FrPOL{eV*_?%~@*q7N4~Ibz42K=Juj+N6$ulb!PX>u|6`*Xv?z(A^_p z;2w9Xsc+!HKB_?A)Nh+AfEfvqdU*E}$oi%u*|$TquQRqwy#@Ta@7haw57C~7_HCpA zqa6_tL>5_(ao3IP#8iU>*-NGKvA3etNJkRVF?D54l?3J6Fj(xoUMARu7q?a%k$ zpXc13i!(QS_LM!d*4|UryWV;BX0!vu`n&;?t=2U@1|iPp7BB_vpq;-(VJowzhu`wX zg1shd7w7~BLurj!h<@176mnWn=CtJc|yN?A-!rcR6%da$@XZ;`m`fOC?=)qi0?REsP4 zRHZyj>A8Nkxu0rv+^{8h_M1&4A=oRK{W@*ku1*Bw$=5l!x9e7n+QK-K!^lQ3^WEy( zaPu~4`zetmFP9H3+k#O?>x|J#v8xk~Oxac9LK6b@5)CP6p;J$`|GK+WHvx(^y=0t0K`VYPEZFocSPrag}habMU5s zwN<rp`c zo5m;r5bCGp1|&r)7*idT#4_n9Nv4Uz)`2t#>~VLeMD%L6gsz&B_B%FZat{aY@j0}X zSofY((SzU1n3ufyElcBHzFSAdR?58TBB>sAogFOo^9D)PiVULJ|GK`2VLfF8!KUdq zho9-bpSl49U_FplPc`%ln&ZY>fp$2~ZE0J;cR!6a@)L*RO*F29jZN@qf8OfB?H^SU zhapQdH<5mO0SYygKTD6IRO;Vyv@IJ@3M})&)Ma`p4QE|P0eUOe&ts5G{RoJ;le8)=2jyuzo*ezT%$#Yhtt%-8@Zu1?Bmm0Az-z3 ztRJSGq1LQRI4^)EB*8%A&dWqldRI)oPIYoeHdGVV>FuH~$Xus;V~HV!Qff9Po&gH% zr+sKFE)eyHT!Ka$X=zy32RKA#fVh(da~JFH+Fm%4jYZD9S4+{QCYn zVPsF$6b$(3{QHUU3qi31LJH@0c;%b2#qF0Qe zE8Cgp=lDH7-jH}o`cqOOxIezU7fA)Tqa%VoHK-Aen0+cK$01y#zn$%A&ju`KvY|lo zTI^MQ@7JjQt%sIE1R|K>9z+O;U|Bx_ly!H#uOTwW7?6o;&c_MScYZU}7?oxiF9gtQ z7SASppe^0n68VKv-EI@qzIO@{(X!Tl_oowkGp8^t@U)`qSK+~KJ7q-FOO6vaq?79O z7nlnI%0v|p$sdo)wc&G?Eoo>t7KtY@Ihq(l4z}h{!dp)u} z(`nydI_Fcab+4h#4a@HG`!t%~)*>Co8xdZcI)Z!`&Wcn2fiutTDwxdrTeiBi?o`SQ z=r-^Fn$3;gnkZ|YkeZN{vmBm9e52f2wNDdFrs#>bInfBQi=Tf~#rwKN5a!E6?EqI| zwT&t;&8OsQCEUh4HzL0*ts7QzGQs9z+ZJ2b%n4~e z;VT?cxJhnV|!JpFfN7ql^Rcr2VxYDpcC_&X1kkN}oLO7=vY~)4q&K zMDiY91m!zZ;=}1iQ`{qh1*O1yGX2%bC9PIx-74>O9-<`_EkcmYal&ibRom{Ucm3zQ*mA*7oRm+wgS{Hbq$>^?B zYD>KTAkRrTJ3qJ_UQ)ugm(Q!YN1luP!$*ZK$UVa+{iMjxc7IiTvJ__CQHHiFxiS^5 zJCL?%oey)>Lx{F0T+RCkQ_dbx-r7|HUr)=OMwA2-0;ru6u*#LS%@Rh8^XUV-ba9kg zOGy3MC59DDgka(Vj{A+SOv*lqCf$_f0;2Qm&QB(sO-l%@PQ@-Ac;yZN)Si@E?iECJ zwdVX28!|f;J@x@Ywb9ozldO}Pa~hgvuZ8_>aJF}G{`YdHr7>`Qb%%Apo;VvSsJb|X zKh*n)l7H86v6abH?G)mTN16acPE0AYJ^*f_BB_y(a?t5bDKT`Z3%+v?^g)JPN99}m zG|RzVqg4!13yfgPClUhkjS>jS=h0W;05&xAxVx70v;5Gqa03-wcjt#g&=0SmW3SoH z!KJy);EeMPqu#;ceyg7+`$i@gcBsTH`|9hC%~AJvCckB@R7h!HiMD5+p@O%Gu1}Hd zr<|zPnab?5=b}Kb;Cm?GstZL1M0oj&Y4VKoV;Q>_nQLhpgR4rRNN@Cuz_}ep8+{BC z6fTVZ835qwN3ZCO+wzD=14H_vME-bdPH~owk4Rr3_E*sSpC0yTX6WXKLYr@y2^9C~ z)5@pb&CiRuyeMtmyP+>GC_DYjd;0u1wf1wj*Np(8m+DTQ2|L;<(Jj(w9Xy80<)wy(q-F6_9SrGu#!-h@fhF2kq-MsvDOkl6Nb_h>`>hHt=?E@-t2lMd9ze<#b_+CMip+vE9ny9=VuzZ+DMQdcQyQ$yfDyPC zpv&2j`^$hX8A3LaMxNzrVi}Cttwm@FzKaxq(0+8)v_x8H?2p5Rs_k<=R{Fe(q``|l z6m8XZg-*3gVeG=vl7BT>o2G6+P9wI1Z9Ly2U@KW>&)+^vn_+wigEq!^_TSR2X%ez? zHFIy(*SO|C6gW@dtaIBKr;Qu>kOOzJG+cqgyL!TP1RyD?O@moZrZLH zs9&ez0g{-&O=r;WlrEZl+>&GVrRm>aSi77pgXX!1&=nSfB^yip@M6&eO>0RO5CC73 z1qTsRWFj`*10PqdcJ&E%!zg#e;P%0b@sE;6kNnKkLzPnFnfqx{XWNqWrk<_Xp+3I6 zSXT3ldq0kKRnK_%)h!x8h(nv<>J4;qBmKIF1YPJZS7k}Pn_cPfNr8 zx|V|zAc(hq1~4zd4pp2D~50qE)O6; z)-J*mDNdH>a0+zs{d$+IqIi&j3Xuy$%5P6GLO5)e$y@nSjFtIbwu)|GV_Xn_zP!>< zQ-|7H_|WeJSS@*^+TE<$nhLIl>8ZQ66Fz;;1h~~eu!wHiNz(rED2l_dzbrfan zI`vs0;*eIBlv4VhNjh&k^%P{e;)hQ>-?p3KuPdtB&Ow=!y{TP31mr#%^l12^oMt{ zgnZytOVOcQcsXI{9Fp*Z0du5&mj?3>*vlBUA_K}jN1(stwsoXELg={(FxkUa%oxBR z+xsaZQC`(_rI|GjXMxacV<61nQS5@>r20Kg0~hv}O6k&s) zNep|juFRaUz8JT4uMUelUVVbmqr_YYF{7UoC)@e5DnXKttwdey8~>sOptSetCgN7? zRs56nleW5|UnFMnfaLY+@E$k=aP8XnWr09mLD7snx(@R@*X13IuBsm#4A_+OU9j9 z8N$=!`YB>8(gm`=S=$3|Ic9rZK1byLcFYZ=FCSc&b7p;KJnse|O+RUy6i%nLA1gaC zhz*A>o-LfwRM0OH3W#{~5ws}TWTLE25H|-U&4O*Int3) zb?wH}9QG-rO$jnb99_WXJZoX*c|~r7%(q2aO@r#L7t$aJT5>viZInF|6Rc&bn7_7) z6;op!^R!_3({?TzSIW?yGEwWu;}AT)xx3Dx^7=C&E-n5y-q1oDl00*RAO5buJdXur{GT9VkqVmwDc_}tO?N6P?U4U)VZzn=TjD9|b;en)HO<1-}Q<%^P( ze%lRq5~q8kv(h|eo?j?3#mPBE%w=TtmZO|#dU}-?bxkpCHaJn%wxCOx7hI;IBH@gA zX`nm}AK!?x3s#j`w* z4qu6TU8WBmwSp!sv-?7$D%?a6RtBCZuM5xCr81-47{p#BeBJA|h?==#b>hBHw@3Hx zsU&3mI!5)SG~{{rNJX+dMf69yDexsHT%ati7o}){J8E!kyFJv;}_L zdEcE@(_XaM(XkUnD#ve#XyaUruRnHR)a(}m5(}oLfgSqnJdfvTRaUL{WMs<54M2&H z00mUZmayVgbhD8drTWiyrG?UsieTG+27w=4DU4q{jB}H%_*PAn<9YUeXtAY|%^R7< z)*`ttOvd(JdK&zz9XcFGnAnnqtXvU$dzjW2nisaTej+;pxtWG~gsQpmC=rY2@nF`Q zH1JCY7HC410)$F^19PTcC(`!wWH(t8?<;JHhdAkE9W4jfW%U+qn#!6y5)ic$X+DS8 z5eA@+w}&lX@Y@YDDxVQN)-KJ^4|sF;c(*UW*TC%%SiRwd5Rm*KE0=6P4W=jlD#Tms zX7o&Nm#Hhsu$?E)8&k^1DKUysO}_gF2ZII@Q`bdIVA>7blh30(zxw1SsM&-trlD%6 z@BqyBiK(}^$Dq(u344V?7;XD@K7gU)!cr_I?rZ*(z65l?e0-2?nzQIL?=|7tw$awO zbR^N#>KnG@t-3UuN-3uPf*?*6F@8OcYK_60o#%SJeZ420lu|65{L;+8#wM)ZoDW`4 z>}0@Fpnk7}3Yi`jo#gV%nAPH(_Pqbe5bL20IE1WYTw}GHO=fO(sQ(VoKVi(7%6m=c!O78tQEP&v3 zaGL-)t zCR4$;Fjq&s^>Q|Pdt6{DsG76ECqxe{o!d>lx#2cz<-);J=R;g@s=roxw%zL^buAk3 z5w8-9Y>khX#!kh^O!^S}8pG&PwbNwov< zXoB%z+^(4v4K+FkP=_rwYuSb>3HAON_1XV>brvwS3|QweRZst4^?%m#|9v%mI-@g! VnkRLF-ID=oFfp_=sM5#A{09w$jt&3- literal 0 HcmV?d00001 diff --git a/app/javascript/icons/android-chrome-72x72.png b/app/javascript/icons/android-chrome-72x72.png new file mode 100644 index 0000000000000000000000000000000000000000..ce57ab7461a91a7d7772e1bd3636fc10035f915e GIT binary patch literal 2501 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%0AIT%VzV{d3!#L$VVLGN>t((-%waAG zpR9w-Eifqpu%QB%;1gy)2CMp5q4m;b@-Ls~5DW=p-Tx$Px!qFv04AF@A829lCih?~ z_e9rpOF6&(ub0<4gP#fVE`Vlj$ITuRTTkD_{b|CBU$61%d{bBtJVx^EhqumE)@gQ( zC*IMu@cjG6LxxWDZhaXQb2h64V^Irwn8C5b+)$?aoouNRQnr615E=P z`h0kNCsb}R<71oMhtL)rgVI~8HUD{Gziv#(G>Or$;`1y8Awkv zHWt8Mw0g=-L-SOi!X-Mg96o()xbal*htlVV?5{x5kn)m0MDdKgVjni6u-Ux#PMJCs zGBG9hXf{ppS1)&%3sBp?hpzzei4%x?sp$tS4rw4*^m|c4tMKNS(CwyN1~U1+^U-57 zc`W`=j&xEJbeP3BHfl9zUP7JQZvtacBJ)Pyip_L*{a(dfbC$EFy^k%cz{mwlWB&HQ zlypze8oRQ_rnzUCcMSz;4rIT=*1T2=3J;7gv)bxaQo1~Up4F3(h-2d~Rr zfRHQk3^W`Z5?t@C1%$Y2E=|8C>J20|451Y+AbCA+g7(yZly7@NmRH^zOrfo3c{>{#*fy!2Vt@)m7^};kJ7?tzWK&R=3vR1i`aee z^$R=0@0DFmUh9?oU+sjRRO!bW)WtwIbseZ)!|#`;ptJCQUlxpRrSn6(XnFmJmBkBQ z3y4?#u`}(}Jz0kfv*sTA7$kI&Q}0LaDgkpazdktT%Qd&@U3_U=zf@G}hk@6LER1Wo z;vQAQy94yVvI~j(52?C8M4GE?-YVH!k?l^@twu+ZvvDaaha7v$^q^bJ&D*7RgIEfK zc@zRf>z7I1qFYUtFh~Bl&JI<0(-On=cAKQPfOKkd06AII^sC1YI!Z9p?alF@55`@V&blBEr1dT?mtF?A8S`?uJ2;`mR}!%3pWmOf}L%%urN(;V+u3rg<5^-8V3wVlbol?E=_;e5;I`-t9U?6yDGdSw5)y-S zNry-yA)V4NbSfd;-AE(dAl(hp-Ce`PoA1Y4Yktp~b?4p_`|Q0BCnK+B`cq#eF6;Yn z8+A#^)s|V}veHSg_x&K~c=zQ(R8O{Dg$QuFzQ5{aPh~Bim%B)=yVAsRy8M^hYJ(F+ zD!CJ0ot`KPoEK6uC�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 Oz~JfX=d#Wzp$Pysz(s!m literal 0 HcmV?d00001 diff --git a/app/javascript/icons/apple-touch-icon-114x114.png b/app/javascript/icons/apple-touch-icon-114x114.png new file mode 100644 index 0000000000000000000000000000000000000000..e13aaa87de5c6dde5af5861dc47d6b87df946bd1 GIT binary patch literal 4641 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 JHQFxG{{znt_aguR literal 0 HcmV?d00001 diff --git a/app/javascript/icons/apple-touch-icon-120x120.png b/app/javascript/icons/apple-touch-icon-120x120.png new file mode 100644 index 0000000000000000000000000000000000000000..aa63012b5726546e756d272145e6acfad980666f GIT binary patch literal 4914 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 GAO3&eU66$U literal 0 HcmV?d00001 diff --git a/app/javascript/icons/apple-touch-icon-144x144.png b/app/javascript/icons/apple-touch-icon-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..d282a6d3d63432a3198d0ecbe882ba32915b8fe5 GIT binary patch literal 6644 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 literal 0 HcmV?d00001 diff --git a/app/javascript/icons/apple-touch-icon-152x152.png b/app/javascript/icons/apple-touch-icon-152x152.png new file mode 100644 index 0000000000000000000000000000000000000000..0dec7d63ef7ab0b749ab3beb7ed740d1c4267381 GIT binary patch literal 7002 zcmb7JRZtrMlLkuB;_mJR3Ir{#fl@rUl;ZAE0u(JC+^qx&3GS}NwLocccc-{t|C@Wh zo12~8Zy$EP*{7BHqBPW$aIh$`kdTmYl!5YE|1je}j)C$orhjkp{s(BEKPbr~z5K_% zcfgX7kf`vK zvdl+sM^~->m4kHAD;FOj`rJm`6qFtBR2-FSHbgpE=6}l=5r5Po^h($WKw)SyoLcZDHVnV5u+A*2l1 zsNAwbn1*4Fg!LHn%(euz%0C$`lmE{GdK5znl<}Zag~1)^5A{NrjJ7c>*~pqPvE#vM zwKL4N9Pj^;EBzxjbV&YQ-0&}<{vUS2ijN_$5Aije9O`Ij937O5f>~w3;496AMGmqg z!D7OJ!Lsx?h!%;3g_uyZ7N&&)H|fV$3wf_ek(4Mc{#5O@dKouRa_N4$bKgIhhA0s3 zgf~B_>aA>zW;}N4_jL#1;?5N?;J&dnqXSPYY!24LZjwse0IN977&^i(J&;4I8CH{~ z33*XgjFQ=#7V5AApaJ{$Hmc=i=M<3xMI^Z_9Ng(BfLpc|)Y^y~bHj39_NB5OD0&l-qT20dT zW$3X{8id(#ocp(PH5r0CAffOwfl9`S#JDrm;u2M61lm;DSnV~UN1%i?_+Dp@+|br- zZswS|Pux($_1iISmbezH1oH;Nf|4K_2UiIQKrz~Lw!@SPnklnL!KXg};iA%mW?d55 zCGWPD4XiJ>T&XiKP(axZvj17<-8vBT+G|Ep@>Y5OfEeF$?CYl`2IWrq$N8t!luD1E z^k#H?%JpbMUS0k6X}yU=(KU>;cX(|sX5nH|<#v^A*Hu(zWyvt3rnQ;;QEr2yJv4%E zK3d(k>IoWXw}jNA6Aap|)4k1bU9j^u9;xOdzZm<}4 zpdJ368B#^-%@pu^%%CCfo-1u^sHuzjkhV84o)n{%s_0k1D(e7}#wNz{y#bGH#_KYZ z3mOy>KxeT*4SL4Tjm{)k65MiKFw4GIE;@N%2Ttyswr_h1lgn`{jhg}=8r*kHTAb2h zgaQ&0*Tea`-cKd&mvPuBjsC~?O-|`lE|AK$g6Fdg`49T*6;0VM;E?_#FF6qh zJ7b?yPT3-4=&W(mQx$(j&_uk|G00`OWApcr!Bb7GAz4+s@!iI5j7>Zpy0KXsS@^fl zz@%^Z_+j*WU2*}hz&GCQ$A&ZW2HJyr?44&m{d%V2vNre9?B7y2RG9Rs_gCwTF2Z|B z^hyd?a#^vrq5Ze>crhSskq>?<*WL{%SQUq@dk>-|tTehnHIFT#KY@Lt&HB$@Z%X)OQV6RC6KOq1<0RdBD#&EGhB|zA5 zU=XeIyvpTd-b8H{esH{2X=QDvXKJ2nAvzN{G53hELS0&EbXpRSfBx@$VNZR_4(nK){g z&%LU&u^t%9~leX}CA>dMdo1M|u3J zxY^3pn5HJ-H)0iLVs&o5UZDO%&s2tN6p$d2{p+31{#r19&=lX(Nz(@;AOV32Gh=Vg z<|lLJq%!Vt4fm8t!eB*tps2^z?afPD3c_sm%iYxP9Y5*W1=U<{3J>OhEm(l&Vst8l zSZW9j=xR7W*@-NQn9}Hr*w$i&%^Yw31 zOIqG^xEiy2+D9h4$aZU>GFW{Yx2ml*>f0Mipp}3Y7LssQ&`Bc6^gl1Nbza0>slT*u z?IEoeb2`Iwd754JSu_OI#h+-fr{Q;j?=nDIpWy*raWaIlQ2k4v&E#5IWN7 zZ*i1`uWa{G&e2z^FI5T&+&qe+Kr2+vkP~n`}e5u1H3ka>g@~LXsG?!s%lmo+_j~kE6x4INSU=^$W`Y1E3WFiGsTNewyuRZP zrjqrJ9Oa>h2XFlS?EsC-z980GDzYX2WoUD?i`~+8!lO}Cg39Z*KhSr4%Guqo{^83qWn;k{5UJIDkOS%?J81eE9h=^00<(4oJq5-XkGMJWQ zi>^Z)3VBckSqRuz zUpwSO7KxZ)V^g7sE;6H52O*d1wVd0SnvzH6n%XGpJX+eaI9~T}H%FE=rtu9c&7V5C z-*rJzvWoFtd4f$?<_#S`u=&27M8serP#P=b#7WrF*La9~8Kal>>YSlEUR~fsGxbU# zN&_*}jdK`#`n2vQYApmc=dly8q7lIz^3xczJMnOR&E3KbYuzogk zXgU2Yc&9*xU{9wkKC-nI^cCjPdFoch91M-7SEL9rcYVr2yb+V3&V$I9zCW(ZJ0QVU z)1O96kM8NyGIz*mLyf)NS@Yi29vq_;%dzU6m{BV?u&|48bQ~qG<6wRCFL>teACH1J zHCoNci<+?eT@Ufc@IcaJX1Ly;Omt6T?i)V|crlQ1GgvWTfmjc7y{R;K<|#lDPJl?J z51VmtHtan|>wFa}TqAxG%A$rem3^GysGA9$!|V&fccHRbA02Xql+*$bD74M5S@!z7 z;1MdK4%~x<=1{@SUE6nBTv9kX-uyPoV>jsNVL zlhsMFK6&{Z><*V1Q48G}>IuI1T?w!Qm0_zn&g{pp$)LB}7zNv(IdJMZA*_phpeX~e z)msV%qlyN~7^J}%FP^;61H`b&xg_VALlnydI#LL_^8j*xJsdeY_!;dBYOT-I-6T0p zMST;DR`}eKxK8%IMLE@6v#YDU^{d){JfT=pE{QmrhrRGi2;8Q}BnBYOB!WY2lC1fL)Hni-nna@r-7^3u?wg3-q!Tc%Hz% z-s)tysMH5lXT<{{YALP2dzf6{R}Gkp4X*+vp*}0}W!|y+da-s`@%VYILRXL0oVMsz zrj7VBt00pVmCEM*>5Hec?{~bw;AmezoAyQ?k13U(2(z?VkJfhQk*7i)0*~k3ap0eC zE)q*G2P-p0=K8*CQqlsmKDDdwh9$&g*2duX=T^e6`eQuF*RU|l1Zxiy;8~hYII9oW z-SM!D~ob_~A9Clb>|GlhF)+-H`PfxW%5?^i~e@fpZ zO_Wj$!F}y+=6pK6pBn<$kO^8}D-jA^V|l|?uLV6UPoS@)uWY!2MEt+E2SnI)V~pbl zbZpz?Q{MH*N8r+ly#DFpvv%W2NbriXiFrY^iBiC_&I{umWT|;R&u>rK?E%v3I6_TZ ze)PCKv@?oL)wHGB>NIE*|9p`eS_L^>ec$?0T=T=_GJQa4x%mxP1%sUth4LLWEpcr8 zz;^=gq8K!df)TkYG8?#e7O?a0-5;d4$44vGEKP0>=Ccd7S5{M5UUw(6)@emFy!K`; z#a&hIolWj1j(5MJriTl+lLwM=_mZ=N&~o?_ zJi(i@0T#tcJAVaEPa3^V8_mau3t?yvlb!8Uyr*gd-{v~3XQ$N++JC(@;EYKlCkz+L zGGy!X)r?V~p{lVcG^DQUhe9B>Zof!l7JN<|LGmmxAzs?2#`{1RcUM~^{T$UqJkesF zK;Qrcy@OfV#bcYcUCNrY*~^LvS5;TB#lSrT;XFs3E5;h-TGvO>ZKIYa3FbG>s`agS zrpwx5qGnK3z}G=^Pe#^g6f^8kjLKdCLKH>x*rb#0-cWR`36Y|L;3K(R)P*Y zPiHZ!#zd#t79AYfH~V*$CiC9y3K#E%tGzJ+@E&8-d;4b*}okI~b2r@iU|OR+E>PcL!f*bTymz9L8L(${JpkE98&m zfZnEg<@|lik;7CsfD{V^ezZMr%}(Pn;(G-e{leq*qvX*;os?@EOZof&EvTEr`RE-9 z^D~|0oPZWRUv3ym@K2-YJR*w+IRel5J9#+_I74R@A_%ddvOoUksKSRk%6%rlpH9kayQ58Ue=~44962ywjNJTjmzZ}Gj}g--;J)LmLv*h3%$@MX19SPON=g*y=MMg?# z-!tx*5#)31ny#Y?p>hireWCYV-pLO_j$0e@O}n&@4?XDl^N?PpU%x%lxKBc60}OHa zv+LaK<#w7ml1a3Qk!6GbRa*e6gSQ8@P>yo14fHTyOr?QA(ox(xREVU2sU_*;l-@_5 zFpz)tk7HuZ20o2S9LH>>y-!yyD@XVNJ*%Q5pUBG8X^ozjl0(~kaBp%Db%!S9Bb4iZ zPaY8snm1WX3s)^TM(&5gWbR))u668gCd~6qXwj2-S$5j!DLtVM?XdcRi)gLjn#9hp zPbh!Cn0`In0Brm6)}w3)13cKCDop4C&YrjF+P~iIRZF;6&v~>0#Gr*gQni#7fHL4V zjb>l?TLXJi?!*bJsc9aM0t&+dEQe5^iUP$aM|{E3VoSl0kHM`^PB>Z~}qgv@`C?mH3<7OJfcUv=NJ(HQhS;6BgY#BylL!-u-3S|T7^~NI;Ph>+AF*%I> z=-SURA%#D7Y43JDY}B1vPqml5I#zN#Ll76g?kvtXVDLZ{--!_T=~oP0&vx`GLYl8T$trs_~Q`zL++YQ{Zd5f76mIvI4$AqOGxB0`NeN zOkvmZ{KJOFwiOq&f$FbzsysdFn#IT$kKly0*Bz1D^q31h6;msh=}FdGZi| z!V9+te6sXsjWZW*-5O8|YS67PyDB2Na+o8IKK@hH@$h4`68yl(r+sC8+`b16j6RZP z6`ao4)minmI*M|+Iti>q{~T7r+Uz?Vdb8BxLyPbdC~O@sropTLl^rxH3*J)Zu48=m7th3J>D>C)PX?YW3I?1g zh;u3L+fhYQl&<^Cv1G(7Hkt@PCjFJ`<{h>75XzX zJlpQeV9dye5@NylYV%&dPTu=;z8I@=U3CpwUYKL+3g)ccg-caQ?!h^q0sO5*jHGCM zRNH`j${yU{Z-R~!>pOUgwW>uiNC)cO?sWeiW>-wlYsRVk1ghH7p^TSTPl)wc{8tul z8AwCQ+M@?r_6}stEeHV66!zAR@CO zv{?X!6O({A<2!7?gn}NKOl1hCT6K~JNmmKofi%L1Va18_H+dpW|x)D9& zZT)&TJFxnm%11_%AU(zQBjc?FG8wX*>pC1wT?jc?zpn=G2J8?1=@#N^C0H>vqqa6p z6W~T9SUDhd<>-nT^*e?MpB~q~lqhOe07{{rAgCE|dT!TY!C)nZ;oDkeSXkZC}K(NI%c<|sXy14t|gup^@f;$9vm&;dm zRrm9*u6nxr$4tF9HPuz!H81M@J0(19Dr^7%fTyCYp#3kG{Kqko|HTK7#rA&*-C9ja z0r2u4%j+!p4gk>UsVKYJ7X6G4nny-uLn7+OLY`N~osT3ibR*$RB{~pz6-HviDdb24WslxqPh#{M zSZ48R1+|0P1wl$)nqE)mN_w3)cAlQayFP-2$3R!FHVe2xwfWQj!+v{tH2j`FU&&0d zX@PWag5y2#3Jj&)Usjf!Zcp?n^O^Y)?7um3LQfRSA7iX|$~OE0 z;8!;`mV5!N#<61q<1^SCdMc%J8D_to3zp;NMheaC3!@a5MM`3rAx#cu#^5Aj@brr0 zQZ4afv-_ejczIt0To(knysFoSeIPgQiZKe>V#&qp?hnn>c=IER;>Kq472VVx8?X8F zPc%H>#VDnPYejudEu=$evPZt--ib!y0|vhJgJ;?kz_Km4fHHtwe$>c-g{=4NgXGNBz@aYAq^P$u80wGLe zgK*GDdV6Z`XGWzZh-9zdNBIUl9gpxzMdC6c;1uc255ti8iyUAz_cY21$m_4R`n8Gae2dzkq4`~1rg z%Vegk8FH-~)AMk|*9-2dNH26x-GVyLb|?}~QvU51x0zu8E6>RGK#8oXBz+HEEe22A zJ@2y@jTEDk2BzQ2MgE(>Hv0W;h~MLP@TMZ!>7aT|$%yv{IP5)HYPD?&d;HXMG2KND zp)}_T^tVe`pd{4uhsA^HgDdS>DEALGV=ldh{o)_=w;>p(<5GImuOgW&!~fkus=yxm z@sKgwyH%~o8{K9nm_`VF7JunoST!@dY(b&aC$A!H7sw6B#VIA?Zl-C8S$58BNYk&* z_yDJ}AK;AS%2z)e%>^7~A5DWB*?+$fgD{6Q5nifbz9+d>Z-&1ZI1z6mhUhG8wczED zuPVQfmv3)bof?gIt_Y^+b5411Yk!g4db}pnQ}p+~%SrZ-92`l`AT3B&36Q1hX#ad{ zdaySFAr*sMS%Z`Eo~51^Se^Wzw93CXoQ_+j3KAw*)F@7`QIdp_Br4|K(q(+(q*Bp^ zJ)SC=23Sx$8ANRBV_lV=?9p|>eYWwF@>pc#skg~~v@|&{dzS(NNbv0lT^T!GS9MH2 zudG(@I9dE{pdvCSLaL^AZ4h}X_?CbH#@CA3qmEKH_qS#Q>D5=MTn1J~ecdp#9Fyx?w|_@yfHHo)kRj3Qlku z{qt2wW%ZL|HXlVAzaJm(Ss~pk_FWY~aA4Y8j{mX6^8tj4+h8@AaaxPr#^(N6?*qZXh%{`xK}b!sn6SY4EzrNQ`sAM4PHFGf?Ijmd;&wY!J!(=BSuuZM zuax8G)E6Er;qir)N_!_V^2OA$6$v`q7HCZQIbh*BvRZv zdTD=S_zmc4YUmvSy73-Q6-Abo4D&qFIVy`xa`9{4=js<>ZJ60b^Xi)^Chz^^myj1j zI-jCKYi?e$Wcb&ee!8cw1)aI2FDkWyCV{vu0=Hm5(43jQ5)kFJcMaEen}SPR5;^oa z=+`q!#-n=NEIxhp+*#{tuBiVb6tggqM48EwCl20PGK&gy4PHa)Ug#0Ix3_S4CHk{K z9sKU^MJ^23=~J+2ZF_po$SgQae0y&|)qcHp)jWpdmwbV{+2Sz+30WYbkmU`T8>w5; zKE#@=S{Aa8ng~%UEX=uytroI?JToh2qQvfu>W!A$k+wy*mW!puar9}9i5V1$W#afr z2>YGKzm)!Q*wXB{880#Sx$c*Xu1wdgUymVrCVeBWS=HFS&k&`&b206~DVsF#7rQ1o6$&$zTU>(%b#s)gYu_ zzCZiaR_aOUe{Fo>@UbeAd@$_>weswqEGHeqoB1K@x(Z`4JEI&(%;`AJE@K(6exSas zLXn(7keEA?u+l>FNiG!?QMdGy_U1-w7%7gsNB))*+v=zT{+1V=lUc_e=wrfO*~y90 z`@MRJq#_~r2wn7jtu{fwbCBojT;EHx(U+XULZAC6GAn3?o`5Ce_{2nvzSV}VahRQ= z((Y&aY(ZFH=$`@ilCJxr`%UR|pYufGn8`frve4FVvG!T@qGY1R0}fDXv5SR5U^6IT zvNiPJLj%L*3 zmZ{G5UDyNA@CEQgL)vfbWlPNe1f)|)o(a7GsJ~{F?YCK#_P!l3Q&|xW%%jA!9MC)V z)7hQ{Ep@@1KZP_Ji+VLZJ=Q;ifWoY-lb`|mnnYw4D)uPN=Nj+1_VNoM<@Y;C0Du2L z3CqBUT&C3aEZukdZzB~H{J~Q@mtd`q@s|Q#I`9yi^Xt+OBs?bOg6dqlhpQlJ@Tf*o zk8JZ7So@Cg<0RPvKah|~FWN9OdqzilM18<}DKd1ekIf!w9bc`L&|LGZnk|bGJT#O zZKSWp9P)e?abG^e(Qg<>X++3rHH~R4-wRq@ZvL2t;EK453W7Xm-{^1GH#1o#5W4Ll zeLXB4LUyT{exLN~_r}P?I_dY^P*u{wcXU)##~bO!h+zj4TVcqt=mc*^YjkprrSN8? zSen7HhX}l@;8Ql`Ux%?QcYRq3_MgTUSKO{J)ap`7UT%)dK+vjTrEa~16d;uU8+DSf z_i%7a)3-%?l+l%}VWc+1oNjx$TO-2_aj+7hIb z1fgJLcNCZtY-?mTZJ;^4Ad%~|^!^q^q{(my@C9*tEx?8(5n6y=W^N`DiKflX)UM$`(2)_x|wXLoNyMa|B1DTjy~INMipmu;4Lp3)ZMwDbCGHI3W}r zjlvvFyU@58D7=))PFL z#zA8Xi^wGOM$WI=^4-AS;dpT>(&6Q{ykqhC0!S`iGT~jA%rQk!r(Iyz204#(92z=S{u`Oez!@ zCfohhq}&xGo+51R0N2|6eb}~<^A063k{;u(ng+Rxd?=ZA`T{vRe~$&Zo#r_w*tcPF zfzQknvVK5gcBGhTpWILw$8hu^JgZJak@l$`Ols(uL}mF&78&lim1vyAtu7w8OkOO3hgqwXBo zPz7Z^Qgrk1=(~!C@k(dtwW@<4$V@`KWHy=Pyq?VOV8d~nrK2v054YA?Sm%OAW>lSy zJ%o=pE8V^3Je6o- zf3w=HJoe)SuN9K(xJPYoXlBd_?ya3lH4g}CR9>WI8WmZK;joo2<9Fn+bKBPVVl9{^ zbm$Tk*Uah;ZmUh`WAS-G%(^Ozy~0p&b_J;nvI<13%h`LA{4^+!(T;bgmIZ7Bg`}6MiK!HCIIGN6v_CxVt58|`b%ox#f<5- zN#>n>@(PC;r*JqLc6()cm(p<$^BlOUO4S(5ol}f;kd+CeLwvBb9kwOwT4SkA3o|o~ z&$>Dwkw?NwCz1{xI9eR!YTKj1r-{vM_oM8!d0ta2S&gFde<$0?45sUnoGwuPcWuWhfnYN2Sc0h-H9u^09~FjMc*18sr4(^qjKG^#9NJTsP@`H7&iI)F z9EVj~=A_&wFB6la${s(Qmm+!`S?A?8?2(RU5Te5L9S48fYZ}CzJ(}6`_2EGgD=3e% z%ER2sC;@80fwtqq5On5^o{ctLwmi#d{vk>?PFSQeF*9~R(oKH`i)K#Roa}Y3=7YKE z6-Q1E`LmHm^MH&9f0qNo`m6z)sB6NI1`7x^d{BS!&56~KGNUjLn`N`#uI0k#R=yez zgWIS289Zi^FUq1>qoa{Lp8k=D9&L*hn=`tE9P{M0mNyVob@DA`8cqM2a&mAla+Obz z+Z;BIdBR7WLRg=yjRcW*y=^}{vM7z$Wt}+NdaV0I_1((G2qpq#p0+z^$e9f zojnLUswhY_zX7)G#f#H9u%HdQ8;Q2Ysm4XSxnN{f4!fvLANH=+f>qT`;;!!oqg&N_ zHI9q)y{b?`u|j(BgeU)SKUnUa1Fh~ZJ1b1Pu~@8J_h55L@7L?E5?6)dy`hvrsSx8k z*>ErT&3v>pb1}Dy6KuKa3g~w{(w<%P2QRG?19Q3mBX~|VJ%i87apaO}M5ie5elP6W zUP??ix5c5#>27)fe<+yF6$YPj|r6Aktq8%a6>q;}_?)}pUU96zGXf_%GTp)ozA zm_bPqmaCun>k{GJ9TNDMkv}`@Lc^+GAvyPJ5;mQF30#uSNv+3ez1L2UF;Ya=W6#65 zQjz+geRlYF_DbXmDP3@@?XW7v*8BT**(Azprs%^$O$Ltb@Ha=AI3fb}*twvVJVw-P zNlExw6S^7aKW3HPv4)d>L(ko<86Ts5!!u=yU{wT|Zt{c5!k>K4634oUMxx#Cc1`-i z7apXhoN6%b_AuVZp1X;4_p*vn&kvb>jT^dgp}?ucpgd$Xd(GzFyH+FFVjOY*2yR?7B23p6W`4uyW!0k!@L0 z{QOcoBF+tZ=Vd(7jV3;KpEidyg=oDU9#e92kO{r^Q3n8iOQMV*i#nn-Eyss05)IGp z!Wk!8&}7SY({s_{!cf4%mExnC7z zixq)mKi;3#&>}`ancB?cXt_|56k`V%iK-ZbCY`Ud5F|4bI(8xoc{P?lFLqDjthON} zFK%Ju&umRAvquKUt>ta*nzlDx3&;L5oSySLmEa5gxjDF{(g%NSM4PLS5dX0fZ^OSe zp6e2C>X0ivC-tSkd&k4q`4V?BPJ04%ydin74J9Fd!^$RPEkpMAXT$JKfAkdQbsQY@ zC`SgwZcgUc@dpv!&QrwV5-G?li&~u8_~Eg&o_uWmt|TFNrBrP1WF^+Uc0#YTA((%*(EtC-*6 z>B~-KwJgVnDbv#g+2NmV!|vxDd^hcy72cTl2Ejh|$t%mk_CPl34pFibiR*$)eLu_j z7C(ujXca?<#{{0rM^h^N5_`U?7|MwISSPuVb=eW#wOqb8%4tz6OTJp)lw}7i;%Tk* z&(HS(uV6iQ?m@C&4Gn#>aMB6SeAz9tZ^b-U!n)LfBri9 z5F9}dO-aRCy1Bw3wt<|j2R8UDRr`Hthh4svq#RqrwAaUaUB?ezO+V_@iwS`CQO4>s za2+0!RyDNb8?g0Ia(KJSSh_LM5XRNO0_*w2LuESH;?r5{(eb?w-n{sU`A$e+GO+Xg z$svb)w*LIN?=3 zlgn}8Et`#0FoGUgMkeiD{AJff#AT`DlytaGm{exTbGJJjFNKL$$e25~V@2K51F3wE zIM*BXf@;|1RXubAEM-}&M4}c~6h>~v;OcOsJ={SX>i2td%1cJ3&^%z>G2kEGC6G(G zCk8udW1b;6qUz*fpxM=F+UQ1*^`{%xu*dOF; z{K>&`7*T%&CS@aqsC^z2zl}@3@qR2p2v#FZJ3V)Fd3(gbONUL)?jTPCuj8npl_&qF zkXoj=*e0n9*idg}rgWj*5s~!mNKpYkY92k?p*71%m?wbtTx7ZJVG7>q`blTkw`%~n zqU4ef@XLuc%KhD%KimJ+_j89N|GL>yGx-zBn3(g@p)j~f!(``7_dm$)S2L3k2 z<^ueEg8-1B+LXjl^$s50}RwbBON>h?)&d%6busx6<`r zv7&{|zuFE^PZ^QO1^ij{P{PfVml||s+=5N}s1@oN!WgxwB2Xd}r-p(nlSPR|&o_R< zUn(~(o_Xa9cXu;H6W#od_wBP1Ns9c%Kg-7|%xjAEcZXcOKAwsm&|!hm_Qg4wTz8_>Pn;=+sFK zvz?691ZdLa5^w<$hHpxm?4;af5;l!%zu~9h(s=QR!jckL^0~~PfVZ9WMs1QS*HiTJ z1027tUMaz1#CedU5Q%4jH|Ch__sr7Z4%(KpSu@wK7sZPKR((AmA9n3pGfutUGXa=( zO*ADWu0u}ZI&TlRwzk5S3|!;r5iBll6DOUS{lJc=zcW=R$<=+RyaS!r1QIS%qGoc< znBoQklSq~)dLVF@&FR9A`|5z@wH1`c^jy&s;;EyzFAG0E9n2@*UueF2yp1|5E#=L|?zV3~LGS1cod*i61!YADQUaV8yIfA5yCfeTJT3GVYulS_ ze=If(xGZe^>vw5O50%AKU!?h0awsl#!;8bm8^*H0IX;cvkII{uAMJzG`A}~lOIL4j zS|+r|aOciiy0E)iM+hYQ9h{I<;Py*N5)`UkH7~|L+Zox0BltHSPwy`Jz81zlybCth^7#PjR=VgNdKL8r%g;zKN1PrRle)49-g6%g$m~%=kH!W;jXzw} zWcUaThcy_FdPwYazgGLLm)eraHRO)eJyA7kp!x=0CqLgcJ!6t4wo~J)@D?+ zcI$6_cKaGTUvd!KjsFd4^a30cL_ahdOD7pV5kV(FdvV4X2eMkSs7|n{RJ~R9p4HGT zVu%_{_^qMhk)X_Q(Go$8(zobWs??MU3wjDLpZW&pwRa=I{x?6w7 z?y((PuI2+-6p@nKqcFq&u)Dn$2ri=7$*XcD8+XV)y~kDEF&nJX+Tn1T%ijN73-$0G z+>y1E8TJazMSA9$%%q*$EmkuW`?ZCtxm&~OV;cBsp`s@DZFvPHD}pErZJG>KpP$Eo zZPz|?wj}gqV$z{gG19kz#8@73OPiu7Y5xBel>b*r`h~7O2Ugm4{5<+katElqeWy?* HXBqroY-azQ literal 0 HcmV?d00001 diff --git a/app/javascript/icons/apple-touch-icon-180x180.png b/app/javascript/icons/apple-touch-icon-180x180.png new file mode 100644 index 0000000000000000000000000000000000000000..864046b5652a166c3d3d15341ad6a4f7e11539df GIT binary patch literal 8947 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 literal 0 HcmV?d00001 diff --git a/app/javascript/icons/apple-touch-icon-57x57.png b/app/javascript/icons/apple-touch-icon-57x57.png new file mode 100644 index 0000000000000000000000000000000000000000..116918ce286af08ef52bdad668ea9d475025e3d1 GIT binary patch literal 1857 zcmV-H2fp};P)9NNd+eG5i253S%tXrcU)~(TY zVpZU66SEX=BUZ5av>9ymf9V5SMN*OHl9a^~-$xj66e0+3&I;b(xW>HbSijtVE4q8A zqXV8tL<*>FiU4AU@AJYu=H_@jjiDjFIsy5+#s_SWs~{N&TBtGf=_I>S^ub0*>-z)LSg=ig{zRux;v zftFqTo$u>Zia=C{Z0$~KZKWh3@U;Q4yc}E_v}F}wwt9>icvz;oB#C;U&5H<*BL=>% zcO~oqm~GcqUmy4Pt18OK@Ehl%x8IDWr&(+C?V~S0p!fC_SA7uh*}q1YE=F^oa4e1k z2j%?_s?N^UCWw%16<;_hUj1`uv()Tj7W3y$=&I(zke~f|{=&HrOC=u;&-n+ea}5~NR|qT@Y#NO=Cn^jqLHk8fK9Y-zo`1EAr(Pfwc{f1kfHI3}ell~;N@^KtsQXZ>tt;OW{e!LalJi?zjQ z@2H69VaTuj%~#5C<82_i^Qi3U73nel_l2q1kH>!Xi#=E0pI6FB_1<#VF+oIw?}UpB z2AR2u(XqGA-}=S-bg3yN3n+~-tb9N!Zf&a=)%0~UJ^oRwrISG?Pw9ug5i10O7k-yI z`^x0-r8EiE)^W=ZejICS69B$+KYsd?MJLwkgNLsK<*ZTxFwBkjHVYpxMi2`Ez@=w? z)=23P5rL1N&|0&0NNb$B&vD(P)UI}7$BsLlokBaL9qQ>p?`MdJTsJvC$K_2CASKwC zn-B-s7~*PY4FWh`3qTy1);1zR06>)L767?kl9@X?SIPkpC6j`q2tJHEC|%Jv5x}Onj4Bm{fMJLRB#PJBaEer%%`7rnsj`p( z6k)6FSN=1qt1tjib(L&pQL6ZQTVH|IVgYjKXMzBZt|$Z>FoCO?R?Dl#Z)LHwsVEOa zgnmXU58PloXzT+7qqG;~t5{dYw02}m<<%d{;E*hGYifa6yA z!RpT`*PgvHpK}0o?N;Tlt_=Cire2m?!)iIM3v*Fu2uRhcg1`MFw zKJVkgKeM*uYRNh?Rl&OMT-Vo1l?wYmK0iO1p7av!H7n)I#TKloZRKneNWri5nxO-JQVfco!FJE@Jk{bJ{s%l zaWcyyyClH{8fRD1O?4*@-<7=kWV`D*(-YBJja!Na?!97Z$|myt#jf2QPyVp$;E`Cx zD@GVFGXu1|7!gq{Q8-Ez=l7*we{%Lua~6BkdXh)_o+>~6tn(Cxc4=YZ!npvz{sW#= z#mEp_ln zyrWyUcPgy~fPCIej^`)R`H|t=`1Ps6xzTl#o4g6zz`Zsp?J+aLT%qo@|K7Ov!J45; z2n7@phs|E0Z}485Kw5c)b3qv9YEOa%D$#3XI4iu00000NkvXXu0mjf5NMi> literal 0 HcmV?d00001 diff --git a/app/javascript/icons/apple-touch-icon-60x60.png b/app/javascript/icons/apple-touch-icon-60x60.png new file mode 100644 index 0000000000000000000000000000000000000000..0eda96ed62a60d11495656f6ce33b69f756fc912 GIT binary patch literal 1952 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 bxmxgF1KC_DRA5a{00000NkvXXu0mjfjUM?t literal 0 HcmV?d00001 diff --git a/app/javascript/icons/favicon-16x16.png b/app/javascript/icons/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..e7037f4cf1d839538e52f6839d3a6d8030b64dbe GIT binary patch literal 650 zcmV;50(Jd~P)&>Gzrclypf3CYu3SihXd;0@7fM7B13?I4h$d=4gD8rMqRDh-rqkV3*Tr<_p__Q1 ziaO`sI``J46fttS@PLT!5}{Qo8h{i~6NhI33;Y5#1vXzOIDLbI$|w+Z?o4Qt2lf##iIv4rIG-w)!3*S8&S8$lF2CEz6p6YTqb|Fh*z+t+yJAcTxN(O>p&-TpFz*ZLv|ytO4+9H;RyN5ot{CG1RhZa877Zlc6OP2g zGA7XiSFD)>>P6I|fvsG)cIgL7v%n=b5V48oxnisb!h9Jf$9+D12o@^-{GPN`!Pn0L zlj9CWFG_Nrs}qN&^9prrMPFw*e1Y9sn`k1Q=t`HtnkP0gd-{hqy>hLQVU%6!Tvl4P ziPf7CsZ*L-5mf>^XK}t%nbN!7r#ohnWChUKHu(@m#}e^!ZNa~KVX zrP$N6yqW^Yw!N;=Ho6I9m&ASpALH{nV7)tEUVVGCweXKYg6zJr{mRgdq7~Q(IKVfQ kObGhU){*T4J%7FT4{OIjkZZf_Hvj+t07*qoM6N<$g6EGY3;+NC literal 0 HcmV?d00001 diff --git a/app/javascript/icons/favicon-32x32.png b/app/javascript/icons/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..a91b024631ac83fd1f29cbc10171de7c967c7e14 GIT binary patch literal 1248 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 literal 0 HcmV?d00001 diff --git a/app/javascript/images/app-icon.svg b/app/javascript/images/app-icon.svg new file mode 100644 index 000000000..1035bd076 --- /dev/null +++ b/app/javascript/images/app-icon.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/javascript/images/icon_cached.svg b/app/javascript/images/icon_cached.svg deleted file mode 100644 index 1087c4350..000000000 --- a/app/javascript/images/icon_cached.svg +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/app/javascript/images/icon_done.svg b/app/javascript/images/icon_done.svg deleted file mode 100644 index 446af14d9..000000000 --- a/app/javascript/images/icon_done.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/javascript/images/icon_email.svg b/app/javascript/images/icon_email.svg deleted file mode 100644 index 6d0ad9d9b..000000000 --- a/app/javascript/images/icon_email.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/javascript/images/icon_file_download.svg b/app/javascript/images/icon_file_download.svg deleted file mode 100644 index 53e97e4f8..000000000 --- a/app/javascript/images/icon_file_download.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/javascript/images/icon_flag.svg b/app/javascript/images/icon_flag.svg deleted file mode 100644 index 3939c9d2b..000000000 --- a/app/javascript/images/icon_flag.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/app/javascript/images/icon_grade.svg b/app/javascript/images/icon_grade.svg deleted file mode 100644 index f48b46889..000000000 --- a/app/javascript/images/icon_grade.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/javascript/images/icon_lock_open.svg b/app/javascript/images/icon_lock_open.svg deleted file mode 100644 index 3288b46d6..000000000 --- a/app/javascript/images/icon_lock_open.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/javascript/images/icon_person_add.svg b/app/javascript/images/icon_person_add.svg deleted file mode 100644 index 068b8ae7c..000000000 --- a/app/javascript/images/icon_person_add.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/javascript/images/icon_reply.svg b/app/javascript/images/icon_reply.svg deleted file mode 100644 index cf6a09abc..000000000 --- a/app/javascript/images/icon_reply.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/javascript/images/icons/icon_cached.svg b/app/javascript/images/icons/icon_cached.svg new file mode 100644 index 000000000..d938e9bad --- /dev/null +++ b/app/javascript/images/icons/icon_cached.svg @@ -0,0 +1 @@ + diff --git a/app/javascript/images/icons/icon_done.svg b/app/javascript/images/icons/icon_done.svg new file mode 100644 index 000000000..a35ab87a1 --- /dev/null +++ b/app/javascript/images/icons/icon_done.svg @@ -0,0 +1 @@ + diff --git a/app/javascript/images/icons/icon_email.svg b/app/javascript/images/icons/icon_email.svg new file mode 100644 index 000000000..0215b6f3a --- /dev/null +++ b/app/javascript/images/icons/icon_email.svg @@ -0,0 +1 @@ + diff --git a/app/javascript/images/icons/icon_file_download.svg b/app/javascript/images/icons/icon_file_download.svg new file mode 100644 index 000000000..dc6d6bce3 --- /dev/null +++ b/app/javascript/images/icons/icon_file_download.svg @@ -0,0 +1 @@ + diff --git a/app/javascript/images/icons/icon_flag.svg b/app/javascript/images/icons/icon_flag.svg new file mode 100644 index 000000000..fe07808fa --- /dev/null +++ b/app/javascript/images/icons/icon_flag.svg @@ -0,0 +1 @@ + diff --git a/app/javascript/images/icons/icon_grade.svg b/app/javascript/images/icons/icon_grade.svg new file mode 100644 index 000000000..f8dd93864 --- /dev/null +++ b/app/javascript/images/icons/icon_grade.svg @@ -0,0 +1 @@ + diff --git a/app/javascript/images/icons/icon_lock_open.svg b/app/javascript/images/icons/icon_lock_open.svg new file mode 100644 index 000000000..12f559beb --- /dev/null +++ b/app/javascript/images/icons/icon_lock_open.svg @@ -0,0 +1 @@ + diff --git a/app/javascript/images/icons/icon_person_add.svg b/app/javascript/images/icons/icon_person_add.svg new file mode 100644 index 000000000..370536333 --- /dev/null +++ b/app/javascript/images/icons/icon_person_add.svg @@ -0,0 +1 @@ + diff --git a/app/javascript/images/icons/icon_reply.svg b/app/javascript/images/icons/icon_reply.svg new file mode 100644 index 000000000..9f99e4cbf --- /dev/null +++ b/app/javascript/images/icons/icon_reply.svg @@ -0,0 +1 @@ + diff --git a/app/javascript/images/logo-symbol-icon.svg b/app/javascript/images/logo-symbol-icon.svg new file mode 100644 index 000000000..12f4e078e --- /dev/null +++ b/app/javascript/images/logo-symbol-icon.svg @@ -0,0 +1,2 @@ + + diff --git a/app/javascript/images/logo-symbol-wordmark.svg b/app/javascript/images/logo-symbol-wordmark.svg new file mode 100644 index 000000000..7e7f7b087 --- /dev/null +++ b/app/javascript/images/logo-symbol-wordmark.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/app/javascript/images/logo.svg b/app/javascript/images/logo.svg index 034a9c221..6ffc988e5 100644 --- a/app/javascript/images/logo.svg +++ b/app/javascript/images/logo.svg @@ -1 +1,10 @@ - + + + + + + + + + + diff --git a/app/javascript/images/logo_full.svg b/app/javascript/images/logo_full.svg deleted file mode 100644 index 03bcf93e3..000000000 --- a/app/javascript/images/logo_full.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/app/javascript/images/logo_transparent.svg b/app/javascript/images/logo_transparent.svg deleted file mode 100644 index a1e7b403e..000000000 --- a/app/javascript/images/logo_transparent.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/app/javascript/images/logo_transparent_white.svg b/app/javascript/images/logo_transparent_white.svg deleted file mode 100644 index f061ffe4c..000000000 --- a/app/javascript/images/logo_transparent_white.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/app/javascript/images/mailer/icon_cached.png b/app/javascript/images/mailer/icon_cached.png index 5c993dbee56a4ceff2a1d4da1908e755be1c5e3b..e94abb7bab5e11b29ebf33c27a4215fbc01dd7a2 100644 GIT binary patch literal 2014 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 R6^Q@<002ovPDHLkV1goft$F|e diff --git a/app/javascript/images/mailer/icon_done.png b/app/javascript/images/mailer/icon_done.png index f7f95a0e8d30ca14b25ad3e83416cce39bfae1fe..472364de41f62ebfcb05337e227d699ca597a63b 100644 GIT binary patch literal 817 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvE4M+yv$zcalY)RhkE)4%caKYZ?lNlJ8o_V@B zhE&XXd&f5KN`OS`LqXM2rHx%W{9ZwuG_=YlwE1peIOXi9v#`T6&1l~~`}?1D5}rlX z_22zj!UQxAFG#TPwEJeqTr%;A-O1od`FqbZwf|E8*DDxsxc-qjQ&xp)opM61_>p{; zH7~n<^fqkWqYM<_H3tfu$!!M;SiY6mFK95G?W4R|6aU)(4O>-r+Ryd7@4x)AbMyTF zcORH1%Ja_u{C1EZ#v>n6XAM8Pq|5dJU*@b z9$6(^Z+QOW|EhhC_S*dpe~#|ys1Gh;d8Gf$=Z~tp!oQ?@9s93v9Em^E`f<8M*VzJj_kdWTVk4UOvO%~Asif`Z`?qFoCO|{#S9EW zB_ParFHODzC@5Lt8c`CQpH@mmtT}V`<;yxP*IJii(`mK z=i7@5xf&b9c^6>pQ{Q>8P?{z=C-q-bh-LLz;-uHFC-*=X`mn#~D zM*#qUc6X!uKnSi5Ed(_C^s|u=AVNJ|>A=crD`_dq2LR-fJAJQjQt{Xu7p1wM@uR7U zbdAS#X=?>*{R8pxzsN-GQrnPYbk(19{QA%~N`@CshfT3yUqaXNJxX>&h7vuFn;9-= z$uCrb^7jwcQEtHaX9vj=)RndrPT$4V={gzw0wffxDr_@0mO=@uWD;62b?y=KyG@ zs=*+EKcVr6IDEShS)l@i$;Mp$xve#=s+fkJ1Re*5*(aaJBg?xW4|2v+*PX2W#o+H|on7WshNDr03&8RSzkurvf_$tY>A23FshOCW({Mp@+Yod97JRSdfe5dR(Mv5kI(FT~)fzgUoBt zPSmsZz5&~PxFnEZ^iV0tvvq7@$4p6hfpAKesWflG75 zu-rt2?ic%Q>ib|eVQvHBqZc4Mif2yy@}9LSt0k)jCW2A`I8C{d)0P|f^08@SwyAg% zEtXslX|Ql<5~IBAqWJc)IzLD77hOeq)IP|bf-c&UG@TJJgH~7(%-^v_W`y%g0W+@o z!j<-+1k&^gmh|SABbe|Jj?Se-hI5h7kFzOk#9WxnWJ!ZVLGq)%M5;MHx{GOpS*mEB(wKSEOZk}^T~HYJ!EtB@K17k*EUH`r?mAqT=9_$@?=Y)o zsZ1L^pC-@zzIbQ%7PNxHv4ZG*)1T^rBB`&f*-CXKswpV4qjrMIegNCqIEPQ%$H2u( zx{FT@Y6|7lZ4LOmq9vf*VNjaA^ERTLz1@rhh0`Z);4Cg85?#|UX4;gM`}+3m;XBYlH3N}%|u5N0bX`&|iW%&fPqXo9JEG{RiJ?Q7B z_diNX9E*Z4q)`m=%DQ;QM9mwapp@w2>i5!kYwX3-oM=xXAGZn_FkfV>=%gF^l4UYw!P}Gd3joG9-i)k znK17Z>%m$TSdm#Z5%@G$2eL!c##;3wjYo>0p1c?{jAAYIuDA9FK8?5A4TW2;q4d@nGgi&A9t$FScp zvx-Xut8of6r%t-?6Ag?!bp|L9+do1}RFIt!MjIay!`U4=;8OO=IV1ZTS*=o~FU5qw zPaMC))eh5Av4ya1JHnm=_1}TC=HAJ1AhHl$a;Nt@7^n5vB?9E92=5o{@1QG-EOg`* zvf$+>DG)%8{{L44k}}7uQ~CI=T^;DvJQ%#)n-=is6io+8e)*b_ZlC5}bZS79UJdfC z_+q1g5<1)|Xf;1x$5`9WZHZ=$!fu(t^|vprYXuHmSE3D*=zwKDk+)Nqw)t z{4(%Xp~L{^f!Ts`%XoWazdp7s!*J`DP1}gU8q%N}SGylht+RB|Pt7Nhwrie4q*nMI z_&_|Tow|$oA19vm!qzxeu#OYF|43a`0~aMG6PFKHggj5=6NkgqwkdFd$1d&EKi(-Y z2EiHGnWMaeK-YeFRd zCRi|eOt{bs6P2jnh#GhHeNDz4yySxHhox??*9t@jQdCBE?xTGFUddnQueSJ~5(PMg i2>z|ULIs$ic8S*Vbkdg00002b3#c}2nbc| zMg#x=010qNS#tmY5_A9n5_AFHW*>L}000?uMObuGZ)S9NVRB^vcXxL#X>MzCV_|S* zE^l&Yo9;Xs00033NklG z*~$Q2H_>qhI8*i7$4bU0Z&eL5!1+(XQ{Psa-@SClun73>U;tppu}P^pacl>`L3sy> z_Z|S)^W~5I)e`{s9r;-fShNTRUiq=8#@@LLg%L{us?Qz)c$kJ-ysrglY-9jn-#&nW zk#XTy4scNtSvvF5Ox6O@P;;Tx2B^-RFMX>7Sfv~wYyjH>dK&?{`IR=SZJ*{=8rXJN hYpD)@E!9Tb=?e@?K{NciD?k7M002ovPDHLkV1mr)n-%~7 diff --git a/app/javascript/images/mailer/icon_file_download.png b/app/javascript/images/mailer/icon_file_download.png index 3f7ac429b86840a8ec14e97197aa51cf7f584b84..24e424d3b6e1ef823acd7b7669a7389672eb2511 100644 GIT binary patch literal 813 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvE4M+yv$zcalY)RhkE)4%caKYZ?lNlJ89(lSr zhE&XXd)YfL+Ec{kV9mV}{^)s?*RM94B^+q;=~RlG-xG1rHFO>eP&+D!IBNR4;cBnp zu{YBD9_`Yr|08}sO`gG+vmuLV!7PRqY7DCefO!k(rs!i5|5bh({^oo4sVw&T_nYp2 z&VFK4QMz&E(_?=#P6fe(Y1<^~Hw7|ua+qyA`(yH1CJ&blJJueXpCjR*)a06L{x9V+ zgOH$3+Ubw#((DsD5(IDe+26EjaABF8Yy0m>15nOq)88MHoq_s3B)Rw4TWSF1^o!2? zn0y!{l;YlNZ)pG&@-MmrRK*MwN^tM9x3mBX@fW=TssahQy7${_asVAOw@=0nKpFr5 literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UOvO%~Asif`Z`?qFoCO|{#S9EW zB_ParFHODzC@5Lt8c`CQpH@mmtT}V`<;yxP*H-Xi(`n# z@#F*vR*Qr6CI(ptP8dG0|Ng)EKWAg||DPI$O#924+yt)mUFUeT<*`Xq#oLHp1z+nn z!6n)5hD|na3zSb>=QC^SS9;4Fz}NOqovr241%~ebt2-LR7MF@mWn}o7vEkjEoxBTy Pb}@Lm`njxgN@xNA!S+pr diff --git a/app/javascript/images/mailer/icon_flag.png b/app/javascript/images/mailer/icon_flag.png new file mode 100644 index 0000000000000000000000000000000000000000..0f14f45a85cd596124ab25ee6ba6e60f60bf734e GIT binary patch literal 693 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvE4M+yv$zcalY)RhkE)4%caKYZ?lNlJ8vOHZJ zLn`LHy?t@5u%Up%MTx*8&1Mb%q#LXja0fFbEsm}JKJT-9rd^S#oMz=-pb^+W!{*+r z%zsYLDPA`(u{i#?#Qt#p!tnWF{0DCDTPyeA97{p{{c!$*bfz8l(hqoHQQEKy2QE2|#hh8X$St_yq%_O*;dhz=2|p2SDcW{;SM) zCITfCYa0GDZ@40n{IdK4n}RRH63zw_#tCW+mslKTF?a|wWHJph!QXqTfMI2L?3Lud z<8wYg{#x}n&epw^cf(A>WAmpo=qWeY{*AG9Xl3~JCHpIbDASF}40=ipwv|k=E)3E| z9P#c9zc;b!DKymXWCoF(515#4Ojp0a%CbST{evmX2J`a^CUYj_Gg-`J`1XtsM5;AR x&ix<#)AD)E^UvkK?HR6bVx&j7U?!4nAH=)FbOo03%y9%sdb;|#taD0e0sy+_+WY_j literal 0 HcmV?d00001 diff --git a/app/javascript/images/mailer/icon_grade.png b/app/javascript/images/mailer/icon_grade.png index 8c212b7eef634924d34a59dbcc9baa4aa7e10671..7f371ab1135d1503093b10b4b14b0edce9e2e5a8 100644 GIT binary patch literal 3243 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 W9++q|8!rBo0eCxST$PR2<=+7@&9wOd literal 387 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UOvO%~Asif`Z`?qFoCO|{#S9EW zB_ParFHODzC@5Lt8c`CQpH@mmtT}V`<;yx0|O(Ir;B5V z$MLIIeEpal1==3^C3IHt*0*sVu-wtz+%9lOyVEeig7G4=#=DaD_a4NRecmCU=92Ej z-?Ab;-)d@2{_<73v|8?-+<4`H!>bj$ejW%&TY0AUZ`QZzt)*$(cG!kHNHld$7I2!d zgZcW$o#``HJe@eJI)(2sL+p<#+kVr7nKBQ!Hp^cukIB1yCA_DcH{kj;P0Rd>3m3!m zH@~kGTD;QD@PW^oOGyWGr!3oGW1z*>lbCBbRqV4qlgZbws?tm*XAjnh2C^1R+`e|Z zL_3fu0@pZ&1@Z}X~#i`x!g>6Lr_=;^9NsnmL%NDajm*=v0l fhVHsl=Q)3>u)pWgx+4#OLB`gTe~DWM4fn24Or diff --git a/app/javascript/images/mailer/icon_person_add.png b/app/javascript/images/mailer/icon_person_add.png index 6290a42aeda69ede03b74adde3a29019df2e1748..696eb74951463265d760a5dd2ae8cd9ec0b8062a 100644 GIT binary patch literal 2356 zcmb7Gc{tSD8~=_mGu9cS%gCO!U!p`NAwz?{$xPXr?oH;BB{3;k$~M{%6OE81NrbY+ zD4Fp6)mX}w$u@|o>5_f9wrh&t^!)zrkNckIJ)h^C_ni0hKJPj2^Sp`2Ne;47%2EIT z$bv_R&LV_96@Z-vaUrk-ahc_!S~RAMmJ-;0;Q#uQW#+Oj7ew{TjN zjGr{$@ITB#NN-N7lx2)74$FJhMn@SR_TM!-*T6Pu%ChR#=Z)ZN*iF31JS#t6zb=@` zzmxO7pT$uh-@S|umaP)2lcquhIi-HuniZXm7OwlQgGti6%3oj@v!!ab?$gdbcWn;K4% zz@+N6F)7{u=tLjmHY%!YIwC&TFvrivs=Ld9xFZ`*UT>{?w3%lzf4ri=bQ;LqxUa}9 zXY|pH;MEE5ZAZDP;F=D8>CeD>@kBEca~vFEj#T-5iD!=c#nJ?PjWtmj^Y( z)!$cmA3LOs#rWckRnP=6w~5|xz=cfs)@@*cBg`@JX2y3K|^!^ha4rH&n{-m&Wx-Gibg};XUKgH~O zBh4NG4mDqD-3rx)6}X4+rgB$b{Ta@cRRQ6qYRX_k#j@(>}X|8lfIhC)%4 zRlO)(^B+{?wnv`c6ef;o$H7u%f7Daw zB99S7Zu7TI$&E+^c2xLCgv0SpwgMC;4jCZK^abaO>hG7GACOTKr`<`2ua@4fkD}6( z9SwCJkV99#xdk{l8WafrlIJ z!+rSVY_0fm`Nc=b3TlXEzwmpaN{3a$7sNp6Qg`asflfm!R?<{>q7(K6C-(^&0z4$4 zMI8_O+SP>szHG;4^{O|dQ9`4R$zxL(#cwu)0pvF?;Ew)e;M4S-nQ)wop(9J_KoV|1 z?|_V@<9^l^`9Y`sZtX7)9rNH8F2~Y9JcqKjzB^T+6INAV4!E15pxfgBrAHMo$c9tx zLVz-VH2oJwmAXUp(D*_G zkhKgP$%emHh`SV~y*)betRNg^!ORHIHg05_Sx@1Cl}0Nc@iQu#sPaEYIPquRQR`Y?WWuUks+Nfi?p3!qqY(#MstiLQU?)m~^p zP`FX)z-yU$|db*?Zm~?|x5Mnfm;{Z?PFoD)p0Gv4C^!MjS zpnB7-PLF~KUd@4Dt{b)olV^&3&CmyrwPD7DygXxM~3=kMa7k{jy$gCpyX zEV+n@e8y1;sFsJIWcOV++qnbC^ubZj8L6>sBw-OjVXzEe{#N4+;F#k4UOvO%~Asif`Z`?qFoCO|{#S9EW zB_ParFHODzC@5Lt8c`CQpH@mmtT}V`<;yxP|7rb6w{;pX=V9$2P0$s6!x- z%@{WqUvTbJj1B8S>pMbF1E=+&*kdk`HAQD|s|q2I4O$o%C)}mGl23uJBOLfm?JRs@IS%CMxe_VPuvCTd}miH<0oore@-Sk235G&8H?6=%2OZhOucZjXwj&hB` zbpCbARN*X!M?ri)j)sW@cA29!o6)MBKRvd9memghZFIkGx_YM1AA_@gkWHg0U0zC- z(Ygvz$bPF8O-S~WpNhbMl_Fr;ryxQIk$;;()}L(zx4gOjIdo+P{t*~(Y!dDSk1}tv z2D#yw1W;7XlY%s^;>MRM2{*+IQx}(2ZWfxq#1wGgC*~s(0)*@ zZpi?(6ei7x)cuqh6er6 zL%+Y&3i;lJmav$*MuEDpu_xir{6*Ssteic+%{z#JHpd7lJ`jcIrKaFEEh2n(lthNrj8oG$c@=| zjFQws{!UH0!gS^=3Q@*L4>KMSl7k+WP-|~e#v;_-6tmY^u84yWVuUDe07|V{)X)5K zU?3ecL!nd%oU9g3gGmISixMxp=)HmRnn%GTv}Sf=>hdXnHfAq8EQtl<>QQd3FQtF7 zL4RJ^a>ZX@DDLB+2}t?j`>2J6bt})ve8*=fcnn=q*qEJIQ&KEycjt|wf;4JcF}&@t zgCEzrTQ>9@ZQmnimlrc;L<~SBNr$k}YIH*dxCq~vlA&p6SbIA$X{_!>5!an(n?pQ% z_b&@?7vT27>P>!+JHjV{mT1}RHe^7)2dLa(pyH?tVqohzOq>;8WjN)eOPUR`yPBr~ z_sMeCKbhdOQUkyrncjzNGiJR<8%ZdX;0QIrW5aaQps&;34><0vgVGNGoaXPLWHb%+ zpCn*pvD`yA-2Xja%(F&k!qJABAA<5p2NUrNO3Pv7YpdM-ncdeeTw6628(WifBQI1r z4*j8DJ#dPOD$)fiWeEeG?%luuz z!W^*m1}jo6piAuSkGMsNiy{YjC8-vG^lL8O^IEQ4Sc&(%QhC81mp6e)NhVT$;hwI0 zZ1z3zXBuWNHf8etSXt#by2Q_@3?Ys=)Impx#ngLd;(k<@$t4$_05-=5;PbdZh*^gU ztbup%38|VHg-t1DPI#=g9p~9mIgggQIl@3KSX>|Upw}U|%7EAR#V*s;_B$uA(MhDTB5l&{Rr8Y~@`Z9cP{6nVJ zcavp$Fza$aEh{i2-XvHKrY%cqGiRjsC1+(uA}wM2 z2Wb~ck8THz*hLe%*4A9CuR$meVG2lbw@`DmT#78Su%Y_?>ckTERHXmvQ@ z2aT+|j2rnP_Ld5T;j*V3bet^UOv8EMe_o zO<0s{hC{#0t@XKxt#TGj{iI2%KDPHr0(Z4pryj5Pv4fZeScf-|Y9(F!@;d@Ye!E}s zbvw483|&aG9g+%B?V%eHuY>wnm#+<#1AuY8TwQeRglT69n{Syy+wVl220weetkXne zmO`W7bT*0mnrMnlzz|-2-+6wVl+BNvAQvBSB93koj7G?w8*9Xqi03^nf$tG`{D4g= zE=lDr1dkuSa`DphGB`5o%}85ReBUb5?D7shhCXM}%YBv&SUAp%I2J_R+|J2WjeZ|k==k?EfnE{5|Z@~;_m+O literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UOvO%~Asif`Z`?qFoCO|{#S9EW zB_ParFHODzC@5Lt8c`CQpH@mmtT}V`<;yxP|-e57sn8f z<8PN~l^4{dMgco*K=;@-}g{qE(@d6O1SEtD+s z%KLRJanYd;0gjf!WoIXLEZY$9!NOo_m=tf=t9?15^~d-t84mBLyXX1x{%xR77(8A5 KT-G@yGywq2bas;f diff --git a/app/javascript/images/mailer/icon_warning.png b/app/javascript/images/mailer/icon_warning.png deleted file mode 100644 index 7baaac61cb82648d9acc63fdbdd4a8aaa7249e8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 371 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_o|n5N2eUHAey{$X?><>&pI!hgaBK>#JO#9RmX+gQtsQNW|f{)BUp!If%6HkJr-c zy5Jfc!nIWH=-i5qc?Z^}e^A=nZarN$cFH?$R!5u0ZRdT(l+K;*dBWfNQ(;2N40-v= z$(5WbM&bs>v6lSC-m{d|bJ)%_#<}=0?(vRV;#K|7|G<^WHpv-j{FBTynOcp%vHwv^ zxy$%?mC#a-C7*cK=$`QkTFeysCfNG|SEK@WO5-`!B&lA;_ygtz!Y5{!XcjO`n-n+K z_MgCn)k|5J^5*`#&u*t&#CF}Tal_1(nQt4#6P}d#Gw!~{>cz=ycWUvc?w5O%xBU_; zx!d>uzFoka9`RU?oW|{wKc`)5-JJBk@%X1t?w8h`m7lz#dZv{H(@EcWnJw$0B7wof N;OXk;vd$@?2>|`!jAQ@+ diff --git a/app/javascript/images/mailer/logo.png b/app/javascript/images/mailer/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..54c8afd6a32b94476b3401ee5d35fe98edf0fbf8 GIT binary patch literal 1745 zcmV;?1}^!DP)-!9N;K4f2~CVPiiTj~ z1u;<)kZ_?U7)?}SF!910Z#1BW7>Ff-L<14QL_sVVLiPQ+us?Im{&fEY@MgM=r+@DOb^|+rvGjLmL`-#5G@=U;bro<8a5-=p@ZK(TJ7OR3 zw{*KVBDT(2B2h>B(9iC9XqAnh$QCFy&XSdvavsK+NXrq>^x6g7xyXM#G^12?> zzK5w70`~&%Z)5g|^9=BXhf>9|j%<&ge6+QDzr#d6j9EhN-_Zu|u!-)7^ts~Xz`fS@wshiYw>7`wi&kFTMbw^FzUFuEhDJ7brUaH=m#?h8N z>WOs?`$HcYy{vwsRz}D2J6XM}LU)t8qM`0(>h?a$vawDkE7iAKX0T0N)1*+DynkAt z`*TZbYK7)m>a#7&^W!=he6gkYxOz^TLiOZ*g8EQK_Yrkb_1UGm?^a)JQKrpx#BXhB z*q8e$R8RhAs}rf_0rk9&bgyYqrrmXf?`t8v)s~k`K@7K~y5H|gGu8cj!*XRiFLOn= zv@q;z4T4^zE~_|Zsd~Q^Pbqbo4f?fg{`8-+>UN;+Z76y~J+(q}vHC6b-#zE;QSVT5 z+e}4)nq0ECt7AP{&zscBQu9ojF^3zLFWZeiJ;>C6CTuGUGS$7iYWtT0`s86&g)DK+o+xKl}1sdT%LUPeuB* zH8j?%A1XUQy%_jp4XvvDs^TrB3&UQoNG~;_hb#L`KgtIy(qF5olS|gHHeXUED$-A@ zsq?;y^jh~h;Pi_0H)`tSk~Qp5KVk(esd-#gk8bhPYC3ItKWZ}!!|GC1(5{SV+Q6RX zN!GBp`-^2xklXcK!es9sS;G$Y7t5TWX$_m^$wD-&DaAD`A|`<&Lk(y2DZM1&crEK? zGW)qL&#Oh?@>LNxh{c{bMzC9*l?s*_|_<7$$@L zAF3%jpV=4@4`g@dU6R`eAIr$I4fuUtLXlw$y-)0$MKj=L7?yS-?i_eXqsuQMqVSef zH0-=`3dua>G2o`M1BwiLvHMs?o-M%D5mDM7SY+6<-N!T1+z+geh*zr)EHbRDn`J)n z8gMi4xrnIM{w$i!1>Pcg)wv6}FCyM- zBT`m_o}wGW9tXY)d^FuI1MQEkZLk_iMO)y;%n3G!gT*pRzyVg475II zYFLmwIln!aaDe1%%`)08)iqj%9mQmchF<}rb`u}CVO8z0Tq0r<$>*vWA3EndtqcQ5 zS9<$6a4X5X-Erz-GIRfDwqK2)U-qik+u=0op`fl-zoWi51e1=ae^$Th5F5k;`;VxX z0G|am0PE=H0kIGG6Uka;zl(_KS^pg~lq#$)0WKk#%XmS$tpeUfvKG&YB!(X3*fOJI nz<<*1Ig(Z6UWkZU{mA@3mU{BaNx@p=00000NkvXXu0mjfOgd2K literal 0 HcmV?d00001 diff --git a/app/javascript/images/mailer/logo_full.png b/app/javascript/images/mailer/logo_full.png deleted file mode 100644 index 82d981fc66452b7ae7cc0c3b8f5408bbae4ef4ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2371 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 diff --git a/app/javascript/images/mailer/logo_transparent.png b/app/javascript/images/mailer/logo_transparent.png deleted file mode 100644 index 6dbcc2e8df3953e009a2365cabf0664561240d13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 506 zcmVMzCV_|S* zE^l&Yo9;Xs0004bNklnMqfSWO;wS2KZ9<)T?JDkMjx<{K$;X8$n z?H}b}c`R_=QGKqsZ6-@c;k- diff --git a/app/javascript/images/mailer/wordmark.png b/app/javascript/images/mailer/wordmark.png new file mode 100644 index 0000000000000000000000000000000000000000..f3d714d3aae3ea8a9991fe15a4f134112b8261a5 GIT binary patch literal 8942 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 AKL7v# literal 0 HcmV?d00001 diff --git a/app/javascript/images/preview.jpg b/app/javascript/images/preview.jpg deleted file mode 100644 index ec28567484445dd96612b642c4b90df996744d44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 292252 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

!o?EnZ2{Z#AqigB4H^j?blPKlvR<7eRUrqgCe8 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 diff --git a/app/javascript/images/preview.png b/app/javascript/images/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..369bed4b6cf02ad3cca2fea5710cb95c540b20ca GIT binary patch literal 514463 zcmV)$K#sqOP)sP4Z@&KB-FLl7C!KWay&(w@AbRhZ;*M>=xDmIwCjXekNt`&2V_1*Pdj_wJA#jLiE*|DQ@tzw_ zs)fa1PJZSfmCAUDO#0VBolXE_DjD)q(AH_o>g~AazaPhltA2~(Q?7P-VkDc&EtF@v zyg~VOWrFhP_z0tw3toie%ZAT@+y%MRLGIz)_|%OKrpwdUiv#!n8;aN8g`fQN*BDh> zYo+JfVI&{r%PIIX3``UaOG>YZQ2$g5445@eIJeJl$P=mI%*Mmz?^|{}m;HV3S+^B-Gi4`JdNh&W|Wtg$n9T*#La^ zp|xmu?nYF7>_5R`Ntf39+5R(K081pTU%wvLUVANiidu2ZMRR!YDvp7H+I87MeR~c!WDBBNz(O^nsPX zqoosn`N93@9k~djzjhZ`G9M}gwUBN?5R`u)t*lXp1ELppuNMnBFQ9iKvq6v&$h96} zxPqSdw;sfvKYaz0u?s)_)o+nX=jrWXSOYMHUM`ZWxt4}|t{Nq*!E|;!0F7!BeZ2eG zb?;NjBoAPfA{LG43A=ZO@O*+_^%v3A)y4aA0?sVnL({ahAmtZ3AheSM1 zFw(^U!1e~<(wpAFo~6G*)kpswERpwtu>aZs)}~FH@cGYw9*vRxX7DPnI1f^U*2q=x zDAf?bwsF=s^Waszf&PBT!X|;5Mng_6LTiPUP0tBfxm5_jBMlv?)%-3lV`AdVkV*jK zc@Qg=w4d8VM6)ir`30<9*@!X!@H7%NQ(WC@v*in*Qwk~@Ovwj@BW)U~lC;u>;M1jp zl=r>70Q94f$#ivf({`sWUDp)`vIlYkx-Kl>^xpyXFACzSiLnX!mSNB=C6-A|l#6FP*}us#36sqb6Cv>L&|M(G{~hN zEJ4?5T2RfHLNzRirNiZv($#@#sUW!&NDvoi{Bv=IVd9Bamq zkxkdqe2{rn$OiK58(%VdeOU#3G&OvwaxrZG1JViK9|ZXq_|rUCb;fAm^E`Mpx?p(K z)i4Z$1H$J!c<`XP!s@Zd9>cTGK8p<--bOs0kI}XBF?Q?;7+1F#6;;!a=7B60i9#D( z5kFM0Tx9_Gck(br$x4OvWwJrQN+iF13Q_tlo@~6R%F2LtC716S&>EU-^$g3S(hXUW z7L6D@nAL=iwl}bC+fqFD+&w&=un|Q?MVLK%HqJi#Y%`cOZrnJ;Vn<*{*8sq&!Jak) zx4pw~|7L47mS*I61wJ75zckW|y3UO#+4KZj_O8SDapQ5q35zk7w|i-6sk?KZaQR#Q_GKJkf9V9UV`IQhy&NEakAAjrk~tNio)2YB#m zw+LPtWU6W?b<@@a<`zLlJQOdkXxPuJM{eV)_#8gyRz%%WN~e%r&SHZhk2lfe8iq)O zW@FgCZWr$P*;15V^aGTg^);|q!g=J@dnh1CpXvHyATJOC@dn_^B~KXd1Id%Eo?&GJ zpK0tw@77na_cx!wxu+b9FMsv>NTyN<1V!-NG(fKapvjMbazS~R{HvQZs*@C5Ih9`@ zo*=~oJzt`HabW?f%8H~FPm**R2I$ga?>t zM_+az^aje)pz@M-9TYCr`4~XmvW-1megJ;Q(3cT|u9E|5KPu{CK)enG4BLOaXYw!R z)3q7k@(I9&b=>9+&|MyeVfb5xj*bqjTel7mJ@gPBc;ErN{r21F?KMzYISrGioX!8v zL1o2cBog^t*6hiXHrPWPTZY_~Os-1Hq^H3hq^NUMKDshaJ#tpeOkZbO&PAtD)>z4;-ZT#!l|d8Y6eu^ zOAzdK_5#oD2L8AnSbqrU({vBb|3R?-<{T{2hndDMMBjQChc>N5cULQ>PMwCibLV2} z^y$b;=OGe};Mv!<;VVD+Ey~XM22!J@e_-st6u|21>%+hQ`@iFcTYiJHzOWcY6&V~6 zP-LXB4cNM`AAR=9E8mJLUFgk4WTm_78=N4NlU+NpgOr~c76#C%pwmDkDqx+P1qqk4 zs$ygrLv^V<747To!;AN=#>O=VU`)Lf#V1~cBp)2wCQ+QGpiVQX8bjmw4Mgwj@;JN< z6v6~fSGR2Wb@{^5!k+8$cfNi<4%~G;PG2|)U;N6qP*Pd}HRhnIeXSW#ZJs(Tb?HH% ziU38O3$AQ*bmE6_T&iSNmlvCRuL)=5IsgfP@Su+2juB)H*yy&}QC{?oL{~`}mJ+b< zbOEPqIIU}X7L|KmmW`Xa<@NQ=#;=>xFf{Fgkg^t6&po#kpZ&~d(LMbVR9^A#h^7jL z<$r*@4+Th0QjYaF>>yQ+WwOy9XukyI6EF}S2UGvU?YF~e$6R?Ew*R^3*X0XK3wxe( zKf&4}cx)B$wb?*jkrm8h7=~f^a6^54J#M@0HuLYb*IqNvy2@lmV8)D#Fni9&QCvJ4 znZglZK80r90II*^PQ09S1SkUgd7w~}^1f#paCw5_HmUhlzMLd=MgRagD9oVxh<1oj zyb4{1H>PNz(E1q~$AiiIXKN!JU8gVYvf{S9Y(F+{x*JbF{THlWy$apk-6$z3!KXj{ zX?*Kj-$G4I4c;qo*xlW3;MZ?3Jh|Q5QmDcQ)&3WLhW#7S(cXfd zKH$x+66BrwW#mmf_5)@Ar2y6|ue^ebFS!^CE}f1EM~xvE;K>Ozoyx2gP=-n&2k7hu zHt#Xe(PP+%6`>`H%@Qq1lLROyssJH31V}ch+Yi;VuVkFs^R<|jBF?E6TM6@$G7EjZ z{n)#u9?#tRG8(!oQ2EjSK*6jtA>KF`7@RPKLAHUFRgjRAiX9aA^kj}a<$^a1-{H0i z`uouK=29HE{ku4M_Go20c^x zRYeZahF79Is$V;z0?9-?fIv0|^$p}-aisf&CVwza^G*r=s4J#|&ej{)q3tSY&T^$5k8#c9e`=CElZK(!Cs{|}t}i~Ln-;G+|POU47G_M&WtVHk!FAN2S4 zW8c1g=3(r2+;ImUfBbPYHa4NKa3t!+FT$*O=VA1eNyy_b`TINL*tlXl#*I4}@wg*6 z%dr)4tGGEw0NCKhoM|6BR*ADECu9+UW>*?%{HB@Xo!gJ<)hw{ZGZ$D7N_a_7njuXO;2{XA*M ze&Aq>bC9x?#|3>+o%a z^zd~*EsGcFAbhi*yp>)u9q+kU9_E3Y-}=_y;ig;f$LMc9fV6lM12!!GM-T>MxN{A@ zgq6!RzW{TrKx0P+U~}G0$azfK|Afs8a<;!XGIbud|GDLVH|0OU-QxM&$NT&YU`{y@ ziyV&TABJK0V1n>18XFtUL)agAiGShQ#n%F4>{UVOn&tV&va5ct_@VC^A3_v;VNJ8b{6;5m}^-w9xe$ob!Y_nSER zGxJe7zA`%o-~3HOHA@Yf+ks7c4Y9xlfEp~41z1{%Wv_Y)RCEeqI`Q<_RfUPUD^+!8 z-spg?Y!&>*q70KqF(ec4*PGwBG`3;spI^YHb%#*#k$*0jnSEdSRXnZ)-12Arxd zXj!8lJ%@IpbK7ckZGQv3&HK^c(F~)v2P_stB$0;daULRvJ+vE?`%9|1JPz3@4SG9$A5t_sV02tlOM<8#b+QEi|b$N&|e+s zhAv5>SwiuUJb^(b9bW;or84k83o4#UCCziM#LBA(qp}CkGp=YlC8kdYpz4Dh14&_9 z{^ZqDx&|&{&}@bQmbinrQJ zG3v{IK{QhV9ekMOf2hC~1BrgF?c}5*$9fJG9B#nv{Rl_8-3HZW_U};I|D2u89P)h_ z~xDCAm0;#L6jH+?ebeiABV+F3DG=br#M_-}`DNsql=1}Lbw4i5MgI226<@4nf zP+4IhFK;ilZG8-P-E|W-Y}kMqGiKn5E3UwW7hY(doAq72`f3XgUWxOs^h!rvJr&dy zmO?V~5<$_gX`nbrnl5_nl2L^ZdcMpe45P{!DvJ?V@9xeXJoL+_v3+wpDz5lXl$`Wg zSs7&+9_~a|^F*2?_jRMM=>R%+tU>!*&!T<(GIZ~L6ESonm7hQ=FM&iliHP|2Chv^y zu3mJuccZJl3q9TaFd|8?{Bk6!Cn7a^Ceo7@AvJa$V#U=w=$4S$%A*|6z8e1gb)KV~LoQls+1zRLcebKs<^5<`@mCx_xg2MmdK%`;nah=MzHCgOvBN>2=1~ooPP4HP zT+lq%HFpST#Q>0a5!H=EBFN;YP+3}pXf*0R6!mucu8)ti-o8HbLk&GWz5K7wTz=l~ ztgck-UX(|`1g==j`irs%zZYLRv0i&KGmtHhzVP6e|JPfMn5XqI+)6z5!q2mqV z0Df$>Bh%M+wj0zkjF5nqp-FZ0BgM*GoG-la94@=$5+qOk2Ffq`2SDpI$OGZSDF4KI%fU4NOjR_FW=pxsqo{ht8$at85|z0I=ml}mX;!?W)B z;f}l9$3m|5pQZ(u85|EEHu;a+tFEq_#W20pT6HxH!|-7OarpL-iPoRXcX<+%JKB0Kf!6I{}cC@OA)wADkwb&Y+uFl zw>A1q^<@S%w`B-jIN>_`G(V7&KGg)Ug79RunYz_kETGOo0XFBE%8NsXs%#*nJ()(m z>)SR{V4$|P30t?`i{IbyORQhN9`onV$LBx)d0fK%(oE(Eoy#2pB5-y87T`B)4IJup znZ>aEcQ|_Q?7tbn5?_e8=1W)OjB6I5TCBc$7oejXcx#7Y2C}G#d*dgUp51FT19y4iR!bleU8D*Y+Xm=x?{L}N;v$GpD*WHHv z>8Bz$$TF}DYlTqzrWeut;vHz?L91Bjew0+^qq?pf6}4rk99xEh;(WvsQ6y4vFq_fd z?p`y9)x!g9E%hyE*x!uSh7L6CYsR5HO=vpUhVDcqGIP#G=BNviuA7fYUJ=aCZRRAr zVH1L2;R}8~RG<@_u-vjT5P__=_0OPt{ZcHfiQ|;{GckSIRFst1OJ7y=YPA5p+=C2P zT{;4Q;0kS34PHRQD?;)(KfIo0MH!S76_{x~eZA=A!6^}}>gK;ay}jt`>oeKDf%V0aW9!|#*@T5RT zH;gZz$Ex8a2$#Q1I2>M|%fYyTl|)E6y8Su44dJ`@xBEaL*RhpLURnkSHd0Qm51;%C z85+Y)+Lcoo&aMRt5@DKi7>40*3xxgHv}qIm@P|L()?07IjvYI=Uy?@MxD&AOgim7p z^chH&ie)LbKSy`QkYJ2shaB1I-8UK!-E}<{Ec_fsjXKIo3<{KJ(`{MRZF$JLTFA){ z_<}r?cOT6lo)~e|;V&B$EK=v0+B#{8d-*88+Ld0qHc{zl+QWwrxwlbJ5KdY#rlG0u z8jCSZnc9Ve^^f5fKmQTdtXYGxW5?oaU;7$9_OXwlxVRYaCWtu2%lm*|tpQ#?DB>2w z_8;#9`_J0i+Kfvty%f7Ux8RgdEkZO-4yGQ8l~-D-4E0S0w(U2_gj#JtfHsixwLlN# z#&gcbl3fhlfYJ>vx-C(mp(-359+HR0g)pIpA)P=V2!+1$t-U;mwH)oK38?+Xy@-{L z0zxMM!5}#A>uN>ItM{XE*^TJj_#%o*QbH$Z!r3T@02Ac~egWOQeuHWD}TN2a#NV zIjk6@Nc5$h=h-Kx!8nY*9(3=13tej-LXB|%XD^(J+0!Ot#E6lI#pCjjkxByEVas$J zde3!>2DQU7puDz>id*5wlU2D)VL_S)k`n0Z;cdVJp*=isW$+-C80V^8l}LrqQhD{+ zYdf0=@QBr4B7l{bP9i^*w6-rs7+6R!%d@d8gs|>jr>88L7D2j>?k==-bfL3@w*?R6 z^_$=0HGJ3{4EkZgxB-ut0WDFdbTWZ7uUAy5lmDQ0PY%52^b3g4Q1k2C9Xq$-vX5MZ zt%->kb?wbysXT={Ieb4b_}i3!4-UT`UU?N~aLI57U@)NTnKxJhmzW2TFnJcnNOH1)?Z7mesZf*j8 z{yMO1w}Bq_T&!XHKakR1xxv@j#rEQhFB%tIbUsf0?9r&5J`zV7L?n~Xak1}^f%;~L z3wT1VC`0O8(0nvtWl*_u8wAMi)HCgBuAnxgn4y`?n{vee>Z%w@G9dygGV+Glym~tx z{>?MUTl6_pU-@$|>8o}@16+pw_9iqwcQcxvy%GI~Hlb!*F{U3s5o2c5ASr@YV!Ku7 z8wu-KLkqC|fPqOO_?Cnj%-YNQsIHpv;DlX&p0|@5v+e74Vf9mQV(<1ABqyDKiVMGw z^n^twEh7h>bAiDumDGaNX&8W#VG8yzg`kk^?nK9iXVJg*VNAG)rW4xKt5SdDE~8P2K2XOD9?IB7#{3 z`6(3Ur_ErNw?&WyMVxu&neXa~ ztUc|(AKwHX*bKDx2KiOP_W#|m|IzUi#$Uf;)eBg7-fYCwiBYbR%^dQzb@HH9qk%n# zfc*_XdpFz(uQ^uji7*u;W>>^J_}Pj5dB0vh_0%io@?~$*ajyY#c8(o&@+NR{T?~%^ z7*TizoT5Z&2<%*27vwSIC$qE@zs!^u;NXr!*t6YD(qc)8@l&wM7&}wVuh9P6rtU4*~j64{Zd~Z8Yyt-hSb-` zmoC!a8Y=|ULBZn;DX|5tavY-L7GY0cA(lSzFkXNDaWfEDRaMQ~FrgSyQr`Y$YMPT* zu~9mf7{yD6CutU@;xT0U&{UK1K$H3nMb%KeDwArxnewNpo3jLPKK<*KghC)=2GeRolP_PG_3_ zcIwpGZ3W82c0{qgP;94k>g08?jKK04yhb-j9(wkdS9ePnjvqG>D_1VZ##wRTUg+?y*VF5J4+G8+nMaQ2`3@Clw_{CxH@&T29AsfXB zaX>rpy`vZwjQ~=yP%OhR41W_Kz9uM+k@@zwzm4Dh?swR_bq}Uay8vfj@*Ny|)_JIz zG#beQJ_(2zo~!|iZYB4i>Qa53#_yusf9V;GHLLH&h>>%UDX2tfP>L~GXJ=I?OxD+c z{1Q`D4~)q+fTpY0S?5&BbKSgBheJmzs7_8@)L;@L&vbmdwoiF(+-w{_CI={bNlth)rAtnD&$kJ(q(>D7-+EiOs&&)i|J*L@+592fIVVq2%2Y^zd{YQ)sBcGIvD> z|0kVb$mC@g`$#l`RDKF?KD!R_@;ao(E%f?8MlaQ=YxjEWz4k1jdDiwv(R6+N3`P0kFl~SFcrs?5sWthSamX)-VE?Pn zVc*lYn9q_mQxQp|Luj+`!8_=2$Ygvhl@A0SI$;R?HGZk zo?-o>wzbk9B3Njy_-gGiuf=LJaj?Co!{oECWS!2u_9F!8Vfapcg(Fa2QI30W{1qRp zb>@d01_WV_(T76*a}bJLK{qyz6y(CAwr&_WoxzkF5Dg$OC^@Kd7#M9@Hf+4GY~=|a zZTUgARi_E<*0x4XCrHJX){pYp_r9n`~R-k|7dqt@AXrT8IP*5 z<=J!V90DbS;92Yq66I;L;|*3g|01xs zvUH1dwpex5^xVzZ^T%sZ(De=$T`&uaE;$M%)kWT6&kUZxgwb~L+8{n0mzRp5ASKQf z0>omx!n}|#?$~9;O0N;)DluXH7#Lmc*#6YL=-9rV2jk`=nqLw~FBI57^RwL3vnpT= zx$G(qjclr&X21m($D zaR!u8#n#EAD?`(%&9eDoDt=`MyFOA_`{=~iE-M0At?eD=mk<+i`;06*r@FPHjV*03bSq4BeG}9l(C24C<;epbW--jEw9fxL0@67Q!|=WV5x5dx6a3b< zzGWWJ-q6^M1;=~_XMgm|n0fpH6qbv(*4}(bEAouK?6>DbuxzJ$B!QLeI(LkgH6ncS zS%x>?d=S&7p3nU;_4pL#zjpmJi4$_GxtDZ4(>SV1&3rc6@aLhyl|X0Bxu?IB4*a}2 zzd9SmRNf5ugH--9K7Y@}uhtX#dv{*K{PmLpc_hsVKrxn^jf09`;aO9@x0ms8T!_Nr z<8b!bXCRqu#sd%BkNfVs5Bv7*!-NSF%x#57Dv%|xiYd3)Za%({;ZPUD&Nl0aqyZt3 z?uYHalrM+;(P%7s{ep96Bflt(!vWF8y?wym24MSs0}ZV_kk#u=m^_(u-u5%M9Bm&O zd~)T+324E?VMtiKf$ynYM#^~t&!mXBhryxfVDXM*qZ3@X1Im!f(Mm8RdGM#WfMpM0 zK^#&SLCc{w?0jPr@}``Cc=;G@zP{%D*!S1(py`nxW7@oOoN?6&sF_@CevwUX8a8kz z-PSW=i(4cjqtfNor6tk{)J_|T@|t4oc<}`^yuOSFu@+cc3WEeQhsorSz!6en1Es;D zaU@4fLjJ6?aWGneCm*~UuP%QAiHL!kni}h{cV8huwV9HR4+xqtol*-5_)y$BoM8%5 z;ZG8&AUurxX!0vR^%rMuwYGPf^++WX#GmnZf~*_uJ?3^^cO@**WAS(bg+&E;==Phz zDkdUPGZk#8gz`fu|L+@m?86`-?X}n9&wsuZ?d?%4JpMDd@H5}V^yB8C zptQjJAdVWG@;nK9F679Qa#*V~<1%MXwjbyDtHePQ`C~mu^^L__>z_b*#Ux}h)e6Uo zBr>K?_dN%Eft{?l7-1ALpNcchBz!vO85*b0@Y6R8_<~ZBPS!bx0s2~7E+9Xpr$?sb z4GI|A&nWGzHifjQ>eTAmp9Qsnm)_SG;p4apb>q*+6<3^(wzgfk?Y3L^`2I7Rnwl_m z>QodI6dW;IEzV3FSpXbe1sv)Gwl?!P$N;C`?+N^k*#BszB=7opXU;IUgbfyYc;M;) z@3@ruw{ZtlQwc*7SrIh^Lr~Ui~y=~ zid@E`PVuO1gsBbTHHPytNd&LN zmcicMUYQo4Qxi8%&2We{(Rl81~Bx=k zgY%UCUtK*CYu{Lj^{=f&X4YAVB=g~e!N{bpuW~9k2wF!P1}OjU3pf((m`f1<{nCGf z- zk98+}4Fge>psBtdjSX8-JLVVH%3NJ>-v312;sCEck{zjfZ1 zz@JVflzx&4c`L1KJ?g4RPy0H*$wUIB<>k2Z_diE;)NJ#7yI~jrC%U>XkY^br}KqEks9d->nO*% zb@yZPl(V_N8~4gkr;RDQStJLGTr-W6JP>dva}3(A^=b1HM|2?efn{-!-QW?Rb*O1D zNEcYs;dAd90_zfVui|u@M&UQ>S!N19QaNNP3rGPlUs>*}cf^oNO~w5AXJE>dGV?=3 z;;WjQHf=hh=VJ+sDL!4BUBOV2FtF|r(9w%wIKmJeIidRc$;XU0SI=n2jw?Vih`pZm z&A_(({pjlT)S5GvJY`2#K#^bOBSL1J?lmoArOQXI%Q)OHnJ7vWpm#XCp{bmAO@nIg z9&U+$x=dEClc&HfIvrgMtsOjwl@bRchlnMAAXZ>)Tepk9jp#t(!pqFShJe221K4}x zmyvE-g|n|c5hEs4`Gqf=Fb;*V4gyDhVG5%rS7ZPBx3Op01IV9#3SybctorFg2O^M_ zNFzCVCQ`G`#g2v!Ja*4**#6e57*SP?!c3tR$fA)_8oW{Mh0cCR5mxwLNEx23)CGau zyxH(7IHh}Ey%m0R`HYa~3XcpLe1?)=;Zgi__w;b1*JZ9;65Dyrt#m}U^z`;)_kjlU z>?=n30c>ezE2MZZ4o5)a^XKno$c14EaZxzIW*5CWy_wY~u z^iOzm{bo#`eIYKo@*i;2$%~O+n(xJvi1T6jJ|M@eP_X7>o}cAyCv-gr``&yBXyz_oW*hW}5LLr%hgt8#VFeopB{>?AF*US@XfJ}A3a^isn)Q2JL zC3ojkF~ewAwU0E zoO#yys3-^SxZ^M87YjQ&IxuO{q$9SiP@EY(wUl9OA;Vf8#A@!wFdRXMj-6R^eckNQ z11iJ=``F(I>^w-md1W{&qG+(kiMIP!T+#j1uJSWMo%J!YBGbb_pF2WeEp??cTJmK< zM)NYrvqqxCEkdqb8P1Mi;v55tEUhR4}ZgJ{vZLg4c=8NM`AOe(y<)o^RSe?e^1@9yq4C!4LU zt=P3|7q)EKg3X&ZOTSyUZpF@>J8|gHA+wxwfVg+GB9u$NnD2oOuokD>HUnz>@$*=V^vtE?oD7dEY5!n&5#mLy{I2IP)m`*Yz^o zl|$mJ_&l^8YDN8lcQCs4Xzt@i;0rJ*eJO7tbmm@R4z1=HUBN`@F!=EW1zfbxRQ$Sp zG}lx6ho&ig4mJS1dSWtNwGDNA*}o!A(a}+a zn$e4K+;MZTZ|`~@#QH0qdg>{p(`oa3tXORDM<)ex%*l_<08>gB);9nLJ98?9VHh~D z6E2-^9DU*3oC}DRSGx}x*mp>Dl=Jy`CQqiMuRg$C4(d*oM6#jGR1I&nl!wRZR(aO0 zTLC45p_EXAPL8por45B&N>@jp=CNszx;nT-nmAr;R0Ts}I#`Zhe|kNZ{B;#Ze)(2p z=AMU^SMI~!-+vY-T{aUlPoC<1We`3UDuZVwWJPi~kPQcY?$U+J-2G?YQVYCeRd`zGVd>*GCI|pZ+ zaR%z@CLt1y>X|~o@Kvt~gpQ@4^6E83rao73={g7c{5~75il~CiB_C84@OOxl%Dd8<`o!EEK+d4?`2X-=YsB>6-2tT?y`fvw8lPo82QCN^I&T-rz!#ili^|c_tP58^B`UZQl16i$`#~#2Wy&a z_;c-ZU|{VXgck%?P(Ea#olCiFJPoG2iVGpU0ohfHZoKEJ{&e_&BQO8rEqEpOwN4rZ zd~y;)O##fK91f=~hvCRTS67!AfZD!&yBUlUzhd=}_>x$CeZBeH)YQoHb-?KBGhgg7 zvD@FU`rSMaoZF(p!eWdaI~Joxjlzr>Gt5;MP55{^6NO3XUpIK)y>X+2v1d&Oo_z9Oap|SML4JOvM^~L!fbyf*ldSU`sp2FJemoK#ieJeaMmH$v z6@*`xPuB+Oild-9544`{J@k219<(H_0J4`)sTS>b7Z2$d$`1l~q{6` zRZV#Nts8O29sg(QnF}ts0RQj*{Xa~bHtmQ6vIHmZ@Br5JFB^E{U~XS19Jc=hv;XY0 zD;F7aPMeNgK#Yz3O+0{gu-}^c^gB}^!$!{BN_qr6_tjH~x@J@bMnm7lrFISEss)Vz z!;cY=k9_wFtBy}5-+~6U47r>wgn0>IOcg_3z&UbT*X+c-|GNa$SN$I8@e8rz=a*vQ zm@b_5+2hSEhQXk;U5<}T{rfY-g1G%SZxyI;pI8FYH;JiV^^`(r6?}LREXCmdOS>kqOENgyIb?PiY0z zKS*6TeIouaH z#16>8htR+JN>2A2QOhy;&2N8>@Bj0Eqvo3rAyqpE0|C|N8kYZX{<76A$fs0&+@LlL zd#?2xvs?$&N2M{4^su_h@*vBLSh;c~RcY02P1sl8j_tcz z(A3h4OkoKoOqhVhix=av%Pzy@$&)#bzpd@>qCMBIUvHjqb??3Rav!}23s1NL^G-Y+ zMU};V2ab_f2}*Fvu>W-qZTAIW)S!b~)Kegq4x>(u?3`Hdwmm1)=#Qa$S0(Pc_3yA? z;Z?kk&h#q_g@%r<#HY?nRDvCW`P4Ex7?2_)ZReEL86M}^fCF<14W&!-AVT3184 z$))|ZyfS!BDdc>i&O`|Bp@vUkUda=S87MB^gr!S=fyW-b-3)Gj@rz%?r$7DaBX&O4 z_7>p3UNi8_E^BT*Z2yPO{DH6(iB3)@LJNLW`j7eeak)ry?xNs+`jg-BcTjs zJR0`Db?>T*V46c%@r~<#Az1N3M7E>BjRo))82(x%E z&S$8r)*l?YbHiTT{o}__`LUm%WyAAG?^%M2zJ59~<(cdwI+tfWNt}(--VN}1IXZjz zUl-8L6Z`ut{`w824Ge3!a3snQ<#iCjw}LbSpARFMu$JRXG*z8LcxkS0HS55S)Oo zUcNMip12fS5NfJRk%}j^(je(vf&OJA3BFgK#&s^)F$RL`=6kG%!P+s+DwNxTRz&K z4ybiTPBj@bSqE$BpEE3XfCd@co=&c$YvND86ddD%^J4ZFuOR zhj_qh7m70xj2&HsDHBRDd0Z)~D)LZNnBul7V)`_(s5p~SwT3~4+@c{qpw!XTgWdbu zux>*=URb#kZ*6KoIxmCs&O0AhUwt)>J@!}={|6n!sw>f!;*j<&Tee~1l#_7Eg`dNy z$#wQ|6RPrNWcLdI61*^DG?^~<5T@fF_h@19FH|84PI8u(Hm-H{&Z9dR~^)GC~>@j<>|Me9({c|UvVsxp7s~m>5 zja=mF;{DdtW?-*4v+MwHpqbO+_wAhq4_;Ycj_d~`dWeomPj@sj+jBteW5{rO^6#&*@euXSu3(__UW-`idN}u=EIi z2TyPl(mb?WHc3|VFoiyR{JNvXQ81*AZrKQb16fv!%uyGjvt$yUed19(cIWRAF}g8g z#3-avX)tf#DH_Pnp?l#MBR`8emLZqZ(bEnIBj^GAh4czSpI6i5Zk?E>Tma7k`gtd` zw|60(P9QIxM6)=^PI6WhblLa}D5o7xxwcJ^kD{olJ|30s?C$0|Cux7x($6e$RpDpA zLnz)>H8vc?vIp-((Xk&zB$=m?2|bhQN-yhfSpIXB|6m@298CE5mw5t$ar^W8^}ENP zcQCIZ@uqX$MY`7~wBAAWrLUX(saoz?kYEKUF^MmaA2lDXuMvo!g-%@j{)C?o=egRx zYP;#`Puo}iq`l1>JdY)azH`nEl~4cqqq0oVIzq`K=Nnr2k8}THN~wV_%wV{d|II45 zz6QlG4DSaJeY9@fI(+F%U&259!$087wJUMV>>_;mGqdr@i>KlA#bYpYN+m{C6__in zl8Go{v52_^o=J|1^XnLP3eFhi<@k6=CSxcsNn_f?Qk=244ksU1%Y&Icc>Jjs@Y~CoHV~$vyBqyb4I5+lr#HZn+A0*Nq$!YI6TJskmwnUH`m>d@#9bC0n9wPkHaPx z4o}hyn2wVG{i4I^;zBTe+D^U+C*eUy*D0$y(1wyn>tK?$wDAY}2M!%=yRqPVT1Lwk z{QM&*55;ega*VWZuKov2*Ih&AIjG(yT8oFS?ihM{#^dCZFT&{2z&-ce!T;{z^QaVN z&z?P`TM7l)ytws(#B1T^ex##=9KGPesBRAeyc)TxNZLbeWO>8~~(pxWC2 z>^aDVrd7O^vi7Wdkt!N=Bo$SheCZH;((k?ex`of{8(YPSJO)0`_v)nKPYk$BX#uvb z+KASJjVPFV9#}M3Nzm4HzVK)$_`*OH7+nrZCk&rs^bOw_(d1=J!Nmgere=}Da2Z8t$zl2T@v7m`Ps?+5 zn36~SHMDi7fgJx}^7F0osOArXY{5Bg84W+WTz-c~M?1KjN6R30x}a4qIC2BC-4(^g z2o6KR>zg};$gG239dAD8Rjatd+wi@Te{m-0XzoXSdNS~p*%2IF&8$^dgC{u*LkL2b z?cKW<|NYG2T(>u?jq+|?=ibuO#`}u(8ItWxH$-F-)4;@GH7<2-Bemqd-!Eh#u z%9sUc(8)KpbxUHh)dL~*gI}-vi)my_S5KY1x&C7aUSEFlTw*Vve<)AB{&LC@hnwax zlZ=3J0Cmzuw$`>hjH)>SC!8({NUxV$UIEj7vgkt2JLIz+P&~NaM)moWbao zWm^1>!|evCd{`7gQ?G13XdKer>n&FtP>iZcl}S39EW`EcAUC-jI&*??eY~9bth3mP zNBe&FhP~LlY6sH%E!3=&r=VhV$f`IUFl!573lB2xI%x3zGSJq=%+(|YG=dI8JNUeK zuV>gO4U*BcfQA_?gSj#*%AcpWkh;s46^QY-Yho41#^+ZeRkslFiaNOpA;O|g9=&O| zGH%>F1_m;LQ0e*72;K0B@xXECTo#^uiQr$NvJUw?kkuS3!;<@M#k!TtP*f-aS=HP* zB*DQTc8Q2FT{_Le^yNZvD*+#Ed74bSkpy}eEl2EBR-SacDK=7~2RVOlUqAYI@F!D{ zhqm@E{{+^M)f8{P?RFgliuFZK`S5Ge@Ji?qO1Qbl(T>wa$%1^*+ zu)Mr{tXlOlHf`Kw2BFP^@v=a!ayTsiS;~UtP$y>sq1vaxgD<=(*?H!s(GoPT9uJe! z!h&;wfhg!guPmgEb7_a{d8E|^gsvLAGJJtF4X>KERm&qFPi}k;3Fh7!%#VMLzZfn8Qzz{9J>BhM*uf>IX`C1Hj@(6D(?&AUAORGs zD)1Sk2-yqdXfe4=a6l-^(&%XH!Ja*9P*-=nTn}Z==cR|-yYxfKGS%17;ZvMEA6^=T zP|JsmCC5p0^J<<`TH1WMw1JXe*ZzTdVUq~J%UDReL#CzD^*P~cTjt6q4!cZeXO#Q; zlW^AA7xL?^c;JD1@Wc~On89svhTc#Gw?z#_5Nm1)Gq)6OZf550ESa5Q`|nE+@&BWv zrc_@)a$S~N^XS+dT<0&h!(!U6_*Hv6X6wqoy= zdMvzP4kj%aX9a-<0AgjA_&VfX9%$rqZPPkAG@ZK1OKdd?#5Qm)_e%Ray(8Dz`W5?n z%@umE4yw0E_ysS&I1k&`Y({HS7c%qC2Z9D|;GoaFUAz`x0nhxYIpbFAmNSj)cn6|* zBJmWGHPextcs%wr_hH$6w_xX{wWugBMQLe;{aIo=vuZE249IzzDqdESbCyby{_#)B<<2tfJc&dS?d`32_^#WKS$HX8c_o0BrGbzA+{zEj|KY)4 zac2t*89}8&?{lCEx=O$w1S8KFUG@$oAG2k`AAHM|k8IEAuWpOs;dN^m?p!g1)ImF* zbFXvI^TC3D+yEuquQ+!s!}k_2^N{xHyy344zTZHs5W3@zJMfjSd>O5cTk*B4=HZ-E z##w=@td2mKPR`~OIQOb9@{i*TpGD4|R*5;&EBOnmZanbNQatwf)8>~8Yin!YcdN0) zM`T`p`DJ|l>tDyMx88=@x}$N?XTFQ+#~x#TbjGcpZNsg(joqHMAI_Zli+z5T=O3uf zf^yGf-0qBm*<1MG%y;ZOjxWKOeHw`uG?V-z2`7hW58}O}@Y<`lVAA9>5s#&mR#5s? z4c5_BHz427hqS!3}?XfcU(K;RZ{9ra z_a-nDAh;1hEU{vEU%P>~8v<{TY!TtUh~m`LW#(S zs>@{jsp`S(PMXtfr%c~COy$~9!Zxo`ASI8-Q`(U2kkV$(O)-B(N_T~;8b=FK26z3td|0(mFL<4^tvwc4gAa&TE>NGssAZ_Qg zvD&vgB=(tar=jcdPLv92A zNKEqRA@v1A>|rb8P*E^qJJsqk|1VQ%D!7@BH^n~r(sei~y`XN;(IR-e zdEh6VN}#K|$4?`h-wpVA*ObxL3!3|YJdB0pvG2`8Zn=WUW`t8|1_VYA2*WWOS2d*oyagM-wRxQ5PIjs0`2YX=4a`D z_%GMvg!!eo?sM}nv93h6C9abYV5oJ@g7gdJUSo`1W2hS)RvxhhwWK(O1+%I#V{$o` zKDQ2kz2kmNojTPFWW8TjV)gd+;_kce#sr;zd z%7}2wGe`kHiKfE8B)=hnIv;(*pU>qf3uLWl4sD>)((u{Q5kq;!LL7J8F=%Xf2e;q; zSFBmH1~X^QM0t7nkmv=0L3|x|VHLy9Hegc|4io;i?Y}mkjXRntE4Y5bys_F9KjM>* zdkz}t>VFl!)O;9k01<(oNllkfB>cAA7 zjtuBq9e5i9I}q}90oBKE6eh*_~_AC@#7&f%i*;EWQ;zfHp`a zr5n=xP{M0KTb2a{Qb^m%&Sgkog~_|Y0sSoTqTZ7+WiYwgVeJ6;0+&7A;_Iiim^bef6c@MSzWeUP3opEYQKLp- z+_-T=wn8((hxdX?hBpp!{n?(Y2gvYVfT=0^`_R`?kKTse=xaR)qr21OITA|_h^?XY z|D(}Z^!h2sj<*j~l%bh7>V7FYNCe&M3w?On9C89=aRLAHM?yc`1yj9>HZjfk5X>5?IY6wHb7InIdK&c~mh& zfPG<_vP@PJF8%;}rqa~X0Q4=b@Gs7i6NanbF?NPOk5o37`l$JJ{sWVF*LGV_8yNm; z(+=_L3?B>PO(z}Oj7*nsPUcZ(g9eCVx!1mmo(+#m*zPIL@A4iB)TM@F3R1IPt_2 z%`>6X=V9~)`Hk%tXX{zsz=O3rl8U* zGf*8F81&FMS`u$e2?{Z}jG+nIC~fJZOaEvdZJ8hir@kFpGC8dSo(AAS9`*`1&4NpaqJ4-<^-#m|g(N0~l1qGKJ zh;mjhF=h7ZuHIta7CzYc;i_t7DVrk@V1Bd8m~`#Xm)~kLfgo&t`ROJ~Wrqc6Z_aWe5Gwgs7gT%5F%AzN7`P-Xv@3bG27&esl zu+p4yaEY*WCUV5qsXLvdR{u&4SG-+gmG9P>_ep$`R&) z`VuYXr@?~wV#v;i(k?8h4AbNf0v3|r(1?nr|6CMw7^`E34sRB~5>tNF>!AM4RzD-) zT9pS~n@Yys&zrdI<3>20N+Mx@1FMdlowwYG^o+9+FR!(E z38`3+JO|BRhUNdT<==>-X$+e8`8VDYHuC8Dj9qDgJ zUtmgU`#^fxAlEif?tSg8@EXK}R4z+94~6{aaUb}CI^bW9jbQOe{*o`|=$&DBKf=L- z2l1sZeF?9>_8h)(%~4n|djtuBsLD8~7j*_S7ok=aA|roldXQoCehUkdsH-i;iz~O{ zr4_4j>Zzv=>6gfIfu5coJpcUjX7FnH@)vQ`@t5J;PhE$y>S}mLd)RVmJ1*Yt4iA_b zEV280 z!pShVY)Hd{)XP^#+OKLIT&CnQPCC<#5u0C?4mAAe=+c0fiORr$AX~sC>^UR!v*pbN zpANTMCZJtt|4aHn$wz<5HKRD_uMd}fovokbvoX{Ra=mQm?oROe>TH~Q?y-31ot3!b z_S^XHJD4+P&X9fdp&-F9uL5{=KSOlPA&FzEMuQg8WL-`n8 z1!W^s1|L1U$_p*I;UrJdF`HLLrc2B}Fj;_7lFtp1jhP&{G3<8mRwG$=v~4_EhCK^* z%6j1-KyNe+i8I6I%^xE342^g$KBHNZ54`@wS~MPL!7&%kMS)1r0rRLIY~p>>&~HYG zW&DOxfY#G#GrLAit`GAOGqg;2Jt)_W0X|{w>9go%lrJudo6eR_?0$1AI^SA?rq`e5 z5#DY-5gvm`BF|$Tfo$mPXZXDi7(*alS0}REa8Vrkq2Z@GscA{Vo1>p$-N48Mlti!AE~}iY-VK4F5B&erMjF+q|l6A$jOM)8V3a zl7ivSr--9ooM|y%eQc>_8ag@=RO`Z^Bcm5#6%TDwUB4I#zsj{!%ydGz7n+w&+BVzE z=-GI=Gram*0k8c0eBAbzo6ucYi}ZwJ5Lkc1he}_+p!vnH{0}Z4k^ijag2t@_MsR*- zYl(Xe=<95R+-Kt{*Zh>U6@4c?XYzB`PB^|DRd6AC ziG|6J$^%XF;Q@-c6E6<7{eKH1_}FA-9@vfnirz51yCAl>edQ}(!SZE~<7-!2!7B?i z4uaMZ2vd&g;0gC}efb&SH!3O(!$+&EG>xkAJly~2tK7~-aneaAy=#ZMi`5x*MVaCFYvBP&rdAF>JlR*xO zXceUYH(TI`<`253e5o`*b{=WI_NeC7;tbQefew98K26(%1-+!Q8amX$m1s!DR6|39 zn`LQ#r(X>bSgys%r<{#c@&N9<^L8`HJa_I~j2t-+6rAd-q#hj+2OG z%6R-aj%@Z{Ro&7M%;NV&M~*GOzNfbjb+boXUo5ksvj^DUXoV}hHCJ>`vu=PeW&5dN zmm*uxoU8<^w}4f~CF6#+CIU003sTnOUk#3#Pn`NNKTl8$gw*0h zkPIFi%!~G5#XYZ}Y-BNJoia_{%1PVWF5bZ-wA;Y4vV>Fkd7Et*fqSu z3qUfrk9GMKo+4Hdt0<2l7A1A!ZBta9!K8(Cm^`-%(at^Cwe)_pyuA|XNyj6aE!;30|VfnJ%`^{=Nu7Qq+9AHrGDIp-g z^1M`^F9e5RMXb15$OBhjox^bTbcWhOXNAX*SA7_U5X6`9e)z*5;`ZBa#@}5v2Mgzn zuup;@yEK@_c(Wj<0LVUQ!i=siU#?2c%PamJRb7bsLmjyNo+UW;*ke&wSBE1F9UUF` z+0TB4Z-4vS=MXwb>Y#Tb|y0Q1Ut zb1L}y$eqhcx{MJ$VA#dHm)-8U#Dq4TM;bOCrf(7LMlw=~wx$;B*zpPvVlCqOAc|0> zCCy2J@BmFn`JjN0?w*Aye7*9Q&K%RsIsL!1?bY;vaw@;l95PJtGlef5T?Nlz+uO~n zlUrRr`_~=g$kP7M)I*2b<{^lGM#nuvTU#L}Pd*Lf#^sw|DSYt32T@&JjVV*699EFq zX^D~)!=w_1<$DZt^a44luz}JVr2Q}7vksY#jX3MvbHHqQPVtvabE|>&juI5iIurSm zP5`Q>p|`ajO)vZf?QcGVc*#gaiz;ER$a0xbnF>e`tb}(Nz4(gruYdWu*D!6-1nKZ_ zasE|93*2$zmGc`Tx<*PD?4jkH!`S6>u&iI^Q;#>FS&O-+O~a_k)d)VDh?!^CY&&3}tqb-xL@%&p z(xrkZ1@L4ZXn*;?_6YdTD5L+9pdOQ3T~Y*g{lr(#L~JCJC)Y~^Op8B!ASb=vPB)c$3&B1a^8w_f8_=rT1I#yVT!lN!k6D!6;fBY%- zY# ziHLPT`=_Q_Ul*KK#)IOK;V$_gfOw(t*kh03```NxE;*+TXP#Jxxc7z7ys+v*Im|qM_0u3lfAQ7HE-dV>O2^d?0Sx9jM82SgmEZFhy!Lhfb;&CSz4N@0xPd%Oz={>WLru*b zWHMDUFElVC)s^%kqYfD5OJgW>2fzo6Llzpe3D904b2^z{<^=(zF{<)sAUJ>%!hcu* zF6@~^Lle9*0ByjC1w< z?P)yv=%eOQEMhfQEOvNjKnW@}1w4?IWO#A6x=7`{g)w=+-dFB6bzveQmPcC)W`x>5 zW=sU9k4xjsDJ3{*+GrGxUVz5Yi_y{9f~M#HjQ);hBu7pGizoERX%{gJ2%`V{lV4r` zmp|W%s&VBgt|~MWMSqI(mDsP;urT5;5kyT|FIdYWs^%nuUU=FQf*TmzdE|)rK-v|qh*44ad_qeSzsRKu69~j)XmB#%52=c z0Z%^i2nrW}4v}QQ*5_Q{2oLo^!QZ<42hjaM0hOCF}W^=Yd$_3iFiadEK+YO1_&AhE&U2R z%J}4s`;C1JhuR`I&=SL@{V{B=k7FbM-NJu&H^s28If}jfZ(mCk`^6u>-oyWPHO8>> zP?VR8qMwgA5eJG#4X_B|N2?D!Ui0(g=5C049(o0(rDaGaljc{PQ>oOD>Sl3R``5nq zHQaK`Ur;yc7@U9Q*D+$uI4gMN9Xtv7Wj;VB;3n714lYqAhy(=OZG()?SS-Eh%mHjN zq)VvdqB<#n+Gak5OoA;#n=Zu`GgE zLO&cXOf0d;t*#dfKmsxibodVj2#sVcjmXBQF=Of^j2Jn>7A5Q7NJP90XXZ|;QN;|4 zMlmd?Da4-4Tr?Ebq2cM@@E}$blA~vV#p0oK1`5&t_>cd%e%Uk6VBh{dsGV8kE`<|c zx9jS$6%AZ<2mge|N@HLoNaZ~8mWRS#bww3cSg3_yb)V2paIQ{upFlD!&elPuQ@%ED zP-sYB=pa;`+PgUzBOM5`rH-}~c}t-vJ7-C4cUuSEd1@ufM;2nz3Dfyop5P!)e;=^3 z-Y|nfhCzCQ*|eA!I;1>#wX-=E>9(@+mLUVO144i?$lDN|c6R=P!O1IDVTl!331>TO zfU=G9aPFw7BXHoYx3TZF6-ZAw7SVz-%F4hX8;kFT5*R8NN?r-BXu1%2la5E5k%uS$ z`dhR$?8L|sBataAg8EjS(efHKpz9yiuhmvV4Tw23SO6`WCk$VZy3&;;{23}99X-`2 zC-&c`Diu6ZJ2K66P8LdaScOG@U90W-)A7IFV3~PcmnYK1^kU|EkjAl{<0v3;e!I=+^g?@ z|NB_C<|Tah%SWRqV;@%Lf@<(oBNy~0%0Opt1P5EAW^igty$D)afvWnpDB61>=;w=i24d1~ADy#c*}75H1$g7FeYpGHhxsJ+ zHr#*zgWTrrLwR{Q%F4~!aS^f$&%-A+-aZU!K>>~$b)6hHhs6v>^X$F zbH(+?4dt0#7iF&DGzwEE=F~qhXpfPZ4uf}2l^T?>{Re{7#q9*fs59csAf$7PRlY&y zH1RH!=N*l;Z`^};A`cZ6lVmz!T7xlY10PBNPp$*=(t>ar0S=kt6Qx_Oug8n)v=;h*rzAO-o6FJl|upWfI%8Q-Gd=m#9Uz$Ev+n5gWAn*m*2yUkE zXhVO0ga@)lm*%v#C!Q{D;~5 zh1*cahiRmk>8KXw>qC|l;)xh4Ys;|jjWyW+`pd|haw4L6S27LBZD+syV0|*?f zG{2fRsJ`U6IqJiD zE_`OO?XbQjil%n{A~hzq7#iFs4R=1o3*~8(%W>?ykvQ$RQRwMv#=ZAFhWj3P6rG)2 zm_B{_pjKRn^CzEu_E}tg_0`z8X(vuP_j5S$qK_k%NJ4t?ZCA)U=7Y>Nls8i9xnr^) zPRr2h68lc@8H5gFen-sv5Mq!lbIBAa}oc>>ri)Y741PHQG`f;1~0vE18?gK z5sN2->*A&{Z_LniWzMELYL-9KhMw+Lw6z^D|JvIR^1lXjbT*>DuZN@PH&@0*Sj=rJ ze?Up)$B^1i$)G&*`qK;gDE$ov+ERdm<3 z(7Sn^a{5aZ$3CnOKepu??XffsF7w=(+k(jbbdP0kcK_SzdtDPA(rh z_6_uPbz}Yg%h0yx0OnnNG2(n8DTG<<-5*oMJ3UEs82{V4*Fa+{jm9d%txFHcXR@L+ zr5w!jx3#XGRta*jyW#eNT;(avuEP9{^4JTkyaym!PxyRE)glk6ao8_RkK( zkb>B+-172W=zjK>IPcU&_~fUrMp03z9B_s*x`@xE6K^NKkwXAR1$7ilw=y%0P9*G&~u89(3ZTP1ij`Kpv2G)Rocjr%^rbjcBJ4m8B>u$nzoboK!|+S|+(~ z-#(mp!m;Q*_5Y#xq^mFt!!QiP;DGoZ&D0X$lT#Q@;I_X|m~aER&A*1>eFtLo)fHD< zf&DvI;RoMXgiOBJ4#MrqMB^kPUSw?1Cb2 zRa4xD36;G_#tfGwt%0OFCwKs(xwQw6F5Qf~9@&Va<{yXu`@jFg*s)`g>xzr+?rz+0 z!wvYyfBZ+VXa?tg;;Wc;)Ny8D#H)YsyvOq0NkdSu9UqHrWgetDY-->|x^^?l_bxuT zK`QTy?TTRg==i-VFED373Q)S`c!1zw221X}0eN|)IN`)^A{vQ%1a!d^sVxlo-f1&I ziw6Sq21OtcP;Va-yq-O%uiuXDo=$T$p{PqDp2vf- zc}OJl5Lf414qfS&@J{K_JQ97t?<~XLW@>veo$y1cv##B})WNLNu& zspQbfIWs@x_Jim8ap&E)qT}u5sJil(T=xylnS#;lIb<@0Sh{p67v$|2KW~gVm=Ez_ zNq3LMloPygCNvIXZZOrIHCcfSXO)(GMikkjszy*91;*5|DJRH56y}taxT0mti?UVEhSr^Xu>Hlg7_(q9iYJV5^Y->xXOD@M zSk6I|0$&$5@GTtxJw@8(p84zUeGSrSC)yVv^@1IJ2YJfeIy<$LH&GHwc0sR8=}I?e z;>*NwU&v1}q;+v9jXp~82;S()Bk<+}kDxbRg!K3Y`i#Rcq+qVb8Z!s+i6`N;rH|mL zyMB-2;(Ux6J%&frmUuWr`GtG0=R_nkB!OKV~p8bLu`+UIAf8lOtFlOi0TKi~2vbQF$9-ju}{hG7_nVGtiS z6<-s)W;(;y=0-59f|<^*`|^AkK9I0#)hhhtzkY14zM3+jO!Wj2;EXC@O=!eQtGD*X z&DBdwaY2rNMvsmmeaTS8jf3aMGLw_E+}o`3beO_FRgt zcyd?C7_^$qyH~}J&dgMSR{?oyxDl^r5jLOG@7?_Eqp7VNPgeFG=Bs-+74pl#wB>}+5f?kCI60B zUj99HY^Xt zTDdF*ys(GI0Q&HrLNBj&cPxW3J=^j8vr92+_H1+a27Hqlxc6climlrt(hScx7Gv-8 zcbH!+JghTw377#a(ZE8{-0_z?FlJf}@=Nl~)jrM{Sd=O6Y$^L5G>BplgQKi|a-*t@ zOa^H%29Q<&F)ARAx}<~NX(FolRpsC*X4=FuFn@r~tB@R|gS8dT;hP0uq`2iP>)*bf zUhH{c6}ow(YRst%5l^Q<1zQBMM6k*XVkN96f^K7r)55Z0(nSy4U?I)P{QS8|cDuR3 zHpWQL$heh~HV017(tlQtb1RMvD9X2up-!Q=hSLJEoi&*k$GW@jM8V9n%&+IkZ;K=b zG-F0XfWGD4JA#@td6Uovb3!L-*F7k(S}Szvg;(DEB=h2Q~FAj6#*=<0!!6%ngJ~l z5xj~w(s$f>D;nY>Q8455@M2Jz%m%7#fY^^=`S-EF0PMM>E^lQ2Bt;ewwm@Z85<9lj@)w6NWz@Ah!`6Yrb)4KQ}Zi zg@TSJ0*Wk|4mW>Eb^bWu`|~4MJc=C9o|V=xyq`g=9Qv>S`Y-I?vksrQXeyudI!ozw zx=S@)&aXI^3Ru54fvpGQ<{|Cwu!Uy>b*fjj$l=WxauXP~gK5J4cmH2AOo`mgx$kAIBP$_e<$ zHQz_=q-j?0N;TH-D&_g&iU8SsDN6+43Ze#_bA?FE2=2lHqHo+FluN^FRIe2P36cGT zDK;VE+G{5BWq3FYg$|=QW8J)OM#AWhtCfJu|iL?WIJQ7BC6a51kHE3LL}eICo7 z`xzd2_}f_f#!X=TZ)4`<3VaA3;O$ddBCX^?H!G1Z)-qn+aa{HH1NMeJYd?0&dxUU^mM@)x8nRE7V+qa z4>rZ3F&@B5A)P8fetwY|)Qa)?h%J?^9H$6iCE_WWFZWkt(zAyJugpS9-R>% zwJ`Ad0mC{2@IAEuo11}=)g#co`2{pLHDSVpiFWl>olj+&p@avp9$Mdrook-T@mL^+ zT>O7CfF%Z4RaF(9dh#jkuiuBUGe((bE_L>J4dbXM=3ruqT4UtEc1D9qiu2_vYx~~5 zrYg|OrGX|Kc*QOw3R!!r5=zr50laK$Jus(Cjcx3S#%y20oL z`P5Jq^IF7K*0TICsS8Up;;RK&CC4pWQeA}I>$jtE?;+$*KMgDz19I_(6}o|W23jT; z@C|#0Pz8NBxE-9Kb0fQu5%eseSTt^a{xomeY1qAIKc2Yjk7#e)hl=tF6cv}aMg(e*Jzu7iALwL0oE7XFO7V1YCcf-@+MrmH*_$be(df@Av5PZr4o!796w!Ox^`SsdQ2{x4Tj}kem)5K z*V1t1JA`H~{ht#(;#lU|pR^nppxdsID^C=kn+C65p}gntj4?ef-S|1&amljC&p>D} zf4in)42x?RzBOM2up+3m=a`D*4#Ni&_Uze%AN@i6w$pU;XM=&8>rDCLE2AUUxmpMvRjEXm`SFQ)8Yd!f0)6 zy+&6m(U;C%gM?h`wtu;L$N+u8te$D>@}jeyuvTkDv^;swofOCC5WzBe=L@96>LaNZ zR1_>i{eex`xbbP!)g8xQyd`A2sth=RrMtTY@4WLA9(v##c<$Msptox+jytLtpSpA^ zK6%M>oP69E9;7Nl0gtjwdjvB+OI7nJhrQXYuP=Rv2q*+<>oojj1$gyzkG`TSt=_m@>CW+Vk~@bEvl2<`HwnkO*iM6qIm$#a2*``Y-B=C+8WRBs=z3FW7Q< zsXYuiU82X3o4*oZ-$HRP49rlu%7x$*=k`U=+cyE{oO2>xdF5f;cH3=cdmel2v4dWT zB~~;~Dq+~mV=@~Xjo?^bD7yjrfTrb$cYSjlvuZ1_^!8t4-cj>WR8$Ok;fkZz;L5NV zKaa2J#-=q-BX80oL<`D?#Q!$~SmGi-Kc7c!Tk+ss4`bA{YV;-2W&j0LjY@sY+&3BK zz&FStf(GSCAx^G6_3W+cax2Z?YZT|4C4a5G)mcnC^Yb^Z%Qsb2w$fy-fh6UnPWKeE z6xw0Bl}>W6^!FLq_S8%0>F7q?$@7sY%n+8GkeP+2m%kM1;C+y1uf%HO*PUH5PNrTl z(k6_wr^5}S_qq{74T$0XGL1p=+Q%8N6tf}oX6vECyr6Ti^bn0jkSWQ>x+h;mYT_cq z%WBQHDt?Zg>a*avgO`cSA?R0AjI1&R4Xq%WL9Gl8FOJio)&-jMFkZCjw7o*`N$<~? zC-)H^Ezh5_7|~Hj;kD&YR_j^dvnC1lL*Rk!kYk+R(n&HH8)jTzl&81BC}MHcAQ$$d?Ei!5_q& z(;ke!X?g-1b~mG7!6o8#9&`{UN9vfP#>uChoUuDB|AD+{(+^Aj<$Ll9E3kc-@?4q_ zA-oPy`dH;ZtZYy|rWrGomt5OUO=ltPD2*{77{BJ8DZJSiT7GprWa}3XZw}*1p{?>C z50IRN~4NY(L#|qAVJc6?TM)I7m#x znPKZrS0^yK9nsSxQc1NP?YW$ao0gZ(_jSrp&c*+>epD2kmCumpQ}h6Nk1Cm0MGQm} zy{IZW4zIs{7g}5QqqcT|t7qkwu+A#mzWqhqd(T&};>Dk#rm_W}y=*$J`PeL+B!W&= z89twiLY^yXw3XJ0^3sw#;yJOd6elgJ#h8&9Y~1n|UVQ0pG&b$RDDEpK68U~yzCeOO z=%}<2%o|95+I=o|Mu@;wBAMnvtc)3aDl9BRL8i=HS!He$Tzmo?@Ij z5?KE9!#MGzli>fdptrciq4&sZZFqa_Q%Fxd)(T+RxemwwcLP}B;g~UF@bE*AVB4l` z7&Uz~e`6A{iO{t+-azoW*Gi+x&naQRYbHZcsElAz)rjwFc94gWgbVOv(aM~YP8E}P zFV|1W!_@qmt#a+wBtwk9C1`5% zT9mnX<&|U7b9YP_1beWfL2-Bn$P3JQ0YopqlY^1AVhUa-q$NIKT##m3os9rRSx}mX zO)tNNj=p^4O+A^knNr+tg)m@Y&uscSg)JFe1&j5zEDW;_hi2j(GEvKhUCT2R)9XyU zkQ>liF<~4_YEUry95kU2OYis{w!HZ=CQX`TJ7mmH&_kr~>PeUGIjFs&q6kHN6&w;i zUju8d)ijFJ2q>fCXA1ke#x-R8zH&iyoP0_-A8)#Q$|pt5=yHAr_4KI|Qg^k#ba-4VE%{N9%By9vIjgyVLreG~ zBl!I6qmvlEJ3oT?Rm?oJUDsa2@WBVMdT8ISH*wjylM#=r=bnIED+ZB|J8?k!nq5gW zcSbCoBy5MRm?RUgx)9Xvk#xrN?}DImq_MkFaLY;NGS=M}G0)~I=RvFp(-l@nwP%b= zi_<(P(1Uv(T7gS1y$qR5#>}y8+ctdVD__Aw4?T?ei!Z`ymwXO|#bs~;4lY`ErK!_= z%E9Yupulztq%>!WLabEI3!b5F>L(9HbSI`1b zSARKyHt*%Xw=lwGPvnnwn+J?+CCb<)F$6;)1JBSr4Zop%YejlmW zRvvJjjw?Sh1Cu9|A)Qu(2Mz^j(&;#sMkVP3s}3n1T^K(`Y%{Dx4-XD4e{mU_n)hMU z=%e_v;BBQ69y;LNb`Hu<`7xjm26=Nau}xJ3wo<(P^2Ez%9?U8zC^uJFC3%`SzbhV3 zO7kk|>@uC5r8X=qAFY!c_%yWm5NbJy9EQ>H;Y9YlEJvKWdg`w2pU#dlELdDmeSJOV&6{T~7RtqMQlTIL6efWe&GWF{JNqx7qd$Vel2O?6(jAyEe!RJZkLHl0 z8J0$SaAh;zdi4Pm%sJ28La39zf%^Y$084;SyhTMtxaCi`nr9Ei%gWtOp#desWsJ_0 zbe~qGtC&>xQ5HP)O6?YJnXRLm<&Azs+bj5)MmW@yn%oc@+|^&|n09ff_4b}K&5WBa zh3)U?z}xpfhj?BRV@{sWf63WbKK{KRU_Tdl^I&%##1g+A&rE4CdDu8;t!=T)t*6}9 ze!4XD=&rtE)CfYs;MGAje6+p9-fOXnOne@>AZec`=A*76x3(PiboOA&s?Eq8bs<Zd$i1fkSOk`vXs~f-L+WW)Rs?Z6rMOZaL;rr1SJ3k#+MC`zi&$NJLEh zwDTAC;*6P+{C={fKCFJWzT$bSD)R8;GjAc4SB#^NJ{p@gZNitn^d&sKXR9y2kL_?$D3basL`^DXBK=I-2sDRmRS@lNFD@t3H{v3PlfIMjUEr2{v=A*azZ#tcJGi-6cND17y(IQuG|GFN6% znHJ-ysrdj}+Zxf++hz8MwQ`8GmCC0(PUUvV>h&-k-wgi1km0B6lvU~Y(n4_g8S>`? z(>y~+8+cOF)m4hQb5G!N_XGILUv9>hEn6^u{(O{_lwcs>)TpL_p`{yGd(beC8IqpA z3-+I;?deHiPNo}=-}OhFbMATO7D-QrnT(q=b@P&S*!Jdf6d(5q^JVu?`2SJ>OJtZf zZ5kR5HQ>>^9zlLJk6IUJEM=lJmU`!^9ulyT@~Bn`un+H(-t$7TNUlaC>XiB4tkQD& z&Xd(JRgQ9Q`mgRz5i%Q>S3fI{XMj9D`}iB0Juj@r-nVyR@|g>fKWc=1m>%4%!}7uR zBp}G_uM>7zhq?EYH?>TwXbq1i!;p+qL<;Ibs;PCQn-#<3huME^zt-?%B8zK;x#5q?p%NVYi z!SLA`)(R}!g&BswVGv&@|F0ka2p>6TJVsS#>{McKm}r$P!JN=0TFq zu3kL-+y?U#^VeN>9iDx5IZin96FB+eE0Id&*(I5K9xpRU`;nDNez9flQ66$ClWenZ zg%oWlW}V99@=rQLJ+$2k3^?siS4X))DTj(3gmYi~tNb&|YjEo5;9*iHIb=QOMQR(j z8ay%8!UK#`5km$`m;NWlja!Ulst}tuKZ`r>_#97v3tzr+HZC}00`k)_xh))qeEn%C zY3iT@$w%`r1&8%foM{uwQJ9Hi*^4jXz=53@JN7uuc0vu%aiGdn;5FdyZ?(<}4f?Ck zWNt_7@9ROQ_`+dV2Oqx~^T2oCxU%!hEHOz3(0-m#Kw&qarW6~YtPHe2I4Giu}y#NL9ScdC`ooi?Z1Q1 zAlKrngn4(PTnuvHumae*T!%Hyv)nPyjG#S`RgXXi&g_qs<1DvteI_v66MMr7t);GVa`0_YkcJo(@L%g>!OrWu_G#4DGV zo(+K_Vao5};Bc;ukbF7SmG?n%^em(%EW(CWui(kMZa_szAx77ZMO3`8A$|d)1vLnL zO{Cf-rcrK`S=}#`YiMw3=z!t{0thSRb!7sEzmEnB#?3T&88kGN`uf^it)HDwOhAh> z1@`A~y$7y*GtVdX!W+(*w$8wMb^Q($o$zTeC4iOdSYh?zEdK+?;anfC{AWuW z3OJlGq|Zk!^Wgi2<(Mb;RfEB+#oRpZq*6ad2MW2q0gZDdF@`(MpP9yR?aT<~S2Lb= zqep{C@a(OcSFc`3BGDD@yp1VsCLwYf*U;M>5{P0UWmNib z>4VU7&gycnw0ukRDzS1e)r!i(g?wHW!L!SLf}WmEJoe~!QC@Ti|NPD4FnvpIIkHgJx3j#^Di=KlL<f`%}P*u?ssyUCom1KI{)7nz!D%n2Rn1dOe}k9DK@?FCi2RQkt)hp(8()} zsBkl=jYAK34-!%`^HK%EH8RYj%^2at&dt=-Uvxl`z?!SLJv!DG6g{WbF>GG5sevI# zWgWiVx;tt7pSB%)@Xk{!QBabPx^quJG?|pzN&*t)loh+3(@>SBI)kR1Q3_s796p^l zL59n_Klr8p!lJ6=LHdmO+J^Gr;1k)!in5XdhFA_CXAptauJ&$hTDcLKg_k3eDo{D_ zfjk)9%g*Iav z95f%{&lx901$l_aq8g%xjZ+;tUPT{!>=C@ar5;6#KFJMJ9NFM-gvM=x8Hs{c5YpRb59%3eKj&Vd`86sF-Er@jAKu8%+tU2fO9{_q}oUavr~X+ z`~gzd&E{OwLDX-;oBxg%0+kwrJFILcri9@T#n_>{uDDN zCGh>fI|fzdK`Wiq{!;r>cP;m?j8iv&y?arI31dpI=Rh-Fdif<(kDP_llCk_rKYDvR zt-ro5{@2a(M$HvZTFB}@tAm@=LmexO@aV2QVa@>Z(~{=v1P}ic+Y1|;_MxTaAo}`y zkxGhloyeCLnaY#Ghr0F7S0`xbI@dv9*GbDWz1QF%W6;l=W~}(eXaFw4LuY3alO~;v zv11LcQ~!+DUw<8Eopsirf>_mgJb2Urym3(d@X*lNf88@RtzY0t*P(aaeLP?rGgo3c zTo`796c>BCubOVz!ucr@hzqA3V zIhP<-R7D?Ug=CZ7keA`S&l`xqb&wBci{udffc+;TIvbY@Vv@G|oo({d0Yw{fq+Km#qq z@;@**67ug^hwL>y()Ak%4R)C22MW}xTleboT=5((ANp$tggTg7%J9{>;-K~jMi&kT zu0E`A_uY4+vvmtjJZ3a;(Nu#h8`7?x2sR#wn+LdqK6Z*SV$a026IcQ;b%!No{j+*uTJ zf?(d<$J_4cb+k3#w~sI(ygN3-tv2mI#`J!hnX%v8Hn`%Mn=yM@3g7<1LX?%H;B~mi zz5iNG3v>9?JYl%$=rzpkgd?j8@B)A7zIn@9Gtjeo)h$@@(hXR-@=ti})m!lT>c8Th zx1YrR{p-=y)r$Q5a>U{(Ft5>U5fR4U&*5I&hm z^LoY+Po(tT17mu=RA5a1E7e08<4&5-`PI;r=*WC{@@e>KO6_mJS1%BHfrHh<+1VMx zh?=8OT-1O^AH5G-w{FFP1q;lx#|HvpD`6E6VlCedG#*3X6)&@hj%{k8Muk*-cx`uMVch&P6WN2IBt*2CxK_mX_j_Q%=Fo9ow+{p{LN- z)`r5GDnw$suQ|X|n2KRzzDT%prM}mv!61DTGbP(e0d)toY33jNNQ zR}Xb%op0*OocF-80W@5mWIkx?(LNJ+x_hlvSW*3l1tr4bAosUl*@EPp%MmZF!BD_p zCfIWMp#_b~J!~F_3UX0;BCwc0>l`$E;$D7(gnhsOzC1fy@pF$!Y zhpHPG$t-Ia>v=~GO5e&nJ74E{qO=U`hDyBec>62oM>%oI~B?iB~qcFDbi-idv5vnhuy(N$UQBb{9|yf6IGqe)yI zN&fck2nv!0GN~ZLtpLaUD;b}b$%fs=ksHT z1L2f&>q1^@8+4Tu+=Jtp`_kVFMmc36zvWVB`(Jf9I>}o&04b>E-Wzg9nLmuV!8HXf zoPd}UD6>)+TAS)|=kNa!HD#^%%4g=8hv<`rfi%#(R#A`#&-e5=)Vw;!OdfQ_MJeQ^ zV_5S1Yv^ow1(hY+F}bcCvnB%*$M#`lWji`MHe-8iuCE#5SJ$j>W9 zOdPPT4q|QaM3=74z2#?e8FfGsoQB?^6)&d6*9*-r7`o$&d3ou$R<{sRUVJ)4Lr)is z(&Ed`w~Uiq2L{$CPlkqHcybbin?QGW9Ao&){^Fu0+L2-Ye+44MBQ z%a&nG?HJtjr<*YO$N!4o{^|y--}e;8o-hk}qehZL-R#J|VW}|ZUq?Br2F^J&kP-I1 zz=v}WDX&vWf*sPiTZUJTsBuUZ3YtKbK>{(pNGx-|mH`_-a}=-P@lDwl%jU!ySsKCaQ^N9fN|}kjp> zmvo9j`orlBNI1Q>241L&(x-jrq>2DmYlnf-Owa&!l!ntpk>Dyh*$DynEVCd1cfLEU zAsKj2(*d9TQihxlN0>f$vop8Jk@MH6l%cH-D;+PP*R%}1RCt#4IS)qWm!Ryt@1bMr z$$04gf5WR^xDr=i{RJ#O`3&o=B=tm{Izqme>I8lB`^uY6ucppS#wF1qYQhM3<}1sT zA)(=!KGWJ*4Sqw@cWOIjg)Dt(P`e6S)FTn7r~RpoMOSV*h&wvkQGehN;uFUN%ZH(V zWccn4sZ35VEdP4G-&6VbG8(zk3aE?Z`)c^1c!GG4vJxja@Z&)`z7<+j{+0QdmM`Z< zJzrS|jvS~w_}kv_^|zZ{<%6V!`TKd?8(cJ!;p!O-Q%V>TIc)78h7SisBhL092EWm= zuZiK@-x@)0A9H0x2ky{i%00*fs!N?@Gb1B-Jik~nmpa1CKUGp+#ZsT*oqcgLh*g;G zgH(5=-r}~kqsI*jQ9+aH<;;7$L%QI6Jy23~#6U0-++w7tqjXH}sUC2Abr%n#T?4|3 zJD-ty)~%cEFfgl)#QJK3C>Sg7L~Cfbqgx-iys3UabDsIe2Vs=B1P%ziJzX8R|HdC9 zY3#>WuU>@FBMaqn2r$4><5A2?IjzH_%PVoFJooNSKcNm|M-`#EG9Sf-DfsFMv0||o z+jlnO<<)!e+S>c@z;ln8tR*vWCXs^Wai~qyif_d9*x0$;ce)X$gA(P1?`PNYC^g+gJ>!RXYVVW{8-{GD+T#5cHJr-yE2R{ zPj$093S47ErC)eKC+A*z>Q7e#Ei~%NB;j`kiBiHHxIA{%(~YLLx8R+}UgCq&z_g1N zqhRc4QWx(nh0FmFe1%WR7}#YP&117G)sgAj#(f(i;j)z=oHk};yC&Q=@mk$BkZxYe zkF2~Y(E3y5Ef#+ijtD6AW=yWbVdEZ_|05&+hnr_8+MeZ}&IU^_tdFQ($cBUd9xhK5 zZ;-P}^n+L^GQODMOS2;Q-1G=)`OBo(@RF-xu;H=C9^<~(W*jqbB=p8a9>6_3aP>A1 z{Pgyd;0)xVB7hMA{A1q92l(c+%$L!*l)X>aE-T!sCYI6i2FTVr&+Y8vb&1Celoj+N zOewXrcH<9!U4spq8c;WF5k`%j;xgj+$PTA;eq#l+s6i(FGjqIcCi@tG^Z_fUW==4Q zHkLz64K}%FZYi@_hd*F>m1EAE6F<-jm0`X@Nrt}aahwuwp z{ryN8mW=q>oh)$=i9N(GpvN4>^k@HL)qM9_8&0$mw87u6YA>psF2YgXhY(e&Id zpu10#AqV@P6Rn^jPGC3kF=gt>Xn5lh-1vvzVb7jD*tM@7FTC&)qGh#6*DV-eUm(~g zviZp=fF(dI7aTiwEH1n3GK?KF78~Dq8*83^0o@G^h{dCb7vz~=hLa~ha)^osw48q( zwP>k8TX7m*4qr`_mXr@}C(0ajdmP{oJ~>KQ=GO!7EEr0k?)`@J+(1uDD|Rk@8Jm}{ zMP6|prd@Ip^2D}52BifY-qbp(f=^q|Ap8Q-YA$9w3h;v=Q6}|g4E}(a2TZwk%6KXI zt%86TpmJAaInSJiU|vg@4m7_iE@1AqY@e`OOZ%{Y+aYXty#d9idn zlsBEnsq>!^^4v++)s+Q5a#1rcUsllNV=^8S)cWcIa+3 zlw(PSvNUkP_z1o+m*KdP40&~TZ`is&@F^ExCYEi7lErS^)dAK zTRxwwei%{dik@~&yv7xG>?d7iA_!&*s1@zWriLt3nENbtZ_B5q)0 zaX$*oZG?&vB@^7JeFnx$ukA)8UVz$3GZ9awJ)BH_VeAH_7}NMG%rnsNpQ}r4xaC%p zy(v;~%<;1!`R8sM+MVKAemfUq?yeX4WjiGQz~Y0R=|x6@;`h68HA6X-n3UCScO$$A zXlrf4-M{}=95XY6k6t)M`P!h)QKV@MdSj>zMlekoXz0j%`tfP%6R51c0V~FmSgAF8 zS|v_8wie@RGuXCc3toTy3ADByLP_aZJ|9n_x2Fr8UF~RVZ$fkP0XMMK*4BisZY!`Q zAmRoj5$rrU5P=6X}Z9cZwxE=q&zBaLz5T5KA^vHGToetIL;G5<=neh zu35nIur!EW3@OZ6Me#8^KPg#}<@YauZRYUg`>>1kpAx*S7ko6HpzFe|;Uy9bAOKyUMtE6}vN0V8LPL){t2B3WAOmN)D&S|cX)lAlLkO4 zPPbK=7d&$G2@RO3tprj}cQqALm5kTs?%O0^AA6iyX|gvWy{~W$tyQ8_{TiV%Xgk}w z@!At>(Hx(KqQ##vm(b<}Ec;HQ z{4E*|Z07;-amZwf{d5(_l-iHbzS23gY92eCY09~_h^DLg7#-2}uaTv#<=DDc7kG}n z3rs1)WIDclP}0KMLz5>SkD;WfKzVbg2FtyI-QC^Xaq7YT1AFmXDE2hPyj^mzT}h|3V%wbgvifC0tGu@z z4aDtse(79Wntv<#oafeyThMpJt{*EbV1ClTsM0=6uIj<)l3t7{>qSwT2CtaE&WxF> zY(`WSm@93bd}<|Hnp-eo#zJ%Jr9+qc=(?BglG4!Zhqm};ZeU7%neJef-&{~d4gw1?*wR?cQqG-khB%F`um?EZE)Et@Jcl|<@<-C-1m)V0%j)VDa4&*b zGiDsm%WcN}_uqrY#zrh$xG?9h6DDGS_}O23GEw}qvP#ov!8*b zuM|UVZ7r_3<{Dgn`Q=!;bP4|Ohd*NZlg}ZV_XbMpMxcD+Xe6sD5KSgrh3PG0weFoC zX4k;|vZwpl8~m=Q+sd0-Ejb6lZ5u#0A7k>H8?Q#vwRG;4GaiZZF&un-eQ4Xh3p-z0 zi-X(tqjYpR#`C~c{>Ta-7L%6ky7&~8@1AjGckeMjfg?o(k(B6 z-$*jUUYRBJlWYW-vajCl6R)OrcCY{FS!QloSYxTT*FaYfLoz{>6J$juzCc*N{SYFf z%7ykt&R}GJE@e^drjf1ukpP_z*YS~sw*m8>Ex*c_hEKQ641d{J(Fl~D|6O!VKLroo zcRg0F{1QI@g)icS#b+WGk9*>(;5AehRePxV48$MQRmtZcGJTUv5XKMXI}8-RMRH+u z^&$6$T0e@?2r0{yU*%E4JX1kOT=xt7@lU_OV~;+<-}-gn?S?q2FTIXGj%vr+fX1JZ zefSLuhUGtZIKuLua|as(Og~H*NIwrW-+MBC6fhKhQOW({i^em2WCBA?hDoY(7>0pD ze}6xwPMwOp{1R;0(S#9|1@=}b*YW{$a?XD{dziCm-Z!uu*VP5;kE?S$c$u{mDFae0 zKr(fTt#$MIo>>>dqpan@s!=6<$V>Fws}O^Xsq@Uaw64XMd{0?4#yrdDuE!q6#FYU?EAJ;l2NAd6}L-ZUS=b3#rmF4pr?tH<0>2JuaxMzXUpr4B$?%YM5KN*SwwC5P+ zBiBjy<|-g7$uv6MJ&@h;_vwV*JsXHg-QaQQ8DnR4Sj4S{fnD1+VCAz9;M`Nkp|&Oi zsUrKXv>H!6 z`CZJK{b@{}aT$LJnP)ezSI+6Xexo1#z1`^Hf9)MD=F?~_&da2bP8T4Z${>+UTQ4wu z!KMIXPouE1OUw`t(G$6C!xQ}z@~vW(OmuATp8@%kA17&!oe*(a8+K4 zWO)js&NvP%o{;Feh8)Tp6NOjDkh?a_P%7lK2~lodFpkgz$QM0i#X^mbuT2O~Qrp4b z4)h5v;lGyK+aI8_@QN`}SItmTfI#T)H}Jw;E3tCwhv{5$D<;%6~ zU~pu^t#7knJi)XbCuU$Yvg5TbbJ1!{F{pln(BIyKLr?t*?JwShvrd|i&s_B-j2JP- ze3PjS2IFFh>P0H=&~a#&mlUDG z6g-uAM+=Zm$h=`TZrp(HeCHc@dg=41`s^Q&nSTj#drcEIrn8iFJH<=$55r;k{~*b~ zu8hZ5w!AbyEfZwdvjNRNSbVuW8wg(^d3=+rYpm%z8VFi-Pzp*1F-<|)Aycc6Pp)adO)Uwb=RckIFLRqx=?_5&C_YBWCbk&obs$of=gPTikKt!GryyJ|^n>c7YZn9h;1w-K$_ZUHdPF&Y3zr~z5PF#= z*Nsh0_{KNBgnOTO1tY(7J5pokhEdG%nNB7LY9PbXhvol$C;vVNPVE=9o*Enju2;5k zm&-T_!kuLsp__h)FMMJe&OEWsoHzQ_Usyl+oh0$GfrD)f%^gu3YKxe=K>GL~>Nl+1 zf=v<15vP^JI1>e_eiY|ffBA`ibKLk>>S;R!=%l zA&x%gt2~I6l=6hzI=C;H+@m5yFpCGUL@=wMfCsbUNk8eJ;EZn02U5?#K$gZ%s^i+w z)JMaIIilUiIt!-=8XcQHn!0w=@JR2W!IzWo04dLi>b*R6@?|{p%oF(Zr$3FK{`99j zxEQ_#Pn7QJ1Ae)>A2+V+=i@jSKYaCKIX(}QErgV}OYrvSYuJT`r8l7UmD^Dg>%{RV z9*+wyxCry+9EHk?Dk~_(Xl%ivWl{Ib*nrQ#$^`@yQ>IM8#TQ?U%P+qIlP6Ecb5B2q zgWGpv?;BfCzitx_y|W#?4Grk;>@rtfm@6*?ixEZ+W+wy9zEH;{bEjKO&PtT9NOjJD zaza%ec4lLdF_`B(8GImgbf9h9F6???HMT5Uh58MNPFu%&3bMkC9_&u| zmkgwHzLu&af`mc+`lK$eSbfEi*62$LeZBqI`07@mxDM$_i@@Bigk-D?0Wf4!I{p%a z%fqtd4SR0nP(D|F7(~ox#%$FL((5)Y7FJ&Ir<}4ZtV`88gw>Vs;`Xj`pG?Hf1KjCB zs4Ppv2^{HE3MZa;D&AcEJlS6Kiw?uz z4m9x>6yN^#x6pQI4ZiTn8K|i)Kr9w!^Z+_;8`?!cAgU(2*OK`oHc4`go$So}RVC9+ zx6271mQezL&lY<$Jx^N%EV_9xqp353{Y^3KX^x@0$I2tlm!U7E^>XLeZKcI&{-UP? zD_+@v$+M3`L8jQx2w8RHGR73AfKG_*duLAL;ZmO22n|4a0S$QP){^tGY+P<2gUNlZ zzR+?5A0!xM*bkT*ypk^L`J2t7`;|pT=3h3$0!43cA3ECGv2*86JbBmuVQf_oK6%MB zq|87n8B9J~t?F?P`uSv}y^CSX!8kVTjbm41%nV+2^fL3~17hOeZ~vM3A$Aw>U>ASZ z)*ayiuPFBLGW%L$XzPlYJ450z`qfr-tSB}_>SsVRq66v!@0s1s6ULO7^X4VbK95AQ z5as2Q`F#|6C)q!48T0NfwhZ3p-RS6SK}+i)^z`t#c{Gj~|MQJGA73iVEFd^!&_Ovc zaN3MG$>O}P9XnTI+t%l?dDAj%*}M!pcfE>32RCu~+lj8O7FdDReonEE%W~8@uT{0v z=9pxjLUI)c(^u2UpOs%Ddp?H`J6~&S0gjq~0(yJ4;Ep?P<8|!C{Q2{dN~OX|n;)LY zi-|818ffd$<;a1DoIutOxj=8zJ~S=;9rpkA?@`n94zB*xM{)f>{|m1E?B_9k+H{l@ zmzrN+bjBo;Xwi9zEGL6H11ndE#bOvcb}T;k+0UV^wH1Hh6I3p8XxP_`mi8_jSiKoL z`!*uV6;eDujbuR{G8IKgmKGsXU4~de8Z4edB=8445-mzy4s7WcqNa5 z*>7&Vv%S=>BvMRHJ6nM{Rrh&31nCI1Ug=BY3L--4q-OSE%qD1Fos9wH z%?&rrL(3XD;10uO#{N3C*MR?7E_&Ej8-Acw)%`ko93<*9;-e6;@oLQcj8L2DYt3wR zVFCAKGGHk6Gs$tsrywtF9y05%TyVviZIp|POYnmq{196|dnI;0@NcO8#Q%WBa{K&m z_*e{*6X)K@f^S&W-FL>nsu z&;2qWwSRzqbq}E3t>fdy@eQ0+Kngxa3NXT)V`rI-qq7@kfMZ8P3?+H}s43|~Wu{L# zD-v=WxV%{mig$0PpD-3rJi8t1S1m{Rh*~qa;CRUvUu2?YKyCmv$YBSJ3?~nihIP}N zawI?X`3=v8Q)h~iV1q&G#&mUs4eHdBXO9ELSPAbvW?tD+R4+=rIz1_z4^4a4o#)(~W z&LkW-)PX0TyP3~JOE7Ny>Gq3#6_?+xx&3F*?@U|r+uz@ZmX?F&0r1IW8im|P7w2Wg z;t9EaMgVe}NlgzDX2b9!Wc$FO@3v=omr1i%#a@$-0ksh0k1rR|JRXlY<9G;^K>c zW$I(GjZkds{O)(ZYi^wjgGnU}Cy$Qc&bOUaShSPE=u;hzEM;=@K?L-5G^1_RLpb#G zuTT{^gln$-1U~VJPnq$Qi2WfpYaCKuC?#@)323yzN0ov3$v6 z7+YM35k&<&9%|rFM<>z~_`oW!LT5ej_J)nvzH)=vG_h0y1tkS298rp7aS`&$3Xv+# zh)-wP>pG)|#O%YL!Qg8HyH9lIJ_&^-zG}h4oak@wK->NXwAVMFb@u_TESu5Y)?rT4 zj$610=kuV|i6@?92IF*5&`c(SJTcMk;+8L&l2nmr)V!^ZL{&gKmr4}mF^7(YjYPYc zP)^Bo0v&CKtU<3;p5!-7x%lKXi!jo+21Y<$ox$>f;V)wZJa-RXBRtUkpoYSq@0sDR zgW68cfdxUJ!^Ox0wf(d*J-85(>FeL&y7E>C_sMxZl`kg@CVOnEl~ctCI+S+?<`@S&6!#Vhj| zE}p>fk%KEkL62rFhL=X8+uXRDV^J#Y)nSwIp=NIw$S{(WnRyG2k zJqNM|s3eci!uQa~|%DkKVps9H>8lgZ1@j~>_*b(p{4vzRjZY~tg?bGF*Q7uX!Nx6ZqvXe`y|C{Fi&0aMKxIL`$woI1BJFH##dY8L9=>?>m(AsJn|5x%&dq!9)H9Fcx4-^9qC5&I zzNXOK(`Wv&XcP(FQ^{l;iTos@`FV)tr4diW5lJS@w7B^CVT6G$sqN>uI~rQe;8b^0 z3px%pqobt@j4Poe4@{MohzRz0%$YqKr=NZXX3d&qeg(ii)Gh$Tr{yoX{9^3Q>q6ng zvE+$PA*llC8C!FFQ$uP{EQ&_;N)dcAEd@Jhpvg7lhJst+%g?_byP0MiD*4OQ6r}PD1Df2>a@1R*`FsP-QDiydbth>#@TO~D0V+@Z+-UAvhx+^e1%(G!;i_vs zkF(Cb*xaA*3^~mZgVrYq6C0-Fq16l$0Vxw?el)Ztu~d0dAgAG>*g`}146+zgn<+rN zNiO3r1Ih{u?7U1v#=n_aO*0)#u8+U}{cqxTe|;RIzWFHPICsMSbnpO*MW?E8^q3- zmcat(DRxx{QI4Rtv=?K_`;dwm8cOnSUtd3d|JOBmYN)Jq4VOI2Bbhg zP$IXlxQi&fI>8|GNGLbpZxpzd zFt-aH;K7Er);1n|=yS98^>pFk8~+(+Eh@k@AD?A?EibgU<+^nBF>F2%!}fzQ^h2(i zQw`Vbsi@$MJ*ggKEHb4`e%!$HnjVzq_t6Tw{2;4?sycW<5&{YT)}77x{(nA)NNgHT zJL5liuqofh7DUgcqL_QXNmlan|Dv%N4`h|1AXCO)gl0MSCD5m`3H#=ohNe8EyxraH zxar0VFmXl!ZvNA)JfN0`usYIovE_5;&K>x}jW=){H=?IKju|s9!NQ}jL3tSuu0&%2 zcA5FpgX$)wlfKo-8sxh9@iLT_Zp971`viZvu-aUWbZ?1{1PUOF2Mi%^yfHc;jy+oq3z;;)jsamQvogb=*WUbNIVS!Zdr^`U!zE1I?*z<~`rvHi8T zv2Wd0?0<8c`Fmjf4m51rgZ2Z>m|8a#Cmnw>F1+9ZTzTbZ@b`cJ_hxkSGoSek&OGxh zj2k!3JUA^lI_N=^2h>Ep-rDvKGNVVr>Vsjiv@9QC4wi_;ciqo?(zqB~ejY$aSwHbJS?qx<^AqO|$e<1a(|jKKbCC zsNc5_`O{8=cQ##EC2|C3tT4~!=2S+ycQ_uF{{g{!CI3Nmj%<@DG?i=B!o4;9AkunkmD&O4A;zx;0v=DCY3VtJdAgm-n;+IgI6<<$rlq- zs@Z}JDU|1y_1M!GH4nu0+chPP%-!6e3-h+0Ip&EG8);Hz-ZP!;ly$QAOIO~|V3unh z4Fm?c#If#;;(V{x2$DQdk)P~GaNAfo+dF!(boo|HnR`4+D@MxgK(3hTqq__-w{p@p zKL+Uw?1ozj3nO#>HCb|AER%+IbrQAiUVh>{*v~vi!$jlGP3(CFi2f&hdHrno^q@me z1Qi+@8_l!VM9|Mwwme@;!#=Ei;Q?Iz(OG0gAd`Ol4wv=U-p#OXR~&nqVp4WrGsxX0 zj|+I+Adyfm9knga%4+C{peoa6twfaMguy?u9O8g)95JS&0-anI7Kkqi#_;s=RY;}8 zR=Md)KEsFKU8QF~cfVXnxnn9lYnyRrXDd27n$g|UiC8RYt;n(p`0E*9GehUru5V%Z z?B>p0EAi6Hzri1V|9gxYHCj_g2EAi%(G+orlTSPqpZvt9P&Z)|*1q`^9)0*H*s=Xp z{;UQC1(ojhHh&-3*TnDfo)cw8m6jw|q;4_-KYlw;M`tnS&6|yP-hKv8Jn;k;E?kJ( z+FIyeJi|OLARS{^zKfUbg?`waXQ7L+<7R^Xe0e=$^-M z?X_PpgHYw=<#=V~OPD&M9CekY7*$@3io!fJ_4MM(Pkk1*-g+x8;K8fok2@aIr%y*! zm30EX2u2MCcI?`TB|O+xGHI-NNSxfgYG*T_@|CBIvd~DK&g6sEy#v?{*AO~OkQp^b zgqHhE(az4lbRz2>+75$;)+Amdc75D8NDf+%3#Qb=&L{Y-DPu_IaD0v!u-o6s~ED{d2OJK$=ABMuzDljeuy&(MOqElhsn72*=72cgJ~PVW7Pf93-j_86&9no zqzDh(^h?A?%|yI%oXUw-2Gz05s57oWP`A=&!}6cKyocihApa5$tI~#=W)o1$>c$xm z)~3wgrkXZVdDHRj`_=HL!=(eY?Nlh_cJu5yhA+=$SX>i9Cc%ib4#P0y2Cc2F_{KNB zf!PxyIDWw>JC%-P3YvRrYq$fNNg3$vkD#Xy=<8=RUgFLD96Lhnu<6-)V(n3*gW7<1 zf`(%Moaao@EoK^s-lBL7`QCpBxy*-H)pMvdhImwbna(-C#jlZt+&46L;>qW>W7@nE zQQ@w@VlGpLT~SxB+YQ8&6;MpVZMgWo1rmnFg&}!uI#QpSmxf2*PIvu#hZh&ASB6QB z3`~C2ZV-Vfv6@Ppf85^Q$%7u9ICSU`_V3$|hK5FStKgx7hs^7CKHux_Clh@8cjr5+ z(Xi_ceC~>w@>ek3s?pB!>f7BH!MZ(h^J4-AF>p7xcOmycO9XX7K6d<4^HPUUm>)mXapk7zu!%M4`Y<&}a3>AGB2 zX*oeCB4=_w=5G^evOsZ<#G*wru;N;EXfQFk>8Q5X-qMN;14&&*#f6R;tq; zRR8%%06w2tVheh|kJ9bly8-+E{AGOhqvzm9|N5VNZcyZ6rk;t{Kl0e~nu*p+?O*F& zlz&$PSc2e)5hJkj)z`4$owre%mv)&=#bY>lpdK&2x(YLA&BB%~TkwZJ{0^1LI5!l! zH~Nl>7GIALNN+iy75!+zyJGll$4ZU zC_(Jm{`1W@qkMWDBIaH=yF(=7U~w!*BE2ixX|mB$6bu8rcP!pyP2RUo^`J%w9jpwB zaU}mT=2w7083}VP zK-ERqFAFKJPMCbp>Ahp%nLbZ0eAB}|S%CJT_ClLZeuI=(5MQC~5uiZTa$)rhZ|jKp zrNY$Y6R~HyuIs>{P7UHMsGMx){RMTrvH)BN6kmU5 z+V_%8G(09nUsaYCBj5hqr=xqRQ=?Xk9-0W(50SNi2#(c^9ED|1Ka5>FcA{YV8Sa7Z zx~9yvI$=O3H^cJ(H!S}y9ZgUR&^lS}n8?MbK;I@(drLH!^jylDBM$mJ7anzeC|sJO zs~E1E8^Pt1qNwF|G(NoQY8VCyD_5?>FMshfeD?CGC@T@?ysCy3@M~K|^E&d!f5ieW zaqxLj+AzPj)5|CH{q~A1XN8M1w*#Xx3+ZcuzAspl*o!3Z0Rbvzmr?aEQzkOf6&}X)7sL) z108MX?&>z5_j8>6eSOxic@%-hD)F?pS1&_#VKdG>ZM^igWWp?|pY6fow2q-XztW6K^WS(pijv|K zmOl3;Vu^B8R7~@gVcLqwwCDz3{|XqDzV(H_p6*WT%Z1%t=C(qy6;DUOHwNwTrw69A ziB)#bo;BFLe>pyX_2+p2E9vrW*eQNV9R+i$;(lTJD* z@KARV>uu=A0Uby5JePJY@h9~exiPMKPxICMJY<}2!tL8B?;-hC)@k(+ub++ znOo1yo%?n}jk*Um@7}pHXU@!=Ip@ro=F2Ppi|PkZw-5RYYdDGjjvV4nL9TMT{1cbs z!!JCGHsSPv!UG|~vs_1cmdq1gI3_G@M#jf2u zao3%9;a9)<1(KpeRTdU_%57hJCkA6l{OCtNMqOPU-fF0?uR~d3DS8`QkXK*h(Wfl? zwG>5=VSO`!9PrK!g3tQ~C{6FqesJ1d&3X85&bxD1o;#bP9Ixm}bDxR;HexY&=NoWa znb}5#p@Tc=q^G{Jm^p{K0a>S-tm9Ic{g-N{M_08+NoC4|&#cg^PEaPS{xBTmS&z%L2UA`wOFpJ||ArDj9W7Xze+l3KXn3vS{qq}ipl8c+;IgT%l#JUZd?n~XbY|1Y+-u&$OMrd*Hj*w#*_ye zLg$(Am#2XDPmAEcCPz@}*zXJ@FamE3O2W#FtK; ziu?hTS+aMS`la8Jum75o#s?FQxvA)A7S58!M&#!gSp3$}*^TzDUduTu z9i1`Z%#%lD%5^z{w|`g5UoBSNP@6zk=PnU%_$5|2I;i zJai?Ql|pg8F|`^&%SoPT`2v*!C=NZ%xi>f%K|$d~xb)I3xbC{2;Je@bF0Q@yT5C%r z1?D7OT*ItOTsAiiAT1nL-RqX3d)33jQMD40!FJ@Qz*ztuu!y)) z;^1-^y%e0prI+9N-`{ZumV~2@Its@hcM=}B`wkS0szTK9lv*?SC532h+KWf--GKVy zBB!0R7NVj;eNUO(P36x%(D0@o6`*L)_*K3LF1c52ilDT|&$p93XkS;cgly7v^s_ zbcHrZdbd+DH{&p|&D9Go{XA(YRm^g2Ef-pFcOx*a8ukJ1y6{4vsxZ($h)ANyI>=ua zq8@ffDQDptw{(hF)&;UDo*#h^jh__5gpa->gbsv+h2_mPTzVMIZ%7CkoH7GWH#{uA zu(E~W^Xi-$LGdI?Px&l*#vh8iZu%@%ue=c7zV_#+A06DX7F2vN7u-})nyqC8F$3+c z-2^iZ1wYZzp$(wxZv;#nKQDq;0h4`0@O2AW*x1^E^5R0+XY>ZSEqIusBcYVlCqbj< zv{TQ*qWRZj`QyJq?$o0YoU!rcRJQ&V)-Q+MFGl+Rzh(b7<;O#ChJ~?^UlT1Xiz9R> z`op?8^Cq&)JWp}zbSFf2T2jw&`Rs^wUADV0ec0_e0wZ96_V#u>`skxLbaoXIiI5{S z0*cGT;oRD?)z%Zi{*I_{TG^{%C<^I^kf(Hbs{%Bkq>uGY*;qm1AG(rDiALgk_AbFs zixcQOG%k&&hm-H}fbc|=V`61LRBdfSG}rr>~KcnFk@cs(K7T>2A4+$2M2^hvq|tohj3&S zSvMEvoZtyZvwMse;y~Dv=%qscq7J+9cyjpwiVlqWlP8y?jFU8Vd zehGxjGRm#Hj1bHN1O3)^UwNs=u01=k?4=j* z%JNt7;!8inw%e`&OO{&BtklHC$eVKp617vo2l~+Q)F1GbD=)?LY12tiVWv@~E?nI2^w(i(MmjnpMum#OpJk!SRtIk-m)C*(85}B<)k7`S4(8(aO64h9 zt_We~nd?rgW?(UKM-Rug{T$<~Bcg4HurfHYB!l<&^;=s95ldzt3>nhvkd3?amSbA{ z?3i78gDS_AmbQ-xZ;*?I4{ruvSUf&N8W;33QG9wB4C(YR?mVR?ABnoF@5A=LeF2}m z{1SZPvP*FC>HlS)@nlM;=@lhYy^(byT-~Il3$4E_g;AVhA%*1RSFfufL1QFpsCo9M z_-SqLL@Fnag1p=SsqV}#979-LhV5qJK5Gk}wmSq^uD;-Bzz524}!1{n>ncfj0tc)~vyf9b0kn88fsi&LvO_&nywT(h=-#jbTq)6g_EXyzLG2 zopi#0N~Go};Mtz0F(4xd7!3GabJ7V_MmZrEh2|K2A0DgJ7 z7)19W8cQIaNI1#KHW_b)iLapDedoTO@dclP=WNf{E zj!saksD_$!pf+|!{OW?wy>1fYA^n;?$Y>ZqeR2v9(DVvUZr^;F&e);WiapUWdixnx z3nzpOl@k(0xr3-I97J`&Ai0H|lrx(VqQ`aKXHKp_U3DI|Zh0J|>JAlsIu?k>b>f}0 zoco!`XVr{SY7_JdFPHDQXXDA6CDUkYYY@EBf>bIWMMYIeCUPmGX`MYl7$MOoBqyf` z6DJ&p`|iFU7oLAHIy!r89%5>VEOdfjySjywRXAF65^L0&6GP@Iw zI}v}s^DbQZ=__!<4d>v(3vWP0#S}lPM;EjvAi|0|-~y|wpv7S@JG@kAZZ5#7r+*(i zcW%e`zyE#VXq$%s_4I=YA;_Y!KwK){=~kO;ptg+qtk%NNkey5492_VP zldjXngB~^<9N9p}sh2$6^LK#+n=+_vS|55z#m)GN$Km8x<+`h%{3M`n8 zn+VKC2#uq4Rj%Wqe@qgjfE?#6M#T87`a6@IOaIaop$;=hXm%IJkz3=vh|>n`DKzJ&f6UOxF|8^0#y= z*WxhvE1NicUk+DwxpgL%DEJmp2d&)^k3boJ>&|xM*%r_O=5f?5A!kdBA`pzeeDqpaJ7WGsp4VDq68_AG7}yW z&Kw?5)?{mOJbRSnl@>hH&>6+*-3h!X`q0*<7TUd6ff=B5wRmCZkw5w-)>M ztwc{xE5bD`5VYl>+I>nB`QiRM4`6Zgb9usAk=5CX-MiOe@4n6G?ryhM>#58}Nn*h; zGM1F|&6#sPHgDL4r=NY+#-$a*R8@WHe(Y^*#kSoIXlw5#H(r`77aOKdo`zrl`nOoH zcr0$a?PG%XH^J-3ovT=>yG1|Ry+|5yuWJaW z(&;q*@|V8|XWNB{T$}6r{VKg zeF1;H@o)J1U;lzLr--rm(?7-uOXh25i#vQk`YZSNg&`ccVRfL5!8$W9!@YC#-qAzc z6=Fmqj2SZqci(#-+S^)Cm`Z6Cro`5sd6suSesgy>cD8oo`s=S33_lldH^}q7cJJDQ zXO}*S;&HWzCgOx1pGob$?|Oh8U!)@t+;4s=4&C+d3U*&H6KTo0a&Ua`Xl9=wxtF6J zi)nvuhb3PXiB9oCDHl@|r6U|2L%^ei!Md%cFeR73Qj}`P?d$5p$|u)huzU{k=bi}` z30v+CT3v)D7yz=;6sH`eSP3;(KRi+!CP5>CmVOm*eILq>G zZ161ckiDFt_+ZA*LgFe-;>Oh?NaZbWTur5NNI#?q8Id0TY!#iyX5?RYMnz5%?A^Bq zPe1kuiWZ#@M01R~n^w80ZL{(kkiCvZ`hRx3|0exk0jA+KwJp^02k>N}Rf%K3&FH5P z9vQN|NV^p00H=(N;L3RsoHQn4y+_!v*=GbsU|1k$>;L-Kzhc|wSMi>cCkdUPOE6U@ zxWCp^If2i14=$FXA~#QZN3^V039Va}~S0 zO3C}~70=Vi06B}2IJsOsu3Y$`Oh&2W48Nex_yX`&O~_Rj@*wsm@h5K*V-?K)`9_rJ(JmD08RWj-&9=r?;S{ zW-bZ~>tLdaF%v~jS(vGEOw_ZG($V~U{vH_Uvz%GIy`6{%`!gPkD|zYst`f_<-`u=% z?Ag5rD_?&MhaY*2y~0t=%KO#KTIIIxadIQ>Vo7kAK{3ZR3?U6UuFc zU;D<_aMro+#gBgYGfbH@Rmk)Rf*k4C@GRJVL9c<|&OR3~Yy41CRf8o*9*H^Ar((vm z85lLH9y+hkePHxC$URK?m8(7b`qSv?O@tOagNTpEXI`rE8ObdO4jVh2E}W^=PNp(z zxPbE(5jssiARJgZ35L8Rjj9T>=3OmVwRAmFbI(I^;$e_i$0`FBO)eN=h&akjpB_FG z?gIceOj?;i)`bnubo`34MW8ypJOb~ek1;pBPH&dHVW4&B$S~`}A<{4wwQea)O+6NS zckRHVH~w4%_h8DDS>CdJ48vHVIK6t;;}P4ziyM|sk76jFDUU$$4Pqnk92TFO^LAgQ zfo(0Pj+h$PKeJDDT2Tq)XXHN1<-_^;dHD11eu>oNqY*D3W9BCl82Cl8Tevy?NdGtE z|4-=up?E;bn}v6bG9WCEH^T!VY4tiviOI}k>lwbZFpBdhM^IP5ti!Mmq*_K`1cnQ8 z8`z)!{AUbw@5V7ljMnUAbEjdj}+m5nz!#wh)oL(Ac%OlA;URy~I;D;~fZ$5i9A zNS~?aFKk#ee5ZjL#v*sd^lM~SYMiQN>Os5CXDI6hj z;lz^L3;p&8ma(|F7-Pnc!5@DALrj`@Dhl!|wM=LmFmqjapSbzEv2BB8cVTcait>sX z7#vuSd+zx=wr$&n8*aP-mwfV*_{tZ*hLm*-6A(%d!L9Nl%~S0(%=_0buUrK-al$0) zCi0+!P&**K0E&5GaQYxe|GO-sdePIDMsK>`ay-gE`TVY& zf#rhi3>RN~F>brWH+Xz}lC+xuFST#!a+N={KE?^LD}b z@#FECD?fw({>E2OGInJ4Pzm^so|wv%ZnFe zE9)Pr1bV~_YeAm9v{-dk1>b3ZcAx2+3o~cT!T2$i*#GjKNKHBd-eK;>e&k><_DT0l zhOl}c>Hncr{D<{_6aC5#8dLvq@(l$&ZyrW}78JBfJe+=d*8w0GzDzFzJ~%ysqed|l zB z|H|hLU!lmK2;m)TLz#nX(~76CmOuTw>NI}$Ld1oOf|)@<66!vpwn_wag-J( z(B84jatO-tl4|$Z3A}UE6hi#AP?u7$fZas=phVvr^t)nrxOoaEZ*P}yB=uT{ycZOd zS%7gS>;mq?Q3=;S~doW$_YNP32aE$Mx2#@!a=rcZ&TM}5^QQc#@|GXRFH;~rvG(O4 zZd5*S`uGUWp2Sd>&qlTij=(zx@@%7)mKIE@&w(o6gL1BKP&lu|z`CO^Lgb9=s301G z5miQX9W=}^eDmVCHYp3Hb-~r2O7GQhasv(}&tR7|>R-D|WFnX9c@24bfLSYnDp(pV z?fs~z8RHym%zYvSVHw8!F@fp<@X95fNa?Olw6^TWj!kQ@ZT&0QwRH`8+8c!fWB>`_ z=*~&R#DFz|cr0R}k!M^=oCDU`RfFj689-XJT}eef#!a1%NwXHAcI-6d<`vkEF4*T> zwYPPkxw#qrVq%NCv^p}=E28ER)VCADljUAwcsn_mzuF?g)U>Yr+`Dx(*1vccKJ($} zIO33DIX7->?hn?PCjE&?;g-iWZ%7g^YnMkEU{oW{IsnJS@H5tZ z7SytGpXHXq4f|p!NM?|i;EJt8%j{Q$s#}xE7^*As(Acq8wC#Yk-HR)FDo`Sr>X-)# z=EqT;Q6X`lld0#;E&6(TIxS~bDpg<|_AU>75A0mhJY_5r!Q{y&;X@y~6ED8>Q+)U9 zU&d+gIU5TOU5t{_vQXhe<%Il|TMC<7J5f_n0%e7n!XNfcqLCOA4!2IVzcPKYjtCV7 zggLErzVK}-uX91EMNS#Z&#Sv<1_}#nF>`JKzVxN9isxbk1)B=)N+?D`s69n_RBcT_ zHDv8HEYQ+`=eb}i&$wS@*?ara*x%f4O{8-tjei@Vj*%4K`S7kguw>y*Kkal}d+qno z*3*m1e0Q+p8@O_S)!E&P;H-JD(qvel5Wv%>&BlTS3-E4$beetrYhTAHr=EX+s2mchXnp6=60}NjXb0AA5CQj!@;AgD4drKa_(Vtr*&%P3;1@ z=C*G}bkq53GkixE)zRue5WbY>+?qYR@u{{t+xkK+Pa1th9H7 z@nO!#{WXdr^_d}1N8Ctbu>Rc{KN&w!H3`)h{~Rq({sBM!)$g!z{W^T`BbTGHvIYTh z%zQ&aC&^`3rDd4b{7fqmBc&xcxq{S5&a@zt4WQ|7P3vfxBS=#SE|<>k9(%^a-Y0KI z@K3KJXKV!8GpL;WP>!RHT7qBv_IeC7Zb4$yOoRb-V1$3yzmfNm{y)QPCRW5$8twiWJ(H;CKsB}@_M0QuFaDoF)m_gM9siIvS!G6OGdeFzT$d;5R4BU2Rb#$h&ZD$)+ zZ*0c;&5z?B&)oiySgAu-CUR%O%55VUG zokt0Oa#Cz<2&I&d@|52vOc6oGa0u{JcRFI7={0Y3A6bp7cLwekiqv^TAT26LV0UAu z$bZmFYj$4QVbmT8>QRkA=(-jGoXW~>gxN!cKX?Y+-EG2|)s9qBI0ey9037E%HVzB z&;+EHnd)#N;XyuN9!ZRu_=QrUr{QSp?85%0cFTe2kBK<-gR9x;X!t?kz>-i?Q-kA= zJ01_+dnYRLb7l8~OMPx`4h~&73C}#cM$9Jk!`DPy>-nyc%F#10fZ~$kcXaEZ4zp*^ z#^*oxd3^83-$%SaD4MZ#?z973nz{Ecw2o;rrn`jGjnB9ytcdVOU|`}4GdmZb@s-t3 zOpUL2y-6qW^V8EZRVcu21Ldq7?mQ`FR0Xjs&^mg6R1QcvY}mD7FVfu^9Cq9p*dLFf zcMt|}`9R}~z%z-@0Mj5iI1u3>ICS8Kcaw)c+dwCXg9qx4l#BCW(t<2`WJ{l|+@`^+ zo0efH{5-HSkETbKckL@D%htue5upG}Pq+d(wbSsAzg>gv+rEU4UwQ>*%{esSba9H| zK|oiMrgzWn@X~0yiVwvmhVNAGc}A0gF0f&6Aj|Sj%iz#0mr(bm2auaez?UTS*R4@a zHaMY_BKm#I*l{Q+h@*Gcnyd~iW#DfI7{3n>M*4p+@363c@BSa|7^OU{x2Y*COWp<} z)aY!b12yqjlwde%48!?T7$%oQ>@%*IPr(R`z&izU3!yxZCK1me%opVUE-{$i-W)|h zWHBg%qA>m?3qF;wFwsR<$t(_ZRMG8$g{kXZ#B|N&ECPtD1_IqI}gDEwA z=;)0?E<)?=kDy&R64L`}eBX)aUwB3J2h(_i8SFe0FEZ_&)|sMW2!84Z1k^4llQefl zu&XtS`jP>ddlyrUPGU&PZE=}QzgZ`N5nqd~E7i#&t=^3~P^~CxE&6tWR$#>*qIvi@ zWxDR34)pYPA}_B9CB-#JB$5bJDk)bqnk#txY~k2F7F)O9i$@>21&=;>KMq}d7>+sq zB-D6SL6vzCWUCL9*xOJ`;U719;#YsE)Pk+7+5nhCNK17UA-S$CqFJ3ywJIa2$EWQA!=U=bOc74+;mCbTl2h@KF5YAGcecP`ZVzxF`?B zg}KnrSy45L^UQ27YI<-GB_*Zr$ieMlAoITR%Fp1n*H+-ZhwsId_au<2ssz=J%n_j0 zt1dirV?dK3K`~C#YccGqu|r&Afc7QA-X4=W9~n`&*3698>74iuE`N2Eqo}xzO=snR z#Q?vP$>*N5yTu27$%KP;!?G=yF>M-ta`7T;XHnd_F@qQPN@pdl7TO&F3^@qlx~BHx zWgnE8z5(Gz1Ro-97(Vs}((+;A7z*?}hC@p>Jbrzs&Vd6hI~APj;8}eZ|3sq5n{gtN zSKo(KxBoY;zUtGs^s-BF=6fy_vnYA$(toOpXc&1`^oXkjwJ_3^6dVD8taSnU&1j>M zxY@!O5cFSD(DIi(Pi`ZW3fz42j3b|dYR*f~^uj`J4X?xGi4*bq*5%-boGoUEv#T1_ z*}y`cP46apNBaNJIEI3MgZ`ftAI}m7BmUuo)*l=kxiN;tVk~>kqzI0ziy$%LxEg_X z86h3Ca!lsV;VL zbCniTI_5lcnhr3YwPh-of?p+B!O_;yi`@J|B&DqZGGqaKo#`m+u8vl$dg%$gy!2i) z@7s*|Gs^IRE9PSA#8S;^6>J-|B4PdxTb||T#xZ+pIc82S$AxEgBnlOi99GoL%}uEFFvNl0BmTcwf~&Wd%*AH(}kpM?Cp zID$YKguD|zkdJjGa%MYYy~{0y@^gR7)gFv$Zjf$^!dl%b-4`&zd30vg<+D!Q|Rr{&`nndFVEo`pcp6sJ92l zNQbFCX}C?Fys=PjFDxu9Lt#OMb=Z4I!R$O)3C4|nKgQIbjlKI`z$>r(75CqLC8}#G zv0&k1%$_q3W5$g~L1B?_XeBM*Lt%ajrG@z(%@jI2JF)D==kdos{Q=KC^%~AR>nA8E zs3Q4uLb`z_*C1yM$|Nl(5&TXOEE@|itAvjBUD&$y8GQP4-*wKtvT^wQ#7OG|dB$yV z2u+&D>1)^tue{t+nO`Mt6h&xTDmGn~J+)ih&vQpv1!n4tVrevoj^m19 z1V-T91?!-0F+-@X>QQBRZ@=vX@IF~KsjnjgNnD-AeSPFPcKq(;Cm~@J7@+7!lL^U4 zKAuUeAR!T59m$92e;k3;RWx6dUn5WtkXzygkj%@q&dy=pq%I*qK!3UquRiw>o`38P z^mXjT;qxnS+Q*K-_|e5;{17#)grF5oWMaq}M8PooITGQhEYHO`r%uL_#iQ}SRWzs!=QbHt>%bB4fwhHFkZtzUaK9BGaqpM{<8820PujBv(h>z%sO)}oyMlE8}Y;wPvZG!p2gP9yHQoS z0B67VI*cB@7}ljkngdqJpN_>92d^uzNIFL1=;c@Nk}`S?#<63^OW@I79DU?5PeD#ow6hTx&X#~pWD=fK zFSz!IroTPSq$RBPEVYlO10g z19N82!%g=*k4#@DB9;T|t!m@2_`0$m>HlvZ{Ok1pOm{1Kx4w+7l@FnB#|rfAS%blj zM(}}jAXOxuLZWUua;F`Og8647XY_2aSk91n_|*E2JLwRfUBU3-8S-Yq2vUxR4!qyG1 z;mP}MK?&TEAT?Hni zHFZW%S8O{TJzShp4H9O@vBu8MA^lp;O6G2J=xZQ+KZ#%0Y8)Sj>$uZv&ELvz;8ibg zM)G6GG=5{l28^FD24!XCF!Mf@(7sQ>jUmh1FPur;!nq=E08ERqz(8iuxe3rt z732#$b;Ma!7PoG2j3b#$AeEDYSTy3uLDGiKvwdVqzhBbO&J+R~`yV_Gtj;crsE8&8 z<={%r4w;-$a=L1yQ}IAv`P^YRW#3j;N9 z+*MqRQ`+qxMue9)FCW;u<-=fxd=a0vuG}I1cH+C={w}6Xo92CUCk&+{Yib$8w+@eD z^Rx&a*vj$1mJD`xxd-zp#SaJ0)p*%uK?n}0+RiA@xH(NW+(YFXBEZd{(WUB&q3a35 zjZ646yk74d6RB<^f!#6R!)1J=L#IHruv#h1Qx z6ef);)mFigiUyH^#I^=EC=a8dVyFbQ@hllAZ>{^p2j^k(gi`$O=9lpF-Hlj$+K274 zv0zse_jIfYon1NpS%g5~mO_s#-}p)QcA<6OcD(n@N`xO{FbrMlQ)2kWgcEBJldA^s z`tG>3y^x}zw_bWY>MSDAj|?_dCoPgf2`Bs&lGcdZqQ|eV)}9E`gA7S`0a?H}WS;J` zEjr;q?Hv#foFv?H%`~pp2+|!#AWjRvV<_jIdFkPe=}5CWzu`QnI>KxoRGnRn#A6=5 z&aM`8_sG>)RVXeNJR@)T)K@$~#ckQN!dah679&+tjGEdxR#<<3k8s*_3kQCWwbDzj zmW+zY?r1cDoSZ`ISw&^wIcDm6fV%C0`~8=z_E-3k3bagwuN`LNf{DAj_G99>iGtRI zn<>JWjA?D#D{TJOjxKa`_E;;=fM9Qv&+hG>ep>r$#)+2}vaY+Q4`_omhR7AZm%@US zaB8_*pZ$xW62j3{n4gRG&TglFsjO^#R|}zp9W)NCwzhV}rSOZWBxeRQPP=QJ6}C|* z_kE_4{sF|YT4eP0ga%3r|OP4EL)nG4SSRJ`hlr&lL(c@)J zqmtmZhiydg>}?T-Lys%Mqj{w$IrR(Z8a)TM-u3_R+AGU(<>$VP>C@+0v(aAhoPHD9 zR^hrrjbkjEh7Uy7!Pj+0d>Y;WZ!>e23V$)R+e#%wudnsf((Qyk^5877P8>slkabZp zvo+Y+60A2$4`_cO&tdJW^g-=Ctly3Fe>IbT!~QS%cc6I(I-b87?a%!c={;+apNeDt z_-ZVkdo-qusl@b2wWzHqL|$$V@{+<(jYX~O1_tGo^8;w_>cJ~(cHzY1WUN#@w2_OqYH#-ZyX zPV?ntOO7M&bn)jW1aWBj>6ERDict&i_F>)mM)OhLDQyCp_cx1yc0VS}JzRuEVV^ZN zfK@L(jtBns3)Gej;;N6%#9<3+5Q|1(1f$$^D@!9-S17KR5T-(c7#O6%AXiQUCmuBx zWu+-xck@a-e)~^x$nh7UcKj@BpiPGd^x$*-EG*xNMf2clg*s{4oA(I;+=6Kn$7yAv zpewYX5)vki<>bkTZ<3e0`s5+*5o=OhI#>q8Z+Aaa%nP^8l(T_7o@PpQ21sFkF~aSC) zx_k*MZhQa}j+>8?sS}~!sOWDCGzbl5`UbzBI<3!4aXjTsJ0mx&0;7VItg?cSlhK%3 z2c)N`l*f7jkAQK`xo$Cn8 zP30oSGRUO6oaD^!>(pA)WRaKEaCj=LKZn6c{}1B&H|YO-pbzcKZbQq%KSO%w3QQhb ziL*X>9FAW+1=A-~qo^Pi=o<7{E_;vWCd7a~fzv9AaqIW2h()JlV;2J+OgDPU0ieglEXz{7MAOjLGHBR7?YflyVXG-Z#F=#Y-=(tUf zH#T(hGSFg_%}hh7(d~j96s}&m0kz|1V)XbUg{>PwYvUd~dEZ~KX8EHyc5x*xIAbcR zE1h$Cv&lke$d&gjf>*)k8WUQWn@$rDzB1UiS1-^VycNXYAIjQYSEa~bNVuppOzP;y(b;U zpgM67&VfGcZ|cK>@e|1kEI+>2cQoE|SDpodhvdaH+^T`4j{vz6kFK~1>jut9l2h7z zr&w=qC-&{zD#nKuC=ioM@tEVR(lH16cp^_YE879%0D*b7xJyR5zaM)W+bqYC>ud%LJx&)H%uI^@&FS)%4D8LMt(_fm zm6vo_<;lNfQaDr@3WZ}Ul@muxdly>8Utl#BCwZ$y@*U_nh#XkEcJFjf(U+h$o?I&D zFD-Q&+m92AMKu28qLL1p#bpY}GY3vP?KDiEJ{{M7|62U@)>}}yyAicV&a<`@N>EO} z3UoksLk~S)O6`2id-jDLqX+46rluthDj#gg>h0SnEbgwJa@&H_^bVZ?`iX|H-<;eH z{ZwuNUGwY)tb2YluKw)jaM)po;Xok5>^iIz`tW_z7)~9>@Z?Tl>COyRG;r+g=GF{N z=z#7(z&P;LMDb9ldC2cjba5?zvjzy_%$Bzj&cku&vJxS9!W;u8$?3jpbSdZQ(3K;@ zX)>PuTdbr8H6OVStxNxapZxqsShsF9uK3KCk(XZ(#6xKFCO8SriU1~gD{(04R>gF<#l z-_YycE&$#TjP(ETIKVs7|9QFx4Yz+8txsQ%iu@=px%6aw{Jg_aQj{WFq70;waJ4Ah zGO}tai%={6q!aA&3y;FDZg~nf-}@puwk$*M^_QV++j6}Bs&C`uNx4{9%}|;O;vRt! zIG8~?u;$E}gWLXggBbMoA|;$Ev~%?iL@is1Yr4<-b;7*CJ`5s(#&yAs&jYH}I!K!{ zO_cL+(PH{F>1&g-!J~ykEtC6QlW`QkD}HsP%?-`iuznX#z4*h3iHY6`EImMz*Q7?)?fhc|lC!)evZd#_c91RDMU12!%_-A+N zJ%$Ae@zQI1#BTwrs%EPM6Qq7s`L_>p?w30J7GCaV%qM6NwzRrr_4E-S6ztexHc5Yk#w~Ldq|@@&n^)D1>J38&5QhbVl|k!ux9k2LZ_am+kHCh)3N6 z=X?sS)mIVPh&)hn%smj@VRh+&x0lr&oFL0IZrnKh>i>R)-~8Wi(Z8z`>u-MqT|0I| z9zd^jZQ2pQlrUQWGEx=H%>aHPTA#k4^5b#RLEY%~gMNON*ENVE%?eexU%gJ1I;dQ4 zyE~v~bm-t{2pP70)lMvb;C1U}g{!W*$~qAGKtZCDY$FFSB}s<&PGtChM?~?1B~hF= zDT4X}`!=XI4W>c&8y*a6zi%}E;p7qaKJ0wSZ?=5t;5r)~81MzGNof6H7{G=uAWNiB za{Q-IdhzdZ&l4+f)fFERGtw)9f|)#rj>)NPa{5zNQgwY#!>KOQ^qLoci0U=w1FySz z&;4==)9crCr6MzA$`F*(2oRb|<|3JsBc@~0e$p^_qkTpvP5I?IN$U5v0!I4(yW0N; zI~%d%N2j3mpTEY@b4KCe-(P_*e*6TK7Uz1-E3G>!oXZhTnj0=B$i~%`;fG&%FP^&b zDjd0Bf|vmGKnuUh>_+2*Kf(6jeHcqBdo1Twuvd)02prrXZPA%CX9{~P2RnCn&@a}% zef{>9EX6bglnI$^2k~+s=;YBv0wWzKFfkM~5j~Stu{3qrsq0}nCgh}#a{t}rWK+^| zD9$meL*2M?@^!=7ZAcYXW8$<0c>b|};NHLd4`z(%#}B@8G#1UR5d${O@XY4mrvZUw zogsqP-{fW)D=klQ+}o@SIor zDi_N^GKjY3y%=3vV4YE@(UR+ml)8n7r1kCy0AAI+?WUS`Vb6~JL3dYUv?8V#-`yjpS~PVJa(U$)#+CI zq1HB`4bKemX}5IZxZT6*6Q=$iq7=OJx{wbsu#BildU=3v#%U)G-mcKq)t z7}&Z@IIT{^-+uH_jIS?)4k5Of^-E1d9ukL!kFPJsoxivQSAFO>YrEAy?zkOST=6Ni zwYFjeM&Mr&CQqJ>F=NJJ*{gf3i*G=bSX(a(%o)*sL;FTxa096KXt?rA?`&EcZ#9&I zR2jd~ffC(c$o>2jg0#Vqo6OC_ayrp?dI6#0<4$^o9s=^_!EKxOVE)|6SbE=I@aXNo z#97DH;j@qtac@Xn^ zPnv`)KQb5Tmi1VA*RRpr-L5)7nAz~~R`Ix#?uVG1Ur}thlo! ziWj#gu&XsD95~GL;W3&G_n+PKb2+JAzgg+d5GRbmyJ&#c2-o=m#%cS|uBlo{^l`N%xd|pzWLx8%Pj>P4DLCq_* znBgfrM6Df{e`sC!eaCcOt4*Ig8*2}C@7{?1{yr7A$yjzAM9jEE4?ZK&a+}JbI|EHC zzl^*8>}>GllnNZV}_Dbt(UJH6ZgU_!^T&_Q^U>*;h{ z+(*IaHzLmDqok#wxeYsnBdepk7o~;y!m%F<^c_Z#(J-fq51JKNY2lfRP-)~qer^s1 zL<6Md3IT&zX|-?0{&PVxV}=GC%#m*;RM7p)ziQzV@ z&jmh@F(@l1n9smez<9}>j>w&kLAtWPY@2j&$6e;1SM1_fW`ihw&=`#h0zZx~H2rq$ zZfwKKzb{2ic^!WCv!7woq)B+I!0Q7dqonX{PA_A)a()!QJ1L6)cX$-Xjfq$eE~ZfB zgDO_la7}a>pIsV^onNDoMpN2{2g3moKO7wgFJK#khLIq&#$*{Or86Ry30kc3|(W{pjoM zM%$j1SpEDRxcZX0_~3anke{bJ5)7I|vDd?-5lI)iWCxnPt?O$B#el;wl`OrR}66Yi~mf8d};B zqg$eA73iXc;5=wnV99f^?8DgAnn@;ez~wa(87gdvWD@@j2rs_t`*Kr9OkUN47~~=4 z@}|9~o_Y#D`TkEaxVsB0Zh8RCudm0TFpPbn&mCcB;2Op}=M&SUI~5pKD5oiHM^(g& z$OvY)GdmrF`@cQ~Tum23n;nxW!ETv4ckaWgTOUDnaRqL?@kY#^J^O8GKi7DXm+i=v zS(UjAr;TU$&XEyZdsGysjAJNEGSJI-G#wOxEMhBbJT^oe%JE_GbzFRiZ(-kuDg)Pk zhoS?9_#EcCUcdaJ$Zouqov+~ASDt}O|LX|r90e7(Z!|Lvn{Iot zz%$i<>YoeAoH)LE*~vKT*x6#Hw;wRPeoJfAU1EO zD+%S`j+qw^sIk0(hOUpO&ZPs7z$6Yypl|WxrVIhqSHXxrr8>^llkTssW1YM>50SGR z$`&*#Fm$>GMc?1KZ8v&*`>}RY6R!IBp*a4CF^EL80_upBTBCn3Ji|J)ys0aS#?C1A zwned9{OxFoVRviP+FmDb-V2sSm-4zqgZ7PUX@o9k5ganR3YULqE*iJLj14QFB5mhS z87Mc=ISvA^0y+2EOG3K06NzX)3JV+uACp5pjxCKbY-^4xyg^ZU%|Q5xPU2Bs@X|0Z z3mET(Wx-dv7|HcN=rzeT14Gv@F5i2OR<7wBjW?-IVua?w4E?HGI6hSq$CekS(@t!@c?rL8QBFE_)czma1il8xSf*g zh63e&jTU`Yfrul2MVI*P+P(wp9(Vz@C6&14mRm4?{`_~u`RLZ2yhyz$!EsD|1c%i| z@Oong_iW~Pc6SDQyXB1vx>z+9cUX``e1)ow;o_xgVmRrzA?|R?7AA^$mblsQ@hoY8 zq3bQoOdC#KZaVjy&DIQgvrk8&Vm#LVkaTjn=Kh+lpl=ATvah%lSE1`aJ^A05cHmFU==ma#BLb>_IuX5Q%wNXDe1%925CN z@liH@p_GQbo8pf2e{;MrTzcHMs{c3K_GJugc*1sGoqvQfkkxURaGT<|`MDfz>MpvR zk*mXh`L*-0byqW9TelP6{`R-68-{1hn1K-(fqx}fuwVhkj+=nTpWA_jb8D=L2MaXj z_w|MP&S+c^8<7S3n7d_5@oPBWz1312fjLoT5X4-2R~Alil{TgeaYD0RF0~-!mDC5N zTSC8FO|ZKOQQ@(=;=}WC*n(PZENhZz*)kM5G{daJ%R73bXzGlhr=MBplBEY-3{17L zMIq%;!Uai=;@k|X3I@b8$nEYtkVmL-pwMGyA}^sjV!3cF%cem%=C(FPtuw9=LXBRnc3WsS)-j*g0CSP` znm4gXAipp$al&n{kWu&6ZWuZqitg8V8hT68&Xx$*1x*heqL)G5=PB5>=> zD|zmeN0BCT6%r5vL-ZeRibJ9rUo@7n+nNXEI@DiXdL9%ju;l71Inar^y`2+X3D^QO(k-~RSD%aD2}SI)UclU%VU&(_QpW9>t#BlzawQQUl5 z3|~4lidhv*g!}Z8H@~xN#Y& zqhQ?dx}qw8htwN=cFRnEgLM0H)0dxW4oVtf^(974NA<`4i1geKa9YK~VRvSTORA7g5(R)(GYful4F##}nPL!g?N=wpeIwjPL`Y9} z7rJ_T5Xs3Wg%7risjXDmtiYyRMOKR<%frV%{&BqU%06t^(&B`2(Z9H-H@sdbgIrq>UR38B2{a6R7{R5im|?yyqW#rP z6BuA=dXTXYHEIa-^5KTh2Aau_9_&SzxA?xgY!!ODyK&{m=Huwa^_m^af{)yN@v+GT z6y0fNt)^PGHHoF`lX!k}60h%$V{dyDtvwNIOWh#1&qQ){xBDl<(}N7nT@h^B9}{VF z@XV$hYekb>xs~Bz{%ws?U4&|F_Ija+xEI^Cu z_u(*|jYYTMagvtOL!EA>?S`f>_g7z;CEwdx_oK0Chjr$famGs_oG@8nwU$xJfUNTH zaXaH^?@#Y*3aSvil&(;D!Z2sf`KTXt46eTVGoqXgPE>}jo?d71k1uoG;?XPut)$D> zkZ;^%{sBR@bpJ82Ax%Ts%YcVwBcmJ?4y>-OE^8ZLB*0kq;qB@4fcvUIPCSmNaA4Vo zli5X+S21P;o}6S3{*|GutPCffbP5J|1`{jGuwZO0>Iw_6@8ykn{g#KY?crz9xnq~T zy--^o$vt7i&7D;@-Mv>vEC~|ka%z{VPp+!lvmYD&@ffx}{W{)r z`g?KRb=O(5*Y7si&MdoQROB*TG&O?XofyTnOJZ137eR5t=`@ZNA}&k)}|IMZ9$J!D!Q_%+d}hG}U$!SBcAfx6IX;6|D(&hac2X0A7wY2!+} zsP$nd;R`NhA*?GHSQFJ65acJ18i;DFMdC@Uy@MbIk!NROmL z2rj0@r?b^c-7qarZpLX{l;NBk7<3?qX`G-!Wn`MXrKJV!UBZEtD)QRH+%8afpSBG* z^d*I#owlQR!}||6@R>@Nw=|u^52Jmg|7&U9=Kep}*@V5D#(KX0{`>LZgAZZ^M&Mrwq})E|oO3XG%mm#1 z@CIx3tmN)g4t&$i>8f;_4(%;=*Y!WT{euI6PRF1o<_>z5L+cbh=*tYI5vf*6k8oUVZHnQgZ3(Q{m9U&p z(i!DO^<*j3`lBM0ngF&bF9xx_5$pE8m$xRcqdDqa)&d&SKo1Sm>E$RX%E5n~F%^5Z zt`L8#$tP`73x+auYOhYV| zLa^<^+nPB0wX?Go z`x>@jfFADd7S?kRX^asV=ejhK^Z|q4wS%-jjUxY%tM38afd+w6Z{jg0rvS$t`z5^g z(t7;#=RXn-b$eHue(Ru8ZJdM|vNxtPi31?$pCjJ`A~dWjG%=|>b2Ci`g#)X#tyMUw zdJ&Dfd$;wj%e5M`8%@TSSFcJ3m&+dma<8WdlUworl|gpa(@#4Cy<9FC9z;?&>&BKB zTaK*J1qEnXvjeZ+_BdAFa36L(`64=Z?y+w!^gO{tyMcBxbNzB9zPcrdJK^-~t-u_= zV`X@T2nY=xDlx;-(1ab2zkrpuJc6=BDQ^ASt(Nm@;>3wKn80&niNB&8h7-p`@U!Eh z_~i*Pe0XLQBDv5spHYos#oS_E1BVY z2pudSd;<{zc(|{%LUHmT%59?Gb6SyaMmzz<6+zyd(@}fH?bt9d23KEk37&l7LECw( z3tqj8L6g5M@Yzo?gd%aHa4kD-`k>?E21VnGQ(;W1E1mpa9A^ADvViMa%Z}IF(ku*c zG09L^>BTY5$c6EK7;tWW)~Fi}9={|ZsT@8Fc%;&QY9jnT1$AvHo}Iya<{D>W}Z z>rl*|GRis*;hW$5Cc3-3F#;p-uLPBqmDceU%U<1w*Vi{%3@!)Fu3l0G+)&kA=n50= z56pR}(sOVipq9M!)*n;zqH)}W?&KoZRF*PubAL%@900P5J1-txr7V9s+B>oIv6pbn zVf8ruxbb3K!h#6{;Oo)>@p)&fbX?_NgK#wIhjsg7SY}>?!PKe@m>&+gUHwcrvJzM> z@@ea4#F3>-NE*%%Y;F7b@Iz`bb7BEDt$f;Ah2_($N?Q**bK8qMLlQA5kr@#6Wg8~l zX?g2lOeutC*HDZcij&FZ0o&!ul;KWbypNz2V?R5`ns6;&?%P0tT4FwavQW|EcewNb zYMGcf9P;>^YyCiZcH+gNdZ6=59@BjTc;)qd7&U4k+~GZArcyHma&#KWHyK<#?3avt z5t#uG1!rtT>>4+mF@(@TQZojF2@s@N$O z#-a`;g+NnZGKAB#fiV(O@p+CgXhiy4SyeL=r=9)-+h;&^0h25Xx+I@0zT zLUtOKb-->K5C`J9eZi^E!1o~r&Wf1CX<68sQh4b z2+(j-zNR=vIt=xp;$=wGOhe`SevIY^e~9mY_d95AYQP!qxd4fHj#0R)1d&H(_{0tA zvvds(AnRf&+Si?DPQH1Dlan8H?$L9tf+R3SIhqUw>Db$_aV?NrhFDQGvcYiqD3s@z zFO8_P^njdUJcJg?FJXNOYTEzQ{-5b-M|$6S^lf72II-+ijo4Hck(=}-n17lE?b6Yo_WT)*=+(dVCjT;FbrVs|jeANd+u6;`#ZQNHC z#`CdcScdsFpyzlX<>O+~=j9h(M{Y8L51c(ij60%GM{0yXwRG06n48AxJqhe=>hz`*%;?tgnZtQPNWA4H^ zK2A<^rBuKR^GyLq(>WRYVJ3c7aj2y*eR6Fg7J?(FsTm8)Lr;T1TCQJl>OgOAmvCZj zMrFkqmX>Y!`q#gK+EKL_ zKXICxM1MBOJw2T3@##A)zCi|sHW3WrN`LgD@Gv%E2Z;kq-rf;$C5logDo|;VT{AJE zETjPJx3(DCapY`hDmO=XSo^Ve?_N8Jz#EN5tzWrZH7=Y$@{BBb`${BoP%J_-LTPC! zPB`I2{Pq_sQIVeucUiJr7TD0%iLn(W7*$k&zQJO&_ohX8Td{T9K5$V7`4vUTuP#T~ zgjysk$`F++(wu>wWrjNv+CHbs9gdR2YZ=+f0^ea}3u>K1U5mouW{2Z4y?yA~u^W3= zY(&e}2GrHo;lIE5-#Gj1voT@9goC>7P2iquDh-X%1q`F70H=jQF%%Rg9?t9YGs-mJ%g4E(c_GsGZWLC4>4nC<}8^EElb zjP$~wiVbOE#kD9u_j_ooo`(PZ@wc&I-70+Q%C8{5u-Hcwl7T0XF$@9>N!B}Y(0$tBFMzVfngUeyTaMIo{mG#JK0oHl`Q%?UGHXV_3H z_>5`b+Bd`Gr~iQdFSqseZg~M6FZ~1EYabWy&EV;7?|W`CZt32hz5VDJ^jBZWgZ(4< zWyqg(edn!!XdUB-~7%c){TQcxA_0kuA=iN*W&ppVMwp)LU?Hi zpJ_uId0^_Zf4h+$AWj z90PaD7bo~ES?t&w)=y^8`t2WN*w-HQ+l3h{1k$dGGm-F@?%d>>?c^54P4Cv9!V_FC zrH{+y1Ip{vY3t%=%-rfGo6c)Hjv(RAdt5lLO7k5}HSUf3M}lDlZ$2 z+}uL9V187EWUVt&;p7#>kS8~AfHFpQ-(64w?Hc5!hYI=j+n?d(B&PoGdY9L?fa9$a?ymp>z%TlD&N`$mE&BFIT3QCw7F z{S_1zAej{J#l@IAXRh#IPPbMC$wMurqwC#V9V89^fk!EWWAM&@yRJ;8IG=xU|kc((wz*;_Ht}#1KQKvG7uyTXTVHX7wId1 zn5Q_h01tG1sN-O6riF9mdlm{|6x72YXQ=XrE1u!x!w=|vxOhz9mV?EG%s5&Mrpw3T zo;$vRO&dRsZ-4KnsH`4ktt8d;v!aWfFh#i21e!smtdgQpf_8|CPg5eHt>?taaGflg zBBXAV1b)h%-fpZ}y#_h;hl#pM84@9DSh(Xy0Wg9q|w#ghqasc;gz*J zvGk=)XnN{T=zRGu6wEsd#ixD&iOLCqT;kz)k4@}PdDr}1P3ver zB{d@$+|wmpjp$>y!|SSxap7qT@ISwM2v0om1fF{8DKPU~;g8Q80_81rrP zfX?So7Tvn|28GjT?cO+Ax+0i4DlMEOdgD+qH5^A}Sqkra&vd->+8&&6)L7j6*cv?a zm#0uE99h#2JsCA)rrA3|h(7kWa5Kb&9hL6q!imSM!|T1=xZiF%6>b^5RZo<^TQ_cToqR+z< zi09S3m#15v{{A%fH*7^^xo~3T6{`qIn`i?WQXzrHKtL$D3>Cno3onL%M~K5flg8w3 zT*7S0WD(9j`~PsuE$_!iKl}mw=%>F$l^B;WB470EeOlF`2Y^&3*Nd#8QFoaHKEfzw zxR#HCSIg7-;cvu}e~aOXCm+Yz=e!p)tILolj9nkJYH?NxNT)!bJe({iihdzs_O)~% zUX(=rj9Qe`77K@12KgoVmg7dkpm6H+_YI)0J8k`?g(2N1{sz*6NcX1E)6s{HrcSi( zZ%3w|p|+|PGiS}jAqx({p@$xVi4!Mb)TmMK%8H@(_I7;m!xv-ID=(t9xWKA|wR@Y; zlODh<;f#t$m5tH}HEULh!TWK@J@1#uKjd7z^YGU3%v+P+J5A5q0D_?hI~vgb+>L0y z{|6ZCYOz*Wjj1igk@F|wy~oeS+-Y?v$jb?Egvz>hNMlPU{{F}c+TGRb0; zp87cy9rbZUa*MrGeOs4f_s`D4*FUltpSk!L7;G+|#4O(s5;u%KAiTSVasTf9Z8-G& z9|(tCpLL$l_19l-O+<~r2>h#n)PGMu{WRY5p0jY`QKK+r!2+bYJ=g6HsP)d^ts+sB z7>u1JARBma+(@?@QpZbJrw)ALo*ArsH1^{#J?+r%uDsC`?%myhJ8yjyS6{LKOBU7p zAC!S63yA(bZ85Cb6GwV5dm-F>c@`aRa?t4YhyJYy(c%4}(AxDsE>-?l2{&&+TPoTrfz$+RU|KtBH<(%GrJDcCsv`Ts?gd}_(nnA-q0tE&enbH*uT9A zYc{=xr+)J|dcWU?lAiQ%}Q@M;?i~y1IAlkobav0=)0Si*U^gFQ8(;)_AR* z-KZ%Q<&Ef(9hd(!>r>gz{mI*oSWaB5n&%UZb>kq6@E z#1T&=5tF}SU=mBj5RJ>fsMX0O^A8AzSX#`cO9x=TbOMU@80Z~DQDHGgj~oZ11PfbEjI9GIj*}#~mMf!($rG=zy8| zju=k*j*8Ap%d|kGevz&omhq)yF0M-`5k!vmF0N+_E#`z?g^MQX9*HX=QtBl zhw+?TboT)}_jaSawooa%>wMxN?c`D5+B=NYmAm4L`S?7i6br}UmDX)KAoR>NHy+n; z8l71zNIrE?x@f&`ZeJ0qaq`&VHG&i68=dTwaYHJhD> zcf3F#uA0h?@2`~iW2pWYe7vi&D9vk}Xa_?3n=ji{GL7s>cstB#W_%7CtGMFS`F>D1u-ZF1AkU|Zdd_*j z;iO|pt{&Rc-iiJML*;}DOrBPQ>hYDrqo0RpA{OrXCSd9g{zrK>7LY1PA|;IDnu(Q| zxnzpx(Au}P5zAkF9*;i$2+E2pFk!-Y%%8sir<`&M4msoyYrEmw1+v2(z2s;VmX)Ei zr_qoOH9xDh;YQNhwdRhYDA$fZN8U;K3l$6#k9fwRs$8$CTeXliOg zZ*MPp`+BYSbf0ik4GdVFJ(Vg%;iy8Z%<_ybd3)g4v16@Y>A)%~DzeTN`%eYgBP6T(rl5GWxyTiu#+3_H-uyoop*|`)LEa^@P zu8kdKSa(+s)~?!!6|ZiZ%4({htm4z^#iO6_ikBlHRav=aYIhQ!rsbqg zXkD6$=+!SXw0uZ?yL5THMsV{G`XqGpF|_tXP?k4nUv#ENaF{ri8@C)-8y?&(#?Ad= zOdE%}4e2&KQ#;Z;+&VRBO||6e;v*I^8SFZo{KitZH3C6xP4S!TJt#&lrIj0L32JSb zrmd~PI(DeEv=*^=9D$Wkw7ztwliNXc`b?{`yzEJO`m4u>j+X_~Q@rpitUx%i&OGbq z*tGQq{OR|7dv`_@_Vp3D;b8CFYE&aaI-CjM^z2Cp%i&(9xg9=vj4`ecUvZ*Ogc+gWfclmi&c) z{4BT1HScZ1wv{`v@#Sr3*wKu5EP+J}7g;yA$gOhu`T2M|U~q5{mw)nd{PUi_BgP`w z(cFfG6YG%^vu8a_9WvP3;om#uHp<*$+;-a?sIRZLR=dgicYkI6@>zmpdTHFql~wNF zh;bec-2LOWw(AuWDVtg|cwz?^e;I6TiS9&XAvU$!@bLmo=n z@%$}lyZh@nYVjOg^ObL-xVX%$9IOOTjAtJ5Z8+aeN=T6o#AxFrzMI6|LTCs38pfSX z3(H79$bHkM^;mTHktjO%M<`tUKHy!J4+lS=zdJCTddc*5V*d@FK*!5>f@KD98&zy0kN9DCv+m_BQQeQv7rJ+wc&1AUI5vw=jkFAg#E#;^>?cX!aQ=c#9=pdtlKhD(|F`uZk(`)AK1lT(Amr+g5lRb#E= zUY0%l7Yuf7z**-UZH?`Ql-F76!L2*R&jT2@VVd|MOi#hY&y;7}G$vjT5NLnPI1g+X zbS7dPlPmjCS275goIMU54?VdBzrATM-gC~M#W*cR%H)@jwxphuzDf!Nga6&sIfFEr zw*;!ZoybO?xkQvlvYkd67=bI;5>#4h&#xQ!BQ$x1(}u zwJ-*cz^r4Y2(Nt}BC(JyX{O58G=p>!>}%zS$C-WWhR%S7G;UBN9z|YJ3Zo`hW5!XF zF?I0-qzZDde%*Tf?WS9C=RfYWZXB9Cd9roG;adsPX(X3#-+Avn=;-LS4#gc+TwrbM zGZb3;b)G%zzvH#m+sud;(% z(-CG1?Jq%gWhtV&ED~lqhel~I@9fdVd-H(6X`3Fpx zI1yD4W*^@wjAy^z|5ySOWL9M+AV7~ehI{fxi6XGWGf@G;0UATZS4QN zw+nlIdoj9RyB7(;x>vma82sS#@3pqc4JG#}nL|~d5?9K??mpc8_)0YH-i69U4=%sp zFkE{6k@(WbPqfb2nmVr9+O~oq$s`{ZTI?{<5mpZR8`eFUm#bZfoqJpH>?@nm)zyXf zzyJN#YUL3afqykfrBc=zrrWk{!<~PBz&dK8dQ`b>`;pE-$7=2wLHepGMZ`GYbUEVn zWu}G&78nrRt_-0Wc&l$nu(Hj}G5eLiOvNbq<_1dV)noTRW1W2^SGq_U^j~L8MNArX z0eR?Ah5ih)&b(^vc5d0@Brjs-cxJj=Hd2=aUAW95LQOfi-mNFS%pt;UK+xOK8$m@u z2Ik?GD>-Rm6GHllp|U&=M;tN=ufDbsuf6ml>L$)bPAX40trA%G+OrrtwhH+LxqkVy zf_h|2Z#l=9g4(&=97mcqQ;B7cnSF$dFx-B4wv>EP4LXdS|gM`tjjV@prM zf;ePU9z||y3}(-{K$NQv_x$6JVp8IF*uQ@_jE zETsMFLy3dJf%W_gFW~v7pG0YXE*iVKg|Kfxq9PwhoHHK_PMwAPl037)oP~j`8@0Il zIXwVu-_MboWEgVi1JhsBj*`sJLG7d}Og>~R%0?Aq{i;p)`)zk(`SRtMJ$p7PD=Xhp z=Z-v2YUiF^cwyN~s4mJ!Nq&mZ#?--=X~biaRZhp)*U^PZ(`MrQ^Ut@OQzP*9fG1eR zpLAN~3m%+Q62TFp7!Ds5L0ti}mX~*=r4fOl76zI#pwHO`{0uPanJ_{0Mj=cW(RW=J zBTE`!=zbN3Crt0Y(K2QsBUV&{{5fZ$Y0El1aocZET9S{6lczg}M5=UBqcVV3w+%=- zn6PEfU6Kj&P3qW&q%tVd^R@=6qq^t83USd+|AZ?|a`v&XOyU9KYzz z^ADvNO7_F%mm$N$Y%T_KUD9tfOvkA|1Ht}~E&l_Bx3K>Y_OzklZ(l&iOSd66Cx&Z3 z_g;MF;-kfYHlbvtvs+N}FhjRv#_Z*LZ*M=Yy7mri-_wk1K6Vm*`sH(R@=?=;)2hmH zt}5qKKsBe;f9QgNPpj|`y)R(o+RCkxr6%l$OEF0}fYo5sOU z@#*J6(Q}U&L1=W|xM&!$&$RCYg9F&PbvGWm`zh>e=*8*ho{tS1wqee+A}pL+Z78QI z9XB_`tb^Ni=NzMDWSR+2pINXD>BJXJ$B8}R)|GOGlS-P8lHin|(u2~8#VjXQG?LAL zFiCxy0Ue-o6o_%t!a3D=eeEu+dTkYI$InDjX$AIeeI31BEf_n#E>IUtD>L)>htwq@ zNhz8}s@u*HEfNcOL)H3LaB~BHE5+7yh+hA+eKp%cFPm~;y!fZFGit4nD@=0e+DYcK zYJH>l8x#(#_ga&wv=A)d+4Bivfp8e(26)%~66(AR;~Nj7lisIA)x>%l7Nki_XQm;D zE9kKC(+>>v2}f3ska0!Y+1y@Y1h@P-`A{#Xn@(wL`cCla?ZZOy3In6_N-c9F5<^w> z49s6}G0ID4;?vU=|;GpMaK! z+xL}DWrw}%4lKDn?dfNiV%hW0qPeRFyE-~C_k;9XeJLi)AA?k00?+<)8ScINUTcNYtXZ?( zGKY{{`IMKJj~o8{XN;*3#)G%YOKW*u3+mkA71qJ_~Vbq$cn1BAFO6z z{;I5m@Mg(XS@WtQIBs;rTAd}GThfu$Lsw;)5Dh2H6o(HZ&TzsG1eoD>C_0A17wrDS zPaF1pAb7LHi6m0Un{~2vgVPhY{7M-9>oI-$9OSy&iA;JmO#hpNzK+9rXE5M0y%ZQq=9-*M^JEI20dx&q6V4n4^5B@lCcBrA>`zt{78SqUm9vJxkZ~ASN7G zcl~n(TH1RsWy%yBee}^Ix^)EpWkIgKKkBHX#7unx&piDCR=%=UIJ4s@ELJa1($yGO z{TGUUa?d+*%~htw_mVJzLo;^~qVKFntrNRpfis}oD7phoKu22#UVLt)m|$OtWMMtd zxcGBo!g>atdhias_r!4+Q&&WC3`)J8G{f4x2{HCys*dJbSek=T#m<=u12#MdyJYeM@-oE zWAn8-Fi@Tmq$J`+C`>xlviCuri1nAtH0t&I?fE4 z5acdhO#ANLRA{veLsgOMSo9Hyp){7humigq3Nd-|=|tafQYW-_Xy#5l%2c7++CaDh zVVcX)vTr0`Cf^uvlI>j2Ud4?w{_6zQ_nny-0A`x|G~pC z^@vHkeD0A4x$o`l!G}Kd zk&)Yy-UV;8N*ir)KOtIT2fy+L9iGsizx}C=_;LMi|3BR zlyQ|t+&X@Q&|v-=jLQ+E#gvu}k&li;_6d2G*OpyPsI9HVS!bQ~A8{k^2>knkoQ$2n z;1HBm7GUG1O?Y|P8nm^vqO`ooa&URh6{!6{S()XI-$=L>k2oLnaaUO1)VGgOr;ewu z7}Q(dSa6UOaCV4*o}ON8SiK4VeDDQq-`<9KOU}kwANm5S>m~~Oeiha%e;DsSdm0K0 zazGR#bY;77f81I%L+b)seq2vV;;410NNsh__ z@tZRURZ=5RPLtU!_eA z;~~#x`T~BV(E9Q7=VUHtD!ya}k!ew7A?l~s3PIe7NALM3UV7;z>!w1vrSQ!_I-SN(fBI82 z?b(Hz;(WtO2wlJ!I#?h~DC+b8x)H2$)b3iRvjxO*uC?LbvyFGhj_vsT z=dVIX{Rt>O?o&eHMa>z#o4|$$KY)6FOCdyozhyWN0MdImVE$7--O|kziv zEx6IOajtTk9rMfTRRMQpkNslFQEo`jG-@Rd?mI5Vln!8CeLw0;2T_pBsFh`u%$kIx z-mnmDA!YK|xWiSda1i$5M;lptXCLl< zcoT|Bk3eaX= ze)qfh!H>R&d8bap;pZ+uPVO+4MX@2?9f-w%lyqJtVISD;hDU+WMM`f52vS*&@$<%5 zhrTa;;5j_>;Dci3YCh`g>ff+)uCcKZ*IxTQ6o@hvrE&~}>)fDs5K|biR~R1UHTC$^ zr#@wEQyhVJAKbp|IfQFCSi9J&-hNSNt;DA4H+!>8jm z;W0hC=J1QFw&8^pTTxO{Y8~V*SE-D^2>h#qyq#-w{RA9&_|drNqKlB5TY#sYdJ#`Q zxg0w-Z?~K}1!6)(Zlk5n0|t*=}06~Kc!|sS4THCuit`4 zg{}U~(v{e=ryJuZoq+t(5>$$T+l)hxwVYQn0T%<==O4QrV=H@c^x}Fls1Hi5?aeVX zc0>cjdkY}6dXW|2I&47dg*sJeA(#`1jz>8OWKb*2eP{Z0#LUh})?1Zuip;J{Ta*2a zX~@mB2vw@<-*oUBM%q1-CzRpEm93)w*I?=)Ctz@35G!7I4ihGgLNb*TNU1XbBjuuX z5@>r)%FnzYKc0anBTl`$dli|cG-zIS5c8fRG%u2$iElmrr}P7+Ci3FTL*0|{3`%l+ ztXp@s7lqp)xkaVBvGox)jAfg#*>F=<$aY#K6%-OoEXJ>_Uj7LLO^D^G6( z_l@cF4E4*ieD`nFc7NqoLb(blnUkmWc@2!tq%3hfuO;)Dz!*nMZ?5+2U|Rh}99jwC z#Oll|!1mYf5)|OGARkV?)Q4G33N?Z0MV|!x0P_hpE5Xr>b$~ zD61{T>gDTj$E|-yO?8d6P4A63v6eoy6t~=RGwO@-tOH^tf$~O}+`J?P7lll+(|&wm6KO(Q)vBD=KBv$S#r)O<$7_EU1bIXBNZkN--0YXJ3OV4}h0{ z8BSB$&tXI1@O+tp{skh;#Vw zln(Dbo<#n<_n=>%i*?g4(X?+94mtEN#Nvstg809>|3kA!hP9fDsc2p3=}jY*lMsWC zsFpZbBKKS@7jD1fulV8r{sLte{Mb6UJ&ecfHg&PEEcNUc3nacBrt^e;K{SkQGCY0> zmY9X&LjZ3!e(-rN8*g#rvxy^z>c{K=`#&G(N8@eRp!3yxP*IYPA6#=b7S9>$rBUJ< z!a(p-mNn7Lv_Cy=Sb7@9weiW%MwUB;MJ&kG^=xZ&BiKN&V`+mA<{T`L?{IrzW_ zE`H075*UFII9Nd5Qh4N%M_M;nFIcbuyZ1EW`R7*P#b;l^jxD>;)!t#*BXV*i8i`ti zK)R~NH01Qa9oLcXrrkFbsKZP-BZ=FS=7R$R=xFQ2u5Ekp`m5{k!ZWYoxuq+xeqEz* z#7)JlxgW%$MW4pB>E~j`>=W?%>-S*esuxgQHvzf%h3M<;##8tG35({IVAj+M1LgL! zEc4nu3F|O)=&FCcMzheFiv^uXZawL^nDSk7uBZk;plxU|UE7o90aH6WWummw{4}3| zU3W3L#WMr@jB$?F1rI;-QX8hvxIpL}{cJW`DNqZbVD*1pr;xiMTBU#oiB!@PUS+z? zVQwJCd_2MPvDCC?8K6UI! zGPxG}_O}|AeXY(Xr~#u`_|u&^eA#iJsa zSrI{bN}iV`{;ZW*VRI@BL6sC#Q6TZM4ZPi7-C^XW)@L)qXkj58)BPHBUSx+X-O@-0 zbsG4+M9s@wPipzI<>Bt5PmVhjk^CyGc;t5M-1sskPnj-e&58rs-ZO4!X4-S;!Wxre zF)0ezGA1Je@>5CJv$s@^us|u?EH-Rdi%(y11^TC)iQ;1~6HfJnQSSunP&E{S-&ugS zOfVELGli3f;(4{Kw44VDVGgO`q{9$>ZD<@rJGT^EqV2n0{s$WG`j$0w{P~X@kN2H% zh?x9|fU=g0ThE7ud4RYE8Vo_2{cpPAI=nn-dKcgJ-7UED zu@#ol`;m`)1SKUU7=aP^cLce5f7-NZIOm*maNKdnp}M9{*!sZkUCnsq#n-WM-BvX1 zZ$Wo=54t+LG1xy~rIUlkNR*tfM;sN-t1{@J;a`n4qM~A&aJJ=Rpub-j$a$D8 z25@`#ufQwM-h+~gTJbFh&pmt-PB@|-W9y3%l(sfi?Y$9UTgPaSqDrk)`qw%7k;ly*t-vP%S)$M?CMia&7KD!US0}P#l_IBaCYU+w&Z=1b}tZ%@^C+E(iOtp^m zvIl_~-u*f&DU1n68OJlvu0-{?*{B&i0~=Ppg!Yyu)YVstNj1M7y_`w?m?-hiS_4!E zpIf)O{Y0EmM(RyUOy@<0V7-$Dr*$5T=g`EotTe|Lb#lqAskOy}mUB^F^z_)%+pu*{ zo^W9Om(V#0J9ic=jdGS6ap2H`F|~C?(le8V0c7Jb?@TW* z#K#>xiig3_Q@pU=-cBT9NyHOLl`j|z(qLL?McqM{P(!a9#k z_>WwzI_)E}vkD7|&(!ZRyo1o!*N5w_yAJ>RlOJO7d*@*K5tD}Jcyz(k;56K;wNM0b zHKfkRyaUS7-_f88?1X#P93v_hR%94x&#O5+ly5e?6c+U%6;zbRom2 zeBiK}D9)V>yw;Gx3%fa1G;r+i=I9&b&dMws^i@gv0GpG4CHOMLJQ&yUsBv7!j(I>I zMuYzy7|NBPi*Ks3hT}l+oeieC;G`#UB`|o=)@!i&^H<;t zU;G;8%v)s7Y=qz^L@EZ57fye}lmk%)L_(meyAM5L)RC9Wfr?qxLfnxj`}Xg}m%jW3 z>_IhZ&iZd_b(!w83FjHNrq#CB;WKXxWQbJPc=5RnVjR#7d8SNCOu&|x7of7HT-c`eLBZ0#jm0C@g$HrD!yrF}L{0+H zSey(*MK2T2nL**C>h2W|u^!esA2@gvO?Jbar$j-IqqM@V-PMDdgr=qPS=h zrp}OO(#}LdVV&iyiYVtbx&vE#u-d;nhQk+r39Hv%k9%+Y364GMBSKCNpt@4tB&;h^ zUw$=oL_EFft{!r)N1=j)j(@mGuo9{`5S)wFh9>Tynyx&f<6vEu!J&^91MtVX(q?S$ zWoYk-Bheg3Q7VJ-f&pvgk6Zy1VHzO{==OsyS$*11T2hbaU*3sT&)<(D&$twap7?&e z^vDf(NjMu1J9@sw7e-UYp_3cRs^)^=?kT8)Y( zWWLW(M!x{po?WIS2=!-5hk}xa<5iqqG%p^ci#oBmhS%vpbH*Qs<>MEkQ%q`>p7J@w zt0q}z+U87HEM)ambgy|FcRu|mJiheHIO>RnIPb4*@*~VYWjbaaJ!NR;6)lLxqdX*z!l8yZERdGFVJ2qq@X_AR z!||(_joDY!m*Lop569gP_0z0Lt*rQn189U=ljcFL$)AvQkT)-Nm>X zU(L)5<5}oX@&~+G6_aBuF!bdB-L9y}bfOQqZhe@90WB+tZZqU-)d3Sqp>8%RKm2>_ z`s?TLwJ(1TU;g^HaMD24btp{4?ZvUb@=+n!sn+BWj zzt%ecYMjtf-}~%YmeYj?>OpNO*#g*MZ@ycab)QRfjD8^ zh&CDRJGA_Ix{`uiQI`pHi%BDC_>RB`{3n6jUMTgT9oMXaK#+(&j&Hy(!JdiTd&L<=Aw>Gq6>i7?% zqrDj$Uw;vD4mmd!_u~3Lu5@B(>5e)&!2Ybu5UvReMeb;6=z-t5O~goiX!^nw=Grr^ zg~aF*CPyFYvdq)&a5o z!1T89-BKgW$l$g898G=Pn!&NUo;%n!usO>*%K+$3hk!nz zpIyg>$?0tBH;N&^jomP?a>jE2Fy-A24CX`Qb4}1I!ZsTY@IbhViU;vK@na?RsJY}u zG~W4jeD#_y;F3>ViVH5f#4_AHokh~Hp~x}mW=%=BI!vEc>=X{Hvf@G8F%D|ZFa^=d zm9Jpc)+SVa>?Xu3C&9PlInkTk3sYz%aeb6Lpr3UiMSX3lk{lr< zFsMd*0I?U3k=*IoY21hxp?EPQMbz|0C@#OZ=;fgC%(VDUH-iWWKtWy(auQK=b*C`` zBk-RLQl`n(S))dcvi_vqd&lj!q9T#N)Y>X*H-P+;HtC8TTQGl41=>5(*u1e5jCd)$6(*3YTl&%0J&3}*(P(YiWZ778>u_CN!P;rM`|KMCsg8ApjpFbigLAst z#!AK!SWRSw6DNkMkpVK-6A+$?jPu6A!AQ)>gAv5~@InUk4KVCzjbVRh6r+T_Ft%&} z@u*t|A;1Ha_~Ui)--21y7+sr(b+0^%(&~?*#&Tj^gk=x@LD;E-IOOoT$Vuh+&KxT2 zN!?n{EGYX)^D6ZKsPdkorVbRZJskvIaol=x+K|R~>(P7HsvIPYI^A^sFexedtyAz? zSsugMP0i@&&OvF}Boe_-!ifRtI+l1q!|K}86h>?n62`e+%f1uX)6Wdb;-Dbtjq2l7 zhqWq=zN3thXR4`v+`c1EwMgGv`N6)Ku&HGiDl5ha*%R{(Tir25fh>%XXX#1% zJ{C)mY#9PZpKkm^k4x(qK9kY0T%h8q(Q9Bx@nQb>6Yz5BXzNVW!X+O=tay}*C0?Qee@Prvj8j`_f1<}7zkCKH%GxelAQ?nirj zH#~)`OFO4;pSU3$v zqh3$TL(;w-@CMN`#puZbVo=a{$5+t1bvfoutH=L-@f9fyw`Zs2XJ2X%_vc)l(?|NEOnJ8^EUTa4W{(9fb*2;xTFTE6%m6aHQ5f}j=FE0-h zCr!rP4?cqazAn_37F%1_i}P|(kdup-R`0a71ZD<=y)tbw>dHznx}pqYD&=1}MvLF- z;v$q5KwQ=u7X% z_U+H1w__j9IAMY)gM0A`9Y{hruOiqjoICCiLl>HE7}p&z@ZZ&m4@dIK|9Q}sQO|Ya zWWo`OBgb@;A&tXzQpxy;g$y?P2jyzB2==!}k(b<1zj-m(v6<>e?X zDN~L_@kpY;gJgxUjS^o%q^YS19UUFkQrx!-wrtsgzufp2OgnrcN~(*45r}6}2ZrH; z+)39b2IH-r9D7@UZF@O3?%`O!i(|u1@h5)Q@62H1u8auF*kR)P)_okin>m_0#f)?s z%2`37U{x?95`uo9??Ge}4;_aI^XqZTEw|w5r=LbPkmrUy^UO0sImCq%!gq8@2Ub+f z0?92uzQm>Z`E*DIDl5xJzfk1eU42&Ifbi&b_oc0~3P#}H8zd)KH_SxrzoG=goQeoO zJR^#q93R84Pm1Alhs1ESaBNlPGT|g8TYF5x#RVSB$>eBoWu(2j#Kmjs>&)}NGOg#+ z_}+@CVMqr$A!5I)2Ux!)P7zW^!|`PV>&H=7u^bc~|0z^{@VB`8(Ul{JgDTN zk3ETgqKB(9EoTs$#dEAMHA`J0EB2Qr{FrNl1;)4BcZ?8pZhoHqMsw1#=t?uZx+4ec z_9S4L4*^4k{4xV^&ij#v)S8)LGhA!KF>JsnP{F0_9<1OoBht-an61xov?&wBIwlb5S?TrfX#zW^XaYP4`dLy(RDtxmcKi{O|=mx1Nvq2r}H!27!q1{ST+I8sxO zLG@)fq3D8N{=bU|xwdC0Z`}Xa_kAD2WNM-s_ zn96}~;sc$6=!S-NA;i479&3xB#3kF#ZRMPt80OCzkB-hBtlhB7sCe(Y`S#Q*#D zw}o@73?uNL0j_ejR%Z#`P6{5c&SRKc8NqR5?7#8F_Vvk~Y5Uv*FX0=>j|JuB8$|W4 zK{k5dh)m3uMs9J)shNs+-7IW=;Ss$2@a&{2;WS(vL$u4^vYdi5N<0JUs%os{H-GhhzaWh8Ol;GQ+IRkkqdqsghzOlp1_XYXS z;orl|LY-yJvBTM2eP_xy16zk+SJShQH1s*xjr>$J?zY`cxcT0fP*pPupZw$}N1RwA zFaiYR&V%ve$7A&9F}U;ohY%GuZfU-~njt0h&$!BR)K`=VJ3R8HFXzN~shTW@i^x}Gy7N-af_m^9%ubR6f{s4?*=WUzO z1ri5B1t=#D3@tl5n5n~l=F37atw#$}$H2t1!&peZBrm3okM&hU^7h5vbVRfx7xk_e zQmrRbffHhEv~g<-Hg9W1{p3UJV-y6W@{3VfHyQi)?8b(buc4x%7zKrS79q-l5{|%` zS6WHuIHs4=pmbcPqgvslzBJtage+8kfTMFX+Fe4F>jwyy1%wtTc}V9?pS-OvRcw#pSy-KU39TR5PVsmSIy;+%bG%nf z2p6e4v9ij$u(D|Rm{wgWi*9J=X3)=PDb6Xvt9xEV*QV!?H}hn~ifTf$av>rdS@DVq z$engP1`6x((m(IP^N-#s($Tc91=!Wdh0{tpqHG71dWMR& z_f}_CXP>S+<1Gj7aursaa5%Ph%Uu=>vS_i$FzIAj7?&_fen}qsy87_U!!Kao{CSu% zd5SUFGtWMQzua&=YK!u%11jB?9T1+k*0wJHa99x>i$$^U(8;1rGS)X2Dl3aIeQF&x zY~F*tdt0rrmaZP8Ssb7H+~=&-6eIAT2cA9S$P?+XEltUDvm!WttaN5Yt=kRd$L;}n z_`7+aJ=`umBt37TGiW%N-l$FdM$(ydNj8X=)(fR^3ihsFfk$rnKa`dgV&cT9LP11T zqsRNlY;G8BbzNaV4VSm0=8IWtcUFuAw2O;7f_d{6;Ng32!mc&1Sj&hJd2`1qzE!;R zcEVf9^TW=Qv7t;B1uTbEl3{X51Sg5Ue9`nME}av@h10~$TD|Dk1%tTZ_rJm`ue^fe z7fr_br_6V5xP@jG5*iRRC9^q(!op2s0~3Bdo?}WX@l327Mr%0By9RN18CaJ0u(&JM z?Z#gpST6d=e0=bO9~}0r!y_;P|0y8H4wEKLLVjTpZoB(lln5t!e#+e<#_X-^S!V!- z&O>gC-rLfOmd-(p8N0;UV#P>u7K)gW0jxX=tF*iZt6up#4w+qrx|)0v*O!KS+hUd@ z$CEF_;o->#Crj(%4z4M17r1YuapFKRk?J{0h)|}^6AK;J>=0<_^t>6NUrD6C0;;U- z=o3z?erDZN$czK}FllNN-`z8SrO$7}=qZOFLAGZla#F&nH6Kk4O?ctSC&35OsHiGM zEFSY{@URoY=)v^X4lP2n*Cx6`aodLn>oH6*GL;Q{Cm*SIAH7|<{x&v}C&@$6b)3*4 zfB7Juf9e&iSkr|iM}JjJkd(o!k;5D}T1933rax;H<;4%v&IrlR#L!{kRAVz`6&5|) zN{#E(wL+iM0>%|rLArI{j!uhoZuj^1iTW=HKMu&S)Gub;tQtjUSBv#7)B72k(q#z? z1-*?h#5l{VP(*nI9ine-edTsUb4!pClhllqFDsUK5{a5=C^+Oibmvsznfv~RNAJD~ zJ>BgXJ7zqR$s~+N!D!9Lv?kG`#!kFop>M>A|K(Dz?v6h62`^4(TMrs`He>geMl|hh zz_TkiV*mZkXm9C8Ur$;%cer)MZAnQ9#*G~(6wySC8#f*oUU(tyx#w>D;SYbrrp=pB zQeA-Y^Xjwks)0j7taaCMwMRIuI(p%pb48>SDZR_j)+K$mwD4I<2NvzS$871yWptst^ATZA*WT|M~X+ z!^ZWmU*Y`?`dI&=jDmPml(|LZ|wHs z_?YbH3=v-X0L)6kox{4FaR?oXD2^0pc%X*4x?Vx=hHEw%Gf}EJT0qLm3<-5B00=iJ z_O(Y*oQh&h*`O9%$E0Im7+qTcKG=<}_C^$xR4FUUqR}|!AA12xtH zl%Th_109`B!mck7c0!88g__PMoMf#uv_qCbco>dgQJIl4q5nRuZXsT%nTqb!kD^E( z=3X+2VjdD$A{Y6GoQvGaN1K z$Cw|{9s$Xd;|q#YC_oBj)kPRHrCLESC=9Z`?ljVU{b+CMMC0yO>=%Dcd)n~Q+Nbf4 zd+xv=uKztcgr{xhlF2yaeWxS0DCK#{-L@xf805Z?k)u4{YF{fyO9!{M0D8>DJWe6$ znO9&I$T(P2>e)SvFt^N04A>ii<_@5)f+0VLw7uR3l-fqta^;D7S#;Js-2a;=aP!SK z>1GpAP?(F95aQ{+0r-Vy*s-(8I*-FW>|I`0 z+%0g=oG`)igpR-n=-}OE$n3u{MX(NiKWSV9t-Tx@S~y-4j;vSracpkQps7c$&~gTX zdUwX~gk2c$VJ3dF`FQzh`G(=mmfu@Jhn0tz$tXVdlSoug!L2ub3aeMG#@D{}eT*JA z$(p(4E+Nche)vQxlR6kKeTr#p__g8i!;Zp-KJri(E-h{9&E6fvi@iuh# zGzbTloG5msh-*KCtl%*9RlCQhdk0ZgJ{Nl%wjxZc(Bo#@Ep1dN=}rkHHzHJ+hLahD zl`i`{xnwE=NkcDW35gbUxoJ4Mtp|h$*CsHhS>`#RCov>R2`&{Mc{0%|!Z< z^{*FBdY)X4o5+bFm6wB}@&eS1tH7k$^_aF`jPRKEVD0j4sF+ZSV=p=klNXM&w#wzC z5+M}?1Uiqwc_rWEw!ZCRz}(i!t*dl1plMwuQtml}-|>9LXWlpF^lh$`*A4e)eEph{ z=V*0w+w~!JYb3nitK|v(2J0-W4KHp%drJq-KKpFzs$mzlZ{LP%ul*j16H(+Rb3i-3 z-dYl>DvMD+x*TiQ@3IefcRuxs%4-tdH&>X*!!ma^x8u~)&%klV9fuJZfo$OVPF-h~ zT%A>4$S|)mg5$?Ta8!N7y4|oO$L@mzT=o?j&)YK)`mE{Lq%s2RL=(NmeLcI}SZ&B+GS9Qe1UrO}1ntX<-rS=(h@0k?Ah0~(= zz>FA9n-Imq+K9FCsz9iSM9lB2Zof6<)!5jGU;N@1mLu!DljmXDgz5lo97D5>&O(k^ zsNm7#QK0Rj;!uBee5SN~2pVV}rgVBafpD``r%R`?yC;nw{pm5pl7;x{SHCJ|S_?1& zBQOHt(Am|EpZ)ZQXlQLh??4)3E6arr8m7EuLw#mgy=^DTDi@%*c&y>8N%{nl%kyTN z8rGq$WhIU|e6&p;Q>BbN|4QCOXf$Ztv8E=Q>Gm+wmNV;HHsJ(qIOXDS2ZK5p&dRSq zK03V!=BIpi3SlxmMM_07l&IXPNN0f9!~w!#W4X# z7O6jPEe0dpNZPc!yBCi<@SG^?KIG-sVQ?@l#>4&MxeBpZ555PXsr@udqz56yJm6L~PG^XMS^|F$7qXNK-M}-16 zq*rmua`Yy0u<5mbAd~J!fjlOJg`KA~G_YtKIkhv8H~TcSr(<~FPd`L!^DfMoK1(?N zQeb+=R1*8YZa?X zvK9#U36m?Yw(bLZ`Z!q?!3^coB)|8dcP_`F#X0%nJGoq3N*?l2$YDW>bz`BtKDMSb zixbPOALH6a_nR1;(LMxk7i{tGFvkG}@A=o>I&NEva_giw@B2<6udhELWi}>O9 zzKgDoP8@&InTR{vlhoNt1a)`7ibX)I$X9t5lGIV$31mZR6pl%gCgZ~&`zZeRS2rTP z=zYi;y8y!ls$0TfsQSyEmLE|3Fkm6L-Uyg@BrZCayyK)I1&k36;xR?`q3ffIfa+Y~ zph_^SzeO~=L_#EJ!(;{bf)=Uoqh$M_KWiDrHY(FFLl_WdW`@VJH7-}oSHN6PFyPeL z-J2nY@4obhrYwNnWd4S|EB2BhOv2KaHeu!ZJvi^Y^H5n?i4hoq5eNrqi$D0l9by7x zFBUDn0z0-pg=OovV1e8kHk`BLh7ij+Vv;34nLtb98jKx#ET}Y4rFxhk^<_p``E;yV zal3U^Q(=A_(6%CtD<2RO2^{GGW{nd%g)^(WAI`232OAGMDFWk3g4UC1G~6GyD5dda z5qZ%UYk;Zo;m~7@3pI^NIEIaf_q4`PS3HQ^gzl^$gll1PJ9}YK4%+0|K*C`tC&PHi zN)x$SrJ%SHbC;ZhDGQFrrWH?N)tVRZ%JK(LQ(J=Z6YDW{!YJeydq;Bb{Gj9Fr zRjb6+(s&8oLK{fborijrD)k4gohcmx;qILcc<`QQgdH8h5vP3ulk3kx>g!_ETg~0_aU~BwUnr}?+`J4{hj2ReqP2A&%1TH1 z;S8!TfO<2X_rjt|Ax}Ed+P>d9&|RL7C7o6>kH+Sms3;%fIl7STTobo0^+F&}0p^MU z3lw~2)jT{iW&zsQJ%NF?eTbFR;>|)duLQ-%T!!4qOYrbR|BF{I|2RJK(U0NCBacOH zUcN#NHyDKOBEaampFHlH&|EtR7AF+sf#HwcwhRy4@EjJLBAr+B5sim=9}fVS-+{L8 z=jiOwr6!FBMKb$}fgC{0+;@^RAXZfWs-1?IyTtJ%Z!MHpnC7Pryl5)@!igoO&R_lK z>o|1bLQI`H)mr{456Qpk>dzvXNuwk;rRAYXMKEioVanuDR(ovPyw}ZX8@z|?H4j&c4v7^OrZ3NTH z87f40j)*94Hndhz+O}g5sS6xK15@J}Cpq*mUGIhISQ8y4{6o+*tnW1MED%W+B5%ft z=xFc6!+-id2KqZNb^2Uo<)(!$TRku{P4=V>v(C&*3a6OezEn3j?f_12i?I{S{xfmH zWZZY>&1i1vMBdDk%o$M{_%On=mB)nljfNix{%~8&4-bpygv(1oa-$4&1@@U$ht=7u zsxFvnAGm(jq$rLQVN=SO<-C%suoBKCH*SApLrZr8u;8@C`6 zN#fdTueEMk8-WoRfpFNncQ3BK`g6i2E5TuhUu_M2N*f?YB+}p!^2_q*NO7jL$QIJ7(;Q*?N zGAK%BtX1jVY4s3f>Xc$cs4#7ONmu)rgjhgc(IJBS>iC2MBG|o&LX~6cYy8TVW%sEQ=S;UynBT08LE(pT{KqsviLISxmkb2*Bu$DlvnjH0q~j2HY|SvJek zc>DIP6wcr0(9*mKIf;CvQYCi%!9XvdgnRX=XnYsKj2%-v{VNNNjer%PKWo~bLG!t& z-+~ZkVZh;cJ0E7y=qf%A^P%qu(Ah7~tj;a89Zt-E&}9ztF8`C;4|!%l*zzgsMnmfo z3xT7(z0tajGbvYQsg0!(%7Vt25mlO|3S&e&4FzI8t#$vS$@CyxDQmNAXe{N6Q{ zB<$6v*5Qs{J&q}h#$(|bbA9L4oAT=TbT_thG_-O@@P;uE4Py3kP8f$?UgL2_OARM?R6M3*6+&F=D(0K#~Jls%V7!)DZx+Xl(XbQ`V>0;Ik zk^`DtVYtg}fYXJuYO!$WzGq?-@0)I4kZ|_osI@h4dYQd7H$O)h4N==6tT?O?&K?H} zQkUO(=bhNGV+ZC=t;b>W#v$8mv7u<8tVV0b^v(=v!ZdqGj}6);P+G!>hlSwQ%V2VV zAta4XkNo}P9na&Y`(Cszv$^DwOGa)V9DxzY0&*qjAOHAA+<4>7IP9>iP*yexiJSry z6pq2l*B`{JF%_0x8a5a@sg!NIn_7iaB#nuaPj?3Ox>V40GnEGF_N%?SpGBW|A2qrf zC3zXJP^l?b6hX*zZaK7MNNYFq^bLcS6#>twLQt!6kb99#s>vOvdTBUuWD&KRglV9XE~~ccQfaB<@Np8(;UN?X^Z^H zWlcvjZ7}b?N1`$06;+~k>@19)vJkoAxnX}BR=)B&)~?!!-P`w|UrgdB;&I_Du(uiN zx!?7?N&yRQe+4?7EUm;4u!xuqUm zY2JapNCT2ZNmPy=hjHVMKwZru^!0XO)v8;C!!U`$!g|k%UOy+Xi{I3JU?Z0URRa*1`QPwi_wq zP-VPCTM-K8!36X0JMZ2%?l`9m&MIHJdrmPbo#fz7UicS_**6phn#)^P$+JrTcp`?= zK6xCv+q-e!=cdaPN0`Pb6YBAjgv)@lHGV7&zCM5?H$ux>{zD=$Myafx+X)nNqQ8n6|%{VX|99xh!i2JuyS4D+ji z^QJ`6Gsvw&;kOH)>zc+4HVS9;+GdXZT^ybLa;vU`EZbp&^gH#gxE+P`bsvbt)0d}n z67J#D6$20AB=SOAQ|;5DE0Ta#W+7!&^OXvu__$A5Ga`@O_C<7k`AS^%g|DH0^aL-u zmx6_$Vw$QEv=rv$T346*VTf;(L&NSL;uucd@=*MGUi5d%&L({A=l58*F@NPNUm3Y1WdufG2xw|*!tJ;J zL)d;3h5fbI6V-Wn1v)6PNw{T|)j9X%SV4WcPDAD28{2 z?B2aE3mw^nsk4u=c43%hi5)6en)l1U!3a8grGDU+GpnPI1q2=!_Pl#B%W!1BCE=Jq zZVYTm)bIqhzd7lcW)HZ}Ab6qSf@kJ9<0ckNV=^7mgAChSVrc1(U{>7#3X_9s=1yJo z_sgw=jveACM|;@CyzK1<-$rwFxU0`2G3m%E!=$;#V&d#2*uLUE@LeyXsjUYuEM1B8 zz$+-PD#Ex)^{5?HjiTaw>n20@!ZD@(w8{*Ou1Gz4)k%how0#2aUQxJpKzn;z7j|vi zgIAZYMZ0iz)=yf1X$wz5VQH0n2RZe$BFS>9hSZDD=W_E z(MNgp={s*!P3BhRz+fNt?^_|pUHK?38861S_W8^1_r7!|T3a@YZ{tKi%7=eTAM?tg zH;@19TMhmeKvgq`?QSz}Wu1zWkde1zPRcu>}T6G9ysfR%Z*w^2?WF<%*SMtg4Se z9%R@l0IjZJj{RNk-@)!Ij&w^vOT3kmu_WxPn&r1KVND>4k@O(|g9!alnOe(&Yt}dd zwmeb%s-!H;JLlHx1q*LMqO1{{fA9hP)d&9sANbH;W6|Qv9hc)!twfAbPSu*17H_$W z3&}CQK?(%QMfj~3?S}>P7ooPc5?%YBGytrqKA=L# zKO&kxmn2Y?ic9Z8IAE-dRn<@!Lvt}hTPcIkADuBRx6>v(g+zX2z3QcBqQ5PK>1_VC zNO}dWUcK7cM!5f2JBGxXP$b^g+SC}3Yxduq{0l^>LS_ssV}xsEAhIs~WS=Pg1SAzR z@-xfY7>vB&zFD?ekI8dq_aNT)k3Vq^d-?L0zl_$_R^%v0IhvZDe)?H#-L?%YR=iKF zTN3bfXK^ehUR;X50r7&f0+*Aj$tgzFqx$_P@cUH)0>JDdxvB& zm*)U1((R+bop zCK69faGW~VkHV4}fv%wdDgtIXKn!R-%?vGHd{XF+N}LpSS7p^)96jM+=oisuEP$Efy{r4I6OcVGZz?<6pGZ^aw83eKe)Z7Dw+?F3!Ab20OMOk1u`e z3;5YjeuB6C(c7`+svA&PL{7}+27slIYfdV(4LwOG4zy$413PflD=$Z7Q#s)?iqR>^ z@VxSwbKX>QXTP#zIB|d?salLH1d6LZi5MAfp^E*=nD(3A4+el!p8~fWA?+fwa$!2% z$uX^#Ij2Bb=Hew&d3`C?h(3MnThHM{mq2mFqMOJwq-K<9!Hhww3^S5ubaKK01?SJ7 z|0~CRQbB-io>B6&ma}Kh;)y4oz}jcwbupt3lDYgf+3%U-h((_3m#U7B_RHpV=3 z!=1k}-q|?Lb`Ii9dp8c9>c+M`8}RRs-w&25#oONYHfL)_MMVXES&yuQFw~`|S7&Fh z(<|jA`B*Z$4qyDi_c1UqfcL)ly-tAp+|lR1IdT<{;Dv)T!o_z9P1XufpjNE2@?=A) z+Kf!dAn+2@5^|@HJAcQ--+|67E{JObV?sfh;NHokCXqRzA^w0J%rerO0$wZgVl6Zm z;HmD@bPRSy+#-!dnqwxMO%CCJ+1TrQ+zW~jx%{bqE(gV9+!Gfd9Wmi+qj?7cO*w zEa^3L@@zNeSXH-N69E^*5>80it2U)L#^kteE5efIIld?ue}{Yo1!%cJRa4P)w0 z+QtF#BJZES{s^Aga@dLGbKP~x2H} z0Y6%092ZU>LTtDPHKo&?HWmoGYFfG)Z8g;xkzP+?jJ5al;e2l&c5FC+4bSWpFVN#i zrPD&ENeWOWj!Y(rOge@9qC#W@cv)OrAjVPJ4Y)1VQQeb`nJhqVEgKVHY=7?{dU^)X z-O(j%q)sR7%ZSi#Q~BknZkmhb3+Ic^Sx6NW`?@(8_1T8Js zps2VGRaNs)UOpY|=XT)WfnQ+S^c$T#y1Es$3X^`Zri1aD8|5ip_4NAFXVwy_S?o_; z!f)W6X0Gr-`8rq88p7!45c>K%1Q1&5%@Jc#sqySL-?TXh_x^PRiYE28Ql|`P-KO`o zHi3P>i&kxPj#19S##MN_v>t=I9zf}J??zr>MbN3R)o1G;lW2Pbie*YswCZ)p%)bGH zTYrvEeg5lMc<;~f#y7tW%a^Yb>w>$TGOj<`7ljWrI1V4nFYBXHimBggIBvh*rjJ z#shT+_1nP16$&aVf&<=k_H*$TL%hM5q!U?>aYYB7>4Y07t?mQ#w*&g4$B?wXAwU%it%ow@&_8C78CX89nFw@XU`l<9z=h>V;uRr%-6|Gglmt zfouo|>3vmFTKY@B9q#Gr!P>QJ@xTKQIPp`Y0VD&@zw(u@#F8aT9Ivi}2M^*~-})x* zx#wOa*)XnMF#~`8iC17&ONCef5{}0e<=W)Fs348H$|5YAT`PbvE}r`p=o=iyPoCI^ z&;0AB1t9ig$4I#K)?0rmZ>)*&2_abe#3X3-d*+W`u?lOJwc$U0utBut75M5`zlNJ{ zzBvbC{g%kXFzFRv0gJ`mtylE|)S6!zjG2k7d%B@KY6V;cTlKtvgaEo0BhULUVf~{S|X6VIL(YqQ_#gW(I2B{55p^?Bn>CfBYw*bnL`? z|MVkB=jZzqjI7gIQF0E|RhOYaC})10L&gxi>!V9`)TxAS+PDC~3IvG7yTyayllr0^ zwTSW17jkc^ezF!4aXCskf&)Gki1Ae*UX;}rGR&=%9)U3@9+f-|uqt21uwo7{74ycV zJb)nP^{M`_!Pfs zUi1FN`j=a-vrsy{#wZnwU9_BlHf%qJZ{D*(DDpG#@sEEzcPL1Xa&!r_dGqsl?6Jo% zYxWzE&d3+x!TKs=zsNw;L!*6>OUDbLqD%(qR016xyHQ)W%)cI-rbaz6)H(Y#Qs#qtfta?X?$Ci1-DFD zi_kfnL*$|}yEAvU)3df<@)mrtmOz-#TB*TI838a(bD9vP@zW&A9 z!$=g=qN29VP0mQPVjjFi^Q}P7Uh}ULok3n3A0NZ1gU_Qy=r~e80pUgF$cPu(nPiCo zw@RG6!vfIi8W13p`0F1T!HM&oXdg(Uprj1h?r{tszJT%JUQx!l7^56{iMadX&p8ar zeU8pc`51h#X>ua#Y!4hA9mm9^jANQF%BwoC2KDGmg4m^xwN7tgLNc3;zY!nyO3lOf>*(NCC zErImmB%cuAT{Tv${9|->9Kx|tjJhF!n}BhTJrf(&D$`!wFk1c7qt;|K;A&?(m0Qt@`aI3M-~ zlLA>#y*>}cKT`Q!coqM@kjsTL44s0pLe#{{I=tS3UKRKZ`SeFl3Ni+C!*wzZ7y-kt!TLwN&I4UUaU+W zkz`*_&P zl@_KKIx;ef6DLm~ujFdy_-h-V7jM^8G*wxeIuF{X3GYAw8KbI5{56-vFtbd6qD2hN zMea608M`Va($Lekv);NQyGAWJDyX`mJQn8QcY$QA!8L2vI35spKfDcZf8}ZfQ7_%+ z9vp2FtXlyE5i+SsLGx2!E0Foo@u>h)U4&LIi{K@C1kv$g@;mj6idtE1EA8GR=bRTa zV`F2EXL62ml%uIh&XaF^wvHPa=YYbl!Iv zF62aK9*P^p%g1vAc;x9*m~-W8kSQ#MMfD579R=tpBb>B}ZWSBq>p;($1Gr+*w2Q9K zGGD&XiR52ng?p%zj0t)^Jrj#o-|56+<`ZL1ko3`^0gR80U}UHdqr(H@#rUYOOD7!< zrmXmszq1qW7Sp5vrt*tQQBYJNY~~`Q3yP7-6e2I42x5J?jhk9i;uLh?L0d!KX`Zbr zE)KDF#4_Dzo<9d|v#-GUlZTzt3QwQffFlANmT3zLs!>|nDr~6=0Z>&tzvFpH@sdA{ z$w|3mrA+`<(=j;IfpcfJqrdkI%FAatJEY9X7WQG*S^%&BDAMp4HP$$Jenj<#pVm4m zjBC1u8313Gp2q~U1G1%uwXKtrW9aTVhw7?U|2ai_Mv;D_-%T*fRviVn=uOR8$EZ`) zW8+CpP$C?pd|tHRWq5ewcLj*M9vJ~DxjMe5XGad)P~`|$HU$a2Dj{Cbm*4TX7&&+& ze)03a$DZAPf_J_9y()-%pcJ}spQ02s=>;{3O^@wy(B_#d+Q{=}_Rg4kHij>$%iP_X zm-QyJ#6RlFg#jX7e8^J?Cz(piNziqWw;Rmca;OBn64u z&cg17XS=u%e(uR5;g&J&mv-6cid23Q%WqwTUwr8aoa*YsjG79V&Wq8j11BpN5iD65 zS8N0~%$xs$fEoGB@44q5{Mn!VDGEf}KK%9@@XDJOpuD8OspCTTfCDOh^?$$a?2Z2D zJ8#5mUc3ky?=2OJ?1kVNYHqPGMTtui%$nXr_D-P~n=i4IGrQsU)6K8g#{&Tq3N%)%uiOnT~-)!*NX&huSJOm8DOcm)4u z$x|(Kf$UTHq&$ehT^rbtoahlk|5 zK0dg0oq)%SZQe!CMKkDtwt{N;0$o8T8y`XG?&rH+wHozRC3x50eGi}i{O6qj?m5a) zj-pBGSJIQev1t`biW{73fh{7x#hlnW6O)s8!DLxRlI8=;}sa z-)RTfJ$rVmcnLEoK;>a!_l={jZYgHZd8ywSi9`{aTdy)+((s7RW8uEw2ss<+Bihp( zw8MHlO~Nv#^*Rx%SNGT=N5C->$lkd~HG|NsvQ%wjM#(KY4jG07z&R-X3JXf$Pk!}) z{5in2v0xy3L_m-&a!EgK%uuO^3dRveD zdh~x8A4`H}^=&I~;mNPy!+-nFDl7*Nw@=F&RN31#h<#g*p?N`rK$OV|JGM#ZWL6W- zE8Mv6T*}HAHtwl|1Hz~r8H2N3P@X{MdQ}7fmE6W5U(`s~U2~eK0U3x~`exYu<&ISq z%L+kSbKr15?{05c(t*YS-^0thF1Hf)48l2;Fho51;n;ec~VEOP4Oa-O-;d_nLVV$)FUO3=a;@r`@gPD#%h5F=Pw#Z&ZS{?D2MCjZm@Hc^|O`%TsD z;99U$q*^aS-FxoF&`;lwPyOA;v2V|Ay!9RLK}~g)m^b-IrPNm5V2NSY8cmOvu$*$Y z9=M9;uH8G(+t-g0Q9oUjsCocP3FN&->RgQ_GgPx%AdN@GrZ zs#38ORSBS~Eaifid9h%R@1U&%ka!I&*0y`^#s21x35KB zUM#e>UR*cOf193C+>$Oz{?fcr^@Oj{^2paZRgO7-)o-~q<;7Rc!>Yw? z`1gPRcf92-Z$W*1J#v(z9NFmyKll;4x(0CB>s?(3QCwDlWGdiwOn_GV&c!i2&H_+J*`=f?ZVDd@ zzbcOz%GMV=M3_a%CqGGGl7#z#7T|sQ@9hnN>HnlW*@U-Iw_aH|5ltsAZQF7XKiqu? zo!w)&@wM+nJeekTdhmjqQ{VxCO{dCq`!E0=$47^8=Fsz4-c;vqABcQzBHD)D4xE6#}HxHP7Z$-riP#i|g&850}2U_cf`oVGMW6n$TM@i~%lV zl%9liVPQ2wf2vQTGJ7Q!=iP!tJcH~=9Np*7W7Ed3V%@sWV&%&BIwyC^I9~d;x?tof zu*h5~DR31uE%1s8Z4>n7oO|EY9D@hO3{Ny-%>#a&L^~$@`CAmhpr1gkKO)^^=LpLR zPRe%Em{B^VH(poQDFJ>L2)iUGJ zHjeK)gZBObv6F{)fOAcOYziw;kxGtRb=OQmB1{CUrN-i_+g1itpSuXeyG zx4rswm%-Ryck^Q0`}j_L|ADQzcKLK?U${9{LB7lD8+V<;*Y4hc7=@F;R5#V-GkGo zPoYJCZ-4rlmAG~F9F!DBZ+jgc9m5YF*@1?}CbYD+AVlLUJL_oKC3lU0$dWn>K0&Dk9>1A=6Y+L9dNfNN{=p?MxK;7NSKIXDDU`C`Gos%MlkyMF>3uRD zRgDuYJ?3~$N$;vkAs;I9V<=8?XR9A0{7Z69d1AqqzN{zyVzDqtl}B}kKVXu8|Lb4> zdTidj8IP|!fcw_&!W}m(a_;Gh1S2b=t|QQ)s7N0lX3F5YN~f<8T&o*exnb20q-@Qb z+?qD1lk#m>OT+b;{L@zDrxSR~%dWti|LR-9IR63O_rCWbM>)z-m<9(2@jw6j4b;>w zbOJ($XB~64Cplg?Qx#;JxKmJdQL(e$$YAUxCCyW)I-D4@hKS*&-5@LsjY+bWFQjT+r!z#;7Yf{;`f!^WON4mhi zCLj_}8y}m*nX^4u@uD}NqPEqu>F6nOO7Wo#z;#4Wx|*t+2OV+Y^g+Z%yU17#X6T=u|BN(1I2ksrLnW!qo6<59&+qQlWPd)h$xa_ibqP${S&<+mJ z!w&*hv=)aQg}gK_IK^O|mdcwx6N9q4mAJoPJ`PZB@oLtj}wm1LNEtdxXR=C@_U#4G$ zFi?){K7(W?iOPmDTrz0`SWFgS;9ckyhM+L~q<1Dvm68Hkw4)g`uejj0=fbJh4=)Qd zCPsinx*4_DE4 z{X{ovONx-z_9jvhX<5bTh;bI$Q51;|mqIe0$Nzrg8yFhs#ee+O8yxV;94qv9 zabX(Qt(b)ep585hpm8^_AxX;&E~Rk($)npbySW@ig|64r^ZU-ByKfkId2v|QI&F;0 zZj18UnD~@|!s4DHqB%J#yUYFX&sNA7Bn6JQO zz19RTXy|fLip-jKB3-u#2OszhUjLd`<4@lACwS|d|JacQ;cd6{Wk7HZ(Bm1|KrMNq z)cW-sP}H^zjg=)RPRAV2D7kGQECzl`YL@_dHsjJvf@-p?2Evmoh$RuVvTPOfHD zS$FHp`s*z7gQ+`m-d!3HGq!F2A$wN65PJE`Uygh4z1P{!^T{tih=sEnFs-SAsy8rw zqC6GPT3%S6&~*urGHEHgD$2C`bnO7lnyJ%%82mETV{;t>`EIVFW*JoNqwP}puD@b7 z8f!}Nt#5tHIW1QP$W?}Bq+K#B82L@Ct9+`Ea?wJ;Fkal> z=~NPB;>Bop*Ad5?g!soq6zmoOK`#42F&3mCcRqc*-~==|ZufsqMxL8SeeoPBP@ddJKcNkWBRwJAu=O z1|8lSXUy{LA@`6J)mV>LMomL1e|cc`DDNood}Z)aY5@t z-LekA9G_KJ4`YmsumFftK$Zi}Sk_kh@=)_YBX**SspJo(Kw&}%HDcNb0_iM24I}C0 zuW{CcL}?5wu6Pr+ZvH;DZ2das&3zea>y`*$IqoH8FjvX&EQWR;p=-f2q^o`q&kP1w zrLV%_vT4o1Jl4B~aA>$kGL0*}Z0bQ4+~ZpQKz0Q|;3f6j zqKe$JM3`3|=fPG$_Y(IeI}5i$2{Jm4yg?S2a?HXJon}e`1L2q*Osmp~!y!EfnDn%Y zp-SK!(yN$7t%Xzc$;BvLkizWC+wjExb_|S+B3+no@MSjIA|$+@W%>Eob-Eot``OR% z?svZ%7dv6^=ux@#?ryx{jw`ToVS`qSO&rSax2&Fpr?wsoFIEVPobKKsY}#`g|Mb4w zob609&EA8jv1nEu@-y*Je!woW~e_vZ`0)UU@M{k zv$zX_jZbn1(30D!CwVZtReI+dcRjk)7P;^n5J^Hf@#`@3#)Y`|TVKS#eCnU^#N&_S z6QB4L7A{x}grr@tSW_9vB4@q(xp&_#?BBN+@B6cl;q@=cI9vH-(DY=?1*P(IG3u|4 z^0I1=-|wE{>zv-?DId1yk)vOoWH9%C`?r4+M&%Y9IM$9o`_zx{t$%tmN{cfgnQiOx zsboAQD#O`D)AP`My4pc2gKPD}TE3n;YF(MCeNp%6^%C(C=WQ=vg-?C;5j-yDnDlPT zQI2vH(8R<9e)z*5I`MQGo34Oek5#|SSx;z+TRs_vkBoy=T~aIntbKxyQ30N15E!?n zbn(_FX^2jaVPvEq1%=a1ceWE*1| zz!Z|D#GciD^RS!_d;yGL@FbBBczKo4_}OlDwN;FvOn^+%+m11^m6Y&9y@mX?c-Oh# zHm+SC9_T~YnL}8ypcxFmoU$+?4Aqfr3B?zNTO_5Z6`!V2=@9gxL3I4U z<1k9F=-UmsrKDh7n_gKH6XWRX??6Se(cb|POfsW9t0HeqBB$tJTzL;Id{6Pf_3@+C zV**)b8X^cPi|SC(uo&$J9>+x2NyO^sMPQ~Z1Z+hSZ3dsB8%*;34}7CVWkk>(^?ht~ z0$uIBD6J`W0@}ft08`Z{4HW5hb-dm6!1A9k4+6!iHxFtU(w&oP*a!VjCkqiCJ`c1c zFD0Wn!o;+`V9;h3lzef)D+yRN*N8U;Rr0NlnuK%}VbOg;$B+W;qIeQ%o95Lco{pn? zaKxB|TE~;Z^|q_q#p#q7d>MS{OJBmtlP7U8k_JuZg?7B+#sy;G&$F@*(B}orYOTWO zK6o1n3)12Hg87lraSRTRIiK4OT|mC*$c59ZoOJTq&I4z#Y<{ETs>qC1nWBjq_wqz% zNw2SDA}*d!TnN}Ocoo&t^8V(1?WnA*!or0M1t^w>9OdX@ocbxNZ;mw zs^2`#o;@3%`OIgKOeXR4^M~;1uRetF@d@Y~0bQcH0sS3T8N>3{R6Y3=e{71fY(s)g z`I}pRxnof`3W9sgx?Tj@fPFoA%`KOS^(TfO|MfR zbyxMB02MZxN|}qeFUzYeDL{YUIZTX?c-NF|rb{??ZHhT3o{x?7i@RfP>{tdZ+z2!4 zrKLou{=T{3UC``IvkfdLOXcHKfYNS*ULG?TVix;Xm9Osk#ZqQDv^E8%k!5}G`i7Bu z6=0`Tulf=0ZVcCyOnH1UC=kUjlvK<;2DNxUe*NyX(}%aAC_awb(h{A)OChhw{*htu zSQ5!}A+5mpgkh*tE7SW<@^DT-9`CnqySkqY`nU+$loWg*Y?~Sz*U~UcKC;4+HmQj* zo*lqw!Ewx9d@ZiL^3QPU)CO$a@E;D46@WhaiVCZ3>b2QV$3Y!^^p#kr!26$uGKgC7 zxv`?FPwwRpTd*eB6nNRG?Qv!uh^Ski4`%AY!5)l`4C(pk^JhjbX6sLKPeXf1{o3F` zgu-Nur=XB(!T^K#~ymnhV$vgtrusP0fZvUKW$~v}_n@A6L$|C*- z`i3yjGmO&eA~N=k8Z9Jm33~}=I(1J0u3QAkqjrWD4~Doxi8*aeQ@4Xj)^p>~dlYjdOyy;D^#?GDF#9Wi7JrUUps+e%g zcQ;i}Pd7gH*MEs8AA17te%HIv(%j_KmoPvnRjz7-@>a{y|NkV{&sV+bRrufsKPZ3U zD?fY|fA;CS(Is7`ZRsO^+tvnX*H|dOzG~|$o4LN&_~6DLfJoqpTkg@-g=u95tA?(E z>$Ab6MzLPruxd8eu3d}gpMM@X%2AF2di2r9asK=T%${?b`=Zh?(o{SZS80tQ8+8bw zp_lt)PF90zN=h&~Iv`%UoQ7+>QfrCp89m)|bgWmbzmrZNaHej1>zC;~0RrGKgC9Rm z6T(fg$`jH=79}+4Cn+yniA6uQU>Bj{s2RcaZr6B_LKWJU`|7gvqR&TRWvU2_Mxz($_Z)WRS+m$s$R1r z{FjqvN0|4GG(5N$5D#`EDbR{MDF2?yr`h9r(Dz{6+JQf&>}aK2^1!=pGCPXFhlNc#0j90QUU|3}1+k}GPd{&0qgu=I%uTj4WrfY^Kmk6x&Ht;Sv3Lw$Io%>KPmoBaU5%R0lI+^FOaa2Cz5PQ%tYKF$i1JCZqKYeopR@`tC-t&P!!AoEBY9tHGaPnLqp4fZ@J^dqia?3F+ zo!fxAsv-;wj^go+hw-s5K8kPLw^b+{#=L>K>);8AUD4gTRD{sBMw;g8YR)sI)b@-BSzV;{u9LkGMglJ%HZZXLlwt-eb+ z@%FdB0YCo!kMXI0_%z=7*0<)o7k@`ddKY}?Lm$FB-ti7(G8ug5=bP}_5Bv`{?mQlP ziC`mBr8CzC_nM(J!>()4`{t)DjV}A`^4nY+Z0fC<-b`t#lgvn==*@Sm#F%)~`t`4W z-FX?5qa5W(=*R;Dc<{l8P+ZcAvho>lb$oSK>EXe583SuVAXr))7k|P=q$GJk@f6~$%#?OXp=P7l~%OH)>LMO3h5g|*!1;Te0;(?HimTs_ z<(L04PMmlS>z@5Lp$Bde_UO39=8hVj>N8kLZNNq_R|1WKYrkRnjJ8Nw$R?(bhQmG( zxSx($%Z=82bW7R2J~-Gb0P$h3Xfl2|x7O=thcVu?dkD&*->vCcIIUTZjR=2rRkKl8 zGY2C_HzGUIk4vQ}Sj6797tfn_*SoL#Tc-e35G|B^%Dm@Kbz%K4c45w{87QeP!llrt z(A`d)m%;Gp=>Wm$5^nj*C?W%kbh4UW{y>gwDJ{>urvEk{u79E-gKwTO!UtCZMtqZw z3KLo8#Ho?GslfEmC&pvnAQxbrd$g{!;SzaMvUzdx+Mdc!qQ83>U1xfbF3%TWOCQd4 z_n~`e1jB9=eAm+=mUq$0n3FDseaBAXvdfk`r}o+C+u!~+Hm-XTZ+qocV0lR)$S2S< zG$GnIiGk59lFqiLz`c@9QS;dNBtHMcjdsWI}bk*_uCrE&{kg>5*4<(X&NdbIl|(GJN!-H zGv9nt^k*C&{piP#N=2Vin4=v1zL1=|)22R!w_%F!PpZQZ&9pZnbB(Aazv>g$#vN@^%w`^=fm7#}`@ zISsYHwiks`S;WY7)7GYP%m%;8Ex=V1j zfEDwQfXenGCs9y87gdcjp@9qrP~ZZOy{?nqAYdj z{DRWx`k00H5a48)?cFZGqY4XzCfhV(6zo{VDFaXS1`N>c4oo{{%#ihlVIeR9SEMA7D<|YAl&A^~|gZ|W0PvY@MAI0%w zC$Qr375I(-zE-SQ;V7Ot`rW63f&ynN;T2b0fj7PBO*nG$6yEmH@8IS&^YG_yz78uF zw`%EWK;kHwY+sGTq{1249hZCIfMo)@#`i=lq++^A83tFcJj9J!YFG-e@t(ph` zE^dNZB%k}7vlzf}#Knu6IhS3BmbO(mug8i$zn9OtQNN0JSWB-BLhqY{ddh^ zZmB_E)%BG-ngXv)o2CHZB9=8Qu(7wlzYP~Eh7)UiH z%%OTJV(Lvv^eM;H1^sfkSUE{#{Hs_zhD7QjZ`r-A z4>HtOGNcpS>`+hu4YYk$a_dYLW>DT(gSweb&NCSu7{b}Zr*LH3VVvA|8hg)nU~*y- zC7CoT#Ufo+kVYn%bOM~K#W^NVVks`befQmm{rmTays+f8ojZ5nuitw+@?>;r3r}+U z;@R#oOiad6QJ4S?wrPr@i~!7sL8{G7gW7`Q;eH zqQFz9&I+M;5FdZz(ok>MLo1TT5XOOT@+{UMT^Z!>4k z#NYkh-{Hd_{xA+7KJ3K6+p%K@p5L$;_x|J_XZuGy9(TO9?s&|rA8Ao^cj;EqG^!ws3*9&ewg}^yL>wT@~Fm6y+&_;}a8ze91c%MP!k+R+JRr;JHrm za&<%iSZQKpsTu6ecwecF=`zEjfKo3eUk(sJ0!BVf^QUG7NvbYoS&+`n>q;tyARlFk zkun409vWCh&5sbkX7K4}GlVa<abUOy)upZYRY>m4=p7tGS#=ZW36AvHx-7WkHmf|Xy!<{G1loUUT)Bk> zV?F>!V3e%$d)l6l*sTG$S*KL}EE=Quv48H4t zimgn0tSptsc&em4X2=m!dvL$Y6A1_UJCRQ1dqpsWfubOn|IpOA=ll}ds-+>5l^c2t zy+*+=CFsawr{L)HhNVarR$^%XT9n@SXJCmG!q0+P#&QrgO4qh*&zP14KbK0QSsr1< zkh~2Q7sf`$-P5yT7nfKvj7nF(8?;?bxS#{o54|=eG=0#D3%Zd5U;eUYgi2tmuBHt0XVhbA;^^$3L{fm7MVYu_%ja29ERW&N z8y4W7{`VJHzI*`|%$tRfw(n((%k4^D^9RM7neYGLe#~krMMHJ*ML4121jfh+rJDFTNe`d*AzzdqbY19Knfyv|zyk=TDN1;nUaGC+6dzBPS{o#E5u3cEY zdNp#Cqd!#Iw{O4rJAft2-s5;y`Sy{gJ5$3}89a%2+BsmyIlO49kQ^K@h^mWAu;chi z3=azj z7P$unP%-$O5E{0OI06vwE58o;ld;gF1g#g|%4?YuK~Q)1AAhY@W1k^tgUw|IbU3N9 zxC3PMu>DAsWzbYS7p*hapugv=coF&}jvaj*dv=R?mMKGJB}-9KI}e@5HzGUSi@Zd&R~~J)Ifr#V zbnii?3mNS@X{TQYcL6M|K5evcEwA+KaR&HQTSdGE%58(agDO9>Du#Z&%mu3$8O)5N z^uKwX>+v3x%L2DPt)UeC_Sp{Piq&m@IBGy449xF1N*P*>f5jcl-c#VjX$y?aT4eci!yDX$~_EWuOVb zYLw9HQK}ZE$j7u)+^TN`zXOkHl^Ro~pQ=usBdYPFQVG2B=B2p*soi+sfd_H`R*wE) zNxlU6$xnVJCQUx7s~5t5!%uWzS7lfFzdJ|s8~`heDUXogc)?VhpB9SdkT4?83EgiR zxnmei-j__eQUF3p3=a$kR}Di(*(JU@?}Gte$)spM9SdruV2>taymXA#sdEdBTSoL_ zQkKbMh!}`%1FL6OsAAf7(l);xHbq<$_`UrzFyKbMWPBc1nh(|a=fcBTq3h7Vf4dy4;+sCxu`k+>KCbGjAXJU>NoJFdz2+NvYhP=r% zMg~UE)p;BT_dSAb+x{2JE_;V~30eSs-b3TnUz4@TX0G^T_Y-Fbyx0h@xEL|$+DDWI zK+DweiEw$g@|o5i>4h~k)Pv&Us^B?k&khKAQF-$s1YXg4L(d)2!b6Q)L*7}-p!|u< z$-ETmr(c8f;+c+~+=={oH-rn<=DP7cRHo&chJYJsxweIn`xoit@Ua&0C6!4cE5H;P zB+p7jT1z=EgPfZ#xm3mUgSQ)L03E(^Q_}4Oj0jt1nD#>miCAc|&c z02QD=Y!HE;ApF5NQaykxc$L;G$zo%j+32Yu+%yr6(vSAoda`a4b!z_ zbD|R`6Wg{Yw#|v1Ol;e>F|lpiwllGv@7zzl-yhgjyK49D?$xWW?uq*dSNU=Ds5-rK zp$b3e*^P@8lRXrlJ!0?m?2yGb7xNK-E-o%{Tg>1MoBOs{s-UV$w*3q7U^ZW*)#%Dd zW(?h8s|uZVlX>_AcN|HQyN)G;7Pv9hZ5G*Xx=>U}T+Q`5?ne-Doagjgr>! z88kK$*86TyllSSx$?Z6ON@G?nq~_~U*SvymX#=M(l*-kdz@E8W*??l*QQ@|8rlM(W|R9g=OC6-Zfq zbonBWcUN68cz^wNNrht?O|6vGL42qi(?m==5`1h{Qk$hDE>4B?U}OQ|Zq4^wjT3ax z;VE)LdwctBq&~0TTYK^TkSRVM{#HxD-Y3!phzlEmJXa2TmVQwHr7GLL2YI?6a~~t; ztmF@H5T}T;!_gY?Jb+q$#IW@gC~@1RNT>P64CH3Pq-B|w4!AUvCq(} zzn&vOAe}j%`81O_l4KT_e8B4F^cIsE_tlBHj@zL_6medP;sjXoGf$mHMz$afyQ)+A72Io=jf) zBq0MH#cs`KB=GZ9R)XEoo}r*Rf_eYiUmOz^k}=^+m~rusjzz;xxa^7G*_1e@`J3Ve zk6o^CMbp&kdd1|dM|`xcfL7ptX{dgu8B+&X_pYIP=i3pJ(z~s@ykbS>|80jkC_DgQ zfm3 zHE07(_y^4&q#43L=CwUW*VLq7ii>l^=?!oII)Xoxfyu$_-(jyj74@)Op2T-#PuK0dH8De`QC ztMI|%w!J3=+5J7lP(@X>GEfa?t%>?-O@71%t;(DG(x*Lb{cn1DXT+c6+v^hm-mb1s zx$mXJQu~5JXcto|(6VSyfdHe?X_5mW&HkF!nF|m_ZjZK@b5c@?;nqkSR3T& z{|f=Gg2m0vD30#iXioP#(yue++`)gg`d8MnsfXnuc~%|mNUN&CCB-1t)acLG_W$^_ z2^wtMImOE@*pnA^ZVOe_w|pw;8Tyalwe7FbIBi|2zRc5pw3)!U)HxuLZ8vpSMV=0rwh z0;fY<9hWlBK0P=L9d-hgfBlQ{b5yDE3r+ulF}EIi8t}=|Iz^#NUm&^zi@O zOrkrw!{0Qh9n~91VYhufdvEugTbm0V=8_J|P6&zqcogNrv#$nai6Vmhjcg|-;$8=? z&~NRz2&kJKJS1(0hE|-@ik*!Z3aIi=!aBYc=Nl=zm33Ep_Nt*Mv6Dn-r~pT8^jUFa zi8hxh&Z^cqg zGWc4OX1cB*16%=@@bN?I{%qNLUBTxL{pP=~LE60!%(WXC=F8UL?trp7Rxj-AT+|4A zh-c>I4fx$c(8r_iAQmQe|Hs=Db=!UA$n8BlHNVgk#XHbAZBlMuBKB%HhHm7x-gIFQ zw}W`I=bBURHg%^@V#k$E@2g%kCFq`t1ppcSCc+qJ><$N_BtEXSgY zbZ=)xVt;148t+1gn*b=`EVvdg52sC^Q{f7EGIm>zV_}iA+{!$X^@{NdoCJHyr zkoXC&j+*ZKm@au`ao33evWOm`@kQ3j*jxjTkB(zq>R==~$UaJkrG5`~yU&Xf8HSBX=r%1gK(P z1+w`6JmC;R6hC_EYw!%7nm1Uv)bDM@21*Ufy_9B4&D?*>+_V=vs3Evfc{m+$2|;nv z_L>e`$RPa64L)V8pq^h~TM{k27!zVLbGUE}j`>)3^p3d&^!S1IaB$F~lKk^@S-aF{ zQ0VjWN(iJ=yI{3jywEmUe4*j7x}`t{UyDHd!t#m!tb$rpET!?ni^>S1fF!^GY^mf^ zq0KZweWQp6^P5|wuU#q3Hf9Y7na>IgVw4HER(uz@Wr^nDzE)Z3h&GW*qNn0+@&Y2D zcPi1yD6KW3@|`@HxK=GdG#Cu}KbZ&JYlGulW52MSwJcmvr668reGYleYBFK~Ei9b8 za1@k;th*F$vnC#W5{_-epQ!ejAbOj*I-9<&QUU7(KS=!dT&VD)SPH%LD>`^zg#&2o zkK4lXKHkCcGj?4wkK|Hfa%iRCjDGR-HZa{F47!xrL4>yC2p&vwC#m2vnbR5%c!exG zfAtT=>Fb2GSz#K-JWQTnj_ggn*B*>zbNcM3xpnvefxyXod+k~>c2&KXm8FGMZJ6P_ zT4nETwkK2%h_VIUB?#oAV}@94?sb3)ng|8uy{~ScSC}hzXNr1bw6Zdqeq8C_#@B5G zUi%ZV1=Y=XE3`J@wDNlYla*I;zaj7TVNV82=jWA12F{l^Z0$iRRV&rFHX!fs3JUy> z|NHnAW9XApXp^-ABJ7_@Hg3&bS+L z0^hP0cE?Q>>;8ON`x{+{*$>txSve1<&Ovq~DJSn&&wx3W@a1ouGPc3#yw*BYb+a$@ zf4T2J+5dinVbUg*KCp}ETcCopZWk5!skQRRME5e=)Ac+u+vK$~t$uz?z97!r2Ac~? zq0DBqbyqn!ThHDyyId;4n+cCV;bZakviyAsg|hGChyGyIVc3BfX#7H?#Fj5CF@;1T z(2cEI=!ge0d|7n4Ee?QH!j}TdpDN&aJXs}ffnbaKbBBjst|&NXZsjak4i&~dYr@HP zGRE0{Y^oV7ky-TsMhaF4+I#MVU_YkR){N2fHf&_}RkP71*SDjSr?)sW41ca8I^I9@>a#KlN*Ftk2yVg0QaM@ zgkaMljgJD1G|#1 z%>(!^XMwm53+HVHx1{tB(S-$+{=9FPL&A7(54m$XA-7|+a?gl`WcU)a*b>t2s0m<9 zz-f(ut_t?&0RqS7%g_H9W9Yl8>23$9!a_ozjyY=oef5qH|0u9I>WYgYaa}J&c6wo? zBAAKUetg-<3qANaIm*gIC-i?J9P+MQ$&jtdsJhe-dA8wxL-q{}lp0G*oz_`Eu|~`M3S0%e6CadVfRskMy&BD?Pn_zOl`f0fzY2 zTZ_0w*a>)eCU#exz(B05M3^m0fP?5Pt4&g>yo8V;BGMI4#9Il@?CLL^xIvq$xy;>F zXxdtMwp!^LH4a#SP2dqTTk)cc(Lsn$=)8ME?D|-cgnOU^CfG~?1W}=I+6{%|ld=9c zC8mB4)R;4<%nT{whoQ$nvWXgjINCuWXOk}C@$)ZOol$9Ad3k?^)eeK;*3}{TU zY{+L@J>HPwmFd3b-$(_Y8qiu;>^~>LM@Cz%0|hI&79dKI&P648A%4smM9tY*ih7=H za`W!NIfX$WFUCe=RP4B=;aEyRb2%xx!3&o+DdP6hvSz17z-4yGb_W ze-is;SxEopCQ3X{nFX7oU2$`3w-DK87f<7zVvKGsZkTO%BM*TNv487@1xm3l)mFF@T1mRUQ<|Q* z`Gwa{4&zs=XqKN4fUsXD`S6@AE;b}HRifa*Q*2Uz^7xo~usR1_=VhNvY!VXZ@l};Z)Y%{#|&Yn_?rusn^24hXM=fcWCoIBM-n63rI&7 zgHJ3RiNnk^31y9ixbB9qIa4(XEB7K)75~v_oY+XZ2;d)ocr%xDv?wa;khiA3`Zp0= z1Pwlj>RQT;Aj}Z1H|6F7o?;#{#kQ2QOa-XmyoG7J6*0(WeKjw00=q&Lclie4MB6+V7 z_8&RzS8UdtpHvUl?v%N*yg^+Zn*k4RX>8FXT^|w?!Y&I|LR;IBti(GZq3@7kdSx8_ z3@CtKoZL&N{X9iIsr;qbBczuUYkm!v}D%vc_b)ry(zn=r-V|e6fd*~wE|5}K0 zEJ9*!RW_uu6?QhmymR2)QXm!obpsq6R68#bvcbEH_zUGGRV4nRfIhdX9ZXkBf!5zc z;v|VBR!wG9szfNQI?llQ)B_Z6W?+1&@tBb0pTC!_7tev<0&z0u3UN@NSuE9}RJ@y5+gtQ}V5 zFPz-Zi48@KxCo;K3T$V+um9EMz)3g{DJV8o>@$I7%cv=VRy}QHWs3L=_NKB{csaLl z2jMAh?V=MC+@fih4uKTL^Z=dv(r0Drj6E=PaXE~vFXoZR$AC{+Dev(GdEWUW0Gt-V z)@nmhyFTi(HRuk+i9pxv`p!g_es-uus8BQTZ%n|!DI`f2es10uF?P64@(%t!zSx*s z;Rrbhl@H;~D_coqCU#Co|Cr6fb~Atuwl=@hO^laeaTf-oWVGY8_;sG|3PBebU%&Nx z&^t6x!OrpLMDm#MI`TSwjol&??(1ai6>wIO!!+6TG4!j1xz@u5g@G0>rK}s68X*Ne zo=$BqJl-TUR#l=^exml-r+rgqpom-7fKWfS9)>ii|nEuro zuMY;~rm$iTTR+?})l41p=^F2$)815%30@fr#`Qr+d51K1lRd8GAd)1;#^5(tqdo67 zTj|I%+~mB8V$UBdV7;WP9C+H)&n>UTe zUO8j)v=#L;+iXu^S4qul>fT%vcH8TRWMyR~lHhvtF16VJ65sj)HC&E#VFH|?S(x$W za+e`iePIzKD`;wZ7_A`QD`U8_vnhTn3$y{wW!qc5fVQU=)=RTkOu4Tp`CsO~SB5IYTBC3)$ijzoBJ``f%{3@p5Kea+SYg6p<6)3ZNcM^g9nR-@QTUx%1 zpWV-sd*Bl}x))3N7jCN5RV=>(cX=*Zf=Yur3N63_FIe}7UemhWxU{s?_YcFTI9)F+ z@c17X&(9e|j1S<@Q%6rw;os=)gfg^11W|*DLf7XduA#St{b`0}E`}lQWDF43`8Mpd zhJojmNCNNf_7Axn7%bepf``GnP6`hWHS1@sn@);XEVgGURQ~*opOkPA!{wf~9uU3O zB!&Nlzi2ae)IG@1ArwxrJ_6`PsH_IrPuo`AT&VHeYUh zv(?Yk%00BjB1lcLBSr<72(;O-xqTErIcFD`^Ery5eF^x!D^MF9+~1SC5>2#W;lZ=3 z2%S}F#1iRHhmxtMk`9Jm{b_DRopXImpeUCEQNhuzZ$k^c2TTY^LPYa;`^AC2)FC^l zCY|pate>Eg8z`7R8Ee)|z=*M}t1Fs7S9*#;EA@O3V{8PX@a1hsL}KlFy^;At#o*0$ zhk&TfX!YpYRJ7>}=wnuHI{jR*|4z>cHk~#9zo_1WpTJZL^gTH| zsH7HtOe8+bU@%*95uf92CM(4X6j%BnEK+Er>c*6|msGPTU~qV4(Afw~4E0gRSy~Zd$e3v{IeAy%orxmOli9+0Pce%s6ZKAI4#I5812)IQ5g+N2 zC&E3_On74r^v*Ho{7B|DV)uwEEQ%>fOMjcud^h&mZLgREpB_*Z`;X$8DFaD}8|sv) zrd2y`2b{L{2&@Jt=oZCvC4t)nX9TssW7$0)SDwEa^kn9_pspCNV`V2)r5)w0-?8XE z66kgFIwaeVQOuG#0ovc4^MLBOoo5 z82Ol(!etZ{N(gsgVcwDfACq7>Z7rK}jw9e4m2lP?J=XnsXNJKrDc-fn87qnVs-Nut zSatpeczo8O_>7K|vbQjt!@7kr>}0N+qg8nZAR96B2X#iEm!#J8PI9drT%7T7+V2Ye zx5ZIbkrTVzY^A8Px$8f5OpSQZVo^pjDI_m3(&F^}V;GswTv+=)+P29Gtq~!$J`oLo zk1y^cRM!rRST_g9;SWugCo}Bs#=C}t6-;g6mlB@}$vYkh+$cRR@ZKp*JLQfM-Re}B zGgF?VwqCLX=qY3m+h!p-%Hhg&LjtMXI%;f5`{UY}2e%y@#(OSK3VIUc+>|fHeiT|b z?l+s#cA#-ykjrhMf*FaRs27>+(7?X|!vda+tq!d(XCRV^xJO@?*f!-mFQi2P2R7)b z8Q)SEi-|jWZuPTjDTs-!=Yb`9YH_x*vQz|_5T0C_^^ZWW8dw z4OcM4eii+(bfqtRIiF0X#s_eN{(nKA8Mg%&1!v*&qVpRo^xlS1T0Mu)Y!jsizhkd^ zfhTAkek1jc&s}ppK0Y3-{mvD$xim6izS4HL1p>$v#}Ko(Vc!TQ&_L8g&0#|H;X0L6 zl+t1^2J=8@#UcGv4{y^j@;1^AP?@;6e(K>ohxN$idmjv?t(<2n@i#RK)bCju;xmEcb+rk<$$Vl#H7TT*hd;m&fftGDRx7jMW{*%(jlu4HfX z01=Oo z>JgW#kA4^_>{(Jk8F#L9?Idzwc%BiRYVfy8vmIw6_YDtcnm2+*--8C}iBSgt1~oi* zKY53;+()19&ifM?a`eDVL4_}*Cn3RJe)Ap^zAf8kN;=ixQa*PihT_R^iYA35C&~(= zoP#dkO|cIEcSvZss6UNh4> z>yz1vbuSHT&mrx`xL}jK>3T(5WOV`I%I6NE8f~iKHAPFfl$z$mJr*Z5tU%rSHypO@ zPl~a9S|sFhG@n^O5xe9m1HI0_36>Kg!0^D|q8gogAmxHhV4R9<(-| zv!!)ut-ao8k%$IOlm2lD$@8BhcEkB**AS223lJ^)OCN$1;LMDrs7u2A(k* z+LP4em}{NnWqgzqE7ccsIjNa^%~0_DMqD;JLkOe>+pI5CU|{KB=)tGpkL zi11E|pZIdTNFA@c2Vg`w)~5fFqej?5Oj6@3ErOZDgNTuk6`Agv9e#p!#(B1vSSu$t zG|2`niobT~p&Gn=p(QH}R_q@~w4_v2k?K({CPQm19#>>ah*9UsW#t^d($(puG1w{& zJ^_X|Kj~qCA4AB<+`>X^cMd-SQe)wDKjk{G^p$`Y_ zTtlb|Mmh_vQL$lx)&RvtGyhpc`$=U-{^)og8NrgO1HCZE7_(z(h+z~aU(c-Br>Hk| zhGs7|Q)mvAKGx5hq!X9qFYfIf7;VQn{baT;?$fn5Ad}q(_5OJ4C`${V6^&Rc2^!*` zs=A1B)0n&~l{#(0l;R0jti*U?pNh?3LrvAsTu!R!VQjKUNW7k3C{ zUYdh7HGl}xYpzT_7nZR91A)K|&bLWta<3B%@A_zUD}E^EUK8)?_!OOUC@(HOF~vy4 z00V5zxa3w~&&}W#CM>ipL`NW4(5Kw0y4S`|Gcecd6_$0ndMIi_>(eJPvdNP5UkfW| zbl>ORicx&!4ZfbYO6u_JZnud_j;@TA1CdAI0+dBf;tuZ((gGG}aU65P%*C?(%$xVI zfDTDWie)svtuSfLrTa0696o1cYR`#Bk}5imJ@#{@JbBu^y2|M>E*i-4Y#c;mJyKrs z)Q{$=5{+(_!te)I^YgR7;qN5>oe3+cTJtgH&9@9wbAh>VI;-csv-jqM5oG?@i29$K z9!tEPcgquX)@soj*84a-DO9#yr4=eGa?Q_?PvF2s3X%U4ZdxRmk(N`YaOXAzEA{)7!#c|CB^yGZAF3V=eCn;^huA&nnXt9T9RP;KS;50aK&2EoVvgV zPB9s{JKmsY1$YDI<|Lye&vVKDb|&a|wIUS#IBr~#6a zE-`uhG84mghZsbTbd<8CI5s*4enXtMCY}lU^!(~V#Me$BBy<>JmNKUbq*Gji8*-G4 zug!#5^A-2L_}VCEcWiX8a3UZn}xos=UK*8Y;53El*ctI)aTh(EFNJ zjNl=Rr$jJA?2vd&t~yFYWQxm0q3Z=-%qS1ZGonQ5(1u?3fJ~5hWE>&zU4t9K8&dc_i>2Y8LHJ36t0y_d} za)p@c5<(VdH#oGb-OxFkdVXD)p{fYNXFvTlU~)eXq^>z@!YCD_Y5DG=jdeRVHKEok5 z)L?IXT?1(=WL1}6K258>du#9{9$!>ZLsZ3lLKLs@$cWB&{i=Yy#g(zDN&{YvDdEf4CGqJ5)R#A?YST^29z7<~_PgI^) z+p9VGfBvB!AFWn>pd*XY2Edl0v{)E7?}@4PdCW z9P3Pdz=oD;Jg?#}3bedlZ*MQi`1tt$`kVP6keD2|eMv)u=KQiz_-g#0x`eLPFBQ$z zS$C9Mo9}e~F@~Uy2r)7H!uo{mZ=@P*hkj~-BnJd>Y-dG@+ni&f!XRj`Wmvl^`4B93 z3;mSzjv$pL%zJK9CG%7izdUmk7V&Gs(!fh0g^QYnK}a2VKO$XPudkZi=Bm^SO1h=c zcoCj14gBeFI?bMKu;qdL*EOc&E>C_GA&*&V8C6Zco*~)^+WM&Ao;TXGBS-UH)n9Tf z^8__>cWwAQ&R|xATR|o3U>`#rYI$wl0JNXFLe!C8b7`qDqpru;bMsbGrV6tDwy^7x!xbMKP^W$f-s^`r_w!6f(r>q8 zX$11p-i}MLldJQ?0e6dk7SJXiESXpMt8YW|Y|XH1lJo=rurN^Yo(_K8=KH%4{OL|b zAI-X5fGCzEvSMV4DzS*P-}~_4?K!goBl0b6sG6-ADIm7Dd`FXR2d-95=WK=4J5rUN zLz?TJXL)I9wec%$6n z5+U)FG8W#JWVl3Pp!7h*i)1u&n_>zbGRavZcYtWPD7K#0J)z-q_4UDCDB*C0YGn{Y zw20Q0>3*(~zqAb2`SfFz`zihr=NygTl#?1;C0*eW2y$PWG7I*180)fl$i!?NCm zS0D>I-}x!~g$HK3rt|aXbYjE$KBl1q$owG*6wwWzNK4>z%D3m#@SUJ=t3p#kHPz$t z2wplJdgQ3G?u|U+@hLiP9+26&2xMwr@3BbIFu^7dVw)RHH zof-LK}n9hNbllfN*{9Ch~c(7>wXzx zC@7UMczl1_8;u{B4j`jg=-7Uwr`7Mq`@c3#pJ5CO+R=vJy?LYKhnk@aSG659Ybwsm z*~N3gGEoMF(QEzkSQHN3d43Ak`e*NkN5y3nwjp39TP-qspKPhlc*JpI3piGh-rC|@ zZL)%{s7!_7AqMZLDd70+rJF&5?l~+?r9UbKVrlINCIVIlz`+%%abww7Vi1hzGjw*} zRwV)JjY~Ijz{>me`v+w?wM!ors2{MpC~Pn32mPy5PP!k?YwpUtaO7{70}vMdw6>`n zk=FO2BWSK|GZ?;Lm*{!6;WL{vRBbEqub6*p{<+`*4`r8QEEmR_ew;3V zPFVn(TxA6}IEyKc*%#&-{%R99bN3M5;P%k>XkI}x7`o#GnQ^`a5Ri;7sB`}DzHaS)Wz%r<_K|ienB7-w=m#!q}?@?MNY7!F_RZuAcf_Bm|x5ML?v+V=w zhO}1%s4@}Ej z=`Fxx&|R41MNX;(R8ei86&b^plz~oOIpo6S@Q5tP`x8p1tpY;-bvzZqelzs$&ao$1 zO0HOJrT7j|!Ga)dWdulZlG#Na@u**A@cWB@LgCN|%}If8Hw+->MWC`r-G`vqw?%o5 zyV!radU_Q{S?tmSQL}p;y?nXu>4A>@m|=0N1F4Isn1Jj@gqFQeC1x{_9Fq!m(IANg zlI#ZE^Uk3_=k`vZkqcazBK_1JS;$mT7e$096W~BO&8$Tp8iMm06ev8Dq1P);lj(wM zE^)bCHYBfBPnY6A(v6D#1>qDM;qQ=1?aEc0` z!ED)^{Gym$5r~2`>g#lQRg$=MKTW@M8{yfGnelnrad=!(4+W|J&$;`bF-!jL2H|XN zc0*uae?gT++4dj9aN4b;dK_g_EcVfWLb=TmNzw>yY^XDg7IMp>Aq-NLVagrG(2#VN zg)BxtN^bAd<%YwOsyfgx|K?qUMj;o`gVyT!_zy2|CTpxO(o#7w*>0C2Yxitmplcs^ zH-O@4F~+#G_Vb470cO_H-b55cHBk=9{bzGjPlgnkf~Il|9H?4yGFD+{fha(M?AHke zek?Vtx!9Df84RKL52l&!$a+=N`iynB&co_TNQDMaRNW~>?zg~vx??#HOFt-)A|n(yiNZZBWI6|)FO^gnJLLG>^! zb<{BA_f6#SK1paZ@Qni9hM=rq*Rl&_XjA_j3y8RY6+~qw=Q4c3%^P_o84Uj=r-*If zQv^|W{AZ|N^RRf1+Ph5D-T_g&w0#7k`_3V-yZIYz^H&LEr-CAb;2e|+$E0ZaOH!{| zj@vSmT`Dy4pYj#Xbr?)3=@m?Xo=n!iY!o*^rt7tHmlqF_HoB-C|ydQ^;Z`5m+WrvYHD@#tBh$p&oG5YW1gj1eB^m666U6?JyFF znBCL4LViEULeWRJ!%cJ}>|ofCw|-t7J!DX=BiNgW1BE}!;kivU1CPt+1V@1QYx34g z8>*PU1R8!{-Gc%@RkjQ_p(9C~Cd-F1`Mqem?`x0`z8Lsp{%vA!JMBr>YdKH-CC0yjFbhwAJ*wMnWkFcU?f9o`@JBlT8!#RG!xD;HL%h_g| zQ+s?oZ~%}K_YmZJUhV=`OD8UAL4y!E@mj*F0;?t~6J=mtCISLeI=kf!INA6UnHu+- zk<(so6BqN|gz+$E)kiv(;zI8C}|Xh2tT*U9&BNW4`9?eUmZfY+GcB{0mf58*p@1F!YM zn~&=iBIg}qERqjaUBq*K!W0r82A_6xFtZ=Epq@ zu`pm1XvhR>00wTTYl6f*{}2o$fT1xVTW$2q{Wa{jig`zFF!XV;GJE%XS^D*-1RrGE z9UO^QdHrXT3|mko8*i;Vn;_zBXSdh3Of2J)-Y_pCu)oQAG-h;ykyhI#I~1l{uKC6* zk?(yKjZB57httur%TI@>=<{b7QjW)QVZF&`B*%3me{yw|o|r5y@f zqe8$UImTc>MoH$GpYOM2kY<@I58D%~>hE?)O|{m+mnrAKm4*z8+CrVy-u!8m%r1)>IS?BoQMsg_tBPu&dR z^&kmYC(aL$Ntzu`@ak^kbmV1-wl>o<^#f_byzbd~OL6;%kYJOXG>(M3B4|~mC7dX2 zZzBl06*(CY?}SYTl2J&y?6>S6c4No-Oo&b?Ed`ZbSTox_;4@!dxIRy#m@;r7fxw`_&8h4p{O&eRs!P`v7?xt0Vl! zoo)YN1A(5O&vVk`6jA2z`~9iM-7q8rD&|YV32Gz})0U#TR9Ktf($}+bSWz3@q9Ya= z*%CN_-in(^dV_XFyyS45)rp*8BXWLT9tbe+UZah@sLKm{CV@cUC}?P0{Ml1 zrN!zALhFa|MeWwpd$rnPdOS7R$xvz2OCgDZ8YJ}K+IEA{Eu7zMCT`poUh_s_H{e3X zH9-_(40VHEk6bq`31ymEg^?*odEQn{dY(V4h~4yxKi>CF4qUW=p^e*ZjGj_9|K0GX z%S1LX)27;femXL@r3{(&&(u6Fr_K^}nS+>q9CpczV=TXw@OhU*f5_RFOiveoFXNk* zNuf;L*V6JUsA9p%+Q3LIwr$hosQq|3<%D`0ioA#C<8%daVnu!qIWC}1R9)2Po|f-8p(+Vw^SC0M3J@R0W-PU9b?Hq;HR-MW7^l<^odr20Mh~v%D5-xD;|WkLLlw?Omy{n zp6K?3#iPJh2^+0WC#FMf0g+uQHivWClRsG0fcFwao{w))FbQ$=6iip8pNZnpCAAl9 zGd>S3x!^fg&XB?YmgZSp9+BUP!rA`Fx$I*X=yX1&E#TS#;$X(v2iL~mB(eoXR3r+n zERPss4w;iOfrk+gdJdN=@j2D%@^RXQ7KQILnP!s|DGFpyHS;$S#(ul8$lr|+1#nSgCJ4Nzz7KAE^LibFw-95`G~5vpF8%KLWX;*;^ZO6*2RtDv z_J7i=da0seD=RyD!LQC2uU(pJac`G!UxrRKNWH;h5Al1-`ZYE)4`U(Z;)4_w#iO;m zZj^11w|Y5!zGp(d*v#)2fnde$fYKa~anLVdK<-d*yPP9bw;e-)3hRciIoV2ub{))!{{qWXKFHNa*kN9EFC1 z`4-f^J#!rq7eK$37{4s)@-FuAaX@6x+p{Bnb*3xYWiem|1 zsI{xkN_!K4-+yz7eb=0k@b=jr<;vaR7ZrM{9eQDeyfQ9s;%Hf8<>HQ2pGcp#w8GFr z@C3_P3I1D7uQ&K!cbY2oRt4%+%#^ayTGZVJ{#@(007#00b>M@*WBd#^ud9YhJG^$y zM;^FoHPZXaGY5zG`BdjVpLaC)o_T_|!cww41UFddHny?q7qS4=Iw^gGHd8@M#CxkMQH zlIj%LM@^6bb{Z4VmPc1)NSE^45X>-w#Y~4KH~TUj$08yk-A(e=<>Ptf8%>`7^{{4Y z`Z$U0mI4_EAN9M|4jzQ2g63hwCVdsvf}EVZ?s4q%2kn3hX=cHAl*r;JwWmVWs-oP8R|Wwy$7SLrh7~Jy zBFXB1jxUW4!l?$!o8z8#{OE;BlqO6uc1ReSS#(*6RRzH^89v08Mbm@6C;U7EwHrRm zxAnV>$Effnn*ouIn?c|Vu{`jSQl|JOB~{lyb*B-)l1bxm=*+SG5`Vpa{k=oidN!Vp znG^7~!taYt__j&%GA4i3m&N4-6ea&_vfh>~tgR7%pnVBmo}l-hI|A0_6fKkP>V3sm zgkBAy*QEAPNvs8B6n6osVuYH=)Pir2r$+TO_M)ee z=D@d~ygfzh!ARjmSM(rvyU|IIZ}MK3f->z}u9`-=fbj5S{M@{?N{@{FBbip83z_A( zkvk7RvaWnh#Vh`<(OGYwGP75vFxmK_!RlJ@Sw%RF!)0JkmKPlx{qv&y9_;T%B-+Tv zoQisodY1`Ob$5Yer%FuU`dZ5N1+L+$H+gus;fgVd6+ireCKGU5zLbNSKo(bzEekXs z>aC@V-_H!KpPNAN9Tg@pqX0B8aDemATL6gibm4(l>_HV9E9?Fswj5RpH&dgf_DNwu z2{vSL@-I@B?vrTPhe;Nb)R8U#oYj%*aJm3+Ief$(9$OoVYs)Q?o!avx4ZY|*T%oPJ zf>6Te85_9^=AmDuA}S%$cJjdMQb7o0C80*Kp@v?P9?cIXFJmOz0Di zs-F>*D}R)oV4!q%n0(nSae?j*!BA`mF$Skl@BHQ;1^=1$;rG}*L-hfDaq7zZMV}y{dVkF1 z$H72g%$=?JQGiv+U!+puUlY496E4cbELAE5=`j^It_1Ff9$?bA*3>q6eGsOq>gWYc z-FQGUSp@Ln)d|R7Ahv9-$f;lhW;%y25*!+7H~n{x0}|P4!*As2EUp7~SDk)TEW!D4H!aQi+1uqr4Vd9W=TER3dc6 zHtudHGj@M3j)b%~sI68r;AEQpAXH!{)Me(P_o)h+@sAI#*`%$Qg(lP84`y5S$;a`# zJ7%*Q+=uRA!8pA{fo({$Mi!v)vA6>vzr-zpKmr_Ggwy>3q1kpjayo{8QRVm`nnB+$ zv)We3)E(*x+7OHYlw=4@TVs(k1iw@Vg$4pTpuD@jUm~Q~>ppf1OmF=Vm6N$Wgl={hr*{E7@=7Bof%cVTXkD*aVRQD5cQlc5vK{&Q4{Jsur4PX+I2rB@r>fDe+`qD(wXde&)G3-OcSMMO%-`j(EM3}l#d9ns1+bQJM zr-K1URQ=GMl)Xa+F!bQG2(cuocks#@9+!But&UJgyuO=j1#eZ*>?EktyGJd0G1EDq z=vbuLf;lDT3Z_pHErxdz^jE;^s{b_FjeZ>T_aYv0>dw4~9d%Z}1t)98 zy_@Mt@isa_9SxKXs3G}+TF7k6%9(S)*6}Z?rWiO|BV3-$kN^`*kDQV^E*_q9Z#g0^ z`)=Dwj+0T=Xkv+nrzbJ;)7W9DqH28XQ0kPZw@C7VCRt!51sd$FFi%POSUy*QHA@Tg z45rb#4GWz?Ze%{8GA!(McVUT#_I#R>73jC;YCY6PYj0E$S<>i1ni^lsas6Mktk$wB z1mD*j3{J-aEaV!#2p4T68%sMW5oW{3$N63KL#r$B|ro`DQ%e2P-m(4;W`U}-?IDv(R5DH zm2J_wj;)HhV%x6Rw(W{-SFDO{+qP}nww>JUbIyHRud}r^#+<$X_=47C_%RkyyRW4y zdc^z1;~ULLY(_vKVPKfd|CBll?Cdf+HMs6>w9;kp*dyqWv+b``6(dO*%aa85u}_IQ z&r2&WG!kY~BKxTddU80azW}5sLX!_cgOw^wHM3(e`=>a}a*Y||L?<<{CwOZJ!x|+! z-4b+8RPx;2z|jIBf?Xx|zXBiP+;00KP3^M=k){ktoPlNT&2p^Yj=@&iz#$QT{}qD7 zM|CL0f`?DeuXAW}BU_w;4rEeQ^&@0BsQ|+pXuK`2n*B2N(7V$=H^4l(lOlL+bv!GB zI{*yCD1ss~EMS{QzV09gqJ`GEYnHzCL#6X(!;3SgaQPDAv$8h+=qDH@#~Zc*dk^-M zstLnUKCA@nF)*h9G`Z1FQcxyc_i@4hMBtcDJCvob19#l*77SKLEqT^v_|ZEi20oiu zt>iWIl1qpua>E`BW&>QVnNG{d^qk#-*sWBj?sf?0W45Hlw{H(^dgIKj)gQhwocPdfu?y59NvgWAglXf9MG= zV58l7ej9rp_@X)Kex?Q58UI&CL-)d7HF7#*t&?F6u`D39Lx0g}0&V}a0?zOI^YP`1 zcX}ral5J;*751hmnQnM4)p;b;UJRof`gZAL*9=kr>7rG(BI*C{&0-GhA5r!N8S(Mh z3tV0bBU@ekK8mtgI!irpq*$a`M;D|5EZ@?Mm8z9tOc%ZBz9i=7xem;9oNMa~T%4VW z{ySOX4pKQA2rnP^KYXhqnW^=MA6|7{eLbk6Ru$E>{%(b$v~87`hz$4}VNY@$+)$l_ zSvvtcIcWVfv*X@hvyALbIio4Yo)k|7LGZRK{FAZXXvDfwBASv0m{dK;M<7WUrJ^=B zWEqov3Ry>ZTnQ-oKTiz~(w20+c=TCepknPcX1*aW7em2jP2A-EW-x`fYQcYiO-Ebw z3;TY@WmPI(JNxmkVIu>x0Q}{f& zyc%`~Zg6sWFf=xXTLdZTFf}1or7Q2BdtHpKnxxP~H-W<8#ebvyl7o(LQjI!kha0X% zxD_;}5%q)rm&u$&w4i3_CyxPLd8rT)ycdk6jlJJ<(2skyQ4-_gZ)6ma%=-#5^M}%k zf4l)g+vOD(7#T4)#dT+*6ybt%AqoBP$ddvBrQ1Yh;z@A7db4!+-w4f z1PMeNw~ObUb_D`z`##it;=SD>W8D9AQ^%j};GBmSH?*kHkUYbe@eY4t7x|J}575o^SKs#Hlrh&j(h4;vLw$ zWI_^K#Py(I)*);U=V1m&iewVhj(pXk0RLkTY7wZo#%fuojh;l!7+7u5k_!)wpr0D@ zK=@CWm3No2xPs$F9^rU40A+th-~2rrd*;r^?DI zFT6JT<)gjg33lv)+bcf}R5WedQ@-U4e^hBMBw!)hKwso9Zd1yoKirtLlntrj+BXga zoS&jc*We)J-DAP*)sY5%KX;p-dDw%Gcs&YdkEfhKE!4i zzFO1Y>}oUo{d(PBkEa%N{HS>co?gcvM^##^G?I$uOuPM*!RPit*XwTnJJN}(1B2^- z9EuJP^q{{6Snl!W!7o8 zMhB_fl}j4;P1ftt?A=&DGtW0PHUQw#)cE`BWq)criB=02$HWxLWBMNOi8vmMx6K;1|W@>OC zv$qjMh|9eiILSR_uz7E0_tGN)`B#!Gj)Fouuc3e+2n&4Vz$_y$%g}vppEbDU1qT~f z#L<#9&ceWL_%6dUn)Wzz>13Q?76@8CDk{p**c|oqQ)n+WCahZl4jwMNn-C5zG86-e zY4UHpYF(D>ac*lB)OgjOK4f5Z8CyE%Cg>qU1x2LLxQsIlyj*MGGffOAhH~Ih z>0HDcb8xmUEv09+3%G5}KZ4FUwP;4M{rNi4B7XjWGZb~V4tyC{Z z;!y5V_61$3b@JE0Ky}f9q(RY&i7~0H$wpIoIE=rU!ePx2^V{D`fQ}HuYqx(oYoTA# z{3yzsOc_ll+C(N=y)IuNJ5L=%Xq~3|x6y`r8oe}$b=p(f$$!bp%Km-xOUkkDHE+eu z?UDzbmy-r7e~x_Mgf<6CY2#U3Ap$b8)dQ53Y5p)EpE=2CzsZ1U$V1zQAUiEc*f7A# zoZ6NHpj6A|TN-J|zz#TMuWW~p8a->x`hRJ2EJnoz!vGsM5-BMKDVL@s$m$PcrVMES zg@Zc>d`S5dR8bcFuy}HjuNnvrqHCZXT7lBK*0@l_X>Rg6y)kXB`Imc9PJXZY3sWI7 zW3cY0wI>-|nN&{Upw`=33n?O&O@;2%1PUx253Y!Gqy_wjCewRKeRGcWQm_WnSHZln zUKpP{FP#1tvi4_RL^qzC+$H0z*NAT|^oMsWGJFc4(PM$fce{5kp`q^K{yGY2IZv$a zC;xp5ZRTt9f9tkoA%{+lHYdtxz*Y>t@6~0Cp~88>d1fhM3bo1uw&9z33P9I*lVPl# z1K$O2_|rHo8hB;d#)Gs%r{y_&%K_8%tGjydr`KTkM>=NyaUFMCk9pMcA2#(=YBh6_ zi}F6L7;!ip)L`btQy|lSX`V&Y*x4k`TcU&lZV=eqfO2DXUP zdaatFsUG*4*8>xg*9F888=H}ZEBxxq01hrHM-4NuA0>Z8j{L7emNQQi1mqAS3)5~! zSLUNfro|vrCAJB(#04eYMR^O*`~mbmJjUkb2c0gD;l>|L4Fkcj$XBQ z0%M9#MU`}k(nIZfGYsKrdo&Y?LQj1=Ghnirm;J$&X0?vj;JCc25x;LQ?&H8qY%;=% zup$&z89;*yRrXTJ9%0~fMh~~^8pm%U?=Cl?W(4o)h)iDmlGI}KT$MG*V%U1d%wtYz zMSYdzn7ipGKR`B2wEa41!dR$9z3Rk)`mQjOwUEfgINRu*^v93B2S@DKlW4z*6A~IY z5ZKm0y#$O={CXR6EIFvC(}cZMM8E#Y&%Ptn@Y$kR&CP+-m{a9?R5&9GNY$d=e!rZs z-zHXjZG^?F%*_RCqYheMXtqhT1Dy5lH+Ka9WyVx!@*rIE=xiLm`@THUo$1kr{lx9H zW}66+2rsFbS;71R5&-%J#7jz2JcWNZ6U}qBsM@Ld7?bh@xHXeQKmjQw=Cq zbp$&of4+^?h+W6a6Am|Q-eT^IV-9Ow-YTE>MfC=cBK{F-{q=7N3{1dkNUtkOtZION z(4EIK{0)^kgF%S956j9LKc3I1G~fJ$1Z|7L zhZ`LFs8Q+@OqL9^5Uov>5=KpgKSL?{iy}_Af~B=o6RzE4Gq_z5x=%5G{jh6@u(Uhd z+i^k=@ErEkD|On@)7h;B#mpcT`vU0brS{uYqFSsB;L#^a1%qBPCFdNoPH<<;N*m7q z1l{WBGMu?h;$BA@8P3TJS)pW~7S2#5^j?1yxcp*$gHM-PRk(TZVqSn7Ol&|`Pp#2Y z!+|&99py1FMwiLUbwVDrII}NAeW!pnmPGi>qB$-qU$60gcF#CJ8$4@e&TMgyYkPyN z-Jkfi;ckgzDnsqsQ)T;QjuDLq7^=gn#6+2Pb+g*wETI_R#1y>ahZmbaM%Es8?C6G> zqb!J*DA==~jpl(YaXWd%bDL$YY_r3Xj6UyBqv08jWMug0EU%>H3Te@s#zrl^ch%8jBl1XT(lWRuENih*)H1*(ctG4@B==21)uc`C6*4>la<#IDZMyxq3AdaH)kKlcUiFryF z1yH?mDgfmQbE)~}b&2KJLksBBUJ+^H8WhA3i6PJvpi-7E{f|=0pQeN?$a0Dl*b)+%MT``-~XvtE&m*P2X;J$bD4H8*3aC)Zd5sYZAl zZSQah*Bn2syRNy_mPoHAK@??lLJHPcci{s+y)noG_ey!-&~~R(QqjBc@BrEEHS9p1 zg0DDr<-P9;?Vv)b?GXl1Fn!jw)u<{I3 zp%;aa}FeBluh|M?Z#BtTTXy}dcSUTRRhbUf5Yd)nsCC5JeuXl3&%Tftnn8fI3} zIXYXVG0p6!Z4CSmWhlW^-SW5F$&C0XO8^){FC@{<1NOOmi18byRYAw4b@>z=KzCa8 zv7wVi?#ftfnM5{za9`;3iqRzGUeFdlt$#-lCiLRaestOS75X4dOhFG_hNg$H#!Xq; z&&`i52@=P_LlL)YU2?wGpY(9p7>k=uAQw=hoo2;ynLanGVmqT z)bMH+D2C|R*jPfIuH6hA!*KkY3w@;nB-XnJ?PJ6FBt$gJ98L+8+Sy)oL3!V1i_&?m z0lA(Gh?m|!&Qx^$C9wPUS+1$Pm7OtF0|f|#j~T`z!`;JTokNVuAyim1gM&6{e2o3# zMhB4jGBTuk1bi-T?eJs91yzilqce+^(=xUP#7M*CFIlTqZv<|zo7U%6e4}CJ=N}*} z+9SwF+&X;3nC0Kn3JZP*<8AhiMnR^Ylm;K4!^uMa z+EPEqyV$5+HjRluPIrgE4hK7e^OVR-A^F=F_y)IWsnK#O@B zejfoe67mg1`<6mSHH(W~tWd^`(5f9lvJE<<+o|`{o|0=zaGStzl79qik*t-)- zjzuu2`3dCb@1Oj+?ibqD4bhPU3>=gqWN|B=^K3NKJ^{gmk0q#SF=3PYZ(dHCb@p6xDN zrm_@!M}LULP$?_QQTUv?9b7{Je_zEfah7Sq@wt{{7nN=Isc>66(LfT^BCo0wnXc;# zuDacY`ClS{m~X{T&if7jCb8OQ5V-C?Mh+Lhs@>ZEkFo^CX{QejVpGK+%Ds}GLs%*h z^nrRPgPpVkC{F+j|0!p)D8?>zB$RXV zdbO^3AqgJ-NgYah8IvKrJl6Sv2eXixN+D(_jI9 zW4`qXX`(ERpM^lF|3|{Iz35p^lZM{8Funwx;B-eF?vt3&32tD98@2z2w{S))b=LO-#<_iJU*(T7940BRmO~qJP;!xD3i<2&=3RX@W zNMOlvg7-Nf713wA#U!dxsr!A|1m9lx{uSf25nf#iXncJ7opYwIbbW-m6#32d1 zVgSnOMxj&UWeO2d9B!PWS)?ejz^b-GYTJ(eV@i)b!9P_^8uHGE=O>;=- zHAU6NE#0d{IDN@*slTU(wnMZ$kF1ncvQfgryjanG7*-U5^S|7rMx1?xagK8v`I8t2i2UekaQw_YMnKDNf4)|V>4Ur9I=$CvE^Ju}1G>iI6*Xz@h z`=2o-YLO3kXQGrGldI+KKR5sDCEKCbT;y5RVAtu!uSZMG_ZHn~Q<@*KA>l++_g3Y1 z`d&kOP<_>3fjT~hz8TIF4^#Lkrbv@iwj_$7ljiUstzoR%Negy1id24~Rg$}S4PgZ3e&jnWL|(+__DC~T-82{3kPa^iT3y#+o(r`7kk81TxJMaRfjT`d8|stKjuLxJxT3|Gjy9^#Di z>^;oxhej;#pmRF}QSaYJS#deTwQ-+MY&nZAWB{F0DpSo=K z{a5CekS|3-*-z?63JOvT=7*+v552mC{meD5ic?0sa>w*{d2FZIo0cDpeuE-D)8j9u||;1#QTAEA?&n?IL1Z};}M((i@@4_2ttmf!_dj7H9{+1 zyXpcQ$MCSRA!DrimFE^*Vnh;z;@92=5(fC4z9B6#jwyx9!2Xs+)XUE9_dUed*0qHg zBGj;QU_0^v50i=iv#mB?4Rok5<#eZ-@I@Ucg1#H&GKAyW`sw|rpsJ?Q3&@8rL@A+7 zb&}O=Xr63BzP<6r535fEHj_?3Ew&r1^EkHU=ULZz=epThBVK9p#E`x41%xU8{*z{A zv=%_Eu+D^dDoseauKo;FGaxNTg^2kRhgvEH=@z#G9P3$+18CRZCzU%FT%OaXKjeG| z+`Yj0(}5!eD!aidj0U`imVOH|=`In-5+=#!c(~xDnfZX>6~`D&XL;7xe_~|N2GP>0 zz)_#iw(6#hxT^k&6qRcZT? zI%+Z4YV!W9x?MKzPdqyA5`XMCOaGAyI}S+c?X?LU?d$%>24Vh35ulD`;6%FbFW^jR z3O%p59wzdUrmp-;w$=j(W+e$^;e^44E?P8#0nhC^RQ&hj;@gj0BXv$su7lPK zN`vi*vg$!nl$bBt;qZn;QBktcGMoCD58NSFz#jL89^2^X1Cik2`dA$=WWILwyGhQc z@m9fpVc|u6m=&DHt)NzxDMd5>*fb;Kljwja7$?FodEql`MvL{>!+6_?s6Mm%;*k0b z+_55!c_Nq~sSVArRxI;YU37>ZjVUmo#in04hCLt0${KOoP8`C&+faj6m8Md}_M74f zaM2fkF022(_33tXy#7lLEw{{vOY^u=SZ1Ea7)J8%=A}OZSj7!6aZxr;34Tvua}0_t z`Le;lW|IVs)!&W?H+|2!y2r|3-JjzB^VR7Ipknc@3bxLD+bklEX_`vn^$|d zdY8x}=bV~WTs8J@J~(H%y_H&L4wnbYi*-*#Dk`(QBGX@z<7>DK)TuNN@4~B9KKNK9 zm1`BQNT8>Lv?Au~0LWI;X#7ALUDGtnyfL9_3kxUJhq}!>QL($fpW0#Zre>Qsq+ zKU(fC+1aL4^@$<%&6fQrZb#b-uv0a)bEd`|Bxgs$25;ldkXmKWk4>$`t`46y2t0S< z5FE=1K4zzH2MJp$qPGH(@k0w?qN+Zd88zUHeJwSi*rXvN&T{T)=HSo6Xt12zmVU;hZ z#9BAed_LSq(^`J)-LI3fJ#3=Gpk-jX=4p0coY%*$nmZi67@)%4is)f_6SU zoWlNKi%kHWQf07dEZ|!)Sle9#PnD)rL~I#}?b>{}N#}B<(HDPdyBqJc4`x9|%dc(e z^=D7*@6^>$ILamjq(I*9DB65g3jflC)t?xP!z00J&GRqJ{dux7qH8~xz3JmJ07Bmc zybdpHxp+PHUNB4S<918%=u#4Gz#5e|tX2Sga_P_C7U zqSj60A!bD(R(WLWJ@IUpwD(NMMPAdOfGRyj5$#T4}+UQ8Yj1qo-g7FGyNMBuc}mQ7d{O$b4}x%9D6T zsufx|z(qEO+8OY>OV~e#;M3j0xYKgt`|8r|-7f^m$gXeA0Hiu){c#Sw3Vma~0reMjA=STLvr}L!U(J0T`&G)5!A^bO_ zAJTyBj*P7bitgu`T7F#}({XI#|F}&dB=Xmt(d1rrr<)oH&bZ;c1FD)$HPeEtbe0;$ z#`8gqkG#_@#>90t%4YwL*Hm`S{4Nv=ZAX86e*OvY#no0ESokAXcpRmg)%bjR;PUxQ zgc&WWYyB;!uO6rif(0{I2_CESx)tS~jyMJR3k>48v|>7_%shzM8(oFY%FPp%lAe}c zx;v+VR1m?PgCa(@ixrph;94LaQxR6d6Dwr{=_n9H!wD=^SIARhtakt%!JcX-=Mrz= zeTR97Ut@WyfE=dvMj{!1Tr=&YZHU#QJT0W#X(a%EG(|Ujd!I><+rxxEDH3mY*{=&R zya3J|C;iyXNoJL}5^lhN1hzuTCUn4jbVLO#pCeU=skTqbGDXi;P2(uqZma7{NR4C- zE7TBVMm=ZB3r@0px>g3V;nUBu;p9v`o(kL(r7gABos6f4eoP<`XUa9~K!|F)JeGWsDR*%K5K>oNpx zE=yV>Qefy5FetCb*Cq=<-xdQKQ6lEg7DYv03iX*n^vtwhYgW8@g=qLq(=zMe3u7Lp z9Kuh&-(35tC^z=#r1=ZZ#N-jA=ge7mE-^9j$AD_T+#YgcATjXa+X~@TLU8IKZ&yYV z2foDrJHN<>1YZ}DR+|-XJ$oyrUQ0H=wE>JQOFl!A({G{RVJ)CcYZ2;i5dLrr5Vxr4 z5TlVnd^2mTB~RP-WQ)%3oR#&x`>_)hB;|)5#0U!d`L2FLMmj-WCL(jx6mfH?C>{-S z7*?nLc{~B5{ST$2&wF=wYv)M2o?c25ztuCdeeJ#WvDDk`%}mSw?F4*5Ephj;xniJF zjlORp2^;mOID>twSA$x>w@lARn87~3G8d%Mwd&U^#(r1h`i&l+2QvOk&--nqtvBp{ z6g0ba>*m~&5~%+Tq!TAkW%FHo=!Z2&hPi3CvoF4xYo!M$vuzSU1z%N?#I`youE^5t zHIF8D>F{Q-OUC3rfATntM`QFmnww*CzV(xE>K!od$MD>R*7M%H9%sAqRFjx5ZphQX zjjR6Lp1hjrKY*OSBT}JmZK<1=rw zEXUdML+6YNa~5z+UC$%ua_jZbwT%xvdN~s1EMi_lI{;s8hM9kX@@b|LwD$e3r>40K(?0& z-WS6qqUfBuezEf^3K7HJQMdEV9nw`f1HRf=Ol1?3tELa*ZIkJ6ti5)tC)AZ-K81_p zG$&cBs;m~37JPcb>5G1O?6N7cG{pe+-ApB@dle{EG1lDH5xZfyr(DRifhoZ+U0j_t9v0Uebm%vNq?4 z=eDyCde6oZUJzFj8x!AEcX>i%3w<{Fr0bTC^(%1Uk0H2F*gGxkTardEg(f|*nt2C# z{qLSG7G_%S7BBPVe#XfU7U^Tw4ahRNC5XSNn!6A0XIb8YvT9|guJ+I3KeonpU&Myg-PC^FR7Mph_PNuym74YA`J-4@4;9|2K z<9XYc@2c}z_hPkv__j-u?4CgeNX6D;P`g5RD>NyX2=Rag-iRO4xWyjvjWwPHG$lTd zmN`1!L#QV}2DD+(@=u-u7w71-P}(8t>x74ubJ;k}3H~GjvwO2dHdL0NpWwrWYqhWh zuXHb;km|@%m%oDX3jHssqdmc2Rq%$oD*HWNU#7c$o!|LB>DU}%2h8~*DeFwE)BF)8 zC?LPBj1o>?iTt@><&IX0vrLaL5hi6$tf3Pn#tN6|VMx+U(h#$W4|0WQ32#|<{WYST zgWN`=nC*TnEdb9a4uGa77!Lj`ded)rcI+bhfr-K8oHmOjAT?xN-FI{$y$*t#KX=U_ z0bmP|^S44KQfq!>F{^ePv}?-Ez7v?*;gmK7LSQL{j|9NuEZixKQF4Qcb=LJ6TvlM8 zykj0n)E7bu_AqGkRRS=FC%nsn(Np~#+pQR4(UpS(FC{?5WU-RyM46PorpdQg4LLYD zkF;HzaZCqcqj@4@Vse^H0c%BiQE__^2d~9MbME}>QBWFCyu2YL*aRhsuzvm(5a+R?}qbBY6sDCBGnN?P(DWmWWpc-I~1dhaiC zcs*rp4ESqAvaL{~c#eY1a4}J^!kke7c@0C|GPo;aFt_-zTq6cbmKNAYiG4!uA8!q~ z{)SdpGHksp@vv>5Go6KFJ2iAo8@~Y=a`lLjzyk9pL@5>lW4LMw!2?8HU%i=bJ6h8Q zC6-X^I*mZpT_&VS^yWfbsgR8Xv-4=J0$grejTA;k1iM)j_2(5c?@*IDl9_P1M zs#IKKGLHV=fk#XrXC7prgo|XM(^EdpKyEVjfu|a0?h{uqK$uw7$JSuDV(#Z(8g~De zU6i{-G(S%bK01M)HfYM*bUm}qV1j+$)=S+oxTAQQcULlA;8Tg;YJ0h2#;KnySaW0W zZj-G3^wm(DoidWw?uuDx(k=W!{RJ}rKAk1gn_k&%4GyfttRHQr2^gI&-a&KXnfWk% zHL$?@k{vrd^45AK0gXvX1m6Wf=rtpGFoUclhtl5dL!yM zOuWAxTQ@a&-@11@C^cGXv%~?cH$x8|KBhF?NH$FA{HWzHX3Y_&&V!@c_uc91(2JUr zyWPTfpk?bLVA35937zEi;KlHBR&Cx`canP$`bUSk4uPH@^9?MW*XF(2)6~t_pSto@ z4|_i=&t(QOhR9fTZgp#1)r z5^DTFUQiB?0}GzVgKk3lBz~PwA{G`J=O)slV>OtX*tN1hR&AH~fGafpd8`M-3^5H0 zlrid}K#jK$kkGs55%FrE)gj^6JG)M>1-Cd|qqqW$CEM_hrGK)d-w-)ThAY;7d>t|- zF{?ihXwsI6PP&vjgwPy;!zdv+20I9f9Gbs@o#g!7u?}A0Lz^@_v!ordPfpLl$W78s z`~!8dp~C@oLy_!&0vjagoC0p?!ISF6Hoh5~a*` zgz&r3B23vhr&*BDY}_LoGAOg1qVTa2X4Gro(1xr-aM&6;NbrBi#f>emWkD}b)62Ud z-EPSA-lv)yUiXtP5#2AaG`bxekpFkllejCU6-ZNEjmltmp?#q_sz6nHKRwRpHCdX} z$o~dtS~{)Ds#P5`;foo94>rzjrOq>hp4c&wRHulvE68y1+F?M z^*5W!5M`Q@*V78ssF>E+~9Wz7*r8@ueh+QuFBJ(t@%=?eqHD2j3DeDYF!# zb*>?0O)fr~=|xtJX5Dm3BuOcl zS}O~jsYcg`5cbmqRvN#Gq$HSJ@d1fX13B_}Vk&d79V)1N__h-L+$^ZDU#4I+_vAy$ zjHMgCr>Y{DbQuYj&TYAXge^CW$w!~iGf>~PcqW-GL8HNOA&xs#D8Lo>?R1XYeZv#^ z^nNYAwXgzDShxH258OK0ooPDpMo$^FlOrlel zwk45VWZ3U;sd#rrWy3$w2TSu<8+uK^g~YrB#mu`XY2L0Ru`DIiB|JWRO(*eb=;o#l zq-=Jx;W)kfqe$3wR1_>PwgAj*%%3|GUh$P6!6wWp@i?IX_xiqpD6L65uLBLN1JIin|F zq)Vl#`%z6qnM~yu!h0DO|LEiSW<*=2Awb;@Og>?E*zs@6nvY}5BH(bKWB*Zl#78`X z=f&~ZoZwdB6WA9RtFo9RHMgee&HRZJ$gEH8&6-6UY;QGk)ZJqxEX(|~oLkDzGhw8H zuus5{6Hq+bISfX9zK)6QiA$ij#Pi>m&GjROv7muys5Y*5b>FJYR8Nh%BsSp z^?bJN+!ntnrQ0}_<5^G>JHIb~7<+WemQG2aY20cBXzrI$f#KyI6xLYGdr#@z;a9XY0 zu>K@n#lUVjmnGI=$x?I~A*3PEg`%ae_}fZDku4&&);>WEBjf-~Onpl%BAWmr zWYpi?x2!M*hr(0d^xwR0_HLs|lGIy3NKYj}x6DTB4`H~OPM89*tGqB)3?q5t1eIOI zg((75OKxZQ`<6l$kLNmr?B!~C!>`aW-K!TR;n@0{SP-bpr>~Xs+WRZ2O=bJ6C;7b^ z*Kz!~*>JXkY{O%c=;MC*YPgv1lal9QM(AaL{I|blRV&$X)PGx`6U1Pbiy$@O`p1)E{7B90&CtVs_m|;(`9pS1b{-NYeB(@Z`mxoH}6;}D+lc#yM+fWzze#DyQ zK&%*ovPqgeJd$h(+_k%ZmPuSwsmMCpAtxhGmy;eC^1#V2MSGM;q5 zKEc=Tv&*h1!ZqP1Je%^Y%0-noMb|m;^oDRFaK-*?)KdbWgfR7+Mv*)w@8FcN;eo;> zi+`TDa9dnM0-IfDKKy){Wq)P#H_z<_G|$t;FP{7R%@KMkq5eqHlrDW%s`Fw_#x#x? zKvr)O?=`tAE#omZ_;n*~$d&C`&DLRDh!;KJS5 zPJU>^qKe%!}Al1q^>=JVi_;~i+JhjS4d|a&N7mEh;E_c1LdL0ns z-^vm$@I%~38Q!c%G8@E4u`w3dh7s3B=g2X3;(Cwc9?IOU`EK& zI?V}~E$H?VWH8Ryjp);cV=>{b5ZUA}^bb|&1)F9@0%Rr{d7xUk=^Z>p2 zqbQF#Ak4iqojl&F`V5`bhN72CK7`@X2r##lFNY@_>w($d%kyq;$6B-UO2OZ6@6Eeq zhxNEOp-bqIiCIcF4Lym4;jDHMO+?{M$PObq!aLfBUEBt7qtP1|p}apfZmNIVL8YvApv6-`#KJqd-zRN`!+SJx{AO!2ZiaJOz~jUC+v?S? zB-R={CW8nH-zT;SiyOSQbZz7z+o#o(m*iKmvn86lMA6>pg>MgCYRast`rQrX`Najm zKJMUf@FrknC@%=tJ4+;rwP(t9p~dhQT#5;S;l}Dv3#GROufn4YCr3zFF&%lW*Pu&ka{TXd(;^`iGX^F@m#V$SkE%qrHTsD6bgH!ozG}$4} zq{+iSc8*c390`#U;ZdIeO*`fA1L=Xwn3!j&@2`x@jzR-F97gr74pH#-8Dk++NIeR2 zMUe8M56h1F-BUh1JbbJH(VW)$e0x9VcXa`Rf`WA6XsUQcX9)X7i@UrTFtypPagG5O z^Jp3C$!MZ-E&G~S3C*#w_8DAG0Mb+zeGT*Sa!Cdbp737(U)B05=t2fQW36;@b&gzr z<+vR3^O^>#CvewtpHgfhNHX2S6;K&Zh=hEm=fHSqviRRbyv>#XGvUx-PJ@~79d%*6 z&5<|E=JV@smuEtD0|YDEw3K|vnR0Z-SCXYOq3muCgt{-K=ohu?J+;$MZVBQIld^@ zj(t40Y0s^|p`jt%fB$oxKgS)ol-8R~=T%Sy4W-RVsbmsYulv!pDc*)Uhkq403tMkC zS0++*p31;Wan(;rk*4|*rHe#=*~Tx#keHKp!WJekdOvR-yXn~f_Wy6^?c$9?r==Yt z;z*^Sn85@DROT*Xp+X?aqR$NXX@#4_;x`yMHy&bxy2`56gFqyF3mA-WjncYHxjZmU z-Izm{((z$Vv28gWwdzPW5q(e!&3k)O99e2AZFnqw1Dssp3DBTB`UOyy*E^?cs2D#{ z=;k@BWTonWtW&EQ1<5GbEHsw10iE+O-`|!n(M*%fd5*nISsyY4MumRCP1@4?j&RTI z%tEAD915!%%b`$BThU8gYr`xP0)PI*=?CG<)9s%=a_T#8W`Fz%`=ENmNlt`k;GwLJ zqpbe{%XqTxfT_?PGTwV&1MyXZttuV;0U&U{2t*OtQEzB6Rh8wRbDmpfZHToIzzZS) z_suWA^oLf9^WAbkJU<|KUV~aL^{YfK0(nq{a?S*}wD@BYaa`&Jes0eIYyJfALxhWWnOt9anb>LcWz z+uqP%+Tqu~RL0|qpvBvv5Fr4Sd_04g5T3!a-c68=hlipd(LA#y?v818XI2;p_`lD2 zUD;zdq%_r2(1BJk$#}sXyyCbS8{$sEfTzv5C$e^Sdxhui)0W5gT`QnLPL(8Vi&OhF zwZuDw!;0+)wBj)U3W%_qKiNZ2bLE{o$|1kcG&oh)w;T73`^VxM=SyI1*H^2KeU)Xy z#W{-bVC9sDSgpF-m5x? z-pQ-XVim!6Jo?CS$psDF(TUM{h1;=F4uwU3OiHh6jkG`>DSF7nF_8$?4f zm79b+SBm#-r+0TLDBstU)#?O2U#D)S^ORN_9_a4~)&ry7I0~yADDy{pVP{3F6cklA zpw%J#6jfTfs4RDfX=BIrITdv^8#zj3qJE6`4+8%x1AmW*IwMA@6-|RU(@S2Z0UCJYsOS5;xW(`llc zAI<8j{fH9%IR1(mAmRy11TCXbmA#kGImDK0GEz8iBV;P2NYjgC3ypJ<>yw z)#XZk^?g)7VrKu*|9;hnw@fQy;PduvbWIJ!Qyulmr{UVVxz6i~F~tFVWk;_`@sOyP zBe`APe7$(+uA>*_VF8;U7}3r>3=DaEMR(qn?t8Z=!Ss4HC#d)BjkEIZ-5r}M!Ne?a zlrEj;E*MFeM}h?@3=$hoQAjx`^b(I<5xTfyWBbp;Ap;7so=N%m(C{=sB8AbOlv~c9Ua}2V-Htk%3P!Qj}I@n;O?j#SFK9zR^;Xl2Uwf-OE#;m2I#fJnF@y9OUck} z6&rN$mI$fzb)u=z4S*k=DJ4puju)1lFfO?pHigybq_#k;#z#Lo2&W1{O>Uz74}O^L6?tE@SK-5*htr^GQ~FlR0WK*%oMP>qbFt zez1lyiuD)lJO)o#Ng@M?y%3iiKg4|jroA#?)3Rx$!LJrLn7(&kUqo<>Isp!kbL=4P z1iRm}MuQlQ^w2?QWqFCiL1?D(k;nrl=dpaj$_uk!C9NNk1qzB~LX!slqxI&+XHUV| zCy&R*tw-_5(>t(y8s|bByr9S3V;s-Z zwuh+8l5U`esidTc3#S}p@5G8dpLoz0fZ}OIv$rO;uUiySp)DXa!0ui;!h>0TajNGjB^I=%dgFMhC?8mXc9T zal1wJhu!uubD0cfsVWO5Eyvf#9p|`RRqj!a^!5ic9tNxw=iz;g_~UhtV)+AWuyE!$ z{M!dF!lbdo5If>azKJJ#-Q-le&avRSx|=9s5yMT*Pp0xpF;KYlDgtR}38LVlQZ-fO zxcr<&ICJF7&gfU~rVBx}rIQ{g~QBzYhxYKJe42Hq*R|(6PFAshf z%^GW{TuZYi!8fNcOG=nh91F4?YYajcHE@Z@l2N+sw)r zP6%Nhr^+hho28RV??u^)KJ8}fcC4`$% z1AdJQxIANlxOQTaY@9Y9 zNm@XdIBhzab}25($1&6EFl%Zp8k@WD)bic9=g}=#zx-}&cr#ZG!Ez+j}1Y!?JjesKXX_eYyQr?VJMdC|~ z;E!SD$(5I$Nvw@Gz#+NZ zsd1*gtrHtx+KK95;^!)=g2H?h6&D0IcG!(pQc|cIGzU%1?P24q^cMBiZQR)5fpd3C z7avk;ZM7(2k2%z!l$JA8m&G)0If^Hx%up4HAV^y+8s(i}wT-Q#(&0uLHSodJ?}<}) zneCe^e%`!#H?I5qAJKB486UsqEL?N(QWO^!B=rf6M5(Y*C+ylEmPv1VNHRVWX!KP) zClL1WLNgd+uyA=f739mtMjzfALE^@x&8~Ps6jrr6r}9HfTHp6=2(T84f|vVY;g<#%JbdfOb4q$dyiLBz^yj)iF%XD&n1X*qp?Omj9h$r<+w3ezx45J6byp+I^kr;{i5p?%Yunr}=pbV@Dy~6z^1}3_@i~8P5jY~-K2eSrU zJfTfG>#i7XVB3fdNtPkYF@_O?T}5R@uxne88AVKYx-%-Gg{Z>BRu{>wBx*$@IKuvn z4R{oHAn|sa#r6hCwvuS0VMJ?;AgFJS41Aomwl)Rh?duV$s;Z3l$Ojg<;VyX(o6a>X z*&=2C!h+)!dkJs{^(11Y8I@5FNB1@1=z%8G6qUnK9#UUVofmwi=<4Y)i9~p`P&a&g zdv_4m*DKN9(T%ZFhbwDg4m;c#Ai(c%qQ4+{ld_RO+l&Wm2UJ`*VM4fiB88l`l|gqb zC{}stl=rJeZg_#GJbjlQdSSuuRBitJ{j2cXuiuB!_0{;!f4vLG&!40OJJ-M{A~UZ{ z^t24yN2ENGigYNXDWA$Dg^E2r=$h`RihW#>SV3t{`4QwP{nw<$<|CavaZEkF|M_>| z(KFZKTfe#wpZWAB@!Q}2Hn<8@-&&}T0qV*0uYUbAoOt2_{PZXPirU&C!7WD(4b51! zY6FfQZNfXQJOeXlPEv-i5{q%56vf*WjN9>^cfSWW-EU2O@@J!Le`I%zy6j;&U6L1A^P z;D4RTujJF5AYm@*Y&`LVhXV4=zM?pmUONa+oXkjlZvt@w+q0v|*8Q#xWLK z5(hB*Hg;Hmua8xxpHG_b&TNw;ii=xC*z^eoKFx2&_o~(FfkSP|fRzu^7y_97g8Hd~ z6K}!_POk_`CqNC4f-TP>qjmAMYn*QXii~nunpybi;OZ|eyiWgFeeS@>s++}w(j&9J z@&a&oyupNFu%mGGk59h52*H$tpKgO?E&i1->9BS^QFxkvOUv>xe^wpl&8)-QE}DV6 zAKHW`m+!{2_x%#9p1B*7jyVD2W-JN(WaZ}NC#R=4S?G)CF`T|r+NdFh7>x{LR}?P| zJw#wR$Lt6W3$IApC!F;JGa5U;Oyf*79;Rv6FhUT#h}NyiX(#Hw2<|#H+QAi<7Ysj| z@WTjW=N0M01UFLl77+pIPC0$rOeos56ZZpnqe7nRq}!C#u<0eER@3~PZwoGjZ6wtM zPN1hpqO(gv+nGAMW$;x}7wnV51QO{~?JAu)I^|6wJ%h7QQhF60kqC1W?Cp7fvAgy^Q zuyF$I4++B!ya*>D+TYs3+2ipaAHEnrz4Zy)_2|mrNZ}=yT!N)bm*NLM_#VFa#ec$y z%N8oZPo4V?8#WZvrcE##KW*+LuC%lmS6p#E9(d?UJpJ_3g9fa@Fc=2I8yd7RKyML0 z^Z04O4Zk{Y(`Y-Mdv^0?8=a(+KaJ(ealy{V!4?d?CSLd1SO4Hw4I15QEYQETwY3-w zZ*0&`WVLUr`|rO$_d-r$`q0)6^mOaEq|FU@j$T8|1AW-K@i20GWn%HOwTM1~CRJl~bacZQ z6xCyUdneYd-<@!}R@gbp;8j^$W-t*&ZDTOignh7&wqJyuT1Y`!Oq#H$kth~9sv1mn zA`N=NJR(Vv2Cc-90%@u!>+6kaG>e{OmO)C=8YL-iuY^Gx6>s{^16cmRYFu#YJbdXN zFGP7+u>skbn>adFCq`bxqW+JM62>*OzuD8a5eaqlH{M<;$(Wr3^B7CowxM1o?IcoI z31;=vtKc;@w_(e!gV?xzKUQztjV=2Qq2XvN4j*Yoi{eFXwC(Ka!0-QXBmVG*Kj1?j zyb>p$xG2~S2yUF=o+*>4P*6~S3FF5E&hE6+JMBQPp`jtzDbd!}7C5Ta^y_^3R>b=H z`rsIgb^<@>P!ZZj=U(+!Qs64XcbUwP$~U>wvp37&oO zSe(9WEGCVwR`W%A@d?K@_CW0843QBhk!@_^B*fw-+Xy8EQ^tO`^D^8heRa0*OTf?J z++@X*Ce7LDzyqNvnRaq`?J$74(ImU9^uVE2v%8PNcG$(zGRY#6(Al-HKIfAIH|!&tlk^>6kcY8HSIYj(lavvTqJdZVZ$b z9+*C$l7Hj=raP6a9a=^?DxQ*S^R&H%p|XV43^FlFnZ_#w@j0Zm3@j1OWIZ3#CgOG{ zeJ!H7RbsG;@>}DXV0MKi&jCsiZM-3Ej99`6pC$&iFs`VmELekTBbN4I^?C>6+A^~% zq@jXj6q9znOv>0HPVH7ks+KnO*DBS*Sx?%S0|C;)&&hJcPrd4^<$2I+|>ar$OL?U&}ImtVr=mtT%;+qMSR+3I5v#YKh4%gqgMFzoCK3|t-U-6$(7 z$Nc&8amE>E;P~T@$FO0;25&SR41-}XWCm>%e_{FZ;OqTK3nwM<<|ylq1vD;=H^(Qt zoExa#mCksIe%?8_Sw|L4THJA3GUe@dh=aZoyf?aJ#<*2%F#JV98&db|*@H(Oc_c7e zJ@?$RfrIv{iUQ1;HWViv7y7oUt|~%q4qYCYlX-qN6Xyl82WQE^G3OpG7h1pE1WVfa z!O&yB+uU#0DQiMOXa6=K9DLzP~X7sX`CdVV?6Mbj~07QJK0^> zk1;~?b%!!8l~7~1%_9;#-ypjxF{qNlLbP?X2X0luRUy+B&Q3n7zn%J8eC-%Pn6{w= zN+wOhh3)M0;dsi1YxObZ38Oo0Iysspvg?u{K(>r#@w}B^a(!Usb$EdpeT^MsmfTAV zW|EcU0jI+#N;@6qZ$CS%xjA6X|HI|7@wHQEIV|)uUYp2`aME$ZMS2wT=#YVOhr% zLFyh0QS;F@eDC8o;n2>b`1WW10cRXPGd!{>(_0@bIU;owNI5NhPbY$A%|m&jEfgzg zBZkpRjk&ek@)*2bWxOB958;9#mCTpu9}qVwj)k^j^jL9UYx$Qh2uS z*n`I&dk)|D)|c^_&otun)6c+%Km1`#o;-QbkTn;s#UA7W9Lqc9WeysN7W*0 zDoW=T$ato+3c-|vQ%1659uJ$36C|a-yzvMGaOzkxd0~yVq3_MUK?Bz77WB@l#~*(j zx7>0|aHLfmvAR0jF>TTiTyg$f%$Zdm__@-%t<2%qH`$DXH4~;^*X^AHEIczX%Nl^2 z6|y%IGQf=Egn)m7VB@uE<+%*7^3y-wR+7c?5 zUobHGqfvn0-3GwkwPCa!ESmIbl|J=Bz7Iuohdjp~{jiJ?2s%BNEm7;B1MSV|QXl_| zf?bKeHh{(ZB;AMKFfcLv?({27^AS&raQteQ7erfTMj|&zM|`sS}4_*B-UjdUhx7 zeq;-tfABY0^TPcYHE}K`%sLK3>c=P$k^2?nc&%HX)PI!e1Svg!n8HA^&b8<>c7MTG z564IQr03YLu~|lt+XpFZ#J=f7iY{7nCI%$B>nXNC5t?jyjlD(303|WF#c|2Ab>uOD zL)O)?OeNby5?ZCwCFQ|J3B6nYjR?`|lyoXdv{^|{wak-@=>k7+OsWi5M~>>_d(s6U zJV14O%M7F>9NKvRT}_=Rt}cO32%DPP!`)i(`9w#)W99+6)R&F&>I(Gq2~|!8f4c2+ z6#thN3$^Iaf%co2mmgjynPM`DjJuy2SYjjz3DO-VO^Qsog52NZgd}Q$It)somet=Vq!>=BCWGD>I_53QiB!I zDI$4GN=PZJ395jhU*p`d@PjHZ+JEW4Y5SxGwD>sdp@vpGxnezTy61Vktc+Hz9bKp& zJp>oLYZ;cFKM%Dds{%tE8!oA1G;mtKN}3m4-J}# zeKz>Aw(Rs->Z4C;h+&6aWKYAX{^v(_|8jsX34{e(c%CWj_=%1)9Pa+cZy!E;>J#{b z@C~Sgq2Hj}PaCbY0aYIn)P}1qTehH3&C^BCj8mB`Q2e9843*NY+> zFlE%`NRWGg#BkTRO3unxA`Zc2-QC_`scI>DMyyMbYc+=?< z14Gs$Pwl|QS02EImmk5XNpmsjn5C#2ISKiNC7`>TVu*JAL-vc(rN;q0IbxWc`=L9V zM7%DPNqf1~i`#*`BaV_$RJ=(df+IxaZz^tvuuVc^Rb+h9Sra1`DI4XN#PArGqkSq8 z6&}@$(kZPyO1OdnIn;3P#hfR?};zfdksM!JJhF%h7KL-u4SVTtx9F` zuhm7AbkcMt18axu2M_lJ2CTkb0-cPt!lO8yAk9ZXbW6kDL&#BIBJy)AMh`k9q;B1Y z-9dCPNfd$y9Kr1B?ZMDmz0l7|b4YFc0-9QsL93-#O@KlN@HNZ3) z>fa47@5Ix0u0%m!F_z4qkJiREeDRAP!syY%gA8Y$u@wLF{p)e-AMeG?8IuB|6KNc@ zw6@`<-`|B>Z@nMqop%Z@dGnb{*lS>HE2Tj&zi9`eu&@C0=FP-0v!~&O7gyoN8}G!s z-g%8OW?hCWue?&xH5!8<44VJrt+CC`&B5(f`Zxa4pm$bi9?*tA?ORN5pVdCcN=lT` zu(Wj0AUGKQzYd!3wf`$Up*(Bpbhx8M8fc6;m9lp%38uU|58<)c@un9~TjjYl@#Aa? zDb3@ioA_;t?PG;KYJ$-dIW_f7%m#xQw7%6o9Jg-W8W^qgExT*itWop4Zq(J3;KDN| z;>6=dVe+^kO2_6KGlR7Ite)f8%?X0!i=Vlf5eJBJNoMU#d@PsKcn&4Uxlz1?l}05X zn|odQ?O6;L1i?#TNS;0;ojeONzc=8-dBMbc;IfNsc*@x!i%~4vjjT+c#FJQ>(J>I1 zFq>Pug5y4Uuf>2R2N)Lxt;f51!ku0&9m0Y^>*MJ=hZjBRF>i7_Drx@)%n7U5kH=Z)~CaiL@Qn2yjG7UnB2D@`26Cx$VR&S(U|FYNx2 zWJ?A$*oulBB&@{&5m^dt2V#EUjv`0Jb1fV~I$)MAb@pb6B+7C{3sa%Yr__+0OJ*|}ja zO4TA;YuCpjd(|RepuAL~q*w&E zB0`u)9>VgbD?~d8=2;?Jjri06-$zV+4dase>!@zqQjByLSF(LEW!s1+OoQFFwR`Zh zf4v<=eFES6?Ax(q?gY@#mo;0NPlNOzda zrHvZXbX;qD7anqg{XVZS% z^V6qs=>_NE?QgvRWlB-$BYh>sMQNKWJ|8)v4qG)#et-0re|^iNb_~3K|9%`fa#*FctA%NgQoNxBKj5h73rcQouF@5SfdNbV7n?C- z1{N<~tc->8Fk!-kH^jN&U>FQCj_`DwPfQ>ST=q>*sze1R}dQG(l)+MeIzJy;y!qUFgxgZi}qusZx8(CFMk>B z`fE{(mm-{e+;A*gJQ}m7)uObxAR4ainMDG~iWlkPBIzJ&rbUiuq>F+CAe?!ouwgP> z!r~I1ba>K`HMKQqPcn0}Mve~YNoSET&l3EO4dKQcZ4~>TfhC+wJ5y;j@^iSs$0dac zeMTIC>EyR*vFRl=is)I|>6E9WMXL$Btu6d0MsKG6vx42tB;=}(_`S+_rHxoT@7iro z-lb&naQu|Tw91ZCBY?z+WgZ(0 zpQR))8ABG`B^Ddh3X6);ql-~_X|z$8w^yw@^yPH{95tuN&CN^cvvo?++``<9W#x;h z5oD}Pc6o`E7i3zw#E2HIefkhP)3=XNW(B?TN`Iiz^UF_s;uD!4``HwY$~`Vf(?epk zpY%QZdePA(T>xRTVjE0csyzGif(1mXe`}+t)_ZEqL&XeiTQ2lZE|dGcq+$N*lLD zW0;2?whLG};t%U9y2|p>i_zTHm6Y2I_esBb#&wY8=lAI7hZsCuDT@H`J_W>X>nXAsL$#(o0Ng- zdA#-V^THbfBLa^cZNS&Q@e{PQcHoyk`>HaE)c$2gCC|8{>3P$+Ct<<-nfSqvev7xf z3gXFtP9C!X|w#)zeNRB1!iU3cAud+)s$n>KAiduJ;uhL)kSt^(C#D=>ZGc$8EW zA-^y`*2YDaSi8um9~-=3XVbLT7g>Cb~V=7;N9`f{lEbO1FNn`4tK;iM-+Q(OUGep z>2Sg11^98;q!8YA=ry*TE4%eWPGcPgk%|Irr3KFmq}x zD$5J`T`A!t2Ihju*Nc)#r}6e&l7nUAk#L#t!{4x_-2e9XI+a=u;0f5!+ zcAAg3eY_i&;iKK)j$Cd=@@~j_7X2Jdn|=vir;u_otG+fLid2s|hA%FNjC2d07e;?+ zF&AD#Y?LX;K3)hVfo6Zux0hrsHz=_@iUfS z%+zC1UNsc9AuB`~AIr0GhwT?^ogu~;8I=K{%67<}q9A^*h!HCe;VvvQUdFqcWa^ry zv%MWH%}20z$0i&-xEsxlhtYKOkTO7b1s~9hOUh9@Y%E5Moq}OwCZn{xQq42+k+i2R z!mM#A9+Lz+3?v*K@q#3MM4K<%P=o=m7j^!h{`9A)s;a_gKl@qK)YN3=&m;9n=p%GG zle;)h8*}#VSH`PO>E~4nkid-R2KIQ(>h&mZ+tKFWh*e!#Irv}$urNrIPHntGVGasP ziZaE`0T(rh*7MD+60L2$!STZCDiQe25;-oUsK;K8+*C5h)o-Ss@sIRg$ld zlx_<#f<|efFynZ@Rkcc9BK$aGENvPLyekSb=M&jR~F&oYfr|B z7tBYcGGHVQ+2bvog!(LQ?CI`7^N}`8nLIu*UKv4UY;JDBm%s8ueCkv0$MmTa6P>0P zKHvYrZ_&}#iBJB^`vU(}4gw37@yik93sD|zAp7J$zgO{iB|i9p58}Ju{Vq;9BF$(ve_6ivKr-T(VkbB7u*_|latYqgb{)-C93~= zI(pD}unBuM9>A8BJMr)T@vr#a|9lT8E;}(es(I2$Ck^h(8VrB4K^qrtzx{S)fX&03 zmdyZll1j%1UggA#7B@eA_o=c0jn!5e0LI+Kq=&*Y$2c=Kn>H7(@Q%YBT|L2$TK#3Q zpr8PQAq_1pEx7Hr+k!8!+9CVl!-p`kz5?f-JQ3@+9KeU)y#T|8mKw8(G|b1k+gbP#6@SZ$ct7 z;_Nzd^vHhjS_OP%CC4XD0T+csC#SVM{qK|u^L2Lhq98Z#wH+aRjX}Fn36A>oGAlr4 zR~Sz>O}G1wl(!bef-MgZoG1^slg)Xz_(j4@b9P`-8YKKOB{OLB;D%3@ZG9mu@Bm}%g?fIV<_fLN4cM`H6}GK^8N0WyS8Ir7Oc*yDqsNTJyon<)a>TKL zPvcy*7CCt6FxIYHk5$k80gv9^fZ7q0FlpvO^|t^e<<%xTNGg94wp=83wy2-tx(U(* z0R%~nSaDkkw70ben=c0JGDVd?_0&^?5BmctljLAnCV4k=gq1pcv@bYTXC=M1!0B-s z$QaXlv;jS>T_~=~123qy5|Oa9q=7InVCCc>uOOctVzTI=@7ijr+o7#PqPR$4NM(*< zB$4bC0(fx_ENS~8F=?>lY*iG$cd1GF3lFZwZ@zXP zmd=@k|N7`9sIRRg`H0j;JE%aaaQ8# zr&nOv(goq}Dl153OWVGEPjFjRZeBQX(bj40V13>CE%@?({WC_6tTU0sjgvKg*hFQ? zA1R}EV}0-gSK`Q#Mr9fQjIxsdEI11H_ZGC_>ctmd#Mi(6b=>#hy{H;qjs+J@$M`v; zQCwc+7BD7vOfW=IAWwZI(nkS`%IZ)*ekkTBo;tGYC^o#XRSmKa;I=#dglSWzic6^wK?7@-d0r*80_;Sw9 z8<;S>^uVG?!q1&t8o?J%Od_H( z(yE&`FR4cSVAJo=;iKCwlU3hH^T}{tr$3W+_vQpASo(tLaC|H%S|sLZKf4n8GC*y! z>g?=6zFN!~yES?BmrX)u{;)oQ2ql*x+5IR70LUjpP7Zh6Nz#qf;1V=svVfsyfU!*%pm3|Ek5vgu>`M%wLSwXv}qZh(wwi92lL zQ2a}~k}GTEPwCLrDK5^(^vN~B-xU|nz%wiM;E|`cW9{Z=uyxHd7&>wy#!WvCBPY&A zahbk!D>q?>1fqx{0?@+37;ONFPguqA#?eD08%5&gPR=t)vyG_(d3`b7k^S4Se&tg* zuwyl9DvEIIykqc*YtO^LhJ)A>StjY5yMyFKt9oTnueCZ5H(N(R<3IQ*Rrn6 zGpn37fgLD&wzNt#G|4|phZ@h)Lf{E{vbS~BHk1_=D#e~-7BCo_8&o7y5fL2g$;lNc zDlSZNdI@#}4eXew4Otx>y(ll!JF;?uomolST05!2cxixi$YjvV=-&jcwEMyDkBe3* z7C!38-9BakrrI|3`bisE9=&A+?)t@(ICIGi{QHM4LUl!10>|kUk=D#KHX)&k(v&)E zmqs0FUNcBzjs+ucdL%J~6K2$Bh}Ue|i{IYyH12u)6?Cik*~=zj(U~(bZNWGc7KdNT zb71zHNx8o-=~G@o9+qA(2RD56eq}))feX(+4OLYYMj3rO;QVVb;t^LEMv1 zzKDk(c^cpP#%EABl-XKoGYqHrDJjB}X6K7wX~WA$KXMg5_l0lcOJDjTzW2TVL4AEa z{$9eNLx=FqZ+;Wk{p32-jH|#|?^}iu6YG#)TtEgSqyt$zaM5@gxXFbyAN206+A%|d zzxj&Sw!OL=8`#&_*7nv40V<%X6GE?=LH2T#f7#jR_;GW%`SRI{u2bK)B$(NV=c9j49 zhxmB*AO7%%;BV{JE$Rbc5w5s!E-pTEHjbG#TzwQQ2pU}P_LDLvxG>1v4HET8rqRU? zzR4!ji^+n{UOkcY{yt*ZGoW}CL*_H)uT8gb@lu%au6!qd@W3PJyVHUe_Wc8O{>W}&Yn+~WC`X%|OD(+K8 zGa2}tEzAuKX(D1X;q)D&8G~1jCo*_U+7<8x3l|q}$QW%5u8+BVqz>$^DBt8cgKndv zWj{0sK7Xul;%Dir7tswS0cIJBL)s%RTLGp&8QlP`-7Gjs5Pn$()h)jMWX1zyWDnD- zDhhGVDdTbava#5(E9o z7KU*u;+N!PQwLSThkG2e)UN-?_Z0PPg;UczVBZ!f9_nA1Sc~% z{&$~?mAz!fl&Qhr``-OdJp24J_|EsP!>vDk0t-*R7}Mu1L!SPC7L!SKf+aR9(guk0 zB<_&Nu%naWjWSVL(U*hvw&q}$`5U#(nnaQ!YhzlQZkANk|)zsoqebFdT7FsWz+yI?{F1A|g8w@)-dr>sU8cRYjN-Tn+3TG}!HTs zg41hqfblj=3*M0GDtzQaSK-4S`A_`f7r(%#KJ_X5{~ok#ZrHE^AOHBr@zirqVD9PD zG5eHhC@d+6Gmy+cwqeQu?8ap*c8ZkTOgnBOCLKEt2X`FC`scRb*EjtVxBl@~T=kBt z@c#F|AH#Ka+g|)8LH&{OT_;Dc1T8Ji7&oE{ z|N4oUg5d#!O>AC)zg&`y ztAnkVY-IL3lV5V_oZND7Em%%nI2gV%qlvJYZdYI4o>O=g@ zDK(fnaR?3`Zo~4G`vPBCn_qb#@Rc=e>hH;`B(MV*?2BhPI2;iF=Ya zX_GKt2#2|%Mj+8=z1>~dz2#M`f8idSymTHu_dmbDn9*YxUzx(wCVVI>DaPq1pNiv` z9FIHhx(`3R?q^v0(&IS(%*!!q!VFLc@&T7xJID~NqoqviEeIX-&}2@OPbvdeTYGbG z>v~a95#ERp-9jiWF_2!iYH965d+hhh$7?dGv+S=~qwEnl%9pfU^WjDu-hBjIPQ#URZkV3tX8#St)#U-7dsoCsmnCo<+m$QqTg>eshDiQg#0)&9dxn73>S&bnd= z#!erp6jv@~N3%}S^{Ex2ixirA?(ObHM|&4K+q==NzPM|jRfqRB;?UlsXm9RBOH(_J z>}$kGzKc7#3=2MWx-MH{0r=w=f5O>0uFqS~}*Y-F+$!C0_?!T-)W;lFe z9fpk`iuq^F!pje=##g`bm0;2L)vtaP3l}cLU>FR4?Vu-U+NrkofpyZcldxds7;6e| zXxXrg5zkMNIW=SIT$(f1xzd3lE!cKC9d)>I&c+BPj|5M*3&*WX91a|A2@F`(YCiLS z#Tc!5XWzbkc<7;r0{>Q8mvwiw;<)+a@TQYb#Hq(m!q6e*!D2X>ER(jWC@aL2@pX80 z-2p6^T?fC<6?^WN#c{sgBpk!xFgjFNoiE`%B4saVB`s_50flE9WfIiFoX{Dx+c0fD z>yLY__J|F6j=)j+q6EV*X9w@BD&yHh6W4c=N-8WmY}i?{$I(e)xY@MvqiK_#u{;7=bp?CA-7+q{vQLhGUYTp8TV9g`7XNT`i*`n|a$7YCce zg>1GCJC5Pgq(`Jlx+77zZPL=TzUw3tPDkIUE6+g9sWp~h$-gI5MWi$|^r5#0s2`dW3_=knTll1jlUO)?A}KtI#qJiL7@Mu( z#?!PEqfF|hC*b%0?pgfly2o(g$#e1Hx1WjX%95Z&dWPP_8$jU38-m*&rbDcKX$}$R z33pye3xZ^xC4m)2NGxBq4PX1&-FR{Jc8r-Z93S}PS(veC0t$-q?IAYUZP*v>_3rBG zMq5({S{mBW*4z;oshZS+WdF`1IC7vF?JXV3Xw?<`HXd#b3|QK6x75zNdwPSbin(y$ zz+w2pjvej6@4kHpv0}w4Hjh@M`Z!u()XL36enD9vny1hNrP(N20#I zCdij;OK1ATVGIKoaK;%Y;I`Wz417iDBX`=^_O~ANk(F)Rw&D5bpAU9iH8nM^vXPjwXgu%dN{3`#Oawh)EP+hF1k#cwvJF=sC2CeWwY)gmrcc4D{?tC#mcC^n zMot-q$8UT-@QtN+E}VGciGw?_2E$)9Y}v8}zy8&)g6DT#dVJ)6Aq??2CY(_N#(O#z zxZ{t1?hzZm++DBsFl^&--=&k+%qO!{A5%NY!g2AYd3Nt_2quSb)THijEgU#-0Dt<^ zpMo8`FRoY-EPhX1I00|JXaN?@854Z;3O=&LYuLCTX}kh8UM-w68o$2vx!@RKULMCm z+)Ty>7RA$@RgQs3@MRpBQ69_JgC3ZRZ58Q~IN20D)s+=($Hu@Ikt-r_X4y@MbhPsP*wj zeZg3(N@xsV<_5;lan@j^imhTVElVN7qypmCQV-I0h9h@r;g7KsWBcKK+p+4YTd{2MbbRoi{u8sNO=ITwzB<0Pp#6MJ z8b2PN{KQ8vdD3n8&o6&Rt!q0lXUQ4L9+J8#$%&6QQbVCff9M2#1LBKM+=VSK-H*kK zXJOZ__1L`m177ROT(VauimU~$v)|ViI4jhn9l!*Ggxuq{q>_cmEkRx2mQ`}@E zi{9zhJPEr;LO~JCu8u5qOXFn(!?vWlQ8KxsPa9|+xZ!!+`ST}&omZcJ?|CRKDN0Ef zreX=5t6PM{xTA>J8&$g1GHxGQYubBAN}3R3eA39T@o4_tweJXSzIQo(eB-0YFU`m4 zS1iG?r%gvsXAf3Bu>p;TT9nne9UZM*Xl-g&hN^aDsA@-hTNk=Iy3o_r8`Qr`8B}|< zK}rw$+CbGOAw9cmw54CSPeoN3sw;|>)xQ$sN7Z0xRXIwE3s6*;rxt^Gfq_#)&{rAv zMt|Lr(Mvm*?}?0HO>G@$Xl%#PrZzMwLs@%gH(J{|1K%ob9i3=u?L=E+n=+m@D}&AM zfQH}v<~C&sFG6KS8ER^)P&c#|qec(Mh~Yyqa^x_~m@x^XMh!=GbwzkHVn4E}cYIxQ z^(A=Edq0OA+jl5K**N^I1-(<`@ZrN)vt~`;cv>G<*|>R=nyvK(#{;!rv#RHD>x0dBVF!ewA2Z9&qc4=zch^^_!El08f6q=!b4(KkT9 zyXu0no<6nXe7nF{!<$uBT7Ap*x!$3qj5lpL*l{#3*qPKvnny~P&60J5AW#I~b1AtJ z-D)0Fpihc$8D4Af@OM#ue&8OaTU(_f+5?)n=8I^Kjdc1(b`kYWpZZv@4R~r=irq&w z&3PzQ2CN}veW)$%LxnPG6{`7{5M;eZ`77Z+SiE3sVw=BcJW02AV^O%Y|C#pU;MuZc(QhE-()wdy$-E0slesekqm13> zNij-`+fMoUIXGr|9cE7-iaq;UaL0q2@W@je@$k*7Fm&`(%vyXd>c>n)UVb6WIexrm zjsA_-vE=Arf<~rug5I8P?AY)E_HB3^U-;yQaLI+|sgW|DK6L1-i^op_!92=#S^$(8LvM3zVnq~q%fsfz@XH3d?c-LXmCmgbYae$ zXdMU;k*Erhq|v!epX>_^I-OnJ%GlG2O*;-^^`_mp{h^nzZp)qkPNA|G-~G!caocr| zqQ9W6(faJPKHjBoLMl>!g++yd6XRjE6{=s0P^Q|Urm7TUMhwBox+-O~DhPbV45=(d zjruD9G(pS0(>|4iu-f15{kVUU9)^8TlBgDESnBNV#nFZ~98$)sL+W?chCNujWgoWf zK8#J<52CrL5eE+*#;R2t9J@?GL4M$0YtqEASh9E?<}a9mSu>{wJGSx*Ob6ncqGOMp zjUhuS@W>;N;F@c$!QV>IhAVxOpuW}W&O7hK_8nVMqWWjV)OwtB#X{6itVK~tVc<+( z_opMv#2XMQUIj0K(X**lZ^75+@&U!BYCmsWU=h(bbnFnE_3jgK z-%lRLd*1V&U}1Rj$tMr)#2O55c+fi*Z@&3vXh!_lRi~o7G~PYrI$yV^!1hvu&qF`f zq+a_6d8Fr?F86kxqj15*|#3d#oi`mxat#0 ze4O2&DtbrC(k4aH?51QVmJDAyI=fI+ke^wrzciE-76$U9-CZOy7m)x;Pt2OIo}&=g zIXP#b+NQNj{T<1{t|JKiXN{=p!Kmuq;Fd+%D&_(RqyJZZKXOjF~bYvyML>Rkb6-4J64N zM8IC(#hAh|EbO;`zx%Dv?H@^Ae7#^!1Hv$`#6|_z*Op6RfE<8vCTuYQ7qey7r z$jK`R84z%dRHQLP7X1{Jhm?5iJ#?f`88n14WC=^PrU2i*iu+>(Vp}w{Zm1QL;DpFsTiVD<1u231O3j1}k$*FF$ zO>DL@4@1I=7Z%L;w@?{mh7B!8{m}61{>cj`1^M)Du6>7^aPUYAR&U&k-3J?k_S(MZ z2o4-+R*R~3999Oey?gd!*RFkd^s(oHZJ#4X)CCG@(V{sxX7)5po-z)@hYbyG!zd{( z!s(|UkNfVs4{v+h+y2+Dgx7<}iWMvHxzBwL&n|x!rPW24IBztL{fBcOappUh;qjZE$CX!J8QchW z$t9OCP96utV0it4HkPhiw+;F zW;;lwMqj~dCV})7}N->RYm%%Hw<)k z^q{z+WMKNmCRq+FYmu7!>Rnh(4K3mPJt`kdX5bct)FIhL=E0HFM*wum*shFOn-An; zPeUHY4(Y-0${rNt#raktuY?hz82$WEWymhXQQ}0^_iQ@SA;M(hD16m zWf6%3yEb6kD-Yra-}zF8@yf1 z^ypJaTh_dQk6n9Ka5^UrixQ39}QP_*B zv_fuRo1BvYTW`rUdg6j<*t>BjRzJNFqpK@WRaA_^VAV$%kM6YKye0VTd(R7wy}{<2sO{<9g6S6}5%rlp3UaC^RtS{lkncLXdV*sZ zn|B<*stvoaYU6Hf-E|P#cOME2S$fx1Tn*h;MFqL2sVc+pp%oZaUxm@bt1)TJ(BLRc zO=Sscm9eV2T=A3|#I-LDz0*qn<>UxX-4p7V_JcFj8bc|U=7Zr=x8|>T%rwp!_eq?h zk1^`{>iW-}J}QCN+1-P#u3pt{o!GhWD7LCLT>k2Iyt-kpYTtv{zwcmR(7ONrCxfGf z_4T!wHfeOCOUokB$f7CG&D4*w0it+h4%LL;E2ZjCCJsem zNufK>u>%_yGp#3WprN0v#gWZV>ju4_pt?Lln_(myGO`M1y=xh6|DT8O@lSjlB_$;| z@4WLc7zV=|5ws5@ZNSoB(XPCBQDDp;$W+QVb#{Za-lR9bts6NAzG=Iw!`<6?&AjQD z$?N-g^!Dp@d%Vy`!CTwAg6F#b&v#(yxx((+rw6AknTQL|oP`q? zO$>G&C$|EFtPkTg2;ymhK;j0AEI34R6eCQVFuE4gClAAOFYUoaXHQP%QD*OEaA!h* z5#i=%kI*GGM|LlJ;5v&f4kyJiklBHc!v$X#mVTyqzq1u#wPk-ZqbSV~_5L)2r*Am8 zPC5E3nKJS<&>psz-gUK68DI7{=7P?xz(C2GKG>9|yEmBT*KS+X{H(a3=rsVe2pT}p zA1n0-*`~&(q#5Em2;!7F?!tr;X&RZMDSAkXusDbmY*U7;4XP~*G|C;|-BwOEI-`?l<*WzE&?1<8u=BxeKnZ_72e~7}{e-wfWBTIG zwc5tcFYNloX?%9pkk0NPvjeB^B#gPSDJ%@~erRNI!Fkr}r%B_g@S%4tz_LZ7aO*uA z@aoGCVxKZ(O`dxqCeAtm`GqA0CjFNq(%T6sg)I#Sv19dPc>jAY$Fk#2@X*BQ+&3ub z-BM?sdJ6XMKZNi7QgsK&P#+|;lzG;7rUO>Lc+G(uTU^K$!__kILT`0_IPrlnP4Xs?WD zmLyyF9*`)dN0j1vNJmt|hxjHw(|93BQCeABWP`X!;EXD(_owf96}SE9(a>T06=wua zRn0Hw_K^=_02N8iU<^~jtV5havFo_*o<3~beGo6M+J+Ttw&8_UTd{jz1KQL=Kp!uS zjc(fDqzzTm#@7db(=!dG0Fr;IT9;f*fDVh+GNRkOR^qtcCM3X@Yg zJ{ZDCxA_A`Y?_y2&TMDL6s9&p>OZ}cY(!lp79BGdm!Caf83B6(|61#|?!yx=ZpJe& zZNaAPhp=PEp5X8P`=3C*Dp#uHudS^e|MqYHhIhQ<9l?!+m6etFYli0LX8gy0{0Dyc zqaR}Wi4(Bk%$X>uDsip-0~x=J{85DUwTEWyQ%u|wIQd6%O}5UOUP0~pv@-FAu(duI zKV0RF<`J1jGL@mYvKXgdvlRC#nbbzRV~;%+!-fsRU>FRqclhy-f2@qyyD(+!P`vZv zlY4gK*L#?fa|VIH-Q%Yu21!FB7_D!tW<(~qBoYc5@c*;9w3q&PqN&}Nnk<|R~zMicvZ zUKX#P;ssQEj3MkRfdciB>EbhH)_x5la~aeE`ot4!8&J8%GfYzTS`8S4YVD65=>`9Sp&8QzVl9J zR+51qrFrQJ-&;Cz@amodG`5F>IqlMbw6v!!LoGRI?kL3Mx^4`w z>{W9m3!$VBwq`XH37A6ZyRD04KQd+*xB8(ep~1)d!qNj=KAL9Z0i!?S44iz@y4b)3 zlV6xwBrVV6mp(njJUcW~92`yk=~WJn7QZ=sW8w<6Mtot6_ zf*WsNhZPUqh~1lC!JMTRqjvcCVDc{v$YH;R@*x7hS8JEwheh)y;q7mGYlegK0ZIJp z7PJeQE8co3o__WzJaYT5aQ+n^MNV#HB1$$ch3%tvWXir?bak|;^?5h;Zd->Tm4#~U zS8nJ%{X2KgRE!%p40qgd2R{7a599R=d9+Ju;JR8bvU2o>rFc&$H(q1~X_d2J2=b69 zzbIWBv1XrgET$bd3x{{@!`7F#;NZ@K*tz2LXs+y(5YQoihiw%cUc`c z(uAj9+^GIGVa?{<*s|lGGFWv6JBH#=RbGra)5c@Q#9^2}V|3t)YQpH6z(0#VY8vdQ zVs_&3QxsR-3t0UiQhzJvp1BlO3O8y`8-~Rwl9ZrFEV;6r*a$CvH;9BX$*_D}tFWJn zl%cOs8T^LUOu~uBPC{Ep7mhTvWA)}e!4br#l|k#pwYzZWXj4#HA07GCuYQFwW5!_a z+_|{?^2>4h>8C3LS1I1epl=fV;upV&>u>la7F{q4^VFArvmq$&Bb{MMD?O``<6Vt? zp_BElZZ)B8mr(4ez9h=v-Ea*U@N=}_Qu@ERKrdE-vLd}3kQk{5Y>h0B8^<{MqxYH- zRXFKwi*e@3sC@Ic}9H`UYe7y;?xjzdRhcjCmopul$4`nMhQ zLVEl5?fCxpzaRLxI(qa7>T1ex^_%D7sy8ph$YGV{&9>u(Km@a+I`5;!qLmoEv+_2 zs(UGevY=BsV9uZ@9$iXJ0Dz)`+mC?Ib3 zT^DU%{{kxW8}WrteNC-lEAZL_$MZBz;59>3biK0bRqWig8z20q58~YO-i)Ec$70?I zXQQ~JJdqC#y|b+aTh^|?iYM;Go~>)q-qxz-20g)g``q*1g>%k1Nx^srs;WXaHu-t^ zm^ytzaH-4d9r6qYj2Oyh$y6ajEoue2x@5w;k|=Y^Q${>2VC0!?ZeLjynO|IlVUxxM ze_b7&SpCp*SozQ@l#4u678V75jB-W#RkTMD(ymsRhuYfEq%4Mo%7R)^SB^JbvJ|yr z`u9Q6k18-TX2csRs4s+?$daWe`vc#fYDncYRS;pCdyFtGCr#LT@KqDmO|R_2^h>kwA1--){) zTZz>hcB8qiJt(6G?-I50A2+H7Q^wU{fihN|Fn>aD3{X2wx9eiIk<3(&B5D^f?UJ^4 zm`$mL3gU_zVbFXZ}noWDLal?A7UAs0oQZjbzSf$L)!MW$2izQ2zV91am zudA=7Ze@tp#;afc<`-CU;T+63af;h8##b*Ob7zxupJh};+3(QUD$&%Y{WwIv0Amh| z1liD=eW6rzbP05HOB`tn`&#?)uPztRY^#l1;q~!ZG)d>3;u$ez7#5v-4DP(^PTYO> z-MIA9OEDM*!|M^WzWeG|zJl#Lc3}3D5xDTQW1@Kse{7CE^J5HH9UG5LsjhZ+KH0jF z!-MNeOzzyGn8)KCM(c|a;FFUaG@oarOP=BD%mtr(G zHDL0%T734}^KtspDS>l!av1yjvED#=i z9DJ68&8)^lJeG3w`e1QwjSRXeJZDA=r!OSaUXU5};ra&f@kVzquzp_wnmSAaQeyXj z`D;8!&1HiZ0J4-A{q~!emy2;@Yt?T~3fxmYgMh3&oFPv|>0S7pjYk82Ho4Sb7SR{{ z#LvQf4ziKD8C4Pn7*j-LR9^kF{YV}KaNrA4nrjF+!Cp5e+0!VflaHcv^w z*+uD-H=?v;e=q*27|#0Tzhg1BnI%DbSPL|Oxwx6?bE?& zw_TP#;L1q`AK>5VDvcilmeWsRWbKe*TzlnQoTdy}*WbDtFTV0Dc5QkY(~dn8Q|FzG zqS8uIe~FgHL)ft5K3xCvZ)14B}qr5m5r=4~RPWj}!F>c(LU|o0k$WgrX%B%R@Z*RgAk1xk} zzWoJESB5K1Qb}_PyBf{5tI3unXPIoytPk6&PQ%p-AXk<4OxKdirP_bLw1F)eV8jRYtD-JPbJe z8MLzLQN*~>xhN_SPJ73Nb-dn$*a!a+2L^1W_<>g zk+npQ!?XF?$h7-F19tB_68N9eUzd+IwgwL0^>+WNiju%*iay#macn*6YsyhvSP<~f z(WVx>ym|*7dS(rtUAY-sb{+`)Tj@}!`e#IaWpE5|>HLW}e%^RBX|6+Aae9*I`27#Ci6A!g5>jq<C@Hp$u4GzzJ`euVj0AXbcL7 z705IS4HO3uTnD}XsQPV_fuS{kO$^X%D?9!ZqPsT9#7`TqDoX{FIH0I7GWPyCLE-99 zpNMb!=KZKIABo#kdSJ(DZ@8 z90;!db)SD^^^ct58%9Oe~6>a9eCv7hjGHvrTAM6TE8AWdK8a7`e<-W z@ZNjxMNfA->S{}H!Kt%w?G-0rh%zL_`puc>i+FyR>PlgCxZNir!VAmijzw7T^W4fE z_>b@3hY!DNK1L1iZ!GbQd@=3L4u<%dX3Tw`k4-oy(;NsO|_LhVB*nBWA9P%0EMA^n^O^!WaXW~PU zEW?kxYhT@nbt^XDwAs@!q`VAoRM>v-5T4qw8E?Mw++hAK2S7Vp4QBn57`!Nm7>3n; z6KZ=fsjgeiiLx4r)6%{M_whhhIgi}2`91i&dWEBn!_`k5t7o!CzW#JmM!5tpO=ARt zjRTX8418I6`|C@aK3_SmY=3Q#U8k1z9z6B@uE0Om)}2i#tsai)%8)gB@;nrkR47^Q z#p-A7#_Vy0`2M%PW*UjTp&v!z33|7*)>(N2!jaF*S*_`Ea@-9G+js83$Nu?K=;&z255E5;wH~Qc zhOysb*Uo1A@P|Ld>lq9KR$PrF5iTp}odI-fj3dVlGkh6H!6~@PLVQZvq!VmuOPL}*Up(dpQLn}k0 z)}Iv=tc@>h$AdqA3ZGH~$EQB^DfPwn&jmIZ27~$K#|lKKpE7U|&3M1WsHs8tXP5!kA&h@S&?tMAGjfbyQ1t zVI=-C^lQ{$)TkAfMS99E$QQjNjVNK>XB-CovFy`dy9+fnIk^0SX=;v;1Af$oI~W>) zoAFxZX>YT;reNkHw3~1!ivA>md$(Y5xY@kii~t_^c6vW$Nk3=rY!EzXU%D^OYn1Zg z^Ys-Ne3UQ|I2wO$OCh>?J)ZaoX!|&<<3CETR|J7BBaAV-aFe&FtiCP#q5Gai+rdVh zFk>?6t16J2Gth0Ch&v^*Vp96Zw4fhV5Zg}Wc#f-O6mP&;xmrX71a zDuxWliU)slH6;NSl3yZEPn`q1ls zLd0vpil!IfZUoZ15wsDjuNVD52QudeuZhyvQ1;Kk<16!*)PX5mpbS@IN9HJFTH2yP z`$vj^C&3gH8O1q$Lk4$_WIfj2T{y#dF5vypv{P;jA(03vWfRg|WY>N&3q>(dFw)Q_aB101pdJ`@@sp zmL=MEZo9iTV)^I+`d9COpKS-K&is18P4||QT3>YHnU}ZX5BI->N1oe&{mQtdLq$ae z=FgvxtFOKqr=EH$MvWSUfn2k?Z{I$=`OR;}-sYV+|AVK7Hw_LX^k=||(z}#iQ@USG z=wwnMY1K>$a~zAGjU5LLN5UDYG+jXB(e%$eOU2Ax7BsmU5B-6*93;ErN@rM zn@*d6@uRDPV@!XzYrV<`eB-khhJ~o{B0fe-@E=X{P!nML`8W4+#c|8n4Jd}b#@-#JBN!a!-akpT@o3vvS{$(;m0B`{A6&m zVe}`(77QBY#cQYeXzNFsGmm(A0v*JyGMf+PW7C1qkVAQxu3_nPC5X>ZJb{k1eZ%&{ zs&RBna~mFgU^({f*oQGghhR*7E$Y<#skE>#*kzFy&zXH}z}7o`ZSCm5ip|@wcK1G9 z@vaL|Qd-24N9!0EoMhlF!6eOXtAt^dJ(xX``ooHl4tTd@7QX;Wn8tnyjuHeFm1yD-a_U6PQbwk-;0ul5+em1~jJP9@hbq{tNX+nEXcw?aUTXou!DY)R& zV*=;vwd%dFARo5vB1`S1XwAmAd6<@vQGQPS_*ANy#`~slu`$L4j70x_i8cta>340GUQ^68dGg68 zgN2+nW-VK`3}>EsCT7f-!8$qCey_gwz3*Ye)^)h#lV=aycokHHo4lCm+P~G#gMDaj zCzld1Tp`H*dLgqoh2$gUWjrWqxmVAv?ZBoz5~Gw6tGWyXCbDUcLVjT$mRv9wH-F_G zeB~=&!B2kjlQ-Of{$Tj~4Elz-uYdg;=u{sbPFXYsXC6NtSyL5hjYY!wb#D`tp8SA+ zK4R-=pPmL81Kp77J>g05OBoH4rOnLY>hD8GTF}+q8|*rLJ^caxCE?JaL%8wA8}Z%m zeixfIZ9;WrAuc|90xmdX66$J749DuDN0#HoSGNZ9ggixmvX?kAUiC%!gt7ZdCX0Z? ztxMwnD%_1~-pmHF@DTC;F$qaHe*QT8>el60@#;RDa{O3QBOfQh%Hvz;0Q`t9GSXs@ zTp5lAj>DsPnUT+6dRr2*aA(nOw-*Qv{mqOxDPpooFy%eCO-=yi19uE0<=L^?)6fSz{{#Kf)}qZ%F0V{?uE;+d*=bHS+xnz zY}ktCrq;l4Rj$5zl@}EUw+QNawDt+7|Hcoi!>}s;Mrb_`*KQwL+B>jm-+rvzvNPEF zbkgaIQBo2auL%Bd`Vl<{(k8;HvUHo5Zd^%%u-c6L<|w08Q%5d3m5wPX=!4n+PEAaJ z0410pg2~gik;LFnmmk1Y4g=8-lwi`iNdwt%?eeso-3}ZbaLXBV_-F>)2KLoKGU*~C zUzCS6K2rF!KECz@k5e-BFnGlhG|BZf?Gq5#zIL+455ix1gXHkKQoQ$yIXL&!3Ha?F z*W%GoI$+l}-O~i&%z&<7bBVw9T1!NYx_ z({7SC*+x$CQ=T`r*d~S2AKO?ZtZ~&=gvPdYfKhT5Eq3TnJ~P0vvMk+W}WkEHw!J*BOg3zN$R%&6R$FNona(@S8fi zu>DXYp4_?{_pIK6)%y+yXZZD(+aZ;uST=nW&OdoJ&N*=ghN@M%X%KSxj(ZmHt3O_p z{jkg!$)=gI;pUM{ejjvB-3S&Bz}>VZtlumZFC6T4e(9x?ABJ6e;wQm8bA6PjjGm*1 zSL2HFj>X&Fv;b>1@53$kzl{5yT8k~a4hIf`_1|Yc^O?YyrF~|defHUyIdf)W%zEXO zS8&U%w_xUplTlIY@dwf0?xl>RLyb~R>Y^S<#ztZ3B*9D_=rI>*#e@!xW8D^Wdg2!% zGG6Ob&pQriBeOt_)~~4t zYhS~QFTSV@8727YKVO8RLiaeTDc`RCG-cm!?B_)>)qvb^>>HL-xaruJ#;01-r&9rU z{v$p31S5bxI%%$^;9?RP>^}Y9G+=2OcJ0~~925Mt`rE!^8-@*46YjUq!PzH`Lsexl z+|O(h6UJ0y-=UQ_aJUsC>MIf**cUHML~77V=WMC|6p_I`e1^G$B|#VM52r^GlT6XC ziqtn^zT@I!@#7nx#PP?DQj2%HJ?#mmXV#Fp)0Jv^SL++?<6YHezkGAtD^&(4<1IfGL%=B6{9e}AUGYNPggXyx8Z10o0_k8pslN0>7r81I(9l{ z%$|tyijt%b$)Q|fRxlwgZU@?=@jS<>pNJ|cg|&RQ*e7mReN%gPa>7TDhK^-~q`{VR zxH2SdIpH+C#dm_jktTfjbOuRh>Ga5e5h!j8S5i!5;I`idTzR1|YmIR-2pwD00~zw>I$oIM@azW*bbK5Z&aUUqy2UNh*ERHvP~4A))v z8#FXDVA!xf*J-^!Bs0^rTj`|F451=QCwJP2RaBUR#wP6>sSmw9aJJQQGG)NEl)hl% zjV}RUh$7Ef?8nNfG?O5C*qLzca)3LIs^6L+A~@eINC8Qdl-+D1*>xq^q1RWn6ju1w z(b|P4Zhr~S-0=!VC@gp#G(hL+U168|PHE%o8fJYzRitj(U3ES80!PIfXakQZo zPd&K?A6hgMbLxkXfjAnqBKRF@u-tmM5f7}}hKJVgP)4gm!Iu+VU+uhI-(Gdz$+K|! zanmqqY+WS0l28ri*=|cge zjgZ9?G>31}!P<$|R((vH#BUhb*)f@NXp=Z|zf17q33Xaz- zU%njw@gM(z(@#Gg?|=XMgDt3fXHjckBW9nvm_rpIuv*Gaw_7siN%enCxxO}AqOBu6 zn40)yArmRV0uJ9(4`=BB8&BYpoYJL3zv&&VyAFo&L&`1Z?lPv;EvtjR3VYVcQ?c#U z-N9A&dM6vVi)}Cr24B!SB7geRp9Yfsfw!Hc#)3L9Q&HFwZR-}Fu1;mduh+6ZWZ1gI zpKkjFl$m;zLdepMCY8MIH|u8ZOYP_gFDa?7tNUM(O>LmuxpOD}_{Tp6{k(qtI!qi} ziFaN;3nwlft&CD-)*{L5QGHZzNM#XTQS*e6%77)K>43<FDPx11pamNSSP=GmF4C zl;xtJpCW!UN zKz$0LtgIBH#)b<+*%#d=tuJ4%=4 zZu})d8?hE2y9nosa4%BC{ws+(Qr)GM3dhkYsyex4}ijrw zVWGg#S~amzUo6_&W#AvHLoEOU|5&!HfV^|@un6$b1+Zf3JhNb>IZ(v%Xq2<{9LRtp zJ?v-8sHM;J&a3j$9H$O~DUuEp>GW5CSHBV*;c0qzR}b#F{wb_~Xfxh9cLrt;t3^?C zCRV3cslVZ+rIaloUFHP><}x?uHgTxPBY{v~m;H z?mrwEtpv(S3b1I-I9z=C9GtvpGDZ)pR$oTx7kue$W?OaeO`O)zeuq)sRAjbFwaW_+ zUYGYIt6sDC(cEdqmy=9f)(~OS?+d4X7vA;w>fpGczFF^{d+rGwzVF?)7t>B2hk~L4lfbOdZ+bMCssD?MB*rLx zwr#&edp9C^Pfeu!0Ba7M!qywfL+b2UcqSt8PKG^45F7)jDuwkyAbapDtt!FPMdR?y zUC#tp-!J_ez2$5${OyJ9+qdIA?|BcJo11aQ3DfYwx1W@x5$=XCW(T~n$)`sLw!6s; zl8NVZiH)DrrDi_&V}wta`y|fIA7Z9DGJXy&z&Y3$#Euy|_RqS!;x7sMHp%O+zdrDB zwPwv~467@_yDp!NQHpO#_#S}j`_2Pp|m)5ZD5Z7NeEtjy=l)9 zd>og>c_b~xQ3;;T`j#3=W}$A1(4IT#xYJG zt+bxuNsdED+LW=m8kH60$Zp@)Cv-B;O%dFJFdC3L6aVU99pNmNxpeRb(W zYa7&`R0En+%9DUHG*|SJp<6^sf&Ns9&HYIrn0;k%Vv$i()kl{%91JSt9?C6 zit@cQGsBLfcFg+G@@744pH{+wo3^mcJ2ZVDYFT*VeDz52N~0W@vYZHbRJA>oG~Nd) zAA-T#Ul`c1CNtB`c5%~+6yHo3RinPz*5Ja^j=}0pdxK+!cRsc%I6kQL)XIn3ad`Jp zj6Y@!#?2my;_@P71?@#a>mV6*x}IOh3m`3%xxrtk$21Mv1;n^v0-N{9;08k3=Nl|( zEz&{RaONKC6{^1y9U2(}?0JnE7<<$g?A?cz?kEr_D&SfZ3{41*2~3zb7B4@%7C-vY zkFaFPlEE7Z2SdL>eqC2dO5t>=uaJ8Wga)ko`uf-LC_#4621)IlU0-3X4Og|* z1-SYxGjYzT6ELK*klZN5kGNEG>o2ks$5rE=hqnjD1wFad)d-wihZ9L-!73~;_Wa-I zPcpxX=bDD^9V>{CAe?vlO#J3gEAY(n-8gO8SYj}tIVGWkAc*T`ELMEM6ubE~j=RRWEYMtaW8)9ycVVNB$Vy10dBDpHNL2)tD=SaX7iy9d zv%XOW;+IQM8my+Y<(R3aVRWN`ZW3O#3 z;@Y1LvVXdgtQ?OC4;Y5mqWl}S9>H_396@2p1pJkTeC*q|KUfP49a@doBTSw!5p(9v z!Tk?DhT|6>XML22pVOen>_?w^0uMd@H2(Ep|NRZ~$D1b!!jKHt5p$3ZI@F~3=rOn8 z%(VJPA1l(_ciU$H3iYKkmmD2Tcc{=RYTr_Quy4wfEJ|05lU_7nYWzFa@54|OU{XzW zxo|q(I&Dn)HCBZ!M;h>_mp9_}RhzM^p#`04BCh*s)}#@5 z>zft?#{);zSD~~dJZBH^s?X|DQim|s%&q#!P5v>V}7WbWW%|hJAO7$M6y)dP3-3Q0^QMo2BziK{6Xu(%%hSN=dt0a3aXxs7SF2#hfH@zL zPG0_*qlK2UbD86{s}Jp9>u0l$BJfRfq_Hh{*FLb`=+NHYj+<}38DIYLmxH5%`sm*~ zFPnigPa3N}G#0~cDZu=SpVo!ee%hpJeE*j(;%GxVhSrn?3w*7f;@ijqy%sGJQwP>z z*&IQ}?*wf0KvZSII})&0_0}dY)Kr$@Lsu=sH-GU6j+t2(IG#@f>G8O3Nt9r-8OWTG zkjy|>gNU8iMqrPa!b%h1Io6%+xUg;7V-SR9wqLC@2@gGKp8DDnoN?0lXufB)QPOc7 zO*B3%)1$sF-T(MDJon;Wv@0W4O;xe_E5i6ORam-kq~g^gl$91J16Cd}`f_c?Ni?ai z1bA%(n7cP5f(=Sim_DAOB1tK$sNkv_=MkjE2@g|>=rqI5Lql?`P*53hYaHVRL$9#t zGVlVpk_3OT^EZb(jFDa&+9{euAPaKLr#utoraV!>4O(5l_<>s zCm8m%c*oJ309>WQ2gzhNsv<0%Wy=t)TO4OKzK`z>I(&M_!V^DBpRTgsg$J&$y|{Fd zk)P%z!YBc^o`TPBXYux>WMIL96Z4(GQDuC8@X5Vca_U?0(o3%dAE#gc;MU>Er=P)u ziIY)PIglM#9)2L9AU_Wa=1j*u4?e2wIi2cbMZ9T%FSqZ&K797GU&6F$GjQppm%d>i z>+);k>GSbz%9z#Fh2XfMJ|5W@=nR?4 zn$1%pgBYR!siJn3&T9;u!sgPMpua>_RSGq^QeP-@QUw>cud8~c1J|dPVW2gQ6*RwI zm~2|P6UU6GS6?%t1t*!XO`t3M#+%Q}=ZFE3tYgad3+_?{bT)7GNtl5f| z&Mq~m=O|-b1(wd6h|A8IkEIJH24CqpQ8!gzNR_`X(ufnJhQ1~iY@Bq`;Svk zGOy5>Uxa>DLaO^>{+A(5+G%=wS9k;A{sy32>8m;=yJbb8aVw`c)^h?#phPrBgQSpL z-AQA?KUrebU1AK=w;}3NN5kR|DaKbaK4`r=W9ek9xPLW%_q*Q(My$bISc8EJy=w7z z%PqIy3t#vGG{e37k`r*z>2rds**U$K>K<3e#5$7lv`@#-a<)$4f-yIMtDk830ZdUH z7=S$Khfb;p(x+9>X`j@eMrj#N*0vRe*Q> z!!bDLl=14hnACt0NR=h5JZ8^n7*!R8ShZm21M9~+dB&W+Jf?n;hm zM?fMFMrXt-H2LNk!3|)k-!qp@#Z7m=jEA1wj<;So4T9qkr*1xOv)jd!SJI3=n06ad z*Z>bSYs8KV_cyA?lVV%?XdasgoBIWWH~bAx6L6J?##V2exbb=y->D~z#mP&?1djM~ zbGaRX(s@kBQJY?P>I3jI8&@+`7HgLndBF}PNkIv#B_$~>Q7Y)G>);zl+qX3H1A^CHKqFllmNaP0vGCYL9s&qvEZ;n+0A z@3j7$qLWNnk(M>y85-F>L|R5>wS~0e(os9)Q$F3VPozax_^93Y{NkopF>l#hFr;>b zN_q+De$Ll3n00MeU+=XK;p3Mq4tBwsp})TLhmwkNbhfpjw=dhDRk!+3_w{doAFEbv zz&F2j?HhJ{PzS>YRyc8pcT@#0hJlLfej3tdhzCy>PHtX!8(&dTn7g-EO>O%0ZUb%5 z(pS48_*HG78Y=Xq74O($^#@@X!^q_$68?CjYZ?7us8bI=>vdvTNlxV8o)|nRk6Vh( zR!Ktg4q`bvsBtC-^lPy|!=V-&+0lsUGe!kp%F=Qo0obOjh`)Vh3nryO6%V7mFTE+8;>%$e}awvOZV zWAFTL~<{`Ft~H8^H=>f$N*?6qf;1*AW4 z`Yx9D_}QnMxnY{>Gky&5$H|QH+%zCtCz|@km(NVirXhycsx0J38`}e8@|ZDW@OlUB zC{<5fzx&i~%gaz#dJ)PIlg}jc7j~MDX%G)nkfbahLF)Uj&3Zq7pyMvAdoDq&P zW11-?GS=5l$l^vY&rEg$7B{lmbPAFs1GWJZ$mZZIN#p9`%L@;_tl3Zc9^7>5@L^WF zMet;QIN+g?qc6=R@)E$@q?1k!BvsYI>&< z)L(wSKI1MTyy0J8Uue+Mzj|RA#3_SUkG^76A4OEp>VGwH6M>JLARi^bmghK*@O-SJ zK$X7TCQ%-HD>2<}s||7`>f>g)TJ#p=3$nF3Mn&2%Hc&+i=s2eY-+nO^+nGD9RG6B^ z>M!dnAK!qn1tl0$S(eff9~Bk)s8t{C+Po8``MJ1k`Z)aV`8D|c%j>b>z>%P>OVr~3 ztff=%?zbF|6O_TAFxqVu!{QWKmUz&d_On}7GG)z!XaX+pak#?zf(-bnkybi&acMDC zr0euIF5xrO(J+wqNuS+zjpI37{IDiKZ?SZT9PD01!d%zA=_aFC1x(xYL@%q{j+KD@&8kpzmV&mS%g#HH~2g5a^i!N%~o8 zKY{`W8-P)@)~$p=VZzuXXd}d|6Q|(*>z)dBV_b2?6&MVIfri%BR($9~AHte7Yfv|& z9N+ugTTotFn53IWveRcyU;Bn!Zp;z@qr1%At@bacLrnc`>P%i2(tIwhf}w}Q0}Bpd z>pn83h;+=|w&yVRA8A$-yOP({fTiJU2mIQ{)h~bfOEfhd!Li2-!&}dvh8a_8BXxpxbPeu)WDBmjY&P;^N7a(4r#<;Fs39{HV{8D^esLL&)8aJ1 z_Mo9H2VK4C4ngX-S&*Xi|=+tbh9i-$Mxr=~Ty{O9ySstSatfdMb-wX*}1* zB#G!GcZa3biQW%}!o??O8BgZ}R;9T_AN{^GpB}gAr1@cWfMCjkFX!a97}st~FP(Or zm2QyD(I+$F0pm!hL93k~R=NkKSBJPTH47|Xxfcr-ACJoFA!@GG9PG&I>g)u{%J4=7 zJr{Ux`AZl+Vi?AceJyj0EWQgvOLHqq%SzSS!hd`6&fPok@Bi^- z$dG3aF{v3Oj z`f>v2$J%jxci=o;1o7Gk7C3RX=++>Ut?cn&5Ix6qfGMM+^-i*aU?-X4$I={S+)-5K zgz%C!NsbM=YJ@6#pSm+u1QkkGA=$7S54YguN7v!4V}exW%o?szyu!k6_c^VbWa`Gn0~{~OB#*G_ zZu6frED;i^k=Eu>3BMW>Rt}R^zd0#zdUp-W!YL1-*zIA< zu{$u>{Q@Tkg=_mPOSyzXGDcqM2!?l zvJF2`LTT^DIP}xe7Kx#iLdl|qEMrI3@X7VaRfhG4AAT5@U3QuJNRW@gFc@@bYiq+7 zzxYKw_uO+RD=Ea+{`n$|8dmMddm1G9*N)}&FBkmrss50j{ISlUQfuoOQ+JrZ_E-ZC z?eQBo2GD$N>zGa^y&0wED?Ueu7OKH(=JZq4?zc zmSN`9S`-%MI%AgG3cfU3@4-l$JF^}SJpKY2n>zwOSb;i=@;jRr;`j)hVZy4J= z1R+rvYm~mIjVsj$jeodcK0fhZf5K_Uj|p~(fgOby0@=kJA=LW7VCG}sTilewKRtGOltww4JmarZFX@wbn%`~b%91`zs_Vgq{rSO1b5;pN z;A}&V0nrvK;lXafci2B-KO497z+!6^!;Ilu%FJf(gsvzup@HNIZb zM9L9>S=ZrJJt)kV4h}ci9RfenI8Ac$pCylgc@)m(Y3Y)XNjQ}ac+%`1%_I)|DAyk@ zQp{T}dNz*fa=N6S_G57{ee;^iGm;j(l6N@}ytICvbfc`VtxejRn!A(%Yac%KrOyRf z%PT5_9nyyz8c|bIgEuO4c6H(DCmzR1CoV%le!&1s_1}kDNAKFb597y;H7@s|;b>zc zKJxKTX2TgcIj*kg)2ceRsSv|+CCZM zTV`5X*5#HgUgT5_r`~NE&9ZijhpFxo%BCfoPQEpz^JK&1+KA?*i#@kq(%a^o9NKwI zTzvgSk}5sz>>j~%%gf|fGI>Do=r8Wth&63OJ+8WF32wdrW&HN8p7k zd6bgFzw}lfeQV_1ci)X~e)F4Hv0?>ks&es(YZu}8V@IN*tN__PV2vo8!Z+gFmZ~3G zqI6|1w(K~Jp+ibT%@$2>5+~C@vfxe@sL`S#++7N?0aix4P(w5hNk-n3l)!nvaa5^#5ES@lkaelDNI1rB`ri;S`Z493?upG0!A z7zsazy5-tClu@avQyG>zv2AxF_8(|dhMc~@N&c9T6<9cDnBuiUxQ^8+YPU^$lr`vZ zLpu&0Zd3fzh&}sSg4+gj)d%6x!zwUmW*yu)mn~($z>Z-73{gzHS@$qjU{rNafM(Ny z$cP1)n>sAevA;J#WGjIxNW4{sBgvqOR57t%g4aReyd=uU!IsRs)dYsI3@}uMMSen0 zvLPWVoPdn#LU)P@iVNw7|NLBu(L;L3PIC$KxERIEXkT9!8&o?rVA3oC9l%*~&E>V> za`B{t9fJy|VaphI- zcnzic$I;okouo9Ar-&wv2dmi6j9c+##L?7 zdXnjN(^lyiURP%ip1yk(&YC<{eaXm=1`ZJnpsk&1;=5`CZd$$y4Q(Akx#6{y_@}om z!#gfojH>ctA~w7M#HP$w9~#H?9pD#HTb-qW_N*T!V5%<{kGcEDE^A}r`ZJ7|nQGf^ zH_4=P@iL)MIxwXNmzz(r{Q(A+nHIif?*eo2*>S%1vGdumS=oV~ew)s~N%D}g(CPbS zCt&raz4-NQ&*6^`u2hreM(lX{)!?tJeh7xopNhH}<55sr9F3aneVZqR@=7=rNZ zv(Mt%Yp)HQeV=v0bbR276N53*e+x{RSkTurWutDwmx8IJkQh_(0JpmV; zJt?@o&96B*YNH_GiGu|rjnuco4O2#}mFxFl(Y&!K2GV)y{7EKrkQi1nf=fgvxdrI% zh*;-JX^|71w_pTBzjYhv%tW~PnRzjLWYOVX z3a3BrjPg*2%LJ7E>FDUjk%kU*D=W*mQI#IJCNImtMMq!o*Qg9tO)Xu)E~p*5o6*?P ziDvbu%T!kuVdA)|z?Yit^Blu5umsOj+^jGh4|ncu!YgYJqNS}1rNsqUa7;Z$4paPF zT@*NR@4qc*eZb=3UupDzM;rWy09NRko*5n-uV z424ZzJj=20d8JzPqw@qw6DBG{j(rN4g5u(+43p&GSYaagFb!KmZwio@KD-+x`Bq;g zY|A#bnOD+u>CaF785vnQ{)zJmURMTDg7lRSFRXaUM;XeG$rq!s^-+>FuAfieOS2pY zGbl>i!OrNDxvX?wej6_`g5cw%UD(DWnevoFNxIYS9-MJ`nl++B>(J_&;V3RG58&k& z6ky_n$=JPf3$S=01{MTfYgo5_BZ`X)F>cIgyq;m}j$K%@elz~-zfW+|IyyV>qo4d7 zKmXN@IPv^zFlE{)SpLLMuwcRDH{O5+&txr}Zsb5F%2Q7eqE8Uy6F?wuL?D7|>f=08 z1~+_BjUVUSd!RX7+!=x&mfN}`RD!|ouN)EVbgCUv5^O2fx$1_N2D`#^(UOvaVE0wR zs$?M-(;A3|DaQ^1FO&T5WZot%J-| zPEBy_lfsoOUK@i=r(o*l>o>vH!1MtlJa{;qb~;$-Tps>7Oja2azc65M{Kxl|WZK%z z>8e+g*RzHIj!y*Kwv(QC7a9*sFU)688G*0=^Tqh=`_9G_FKoi^?|U)0!LaebQEa^D z8Ek!I1%`|tfe{O5pkm}u5O_(^k z7GL?qMJO*TVswmsT$t1OGD+j|P>7t)boF+ubzGh88;49RobEHnO`pyb2?h49XqkzZ z!UWtp#$~&@da!ZZfndI~V8MddEQk6=VQskj(T{$FKmPHLXlXu-)0d6Go6nhyu_G&! z9rJ!FEkfB5i)OTIU}|4I=bAdP2CuH)i|+28;F|4l{sCs^he(e4B`30Fs_T+Pu%KL( zK7>b|B7Gdi+x<E*l7(bb2A#|(=MSmp?-|Ly7SMQghGkuorRN^^-gh5HjUFBu#?p4tezbr7%U>(Q);F>EjJM*r)8B%={W)lEK7t7o zCcNQpOQOS!DM9op^>8GSe2t}+VMiN_Xe+2p#VzXCcqc-tkkf1EMXgbn{`+oZ@E}Jz4rONu*)zhmCSDW$M z=U>JC#^wOcp?92&3r{&lO;Czixc#YxEYY^x%q&BXg4)JJGe7spW9am8C@d>U zAh~>M4u-L-e376GDGAjdxrLBW7RZ8(Wy9noVMvWcdDA;zf^-`!3T4%$ zsH!i+s#U9kGx!As13ec%82;YE`t|E^$t9Oy^XAPMSyzQ${r5Y9qvAf@VC%P(dpWIV z=Sg7zaK=*i*MvFHamJ>LnxD+^CWSwcvCH>v#=9_StI%@0_BCMl{)XUYp1E`9;&int2McYa_re8or0*hs6_R`)Fept{(-B4)>d^REaAXB(;fuaH{4M9q!2?gO z$L$Yn!rLyK5nkY7xo;TwXy_ZIL`FF)e>f0WFtYGl`J_L8SxG+5Ib|Yhs*6!tlAn~* zA2VB9dz7K78QXU^VcV`ow72&J?LV}(1fzzPV&S|IsIDkLaZx^s3UlGt0w7&42~9M? zj<@)WjEfFzqfIP$taK5)mR7d&NfR+kJQFw>b9j~{P*mO#)Owd(J#3yOoo4W(1y9<# z$j(RPLwaNSO0^x7~q@&VQ5PS4-D# z`HB_z@>jo&@w1j-*|}FBKd%Uf8n>$tb}bk;ZXA2u@bwINDVgzZD7&Kp;RtKY{ICX( z*c6q6(6A$t_*4m#V>KfF`bG^$!jvaUO^miL)`$`fN86&wO$#<}JskM7DJ;kj3|J#a zR0Iy5E0vL}AUSu#`<;p-Z1u;fg}4P0BOG|uC8Tu9abk-ouMLN`6QuNrdTJ1AYwg4x zKYJX*dkS!DT`iv3yc4&rT!&Y7?n75^Z}7$aU6&k>OV64cIBHKEE>fD|ss&i-u-n0U zm+-4|VbRV7uFW~xc(o@TSSHkgsU$A=)LE8l^wDjr&;D@OGoH@n$){p^n~a7^mr7SrbOpV#1|0xahQFuxjI8-2U*ZxbyK<*uU>EHXl5S zeJeMhX3}WX&7O$jnySbrgW2*XF0yAT8q7qj$YMQ7oW2OETfq(Z;bXc>HB4{mK;Wk< zS0sr1jif?hNdYQq%CKwKu0aFV|KYHE_ilXP10M*CSCwT&_~xhHj9F8L!``99$-Al3 zU7vpdFaQ1NFH^s}G7L{yuymO)T>Tuz&|O&+o+SUmh%@1tI$L^h*(0^YiZwd|U!3|F z@02N1FpzNQ&>`G>^UZY+l7O@&V+yVE7@lFNzP0Rx+CZ#rWxCOcGhG*VUHc z!&fiE=e~J2mdqQDN#lkv^+QHm*!tMwWT!nyMGRQnXeT^4Y}^!>%TqC|@nfotBHFL3 z_9?aE)qU8tw*{re`Is`XS{b<}C}UL-3Y4L$FyFVp@y!&Xam=6}@JqQ5G$)~az1+Z+ z1>bL3O2kf(9Dd3d@vjW#0X1d47*g7Y)-I)28}e|tHAj6|3P0V)E;Tt9Lk47vU0`K5 zZNTp8BJ`IR_F;-L3Jxi;Zyn@h zf_5q=pBcPs#7QQd;l(5?Q*p!!$)?GtV@%xoqOq2?&frxa$1cdvfx~+a914p|y3@q5Vv$ASjz35SE{XQuN08gKglQ`1Yh}!CEHg~sL zGu(8`pU~FQj*Bk7&`4XcawR_Tng2xX$muxevJa@WMG=IuJ?!1N1sxr2m_L6$-sq6r z@fQT!h!j0jeoQ+g>~JZmW5O_Fc#P2O)MVmF@`rvALII)^X-D4ZBte)$BZ<}yM4(su ziRcdg8k#zSGWsi}K7Oc=8xF58M`cA}uyZRamKcvX2k^AJL&Yw@`Ld#A=&y`glk;Un zgR25XN>Q@kRv7IW=hA=LG3FDuzl_7L9>8VOC*d0pJdGze?m(wvz#&zoc>8$^@xIHK zVpM%)Vz{#DvDF`aw(Dt%L3-Rt`ji)J6=3$auyP2iy?pdiTFm~4;KytO>A>;@+Gn&c zVygU0IG-Vf96uyG?F56DudCUnsb3lXCPJ=$w!a!*f5!FBnhMx$EpB7>N1?XXbMhTI0^6nhh@0=-k0#3JD*n*|HEije|ulqh`N~* zFzVPDD6B3|b^{1&(n~o-5PcQk6#NnAxRxe7O9v%0*Kh|`hnh5Z_i7^?z<*hTQ@*6C zL>cDx2gk-rN=h&o{%?i7d-n!Duk>w{h532-&yQSyvzAUbj-A;uY=<~LYaHXoL!X}G z^kfWKSQHpz4UrX}j`G(c-IbNXHAf5|bFXXm* z48i?RuE!b6rm3&5!n`>xf)HHbW-0RIl~eAp+B|v)3|Xq4@vVc-SQZ0}(w8lqh?5pg z!cBLq$4B0CEJ};=z>Pq(PAM|GJuPgK)X;86ZpQ|z-vt93FpPe(KM9J9hcLRj`>g2j^jO`U@Y8N=vl8Ym)xoGP$>l3qwh+d4fGL@GI1-66@DctD9w-uquuB&#|KB~GGqqKjqe96-+Ia%SfvXz!}yVD{} zB{KNjSa;dHMB%`K!O>>Mx3+g-)w)AyZRt;^9a}mY|3dt9?jvbF2R)#~5Za_;* zqp~%G$EEY~3Q%7^5)VD{#A`5MWeBEKckPy7NKHKs9()SjY7SAr9^W(Dd*6Y5`06*l ziEn-NtK`P@FzBO$4?X%Qe)hAUkmAu%Nm_en2fqHTZ)52AV{zUo7o)JaG$`BG zo2z(wr&?ze|5beM20pMt$ECDdGFoU`f&`+BlIdTRhZvZIv!xKAMy}M%;R;cTD#dF| zX_I{PHZV!(BS#-2W0}5fuvb|nJGgv=jOIp{0QZyt=wrF<5Tk+rgy6 z;%(_aTIiFHbUK@Da4?5a^|eREBtFGp9w(%`GIae`JhBeUZ+jJ`9liMcEe|TgRd2BS z?2sn zI}Tvy)30Lp^0la)Gzw#u%|&^AO@u6h9qGK-`MZpFmO>bPP7RMn4U)Zrx^rR;>zVf%*c!=jhSE0rX(_zZJC6@}2K|C+@xXUNxb~#Wz2739dN* zSjz|^9r=Wj8U~+y`t%+jPd|3Ja0MgF#Lq8vE}S_S zrOXZ7C?b*d1zgXS7R(ujpZxY!96a2Dk@Xb@dg^I{!cE3xnkG|SOmQaqQkZHo&IZq9 zL35d&&%N($C*a!8{T}x`v;}WIcM91_3%5{0Bj9{2<;r9(Y&dT7NtbY=Vj7G*99Np< z^-hlIlj9qt2U1VKq08g$jDgC zbxVvwm@Q!7x9|WAcM5_(7ENm^L-Xg5a@vNfja7OFn|6#}T41(i0w5;BWJD{I@WcbW z^YK`r2$;qws^_c`FqVJmX-uc3?BJIPy%X}p#iN2}eTl-l&4=;C@?8Ng?c=#ttw)E~ zl`2C(zU6*`(*-tvax`+ZN@N?7B>^ifxy_PGiUT};XDkzbTBWbANjamhC{B>-3bVMQ zKdf>|UIO24YiH+HIRBV1whE<%J$T}=hj7lD-ki8RnxH;l-E!0QfjuJkFFxkyw#(vU z=i^sD{~4C64__xOU7C4>uUE}W9)IddG&Z%QAIgL3>KkY~aM#^;<2(QJW1M@=S-9+y zi&UP}Z)ahC0j5ozfu~pQML}V4&_;UQ)2lwPA3V4Qqm;3$tnBsk!{rOf5yBkAH^anQ zOj^P&%)X5pMjA&21;{>dq*D^QODmjQq_Cu^P!i2(va_ksM5?4CTH-C{DSFelRe&a< zRsVK%_Xhr0V*(UJ^Ai6@Nw(F8wG`fn^*ZURU%2T%cN~ZTg;@wRCsp1(tNKy@a+Q& zzZ=Z_-0m~}xQ%Z($)d$h7Zz1^9+{EXOmq25z|S{!pnVGG*$gzLtfUa{earE<@`8nU z^!bg-ko6RvUAZOjlXYKvde9sU|967kdG+4+zBe#l=}SAl_>bq} zAKtVeGG4iwD@)hgGR)}?->y}k4EpskoIG}#$jC#fLBIK2ooDMHS_k1^apBN-9k*le zQS91xG&sJ?`M=Wh5q(SO_rCW%{Qmd9M@M@T&R8}E7oRm5g^RwkV779F=#eSoSDO4Qen#->d>ak!xYbu~5cR!!p13ZqAiz?(0= z5MTT1H!*xz9i~j0!WyykoMY40P5A9^Z^mVpU5w7I&fo~XKKi$2-3I*TcfY}tPd$hC zz4x7X=R2-c_K`fJyk1kBb^0mz-HjhYn+zM#rY^H%?~F3BZpT6MlS6n)2a%oYXq0Hf-Ry+ z{&?30$tR`hpTi7hynbqHZpYJizKT13@i>m`ZwlyJFm){6{pRCw!CA9VR$Ay8zNPgJ zqx}GW*bje2Qcs>Tn$OG=rkM+iRPE5k5B-8Jt@1D^5FSaFPJVx1_>Qb3{F~(CaZs4N zY8Rk&;)WBRE;pEvT>NIfG~VPzDoZY(rZ6Z!n6kyu>GlmzkBcvcEsXy5_ZOdL?{I{X zZXPofp5ORQ=PWK%gV3@WIA!q^JowCd+j|y_M=l1bVi+N5aGQZX-t^^!DO6+M(iL_}dBl_wUF1 z-uJ%Hc$J%jPrmyMyyq<^L|^?R>>Zg|oWUK?<@7!G(ZL?GOt@}v^@@2AnbUuE8DZ2) z8hLD8B?-MgJgq+VCS4$;a+2@@Ym2+8tH3FRn9A9FJS?dj+SRFd212 z%7gUSp}Tppg)paiF?eB7YU!!)7D6P`%ox4iagv52CFr_I8v8}{KBH@%7v zzH0$$l4Cml9uM_4%yfGvM!!ZyN)tB%(r0%Rb>BG&@|Cq`0CpUK&& z8SNrnNy(a}@PXs)DBht{3`}O&T`1CmY17S+V5R9h(+l&2`s+n?arn7feP0fYNSXB%^?nkYVbYCP{l5$qq=Q^uCu%eArYUvRe@AB1(vb3NNrG?6Hl`m0Ns0>yr zT^qTCqer-QW*E@e9R(OXZs`>RhN0&OTyAG0$M?wuisBqd;N&vqGg~&I^oZ8tqC89( zQx*JC|4B(cY2&eR+VMV_6CQf0JlOgK$Tm7f?~-dwY2q{5v>$o^@O2VtydkGPUCZIh ziubh_M{o2S)m``7aq~ywv1fMRd*A#ru7211F=p%pl$MpDxTHWCd3O5^SQ3AB(DVGa zyybH2+Pfbg`0yw2jw>(6nWvwPA=Q;iHuHlI*=-%Ic;>km@SX4e0Bx|-iFy6Cn5STG-DuxfO#H!_w;)JvQA=D>59cXDijB(?} zIYzHHBIKC^O!7}cBxMlE><$WZ2(oie5S^65O$uos=FN_KIlYL@8M$f6#kNAw8` z1FI7a&20*uc7P^(d(qUQ|2l(wyZ1CBKVP7zC_iuruMJvS*;G^%C5EU3ZuFK?8@?GT zi#bYWJGi$ML0n$@yIS+y7TopAC$M_?)*w>fDs|O)$KlMGvoUl?sTx2`XU&`lyJ9ZA zY9jr$jR3AOgu)UQ_3037!ghH84*is7pNe+c)OyZRUx2}Nj_L#R&cSz8ytFtvZXue- zRoNV#R6h7THhzvi%8SAS!|rPkdGBA<`)c9xAq<{#cZB$G(O+6#FloY}(1is9mNa;{ zs2~q-I%y_OTQVg$3iP9!p2Q>1ZNR~`+i-OAZVZ_`8lx7@K>4Vl!F9Qa^pcRVPZ(mD zOY{vTM>qsIZAtV&U*g>utp1{K^iQAC7kc-{8-1niVEEez2M!#-M?d;e+;PVpf&a&k zUvnBhcGaoD2M#)J+rgHn^j&7^RcYi7pMBFkPNuW;vI#5Jq>|N{f+?G&3)5d$CvdRs zcCqQF@MzxUuWnagID0TlP3p#u9UH_qHa6mh8*ac?zVa39-MbreXVl^!-hU!ysW0xj zpX`x2og6c@Ab#?AwQIGIH;3}A1 z6LAzq6HBY0mJQh#8q9k7;+7%zmh8vrivXYp7(5fV&V+MWrI7=0h%lr}HgFi07u>)26%%_p;A zXX*w@zX?M)A}=hx8Md}xU%?d=^{vt|tnii&W_n=i)27oLwTTesoh zp#uT3vhpJJ@oWl)3>iZFCVKFcmtoG_xp->Di#YD|OI7}296h`b9qr8+KYl#^8X?bB zFy>B}G#(@_ER!6~BLK}Kg|S*r&0ewLDBfux2t$&62QVhu(xfe+DN^nlXM6+_Njc#- zlXrH4$yD(Rr17-2@lT%`4Z6CZCZfH8j2t@L8eGj>Qd|&h@f<#^JlLtFoy5aHkv;i0 zT2vAv7g>EHmdr!BC`DdD4u*^>L{6UB zTd;m@HSt>Bg+)DQuyDoFu8#@VR#|pBm~>A4&^$bLSc;!jVa~G;ZdQ;Ue0E!4064gI z;@UuX;P~3ve2(NA{?H$v#JuXG-P9;t8w?+4Q)4AsOBhRt^_O9Eu9_aopSq zSTJi0)@|93@Bj93-1f*TIIwyPj%?h8+G%4k?&SF>t}ahX3(2)SqFn{ifJ=8=5zKob>mR0iHBlrs=P%xAp6)CiYs0kLRgc-vui74r z?Rv7OjmUT1bywi$>X~PrL49o@KJmU|aqOI7s46ccUpvVpg&pz8WSeVLM`>~z)T3b~ zlP;~=CV7CWib5=&HypRz`wC7!VM^dz)Nb$C#e=X(Nvv7|u>*EQ93Z01;oOLj%>=qj z%c3-ZJ#=?z8dQ zaUQypYIFPte>u={91h{)ao~`AHow`k2zmrb`XpFp)9cWNjQlZO+-$>shuPg;SvK1> zD47H12rXf3L2wBeIlHA`)D1qU^2WTZMtare%dKBj!80T7uGwYPiU3w@<|iWcbiWHY$n%Z<3GJ) z9$sB{2zNgGGCuRkhm;+mQ}t;cv%`)F5`R`GEGWde%2;;%lErv+)vMUBaT5+5IfDAS z8k}?1X_z*3Iz|ku59TBD=gdMDH~E65eb%h0_|qK^p}nOEWu=v9X*{UrJiVAUZ5sX> zA==|*DobiaGI>FmohHdGTk+O83qcIYc&1y)o%9&5IS}Zdz9^sJ+??_jLV7}D7IpG& z5hX30alNFuj11aBS}wDbCXndqk!V(nLtVbHu_H)ZyWwEqM{8(JN#NCAE23QOFg`bj zR>x5Z>0Crabfoe6Z`Y;+xba)}Vdaw>gLv(y=bFn-z{jpU9X&^K(b?LI;<7x{jVnZc zk!v}%kAb9g(AMKs5RCXRzgY*FQO*xPYp0H|U zVACeNc?9_OuvK%`aKp6+to(xMC*SaA!ZnYDa`eChkBf(cGsN0od-G-aJZT-JQy-3h zsBS7yhU#OcjKGh+^j3WA>QnK#@7#fhp4)(ZuWZDj_1iIg{uGQpehvysi+LW9>EbNj zksuNZC`M^Ggb)5zKY96{S|@rejq2&{#i6~8IA+me6c-m`F#P?7mX;R0?QL(vV~;%+ zd_DX8Kc0gRTybJB{?K6S3{HOnt}OWUtML5#^6?=aSLg?kI4+eBb54@#g)Er`Th`4d zFfhID%VX1{Lqk&=)^6GtJZs0M?|=XMal;M23w+pJa?S)?e!+B9>Kl>igqTj2?M|^< znapKU`Hy;25^5sZY(}#bkGXHG%qGIu8MH0 z7n2#zCBpi^rvePOdF{?b4q-1MUtnj+f|re{!9XH?9lE ze_65&Qg`FHv;jDM4qns#)$@+s`da{+A;^5wrbKWTq^Om7Bx2cY3eCk^UWY<^%L#A-;Hb{1HQF??R z^oMZc8_2XTt;0uJgFjv8jav=}w?7Tl%BQ3NWqPuzf>ubJ>WvM7GQxFW*HPT{t0(dF zU9X^{tqY|^g}C6jxp?czi!pIb4LbIRM}(?|6`*!>A?%RCmTVdzG0-7|8&2YUwmLUk zpALUv2>}@W2&7X#u6rO(j7^a)gt`%6w z!m5{<=9crlbL}lGnq)>%6oL4(aNTnlr?x!_s7OdVf`8^8I^ z;F!=?etJJ1e_=CrKC=pYUfO{A*^@A8!88;PtqPB<7?XgwpSTtxElt11Mgwq3p-2g^ zJ}B6s`EU!4>}kZJMT-WH5dIwp?Xdmb?|ye+ys9WG!iV2}GCuhBlY(7XI{0)Y!0T67 zc>(F<>rb}9;N$d4m`;6i*&}#d&Nf!ra>Udf-teh^EA>4A^8-huFr=yjgh2dw>05mz5Mhr&$31aYG8vrpbq&%OlbMEpj#v z4!$(!CQf}k^<&d~?~5g_$S-6DEXVH)<$IBg%UX98D0$b{cAH0Ue66Gm8=DTGIKKq*=FP*P6ZgN*uw}~@ zTzl=cc=+LmgO4R2zVc*z;EI!yqX)K}aB|7Xd)B*8x0q#2XXbVu$&@u=OD_(vbn%96 z(GQHQ9iDbMTSB=!^nJyeU1}2B6(kI)=*36hbwY3(UcU3`)oPspNjwR$<~8(P`dUR0 zVojZ551spEE`Eg-;5iX9@69!@UcGhBO<~Zb`TJV8eq; zGI8|X&c=+C&X^&shUWX(z+uo14_v^%NVI8#iQBG&u>iHlObf14e*nnhbxsR;>P>-5 z0j~y=S@7X6m%K9VX6@MF`Qj#*U~!d3gbZ-3FQbWzn3BKLW1)5dQik`p?G4H54hs2HNKg9)ngp zox?$OT%05r_>=@;kuZ>c4bz%iI`QBC^BndZ7Wmv3{|$5JFF{8~J9h1ALT+9m+B$nt zQiQ+Z(4P(gDoV>RapG9)-L)BgUEMf%a64wsoQR5w3j8%fo=AMK0O{@~s${~S#J80I zxh`H3B^2gOZx@s#+GLt|l9C*Um8P#MLs$$wCX6V1 z2*Tj2Fg_Ig6AuS?ZQTX!}D#;f9@eAL#IqO>>;Tzq z>5I!4CcycY>Tj45q-6&_Ot^jE_I=!jF8?FKYa3y09CjTze$j^Lt1nuN^G}+I`=45e z-`=$xFRtDd?8Z8KPDUyYkhI`r{QU*(kngtW9-)P%!xeOE*+f!{v#sEPv$vpo~)L4<0p=*#>nBNc<{*$m^OZB zaD;(O4AB=KhqfCRp7B?bADcIB|XDPk|vF<#Yf(G5z;EnL}Y*>cdKe z3EMw1xb(RTL9T2TPIzeGV8l_qrlMoQ^UI zS~xhIRJTd1-E2IztWuinayEZi{3$tpwfmog4-8cP^VB$BS)u>JXs^T3~@eO$4 zb9(Cm+2ur?83gi57KPCllC*0HJi-v+Z5t_L2+Ma1^@EW#qa*?Ysu%&&&k~_EE^S*~ z39rex4zV9ETZR(&mOA3jryGjXfT>cSLRBOY7gTVaEPH_WlDzp7Wg_ijtF+_^0=)2w)3Nx8 zXYe1tcmRL8_sQgZti5YCp=D4%j5uQ&x@Jy@{I?#_+%*PvMxEOU;NTIU=TwT(R6d2B zg}nH_z1dc=k}Bmr`oBJ!RO{ET-(R;6{y&)FgW5mzp$}ornl;G_kk7vJ+Gqmxtn|z) z1FP7*6w5?EWBsN@dAu+szR2rHJ{dl%%J)U?=RUroE`_lQENxB356`tM@xxFcmA0pu|1m1dUEw1+;q#DXxvwWnNtU0+Qfkv)V~?E@#iJ!q7$`W zk$N@3cP;a64^JwCT)tL;wMrhrV@bok-By5Z=Wub_fIh`tTvE)VFz#>s!s<_VugBx7 z_T#Hx|28H}nw~@N*}WqX6F~-s@MMU5!0H)z2hy4X zqZ{0SEh{$Tz8~L@%};KQUfo(;HGd{P_3G|MPHy*)jsZEuU-WYlBiV1t1j295P5|NM0p zN8{h-MuQ;(Dxcz36N}Y@Mh(D2w>^R}BgSF+^y&C(`rn^UojQfDe)X$(-}~N&&6_tz z1JgEq{o~i;rB}^Owhd~2Z%cl)I0=N~7{Auysm70cZB+bOpDV>7DVdUTt$ta24#|qb zEPHAzzVoX^INp5{*FS$6Mh(xF)$<6$ILOa`;^kVT5;$~FO7!?YK-ZFVO@9j>;sb{7 zx_>=dqCxqrDZ`Q)@gTRDA1HV;gf(LbK4xg{SPR7$2NgE*L#eYB@x});(SzI>vqs^b z2iHX}8Ma~m?4il_+k%HOFQR3PVNq66Z>@NZk>GWi`*bBcF;&2aa6-VD-m9{rc_BF< zP~Z5lPL^hup`Q%_z0ZPHIhsW!fk@WGf-|bnjVcnU*cJ_6Nzq_ z-4Yx|q91C%hLh`@^C zeI3}m?J(|sU?UbU-+_GxjwjF!4YkS97sVm)sFG)`{hIvvwbE|&m($j4o|cpPM)FN7 z&@XGRM32@j{_Q__0{``kCvnXSUWrRCyV`-i|K3G7e0Vpme9rR|-i~+oqF-yh{!&`Z z4$0G030J0*>eKoS8}a+!-;QC!CSc<;596Khd}s2(n!iMkh3 z!yC|lM1$NfLhqtMbp~lGVUh2l)Ln#u$JHWdTdAry86ne;HHo)wfqpQ2JhC@Z6#!LE zarsP4nmPc3J8Ll@n#ekM6xg{BIC7#wHQqj$oH8mSuz@ux2H^jEv!UeN*{t_~|pd@QXhz#dTNALQ^y`Z|TZ(%8@O?SFY9cMQXMq zAhEn$MCpABZy1}Fuv*!IOKu>&T9`OS17$UPhP0XtIU?XOukJ zk3z>MJfj5tqCn_gTS2bA^TOvBQ0+oIZ_LU#a#E6x2`ur&0w4V?p(Dze)ZsF7L_l!n z=Y9hE)-EZP!EkwSo&g9wr;}aUZX@6j`0{L<+k!yGLZlswYiL(1uIg&TW#^5-)*Xki z^vRw0!|iKvB6_J3zfhSuWe~=V?nGNlz55a&P4N*nNp6i1BuI3Z>jXu6vpjXnFqeZQ zZ{AQMN5|hJpRw>i#sR2X5k=m3zGTC0ioYOv@MsOrI>-I;UvFjP$=s&!{ zk-4i6`ta{ggyiifc`p0bp-E};FdGU*@XD-k1wqf&p-RJ#B`dJ9iAGpEVxC zCk;XW=mD#>3D~?Vp3Jh*n;MV@y9}|S#gxsOT7!N=IQcDR3PK8M=g4MLy{A3?TEh^VV&Q{Z@W7G{xcIDz`M8UQu2?6QzSy(r2*nZ^r)LAkRVv#LO+K6w zI4-!cm6ZrKA7c_a?BQkN*unVN+b_pQzx>DKu;i;Q9$WchEZ2{<0>$i};-#rdomn94 zu^~Ir62+&`&dRxrJgEwGEQhradtqnGU7GLMmQi?SX}$MQve650+AA-^cG z;XELv^jYjgG{Lg&nf*9+{A6;DWBh`mvQpI&_PCEzHmOZ={*1`0 z97lxqs&P}GC!JaC*(~#OhbHHV;-JYS=aF^x9~4bgjdM!6PaMaJC)eQxfAfMug%L0N z5BH#@;W*mk!Tz&~^-}tC;VH*kTT_#?W7n>Y7%^hRU+fEnajKJ9f*Y)CWxyeegHMc* zK#-qfL=A(UndKUC<*w*Zi`IF>F}60rpfhh#Ec^AA0FEm^*1q8!(`QH@?` zEpST*th=;B6E&e^7&k@;zHaDedQx#ptDgL?=$R7U+}iH7%e!CCl)&>Y5XwEJEz#6u zA%$NGFY{ecmqM`2j}LE3>d0Zb(46sdi)+^hTz&!lpm{hrfk_~=@E|F;j}-bdG9)dNps&EoYKJZb>uTs#%y=ZwOL zfi2PGmFe3TOY+cV&^DkI8=u^Yg9i`(bpq>uVT$|Eg$ozr9q)JtmM>qPEd77WOV7tA z-|-wY)>l^4`4dl}_@k}z^iR0c&dYP}-I4->>ko#NXH=-?%CSK5Dfe3Uc?qW+KdA&H zT2h>Z!)MWZ?LT-F4=>x0#9;7T0dT#=GLgW^|HYnlZaJ09{#z$cA6c?}O zrjgN`{j=u}!_WV)6!T|{L`QpN^3G;&<0;N!xK_cK+zZ+w>>7f{qfW|PEVNxI!Sw#z z`Q!117oUZ%|M>o7rQEbh10xi?=L_}FT$ZeyHo%z#A^8ps{wwK<)hUF>>Pr05dkcN? zsv0|V{nztI$x--fj9hFS2O;O+MbQ>3wF@r(q>c2R@ts`q_HemqJ^_e6XOy<9z7BXk zC?>(%|vWR~0$z zS)Z1Z6nQ`b=j~PM}g%ef#du3A4?{w+^8Gx9;i(wt~PEv zgnJ&`h$BaPFmKjSOr1EO@+Dny(w6hj`K3IY0MA4i77E^w%}8-bi4PvEWid&!H#a}- z<96&kjKPDuP+#xvb~tkMFm~_Rj0qDbIQge~d$Dcb@#MO__0M%4mcjo_^4s4VZzaR2 z=mq&MoOaqgw6wI~FO}*5zQra@ss8fs$T)9`EZjFMG?CR6SqEULVHA!?)b7&A=p-w* zsF77_7{_K(2e6D!OL+vuHxs5XI@*qu`<%0EDSB@vD{on3(VBuaGU(3YWv|8NCpO{H z-#&^X`wpXDTPt31>6y6x!ZU?~+)U0(`=DA39MPEf87>4Iz6<*9K)kGLAZ(I)(u0mI z4H-hTA!Yu(8#HZc*Mm~}6dT0uLV~F#R7v%LV7KBWt`|vKVO-XOlj>+)LI@_Lqs*=V z*S=^QI9!ER_#v3{1p%jI>ww&TNq-?78;4V!rktqPRB%Z8a@$$Ru776>o_EPCTzT#^ ztXjVV-~9P~xOw3d*tT{jwy)oXjsb0$e(og9yl^tm)}Auv#-4%|l25MdqK@>?;X^ob zJ~T8HZPx()+)mDtkvnt)hbQ+~5dxgn&uGT06JC7H9IV~A8~^s5NAVBuJR2j2 zbud{7@s`TPl4}oy$lkJgxlCz3<5%!(FW&;PRaWB}oCayDxBVwXLrSU=i@H^92jljh z*&~&`L^)mX#SF)^d0TW0~Kp6O^1MLvTy>&YaHj z`V40tD|mfwe}EoodAu?Kz7)Qt*r5VRdQF1zCB^}=+XU{HEY&i^q7*mOdypBnqH!!;xwL$O;Ulng3S(r&+_sw z`hgBg3&V`BYM9X(5)g}Xxh$bk)HaqoW!eTWU=ko{rq_8RSQ$21WN)3_;7~a@)a1C5 zL03NbN;exa|D@-79oc^rOQScE8<#$l9Kt(u>{Rl$1&MsKJHt$QylRSdQ6+*Xr8e2Vt^t0A5QmAsBy-x-5%|hSUW|9V@*@21u4VYaZy(0S?fdcIO^;#u!ly9t z^wF4e*>nsV(Z8~Xo+r9BI=ez;IHX_M~eH;JMX+RIqz!GqD9I13A3k+ zNWL_9!TbrxKDxr~mT$}MOMH@&RM#K!Ro~Z0G2DgF%li^r%i4t!eyfRpA-)zaUW1b- zPoZl_Te2d_MP!PH3FizEiV;Z7T zdk_oejE*L?YT(Q$@f9K@KifK(m61?J#+XRf%qJ6FZs@Owm2zbGP36as7pqN;4S4^X zF2R-^2l2JF;zp|DwN*bBBHM=LaMC&*sundRas}_9o zdQ{)MjPd8)m+;~smSjm}D4yxW_{-%3_%;chjxB48#8X)vsqH3E&T&X`W;*fw+A6q8 zqMP<2OteD@%*ZB@>qetbc<`=iIUwp>G{t}&IcA{wnTD?#{Ym&K4l0kdp40~K8CBzz z@aDv0%9n+_Ro5{4DawlQEc;1AeGMj$izc$h^(PR_-}1>*Cj!IMgU7Do-+4P|pGM&L z&MLx+AYg$m0x%q>#G~8BAwkFingm{yZ{WHK+gM&avGFiEDUBqicblsbLD60G`>3_adQ}hGbq>b?y zuwrMNcBYvHuya{5Ty&jAp>E?3I#NoRf03NDhRLY|bR`sl%zY_!B02%)%zCFVeg*)~|2yfSJiHSC^a%F06Bq7h(e2olvr;Ehm6g0o6JFgh01bs-#A zW*bu5{H~|iSZ5flU(bm0GY&rE(9!six+Cjwc`_#6L~(s+y_e zhu{ORzZ{Ex`d)nTgD=GVnWJ&?Xg8MLxe`D6#BcG3Z`_S7Pi;rfiIYA8D__UUeB()w zzo!5D)7Gt9@qrJ#KRI;&{`>DwCO6;uvh(rlfBRcpaK^;6U**Z zr#%Sw3Ck#3hEeNlIE>UsmGw3JT56|--cLw;a2TV|;r)QrhsB@KzGKm<IfQ_NTzVjy^c1=dg36atUwHK-tc(Wof4Fl6tcSV+pR6HF zSI}p5LzqE^c8L@$iT{jcV-!{?56LR9%9&Yh%?p(*N`1TfRSu3=(!9= z(mT_SF*5F|Y~CvLI4>c6Yi$rf#T$wLG|vkBSxVPK3{QWVe8kwzV+AR*92dtS*-}B* z|JWP1KP&J9J>LpGO?gU+jf~GyU`vX#*sIu(WB=C2>+oO#E^55n_=~m&_in~7e)`LN z%pK1K?A^N^{X09O7s|C7GMqYPla*N8_8dXa$y3l%s4od6^WQ9Y)1f1W@%YlkXl`yo zTU#4OjT(i&WU4FrgG~9%f%3tEMRu@R<-Q2wxsJ)iRmF~}vBz0-MHb6QhmCyMgA zp8QNL12P^d4sWNc!qT?56K&~_r7OM)zUV|=-nNvGrH*W<4;D_{bF3SW|8Xf+FItV7 z$d2bs7=^c8dkM~%I*zm8wmHJl&{B(`6Pl9M6B(rDibY`YFp1Z+l}y{DOh0#|;Kl~& z7=acbcNKlPr~H@zEep8|km^ggT^KH3e|x3$1uav8o5FBC@MOd`_$!+VTGpwn(e&Hu z!btqMt2@Hmgxq?RKj}WB=KDR37)HfUAE#ZeC4IV7G8~#uAb<}HlNI4BI3?}+ux%|( zc>Uj;jh9_BFM1$ejc@<*0X*>7I;>i>25XmWz_?kXF#kETF=YIpWa2ADjv^qT=%@cW zclCdLI&tDevg+!+?|pCdR%>N)AojFqGV@dKcrGqKXKM72oo(o^B-hHzw{~ao0_2+a zsnysfP+g2JaQb0{=eVhXE&|H_0OM{ ztUSoAhs#%5+0QLl(y3FR_htng>y5nwy9r#bKU+dau_bTSlVoe5Xrr}*l9uRjzN9j( zoQ@j=8!eRV=4k#0lxj(a{3}} zE1=_XFBECH{f1J=*R=La^+N5F?j<@}Ur=p3jElx9q_nM!p4=^wz1AMd{yDs$TN+QC z6=5OUN%NEWhO`bD&${$^X4baU=B?JJX*S9D;45l16_Na|L9KY{wbSt9-+m8Aj~>QL zUiM-P9N2{&JGNrr;E_;Q!sbn|I1s(CJ|4Y58PMK~Fo5x@@xU)g<# zE>Bt)E7jp;5`IlrTyJHz=kw*qAqgj^9mkK!;ioCA6|l)lZLS^gYGw5wOBzDhm-2?KE$Ft4$*tg6Tf#?QKPE(2L;B( z??xi6zc30mDgIFiEiOtv8>b)t{t?{vz$y$G*n(HTcoy1Q8x#(zZ84XyR5yK4@XDq7 zEJ_+Jq5)o{G!lMU!ZF%W!#Z&L{p-=)(~AXjMv-x#d+daV!g=tZmQR~m;XN*{F+Od9 zrJ}ip(IUKb4Qj*Wv4ioQpD#|n*fn+Hz!aY(1Fe^lbRp?4q}NbyBH?8(Ry`d_J*5N- zghv9LKS1w=CA*g7qeL`OktSfXnSL}`bKW`sK)zbZaK8RKqbqz0#^u z+emvq@fXxRltS+HHsrim!|}sa%T#Dc8Tzk>1q(fV^ZU=U3-iy_X*JIsd8HXOohU;8=?7%%{TP5<|#{rmUh3t#vG-v0KtCud#7=ObQq z{&f8NM_+=!x%@P=HaB>6WWUvYo%;o?XT91!4m~Cs51-7NRF~5aK2mz|S?X8ZJUPx5 z_eG9@?uSzR(0GbdynXQRzw|q7-FX1>=M2MD7mZ848tK-QdK8M$FzmEUf|YP+8rPy( z$pandnU<-+%b=;LHkn-d@r}!H&BfEv-quu9OUHQ`4r>^ybo^zrRZ?lwa?;t@H03>i zZJIV;?DMj+7>^}%(!81!`S7j|w6!+jKYsEE#*gWjoNHp#?I?h5iQKX!Yt!`2@#caP zXr!_*A)C?iDBlKhkI3pdw!!%=#`xi$nb%ct=>`U94|M9p0|ea9#>ZF`Qy(mif>*kx zylZfpZX|e4x7waT8-bd@uL>7d;It+j>|`Y8l0(1ZOnvL>Qf&F19pUTEjIOQl2q<{Lpbc^6Q7O`hlm>8yVa4 z&pr+R@QQ0OY2;AURxxv0*I+PYY*Vs*Ff^3#+m|zi;wy1*ex+fNBrBuT4dLTBixqor z9VtmPcr7WENnIGH>toV+;9Zy`2dR!GPg;+^6D`B5>D!f+Pmy{F=M&5;c^fjE8gEAU z)xw_Z<9);Bb_23LG@RN{fa3>zJ%olfM!;)I_|yE>cz<2Kcs?NT6~&T4{aSI!nN#rG z3umGudMI4IZYOr{IDieyHe>a}>#={=Av8z%t)0zS`{)J?Y8ntEw7Z+Q!T`O9Bo-@bhqJfIE#_^xa5!8crvvBL)?6Cc{J3kb&#K#Gq#4$Xf| zfKKSzinQGr#CZ+JyRg4W^=RV#n=OIU`T#9PWogs)efZSZ{+Q%nbLj-knmRZI2unt6 zp&@XF*MWl125?h2o{WIU1aL#(!Ea-%^Pyd>Shi{xHf=qK^B0UyS4*XBB3~jj>3wBv zW{}PMnRJ|$t=LLxr|cLa+sb7HCfj{NMUdg6lUH=Ez&Ii@m@;lKni}izmG3@?31j;w zlURBCjHbJyKnI=$dA9ME~-*ktK;%$ z0^w*P!GwH@U$fuT=G?j*hL&^LQ~V^qs?|?mWl-9|@dL8_Bw1>8Exd_4Bgn?XL+NOK zppE7vexy+yzt{ZJl+fUHsqcr9WTRHer{$z>UStG*!1xaNX&IjYLb1zewjtR9ufuU$ z8D7NAV@ycq2C^=2tuzR$yK33gxJ<4!f;&@$N3n*;}uE|##HfuJ{ z?M3R=eVdYHA>mYptxmbdTMyO>s{}{XFl^8Y~H*Xoo$VH z-bJ(U%}>4zm!35RjScmlElU2aJ&I`gS}M0styXpYjZtgs_Y&@E{Gu$zmX%4g`U3Zh zTbJVIg-=G4%8hvKOJ_ws*@*I}MDuwBH3XDI8RwqVHIj8`4}V%>Ez4<1{FG}y9%v64 z)PisSWC<=fV*eNp0i&WGd8@FOmf3>We3e%UZu93T zODa|_;|b(x6Nlo!p%eJQua{!V_yHI=pc(#JM@469kDmTn z3WWv3&v2WN{m~@E7*Y1@KDRZX-2OG2g2J0*8ydV7c$Z*|@Xw+;JJ9mAQK2M56W|Gu z^&g@qw9A>TmwZa1FYzYG&|A>K%0>Ppe9{vU=T(E{`I>$Rj0dLpvBOWbsX!d}XN#8X zzzbgVDh%!#maMdY=%EKNW$H}KIc+{hjT(WU{^-9jcFbrD7}Uik&D_*;(&F&(lh}8t z8{Iu8lNU3^_Ch1K)4P`L`;shfyW>v$>}S8i-@WP_Op0Fi#K&Gd@6zcQIkXe^EP4_@ z`pGY_Y15`;HC9JQ2mU8g?d&UOe}Zm1D;_9`@`w*q3XL-;NGqg8g|O&qD&N^mQJyUo zPmO~P5G<)9Jru{+?&0vHgsqs$+eRm&jAWd`>a&~!5H3vem4U4*x8Q-FJb(k+4`BG9 ze)z-<&%@>OW~58~AYyV_5Y3SdozRS?_FCq8#b55GQdiE)Gaez(4w*TH)9_2zR6kOg zRFCo_g>|W(1RJX3nIPoQ=eO16ly`+LjPcq8fnV3UIS)paFBD!SJetm`%>%*f=leDp z>gqH+mHLKxxGp!%KKpWCmNYw|&|#^5b8>N#i_le5$Bvf9xuA`bj+JR z8b_nIG&^=5!uCyjacJKW?2X=*)Ya8t+_-UQZROix{+j-$Q#@chl~nCbEV;=bPt4wK~j8>a->!VQI|zh%84y*2?HQaz4evKGc&)VBVeP1v~gARb?_1Lw^jhsOF^WaCJ~C!n%l z(*DXz#nfuqxXwN7J%b0hJm?CqqBI-hnq17;WqeT^Js8A3`plMn_}v{(C0~{7>}U|$ z&-lvA_^5%k)6p><%W{2iyxP5~@;9R^;g)o56gm`!)|c$HtT#0RP55<;(iUe$2gMoU zTT2pufW8`xM=hx>N}1vOB0x)yqHa0oi}Mo76Z9teCPFsI^OacQRI$+Ua{8KmNVXKP zBav6>-YUFsek5Kv9!W2febSf`dV1k{)2>Ngt`f<9Lbe2y%LuGKZ<}NffTvSa);8%^ zq3_@V{Fn@ZN1lfOtl}G_Kj`j0g}WczjI%GeBALL7OEzs>gKb;4;Pkm?plir*^mO;& zcQ@UH?h{AQl8(_&96yc|-N#WA%_Y>CD&a9+l~rRx zwx!)yn`|_Rb`oFz)_-EthBe9RtK_JQNIZ4X3-Vc0hGX8Wk=V88Ab$IYyKw&li;|UC zBS((>v#-WV4skch$Bd<|f8>pqtvqVhpeAnwot??QpOmWX0qA;jp`=7iXgHI== z!;$mr(2TkYFoE%O%8MK-@pG~S7iMUr}za&yyEIT?|BbC@PQ8`=Ug2-b_`R-4Z%OX z?*;hO-#s@upg(!pk=EfKs*aOyokhMB%P6!oT;p~x)${ZHb1$_R7UDso!+l!wSuP39 zf57TVw4{6x9)M5`GajC&*6+k;zj;gYR`g}hpN?sh2BEr0r+L1lT_gPCEdzWlY0{Ar zZ?%SBvOKPl3QTO@@m9iL-n=r|nm2CLpmeMTXDC^qppqsO4YOE7exg6wd0F|KSYDbv z%$S^B!nrZ|mcj}IDNOSlqRF-ylZRr((>rnVU8^yBS{K^e(n&0j8KOG_=oaM5h_*H7 z)srm|m?NjMo-agOYJ*YkHBa+B#D_Ok(gdp$g5xrTfCD9El1~wPap0v96T@c=B;ERW zn7ugplrKh462I3DAk3>(Pz2hgj&?aM&WEP=vUnolhSCP(mm7%=$HVG6bu`=pzlQ5a zQ<5pUm&(d)h{ACAfF8vad<3Vu!VhqL1FR09>dHvAA=wqG$dl+u_7t)$X0J)M6f2~@ zl-i7hzu+_eh{;`xHe>!-mtg475irq2PEU`)?YG{A1!taxmX;Qb8$U5B8-zz5S%mu* z-idqex-0s38}7U39_-k@855^Wjrt=0Ow^c8cQh9fugW?U%|jeMb}~6*D?S81n=h*V zg|!ynU3qNWv?+QK`)OQx-gsPd@wCc0pQPHbu1=gYZ*0`>8{Bp8WBARDH=&`SAvxgv z&v}eVGJ%x|-W54fW;z<+>qCk=>*Q4QX!y9zr7V&GQxeoA@%4#tif~9 zP%_Fdz1GZ7a>J}14v_{rX_2h7mAR&b3}mN{ohqaGj3j#NJo38Y%iQI3v}ium!Gu9ZlH1_bC2!&l)`E z;^|S$sq;l++`4%&Q+%-lCL0@q4c#&z%BRd`HngnJO6kUVL^SQKjW}cWDBQpJ8Qk;W zGng~I3#~2nLR-OPEc9L;58Oi}FXHgpgINeSud7WUFa|>tGE85xeH+4t)|+!0fb8K4 zesxp_x6EjAhJs%jttfKx;8=SM=LMupYA1v?2yGJKB|cbPPZl9uQ1J6CNq1246k9aR zu8r2V?AIt|60G(s#b5~+P+jj>rXPtmlsX!38eXfENlz9UKM?q{B|Mpucp#P0UxLTW z=e&UN5wiabE`%pkm-{H2BQP5OMP6?-nRNdnn=x|iG)$N{HOU<~Z~)e=S%!lL4r21u zXc8#iYCmiQ&N}-7%sG8NrcIxY^Ul8jv*(BN&eL6sv0C{X^S z(0nbNX>?q8qqYGIpTv{)t6i5R_bZfsn`jxJ<1`4jg+6#vcrCosx^9_)#8b#-bX;t2bcj(#LV*Z-0xsqBlM9giCzrV*DoPuj$#Rc*RvbG5ER9 zeGZ@e2_%LM=GsF{5)r?XqnR782w+F-EJ&{|7NYM)R!ZN*#2jrKWGYPjWT#dUIt;gvzvPrCrmLLoM z&?8#7&|4UK!EJ&5N^%cH2o0X_WK0Ra5O^uGWod+~C5=BL%zt^FW(Qg?VZomx!!{bS3&|EjshTzc@?^A8 z+5@1ZN7QAf@aEZC$d{xtAZ#mEv5yKZzMIPB0|MXN@3KBB{a2M8lWXS%Nm<;WIJkd? z^v(4r;elMA%nkT_6g1*z{58+)$L4LPaQ;OXCwaAXb(lD5B7Xk!A4CJkT8y1A0oi;* zOG_&T3>=J(&i={o%-OR`C$GE|^`-Gwk$X;A9P2)XqbE*b|B)W-J#-@a*NsDmPbB(n zX-xaDDpLIA!GHbtujAYQ@m>7=TQ0?=QGb~43e03|;k*zUIjkS9y>xoArSLbuzX!kl z?M=y+!U+>5{I@5uYG+?H`x9;;XUZ~0bejrmt|RmEtcJI)!Vp@-0E}BmcmQO>DlV-p z1|0=tc6NfzC#&*bWU$#;T^S#S)&`fy(S1j7|Bvs-`bXDeP)8d+{IYBC!gJ@LzP48E zGDY=7fc4Ea7&fsfc>|v*8lFU*Cg#6oT?~~Y$5mZj{kP!3RE5(rcr66!!y6wu6ncz; zlb6%52!Wm-GL0H`rF2H@~?u?Nb8oj-(49PeTY!qM!s?6R@(OcQ{#(3;0RuIFcV?mqYHwFG;0FGoeR)#8G zHFnP2vAFl)4Y+I32F#u@1Z~MAR>&i@k%tM?;q}U_*#v0vaw*~fzU@Kg(}egAc`&7| z$&0{c_e6dXd#QSA;TG(x`?60&faqtA?xgx<{2ErB z^T+YIyciKD0QJd*%NLOOudXL|?@4{J&Ga6D`izgh#2H#oyqE0JBoj&d_8rF^(aVo( zu6U%rjA6Uyo;-k`-8mo{L~z44wihS!p zRs>}7vh+MH!!gm|U$j@IXT3JWSBG{V!lIu%fbCCj$MAvu@Tu2ahYMy;5g+mlC=Iu~ zw%%Z9GCClneqeyE`u%O)5q`gMd6_E!r?Vp08sfiDD+7mdgV40aGb703j&`K zUp_xRjAj$G4B)hlh+mR@nGI&i26)u$iQ|KqXH*{qWSPd>3onc&R96klxRP=VH z8(X&R!DEjv$FF|%tK_V#ZQHhCNHmev(b@Um>SX?3Oz|Y&;lqb<&pr3xv!DGeKK8MX z;io_S37&aoW3umm;;6xR#|; zgwar9JhnKH z)*wHyy*R7Nx;(_yh(Zn7(!f&;79ZUq`ejZsJD;^^LPuK@=BL{U?_azTGp7zxwi61n z$ti34gHXnkQHmrT@_VW`Y1E^QgaW*Xc~-e+HfJ<6hVd%-0-i;lHp<~6Pr@UWpV9F1 z2?I%nR0dWl=R9z7n!v2!i+~(2H2ceRLg9g+{&YsGxYzO|dZAG-Adlp#^*0E4q>kZs z!f9~a6rYqY$yH0CHc0tpe#dch`!+&d3X4FVrgMR|3Hc!UK#Swi{N12@;vLF0^@*}N zg-qj~G;de*Fc>hodqamWtPAe~Qdl z7WL6&*YrulaN6|YkxaJY#^2qFJ$v@zw9`&YwiG^_WN!G<4OuV2%qZ@e2t4Kd3x89guoW##!YaI)x;vFqSUgzGfe!Ao(*Y5%tUxc^7@ zV(*rHm@r~6KKHs8VbX{pq^%w)F~umm#x`f z@NsN@1aNh0gLq_qB^gr6Jdfr}@F84fHYMeU{LreneH}x==R?Xl8V;AXKj|K7H_boQ z+l$p3cH)i)SL640KY`^@2Xpx7addQaV*2#yxccg=apjd)V#<^$=!_<`{{Jz>+bp+l z-=1s{y#4muap#?PV&%$}IC=79(pL=X*Ah(%PQoj$U4XM@kBJ5$#g=j@M$-Fdo3yy7 z=|4obtgNqf!mzHLR~Mi4cwG%`%@=^Mzex2d%;xR;aLH@Gg6+Ex;`--L!<%1u8ld)y z5U4}og23eCD-9;gwk7m9T@!}ORiyC=gtQaVKVvnceu*S8m0=0|)WmH!ncf!1&8innzS)f#7c8 z-e^n;eTIWmOukO}5gvVy1g69ewVqYzVLdz=4{1HoN8I+wbP>R>MbHp`iqUekS%&lM zR1I$ee~wc~`~cw*K*%{z1wNV&i2D3*(Pa2@KhUB#&l7OuFdF|MK0-Z6HP_YlK#~Ea z_o|N}>@fp7?<|y>3y*hp?)eqr?0t1^y4DG~)XHLM7L2dZy%`5SlfBG6GPMXYk22LD57L75t;rP*mm@sJu>gxXI zUmV9{*KtGJ(9{^BWpVGKhw$akeGvcrp=&X)e+%-3PPqswb0*nse2h~KSa?Hawe;%s zyYRWM-HzMuUxSytEZ)BE_=qO3US;L41d>ZDbuIu^Ugb)22#Qmv0}Z64 z17oy`Tfso{2`*HYgiF5X;0Lk+(C!Vp@ZirL#J+9&Fk|d+eEf#zMUz)U8BITVp(y&( zKBx|Z$2NK8N()Pq7QzgnAZQh3p^wARdJ?V>eu*9ev|N1pLyF&CJ-^!aLZA(V!(|zt z63=dJ8|=Dt*|>Ol^4sfACWd$n+g7+PuLD$XV^GTEdspsdb{B%9JemLuP@QkWscZ7T zm3tRYNdFX`=7H6f@Ji*Tg#N)p$FTUxjkx>ar*YGr%kj*%y-6q@I&^3z_IdUY~9=LGfLOl53gLvqnhp=hWrexb-oLZY3v0&C1Tz1YBTzTGf zj2kf^8g$T=wUxi2*ihyJKzSUK;ywg82>57T$VViewLaq6+Mh(H@bcZ{5Z?Le8*%v9QM~t!^D(Te4RQ+gD%E%k|K&;2F`(N3Tww-z2FmSKYKKDz zayvEqe0z{4G_tPZP}->3CF z8!NMa`0Uz{e)`h;@VtOuWMJ-v0HDOhzR>evfa+z=WefjaoXp`gs@0LEYmSfeh;lf` zRzf@q0l8GRKxrKD^e)uZbRVT7M|<$Z>OHvQ-VJ!{$sOqKvC#|7@wool(=lh-aP;qJ z#>uGD`208S#G_9i$HzbYd2|gKfj?g=@g*h2KffBNPf`2KH};M{Z1OO7y!pD+6IJdsRb6;48^{rUM8vYYbM)LM(-lbT>^P2OBBEJ%4$cnZ}i>rN>Q zAa}LZxl+QKIuujqXD7NyC$`l<_kd;}nV`yqv;lF$d7> z$j3u@DC%;H?|W=^+YUY`0}?G{6oftym{G+Nh39raGAXoro+sfJNlq!SSy)9W!o9IN0V6ZjwZ2= z96yS;zkVJ@4Q+?slLnHZL_)Aus7Uk6dUOs$=>X?I7{7;TRoVM{lPzVo$LgzgFV)v% ztH?VjW2tSX9A_|s0;SQ_5k*-%aQP@-HCF}C-s&|0CK$W)UP7l!>+@v%+fuuPBFB*a zg!_`1<>Kb}H6BBLN8*_c*-@E&LB{Lhpk-S7xov28c|IW9hm=f!*ARXntdqXzOMp=) zA>}&pIZ_+99Kv0Tp25RQwqnQbqZl`85U#m+8ZJF&a&$cajrDa7`F+ut`h%bU1CE-3 zc*naxgyAE`{vUq{+!ak=4T>h%{A96r|9*Vzlb^!orCd{qwhcc&Dw3(`;F}1q;7>4^Evti3?{>!6$Bb zLGtyeY7%#yn&_qcuu09)BvxIXtA!EDpB8epum%Rpc`*upTY?K74mmH>ZOCnLsh5Rt zjR%d-zQAVJ60K@OtP3OSF~pms-)eX-(@S=b9B)B|+Y-<>S#vneX0vNR$5}4t!cMBe zBef0CySXyE)%56dSY4Z+ja^YXDB+L8YKcbr!Vlet_#;P7V9AP2`0bs`aQEUhcxKC< zrP8pA~QY+aGn#@d~R)AAK}AczxNjW!SuV zGj{IWnZE#uQ*!Rj%rSWGg)?#4*;6oPczO z#&sz5!0KpQ;DK_#;O4aY%x{hQk!$E!d5gXD1XPrdIvEI4gAgQ`aBB~id@ zhNdZ?I?YrOJ-w|>A$SC60-;E}bI&n+{%a3m`h?;5?0c_4Lw#-KJdKWSo;OA%o3Idi=+VP66U3(7UqhI_Zp5Cwn?|st(j33=eP?9#QD{dt3ruBKU zdOc}{Tvgt#(U9_as>ZvYO?2Y*Xjvb4&*cE<5ksPzS7tEMy~H!W55Xz+Ao@QPLznm| z<5j93D0BD`Wap6OwxY;HIflloYM(`!M~`1a$ty(&S00ibh3tUBR>K<*w#ATNOMVYj z=igF2ARM=ZJUuY8I@Pql%6P+R(s*wf55ZNA1z7y0>HP=0vGVEN_|rY>@#L!A=-=6b z3(lN?YcHLFc{4^PXP#zwq{WbX_aDLMzHt|pJar6jd)M1BZ~i$|Zx`(CJ%z&u_o1z0 z0BYz;sQ*S9+`k!vJDWh;ef-1;Jhpr(zWC*@VawVl@Qu&B5MxIS$Ull_ofu&9s~S(u zg6)!(%{?bi;k&q9xEQCpPvXTF z&c{2hyBsZz4d_dvO&K(%5uJnU)$kHZT1epGgu+PS%6Obreya%|5Xy>c7mvgX&nxHA zg@cO2kiXTmS;k)$(kW~xm9;0}Wlp|zut{a1?zgBHmYvS8rZYh2LBr?6y8M;ttnc=y z^F;GqPTbS}5NHdxBu$rqEFTxv<$%_f_<%r5YkxI5H0rhQFEsz;sov;q(?Kj-y%l#X zdJ2!N+KhFZc4Ke!b}5_qiC1aGpUaIqqqEOGJDK3>=;%ncB6g++!#6ZE{MkC;c!g9v zxQHjF;@|G>?qucEzJ2?W1K0QL*@IQ9Rwa{E@d5Q4Hf%^Ht9p96orl`^%PP%{^_Vht z2(CDHD$bib5i=(bk6vCh(SFyF3r(6YX|_;J{0sT1=7UgZ03p5eU;kV+-cG5kprNnS z3fs5u``j+8i9u4bD34nZaD$a~M`MG_U;kAsjck9;^e%k%1LvcywE=!hIaO)A!(lY; zc$t(mO_>rJ2;}!A;&U8vwqfiR_?ADl3;+7)(hA0#zKG~Ps`LG@7oC5*bszBpe=0HL<8l{#1BgM&!fe4o}X?#CSsI6xMIrk9!~5f(Msu!GS|PIQ#T5 zxcvMnxHy`;>KfDz=VgdWrc!YDST}zCr)Bu*&C4)(`g~k``ExLN@^rL!^b4-YI&%0B zZu-qHqluqmIDOuE7(IGqa^U-aC&d$3gF2dWy7Bn=pTG1)+;;oj$*zixYggh&Uw#Ef z4(TL)Bh-0kFAS&6w#F^bp$%m0%`N~(89`0UDV3`U-wkqeA zJC0(qsmOG;=Fx`0-4^C<-(yBf1_{#kzap4Yr>1-;JX4@_vaC0n4Sf8Mk7MP+m8gk| z-}u}M@wzL{Pqqcf?(gDuC08kH>8!($3B?u@H)P4@5@j-xC`f1iaJRNWya;xU)owEZ zxGd=33=iN-#INfnZf{{8vODc8Br0bqyt#bvts{jE)0GfhZsY2;jlDsoN!#H2lgtai zBNd%ymvFm&>(`d`r?o32Z%sx3_qH%R=R1CjvUTS{EPr|%?t17cELyrgy5FBX)X@}A zYW3^aFPX?{Yiq;QsZ*0lu0ewap{uJ4W5D*m@Sf;n>ZXkHfo#-HrXwgASdHhN7|AFuX^8Zn@=HR+g7n>Gq# zh7G{vab1``VJLzQ1w5kbDtNw32*@)ARY~ zaYfp?%432N>$xp*dG`HC^6ea+yx7v=!>hR9@ag)C4C~`wxOfeo_ttMF`R{-80zBuE z@sPAcYgQM9Y?b92tt?A#fq$*t^SXqdIMGn1b$DgbTsZEye*=DT)6@9WyRX7UXH81- zlQ+2*`6??~%{j};6cj3XZaX|_8t5V>`SE3qOV)3aB@sDd>d=uB_`+)Jk8d6&(=q_Kn1)Kp(g=H#f-4365uvCH0Gi^reZhEIL-e(c$O z7$ZlG!vz;#j9Ihip=-#HXuRBn+FExdQatwAxqS#K^IwTNEoRu-x5cx7>a^MvWR1jk$M3lS!||55IVQa+X()$v_O< z*$V0mCd=pW&KZ?)e;&!=-o@+i!T;~~ICQKA?|kPwlYjBEf|k;+5Ec$jxA9f*nv}k~ zHPH7ZHnbIe-_>LSsV(sn4O@UQL=x62;YJ8F=_EjJRv!I-{K#=U{L6>1@$rr5XlhC( zuU>lLg2*7`6#`N?@N<*LKz8p@Y&0zp7RJsqx)h1mlzOv;9Y-(5K z;j(W$$f1^USeE3lt8d|L!rG?XFfAQr)67EE}HZmrI_aCkaw&L%cdG-sit*`~GB0&C*p{@boh~ zv1P{rY~8gVhmUqA6J8D;W0DnF@!OvGU$!bMp1g`Dp5oP1@xOQ?DqGcqH_195sZQ8jV&;3PkOxSTY$3;o)g(B4*g110%0ZEv+U-4}bL_dXq0 zPu1Fx7GqsFIevs_Nw%)j;M2I(+Z*ShprYHoBr^-ChmvqtALC;Cea(k|fZyHq1jdi) z#FsyQDLUF41ngQ0^%@ezYB*K$=-{>NAyLF9SY@7F7D++s>bOrvuVDY{7f)c(qucSL zFTDbzhgaSxX9HaCn4WUO7DyIfNvez$$;i+k=rm5$w<)MVJLd8DiEe!R=MUjKKYtK6 zyl@7txNvM`RT)Q0lVhMIqY6nS945OLS7=api3!bH5XKRl&@8j{0IYbXR>;OeHf{;8 ztgYT8K%jn3FJzR}MraAX8o3E&qF;vOP1_=sWjF&i6r3Ch@hshk@-+ty@P@KptFL)N zEJP?6N${u=PUE=>d8#_oY>eYAqbIb*p$VZ5#~G511g9k<^X2#g5Vj|mcHE3@JCES5 z2R7o42cAj3DmZ(}aJ=l=)03@&13OzP@ju&nX2Pu&CsL!|!^ckHmk;j3>dgmn?9fqc z+q4baHf}|CPcPcq2V>&okr*^^IBIHZbF4>>9K_SBH(>9cT^QUoIGXI5j+HA`CogxW zPMd_;bLL0?PDfAoF?|2OzJrf^?6c7%Tlj2Rz5=Vla;3jqzG4Ngy!!e0?&tpoXU!So zPEY~Wo2(*kXVF@8vwqWFy!B(h!V{}^;?=KyH9r06Ph;4yVUSWCP+9wAvtF6;mH(Q` z=OOb6C+jn_99^Jj_iCewihX{z^Iae@IOn^50alYFtpk*Cle z>5Xy0r%PWeqve!G!!VYGg|aTfh|t-c4PvdfEq-_6u7csdP}aR5z?D(zL(vHsKSqUc ze?z)-bHiL0_~^rDVM7K`?J0~8q_)JX&YRXv^rhUDlO@-wZ!7Q`ULU7k9>PcQlvtR@M$w0mtndj(p1#ZGDKZc+zOlfHn+{{>_~}5-+}bZnE9#$gvaHd+=B? zxwU5FF09+QJNaF?emf2vJf4&vI&?5Omr6?UcAWaUTGZCpCiW07Y=~D;#oPT_q6w;w z)+Y3e1{R}-4#4nevMT-;pH&sFuxf8IF`!YOlgO~(aVe0gle zX59VI)5-PK7mbf>tC5U_jr9Kk>Q%OCO2e}8SV0+Kc%Bh{O-n=j8oy3H@nPx;9FJE@kBkc+V* z44J(0mU$KI6|JC_LZ-f$ImWroO$~VS%g%}7Q6s+b;|HP#p~HCjbu*&;I>_=Z+M)L< zq}=j)VDJQwqjT;7-0P^WxL2pwo}Cap)FybDm@G<@;ccQg1s;O!Be0hHizTw6dSLAd zZksdir48{Z@g~r5=t=rxHsi3w`Qv=h`s9~SNO^K$GI8|I_0MSwHtNA~7@kM@p*T$d zM+x1Wj8V)|vt!C*Sv^TUnr%>hKtQj_kD{d&CHX_hQ~W-MQ+R|XHz^)SfQF$pq%Q?@ zn+o`Z^W0DGC7vqjL^Muax?&e@yJtO?uiOn24Km{c*{{8HCZFJ5;0J?7i5MBhE^zBh?^fI}|)WG&yE@4j%@nsF~B1kB6X;%K2V)iQOSI3VUh;Mx6 zMfl9W--aLm_=niIaU;I{?QdiB=+PdJbrlpg=fXKeJ;7;nVusus%5jQ=4#)kjpSWDU zTB;BOF$Fk>5O{5_Oj`A#7(`?%sHm?>lPJ!aS+=-7y6-6N`R?7=vuO`Tbq&BjzV2@@ zYwQTm#r06-8%ErO&aMWu4XCe7{6X&SGO0_G4T`Dd6giCb@JiImyN*y8)8rs^FM!;Y z@N0<&m*b+8)0Xw&m_m>SPi|P#x7t;3SP!SxJ(YETJeQvCRu1p-BiWgRLl6IQpvtgI z`I5bG+S)bejnmF}^5Te6pWB30>6cGHTJ=t!aL(wL+nKG}UVNJ`+o}pkD_*L#O{>zD zV~Et&EH9pTYKkVA8l!&$`c=L(wqVv6@N^`4iLhboUhLd^C>lugB=u{fjx#4pVP#s!twx1-eJ*|cZsbAGuOwNPCD%S(KXI?Km>^A-SL(%I9{Rye z593fYIBadH$K@A{Er1Aq`B&l$(6wJp&mxsEt$A<88SWfi2FrPY!XJco1H4D6WNX$| zf$5AU0pE1PY52^)-j9F$+U@xCyRSxP{ADD{X7rm)QYD#5eg$7mewj^F!JYpAZ6jqP zYln5)Hs0G84mww6TFaCj?aA z3xx1+I1Rt=*`V?TyLNO91t;UlcYA?1a!n`6EU}pc52Yg^HgK8-%V3#Z=2eW)Ho<2t zYn$euB`bpq@`AjwOK^HlMX2(N?LT?3-e=iXz<_Q0F(T#H@1k7M+Ret6T%&&CU{ znq7I3LKf-JZEs#{oW4cSeVP-`1>OAU9<14N*gg3ux~`92bTmaTW8+DwH@@vXFpivM z*|xT}WBQEQ$-j7RW7Ues@u`ph1K#-Nx1g=9gUN#@o5+BzNzUsWJg`5)c`_Npr{IMQ zJZO+z5ypYf`phKDrqU$mOVUyF*b)7smsrokm%e>Be(;;SaqYF&;v3)i2F^I+4Ciq7 zI(5}gK2e3FQP#kj^l@2ExrBAjr*M=P`x5tSVzt zw(iaTZ3pnsFCR=MuO^HfjDLUYD=~CHr>7e$RnIB=?}c01>o9P5gQGMpg!0L@P>7Vy zP}1swwLo?!zl#Ut5F~^Jk%ux_6{cE1bH1eRND9H6Cg+htY1=0KFq+BOdi-cIHcDHx zHc9s`K0uqak=hUFGSuoyc4-xSlHEY4r@;WB@JadL(}sTC5FXw(7dNkO)%t+Wccx`u z7X=lg;IJw_IFXBDlWo0-97UUXdwhGhA}&8kw!-bn!i`6OZYMyw{j{_+V8+Cun2w=} zzT~>vwH%-PSXp4<* zaa9b!t=r3zqNUX$m&Ch(zsyoCukZ3Yct8{0^@cO>xvxBkFGPdakGGsN?e*jV zmKTaCT+TF)*_gEbQ^jin*L{hz8t=A>Jk|y(4=c%%+mVGFZ#BNDodx_oN0G^s1UWT+ z3w($Za7>qZl`;)<)DhcV+O zrA@0Ykj6)D+$iO?B05iTr80Xc20S~0^RmOvHtRtHg zi_4B4Jcb8;dVjKQaMH*j_~IL{$B04wh3?L8F+A>yvUt1d;BigSOlpnjI{e;sD~W1x zpGrc+CAliE7cynell#v=3saoFf!x(f`4SI)sPXwyy0#Q9?66X)gwL@hK(K!ux28+F zuF80IjM$}y+NZ(LaxTLPeZy$;a#`1$RyFkiUFMWWzs)8nYb)?T!(^FU%DP?S!5Ovv zeq3|Qq3~i9d|G`ic7X96@-v-(8IPuGSMF|}%de@59|><6e}L2u09GPiq{f8DLzpe{9cO1G8{bmZo7>rhY-J7e`rd|IGl4G zjZOafJ9i`pxVN>`!|0Z!S%RCmWXqzdq#3OokS!Sk z9tia`K9EcZju_sK-~4H1vf6F-)ZxjB%N&m}&e>S`1A<9$r|64^2*QbRIW#Fw`s%Z2 z7SW9%b+UZvfsBdBB<*RzMQ2UGu02Qa!{01VCa*?C?W?a3or^_nMAD6B!CATF8ItZS z^ae=YsCg3*Y=_6I5nv=7oNtbk=!ljZxG)^IfykF1Qzd@1UrFY?{UAJ-@a+^^P}|N@ zypm(z!EQXfbQ^y0yH)tfO{;Os!d-aqv6EQ0sTsQu^vBjc{jqc30BqmeA8R+(;NFM# z;Eo42@H7>s$+Nl(`Sstv2&exL`oqX){=I7FKSMgeOZVQX>N0y6DR^<2<9?bL0dT ze)k^i+OP`~M-0Y4zv0En_CX%{ih9tnyK;*7ZXeiy#@1Q|Hj|!Y14S9&hh*d2`7p+V z<1m(S?befUSi+TLvvNB^JkTjo&cDBcK%*n+qTtz<%0lWMBpQ?ohlN~Y__g?>wFi*eZAE*|Amm;R zdCia?SVqUMFWUp^@wFg2SicRti-KHe0vTymZ z!>z^PIL1sCywA|^Zr;8hzq@OBa(&MH5g0bO1zIFhx#dSBc<1q$;+AqiN6PVqGl{}z z8o=LrqDdU^H4A|!KjQgtoTefRPhmtG(SY&v>4Wi_m(0KyzjbeNhTRLVm|1!2n!epN z=}XRDO3kKNY~_Z&(v(ap--<{F(3XfUE6c=e0YmXg?Qld?c;S#i?fA&sF2lT;Bk{Sf z-;PI@Z^z%hd=5qoZA;oK3r3C#gaBlHLBYr6LG4PzFVO(wkH7@<8m=$(i~!WgN$OZI z7)$&D3{O^7;2oKMDL>rL7;Sp*>P!cs6Q3sw8!qbKI5D9QRrU~t&OmR08aWXs( zX^Eb|i!;$=s^FjT>DU^{vx=`Jx9nP64MhCUi(3|||K_xnGB19Ud@J-f*4NeX6DP4^ z^={mH?=yIK$(Cp$rV&?PI1Mj|`ju(pyU-d<;Bu5%^iH;>r($==!;c`2S`0&Gvwq6r zz|m7qJ*RGxZ!luQXgqx9A}o3MKAdy@WvDhSUi>IVj~S)^sBGK_~Bg$B_muL zr%e?K4b8O}G`1=Ex|JcNmeuFdb~%N35BT9p;)5Qo>-fEb8xFMlm)Ftg`7-hO)o^hO zliJAZb6k`UBeoz!&p-;dG7aQ3q;~kS%`C&`0}LO{=XunY=oMex;_z)uz^3Fjb6Wn2 zCU+%-(0x!2M7xmNZs2b$mF(UG_~o!5alqA?uO~NgJ@drdL$xQ#+1J1E$~0cM{#*=N zMPE-4c`~B>IBhT`US-v3<2C{#H7UW#N{TL9U=xC{)V2d6dGgUjwh{edKBACD>VH{;!9 zIXyim@lXGGI~Fcpi;lKNyzk9tqJL+jP|qODr6e6nDH|T@JssCMr#@j(YFW3+o9Ns2Pg5T)NxinO3|Ck0s@TID;UT= z!Q>v)8@tZQRp8?7H9K}6!Ow15h424rB{uFDg6T8ghB>Fd5u-+5gnpf)(Ad}(J%7|k zlUMP_N@~1+H8pjpZ)iqqOBcF^%*MF!S7PAc)39;dVJuwq7?v#Gl$<%)HMo_0JyWnj zXZ4U|3)JpHF-g)re0rsFti}$dYmQ8_I|J_}f@d>;JQ9#b54@`8Ghi}=fLF6SxyN=B z!zJOFZ1 zPdxqv=AXF$EiLUROTDK~;hwv1MgRVTqdI4zuj$0eUK~1hGLl<2j-5D#yB9uy-~Hy- zc+VRyh+fteA60Qagd)j|sWAKSN=@F@0y^J<>6mZYd*^yF7&@pU={r}g+kqQ@e`hj@ zRXZn{z!Cz3V}HIQ$D8ANQ^a|RaUa9;Er0Coj%5Z&hwM&$ns1EYOGbHUc# z$8k^mwZZi}F?Prx{Oem^j?qH~s%|P!l-#va7QG=HGQJ6oO*I6*QiF$u z9L_K-epxlV8L=G}x?Uji8lr7PoAx^i*-s>!GmtwOusWy$M#IJLZJd@6`yW~qixE&!|;P~BgU++fXLn?#9C)GK(0|OsYAEQMH z6X2I?#%*gnsWV}0zhu1lgI_&{LH(mitZ{>rFGFQ@3|S$SpD|*Kvf`|(lt-hmY^3Ln z^y`L#(HPpKl%9LaN4lmjZBkAu!Z#!uh+lEuWE_beuD<{4Wy#jUk;B^2*3tl3*NnJ0 za?tc8>4V=}$ok;8vc{+7()Jyvjzp9EdJlJHy{r^fI9|p7jE2($@JMpj>WAdZ(C4y~ zIq$%{d4GpN1E)q0;cbz>)DoRkmtuRYt8G9> zH1RcN%*7Zw{9^1q(2d*gS%$|~Y)mHT2M=t?&zun&qqJLqHJYq7`vIc?g@$Bb-2No} zQCO*dsK?{^fNt;n8Uei0Xgh@s>Q;+QVH>$Ml)!*96^XP!1D`66|)EnPrwB(^v!hHPWcvy5t* zhWLK$%gdfQf_;a(osWU|Ei`EF*N&|lH{!8J9>#>p)6m}Do=!x|dOmro2Y221$7oV| z0;Wuz!Adn*x~Vr}u)C)h2M!&^x4-o@G?_zq!}VvPp{|xxcPHvtFCN1 z0hV**nTd-e>r3M?z{O`x#M)Q~3bTULO$3svSD;GR-C-)D7_u z0l#D)5+A(Xp|;upPa1x(IvPDGiiO%s+gXi&8Rnl7PKuA-yD-M11Nd#yqOz$XU*bX1 ze@NF5>HuNeHUT&-wn#Q6`FOQ>BB53e0e_j~ zft)5=RTZv7^NCGGI3|r9fS%}0^tXTdD25Jhk0!CYVCdwDA(N&#iza`#$i7Ti!$^8Z zZ+OO@ZXaQ=RP1!bYZ!7vR2K74Lz))9^C;s}$2vXx!G-)YhW^!2Z~@egppWyFX&@{>^A?Y(`^4J?iQkVdKNAY;VL* zZ!~dt5=Ran#sl}?i>@K#Fm>8g_;S+57k*lJ_bvF%FMfhIykr69P9Kpom&<~*mp0LN zxyq{P{BU;=;Zb~+b5|5*a*6-NtClZVFdo}>9fW!1mu|3m_g|SB%ZV1Bj^sx^1N4i4 zbg6TtM$x+Xx;GnodN_^O7`LwtpA`kh6X%U?JM1~$jr)IeKQ=$H8AAqi;9uWzJtmJF zhVm5RplEGfV+}@3ZAML<5#T`N=bv%K&-`%w2i#WNvylv>GhK=rR^Yq9rSrz&fpXKA zLSk7e>bR={{Cni~BGd8Z;KCI$mP}291N^p#-3zmAAFo?i<|C7YJfxCzqlJH?@riJk z0S2qX`@Cv6T>2)>v(W5Z#zg%_rYh-MvPDfEQafGwxgWHUS}(~P@cm4p%WZ>FMfL>}lK$*}EgdEKCb9Q269|F8{6s;qX>&pPJq@dzUzt+u_DjE8G`3VSn<=TpM<+ zDU&rE`$7qR-rfQ;Ae}=8$nk;aLxko0x)iBB%62B(qKidpi;JV+OKx9TlH18`(T88P zZaXe|)xYA{i5|S_MKkc~7tKU%ZA}SwEwb=3K=qm9jN~`|lG-2cSR4IYkGI}%K3;tFY}CaMBhD$fg%3IBThSc=iX-F@d3jbB=@+Dk zCsUM`@Xc0h(JxOGnFKE?lUmz%AHt7*`zU_?`=vPhjA3~Gk%4+1k>k5At?WZq6;=eFGx3B#H@0ql7)u}f z8pe;C2NLfNFa`F~*tl`l8+>8_;~P4?d^Xm3)co zlik`7KS0Xkhl?yP!<@12ob5zSgxj)HU`R7kB$P-lp32SoUETQpog2|}$~xz3@ehw=t{Hz> zaQC)d*s*yV_U}D}j`nu+A2bXD2X#af%k}7u0Qc-Zh~ATjaOBtt%$hX^Z+hGN@odu* z%a-7M?|uhPpE(j={)gvcKwEv@9km^E^N@aKpHZVfpv?{EY@0e$rNF*1R|`3yhP3LglI_dV}!LFCN0i z$2VedzczgS^)JSZu_G9-S~69Y4II^g=C;~gQZA=OlEMvzGkt*L5~Ofe;X(U_fLo(a z+oF|+c%s-t^`YSFn_P{Ei(YG%Y{2=|XvkfLM%Q>8N-##`uM9WG%JrG$S?IiRIq-TM zAE#p!oLX091pM%>joS7yU!l0lY!(b2CAdTFg+g1Bp(cY$o@^%)PT6AJ6w;}*63_^6 zzK{640pYeAg-c0xM&X^ef%D7j__T~yN0zH>$JGw`I3AY=_gX5qfqDkAE;Ly|;FFhC z?p@iyD|fFYokQSL=E->Npp&bb%}Khp3@-#eHF;VX4@Z1p@+bcNW-M8;3H>{p@b15z z9}OTIS?!QllWRj^waBG$NMR+*;`dswl;)GMQ-MN&Q!P!hYQu1IJRBa-d-ei8o-7aR_aA9o`PYXVc!(sNE6`!FM9|%8q@NBGH zy$Z{pd;(J@3`A#p0}%8m-X=koUVX(*j8rCF3$%@3R!auz2GF*1fq~ztZRi>?6hlS~i6*fdaQwtk?A^1o@^AOfXcFrL`gILJ zQ)>g3J^CchID0|lztRpfJ;f7jOBUac&wS$JXlSa#oCR|*W847rZ>=2aZn^p;yY)lPYb>s{zQ(>OI*EAGEn!_KIa=fT0#}I}ociz`qc*9Mh zbd%P|{`$P|x8R0RD=5SpP8a`XG1fh@4kHHj!)IReLYzKvv;*hX_OS|bCe5&D=~stA zBO2g!1Sw=S;nSz%x6B6W(SJTJKTk`R;nd5G7Zbuf6@SZyKxH`j5S_Q3;{k&&tV>U( zBsbJ0c>W7rA0auI06ppnyq<MWd z$#Bm#(d|^TJ(UU8lK)A3L4bkqOXD}lwPZhl)_y&ox6y5z-cqeZiyxY;bGb^om*6CM zW%cfQXf^)vo3|w6qnBPg1?S8g0rw0FTS8HjYD&d0j*Wrbx+3!Wma2QaEFB1W8l2`G zAz02ktt-$qrUWmN1EnX7=@-3WZ@|}o_z2pfiJzHMhUIVAi$QNHQ&Y${9~jedDE-G* zSY>K4m3HLYAER}*!#o>sx@P25U0&HT7@H5`|# zff`W_<;|B{Y>KO*$*V8@$785zJP!-bd^h?Jm;`UsKqjQhQ%0*C%AM#kXlWUU5hKpV zldB%Y`VDI_f6h=e)Yl@cbB(?UWPOlHO=N&F1JY0{2?{G-0?9 z&xYMQzfze5Tc(>bcv~f16Ueg){eo6(mRolo#*Ke^8sGTAQat?FHq4qj93Ob&C3xqn zFTfeIN1?N=3B?-&AvRUh+E-%yX%&Nd7f+#iF64aVSTLaS@!Pz)S87|rc1Xl`l2 z?(IA9_>xC4Vd5n8?>`X!nOUy>PWGI@wryMRi=Y1pU;e^BV{lg|=ASzk_05e*8>WwJ zbq`zTUw68&8eirU=99U&IGS zSHn|A6C%8{rLriKWMW0A>iOX~jA%VsSxByOJxxYs_7$?lGI#{)(R`^)OH!R`_>%I< zWKazbzs!v%Wq3pK0;=;Hey!n>ar)L!X0O%6C%+Bh?R{Flgd0`XmHCikmL|Ju?NZ}M z^EaQi9&4+iCtXt-63xEL*Tq(?@0Z1vkgh1KR@N67i7u~SCeIKKDIGiBgV+7T5Alb4 zo=m97nZDwu;!( z?tN%8zWcM~xcZ_Q_`n-3MpIM0r_|(*pv#5f+S}YURpdcq;J3t34lid{mw5 zD|LaYRL(4q|K?N(caFV>Sv-7rC+@%ZeV94%5Z?UC(<)ym6k|;&_8(112P=c1{2@pDecm=XP*NtJx-HpeM6iN;~49#=OHb17ra>R!nW;r2sL zYonV7o<59Q9^D@Kz0K+H*%X7Yl%;g4=M>gHxf)wGZHp$r&%qgIo{QllMx(K*3CXce zy}dYcNpTx=)Ph#D=jc9GH$BfxiF=E1~9M`mwZFt3n!zvtc_o4AVlL-vG zEs=2hVX;BXq>|Onx$9b-JQ?wPv^zNuvoe=#P*;I34nU{h0ps6QF>r-TgP^gbB$<7) z1&npA!Y?z(CbXO-);S%*Th=&*&y3Q^?vr@xzNfJ4kIT^3)QAti>>8XseIlU9jmy)I zLB2u7tac2lS0}G1Ud!?!+*{Hjx)QFsI*4hI)!Rk2BJow+htIHawL|f_=R9c>#D>9?C97N)aw+b4(z;N?_;>4= zQW=D3$UfxKGOP^{V8G~eXbZ5Y$F1MT;mZJy&H$^{1FI|9v%77|*F7AXHis|>#~)3% z+9_s+`IHfPb=&NpNX??$sTpOuH|vME)DD0gO6XQ=2Pq!O4 zWppj!*!6w)Y)iu+BpbC#8Li{e_v=D|$vBeBAo{&VTjE#lD=PQe3y&D;?nj=+J&&wO zUbH>$vWdwTxm<|sl2`yY6h_bIlv6dNih(>C6_BX(Fq-pZSbb(i-Y8vz&u&wAX|h6^ zyfPB3z=wn1kIUzsF*4as_?7Q2NnTX`{hKdELt~u>$0x4}w8o>B^tP$KvO##x9nk?- zM}86-`LsBF@W~F5Pyg4S_fz=zXXcdQ`0B_12DdF*jj#XUe%$lmX1x5mX*grfuw?sc z!98iMoc9Q7}ZtQhppT>)XkHC3t6?nBIkDt9~1v+`Y z^?7n^h07r%Q>6|0tOCcA!qHVOA`S>NLNJ_nsU2|Z6F-d4bvkso8;?J^6F1)aG*&*n z2h%4G!Mk2}0iJ*PEDY+`>XOSQlf21WxGJO~w#Dk&Z1O5wHPvg#&N0?Ho6_TE>yUHQ znC=mvG@^fJPH4l?<6U@Y)ovW^PA6t8TM?h)$oMzR#H9J^+WJ~dnllwcM-Rn@bx&i- z;se8FIUnh= ztiqDWldDBBv6#xZB6GkKX!;ZD{8Thi)e}wRA2@gnJ9Zz!!6PT|^!i+D|R&AoRgHfVmelPT2N zqz6tbv_;pQPe<03|KMv#i%edV(xj5o4}7ON(uy!nuPhmnhGwHy)Tfp-`;lxhY;&%x zEOdJ=a9IJLJ5j0mnQNE+gtKoyGViWGQd^eo%_8g{A=~ur-h#&i%7vyk-%cxcw7l9$ zOsnLD{EYuXk-bsyYWc-I^_#+)C4EY`TwbgSV<6jugjY&o-?1LQv==C1qvpqDwo}+3 z=O=_mhM|2;CN)ujqx=vr!;9hBttVY9ub_`wJq~gnxt~-hZfSRwWrtb z$Jf5U3?s(89CPNpCOLzuBJ0ecxGa^t?4ITea1NJM;vU>J6XPen9KX5cR~R#*LpTdC z!%W(o3D}z;q1T#C(tC$FQpRHk6#L|P{5n)7#bv;cS+v~v;10elehR*m*U{p>W{Z}f z?*l%`2gLq~${Gp}4gw`H+aP)IMDET#M{&n}8*uAA8*u1I56+o47Vmler8xVvF=%aW zaQLn?wZcQ?JyKT2+m^+e${a$a4=`?DV34ntN>X0s=BduHL|v@fk7b7Kt&gVCROmHX!H z2e5kWF05F)1COuVf-Tz*V)yAlD3$dO(#k-o?eW=H zFM0QOk|pbJe8p_M?D^9nwwynVdJm_eNT^AxtlS2!wN|krE79RNcqJ_&nAI9`6!9&AaWrm( zW?Q&lIyAnR;)l9*oA=_j`<}v2f4?M}IH<>^=Z?VzXO2t;_u(i5l-r9`ror;YltoYt zUnt2Dq59qlD3^ugtDIIfw5yf7P?kO^#$Ox!_y2kvM|$Ss%(Fj+y4rMNh)*Jgw)|1p z5S&ua<5XGMb?ESR+f0FsOnDAvQa4E2Q@n znEQ3rcBxJ`W9B#}bu12PT?yWTy3K?`mra3*Q5xQ9|M>4L9rlk}6p0s4w2?LO2l zSyJ-KDNW9F3zZv7d>`>`uJ9O$yujgJ;+?jYucp=9k$(J~N(%nMS zV>NB7h7Oe%$D`}st)qCJYTxC*G|q*6h$r5z>dj|o{Efladg2<<0{CKx_javicRR6!GP=;q_g5RZnm5zc*_wf33)`1HR%fU{2@ zhflrxYP7dCk#ngm_}Eq)>Oz!kN~U64@leug!H%*;ai@Qr`i9_5nUSSu9i+X{1Hjgu zhwxv&dKfp~vl4^*H{m7MPQmQyUD2dR4Qr65J3x-$A$ze^)TzcVs__?^s;~o;@d=-H zP)lqlanJ*Z3=RwOhAd{+O=1wQuNr8 zucPkN@A2WcFF<{r0n}cE>B5Usv?YLUgD5H2^r69(*)gS87MHa$a?f@vRc}ueUgAgc zm%hZ}klaJ?lolZSw}#KHyYIjWJiK%pZeO?oPp#jFp@ZA;yi2F!xtGqwk-RyJudpQx3etq6{T%F;-F;Gs;#vy>dR_TTUX=AMml<+ zvI2{A4B3|mY3~~^rnC9SgWa>Pq+moRlyZsi`K z^aNga)p>aJ<>#WUxe4J^ZSbH*X)$bK6I%Nwbb0rR9EWm`f5{U zG%^a>WUS1K>k%?N&1?K}$;Z_2hH@FwdO&r!%TxILpT62#nGJ_|bo-Vv-_v|9i&+#G z1Uh|5A$#=stv;q`w1Dbk28RvB&k($SFK@kuheK|!E}t+Qo<)BnB`ro*lNaCr`nIKb z!^eJ{3?Se8rZe!IOD0rG#gz@^Qt~NCk|Fh-hscm7LtYlj17wd+Zr}Yo!&Ba^Pr?j)T>Lz`0 z>%QEmY_muv(=0h#iGbss&M)-uI;-H;Xi)52tWVBdA6~i@U;fY4 zxZvV1VMy0(RGrFJT$N2={WsE~!#i=;oo~duUppG(Mt7n%nmlc3%Fdv(ke>~;cm@Vj z7MG-CtAOEfl5K^0EkM^jP#)(b8@9^*v$3&|tjhWwD0L`rlvJ7TYBDUYckDTapZ{(p z7B1R^BS%l-f-}eCl`oiwbLNgib5nf^N$~KkX!OMd<1LTDlvhJIh%Sm1SQgGq4{MG~ zlh8py%Q*DmN`iHtQWwhI<#@NnGrLdV*2i{Z=YeC%#1k@)j1gl`rW3^NnDLJPDg z%9s;PEIsdx0cflges{+TJg{T~w(UHaykHqQv>nqX4aC%m z1EPO}Ftn=$Z7ucilN1Bs#k6z+iwFVWO(FM&bxM47lwj}-KKsqP6fMxPrDqNuVw4%i zT^n{qlUECI?7&ex@2ola`7gSOB5W0~Wg$ih zFJgTcSG7`*aY^~r@~XG_*?sBEC@>m5K$e3he;3MMkp*bsS(CkM}k;^!*1eeh9z25=B~9Qf=(u^$Ln| zx#=TLpnBc*1!q}amSo%Ri@muxtHD>scY!M$GoDR)Hugs0t7(&Lqv3c76;FBovz2o- z_^L^oUlcjkfup>}=Pq3PmTzG3lN&K(@*sTX{pX{9zeZGNan(eTP^&qQA*lkgm4e}6 zD67)874S$>t=2=~=X>TTwVzyjlUBT*!KQ5o@r7?Zf{wNpeBndS$LJCLkXgP1&-Vn9 zRbY-!7}g@jVtiYZqM*2PSTE=>+EP=Ddt2jY=Wp)g{I${8_dkF6FmAnf6~>P0z{{_j zj!9$tCx_g-XPZlmL3{Le6#xL86 zl3nlFcMKo+>^&Gil7hs2Ush%*dGUy5*|P6p^M>!Cv!g32 zI*v0>>xd@$$D_Tq9(r$ECbP8Mk+0g40*|^&h{rl=D`j}g?2y)jQkUlgs{M=GSxJ4b zO}vcSS(*P-5qz9{;Mx0Yr6_(GbogjDR;=EGo9|qQWvg~!Kt~I%y>td%aK%ha8P|n) ziK_o4KnuQW#_^t01-nXUb6?OD#U6yPE$0`dct`ncF zwPojlFGEqp4Plz#??j-0@-t~N}cJP`Be3{6&84II$qYypHiju8dv-J2V}{3`2o zC^C;*Srud zjrA#p6324cVYcKycE^XV4V%(}#^xF#=HhR`zl>9&XOvRufLZOA>V?zbsgSIN*4-mO z2cl&Ce5q~nRzr!GEN~R%P;nLHB|N>P{d>*6S` zDNW5jc)Pax%%W5ja#o!zqlGZdjB$bs1yu+#J zJUjvZ6N9gfkj41d8LDu^*s=Qv{_Q)D;#5x!KJ(sdqDjahFiaNGr`8=QODqa1&GGcX zX{cC|9|oh&FF5K?0aLW`1H`H|JMiP*J&IcvuExyC18{XTnJ_JyfNiX=fp0rn!>UQV zArdYvNuEdW2Dk13vS0z9u7;PFF`U6kQtEFKU+{U7o|@C^_~G>Dzh8yh?l-vlIp3+A zd*w}18O25X_G)9$O0i&6oE951mQ9o$KD-+@-~2kvoBwtU8aNHBSN#yf2Q9&CUpy79 z@g$bjYHE2>ekk@p&iBBTcrC_~kd2_E9a;bg@ehP$0aWFeYC8e7E#8D#U)#oMNInp= z)r;Nxj^oya8*t}+&tU(76PPt^I9_zsY+QBz6tuNA!rRlvSanF`q?x|85U14viNCaa zV5&0;8xkF7`y%}0Ogxc#`F2PHwq2EorC z>&x0}s<_X5A%t6!wFVpFA*<0h-sJ;{HGQHgyt1y!>^%fyQ05zc{c5gVjAb?=^HmMb zzS?FPt!jCa;H3O&^-XomCluWjUcDE_UEGK2h3taT5Anuv71!l99MZYOqd~ZhWwzl` z@F(&OgQ`w`8LZ1YUlpy%=g(o=GGFD_K2G_i4XUiK@n6Pkh9|z>f9NQ#e&g4$V$F6; z8b1JE`P3!Rz^=Xu3LFy<_S{hG$h~Kh%xlEA_F>QPl0%~`f=V6%ggn_#Axo=L`+TyD z(v1G!vh5JQ^V8+nx%&kEzYko4xid#qYAa;jEfPK(;sXKKksNYZGiaUk92B^;-63$A zk=Lyt%vsE7R#pO>IB^n7S8TzLZ(4#SD>h-`n0~nSvI&?vX<+i%@q%xUu{6sl_NLX- zVCg+UsICx^Y@*Cxv@%vyiqi@er9|iux$E`9ZQQ*55I*^(2QhQbXE1uq1+wk9#Dt=X zvCw`~H$tn_M`3GaiA*l^_MXCh_kJ3trVi(x`ym`Zeh`l>{wJJs+GbpL^(2^TqOn8Q zu)MPRnl82Y)R$Cdk0Dse-Z@+q_KRxjX*8rdJZZGu7!{=L;DUoMjz#gAR*N3pf(IVi zf|DmLE<9@@UU1n=EI4gUGGW3o^pYm!aSiOm$ds>q)xCY|D+xG#venm5!N3}~yx@BuB+zj_R8udkeUrI^sk2-oIq`|;@VO?YtW zMm+NPMr_$}0K1^=~K+O7_ZS29=?@N>MhHF4l6;pNi@% z=#k-uD8q;j$`T2*l|P28>|$*rN~UZSW?aE@;z&0h{MiH8vuO`zjT?c_yyiOR%&Tx1 z&)SmZxyDHCD*LT(u0dy4J!I##`4!D|^Rz&cwWtDX1iXM0nynf-B|btS8LSm_QbevV zKY&?}wyQH2mmycyM9U2&K9203*YojuQA&Wa;Hx2|Ho&{LqRm2} zCfSut$9h+s2Q5i7!akwfD#xpbJ>L$cx*U(M8%o=%wgScj#}d+=hA+fB0ys3g^J4|C zV@q`Ew_j@y=SjOSa;+*mu2ZR0n%MH~hFcKFFSW}$aVZo(r2CMZ{CnQ>(7H7C`u6GK zv|gP86V!T{40$}(CI&6IE$I`Wnv6M4KUrx056JS>VmgP(B&qdym2rv1*M592R<7NF zmgaiA`b9IyNn)0M1T@GHwS=CEX-$*j01*Lkt* z)qWkqueVA>^0>6VmGGr>BA!PKZO7YRKM!B~-eY*zr*FhR|NZlD=A6+mynO+VvJVcK zlr@J1QZe^G%L=GTQJGoHxIWN-Al@S)8(X-8tjsB<8<6{u?EltWE`1)y%T%&vpFa8tJP zrN-1^{DiCU@Izm~@nieZ+&Tagr@RXHKl(mgc0mt1S{oQoL`k$$amtW7ok95|7C}OM z0|H9IJ=FN4#>%XW*@n91j}W&MpT@tyn^UC8fa%t;IpfD8PJ_~wVy`uD9ZQl4z->R? zCKw;ee%JjQv1;vJG&eOwlUB3v;%iRBsNwz5R9{EHEv4wj=lI7I2e=#7uNk=PaVeOr z4cSDKapQV+E+K`<>*r0Y$i`#{a?u#^V_bzKj2ok!iQ>wyq4sZFIK%aqPS{bE$2;-b z8*9+k)I?SRw`48H$x{{k>#fv8Z%W8ylUNarct@ErMvQt{I(hOGw(mTIMUOv&+wWVQ zydc?k;27H4>T%liF1+TY(=j=E+1JtDQ2CIEXJb4ThI~5Z!n0lO84WIrdk zW76ZP9^UMVKVTR_ zS>lJ%4JAvk8;IeM;Iv-&Go%azM&`vcU(Yoxd|3iv*@n6(IUxDvwC$1w6zd}BB$IXM zft0&4LBNVREgeFF;**oyf?R%G`2t=X7Uh*mgu+Yu(DZ^pzD`reA=wPojS=cfaUoPD z;Sb>{@+D6$qg%ls+lR{w$ItnLhuh~9s9slq&Nr90&a>|iVDXINEtf|TjeOhS()W9i zj0S(v5Yn>=a*{zwwoTh&$zQj=rcb#aa`}?=s>c*R4%ndmS7T#<%rBtnSg$A1;L+Hx z=i1ZCbvy90KR%j_IZm6=g#~klD%fZ(fw%`}l`@TMDZ&~7uSCbSB=JEo_;5(_Eyu0V zCVX0jUvCu=#l_1Eyk?2*BlMjKmda1RXh8j*H_pd*f3_U2|IknIkMFxCn#7qNy?Hjs zzBC2e0+Nw^QOfY|rW2#j9{Ukwg<%*s7LT(GAfG)tUQyQEezw}!4r6N*$zyd_ReTRu}*L= zMV55MRW&Q7I1IZNqku3$R#YebXLK=Oz!Wq#bznn`IL*;9>6&~F$F=qXMt$ZCc>!*mBS9nHlW<{CJUy__W)r)5~@5OD=gw@S= zuf(!dTayW~F(W#0?is^z-hvUBG_G>aqH7C;kS8%oe+It2`I2^hqkykNCJ2zmz@|o3 zQDAQ_LYsETHkFle{IUl0ObrwT>7XW`G&0=Sh~=crC3v`HrHbh7?ZwKwR$z4`-1g=s zeB}D)V%*R{MNClxiO(IS5USPKQj4~M^#RzdjS@u;6%La{U3Zle^)KYP8b1=oBHsv* zAv4mj0dg45YKP>0nYJ8a%*a=#oxYs4n_`Z$49rmh%Pe-9g zt9iVD+i3bXE-8l&#R-891o~1r7qo;oWWPn7_@Vaj;qK%E1BZ_EBxjOs+j#^>dxm28 z@Uw*AS=f*`0hK?r0^$m-oCO7kz@u9_L9y$H|YBPXza(;nRU z;F{zd#g%JzL=%s-7(b>TUU&U$%%3#`BS&UzsIq{3(#hk+b%shdeR$5yx?nb2jkWd3EqLMNwiSd>Y;7u2kShhIx!gz~IC$k2Kwhb&)>A<=X> z_JAi&C2=pQF1rK*YgSUgjYHq2)7Z&0sNj7CLT>jP7m$x@& z(v%+T<+f-K@pAitkgjCArC5zx;`>BF&3gHoJ|#YRfYtrg26&Qu+IpC%trX&ofHco!pd|xpLF85%&ujeoMX2xwF8TC85NKryK$$6U0;%8 zuHWCdHY@p(TSw+nl4VF1ATV0oaqq2HCfR^HfhfP6;dMi8fxsK!`=%Vn_$0LZ!p8_Y z;xRMB{ipj@;P-bwkqio7bj@T;9NW*SA#+{QI&qa#s5haJlw3PoIanQ&{;`1W0RgMB z8hx#fl%>caXIbKl(+SC#!*QAdUcy&h^p^OVODCYYsSZE*^%K~=_b}e^+6yp#b03Cj<^&h}8KC`#sF!>4quGvb4i-)cvFo0-Q8JwXa zOU13Rh^a{mZ`LzVA#T#xbQf!j!O8S-XDeV_|;bmoY zrI;z%zUDI(*q)Q8ux{f4ELyw;4@CcV?Ky^X&lrc7ylo!Nn>QY#hIJA$sa>+ks|qFy zI@zC7^F&0>gQD#4t%1&JDlaPM7nRsfeL4kjs*wKC5O$0Jmepr5H;=_mT*!EZBl60v zahXl=|D5yjw&z|9Q&Xe5qKk``yAB;vNBqUXkyD$Kb$f2D zYQm0>ITUI_;iR0FjEm#tnhDhbLK<}I0kRw=(*vq&mqyD3_(LD>E5G3bgi*p7Vl{#n7&_c&5LA0arc zTOuaOoPjPT?lKf`dGfY=7FF0gLXe*DKz)?o0kzs2Y=S0xiZr%s*3k;6N%YxmgpzeuW}6!v== zcwcpOVj!o7={gQC0opeSeGZ+R(#tH)#32r-vX;e9fagO+~#it zvMPniWCvGfcT(WD#2B280(4g=;5U$1L|T6I;4v(@X-P79b;0aOc-}o)AG{1Faf6LC>oLQR@v|QA&UVXg{?k~@m^hj~b7_Enc z*DY{c2S(%5t;1#N(ktZXww#ws-104qq4xS=%-s%YM2jlm;MMo}v#e$wO=#yP;Gy!7 z>`9WN?*kmJa%BaYbh)$fFhI3cDVcyD(EAM5-Czb!>o&lHCMV-X70uT;?;&_9KX>BR z=gB&8fyzC*^X21iBlP{Qz$59_Fx`gaPxA}-!n%2Ul5EZ(VBe4ujmbV#MzDj=Jx0b{=bcI3&7eAT|8qkX8T|Nuf zTrwlF{{#5b-7E2@g{$z(o1enO(fx77MPo60>R@!VH@Xi}MN8o8->~a4-w4?X1YD9A zD~Uf%X2Pa+Vks^#vVrial_5k`1oQjh@ z2hrAA4^d}Qn4+sIEYB;7+#8OYI&bcHC{ISgNpM>!rg)7I%8XxbdEDb|3Z+ncO#lZi z&sZ`LX6xblAQGF{z3(^{E#8cq?_7uNyN_Vb)DigbTQA3D=T63;{;edgKo(08Oj&o8 zZhtcch_U1uBwfB#m>l(q$}ivTm7JwzSZlpE0DhBmtr+C7)u!h$e(y>d$I*IKF8{KCeA z-j1T3Qpoq)W1X6SJ7K5G!H{~=Y9opR@MQy!?_vuR1URmJ*?qaxi(FoxUrYD2#ESg5 z^tjw58_~)ET|OBGLojjO$~J91UZr+O_6vbue}ciP^?X~fL4FfB>)O6cTa!yUT&PVv z!thOL6oUFK#jE)RobvFtKR9_7p~NS*bUd6FsXYkV1gGKGrTVgvVnF4Z$6XtwMe%3# znr3p8bdHKx&s& zV5uKTah)cKCjI@@txNIi+m|N8k1H=48@+uT>J#)5v4-T*K#ukhC=2TR&Wmlf9>K-WenC zoJ+=IIBLsz24uEwaLXQ1$F6ml2TTU;2QhT41bWC)nnYcjm*s#RJK!acVGAROD=_~Vk) z+T}PZR2$`O$g3%F5{e#ZT^qmHIfbqby zY?H1hTb)|zHnaFgVjRdpo(zlNGTtLsh(Re)>2L@4%g z1P7?93){;MROek^1(S7S4?~?FUXS9Cc*DBA_-m(6t=WMe-LwS1z3s_l5-VP5^`;x< z;EZUj)4#LP=h^ciu3N>nq_SKtOdw8uQ*uw^2*qRh7Q#w}WT2Z$)SHw@gdyYWI*DEY81uY*Q4qO+^s zt7jE@M#bcZA*0}wXo1xQ%hU15($IMEd8pJ^x&Wt+t%9F289*tM~XrIstrn zTIa5EB~M5|rC*jGf(yyKpf9)I*P*|D_Q20 z7N0EPxKJg1D0D;cv<_bz#$%Zk>i&0P9FHeZc?y@e)6wUIYPLra)sM;6h2c z=84fu(P&00{%Y2L{o)Cnefl_j@XeQE)UbZe3ww!Lf-RdsN>$&R!Dyl(JUX|r*wZ={ zyl^iF>v?uokI_pmt>AG+5QAriX+u!(c<}IXEPQBfG?}$D*W6(4XYgd zUYnh|;vhn)t>pBn-$+a{c-1}ww1PI~Fe4<5C*e9(PJFlj;0gTV_p7mD-AJ5y&Zp7T z&{l%Jh#d~MRmBtz=cbdVy79yl-^20adoX$O_2}P!ob${U#7E(>6ARM=*6l7p}c@2ClkbDn<|Q?}U?V+cn2X*{71K#HUJT zR+h&!A$Jfj6oIaybk5C}n=_!osUBIwl0a6!HtMtSCz^KL|Aa$paUX zKj6u7bMg9t$X|hA7=)&;u+HTeCYKeODRk}AcVYZg;L}&yxp46KmH6}8l*a&W*U}V< zmT0SFAER(myQOwn0J67*>vH|Mu}AiaqQ1NJDI|O9iQGoB63tdCWq#`bfNoeb9_KtZ z(Cwv#y;zZ+Y$t_pYuoW$T$^`Iu4yWJCo-4-* z>(TLT79NZgZ>@mGujlqP0A0)N+F2ndzdf$a`My)wo^CIEJ0-8fLE_|{j=O((A?2VgCROPM}=`)Y!08E`lcYl%xb%PPYQh_sWsmhmrCbt-Uv6x^PM zc%F96aRXw6wt&N6PKK8o1()BBnp%U)FBpri!L9h-&zIxfpS=+ueA6YEJAGubr7#0G z1WmDkC+%?!{7I#>p6i_N`%s+t71d=<-Af( zYf}C?+M00fWixQa`IDo`-tD;Kfz`P8q4l`=&h?lwu|Lj?CbHr!C)PZSJZ@`iz zU&5RjvtXz$tt3;2AauX&OWY&)9kr!5ULLJ0I17y_?mjS~J%XNc+<@Oc>+?ply-8id zry7?5*(dZAAIQFS$6-A2)Gj>y*!JjmH#*vzasK@Axct1ym^X72`gb-L3sXq!a72`n z&eW9UTR)6BF|`uw;KkBP1yhJ3yS2q+j&=H8@}n^ zc_rv0Sw&maGdTiN$b_(-^FmCpcwS27%1tYuOfGQ6XIsUqXYY96Y5Z~FDm=ArXY@j* z9WTFb8qS(KJeq)PuY91xbp$^-FHczetQ0$`Z&5!W{uH!ZA)nIbFJ*{s>+(8o3v$aV zwq_Woes(2o6>x)&#o>Bo)^E`dh8F6;rPL0xM22Vyza{LBPG=Mw45C2y^v*` zXZ%xoaGKFRu=3@>#AykqbfSenAZ93}Gna_nlA%gLl;&$;$vX0qx9m}UNO&ydQ&HqC zCSY7ry;;^~UmKQ{v#{+3Lim$InJno8iV^vtHe>}HTpkpsUq`wQxV*;;*9!=b*_C{r zjEjfUC~VNjD%paMkNC5oKVDDcNoya+m&KvX?p*y!)3$}q;n=qo`SI<}dN5`DxwvG% z;q|BvWI6kM()!v&twc+jU<5c_>y=Y1{^~$F4NB`3k)iMpH^!IQfi!8RO+t9_7u*gY zw8o|H)`loo9{pXJS})GHxFueSh{bKjw@Kdyw1{H8Hqqz^u_o_hLdhz5+!wMdtHdeS z2Ca(S!ZKVwjzazt7Av-m%gMDFs*eg?+QyU7$n(3uc?h>HT9v?E|Ga6KJFBY*Ryj4U zQA*jQj7lCLaVcp@vJ@~FCNXs-1Lr}&Ee=LCZ__-@DtuC24Pjg26II|Yi4In(8}?Xm z9^=2!L%?a%yYSvOo`E0#b|wDqXi=KKD~-ZyzoS;^1B5Rpgt8@J*-Eo)V$Kj=sf_b@ zPT2LrPa0oo{HFba6Q2!hBb9+I+H(9v50 zCabTEV+x_5BneruCBuBmEfiog-Yw*nS=|4Kt!F;&=#ZR&*i-> zR!Gb;>|iC7roReEqpyV{KFI`7e=Tw)JOvKz6>uv< zG~RVl%g*77pk+17Ww;Cd8IKo@cOR~>_Hwz{5?ZuevkMnaUa=R#rzNB2T2VLL-VEfn zah*_p&6wzARvMpS|CjAa#zi#-5x(5N zvsUP_&hIDve5u@}tWEOz@orHxruf=V7AAS|gVqbLo?L<9OI+0D?-jW2o>RE#)-_nS zaX;Siy18g-tP?nJdF0YjwV5l@@8v~)#1#U}BE0s5BCIS;#+*P)CSAD>X%;B=?m%6! zZBly(pG4oIqPNrU`P(z_+gqQ;zkY8a?tNrEKKafoF?>h|*y!Kc_LrmgvAYY0w3cMJ zVoS{)x_Mhn`iDPY8_==5OU$Nygrs^4vIWr;E5Trjtu+>K_EMVo@bMZ9>eqrRE|`i- z&z*#wdk*7~Xfo@@TbJX@|M4gq8)`6T#$e2!Jq%MP4u~F{8c-Ln%;Lm(Bf!g;Ux*W} zWj3VQD#yc9h`%C_zATM%4j$^p&u&_YwOfYbtaCns&dw2pB-5R{PYU8gAm73#@#*B}l!{TM{#q+K> zk)E%^4HQaT3q^b0D^MK*?gu5feRz(9+yPvM7!4b^2lNMb&WF|x4iCXkI6W|)NxQT7 znm65zfAMOeU3-q=zK1vA;icQK?wJG0mq_DD=?}m43YfCh$gG++$M8WPIFuy zO-2jIS26|Pw`7Q|+kOeO#xM(UR<6P~Q>*2f;!HWhSH@?Bj&Xd8HZ@=6WsLu|L*mxP zy7&v373Y3|$RW-vbK>vy5EqXCzkI~o_AJqlw- zb|z;Vx>BUfYRNE=fS*`;t=Ts1sDOOgu$6F%MnV)o>Zhr$0!Ft*Wc;wrbyp1S@F0gP-|nnhU*dz}<9KCru^t>44^pU>k``v&6?c9|VN*!y;fHd` z`TPH|_Z|Rx)yCTJqwU>Wz3bk4$JnNa9!Mb&LPDq^jX**QfmCwSLwY5Y0BIy4p@!Z< zF9uUwuyOCbuI=r`tN-*PjYc}}lKX$(z2Cip^?Qyqni-8|Mn`ib9qG8Y!|SU$xRq2w z<6UnHcP*K^DV(&*kDe>Q$q$4Vvmf1B%e6sof101w7Mg52hWt{|qqE!wq>$@I_TlNl7DBT|{KMfE!Pg7_`PgdQ z`u8O$D#*vN^M>Kb!v-@{bF*-xUQ(U&dV;TJ&?Xuo)iNd-K_CKaOsJ{WNWI9q6~Wbh z5T#SJMaw7h&GpNT+FN6#zL#I8=i^t`Vyvxln%O7pE+jJ(J{W?v9lF7{&lhEQ>rn0?v-BfYJ?(e z3D7Nm+$yJp1;xf(L98U7DNCB>ufS@_VaZH9{n93!b^16MizAFx8=RdcM8GfyeiRXA-6TsA)e($;QE5{>fQg?5A+>%I zIpARUHT0e6Zc>Hu12HcON?%L&>}$tsi+AAVh1;-V&0chMOB~?^tG@o}xn7`o7=|i@_&M*BC1qDspOGTZECq0LdiX-%KR9vCY z=G>_^L_#;!c$Jit;Svnnwhwxu!PBOOe7y_aS$FW!hdA6|l& z-`Ie?-t)}N$&L8prH5nE*gDiymwMw^UP@hi2|;ZS09>|6Q`&DPoUq^$O#QeVgb#q_ zg{2qf6@*oE1=QF{IyQ9LLK~a~F&Op1m^KJ7#}N@JS~Q7@==hm^UeIdMBa6_sza2+S z8H2NqniVLEKnkNaGu-k5;ud7mIx4P2OiY{ovk|K5ix^BqHhN>UBpF!RMfN)SRu;7m zrxrR6bCs9wR_(ZXe0n>DhEx4lEtgDR&~})d=zQvVDmKZKhk5k9mz;zsEim=c+Wc8fc6xg6Nyav~#P^-4FQ)I%c?5X75HQ=I!}CEU-GcP~ zk%R^;_i^nQ8{ZyXHo{Whtf%LxZ4-?B(mM7&3u9MRTHTX zrTyd9b(txDRhpbk0c7f_j-OwdX~Sn)R+=08010#Cj4g=P_E%p0YyQgMEQn8@Hv`iq zHo%mW+pGE8aUOko9d7!|A{=|naag@(4Ssmt%ed&AsW{`5G0_7gr$xM_<)+n~b?cJQ z>k$xo7>TjEUP24VkZly2qO$TLZIG7hG=oV(p{>@T`J~KgeKG$kFBDEDxcz6$DHH4Q z?JJMQpYL9Vul?jfy!hJsVC&qdp|!#5aG}vxIY=jCTF)meMAqxyM+G9*Q6pFoB1l$y z*_>;FOV8ItE>m!0$(GvJLXm0w(peQ{@*5I}=UGL?1sFY|9;1iX;RB~n$DZakELpw{ zFM1QK#cyrHLr-o*MR`8PjHt$>arMDhuo~;jQ04`+yf~N=CsF%DVO;HFBLJzw5xq3_ z-B96izf^FHZY!`YZQZ!;Pj8^J?{FM@{1;JPUZ0||1&Gu{gH+rqC@yeJgJPD{+1a86 zu%zts{8zV$m*YW__D3*5u7!SnULi(}{ve)w>06jGp&sK$*DBIdd<+@k{I8{TcO43D zi;D6|pp*JPYV%wlO2!Ap?V>z@sqea%FoNKQ!3ndD3ZHXQZGvgHVxYZ;B-%Q9uzPnq z7A@a}1zyl<{iXvbE-J$KQ4P54{G)NkiBmAx3p^XkJrdL+@e}Dm=R#8foim}iW=U8T zN{}nzRHn3~;vl8ctb{<~2-D_@h!GjlO}BZ=gnunypEOf2i#a73_rl-gtA0r9ng_%S z8gJ6vsh`4Np44e4WYT=9X=%61z{hObwhvFgycQ2WwJbR2YG7R%4xiZ+d>wYgkg904 zRV;Lv_N@*IYKL(;D`Dov_fo*LN41gzua=l{O}$kbwsN2#%u`oYrIoa$c(jw5$ZPU& zYKgE*B~nk@tv`xOZ1SRvo8R1wrkW~z{;X4j<;y9!E)c4dX`ayXxH@WKd|6zU@BQVm zZV1rDkn1E;+UOhj!ctnsU32)<>At#BL@JPiscXY63@ANcr9oTs3Aqn7LXsn>P+fRvKygVJ(yRTdb|)1a4oo2N>Z^DQP6-v(Eo zQr@Mdo_#B0tU)&Zd0TV&1R9*T_m7=tmv6G=yZw~3=#UCw@}bcQ##fVee5cwWrESFt zGx2`kZQC3Tvwi$n!}&gX7MjcF35~wlD$`cE&8sO-_dc;0zxm6v!L!aWbB5xy<3~jg zzak~bKG;FwR^s_rx8j!Dm*A9B-ig2b-y&>7VWN_xqOP<6qr?OFw)x-hIL(RFoA#)fs&*8{Q-ny;uej z4{D4ko;XQmvPfAGtUOZ*XlHamub-?Uh{U7ys{#|QVvu^d`sSX&og{TNOH`+!rUEA) zJsu|=H4dHKz1X>@6|XGXfTgQ;;N{nL;=w1@p}1IJ?5G+{@`72TN7SIPq1+2-6)1rV zs&fiINx!RQs@|xu68vf|nQ>3?>Rv7WUAAg3w(lv!i6>v>1+VI&Y+^Io$}0iAKY`3( zlq7gSl?f&-gx;{DW4BhEm&ed2E#rx&e5yeSgSH3XH0UrKJa7SS`15VJ_?&T=GQJ)~ zh51O8Nw+^A)xxDa@xYVog9-mTju?g`4r}s!XaVd=$HBFq_cylITJUA!iSK#o={|@0 zA6k#&iL@owW&fv72IsDA-_?dy>zacVR;$)GWBblF3?5j8SyP7M{P)en>?!`1vYKGk zWTH9|F6%HNGnywAu9aYkh-}jcs!PRlQIm_Ds8IP4D)E?(au=(g*4;V}i4PSKk1~2r zQO1jOwV7g@F`Q7GtFl^E_2G$M6|uWfn3wU3KV{pZB%+j5yy3syJ-t}HaSxt)aW$TM zbuE^!-RX@xg_tq95g&Z-I860kyj4~dK?_1AjHrHv(JiUMn{w9S8NX`NS4djiG{ZB*K3IttnqAgFESG{tf#ugMQqVNqOJZVZm{th)U0n0rc@)rD@f=o%q@>?++gMM-8vWWf#sQ zXI26BiBFo=ZrqPsZ(oezBPZaNTW&#JT^)`-`e^+A_rJ%bmtKm$-n$HK-W$_ToIk^x zwB^Cs>f{+p;X0Y@s`>N*PklDCd1)Z`p5VM|{9_yWDLEqfBu|CrJgtf-i%$)?&ZC5d zFTluT0~+Raf%kgX|I*(0(KW$YXTSKv(|BtBYJBFRV=#GaBMS2Kc>4^ZPGi1LbwC@-s11`Sp#z^-75aVa{J2B2ap zQpc+W#9T?Dx3|^Ela{)I&0%N|K52eIUJ=HPI~)1=Mfm+4w|T+L7My&{h-j;}iLbl+ z5FUSS0}kb#hN99&-1GQ-IM~{W(@z*3*qF|X%_l_V?4(^-;NkWYDx8Wh?kieZ%Ljv) z^Rr5xH2{#NJ}+qHza&}h1*+a!wFirq?ZT#Q2ZPmXqlVStnAu}-{Jb%kHeoR8YRVG7 z5ZfkQ#MOt?W+}_@;v|jRgniu>Vo#&>P-1dATpk$pQ~g&Y20^+(V^Kgkj|!SU*HDY- zYk}$ufEZUCuZRI-q7i&wA~&JC7NjE3;v1152|IRq%Jk6rc-y6~_pdD4h<|wTkCzv1 z@@%6wIH&W{3uXpq3szSZk+^Y8jrfyPQYIr>8RtV(n_+ChSh>ltW9YbAXtNJXGHfmV zErMOEbCm>!stJsGJWqn*mxFg*+Z2Mrr%uHl zBqAycKwsO#si!@uQcrVCHP$x)ruf5q-u3gVRiu>zp5L@?x+O?hG3fOG5T4bIGE!-m zn+F>`Q`2=`vfKjIQH}?#Ovv;h7Pgi{Yo##y*z9lfUc$DjCb*7Jnj58f-feDM^$fPa zsI9*xlS6HS*MG_K#tkDn@BB7Zy{@|PRV`2RZHey>!L$tyENXqe@8bGG;h6Jzw0Ai@ zkpySVuUcaEQ~IwR#^j9pc3Z!x@IuorodyUmsLr_9OX$+I_puHG z@cx8qB?k*feP}h!7iMYOV;^kW;+$3HwBgBmMH zZ4M(e%v-m&;5)y334LM!e)X$gVaSm5pytz0KOOhpdoMopp%3BChgPDsy$6?FFauRp zB_Lic#V<{n=u7nDq8QfYO$4&rLhHa$pG&4CMgs=HO|4eN?bcSlZCQMAtlH`bvrIY> zp~maO3*J8&N6sFMKi|0&7kuHbxb(wE;{3B_V?cQcArsvs6QK}C638OW77?rJTYVYv zFX;9XW#x;AU}U(2N(o{`v?Ks?zmF~nGRFJ=Bp_0?K0plu1y|~_GtN=OU98aXSN~L$ z7Gvs!LBZeIr%y+FdpFi^ZpPEEtj7G;H{hN}R-wGK5Ys0&VD|JzOc-5<0aeA}Vep!+ z5qZbI8jNJhEP5Gt1Skz^7rG#Od-{Svjgi#V8)T)Gsg=qIAk*hx9Zs%@`4YAkwmg6hL}|DkZBIaA-%WX< zJ`CXbihd>U`sjAsM!UTgB(31}-%F^|ON@OVT{Sy7FX&kpR00(NAH}OtHI&v{1yCT$64{NG4q! zIZvCYV_b3H2=yKom60BgBHdl6v{Nu@k!((jUs@#PDN`C6sds~KxBgcl?|y6v?tEl1 zHgDUHrh#Sn;Csg7*m=WIUt5x%YefU}nhw&25$0LH1_dvm3xl&Q5S>?GSaYErBbYL2 zWy_5#I>bG=jkO|{u;T31kdcl`eaKG@FpOA+CE=Dr&cQ^#q(io?+8%y&uyz1GdfKrl zDk#wGNacz)PUx6fSv0~S9r>XToSd>bcEpfq%__9rtm6W z3S;^yY4{Jx>Rakp^!BT5F?msar>Y;EKTUDytM^ncVhprhfX(jAz`1FsrVO~CvgxmN zJT`v>nEmIrLrMBsvTc;)TKCxDeXBP?{_*esg;$qu3i956+PEMPp>ZEn^zMxnQ7P4} zJ6iDl>t4oz);!#N^Dl7x@yCOv*|TTk&O7hKg%@6k$DVx)on5`S@{@B=Sxyg$r#+P+ zNh25|VfS2|^kKQ@aGH7va3cjQ@HR_;S%<#8WntA{wLZs(t-Yk3EM36V$h0l~5fnoR@7#xP21e?_EN?6p7<46t?mKN4zB%8Q6)=$pDWeOCY z+amPsI|?reO{F@bym%XPvfU=Cn|%FCna~QP{81WaSBFSN+VmvbmuY2138qi<16qyv z=m+Lv^Y;B%uy_+*UbqoA{pHQT4~-dF9jwfnJ+(2|Y8Y%S(_~`P`79fe&;m_b9rfPk zeMHcPzP>{W`ltixYAJ5Tl3GWjpz5ep=!KrTxp_ULN3*VeoKhV5NR^iKSL__rNcl?@ z^7Bfv`Eo@d)Vh?W(h@(bY0xYTsQEG0uX_}?-TQz?eFe(O3NXNXk>Ibg^8+#4cekUk zcnT(z)CT%Hpn4c;>rcU(D_#!HOUo0C-W%5{Z#G{A1(x$&6sLea(XoQ!2FU}HC#*0B zTf4DzcuD^9|pi4RmHzD{ktOB?{<( zmb?LoM;ir?(42iVFv%3JgiKdhS%lgL5+G3O_ICGT!JV%JYyQqSY9?ll8E)tc*EB^` z?5``OA`IVRRn-@g{A>(@#b@4AV-r@4{JkJJ1!5yMB`z}X*=Vc0r7lCVJjTvMI%o?k z1-)EzK%^{n209GoRj+O0qIlEmSdwZze$teS+-M$M4Pt|(wK!b@TL+F|T9SJkoV`Ec zpljCW^W1Ib?_trsu*ANqjccbQbwT_Ptt%OPlnzG^geR(hR8DF#`%pUl32hI+_b;vM zD${dJSxWG>=W3H+bMc|ZodRQ{#%<75l)I<9iyej+gW$VKP5KBhSRxBGv&e?bsz@YAWsjl_lLOw}hu zNuxycYhvE*O&-4a(-*LNzr-VtJc1*RI0CjbYt}5>ci(;Z_{TnmXP$c&J9f3<%a_l^ zh@k`0=cfcUwaD<9%G@5vX{}A_YTE>~S%Ov%4&1a{X2Ys-H2C5)NkNll|2}XL>=;J(j}^>H6A1S{%WDh@{(XB$>g!#B<}1v*xTHOH1!cu)} zpgM801+O6ZGCE<7@cDtOwQKG`S9dp#KI$5XynKf5ux_}DRo}K(Qe2F@{6d{CuS(yc zUT-qJ6Z`kC^MXnpsP=+L73D)vTv8RbR11tr7?V=2-I3mwmDFL%_G-#F*W`Aa z5sRVSrTP&Byd`0ux^Jjb5t{gevd9M{@ogE|f8raILXnd1i%|)MtYFDUb(9>%cO|S# z#WGcX5cy7_T&wMgWuVaFfi(ztVz7$7#~!`8QW*(WK{xc%^cc)tAV?$8Wjsm+drqa`U{=E@nst~V49 zMyT)_oA#DMas2W+-oHfkQTI8joK4%84!kzIr*u`>>G?V(Vda;nXW9yt zp=9gY><&4=P+c|suN@Dk3$F1)z^?1`I>lxBD!#tLEtwqU>ffj@c=ok5_}=dxMQ`t+ z;Ly{LpEm;qdBUt5Ul=Q}{4=i(;O4(A#*V$cxbC{^aO9CkA}fs=% zp@;CJ>lfg%i)RK8sm_%c2|qRuAjmIUIfaoF*5!?<2c+8Jpri54dCd4)Fmwq1Ae+gz zX|8n9r1e1fRm(XGB03?`b`EK*z!xu_gJ)jawt^_~thBDO z1yOfO(O9F-6^i(EpHtKkGQJdqBkmYH@td0ZWe@>gKPh9@v)?0dq1lG^XFe5CEgpl%NV zjNm#mP^jPws4XqKQSJqo=n5!b9<43gaq!?4FQ8X|ii&|KEUfab^OG+TmUsav|4V@} zW&f*$EeE$_%a&)bbLZ2jua_85U5S+|c6tGnI!u`O5idx0cuFT>Tf(}EOA??8>=sg(F5N+U-dlAQkw zS0A-^bYq+Mf@A55-I)LSHmq6S?DbaxMh~mSB_Eg@=)HfgRcT3KqRIgV#;sD7)0@Qj zK$+s=R)T6xiFB7n%%cTN+F}~TMMiuH6-^r8QF!FuCrO1!@PUg67Zltv&KL=|eUYUj zQ#e5E%jMriz{``P1qW|79&Gr-dy)JL(6eh`8M;c@8g1Z?Dr{x=E&3nuB(&!GF=^zyig8TLG;OZHB?wpJ(t!{0oq)d zdJr|{D;a+E_M|)r!nd*zBjJOUz0F}pIC^@$iQvHwtl6+T__E=Pudm03E&GC1Nkaxz z;;^X$F?Lj~7tpFiRYj2(uo1ctGxeV`$8=%@=dbd7?v>5>^F7-!Ve-c?depnT09vtu zEfoOoH+y>8gR`{q^9rnRe!d@^dhF3pV(#3lF=FKLA%#fT>(~Da%a&b-hWhd#5VB`a z7rMK9uyNx`FM!n-^#9ap@AZQ4UqyFU8xFLr$M$XWv1`}!m_2JOK6LJTaP-l$QJ7zV zz5AMR_uY@-uYY?D?|8@0QBYU{BUr`p8LScuS5Ae2TvpIZ{YU}?S9ebv*01{~y4&u- zXD*t6+L}_{Hf(*y`WKjRDKp@c!&vCGhSJ0x1Pj}GuwnB-yta5dUR}H+*qUBjU5>dk zhT#-1U^Qd%U^LZNp{O9=5K-_$TqsLQF}{F1N!kLy3_t>|AtfnheNf7qh;S!c1U0dT z8QSV72`$c?(ui^J^3}hrn))Ca%Z0WpqN9oltUp#{C&Qv(i93No65v60-UNym+NH8 zM1qSeapiINsGM{ve7^e2mkS*72C??eZtQJt4IVazHdY6YIzLZ1%_YW?71-i<;gZnW zBb{}G<6g%DVjF-h7-!0nJKsjdl3uG({qM|g)c6EN_8@AdulzL?FqPL zn6{6@lk%ZM(CbwHB}-E;r#w)(nRc%B7_<^Dps4yaTc1eFwJ9s9T-y`RuPvG9GdYGs zqkkxj$%m<@s=i1@Uql8@ZiuweaN*=^*6ddv4__{wJivg?Ud6`gF7;E=ieFlAxzEU> zShz%e6`LTqiOK zfBiFm>TAo<;QbvrYecYGrTIWR)@e~um7U%})lAMpY%l zQ>I>ln(7fodE$$`{1waZL~%(y8XBf*9kYM`2CQEFM||U&kK?pcj|(cTS+fy$-1#v6 z`j>6k*L)!0r+M!ic;fL(P*fx^u(1O3=1svlXMZ2##trvmQ=II2X=-Y~m@&h=tNE!d z3eGlE`N*ix1u0jR!Qo$&@}k0Wj2-(yEM2v15Dh45>yL$gXYQ- zyb)0u@hQ|HF7{n&ph-a6HmD6V3ZH_sA-)z4l}yJk7=bBmb*&6J^N%NpyQr(P7tg)6 z7Qeq^0T!>=j?&^h95rVM-hI*-3~j0mR*I%HHBO-o>ui!rJphJ7Rcys@;_CANSC_)t z@}z|=r7fBXk~VU`G)T_!p>TfDFD{a5^panp5P8-SEZ+ z%)etks)~y6k83VR{eTMmXQckPtJ2DR44zO5^+AiPYsyAXbZpLA^<%5spYpfE7p$+1R9*Zk3I382RHf8c{<2S2~aKO@# zEI|8;(${6-;xnra{mJKep($6q(praKwd2+ePQT4-vOi1L;TJw4g&+LdzQ zQ@ytHWzyH-sbsSC;qA$RPr3G`%f{TixVP=8a&QIpVc|PV{<@rHzw8yrtuJhFSvq0s z&s=QLR&JN?+e@}~rn#oxa`kedBXS&rI6D5L#;te0h^v44&!F&(Q^w+x7tBCeNugd# zBaw3H_r~gV&G_E0=R@WVz+eCRR~&onvG{jVPfri7z4lss|NGzfCf^dD{>ZH06Y+T> zLu+z<^Ka{&q>Z_bT)A2R6nZw?K(&TP=7l6E7*|{ywN4sImLHzlyrQU?K z8K3&_5%|!1XQ5_5Sp*XGX@n|%0c_xNHJjsI)e}MJM0MhAeIlwBVoBTT=f^t_V)WW} z7)>AT-d0mtX%$uQk1=^p%9I-gp?0oLaIftDNVd`Sp|iUeTX!DBiZ#2uVAeXkx_A@z z?r#gW8;%$<0OLnjW7_0_s2xy(^0LApAjZnl+6WWYUtP0#Yb$PlU^!N zY}D3G@PaYs>LtJ5J397bKE%Wi>3*W+Fhh2`b z)&4g7d-IbP8>1stMJb#JJfdw>(<_ny!;Z38g;7Yzw#A1 zNb{Oag2>MW3vAl_JhrX>Hm?2ZvC)CnHXC$}cv(KqV2dOeqZluIW=`g z^3r0ows!@(;_v6a?wSwc{U^@|mKbYGGzo20CNXV5lHN)0I5_}r`GM{0bj2TSC)aM% zT=jArA28~r@-^2#@_iuTZX+#I@!Ir{wt-?$@w;*8_gS<6U0+SB*6V`dfrCxq`2ePA zJ317P*B)q*298v3O*q@Vx#9~Nw)C3j+T>;W2hN`KMEwxwm!RO}lHG@yQc}6&aM);Y zuqq~-Zsd|jWybUDmaPd#WzTQLw9!zL$Pu3NS1x#3M>^=4GJ?~FY;{#Wc$??Ff9ywI zTDTTxf9_Vab#w)1PJRC?$Dy*kNXMw5(6wXz=Kc86_n$>cSzT~o`;;kD@Sljt>BKRuqj4Oe?IW#7`viJPOg6>~iQ}1~-;t_~0sx9#QQDx2iCps@MxS zmIT{+M4liT!Sy+y&gT8CdMmvExW5{2@mtL(EFFu6hMB0TnT)csdJiNI-CZr%xpM(F zZF&ja-3KuH@Xuh(n0EzdRjG}WLAwv3vtuvTZ+IFjmjB5M9G!s~Gd~_~HH_gr+RInm z?fJPEam&p=2m?}_j9ls+!NgCVD^{(;=fCh%G&Np?VZ)A%bgU0sx4w*57yJklCtiT@ z6VBwfJQ^#ok^-bUZ76@h;-N#`fgFSv9P91v#JY9&qj|?oxb`dW&=2Z2{0UFW&~574 zSf9k$19Z4Pk6-_g^|p>)>}&48u6^xTwRWEuG~MUv+5z|%mh~L4;2H~B@uNfp){hK zLW2d;5P<(zSR_zZm9OBHwE0$X>s-N_Yf~G}_GCgOg`su&TgGiSp(R;i2cLjuO{7^hlVAL{>TR~s}yC$W2$3ybEV#3>em2lLF^EsKA+g&9ox3%A- zZTfRwk6r$k>kC+T*Y8ygNb{*5Pe+jyvrb#GG$?H@z^ux{4DLt^TyA;~@cke%>SyaY zXCEd#-7mXk#MPA!T2yCkZFqClR(#=y_XNSKy6RGV{c}e~!7GAMM)xB6jqbPZXvKAZ zd;=oC0>As+@BY(*SANRR&&P!qUKm_|@rz%?AMaR-4sY^v!P!%Stxix|n+U{a&2Z!q zjbjfx<~%rO$%3f|oku4xg786UP!C~CF3ltS8hqJkNCi&lq$FUDjy6j&+v5j6{5S5i zyf^N5KC}v7{_#V2;HkH8>A6P)6WYRpJid7ZU9utqI!}pp$+WUykR?7g3UCE^hN#nt zCzV~YvVc;-6sVbGwt5nMPf4jwWOGiP1l1+jkY1*>+j%Ue#sI&efy= z1j!FdcXoNfs{NhVv8&Y!g6_lmP5ZIkyWZQ}6}+%-s4K^eiGy+0$+IwL#xO4+TI&TZ zi;x@&p4fm$z8D$@qtz|LDmWVQbc#sgeJSx}OSJ8Y4Rx<#aPBm5%X_9i9t?aV@V zx$&hmU2Jl`9u39_#RVw-0!mx0!;eZhMn`>;!m6M86u)8w-eb9H`x?_SgSMoaAyihP zYw6itC!TnIC2qWZzNZs=F?)IwKKh}_!NKgo`BrA5bS$b@*94S2dtAZ-LL8UOy zup`$>Ed7^LP?Ki?K5?#?cAMT3W9Vjiv(cvK2+_JRJjbtOIS3yL{B46Bo|Bi7mq(m> zyx`VPZv7WV53R?UCrwYVxp~%ku$9?(HS0;J?XZ<)B`OE%LU>mZ=Gx3Tg>%a>hP2}` z9TRnP0H=2{gRfLVw(YSl8v?TR3MAyVRTJgG# zyhfUEe5tE1Y_^z-zo&_lx!Gn;>v$V==`JTT6E1|@>Ams%^3U(b@^w4Bx1IU8@{@<7 zvA!J0Y>fAh_n@_VPdk3~``55~Lp%QVx7%^rX{X^oJC&A};*+2JBpMnT@Uf4541c+2 z8TKFS!ly2r5w6ZLnTrHrlZZ>J6lrOb3KdQ`@CoKusbi`tjO8&2J2uZFd73J}Ebm~5 z5Wchrf56@@k}s*}6ii*p5APX<52?auKRO$ypD+sdJiH2*fAcQPn=t~PIQK|Q9oOUq z0P@pX5}N!t|B~1*eaS3g@17_KCRFw{)|H7T#i?G(^f32uo~z(ha0^8RHR(l2gka9} z5{hS1=*B#UTN^{!B(I*OAYWrk8*Us59npwKWj~-*F`^h_M%D-A{`08++`4N|3)XMm zhn4GhW5ME$_~W8wX!U~O11btJWKb0*kFWE5N*Nj(D!c%Bi5G0jL!LKp@&i&qP%4T_ z_~S>fe`vaQJ85i<7tE>&f|mYdw!{mBt=h03w?7Ds9Cb1pn`U9fiaW93)gOBm4|#IQ z_uAWsL%nUms?FNkQC^VfeHcFc1TPp;O`K=!SG^bT<#isO9oV#aM|gIX&9rUi;DdOA z-o9fuzW4p#V&$qH9C_pw#)0%+i!oxv3FzwFg(XXV=LL3lVeFW5JfB+*Eih%-Qka~X zjI`hUyzcH6ELwO2n)f`3s-joXc~D~fuqqsL=46Z;RYMq-fNjJxe2!Y6%0jKL3#Y5Q z7wzr6*tWA3o36dVb=T4kZRvpiLO)B@5r8UHKvZIIgPugK5nj47xnJ%vX)D)`BN zQTFgtEAaa}U-q6G_Tq@ygYfA~PQdt)HJ;t5fh(c3mFk?5Bq0hIePB3x+K{BK+Chvn zw~4i^QPh37o6!02>EtKBaCK%OfAnnUrhtO!K|{r z2;7#3_*!WtxlRX03IkYOs8(j{&NNRA9dcWfOm69_mbgq<6-PRG0K=ntx5Aq^y!Wyj zvG+iGu#7sF3yXE zTet4O<4?SRd+&V$9i5{vbLOW|UOtfYky59x7aKP|jm3+uN5jDBm^ATxRM(90bU6*m z>NdqNF8njg4q?xpH?d^#AJNgM|$oQ^)(bH6=j4d-NKA?l@o+nmGfUldjLUJ zTe7xm$cQ)w&1Xi!jXOwao<~2(ozM%b$17Fg&2iiCuNPL~&W9Ic`P!WrKe`t0I%zcK zPHzhQ0$7L5`1YK1S(qSiXH3ea6PHeM)I@gPCOWn+_aH^kj)A{%B!IW`&0odgo=ZcK}1e5pn^(Tev>gvVi-}wjbeqvEDX?X7` zU%vobclF}B>#oDO=bjsE_xnGQo`3#%oOj-N*tT^mj-E3V zU;FG4C@ogc%CLBj;4;G_v7P9!ngpKnEE*EHts%-|A9i8VW$|QL9vIkM>A3Q3-X<4( z99)bmtm9jBhZo#<;nl6U^MRFK5J2FSrO;3*~JExeMHyqF5NYJ=@w zK~+Pk#OY52BBEKYwhKs|l}Gh#^PL23L?b?1M@D>Tt27^UEM8c-nR_fw=MF5RNGNflII1y8Zm0j1sFE;C}@dwoJuEf57+|1 znNb@yJdWmI;_k$w2c z2c}@?;L50}HoJF^@TT8X>WT0RwFg_eyo0G+CifJU>o}WD0X*-* zac|4(54?>x3Tu~%c;PQs1ugLp;PwwY+`gv;Z>`^fEnYBdUvn$=>~F*Vw)Vhz`+x=B z8-|hrr6{T_M|rgu+^Y41U1caJ&JPadP6m{qp9JC)*Ze`xU!r=brw{FW4`SitZ({%U z{rKGbPsYWk9Gy5>!&aC?%Q#q8=gGbQTUK3wrqRWTM&~Z#FxTbF1jG5;4JM^|iZg&+ z)pJn^fLG~U%!lIo<)5C$cW!tj(4(v^gmLow+&|pz#&4Y)9O~}E&jqq*&)Q6s()qw!;~zQ#XPq+5n+O$aY-$TQV6H^sWs%ZL7923V2GvR6i7rqu z)C@{~1TU1lWEBTYTx{2xoa+;36^=S~r606(<`w1eL2InluJu#tcVUNl5_XZ*SbQXCIaDi0Ay4l{}D3q5ELFIrEUht3Eejsd}^&%bX(YPr>mbB zYgAwr8B!3neetE{W5T+sTM1$!ZCzNrVjCWLb~zq?W;x^`iRqK;apq~`g8){3ULH@x z>cGG-rZ$$!fsvB|$2vCfCr-QB&|-Q0$4dk$ci7uedh`v5j>--lfXTG83j9YnVMz(t>wnn5J2Cq7nqPNgHj zH`IGO@b|A>ii*+_r@wRwl$C!*d9o3~`)M3qf{MBV3lbhXr<#CWb#qk(UEPH8uSz4$ zanW(nl{xZCO$Xpj$xqkb^ca5nhbIH0@9W1BEFZ^VQ-{T_K%TTliHg`mMc1=2=z=d_`1lAoG&}*A1o2JZkaU8Dx>a)Ec?C#Hmby+#Dp?n)` zRAs+x0&wxl=Vi%_bNRxFH}wyc4hSw-crbe11%l6_U6ZNlNY@5 zCoo6N9)hbcpX*IPieXOr^gi?R)~s*FFK&Gedk+-grkifU8E2e<{~O7l%r0571m~P{ z4%V(+i+9W$iYqUjgQ|)mm=)jnA@Cza& z5E_1M`=UyoPNWpt?cNLiE53Cvw(g&TqmKHD7qlsZkx1ajo;V$~figJ#EYBylweP|1 z-HWhq-!infZS^u+gR;IpFVK=#g^J4I7}RtG8XBgBE3V>BBip%hNzxP8{Fi=?%^U8- zNkN+7)5k$Z8xnZy2VGulIsUdBMCvJ$WRUOZs_U zrvK;TIMCYV1%3|&0l0P#ufJ;QU`rSFALv5!!7eXw*NcN5%t0?e)#jCVbsq}omX{Wy zuBP0h*?@_oy}vPym@s-E>iwNX(TZ0|bRV$}Fg9&n4M z1f!!#0|`=YiDZO33`7&d;~WVI7#X&vBBjA{Ko4%i-eyDA7MxnWxB|D`QjufIb6DQp z+lwvR_v2qLuEGOPF2`GIc6cwvN^tDlp*Z>2kr**_0P^#Y!KBIqh#Wu?GybZ6O{0@* z9tT5VRf6E*4L-QUwfpTR<>)CTj~Tc^sCWfd&SQ0yROjLaB|T@+69l`$`@TRU{0B?l zk@{7AhvXl4*y07Re)@-hVf~gp`2Hnl;qu_qFi%R-%KTrZ#vL6GVpZw*y*In~Locr$C7J4an zHZw&Ie4FYYU)xtmxp3LJQ z&qZHtwxO2wk3W+$*Ges}Php|wvi&R{z`^TWy4%U!!%{|rUX(^Ix?|%dcil5b1rVHS zj(Of!YM(Ij!Sa|3j7=V{{&vk2 zq&<`wUN?0(F7fj8pPAQf+K;;*UWMhW_jwbgF}U=@M`HA_y5QqVK`p{Yg2}>;dU$bq zI5hax8LGG?$f_@B%{J+V6|~#9PE4O1tgOyCjjdFIp^KD89>B+76@K-zt;{w+<6pV4 zs3!%}@+0}ZxqKTg_~M;7^|V`2S2s}s6396a1?aHqmb;iV8?efz(I*cD3lie7FW)~` ziw$51yqy4+k95<6OXkOUcCxe9x!MxBz-P6+-%o%%n z4tW8<-oUT-^vK}e&+qbn{Vn1?oR2GD%bT+m_(7?%VlOaN6zt$ADaprxiV`%`Rboiv z05sH=2V=pYfmOj-RRbzYQC3ob0)K0`#WkrxOHIcCt4pOiA8)-&4=RuPP6(>X5guJ3 zV>?y#N~m37^J$7s%ZQH{P7U@#u?uZ=BvUVGw{rHA4x{*$q%8nl;g#ZxPq8HUq0?mF zJ!!vE*@g(VZ_JgSsSire=Yo#M`^OJ{zVya=-1W#3ELglL2xQHiG!UnqFdEY)H3T}8 zHji~wusRXSr0Q?fJPpPs1Z3b=lWjb-(NXFN3rdY&;=eg3Yi%d1)H)Av(=JG~Qb;=- zgUb*8=HT`Q;Mlx76RP208SCY;6n7;VZ;cfwk^x(A!Ta_J-Ij$&+*v^gy? z^LW?HpAlp$&*~FFum}fl>b=RQo}2a^AH1US>krQ=q-|A>ORqWKM16zZk5N3?R%7}> znL|J8ZF9AY`;BP`1zXIg>Hnm~mfTx3ZE~S7(oqg%$y&!Cn0jWJuEjPu37+QLX=6$! z=T<4|QFq9OrfB@SFq9X6V29e-7d z|E0CheQY)sEZUBLKDHVk|MEZZ?h_~D!m|!XQ+)-(PuxKhQ-H;1i*~usdK_4agGb@5 z!B#BZgnK2=zz_Xe4L*s)BdC1>a-E7Wxfeot;Ys==nXHN=NDv3xxY&zf3X006=k-Eg zSra3*s6`?&33g=`qP#a(?m$_^5L8qRGui;c7Mrv!XA$E{q%Yad#n~(k9!P04z@Mw- z#Rsh0%!%L(^+6z~2YU~sqH2T(UyM5*Se1NL)vsPyP!N0>)<5Ug-(}&SC6y;cusSL) z-#=Tb0M%ZQsi4{qOcezOrzNPo z3q6>ke6w$(wjc_^XyuC92_-Nhn2u6ZDz%yDMso{Lx>D-f0An3YU7V^&grs73aWE^P z1!%?);*0GMTED7`j?_lvrPY&u(%o0A@WNCtgnAMBl}He=K}u*tMe;>ZMHVr?iCwGk zP#D#Jl7-5IQ~I^)zaIO4ED80lRX z6vSs@QvXh`HRnjURPwc`BA{!QVDJgOwPdTQX~-&HMAw~Oh~P?S#Kpv~Yj6bCz{8PJ z+XcPPw2p-ir~DQe8V?4(KS?ND6ItzVX~)CQEeo92r`~fsiaf>86qZ3nyO4vob)%YZ zw9v~auPuaOx3D$a+~UQp+L0`*ov;3gSZ0*D+M-@7ZZF~1_5k5P9>2vuD0Ori;Z>YB zs9^y7?ZEyQP5PVs`mZhBgl874#+lJsSY~@<0?XB>Wolhj2Lw1dr94Zfeq6%!qY7)I zZR3~gGZh!r53Zd6*SB%L)Oc{|ns8jJvdg7j2%G&?JifoeD_R%e>2o?RbAaV&1KE6r zFfwOZxRPm8q<%EeQ5aWWao3z4+jK6@5k^i}*W^>Od`abB6+bUGY2g)G{ao}o=2BSd zyZJEdzyY7qQ)nm^v-ODPnWGz(t*JAT=L2e6?JG?6aUeInP4P?Z7s$QMv|XI6DUAQM z!7p5UH~#U+>%m+6W9JURRiB!NDlK@$TY% zK5epnrL|mPNksQPT(C+dDHnz~Vln9xPbBS#cbf@Dv~+w@w>hO>SrfV{aqW}<5qFZW z^6KN*ymLQFN(XzvniANOKvq%^bHOOJ%oWH|VWf#Vy*Cs?!y#<+6&hh6A_Oieu0eTu zIX?NJnfTzlW+u4vyoo`6o(TT@>o67@X-ZzG!!gCY7)CKUVYE@{40Q!y0-RQkbu(gD z8Keo~ARrTugT!_eSx8~=AJIysBrCe;gGhsBBL0G)-aUf&7^ycnSpg*|S@n|HMi<*# z+D46C=1v94%#MeH1BqofmL8TWc&C3J8jRPERZmdo6NnL7tMzZ0F#yD*p zl6DkEktDb%4OsGMTfyL=(s#Abf=dcZRW(DWSpZiuG$JE$ZBWv)udc?X?R#cTuu$n8T zD4_0%HMKx*1&~TC8MdP9bVU%?4+c-L%T$-S+COw_nz>y`U&)oWfby=^P+`=1ROczL zwiPp+t>~0^o#xw~`?g3hbo941xL`IXZx|SDx~1Q#evN*ymYy^xGL$RZ&#KRi?N)EU?p-8HSCu)HFV`MU2XoO) z+9o|OrQg!piLd?g0sP$yUisV9=gu62&wqT5_cp$WP&B#mgIBM=xf9?0#fum`bTsb2 z|9*@cHxB<5)AZ@namO8Z;L=Mk#jCF_!1sPVAD{c^Y%~olSD-k(ad|fhGY~~bPQl}o zN_kR^dTu3OsC59NXN^D?r(HHHjk8>q;P&!5PL4+022L{xtmHfhkY%AJzh2#VHHG(6 zGoT3Po-q;cI&lmh_}3a-f7=WA?Vn%7CFjh+Iq#Z*!2_$cErE&m7Q*ON)xhF|lm(gX zr9q~2MFb+)c*355lcuSn;(Aml%t%GN@m4Eos8YHTM%#Kwx=cO3D#o2h!L)!LqvJsr z#>~eDIH!S#Wc5hWNazh$F#Frw^7D%k9^9_#h9z;^1671jc_)d}J9X=y2IESkE-4Y2 z)%9nj;^H!tl+jT^EfvdGX!1d{1yYz^Td{8uRpf$e5=6Ejd_=s(nwO`rn(!6NIOZ#+?fvz5bJN!r zZ^HF|eF@LMx*nAkML6l`;dt*UM`2K7MSxG|oK+N4_?qHU%h7twQitF-@?e3pD7EDH z?hmgvdepmf{Da{Qq%KEaH6&R0()*>rDld*cEO0r%`-*ed;|qi3q-P#=7|M!^biWoT zWr#>B=mB0#V9L1b5Vt;+@PCU+@`5ddif%KM!h4k~U0mk29!fi`DK(5Ld=S`P+WYq4tJ`jZ0bmExaQ(V$$k=fU@ZJcRSoPw$AYLTk* zln)gLcOBOeu+YAM%WG{~TGmeS|w38nq91X9aMEuFe%(|?#!Rm(Vi zF$3oODloOKDk)Bfbr>B^52B>-x-0 zE^&0tx>A!x2rfyx?Y1Zle6g=GgNcHvCm4Pxk0u=fSfnGEwsF3T;-&v|{^$@PQbS|12)F2ioeVUZslqxJ|$sqW23rmXh3zHY; zY9yZz=`PQiw=9bi78r}RsuMVyLrB=-+CfJuN{hP(Q#Z}4swl+yXHLRyopm^7PaPI)$x5&*ECtvUHWKVA>rp0+0m!6@peuiGY(& z&8wn}ktdaq9$YO_Khg&UK7kS1WEcuRDua^ns(Caen3KwZ_OIg65}aXPpGqo1*QW$3 z5(bq1swyu+Pj@q9Ute%elaZ*-(3MVFipnyBP)fOLi(ytkO`7(c#{DFZM^Hub{c<5H zDu!Wy%f@IdO!dSt%ji0kaX2dUiBv}u`3j3UN@%f3q2M!29J(ITx|$rKf;jLY;(Vo- z(pgeETN29ZD%G6zg{uQzTA!;6QrA`nQWs!5mxZA;xO|r! zSmo92SX7H+mJM;GaPd!jD-4L z*X7Ffa-Jj{tVjlje^XkSAGTMjB9TNLWrCa17Yub?MI^XH+XO<3GbKtf<0d|d4vUBTHVX#mS?2d!f(bCug6; zn_h6Ph*F?=I!~%D@H)t0Gj+k%O1J))t5(u`nQ5)O+^Gv!>Dv28w<{`Jkor{S6gHNp z{_Eyf^$OHhz|^CB*yJ4E3yZz+csQB4c(LoC32V}@%ST#pz?n~b)%6T4>lNr%B4CuY|#4Rb>%QKVdYEn>!4v);Hs!C)eV$-?NkMqsL=t(}2{zrGixuDXZo}CJz2p5JVt)k_NBzJguT4q5!K@>!jtr)%HmhdnyYN zMYpt-6eNXZ@wPS6e*(~E@&O;pD4_+RV&;U_&FTU0A*yKihBojJKD~b?k8i?l_rL7< zs{<%2t>qa{Sd9Z2Oars>bE!vRG}^rN6J{CNXV8s`ic2cc+SV1Udd=4qN41SqS^5;S z5o&->q`W69aTME#bu1YzBfXWR8FXNY12<~0D#aOXBaBzzsX7&lg{%safEMg!26CdC zDgM+ZC3L$_UtJl2wpdS7P~El_yQV9WV%kZ7Sn9IYL?Xa@b)hyIn*3B!6fW>Bh_;I= zwi8)q%7?NdQrBm|SYawvaqFG!e@Jf6zBatNWHavdf>!evZVa{r&YIGQi#~V^CXKC& zzCbDU20&vT_Hl>H<9X5ZIC_j-Y4|0>7k3X!c@}>z8Y&EJhXn^U!qiAieA32Sgiq5m zlWxJ4Ke{vM$l3uFXsWOBe#^YSatv$q_kot6vZ5q7K+j07K2;fu4C?MD-U#?V zFPC}>1y>3uH5g9St2|v9KDZVu*6)OVFlX+`ukqN6Zv~%7uc|C{!ciGg{!H~up*eZe zdTO0$IACCPoSX*RTo$Ei>QDB{JsVC+oAw(=8yXy)@bfy%;a2;F;-~ju>gv=une+Ur z_aNnIeRchZJqe?h-X2Z{oKCu2B$cb(_s|8|QqzyDJ_gAb?7hCFk>iKsQ?&uE|EV0g z{-8RkE_1-48HNXBZC9K-6IZQXq4=a z71{392TINZs`)An4wbO*EG+eNu`U}P6_)_F;>7%=?E}FjOjTzm;4tZHbh$PQrXEmU zUWi#!2V%;EdaT>HA1^Q5j^Ew>BL05=LY#8Uc)b6e(=cjSZM2Qe>=pGnCODf%U1CAl zrfs9ECL|RHX;r-Hg6f0z2RmYMq52|9-0ttE_Y0Xk*8=X`VEcIQ41CDjZeU6*nLlb4^zZiqytr%BxymMzWHL4Ag!|1rg7mM9gqP zFYT{9spyEH#q>cX&rHDR^-aHP}=Oo%heYQEyci+ds;X8)o6p^m*WE#9&PywJxO_h>ZC1o zVE%3?JE!{F3q>Xr}g+eIvknr z(sgbHQ>u0w4bO3ABS@KwOGaEEgWnW~zVgE~4U=z^H??;Ve2sF17r^olVLa65>KS+P zmwG<>!g74@^uyS`77Q=BrIaUKZaieHbzFZV(I&~79w3Y|O3UT)gavnsU%wWXat<%8 zCmEiouF+rWLbGU@7GYj6QiO@$D9vRwGYnRHR07(T(pp-qm{(#d&9KzhEetE<(Ui&a4QUlFveg0dycN~}b%Q9ji+4TbmD)7yj2?r!vY z!7G^r6%=84{}<$Up{uhMrT*6e^CFvw6iOt@mBJ$qM9H)XNlY=;R|su|Qxc$&DR+_v zQIu6bF|LHosK4VvZPk?`1T|hM!C0yc$K1G&V|@~wD~YeA=|0s}e6g&;V6iY&MCzlg z8j#WgbO~78*hr3w{lxw6I%h7HVIQD-!{kO#6;N)K{)+CCAf+M~V;f^^kE-BEBh~Gi zKDzFnLs-9gAO7{?O5FSSQf%DXjM@Pum@~5pSA1*+#*C;ziT{O4L4B*jJna}&2u40< zDa;rOg-OOY>hex`3!w-;4F}*FA7Bhbf@hbl>)_Xb2g3tJuEI&gOrKgJ zf^DdIBIU8*Tc3GXuuT6zOD8t(XvVtDd$4<7Tkyre4)4$ZUA=J^o|qp7wfxihhYYO2 zxZw?$K5;0fjvb8p>T-VHca;1fnSYMM>~SN|FrX52j4(wn*rrhtQXDjyWnrU>%kmMA z1&PliyioCi&`5b>tR5;}vjwJ!=x6e9Wq|e(RY`8 zTdS|2V0+-{H}N4afW?(_ziN_>@+`AsOfBh;wA{UVCxo+a4|3&62M?;Af`OrMaNxJ$ zbJfxDr<5s=(D-q0Jyq`$J%Z{6^@FT+Ta->&sB~Ozo=ds*m#xfpPi>BPrsS9JQ{LNz zFf>?YTkT|SgEj5m-d~c`GW7x(xb64-@fcbDkvt;>6H*D(2V;lzbcz6j39_OZd8CP|>BMp&q!ThS|teXs}PWbl8l2iM-d3l(L>i5Y9-p%Oq)x38(XqEe4L zPO35z>9)fdQsab(IlhirNNUK0JmR2i9~e&&!zubARsN#PI0z;wSCVwO+AhLN$`4Fe zAwjs)gLdjdtyJy_MJ)iG(o=$3%Hd$~nPf4FgigXsJY!8+(pEf5g}+4hLTLvQ)lcd~ zNQ^HzQdL!gD+gP;@aPLG@VEQkz~U9#P*{+MBW4Z8$Im-Dc)?Rxln;LVPy|P>shkWL zVZouKr2iC$r}=ZWt|XO&ru(|Hk%S1C`cYmgupH_szC!}AnK>&nsn=y?Lh2d19C!qD z9};M8&BJc*uf01DUR=_9{uAkzbFWHap7etG-d}-4RY@NTuDtj}jfC&0y1IL@X?rtP zuHT8Zn|EW;@-5i7tr=T(?nhgD7Z$D99Q@t+_!}tmqV1DLH)7uOQJ6V#7)B1M3nK8T zPD;GAXkBo9(#*+0WIk@TMf66VD@j&Jv@Ff>1ywenKpmsBWU4FAi6DF`t{M74)BH*t zj$2{i=eG$7qeVLIxSl=n?XmG@&)2t_`75vr^7C;>^!58ogfSg|iR~*(Hekj2U6?qk zF`|-_+c0zp03%bgzMjvooUm=@v*np?B9ve%%aD@G)Ty1o!0G0Lu9BlP?7C>UCj!Ht zDP+1f^f|X1osT{cP7`Y8euoFLud+ z_d)KyxeYu2ZJt0Beh*le{9#e=&H((B$BbUS11;0=Yh&j zZ!f3&F&uZux~e&pUY6cx+1rji2l4$IAH!|;F9`D9`Oeeu+Z%ruZU2+#?C3yGPp3D| zTR5m2%9grIy_TJAD(1I>n z9>*s`Lj!TiUbPAd`$N8K#NhA>{nG1$qM|&Ua@+_UcjPcEUbYi=Jh&2PU;YP7pD+X; z{op(tb=U}0lot~pV+O2zF~oTRRBU5p25&6-5xPzZ!luqI*d3%Y=0jz zC{s76(NVh@;9=KMd@Ok7M`&oAO^t&$4#HfoMg@{)xLLT_@~r{tV7 zt*>dvr@_9sZHXV0q&U$IejDHk=lpK^1>u^$CXf_et z3O|4w!AlXfPocv;Eg<&f zx#qNNu$-e~?x`P42h}J)=2P_r!XyKZ4=Mw-%@V{g(mL7;qwwByHQ3*ght16eXl~2% zg5|0H$99=e@h&>Og4V7O%@*&kAY~`4=sy@1lony47nJhPz317Iiag>R^cv8(l-!uea6uGA!%5Xu4|37Trs@LJ zDFi1sq0pvMbD14C0a1Se{!A5>W4(<6qrBi{SxF%dwsqp|CLimb<~H2-iI`1hC zLF7s;K>yYIL2V02ecC>uv`xUYJ!p6+mucUr0bo{HNV`lPZMah_b8R9_<&C2OaDGIR+MHi8d&VYjq2)-VGN3_pk@yXD%n_hA1%U8q_OFVQ zH9F{Hj`#Mhr5#`S`F;53lS_iU(@sAfxBTHxsIIO_pgKA`(ACuuo@0?1HSo;*P59+4 zuVc)(DfsD6e~ROeKOXh-7&nSJG}_T4dLE~R zf~lwE#Sg#Irg16_q0|9%z2!7J#>;sV7k>a1N6`9s0^r0+d(GUm-3fziY3f)zu8 zYh^%I4-#l}v{^ThZ0C|`eeh0P?`=t7;~$}u(HH}0oGfH5LPo!G$f`_C90KajCA|wn zMCyU=w9BIJKc#3Tf|s`+J!fukWXfYNeivPxmtpvblf8LS8MNdG1oidxV&A@1*s%Ty zEM0b|7q~tKvu1tL3&a=d4A5ju&?Q4l>i5yFRDL_VyU^X;9UTM0;N*CZ@_Kta(b0YY zQ^q!i*)lcxc$=7v@&kH|>BqN;x=PO+r}h+oTpn+oOJ0Tr`l~!$M1iuzzCUts8}cQzYg7 zU;GupAWvzK+P9_whxo$PZGxyyWM?2Mt1$0NsJ){Ht2ge({5Lk>nU~k$t<~F6RaJyj zy@35uvxi{J$m-}ocEE5tv0{K}aKf&ld`1$?z1q{#0t1r|0|$rCLQcygHqFrs>e05_ z_>A#HiS$SdW9enkt zk~2JxZ8ddt^#qQ3@rtc@;f=L;`eo1QZr>Ly|Mv&K>Z&r#oHP`}2i4-Q4=lh@lgHwh zmwy;piS`%k5MWm~j$?JuEG!WiHn}X>@<{!F9ShGXt)JeTTynH*bXlwg#I0ALsLVG%_q2UbFLW{9z{mq0oiiO>R;(7<6(5$=5V|0lC$0Z z^fh1(Yrz4x^%bqtzrKNn z-KLAVv^%TJ?H5d+1(I)Xqp1rNHm19F^B#Qs8-K+c%Qkysa~@88=R5I-KmP@ll~vK3 z+0gqgTKopie&5OXk1LMALr_;!5j<~c z-k6{@0yzdvh3$wvVRb-}R}qS+wLL;+v)Kg`(RGp~qidrMqdO685hJ1m6dF>IhtS%9 z6gEZ?;XL5Iz`gzch4}s5Z=$Z@D2$(QwikpS8w9d^-xjZQO33(uqpkzk-@FFv*Z&J^ z*FNk87^^XT#)TL+?mZ|dDCKR(5~yNY>`Z6Tc-qJkjN@50nsI`aY0KA7^oijC^J+U{^K!XJi9g_7`C7?gFn* ziLO)h3O?Njhc^XbSxA6m#nOC~78hbjV>O0)fA2hIBKBT%JlDnN0ZhOY-l&^!)LR=?Wx z*rpRUJpwpKB@O;Uo`l8Hbv#@j+w{P+4^swluC&z6MP^*z*m&ajP+@o)Hf~LPfXREB zCmnJ#X_#{2xKg*5>gW2U^yqjaGj&gS%ztFucWm5&P3c-b=76zIO)}uiWZQ+=_7FMHl0{-@i6E z^D6E2@VBGA9mNHCs3)e@~e27phMzop{OghF6yCptuO;sQv1>K1%n?1ul-5T zKKi)4v~tZwYMjY7+Hi8?WCpz+*E|g`?YHsE>Ed9fLDZnTi>c1_$>EiHM{iqD$1p)}QefBx_Jg=*@_UMB)#8LegxJ zidI4APmZ}Gca!ao2t7~8t1#JAZZ1@SD?G8pqM@O()$={yW)zRz)q?cmPo^4*u9xu=}3NsJ80t1_l zL_=+p*G}bY=`?_3xi+<4=mLxaXnx?TGdSa_H_TH7&8@a_1h4$myl)W(H57S)g_4v5 zA+&8}5rqU_dLVl`+9WZFNa5lDQt}nMMAuTZY9Iuv9tic2@<`8+K99s#c>wv?LG&BL z6I1j1uCt@pdx6p&tPt9@uLWIQy}{XxHPvOPt||?7qm-8wDd#mRxFXu@EKzX}Nqcm5 zp(0fEo(*a%b@T;XsZOZos+xc%Poegqa>kX^+m^OWv46mTPcuS0I@r>Q8U&tnM8FDdBtmY7h==Cd@n|j z`h6}*1#KW@g>-ybklw<0u+$KNcZz z*%m(oUx^k&QLQq~H~p8w!GbsCg>LUL`H>2*0_NnB!rJsyW)}9CDR_hA8l>PlA*BFwaLWg2hC)*jkA4Z@WElFeu%SAwSIs5 zTuoF?G(Xlwz-$L+FKVgEGhd>^#5(2Tlk>M}o>czj>eyC@>G*gl+wI=f9`o898PvyI zmrm=oTzV8+TKaJW$`}0w+@eDfW}=U%~53_u{Inuf{jN@gG6(>wikB_T=;1-~JXA6&1k& z??1kNL2$6U|BxRhYPFvH*cCe}NS5d0^2o2GF!b7{xmlK?@W2MzgmP>502&{f0Wy5C z`7ZBCEYG@PMWo;wZY>jfn`HV6Zp5JN)4j6KiXZenX6{fNJ$DH9@9zxGjCyCWMs-!d|p<9n_GqAr93Zaarm@hm_2m}cI|ER z{M2T=_}Xju+XD+xUq2=IqM#p~DlDu(eZv%t8Giw)Do3NJqz>`1@_v9iFJG6np;Hze z6UNq_uwi~%{4WZ2c!8_l-afrt*&de&BF7~Ay0LA`OE`Y^NKem7?DJ=(^CZ&kWATL` ztOTG!F#!?7MS2tKm=JmpE5u^D4H;@=7ywZMk2bSXZackT)xP~5c+Km}mltlr^0hm$ zY1@8JC-Q@_r@#xW_(z8M^6lyFMom>Q#*b>i=wWr3Ib{fDOdJ$^bfKuAAmBG#O(u*l z@dZ38ep)?PA_(G1g|!Ht+Z|#oQPZxaVr%J^*sxy!VfbsPN}t*=QZo=rmDqm#fAW$b zC6xY_fiZ2}bpQ(%Z^EO`t;7qjuSbg)#Ht=p;sw+jaMtOwJ-Ib{LBImS3-OVfU!?v| zGBB>h`C`uNP&^85Nfce-$DqTC03N_wZ2k_!mG_VvqMOi8%Z#=C8_H-deFF1lvd^&6m;J8 z;EhckZ7M7+{J>H#%@1q4O(c7grNYz1^&9O|`b+C`G~)c{UR#3?Uio|U^c)J7e7>C| zA_q8i{9rtE<7L4cEuMcq$i^j3rc_^D`BI@6-@9zU7VvcU7azRhVeNJbxb-l*Z%rFl zp}6-(HX5+V0i;aLp}4@*Q-^gmxX8&OrNs9i^=lk`)jla!icc-&@Tg_5NSVUA_;e?e zN94qp9nQs%S#HPY_H!oh0B@(9oB_KJr}a%3`<6^syJ)$~{&bC$R^6ev0XSvt))Rhw z$yK%#hVrJjNTq1j?e(4w?tJVGeC`K#1urXV>uT}!Yrct3TzYA6@Oo-*Dh-JrT>DMj z@y8p2ySA=UTzTb{`26QT|KI*ggKsx&-@YA}U3M8Bc;EpHZY;-_FPn#Hlj7}!ezIvJ zlzixAc9-O+=hk);xyXQ_G_pU7mqioMP!_Q$EODEVnk1Bc*a%2y6_iX? z{E-(BaL)09Tey7Tb*hGKN|q$kg+9}f``sMdOp ztcp1fV7Ww{OZN)Lwa?u0wL9>ezdeh4pID6c&hEfCMmE*s(svz?W2cWtS#gmfk}Qg( z5wM9&zb+{B0$AhAP*{?u<>#Wxc8)?Uxp3^F#gzg5VqtL zt~S|Ht~Q^`kdTXSp)Sz|Z>wi3ch%3L(O-Hr+1$Rp#XLUV9?iP_ku%MAUE6TQ*DjjK zfvzhLIl`E-MJBJDjI-PC4w~ocZ~7x&Dz}uA+*5!3L@v6NRiE!~5uBfS!{497k8k-` z@GQ{S)P!GO_glQ@z3(G9)px`pg^Mmc7x&(E4~7mM797@o=9y;(E4Th9r}#{)d+)s$ zP4#8?`sa=ewvC0!)iW*&RZ{#Am-9#jVuq5-1aBp_Uj>&DMNsi&&`Ywi=m6Q)X2T5& zA6ax11YA&u#bLKJKG{8fTYE3wT(KK3y|xw0R_zV8AD;Ej>3D}X*`6@E5v3)C8XESH z^WfgXgD}UkaP>%Z?UzgNNstyu1z&WnPJ;BNDKd@kBl&8JjuQGZqC-OHHl0?PF!)S~ z?AqIk6VAUO3SbQa)4_U^y?Ui3#V9T;jsh4`E!5i<<%Q4OG6+=pL93oa{)^<^5R9Hl zLve6{D_35;0?+$z-h4NH|C4jjR9l(gkHK`&g`Pc6=y{wCB|2eK_qcAlgwF)y z%qsdv4GzZ5?CtBrrmfBRmltGt?$r%w-qVIz69##K-6qT$--uC-l_)PQRFK2MoJ{_0 z_X0O7H}1!iuW!JU3)Z5lsuUl3&omr!_~_sO@>}j$fGz8ram?%ys3&xwDQNQAx#yY9P(3w0uJ*~Xj%QFny5pt;ACHR0C0^(oS?M2 z7Fq^=Fg&|pbD^v7tNJKPhHW#0gOxiiSCOXq{@uFWg;=vIw3|LkNrq5DSmdUlR$T=f zz~ar&UY4f%YZ$k((C$8TjdZy<5FCJ8@6;Nc zUb$?{rbmFAPgwA|%0Y0aF#1X-4u;|bvfa2%eiWZAQO}{TP!SFeq*liUt?Psi!SQRe zalOqvUs?VMun)B&2ii7TS-Jd9$^Hqiy3q7dT|_0#Lqbu*>da(%)Ez z%+-RnlqDb+^c`X~3|ACJ6&L*7H|xN+n0yIX&cx$};I-3t6e zU3>7vV~^saAGrvlMvcN9cie%A6DQ(-Q%&fWZp}CX24jfZ=Gt0Yg)+9?jK8AhR7ow#~A#QV7QdY;`&oUa44&{9L?tO2>b0 z+v=~%dVMRNd3iJTALz!M>BI1TFPL@IVIxslQLJoH6B=suFlnJ|9g5M1Vj{HFRZ~!T z4$BhJLaIp2dR&tU3AIqGs-lw7wc(0Ld!h16`GfZBU;3+ePCWlc9CP9yP*zSpG+_zK z`Z6r=0*NI>#VE|rCvA@VAY3iv2d(^bt^A->ulF2o$Si3Cz>f}+@FUG@ox7k;N84t+ z@%r~rQM4D=fBXFyJE}gBqXx>6i%<&& zcz7}Hef%vH6%^tl@1BO^W(-ALRWS$B_tYxf@$7QUo;C=l z96cV3m+rzB&Y6L-;&df(XZIm2Ub7oF-n$T8UNG{~^X6gh49};FJT1_x29o`3JunEZ z@8f`7e4hjv6`u7Vm?m~!-ZFh&N$`7l`wnyjTWA0I_)@&|#s=@jRW~M#s>6|o55~M% zgD}v0*^-_Q#wm*_Kb=XA833%`WfV_!4l0N>*=PagGErOI{+8Lwv+S6Yg-c0Y{=kNl zGXmZadkzV_vc3duUBb{U6PmPEDmqR8^1t%QQ@<6Sdu3-qD1Ve)fEPUn@2{#ESX+VP z=8VG;(?}_qqq+x?mT3n>ypjhlQZ7GH=smMn~ZJ`lpR<9+) zJBQEJbwK~*!@=>g7D_$Al*7p*rOnZ$?YF^l`r)Sn&mlec>KeScdOJjaI*Ca>jpCw0 zoPO+NFR+=P*(d5R<%{DxzUT0$^#y^T=bXjAoSPBGzp(N{Wvb!@__lzhr}8fn>bg8q zNU6b_cy#>2Dl=7gI6JcGyX_aS>nW$Rv>h(IHhbYLfeYl5)Q;q=_4n=aX#`NHaVXdN5BB7;^gK9<8t%Q(GujU8NHsQH|X?S8~8w~a%b zAIQQ*@zA<9TXyl9;_xSMt+?tZ_u$UQ76uP7C!Ba<@TI|N)2ADlRGZngYd0Qy@ZrJ1c#+60Pt_fy`I>w+_N2yZvMMPk(K=c?V=CSnJAdIueB&37Vav9I z_}mBQ;p+1a$Fwo^s3D>apx1uaq66r zm^Hp3)X%65e!y&KLj_Jhax`}B>%dKSyc&FLp|QRqVMVH4p~{ikULu3o7Sl!~b|RzT zmtqFgb!fV;R1Sk?;p*zwmTbna|M&uac;i#J=dm}v;6*piICU&O@!=VG&naUtd3?PW z1TRXqTq=l=J!zzkq{&Uwms^oP2h0qg16zl_3rt&@<;c0(RC3Rgg9pVD#F$*Kj2CJ!D7S++wi7$Na z3f%tJzo4n93HRJ{59Z97ga1u@+Oua*u(k4MKl>TVO7igOkIcrY?-&7*lc(_$)647| zYR-xPeX?xxt|~H@H}20!MCseSh0BA2z?qiBZ&?BCGPKo~{ghR%BWo`8)N)c!6Gd9T zyXO$L`Kz+t*oGGtY{l-q9hf*~AWk}JEZ%*>WDFWu1^+Bt5#dPCFsrl>i6BpHfwa&j zU7+oHQ!1)k0pmbaDqf|X)@~1xCoRr$j1fJd^(CWz-gP|T>g?>r1y}wRWp$Te;Gk3B zv>mOX8W4DW&LQOz$a3+Z1tHV?zP?__L!Ef_m2Y9vgkBu|j#)TjTn#38bFE~IjQdX` zCX=#6=76?sFd?1%lUC(c3Q=9sx1}m;9F_j@&#Zd<`IY$PA6~%O$4|z2r%Xgcb!ier zwaW@_@l#y`NY_d1Z|%k%Ppu4ASzUep5%|zar}x*@?ZI>(3SfHUzeC}N7yP-j|B(QHAxDw- z=Wn;HC@Vy1X#t9h3Xq>Kg4JvV1tKW-w|o12P+4Atl9GZTzqlyhdnPEtfXX88g;#-F zCe}XE1b|#*>mS~}d`Dprz>?6bX&9t(FHE=~Th&|t$8`plwA|a8;Zh+mWpQe2@51lz zei=W!DKPeja{`X_RfB{&xY#HA5u6NM=0-gLazdjp=I7l#b|)DQ1w+a8fT#M8_euTYfSMJG%1G=ebk*t{tS{an0-jdvTp z=$;J@h^W*!O(}sdZSoat~VDdNF(IP%oG@4u?-4 zhGB!My@^wC(B?RR5Y#3tB8-t(~GM^M}z6OAEtZ?{k6^GjYMhiLmT)qs%<_Gcp z0Mot$ok3u#rL708UI23Ijuvd+-G+VpJF&01!z=F!WaQ6%{UB5jtdc37|38z6jK%-; zSJLK3f4)BX_k~^%tY$z7YN|_6>-~-#R*m69D$&$Xj=GvsFYr}>qN4n0b(bOoP1k52 z0Iq)MIh2Q2Hx!|@D-SdrV8qH}%)~8P+k3zZV42aztY-zI*Xmm^Nw{8PNnw*O@%PL1Ri#HlPstBZXwJa{QTXw14GFZ?`1* z+@k|wRpW^c8MeOB>)6jvf`g`t15BRF>|;Fbojo}G13$vH-3R`y09I&=0!PmpjfZZ! zEX~vCs$a!RCF7DglpNl5s%6Ond1qfC(RsH!bmK^KXz+)3zvlU0K<;Pf*i+h;^p4?$ ztd@bs8?5(W`pGsVQ5@0=tM`z)5=1(*URZj@lsBg@w$(Sbo>pOU%TswY1A^2)nQgZD ztQfOtFHop*I8?gkY8y^Zq2y)hhThM*9)jruX`yAKr*{ze!KMy}kJEcfT9R3OIyMctNc9pFZAvFbz`tw8$U|z;m%$ zz-DPy1GVB33QtP8)2%W*B=AfnZelAH`fOdU&9J}|StN2)%Q&mESsDPV*CE%|NgD`V zz~z1UUj^E`-QUuMRqOWQ)x|roYR$f2tJByK4LIBjXic9u2xCUpV_0J~%Dl;~HmL?- zH~CF@_TlpYV_!$j2Vq67E z3Iw!Fqpl)Y%{|%t9f!~4!Jn%7E2#X{P`mfGVfUVPuZ_)KfT}fEeY(rL zZ)xkcp6wi*SLf-x|L2dh{+V_D>L~x5Z~r5`sT!kS6D=>P*05o~OgT249vXDnzEroeW`md!^ z;I$3KULebR5{U)@wYw7^N%*k^uhgDXwh(fYVdQ*I^ISuxOSRiOy7BWrKaJb|`3ko0 zIf&|tGJNKJC*VCt%=9`|Up*yY_X+8JNW~Y#;0dKDF3$(uo?=UBxyx(iz8Z&^9t$7d z^Yl1>X!|N22u=`s!g_B8?NmCs;`zYmZ^aWYt-!zYCBlFkA%eGg3-A6a>TAmrjzs@4 zLDvX-f4m*ME_+b(v)nn&=k(9zrj0Rx<<{PAmwo1<%QmX61JfzbE?tB}-&4(y1dp8# zCokU4%xmu6mR$CkMa$LSxzNh>Ab6V};OgY=J5zjIp9A)>L^x=gGIR&*bK&*v$~%VU zUUtM+_Fy3A|Lyw5rCjtUOMj_6!!mm?Jd5Um)=u2`_vi7e+nxzlRoB(k<6GbU4$iyq zq9BkJz(!+3xLP5kwqwT*{P_=mz|VjF6V%t$1?OE&n>Gz<^3Q{L;DHD5&2N4)2!#Fm z*T2TmM<0#XnYn~b+r`0TS)UC~#ScQmWSh^F7mhQri-Coezn`93gT!Ui|AB8#7hGD|!fvBo1^(J{D^)K3NCPb^9rxo)@ zXEPBiy1MB25|k8|+IB{rX)rCwCglb$jkgfU&+b!5JTrd{zW%EvIO6DEd6U-?wbL43v$hwF+8x5Wc8nF4-rqn zkAxzs^wlGvti&SCiR-nrbz-F#sCwGdTYsD7`px@-^YJE6sKXJn24mW!2GrM-l3*K= zznahaDnoWQzop#MF~XonI)%Ip@ulEz-Sb!A?bzLpwHuqUe$xT0TEE{5T(t$Otkgi2 z-#$N>9s^2y^ zv8thBvI1cB&cF2oRy~J$gMif`83wTYU{-ra7xuSzqQ(Dh?ZBRvHXQVR+q{5SceHA( zkN5;X@K)>f@q|$|UXZdLQ@lW>|J6u8*yV3)6js9t)Aj@TSh}?+;w$AjkwvV#4u5R> z;%%}53*c2nXyVi1bT;)m5}e(pgPp6cFUVJxY`}M}djt!XZVZ;az2}G-`1E^EL~T`t z1uGnn7cz)04xL<%!eWuhKbHjhmr{OQD`NB&47|)JPO~pKdAn8^<=Pew)}|9Q{pN4a z;hJAQ5Z3uOf>^P^-tf(HasGP_Pk4wqPC|FpKnkH@@O4p-Y`R|WyQv6c6qGOzY(CEvH zH{b`qdpuZ4?fd@e(`VqTU%v)toOza&gLUiH;tQX>0t*(r5O$4$$yhh2yW%a@;47~=x9VDcsTs$BLNAfhXt~x4Rz&(c@kT9x8lO@Jd97AF&!U1Wg@6;`d^#;*6-)zt&KbJ zn{S?pnyOO94wZcck(gA~_kZG*jrtj3VQTRLXbYEZ!ILkn#&fT&!}gsAQCV4tBM%#l zIWq@g%hD|98eqn)8aZ+A%N_?J6F1aR~oa`{>c~of~mqheBdZ}5?$%mGy z>DgCTF$lkz#B~-+4c6ZEg7Q zht9#WHgwvk zU;p}7eD<@SMQ=|h&VKgNDY~BOlH4~&vI<7f5 zg2Nc}Y$F;NUf!-n+B`G|W2+bOCt{vmR;|=yS1kZ`x!d$aO=esCXZMcI9?vJVVfEU5 zcw^a4ytQhN$7&u%4ynehDMNAmyfMM~SykmF<^nvfc`*Q8y~Q>~rU;@k?wqXzKFN>A zqbNJV6^vCeS;~hhC!&7-PnS1QyyQ!FAiwe>Xc~MXbX!s6PNQKOPb$Ac&(9^`Wh+zg zbhK{7n$>q<+qT!xFmMvaPq@$vUX6lbH&MG~Ul$h4{{{v&wqW96Q#ADXUO%66d=sV) zE7#6LOS*{mX)HLQW{0wn3Vd?TmC|W+rG^iaN7Q`x-d246d-r4Rq+$5{IkUn5sKW@nzGzdtRr54>W_~u$6p^^ihHg-GdKe}1Wgw@Y~ACHm*4m&PCR-vK6lBn z!GZ3Q({VrxR&Zt=_fd}*ym)ivc0Byd3OxVnI&9do59Q^BIC}OF%sp%n#(Dt?f4g9Q z9O!e(2eA9xtU6RUVDON9PInN#OxwD%6>B%{_X1XX@s{`JZw1_cpflM*=Z}FErNyYL zEJuA+xfigiK#dous`c(miweEJg77>tzz7%_qnFx`AgyKCPwLY?1FWN-Mv%cPbKobj zzoi2D}=Vh53#AFqyFQn^l ze;(iX&4a;`zCm>Z@Qcenj0r=Vkb9CS^rHVmCwT#^e69IOxov26jf<4mT<&R}rf}9e zLgUfq1L=J(*Jjdt#l|azru4V&+>cW~dL6d!Js23mzmxolk00${_P{l0tgAG5;eLTE znWo7$-njJCr7tEgx!DJYPo)V0D=lR-50<(%`$G=-S#q`Ms7nvido_r`%MMnWrvBRK z0dNkJLcvK-Vgl^4aM`@A|2ceWo{ctFM(L{bkONJXU-jCi6I?x8U-U;WT|B#V)unH| zecJKnVk0(wUHDA*w<ot>Sy`R1F0KwocfCocKmG@SG9csrq=qMoMPtop5y6xMam)JsU_>P>B$ z?((nz+XexP!DLytOAaniYHI`W66|&yHD%!d+#Z!H=Wy6)+UkR?>p#;UXz9WVKbW;- zXK*0=mTfI4@+OOOydc)mhmXRv@q;mDcr7Z*i<2!l+7>>QJ?NXURDP&BYb&IbYqr@? z>VPyQ4sHqMoGz%y6}$t)-+TZUzh?$6dgsJ&3{%X@*Y=l|?!cF?dlF}yJOQ7+@aSM`o2sK4IpPNV zbCUd{dUow;!Rn2B@%(~yn7?oXw(dHB>dN9^Ma?nuhGFKEhG3hRhS92HE?+^D&8MmO zUA`aI{Ep5;*u3o^UVn2Z7J7kl{|u|v;M}TkA%$OSKt&k_)l_1{z#0sx9}onqO5$^; zgmAYa=>x~eNBWv}J2G0Pq7WQCGCXkg0gJb{xQ!Svrm1aHOz?+iXtj5Bdpg>JO}qDD z!>(rR+20xjx@t<)HmXG7c zZ=Q?uf^CG{fz~EpE;p#csCZm9kW0U3^%du2OnkQX+4;?K`GVmimp1A6QY^XY7$5l2 z;W(+JFqB_Dg%B<~rTEPHDTLjJ^`Af5&hTEBql+63cUIr!=EwOnuI%u9S(d)r^4$ID zN~R7{e`(WG6AlI*yDgY2k~v(k;00*gQ++VY(rd2F-M{v>XX%7X&j7xi2U%?CTYw{eA-IeQMi@y+kz9mgFV1h0ZtCeJ7-N1a_=_~tcV#~*IJ1?QiCey|-d zFV8W-$w>Yf@#dRv;``tKK3;j{m0%^-=RWs2j2}P#e*;-SvYqftU;2`F-GfhEFcW9K za~zV-n?tzVaf}6SPuCxe8E4m<(b z@`MA{_B6o3g7C!2g~R3YRw2B9<-eHTwzDPpqT#Cxw`2L5y}=j01~*n==A^-R$GkC^ zK5=kxmX`lkKR?h{o36%v%#l^flw{1w1+=X;v?VGEZQ+Yl=_^4sl~wN_{~+v-fAt~E znDYZvR*i+Rii%^(7C7LT&uSpKmwmlxYukjqyBA^YnupNc(}HQ!KY~GnPxM~+$7feb zJAN;3-=0^o`1SANm{X5L#em9$Ox&zt4W;hkTl{oC(BNl`(HCj<$$em%Ni1HSg#C-EOwoP^WfF+uryqRw0Iq44W@d-u0t#kyU1 zWyvNiU9kgit=}@i#&W0l z5Ow92R^RU~=^jZ8eiWY+=R={v^28vw;RSUSFqxw5@{fGleV`Sqx9!G?O*^q|-@ydj z-)cF0cmu{v7=dAq^@VIq-<8b7P zE3KPK!QB_x_R^o^8mCf-Y@#eGjL2_7OVDl74!^Do9l zmwXH}r%pzGa=@pV{H=ffnOC>md=oCX;DTUvP<*)ie@1%ajW=-3HP_&U7hb>_XPkjA zfBDOpI(6#*_&`?hBIw2&arxz!2M4fT`H49=?SxU5uM+}x?dCL!YGIZaQ_2#>wP~Ua zACT>#Tx|eTuRn6&lFQpzt^+WeEaAwr;iRxxqhk(FOBxuV$xNJi{%mF8ufJN~|I*i% z?JZcodN1Bwu^St=9z=U*FKP#rW6Icpm^W)ArjBdEs9|*&P*vguwDPPA2emVPVl|_I zEZPOpjenV(6laJ})!PUkNI8{B^y9C7x$4>nv88!7#!bA$15;LENrTzwRsj8ZhIVZi zj9KjK!QMTuVcnX0(cZca#l;9-DomR81vCvh5&URkroKbnSi1Pv9*ISm^NxAJm(@Z7 zAqt=LApab!cMc8CGfwDBwdYegh1&onlKp_3IVJ6cj!!70Wm;wL{&w8-_gC=Xlgn}1 zQR8sTw4rG4>BG>53LG}JKA320I9=ufn6StwH{jehv3k>fT=1O-@w3mJ0*vIha;(KC`7~X5@em5qSMw}#4ERYu8vT0V|Y_4`X}glysoWK zKyKzv@#uBWN&5Vc$OC4Z1%^|bK!u6PFk)8Z78JOaq4w-{#-*T z_sb<)n`oZSkIs{wHm7H%EkS|h^aX?;J{V=MFD!Ib+1lXLdl20Kq(eStT`+!?^GRH? z`>r%k#hb$M8`5361K4Fouj3ro3lCoI9DjD&92dE~jNtq?ZGmlTqM2;t1W2C$#4T;c98csj1PKp{PqzpX0HTV5l+mWDUsil>!8&~Pr!QgJ zVc$eW)fn_U0da2fLCOpKlM z>1?`D!**_e!3$vh3P&D44K)MnLwUt25?wb|7vocL0E_K*VnO7@vV;^WtrcG2XNo|$a36r?*d$W_FXwQe6?U9=r9ytWnFcC-fV z_xo=^d5I^h0T|U->jfoiFmOOcxUDkMjRd2`R1({bSm3-bVq8kIR6Wbm57+2mg;ULd z@aw`u`Bsr?wh6s$HX0IUJ8fDJ=eKlrVax7jtl72~+xH&8UN4yC@67U3xz}Igyg=6E zX`?Y{a03ec0Ha`V5qWEV*T0NcV5OC^&wHVQ)9=$3$}C|pI5<_N*ZvaRPk!rmEM2t? zRb?f(?urXAZPXB!i||*XW^gfT2NhX)=kfuUS;m;tYnL*)6gGxQG4buzQ%XMKk%_wdom6 zA_trtetON_=USKdeMoZt9o{$|bH&Tc(zH2Soh)8#^s>s{uD!VM0sXUa7p=FW7wf&Z zYG3^Ey}?I1{K;iSMFl>1{>AvnCoaR#!GloiJvbH?+BS|V6^b<+*k<4adviJ3EJ z;^BuMMq^_m{{Kw=A?E%{tRMW~2UxmvDL(U=&*0-9|M>qeL9_oZskOBgzy0lR@gM*3 z4HOjupFDpi-h0Xz2&=aBM{9D(>z_Mg;Ik~(;^nmfTdrPMC}3Hh0}h<9@CFC0jV8qf z*u6Hzol9S4U1xb{S6@WeTJtGh81?>bG zGK?Epk169Dy`a_zj33p2fprzZN<-Szbc>*(6SgiS?4+s?)>XMo$Rzk;{Q9Y${#U=g z`s0W3=7uKBJnXAprgBc8dRA4|8Cd;TnbqF92^-e`(+fB)@NB*VgN8L?=*XccudYl2 z`pvucV$u9JF?q%{sIHmn;m^0w3#D+Nc^Q^0{3Qkt&BvtK@rOEKsK@BR<+$+J#&B$i z?T8C@t9=CSYk4v{QpALhZ`H+d`wq0@+8dt1u~UZN%;UzQFnO`U_ydaV|YC6!6Q zG?VD!&yOz0@BXm>%g-wZ^qN}H(}-4edy^47eiE(6o*>_ zhYiH&L3Lg%pfvg_APoLFP5|EHv*%8Mml&54xJYLWQ7R@&MyI5ny2=X39@%Jyh{fBbMTprRD-e#aD+7ce}V`NE2y zYnNIM*qw@vCLDZ)e<@csnc8?%andr|F9;p3U9=vMt&1vNz-A{V4HdVIE-Y3}b)1up z0M8R=YhZY^*#_4)6t@k|#-B@mfLk8`zWwe&SXletb!{0NjeDE^QC$b&iNgbMGUjcE z(^;E7Qrs@PqBucdC>llrXh(E(7Z@PgiXWPr$d5Ec`62_qh7kaiGo{DPvG)|0B>0!c|rkoc>&?bSCifI zxxEgDi_&4du%KQeOAY|vA1;sM@-mbT=fz?^DGZ>>%MV=mAM+{oCi9K;WtcR!4#yug z9H*Z!8b=&92*t&D*tPE<=D)ECcRjKgf4uuuJoNNiSiF22Hf?VXw(j}60m4a=41HB} z_%+>XNX5jeX>{OoILT7r0L^aVm5l;vclbPv7*d1BpLq`5y=ADZ8ts+k6C~tX&2t5> zlsf*w>|I^Ev3bJ-cysa3J^5|Nl$j$jamHjc4r@YjX^FOVtkm<%g#~?B@#cf*?ruj( ziNBh*Bn%>XxFr1D6kX_O--;dEp2gC|zeLmEVoW@2vIke7u@ zqK$$aQWuq0S)H)PeH0(Eowy#xrNqha>p$N88V{3og58I?g+53Z{;)N7KLx zR8r_U|C|k*Fmbt_*V8MpaOqCm^p_>L`EQHy!h)^Xxu-oi z|IXhUc;d{lIC<6t%o;lcL+b_v+XhK!Qm0N>qGF_68!Z!*L%n6(h{Pg}?IX^LR1wNA zq$wR5XH9q)L>=NhK_o6Lypc?fhSo0Cd@S@CH|hC?d<-Zr#b~eZW{n++#+pjBcXng% z{#NYX)$IAEHQ2s&56a3*Q0)cOW1l2r-zlJfIX1@aufXC|RZR}RPCAf3=vELs*|_Z6 z9#ncuS8v0`U%4#^l8heQfL~vJ9){G{m~_3?4;fz?9OMqBZ7vhGnKY{e(B;6T{(PBB zg#qlm#AWKI=wk?}QI-ZiY56sIvu_&(lNZx?__<}c;OajH_kDf5Oma=WQjZ(afJbls zH0rC%4SF`60!+gKIK2&XIC+P-vbMPCa;LHbLq9DCTpuyu=(y~IgQaq!bz#jn>G9We z6Bt$Rjm7dpe0I>9fPS>`D%cRNop^n2&NB4`!fhJd1$I5S~ zHFL=Jx!^5`%;+aTl`GE!?`K^4C7gA1xo~=(D=t@GWZ6!fYul168C|#4;q<`7r~7?d zoBe;%H-2VsQ=BSI|NH`f#q&3R{UDxsZB4KhyrQxKpZL`0@R5&w42_Kgy|=?f>7l4r z&6D2S{|&hC{ByBr;lkjHfgkzENAQ38Oe+7apT7#r-#+(<7fgHiyWfqguKFV8%$bY- ziRWYW^z`7WFMbi%-*5ve$_ntcE9PPDOn+rsE}qSnT;=vrIJZ$;DUzHOD|NKhBK_sl z0WVbA89Z3MjE%O-Tju70%(}?HX)A}NjN$+?X(ps{@%C_(34#k6E#JQVtw#QtM{Cya z$C?ezSh=nlTer8Mt)nMc0W_p>fETE(4OVE)m^c`thShoju?jC(Q;0%uqUCSbYWHCG zA8Zf4TG!dt8~8mxa8_DcgxabS@8xV!=vQOPF+X%QSE4J?_!(!*a1?&#<+Zr_$B$v` zgpXm+;FFMFP!2XZS6Z1qUG{l_rrs9p-u*f@Z+y_Z-i(RU#-m|qQ!try9oZGEdfB=Q zYgeqnfdk!MU~o7Z2aWb*C(zRB$z|UrbaZU-0wdj+G;IPJM-1`!&ez78bSMz0sw}{< z6B}^ExH1?kDHNUH7e_{namnUN{2%Xn>y88X!uKA;FRwTWV}?}2&{vCkvADT9S!G$c zT*<4uySW1we&<1a{zG$c+PsmxON?OKI(zU@udVau*5gDks0)LqEWe{7w)p~!t#d2s z3|t(5Fz~l~?RfHqjkxo{mDs$kCE2ypFu*^nY$&FU8jPya;-o1F1-0)L%<+Y~+g25Y zCPo#f2yL{F)KOO=fzSnkBUw(V^ruI%MitWZq&-2~1lUzmu+YfT8dd(r*<7Sg5a&f1 zKK#br`|!+?HCVr6Z!)Ad4XVe{$IZm(@k66+t~xPwg=G@Jq5=W3RXt59r|u5nt>4x` znZlFd!R{ab#_hqU9FLni4&VOBS*Wfk($Y9kvTYmQZt~y06c*;= zFF(E*?>u^v!4C+Z+(eS`HCma?-O}Jp7A_#SzOyl$%#;R8%rw)f;=-6ND0-a2umI90p= zD{CWq0k}uwtUgZZ`YUldJA2W5pbJ}fws_B=EnZ-2zZc+W!Co&&(9iAo-cI{~izN%`R3*+%w=fO2KR$;{8S}#~I4#&+Ig&|E<-t%dmcBr$_6skUmK2G)W z8vN|{FQTn`D25I@8MXC?p}53<5pV7oNo6JN_g>ny<2fu}_6HOeRidGOq8E5ugVEDQ z>s$PYs?bGUhkUuUw_*48z3A?2N1qqW69ok*E-gh(eKpDlRH1+#j!n9xxF`?xH6{4K z+(tB1<|i^tL?LPaOW3#dg|+BvIoa2T4ll^)k59h;k`bOqo?VG&URZ};e(nVR3@K`( zoXx&%7{(7ce4u`YYzXVO>GGdGfg`34!KG(R*YQKg*_g#ZQBpx!6(<@>6bQR-~Nt(ZGTnO_#p!^d+aa_sT-hg1(rG& zw$VVN8eK?bn2Eo@n^VBaq6;x@y6w*<5y}@-eOAk&e2sU77ml8$YD#^hZ365fPQHg6 z?PYYDlb4}YiXi-#q+53H$4kpMV9mDO!B-9aeyQ>L{K#XbVdCUbo*yenkR3>vdR(V*@Y0|ytb8Q(yhaWiREq(XC3yagwOF%tH(I@iu_Gpq(GHRI;rv6~ z3kro>!IiSCayatMdP2(w!vidM_&yNIHHEeP>yRVCALj|!bs&MsFGOBpIr1xpA%DOK zhJ_l!i@WZ(HqKk3Ti6>&w8?R&Aj-7bB$$!A8udcuebHjsp zseS=&`Ss^M)^DnK<2--W!P5&?u60{usXeAK%5u(PO-T)S=*^yWD#l8Xtli(-$zk(%=8~H~jo(KMA(2 z`KzyLYHIL*Gx=l3$dMz1Rbb=CkH??>_(%NmSHHsQ)vJU1+S=OxF)OnCEtaR8atikE z-;V{azJ}*s-i*rfB1{-vqpYg4X|?(*z-y@W(H(Yg42D+x#LV%)@kgJqh5J{4@I<`{ z!)qi)tcCr6jw0jwO9GJlIz zu{Qx4P*vp37pgF2d_CsP8ieVS8qnI_i%r`OVEe9?VB*}?)(vq;pthnsIA3Q(V=ac) z*I;m6Rq!>l>hdx#;B^Q)_q5`zwL9_nb1U$`lW%#!u6EQ`m!ZD40_rXZ8Lv#05r6U4 zn22rvrL4aK?64_=A^P@W@taR#&D!VD+OpZ3Ao?#23ZlP4*yTxO>7N%{gxb1^p09qt z_mZI;Z!Z2PhK(8G*?M@Ek|15pEp+mIWKnT3s=fBtHZ`EWX&~wb4Mgq0S`?R+249&? zxQWEB1_J!~Rz+DMrVbl`$%FlIA}^2!qJz_A!br@zNVXQHh>>m`ikJ?@n226`dlw#l zc2#gl`-`t_K&eM>SW|T{Ha+_63XG^9fY}oVLX(+I{cI}7!A5LfaA!%OQBT3~pl^(Zb%JC;wLwATT}A9pdMVqEWX`38>} zCYQ=h1ltQI4R6HArn(@=-qO*D0|(l$cGVVa-LwhVfE|`enb7bH*gKo@A`}Q;v1d&hhPIAwytZ@`R&3sms`3&{A2lq+;r&xp9|o{s z;n&p}+~XIFa+6yd4o*>NeVd|iGU4)cTtb7R?WDX>1qM?FZ%{36nuEe2$D?@AY!uW_ zMPctkasPu4wPE92;Q1; zywWxSdb?Gbb26~iRq@j+_0DtvW)ImO`)tm}Mn`i(gsuy(ZAjzr(`zJjgi)8$blCtW zFIQi<{1AoZ;NqTewH*w3|6@G?*-X(DA3xF;0J*%qvSa z;!8ih7r*-R)7ZFeUyy&)u_xe~@BRp$)>gwu( zEjRzKC%=tH9d%UDM=!ki65e=oM=+U~I%%NSzjhCi_O=K@Nz>&)bMtWS zQAeRA0Q1S#zjWbM6ZITfe9*dr@Sxxj1WvQZkE3qCOQICz;mZb9n; z+60{Z`eWMK4bAw)t*_ywSGS-*Yf*>F{Ne%~G&N=6tHi!OC&-cwtb#?W8d+K{n{nN1b&2*^LRn0 z*&!g>p5kyNm}xMA;6xB4e);t+xap4h_{*cK!fn1StsUqY*wYDPhlF-GBCx&6(&B`2 zs&B~c)pOk^HtBYWC@oS+rQ9STW6wj1A#D!E`y=T?ndhWd z(n}JrvVOb#g0+#ZGYyqvN0bL8XsvG|la>z)F2$)*+AH=e*_YJwE(~rfQlI*DTESk-X}QUDdpZU^N_~?Iq8vXhWKz^P*fi@2jB}GNy z$2wdJGmsk^>ha+Zz7K0wuf}IT^BH{LgC7ioM*nK5va%9WrcA+k=beYz+FCsG%+t8- zw%=jRnl<6J!tUL><3D{xR!K=oD1*|{(lCg%c==8oJk*Q{K@h93ke(k(Eynd6c0DdL z=H(P1KRy7ml}k7v(q@-SURa`2vZ7r07z`!Rkv991=m6vqA$o}9vyJF!pVKb!sdM0! zVEFomv{7JXJ})hKDW6yMT}%B%^B~mM;TOzqy=O6QxNQ!O9BL0An9rXv7Q=&wrpnS1 zlol0+fdU^@#s?Gy{>wZ>_3l<31haZ!Wd9yG6ueYjy?GBFeQr4xEYBR1VGfNqFV^#e z0C48;@+fentS)Tn=)en058;tFc4N`%eb~9Z9@A$06axpJi(b8E1uqF|QC%}K2u77b zv^6`@%ay{WAe9*i5-cYbB$hW@z}%#Z3DwUn)~SFHfU92ws_0oTrVg zMc=LkkX9I_#(jMQxXNt1Y-u$s=MLcZ`{v@)mrTK|aeXjyP&dq3u?xjPuxx1mZn*2= zg*bWg0QBoofw(u*%um22mUH@~_LhrN@VcqA6bR@*eG{IYvmO_nI3ip{D5ZwxHhkyS zm(Z;?AE(Y5fXuN$lI?4x+ds2Qpu4ETKxFeZ{UgN*I~!5dK8!g z===4=+op`bDdUG>KwTFUWw)i~AzjSA`J}a|kCaDc(p+2#?Icep!9&(AB(F@((x=iC zo`gsAL%gm^_qI|Soq|u2ds-Ww$1{9VFh{Ei?7S#=`M{>YE(6*^o)8<=)sPreS%^L>RVmk@LnL^3orJ~=&F0#y zy86kNF2dR^d$45HHe7wzL%8na??S)Yt|AN`b`v!FBJobFW=vwQ3uJ+(Yqmr9S=oVe*7=cs`gQ|2@e#3iB84KUGwn4Z!0#v%*tRp^Z7JMz9nx{Ha(hYBIckTLG9~mihnqm4v}wz}6Ws23Oc3a| zWuk>4%e{8xq#e6cIp}ujqGw1&UV&P??VluBf#mbSErRW{cUumT1a(YXA}@OFwxzUa z#+N*Z(H=|Fd!*3s*Fh@5M9x?7sm;L3^V_bi?~)v7|4O>z z$|JE~n|3-Da-FiVfz^?4NM$~lZd+ep@MO+{z7vo1|Kw!8(s1ee|>5V z4j*a8S3Ws|1hJSl#c$WR#dRV%hYUqv6j5F!RIq@+9dRT}V~FBvl9l*8N*YX7Eobt0 zu8~bJ!k~%ETjqNEt_J-25A*TroNeJ-{u9Ry zLv2-Acu=r(o=ckaqHZuNl6q8E;^J8ouyXTGJo@G`Jonlfy!_@ml$I2P598)+t-if# zP*+=tVFPM0xPL9W)s&&Ev=C)g6xIpMh7HkM{P%Xlp%!!s4!|s45Ts1~a*l z#G^`1(&5(wK^FyNnXwMG24zrrkJu7pr_l&x=vO)jfaeD z)W8zGh7}y6M4EHC-dMaDe|cgl8tPlnyK6N@^zRzOH)lbWmllPvj|4%*g1m&jm`CZ_ zSDwq=C=X1X0+-$^|Fu~a)3u@)N9x;9-_#a7<0fOLv4i@?Ac(j7Fz$M48CGoCfvqdis2;DsvKVVtZo;IgBT@1WAZymIj>5xp&@y{ZCem?AWnH;H|&pr6+X@*VK z2W`;;0j^I5KAgPVMa3c;JYD7&{ znW&HPpb9$x;gfMx#`_Npw(_*`U%UP9>tFlV)qfYKcIb}k`}&kR(=R$DQTr`WX?%c2~=t#!sOY&vY5ZXl2Hl3aJLpESF7X$8~mbb4(JKKL>W z&0441f~-??WPsNmBpY(a6}z4G(BZq6arwuZG=C6XOR|8coi8Qwv$fb?mwPeUPX4$07OR$P7ao8QF8KmPIX%&zOMyDki9efi5@ z#{1v@e)Q0u5~kA zk0)x`a-D1TqS-H@A=QjDk_R+eHcy${wmhjQ*+R~70;b1=^F2CZezdZ9J%p>dSUX=e&H6u2$~gaq54TNsHC2fOhVh#MK>N! z<8lfg94BFwzM#}ZRL%kHTx|4GfFF0i7Cf-FVNyOV`vs*FPP~J|x9mHzf5J;_j}a_J zH}#1Y&yY2Y^AeXaKN|5!-CA+*62JsHhxM+-oK>5GVE-oU-E$DnJn=dTs9Mv`rQ1h1 zG0_!Y`2dFj`be6=rnxkClBJOIZJW;v>`Zc)HuQ1 z+!YRBcsk>MAhff&ka_gURl;p44ddMh)7}`Pz4A`*+tf=gi{5v%x1x353KaJ_4o912 z%{nodZ2UY3Kpn#0lMF593t8r%;fqe22w5I}UIBS+9F+j~4U*gy!(^{gNk*mQ%5E36 zinK&A3TPkZ3TOb*P~!4WwIa!NlSHfb*trXvYo7M%D%ZL+J*1MbadEm5jJz)3w{1Qa z0In@1eWe}V{kG|+k0xHj_OY%`%6=18JGqx--RGsUKG_oIK@*8@>CKhhCo-QBZIVBV zDDtg%1rmyVHWHP(FLHQT)#VT(Oi7Qak4UavyU{uOSPF9ag1=F%_TWKq@v5!3{twUN zsaIE^K6pcIk~yILgp*Fg2e0@9`VSfmamzynf&EezATJ@Z5>y%L7tEiJA71law6?b5 z=Rf~BCQh7)f5&73Rc1xfhd%V7Fo1Ra_1EJUzxV|%zx;Asam5uFIB;ONa_c`aop|Dj zxc~n9L*8GUy(#Ex;Hpo}Kv{_i4EQ`zHlLn(;3RJWgO}n7V)P2~Xb3?2JiYdi!~oks zB)?&KyoDDx^(GOB?6r2S+?Jsx^#JdPWr1N{J6wW5<<4o%)*~yNtoHGfgCsMbOgJu` zQeW!#1fO}xeffrC*fva|?eP4H@DMYui8!a*9SSeQwkrgdX|PV!n?+wjoemf@H&{c+I=LtqYt zr{!gVe#{ux7dPMY1}2Q`iM2cU)?4U0G6y z;-Y*sw6w+T_5{JKTOL|~!je{e<-ew&M-U_}DJ~#XX-KmQ*H3DfD9cwssLSsY7)Hl; z?PL#%XYgH%+aK-gq`VTbP=`X zp4qW$0)u|#(vch)-Yi^@@3oLmhYqnvEZ$WZ7>?=G3Edq;l`XS}D<`^Q4Me_i8||te zV8aB5sa;;9VTr=yUqf_w7VLr3Z&FDx9vnAjFeVP}gJ&16#-jDxp$@(I6Q_M=I)M`{ z-Am>}Q;Hi9VWqW+2cO_Sv&{5eU$`AlzOo!WyH(+iFMSjfruRT;MLwg+ePD6jQ~FA< zG?}R!*M2^7^9zXXM}#jLNt|c*j7*=@dq7@E7nG0r0FHJm;lcg;aK>q;;Ej0;@%N;N zn&YMn!K1(a1fkarN+$fsJVZUqw_-Ym%jD2mX4w;OiVTp%d_sQl7>Om6%GU zQQm?k!AkQTozZikb24@N!_|SP9#8510wNws57T(b1qO?Mk>8$Tf>ihkt)K9taNxX2m<{E3j?#Md;gqKzu$64+B~p5(3SnsJyfUeS3C`w+x!R#>OVR`(5wAQ%^h*o+RU<@_0b! zJQ1VO2{Ms3R+J%^N8~9@PC~gwr$lpSeiLLnb|1m@H_yQv3wEGOMOpB$+ZW>o_70B* zamZ4MYEX#nL5A64vSh>d@GX5&aUNz)?St3mYz>0-ZFuL2lQ1NBi*Fh@5+-a|lnIWN zZ$kpBVpd<>_3T`1-g5xo`tMmdd1im7?*0aa7nkSZP=j`YLu;3=!uBoYn0D+B;P$&G zIf1Lpb$eSQUVG)Mfh>08gfnNx55Roel6Jr(qg#BZn9Q??<2UUL{ z2tMY8D{cx3@&eyq7;fvUs3=BR5X>tq%tw(a4}wd1;lc2EVV>C{XSQ5s@aQnmx9>nb z>Kj`F*lpNmjI9&?cyR)4lU?`{N4{#6$7dYcIl>!L@$1C&~Ge zAUD-C7*e@!a0fa?k4bwD1!L)V9>u3FnT#=my5hAZJMrKP%K{r{!Fw(lg#mpk2?8MJ zEQSx}&Wnc5%%beNW(DNh4F_=Fqbu>sn_I%*teFo~mK0;ufVv>y&=);w%Hy-;C>HbA zA&{m7nz@cfb}QLqnwOPE6bhHpk~%`A(BaI(jL*_;Ti7f**A@)GT`?ulCaE0#&7<%= zZbdPgsr^HM?_|Pn4r#uV)}>_@4_W`Pb@xFOAf+MC^C5?aAO(qV*V29Fp*+_Tjwr|6 zo3|KOf9jm@K=(~M_T#oEUc&WLE)v>lmM1-E+v_{DfM3c}o#Z2z(sH;`JK9=#XwhCe za=-15TJu0&NAn?cH0(rP`O$3+F=q~xl~v;JO&McScyrN4Y}~pJ1N(H%<|h(V>=&L9 zLwU+1otGQ}ug|YJbV)yacsWjA(mCKsG^-r2()2GE?QVXu`lh2@WBt}WVc)IUyeD{@ zbR_($WcRKW7}~EpE<9~Kx^<~=aCN2+d^99=>B=M??9^gQcUz!8`RIypXRfqES7#IV zqtdx^Wzkj zvTA8|>>3JMF8 zNe6%B7EK(pNW9O_NVX3C=!ZYRGfzE*$&)9CtCs!~f>$OP{>)ikhObY5`qSarSa;uj zH}1UiPF#HP#klgyD=}oq5d0?{_HMpTc-C2Gh1)1i5bLq$)`o{tfARy9QCL7%Kv1pZ zDb2EIVwR+RmcZI;pO@kFC659)v{=pcQP2;!t^(XMt0dYa0vOGf@kPc++UQ&!i_--U z9hy9`NM03?y`3a0mBq#L6CxI`*o`0DG#k5jH{#gQ199xgfv60>Fs;{mNvAtbp*k2v;8wO=4kR8vl)oY1i?(OytJecW~h$j_!@`-tsECR+Y&EDeLc0O{uP@sktNwDe07J4-LF*!?puhwSFf){gcOo ze&|5|-sL#s#DO^J*#0OjE`Te96kp}|YQTwTibTfNVC9*>)zX!F@X%AM@$#En!>`tw zXFIdi%Y4OiXz*)R&6uxOLa;BBIv7?i?#O*o&S*Uf%jc<~n2kg3PHOj3V&2&H1zPfK z$&GV96cM}Q8MzOlL}(iym6Q3S=Z0wy0}?z4HtwuK6I4ZTUkT5E7-Wlv7K%^OeF;aT zzGiIb*S#j$LKs!`P3|cmNl_dES-niT|8x(Der1*Ld>b!MBZu_Fr`~fSzWTGj;_){Z z<2}o#;)EH4#r8>_X7}z^9ByC|Zq7GYU7N=Y4lTf@b-CWG&Q%j;jhmw!e`!lQk>_PySug^?aUaigM90n zghP4SbNBD7&mXS6&VlKrj%#ZNwnQ_xBcDCn7(GruB}H(}WM=io-T2GX3-H35t1)NE zrf}(h3@5vK!=#_x@hm=i$t=9@g6ZfMytR?w!J$9-n1j38i|Vzuq$KIOtsnd@(Ig5T zaBbG5F?qY^3kD%Gl5?+t{dYgOgfsIb&bNad8Q%<{NtEmeE7Br4Yd1-Zf zJi;XTQ~-|tC?{8Y{V_cBa{nv!58p1ToKk!I%a!&YYQ(%{oA9eYy@VHnz?FGmFsZI* zFPwb(+wku9e;B>`^vz5J*n}h^JeC?$zG(6h%PcRdnR!5a;rZur zF|WZ%JWC^q^1$FT0%0}~^TlbGVEaA4UCy#Z9tcj&D{>st=qGr4t%Ww3@&!wG;k!4y zhC_#2aPIWc7(2K(3eBPFLhZB^iN-v1)s&awJ*P|!=Z9wdURhCLc>YsqQ9gWg2uc08 zkLRm1r0cMLa5213_i(G!iZ%PNeOEpDkn@SmR^0sub=)!u8fC64Dl5^ue;rn@{5{5w z{|xfX*9V2wRki@!QSk7Al~}suW(*oyhps(pt#ffA72^Rk#pto(mZ~AS9$G!4+7rEPTwK3GANT%F(}96)ru0 z5JnH}7M?*^e=->7+;$j|Y*ypD@&<=VZt@3B>wyJ$xs>*lazRKL0~aNDPA zRk-~(3S3$5#0U<$wT!NG)G3^Wze0bcuE^4^ErYNRA09FcMAy6<)BIBmUb}e_AG}?Z zZ+bWiMo||k;!UBGwxKXASqU;z%C>t7L!vn*L&F>Br?A1wshUc%1Z-ZTlz-I~XMCF@ z@!6gQh}D6oz7k+df3%$fQhkK-zyoYrMhvdQ>kBqu)y7@ebMP=OI%8rGAx>KR3_3ug>1(k_m?c0jDGv?P=@p59Q$S(d45;>K7}u)uW(xLg1`YwojNhEA1^rrSk2gpXYHrNxt&dkCNH0^u#MG@X>GGg~wi4imf{jqNchElgEw3S!bMr zlTSDvXPkNxCQTR@PWV=?*@S0aTY>q@wqWYm{$UVHk`WL|HOWnARH=M&dO6(^E-7E~ zL%EVdx_v>QD@u}2@%eB)^rB9 z50^`$vTy^EY#_?muA5H3j~CYl6G-N3arZs70AK(4BlyK1o)5;o-C^*!rfWBx`}Rxl z`LBKh=Ui|xDl4lqlZY%Zl@2&bbaIj{tEwmqw-K7cZQHitoHNfref<%9|NGw$x7YnA ztw!Q0+$Iq`Y@Tq!3E@`@_wV12AOGk_xaXdG(4|Wk3?Du`d~p6xNoJd5zkdDj*T4Q1 z3zzLeVL?7d4XX{`x@Qv8dKmNJL7mOp4&w1w zH)89adh9vSgkk+^;&C}jO+n!DcaJT@$bQ{$!i3&g6ZLc^;P2ct^+qSl(%?CjTv$df z%QqefpJ8WC=^e_*1*kl*xIL!fr4}Vwm8>;TDKo23T0NpTrguS zjvG59w7GDlBawHcZ`@v`z)q}1Dt&IOX&uGjLKeG%3na}4Q2OH_PG{khJjxSo@3d0_ zZsAw5-Iz|E$ME}9-?CIH8zsnIxt6U2oN0;E8qTU!g41DGu|Cfh7f{rks3cEbnZ-LX zB80+oA2_80t6kjUAVunM_;dwPRL3ks{?bQI!)u>fk5}fe!{27F!kM#1qB9RIX;ZGW zJjG<0R$s!A%NU|MX$q3`hrD`2GF0h-HmxtB>yEZ2v>#l9yl!J0I>IHv%?HrBcPU!; zuSCnn4cNSSBU)SBuY(+IGWgBj`(UNW#7vhFWHGt4w6pp+;bS;{ng{R_sRL;;CIq-)A7*{eF)R0OhNbV zbto(<$_guk+ninZ;>$1LzrXYqyfk+WKJtw_apzAyh<*C_>@yDbt9f0d!=*fi zBt&o|PvWCL2YiPf2212k*;O@d;~Pn%_8gWkKa;n2e?Jf6mN^s z1cGMTk!1~0espc2a#!ZYU6fT3??NU*J^w-$6$xEALKhiQT1`Oija8fQ#)9p5`$KbWOTky)V)xk4eDNdc*FY~oY;wS2x+QO}O zm!32%39R{5QFa-EZkRk195dVE#FRDx(J62xWzD9df;_zagkkvH4Qqqo-C+zL+y$~t zazNAug?g5KYvPCatR!=_ZO7qoJM6>3UqfSCcrg3Gx~}1&+Jky_3v?kb_P!3Q+Vu*2 zRB*V_e(y%>gg@F=xk#6}uh5izozTif6T^k;k1QJ}buFCmYdBxcDB@9Y`OkJ4h~Ker z1J+76CGjNb9-%wpiSrBieXX>5%krVje>(U`s~8TEKe#*@uKcfDamKf)GVyDHSBFSI z5Sq{iM*&}@;8P4%TD{)E!|$S1+puiSj_^Rhb50x^M)e`om+nNz`Fn8U7_QRXdykj0(x4(+E18alVLQUZz zx34eSh}9c+;-58_H(z!!1KZn<9~FOMIpHO__Wio<+U<`tnbA8*PW=Aw(R;veTRNqT z*73nsDRt9uMs<7xklDBY-mlz&r(a!xvXT;f{KN0Vb=O{t2@@uUs}{^TDjCm~%p%NE z@qq&eV8qZtc>3AruyN~N96r*7Q;!`HE+tQwffD_KM4Mc$QtgH2Q5f7FCHN}FVB_QT zr0E4b@Y3chrhmotAil%A0K`byZ0XnC+uSb8+*?OKZ?(O@oPBlq*DTWt4e$$C!TbS zVn~&bfb4xqaS^&zSA^R^e*B|r@y9!UAFj|b=R*A_ZJ|4wWWHK>?z!h;#*7)*v13Ol z3$r5Y(4j-<*|TT3GV9+tkY#8$Uz9W}I$nJ7B`jIFGaP?M4DCwJ&PlUGuJK1RIzfi5 zJf6#HE_pS`G}NyN z0#+MwiYE#&jXJ6j~^OUyc&c*G*gDCY8DqM z4C}2hX`n`*8jZqydVUx00U&+G;nVrF*?8u@v^XC_2X?`@kv;Ip^J~z%wg$udcgdp5 z)LFCXARc{XJ>LDcQRq@x;#Zzrvu9Rhwxr(lm&KSgtTtSInwk{;zC=Zm?U?R0rFi_+ z^=NEu#)Q#5JPo-v=bEMatjZ?beEi^^hgRSxzkM^@E@)PC5AIou3yvL!6UPk>$A7x3 zDXpg=G0VPOzA3-)%0|Xh3|lix zP_P0_l4@xNi+;c}Y_D9aQ&RUM!NYl`YUF5-Le5bmqJ;*byqc$oyrlAM%KvJ13!#Ev z$$SqVxy&Nh6oli-xK=+5AATib$mE8f@a$28`=45X^}z%2#8G`Qd|(golTLheNpwmy z+Vzy%aqx5~gTa+RN-9TvU*GWh5*@UzO`meg<9cn4P{q~AFX<8nu9`Oe4Xr!oLf3B% zf?Lfo9CPSvQ&S5bdvTecxuZ-*!Ohm0^G_KcezAt~p*q2rPu|=fq;?v)b;5?j^;`&--qJTlEmtm zhm78onV*3J2cuVyIz0O16Jg+a#)N?w)VEgT&u34RkN7ZH7T~1qX&XMZO7nNgwd{qE z+9o~mkeaPGojZt}L-X6W%u}QroOiC@KAQrQr=*`gZn$kFT-bG_Hnhy`H=D0?86L_UI<%);P>%nxsV8dv}FaXk9s5^URbFm!~~y$6TCZ#(A< zeDEVzqC5x`d$&&bI!z1o2!b)=YPT+x;R>vW|M~!a`2FvND|7C;>n=>1L=Fu8|1g;| zqXrEcgtN~+8*h8t+d{eg;SYZZWn%(aBS(%zMMVYvos;Qf6U2Jqg_kgY$qsbyQi`F2 z=<0wpPYrVI^R!tdr0sa{M^xzORslLq!DS1zV2WD~0oelrN8=Tl2VnJmo|5C1+InCq zAI%V8N%x*MO7fUe-z4`>KEED!2M@&~g5b;0uSjD!eH^dK7NGt9J}ns2_UtEDPq-J5V14uZ|p9j(z*);^2V=XzSP%1kQm`6Nh2Mgpugpt0#&AzZ?by z8Iv?{Md{_`kwA)y^3c1x!t|lQknU|LDTr2G(aMq?#nMLZnX*skr1}}OW@}wuK*v3g zufnNQ&7uEAarv^1d+@@-E%?wmV^Lg~?^ksJwn#=ct=@V7*WURC-f_x^>;dXRz0R7I z<>MGRtd04SB5!W4AHHuDicf~Le}T>qD>NspXI5Mt+JM$Qi_x-sQMhf;9PrNZ znAELHIqrIR4x0W6+XzG0ffdv@He>qO0T@20F2+Zb#Fx*FOYNgv-uKE2!wwd32PO4~ z)Ni~EwY`Z+sR-cXJ(kXr|^;a5il3x4yrCMae@zKZe=F%aK z#fELa8sX&$PfElm>89C!yK&ooJpR%$eCx)?aLuotz?`L~&Z=CJp&va-O(4Ms^x3H}|E30@t0 z?6GKSY{bj2yoNaow`0PXI`rsXmZ_j5ualy9Dy>{nN~uh+HbvX8`bzMkN}{DR-ihY{ zJ`a_YX%8G9t&%5IgkBCedPr8V531*h&rkp{=->^4Nw@(?9_CAB*ZuZQw6!R_{n&A+ zDl4|7rEKgLR3%H4OAbi7mOmI<91+!{=eneMFHR#^8|y(g_-Etp{n)zaAWl4{ANu#H zifbQe&d09(32lnO4o8S=0LuL32Z5N9z-QF<>Ve(^`k>$7ei%4xAO;K_guX#=t7~2N z@CBjSwjDo+X1kqg3zZKIG$d_QxH`VFq5wmBB3yAbqOJqwMIBI`>2KxJ3#lE1{HP;R zY&A6UbF{i9y1`bEi*{VH}1vUl{@gx(?$kxDXWKf$6-Jre z0XACm#l8DqSdHzwkKp}hkI8<#L|}!&mjoZfb#b_~C0S-H|HEU8Fnw|_bg3?eEK`as z?N>sS*!aOiO<{of7q`vDhAoFe8$D_K&>(O%41K#*XO0HQ@*_+S;(Q1glqWwe`RtN% zML6)*i{UAMdqMmntx*?Reo477Ih&9UU(>m}9bGc}`OP^TW~-Vce;{2qqF=xM`L2`*i`JmJB;n?IEG15h zV)xopmcfxOV=d5_OIExs&7Zqu3%-2aLt*f0(zsE$>vy+?2N|0!rD>3(uh7tc%Sub} z*-w2kwAnY8Y{Cm~tRbZ~UEE%M8t5>e&6OVm;90>x6ZWHLY>@NV7GB?U3ua2KH+xG^Jtldtw+(RW734c z{F={N% zzo-N~hEKt^Z9B1S@qFv+PNLxe!c4?dFS-q87*&;J=viBX#vpj{VZV;?m6ze*;E_04a6EBxwW zLlBtw_H{2~^VY*zh4$GWpS6)Ep*W@4u4ZkySAd=GbB2J7CTvRDr>b)nxB^52Q+mln(sIpUDmE&{PZ(*Vd#+iCO5j-eDRc>a^Ylv_uzvGFOd8w=bu|?(8G_j3 z?JrD>+;7I3p^`4_$hMQl7V9fuk{ZG@#%UXuMTaJu8T?b2m)UBjiR{c#2{om`Xpo;B zaTLL=lP3diLVPeq&D^NZrO@o+&do!>zl*;*4B=2-k8Uq z&?(uPqty7#LyPhHvYoE_!h9^M6)(=;j2UD5ATP~SDBD`bC5l9O%Cm(d2Gn3c&u(~q z-d4DB;YQ;Frc#K^r1^_?;=jN1EPj9Ql91;SeS6^J=gh*)QG-xbS`3#mm$gvj%D#uE zUJQiKGXUfgGxazicsXZbJtcN)f{V0^5OXi=csOmlT4!~X5_}G9zLf_)^+%SKDM6;n z?ODlh@h=&2dM&`3!P7GRRwX#2y6dmC&9Ad!Hd{_l)Z~Z8)09W)J z{UVbD4?xc0QEEd=wRPpTNlfD*p+i@bwX>ZeH&L2Dbq%q;(^3QtKF<@Sv zw-);j);n_3o@<^b1x9r?Uy?KLYc5$y4;8ygqsO*4S=TA8HtfWW@NI&;Jp{P0XjT?Y z5^j@s@JJIr|Kt0yeBF-VP5f{?{J;aK>)8u_t$~}*CM#pcj>CCpogTgwyY>E8!%r|L zzR7m(5>0^5rzHALeTuIQ4LbQ`mR9ECmTeJMUqRGmYOhkh%&QHP>Iz*s#yuH5{+;WY z?FZrfa-WgLm+Lc>$Bt!x$MGtmZh}l%cqj!Kc-$}Bv;(fs?2O-zU~?F}Ps~?UU!1!Z zpStGHIQauN;N4%m9S=OS5PJ{Q2M;_2sO~iw!%lt|W_<8!j5+6H=+bW_^70Ggz)@AN zK`5&1fxkWd2wGd3UByrWVU$54Om0_&K_I4k*DBP7Z($W~yY*%~^w$T&;LNwb{q68< zySGw$G6DVDfB$>To;^DZU|o6Tm6$nmW_V6kb8|EP-BM}rqT!~SZo;Xjo{ByD8u9fX zy@)N_4`)ktCm?VucD;dr>`-v_JUMlAHrwYJC67d)X-+GpEt-96xZ4du@OoxR$~PNJ zqfJ{NT)33qv=K-P*FKnviI3bUN%j(7DtyuS?8_UGuktZ%L_Zgr_RMogK6khZ!g!z^ z>b=^;;V7B`d#u*13U6bVGeX_@`w45S3|&qbJ2pgf z1czdTO6D0hi}+^#97G=CXM#AB8Gt%2%Q%rx^$`VixT3o4Wu>Qecw0`7VtMe?=gE|p zl@#K==T8d*DCRBpfkO>qJqUF1a?Ue-n54WqhQvF9$drc0sLaw5rz6Ri>5j^zdovxg;*Ip9;?zZFlMBCUstQ?<02Ph!11e*_em6{Ul&?jfjEF!tlj&HNa zHalq{pV}zrS<)4sPDT0c!Gv`Ax}CV`PcP!K&)tf5eD+q{^~jve*;d(PR#r{8@Y9(5 zjxS)~^s`V}-NSk~idI_{msO+t&`Egt#TT$+$2Lnjlq>jz9v=fb^M<~vq6~fOx}j_K z(AKqU*5D`C{xGcam9KmSQ>IM8Td8x&^qVXut>2@iQUXJVNZS>|hnFTeaUT3TB0 z@084T$UE-1BMiuG+pDx9)@~(-cO^IwxW3LQdX4(GtZCal`95B+=8 zpt7{YsY-js^5skfd?gm(_9o8*Z=!Ped+oMSv=UtHl3;guB3z|~?HJ!*p`tu5E;dy= zA{u=DncPPKt*p9cWX9Ag$}<=F1u8t#s%uRF2KOq!v|)KTeM}2x3~s@&?yaaU?FfQe zzSZ)4hC{C-M9u z$#?vUvj3D1Q3Bi?O#k@v>+$igK7~h~UK7q}W{ezw51cU_;|BGPw`FR=o5W)D0mFDc zL`2QJt3{e-FeHt#DVE_lThsWELfdFpOX(r!(tHjCk5#Uby6H%o`||Rb28|?G!-hQx z1+{hGC?Kg~h*KpvqdxV0ZBc?7)0+k8EcPcuDb<0nF4uD~)sKdr$j@?LPiQ9RAu5MR zsY5~XQu<9CJQQ3T%>{>d02n<~K_KK)*e6dPj*)}vuw&05yzu5~(e0+uKn+(p6xp;X zbS5eCuMJHzoKinHPDG%U*4FSVdS~x#Y_x{GQU`DYVo|$6eY;`wke<1h;&w6_9Oj&u z*^4&9&>2*t4um(`Z4I$qkCqceQ}v%4{0*s*wgx6rCg`^ zhR(ps)t>TWw^yFF+N*yO>|EDJlYD3OX`$5pOorVi`PJSsYCjrjc3?yD)$`d3Qrh{( z2|i9rEqUKk82f{lC{Mk*0-yNK-FW+zzr|HQdl)ayS&N3I7F2cVhI7w)8-@%U8P=^E zaSXZ-nTW#D9IKoHf>&RD)+*AJST0z?OZ=Q}yqJ$v@x!V53NyWjop@Zj>d($S^jAV7b{8E4?;n{N(-SsONNz$KSlf=_?? z)0jVhet6jPzf0=fyElIEi(g>iz=4>%cqeYSbqB!G%wk#E6N{Y$BSoo|!L|p%E8N=#785*J1{0(b5UeMr8u&TDk1_o>;7J zn@iq|mMI%fOm`+@*O*)-t(Pp0cH8^{#@wO;2dAvoM@CN}i*6 z+-K%KD+1HLF$hMRfWJ9&*JdEFnVJ@yFjAwYGB4(VZWD}g5_M7pX)JL@0Og~wFfZ`i zdFaut0Hgcn;e@dor;lpEv4fj2q_!2odwt~RQHe>jD*&k@XVmAkJ!Cl6AjDyFn*#hZ zyXZGV!>~bJ@vZ-!iTbv~xa09R1K-mWuGkkloDJyhfdHR=V;!cB?175XLQ8qfi=kT{ zS%NiN4&a05jSD|SC5lFQNR((-kXg}b02HQ;?t!+BywHwBxD<%xqPXwK6zte}1V6uZ zUU=5k-u;c}S6hvDpELz$P8ksdn2Qs)KjN%6u2m6EPLG94Y7?=cZT_W^$?Y|J#NodHtQA&XwE;05k|FsaY0)S5TZ;J;Cjdy{ z!S4yEuZ!whve0gOmBu8iZ0QB%Axm@Yx&V87oCGsg))btM9m1mw>{ol*LV)EnluUc& z&=!?dRg{EZt22!M@!>hyx7Nz5xXHb8U_r>2Xib-g_VTMd_mc0Vb$n$m)iPb_ePH*# z&i)(yDksm@ohX$Q6=3G1LE!+C_fObIm@y!Qho4&%9_a3?lhEzrw2a$nC-<}DAamhX z0?q`l7U`nbRL7;DGl!kI)(oDq;86&+4rvFvCT)+@H{lzufgf3 zo}Te)TETT^8R*d&1}dHU>G+x9wFx@6wYA4JeHiF9mp4yTrrO~Zf=m(_ zruj8EG|76dQ}FP+v_AIL((F%pXrS7Z$idy#Ojk#_SZ!_6g5J12oZwD0#FmSs9WGDW zYES7<>^irfOYr#g$F)VbEgwjm+kQOx(sF#_>U%K#9Y4k;pScD1JTWhLsd6~n zf;V;YBwT&fSMc0l?!b4y@>x_@mWOSNE2sl2=# z7hQA_9t&jp-S1wF=bwKbC!c&W{_DT~3yT*o4rTuDkjx4!vlVi{fB|@Y{x*E`CoiME zL0T=K*l%>rlr);DT2{;QwB+dtY@LQz3uWXw&CIMi2|e~f1l;Rt4;|!Ia~?S!`U{yK zP1{F5%5E>6kEb~v2?uo;o>5OrbgIDj9SX<(y6VaVol3|Hxz%D%#N|;t%`0eD<_=tr zKd0MXq{VwtJX9P*R6@HogQ0W=nfrp56jhbQfj=#_3CY&#TGo!!$F^h2usqaOom$ab7MM&r~GEtt@^6}`&a zQJBw1KWz)j=9JY_!o7mK424T9E%^o~o^)zib!8Dg`{610_UDep;f5nvx?w*-p+r<> zh1~qryYTG1&3O0eV`DT%PaB$A@yiDm;noM|;oBdag;4{#_(|}I$ze_9G%t1$r!IjW z4G4n2%UAD)oKz0llD=KOW)H6V@k@B@*>z}d)0jST0N!)jGz{%i8_oeN3)ZmaXA!1c zy&BbnmfKl&L-R;x?2a_#Rb4bs*{}eQ$K*qd=h`~*N4fNis-T#Ein0Y)AH&vmJxgVj z-G(pP)eMKunxYm6HMbo~?l-Od{Yhoa&?jv)tf0H3AA(Cx@`?Y~o;J~a+&1{9z$IFz z4(r5adF(X$CYL*Ot9X#7d47dcA`H%uifL9B1PU|Ra&yMak+}YjXYu-?4LES5DR2s< z7H-KsQ}{N0+To41O=xssO1%GLDLK!^GH^(AM=c~MF0F{$Yp)JClY_XOV(l_lGbarW z-V7C@rKJu3Xfkk3B-U(U+q&Z*h7am)83(`SfgRh3|t zmy#wM#Z)%u^x$FckAHput2ge#)}042uuoTqTFKEtUkZGqF_!c|_q z(@t9mK2z>1IWOJMBp#IVqEmR0Z64rukk}0b8%o+}k=Jy3JJ;v3?2>z5d%vFWGA-(2 zRBl!d?mJMASLUzBlP@pBYYWzg+nvq1ZYJdy6rf+9zBuu?nRweNCt%{J;fOv@y>81k zY}~LRyf3Nh#;B81Xn%S6=soTPEPvu=y!_IWIP|b zC94hL1V!QX*JtBbH{BRc@J;Y)=+L2fEB$j)*REah(T`q%%PxCo7zn!d+H1qDd6!;# zDZcTIZ~R-x+61xgyz|b0hs!W;@m752XRqKppPz+Nv(y9r8J3;0))YkvGyrjQgTHNf zsgjv)S{uieYVwnYD@$VV!Y%9GK}1P`r9N9Nbab;Qw3ZC43)8Bq|yws0^5 zi|ZgeM^>(%h-mZ4nFocaU0T0UmukVkXnSr17YE>l=uRui^B(*&k{NW&LE@`6?hFH1 zl(uv_VU@@_9bGHvG%F?P==4a(|0aE!`+T#67cJtK`pu`8ZZ5nq&ELb%Ey0a658scak2|!ho0_*z@HXu5u%6yfs zZ{I#RVb)BXaZ>PRcj#bLm6uxh&F_Y-+i~#lVU$#NM{#)#ynHC~CC}_{mwv-h)};>~ z`Rn~S>6CL(Tv8Ilmj>NPjvZuGtRfYRZ67&u1mFJp*Rgl+9=!9N@5FiMorky5KR;Df zRRw{pkK*#nFAvYi`q|HZhGUL71{Yj#0lxUfFNQ1M{*}M>IBV9da5b6vGUb~Kw+BJ2 zSMjw^AB)QJ=zwJE4Se1!sw$0CXtbomSS6XC7G z#;pf&`=6KK#o3#~CR2y?!)cR(c|u8%H<&=hY%)3$aI(t4?;&|t#pRJrvof7Muaw%D zqsftMB-qNf>xgb^OPYqWIL}A30>t2)WtCcnLxqyI+R3U*`$5aR(;eP1&Ik`|xoN-( z*qOuwTu~kBC#gIs?9_e%ku{T<1}xp-dgdH%pMs-6a*Y%;*HbMK3Qwn{q^PbEU}T8Z zIbleyky0qpRa{(vlcx{G^FaXX^~D=-d=S8bg%{Sn%Tos8(eTP!OK^P#A(bao(Df>I z;_{VX@cQt;Nbt#uMe9=O^ZuZ`ckNOh4D9`|YSV7(0qpNh=E2Lrd1d}OoO9CHRM}E` zlXC6k^LrkUb73SHr2vB~H*Q`2zNav>&@!zJ0C8;e;gw`Z%QtP?hacShR1h$1#3kpS zjgNfzqu~Q?rXRDl=^)RD_4T!8o-BF`)3dG@2KDcU**kY*>DukM2oq!4I%6lCeqUX_ z3dt^$_5Nu6UZ#y4+~xQ(b=|gH1JdE88&RdAK))sW@IS~0pnQeNKuhhbWMnO?2dX1fl#jo6r<;&({ z;-q6C4(4Ka2;MQk@$>6{hS{@U3j-+M{qA>@H^6VD|B+<27Jm4{AI3T7oP$69@sGIw z{`>Uv1T9@LVAWAcS@d9~ z;Np=uvsld1!dEkJbzQx6cZhT9gkH$c&tv*d2+$G|i5gqhN_qMw=SZdmm=p#r(?T2V zX@``$TDEx#Lqg|_ZLF>4@H6*y-7E01caO&}|F967b{xW|E}4Yh-7ACfxD5-}?ZYh( zEyji|`*7uDQ*h2Pg94q*$AQDm*s<>jT3XvsQ(1=oJu1U3o$!h;QU+G8At$MuIC~ri zgI8TuhQ{VL=nhuKeIt>DIh_8Dg*$NboeQyM!~XCHmy;(9!?fZ3Gl#Tmt7V2vMQlnz zbPHC`6WgNp1V$F+kJ=B%FL*aMC@sjyqDix^V)E9o+ln4h@H1X3WB!B!i)iqzG_q*d z+|rYJ(TqzIl?U;Q(COCitd?W+M=~;aIvBrHKt9?zxCkeu&kB$UvQm^50X~&ufvuxF zAYwz2h@`^eFkt0#81|MoFAn7@jg&-%_tZUc>ag%Fv-z@FM6Ztyo^NfdfXz=-Gn4N= zRNAuQJ(TGc$shTL4lU-(vZ4=r%Be-Kc$ZE{~rNqO^RIDjobzo)Us6RE9@kKStr+iva0>F31F_0vTChe<~on(@qQEAjBN zi!poA2JGB>IGp@Osi3e31N-;I2{Vqt+fJEF4xwGRbZKZ4 zb;GB|m?Il=16eMo<}mjSuRo5v|9C6Lj++|TX`%e))GMfj+qrY*;1@UiESS*eM^9@Y)6Y@+@l`ruie zMX(EbQcBTF(Ozho0LI&1!P7%BEtZ}L^_}5N%W!-+1NpVIcAzbIp=1utA2z54pTA-X zej5aCF8<1T4D4Hr=C(E*s&BzrGX~+C?>`0udsT(!hnZAcQxg8U^k-?2I$fe&G8qlg zw4%ALH?ck_4(8fz?Y{NsO>O8=U4e6^kH)~B-7Fgne3}>8b__!^EmF)MC^##hq?J$r+%F)4@x=9*z_I9qpzaV{DC^g_oz7vI zTz&+W<^QsEIbRViVLfgCg67#MGi3x9#ZO(2(z0iufiWTm>zC3Rrg zZE_dkkM3#TYpY(8pUCaBnIqA&TNQTgJB-e5%}Yz>!Enjy?bsc>Md{VOiuFZ;m-68= z_=r*^V$zmO-9CY+9TXld_w||YUZ>>y`b-~nuFIRbzV7$W;=yMZp=*~a{Om{9qDS{` ztOjCTPR`TN7KSKzl{|!J>cy+K0P=8dG^_*F)z#tMp8ZF%ZC$#Pdo5tKQ<^-rRVR^( zN`dFXO-}%-zap=$?eDH%G#QEo+kGInQZZfOg`t|FFFMa7t zVL<4vyY9kIe)1FiAqZxf^RY~D%dFV?S4(Ewqw!;ACDvolt`GA*`_XAA%un;68m^b~ z%{+Zxnas>Zui+aNG%Qa;jbDV}N!m9`XuI56#ld;Y1&10itEU*uC~6Z{Q%sz;hhzZY z_JPEwG%DEgG~2j#>}w4CNjpliD+jHfW?fIQ<}r5C#^A7w*CD<&f~{E_iZd1q{F1RW zP}w+EZrz1Fhw5?u=|fQy9^lSLG6q>oBN6Rez}pYJuPxb2{YdNjMm>&3(h-RWQL?t4 zQT_AwqK`(Ko`%L&tlfA33zqG|uDwlYXlM&xV4E?lYfUjm4(SrETDttqkr+9^e2^p` zgP@Jon_Dz@Y2GL5%vKZ5Ii z`zGcu-4!m_m^FG3jvYM^Riz~s3a2G0pt|j2C32H#DiU?SWnTn_6gKGT!bi%R5ouuHde4%{GX634RMGH?oW1E-pdot1qQA7wTi&&9m`JN~2QR zMacv@W=$E4N1tCBJP_B10jz{q`Cw%ipLTfA9$KU!1+2`6hhtO@Jl!edv=jxdFQxsP zwsOqP(*mV_S}5#_vSOTl;uzd^|7%bpq@zn_8=*0hTmSMJzW(tu8O;fFE*DCpEBg#( z(Z9Y`8)-6)?%jNw>ohrcwvW=BCXlSkkyh=b>9UdQy-zN{&;Rgz_>g-|@IX6l>NJ5` z0FDJk9$Li?Dx|@?g2bl8P}-}mHY}-cY=QZ@d|tln2PD2VWdB3?<8ACRxsP0!TymYW zZC6*c;4ge<$|W>PekPY)B{J0HDkCwey%yTa_MYY!{AFn}RU#}n5Vd8qTu-#s-ft_> zz^p@^+qiu{{`T5RJoeI3ELgD>^$nS?ofZ@nqF?|1IC<8wIN{jo7%_AZYAP$jZGk=> z?K~~wf8n(`*t>ThY6p!+QF%?WV$p&owY2kV2am(%c~9f<#~#4PKl!D=Zt^oWNQ6T@ zV`)kB#lZx}y??$3&;IS1a3#>!zV@{^nEY1yze(M?b;GAV^{H?xp$TGr`qQ5d&&j&x znrm>@S!abS?f#Y0+u#27Pc@aMHt_hh>($nPKVx)z7X``(o%}5>R z!I{GalJl^l*)zxCdK4FauF;sZ(QMS^Ff5umTrKbkmKPa0p@lZrTmZC!vWs*IA5j!M zZqMbUF=9wptX#JiyMmX-6{W>)FY9cJ>>R;*uu~)-t`zv$E>bUX>UiQSu)Je~hP(Yy zC*=nln(*v`HQ`Fbi_RWy2OBK8YJn=ooujXudq56ey7ISEXGe8O3cS8#i)a;HC8U(8fgTc2w;D7gldK|8A!WmP#%b zi~KDpm!ZTCkUlAr+DpF@9A6$uhk~GJd1+zz^~tz_6KPdgxNIkW^vgG}b>|UOm6hQ1 z$s;hbUk?~D%2%J-WfqsT9gou;*N@s0n3iTS zFA6M_{&oZf`^eU7%`{^t55lMTc=xcqb4 z-GlgDhh@7ZMe?;n2Ou4E?J8!XBmS>7Dx5iM6mEa;^^Ai1mlbp_Wmo2y!;@RvP7AlY z_{JgLn?7em<-xaPxexs|E(rMO_R|EmZ9lZ1rImMpEl1lTZBA`_uq{YlsiatW=J)0K z>+sE=KN1EBKlQN>;2oDo9T?DmU|3|%-KuYD zMrC;k!>Wjm+q_Hq%5ANh7WDJ67* z=z@Sb4LRs(- z_P&e9gdbnYsI5xI2g|CNPRCi2C#LP;mOJnnoVZA*zyyOG!BEJ(S_--0Xuzczf+!?D zVZ*X6DQs;!ov3asc2+n1@y}>7*%FU--rG(NUK;;xE#6$c5kq=)vue2W5XPxae!+$IiPr<;x)d^r4thD-*&VP`i z-@cKUU2C4lVSv!!&Sq@*+S8s0z*;3nVMy%-nqpR^o(HRw)LXi0H|8wdgCAdcI;M`S z6ER3oV}KHAj-90dlm>OG#8RSS(H_|B-aH#MwP`dow_(%H!{}aH7H@mBfM$=NdH%J{ zxc;|q;!u4n1_yR_(aiB-5R202(`~?Ky-4hY*c63jb)y7NyYL{{vrg)V)fC)qd&;Jf zYc0)-X(ad*AdUpIz*>PMw1a?KvvS8pf|(sxamJ^HEGsHDN$)jeJ}n&NUO~XCUD#I8 zP}@MbY_y~Y3eL9G7zFJfW%I)OGip=7k=ml6ffoDB6}ztQd>0)A%S;dZ}mY%9*+lQMV|w(mZKgNGYY+ogi!^W@)3 z6qWMcjQHYh`~ee)lGjd|_Vi_9JKD6+>>7!B$6Mtzj59j-odUTB%^LlS*-4?TzFOOkunJ~*9jK8I@eWrV?R zV?N5#`VXuPhs}Ml67cX8<+Zf6V@;szkH5Su2wbhk!rSiG%2wA5J{1k{>GE|_P<_pYjaar~C5kI*P&;@6;IY(%dhN~2D=0*t zamV4!JD8D-|s_fLG{6FBk26H!@NiGPJ;ww_*l?X@9& ze|lg!dUPwpX~z#FE3u@R1js$uEL_>ePF`e;B%g1|;xlJ0duba+wjLh{ymp#q{Ys!+ z@RT|YCU3{&7C(t`*il`b)T6&v9gY(WUbY^WFTpotKs81T>4ueScVp|mgXrD0+Nz;A zmMq)+K{?7(fW>Mu7fISi?ZP(NGZt_dtY1~OzqKO1T(e#ZF3gIcr{=A|h8=rx&Z&cO z-f2S;AaskD)8FJ*`$m4!4?Z>HqhMT5(k;!HmGBAhrB#wz%XB(0Ijz|;Z@`$q6!?AV z^({Clc#fNFz7i;QT9#x-9s*f{cpOq8kmzHXCt61fdAx3r%vQ)ljcqv4q=UJM4$t;l zws9YhnN&?yU?l*8cguM4`E~fk@8+SYsU4Gs^u?(YhlL+b2x~@j64L#Vxk^32MH;n{ zwvf@YoT3XQ)aCM!?9mb_lM!8|nQ5frOkWT?#?4g@He6)+pl4I1Z9k000rN41sGi7! zmaQrxAx~h3%SQ5ZQGKUwmfG-nhPn+RBTePN{iUFnn&FGvs0=3VTr4|Hv`2mWGi^7_gZEIWO?L(%CbctgF z=-NO|h;1d+RaIe8b4zPT6C6Gg+&=k9dQV%^`jKt%fV2cVO}8oH%jf z|M?dS&6r@eK5pB#Ej--)mOm{-Rb??|P3;3$kEIz&_F4+|IIoqF%*ZXU46YMwq1PU- z6+e|po>>}EqiYWi?Sr9NJKt{_4I1JZIpQ`<2|sLFd?=%K;yFT@w&v&ov!(8*zj*`C zEnI_l96vD#UV2u^XZ>O{6;ObM+j*d&zod+wlM{i6$kf?#=p5rjq(|D}HpbZ&y!?24 z?g}j5v=cL@_QoeaFgc#6Y2e6!18e?tcjHngI( zU58(TGvy7m0p^2I|P--FTOm`MbK3>lVXQ9-bF z)K|o`hBRm=a2C-n`6zH0$bRjQ_$h9EX%&Ll<-H#Tp8cwh)7L9h>I>#8r zJlcRQ-yXM3(Gd_AWdTU?3IM-5GFO>4Hs}8OOi|zx$6@FkFnRDw3$Qeyl-G3>D_dgD z`WQL5E?oI@@K8f=U!5(NjZ*SsN~lL^kqih(myL#BW;O&$<CV4ie zl1yygGjIPdJ8NUO0}8T=Tw9>lX=zRHg+S z(!F%;(@P+|KYh4-iQ;Pu-T>Wr=ZkpoZ;Mb}S%%-<^b6G0b?kIi%~3WXnmJ@65Nfm2t^^E_;=Hm*hL7c77N-hU4>7 zxoDMnvp0iFx^LrfwLs!SlD)70a{E8Kg%as>18XLA1p2pe>pr~j=4w3l;xf!$xE==% zH(GV_3korL(j;7X_8B;3<}}n)k!>JIc=pi~UTY=~<^f}Qx;6aDU4DK(7A;zY+S=Oi z46L%UvQEKxEB)^#(=Vri&HTcLE&3+XzFlz0tH@5>z%5FmQM9=2K2goC| zI}5V&6$8)s0>=S{OTcNt>BLAvgAP$!E%7Dcr*$;Ln_~YKNR`E_apH`Ac;=-Im_2Vh zX0OlF%rK6Dsi`QbSy2pa{^|KWoM%YiDlFD&0rlT!xifcHx8> zeQ{+FyecU!u(8qrA|K2(AnO#p7W!8cX2jvaH-k_%UY$OYih|Ny2O>Ize37Q8gB-xH zZCHtXng7g}9>W(eR(~jX&D5en`Rj1qkWAHUGORz+@au$|aEuS;w)M^J*mbBC%^h&` zWaWmvXl`o6$RS-ppOwtYta~0=fjj=Z1noh<>)25Paq{?~nN?cEWyF}3%&Q`X=hFaZ zm6L+|*hcKe!AI&y!52$QvudCOSW;I>noC`!67W*~r0vNP?-YlmY`P>U}K~5egG-2AV;n8<7QCj7EuBG`xzxpM$0ecCBYuC-7*^E-9y01WKi6&tqgL-^R4n>}wb z0S;qi=E3wm=S}nKjnpra&hz@w9gjNu3^G%muHVvN!DX&Jb$OnzFVpl)boxOj-2LcW zTzkt?s3_oH{OK5?0^Cl@bX6yn~nVFS)R_uMeAxVSiI+Y1vW zP7Dv{KK}UQF>v6(|I?tzTggo(;AjF_rhguN^ih20JKw>yY16_Lc%S|3XE9;I1pHqm zqeDOa=})mW2#!Af_~ZE6k6*;Et~mo;YND^T3A0Dh1gOWN-aznVdOtG$9Z#r15PH1pn;U{1UDa4QZpb-3M) z%p73;vdtLOuNt*oN@HM+P3^etp2c|JiIqVhD+mye8-f$Y4#}MV8|kW~LP&I+_XxFx zTtQqK)QMB1Cfdbe&7UB8dRt`L&Xa6XX&DCfAz{9P9So;@!Xn+ZGLp$Z6d{NA z{Sf6xaV90&6jHZBQ+m8K!QY>X-CNZdy__~sIz4zT+L--F-a?XHbYbL>|CKAw__owx zNJ4Y9X>%+6}U<2-ddI3(FHVmVN^yKn%+H=K_>6NcJ zt$=JODy6QkOrj+hY>6((AUS^R`AzC6FD@nAnSYB53$S_ne!RJ4BlxL3e@`;O6!YJO zr%eb~?a<_NI%#s!kabFu6K#{^+d2&R^_c&18B6`@gD24=wUOGrx?nv%ea*c%983^C z{^9rI;~)KK_}~%Ok6sUi9yJ@f(Yc^!>QauB@<|}6XMzzO?H%~_&9|Ycxe4z)XA1h( z)mSwp2+@@y5|eF6(oFZ-XaDLbt|gt5;AW)*KOIW2JGb|_Jxcmy<8(1fI_L8jQc}*p zEkx|tMuZDHxjmrL`7_mOTBFaa(vfjOSAHIFjMw={ ztOjtco#xr&gj+^a+K4H6W#w;c&EzEy>dQ+T9k}O!0HYH#I+ZrULV@7nxf@M1~CwQ@7f)VCCto*Fc;9N>`S}pioAEmxui-QzVTJ5w6T(x4= z*4=pU)x}u6aeLtNit*WxOvQUH9*gp_%<&4g3;>5KCCEu}o#rqc3gOplL6@U}OPm4Z zvMIn%2QAVR1>xP{g^5H#d@GZM zY!jF|(%g=12U^k4qP=2iXllVt_squ3DRr1KzAh|0c(?_>xP2ZTetHdx3JSvWu1**? zG~7}df3yI0utc&K3mxY*qEmV7hF!$ZOC?hXH(RhzW%cNA)(tmNS%Mmc-;BOn>cu+ z3IAv^eYz)jP~Cs10X0>n4viAssqm0nmw=?N-PJh$zNhdlheG--7e3#i?e@7#iLLSe z;PBUP*^AG7|32(FP>++2oq{ia@k^+vsIYN|(euMh#!j+XH3P|k;73} z+cli{#S=VEn;9e}rZ`b7pD$5YIhsZ%fBoh0XK>)a0d(m%BK+$N!py{!`x&{eS%FnM zDDbm?_#-ZT$K@D1dR&ZO!QFB>a@1&C`{SR4@XeW74M*y+W9QBwShWtbUws7&=Fi9S zWy`R5@nS4kupm6wX!!8q;r6xZ)2D}llfFUV%X}@*1hw8u|97dpyd0NYa!Gh5*8TV2 zkKg|Gx553z_~a+A3|D3K>eUPX+gn0=_wJ3~{N^{|>b|*)cHr*6F2@JoF&@Q5#=oa| z6|gep$@ks!ksR=QI1k#;IgsWSz5HJC{QO#K3sxraz^=XYz-=2k59RU&X(mg{cpfVY zFC+LeEu)8Z#kc-@7QX+B*?4BbYV6p57-vi#8GoF`LveiLP(XY&-{ut8C;4=160+om zRjD|%4cn~yesk4kELy)6+xH$q*Q#<1=~au8U}`jLT3_UeFXI5Kuj5m*=?F@y#mw@t z-8Y&*s6+dKl=E$QQ9oIU(ZuQZ>baDsbHJr_xs9ZyO!>^oz485<=HTT;+j08TezO14 zDPVMtUtXC-J#ho`X1H#-uP~_r3;P zecdZqymAjJN{Vs%lo8=dMjtN6JwUc%Ry}#&tlfOa&H!uCAGO7}olfvsHW$IykXJ*J zHjzzQ_!aDxSlRMW?HN31+0>*5~(vXK<{8`Xz2L+)}xZ zlXvHF|0?F?66)z{Z!)R`X)4_@~tm-}$lsZ!qZFgGtBzeyz}C73j6QW(f; zZf*&Kj<3A(3c7afia~=0g)6rHHMUI6{sxN}GZ# zVNy43j;3;rY(9O>ML&m0VPx_v%8PL1a5L_HVkJ(UIuO+r#koP{C^Hxunp?wpX8c87 zEj92ZX{KYhHRo{dZ)n4g!|iBn&4#YD2b{``!+(8#Irbesh|AwT3fp$pGZ1+oDGp#M4+4(d2UId!S~q2gv*2(X{NYHd2c&nT&o`I@zs;(j%JO2Id(zmz zY2}Nw<>FPME%{ZQlBf3Y#Pg&&5^SHca~gg8N-&kxn)8sU>BFr=SP2}n?6sk>6;Hpq zB6RToNHPzm2E-Y&Mqx<*T915{6NK>TQm($1`(EXgt)$OM9cAI?Q*jDQrNE-SrXbOo zw6AYy!Kc3WXS}v>JqGmch2P)u+i;tS-vWKV5bk{zph*xb(IdN^!itqEaQmHihaX?K z;?h~@T3wcH?PAo7Ybqzsg-=&~Np6#1<8^H=IA=C(Y3({wFE^dADCKQ@lMd;863L(Y z{IfJRaD7xMWf1B?pq-Wv8_*ro#|;Q+fAE<_m_BtXCXXEfIx~rJWS_+(c}f~D`mpQ( z?<3HX0}+V9Yy90UcioGZUVSZGc{TL73&Smc4veE%A>*rCR8|>&v1sn|k7D%LQ5Z2| zRKgp37~%I3*+-5X!4H0LHSYh*pRsfAc9fQvphu5dv~{#$=k8rlg+XwzxC{+JFmB7{ zP2uV+6Ue&rkAKANx8ELaW1BN)4jLO9!(f&Jw^*8gs*si_H9%9+F6O<$NZsg^8R z60Vx--n~2iH`ACgW6;{#if5mF9xK-D4aS~o^y_Vc0n$7mmxqq(_-2F}xjl8ZzO$uE z@_fnzJC~;xMlJ^*#{mJ3f`6viS#K&mLP`8c`Ls;JL2uoDDGmZw6UWqr!Jn1u_hQb9 zt=PQ#Kr|( z=L}T@^N|%>c47a)Mw~ROe-iYt8TZ@^Gjru@E9oMTdsgq88RoJBR+k4Wa^Z6%mi{n- zS>t*nWP&Eu6{X=p zzwPAkX-lv<@g~0-?$9C`1n(GM=lHfBDpsD>S82*9@yU~Ru6^4PZP~fBB6S!uP|rJg zZ1~l?)th$VA5HCM%S%(UB`fFP@$4^^fYg6Uo`S@G(wgd^EK$0xPlA%*(@v>$uRZ13 zQ!kU}>P=HHuzvZc58{cJm!rQ4Ufp_2cxH;*8Y09b&-E7eSJX(IEVEiCl6EcF{N-Wm z)-7R9bwvrP*|tyssXCcfw=;f->wzn4DR8UAe2O>CUxDTM`k&G#wTo&iNB3QwmxG74 zUj$sA0(Q;E5sHK6`^FrfzewvNU%q*hYF65A-?=LunfR9zIsAyGyljRR=m(=a5{k1N z8g$G{M(G$=aIs?bdOY#;v&hRYz|a#eg~~6GSn2d(?*6Y9W{B)HW)}8uT8{5u^Bs&E zHxYve4PkE_Z7-ArXjKebyNAb{0;WIvAV z-ijT|U&Zd#^U>VWf?d0Ig@3QU`YL|+yW7I8o&Edw54Rqka>^+<_Sj=FY}l|csP$I* zpG~G8M~oN|o@4gXOE2MTU;7$PJMA=l9PePpxlE#vfgSLJW7or@gp(q>=Tyy(d*_64Lo_2Bp@JL_b;9uyv0 z)9CeiUkI=npOF*GiC+`G?fl}Re4KP_e~ca3J^Vu9qkmhAN8enE(&8e#=j5qDP@>X- zZc)cbRRS4wb(KY#cI$w!WnLq6ctmXK8yZLTtHa#o8?kKl9*iB{-J-?TAw~M1Rv;BM z*Q2x~NF)Z8OD`1bI|(+W3vg{i6F6|;#JVbtoJjEVeP>ajbv}h6Fq8Z0%3^%{-4nvI zpgwW!WBBjOXW_J|ebKG51gU&6(Koks;KAot_Wn_iv24u|Snv1X&ji?6?mhK4qb8PE%7PalcOk`mE7aWG24 z;bAR1MTr~6T_n(`h+Bw*BpTxOLh1&Tw(U=OXz_YD?UvEDY52j~i1ZP75l@^p=boD} z{PMSGXY)o4SgW2u_>p8F%{wU`5ZoHF+?+<*YG&nII91Z$aW&GG>s9pY$XG)hg}6C! zP~i$JMJUYGAgO8bBr2LhN@ufjsZ45@MxPSlD=#l*k@Bkx*JH=-L%8g$$>H*4mkvt> zt>h@VP)iB)^WTV0PT$eA*D2+k9*KShe}8dYw2WVKxJaRs*DEV6!r_J{yzu549K~V- zCz%J+g6T zzrN>XR8^GWS2tXbSuf4&c|y%D^H>Q{@8zGGIr z#XzNCO-pt?WxB6`=IQ9h+wQ=t zZ_Yv2{-ZJI*mH^9+0Y%lO69C4t;8xQDh&cpU9tStr-KTum^t%!wgM`lG@(0@s)6~? zBM;$VUM)tR{$BJPIRiaM&p`Jf6H(Q3U>Lm0D=0*9c@>H)s7Wdb1s$HT4=U?4jw!h)z#JiYQyj zZhBu-lt+5$dIfRjp;Ssatw(<;e4kC_Dn~kfN-AgGL0s|WYv=Qz+LI3fS6W@^S{ltH zyuKM>dcCsJLW~_zi*rsLg4Q;Th0Awg*62auDlB*?k;X|M_V8M{e&1wh4-8F!DDn^) zKXeAa-K#6{`tnWKy|)1;&+MOts}ddKRCslP7gC)dc`jFQ`$npx;h$Kuw${Egl>(E} z#d{!XSLMz-wdWc_TS~KIddhF-BE8C`U!q0SWFAA@IO~X8IqhN_Ifv%oObAl#CTOw7~ zb6RbJvUW4Bb#$P;JyXvtpYI4BY+G8}(bUo!UPp~Ovb>d-6o>kopRZ78KAEeO*P%&z z2lD&q3rq2n-#vr&wsw5sGgsn_(@#fc!86w$Zl&-`ioa>L>PgluNjfv(GQ4dK9;Qs{ z*Q-nR5cfn^AwX9tyxUk^UU)y!p5~4o@KeumB=Bs1kl=umFG-8nN$#apU$&nGWS=1U zHoxxsWa)=NeOy|S?a;QhG~ebN=AWH_>ke7&G4$-IzDiPUp}wTmVNPB`q&F}|?$>VK zipQUMF0kXGAb53Ncuti-olJ-IN|cOyWCfOQAy!Sl5kb&t7XEPi?{UoZV{qYxm%-+a zT(j4EW((o=tvgWObu{t|iW8uW*0$ybEPdiO>{|I|=%>yNUMRf2Xg$t5X&kQk?0Gm+ z-;5o54`Ipb?U=W8GnTB`jy0QhW7pojc>3w5!#@+)7%*T!xGHPv)T!a`*s){7FC*60 z*1om%@Sm8>hdSQ#p7-F4GtR*8fB$>jefQmX?6Jpi*=3i7UokY>$^Rz8Dq zm^58+q5!u$b)qt68{yPp{qW|}jaa*JKZXtJN&pKKYEH3~Xk9J=fgvkNBaQaZ#9&0a zr#Y?4Gw4csrv%WN!SLx0E3@p9+PBSLS!n^zJ#8??kFLe+`P=ZjM_$Lh&n&`>aRV@O zTwjbEQX2-d%v9RUwRi1r!jkp7@a)`8n7wEd%F9adrT3qR17ZxkY$jT+W9H~h zEgfMH?NCz(+CrqP9(P}~EMhf)^Tv`bSifaA8k<_eEsZlq55@^&hlI!9aLHR*Lc5%i z9@h~Hl!wn~#T2MbkSg&sfz+p6rkE>>rxe=b5wy&gq-|j3(2PGyv$A<~EJ!GamSr2# z!T@Lp{zs4*EAk$&PW=p}2XMWBB660dhE(;O{)0V4DcF6WJniV}JnDO?9347gca1~~ z<%yrQMcFD~@^UIg71Qz|5Rj?Qw{1}Zbt>@^{0vi?)K5gAvbj=QNq|x6-z&3!IA8g{ z*5&I&uKZeP3qo&{?-&i_&Q0LBEqn^dJJ?aU_|AnzWvK-`5)KKzBxhe+p4Ydo8lQUi ziTL(SkHNncCOw%Z=4&=RyHz?)k6!!e^5yYh=Ud#yq6=tx6LaNibw@yp~jHU)2Of=xy1D8!%QSet;RvfNu>)oR!co3*SSrGW@Qe7GbfebW5<7atUOH0PCj6LPi#e@-nXn@YkNJ(Y$L)eiTvu5GIoUNw>XH6$@nzakdbOxUaOzcRY z*FV4Y4jejk2z@7=iZ1;};^-15Aj_I3uw}Ije8j*R=VIZGb-4QKZ{wI_W}$cQJ_39= z_O@}u2CUhz34=~L)q_W&wec{PK6VRst(k|4vLbx`{ikBqpWc?ZkI}`8YQ1IEbpMs&H%Bnl)>}bF|DM<6XLRL7zT- zFmd8Uj2}Nf{NmxDL4(4xn~I8x@K*Z!lj-Zax;lLEi(kaM-t{irb?2S4 zANo)j%o;dwApWP4IfLuQ8*dE1O!(T|ZRpmu3?F~b1e6rhhf3um9yqG`f<4Z_Gy95- zUDG_NjKbiaHR~lc!)wt3Qb(di3$&-e5k>>M4u=JXPr{SSgG0a{-4og@c7%FCKemN0 z@;bbJ-tnyxDoUERIdCLMeYUnirHz3mO&Zz`xUrp>JA;28~wDw*6Qh{?6Y1Fi3~>qN)%@-znat;T>pRe0Np zgYn|)oAJt<8*u-#i$lLwQd|^{jXDS@H8!`wtn8mKyce#x^jJ(E+YePi(A1!5?@-}O z<$O*eAr$gHhgAYx|{vLwq?PXlhyHsUo4+vCxk?xQxuZHERrQdoDk^G3*HUa~ZS z)6Mwe{YGU(RX^???bpmWpXr38Cee)qPjOv>oV;-1suh(ttr(X}{Y|dJtg9p*t-T!4{~;VW)QnBr_o1P&B|C_znAXfvUzOQvr!oiIn+M6V z(qi=MWrA5%7}Td5?tgj#cJDiavrao1U;FA;gYr_p(!%d8l3-(|u^W8Uf<%3=Z4a<# z_bzPNwiCsL1sFBBr!yCb>|I)6BiTKr$o4OZUZ?q_qp`!Zlr~WEyabQ?QXnl!w5c5Q z`0O;zpQYi;g`3NO+M4A5qc)x4%`Cxh@5p{AfDVR=@S|@X|{tDz8G{2`9qdI{42>>Ah84UX7v0Uy8*K{|aCG+Lv(s^}j@Qbq%TE zYG+GJ3m$yM+{OXs##IJw->+tW2E3UvN zKJkh0Ao%}@G;`)m+;`u7;Q{jxKCud=LGbFs?;IblIL;)GN2V(^oRv7 zio>C1RB2LI!F~u+SwGGFG5lkRBrPzmYs$-T?8pIldf_U(Fncr3I%yExuflSFoJ%J; zC0yUZV6pnzCtt;y=@h(acHzShSbE{m0k{ESNNNDTzWI}pdreg_&Od!9&OL2N@Peor zyZ1NZk!Lny+VJ7%R#SqS%HrTfa31>ftaePGHJG>WJkWw}6$RmHtURuC*U#xO&y<1~;Bxp<@fJcw{)IFY!Ddyi#~r;$VUc|q4k0vzma$65w zUFCe6{Fmme!TY{)N4Rq8-Itt=kAM7=7&>?;$||a|aLvCRp~Xg9{=&9856+iULaUAj z!yu@ogHclD#gc4oX+~R1QxM47hg~~&Vb7i&*ni*k`zV@KhaKfeLpx^;u?m6eCvh|Ww|#tGS$shxJp zBk2U59rTJuT!m%Jm*en}22=(?!12TTSdbGaKD$bzUOL=d@>TTLwL2d^?YV}S7eRM5 z)W$CdQI!B!l1Q5EbN}VT!Tq=vMu=R$Qe79X4P6PexD?s`DtzN=w&`}*a--)U`+1do zap$fro>^y@%Y%oG;JRPk9N1+OhMsT^D(eQ~=u=uxOOkd|*M1`~?1W43@L%sl{{h$H zTi?8fY!kD4#>nyB`|iRGKm8f{Pd^{|MQ(7Y@xU%Dee7oJ+q69V#Qe8Dc{V}@c+6_7fdd9${DcW%K+9}DH0L?JwdL^WlNlGj_Vusho$q=V{`99m;fCw4 z$Ab?(h_45EXP$ZH|H!I0a~{?Ye(;0vaQAy3T^W9*?yQps!|$D#Eoh!E-TSQA(~m{8hoRVJ-QSX=7pDLg?f3h zjWGfnKjb7+h3rE*`H+-`b-oW(4@EAlvkSE>Er5+#DuH2Ehff^Z53jA*7zSOZPv{xE ztSp7gFM(q~AydzkHHk z^HIo}>S7cHLGboAjVWV$p{Al3q6;DENUKJ}{?$~d8heo-%>I!#t`->A4P!1?lhSX5{c+uwF2Yx@e+aww9>&q6W5x}{d(WFD@=yCHO+Rfqb&g>&b6E5h-}(~zQljWU;cu@^Gis1EGgj~zR=hFfyJ_N{MY<+`mH*snK!_uF5iwtKB0CGC+M*UoGW z8i1nSC@iCnR<>;$4iHUfUY-3~@Sxv_F+=*JM{Px1mr??7eRA`7Qp~m$Ya@9f#eASm zgU<%w)kT+L``R}U@UIBc`nIp~>$_ynTEORn5qS%VMld{*e5EqUpHXd8B!~A27+ofr zvzNl*J{zo!%`2{G4qn&E{y(>rsafeduE-DJc!>(3PFrwr$2YzVAIxi*LszXHJU6XTBI^R)TKZeNYf_LZjI}ZO#ojT;GV+ zwpJ7d0TL5ZD-M3mU)P!{j2bosXPk6g*t))<5t~dvYsE?|Sh503g22|6ty?ks^&NQi zwb#N`LuTutSy41{{*7;Z10VkIhw;N7 z{t)kc=R0vq5NP`D_r8Y-L7?!TDL(_ttnxD3Yrpx;Z{qq}=b&ega!eXim#x8PN%F`o zC#kJ(#2_PpPV=5pTMl1ke-trE3AYkxltw%WhJ=^hTdTVWUM%BPH7`2 zvt`r-ADUa+EXWc_em)N!7inGRY#Y0}7`RI7Sw-3!k($+}r%V`z2VPx_zdpSNAHHn7 z4apf`sr;o;Tfi(|5I3uvuHx56{Hc?hOa$1rIDWBr_Bh2q;v6*W(OQc^1E+; zBlhfX$^=G5Ty8QmhNc#C4y^%0=Ii0hWQIx_VmS_<8Ib(>%eUfdH#~~{hZ-@wPj_5& z+<24*W1eM+kt@;U1uPd4$Q(!ey#cQm$5RAam6qmN*=wa8`-yCi{#x2ai9xCtakdm{ zUQaV`Mo5iauC{rND$@WP7+$_&%34{)c;cF_$VD^{)QlI)k@5ahumA=@`M!4tME6?9 zd`Mdqxg27;6r8iFIE^MRFH4rsJT!qV>6EqbmJnlBGImI~lPbxzvSrWtjQA>09so9A z-6oGKv@VMsgaM z%C_Qxr=*RIUwL3lyrlVDMQYHkSDMx3czk_m;RrPNqSGgYhnSo5P;v#aBDm&kr*D4p zta$a6&ro#AJ>csvNaIA9?tXj@_8)A(S57$wD-P@rCNZyL{=B)EHhnr&UY>1vB1Cp9 zJUfgwaX>D$$z9ex=#Ff?_H1D$z}Tg07j*5`6|cYXI@WI5jxN=e_|*+R3qN6>EJr%sLmtBmr$GLz6~Cj z5MbJ6Ru3{-VLm8f zzCdV#S%sW*MK2Y~%ge%m*2tlQaq-z_1hh6|{idy0xNJFAtyzmz>o#Ef&Yj`m;2Sn< zz!OhA5q{Co1h33j_spU2=791+g9c&Hz=7!9r%!l5yxIC~0$Xn-JN53}8`oWT9Zoy# zwD8b%v(@iYpZZjI0KD0@`OgYunU_DG|NQ5%dGluc?svb#4}UQm-~Z|f7&4#>TyHOV zZY00iam>oIjFuWIJg|8Z@?$(c?S?={F1X55M;ZmCHjG~{ec60VoXRtIQ7&AGMy&)I z{G)4hUs9a;;%HM#ONJzdnm@2AfYVRGU_r>I=e5LQ<5XsSdwn-adwE&+LcWQ)|`o~w_HzSZ{LXw?oq0P~bg&c0? z`fz<~xB|-@ejaD1CCQYur#!7~8i@&c;h6X8{0;clFP{j;uNKT0IS?mL7#i3?VMe#$ z_Cz#iu|V-|&gvy!O$A~P*2*I7vDC;OkbI{G0^XQLq5EPu*&D~rusM`f&ig|rHm?ZX z+?ptIatg<(b%4ykx6{TIEMPSpaFU8C#euoYPC-4Qh zd{TInez3l^a4R_HWdSzte11(47I0Gd*&`M~aji^=mIxwse6Tdb8Re)f6sZk7?R{Gj zxl*P5+IjA#x2TkFm7#R&Y;E~mC6{ZijCP)Xiy|Bv66z%QlC1d_NEwff!>;3=#G}Yn zBpdB%FX2q6OOpBI`sL?NL;qe~@v(2+6}-7W6hGkE5%tWCIk5b5A2=1qP8fuA-ne%9 z_@;VppN~Z8K6s=Fe|d5N&KorxeXFX`y{sGyg9oN7|NFD}{&&BJQ%^l3Ah9FsXdP39 zt$9dRAQ7rHk!$jht7Q%&kIuL;Sr0sTKd%1ab*L<_zz@IoZ5(&}39xlaWgQL~v5-7e zTezjQ`A|%lM61K<+|@w{jwRIW-m?cwSFQ=~W=t3y_l2!r@|QljFX6ffxItgLy`-;N z^o1^Df8zQ?+vK)AS7UuzoX97ARhSm>*|Om>lzgcx1qw}0oL|XjB(joZtp$BZuDev1 zhaWTOXm87uWusV@|5LChbJ>fqP9EGh_>u21_q3eRAL%q5bk}d*itBFtHJX|lG2obU zorBwtK6u4!FSRE;x*8Z@K~X7&pYrY?*j|9&-Es$Jzxo>9{l51G!JYAFXlTGg4?TeU z@4X)brksQFTKll~_Le3rxc>$m-nj|gyH?=Z&tHIZSn$eR_pLK$?^TB91NwB^B(ojI zoPlFjssU{Eu}UT}&N&tVANfHruDqfE<3#-yV zY;6nt^S*rtuwcOg%$qkaY;J;8W;K>M#N4dbnml=OxUy)>m@(nKIXvD3zTQd*<#7J_ z=Z9M}Z@cX_{Pd?k4FiK_%il>SorL1zV*E3bIm66sC0w^|9iDmS8T{tXh4{i1)6k>V z1O}Kll1w2giruJ|eR0}QT4dbeSLQXWu{bqxlGEw|9tDAHhAgkGUE`7Gm*D36W}~^e z6~~Poj1$KVMNvV%gPXb)CEQ!2M`NS}L&FN__&kv`rHBvvR`O6l|U$`2m4Og36K~Et4y|DUt_2yGb#A5YfnJPnd&4Gc9veOk34mmkwD4dE)9z zf0fXWoNmjqsn4W52*VA>FY1(rxXsku7Eq{sTc7qYC_gMRCZHXIvIr%R-8^cH{=fmH znd4CwB>Q1EfRD1R`qyrygkMU7d6+q2>QFrP+fU-U+n)^&9j|X_wv42n4mEv-WAL%(vxD0?_nbN@xgNN4bxCg401JvsG4k~HVb9=kSpVje`0^LO z0c`?*!9!VoaS+%UeIf=Pdv2EIOd!3ztp&@TxD5xku10xj5x#TfIk@1I@uGaq7gBro zsK)YjJJ8h979QFjmC^d<#f1qvniW{)ljK|y8KP}It^SYt!UX1mfL3)?W%xH}Kwq49 zx;dn`4fTzU*t2&(Hg4I5l|g^3TDuPGHf+M~y?eu8iTUc`bI&~&!Z5)Y6V#eCX%c45 zniU>0ZVrq$tF-=q-*#wLV_kLCRk-xhOYyC5eiIj6bP>)v>nwcbD_;qNTmOt?R?3-e zpr@XCD&CmC5x3sG7+?7KbQBim*&R;D9ZS_^?=M&89*vEu)>sXg+zby)bSLW>8v!;*6)S-Pd=TNe_g#<#PPZP6p zdY$M#g{k23s61rH_k>Trk|wSfxldZ3rRb$0e^ID7a_wa~=1p={5smPGBIYaNjPtcC zcT3wf;fD?zn#q{DY%tko+fesQY0?7oQh?BMl^|^yc}~!i!zI@RbVBdCA9|J4g8)l;aPhLVBrBJ@T}MN9uM#Xe(80QQS0zMH?0hW_ z4Ip_Ml5J`4y<69YC*9kQNQ<;&%98quP?$^h2|jscNK_Wd!**0Q4kg0XgnCKWTzoP0 z!9RohcEc~eb_u@tq0{i{f^}gK%X~?1=z#9%SzC!NRb^S|^7vxGgWnNBq=jn&po?ll9Qc$_%O?xX>e+Tn;Y$I1IVtB(JG4r2 zi)t$oBBwNWKglg&`7aarG~3p8?cNP|w%WzZaSBarfwD!*|uncRo#b8LASvZ(6DbiS{e=qdHE=* z>K6VfGD~S~Zor1wk6_30*`bWT`|0!W?sKPs$8_RJOHgpkgn_u_-dC}H%U+BcTnFy2 zO)?Lz2A=uiVVm&@5Li@v93t|HWS`Bl#;M@{qQatZds>(3DhwOYAE(SZCcx7c`0yqi zID7<~w`|9zZQC$s;S#J~w*l)nYzWT{G=G2n>tDlFT0MI72!mK=`=JTcj2}N90|yQa zw;lffmdwM}h!G?3`#bKy!w)}CMm9tO3{7C^I2^B+xSi{~Hy@P}~K*HbTU zKy9~DeCV=q;fj|`2NNw3$0p)|LcP%BS{hW->@S*mv%L66dD=1WsD%;AaZz-Ep>w^oJ_Y2} zeh~B@48PE?-hAF3DRnq3R+rj`L?aJUNx@)9GZ=2KDv@h&9d1jHf}zX|MU!WJ>y%3- z!;^yFw2%p2J^0*`ICypPgyEPrv>(}lk+kC^yMBUH5Xgy9lXB&2uBl`*S6nmV`)G{S zB8wK?ly(I|tM<2}uF|4cQV~{HGkA)*HAkido+1U&wPyVIwr0lsc>03QOB|j_pDID6 zt^Q?vfYBBOo*b(tWfUgudrFVh=afE)PPpZCh~j=*Npj^pX_-HBQINprTjX48rTp4L zaXC;vX5hDXsXjF#36{SNFVPl$2@W?(-l zcn}zds^Gq)xCkYs73kHo7kc*U6LVZfV06@4p5ltcvdaWJoIW5sK|gU&Y2Zo(OI6)9*P6AH49Gia|k9 z;BU>>^eU^W(7#V_%+gcv&I`^7Y1nu05LR#4gt-eAhhIK4=W1=)vL!rE>#3)n3L%<+ zSao%E7_2de!<%h~UL*e;Y_uO+2 zF1+x>Ja4uzYP;9;YdiyJCHyCB7v(=o~-OtLB9p^|5qy z32z#6PJM+=e1`R48~J7e!pw*|vgBu7u;n|fgO~}q<~rV1mCddyFTuq#$K#LB&c(IA zoQ;v*3s>rpw5@;fNvH6w~eK<0K|D9w=cN;?gA2E#Es$d z8|49_tVEa;OoFGdI6wS?ZA(jg_;SQbq`$3e3zl&2V-G29h)MkU$%VM_PcMZpY|fcJ z29t*L0sT6;#krDQgH<_{PoPPfLvVOenPXMju~_R`38o`isYc>954Tlfm;NIQg0qyi)?XX!8WH`8cXYkvO z<_;A+G%g79AAe~nUR$sZeS6jf557Gyq(~4^{F3G|7kmU`PdGm)%nt)< z`-32s10fq=I=bMMS0I_q$n^^g`yP(@!aoO7@|MTMDrB4@39Me71dD`dsrKIF~I;~!s zHfJ&%L=CxBh7nuKeJn zy3Tc#lERG9D42`A_z=@_>as?*d7OFAY=&8Me2B~Pm3Fo{G) zHf=SPMW_#6H19v$i1M-`ixme1O&pyT*kYow$^{s^_8!6Ak1xQzPtFeu-Zpg(3(6&^aI@-ggW-ytmNOmF}@a}9?L%N7pJG5Bpa%bkOV+as;bIMm#X!%Zz{Gh6I}dM!a<=SXvF5Zq})Q(G&J1cP#8eZBeK zAQo=lj`|=NW?;1jZ!Q~yb|%PWws^e#oHOu~Yp+F7QGvi6%H+7*&f}yhbw#zAGW`+nmcgida_P4<*hHl6j}we z)$iSgVHOW3z9YH4=Y*Vm`L*IDme=yEt`>yC@0# zlnG$f*EcwDLfDG6p_Q`NeB$hKm)K;U&YmI{G~&zJDPcv$#evW1fxf+Z;KUhIGc-0d zV)x#C*tL5PR<7HC4V$-MjrsE7j-5Cd^zG86OR;3h5D5%w~Teonv*1!AtTIP(fkA3Xpxagvb!0u*uWY3 z9K}drZN-37E`Ie?c(Bm?Am`M&W>x4i6Zy+6eN8>jz|b? zn~C0{FzPnIeHdrm=Hw|jfwN;q48X=+`|$X4>o9I)El!@2KgeM7(Wgl+EHH%1oijS zA4e6Ub_JAp$&JGM>z+-eauff3H-LPcW9-Q58Q1Fbb*m`sdOcBP-*S0c6#reU6Ey%0NR?*=)&x#D35TUl5 zPZZ5>Hx;w>O^~ZSyVrlo{(bnxtFsZryKuqTr{mi1e;?)LrQmPL?CnHpI>CF3{ptj! z4NJvkO^x;8%B%3)D+<|&qyv^CZfR-8!;d`?1o%2|T=1ay+0T3?EIV*ufB0GTwd>bm z&YN@bKC2kSV9&l=pubMWx9ZNoM6u&$_zI zN~4Ab*eUC;#BGG`_~DivZR%XR)~0$a`s+<-sXvHu!+PQSpF1yjyIpFHpK0f2n19bY zehhBD?=?I#dnG<}(To^7tyfxF7zXza9W6#f?DRBt&t-~hO4;DR}jO)egBP;(O+|3*p*ja ziFdy9o#8oF-}%mW!eG`l-}@d;Jn5vP{<5Q4)pl+0GRCaLdi2pp@uOe8fvZ11D|pdS zf^_dDl}YwPy^qw+;?Q%SozdttFDiLj$pZ>?H7%p}X=AW&?WP;KA8?N%3h9 zOv%e5gk}2Dd}(sWzQfjo4;V!6SgIYWW4GYL9GB^s4Eupzd+M@GIz}7Qf z-)AeCw6|X2l{LlaTGtbQdU8=PN9>8J^5U?X#hJu51kgTI%=Dww9K1}Pw|ocgeE3bQ z-nbJ-8k)lw*Hef0!wKVtgsbu_ZXz?w>XA3FBkZkHY2<6xTZH)#Pu4!9paQ3j;!p&M z<~;alU_1hlS2+s!ta9QT!bdJvZsCTj$)YzB?3m6UVv^Xs1v|Ql@DfbvI`hl7yCg?uN9D5l+I#`7p(p`@w%Te-vS556 z2S1!=P6O>JDNsfEq?B@;JaL=}yrg}mo~tVoz1j;~G5TolxV-r3qP=PBrG$gSlWCK2 zS5=l^#>9d6)1!0I7(8^9=NG|wwL^nhd_8-VqM(4O&N^A{c2Hc4#=l?WB+9P8BI8) zTyi^f`Ui9a8B%OYA<|}7hyAt-$odKR{RhqC5G5a#%l^6l<%!y=652`a6OOe-i;o7t z^}lu>*<*(}Gp!>CU~Sm4JqTcR0Y{R+&9>15E*Vtg0IP<*0*Jy=nKs*Z?!{Ht{5S|+ zZASlbGjaMyzJcPhO7LV>l=SM^6I-`!3l9;use%=}a)VjSAF9rtnU$5eQ(xA(D77^= zV%6X7!r@(;!Y{vm|G&=WjM{n~TfOnHrvV#dWEyxG1FW zNPRsA8Q;o%Z+EO^2fWWctU6XCF3g-;Ncl)`VX|T)SaokiQQ*gW%SV9Xmoa<{T+=E|&?|nAJ=J2M)xj zQKK+@`t&fkW$sPcze6%IF)PkK``ORp%rno#jW^zi_kZ96IOpuM@%3+fBMjOdO)4oV z!3{Uu5N_FAvSLg4Wx^}pKRL)ZZ-i8i){=K5*QsWpJg}r057=0$1vqJ5S#^Rofe&ZZ z7i8K*kIX!~Lx04VB6Ls#;WR*irwCjyS~9RogMRGUy#gCIZ4UwfZ79wLIZdr-D=>uC zF*XHp^?{@rya%0L;>dieL)#Fz-73p*`sCsGa}dP3`i56=!?#b(98&KD`~Vq}gjk}S za|K4I1S?xEt_qWMhU)=9=Zda=AqS0CuMwD3&zR%pI_k6IAngi*S1&HfM`KF|MvWhV zXCHeGe|&5qK6df6_&iKO>vMzm)HU;Ov-@HH!6t0qa|kca-GBuvw_@MnhTsKq89IWA zy{R+0e^0z^%BXODYdxTo`9>^7ZA(zven;C;vZ*a-c(g&=9srD8tM>@4l87L{0bCJA z+tHxi_FyzfaIEqy92&gpKn|;7@{%+hte$ThCWjsKClDREWhY2P{1f$85ll*?BTG`w zt(LaueVNurlCE=j)PqQ}mR73i6naD(6!e6C{jxw-SWOVBQZjdSd2 zV&+{v6N$DqW7}91@A;^Hc4RRQWA*<1xOMSDY~6PVr=2hpzrN|0C@(94C3#KZ+AuSN zqwQ`qBN37drOVW{twH8%EBkltln3e%L>7)t3RbRLi_P11pleMfj+=QL9C>7cl?1_w zOjRfH z0cqtV#bKA5^WaS5^_#Zh*omW)7Lg8SiIRMtnF*=rdk5OZ8Plf|HQo~hD872l55sL^ zy@pM|sUP^N7`%#-IsCeJuU^=)bzAu5Jr_|{vN?iNo!@$>S$#WSgx%4OE%Tnnwq>t| z6Myr?!4szqL*iE?k44&({OXEQTy*+GeCx(Xv0~j$Oc>S2X;)U7*=E_?+#IgLjGRUo z*H=n@6CCv?r|so2oa7#)2zD4OeOn8Z-z!gJ7u9r^?F8f6248%nCAdz`Z$){o;!+#t(k*0~~kUarovp zzZo9(ZnjW%HW~iSS0T?1f?!WPw;mPcMY!Vf@yIMv<6aBIT)D@ji5N0yT@CJ?+$4Bd zFFt~o9=yb1W%WKDQ=MQK*H+~*W6AqUmXa-tj7cl_Mk0!Xyv%~c|%_GzPq6lfZZ#IzC4{^JofLA9D$P45cGKRjuxLX;5WH#+vr5WKF>&fRJn`}()C6KozTihNbUuU4dRjX+)yuG|#d)iEkb)gDZXdVo#DC9ed;PS>>>|2sWv2*?bls zwROphP_>S2GkdKVO`5=t{fD-n0lB=AXBg&hVBbfum4@THY(j0`Xp;Pxgp>EDRfo|G zRyT&h^uy9WAk70)=ABF5 zZj&od>SIcydyW`V>ig?JxTd;c>yH+kQ$}86hxJD9?p2t*eH%u1>mGjn%pPSVi^*Dg z__}~m6`uyE!-gVC8)bWX9rPt=I^BJ>7;>Wi= zgTFjE4`jtpkoAOH|{B&Opd57coS*w*kU}%(=NvvDSjfE1%`D3BFx))^VhF;Ps}vi5CdLJ z;I1hM;O*G67h8j1{_@ppux>*T$l9<0yLaym16nIqtiS^gJP?8_4`gAs>zS2K=D_$t zg9c&f(4pb>L$f8ZuC6XTf9qf2Y%LSWI_ziYY7J!9tC^8OyPAtndV#e;mlEeGqRyZ7h0quf(g1H>0Vs6(72AiYp>|ohFLlx1p&8yY@Gr zDR|*C^W>>059XwM1O0vK;TO=++7^Ck@SN#mQB;s;>k|;iAQcgTVm#4$Af&}S>Kr4# zw#PyX2GeOxkcz>jY(vFW0ZI2+E=;HNqJ%qE(Tt!p$037A7}B;$XgM2)ljt+F+@8xw@?*IyA}r@-2m+t#fpTGLhMTsbV7=a3yD)(q-bUbETNT`P z1$Jc~07_c%A;*gd@~R)73zd@c&_wTb4){vQ%hl-|Du*NCkXzb$a%bD6g1Z-KNu!)A zirr_qSEps*XoqGkw5RywzIJ6P!Ndwk@kRfdb70Or zX&fGWav{zcJOsTf$%+d)7)RbTLgHKN8a@#7!Ccnz_O=c@zjX_4n>PcW-xZbG+TlIp|Khq?~gCA(8-D1e38%vVqSegE2N4Ott}A z7?VW?frN6FPT@|{<(zkKbIzgv)AQcUR99EednfGApZ_iGy_ufsN?lbwQ`6l8I-t^I znMu0Y{F{f}rAwCu4{yuyikH6v&u@DkzyHG@@ROha3Xg6%h^;%1*#FqEqt@W+j1AFXoprq!kA^)l(oupA_nD(wD=;X?5dVT>0l8 z$t!skmGbg(%nA5B-qM1}iHSU0`9?!uNxLSOk-iS>d*C)qj0|Gang!t(2UT`2CTSex z{V4U*{H7XQylEMJ_s|Z!`KI%+Xl|Vq@0;o?!UXf9fiXi6I1c|PSin1UnHWM?8W`;8z%mbuJikW0r<^h3tl{pvU zaLf-;S?mW{wM*t;;ZPtql4J~(ha&Q;!u_>M19_G#Fn{xL!P%S48Wr>p4Wpy02fOzl zz`>)(v2Eurw6?W}OA}9=IDx}Kg6qk^22C-uu#8=qw-V~+0XFqcfUJaDw)szSTBG1%fqFYAO7%%@$DZx zho*)yoVBirKuFP8vQ8y*B=2EKPd?r8$g4d#C0M{sUU1g3fl2zpoQ0mr9k&6y58%9} z;qzI%N_c~>jdU*qhwhR^)q(#8al5@2XRTO}8Kbp-Oi_d^M@xO#J0>c^9i>CMjXvzA z&U%4M$BaR*xM&@Ic;7Slw;w+jZd8BGrHisNaoC{aV9<;~A5{{V#Oo4n>0D~Z6+z%M z{MW>ia+jrv9H7U!VpIYjKf!Lkor9qpWScpLT($pG0>8U z%PQz8k}=k`f;+R75@#e8gOBO+_R_gZbk5-^e}x%@84lcVC4G%bPK0oSqUTy$jXK1J5Ks}Cjck<19o)VlUWWz}8>Pb|jP3FR%#K5TjIRGF!N(<{!y_kOb(j~qXa zSFT){*>E@V{5aad!s6@#8Yiv%Qe;3gaOP`#cN{s0?{9fN{Nms(H@zGm`{+keU0nm& zLTQ8}UZm)LSX^QazqJ$ZvSd}54BmA0cXb92_tWt`O}tzyB_Kcd+*TYt(T?)6Qe1xN zWyrjJv7s`7RMvyFwdDuPctg~_ErnB(2x4a!+|HjwwFSq^x|N4_haLyTvaPgT- zElG0uG?>i*uAd7U7rZ{Yrk&VI@!P&j{h4!PM_S3R;qauz*vMmva(H$N#YgdQeY$?+ z%99q~Ae?J~Pb!B=E*AxFJX=n-gO|vDc!wzgPjoHjF?(S4wAi|RH$L*I&*MmtJgA+s z7+1aZ<7isE2B%ug1O2=?bHe3>lamw3WsT|Ac;P*fyS@3+;GVm`kHM~%AQ4!NuYKgE zP@hrDG~3{uCks3gJeU^X4KF(fcl^x`-2K=dyfsK-B{(%+bjg|^iB%QCnLV+mFgz?t=nWT+Ld=zAlO`Tb~S6^F;x%1{=PGdvx z&@wmBb2F-|D#I_cmIiUc%;qxf%z0t-b&VM+o7_>bgx0QRF&#=vZ6#fr?w2lyDs z>(h!anz>_c?#KxDTuKhaXh?hQ;|Y*oh;eucAHP3ftb64lb&Ar54Z~&)l@u3Y@q%g` z@94$E)O7fzXXl>5Wal5smg#XjkbPmvn59s8p;ly)qRz))H7OuYD<)9{3g zFVWY6moAeE-2>AJl+~vS_03JV{KX9z>>a>~Bgb+4NGr-q=Go{4+p?n^jwxkDT7 zf9eZ4hcikr4Mu|V!6)@@LM#n8kj`V~x^2zrq0Wy>?ie@mmJdEKo_L*Pv_5%VdVbuR zocoek9Cy@O;>&j}Id^q0$(5$RG`S(r@D;8{KyYSAeV5iRa^f|-9#p*j<3Gl|kL<>W zFT4PYg16gdIb0lFL_xEaiXfqLIsrK%2E}X${2x2F;jY~W!s-va`!DdJ4}K_qqZhqZ zPqOQh&Lj;1x%De~hb>@d%W;ejldp)S6xz2R{D*(Sul{g1&e?PZ?)dHRf(Mi$wmea> zslEw)+sXxn2mk-#=Rd()-}ARPcikfV?wfD7W*0*62^)Ewk-IY8Q>`lVy+4wP86)0 zP6cszw)VzUNZvRLinFVwrNeP5KLc%a6#R_`wrOm#x33R}kDb7Q!$+}w&t4n}jt?I> z8tyL^6_dC#GqKE!EVG~1iWMuu<$V`i5R7As7M=2!0{@gUF)@KhAAJ-bc>nvcJmAAD z58SkAQ_fjprkzQ8ed}A_3KAbx_}F{T$Kv_sOSCkC!9I@PtdPq&qnGpx)`rxH%c~^3 z5{>BeR3fy*7m#~oQ!cm@QhZ+S8y(y@kssd~T>t!UPvfrp596)Zosas;Sr#R6yb*a$ zqX7TRf|QbGA+#tWDs9u=H;5lU@C*h=$MBc0-+&vhSq?{sqRIOD*dw@uOy#gA2J0<4 z2du9S@XDBPadcthH=^xtE5K9xXJo$8O`6#UnI>kb_S26%g$q{C#p`ca56^HYy0*hp z@H;v-iFf?tufnmYyL$k0>#Fd&E6+r!nf)uEP^=sIEEvVQo7VZP!0Hv1s7vZCE^cbi zW%)~k*Ew+cXmb3PJPa_G^>VusyG(f+Yk_a&(&l~W^czDT_l0)bQ8G>&4^4`b@`eg`q8d7=8RH>q>gz z1|s3(u$uiV>BN?ee%(-~Z~;*VwBE;abj39m?dZfOUm88v$dp5mbK-M4S6{LR$#~uV zb@gH6QvzP?!D;hjsFzN{&aKE;73!XjJ8g6v{PappXZn^oE?9!fOAh(Z^q74OZ=`K737zN(5=0T&c zyE~J-VshjPRwvs|;;Co1g*X<@sSh4x9>&r|i&0fqAH0d56+Uz-OcQo(8SI|3`Bd50 za8r6lW@G5ES~)zp@g$#!68XCu9{?_MR!?y|csxOhGt%B~?!I-LmgH|~@j!X$b4y5M zQ4ZDgcot#t#ZN#^Zuyo%M>6sl)Kpi2#+q`R=txe!j4vFr1lHRZ)t$v#YRf)jTIcQGQH9r$0z=9c$|e5?KS-f3yRK zj(4IbNOX;wM9=V8kPI8cz|bhV+WT-KNREw;O$14vNlZ*lk%=KmqR#Y@S)OP1-kUSK z5zVt3!r4)!GmC@zGSt`AhKaA5psqTAsi-IqUoI5PD99`$F*ae6XVdPe<&2y0iS$8} zBqr;uj?Aao%@RuUk&F7;8Z2GB2v=ToKBfa%j4sT+TE|-2uro+#?K^k~Cr-BG=&@ty z>+QvZ4?c(o9(VxX{`R*+8J8_viVH8iC|uHKmL8f}TPD$!Yi867Ehffadg-OO>+ZYp zo$q`HuYK)naqhY2hKVe*X}!7bYxl)3ei6ryAIBg5@CSVM8=LX5zdk?cn{tR_0$l>{ zEW?wcvtlMp$8sf(M;Y8wbmP7(M{jSvcLq+H3>-d!q0w5|O+|RAkajUEQX6TMP+r`t zm(}9-yZ58Be*kqs0!#5$JgiFUr&SS~nt*HjS{(0TC^<+hyYLgF!3#2bG#66(l%yANzb5p@ic|% z@)A^*mRQSnV;P8xC`l$QTb^d^Iep8=DGdn;mBSYsXcLvdQGM`u2JPyH;^TEx*SycP zz>kBN>CzHTkTueW1s}7)n zeW_@X9#xWkRdiGconX#A4-eddl|WmDPR=FWaV~wb0g{ttbgP|uKY#W$ItL}~ZLN!g z9!o{X7=71dXXEurolc=6!P|=n6TH!ph7_2StBHOg;P>^oWLL_=_tFIoceZBbn=FK?X-G^n17UEmq_$tmh=WK)<@ksbB z+7j0^vI2alv6twn6l|H~)!67L2D&@!fXmUwLpdG}6+K){Y)DH`H5=tts%?*^==M zh7cJ02Zr$T-~SQc`i~!=x3?!;GI-Hz-h;*KE`+z7Lh>pqW=UJq?Ad5*Zzr>5Y|Hf7 zihE5%9?{*1uBRt);E`YA&=a?ZiI5MzzLXmC5#`EkA(RKhpk+*Im2@8-h3A z|M}Y|al>V2VCCXQ7I*#0N{*iw%8QYss`yEDnG@-j2Ks~R=IUsVv-W(A3$n&7v&d3KPHD-ZYTGBdzRf_7%6 zSmvf$xxzXFF6&LjY}+KZf(JDdcjq=YVP5ce?#44hG$u)BzMgsP#7XSjyBE9n9mK)I zM}j0*3wG?-iRYi+hJX2&e+g%4ndN?K*RBm`MJ-;uIGn9z>S}6gLRtT-ios`=6`JLQ zpZnbB@ak8;Iy^SZ3|FmMB`$L`8`=NofBq+KzWHX{b=O_^^w&4z<3SRuzP6MoEvqn{ z7LB;?M2C`3W$WW*R+5kUd{MAq3x$$tvhg_G6O@eC;fq%D`;W9(Bi++*4;5fSl+x&s z@Vk6*ZJ2QF8ys~Wj3w=5-N1U7vN+dn?^xVLVrzy|GqGTg4@%&{f>$o?hRSlh_VP1v z0LVZ$zuQC4;;XlA!MNGK^x75Kw(MrfJBs@B>x;r*bpl=u0Vlmbl*SS*;ME?QY5eOH zetlyfvm2OwVF`BPLeWfqW%-2ph(KVnYf<~vwx$5v{%DbAXF2xBa8MhM>ml@rf|KNO^~-QG-9>(u_?$+2 z-w>WXa01(pw4!%#Bm_0HozGgi02iFLC`<%$IkiV0d`~Iv32}JKo^zfxM@&wYb}f&# zQ%pZrd!5Km@liecWR#LTT+bkV5EUm8L_p0{2WRU~;^K7P1vh^xGp%zxo9ZKqm0U;M z?ub&I4`VPH3MIny+!Bs-n<90RW7+MJdbcJ+$=**$`pTU2<}tdGMk5MXE>#~qz{9C) zS@uJyifgp-G0S6lGf90VTCuhGM+ zuiJ<_AK8i9cJ0JGv(HFng$Em}vm#nHlEhI{1rJ6VySh5@ji;YRYu^AaI{$2Z?w|fK ze3-DJr-jf%i%1jq48PmT;>%RqJ>yFuOioUsxBa9`QQ6Se%8hI=8yX(LuWr9H^w+t~ z^D(z+Zt&nZhVk)X3=9wAxovy!#FJZshr}NTHypu3UsV+rEtnt9E;w`JI;;$mTJz`4 zMf03_0m2!UE}|ooTr+#-m~!sA#okz8_doF&ZTpX#*s)`zM!F4CdYM+~o1g zXs^G4)msA;k)6Za{MloIb~ujw&W-JE+;m$fS8Z53PP=?Zb!PvjC$=3&XHOp}I!7*Q zr_?xtGB!4j$Der?Kl;`0@bIILVMgIhoPOEMvFZBPqq>popYdN<%nTp1e5@ zBhvJ>A>(um?vK#6J4%t0!ep<}dy!Oc%r?|~bYg@RBTeoz9QXiNZFLFCN{i6ZHweBI z##i`5x_B3);4bB%EN0y$H!;^T=nRhdkak`2gR0;@=2e%h4>xxIm+wCtB(bLP>Kj&* zhfrsP0@nh4X7G=yu-jAp=j_+)u_gj)A1viJSM;_FAqN~F7>}pDO8%weIS{`Lph*fN z&g^*&cx2a8%CzNz|o0 zY(#d&lN&s#5M78|*}=33uVU(kGW zY=!(vTDVLLr^s7?*#^bQPQV5kqn!N6yxi<|vu>T9cU`s(Gl{+erW{sk9d{``d~nmIE-lKGtS$&)8= z)6K8PvpaU<&TqdH=dNGmwS#=(7>5(p1Aoz{0GAd&D2#pXa&{^)C?8+Zr*Pe8bxBFn zWNw;1e!uYDd-0Fox(gqE-+S=dm)#KNH#uWs--b69(|CUOKK#c|evU^T-;BY*K~&G4 zk8@u7HY`8u3KSH|OPc;GixI-1(h%V%^F)Ic+KzPU+k(zOhECx5t)TV>ai> z%O!D-9FUz70a=pPK;JP(Kadi4c~BXeUPQxD>6xc^oF zTN@;><}@{9PV;OuH`HNvkZ`IBUXqyK=BD7dtUOGBAuEN7#v3L>R6~cH=)<>;{<87c z?90~G(~EtFj$r5B19&=!*R5?GY=&TFDW6GPnFN-ZDRuG17h}Wv_2GV2O-)UikDI)} zG8(*qxc&Cq@u^RJ3Z0#uxbVUY@u3fWD13>-6Ista_Z)7x;RdvvIF8r7Vh#TMRnh)! zS?R17K4}*08%Ozht~1jQwx?n>$d9 znYj6qjj`>}eXDYfffi=Qf+S@G8^KF6D$+E>+eQ3B%a&nEXON)#?GxM4(%pwQ1a|te zYgPpJGllT$j8pYWoITV+oz%uXlxHgDvIz-Z;)}PH&iS#(q=o<4<3-qhXj*0m7HC+^ z3-`_UJ%&Z~mH5D$E=6f^fj_t5su zD0IA=!N&Nq@jsiu@-XWZn?$Y-(12)|zOa+)Ty#2tw_E{%)&qV6268*F&O*7%^4zb~ zQM|cu=W;Axk#w%a0VKUWKQ^1-{_39R@r@rnh#mV+!nfy&xrwZ)H2Z&4qqlzmon8Im z&95out5BycYr6cHZ%K?V*Kq~S39S6ZgR+X7tA?lpT$Df_C7S}Ic8qP$sS{c3YgqF2-DN{y*hngSl*@-)M?+@Sjzwysrh0lNXbK(9b z4&@MSzE-DUe|=E0TnM;S!fSk4VQhE^T_;<@2Y%7Sc<>{|tbPCJr#^#U|KV;l25?6K_19mIbI&;+&ph)a zUUu_qF{`)`&;IH|;pWtdHY_&1ewL4Ko{G=H11H5J5FUN)Y@F%a+S9tUc$g2obPX>M zcdnA39Ld@De)A;W^^dpV)h~Z3KJkI~X7?J20Uf(Evt;^$1nIqxZpN>Ee>b*leI`sq zl$2Lv{gto6rt4paqT>IaJ%D`0%!)Bdtbu^9Q{S*XJ?@(_(0&w8|M=6G7#YNs=dHx8 z|9A_kvl}N%#n;yojIS;_erCr}y!bD^h4a=e!hZxwvx>4}i|c%Bg5r01$zbx`pUC#? z-c#iA(OmwrW#@6c@;%=PH<&+f^-^56ZdC|l#>mO+{#53RibvbKa4<*?o$T(#j6xkG z=4XXTu+Hw0aK_ivR3>)EUs(*2MrN6HLw!9K%$pm|+FBmG+*mNLIh?6#68mOJMkc8> z1IdW#h-#fXGG+GwGc)zfgIZsZ%smp5L((d-fl~{zHe+)6)~$t0{&*vzJz5 zV`I47@VxWR3zJ$V>11Yay^tANU0q$_7ZuGuUFPeGX33!0Bg-shq{ZxoWv-2m4&oDk zb0N;#G#75~P@$>(f6850j0Cd9L4e731Omecp{;Z*wTFinjz1q7ne${u5K{0kxt%0h zg8M_Cei-`?^x_RyogMCp!^y_jv$s@|M(8!E#~p18xY9HzNoW411v-=`%1nFjAb$7c zcAV_#$Msh%!CP-$7x+z)5Vj>d$u%0M^#?qX<%--9NhR}`(x4gJ5aVwN1yxML$NLc!Jt(Ulg=(9yp@ix=7lG0hY_7Jq`B`r@0{ zHiY=-cnxz!%WgpQCxm;)>w*&{_?6_ToDSgkXl{>G7h#B@Um=u)^@Tn;ytt3PxeVE^ z%V4IPpL07&b7rYX{HNoIc`F*9#aVQ|?P?=XCu!_`Ietae{ zfBfrzz^y-f9DjY@+1N09HXKW!Yd+#SgdT1N#`e)+{9EuQ`RT*QQD0w+|MT8=;~npK zM-VKgIa@XkC>D?X%LpZwx=zH}v+w3tHM0qL^)Xr<{4@XO}A7L~gn+l^Pe z=ihMcHP_+GAOApRW(ol|)71xthH$*K4G%y093Fn`QS9A+5JQ6l;S8&ax~6cs;L3Ba zL3vFh{-=sbqICuj@4Y>}!Oi((4(R;tdVDCjdH><3Fx1_Ob537`uYc@SSh1+l(P@NL zDn47w1#gN;%zx=W?!%|Qa~J;c-7m&p-Ev7@HUq*_E`Q@ZBF8au@a^LP@cWG!Q_XC^ zfBM%ugK@6_ufOVi%&x8!5l#iLoqYq?e&iV1`}?qFRV~)9nH?mfN`m+{ir(H)3=EH> zt$i46UBkgRYi3A|Vr(KvE{#pb=*(v8W-qn*b22lxRxDl=B)V!*JhM0$r;AY?B)G~- zN>N-qGxK%EAkkG+R2XiQKchgASO-MQ7Oflm?0Gm-E3nW0fkB)Il3LI0*oEyocjLg3 zqd3vh64qxvNPsYDHK(~5>(;NwWtUzW{+h2J)&~hVb1!i!v$THqyWinUU-}X{Iy%C= zvM#^;@^G)NQ11axU-`;c!dY5XnTuegq12lBUdfo0_Oy~!zsCl40{dNf;|xP1=5c~@-C`-A(>9b2|x zY-j|RpS2tpY*>tWjTPYsLrhGfRLuuIj<@&Yp2zp#H}`ErZ;-q)dp2Er=IZd7Mgg)) zDYscWk|Kj9|4NclbUu5hjX7)#LTxj0NA3EGI1>hTv3f%Ak*NOuXZPXZ?FYjb&ACeS zlKr)pZ^DXsjn*tNNnX0=lC;N^Wce97uzi>C&-Ex-twhJ_PexGUQSwsfmjL>_7AbhB ztWrF)F5iC$n1tXTzlnZ zc=2`D;@or3M|Djt%+f3ykBl|i^`@(%4Zr-=FYuLr{de^Bb>q)(JO{71W&_qPpM!$z zL#5=5`8X*&@@eF@gS6|u!tKxH7U5T}ULHI+_jV5By_?R&{L1XZN(>?l?%F))Ok;m{ z4{qJ|Ja(V#z^dg-@QJ_sJ6wD9m1Of;ALl;lIIn^igjLbZERG8hdnEXOAV?JTcXvW+ zVVw)EU>@qe_MLynH*fu6xS8?BwdbNVc%TxUR3puutTGvHq&$wH;XZT(iPX;SHuMh; zhO=wl`?|~U5AS}Fm)}z>{v>Of4<@3?@gv{ji({wa|B`j^BDLrBKAQC9Mw*Z13rFkH z;&=qN?{GWLdG+V9=8TQ_+9y90QWzhf!v5gl`ebVhcI-Qdef#%e&w(SD7#+ckqM4|u zosBum*JIx5GqEtR$yrskNH2LB=AT$hlAyP*FMMD(GZ6i^6Z!EnH9m@+f4mi~J03@E z)hztz3va~v>lZut(q1I^`yx}DHr7PrUTa4$UhZMJB4cOx&;IoVL zaa4+&Ha_=jmbOHGc_NSIbfUIqPpoU-`VAa7)`_)?=HkWYtnW1OR;7}UHB!(NWWvFlV}Z+S?ygzICQKp_#H-n|9DV0fZqPGAfZ2zUEZHa zW8%C?_Ec14Hj_6?6-!Ht!!H*$)YYQ0tUTP9y|lC>+<@Nf$yHfZf$~{ps19Paxn{Nm z$Rxgs!dbJH%-NY*?LpGjEIoYY*=^Xp?*NV*KaTc}&UopeY2Vn;fQ5?|g`2~huMM7l z`ssnJ3o$!Lz8N0VW@?$l*d2G=5pFbZ_P{dxU!8yc`C;J{S&41L>p87IpXltPCy(FqNCTwb0r`qF2m|un6S<$^&Al|!N1`X6 zJ&6x~`a!(p+%?#+bbf-`kkKhoj`fR%CsL+_N`HLtYn208?O0=p7n97t@7ev>yytM> zZzXvDU!09IPj6!O@3WbRi0{UU9_Q*;NgzUtKY6BViXA&Ptn!c{?RvydQZ+C(1CQ-4 zKu7lK&U3Ssc#1@^EL_t(82}>GxaSXu{N=XRkTeV?HTgKDr*i_E{I731*JB9yo^I zJh3CJ$Y&zC$}Ssx?G>A_thqsCUa}O6FK()k{n2Uz8Mlv?w*!pa*;oZ1f6_6r4Q?y> zdN`-WSC4sXLcAoJUVzN9P2m5e1O}ebS=W^EFlEaJI`Y36pA!#0dnX9%8}s!kDKE`!JgCptJJ!^_n2867_S@X$jZuu^$$_X)h`(?7@7UB^Rgt5+<; z%Wr%!UiOk3!?&c#+tD;v0%Xl*zWDUiQ%~YkpZy%}f8_CSfVlRe)9~h(pBKCxoo(IB zr^&0m6u{_bj{VCE)A9SRNz|nB%=Tk=`zL;ksi8@{`>eCDAV^}xUzLjIt|stYk&}4IV+xzmF%q`TY_{&cE^ObkHJqjO{m;B1u({PS zh}$IcL0Qw%IU#q-_Lc52K6v**Ijs$>w&`+Ee*s=t?6Y+t?HiZNvLt;Zkf$PZcaTV4 z{i06>Ps)YigR%h{88e@{?hBKgGYX1OUQ>^{xl7T!Y#nAVUX8kWOHf)~6ErEr|7*qg zfY}erEGdj;wPXs_WLn9>44V!fytHh65v`*mn3hj&ycl!Gbcp_=;sXrAYha1tG{kTd>iZQdOFnGu-4&r)2z|RPJ zdV8@mNM!BUyB}Mg+ZKL#wyV24PG}igCaGqUSJ6INX6d21|1b%vLXS`O1&Q6e@4g$q z|NZa7nc+9ycq7gV#$1!cy6L8y!X(#*wX^Zj_ne2i>XHpmDC9?FaIxAokQ*mzITqa0W8jXq%YN$Cg@v2Xssomexs8P}e<3ei)P$|KY{TxV~A zVr^s((zKfjXKv$kiq;8nUks6~#T-Ai_bBdtb|0qIG~V>;)A6!vmkayHrr1%ce)6>q z4bhHc8y4C)*96Uov&JNzC@-9U$_M2ug3#z6Da7W31!(V?v{k8t{Fv?42;>ryxv3}{?c-*u&C%6gc&M|EV+8(z3T4RC$ z=flkrOG^d4mO$X)!>eE?s|2{#?tc9HAD^)Hc+96%%qqs~E50P#?8tZ}J_s-3HC`y++2jm}^BZo#U%ve>Fn7)zSgV^Y z#B|1vucugD06#D=jN5*G8@~CiZ-;wlG}l++H80wPx4-Jb;B7}$&VHBrOX{1XE#HV8 z#2#(ik?2qy@WRpbW5U&aoA=_afA=Fa2XC(5x#>(amX|q$yy=q@0|WTcjvd%?;$*n2 z>E@eWhJX0j$I;kG-aK$`vHFwHC-rXsNZOS>z%DLK$BAPYA04*8YC+6I3YKv|3;y}u zPjAC#zVa>13f{7BI{jQ!RaDwZs$3lphb2*zwvJY8-T4d_&Z)!w-+ec#D@!e@RE}Sc zUYZROU8guHjeOX4W3NB{_~WQNBbC$QHMUGi%oVpJsVUyJY#eOfP|hh1Xqn zPW3r3G={Y=`6mpFPGipUGcXa@YeCUW)XrHFCap}es%G{AlvGszU)hxXzp9Ly&D~F) z#PG2BLZPf-IW{Boz2nc`i@gv043lHSc>f!(z=z*{P4W81y_#lc*$7;$@A zXZ-%d|NJ|A>$XSmzBgWp55Dy(XJ)SJBQ`!I;H533QJ2PlAa~?b0{_}8n@!uCb@vYA zx_5jNyAGVhWoN9!d25#C4iFKRKu2aq*1pzu>_6Fx#fvKOqRW>AiJ8Wf52R48RJ`wq zNl=*?ebKR*mDo2hhS4C2H5Meb`h(-{o>6oLNw0w+Gn;h+C))>uq{2v;=rXfK%$L*5 zM*N|y<||Uc%LkKSGBbtEpGjU-lviNE{CSu+rwPSHMVMJ!gvR=MGzH1z>Z)wKFReg( zR}Z#t-;SrBei|oEoIr1o=rYMCgV)UVGD)co8#aWSw_kM8Md3`XnwlC%N|V(6{q48o zV;}!`xG&Z_-}%mPM%OD|@rn@ll@~6=yWhMiNVLs_ldutum-lWS*J3e@;2l`-vmZ_E!Y% zvqx{x&WDDt4X-1OIgcVj<+<+bEtmel=nU*^oq>a`nS^{At5PB)+{1S|?2r(2Fo?a6 z-uEP0j<=z5Rw-_}XdM|Q8 zrQsw~$J@TpPLSwI#^sk&=0D9q^T7iFK3Cx~fYD0p*GIP;#2Y{S{cwpxbww$D@ZIm? zvdb=mo}Ln0+Z%?1Q3H@V=p+#1;}iJFZ9m4BzVbC3ID7)-LAL#dOV{FUuf7mxte6|z z49^f`&wtrwnw|V9cAih4fxwyM;A`IhT`Z}u!C!AU3)Q8?h&*v*ViI>AJB*(_w>{hk zp`oq@U-;A~gB$Kw2G^$>nJ#YyZ#p@WgY6@x}l1a=iY=v#oYGW&U#4XK*GPQ2V|z%k3K;Ieawf^^bn} zclhcLAH>q;M!fQ(P2O3jX{A3%Tt0v37!GxGVENK2Tyx1{tX)}$S*1muB}ZISKzgLe z9Gg83GfA$@5~s1T;4c`n#)IFXp$YU3j-j`2ES%-l(l&sT9m8R=Ya&Q)nHgYRy(3|p zSZCp0S}Ocvq1k{w+=xC%P&EVzttcU7K2~6C+t_qVOG`LA%lzr=68EaAs&Hd?Gehf) zGtR&{=bRHR8?3Ibj%SIRWwy88dTY3}&?LRCxcqW_=Chy0f&KgN(rcIFul{_aXSSh+ zyqUB|f6iERDx-;H)w!ayYk@8d1JM#qPS@8?;w_)(ERgYC7kSE%|JDzm!>{kykGEZa z9_lK}Vi0k^DwS=iJsKo@@UH_V)TP~g?Xg(;vLFSgNsySHg$?2i4s(IR^$d;Rv7Lvo zW&bfWHk9EtH>|?-LBcxoQ6MQIQDjo_jnZkb$N@u`cj)Vsb5GmU<%ueVzMr4Y!2&#g zOrgEcEECjLYirg}7L7EM=H!WXY<_qPI@-F>Tw8^gUvN4at1A+_(}`_}dkVp?QESgA zPy3h`&O2;&~?pH^qq%EZ-C8YDRI+cV=$0M_PvTQ)PuwrCpedo~k_L&W< zJcKAO0Gt_gUOo8ez>dWh9k}}T;fQH~%4a{1kUg;cH*LJ+)0z3Sk?N&$iq}Uw*T&~a z;S1UJe2E$2Yc}mPp8fpgu1l-ODZ)zp+cnz4VU`V=hlV4q-B>uc8Q=TPw{hm#o02;L z(l$w4agPA}uIS@I#pigT?q*@MgZ{1g57ZWm^=YcxGl8 zvH?=#-iIE+JOB3MC@m?*hSN5orm9YEpVmdbYoy+Mx$Bv2k78_m1Yi2wm*bWj&a$ND z$MDpp`4x{3xuQ{;JxL|azSH8B1gmgrvBrl(!b$n?)3Uh~Z;p@*T3nmC{n0)*OQJ6O z^RHsp(LUVr$seM!eh%{MrT-np!~&DRYHx2RNh}^2lhW6E2+#fEOBfsK#g*r-#Ml4s zRcLOg%4swFn8N^WKPN95@?R3)5t@#1i23TGK{X@%K!+*5M6H>jWj2Cevt~`Wm)7ZP*JAZ)r-gp; z&2N4a?QLxV&LM2wx)r0Nqv0mm*Il+GNTkgG=y)256U#1HKrZWxZmpGPeD>(ht6Ly{ zEBE1Ka)?2j%Le2(GUhXy`1I(bnW=y9@niV=e|{7%J%24WESYDul(32=zVCoI!@fzZlEfD`Y?DY)XzeS+kxq?{0Uf;9qUfiys{)jxws1Dw zu{J#Rz*Fe&>BqvxTDHaO=HB+)6bPJ|*roG*HL2Dz@` z)1W|%b%W$f+mE#3w@>T{UV2R6R3={;KFy0AvwU!IQ=QjOmBbS(zD?!5GQrjtSX=9t z^(pV9*aigmi1{PrDIM>zLeAxoqKy$=eX`LDR;csDO^y=~^y_Pz$FYPryp~x)m}L~{ z4iPnqtUr&?B@VZlUz-xI^EqsOb?%X5^t2t|8W5Z|HdS9cNp|yZzMJ4GhKcGX!7b13 z@EMTIQ|5T@p*Fn!gWt!lgC{Y!sS)4$##eFa#TPTqBrJp$TgDc*lR7GkOG^2eGqaDy zAMd&gzq$SQ*z)Z2Xg%4EhT3wx?20pRMBrFkk1=ycczx+_F>)zM*}8l z#~GJwo6~|N5%06iKzRED+wsw_+zvgiu`+nu{MfN$!2`%R&RV|~?|biiaMe{;1&OSg zgqY8bvob{M?sdXx*dMT)B!iZXPeuI%kO7!ke!L7Rb8co-cekFv*vJs;K|(LMFs)=? zH^scof9D7O7WY5;B<3~E#px^8lMU)$VDZ>ncV9Q2*!n0I&#lAH{`t*Vy09Szr#wmi zk>+3iSeDqCG{CrYY@0;RdXPF_Y>}1WdNIW!_hq`AuzcBFP)0d&W4!HCvaO_zHN1}V z5W(E^*Z+=tpFD(D{O!M>dD-ds|6>^*9uD`#GD{1g<+w4@*MaAL{WbKr9>nR(oAHg0 zy$0)7&1HRnoZ|~DtbSkd#zO15TmJCS4*bPG{1lBf<@nyGUysw4HHr3VOPBC2*^G29 z@dOKJx*Z}%UE-fMg}%X2ocYSnqO*4xFF$_+md~AyQ!WIh8C&{>MzHI63yyVlVNP=? zuDWC~)~&8bMa4|g50qOUQVx@kwpcsoVbj-+*Q+q$Y-VhY28k^*lk3Rwezdj^qOEfn z2afilt!*g$5~EqVXddp(_|#Z83o~aHgkJ~i3zA=BW=5AuXqn}M=B3cyy?gMD zZ+sI64jc#`KnwA{x1WVe&s%`>9?cbXxPGWyQa!((OGmCB=k_2l+=LgJB=GS;lLwib z7ot-PIX>PxfWP^~eVAKagO{CuhDA2?Eb=riE<1@tkw|87S)AtT0*@I> z-l7P+X88E*70QoOAN=)?jNy(acVWlTR@Bv$;+=oK0hgV>P~d>Jk~rgBs~pE1p5s5& zwhYcPBi~3uY39Q-wNFA*h2NII@Obdjd~^od1`5zMX!gV`z?7Z}?rmLTdG_huc;x=4 z!x^DxE?iHEalyY7+%^^s$W|}unHR1* ztDf=Y)1enHlU5grc*?)SGdbpMIHFuH1`0m>wyXa>sZ$mK z1y>o$Lr~@TmD)&fI?IQ$`HXo{0)G(BRZ1O~N0KjsLk|4#z(|HC873IK1n2JqCH8~z z;83J>bbWGi3UB$?kMQ*Nqrre!iLZU>3qbZ^s`W*@Z1Tk757Ojxea1eLqS|GkaO&(y^o? zsjn^stdN1r>016@5REGopCUUxIT`sJ@+{rYt%43jt- z))EjUd4SBlJ#|>(&gVgqM1brq(alCM@b~m!WT4N21aG1I*iG5JcOSm?o$rPlW3F0q z8p_KmB<1BUX^v@vVDR7Z)BgmJEywF_JUg6z&n?qNp&WFsFF}Nn*h*trd+K~W zp4Ofh=_Z86g5+FTxYJ@6Jy&@ga~xE+oUb(eQlI3b->5wB6IU+^*0+e;%hob z8y8MtL30gCi;M7!d!EI?Lg&(n~ubmZs z4n7%Id{P4GQGg#)czAG}nwHJi49%>l(vl)nRTN{v+)AujQIE6NHw7=T7UH@qmV`;C zv)4CcesFE$+D80k@GyVVi!;lsEXLA#)!w}a@Y~=00k_?D8@6oO67JDu z^w1YPT#FclBY@il6JSB*5^vN z4gp@G!$Dj+W=ZVUo$c6X`fAm}#G{n$YhjfVw4-b;#h4+8;2T?GczVupD#inB9(;v+ z9)&Ls?iE)rn2n~|O6(6};vXMA9NO=yWwpWm(@YjJPNjcx`923z9{d{VxP9kochFK> zl>?s-J{ysPC-ETsqP$e2sd5T)Yo;-;W&*Qj1u@jjS`A{4Sz6rN(}(-++>EC;Zx5d} zuHLu`7oWZ?PF`7w2PVFBFC*E6f^AFE>?oydI441&xP;avmmX4{FO_ZIA`Zp)gDjVM zx$vX=x1hau5T{y9d!zFk&RvW8s&cO-OV4@`j;(X$zdsOT1Fu&uUNJ^^@H=%`0VIC8 zOFR8W5OPn7a63W1^I>)a63SWe5QxpK9 z6wF@3Iz=9rH`|QN=7eAU!Gm}(c(5xeo{3NW{l{?Cl|k}K*mFs1$vpw5=d=`FIBgyO z$Zy6ny=exCHLF+Rv{ftc_P4$b4?K7ue);R);IYk5;pca44d1?+`b*Z} z!i~$YXl`x1@vqdUygzjc#}JN@N4-r`V|-!?+xE8Ld%xa{-#@fHNTv*ho7-M<<)!%G z``#CBFdOdML1wX8v!!%2@IshHWphvaD#@7Zyf}?$hu#$?!j#i?Y-AV%z1-srT8Lj5)E)#9jMN!Alca6$Jc;7qj^(NgRs|161vyay z?hY7|w$pqMo@;z2hJ?dsmuWmm*VAoSTQ&-$$3m&(x-O3=+6yC{+tlE#O^eN@%nFj+ zW>JL)g8q6LT8N zA>XgiL*dR!bN)TLpmkw$U*v~yJr`b`qt169CRwob>%;GZ$sY41VB&~It7KTS6n6E} zT0He^D>{OQ;l|pE=r+;yIqmU7QYn5tFxxJI^I0dQqZ!_aPKZlzVJcbNEX#|;w4^PQ z++7nSu^Ot%!X<@|Kiz^8tph>wb|o%8cRtEz%|v?NM6}X;8$vsc(B8chBMo4W`Pd>DoQ3XU8B*}JB~ZgjBWNB$iq;?ua@p;SgPgn zMEo$`wXF_3x#tLuclLUo^U{j}Um4i>lBPN*6#FbTRvYmtuJdSxsAFA%eko#0myyiM z)<0D?<;ALFx(CB&38|T_XaTR5Z74>qU7L)DE)8!~kC$9B9>fTtg*w=Jq5NBfz<5y* z`&$d~yHE-Z)De_J$)>HGb8VeV#=zUafr%chB)T*Kq(z(wP5(yU@bE;BCEX-^BruxQ z``ahW2sl4ugHssjnhcXvTxX$!1WBu@iQsQCvnJIHVzqOMP+nIQ%gOmk_=srQFpq6L zgs*-7f$&E54L836FT3%j;TwFU4oJM7OG1|h5|}Uw3mS=|fsnk&;xrozS5{TvB`>)V z*I)l)ba!{-z=4CC@zpTO4L$I;$35GLKOzv@!F?X7Rcru7?8 zU0nrlv2FlC1_7y0GH{tDR01DbpXFwKSi4#>`(5>RbYwU7cWsRaJCSzq-{B)iao;0P zgy(ac7NRJ4aC5#q=uM!!x)LwDa-Fq-wbXag*e!kA(icm4 z?6mR7bZGsIf*JVq-@F7p{lobEgFEn7pZpoV^@-PnNodIzB^(fFOFa7EsI(E@TwmWz zaM*C1_8BYZgfCnAhK9rCa^23pTn#W=$+uMGPT=l`Kiwr_MDE9=R#7k#E7As_@Sw zw8qA#aqQ#(TH6NkbdV6)f4Dd3g91onV1kn!hh%d_did)!$Hnkix*+7GhlwJ2|MPRcBz2DIz`#n zVtSfsQv0>3A-AXJ&aZ;=QqcT1RF&fu7oLF~hfm_Z=lA1F-+3C3Jaq!ExNZg3uWdxK z!-ne7$+R)E4KF)=S>|H}8WtXoj?#|x2bZqmjkArSgtLOD z-?Y&0ln%(bV*SVH(PelMF3xW#Pm1m-Pfi5QB2`vLGH;aXSiROVU7uG1a=*m31>1J5 zwzOZh>|3$kRHB;6$^+Gtvt3LrXv@?(k7NG&z(tMtqsqgLVz~uO-5Gx?o@p@Cn$H(xK zU;G*a1B0lkszhCNBU>)X*w(B*MKsMKnobisVB+8R)STDO^}rvy@+RY?h>% z($ji4OvKJ8D8wn3|F-0n^w?V>6<3n%17Jqfi#gIH* z@&)(0KQW%b*z#~2)E+w0=wiM~`>%ihnjm@gQ~cuYt${oR`1D`DB#0feEPIuFN5Uuh z4lPo0%7xXU|75OE-;s3?9iO(O8FOY=<5+7CPWJR+S!pB0@+X=`aWMX@43b#Onj6s? z(Aja|I6nQ{W~^Rbi>ohLjMIYO%<@8jzch)ZQ(4Zf&hkYYA)ZSWQ4+{|f8dL-zQ_lm zJ}KtKUuj7JRxGLx{%UZ^IrHGo-~jylcR}D+h_FsVP7}OYU21x7#QCN-gMxl_T9ijh zz2s?W5!q$Q?N7m*t*2Jy;uP(f=`mg}mHAz>ygqo@SArc!T5-Xe#bJDt_K@rEy9T(VU0rY+by3C^DVswvTm{)CFe7=K5uGv2;#79^AGcPi;Mp zE!)~~*7_#A_T_7^EU@#;Y6NbpzW&cg8Xoyz_qAmoQcrNZRQ9F#+~Y$M4oZ*uR&>$v zXPd9?z7gF2=rR1}u6;P(G7y5VoY#np)-J)Ex~lL+PppY-A4OtYl8`?2&2I78WXvta zO>I&_6xlGbRqx{(Y&%ziJyM^DU757Ad`A0yVRC8;w?DZfcqua>yLygdaG$q&F&eAO zZ5c_|s}#f${~U&Y-i8isIt`Z%?f_GLSvn*2z9`FQRk<_jY;Ut-lOp^75hkOLWkq_U z?WEYm-B=6scsnAlBd<=0T~rs6&PBaY@ko845JoJ-(sdrb=rM0k+j2(WVP1RMDGwj! zUuiZL1b*azlD;85Z@m?4*^5hMBE3(m#!g+8MDE%8&`>h=Xu99tsA)LVW0be;p*R$^=SW^V)L^r1!okxn0N7^wvxx1$%%bJ*4y`X3Z+WnVU9Z z)0t=D{eRPgXP$Z@c(b}4&p*EnhmIb_u@fygcx(rLd*AaR29w#Zt)7L2b83T|*hVzf zRbp;aHRd)}hqE-yhVf=uqPaORv%f+O7!@lOzTub(crnX3jsC|cC(#=utlB#IvG+)O zxHs1`JB|kQIx#Rj7A_OqaQbSz{G~VI#n)elWlNWbxTIy8vVL4WCrj;k7_dWLvhh0c zlu*q+Pt>XB!-Inu9_Y*5I0{XpJtU&;l6=RMJ^T0Lt_L3ukLS)_5WH0_lF4d7TvjN- zvJyswpq-h0)!x+}zQuXfwHrlEyZTR1D?-FK0J-q?c@$%4J9pFdbQ(I3^RyT%#cYWV z<=2PH_GIluiA;TxP*7G&ZSlkTlW3&TPugp5go)}GG}nf|16^%_?@qn21lE6B$rbfq zco`e$#IAdOfT634#)c*kuLT2lO3d!sU}_9}+8@o1-wkFMe0yihR-thOMr zw6wXwPUcI@OXqnOv!{sJBWq4gHM)Wq2>V;x@U`zei`u%GIRC6Uxah38sH>e7z9@2{ z22G@B9!XL>HX3hYo+a&ap?sRp!iY&WizwXaNNJFBEksl6o9If=bq?i=auQncuDB7H zVrV0sN5}M+A3KCI*PZ2i7D0IXL6Vo^(Voby2%M(0q^P1(_*Vo+g1@4CCeA#g3Af*K z00SdqsGL=jI*!B~MO|r;&b@aHZ5f_odEK&%%YK{ zT~S($>(4qZoGtXk?jv}3^Konq5?Pzhn2oD1UV?KrG=*RAPWnm-woQ?;I!mKMiS0MV zKAdxQO*9F~cNssH2}i!mY*g7NWVfD%__~2`th6 za0=mv+J|D-C63}_BB~JmlF-EP3z5w6aP8sEnQbNbj75WVIhS$A(KZ}t>BI{yW_IDG zMp)Mq%3!?Ndv~9G1o=&#Dy% zj^U1ymtJS|nh)wQ@H_?r&*K59qn$u{iYw+}mZ?Fhfnwg13T96fdv&+cx)6VDya zilf4tb~9tEHh8mNRZ$YWsVxr9i-I@PMd7l)XkV>~AZcYj?QIfN!@*zAzzBN!hA}cW z5hhKF1NixKn(*QvsdnAfSK-Plu0&;J6|4xy^;23*?-O^|xy-f9z!L3a71igF(Oa1P`TUXsmCR9V-IYxe&6tSY{pW z{nOfUGU%&OoV9iV)~=W%S|43zY{>+!rSva}`r0XrmOE$xUaxR)M`wz~JWkV&v&d6E z$IEkaBXvn+Aub(l!ATfZ3T`FPhrqiFpDAYVBx4(+L;c}?P=zy#@!wM1;PgLMCMU-5 z=uf|f-jheMps5C*dEbpeY)dvm&u2e2Umr_4_Ko||)r|k>6ga=$sw+!z>p#5~w|wBc z`1hYbhSK6fy#I|?qN1!=;MJW~E%_vuCpvb0SF+1=8>HtEPuvI01Jcs@4Y(V-!@WX= zgE!V?#WNuyPCHL?TH%_RiPTV4f!fM)teQ6m$2z)j-~FxOEQEEZ)rWg!EnQF*e$~$> zja|p-acxVHC6^WPyB#F3n)f*CQ7d_q%c?p5*?Svjh7{w$%XhY&mbChsy}hT0Y+qPuvGa zXU~;5;P5UvA$9MlXfeuVCe-HXU#PR%pGf`%H*Z>Yuvr!B^#I}c&= zmH@{pkEhlEv9?MTCm_M_L32M^Z& zq94U=Nnj9=Zc7d^eB;m1PGSlo>BRxLtvU6oBGt0u38h#HmT z$FwbRF`w8L9uN_u{%8D%%hnhVq8#*Gxi+qtjFd^La>cHhFJ(Tx_Za9)s#7Uuneeq| zt`3s2B^F*MA~58NFc zYNwmGNFuwEy_`N3`X2KEOtBKN$5)iR| zv*&bk@+3JEGh?+k7tGSY=BB3bZ{vpbLDfwmnUUcUjEs)qWXlQc-m?cM+uN{f*KQm< zas-_n9YK<-9fw=Gq4RhMHG8pCSCnJv;)PhWU?Hx&@-l2(zY&WTFAkUQB)v8b*Vu^u zoHwNe2FbgAdj=J?OHK5lthXZ|Q1E(86fF|GnORK0)Z_%Z+fRnGR_s<8JuAy(=$xG7 zHv-wdXCHob`<>zOqWMdMBw>l`7?LWeLqSjxJ9en8R*Mv81nrSpb zP09GtM|;@uS{@ITqlE}Jv3_st;IOnV(>94dK3)|$lX3Vh0oJh_|7d^u;3P}VujF2u zr97A^yfofaRm?(Vd2zT0mPuk2msQ}urTjmVyfS|KNRYhR|IGd2*W5n&o*OWCcC}@L znUeUZ#5uPM&FcBNy$52_ihG3XNiHtHwkI(hZFhiwrgUJ%jeEUOLrfhefAh0dg27utgH(kc-NiQ7=8uLM&?Fv}_(`WUuS2eNhgbxT4{R z?$M6bYtezF{VYv7aZb`sTp#hsa7106wgEFeR+33Z?PJqZm|I_kS6;XdEnR(h{!lCS zw{+m&fBZatb?4sj%bgdUJrBzk*PyPZH2d6BaksT5S2OD64sEBnI&(NoHDa`C$Ym=$`tXFU&6@nb{`pnJZ~|)5u`tSqqxM zxos&OAoo=Lgd%eu$jkm9)N$E45Xa4R;)Z471p+<5?MUiqVEBqkW?*LUH$FNIxiF0s zWWLH$JZlDO<`l;p@%r>Zzx1JP77fxa`7nar&Cm7%fSYNRlI2Yl@RkT9DjY z#E&H5!f%qKw#X*0lp>i}nI{`BVo#5fI94y{jAa|XW(Ar3S*4}H;9ZS1YuCc8>6@Gw z$M|^Wucx~Qon2j+n3xP{jEs$7BB(d#DoBQyWr4FwXQ8mDIQT6N6IC^}wc%bf#U;fN zbBK~wNumx3KUsM*LB`ixiJiqqRv*~Q>oP$uyFACc#6x?26(gIC1HpN3M_V9&cHb+V z`2=wsDU|Ckj*k$W-}~{8(cRl0=&TaW^>adgExNvdknef+*zA4P*4cuQkzri0VF@ld za~b1OXTg)kDg`BC_T(?MLclKJNRDkhwg+%n_nP#gAuaw%vbi25dYSi{6#G>kw0wN} z^=aes>y+2o*cxif0-LMC!QjSqxW5ZkjdSt;*J6@akNy0c*mnOf!kMM-zU2~JfAML| zc5S=&jiHF4w9~(tE4=3@Ud6Cz4}OYIj$F~N`542$e&W@5^GAP(@BMZ&#)7fz^Y42p z%4W^<$|KuHZa?5r)AmPurgNfKH>OB*qPFHEBjHP=qFE?dbv3q~+=pkL-i7+$o?uZ! zEfzG?p)yD?nPii*yij|NPq7%hrNQ{Mw5b70W;dXBXc)VXx8PsCyA5R(1z{q~Z2UgI zxgvb%Q%XD9@J2i@Uo1kM3jf+U5b)+nH$3!MzBrqbM{e!b#p5(>!;Z7}EBQxo#aQ6F zRv!L1E_#2a$hjm7fSmUy1k5XoRF}g83A@orMR^g{ubGXl&$XkYcL1|%DxC*)=i$#o zAta&2YWtj+LVP>JewEao;@9@IxNR1O@@@41=^pw;FiOLj{gb6^sqcZHHTN_d`d*zeVN?o*SBR&c-=dFt-vFWi#RSyQCS(_mR?0YU8WtF(e;c>|EQ5 z7#*F$mhJ8M-97v8{H_iR4NsuheBnGulw7oC37Tpv!}zOVlXEy`_7cxnqU)LTkT5Ts&tJ1R{Eg~3Pp(yHF=}xHRL3B&Jog#vF6vft4#*zj^c5@IL##@2 zO-g`j8QkJOhLhTBTTZM0iJfSnO>AQVKMpgI97=$X;-qA=w2*k{RkX?%)Kt!GH!VA6*SwZx*cp zuwh{_x=xH?dNOHj_DV9#3yX?p1j!PG!kG#)OAAmC9GlIUX3S9V4GHk@^32X-c;uOb zVdCY+>#iaD4@Hp`aAyONJ(scrqqc6I60IiJ1b1UMNjhcll4e#(#lKod!(Emq^s>%) zr};E@VL?go5L6l_q!uq(XpbDe5EXkC?5GE6=9p_SI_5Ls$v=N5dz}VWp2Q;U+B#il_=a7&}aDV(HM7VxjCm)VEkc1^ehRO-QemITssew-_Qx%7M%Z^KA9q!{J%e+78u zLXK;eA2N6izns47O2EydM=re4*aW1@oOW*ZzB5Uzy+?wZ*uF0Oj~9RN`jg7|$Pk{p z=cm~6#~%eZf*S95^+ou=o3FBFDa9zI1gZOf_r22k|zAe zr(TD5{^QT^gWo%3LV zuwm&U96H&72Oey}?e`uCH-*0X;zc-Zc|9sBipbUlQjhvP6-f7DsVy1Do#la2#N_QD z^JjH9k4hY$&Vx@%TBq}*CH{S$LE0*ARa%hAhu7y(QB`y=qEdKQLOl{(u`ZR%vqjoB zs?k%fYmKWeT8M`?AH$LMo-l!BaghbJdWzIp(rZ~NipSzWGBceLKXdpZeedebgkW7m z_ov}JNfyX^xi*L~W?!dG%jcuBe-O_dYQgSfZTP`2cj70%-G$lpWnm)A%+6Y|qz2WM zB@7#-$|X(nb1gF^!uxz)x=zlm7uXp>latffwZ8)oKY0R=KYao%ZG+(lmg*|XaMtMy zv0>RfRF##)o3jHROU&Y>k2G8x)J~-9)E+ckJn?mfWKW`~iMDCbW6RwjF%Nl3Bj6@| zN%I^LBIC}%&)V~^#EakXm%%e?5r$s$ay)t8o%q5Rz7V|p7)kGHPcdWKxvLkUv8vpO zY?8%U(T(~m3qy*)@R?+qT}#tNh+EllgZ8!NybyYhKDd9gUk(ZZzt3)!a17GcNxCZ* zM~IA4eBt)trA6vB?NGS=8RO74pBAuo^;Afg)oB84F9*rg(PPdiAcdQxol|sf9K0yP zAHZi|X$wv{d_>2Z;G!)Oc`Y^}E88{l%*`m*qXf@enctG~0?b)C%l=G)a%pqNa~#p3 zoWL2K-*(3qj89Br-P+aIaQa$ukpfCoiIX$SqPOx%@Zh`jFxgcWM*CnQ{Jv`uJsOE= z&r=WJ8=rHxNf_tZYFFE^+s7l4vX5iloDc{{zswgjgXPNxseMJqHVj3ih!~P(fCy~! zHQe8eq2MnP%?)sL)X4rQ*Vawl#P}q>{4d|eSYUg#)ir3SYlid;Mnn^4m}v*bCX}hy z(;7!k9K_i87~b{T3vtf6Mb6-t0jH6H*2#XWWi}oEvst3C#f~#{sg-XK0$hvnhz)Ap z_Oxmmzmqob;FBo%;8SC~D4%w&D;Yz6fa;+1^@(|(>g`I_{U9` z`XBRIhYuzbrRBsPi4JUFCrL)^#~Pg^n`1?1b;9jP(u)^|5QC+c1!*{9K6zgfc}-zo zAxyZYh8~?MLS9-z$Qh*VEJdcYNfnCVj4;p#AlIrR+S-drF`SY?(R#Nn)d-bAJMaM2 zg@@M}ejR8Ii*#M`(%R9F+aK5-9>4s>*P*7SCU`3`X}|pmkF~@ZoF#jaB$nr7`a=3P zlf_wl$X%UEk>Jemri7%B)XwcWDN$x`aGnf5_ClF_EI`t>)ZSh8C(FWlm*Au51py}V zVS-0%KRwNO4NixL2GQ5q9%Bq|09nAKk;S!d!f}w4ee}tvgEwK%qo6@Wz*&o4xr;BvjU!&AT)&kXxwKV@hBy+OV2aqH#wO zom&pC_Z9m(jlI65U(v4;dDHA#0&UwG)k(V7D8`Gnu=pal65s?62lqza*JkO{#?$8G zd%xa{{*IP#lm8hra_lkmzo-}=*m~EG@yKmo3w&-0Z+iLp_=k7DINTI9ybe0<_#<=z zo798VOQW00(UxDMZK>UHo}}?PDs@5f=VxDjGydsc|AJo`LqYiHujbxmPHYyO;ya5l4&5+>xH!P27U3{f~<&#y@|xFthw z%kE=hbXw=&h47@{;_#Meyan=>$789MTrm$Gxah^61(&^MWlR*(XSQjFwBN93QJ!B8 z^mSb1qNmX$PMd2>U!Kh)v&ZX9gw z#L;D#G*xDn)xh954j=Ew_B|bV}F?V@HhR+q;p`D_zN z{YE&5^-W-S!h>5cc>howQ5XTPd}x1Em$ zTcQefAe|7>Y z=vb2`hZHGn{_SFxm>ECsYB`9>@e#}{DZ~F?%I-)15bk@Wf}6(Iz2t0s>aTCGmJLca zE7^WNww`AHvOlETVp?4;e$4EpPX>uPvoz%YeBsylhj07=_ddP{U;pS$SU9H^$dhJ- zRk9_&ZE3+b+&a4tY!5bHz%qZPj1BZ68HbbDW^A^kvOfH4ShfiR?MKmdU<)2R@C?fK z9mbNz`Y@SQQ(hL%w#&QZ8%VOShL4I_CBa`)xY>MvaQ|RtW!-h(aom2-!EodE%P(Ar z)yrzbFZkL?HEuzgsKVAsS`XPUa@67x#9nYs<^d86g_YV9p1ti;_#w?MzhFU_U@^C zAy#puF38-{T%Zz6J;JYH*YhM)j3crWLN~TN1v{xiOV-3JeJ~uL*Hva_*77;^SQh-5 zq(jfZF!r}};&5AckgV>M+;FUr0s;;&aYgW`@)v`J)Uu0&~n^~lV;fIsV zOG;(g7XP)0N1vog^yK=S`Bs%lSdENMqN8&d`;PSBndeVp`|eJ(cMXT6iVF+F1pBJ_ zjaWIaF-TffgmUp^c~;T>bFXeCacCb?F|t4OHCdb-AZ|^^2Tg$l_vSNcVpf>_MAyXG zV+vLRi1O_7NKM++*4Lx3xD-+;EGoivFS;II_~(B{Z(l$1DQgza4*M-~PK#H<6HT^g z#vh12=G|DG_?CxhRVm`0asqB za5>EH%EhyT8}JhJceVxztg-)JB(O}(+4acnc<3iz#?-_ZUUAiWeB>S1Vy2mu6TuL8 zY8$+sMjr}Gp?n+m`}#zR==QyZJWI*vE7Is>65=nt;tZU&v=4p=rv!&X7u9mR*Hzyprptp z4?NvyMa1LtR%TIQQ(;h+tWVT0mkW?ATpn@!qk$_27)~HR&-3X!fnB>Yu<->|*mkHD zXReqZ?jh&QR^XVei^+-eaIZaFX*sUNTfv8_oEgu|EUNC_QJiQS zL|5+!PP7i<$nie(_K$^s6BAS6teuKk#aIy}tCr7c2;yE1YAVXYdMXbTtR!KqOD#tc zOQ*`#KY7=m^n-$!O!P(yg(Q)w+`i$o9NVD%tK@UXj+Ff?@u&oT6l~jwbk=k71O~c0 zQBhkDsce4yarE^MAfIAp0$#p;MT|R^*P|Q9&*FcQbH)2Z3lWHiRpvLEw2g2&k%=hJ z`#}hyPoQ1Cti%r7{^aq*Nq7V9&;mJ5Iq?Lp{ZdqteMkI7exN-#I4-{2GP(w0qmJJa zSXv4xa!2xPoja$-O>S8Xdagw^oR$`0IYkL?)L!D-g|ji*@>xy{IOkxLl!!~_J;BG9 z-`Kb#yz;CsTUNK1B;6+qqPltqvEx8%cq4zsr56W-l!~o+sJ90*XE!kp{XG&>i>-~+ zSzhGl%(ghmosc9SoFL{~fEnSZbeLON$t&fD%hHb$Qce=iqLrz$lW?+?P~J0+%6BTt z_OEpV4We4kXB2%Ij5SLO0^j^N1J~Ep5hOH66B{)ADWQk7i@Si{a8Kwf| zn7s$Odb`lo(}u>nCOCzQ*ZxkhjS&+YVsX^e7fJ)?!hR(5kP@>|>*lBa*#9Q#KEchQ_65 ztirjgmg0C<4<3EwIPSRjAl9s^$ED{jz=qQrP+VM?y=9=|bo9$Tm;Opo6R^f}QC*U} zQbg09>x#ij(KZXGeez`CHE$b@+rAM(s?+4Yz{h9Wu~c|u_sQz_hRn@JKCw`_WcW3w zS~>S@wLzlf?2U8q)8FjE@y=c>ZEkS5j8q;=uPNuYA96N$GEAjhSJ^rXhNvUzVrTY+ z4erEA$vR`23dzhO0?d2JaShT%3NEk`Os_OZ4w?j^S(0Z!C#I$_Ha>xl-l1^A?zZ6B zqN{%p-F?Go@94pEJKHfim03Dg5G3bIgGAQMnFV3|DKxXQR6N%toLMy$z#5*SM3%Yd zo(g`)#;1aNy6N!TJg*c7JXDkf39BGkWoB13*93pHm0<$J#8BRsQqoGYPHHzQ%Trvh zEmcTfAH&4DR&bIX+>U6nLUDWqR+C0Nv1Ijo)UR5=L*0_up<{R2rmf-HtvT#Cei*;{ z*U#a?8~+RoSDuD~!sLTYt*tHi!H<3noyUEVdB(c*^rhkE`he?07A*Uv^6@^f^qsvf zE#KvRNOeu)h!S|QbjS2**&EfV&_BEl55cq#G{Hk<^UlhHI|^_)Ai!F2%@bq5WVduJ z;N}9WY@aA*n>=yPeS@-7Xfq=Pb@!1utw?a%x=uHH&9LD*Eq(0r&77ipRcMQr^3Vn( zC&>MkBwnWkULf$`-o$G!P8&4G}O+{Bq$}drWv)}r3tOzuA`@~18rUH;q0sH zE;@}w7aDWYNeJS3uls^DXVVu;R2JGzamjHZpR_HUc5*C{1_Qv2WE9r11GxKN$#`s@ zB;FOn$6;iz~IF2Ew}wzNb>z$@xl#El=ny*_CA^PxS()` z7js@Eh@~^js!+dd6KaEG*2KsF2HOtf@S*3hYv(?cV+6~a8?mIR0hPf$KtS-bQ=gz~K>zXmQsXScfEsy;aIln((_1^mpDMAD3 zmZOt4I$w*W`~mWZQhcL{hW#Z%Ez{vIv%Ip9I)@FWH&Ndb4h=anq(uWZ3Rq9j$_BCI zlSUE1y%AI}-!8c1-1)fuo&(st=O`97)MjQ`M)xBM7A{3tvAQ_o*xZU}xBHxjcZMf^ z;9@v=aw3wMYA}(;RY%kou(c9f2z3F?VoFvP3I@_nF~XLYFjezqOXkxPHWm!p>JgW$jRA%Y2i5W8k`X(_(6~`^a(knAfYX%79u|_kwIa1nZoVK&v z6R`GRixO(|{l9`O3)Oe@Ohb8$@K}UW=*^(~YMVFPXJFYD<%_!W)Z`?N?AeavU;2Br z2cyd+*W7?>uDdQASN{H^AI4M9Y(cJK(3!o-&R8s0AnL+%Xedg2$hBStMaF6lv&|Jr!qz*9bW zy+qT8gSXehb^oj?Aa)?38zuf!4qhbrd~(qCojn5>8=FLPQw?UD*;Xns$m!sXN`F@; zW;PdNMnRzmGdIV~ue|I|32lIMOH;8j>=${GcT1MWf4LUydOLX}$r`~)cm%u_zwq#j z9B(BgS@|{FVsz};c1eHvk-3;GshkmhZLqhaEgql}3ifdnaCyLSv>u$CY-`7NfAEuV zYWO8f7UROkIrv3&Wnhb4=pX1oRW$p>7f7hs$OdYUubHKZ2afCu!-usf^ZCxRW zF6llJ%LQ5cJ|Fd2G8mj|tyGTOOPgs6H;N><^C`agqO5<@H?rsFKF`Y?bNP6XTMorA z=AvoWX%rU~hF`CH;K_YK%xlG;UNrtEN?-eN-0`m;Mcct0;Z6P9Uvm-u?k}!IX-Sm4 z;?`^zsn6W;I)A(J*$ekSpRL&b=Fa-gMVHHA&M(}!6uhJKY zd!NJm-f%gtIB#VbBl3|;;vvoVX&YtL*gVG(os4%g3OxH)`5a#;GiDT^xU3q*K_aVW z;Tnweb)oOX9&8ViSv#NEiTSk^VIr%!wmS15sPmweFMR@67(A4kJ!#C_b+hsNvCeMX z_dqM|d*mqAuCB*<8|Ps4^14hvXrE;eq_JY7@s{-hy~~Y@)JwUdD8DB0B-G{9k8dPN zi|kUhvJW-Kq2MOqSUasfd=Oa8+IWw(+dSe$33wD>XOD8>m*fSOEvm-(XU@T04;;pc z?tUz6tcmYOBAxJuI%y_U%!75Wk<`bUBG)M%dM!E@lOG!$KT`AjC2%FPL`{J(!xpAn{aKJR>|e$)?%W6)dI`9=HyOoYcj6pGZ7dR!;Qj z5`i_d!|E>=)VUTnVLV0s65)^7NX$QTLE1YgwnvG+1*a{+#XYzHI|0S?KwV4;wjVdu zyaBO|NIsoO#+VCjT|M~G1NY*q-~A!x&Ypvk(o*a{bO8Ajlc+p@_2TfJjIra`JRL77 z9GG01$PtabQUZ)eUhsB;;Yzxp=hlZ5w8ysvdv@%Y_pf&S(hi^6#Y5>Tmxcz>Ewint z&azK!slvi#owFE9+emSdz5uYq)=VFWL%M~#klrjRL3gxd>M~bZ9HcCPK4jX0%1ht; zd!x|c#CpxctHig|CgI<93yD9MD;rh{ObN8CC4Q6c+AQTT(T{6H_MRjhUv#`}UrYD~ zq`sy)c#}~EYLVs!dSYx8yAR?QT@~Q92X#j zk+?3JVKy>27$mRST~tW7ZCI4-C}?p1$4_oUOM4d@f(MxE7cLIJ0=K5I9(VQhp`)i0 zl@+yaZ%Jm8t=Cp0OJL2{1gV`_O8K@|U4Zqg=Hb>~K7n5c39Pq&;wM3J zYe`UlAuimoB;4p;qNkj5#k>pTOpc8ZBvf42;c}VG(!m*p((E~S1|K&9@h`H@C@4Z% zZ4=6BW@GlMbAv?IejMBVDE4pPhoB*%ls{G zo{iQZ{_os=91lLW8A}&e#S`Je zc8VElS~OFHKgH-uW3`Wms7k}VHh1`M^YEx_)037W#&{WBN5k5V z6;8}iHh+<<@kYs9PC%SF68&0y!PNnurRG?RROj<6QZK!%PD?g9)=TtgJ$O^Os1A_8 zM)>)xl}HbCb{j>Y2p(D&vmE2iTyXYeiewR7&gyZ}f0k!x5=P)2gW;g?mL8dom`NtS z17^$FgY8FJ!{wvq+VPVu$hR1rbL*{5(hGj5imPJ#$uDjo3?+gxIlP!lG?E2o@m3AZ^e8Kww+kEq?o-Sk%e!9 zua#|25o0`cpqM>cc87!kX-26zDD*8!Q{K7+o)T09OTwSL(J7@zkGO-|K|{k=Bwo4E zN;tVZ{CZNu(?>2W=@TzM0OiNOw@l_&lOy-xfpX@X-9?X2oa_sOX?aC?lBuV#LG$5o z`ItscLvy%v%z{zm3w;`FX&o<8$lzw0@EqZCmef&8Czc&AlT%se)oCFsb8ZciksR4` zy79Wb346qc4WD>of-^~cx&1_OCBc@`%JNGh1m#!rWR>U(l83?O8Sd8}M}~&c-QJ36 zJ?%^v7kigS5NMKMOZYf+^eBGu+dqWYu3NbbbtR=C{OZ{axNFY=bal65$%17;%?v+& z&FTeS%(6q=qiB1cOb+ z7}|~(*Ji@Fkc~66J#WQ*B(jS%-=H*ownODKG4I?Usl9&nJiO-mjriQZ--ACqv=fg! za{%YAUxN3({?b5)i^C->Qrt-FTU$0P%Pkka-2wGav#e%hG?Tz8DlKuFEXF%vGJ2S?RrwCnaW{fkwLVabKGcMC^w7QgvO0hCkNWBx?6FNOZ)a2k`0hrFDk$aEC z3gJb7^RS-9X)RUK%nB8(*=P|Ss6@qDkUe1pRx(KFZRcF-4__1krrX*vT72yF$!ae2JXY*iq_zW+;%+FDSPH;*~ z5@T3uj0Be2Ml6%gK~q7TU8c21H}shK4#4a>x=!U$9$Sm_tQjrM`VY+Jxx;cESfM@! zrW@Lq21lWzcnA)`iuTmIZM0B#>iBZgk@*$_1>|5$+em{5Jh(VMi3g{1NjvS~FM-n@ zzU&r~O!RyzYwi479X(G(! z0&rT|Go*+chY6z$NvXGe`&Zet?HO0vm5ISymr1?$z9FY_lTG0rIKa9|izAeVZOu}V zESSzeuo=}UGn;P$pZ@Y!F)%cOmBEA2rSleG zhS}pK7#)_CRbf`~O!N;81oX#Ioc;PG4c1;!Bl{xBzn;Es>^`^?a~mu1$#>s?y6Rbo zEYN3RGHQ9&oNWctetpR?*frWdd4NUSO0r7nSi;ZSYY+W=+9HLn)G}>@ZmttqKe_i~ z0>hh}W%`N@$t>c?1{C2k59#KE0t3BW;U?%aOJ?E!e$l4{-P?8ykNx7C*!R@E;c|@^ zU$Pco`N%8LP*X0#OL}!}MKf4=tdrWO{lbFx-viifGkuuQjJyWKZ=@)1+nvwWO(~gK zh|AAe5hknddUQ9w`J;#Mz>|A%|K`28Xwy=>`4#8k(zBPNd{%KPKERFzHk_+rX@sNr z&7LsPrpGf&$~_d_Uf{E>{Dt{T(5|?m7K_fi5%V@)jsCVnIJW<3?B2E$6$O)6(oly5 zjdiH4C<~KW|0Vln38kX61m~_?f{n`-;AD3nwm*LY4?OZ1>gtMd!I^V$&c->I+f)(G zEL6Th$afc|C0KUR3RHr}XraB9A{w(6XNJ1ZnpniQUW#dk-Z#QPzzLa0iybNYOZbVr zTKliTcc0~v*}8uM+*xGV>(UZLLdVRWe9;w4vHL(bp5Av1*KS%BqoeFa_ct*|?A|7R zFjID&HLECs(SkP;dUUpi^&qG1dmOF;5O^^D`RpbMEV`JM@R1%iEnw~O7$Q3@){GP| z-1HjLHw6BbAS3NZOV$)PiMRMXs{_eeyzwEv`HACmNMwq`2dU%9 zoR}WdlMM3b)sYCDE5+@1gG={*pDNfuGC(!HUKrYWbOpLP8Om$ z9h>|n9CO|!SZQVgrN!Gya&iNfIyP64bX1bv?_+FYA~Ue^07#5vWM~kRL2{w4X$}f! z7Q@kycD0;A#5J8rnJf>~uy63dW<6!<>8u_*2?fv_JzG}N>oJ>2lu{Ng$|G${X>h(E zp3~V^Hf|mBY9#;>T~aK;#5;vh6cT^V(n4lQiTtibO;1mvud^LfQ-*KHv ze8SO4FbX{I_!D^O@hvC}-lAW(Y$<9>OJl^u>dqknJ!4cP>im_r2YZi&n< z3p6n?iGxS?hQELN=Bu!A?flsGl+!r12a&c&Px58%i@tLu;&LNldTeojX@p8JYLQ+9 zZJ)cdV}0~(7{0hUxyrqX>n&4HwJy=~&)Bg?C)$oKmedYz-nzD?4D~_cr}I!720B|& zH*YEaUoB>N?1??k;GSFmDctv}vb+>;2@)+IdfPSOmz|OlX(BlTc%LY*jrjZ9wPD`J z5bz~%)L;Bt1vqiWvU1x#Bspzd2`zVI$!s!yAbTe7h_pG*M6@i0DT`r$ccs?&iWarOA_!+;#@yv0D99cnIGvjj6{%y1K;96l>E zPh{{}ZMT3O%|u}*cu@B1NRla)LDX);(*hJG?0?jj=jRx zg+(+vCB{Q-M#GI6@bJm?m5fDp8;(nwokn9s!H3><_1{yz(}EbU^Em^rOYkZJqa3A5 zil7VR5?son14dWnxTXYN`L8Bivi=llaK4jscQ%Of%IfkAa$QlT_FDfq1zJ>Lhsr!c1=1h6Hm!##P6`nRxNek6B zZrke8dp3ksx%dUr^di^g<3XGs*}D9&QKv@Hjd)M+(|xiPVDEd2hr?BO;o5D zhSv6Wy#Mb$f&PIZT(oQvUb$>#xK~AnEsa9Vz~P==9O&)|H}9>lZFJx8`&3JcS@L-3 z*ghORaSZQz?PYl9Ef)oJ3Pf$#=#;m&6#J9$D8agIJiZvo;cU8o4@sltJJtlRU=^u# zzPKdmC1u?6TB%Pz{(eyoudYdCT622@!*7cDocFzt@4^0~9XNSlJE~{TM@3x|GN1SU zf1{Y>#7KV+Hvi^3c<_f`#K=Gomd>xomp}Lly!BNVWWV5+DO9HlNoq1JQUIb`d2LL( zaRFTam;5CSzuZ3Q@2FPlSI!s3r(xT^%NN1~`^v?$@rtX~RVnAy2=YOArdxe;~c zr(QC=MS@C@aX%@l4Kl1C_^UXf;g%aUnkVZ8TBw7nEn zeK^77ka*A4R=6i{;B~^k^6Al66kHwobfpD&ejOfMuE&R89}ME<1DlVA8$vIhUF)UB z*|9JwS>oscOmX%A_(qI485Ws@#JR6K7=LLNNBQIM{I<%{pz>RtW)%vq48A*8?m7|; z=YbZs48C?;<{7jta`Wc1_~@L|m!BZSh+**s2>r$Np=9smdPuux^Ld5kU4kM-*_iB3 ze^R*M@2NeP&d=Zf^@`*{SGls3$VU?fawH6)KNw9f?gzvub$!qHS_{339-|1DA%+cOxe8<jguR>pi0u#l3T=mW zg+BArE7##eZ@mhuf`kh#Zd7uun~x#>wwb~sjI8+tR*I0+{&XI6)A|k`nE=_RY|82O zYs#$BnYiNI72(Gp9)9`&z8fTy9(ZaWo(PgytCu$6k~5d#%JWy@thEcmq`U0LY3H&Z zkBp7uv8{*kAHRA69X&%RDyv3ONg2{4I<@+I@VI?z_R1=+pNF!#xtLye8HT!B(7Nk! z?A`t>%4bYq<-BIB2og+Xr6sBQ|5J)dM9izN4QFMUkI%IA_GACvHazjvb5I4-IBQ)q zE;xH$_$9j1lEUl_xN_ypj^&P=;xa!9mKM2vBSiMsQZGA?;Np5IN=p4nJw-$IT$_a5 zmf+BmOcY%3LJOy)j|fJ(Z}adeGR$?LJioS%uDNsxetG9UY&~!sXRVkYE>G1EG^uSW z)-fUN#5FC)k@)_HU(cQ^W?GIJ3T+A6@PN zy+9C4GnOnJQ}@wu5?s8m%=PIkT-mH(xU+vKla#c|L_gMHEdZG z)0K~wW7qIRDlOPK2|?8DL^I*A!QbHUC?45yFnr-KeG1D54XD}M@ahdKMOy+r)^b0l z${XoUGa0gge9t%A0LIUy+!Xb&FBkb>X&{InB{{EGxG9&O=) zh>r)|L|qD=AdrQl^f?{hv0Z0>O;Cc1DEj)rhRX0I@AsoXWol}uL}_s$`uh9O8YD0p zYiqo?W8+3>LrGZ*Us#1_zYgCy@7<(cNkPME;lep};qivm3(z+-f^84{3VWZt8?zU$!GbksWAVBRP(6FW z|J7ucd0}v5`{Q`}_x~9ru6AH@d<=CpW%$V3uffgNpBdQsOi?D+l@ooMB1Hpu+q!)q z$4NN&ee{&jYo72U(DN4`T|V}4Y}`+xbEDtuE?SL?&s>TppFa{NvhI0&H@56NhJX9T zV_3Vq885!{bX<4gX;?6)CNuLRg%=2Q(^Jzp(cX`Tp4y8a{{Crf-E|zpBje%q@`}1} zN#B26$;Yex*TW@^K{Bgy_TunwV(g{i62mRe-HWI8ZpM-3=@aDV-W3M zjpE`0yyhjV@%ewF<@@OXb~i-(zwog|F&MzUFN#=!z_D*>pn}T_ z;7S?a_Yhn$N+maPmZcGM59`>u#Aj45S`p`iUZea%;7_R2geMN`SZdUV+SZTg>r8i2 zVvN$z9yDUokm-^aI`$}7rkXj{#Ok%JKf(JPyo&J#K=fWKxk1I`9F)y_ zj$$PH)!b7pOPcFZS(e>41hy?%auS}RB1J08cC{>fc+BjL0%`3w5}$X#Y(#?5cHhVJ zJaUptR)S4ae9AU+Csa~A#Q!B*2d&a@`<~;2D?1n+i#H}0jd9Xf8#Uw0*MHKvDTSt5 znv+18PY_EXiwo)Q5#!>Kg9W9Lxo!_7O5l+4Ce2!k@W`_ilpwcCyc^z_=*R=Oa#GrW z+-VTn+x+nQL^^41PeLQ9H-F0)HDX?KEw%+Weos94G}f(JWoKKnjzW0}KjWLV(y56F z^t7D7NO?J`8yZm*JlI8hGTC3YvoORwTl-OgC!(b9RdU=~2sX;~#^_f?0fB9HOWu5j z^^x$t-Xm=-c&ih$$tF4~Xd)*#pLSbU2Yja&An8dYyy&Fgw01p-pZ9dMVW_`18IZCl z?O?4yeT@fu2m^ts?&$8tm%jNO^!5#4-TY=;HE&UvD2M^cC{rIKw#rM2gT%oohDHX1 zH|Voul?cToy>{$-Hb6ItZ~gu2uwqdI_}+UdEIa3!&ATeE?N(43+v2A;(z|ii}Bt!T#km?@>mC4SGKHCz26?Ae| z(4v01joP;8T8+<+{CvB%s=WM4GpSu0@zF4etjo?>5&SJjd-ouIdHeJD`CVJX8Cj2Q zJ%o>Z`FB{hpdtL~>9s*JYhF_gYO7|2v$M*}ii5r@2{Db0O`@%{KU^Z%+BFdFv9*2Q z32fWb63!|z<@6o~ghJ%zjWK98cYy;x9R9e&BMp{g=mW|)_+_}@l(i%C$KSy^*}ztQn=w08Gl=eCo$ z@8L($+*FD)*EQkn4RbKRIY?#|&47K6$D*1uxKS8>?1_fX3@cGkVf^>?2gS*GfglHu zh*HrxaOG;l>F~DNk5hU&^uapnU=`y1UUGWgra4%$um(@>J&N^9=c1;pG=_{0=&eXv zx5b=B-JBIgiYF8okAF02!e`(3=t8+TBU~{|M4IAbT}%@c(cW7$PRGrJc3e4D&uP0} z!XqY%nEXEL(jc-b_c&gjN#Nr?QcPEot82o$V*N?`nDIdqDVpnm4tTJS;WpZT?FSYz~ao&x^y~j zlE^MeD-Az?60Z?%F(Aa4?Kj>o4yj)1!NcFv!SyNp z(|c~fYhJX;`Sd+VTsjrYON$9<)|_0=-=AqaPCGq5<%)B;ad4~gTWPv=<%2I>7GC`Q z#yRovm@9_ScF$}-f|vZ&x5IsXw*TfMsH`Z#_;`>=I?;`L9^ZpIAK8g#cO66j&{){2 zyru!Qa~7jv!3tD1GzY({P*K~6;<5@96qRJ&_UG}?ZhU2GavY-rz34Q1xb1inM|M1c zp4OuQW7DXqoQ0bMyEb3MTROkNeoLMrtJg=_d9FS=)v-px52X7S9b41*I+cD-qm!>p z(z%|}IJtiW!vj+|-r0l4cJ9Z++xBAD(N^>ik6>ylgbMf5DhzJWX9k1ntROjWV&2&J zRFI$_3w|dvvzcaO_IPRzl09dySd1$-oQBm4=HOF5`8|I9=oYNH>UCJK@oEx$sbv4v zMUGd}SSTmMGGp%e@BsQ-_M`jIR*ZHWMg>O0F~IC&RbN>iyqqXTK|aYWml5QALdvpY zma+5=4dc+sP8{y&#L)N%Rxhu?IUAaT-+DCEm1Z}8_gMiTT2hFgS%srE?YjWKHA=|R zqAG>W z7dRB+V{&if)eeJ6?Y``}^N_|>0J%NA6yBCIc#A)eP*EGxe%d3aBNOKb$#u>?1)F9~ zXyLOnd{(0&_d{At=KNX-5O$u+(!J-=c)au# z$(MY6;=^azV@h10$AwB_B#*j?y3gNz&Vv|ElVi8zIX&q-!Ksm^Up^ZNNH;QAaP*62 zzI|3Sp=HZy^Wi_sV6ka&e3HZZbSJ@Heg5ijv)H`{kKkBK3l`6t69Um-<_tUpdGbYu zX$s z4vpq|DsasvwaHf^?QGe@%1Lh=X#4ohu3i{l4Q@f zPL?5wjkdShaSQ_f1dkj;HM!>2yE6Oqq6n`B-`v?Xs3JQh z?=3f-hhwch;hsq5Z}Yap=sLI+$98NEZ%hjci%?ixg37w)Adxj274^+QQokN06_qHO zIV;HV&j?@&g9LwJX!GMEgBa{?N5_%9=xIBG{?3-5Za8p>>2Nvik~y__`PJ+3x|f_4 zE^p+sVRQAN&j+HhR)T|9ceZBji0RrmKexxDhy$C~s7KTIl5J7uO|pf2Wafp3q4BXG zNi&*x*)YGM2Cu&4Y`pTKGtoORj3XUg*n8|G4xH==X9G=5>)>xHNVJayaaW^kRxwIu z7NM%71WV^MhJOuJ6{rgmJH<0I%ce)iCUB^wJ;Xn&wi(uXi2v4NB<59DVqQaSAa{_=nmH5s&CCjk zdg@&f%s5a}UWS@wWmvmt9=iGmvA?wq-@k1yW|i;5rZZ;ayiIelczz{HiVGPJxyDsz zFao!5e_KGdP{poA$7x<5!Ft+g2@c5D`;#ikYZYYLQgj9+ulM7S=nD9qdrTGg%O&S7 zz_0JzkEiw?#p#RZ#9!Z59&w!|U@E>njqj0SaApR|H~46B7~#-vZ&1RtUek8$dc+$I z6R}pcjn~}+8c&|tOV{H$s zl4~&>TrX6xFHjw7*f?TP4RI!jDJJ$mv+pSGeRiL-ye{1LwXPZ)m(L55IJ3hUs+Jsp zoV=nkg7hNjbfWo0(?W=z|%|9JTEj44hyrI_|Jg0W)bvU$mb2Mze5 z3n23x*J~M;%F5v_J7BiKX;5WYejeE;^C^%z4cV4OI<#mhM(Oy6(u&}zojU!e;KZkC zfw!1vW#i%gg0%i-df|N#gE6}Xr43kLXyr5W=qy$$SE0iR=&UMt-zkbzr%9B(%ALu^ zC2yRr1x&7CyGs@2n`?V^M2MlUF(`x1FTQnp(o6Rgr}y z%Li<4ge6~;F!Sv#X6mOVC((7XHFy9UPQ=tM_w<)==giEa*Ft>-1KR#Whw=HZe=DrN zblD=D-8={GyxmCN3?{Q|YeA6YGCYoq_J{muKB=o6^_pZsS5J44bTvz>Ch?i~-H2BN z$*Y3w=I~Nnk$$<1Jf29st5_ZPV}LK?qW{{(7R#M|Dj#dFbxZXs1)mg0qJKG;t~L3r zK021$0BH#d9={WeF03o7gvrOJ#C2s^G3GbdpfyNf?LX3vg>!2yIwl#rbU|adRP2@; z&O%FjA5M1mW8aaEFzK~zZwn5d=)$36N6>L}ugI5K4yM8-VLJ3h%2{J=IhHJ2fc2~A zVbhugxM1TF%$r>u^FV*4aX8H$a@kCTlSkkL!oTr)Gy)|s_UvQV9&?Ya30BvCsH_=0 zGK_2=DsB_;%6*i!Q*LvN^iN`XGSW^4pLrmu3lcJQRb|0V`9dm0NXg9PGjY>=G{wNW zu_fut!I4p%=;=jaNg2v&n;=III2h9FPOZpe2roLd&e(cMMIB03)uD0a*_aH*oPm=E zarCfBX6;7Nct4tJs<5cB0nN2l;S%ywT9TWmm}Zk;gTJY!5~C9nXzl97b6Z<*=Y5B; zXkisDJAXmAXI4$6nKh{ex!_wC#w~A zjSUSreDo+DeCT03wPh=Q{n$4AapvyuBLil3Af1(Eq1Wu3@*&wM(T&yu&yp<4)}7T4 z9y{vlA3}TYK)8ASsg~xt;6+A#HTaTH$EV=(V%aC)y*H6&Mkxkl`4y8xrTGXTZbI(Z zClUakjd9nIlCrOeTZAPt#^ABLk$TckFx0? zA}!FeW`EHrLC={NXjpZ&KTtWr_@KJymY9`6Q(j#!8Xp}+S6d4v$Hs$)Xe9#Fe5B`Z)|SOAAgc-LTCPeWiMW{<4Fkui)15BJfG z1lrAddK&Frt=PGDI|>8XFMjalc*QmA!zsvA(>$QV(T0s$y5_6nmXP$k>xatIMmu=j zm;?_WzW#FKqH9Z0WTVNQq%HSs9rv@3C#kqGRW90rv#s0S{SBZokjG&qU{@jy7cMI1 z%X4d&HRH+W4`biaPF!)m+cx59W>G>(%OyI_Wt0- zKyQ$29YWvWaJVt|#MCqJAGo-Yj~>&!Is&n7#vtol?sy~KHJ2{J9SI1@`z?PMS(6IZI&hX&gBqcuxnN*kA-_nVv z_a8%P5XV0MPoKmsH@`YuP9E{|o_GBvo_YEi{M+|_fIr@I4<6oe5ZjNO#06`X;EY90 z;k^N$aRMd};P-Szm=o;?w#=Hr#=0Roa?B+7=SX`G#wI3xuIDX=|5fv5V^(pI)gN&` zS$q@c(~u|P^3K!n&WxjAaa~qUO=ORCq7vVwHYLrbvRuI9r<6AJ4-1C+6+yx`J(v8S z_YrQl~BE zc;QObDX>Wk`$&eT+~^!Q-B!7HQP3i1GL{G=*zLC@EoJ_F z&Gj3@uPg04a0GWh@E~rw;f5GV2%kkHIUgV!YE*B&RM^>a95YKwP+i{`{FcJeluodS zX+9|;FdLxt_ROcGZ8U=`N@Qs*L_MoWJ-{xD?Z9|b9=sfu;!^?+?YYiyI0-?8p@Ba1 zb+m`elaSp=U7}#|pk$4ZAti=3Wh{8R{n@X44O^by89scBPEO&DV+V23oOxI?*`?kYF1hA3||awMBbmbPPvN9KgW<=Ypmh{M$d?5`M-W zaJ9rsF0D#_<%<)_gP-%Ea$M)dXB9aIC=r((n{CU{sn#B~m-aLSJND_ur#GDgp6X7D zoe@ux{x}^4S9en1L{R4De(~JQmk77+Iu_ccRx`j8_deQYDU$iCu4u+-K_ZOvqT#nG zx7Z0{E`uzKJ>K}}`|J`(*Of0yN!O5a4$t*`eeG0AnhtH>w>9U}!D#;!MhB-5-Syda zs^T`$Ik$P+D_vgA^=A(p4Zo~c-@G{d;-6HcWqrAe4eKVs(jw=7RZ-y##NzVm@ULd! zT1-z)V7Rvpy@$7B%kkZKeE;*PE}4P3wbfWWy8*Qotr$q5kP1K@*oTG`utAt{S4dVqsZiflJ2PY_O9LS@ZBik2V|8KVkKcmv?f z6mz;kv$oux30)=0Ch$!6>Wa~5TR$;Q1$*fhm`f32+!GTdyphebqf_PLi~1&loeW;G zKC$~qIP3NU?|m=c@cP$=FJ3hvYR)%q+=y>%*npk8cj42Y`8@u3-vhYw>0LP5){Uz+ zu0+MG61h(~eVvyVfw64iR-yvn>YV&e1~23GpXi9Mok}S$EylVfa}r(@QfBLD$3Hl$ z+?K6h!Zi2AST5#=+<&Y&6o5GUh_VeZ9170tN5?L+CyMzMrNiS4rvt#5b;sew_#_w( z^?i;v!sC26!8)+%<*elPrZe$?^A!CfB`3{!!3W=V_1{M)6t5TrglqZ0aEHrWS5{k} zj2t&Fl4ClZ0p&O(Z%=tj1ujVjS6#Mls$L7#wMDzN$4m*dOlkGNWiF3JZ&%ED1UHlv`yp;`EwS zFG&gp4-ubA)0RrZCGbq!vUVyPEtLqX;O|-Yy32F4JX52mvjhFzongHb>|on?)Q8f* z$*C&R*JcXwx4!p%{PdT<3oAeSH#g$#uf7mZA3BboJhdJ7A3KVHsR@`~FDWPrXHOwo zLYmd7Su%Lfp+n(*0d>{ETln(KlESHAuksrGc<+;o327-)8hXk%)SVf3pT$G5u6%rb~Q+7&74(*$~ntWw{!!lmu$pTX)W3Y zMzHTh3y!w7qJL;O+*8JUwaWa7JgFQcJ!}{sudOJ<(xyhtsjb15-6v36Ta48!>O2X0gglX7>ISDGSF~Wb6sIpCS8&!^Suknd#O3CrD1lMFwmz98SgBgLOQ%x@!1=U` z3F9+o7T~dGPJ|y)ST%pPO+o>D9~%*yN`7KEm43$;f0!prNHKabeL^?Q(js{NFssM` z=ZQYt`Yem$q3yL|__G%@TwOUu*%kxHI(F_cl{}78{aeTIA1mo1Qml~oF{zgxnrVeO zG|TGldu|^VFI<4Hf8~q8ORbr3Im>9p;B0JY#EV{ZJna$+bSD(6oWVqR0hgW!H0tcmO_5FH?%HF_((UGj*=iVL`xcdnr;A)7fl<7 z67kY&93Q2_J20=#5q_n>F42;Xefp$zzFRMf$9#2bep3y8bMJFF*3uD9dp&c*da~rt z#UTXZXFXtt0(?n4B2Hj3ALwU}ohg`jD8VX+>tjadzZZifa-cPI6hYhP;6* zu`oqwYe2FJISEDSE1}-UlVr(6;XWBvCLt8bGdVGi?vpJT8604NTUo)4W3;4G0yj*} zX7IY>o_q1-fBkoijE>`VH=KzTj_OV|nSdHWwo?}uDElW@>;36Jvd z;PVZME(Do;b}ZxY+pd(}^Vt>{&)UIE`LlaR(t|k~ADKc=%S4KeYXO@C=a#7c`9nwX zy+1yRlBxzQIsZl!m6jo0YxxzWa%n0rBrm*eD&0h5GYSfWWL70Ag2Y|zlJ%%sa5|>S z8gRU;7kiH$#o-{CH8e63yZ|W(lgv4n8RjBQ>W$BvrHdv8>^|C#Gfry^#-Jjoobskc zXKF=~<)qyk(0$q%9cxAvp`qZxA07Mn;E_NoSzPpf%;6c3yvHt5gz)K2d)oWx`y#W# z?D|>QyrmU~T6(d1eq;Fc&s><|`z9q|%yxkkb0e6@It}a$K?>=<#o|LHI4MsS42Rb; z4i3++OBUnf6P|VwFFwnXaHfsfvCgx<5$+h)V{VpyRpvMPsw2ls+ko*3#bo!;+uPEP z9Y;>$>MJkDD_{E3aJvqV=Hp-U#oCq2m*dilFT(EKd$9Y!A?$1EL}OK1m|W*N^z{)S zdzbH?g|o%|frfm3zjmapJ6w`GbqX6`8GI&Y-+1nt@M9)%a)#NGq*`Aju-X%U;kF%} zONpuohPU$)BgmnLemr@wlaO z(3NX?Zl-M4y(p)tQETrz~mjZbr%Qqkj$Q}Ahk$U##Q>k3m z3-Ma=)=hdmN^lxDlf3FWc>)uoV|Eb9{&G9>VdVoqMWVC+Zr<`NKJ`F(Y?^tMi5bcio-p|EoDO2XwkzwM!?v1Q*;G_Kf$Ij3I)-|VM9ZB|rT z&;7qsGBdL(P}VRX^~=vh?Xt5mqk2A$b#-IMzCA%Q>twiBqInQ1E-JEh@&ZLOI2wZc zo+B+ixPSAZU>qw%T}|d|q{)~b{pPap5FxuJ9s42x9~JU>LQZ@~T(j+;h$W(*na{Yr3(q0WW*$OVDzn13PqI4(xB~$jh#1G0EdIS1zz)}Kqn|7xo`6Ztm8BoBU#rKJhd<5;=K*$%3F#}zav0x?4_>IwMI9>{ zx7AmWo=* zq3NsV{7UU~#1JGt-QM=$r>6=dLqp-rtI5d;%jxOtNX1!E_9>iSp)Uet2ale>yZ-hg z=l~X3U&{w&5Y{Ywrr| zMuo|*hMHN}u&Noax^@FT_18DxbvK-a+Uhbf4j@Hqyq=y(vBu|vzW68kBW<5hvg^R; zrNx7M;uPQ?$bIo!YL`Zbx1sfE)(f~cZ7GD*57N1> zj^c>oN1Dx3{--81x=xITo46wnT9h}}59Bg7K8b(%&3)(|nZVKuU!MH}VgBWXCACzZ zFtXL>N7IElRbCBz;mi`020E!TGqV=2$5d$zjs!`po%{EprL#NyI&DeOOca?}-4F(} zJWHXOk={^;vC(PV_3%O5_0VB#-r9<%o^8j_$T*fPsLIZ&paclLxMZzDv2*8`HuOb^ z?62~94z)5cINxYOd6ulyqd1jj{W-i+`FQquY7SmRn!G-tv1ncuo_YQx_8#rV^11b> zC@r?{TLlb!NsU9@V``dQw_ud)O?-UfQt%3u170!y()f;kIS;CN3IBoUn1dGZ`L%}^r z5w5-FN(}Z7;`!}6vHQr$@WU>%t1E&>BzX&oG>m}1Z}Rk7=h)1;dTP%RwDk_+REmk? zFF9uos>(_oy2#o9<;{thiX3yEi9N>nV!Fgu;o@MIT)vTVuOxJ@sBe|tM^1P|dVg5` zDCs4tQ#O6a=V04H+Pz^KFSLIsUwpqXhj;j+Hs!--_h57j5hFAb+dI8$h6G#yB%5%n z?7#K~sgVQvz7pkrI-BB-zMsWESq}n3IRWeq%T>%n?oD!G;g!!NM{;>jwBp01Jl6o( zxHvspBE8Gshtv-3=(wu96d(Vq>v8k@zl+D8+={>Z%xCbakA5`s_7MVq*-A@>tV4u* zWKD}?k$lB2_*FXGTf}^|aO~s=3W5j7vhqrlSJ$ARun_zkSdl)%V%TT zK$J1p%yNYdaTCYOQlwxaUf#<@TBST|#F+vu7@uWO{PbFe@?dut`g^+E%?h)fBifgi zIkPEn9}3I9 zwdr6`Gy~)G^mO=@H@bI(60{;&e-bA+2Z=VQJiIO7_b=t(kiN!fx1xOVfUH%ri8766 zfIlYD{!92)tbde4GZ&78CXL|f@CkjJrd^*L^Xt+;1!#|qw2dbGg5i{;rSK&7Kpun6 zSTPrmZ9RmiwjBwRtTuM8S3VBe=aT)#=S%=!|7bW7NA_d5QG*xPrtR~jF9Dx_$!%?` zNqm&zm5WbD$#o5TR8JebRs64O&&jbOcqxCbZZoyReUq3Rn}##Q08U@i>)cvgt4z+f zA32Ug?VXra)rji(D{-pjg?%|tzaW@s1Ni)CrolwxtI7*kI7?g2L|NS&l-JKe^V*9s z*wu=TJ&)tzBfC(r|0tR(W?}K{IyBW(qr9Xz^MzXHi8Gz0;^01H)3QZ4W6}KJA*~;6 z!3&zs)EZd(-8!o$$1w4%;06&%`aVzkA2}$Jht-)Zai;o zI7?iUW{NZmIU;q6s87@Lq}qy2$dI)q(f)Xoxi3igu&!G+W;gP=PQ-s4w^)!8d63jc z%t~>>ZVL_7 zs9gG@oCa=c8l$7b80_l}-hht4?2i@ha}oT_P|4$mm0(g_`#^5XP@ZGT6@ho=dqTh~ z^}J5O9idik)Der&qgmM}CMLpJS3~{%F=TX;Knv}QDA-c$@JPco_w?51@Uc&S4u_Am zgqx}V@bhoP%0-P9m#}`7c+CpN0Ym1dKU^ZHlz0PS*%xGg@W}uHAIB}>&!@dF?nP4j zVwEB=v`*rmCr_~ZC|ut?!ImyV@tJ{ZZDL-cITxdVP3w0>8TF zIWz=sJYRa{8QHkQvHSZ|q7Bb+nocFDq#K+JT_xg&2Oc^2&Lv}7y+q6ABlkX8yuXrH zRx(bi2OF2quatuWko1ahpy@K3w@>61q=lk#UNH%e@BZ--JRiKhZ&napz@iq z^rvsOekw)%7r~qYMIp%*e$lY3D*T#Z!^;1Uz4w6kBRT5Czx{HKddg{6TCFzc;IvNI z1{-IxNp}b4h_dBOSr#0Jg#49C7yAn{&{vq?NSF@jXc|=g|M@`TgcM z)zwu!^Ca!s2Dd&>znSjpN?l#uQ`6mZGuqZ{$H=_FopUcbR6FM&~Z#nFQT)f zDP7T3Zd9eeo|FiCDKF>01m478rFxkZv|O84LBVIp9m5-4MMjfV@Mdxu21{`mA;0ps zvcDYLEF2Zpd|We<9jfM?cx(rPP1$&*Y|K$UAMfUV-7B8n|-eA+f5T?H@mZ3e-C z@qyNvTBZ4v2M<9`hnLMKi^eyuFOL-?Tef9<2lGG^;>|WW1ZNBxWj3$0ug9m6d%``t z52ok){?vc^Nvv8m09_N(lVe`yR$@KpIk#eZY65rMdq18!GK6&l-RSFR%OQ==59cw% z#<2%BCg}jaZfN;T^1Sij-XqCeX%1yaMQ4{Ux%LvQU(plrUgO)y{8LvZ@fNc+qvY|r ze3y_1Z^Hf{;xh6)Q?(hR^kJ4K`4cd@un_%F4G$^gixy(5F(p2D9=(?=oZ`_E51d<+ zXgd??rnZF;5k@42!3bEA!{1yR=mPqT8WA_;3m!hHR#;z?MJp2>te9s+BZrWu83nDS z;W8!g^Lwog!SXM?XjQrl|G_5?WB0xT*t>rpwr|^pzMh_n@$0WSXsI1WDRNq z@Z#KjdQR5N`i6AEC`)J*$@ruZtW1JO1Sb?a8ePJt$*uw4l6byG-|w#O ztgDH!QH&0rO0To?@C~UNXo!m_NK~ssDw`^{gUN%zZ@%M?k^tuctVssccmMvIaP9W> zUVRB4ptlNzHKin%>p-9brHo(m){QDMP|hE4tfn9jLY^dh z%tBGXgP&)jx|ZxF)_xK{+}w+Bxz9uY!zb^<{Nf^B_tLA;+14D`rFOm<6gm)iit(Tg z{64(Coj|(hcw+F&;VG_5v~JNv4T$U7MqssxV%&xdW+xUgax(t5xojWM(&)q# z{`?bP#`x3>HsAb8bgtZpXEvP+mlrxMp9eiim%R9BY(jHqA9^=jmISkIMeDlDF@YBB zKYj{N?mvJ-Cr@E=W;P8-H#Ib*D{qz)^mDMQd%Mur-ib$cox&HtegL=McLe(m4&(IM zDI7mFfy2kg@YK_1@z?KrG~Igm^r7L@pR~0$qNOF9yGZj9$s#4|JeMAAGXbE_Z4lxy zgvX-oPlbBaM*E_kZV~VC5uUPpx@^k0)h%`C?PS zukjz84W$zk*@W4i6;)rj7~VWa_t}BmhLo9*Z;7RhrU8@5_}0$lr8k~lSUC+gc|4nF z>-+Zt@3s2IZ*ysiEa}SQKly!R-%(7?&g1)D_ZqBUzaC+Kk6MM7@BGCrx88!YXU^dM zhaXK3PQPe%A39o_J$`C6Oy1V4_j@o9ILP=9Y=`~1+VQd* zE=6-gL!h^sEGD!Qpm^>djN3w=^5|sOMyOZNuW4HwcAq`#dh~c-AWg2V%%Xft7D93I z0JX=r@n!I2F*yy2lP9Uq@IaktXPg%%6PL>pytEz!z9=6xyQyYYzd~p{U~VMbFhV6M z+JM|RvHJ|45%Vi$(!`Z3l=B$l#m8mDd&w|z*+UIjgzw3H12xg%+8SwdhmX-Hbhtr< zb;$!+Lg(5`*QI9;-Sfx+?Ad=9kL=ii%PzeHs|N=UjV{XTv$p(9#S-r>xn$W%Z;MG2|{^rNLK&mh%tv&Xjgxb_w%XU# zhWC8zUQA5R;#DuYG6~XlF)U#()?|z2N#mryxjk&_aQyOnfsfn2_hJ025O3vwo*&i* ztKpYx6V41b1a5fGkoo{1_sx9l^$!#9X-k}kwv}bNv#;i+7U8e-trSWt-}t>z@ACoh zp*@H2;cq;M#^!cxd&!Ta=RK86rr>_L^?B)X@sYY_Idx485rMHNK^S!nNx&!xW_7Q- z1S^tYR?n6jG2haU!$W7W^S}Y@J9-4eNzl;A=MI2(E40ca_dwax(S~hnS0xXUE78@| zhLa~}@bD8uc=++;@3BEVvFj|>_4ncCZCh~m>@2==_d$H|j^st)fnm63y^i)qG&j}f zTMVPRD1woDZhkEcoYK6M&T z>^p_keO*}5-Qm|Z1cPA@c~QzLGeA+8;&F6gTiO@MVi&-sqtj|dSJLT zOQQPV*CL#NCzF>aZhbV663AJVLBkKmgEc-KdL5HhyQb|d$+7SFX`CD$O}|38{nBj; zl+>yo6=YQ0*H&NrqT8@*=Po?9^C>)i;tVcXJAn4)CTP8`hSm6b1E*|!J29kC>SDQA*s;}TS#_yAXr5af_1Bm^K>r11b;mv$voxl&r ziOg=Rb-b?-a>k9qFa%*~d2E$}rc})+rMLE~a0*QdBb7nt-zMeo6}|Sd;sHZV2!Q^k2nOK zv9ijq#p3)zx*}_8d<^rmGbv!YDl1*4A6lL%V89rIIG03Up3-O?-ttzU5#sdkrJm#C zaDVf2a~M5)2BSlRsUBP~j|UXJui@DIzK#w~hP8dwTcnO+38HbHIeQlW?Kj_=O#JrM z&b)fTjaxlDR3alv61z4Yo|xTJI4yA=!u}%TmdYW(hIQpYS&TQyVnA?}vra$R5;#nx zE|;77T@F_?aBJfL7;b*;-}_gZpOxBA8!)Bc?9V-WEP4w0s^lyzF5(})d>3{dI)PQyuMbMNFU%qBX4!b2-K~i=s^uZ0{3Y@x z{kgHF9UUt-V#Sv0(7WY&B#|wgo|wU&LrGxi@DU7+j$tu*Db$h#vl{3j@DZAB6_*QU zZ5ZfF16tcRuEFJ-*5Znd>#$|bD)e`@W7EohT)KV@R&;dX_=yR8_1=R?Kaha0s@mv7G3CY*)oKrZS$$7(!a{89^5%HZ$HJ_P z*Qc~%V;jx4kYxkoKWIsYFnewg#|#r|Y2#(qbZ094QF2k_hRqyL2ONeLG8_r zp59ZP2;EYeCvZJm$WJm_d+a_sh|!5@lu2D}&A9E#t>|vgU(9gZp}`Z%H-|B-f@-gZ z)nj_#Uk%O9u%b8sd9Dk?=r9}LbphGKX{HwRWh1m-l@ZPx=hIusW*`QI={0{(C&^no zOHA+~lxIM(Aw&47-b;Qe$IV7$BM4l*4Ym;S>P)`Cc|*W0H7MsJ5V9a?@EU%92sI)+ z7@yKmO!#|3g`=Vr0AIG=vOur8epX6Ix{ z)+uQ&-irBKM$Mvfsp#or84p@Jdk4Xay`=&(H#>{*;jUeiBcu3@-~9vJ_weKBOa`I9{+%DhZ8u(0dyA~Ca-gffI4jchT6M(W zHbd81K>YKm$u#_xNHX6AmH{3p;ygIBLN{Qhi$d<34smY~ITV+CCCa-TQj-NEBS z_Wi|yImtiJGC-HpFOybfp)k*--A|vy{W}g}%lZ{~N#g&qhvXQ~oG&2WZn3ek2#0pB z`F@RW4$a$MqsMJaD%ZwN-Y$sL0pdKw>O-I}*^SmGkOcBiAD+eB%p$mrOY}J}rUaZz z$Ip!5-JiPyqf^t^^1RofeZ~3$%;%Fdi;vWJ#sXN+6kdgzdkK`x4H{cI&@r$9{YfyZ zZ`-Y?@4pDACugwt=*e_-*5L36<`~T8ZuJ*P^Gj14E~0aPPy(OTn-0$0IujlR1@p5H#rrbLt!F+>xJ<*C0w>LU`;n zl4WbXQu_tsBVduoDuYk+oPg*73HC|5H)d?v>s*@J4&LcU>tmhi}v*up}e_V_R%4&He-Dpo?JGp59o6=?^@6cSbc3&OaoZH5&N7<4IwFtmPtyB-P;HasMlfh zN`lgBNx3naG3DDr{^UAFx#sXiGHd)v^`(1l8ndFeBRvboeIf3_ClBM%9lP+=Z`^^+ z8`opq>eX-ut=Bq`DWGFQzO+GDlA(seO)9GumzEZ>kOX*UrY12tHj3%-@g(3glLWLD zD+jDrw;JY7nrlSTnAQSTfirn z>G@4tU+_lMH&s6|Zpy3>KEG6cb?~=p(t2^3s_xvZ7PR%QLjT3rVBpeQ(7N_A3?~80 zJ%cx-c9c1m|6Y`Hp-scs_24Q7p)pdf>~>@enlT9Cl>MG<0tUh zuRV=>9y*4n4~?W_v>RVr-MLvcnpImf8Nyhv0mM0s;k|<3GDV&~gMnX9^?Dj?5x+{W z4@^2negRKO4*c?KG23?co<&E zq*ciXpWey`6XzwPBYky@meWE>2QZ=kEb_M;bT|_dN9Ap2JwZdJSIp>Q|znp+UglwLrCg(Wnn}c6Q>Hn{UC+ox8AO_Z}QQ zJ%TlTo#<|B_2i1paX1yvZmch#)V>+;^voRg9zTtu_F@=s$u!47oo`{V9;$gnaUVIpv4ag#gEG z(bEfqr+iEGX(}2)TvAqG$=4F{3RB^vk1`i9FC^aBG_R;*a{RHzGX>ZDLDni|5?!F! z;5iKEL(0?6zma~qbKv>_!oh>{>b4ZV=%!1OU{*W!A31}k51+)BZvO^m7v`{K^Cq;n zwE>i;YDKZrLXcO0*XoLeBrPTZt@*jx>Q=+?^o*#*#f7v}rvWYZug-X@mO_bREfjMN z6sJLGalA!B9$cy8->tZETLtImW@>>eqbNw#D~z|S*uV#n;A?rw#qj6|e)o_640ql4 zFuFTi@n`?z4S4m7uY$xm=YyANbvPeoe`7oVvh8a&FX55yIi8r6SOr!cM4kE+443Bni}>JqmT+Sg9;EiAIHWeqQbXb&{`s>H;q2%nUX$4SKwn3c zU&DCOS0u`LoM)*nhn4cnOr~sv2V1=h;eAbV{Yq^s@nuR}YwZcdZGzrQJQUeDy|`T%t9sSG#8IE)uG@rs_oWR{tK zq3BfZ({r=B`q8)f3JhHK9CU2F3NuaJIB;qRPaQgneaDX_{$M;k|D`egm`vrXxuOM_ zV)E{5yPd5q*pLLVwr^OAZR=K}rM?-*j!oe9dk^EQcOS&v43BlzL(e`6YS z%CRX5v(jivT9@?q?ygRJ&nsSmZ`^Sg_8dHforh1MrMV#qWOX4MkBp=*CYz)a*1Nrx zJY43Uj#lhFHiXF}kfo)TrUrb^O_yQQK(AL92yGV#d9~GRL2Ghb!0(F`rypb_b&ant zuMVS0`;PCrLzKxg4#_c8uuJQga zbrBQN4s=$%ssD}i5O=@JX%At%wxlR|vhU~RljN|zUq^lmq77k2xz?O`nTIk!H%bbt z;m|rBAV0uJ_%uW0Mla#vbRhB;wx=_qt1n%TTd%nY#|KA~K-Ov8_t0b5f8Ze2tXYNC zD_5q0AzCq@Ddea3b&OwO*1(Nk?btA+Ls={(6VAEm=`^6_K1rLd&Ptw8Z1V6>TViVH z3Mw{uC{&#qo*BShfC@6m0v5vw2IG@C2|izrrerC`ME5-eg-S$ zhw|mUhU-F>$%uG;Ob}(#bSvSJ+J@uPa1|xVswpjg?bk68{TsC&6k42~*7GEr;rETn zThq^cZ3hmWIGcW?;EJtl0(ePRv~49DqYyr?@~SIs6653Kw0(Olvg?>V0L3~BW%RGL zu|~oJ$THf3GE;yXq#gubIqb~DBF>(i3u?wzV@Wa=@paNJ%BB%S7M;68;i4b*z@!-?tb7X zzVW~jJn+~F96U0Lp|jIz@UywOKK-Cgx*FQ#{O7;C_t1NqN9*x?2<7xX^z8YsUVP=wL)d%t3@%wWkbZR*j5-(=`T&kValdd@qhRufGs-c2 z7?jR@5hPMqPDy-ORtJQ)pdL|I(cH;0*@{w4MuZl~tqvvVT0*;axHjWmdidvh0peC~ z1zss0ZIw(7#`tq=7nmL#nZVv7Cvf@pOL5IrS29HW$+5^@x$-UAlEC-(zwveH^TLCV zK8Br#PU7V77}oZ6S5`W)WiG+|lh~IOywT>bG{b$Ve)Fnc>^pHf8NVuDiEpg0tI6sD zT;F@s6}WuU8jnt(L*vr{g>%<7oTq#Cfp}l?WDuHwK5J%YL|G&EVKCe=JL2>?&+wZ_ zo;Mpt!|3t{ea?h*00e<>+P`Rhnqd`rK={q&;+pb#4%z~`zH0tTa2|m@S8vj<5K6$Y z`=Vh-;v7a0K}#!)McNg$r|)?S?bs*yS=oygxTpSjE{_@fvc&}k#zNyheaFX7-bWTG6e&X#~Z1Y z0G${d!Y{w&t$5&(C(zT`g1>p&58?Y?aeZ`R#oHy?Cf>F2?xp@F_Yc3E{%UYqo>j_o zd?w-tifM8C=P=xFxxl5&kBRcB@n95K?OMZ0^TT@K_Db5arhqS*cR2_X(_tK+EHBM- z$$e`5;ax}Z*i*+6`)^DAU1kRve37rrxR3E9`DPB|>%hoBUC4}$#Ahd{uE z0GB3*UZ(Z$qB4GMqjijEw}J04*_Q{G*w&7i6gqFxeU|s(Z#;mnKlT*5R;8qn0%ot{nBchS}8+j>*F)o`k=6-V4x z4WHhJL#GBYH8YnU?CuU+Zm45#EuFAv>AWmBWu23NINlM#z~3_$i?Ko}6xX66zu6woc0 zotRj!j`1Y$VR*fq_r}ILbapi3&P10Z6Vu59_iE51CoEw{@_C#qt`(2GmFocV+(|q$ z$msCec#`=wdQdf|%e5Nv!r+X5P3co4mf_Z{kLuSdJWD#DZpAV_rE$Q^H@eI@jK8u3 z0#3?PT@~I1m0FTu((7OMTGk*MH$2b(#lq7^wE=e>gZq^ zfF0=WNd1A;FdE%Xq;b(Z6U^piZ7t2%mIQs>nSpL4mYcV_m)$N9{OVh-#OBp~9&Ror z?Gs>j8N{Wf`UvgHa{SQew!BGrYlt=pU3VEx-rU>{4Us!|rV`{0Xqm7L1AkCuDBX_k zqx1SNm|PNFPiCf5oAHc1gW8zH8`m4hr~a~vyl$F3_P`%o2nALks4)SBsSu`88p7od zarr}=-_a!j0ok}D{%I{Pi`?^W6_?@{e(ERj{9A4zpNX#YB7RVwCW|SN=amy@kir&K0B@fh zL2dPxJBYR3z1eI)ee!m-F&QlC8yeC-H=%84XiR%kU0pV~neconLL}9xwJD7IlHlC* zWO}C6!rXkiLToAHqM|CXk9cTFR^CfO(jKfq5NS`Hjq%mBd*31a&L6xJkMDdcJs{Er zuU`G)D^*7$i%k1(-1ft=;<~gxwS0+>+=j!z5cMtGkAT$4uDQP`W2+KgT36=Pug~Fu zaz0Pv!N9LrpPElmc~o)9zUs>hQ&wovcx`-a>;fih!Knf8p~$l-GB=~C!?g!t&M#HpXk^edF0Te;8m zJ2$)E6~@`j`r5(G@xa) zr?42ClG97>D-Vn_IDU2nCzHQZBV!nyoJMnV9WL3@i!Gaau0j z+orDew6A$mK=Y#h%afwf%trF6zv-ps891Go$3UPTIavhD52|TwVite;_YdM5_Z`72 zZrF}nF5OhoRdvp!`NNE+1OtJkB43=sFnm_X6H}xfAZV<>_Ox-JP?qYA(n3+XHQbC) zEr?~~d`i|=%U9+)ydH#dn&Hi%nSQf0J~NAd{L%yH=;_0bhwe-LgrW`Tvm32H_+`$o z965RvZ~MJ>;G>`XO!|SRt!r1{g;!mIHGLh49oKm^shvn|s&PXzYx=C-IA7~lVa+Cg zE{IN7fte`xaVg7ObDIvHGfBG}__hFqvO~jL1s3fJJ`FKZnufvAKI+OWYR|P?R*DYL zt;Wk&eE_}~F`og%HqN-y*k9KSDvtZTVlWZ5-YIK3iWYA_m& zBK;#`N8JAoo*l>G<7csPO)m!eI@w#X;=qwcT}ygjkK2As{+N!btiCMq7d5m_$gipW z50vY(F}v4bi}Gk0<-`bexQgcwgZ-?%uf%KmQjWKubpt zUjAQyA4_cmn46pPFjU5nM$1Z^ySpl7{*RMjo|~2WBlY^ zG|Wz*CkY;{>+i+76@BTds&SQum?@XwA-HXlxuO&J3r4t>KBu{XC6ixAy&A)_?4HZY13i%&&VRsT z3H(WNhv)y|?|d0;$;-+ge$n;mDwdjWa%!^5Jb(=?lAqChdyRct&1Z8p4^ONtyEau6 zR@c0z8NvQEA7*0p%`#}Re53rP@IchmNLS*1UT28r-;TBf8j^ z3Mr+UtgH>G4m3aImBZJ81TW#FpqgD1F@rOnv^Ll11^vZF`j>>9;etZbC1(c|h z)aaA`r3Hq|*kgK#J3o)gK<{drQ<4qQuskEym6BpZ40Fg^Mn~t#=h;SZTZImnf%722 zTEZ8g8weEMVtSJ6nE=ir*d}=@b?Mq+5)XWsF z+cOd|qQxcGyAm(tzJTZs zh+j;CKMTp<;`|&IlYwL*2~sUA%%!WVT)@h0O0gtZvgWY~0jHpB z{xaA(*ROozF1+Or{t%~z&SLAv0le$?-h|t3+$z$dym0hI{($3=>hklEINhT9{7UP$ zTow&Z`$eR_#INLY=(Vg{Bjow@Lj7`0NrsXy14h7TQ+g z*vJHS9Xx_PM~>py>C@>;KL_u=dRJeaSDa6Bfhczlms|0*ab-WYZ&-sXH?POWffZk{1P}cJJ$H!RfP8c=*Ya=~rmCZ&(>`7DH+qh%22q2Na*?%Trtm9ttCA zki*61ZMC^GNm6Tr@LuH4i!|;%fGWBOEY0M3l7BT44wL_pDSS{@x{=yW(gml_<#zpg z$ARNmy>bb89Y0)bJPvia zIh54q6z_b}10UUe4FCJxU&hz&-;;FKMO<~+HvG&_{y1Lv+*{J~A<7tGk(@EUODT+i z08?V@e zzkmCWV9SPnwGPdrylL_-7Y;RezjsM}FxCdK{#7a0w;z`2_si*`cOK~us`Jf zRl}>=G|tWEg!i#Cy!;fiY0j%;LopoMJqq9{wKD!ePCgF5epnWhEx$GhKI*{g6{T4J zS#I0s{K+dP4dE`|fTZ^|csTw05NB-6)BRMAFKlCXF?e7a6T^!rlR{}^dkxDiPM#gZ zkN&T}$Jy~IyyPd}g4I_%AE(cpeg;-soiDx%f#br_KED-Pu@-w~lY6l>KRtoTGeO9rt4t$?Y#`ejX+4SJ~)1%`!H9Cf| z=_$C=5LWcH;L@%AxOihXF5S|H-tHDOH#fkjUVpnF!`v*dYzI}BGgQ9UO zFr|!^#vhf9$yv5lwXxp7moea>3K-M55g6cG05cpSeMn;y3t=ix>!{6im`0uLp2#x-Z#2^2nq3&EI(&?zs29G_SX#6)(MZ8!p?pIz4PX zc+RL+*KD+?*Ty+woO9fa7v8o(eM*DivQpn5d9bo98Ded#s#W-=3{l&6XWAbfS*p#9 z>QM2dbRLw`4z*gjtK5@T1)W#B-!;8;NZvh&Lx9&ttRG3n&SfvtrkWpt;PXVCbKC~u z_C%IPaY}8Peua>i8)OQFr$8g~P6U)i)C4c>ARu>XRWS-3shlg?2=om3vkZpQ&>GA@ zmO;KYHCzbrnV=r$Icqu1C?W7Gu~Ozn6)dr@%rz&8e2E6#3Q?sw~hyn;!C%G z1H1R`!Iq0IO5SvJBU{O&b^ylTa`YPPFNQoI(KZB=6`*n&Z!QFl4=dA-bzp4}2yD$D zcU^|HL6vSTKe-9`kPI|QZrSl)zUzJX+xLASeK7ce@4g=I`GYs52leOtn!whnjc7KT zTb)Q+fRtIa5qM3vnqGloTawx@CU2ScLSp@iv$GapS z?~h^sE9+y8$cJPjh~ScvY+G^-S#J^zy?=0B_;AL9$$2v(O-aA8{-%vJR)wdv!a4>r zKVW=GeT&+Wgj3>4mofj}3U$)eSI6cAi;X8!DnAdEyWbCd`5xT)M{Rv2)L9-1*>9eBqA$cx1;QP7Y3DW_A%R&F<{ax^!-rH%C=>wb%1TVJ!A&C3_Md zzWVDq1Fb$UWAu&YU2@pgmPV{z*^Y1AcNBY$4&myH)}|}l0A&tfVm`~y=PYCoY_8B2 z)uZ&8S~y>t@26^v&X0_IO=+gThCK8V*ifs;SBP*tqyp6umrF{TpO4MEYy?+LCUPIl z$xUcE8lUcnkTrc>_{L*<@S+#K02|h?N2qRaKWO+z?bY!Y$VUFR$<$!q)PIhM-b;E9cms z*7LP?H$r*PepP~j{g{vrrAKklDsENP_zbms!|<@#BV%4ZHiFOmfW%#)snOK@0$(L5 z*(w685~Z+AYI8{U#Fn_F8UZH-tno~JiWTgK$jRHNx`j}746Kf5Wc&mS$;hM$q=7O> zDDZ$_h(aC7_$Ukz$|_w0aswE|hvmGk35M3%q2a7f%rSF1MGjk&M>0%_mQ)uCz3kde zzAoFk8n1crRY{O!5l`$rjy+Ew!soyIH9URrAXX0aqra~|-PfB1v&07GvM_<_$h|kf z^Spq|40jGlgFYF2ZIVHe1vv5xNk=go)odA6x*lvgSuipl+KEZ$&vYi)`OulO`0YRV zLwxKr|CZkW%nv>vZ~2+;MqgJOB>p8Emy_|XdVsaa!DVHQxMMc{_3(THoeL zt8?~v<;#OUBnX6IxjLtzo#&_NjZRGCe}DM%>7m} z$u}B+iD!F38^)hDub^{nZ>5V7e6fl9c+VOLJ|i&g@oxNl53dRN&19wUswGPF7(2Wk zP1&BIQ0m%Iqg?hEaKrnT9g5wROn#0l}YN&eO?TkwY0y%v`yzh};# z#qpDa*qsEjb|rs3h?{bObUn3{#?GiZDytC2r@a_#|$y|KboTXPb?YA}JtsBJ*)-^BY&oxp`h z$N1%vo;{wJE+jb1_)DM587;|o7=kqV6+#oRz|BZ;;z8XIHoKztm1`?f)UWeensOx> zbT^{Igfhq-jq?G-WeIabT1LPZ!ursXQKR5qk~zyq0iHB38IkUIct8H+yJAp`2;I85G_8Ccj-OvW2ic0liI&>_n~;9!xI50_Qr`==e}FuSj-DW}b>{ z2ape_*Kh&l?3O0pMsa>Z{QfLKPg=WC4qbAqua51R_6}E-l4OOsj^vHAo(>ZS{kaEr z;H~fbcrrt5#1FsygXmhh9tRE_OwUu4x5p7#t6S*KeJfp2i#~fPCc`)9aCd1Gcy^OJ z8*P4S9AhWBGi#-RSRaK~Gn6I=8E=){=PB zynGoCz`YHJ*E}c}&M4)1nL7*Xm)`o7yyA=#suXz;H3)3 zw;cw2u=cOjiL{|xRr#JTJ%Io5>%WGd{?9*|e)K8q3wbNZK0bu2F;2eZS-Gv=8+iTO zZ7Uob8^bs5ybJID;D>PEgAXNkekS!HF3{#aTCjE93T#=kB0T`!1-G@{2&!Mrwy1)I zx;z=8Xx<075%K37o)(=SU0B4z!cwCD1x&dwzt1nE0ci){m;~WFTbj|*+=#~H<$!zc zsnLR9|C)UUJ}e_h(D&-Xw%UW%@{4gWY|4` zNC)%J-SGL%>2jm6Km;Qof1yb_o5bf@=!0tK10ZOT*YPzeo4?O-U}WAsU4J3-LM8LD zP+da3c7dy}-M0sS_pf*1o=5j%W_BTs_;2633E!UtvR?k87oxYjE5)A6Z?3eWWPs5c(mC&oX`k09KFkN3*Es@%ZsObCK<6!Hdb6 zIlSw=@54X->&GxPJ&ScKd+^qu`yTwzD{si1P6_rU3*h!8^>0LQhj^smB3;X%^8)a` zAo~rOZ_1m`xzyi{pq-e1it%j}xIE9NB@d8N-LRihUt&FN`*m}8-$!uY%=z=>%l)un z^?81nWEgIbS{~02%YFPYn=lH0mbFY=m)Xj;*!UpZ9Y{?u_%QfZE;ujK;5L-^I&M3F zRcxB-HM`E`MU;<_AJq7W_bpz7)}rO^rVwVr-qc#NlrWj!MS zH=CZFH9K|&6GMkFc48ll_9vs3~KmTc5e9>n3ipdaHD}axxApJn7B66UOR+VkQ?tHG( zLuc@%uY48%_JuFvfrlQ(v6H7#sD|X3tiQVr7q1?`6`NLJZGU%~mto-ad5@y9bDaw+ z4mlNU0ut_ON@W>Id{HvC9zQdNv8kE#Y{~KD*KL(tT(l|7A`RvNX`tPGM584MUb((~ z$+`h-U%xU9<^_q^l$e-c<19U&%b4ig^WJ3qgKN1r;1kACqHeDW)g4+wjVly)->5t0jq$XGx3ZN83g*`dAwTbv552I0y}g*x`Wkyj3&2w?hzcGkI&E z)=gTLu=A4UBV}jt{#b z-dLY6n~H2X=66tnW|3bq5qJ#;3hvAFQyZzHwW-#|W&E`bYK3)TNzxq{j-oPpFX5I` zXvamkw6b$anmtr##8)#~$o)*lh1!+YFC`jK^J8O{v?4YxD{y{&l*7_G)8h*`v1i7s zQ-u{74CEmCWFaD|D!&T3HS-O32aA*kUpJZ+Vs8Yce9hY2RnlW7X z^h~bIDvw(p+bT)7isj)FtZHcy^D~o}9zK}{v?h-4!|dsUXvGXx_w-=>ir(ZwtQ#H4 zys55iFiT^#qzLZ8aA9#VeKF<^gdd%l!I_DP|Kge||jCYbXBmD{e_1 zb{oOxa@uN;7)7$N^ z&sZIfKU+xSMlF$s77v#v8MOUeKl#)>Phi#NOYpBB`T*)p9rO;SS&?L;jAOCik{N@c zU7>=buD$^a3-fsVvB&VC4}S!o`poBXjp(k6hT(=#}D@+_V@GKj-NBN(5a@!*}DZOzSSZ|_8Ze-Bo#T#1V= z+LZXA_QYQ;;NZc-IB@V#I`)nx{>rV^a>=d6a)GQDUbQ7Xzl_uOY?bqz={EUYSg<%T zQvF)J=pAybd6R{Hj5cRJpQ_}h=S}xizCa7e9*y1unwNvTT1)5`(k>rPQ|eOzL4~jE zrjGE!gP5@%kiujEEUH3D0Y!;)8&DEa2LZ$#e<7_3_^w8Ibd_hQ@Di}Adh zZ@}|zxd|6-+Ki^^*0wV3s`6TLkPdLV|LWj7V*!_kH@h+U;GVwvGI@V8V(%09$Og=6 zS&oa;$+lMpyjYw%eFh)@+~@J$5Bv*8#wM_;uM_|24Y%T_zW=#cnOui;;<{XJUy$kv zzD%`oAl^?UC#dxwey{lg$vNtB%l(emi}4xb$uHAaN=h`Pa&^!_?(?OMo9KV#G(+Zsg_v=!-$h6`wN4Wm1#{+L>f!znO`ReE5Rlo3u zXl!o9*!Xxlk#--{SX!#Ak62!yrhHqJ#~0!{-@wiBF*ENDh*?5cXLIs!*?}#ada!Ds9h=s7Va-4XTAJ(8 zocy`KmaK{*Z;P-ztH+m`N1AJDdLDoDH}~WAdk*9BjjQnkw_O{obn_@?^ForT`G3*h z5#ZX~(||qPm$NVJ>uVlQ1+GIJzXkF|aN3v~v{)dkU!NvJE~M>!Vn8HodaIA)noL1E zGWiU&Ia`IF;qhs__lx)8#+z=!Kfe3#(ACvdmAN{j3xq5?qmbYzJWpDqSMuE$wEL;2 z@cA!%37`4=7qDmF)5#b$Q5&1ws-^y}cC75_#HN8BY*^Wg&ej&x*BdmX+lTAG7tKmv z&D7==?$@oHT1bLQbIG4uO*J+-gR>KpIB{kSr^hCf>*h8LVeiii5zQEwst-wTe zQlHVN1*(4TaKGA}L17hr*XsM(;V#5`Sgj%kUGE zMboKOaOTP13{hk_h~(>CO0UOTEtVHG!lYniY#Mhx@-*J}iTiN-{d+JsznD7qj`lWe zy=WtDd){;Ks+YYK8`rK&@GPls7`1kc*`3T+wVW!20c!2S2V*cevCZ9oZhRmwW`fV! zLfSgS_^si!>05wLeg5+V+MF(QO#SY*D zp0qvD$Ely`#o^-PLJ{9(>%|7zBHsY9JT9M9ABg*vvi4HeKI}P^#rjf(Rw%awM^miL z!SYmIl8cF<1q>dVhFw-qkT{gA-RI@wcRh@E{L^QF+cK z!Q;up{`B;8?SbK&k&0JY#o)@|<&m<3}F39Bq zTyC{WXL}RYuI|A48OA5&n?Kld+I;>l;p2Qj;mKV;^7JwM+XFlCUw-1p@rUpH zeL}m)nwZqp%Nohr1*_-TzSycY7{0~ZeQ3gsNjsi+0uMj@2%gxv3;XvU#G#`{aN^`3 zCa0!Sco$^uYHdbmTMK&K>MVD*R8vEGPG4I~6B_I5kbg|0GD2n?E~bYSCH}yjQ#CV> z>G^rgBmwWU6H^#Y{wAi90C?gjmX<2KyRD2aD7A6@dfasVb-4bzYjJ(@d+D}I(AL(5 zr6j0ttuz~xbV8F!53+aiz3V;i!$&^x2^>!XTdR{G-K%fC66*)Lkstk#w+Ka`G>UqSV3IDtRU@3}+Vi5Wv$?k_5Z<#X5y3%|@9 zbY4fqa$L8xmh7Gy)buFKtCE*WoN_s5f)8|Dxmjwc!e%kr;$#iSs*B{uI zT%SmnrKexxNu1(sx88`CzvRW~r(svFSdj!_8o^JL;mp+zR%eDzY3Iv~L;K`sXmOp@ zY*KyYBek1?cBBVDD)+j+WuH*Fi?0}ooiP;mDL^?VFDGrV zllvE^0fnw~P2n`2HC+C^&oewe!fnRf#$tW1$OiNLa$DDmaF%Z;2`0YnPlJ(?9EA5d zlg1j=-yqf({BbDs0b%<}GKcmOKPwXg4?y{L2>Hy@{M-_bJvE&?_-nlRDYV1PW@UKF z!A$bN{=@J18yq}!7F({pEnR(8*U$jDicMZN%wsAEVofFiE%)mlBq~LkHAq~RNoC-R zVZz{)ErG)i!LBRerYco1#% zOXzEBPS4F+)7Ojc_SSS|d%dYVyy2N@hLYkfEG}Vg!3DPF(uY@f#+Ey4>-6{p#wMpQ zzqE+i*{?BAZpMFwk4WX&RSgsL|IX%zo2hz+3Vx9|Tx$BwPIh+|9!qMZ$ao_z9 z;?c);;PEG)z~Ip7^nmzmD;`x-%CVvI1nL7T^4cZK+Q6Va3Ap$5^`XDF7ng6}hBa%~ z;_54}z!jHYj&*C-prf-R#ck~pVl#${|ISn(%y6>&s%~6>edo@dc+1<~j<4K)N4jP5 zbc1W4U%xqRiiajUTQ9U8*t@7jq^eED(gIXIX^ z>E}|1w4$dgU6u8+7d;=BZQGW9#jwF`Gqn1|ptK!F>ecQwL#gI@a27E!RX(J?#qHZU zQ5Vslo|(q(y-(vyU%MT*-*q1j9yy*)kUNqI>uX+o6@KAOFT@pFSLe%>2}VG-UrA>% zyD5UxQc?XdNiL7~Dc+y_I4m^6&^N8TZK2$2d0G0*eUIU-@BKJhI=b+IM>azBGb zyMTcetyq@?wJzS&gSD$V(sQ=l;qh(@VpC&%dR9zGg!OKZHuHYf2iq@x{Q&;gU*C(S z2X?nT?h6m?#^Z+u@!r4vE4=zuudD`P;1gpM zv{$gfO8~NT%nQDIr_gIjvI==LbYC@ef$zyA$UL3&#S=+T>&)4+IC=6E4jn#>h&o2dX3$(Z|#zx*rs$j3jGZkha{7hR8)-5nyd6dXQ2l8oI8 zMX%`SM{WQ_;r!QSE4vI@n}{7m_zCPCISJJw1ew&;q>N?ld^l|@BE>E70jv9^fEEp4 z6{S$k@;%MdaA+`PoM3JQHrnlgVl$4NGvnj(HJ+E{e4qp`^j@Q>IZS>pId!QHBKRcp zl5}6(9yDpz$x{wTaZF6krYo~P_T|U$)%%{p!DDCAuNb8rgp@V*S2) zkDf@E-@8F;RevX5|FUcFQ*V4OwruE6^i-$Xpr3pQ`rWYDim_Ne=fA8THTgB2R5;f9 zq+CZ@B`EO$50CF>G@iq}khh{f9ODHg>j33!PSbIPMz|G{*Uii1K3v4px$q6dbSV2V zFgOVZ7@UM7v_1L0jEsozpwZXp#^@Kd6Xykp*{SanfcSVT;g)EG62$B3_4Ru5GfOzK za|+MK;-Bf{rOWsK{{O|X(<8X##+Tx|fA;rLpF9LFH@SxZ_aN`K7iQZG-NV7NA_Ph2 ze~^0Bdf4ixXMQDCQBPTJy-1CSJm)9t@_F%-`?6v30695=si7knA3TVuQ~R(mF^o1d zkG}SnbamE1S0{RsfL2rTkm(12zWK>X@9f@fLmZi$OwYtQab^T(lfc&W{9MwvYKVqMbdHbbFNs{)r8rk${0DflJR&<7 z90(qXM+qLRF5Nk1s`RpJ_qPODua?%Y$<8t?qH{a%eA=u4a(la9XS<)eX9vcY>hZz% zy&KnEb4@LXC9fC~loMbrvYN6M62qm}H|{G8w#vWrGf97OGSSdWYD395mK|>HKA@M@ zGnIO71*LnYOIK#mGphotljM=g!拫W!ZIVCmrXR=G@4OpVU$ho)eEu~#Woja< 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

dMh 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�N?1m^o)bvl%g-z? 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 AKL7v# literal 0 HcmV?d00001 diff --git a/lib/assets/wordmark.light.css b/lib/assets/wordmark.light.css new file mode 100644 index 000000000..9a601f972 --- /dev/null +++ b/lib/assets/wordmark.light.css @@ -0,0 +1 @@ +use { color: #000 !important; } diff --git a/lib/assets/wordmark.light.png b/lib/assets/wordmark.light.png new file mode 100644 index 0000000000000000000000000000000000000000..50bbb6bd37fe47541b3dc3479c9be6344e324082 GIT binary patch literal 8576 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 m^IBcr{r6(MsTIbYy_T! literal 0 HcmV?d00001 diff --git a/lib/tasks/branding.rake b/lib/tasks/branding.rake new file mode 100644 index 000000000..d513465ed --- /dev/null +++ b/lib/tasks/branding.rake @@ -0,0 +1,78 @@ +namespace :branding do + desc 'Generate necessary graphic assets for branding from source SVG files' + task generate: :environment do + Rake::Task['branding:generate_app_icons'].invoke + Rake::Task['branding:generate_app_badge'].invoke + Rake::Task['branding:generate_github_assets'].invoke + Rake::Task['branding:generate_mailer_assets'].invoke + end + + desc 'Generate PNG icons and logos for e-mail templates' + task generate_mailer_assets: :environment do + rsvg_convert = Terrapin::CommandLine.new('rsvg-convert', '-w :w -h :h :input -o :output') + output_dest = Rails.root.join('app', 'javascript', 'images', 'mailer') + + # Displayed size is 64px, at 3x it's 192px + Dir[Rails.root.join('app', 'javascript', 'images', 'icons', '*.svg')].each do |path| + rsvg_convert.run(input: path, w: 192, h: 192, output: output_dest.join("#{File.basename(path, '.svg')}.png")) + end + + # Displayed size is 34px, at 3x it's 102px + rsvg_convert.run(input: Rails.root.join('app', 'javascript', 'images', 'logo-symbol-wordmark.svg'), w: (102 * (261.0 / 66)).ceil, h: 102, output: output_dest.join('wordmark.png')) + + # Displayed size is 24px, at 3x it's 72px + rsvg_convert.run(input: Rails.root.join('app', 'javascript', 'images', 'logo-symbol-icon.svg'), w: (72 * (79.0 / 75)).ceil, h: 72, output: output_dest.join('logo.png')) + end + + desc 'Generate light/dark logotypes for GitHub' + task generate_github_assets: :environment do + rsvg_convert = Terrapin::CommandLine.new('rsvg-convert', '--stylesheet :stylesheet -w :w -h :h :input -o :output') + output_dest = Rails.root.join('lib', 'assets') + + rsvg_convert.run(stylesheet: Rails.root.join('lib', 'assets', 'wordmark.dark.css'), input: Rails.root.join('app', 'javascript', 'images', 'logo-symbol-wordmark.svg'), w: (102 * (261.0 / 66)).ceil, h: 102, output: output_dest.join('wordmark.dark.png')) + rsvg_convert.run(stylesheet: Rails.root.join('lib', 'assets', 'wordmark.light.css'), input: Rails.root.join('app', 'javascript', 'images', 'logo-symbol-wordmark.svg'), w: (102 * (261.0 / 66)).ceil, h: 102, output: output_dest.join('wordmark.light.png')) + end + + desc 'Generate favicons and app icons from SVG source files' + task generate_app_icons: :environment do + favicon_source = Rails.root.join('app', 'javascript', 'images', 'logo.svg') + app_icon_source = Rails.root.join('app', 'javascript', 'images', 'app-icon.svg') + output_dest = Rails.root.join('app', 'javascript', 'icons') + + rsvg_convert = Terrapin::CommandLine.new('rsvg-convert', '-w :size -h :size :input -o :output') + convert = Terrapin::CommandLine.new('convert', ':input :output') + + favicon_sizes = [16, 32, 48] + apple_icon_sizes = [57, 60, 72, 76, 114, 120, 144, 152, 167, 180, 1024] + android_icon_sizes = [36, 48, 72, 96, 144, 192, 256, 384, 512] + + favicons = [] + + favicon_sizes.each do |size| + output_path = output_dest.join("favicon-#{size}x#{size}.png") + favicons << output_path + rsvg_convert.run(size: size, input: favicon_source, output: output_path) + end + + convert.run(input: favicons, output: Rails.root.join('public', 'favicon.ico')) + + apple_icon_sizes.each do |size| + rsvg_convert.run(size: size, input: app_icon_source, output: output_dest.join("apple-touch-icon-#{size}x#{size}.png")) + end + + android_icon_sizes.each do |size| + rsvg_convert.run(size: size, input: app_icon_source, output: output_dest.join("android-chrome-#{size}x#{size}.png")) + end + end + + desc 'Generate badge icon from SVG source files' + task generate_app_badge: :environment do + rsvg_convert = Terrapin::CommandLine.new('rsvg-convert', '--stylesheet :stylesheet -w :w -h :h :input -o :output') + badge_source = Rails.root.join('app', 'javascript', 'images', 'logo-symbol-icon.svg') + source_ratio = 79.0 / 75 + output_dest = Rails.root.join('public') + stylesheet = Rails.root.join('lib', 'assets', 'wordmark.light.css') + + rsvg_convert.run(stylesheet: stylesheet, input: badge_source, w: (192 * source_ratio).ceil, h: 192, output: output_dest.join('badge.png')) + end +end diff --git a/public/android-chrome-192x192.png b/public/android-chrome-192x192.png deleted file mode 100644 index 7a99a19641acd1558c8416b16c16a814fd953491..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13534 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 diff --git a/public/badge.png b/public/badge.png index c3e99ddd431b98964e14e1ee98ac53ce6835918f..0449e92921efc08cb7c8ef102ca6fd0eb0d95141 100644 GIT binary patch literal 4248 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 Y2dEt%3$*UUt^fc407*qoM6N<$f`-O1%>V!Z diff --git a/public/browserconfig.xml b/public/browserconfig.xml deleted file mode 100644 index 7fdab5058..000000000 --- a/public/browserconfig.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - #282c37 - - - diff --git a/public/favicon-dev.ico b/public/favicon-dev.ico deleted file mode 100644 index 3836044068bad645ea04b01041f4712d52d8f32e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9086 zcmdT~TWl3Y7@k@#1(8Y#cPK60La}l&NK}Z%TT~R|1ByII0wgBrlP{V^jWj-}P!gl@ zL4j8dsEG*}z{DoSOO2+dL$8!uQ$WDhmR6t_+S2j+cF%6-?CzYNb6TKX^7Wtj=b!)o zcFw;uv$F`1hJVXe3jECx+w+8&DTF8hmH}G;>QlNbIoQprN)wjM0Hy$ofLDQ!fgb<~ zTn4&;{wO*i&j6*s=fD<`FD*#+AMZKVV|dCG3c4Tqx8(i6HsCv;8BoJOBl>;{JO+$Q zfnEGAmMnzdFMz*+;qVOW+X2mM4dnIu{)x!w@N9UonG!?q6C0jw2^BGZhKEIAc64*_oi2Y`B`Z6XbW zjumI($eZQzbdJ^B{`RI-ZF92^;clG#`Evqv!@uM zpxZC08p1fF+3j!1=fQ(qbZ(~dJFw$DhB&-UDrXM8MWz?geH5bAb84LLfJa9LQ{79xxNg0`37O0>PZlJMOtR7A*M!`kL~MW5Bn-XTaOQCg2fZMhr(&?m2m}3--GI zcx87VK^f03*|tmY$9vfgJm7H;j(6H zqovIJ+8jeTA9JH63q~nlecYJ$6Pz)wB$uD#&T|M?NiIwH>i=|Oh5FeUyL``%$fIbAJ8zyIBx*oizCW;eng1{8dwi|rjQ#c zjx*Q#@ck$9De2t6Gyld17u4(To%g`H2%8I1=gfEN&d_m4h4Z|Ko|;}+Kp%*aI_K}< zt1sY>zvbxV{0sPU{s@l4=;d4!%6D{+^Z7Bzndc^BEjO-#v;Q5)$?a6~IomLAaK83G zGpWxTz3>&j-#2h>Ywx%BG=a4n9HuO<^5!?aa5wZ}_S_q_wa2dA)mXddV9#LKZ}8rk z7vvor2XM}Muv*FbENE zXXZutyC{5e{rauqy5FrT+1sqf`S*)hH_Byaz?O>g%1-59SJ;2|zLtPJPuHt&4z+tmwC}z#5YzALgY7CGcH9rJ zAN%_+_S>_+RSCp3@TLAN@T0LEzvq*izM5Yh<97%f*~^N~C*T<%pxyDr+&&#R@a zPYr~-v*SF0c!4~M9q%LHyTiztzt6%-b>!Gpf9SaNl6}oe%!w$8q>N?~&m1sK@`g{F<7$6z_8G^8+~n^-}2LU3^BTudWG=>*LjeI?ws|UFsuW zTd+TQ0Gr-wQb&<1^{2bl$;KX42YIlxL%p=UQ3=!j9(uOZj`nUp<{bUmW9!~${ITP= zJ?A@}C0C%#bv(#b*U>N6w3&FWQO@A|cP@0ZP+#DifAxMWvz>OZxBJl-{m@@xd|SZ} zUqPdnCGSH0lOZ|lJQ&A?t{goMrRP z!`T-v_uSF>Cd@Nc{r>KBne&4c!_%$=cvp@R-V!|U1z+Q5SF}Igcvnq@Z81=Nhq&|o ziEBru&CcbeQH?2D+P4f#=Ahp?U?;$D5BPz$BC?;p{cV!vtxUVM4hlS{%#QpYA;t$7{> diff --git a/public/favicon.ico b/public/favicon.ico index 79000c9cc43c2044b5ab5129202e993aa2cf70af..ccccbfc1cb77566dcf70d5f6f5ae292842a49b1c 100644 GIT binary patch literal 15086 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 literal 9086 zcmdT~TWl0n7@k@cG)M&lYBb2LS}E-=pg}YN6Ql8#Xi^J4Xdomcrcb`8#F(&9=oX4f z4JP6(L5&JXjF*5sm=y7n618-<+fqs|SPBISmX@WrWsl!?c4v1kXU4ryphLd?=ltit zd~@cXGqY#Vv>f~^@@n`yU3+DgrcKo}tpF$jRshszax_#TX#8lbEY3lHJTL*62`mHr zz_&mha1yu(MB?a$JPP~_ya%iZReEPb(*FiMF4}rCD`||w_`qCXC9n%P1&A!r2H$sq z#lZDh5mh)NW+AW@I1XgPQ{@{*%-a=d(^esl^nok|IssL_%c1LQtn}WNHbIMnf$xee zxpEHA0IZ{b9b%n_ew>9uMqR{t)***#ZUGsu z99YLkQsn#>?562qa9`!3e=~3^Fa@|1xEr_!m=VWx$Z5b`z*Jx|a0@Ul==a)cI^_50 z;Tp8-^Js?r^R?W4eBz)Qeez(>Fyfak+|lk3;&TRTs8yqbb@H>&4h%G*Y$TG-5jH39|ae# z1z!Vv-P0fweB=E*=pw*qamXev>+5AB;ZQ{}&!ONN1to39wJS zop;8Z`I|aykB56Z1I~f+`%JZ|cc{1L$e8mth&5u5mnr80ou)|!$_p+h=U>2=>xVsN zM)Q0{I0uz{c@Ebu=YPf^XYQMfwc6+hXX|gESZzDh#)!*vFt~n>>E6>jT(9ldGq!Gw zr2iZoMlALFJ~$s%J-Y{b-*jY`1;B+{Piep-^<}D6`p8(Xq2kaNLv!=g{`Wa+^K#F|P|} z)`i1wQOt|KNQ95q+2Z!pZpZuL0uu+W!Qrle&6bMr@p@rhqv_vsaJ$Vu+*v0YD?yjj8&F?=cuj7$z&xzj9-lPreqa#BmzuwRuK|5Y| z`qAHZz>oQu*K|$HbIU*O&*~W(Zy2UAQqO=~;UNHx> zW1jXeSJ~^x%y}>Pu5seb`;5H%TYt5tcJ24nekKCz@&#)souj|?K%B2*U2y)_0o)UI zz7|+Nnzk$!!{<+?lz!l3NY*;v+|H1ed^tga96!x{Qu*C@zVhJ`MCF00l52ceFZwddqecM{f6I(tzzhG zhZsE5D*9S##IfD4ih%Oj;gx!h(~kDi5B`k9cyjHwt=~#M{I(~*(?NOwKF8g8v%bNr ze(fwdmyP`WjT#7`&u5^UKgVfDd+CQ*j1zlC>et0Je-Gj(Ho?%o4ybg?X&;Ntd$JB( z^BK-3Q$O!UaLA4A*TuFV(VqnTY3G(Imr=Fj9`R)I4fzv%+2uaiOn`f;hIzT_ZLSZq z*!qCLRpQRyPkeUdx$#Z%PJYXP&vf7^ zfc4LB5`(~K%>NMLa^Ifc8<=lKl22l(&{ay=WcVgY1H|AO&hG)-E6WE;fYku^Cw~BH zffj(ZcLCu0t^S_NKJ^?w2+*E>^nU>;02r6?6aPnoc>`6+Z=>w%hp5qV#h|7MC@7 diff --git a/public/mstile-150x150.png b/public/mstile-150x150.png deleted file mode 100644 index a4994062de166baf39263f4505ace305e31a3770..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4523 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 Z`ai>UH@>A_0vG@Q002ovPDHLkV1n|Rqn-c& diff --git a/public/shortcuts/notifications.png b/public/shortcuts/notifications.png deleted file mode 100644 index 6b9d45718c82784e5c3380dcc9e4cd3fadb9e9b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3067 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 diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb index b9d38d8c6..20ee32aa0 100644 --- a/spec/helpers/application_helper_spec.rb +++ b/spec/helpers/application_helper_spec.rb @@ -59,13 +59,6 @@ describe ApplicationHelper do end end - describe 'favicon_path' do - it 'returns /favicon.ico on production environment' do - expect(Rails.env).to receive(:production?).and_return(true) - expect(helper.favicon_path).to eq '/favicon.ico' - end - end - describe 'open_registrations?' do it 'returns true when open for registrations' do without_partial_double_verification do From 37cd984acfdd206e85c50a851c4daedc2c87deb3 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 10 Jun 2022 17:34:59 +0200 Subject: [PATCH 142/652] Fix logo gradient not working on some Safari and Blink-based browsers (#18634) Works around https://bugs.chromium.org/p/chromium/issues/detail?id=258029 --- app/javascript/styles/mastodon/basics.scss | 12 +++++++++++- app/views/layouts/application.html.haml | 2 +- app/views/layouts/embedded.html.haml | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/app/javascript/styles/mastodon/basics.scss b/app/javascript/styles/mastodon/basics.scss index 391f1fad9..413a1cdd6 100644 --- a/app/javascript/styles/mastodon/basics.scss +++ b/app/javascript/styles/mastodon/basics.scss @@ -256,7 +256,17 @@ button { } .logo-resources { - display: none; + // Not using display: none because of https://bugs.chromium.org/p/chromium/issues/detail?id=258029 + visibility: hidden; + user-select: none; + pointer-events: none; + width: 0; + height: 0; + overflow: hidden; + position: absolute; + top: 0; + left: 0; + z-index: -1000; } // NoScript adds a __ns__pop2top class to the full ancestry of blocked elements, diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 1501c2b97..25fd5bc34 100755 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -43,6 +43,6 @@ %body{ class: body_classes } = content_for?(:content) ? yield(:content) : yield - .logo-resources + .logo-resources{ 'tabindex' => '-1', 'inert' => true, 'aria-hidden' => true } = render_symbol :icon = render_symbol :wordmark diff --git a/app/views/layouts/embedded.html.haml b/app/views/layouts/embedded.html.haml index 6c6730ef2..e74bff9cc 100644 --- a/app/views/layouts/embedded.html.haml +++ b/app/views/layouts/embedded.html.haml @@ -20,5 +20,5 @@ %body.embed = yield - .logo-resources + .logo-resources{ 'tabindex' => '-1', 'inert' => true, 'aria-hidden' => true } = render_symbol :icon From f09a66b9a741515532a1bfa0f2c3af08d9cc84b6 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Fri, 10 Jun 2022 17:37:25 +0200 Subject: [PATCH 143/652] Typo in path to mastodon logo in README.md (#18632) Less ass, more assets. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index eade19ef8..d47bb7ab4 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@

- Mastodon + Mastodon

[![GitHub release](https://img.shields.io/github/release/mastodon/mastodon.svg)][releases] From f88d1db904927adfb46fe82fe302143d10ebabc1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 11 Jun 2022 21:53:52 +0900 Subject: [PATCH 144/652] Bump rubocop from 1.30.0 to 1.30.1 (#18613) Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.30.0 to 1.30.1. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.30.0...v1.30.1) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index d42b0cb33..82cd36124 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -568,7 +568,7 @@ GEM rspec-support (3.11.0) rspec_junit_formatter (0.5.1) rspec-core (>= 2, < 4, != 2.12.0) - rubocop (1.30.0) + rubocop (1.30.1) parallel (~> 1.10) parser (>= 3.1.0.0) rainbow (>= 2.2.2, < 4.0) From 2d818d9c979abeaec62be2479b3f157f1e59542a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 11 Jun 2022 21:54:45 +0900 Subject: [PATCH 145/652] Bump bootsnap from 1.11.1 to 1.12.0 (#18575) Bumps [bootsnap](https://github.com/Shopify/bootsnap) from 1.11.1 to 1.12.0. - [Release notes](https://github.com/Shopify/bootsnap/releases) - [Changelog](https://github.com/Shopify/bootsnap/blob/main/CHANGELOG.md) - [Commits](https://github.com/Shopify/bootsnap/compare/v1.11.1...v1.12.0) --- updated-dependencies: - dependency-name: bootsnap dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index 778036a29..e0005faba 100644 --- a/Gemfile +++ b/Gemfile @@ -26,7 +26,7 @@ gem 'blurhash', '~> 0.1' gem 'active_model_serializers', '~> 0.10' gem 'addressable', '~> 2.8' -gem 'bootsnap', '~> 1.11.1', require: false +gem 'bootsnap', '~> 1.12.0', require: false gem 'browser' gem 'charlock_holmes', '~> 0.7.7' gem 'chewy', '~> 7.2' diff --git a/Gemfile.lock b/Gemfile.lock index 82cd36124..e5b665a8a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -114,7 +114,7 @@ GEM debug_inspector (>= 0.0.1) blurhash (0.1.6) ffi (~> 1.14) - bootsnap (1.11.1) + bootsnap (1.12.0) msgpack (~> 1.2) brakeman (5.2.3) browser (4.2.0) @@ -396,7 +396,7 @@ GEM mini_mime (1.1.2) mini_portile2 (2.8.0) minitest (5.15.0) - msgpack (1.5.1) + msgpack (1.5.2) multi_json (1.15.0) multipart-post (2.1.1) net-ldap (0.17.0) @@ -733,7 +733,7 @@ DEPENDENCIES better_errors (~> 2.9) binding_of_caller (~> 1.0) blurhash (~> 0.1) - bootsnap (~> 1.11.1) + bootsnap (~> 1.12.0) brakeman (~> 5.2) browser bullet (~> 7.0) From 32c83d76a08be9fcfe6920586a382d3ebb7e2069 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 11 Jun 2022 21:55:17 +0900 Subject: [PATCH 146/652] Bump sass from 1.52.1 to 1.52.2 (#18616) Bumps [sass](https://github.com/sass/dart-sass) from 1.52.1 to 1.52.2. - [Release notes](https://github.com/sass/dart-sass/releases) - [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md) - [Commits](https://github.com/sass/dart-sass/compare/1.52.1...1.52.2) --- updated-dependencies: - dependency-name: sass dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 21 ++++++++------------- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index b92123549..c4e51e5a0 100644 --- a/package.json +++ b/package.json @@ -117,7 +117,7 @@ "requestidlecallback": "^0.3.0", "reselect": "^4.1.5", "rimraf": "^3.0.2", - "sass": "^1.52.1", + "sass": "^1.52.2", "sass-loader": "^10.2.0", "stacktrace-js": "^2.0.2", "stringz": "^2.1.0", diff --git a/yarn.lock b/yarn.lock index 8bb49bc7b..e5a8573a6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9794,10 +9794,10 @@ sass-loader@^10.2.0: schema-utils "^3.0.0" semver "^7.3.2" -sass@^1.52.1: - version "1.52.1" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.52.1.tgz#554693da808543031f9423911d62c60a1acf7889" - integrity sha512-fSzYTbr7z8oQnVJ3Acp9hV80dM1fkMN7mSD/25mpcct9F7FPBMOI8krEYALgU1aZoqGhQNhTPsuSmxjnIvAm4Q== +sass@^1.52.2: + version "1.52.2" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.52.2.tgz#cd1f03e0e7be5bb2cebcf1c34d735f087d790936" + integrity sha512-mfHB2VSeFS7sZlPv9YohB9GB7yWIgQNTGniQwfQ04EoQN0wsQEv7SwpCwy/x48Af+Z3vDeFXz+iuXM3HK/phZQ== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -10142,21 +10142,16 @@ source-list-map@^2.0.0: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== -"source-map-js@>=0.6.2 <2.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.1.tgz#a1741c131e3c77d048252adfa24e23b908670caf" - integrity sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA== +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== source-map-js@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== -source-map-js@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" From e3cebfa457cb5e645ac69162391a4153a3c6c4ad Mon Sep 17 00:00:00 2001 From: Markus Petzsch Date: Sat, 11 Jun 2022 15:34:58 +0200 Subject: [PATCH 147/652] chore: bump elasticsearch version in docker-compose.yml file; closes #18189 (#18637) --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 5c2c0c5df..b324a65b0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -25,7 +25,7 @@ services: # es: # restart: always - # image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2 + # image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.17.4 # environment: # - "ES_JAVA_OPTS=-Xms512m -Xmx512m" # - "cluster.name=es-mastodon" From fe2d6fe1057677a1060fe1d882aac744456deff4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 11 Jun 2022 20:32:02 +0200 Subject: [PATCH 148/652] Fix wrong aspect ratio of logo in icons (#18639) --- app/helpers/branding_helper.rb | 2 +- app/javascript/icons/favicon-16x16.png | Bin 650 -> 639 bytes app/javascript/icons/favicon-32x32.png | Bin 1248 -> 1250 bytes app/javascript/icons/favicon-48x48.png | Bin 1798 -> 1899 bytes app/javascript/images/logo-symbol-icon.svg | 2 +- app/javascript/images/logo.svg | 2 +- app/javascript/images/mailer/logo.png | Bin 1745 -> 1673 bytes app/javascript/images/mailer/wordmark.png | Bin 8942 -> 8991 bytes lib/assets/wordmark.dark.png | Bin 8942 -> 8991 bytes lib/assets/wordmark.light.png | Bin 8576 -> 8625 bytes lib/tasks/branding.rake | 21 ++++++++++----------- public/badge.png | Bin 4248 -> 4058 bytes public/favicon.ico | Bin 15086 -> 15086 bytes 13 files changed, 13 insertions(+), 14 deletions(-) diff --git a/app/helpers/branding_helper.rb b/app/helpers/branding_helper.rb index c91661e56..ad7702aea 100644 --- a/app/helpers/branding_helper.rb +++ b/app/helpers/branding_helper.rb @@ -15,7 +15,7 @@ module BrandingHelper end def _logo_as_symbol_icon - content_tag(:svg, tag(:use, href: '#logo-symbol-icon'), viewBox: '0 0 79 75', class: 'logo logo--icon') + content_tag(:svg, tag(:use, href: '#logo-symbol-icon'), viewBox: '0 0 79 79', class: 'logo logo--icon') end def render_logo diff --git a/app/javascript/icons/favicon-16x16.png b/app/javascript/icons/favicon-16x16.png index e7037f4cf1d839538e52f6839d3a6d8030b64dbe..33ef3bb8c05d3b3c0dcb1b302a04979aff8c3abb 100644 GIT binary patch delta 596 zcmV-a0;~Os1^)z)Hh(lpL_t(Ijg68^NL5i7g};B_bMC!TibbgCpobbbsYVSVkdhu^ z)F3D-GL&8up-}@zO`1sr4H|?YK}iM)f*8#TB5WcQSoX4g^ypo;ZC z2}QWlKajjHJw2KVGP&=FdH~{J!g!+2J^t5CChsH5^E86G<^D9SH zv=(67cEk1F6crT$z|dfUAW*t4rVxQb0dDu@ct2?YQliq~skJ**qSW?|B2YfbE8it3K z0cbnyQ(I@ig;5ns(!<)KmI90c8!Boo0J)sv`L4{vqLMID<_gwR=K`f%OeB;Hr~>jA z*HyX*1<$DsBIBw77a4BdoW~f-oM^nv9h&i67zU*m@PBzKPb&TA#)Y|fFv6Fq0voGL zS$7FDE@zK?-HR~3_OJX83L}HhcAW5v`Rt^h^rPL^hb3UZBili&bq7rD&#le!4p>Y0{g`P00001d0WaHh(`!L_t(Ijg^v1YZO5gg}I@DH?zjP!oq|0So*BHGc&*Unn?zgM-Q_5OwZM zcpbRF|6$lGraGLnr!VFZxq=9Y(9{IYEef#~Z`Ohc4GqxJqR`qhJ5$jR*^qKf+7&V9 zk&5NP_7tbO(7vsWW10c9hHPgwep$HH>(kh%IiAfB zhQi~afa&*!lYd>SID9n4qX#~vk^rpL*r*yCQMbmD$td2w33)bLCV#hxSFpH_qQ7sB z(UCGQ#{wJ&>gxq;1U5>$VoV6Qafd{qAjSYN?+fX)V515T0}FswHpwxr7~=s|nAkxU z4J6(Zj>N+{teFGqMbx5!tz5Wv=?6-)z$G>iv44r?xnisb!h9Jf$9+D12o@^- z{GPN`!Pn0Llj9CWFG_Nrs}qN&^9prrMPFw*e1Y9sn`k1Q=t`HtnkP0gd-{hqy>hLQ zVU%6!Tvl4PiPf7CsZ*L-5mf>^XK}t%nbN!7r#ohnWChUKHu(@m#}e^!ZNa~K tjiMFU2spquluQWv&eoCb13iDe_YZ5wK#*&@>^A@a002ovPDHLkV1iKnAZGvo diff --git a/app/javascript/icons/favicon-32x32.png b/app/javascript/icons/favicon-32x32.png index a91b024631ac83fd1f29cbc10171de7c967c7e14..7b9a37403f78afb31f702955ad3f20347bfc9983 100644 GIT binary patch delta 1212 zcmV;t1Vj7a3E~NmHh-5%L_t(og|(MkY*b|s$A5Fq>2AdqyC8-KB$QB~LZBEDgJ2~J zDv3`dMIabKi19%ZLp0GBgNcbIM13H}OXQ-GC=wIp1xZ>U2ndbbTu>CDfnt-UT)J(y zrF)t2VY|0;c1r=7s_04Mu4Suyyz znbn#Z_jtKxe1Exer9}WdfR|s4&o$GfrRau2(74cJdc8wsrEvY4(RwV+nP|G`yV}VP z3!ZQp_mH4zxNt$)zb{Q+uaz=8uF@M=2W;{HRAm_iKO8$&c;oF##*Z&Ps|y-k_BE&Y zW_tpF#m{=ISQSDFKAY9xviKQ~k2Vd`c2NVi4SOEgIu^Q=@=3+rDG6Al}G`(RUHCU;Nk2!ABmo#bTKM4OYDSI9VAJbe_BRJo9D-~Ws8*m# z;fh4^A?di1=5kvyhqe8az-O^Uj!sGA!Vze+i&3L!8re3%Cyg`UFlM%cvw09Yd_aI zGtKD6jiA06KjsNoy4^pWoobD9s`a*f7D@DYoapf~pm4hGvD&@t$wh!RliLgNT}Yp! z^3ukQqL8Zs{j=0{dJp7^C`~(>>vDss2Y=vroYa&l1tZ%3EAls@+f#|u=3NJ7^c5l5 zhZT#?MS+=RO$f^{>oJqrh)qExf>{knjbwUZ45Jq$4$^53Z4R_0Ep=vB^Nh>o?B?z~ zA^n4ylqFy$6TfY#{}9+a(tVFaav}H3*=%apO*383zf^TqQ`6bdaK`S6z}GGH*MG#) zYf;s}{AP-nHaK0nyJ_LsDZ?3Dz3^ns3ysnGkrD`;{pF3(wI=o{P*FxlfkVJKpc|+` z>;W?wBQOn^h|#k1;H*V=L;zs<{1bD{alYry|0T8T{H0+;1WK0OcZVPS%}d;D5Yx9X z?JSj&^2;s?`q@aC-m?8HS#myH6*cRbFT&FXa|N3OGJ&CqMxfJ-bBILE*t6@%oTD)E aw)!7sBjgnuiF2<20000ExH delta 1210 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 + diff --git a/app/javascript/images/logo.svg b/app/javascript/images/logo.svg index 6ffc988e5..11d0c30c5 100644 --- a/app/javascript/images/logo.svg +++ b/app/javascript/images/logo.svg @@ -1,4 +1,4 @@ - + diff --git a/app/javascript/images/mailer/logo.png b/app/javascript/images/mailer/logo.png index 54c8afd6a32b94476b3401ee5d35fe98edf0fbf8..77d0ef849f34621453100937105e5e068d3c76a4 100644 GIT binary patch literal 1673 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 diff --git a/app/javascript/images/mailer/wordmark.png b/app/javascript/images/mailer/wordmark.png index f3d714d3aae3ea8a9991fe15a4f134112b8261a5..defe50178180a8e2db9c3b5fd26d0c8f4c042d38 100644 GIT binary patch literal 8991 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 literal 8942 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 AKL7v# diff --git a/lib/assets/wordmark.dark.png b/lib/assets/wordmark.dark.png index f3d714d3aae3ea8a9991fe15a4f134112b8261a5..defe50178180a8e2db9c3b5fd26d0c8f4c042d38 100644 GIT binary patch literal 8991 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 literal 8942 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 AKL7v# diff --git a/lib/assets/wordmark.light.png b/lib/assets/wordmark.light.png index 50bbb6bd37fe47541b3dc3479c9be6344e324082..d4485c0fb276fc079c89b4ad8d609699e5e2af03 100644 GIT binary patch literal 8625 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 m^IBcr{r6(MsTIbYy_T! diff --git a/lib/tasks/branding.rake b/lib/tasks/branding.rake index d513465ed..2eec7c9e1 100644 --- a/lib/tasks/branding.rake +++ b/lib/tasks/branding.rake @@ -9,28 +9,28 @@ namespace :branding do desc 'Generate PNG icons and logos for e-mail templates' task generate_mailer_assets: :environment do - rsvg_convert = Terrapin::CommandLine.new('rsvg-convert', '-w :w -h :h :input -o :output') + rsvg_convert = Terrapin::CommandLine.new('rsvg-convert', '-h :size --keep-aspect-ratio :input -o :output') output_dest = Rails.root.join('app', 'javascript', 'images', 'mailer') # Displayed size is 64px, at 3x it's 192px Dir[Rails.root.join('app', 'javascript', 'images', 'icons', '*.svg')].each do |path| - rsvg_convert.run(input: path, w: 192, h: 192, output: output_dest.join("#{File.basename(path, '.svg')}.png")) + rsvg_convert.run(input: path, size: 192, output: output_dest.join("#{File.basename(path, '.svg')}.png")) end # Displayed size is 34px, at 3x it's 102px - rsvg_convert.run(input: Rails.root.join('app', 'javascript', 'images', 'logo-symbol-wordmark.svg'), w: (102 * (261.0 / 66)).ceil, h: 102, output: output_dest.join('wordmark.png')) + rsvg_convert.run(input: Rails.root.join('app', 'javascript', 'images', 'logo-symbol-wordmark.svg'), size: 102, output: output_dest.join('wordmark.png')) # Displayed size is 24px, at 3x it's 72px - rsvg_convert.run(input: Rails.root.join('app', 'javascript', 'images', 'logo-symbol-icon.svg'), w: (72 * (79.0 / 75)).ceil, h: 72, output: output_dest.join('logo.png')) + rsvg_convert.run(input: Rails.root.join('app', 'javascript', 'images', 'logo-symbol-icon.svg'), size: 72, output: output_dest.join('logo.png')) end desc 'Generate light/dark logotypes for GitHub' task generate_github_assets: :environment do - rsvg_convert = Terrapin::CommandLine.new('rsvg-convert', '--stylesheet :stylesheet -w :w -h :h :input -o :output') + rsvg_convert = Terrapin::CommandLine.new('rsvg-convert', '--stylesheet :stylesheet -h :size --keep-aspect-ratio :input -o :output') output_dest = Rails.root.join('lib', 'assets') - rsvg_convert.run(stylesheet: Rails.root.join('lib', 'assets', 'wordmark.dark.css'), input: Rails.root.join('app', 'javascript', 'images', 'logo-symbol-wordmark.svg'), w: (102 * (261.0 / 66)).ceil, h: 102, output: output_dest.join('wordmark.dark.png')) - rsvg_convert.run(stylesheet: Rails.root.join('lib', 'assets', 'wordmark.light.css'), input: Rails.root.join('app', 'javascript', 'images', 'logo-symbol-wordmark.svg'), w: (102 * (261.0 / 66)).ceil, h: 102, output: output_dest.join('wordmark.light.png')) + rsvg_convert.run(stylesheet: Rails.root.join('lib', 'assets', 'wordmark.dark.css'), input: Rails.root.join('app', 'javascript', 'images', 'logo-symbol-wordmark.svg'), size: 102, output: output_dest.join('wordmark.dark.png')) + rsvg_convert.run(stylesheet: Rails.root.join('lib', 'assets', 'wordmark.light.css'), input: Rails.root.join('app', 'javascript', 'images', 'logo-symbol-wordmark.svg'), size: 102, output: output_dest.join('wordmark.light.png')) end desc 'Generate favicons and app icons from SVG source files' @@ -39,7 +39,7 @@ namespace :branding do app_icon_source = Rails.root.join('app', 'javascript', 'images', 'app-icon.svg') output_dest = Rails.root.join('app', 'javascript', 'icons') - rsvg_convert = Terrapin::CommandLine.new('rsvg-convert', '-w :size -h :size :input -o :output') + rsvg_convert = Terrapin::CommandLine.new('rsvg-convert', '-w :size -h :size --keep-aspect-ratio :input -o :output') convert = Terrapin::CommandLine.new('convert', ':input :output') favicon_sizes = [16, 32, 48] @@ -67,12 +67,11 @@ namespace :branding do desc 'Generate badge icon from SVG source files' task generate_app_badge: :environment do - rsvg_convert = Terrapin::CommandLine.new('rsvg-convert', '--stylesheet :stylesheet -w :w -h :h :input -o :output') + rsvg_convert = Terrapin::CommandLine.new('rsvg-convert', '--stylesheet :stylesheet -w :size -h :size --keep-aspect-ratio :input -o :output') badge_source = Rails.root.join('app', 'javascript', 'images', 'logo-symbol-icon.svg') - source_ratio = 79.0 / 75 output_dest = Rails.root.join('public') stylesheet = Rails.root.join('lib', 'assets', 'wordmark.light.css') - rsvg_convert.run(stylesheet: stylesheet, input: badge_source, w: (192 * source_ratio).ceil, h: 192, output: output_dest.join('badge.png')) + rsvg_convert.run(stylesheet: stylesheet, input: badge_source, size: 192, output: output_dest.join('badge.png')) end end diff --git a/public/badge.png b/public/badge.png index 0449e92921efc08cb7c8ef102ca6fd0eb0d95141..bd618c7290b7ada8fac698c65d025f575679e34f 100644 GIT binary patch literal 4058 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 From 620b70c41e4b5d93f2268fd0318bd48e9823a8e1 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 12 Jun 2022 02:48:03 +0200 Subject: [PATCH 149/652] Remove item titles from RSS feeds (#18640) --- app/views/accounts/show.rss.ruby | 1 - app/views/tags/show.rss.ruby | 1 - 2 files changed, 2 deletions(-) diff --git a/app/views/accounts/show.rss.ruby b/app/views/accounts/show.rss.ruby index 5e1c3a518..fd45a8b2b 100644 --- a/app/views/accounts/show.rss.ruby +++ b/app/views/accounts/show.rss.ruby @@ -9,7 +9,6 @@ RSS::Builder.build do |doc| @statuses.each do |status| doc.item do |item| - item.title(l(status.created_at)) item.link(ActivityPub::TagManager.instance.url_for(status)) item.pub_date(status.created_at) item.description(rss_status_content_format(status)) diff --git a/app/views/tags/show.rss.ruby b/app/views/tags/show.rss.ruby index 12f560904..9ce71be74 100644 --- a/app/views/tags/show.rss.ruby +++ b/app/views/tags/show.rss.ruby @@ -7,7 +7,6 @@ RSS::Builder.build do |doc| @statuses.each do |status| doc.item do |item| - item.title(l(status.created_at)) item.link(ActivityPub::TagManager.instance.url_for(status)) item.pub_date(status.created_at) item.description(rss_status_content_format(status)) From ea2640e76f70b874c1b5482392d12f47a2efef00 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 Jun 2022 14:51:48 +0900 Subject: [PATCH 150/652] Bump @babel/core from 7.18.2 to 7.18.5 (#18650) Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.18.2 to 7.18.5. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.5/packages/babel-core) --- updated-dependencies: - dependency-name: "@babel/core" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 51 ++++++++++++++++++++++----------------------------- 2 files changed, 23 insertions(+), 30 deletions(-) diff --git a/package.json b/package.json index c4e51e5a0..14d208fb2 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ }, "private": true, "dependencies": { - "@babel/core": "^7.18.2", + "@babel/core": "^7.18.5", "@babel/plugin-proposal-decorators": "^7.18.2", "@babel/plugin-transform-react-inline-elements": "^7.16.7", "@babel/plugin-transform-runtime": "^7.18.2", diff --git a/yarn.lock b/yarn.lock index e5a8573a6..6367d2473 100644 --- a/yarn.lock +++ b/yarn.lock @@ -28,10 +28,10 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw== -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.2", "@babel/core@^7.7.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.2.tgz#87b2fcd7cce9becaa7f5acebdc4f09f3dd19d876" - integrity sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ== +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.5", "@babel/core@^7.7.2": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.5.tgz#c597fa680e58d571c28dda9827669c78cdd7f000" + integrity sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.16.7" @@ -39,10 +39,10 @@ "@babel/helper-compilation-targets" "^7.18.2" "@babel/helper-module-transforms" "^7.18.0" "@babel/helpers" "^7.18.2" - "@babel/parser" "^7.18.0" + "@babel/parser" "^7.18.5" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.18.2" - "@babel/types" "^7.18.2" + "@babel/traverse" "^7.18.5" + "@babel/types" "^7.18.4" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -347,10 +347,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.0.tgz#10a8d4e656bc01128d299a787aa006ce1a91e112" - integrity sha512-AqDccGC+m5O/iUStSJy3DGRIUFu7WbY/CppZYwrEUB4N0tZlnI8CSTsgL7v5fHVFmUbRv2sd+yy27o8Ydt4MGg== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.18.5": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.5.tgz#337062363436a893a2d22faa60be5bb37091c83c" + integrity sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.17.12": version "7.17.12" @@ -1095,10 +1095,10 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.7.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.2.tgz#b77a52604b5cc836a9e1e08dca01cba67a12d2e8" - integrity sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA== +"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.18.5", "@babel/traverse@^7.7.2": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.5.tgz#94a8195ad9642801837988ab77f36e992d9a20cd" + integrity sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA== dependencies: "@babel/code-frame" "^7.16.7" "@babel/generator" "^7.18.2" @@ -1106,15 +1106,15 @@ "@babel/helper-function-name" "^7.17.9" "@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.18.0" - "@babel/types" "^7.18.2" + "@babel/parser" "^7.18.5" + "@babel/types" "^7.18.4" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.12", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.2.tgz#191abfed79ebe6f4242f643a9a5cbaa36b10b091" - integrity sha512-0On6B8A4/+mFUto5WERt3EEuG1NznDirvwca1O8UwXQHVY8g3R7OzYgxXdOfMwLO08UrpUD/2+3Bclyq+/C94Q== +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.12", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.18.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354" + integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw== dependencies: "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" @@ -9885,14 +9885,7 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.2.1, semver@^7.3.2, semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -semver@^7.3.4: +semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: version "7.3.7" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== From 6427e039b7c12de07c6b27891be99b04315bc717 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 Jun 2022 14:52:21 +0900 Subject: [PATCH 151/652] Bump sidekiq-unique-jobs from 7.1.23 to 7.1.24 (#18651) Bumps [sidekiq-unique-jobs](https://github.com/mhenrixon/sidekiq-unique-jobs) from 7.1.23 to 7.1.24. - [Release notes](https://github.com/mhenrixon/sidekiq-unique-jobs/releases) - [Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/blob/main/CHANGELOG.md) - [Commits](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v7.1.23...v7.1.24) --- updated-dependencies: - dependency-name: sidekiq-unique-jobs dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index e5b665a8a..ef9bc02b5 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -611,7 +611,7 @@ GEM rufus-scheduler (~> 3.2) sidekiq (>= 4) tilt (>= 1.4.0) - sidekiq-unique-jobs (7.1.23) + sidekiq-unique-jobs (7.1.24) brpoplpush-redis_script (> 0.1.1, <= 2.0.0) concurrent-ruby (~> 1.0, >= 1.0.5) sidekiq (>= 5.0, < 8.0) From 152a4dc68156e88ab899b719050f1ceb2e201daa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 Jun 2022 14:53:20 +0900 Subject: [PATCH 152/652] Bump sass from 1.52.2 to 1.52.3 (#18645) Bumps [sass](https://github.com/sass/dart-sass) from 1.52.2 to 1.52.3. - [Release notes](https://github.com/sass/dart-sass/releases) - [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md) - [Commits](https://github.com/sass/dart-sass/compare/1.52.2...1.52.3) --- updated-dependencies: - dependency-name: sass dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 14d208fb2..625d920f9 100644 --- a/package.json +++ b/package.json @@ -117,7 +117,7 @@ "requestidlecallback": "^0.3.0", "reselect": "^4.1.5", "rimraf": "^3.0.2", - "sass": "^1.52.2", + "sass": "^1.52.3", "sass-loader": "^10.2.0", "stacktrace-js": "^2.0.2", "stringz": "^2.1.0", diff --git a/yarn.lock b/yarn.lock index 6367d2473..85547ee8f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9794,10 +9794,10 @@ sass-loader@^10.2.0: schema-utils "^3.0.0" semver "^7.3.2" -sass@^1.52.2: - version "1.52.2" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.52.2.tgz#cd1f03e0e7be5bb2cebcf1c34d735f087d790936" - integrity sha512-mfHB2VSeFS7sZlPv9YohB9GB7yWIgQNTGniQwfQ04EoQN0wsQEv7SwpCwy/x48Af+Z3vDeFXz+iuXM3HK/phZQ== +sass@^1.52.3: + version "1.52.3" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.52.3.tgz#b7cc7ffea2341ccc9a0c4fd372bf1b3f9be1b6cb" + integrity sha512-LNNPJ9lafx+j1ArtA7GyEJm9eawXN8KlA1+5dF6IZyoONg1Tyo/g+muOsENWJH/2Q1FHbbV4UwliU0cXMa/VIA== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" From af9d7a208a4e9d1dfde48deec5334b97cc3d8a3b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 Jun 2022 14:53:49 +0900 Subject: [PATCH 153/652] Bump oj from 3.13.13 to 3.13.14 (#18615) Bumps [oj](https://github.com/ohler55/oj) from 3.13.13 to 3.13.14. - [Release notes](https://github.com/ohler55/oj/releases) - [Changelog](https://github.com/ohler55/oj/blob/develop/CHANGELOG.md) - [Commits](https://github.com/ohler55/oj/compare/v3.13.13...v3.13.14) --- updated-dependencies: - dependency-name: oj dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index ef9bc02b5..9790df2c9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -412,7 +412,7 @@ GEM concurrent-ruby (~> 1.0, >= 1.0.2) sidekiq (>= 3.5) statsd-ruby (~> 1.4, >= 1.4.0) - oj (3.13.13) + oj (3.13.14) omniauth (1.9.1) hashie (>= 3.4.6) rack (>= 1.6.2, < 3) From cc7cebb79a2a9ed284e027b76d1038afb4f2a6ef Mon Sep 17 00:00:00 2001 From: Shlee Date: Wed, 15 Jun 2022 14:35:36 +0000 Subject: [PATCH 154/652] Fix for #18637 - Migrate from elasticsearch-oss to elasticsearch basic (#18643) * Update docker-compose.yml * Update docker-compose.yml * Update docker-compose.yml --- docker-compose.yml | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index b324a65b0..d86cb55d2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -25,13 +25,20 @@ services: # es: # restart: always - # image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.17.4 + # image: docker.elastic.co/elasticsearch/elasticsearch:7.17.4 # environment: - # - "ES_JAVA_OPTS=-Xms512m -Xmx512m" + # - "ES_JAVA_OPTS=-Xms512m -Xmx512m -Des.enforce.bootstrap.checks=true" + # - "xpack.license.self_generated.type=basic" + # - "xpack.security.enabled=false" + # - "xpack.watcher.enabled=false" + # - "xpack.graph.enabled=false" + # - "xpack.ml.enabled=false" + # - "bootstrap.memory_lock=true" # - "cluster.name=es-mastodon" # - "discovery.type=single-node" - # - "bootstrap.memory_lock=true" + # - "thread_pool.write.queue_size=1000" # networks: + # - external_network # - internal_network # healthcheck: # test: ["CMD-SHELL", "curl --silent --fail localhost:9200/_cluster/health || exit 1"] @@ -41,6 +48,11 @@ services: # memlock: # soft: -1 # hard: -1 + # nofile: + # soft: 65536 + # hard: 65536 + # ports: + # - '127.0.0.1:9200:9200' web: build: . From 3f02157a94cdced0faefc6982c4c6108356d3240 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 16 Jun 2022 06:31:19 +0200 Subject: [PATCH 155/652] New Crowdin updates (#18605) * New translations doorkeeper.en.yml (Indonesian) * New translations simple_form.en.yml (Persian) * New translations activerecord.en.yml (Persian) * New translations doorkeeper.en.yml (Persian) * New translations simple_form.en.yml (Tamil) * New translations doorkeeper.en.yml (Tamil) * New translations activerecord.en.yml (Marathi) * New translations simple_form.en.yml (Spanish, Argentina) * New translations activerecord.en.yml (Spanish, Argentina) * New translations doorkeeper.en.yml (Spanish, Argentina) * New translations simple_form.en.yml (Spanish, Mexico) * New translations activerecord.en.yml (Spanish, Mexico) * New translations doorkeeper.en.yml (Spanish, Mexico) * New translations simple_form.en.yml (Bengali) * New translations activerecord.en.yml (Bengali) * New translations activerecord.en.yml (Asturian) * New translations simple_form.en.yml (Scottish Gaelic) * New translations activerecord.en.yml (Scottish Gaelic) * New translations doorkeeper.en.yml (Scottish Gaelic) * New translations simple_form.en.yml (Asturian) * New translations doorkeeper.en.yml (Asturian) * New translations doorkeeper.en.yml (Sinhala) * New translations simple_form.en.yml (Occitan) * New translations activerecord.en.yml (Occitan) * New translations doorkeeper.en.yml (Occitan) * New translations simple_form.en.yml (Serbian (Latin)) * New translations activerecord.en.yml (Serbian (Latin)) * New translations doorkeeper.en.yml (Serbian (Latin)) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations activerecord.en.yml (Kurmanji (Kurdish)) * New translations doorkeeper.en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Sorani (Kurdish)) * New translations activerecord.en.yml (Sinhala) * New translations simple_form.en.yml (Chinese Traditional, Hong Kong) * New translations simple_form.en.yml (English, United Kingdom) * New translations activerecord.en.yml (English, United Kingdom) * New translations simple_form.en.yml (Welsh) * New translations activerecord.en.yml (Welsh) * New translations doorkeeper.en.yml (Welsh) * New translations activerecord.en.yml (Chinese Traditional, Hong Kong) * New translations simple_form.en.yml (Sinhala) * New translations doorkeeper.en.yml (Chinese Traditional, Hong Kong) * New translations simple_form.en.yml (Tatar) * New translations activerecord.en.yml (Tatar) * New translations doorkeeper.en.yml (Tatar) * New translations simple_form.en.yml (Malayalam) * New translations activerecord.en.yml (Malayalam) * New translations doorkeeper.en.yml (Malayalam) * New translations simple_form.en.yml (Breton) * New translations activerecord.en.yml (Breton) * New translations doorkeeper.en.yml (Breton) * New translations activerecord.en.yml (Sorani (Kurdish)) * New translations doorkeeper.en.yml (Sorani (Kurdish)) * New translations simple_form.en.yml (Ido) * New translations activerecord.en.yml (Standard Moroccan Tamazight) * New translations simple_form.en.yml (Standard Moroccan Tamazight) * New translations doorkeeper.en.yml (Ido) * New translations activerecord.en.yml (Ido) * New translations doorkeeper.en.yml (Kabyle) * New translations simple_form.en.yml (Corsican) * New translations activerecord.en.yml (Kabyle) * New translations simple_form.en.yml (Kabyle) * New translations doorkeeper.en.yml (Sardinian) * New translations activerecord.en.yml (Sardinian) * New translations simple_form.en.yml (Sardinian) * New translations doorkeeper.en.yml (Corsican) * New translations activerecord.en.yml (Corsican) * New translations doorkeeper.en.yml (Standard Moroccan Tamazight) * New translations en.yml (Korean) * New translations en.yml (Portuguese) * New translations en.yml (Hungarian) * New translations en.yml (Armenian) * New translations en.yml (Dutch) * New translations en.yml (Norwegian) * New translations en.yml (Polish) * New translations en.yml (Albanian) * New translations en.yml (Basque) * New translations en.yml (Turkish) * New translations en.yml (Ukrainian) * New translations en.yml (Chinese Traditional) * New translations en.yml (Icelandic) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Indonesian) * New translations en.yml (Tamil) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Finnish) * New translations en.yml (Greek) * New translations en.yml (Galician) * New translations en.yml (Slovak) * New translations en.yml (Chinese Simplified) * New translations en.yml (Swedish) * New translations en.yml (Arabic) * New translations en.yml (French) * New translations en.yml (Spanish) * New translations en.yml (Catalan) * New translations en.yml (Hebrew) * New translations en.yml (Italian) * New translations en.yml (Japanese) * New translations en.yml (Russian) * New translations en.yml (Slovenian) * New translations en.yml (German) * New translations en.yml (Vietnamese) * New translations en.yml (Thai) * New translations en.yml (Scottish Gaelic) * New translations en.yml (Occitan) * New translations en.yml (Persian) * New translations en.yml (Romanian) * New translations en.yml (Bulgarian) * New translations en.yml (Czech) * New translations en.yml (Danish) * New translations en.yml (Spanish, Mexico) * New translations en.yml (Bengali) * New translations en.yml (Corsican) * New translations en.yml (Sardinian) * New translations en.yml (Kabyle) * New translations en.yml (Ido) * New translations en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Russian) * New translations activerecord.en.yml (Russian) * New translations simple_form.en.yml (Slovenian) * New translations activerecord.en.yml (Slovenian) * New translations simple_form.en.yml (Ukrainian) * New translations activerecord.en.yml (Ukrainian) * New translations en.yml (Sorani (Kurdish)) * New translations en.yml (Welsh) * New translations en.yml (Norwegian Nynorsk) * New translations en.yml (Kazakh) * New translations en.yml (Estonian) * New translations en.yml (Latvian) * New translations en.yml (Malay) * New translations en.yml (Esperanto) * New translations en.yml (Asturian) * New translations en.yml (Chinese Traditional, Hong Kong) * New translations en.yml (Malayalam) * New translations activerecord.en.yml (Asturian) * New translations en.yml (Catalan) * New translations activerecord.en.yml (Catalan) * New translations en.yml (Chinese Simplified) * New translations en.yml (Danish) * New translations en.yml (Ido) * New translations simple_form.en.yml (Danish) * New translations activerecord.en.yml (Danish) * New translations activerecord.en.yml (Italian) * New translations activerecord.en.yml (Chinese Simplified) * New translations simple_form.en.yml (Ido) * New translations activerecord.en.yml (Ido) * New translations en.yml (Korean) * New translations en.yml (Chinese Traditional) * New translations en.yml (Spanish, Argentina) * New translations simple_form.en.yml (Chinese Traditional) * New translations activerecord.en.yml (Chinese Traditional) * New translations en.yml (Chinese Simplified) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Spanish, Mexico) * New translations simple_form.en.yml (Spanish, Argentina) * New translations activerecord.en.yml (Spanish, Argentina) * New translations en.yml (Galician) * New translations simple_form.en.yml (Galician) * New translations activerecord.en.yml (Galician) * New translations en.yml (Greek) * New translations en.yml (Catalan) * New translations en.yml (Afrikaans) * New translations en.yml (Polish) * New translations simple_form.en.yml (Afrikaans) * New translations activerecord.en.yml (Afrikaans) * New translations simple_form.en.yml (Polish) * New translations activerecord.en.yml (Polish) * New translations en.yml (Portuguese) * New translations en.json (German) * New translations simple_form.en.yml (Portuguese) * New translations activerecord.en.yml (Portuguese) * New translations en.yml (Italian) * New translations en.yml (Russian) * New translations en.yml (Turkish) * New translations simple_form.en.yml (Turkish) * New translations activerecord.en.yml (Turkish) * New translations en.yml (Russian) * New translations en.yml (Hungarian) * New translations simple_form.en.yml (Hungarian) * New translations activerecord.en.yml (Hungarian) * New translations en.yml (French) * New translations en.yml (Galician) * New translations en.yml (French) * New translations en.yml (Icelandic) * New translations simple_form.en.yml (Galician) * New translations simple_form.en.yml (French) * New translations activerecord.en.yml (French) * New translations en.yml (Italian) * New translations simple_form.en.yml (Italian) * New translations en.yml (Latvian) * New translations en.json (Latvian) * New translations simple_form.en.yml (Latvian) * New translations activerecord.en.yml (Latvian) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.json (Latvian) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations activerecord.en.yml (Kurmanji (Kurdish)) * New translations en.yml (Catalan) * New translations simple_form.en.yml (Catalan) * New translations en.yml (Chinese Traditional) * New translations simple_form.en.yml (Chinese Traditional) * New translations en.yml (Vietnamese) * New translations en.yml (Vietnamese) * New translations simple_form.en.yml (Vietnamese) * New translations activerecord.en.yml (Vietnamese) * New translations en.yml (Japanese) * New translations simple_form.en.yml (Japanese) * New translations activerecord.en.yml (Japanese) * New translations en.yml (Czech) * New translations en.yml (French) * New translations en.yml (Czech) * New translations en.json (Arabic) * New translations en.yml (Slovak) * New translations en.json (Slovak) * New translations en.yml (Indonesian) * New translations en.yml (Czech) * New translations en.yml (Czech) * New translations simple_form.en.yml (Czech) * New translations activerecord.en.yml (Czech) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Indonesian) * New translations en.yml (Indonesian) * New translations en.yml (Hebrew) * New translations en.json (Hebrew) * New translations simple_form.en.yml (Hebrew) * New translations en.yml (Albanian) * New translations en.json (Albanian) * New translations simple_form.en.yml (Albanian) * New translations activerecord.en.yml (Albanian) * New translations devise.en.yml (Albanian) * New translations en.yml (German) * New translations en.json (German) * New translations simple_form.en.yml (German) * New translations activerecord.en.yml (German) * New translations en.json (German) * New translations en.yml (Spanish) * New translations en.yml (Spanish) * New translations simple_form.en.yml (Spanish) * New translations activerecord.en.yml (Spanish) * New translations en.json (Ido) * New translations en.yml (Chinese Simplified) * New translations en.json (Occitan) * New translations en.json (Occitan) * New translations en.json (Esperanto) * New translations en.json (Esperanto) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` * New translations en.yml (Albanian) * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 2 +- app/javascript/mastodon/locales/ar.json | 10 +- app/javascript/mastodon/locales/de.json | 8 +- app/javascript/mastodon/locales/eo.json | 40 ++--- app/javascript/mastodon/locales/es-MX.json | 2 +- app/javascript/mastodon/locales/ga.json | 66 ++++----- app/javascript/mastodon/locales/gd.json | 2 +- app/javascript/mastodon/locales/he.json | 156 ++++++++++---------- app/javascript/mastodon/locales/id.json | 2 +- app/javascript/mastodon/locales/io.json | 2 +- app/javascript/mastodon/locales/ku.json | 2 +- app/javascript/mastodon/locales/lv.json | 40 ++--- app/javascript/mastodon/locales/oc.json | 18 +-- app/javascript/mastodon/locales/pt-BR.json | 4 +- app/javascript/mastodon/locales/sk.json | 18 +-- app/javascript/mastodon/locales/sq.json | 74 +++++----- config/locales/activerecord.af.yml | 8 + config/locales/activerecord.ast.yml | 10 ++ config/locales/activerecord.ca.yml | 8 + config/locales/activerecord.cs.yml | 8 + config/locales/activerecord.da.yml | 8 + config/locales/activerecord.de.yml | 8 + config/locales/activerecord.en-GB.yml | 1 + config/locales/activerecord.es-AR.yml | 8 + config/locales/activerecord.es.yml | 8 + config/locales/activerecord.fr.yml | 8 + config/locales/activerecord.gl.yml | 8 + config/locales/activerecord.hu.yml | 8 + config/locales/activerecord.io.yml | 8 + config/locales/activerecord.it.yml | 8 + config/locales/activerecord.ja.yml | 8 + config/locales/activerecord.ku.yml | 8 + config/locales/activerecord.lv.yml | 8 + config/locales/activerecord.pl.yml | 8 + config/locales/activerecord.pt-PT.yml | 8 + config/locales/activerecord.ru.yml | 8 + config/locales/activerecord.sl.yml | 8 + config/locales/activerecord.sq.yml | 8 + config/locales/activerecord.tr.yml | 8 + config/locales/activerecord.uk.yml | 8 + config/locales/activerecord.vi.yml | 8 + config/locales/activerecord.zh-CN.yml | 4 + config/locales/activerecord.zh-TW.yml | 8 + config/locales/af.yml | 18 +++ config/locales/ar.yml | 2 - config/locales/ast.yml | 4 +- config/locales/bg.yml | 3 - config/locales/bn.yml | 1 - config/locales/ca.yml | 23 ++- config/locales/ckb.yml | 2 - config/locales/co.yml | 2 - config/locales/cs.yml | 27 +++- config/locales/cy.yml | 2 - config/locales/da.yml | 23 ++- config/locales/de.yml | 24 ++- config/locales/doorkeeper.af.yml | 163 +++++++++++++++++++++ config/locales/doorkeeper.pt-BR.yml | 17 ++- config/locales/el.yml | 9 +- config/locales/eo.yml | 18 +-- config/locales/es-AR.yml | 23 ++- config/locales/es-MX.yml | 4 +- config/locales/es.yml | 23 ++- config/locales/et.yml | 2 - config/locales/eu.yml | 2 - config/locales/fa.yml | 2 - config/locales/fi.yml | 2 - config/locales/fr.yml | 28 +++- config/locales/gd.yml | 3 +- config/locales/gl.yml | 29 +++- config/locales/he.yml | 12 +- config/locales/hr.yml | 2 - config/locales/hu.yml | 23 ++- config/locales/hy.yml | 2 - config/locales/id.yml | 18 ++- config/locales/io.yml | 23 ++- config/locales/is.yml | 11 +- config/locales/it.yml | 23 ++- config/locales/ja.yml | 15 +- config/locales/ka.yml | 1 - config/locales/kab.yml | 1 - config/locales/kk.yml | 2 - config/locales/ko.yml | 11 +- config/locales/ku.yml | 23 ++- config/locales/lt.yml | 1 - config/locales/lv.yml | 30 +++- config/locales/ml.yml | 1 - config/locales/ms.yml | 1 - config/locales/nl.yml | 3 +- config/locales/nn.yml | 2 - config/locales/no.yml | 2 - config/locales/oc.yml | 2 - config/locales/pl.yml | 24 ++- config/locales/pt-BR.yml | 11 +- config/locales/pt-PT.yml | 23 ++- config/locales/ro.yml | 2 - config/locales/ru.yml | 40 ++++- config/locales/sc.yml | 2 - config/locales/simple_form.af.yml | 10 ++ config/locales/simple_form.ca.yml | 6 + config/locales/simple_form.cs.yml | 6 + config/locales/simple_form.da.yml | 6 + config/locales/simple_form.de.yml | 6 + config/locales/simple_form.en-GB.yml | 1 + config/locales/simple_form.es-AR.yml | 6 + config/locales/simple_form.es-MX.yml | 2 + config/locales/simple_form.es.yml | 6 + config/locales/simple_form.fr.yml | 6 + config/locales/simple_form.gl.yml | 6 + config/locales/simple_form.he.yml | 2 + config/locales/simple_form.hu.yml | 6 + config/locales/simple_form.io.yml | 6 + config/locales/simple_form.it.yml | 6 + config/locales/simple_form.ja.yml | 3 + config/locales/simple_form.ku.yml | 6 + config/locales/simple_form.lv.yml | 6 + config/locales/simple_form.pl.yml | 6 + config/locales/simple_form.pt-PT.yml | 6 + config/locales/simple_form.ru.yml | 6 + config/locales/simple_form.sk.yml | 3 +- config/locales/simple_form.sl.yml | 6 + config/locales/simple_form.sq.yml | 6 + config/locales/simple_form.tr.yml | 6 + config/locales/simple_form.uk.yml | 6 + config/locales/simple_form.vi.yml | 6 + config/locales/simple_form.zh-TW.yml | 6 + config/locales/sk.yml | 3 +- config/locales/sl.yml | 20 ++- config/locales/sq.yml | 111 +++++++++++++- config/locales/sr-Latn.yml | 1 - config/locales/sr.yml | 1 - config/locales/sv.yml | 2 - config/locales/ta.yml | 1 - config/locales/th.yml | 2 - config/locales/tr.yml | 21 ++- config/locales/uk.yml | 25 +++- config/locales/vi.yml | 23 ++- config/locales/zh-CN.yml | 12 +- config/locales/zh-HK.yml | 2 - config/locales/zh-TW.yml | 22 ++- 139 files changed, 1450 insertions(+), 369 deletions(-) create mode 100644 config/locales/activerecord.en-GB.yml create mode 100644 config/locales/simple_form.en-GB.yml diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 8d261dbbc..52cb08217 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Verwyder hierdie keuse", "compose_form.poll.switch_to_multiple": "Verander die peiling na verskeie keuses", "compose_form.poll.switch_to_single": "Verander die peiling na 'n enkel keuse", - "compose_form.publish": "Publish", + "compose_form.publish": "Publisheer", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Stoor veranderinge", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index f655b694c..406868d65 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -17,7 +17,7 @@ "account.follow": "متابعة", "account.followers": "مُتابِعون", "account.followers.empty": "لا أحدَ يُتابع هذا المُستخدم إلى حد الآن.", - "account.followers_counter": "{count, plural, zero{لا مُتابع} one {مُتابعٌ واحِد} two{مُتابعانِ اِثنان} few{{counter} مُتابِعين} many{{counter} مُتابِعًا} other {{counter} مُتابع}}", + "account.followers_counter": "{count, plural, zero{لا مُتابع} one {مُتابعٌ واحِد} two {مُتابعانِ اِثنان} few {{counter} مُتابِعين} many {{counter} مُتابِعًا} other {{counter} مُتابع}}", "account.following": "الإشتراكات", "account.following_counter": "{count, plural, zero{لا يُتابِع} one {يُتابِعُ واحد} two{يُتابِعُ اِثنان} few{يُتابِعُ {counter}} many{يُتابِعُ {counter}} other {يُتابِعُ {counter}}}", "account.follows.empty": "لا يُتابع هذا المُستخدمُ أيَّ أحدٍ حتى الآن.", @@ -95,7 +95,7 @@ "compose.language.change": "تغيير اللغة", "compose.language.search": "البحث عن لغة…", "compose_form.direct_message_warning_learn_more": "تَعَلَّم المَزيد", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "إنّ المنشورات على ماستدون ليست مشفرة من النهاية إلى النهاية. لا تشارك أي معلومات حساسة عبر ماستدون.", "compose_form.hashtag_warning": "لن يُدرَج هذا المنشور تحت أي وسم بما أنَّه غير مُدرَج. فقط المنشورات العامة يُمكن البحث عنها بواسطة الوسم.", "compose_form.lock_disclaimer": "حسابُك غير {locked}. يُمكن لأي شخص مُتابعتك لرؤية (منشورات المتابعين فقط).", "compose_form.lock_disclaimer.lock": "مُقفَل", @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "إزالة هذا الخيار", "compose_form.poll.switch_to_multiple": "تغيِير الاستطلاع للسماح باِخيارات مُتعدِّدة", "compose_form.poll.switch_to_single": "تغيِير الاستطلاع للسماح باِخيار واحد فقط", - "compose_form.publish": "Publish", + "compose_form.publish": "انشر", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "احفظ التعديلات", "compose_form.sensitive.hide": "{count, plural, one {الإشارة إلى الوَسط كمُحتوى حسّاس} two{الإشارة إلى الوسطان كمُحتويان حسّاسان} other {الإشارة إلى الوسائط كمُحتويات حسّاسة}}", @@ -512,8 +512,8 @@ "trends.trending_now": "المتداولة الآن", "ui.beforeunload": "سوف تفقد مسودتك إن تركت ماستدون.", "units.short.billion": "{count} مليار", - "units.short.million": "{count} مليون", - "units.short.thousand": "{count} ألف", + "units.short.million": "{count} مليون", + "units.short.thousand": "{count} ألف", "upload_area.title": "اسحب ثم أفلت للرفع", "upload_button.label": "إضافة وسائط", "upload_error.limit": "لقد تم بلوغ الحد الأقصى المسموح به لإرسال الملفات.", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 8a77b212c..aaf552a1e 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -70,7 +70,7 @@ "column.blocks": "Blockierte Profile", "column.bookmarks": "Lesezeichen", "column.community": "Lokale Zeitleiste", - "column.direct": "Mensaxes directas", + "column.direct": "Direktnachrichten", "column.directory": "Profile durchsuchen", "column.domain_blocks": "Blockierte Domains", "column.favourites": "Favoriten", @@ -95,7 +95,7 @@ "compose.language.change": "Sprache ändern", "compose.language.search": "Sprachen durchsuchen...", "compose_form.direct_message_warning_learn_more": "Mehr erfahren", - "compose_form.encryption_warning": "Beiträge von Mastodon sind nicht Ende-zu-Ende verschlüsselt. Teile keine senible Infomartionen über Mastodon.", + "compose_form.encryption_warning": "Beiträge von Mastodon sind nicht Ende-zu-Ende verschlüsselt. Teile keine senible Informationen über Mastodon.", "compose_form.hashtag_warning": "Dieser Beitrag wird nicht durch Hashtags entdeckbar sein, weil er ungelistet ist. Nur öffentliche Beiträge tauchen in Hashtag-Zeitleisten auf.", "compose_form.lock_disclaimer": "Dein Profil ist nicht {locked}. Wer dir folgen will, kann das jederzeit tun und dann auch deine privaten Beiträge sehen.", "compose_form.lock_disclaimer.lock": "gesperrt", @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Wahl entfernen", "compose_form.poll.switch_to_multiple": "Umfrage ändern, um mehrere Optionen zu erlauben", "compose_form.poll.switch_to_single": "Umfrage ändern, um eine einzige Wahl zu erlauben", - "compose_form.publish": "Publish", + "compose_form.publish": "Veröffentlichen", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Änderungen speichern", "compose_form.sensitive.hide": "Medien als NSFW markieren", @@ -351,7 +351,7 @@ "notifications.filter.mentions": "Erwähnungen", "notifications.filter.polls": "Ergebnisse der Umfrage", "notifications.filter.statuses": "Updates von Personen, denen du folgst", - "notifications.grant_permission": "Zugriff gewährt.", + "notifications.grant_permission": "Berechtigung erteilen.", "notifications.group": "{count} Benachrichtigungen", "notifications.mark_as_read": "Alle Benachrichtigungen als gelesen markieren", "notifications.permission_denied": "Desktop-Benachrichtigungen können nicht aktiviert werden, da die Berechtigung verweigert wurde.", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 9abba0bfa..236d25496 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -6,7 +6,7 @@ "account.block": "Bloki @{name}", "account.block_domain": "Bloki domajnon {domain}", "account.blocked": "Blokita", - "account.browse_more_on_origin_server": "Rigardi pli al la originala profilo", + "account.browse_more_on_origin_server": "Vidi pli ĉe la originala profilo", "account.cancel_follow_request": "Nuligi peton de sekvado", "account.direct": "Rekte mesaĝi @{name}", "account.disable_notifications": "Ĉesu sciigi min kiam @{name} mesaĝi", @@ -22,7 +22,7 @@ "account.following_counter": "{count, plural, one {{counter} Sekvato} other {{counter} Sekvatoj}}", "account.follows.empty": "Tiu uzanto ankoraŭ ne sekvas iun.", "account.follows_you": "Sekvas vin", - "account.hide_reblogs": "Kaŝi diskonigojn de @{name}", + "account.hide_reblogs": "Kaŝi plusendojn de @{name}", "account.joined": "Kuniĝis {date}", "account.link_verified_on": "La posedanto de tiu ligilo estis kontrolita je {date}", "account.locked_info": "La privateco de tiu konto estas elektita kiel fermita. La posedanto povas mane akcepti tiun, kiu povas sekvi rin.", @@ -30,14 +30,14 @@ "account.mention": "Mencii @{name}", "account.moved_to": "{name} moviĝis al:", "account.mute": "Silentigi @{name}", - "account.mute_notifications": "Silentigi sciigojn de @{name}", + "account.mute_notifications": "Silentigi la sciigojn de @{name}", "account.muted": "Silentigita", "account.posts": "Mesaĝoj", - "account.posts_with_replies": "Kun respondoj", + "account.posts_with_replies": "Mesaĝoj kaj respondoj", "account.report": "Signali @{name}", "account.requested": "Atendo de aprobo. Alklaku por nuligi peton de sekvado", - "account.share": "Diskonigi la profilon de @{name}", - "account.show_reblogs": "Montri diskonigojn de @{name}", + "account.share": "Kundividi la profilon de @{name}", + "account.show_reblogs": "Montri la plusendojn de @{name}", "account.statuses_counter": "{count, plural, one {{counter} Mesaĝo} other {{counter} Mesaĝoj}}", "account.unblock": "Malbloki @{name}", "account.unblock_domain": "Malbloki {domain}", @@ -74,7 +74,7 @@ "column.directory": "Trarigardi profilojn", "column.domain_blocks": "Blokitaj domajnoj", "column.favourites": "Stelumoj", - "column.follow_requests": "Petoj de sekvado", + "column.follow_requests": "Demandoj de sekvado", "column.home": "Hejmo", "column.lists": "Listoj", "column.mutes": "Silentigitaj uzantoj", @@ -99,7 +99,7 @@ "compose_form.hashtag_warning": "Ĉi tiu mesaĝo ne estos listigita per ajna kradvorto. Nur publikaj mesaĝoj estas serĉeblaj per kradvortoj.", "compose_form.lock_disclaimer": "Via konta ne estas {locked}. Iu ajn povas sekvi vin por vidi viajn mesaĝojn, kiuj estas nur por sekvantoj.", "compose_form.lock_disclaimer.lock": "ŝlosita", - "compose_form.placeholder": "Pri kio vi pensas?", + "compose_form.placeholder": "Kion vi pensas?", "compose_form.poll.add_option": "Aldoni elekteblon", "compose_form.poll.duration": "Balotenketa daŭro", "compose_form.poll.option_placeholder": "Elekteblo {number}", @@ -198,10 +198,10 @@ "explore.trending_tags": "Kradvortoj", "follow_recommendations.done": "Farita", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", - "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", + "follow_recommendations.lead": "La mesaĝoj de personoj kiujn vi sekvas, aperos kronologie en via abonfluo. Ne timu erari, vi povas ĉesi sekvi facile iam ajn!", "follow_request.authorize": "Rajtigi", "follow_request.reject": "Rifuzi", - "follow_requests.unlocked_explanation": "Kvankam via konto ne estas ŝlosita, la dungitaro de {domain} opiniis, ke vi eble volus revizii petojn de sekvadon el ĉi tiuj kontoj permane.", + "follow_requests.unlocked_explanation": "Kvankam via konto ne estas ŝlosita, la teamo de {domain} pensis ke vi eble volas kontroli la demandojn de sekvado de ĉi tiuj kontoj permane.", "generic.saved": "Konservita", "getting_started.developers": "Programistoj", "getting_started.directory": "Profilujo", @@ -221,7 +221,7 @@ "hashtag.column_settings.tag_mode.none": "Neniu", "hashtag.column_settings.tag_toggle": "Aldoni pliajn etikedojn por ĉi tiu kolumno", "home.column_settings.basic": "Bazaj agordoj", - "home.column_settings.show_reblogs": "Montri diskonigojn", + "home.column_settings.show_reblogs": "Montri plusendojn", "home.column_settings.show_replies": "Montri respondojn", "home.hide_announcements": "Kaŝi anoncojn", "home.show_announcements": "Montri anoncojn", @@ -230,7 +230,7 @@ "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutoj}}", "keyboard_shortcuts.back": "reveni", "keyboard_shortcuts.blocked": "malfermi la liston de blokitaj uzantoj", - "keyboard_shortcuts.boost": "diskonigi", + "keyboard_shortcuts.boost": "Plusendi", "keyboard_shortcuts.column": "fokusi mesaĝon en unu el la kolumnoj", "keyboard_shortcuts.compose": "enfokusigi la tekstujon", "keyboard_shortcuts.description": "Priskribo", @@ -259,7 +259,7 @@ "keyboard_shortcuts.start": "malfermi la kolumnon «por komenci»", "keyboard_shortcuts.toggle_hidden": "montri/kaŝi tekston malantaŭ enhava averto", "keyboard_shortcuts.toggle_sensitivity": "montri/kaŝi aŭdovidaĵojn", - "keyboard_shortcuts.toot": "komenci tute novan mesaĝon", + "keyboard_shortcuts.toot": "Krei novan mesaĝon", "keyboard_shortcuts.unfocus": "malenfokusigi la tekstujon aŭ la serĉilon", "keyboard_shortcuts.up": "iri supren en la listo", "lightbox.close": "Fermi", @@ -321,7 +321,7 @@ "notification.mention": "{name} menciis vin", "notification.own_poll": "Via balotenketo finiĝitis", "notification.poll": "Partoprenita balotenketo finiĝis", - "notification.reblog": "{name} diskonigis vian mesaĝon", + "notification.reblog": "{name} plusendis vian mesaĝon", "notification.status": "{name} ĵus afiŝita", "notification.update": "{name} redaktis afiŝon", "notifications.clear": "Forviŝi sciigojn", @@ -337,7 +337,7 @@ "notifications.column_settings.mention": "Mencioj:", "notifications.column_settings.poll": "Balotenketaj rezultoj:", "notifications.column_settings.push": "Puŝsciigoj", - "notifications.column_settings.reblog": "Diskonigoj:", + "notifications.column_settings.reblog": "Plusendoj:", "notifications.column_settings.show": "Montri en kolumno", "notifications.column_settings.sound": "Eligi sonon", "notifications.column_settings.status": "Novaj mesaĝoj:", @@ -345,7 +345,7 @@ "notifications.column_settings.unread_notifications.highlight": "Marki nelegitajn sciigojn", "notifications.column_settings.update": "Redaktoj:", "notifications.filter.all": "Ĉiuj", - "notifications.filter.boosts": "Diskonigoj", + "notifications.filter.boosts": "Plusendoj", "notifications.filter.favourites": "Stelumoj", "notifications.filter.follows": "Sekvoj", "notifications.filter.mentions": "Mencioj", @@ -449,8 +449,8 @@ "status.admin_status": "Malfermi ĉi tiun mesaĝon en la kontrola interfaco", "status.block": "Bloki @{name}", "status.bookmark": "Aldoni al la legosignoj", - "status.cancel_reblog_private": "Ne plu diskonigi", - "status.cannot_reblog": "Ĉi tiu mesaĝo ne diskonigeblas", + "status.cancel_reblog_private": "Malfari la plusendon", + "status.cannot_reblog": "Ĉi tiu mesaĝo ne povas esti plusendita", "status.copy": "Kopii la ligilon al la mesaĝo", "status.delete": "Forigi", "status.detailed_status": "Detala konversacia vido", @@ -475,8 +475,8 @@ "status.read_more": "Legi pli", "status.reblog": "Plusendi", "status.reblog_private": "Plusendi kiel la originala videbleco", - "status.reblogged_by": "{name} diskonigis", - "status.reblogs.empty": "Ankoraŭ neniu diskonigis tiun mesaĝon. Kiam iu faros tion, tiu aperos ĉi tie.", + "status.reblogged_by": "{name} plusendis", + "status.reblogs.empty": "Neniu ankoraŭ plusendis la mesaĝon. Kiam iu faros tion, ili aperos ĉi tie.", "status.redraft": "Forigi kaj reskribi", "status.remove_bookmark": "Forigi legosignon", "status.reply": "Respondi", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 4e8a3c4c6..570a03186 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Eliminar esta opción", "compose_form.poll.switch_to_multiple": "Modificar encuesta para permitir múltiples opciones", "compose_form.poll.switch_to_single": "Modificar encuesta para permitir una única opción", - "compose_form.publish": "Publish", + "compose_form.publish": "Publicar", "compose_form.publish_loud": "¡{publish}!", "compose_form.save_changes": "Guardar cambios", "compose_form.sensitive.hide": "Marcar multimedia como sensible", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index bb9c4ac1f..2d2551845 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -60,7 +60,7 @@ "announcement.announcement": "Fógra", "attachments_list.unprocessed": "(unprocessed)", "autosuggest_hashtag.per_week": "{count} per week", - "boost_modal.combo": "You can press {combo} to skip this next time", + "boost_modal.combo": "Is féidir leat brúigh {combo} chun é seo a scipeáil an chéad uair eile", "bundle_column_error.body": "Something went wrong while loading this component.", "bundle_column_error.retry": "Bain triail as arís", "bundle_column_error.title": "Network error", @@ -73,7 +73,7 @@ "column.direct": "Direct messages", "column.directory": "Brabhsáil próifílí", "column.domain_blocks": "Blocked domains", - "column.favourites": "Favourites", + "column.favourites": "Roghanna", "column.follow_requests": "Follow requests", "column.home": "Baile", "column.lists": "Liostaí", @@ -120,7 +120,7 @@ "confirmations.block.confirm": "Block", "confirmations.block.message": "Are you sure you want to block {name}?", "confirmations.delete.confirm": "Delete", - "confirmations.delete.message": "Are you sure you want to delete this status?", + "confirmations.delete.message": "An bhfuil tú cinnte gur mhaith leat an phostáil seo a scriosadh?", "confirmations.delete_list.confirm": "Delete", "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", "confirmations.discard_edit_media.confirm": "Faigh réidh de", @@ -133,7 +133,7 @@ "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.", "confirmations.mute.message": "An bhfuil tú cinnte gur mhaith leat {name} a bhalbhú?", "confirmations.redraft.confirm": "Delete & redraft", - "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.", + "confirmations.redraft.message": "An bhfuil tú cinnte gur mhaith leat an phostáil sin a scriosadh agus athdhréachtú? Beidh roghanna agus treisithe caillte, agus beidh freagraí ar an bpostáil bhunúsach ina ndílleachtaí.", "confirmations.reply.confirm": "Reply", "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Ná lean", @@ -164,7 +164,7 @@ "emoji_button.symbols": "Symbols", "emoji_button.travel": "Taisteal ⁊ Áiteanna", "empty_column.account_suspended": "Account suspended", - "empty_column.account_timeline": "No posts found", + "empty_column.account_timeline": "Níl postálacha ar bith anseo!", "empty_column.account_unavailable": "Níl an phróifíl ar fáil", "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked posts yet. When you bookmark one, it will show up here.", @@ -172,8 +172,8 @@ "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "There are no blocked domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", - "empty_column.favourited_statuses": "You don't have any favourite posts yet. When you favourite one, it will show up here.", - "empty_column.favourites": "No one has favourited this post yet. When someone does, they will show up here.", + "empty_column.favourited_statuses": "Níor roghnaigh tú postáil ar bith fós. Nuair a roghnaigh tú ceann, beidh sí le feiceáil anseo.", + "empty_column.favourites": "Níor roghnaigh éinne an phostáil seo fós. Nuair a roghnaigh duine éigin, beidh siad le feiceáil anseo.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.", "empty_column.hashtag": "There is nothing in this hashtag yet.", @@ -221,7 +221,7 @@ "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", "home.column_settings.basic": "Basic", - "home.column_settings.show_reblogs": "Show boosts", + "home.column_settings.show_reblogs": "Taispeáin treisithe", "home.column_settings.show_replies": "Show replies", "home.hide_announcements": "Hide announcements", "home.show_announcements": "Show announcements", @@ -230,15 +230,15 @@ "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", "keyboard_shortcuts.back": "to navigate back", "keyboard_shortcuts.blocked": "to open blocked users list", - "keyboard_shortcuts.boost": "to boost", + "keyboard_shortcuts.boost": "Treisigh postáil", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", "keyboard_shortcuts.description": "Description", "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", - "keyboard_shortcuts.enter": "to open status", - "keyboard_shortcuts.favourite": "to favourite", - "keyboard_shortcuts.favourites": "to open favourites list", + "keyboard_shortcuts.enter": "Oscail postáil", + "keyboard_shortcuts.favourite": "Roghnaigh postáil", + "keyboard_shortcuts.favourites": "Oscail liosta roghanna", "keyboard_shortcuts.federated": "to open federated timeline", "keyboard_shortcuts.heading": "Keyboard Shortcuts", "keyboard_shortcuts.home": "to open home timeline", @@ -252,14 +252,14 @@ "keyboard_shortcuts.open_media": "to open media", "keyboard_shortcuts.pinned": "to open pinned posts list", "keyboard_shortcuts.profile": "Oscail próifíl an t-údar", - "keyboard_shortcuts.reply": "to reply", + "keyboard_shortcuts.reply": "Freagair ar phostáil", "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 post", + "keyboard_shortcuts.toot": "Cuir tús le postáil nua", "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search", "keyboard_shortcuts.up": "to move up in the list", "lightbox.close": "Close", @@ -294,13 +294,13 @@ "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", - "navigation_bar.compose": "Compose new post", + "navigation_bar.compose": "Cum postáil nua", "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Cuir an phróifíl in eagar", "navigation_bar.explore": "Explore", - "navigation_bar.favourites": "Favourites", + "navigation_bar.favourites": "Roghanna", "navigation_bar.filters": "Focail bhalbhaithe", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Ag leanúint agus do do leanúint", @@ -315,20 +315,20 @@ "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", "notification.admin.sign_up": "{name} signed up", - "notification.favourite": "{name} favourited your status", + "notification.favourite": "Roghnaigh {name} do phostáil", "notification.follow": "Lean {name} thú", "notification.follow_request": "D'iarr {name} ort do chuntas a leanúint", "notification.mention": "{name} mentioned you", "notification.own_poll": "Your poll has ended", "notification.poll": "A poll you have voted in has ended", - "notification.reblog": "{name} boosted your status", - "notification.status": "{name} just posted", + "notification.reblog": "Threisigh {name} do phostáil", + "notification.status": "Phostáil {name} díreach", "notification.update": "Chuir {name} postáil in eagar", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", - "notifications.column_settings.favourite": "Favourites:", + "notifications.column_settings.favourite": "Roghanna:", "notifications.column_settings.filter_bar.advanced": "Display all categories", "notifications.column_settings.filter_bar.category": "Quick filter bar", "notifications.column_settings.filter_bar.show_bar": "Show filter bar", @@ -337,16 +337,16 @@ "notifications.column_settings.mention": "Mentions:", "notifications.column_settings.poll": "Poll results:", "notifications.column_settings.push": "Push notifications", - "notifications.column_settings.reblog": "Boosts:", + "notifications.column_settings.reblog": "Treisithe:", "notifications.column_settings.show": "Show in column", "notifications.column_settings.sound": "Play sound", - "notifications.column_settings.status": "New posts:", + "notifications.column_settings.status": "Postálacha nua:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.column_settings.update": "Eagair:", "notifications.filter.all": "All", - "notifications.filter.boosts": "Boosts", - "notifications.filter.favourites": "Favourites", + "notifications.filter.boosts": "Treisithe", + "notifications.filter.favourites": "Roghanna", "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.filter.polls": "Poll results", @@ -402,7 +402,7 @@ "report.category.subtitle": "Choose the best match", "report.category.title": "Tell us what's going on with this {type}", "report.category.title_account": "próifíl", - "report.category.title_status": "post", + "report.category.title_status": "postáil", "report.close": "Déanta", "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Forward to {target}", @@ -435,7 +435,7 @@ "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "haischlib", - "search_popout.tips.status": "status", + "search_popout.tips.status": "postáil", "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", "search_popout.tips.user": "user", "search_results.accounts": "Daoine", @@ -449,8 +449,8 @@ "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", "status.bookmark": "Bookmark", - "status.cancel_reblog_private": "Unboost", - "status.cannot_reblog": "This post cannot be boosted", + "status.cancel_reblog_private": "Díthreisigh", + "status.cannot_reblog": "Ní féidir an phostáil seo a threisiú", "status.copy": "Copy link to status", "status.delete": "Scrios", "status.detailed_status": "Detailed conversation view", @@ -459,7 +459,7 @@ "status.edited": "Curtha in eagar in {date}", "status.edited_x_times": "Curtha in eagar {count, plural, one {{count} uair amháin} two {{count} uair} few {{count} uair} many {{count} uair} other {{count} uair}}", "status.embed": "Embed", - "status.favourite": "Favourite", + "status.favourite": "Rogha", "status.filtered": "Filtered", "status.history.created": "{name} created {date}", "status.history.edited": "Curtha in eagar ag {name} in {date}", @@ -473,10 +473,10 @@ "status.pin": "Pionnáil ar do phróifíl", "status.pinned": "Pinned post", "status.read_more": "Read more", - "status.reblog": "Boost", - "status.reblog_private": "Boost with original visibility", - "status.reblogged_by": "{name} boosted", - "status.reblogs.empty": "No one has boosted this post yet. When someone does, they will show up here.", + "status.reblog": "Treisigh", + "status.reblog_private": "Treisigh le léargas bunúsach", + "status.reblogged_by": "Treisithe ag {name}", + "status.reblogs.empty": "Níor threisigh éinne an phostáil seo fós. Nuair a threisigh duine éigin, beidh siad le feiceáil anseo.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", "status.reply": "Reply", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 1910e1037..bdfc02af7 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Thoir an roghainn seo air falbh", "compose_form.poll.switch_to_multiple": "Atharraich an cunntas-bheachd ach an gabh iomadh roghainn a thaghadh", "compose_form.poll.switch_to_single": "Atharraich an cunntas-bheachd gus nach gabh ach aon roghainn a thaghadh", - "compose_form.publish": "Publish", + "compose_form.publish": "Foillsich", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Sàbhail na h-atharraichean", "compose_form.sensitive.hide": "{count, plural, one {Cuir comharra gu bheil am meadhan frionasach} two {Cuir comharra gu bheil na meadhanan frionasach} few {Cuir comharra gu bheil na meadhanan frionasach} other {Cuir comharra gu bheil na meadhanan frionasach}}", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index bc2485c6f..ecbc373c6 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -4,7 +4,7 @@ "account.badges.bot": "בוט", "account.badges.group": "קבוצה", "account.block": "חסמי את @{name}", - "account.block_domain": "חסמו את שם המתחם (דומיין) {domain}", + "account.block_domain": "חסמו את קהילת {domain}", "account.blocked": "חסום", "account.browse_more_on_origin_server": "ראה יותר בפרופיל המקורי", "account.cancel_follow_request": "בטל בקשת מעקב", @@ -32,20 +32,20 @@ "account.mute": "להשתיק את @{name}", "account.mute_notifications": "להסתיר התראות מ @{name}", "account.muted": "מושתק", - "account.posts": "חצרוצים", - "account.posts_with_replies": "חצרוצים ותגובות", + "account.posts": "פוסטים", + "account.posts_with_replies": "פוסטים ותגובות", "account.report": "דווח על @{name}", "account.requested": "בהמתנה לאישור. לחצי כדי לבטל בקשת מעקב", "account.share": "שתף את הפרופיל של @{name}", "account.show_reblogs": "הצג הדהודים מאת @{name}", "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "הסר את החסימה של @{name}", - "account.unblock_domain": "הסראת שם המתחם {domain}", + "account.unblock_domain": "הסירי את החסימה של קהילת {domain}", "account.unblock_short": "הסר חסימה", "account.unendorse": "אל תקדם בפרופיל", "account.unfollow": "הפסקת מעקב", "account.unmute": "הפסקת השתקת @{name}", - "account.unmute_notifications": "להפסיק השתקת הודעות מ @{name}", + "account.unmute_notifications": "להפסיק השתקת התראות מ @{name}", "account.unmute_short": "ביטול השתקה", "account_note.placeholder": "יש ללחוץ כדי להוסיף הערות", "admin.dashboard.daily_retention": "קצב שימור משתמשים (פר יום) אחרי ההרשמה", @@ -54,49 +54,49 @@ "admin.dashboard.retention.cohort": "חודש רישום", "admin.dashboard.retention.cohort_size": "משתמשים חדשים", "alert.rate_limited.message": "נא לנסות אחרי {retry_time, time, medium}.", - "alert.rate_limited.title": "מגבלות מיכסה", + "alert.rate_limited.title": "חלה הגבלת קצב", "alert.unexpected.message": "אירעה שגיאה בלתי צפויה.", "alert.unexpected.title": "אופס!", - "announcement.announcement": "הודעה", + "announcement.announcement": "הכרזה", "attachments_list.unprocessed": "(לא מעובד)", "autosuggest_hashtag.per_week": "{count} לשבוע", "boost_modal.combo": "ניתן להקיש {combo} כדי לדלג בפעם הבאה", - "bundle_column_error.body": "משהו השתבש בעת הצגת הרכיב הזה.", + "bundle_column_error.body": "משהו השתבש בעת טעינת הרכיב הזה.", "bundle_column_error.retry": "לנסות שוב", "bundle_column_error.title": "שגיאת רשת", "bundle_modal_error.close": "לסגור", "bundle_modal_error.message": "משהו השתבש בעת טעינת הרכיב הזה.", "bundle_modal_error.retry": "לנסות שוב", - "column.blocks": "חסימות", + "column.blocks": "משתמשים חסומים", "column.bookmarks": "סימניות", - "column.community": "ציר זמן מקומי", + "column.community": "פיד שרת מקומי", "column.direct": "הודעות ישירות", - "column.directory": "גלוש פרופילים", - "column.domain_blocks": "Hidden domains", + "column.directory": "עיין בפרופילים", + "column.domain_blocks": "קהילות (שמות מתחם) מוסתרות", "column.favourites": "חיבובים", "column.follow_requests": "בקשות מעקב", - "column.home": "בבית", + "column.home": "פיד הבית", "column.lists": "רשימות", "column.mutes": "השתקות", "column.notifications": "התראות", - "column.pins": "Pinned toot", - "column.public": "בפרהסיה", - "column_back_button.label": "חזרה", - "column_header.hide_settings": "הסתרת העדפות", - "column_header.moveLeft_settings": "הזחת טור לשמאל", - "column_header.moveRight_settings": "הזחת טור לימין", - "column_header.pin": "קיבוע", + "column.pins": "פווסטים נעוצים", + "column.public": "פיד כללי (כל השרתים)", + "column_back_button.label": "בחזרה", + "column_header.hide_settings": "הסתרת הגדרות", + "column_header.moveLeft_settings": "הזזת טור לשמאל", + "column_header.moveRight_settings": "הזזת טור לימין", + "column_header.pin": "הצמדה", "column_header.show_settings": "הצגת העדפות", - "column_header.unpin": "שחרור קיבוע", + "column_header.unpin": "שחרור הצמדה", "column_subheading.settings": "אפשרויות", "community.column_settings.local_only": "מקומי בלבד", - "community.column_settings.media_only": "Media only", - "community.column_settings.remote_only": "מרחוק בלבד", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "community.column_settings.media_only": "מדיה בלבד", + "community.column_settings.remote_only": "מרוחק בלבד", + "compose.language.change": "שינוי שפת הפוסט", + "compose.language.search": "חיפוש שפות...", "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 toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", + "compose_form.encryption_warning": "פוסטים במסטודון לא מוצפנים מקצה לקצה. אל תשתפו מידע רגיש במסטודון.", + "compose_form.hashtag_warning": "פוסט זה לא יירשם תחת תגי הקבצה (האשטאגים) היות והנראות שלו היא 'לא רשום'. רק פוסטים ציבוריים יכולים להימצא באמצעות תגי הקבצה.", "compose_form.lock_disclaimer": "חשבונך אינו {locked}. כל אחד יוכל לעקוב אחריך כדי לקרוא את הודעותיך המיועדות לעוקבים בלבד.", "compose_form.lock_disclaimer.lock": "נעול", "compose_form.placeholder": "מה עובר לך בראש?", @@ -106,36 +106,36 @@ "compose_form.poll.remove_option": "הסר בחירה זו", "compose_form.poll.switch_to_multiple": "אפשרו בחירה מרובה בסקר", "compose_form.poll.switch_to_single": "אפשרו בחירה בודדת בסקר", - "compose_form.publish": "Publish", + "compose_form.publish": "פרסום", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "שמירת שינויים", "compose_form.sensitive.hide": "{count, plural, one {סימון מידע כרגיש} other {סימון מידע כרגיש}}", "compose_form.sensitive.marked": "{count, plural, one {מידע מסומן כרגיש} other {מידע מסומן כרגיש}}", "compose_form.sensitive.unmarked": "{count, plural, one {מידע לא מסומן כרגיש} other {מידע לא מסומן כרגיש}}", - "compose_form.spoiler.marked": "Text is hidden behind warning", - "compose_form.spoiler.unmarked": "Text is not hidden", - "compose_form.spoiler_placeholder": "אזהרת תוכן", + "compose_form.spoiler.marked": "הסר אזהרת תוכן", + "compose_form.spoiler.unmarked": "הוסף אזהרת תוכן", + "compose_form.spoiler_placeholder": "כתוב את האזהרה שלך כאן", "confirmation_modal.cancel": "ביטול", "confirmations.block.block_and_report": "לחסום ולדווח", "confirmations.block.confirm": "לחסום", - "confirmations.block.message": "לחסום את {name}?", + "confirmations.block.message": "האם את/ה בטוח/ה שברצונך למחוק את \"{name}\"?", "confirmations.delete.confirm": "למחוק", - "confirmations.delete.message": "למחוק את ההודעה?", + "confirmations.delete.message": "בטוח/ה שאת/ה רוצה למחוק את ההודעה?", "confirmations.delete_list.confirm": "למחוק", "confirmations.delete_list.message": "האם אתם בטוחים שאתם רוצים למחוק את הרשימה לצמיתות?", "confirmations.discard_edit_media.confirm": "השלך", "confirmations.discard_edit_media.message": "יש לך שינויים לא שמורים לתיאור המדיה. להשליך אותם בכל זאת?", - "confirmations.domain_block.confirm": "הסתר קהילה שלמה", - "confirmations.domain_block.message": "באמת באמת לחסום את כל קהילת {domain}? ברב המקרים השתקות נבחרות של מספר משתמשים מסויימים צריכה להספיק.", + "confirmations.domain_block.confirm": "חסמו לגמרי את שם המתחם (דומיין)", + "confirmations.domain_block.message": "בטוחה שברצונך באמת לחסום את קהילת {domain}? ברב המקרים השתקה וחסימה של מספר משתמשים עשוייה להספיק. לא תראי תוכל מכלל שם המתחם בפידים הציבוריים או בהתראות שלך. העוקבים שלך מהקהילה הזאת יוסרו", "confirmations.logout.confirm": "להתנתק", "confirmations.logout.message": "האם אתם בטוחים שאתם רוצים להתנתק?", "confirmations.mute.confirm": "להשתיק", - "confirmations.mute.explanation": "זה יסתיר חצרוצים שלהם וחצרוצים המזכירים אותם, אבל עדיין יתיר להם לראות פוסטים שלך ולעקוב אחריך.", + "confirmations.mute.explanation": "זה יסתיר פוסטים שלהם ופוסטים שמאזכרים אותם, אבל עדיין יתיר להם לראות פוסטים שלך ולעקוב אחריך.", "confirmations.mute.message": "להשתיק את {name}?", "confirmations.redraft.confirm": "מחק וערוך מחדש", - "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.", + "confirmations.redraft.message": "בטוחה שאת רוצה למחוק ולהתחיל טיוטה חדשה? חיבובים והדהודים יאבדו, ותגובות לפוסט המקורי ישארו יתומות.", "confirmations.reply.confirm": "הגב", - "confirmations.reply.message": "הגבה עכשיו ידרוס את ההודעה שאתם כותבים כעת. האם אתם בטוחים שברצונכם להמשיך?", + "confirmations.reply.message": "תגובה עכשיו תדרוס את ההודעה שכבר התחלתים לכתוב. האם אתם בטוחים שברצונכם להמשיך?", "confirmations.unfollow.confirm": "להפסיק מעקב", "confirmations.unfollow.message": "להפסיק מעקב אחרי {name}?", "conversation.delete": "מחיקת שיחה", @@ -149,7 +149,7 @@ "embed.instructions": "ניתן להטמיע את ההודעה באתרך ע\"י העתקת הקוד שלהלן.", "embed.preview": "דוגמא כיצד זה יראה:", "emoji_button.activity": "פעילות", - "emoji_button.clear": "Clear", + "emoji_button.clear": "ניקוי", "emoji_button.custom": "מיוחדים", "emoji_button.flags": "דגלים", "emoji_button.food": "אוכל ושתיה", @@ -164,22 +164,22 @@ "emoji_button.symbols": "סמלים", "emoji_button.travel": "טיולים ואתרים", "empty_column.account_suspended": "חשבון מושהה", - "empty_column.account_timeline": "No toots here!", + "empty_column.account_timeline": "אין עדיין אף פוסט!", "empty_column.account_unavailable": "פרופיל לא זמין", "empty_column.blocks": "עדיין לא חסמתם משתמשים אחרים.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", - "empty_column.community": "טור הסביבה ריק. יש לפרסם משהו כדי שדברים יתרחילו להתגלגל!", + "empty_column.community": "פיד השרת המקומי ריק. יש לפרסם משהו כדי שדברים יתרחילו להתגלגל!", "empty_column.direct": "אין לך שום הודעות פרטיות עדיין. כשתשלחו או תקבלו אחת, היא תופיע כאן.", - "empty_column.domain_blocks": "There are no hidden domains yet.", + "empty_column.domain_blocks": "אין עדיין קהילות מוסתרות.", "empty_column.explore_statuses": "אין נושאים חמים כרגע. אולי אחר כך!", - "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", - "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", + "empty_column.favourited_statuses": "אין עדיין פוסטים שחיבבת. כשתחבב את הראשון, הוא יופיע כאן.", + "empty_column.favourites": "עוד לא חיבבו את הפוסט הזה. כאשר זה יקרה, החיבובים יופיעו כאן.", "empty_column.follow_recommendations": "נראה שלא ניתן לייצר המלצות עבורך. נסה/י להשתמש בחיפוש כדי למצוא אנשים מוכרים או לבדוק את הנושאים החמים.", "empty_column.follow_requests": "אין לך שום בקשות מעקב עדיין. לכשיתקבלו כאלה, הן תופענה כאן.", "empty_column.hashtag": "אין כלום בהאשתג הזה עדיין.", "empty_column.home": "אף אחד לא במעקב עדיין. אפשר לבקר ב{public} או להשתמש בחיפוש כדי להתחיל ולהכיר חצוצרנים אחרים. {suggestions}", "empty_column.home.suggestions": "ראה/י כמה הצעות", - "empty_column.list": "אין עדיין מאום ברשימה.", + "empty_column.list": "אין עדיין פריטים ברשימה. כאשר חברים ברשימה הזאת יפרסמו פוסטים חדשים, הם יופיעו פה.", "empty_column.lists": "אין לך שום רשימות עדיין. לכשיהיו, הן תופענה כאן.", "empty_column.mutes": "עוד לא השתקת שום משתמש.", "empty_column.notifications": "אין התראות עדיין. יאללה, הגיע הזמן להתחיל להתערבב.", @@ -194,22 +194,22 @@ "explore.suggested_follows": "עבורך", "explore.title": "סיור", "explore.trending_links": "חדשות", - "explore.trending_statuses": "חצרוצים", + "explore.trending_statuses": "פוסטים", "explore.trending_tags": "האשטאגים", "follow_recommendations.done": "בוצע", "follow_recommendations.heading": "עקב/י אחרי אנשים שתרצה/י לראות את חצרוציהם! הנה כמה הצעות.", "follow_recommendations.lead": "חצרוצים מאנשים במעקב יופיעו בסדר כרונולוגי בפיד הבית. אל תחששו מטעויות, אפשר להסיר מעקב באותה הקלות ובכל זמן!", - "follow_request.authorize": "קבלה", + "follow_request.authorize": "הרשאה", "follow_request.reject": "דחיה", "follow_requests.unlocked_explanation": "למרות שחשבונך אינו נעול, צוות {domain} חושב שאולי כדאי לוודא את בקשות המעקב האלה ידנית.", "generic.saved": "נשמר", "getting_started.developers": "מפתחות", - "getting_started.directory": "ספריית פרופילים", + "getting_started.directory": "מדריך פרופילים", "getting_started.documentation": "תיעוד", "getting_started.heading": "בואו נתחיל", "getting_started.invite": "להזמין אנשים", "getting_started.open_source_notice": "מסטודון היא תוכנה חופשית (בקוד פתוח). ניתן לתרום או לדווח על בעיות בגיטהאב: {github}.", - "getting_started.security": "Security", + "getting_started.security": "הגדרות חשבון", "getting_started.terms": "תנאי שימוש", "hashtag.column_header.tag_mode.all": "ו- {additional}", "hashtag.column_header.tag_mode.any": "או {additional}", @@ -218,8 +218,8 @@ "hashtag.column_settings.select.placeholder": "הזן תגי הקבצה…", "hashtag.column_settings.tag_mode.all": "כל אלה", "hashtag.column_settings.tag_mode.any": "כל אלה", - "hashtag.column_settings.tag_mode.none": "אפאחד מאלה", - "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.column_settings.tag_mode.none": "אף אחד מאלה", + "hashtag.column_settings.tag_toggle": "כלול תגיות נוספות בטור זה", "home.column_settings.basic": "למתחילים", "home.column_settings.show_reblogs": "הצגת הדהודים", "home.column_settings.show_replies": "הצגת תגובות", @@ -259,7 +259,7 @@ "keyboard_shortcuts.start": "to open \"get started\" column", "keyboard_shortcuts.toggle_hidden": "הצגת/הסתרת טקסט מוסתר מאחורי אזהרת תוכן", "keyboard_shortcuts.toggle_sensitivity": "הצגת/הסתרת מדיה", - "keyboard_shortcuts.toot": "להתחיל חיצרוץ חדש", + "keyboard_shortcuts.toot": "להתחיל פוסט חדש", "keyboard_shortcuts.unfocus": "לצאת מתיבת חיבור/חיפוש", "keyboard_shortcuts.up": "לנוע במעלה הרשימה", "lightbox.close": "סגירה", @@ -267,8 +267,8 @@ "lightbox.expand": "הרחבת קופסת צפייה בתמונה", "lightbox.next": "הלאה", "lightbox.previous": "הקודם", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "הצג חשבון בכל זאת", + "limited_account_hint.title": "פרופיל זה הוסתר ע\"י מנהלי השרת שלך.", "lists.account.add": "הוסף לרשימה", "lists.account.remove": "הסר מרשימה", "lists.delete": "מחיקת רשימה", @@ -288,32 +288,32 @@ "missing_indicator.label": "לא נמצא", "missing_indicator.sublabel": "לא ניתן היה למצוא את המשאב", "mute_modal.duration": "משך הזמן", - "mute_modal.hide_notifications": "להסתיר הודעות מחשבון זה?", + "mute_modal.hide_notifications": "להסתיר התראות מחשבון זה?", "mute_modal.indefinite": "ללא תאריך סיום", "navigation_bar.apps": "יישומונים לנייד", - "navigation_bar.blocks": "חסימות", + "navigation_bar.blocks": "משתמשים חסומים", "navigation_bar.bookmarks": "סימניות", - "navigation_bar.community_timeline": "ציר זמן מקומי", - "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.explore": "סיור", "navigation_bar.favourites": "חיבובים", "navigation_bar.filters": "מילים מושתקות", "navigation_bar.follow_requests": "בקשות מעקב", "navigation_bar.follows_and_followers": "נעקבים ועוקבים", - "navigation_bar.info": "מידע נוסף", + "navigation_bar.info": "אודות שרת זה", "navigation_bar.keyboard_shortcuts": "קיצורי מקלדת", "navigation_bar.lists": "רשימות", - "navigation_bar.logout": "יציאה", + "navigation_bar.logout": "התנתקות", "navigation_bar.mutes": "השתקות", "navigation_bar.personal": "אישי", - "navigation_bar.pins": "חיצרוצים מקובעים", + "navigation_bar.pins": "פוסטים נעוצים", "navigation_bar.preferences": "העדפות", "navigation_bar.public_timeline": "ציר זמן בין-קהילתי", - "navigation_bar.security": "בטיחות", + "navigation_bar.security": "אבטחה", "notification.admin.sign_up": "{name} נרשמו", "notification.favourite": "חצרוצך חובב על ידי {name}", "notification.follow": "{name} במעקב אחרייך", @@ -365,20 +365,20 @@ "poll.refresh": "רענון", "poll.total_people": "{count, plural, one {# איש/אישה} other {# אנשים}}", "poll.total_votes": "{count, plural, one {# קול} other {# קולות}}", - "poll.vote": "קול", + "poll.vote": "הצבעה", "poll.voted": "הצבעת לתשובה זו", "poll.votes": "{votes, plural, one {# קול} other {# קולות}}", "poll_button.add_poll": "הוספת סקר", "poll_button.remove_poll": "הסרת סקר", "privacy.change": "שינוי פרטיות ההודעה", - "privacy.direct.long": "הצג רק למי שהודעה זו פונה אליו", - "privacy.direct.short": "אנשים מוזכרים בלבד", + "privacy.direct.long": "רק למשתמשים מאוזכרים (mentioned)", + "privacy.direct.short": "למאוזכרים בלבד", "privacy.private.long": "הצג לעוקבים בלבד", - "privacy.private.short": "עוקבים בלבד", + "privacy.private.short": "לעוקבים בלבד", "privacy.public.long": "גלוי לכל", "privacy.public.short": "פומבי", "privacy.unlisted.long": "גלוי לכל, אבל מוסתר מאמצעי גילוי", - "privacy.unlisted.short": "לא לפיד הכללי", + "privacy.unlisted.short": "לא רשום (לא לפיד הכללי)", "refresh": "רענון", "regeneration_indicator.label": "טוען…", "regeneration_indicator.sublabel": "פיד הבית שלך בהכנה!", @@ -395,7 +395,7 @@ "relative_time.today": "היום", "reply_indicator.cancel": "ביטול", "report.block": "לחסום", - "report.block_explanation": "לא ניתן יהיה לראות את חצרוציהם. הם לא יוכלו לראות את חצרוציך או לעקוב אחריך. הם יוכלו לדעת שהם חסומים.", + "report.block_explanation": "לא ניתן יהיה לראות את הפוסטים שלהן. הן לא יוכלו לראות את הפוסטים שלך או לעקוב אחריך. הם יוכלו לדעת שהם חסומים.", "report.categories.other": "אחר", "report.categories.spam": "ספאם", "report.categories.violation": "התוכן מפר אחד או יותר מחוקי השרת", @@ -451,7 +451,7 @@ "status.bookmark": "סימניה", "status.cancel_reblog_private": "הסרת הדהוד", "status.cannot_reblog": "לא ניתן להדהד הודעה זו", - "status.copy": "Copy link to status", + "status.copy": "העתק/י קישור לפוסט זה", "status.delete": "מחיקה", "status.detailed_status": "תצוגת שיחה מפורטת", "status.direct": "הודעה ישירה ל@{name}", @@ -469,8 +469,8 @@ "status.more": "עוד", "status.mute": "להשתיק את @{name}", "status.mute_conversation": "השתקת שיחה", - "status.open": "הרחבת הודעה", - "status.pin": "לקבע באודות", + "status.open": "הרחבת פוסט זה", + "status.pin": "הצמדה לפרופיל שלי", "status.pinned": "Pinned toot", "status.read_more": "לקרוא עוד", "status.reblog": "הדהוד", @@ -480,7 +480,7 @@ "status.redraft": "מחיקה ועריכה מחדש", "status.remove_bookmark": "הסרת סימניה", "status.reply": "תגובה", - "status.replyAll": "תגובה לכולם", + "status.replyAll": "תגובה לפתיל", "status.report": "דיווח על @{name}", "status.sensitive_warning": "תוכן רגיש", "status.share": "שיתוף", @@ -488,15 +488,15 @@ "status.show_less_all": "להציג פחות מהכל", "status.show_more": "הראה יותר", "status.show_more_all": "להציג יותר מהכל", - "status.show_thread": "להציג סיב", + "status.show_thread": "הצג כחלק מפתיל", "status.uncached_media_warning": "לא זמין", "status.unmute_conversation": "הסרת השתקת שיחה", "status.unpin": "לשחרר מקיבוע באודות", "suggestions.dismiss": "להתעלם מהצעה", "suggestions.header": "ייתכן שזה יעניין אותך…", - "tabs_bar.federated_timeline": "ציר זמן בין-קהילתי", - "tabs_bar.home": "בבית", - "tabs_bar.local_timeline": "ציר זמן מקומי", + "tabs_bar.federated_timeline": "פיד כללי (בין-קהילתי)", + "tabs_bar.home": "פיד הבית", + "tabs_bar.local_timeline": "פיד שרת מקומי", "tabs_bar.notifications": "התראות", "tabs_bar.search": "חיפוש", "time_remaining.days": "נותרו {number, plural, one {# יום} other {# ימים}}", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 9b8b6f5fe..10f80ee61 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -95,7 +95,7 @@ "compose.language.change": "Ganti bahasa", "compose.language.search": "Telusuri bahasa...", "compose_form.direct_message_warning_learn_more": "Pelajari selengkapnya", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "Kiriman di Mastodon tidak dienkripsi end-to-end. Jangan bagikan informasi sensitif melalui Mastodon.", "compose_form.hashtag_warning": "Toot ini tidak akan ada dalam daftar tagar manapun karena telah diatur sebagai tidak terdaftar. Hanya postingan publik yang bisa dicari dengan tagar.", "compose_form.lock_disclaimer": "Akun anda tidak {locked}. Semua orang dapat mengikuti anda untuk melihat postingan khusus untuk pengikut anda.", "compose_form.lock_disclaimer.lock": "terkunci", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 4c609edb7..3eea9dcca 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -442,7 +442,7 @@ "search_results.all": "Omna", "search_results.hashtags": "Hashtagi", "search_results.nothing_found": "Ne povas ganar irgo per ca trovvorti", - "search_results.statuses": "Toots", + "search_results.statuses": "Posti", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.total": "{count, number} {count, plural, one {rezulto} other {rezulti}}", "status.admin_account": "Apertez jerintervizajo por @{name}", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 12c15e389..a38f18fa3 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Vê hilbijarê rake", "compose_form.poll.switch_to_multiple": "Rapirsî yê biguherînin da ku destûr bidin vebijarkên pirjimar", "compose_form.poll.switch_to_single": "Rapirsîyê biguherîne da ku mafê bidî tenê vebijêrkek", - "compose_form.publish": "Publish", + "compose_form.publish": "Biweşîne", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Guhertinan tomar bike", "compose_form.sensitive.hide": "{count, plural, one {Medya wekî hestiyar nîşan bide} other {Medya wekî hestiyar nîşan bide}}", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 1a981ea0e..b889948cf 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -26,7 +26,7 @@ "account.joined": "Pievienojās {date}", "account.link_verified_on": "Šīs saites piederība ir pārbaudīta {date}", "account.locked_info": "Šī konta privātuma statuss ir slēgts. Īpašnieks izskatīs, kurš viņam drīkst sekot.", - "account.media": "Mediji", + "account.media": "Multivide", "account.mention": "Piemin @{name}", "account.moved_to": "{name} ir pārcelts uz:", "account.mute": "Apklusināt @{name}", @@ -90,7 +90,7 @@ "column_header.unpin": "Atspraust", "column_subheading.settings": "Iestatījumi", "community.column_settings.local_only": "Tikai vietējie", - "community.column_settings.media_only": "Tikai mediji", + "community.column_settings.media_only": "Tikai multivide", "community.column_settings.remote_only": "Tikai attālinātie", "compose.language.change": "Mainīt valodu", "compose.language.search": "Meklēt valodas...", @@ -109,9 +109,9 @@ "compose_form.publish": "Publicēt", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Saglabāt izmaiņas", - "compose_form.sensitive.hide": "{count, plural, one {Atzīmēt mediju kā sensitīvu} other {Atzīmēt medijus kā sensitīvus}}", - "compose_form.sensitive.marked": "{count, plural, one {Medijs ir atzīmēts kā sensitīvs} other {Mediji ir atzīmēti kā sensitīvi}}", - "compose_form.sensitive.unmarked": "{count, plural, one {Medijs nav atzīmēts kā sensitīvs} other {Mediji nav atzīmēti kā sensitīvi}}", + "compose_form.sensitive.hide": "{count, plural, one {Atzīmēt multividi kā sensitīvu} other {Atzīmēt multivides kā sensitīvas}}", + "compose_form.sensitive.marked": "{count, plural, one {Multivide ir atzīmēta kā sensitīva} other {Multivides ir atzīmētas kā sensitīvas}}", + "compose_form.sensitive.unmarked": "{count, plural, one {Multivide nav atzīmēts kā sensitīva} other {Multivides nav atzīmētas kā sensitīvas}}", "compose_form.spoiler.marked": "Noņemt satura brīdinājumu", "compose_form.spoiler.unmarked": "Pievienot satura brīdinājumu", "compose_form.spoiler_placeholder": "Ieraksti savu brīdinājumu šeit", @@ -124,7 +124,7 @@ "confirmations.delete_list.confirm": "Dzēst", "confirmations.delete_list.message": "Vai tiešam vēlies neatgriezeniski dzēst šo sarakstu?", "confirmations.discard_edit_media.confirm": "Izmest", - "confirmations.discard_edit_media.message": "Vai tev ir nesaglabātas izmaiņas mediju aprakstā vai priekšskatījumā, vai tomēr atmest tās?", + "confirmations.discard_edit_media.message": "Vai tev ir nesaglabātas izmaiņas multivides aprakstā vai priekšskatījumā, vai tomēr atmest tās?", "confirmations.domain_block.confirm": "Bloķēt visu domēnu", "confirmations.domain_block.message": "Vai tu tiešām, tiešam vēlies bloķēt visu domēnu {domain}? Lielākajā daļā gadījumu pietiek ja nobloķē vai apklusini kādu. Tu neredzēsi saturu vai paziņojumus no šī domēna nevienā laika līnijā. Tavi sekotāji no šī domēna tiks noņemti.", "confirmations.logout.confirm": "Iziet", @@ -171,7 +171,7 @@ "empty_column.community": "Vietējā ziņu lenta ir tukša. Uzraksti kaut ko publiski, lai viss notiktu!", "empty_column.direct": "Patrez tev nav privātu ziņu. Tiklīdz tādu nosūtīsi vai saņemsi, tās parādīsies šeit.", "empty_column.domain_blocks": "Vēl nav neviena bloķēta domēna.", - "empty_column.explore_statuses": "Pašlaik nekas nav tendēts. Pārbaudiet vēlāk!", + "empty_column.explore_statuses": "Pašlaik nekā aktuāla nav. Pārbaudi vēlāk!", "empty_column.favourited_statuses": "Patreiz tev nav neviena izceltā ieraksta. Kad kādu izcelsi, tas parādīsies šeit.", "empty_column.favourites": "Neviens šo ziņojumu vel nav izcēlis. Kad būs, tie parādīsies šeit.", "empty_column.follow_recommendations": "Šķiet, ka tev nevarēja ģenerēt ieteikumus. Vari mēģināt izmantot meklēšanu, lai meklētu cilvēkus, kurus tu varētu pazīt, vai izpētīt populārākās atsauces.", @@ -188,7 +188,7 @@ "error.unexpected_crash.explanation_addons": "Šo lapu nevarēja parādīt pareizi. Šo kļūdu, iespējams, izraisīja pārlūkprogrammas papildinājums vai automātiskās tulkošanas rīki.", "error.unexpected_crash.next_steps": "Mēģini atsvaidzināt lapu. Ja tas nepalīdz, iespējams, varēsi lietot Mastodon, izmantojot citu pārlūkprogrammu vai vietējo lietotni.", "error.unexpected_crash.next_steps_addons": "Mēģini tos atspējot un atsvaidzināt lapu. Ja tas nepalīdz, iespējams, varēsi lietot Mastodon, izmantojot citu pārlūkprogrammu vai vietējo lietotni.", - "errors.unexpected_crash.copy_stacktrace": "Iekopēt starpliktuvē", + "errors.unexpected_crash.copy_stacktrace": "Kopēt stacktrace uz starpliktuvi", "errors.unexpected_crash.report_issue": "Ziņot par problēmu", "explore.search_results": "Meklēšanas rezultāti", "explore.suggested_follows": "Tev", @@ -207,7 +207,7 @@ "getting_started.directory": "Profila direktorija", "getting_started.documentation": "Dokumentācija", "getting_started.heading": "Darba sākšana", - "getting_started.invite": "Uzaiciniet cilvēkus", + "getting_started.invite": "Uzaicini cilvēkus", "getting_started.open_source_notice": "Mastodon ir atvērtā koda programmatūra. Tu vari dot savu ieguldījumu vai arī ziņot par problēmām {github}.", "getting_started.security": "Konta iestatījumi", "getting_started.terms": "Pakalpojuma noteikumi", @@ -230,7 +230,7 @@ "intervals.full.minutes": "{number, plural, one {# minūte} other {# minūtes}}", "keyboard_shortcuts.back": "Pāriet atpakaļ", "keyboard_shortcuts.blocked": "Atvērt bloķēto lietotāju sarakstu", - "keyboard_shortcuts.boost": "Palielināt ziņu", + "keyboard_shortcuts.boost": "Atbalstīt ziņu", "keyboard_shortcuts.column": "Fokusēt kolonnu", "keyboard_shortcuts.compose": "Fokusēt veidojamā teksta lauku", "keyboard_shortcuts.description": "Apraksts", @@ -245,11 +245,11 @@ "keyboard_shortcuts.hotkey": "Ātrais taustiņš", "keyboard_shortcuts.legend": "Parādīt šo leģendu", "keyboard_shortcuts.local": "Atvērt vietējo ziņu lenti", - "keyboard_shortcuts.mention": "Minējuma autors", + "keyboard_shortcuts.mention": "Pieminēt autoru", "keyboard_shortcuts.muted": "Atvērt apklusināto lietotāju sarakstu", - "keyboard_shortcuts.my_profile": "Atvērt manu profilu", + "keyboard_shortcuts.my_profile": "Atvērt savu profilu", "keyboard_shortcuts.notifications": "Atvērt paziņojumu kolonnu", - "keyboard_shortcuts.open_media": "Atvērt mediju", + "keyboard_shortcuts.open_media": "Atvērt multividi", "keyboard_shortcuts.pinned": "Atvērt piesprausto ziņu sarakstu", "keyboard_shortcuts.profile": "Atvērt autora profilu", "keyboard_shortcuts.reply": "Atbildēt", @@ -258,15 +258,15 @@ "keyboard_shortcuts.spoilers": "Rādīt/slēpt CW lauku", "keyboard_shortcuts.start": "Atvērt kolonnu “Darba sākšana”", "keyboard_shortcuts.toggle_hidden": "Rādīt/slēpt tekstu aiz CW", - "keyboard_shortcuts.toggle_sensitivity": "Rādīt/slēpt mediju", - "keyboard_shortcuts.toot": "Sākt jaunu ziņu", + "keyboard_shortcuts.toggle_sensitivity": "Rādīt/slēpt multividi", + "keyboard_shortcuts.toot": "Sāc jaunu ziņu", "keyboard_shortcuts.unfocus": "Atfokusēt teksta veidošanu/meklēšanu", "keyboard_shortcuts.up": "Pārvietot sarakstā uz augšu", "lightbox.close": "Aizvērt", - "lightbox.compress": "Saspiest attēla ietvaru", - "lightbox.expand": "Paplašināt attēla ietvaru", + "lightbox.compress": "Saspiest attēla skata lodziņu", + "lightbox.expand": "Izvērst attēla skata lodziņu", "lightbox.next": "Tālāk", - "lightbox.previous": "Iepriekš", + "lightbox.previous": "Iepriekšējais", "limited_account_hint.action": "Tik un tā rādīt profilu", "limited_account_hint.title": "Tava servera moderatori ir paslēpuši šo profilu.", "lists.account.add": "Pievienot sarakstam", @@ -276,10 +276,10 @@ "lists.edit.submit": "Mainīt virsrakstu", "lists.new.create": "Pievienot sarakstu", "lists.new.title_placeholder": "Jaunais saraksta nosaukums", - "lists.replies_policy.followed": "Jebkuram lietotājam, kuram seko", + "lists.replies_policy.followed": "Jebkurš sekots lietotājs", "lists.replies_policy.list": "Saraksta dalībnieki", "lists.replies_policy.none": "Nevienam", - "lists.replies_policy.title": "Rādīt atbildes:", + "lists.replies_policy.title": "Rādīt atbildes uz:", "lists.search": "Meklēt starp cilvēkiem, kuriem tu seko", "lists.subheading": "Tavi saraksti", "load_pending": "{count, plural, one {# jauna lieta} other {# jaunas lietas}}", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 62c64acec..3a57a5c3f 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Levar aquesta opcion", "compose_form.poll.switch_to_multiple": "Cambiar lo sondatge per permetre de causidas multiplas", "compose_form.poll.switch_to_single": "Cambiar lo sondatge per permetre una sola causida", - "compose_form.publish": "Publish", + "compose_form.publish": "Publicar", "compose_form.publish_loud": "{publish} !", "compose_form.save_changes": "Salvar los cambiaments", "compose_form.sensitive.hide": "Marcar coma sensible", @@ -396,7 +396,7 @@ "reply_indicator.cancel": "Anullar", "report.block": "Blocar", "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", - "report.categories.other": "Other", + "report.categories.other": "Autre", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", "report.category.subtitle": "Choose the best match", @@ -427,9 +427,9 @@ "report.target": "Senhalar {target}", "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", + "report.thanks.title": "Volètz pas veire aquò ?", "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", - "report.unfollow": "Unfollow @{name}", + "report.unfollow": "Quitar de sègre {name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Recercar", "search_popout.search_format": "Format recèrca avançada", @@ -439,7 +439,7 @@ "search_popout.tips.text": "Lo tèxte brut tòrna escais, noms d’utilizaire e etiquetas correspondents", "search_popout.tips.user": "utilizaire", "search_results.accounts": "Gents", - "search_results.all": "All", + "search_results.all": "Tot", "search_results.hashtags": "Etiquetas", "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Tuts", @@ -457,12 +457,12 @@ "status.direct": "Messatge per @{name}", "status.edit": "Modificar", "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edited_x_times": "Modificat {count, plural, un {{count} còp} other {{count} còps}}", "status.embed": "Embarcar", "status.favourite": "Apondre als favorits", "status.filtered": "Filtrat", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} o creèt lo {date}", + "status.history.edited": "{name} o modifiquèt lo {date}", "status.load_more": "Cargar mai", "status.media_hidden": "Mèdia rescondut", "status.mention": "Mencionar", @@ -520,7 +520,7 @@ "upload_error.poll": "Lo mandadís de fichièr es pas autorizat pels sondatges.", "upload_form.audio_description": "Descriure per las personas amb pèrdas auditivas", "upload_form.description": "Descripcion pels mal vesents", - "upload_form.description_missing": "No description added", + "upload_form.description_missing": "Cap de descripcion pas aponduda", "upload_form.edit": "Modificar", "upload_form.thumbnail": "Cambiar la vinheta", "upload_form.undo": "Suprimir", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 71a57bcb4..bdf973e04 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -95,7 +95,7 @@ "compose.language.change": "Alterar idioma", "compose.language.search": "Pesquisar idiomas...", "compose_form.direct_message_warning_learn_more": "Saiba mais", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "Postagens no Mastodon não são criptografadas de ponta-a-ponta. Não compartilhe nenhuma informação sensível no Mastodon.", "compose_form.hashtag_warning": "Este toot não aparecerá em nenhuma hashtag porque está como não-listado. Somente toots públicos podem ser pesquisados por hashtag.", "compose_form.lock_disclaimer": "Seu perfil não está {locked}. Qualquer um pode te seguir e ver os toots privados.", "compose_form.lock_disclaimer.lock": "trancado", @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Remover opção", "compose_form.poll.switch_to_multiple": "Permitir múltiplas escolhas", "compose_form.poll.switch_to_single": "Opção única", - "compose_form.publish": "Publish", + "compose_form.publish": "Publicar", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Salvar alterações", "compose_form.sensitive.hide": "{count, plural, one {Marcar mídia como sensível} other {Marcar mídias como sensível}}", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index bec2fae64..861722c2f 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -32,7 +32,7 @@ "account.mute": "Nevšímaj si @{name}", "account.mute_notifications": "Stĺm oboznámenia od @{name}", "account.muted": "Nevšímaný/á", - "account.posts": "Príspevky", + "account.posts": "Príspevky/ov", "account.posts_with_replies": "Príspevky, aj s odpoveďami", "account.report": "Nahlás @{name}", "account.requested": "Čaká na schválenie. Klikni pre zrušenie žiadosti", @@ -93,7 +93,7 @@ "community.column_settings.media_only": "Iba médiá", "community.column_settings.remote_only": "Iba odľahlé", "compose.language.change": "Zmeň jazyk", - "compose.language.search": "Search languages...", + "compose.language.search": "Hľadaj medzi jazykmi...", "compose_form.direct_message_warning_learn_more": "Zisti viac", "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": "Tento toot nebude zobrazený pod žiadným haštagom lebo nieje listovaný. Iba verejné tooty môžu byť nájdené podľa haštagu.", @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Odstráň túto voľbu", "compose_form.poll.switch_to_multiple": "Zmeň anketu pre povolenie viacerých možností", "compose_form.poll.switch_to_single": "Zmeň anketu na takú s jedinou voľbou", - "compose_form.publish": "Publish", + "compose_form.publish": "Zverejni", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Ulož zmeny", "compose_form.sensitive.hide": "Označ médiá ako chúlostivé", @@ -149,7 +149,7 @@ "embed.instructions": "Umiestni kód uvedený nižšie pre pridanie tohto statusu na tvoju web stránku.", "embed.preview": "Tu je ako to bude vyzerať:", "emoji_button.activity": "Aktivita", - "emoji_button.clear": "Clear", + "emoji_button.clear": "Vyčisti", "emoji_button.custom": "Vlastné", "emoji_button.flags": "Vlajky", "emoji_button.food": "Jedlá a nápoje", @@ -169,7 +169,7 @@ "empty_column.blocks": "Ešte si nikoho nezablokoval/a.", "empty_column.bookmarked_statuses": "Ešte nemáš žiadné záložky. Keď si pridáš príspevok k záložkám, zobrazí sa tu.", "empty_column.community": "Lokálna časová os je prázdna. Napíšte niečo, aby sa to tu začalo hýbať!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "Ešte nemáš žiadne priame správy. Keď nejakú pošleš, alebo dostaneš, ukáže sa tu.", "empty_column.domain_blocks": "Žiadne domény ešte niesú skryté.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Nemáš obľúbené ešte žiadne príspevky. Keď si nejaký obľúbiš, bude zobrazený práve tu.", @@ -267,7 +267,7 @@ "lightbox.expand": "Rozšíriť náhľad obrázku", "lightbox.next": "Ďalšie", "lightbox.previous": "Predchádzajúci", - "limited_account_hint.action": "Show profile anyway", + "limited_account_hint.action": "Ukáž profil aj tak", "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", "lists.account.add": "Pridaj do zoznamu", "lists.account.remove": "Odober zo zoznamu", @@ -372,10 +372,10 @@ "poll_button.remove_poll": "Odstráň anketu", "privacy.change": "Uprav súkromie príspevku", "privacy.direct.long": "Pošli iba spomenutým užívateľom", - "privacy.direct.short": "Direct", + "privacy.direct.short": "Iba spomenutým ľudom", "privacy.private.long": "Pošli iba následovateľom", - "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all", + "privacy.private.short": "Iba pre sledujúcich", + "privacy.public.long": "Viditeľné pre všetkých", "privacy.public.short": "Verejné", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Verejne, ale nezobraziť v osi", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 5aa5d5ef3..ba354e98b 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -92,10 +92,10 @@ "community.column_settings.local_only": "Vetëm vendore", "community.column_settings.media_only": "Vetëm Media", "community.column_settings.remote_only": "Vetëm të largëta", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "Ndryshoni gjuhën", + "compose.language.search": "Kërkoni te gjuhët…", "compose_form.direct_message_warning_learn_more": "Mësoni më tepër", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "Postimet në Mastodon nuk fshehtëzohen skaj-më-skaj. Mos ndani me të tjerë gjëra me spec në Mastodon.", "compose_form.hashtag_warning": "Ky mesazh s’do të paraqitet nën ndonjë hashtag, ngaqë s’i është caktuar ndonjë. Vetëm mesazhet publike mund të kërkohen sipas hashtagësh.", "compose_form.lock_disclaimer": "Llogaria juaj s’është {locked}. Mund ta ndjekë cilido, për të parë postimet tuaja vetëm për ndjekësit.", "compose_form.lock_disclaimer.lock": "e kyçur", @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Hiqe këtë zgjedhje", "compose_form.poll.switch_to_multiple": "Ndrysho votimin për të lejuar shumë zgjedhje", "compose_form.poll.switch_to_single": "Ndrysho votimin për të lejuar vetëm një zgjedhje", - "compose_form.publish": "Publish", + "compose_form.publish": "Botoje", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Ruaji ndryshimet", "compose_form.sensitive.hide": "{count, plural, one {Vëri shenjë medias si rezervat} other {Vëru shenjë mediave si rezervat}}", @@ -149,7 +149,7 @@ "embed.instructions": "Trupëzojeni këtë gjendje në sajtin tuaj duke kopjuar kodin më poshtë.", "embed.preview": "Ja si do të duket:", "emoji_button.activity": "Veprimtari", - "emoji_button.clear": "Clear", + "emoji_button.clear": "Spastroje", "emoji_button.custom": "Vetjak", "emoji_button.flags": "Flamuj", "emoji_button.food": "Ushqim & Pije", @@ -228,47 +228,47 @@ "intervals.full.days": "{number, plural, one {# ditë} other {# ditë}}", "intervals.full.hours": "{number, plural, one {# orë} other {# orë}}", "intervals.full.minutes": "{number, plural, one {# minutë} other {# minuta}}", - "keyboard_shortcuts.back": "për shkuarje mbrapsht", - "keyboard_shortcuts.blocked": "për hapje liste përdoruesish të bllokuar", - "keyboard_shortcuts.boost": "për përforcim", - "keyboard_shortcuts.column": "për kalim fokusi mbi një gjendje te një nga shtyllat", - "keyboard_shortcuts.compose": "për kalim fokusi te fusha e hartimit të mesazheve", + "keyboard_shortcuts.back": "Për shkuarje mbrapsht", + "keyboard_shortcuts.blocked": "Për hapje liste përdoruesish të bllokuar", + "keyboard_shortcuts.boost": "Përforcim postimi", + "keyboard_shortcuts.column": "Fokusi mbi një shtyllë", + "keyboard_shortcuts.compose": "Fokusi te fusha e hartimit të mesazheve", "keyboard_shortcuts.description": "Përshkrim", "keyboard_shortcuts.direct": "për hapje shtylle mesazhesh të drejtpërdrejtë", - "keyboard_shortcuts.down": "për zbritje poshtë nëpër listë", - "keyboard_shortcuts.enter": "për hapje gjendjeje", - "keyboard_shortcuts.favourite": "për t’i vënë shenjë si të parapëlqyer", - "keyboard_shortcuts.favourites": "për hapje liste të parapëlqyerish", - "keyboard_shortcuts.federated": "për hapje rrjedhe kohore të të federuarve", + "keyboard_shortcuts.down": "Për zbritje poshtë nëpër listë", + "keyboard_shortcuts.enter": "Për hapje postimi", + "keyboard_shortcuts.favourite": "Për t’i vënë shenjë si të parapëlqyer një postimi", + "keyboard_shortcuts.favourites": "Për hapje liste të parapëlqyerish", + "keyboard_shortcuts.federated": "Për hapje rrjedhe kohore të të federuarve", "keyboard_shortcuts.heading": "Shkurtore tastiere", - "keyboard_shortcuts.home": "për hapje rrjedhe kohore vetjake", + "keyboard_shortcuts.home": "Për hapje rrjedhe kohore vetjake", "keyboard_shortcuts.hotkey": "Tast përkatës", - "keyboard_shortcuts.legend": "për shfaqje të kësaj legjende", - "keyboard_shortcuts.local": "për hapje rrjedhe kohore vendore", - "keyboard_shortcuts.mention": "për përmendje të autorit", - "keyboard_shortcuts.muted": "për hapje liste përdoruesish të heshtuar", - "keyboard_shortcuts.my_profile": "për hapjen e profilit tuaj", - "keyboard_shortcuts.notifications": "për hapje shtylle njoftimesh", - "keyboard_shortcuts.open_media": "për hapje mediash", - "keyboard_shortcuts.pinned": "për hapje liste mesazhesh të fiksuar", - "keyboard_shortcuts.profile": "për hapje të profilit të autorit", - "keyboard_shortcuts.reply": "për t’u përgjigjur", - "keyboard_shortcuts.requests": "për hapje liste kërkesash për ndjekje", - "keyboard_shortcuts.search": "për kalim fokusi te kërkimi", - "keyboard_shortcuts.spoilers": "për shfaqje/fshehje fushe CW", - "keyboard_shortcuts.start": "për hapjen e shtyllës “fillojani”", - "keyboard_shortcuts.toggle_hidden": "për shfaqje/fshehje teksti pas CW", - "keyboard_shortcuts.toggle_sensitivity": "për shfaqje/fshehje mediash", - "keyboard_shortcuts.toot": "për të filluar një mesazh fringo të ri", - "keyboard_shortcuts.unfocus": "për heqjen e fokusit nga fusha e hartimit të mesazheve apo kërkimeve", - "keyboard_shortcuts.up": "për ngjitje sipër nëpër listë", + "keyboard_shortcuts.legend": "Për shfaqje të kësaj legjende", + "keyboard_shortcuts.local": "Për hapje rrjedhe kohore vendore", + "keyboard_shortcuts.mention": "Për përmendje të autorit", + "keyboard_shortcuts.muted": "Për hapje liste përdoruesish të heshtuar", + "keyboard_shortcuts.my_profile": "Për hapjen e profilit tuaj", + "keyboard_shortcuts.notifications": "Për hapje shtylle njoftimesh", + "keyboard_shortcuts.open_media": "Për hapje mediash", + "keyboard_shortcuts.pinned": "Për hapje liste mesazhesh të fiksuar", + "keyboard_shortcuts.profile": "Për hapje të profilit të autorit", + "keyboard_shortcuts.reply": "Për t’iu përgjigjur një postimi", + "keyboard_shortcuts.requests": "Për hapje liste kërkesash për ndjekje", + "keyboard_shortcuts.search": "Për kalim fokusi te kërkimi", + "keyboard_shortcuts.spoilers": "Për shfaqje/fshehje fushe CW", + "keyboard_shortcuts.start": "Për hapjen e shtyllës “fillojani”", + "keyboard_shortcuts.toggle_hidden": "Për shfaqje/fshehje teksti pas CW", + "keyboard_shortcuts.toggle_sensitivity": "Për shfaqje/fshehje mediash", + "keyboard_shortcuts.toot": "Për të filluar një mesazh të ri", + "keyboard_shortcuts.unfocus": "Për heqjen e fokusit nga fusha e hartimit të mesazheve apo kërkimeve", + "keyboard_shortcuts.up": "Për ngjitje sipër nëpër listë", "lightbox.close": "Mbylle", "lightbox.compress": "Ngjeshe kuadratin e parjes së figurave", "lightbox.expand": "Zgjeroje kuadratin e parjes së figurave", "lightbox.next": "Pasuesja", "lightbox.previous": "E mëparshmja", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Shfaqe profilin sido qoftë", + "limited_account_hint.title": "Ky profil është fshehur nga moderatorët e shërbyesit tuaj.", "lists.account.add": "Shto në listë", "lists.account.remove": "Hiqe nga lista", "lists.delete": "Fshije listën", diff --git a/config/locales/activerecord.af.yml b/config/locales/activerecord.af.yml index 8882df613..c41e2341d 100644 --- a/config/locales/activerecord.af.yml +++ b/config/locales/activerecord.af.yml @@ -21,6 +21,14 @@ af: username: invalid: moet slegs letters, nommers en onderstrepe bevat reserved: is gereserveer + admin/webhook: + attributes: + url: + invalid: is nie 'n geldige URL nie + doorkeeper/application: + attributes: + website: + invalid: is nie 'n geldige URL nie status: attributes: reblog: diff --git a/config/locales/activerecord.ast.yml b/config/locales/activerecord.ast.yml index 4f7c734d9..d35b95dfc 100644 --- a/config/locales/activerecord.ast.yml +++ b/config/locales/activerecord.ast.yml @@ -9,3 +9,13 @@ ast: username: Nome d'usuariu user/invite_request: text: Motivu + errors: + models: + admin/webhook: + attributes: + url: + invalid: nun ye una URL válida + doorkeeper/application: + attributes: + website: + invalid: nun ye una URL válida diff --git a/config/locales/activerecord.ca.yml b/config/locales/activerecord.ca.yml index 03b594c0a..056137276 100644 --- a/config/locales/activerecord.ca.yml +++ b/config/locales/activerecord.ca.yml @@ -21,6 +21,14 @@ ca: username: invalid: només pot contenir lletres, números i guions baixos reserved: està reservat + admin/webhook: + attributes: + url: + invalid: no és una URL vàlida + doorkeeper/application: + attributes: + website: + invalid: no és una URL vàlida status: attributes: reblog: diff --git a/config/locales/activerecord.cs.yml b/config/locales/activerecord.cs.yml index bd0b28efb..d306fe627 100644 --- a/config/locales/activerecord.cs.yml +++ b/config/locales/activerecord.cs.yml @@ -21,6 +21,14 @@ cs: username: invalid: musí obsahovat pouze písmena, číslice a podtržítka reserved: je vyhrazeno + admin/webhook: + attributes: + url: + invalid: není platná URL + doorkeeper/application: + attributes: + website: + invalid: není platná URL status: attributes: reblog: diff --git a/config/locales/activerecord.da.yml b/config/locales/activerecord.da.yml index 081f4af76..3566abf43 100644 --- a/config/locales/activerecord.da.yml +++ b/config/locales/activerecord.da.yml @@ -21,6 +21,14 @@ da: username: invalid: må kun indeholde cifre, bogstaver og understreger reserved: er reserveret + admin/webhook: + attributes: + url: + invalid: "'er ikke en gyldig URL" + doorkeeper/application: + attributes: + website: + invalid: "'er ikke en gyldig URL" status: attributes: reblog: diff --git a/config/locales/activerecord.de.yml b/config/locales/activerecord.de.yml index 31c410fa3..a24862a70 100644 --- a/config/locales/activerecord.de.yml +++ b/config/locales/activerecord.de.yml @@ -21,6 +21,14 @@ de: username: invalid: nur Buchstaben, Ziffern und Unterstriche reserved: ist reserviert + admin/webhook: + attributes: + url: + invalid: ist keine gültige URL + doorkeeper/application: + attributes: + website: + invalid: ist keine gültige URL status: attributes: reblog: diff --git a/config/locales/activerecord.en-GB.yml b/config/locales/activerecord.en-GB.yml new file mode 100644 index 000000000..ef03d1810 --- /dev/null +++ b/config/locales/activerecord.en-GB.yml @@ -0,0 +1 @@ +en-GB: diff --git a/config/locales/activerecord.es-AR.yml b/config/locales/activerecord.es-AR.yml index 9d6a479a7..8a9b75a8c 100644 --- a/config/locales/activerecord.es-AR.yml +++ b/config/locales/activerecord.es-AR.yml @@ -21,6 +21,14 @@ es-AR: username: invalid: sólo letras, números y subguiones ("_") reserved: está reservado + admin/webhook: + attributes: + url: + invalid: no es una dirección web válida + doorkeeper/application: + attributes: + website: + invalid: no es una dirección web válida status: attributes: reblog: diff --git a/config/locales/activerecord.es.yml b/config/locales/activerecord.es.yml index 0c4d6e5cf..805e6b920 100644 --- a/config/locales/activerecord.es.yml +++ b/config/locales/activerecord.es.yml @@ -21,6 +21,14 @@ es: username: invalid: solo puede contener letras, números y guiones bajos reserved: está reservado + admin/webhook: + attributes: + url: + invalid: no es una URL válida + doorkeeper/application: + attributes: + website: + invalid: no es una URL válida status: attributes: reblog: diff --git a/config/locales/activerecord.fr.yml b/config/locales/activerecord.fr.yml index 34cf0b837..4ab8f6a91 100644 --- a/config/locales/activerecord.fr.yml +++ b/config/locales/activerecord.fr.yml @@ -21,6 +21,14 @@ fr: username: invalid: seulement des lettres, des nombres et des tirets bas reserved: est réservé + admin/webhook: + attributes: + url: + invalid: n’est pas une URL valide + doorkeeper/application: + attributes: + website: + invalid: n’est pas une URL valide status: attributes: reblog: diff --git a/config/locales/activerecord.gl.yml b/config/locales/activerecord.gl.yml index cbdd801e5..4b039f5af 100644 --- a/config/locales/activerecord.gl.yml +++ b/config/locales/activerecord.gl.yml @@ -21,6 +21,14 @@ gl: username: invalid: só letras, números e trazo baixo reserved: está reservado + admin/webhook: + attributes: + url: + invalid: non é un URL válido + doorkeeper/application: + attributes: + website: + invalid: non é un URL válido status: attributes: reblog: diff --git a/config/locales/activerecord.hu.yml b/config/locales/activerecord.hu.yml index ac8cfd773..442bf3858 100644 --- a/config/locales/activerecord.hu.yml +++ b/config/locales/activerecord.hu.yml @@ -21,6 +21,14 @@ hu: username: invalid: csak betűket, számokat vagy alávonást tartalmazhat reserved: fenntartott + admin/webhook: + attributes: + url: + invalid: nem érvényes URL + doorkeeper/application: + attributes: + website: + invalid: nem érvényes URL status: attributes: reblog: diff --git a/config/locales/activerecord.io.yml b/config/locales/activerecord.io.yml index 38304ef93..9779cbdd1 100644 --- a/config/locales/activerecord.io.yml +++ b/config/locales/activerecord.io.yml @@ -21,6 +21,14 @@ io: username: invalid: mustas konsistar nur literi, nombri e sublinei reserved: rezervitas + admin/webhook: + attributes: + url: + invalid: ne esas valida URL + doorkeeper/application: + attributes: + website: + invalid: ne esas valida URL status: attributes: reblog: diff --git a/config/locales/activerecord.it.yml b/config/locales/activerecord.it.yml index c6587f1fd..307bd801e 100644 --- a/config/locales/activerecord.it.yml +++ b/config/locales/activerecord.it.yml @@ -21,6 +21,14 @@ it: username: invalid: solo lettere, numeri e trattini bassi reserved: è riservato + admin/webhook: + attributes: + url: + invalid: non è un URL valido + doorkeeper/application: + attributes: + website: + invalid: non è un URL valido status: attributes: reblog: diff --git a/config/locales/activerecord.ja.yml b/config/locales/activerecord.ja.yml index ab13dce6c..52b1b37fd 100644 --- a/config/locales/activerecord.ja.yml +++ b/config/locales/activerecord.ja.yml @@ -21,6 +21,14 @@ ja: username: invalid: アルファベット・数字・アンダーバーの組み合わせで入力してください reserved: は予約されています + admin/webhook: + attributes: + url: + invalid: は無効なURLです + doorkeeper/application: + attributes: + website: + invalid: は無効なURLです status: attributes: reblog: diff --git a/config/locales/activerecord.ku.yml b/config/locales/activerecord.ku.yml index 340b7a777..b440181d8 100644 --- a/config/locales/activerecord.ku.yml +++ b/config/locales/activerecord.ku.yml @@ -21,6 +21,14 @@ ku: username: invalid: pêdivî ye ku tenê tîp, hejmar û xêzikên jêrîn hebin reserved: hatiye bikaranîn + admin/webhook: + attributes: + url: + invalid: ev girêdaneke nederbasdar e + doorkeeper/application: + attributes: + website: + invalid: ev girêdaneke nederbasdar e status: attributes: reblog: diff --git a/config/locales/activerecord.lv.yml b/config/locales/activerecord.lv.yml index ad9fa6604..89a1fb094 100644 --- a/config/locales/activerecord.lv.yml +++ b/config/locales/activerecord.lv.yml @@ -21,6 +21,14 @@ lv: username: invalid: drīkst saturēt tikai burtus, ciparus un pasvītras reserved: ir rezervēts + admin/webhook: + attributes: + url: + invalid: nav derīgs URL + doorkeeper/application: + attributes: + website: + invalid: nav derīgs URL status: attributes: reblog: diff --git a/config/locales/activerecord.pl.yml b/config/locales/activerecord.pl.yml index c7b1e7fab..e9af76244 100644 --- a/config/locales/activerecord.pl.yml +++ b/config/locales/activerecord.pl.yml @@ -21,6 +21,14 @@ pl: username: invalid: może składać się tylko z liter, cyfr i podkreślników reserved: jest zarezerwowana + admin/webhook: + attributes: + url: + invalid: nie jest poprawnym adresem URL + doorkeeper/application: + attributes: + website: + invalid: nie jest poprawnym adresem URL status: attributes: reblog: diff --git a/config/locales/activerecord.pt-PT.yml b/config/locales/activerecord.pt-PT.yml index 17c199ea8..5b89ee5a2 100644 --- a/config/locales/activerecord.pt-PT.yml +++ b/config/locales/activerecord.pt-PT.yml @@ -21,6 +21,14 @@ pt-PT: username: invalid: apenas letras, números e underscores reserved: está reservado + admin/webhook: + attributes: + url: + invalid: não é um URL válido + doorkeeper/application: + attributes: + website: + invalid: não é um URL válido status: attributes: reblog: diff --git a/config/locales/activerecord.ru.yml b/config/locales/activerecord.ru.yml index 2f9210519..758fe7dd4 100644 --- a/config/locales/activerecord.ru.yml +++ b/config/locales/activerecord.ru.yml @@ -21,6 +21,14 @@ ru: username: invalid: только буквы, цифры и символ подчёркивания reserved: зарезервировано + admin/webhook: + attributes: + url: + invalid: не является допустимым URL + doorkeeper/application: + attributes: + website: + invalid: не является допустимым URL status: attributes: reblog: diff --git a/config/locales/activerecord.sl.yml b/config/locales/activerecord.sl.yml index d7fbb446d..7927cb4fc 100644 --- a/config/locales/activerecord.sl.yml +++ b/config/locales/activerecord.sl.yml @@ -21,6 +21,14 @@ sl: username: invalid: samo črke, številke in podčrtaji reserved: je rezerviran + admin/webhook: + attributes: + url: + invalid: ni veljaven URL + doorkeeper/application: + attributes: + website: + invalid: ni veljaven URL status: attributes: reblog: diff --git a/config/locales/activerecord.sq.yml b/config/locales/activerecord.sq.yml index 920b73e7a..57de9d3cb 100644 --- a/config/locales/activerecord.sq.yml +++ b/config/locales/activerecord.sq.yml @@ -21,6 +21,14 @@ sq: username: invalid: duhet të përmbajë vetëm shkronja, numra dhe nënvija reserved: është i rezervuar + admin/webhook: + attributes: + url: + invalid: s’është URL e vlefshme + doorkeeper/application: + attributes: + website: + invalid: s’është URL status: attributes: reblog: diff --git a/config/locales/activerecord.tr.yml b/config/locales/activerecord.tr.yml index 890f065b1..ac40e0615 100644 --- a/config/locales/activerecord.tr.yml +++ b/config/locales/activerecord.tr.yml @@ -21,6 +21,14 @@ tr: username: invalid: sadece harfler, sayılar ve alt çizgiler reserved: kullanılamaz + admin/webhook: + attributes: + url: + invalid: geçerli bir URL değil + doorkeeper/application: + attributes: + website: + invalid: geçerli bir URL değil status: attributes: reblog: diff --git a/config/locales/activerecord.uk.yml b/config/locales/activerecord.uk.yml index 38d4771b3..06967ddc7 100644 --- a/config/locales/activerecord.uk.yml +++ b/config/locales/activerecord.uk.yml @@ -21,6 +21,14 @@ uk: username: invalid: тільки літери, цифри та підкреслення reserved: зарезервовано + admin/webhook: + attributes: + url: + invalid: не є дійсною URL-адресою + doorkeeper/application: + attributes: + website: + invalid: не є дійсною URL-адресою status: attributes: reblog: diff --git a/config/locales/activerecord.vi.yml b/config/locales/activerecord.vi.yml index c0e989563..6c7c41903 100644 --- a/config/locales/activerecord.vi.yml +++ b/config/locales/activerecord.vi.yml @@ -21,6 +21,14 @@ vi: username: invalid: chỉ chấp nhận ký tự, số và dấu gạch dưới reserved: bị cấm sử dụng + admin/webhook: + attributes: + url: + invalid: không phải là một URL hợp lệ + doorkeeper/application: + attributes: + website: + invalid: không phải là một URL hợp lệ status: attributes: reblog: diff --git a/config/locales/activerecord.zh-CN.yml b/config/locales/activerecord.zh-CN.yml index 946e81893..855e79de6 100644 --- a/config/locales/activerecord.zh-CN.yml +++ b/config/locales/activerecord.zh-CN.yml @@ -21,6 +21,10 @@ zh-CN: username: invalid: 只能使用字母、数字和下划线 reserved: 是保留关键字 + admin/webhook: + attributes: + url: + invalid: 不是有效的 URL。 status: attributes: reblog: diff --git a/config/locales/activerecord.zh-TW.yml b/config/locales/activerecord.zh-TW.yml index c6856c386..bea950ed6 100644 --- a/config/locales/activerecord.zh-TW.yml +++ b/config/locales/activerecord.zh-TW.yml @@ -21,6 +21,14 @@ zh-TW: username: invalid: 只能有字母、數字及底線 reserved: 是保留關鍵字 + admin/webhook: + attributes: + url: + invalid: 不是有效的 URL + doorkeeper/application: + attributes: + website: + invalid: 不是有效的 URL status: attributes: reblog: diff --git a/config/locales/af.yml b/config/locales/af.yml index bc54cfdfd..d69e6b92d 100644 --- a/config/locales/af.yml +++ b/config/locales/af.yml @@ -8,10 +8,28 @@ af: federation_hint_html: Met 'n rekening op %{instance} sal jy in staat wees om mense op enige Mastodon en federasie bediener te volg. get_apps: Probeer 'n mobiele toepassing hosted_on: Mastodon gehuisves op %{domain} + tagline: Gedesentraliseerde sosiale netwerk admin: + domain_blocks: + existing_domain_block: Jy het alreeds strenger perke ingelê op %{name}. trends: only_allowed: Slegs toegelate trending: Gewild + webhooks: + add_new: Voeg end-punt by + delete: Wis uit + disable: Deaktiveer + disabled: Gedeaktiveer + edit: Redigeer end-punt + empty: Jy het tans geen opgestelde web-hoek end-punte nie. + enable: Aktiveer + enabled: Aktief + new: Nuwe web-hoek + rotate_secret: Roteer geheim + secret: Onderteken geheim + status: Status + title: Web-hoeke + webhook: Web-hoek disputes: strikes: approve_appeal: Aanvaar appêl diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 9d78451bb..01f55f344 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -42,7 +42,6 @@ ar: two: منشورات zero: منشورات status_count_before: نشروا - tagline: اتبع أصدقائك وصديقاتك واكتشف آخرين وأخريات terms: شروط الخدمة unavailable_content: محتوى غير متوفر unavailable_content_description: @@ -842,7 +841,6 @@ ar: applications: created: تم إنشاء التطبيق بنجاح destroyed: تم حذف التطبيق بنجاح - invalid_url: إن الرابط المقدم غير صالح regenerate_token: إعادة توليد رمز النفاذ token_regenerated: تم إعادة إنشاء الرمز الوصول بنجاح warning: كن حذرا مع هذه البيانات. لا تقم أبدا بمشاركتها مع الآخَرين! diff --git a/config/locales/ast.yml b/config/locales/ast.yml index a9bcbbdf7..1fb1cee90 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -24,7 +24,6 @@ ast: one: artículu other: artículos status_count_before: Que crearon - tagline: Sigui a persones y conoz a más xente terms: Términos del serviciu unavailable_content_description: domain: Sirvidor @@ -144,6 +143,8 @@ ast: site_title: Nome del sirvidor title: Axustes del sitiu title: Alministración + webhooks: + events: Eventos admin_mailer: new_pending_account: body: Los detalles de la cuenta nueva tán embaxo. Pues aprobar o refugar esta aplicación. @@ -164,7 +165,6 @@ ast: sensitive_content: Conteníu sensible toot_layout: Distribución de los barritos applications: - invalid_url: La URL apurrida nun ye válida warning: Ten munchu curiáu con estos datos, ¡enxamás nun los compartas con naide! auth: change_password: Contraseña diff --git a/config/locales/bg.yml b/config/locales/bg.yml index c9e264787..04296b342 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -29,7 +29,6 @@ bg: one: състояние other: състояния status_count_before: Написали - tagline: Следвайте приятели и открийте нови terms: Условия за ползване unavailable_content: Модерирани сървъри unavailable_content_description: @@ -178,8 +177,6 @@ bg: application_mailer: settings: 'Промяна на предпочитанията за e-mail: %{link}' view: 'Преглед:' - applications: - invalid_url: Предоставеният URL е невалиден auth: didnt_get_confirmation: Не получих инструкции за потвърждение forgot_password: Забравих си паролата diff --git a/config/locales/bn.yml b/config/locales/bn.yml index 20a99fd2f..ae1ced450 100644 --- a/config/locales/bn.yml +++ b/config/locales/bn.yml @@ -31,7 +31,6 @@ bn: one: অবস্থা other: স্থিতিগুলি status_count_before: কে লিখেছে - tagline: পরিচিতজনদের সাথে যুক্ত হন এবং নতুনদের সাথে পরিচিত হন terms: ব্যবহারের শর্তাবলী unavailable_content: অনুপলব্ধ সামগ্রী unavailable_content_description: diff --git a/config/locales/ca.yml b/config/locales/ca.yml index f0efd3f50..8c8fa1ffb 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -38,7 +38,7 @@ ca: one: publicació other: publicacions status_count_before: Qui ha publicat - tagline: Segueix els teus amics i descobreix-ne de nous + tagline: Xarxa social descentralitzada terms: Condicions de servei unavailable_content: Servidors moderats unavailable_content_description: @@ -852,6 +852,26 @@ ca: edit_preset: Edita l'avís predeterminat empty: Encara no has definit cap preavís. title: Gestiona les configuracions predefinides dels avisos + webhooks: + add_new: Afegir extrem + delete: Elimina + description_html: Un webhook habilita Mastodon per a empènyer notificacions en temps real sobre els esdeveniments escollits de la teva pròpia aplicació, per tant la teva aplicació pot activar reaccions automaticament. + disable: Desactiva + disabled: Desactivat + edit: Editar extrem + empty: Encara no tens cap extrem de webhook configurat. + enable: Activa + enabled: Actiu + enabled_events: + one: 1 esdeveniment activat + other: "%{count} esdeveniments activats" + events: Esdeveniments + new: Nou webhook + rotate_secret: Rota el secret + secret: Signant el secret + status: Estat + title: Webhooks + webhook: Webhook admin_mailer: new_appeal: actions: @@ -916,7 +936,6 @@ ca: applications: created: L'aplicació s'ha creat correctament destroyed: L'aplicació s'ha suprimit correctament - invalid_url: L'URL proporcionat no és correcte regenerate_token: Torna a generar l'identificador d'accés token_regenerated: L'identificador d'accés s'ha generat correctament warning: Aneu amb compte amb aquestes dades. No les compartiu mai amb ningú! diff --git a/config/locales/ckb.yml b/config/locales/ckb.yml index 6429696ed..35e826c9c 100644 --- a/config/locales/ckb.yml +++ b/config/locales/ckb.yml @@ -37,7 +37,6 @@ ckb: one: دۆخ other: پۆست status_count_before: لە لایەن یەکەوە - tagline: دوای هاوڕێکان بکەوە و ئەوانەی نوێ بدۆزیەوە terms: مەرجەکانی خزمەتگوزاری unavailable_content: ڕاژەی چاودێریکراو unavailable_content_description: @@ -721,7 +720,6 @@ ckb: applications: created: بەرنامە بە سەرکەوتوویی دروست کرا destroyed: بەرنامە بە سەرکەوتوویی سڕدراوەتەوە - invalid_url: بەستەری دابینکراو نادروستە regenerate_token: دووبارە دروستکردنەوەی نیشانەی چوونە ژوورەوە token_regenerated: کۆدی دەستپێگەیشتن بە سەرکەوتوویی دروستکرا warning: زۆر ئاگاداربە لەم داتایە. هەرگیز لەگەڵ کەس دا هاوبەشی مەکە! diff --git a/config/locales/co.yml b/config/locales/co.yml index ca4c7ed3d..183439447 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -35,7 +35,6 @@ co: one: statutu other: statuti status_count_before: Chì anu pubblicatu - tagline: Siguità amichi è scopre ancu di più altri terms: Cundizione di u serviziu unavailable_content: Cuntinutu micca dispunibule unavailable_content_description: @@ -705,7 +704,6 @@ co: applications: created: Applicazione creata destroyed: Applicazione sguassata - invalid_url: L’URL ch’è stata pruvista ùn hè valida regenerate_token: Creà un’altra fiscia d’accessu token_regenerated: A fiscia d’accessu hè stata rigenerata warning: Abbadate à quessi dati. Ùn i date à nisunu! diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 0140d4127..1868b9dd7 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -40,7 +40,7 @@ cs: one: příspěvek other: příspěvků status_count_before: Kteří napsali - tagline: Sledujte své přátele a objevujte nové + tagline: Decentralizovaná sociální síť terms: Podmínky používání unavailable_content: Moderované servery unavailable_content_description: @@ -886,6 +886,28 @@ cs: edit_preset: Upravit předlohu pro varování empty: Zatím jste nedefinovali žádné předlohy varování. title: Spravovat předlohy pro varování + webhooks: + add_new: Přidat koncový bod + delete: Smazat + description_html: "Webhook umožňuje Mastodonu o vybraných událostech notifikovat v reálném čase vaši vlastní aplikaci, aby mohla automaticky spouštět reakce." + disable: Vypnout + disabled: Vypnuto + edit: Upravit koncový bod + empty: Nemáte ještě nastavené žádné koncové body webhooků. + enable: Zapnout + enabled: Aktivní + enabled_events: + few: "%{count} zapnuté události" + many: "%{count} zapnutých událostí" + one: 1 zapnutá událost + other: "%{count} zapnutých událostí" + events: Události + new: Nový webhook + rotate_secret: Obnovit klíč + secret: Podpisový klíč + status: Stav + title: Webhooky + webhook: Webhook admin_mailer: new_appeal: actions: @@ -950,7 +972,6 @@ cs: applications: created: Aplikace úspěšně vytvořena destroyed: Aplikace úspěšně smazána - invalid_url: Zadaná URL adresa je neplatná regenerate_token: Znovu vygenerovat přístupový token token_regenerated: Přístupový token byl úspěšně vygenerován warning: Zacházejte s těmito daty opatrně. Nikdy je s nikým nesdílejte! @@ -1334,7 +1355,7 @@ cs: description_html: Zapnete-li dvoufázové ověřování pomocí ověřovací aplikace, k přihlášení budete u sebe muset mít svůj mobil, který pro Vás bude generovat kódy k opsání. enable: Zapnout instructions_html: "Naskenujte tento QR kód do Google Authenticator nebo podobné TOTP aplikace na svém telefonu. Následně bude tato aplikace generovat kódy, které budete zadávat při přihlašování." - manual_instructions: 'Nemůžete-li načíst QR kód a potřebujete ho zadat ručně, zde je tajemství v textové podobě:' + manual_instructions: 'Nemůžete-li načíst QR kód a potřebujete ho zadat ručně, zde je klíč v textové podobě:' setup: Nastavit wrong_code: Zadaný kód je neplatný! Je čas na serveru i zařízení generujícím kód správný? pagination: diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 351067346..913753325 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -42,7 +42,6 @@ cy: two: statwsau zero: statwsau status_count_before: Ysgrifennwyd gan - tagline: Dilyn ffrindiau a darganfod rhai newydd terms: Telerau gwasanaeth unavailable_content: Cynnwys nad yw ar gael unavailable_content_description: @@ -587,7 +586,6 @@ cy: applications: created: Cais wedi ei greu'n llwyddiannus destroyed: Cais wedi ei ddileu'n llwyddiannus - invalid_url: Mae'r URL a ddarparwyd yn annilys regenerate_token: Adfywio tocyn mynediad token_regenerated: Adfywiwyd y tocyn mynediad yn llwyddiannus warning: Byddwch yn ofalus a'r data hyn. Peidiwch a'i rannu byth! diff --git a/config/locales/da.yml b/config/locales/da.yml index 0195aa5a3..337005369 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -38,7 +38,7 @@ da: one: indlæg other: indlæg status_count_before: Som har postet - tagline: Følg venner og opdag nye + tagline: Decentraliseret socialt netværk terms: Tjenestevilkår unavailable_content: Modererede servere unavailable_content_description: @@ -852,6 +852,26 @@ da: edit_preset: Redigér advarselsforvalg empty: Ingen advarselsforvalg defineret endnu. title: Håndtérr advarselsforvalg + webhooks: + add_new: Tilføj endepunkt + delete: Slet + description_html: En webhook lader Mastodon pushe notifikationer i realtid om valgte begivenheder til ens egen applikation, så denne automatisk kan udløse reaktioner. + disable: Deaktivér + disabled: Deaktiveret + edit: Redigér endepunkt + empty: Der er endnu ikke opsat nogen webhook-endepunkter. + enable: Aktivér + enabled: Aktiv + enabled_events: + one: 1 aktiv begivenhed + other: "%{count} aktive begivenheder" + events: Begivenheder + new: Ny webhook + rotate_secret: Rotér hemmelighed + secret: Signeringshemmelighed + status: Status + title: Webhooks + webhook: Webhook admin_mailer: new_appeal: actions: @@ -916,7 +936,6 @@ da: applications: created: Applikation oprettet destroyed: Applikation slettet - invalid_url: Den angivne URL er ugyldig regenerate_token: Regenerér adgangstoken token_regenerated: Adgangstoken regenereret warning: Vær meget påpasselig med disse data. Del dem aldrig med nogen! diff --git a/config/locales/de.yml b/config/locales/de.yml index a52841a39..d15011a5e 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -38,7 +38,7 @@ de: one: Beitrag other: Beiträge status_count_before: mit - tagline: Finde deine Freunde und entdecke neue + tagline: Dezentrales soziales Netzwerk terms: Nutzungsbedingungen unavailable_content: Nicht verfügbarer Inhalt unavailable_content_description: @@ -428,6 +428,7 @@ de: destroyed_msg: Die Domain-Blockade wurde rückgängig gemacht domain: Domain edit: Domainblockade bearbeiten + existing_domain_block: Du hast %{name} bereits stärker eingeschränkt. existing_domain_block_html: Es gibt schon eine Blockade für %{name}, diese muss erst aufgehoben werden. new: create: Blockade einrichten @@ -851,6 +852,26 @@ de: edit_preset: Warnungsvorlage bearbeiten empty: Du hast noch keine Warnungsvorlagen hinzugefügt. title: Warnungsvorlagen verwalten + webhooks: + add_new: Endpunkt hinzufügen + delete: Löschen + description_html: Ein Webhook ermöglicht Mastodon Echtzeitbenachrichtigungen über ausgewählte Ereignisse an deine eigene Anwendung zu senden damit deine Anwendung automatisch Reaktionen auslösen kann. + disable: Deaktivieren + disabled: Deaktiviert + edit: Endpunkt bearbeiten + empty: Du hast noch keine Webhook Endpunkte konfiguriert. + enable: Aktivieren + enabled: Aktiv + enabled_events: + one: 1 aktiviertes Ereignis + other: "%{count} aktivierte Ereignisse" + events: Ereignisse + new: Neuer Webhook + rotate_secret: Geheimen Schlüssel rotieren + secret: Signaturgeheimnis + status: Status + title: Webhooks + webhook: Webhook admin_mailer: new_appeal: actions: @@ -915,7 +936,6 @@ de: applications: created: Anwendung erfolgreich erstellt destroyed: Anwendung erfolgreich gelöscht - invalid_url: Die angegebene URL ist ungültig regenerate_token: Zugangs-Token neu erstellen token_regenerated: Zugangs-Token neu erstellt warning: Sei mit diesen Daten sehr vorsichtig. Teile sie mit niemandem! diff --git a/config/locales/doorkeeper.af.yml b/config/locales/doorkeeper.af.yml index 252f9fd5a..ec1eda8bd 100644 --- a/config/locales/doorkeeper.af.yml +++ b/config/locales/doorkeeper.af.yml @@ -1 +1,164 @@ +--- af: + activerecord: + attributes: + doorkeeper/application: + name: Toepassing naam + redirect_uri: Herlei URI + scopes: Bestekke + website: Toepassing webtuiste + errors: + models: + doorkeeper/application: + attributes: + redirect_uri: + fragment_present: kan nie 'n vragment bevat nie. + invalid_uri: moet 'n geldige URI wees. + relative_uri: moet 'n absolute URI wees. + secured_uri: moet 'n HTTPS/SSL URI wees. + doorkeeper: + applications: + buttons: + authorize: Magtig + cancel: Kanselleer + destroy: Vernietig + edit: Redigeer + submit: Dien in + confirmations: + destroy: Is jy seker? + edit: + title: Redigeer toepassing + form: + error: Oeps! Hersien jou vorm vir moontlike foute + help: + native_redirect_uri: Gebruik %{native_redirect_uri} vir plaaslike toetse + redirect_uri: Gebruik een lyn per URI + scopes: Verdeel omvang-grense met spasies. Los dit leeg om verstek omvange te gebruik. + index: + application: Toepassing + callback_url: Terugroep URL + delete: Wis uit + empty: Jy het geen toepassings nie. + name: Naam + new: Nuwe toepassing + scopes: Omvange + show: Vertoon + title: Jou toepassings + new: + title: Nuwe toepassing + show: + actions: Aksies + application_id: Kliënt sleutel + callback_urls: Terugroep URL'e + scopes: Omvange + secret: Kliënt geheim + title: 'Toepassing: %{name}' + authorizations: + buttons: + authorize: Magtig + deny: Weier + error: + title: "'n Fout het plaasgevind" + new: + prompt_html: "%{client_name} wil toegang hê tot jou rekening. Dit is a derde party toepassing. Indien jy dit nie vertrou nie, moet dit nie bemagtig word nie." + review_permissions: Hersien toestemming + title: Benodig magtiging + show: + title: Kopieër hierdie magtigings kode en plaas dit in die toepassing. + authorized_applications: + buttons: + revoke: Herroep + confirmations: + revoke: Is jy seker? + index: + authorized_at: Bemagtig op %{date} + description_html: Hierdie is toepassings wat deur middel van die API toegang tot jou rekening kan verkry. As daar enige toepassings is wat jy nie herken nie, of 'n toepassing is wat wangedra, kan die bemagtiging herroep word. + last_used_at: Laas gebruik op %{date} + never_used: Noot gebruik nie + scopes: Magtiging + superapp: Intern + title: Jou gemagtigde toepassings + errors: + messages: + access_denied: Die hulpbron eienaar of magtigingsbediener het die aansoek afgekeur. + credential_flow_not_configured: Hulpbron Eienaar Wagwoord Geloofsbrewe vloei het gefaal omdat Doorkeeper.configure.resource_owner_from_credentials nie opgestel is nie. + flash: + applications: + create: + notice: Toepassing geskep. + destroy: + notice: Toepassing uitgewis. + update: + notice: Toepassing opdateer. + authorized_applications: + destroy: + notice: Toepassing herroep. + grouped_scopes: + access: + read: Slegs-lees toegang + read/write: Lees en skryf toegang + write: Slegs-skryf toegang + title: + accounts: Rekeninge + admin/accounts: Administrasie van rekeninge + admin/all: Alle administratiewe funksies + admin/reports: Administrasie van rapporteringe + all: Alles + blocks: Blokkeringe + bookmarks: Boekmerke + conversations: Gesprekke + crypto: End-tot-end enkripsie + favourites: Gunstelinge + filters: Filters + follow: Verhoudinge + lists: Lyste + media: Media aanhegsels + mutes: Dempinge + notifications: Kennisgewings + push: Stoot kennisgewings + reports: Rapporteringe + search: Soek + statuses: Plasings + layouts: + admin: + nav: + applications: Toepassings + oauth2_provider: OAuth2 Verskaffer + application: + title: Benodig OAuth bemagtiging + scopes: + admin:read: lees alle data op die bediener + admin:read:accounts: lees sensitiewe inligting vanaf alle rekeninge + admin:read:reports: lees sensitiewe inligting van alle verslae end aangeklaagde rekeninge + admin:write: verander alle data op die bediener + admin:write:accounts: voer modereer aksies uit op rekeninge + admin:write:reports: voer modereer aksies uit op verslae + crypto: gebruik end-tot-end enkripsie + follow: verander rekening verhoudinge + push: ontvang jou stootkennisgewings + read: lees die data van al jou rekeninge + read:accounts: sien rekening inligting + read:blocks: sien blokeringe + read:bookmarks: sien jou boekmerke + read:favourites: sien jou gunstelinge + read:filters: sien jou filters + read:lists: sien jou lyste + read:mutes: sien jou stilmake + read:notifications: sien jou kennisgewinge + read:reports: sien jou rapporteringe + read:search: soek namens jou + read:statuses: sien alle plasings + write: verander alle data van jou rekening + write:accounts: verander jou profiel + write:blocks: blokeer rekeninge en domeine + write:bookmarks: boekmerk plasings + write:conversations: demp en wis gesprekke uit + write:favourites: merk gunsteling plasings + write:filters: skep filters + write:follows: volg mense + write:lists: skep lyste + write:media: laai meda lêers op + write:mutes: demp mense en gesprekke + write:notifications: maak jou kennisgewings skoon + write:reports: rapporteer ander mense + write:statuses: publiseer plasings diff --git a/config/locales/doorkeeper.pt-BR.yml b/config/locales/doorkeeper.pt-BR.yml index 684b993ab..0a0b6b1be 100644 --- a/config/locales/doorkeeper.pt-BR.yml +++ b/config/locales/doorkeeper.pt-BR.yml @@ -60,7 +60,8 @@ pt-BR: error: title: Ocorreu um erro new: - review_permissions: Analisar permissões + prompt_html: O %{client_name} gostaria de ter permissão para acessar sua conta. É uma aplicação de terceiros. Se você não confia, então você não deve autorizá-lo. + review_permissions: Revisar permissões title: Autorização necessária show: title: Copie este código de autorização e cole no aplicativo. @@ -71,6 +72,8 @@ pt-BR: revoke: Você tem certeza? index: authorized_at: Autorizado em %{date} + description_html: Estas são as aplicações que podem acessar sua conta usando a API. Se houver aplicativos que você não reconhece ou com mau funcionamento, você pode revogar seu acesso. + last_used_at: Última vez usado em %{date} never_used: Nunca usado scopes: Permissões superapp: Interno @@ -110,16 +113,23 @@ pt-BR: destroy: notice: Aplicativo revogado. grouped_scopes: + access: + read: Acesso somente para leitura + read/write: Acesso de leitura e escrita + write: Acesso somente para escrita title: accounts: Contas + admin/accounts: Administração de contas + admin/all: Todas as funções administrativas + admin/reports: Administração de relatórios all: Tudo - blocks: Blocos + blocks: Bloqueios bookmarks: Salvos conversations: Conversas crypto: Criptografia de ponta a ponta favourites: Favoritos filters: Filtros - follow: Relações + follow: Relacionamentos lists: Listas media: Mídias anexadas notifications: Notificações @@ -161,6 +171,7 @@ pt-BR: write:accounts: alterar seu perfil write:blocks: bloquear contas e domínios write:bookmarks: salvar toots + write:conversations: silenciar e excluir conversas write:favourites: favoritar toots write:filters: criar filtros write:follows: seguir pessoas diff --git a/config/locales/el.yml b/config/locales/el.yml index 1320dcbb4..96ec15247 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -36,7 +36,7 @@ el: one: δημοσίευση other: δημοσιεύσεις status_count_before: Που έγραψαν - tagline: Ακολούθησε τους γνωστούς σου και ανακάλυψε νέους ανθρώπους + tagline: Αποκεντρωμένο κοινωνικό δίκτυο terms: Όροι χρήσης unavailable_content: Μη διαθέσιμο unavailable_content_description: @@ -618,6 +618,12 @@ el: edit_preset: Ενημέρωση προκαθορισμένης προειδοποίησης empty: Δεν έχετε ακόμη ορίσει κάποια προεπιλογή προειδοποίησης. title: Διαχείριση προκαθορισμένων προειδοποιήσεων + webhooks: + delete: Διαγραφή + disable: Απενεργοποίηση + disabled: Απενεργοποιημένα + enable: Ενεργοποίηση + status: Κατάσταση admin_mailer: new_appeal: actions: @@ -658,7 +664,6 @@ el: applications: created: Η εφαρμογή δημιουργήθηκε επιτυχώς destroyed: Η εφαρμογή διαγράφηκε επιτυχώς - invalid_url: Το URL δεν είναι έγκυρο regenerate_token: Αναδημιουργία του διακριτικού πρόσβασης (access token) token_regenerated: Το διακριτικό πρόσβασης (access token) αναδημιουργήθηκε επιτυχώς warning: Μεγάλη προσοχή με αυτά τα στοιχεία. Μην τα μοιραστείς ποτέ με κανέναν! diff --git a/config/locales/eo.yml b/config/locales/eo.yml index babbce7da..d287fb590 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -36,9 +36,8 @@ eo: one: mesaĝo other: mesaĝoj status_count_before: Kie skribiĝis - tagline: Sekvi amikojn kaj trovi iujn novajn terms: Uzkondiĉoj - unavailable_content: Kontrolitaj serviloj + unavailable_content: Moderigitaj serviloj unavailable_content_description: domain: Servilo reason: 'Kialo:' @@ -86,8 +85,8 @@ eo: title: Plenumi kontrolan agon al %{acct} account_moderation_notes: create: Lasi noton - created_msg: Kontrola noto sukcese kreita! - destroyed_msg: Kontrola noto sukcese detruita! + created_msg: Noto de mederigado sukcese kreita! + destroyed_msg: Noto de moderigado sukcese detruita! accounts: add_email_domain_block: Bloki retadresan domajnon approve: Aprobi @@ -140,8 +139,8 @@ eo: all: Ĉio pending: Pritraktata suspended: Haltigita - title: Kontrolado - moderation_notes: Kontrolaj notoj + title: Moderigado + moderation_notes: Notoj de moderigado most_recent_activity: Lasta ago most_recent_ip: Lasta IP no_account_selected: Neniu konto estis ŝanĝita ĉar neniu estis selektita @@ -167,7 +166,7 @@ eo: role: Permesoj roles: admin: Administranto - moderator: Kontrolanto + moderator: Moderigisto staff: Teamo user: Uzanto search: Serĉi @@ -416,7 +415,7 @@ eo: moderation: all: Ĉiuj limited: Limigita - title: Kontrolo + title: Moderigado private_comment: Privata komento public_comment: Publika komento purge: Purigu @@ -697,7 +696,6 @@ eo: applications: created: Aplikaĵo sukcese kreita destroyed: Aplikaĵo sukcese forigita - invalid_url: La URL donita ne estas valida regenerate_token: Rekrei aliran ĵetonon token_regenerated: Alira ĵetono sukcese rekreita warning: Estu tre atenta kun ĉi tiu datumo. Neniam diskonigu ĝin al iu ajn! @@ -950,7 +948,7 @@ eo: only_redirect_html: Alie, vi povas nur aldoni alidirekton en via profilo. other_data: Neniu alia datumo estos movita aŭtomate moderation: - title: Kontrolado + title: Moderigado notification_mailer: digest: action: Vidi ĉiujn sciigojn diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index aeba0b97d..79ae68bf4 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -38,7 +38,7 @@ es-AR: one: mensaje other: mensajes status_count_before: Que enviaron - tagline: Seguí a tus amigos y descubrí nueva gente + tagline: Red social descentralizada terms: Términos del servicio unavailable_content: Servidores moderados unavailable_content_description: @@ -852,6 +852,26 @@ es-AR: edit_preset: Editar preajuste de advertencia empty: Aún no ha definido ningún preajuste de advertencia. title: Administrar preajustes de advertencia + webhooks: + add_new: Agregar punto final + delete: Eliminar + description_html: Un webhook habilita a Mastodon a enviar notificaciones en tiempo real sobre los eventos elegidos a tu propia aplicación, así la misma puede activar automáticamente las reacciones. + disable: Deshabilitar + disabled: Deshabilitada + edit: Editar punto final + empty: Todavía no tenés configurado ningún punto final de webhook. + enable: Habilitar + enabled: Activar + enabled_events: + one: 1 evento habilitado + other: "%{count} eventos habilitados" + events: Eventos + new: Nuevo webhook + rotate_secret: Rotar secreto + secret: Firma secreta + status: Estado + title: Webhooks + webhook: Webhook admin_mailer: new_appeal: actions: @@ -916,7 +936,6 @@ es-AR: applications: created: Aplicación creada exitosamente destroyed: Aplicación eliminada exitosamente - invalid_url: La dirección web ofrecida no es válida regenerate_token: Regenerar clave de acceso token_regenerated: Clave de acceso regenerada exitosamente warning: Ojo con estos datos. ¡Nunca los compartas con nadie! diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 5f9a9f5e7..f57fb9601 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -38,7 +38,7 @@ es-MX: one: estado other: estados status_count_before: Qué han escrito - tagline: Seguir a amigos existentes y descubre nuevos + tagline: Red social descentralizada terms: Condiciones de servicio unavailable_content: Contenido no disponible unavailable_content_description: @@ -428,6 +428,7 @@ es-MX: destroyed_msg: El bloque de dominio se deshizo domain: Dominio edit: Editar nuevo dominio bloqueado + existing_domain_block: Ya ha impuesto límites más estrictos a %{name}. existing_domain_block_html: Ya ha impuesto límites más estrictos a %{name}, necesita desbloquearlo primero. new: create: Crear bloque @@ -915,7 +916,6 @@ es-MX: applications: created: Aplicación creada exitosamente destroyed: Apicación eliminada exitosamente - invalid_url: La URL proporcionada es incorrecta regenerate_token: Regenerar token de acceso token_regenerated: Token de acceso regenerado exitosamente warning: Ten mucho cuidado con estos datos. ¡No los compartas con nadie! diff --git a/config/locales/es.yml b/config/locales/es.yml index 900193134..96d985f53 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -38,7 +38,7 @@ es: one: estado other: estados status_count_before: Qué han escrito - tagline: Seguir a amigos existentes y descubre nuevos + tagline: Red social descentralizada terms: Condiciones de servicio unavailable_content: Contenido no disponible unavailable_content_description: @@ -852,6 +852,26 @@ es: edit_preset: Editar aviso predeterminado empty: Aún no has definido ningún preajuste de advertencia. title: Editar configuración predeterminada de avisos + webhooks: + add_new: Añadir endpoint + delete: Eliminar + description_html: Un webhook permite a Mastodon enviar notificaciones en tiempo real sobre los eventos elegidos a tu propia aplicación, para que tu aplicación pueda lanzar reacciones automáticamente. + disable: Deshabilitar + disabled: Deshabilitado + edit: Editar endpoint + empty: Aún no tienes ningún endpoint de webhook configurado. + enable: Habilitar + enabled: Activo + enabled_events: + one: 1 evento habilitado + other: "%{count} eventos habilitados" + events: Eventos + new: Nuevo webhook + rotate_secret: Rotar secreto + secret: Firmando secreto + status: Estado + title: Webhooks + webhook: Webhook admin_mailer: new_appeal: actions: @@ -916,7 +936,6 @@ es: applications: created: Aplicación creada exitosamente destroyed: Apicación eliminada exitosamente - invalid_url: La URL proporcionada es incorrecta regenerate_token: Regenerar token de acceso token_regenerated: Token de acceso regenerado exitosamente warning: Ten mucho cuidado con estos datos. ¡No los compartas con nadie! diff --git a/config/locales/et.yml b/config/locales/et.yml index 3c48bad5b..a551ab424 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -35,7 +35,6 @@ et: one: postitust other: staatuseid status_count_before: Kes on avaldanud - tagline: Jälgi sõpru ja leia uusi terms: Kasutustingimused unavailable_content: Sisu pole saadaval unavailable_content_description: @@ -540,7 +539,6 @@ et: applications: created: Rakenduse loomine õnnestus destroyed: Rakenduse kustutamine õnnestus - invalid_url: Antud URL on vale regenerate_token: Loo uus access token token_regenerated: Access tokeni loomine õnnestus warning: Olge nende andmetega ettevaatlikud. Ärge jagage neid kellegagi! diff --git a/config/locales/eu.yml b/config/locales/eu.yml index 096dd276b..a71cd186d 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -36,7 +36,6 @@ eu: one: bidalketa other: bidalketa status_count_before: Hauek - tagline: Jarraitu lagunak eta egin berriak terms: Erabilera baldintzak unavailable_content: Eduki eskuraezina unavailable_content_description: @@ -855,7 +854,6 @@ eu: applications: created: Aplikazioa ongi sortu da destroyed: Aplikazioa ongi ezabatu da - invalid_url: Emandako URL-a baliogabea da regenerate_token: Birsortu sarbide token-a token_regenerated: Sarbide token-a ongi birsortu da warning: Kontuz datu hauekin, ez partekatu inoiz inorekin! diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 1c7b9f9cc..93b766859 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -38,7 +38,6 @@ fa: one: چیز نوشته‌اند other: چیز نوشته‌اند status_count_before: که در کنار هم - tagline: با دوستان خود در ارتباط باشید و دوستان تازه پیدا کنید terms: شرایط خدمت unavailable_content: محتوای ناموجود unavailable_content_description: @@ -813,7 +812,6 @@ fa: applications: created: برنامه با موفقیت ساخته شد destroyed: برنامه با موفقیت پاک شد - invalid_url: نشانی واردشده معتبر نیست regenerate_token: دوباره‌سازی کد دسترسی token_regenerated: کد دسترسی با موفقیت ساخته شد warning: خیلی مواظب این اطلاعات باشید و آن را به هیچ کس ندهید! diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 55e2332cf..ff369f2fe 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -38,7 +38,6 @@ fi: one: julkaisun other: julkaisua status_count_before: Julkaistu - tagline: Seuraa ja löydä uusia kavereita terms: Käyttöehdot unavailable_content: Moderoidut palvelimet unavailable_content_description: @@ -860,7 +859,6 @@ fi: applications: created: Sovelluksen luonti onnistui destroyed: Sovelluksen poisto onnistui - invalid_url: Annettu URL on virheellinen regenerate_token: Luo pääsytunnus uudelleen token_regenerated: Pääsytunnuksen uudelleenluonti onnistui warning: Säilytä tietoa hyvin. Älä milloinkaan jaa sitä muille! diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 109fd6849..5f74972f9 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -37,8 +37,8 @@ fr: status_count_after: one: message other: messages - status_count_before: Qui a publié - tagline: Suivez vos ami·e·s et découvrez-en de nouveaux·elles + status_count_before: Ayant publié + tagline: Réseau social décentralisé terms: Conditions d’utilisation unavailable_content: Serveurs modérés unavailable_content_description: @@ -428,6 +428,7 @@ fr: destroyed_msg: Le blocage de domaine a été désactivé domain: Domaine edit: Modifier le blocage de domaine + existing_domain_block: Vous avez déjà imposé des limites plus strictes à %{name}. existing_domain_block_html: Vous avez déjà imposé des limites plus strictes à %{name}, vous devez d’abord le/la débloquer. new: create: Créer le blocage @@ -851,6 +852,25 @@ fr: edit_preset: Éditer les avertissements prédéfinis empty: Vous n'avez pas encore créé de paramètres prédéfinis pour les avertissements. title: Gérer les avertissements prédéfinis + webhooks: + add_new: Ajouter un point de terminaison + delete: Supprimer + description_html: Un point d'ancrage web permet à Mastodon d'envoyer des notifications en temps réel concernant des événements sélectionnés vers votre propre application, afin que celle-ci puisse déclencher automatiquement des réactions. + disable: Désactiver + disabled: Désactivé + edit: Modifier le point de terminaison + empty: Pour l'instant, vous n'avez configuré aucun lien d'ancrage web pour point de terminaison. + enable: Activer + enabled: Actif + enabled_events: + one: 1 événement activé + other: "%{count} événements activés" + events: Événements + new: Nouveau point d’ancrage web + rotate_secret: Effectuer une rotation du secret + status: État + title: Points d’ancrage web + webhook: Point d’ancrage web admin_mailer: new_appeal: actions: @@ -915,7 +935,6 @@ fr: applications: created: Application créée avec succès destroyed: Application supprimée avec succès - invalid_url: L’URL fournie est invalide regenerate_token: Régénérer le jeton d’accès token_regenerated: Jeton d’accès régénéré avec succès warning: Soyez prudent·e avec ces données. Ne les partagez pas ! @@ -1519,6 +1538,9 @@ fr: pinned: Message épinglé reblogged: a partagé sensitive_content: Contenu sensible + strikes: + errors: + too_late: Il est trop tard pour faire appel à cette sanction tags: does_not_match_previous_name: ne correspond pas au nom précédent terms: diff --git a/config/locales/gd.yml b/config/locales/gd.yml index 931cea4fb..387ba6c2a 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -40,7 +40,6 @@ gd: other: post two: phost status_count_before: A dh’fhoillsich - tagline: Lean air caraidean ’s rùraich feadhainn ùra terms: Teirmichean na seirbheise unavailable_content: Frithealaichean fo mhaorsainneachd unavailable_content_description: @@ -446,6 +445,7 @@ gd: destroyed_msg: Chan eil an àrainn ’ga bacadh tuilleadh domain: Àrainn edit: Deasaich bacadh na h-àrainne + existing_domain_block: Chuir thu cuingeachaidhean nas teinne air %{name} mu thràth. existing_domain_block_html: Chuir thu cuingeachadh nas teinne air %{name} mu thràth, feumaidh tu a dì-bhacadh an toiseach. new: create: Cruthaich bacadh @@ -949,7 +949,6 @@ gd: applications: created: Chaidh an t-iarrtas a chruthachadh destroyed: Chaidh an t-iarrtas a sguabadh às - invalid_url: Tha an t-URL a thugadh seachad mì-dhligheach regenerate_token: Ath-ghin an tòcan inntrigidh token_regenerated: Chaidh an tòcan inntrigidh ath-ghintinn warning: Bi glè chùramach leis an dàta seo. Na co-roinn le duine sam bith e! diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 48435b45b..5b303b08f 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -11,8 +11,8 @@ gl: apps: Aplicacións móbiles apps_platforms: Emprega Mastodon dende iOS, Android e outras plataformas browse_directory: Mira o directorio e filtra por intereses - browse_local_posts: Navega polas publicacións públicas deste servidor en tempo real - browse_public_posts: Navega polas publicacións públicas de Mastodon en tempo real + browse_local_posts: Unha ollada aos últimos comentarios públicos neste servidor + browse_public_posts: Cronoloxía en directo cos comentarios públicos en Mastodon contact: Contacto contact_missing: Non establecido contact_unavailable: Non dispoñíbel @@ -31,14 +31,14 @@ gl: privacy_policy: Política de privacidade rules: Regras do servidor rules_html: 'Aquí tes un resumo das regras que debes seguir se queres ter unha conta neste servidor de Mastodon:' - see_whats_happening: Ver o que está a acontecer + see_whats_happening: Mira o que acontece server_stats: 'Estatísticas do servidor:' source_code: Código fonte status_count_after: one: publicación other: publicacións status_count_before: Que publicaron - tagline: Segue ás túas amizades e coñece novas + tagline: Rede social descentralizada terms: Termos do servizo unavailable_content: Contido non dispoñíbel unavailable_content_description: @@ -852,6 +852,26 @@ gl: edit_preset: Editar aviso preestablecido empty: Non definiches os avisos prestablecidos. title: Xestionar avisos preestablecidos + webhooks: + add_new: Engadir punto de extremo + delete: Eliminar + description_html: Un webhook permítelle a Mastodon enviar notificacións en tempo real á túa aplicación acerca dos eventos elexidos e así, a aplicación activará automáticamente a súa programación. + disable: Desactivar + disabled: Desactivado + edit: Editar extremo + empty: Non tes configurado ningún punto extremo para o webhook. + enable: Activar + enabled: Activo + enabled_events: + one: 1 evento activado + other: "%{count} eventos activados" + events: Eventos + new: Novo webhook + rotate_secret: Rotar segredo + secret: Segredo de acceso + status: Estado + title: Webhooks + webhook: Webhook admin_mailer: new_appeal: actions: @@ -916,7 +936,6 @@ gl: applications: created: Creouse con éxito este aplicativo destroyed: Eliminouse con éxito o aplicativo - invalid_url: A URL proporcionada non é válida regenerate_token: Votar a xenerar o testemuño de acceso token_regenerated: Rexenerouse con éxito o testemuño de acceso warning: Ten moito tino con estos datos. Non os compartas nunca con ninguén! diff --git a/config/locales/he.yml b/config/locales/he.yml index 2d0cf8ae9..040034125 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -1,7 +1,7 @@ --- he: about: - about_hashtag_html: אלו סטטוסים פומביים המתוייגים בתור#%{hashtag}. ניתן להגיב, להדהד או לחבב אותם אם יש לך חשבון בכל מקום בפדרציה. + about_hashtag_html: אלו הודעות פומביות המתוייגות בתור#%{hashtag}. ניתן להגיב, להדהד או לחבב אותם אם יש לך חשבון בכל מקום שהוא בפדרציה. about_mastodon_html: מסטודון היא רשת חברתית חופשית, מבוססת תוכנה חופשית ("קוד פתוח"). כאלטרנטיבה בלתי ריכוזית לפלטפרומות המסחריות, מסטודון מאפשרת להמנע מהסיכונים הנלווים להפקדת התקשורת שלך בידי חברה יחידה. שמת את מבטחך בשרת אחד — לא משנה במי בחרת, תמיד אפשר לדבר עם כל שאר המשתמשים. לכל מי שרוצה יש את האפשרות להקים שרת מסטודון עצמאי, ולהשתתף ברשת החברתית באופן חלק. about_this: אודות שרת זה active_count_after: פעיל @@ -40,7 +40,6 @@ he: other: חצרוצים two: חצרוצים status_count_before: שכתבו - tagline: מעקב אחרי חברים וגילוי חדשים terms: תנאי שימוש unavailable_content: שרתים מוגבלים unavailable_content_description: @@ -885,6 +884,14 @@ he: edit_preset: ערוך/י טקסט מוכן מראש לאזהרה empty: לא הגדרת עדיין שום טקסט מוכן מראש לאזהרה. title: ניהול טקסטים מוכנים מראש לאזהרות + webhooks: + delete: מחיקה + disable: כיבוי + disabled: כבוי + enable: אפשר + enabled: פעילים + events: אירועים + status: סטטוס admin_mailer: new_appeal: actions: @@ -949,7 +956,6 @@ he: applications: created: ישום נוצר בהצלחה destroyed: ישום נמחק בהצלחה - invalid_url: כתובת הקישורית אינה חוקית regenerate_token: יצירת אסימון גישה מחדש token_regenerated: אסימון גישה יוצר מחדש בהצלחה warning: זהירות רבה נדרשת עם מידע זה. אין לחלוק אותו אף פעם עם אף אחד! diff --git a/config/locales/hr.yml b/config/locales/hr.yml index dd3b99dcc..fd90a5ac4 100644 --- a/config/locales/hr.yml +++ b/config/locales/hr.yml @@ -79,8 +79,6 @@ hr: application_mailer: settings: 'Promijeni postavke e-pošte: %{link}' view: 'Vidi:' - applications: - invalid_url: Unesena poveznica nije valjana auth: didnt_get_confirmation: Niste primili upute za potvrđivanje? forgot_password: Zaboravljena lozinka? diff --git a/config/locales/hu.yml b/config/locales/hu.yml index faee9de06..5ee01ea2c 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -38,7 +38,7 @@ hu: one: bejegyzést írt other: bejegyzést írt status_count_before: Eddig - tagline: Kövess barátokat és találj újakat + tagline: Decentralizált szociális hálózat terms: Felhasználási feltételek unavailable_content: Kimoderált szerverek unavailable_content_description: @@ -854,6 +854,26 @@ hu: edit_preset: Figyelmeztetés szerkesztése empty: Nem definiáltál még egyetlen figyelmeztetést sem. title: Figyelmeztetések + webhooks: + add_new: Végpont hozzáadása + delete: Törlés + description_html: Egy webhook lehetővé teszi a Mastodon számára, hogy valósidejű értesítéseket küldjön le a kiválasztott eseményekről a te alkalmazásodnak, így az alkalmazásod automatikusan reagálhat ezekre. + disable: Letiltás + disabled: Letiltva + edit: Végpont szerkesztése + empty: Még nincs beállított webhook végpontod. + enable: Engedélyezés + enabled: Aktív + enabled_events: + one: 1 engedélyezett esemény + other: "%{count} engedélyezett esemény" + events: Események + new: Új webhook + rotate_secret: Titok forgatása + secret: Titok aláírása + status: Állapot + title: Webhookok + webhook: Webhook admin_mailer: new_appeal: actions: @@ -918,7 +938,6 @@ hu: applications: created: Alkalmazás sikeresen létrehozva destroyed: Alkalmazás sikeresen eltávolítva - invalid_url: A megadott URL nem megfelelő regenerate_token: Hozzáférési kulcs újragenerálása token_regenerated: Hozzáférési kulcs sikeresen újragenerálva warning: Ez érzékeny adat. Soha ne oszd meg másokkal! diff --git a/config/locales/hy.yml b/config/locales/hy.yml index f24b3197e..831ca6621 100644 --- a/config/locales/hy.yml +++ b/config/locales/hy.yml @@ -33,7 +33,6 @@ hy: one: գրառում other: ստատուս status_count_before: Որոնք արել են՝ - tagline: Հետեւիր ընկերներիդ եւ գտիր նորերին terms: Ծառայութեան պայմանները unavailable_content: Մոդերացուող սպասարկիչներ unavailable_content_description: @@ -551,7 +550,6 @@ hy: view_profile: Նայել անձնական էջը view_status: Նայել գրառումը applications: - invalid_url: Տրամադրուած URL անվաւեր է regenerate_token: Ստեղծել նոր հասանելիութեան կտրոն your_token: Քո մուտքի բանալին auth: diff --git a/config/locales/id.yml b/config/locales/id.yml index c278f749f..368b21add 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -35,7 +35,7 @@ id: status_count_after: other: status status_count_before: Yang telah menulis - tagline: Ikuti teman dan temukan yang baru + tagline: Jejaring sosial terdesentralisasi terms: Kebijakan layanan unavailable_content: Konten tak tersedia unavailable_content_description: @@ -833,6 +833,21 @@ id: edit_preset: Sunting preset peringatan empty: Anda belum mendefinisikan peringatan apapun. title: Kelola preset peringatan + webhooks: + add_new: Tambah titik akhir + delete: Hapus + disable: Matikan + disabled: Nonaktif + edit: Edit titik akhir + enable: Aktifkan + enabled: Aktif + enabled_events: + other: "%{count} acara aktif" + events: Acara + new: Webhook baru + status: Status + title: Webhook + webhook: Webhook admin_mailer: new_appeal: actions: @@ -897,7 +912,6 @@ id: applications: created: Aplikasi berhasil dibuat destroyed: Aplikasi berhasil dihapus - invalid_url: URL tidak sesuai regenerate_token: Buat ulang token akses token_regenerated: Token akses berhasil dibuat ulang warning: Hati-hati dengan data ini. Jangan bagikan kepada siapapun! diff --git a/config/locales/io.yml b/config/locales/io.yml index 3649ec946..7cf253089 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -38,7 +38,7 @@ io: one: posto other: posti status_count_before: Qua publikigis - tagline: Sequez amiki e deskovrez nova personi + tagline: Necentralizita sociala reto terms: Serveskondicioni unavailable_content: Jerata servili unavailable_content_description: @@ -852,6 +852,26 @@ io: edit_preset: Modifikez avertfixito empty: Vu ne fixis irga avertfixito til nun. title: Jerez avertfixiti + webhooks: + add_new: Insertez finpunto + delete: Efacez + description_html: "Rethoko povigas Mastodon sendar samtempoavizi pri selektita eventi a vua sua apliko, por ke vua apliko povas automate kauzigar reakti." + disable: Desaktivigez + disabled: Desaktivigita + edit: Modifikez finpunto + empty: Vu ne havas irga ajustita finpunti ankore. + enable: Aktivigez + enabled: Aktiva + enabled_events: + one: 1 aktivigita evento + other: "%{count} aktivigita eventi" + events: Eventi + new: Nova rethoko + rotate_secret: Rotacigez sekreto + secret: Signosekreto + status: Stando + title: Rethoki + webhook: Rethok admin_mailer: new_appeal: actions: @@ -916,7 +936,6 @@ io: applications: created: Apliko sucesoze kreesas destroyed: Apliko sucesoze efacesas - invalid_url: La URL donita ne esas valida regenerate_token: Rifacez acesficho token_regenerated: Acesficho sucesoze riganesas warning: Sorgemez per ca informi. Ne partigez kun irgu! diff --git a/config/locales/is.yml b/config/locales/is.yml index 4e3f9353e..f9d408822 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -38,7 +38,7 @@ is: one: færsla other: færslur status_count_before: Sem stóðu fyrir - tagline: Fylgstu með vinum og uppgötvaðu nýja + tagline: Dreift samfélagsnet terms: Þjónustuskilmálar unavailable_content: Ekki tiltækt efni unavailable_content_description: @@ -852,6 +852,14 @@ is: edit_preset: Breyta forstilltri aðvörun empty: Þú hefur ekki enn skilgreint neinar aðvaranaforstillingar. title: Sýsla með forstilltar aðvaranir + webhooks: + delete: Eyða + disable: Gera óvirkt + disabled: Óvirkt + enable: Virkja + enabled: Virkt + events: Atburðir + status: Staða admin_mailer: new_appeal: actions: @@ -916,7 +924,6 @@ is: applications: created: Það tókst að búa til forrit destroyed: Það tókst að eyða forriti - invalid_url: Slóðin sem þú gafst upp er ógild regenerate_token: Endurgera aðgangsteikn token_regenerated: Það tókst að endurgera aðgangsteiknið warning: Farðu mjög varlega með þessi gögn. Þú skalt aldrei deila þeim með neinum! diff --git a/config/locales/it.yml b/config/locales/it.yml index 708436ee1..f97779d26 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -38,7 +38,7 @@ it: one: stato other: stati status_count_before: Che hanno pubblicato - tagline: Segui amici e trovane di nuovi + tagline: Social network decentralizzato terms: Termini di Servizio unavailable_content: Server moderati unavailable_content_description: @@ -852,6 +852,26 @@ it: edit_preset: Modifica avviso predefinito empty: Non hai ancora definito alcun avviso preimpostato. title: Gestisci avvisi predefiniti + webhooks: + add_new: Aggiungi endpoint + delete: Elimina + description_html: Un webhook consente a Mastodon di inviare notifiche in tempo reale su determinati eventi alla tua applicazione, così la tua applicazione può attivare automaticamente delle reazioni. + disable: Disabilita + disabled: Disabilitato + edit: Modifica endpoint + empty: Non hai ancora configurato alcun endpoint per webhook. + enable: Abilita + enabled: Attivo + enabled_events: + one: 1 evento abilitato + other: "%{count} eventi abilitati" + events: Eventi + new: Nuovo webhook + rotate_secret: Ruota segreto + secret: Segreto per firma + status: Stato + title: Webhook + webhook: Webhook admin_mailer: new_appeal: actions: @@ -918,7 +938,6 @@ it: applications: created: Applicazione creata con successo destroyed: Applicazione eliminata con successo - invalid_url: L'URL fornito non è valido regenerate_token: Rigenera il token di accesso token_regenerated: Token di accesso rigenerato warning: Fa' molta attenzione con questi dati. Non fornirli mai a nessun altro! diff --git a/config/locales/ja.yml b/config/locales/ja.yml index defd5ab7c..b7139523b 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -35,7 +35,7 @@ ja: status_count_after: other: 投稿 status_count_before: 投稿数 - tagline: Follow friends and discover new ones + tagline: 分散型ソーシャルネットワーク terms: 利用規約 unavailable_content: 制限中のサーバー unavailable_content_description: @@ -825,6 +825,18 @@ ja: edit_preset: プリセット警告文を編集 empty: まだプリセット警告文が作成されていません。 title: プリセット警告文を管理 + webhooks: + add_new: エンドポイントを追加 + delete: 削除 + disable: 無効化 + disabled: 無効 + edit: エンドポイントを編集 + enable: 有効化 + enabled: アクティブ + events: イベント + new: 新しいwebhook + title: Webhooks + webhook: Webhook admin_mailer: new_appeal: actions: @@ -885,7 +897,6 @@ ja: applications: created: アプリが作成されました destroyed: アプリが削除されました - invalid_url: URLが無効です regenerate_token: アクセストークンの再生成 token_regenerated: アクセストークンが再生成されました warning: このデータは気をつけて取り扱ってください。他の人と共有しないでください! diff --git a/config/locales/ka.yml b/config/locales/ka.yml index 7e6d591ec..bd02b0f8d 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -305,7 +305,6 @@ ka: applications: created: აპლიკაცია წარმატებით შეიქმნა destroyed: აპლიკაცია წარმატებით გაუქმდა - invalid_url: მოწოდებული ურლ არასწორია regenerate_token: წვდომის ტოკენის რეგენერაცია token_regenerated: წვდომის ტოკენის რეგენერაცია მოხერხდა warning: იყავით ძალიან ფრთხილად ამ მონაცემთან. არასდროს გააზიაროთ ეს! diff --git a/config/locales/kab.yml b/config/locales/kab.yml index 66d029d7a..0db4e1c9d 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -29,7 +29,6 @@ kab: one: n tsuffeɣt other: n tsuffiɣin status_count_before: I d-yessuffɣen - tagline: Ḍfeṛ imddukkal-ik tissineḍ-d wiyaḍ terms: Tiwetlin n useqdec unavailable_content: Ulac agbur unavailable_content_description: diff --git a/config/locales/kk.yml b/config/locales/kk.yml index a01a2424a..406f7e3c8 100644 --- a/config/locales/kk.yml +++ b/config/locales/kk.yml @@ -32,7 +32,6 @@ kk: one: жазба other: жазба status_count_before: Барлығы - tagline: Достарыңызды оқыңыз және жаңа авторларды табыңыз terms: Қолдану шарттары unavailable_content: Қолжетімсіз контент unavailable_content_description: @@ -477,7 +476,6 @@ kk: applications: created: Application succеssfully created destroyed: Application succеssfully deleted - invalid_url: The providеd URL is invalid regenerate_token: Regenerate accеss token token_regenerated: Access token succеssfully regenerated warning: Be very carеful with this data. Never share it with anyone! diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 630beabfb..65bc57e3a 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -37,7 +37,7 @@ ko: status_count_after: other: 개 status_count_before: 게시물 수 - tagline: 친구들을 팔로우 하고 새로운 사람들도 만나기 + tagline: 분산화된 소셜 네트워크 terms: 이용약관 unavailable_content: 이용 불가능한 컨텐츠 unavailable_content_description: @@ -837,6 +837,14 @@ ko: edit_preset: 경고 틀 수정 empty: 아직 어떤 경고 틀도 정의되지 않았습니다. title: 경고 틀 관리 + webhooks: + add_new: 엔드포인트 추가 + delete: 삭제 + disable: 비활성화 + disabled: 비활성화됨 + edit: 엔드포인트 수정 + enable: 활성화 + enabled: 활성화됨 admin_mailer: new_appeal: actions: @@ -901,7 +909,6 @@ ko: applications: created: 애플리케이션이 성공적으로 생성되었습니다 destroyed: 애플리케이션이 성공적으로 삭제되었습니다 - invalid_url: 올바르지 않은 URL입니다 regenerate_token: 토큰 재생성 token_regenerated: 액세스 토큰이 성공적으로 재생성되었습니다 warning: 이 데이터를 조심히 다뤄 주세요. 다른 사람들과 절대로 공유하지 마세요! diff --git a/config/locales/ku.yml b/config/locales/ku.yml index 78d99c2e5..a157dbb4e 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -38,7 +38,7 @@ ku: one: şandî other: şandî status_count_before: Hatin weşan - tagline: Hevalên xwe bişopîne û yên nû bibîne + tagline: Tora civakî ya nenavendî terms: Peyama mercan unavailable_content: Rajekarên li hev kirî unavailable_content_description: @@ -854,6 +854,26 @@ ku: edit_preset: Hişyariyên pêşsazkirî serrast bike empty: Te hin tu hişyariyên pêşsazkirî destnîşan nekirine. title: Hişyariyên pêşsazkirî bi rêve bibe + webhooks: + add_new: Xala dawîbûnê tevlî bike + delete: Jê bibe + description_html: "çengeleke tevnê dihêle ku Mastodon agahdariyên dema-rastîn ên derbarê çalakiyên hilbijartî de bisepîne ser sepana te, bi vî awayî sepana te dikare reaksiyonan bi awayekî bixweber nîşan bide." + disable: Neçalak bike + disabled: Neçalakkirî + edit: Xala dawîbûnê serrast bike + empty: Hîn çengela tevnê ya xala dawîbûnê ya te ku hatiye pevesazkirin tune ne. + enable: Çalak bike + enabled: Çalak + enabled_events: + one: 1 bûyer çalakkirî + other: "%{count} bûyer çalakkirî" + events: Bûyer + new: Çengela tevnê ya nû + rotate_secret: Veşartî bizivirîne + secret: Îmzekirina veşartî + status: Rewş + title: Çengelên tevnê + webhook: Çengela tevnê admin_mailer: new_appeal: actions: @@ -918,7 +938,6 @@ ku: applications: created: Sepan bi awayekî serkeftî hat çêkirin destroyed: Sepan bi awayekî serkeftî hat jêbirin - invalid_url: URL ya hatiye dayîn ne derbasdar e regenerate_token: Nîşandera gihandinê bi nûve çêbike token_regenerated: Nîşandera gihandinê bi serkeftî nû ve hat çêkirin warning: Bi van daneyan re pir baldar be. Tu caran bi kesî re parve neke! diff --git a/config/locales/lt.yml b/config/locales/lt.yml index 864d2f43f..5846f7d5d 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -353,7 +353,6 @@ lt: applications: created: Aplikacija sėkmingai sukurta destroyed: Aplikacija sėkmingai ištrinta - invalid_url: Gauta URL nuoroda netinkama regenerate_token: Regeneruoti prieigos žetoną token_regenerated: Prieigos žetonas sėkmingai sugeneruotas warning: Būkite atsargūs su šia informacija. Niekada jos nesidalinkite! diff --git a/config/locales/lv.yml b/config/locales/lv.yml index f9d404303..2ceec30b2 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -39,13 +39,13 @@ lv: other: ziņas zero: nav status_count_before: Kurš publicējis - tagline: Seko draugiem un atrodi jaunus + tagline: Decentralizēts sociālais tīkls terms: Pakalpojuma noteikumi unavailable_content: Moderētie serveri unavailable_content_description: domain: Serveris reason: Iemesls - rejecting_media: 'Multivides faili no šiem serveriem netiks apstrādāti vai saglabāti, un netiks parādīti sīktēli, kuriem nepieciešama manuāla noklikšķināšana uz sākotnējā faila:' + rejecting_media: 's faili no šiem serveriem netiks apstrādāti vai saglabāti, un netiks parādīti sīktēli, kuriem nepieciešama manuāla noklikšķināšana uz sākotnējā faila:' rejecting_media_title: Filtrēts saturs silenced: 'Ziņas no šiem serveriem tiks paslēptas publiskās ziņu lentās un sarunās, un no lietotāju mijiedarbības netiks ģenerēti paziņojumi, ja vien tu tiem nesekosi:' silenced_title: Ierobežoti serveri @@ -72,7 +72,7 @@ lv: joined: Pievienojās %{date} last_active: pēdējā aktivitāte link_verified_on: Šīs saites piederība tika pārbaudīta %{date} - media: Mediji + media: Multivide moved_html: "%{name} ir pārcēlies uz %{new_profile_link}:" network_hidden: Šāda informācija nav pieejama nothing_here: Te nekā nav! @@ -770,7 +770,7 @@ lv: report: Ziņojums deleted: Dzēstie media: - title: Mediji + title: Multivide no_status_selected: Neviena ziņa netika mainīta, jo neviena netika atlasīta title: Konta ziņas with_media: Ar medijiem @@ -869,6 +869,27 @@ lv: edit_preset: Labot iepriekš iestatītus brīdinājumus empty: Tu vēl neesi definējis iepriekš iestatītos brīdinājumus. title: Pārvaldīt brīdinājuma iestatījumus + webhooks: + add_new: Pievienot galapunktu + delete: Dzēst + description_html: Izmantojot tīmekļa aizķeri, Mastodon var nosūtīt jūsu lietojumprogrammai reāllaika paziņojumus par izvēlētajiem notikumiem, lai tava lietojumprogramma varētu automātiski izraisīt reakcijas. + disable: Atspējot + disabled: Atspējots + edit: Rediģēt galapunktu + empty: Tev vēl nav konfigurēts neviens tīmekļa aizķeres galapunkts. + enable: Iespējot + enabled: Aktīvie + enabled_events: + one: 1 iespējots notikums + other: "%{count} iespējoti notikumi" + zero: "%{count} iespējotu notikumu" + events: Notikumi + new: Jauna tīmekļa aizķere + rotate_secret: Pagriezt noslēpumu + secret: Paraksta noslēpums + status: Statuss + title: Tīmekļa āķi + webhook: Tīmekļa āķis admin_mailer: new_appeal: actions: @@ -933,7 +954,6 @@ lv: applications: created: Lietojumprogramma ir veiksmīgi izveidota destroyed: Lietojumprogramma ir veiksmīgi dzēsta - invalid_url: Norādītais URL nav derīgs regenerate_token: Atjaunot piekļuves marķieri token_regenerated: Piekļuves marķieris veiksmīgi atjaunots warning: Esi ļoti uzmanīgs ar šiem datiem. Nekad nedalies ne ar vienu ar tiem! diff --git a/config/locales/ml.yml b/config/locales/ml.yml index daee6098c..f035633ca 100644 --- a/config/locales/ml.yml +++ b/config/locales/ml.yml @@ -15,7 +15,6 @@ ml: see_whats_happening: എന്തൊക്കെ സംഭവിക്കുന്നു എന്ന് കാണുക source_code: സോഴ്സ് കോഡ് status_count_before: ആരാൽ എഴുതപ്പെട്ടു - tagline: സുഹൃത്തുക്കളെ പിന്തുടരുകയും പുതിയവരെ കണ്ടെത്തുകയും ചെയ്യുക terms: സേവന വ്യവസ്ഥകൾ unavailable_content: ലഭ്യമല്ലാത്ത ഉള്ളടക്കം unavailable_content_description: diff --git a/config/locales/ms.yml b/config/locales/ms.yml index 4e101a890..d400d3256 100644 --- a/config/locales/ms.yml +++ b/config/locales/ms.yml @@ -34,7 +34,6 @@ ms: status_count_after: other: hantaran status_count_before: Siapa terbitkan - tagline: Ikuti rakan lama dan terokai rakan baharu terms: Terma perkhidmatan unavailable_content: Pelayan disederhanakan unavailable_content_description: diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 764ae42d6..db49efbb9 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -36,7 +36,7 @@ nl: one: toot other: berichten status_count_before: Zij schreven - tagline: Vrienden volgen en nieuwe ontdekken + tagline: Gedecentraliseerd sociaal netwerk terms: Gebruiksvoorwaarden unavailable_content: Gemodereerde servers unavailable_content_description: @@ -680,7 +680,6 @@ nl: applications: created: Aanmaken toepassing geslaagd destroyed: Verwijderen toepassing geslaagd - invalid_url: De opgegeven URL is ongeldig regenerate_token: Toegangscode opnieuw aanmaken token_regenerated: Opnieuw aanmaken toegangscode geslaagd warning: Wees voorzichtig met deze gegevens. Deel het nooit met iemand anders! diff --git a/config/locales/nn.yml b/config/locales/nn.yml index ea5020bbf..5218270da 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -30,7 +30,6 @@ nn: server_stats: 'Tenarstatistikk:' source_code: Kjeldekode status_count_before: Som skreiv - tagline: Fylg vener og oppdag nye terms: Brukarvilkår unavailable_content: Utilgjengeleg innhald unavailable_content_description: @@ -634,7 +633,6 @@ nn: applications: created: Søknad laga destroyed: Søknad sletta - invalid_url: Denne lenkja er ugyldig regenerate_token: Lag tilgangsnykel på nytt token_regenerated: Tilgangsnykel laga på nytt warning: Ver varsam med dette datumet. Aldri del det med nokon! diff --git a/config/locales/no.yml b/config/locales/no.yml index 4abc8f086..30b7a56fb 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -33,7 +33,6 @@ one: innlegg other: statuser status_count_before: Som skrev - tagline: Følg venner og oppdag nye terms: Bruksvilkår unavailable_content: Utilgjengelig innhold unavailable_content_description: @@ -629,7 +628,6 @@ applications: created: Søknaden ble vellykket oppretttet destroyed: Søknaden ble vellykket slettet - invalid_url: Den oppgitte URLen er ugyldig regenerate_token: Regenerer tilgangsnøkkel token_regenerated: Tilgangsnøkkel vellykket regenerert warning: Vær veldig forsiktig med denne data. Aldri del den med noen! diff --git a/config/locales/oc.yml b/config/locales/oc.yml index 678d5d0dc..57cecbdc4 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -31,7 +31,6 @@ oc: one: estatut other: estatuts status_count_before: qu’an escrich - tagline: Seguètz d’amics e trobatz-ne de nòus terms: Condicions d’utilizacion unavailable_content: Contengut pas disponible unavailable_content_description: @@ -573,7 +572,6 @@ oc: applications: created: Aplicacion ben creada destroyed: Aplication corrcètament suprimida - invalid_url: L’URL donada es invalida regenerate_token: Tornar generar lo geton d’accès token_regenerated: Geton d’accès ben regenerat warning: Mèfi ! Agachatz de partejar aquela donada amb degun ! diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 2709572de..7557ab83f 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -40,7 +40,6 @@ pl: one: wpisu other: wpisów status_count_before: Są autorami - tagline: Śledź znajomych i poznawaj nowych terms: Zasady użytkowania unavailable_content: Niedostępne treści unavailable_content_description: @@ -871,6 +870,28 @@ pl: edit_preset: Edytuj szablon ostrzeżenia empty: Nie zdefiniowano jeszcze żadnych szablonów ostrzegawczych. title: Zarządzaj szablonami ostrzeżeń + webhooks: + add_new: Dodaj punkt końcowy + delete: Usuń + description_html: "webhook umożliwia Mastodon dostarczanie powiadomień w czasie rzeczywistym o wybranych wydarzeniach do twojej aplikacji, aby mogła automatycznie wyzwalać reakcje." + disable: Wyłącz + disabled: Wyłączone + edit: Edytuj punkt końcowy + empty: Nie masz jeszcze skonfigurowanych żadnych webhooków do punktów końcowych. + enable: Włącz + enabled: Aktywne + enabled_events: + few: "%{count} włączone zdarzenia" + many: "%{count} włączonych zdarzeń" + one: 1 włączone zdarzenie + other: "%{count} włączonych zdarzeń" + events: Zdarzenia + new: Nowy webhook + rotate_secret: Odśwież klucz szyfrowania + secret: Podpisywanie klucza szyfrowania + status: Stan + title: Webhooki + webhook: Webhook admin_mailer: new_appeal: actions: @@ -935,7 +956,6 @@ pl: applications: created: Pomyślnie utworzono aplikację destroyed: Pomyślnie usunięto aplikację - invalid_url: Wprowadzony adres URL jest nieprawidłowy regenerate_token: Wygeneruj nowy token dostępu token_regenerated: Pomyślnie wygenerowano nowy token dostępu warning: Przechowuj te dane ostrożnie. Nie udostępniaj ich nikomu! diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index b24811049..7661df9a0 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -38,7 +38,6 @@ pt-BR: one: toot other: toots status_count_before: Autores de - tagline: Siga seus amigos e faça novas amizades terms: Termos de serviço unavailable_content: Conteúdo indisponível unavailable_content_description: @@ -428,6 +427,7 @@ pt-BR: destroyed_msg: Domínio desbloqueado domain: Domínio edit: Editar bloqueio de domínio + existing_domain_block: Você já impôs limites mais rigorosos em %{name}. existing_domain_block_html: Você já impôs limites mais estritos em %{name}, você precisa desbloqueá-lo primeiro. new: create: Criar bloqueio @@ -615,6 +615,7 @@ pt-BR: forwarded: Encaminhados forwarded_to: Encaminhado para %{domain} mark_as_resolved: Marcar como resolvido + mark_as_sensitive: Marcar como sensível mark_as_unresolved: Marcar como não resolvido no_one_assigned: Ninguém notes: @@ -800,6 +801,7 @@ pt-BR: usable: Pode ser usado usage_comparison: Usado %{today} vezes hoje, em comparação com %{yesterday} de ontem title: Em alta + trending: Em alta warning_presets: add_new: Adicionar novo delete: Excluir @@ -807,6 +809,12 @@ pt-BR: empty: Você ainda não definiu nenhuma predefinição de alerta. title: Gerenciar os avisos pré-definidos admin_mailer: + new_appeal: + actions: + delete_statuses: para excluir suas publicações + none: um aviso + sensitive: para marcar sua conta como sensível + silence: para limitar sua conta new_pending_account: body: Os detalhes da nova conta estão abaixo. Você pode aprovar ou vetar. subject: Nova conta para revisão em %{instance} (%{username}) @@ -851,7 +859,6 @@ pt-BR: applications: created: Aplicativo criado com sucesso destroyed: Aplicativo excluído com sucesso - invalid_url: O link fornecido é inválido regenerate_token: Gerar código de acesso token_regenerated: Código de acesso gerado com sucesso warning: Tenha cuidado com estes dados. Nunca compartilhe com alguém! diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 377360a9d..9607762bb 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -38,7 +38,7 @@ pt-PT: one: publicação other: publicações status_count_before: Que fizeram - tagline: Siga os seus amigos e descubra novas amizades + tagline: Rede social descentralizada terms: Termos de serviço unavailable_content: Conteúdo indisponível unavailable_content_description: @@ -852,6 +852,26 @@ pt-PT: edit_preset: Editar o aviso predefinido empty: Ainda não definiu nenhum aviso predefinido. title: Gerir os avisos predefinidos + webhooks: + add_new: Adicionar endpoint + delete: Eliminar + description_html: Um webhook possibilita que o Mastodon envie notificações em tempo real de eventos seleccionados, para um seu aplicativo, para que este possa acionar ações automaticamente. + disable: Desativar + disabled: Desativado + edit: Editar endpoint + empty: Não tem ainda qualquer endpoint de webhook configurado. + enable: Ativar + enabled: Activo + enabled_events: + one: 1 evento ativado + other: "%{count} eventos ativados" + events: Eventos + new: Novo webhook + rotate_secret: Alternar segredo + secret: Segredo de assinatura + status: Estado + title: Webhooks + webhook: Webhook admin_mailer: new_appeal: actions: @@ -916,7 +936,6 @@ pt-PT: applications: created: Aplicação criada com sucesso destroyed: Aplicação eliminada com sucesso - invalid_url: O URL é inválido regenerate_token: Regenerar token de acesso token_regenerated: Token de acesso regenerado com sucesso warning: Cuidado com estes dados. Não partilhar com ninguém! diff --git a/config/locales/ro.yml b/config/locales/ro.yml index d13aa5464..3203e9178 100644 --- a/config/locales/ro.yml +++ b/config/locales/ro.yml @@ -36,7 +36,6 @@ ro: one: stare other: de stări status_count_before: Care au postat - tagline: Urmăriți prietenii și descoperiți alții noi terms: Termeni de serviciu unavailable_content: Conținut indisponibil unavailable_content_description: @@ -295,7 +294,6 @@ ro: applications: created: Aplicație creată cu succes destroyed: Aplicație ștearsă cu succes - invalid_url: URL-ul furnizat nu este valid regenerate_token: Regenerează token-ul de acces token_regenerated: Token de acces regenerat cu succes warning: Fiți foarte atent cu aceste date. Nu le împărtășiți niciodată cu cineva! diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 39a3b3eb7..47f944129 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -40,7 +40,7 @@ ru: one: пост other: поста status_count_before: И опубликовано - tagline: Подписывайтесь на друзей и заводите новые знакомства + tagline: Децентрализованная социальная сеть terms: Условия использования unavailable_content: Недоступный контент unavailable_content_description: @@ -403,6 +403,16 @@ ru: media_storage: Медиа файлы new_users: новые пользователи opened_reports: жалоб открыто + pending_reports_html: + few: "%{count} ожидающих отчета" + many: "%{count} ожидающих отчетов" + one: "%{count} ожидающий отчет" + other: "%{count} ожидающих отчетов" + pending_users_html: + few: "%{count} ожидающих пользователя" + many: "%{count} ожидающих пользователей" + one: "%{count} ожидающий пользователь" + other: "%{count} ожидающих пользователей" resolved_reports: жалоб решено software: Программное обеспечение sources: Источники регистрации @@ -500,6 +510,7 @@ ru: suspend: Приостановить policy: Политика reason: Публичная причина + title: Политика контента dashboard: instance_accounts_dimension: Популярные аккаунты instance_accounts_measure: сохраненные учетные записи @@ -803,6 +814,8 @@ ru: statuses: allow: Разрешить пост allow_account: Разрешить автора + disallow: Запретить пост + disallow_account: Запретить автора title: Популярные посты tags: current_score: Текущий счет %{score} @@ -818,6 +831,7 @@ ru: peaked_on_and_decaying: Последний пик — %{date}, сейчас идёт на спад title: Актуальные хэштеги trendable: Может появляться в списке «актуального» + trending_rank: 'Популярное #%{rank}' usable: Может использоваться usage_comparison: Использовано %{today} сегодня, для сравнения вчера %{yesterday} used_by_over_week: @@ -833,12 +847,35 @@ ru: edit_preset: Удалить шаблон предупреждения empty: Вы еще не определили пресеты предупреждений. title: Управление шаблонами предупреждений + webhooks: + add_new: Добавить конечную точку + delete: Удалить + description_html: "Вебхуки позволяют Mastodon отправлять вашим приложениям уведомления в реальном времени о выбранных происходящих событиях, а они могут обрабатывать их в автоматическом режиме." + disable: Отключить + disabled: Отключено + edit: Редактировать вебхук + empty: У вас пока нет настроенных конечных точек вебхуков. + enable: Включить + enabled: Активен + enabled_events: + few: "%{count} события включено" + many: "%{count} событий включено" + one: "%{count} событие включено" + other: "%{count} событий включено" + events: События + new: Новый вебхук + rotate_secret: Сгенерировать новый + secret: Ключ подписи + status: Состояние + title: Вебхуки + webhook: Вебхук admin_mailer: new_appeal: actions: none: предупреждение silence: ограничить учётную запись suspend: приостановить действие учётной записи + body: "%{target} обжалуют решение модератора %{action_taken_by} от %{date}, которое %{type}. Они написали:" subject: "%{username} обжалует решение модерации на %{instance}" new_pending_account: body: Ниже указана информация учётной записи. Вы можете одобрить или отклонить заявку. @@ -885,7 +922,6 @@ ru: applications: created: Приложение успешно создано destroyed: Приложение успешно удалено - invalid_url: Введенный URL неверен regenerate_token: Повторно сгенерировать токен доступа token_regenerated: Токен доступа успешно сгенерирован warning: Будьте очень внимательны с этими данными. Не делитесь ими ни с кем! diff --git a/config/locales/sc.yml b/config/locales/sc.yml index 99cd3f0b5..490654143 100644 --- a/config/locales/sc.yml +++ b/config/locales/sc.yml @@ -35,7 +35,6 @@ sc: one: istadu other: istados status_count_before: Atributzione de - tagline: Sighi is amistades tuas e iscoberi·nde àteras terms: Cunditziones de su servìtziu unavailable_content: Serbidores moderados unavailable_content_description: @@ -659,7 +658,6 @@ sc: applications: created: Aplicatzione creada destroyed: Aplicatzione cantzellada - invalid_url: S'URL frunidu no est curretu regenerate_token: Torra a generare s'identificadore de atzessu token_regenerated: Identificadore de atzessu generadu warning: Dae cara a custos datos. Non ddos cumpartzas mai cun nemos! diff --git a/config/locales/simple_form.af.yml b/config/locales/simple_form.af.yml index 252f9fd5a..a52c53eba 100644 --- a/config/locales/simple_form.af.yml +++ b/config/locales/simple_form.af.yml @@ -1 +1,11 @@ +--- af: + simple_form: + hints: + webhook: + events: Kies gebeurtenisse om te stuur + url: Waarheen gebeurtenisse gestuur sal word + labels: + webhook: + events: Geaktiveerde gebeurtenisse + url: End-punt URL diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index 2e0632648..ccbb90282 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -91,6 +91,9 @@ ca: name: Només pots canviar la caixa de les lletres, per exemple, per fer-la més llegible user: chosen_languages: Quan estigui marcat, només es mostraran les publicacions en les llengües seleccionades en les línies de temps públiques + webhook: + events: Selecciona esdeveniments a enviar + url: On els esdeveniments seran enviats labels: account: fields: @@ -219,6 +222,9 @@ ca: name: Etiqueta trendable: Permet que aquesta etiqueta aparegui en les tendències usable: Permetre a les publicacions emprar aquesta etiqueta + webhook: + events: Esdeveniments activats + url: URL del extrem 'no': 'No' recommended: Recomanat required: diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index 32711aa0d..789b328b5 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -91,6 +91,9 @@ cs: name: Můžete měnit pouze velikost písmen, například kvůli lepší čitelnosti user: chosen_languages: Po zaškrtnutí budou ve veřejných časových osách zobrazeny pouze příspěvky ve zvolených jazycích + webhook: + events: Zvolte odesílané události + url: Kam budou události odesílány labels: account: fields: @@ -219,6 +222,9 @@ cs: name: Hashtag trendable: Povolit zobrazení tohoto hashtagu mezi populárními usable: Povolit používat tento hashtag v příspěvcích + webhook: + events: Zapnuté události + url: URL koncového bodu 'no': Ne recommended: Doporučeno required: diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index 88b17a6c5..84450c768 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -91,6 +91,9 @@ da: name: Kun bogstavtyper (store/små) kan ændres, eksempelvis for at gøre det mere læsbart user: chosen_languages: Når markeret, vil kun indlæg på de valgte sprog fremgå på offentlige tidslinjer + webhook: + events: Vælg begivenheder at sende + url: Hvor begivenheder sendes til labels: account: fields: @@ -219,6 +222,9 @@ da: name: Hashtag trendable: Tillad visning af dette hashtag under trends usable: Tillad indlæg at benytte dette hashtag + webhook: + events: Aktive begivenheder + url: Endepunkts-URL 'no': Nej recommended: Anbefalet required: diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index e9ae17206..46472cdcf 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -91,6 +91,9 @@ de: name: Du kannst zum Beispiel nur die Groß- und Kleinschreibung der Buchstaben ändern, um es lesbarer zu machen user: chosen_languages: Wenn aktiviert, werden nur Beiträge in den ausgewählten Sprachen auf den öffentlichen Zeitleisten angezeigt + webhook: + events: Zu sendende Ereignisse auswählen + url: Wo Ereignisse hingesendet werden labels: account: fields: @@ -219,6 +222,9 @@ de: name: Hashtag trendable: Erlaube es diesen Hashtag in den Trends erscheinen zu lassen usable: Beiträge erlauben, diesen Hashtag zu verwenden + webhook: + events: Aktivierte Ereignisse + url: Endpunkt-URL 'no': Nein recommended: Empfohlen required: diff --git a/config/locales/simple_form.en-GB.yml b/config/locales/simple_form.en-GB.yml new file mode 100644 index 000000000..ef03d1810 --- /dev/null +++ b/config/locales/simple_form.en-GB.yml @@ -0,0 +1 @@ +en-GB: diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml index d4a9ad264..8f30266e3 100644 --- a/config/locales/simple_form.es-AR.yml +++ b/config/locales/simple_form.es-AR.yml @@ -91,6 +91,9 @@ es-AR: name: Sólo podés cambiar la capitalización de las letras, por ejemplo, para que sea más legible user: chosen_languages: Cuando estén marcados, sólo se mostrarán los mensajes en los idiomas seleccionados en las líneas temporales públicas + webhook: + events: Seleccionar eventos para enviar + url: Adónde serán enviados los eventos labels: account: fields: @@ -219,6 +222,9 @@ es-AR: name: Etiqueta trendable: Permitir que esta etiqueta aparezca bajo tendencias usable: Permitir a los mensajes usar esta etiqueta + webhook: + events: Eventos habilitados + url: Dirección web del punto final 'no': 'No' recommended: Opción recomendada required: diff --git a/config/locales/simple_form.es-MX.yml b/config/locales/simple_form.es-MX.yml index d02e97a3a..66efd68ab 100644 --- a/config/locales/simple_form.es-MX.yml +++ b/config/locales/simple_form.es-MX.yml @@ -49,6 +49,7 @@ es-MX: phrase: Se aplicará sin importar las mayúsculas o los avisos de contenido de un toot scopes: Qué APIs de la aplicación tendrán acceso. Si seleccionas el alcance de nivel mas alto, no necesitas seleccionar las individuales. setting_aggregate_reblogs: No mostrar nuevos retoots para los toots que han sido recientemente retooteados (sólo afecta a los retoots recibidos recientemente) + setting_always_send_emails: Normalmente las notificaciones por correo electrónico no se enviarán cuando estés usando Mastodon activamente setting_default_sensitive: El contenido multimedia sensible está oculto por defecto y puede ser mostrado con un click setting_display_media_default: Ocultar contenido multimedia marcado como sensible setting_display_media_hide_all: Siempre ocultar todo el contenido multimedia @@ -151,6 +152,7 @@ es-MX: phrase: Palabra clave o frase setting_advanced_layout: Habilitar interfaz web avanzada setting_aggregate_reblogs: Agrupar retoots en las líneas de tiempo + setting_always_send_emails: Enviar siempre notificaciones por correo setting_auto_play_gif: Reproducir automáticamente los GIFs animados setting_boost_modal: Mostrar ventana de confirmación antes de un Retoot setting_crop_images: Recortar a 16x9 las imágenes de los toots no expandidos diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index 53c6d9c45..53863ba31 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -91,6 +91,9 @@ es: name: Sólo se puede cambiar el cajón de las letras, por ejemplo, para que sea más legible user: chosen_languages: Cuando se marca, solo se mostrarán las publicaciones en los idiomas seleccionados en las líneas de tiempo públicas + webhook: + events: Seleccionar eventos para enviar + url: Donde los eventos serán enviados labels: account: fields: @@ -219,6 +222,9 @@ es: name: Etiqueta trendable: Permitir que esta etiqueta aparezca bajo tendencias usable: Permitir a las publicaciones usar esta etiqueta + webhook: + events: Eventos habilitados + url: URL de Endpoint 'no': 'No' recommended: Recomendado required: diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index 9a777c45c..c4fd49040 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -91,6 +91,9 @@ fr: name: Vous ne pouvez modifier que la casse des lettres, par exemple, pour le rendre plus lisible user: chosen_languages: Lorsque coché, seuls les messages dans les langues sélectionnées seront affichés sur les fils publics + webhook: + events: Sélectionnez les événements à envoyer + url: Là où les événements seront envoyés labels: account: fields: @@ -219,6 +222,9 @@ fr: name: Hashtag trendable: Autoriser ce hashtag à apparaitre dans les tendances usable: Autoriser les messages à utiliser ce hashtag + webhook: + events: Événements activés + url: URL du point de terminaison 'no': Non recommended: Recommandé required: diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml index 83447f7ec..28d098630 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -91,6 +91,9 @@ gl: name: Só podes cambiar maiús/minúsculas, por exemplo, mellorar a lexibilidade user: chosen_languages: Se ten marca, só as publicacións nos idiomas seleccionados serán mostrados en cronoloxías públicas + webhook: + events: Elexir eventos a enviar + url: Cando serán enviados os eventos labels: account: fields: @@ -219,6 +222,9 @@ gl: name: Cancelo trendable: Permitir que este cancelo apareza en tendencias usable: Permitir que as publicacións utilicen este cancelo + webhook: + events: Eventos activados + url: URL do extremo 'no': Non recommended: Recomendado required: diff --git a/config/locales/simple_form.he.yml b/config/locales/simple_form.he.yml index 6faf1842a..c7fe6026c 100644 --- a/config/locales/simple_form.he.yml +++ b/config/locales/simple_form.he.yml @@ -91,6 +91,8 @@ he: name: ניתן רק להחליף בין אותיות קטנות וגדולות, למשל כדי לשפר את הקריאות user: chosen_languages: אם פעיל, רק חצרוצים בשפות הנבחרות יוצגו לפידים הפומביים + webhook: + events: בחר אירועים לשליחה labels: account: fields: diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index fb147a22c..3aba33995 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -91,6 +91,9 @@ hu: name: Csak a kis/nagybetűséget változtathatod meg, pl. hogy olvashatóbb legyen user: chosen_languages: Ha aktív, csak a kiválasztott nyelvű bejegyzések jelennek majd meg a nyilvános idővonalon + webhook: + events: Válaszd ki a küldendő eseményeket + url: Ahová az eseményket küldjük labels: account: fields: @@ -219,6 +222,9 @@ hu: name: Hashtag trendable: A hashtag megjelenhet a felkapottak között usable: Bejegyzések használhatják ezt a hashtaget + webhook: + events: Engedélyezett események + url: Végponti URL 'no': Nem recommended: Ajánlott required: diff --git a/config/locales/simple_form.io.yml b/config/locales/simple_form.io.yml index 0e2d5e3a9..5f72276b7 100644 --- a/config/locales/simple_form.io.yml +++ b/config/locales/simple_form.io.yml @@ -91,6 +91,9 @@ io: name: Vu povas nur chanjar literkaso, por exemplo, por kauzigar lu divenar plu lektebla user: chosen_languages: Kande marketigesis, nur posti en selektesis lingui montresos en publika tempolinei + webhook: + events: Selektigez eventi por sendar + url: Ibe eventi sendesos labels: account: fields: @@ -219,6 +222,9 @@ io: name: Hashtago trendable: Permisez ca hashtago aparar che tendenci usable: Permisez posti uzar ca hashtago + webhook: + events: Aktivigita eventi + url: URL di finpunto 'no': Ne recommended: Rekomendito required: diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml index 7eb014193..4d86f24df 100644 --- a/config/locales/simple_form.it.yml +++ b/config/locales/simple_form.it.yml @@ -91,6 +91,9 @@ it: name: Puoi cambiare solo il minuscolo/maiuscolo delle lettere, ad esempio, per renderlo più leggibile user: chosen_languages: Quando una o più lingue sono contrassegnate, nelle timeline pubbliche vengono mostrati solo i toot nelle lingue selezionate + webhook: + events: Seleziona eventi da inviare + url: Dove gli eventi saranno inviati labels: account: fields: @@ -219,6 +222,9 @@ it: name: Hashtag trendable: Permetti a questo hashtag di apparire nelle tendenze usable: Permetti ai post di usare questo hashtag + webhook: + events: Eventi abilitati + url: URL endpoint 'no': 'No' recommended: Consigliato required: diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index 5f61ee19c..cde47dbd0 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -219,6 +219,9 @@ ja: name: ハッシュタグ trendable: トレンドへの表示を許可する usable: 投稿への使用を許可する + webhook: + events: 有効なイベント + url: エンドポイントURL 'no': いいえ recommended: おすすめ required: diff --git a/config/locales/simple_form.ku.yml b/config/locales/simple_form.ku.yml index e9e6603cd..9cfe371b5 100644 --- a/config/locales/simple_form.ku.yml +++ b/config/locales/simple_form.ku.yml @@ -93,6 +93,9 @@ ku: name: Tîpan, mînak ji bo ku bêhtir paknivîs bibe, tenê rewşa tîpên girdek/hûrdek dikarî biguherînî user: chosen_languages: Dema were nîşankirin, tenê parvekirinên bi zimanên hilbijartî dê di rêzikên giştî de werin nîşandan + webhook: + events: Bûyeran hilbijêre bo şandinê + url: Cihê ku bûyer wê werin şandin labels: account: fields: @@ -221,6 +224,9 @@ ku: name: Hashtag trendable: Bihêle ku ev hashtag werê xuyakirin di bin rojevê de usable: Bihêle ku şandî ev hashtag bi kar bînin + webhook: + events: Bûyerên çalakkirî + url: Girêdana xala dawîbûnê 'no': Na recommended: Pêşniyarkirî required: diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml index e512551ba..97fa2bff4 100644 --- a/config/locales/simple_form.lv.yml +++ b/config/locales/simple_form.lv.yml @@ -91,6 +91,9 @@ lv: name: Tu vari mainīt tikai burtu lielumu, piemēram, lai tie būtu vieglāk lasāmi user: chosen_languages: Ja ieķeksēts, publiskos laika grafikos tiks parādītas tikai ziņas noteiktajās valodās + webhook: + events: Atlasi nosūtāmos notikums + url: Kur notikumi tiks nosūtīti labels: account: fields: @@ -219,6 +222,9 @@ lv: name: Tēmturis trendable: Atļaut šim tēmturim parādīties zem tendencēm usable: Atļaut lietot ziņās šo tēmturi + webhook: + events: Iespējotie notikumi + url: Galapunkta URL 'no': Nē recommended: Ieteicams required: diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index 0793f55bc..b0373fbc6 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -91,6 +91,9 @@ pl: name: Możesz zmieniać tylko wielkość liter, np. aby były bardziej widoczne user: chosen_languages: Jeżeli zaznaczone, tylko wpisy w wybranych językach będą wyświetlane na publicznych osiach czasu + webhook: + events: Wybierz zdarzenia do wysłania + url: Dokąd będą wysłane zdarzenia labels: account: fields: @@ -219,6 +222,9 @@ pl: name: Hashtag trendable: Pozwól na wyświetlanie tego hashtagu w „Na czasie” usable: Pozwól na umieszczanie tego hashtagu we wpisach + webhook: + events: Włączone zdarzenia + url: Endpoint URL 'no': Nie recommended: Polecane required: diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml index 42116174f..16972ca6a 100644 --- a/config/locales/simple_form.pt-PT.yml +++ b/config/locales/simple_form.pt-PT.yml @@ -91,6 +91,9 @@ pt-PT: name: Só pode alterar a capitalização das letras, por exemplo, para torná-las mais legíveis user: chosen_languages: Quando seleccionado, só publicações nas línguas escolhidas serão mostradas nas cronologias públicas + webhook: + events: Selecione os eventos a enviar + url: Para onde os eventos serão enviados labels: account: fields: @@ -219,6 +222,9 @@ pt-PT: name: Hashtag trendable: Permitir que esta hashtag apareça em destaque usable: Permitir que toots utilizem esta hashtag + webhook: + events: Eventos ativados + url: URL do Endpoint 'no': Não recommended: Recomendado required: diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml index 839be0a69..571411c09 100644 --- a/config/locales/simple_form.ru.yml +++ b/config/locales/simple_form.ru.yml @@ -91,6 +91,9 @@ ru: name: Вы можете изменить только регистр букв чтобы, например, сделать тег более читаемым user: chosen_languages: Если выбрано, то в публичных лентах будут показаны только посты на выбранных языках. + webhook: + events: Выберите события для отправки + url: Куда события будут отправляться labels: account: fields: @@ -219,6 +222,9 @@ ru: name: Хэштег trendable: Разрешить показ хэштега в трендах usable: Разрешить использовать этот хэштег в постах + webhook: + events: Включенные события + url: Endpoint URL 'no': Нет recommended: Рекомендуем required: diff --git a/config/locales/simple_form.sk.yml b/config/locales/simple_form.sk.yml index 5ae4b2e04..bd482f778 100644 --- a/config/locales/simple_form.sk.yml +++ b/config/locales/simple_form.sk.yml @@ -111,7 +111,7 @@ sk: max_uses: Najviac možno použiť new_password: Nové heslo note: O tebe - otp_attempt: Dvoj-faktorový overovací (2FA) kód + otp_attempt: Dvoj-faktorový overovací kód password: Heslo phrase: Kľúčové slovo, alebo fráza setting_advanced_layout: Zapni pokročilé užívateľské rozhranie @@ -139,6 +139,7 @@ sk: setting_use_blurhash: Ukáž farebné prechody pre skryté médiá setting_use_pending_items: Pomalý režim severity: Závažnosť + sign_in_token_attempt: Bezpečnostný kód type: Typ importu username: Prezývka username_or_email: Prezývka, alebo email diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml index f1870ab9a..04df4eb49 100644 --- a/config/locales/simple_form.sl.yml +++ b/config/locales/simple_form.sl.yml @@ -91,6 +91,9 @@ sl: name: Spremenite lahko le npr. velikost črk (velike/male), da je bolj berljivo user: chosen_languages: Ko je označeno, bodo v javnih časovnicah prikazane samo objave v izbranih jezikih + webhook: + events: Izberite dogodke za pošiljanje + url: Kam bodo poslani dogodki labels: account: fields: @@ -219,6 +222,9 @@ sl: name: Ključnik trendable: Dovoli, da se ta ključnik pojavi med trendi usable: Dovoli, da objave uporabljajo ta ključnik + webhook: + events: Omogočeni dogodki + url: URL končne točke 'no': Ne recommended: Priporočeno required: diff --git a/config/locales/simple_form.sq.yml b/config/locales/simple_form.sq.yml index 1136169b7..0e2fb4ab8 100644 --- a/config/locales/simple_form.sq.yml +++ b/config/locales/simple_form.sq.yml @@ -91,6 +91,9 @@ sq: name: Mund të ndryshoni shkronjat vetëm nga të mëdha në të vogla ose anasjelltas, për shembull, për t’i bërë më të lexueshme user: chosen_languages: Në iu vëntë shenjë, te rrjedha kohore publike do të shfaqen vetëm mesazhe në gjuhët e përzgjedhura + webhook: + events: Përzgjidhni akte për dërgim + url: Ku do të dërgohen aktet labels: account: fields: @@ -219,6 +222,9 @@ sq: name: Hashtag trendable: Lejoje këtë hashtag të shfaqet në prirje usable: Lejoji mesazhet të përdorin këtë hashtag + webhook: + events: Akte të aktivizuar + url: URL pikëmbarimi 'no': Jo recommended: E rekomanduar required: diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml index 21e3aab78..994213065 100644 --- a/config/locales/simple_form.tr.yml +++ b/config/locales/simple_form.tr.yml @@ -91,6 +91,9 @@ tr: name: Harflerin, örneğin daha okunabilir yapmak için, sadece büyük/küçük harf durumlarını değiştirebilirsiniz user: chosen_languages: İşaretlendiğinde, yalnızca seçilen dillerdeki tootlar genel zaman çizelgelerinde görüntülenir + webhook: + events: Gönderilecek etkinlikleri seçin + url: Olayların gönderileceği yer labels: account: fields: @@ -219,6 +222,9 @@ tr: name: Etiket trendable: Bu etiketin gündem altında görünmesine izin ver usable: Tootların bu etiketi kullanmasına izin ver + webhook: + events: Etkin olaylar + url: Uç nokta URL’si 'no': Hayır recommended: Önerilen required: diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index 4d023b77d..9b8ecb573 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -91,6 +91,9 @@ uk: name: Тут ви можете лише змінювати регістр літер, щоб підвищити читабельність user: chosen_languages: У глобальних стрічках будуть відображатися дмухи тільки обраними мовами + webhook: + events: Оберіть події для надсилання + url: Куди надсилатимуться події labels: account: fields: @@ -219,6 +222,9 @@ uk: name: Хештеґ trendable: Дозволити появу цього хештеґа у списку популярних хештеґів usable: Дозволити дмухам використовувати цей хештеґ + webhook: + events: Увімкнені події + url: URL кінцевої точки 'no': Ні recommended: Рекомендовано required: diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml index 59c7a634b..729be6634 100644 --- a/config/locales/simple_form.vi.yml +++ b/config/locales/simple_form.vi.yml @@ -91,6 +91,9 @@ vi: name: Bạn có thể thay đổi cách viết hoa các chữ cái để giúp nó dễ đọc hơn user: chosen_languages: Chỉ hiển thị những tút viết bằng các ngôn ngữ được chọn sau + webhook: + events: Chọn sự kiện để gửi + url: Nơi những sự kiện được gửi đến labels: account: fields: @@ -219,6 +222,9 @@ vi: name: Hashtag trendable: Cho phép xuất hiện trong xu hướng usable: Cho phép dùng trong tút + webhook: + events: Những sự kiện đã bật + url: URL endpoint 'no': Tắt recommended: Đề xuất required: diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index 86103ec96..4cc6af416 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -91,6 +91,9 @@ zh-TW: name: 您只能變更大小寫,例如,以使其更易讀。 user: chosen_languages: 當核取時,只有選取語言的嘟文會在公開時間軸中顯示 + webhook: + events: 請選擇要傳送的事件 + url: 事件會被傳送至何處 labels: account: fields: @@ -219,6 +222,9 @@ zh-TW: name: 主題標籤 trendable: 允許此主題標籤在趨勢下顯示 usable: 允許嘟文使用此主題標籤 + webhook: + events: 已啟用的事件 + url: 端點 URL 'no': 否 recommended: 建議 required: diff --git a/config/locales/sk.yml b/config/locales/sk.yml index d59e81cc8..1f64c78c7 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -38,7 +38,7 @@ sk: one: príspevok other: príspevky status_count_before: Ktorí napísali - tagline: Nasleduj kamarátov, a objavuj nových + tagline: Decentralizovaná sociálna sieť terms: Podmienky užitia unavailable_content: Nedostupný obsah unavailable_content_description: @@ -634,7 +634,6 @@ sk: applications: created: Aplikácia bola vytvorená úspešne destroyed: Aplikáciu sa podarilo odstrániť - invalid_url: Zadaná URL adresa je nesprávna regenerate_token: Znovu vygeneruj prístupový token token_regenerated: Prístupový token bol úspešne vygenerovaný znova warning: Na tieto údaje dávaj ohromný pozor. Nikdy ich s nikým nezďieľaj! diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 8f54e9f74..ff3492d60 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -40,7 +40,7 @@ sl: other: objav two: stanja status_count_before: Ki so avtorji - tagline: Sledite prijateljem in odkrijte nove + tagline: Decentralizirano družbeno omrežje terms: Pogoji storitve unavailable_content: Moderirani strežniki unavailable_content_description: @@ -886,6 +886,23 @@ sl: edit_preset: Uredi prednastavitev opozoril empty: Zaenkrat še niste določili nobenih opozorilnih prednastavitev. title: Upravljaj prednastavitev opozoril + webhooks: + add_new: Dodaj končno točko + delete: Izbriši + description_html: "Spletna zanka omogoča, da Mastodon potiska obvestila v resničnem času o izbranih dogodkih vašemu programu, tako da ta lahko samodejno proži odzive." + disable: Onemogoči + disabled: Onemogočeno + edit: Uredi končno točko + empty: Zaenkrat še nimate prilagojenih končnih točk spletnih zank. + enable: Omogoči + enabled: Dejaven + events: Dogodki + new: Nova spletna zanka + rotate_secret: Zasukaj skrivnost + secret: Skrivnost podpisovanja + status: Stanje + title: Spletne zanke + webhook: Spletna zanka admin_mailer: new_appeal: actions: @@ -950,7 +967,6 @@ sl: applications: created: Aplikacija je bila uspešno ustvarjena destroyed: Aplikacija je bila uspešno izbrisana - invalid_url: Navedeni URL je neveljaven regenerate_token: Obnovite dostopni žeton token_regenerated: Dostopni žeton je bil uspešno regeneriran warning: Bodite zelo previdni s temi podatki. Nikoli jih ne delite z nikomer! diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 8974b9c84..0e4d9871e 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -38,7 +38,7 @@ sq: one: mesazh other: mesazhe status_count_before: Që kanë krijuar - tagline: Ndiqni shokë dhe zbuloni të rinj + tagline: Rrjet shoqëror i decentralizuar terms: Kushte shërbimi unavailable_content: Shërbyes të moderuar unavailable_content_description: @@ -200,7 +200,7 @@ sq: only_password: Vetëm fjalëkalim password_and_2fa: Fjalëkalim dhe 2FA sensitive: Rezervat - sensitized: iu vu shenjë si rezervat + sensitized: Iu vu shenjë si rezervat shared_inbox_url: URL kutie të përbashkët mesazhesh show: created_reports: Ka bërë raportime @@ -428,6 +428,7 @@ sq: destroyed_msg: Bllokimi i përkatësisë u hoq domain: Përkatësi edit: Përpunoni bllokim përkatësie + existing_domain_block: Keni vendosur tashmë kufizime më të rrepta mbi %{name}. existing_domain_block_html: Keni vendosur tashmë kufizime më të rrepta mbi %{name}, lypset ta zhbllokoni së pari. new: create: Krijoni bllokim @@ -516,6 +517,7 @@ sq: delivery: all: Krejt clear: Spastro gabime dërgimi + failing: Dështim restart: Rinis dërgimin stop: Ndale dërgimin unavailable: Jo i passhëm @@ -839,12 +841,32 @@ sq: one: Përdorur nga një person gjatë javës së kaluar other: Përdorur nga %{count} vetë gjatë javës së kaluar title: Në modë + trending: Në modë warning_presets: add_new: Shtoni të ri delete: Fshije edit_preset: Përpunoni sinjalizim të paracaktuar empty: S’keni përcaktuar ende sinjalizime të gatshme. title: Administroni sinjalizime të paracaktuara + webhooks: + add_new: Shtoni pikëmbarim + delete: Fshije + description_html: Një webhook i bën të mundur Mastodon-it t’i dërgojë aplikacioni tuaj njoftime aty për aty rreth aktesh që keni zgjedhur, që kështu aplikacioni juaj të mund të prodhojë automatikisht reagime. + disable: Çaktivizoje + disabled: Të çaktivizuar + edit: Përpunoni pikëmbarim + empty: S’keni ende ndonjë pikëmbarim webhook të formësuar. + enable: Aktivizoje + enabled: Aktiv + enabled_events: + one: 1 akt i aktivizuar + other: "%{count}s akte të aktivizuar" + events: Akte + new: "Webhook i ri" + rotate_secret: Ciklo të fshehtën + secret: E fshehtë nënshkrimesh + status: Gjendje + title: Webhook-ë admin_mailer: new_appeal: actions: @@ -906,7 +928,6 @@ sq: applications: created: Aplikimi u krijua me sukses destroyed: Aplikimi u fshi me sukses - invalid_url: URL-ja e dhënë është e pavlefshme regenerate_token: Riprodho token hyrjesh token_regenerated: Token-i i hyrjeve u riprodhua me sukses warning: Bëni shumë kujdes me ato të dhëna. Mos ia jepni kurrë njeriu! @@ -1510,9 +1531,93 @@ sq: pinned: Mesazh i fiksuar reblogged: të përforcuara sensitive_content: Lëndë rezervat + strikes: + errors: + too_late: Është shumë vonë për apelim të këtij paralajmërimi tags: does_not_match_previous_name: s’përputhet me emrin e mëparshëm terms: + body_html: | +

Rregulla Privatësie

+

Ç’informacion mbledhim?

+ +
    +
  • Hollësi elementare llogarish: Nëse regjistroheni në këtë shërbyes, mund t’ju kërkohet të jepni një emër përdoruesi, një adresë email dhe një fjalëkalim. Mund të jepni edhe hollësi shtesë profili, bie fjala, një emër për në ekran dhe jetëshkrim, si dhe të ngarkoni një foto profili dhe një figurë kryesh. Emri i përdoruesit, emri në ekran, jetëshkrimi, fotoja e profilit dhe figura e kryes janë përherë të dukshme publikisht.
  • +
  • Postime, ndjekje dhe të tjera hollësi publike: Lista e personave që ndiqni tregohet publikisht, po kjo vlen edhe për ndjekësit tuaj. Kur parashtroni një mesazh, depozitohen gjithashtu data dhe koha, si dhe aplikacioni prej nga parashtruar mesazhin. Mesazhet mund të përmbajnë bashkëngjitje media, bie fjala, foto dhe video. Postimet publike dhe jo të tilla janë të passhme publikisht. Kur te profili juaj përfshini një postim, edhe ky është informacion i passhëm publikisht. Postimet tuaja u dërgohen ndjekësve tuaj, në disa raste kjo do të thotë se dërgohen te shërbyes të ndryshëm dhe në ta depozitohen kopje të tyre. Kur fshini postime, kjo ka gjasa t’u dërgohet ndjekësve tuaj. Veprimi i riblogimit, ose vënia shenjë si i parapëlqyer një postimi tjetër është përherë gjë publike.
  • +
  • Postime të drejtpërdrejta dhe vetëm për ndjekës: Krejt postimet depozitohen dhe përpunohen te shërbyesi. Postimet vetëm për ndjekës u dërgohen ndjekësve tuaj dhe përdoruesve që përmenden në ta, kurse postimet e drejtpërdrejta u dërgohen vetëm përdoruesve të përmendur në to. Në disa raste kjo do të thotë se dërgohen në shërbyes të ndryshëm dhe kopje të tyre depozitohen atje. Përpiqemi në mirëbesim të kufizojmë hyrjen në këto postime të vetëm personave të autorizuar, por shërbyes të tjerë mund të mos bëjnë kështu. Ndaj është e rëndësishme të shqyrtohen shërbyesit të cilëve u përkasin ndjekësit tuaj. Që nga rregullimet mund të aktivizoni/çaktivizoni një mundësi për miratim dhe hedhje poshtë dorazi të ndjekësve të rinj. Ju lutemi, kini parasysh se operatorët e shërbyesve dhe cilido shërbyes marrës mund t’i shohë këto mesazhe, si dhe se marrësit mund të bëjnë foto ekrani, kopjojnë, ose rindajnë me të tjerët ato mesazhe. Mos ndani me të tjerë gjëra me spec përmes Mastodon-it.
  • +
  • IP-ra dhe të tjera tejtëdhëna: Kur bëni hyrjen në llogari, regjistrojmë adresën IP prej nga hyni, si dhe emrin e aplikacionit që përdorni për shfletim. Krejt sesionet me hyrje mund t’i shqyrtoni dhe shfuqizoni që nga rregullimet. Adresa e fundit IP e përdorur depozitohet për deri 12 muaj. Mund të mbajmë gjithashtu regjistra shërbyesi që përfshijnë adresën IP të çdo kërkese ndaj shërbyesit tonë.
  • +
+ +
+ +

Për se e përdorim informacionin tuaj?

+ +

Çfarëdo hollësi që mbledhim prej jush mund të përdoret në rrugët vijuese:

+ +
    +
  • Për të dhënë funksionet bazë të Mastodon-it. Me lëndën e personave të tjerë mund të ndërveproni, si dhe të postoni lëndën tuaj, vetëm kur jeni i futur në llogarinë tuaj. Për shembull, mund të ndiqni persona të tjerë për të parë postimet e tyre në rrjedhën tuaj kohore të personalizuar.
  • +
  • Për të ndihmuar në moderimin e bashkësisë, për shembull, krahasimi i adresës tuaj IP me të tjera të ditura, për të pikasur shmangie dëbimesh, apo cenime të tjera.
  • +
  • Adresa email që jepni mund të përdoret për t’ju dërguar informacion, njoftime mbi persona të tjerë që ndërveprojnë me lëndën tuaj, ose që ju dërgojnë mesazhe, si dhe për t’iu përgjigjur kërkesave dhe/ose çështjeve apo pyetjeve të tjera.
  • +
+ +
+ +

Si e mbrojmë informacionin tuaj?

+ +

Sendërtojmë një larmi masash sigurie për të ruajtur parrezikshmërinë e informacionit tuaj personal, kur jepni, parashtroni ose përdorni informacionin tuaj personal. Mes të tjerash, sesioni i shfletuesit tuaj, si dhe trafiku mes aplikacioneve tuaja dhe API-t sigurohen me SSL dhe fjalëkalimi juaj fshehtëzohet me një algoritëm të fuqishëm njëkahësh. Për të siguruar më tej hyrjen në llogarinë tuaj, mund të aktivizoni mirëfilltësim dufaktorësh.

+ +
+ +

Cili është rregulli ynë për mbajtje të dhënash?

+ +

Do të përpiqemi në mirëbesim:

+ +
    +
  • Të mbajmë regjistra shërbyesi që përmbajnë adresën IP të krejt kërkesave të bëra këtij shërbyesi, ashtu siç mbahen këta regjistra, për jo më shumë se 90 ditë.
  • +
  • Të mbajmë për jo më shumë se 12 muaj adresat IP përshoqëruar përdoruesve të regjistruar.
  • +
+ +

Mund të kërkoni dhe shkarkoni një arkiv të lëndës tuaj, përfshi postimet tuaja, bashkëngjitje media, foto profili dhe figure kryesh.

+ +

Mund të fshini kurdo në mënyrë të pakthyeshme llogarinë tuaj.

+ +
+ +

A përdorim cookies?

+ +

Po. Cookie-t janë kartela të vockla që një sajt ose furnizuesi i shërbimit përkatës shpërngul në diskun e kompjuterit tuaj përmes shfletuesit tuaj (nëse e lejoni). Këto cookies i bëjnë të mundur sajtit të njohë shfletuesin tuaj dhe, nëse keni regjistruar një llogari, t’ia përshoqërojë atë llogarisë që keni regjistruar.

+ +

Cookie-t i përdorim për të kuptuar dhe ruajtur parapëlqimet tuaja për vizita të ardhshme.

+ +
+ +

A u japim palëve të jashtme ndonjë informacion?

+ +

Nuk u shesim, shkëmbejmë, apo shpërngulim informacion tuajin personalisht të identifikueshëm palëve të jashtme. Këtu nuk përfshin palë të treta të besuara që na ndihmojnë në funksionimin e sajtit tonë, në mbajtjen në këmbë të biznesit tonë, ose për t’ju shërbyer juve, për sa kohë që këto palë pajtohen me mbajtjen rezervat të këtij informacioni. Mundet edhe të japim informacion tuajin, kur besojmë se dhënia është e duhur për të qenë në pajtim me ligjet, për të zbatuar rregullat tonë mbi sajtin, ose për të mbrojtur të drejtat, pronën apo sigurinë tonë apo të të tjerëve.

+ +

Lënda juaj publike mund të shkarkohet nga shërbyes të tjerë në rrjet. Postim tuaja publike, si dhe ato vetëm për ndjekësit, u dërgohen shërbyesve ku gjenden ndjekësit tuaj, ndërsa mesazhet e drejtpërdrejtë u dërgohen shërbyesve të marrësve, në rastin kur këta ndjekës apo marrës gjenden në një tjetër shërbyes nga ky.

+ +

Kur autorizoni një aplikacion të përdorë llogarinë tuaj, në varësi të fushëveprimit të lejeve që miratoni, ky mund të hyjë në hollësitë e profilit tuaj publik, listën e atyre që ndiqni, ndjekësit tuaj, listat tuaja, krejt postimet tuaja dhe të parapëlqyerit tuaj. Aplikaconet s’mund të njohin kurrë adresën tuaj email dhe fjalëkalimin tuaj.

+ +
+ +

Përdorim sajti nga fëmijë

+ +

Nëse ky shërbyes gjendet në BE ose ZEE: Sajti, produktet dhe shërbimet tona u adresohen të tëra personave që janë të paktën 16 vjeç. Nëse jeni nën moshën 16 vjeç, sipas domosdoshmërive të GDPR-së (Rregullorja e Përgjithshme e Mbrojtjes së të Dhënave) mos e përdorni këtë sajt.

+ +

Nëse ky shërbyes gjendet në ShBA: Sajti, produktet dhe shërbimet tona u adresohen të tëra personave që janë të paktën 13 vjeç. Nëse jeni nën moshën 13 vjeç, sipas domosdoshmërive të COPPA-s (Ligji i Mbrojtjes së Privatësisë Internetore të Fëmijëve) mos e përdorni këtë sajt.

+ +

kërkesat ligjore mund të jenë të tjera, nëse ky shërbyes gjendet nën një juridiksion tjetër.

+ +
+ +

Ndryshime te Rregullat tona të Privatësisë

+ +

Nëse vendosim të ndryshojmë rregullat tona të privatësisë, ato ndryshime do t’i postojmë te kjo faqe.

+ +

Ky dokument licencohet sipas CC-BY-SA. Qe përditësuar së fundi më 26 maj 2022.

+ +

Përshtatur fillimisht prej rregulave të privatësisë së Discourse-it.

title: Kushte Shërbimi dhe Rregulla Privatësie te %{instance} themes: contrast: Mastodon (Me shumë kontrast) diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index 321fc6398..cfea20c55 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -220,7 +220,6 @@ sr-Latn: applications: created: Aplikacija uspešno napravljena destroyed: Aplikacija uspešno obrisana - invalid_url: Data adresa nije ispravna regenerate_token: Rekreiraj pristupni token token_regenerated: Pristupni token uspešno rekreiran warning: Oprezno sa ovim podacima. Nikad je ne delite ni sa kim! diff --git a/config/locales/sr.yml b/config/locales/sr.yml index 94d8c43cf..445f8f326 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -368,7 +368,6 @@ sr: applications: created: Апликација успешно направљена destroyed: Апликација успешно обрисана - invalid_url: Дата адреса није исправна regenerate_token: Рекреирај приступни токен token_regenerated: Приступни токен успешно рекреиран warning: Опрезно са овим подацима. Никад је не делите ни са ким! diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 715358d5e..a84ae6cfe 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -36,7 +36,6 @@ sv: one: status other: statusar status_count_before: Som skapat - tagline: Följ vänner och upptäck nya terms: Användarvillkor unavailable_content: Otillgängligt innehåll unavailable_content_description: @@ -668,7 +667,6 @@ sv: applications: created: Ansökan är framgångsrikt skapad destroyed: Ansökan är framgångsrikt borttagen - invalid_url: Den angivna webbadressen är ogiltig regenerate_token: Regenerera access token token_regenerated: Access token lyckades regenereras warning: Var mycket försiktig med denna data. Dela aldrig den med någon! diff --git a/config/locales/ta.yml b/config/locales/ta.yml index e3b61a487..3016250cc 100644 --- a/config/locales/ta.yml +++ b/config/locales/ta.yml @@ -28,7 +28,6 @@ ta: one: பதிவு other: பதிவுகள் status_count_before: எழுதிய - tagline: நண்பர்களைப் பின்தொடரவும் மற்றும் புதியவர்களைக் கண்டுபிடிக்கவும் terms: சேவை விதிமுறைகள் unavailable_content: விசயங்கள் இல்லை unavailable_content_description: diff --git a/config/locales/th.yml b/config/locales/th.yml index 9fd23f5b3..c5f70753d 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -34,7 +34,6 @@ th: status_count_after: other: โพสต์ status_count_before: ผู้เผยแพร่ - tagline: ติดตามเพื่อน ๆ และค้นพบเพื่อนใหม่ ๆ terms: เงื่อนไขการให้บริการ unavailable_content: เซิร์ฟเวอร์ที่มีการควบคุม unavailable_content_description: @@ -842,7 +841,6 @@ th: applications: created: สร้างแอปพลิเคชันสำเร็จ destroyed: ลบแอปพลิเคชันสำเร็จ - invalid_url: URL ที่ระบุไม่ถูกต้อง regenerate_token: สร้างโทเคนการเข้าถึงใหม่ token_regenerated: สร้างโทเคนการเข้าถึงใหม่สำเร็จ warning: ระวังเป็นอย่างสูงกับข้อมูลนี้ อย่าแบ่งปันข้อมูลกับใครก็ตาม! diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 23fe6508b..9159acba3 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -38,7 +38,7 @@ tr: one: durum yazıldı other: durum yazıldı status_count_before: Şu ana kadar - tagline: Arkadaşlarını takip et ve yenilerini keşfet + tagline: Merkezi olmayan sosyal ağ terms: Kullanım şartları unavailable_content: Denetlenen sunucular unavailable_content_description: @@ -428,6 +428,7 @@ tr: destroyed_msg: Domain bloğu silindi domain: Alan adı edit: Etki alanı bloğunu düzenle + existing_domain_block: Zaten %{name} için daha katı sınırlamalar dayatmıştınız. existing_domain_block_html: '%{name}''e zaten daha katı sınırlar uyguladınız, önce engellemesini kaldırmanız gerekiyor.' new: create: Yeni blok oluştur @@ -851,6 +852,23 @@ tr: edit_preset: Uyarı ön-ayarını düzenle empty: Henüz önceden ayarlanmış bir uyarı tanımlanmadı. title: Uyarı ön-ayarlarını yönet + webhooks: + add_new: Uç nokta ekle + delete: Sil + description_html: Bir web kancası Mastodon'un, uygulamanızda seçili olaylar hakkında gerçek zamanlı bildirimler göndermesini sağlar, böylece uygulamanız otomatik olarak tepkileri tetikleyebilir. + disable: Devre dışı bırak + disabled: Devre dışı + edit: Uç nokta düzenle + empty: Henüz yapılandırılmış bir web kancanız yok. + enable: Etkinleştir + enabled: Etkin + events: Olaylar + new: Yeni web kancası + rotate_secret: Gizi döndür + secret: Gizi imzalama + status: Durum + title: Web kancaları + webhook: Web kancası admin_mailer: new_appeal: actions: @@ -915,7 +933,6 @@ tr: applications: created: Uygulama başarıyla oluşturuldu destroyed: Uygulama başarıyla silindi - invalid_url: Verilen URL geçerli değil regenerate_token: Erişim belirtecini yeniden oluştur token_regenerated: Erişim belirteci başarıyla oluşturuldu warning: Bu verilere çok dikkat edin. Asla kimseyle paylaşmayın! diff --git a/config/locales/uk.yml b/config/locales/uk.yml index aa210c980..53a4b3567 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -38,7 +38,7 @@ uk: one: статус other: статуси status_count_before: Опубліковано - tagline: Слідкуйте за друзями та знаходьте нових + tagline: Децентралізована соціальна мережа terms: Правила використання unavailable_content: Недоступний вміст unavailable_content_description: @@ -864,6 +864,28 @@ uk: edit_preset: Редагувати шаблон попередження empty: Ви ще не визначили жодних попереджень. title: Управління шаблонами попереджень + webhooks: + add_new: Додати кінцеву точку + delete: Видалити + description_html: "Вебхук дає змогу Mastodon надсилати повідомлення про обрані події до вашого застосунку в реальному часі, щоб застосунок міг автоматично реагувати на реакції." + disable: Вимкнути + disabled: Вимкнено + edit: Редагувати кінцеву точку + empty: Ще не налаштовано жодних кінцевих точок вебхука. + enable: Увімкнути + enabled: Активні + enabled_events: + few: "%{count} увімкнені події" + many: "%{count} увімкнених подій" + one: 1 увімкнена подія + other: "%{count} увімкнені події" + events: Події + new: Новий вебхук + rotate_secret: Обернути секрет + secret: Секрет підписування + status: Стан + title: Вебхуки + webhook: Вебхук admin_mailer: new_appeal: actions: @@ -923,7 +945,6 @@ uk: applications: created: Застосунок успішно створений destroyed: Застосунок успішно видалений - invalid_url: Введена URL неправильна regenerate_token: Перегенерувати токен доступу token_regenerated: Токен доступу успішне перегенеровано warning: Будьте дуже обережні з цими даними. Ніколи не діліться ними ні з ким! diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 7f0022191..72d06ab55 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -35,7 +35,7 @@ vi: status_count_after: other: tút status_count_before: Nơi lưu giữ - tagline: Theo dõi bạn bè và khám phá thế giới + tagline: Mạng xã hội liên hợp terms: Điều khoản dịch vụ unavailable_content: Giới hạn chung unavailable_content_description: @@ -417,6 +417,7 @@ vi: destroyed_msg: Đã thôi chặn máy chủ domain: Máy chủ edit: Chỉnh sửa máy chủ bị chặn + existing_domain_block: Bạn đã hạn chế %{name} trước đó. existing_domain_block_html: Bạn đã áp đặt các giới hạn chặt chẽ hơn cho %{name}, trước tiên bạn cần bỏ chặn nó. new: create: Tạo chặn @@ -832,6 +833,25 @@ vi: edit_preset: Sửa mẫu có sẵn empty: Bạn chưa thêm mẫu nhắc nhở nào cả. title: Quản lý mẫu nhắc nhở + webhooks: + add_new: Thêm endpoint + delete: Xóa bỏ + description_html: "Webhook cho phép Mastodon gửi nhận thông báo đẩy thời gian thật về những sự kiện cho ứng dụng thứ ba của bạn, cho ứng dụng của bạn có thể tự động kích hoạt reaction." + disable: Tắt + disabled: Đã tắt + edit: Sửa endpoint + empty: Bạn chưa thiết lập webhook endpoint nào. + enable: Bật + enabled: Hoạt động + enabled_events: + other: "%{count} sự kiện đã bật" + events: Sự kiện + new: Webhook mới + rotate_secret: Xoay bí mật + secret: Token đăng nhập + status: Trạng thái + title: Webhook + webhook: Webhook admin_mailer: new_appeal: actions: @@ -896,7 +916,6 @@ vi: applications: created: Đơn đăng ký được tạo thành công destroyed: Đã xóa đơn đăng ký - invalid_url: Cung cấp URL không hợp lệ regenerate_token: Tạo lại mã truy cập token_regenerated: Mã truy cập được tạo lại thành công warning: Hãy rất cẩn thận với dữ liệu này. Không bao giờ chia sẻ nó với bất cứ ai! diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 783733a0a..475d03a2a 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -19,7 +19,7 @@ zh-CN: continue_to_web: 继续前往网页应用 discover_users: 发现用户 documentation: 文档 - federation_hint_html: 在 %{instance} 上拥有账号后,你可以关注任何兼容Mastodon的服务器上的人。 + federation_hint_html: 在 %{instance} 上拥有账号后,你可以关注任何兼容 Mastodon 服务器上的人。 get_apps: 尝试移动应用 hosted_on: 运行在 %{domain} 上的 Mastodon 站点 instance_actor_flash: '这个账号是个虚拟账号,不代表任何用户,只用来代表服务器本身。它用于和其它服务器互通,所以不应该被封禁,除非你想封禁整个实例。但是想封禁整个实例的时候,你应该用域名封禁。 @@ -37,7 +37,7 @@ zh-CN: status_count_after: other: 条嘟文 status_count_before: 他们共嘟出了 - tagline: 关注并发现新朋友 + tagline: 分布式社交网络 terms: 使用条款 unavailable_content: 被限制的服务器 unavailable_content_description: @@ -419,6 +419,7 @@ zh-CN: destroyed_msg: 域名屏蔽已撤销 domain: 域名 edit: 编辑域名屏蔽 + existing_domain_block: 您已经对 %{name} 设置了更严格的限制。 existing_domain_block_html: 你已经对 %{name} 施加了更严格的限制,你需要先 解封。 new: create: 添加屏蔽 @@ -434,7 +435,7 @@ zh-CN: private_comment: 私密评论 private_comment_hint: 给这一域名限制添加备注,供监察员内部使用 public_comment: 公开评论 - public_comment_hint: 给这一域名限制添加公开的评论,如果你推广你的域名限制列表的话,这些评论就会显示出来。 + public_comment_hint: 给这一域名限制添加公开的评论,在公告域名限制列表开启时这些评论将会公开可见。 reject_media: 拒绝接收媒体文件 reject_media_hint: 删除本站已缓存的媒体文件,并且不再接收来自该域名的任何媒体文件。此选项不影响封禁 reject_reports: 拒绝接收举报 @@ -834,6 +835,10 @@ zh-CN: edit_preset: 编辑预置警告 empty: 你尚未定义任何警告预设。 title: 管理预设警告 + webhooks: + delete: 删除 + disable: 禁用 + enable: 启用 admin_mailer: new_appeal: actions: @@ -898,7 +903,6 @@ zh-CN: applications: created: 应用创建成功 destroyed: 应用删除成功 - invalid_url: URL 无效 regenerate_token: 重置访问令牌 token_regenerated: 访问令牌重置成功 warning: 一定小心,千万不要把它分享给任何人! diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index bbf5b4dad..5b6e0b83a 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -34,7 +34,6 @@ zh-HK: status_count_after: other: 篇文章 status_count_before: 共發佈了 - tagline: 關注朋友並探索新朋友 terms: 使用條款 unavailable_content: 受限制的伺服器 unavailable_content_description: @@ -679,7 +678,6 @@ zh-HK: applications: created: 已建立應用程式 destroyed: 已刪除應用程式 - invalid_url: 所提供的網址不正確 regenerate_token: 重設 token token_regenerated: 已重設 token warning: 警告,不要把它分享給任何人! diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 032a5c951..7d2bb80cb 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -35,7 +35,7 @@ zh-TW: status_count_after: other: 條嘟文 status_count_before: 他們共嘟出了 - tagline: 關注朋友並探索新朋友 + tagline: 去中心化社群網路 terms: 使用條款 unavailable_content: 無法取得的內容 unavailable_content_description: @@ -835,6 +835,25 @@ zh-TW: edit_preset: 編輯預設警告 empty: 您未曾定義任何預設警告 title: 管理預設警告 + webhooks: + add_new: 新增端點 + delete: 刪除 + description_html: "Webhook 讓 Mastodon 可以將關於選定的事件的即時通知推送到您自己的應用程式,如此您的應用程式就可以自動觸發反應。" + disable: 停用 + disabled: 已停用 + edit: 編輯端點 + empty: 您沒有任何設定好的 webhook 端點。 + enable: 啟用 + enabled: 生效 + enabled_events: + other: "%{count} 個已啟用的端點" + events: 事件 + new: 新增 Webhook + rotate_secret: 更換密鑰 + secret: 簽署密鑰 + status: 狀態 + title: Webhooks + webhook: Webhook admin_mailer: new_appeal: actions: @@ -899,7 +918,6 @@ zh-TW: applications: created: 已建立應用 destroyed: 已刪除應用 - invalid_url: 網址不正確 regenerate_token: 重設 token token_regenerated: 已重設 token warning: 警告,不要把它分享給任何人! From aab1a1c409fadfc0ae83c2ede600796659b01c97 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Jun 2022 20:33:21 +0900 Subject: [PATCH 156/652] Bump wicg-inert from 3.1.1 to 3.1.2 (#18655) Bumps [wicg-inert](https://github.com/WICG/inert) from 3.1.1 to 3.1.2. - [Release notes](https://github.com/WICG/inert/releases) - [Commits](https://github.com/WICG/inert/compare/v3.1.1...v3.1.2) --- updated-dependencies: - dependency-name: wicg-inert dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 625d920f9..5382c0c9f 100644 --- a/package.json +++ b/package.json @@ -133,7 +133,7 @@ "webpack-bundle-analyzer": "^4.5.0", "webpack-cli": "^3.3.12", "webpack-merge": "^5.8.0", - "wicg-inert": "^3.1.1", + "wicg-inert": "^3.1.2", "ws": "^8.7.0" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index 85547ee8f..2e8e1df35 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11681,10 +11681,10 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -wicg-inert@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/wicg-inert/-/wicg-inert-3.1.1.tgz#b033fd4fbfb9e3fd709e5d84becbdf2e06e5c229" - integrity sha512-PhBaNh8ur9Xm4Ggy4umelwNIP6pPP1bv3EaWaKqfb/QNme2rdLjm7wIInvV4WhxVHhzA4Spgw9qNSqWtB/ca2A== +wicg-inert@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/wicg-inert/-/wicg-inert-3.1.2.tgz#df10cf756b773a96fce107c3ddcd43be5d1e3944" + integrity sha512-Ba9tGNYxXwaqKEi9sJJvPMKuo063umUPsHN0JJsjrs2j8KDSzkWLMZGZ+MH1Jf1Fq4OWZ5HsESJID6nRza2ang== wide-align@^1.1.5: version "1.1.5" From 73c903e63d99ba5dbc6a09db22d15da1f673773a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Jun 2022 20:35:44 +0900 Subject: [PATCH 157/652] Bump sidekiq-scheduler from 4.0.0 to 4.0.1 (#18654) Bumps [sidekiq-scheduler](https://github.com/moove-it/sidekiq-scheduler) from 4.0.0 to 4.0.1. - [Release notes](https://github.com/moove-it/sidekiq-scheduler/releases) - [Changelog](https://github.com/moove-it/sidekiq-scheduler/blob/master/CHANGELOG.md) - [Commits](https://github.com/moove-it/sidekiq-scheduler/compare/v4.0.0...v4.0.1) --- updated-dependencies: - dependency-name: sidekiq-scheduler dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 9790df2c9..64d2a6d7f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -606,7 +606,7 @@ GEM redis (>= 4.2.0) sidekiq-bulk (0.2.0) sidekiq - sidekiq-scheduler (4.0.0) + sidekiq-scheduler (4.0.1) redis (>= 4.2.0) rufus-scheduler (~> 3.2) sidekiq (>= 4) From 6e226a873688287429fbbf865a5ed1df2fef438a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Jun 2022 20:42:17 +0900 Subject: [PATCH 158/652] Bump @babel/plugin-transform-runtime from 7.18.2 to 7.18.5 (#18647) Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.18.2 to 7.18.5. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.5/packages/babel-plugin-transform-runtime) --- updated-dependencies: - dependency-name: "@babel/plugin-transform-runtime" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 5382c0c9f..3fe34a6ca 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "@babel/core": "^7.18.5", "@babel/plugin-proposal-decorators": "^7.18.2", "@babel/plugin-transform-react-inline-elements": "^7.16.7", - "@babel/plugin-transform-runtime": "^7.18.2", + "@babel/plugin-transform-runtime": "^7.18.5", "@babel/preset-env": "^7.18.2", "@babel/preset-react": "^7.17.12", "@babel/runtime": "^7.18.3", diff --git a/yarn.lock b/yarn.lock index 2e8e1df35..89deee99b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -897,10 +897,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-runtime@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.2.tgz#04637de1e45ae8847ff14b9beead09c33d34374d" - integrity sha512-mr1ufuRMfS52ttq+1G1PD8OJNqgcTFjq3hwn8SZ5n1x1pBhi0E36rYMdTK0TsKtApJ4lDEdfXJwtGobQMHSMPg== +"@babel/plugin-transform-runtime@^7.18.5": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.5.tgz#f4d3188ba6a8815793993c71c2c225d0ee1d7743" + integrity sha512-Q17hHxXr2fplrE+5BSC1j1Fo5cOA8YeP8XW3/1paI8MzF/faZGh0MaH1KC4jLAvqLPamQWHB5/B7KqSLY1kuHA== dependencies: "@babel/helper-module-imports" "^7.16.7" "@babel/helper-plugin-utils" "^7.17.12" From 7aa2a059f8a7e21b66cb2d5bb3c856eb6be38de2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Jun 2022 20:43:24 +0900 Subject: [PATCH 159/652] Bump net-ldap from 0.17.0 to 0.17.1 (#18648) Bumps [net-ldap](https://github.com/ruby-ldap/ruby-net-ldap) from 0.17.0 to 0.17.1. - [Release notes](https://github.com/ruby-ldap/ruby-net-ldap/releases) - [Changelog](https://github.com/ruby-ldap/ruby-net-ldap/blob/master/History.rdoc) - [Commits](https://github.com/ruby-ldap/ruby-net-ldap/compare/v0.17.0...v0.17.1) --- updated-dependencies: - dependency-name: net-ldap dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 64d2a6d7f..a2c2360ca 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -399,7 +399,7 @@ GEM msgpack (1.5.2) multi_json (1.15.0) multipart-post (2.1.1) - net-ldap (0.17.0) + net-ldap (0.17.1) net-scp (3.0.0) net-ssh (>= 2.6.5, < 7.0.0) net-ssh (6.1.0) From 757fe82fd5a5be6fed35aab3cbd41fa9497ee79c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Jun 2022 20:46:48 +0900 Subject: [PATCH 160/652] Bump reselect from 4.1.5 to 4.1.6 (#18646) Bumps [reselect](https://github.com/reduxjs/reselect) from 4.1.5 to 4.1.6. - [Release notes](https://github.com/reduxjs/reselect/releases) - [Changelog](https://github.com/reduxjs/reselect/blob/master/CHANGELOG.md) - [Commits](https://github.com/reduxjs/reselect/compare/v4.1.5...v4.1.6) --- updated-dependencies: - dependency-name: reselect dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 3fe34a6ca..0322c5e18 100644 --- a/package.json +++ b/package.json @@ -115,7 +115,7 @@ "regenerator-runtime": "^0.13.9", "rellax": "^1.12.1", "requestidlecallback": "^0.3.0", - "reselect": "^4.1.5", + "reselect": "^4.1.6", "rimraf": "^3.0.2", "sass": "^1.52.3", "sass-loader": "^10.2.0", diff --git a/yarn.lock b/yarn.lock index 89deee99b..14dc69104 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9621,10 +9621,10 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= -reselect@^4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.5.tgz#852c361247198da6756d07d9296c2b51eddb79f6" - integrity sha512-uVdlz8J7OO+ASpBYoz1Zypgx0KasCY20H+N8JD13oUMtPvSHQuscrHop4KbXrbsBcdB9Ds7lVK7eRkBIfO43vQ== +reselect@^4.1.6: + version "4.1.6" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.6.tgz#19ca2d3d0b35373a74dc1c98692cdaffb6602656" + integrity sha512-ZovIuXqto7elwnxyXbBtCPo9YFEr3uJqj2rRbcOOog1bmu2Ag85M4hixSwFWyaBMKXNgvPaJ9OSu9SkBPIeJHQ== resolve-cwd@^2.0.0: version "2.0.0" From b37825f2e22a7b68e91b1c7cafd486ee35c683c0 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Fri, 17 Jun 2022 05:07:10 +0900 Subject: [PATCH 161/652] Add GitHub Actions to package-ecosystem (#18603) --- .github/dependabot.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index bb1fccf7c..c785d4a35 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -20,3 +20,11 @@ updates: open-pull-requests-limit: 99 allow: - dependency-type: direct + + - package-ecosystem: github-actions + directory: '/' + schedule: + interval: weekly + open-pull-requests-limit: 99 + allow: + - dependency-type: direct From e789b8d4c13bae4cbc7e156b073b4e46accd8b34 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Fri, 17 Jun 2022 05:09:43 +0900 Subject: [PATCH 162/652] Set-up Problem Matchers (#18598) --- .github/stylelint-matcher.json | 21 +++++++++++++++++++++ .github/workflows/linter.yml | 12 ++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 .github/stylelint-matcher.json diff --git a/.github/stylelint-matcher.json b/.github/stylelint-matcher.json new file mode 100644 index 000000000..cdfd4086b --- /dev/null +++ b/.github/stylelint-matcher.json @@ -0,0 +1,21 @@ +{ + "problemMatcher": [ + { + "owner": "stylelint", + "pattern": [ + { + "regexp": "^([^\\s].*)$", + "file": 1 + }, + { + "regexp": "^\\s+((\\d+):(\\d+))?\\s+(✖|×)\\s+(.*)\\s{2,}(.*)$", + "line": 2, + "column": 3, + "message": 5, + "code": 6, + "loop": true + } + ] + } + ] +} diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml index fd535ea9a..f77a9720e 100644 --- a/.github/workflows/linter.yml +++ b/.github/workflows/linter.yml @@ -50,8 +50,19 @@ jobs: # Full git history is needed to get a proper list of changed files within `super-linter` fetch-depth: 0 + - name: Set-up Node.js + uses: actions/setup-node@v3 + with: + node-version: 16.x + cache: yarn - name: Intall dependencies run: yarn install --frozen-lockfile + - name: Set-up RuboCop Problem Mathcher + uses: r7kamura/rubocop-problem-matchers-action@v1 + - name: Set-up Stylelint Problem Matcher + uses: xt0rted/stylelint-problem-matcher@v1 + # https://github.com/xt0rted/stylelint-problem-matcher/issues/360 + - run: echo "::add-matcher::.github/stylelint-matcher.json" ################################ # Run Linter against code base # @@ -61,6 +72,7 @@ jobs: env: CSS_FILE_NAME: stylelint.config.js DEFAULT_BRANCH: main + NO_COLOR: 1 # https://github.com/xt0rted/stylelint-problem-matcher/issues/360 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} JAVASCRIPT_ES_CONFIG_FILE: .eslintrc.js LINTER_RULES_PATH: . From 4e26fb0ea945212609eb03245b2d615f2782b435 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Fri, 17 Jun 2022 05:09:58 +0900 Subject: [PATCH 163/652] Drop support for Ruby v2.5 and Node.js v12 (#18323) * Drop support for Ruby v2.5 and Node.js v12 * Update package.json --- README.md | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d47bb7ab4..5019bd097 100644 --- a/README.md +++ b/README.md @@ -72,8 +72,8 @@ Mastodon acts as an OAuth2 provider, so 3rd party apps can use the REST and Stre - **PostgreSQL** 9.5+ - **Redis** 4+ -- **Ruby** 2.5+ -- **Node.js** 12+ +- **Ruby** 2.6+ +- **Node.js** 14+ The repository includes deployment configurations for **Docker and docker-compose** as well as specific platforms like **Heroku**, **Scalingo**, and **Nanobox**. The [**standalone** installation guide](https://docs.joinmastodon.org/admin/install/) is available in the documentation. diff --git a/package.json b/package.json index 0322c5e18..80ad1add3 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "@mastodon/mastodon", "license": "AGPL-3.0-or-later", "engines": { - "node": ">=12" + "node": ">=14" }, "scripts": { "postversion": "git push --tags", From 9cec3f3597350045702dc2ac34099de78672e5e4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Jun 2022 14:38:07 +0900 Subject: [PATCH 164/652] Bump actions/checkout from 2 to 3 (#18679) Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v2...v3) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build-image.yml | 2 +- .github/workflows/check-i18n.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index 75c7b54a6..d215650ea 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -14,7 +14,7 @@ jobs: build-image: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: docker/setup-qemu-action@v1 - uses: docker/setup-buildx-action@v1 - uses: docker/login-action@v1 diff --git a/.github/workflows/check-i18n.yml b/.github/workflows/check-i18n.yml index be38a096d..1c60515f8 100644 --- a/.github/workflows/check-i18n.yml +++ b/.github/workflows/check-i18n.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Install system dependencies run: | sudo apt-get update From 943dfb854c1752b452d49dcadc49eebf2bbd86b7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Jun 2022 14:39:21 +0900 Subject: [PATCH 165/652] Bump docker/metadata-action from 3 to 4 (#18674) Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 3 to 4. - [Release notes](https://github.com/docker/metadata-action/releases) - [Upgrade guide](https://github.com/docker/metadata-action/blob/master/UPGRADE.md) - [Commits](https://github.com/docker/metadata-action/compare/v3...v4) --- updated-dependencies: - dependency-name: docker/metadata-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build-image.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index d215650ea..a51debf6b 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -22,7 +22,7 @@ jobs: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} if: github.event_name != 'pull_request' - - uses: docker/metadata-action@v3 + - uses: docker/metadata-action@v4 id: meta with: images: tootsuite/mastodon From 5d3995e51e5095615a637696029f9d0e54c790ce Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Jun 2022 14:40:46 +0900 Subject: [PATCH 166/652] Bump docker/build-push-action from 2 to 3 (#18675) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 2 to 3. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/v2...v3) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build-image.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index a51debf6b..ac2f777b5 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -32,7 +32,7 @@ jobs: type=edge,branch=main type=match,pattern=v(.*),group=0 type=ref,event=pr - - uses: docker/build-push-action@v2 + - uses: docker/build-push-action@v3 with: context: . platforms: linux/amd64,linux/arm64 From d5a890c7660902b8e8f5ff6bd0bd185b0f56754e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Jun 2022 14:42:02 +0900 Subject: [PATCH 167/652] Bump i18n-tasks from 1.0.10 to 1.0.11 (#18683) Bumps [i18n-tasks](https://github.com/glebm/i18n-tasks) from 1.0.10 to 1.0.11. - [Release notes](https://github.com/glebm/i18n-tasks/releases) - [Changelog](https://github.com/glebm/i18n-tasks/blob/main/CHANGES.md) - [Commits](https://github.com/glebm/i18n-tasks/compare/v1.0.10...v1.0.11) --- updated-dependencies: - dependency-name: i18n-tasks dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index a2c2360ca..1966e6d2d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -306,7 +306,7 @@ GEM rainbow (>= 2.0.0) i18n (1.10.0) concurrent-ruby (~> 1.0) - i18n-tasks (1.0.10) + i18n-tasks (1.0.11) activesupport (>= 4.0.2) ast (>= 2.1.0) better_html (~> 1.0) @@ -395,7 +395,7 @@ GEM mime-types-data (3.2022.0105) mini_mime (1.1.2) mini_portile2 (2.8.0) - minitest (5.15.0) + minitest (5.16.0) msgpack (1.5.2) multi_json (1.15.0) multipart-post (2.1.1) @@ -511,7 +511,7 @@ GEM rails-dom-testing (2.0.3) activesupport (>= 4.2.0) nokogiri (>= 1.6) - rails-html-sanitizer (1.4.2) + rails-html-sanitizer (1.4.3) loofah (~> 2.3) rails-i18n (6.0.0) i18n (>= 0.7, < 2) @@ -719,7 +719,7 @@ GEM xorcist (1.1.2) xpath (3.2.0) nokogiri (~> 1.8) - zeitwerk (2.5.4) + zeitwerk (2.6.0) PLATFORMS ruby From 2c5fbf68b737aff34d2d5808d0ccfb6046558806 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Jun 2022 14:42:43 +0900 Subject: [PATCH 168/652] Bump bullet from 7.0.1 to 7.0.2 (#18617) Bumps [bullet](https://github.com/flyerhzm/bullet) from 7.0.1 to 7.0.2. - [Release notes](https://github.com/flyerhzm/bullet/releases) - [Changelog](https://github.com/flyerhzm/bullet/blob/master/CHANGELOG.md) - [Commits](https://github.com/flyerhzm/bullet/compare/7.0.1...7.0.2) --- updated-dependencies: - dependency-name: bullet dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 1966e6d2d..8db79d0c3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -122,7 +122,7 @@ GEM concurrent-ruby (~> 1.0, >= 1.0.5) redis (>= 1.0, <= 5.0) builder (3.2.4) - bullet (7.0.1) + bullet (7.0.2) activesupport (>= 3.0.0) uniform_notifier (~> 1.11) bundler-audit (0.9.1) @@ -678,7 +678,7 @@ GEM unf_ext unf_ext (0.0.8) unicode-display_width (2.1.0) - uniform_notifier (1.14.2) + uniform_notifier (1.16.0) validate_email (0.1.6) activemodel (>= 3.0) mail (>= 2.2.5) From 9ba42984e6925197a5bb91f30d616f04d457f94e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Jun 2022 14:43:21 +0900 Subject: [PATCH 169/652] Bump rubocop-rails from 2.14.2 to 2.15.0 (#18681) Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.14.2 to 2.15.0. - [Release notes](https://github.com/rubocop/rubocop-rails/releases) - [Changelog](https://github.com/rubocop/rubocop-rails/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop-rails/compare/v2.14.2...v2.15.0) --- updated-dependencies: - dependency-name: rubocop-rails dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index e0005faba..bf04d968e 100644 --- a/Gemfile +++ b/Gemfile @@ -133,7 +133,7 @@ group :development do gem 'letter_opener_web', '~> 2.0' gem 'memory_profiler' gem 'rubocop', '~> 1.30', require: false - gem 'rubocop-rails', '~> 2.14', require: false + gem 'rubocop-rails', '~> 2.15', require: false gem 'brakeman', '~> 5.2', require: false gem 'bundler-audit', '~> 0.9', require: false diff --git a/Gemfile.lock b/Gemfile.lock index 8db79d0c3..43beba769 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -579,7 +579,7 @@ GEM unicode-display_width (>= 1.4.0, < 3.0) rubocop-ast (1.18.0) parser (>= 3.1.1.0) - rubocop-rails (2.14.2) + rubocop-rails (2.15.0) activesupport (>= 4.2.0) rack (>= 1.1) rubocop (>= 1.7.0, < 2.0) @@ -821,7 +821,7 @@ DEPENDENCIES rspec-sidekiq (~> 3.1) rspec_junit_formatter (~> 0.5) rubocop (~> 1.30) - rubocop-rails (~> 2.14) + rubocop-rails (~> 2.15) ruby-progressbar (~> 1.11) sanitize (~> 6.0) scenic (~> 1.6) From 81d68a458aef20deb98dad3c119a30ba993013da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Jun 2022 14:43:55 +0900 Subject: [PATCH 170/652] Bump prettier from 2.6.2 to 2.7.1 (#18684) Bumps [prettier](https://github.com/prettier/prettier) from 2.6.2 to 2.7.1. - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) - [Commits](https://github.com/prettier/prettier/compare/2.6.2...2.7.1) --- updated-dependencies: - dependency-name: prettier dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 80ad1add3..470cc330f 100644 --- a/package.json +++ b/package.json @@ -149,7 +149,7 @@ "jest": "^28.1.0", "jest-environment-jsdom": "^28.1.0", "postcss-scss": "^4.0.4", - "prettier": "^2.6.2", + "prettier": "^2.7.1", "raf": "^3.4.1", "react-intl-translations-manager": "^5.0.3", "react-test-renderer": "^16.14.0", diff --git a/yarn.lock b/yarn.lock index 14dc69104..ca1995ff1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8822,10 +8822,10 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -prettier@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.2.tgz#e26d71a18a74c3d0f0597f55f01fb6c06c206032" - integrity sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew== +prettier@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" + integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== pretty-format@^25.2.1, pretty-format@^25.5.0: version "25.5.0" From bb096ed888e760cf85d83494fe7b0120c42b7e64 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Jun 2022 14:44:57 +0900 Subject: [PATCH 171/652] Bump intersection-observer from 0.12.0 to 0.12.2 (#18682) Bumps [intersection-observer](https://github.com/GoogleChromeLabs/intersection-observer) from 0.12.0 to 0.12.2. - [Release notes](https://github.com/GoogleChromeLabs/intersection-observer/releases) - [Commits](https://github.com/GoogleChromeLabs/intersection-observer/commits) --- updated-dependencies: - dependency-name: intersection-observer dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 470cc330f..6fe43c866 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "http-link-header": "^1.0.4", "immutable": "^4.1.0", "imports-loader": "^1.2.0", - "intersection-observer": "^0.12.0", + "intersection-observer": "^0.12.2", "intl": "^1.2.5", "intl-messageformat": "^2.2.0", "intl-relativeformat": "^6.4.3", diff --git a/yarn.lock b/yarn.lock index ca1995ff1..8603a4e62 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5895,10 +5895,10 @@ interpret@^1.4.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -intersection-observer@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.12.0.tgz#6c84628f67ce8698e5f9ccf857d97718745837aa" - integrity sha512-2Vkz8z46Dv401zTWudDGwO7KiGHNDkMv417T5ItcNYfmvHR/1qCTVBO9vwH8zZmQ0WkA/1ARwpysR9bsnop4NQ== +intersection-observer@^0.12.0, intersection-observer@^0.12.2: + version "0.12.2" + resolved "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.12.2.tgz#4a45349cc0cd91916682b1f44c28d7ec737dc375" + integrity sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg== intl-format-cache@^2.0.5: version "2.2.9" From 89ac84d0766b7bb29a25f88aa14c941cb68e1d6a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Jun 2022 14:46:13 +0900 Subject: [PATCH 172/652] Bump stylelint from 14.8.5 to 14.9.1 (#18653) Bumps [stylelint](https://github.com/stylelint/stylelint) from 14.8.5 to 14.9.1. - [Release notes](https://github.com/stylelint/stylelint/releases) - [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md) - [Commits](https://github.com/stylelint/stylelint/compare/14.8.5...14.9.1) --- updated-dependencies: - dependency-name: stylelint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 136 +++++++++------------------------------------------ 2 files changed, 25 insertions(+), 113 deletions(-) diff --git a/package.json b/package.json index 6fe43c866..d1022f39a 100644 --- a/package.json +++ b/package.json @@ -153,7 +153,7 @@ "raf": "^3.4.1", "react-intl-translations-manager": "^5.0.3", "react-test-renderer": "^16.14.0", - "stylelint": "^14.8.5", + "stylelint": "^14.9.1", "stylelint-config-standard-scss": "^4.0.0", "webpack-dev-server": "^3.11.3", "yargs": "^17.5.1" diff --git a/yarn.lock b/yarn.lock index 8603a4e62..24ed84ee3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1124,6 +1124,11 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@csstools/selector-specificity@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.0.1.tgz#b6b8d81780b9a9f6459f4bfe9226ac6aefaefe87" + integrity sha512-aG20vknL4/YjQF9BSV7ts4EWm/yrjagAN7OWBNmlbEOUiu0llj4OGrFoOKK3g2vey4/p2omKCoHrWtPxSwV3HA== + "@emotion/babel-plugin@^11.7.1": version "11.9.2" resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.9.2.tgz#723b6d394c89fb2ef782229d92ba95a740576e95" @@ -2815,7 +2820,7 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" -braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: +braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -3673,10 +3678,10 @@ css-font-weight-keywords@^1.0.0: resolved "https://registry.yarnpkg.com/css-font-weight-keywords/-/css-font-weight-keywords-1.0.0.tgz#9bc04671ac85bc724b574ef5d3ac96b0d604fd97" integrity sha1-m8BGcayFvHJLV07106yWsNYE/Zc= -css-functions-list@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/css-functions-list/-/css-functions-list-3.0.1.tgz#1460df7fb584d1692c30b105151dbb988c8094f9" - integrity sha512-PriDuifDt4u4rkDgnqRCLnjfMatufLmWNfQnGCq34xZwpY3oabwhB9SqRBmuvWUgndbemCFlKqg+nO7C2q0SBw== +css-functions-list@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/css-functions-list/-/css-functions-list-3.1.0.tgz#cf5b09f835ad91a00e5959bcfc627cd498e1321b" + integrity sha512-/9lCvYZaUbBGvYUgYGFJ4dcYiyqdhSjG7IPVluoV8A1ILjkF7ilmhp1OGUz8n+nmBcu0RNrQAzgD8B6FJbrt2w== css-global-keywords@^1.0.1: version "1.0.1" @@ -7065,11 +7070,6 @@ lockfile@^1.0: dependencies: signal-exit "^3.0.2" -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= - lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" @@ -7322,15 +7322,7 @@ micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" -micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== - dependencies: - braces "^3.0.1" - picomatch "^2.2.3" - -micromatch@^4.0.5: +micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== @@ -7576,11 +7568,6 @@ nan@^2.12.1: resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== -nanoid@^3.1.23: - version "3.2.0" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c" - integrity sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA== - nanoid@^3.3.4: version "3.3.4" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" @@ -8693,7 +8680,7 @@ postcss-selector-parser@^3.0.0: indexes-of "^1.0.1" uniq "^1.0.1" -postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.6: +postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.6: version "6.0.10" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== @@ -8701,25 +8688,6 @@ postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.6: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-selector-parser@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" - integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== - dependencies: - cssesc "^3.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" - integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== - dependencies: - cssesc "^3.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - util-deprecate "^1.0.2" - postcss-svgo@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz#343a2cdbac9505d416243d496f724f38894c941e" @@ -8743,12 +8711,7 @@ postcss-value-parser@^3.0.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== -postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" - integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== - -postcss-value-parser@^4.2.0: +postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== @@ -8772,16 +8735,7 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.27, postcss@^7.0.32: source-map "^0.6.1" supports-color "^6.1.0" -postcss@^8.2.15: - version "8.3.0" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.0.tgz#b1a713f6172ca427e3f05ef1303de8b65683325f" - integrity sha512-+ogXpdAjWGa+fdYY5BQ96V/6tAo+TdSSIMP5huJBIygdWwKtVoB5JWZ7yUd4xZ8r+8Kvvx4nyg/PQ071H4UtcQ== - dependencies: - colorette "^1.2.2" - nanoid "^3.1.23" - source-map-js "^0.6.2" - -postcss@^8.4.14: +postcss@^8.2.15, postcss@^8.4.14: version "8.4.14" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== @@ -10140,11 +10094,6 @@ source-list-map@^2.0.0: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -source-map-js@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" - integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== - source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -10254,11 +10203,6 @@ spdy@^4.0.2: select-hose "^2.0.0" spdy-transport "^3.0.0" -specificity@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/specificity/-/specificity-0.4.1.tgz#aab5e645012db08ba182e151165738d00887b019" - integrity sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg== - split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" @@ -10476,14 +10420,7 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-ansi@^6.0.1: +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -10581,15 +10518,16 @@ stylelint-scss@^4.0.0: postcss-selector-parser "^6.0.6" postcss-value-parser "^4.1.0" -stylelint@^14.8.5: - version "14.8.5" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.8.5.tgz#0fcbf5b6821283b5a249dde36d70f1158da0a2a3" - integrity sha512-e3t4H/hlWlspkcNUrkhf44RU3OpPTA7uBOoREGBzSwdEF+2g/+gbZq7WEpMP7BpopcSe/uLaTvDuL+URL7cdnQ== +stylelint@^14.9.1: + version "14.9.1" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.9.1.tgz#6494ed38f148b1e75b402d678a3b6a8aae86dfda" + integrity sha512-RdAkJdPiLqHawCSnu21nE27MjNXaVd4WcOHA4vK5GtIGjScfhNnaOuWR2wWdfKFAvcWQPOYe311iveiVKSmwsA== dependencies: + "@csstools/selector-specificity" "^2.0.1" balanced-match "^2.0.0" colord "^2.9.2" cosmiconfig "^7.0.1" - css-functions-list "^3.0.1" + css-functions-list "^3.1.0" debug "^4.3.4" execall "^2.0.0" fast-glob "^3.2.11" @@ -10617,7 +10555,6 @@ stylelint@^14.8.5: postcss-selector-parser "^6.0.10" postcss-value-parser "^4.2.0" resolve-from "^5.0.0" - specificity "^0.4.1" string-width "^4.2.3" strip-ansi "^6.0.1" style-search "^0.1.0" @@ -10677,15 +10614,7 @@ supports-color@^8.0.0: dependencies: has-flag "^4.0.0" -supports-hyperlinks@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" - integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - -supports-hyperlinks@^2.2.0: +supports-hyperlinks@^2.0.0, supports-hyperlinks@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== @@ -10727,19 +10656,7 @@ symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -table@^6.0.9: - version "6.7.1" - resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" - integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== - dependencies: - ajv "^8.0.1" - lodash.clonedeep "^4.5.0" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.0" - strip-ansi "^6.0.0" - -table@^6.8.0: +table@^6.0.9, table@^6.8.0: version "6.8.0" resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca" integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA== @@ -11320,12 +11237,7 @@ uuid@^8.3.1: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" - integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== - -v8-compile-cache@^2.3.0: +v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.1, v8-compile-cache@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== From 7b5100aaedc27fbc60cf4064313dcafe237bdf53 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Jun 2022 14:47:12 +0900 Subject: [PATCH 173/652] Bump ws from 8.7.0 to 8.8.0 (#18652) Bumps [ws](https://github.com/websockets/ws) from 8.7.0 to 8.8.0. - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/8.7.0...8.8.0) --- updated-dependencies: - dependency-name: ws dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index d1022f39a..df61125ac 100644 --- a/package.json +++ b/package.json @@ -134,7 +134,7 @@ "webpack-cli": "^3.3.12", "webpack-merge": "^5.8.0", "wicg-inert": "^3.1.2", - "ws": "^8.7.0" + "ws": "^8.8.0" }, "devDependencies": { "@babel/eslint-parser": "^7.18.2", diff --git a/yarn.lock b/yarn.lock index 24ed84ee3..5bd929f42 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11665,10 +11665,10 @@ ws@^7.3.1: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== -ws@^8.2.3, ws@^8.7.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.7.0.tgz#eaf9d874b433aa00c0e0d8752532444875db3957" - integrity sha512-c2gsP0PRwcLFzUiA8Mkr37/MI7ilIlHQxaEAtd0uNMbVMoy8puJyafRlm0bV9MbGSabUPeLrRRaqIBcFcA2Pqg== +ws@^8.2.3, ws@^8.8.0: + version "8.8.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.8.0.tgz#8e71c75e2f6348dbf8d78005107297056cb77769" + integrity sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ== xml-name-validator@^4.0.0: version "4.0.0" From 0391b2a6033b56bd0ce213c35a21186fdcb607bc Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 19 Jun 2022 08:18:08 +0200 Subject: [PATCH 174/652] Fix contrast of some elements with new brand colors (#18691) --- app/javascript/styles/contrast/variables.scss | 8 ++--- .../styles/mastodon-light/variables.scss | 5 +-- app/javascript/styles/mastodon/admin.scss | 6 ++-- .../styles/mastodon/components.scss | 32 ++++++++----------- .../styles/mastodon/containers.scss | 2 +- app/javascript/styles/mastodon/dashboard.scss | 4 +-- app/javascript/styles/mastodon/forms.scss | 13 +++----- app/javascript/styles/mastodon/statuses.scss | 4 +-- app/javascript/styles/mastodon/variables.scss | 2 +- 9 files changed, 34 insertions(+), 42 deletions(-) diff --git a/app/javascript/styles/contrast/variables.scss b/app/javascript/styles/contrast/variables.scss index cfe3b21db..9edfd6d8d 100644 --- a/app/javascript/styles/contrast/variables.scss +++ b/app/javascript/styles/contrast/variables.scss @@ -4,19 +4,17 @@ $black: #000000; $classic-base-color: #282c37; $classic-primary-color: #9baec8; $classic-secondary-color: #d9e1e8; -$classic-highlight-color: #2b90d9; +$classic-highlight-color: #6364ff; $ui-base-color: $classic-base-color !default; $ui-primary-color: $classic-primary-color !default; $ui-secondary-color: $classic-secondary-color !default; - -// Differences -$ui-highlight-color: #2b5fd9; +$ui-highlight-color: $classic-highlight-color !default; $darker-text-color: lighten($ui-primary-color, 20%) !default; $dark-text-color: lighten($ui-primary-color, 12%) !default; $secondary-text-color: lighten($ui-secondary-color, 6%) !default; -$highlight-text-color: $classic-highlight-color !default; +$highlight-text-color: lighten($ui-highlight-color, 8%) !default; $action-button-color: #8d9ac2; $inverted-text-color: $black !default; diff --git a/app/javascript/styles/mastodon-light/variables.scss b/app/javascript/styles/mastodon-light/variables.scss index f6bc3ac96..cae065878 100644 --- a/app/javascript/styles/mastodon-light/variables.scss +++ b/app/javascript/styles/mastodon-light/variables.scss @@ -5,7 +5,7 @@ $white: #ffffff; $classic-base-color: #282c37; $classic-primary-color: #9baec8; $classic-secondary-color: #d9e1e8; -$classic-highlight-color: #2b90d9; +$classic-highlight-color: #6364ff; // Differences $success-green: lighten(#3c754d, 8%); @@ -17,10 +17,11 @@ $ui-base-color: $classic-secondary-color !default; $ui-base-lighter-color: #b0c0cf; $ui-primary-color: #9bcbed; $ui-secondary-color: $classic-base-color !default; -$ui-highlight-color: #2b90d9; +$ui-highlight-color: $classic-highlight-color !default; $primary-text-color: $black !default; $darker-text-color: $classic-base-color !default; +$highlight-text-color: darken($ui-highlight-color, 8%) !default; $dark-text-color: #444b5d; $action-button-color: #606984; diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index 18638e18f..f83d6424a 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -133,12 +133,12 @@ $content-width: 840px; .simple-navigation-active-leaf a { color: $primary-text-color; - background-color: $ui-highlight-color; + background-color: darken($ui-highlight-color, 2%); border-bottom: 0; border-radius: 0; &:hover { - background-color: lighten($ui-highlight-color, 5%); + background-color: $ui-highlight-color; } } } @@ -885,7 +885,7 @@ a.name-tag, border: 0; a { - color: lighten($ui-highlight-color, 8%); + color: $highlight-text-color; } dl:first-child .verified { diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 13474a003..1ada1fcf7 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -42,7 +42,7 @@ } .button { - background-color: $ui-highlight-color; + background-color: darken($ui-highlight-color, 2%); border: 10px none; border-radius: 4px; box-sizing: border-box; @@ -60,20 +60,16 @@ text-align: center; text-decoration: none; text-overflow: ellipsis; - transition: all 100ms ease-in; white-space: nowrap; width: auto; &:active, &:focus, &:hover { - background-color: lighten($ui-highlight-color, 10%); - transition: all 200ms ease-out; + background-color: $ui-highlight-color; } &--destructive { - transition: none; - &:active, &:focus, &:hover { @@ -829,7 +825,7 @@ } a.unhandled-link { - color: lighten($ui-highlight-color, 8%); + color: $highlight-text-color; } .status__content__spoiler-link { @@ -899,7 +895,7 @@ } &.unhandled-link { - color: lighten($ui-highlight-color, 8%); + color: $highlight-text-color; } } } @@ -912,7 +908,7 @@ display: block; font-size: 15px; line-height: 20px; - color: lighten($ui-highlight-color, 8%); + color: $highlight-text-color; border: 0; background: transparent; padding: 0; @@ -2437,7 +2433,7 @@ a.account__display-name { height: 3.9375rem; bottom: 1.3125rem; right: 1.3125rem; - background: darken($ui-highlight-color, 3%); + background: darken($ui-highlight-color, 2%); color: $white; border-radius: 50%; font-size: 21px; @@ -2448,7 +2444,7 @@ a.account__display-name { &:hover, &:focus, &:active { - background: lighten($ui-highlight-color, 7%); + background: $ui-highlight-color; } } @@ -2881,11 +2877,11 @@ a.account__display-name { } .react-toggle--checked .react-toggle-track { - background-color: $ui-highlight-color; + background-color: darken($ui-highlight-color, 2%); } .react-toggle--checked:is(:hover, :focus-within):not(.react-toggle--disabled) .react-toggle-track { - background-color: lighten($ui-highlight-color, 10%); + background-color: $ui-highlight-color; } .react-toggle-track-check { @@ -2974,7 +2970,7 @@ a.account__display-name { } &.active { - color: $ui-highlight-color; + color: $highlight-text-color; } } } @@ -3407,14 +3403,14 @@ a.status-card.compact:hover { } a { - color: lighten($ui-highlight-color, 8%); + color: $highlight-text-color; text-decoration: none; &:hover, &:focus, &:active { text-decoration: underline; - color: lighten($ui-highlight-color, 12%); + color: lighten($highlight-text-color, 4%); } } } @@ -6427,8 +6423,8 @@ a.status-card.compact:hover { vertical-align: middle; &.checked { - border-color: lighten($ui-highlight-color, 8%); - background: lighten($ui-highlight-color, 8%); + border-color: lighten($ui-highlight-color, 4%); + background: lighten($ui-highlight-color, 4%); } } } diff --git a/app/javascript/styles/mastodon/containers.scss b/app/javascript/styles/mastodon/containers.scss index 23dbece6b..5703a64e3 100644 --- a/app/javascript/styles/mastodon/containers.scss +++ b/app/javascript/styles/mastodon/containers.scss @@ -791,7 +791,7 @@ border-top: 0; a { - color: lighten($ui-highlight-color, 8%); + color: $highlight-text-color; } dl:first-child .verified { diff --git a/app/javascript/styles/mastodon/dashboard.scss b/app/javascript/styles/mastodon/dashboard.scss index 7d0e51fde..c21fc9eba 100644 --- a/app/javascript/styles/mastodon/dashboard.scss +++ b/app/javascript/styles/mastodon/dashboard.scss @@ -82,7 +82,7 @@ display: flex; align-items: baseline; border-radius: 4px; - background: $ui-highlight-color; + background: darken($ui-highlight-color, 2%); color: $primary-text-color; transition: all 100ms ease-in; font-size: 14px; @@ -95,7 +95,7 @@ &:active, &:focus, &:hover { - background-color: lighten($ui-highlight-color, 10%); + background-color: $ui-highlight-color; transition: all 200ms ease-out; } diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss index 94f553b76..d57eabc09 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -463,14 +463,14 @@ code { width: 100%; border: 0; border-radius: 4px; - background: $ui-highlight-color; + background: darken($ui-highlight-color, 2%); color: $primary-text-color; font-size: 18px; line-height: inherit; height: auto; padding: 10px; - text-transform: uppercase; text-decoration: none; + text-transform: uppercase; text-align: center; box-sizing: border-box; cursor: pointer; @@ -483,13 +483,10 @@ code { margin-right: 0; } - &:hover { - background-color: lighten($ui-highlight-color, 5%); - } - &:active, - &:focus { - background-color: darken($ui-highlight-color, 5%); + &:focus, + &:hover { + background-color: $ui-highlight-color; } &:disabled:hover { diff --git a/app/javascript/styles/mastodon/statuses.scss b/app/javascript/styles/mastodon/statuses.scss index a926aff96..a3237a630 100644 --- a/app/javascript/styles/mastodon/statuses.scss +++ b/app/javascript/styles/mastodon/statuses.scss @@ -80,7 +80,7 @@ .button.logo-button { flex: 0 auto; font-size: 14px; - background: $ui-highlight-color; + background: darken($ui-highlight-color, 2%); color: $primary-text-color; text-transform: none; line-height: 1.2; @@ -104,7 +104,7 @@ &:active, &:focus, &:hover { - background: lighten($ui-highlight-color, 10%); + background: $ui-highlight-color; } &:disabled, diff --git a/app/javascript/styles/mastodon/variables.scss b/app/javascript/styles/mastodon/variables.scss index 544f33ebf..be2c900ea 100644 --- a/app/javascript/styles/mastodon/variables.scss +++ b/app/javascript/styles/mastodon/variables.scss @@ -34,7 +34,7 @@ $primary-text-color: $white !default; $darker-text-color: $ui-primary-color !default; $dark-text-color: $ui-base-lighter-color !default; $secondary-text-color: $ui-secondary-color !default; -$highlight-text-color: $ui-highlight-color !default; +$highlight-text-color: lighten($ui-highlight-color, 8%) !default; $action-button-color: $ui-base-lighter-color !default; $passive-text-color: $gold-star !default; $active-passive-text-color: $success-green !default; From 14dff49f92db0c9ad22575920fc8f00bd201ce42 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Jun 2022 15:53:39 +0900 Subject: [PATCH 175/652] Bump jest from 28.1.0 to 28.1.1 (#18657) Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 28.1.0 to 28.1.1. - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v28.1.1/packages/jest) --- updated-dependencies: - dependency-name: jest dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 643 ++++++++++++++++++++++++++++++++------------------- 2 files changed, 404 insertions(+), 241 deletions(-) diff --git a/package.json b/package.json index df61125ac..1d2fdaa5d 100644 --- a/package.json +++ b/package.json @@ -146,7 +146,7 @@ "eslint-plugin-jsx-a11y": "~6.5.1", "eslint-plugin-promise": "~6.0.0", "eslint-plugin-react": "~7.30.0", - "jest": "^28.1.0", + "jest": "^28.1.1", "jest-environment-jsdom": "^28.1.0", "postcss-scss": "^4.0.4", "prettier": "^2.7.1", diff --git a/yarn.lock b/yarn.lock index 5bd929f42..aec39d0a0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1284,28 +1284,28 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@jest/console@^28.1.0": - version "28.1.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.0.tgz#db78222c3d3b0c1db82f1b9de51094c2aaff2176" - integrity sha512-tscn3dlJFGay47kb4qVruQg/XWlmvU0xp3EJOjzzY+sBaI+YgwKcvAmTcyYU7xEiLLIY5HCdWRooAL8dqkFlDA== +"@jest/console@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.1.tgz#305f8ca50b6e70413839f54c0e002b60a0f2fd7d" + integrity sha512-0RiUocPVFEm3WRMOStIHbRWllG6iW6E3/gUPnf4lkrVFyXIIDeCe+vlKeYyFOMhB2EPE6FLFCNADSOOQMaqvyA== dependencies: - "@jest/types" "^28.1.0" + "@jest/types" "^28.1.1" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^28.1.0" - jest-util "^28.1.0" + jest-message-util "^28.1.1" + jest-util "^28.1.1" slash "^3.0.0" -"@jest/core@^28.1.0": - version "28.1.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.1.0.tgz#784a1e6ce5358b46fcbdcfbbd93b1b713ed4ea80" - integrity sha512-/2PTt0ywhjZ4NwNO4bUqD9IVJfmFVhVKGlhvSpmEfUCuxYf/3NHcKmRFI+I71lYzbTT3wMuYpETDCTHo81gC/g== +"@jest/core@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.1.1.tgz#086830bec6267accf9af5ca76f794858e9f9f092" + integrity sha512-3pYsBoZZ42tXMdlcFeCc/0j9kOlK7MYuXs2B1QbvDgMoW1K9NJ4G/VYvIbMb26iqlkTfPHo7SC2JgjDOk/mxXw== dependencies: - "@jest/console" "^28.1.0" - "@jest/reporters" "^28.1.0" - "@jest/test-result" "^28.1.0" - "@jest/transform" "^28.1.0" - "@jest/types" "^28.1.0" + "@jest/console" "^28.1.1" + "@jest/reporters" "^28.1.1" + "@jest/test-result" "^28.1.1" + "@jest/transform" "^28.1.1" + "@jest/types" "^28.1.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" @@ -1313,20 +1313,20 @@ exit "^0.1.2" graceful-fs "^4.2.9" jest-changed-files "^28.0.2" - jest-config "^28.1.0" - jest-haste-map "^28.1.0" - jest-message-util "^28.1.0" + jest-config "^28.1.1" + jest-haste-map "^28.1.1" + jest-message-util "^28.1.1" jest-regex-util "^28.0.2" - jest-resolve "^28.1.0" - jest-resolve-dependencies "^28.1.0" - jest-runner "^28.1.0" - jest-runtime "^28.1.0" - jest-snapshot "^28.1.0" - jest-util "^28.1.0" - jest-validate "^28.1.0" - jest-watcher "^28.1.0" + jest-resolve "^28.1.1" + jest-resolve-dependencies "^28.1.1" + jest-runner "^28.1.1" + jest-runtime "^28.1.1" + jest-snapshot "^28.1.1" + jest-util "^28.1.1" + jest-validate "^28.1.1" + jest-watcher "^28.1.1" micromatch "^4.0.4" - pretty-format "^28.1.0" + pretty-format "^28.1.1" rimraf "^3.0.0" slash "^3.0.0" strip-ansi "^6.0.0" @@ -1341,20 +1341,30 @@ "@types/node" "*" jest-mock "^28.1.0" -"@jest/expect-utils@^28.1.0": - version "28.1.0" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.1.0.tgz#a5cde811195515a9809b96748ae8bcc331a3538a" - integrity sha512-5BrG48dpC0sB80wpeIX5FU6kolDJI4K0n5BM9a5V38MGx0pyRvUBSS0u2aNTdDzmOrCjhOg8pGs6a20ivYkdmw== +"@jest/environment@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.1.1.tgz#c4cbf85283278d768f816ebd1a258ea6f9e39d4f" + integrity sha512-9auVQ2GzQ7nrU+lAr8KyY838YahElTX9HVjbQPPS2XjlxQ+na18G113OoBhyBGBtD6ZnO/SrUy5WR8EzOj1/Uw== + dependencies: + "@jest/fake-timers" "^28.1.1" + "@jest/types" "^28.1.1" + "@types/node" "*" + jest-mock "^28.1.1" + +"@jest/expect-utils@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.1.1.tgz#d84c346025b9f6f3886d02c48a6177e2b0360587" + integrity sha512-n/ghlvdhCdMI/hTcnn4qV57kQuV9OTsZzH1TTCVARANKhl6hXJqLKUkwX69ftMGpsbpt96SsDD8n8LD2d9+FRw== dependencies: jest-get-type "^28.0.2" -"@jest/expect@^28.1.0": - version "28.1.0" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-28.1.0.tgz#2e5a31db692597070932366a1602b5157f0f217c" - integrity sha512-be9ETznPLaHOmeJqzYNIXv1ADEzENuQonIoobzThOYPuK/6GhrWNIJDVTgBLCrz3Am73PyEU2urQClZp0hLTtA== +"@jest/expect@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-28.1.1.tgz#ea4fcc8504b45835029221c0dc357c622a761326" + integrity sha512-/+tQprrFoT6lfkMj4mW/mUIfAmmk/+iQPmg7mLDIFOf2lyf7EBHaS+x3RbeR0VZVMe55IvX7QRoT/2aK3AuUXg== dependencies: - expect "^28.1.0" - jest-snapshot "^28.1.0" + expect "^28.1.1" + jest-snapshot "^28.1.1" "@jest/fake-timers@^28.1.0": version "28.1.0" @@ -1368,25 +1378,37 @@ jest-mock "^28.1.0" jest-util "^28.1.0" -"@jest/globals@^28.1.0": - version "28.1.0" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.1.0.tgz#a4427d2eb11763002ff58e24de56b84ba79eb793" - integrity sha512-3m7sTg52OTQR6dPhsEQSxAvU+LOBbMivZBwOvKEZ+Rb+GyxVnXi9HKgOTYkx/S99T8yvh17U4tNNJPIEQmtwYw== +"@jest/fake-timers@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.1.1.tgz#47ce33296ab9d680c76076d51ddbe65ceb3337f1" + integrity sha512-BY/3+TyLs5+q87rGWrGUY5f8e8uC3LsVHS9Diz8+FV3ARXL4sNnkLlIB8dvDvRrp+LUCGM+DLqlsYubizGUjIA== dependencies: - "@jest/environment" "^28.1.0" - "@jest/expect" "^28.1.0" - "@jest/types" "^28.1.0" + "@jest/types" "^28.1.1" + "@sinonjs/fake-timers" "^9.1.1" + "@types/node" "*" + jest-message-util "^28.1.1" + jest-mock "^28.1.1" + jest-util "^28.1.1" -"@jest/reporters@^28.1.0": - version "28.1.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.1.0.tgz#5183a28b9b593b6000fa9b89b031c7216b58a9a0" - integrity sha512-qxbFfqap/5QlSpIizH9c/bFCDKsQlM4uAKSOvZrP+nIdrjqre3FmKzpTtYyhsaVcOSNK7TTt2kjm+4BJIjysFA== +"@jest/globals@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.1.1.tgz#c0a7977f85e26279cc090d9adcdf82b8a34c4061" + integrity sha512-dEgl/6v7ToB4vXItdvcltJBgny0xBE6xy6IYQrPJAJggdEinGxCDMivNv7sFzPcTITGquXD6UJwYxfJ/5ZwDSg== + dependencies: + "@jest/environment" "^28.1.1" + "@jest/expect" "^28.1.1" + "@jest/types" "^28.1.1" + +"@jest/reporters@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.1.1.tgz#9389f4bb3cce4d9b586f6195f83c79cd2a1c8662" + integrity sha512-597Zj4D4d88sZrzM4atEGLuO7SdA/YrOv9SRXHXRNC+/FwPCWxZhBAEzhXoiJzfRwn8zes/EjS8Lo6DouGN5Gg== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^28.1.0" - "@jest/test-result" "^28.1.0" - "@jest/transform" "^28.1.0" - "@jest/types" "^28.1.0" + "@jest/console" "^28.1.1" + "@jest/test-result" "^28.1.1" + "@jest/transform" "^28.1.1" + "@jest/types" "^28.1.1" "@jridgewell/trace-mapping" "^0.3.7" "@types/node" "*" chalk "^4.0.0" @@ -1399,8 +1421,9 @@ istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.1.3" - jest-util "^28.1.0" - jest-worker "^28.1.0" + jest-message-util "^28.1.1" + jest-util "^28.1.1" + jest-worker "^28.1.1" slash "^3.0.0" string-length "^4.0.1" strip-ansi "^6.0.0" @@ -1423,24 +1446,24 @@ callsites "^3.0.0" graceful-fs "^4.2.9" -"@jest/test-result@^28.1.0": - version "28.1.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.0.tgz#fd149dee123510dd2fcadbbf5f0020f98ad7f12c" - integrity sha512-sBBFIyoPzrZho3N+80P35A5oAkSKlGfsEFfXFWuPGBsW40UAjCkGakZhn4UQK4iQlW2vgCDMRDOob9FGKV8YoQ== +"@jest/test-result@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.1.tgz#c6f18d1bbb01aa88925dd687872a75f8414b317a" + integrity sha512-hPmkugBktqL6rRzwWAtp1JtYT4VHwv8OQ+9lE5Gymj6dHzubI/oJHMUpPOt8NrdVWSrz9S7bHjJUmv2ggFoUNQ== dependencies: - "@jest/console" "^28.1.0" - "@jest/types" "^28.1.0" + "@jest/console" "^28.1.1" + "@jest/types" "^28.1.1" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^28.1.0": - version "28.1.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-28.1.0.tgz#ce7294bbe986415b9a30e218c7e705e6ebf2cdf2" - integrity sha512-tZCEiVWlWNTs/2iK9yi6o3AlMfbbYgV4uuZInSVdzZ7ftpHZhCMuhvk2HLYhCZzLgPFQ9MnM1YaxMnh3TILFiQ== +"@jest/test-sequencer@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-28.1.1.tgz#f594ee2331df75000afe0d1ae3237630ecec732e" + integrity sha512-nuL+dNSVMcWB7OOtgb0EGH5AjO4UBCt68SLP08rwmC+iRhyuJWS9MtZ/MpipxFwKAlHFftbMsydXqWre8B0+XA== dependencies: - "@jest/test-result" "^28.1.0" + "@jest/test-result" "^28.1.1" graceful-fs "^4.2.9" - jest-haste-map "^28.1.0" + jest-haste-map "^28.1.1" slash "^3.0.0" "@jest/transform@^28.1.0": @@ -1464,6 +1487,27 @@ slash "^3.0.0" write-file-atomic "^4.0.1" +"@jest/transform@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.1.tgz#83541f2a3f612077c8501f49cc4e205d4e4a6b27" + integrity sha512-PkfaTUuvjUarl1EDr5ZQcCA++oXkFCP9QFUkG0yVKVmNObjhrqDy0kbMpMebfHWm3CCDHjYNem9eUSH8suVNHQ== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^28.1.1" + "@jridgewell/trace-mapping" "^0.3.7" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^28.1.1" + jest-regex-util "^28.0.2" + jest-util "^28.1.1" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.1" + "@jest/types@^25.5.0": version "25.5.0" resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" @@ -1485,10 +1529,10 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" -"@jest/types@^28.1.0": - version "28.1.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.0.tgz#508327a89976cbf9bd3e1cc74641a29fd7dfd519" - integrity sha512-xmEggMPr317MIOjjDoZ4ejCSr9Lpbt/u34+dvc99t7DS8YirW5rwZEhzKPC2BMUFkUhI48qs6qLUSGw5FuL0GA== +"@jest/types@^28.1.0", "@jest/types@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.1.tgz#d059bbc80e6da6eda9f081f293299348bd78ee0b" + integrity sha512-vRXVqSg1VhDnB8bWcmvLzmg0Bt9CRKVgHPXqYwvWMX3TvAjeO+nRuK6+VdTKCtWOvYlmkF/HqNAL/z+N3B53Kw== dependencies: "@jest/schemas" "^28.0.2" "@types/istanbul-lib-coverage" "^2.0.0" @@ -2524,6 +2568,19 @@ babel-jest@^28.1.0: graceful-fs "^4.2.9" slash "^3.0.0" +babel-jest@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.1.tgz#2a3a4ae50964695b2d694ccffe4bec537c5a3586" + integrity sha512-MEt0263viUdAkTq5D7upHPNxvt4n9uLUGa6pPz3WviNBMtOmStb1lIXS3QobnoqM+qnH+vr4EKlvhe8QcmxIYw== + dependencies: + "@jest/transform" "^28.1.1" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^28.1.1" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + babel-loader@^8.2.5: version "8.2.5" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.5.tgz#d45f585e654d5a5d90f5350a779d7647c5ed512e" @@ -2562,6 +2619,16 @@ babel-plugin-jest-hoist@^28.0.2: "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" +babel-plugin-jest-hoist@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.1.tgz#5e055cdcc47894f28341f87f5e35aad2df680b11" + integrity sha512-NovGCy5Hn25uMJSAU8FaHqzs13cFoOI4lhIujiepssjCKRsAo3TA734RDWSGxuFTsUJXerYOqQQodlxgmtqbzw== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.1.14" + "@types/babel__traverse" "^7.0.6" + babel-plugin-lodash@^3.3.4: version "3.3.4" resolved "https://registry.yarnpkg.com/babel-plugin-lodash/-/babel-plugin-lodash-3.3.4.tgz#4f6844358a1340baed182adbeffa8df9967bc196" @@ -2669,6 +2736,14 @@ babel-preset-jest@^28.0.2: babel-plugin-jest-hoist "^28.0.2" babel-preset-current-node-syntax "^1.0.0" +babel-preset-jest@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.1.1.tgz#5b6e5e69f963eb2d70f739c607b8f723c0ee75e4" + integrity sha512-FCq9Oud0ReTeWtcneYf/48981aTfXYuB9gbU4rBNNJVBSQ6ssv7E6v/qvbBxtOWwZFXjLZwpg+W3q7J6vhH25g== + dependencies: + babel-plugin-jest-hoist "^28.1.1" + babel-preset-current-node-syntax "^1.0.0" + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -4092,10 +4167,10 @@ diff-sequences@^25.2.6: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== -diff-sequences@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.0.2.tgz#40f8d4ffa081acbd8902ba35c798458d0ff1af41" - integrity sha512-YtEoNynLDFCRznv/XDalsKGSZDoj0U5kLnXvY0JSq3nBboRrZXjD81+eSiwi+nzcZDwedMmcowcxNwwgFW23mQ== +diff-sequences@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.1.1.tgz#9989dc731266dc2903457a70e996f3a041913ac6" + integrity sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw== diffie-hellman@^5.0.0: version "5.0.3" @@ -4795,16 +4870,16 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -expect@^28.1.0: - version "28.1.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-28.1.0.tgz#10e8da64c0850eb8c39a480199f14537f46e8360" - integrity sha512-qFXKl8Pmxk8TBGfaFKRtcQjfXEnKAs+dmlxdwvukJZorwrAabT7M3h8oLOG01I2utEhkmUTi17CHaPBovZsKdw== +expect@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/expect/-/expect-28.1.1.tgz#ca6fff65f6517cf7220c2e805a49c19aea30b420" + integrity sha512-/AANEwGL0tWBwzLNOvO0yUdy2D52jVdNXppOqswC49sxMN2cPWsGCQdzuIf9tj6hHoBQzNvx75JUYuQAckPo3w== dependencies: - "@jest/expect-utils" "^28.1.0" + "@jest/expect-utils" "^28.1.1" jest-get-type "^28.0.2" - jest-matcher-utils "^28.1.0" - jest-message-util "^28.1.0" - jest-util "^28.1.0" + jest-matcher-utils "^28.1.1" + jest-message-util "^28.1.1" + jest-util "^28.1.1" express@^4.17.1, express@^4.18.1: version "4.18.1" @@ -6405,74 +6480,74 @@ jest-changed-files@^28.0.2: execa "^5.0.0" throat "^6.0.1" -jest-circus@^28.1.0: - version "28.1.0" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.1.0.tgz#e229f590911bd54d60efaf076f7acd9360296dae" - integrity sha512-rNYfqfLC0L0zQKRKsg4n4J+W1A2fbyGH7Ss/kDIocp9KXD9iaL111glsLu7+Z7FHuZxwzInMDXq+N1ZIBkI/TQ== +jest-circus@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.1.1.tgz#3d27da6a974d85a466dc0cdc6ddeb58daaa57bb4" + integrity sha512-75+BBVTsL4+p2w198DQpCeyh1RdaS2lhEG87HkaFX/UG0gJExVq2skG2pT7XZEGBubNj2CytcWSPan4QEPNosw== dependencies: - "@jest/environment" "^28.1.0" - "@jest/expect" "^28.1.0" - "@jest/test-result" "^28.1.0" - "@jest/types" "^28.1.0" + "@jest/environment" "^28.1.1" + "@jest/expect" "^28.1.1" + "@jest/test-result" "^28.1.1" + "@jest/types" "^28.1.1" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" dedent "^0.7.0" is-generator-fn "^2.0.0" - jest-each "^28.1.0" - jest-matcher-utils "^28.1.0" - jest-message-util "^28.1.0" - jest-runtime "^28.1.0" - jest-snapshot "^28.1.0" - jest-util "^28.1.0" - pretty-format "^28.1.0" + jest-each "^28.1.1" + jest-matcher-utils "^28.1.1" + jest-message-util "^28.1.1" + jest-runtime "^28.1.1" + jest-snapshot "^28.1.1" + jest-util "^28.1.1" + pretty-format "^28.1.1" slash "^3.0.0" stack-utils "^2.0.3" throat "^6.0.1" -jest-cli@^28.1.0: - version "28.1.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.1.0.tgz#cd1d8adb9630102d5ba04a22895f63decdd7ac1f" - integrity sha512-fDJRt6WPRriHrBsvvgb93OxgajHHsJbk4jZxiPqmZbMDRcHskfJBBfTyjFko0jjfprP544hOktdSi9HVgl4VUQ== +jest-cli@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.1.1.tgz#23ddfde8940e1818585ae4a568877b33b0e51cfe" + integrity sha512-+sUfVbJqb1OjBZ0OdBbI6OWfYM1i7bSfzYy6gze1F1w3OKWq8ZTEKkZ8a7ZQPq6G/G1qMh/uKqpdWhgl11NFQQ== dependencies: - "@jest/core" "^28.1.0" - "@jest/test-result" "^28.1.0" - "@jest/types" "^28.1.0" + "@jest/core" "^28.1.1" + "@jest/test-result" "^28.1.1" + "@jest/types" "^28.1.1" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.9" import-local "^3.0.2" - jest-config "^28.1.0" - jest-util "^28.1.0" - jest-validate "^28.1.0" + jest-config "^28.1.1" + jest-util "^28.1.1" + jest-validate "^28.1.1" prompts "^2.0.1" yargs "^17.3.1" -jest-config@^28.1.0: - version "28.1.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-28.1.0.tgz#fca22ca0760e746fe1ce1f9406f6b307ab818501" - integrity sha512-aOV80E9LeWrmflp7hfZNn/zGA4QKv/xsn2w8QCBP0t0+YqObuCWTSgNbHJ0j9YsTuCO08ZR/wsvlxqqHX20iUA== +jest-config@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-28.1.1.tgz#e90b97b984f14a6c24a221859e81b258990fce2f" + integrity sha512-tASynMhS+jVV85zKvjfbJ8nUyJS/jUSYZ5KQxLUN2ZCvcQc/OmhQl2j6VEL3ezQkNofxn5pQ3SPYWPHb0unTZA== dependencies: "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^28.1.0" - "@jest/types" "^28.1.0" - babel-jest "^28.1.0" + "@jest/test-sequencer" "^28.1.1" + "@jest/types" "^28.1.1" + babel-jest "^28.1.1" chalk "^4.0.0" ci-info "^3.2.0" deepmerge "^4.2.2" glob "^7.1.3" graceful-fs "^4.2.9" - jest-circus "^28.1.0" - jest-environment-node "^28.1.0" + jest-circus "^28.1.1" + jest-environment-node "^28.1.1" jest-get-type "^28.0.2" jest-regex-util "^28.0.2" - jest-resolve "^28.1.0" - jest-runner "^28.1.0" - jest-util "^28.1.0" - jest-validate "^28.1.0" + jest-resolve "^28.1.1" + jest-runner "^28.1.1" + jest-util "^28.1.1" + jest-validate "^28.1.1" micromatch "^4.0.4" parse-json "^5.2.0" - pretty-format "^28.1.0" + pretty-format "^28.1.1" slash "^3.0.0" strip-json-comments "^3.1.1" @@ -6486,33 +6561,33 @@ jest-diff@^25.2.1: jest-get-type "^25.2.6" pretty-format "^25.5.0" -jest-diff@^28.1.0: - version "28.1.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.1.0.tgz#77686fef899ec1873dbfbf9330e37dd429703269" - integrity sha512-8eFd3U3OkIKRtlasXfiAQfbovgFgRDb0Ngcs2E+FMeBZ4rUezqIaGjuyggJBp+llosQXNEWofk/Sz4Hr5gMUhA== +jest-diff@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.1.1.tgz#1a3eedfd81ae79810931c63a1d0f201b9120106c" + integrity sha512-/MUUxeR2fHbqHoMMiffe/Afm+U8U4olFRJ0hiVG2lZatPJcnGxx292ustVu7bULhjV65IYMxRdploAKLbcrsyg== dependencies: chalk "^4.0.0" - diff-sequences "^28.0.2" + diff-sequences "^28.1.1" jest-get-type "^28.0.2" - pretty-format "^28.1.0" + pretty-format "^28.1.1" -jest-docblock@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-28.0.2.tgz#3cab8abea53275c9d670cdca814fc89fba1298c2" - integrity sha512-FH10WWw5NxLoeSdQlJwu+MTiv60aXV/t8KEwIRGEv74WARE1cXIqh1vGdy2CraHuWOOrnzTWj/azQKqW4fO7xg== +jest-docblock@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-28.1.1.tgz#6f515c3bf841516d82ecd57a62eed9204c2f42a8" + integrity sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA== dependencies: detect-newline "^3.0.0" -jest-each@^28.1.0: - version "28.1.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-28.1.0.tgz#54ae66d6a0a5b1913e9a87588d26c2687c39458b" - integrity sha512-a/XX02xF5NTspceMpHujmOexvJ4GftpYXqr6HhhmKmExtMXsyIN/fvanQlt/BcgFoRKN4OCXxLQKth9/n6OPFg== +jest-each@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-28.1.1.tgz#ba5238dacf4f31d9fe23ddc2c44c01e7c23885c4" + integrity sha512-A042rqh17ZvEhRceDMi784ppoXR7MWGDEKTXEZXb4svt0eShMZvijGxzKsx+yIjeE8QYmHPrnHiTSQVhN4nqaw== dependencies: - "@jest/types" "^28.1.0" + "@jest/types" "^28.1.1" chalk "^4.0.0" jest-get-type "^28.0.2" - jest-util "^28.1.0" - pretty-format "^28.1.0" + jest-util "^28.1.1" + pretty-format "^28.1.1" jest-environment-jsdom@^28.1.0: version "28.1.0" @@ -6528,17 +6603,17 @@ jest-environment-jsdom@^28.1.0: jest-util "^28.1.0" jsdom "^19.0.0" -jest-environment-node@^28.1.0: - version "28.1.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.1.0.tgz#6ed2150aa31babba0c488c5b4f4d813a585c68e6" - integrity sha512-gBLZNiyrPw9CSMlTXF1yJhaBgWDPVvH0Pq6bOEwGMXaYNzhzhw2kA/OijNF8egbCgDS0/veRv97249x2CX+udQ== +jest-environment-node@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.1.1.tgz#1c86c59003a7d319fa06ea3b1bbda6c193715c67" + integrity sha512-2aV/eeY/WNgUUJrrkDJ3cFEigjC5fqT1+fCclrY6paqJ5zVPoM//sHmfgUUp7WLYxIdbPwMiVIzejpN56MxnNA== dependencies: - "@jest/environment" "^28.1.0" - "@jest/fake-timers" "^28.1.0" - "@jest/types" "^28.1.0" + "@jest/environment" "^28.1.1" + "@jest/fake-timers" "^28.1.1" + "@jest/types" "^28.1.1" "@types/node" "*" - jest-mock "^28.1.0" - jest-util "^28.1.0" + jest-mock "^28.1.1" + jest-util "^28.1.1" jest-get-type@^25.2.6: version "25.2.6" @@ -6569,23 +6644,42 @@ jest-haste-map@^28.1.0: optionalDependencies: fsevents "^2.3.2" -jest-leak-detector@^28.1.0: - version "28.1.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.1.0.tgz#b65167776a8787443214d6f3f54935a4c73c8a45" - integrity sha512-uIJDQbxwEL2AMMs2xjhZl2hw8s77c3wrPaQ9v6tXJLGaaQ+4QrNJH5vuw7hA7w/uGT/iJ42a83opAqxGHeyRIA== +jest-haste-map@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.1.1.tgz#471685f1acd365a9394745bb97c8fc16289adca3" + integrity sha512-ZrRSE2o3Ezh7sb1KmeLEZRZ4mgufbrMwolcFHNRSjKZhpLa8TdooXOOFlSwoUzlbVs1t0l7upVRW2K7RWGHzbQ== + dependencies: + "@jest/types" "^28.1.1" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^28.0.2" + jest-util "^28.1.1" + jest-worker "^28.1.1" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + +jest-leak-detector@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.1.1.tgz#537f37afd610a4b3f4cab15e06baf60484548efb" + integrity sha512-4jvs8V8kLbAaotE+wFR7vfUGf603cwYtFf1/PYEsyX2BAjSzj8hQSVTP6OWzseTl0xL6dyHuKs2JAks7Pfubmw== dependencies: jest-get-type "^28.0.2" - pretty-format "^28.1.0" + pretty-format "^28.1.1" -jest-matcher-utils@^28.1.0: - version "28.1.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.0.tgz#2ae398806668eeabd293c61712227cb94b250ccf" - integrity sha512-onnax0n2uTLRQFKAjC7TuaxibrPSvZgKTcSCnNUz/tOjJ9UhxNm7ZmPpoQavmTDUjXvUQ8KesWk2/VdrxIFzTQ== +jest-matcher-utils@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.1.tgz#a7c4653c2b782ec96796eb3088060720f1e29304" + integrity sha512-NPJPRWrbmR2nAJ+1nmnfcKKzSwgfaciCCrYZzVnNoxVoyusYWIjkBMNvu0RHJe7dNj4hH3uZOPZsQA+xAYWqsw== dependencies: chalk "^4.0.0" - jest-diff "^28.1.0" + jest-diff "^28.1.1" jest-get-type "^28.0.2" - pretty-format "^28.1.0" + pretty-format "^28.1.1" jest-message-util@^28.1.0: version "28.1.0" @@ -6602,6 +6696,21 @@ jest-message-util@^28.1.0: slash "^3.0.0" stack-utils "^2.0.3" +jest-message-util@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.1.tgz#60aa0b475cfc08c8a9363ed2fb9108514dd9ab89" + integrity sha512-xoDOOT66fLfmTRiqkoLIU7v42mal/SqwDKvfmfiWAdJMSJiU+ozgluO7KbvoAgiwIrrGZsV7viETjc8GNrA/IQ== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^28.1.1" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^28.1.1" + slash "^3.0.0" + stack-utils "^2.0.3" + jest-mock@^28.1.0: version "28.1.0" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.1.0.tgz#ccc7cc12a9b330b3182db0c651edc90d163ff73e" @@ -6610,6 +6719,14 @@ jest-mock@^28.1.0: "@jest/types" "^28.1.0" "@types/node" "*" +jest-mock@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.1.1.tgz#37903d269427fa1ef5b2447be874e1c62a39a371" + integrity sha512-bDCb0FjfsmKweAvE09dZT59IMkzgN0fYBH6t5S45NoJfd2DHkS3ySG2K+hucortryhO3fVuXdlxWcbtIuV/Skw== + dependencies: + "@jest/types" "^28.1.1" + "@types/node" "*" + jest-pnp-resolver@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" @@ -6620,111 +6737,111 @@ jest-regex-util@^28.0.2: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== -jest-resolve-dependencies@^28.1.0: - version "28.1.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.0.tgz#167becb8bee6e20b5ef4a3a728ec67aef6b0b79b" - integrity sha512-Ue1VYoSZquPwEvng7Uefw8RmZR+me/1kr30H2jMINjGeHgeO/JgrR6wxj2ofkJ7KSAA11W3cOrhNCbj5Dqqd9g== +jest-resolve-dependencies@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.1.tgz#3dffaaa56f4b41bc6b61053899d1756401763a27" + integrity sha512-p8Y150xYJth4EXhOuB8FzmS9r8IGLEioiaetgdNGb9VHka4fl0zqWlVe4v7mSkYOuEUg2uB61iE+zySDgrOmgQ== dependencies: jest-regex-util "^28.0.2" - jest-snapshot "^28.1.0" + jest-snapshot "^28.1.1" -jest-resolve@^28.1.0: - version "28.1.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-28.1.0.tgz#b1f32748a6cee7d1779c7ef639c0a87078de3d35" - integrity sha512-vvfN7+tPNnnhDvISuzD1P+CRVP8cK0FHXRwPAcdDaQv4zgvwvag2n55/h5VjYcM5UJG7L4TwE5tZlzcI0X2Lhw== +jest-resolve@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-28.1.1.tgz#bc2eaf384abdcc1aaf3ba7c50d1adf01e59095e5" + integrity sha512-/d1UbyUkf9nvsgdBildLe6LAD4DalgkgZcKd0nZ8XUGPyA/7fsnaQIlKVnDiuUXv/IeZhPEDrRJubVSulxrShA== dependencies: chalk "^4.0.0" graceful-fs "^4.2.9" - jest-haste-map "^28.1.0" + jest-haste-map "^28.1.1" jest-pnp-resolver "^1.2.2" - jest-util "^28.1.0" - jest-validate "^28.1.0" + jest-util "^28.1.1" + jest-validate "^28.1.1" resolve "^1.20.0" resolve.exports "^1.1.0" slash "^3.0.0" -jest-runner@^28.1.0: - version "28.1.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-28.1.0.tgz#aefe2a1e618a69baa0b24a50edc54fdd7e728eaa" - integrity sha512-FBpmuh1HB2dsLklAlRdOxNTTHKFR6G1Qmd80pVDvwbZXTriqjWqjei5DKFC1UlM732KjYcE6yuCdiF0WUCOS2w== +jest-runner@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-28.1.1.tgz#9ecdb3f27a00059986797aa6b012ba8306aa436c" + integrity sha512-W5oFUiDBgTsCloTAj6q95wEvYDB0pxIhY6bc5F26OucnwBN+K58xGTGbliSMI4ChQal5eANDF+xvELaYkJxTmA== dependencies: - "@jest/console" "^28.1.0" - "@jest/environment" "^28.1.0" - "@jest/test-result" "^28.1.0" - "@jest/transform" "^28.1.0" - "@jest/types" "^28.1.0" + "@jest/console" "^28.1.1" + "@jest/environment" "^28.1.1" + "@jest/test-result" "^28.1.1" + "@jest/transform" "^28.1.1" + "@jest/types" "^28.1.1" "@types/node" "*" chalk "^4.0.0" emittery "^0.10.2" graceful-fs "^4.2.9" - jest-docblock "^28.0.2" - jest-environment-node "^28.1.0" - jest-haste-map "^28.1.0" - jest-leak-detector "^28.1.0" - jest-message-util "^28.1.0" - jest-resolve "^28.1.0" - jest-runtime "^28.1.0" - jest-util "^28.1.0" - jest-watcher "^28.1.0" - jest-worker "^28.1.0" + jest-docblock "^28.1.1" + jest-environment-node "^28.1.1" + jest-haste-map "^28.1.1" + jest-leak-detector "^28.1.1" + jest-message-util "^28.1.1" + jest-resolve "^28.1.1" + jest-runtime "^28.1.1" + jest-util "^28.1.1" + jest-watcher "^28.1.1" + jest-worker "^28.1.1" source-map-support "0.5.13" throat "^6.0.1" -jest-runtime@^28.1.0: - version "28.1.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-28.1.0.tgz#4847dcb2a4eb4b0f9eaf41306897e51fb1665631" - integrity sha512-wNYDiwhdH/TV3agaIyVF0lsJ33MhyujOe+lNTUiolqKt8pchy1Hq4+tDMGbtD5P/oNLA3zYrpx73T9dMTOCAcg== +jest-runtime@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-28.1.1.tgz#569e1dc3c36c6c4c0b29516c1c49b6ad580abdaf" + integrity sha512-J89qEJWW0leOsqyi0D9zHpFEYHwwafFdS9xgvhFHtIdRghbadodI0eA+DrthK/1PebBv3Px8mFSMGKrtaVnleg== dependencies: - "@jest/environment" "^28.1.0" - "@jest/fake-timers" "^28.1.0" - "@jest/globals" "^28.1.0" + "@jest/environment" "^28.1.1" + "@jest/fake-timers" "^28.1.1" + "@jest/globals" "^28.1.1" "@jest/source-map" "^28.0.2" - "@jest/test-result" "^28.1.0" - "@jest/transform" "^28.1.0" - "@jest/types" "^28.1.0" + "@jest/test-result" "^28.1.1" + "@jest/transform" "^28.1.1" + "@jest/types" "^28.1.1" chalk "^4.0.0" cjs-module-lexer "^1.0.0" collect-v8-coverage "^1.0.0" execa "^5.0.0" glob "^7.1.3" graceful-fs "^4.2.9" - jest-haste-map "^28.1.0" - jest-message-util "^28.1.0" - jest-mock "^28.1.0" + jest-haste-map "^28.1.1" + jest-message-util "^28.1.1" + jest-mock "^28.1.1" jest-regex-util "^28.0.2" - jest-resolve "^28.1.0" - jest-snapshot "^28.1.0" - jest-util "^28.1.0" + jest-resolve "^28.1.1" + jest-snapshot "^28.1.1" + jest-util "^28.1.1" slash "^3.0.0" strip-bom "^4.0.0" -jest-snapshot@^28.1.0: - version "28.1.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-28.1.0.tgz#4b74fa8816707dd10fe9d551c2c258e5a67b53b6" - integrity sha512-ex49M2ZrZsUyQLpLGxQtDbahvgBjlLPgklkqGM0hq/F7W/f8DyqZxVHjdy19QKBm4O93eDp+H5S23EiTbbUmHw== +jest-snapshot@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-28.1.1.tgz#ab825c16c8d8b5e883bd57eee6ca8748c42ab848" + integrity sha512-1KjqHJ98adRcbIdMizjF5DipwZFbvxym/kFO4g4fVZCZRxH/dqV8TiBFCa6rqic3p0karsy8RWS1y4E07b7P0A== dependencies: "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" "@babel/plugin-syntax-typescript" "^7.7.2" "@babel/traverse" "^7.7.2" "@babel/types" "^7.3.3" - "@jest/expect-utils" "^28.1.0" - "@jest/transform" "^28.1.0" - "@jest/types" "^28.1.0" + "@jest/expect-utils" "^28.1.1" + "@jest/transform" "^28.1.1" + "@jest/types" "^28.1.1" "@types/babel__traverse" "^7.0.6" "@types/prettier" "^2.1.5" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^28.1.0" + expect "^28.1.1" graceful-fs "^4.2.9" - jest-diff "^28.1.0" + jest-diff "^28.1.1" jest-get-type "^28.0.2" - jest-haste-map "^28.1.0" - jest-matcher-utils "^28.1.0" - jest-message-util "^28.1.0" - jest-util "^28.1.0" + jest-haste-map "^28.1.1" + jest-matcher-utils "^28.1.1" + jest-message-util "^28.1.1" + jest-util "^28.1.1" natural-compare "^1.4.0" - pretty-format "^28.1.0" + pretty-format "^28.1.1" semver "^7.3.5" jest-util@^28.1.0: @@ -6739,30 +6856,42 @@ jest-util@^28.1.0: graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^28.1.0: - version "28.1.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.1.0.tgz#8a6821f48432aba9f830c26e28226ad77b9a0e18" - integrity sha512-Lly7CJYih3vQBfjLeANGgBSBJ7pEa18cxpQfQEq2go2xyEzehnHfQTjoUia8xUv4x4J80XKFIDwJJThXtRFQXQ== +jest-util@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.1.tgz#ff39e436a1aca397c0ab998db5a51ae2b7080d05" + integrity sha512-FktOu7ca1DZSyhPAxgxB6hfh2+9zMoJ7aEQA759Z6p45NuO8mWcqujH+UdHlCm/V6JTWwDztM2ITCzU1ijJAfw== dependencies: - "@jest/types" "^28.1.0" + "@jest/types" "^28.1.1" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.1.1.tgz#59b7b339b3c85b5144bd0c06ad3600f503a4acc8" + integrity sha512-Kpf6gcClqFCIZ4ti5++XemYJWUPCFUW+N2gknn+KgnDf549iLul3cBuKVe1YcWRlaF8tZV8eJCap0eECOEE3Ug== + dependencies: + "@jest/types" "^28.1.1" camelcase "^6.2.0" chalk "^4.0.0" jest-get-type "^28.0.2" leven "^3.1.0" - pretty-format "^28.1.0" + pretty-format "^28.1.1" -jest-watcher@^28.1.0: - version "28.1.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.0.tgz#aaa7b4164a4e77eeb5f7d7b25ede5e7b4e9c9aaf" - integrity sha512-tNHMtfLE8Njcr2IRS+5rXYA4BhU90gAOwI9frTGOqd+jX0P/Au/JfRSNqsf5nUTcWdbVYuLxS1KjnzILSoR5hA== +jest-watcher@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.1.tgz#533597fb3bfefd52b5cd115cd916cffd237fb60c" + integrity sha512-RQIpeZ8EIJMxbQrXpJQYIIlubBnB9imEHsxxE41f54ZwcqWLysL/A0ZcdMirf+XsMn3xfphVQVV4EW0/p7i7Ug== dependencies: - "@jest/test-result" "^28.1.0" - "@jest/types" "^28.1.0" + "@jest/test-result" "^28.1.1" + "@jest/types" "^28.1.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" emittery "^0.10.2" - jest-util "^28.1.0" + jest-util "^28.1.1" string-length "^4.0.1" jest-worker@^26.5.0: @@ -6783,14 +6912,24 @@ jest-worker@^28.1.0: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^28.1.0: - version "28.1.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-28.1.0.tgz#f420e41c8f2395b9a30445a97189ebb57593d831" - integrity sha512-TZR+tHxopPhzw3c3560IJXZWLNHgpcz1Zh0w5A65vynLGNcg/5pZ+VildAd7+XGOu6jd58XMY/HNn0IkZIXVXg== +jest-worker@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.1.tgz#3480c73247171dfd01eda77200f0063ab6a3bf28" + integrity sha512-Au7slXB08C6h+xbJPp7VIb6U0XX5Kc9uel/WFc6/rcTzGiaVCBRngBExSYuXSLFPULPSYU3cJ3ybS988lNFQhQ== dependencies: - "@jest/core" "^28.1.0" + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest/-/jest-28.1.1.tgz#3c39a3a09791e16e9ef283597d24ab19a0df701e" + integrity sha512-qw9YHBnjt6TCbIDMPMpJZqf9E12rh6869iZaN08/vpOGgHJSAaLLUn6H8W3IAEuy34Ls3rct064mZLETkxJ2XA== + dependencies: + "@jest/core" "^28.1.1" + "@jest/types" "^28.1.1" import-local "^3.0.2" - jest-cli "^28.1.0" + jest-cli "^28.1.1" js-base64@^2.1.9: version "2.6.4" @@ -7176,6 +7315,13 @@ make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: dependencies: semver "^6.0.0" +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" @@ -8811,6 +8957,16 @@ pretty-format@^28.1.0: ansi-styles "^5.0.0" react-is "^18.0.0" +pretty-format@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.1.tgz#f731530394e0f7fcd95aba6b43c50e02d86b95cb" + integrity sha512-wwJbVTGFHeucr5Jw2bQ9P+VYHyLdAqedFLEkdQUVaBF/eiidDwH5OpilINq4mEfhbCjLnirt6HTTDhv1HaTIQw== + dependencies: + "@jest/schemas" "^28.0.2" + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^18.0.0" + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -10833,7 +10989,7 @@ tiny-warning@^1.0.0: resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== -tmpl@1.0.x: +tmpl@1.0.5, tmpl@1.0.x: version "1.0.5" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== @@ -11305,6 +11461,13 @@ walker@^1.0.7: dependencies: makeerror "1.0.x" +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + warning@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" From d31ecdec5ab5f975e57c52ac2d37447f31280dfa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Jun 2022 16:10:14 +0900 Subject: [PATCH 176/652] Bump jest-environment-jsdom from 28.1.0 to 28.1.1 (#18656) Bumps [jest-environment-jsdom](https://github.com/facebook/jest/tree/HEAD/packages/jest-environment-jsdom) from 28.1.0 to 28.1.1. - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v28.1.1/packages/jest-environment-jsdom) --- updated-dependencies: - dependency-name: jest-environment-jsdom dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 87 ++++++---------------------------------------------- 2 files changed, 11 insertions(+), 78 deletions(-) diff --git a/package.json b/package.json index 1d2fdaa5d..708cfa42e 100644 --- a/package.json +++ b/package.json @@ -147,7 +147,7 @@ "eslint-plugin-promise": "~6.0.0", "eslint-plugin-react": "~7.30.0", "jest": "^28.1.1", - "jest-environment-jsdom": "^28.1.0", + "jest-environment-jsdom": "^28.1.1", "postcss-scss": "^4.0.4", "prettier": "^2.7.1", "raf": "^3.4.1", diff --git a/yarn.lock b/yarn.lock index aec39d0a0..ac6a55c83 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1331,16 +1331,6 @@ slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^28.1.0": - version "28.1.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.1.0.tgz#dedf7d59ec341b9292fcf459fd0ed819eb2e228a" - integrity sha512-S44WGSxkRngzHslhV6RoAExekfF7Qhwa6R5+IYFa81mpcj0YgdBnRSmvHe3SNwOt64yXaE5GG8Y2xM28ii5ssA== - dependencies: - "@jest/fake-timers" "^28.1.0" - "@jest/types" "^28.1.0" - "@types/node" "*" - jest-mock "^28.1.0" - "@jest/environment@^28.1.1": version "28.1.1" resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.1.1.tgz#c4cbf85283278d768f816ebd1a258ea6f9e39d4f" @@ -1366,18 +1356,6 @@ expect "^28.1.1" jest-snapshot "^28.1.1" -"@jest/fake-timers@^28.1.0": - version "28.1.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.1.0.tgz#ea77878aabd5c5d50e1fc53e76d3226101e33064" - integrity sha512-Xqsf/6VLeAAq78+GNPzI7FZQRf5cCHj1qgQxCjws9n8rKw8r1UYoeaALwBvyuzOkpU3c1I6emeMySPa96rxtIg== - dependencies: - "@jest/types" "^28.1.0" - "@sinonjs/fake-timers" "^9.1.1" - "@types/node" "*" - jest-message-util "^28.1.0" - jest-mock "^28.1.0" - jest-util "^28.1.0" - "@jest/fake-timers@^28.1.1": version "28.1.1" resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.1.1.tgz#47ce33296ab9d680c76076d51ddbe65ceb3337f1" @@ -6589,18 +6567,18 @@ jest-each@^28.1.1: jest-util "^28.1.1" pretty-format "^28.1.1" -jest-environment-jsdom@^28.1.0: - version "28.1.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-28.1.0.tgz#1042cffd0343615c5fac2d2c8da20d1d43b73ef8" - integrity sha512-8n6P4xiDjNVqTWv6W6vJPuQdLx+ZiA3dbYg7YJ+DPzR+9B61K6pMVJrSs2IxfGRG4J7pyAUA5shQ9G0KEun78w== +jest-environment-jsdom@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-28.1.1.tgz#8bd721915b32f9b196723292c4461a0ad548b55b" + integrity sha512-41ZvgSoPNcKG5q3LuuOcAczdBxRq9DbZkPe24okN6ZCmiZdAfFtPg3z+lOtsT1fM6OAERApKT+3m0MRDQH2zIA== dependencies: - "@jest/environment" "^28.1.0" - "@jest/fake-timers" "^28.1.0" - "@jest/types" "^28.1.0" + "@jest/environment" "^28.1.1" + "@jest/fake-timers" "^28.1.1" + "@jest/types" "^28.1.1" "@types/jsdom" "^16.2.4" "@types/node" "*" - jest-mock "^28.1.0" - jest-util "^28.1.0" + jest-mock "^28.1.1" + jest-util "^28.1.1" jsdom "^19.0.0" jest-environment-node@^28.1.1: @@ -6681,21 +6659,6 @@ jest-matcher-utils@^28.1.1: jest-get-type "^28.0.2" pretty-format "^28.1.1" -jest-message-util@^28.1.0: - version "28.1.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.0.tgz#7e8f0b9049e948e7b94c2a52731166774ba7d0af" - integrity sha512-RpA8mpaJ/B2HphDMiDlrAZdDytkmwFqgjDZovM21F35lHGeUeCvYmm6W+sbQ0ydaLpg5bFAUuWG1cjqOl8vqrw== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^28.1.0" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^28.1.0" - slash "^3.0.0" - stack-utils "^2.0.3" - jest-message-util@^28.1.1: version "28.1.1" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.1.tgz#60aa0b475cfc08c8a9363ed2fb9108514dd9ab89" @@ -6711,14 +6674,6 @@ jest-message-util@^28.1.1: slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^28.1.0: - version "28.1.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.1.0.tgz#ccc7cc12a9b330b3182db0c651edc90d163ff73e" - integrity sha512-H7BrhggNn77WhdL7O1apG0Q/iwl0Bdd5E1ydhCJzL3oBLh/UYxAwR3EJLsBZ9XA3ZU4PA3UNw4tQjduBTCTmLw== - dependencies: - "@jest/types" "^28.1.0" - "@types/node" "*" - jest-mock@^28.1.1: version "28.1.1" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.1.1.tgz#37903d269427fa1ef5b2447be874e1c62a39a371" @@ -6844,19 +6799,7 @@ jest-snapshot@^28.1.1: pretty-format "^28.1.1" semver "^7.3.5" -jest-util@^28.1.0: - version "28.1.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.0.tgz#d54eb83ad77e1dd441408738c5a5043642823be5" - integrity sha512-qYdCKD77k4Hwkose2YBEqQk7PzUf/NSE+rutzceduFveQREeH6b+89Dc9+wjX9dAwHcgdx4yedGA3FQlU/qCTA== - dependencies: - "@jest/types" "^28.1.0" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-util@^28.1.1: +jest-util@^28.1.0, jest-util@^28.1.1: version "28.1.1" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.1.tgz#ff39e436a1aca397c0ab998db5a51ae2b7080d05" integrity sha512-FktOu7ca1DZSyhPAxgxB6hfh2+9zMoJ7aEQA759Z6p45NuO8mWcqujH+UdHlCm/V6JTWwDztM2ITCzU1ijJAfw== @@ -8947,16 +8890,6 @@ pretty-format@^27.0.2: ansi-styles "^5.0.0" react-is "^17.0.1" -pretty-format@^28.1.0: - version "28.1.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.0.tgz#8f5836c6a0dfdb834730577ec18029052191af55" - integrity sha512-79Z4wWOYCdvQkEoEuSlBhHJqWeZ8D8YRPiPctJFCtvuaClGpiwiQYSCUOE6IEKUbbFukKOTFIUAXE8N4EQTo1Q== - dependencies: - "@jest/schemas" "^28.0.2" - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^18.0.0" - pretty-format@^28.1.1: version "28.1.1" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.1.tgz#f731530394e0f7fcd95aba6b43c50e02d86b95cb" From f7d589aa87df2896e03bf16595c9741876dba1ed Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Jun 2022 16:10:40 +0900 Subject: [PATCH 177/652] Bump babel-jest from 28.1.0 to 28.1.1 (#18649) Bumps [babel-jest](https://github.com/facebook/jest/tree/HEAD/packages/babel-jest) from 28.1.0 to 28.1.1. - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v28.1.1/packages/babel-jest) --- updated-dependencies: - dependency-name: babel-jest dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 96 +--------------------------------------------------- 2 files changed, 2 insertions(+), 96 deletions(-) diff --git a/package.json b/package.json index 708cfa42e..30fe8b672 100644 --- a/package.json +++ b/package.json @@ -140,7 +140,7 @@ "@babel/eslint-parser": "^7.18.2", "@testing-library/jest-dom": "^5.16.4", "@testing-library/react": "^12.1.5", - "babel-jest": "^28.1.0", + "babel-jest": "^28.1.1", "eslint": "^7.32.0", "eslint-plugin-import": "~2.26.0", "eslint-plugin-jsx-a11y": "~6.5.1", diff --git a/yarn.lock b/yarn.lock index ac6a55c83..42d877453 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1444,27 +1444,6 @@ jest-haste-map "^28.1.1" slash "^3.0.0" -"@jest/transform@^28.1.0": - version "28.1.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.0.tgz#224a3c9ba4cc98e2ff996c0a89a2d59db15c74ce" - integrity sha512-omy2xe5WxlAfqmsTjTPxw+iXRTRnf+NtX0ToG+4S0tABeb4KsKmPUHq5UBuwunHg3tJRwgEQhEp0M/8oiatLEA== - dependencies: - "@babel/core" "^7.11.6" - "@jest/types" "^28.1.0" - "@jridgewell/trace-mapping" "^0.3.7" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^28.1.0" - jest-regex-util "^28.0.2" - jest-util "^28.1.0" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - write-file-atomic "^4.0.1" - "@jest/transform@^28.1.1": version "28.1.1" resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.1.tgz#83541f2a3f612077c8501f49cc4e205d4e4a6b27" @@ -2533,19 +2512,6 @@ axobject-query@^2.2.0: resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== -babel-jest@^28.1.0: - version "28.1.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.0.tgz#95a67f8e2e7c0042e7b3ad3951b8af41a533b5ea" - integrity sha512-zNKk0yhDZ6QUwfxh9k07GII6siNGMJWVUU49gmFj5gfdqDKLqa2RArXOF2CODp4Dr7dLxN2cvAV+667dGJ4b4w== - dependencies: - "@jest/transform" "^28.1.0" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^28.0.2" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - babel-jest@^28.1.1: version "28.1.1" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.1.tgz#2a3a4ae50964695b2d694ccffe4bec537c5a3586" @@ -2587,16 +2553,6 @@ babel-plugin-istanbul@^6.1.1: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.0.2.tgz#9307d03a633be6fc4b1a6bc5c3a87e22bd01dd3b" - integrity sha512-Kizhn/ZL+68ZQHxSnHyuvJv8IchXD62KQxV77TBDV/xoBFBOfgRAk97GNs6hXdTTCiVES9nB2I6+7MXXrk5llQ== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.1.14" - "@types/babel__traverse" "^7.0.6" - babel-plugin-jest-hoist@^28.1.1: version "28.1.1" resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.1.tgz#5e055cdcc47894f28341f87f5e35aad2df680b11" @@ -2706,14 +2662,6 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.0.2.tgz#d8210fe4e46c1017e9fa13d7794b166e93aa9f89" - integrity sha512-sYzXIdgIXXroJTFeB3S6sNDWtlJ2dllCdTEsnZ65ACrMojj3hVNFRmnJ1HZtomGi+Be7aqpY/HJ92fr8OhKVkQ== - dependencies: - babel-plugin-jest-hoist "^28.0.2" - babel-preset-current-node-syntax "^1.0.0" - babel-preset-jest@^28.1.1: version "28.1.1" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.1.1.tgz#5b6e5e69f963eb2d70f739c607b8f723c0ee75e4" @@ -6603,25 +6551,6 @@ jest-get-type@^28.0.2: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-28.0.2.tgz#34622e628e4fdcd793d46db8a242227901fcf203" integrity sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA== -jest-haste-map@^28.1.0: - version "28.1.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.1.0.tgz#6c1ee2daf1c20a3e03dbd8e5b35c4d73d2349cf0" - integrity sha512-xyZ9sXV8PtKi6NCrJlmq53PyNVHzxmcfXNVvIRHpHmh1j/HChC4pwKgyjj7Z9us19JMw8PpQTJsFWOsIfT93Dw== - dependencies: - "@jest/types" "^28.1.0" - "@types/graceful-fs" "^4.1.3" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^28.0.2" - jest-util "^28.1.0" - jest-worker "^28.1.0" - micromatch "^4.0.4" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.3.2" - jest-haste-map@^28.1.1: version "28.1.1" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.1.1.tgz#471685f1acd365a9394745bb97c8fc16289adca3" @@ -6846,15 +6775,6 @@ jest-worker@^26.5.0: merge-stream "^2.0.0" supports-color "^7.0.0" -jest-worker@^28.1.0: - version "28.1.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.0.tgz#ced54757a035e87591e1208253a6e3aac1a855e5" - integrity sha512-ZHwM6mNwaWBR52Snff8ZvsCTqQsvhCxP/bT1I6T6DAnb6ygkshsyLQIMxFwHpYxht0HOoqt23JlC01viI7T03A== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - jest-worker@^28.1.1: version "28.1.1" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.1.tgz#3480c73247171dfd01eda77200f0063ab6a3bf28" @@ -7265,13 +7185,6 @@ makeerror@1.0.12: dependencies: tmpl "1.0.5" -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= - dependencies: - tmpl "1.0.x" - map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -10922,7 +10835,7 @@ tiny-warning@^1.0.0: resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== -tmpl@1.0.5, tmpl@1.0.x: +tmpl@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== @@ -11387,13 +11300,6 @@ w3c-xmlserializer@^3.0.0: dependencies: xml-name-validator "^4.0.0" -walker@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= - dependencies: - makeerror "1.0.x" - walker@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" From 50e261ff66991dd3b01a326d6cadb6c6acf6a20d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jun 2022 18:52:12 +0900 Subject: [PATCH 178/652] Bump docker/setup-qemu-action from 1 to 2 (#18676) Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 1 to 2. - [Release notes](https://github.com/docker/setup-qemu-action/releases) - [Commits](https://github.com/docker/setup-qemu-action/compare/v1...v2) --- updated-dependencies: - dependency-name: docker/setup-qemu-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build-image.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index ac2f777b5..6c75ec722 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: docker/setup-qemu-action@v1 + - uses: docker/setup-qemu-action@v2 - uses: docker/setup-buildx-action@v1 - uses: docker/login-action@v1 with: From 0aee67fa3536e98e91a331e61eca2f74e4f0ae62 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jun 2022 18:52:36 +0900 Subject: [PATCH 179/652] Bump docker/login-action from 1 to 2 (#18678) Bumps [docker/login-action](https://github.com/docker/login-action) from 1 to 2. - [Release notes](https://github.com/docker/login-action/releases) - [Commits](https://github.com/docker/login-action/compare/v1...v2) --- updated-dependencies: - dependency-name: docker/login-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build-image.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index 6c75ec722..df9643696 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -17,7 +17,7 @@ jobs: - uses: actions/checkout@v3 - uses: docker/setup-qemu-action@v2 - uses: docker/setup-buildx-action@v1 - - uses: docker/login-action@v1 + - uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} From 27f41768e8d66d97c8d705d764e534e52ea13af9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jun 2022 19:10:11 +0900 Subject: [PATCH 180/652] Bump sidekiq-unique-jobs from 7.1.24 to 7.1.25 (#18680) Bumps [sidekiq-unique-jobs](https://github.com/mhenrixon/sidekiq-unique-jobs) from 7.1.24 to 7.1.25. - [Release notes](https://github.com/mhenrixon/sidekiq-unique-jobs/releases) - [Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/blob/main/CHANGELOG.md) - [Commits](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v7.1.24...v7.1.25) --- updated-dependencies: - dependency-name: sidekiq-unique-jobs dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 43beba769..eb167e5a2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -611,7 +611,7 @@ GEM rufus-scheduler (~> 3.2) sidekiq (>= 4) tilt (>= 1.4.0) - sidekiq-unique-jobs (7.1.24) + sidekiq-unique-jobs (7.1.25) brpoplpush-redis_script (> 0.1.1, <= 2.0.0) concurrent-ruby (~> 1.0, >= 1.0.5) sidekiq (>= 5.0, < 8.0) From 327eed00767a08217c09addeddfed97c9b91c95f Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 21 Jun 2022 15:16:22 +0200 Subject: [PATCH 181/652] Fix suspicious sign-in mails never being sent (#18599) * Add tests * Fix suspicious sign-in mails never being sent --- app/controllers/auth/sessions_controller.rb | 9 ++++++- .../auth/sessions_controller_spec.rb | 26 +++++++++++++++++++ spec/fabricators/login_activity_fabricator.rb | 10 +++---- 3 files changed, 39 insertions(+), 6 deletions(-) diff --git a/app/controllers/auth/sessions_controller.rb b/app/controllers/auth/sessions_controller.rb index c4c8151e3..f9a55eb4b 100644 --- a/app/controllers/auth/sessions_controller.rb +++ b/app/controllers/auth/sessions_controller.rb @@ -7,11 +7,18 @@ class Auth::SessionsController < Devise::SessionsController skip_before_action :require_functional! skip_before_action :update_user_sign_in + prepend_before_action :check_suspicious!, only: [:create] + include TwoFactorAuthenticationConcern before_action :set_instance_presenter, only: [:new] before_action :set_body_classes + def check_suspicious! + user = find_user + @login_is_suspicious = suspicious_sign_in?(user) unless user.nil? + end + def create super do |resource| # We only need to call this if this hasn't already been @@ -142,7 +149,7 @@ class Auth::SessionsController < Devise::SessionsController user_agent: request.user_agent ) - UserMailer.suspicious_sign_in(user, request.remote_ip, request.user_agent, Time.now.utc).deliver_later! if suspicious_sign_in?(user) + UserMailer.suspicious_sign_in(user, request.remote_ip, request.user_agent, Time.now.utc).deliver_later! if @login_is_suspicious end def suspicious_sign_in?(user) diff --git a/spec/controllers/auth/sessions_controller_spec.rb b/spec/controllers/auth/sessions_controller_spec.rb index 1b8fd0b7b..d3db7aa1a 100644 --- a/spec/controllers/auth/sessions_controller_spec.rb +++ b/spec/controllers/auth/sessions_controller_spec.rb @@ -119,6 +119,32 @@ RSpec.describe Auth::SessionsController, type: :controller do end end + context 'using a valid password on a previously-used account with a new IP address' do + let(:previous_ip) { '1.2.3.4' } + let(:current_ip) { '4.3.2.1' } + + let!(:previous_login) { Fabricate(:login_activity, user: user, ip: previous_ip) } + + before do + allow_any_instance_of(ActionDispatch::Request).to receive(:remote_ip).and_return(current_ip) + allow(UserMailer).to receive(:suspicious_sign_in).and_return(double('email', 'deliver_later!': nil)) + user.update(current_sign_in_at: 1.month.ago) + post :create, params: { user: { email: user.email, password: user.password } } + end + + it 'redirects to home' do + expect(response).to redirect_to(root_path) + end + + it 'logs the user in' do + expect(controller.current_user).to eq user + end + + it 'sends a suspicious sign-in mail' do + expect(UserMailer).to have_received(:suspicious_sign_in).with(user, current_ip, anything, anything) + end + end + context 'using email with uppercase letters' do before do post :create, params: { user: { email: user.email.upcase, password: user.password } } diff --git a/spec/fabricators/login_activity_fabricator.rb b/spec/fabricators/login_activity_fabricator.rb index 931d3082c..686fd6483 100644 --- a/spec/fabricators/login_activity_fabricator.rb +++ b/spec/fabricators/login_activity_fabricator.rb @@ -1,8 +1,8 @@ Fabricator(:login_activity) do user - strategy 'password' - success true - failure_reason nil - ip { Faker::Internet.ip_v4_address } - user_agent { Faker::Internet.user_agent } + authentication_method 'password' + success true + failure_reason nil + ip { Faker::Internet.ip_v4_address } + user_agent { Faker::Internet.user_agent } end From 9134ed63f3250fb69ddf3f5a39e1222e4a904e49 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Jun 2022 11:35:39 +0900 Subject: [PATCH 182/652] Bump docker/setup-buildx-action from 1 to 2 (#18677) Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 1 to 2. - [Release notes](https://github.com/docker/setup-buildx-action/releases) - [Commits](https://github.com/docker/setup-buildx-action/compare/v1...v2) --- updated-dependencies: - dependency-name: docker/setup-buildx-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build-image.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index df9643696..157c2fcde 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -16,7 +16,7 @@ jobs: steps: - uses: actions/checkout@v3 - uses: docker/setup-qemu-action@v2 - - uses: docker/setup-buildx-action@v1 + - uses: docker/setup-buildx-action@v2 - uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} From 47f2ff617ded1c3cc523e6bb803e26a0e6dd4103 Mon Sep 17 00:00:00 2001 From: tateisu Date: Thu, 23 Jun 2022 08:44:27 +0900 Subject: [PATCH 183/652] use Notification::TYPES for api push subscription alerts (#18709) --- app/controllers/api/v1/push/subscriptions_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/api/v1/push/subscriptions_controller.rb b/app/controllers/api/v1/push/subscriptions_controller.rb index 47f2e6440..7148d63a4 100644 --- a/app/controllers/api/v1/push/subscriptions_controller.rb +++ b/app/controllers/api/v1/push/subscriptions_controller.rb @@ -52,6 +52,6 @@ class Api::V1::Push::SubscriptionsController < Api::BaseController def data_params return {} if params[:data].blank? - params.require(:data).permit(:policy, alerts: [:follow, :follow_request, :favourite, :reblog, :mention, :poll, :status]) + params.require(:data).permit(:policy, alerts: Notification::TYPES) end end From 65ad58984808c482de60894f4210a5595bd96eb2 Mon Sep 17 00:00:00 2001 From: mayaeh Date: Fri, 24 Jun 2022 06:08:52 +0900 Subject: [PATCH 184/652] Fixed the setting page's logo that is not displayed on the smartphone (#18710) --- app/javascript/styles/mastodon/admin.scss | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index f83d6424a..66e2997f1 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -75,6 +75,13 @@ $content-width: 840px; height: 100px; } + .logo--wordmark { + display: inherit; + margin: inherit; + width: inherit; + height: 20px; + } + @media screen and (max-width: $no-columns-breakpoint) { & > a:first-child { display: none; From 6c2d3038f421a94171594c70d490daeec1e1a2d7 Mon Sep 17 00:00:00 2001 From: Jeong Arm Date: Fri, 24 Jun 2022 06:09:32 +0900 Subject: [PATCH 185/652] Fix CDN_HOST not affected on full_asset_url (#18662) * Fix CDN_HOST not affected to assets url * Fix typo --- app/helpers/routing_helper.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/helpers/routing_helper.rb b/app/helpers/routing_helper.rb index f95f46a56..0d5a8505a 100644 --- a/app/helpers/routing_helper.rb +++ b/app/helpers/routing_helper.rb @@ -16,7 +16,11 @@ module RoutingHelper def full_asset_url(source, **options) source = ActionController::Base.helpers.asset_url(source, **options) unless use_storage? - URI.join(root_url, source).to_s + URI.join(asset_host, source).to_s + end + + def asset_host + Rails.configuration.action_controller.asset_host || root_url end def full_pack_url(source, **options) From 9c571a95db125aa2cbf31d1406d4327032ce9111 Mon Sep 17 00:00:00 2001 From: Takeshi Umeda Date: Fri, 24 Jun 2022 06:10:03 +0900 Subject: [PATCH 186/652] Fix missing , (#18660) --- app/lib/activitypub/parser/media_attachment_parser.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/lib/activitypub/parser/media_attachment_parser.rb b/app/lib/activitypub/parser/media_attachment_parser.rb index 30bea1f0e..656be84b7 100644 --- a/app/lib/activitypub/parser/media_attachment_parser.rb +++ b/app/lib/activitypub/parser/media_attachment_parser.rb @@ -50,7 +50,7 @@ class ActivityPub::Parser::MediaAttachmentParser components = begin blurhash = @json['blurhash'] - if blurhash.present? && /^[\w#$%*+-.:;=?@\[\]^{|}~]+$/.match?(blurhash) + if blurhash.present? && /^[\w#$%*+,-.:;=?@\[\]^{|}~]+$/.match?(blurhash) Blurhash.components(blurhash) end end From 35588d09e2fb720542f45fcc3a75c9c7c9f8d0a4 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 23 Jun 2022 23:12:01 +0200 Subject: [PATCH 187/652] Add /api/v1/admin/domain_allows (#18668) - `GET /api/v1/admin/domain_allows` lists allowed domains - `GET /api/v1/admin/domain_allows/:id` shows one by ID - `DELETE /api/v1/admin/domain_allows/:id` deletes a given domain from the list of allowed domains - `POST /api/v1/admin/domain_allows` to allow a new domain: if that domain is already allowed, the existing DomainAllow will be returned --- .../api/v1/admin/domain_allows_controller.rb | 95 ++++++++++++++ app/models/domain_allow.rb | 1 + app/policies/domain_allow_policy.rb | 8 ++ .../rest/admin/domain_allow_serializer.rb | 9 ++ config/routes.rb | 1 + .../v1/admin/domain_allows_controller_spec.rb | 118 ++++++++++++++++++ 6 files changed, 232 insertions(+) create mode 100644 app/controllers/api/v1/admin/domain_allows_controller.rb create mode 100644 app/serializers/rest/admin/domain_allow_serializer.rb create mode 100644 spec/controllers/api/v1/admin/domain_allows_controller_spec.rb diff --git a/app/controllers/api/v1/admin/domain_allows_controller.rb b/app/controllers/api/v1/admin/domain_allows_controller.rb new file mode 100644 index 000000000..838978ddb --- /dev/null +++ b/app/controllers/api/v1/admin/domain_allows_controller.rb @@ -0,0 +1,95 @@ +# frozen_string_literal: true + +class Api::V1::Admin::DomainAllowsController < Api::BaseController + include Authorization + include AccountableConcern + + LIMIT = 100 + + before_action -> { authorize_if_got_token! :'admin:read', :'admin:read:domain_allows' }, only: [:index, :show] + before_action -> { authorize_if_got_token! :'admin:write', :'admin:write:domain_allows' }, except: [:index, :show] + before_action :require_staff! + before_action :set_domain_allows, only: :index + before_action :set_domain_allow, only: [:show, :destroy] + + after_action :insert_pagination_headers, only: :index + + PAGINATION_PARAMS = %i(limit).freeze + + def create + authorize :domain_allow, :create? + + @domain_allow = DomainAllow.find_by(resource_params) + + if @domain_allow.nil? + @domain_allow = DomainAllow.create!(resource_params) + log_action :create, @domain_allow + end + + render json: @domain_allow, serializer: REST::Admin::DomainAllowSerializer + end + + def index + authorize :domain_allow, :index? + render json: @domain_allows, each_serializer: REST::Admin::DomainAllowSerializer + end + + def show + authorize @domain_allow, :show? + render json: @domain_allow, serializer: REST::Admin::DomainAllowSerializer + end + + def destroy + authorize @domain_allow, :destroy? + UnallowDomainService.new.call(@domain_allow) + log_action :destroy, @domain_allow + render json: @domain_allow, serializer: REST::Admin::DomainAllowSerializer + end + + private + + def set_domain_allows + @domain_allows = filtered_domain_allows.order(id: :desc).to_a_paginated_by_id(limit_param(LIMIT), params_slice(:max_id, :since_id, :min_id)) + end + + def set_domain_allow + @domain_allow = DomainAllow.find(params[:id]) + end + + def filtered_domain_allows + # TODO: no filtering yet + DomainAllow.all + end + + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + + def next_path + api_v1_admin_domain_allows_url(pagination_params(max_id: pagination_max_id)) if records_continue? + end + + def prev_path + api_v1_admin_domain_allows_url(pagination_params(min_id: pagination_since_id)) unless @domain_allows.empty? + end + + def pagination_max_id + @domain_allows.last.id + end + + def pagination_since_id + @domain_allows.first.id + end + + def records_continue? + @domain_allows.size == limit_param(LIMIT) + end + + def pagination_params(core_params) + params.slice(*PAGINATION_PARAMS).permit(*PAGINATION_PARAMS).merge(core_params) + end + + def resource_params + params.permit(:domain) + end +end diff --git a/app/models/domain_allow.rb b/app/models/domain_allow.rb index 4b0a89c18..6aa9267fe 100644 --- a/app/models/domain_allow.rb +++ b/app/models/domain_allow.rb @@ -11,6 +11,7 @@ # class DomainAllow < ApplicationRecord + include Paginable include DomainNormalizable include DomainMaterializable diff --git a/app/policies/domain_allow_policy.rb b/app/policies/domain_allow_policy.rb index 5030453bb..7a5b5d780 100644 --- a/app/policies/domain_allow_policy.rb +++ b/app/policies/domain_allow_policy.rb @@ -1,6 +1,14 @@ # frozen_string_literal: true class DomainAllowPolicy < ApplicationPolicy + def index? + admin? + end + + def show? + admin? + end + def create? admin? end diff --git a/app/serializers/rest/admin/domain_allow_serializer.rb b/app/serializers/rest/admin/domain_allow_serializer.rb new file mode 100644 index 000000000..ebdf33815 --- /dev/null +++ b/app/serializers/rest/admin/domain_allow_serializer.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class REST::Admin::DomainAllowSerializer < ActiveModel::Serializer + attributes :id, :domain, :created_at + + def id + object.id.to_s + end +end diff --git a/config/routes.rb b/config/routes.rb index 87833539f..1b9c50799 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -570,6 +570,7 @@ Rails.application.routes.draw do end end + resources :domain_allows, only: [:index, :show, :create, :destroy] resources :domain_blocks, only: [:index, :show, :update, :create, :destroy] namespace :trends do diff --git a/spec/controllers/api/v1/admin/domain_allows_controller_spec.rb b/spec/controllers/api/v1/admin/domain_allows_controller_spec.rb new file mode 100644 index 000000000..edee3ab6c --- /dev/null +++ b/spec/controllers/api/v1/admin/domain_allows_controller_spec.rb @@ -0,0 +1,118 @@ +require 'rails_helper' + +RSpec.describe Api::V1::Admin::DomainAllowsController, type: :controller do + render_views + + let(:role) { 'admin' } + let(:user) { Fabricate(:user, role: role) } + let(:scopes) { 'admin:read admin:write' } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } + + before do + allow(controller).to receive(:doorkeeper_token) { token } + end + + shared_examples 'forbidden for wrong scope' do |wrong_scope| + let(:scopes) { wrong_scope } + + it 'returns http forbidden' do + expect(response).to have_http_status(403) + end + end + + shared_examples 'forbidden for wrong role' do |wrong_role| + let(:role) { wrong_role } + + it 'returns http forbidden' do + expect(response).to have_http_status(403) + end + end + + describe 'GET #index' do + let!(:domain_allow) { Fabricate(:domain_allow) } + + before do + get :index + end + + it_behaves_like 'forbidden for wrong scope', 'write:statuses' + it_behaves_like 'forbidden for wrong role', 'user' + it_behaves_like 'forbidden for wrong role', 'moderator' + + it 'returns http success' do + expect(response).to have_http_status(200) + end + + it 'returns the expected domain allows' do + json = body_as_json + expect(json.length).to eq 1 + expect(json[0][:id].to_i).to eq domain_allow.id + end + end + + describe 'GET #show' do + let!(:domain_allow) { Fabricate(:domain_allow) } + + before do + get :show, params: { id: domain_allow.id } + end + + it_behaves_like 'forbidden for wrong scope', 'write:statuses' + it_behaves_like 'forbidden for wrong role', 'user' + it_behaves_like 'forbidden for wrong role', 'moderator' + + it 'returns http success' do + expect(response).to have_http_status(200) + end + + it 'returns expected domain name' do + json = body_as_json + expect(json[:domain]).to eq domain_allow.domain + end + end + + describe 'DELETE #destroy' do + let!(:domain_allow) { Fabricate(:domain_allow) } + + before do + delete :destroy, params: { id: domain_allow.id } + end + + it_behaves_like 'forbidden for wrong scope', 'write:statuses' + it_behaves_like 'forbidden for wrong role', 'user' + it_behaves_like 'forbidden for wrong role', 'moderator' + + it 'returns http success' do + expect(response).to have_http_status(200) + end + + it 'deletes the block' do + expect(DomainAllow.find_by(id: domain_allow.id)).to be_nil + end + end + + describe 'POST #create' do + let!(:domain_allow) { Fabricate(:domain_allow, domain: 'example.com') } + + before do + post :create, params: { domain: 'foo.bar.com' } + end + + it_behaves_like 'forbidden for wrong scope', 'write:statuses' + it_behaves_like 'forbidden for wrong role', 'user' + it_behaves_like 'forbidden for wrong role', 'moderator' + + it 'returns http success' do + expect(response).to have_http_status(200) + end + + it 'returns expected domain name' do + json = body_as_json + expect(json[:domain]).to eq 'foo.bar.com' + end + + it 'creates a domain block' do + expect(DomainAllow.find_by(domain: 'foo.bar.com')).to_not be_nil + end + end +end From 829b978a89f71ecc76286be510d5ab70642ff014 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 26 Jun 2022 05:08:08 +0200 Subject: [PATCH 188/652] New Crowdin updates (#18671) * New translations en.json (Esperanto) * New translations en.json (Esperanto) * New translations en.json (Esperanto) * New translations en.yml (Korean) * New translations simple_form.en.yml (Korean) * New translations activerecord.en.yml (Korean) * New translations en.yml (German) * New translations en.yml (Dutch) * New translations simple_form.en.yml (Dutch) * New translations activerecord.en.yml (Dutch) * New translations en.yml (Dutch) * New translations en.yml (Icelandic) * New translations en.yml (Icelandic) * New translations simple_form.en.yml (Icelandic) * New translations activerecord.en.yml (Icelandic) * New translations en.yml (Thai) * New translations en.json (Thai) * New translations simple_form.en.yml (Thai) * New translations activerecord.en.yml (Thai) * New translations activerecord.en.yml (Indonesian) * New translations en.yml (Turkish) * New translations en.json (Galician) * New translations en.yml (Slovenian) * New translations en.yml (Galician) * New translations en.json (Esperanto) * New translations en.yml (Esperanto) * New translations en.yml (Esperanto) * New translations en.json (Esperanto) * New translations en.json (Esperanto) * New translations en.yml (Galician) * New translations en.json (Esperanto) * New translations en.json (Esperanto) * New translations en.json (Esperanto) * New translations simple_form.en.yml (Galician) * New translations en.json (Esperanto) * New translations en.json (Esperanto) * New translations en.yml (Esperanto) * New translations en.yml (Esperanto) * New translations en.json (Esperanto) * New translations en.yml (Ukrainian) * New translations en.yml (Ukrainian) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/eo.json | 120 ++++++++++++------------ app/javascript/mastodon/locales/gl.json | 2 +- app/javascript/mastodon/locales/th.json | 2 +- config/locales/activerecord.id.yml | 8 ++ config/locales/activerecord.is.yml | 8 ++ config/locales/activerecord.ko.yml | 8 ++ config/locales/activerecord.nl.yml | 8 ++ config/locales/activerecord.th.yml | 8 ++ config/locales/eo.yml | 16 ++-- config/locales/gl.yml | 4 +- config/locales/is.yml | 12 +++ config/locales/ko.yml | 11 +++ config/locales/nl.yml | 5 +- config/locales/simple_form.gl.yml | 4 +- config/locales/simple_form.is.yml | 6 ++ config/locales/simple_form.ko.yml | 6 ++ config/locales/simple_form.nl.yml | 4 + config/locales/simple_form.th.yml | 4 + config/locales/th.yml | 15 +++ config/locales/tr.yml | 3 + config/locales/uk.yml | 16 ++++ 21 files changed, 195 insertions(+), 75 deletions(-) diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 236d25496..999f34be6 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -7,13 +7,13 @@ "account.block_domain": "Bloki domajnon {domain}", "account.blocked": "Blokita", "account.browse_more_on_origin_server": "Vidi pli ĉe la originala profilo", - "account.cancel_follow_request": "Nuligi peton de sekvado", + "account.cancel_follow_request": "Nuligi la demandon de sekvado", "account.direct": "Rekte mesaĝi @{name}", "account.disable_notifications": "Ĉesu sciigi min kiam @{name} mesaĝi", "account.domain_blocked": "Domajno blokita", - "account.edit_profile": "Redakti profilon", - "account.enable_notifications": "Sciigi min kiam @{name} mesaĝi", - "account.endorse": "Montri en profilo", + "account.edit_profile": "Redakti la profilon", + "account.enable_notifications": "Sciigi min kiam @{name} mesaĝas", + "account.endorse": "Rekomendi ĉe via profilo", "account.follow": "Sekvi", "account.followers": "Sekvantoj", "account.followers.empty": "Ankoraŭ neniu sekvas tiun uzanton.", @@ -22,7 +22,7 @@ "account.following_counter": "{count, plural, one {{counter} Sekvato} other {{counter} Sekvatoj}}", "account.follows.empty": "Tiu uzanto ankoraŭ ne sekvas iun.", "account.follows_you": "Sekvas vin", - "account.hide_reblogs": "Kaŝi plusendojn de @{name}", + "account.hide_reblogs": "Kaŝi la plusendojn de @{name}", "account.joined": "Kuniĝis {date}", "account.link_verified_on": "La posedanto de tiu ligilo estis kontrolita je {date}", "account.locked_info": "La privateco de tiu konto estas elektita kiel fermita. La posedanto povas mane akcepti tiun, kiu povas sekvi rin.", @@ -34,7 +34,7 @@ "account.muted": "Silentigita", "account.posts": "Mesaĝoj", "account.posts_with_replies": "Mesaĝoj kaj respondoj", - "account.report": "Signali @{name}", + "account.report": "Raporti @{name}", "account.requested": "Atendo de aprobo. Alklaku por nuligi peton de sekvado", "account.share": "Kundividi la profilon de @{name}", "account.show_reblogs": "Montri la plusendojn de @{name}", @@ -42,62 +42,62 @@ "account.unblock": "Malbloki @{name}", "account.unblock_domain": "Malbloki {domain}", "account.unblock_short": "Malbloki", - "account.unendorse": "Ne montri en profilo", + "account.unendorse": "Ne rekomendi ĉe la profilo", "account.unfollow": "Ne plu sekvi", - "account.unmute": "Malsilentigi @{name}", - "account.unmute_notifications": "Malsilentigi sciigojn de @{name}", - "account.unmute_short": "Malsilentigi", - "account_note.placeholder": "Alklaku por aldoni noton", + "account.unmute": "Ne plu silentigi @{name}", + "account.unmute_notifications": "Reebligi la sciigojn de @{name}", + "account.unmute_short": "Ne plu silentigi", + "account_note.placeholder": "Klaku por aldoni noton", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Averaĝa", - "admin.dashboard.retention.cohort": "Registriĝo monato", + "admin.dashboard.retention.cohort": "Monato de registriĝo", "admin.dashboard.retention.cohort_size": "Novaj uzantoj", "alert.rate_limited.message": "Bonvolu reprovi post {retry_time, time, medium}.", "alert.rate_limited.title": "Mesaĝkvante limigita", "alert.unexpected.message": "Neatendita eraro okazis.", - "alert.unexpected.title": "Ups!", + "alert.unexpected.title": "Aj!", "announcement.announcement": "Anonco", "attachments_list.unprocessed": "(neprilaborita)", "autosuggest_hashtag.per_week": "{count} semajne", "boost_modal.combo": "Vi povas premi {combo} por preterpasi sekvafoje", "bundle_column_error.body": "Io misfunkciis en la ŝargado de ĉi tiu elemento.", - "bundle_column_error.retry": "Bonvolu reprovi", - "bundle_column_error.title": "Reta eraro", + "bundle_column_error.retry": "Provu refoje", + "bundle_column_error.title": "Eraro de reto", "bundle_modal_error.close": "Fermi", "bundle_modal_error.message": "Io misfunkciis en la ŝargado de ĉi tiu elemento.", - "bundle_modal_error.retry": "Bonvolu reprovi", + "bundle_modal_error.retry": "Provu refoje", "column.blocks": "Blokitaj uzantoj", "column.bookmarks": "Legosignoj", "column.community": "Loka templinio", "column.direct": "Rektaj mesaĝoj", "column.directory": "Trarigardi profilojn", "column.domain_blocks": "Blokitaj domajnoj", - "column.favourites": "Stelumoj", + "column.favourites": "Preferaĵoj", "column.follow_requests": "Demandoj de sekvado", "column.home": "Hejmo", "column.lists": "Listoj", "column.mutes": "Silentigitaj uzantoj", "column.notifications": "Sciigoj", "column.pins": "Alpinglitaj mesaĝoj", - "column.public": "Fratara templinio", + "column.public": "Federata templinio", "column_back_button.label": "Reveni", - "column_header.hide_settings": "Kaŝi agordojn", + "column_header.hide_settings": "Kaŝi la agordojn", "column_header.moveLeft_settings": "Movi kolumnon maldekstren", "column_header.moveRight_settings": "Movi kolumnon dekstren", "column_header.pin": "Alpingli", - "column_header.show_settings": "Montri agordojn", + "column_header.show_settings": "Montri la agordojn", "column_header.unpin": "Depingli", - "column_subheading.settings": "Agordado", + "column_subheading.settings": "Agordoj", "community.column_settings.local_only": "Nur loka", "community.column_settings.media_only": "Nur aŭdovidaĵoj", - "community.column_settings.remote_only": "Nur malproksima", + "community.column_settings.remote_only": "Nur fora", "compose.language.change": "Ŝanĝi lingvon", "compose.language.search": "Serĉi lingvojn...", "compose_form.direct_message_warning_learn_more": "Lerni pli", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "La mesaĵoj en Mastodono ne estas ĉifrita de tutvojo. Ne kundividu sentemajn informojn ĉe Mastodono.", "compose_form.hashtag_warning": "Ĉi tiu mesaĝo ne estos listigita per ajna kradvorto. Nur publikaj mesaĝoj estas serĉeblaj per kradvortoj.", - "compose_form.lock_disclaimer": "Via konta ne estas {locked}. Iu ajn povas sekvi vin por vidi viajn mesaĝojn, kiuj estas nur por sekvantoj.", + "compose_form.lock_disclaimer": "Via konto ne estas {locked}. Iu ajn povas sekvi vin por vidi viajn mesaĝojn nur al la sekvantoj.", "compose_form.lock_disclaimer.lock": "ŝlosita", "compose_form.placeholder": "Kion vi pensas?", "compose_form.poll.add_option": "Aldoni elekteblon", @@ -116,7 +116,7 @@ "compose_form.spoiler.unmarked": "Teksto ne kaŝita", "compose_form.spoiler_placeholder": "Skribu vian averton ĉi tie", "confirmation_modal.cancel": "Nuligi", - "confirmations.block.block_and_report": "Bloki kaj signali", + "confirmations.block.block_and_report": "Bloki kaj raporti", "confirmations.block.confirm": "Bloki", "confirmations.block.message": "Ĉu vi certas, ke vi volas bloki {name}?", "confirmations.delete.confirm": "Forigi", @@ -124,7 +124,7 @@ "confirmations.delete_list.confirm": "Forigi", "confirmations.delete_list.message": "Ĉu vi certas, ke vi volas porĉiame forigi ĉi tiun liston?", "confirmations.discard_edit_media.confirm": "Ne konservi", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.message": "Vi havas nekonservitan ŝanĝon de la priskribo aŭ de la antaŭvido de aŭdvidaĵo, ĉu vi forigu ĝin?", "confirmations.domain_block.confirm": "Bloki la tutan domajnon", "confirmations.domain_block.message": "Ĉu vi vere, vere certas, ke vi volas tute bloki {domain}? Plej ofte, trafa blokado kaj silentigado sufiĉas kaj preferindas. Vi ne vidos enhavon de tiu domajno en publika templinio aŭ en viaj sciigoj. Viaj sekvantoj de tiu domajno estos forigitaj.", "confirmations.logout.confirm": "Adiaŭi", @@ -133,7 +133,7 @@ "confirmations.mute.explanation": "Ĉi-tio kaŝos mesaĝojn el ili kaj mesaĝojn kiuj mencias ilin, sed ili ankoraŭ rajtos vidi viajn mesaĝojn kaj sekvi vin.", "confirmations.mute.message": "Ĉu vi certas, ke vi volas silentigi {name}?", "confirmations.redraft.confirm": "Forigi kaj reskribi", - "confirmations.redraft.message": "Ĉu vi certas ke vi volas forigi tiun mesaĝon kaj reskribi ĝin? Ĉiuj diskonigoj kaj stelumoj estos perditaj, kaj respondoj al la originala mesaĝo estos senparentaj.", + "confirmations.redraft.message": "Ĉu vi certas ke vi volas forigi kaj reskribi la mesaĝon? Ĝiaj preferitaĵoj kaj ĝiaj plusendoj estos perditaj, kaj la respondoj al la originala mesaĝo estos orfaj.", "confirmations.reply.confirm": "Respondi", "confirmations.reply.message": "Respondi nun anstataŭigos la mesaĝon, kiun vi nun skribas. Ĉu vi certas, ke vi volas daŭrigi?", "confirmations.unfollow.confirm": "Ne plu sekvi", @@ -172,8 +172,8 @@ "empty_column.direct": "Vi ankoraŭ ne havas rektan mesaĝon. Kiam vi sendos aŭ ricevos iun, ĝi aperos ĉi tie.", "empty_column.domain_blocks": "Ankoraŭ neniu domajno estas blokita.", "empty_column.explore_statuses": "Nenio tendencas nun. Rekontrolu poste!", - "empty_column.favourited_statuses": "Vi ankoraŭ ne stelumis mesaĝon. Kiam vi stelumos iun, tiu aperos ĉi tie.", - "empty_column.favourites": "Ankoraŭ neniu stelumis tiun mesaĝon. Kiam iu faros tion, tiu aperos ĉi tie.", + "empty_column.favourited_statuses": "Vi ankoraŭ ne havas mesaĝon en la preferaĵoj. Kiam vi aldonas ion, ĝi aperos ĉi tie.", + "empty_column.favourites": "Ankoraŭ neniu preferis la mesaĝon. Kiam iu faros ĉi tion, ili aperos ĉi tie.", "empty_column.follow_recommendations": "Ŝajnas, ke neniuj sugestoj povis esti generitaj por vi. Vi povas provi uzi serĉon por serĉi homojn, kiujn vi eble konas, aŭ esplori tendencajn kradvortojn.", "empty_column.follow_requests": "Vi ne ankoraŭ havas iun peton de sekvado. Kiam vi ricevos unu, ĝi aperos ĉi tie.", "empty_column.hashtag": "Ankoraŭ estas nenio per ĉi tiu kradvorto.", @@ -198,10 +198,10 @@ "explore.trending_tags": "Kradvortoj", "follow_recommendations.done": "Farita", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", - "follow_recommendations.lead": "La mesaĝoj de personoj kiujn vi sekvas, aperos kronologie en via abonfluo. Ne timu erari, vi povas ĉesi sekvi facile iam ajn!", + "follow_recommendations.lead": "La mesaĝoj de personoj kiujn vi sekvas, kronologie aperos en via hejma templinio. Ne timu erari, vi povas ĉesi sekvi facile iam ajn!", "follow_request.authorize": "Rajtigi", "follow_request.reject": "Rifuzi", - "follow_requests.unlocked_explanation": "Kvankam via konto ne estas ŝlosita, la teamo de {domain} pensis ke vi eble volas kontroli la demandojn de sekvado de ĉi tiuj kontoj permane.", + "follow_requests.unlocked_explanation": "Kvankam via konto ne estas ŝlosita, la teamo de {domain} pensis ke vi eble volas permane kontroli la demandojn de sekvado de ĉi tiuj kontoj.", "generic.saved": "Konservita", "getting_started.developers": "Programistoj", "getting_started.directory": "Profilujo", @@ -237,9 +237,9 @@ "keyboard_shortcuts.direct": "malfermi la kolumnon de rektaj mesaĝoj", "keyboard_shortcuts.down": "iri suben en la listo", "keyboard_shortcuts.enter": "malfermi mesaĝon", - "keyboard_shortcuts.favourite": "stelumi", - "keyboard_shortcuts.favourites": "malfermi la liston de stelumoj", - "keyboard_shortcuts.federated": "Malfermi la frataran templinion", + "keyboard_shortcuts.favourite": "Aldoni la mesaĝon al preferaĵoj", + "keyboard_shortcuts.favourites": "Malfermi la liston de preferaĵoj", + "keyboard_shortcuts.federated": "Malfermi la federatan templinion", "keyboard_shortcuts.heading": "Klavaraj mallongigoj", "keyboard_shortcuts.home": "Malfermi la hejman templinion", "keyboard_shortcuts.hotkey": "Rapidklavo", @@ -279,7 +279,7 @@ "lists.replies_policy.followed": "Iu sekvanta uzanto", "lists.replies_policy.list": "Membroj de la listo", "lists.replies_policy.none": "Neniu", - "lists.replies_policy.title": "Montri respondon al:", + "lists.replies_policy.title": "Montri respondojn al:", "lists.search": "Serĉi inter la homoj, kiujn vi sekvas", "lists.subheading": "Viaj listoj", "load_pending": "{count,plural, one {# nova elemento} other {# novaj elementoj}}", @@ -312,10 +312,10 @@ "navigation_bar.personal": "Persone", "navigation_bar.pins": "Alpinglitaj mesaĝoj", "navigation_bar.preferences": "Preferoj", - "navigation_bar.public_timeline": "Fratara templinio", + "navigation_bar.public_timeline": "Federata templinio", "navigation_bar.security": "Sekureco", "notification.admin.sign_up": "{name} registris", - "notification.favourite": "{name} stelumis vian mesaĝon", + "notification.favourite": "{name} preferis vian mesaĝon", "notification.follow": "{name} eksekvis vin", "notification.follow_request": "{name} petis sekvi vin", "notification.mention": "{name} menciis vin", @@ -328,10 +328,10 @@ "notifications.clear_confirmation": "Ĉu vi certas, ke vi volas porĉiame forviŝi ĉiujn viajn sciigojn?", "notifications.column_settings.admin.sign_up": "Novaj registriĝoj:", "notifications.column_settings.alert": "Retumilaj sciigoj", - "notifications.column_settings.favourite": "Stelumoj:", + "notifications.column_settings.favourite": "Preferaĵoj:", "notifications.column_settings.filter_bar.advanced": "Montri ĉiujn kategoriojn", "notifications.column_settings.filter_bar.category": "Rapida filtra breto", - "notifications.column_settings.filter_bar.show_bar": "Montru filtrilon", + "notifications.column_settings.filter_bar.show_bar": "Montri la breton de filtrilo", "notifications.column_settings.follow": "Novaj sekvantoj:", "notifications.column_settings.follow_request": "Novaj petoj de sekvado:", "notifications.column_settings.mention": "Mencioj:", @@ -346,7 +346,7 @@ "notifications.column_settings.update": "Redaktoj:", "notifications.filter.all": "Ĉiuj", "notifications.filter.boosts": "Plusendoj", - "notifications.filter.favourites": "Stelumoj", + "notifications.filter.favourites": "Preferaĵoj", "notifications.filter.follows": "Sekvoj", "notifications.filter.mentions": "Mencioj", "notifications.filter.polls": "Balotenketaj rezultoj", @@ -381,7 +381,7 @@ "privacy.unlisted.short": "Nelistigita", "refresh": "Refreŝigu", "regeneration_indicator.label": "Ŝargado…", - "regeneration_indicator.sublabel": "Via hejma fluo pretiĝas!", + "regeneration_indicator.sublabel": "Via abonfluo estas preparata!", "relative_time.days": "{number}t", "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", @@ -397,18 +397,18 @@ "report.block": "Bloki", "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Aliaj", - "report.categories.spam": "Spamo", + "report.categories.spam": "Trudaĵo", "report.categories.violation": "Content violates one or more server rules", "report.category.subtitle": "Elektu la plej bonan kongruon", "report.category.title": "Diru al ni kio okazas pri ĉi tiu {type}", "report.category.title_account": "profilo", "report.category.title_status": "afiŝo", "report.close": "Farita", - "report.comment.title": "Is there anything else you think we should know?", + "report.comment.title": "Ĉu estas io alia kion vi pensas ke ni devas scii?", "report.forward": "Plusendi al {target}", - "report.forward_hint": "La konto estas en alia servilo. Ĉu sendi sennomigitan kopion de la signalo ankaŭ tien?", + "report.forward_hint": "La konto estas de alia servilo. Ĉu vi volas sendi anoniman kopion de la informo ankaŭ al tie?", "report.mute": "Silentigi", - "report.mute_explanation": "Vi ne vidos iliajn afiŝojn. Ili ankoraŭ povas sekvi vin kaj vidi viajn afiŝojn, kaj ne scios ke si estas silentigitaj.", + "report.mute_explanation": "Vi ne vidos iliajn afiŝojn. Ili ankoraŭ povas sekvi vin kaj vidi viajn afiŝojn, kaj ne scios ke ili estas silentigitaj.", "report.next": "Sekva", "report.placeholder": "Pliaj komentoj", "report.reasons.dislike": "Mi ne ŝatas ĝin", @@ -417,20 +417,20 @@ "report.reasons.other_description": "La problemo ne taŭgas en aliaj kategorioj", "report.reasons.spam": "Ĝi estas trudaĵo", "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", - "report.reasons.violation": "Ĝi malrespektas servilajn regulojn", + "report.reasons.violation": "Ĝi malobservas la regulojn de la servilo", "report.reasons.violation_description": "You are aware that it breaks specific rules", "report.rules.subtitle": "Elektu ĉiujn, kiuj validas", "report.rules.title": "Kiuj reguloj estas malobservataj?", "report.statuses.subtitle": "Elektu ĉiujn, kiuj validas", "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Sendi", - "report.target": "Signali {target}", + "report.target": "Raporto pri {target}", "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", "report.thanks.title": "Ĉu vi ne volas vidi ĉi tion?", "report.thanks.title_actionable": "Dankon pro raporti, ni esploros ĉi tion.", "report.unfollow": "Malsekvi @{name}", - "report.unfollow_explanation": "Vi estas sekvanta ĉi tiun konton. Por ne plu vidi ties afiŝojn en via hejma templinio, malsekvu ilin.", + "report.unfollow_explanation": "Vi sekvas ĉi tiun konton. Por ne plu vidi ĝiajn abonfluojn en via hejma templinio, ĉesu sekvi ĝin.", "search.placeholder": "Serĉi", "search_popout.search_format": "Detala serĉo", "search_popout.tips.full_text": "Simplaj tekstoj montras la mesaĝojn, kiujn vi skribis, stelumis, diskonigis, aŭ en kiuj vi estis menciita, sed ankaŭ kongruajn uzantnomojn, montratajn nomojn, kaj kradvortojn.", @@ -459,7 +459,7 @@ "status.edited": "Redaktita {date}", "status.edited_x_times": "Redactita {count, plural, one {{count} fojon} other {{count} fojojn}}", "status.embed": "Enkorpigi", - "status.favourite": "Stelumi", + "status.favourite": "Preferaĵo", "status.filtered": "Filtrita", "status.history.created": "{name} kreis {date}", "status.history.edited": "{name} redaktis {date}", @@ -469,8 +469,8 @@ "status.more": "Pli", "status.mute": "Silentigi @{name}", "status.mute_conversation": "Silentigi konversacion", - "status.open": "Grandigi ĉi tiun mesaĝon", - "status.pin": "Alpingli profile", + "status.open": "Disvolvi la mesaĝon", + "status.pin": "Alpingli al la profilo", "status.pinned": "Alpinglita mesaĝo", "status.read_more": "Legi pli", "status.reblog": "Plusendi", @@ -481,20 +481,20 @@ "status.remove_bookmark": "Forigi legosignon", "status.reply": "Respondi", "status.replyAll": "Respondi al la fadeno", - "status.report": "Signali @{name}", + "status.report": "Raporti @{name}", "status.sensitive_warning": "Tikla enhavo", - "status.share": "Diskonigi", - "status.show_less": "Malgrandigi", - "status.show_less_all": "Malgrandigi ĉiujn", - "status.show_more": "Grandigi", - "status.show_more_all": "Malfoldi ĉiun", - "status.show_thread": "Montri la fadenon", + "status.share": "Kundividi", + "status.show_less": "Montri malpli", + "status.show_less_all": "Montri malpli ĉiun", + "status.show_more": "Montri pli", + "status.show_more_all": "Montri pli ĉiun", + "status.show_thread": "Montri la mesaĝaron", "status.uncached_media_warning": "Nedisponebla", "status.unmute_conversation": "Malsilentigi la konversacion", "status.unpin": "Depingli de profilo", "suggestions.dismiss": "Forigi la proponon", "suggestions.header": "Vi povus interesiĝi pri…", - "tabs_bar.federated_timeline": "Fratara templinio", + "tabs_bar.federated_timeline": "Federata", "tabs_bar.home": "Hejmo", "tabs_bar.local_timeline": "Loka templinio", "tabs_bar.notifications": "Sciigoj", @@ -539,7 +539,7 @@ "video.close": "Fermi la videon", "video.download": "Elŝuti dosieron", "video.exit_fullscreen": "Eksigi plenekrana", - "video.expand": "Grandigi la videon", + "video.expand": "Pligrandigi la videon", "video.fullscreen": "Igi plenekrana", "video.hide": "Kaŝi la videon", "video.mute": "Silentigi", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 0a6aac287..01fd9a567 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -8,7 +8,7 @@ "account.blocked": "Bloqueada", "account.browse_more_on_origin_server": "Busca máis no perfil orixinal", "account.cancel_follow_request": "Desbotar solicitude de seguimento", - "account.direct": "Mensaxe directa @{name}", + "account.direct": "Mensaxe directa a @{name}", "account.disable_notifications": "Deixar de notificarme cando @{name} publica", "account.domain_blocked": "Dominio agochado", "account.edit_profile": "Editar perfil", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 5bc08533e..b4e85be06 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "เอาตัวเลือกนี้ออก", "compose_form.poll.switch_to_multiple": "เปลี่ยนการสำรวจความคิดเห็นเป็นอนุญาตหลายตัวเลือก", "compose_form.poll.switch_to_single": "เปลี่ยนการสำรวจความคิดเห็นเป็นอนุญาตตัวเลือกเดี่ยว", - "compose_form.publish": "Publish", + "compose_form.publish": "เผยแพร่", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "บันทึกการเปลี่ยนแปลง", "compose_form.sensitive.hide": "{count, plural, other {ทำเครื่องหมายสื่อว่าละเอียดอ่อน}}", diff --git a/config/locales/activerecord.id.yml b/config/locales/activerecord.id.yml index dc90c1322..88fdb3f75 100644 --- a/config/locales/activerecord.id.yml +++ b/config/locales/activerecord.id.yml @@ -21,6 +21,14 @@ id: username: invalid: hanya boleh berisi huruf, angka, dan garis bawah reserved: sudah dipesan + admin/webhook: + attributes: + url: + invalid: bukan URL valid + doorkeeper/application: + attributes: + website: + invalid: bukan URL valid status: attributes: reblog: diff --git a/config/locales/activerecord.is.yml b/config/locales/activerecord.is.yml index 8ecb02e74..75c18c6a3 100644 --- a/config/locales/activerecord.is.yml +++ b/config/locales/activerecord.is.yml @@ -21,6 +21,14 @@ is: username: invalid: má aðeins innihalda bókstafi, tölur og undirstrik reserved: er frátekið + admin/webhook: + attributes: + url: + invalid: er ekki gild vefslóð + doorkeeper/application: + attributes: + website: + invalid: er ekki gild vefslóð status: attributes: reblog: diff --git a/config/locales/activerecord.ko.yml b/config/locales/activerecord.ko.yml index 07f8a39f7..4db8d73af 100644 --- a/config/locales/activerecord.ko.yml +++ b/config/locales/activerecord.ko.yml @@ -21,6 +21,14 @@ ko: username: invalid: 영문자, 숫자, _만 사용 가능 reserved: 이미 예약되어 있습니다 + admin/webhook: + attributes: + url: + invalid: 올바른 URL이 아닙니다 + doorkeeper/application: + attributes: + website: + invalid: 올바른 URL이 아닙니다 status: attributes: reblog: diff --git a/config/locales/activerecord.nl.yml b/config/locales/activerecord.nl.yml index b5a122001..9d3adf290 100644 --- a/config/locales/activerecord.nl.yml +++ b/config/locales/activerecord.nl.yml @@ -21,6 +21,14 @@ nl: username: invalid: alleen letters, nummers en underscores reserved: gereserveerd + admin/webhook: + attributes: + url: + invalid: is een ongeldige URL + doorkeeper/application: + attributes: + website: + invalid: is een ongeldige URL status: attributes: reblog: diff --git a/config/locales/activerecord.th.yml b/config/locales/activerecord.th.yml index 26604ba5f..60908144f 100644 --- a/config/locales/activerecord.th.yml +++ b/config/locales/activerecord.th.yml @@ -21,6 +21,14 @@ th: username: invalid: ต้องมีเฉพาะตัวอักษร, ตัวเลข และขีดล่างเท่านั้น reserved: ถูกสงวนไว้ + admin/webhook: + attributes: + url: + invalid: ไม่ใช่ URL ที่ถูกต้อง + doorkeeper/application: + attributes: + website: + invalid: ไม่ใช่ URL ที่ถูกต้อง status: attributes: reblog: diff --git a/config/locales/eo.yml b/config/locales/eo.yml index d287fb590..9e1eaaffa 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -22,9 +22,9 @@ eo: federation_hint_html: Per konto ĉe %{instance}, vi povos sekvi homojn ĉe iu ajn Mastodon nodo kaj preter. get_apps: Provu telefonan aplikaĵon hosted_on: "%{domain} estas nodo de Mastodon" - instance_actor_flash: | - Ĉi tiu konto estas virtuala ulo uzata por reprezenti la servilon mem kaj ne iun apartan uzanton. - Ĝi estas uzata por frataraj celoj kaj ĝi ne devus esti blokita krom se vi volas bloki la tutan servilon, tiuokaze vi devus uzi domajnan blokadon. + instance_actor_flash: 'Ĉi tiu konto estas virtuala aganto uzata por reprezenti la servilon mem kaj neniun individuan uzanton. Ĝi estas uzata por celoj de la federaĵo kaj devas ne esti brokita se vi ne volas bloki la tutan servilon, tiuokaze vi devas uzi blokadon de domajno. + + ' learn_more: Lerni pli logout_before_registering: Vi jam salutis. privacy_policy: Privateca politiko @@ -179,8 +179,8 @@ eo: sensitized: markita tikla shared_inbox_url: URL de kunhavigita leterkesto show: - created_reports: Kreitaj signaloj - targeted_reports: Signalitaj de aliaj + created_reports: Kreitaj raportoj + targeted_reports: Raporitaj de alia silence: Kaŝi silenced: Silentigita statuses: Mesaĝoj @@ -1164,10 +1164,10 @@ eo: one: "%{count} voĉdono" other: "%{count} voĉdonoj" vote: Voĉdoni - show_more: Malfoldi + show_more: Montri pli show_newer: Montri pli novajn show_older: Montri pli malnovajn - show_thread: Montri la fadenon + show_thread: Montri la mesaĝaron sign_in_to_participate: Ensaluti por partopreni en la konversacio title: "%{name}: “%{quote}”" visibilities: @@ -1255,7 +1255,7 @@ eo: review_preferences_action: Ŝanĝi preferojn review_preferences_step: Estu certa ke vi agordis viajn preferojn, kiel kiujn retmesaĝojn vi ŝatus ricevi, aŭ kiun dekomencan privatecan nivelon vi ŝatus ke viaj mesaĝoj havu. Se tio ne ĝenas vin, vi povas ebligi aŭtomatan ekigon de GIF-oj. subject: Bonvenon en Mastodon - tip_federated_timeline: La fratara templinio estas antaŭvido de la reto de Mastodon. Sed ĝi enhavas nur homojn, kiuj estas sekvataj de aliaj homoj de via nodo, do ĝi ne estas kompleta. + tip_federated_timeline: La federata templinio estas rekta vido de la reto de Mastodon. Sed ĝi inkluzivas nur personojn kiujn via najbaroj abonas, do ĝi ne estas kompleta. tip_following: Vi dekomence sekvas la administrantojn de via servilo. Por trovi pli da interesaj homoj, rigardu la lokan kaj frataran templiniojn. tip_local_timeline: La loka templinio estas antaŭvido de la homoj en %{instance}. Ĉi tiuj estas viaj apudaj najbaroj! tip_mobile_webapp: Se via telefona retumilo proponas al vi aldoni Mastodon al via hejma ekrano, vi povas ricevi puŝsciigojn. Tio multmaniere funkcias kiel operaciuma aplikaĵo! diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 5b303b08f..10454b5fd 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -941,7 +941,7 @@ gl: warning: Ten moito tino con estos datos. Non os compartas nunca con ninguén! your_token: O seu testemuño de acceso auth: - apply_for_account: Solicite un convite + apply_for_account: Solicita un convite change_password: Contrasinal checkbox_agreement_html: Acepto as regras do servidor e os termos do servizo checkbox_agreement_without_rules_html: Acepto os termos do servizo @@ -954,7 +954,7 @@ gl: didnt_get_confirmation: Non recibiches as instruccións de confirmación? dont_have_your_security_key: "¿Non tes a túa chave de seguridade?" forgot_password: Non lembras o contrasinal? - invalid_reset_password_token: O testemuño para restablecer o contrasinal non é válido ou caducou. Por favor solicite un novo. + invalid_reset_password_token: O token para restablecer o contrasinal non é válido ou caducou. Por favor solicita un novo. link_to_otp: Escribe o código do segundo factor do móbil ou un código de recuperación link_to_webauth: Usa o teu dispositivo de chave de seguridade log_in_with: Accede con diff --git a/config/locales/is.yml b/config/locales/is.yml index f9d408822..5978ac41c 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -853,13 +853,25 @@ is: empty: Þú hefur ekki enn skilgreint neinar aðvaranaforstillingar. title: Sýsla með forstilltar aðvaranir webhooks: + add_new: Bæta við endapunkti delete: Eyða + description_html: "webhook-vefkrækja gerir Mastodon kleift að ýta rauntíma-tilkynningum um valda atburði til þinna eigin forrita, þannig að þau forrit getir sett sjálfvirk viðbrögð í gang." disable: Gera óvirkt disabled: Óvirkt + edit: Breyta endapunkti + empty: Þú ert ekki enn búin/n að stilla neina endapunkta á webhook-vefkrækjum. enable: Virkja enabled: Virkt + enabled_events: + one: 1 virkjaður atburður + other: "%{count} virkjaðir atburðir" events: Atburðir + new: Ný webhook-vefkrækja + rotate_secret: Skipta um leyniteikn + secret: Leyniteikn undirritunar status: Staða + title: Webhook-vefkrækjur + webhook: Webhook-vefkrækja admin_mailer: new_appeal: actions: diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 65bc57e3a..2397b63e5 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -840,11 +840,22 @@ ko: webhooks: add_new: 엔드포인트 추가 delete: 삭제 + description_html: "웹훅은 선택한 이벤트에 대해 마스토돈이 실시간 알림을 각자의 응용프로그램에게 보냄으로서, 당신의 응용프로그램이 자동으로 반응을 할 수 있도록 만듧니다." disable: 비활성화 disabled: 비활성화됨 edit: 엔드포인트 수정 + empty: 아직 설정한 웹훅 엔드포인트가 없습니다. enable: 활성화 enabled: 활성화됨 + enabled_events: + other: "%{count}개의 이벤트가 활성화되어 있습니다" + events: 이벤트 + new: 새 웹훅 + rotate_secret: 비밀키 회전 + secret: 비밀키 서명 + status: 상태 + title: 웹훅 + webhook: 웹훅 admin_mailer: new_appeal: actions: diff --git a/config/locales/nl.yml b/config/locales/nl.yml index db49efbb9..b5040153e 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -36,7 +36,7 @@ nl: one: toot other: berichten status_count_before: Zij schreven - tagline: Gedecentraliseerd sociaal netwerk + tagline: Decentraal sociaal netwerk terms: Gebruiksvoorwaarden unavailable_content: Gemodereerde servers unavailable_content_description: @@ -1306,6 +1306,9 @@ nl: subject: Jouw archief staat klaar om te worden gedownload title: Archief ophalen warning: + explanation: + mark_statuses_as_sensitive: Sommige van jouw berichten zijn als gevoelig gemarkeerd door de moderatoren van %{instance}. Dit betekent dat mensen op de media in de berichten moeten klikken/tikken om deze weer te geven. Je kunt media in de toekomst ook zelf als gevoelig markeren. + sensitive: Vanaf nu worden al jouw geüploade media als gevoelig gemarkeerd en verborgen achter een waarschuwing. subject: disable: Jouw account %{acct} is bevroren none: Waarschuwing voor %{acct} diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml index 28d098630..e7fc36c64 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -57,7 +57,7 @@ gl: setting_hide_network: Non se mostrará no teu perfil quen te segue e a quen estás a seguir setting_noindex: Afecta ao teu perfil público e páxinas de publicación setting_show_application: A aplicación que estás a utilizar para enviar publicacións mostrarase na vista detallada da publicación - setting_use_blurhash: Os gradientes toman as cores da imaxe oculta pero esborranchando todos os detalles + setting_use_blurhash: Os gradientes toman as cores da imaxe oculta pero esvaecendo tódolos detalles setting_use_pending_items: Agochar actualizacións da cronoloxía tras un click no lugar de desprazar automáticamente os comentarios username: O teu nome de usuaria será único en %{domain} whole_word: Se a chave ou frase de paso é só alfanumérica, só se aplicará se concorda a palabra completa @@ -177,7 +177,7 @@ gl: setting_theme: Decorado da instancia setting_trends: Mostrar as tendencias de hoxe setting_unfollow_modal: Solicitar confirmación antes de deixar de seguir alguén - setting_use_blurhash: Mostrar gradientes coloridos para medios ocultos + setting_use_blurhash: Mostrar gradientes coloridos para multimedia oculto setting_use_pending_items: Modo lento severity: Severidade sign_in_token_attempt: Código de seguridade diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml index 528e9a52a..638458dae 100644 --- a/config/locales/simple_form.is.yml +++ b/config/locales/simple_form.is.yml @@ -91,6 +91,9 @@ is: name: Þú getur aðeins breytt stafstöði mill há-/lágstafa, til gæmis til að gera þetta læsilegra user: chosen_languages: Þegar merkt er við þetta, birtast einungis færslur á völdum tungumálum á opinberum tímalínum + webhook: + events: Veldu atburði sem á að senda + url: Hvert atburðir verða sendir labels: account: fields: @@ -219,6 +222,9 @@ is: name: Myllumerki trendable: Leyfa þessu myllumerki að birtast undir tilhneigingum usable: Leyfa færslum að nota þetta myllumerki + webhook: + events: Virkjaðir atburðir + url: Slóð á endapunkt 'no': Nei recommended: Mælt með required: diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index 71d4058c8..d79b79513 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -91,6 +91,9 @@ ko: name: 읽기 쉽게하기 위한 글자의 대소문자만 변경할 수 있습니다. user: chosen_languages: 체크하면, 선택 된 언어로 작성된 게시물들만 공개 타임라인에 보여집니다 + webhook: + events: 전송할 이벤트를 선택하세요 + url: 이벤트가 어디로 전송될 지 labels: account: fields: @@ -219,6 +222,9 @@ ko: name: 해시태그 trendable: 이 해시태그가 유행에 보여지도록 허용 usable: 이 해시태그를 게시물에 사용 가능하도록 허용 + webhook: + events: 활성화된 이벤트 + url: 엔드포인트 URL 'no': 아니오 recommended: 추천함 required: diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index 33968b508..09dd2bd1b 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -201,6 +201,8 @@ nl: mention: Wanneer iemand jou heeft vermeld pending_account: Wanneer een nieuw account moet worden beoordeeld reblog: Wanneer iemand jouw bericht heeft geboost + report: Nieuwe rapportage is ingediend + trending_tag: Nieuwe trend vereist beoordeling rule: text: Regel tag: @@ -208,6 +210,8 @@ nl: name: Hashtag trendable: Toestaan dat deze hashtag onder trends te zien valt usable: Toestaan dat deze hashtag in berichten gebruikt mag worden + webhook: + url: Eindpunt URL 'no': Nee recommended: Aanbevolen required: diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index 8df50ab3a..a33e87593 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -88,6 +88,8 @@ th: name: คุณสามารถเปลี่ยนได้เฉพาะตัวพิมพ์ใหญ่เล็กของตัวอักษรเท่านั้น ตัวอย่างเช่น เพื่อทำให้ตัวอักษรอ่านได้ง่ายขึ้น user: chosen_languages: เมื่อกาเครื่องหมาย จะแสดงเฉพาะโพสต์ในภาษาที่เลือกในเส้นเวลาสาธารณะเท่านั้น + webhook: + events: เลือกเหตุการณ์ที่จะส่ง labels: account: fields: @@ -214,6 +216,8 @@ th: name: แฮชแท็ก trendable: อนุญาตให้แฮชแท็กนี้ปรากฏภายใต้แนวโน้ม usable: อนุญาตให้โพสต์ใช้แฮชแท็กนี้ + webhook: + url: URL ปลายทาง 'no': ไม่ recommended: แนะนำ required: diff --git a/config/locales/th.yml b/config/locales/th.yml index c5f70753d..57fbc1fdd 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -34,6 +34,7 @@ th: status_count_after: other: โพสต์ status_count_before: ผู้เผยแพร่ + tagline: เครือข่ายสังคมแบบกระจายศูนย์ terms: เงื่อนไขการให้บริการ unavailable_content: เซิร์ฟเวอร์ที่มีการควบคุม unavailable_content_description: @@ -782,6 +783,16 @@ th: edit_preset: แก้ไขคำเตือนที่ตั้งไว้ล่วงหน้า empty: คุณยังไม่ได้กำหนดคำเตือนที่ตั้งไว้ล่วงหน้าใด ๆ title: จัดการคำเตือนที่ตั้งไว้ล่วงหน้า + webhooks: + add_new: เพิ่มปลายทาง + delete: ลบ + disable: ปิดใช้งาน + disabled: ปิดใช้งานอยู่ + edit: แก้ไขปลายทาง + enable: เปิดใช้งาน + enabled: ใช้งานอยู่ + events: เหตุการณ์ + status: สถานะ admin_mailer: new_appeal: actions: @@ -1248,6 +1259,10 @@ th: reports: errors: invalid_rules: ไม่ได้อ้างอิงกฎที่ถูกต้อง + rss: + content_warning: 'คำเตือนเนื้อหา:' + descriptions: + account: โพสต์สาธารณะจาก @%{acct} scheduled_statuses: too_soon: วันที่ตามกำหนดการต้องอยู่ในอนาคต sessions: diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 9159acba3..7bd5723c4 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -862,6 +862,9 @@ tr: empty: Henüz yapılandırılmış bir web kancanız yok. enable: Etkinleştir enabled: Etkin + enabled_events: + one: 1 aktif etkinlik + other: "%{count} aktif etkinlik" events: Olaylar new: Yeni web kancası rotate_secret: Gizi döndür diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 53a4b3567..2612237b8 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -646,6 +646,7 @@ uk: placeholder: Опишіть, які дії були виконані, або інші зміни, що стосуються справи... title: Примітки notes_description_html: Переглядайте та залишайте примітки для інших модераторів та для себе на майбутнє + quick_actions_description_html: 'Виберіть швидку дію або гортайте вниз, щоб побачити матеріал, на який надійшла скарга:' remote_user_placeholder: віддалений користувач із %{instance} reopen: Перевідкрити скаргу report: 'Скарга #%{id}' @@ -896,6 +897,7 @@ uk: sensitive: щоб позначати їхній обліковий запис делікатним silence: щоб обмежити їхній обліковий запис suspend: щоб призупинити їхній обліковий запис + body: "%{target} оскаржує модерацію %{action_taken_by} від %{date}, яка була %{type}. Вони написали:" next_steps: Ви можете схвалити апеляцію, щоб скасувати рішення про модерацію або проігнорувати її. subject: "%{username} апелює до рішення про модерацію на %{instance}" new_pending_account: @@ -991,6 +993,7 @@ uk: functional: Ваш обліковий запис повністю робочий. pending: Ваша заява очікує на розгляд нашим персоналом. Це може зайняти деякий час. Ви отримаєте електронний лист, якщо ваша заява буде схвалена. redirecting_to: Ваш обліковий запис наразі неактивний, тому що він перенаправлений до %{acct}. + view_strikes: Переглянути попередні попередження вашому обліковому запису too_fast: Форму подано занадто швидко, спробуйте ще раз. trouble_logging_in: Проблема під час входу? use_security_key: Використовувати ключ безпеки @@ -1058,6 +1061,7 @@ uk: strikes: action_taken: Дію виконано appeal: Апеляція + appeal_approved: Це попередження було успішно оскаржене і більше не дійсне appeal_rejected: Апеляцію було відхилено appeal_submitted_at: Апеляцію надіслано appealed_msg: Вашу апеляцію було надіслано. Якщо її погодять, вам буде повідомлено про це. @@ -1392,6 +1396,9 @@ uk: invalid_rules: не посилається на чинні правила rss: content_warning: 'Попередження про матеріали:' + descriptions: + account: Загальнодоступні дописи від @%{acct} + tag: 'Загальнодоступні дописи позначені #%{hashtag}' scheduled_statuses: over_daily_limit: Ви перевищили ліміт в %{limit} запланованих дмухів на сьогодні over_total_limit: Ви перевищили ліміт в %{limit} запланованих дмухів @@ -1562,6 +1569,9 @@ uk: pinned: Закріплений пост reblogged: передмухнув(-ла) sensitive_content: Дражливий зміст + strikes: + errors: + too_late: Запізно оскаржувати це попередження tags: does_not_match_previous_name: не збігається з попереднім ім'ям terms: @@ -1593,9 +1603,11 @@ uk: user_mailer: appeal_approved: action: Перейти у ваш обліковий запис + explanation: Оскарження попередження вашому обліковому запису %{strike_date}, яке ви надіслали %{appeal_date} було схвалено. Ваш обліковий запис знову вважається добропорядним. subject: Вашу апеляцію від %{date} було схвалено title: Апеляцію схвалено appeal_rejected: + explanation: Оскарження попередження вашому обліковому запису %{strike_date}, яке ви надіслали %{appeal_date} було відхилено. subject: Вашу апеляцію від %{date} було відхилено title: Апеляцію відхилено backup_ready: @@ -1611,12 +1623,14 @@ uk: title: Новий вхід warning: appeal: Подати апеляцію + appeal_description: Якщо ви вважаєте, що це помилка, ви можете надіслати оскаржити дії персоналу %{instance}. categories: spam: Спам violation: Вміст порушує такі правила спільноти explanation: delete_statuses: Деякі з ваших дописів порушили одне або кілька правил спільноти, і модератори %{instance} видалили їх. disable: Ви можете більше не використовувати свій обліковий запис, але ваш профіль та інші дані залишаються недоторканими. Ви можете надіслати запит на створення резервної копії ваших даних, змінити налаштування облікового запису або видалити свій обліковий запис. + mark_statuses_as_sensitive: Деякі з ваших дописів модератори %{instance} позначили делікатними. Це означає, що людям потрібно буде торкнутися медіа у дописах перед тим, як буде показано попередній перегляд. Ви можете самостійно позначити медіа делікатним, коли розміщуватимете його в майбутньому. sensitive: Відтепер усі ваші завантажені медіафайли будуть позначені делікатними й приховані за попередженням. silence: Ви й надалі можете користуватися своїм обліковим записом, але ваші дописи на цьому сервері бачитимуть лише ті люди, які вже стежать за вами, а вас може бути виключено з різних можливостей виявлення. Проте, інші можуть почати стежити за вами вручну. suspend: Ви більше не можете користуватися своїм обліковим записом, а ваші інші дані більше недоступні. Ви досі можете увійти, щоб надіслати запит на отримання резервної копії своїх даних до повного видалення впродовж приблизно 30 днів, але ми збережемо деякі основні дані, щоб унеможливити ухилення вами від призупинення. @@ -1625,7 +1639,9 @@ uk: subject: delete_statuses: Ваші дописи на %{acct} були вилучені disable: Ваш обліковий запис %{acct} було заморожено + mark_statuses_as_sensitive: Ваші дописи на %{acct} позначені делікатними none: Попередження для %{acct} + sensitive: Ваші дописи на %{acct} відтепер будуть позначені делікатними silence: Ваш обліковий запис %{acct} було обмежено suspend: Ваш обліковий запис %{acct} було призупинено title: From 602f291da9f4fa157233b29dc6ac96e784203c98 Mon Sep 17 00:00:00 2001 From: Shlee Date: Mon, 27 Jun 2022 07:02:48 +0000 Subject: [PATCH 189/652] Update Dockerfile (#18717) --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 2073cbebf..6180e0796 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ SHELL ["/bin/bash", "-c"] RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections # Install Node v16 (LTS) -ENV NODE_VER="16.14.2" +ENV NODE_VER="16.15.1" RUN ARCH= && \ dpkgArch="$(dpkg --print-architecture)" && \ case "${dpkgArch##*-}" in \ From 2936f42a14cfdca70d4a9653dab29382315945e7 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 27 Jun 2022 09:30:15 +0200 Subject: [PATCH 190/652] Add notifications for new reports (#18697) --- .../mastodon/actions/notifications.js | 6 ++ .../mastodon/components/icon_button.js | 12 +++- .../components/column_settings.js | 13 ++++ .../notifications/components/notification.js | 30 +++++++++ .../notifications/components/report.js | 62 +++++++++++++++++++ .../containers/notification_container.js | 4 +- .../mastodon/locales/defaultMessages.json | 33 ++++++++++ app/javascript/mastodon/locales/en.json | 7 +++ .../mastodon/reducers/notifications.js | 3 +- app/javascript/mastodon/reducers/settings.js | 3 + app/javascript/mastodon/selectors/index.js | 17 ++--- .../styles/mastodon/components.scss | 39 ++++++++++++ app/models/notification.rb | 5 +- .../rest/admin/report_serializer.rb | 2 +- .../rest/notification_serializer.rb | 5 ++ app/serializers/rest/report_serializer.rb | 5 +- app/services/report_service.rb | 4 +- config/locales/en.yml | 2 + 18 files changed, 235 insertions(+), 17 deletions(-) create mode 100644 app/javascript/mastodon/features/notifications/components/report.js diff --git a/app/javascript/mastodon/actions/notifications.js b/app/javascript/mastodon/actions/notifications.js index 96cf628d6..84dfbeef3 100644 --- a/app/javascript/mastodon/actions/notifications.js +++ b/app/javascript/mastodon/actions/notifications.js @@ -91,6 +91,10 @@ export function updateNotifications(notification, intlMessages, intlLocale) { dispatch(importFetchedStatus(notification.status)); } + if (notification.report) { + dispatch(importFetchedAccount(notification.report.target_account)); + } + dispatch({ type: NOTIFICATIONS_UPDATE, notification, @@ -134,6 +138,7 @@ const excludeTypesFromFilter = filter => { 'status', 'update', 'admin.sign_up', + 'admin.report', ]); return allTypes.filterNot(item => item === filter).toJS(); @@ -179,6 +184,7 @@ export function expandNotifications({ maxId } = {}, done = noOp) { dispatch(importFetchedAccounts(response.data.map(item => item.account))); dispatch(importFetchedStatuses(response.data.map(item => item.status).filter(status => !!status))); + dispatch(importFetchedAccounts(response.data.filter(item => item.report).map(item => item.report.target_account))); dispatch(expandNotificationsSuccess(response.data, next ? next.uri : null, isLoadingMore, isLoadingRecent, isLoadingRecent && preferPendingItems)); fetchRelatedRelationships(dispatch, response.data); diff --git a/app/javascript/mastodon/components/icon_button.js b/app/javascript/mastodon/components/icon_button.js index 6a653675b..81743a1db 100644 --- a/app/javascript/mastodon/components/icon_button.js +++ b/app/javascript/mastodon/components/icon_button.js @@ -132,8 +132,16 @@ export default class IconButton extends React.PureComponent { ); if (href) { - contents = ( - + return ( + {contents} ); diff --git a/app/javascript/mastodon/features/notifications/components/column_settings.js b/app/javascript/mastodon/features/notifications/components/column_settings.js index 1cdb24086..61df79b46 100644 --- a/app/javascript/mastodon/features/notifications/components/column_settings.js +++ b/app/javascript/mastodon/features/notifications/components/column_settings.js @@ -178,6 +178,19 @@ export default class ColumnSettings extends React.PureComponent {
)} + + {isStaff && ( +
+ + +
+ + {showPushSettings && } + + +
+
+ )}
); } diff --git a/app/javascript/mastodon/features/notifications/components/notification.js b/app/javascript/mastodon/features/notifications/components/notification.js index 9198e9c9d..0af71418c 100644 --- a/app/javascript/mastodon/features/notifications/components/notification.js +++ b/app/javascript/mastodon/features/notifications/components/notification.js @@ -7,6 +7,7 @@ import ImmutablePureComponent from 'react-immutable-pure-component'; import { me } from 'mastodon/initial_state'; import StatusContainer from 'mastodon/containers/status_container'; import AccountContainer from 'mastodon/containers/account_container'; +import Report from './report'; import FollowRequestContainer from '../containers/follow_request_container'; import Icon from 'mastodon/components/icon'; import Permalink from 'mastodon/components/permalink'; @@ -21,6 +22,7 @@ const messages = defineMessages({ status: { id: 'notification.status', defaultMessage: '{name} just posted' }, update: { id: 'notification.update', defaultMessage: '{name} edited a post' }, adminSignUp: { id: 'notification.admin.sign_up', defaultMessage: '{name} signed up' }, + adminReport: { id: 'notification.admin.report', defaultMessage: '{name} reported {target}' }, }); const notificationForScreenReader = (intl, message, timestamp) => { @@ -367,6 +369,32 @@ class Notification extends ImmutablePureComponent { ); } + renderAdminReport (notification, account, link) { + const { intl, unread, report } = this.props; + + const targetAccount = report.get('target_account'); + const targetDisplayNameHtml = { __html: targetAccount.get('display_name_html') }; + const targetLink = ; + + return ( + +
+
+
+ +
+ + + + +
+ +
+
+ ); + } + render () { const { notification } = this.props; const account = notification.get('account'); @@ -392,6 +420,8 @@ class Notification extends ImmutablePureComponent { return this.renderPoll(notification, account); case 'admin.sign_up': return this.renderAdminSignUp(notification, account, link); + case 'admin.report': + return this.renderAdminReport(notification, account, link); } return null; diff --git a/app/javascript/mastodon/features/notifications/components/report.js b/app/javascript/mastodon/features/notifications/components/report.js new file mode 100644 index 000000000..3ce3eb9d3 --- /dev/null +++ b/app/javascript/mastodon/features/notifications/components/report.js @@ -0,0 +1,62 @@ +import React, { Fragment } from 'react'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import PropTypes from 'prop-types'; +import { defineMessages, FormattedMessage, injectIntl } from 'react-intl'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import AvatarOverlay from 'mastodon/components/avatar_overlay'; +import RelativeTimestamp from 'mastodon/components/relative_timestamp'; + +const messages = defineMessages({ + openReport: { id: 'report_notification.open', defaultMessage: 'Open report' }, + other: { id: 'report_notification.categories.other', defaultMessage: 'Other' }, + spam: { id: 'report_notification.categories.spam', defaultMessage: 'Spam' }, + violation: { id: 'report_notification.categories.violation', defaultMessage: 'Rule violation' }, +}); + +export default @injectIntl +class Report extends ImmutablePureComponent { + + static propTypes = { + account: ImmutablePropTypes.map.isRequired, + report: ImmutablePropTypes.map.isRequired, + hidden: PropTypes.bool, + intl: PropTypes.object.isRequired, + }; + + render () { + const { intl, hidden, report, account } = this.props; + + if (!report) { + return null; + } + + if (hidden) { + return ( + + {report.get('id')} + + ); + } + + return ( +
+
+ +
+ +
+
+ · +
+ {intl.formatMessage(messages[report.get('category')])} +
+ + +
+
+ ); + } + +} diff --git a/app/javascript/mastodon/features/notifications/containers/notification_container.js b/app/javascript/mastodon/features/notifications/containers/notification_container.js index 5c984197f..8bd5b3d78 100644 --- a/app/javascript/mastodon/features/notifications/containers/notification_container.js +++ b/app/javascript/mastodon/features/notifications/containers/notification_container.js @@ -1,5 +1,5 @@ import { connect } from 'react-redux'; -import { makeGetNotification, makeGetStatus } from '../../../selectors'; +import { makeGetNotification, makeGetStatus, makeGetReport } from '../../../selectors'; import Notification from '../components/notification'; import { initBoostModal } from '../../../actions/boosts'; import { mentionCompose } from '../../../actions/compose'; @@ -18,12 +18,14 @@ import { boostModal } from '../../../initial_state'; const makeMapStateToProps = () => { const getNotification = makeGetNotification(); const getStatus = makeGetStatus(); + const getReport = makeGetReport(); const mapStateToProps = (state, props) => { const notification = getNotification(state, props.notification, props.accountId); return { notification: notification, status: notification.get('status') ? getStatus(state, { id: notification.get('status') }) : null, + report: notification.get('report') ? getReport(state, notification.get('report'), notification.getIn(['report', 'target_account', 'id'])) : null, }; }; diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 250987be3..7cd913493 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -2532,6 +2532,10 @@ { "defaultMessage": "New sign-ups:", "id": "notifications.column_settings.admin.sign_up" + }, + { + "defaultMessage": "New reports:", + "id": "notifications.column_settings.admin.report" } ], "path": "app/javascript/mastodon/features/notifications/components/column_settings.json" @@ -2625,6 +2629,10 @@ "defaultMessage": "{name} signed up", "id": "notification.admin.sign_up" }, + { + "defaultMessage": "{name} reported {target}", + "id": "notification.admin.report" + }, { "defaultMessage": "{name} has requested to follow you", "id": "notification.follow_request" @@ -2653,6 +2661,31 @@ ], "path": "app/javascript/mastodon/features/notifications/components/notifications_permission_banner.json" }, + { + "descriptors": [ + { + "defaultMessage": "Open report", + "id": "report_notification.open" + }, + { + "defaultMessage": "Other", + "id": "report_notification.categories.other" + }, + { + "defaultMessage": "Spam", + "id": "report_notification.categories.spam" + }, + { + "defaultMessage": "Rule violation", + "id": "report_notification.categories.violation" + }, + { + "defaultMessage": "{count, plural, one {{count} post} other {{count} posts}} attached", + "id": "report_notification.attached_statuses" + } + ], + "path": "app/javascript/mastodon/features/notifications/components/report.json" + }, { "descriptors": [ { diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index a0a1e1cdf..9082c4202 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your post", "notification.follow": "{name} followed you", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Search", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns posts you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", diff --git a/app/javascript/mastodon/reducers/notifications.js b/app/javascript/mastodon/reducers/notifications.js index b587b6d0f..4b460bc10 100644 --- a/app/javascript/mastodon/reducers/notifications.js +++ b/app/javascript/mastodon/reducers/notifications.js @@ -28,7 +28,7 @@ import { } from '../actions/app'; import { DOMAIN_BLOCK_SUCCESS } from 'mastodon/actions/domain_blocks'; import { TIMELINE_DELETE, TIMELINE_DISCONNECT } from '../actions/timelines'; -import { Map as ImmutableMap, List as ImmutableList } from 'immutable'; +import { fromJS, Map as ImmutableMap, List as ImmutableList } from 'immutable'; import compareId from '../compare_id'; const initialState = ImmutableMap({ @@ -52,6 +52,7 @@ const notificationToMap = notification => ImmutableMap({ account: notification.account.id, created_at: notification.created_at, status: notification.status ? notification.status.id : null, + report: notification.report ? fromJS(notification.report) : null, }); const normalizeNotification = (state, notification, usePendingItems) => { diff --git a/app/javascript/mastodon/reducers/settings.js b/app/javascript/mastodon/reducers/settings.js index afffce917..f9d3236e4 100644 --- a/app/javascript/mastodon/reducers/settings.js +++ b/app/javascript/mastodon/reducers/settings.js @@ -39,6 +39,7 @@ const initialState = ImmutableMap({ status: false, update: false, 'admin.sign_up': false, + 'admin.report': false, }), quickFilter: ImmutableMap({ @@ -60,6 +61,7 @@ const initialState = ImmutableMap({ status: true, update: true, 'admin.sign_up': true, + 'admin.report': true, }), sounds: ImmutableMap({ @@ -72,6 +74,7 @@ const initialState = ImmutableMap({ status: true, update: true, 'admin.sign_up': true, + 'admin.report': true, }), }), diff --git a/app/javascript/mastodon/selectors/index.js b/app/javascript/mastodon/selectors/index.js index 3121774b3..fbd25b605 100644 --- a/app/javascript/mastodon/selectors/index.js +++ b/app/javascript/mastodon/selectors/index.js @@ -152,14 +152,15 @@ export const getAlerts = createSelector([getAlertsBase], (base) => { return arr; }); -export const makeGetNotification = () => { - return createSelector([ - (_, base) => base, - (state, _, accountId) => state.getIn(['accounts', accountId]), - ], (base, account) => { - return base.set('account', account); - }); -}; +export const makeGetNotification = () => createSelector([ + (_, base) => base, + (state, _, accountId) => state.getIn(['accounts', accountId]), +], (base, account) => base.set('account', account)); + +export const makeGetReport = () => createSelector([ + (_, base) => base, + (state, _, targetAccountId) => state.getIn(['accounts', targetAccountId]), +], (base, targetAccount) => base.set('target_account', targetAccount)); export const getAccountGallery = createSelector([ (state, id) => state.getIn(['timelines', `account:${id}:media`, 'items'], ImmutableList()), diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 1ada1fcf7..7e3ce3de2 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -1355,6 +1355,8 @@ a .account__avatar { .account__avatar-overlay { @include avatar-size(48px); + position: relative; + &-base { @include avatar-radius; @include avatar-size(36px); @@ -1620,6 +1622,33 @@ a.account__display-name { } } +.notification__report { + padding: 8px 10px; + padding-left: 68px; + position: relative; + border-bottom: 1px solid lighten($ui-base-color, 8%); + min-height: 54px; + + &__details { + display: flex; + justify-content: space-between; + align-items: center; + color: $darker-text-color; + font-size: 15px; + line-height: 22px; + + strong { + font-weight: 500; + } + } + + &__avatar { + position: absolute; + left: 10px; + top: 10px; + } +} + .notification__message { margin: 0 10px 0 68px; padding: 8px 0 0; @@ -2360,6 +2389,16 @@ a.account__display-name { padding-top: 15px; } + .notification__report { + padding: 15px 15px 15px (48px + 15px * 2); + min-height: 48px + 2px; + + &__avatar { + left: 15px; + top: 17px; + } + } + .status { padding: 15px 15px 15px (48px + 15px * 2); min-height: 48px + 2px; diff --git a/app/models/notification.rb b/app/models/notification.rb index ba94b54d1..bbc63c1c0 100644 --- a/app/models/notification.rb +++ b/app/models/notification.rb @@ -37,6 +37,7 @@ class Notification < ApplicationRecord poll update admin.sign_up + admin.report ).freeze TARGET_STATUS_INCLUDES_BY_TYPE = { @@ -46,6 +47,7 @@ class Notification < ApplicationRecord favourite: [favourite: :status], poll: [poll: :status], update: :status, + 'admin.report': [report: :target_account], }.freeze belongs_to :account, optional: true @@ -58,6 +60,7 @@ class Notification < ApplicationRecord belongs_to :follow_request, foreign_key: 'activity_id', optional: true belongs_to :favourite, foreign_key: 'activity_id', optional: true belongs_to :poll, foreign_key: 'activity_id', optional: true + belongs_to :report, foreign_key: 'activity_id', optional: true validates :type, inclusion: { in: TYPES } @@ -146,7 +149,7 @@ class Notification < ApplicationRecord return unless new_record? case activity_type - when 'Status', 'Follow', 'Favourite', 'FollowRequest', 'Poll' + when 'Status', 'Follow', 'Favourite', 'FollowRequest', 'Poll', 'Report' self.from_account_id = activity&.account_id when 'Mention' self.from_account_id = activity&.status&.account_id diff --git a/app/serializers/rest/admin/report_serializer.rb b/app/serializers/rest/admin/report_serializer.rb index 237f41d8e..44b4726e4 100644 --- a/app/serializers/rest/admin/report_serializer.rb +++ b/app/serializers/rest/admin/report_serializer.rb @@ -2,7 +2,7 @@ class REST::Admin::ReportSerializer < ActiveModel::Serializer attributes :id, :action_taken, :action_taken_at, :category, :comment, - :created_at, :updated_at + :forwarded, :created_at, :updated_at has_one :account, serializer: REST::Admin::AccountSerializer has_one :target_account, serializer: REST::Admin::AccountSerializer diff --git a/app/serializers/rest/notification_serializer.rb b/app/serializers/rest/notification_serializer.rb index 69b81f6de..137fc53dd 100644 --- a/app/serializers/rest/notification_serializer.rb +++ b/app/serializers/rest/notification_serializer.rb @@ -5,6 +5,7 @@ class REST::NotificationSerializer < ActiveModel::Serializer belongs_to :from_account, key: :account, serializer: REST::AccountSerializer belongs_to :target_status, key: :status, if: :status_type?, serializer: REST::StatusSerializer + belongs_to :report, if: :report_type?, serializer: REST::ReportSerializer def id object.id.to_s @@ -13,4 +14,8 @@ class REST::NotificationSerializer < ActiveModel::Serializer def status_type? [:favourite, :reblog, :status, :mention, :poll, :update].include?(object.type) end + + def report_type? + object.type == :'admin.report' + end end diff --git a/app/serializers/rest/report_serializer.rb b/app/serializers/rest/report_serializer.rb index ecb88d653..de68dfc6d 100644 --- a/app/serializers/rest/report_serializer.rb +++ b/app/serializers/rest/report_serializer.rb @@ -1,7 +1,10 @@ # frozen_string_literal: true class REST::ReportSerializer < ActiveModel::Serializer - attributes :id, :action_taken + attributes :id, :action_taken, :action_taken_at, :category, :comment, + :forwarded, :created_at, :status_ids, :rule_ids + + has_one :target_account, serializer: REST::AccountSerializer def id object.id.to_s diff --git a/app/services/report_service.rb b/app/services/report_service.rb index d251bb33f..70212a6a7 100644 --- a/app/services/report_service.rb +++ b/app/services/report_service.rb @@ -39,8 +39,8 @@ class ReportService < BaseService return if @report.unresolved_siblings? User.staff.includes(:account).each do |u| - next unless u.allows_report_emails? - AdminMailer.new_report(u.account, @report).deliver_later + LocalNotificationWorker.perform_async(u.account_id, @report.id, 'Report', 'admin.report') + AdminMailer.new_report(u.account, @report).deliver_later if u.allows_report_emails? end end diff --git a/config/locales/en.yml b/config/locales/en.yml index cedcc9361..5a0fc3da8 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1251,6 +1251,8 @@ en: copy_account_note_text: 'This user moved from %{acct}, here were your previous notes about them:' notification_mailer: admin: + report: + subject: "%{name} submitted a report" sign_up: subject: "%{name} signed up" digest: From 5c6a2fcefe34a1bafbf546a7690639fc8b345bc6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Jun 2022 20:54:46 +0900 Subject: [PATCH 191/652] Bump http from 5.0.4 to 5.1.0 (#18696) Bumps [http](https://github.com/httprb/http) from 5.0.4 to 5.1.0. - [Release notes](https://github.com/httprb/http/releases) - [Changelog](https://github.com/httprb/http/blob/main/CHANGES.md) - [Commits](https://github.com/httprb/http/compare/v5.0.4...v5.1.0) --- updated-dependencies: - dependency-name: http dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index bf04d968e..5847173d7 100644 --- a/Gemfile +++ b/Gemfile @@ -53,7 +53,7 @@ gem 'fastimage' gem 'hiredis', '~> 0.6' gem 'redis-namespace', '~> 1.8' gem 'htmlentities', '~> 4.3' -gem 'http', '~> 5.0' +gem 'http', '~> 5.1' gem 'http_accept_language', '~> 2.1' gem 'httplog', '~> 1.5.0' gem 'idn-ruby', require: 'idn' diff --git a/Gemfile.lock b/Gemfile.lock index eb167e5a2..0db3e4733 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -291,12 +291,12 @@ GEM hkdf (0.3.0) html_tokenizer (0.0.7) htmlentities (4.3.4) - http (5.0.4) + http (5.1.0) addressable (~> 2.8) http-cookie (~> 1.0) http-form_data (~> 2.2) llhttp-ffi (~> 0.4.0) - http-cookie (1.0.4) + http-cookie (1.0.5) domain_name (~> 0.5) http-form_data (2.3.0) http_accept_language (2.1.1) @@ -676,7 +676,7 @@ GEM tzinfo (>= 1.0.0) unf (0.1.4) unf_ext - unf_ext (0.0.8) + unf_ext (0.0.8.2) unicode-display_width (2.1.0) uniform_notifier (1.16.0) validate_email (0.1.6) @@ -767,7 +767,7 @@ DEPENDENCIES hamlit-rails (~> 0.2) hiredis (~> 0.6) htmlentities (~> 4.3) - http (~> 5.0) + http (~> 5.1) http_accept_language (~> 2.1) httplog (~> 1.5.0) i18n-tasks (~> 1.0) From 5823ae70c4c7c297c8d69ecd0be8df65019411e3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Jun 2022 20:55:18 +0900 Subject: [PATCH 192/652] Bump pg from 1.3.5 to 1.4.0 (#18695) Bumps [pg](https://github.com/ged/ruby-pg) from 1.3.5 to 1.4.0. - [Release notes](https://github.com/ged/ruby-pg/releases) - [Changelog](https://github.com/ged/ruby-pg/blob/master/History.rdoc) - [Commits](https://github.com/ged/ruby-pg/compare/v1.3.5...v1.4.0) --- updated-dependencies: - dependency-name: pg dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 5847173d7..d732f6eed 100644 --- a/Gemfile +++ b/Gemfile @@ -13,7 +13,7 @@ gem 'thor', '~> 1.2' gem 'rack', '~> 2.2.3' gem 'hamlit-rails', '~> 0.2' -gem 'pg', '~> 1.3' +gem 'pg', '~> 1.4' gem 'makara', '~> 0.5' gem 'pghero', '~> 2.8' gem 'dotenv-rails', '~> 2.7' diff --git a/Gemfile.lock b/Gemfile.lock index 0db3e4733..36a0984e1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -446,7 +446,7 @@ GEM parslet (2.0.0) pastel (0.8.0) tty-color (~> 0.5) - pg (1.3.5) + pg (1.4.0) pghero (2.8.3) activerecord (>= 5) pkg-config (1.4.7) @@ -795,7 +795,7 @@ DEPENDENCIES omniauth-saml (~> 1.10) ox (~> 2.14) parslet - pg (~> 1.3) + pg (~> 1.4) pghero (~> 2.8) pkg-config (~> 1.4) posix-spawn From 02851848e964675bb59919fa5fd1bdee2c1c29db Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 28 Jun 2022 09:42:13 +0200 Subject: [PATCH 193/652] Revamp post filtering system (#18058) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add model for custom filter keywords * Use CustomFilterKeyword internally Does not change the API * Fix /filters/edit and /filters/new * Add migration tests * Remove whole_word column from custom_filters (covered by custom_filter_keywords) * Redesign /filters Instead of a list, present a card that displays more information and handles multiple keywords per filter. * Redesign /filters/new and /filters/edit to add and remove keywords This adds a new gem dependency: cocoon, as well as a npm dependency: cocoon-js-vanilla. Those are used to easily populate and remove form fields from the user interface when manipulating multiple keyword filters at once. * Add /api/v2/filters to edit filter with multiple keywords Entities: - `Filter`: `id`, `title`, `filter_action` (either `hide` or `warn`), `context` `keywords` - `FilterKeyword`: `id`, `keyword`, `whole_word` API endpoits: - `GET /api/v2/filters` to list filters (including keywords) - `POST /api/v2/filters` to create a new filter `keywords_attributes` can also be passed to create keywords in one request - `GET /api/v2/filters/:id` to read a particular filter - `PUT /api/v2/filters/:id` to update a new filter `keywords_attributes` can also be passed to edit, delete or add keywords in one request - `DELETE /api/v2/filters/:id` to delete a particular filter - `GET /api/v2/filters/:id/keywords` to list keywords for a filter - `POST /api/v2/filters/:filter_id/keywords/:id` to add a new keyword to a filter - `GET /api/v2/filter_keywords/:id` to read a particular keyword - `PUT /api/v2/filter_keywords/:id` to edit a particular keyword - `DELETE /api/v2/filter_keywords/:id` to delete a particular keyword * Change from `irreversible` boolean to `action` enum * Remove irrelevent `irreversible_must_be_within_context` check * Fix /filters/new and /filters/edit with update for filter_action * Fix Rubocop/Codeclimate complaining about task names * Refactor FeedManager#phrase_filtered? This moves regexp building and filter caching to the `CustomFilter` class. This does not change the functional behavior yet, but this changes how the cache is built, doing per-custom_filter regexps so that filters can be matched independently, while still offering caching. * Perform server-side filtering and output result in REST API * Fix numerous filters_changed events being sent when editing multiple keywords at once * Add some tests * Use the new API in the WebUI - use client-side logic for filters we have fetched rules for. This is so that filter changes can be retroactively applied without reloading the UI. - use server-side logic for filters we haven't fetched rules for yet (e.g. network error, or initial timeline loading) * Minor optimizations and refactoring * Perform server-side filtering on the streaming server * Change the wording of filter action labels * Fix issues pointed out by linter * Change design of “Show anyway” link in accordence to review comments * Drop “irreversible” filtering behavior * Move /api/v2/filter_keywords to /api/v1/filters/keywords * Rename `filter_results` attribute to `filtered` * Rename REST::LegacyFilterSerializer to REST::V1::FilterSerializer * Fix systemChannelId value in streaming server * Simplify code by removing client-side filtering code The simplifcation comes at a cost though: filters aren't retroactively applied anymore. --- .circleci/config.yml | 18 ++- Gemfile | 2 + Gemfile.lock | 2 + .../api/v1/filters/keywords_controller.rb | 50 ++++++ app/controllers/api/v1/filters_controller.rb | 35 ++++- app/controllers/api/v2/filters_controller.rb | 48 ++++++ app/controllers/filters_controller.rb | 12 +- app/javascript/mastodon/actions/filters.js | 26 ---- .../mastodon/actions/importer/index.js | 11 ++ .../mastodon/actions/importer/normalizer.js | 12 ++ .../mastodon/actions/notifications.js | 13 +- app/javascript/mastodon/actions/streaming.js | 4 - app/javascript/mastodon/components/status.js | 21 ++- .../mastodon/components/status_action_bar.js | 17 +++ app/javascript/mastodon/features/ui/index.js | 3 +- app/javascript/mastodon/reducers/filters.js | 34 ++++- app/javascript/mastodon/selectors/index.js | 51 +++---- app/javascript/packs/public.js | 1 + app/javascript/styles/mastodon/admin.scss | 33 +++- .../styles/mastodon/components.scss | 15 ++ app/javascript/styles/mastodon/forms.scss | 31 ++++ app/lib/feed_manager.rb | 30 ---- app/models/concerns/account_interactions.rb | 13 ++ app/models/custom_filter.rb | 87 ++++++++--- app/models/custom_filter_keyword.rb | 34 +++++ app/presenters/filter_result_presenter.rb | 5 + .../status_relationships_presenter.rb | 24 ++- .../rest/filter_keyword_serializer.rb | 9 ++ .../rest/filter_result_serializer.rb | 6 + app/serializers/rest/filter_serializer.rb | 8 +- app/serializers/rest/status_serializer.rb | 9 ++ app/serializers/rest/v1/filter_serializer.rb | 26 ++++ app/views/filters/_fields.html.haml | 16 -- app/views/filters/_filter.html.haml | 32 ++++ app/views/filters/_filter_fields.html.haml | 33 ++++ app/views/filters/_keyword_fields.html.haml | 8 + app/views/filters/edit.html.haml | 2 +- app/views/filters/index.html.haml | 17 +-- app/views/filters/new.html.haml | 4 +- config/locales/en.yml | 11 +- config/locales/simple_form.en.yml | 10 ++ config/routes.rb | 9 +- ...613110628_create_custom_filter_keywords.rb | 13 ++ .../20220613110711_migrate_custom_filters.rb | 34 +++++ ...0613110834_add_action_to_custom_filters.rb | 20 +++ ...2_remove_whole_word_from_custom_filters.rb | 20 +++ ...remove_irreversible_from_custom_filters.rb | 20 +++ db/schema.rb | 15 +- lib/tasks/tests.rake | 18 ++- package.json | 2 + .../v1/filters/keywords_controller_spec.rb | 142 ++++++++++++++++++ .../api/v1/filters_controller_spec.rb | 27 ++-- .../api/v1/statuses_controller_spec.rb | 52 +++++++ .../api/v2/filters_controller_spec.rb | 121 +++++++++++++++ .../custom_filter_keyword_fabricator.rb | 4 + spec/lib/feed_manager_spec.rb | 32 ---- spec/models/custom_filter_keyword_spec.rb | 4 + .../status_relationships_presenter_spec.rb | 29 +++- streaming/index.js | 90 ++++++++++- yarn.lock | 67 ++++++++- 60 files changed, 1292 insertions(+), 250 deletions(-) create mode 100644 app/controllers/api/v1/filters/keywords_controller.rb create mode 100644 app/controllers/api/v2/filters_controller.rb delete mode 100644 app/javascript/mastodon/actions/filters.js create mode 100644 app/models/custom_filter_keyword.rb create mode 100644 app/presenters/filter_result_presenter.rb create mode 100644 app/serializers/rest/filter_keyword_serializer.rb create mode 100644 app/serializers/rest/filter_result_serializer.rb create mode 100644 app/serializers/rest/v1/filter_serializer.rb delete mode 100644 app/views/filters/_fields.html.haml create mode 100644 app/views/filters/_filter.html.haml create mode 100644 app/views/filters/_filter_fields.html.haml create mode 100644 app/views/filters/_keyword_fields.html.haml create mode 100644 db/migrate/20220613110628_create_custom_filter_keywords.rb create mode 100644 db/migrate/20220613110711_migrate_custom_filters.rb create mode 100644 db/migrate/20220613110834_add_action_to_custom_filters.rb create mode 100644 db/post_migrate/20220613110802_remove_whole_word_from_custom_filters.rb create mode 100644 db/post_migrate/20220613110903_remove_irreversible_from_custom_filters.rb create mode 100644 spec/controllers/api/v1/filters/keywords_controller_spec.rb create mode 100644 spec/controllers/api/v2/filters_controller_spec.rb create mode 100644 spec/fabricators/custom_filter_keyword_fabricator.rb create mode 100644 spec/models/custom_filter_keyword_spec.rb diff --git a/.circleci/config.yml b/.circleci/config.yml index b9228f996..2a60ae684 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -133,6 +133,12 @@ jobs: - run: command: ./bin/rails tests:migrations:populate_v2_4 name: Populate database with test data + - run: + command: ./bin/rails db:migrate VERSION=20180707154237 + name: Run migrations up to v2.4.3 + - run: + command: ./bin/rails tests:migrations:populate_v2_4_3 + name: Populate database with test data - run: command: ./bin/rails db:migrate name: Run all remaining migrations @@ -167,14 +173,22 @@ jobs: - run: command: ./bin/rails tests:migrations:populate_v2_4 name: Populate database with test data + - run: + command: ./bin/rails db:migrate VERSION=20180707154237 + name: Run migrations up to v2.4.3 + environment: + SKIP_POST_DEPLOYMENT_MIGRATIONS: true + - run: + command: ./bin/rails tests:migrations:populate_v2_4_3 + name: Populate database with test data - run: command: ./bin/rails db:migrate - name: Run all pre-deployment migrations + name: Run all remaining pre-deployment migrations environment: SKIP_POST_DEPLOYMENT_MIGRATIONS: true - run: command: ./bin/rails db:migrate - name: Run all post-deployment remaining migrations + name: Run all post-deployment migrations - run: command: ./bin/rails tests:migrations:check_database name: Check migration result diff --git a/Gemfile b/Gemfile index d732f6eed..9a7635b06 100644 --- a/Gemfile +++ b/Gemfile @@ -153,3 +153,5 @@ gem 'concurrent-ruby', require: false gem 'connection_pool', require: false gem 'xorcist', '~> 1.1' + +gem 'cocoon', '~> 1.2' diff --git a/Gemfile.lock b/Gemfile.lock index 36a0984e1..7e022b198 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -163,6 +163,7 @@ GEM elasticsearch-dsl chunky_png (1.4.0) climate_control (0.2.0) + cocoon (1.2.15) coderay (1.1.3) color_diff (0.1) concurrent-ruby (1.1.10) @@ -746,6 +747,7 @@ DEPENDENCIES charlock_holmes (~> 0.7.7) chewy (~> 7.2) climate_control (~> 0.2) + cocoon (~> 1.2) color_diff (~> 0.1) concurrent-ruby connection_pool diff --git a/app/controllers/api/v1/filters/keywords_controller.rb b/app/controllers/api/v1/filters/keywords_controller.rb new file mode 100644 index 000000000..d3718a137 --- /dev/null +++ b/app/controllers/api/v1/filters/keywords_controller.rb @@ -0,0 +1,50 @@ +# frozen_string_literal: true + +class Api::V1::Filters::KeywordsController < Api::BaseController + before_action -> { doorkeeper_authorize! :read, :'read:filters' }, only: [:index, :show] + before_action -> { doorkeeper_authorize! :write, :'write:filters' }, except: [:index, :show] + before_action :require_user! + + before_action :set_keywords, only: :index + before_action :set_keyword, only: [:show, :update, :destroy] + + def index + render json: @keywords, each_serializer: REST::FilterKeywordSerializer + end + + def create + @keyword = current_account.custom_filters.find(params[:filter_id]).keywords.create!(resource_params) + + render json: @keyword, serializer: REST::FilterKeywordSerializer + end + + def show + render json: @keyword, serializer: REST::FilterKeywordSerializer + end + + def update + @keyword.update!(resource_params) + + render json: @keyword, serializer: REST::FilterKeywordSerializer + end + + def destroy + @keyword.destroy! + render_empty + end + + private + + def set_keywords + filter = current_account.custom_filters.includes(:keywords).find(params[:filter_id]) + @keywords = filter.keywords + end + + def set_keyword + @keyword = CustomFilterKeyword.includes(:custom_filter).where(custom_filter: { account: current_account }).find(params[:id]) + end + + def resource_params + params.permit(:keyword, :whole_word) + end +end diff --git a/app/controllers/api/v1/filters_controller.rb b/app/controllers/api/v1/filters_controller.rb index b0ace3af0..07cd14147 100644 --- a/app/controllers/api/v1/filters_controller.rb +++ b/app/controllers/api/v1/filters_controller.rb @@ -8,21 +8,32 @@ class Api::V1::FiltersController < Api::BaseController before_action :set_filter, only: [:show, :update, :destroy] def index - render json: @filters, each_serializer: REST::FilterSerializer + render json: @filters, each_serializer: REST::V1::FilterSerializer end def create - @filter = current_account.custom_filters.create!(resource_params) - render json: @filter, serializer: REST::FilterSerializer + ApplicationRecord.transaction do + filter_category = current_account.custom_filters.create!(resource_params) + @filter = filter_category.keywords.create!(keyword_params) + end + + render json: @filter, serializer: REST::V1::FilterSerializer end def show - render json: @filter, serializer: REST::FilterSerializer + render json: @filter, serializer: REST::V1::FilterSerializer end def update - @filter.update!(resource_params) - render json: @filter, serializer: REST::FilterSerializer + ApplicationRecord.transaction do + @filter.update!(keyword_params) + @filter.custom_filter.assign_attributes(filter_params) + raise Mastodon::ValidationError, I18n.t('filters.errors.deprecated_api_multiple_keywords') if @filter.custom_filter.changed? && @filter.custom_filter.keywords.count > 1 + + @filter.custom_filter.save! + end + + render json: @filter, serializer: REST::V1::FilterSerializer end def destroy @@ -33,14 +44,22 @@ class Api::V1::FiltersController < Api::BaseController private def set_filters - @filters = current_account.custom_filters + @filters = CustomFilterKeyword.includes(:custom_filter).where(custom_filter: { account: current_account }) end def set_filter - @filter = current_account.custom_filters.find(params[:id]) + @filter = CustomFilterKeyword.includes(:custom_filter).where(custom_filter: { account: current_account }).find(params[:id]) end def resource_params params.permit(:phrase, :expires_in, :irreversible, :whole_word, context: []) end + + def filter_params + resource_params.slice(:expires_in, :irreversible, :context) + end + + def keyword_params + resource_params.slice(:phrase, :whole_word) + end end diff --git a/app/controllers/api/v2/filters_controller.rb b/app/controllers/api/v2/filters_controller.rb new file mode 100644 index 000000000..8ff3076cf --- /dev/null +++ b/app/controllers/api/v2/filters_controller.rb @@ -0,0 +1,48 @@ +# frozen_string_literal: true + +class Api::V2::FiltersController < Api::BaseController + before_action -> { doorkeeper_authorize! :read, :'read:filters' }, only: [:index, :show] + before_action -> { doorkeeper_authorize! :write, :'write:filters' }, except: [:index, :show] + before_action :require_user! + before_action :set_filters, only: :index + before_action :set_filter, only: [:show, :update, :destroy] + + def index + render json: @filters, each_serializer: REST::FilterSerializer, rules_requested: true + end + + def create + @filter = current_account.custom_filters.create!(resource_params) + + render json: @filter, serializer: REST::FilterSerializer, rules_requested: true + end + + def show + render json: @filter, serializer: REST::FilterSerializer, rules_requested: true + end + + def update + @filter.update!(resource_params) + + render json: @filter, serializer: REST::FilterSerializer, rules_requested: true + end + + def destroy + @filter.destroy! + render_empty + end + + private + + def set_filters + @filters = current_account.custom_filters.includes(:keywords) + end + + def set_filter + @filter = current_account.custom_filters.find(params[:id]) + end + + def resource_params + params.permit(:title, :expires_in, :filter_action, context: [], keywords_attributes: [:id, :keyword, :whole_word, :_destroy]) + end +end diff --git a/app/controllers/filters_controller.rb b/app/controllers/filters_controller.rb index 79a1ab02b..5ed53bce1 100644 --- a/app/controllers/filters_controller.rb +++ b/app/controllers/filters_controller.rb @@ -4,16 +4,16 @@ class FiltersController < ApplicationController layout 'admin' before_action :authenticate_user! - before_action :set_filters, only: :index before_action :set_filter, only: [:edit, :update, :destroy] before_action :set_body_classes def index - @filters = current_account.custom_filters.order(:phrase) + @filters = current_account.custom_filters.includes(:keywords).order(:phrase) end def new - @filter = current_account.custom_filters.build + @filter = current_account.custom_filters.build(action: :warn) + @filter.keywords.build end def create @@ -43,16 +43,12 @@ class FiltersController < ApplicationController private - def set_filters - @filters = current_account.custom_filters - end - def set_filter @filter = current_account.custom_filters.find(params[:id]) end def resource_params - params.require(:custom_filter).permit(:phrase, :expires_in, :irreversible, :whole_word, context: []) + params.require(:custom_filter).permit(:title, :expires_in, :filter_action, context: [], keywords_attributes: [:id, :keyword, :whole_word, :_destroy]) end def set_body_classes diff --git a/app/javascript/mastodon/actions/filters.js b/app/javascript/mastodon/actions/filters.js deleted file mode 100644 index 7fa1c9a70..000000000 --- a/app/javascript/mastodon/actions/filters.js +++ /dev/null @@ -1,26 +0,0 @@ -import api from '../api'; - -export const FILTERS_FETCH_REQUEST = 'FILTERS_FETCH_REQUEST'; -export const FILTERS_FETCH_SUCCESS = 'FILTERS_FETCH_SUCCESS'; -export const FILTERS_FETCH_FAIL = 'FILTERS_FETCH_FAIL'; - -export const fetchFilters = () => (dispatch, getState) => { - dispatch({ - type: FILTERS_FETCH_REQUEST, - skipLoading: true, - }); - - api(getState) - .get('/api/v1/filters') - .then(({ data }) => dispatch({ - type: FILTERS_FETCH_SUCCESS, - filters: data, - skipLoading: true, - })) - .catch(err => dispatch({ - type: FILTERS_FETCH_FAIL, - err, - skipLoading: true, - skipAlert: true, - })); -}; diff --git a/app/javascript/mastodon/actions/importer/index.js b/app/javascript/mastodon/actions/importer/index.js index f4372fb31..9c69be601 100644 --- a/app/javascript/mastodon/actions/importer/index.js +++ b/app/javascript/mastodon/actions/importer/index.js @@ -5,6 +5,7 @@ export const ACCOUNTS_IMPORT = 'ACCOUNTS_IMPORT'; export const STATUS_IMPORT = 'STATUS_IMPORT'; export const STATUSES_IMPORT = 'STATUSES_IMPORT'; export const POLLS_IMPORT = 'POLLS_IMPORT'; +export const FILTERS_IMPORT = 'FILTERS_IMPORT'; function pushUnique(array, object) { if (array.every(element => element.id !== object.id)) { @@ -28,6 +29,10 @@ export function importStatuses(statuses) { return { type: STATUSES_IMPORT, statuses }; } +export function importFilters(filters) { + return { type: FILTERS_IMPORT, filters }; +} + export function importPolls(polls) { return { type: POLLS_IMPORT, polls }; } @@ -61,11 +66,16 @@ export function importFetchedStatuses(statuses) { const accounts = []; const normalStatuses = []; const polls = []; + const filters = []; function processStatus(status) { pushUnique(normalStatuses, normalizeStatus(status, getState().getIn(['statuses', status.id]))); pushUnique(accounts, status.account); + if (status.filtered) { + status.filtered.forEach(result => pushUnique(filters, result.filter)); + } + if (status.reblog && status.reblog.id) { processStatus(status.reblog); } @@ -80,6 +90,7 @@ export function importFetchedStatuses(statuses) { dispatch(importPolls(polls)); dispatch(importFetchedAccounts(accounts)); dispatch(importStatuses(normalStatuses)); + dispatch(importFilters(filters)); }; } diff --git a/app/javascript/mastodon/actions/importer/normalizer.js b/app/javascript/mastodon/actions/importer/normalizer.js index ca76e3494..8a22f83fa 100644 --- a/app/javascript/mastodon/actions/importer/normalizer.js +++ b/app/javascript/mastodon/actions/importer/normalizer.js @@ -42,6 +42,14 @@ export function normalizeAccount(account) { return account; } +export function normalizeFilterResult(result) { + const normalResult = { ...result }; + + normalResult.filter = normalResult.filter.id; + + return normalResult; +} + export function normalizeStatus(status, normalOldStatus) { const normalStatus = { ...status }; normalStatus.account = status.account.id; @@ -54,6 +62,10 @@ export function normalizeStatus(status, normalOldStatus) { normalStatus.poll = status.poll.id; } + if (status.filtered) { + normalStatus.filtered = status.filtered.map(normalizeFilterResult); + } + // Only calculate these values when status first encountered and // when the underlying values change. Otherwise keep the ones // already in the reducer diff --git a/app/javascript/mastodon/actions/notifications.js b/app/javascript/mastodon/actions/notifications.js index 84dfbeef3..3c42f71da 100644 --- a/app/javascript/mastodon/actions/notifications.js +++ b/app/javascript/mastodon/actions/notifications.js @@ -12,10 +12,8 @@ import { saveSettings } from './settings'; import { defineMessages } from 'react-intl'; import { List as ImmutableList } from 'immutable'; import { unescapeHTML } from '../utils/html'; -import { getFiltersRegex } from '../selectors'; import { usePendingItems as preferPendingItems } from 'mastodon/initial_state'; import compareId from 'mastodon/compare_id'; -import { searchTextFromRawStatus } from 'mastodon/actions/importer/normalizer'; import { requestNotificationPermission } from '../utils/notifications'; export const NOTIFICATIONS_UPDATE = 'NOTIFICATIONS_UPDATE'; @@ -62,20 +60,17 @@ export function updateNotifications(notification, intlMessages, intlLocale) { const showInColumn = activeFilter === 'all' ? getState().getIn(['settings', 'notifications', 'shows', notification.type], true) : activeFilter === notification.type; const showAlert = getState().getIn(['settings', 'notifications', 'alerts', notification.type], true); const playSound = getState().getIn(['settings', 'notifications', 'sounds', notification.type], true); - const filters = getFiltersRegex(getState(), { contextType: 'notifications' }); let filtered = false; - if (['mention', 'status'].includes(notification.type)) { - const dropRegex = filters[0]; - const regex = filters[1]; - const searchIndex = searchTextFromRawStatus(notification.status); + if (['mention', 'status'].includes(notification.type) && notification.status.filtered) { + const filters = notification.status.filtered.filter(result => result.filter.context.includes('notifications')); - if (dropRegex && dropRegex.test(searchIndex)) { + if (filters.some(result => result.filter.filter_action === 'hide')) { return; } - filtered = regex && regex.test(searchIndex); + filtered = filters.length > 0; } if (['follow_request'].includes(notification.type)) { diff --git a/app/javascript/mastodon/actions/streaming.js b/app/javascript/mastodon/actions/streaming.js index d76f045c8..84709083f 100644 --- a/app/javascript/mastodon/actions/streaming.js +++ b/app/javascript/mastodon/actions/streaming.js @@ -21,7 +21,6 @@ import { updateReaction as updateAnnouncementsReaction, deleteAnnouncement, } from './announcements'; -import { fetchFilters } from './filters'; import { getLocale } from '../locales'; const { messages } = getLocale(); @@ -97,9 +96,6 @@ export const connectTimelineStream = (timelineId, channelName, params = {}, opti case 'conversation': dispatch(updateConversations(JSON.parse(data.payload))); break; - case 'filters_changed': - dispatch(fetchFilters()); - break; case 'announcement': dispatch(updateAnnouncements(JSON.parse(data.payload))); break; diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js index 7c44669d2..4ca392824 100644 --- a/app/javascript/mastodon/components/status.js +++ b/app/javascript/mastodon/components/status.js @@ -116,6 +116,7 @@ class Status extends ImmutablePureComponent { state = { showMedia: defaultMediaVisibility(this.props.status), statusId: undefined, + forceFilter: undefined, }; static getDerivedStateFromProps(nextProps, prevState) { @@ -277,6 +278,15 @@ class Status extends ImmutablePureComponent { this.handleToggleMediaVisibility(); } + handleUnfilterClick = e => { + this.setState({ forceFilter: false }); + e.preventDefault(); + } + + handleFilterClick = () => { + this.setState({ forceFilter: true }); + } + _properStatus () { const { status } = this.props; @@ -328,7 +338,8 @@ class Status extends ImmutablePureComponent { ); } - if (status.get('filtered') || status.getIn(['reblog', 'filtered'])) { + const matchedFilters = status.get('filtered') || status.getIn(['reblog', 'filtered']); + if (this.state.forceFilter === undefined ? matchedFilters : this.state.forceFilter) { const minHandlers = this.props.muted ? {} : { moveUp: this.handleHotkeyMoveUp, moveDown: this.handleHotkeyMoveDown, @@ -337,7 +348,11 @@ class Status extends ImmutablePureComponent { return (
- + : {matchedFilters.join(', ')}. + {' '} +
); @@ -496,7 +511,7 @@ class Status extends ImmutablePureComponent { {media} - +
diff --git a/app/javascript/mastodon/components/status_action_bar.js b/app/javascript/mastodon/components/status_action_bar.js index 1d8fe23da..ab8755be0 100644 --- a/app/javascript/mastodon/components/status_action_bar.js +++ b/app/javascript/mastodon/components/status_action_bar.js @@ -38,6 +38,7 @@ const messages = defineMessages({ admin_account: { id: 'status.admin_account', defaultMessage: 'Open moderation interface for @{name}' }, admin_status: { id: 'status.admin_status', defaultMessage: 'Open this status in the moderation interface' }, copy: { id: 'status.copy', defaultMessage: 'Copy link to status' }, + hide: { id: 'status.hide', defaultMessage: 'Hide toot' }, blockDomain: { id: 'account.block_domain', defaultMessage: 'Block domain {domain}' }, unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unblock domain {domain}' }, unmute: { id: 'account.unmute', defaultMessage: 'Unmute @{name}' }, @@ -76,6 +77,7 @@ class StatusActionBar extends ImmutablePureComponent { onMuteConversation: PropTypes.func, onPin: PropTypes.func, onBookmark: PropTypes.func, + onFilter: PropTypes.func, withDismiss: PropTypes.bool, withCounters: PropTypes.bool, scrollKey: PropTypes.string, @@ -207,6 +209,10 @@ class StatusActionBar extends ImmutablePureComponent { this.props.onMuteConversation(this.props.status); } + handleFilter = () => { + this.props.onFilter(); + } + handleCopy = () => { const url = this.props.status.get('url'); const textarea = document.createElement('textarea'); @@ -226,6 +232,11 @@ class StatusActionBar extends ImmutablePureComponent { } } + + handleFilterClick = () => { + this.props.onFilter(); + } + render () { const { status, relationship, intl, withDismiss, withCounters, scrollKey } = this.props; @@ -329,6 +340,10 @@ class StatusActionBar extends ImmutablePureComponent { ); + const filterButton = this.props.onFilter && ( + + ); + return (
@@ -337,6 +352,8 @@ class StatusActionBar extends ImmutablePureComponent { {shareButton} + {filterButton} +
this.props.dispatch(fetchFilters()), 500); + setTimeout(() => this.props.dispatch(fetchRules()), 3000); this.hotkeys.__mousetrap__.stopCallback = (e, element) => { diff --git a/app/javascript/mastodon/reducers/filters.js b/app/javascript/mastodon/reducers/filters.js index 33f0c6732..14b704027 100644 --- a/app/javascript/mastodon/reducers/filters.js +++ b/app/javascript/mastodon/reducers/filters.js @@ -1,10 +1,34 @@ -import { FILTERS_FETCH_SUCCESS } from '../actions/filters'; -import { List as ImmutableList, fromJS } from 'immutable'; +import { FILTERS_IMPORT } from '../actions/importer'; +import { Map as ImmutableMap, is, fromJS } from 'immutable'; -export default function filters(state = ImmutableList(), action) { +const normalizeFilter = (state, filter) => { + const normalizedFilter = fromJS({ + id: filter.id, + title: filter.title, + context: filter.context, + filter_action: filter.filter_action, + expires_at: filter.expires_at ? Date.parse(filter.expires_at) : null, + }); + + if (is(state.get(filter.id), normalizedFilter)) { + return state; + } else { + return state.set(filter.id, normalizedFilter); + } +}; + +const normalizeFilters = (state, filters) => { + filters.forEach(filter => { + state = normalizeFilter(state, filter); + }); + + return state; +}; + +export default function filters(state = ImmutableMap(), action) { switch(action.type) { - case FILTERS_FETCH_SUCCESS: - return fromJS(action.filters); + case FILTERS_IMPORT: + return normalizeFilters(state, action.filters); default: return state; } diff --git a/app/javascript/mastodon/selectors/index.js b/app/javascript/mastodon/selectors/index.js index fbd25b605..6aeb8b7bd 100644 --- a/app/javascript/mastodon/selectors/index.js +++ b/app/javascript/mastodon/selectors/index.js @@ -40,15 +40,15 @@ const toServerSideType = columnType => { const escapeRegExp = string => string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string -const regexFromFilters = filters => { - if (filters.size === 0) { +const regexFromKeywords = keywords => { + if (keywords.size === 0) { return null; } - return new RegExp(filters.map(filter => { - let expr = escapeRegExp(filter.get('phrase')); + return new RegExp(keywords.map(keyword_filter => { + let expr = escapeRegExp(keyword_filter.get('keyword')); - if (filter.get('whole_word')) { + if (keyword_filter.get('whole_word')) { if (/^[\w]/.test(expr)) { expr = `\\b${expr}`; } @@ -62,27 +62,15 @@ const regexFromFilters = filters => { }).join('|'), 'i'); }; -// Memoize the filter regexps for each valid server contextType -const makeGetFiltersRegex = () => { - let memo = {}; +const getFilters = (state, { contextType }) => { + if (!contextType) return null; - return (state, { contextType }) => { - if (!contextType) return ImmutableList(); + const serverSideType = toServerSideType(contextType); + const now = new Date(); - const serverSideType = toServerSideType(contextType); - const filters = state.get('filters', ImmutableList()).filter(filter => filter.get('context').includes(serverSideType) && (filter.get('expires_at') === null || Date.parse(filter.get('expires_at')) > (new Date()))); - - if (!memo[serverSideType] || !is(memo[serverSideType].filters, filters)) { - const dropRegex = regexFromFilters(filters.filter(filter => filter.get('irreversible'))); - const regex = regexFromFilters(filters); - memo[serverSideType] = { filters: filters, results: [dropRegex, regex] }; - } - return memo[serverSideType].results; - }; + return state.get('filters').filter((filter) => filter.get('context').includes(serverSideType) && (filter.get('expires_at') === null || filter.get('expires_at') > now)); }; -export const getFiltersRegex = makeGetFiltersRegex(); - export const makeGetStatus = () => { return createSelector( [ @@ -90,10 +78,10 @@ export const makeGetStatus = () => { (state, { id }) => state.getIn(['statuses', state.getIn(['statuses', id, 'reblog'])]), (state, { id }) => state.getIn(['accounts', state.getIn(['statuses', id, 'account'])]), (state, { id }) => state.getIn(['accounts', state.getIn(['statuses', state.getIn(['statuses', id, 'reblog']), 'account'])]), - getFiltersRegex, + getFilters, ], - (statusBase, statusReblog, accountBase, accountReblog, filtersRegex) => { + (statusBase, statusReblog, accountBase, accountReblog, filters) => { if (!statusBase) { return null; } @@ -104,14 +92,17 @@ export const makeGetStatus = () => { statusReblog = null; } - const dropRegex = (accountReblog || accountBase).get('id') !== me && filtersRegex[0]; - if (dropRegex && dropRegex.test(statusBase.get('reblog') ? statusReblog.get('search_index') : statusBase.get('search_index'))) { - return null; + let filtered = false; + if ((accountReblog || accountBase).get('id') !== me && filters) { + let filterResults = statusReblog?.get('filtered') || statusBase.get('filtered') || ImmutableList(); + if (filterResults.some((result) => filters.getIn([result.get('filter'), 'filter_action']) === 'hide')) { + return null; + } + if (!filterResults.isEmpty()) { + filtered = filterResults.map(result => filters.getIn([result.get('filter'), 'title'])); + } } - const regex = (accountReblog || accountBase).get('id') !== me && filtersRegex[1]; - const filtered = regex && regex.test(statusBase.get('reblog') ? statusReblog.get('search_index') : statusBase.get('search_index')); - return statusBase.withMutations(map => { map.set('reblog', statusReblog); map.set('account', accountBase); diff --git a/app/javascript/packs/public.js b/app/javascript/packs/public.js index 3d0a937e1..e42468e0c 100644 --- a/app/javascript/packs/public.js +++ b/app/javascript/packs/public.js @@ -4,6 +4,7 @@ import loadPolyfills from '../mastodon/load_polyfills'; import ready from '../mastodon/ready'; import { start } from '../mastodon/common'; import loadKeyboardExtensions from '../mastodon/load_keyboard_extensions'; +import 'cocoon-js-vanilla'; start(); diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index 66e2997f1..4ce5cd101 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -915,7 +915,8 @@ a.name-tag, text-align: center; } -.applications-list__item { +.applications-list__item, +.filters-list__item { padding: 15px 0; background: $ui-base-color; border: 1px solid lighten($ui-base-color, 4%); @@ -923,7 +924,8 @@ a.name-tag, margin-top: 15px; } -.announcements-list { +.announcements-list, +.filters-list { border: 1px solid lighten($ui-base-color, 4%); border-radius: 4px; @@ -976,6 +978,33 @@ a.name-tag, } } +.filters-list__item { + &__title { + display: flex; + justify-content: space-between; + margin-bottom: 0; + } + + &__permissions { + margin-top: 0; + margin-bottom: 10px; + } + + .expiration { + font-size: 13px; + } + + &.expired { + .expiration { + color: lighten($error-red, 12%); + } + + .permissions-list__item__icon { + color: $dark-text-color; + } + } +} + .dashboard__counters.admin-account-counters { margin-top: 10px; } diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 7e3ce3de2..592ce91f3 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -959,6 +959,21 @@ width: 100%; clear: both; border-bottom: 1px solid lighten($ui-base-color, 8%); + + &__button { + display: inline; + color: lighten($ui-highlight-color, 8%); + border: 0; + background: transparent; + padding: 0; + font-size: inherit; + line-height: inherit; + + &:hover, + &:active { + text-decoration: underline; + } + } } .status__prepend-icon-wrapper { diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss index d57eabc09..da699dd25 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -1070,3 +1070,34 @@ code { } } } + +.keywords-table { + thead { + th { + white-space: nowrap; + } + + th:first-child { + width: 100%; + } + } + + tfoot { + td { + border: 0; + } + } + + .input.string { + margin-bottom: 0; + } + + .label_input__wrapper { + margin-top: 10px; + } + + .table-action-link { + margin-top: 10px; + white-space: nowrap; + } +} diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb index 4811ebbcc..2eb4ba2f4 100644 --- a/app/lib/feed_manager.rb +++ b/app/lib/feed_manager.rb @@ -352,7 +352,6 @@ class FeedManager def filter_from_home?(status, receiver_id, crutches) return false if receiver_id == status.account_id return true if status.reply? && (status.in_reply_to_id.nil? || status.in_reply_to_account_id.nil?) - return true if phrase_filtered?(status, receiver_id, :home) check_for_blocks = crutches[:active_mentions][status.id] || [] check_for_blocks.concat([status.account_id]) @@ -388,7 +387,6 @@ class FeedManager # @return [Boolean] def filter_from_mentions?(status, receiver_id) return true if receiver_id == status.account_id - return true if phrase_filtered?(status, receiver_id, :notifications) # This filter is called from NotifyService, but already after the sender of # the notification has been checked for mute/block. Therefore, it's not @@ -418,34 +416,6 @@ class FeedManager false end - # Check if the status hits a phrase filter - # @param [Status] status - # @param [Integer] receiver_id - # @param [Symbol] context - # @return [Boolean] - def phrase_filtered?(status, receiver_id, context) - active_filters = Rails.cache.fetch("filters:#{receiver_id}") { CustomFilter.where(account_id: receiver_id).active_irreversible.to_a }.to_a - - active_filters.select! { |filter| filter.context.include?(context.to_s) && !filter.expired? } - - active_filters.map! do |filter| - if filter.whole_word - sb = /\A[[:word:]]/.match?(filter.phrase) ? '\b' : '' - eb = /[[:word:]]\z/.match?(filter.phrase) ? '\b' : '' - - /(?mix:#{sb}#{Regexp.escape(filter.phrase)}#{eb})/ - else - /#{Regexp.escape(filter.phrase)}/i - end - end - - return false if active_filters.empty? - - combined_regex = Regexp.union(active_filters) - - combined_regex.match?(status.proper.searchable_text) - end - # Adds a status to an account's feed, returning true if a status was # added, and false if it was not added to the feed. Note that this is # an internal helper: callers must call trim or push updates if diff --git a/app/models/concerns/account_interactions.rb b/app/models/concerns/account_interactions.rb index ad1665dc4..a7401362f 100644 --- a/app/models/concerns/account_interactions.rb +++ b/app/models/concerns/account_interactions.rb @@ -247,6 +247,19 @@ module AccountInteractions account_pins.where(target_account: account).exists? end + def status_matches_filters(status) + active_filters = CustomFilter.cached_filters_for(id) + + filter_matches = active_filters.filter_map do |filter, rules| + next if rules[:keywords].blank? + + match = rules[:keywords].match(status.proper.searchable_text) + FilterResultPresenter.new(filter: filter, keyword_matches: [match.to_s]) unless match.nil? + end + + filter_matches + end + def followers_for_local_distribution followers.local .joins(:user) diff --git a/app/models/custom_filter.rb b/app/models/custom_filter.rb index 8e3476794..e98ed7df9 100644 --- a/app/models/custom_filter.rb +++ b/app/models/custom_filter.rb @@ -3,18 +3,22 @@ # # Table name: custom_filters # -# id :bigint(8) not null, primary key -# account_id :bigint(8) -# expires_at :datetime -# phrase :text default(""), not null -# context :string default([]), not null, is an Array -# whole_word :boolean default(TRUE), not null -# irreversible :boolean default(FALSE), not null -# created_at :datetime not null -# updated_at :datetime not null +# id :bigint not null, primary key +# account_id :bigint +# expires_at :datetime +# phrase :text default(""), not null +# context :string default([]), not null, is an Array +# created_at :datetime not null +# updated_at :datetime not null +# action :integer default(0), not null # class CustomFilter < ApplicationRecord + self.ignored_columns = %w(whole_word irreversible) + + alias_attribute :title, :phrase + alias_attribute :filter_action, :action + VALID_CONTEXTS = %w( home notifications @@ -26,16 +30,20 @@ class CustomFilter < ApplicationRecord include Expireable include Redisable + enum action: [:warn, :hide], _suffix: :action + belongs_to :account + has_many :keywords, class_name: 'CustomFilterKeyword', foreign_key: :custom_filter_id, inverse_of: :custom_filter, dependent: :destroy + accepts_nested_attributes_for :keywords, reject_if: :all_blank, allow_destroy: true - validates :phrase, :context, presence: true + validates :title, :context, presence: true validate :context_must_be_valid - validate :irreversible_must_be_within_context - - scope :active_irreversible, -> { where(irreversible: true).where(Arel.sql('expires_at IS NULL OR expires_at > NOW()')) } before_validation :clean_up_contexts - after_commit :remove_cache + + before_save :prepare_cache_invalidation! + before_destroy :prepare_cache_invalidation! + after_commit :invalidate_cache! def expires_in return @expires_in if defined?(@expires_in) @@ -44,22 +52,55 @@ class CustomFilter < ApplicationRecord [30.minutes, 1.hour, 6.hours, 12.hours, 1.day, 1.week].find { |expires_in| expires_in.from_now >= expires_at } end + def irreversible=(value) + self.action = value ? :hide : :warn + end + + def irreversible? + hide_action? + end + + def self.cached_filters_for(account_id) + active_filters = Rails.cache.fetch("filters:v3:#{account_id}") do + scope = CustomFilterKeyword.includes(:custom_filter).where(custom_filter: { account_id: account_id }).where(Arel.sql('expires_at IS NULL OR expires_at > NOW()')) + scope.to_a.group_by(&:custom_filter).map do |filter, keywords| + keywords.map! do |keyword| + if keyword.whole_word + sb = /\A[[:word:]]/.match?(keyword.keyword) ? '\b' : '' + eb = /[[:word:]]\z/.match?(keyword.keyword) ? '\b' : '' + + /(?mix:#{sb}#{Regexp.escape(keyword.keyword)}#{eb})/ + else + /#{Regexp.escape(keyword.keyword)}/i + end + end + [filter, { keywords: Regexp.union(keywords) }] + end + end.to_a + + active_filters.select { |custom_filter, _| !custom_filter.expired? } + end + + def prepare_cache_invalidation! + @should_invalidate_cache = true + end + + def invalidate_cache! + return unless @should_invalidate_cache + @should_invalidate_cache = false + + Rails.cache.delete("filters:v3:#{account_id}") + redis.publish("timeline:#{account_id}", Oj.dump(event: :filters_changed)) + redis.publish("timeline:system:#{account_id}", Oj.dump(event: :filters_changed)) + end + private def clean_up_contexts self.context = Array(context).map(&:strip).filter_map(&:presence) end - def remove_cache - Rails.cache.delete("filters:#{account_id}") - redis.publish("timeline:#{account_id}", Oj.dump(event: :filters_changed)) - end - def context_must_be_valid errors.add(:context, I18n.t('filters.errors.invalid_context')) if context.empty? || context.any? { |c| !VALID_CONTEXTS.include?(c) } end - - def irreversible_must_be_within_context - errors.add(:irreversible, I18n.t('filters.errors.invalid_irreversible')) if irreversible? && !context.include?('home') && !context.include?('notifications') - end end diff --git a/app/models/custom_filter_keyword.rb b/app/models/custom_filter_keyword.rb new file mode 100644 index 000000000..bf5c55746 --- /dev/null +++ b/app/models/custom_filter_keyword.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true +# == Schema Information +# +# Table name: custom_filter_keywords +# +# id :bigint not null, primary key +# custom_filter_id :bigint not null +# keyword :text default(""), not null +# whole_word :boolean default(TRUE), not null +# created_at :datetime not null +# updated_at :datetime not null +# + +class CustomFilterKeyword < ApplicationRecord + belongs_to :custom_filter + + validates :keyword, presence: true + + alias_attribute :phrase, :keyword + + before_save :prepare_cache_invalidation! + before_destroy :prepare_cache_invalidation! + after_commit :invalidate_cache! + + private + + def prepare_cache_invalidation! + custom_filter.prepare_cache_invalidation! + end + + def invalidate_cache! + custom_filter.invalidate_cache! + end +end diff --git a/app/presenters/filter_result_presenter.rb b/app/presenters/filter_result_presenter.rb new file mode 100644 index 000000000..677225f5e --- /dev/null +++ b/app/presenters/filter_result_presenter.rb @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +class FilterResultPresenter < ActiveModelSerializers::Model + attributes :filter, :keyword_matches +end diff --git a/app/presenters/status_relationships_presenter.rb b/app/presenters/status_relationships_presenter.rb index 4163bb098..d7ffb1954 100644 --- a/app/presenters/status_relationships_presenter.rb +++ b/app/presenters/status_relationships_presenter.rb @@ -2,7 +2,7 @@ class StatusRelationshipsPresenter attr_reader :reblogs_map, :favourites_map, :mutes_map, :pins_map, - :bookmarks_map + :bookmarks_map, :filters_map def initialize(statuses, current_account_id = nil, **options) if current_account_id.nil? @@ -11,12 +11,14 @@ class StatusRelationshipsPresenter @bookmarks_map = {} @mutes_map = {} @pins_map = {} + @filters_map = {} else statuses = statuses.compact status_ids = statuses.flat_map { |s| [s.id, s.reblog_of_id] }.uniq.compact conversation_ids = statuses.filter_map(&:conversation_id).uniq pinnable_status_ids = statuses.map(&:proper).filter_map { |s| s.id if s.account_id == current_account_id && %w(public unlisted private).include?(s.visibility) } + @filters_map = build_filters_map(statuses, current_account_id).merge(options[:filters_map] || {}) @reblogs_map = Status.reblogs_map(status_ids, current_account_id).merge(options[:reblogs_map] || {}) @favourites_map = Status.favourites_map(status_ids, current_account_id).merge(options[:favourites_map] || {}) @bookmarks_map = Status.bookmarks_map(status_ids, current_account_id).merge(options[:bookmarks_map] || {}) @@ -24,4 +26,24 @@ class StatusRelationshipsPresenter @pins_map = Status.pins_map(pinnable_status_ids, current_account_id).merge(options[:pins_map] || {}) end end + + private + + def build_filters_map(statuses, current_account_id) + active_filters = CustomFilter.cached_filters_for(current_account_id) + + @filters_map = statuses.each_with_object({}) do |status, h| + filter_matches = active_filters.filter_map do |filter, rules| + next if rules[:keywords].blank? + + match = rules[:keywords].match(status.proper.searchable_text) + FilterResultPresenter.new(filter: filter, keyword_matches: [match.to_s]) unless match.nil? + end + + unless filter_matches.empty? + h[status.id] = filter_matches + h[status.reblog_of_id] = filter_matches if status.reblog? + end + end + end end diff --git a/app/serializers/rest/filter_keyword_serializer.rb b/app/serializers/rest/filter_keyword_serializer.rb new file mode 100644 index 000000000..dd2ebac6e --- /dev/null +++ b/app/serializers/rest/filter_keyword_serializer.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class REST::FilterKeywordSerializer < ActiveModel::Serializer + attributes :id, :keyword, :whole_word + + def id + object.id.to_s + end +end diff --git a/app/serializers/rest/filter_result_serializer.rb b/app/serializers/rest/filter_result_serializer.rb new file mode 100644 index 000000000..0ef4db79a --- /dev/null +++ b/app/serializers/rest/filter_result_serializer.rb @@ -0,0 +1,6 @@ +# frozen_string_literal: true + +class REST::FilterResultSerializer < ActiveModel::Serializer + belongs_to :filter, serializer: REST::FilterSerializer + has_many :keyword_matches +end diff --git a/app/serializers/rest/filter_serializer.rb b/app/serializers/rest/filter_serializer.rb index 57205630b..98d7edb17 100644 --- a/app/serializers/rest/filter_serializer.rb +++ b/app/serializers/rest/filter_serializer.rb @@ -1,10 +1,14 @@ # frozen_string_literal: true class REST::FilterSerializer < ActiveModel::Serializer - attributes :id, :phrase, :context, :whole_word, :expires_at, - :irreversible + attributes :id, :title, :context, :expires_at, :filter_action + has_many :keywords, serializer: REST::FilterKeywordSerializer, if: :rules_requested? def id object.id.to_s end + + def rules_requested? + instance_options[:rules_requested] + end end diff --git a/app/serializers/rest/status_serializer.rb b/app/serializers/rest/status_serializer.rb index 6bd6a23e5..e0b8f32a6 100644 --- a/app/serializers/rest/status_serializer.rb +++ b/app/serializers/rest/status_serializer.rb @@ -13,6 +13,7 @@ class REST::StatusSerializer < ActiveModel::Serializer attribute :muted, if: :current_user? attribute :bookmarked, if: :current_user? attribute :pinned, if: :pinnable? + has_many :filtered, serializer: REST::FilterResultSerializer, if: :current_user? attribute :content, unless: :source_requested? attribute :text, if: :source_requested? @@ -120,6 +121,14 @@ class REST::StatusSerializer < ActiveModel::Serializer end end + def filtered + if instance_options && instance_options[:relationships] + instance_options[:relationships].filters_map[object.id] || [] + else + current_user.account.status_matches_filters(object) + end + end + def pinnable? current_user? && current_user.account_id == object.account_id && diff --git a/app/serializers/rest/v1/filter_serializer.rb b/app/serializers/rest/v1/filter_serializer.rb new file mode 100644 index 000000000..455f17efd --- /dev/null +++ b/app/serializers/rest/v1/filter_serializer.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +class REST::V1::FilterSerializer < ActiveModel::Serializer + attributes :id, :phrase, :context, :whole_word, :expires_at, + :irreversible + + delegate :context, :expires_at, to: :custom_filter + + def id + object.id.to_s + end + + def phrase + object.keyword + end + + def irreversible + custom_filter.irreversible? + end + + private + + def custom_filter + object.custom_filter + end +end diff --git a/app/views/filters/_fields.html.haml b/app/views/filters/_fields.html.haml deleted file mode 100644 index 84dcdcca5..000000000 --- a/app/views/filters/_fields.html.haml +++ /dev/null @@ -1,16 +0,0 @@ -.fields-row - .fields-row__column.fields-row__column-6.fields-group - = f.input :phrase, as: :string, wrapper: :with_label, hint: false - .fields-row__column.fields-row__column-6.fields-group - = f.input :expires_in, wrapper: :with_label, collection: [30.minutes, 1.hour, 6.hours, 12.hours, 1.day, 1.week].map(&:to_i), label_method: lambda { |i| I18n.t("invites.expires_in.#{i}") }, include_blank: I18n.t('invites.expires_in_prompt') - -.fields-group - = f.input :context, wrapper: :with_block_label, collection: CustomFilter::VALID_CONTEXTS, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', label_method: lambda { |context| I18n.t("filters.contexts.#{context}") }, include_blank: false - -%hr.spacer/ - -.fields-group - = f.input :irreversible, wrapper: :with_label - -.fields-group - = f.input :whole_word, wrapper: :with_label diff --git a/app/views/filters/_filter.html.haml b/app/views/filters/_filter.html.haml new file mode 100644 index 000000000..2ab014081 --- /dev/null +++ b/app/views/filters/_filter.html.haml @@ -0,0 +1,32 @@ +.filters-list__item{ class: [filter.expired? && 'expired'] } + = link_to edit_filter_path(filter), class: 'filters-list__item__title' do + = filter.title + + - if filter.expires? + .expiration{ title: t('filters.index.expires_on', date: l(filter.expires_at)) } + - if filter.expired? + = t('invites.expired') + - else + = t('filters.index.expires_in', distance: distance_of_time_in_words_to_now(filter.expires_at)) + + .filters-list__item__permissions + %ul.permissions-list + - unless filter.keywords.empty? + %li.permissions-list__item + .permissions-list__item__icon + = fa_icon('paragraph') + .permissions-list__item__text + .permissions-list__item__text__title + = t('filters.index.keywords', count: filter.keywords.size) + .permissions-list__item__text__type + - keywords = filter.keywords.map(&:keyword) + - keywords = keywords.take(5) + ['…'] if keywords.size > 5 # TODO + = keywords.join(', ') + + .announcements-list__item__action-bar + .announcements-list__item__meta + = t('filters.index.contexts', contexts: filter.context.map { |context| I18n.t("filters.contexts.#{context}") }.join(', ')) + + %div + = table_link_to 'pencil', t('filters.edit.title'), edit_filter_path(filter) + = table_link_to 'times', t('filters.index.delete'), filter_path(filter), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') } diff --git a/app/views/filters/_filter_fields.html.haml b/app/views/filters/_filter_fields.html.haml new file mode 100644 index 000000000..1a52faa7a --- /dev/null +++ b/app/views/filters/_filter_fields.html.haml @@ -0,0 +1,33 @@ +.fields-row + .fields-row__column.fields-row__column-6.fields-group + = f.input :title, as: :string, wrapper: :with_label, hint: false + .fields-row__column.fields-row__column-6.fields-group + = f.input :expires_in, wrapper: :with_label, collection: [30.minutes, 1.hour, 6.hours, 12.hours, 1.day, 1.week].map(&:to_i), label_method: lambda { |i| I18n.t("invites.expires_in.#{i}") }, include_blank: I18n.t('invites.expires_in_prompt') + +.fields-group + = f.input :context, wrapper: :with_block_label, collection: CustomFilter::VALID_CONTEXTS, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', label_method: lambda { |context| I18n.t("filters.contexts.#{context}") }, include_blank: false + +%hr.spacer/ + +.fields-group + = f.input :filter_action, as: :radio_buttons, collection: %i(warn hide), include_blank: false, wrapper: :with_block_label, label_method: ->(action) { safe_join([t("simple_form.labels.filters.actions.#{action}"), content_tag(:span, t("simple_form.hints.filters.actions.#{action}"), class: 'hint')]) }, hint: t('simple_form.hints.filters.action'), required: true + +%hr.spacer/ + +%h4= t('filters.edit.keywords') + +.table-wrapper + %table.table.keywords-table + %thead + %tr + %th= t('simple_form.labels.defaults.phrase') + %th= t('simple_form.labels.defaults.whole_word') + %th + %tbody + = f.simple_fields_for :keywords do |keyword| + = render 'keyword_fields', f: keyword + %tfoot + %tr + %td{ colspan: 3} + = link_to_add_association f, :keywords, class: 'table-action-link', partial: 'keyword_fields', 'data-association-insertion-node': '.keywords-table tbody', 'data-association-insertion-method': 'append' do + = safe_join([fa_icon('plus'), t('filters.edit.add_keyword')]) diff --git a/app/views/filters/_keyword_fields.html.haml b/app/views/filters/_keyword_fields.html.haml new file mode 100644 index 000000000..eedd514ef --- /dev/null +++ b/app/views/filters/_keyword_fields.html.haml @@ -0,0 +1,8 @@ +%tr.nested-fields + %td= f.input :keyword, as: :string + %td + .label_input__wrapper= f.input_field :whole_word + %td + = f.hidden_field :id if f.object&.persisted? # Required so Rails doesn't put the field outside of the + = link_to_remove_association(f, class: 'table-action-link') do + = safe_join([fa_icon('times'), t('filters.index.delete')]) diff --git a/app/views/filters/edit.html.haml b/app/views/filters/edit.html.haml index e971215ac..3dc3f07b7 100644 --- a/app/views/filters/edit.html.haml +++ b/app/views/filters/edit.html.haml @@ -2,7 +2,7 @@ = t('filters.edit.title') = simple_form_for @filter, url: filter_path(@filter), method: :put do |f| - = render 'fields', f: f + = render 'filter_fields', f: f .actions = f.button :button, t('generic.save_changes'), type: :submit diff --git a/app/views/filters/index.html.haml b/app/views/filters/index.html.haml index b4d5333aa..0227526a4 100644 --- a/app/views/filters/index.html.haml +++ b/app/views/filters/index.html.haml @@ -7,18 +7,5 @@ - if @filters.empty? %div.muted-hint.center-text= t 'filters.index.empty' - else - .table-wrapper - %table.table - %thead - %tr - %th= t('simple_form.labels.defaults.phrase') - %th= t('simple_form.labels.defaults.context') - %th - %tbody - - @filters.each do |filter| - %tr - %td= filter.phrase - %td= filter.context.map { |context| I18n.t("filters.contexts.#{context}") }.join(', ') - %td - = table_link_to 'pencil', t('filters.edit.title'), edit_filter_path(filter) - = table_link_to 'times', t('filters.index.delete'), filter_path(filter), method: :delete + .applications-list + = render partial: 'filter', collection: @filters diff --git a/app/views/filters/new.html.haml b/app/views/filters/new.html.haml index 05bec343f..5f400e604 100644 --- a/app/views/filters/new.html.haml +++ b/app/views/filters/new.html.haml @@ -2,7 +2,7 @@ = t('filters.new.title') = simple_form_for @filter, url: filters_path do |f| - = render 'fields', f: f + = render 'filter_fields', f: f .actions - = f.button :button, t('filters.new.title'), type: :submit + = f.button :button, t('filters.new.save'), type: :submit diff --git a/config/locales/en.yml b/config/locales/en.yml index 5a0fc3da8..91ae3a3bc 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1124,15 +1124,24 @@ en: public: Public timelines thread: Conversations edit: + add_keyword: Add keyword + keywords: Keywords title: Edit filter errors: + deprecated_api_multiple_keywords: These parameters cannot be changed from this application because they apply to more than one filter keyword. Use a more recent application or the web interface. invalid_context: None or invalid context supplied - invalid_irreversible: Irreversible filtering only works with home or notifications context index: + contexts: Filters in %{contexts} delete: Delete empty: You have no filters. + expires_in: Expires in %{distance} + expires_on: Expires on %{date} + keywords: + one: "%{count} keyword" + other: "%{count} keywords" title: Filters new: + save: Save new filter title: Add new filter footer: developers: Developers diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index 7e4f52849..ea4f68562 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -68,6 +68,11 @@ en: with_dns_records: An attempt to resolve the given domain's DNS records will be made and the results will also be blocked featured_tag: name: 'You might want to use one of these:' + filters: + action: Chose which action to perform when a post matches the filter + actions: + hide: Completely hide the filtered content, behaving as if it did not exist + warn: Hide the filtered content behind a warning mentioning the filter's title form_challenge: current_password: You are entering a secure area imports: @@ -181,6 +186,7 @@ en: setting_use_pending_items: Slow mode severity: Severity sign_in_token_attempt: Security code + title: Title type: Import type username: Username username_or_email: Username or Email @@ -189,6 +195,10 @@ en: with_dns_records: Include MX records and IPs of the domain featured_tag: name: Hashtag + filters: + actions: + hide: Hide completely + warn: Hide with a warning interactions: must_be_follower: Block notifications from non-followers must_be_following: Block notifications from people you don't follow diff --git a/config/routes.rb b/config/routes.rb index 1b9c50799..4abf55655 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -451,10 +451,16 @@ Rails.application.routes.draw do resources :bookmarks, only: [:index] resources :reports, only: [:create] resources :trends, only: [:index], controller: 'trends/tags' - resources :filters, only: [:index, :create, :show, :update, :destroy] + resources :filters, only: [:index, :create, :show, :update, :destroy] do + resources :keywords, only: [:index, :create], controller: 'filters/keywords' + end resources :endorsements, only: [:index] resources :markers, only: [:index, :create] + namespace :filters do + resources :keywords, only: [:show, :update, :destroy] + end + namespace :apps do get :verify_credentials, to: 'credentials#show' end @@ -589,6 +595,7 @@ Rails.application.routes.draw do resources :media, only: [:create] get '/search', to: 'search#index', as: :search resources :suggestions, only: [:index] + resources :filters, only: [:index, :create, :show, :update, :destroy] namespace :admin do resources :accounts, only: [:index] diff --git a/db/migrate/20220613110628_create_custom_filter_keywords.rb b/db/migrate/20220613110628_create_custom_filter_keywords.rb new file mode 100644 index 000000000..353fc334f --- /dev/null +++ b/db/migrate/20220613110628_create_custom_filter_keywords.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class CreateCustomFilterKeywords < ActiveRecord::Migration[6.1] + def change + create_table :custom_filter_keywords do |t| + t.belongs_to :custom_filter, foreign_key: { on_delete: :cascade }, null: false + t.text :keyword, null: false, default: '' + t.boolean :whole_word, null: false, default: true + + t.timestamps + end + end +end diff --git a/db/migrate/20220613110711_migrate_custom_filters.rb b/db/migrate/20220613110711_migrate_custom_filters.rb new file mode 100644 index 000000000..ea6a9b8c6 --- /dev/null +++ b/db/migrate/20220613110711_migrate_custom_filters.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +class MigrateCustomFilters < ActiveRecord::Migration[6.1] + def up + # Preserve IDs as much as possible to not confuse existing clients. + # As long as this migration is irreversible, we do not have to deal with conflicts. + safety_assured do + execute <<-SQL.squish + INSERT INTO custom_filter_keywords (id, custom_filter_id, keyword, whole_word, created_at, updated_at) + SELECT id, id, phrase, whole_word, created_at, updated_at + FROM custom_filters + SQL + end + end + + def down + # Copy back changes from custom filters guaranteed to be from the old API + safety_assured do + execute <<-SQL.squish + UPDATE custom_filters + SET phrase = custom_filter_keywords.keyword, whole_word = custom_filter_keywords.whole_word + FROM custom_filter_keywords + WHERE custom_filters.id = custom_filter_keywords.id AND custom_filters.id = custom_filter_keywords.custom_filter_id + SQL + end + + # Drop every keyword as we can't safely provide a 1:1 mapping + safety_assured do + execute <<-SQL.squish + TRUNCATE custom_filter_keywords RESTART IDENTITY + SQL + end + end +end diff --git a/db/migrate/20220613110834_add_action_to_custom_filters.rb b/db/migrate/20220613110834_add_action_to_custom_filters.rb new file mode 100644 index 000000000..9427a66fc --- /dev/null +++ b/db/migrate/20220613110834_add_action_to_custom_filters.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true +require Rails.root.join('lib', 'mastodon', 'migration_helpers') + +class AddActionToCustomFilters < ActiveRecord::Migration[6.1] + include Mastodon::MigrationHelpers + + disable_ddl_transaction! + + def up + safety_assured do + add_column_with_default :custom_filters, :action, :integer, allow_null: false, default: 0 + execute 'UPDATE custom_filters SET action = 1 WHERE irreversible IS TRUE' + end + end + + def down + execute 'UPDATE custom_filters SET irreversible = (action = 1)' + remove_column :custom_filters, :action + end +end diff --git a/db/post_migrate/20220613110802_remove_whole_word_from_custom_filters.rb b/db/post_migrate/20220613110802_remove_whole_word_from_custom_filters.rb new file mode 100644 index 000000000..7ef0749e5 --- /dev/null +++ b/db/post_migrate/20220613110802_remove_whole_word_from_custom_filters.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true +require Rails.root.join('lib', 'mastodon', 'migration_helpers') + +class RemoveWholeWordFromCustomFilters < ActiveRecord::Migration[6.1] + include Mastodon::MigrationHelpers + + disable_ddl_transaction! + + def up + safety_assured do + remove_column :custom_filters, :whole_word + end + end + + def down + safety_assured do + add_column_with_default :custom_filters, :whole_word, :boolean, default: true, allow_null: false + end + end +end diff --git a/db/post_migrate/20220613110903_remove_irreversible_from_custom_filters.rb b/db/post_migrate/20220613110903_remove_irreversible_from_custom_filters.rb new file mode 100644 index 000000000..6ed8bcfee --- /dev/null +++ b/db/post_migrate/20220613110903_remove_irreversible_from_custom_filters.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true +require Rails.root.join('lib', 'mastodon', 'migration_helpers') + +class RemoveIrreversibleFromCustomFilters < ActiveRecord::Migration[6.1] + include Mastodon::MigrationHelpers + + disable_ddl_transaction! + + def up + safety_assured do + remove_column :custom_filters, :irreversible + end + end + + def down + safety_assured do + add_column_with_default :custom_filters, :irreversible, :boolean, allow_null: false, default: false + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 5d8aea601..759dc712b 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2022_06_06_044941) do +ActiveRecord::Schema.define(version: 2022_06_13_110903) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -339,15 +339,23 @@ ActiveRecord::Schema.define(version: 2022_06_06_044941) do t.index ["shortcode", "domain"], name: "index_custom_emojis_on_shortcode_and_domain", unique: true end + create_table "custom_filter_keywords", force: :cascade do |t| + t.bigint "custom_filter_id", null: false + t.text "keyword", default: "", null: false + t.boolean "whole_word", default: true, null: false + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + t.index ["custom_filter_id"], name: "index_custom_filter_keywords_on_custom_filter_id" + end + create_table "custom_filters", force: :cascade do |t| t.bigint "account_id" t.datetime "expires_at" t.text "phrase", default: "", null: false t.string "context", default: [], null: false, array: true - t.boolean "irreversible", default: false, null: false t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.boolean "whole_word", default: true, null: false + t.integer "action", default: 0, null: false t.index ["account_id"], name: "index_custom_filters_on_account_id" end @@ -1082,6 +1090,7 @@ ActiveRecord::Schema.define(version: 2022_06_06_044941) do add_foreign_key "canonical_email_blocks", "accounts", column: "reference_account_id", on_delete: :cascade add_foreign_key "conversation_mutes", "accounts", name: "fk_225b4212bb", on_delete: :cascade add_foreign_key "conversation_mutes", "conversations", on_delete: :cascade + add_foreign_key "custom_filter_keywords", "custom_filters", on_delete: :cascade add_foreign_key "custom_filters", "accounts", on_delete: :cascade add_foreign_key "devices", "accounts", on_delete: :cascade add_foreign_key "devices", "oauth_access_tokens", column: "access_token_id", on_delete: :cascade diff --git a/lib/tasks/tests.rake b/lib/tasks/tests.rake index 0f3b44a74..65bff6a8e 100644 --- a/lib/tasks/tests.rake +++ b/lib/tasks/tests.rake @@ -38,10 +38,26 @@ namespace :tests do puts 'Instance actor does not have a private key' exit(1) end + + unless Account.find_by(username: 'user', domain: nil).custom_filters.map { |filter| filter.keywords.pluck(:keyword) } == [['test'], ['take']] + puts 'CustomFilterKeyword records not created as expected' + exit(1) + end + end + + desc 'Populate the database with test data for 2.4.3' + task populate_v2_4_3: :environment do # rubocop:disable Naming/VariableNumber + ActiveRecord::Base.connection.execute(<<~SQL) + INSERT INTO "custom_filters" + (id, account_id, phrase, context, whole_word, irreversible, created_at, updated_at) + VALUES + (1, 2, 'test', '{ "home", "public" }', true, true, now(), now()), + (2, 2, 'take', '{ "home" }', false, false, now(), now()); + SQL end desc 'Populate the database with test data for 2.4.0' - task populate_v2_4: :environment do + task populate_v2_4: :environment do # rubocop:disable Naming/VariableNumber ActiveRecord::Base.connection.execute(<<~SQL) INSERT INTO "settings" (id, thing_type, thing_id, var, value, created_at, updated_at) diff --git a/package.json b/package.json index 30fe8b672..343a8267e 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "babel-plugin-transform-react-remove-prop-types": "^0.4.24", "blurhash": "^1.1.5", "classnames": "^2.3.1", + "cocoon-js-vanilla": "^1.2.0", "color-blend": "^3.0.1", "compression-webpack-plugin": "^6.1.1", "cross-env": "^7.0.3", @@ -71,6 +72,7 @@ "intl-relativeformat": "^6.4.3", "is-nan": "^1.3.2", "js-yaml": "^4.1.0", + "jsdom": "^20.0.0", "lodash": "^4.17.21", "mark-loader": "^0.1.6", "marky": "^1.2.4", diff --git a/spec/controllers/api/v1/filters/keywords_controller_spec.rb b/spec/controllers/api/v1/filters/keywords_controller_spec.rb new file mode 100644 index 000000000..aecb4e41c --- /dev/null +++ b/spec/controllers/api/v1/filters/keywords_controller_spec.rb @@ -0,0 +1,142 @@ +require 'rails_helper' + +RSpec.describe Api::V1::Filters::KeywordsController, type: :controller do + render_views + + let(:user) { Fabricate(:user) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } + let(:filter) { Fabricate(:custom_filter, account: user.account) } + let(:other_user) { Fabricate(:user) } + let(:other_filter) { Fabricate(:custom_filter, account: other_user.account) } + + before do + allow(controller).to receive(:doorkeeper_token) { token } + end + + describe 'GET #index' do + let(:scopes) { 'read:filters' } + let!(:keyword) { Fabricate(:custom_filter_keyword, custom_filter: filter) } + + it 'returns http success' do + get :index, params: { filter_id: filter.id } + expect(response).to have_http_status(200) + end + + context "when trying to access another's user filters" do + it 'returns http not found' do + get :index, params: { filter_id: other_filter.id } + expect(response).to have_http_status(404) + end + end + end + + describe 'POST #create' do + let(:scopes) { 'write:filters' } + let(:filter_id) { filter.id } + + before do + post :create, params: { filter_id: filter_id, keyword: 'magic', whole_word: false } + end + + it 'returns http success' do + expect(response).to have_http_status(200) + end + + it 'returns a keyword' do + json = body_as_json + expect(json[:keyword]).to eq 'magic' + expect(json[:whole_word]).to eq false + end + + it 'creates a keyword' do + filter = user.account.custom_filters.first + expect(filter).to_not be_nil + expect(filter.keywords.pluck(:keyword)).to eq ['magic'] + end + + context "when trying to add to another another's user filters" do + let(:filter_id) { other_filter.id } + + it 'returns http not found' do + expect(response).to have_http_status(404) + end + end + end + + describe 'GET #show' do + let(:scopes) { 'read:filters' } + let(:keyword) { Fabricate(:custom_filter_keyword, keyword: 'foo', whole_word: false, custom_filter: filter) } + + before do + get :show, params: { id: keyword.id } + end + + it 'returns http success' do + expect(response).to have_http_status(200) + end + + it 'returns expected data' do + json = body_as_json + expect(json[:keyword]).to eq 'foo' + expect(json[:whole_word]).to eq false + end + + context "when trying to access another user's filter keyword" do + let(:keyword) { Fabricate(:custom_filter_keyword, custom_filter: other_filter) } + + it 'returns http not found' do + expect(response).to have_http_status(404) + end + end + end + + describe 'PUT #update' do + let(:scopes) { 'write:filters' } + let(:keyword) { Fabricate(:custom_filter_keyword, custom_filter: filter) } + + before do + get :update, params: { id: keyword.id, keyword: 'updated' } + end + + it 'returns http success' do + expect(response).to have_http_status(200) + end + + it 'updates the keyword' do + expect(keyword.reload.keyword).to eq 'updated' + end + + context "when trying to update another user's filter keyword" do + let(:keyword) { Fabricate(:custom_filter_keyword, custom_filter: other_filter) } + + it 'returns http not found' do + expect(response).to have_http_status(404) + end + end + end + + describe 'DELETE #destroy' do + let(:scopes) { 'write:filters' } + let(:keyword) { Fabricate(:custom_filter_keyword, custom_filter: filter) } + + before do + delete :destroy, params: { id: keyword.id } + end + + it 'returns http success' do + expect(response).to have_http_status(200) + end + + it 'removes the filter' do + expect { keyword.reload }.to raise_error ActiveRecord::RecordNotFound + end + + context "when trying to update another user's filter keyword" do + let(:keyword) { Fabricate(:custom_filter_keyword, custom_filter: other_filter) } + + it 'returns http not found' do + expect(response).to have_http_status(404) + end + end + end +end diff --git a/spec/controllers/api/v1/filters_controller_spec.rb b/spec/controllers/api/v1/filters_controller_spec.rb index 5948809e3..af1951f0b 100644 --- a/spec/controllers/api/v1/filters_controller_spec.rb +++ b/spec/controllers/api/v1/filters_controller_spec.rb @@ -34,7 +34,7 @@ RSpec.describe Api::V1::FiltersController, type: :controller do it 'creates a filter' do filter = user.account.custom_filters.first expect(filter).to_not be_nil - expect(filter.phrase).to eq 'magic' + expect(filter.keywords.pluck(:keyword)).to eq ['magic'] expect(filter.context).to eq %w(home) expect(filter.irreversible?).to be true expect(filter.expires_at).to be_nil @@ -42,21 +42,23 @@ RSpec.describe Api::V1::FiltersController, type: :controller do end describe 'GET #show' do - let(:scopes) { 'read:filters' } - let(:filter) { Fabricate(:custom_filter, account: user.account) } + let(:scopes) { 'read:filters' } + let(:filter) { Fabricate(:custom_filter, account: user.account) } + let(:keyword) { Fabricate(:custom_filter_keyword, custom_filter: filter) } it 'returns http success' do - get :show, params: { id: filter.id } + get :show, params: { id: keyword.id } expect(response).to have_http_status(200) end end describe 'PUT #update' do - let(:scopes) { 'write:filters' } - let(:filter) { Fabricate(:custom_filter, account: user.account) } + let(:scopes) { 'write:filters' } + let(:filter) { Fabricate(:custom_filter, account: user.account) } + let(:keyword) { Fabricate(:custom_filter_keyword, custom_filter: filter) } before do - put :update, params: { id: filter.id, phrase: 'updated' } + put :update, params: { id: keyword.id, phrase: 'updated' } end it 'returns http success' do @@ -64,16 +66,17 @@ RSpec.describe Api::V1::FiltersController, type: :controller do end it 'updates the filter' do - expect(filter.reload.phrase).to eq 'updated' + expect(keyword.reload.phrase).to eq 'updated' end end describe 'DELETE #destroy' do - let(:scopes) { 'write:filters' } - let(:filter) { Fabricate(:custom_filter, account: user.account) } + let(:scopes) { 'write:filters' } + let(:filter) { Fabricate(:custom_filter, account: user.account) } + let(:keyword) { Fabricate(:custom_filter_keyword, custom_filter: filter) } before do - delete :destroy, params: { id: filter.id } + delete :destroy, params: { id: keyword.id } end it 'returns http success' do @@ -81,7 +84,7 @@ RSpec.describe Api::V1::FiltersController, type: :controller do end it 'removes the filter' do - expect { filter.reload }.to raise_error ActiveRecord::RecordNotFound + expect { keyword.reload }.to raise_error ActiveRecord::RecordNotFound end end end diff --git a/spec/controllers/api/v1/statuses_controller_spec.rb b/spec/controllers/api/v1/statuses_controller_spec.rb index 2eb30af74..4d104a198 100644 --- a/spec/controllers/api/v1/statuses_controller_spec.rb +++ b/spec/controllers/api/v1/statuses_controller_spec.rb @@ -20,6 +20,58 @@ RSpec.describe Api::V1::StatusesController, type: :controller do get :show, params: { id: status.id } expect(response).to have_http_status(200) end + + context 'when post includes filtered terms' do + let(:status) { Fabricate(:status, text: 'this toot is about that banned word') } + + before do + user.account.custom_filters.create!(phrase: 'filter1', context: %w(home), action: :hide, keywords_attributes: [{ keyword: 'banned' }, { keyword: 'irrelevant' }]) + end + + it 'returns http success' do + get :show, params: { id: status.id } + expect(response).to have_http_status(200) + end + + it 'returns filter information' do + get :show, params: { id: status.id } + json = body_as_json + expect(json[:filtered][0]).to include({ + filter: a_hash_including({ + id: user.account.custom_filters.first.id.to_s, + title: 'filter1', + filter_action: 'hide', + }), + keyword_matches: ['banned'], + }) + end + end + + context 'when reblog includes filtered terms' do + let(:status) { Fabricate(:status, reblog: Fabricate(:status, text: 'this toot is about that banned word')) } + + before do + user.account.custom_filters.create!(phrase: 'filter1', context: %w(home), action: :hide, keywords_attributes: [{ keyword: 'banned' }, { keyword: 'irrelevant' }]) + end + + it 'returns http success' do + get :show, params: { id: status.id } + expect(response).to have_http_status(200) + end + + it 'returns filter information' do + get :show, params: { id: status.id } + json = body_as_json + expect(json[:reblog][:filtered][0]).to include({ + filter: a_hash_including({ + id: user.account.custom_filters.first.id.to_s, + title: 'filter1', + filter_action: 'hide', + }), + keyword_matches: ['banned'], + }) + end + end end describe 'GET #context' do diff --git a/spec/controllers/api/v2/filters_controller_spec.rb b/spec/controllers/api/v2/filters_controller_spec.rb new file mode 100644 index 000000000..cc0070d57 --- /dev/null +++ b/spec/controllers/api/v2/filters_controller_spec.rb @@ -0,0 +1,121 @@ +require 'rails_helper' + +RSpec.describe Api::V2::FiltersController, type: :controller do + render_views + + let(:user) { Fabricate(:user) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } + + before do + allow(controller).to receive(:doorkeeper_token) { token } + end + + describe 'GET #index' do + let(:scopes) { 'read:filters' } + let!(:filter) { Fabricate(:custom_filter, account: user.account) } + + it 'returns http success' do + get :index + expect(response).to have_http_status(200) + end + end + + describe 'POST #create' do + let(:scopes) { 'write:filters' } + + before do + post :create, params: { title: 'magic', context: %w(home), filter_action: 'hide', keywords_attributes: [keyword: 'magic'] } + end + + it 'returns http success' do + expect(response).to have_http_status(200) + end + + it 'returns a filter with keywords' do + json = body_as_json + expect(json[:title]).to eq 'magic' + expect(json[:filter_action]).to eq 'hide' + expect(json[:context]).to eq ['home'] + expect(json[:keywords].map { |keyword| keyword.slice(:keyword, :whole_word) }).to eq [{ keyword: 'magic', whole_word: true }] + end + + it 'creates a filter' do + filter = user.account.custom_filters.first + expect(filter).to_not be_nil + expect(filter.keywords.pluck(:keyword)).to eq ['magic'] + expect(filter.context).to eq %w(home) + expect(filter.irreversible?).to be true + expect(filter.expires_at).to be_nil + end + end + + describe 'GET #show' do + let(:scopes) { 'read:filters' } + let(:filter) { Fabricate(:custom_filter, account: user.account) } + + it 'returns http success' do + get :show, params: { id: filter.id } + expect(response).to have_http_status(200) + end + end + + describe 'PUT #update' do + let(:scopes) { 'write:filters' } + let!(:filter) { Fabricate(:custom_filter, account: user.account) } + let!(:keyword) { Fabricate(:custom_filter_keyword, custom_filter: filter) } + + context 'updating filter parameters' do + before do + put :update, params: { id: filter.id, title: 'updated', context: %w(home public) } + end + + it 'returns http success' do + expect(response).to have_http_status(200) + end + + it 'updates the filter title' do + expect(filter.reload.title).to eq 'updated' + end + + it 'updates the filter context' do + expect(filter.reload.context).to eq %w(home public) + end + end + + context 'updating keywords in bulk' do + before do + allow(redis).to receive_messages(publish: nil) + put :update, params: { id: filter.id, keywords_attributes: [{ id: keyword.id, keyword: 'updated' }] } + end + + it 'returns http success' do + expect(response).to have_http_status(200) + end + + it 'updates the keyword' do + expect(keyword.reload.keyword).to eq 'updated' + end + + it 'sends exactly one filters_changed event' do + expect(redis).to have_received(:publish).with("timeline:#{user.account.id}", Oj.dump(event: :filters_changed)).once + end + end + end + + describe 'DELETE #destroy' do + let(:scopes) { 'write:filters' } + let(:filter) { Fabricate(:custom_filter, account: user.account) } + + before do + delete :destroy, params: { id: filter.id } + end + + it 'returns http success' do + expect(response).to have_http_status(200) + end + + it 'removes the filter' do + expect { filter.reload }.to raise_error ActiveRecord::RecordNotFound + end + end +end diff --git a/spec/fabricators/custom_filter_keyword_fabricator.rb b/spec/fabricators/custom_filter_keyword_fabricator.rb new file mode 100644 index 000000000..0f101dcd1 --- /dev/null +++ b/spec/fabricators/custom_filter_keyword_fabricator.rb @@ -0,0 +1,4 @@ +Fabricator(:custom_filter_keyword) do + custom_filter + keyword 'discourse' +end diff --git a/spec/lib/feed_manager_spec.rb b/spec/lib/feed_manager_spec.rb index 3ba8aaa9f..48c57b86e 100644 --- a/spec/lib/feed_manager_spec.rb +++ b/spec/lib/feed_manager_spec.rb @@ -127,38 +127,6 @@ RSpec.describe FeedManager do reblog = Fabricate(:status, reblog: status, account: jeff) expect(FeedManager.instance.filter?(:home, reblog, alice)).to be true end - - context 'for irreversibly muted phrases' do - it 'considers word boundaries when matching' do - alice.custom_filters.create!(phrase: 'bob', context: %w(home), irreversible: true) - alice.follow!(jeff) - status = Fabricate(:status, text: 'bobcats', account: jeff) - expect(FeedManager.instance.filter?(:home, status, alice)).to be_falsy - end - - it 'returns true if phrase is contained' do - alice.custom_filters.create!(phrase: 'farts', context: %w(home public), irreversible: true) - alice.custom_filters.create!(phrase: 'pop tarts', context: %w(home), irreversible: true) - alice.follow!(jeff) - status = Fabricate(:status, text: 'i sure like POP TARts', account: jeff) - expect(FeedManager.instance.filter?(:home, status, alice)).to be true - end - - it 'matches substrings if whole_word is false' do - alice.custom_filters.create!(phrase: 'take', context: %w(home), whole_word: false, irreversible: true) - alice.follow!(jeff) - status = Fabricate(:status, text: 'shiitake', account: jeff) - expect(FeedManager.instance.filter?(:home, status, alice)).to be true - end - - it 'returns true if phrase is contained in a poll option' do - alice.custom_filters.create!(phrase: 'farts', context: %w(home public), irreversible: true) - alice.custom_filters.create!(phrase: 'pop tarts', context: %w(home), irreversible: true) - alice.follow!(jeff) - status = Fabricate(:status, text: 'what do you prefer', poll: Fabricate(:poll, options: %w(farts POP TARts)), account: jeff) - expect(FeedManager.instance.filter?(:home, status, alice)).to be true - end - end end context 'for mentions feed' do diff --git a/spec/models/custom_filter_keyword_spec.rb b/spec/models/custom_filter_keyword_spec.rb new file mode 100644 index 000000000..e15b9dad5 --- /dev/null +++ b/spec/models/custom_filter_keyword_spec.rb @@ -0,0 +1,4 @@ +require 'rails_helper' + +RSpec.describe CustomFilterKeyword, type: :model do +end diff --git a/spec/presenters/status_relationships_presenter_spec.rb b/spec/presenters/status_relationships_presenter_spec.rb index 03296bd17..5cd4929a6 100644 --- a/spec/presenters/status_relationships_presenter_spec.rb +++ b/spec/presenters/status_relationships_presenter_spec.rb @@ -5,7 +5,7 @@ require 'rails_helper' RSpec.describe StatusRelationshipsPresenter do describe '.initialize' do before do - allow(Status).to receive(:reblogs_map).with(status_ids, current_account_id).and_return(default_map) + allow(Status).to receive(:reblogs_map).with(match_array(status_ids), current_account_id).and_return(default_map) allow(Status).to receive(:favourites_map).with(status_ids, current_account_id).and_return(default_map) allow(Status).to receive(:bookmarks_map).with(status_ids, current_account_id).and_return(default_map) allow(Status).to receive(:mutes_map).with(anything, current_account_id).and_return(default_map) @@ -15,7 +15,7 @@ RSpec.describe StatusRelationshipsPresenter do let(:presenter) { StatusRelationshipsPresenter.new(statuses, current_account_id, **options) } let(:current_account_id) { Fabricate(:account).id } let(:statuses) { [Fabricate(:status)] } - let(:status_ids) { statuses.map(&:id) } + let(:status_ids) { statuses.map(&:id) + statuses.map(&:reblog_of_id).compact } let(:default_map) { { 1 => true } } context 'options are not set' do @@ -69,5 +69,30 @@ RSpec.describe StatusRelationshipsPresenter do expect(presenter.pins_map).to eq default_map.merge(options[:pins_map]) end end + + context 'when post includes filtered terms' do + let(:statuses) { [Fabricate(:status, text: 'this toot is about that banned word'), Fabricate(:status, reblog: Fabricate(:status, text: 'this toot is about an irrelevant word'))] } + let(:options) { {} } + + before do + Account.find(current_account_id).custom_filters.create!(phrase: 'filter1', context: %w(home), action: :hide, keywords_attributes: [{ keyword: 'banned' }, { keyword: 'irrelevant' }]) + end + + it 'sets @filters_map to filter top-level status' do + matched_filters = presenter.filters_map[statuses[0].id] + expect(matched_filters.size).to eq 1 + + expect(matched_filters[0].filter.title).to eq 'filter1' + expect(matched_filters[0].keyword_matches).to eq ['banned'] + end + + it 'sets @filters_map to filter reblogged status' do + matched_filters = presenter.filters_map[statuses[1].reblog_of_id] + expect(matched_filters.size).to eq 1 + + expect(matched_filters[0].filter.title).to eq 'filter1' + expect(matched_filters[0].keyword_matches).to eq ['irrelevant'] + end + end end end diff --git a/streaming/index.js b/streaming/index.js index 6935c4764..792ec5a44 100644 --- a/streaming/index.js +++ b/streaming/index.js @@ -12,6 +12,7 @@ const url = require('url'); const uuid = require('uuid'); const fs = require('fs'); const WebSocket = require('ws'); +const { JSDOM } = require('jsdom'); const env = process.env.NODE_ENV || 'development'; const alwaysRequireAuth = process.env.LIMITED_FEDERATION_MODE === 'true' || process.env.WHITELIST_MODE === 'true' || process.env.AUTHORIZED_FETCH === 'true'; @@ -503,6 +504,9 @@ const startWorker = async (workerId) => { if (event === 'kill') { log.verbose(req.requestId, `Closing connection for ${req.accountId} due to expired access token`); eventHandlers.onKill(); + } else if (event === 'filters_changed') { + log.verbose(req.requestId, `Invalidating filters cache for ${req.accountId}`); + req.cachedFilters = null; } }; }; @@ -512,7 +516,8 @@ const startWorker = async (workerId) => { * @param {any} res */ const subscribeHttpToSystemChannel = (req, res) => { - const systemChannelId = `timeline:access_token:${req.accessTokenId}`; + const accessTokenChannelId = `timeline:access_token:${req.accessTokenId}`; + const systemChannelId = `timeline:system:${req.accountId}`; const listener = createSystemMessageListener(req, { @@ -523,9 +528,11 @@ const startWorker = async (workerId) => { }); res.on('close', () => { + unsubscribe(`${redisPrefix}${accessTokenChannelId}`, listener); unsubscribe(`${redisPrefix}${systemChannelId}`, listener); }); + subscribe(`${redisPrefix}${accessTokenChannelId}`, listener); subscribe(`${redisPrefix}${systemChannelId}`, listener); }; @@ -674,17 +681,84 @@ const startWorker = async (workerId) => { queries.push(client.query('SELECT 1 FROM account_domain_blocks WHERE account_id = $1 AND domain = $2', [req.accountId, accountDomain])); } + if (!unpackedPayload.filter_results && !req.cachedFilters) { + queries.push(client.query('SELECT filter.id AS id, filter.phrase AS title, filter.context AS context, filter.expires_at AS expires_at, filter.action AS filter_action, keyword.keyword AS keyword, keyword.whole_word AS whole_word FROM custom_filter_keywords keyword JOIN custom_filters filter ON keyword.custom_filter_id = filter.id WHERE filter.account_id = $1 AND filter.expires_at IS NULL OR filter.expires_at > NOW()', [req.accountId])); + } + Promise.all(queries).then(values => { done(); - if (values[0].rows.length > 0 || (values.length > 1 && values[1].rows.length > 0)) { + if (values[0].rows.length > 0 || (accountDomain && values[1].rows.length > 0)) { return; } + if (!unpackedPayload.filter_results && !req.cachedFilters) { + const filterRows = values[accountDomain ? 2 : 1].rows; + + req.cachedFilters = filterRows.reduce((cache, row) => { + if (cache[row.id]) { + cache[row.id].keywords.push([row.keyword, row.whole_word]); + } else { + cache[row.id] = { + keywords: [[row.keyword, row.whole_word]], + expires_at: row.expires_at, + repr: { + id: row.id, + title: row.title, + context: row.context, + expires_at: row.expires_at, + filter_action: row.filter_action, + }, + }; + } + + return cache; + }, {}); + + Object.keys(req.cachedFilters).forEach((key) => { + req.cachedFilters[key].regexp = new RegExp(req.cachedFilters[key].keywords.map(([keyword, whole_word]) => { + let expr = keyword.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');; + + if (whole_word) { + if (/^[\w]/.test(expr)) { + expr = `\\b${expr}`; + } + + if (/[\w]$/.test(expr)) { + expr = `${expr}\\b`; + } + } + + return expr; + }).join('|'), 'i'); + }); + } + + // Check filters + if (req.cachedFilters && !unpackedPayload.filter_results) { + const status = unpackedPayload; + const searchContent = ([status.spoiler_text || '', status.content].concat((status.poll && status.poll.options) ? status.poll.options.map(option => option.title) : [])).concat(status.media_attachments.map(att => att.description)).join('\n\n').replace(//g, '\n').replace(/<\/p>

/g, '\n\n'); + const searchIndex = JSDOM.fragment(searchContent).textContent; + + const now = new Date(); + payload.filter_results = []; + Object.values(req.cachedFilters).forEach((cachedFilter) => { + if ((cachedFilter.expires_at === null || cachedFilter.expires_at > now)) { + const keyword_matches = searchIndex.match(cachedFilter.regexp); + if (keyword_matches) { + payload.filter_results.push({ + filter: cachedFilter.repr, + keyword_matches, + }); + } + } + }); + } + transmit(); }).catch(err => { - done(); log.error(err); + done(); }); }); }; @@ -1009,7 +1083,8 @@ const startWorker = async (workerId) => { * @param {WebSocketSession} session */ const subscribeWebsocketToSystemChannel = ({ socket, request, subscriptions }) => { - const systemChannelId = `timeline:access_token:${request.accessTokenId}`; + const accessTokenChannelId = `timeline:access_token:${request.accessTokenId}`; + const systemChannelId = `timeline:system:${request.accountId}`; const listener = createSystemMessageListener(request, { @@ -1019,8 +1094,15 @@ const startWorker = async (workerId) => { }); + subscribe(`${redisPrefix}${accessTokenChannelId}`, listener); subscribe(`${redisPrefix}${systemChannelId}`, listener); + subscriptions[accessTokenChannelId] = { + listener, + stopHeartbeat: () => { + }, + }; + subscriptions[systemChannelId] = { listener, stopHeartbeat: () => { diff --git a/yarn.lock b/yarn.lock index 42d877453..7901b9fd5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1486,7 +1486,7 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" -"@jest/types@^28.1.0", "@jest/types@^28.1.1": +"@jest/types@^28.1.1": version "28.1.1" resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.1.tgz#d059bbc80e6da6eda9f081f293299348bd78ee0b" integrity sha512-vRXVqSg1VhDnB8bWcmvLzmg0Bt9CRKVgHPXqYwvWMX3TvAjeO+nRuK6+VdTKCtWOvYlmkF/HqNAL/z+N3B53Kw== @@ -2153,7 +2153,7 @@ acorn@^8.0.4: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.3.0.tgz#1193f9b96c4e8232f00b11a9edff81b2c8b98b88" integrity sha512-tqPKHZ5CaBJw0Xmy0ZZvLs1qTV+BNFSyvn77ASXkpBNfIRk8ev26fKrD9iLGwGA9zedPao52GSHzq8lyZG0NUw== -acorn@^8.5.0: +acorn@^8.5.0, acorn@^8.7.1: version "8.7.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== @@ -3304,6 +3304,11 @@ coa@^2.0.2: chalk "^2.4.1" q "^1.1.2" +cocoon-js-vanilla@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/cocoon-js-vanilla/-/cocoon-js-vanilla-1.2.0.tgz#595348499d315d3b5828dd77a20974756cf59321" + integrity sha512-qLomIVL0Krfc983WLgaYPPktMjMtBN+F/CV15NPVDc9U9BCe2OL5WyAIYkPrVhDRphoYBmHCdIlZkq+vSBI4xg== + collect-v8-coverage@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" @@ -3892,7 +3897,7 @@ damerau-levenshtein@^1.0.7: resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz#64368003512a1a6992593741a09a9d31a836f55d" integrity sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw== -data-urls@^3.0.1: +data-urls@^3.0.1, data-urls@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143" integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== @@ -4338,6 +4343,11 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== +entities@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.3.0.tgz#62915f08d67353bb4eb67e3d62641a4059aec656" + integrity sha512-/iP1rZrSEJ0DTlPiX+jbzlA3eVkY/e8L8SozroF395fIqE3TYF/Nz7YOMAawta+vLmyJ/hkGNNPcSbMADCCXbg== + errno@^0.1.3, errno@~0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" @@ -5700,7 +5710,7 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= -https-proxy-agent@^5.0.0: +https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== @@ -6728,7 +6738,7 @@ jest-snapshot@^28.1.1: pretty-format "^28.1.1" semver "^7.3.5" -jest-util@^28.1.0, jest-util@^28.1.1: +jest-util@^28.1.1: version "28.1.1" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.1.tgz#ff39e436a1aca397c0ab998db5a51ae2b7080d05" integrity sha512-FktOu7ca1DZSyhPAxgxB6hfh2+9zMoJ7aEQA759Z6p45NuO8mWcqujH+UdHlCm/V6JTWwDztM2ITCzU1ijJAfw== @@ -6852,6 +6862,39 @@ jsdom@^19.0.0: ws "^8.2.3" xml-name-validator "^4.0.0" +jsdom@^20.0.0: + version "20.0.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-20.0.0.tgz#882825ac9cc5e5bbee704ba16143e1fa78361ebf" + integrity sha512-x4a6CKCgx00uCmP+QakBDFXwjAJ69IkkIWHmtmjd3wvXPcdOS44hfX2vqkOQrVrq8l9DhNNADZRXaCEWvgXtVA== + dependencies: + abab "^2.0.6" + acorn "^8.7.1" + acorn-globals "^6.0.0" + cssom "^0.5.0" + cssstyle "^2.3.0" + data-urls "^3.0.2" + decimal.js "^10.3.1" + domexception "^4.0.0" + escodegen "^2.0.0" + form-data "^4.0.0" + html-encoding-sniffer "^3.0.0" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.1" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.0" + parse5 "^7.0.0" + saxes "^6.0.0" + symbol-tree "^3.2.4" + tough-cookie "^4.0.0" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^3.0.0" + webidl-conversions "^7.0.0" + whatwg-encoding "^2.0.0" + whatwg-mimetype "^3.0.0" + whatwg-url "^11.0.0" + ws "^8.8.0" + xml-name-validator "^4.0.0" + jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -8141,6 +8184,13 @@ parse5@6.0.1: resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== +parse5@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.0.0.tgz#51f74a5257f5fcc536389e8c2d0b3802e1bfa91a" + integrity sha512-y/t8IXSPWTuRZqXc0ajH/UwDj4mnqLEbSttNbThcFhGrZuOyoyvNBO85PBp2jQa55wY9d07PBNjsK8ZP3K5U6g== + dependencies: + entities "^4.3.0" + parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -9771,6 +9821,13 @@ saxes@^5.0.1: dependencies: xmlchars "^2.2.0" +saxes@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" + integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== + dependencies: + xmlchars "^2.2.0" + scheduler@^0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" From efa65267edec78ad1b2656be14e76749ed25b51b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Jun 2022 18:55:47 +0900 Subject: [PATCH 194/652] Bump @babel/core from 7.18.5 to 7.18.6 (#18734) Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.18.5 to 7.18.6. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.6/packages/babel-core) --- updated-dependencies: - dependency-name: "@babel/core" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 225 +++++++++++++++++++++++++++++++-------------------- 2 files changed, 138 insertions(+), 89 deletions(-) diff --git a/package.json b/package.json index 343a8267e..74a4a6208 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ }, "private": true, "dependencies": { - "@babel/core": "^7.18.5", + "@babel/core": "^7.18.6", "@babel/plugin-proposal-decorators": "^7.18.2", "@babel/plugin-transform-react-inline-elements": "^7.16.7", "@babel/plugin-transform-runtime": "^7.18.5", diff --git a/yarn.lock b/yarn.lock index 7901b9fd5..e2deea41a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16,33 +16,38 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" - integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== dependencies: - "@babel/highlight" "^7.16.7" + "@babel/highlight" "^7.18.6" "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.17.10": version "7.17.10" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw== -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.5", "@babel/core@^7.7.2": - version "7.18.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.5.tgz#c597fa680e58d571c28dda9827669c78cdd7f000" - integrity sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ== +"@babel/compat-data@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.6.tgz#8b37d24e88e8e21c499d4328db80577d8882fa53" + integrity sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ== + +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.6", "@babel/core@^7.7.2": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.6.tgz#54a107a3c298aee3fe5e1947a6464b9b6faca03d" + integrity sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ== dependencies: "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.18.2" - "@babel/helper-compilation-targets" "^7.18.2" - "@babel/helper-module-transforms" "^7.18.0" - "@babel/helpers" "^7.18.2" - "@babel/parser" "^7.18.5" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.18.5" - "@babel/types" "^7.18.4" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.6" + "@babel/helper-compilation-targets" "^7.18.6" + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helpers" "^7.18.6" + "@babel/parser" "^7.18.6" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.6" + "@babel/types" "^7.18.6" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -58,12 +63,12 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.0" -"@babel/generator@^7.18.2", "@babel/generator@^7.7.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d" - integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw== +"@babel/generator@^7.18.6", "@babel/generator@^7.7.2": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.6.tgz#9ab2d46d3cbf631f0e80f72e72874a04c3fc12a9" + integrity sha512-AIwwoOS8axIC5MZbhNHRLKi3D+DMpvDf9XUcu3pIVAfOHFT45f4AoDAltRbHIQomCipkCZxrNkfpOEHhJz/VKw== dependencies: - "@babel/types" "^7.18.2" + "@babel/types" "^7.18.6" "@jridgewell/gen-mapping" "^0.3.0" jsesc "^2.5.1" @@ -90,13 +95,13 @@ "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.10", "@babel/helper-compilation-targets@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz#67a85a10cbd5fc7f1457fec2e7f45441dc6c754b" - integrity sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ== +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.10", "@babel/helper-compilation-targets@^7.18.2", "@babel/helper-compilation-targets@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz#18d35bfb9f83b1293c22c55b3d576c1315b6ed96" + integrity sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg== dependencies: - "@babel/compat-data" "^7.17.10" - "@babel/helper-validator-option" "^7.16.7" + "@babel/compat-data" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" browserslist "^4.20.2" semver "^6.3.0" @@ -169,6 +174,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd" integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ== +"@babel/helper-environment-visitor@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz#b7eee2b5b9d70602e59d1a6cad7dd24de7ca6cd7" + integrity sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q== + "@babel/helper-explode-assignable-expression@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" @@ -193,6 +203,14 @@ "@babel/template" "^7.16.7" "@babel/types" "^7.17.0" +"@babel/helper-function-name@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz#8334fecb0afba66e6d87a7e8c6bb7fed79926b83" + integrity sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw== + dependencies: + "@babel/template" "^7.18.6" + "@babel/types" "^7.18.6" + "@babel/helper-get-function-arity@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" @@ -207,6 +225,13 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-hoist-variables@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== + dependencies: + "@babel/types" "^7.18.6" + "@babel/helper-member-expression-to-functions@^7.17.7": version "7.17.7" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" @@ -221,19 +246,26 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-module-transforms@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz#baf05dec7a5875fb9235bd34ca18bad4e21221cd" - integrity sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA== +"@babel/helper-module-imports@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" + integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== dependencies: - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-simple-access" "^7.17.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/helper-validator-identifier" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.18.0" - "@babel/types" "^7.18.0" + "@babel/types" "^7.18.6" + +"@babel/helper-module-transforms@^7.18.0", "@babel/helper-module-transforms@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz#57e3ca669e273d55c3cda55e6ebf552f37f483c8" + integrity sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw== + dependencies: + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.18.6" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.6" + "@babel/types" "^7.18.6" "@babel/helper-optimise-call-expression@^7.16.7": version "7.16.7" @@ -267,13 +299,6 @@ "@babel/traverse" "^7.18.2" "@babel/types" "^7.18.2" -"@babel/helper-simple-access@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367" - integrity sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA== - dependencies: - "@babel/types" "^7.17.0" - "@babel/helper-simple-access@^7.18.2": version "7.18.2" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz#4dc473c2169ac3a1c9f4a51cfcd091d1c36fcff9" @@ -281,6 +306,13 @@ dependencies: "@babel/types" "^7.18.2" +"@babel/helper-simple-access@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz#d6d8f51f4ac2978068df934b569f08f29788c7ea" + integrity sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g== + dependencies: + "@babel/types" "^7.18.6" + "@babel/helper-skip-transparent-expression-wrappers@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" @@ -295,6 +327,13 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-split-export-declaration@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + dependencies: + "@babel/types" "^7.18.6" + "@babel/helper-validator-identifier@^7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" @@ -305,11 +344,21 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== +"@babel/helper-validator-identifier@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" + integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== + "@babel/helper-validator-option@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== +"@babel/helper-validator-option@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" + integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== + "@babel/helper-wrap-function@^7.16.8": version "7.16.8" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200" @@ -320,14 +369,14 @@ "@babel/traverse" "^7.16.8" "@babel/types" "^7.16.8" -"@babel/helpers@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.2.tgz#970d74f0deadc3f5a938bfa250738eb4ac889384" - integrity sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg== +"@babel/helpers@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.6.tgz#4c966140eaa1fcaa3d5a8c09d7db61077d4debfd" + integrity sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ== dependencies: - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.18.2" - "@babel/types" "^7.18.2" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.6" + "@babel/types" "^7.18.6" "@babel/highlight@^7.10.4": version "7.12.13" @@ -338,19 +387,19 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/highlight@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.7.tgz#81a01d7d675046f0d96f82450d9d9578bdfd6b0b" - integrity sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw== +"@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== dependencies: - "@babel/helper-validator-identifier" "^7.16.7" + "@babel/helper-validator-identifier" "^7.18.6" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.18.5": - version "7.18.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.5.tgz#337062363436a893a2d22faa60be5bb37091c83c" - integrity sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.6.tgz#845338edecad65ebffef058d3be851f1d28a63bc" + integrity sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.17.12": version "7.17.12" @@ -1086,37 +1135,37 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.16.7", "@babel/template@^7.3.3": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" - integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== +"@babel/template@^7.16.7", "@babel/template@^7.18.6", "@babel/template@^7.3.3": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.6.tgz#1283f4993e00b929d6e2d3c72fdc9168a2977a31" + integrity sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw== dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/parser" "^7.16.7" - "@babel/types" "^7.16.7" + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.18.6" + "@babel/types" "^7.18.6" -"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.18.5", "@babel/traverse@^7.7.2": - version "7.18.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.5.tgz#94a8195ad9642801837988ab77f36e992d9a20cd" - integrity sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA== +"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.2", "@babel/traverse@^7.18.6", "@babel/traverse@^7.7.2": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.6.tgz#a228562d2f46e89258efa4ddd0416942e2fd671d" + integrity sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw== dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.18.2" - "@babel/helper-environment-visitor" "^7.18.2" - "@babel/helper-function-name" "^7.17.9" - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.18.5" - "@babel/types" "^7.18.4" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-function-name" "^7.18.6" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.18.6" + "@babel/types" "^7.18.6" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.12", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.18.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.18.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354" - integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw== +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.12", "@babel/types@^7.18.2", "@babel/types@^7.18.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.6.tgz#5d781dd10a3f0c9f1f931bd19de5eb26ec31acf0" + integrity sha512-NdBNzPDwed30fZdDQtVR7ZgaO4UKjuaQFH9VArS+HMnurlOY0JWN+4ROlu/iapMFwjRQU4pOG4StZfDmulEwGA== dependencies: - "@babel/helper-validator-identifier" "^7.16.7" + "@babel/helper-validator-identifier" "^7.18.6" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": From 07e2519054ed2dab3b72e0dda51dc58666d4331f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Jun 2022 18:56:20 +0900 Subject: [PATCH 195/652] Bump @babel/plugin-transform-runtime from 7.18.5 to 7.18.6 (#18722) Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.18.5 to 7.18.6. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.6/packages/babel-plugin-transform-runtime) --- updated-dependencies: - dependency-name: "@babel/plugin-transform-runtime" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 131 ++++++++++++++++++++++++++++++++------------------- 2 files changed, 84 insertions(+), 49 deletions(-) diff --git a/package.json b/package.json index 74a4a6208..8b814530f 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "@babel/core": "^7.18.6", "@babel/plugin-proposal-decorators": "^7.18.2", "@babel/plugin-transform-react-inline-elements": "^7.16.7", - "@babel/plugin-transform-runtime": "^7.18.5", + "@babel/plugin-transform-runtime": "^7.18.6", "@babel/preset-env": "^7.18.2", "@babel/preset-react": "^7.17.12", "@babel/runtime": "^7.18.3", diff --git a/yarn.lock b/yarn.lock index e2deea41a..70b1ec3c5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -134,20 +134,6 @@ "@babel/helper-annotate-as-pure" "^7.16.7" regexpu-core "^5.0.1" -"@babel/helper-define-polyfill-provider@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz#c5b10cf4b324ff840140bb07e05b8564af2ae971" - integrity sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg== - dependencies: - "@babel/helper-compilation-targets" "^7.13.0" - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/traverse" "^7.13.0" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - "@babel/helper-define-polyfill-provider@^0.3.1": version "0.3.1" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665" @@ -239,12 +225,12 @@ dependencies: "@babel/types" "^7.17.0" -"@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" - integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== +"@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" + integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== dependencies: - "@babel/types" "^7.16.7" + "@babel/types" "^7.18.6" "@babel/helper-module-imports@^7.18.6": version "7.18.6" @@ -274,10 +260,10 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.17.12", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz#86c2347da5acbf5583ba0a10aed4c9bf9da9cf96" - integrity sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.17.12", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz#9448974dd4fb1d80fefe72e8a0af37809cd30d6d" + integrity sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg== "@babel/helper-remap-async-to-generator@^7.16.8": version "7.16.8" @@ -946,16 +932,16 @@ dependencies: "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-runtime@^7.18.5": - version "7.18.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.5.tgz#f4d3188ba6a8815793993c71c2c225d0ee1d7743" - integrity sha512-Q17hHxXr2fplrE+5BSC1j1Fo5cOA8YeP8XW3/1paI8MzF/faZGh0MaH1KC4jLAvqLPamQWHB5/B7KqSLY1kuHA== +"@babel/plugin-transform-runtime@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.6.tgz#77b14416015ea93367ca06979710f5000ff34ccb" + integrity sha512-8uRHk9ZmRSnWqUgyae249EJZ94b0yAGLBIqzZzl+0iEdbno55Pmlt/32JZsHwXD9k/uZj18Aqqk35wBX4CBTXA== dependencies: - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.17.12" - babel-plugin-polyfill-corejs2 "^0.3.0" - babel-plugin-polyfill-corejs3 "^0.5.0" - babel-plugin-polyfill-regenerator "^0.3.0" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + babel-plugin-polyfill-corejs2 "^0.3.1" + babel-plugin-polyfill-corejs3 "^0.5.2" + babel-plugin-polyfill-regenerator "^0.3.1" semver "^6.3.0" "@babel/plugin-transform-shorthand-properties@^7.16.7": @@ -1168,6 +1154,14 @@ "@babel/helper-validator-identifier" "^7.18.6" to-fast-properties "^2.0.0" +"@babel/types@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.6.tgz#5d781dd10a3f0c9f1f931bd19de5eb26ec31acf0" + integrity sha512-NdBNzPDwed30fZdDQtVR7ZgaO4UKjuaQFH9VArS+HMnurlOY0JWN+4ROlu/iapMFwjRQU4pOG4StZfDmulEwGA== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -2641,29 +2635,29 @@ babel-plugin-macros@^3.0.1: cosmiconfig "^7.0.0" resolve "^1.19.0" -babel-plugin-polyfill-corejs2@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz#407082d0d355ba565af24126fb6cb8e9115251fd" - integrity sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA== +babel-plugin-polyfill-corejs2@^0.3.0, babel-plugin-polyfill-corejs2@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" + integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== dependencies: "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.3.0" + "@babel/helper-define-polyfill-provider" "^0.3.1" semver "^6.1.1" -babel-plugin-polyfill-corejs3@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.1.tgz#d66183bf10976ea677f4149a7fcc4d8df43d4060" - integrity sha512-TihqEe4sQcb/QcPJvxe94/9RZuLQuF1+To4WqQcRvc+3J3gLCPIPgDKzGLG6zmQLfH3nn25heRuDNkS2KR4I8A== +babel-plugin-polyfill-corejs3@^0.5.0, babel-plugin-polyfill-corejs3@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" + integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== dependencies: "@babel/helper-define-polyfill-provider" "^0.3.1" - core-js-compat "^3.20.0" + core-js-compat "^3.21.0" -babel-plugin-polyfill-regenerator@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz#9ebbcd7186e1a33e21c5e20cae4e7983949533be" - integrity sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg== +babel-plugin-polyfill-regenerator@^0.3.0, babel-plugin-polyfill-regenerator@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" + integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.0" + "@babel/helper-define-polyfill-provider" "^0.3.1" babel-plugin-preval@^5.1.0: version "5.1.0" @@ -2977,6 +2971,16 @@ browserslist@^4.20.2, browserslist@^4.20.3: node-releases "^2.0.3" picocolors "^1.0.0" +browserslist@^4.21.0: + version "4.21.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.0.tgz#7ab19572361a140ecd1e023e2c1ed95edda0cefe" + integrity sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA== + dependencies: + caniuse-lite "^1.0.30001358" + electron-to-chromium "^1.4.164" + node-releases "^2.0.5" + update-browserslist-db "^1.0.0" + bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -3165,6 +3169,11 @@ caniuse-lite@^1.0.30001332: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001335.tgz#899254a0b70579e5a957c32dced79f0727c61f2a" integrity sha512-ddP1Tgm7z2iIxu6QTtbZUv6HJxSaV/PZeSrWFZtbY4JZ69tOeNhBCl3HyRQgeNZKE5AOn1kpV7fhljigy0Ty3w== +caniuse-lite@^1.0.30001358: + version "1.0.30001359" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001359.tgz#a1c1cbe1c2da9e689638813618b4219acbd4925e" + integrity sha512-Xln/BAsPzEuiVLgJ2/45IaqD9jShtk3Y33anKb4+yLwQzws3+v6odKfpgES/cDEaZMLzSChpIGdbOYtH9MyuHw== + chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -3570,7 +3579,15 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js-compat@^3.20.0, core-js-compat@^3.22.1: +core-js-compat@^3.21.0: + version "3.23.3" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.23.3.tgz#7d8503185be76bb6d8d592c291a4457a8e440aa9" + integrity sha512-WSzUs2h2vvmKsacLHNTdpyOC9k43AEhcGoFlVgCY4L7aw98oSBKtPL6vD0/TqZjRWRQYdDSLkzZIni4Crbbiqw== + dependencies: + browserslist "^4.21.0" + semver "7.0.0" + +core-js-compat@^3.22.1: version "3.22.4" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.22.4.tgz#d700f451e50f1d7672dcad0ac85d910e6691e579" integrity sha512-dIWcsszDezkFZrfm1cnB4f/J85gyhiCpxbgBdohWCDtSVuAaChTSpPV7ldOQf/Xds2U5xCIJZOK82G4ZPAIswA== @@ -4307,6 +4324,11 @@ electron-to-chromium@^1.4.118: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.129.tgz#c675793885721beefff99da50f57c6525c2cd238" integrity sha512-GgtN6bsDtHdtXJtlMYZWGB/uOyjZWjmRDumXTas7dGBaB9zUyCjzHet1DY2KhyHN8R0GLbzZWqm4efeddqqyRQ== +electron-to-chromium@^1.4.164: + version "1.4.170" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.170.tgz#0415fc489402e09bfbe1f0c99bbf4d73f31d48d4" + integrity sha512-rZ8PZLhK4ORPjFqLp9aqC4/S1j4qWFsPPz13xmWdrbBkU/LlxMcok+f+6f8YnQ57MiZwKtOaW15biZZsY5Igvw== + elliptic@^6.5.3: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" @@ -7770,6 +7792,11 @@ node-releases@^2.0.3: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.4.tgz#f38252370c43854dc48aa431c766c6c398f40476" integrity sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ== +node-releases@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" + integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== + normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -11244,6 +11271,14 @@ upath@^1.1.1: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== +update-browserslist-db@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz#dbfc5a789caa26b1db8990796c2c8ebbce304824" + integrity sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + uri-js@^4.2.2: version "4.4.0" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" From 38f9b18343b18cd10968d9ce404639dd54df652a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Jun 2022 18:56:43 +0900 Subject: [PATCH 196/652] Bump @babel/runtime from 7.18.3 to 7.18.6 (#18728) Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.18.3 to 7.18.6. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.6/packages/babel-runtime) --- updated-dependencies: - dependency-name: "@babel/runtime" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 8b814530f..922830c90 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "@babel/plugin-transform-runtime": "^7.18.6", "@babel/preset-env": "^7.18.2", "@babel/preset-react": "^7.17.12", - "@babel/runtime": "^7.18.3", + "@babel/runtime": "^7.18.6", "@gamestdio/websocket": "^0.3.2", "@github/webauthn-json": "^0.5.7", "@rails/ujs": "^6.1.6", diff --git a/yarn.lock b/yarn.lock index 70b1ec3c5..43fb715c4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1114,10 +1114,10 @@ dependencies: regenerator-runtime "^0.12.0" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - version "7.18.3" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.3.tgz#c7b654b57f6f63cf7f8b418ac9ca04408c4579f4" - integrity sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug== +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.6", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.6.tgz#6a1ef59f838debd670421f8c7f2cbb8da9751580" + integrity sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ== dependencies: regenerator-runtime "^0.13.4" From 47d74256c4a914b0548ac76db5fdade3d788b27e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Jun 2022 19:08:05 +0900 Subject: [PATCH 197/652] Bump @babel/plugin-transform-react-inline-elements from 7.16.7 to 7.18.6 (#18729) Bumps [@babel/plugin-transform-react-inline-elements](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-react-inline-elements) from 7.16.7 to 7.18.6. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.6/packages/babel-plugin-transform-react-inline-elements) --- updated-dependencies: - dependency-name: "@babel/plugin-transform-react-inline-elements" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 46 +++++++++++++++++++--------------------------- 2 files changed, 20 insertions(+), 28 deletions(-) diff --git a/package.json b/package.json index 922830c90..2af701c29 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "dependencies": { "@babel/core": "^7.18.6", "@babel/plugin-proposal-decorators": "^7.18.2", - "@babel/plugin-transform-react-inline-elements": "^7.16.7", + "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.18.6", "@babel/preset-env": "^7.18.2", "@babel/preset-react": "^7.17.12", diff --git a/yarn.lock b/yarn.lock index 43fb715c4..b00a24ca1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -79,6 +79,13 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-annotate-as-pure@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" + integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== + dependencies: + "@babel/types" "^7.18.6" + "@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b" @@ -87,13 +94,13 @@ "@babel/helper-explode-assignable-expression" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/helper-builder-react-jsx@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.16.7.tgz#6f9da7cea0fde8420e0938d490837feb5bde8dda" - integrity sha512-XKorXOl2868Un8/XK2o4GLlXr8Q08KthWI5W3qyCkh6tCGf5Ncg3HR4oN2UO+sqPoAlcMgz9elFW/FZvAHYotA== +"@babel/helper-builder-react-jsx@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.18.6.tgz#b3a302c0eb4949e5356b400cb752a91e93bf9b79" + integrity sha512-2ndBVP5f9zwHWQeBr5EgqTAvFhPDViMW969bbJzRhKUUylnC39CdFZdVmqk+UtkxIpwm/efPgm3SzXUSlJnjAw== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/types" "^7.16.7" + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/types" "^7.18.6" "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.10", "@babel/helper-compilation-targets@^7.18.2", "@babel/helper-compilation-targets@^7.18.6": version "7.18.6" @@ -232,13 +239,6 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-imports@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" - integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== - dependencies: - "@babel/types" "^7.18.6" - "@babel/helper-module-transforms@^7.18.0", "@babel/helper-module-transforms@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz#57e3ca669e273d55c3cda55e6ebf552f37f483c8" @@ -883,13 +883,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-react-inline-elements@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-inline-elements/-/plugin-transform-react-inline-elements-7.16.7.tgz#87d470ae5fc8ad5c803494070f7dc513846c03fe" - integrity sha512-jFGuZSebHob02zhrXsJhnI8xcemiDfdlJa1KR2LUfVj/4y9G2iwbJNGVsiH8mW6HEQVh5XwzWWbo/YoroDlQRg== +"@babel/plugin-transform-react-inline-elements@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-inline-elements/-/plugin-transform-react-inline-elements-7.18.6.tgz#d0676948eb5a11d547de6add7e8a2c522ec708f5" + integrity sha512-uo3yD1EXhDxmk1Y/CeFDdHS5t22IOUBooLPFOrrjfpYmDM9Vg61xbIaWeWkbYQ7Aq0zMf30/FfKoQgFwyqw6Bg== dependencies: - "@babel/helper-builder-react-jsx" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-builder-react-jsx" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-react-jsx-development@^7.16.7": version "7.16.7" @@ -1154,14 +1154,6 @@ "@babel/helper-validator-identifier" "^7.18.6" to-fast-properties "^2.0.0" -"@babel/types@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.6.tgz#5d781dd10a3f0c9f1f931bd19de5eb26ec31acf0" - integrity sha512-NdBNzPDwed30fZdDQtVR7ZgaO4UKjuaQFH9VArS+HMnurlOY0JWN+4ROlu/iapMFwjRQU4pOG4StZfDmulEwGA== - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - to-fast-properties "^2.0.0" - "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" From 8cc86af76bbd4310c49e408ba167a7cdc2ab8378 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Jun 2022 19:19:39 +0900 Subject: [PATCH 198/652] Bump @babel/preset-react from 7.17.12 to 7.18.6 (#18724) Bumps [@babel/preset-react](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-react) from 7.17.12 to 7.18.6. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.6/packages/babel-preset-react) --- updated-dependencies: - dependency-name: "@babel/preset-react" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 89 +++++++++++++++++++++++++--------------------------- 2 files changed, 43 insertions(+), 48 deletions(-) diff --git a/package.json b/package.json index 2af701c29..c093a57a2 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.18.6", "@babel/preset-env": "^7.18.2", - "@babel/preset-react": "^7.17.12", + "@babel/preset-react": "^7.18.6", "@babel/runtime": "^7.18.6", "@gamestdio/websocket": "^0.3.2", "@github/webauthn-json": "^0.5.7", diff --git a/yarn.lock b/yarn.lock index b00a24ca1..b04ccf4ff 100644 --- a/yarn.lock +++ b/yarn.lock @@ -335,12 +335,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== -"@babel/helper-validator-option@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" - integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== - -"@babel/helper-validator-option@^7.18.6": +"@babel/helper-validator-option@^7.16.7", "@babel/helper-validator-option@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== @@ -620,12 +615,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-syntax-jsx@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.17.12.tgz#834035b45061983a491f60096f61a2e7c5674a47" - integrity sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog== +"@babel/plugin-syntax-jsx@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" + integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" @@ -876,12 +871,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-react-display-name@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz#7b6d40d232f4c0f550ea348593db3b21e2404340" - integrity sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg== +"@babel/plugin-transform-react-display-name@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz#8b1125f919ef36ebdfff061d664e266c666b9415" + integrity sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-react-inline-elements@^7.18.6": version "7.18.6" @@ -891,31 +886,31 @@ "@babel/helper-builder-react-jsx" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-react-jsx-development@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz#43a00724a3ed2557ed3f276a01a929e6686ac7b8" - integrity sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A== +"@babel/plugin-transform-react-jsx-development@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz#dbe5c972811e49c7405b630e4d0d2e1380c0ddc5" + integrity sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA== dependencies: - "@babel/plugin-transform-react-jsx" "^7.16.7" + "@babel/plugin-transform-react-jsx" "^7.18.6" -"@babel/plugin-transform-react-jsx@^7.16.7", "@babel/plugin-transform-react-jsx@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.12.tgz#2aa20022709cd6a3f40b45d60603d5f269586dba" - integrity sha512-Lcaw8bxd1DKht3thfD4A12dqo1X16he1Lm8rIv8sTwjAYNInRS1qHa9aJoqvzpscItXvftKDCfaEQzwoVyXpEQ== +"@babel/plugin-transform-react-jsx@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.6.tgz#2721e96d31df96e3b7ad48ff446995d26bc028ff" + integrity sha512-Mz7xMPxoy9kPS/JScj6fJs03TZ/fZ1dJPlMjRAgTaxaS0fUBk8FV/A2rRgfPsVCZqALNwMexD+0Uaf5zlcKPpw== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/plugin-syntax-jsx" "^7.17.12" - "@babel/types" "^7.17.12" + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-jsx" "^7.18.6" + "@babel/types" "^7.18.6" -"@babel/plugin-transform-react-pure-annotations@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz#232bfd2f12eb551d6d7d01d13fe3f86b45eb9c67" - integrity sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA== +"@babel/plugin-transform-react-pure-annotations@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz#561af267f19f3e5d59291f9950fd7b9663d0d844" + integrity sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-regenerator@^7.18.0": version "7.18.0" @@ -1087,17 +1082,17 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.17.12.tgz#62adbd2d1870c0de3893095757ed5b00b492ab3d" - integrity sha512-h5U+rwreXtZaRBEQhW1hOJLMq8XNJBQ/9oymXiCXTuT/0uOwpbT0gUt+sXeOqoXBgNuUKI7TaObVwoEyWkpFgA== +"@babel/preset-react@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.18.6.tgz#979f76d6277048dc19094c217b507f3ad517dd2d" + integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-transform-react-display-name" "^7.16.7" - "@babel/plugin-transform-react-jsx" "^7.17.12" - "@babel/plugin-transform-react-jsx-development" "^7.16.7" - "@babel/plugin-transform-react-pure-annotations" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-transform-react-display-name" "^7.18.6" + "@babel/plugin-transform-react-jsx" "^7.18.6" + "@babel/plugin-transform-react-jsx-development" "^7.18.6" + "@babel/plugin-transform-react-pure-annotations" "^7.18.6" "@babel/runtime-corejs3@^7.10.2": version "7.10.3" @@ -1146,7 +1141,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.12", "@babel/types@^7.18.2", "@babel/types@^7.18.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.18.2", "@babel/types@^7.18.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.6.tgz#5d781dd10a3f0c9f1f931bd19de5eb26ec31acf0" integrity sha512-NdBNzPDwed30fZdDQtVR7ZgaO4UKjuaQFH9VArS+HMnurlOY0JWN+4ROlu/iapMFwjRQU4pOG4StZfDmulEwGA== From 9820751a598cdcdb9bfd85aa9d2f186a1c5babbc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Jun 2022 19:20:09 +0900 Subject: [PATCH 199/652] Bump @babel/plugin-proposal-decorators from 7.18.2 to 7.18.6 (#18725) Bumps [@babel/plugin-proposal-decorators](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-proposal-decorators) from 7.18.2 to 7.18.6. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.6/packages/babel-plugin-proposal-decorators) --- updated-dependencies: - dependency-name: "@babel/plugin-proposal-decorators" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 107 +++++++++++++++++++++++---------------------------- 2 files changed, 49 insertions(+), 60 deletions(-) diff --git a/package.json b/package.json index c093a57a2..1ceabdbc0 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "private": true, "dependencies": { "@babel/core": "^7.18.6", - "@babel/plugin-proposal-decorators": "^7.18.2", + "@babel/plugin-proposal-decorators": "^7.18.6", "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.18.6", "@babel/preset-env": "^7.18.2", diff --git a/yarn.lock b/yarn.lock index b04ccf4ff..39db89cf5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -112,18 +112,18 @@ browserslist "^4.20.2" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.17.12", "@babel/helper-create-class-features-plugin@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz#fac430912606331cb075ea8d82f9a4c145a4da19" - integrity sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg== +"@babel/helper-create-class-features-plugin@^7.17.12", "@babel/helper-create-class-features-plugin@^7.18.0", "@babel/helper-create-class-features-plugin@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.6.tgz#6f15f8459f3b523b39e00a99982e2c040871ed72" + integrity sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.17.9" - "@babel/helper-member-expression-to-functions" "^7.17.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-function-name" "^7.18.6" + "@babel/helper-member-expression-to-functions" "^7.18.6" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" "@babel/helper-create-regexp-features-plugin@^7.16.7": version "7.16.7" @@ -162,11 +162,6 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-environment-visitor@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd" - integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ== - "@babel/helper-environment-visitor@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz#b7eee2b5b9d70602e59d1a6cad7dd24de7ca6cd7" @@ -225,12 +220,12 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-member-expression-to-functions@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" - integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw== +"@babel/helper-member-expression-to-functions@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.6.tgz#44802d7d602c285e1692db0bad9396d007be2afc" + integrity sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng== dependencies: - "@babel/types" "^7.17.0" + "@babel/types" "^7.18.6" "@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.18.6": version "7.18.6" @@ -260,6 +255,13 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-optimise-call-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" + integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== + dependencies: + "@babel/types" "^7.18.6" + "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.17.12", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz#9448974dd4fb1d80fefe72e8a0af37809cd30d6d" @@ -274,16 +276,16 @@ "@babel/helper-wrap-function" "^7.16.8" "@babel/types" "^7.16.8" -"@babel/helper-replace-supers@^7.16.7", "@babel/helper-replace-supers@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz#41fdfcc9abaf900e18ba6e5931816d9062a7b2e0" - integrity sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q== +"@babel/helper-replace-supers@^7.16.7", "@babel/helper-replace-supers@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.6.tgz#efedf51cfccea7b7b8c0f00002ab317e7abfe420" + integrity sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g== dependencies: - "@babel/helper-environment-visitor" "^7.18.2" - "@babel/helper-member-expression-to-functions" "^7.17.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/traverse" "^7.18.2" - "@babel/types" "^7.18.2" + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-member-expression-to-functions" "^7.18.6" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/traverse" "^7.18.6" + "@babel/types" "^7.18.6" "@babel/helper-simple-access@^7.18.2": version "7.18.2" @@ -306,14 +308,7 @@ dependencies: "@babel/types" "^7.16.0" -"@babel/helper-split-export-declaration@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" - integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-split-export-declaration@^7.18.6": +"@babel/helper-split-export-declaration@^7.16.7", "@babel/helper-split-export-declaration@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== @@ -424,17 +419,16 @@ "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-proposal-decorators@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.18.2.tgz#dbe4086d2d42db489399783c3aa9272e9700afd4" - integrity sha512-kbDISufFOxeczi0v4NQP3p5kIeW6izn/6klfWBrIIdGZZe4UpHR+QU03FAoWjGGd9SUXAwbw2pup1kaL4OQsJQ== +"@babel/plugin-proposal-decorators@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.18.6.tgz#68e9fd0f022b944f84a8824bb28bfaee724d2595" + integrity sha512-gAdhsjaYmiZVxx5vTMiRfj31nB7LhwBJFMSLzeDxc7X4tKLixup0+k9ughn0RcpBrv9E3PBaXJW7jF5TCihAOg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-replace-supers" "^7.18.2" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/plugin-syntax-decorators" "^7.17.12" - charcodes "^0.2.0" + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/plugin-syntax-decorators" "^7.18.6" "@babel/plugin-proposal-dynamic-import@^7.16.7": version "7.16.7" @@ -566,12 +560,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-decorators@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.12.tgz#02e8f678602f0af8222235271efea945cfdb018a" - integrity sha512-D1Hz0qtGTza8K2xGyEdVNCYLdVHukAcbQr4K3/s6r/esadyEriZovpJimQOpu8ju4/jV8dW/1xdaE0UpDroidw== +"@babel/plugin-syntax-decorators@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.18.6.tgz#2e45af22835d0b0f8665da2bfd4463649ce5dbc1" + integrity sha512-fqyLgjcxf/1yhyZ6A+yo1u9gJ7eleFQod2lkaUsF9DQ7sbbY3Ligym3L0+I2c0WmqNKDpoD9UTb1AKP3qRMOAQ== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" @@ -1125,7 +1119,7 @@ "@babel/parser" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.2", "@babel/traverse@^7.18.6", "@babel/traverse@^7.7.2": +"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.6", "@babel/traverse@^7.7.2": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.6.tgz#a228562d2f46e89258efa4ddd0416942e2fd671d" integrity sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw== @@ -3202,11 +3196,6 @@ char-regex@^1.0.2: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== -charcodes@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/charcodes/-/charcodes-0.2.0.tgz#5208d327e6cc05f99eb80ffc814707572d1f14e4" - integrity sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ== - "chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.1: version "3.5.1" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" From f804c00920f4f5a59cea43268c11fa8492bc18f5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Jun 2022 19:34:42 +0900 Subject: [PATCH 200/652] Bump @babel/preset-env from 7.18.2 to 7.18.6 (#18733) Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.18.2 to 7.18.6. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.6/packages/babel-preset-env) --- updated-dependencies: - dependency-name: "@babel/preset-env" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 958 ++++++++++++++++++++++----------------------------- 2 files changed, 409 insertions(+), 551 deletions(-) diff --git a/package.json b/package.json index 1ceabdbc0..c263538e9 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "@babel/plugin-proposal-decorators": "^7.18.6", "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.18.6", - "@babel/preset-env": "^7.18.2", + "@babel/preset-env": "^7.18.6", "@babel/preset-react": "^7.18.6", "@babel/runtime": "^7.18.6", "@gamestdio/websocket": "^0.3.2", diff --git a/yarn.lock b/yarn.lock index 39db89cf5..12b02d95c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,12 +23,7 @@ dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.17.10": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" - integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw== - -"@babel/compat-data@^7.18.6": +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.6.tgz#8b37d24e88e8e21c499d4328db80577d8882fa53" integrity sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ== @@ -72,13 +67,6 @@ "@jridgewell/gen-mapping" "^0.3.0" jsesc "^2.5.1" -"@babel/helper-annotate-as-pure@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" - integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== - dependencies: - "@babel/types" "^7.16.7" - "@babel/helper-annotate-as-pure@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" @@ -86,13 +74,13 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b" - integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.6.tgz#f14d640ed1ee9246fb33b8255f08353acfe70e6a" + integrity sha512-KT10c1oWEpmrIRYnthbzHgoOf6B+Xd6a5yhdbNtdhtG7aO1or5HViuf1TQR36xY/QprXA5nvxO6nAjhJ4y38jw== dependencies: - "@babel/helper-explode-assignable-expression" "^7.16.7" - "@babel/types" "^7.16.7" + "@babel/helper-explode-assignable-expression" "^7.18.6" + "@babel/types" "^7.18.6" "@babel/helper-builder-react-jsx@^7.18.6": version "7.18.6" @@ -102,7 +90,7 @@ "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.10", "@babel/helper-compilation-targets@^7.18.2", "@babel/helper-compilation-targets@^7.18.6": +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz#18d35bfb9f83b1293c22c55b3d576c1315b6ed96" integrity sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg== @@ -112,7 +100,7 @@ browserslist "^4.20.2" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.17.12", "@babel/helper-create-class-features-plugin@^7.18.0", "@babel/helper-create-class-features-plugin@^7.18.6": +"@babel/helper-create-class-features-plugin@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.6.tgz#6f15f8459f3b523b39e00a99982e2c040871ed72" integrity sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw== @@ -125,21 +113,13 @@ "@babel/helper-replace-supers" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" -"@babel/helper-create-regexp-features-plugin@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz#0cb82b9bac358eb73bfbd73985a776bfa6b14d48" - integrity sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g== +"@babel/helper-create-regexp-features-plugin@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz#3e35f4e04acbbf25f1b3534a657610a000543d3c" + integrity sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - regexpu-core "^4.7.1" - -"@babel/helper-create-regexp-features-plugin@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz#bb37ca467f9694bbe55b884ae7a5cc1e0084e4fd" - integrity sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - regexpu-core "^5.0.1" + "@babel/helper-annotate-as-pure" "^7.18.6" + regexpu-core "^5.1.0" "@babel/helper-define-polyfill-provider@^0.3.1": version "0.3.1" @@ -155,41 +135,17 @@ resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-environment-visitor@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" - integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== - dependencies: - "@babel/types" "^7.16.7" - "@babel/helper-environment-visitor@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz#b7eee2b5b9d70602e59d1a6cad7dd24de7ca6cd7" integrity sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q== -"@babel/helper-explode-assignable-expression@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" - integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ== +"@babel/helper-explode-assignable-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" + integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-function-name@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" - integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== - dependencies: - "@babel/helper-get-function-arity" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/helper-function-name@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" - integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== - dependencies: - "@babel/template" "^7.16.7" - "@babel/types" "^7.17.0" + "@babel/types" "^7.18.6" "@babel/helper-function-name@^7.18.6": version "7.18.6" @@ -199,20 +155,6 @@ "@babel/template" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/helper-get-function-arity@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" - integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-hoist-variables@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" - integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== - dependencies: - "@babel/types" "^7.16.7" - "@babel/helper-hoist-variables@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" @@ -227,14 +169,14 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.18.6": +"@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-transforms@^7.18.0", "@babel/helper-module-transforms@^7.18.6": +"@babel/helper-module-transforms@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz#57e3ca669e273d55c3cda55e6ebf552f37f483c8" integrity sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw== @@ -248,13 +190,6 @@ "@babel/traverse" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/helper-optimise-call-expression@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" - integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== - dependencies: - "@babel/types" "^7.16.7" - "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" @@ -262,21 +197,22 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.17.12", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz#9448974dd4fb1d80fefe72e8a0af37809cd30d6d" integrity sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg== -"@babel/helper-remap-async-to-generator@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3" - integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw== +"@babel/helper-remap-async-to-generator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.6.tgz#fa1f81acd19daee9d73de297c0308783cd3cfc23" + integrity sha512-z5wbmV55TveUPZlCLZvxWHtrjuJd+8inFhk7DG0WW87/oJuGDcjDiu7HIvGcpf5464L6xKCg3vNkmlVVz9hwyQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-wrap-function" "^7.16.8" - "@babel/types" "^7.16.8" + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-wrap-function" "^7.18.6" + "@babel/types" "^7.18.6" -"@babel/helper-replace-supers@^7.16.7", "@babel/helper-replace-supers@^7.18.6": +"@babel/helper-replace-supers@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.6.tgz#efedf51cfccea7b7b8c0f00002ab317e7abfe420" integrity sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g== @@ -287,13 +223,6 @@ "@babel/traverse" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/helper-simple-access@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz#4dc473c2169ac3a1c9f4a51cfcd091d1c36fcff9" - integrity sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ== - dependencies: - "@babel/types" "^7.18.2" - "@babel/helper-simple-access@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz#d6d8f51f4ac2978068df934b569f08f29788c7ea" @@ -301,14 +230,14 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" - integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== +"@babel/helper-skip-transparent-expression-wrappers@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.6.tgz#7dff00a5320ca4cf63270e5a0eca4b268b7380d9" + integrity sha512-4KoLhwGS9vGethZpAhYnMejWkX64wsnHPDwvOsKWU6Fg4+AlK2Jz3TyjQLMEPvz+1zemi/WBdkYxCD0bAfIkiw== dependencies: - "@babel/types" "^7.16.0" + "@babel/types" "^7.18.6" -"@babel/helper-split-export-declaration@^7.16.7", "@babel/helper-split-export-declaration@^7.18.6": +"@babel/helper-split-export-declaration@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== @@ -320,30 +249,25 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== -"@babel/helper-validator-identifier@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" - integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== - "@babel/helper-validator-identifier@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== -"@babel/helper-validator-option@^7.16.7", "@babel/helper-validator-option@^7.18.6": +"@babel/helper-validator-option@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== -"@babel/helper-wrap-function@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200" - integrity sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw== +"@babel/helper-wrap-function@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.18.6.tgz#ec44ea4ad9d8988b90c3e465ba2382f4de81a073" + integrity sha512-I5/LZfozwMNbwr/b1vhhuYD+J/mU+gfGAj5td7l5Rv9WYmH6i3Om69WGKNmlIpsVW/mF6O5bvTKbvDQZVgjqOw== dependencies: - "@babel/helper-function-name" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.8" - "@babel/types" "^7.16.8" + "@babel/helper-function-name" "^7.18.6" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.6" + "@babel/types" "^7.18.6" "@babel/helpers@^7.18.6": version "7.18.6" @@ -377,46 +301,47 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.6.tgz#845338edecad65ebffef058d3be851f1d28a63bc" integrity sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw== -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz#1dca338caaefca368639c9ffb095afbd4d420b1e" - integrity sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" + integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz#0d498ec8f0374b1e2eb54b9cb2c4c78714c77753" - integrity sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.6.tgz#b4e4dbc2cd1acd0133479918f7c6412961c9adb8" + integrity sha512-Udgu8ZRgrBrttVz6A0EVL0SJ1z+RLbIeqsu632SA1hf0awEppD6TvdznoH+orIF8wtFFAV/Enmw9Y+9oV8TQcw== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - "@babel/plugin-proposal-optional-chaining" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" + "@babel/plugin-proposal-optional-chaining" "^7.18.6" -"@babel/plugin-proposal-async-generator-functions@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz#094a417e31ce7e692d84bab06c8e2a607cbeef03" - integrity sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ== +"@babel/plugin-proposal-async-generator-functions@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz#aedac81e6fc12bb643374656dd5f2605bf743d17" + integrity sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-remap-async-to-generator" "^7.16.8" + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-remap-async-to-generator" "^7.18.6" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz#84f65c0cc247d46f40a6da99aadd6438315d80a4" - integrity sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw== +"@babel/plugin-proposal-class-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.17.12" - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-class-static-block@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz#7d02253156e3c3793bdb9f2faac3a1c05f0ba710" - integrity sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA== +"@babel/plugin-proposal-class-static-block@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz#8aa81d403ab72d3962fc06c26e222dacfc9b9020" + integrity sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-proposal-decorators@^7.18.6": @@ -430,107 +355,107 @@ "@babel/helper-split-export-declaration" "^7.18.6" "@babel/plugin-syntax-decorators" "^7.18.6" -"@babel/plugin-proposal-dynamic-import@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2" - integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg== +"@babel/plugin-proposal-dynamic-import@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" + integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-proposal-export-namespace-from@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz#b22864ccd662db9606edb2287ea5fd1709f05378" - integrity sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ== +"@babel/plugin-proposal-export-namespace-from@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.6.tgz#1016f0aa5ab383bbf8b3a85a2dcaedf6c8ee7491" + integrity sha512-zr/QcUlUo7GPo6+X1wC98NJADqmy5QTFWWhqeQWiki4XHafJtLl/YMGkmRB2szDD2IYJCCdBTd4ElwhId9T7Xw== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz#f4642951792437233216d8c1af370bb0fbff4664" - integrity sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg== +"@babel/plugin-proposal-json-strings@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" + integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz#c64a1bcb2b0a6d0ed2ff674fd120f90ee4b88a23" - integrity sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q== +"@babel/plugin-proposal-logical-assignment-operators@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.6.tgz#3b9cac6f1ffc2aa459d111df80c12020dfc6b665" + integrity sha512-zMo66azZth/0tVd7gmkxOkOjs2rpHyhpcFo565PUP37hSp6hSd9uUKIfTDFMz58BwqgQKhJ9YxtM5XddjXVn+Q== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz#1e93079bbc2cbc756f6db6a1925157c4a92b94be" - integrity sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9" - integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw== +"@babel/plugin-proposal-numeric-separator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" + integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz#79f2390c892ba2a68ec112eb0d895cfbd11155e8" - integrity sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw== +"@babel/plugin-proposal-object-rest-spread@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.6.tgz#ec93bba06bfb3e15ebd7da73e953d84b094d5daf" + integrity sha512-9yuM6wr4rIsKa1wlUAbZEazkCrgw2sMPEXCr4Rnwetu7cEW1NydkCWytLuYletbf8vFxdJxFhwEZqMpOx2eZyw== dependencies: - "@babel/compat-data" "^7.17.10" - "@babel/helper-compilation-targets" "^7.17.10" - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/compat-data" "^7.18.6" + "@babel/helper-compilation-targets" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.17.12" + "@babel/plugin-transform-parameters" "^7.18.6" -"@babel/plugin-proposal-optional-catch-binding@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf" - integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA== +"@babel/plugin-proposal-optional-catch-binding@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" + integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz#f96949e9bacace3a9066323a5cf90cfb9de67174" - integrity sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ== +"@babel/plugin-proposal-optional-chaining@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.6.tgz#46d4f2ffc20e87fad1d98bc4fa5d466366f6aa0b" + integrity sha512-PatI6elL5eMzoypFAiYDpYQyMtXTn+iMhuxxQt5mAXD4fEmKorpSI3PHd+i3JXBJN3xyA6MvJv7at23HffFHwA== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-methods@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz#c2ca3a80beb7539289938da005ad525a038a819c" - integrity sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A== +"@babel/plugin-proposal-private-methods@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" + integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.17.12" - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-private-property-in-object@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz#b02efb7f106d544667d91ae97405a9fd8c93952d" - integrity sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg== +"@babel/plugin-proposal-private-property-in-object@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz#a64137b232f0aca3733a67eb1a144c192389c503" + integrity sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-create-class-features-plugin" "^7.17.12" - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.17.12", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz#3dbd7a67bd7f94c8238b394da112d86aaf32ad4d" - integrity sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A== +"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" + integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.17.12" - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -581,12 +506,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-import-assertions@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz#58096a92b11b2e4e54b24c6a0cc0e5e607abcedd" - integrity sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw== +"@babel/plugin-syntax-import-assertions@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz#cd6190500a4fa2fe31990a963ffab4b63e4505e4" + integrity sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" @@ -679,191 +604,191 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-arrow-functions@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz#dddd783b473b1b1537ef46423e3944ff24898c45" - integrity sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA== +"@babel/plugin-transform-arrow-functions@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz#19063fcf8771ec7b31d742339dac62433d0611fe" + integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-async-to-generator@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz#dbe5511e6b01eee1496c944e35cdfe3f58050832" - integrity sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ== +"@babel/plugin-transform-async-to-generator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz#ccda3d1ab9d5ced5265fdb13f1882d5476c71615" + integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== dependencies: - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-remap-async-to-generator" "^7.16.8" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-remap-async-to-generator" "^7.18.6" -"@babel/plugin-transform-block-scoped-functions@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" - integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg== +"@babel/plugin-transform-block-scoped-functions@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" + integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-block-scoping@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.17.12.tgz#68fc3c4b3bb7dfd809d97b7ed19a584052a2725c" - integrity sha512-jw8XW/B1i7Lqwqj2CbrViPcZijSxfguBWZP2aN59NHgxUyO/OcO1mfdCxH13QhN5LbWhPkX+f+brKGhZTiqtZQ== +"@babel/plugin-transform-block-scoping@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.6.tgz#b5f78318914615397d86a731ef2cc668796a726c" + integrity sha512-pRqwb91C42vs1ahSAWJkxOxU1RHWDn16XAa6ggQ72wjLlWyYeAcLvTtE0aM8ph3KNydy9CQF2nLYcjq1WysgxQ== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-classes@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.17.12.tgz#da889e89a4d38375eeb24985218edeab93af4f29" - integrity sha512-cvO7lc7pZat6BsvH6l/EGaI8zpl8paICaoGk+7x7guvtfak/TbIf66nYmJOH13EuG0H+Xx3M+9LQDtSvZFKXKw== +"@babel/plugin-transform-classes@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.6.tgz#3501a8f3f4c7d5697c27a3eedbee71d68312669f" + integrity sha512-XTg8XW/mKpzAF3actL554Jl/dOYoJtv3l8fxaEczpgz84IeeVf+T1u2CSvPHuZbt0w3JkIx4rdn/MRQI7mo0HQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.17.9" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-replace-supers" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-function-name" "^7.18.6" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz#bca616a83679698f3258e892ed422546e531387f" - integrity sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ== +"@babel/plugin-transform-computed-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.6.tgz#5d15eb90e22e69604f3348344c91165c5395d032" + integrity sha512-9repI4BhNrR0KenoR9vm3/cIc1tSBIo+u1WVjKCAynahj25O8zfbiE6JtAtHPGQSs4yZ+bA8mRasRP+qc+2R5A== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-destructuring@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz#dc4f92587e291b4daa78aa20cc2d7a63aa11e858" - integrity sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw== +"@babel/plugin-transform-destructuring@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.6.tgz#a98b0e42c7ffbf5eefcbcf33280430f230895c6f" + integrity sha512-tgy3u6lRp17ilY8r1kP4i2+HDUwxlVqq3RTc943eAWSzGgpU1qhiKpqZ5CMyHReIYPHdo3Kg8v8edKtDqSVEyQ== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241" - integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ== +"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" + integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-duplicate-keys@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz#a09aa709a3310013f8e48e0e23bc7ace0f21477c" - integrity sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw== +"@babel/plugin-transform-duplicate-keys@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.6.tgz#e6c94e8cd3c9dd8a88144f7b78ae22975a7ff473" + integrity sha512-NJU26U/208+sxYszf82nmGYqVF9QN8py2HFTblPT9hbawi8+1C5a9JubODLTGFuT0qlkqVinmkwOD13s0sZktg== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-exponentiation-operator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b" - integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA== +"@babel/plugin-transform-exponentiation-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" + integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-for-of@^7.18.1": - version "7.18.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz#ed14b657e162b72afbbb2b4cdad277bf2bb32036" - integrity sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg== +"@babel/plugin-transform-for-of@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.6.tgz#e0fdb813be908e91ccc9ec87b30cc2eabf046f7c" + integrity sha512-WAjoMf4wIiSsy88KmG7tgj2nFdEK7E46tArVtcgED7Bkj6Fg/tG5SbvNIOKxbFS2VFgNh6+iaPswBeQZm4ox8w== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-function-name@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" - integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA== +"@babel/plugin-transform-function-name@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.6.tgz#6a7e4ae2893d336fd1b8f64c9f92276391d0f1b4" + integrity sha512-kJha/Gbs5RjzIu0CxZwf5e3aTTSlhZnHMT8zPWnJMjNpLOUgqevg+PN5oMH68nMCXnfiMo4Bhgxqj59KHTlAnA== dependencies: - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-compilation-targets" "^7.18.6" + "@babel/helper-function-name" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-literals@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz#97131fbc6bbb261487105b4b3edbf9ebf9c830ae" - integrity sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ== +"@babel/plugin-transform-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.6.tgz#9d6af353b5209df72960baf4492722d56f39a205" + integrity sha512-x3HEw0cJZVDoENXOp20HlypIHfl0zMIhMVZEBVTfmqbObIpsMxMbmU5nOEO8R7LYT+z5RORKPlTI5Hj4OsO9/Q== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-member-expression-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" - integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw== +"@babel/plugin-transform-member-expression-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" + integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-modules-amd@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz#7ef1002e67e36da3155edc8bf1ac9398064c02ed" - integrity sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA== +"@babel/plugin-transform-modules-amd@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz#8c91f8c5115d2202f277549848874027d7172d21" + integrity sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg== dependencies: - "@babel/helper-module-transforms" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz#1aa8efa2e2a6e818b6a7f2235fceaf09bdb31e9e" - integrity sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ== +"@babel/plugin-transform-modules-commonjs@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz#afd243afba166cca69892e24a8fd8c9f2ca87883" + integrity sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q== dependencies: - "@babel/helper-module-transforms" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-simple-access" "^7.18.2" + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-simple-access" "^7.18.6" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.0.tgz#50ecdb43de97c8483824402f7125edb94cddb09a" - integrity sha512-vwKpxdHnlM5tIrRt/eA0bzfbi7gUBLN08vLu38np1nZevlPySRe6yvuATJB5F/WPJ+ur4OXwpVYq9+BsxqAQuQ== +"@babel/plugin-transform-modules-systemjs@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.6.tgz#026511b7657d63bf5d4cf2fd4aeb963139914a54" + integrity sha512-UbPYpXxLjTw6w6yXX2BYNxF3p6QY225wcTkfQCy3OMnSlS/C3xGtwUjEzGkldb/sy6PWLiCQ3NbYfjWUTI3t4g== dependencies: - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-module-transforms" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-validator-identifier" "^7.16.7" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-identifier" "^7.18.6" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz#56aac64a2c2a1922341129a4597d1fd5c3ff020f" - integrity sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA== +"@babel/plugin-transform-modules-umd@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" + integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== dependencies: - "@babel/helper-module-transforms" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-named-capturing-groups-regex@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz#9c4a5a5966e0434d515f2675c227fd8cc8606931" - integrity sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA== +"@babel/plugin-transform-named-capturing-groups-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz#c89bfbc7cc6805d692f3a49bc5fc1b630007246d" + integrity sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.17.12" - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-new-target@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.17.12.tgz#10842cd605a620944e81ea6060e9e65c265742e3" - integrity sha512-CaOtzk2fDYisbjAD4Sd1MTKGVIpRtx9bWLyj24Y/k6p4s4gQ3CqDGJauFJxt8M/LEx003d0i3klVqnN73qvK3w== +"@babel/plugin-transform-new-target@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" + integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-object-super@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" - integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw== +"@babel/plugin-transform-object-super@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" + integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.6" -"@babel/plugin-transform-parameters@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz#eb467cd9586ff5ff115a9880d6fdbd4a846b7766" - integrity sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA== +"@babel/plugin-transform-parameters@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.6.tgz#cbe03d5a4c6385dd756034ac1baa63c04beab8dc" + integrity sha512-FjdqgMv37yVl/gwvzkcB+wfjRI8HQmc5EgOG9iGNvUY1ok+TjsoaMP7IqCDZBhkFcM5f3OPVMs6Dmp03C5k4/A== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-property-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" - integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw== +"@babel/plugin-transform-property-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" + integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-react-display-name@^7.18.6": version "7.18.6" @@ -906,20 +831,20 @@ "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-regenerator@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz#44274d655eb3f1af3f3a574ba819d3f48caf99d5" - integrity sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw== +"@babel/plugin-transform-regenerator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz#585c66cb84d4b4bf72519a34cfce761b8676ca73" + integrity sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" regenerator-transform "^0.15.0" -"@babel/plugin-transform-reserved-words@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz#7dbd349f3cdffba751e817cf40ca1386732f652f" - integrity sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA== +"@babel/plugin-transform-reserved-words@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" + integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-runtime@^7.18.6": version "7.18.6" @@ -933,89 +858,89 @@ babel-plugin-polyfill-regenerator "^0.3.1" semver "^6.3.0" -"@babel/plugin-transform-shorthand-properties@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" - integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg== +"@babel/plugin-transform-shorthand-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" + integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-spread@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz#c112cad3064299f03ea32afed1d659223935d1f5" - integrity sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg== +"@babel/plugin-transform-spread@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.6.tgz#82b080241965f1689f0a60ecc6f1f6575dbdb9d6" + integrity sha512-ayT53rT/ENF8WWexIRg9AiV9h0aIteyWn5ptfZTZQrjk/+f3WdrJGCY4c9wcgl2+MKkKPhzbYp97FTsquZpDCw== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" -"@babel/plugin-transform-sticky-regex@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660" - integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw== +"@babel/plugin-transform-sticky-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" + integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-template-literals@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz#31ed6915721864847c48b656281d0098ea1add28" - integrity sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g== +"@babel/plugin-transform-template-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.6.tgz#b763f4dc9d11a7cce58cf9a490d82e80547db9c2" + integrity sha512-UuqlRrQmT2SWRvahW46cGSany0uTlcj8NYOS5sRGYi8FxPYPoLd5DDmMd32ZXEj2Jq+06uGVQKHxa/hJx2EzKw== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-typeof-symbol@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz#0f12f57ac35e98b35b4ed34829948d42bd0e6889" - integrity sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw== +"@babel/plugin-transform-typeof-symbol@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.6.tgz#486bb39d5a18047358e0d04dc0d2f322f0b92e92" + integrity sha512-7m71iS/QhsPk85xSjFPovHPcH3H9qeyzsujhTc+vcdnsXavoWYJ74zx0lP5RhpC5+iDnVLO+PPMHzC11qels1g== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-unicode-escapes@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3" - integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q== +"@babel/plugin-transform-unicode-escapes@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz#0d01fb7fb2243ae1c033f65f6e3b4be78db75f27" + integrity sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-unicode-regex@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2" - integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q== +"@babel/plugin-transform-unicode-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" + integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/preset-env@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.2.tgz#f47d3000a098617926e674c945d95a28cb90977a" - integrity sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q== +"@babel/preset-env@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.6.tgz#953422e98a5f66bc56cd0b9074eaea127ec86ace" + integrity sha512-WrthhuIIYKrEFAwttYzgRNQ5hULGmwTj+D6l7Zdfsv5M7IWV/OZbUfbeL++Qrzx1nVJwWROIFhCHRYQV4xbPNw== dependencies: - "@babel/compat-data" "^7.17.10" - "@babel/helper-compilation-targets" "^7.18.2" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.17.12" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.17.12" - "@babel/plugin-proposal-async-generator-functions" "^7.17.12" - "@babel/plugin-proposal-class-properties" "^7.17.12" - "@babel/plugin-proposal-class-static-block" "^7.18.0" - "@babel/plugin-proposal-dynamic-import" "^7.16.7" - "@babel/plugin-proposal-export-namespace-from" "^7.17.12" - "@babel/plugin-proposal-json-strings" "^7.17.12" - "@babel/plugin-proposal-logical-assignment-operators" "^7.17.12" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.17.12" - "@babel/plugin-proposal-numeric-separator" "^7.16.7" - "@babel/plugin-proposal-object-rest-spread" "^7.18.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" - "@babel/plugin-proposal-optional-chaining" "^7.17.12" - "@babel/plugin-proposal-private-methods" "^7.17.12" - "@babel/plugin-proposal-private-property-in-object" "^7.17.12" - "@babel/plugin-proposal-unicode-property-regex" "^7.17.12" + "@babel/compat-data" "^7.18.6" + "@babel/helper-compilation-targets" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.6" + "@babel/plugin-proposal-async-generator-functions" "^7.18.6" + "@babel/plugin-proposal-class-properties" "^7.18.6" + "@babel/plugin-proposal-class-static-block" "^7.18.6" + "@babel/plugin-proposal-dynamic-import" "^7.18.6" + "@babel/plugin-proposal-export-namespace-from" "^7.18.6" + "@babel/plugin-proposal-json-strings" "^7.18.6" + "@babel/plugin-proposal-logical-assignment-operators" "^7.18.6" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" + "@babel/plugin-proposal-numeric-separator" "^7.18.6" + "@babel/plugin-proposal-object-rest-spread" "^7.18.6" + "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" + "@babel/plugin-proposal-optional-chaining" "^7.18.6" + "@babel/plugin-proposal-private-methods" "^7.18.6" + "@babel/plugin-proposal-private-property-in-object" "^7.18.6" + "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.17.12" + "@babel/plugin-syntax-import-assertions" "^7.18.6" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" @@ -1025,43 +950,43 @@ "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.17.12" - "@babel/plugin-transform-async-to-generator" "^7.17.12" - "@babel/plugin-transform-block-scoped-functions" "^7.16.7" - "@babel/plugin-transform-block-scoping" "^7.17.12" - "@babel/plugin-transform-classes" "^7.17.12" - "@babel/plugin-transform-computed-properties" "^7.17.12" - "@babel/plugin-transform-destructuring" "^7.18.0" - "@babel/plugin-transform-dotall-regex" "^7.16.7" - "@babel/plugin-transform-duplicate-keys" "^7.17.12" - "@babel/plugin-transform-exponentiation-operator" "^7.16.7" - "@babel/plugin-transform-for-of" "^7.18.1" - "@babel/plugin-transform-function-name" "^7.16.7" - "@babel/plugin-transform-literals" "^7.17.12" - "@babel/plugin-transform-member-expression-literals" "^7.16.7" - "@babel/plugin-transform-modules-amd" "^7.18.0" - "@babel/plugin-transform-modules-commonjs" "^7.18.2" - "@babel/plugin-transform-modules-systemjs" "^7.18.0" - "@babel/plugin-transform-modules-umd" "^7.18.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.12" - "@babel/plugin-transform-new-target" "^7.17.12" - "@babel/plugin-transform-object-super" "^7.16.7" - "@babel/plugin-transform-parameters" "^7.17.12" - "@babel/plugin-transform-property-literals" "^7.16.7" - "@babel/plugin-transform-regenerator" "^7.18.0" - "@babel/plugin-transform-reserved-words" "^7.17.12" - "@babel/plugin-transform-shorthand-properties" "^7.16.7" - "@babel/plugin-transform-spread" "^7.17.12" - "@babel/plugin-transform-sticky-regex" "^7.16.7" - "@babel/plugin-transform-template-literals" "^7.18.2" - "@babel/plugin-transform-typeof-symbol" "^7.17.12" - "@babel/plugin-transform-unicode-escapes" "^7.16.7" - "@babel/plugin-transform-unicode-regex" "^7.16.7" + "@babel/plugin-transform-arrow-functions" "^7.18.6" + "@babel/plugin-transform-async-to-generator" "^7.18.6" + "@babel/plugin-transform-block-scoped-functions" "^7.18.6" + "@babel/plugin-transform-block-scoping" "^7.18.6" + "@babel/plugin-transform-classes" "^7.18.6" + "@babel/plugin-transform-computed-properties" "^7.18.6" + "@babel/plugin-transform-destructuring" "^7.18.6" + "@babel/plugin-transform-dotall-regex" "^7.18.6" + "@babel/plugin-transform-duplicate-keys" "^7.18.6" + "@babel/plugin-transform-exponentiation-operator" "^7.18.6" + "@babel/plugin-transform-for-of" "^7.18.6" + "@babel/plugin-transform-function-name" "^7.18.6" + "@babel/plugin-transform-literals" "^7.18.6" + "@babel/plugin-transform-member-expression-literals" "^7.18.6" + "@babel/plugin-transform-modules-amd" "^7.18.6" + "@babel/plugin-transform-modules-commonjs" "^7.18.6" + "@babel/plugin-transform-modules-systemjs" "^7.18.6" + "@babel/plugin-transform-modules-umd" "^7.18.6" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.18.6" + "@babel/plugin-transform-new-target" "^7.18.6" + "@babel/plugin-transform-object-super" "^7.18.6" + "@babel/plugin-transform-parameters" "^7.18.6" + "@babel/plugin-transform-property-literals" "^7.18.6" + "@babel/plugin-transform-regenerator" "^7.18.6" + "@babel/plugin-transform-reserved-words" "^7.18.6" + "@babel/plugin-transform-shorthand-properties" "^7.18.6" + "@babel/plugin-transform-spread" "^7.18.6" + "@babel/plugin-transform-sticky-regex" "^7.18.6" + "@babel/plugin-transform-template-literals" "^7.18.6" + "@babel/plugin-transform-typeof-symbol" "^7.18.6" + "@babel/plugin-transform-unicode-escapes" "^7.18.6" + "@babel/plugin-transform-unicode-regex" "^7.18.6" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.18.2" - babel-plugin-polyfill-corejs2 "^0.3.0" - babel-plugin-polyfill-corejs3 "^0.5.0" - babel-plugin-polyfill-regenerator "^0.3.0" + "@babel/types" "^7.18.6" + babel-plugin-polyfill-corejs2 "^0.3.1" + babel-plugin-polyfill-corejs3 "^0.5.2" + babel-plugin-polyfill-regenerator "^0.3.1" core-js-compat "^3.22.1" semver "^6.3.0" @@ -1110,7 +1035,7 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.16.7", "@babel/template@^7.18.6", "@babel/template@^7.3.3": +"@babel/template@^7.18.6", "@babel/template@^7.3.3": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.6.tgz#1283f4993e00b929d6e2d3c72fdc9168a2977a31" integrity sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw== @@ -1119,7 +1044,7 @@ "@babel/parser" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.6", "@babel/traverse@^7.7.2": +"@babel/traverse@^7.13.0", "@babel/traverse@^7.18.6", "@babel/traverse@^7.7.2": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.6.tgz#a228562d2f46e89258efa4ddd0416942e2fd671d" integrity sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw== @@ -1135,7 +1060,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.18.2", "@babel/types@^7.18.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.18.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.6.tgz#5d781dd10a3f0c9f1f931bd19de5eb26ec31acf0" integrity sha512-NdBNzPDwed30fZdDQtVR7ZgaO4UKjuaQFH9VArS+HMnurlOY0JWN+4ROlu/iapMFwjRQU4pOG4StZfDmulEwGA== @@ -2616,7 +2541,7 @@ babel-plugin-macros@^3.0.1: cosmiconfig "^7.0.0" resolve "^1.19.0" -babel-plugin-polyfill-corejs2@^0.3.0, babel-plugin-polyfill-corejs2@^0.3.1: +babel-plugin-polyfill-corejs2@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== @@ -2625,7 +2550,7 @@ babel-plugin-polyfill-corejs2@^0.3.0, babel-plugin-polyfill-corejs2@^0.3.1: "@babel/helper-define-polyfill-provider" "^0.3.1" semver "^6.1.1" -babel-plugin-polyfill-corejs3@^0.5.0, babel-plugin-polyfill-corejs3@^0.5.2: +babel-plugin-polyfill-corejs3@^0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== @@ -2633,7 +2558,7 @@ babel-plugin-polyfill-corejs3@^0.5.0, babel-plugin-polyfill-corejs3@^0.5.2: "@babel/helper-define-polyfill-provider" "^0.3.1" core-js-compat "^3.21.0" -babel-plugin-polyfill-regenerator@^0.3.0, babel-plugin-polyfill-regenerator@^0.3.1: +babel-plugin-polyfill-regenerator@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== @@ -2941,7 +2866,7 @@ browserslist@^4.0.0, browserslist@^4.12.0: escalade "^3.1.1" node-releases "^1.1.71" -browserslist@^4.20.2, browserslist@^4.20.3: +browserslist@^4.20.2: version "4.20.3" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== @@ -3555,7 +3480,7 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js-compat@^3.21.0: +core-js-compat@^3.21.0, core-js-compat@^3.22.1: version "3.23.3" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.23.3.tgz#7d8503185be76bb6d8d592c291a4457a8e440aa9" integrity sha512-WSzUs2h2vvmKsacLHNTdpyOC9k43AEhcGoFlVgCY4L7aw98oSBKtPL6vD0/TqZjRWRQYdDSLkzZIni4Crbbiqw== @@ -3563,14 +3488,6 @@ core-js-compat@^3.21.0: browserslist "^4.21.0" semver "7.0.0" -core-js-compat@^3.22.1: - version "3.22.4" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.22.4.tgz#d700f451e50f1d7672dcad0ac85d910e6691e579" - integrity sha512-dIWcsszDezkFZrfm1cnB4f/J85gyhiCpxbgBdohWCDtSVuAaChTSpPV7ldOQf/Xds2U5xCIJZOK82G4ZPAIswA== - dependencies: - browserslist "^4.20.3" - semver "7.0.0" - core-js-pure@^3.0.0: version "3.6.5" resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" @@ -9517,18 +9434,6 @@ regenerate-unicode-properties@^10.0.1: dependencies: regenerate "^1.4.2" -regenerate-unicode-properties@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" - integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== - dependencies: - regenerate "^1.4.0" - -regenerate@^1.4.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.1.tgz#cad92ad8e6b591773485fbe05a485caf4f457e6f" - integrity sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A== - regenerate@^1.4.2: version "1.4.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" @@ -9581,22 +9486,10 @@ regexpp@^3.1.0: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== -regexpu-core@^4.7.1: - version "4.7.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" - integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.2.0" - regjsgen "^0.5.1" - regjsparser "^0.6.4" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.2.0" - -regexpu-core@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" - integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw== +regexpu-core@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.1.0.tgz#2f8504c3fd0ebe11215783a41541e21c79942c6d" + integrity sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA== dependencies: regenerate "^1.4.2" regenerate-unicode-properties "^10.0.1" @@ -9605,23 +9498,11 @@ regexpu-core@^5.0.1: unicode-match-property-ecmascript "^2.0.0" unicode-match-property-value-ecmascript "^2.0.0" -regjsgen@^0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" - integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== - regjsgen@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== -regjsparser@^0.6.4: - version "0.6.4" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" - integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== - dependencies: - jsesc "~0.5.0" - regjsparser@^0.8.2: version "0.8.4" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" @@ -11139,24 +11020,11 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== - unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== - dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" - unicode-match-property-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" @@ -11165,21 +11033,11 @@ unicode-match-property-ecmascript@^2.0.0: unicode-canonical-property-names-ecmascript "^2.0.0" unicode-property-aliases-ecmascript "^2.0.0" -unicode-match-property-value-ecmascript@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" - integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== - unicode-match-property-value-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== -unicode-property-aliases-ecmascript@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" - integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== - unicode-property-aliases-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" From 5560f077c1fd8a4f70e20bd0a9adc5abdd582b47 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Jun 2022 22:16:09 +0900 Subject: [PATCH 201/652] Bump sidekiq-scheduler from 4.0.1 to 4.0.2 (#18721) Bumps [sidekiq-scheduler](https://github.com/moove-it/sidekiq-scheduler) from 4.0.1 to 4.0.2. - [Release notes](https://github.com/moove-it/sidekiq-scheduler/releases) - [Changelog](https://github.com/sidekiq-scheduler/sidekiq-scheduler/blob/master/CHANGELOG.md) - [Commits](https://github.com/moove-it/sidekiq-scheduler/compare/v4.0.1...v4.0.2) --- updated-dependencies: - dependency-name: sidekiq-scheduler dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 7e022b198..bd1790ca2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -607,7 +607,7 @@ GEM redis (>= 4.2.0) sidekiq-bulk (0.2.0) sidekiq - sidekiq-scheduler (4.0.1) + sidekiq-scheduler (4.0.2) redis (>= 4.2.0) rufus-scheduler (~> 3.2) sidekiq (>= 4) From 3f06ccbd7827a0a7dd474dff5d994201adc8888b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Jun 2022 22:16:24 +0900 Subject: [PATCH 202/652] Bump pg from 1.4.0 to 1.4.1 (#18720) Bumps [pg](https://github.com/ged/ruby-pg) from 1.4.0 to 1.4.1. - [Release notes](https://github.com/ged/ruby-pg/releases) - [Changelog](https://github.com/ged/ruby-pg/blob/master/History.rdoc) - [Commits](https://github.com/ged/ruby-pg/compare/v1.4.0...v1.4.1) --- updated-dependencies: - dependency-name: pg dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index bd1790ca2..ffdd21ac5 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -447,7 +447,7 @@ GEM parslet (2.0.0) pastel (0.8.0) tty-color (~> 0.5) - pg (1.4.0) + pg (1.4.1) pghero (2.8.3) activerecord (>= 5) pkg-config (1.4.7) From 24da5cccfe58f85abbc9667515db2f9aa8062661 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Jun 2022 22:16:41 +0900 Subject: [PATCH 203/652] Bump eslint-plugin-react from 7.30.0 to 7.30.1 (#18732) Bumps [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) from 7.30.0 to 7.30.1. - [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases) - [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md) - [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.30.0...v7.30.1) --- updated-dependencies: - dependency-name: eslint-plugin-react dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index c263538e9..9a7b3df5c 100644 --- a/package.json +++ b/package.json @@ -147,7 +147,7 @@ "eslint-plugin-import": "~2.26.0", "eslint-plugin-jsx-a11y": "~6.5.1", "eslint-plugin-promise": "~6.0.0", - "eslint-plugin-react": "~7.30.0", + "eslint-plugin-react": "~7.30.1", "jest": "^28.1.1", "jest-environment-jsdom": "^28.1.1", "postcss-scss": "^4.0.4", diff --git a/yarn.lock b/yarn.lock index 12b02d95c..4ffc65279 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4528,10 +4528,10 @@ eslint-plugin-promise@~6.0.0: resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz#017652c07c9816413a41e11c30adc42c3d55ff18" integrity sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw== -eslint-plugin-react@~7.30.0: - version "7.30.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.30.0.tgz#8e7b1b2934b8426ac067a0febade1b13bd7064e3" - integrity sha512-RgwH7hjW48BleKsYyHK5vUAvxtE9SMPDKmcPRQgtRCYaZA0XQPt5FSkrU3nhz5ifzMZcA8opwmRJ2cmOO8tr5A== +eslint-plugin-react@~7.30.1: + version "7.30.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.30.1.tgz#2be4ab23ce09b5949c6631413ba64b2810fd3e22" + integrity sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg== dependencies: array-includes "^3.1.5" array.prototype.flatmap "^1.3.0" From df27953f964d4f41c36dd8f99da5d62244e6fdc1 Mon Sep 17 00:00:00 2001 From: Jeong Arm Date: Wed, 29 Jun 2022 02:49:35 +0900 Subject: [PATCH 204/652] Support audio/vnd.wave (#18737) See: https://datatracker.ietf.org/doc/html/rfc2361 And Misskey uses this mime type for wav file. --- app/models/media_attachment.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb index e6a0548eb..a24fb857b 100644 --- a/app/models/media_attachment.rb +++ b/app/models/media_attachment.rb @@ -58,7 +58,7 @@ class MediaAttachment < ApplicationRecord IMAGE_MIME_TYPES = %w(image/jpeg image/png image/gif image/webp).freeze VIDEO_MIME_TYPES = %w(video/webm video/mp4 video/quicktime video/ogg).freeze VIDEO_CONVERTIBLE_MIME_TYPES = %w(video/webm video/quicktime).freeze - AUDIO_MIME_TYPES = %w(audio/wave audio/wav audio/x-wav audio/x-pn-wave audio/ogg audio/vorbis audio/mpeg audio/mp3 audio/webm audio/flac audio/aac audio/m4a audio/x-m4a audio/mp4 audio/3gpp video/x-ms-asf).freeze + AUDIO_MIME_TYPES = %w(audio/wave audio/wav audio/x-wav audio/x-pn-wave audio/vnd.wave audio/ogg audio/vorbis audio/mpeg audio/mp3 audio/webm audio/flac audio/aac audio/m4a audio/x-m4a audio/mp4 audio/3gpp video/x-ms-asf).freeze BLURHASH_OPTIONS = { x_comp: 4, From d14aa65adc1ced8960b2ad2a90532ba5573af990 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 30 Jun 2022 02:30:37 +0900 Subject: [PATCH 205/652] Bump sass from 1.52.3 to 1.53.0 (#18727) Bumps [sass](https://github.com/sass/dart-sass) from 1.52.3 to 1.53.0. - [Release notes](https://github.com/sass/dart-sass/releases) - [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md) - [Commits](https://github.com/sass/dart-sass/compare/1.52.3...1.53.0) --- updated-dependencies: - dependency-name: sass dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 9a7b3df5c..597d3f098 100644 --- a/package.json +++ b/package.json @@ -119,7 +119,7 @@ "requestidlecallback": "^0.3.0", "reselect": "^4.1.6", "rimraf": "^3.0.2", - "sass": "^1.52.3", + "sass": "^1.53.0", "sass-loader": "^10.2.0", "stacktrace-js": "^2.0.2", "stringz": "^2.1.0", diff --git a/yarn.lock b/yarn.lock index 4ffc65279..e9a37b265 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9733,10 +9733,10 @@ sass-loader@^10.2.0: schema-utils "^3.0.0" semver "^7.3.2" -sass@^1.52.3: - version "1.52.3" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.52.3.tgz#b7cc7ffea2341ccc9a0c4fd372bf1b3f9be1b6cb" - integrity sha512-LNNPJ9lafx+j1ArtA7GyEJm9eawXN8KlA1+5dF6IZyoONg1Tyo/g+muOsENWJH/2Q1FHbbV4UwliU0cXMa/VIA== +sass@^1.53.0: + version "1.53.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.53.0.tgz#eab73a7baac045cc57ddc1d1ff501ad2659952eb" + integrity sha512-zb/oMirbKhUgRQ0/GFz8TSAwRq2IlR29vOUJZOx0l8sV+CkHUfHa4u5nqrG+1VceZp7Jfj59SVW9ogdhTvJDcQ== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" From 128d611beb107f6612164fb0ab54904507922e13 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 30 Jun 2022 02:31:10 +0900 Subject: [PATCH 206/652] Bump fabrication from 2.28.0 to 2.29.0 (#18726) Bumps [fabrication](https://gitlab.com/fabrication-gem/fabrication) from 2.28.0 to 2.29.0. - [Release notes](https://gitlab.com/fabrication-gem/fabrication/tags) - [Changelog](https://gitlab.com/fabrication-gem/fabrication/blob/master/Changelog.markdown) - [Commits](https://gitlab.com/fabrication-gem/fabrication/compare/2.28.0...2.29.0) --- updated-dependencies: - dependency-name: fabrication dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 9a7635b06..05b238b65 100644 --- a/Gemfile +++ b/Gemfile @@ -99,7 +99,7 @@ gem 'json-ld-preloaded', '~> 3.2' gem 'rdf-normalize', '~> 0.5' group :development, :test do - gem 'fabrication', '~> 2.28' + gem 'fabrication', '~> 2.29' gem 'fuubar', '~> 2.5' gem 'i18n-tasks', '~> 1.0', require: false gem 'pry-byebug', '~> 3.9' diff --git a/Gemfile.lock b/Gemfile.lock index ffdd21ac5..b020263a7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -219,7 +219,7 @@ GEM et-orbi (1.2.7) tzinfo excon (0.76.0) - fabrication (2.28.0) + fabrication (2.29.0) faker (2.21.0) i18n (>= 1.8.11, < 2) faraday (1.9.3) @@ -758,7 +758,7 @@ DEPENDENCIES doorkeeper (~> 5.5) dotenv-rails (~> 2.7) ed25519 (~> 1.3) - fabrication (~> 2.28) + fabrication (~> 2.29) faker (~> 2.21) fast_blank (~> 1.0) fastimage From fb552dde2c733c372c0b235397e4106f2e4480bb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 30 Jun 2022 02:31:39 +0900 Subject: [PATCH 207/652] Bump eslint-plugin-jsx-a11y from 6.5.1 to 6.6.0 (#18723) Bumps [eslint-plugin-jsx-a11y](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y) from 6.5.1 to 6.6.0. - [Release notes](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/releases) - [Changelog](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/CHANGELOG.md) - [Commits](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/compare/v6.5.1...v6.6.0) --- updated-dependencies: - dependency-name: eslint-plugin-jsx-a11y dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 51 ++++++++++++++++++++++++++------------------------- 2 files changed, 27 insertions(+), 26 deletions(-) diff --git a/package.json b/package.json index 597d3f098..b6343395b 100644 --- a/package.json +++ b/package.json @@ -145,7 +145,7 @@ "babel-jest": "^28.1.1", "eslint": "^7.32.0", "eslint-plugin-import": "~2.26.0", - "eslint-plugin-jsx-a11y": "~6.5.1", + "eslint-plugin-jsx-a11y": "~6.6.0", "eslint-plugin-promise": "~6.0.0", "eslint-plugin-react": "~7.30.1", "jest": "^28.1.1", diff --git a/yarn.lock b/yarn.lock index e9a37b265..acd6fc370 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1028,7 +1028,7 @@ dependencies: regenerator-runtime "^0.12.0" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.6", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.6", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.6.tgz#6a1ef59f838debd670421f8c7f2cbb8da9751580" integrity sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ== @@ -2308,7 +2308,7 @@ array-flatten@^2.1.0: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== -array-includes@^3.1.3, array-includes@^3.1.4, array-includes@^3.1.5: +array-includes@^3.1.4, array-includes@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== @@ -2443,10 +2443,10 @@ autoprefixer@^9.8.8: postcss "^7.0.32" postcss-value-parser "^4.1.0" -axe-core@^4.3.5: - version "4.3.5" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.3.5.tgz#78d6911ba317a8262bfee292aeafcc1e04b49cc5" - integrity sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA== +axe-core@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.2.tgz#dcf7fb6dea866166c3eab33d68208afe4d5f670c" + integrity sha512-LVAaGp/wkkgYJcjmHsoKx4juT1aQvJyPcW09MLCjVTh3V2cc6PnyempiLMNH5iMdfIX/zdbjUx2KDjMLCTdPeA== axios@^0.27.2: version "0.27.2" @@ -3851,10 +3851,10 @@ d@1, d@^1.0.1: es5-ext "^0.10.50" type "^1.0.1" -damerau-levenshtein@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz#64368003512a1a6992593741a09a9d31a836f55d" - integrity sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw== +damerau-levenshtein@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== data-urls@^3.0.1, data-urls@^3.0.2: version "3.0.2" @@ -4505,23 +4505,24 @@ eslint-plugin-import@~2.26.0: resolve "^1.22.0" tsconfig-paths "^3.14.1" -eslint-plugin-jsx-a11y@~6.5.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz#cdbf2df901040ca140b6ec14715c988889c2a6d8" - integrity sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g== +eslint-plugin-jsx-a11y@~6.6.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.0.tgz#2c5ac12e013eb98337b9aa261c3b355275cc6415" + integrity sha512-kTeLuIzpNhXL2CwLlc8AHI0aFRwWHcg483yepO9VQiHzM9bZwJdzTkzBszbuPrbgGmq2rlX/FaT2fJQsjUSHsw== dependencies: - "@babel/runtime" "^7.16.3" + "@babel/runtime" "^7.18.3" aria-query "^4.2.2" - array-includes "^3.1.4" + array-includes "^3.1.5" ast-types-flow "^0.0.7" - axe-core "^4.3.5" + axe-core "^4.4.2" axobject-query "^2.2.0" - damerau-levenshtein "^1.0.7" + damerau-levenshtein "^1.0.8" emoji-regex "^9.2.2" has "^1.0.3" - jsx-ast-utils "^3.2.1" + jsx-ast-utils "^3.3.1" language-tags "^1.0.5" - minimatch "^3.0.4" + minimatch "^3.1.2" + semver "^6.3.0" eslint-plugin-promise@~6.0.0: version "6.0.0" @@ -6935,12 +6936,12 @@ jsonify@~0.0.0: resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b" - integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA== +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.1.tgz#a3e0f1cb7e230954eab4dcbce9f6288a78f8ba44" + integrity sha512-pxrjmNpeRw5wwVeWyEAk7QJu2GnBO3uzPFmHCKJJFPKK2Cy0cWL23krGtLdnMmbIi6/FjlrQpPyfQI19ByPOhQ== dependencies: - array-includes "^3.1.3" + array-includes "^3.1.5" object.assign "^4.1.2" keycode@^2.1.7: From 3c24f19afedc2169a7a343c5af4a8f892d863f0b Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 30 Jun 2022 09:51:55 +0200 Subject: [PATCH 208/652] Fix reblogged statuses being erroneously shown as filtered (#18744) --- app/javascript/mastodon/components/status.js | 2 +- app/javascript/mastodon/selectors/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js index 4ca392824..238a0d734 100644 --- a/app/javascript/mastodon/components/status.js +++ b/app/javascript/mastodon/components/status.js @@ -338,7 +338,7 @@ class Status extends ImmutablePureComponent { ); } - const matchedFilters = status.get('filtered') || status.getIn(['reblog', 'filtered']); + const matchedFilters = status.get('matched_filters'); if (this.state.forceFilter === undefined ? matchedFilters : this.state.forceFilter) { const minHandlers = this.props.muted ? {} : { moveUp: this.handleHotkeyMoveUp, diff --git a/app/javascript/mastodon/selectors/index.js b/app/javascript/mastodon/selectors/index.js index 6aeb8b7bd..bf1db4bb4 100644 --- a/app/javascript/mastodon/selectors/index.js +++ b/app/javascript/mastodon/selectors/index.js @@ -106,7 +106,7 @@ export const makeGetStatus = () => { return statusBase.withMutations(map => { map.set('reblog', statusReblog); map.set('account', accountBase); - map.set('filtered', filtered); + map.set('matched_filters', filtered); }); }, ); From a233a9bfb5f384e89bdaef6e519fa20db2a99ae5 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 30 Jun 2022 10:39:29 +0200 Subject: [PATCH 209/652] Remove dead code in WebUI filtering code (#18745) --- app/javascript/mastodon/selectors/index.js | 27 +--------------------- 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/app/javascript/mastodon/selectors/index.js b/app/javascript/mastodon/selectors/index.js index bf1db4bb4..187e3306d 100644 --- a/app/javascript/mastodon/selectors/index.js +++ b/app/javascript/mastodon/selectors/index.js @@ -1,5 +1,5 @@ import { createSelector } from 'reselect'; -import { List as ImmutableList, Map as ImmutableMap, is } from 'immutable'; +import { List as ImmutableList, Map as ImmutableMap } from 'immutable'; import { me } from '../initial_state'; const getAccountBase = (state, id) => state.getIn(['accounts', id], null); @@ -37,31 +37,6 @@ const toServerSideType = columnType => { } }; -const escapeRegExp = string => - string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string - -const regexFromKeywords = keywords => { - if (keywords.size === 0) { - return null; - } - - return new RegExp(keywords.map(keyword_filter => { - let expr = escapeRegExp(keyword_filter.get('keyword')); - - if (keyword_filter.get('whole_word')) { - if (/^[\w]/.test(expr)) { - expr = `\\b${expr}`; - } - - if (/[\w]$/.test(expr)) { - expr = `${expr}\\b`; - } - } - - return expr; - }).join('|'), 'i'); -}; - const getFilters = (state, { contextType }) => { if (!contextType) return null; From 1b4054256f9d3302b44f71627a23bb0902578867 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 4 Jul 2022 11:08:30 +0200 Subject: [PATCH 210/652] Fix crash when a remote Flag activity mentions a private post (#18760) * Add tests * Fix crash when a remote Flag activity mentions a private post --- app/services/report_service.rb | 11 ++- spec/lib/activitypub/activity/flag_spec.rb | 88 ++++++++++++++++++++-- spec/services/report_service_spec.rb | 25 ++++++ 3 files changed, 115 insertions(+), 9 deletions(-) diff --git a/app/services/report_service.rb b/app/services/report_service.rb index 70212a6a7..bd67ff8d3 100644 --- a/app/services/report_service.rb +++ b/app/services/report_service.rb @@ -57,7 +57,16 @@ class ReportService < BaseService end def reported_status_ids - AccountStatusesFilter.new(@target_account, @source_account).results.with_discarded.find(Array(@status_ids)).pluck(:id) + return AccountStatusesFilter.new(@target_account, @source_account).results.with_discarded.find(Array(@status_ids)).pluck(:id) if @source_account.local? + + # If the account making reports is remote, it is likely anonymized so we have to relax the requirements for attaching statuses. + domain = @source_account.domain.to_s.downcase + has_followers = @target_account.followers.where(Account.arel_table[:domain].lower.eq(domain)).exists? + visibility = has_followers ? %i(public unlisted private) : %i(public unlisted) + scope = @target_account.statuses.with_discarded + scope.merge!(scope.where(visibility: visibility).or(scope.where('EXISTS (SELECT 1 FROM mentions m JOIN accounts a ON m.account_id = a.id WHERE lower(a.domain) = ?)', domain))) + # Allow missing posts to not drop reports that include e.g. a deleted post + scope.where(id: Array(@status_ids)).pluck(:id) end def payload diff --git a/spec/lib/activitypub/activity/flag_spec.rb b/spec/lib/activitypub/activity/flag_spec.rb index ec7359f2f..2f2d13876 100644 --- a/spec/lib/activitypub/activity/flag_spec.rb +++ b/spec/lib/activitypub/activity/flag_spec.rb @@ -1,7 +1,7 @@ require 'rails_helper' RSpec.describe ActivityPub::Activity::Flag do - let(:sender) { Fabricate(:account, domain: 'example.com', uri: 'http://example.com/account') } + let(:sender) { Fabricate(:account, username: 'example.com', domain: 'example.com', uri: 'http://example.com/actor') } let(:flagged) { Fabricate(:account) } let(:status) { Fabricate(:status, account: flagged, uri: 'foobar') } let(:flag_id) { nil } @@ -23,16 +23,88 @@ RSpec.describe ActivityPub::Activity::Flag do describe '#perform' do subject { described_class.new(json, sender) } - before do - subject.perform + context 'when the reported status is public' do + before do + subject.perform + end + + it 'creates a report' do + report = Report.find_by(account: sender, target_account: flagged) + + expect(report).to_not be_nil + expect(report.comment).to eq 'Boo!!' + expect(report.status_ids).to eq [status.id] + end end - it 'creates a report' do - report = Report.find_by(account: sender, target_account: flagged) + context 'when the reported status is private and should not be visible to the remote server' do + let(:status) { Fabricate(:status, account: flagged, uri: 'foobar', visibility: :private) } - expect(report).to_not be_nil - expect(report.comment).to eq 'Boo!!' - expect(report.status_ids).to eq [status.id] + before do + subject.perform + end + + it 'creates a report with no attached status' do + report = Report.find_by(account: sender, target_account: flagged) + + expect(report).to_not be_nil + expect(report.comment).to eq 'Boo!!' + expect(report.status_ids).to eq [] + end + end + + context 'when the reported status is private and the author has a follower on the remote instance' do + let(:status) { Fabricate(:status, account: flagged, uri: 'foobar', visibility: :private) } + let(:follower) { Fabricate(:account, domain: 'example.com', uri: 'http://example.com/users/account') } + + before do + follower.follow!(flagged) + subject.perform + end + + it 'creates a report with the attached status' do + report = Report.find_by(account: sender, target_account: flagged) + + expect(report).to_not be_nil + expect(report.comment).to eq 'Boo!!' + expect(report.status_ids).to eq [status.id] + end + end + + context 'when the reported status is private and the author mentions someone else on the remote instance' do + let(:status) { Fabricate(:status, account: flagged, uri: 'foobar', visibility: :private) } + let(:mentioned) { Fabricate(:account, domain: 'example.com', uri: 'http://example.com/users/account') } + + before do + status.mentions.create(account: mentioned) + subject.perform + end + + it 'creates a report with the attached status' do + report = Report.find_by(account: sender, target_account: flagged) + + expect(report).to_not be_nil + expect(report.comment).to eq 'Boo!!' + expect(report.status_ids).to eq [status.id] + end + end + + context 'when the reported status is private and the author mentions someone else on the local instance' do + let(:status) { Fabricate(:status, account: flagged, uri: 'foobar', visibility: :private) } + let(:mentioned) { Fabricate(:account) } + + before do + status.mentions.create(account: mentioned) + subject.perform + end + + it 'creates a report with no attached status' do + report = Report.find_by(account: sender, target_account: flagged) + + expect(report).to_not be_nil + expect(report.comment).to eq 'Boo!!' + expect(report.status_ids).to eq [] + end end end diff --git a/spec/services/report_service_spec.rb b/spec/services/report_service_spec.rb index 7e6a113e0..ea68b3344 100644 --- a/spec/services/report_service_spec.rb +++ b/spec/services/report_service_spec.rb @@ -28,6 +28,31 @@ RSpec.describe ReportService, type: :service do end end + context 'when the reported status is a DM' do + let(:target_account) { Fabricate(:account) } + let(:status) { Fabricate(:status, account: target_account, visibility: :direct) } + + subject do + -> { described_class.new.call(source_account, target_account, status_ids: [status.id]) } + end + + context 'when it is addressed to the reporter' do + before do + status.mentions.create(account: source_account) + end + + it 'creates a report' do + is_expected.to change { target_account.targeted_reports.count }.from(0).to(1) + end + end + + context 'when it is not addressed to the reporter' do + it 'errors out' do + is_expected.to raise_error + end + end + end + context 'when other reports already exist for the same target' do let!(:target_account) { Fabricate(:account) } let!(:other_report) { Fabricate(:report, target_account: target_account) } From 44b2ee3485ba0845e5910cefcb4b1e2f84f34470 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 5 Jul 2022 02:41:40 +0200 Subject: [PATCH 211/652] Add customizable user roles (#18641) * Add customizable user roles * Various fixes and improvements * Add migration for old settings and fix tootctl role management --- .rubocop.yml | 4 +- .../admin/account_actions_controller.rb | 4 + app/controllers/admin/accounts_controller.rb | 2 + .../admin/action_logs_controller.rb | 5 +- app/controllers/admin/base_controller.rb | 2 +- .../admin/custom_emojis_controller.rb | 2 + app/controllers/admin/dashboard_controller.rb | 4 +- .../admin/email_domain_blocks_controller.rb | 2 + .../follow_recommendations_controller.rb | 2 + app/controllers/admin/ip_blocks_controller.rb | 2 + .../admin/relationships_controller.rb | 2 +- app/controllers/admin/roles_controller.rb | 65 ++++- app/controllers/admin/statuses_controller.rb | 2 + .../admin/subscriptions_controller.rb | 20 -- .../preview_card_providers_controller.rb | 4 +- .../admin/trends/links_controller.rb | 4 +- .../admin/trends/statuses_controller.rb | 4 +- .../admin/trends/tags_controller.rb | 4 +- .../admin/users/roles_controller.rb | 33 +++ .../two_factor_authentications_controller.rb | 2 +- .../v1/admin/account_actions_controller.rb | 7 +- .../api/v1/admin/accounts_controller.rb | 6 +- .../api/v1/admin/dimensions_controller.rb | 6 +- .../api/v1/admin/domain_allows_controller.rb | 2 +- .../api/v1/admin/domain_blocks_controller.rb | 2 +- .../api/v1/admin/measures_controller.rb | 6 +- .../api/v1/admin/reports_controller.rb | 2 +- .../api/v1/admin/retention_controller.rb | 6 +- .../api/v1/admin/trends/links_controller.rb | 20 +- .../v1/admin/trends/statuses_controller.rb | 20 +- .../api/v1/admin/trends/tags_controller.rb | 20 +- .../api/v1/trends/links_controller.rb | 10 +- .../api/v1/trends/statuses_controller.rb | 10 +- .../api/v1/trends/tags_controller.rb | 12 +- .../api/v2/admin/accounts_controller.rb | 13 +- app/controllers/application_controller.rb | 8 - app/controllers/custom_css_controller.rb | 2 +- app/helpers/accounts_helper.rb | 14 +- .../mastodon/components/status_action_bar.js | 6 +- .../mastodon/containers/mastodon.js | 1 + .../features/account/components/header.js | 9 +- .../components/column_settings.js | 10 +- .../features/status/components/action_bar.js | 6 +- .../features/ui/components/link_footer.js | 9 +- app/javascript/mastodon/initial_state.js | 2 - app/javascript/mastodon/permissions.js | 3 + app/javascript/mastodon/reducers/meta.js | 3 +- app/javascript/styles/mastodon/admin.scss | 15 ++ app/javascript/styles/mastodon/forms.scss | 4 + app/lib/admin/system_check.rb | 6 +- app/lib/admin/system_check/base_check.rb | 10 + .../system_check/database_schema_check.rb | 4 + .../admin/system_check/elasticsearch_check.rb | 8 +- app/lib/admin/system_check/rules_check.rb | 4 + .../system_check/sidekiq_process_check.rb | 4 + app/models/account.rb | 9 +- app/models/account_filter.rb | 27 +- app/models/concerns/user_roles.rb | 68 ----- app/models/form/admin_settings.rb | 4 - app/models/trends.rb | 2 +- app/models/user.rb | 38 ++- app/models/user_role.rb | 179 +++++++++++++ .../account_moderation_note_policy.rb | 4 +- app/policies/account_policy.rb | 40 ++- app/policies/account_warning_policy.rb | 2 +- app/policies/account_warning_preset_policy.rb | 8 +- app/policies/announcement_policy.rb | 8 +- app/policies/appeal_policy.rb | 8 +- app/policies/application_policy.rb | 6 +- app/policies/audit_log_policy.rb | 7 + app/policies/custom_emoji_policy.rb | 14 +- app/policies/dashboard_policy.rb | 7 + app/policies/delivery_policy.rb | 6 +- app/policies/domain_allow_policy.rb | 8 +- app/policies/domain_block_policy.rb | 10 +- app/policies/email_domain_block_policy.rb | 6 +- app/policies/follow_recommendation_policy.rb | 6 +- app/policies/instance_policy.rb | 6 +- app/policies/invite_policy.rb | 12 +- app/policies/ip_block_policy.rb | 6 +- app/policies/preview_card_policy.rb | 4 +- app/policies/preview_card_provider_policy.rb | 4 +- app/policies/relay_policy.rb | 2 +- app/policies/report_note_policy.rb | 4 +- app/policies/report_policy.rb | 6 +- app/policies/rule_policy.rb | 8 +- app/policies/settings_policy.rb | 6 +- app/policies/status_policy.rb | 8 +- app/policies/tag_policy.rb | 8 +- app/policies/user_policy.rb | 38 +-- app/policies/user_role_policy.rb | 19 ++ app/policies/webhook_policy.rb | 16 +- app/presenters/initial_state_presenter.rb | 4 + app/serializers/initial_state_serializer.rb | 3 +- .../rest/credential_account_serializer.rb | 6 + app/serializers/rest/instance_serializer.rb | 2 +- app/serializers/rest/role_serializer.rb | 13 + app/services/account_search_service.rb | 4 +- app/services/appeal_service.rb | 2 +- app/services/bootstrap_timeline_service.rb | 2 +- app/services/notify_service.rb | 2 +- app/services/report_service.rb | 2 +- app/views/admin/accounts/index.html.haml | 55 ++-- app/views/admin/accounts/show.html.haml | 9 +- app/views/admin/action_logs/index.html.haml | 2 +- app/views/admin/instances/show.html.haml | 49 ++-- app/views/admin/roles/_form.html.haml | 37 +++ app/views/admin/roles/_role.html.haml | 18 ++ app/views/admin/roles/edit.html.haml | 8 + app/views/admin/roles/index.html.haml | 17 ++ app/views/admin/roles/new.html.haml | 4 + app/views/admin/settings/edit.html.haml | 6 - app/views/admin/tags/show.html.haml | 77 +++--- app/views/admin/users/roles/show.html.haml | 9 + app/views/custom_css/show.css.erb | 10 + app/views/layouts/application.html.haml | 4 +- .../preferences/notifications/show.html.haml | 10 +- config/application.rb | 1 + config/locales/activerecord.en.yml | 9 + config/locales/en.yml | 85 ++++-- config/locales/simple_form.en.yml | 15 ++ config/navigation.rb | 81 +++--- config/roles.yml | 35 +++ config/routes.rb | 13 +- .../20220611210335_create_user_roles.rb | 13 + .../20220611212541_add_role_id_to_users.rb | 8 + .../20220617202502_migrate_roles.rb | 26 ++ ...04024901_migrate_settings_to_user_roles.rb | 41 +++ db/schema.rb | 15 +- db/seeds.rb | 12 +- db/seeds/01_web_app.rb | 1 + db/seeds/02_instance_actor.rb | 1 + db/seeds/03_roles.rb | 9 + db/seeds/04_admin.rb | 8 + lib/mastodon/accounts_cli.rb | 41 ++- lib/simple_navigation/item_extensions.rb | 15 ++ ...ccount_moderation_notes_controller_spec.rb | 2 +- .../admin/accounts_controller_spec.rb | 52 ++-- .../admin/action_logs_controller_spec.rb | 2 +- .../controllers/admin/base_controller_spec.rb | 7 +- .../admin/change_email_controller_spec.rb | 2 +- .../admin/confirmations_controller_spec.rb | 2 +- .../admin/custom_emojis_controller_spec.rb | 2 +- .../admin/dashboard_controller_spec.rb | 2 +- .../admin/disputes/appeals_controller_spec.rb | 4 +- .../admin/domain_blocks_controller_spec.rb | 2 +- .../email_domain_blocks_controller_spec.rb | 2 +- .../admin/instances_controller_spec.rb | 8 +- .../admin/invites_controller_spec.rb | 2 +- .../admin/report_notes_controller_spec.rb | 2 +- .../admin/reports_controller_spec.rb | 2 +- .../admin/resets_controller_spec.rb | 2 +- .../admin/roles_controller_spec.rb | 244 +++++++++++++++++- .../admin/settings_controller_spec.rb | 2 +- .../admin/statuses_controller_spec.rb | 2 +- .../controllers/admin/tags_controller_spec.rb | 2 +- .../admin/users/roles_controller.rb | 81 ++++++ ..._factor_authentications_controller_spec.rb | 5 +- .../admin/account_actions_controller_spec.rb | 6 +- .../api/v1/admin/accounts_controller_spec.rb | 20 +- .../v1/admin/domain_allows_controller_spec.rb | 20 +- .../v1/admin/domain_blocks_controller_spec.rb | 20 +- .../api/v1/admin/reports_controller_spec.rb | 16 +- .../api/v1/reports_controller_spec.rb | 2 +- .../api/v2/admin/accounts_controller_spec.rb | 6 +- .../application_controller_spec.rb | 64 ----- .../disputes/appeals_controller_spec.rb | 2 +- spec/controllers/invites_controller_spec.rb | 40 +-- spec/fabricators/user_role_fabricator.rb | 5 + spec/models/account_spec.rb | 14 +- spec/models/admin/account_action_spec.rb | 2 +- spec/models/user_role_spec.rb | 189 ++++++++++++++ spec/models/user_spec.rb | 159 +----------- .../account_moderation_note_policy_spec.rb | 4 +- spec/policies/account_policy_spec.rb | 8 +- spec/policies/custom_emoji_policy_spec.rb | 2 +- spec/policies/domain_block_policy_spec.rb | 2 +- .../email_domain_block_policy_spec.rb | 2 +- spec/policies/instance_policy_spec.rb | 2 +- spec/policies/invite_policy_spec.rb | 54 ++-- spec/policies/relay_policy_spec.rb | 2 +- spec/policies/report_note_policy_spec.rb | 5 +- spec/policies/report_policy_spec.rb | 2 +- spec/policies/settings_policy_spec.rb | 2 +- spec/policies/status_policy_spec.rb | 2 +- spec/policies/tag_policy_spec.rb | 2 +- spec/policies/user_policy_spec.rb | 55 +--- 187 files changed, 1945 insertions(+), 1032 deletions(-) delete mode 100644 app/controllers/admin/subscriptions_controller.rb create mode 100644 app/controllers/admin/users/roles_controller.rb rename app/controllers/admin/{ => users}/two_factor_authentications_controller.rb (86%) create mode 100644 app/javascript/mastodon/permissions.js delete mode 100644 app/models/concerns/user_roles.rb create mode 100644 app/models/user_role.rb create mode 100644 app/policies/audit_log_policy.rb create mode 100644 app/policies/dashboard_policy.rb create mode 100644 app/policies/user_role_policy.rb create mode 100644 app/serializers/rest/role_serializer.rb create mode 100644 app/views/admin/roles/_form.html.haml create mode 100644 app/views/admin/roles/_role.html.haml create mode 100644 app/views/admin/roles/edit.html.haml create mode 100644 app/views/admin/roles/index.html.haml create mode 100644 app/views/admin/roles/new.html.haml create mode 100644 app/views/admin/users/roles/show.html.haml create mode 100644 app/views/custom_css/show.css.erb create mode 100644 config/roles.yml create mode 100644 db/migrate/20220611210335_create_user_roles.rb create mode 100644 db/migrate/20220611212541_add_role_id_to_users.rb create mode 100644 db/post_migrate/20220617202502_migrate_roles.rb create mode 100644 db/post_migrate/20220704024901_migrate_settings_to_user_roles.rb create mode 100644 db/seeds/01_web_app.rb create mode 100644 db/seeds/02_instance_actor.rb create mode 100644 db/seeds/03_roles.rb create mode 100644 db/seeds/04_admin.rb create mode 100644 lib/simple_navigation/item_extensions.rb create mode 100644 spec/controllers/admin/users/roles_controller.rb rename spec/controllers/admin/{ => users}/two_factor_authentications_controller_spec.rb (90%) create mode 100644 spec/fabricators/user_role_fabricator.rb create mode 100644 spec/models/user_role_spec.rb diff --git a/.rubocop.yml b/.rubocop.yml index 9e3ff21f2..8dc2d1c47 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -67,7 +67,7 @@ Lint/UselessAccessModifier: - class_methods Metrics/AbcSize: - Max: 100 + Max: 115 Exclude: - 'lib/mastodon/*_cli.rb' @@ -84,7 +84,7 @@ Metrics/BlockNesting: Metrics/ClassLength: CountComments: false - Max: 400 + Max: 500 Exclude: - 'lib/mastodon/*_cli.rb' diff --git a/app/controllers/admin/account_actions_controller.rb b/app/controllers/admin/account_actions_controller.rb index ea56fa0ac..3f2e28b6a 100644 --- a/app/controllers/admin/account_actions_controller.rb +++ b/app/controllers/admin/account_actions_controller.rb @@ -5,11 +5,15 @@ module Admin before_action :set_account def new + authorize @account, :show? + @account_action = Admin::AccountAction.new(type: params[:type], report_id: params[:report_id], send_email_notification: true, include_statuses: true) @warning_presets = AccountWarningPreset.all end def create + authorize @account, :show? + account_action = Admin::AccountAction.new(resource_params) account_action.target_account = @account account_action.current_account = current_account diff --git a/app/controllers/admin/accounts_controller.rb b/app/controllers/admin/accounts_controller.rb index e0ae71b9f..46c9aba91 100644 --- a/app/controllers/admin/accounts_controller.rb +++ b/app/controllers/admin/accounts_controller.rb @@ -14,6 +14,8 @@ module Admin end def batch + authorize :account, :index? + @form = Form::AccountBatch.new(form_account_batch_params.merge(current_account: current_account, action: action_from_button)) @form.save rescue ActionController::ParameterMissing diff --git a/app/controllers/admin/action_logs_controller.rb b/app/controllers/admin/action_logs_controller.rb index 2d77620df..42edec15a 100644 --- a/app/controllers/admin/action_logs_controller.rb +++ b/app/controllers/admin/action_logs_controller.rb @@ -4,7 +4,10 @@ module Admin class ActionLogsController < BaseController before_action :set_action_logs - def index; end + def index + authorize :audit_log, :index? + @auditable_accounts = Account.where(id: Admin::ActionLog.reorder(nil).select('distinct account_id')).select(:id, :username) + end private diff --git a/app/controllers/admin/base_controller.rb b/app/controllers/admin/base_controller.rb index 7b81a2b01..5b7a7ec11 100644 --- a/app/controllers/admin/base_controller.rb +++ b/app/controllers/admin/base_controller.rb @@ -7,8 +7,8 @@ module Admin layout 'admin' - before_action :require_staff! before_action :set_body_classes + after_action :verify_authorized private diff --git a/app/controllers/admin/custom_emojis_controller.rb b/app/controllers/admin/custom_emojis_controller.rb index 71efb543e..2c33e9f8f 100644 --- a/app/controllers/admin/custom_emojis_controller.rb +++ b/app/controllers/admin/custom_emojis_controller.rb @@ -29,6 +29,8 @@ module Admin end def batch + authorize :custom_emoji, :index? + @form = Form::CustomEmojiBatch.new(form_custom_emoji_batch_params.merge(current_account: current_account, action: action_from_button)) @form.save rescue ActionController::ParameterMissing diff --git a/app/controllers/admin/dashboard_controller.rb b/app/controllers/admin/dashboard_controller.rb index da9c6dd16..924b623ad 100644 --- a/app/controllers/admin/dashboard_controller.rb +++ b/app/controllers/admin/dashboard_controller.rb @@ -5,7 +5,9 @@ module Admin include Redisable def index - @system_checks = Admin::SystemCheck.perform + authorize :dashboard, :index? + + @system_checks = Admin::SystemCheck.perform(current_user) @time_period = (29.days.ago.to_date...Time.now.utc.to_date) @pending_users_count = User.pending.count @pending_reports_count = Report.unresolved.count diff --git a/app/controllers/admin/email_domain_blocks_controller.rb b/app/controllers/admin/email_domain_blocks_controller.rb index a4bbbba5b..593457b94 100644 --- a/app/controllers/admin/email_domain_blocks_controller.rb +++ b/app/controllers/admin/email_domain_blocks_controller.rb @@ -12,6 +12,8 @@ module Admin end def batch + authorize :email_domain_block, :index? + @form = Form::EmailDomainBlockBatch.new(form_email_domain_block_batch_params.merge(current_account: current_account, action: action_from_button)) @form.save rescue ActionController::ParameterMissing diff --git a/app/controllers/admin/follow_recommendations_controller.rb b/app/controllers/admin/follow_recommendations_controller.rb index e3eac62b3..841e3cc7f 100644 --- a/app/controllers/admin/follow_recommendations_controller.rb +++ b/app/controllers/admin/follow_recommendations_controller.rb @@ -12,6 +12,8 @@ module Admin end def update + authorize :follow_recommendation, :show? + @form = Form::AccountBatch.new(form_account_batch_params.merge(current_account: current_account, action: action_from_button)) @form.save rescue ActionController::ParameterMissing diff --git a/app/controllers/admin/ip_blocks_controller.rb b/app/controllers/admin/ip_blocks_controller.rb index 92b8b0d2b..a87520f4e 100644 --- a/app/controllers/admin/ip_blocks_controller.rb +++ b/app/controllers/admin/ip_blocks_controller.rb @@ -29,6 +29,8 @@ module Admin end def batch + authorize :ip_block, :index? + @form = Form::IpBlockBatch.new(form_ip_block_batch_params.merge(current_account: current_account, action: action_from_button)) @form.save rescue ActionController::ParameterMissing diff --git a/app/controllers/admin/relationships_controller.rb b/app/controllers/admin/relationships_controller.rb index 085ded21c..67645f054 100644 --- a/app/controllers/admin/relationships_controller.rb +++ b/app/controllers/admin/relationships_controller.rb @@ -7,7 +7,7 @@ module Admin PER_PAGE = 40 def index - authorize :account, :index? + authorize @account, :show? @accounts = RelationshipFilter.new(@account, filter_params).results.includes(:account_stat, user: [:ips, :invite_request]).page(params[:page]).per(PER_PAGE) @form = Form::AccountBatch.new diff --git a/app/controllers/admin/roles_controller.rb b/app/controllers/admin/roles_controller.rb index 13f56e9be..3e502ccc4 100644 --- a/app/controllers/admin/roles_controller.rb +++ b/app/controllers/admin/roles_controller.rb @@ -2,20 +2,63 @@ module Admin class RolesController < BaseController - before_action :set_user + before_action :set_role, except: [:index, :new, :create] - def promote - authorize @user, :promote? - @user.promote! - log_action :promote, @user - redirect_to admin_account_path(@user.account_id) + def index + authorize :user_role, :index? + + @roles = UserRole.order(position: :desc).page(params[:page]) end - def demote - authorize @user, :demote? - @user.demote! - log_action :demote, @user - redirect_to admin_account_path(@user.account_id) + def new + authorize :user_role, :create? + + @role = UserRole.new + end + + def create + authorize :user_role, :create? + + @role = UserRole.new(resource_params) + @role.current_account = current_account + + if @role.save + redirect_to admin_roles_path + else + render :new + end + end + + def edit + authorize @role, :update? + end + + def update + authorize @role, :update? + + @role.current_account = current_account + + if @role.update(resource_params) + redirect_to admin_roles_path + else + render :edit + end + end + + def destroy + authorize @role, :destroy? + @role.destroy! + redirect_to admin_roles_path + end + + private + + def set_role + @role = UserRole.find(params[:id]) + end + + def resource_params + params.require(:user_role).permit(:name, :color, :highlighted, :position, permissions_as_keys: []) end end end diff --git a/app/controllers/admin/statuses_controller.rb b/app/controllers/admin/statuses_controller.rb index 817c0caa9..084921ceb 100644 --- a/app/controllers/admin/statuses_controller.rb +++ b/app/controllers/admin/statuses_controller.rb @@ -14,6 +14,8 @@ module Admin end def batch + authorize :status, :index? + @status_batch_action = Admin::StatusBatchAction.new(admin_status_batch_action_params.merge(current_account: current_account, report_id: params[:report_id], type: action_from_button)) @status_batch_action.save! rescue ActionController::ParameterMissing diff --git a/app/controllers/admin/subscriptions_controller.rb b/app/controllers/admin/subscriptions_controller.rb deleted file mode 100644 index 40500ef43..000000000 --- a/app/controllers/admin/subscriptions_controller.rb +++ /dev/null @@ -1,20 +0,0 @@ -# frozen_string_literal: true - -module Admin - class SubscriptionsController < BaseController - def index - authorize :subscription, :index? - @subscriptions = ordered_subscriptions.page(requested_page) - end - - private - - def ordered_subscriptions - Subscription.order(id: :desc).includes(:account) - end - - def requested_page - params[:page].to_i - end - end -end diff --git a/app/controllers/admin/trends/links/preview_card_providers_controller.rb b/app/controllers/admin/trends/links/preview_card_providers_controller.rb index 40a466cd6..97dee8eca 100644 --- a/app/controllers/admin/trends/links/preview_card_providers_controller.rb +++ b/app/controllers/admin/trends/links/preview_card_providers_controller.rb @@ -2,13 +2,15 @@ class Admin::Trends::Links::PreviewCardProvidersController < Admin::BaseController def index - authorize :preview_card_provider, :index? + authorize :preview_card_provider, :review? @preview_card_providers = filtered_preview_card_providers.page(params[:page]) @form = Trends::PreviewCardProviderBatch.new end def batch + authorize :preview_card_provider, :review? + @form = Trends::PreviewCardProviderBatch.new(trends_preview_card_provider_batch_params.merge(current_account: current_account, action: action_from_button)) @form.save rescue ActionController::ParameterMissing diff --git a/app/controllers/admin/trends/links_controller.rb b/app/controllers/admin/trends/links_controller.rb index 434eec5fe..a497eae41 100644 --- a/app/controllers/admin/trends/links_controller.rb +++ b/app/controllers/admin/trends/links_controller.rb @@ -2,13 +2,15 @@ class Admin::Trends::LinksController < Admin::BaseController def index - authorize :preview_card, :index? + authorize :preview_card, :review? @preview_cards = filtered_preview_cards.page(params[:page]) @form = Trends::PreviewCardBatch.new end def batch + authorize :preview_card, :review? + @form = Trends::PreviewCardBatch.new(trends_preview_card_batch_params.merge(current_account: current_account, action: action_from_button)) @form.save rescue ActionController::ParameterMissing diff --git a/app/controllers/admin/trends/statuses_controller.rb b/app/controllers/admin/trends/statuses_controller.rb index 766242738..c538962f9 100644 --- a/app/controllers/admin/trends/statuses_controller.rb +++ b/app/controllers/admin/trends/statuses_controller.rb @@ -2,13 +2,15 @@ class Admin::Trends::StatusesController < Admin::BaseController def index - authorize :status, :index? + authorize :status, :review? @statuses = filtered_statuses.page(params[:page]) @form = Trends::StatusBatch.new end def batch + authorize :status, :review? + @form = Trends::StatusBatch.new(trends_status_batch_params.merge(current_account: current_account, action: action_from_button)) @form.save rescue ActionController::ParameterMissing diff --git a/app/controllers/admin/trends/tags_controller.rb b/app/controllers/admin/trends/tags_controller.rb index f4d1ec0d1..98dd6c8ec 100644 --- a/app/controllers/admin/trends/tags_controller.rb +++ b/app/controllers/admin/trends/tags_controller.rb @@ -2,13 +2,15 @@ class Admin::Trends::TagsController < Admin::BaseController def index - authorize :tag, :index? + authorize :tag, :review? @tags = filtered_tags.page(params[:page]) @form = Trends::TagBatch.new end def batch + authorize :tag, :review? + @form = Trends::TagBatch.new(trends_tag_batch_params.merge(current_account: current_account, action: action_from_button)) @form.save rescue ActionController::ParameterMissing diff --git a/app/controllers/admin/users/roles_controller.rb b/app/controllers/admin/users/roles_controller.rb new file mode 100644 index 000000000..0db50cee9 --- /dev/null +++ b/app/controllers/admin/users/roles_controller.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +module Admin + class Users::RolesController < BaseController + before_action :set_user + + def show + authorize @user, :change_role? + end + + def update + authorize @user, :change_role? + + @user.current_account = current_account + + if @user.update(resource_params) + redirect_to admin_account_path(@user.account_id), notice: I18n.t('admin.accounts.change_role.changed_msg') + else + render :show + end + end + + private + + def set_user + @user = User.find(params[:user_id]) + end + + def resource_params + params.require(:user).permit(:role_id) + end + end +end diff --git a/app/controllers/admin/two_factor_authentications_controller.rb b/app/controllers/admin/users/two_factor_authentications_controller.rb similarity index 86% rename from app/controllers/admin/two_factor_authentications_controller.rb rename to app/controllers/admin/users/two_factor_authentications_controller.rb index f7fb7eb8f..5e3fb2b3c 100644 --- a/app/controllers/admin/two_factor_authentications_controller.rb +++ b/app/controllers/admin/users/two_factor_authentications_controller.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true module Admin - class TwoFactorAuthenticationsController < BaseController + class Users::TwoFactorAuthenticationsController < BaseController before_action :set_target_user def destroy diff --git a/app/controllers/api/v1/admin/account_actions_controller.rb b/app/controllers/api/v1/admin/account_actions_controller.rb index 6c9e04402..7249797a4 100644 --- a/app/controllers/api/v1/admin/account_actions_controller.rb +++ b/app/controllers/api/v1/admin/account_actions_controller.rb @@ -1,11 +1,16 @@ # frozen_string_literal: true class Api::V1::Admin::AccountActionsController < Api::BaseController + include Authorization + before_action -> { authorize_if_got_token! :'admin:write', :'admin:write:accounts' } - before_action :require_staff! before_action :set_account + after_action :verify_authorized + def create + authorize @account, :show? + account_action = Admin::AccountAction.new(resource_params) account_action.target_account = @account account_action.current_account = current_account diff --git a/app/controllers/api/v1/admin/accounts_controller.rb b/app/controllers/api/v1/admin/accounts_controller.rb index 65ed69f7b..0dee02e94 100644 --- a/app/controllers/api/v1/admin/accounts_controller.rb +++ b/app/controllers/api/v1/admin/accounts_controller.rb @@ -8,11 +8,11 @@ class Api::V1::Admin::AccountsController < Api::BaseController before_action -> { authorize_if_got_token! :'admin:read', :'admin:read:accounts' }, only: [:index, :show] before_action -> { authorize_if_got_token! :'admin:write', :'admin:write:accounts' }, except: [:index, :show] - before_action :require_staff! before_action :set_accounts, only: :index before_action :set_account, except: :index before_action :require_local_account!, only: [:enable, :approve, :reject] + after_action :verify_authorized after_action :insert_pagination_headers, only: :index FILTER_PARAMS = %i( @@ -119,7 +119,9 @@ class Api::V1::Admin::AccountsController < Api::BaseController translated_params[:status] = status.to_s if params[status].present? end - translated_params[:permissions] = 'staff' if params[:staff].present? + if params[:staff].present? + translated_params[:role_ids] = UserRole.that_can(:manage_reports).map(&:id) + end translated_params end diff --git a/app/controllers/api/v1/admin/dimensions_controller.rb b/app/controllers/api/v1/admin/dimensions_controller.rb index 49a5be1c3..4a72ad08b 100644 --- a/app/controllers/api/v1/admin/dimensions_controller.rb +++ b/app/controllers/api/v1/admin/dimensions_controller.rb @@ -1,11 +1,15 @@ # frozen_string_literal: true class Api::V1::Admin::DimensionsController < Api::BaseController + include Authorization + before_action -> { authorize_if_got_token! :'admin:read' } - before_action :require_staff! before_action :set_dimensions + after_action :verify_authorized + def create + authorize :dashboard, :index? render json: @dimensions, each_serializer: REST::Admin::DimensionSerializer end diff --git a/app/controllers/api/v1/admin/domain_allows_controller.rb b/app/controllers/api/v1/admin/domain_allows_controller.rb index 838978ddb..59aa807d6 100644 --- a/app/controllers/api/v1/admin/domain_allows_controller.rb +++ b/app/controllers/api/v1/admin/domain_allows_controller.rb @@ -8,10 +8,10 @@ class Api::V1::Admin::DomainAllowsController < Api::BaseController before_action -> { authorize_if_got_token! :'admin:read', :'admin:read:domain_allows' }, only: [:index, :show] before_action -> { authorize_if_got_token! :'admin:write', :'admin:write:domain_allows' }, except: [:index, :show] - before_action :require_staff! before_action :set_domain_allows, only: :index before_action :set_domain_allow, only: [:show, :destroy] + after_action :verify_authorized after_action :insert_pagination_headers, only: :index PAGINATION_PARAMS = %i(limit).freeze diff --git a/app/controllers/api/v1/admin/domain_blocks_controller.rb b/app/controllers/api/v1/admin/domain_blocks_controller.rb index 229870eee..de8fd9d08 100644 --- a/app/controllers/api/v1/admin/domain_blocks_controller.rb +++ b/app/controllers/api/v1/admin/domain_blocks_controller.rb @@ -8,10 +8,10 @@ class Api::V1::Admin::DomainBlocksController < Api::BaseController before_action -> { authorize_if_got_token! :'admin:read', :'admin:read:domain_blocks' }, only: [:index, :show] before_action -> { authorize_if_got_token! :'admin:write', :'admin:write:domain_blocks' }, except: [:index, :show] - before_action :require_staff! before_action :set_domain_blocks, only: :index before_action :set_domain_block, only: [:show, :update, :destroy] + after_action :verify_authorized after_action :insert_pagination_headers, only: :index PAGINATION_PARAMS = %i(limit).freeze diff --git a/app/controllers/api/v1/admin/measures_controller.rb b/app/controllers/api/v1/admin/measures_controller.rb index da95d3422..d78d7e10b 100644 --- a/app/controllers/api/v1/admin/measures_controller.rb +++ b/app/controllers/api/v1/admin/measures_controller.rb @@ -1,11 +1,15 @@ # frozen_string_literal: true class Api::V1::Admin::MeasuresController < Api::BaseController + include Authorization + before_action -> { authorize_if_got_token! :'admin:read' } - before_action :require_staff! before_action :set_measures + after_action :verify_authorized + def create + authorize :dashboard, :index? render json: @measures, each_serializer: REST::Admin::MeasureSerializer end diff --git a/app/controllers/api/v1/admin/reports_controller.rb b/app/controllers/api/v1/admin/reports_controller.rb index 865ba3d23..9dfb181a2 100644 --- a/app/controllers/api/v1/admin/reports_controller.rb +++ b/app/controllers/api/v1/admin/reports_controller.rb @@ -8,10 +8,10 @@ class Api::V1::Admin::ReportsController < Api::BaseController before_action -> { authorize_if_got_token! :'admin:read', :'admin:read:reports' }, only: [:index, :show] before_action -> { authorize_if_got_token! :'admin:write', :'admin:write:reports' }, except: [:index, :show] - before_action :require_staff! before_action :set_reports, only: :index before_action :set_report, except: :index + after_action :verify_authorized after_action :insert_pagination_headers, only: :index FILTER_PARAMS = %i( diff --git a/app/controllers/api/v1/admin/retention_controller.rb b/app/controllers/api/v1/admin/retention_controller.rb index 98d1a3d81..59d6b8388 100644 --- a/app/controllers/api/v1/admin/retention_controller.rb +++ b/app/controllers/api/v1/admin/retention_controller.rb @@ -1,11 +1,15 @@ # frozen_string_literal: true class Api::V1::Admin::RetentionController < Api::BaseController + include Authorization + before_action -> { authorize_if_got_token! :'admin:read' } - before_action :require_staff! before_action :set_cohorts + after_action :verify_authorized + def create + authorize :dashboard, :index? render json: @cohorts, each_serializer: REST::Admin::CohortSerializer end diff --git a/app/controllers/api/v1/admin/trends/links_controller.rb b/app/controllers/api/v1/admin/trends/links_controller.rb index 0a191fe4b..cc6388980 100644 --- a/app/controllers/api/v1/admin/trends/links_controller.rb +++ b/app/controllers/api/v1/admin/trends/links_controller.rb @@ -1,17 +1,19 @@ # frozen_string_literal: true -class Api::V1::Admin::Trends::LinksController < Api::BaseController +class Api::V1::Admin::Trends::LinksController < Api::V1::Trends::LinksController before_action -> { authorize_if_got_token! :'admin:read' } - before_action :require_staff! - before_action :set_links - - def index - render json: @links, each_serializer: REST::Trends::LinkSerializer - end private - def set_links - @links = Trends.links.query.limit(limit_param(10)) + def enabled? + super || current_user&.can?(:manage_taxonomies) + end + + def links_from_trends + if current_user&.can?(:manage_taxonomies) + Trends.links.query + else + super + end end end diff --git a/app/controllers/api/v1/admin/trends/statuses_controller.rb b/app/controllers/api/v1/admin/trends/statuses_controller.rb index cb145f165..c39f77363 100644 --- a/app/controllers/api/v1/admin/trends/statuses_controller.rb +++ b/app/controllers/api/v1/admin/trends/statuses_controller.rb @@ -1,17 +1,19 @@ # frozen_string_literal: true -class Api::V1::Admin::Trends::StatusesController < Api::BaseController +class Api::V1::Admin::Trends::StatusesController < Api::V1::Trends::StatusesController before_action -> { authorize_if_got_token! :'admin:read' } - before_action :require_staff! - before_action :set_statuses - - def index - render json: @statuses, each_serializer: REST::StatusSerializer - end private - def set_statuses - @statuses = cache_collection(Trends.statuses.query.limit(limit_param(DEFAULT_STATUSES_LIMIT)), Status) + def enabled? + super || current_user&.can?(:manage_taxonomies) + end + + def statuses_from_trends + if current_user&.can?(:manage_taxonomies) + Trends.statuses.query + else + super + end end end diff --git a/app/controllers/api/v1/admin/trends/tags_controller.rb b/app/controllers/api/v1/admin/trends/tags_controller.rb index 9c28b0412..f3c0c4b6b 100644 --- a/app/controllers/api/v1/admin/trends/tags_controller.rb +++ b/app/controllers/api/v1/admin/trends/tags_controller.rb @@ -1,17 +1,19 @@ # frozen_string_literal: true -class Api::V1::Admin::Trends::TagsController < Api::BaseController +class Api::V1::Admin::Trends::TagsController < Api::V1::Trends::TagsController before_action -> { authorize_if_got_token! :'admin:read' } - before_action :require_staff! - before_action :set_tags - - def index - render json: @tags, each_serializer: REST::Admin::TagSerializer - end private - def set_tags - @tags = Trends.tags.query.limit(limit_param(10)) + def enabled? + super || current_user&.can?(:manage_taxonomies) + end + + def tags_from_trends + if current_user&.can?(:manage_taxonomies) + Trends.tags.query + else + super + end end end diff --git a/app/controllers/api/v1/trends/links_controller.rb b/app/controllers/api/v1/trends/links_controller.rb index 2385fe438..1a9f918f2 100644 --- a/app/controllers/api/v1/trends/links_controller.rb +++ b/app/controllers/api/v1/trends/links_controller.rb @@ -13,10 +13,14 @@ class Api::V1::Trends::LinksController < Api::BaseController private + def enabled? + Setting.trends + end + def set_links @links = begin - if Setting.trends - links_from_trends + if enabled? + links_from_trends.offset(offset_param).limit(limit_param(DEFAULT_LINKS_LIMIT)) else [] end @@ -24,7 +28,7 @@ class Api::V1::Trends::LinksController < Api::BaseController end def links_from_trends - Trends.links.query.allowed.in_locale(content_locale).offset(offset_param).limit(limit_param(DEFAULT_LINKS_LIMIT)) + Trends.links.query.allowed.in_locale(content_locale) end def insert_pagination_headers diff --git a/app/controllers/api/v1/trends/statuses_controller.rb b/app/controllers/api/v1/trends/statuses_controller.rb index 1f2fff582..c275d5fc8 100644 --- a/app/controllers/api/v1/trends/statuses_controller.rb +++ b/app/controllers/api/v1/trends/statuses_controller.rb @@ -11,10 +11,14 @@ class Api::V1::Trends::StatusesController < Api::BaseController private + def enabled? + Setting.trends + end + def set_statuses @statuses = begin - if Setting.trends - cache_collection(statuses_from_trends, Status) + if enabled? + cache_collection(statuses_from_trends.offset(offset_param).limit(limit_param(DEFAULT_STATUSES_LIMIT)), Status) else [] end @@ -24,7 +28,7 @@ class Api::V1::Trends::StatusesController < Api::BaseController def statuses_from_trends scope = Trends.statuses.query.allowed.in_locale(content_locale) scope = scope.filtered_for(current_account) if user_signed_in? - scope.offset(offset_param).limit(limit_param(DEFAULT_STATUSES_LIMIT)) + scope end def insert_pagination_headers diff --git a/app/controllers/api/v1/trends/tags_controller.rb b/app/controllers/api/v1/trends/tags_controller.rb index 38003f599..41f9ffac1 100644 --- a/app/controllers/api/v1/trends/tags_controller.rb +++ b/app/controllers/api/v1/trends/tags_controller.rb @@ -13,16 +13,24 @@ class Api::V1::Trends::TagsController < Api::BaseController private + def enabled? + Setting.trends + end + def set_tags @tags = begin - if Setting.trends - Trends.tags.query.allowed.offset(offset_param).limit(limit_param(DEFAULT_TAGS_LIMIT)) + if enabled? + tags_from_trends.offset(offset_param).limit(limit_param(DEFAULT_TAGS_LIMIT)) else [] end end end + def tags_from_trends + Trends.tags.query.allowed + end + def insert_pagination_headers set_pagination_headers(next_path, prev_path) end diff --git a/app/controllers/api/v2/admin/accounts_controller.rb b/app/controllers/api/v2/admin/accounts_controller.rb index a89e6835e..bcc1a0733 100644 --- a/app/controllers/api/v2/admin/accounts_controller.rb +++ b/app/controllers/api/v2/admin/accounts_controller.rb @@ -11,6 +11,7 @@ class Api::V2::Admin::AccountsController < Api::V1::Admin::AccountsController email ip invited_by + role_ids ).freeze PAGINATION_PARAMS = (%i(limit) + FILTER_PARAMS).freeze @@ -18,7 +19,17 @@ class Api::V2::Admin::AccountsController < Api::V1::Admin::AccountsController private def filtered_accounts - AccountFilter.new(filter_params).results + AccountFilter.new(translated_filter_params).results + end + + def translated_filter_params + translated_params = filter_params.slice(*AccountFilter::KEYS) + + if params[:permissions] == 'staff' + translated_params[:role_ids] = UserRole.that_can(:manage_reports).map(&:id) + end + + translated_params end def filter_params diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 3d2f8280b..615536b96 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -56,14 +56,6 @@ class ApplicationController < ActionController::Base store_location_for(:user, request.url) unless [:json, :rss].include?(request.format&.to_sym) end - def require_admin! - forbidden unless current_user&.admin? - end - - def require_staff! - forbidden unless current_user&.staff? - end - def require_functional! redirect_to edit_user_registration_path unless current_user.functional? end diff --git a/app/controllers/custom_css_controller.rb b/app/controllers/custom_css_controller.rb index e1dc5eaf6..9270c467d 100644 --- a/app/controllers/custom_css_controller.rb +++ b/app/controllers/custom_css_controller.rb @@ -13,6 +13,6 @@ class CustomCssController < ApplicationController def show expires_in 3.minutes, public: true request.session_options[:skip] = true - render plain: Setting.custom_css || '', content_type: 'text/css' + render content_type: 'text/css' end end diff --git a/app/helpers/accounts_helper.rb b/app/helpers/accounts_helper.rb index d37634964..59664373d 100644 --- a/app/helpers/accounts_helper.rb +++ b/app/helpers/accounts_helper.rb @@ -61,21 +61,13 @@ module AccountsHelper end end - def account_badge(account, all: false) + def account_badge(account) if account.bot? content_tag(:div, content_tag(:div, t('accounts.roles.bot'), class: 'account-role bot'), class: 'roles') elsif account.group? content_tag(:div, content_tag(:div, t('accounts.roles.group'), class: 'account-role group'), class: 'roles') - elsif (Setting.show_staff_badge && account.user_staff?) || all - content_tag(:div, class: 'roles') do - if all && !account.user_staff? - content_tag(:div, t('admin.accounts.roles.user'), class: 'account-role') - elsif account.user_admin? - content_tag(:div, t('accounts.roles.admin'), class: 'account-role admin') - elsif account.user_moderator? - content_tag(:div, t('accounts.roles.moderator'), class: 'account-role moderator') - end - end + elsif account.user_role&.highlighted? + content_tag(:div, content_tag(:div, account.user_role.name, class: "account-role user-role-#{account.user_role.id}"), class: 'roles') end end diff --git a/app/javascript/mastodon/components/status_action_bar.js b/app/javascript/mastodon/components/status_action_bar.js index ab8755be0..d44da482d 100644 --- a/app/javascript/mastodon/components/status_action_bar.js +++ b/app/javascript/mastodon/components/status_action_bar.js @@ -6,8 +6,9 @@ import IconButton from './icon_button'; import DropdownMenuContainer from '../containers/dropdown_menu_container'; import { defineMessages, injectIntl } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { me, isStaff } from '../initial_state'; +import { me } from '../initial_state'; import classNames from 'classnames'; +import { PERMISSION_MANAGE_USERS } from 'mastodon/permissions'; const messages = defineMessages({ delete: { id: 'status.delete', defaultMessage: 'Delete' }, @@ -55,6 +56,7 @@ class StatusActionBar extends ImmutablePureComponent { static contextTypes = { router: PropTypes.object, + identity: PropTypes.object, }; static propTypes = { @@ -306,7 +308,7 @@ class StatusActionBar extends ImmutablePureComponent { } } - if (isStaff) { + if ((this.context.identity.permissions & PERMISSION_MANAGE_USERS) === PERMISSION_MANAGE_USERS) { menu.push(null); menu.push({ text: intl.formatMessage(messages.admin_account, { name: account.get('username') }), href: `/admin/accounts/${status.getIn(['account', 'id'])}` }); menu.push({ text: intl.formatMessage(messages.admin_status), href: `/admin/accounts/${status.getIn(['account', 'id'])}/statuses?id=${status.get('id')}` }); diff --git a/app/javascript/mastodon/containers/mastodon.js b/app/javascript/mastodon/containers/mastodon.js index 0c3f6afa8..f4bef4686 100644 --- a/app/javascript/mastodon/containers/mastodon.js +++ b/app/javascript/mastodon/containers/mastodon.js @@ -26,6 +26,7 @@ const createIdentityContext = state => ({ signedIn: !!state.meta.me, accountId: state.meta.me, accessToken: state.meta.access_token, + permissions: state.role.permissions, }); export default class Mastodon extends React.PureComponent { diff --git a/app/javascript/mastodon/features/account/components/header.js b/app/javascript/mastodon/features/account/components/header.js index 8e6b9f063..1ad9341c7 100644 --- a/app/javascript/mastodon/features/account/components/header.js +++ b/app/javascript/mastodon/features/account/components/header.js @@ -4,7 +4,7 @@ import PropTypes from 'prop-types'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import Button from 'mastodon/components/button'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { autoPlayGif, me, isStaff } from 'mastodon/initial_state'; +import { autoPlayGif, me } from 'mastodon/initial_state'; import classNames from 'classnames'; import Icon from 'mastodon/components/icon'; import IconButton from 'mastodon/components/icon_button'; @@ -14,6 +14,7 @@ import ShortNumber from 'mastodon/components/short_number'; import { NavLink } from 'react-router-dom'; import DropdownMenuContainer from 'mastodon/containers/dropdown_menu_container'; import AccountNoteContainer from '../containers/account_note_container'; +import { PERMISSION_MANAGE_USERS } from 'mastodon/permissions'; const messages = defineMessages({ unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' }, @@ -64,6 +65,10 @@ const dateFormatOptions = { export default @injectIntl class Header extends ImmutablePureComponent { + static contextTypes = { + identity: PropTypes.object, + }; + static propTypes = { account: ImmutablePropTypes.map, identity_props: ImmutablePropTypes.list, @@ -241,7 +246,7 @@ class Header extends ImmutablePureComponent { } } - if (account.get('id') !== me && isStaff) { + if (account.get('id') !== me && (this.context.identity.permissions & PERMISSION_MANAGE_USERS) === PERMISSION_MANAGE_USERS) { menu.push(null); menu.push({ text: intl.formatMessage(messages.admin_account, { name: account.get('username') }), href: `/admin/accounts/${account.get('id')}` }); } diff --git a/app/javascript/mastodon/features/notifications/components/column_settings.js b/app/javascript/mastodon/features/notifications/components/column_settings.js index 61df79b46..b1618c1b4 100644 --- a/app/javascript/mastodon/features/notifications/components/column_settings.js +++ b/app/javascript/mastodon/features/notifications/components/column_settings.js @@ -5,10 +5,14 @@ import { FormattedMessage } from 'react-intl'; import ClearColumnButton from './clear_column_button'; import GrantPermissionButton from './grant_permission_button'; import SettingToggle from './setting_toggle'; -import { isStaff } from 'mastodon/initial_state'; +import { PERMISSION_MANAGE_USERS, PERMISSION_MANAGE_REPORTS } from 'mastodon/permissions'; export default class ColumnSettings extends React.PureComponent { + static contextTypes = { + identity: PropTypes.object, + }; + static propTypes = { settings: ImmutablePropTypes.map.isRequired, pushSettings: ImmutablePropTypes.map.isRequired, @@ -166,7 +170,7 @@ export default class ColumnSettings extends React.PureComponent {

- {isStaff && ( + {(this.context.identity.permissions & PERMISSION_MANAGE_USERS === PERMISSION_MANAGE_USERS) && (
@@ -179,7 +183,7 @@ export default class ColumnSettings extends React.PureComponent {
)} - {isStaff && ( + {(this.context.identity.permissions & PERMISSION_MANAGE_REPORTS === PERMISSION_MANAGE_REPORTS) && (
diff --git a/app/javascript/mastodon/features/status/components/action_bar.js b/app/javascript/mastodon/features/status/components/action_bar.js index edaff959e..50bda69f8 100644 --- a/app/javascript/mastodon/features/status/components/action_bar.js +++ b/app/javascript/mastodon/features/status/components/action_bar.js @@ -5,8 +5,9 @@ import IconButton from '../../../components/icon_button'; import ImmutablePropTypes from 'react-immutable-proptypes'; import DropdownMenuContainer from '../../../containers/dropdown_menu_container'; import { defineMessages, injectIntl } from 'react-intl'; -import { me, isStaff } from '../../../initial_state'; +import { me } from '../../../initial_state'; import classNames from 'classnames'; +import { PERMISSION_MANAGE_USERS } from 'mastodon/permissions'; const messages = defineMessages({ delete: { id: 'status.delete', defaultMessage: 'Delete' }, @@ -50,6 +51,7 @@ class ActionBar extends React.PureComponent { static contextTypes = { router: PropTypes.object, + identity: PropTypes.object, }; static propTypes = { @@ -248,7 +250,7 @@ class ActionBar extends React.PureComponent { } } - if (isStaff) { + if ((this.context.identity.permissions & PERMISSION_MANAGE_USERS) === PERMISSION_MANAGE_USERS) { menu.push(null); menu.push({ text: intl.formatMessage(messages.admin_account, { name: status.getIn(['account', 'username']) }), href: `/admin/accounts/${status.getIn(['account', 'id'])}` }); menu.push({ text: intl.formatMessage(messages.admin_status), href: `/admin/accounts/${status.getIn(['account', 'id'])}/statuses?id=${status.get('id')}` }); diff --git a/app/javascript/mastodon/features/ui/components/link_footer.js b/app/javascript/mastodon/features/ui/components/link_footer.js index edf1104c4..bbb9b122a 100644 --- a/app/javascript/mastodon/features/ui/components/link_footer.js +++ b/app/javascript/mastodon/features/ui/components/link_footer.js @@ -3,9 +3,10 @@ import React from 'react'; import PropTypes from 'prop-types'; import { FormattedMessage, defineMessages, injectIntl } from 'react-intl'; import { Link } from 'react-router-dom'; -import { invitesEnabled, limitedFederationMode, version, repository, source_url, profile_directory as profileDirectory } from 'mastodon/initial_state'; +import { limitedFederationMode, version, repository, source_url, profile_directory as profileDirectory } from 'mastodon/initial_state'; import { logOut } from 'mastodon/utils/log_out'; import { openModal } from 'mastodon/actions/modal'; +import { PERMISSION_INVITE_USERS } from 'mastodon/permissions'; const messages = defineMessages({ logoutMessage: { id: 'confirmations.logout.message', defaultMessage: 'Are you sure you want to log out?' }, @@ -27,6 +28,10 @@ export default @injectIntl @connect(null, mapDispatchToProps) class LinkFooter extends React.PureComponent { + static contextTypes = { + identity: PropTypes.object, + }; + static propTypes = { withHotkeys: PropTypes.bool, onLogout: PropTypes.func.isRequired, @@ -48,7 +53,7 @@ class LinkFooter extends React.PureComponent { return (
    - {invitesEnabled &&
  • ·
  • } + {((this.context.identity.permissions & PERMISSION_INVITE_USERS) === PERMISSION_INVITE_USERS) &&
  • ·
  • } {withHotkeys &&
  • ·
  • }
  • ·
  • {!limitedFederationMode &&
  • ·
  • } diff --git a/app/javascript/mastodon/initial_state.js b/app/javascript/mastodon/initial_state.js index a6d54f134..709975270 100644 --- a/app/javascript/mastodon/initial_state.js +++ b/app/javascript/mastodon/initial_state.js @@ -12,14 +12,12 @@ export const boostModal = getMeta('boost_modal'); export const deleteModal = getMeta('delete_modal'); export const me = getMeta('me'); export const searchEnabled = getMeta('search_enabled'); -export const invitesEnabled = getMeta('invites_enabled'); export const limitedFederationMode = getMeta('limited_federation_mode'); export const repository = getMeta('repository'); export const source_url = getMeta('source_url'); export const version = getMeta('version'); export const mascot = getMeta('mascot'); export const profile_directory = getMeta('profile_directory'); -export const isStaff = getMeta('is_staff'); export const forceSingleColumn = !getMeta('advanced_layout'); export const useBlurhash = getMeta('use_blurhash'); export const usePendingItems = getMeta('use_pending_items'); diff --git a/app/javascript/mastodon/permissions.js b/app/javascript/mastodon/permissions.js new file mode 100644 index 000000000..752ddd6c5 --- /dev/null +++ b/app/javascript/mastodon/permissions.js @@ -0,0 +1,3 @@ +export const PERMISSION_INVITE_USERS = 0x0000000000010000; +export const PERMISSION_MANAGE_USERS = 0x0000000000000400; +export const PERMISSION_MANAGE_REPORTS = 0x0000000000000010; diff --git a/app/javascript/mastodon/reducers/meta.js b/app/javascript/mastodon/reducers/meta.js index 65becc44f..5040a340f 100644 --- a/app/javascript/mastodon/reducers/meta.js +++ b/app/javascript/mastodon/reducers/meta.js @@ -7,12 +7,13 @@ const initialState = ImmutableMap({ streaming_api_base_url: null, access_token: null, layout: layoutFromWindow(), + permissions: '0', }); export default function meta(state = initialState, action) { switch(action.type) { case STORE_HYDRATE: - return state.merge(action.state.get('meta')); + return state.merge(action.state.get('meta')).set('permissions', action.state.getIn(['role', 'permissions'])); case APP_LAYOUT_CHANGE: return state.set('layout', action.layout); default: diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index 4ce5cd101..1c5494cde 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -924,6 +924,10 @@ a.name-tag, margin-top: 15px; } +.user-role { + color: var(--user-role-accent); +} + .announcements-list, .filters-list { border: 1px solid lighten($ui-base-color, 4%); @@ -960,6 +964,17 @@ a.name-tag, &__meta { padding: 0 15px; color: $dark-text-color; + + a { + color: inherit; + text-decoration: underline; + + &:hover, + &:focus, + &:active { + text-decoration: none; + } + } } &__action-bar { diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss index da699dd25..990903859 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -256,6 +256,10 @@ code { } } + .input.with_block_label.user_role_permissions_as_keys ul { + columns: unset; + } + .input.datetime .label_input select { display: inline-block; width: auto; diff --git a/app/lib/admin/system_check.rb b/app/lib/admin/system_check.rb index 877a42ef6..f512635ab 100644 --- a/app/lib/admin/system_check.rb +++ b/app/lib/admin/system_check.rb @@ -8,11 +8,11 @@ class Admin::SystemCheck Admin::SystemCheck::ElasticsearchCheck, ].freeze - def self.perform + def self.perform(current_user) ACTIVE_CHECKS.each_with_object([]) do |klass, arr| - check = klass.new + check = klass.new(current_user) - if check.pass? + if check.skip? || check.pass? arr else arr << check.message diff --git a/app/lib/admin/system_check/base_check.rb b/app/lib/admin/system_check/base_check.rb index fcad8daca..c2974c218 100644 --- a/app/lib/admin/system_check/base_check.rb +++ b/app/lib/admin/system_check/base_check.rb @@ -1,6 +1,16 @@ # frozen_string_literal: true class Admin::SystemCheck::BaseCheck + attr_reader :current_user + + def initialize(current_user) + @current_user = current_user + end + + def skip? + false + end + def pass? raise NotImplementedError end diff --git a/app/lib/admin/system_check/database_schema_check.rb b/app/lib/admin/system_check/database_schema_check.rb index b93d1954e..c2f01fd55 100644 --- a/app/lib/admin/system_check/database_schema_check.rb +++ b/app/lib/admin/system_check/database_schema_check.rb @@ -1,6 +1,10 @@ # frozen_string_literal: true class Admin::SystemCheck::DatabaseSchemaCheck < Admin::SystemCheck::BaseCheck + def skip? + !current_user.can?(:view_devops) + end + def pass? !ActiveRecord::Base.connection.migration_context.needs_migration? end diff --git a/app/lib/admin/system_check/elasticsearch_check.rb b/app/lib/admin/system_check/elasticsearch_check.rb index 1b48a5415..8aee18267 100644 --- a/app/lib/admin/system_check/elasticsearch_check.rb +++ b/app/lib/admin/system_check/elasticsearch_check.rb @@ -1,6 +1,10 @@ # frozen_string_literal: true class Admin::SystemCheck::ElasticsearchCheck < Admin::SystemCheck::BaseCheck + def skip? + !current_user.can?(:view_devops) + end + def pass? return true unless Chewy.enabled? @@ -32,8 +36,4 @@ class Admin::SystemCheck::ElasticsearchCheck < Admin::SystemCheck::BaseCheck def compatible_version? Gem::Version.new(running_version) >= Gem::Version.new(required_version) end - - def missing_queues - @missing_queues ||= Sidekiq::ProcessSet.new.reduce(SIDEKIQ_QUEUES) { |queues, process| queues - process['queues'] } - end end diff --git a/app/lib/admin/system_check/rules_check.rb b/app/lib/admin/system_check/rules_check.rb index 1fbdf955d..8206a5df3 100644 --- a/app/lib/admin/system_check/rules_check.rb +++ b/app/lib/admin/system_check/rules_check.rb @@ -3,6 +3,10 @@ class Admin::SystemCheck::RulesCheck < Admin::SystemCheck::BaseCheck include RoutingHelper + def skip? + !current_user.can?(:manage_rules) + end + def pass? Rule.kept.exists? end diff --git a/app/lib/admin/system_check/sidekiq_process_check.rb b/app/lib/admin/system_check/sidekiq_process_check.rb index 22446edaf..648811d6c 100644 --- a/app/lib/admin/system_check/sidekiq_process_check.rb +++ b/app/lib/admin/system_check/sidekiq_process_check.rb @@ -9,6 +9,10 @@ class Admin::SystemCheck::SidekiqProcessCheck < Admin::SystemCheck::BaseCheck scheduler ).freeze + def skip? + !current_user.can?(:view_devops) + end + def pass? missing_queues.empty? end diff --git a/app/models/account.rb b/app/models/account.rb index 730ef6293..628692d22 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -116,7 +116,7 @@ class Account < ApplicationRecord scope :by_recent_status, -> { order(Arel.sql('(case when account_stats.last_status_at is null then 1 else 0 end) asc, account_stats.last_status_at desc, accounts.id desc')) } scope :by_recent_sign_in, -> { order(Arel.sql('(case when users.current_sign_in_at is null then 1 else 0 end) asc, users.current_sign_in_at desc, accounts.id desc')) } scope :popular, -> { order('account_stats.followers_count desc') } - scope :by_domain_and_subdomains, ->(domain) { where(domain: domain).or(where(arel_table[:domain].matches('%.' + domain))) } + scope :by_domain_and_subdomains, ->(domain) { where(domain: domain).or(where(arel_table[:domain].matches("%.#{domain}"))) } scope :not_excluded_by_account, ->(account) { where.not(id: account.excluded_from_timeline_account_ids) } scope :not_domain_blocked_by_account, ->(account) { where(arel_table[:domain].eq(nil).or(arel_table[:domain].not_in(account.excluded_from_timeline_domains))) } @@ -132,9 +132,6 @@ class Account < ApplicationRecord :unconfirmed?, :unconfirmed_or_pending?, :role, - :admin?, - :moderator?, - :staff?, :locale, :shows_application?, to: :user, @@ -454,7 +451,7 @@ class Account < ApplicationRecord DeliveryFailureTracker.without_unavailable(urls) end - def search_for(terms, limit = 10, offset = 0) + def search_for(terms, limit: 10, offset: 0) tsquery = generate_query_for_search(terms) sql = <<-SQL.squish @@ -476,7 +473,7 @@ class Account < ApplicationRecord records end - def advanced_search_for(terms, account, limit = 10, following = false, offset = 0) + def advanced_search_for(terms, account, limit: 10, following: false, offset: 0) tsquery = generate_query_for_search(terms) sql = advanced_search_for_sql_template(following) records = find_by_sql([sql, id: account.id, limit: limit, offset: offset, tsquery: tsquery]) diff --git a/app/models/account_filter.rb b/app/models/account_filter.rb index ec309ce09..e214e0bad 100644 --- a/app/models/account_filter.rb +++ b/app/models/account_filter.rb @@ -4,7 +4,7 @@ class AccountFilter KEYS = %i( origin status - permissions + role_ids username by_domain display_name @@ -26,7 +26,7 @@ class AccountFilter params.each do |key, value| next if key.to_s == 'page' - scope.merge!(scope_for(key, value.to_s.strip)) if value.present? + scope.merge!(scope_for(key, value)) if value.present? end scope @@ -38,18 +38,18 @@ class AccountFilter case key.to_s when 'origin' origin_scope(value) - when 'permissions' - permissions_scope(value) + when 'role_ids' + role_scope(value) when 'status' status_scope(value) when 'by_domain' - Account.where(domain: value) + Account.where(domain: value.to_s) when 'username' - Account.matches_username(value) + Account.matches_username(value.to_s) when 'display_name' - Account.matches_display_name(value) + Account.matches_display_name(value.to_s) when 'email' - accounts_with_users.merge(User.matches_email(value)) + accounts_with_users.merge(User.matches_email(value.to_s)) when 'ip' valid_ip?(value) ? accounts_with_users.merge(User.matches_ip(value).group('users.id, accounts.id')) : Account.none when 'invited_by' @@ -104,13 +104,8 @@ class AccountFilter Account.left_joins(user: :invite).merge(Invite.where(user_id: value.to_s)) end - def permissions_scope(value) - case value.to_s - when 'staff' - accounts_with_users.merge(User.staff) - else - raise "Unknown permissions: #{value}" - end + def role_scope(value) + accounts_with_users.merge(User.where(role_id: Array(value).map(&:to_s))) end def accounts_with_users @@ -118,7 +113,7 @@ class AccountFilter end def valid_ip?(value) - IPAddr.new(value) && true + IPAddr.new(value.to_s) && true rescue IPAddr::InvalidAddressError false end diff --git a/app/models/concerns/user_roles.rb b/app/models/concerns/user_roles.rb deleted file mode 100644 index a42b4a172..000000000 --- a/app/models/concerns/user_roles.rb +++ /dev/null @@ -1,68 +0,0 @@ -# frozen_string_literal: true - -module UserRoles - extend ActiveSupport::Concern - - included do - scope :admins, -> { where(admin: true) } - scope :moderators, -> { where(moderator: true) } - scope :staff, -> { admins.or(moderators) } - end - - def staff? - admin? || moderator? - end - - def role=(value) - case value - when 'admin' - self.admin = true - self.moderator = false - when 'moderator' - self.admin = false - self.moderator = true - else - self.admin = false - self.moderator = false - end - end - - def role - if admin? - 'admin' - elsif moderator? - 'moderator' - else - 'user' - end - end - - def role?(role) - case role - when 'user' - true - when 'moderator' - staff? - when 'admin' - admin? - else - false - end - end - - def promote! - if moderator? - update!(moderator: false, admin: true) - elsif !admin? - update!(moderator: true) - end - end - - def demote! - if admin? - update!(admin: false, moderator: true) - elsif moderator? - update!(moderator: false) - end - end -end diff --git a/app/models/form/admin_settings.rb b/app/models/form/admin_settings.rb index 6fc7c56fd..97fabc6ac 100644 --- a/app/models/form/admin_settings.rb +++ b/app/models/form/admin_settings.rb @@ -15,10 +15,8 @@ class Form::AdminSettings closed_registrations_message open_deletion timeline_preview - show_staff_badge bootstrap_timeline_accounts theme - min_invite_role activity_api_enabled peers_api_enabled show_known_fediverse_at_about_page @@ -39,7 +37,6 @@ class Form::AdminSettings BOOLEAN_KEYS = %i( open_deletion timeline_preview - show_staff_badge activity_api_enabled peers_api_enabled show_known_fediverse_at_about_page @@ -62,7 +59,6 @@ class Form::AdminSettings validates :site_short_description, :site_description, html: { wrap_with: :p } validates :site_extended_description, :site_terms, :closed_registrations_message, html: true validates :registrations_mode, inclusion: { in: %w(open approved none) } - validates :min_invite_role, inclusion: { in: %w(disabled user moderator admin) } validates :site_contact_email, :site_contact_username, presence: true validates :site_contact_username, existing_username: true validates :bootstrap_timeline_accounts, existing_username: { multiple: true } diff --git a/app/models/trends.rb b/app/models/trends.rb index f8864e55f..d886be89a 100644 --- a/app/models/trends.rb +++ b/app/models/trends.rb @@ -34,7 +34,7 @@ module Trends return if links_requiring_review.empty? && tags_requiring_review.empty? && statuses_requiring_review.empty? - User.staff.includes(:account).find_each do |user| + User.those_who_can(:manage_taxonomies).includes(:account).find_each do |user| AdminMailer.new_trends(user.account, links_requiring_review, tags_requiring_review, statuses_requiring_review).deliver_later! if user.allows_trends_review_emails? end end diff --git a/app/models/user.rb b/app/models/user.rb index 81f6a58f6..60abaf77e 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -37,6 +37,7 @@ # sign_in_token_sent_at :datetime # webauthn_id :string # sign_up_ip :inet +# role_id :bigint(8) # class User < ApplicationRecord @@ -50,7 +51,6 @@ class User < ApplicationRecord ) include Settings::Extend - include UserRoles include Redisable include LanguagesHelper @@ -79,6 +79,7 @@ class User < ApplicationRecord belongs_to :account, inverse_of: :user belongs_to :invite, counter_cache: :uses, optional: true belongs_to :created_by_application, class_name: 'Doorkeeper::Application', optional: true + belongs_to :role, class_name: 'UserRole', optional: true accepts_nested_attributes_for :account has_many :applications, class_name: 'Doorkeeper::Application', as: :owner @@ -103,6 +104,7 @@ class User < ApplicationRecord validates_with RegistrationFormTimeValidator, on: :create validates :website, absence: true, on: :create validates :confirm_password, absence: true, on: :create + validate :validate_role_elevation scope :recent, -> { order(id: :desc) } scope :pending, -> { where(approved: false) } @@ -117,6 +119,7 @@ class User < ApplicationRecord scope :emailable, -> { confirmed.enabled.joins(:account).merge(Account.searchable) } before_validation :sanitize_languages + before_validation :sanitize_role before_create :set_approved after_commit :send_pending_devise_notifications after_create_commit :trigger_webhooks @@ -135,8 +138,28 @@ class User < ApplicationRecord :disable_swiping, :always_send_emails, to: :settings, prefix: :setting, allow_nil: false + delegate :can?, to: :role + attr_reader :invite_code - attr_writer :external, :bypass_invite_request_check + attr_writer :external, :bypass_invite_request_check, :current_account + + def self.those_who_can(*any_of_privileges) + matching_role_ids = UserRole.that_can(*any_of_privileges).map(&:id) + + if matching_role_ids.empty? + none + else + where(role_id: matching_role_ids) + end + end + + def role + if role_id.nil? + UserRole.everyone + else + super + end + end def confirmed? confirmed_at.present? @@ -441,6 +464,11 @@ class User < ApplicationRecord self.chosen_languages = nil if chosen_languages.empty? end + def sanitize_role + return if role.nil? + self.role = nil if role.everyone? + end + def prepare_new_user! BootstrapTimelineWorker.perform_async(account_id) ActivityTracker.increment('activity:accounts:local') @@ -453,7 +481,7 @@ class User < ApplicationRecord end def notify_staff_about_pending_account! - User.staff.includes(:account).find_each do |u| + User.those_who_can(:manage_users).includes(:account).find_each do |u| next unless u.allows_pending_account_emails? AdminMailer.new_pending_account(u.account, self).deliver_later end @@ -471,6 +499,10 @@ class User < ApplicationRecord email_changed? && !external? && !(Rails.env.test? || Rails.env.development?) end + def validate_role_elevation + errors.add(:role_id, :elevated) if defined?(@current_account) && role&.overrides?(@current_account&.user_role) + end + def invite_text_required? Setting.require_invite_text && !invited? && !external? && !bypass_invite_request_check? end diff --git a/app/models/user_role.rb b/app/models/user_role.rb new file mode 100644 index 000000000..833b96d71 --- /dev/null +++ b/app/models/user_role.rb @@ -0,0 +1,179 @@ +# frozen_string_literal: true + +# == Schema Information +# +# Table name: user_roles +# +# id :bigint(8) not null, primary key +# name :string default(""), not null +# color :string default(""), not null +# position :integer default(0), not null +# permissions :bigint(8) default(0), not null +# highlighted :boolean default(FALSE), not null +# created_at :datetime not null +# updated_at :datetime not null +# + +class UserRole < ApplicationRecord + FLAGS = { + administrator: (1 << 0), + view_devops: (1 << 1), + view_audit_log: (1 << 2), + view_dashboard: (1 << 3), + manage_reports: (1 << 4), + manage_federation: (1 << 5), + manage_settings: (1 << 6), + manage_blocks: (1 << 7), + manage_taxonomies: (1 << 8), + manage_appeals: (1 << 9), + manage_users: (1 << 10), + manage_invites: (1 << 11), + manage_rules: (1 << 12), + manage_announcements: (1 << 13), + manage_custom_emojis: (1 << 14), + manage_webhooks: (1 << 15), + invite_users: (1 << 16), + manage_roles: (1 << 17), + manage_user_access: (1 << 18), + delete_user_data: (1 << 19), + }.freeze + + module Flags + NONE = 0 + ALL = FLAGS.values.reduce(&:|) + + DEFAULT = FLAGS[:invite_users] + + CATEGORIES = { + invites: %i( + invite_users + ).freeze, + + moderation: %w( + view_dashboard + view_audit_log + manage_users + manage_user_access + delete_user_data + manage_reports + manage_appeals + manage_federation + manage_blocks + manage_taxonomies + manage_invites + ).freeze, + + administration: %w( + manage_settings + manage_rules + manage_roles + manage_webhooks + manage_custom_emojis + manage_announcements + ).freeze, + + devops: %w( + view_devops + ).freeze, + + special: %i( + administrator + ).freeze, + }.freeze + end + + attr_writer :current_account + + validates :name, presence: true, unless: :everyone? + validates :color, format: { with: /\A#?(?:[A-F0-9]{3}){1,2}\z/i }, unless: -> { color.blank? } + + validate :validate_permissions_elevation + validate :validate_position_elevation + validate :validate_dangerous_permissions + + before_validation :set_position + + scope :assignable, -> { where.not(id: -99).order(position: :asc) } + + has_many :users, inverse_of: :role, foreign_key: 'role_id', dependent: :nullify + + def self.nobody + @nobody ||= UserRole.new(permissions: Flags::NONE, position: -1) + end + + def self.everyone + UserRole.find(-99) + rescue ActiveRecord::RecordNotFound + UserRole.create!(id: -99, permissions: Flags::DEFAULT) + end + + def self.that_can(*any_of_privileges) + all.select { |role| role.can?(*any_of_privileges) } + end + + def everyone? + id == -99 + end + + def nobody? + id.nil? + end + + def permissions_as_keys + FLAGS.keys.select { |privilege| permissions & FLAGS[privilege] == FLAGS[privilege] }.map(&:to_s) + end + + def permissions_as_keys=(value) + self.permissions = value.map(&:presence).compact.reduce(Flags::NONE) { |bitmask, privilege| FLAGS.key?(privilege.to_sym) ? (bitmask | FLAGS[privilege.to_sym]) : bitmask } + end + + def can?(*any_of_privileges) + any_of_privileges.any? { |privilege| in_permissions?(privilege) } + end + + def overrides?(other_role) + other_role.nil? || position > other_role.position + end + + def computed_permissions + # If called on the everyone role, no further computation needed + return permissions if everyone? + + # If called on the nobody role, no permissions are there to be given + return Flags::NONE if nobody? + + # Otherwise, compute permissions based on special conditions + @computed_permissions ||= begin + permissions = self.class.everyone.permissions | self.permissions + + if permissions & FLAGS[:administrator] == FLAGS[:administrator] + Flags::ALL + else + permissions + end + end + end + + private + + def in_permissions?(privilege) + raise ArgumentError, "Unknown privilege: #{privilege}" unless FLAGS.key?(privilege) + computed_permissions & FLAGS[privilege] == FLAGS[privilege] + end + + def set_position + self.position = -1 if everyone? + end + + def validate_permissions_elevation + errors.add(:permissions_as_keys, :elevated) if defined?(@current_account) && @current_account.user_role.computed_permissions & permissions != permissions + end + + def validate_position_elevation + errors.add(:position, :elevated) if defined?(@current_account) && @current_account.user_role.position < position + end + + def validate_dangerous_permissions + errors.add(:permissions_as_keys, :dangerous) if everyone? && Flags::DEFAULT & permissions != permissions + end +end diff --git a/app/policies/account_moderation_note_policy.rb b/app/policies/account_moderation_note_policy.rb index 885411a5b..310ce854c 100644 --- a/app/policies/account_moderation_note_policy.rb +++ b/app/policies/account_moderation_note_policy.rb @@ -2,11 +2,11 @@ class AccountModerationNotePolicy < ApplicationPolicy def create? - staff? + role.can?(:manage_reports) end def destroy? - admin? || owner? + owner? || (role.can?(:manage_reports) && role.overrides?(record.account.user_role)) end private diff --git a/app/policies/account_policy.rb b/app/policies/account_policy.rb index cc23771e7..a744af81d 100644 --- a/app/policies/account_policy.rb +++ b/app/policies/account_policy.rb @@ -2,74 +2,66 @@ class AccountPolicy < ApplicationPolicy def index? - staff? + role.can?(:manage_users) end def show? - staff? + role.can?(:manage_users) end def warn? - staff? && !record.user&.staff? + role.can?(:manage_users, :manage_reports) && role.overrides?(record.user_role) end def suspend? - staff? && !record.user&.staff? && !record.instance_actor? + role.can?(:manage_users, :manage_reports) && role.overrides?(record.user_role) && !record.instance_actor? end def destroy? - record.suspended_temporarily? && admin? + record.suspended_temporarily? && role.can?(:delete_user_data) end def unsuspend? - staff? && record.suspension_origin_local? + role.can?(:manage_users) && record.suspension_origin_local? end def sensitive? - staff? && !record.user&.staff? + role.can?(:manage_users, :manage_reports) && role.overrides?(record.user_role) end def unsensitive? - staff? + role.can?(:manage_users) end def silence? - staff? && !record.user&.staff? + role.can?(:manage_users, :manage_reports) && role.overrides?(record.user_role) end def unsilence? - staff? + role.can?(:manage_users) end def redownload? - admin? + role.can?(:manage_federation) end def remove_avatar? - staff? + role.can?(:manage_users, :manage_reports) && role.overrides?(record.user_role) end def remove_header? - staff? - end - - def subscribe? - admin? - end - - def unsubscribe? - admin? + role.can?(:manage_users, :manage_reports) && role.overrides?(record.user_role) end def memorialize? - admin? && !record.user&.admin? && !record.instance_actor? + role.can?(:delete_user_data) && role.overrides?(record.user_role) && !record.instance_actor? end def unblock_email? - staff? + role.can?(:manage_users) end def review? - staff? + role.can?(:manage_taxonomies) end end diff --git a/app/policies/account_warning_policy.rb b/app/policies/account_warning_policy.rb index 65707dfa7..4f8df7420 100644 --- a/app/policies/account_warning_policy.rb +++ b/app/policies/account_warning_policy.rb @@ -2,7 +2,7 @@ class AccountWarningPolicy < ApplicationPolicy def show? - target? || staff? + target? || role.can?(:manage_appeals) end def appeal? diff --git a/app/policies/account_warning_preset_policy.rb b/app/policies/account_warning_preset_policy.rb index bccbd33ef..59514e951 100644 --- a/app/policies/account_warning_preset_policy.rb +++ b/app/policies/account_warning_preset_policy.rb @@ -2,18 +2,18 @@ class AccountWarningPresetPolicy < ApplicationPolicy def index? - staff? + role.can?(:manage_settings) end def create? - staff? + role.can?(:manage_settings) end def update? - staff? + role.can?(:manage_settings) end def destroy? - staff? + role.can?(:manage_settings) end end diff --git a/app/policies/announcement_policy.rb b/app/policies/announcement_policy.rb index 0a4e4575c..b5dc6a18a 100644 --- a/app/policies/announcement_policy.rb +++ b/app/policies/announcement_policy.rb @@ -2,18 +2,18 @@ class AnnouncementPolicy < ApplicationPolicy def index? - staff? + role.can?(:manage_announcements) end def create? - admin? + role.can?(:manage_announcements) end def update? - admin? + role.can?(:manage_announcements) end def destroy? - admin? + role.can?(:manage_announcements) end end diff --git a/app/policies/appeal_policy.rb b/app/policies/appeal_policy.rb index a25187172..7466b334b 100644 --- a/app/policies/appeal_policy.rb +++ b/app/policies/appeal_policy.rb @@ -2,12 +2,14 @@ class AppealPolicy < ApplicationPolicy def index? - staff? + role.can?(:manage_appeals) end def approve? - record.pending? && staff? + record.pending? && role.can?(:manage_appeals) end - alias reject? approve? + def reject? + record.pending? && role.can?(:manage_appeals) + end end diff --git a/app/policies/application_policy.rb b/app/policies/application_policy.rb index d1de5e81a..163b81e9e 100644 --- a/app/policies/application_policy.rb +++ b/app/policies/application_policy.rb @@ -8,8 +8,6 @@ class ApplicationPolicy @record = record end - delegate :admin?, :moderator?, :staff?, to: :current_user, allow_nil: true - private def current_user @@ -19,4 +17,8 @@ class ApplicationPolicy def user_signed_in? !current_user.nil? end + + def role + current_user&.role || UserRole.nobody + end end diff --git a/app/policies/audit_log_policy.rb b/app/policies/audit_log_policy.rb new file mode 100644 index 000000000..f78aa9a8e --- /dev/null +++ b/app/policies/audit_log_policy.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class AuditLogPolicy < ApplicationPolicy + def index? + role.can?(:view_audit_log) + end +end diff --git a/app/policies/custom_emoji_policy.rb b/app/policies/custom_emoji_policy.rb index a8c3cbc73..18de71c19 100644 --- a/app/policies/custom_emoji_policy.rb +++ b/app/policies/custom_emoji_policy.rb @@ -2,30 +2,30 @@ class CustomEmojiPolicy < ApplicationPolicy def index? - staff? + role.can?(:manage_custom_emojis) end def create? - admin? + role.can?(:manage_custom_emojis) end def update? - admin? + role.can?(:manage_custom_emojis) end def copy? - admin? + role.can?(:manage_custom_emojis) end def enable? - staff? + role.can?(:manage_custom_emojis) end def disable? - staff? + role.can?(:manage_custom_emojis) end def destroy? - admin? + role.can?(:manage_custom_emojis) end end diff --git a/app/policies/dashboard_policy.rb b/app/policies/dashboard_policy.rb new file mode 100644 index 000000000..3df1c3088 --- /dev/null +++ b/app/policies/dashboard_policy.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class DashboardPolicy < ApplicationPolicy + def index? + role.can?(:view_dashboard) + end +end diff --git a/app/policies/delivery_policy.rb b/app/policies/delivery_policy.rb index 24d06c168..f6ba2eb18 100644 --- a/app/policies/delivery_policy.rb +++ b/app/policies/delivery_policy.rb @@ -2,14 +2,14 @@ class DeliveryPolicy < ApplicationPolicy def clear_delivery_errors? - admin? + role.can?(:manage_federation) end def restart_delivery? - admin? + role.can?(:manage_federation) end def stop_delivery? - admin? + role.can?(:manage_federation) end end diff --git a/app/policies/domain_allow_policy.rb b/app/policies/domain_allow_policy.rb index 7a5b5d780..45c797ecd 100644 --- a/app/policies/domain_allow_policy.rb +++ b/app/policies/domain_allow_policy.rb @@ -2,18 +2,18 @@ class DomainAllowPolicy < ApplicationPolicy def index? - admin? + role.can?(:manage_federation) end def show? - admin? + role.can?(:manage_federation) end def create? - admin? + role.can?(:manage_federation) end def destroy? - admin? + role.can?(:manage_federation) end end diff --git a/app/policies/domain_block_policy.rb b/app/policies/domain_block_policy.rb index 543259cce..0fea2e035 100644 --- a/app/policies/domain_block_policy.rb +++ b/app/policies/domain_block_policy.rb @@ -2,22 +2,22 @@ class DomainBlockPolicy < ApplicationPolicy def index? - admin? + role.can?(:manage_federation) end def show? - admin? + role.can?(:manage_federation) end def create? - admin? + role.can?(:manage_federation) end def update? - admin? + role.can?(:manage_federation) end def destroy? - admin? + role.can?(:manage_federation) end end diff --git a/app/policies/email_domain_block_policy.rb b/app/policies/email_domain_block_policy.rb index 5a75ee183..1a0ddfa87 100644 --- a/app/policies/email_domain_block_policy.rb +++ b/app/policies/email_domain_block_policy.rb @@ -2,14 +2,14 @@ class EmailDomainBlockPolicy < ApplicationPolicy def index? - admin? + role.can?(:manage_blocks) end def create? - admin? + role.can?(:manage_blocks) end def destroy? - admin? + role.can?(:manage_blocks) end end diff --git a/app/policies/follow_recommendation_policy.rb b/app/policies/follow_recommendation_policy.rb index 68cd0e547..9245733ea 100644 --- a/app/policies/follow_recommendation_policy.rb +++ b/app/policies/follow_recommendation_policy.rb @@ -2,14 +2,14 @@ class FollowRecommendationPolicy < ApplicationPolicy def show? - staff? + role.can?(:manage_taxonomies) end def suppress? - staff? + role.can?(:manage_taxonomies) end def unsuppress? - staff? + role.can?(:manage_taxonomies) end end diff --git a/app/policies/instance_policy.rb b/app/policies/instance_policy.rb index 801ca162e..b15e123fe 100644 --- a/app/policies/instance_policy.rb +++ b/app/policies/instance_policy.rb @@ -2,14 +2,14 @@ class InstancePolicy < ApplicationPolicy def index? - admin? + role.can?(:manage_federation) end def show? - admin? + role.can?(:manage_federation) end def destroy? - admin? + role.can?(:manage_federation) end end diff --git a/app/policies/invite_policy.rb b/app/policies/invite_policy.rb index 14236f78b..24eacd08e 100644 --- a/app/policies/invite_policy.rb +++ b/app/policies/invite_policy.rb @@ -2,19 +2,19 @@ class InvitePolicy < ApplicationPolicy def index? - staff? + role.can?(:manage_invites) end def create? - min_required_role? + role.can?(:invite_users) end def deactivate_all? - admin? + role.can?(:manage_invites) end def destroy? - owner? || (Setting.min_invite_role == 'admin' ? admin? : staff?) + owner? || role.can?(:manage_invites) end private @@ -22,8 +22,4 @@ class InvitePolicy < ApplicationPolicy def owner? record.user_id == current_user&.id end - - def min_required_role? - current_user&.role?(Setting.min_invite_role) - end end diff --git a/app/policies/ip_block_policy.rb b/app/policies/ip_block_policy.rb index 34dbd746a..1abc97ad8 100644 --- a/app/policies/ip_block_policy.rb +++ b/app/policies/ip_block_policy.rb @@ -2,14 +2,14 @@ class IpBlockPolicy < ApplicationPolicy def index? - admin? + role.can?(:manage_blocks) end def create? - admin? + role.can?(:manage_blocks) end def destroy? - admin? + role.can?(:manage_blocks) end end diff --git a/app/policies/preview_card_policy.rb b/app/policies/preview_card_policy.rb index 0410987e4..a7bb41634 100644 --- a/app/policies/preview_card_policy.rb +++ b/app/policies/preview_card_policy.rb @@ -2,10 +2,10 @@ class PreviewCardPolicy < ApplicationPolicy def index? - staff? + role.can?(:manage_taxonomies) end def review? - staff? + role.can?(:manage_taxonomies) end end diff --git a/app/policies/preview_card_provider_policy.rb b/app/policies/preview_card_provider_policy.rb index 44d2ad5cf..131ccb5dd 100644 --- a/app/policies/preview_card_provider_policy.rb +++ b/app/policies/preview_card_provider_policy.rb @@ -2,10 +2,10 @@ class PreviewCardProviderPolicy < ApplicationPolicy def index? - staff? + role.can?(:manage_taxonomies) end def review? - staff? + role.can?(:manage_taxonomies) end end diff --git a/app/policies/relay_policy.rb b/app/policies/relay_policy.rb index bd75e2197..4305bcfaa 100644 --- a/app/policies/relay_policy.rb +++ b/app/policies/relay_policy.rb @@ -2,6 +2,6 @@ class RelayPolicy < ApplicationPolicy def update? - admin? + role.can?(:manage_federation) end end diff --git a/app/policies/report_note_policy.rb b/app/policies/report_note_policy.rb index 694bc096b..dc31416e8 100644 --- a/app/policies/report_note_policy.rb +++ b/app/policies/report_note_policy.rb @@ -2,11 +2,11 @@ class ReportNotePolicy < ApplicationPolicy def create? - staff? + role.can?(:manage_reports) end def destroy? - admin? || owner? + owner? || (role.can?(:manage_reports) && role.overrides?(record.account.user_role)) end private diff --git a/app/policies/report_policy.rb b/app/policies/report_policy.rb index 95b5c30c8..c9f7639bd 100644 --- a/app/policies/report_policy.rb +++ b/app/policies/report_policy.rb @@ -2,14 +2,14 @@ class ReportPolicy < ApplicationPolicy def update? - staff? + role.can?(:manage_reports) end def index? - staff? + role.can?(:manage_reports) end def show? - staff? + role.can?(:manage_reports) end end diff --git a/app/policies/rule_policy.rb b/app/policies/rule_policy.rb index 6a4def009..51b2a6977 100644 --- a/app/policies/rule_policy.rb +++ b/app/policies/rule_policy.rb @@ -2,18 +2,18 @@ class RulePolicy < ApplicationPolicy def index? - staff? + role.can?(:manage_rules) end def create? - admin? + role.can?(:manage_rules) end def update? - admin? + role.can?(:manage_rules) end def destroy? - admin? + role.can?(:manage_rules) end end diff --git a/app/policies/settings_policy.rb b/app/policies/settings_policy.rb index 874f97bab..2b052af27 100644 --- a/app/policies/settings_policy.rb +++ b/app/policies/settings_policy.rb @@ -2,14 +2,14 @@ class SettingsPolicy < ApplicationPolicy def update? - admin? + role.can?(:manage_settings) end def show? - admin? + role.can?(:manage_settings) end def destroy? - admin? + role.can?(:manage_settings) end end diff --git a/app/policies/status_policy.rb b/app/policies/status_policy.rb index 400f1ec79..2f48b5d70 100644 --- a/app/policies/status_policy.rb +++ b/app/policies/status_policy.rb @@ -8,7 +8,7 @@ class StatusPolicy < ApplicationPolicy end def index? - staff? + role.can?(:manage_reports, :manage_users) end def show? @@ -32,17 +32,17 @@ class StatusPolicy < ApplicationPolicy end def destroy? - staff? || owned? + role.can?(:manage_reports) || owned? end alias unreblog? destroy? def update? - staff? || owned? + role.can?(:manage_reports) || owned? end def review? - staff? + role.can?(:manage_taxonomies) end private diff --git a/app/policies/tag_policy.rb b/app/policies/tag_policy.rb index bdfcec0c9..bb1d37d6c 100644 --- a/app/policies/tag_policy.rb +++ b/app/policies/tag_policy.rb @@ -2,18 +2,18 @@ class TagPolicy < ApplicationPolicy def index? - staff? + role.can?(:manage_taxonomies) end def show? - staff? + role.can?(:manage_taxonomies) end def update? - staff? + role.can?(:manage_taxonomies) end def review? - staff? + role.can?(:manage_taxonomies) end end diff --git a/app/policies/user_policy.rb b/app/policies/user_policy.rb index 140905e1f..6751b8b8f 100644 --- a/app/policies/user_policy.rb +++ b/app/policies/user_policy.rb @@ -2,52 +2,38 @@ class UserPolicy < ApplicationPolicy def reset_password? - staff? && !record.staff? + role.can?(:manage_user_access) && role.overrides?(record.role) end def change_email? - staff? && !record.staff? + role.can?(:manage_user_access) && role.overrides?(record.role) end def disable_2fa? - admin? && !record.staff? + role.can?(:manage_user_access) && role.overrides?(record.role) + end + + def change_role? + role.can?(:manage_roles) && role.overrides?(record.role) end def confirm? - staff? && !record.confirmed? + role.can?(:manage_user_access) && !record.confirmed? end def enable? - staff? + role.can?(:manage_users) end def approve? - staff? && !record.approved? + role.can?(:manage_users) && !record.approved? end def reject? - staff? && !record.approved? + role.can?(:manage_users) && !record.approved? end def disable? - staff? && !record.admin? - end - - def promote? - admin? && promotable? - end - - def demote? - admin? && !record.admin? && demoteable? - end - - private - - def promotable? - record.approved? && (!record.staff? || !record.admin?) - end - - def demoteable? - record.staff? + role.can?(:manage_users) && role.overrides?(record.role) end end diff --git a/app/policies/user_role_policy.rb b/app/policies/user_role_policy.rb new file mode 100644 index 000000000..7019637fc --- /dev/null +++ b/app/policies/user_role_policy.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class UserRolePolicy < ApplicationPolicy + def index? + role.can?(:manage_roles) + end + + def create? + role.can?(:manage_roles) + end + + def update? + role.can?(:manage_roles) && role.overrides?(record) + end + + def destroy? + !record.everyone? && role.can?(:manage_roles) && role.overrides?(record) && role.id != record.id + end +end diff --git a/app/policies/webhook_policy.rb b/app/policies/webhook_policy.rb index 2c55703a1..a2199a333 100644 --- a/app/policies/webhook_policy.rb +++ b/app/policies/webhook_policy.rb @@ -2,34 +2,34 @@ class WebhookPolicy < ApplicationPolicy def index? - admin? + role.can?(:manage_webhooks) end def create? - admin? + role.can?(:manage_webhooks) end def show? - admin? + role.can?(:manage_webhooks) end def update? - admin? + role.can?(:manage_webhooks) end def enable? - admin? + role.can?(:manage_webhooks) end def disable? - admin? + role.can?(:manage_webhooks) end def rotate_secret? - admin? + role.can?(:manage_webhooks) end def destroy? - admin? + role.can?(:manage_webhooks) end end diff --git a/app/presenters/initial_state_presenter.rb b/app/presenters/initial_state_presenter.rb index 06482935c..129ea2a46 100644 --- a/app/presenters/initial_state_presenter.rb +++ b/app/presenters/initial_state_presenter.rb @@ -3,4 +3,8 @@ class InitialStatePresenter < ActiveModelSerializers::Model attributes :settings, :push_subscription, :token, :current_account, :admin, :text, :visibility + + def role + current_account&.user_role + end end diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb index 34190a91d..5eda87757 100644 --- a/app/serializers/initial_state_serializer.rb +++ b/app/serializers/initial_state_serializer.rb @@ -6,6 +6,7 @@ class InitialStateSerializer < ActiveModel::Serializer :languages has_one :push_subscription, serializer: REST::WebPushSubscriptionSerializer + has_one :role, serializer: REST::RoleSerializer def meta store = { @@ -19,7 +20,6 @@ class InitialStateSerializer < ActiveModel::Serializer repository: Mastodon::Version.repository, source_url: Mastodon::Version.source_url, version: Mastodon::Version.to_s, - invites_enabled: Setting.min_invite_role == 'user', limited_federation_mode: Rails.configuration.x.whitelist_mode, mascot: instance_presenter.mascot&.file&.url, profile_directory: Setting.profile_directory, @@ -39,7 +39,6 @@ class InitialStateSerializer < ActiveModel::Serializer store[:advanced_layout] = object.current_account.user.setting_advanced_layout store[:use_blurhash] = object.current_account.user.setting_use_blurhash store[:use_pending_items] = object.current_account.user.setting_use_pending_items - store[:is_staff] = object.current_account.user.staff? store[:trends] = Setting.trends && object.current_account.user.setting_trends store[:crop_images] = object.current_account.user.setting_crop_images else diff --git a/app/serializers/rest/credential_account_serializer.rb b/app/serializers/rest/credential_account_serializer.rb index be0d763dc..27e1db207 100644 --- a/app/serializers/rest/credential_account_serializer.rb +++ b/app/serializers/rest/credential_account_serializer.rb @@ -3,6 +3,8 @@ class REST::CredentialAccountSerializer < REST::AccountSerializer attributes :source + has_one :role, serializer: REST::RoleSerializer + def source user = object.user @@ -15,4 +17,8 @@ class REST::CredentialAccountSerializer < REST::AccountSerializer follow_requests_count: FollowRequest.where(target_account: object).limit(40).count, } end + + def role + object.user_role + end end diff --git a/app/serializers/rest/instance_serializer.rb b/app/serializers/rest/instance_serializer.rb index f5dec0dac..9cc245422 100644 --- a/app/serializers/rest/instance_serializer.rb +++ b/app/serializers/rest/instance_serializer.rb @@ -93,7 +93,7 @@ class REST::InstanceSerializer < ActiveModel::Serializer end def invites_enabled - Setting.min_invite_role == 'user' + UserRole.everyone.can?(:invite_users) end private diff --git a/app/serializers/rest/role_serializer.rb b/app/serializers/rest/role_serializer.rb new file mode 100644 index 000000000..5b81c6e04 --- /dev/null +++ b/app/serializers/rest/role_serializer.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class REST::RoleSerializer < ActiveModel::Serializer + attributes :id, :name, :permissions, :color, :highlighted + + def id + object.id.to_s + end + + def permissions + object.computed_permissions.to_s + end +end diff --git a/app/services/account_search_service.rb b/app/services/account_search_service.rb index 6fe4b6593..4dcae20eb 100644 --- a/app/services/account_search_service.rb +++ b/app/services/account_search_service.rb @@ -61,11 +61,11 @@ class AccountSearchService < BaseService end def advanced_search_results - Account.advanced_search_for(terms_for_query, account, limit_for_non_exact_results, options[:following], offset) + Account.advanced_search_for(terms_for_query, account, limit: limit_for_non_exact_results, following: options[:following], offset: offset) end def simple_search_results - Account.search_for(terms_for_query, limit_for_non_exact_results, offset) + Account.search_for(terms_for_query, limit: limit_for_non_exact_results, offset: offset) end def from_elasticsearch diff --git a/app/services/appeal_service.rb b/app/services/appeal_service.rb index cef9be05f..399a053d6 100644 --- a/app/services/appeal_service.rb +++ b/app/services/appeal_service.rb @@ -22,7 +22,7 @@ class AppealService < BaseService end def notify_staff! - User.staff.includes(:account).each do |u| + User.those_who_can(:manage_appeals).includes(:account).each do |u| AdminMailer.new_appeal(u.account, @appeal).deliver_later if u.allows_appeal_emails? end end diff --git a/app/services/bootstrap_timeline_service.rb b/app/services/bootstrap_timeline_service.rb index a02e55a6d..126c0fa2e 100644 --- a/app/services/bootstrap_timeline_service.rb +++ b/app/services/bootstrap_timeline_service.rb @@ -17,7 +17,7 @@ class BootstrapTimelineService < BaseService end def notify_staff! - User.staff.includes(:account).find_each do |user| + User.those_who_can(:manage_users).includes(:account).find_each do |user| LocalNotificationWorker.perform_async(user.account_id, @source_account.id, 'Account', 'admin.sign_up') end end diff --git a/app/services/notify_service.rb b/app/services/notify_service.rb index d30b33876..c7454fc60 100644 --- a/app/services/notify_service.rb +++ b/app/services/notify_service.rb @@ -76,7 +76,7 @@ class NotifyService < BaseService end def from_staff? - @notification.from_account.local? && @notification.from_account.user.present? && @notification.from_account.user.staff? + @notification.from_account.local? && @notification.from_account.user.present? && @notification.from_account.user_role&.overrides?(@recipient.user_role) end def optional_non_following_and_direct? diff --git a/app/services/report_service.rb b/app/services/report_service.rb index bd67ff8d3..8c92cf334 100644 --- a/app/services/report_service.rb +++ b/app/services/report_service.rb @@ -38,7 +38,7 @@ class ReportService < BaseService def notify_staff! return if @report.unresolved_siblings? - User.staff.includes(:account).each do |u| + User.those_who_can(:manage_reports).includes(:account).each do |u| LocalNotificationWorker.perform_async(u.account_id, @report.id, 'Report', 'admin.report') AdminMailer.new_report(u.account, @report).deliver_later if u.allows_report_emails? end diff --git a/app/views/admin/accounts/index.html.haml b/app/views/admin/accounts/index.html.haml index 60e4894d0..7560fac7a 100644 --- a/app/views/admin/accounts/index.html.haml +++ b/app/views/admin/accounts/index.html.haml @@ -4,45 +4,36 @@ - content_for :header_tags do = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' -.filters - .filter-subset - %strong= t('admin.accounts.location.title') - %ul - %li= filter_link_to t('generic.all'), origin: nil - %li= filter_link_to t('admin.accounts.location.local'), origin: 'local' - %li= filter_link_to t('admin.accounts.location.remote'), origin: 'remote' - .filter-subset - %strong= t('admin.accounts.moderation.title') - %ul - %li= filter_link_to t('generic.all'), status: nil - %li= filter_link_to t('admin.accounts.moderation.active'), status: 'active' - %li= filter_link_to t('admin.accounts.moderation.suspended'), status: 'suspended' - %li= filter_link_to safe_join([t('admin.accounts.moderation.pending'), "(#{number_with_delimiter(User.pending.count)})"], ' '), status: 'pending' - .filter-subset - %strong= t('admin.accounts.role') - %ul - %li= filter_link_to t('admin.accounts.moderation.all'), permissions: nil - %li= filter_link_to t('admin.accounts.roles.staff'), permissions: 'staff' - .filter-subset - %strong= t 'generic.order_by' - %ul - %li= filter_link_to t('relationships.most_recent'), order: nil - %li= filter_link_to t('relationships.last_active'), order: 'active' - = form_tag admin_accounts_url, method: 'GET', class: 'simple_form' do - .fields-group - - (AccountFilter::KEYS - %i(origin status permissions)).each do |key| - - if params[key].present? - = hidden_field_tag key, params[key] + .filters + .filter-subset.filter-subset--with-select + %strong= t('admin.accounts.location.title') + .input.select.optional + = select_tag :origin, options_for_select([[t('admin.accounts.location.local'), 'local'], [t('admin.accounts.location.remote'), 'remote']], params[:origin]), prompt: I18n.t('generic.all') + .filter-subset.filter-subset--with-select + %strong= t('admin.accounts.moderation.title') + .input.select.optional + = select_tag :status, options_for_select([[t('admin.accounts.moderation.active'), 'active'], [t('admin.accounts.moderation.silenced'), 'silenced'], [t('admin.accounts.moderation.suspended'), 'suspended'], [safe_join([t('admin.accounts.moderation.pending'), "(#{number_with_delimiter(User.pending.count)})"], ' '), 'pending']], params[:status]), prompt: I18n.t('generic.all') + .filter-subset.filter-subset--with-select + %strong= t('admin.accounts.role') + .input.select.optional + = select_tag :role_ids, options_from_collection_for_select(UserRole.assignable, :id, :name, params[:role_ids]), prompt: I18n.t('admin.accounts.moderation.all') + .filter-subset.filter-subset--with-select + %strong= t 'generic.order_by' + .input.select + = select_tag :order, options_for_select([[t('relationships.most_recent'), nil], [t('relationships.last_active'), 'active']], params[:order]) + .fields-group - %i(username by_domain display_name email ip).each do |key| - unless key == :by_domain && params[:origin] != 'remote' .input.string.optional = text_field_tag key, params[key], class: 'string optional', placeholder: I18n.t("admin.accounts.#{key}") - .actions - %button.button= t('admin.accounts.search') - = link_to t('admin.accounts.reset'), admin_accounts_path, class: 'button negative' + .actions + %button.button= t('admin.accounts.search') + = link_to t('admin.accounts.reset'), admin_accounts_path, class: 'button negative' + +%hr.spacer/ = form_for(@form, url: batch_admin_accounts_path) do |f| = hidden_field_tag :page, params[:page] || 1 diff --git a/app/views/admin/accounts/show.html.haml b/app/views/admin/accounts/show.html.haml index a69832b04..dc3b35956 100644 --- a/app/views/admin/accounts/show.html.haml +++ b/app/views/admin/accounts/show.html.haml @@ -92,10 +92,13 @@ %tr %th= t('admin.accounts.role') - %td= t("admin.accounts.roles.#{@account.user&.role}") %td - = table_link_to 'angle-double-up', t('admin.accounts.promote'), promote_admin_account_role_path(@account.id), method: :post, data: { confirm: t('admin.accounts.are_you_sure') } if can?(:promote, @account.user) - = table_link_to 'angle-double-down', t('admin.accounts.demote'), demote_admin_account_role_path(@account.id), method: :post, data: { confirm: t('admin.accounts.are_you_sure') } if can?(:demote, @account.user) + - if @account.user_role&.everyone? + = t('admin.accounts.no_role_assigned') + - else + = @account.user_role&.name + %td + = table_link_to 'vcard', t('admin.accounts.change_role.label'), admin_user_role_path(@account.user) if can?(:change_role, @account.user) %tr %th{ rowspan: can?(:create, :email_domain_block) ? 3 : 2 }= t('admin.accounts.email') diff --git a/app/views/admin/action_logs/index.html.haml b/app/views/admin/action_logs/index.html.haml index f611bfe9d..d8b7132f5 100644 --- a/app/views/admin/action_logs/index.html.haml +++ b/app/views/admin/action_logs/index.html.haml @@ -11,7 +11,7 @@ .filter-subset.filter-subset--with-select %strong= t('admin.action_logs.filter_by_user') .input.select.optional - = select_tag :account_id, options_from_collection_for_select(Account.joins(:user).merge(User.staff), :id, :username, params[:account_id]), prompt: I18n.t('admin.accounts.moderation.all') + = select_tag :account_id, options_from_collection_for_select(@auditable_accounts, :id, :username, params[:account_id]), prompt: I18n.t('admin.accounts.moderation.all') .filter-subset.filter-subset--with-select %strong= t('admin.action_logs.filter_by_action') diff --git a/app/views/admin/instances/show.html.haml b/app/views/admin/instances/show.html.haml index ef4de602d..ab290912e 100644 --- a/app/views/admin/instances/show.html.haml +++ b/app/views/admin/instances/show.html.haml @@ -4,32 +4,33 @@ - content_for :header_tags do = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' -- content_for :heading_actions do - = l(@time_period.first) - = ' - ' - = l(@time_period.last) +- if current_user.can?(:view_dashboard) + - content_for :heading_actions do + = l(@time_period.first) + = ' - ' + = l(@time_period.last) -%p - = fa_icon 'info fw' - = t('admin.instances.totals_time_period_hint_html') + %p + = fa_icon 'info fw' + = t('admin.instances.totals_time_period_hint_html') -.dashboard - .dashboard__item - = react_admin_component :counter, measure: 'instance_accounts', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, label: t('admin.instances.dashboard.instance_accounts_measure'), href: admin_accounts_path(origin: 'remote', by_domain: @instance.domain) - .dashboard__item - = react_admin_component :counter, measure: 'instance_statuses', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, label: t('admin.instances.dashboard.instance_statuses_measure') - .dashboard__item - = react_admin_component :counter, measure: 'instance_media_attachments', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, label: t('admin.instances.dashboard.instance_media_attachments_measure') - .dashboard__item - = react_admin_component :counter, measure: 'instance_follows', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, label: t('admin.instances.dashboard.instance_follows_measure') - .dashboard__item - = react_admin_component :counter, measure: 'instance_followers', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, label: t('admin.instances.dashboard.instance_followers_measure') - .dashboard__item - = react_admin_component :counter, measure: 'instance_reports', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, label: t('admin.instances.dashboard.instance_reports_measure'), href: admin_reports_path(by_target_domain: @instance.domain) - .dashboard__item - = react_admin_component :dimension, dimension: 'instance_accounts', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, limit: 8, label: t('admin.instances.dashboard.instance_accounts_dimension') - .dashboard__item - = react_admin_component :dimension, dimension: 'instance_languages', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, limit: 8, label: t('admin.instances.dashboard.instance_languages_dimension') + .dashboard + .dashboard__item + = react_admin_component :counter, measure: 'instance_accounts', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, label: t('admin.instances.dashboard.instance_accounts_measure'), href: admin_accounts_path(origin: 'remote', by_domain: @instance.domain) + .dashboard__item + = react_admin_component :counter, measure: 'instance_statuses', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, label: t('admin.instances.dashboard.instance_statuses_measure') + .dashboard__item + = react_admin_component :counter, measure: 'instance_media_attachments', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, label: t('admin.instances.dashboard.instance_media_attachments_measure') + .dashboard__item + = react_admin_component :counter, measure: 'instance_follows', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, label: t('admin.instances.dashboard.instance_follows_measure') + .dashboard__item + = react_admin_component :counter, measure: 'instance_followers', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, label: t('admin.instances.dashboard.instance_followers_measure') + .dashboard__item + = react_admin_component :counter, measure: 'instance_reports', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, label: t('admin.instances.dashboard.instance_reports_measure'), href: admin_reports_path(by_target_domain: @instance.domain) + .dashboard__item + = react_admin_component :dimension, dimension: 'instance_accounts', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, limit: 8, label: t('admin.instances.dashboard.instance_accounts_dimension') + .dashboard__item + = react_admin_component :dimension, dimension: 'instance_languages', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, limit: 8, label: t('admin.instances.dashboard.instance_languages_dimension') %hr.spacer/ diff --git a/app/views/admin/roles/_form.html.haml b/app/views/admin/roles/_form.html.haml new file mode 100644 index 000000000..68607ce68 --- /dev/null +++ b/app/views/admin/roles/_form.html.haml @@ -0,0 +1,37 @@ += simple_form_for @role, url: @role.new_record? ? admin_roles_path : admin_role_path(@role) do |f| + = render 'shared/error_messages', object: @role + + - if @role.everyone? + .flash-message.info + = t('admin.roles.everyone_full_description_html') + - else + .fields-group + = f.input :name, wrapper: :with_label + + .fields-group + = f.input :position, wrapper: :with_label + + .fields-group + = f.input :color, wrapper: :with_label, input_html: { placeholder: '#000000' } + + %hr.spacer/ + + .fields-group + = f.input :highlighted, wrapper: :with_label + + %hr.spacer/ + + .field-group + .input.with_block_label + %label= t('simple_form.labels.user_role.permissions_as_keys') + %span.hint= t('simple_form.hints.user_role.permissions_as_keys') + + - (@role.everyone? ? UserRole::Flags::CATEGORIES.slice(:invites) : UserRole::Flags::CATEGORIES).each do |category, permissions| + %h4= t(category, scope: 'admin.roles.categories') + + = f.input :permissions_as_keys, collection: permissions, wrapper: :with_block_label, include_blank: false, label_method: lambda { |privilege| safe_join([t("admin.roles.privileges.#{privilege}"), content_tag(:span, t("admin.roles.privileges.#{privilege}_description"), class: 'hint')]) }, required: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', label: false, hint: false + + %hr.spacer/ + + .actions + = f.button :button, @role.new_record? ? t('admin.roles.add_new') : t('generic.save_changes'), type: :submit diff --git a/app/views/admin/roles/_role.html.haml b/app/views/admin/roles/_role.html.haml new file mode 100644 index 000000000..6804f4f15 --- /dev/null +++ b/app/views/admin/roles/_role.html.haml @@ -0,0 +1,18 @@ +.announcements-list__item + = link_to edit_admin_role_path(role), class: 'announcements-list__item__title' do + %span.user-role{ class: "user-role-#{role.id}" } + = fa_icon 'users fw' + + - if role.everyone? + = t('admin.roles.everyone') + - else + = role.name + + .announcements-list__item__action-bar + .announcements-list__item__meta + - if role.everyone? + = t('admin.roles.everyone_full_description_html') + - else + = link_to t('admin.roles.assigned_users', count: role.users.count), admin_accounts_path(role_id: role.id) + • + %abbr{ title: role.permissions_as_keys.map { |privilege| I18n.t("admin.roles.privileges.#{privilege}") }.join(', ') }= t('admin.roles.permissions_count', count: role.permissions_as_keys.size) diff --git a/app/views/admin/roles/edit.html.haml b/app/views/admin/roles/edit.html.haml new file mode 100644 index 000000000..659ccb8dc --- /dev/null +++ b/app/views/admin/roles/edit.html.haml @@ -0,0 +1,8 @@ +- content_for :page_title do + = t('admin.roles.edit', name: @role.everyone? ? t('admin.roles.everyone') : @role.name) + +- content_for :heading_actions do + = link_to t('admin.roles.delete'), admin_role_path(@role), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button button--destructive' if can?(:destroy, @role) + += render partial: 'form' + diff --git a/app/views/admin/roles/index.html.haml b/app/views/admin/roles/index.html.haml new file mode 100644 index 000000000..4f6c511b4 --- /dev/null +++ b/app/views/admin/roles/index.html.haml @@ -0,0 +1,17 @@ +- content_for :page_title do + = t('admin.roles.title') + +- content_for :heading_actions do + = link_to t('admin.roles.add_new'), new_admin_role_path, class: 'button' if can?(:create, :user_role) + +%p= t('admin.roles.description_html') + +%hr.spacer/ + +.applications-list + = render partial: 'role', collection: @roles.select(&:everyone?) + +%hr.spacer/ + +.applications-list + = render partial: 'role', collection: @roles.reject(&:everyone?) diff --git a/app/views/admin/roles/new.html.haml b/app/views/admin/roles/new.html.haml new file mode 100644 index 000000000..821079271 --- /dev/null +++ b/app/views/admin/roles/new.html.haml @@ -0,0 +1,4 @@ +- content_for :page_title do + = t('admin.roles.add_new') + += render partial: 'form' diff --git a/app/views/admin/settings/edit.html.haml b/app/views/admin/settings/edit.html.haml index 33bfc43d3..d7896bbc0 100644 --- a/app/views/admin/settings/edit.html.haml +++ b/app/views/admin/settings/edit.html.haml @@ -61,9 +61,6 @@ .fields-group = f.input :show_known_fediverse_at_about_page, as: :boolean, wrapper: :with_label, label: t('admin.settings.show_known_fediverse_at_about_page.title'), hint: t('admin.settings.show_known_fediverse_at_about_page.desc_html') - .fields-group - = f.input :show_staff_badge, as: :boolean, wrapper: :with_label, label: t('admin.settings.show_staff_badge.title'), hint: t('admin.settings.show_staff_badge.desc_html') - .fields-group = f.input :open_deletion, as: :boolean, wrapper: :with_label, label: t('admin.settings.registrations.deletion.title'), hint: t('admin.settings.registrations.deletion.desc_html') @@ -91,9 +88,6 @@ %hr.spacer/ - .fields-group - = f.input :min_invite_role, wrapper: :with_label, collection: %i(disabled user moderator admin), label: t('admin.settings.registrations.min_invite_role.title'), label_method: lambda { |role| role == :disabled ? t('admin.settings.registrations.min_invite_role.disabled') : t("admin.accounts.roles.#{role}") }, include_blank: false, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li' - .fields-row .fields-row__column.fields-row__column-6.fields-group = f.input :show_domain_blocks, wrapper: :with_label, collection: %i(disabled users all), label: t('admin.settings.domain_blocks.title'), label_method: lambda { |value| t("admin.settings.domain_blocks.#{value}") }, include_blank: false, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li' diff --git a/app/views/admin/tags/show.html.haml b/app/views/admin/tags/show.html.haml index df72bd5f5..fd9acce4a 100644 --- a/app/views/admin/tags/show.html.haml +++ b/app/views/admin/tags/show.html.haml @@ -4,49 +4,50 @@ - content_for :page_title do = "##{@tag.name}" -- content_for :heading_actions do - = l(@time_period.first) - = ' - ' - = l(@time_period.last) +- if current_user.can?(:view_dashboard) + - content_for :heading_actions do + = l(@time_period.first) + = ' - ' + = l(@time_period.last) -.dashboard - .dashboard__item - = react_admin_component :counter, measure: 'tag_accounts', start_at: @time_period.first, end_at: @time_period.last, params: { id: @tag.id }, label: t('admin.trends.tags.dashboard.tag_accounts_measure'), href: tag_url(@tag), target: '_blank' - .dashboard__item - = react_admin_component :counter, measure: 'tag_uses', start_at: @time_period.first, end_at: @time_period.last, params: { id: @tag.id }, label: t('admin.trends.tags.dashboard.tag_uses_measure') - .dashboard__item - = react_admin_component :counter, measure: 'tag_servers', start_at: @time_period.first, end_at: @time_period.last, params: { id: @tag.id }, label: t('admin.trends.tags.dashboard.tag_servers_measure') - .dashboard__item - = react_admin_component :dimension, dimension: 'tag_servers', start_at: @time_period.first, end_at: @time_period.last, params: { id: @tag.id }, limit: 8, label: t('admin.trends.tags.dashboard.tag_servers_dimension') - .dashboard__item - = react_admin_component :dimension, dimension: 'tag_languages', start_at: @time_period.first, end_at: @time_period.last, params: { id: @tag.id }, limit: 8, label: t('admin.trends.tags.dashboard.tag_languages_dimension') - .dashboard__item - = link_to admin_tag_path(@tag.id), class: ['dashboard__quick-access', @tag.usable? ? 'positive' : 'negative'] do - - if @tag.usable? - %span= t('admin.trends.tags.usable') - = fa_icon 'check fw' - - else - %span= t('admin.trends.tags.not_usable') - = fa_icon 'lock fw' + .dashboard + .dashboard__item + = react_admin_component :counter, measure: 'tag_accounts', start_at: @time_period.first, end_at: @time_period.last, params: { id: @tag.id }, label: t('admin.trends.tags.dashboard.tag_accounts_measure'), href: tag_url(@tag), target: '_blank' + .dashboard__item + = react_admin_component :counter, measure: 'tag_uses', start_at: @time_period.first, end_at: @time_period.last, params: { id: @tag.id }, label: t('admin.trends.tags.dashboard.tag_uses_measure') + .dashboard__item + = react_admin_component :counter, measure: 'tag_servers', start_at: @time_period.first, end_at: @time_period.last, params: { id: @tag.id }, label: t('admin.trends.tags.dashboard.tag_servers_measure') + .dashboard__item + = react_admin_component :dimension, dimension: 'tag_servers', start_at: @time_period.first, end_at: @time_period.last, params: { id: @tag.id }, limit: 8, label: t('admin.trends.tags.dashboard.tag_servers_dimension') + .dashboard__item + = react_admin_component :dimension, dimension: 'tag_languages', start_at: @time_period.first, end_at: @time_period.last, params: { id: @tag.id }, limit: 8, label: t('admin.trends.tags.dashboard.tag_languages_dimension') + .dashboard__item + = link_to admin_tag_path(@tag.id), class: ['dashboard__quick-access', @tag.usable? ? 'positive' : 'negative'] do + - if @tag.usable? + %span= t('admin.trends.tags.usable') + = fa_icon 'check fw' + - else + %span= t('admin.trends.tags.not_usable') + = fa_icon 'lock fw' - = link_to admin_tag_path(@tag.id), class: ['dashboard__quick-access', @tag.trendable? ? 'positive' : 'negative'] do - - if @tag.trendable? - %span= t('admin.trends.tags.trendable') - = fa_icon 'check fw' - - else - %span= t('admin.trends.tags.not_trendable') - = fa_icon 'lock fw' + = link_to admin_tag_path(@tag.id), class: ['dashboard__quick-access', @tag.trendable? ? 'positive' : 'negative'] do + - if @tag.trendable? + %span= t('admin.trends.tags.trendable') + = fa_icon 'check fw' + - else + %span= t('admin.trends.tags.not_trendable') + = fa_icon 'lock fw' - = link_to admin_tag_path(@tag.id), class: ['dashboard__quick-access', @tag.listable? ? 'positive' : 'negative'] do - - if @tag.listable? - %span= t('admin.trends.tags.listable') - = fa_icon 'check fw' - - else - %span= t('admin.trends.tags.not_listable') - = fa_icon 'lock fw' + = link_to admin_tag_path(@tag.id), class: ['dashboard__quick-access', @tag.listable? ? 'positive' : 'negative'] do + - if @tag.listable? + %span= t('admin.trends.tags.listable') + = fa_icon 'check fw' + - else + %span= t('admin.trends.tags.not_listable') + = fa_icon 'lock fw' -%hr.spacer/ + %hr.spacer/ = simple_form_for @tag, url: admin_tag_path(@tag.id) do |f| = render 'shared/error_messages', object: @tag diff --git a/app/views/admin/users/roles/show.html.haml b/app/views/admin/users/roles/show.html.haml new file mode 100644 index 000000000..821618060 --- /dev/null +++ b/app/views/admin/users/roles/show.html.haml @@ -0,0 +1,9 @@ +- content_for :page_title do + = t('admin.accounts.change_role.title', username: @user.account.username) + += simple_form_for @user, url: admin_user_role_path(@user) do |f| + .fields-group + = f.association :role, wrapper: :with_block_label, collection: UserRole.assignable, label_method: :name, include_blank: I18n.t('admin.accounts.change_role.no_role') + + .actions + = f.button :button, t('generic.save_changes'), type: :submit diff --git a/app/views/custom_css/show.css.erb b/app/views/custom_css/show.css.erb new file mode 100644 index 000000000..521834832 --- /dev/null +++ b/app/views/custom_css/show.css.erb @@ -0,0 +1,10 @@ +<%- if Setting.custom_css.present? %> +<%= Setting.custom_css %> + +<%- end %> +<%- UserRole.where(highlighted: true).select { |role| role.color.present? }.each do |role| %> +.user-role-<%= role.id %> { + --user-role-accent: <%= role.color %>; +} + +<%- end %> diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 25fd5bc34..bf164223c 100755 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -34,9 +34,7 @@ %meta{ name: 'style-nonce', content: request.content_security_policy_nonce } = stylesheet_link_tag '/inert.css', skip_pipeline: true, media: 'all', id: 'inert-style' - - - if Setting.custom_css.present? - = stylesheet_link_tag custom_css_path, host: request.host, media: 'all' + = stylesheet_link_tag custom_css_path, host: default_url_options[:host], media: 'all' = yield :header_tags diff --git a/app/views/settings/preferences/notifications/show.html.haml b/app/views/settings/preferences/notifications/show.html.haml index 42754a852..bc7afb993 100644 --- a/app/views/settings/preferences/notifications/show.html.haml +++ b/app/views/settings/preferences/notifications/show.html.haml @@ -18,12 +18,10 @@ = ff.input :reblog, as: :boolean, wrapper: :with_label = ff.input :favourite, as: :boolean, wrapper: :with_label = ff.input :mention, as: :boolean, wrapper: :with_label - - - if current_user.staff? - = ff.input :report, as: :boolean, wrapper: :with_label - = ff.input :appeal, as: :boolean, wrapper: :with_label - = ff.input :pending_account, as: :boolean, wrapper: :with_label - = ff.input :trending_tag, as: :boolean, wrapper: :with_label + = ff.input :report, as: :boolean, wrapper: :with_label if current_user.can?(:manage_reports) + = ff.input :appeal, as: :boolean, wrapper: :with_label if current_user.can?(:manage_appeals) + = ff.input :pending_account, as: :boolean, wrapper: :with_label if current_user.can?(:manage_users) + = ff.input :trending_tag, as: :boolean, wrapper: :with_label if current_user.can?(:manage_taxonomies) .fields-group = f.input :setting_always_send_emails, as: :boolean, wrapper: :with_label diff --git a/config/application.rb b/config/application.rb index 24fa2a978..06360832c 100644 --- a/config/application.rb +++ b/config/application.rb @@ -44,6 +44,7 @@ require_relative '../lib/webpacker/helper_extensions' require_relative '../lib/rails/engine_extensions' require_relative '../lib/active_record/database_tasks_extensions' require_relative '../lib/active_record/batches' +require_relative '../lib/simple_navigation/item_extensions' Dotenv::Railtie.load diff --git a/config/locales/activerecord.en.yml b/config/locales/activerecord.en.yml index 720b0f5e3..daeed58b8 100644 --- a/config/locales/activerecord.en.yml +++ b/config/locales/activerecord.en.yml @@ -38,3 +38,12 @@ en: email: blocked: uses a disallowed e-mail provider unreachable: does not seem to exist + role_id: + elevated: cannot be higher than your current role + user_role: + attributes: + permissions_as_keys: + dangerous: include permissions that are not safe for the base role + elevated: cannot include permissions your current role does not possess + position: + elevated: cannot be higher than your current role diff --git a/config/locales/en.yml b/config/locales/en.yml index 91ae3a3bc..2cd4f45ac 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -83,10 +83,8 @@ en: posts_tab_heading: Posts posts_with_replies: Posts and replies roles: - admin: Admin bot: Bot group: Group - moderator: Mod unavailable: Profile unavailable unfollow: Unfollow admin: @@ -105,12 +103,17 @@ en: avatar: Avatar by_domain: Domain change_email: - changed_msg: Account email successfully changed! + changed_msg: Email successfully changed! current_email: Current email label: Change email new_email: New email submit: Change email title: Change email for %{username} + change_role: + changed_msg: Role successfully changed! + label: Change role + no_role: No role + title: Change role for %{username} confirm: Confirm confirmed: Confirmed confirming: Confirming @@ -154,6 +157,7 @@ en: active: Active all: All pending: Pending + silenced: Limited suspended: Suspended title: Moderation moderation_notes: Moderation notes @@ -161,6 +165,7 @@ en: most_recent_ip: Most recent IP no_account_selected: No accounts were changed as none were selected no_limits_imposed: No limits imposed + no_role_assigned: No role assigned not_subscribed: Not subscribed pending: Pending review perform_full_suspension: Suspend @@ -187,12 +192,7 @@ en: reset: Reset reset_password: Reset password resubscribe: Resubscribe - role: Permissions - roles: - admin: Administrator - moderator: Moderator - staff: Staff - user: User + role: Role search: Search search_same_email_domain: Other users with the same e-mail domain search_same_ip: Other users with the same IP @@ -649,6 +649,67 @@ en: unresolved: Unresolved updated_at: Updated view_profile: View profile + roles: + add_new: Add role + assigned_users: + one: "%{count} user" + other: "%{count} users" + categories: + administration: Administration + devops: Devops + invites: Invites + moderation: Moderation + special: Special + delete: Delete + description_html: With user roles, you can customize which functions and areas of Mastodon your users can access. + edit: Edit '%{name}' role + everyone: Default permissions + everyone_full_description_html: This is the base role affecting all users, even those without an assigned role. All other roles inherit permissions from it. + permissions_count: + one: "%{count} permission" + other: "%{count} permissions" + privileges: + administrator: Administrator + administrator_description: Users with this permission will bypass every permission + delete_user_data: Delete User Data + delete_user_data_description: Allows users to delete other users' data without delay + invite_users: Invite Users + invite_users_description: Allows users to invite new people to the server + manage_announcements: Manage Announcements + manage_announcements_description: Allows users to manage announcements on the server + manage_appeals: Manage Appeals + manage_appeals_description: Allows users to review appeals against moderation actions + manage_blocks: Manage Blocks + manage_blocks_description: Allows users to block e-mail providers and IP addresses + manage_custom_emojis: Manage Custom Emojis + manage_custom_emojis_description: Allows users to manage custom emojis on the server + manage_federation: Manage Federation + manage_federation_description: Allows users to block or allow federation with other domains, and control deliverability + manage_invites: Manage Invites + manage_invites_description: Allows users to browse and deactivate invite links + manage_reports: Manage Reports + manage_reports_description: Allows users to review reports and perform moderation actions against them + manage_roles: Manage Roles + manage_roles_description: Allows users to manage and assign roles below theirs + manage_rules: Manage Rules + manage_rules_description: Allows users to change server rules + manage_settings: Manage Settings + manage_settings_description: Allows users to change site settings + manage_taxonomies: Manage Taxonomies + manage_taxonomies_description: Allows users to review trending content and update hashtag settings + manage_user_access: Manage User Access + manage_user_access_description: Allows users to disable other users' two-factor authentication, change their e-mail address, and reset their password + manage_users: Manage Users + manage_users_description: Allows users to view other users' details and perform moderation actions against them + manage_webhooks: Manage Webhooks + manage_webhooks_description: Allows users to set up webhooks for administrative events + view_audit_log: View Audit Log + view_audit_log_description: Allows users to see a history of administrative actions on the server + view_dashboard: View Dashboard + view_dashboard_description: Allows users to access the dashboard and various metrics + view_devops: Devops + view_devops_description: Allows users to access Sidekiq and pgHero dashboards + title: Roles rules: add_new: Add rule delete: Delete @@ -701,9 +762,6 @@ en: deletion: desc_html: Allow anyone to delete their account title: Open account deletion - min_invite_role: - disabled: No one - title: Allow invitations by require_invite_text: desc_html: When registrations require manual approval, make the “Why do you want to join?” text input mandatory rather than optional title: Require new users to enter a reason to join @@ -716,9 +774,6 @@ en: show_known_fediverse_at_about_page: desc_html: When disabled, restricts the public timeline linked from the landing page to showing only local content title: Include federated content on unauthenticated public timeline page - show_staff_badge: - desc_html: Show a staff badge on a user page - title: Show staff badge site_description: desc_html: Introductory paragraph on the API. Describe what makes this Mastodon server special and anything else important. You can use HTML tags, in particular <a> and <em>. title: Server description diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index ea4f68562..932f34d82 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -96,6 +96,13 @@ en: name: You can only change the casing of the letters, for example, to make it more readable user: chosen_languages: When checked, only posts in selected languages will be displayed in public timelines + role: The role controls which permissions the user has + user_role: + color: Color to be used for the role throughout the UI, as RGB in hex format + highlighted: This makes the role publicly visible + name: Public name of the role, if role is set to be displayed as a badge + permissions_as_keys: Users with this role will have access to... + position: Higher role decides conflict resolution in certain situations webhook: events: Select events to send url: Where events will be sent to @@ -232,6 +239,14 @@ en: name: Hashtag trendable: Allow this hashtag to appear under trends usable: Allow posts to use this hashtag + user: + role: Role + user_role: + color: Badge color + highlighted: Display role as badge on user profiles + name: Name + permissions_as_keys: Permissions + position: Priority webhook: events: Enabled events url: Endpoint URL diff --git a/config/navigation.rb b/config/navigation.rb index ec5719e3e..706de0471 100644 --- a/config/navigation.rb +++ b/config/navigation.rb @@ -2,66 +2,67 @@ SimpleNavigation::Configuration.run do |navigation| navigation.items do |n| - n.item :web, safe_join([fa_icon('chevron-left fw'), t('settings.back')]), root_url + n.item :web, safe_join([fa_icon('chevron-left fw'), t('settings.back')]), root_path - n.item :profile, safe_join([fa_icon('user fw'), t('settings.profile')]), settings_profile_url, if: -> { current_user.functional? } do |s| - s.item :profile, safe_join([fa_icon('pencil fw'), t('settings.appearance')]), settings_profile_url - s.item :featured_tags, safe_join([fa_icon('hashtag fw'), t('settings.featured_tags')]), settings_featured_tags_url + n.item :profile, safe_join([fa_icon('user fw'), t('settings.profile')]), settings_profile_path, if: -> { current_user.functional? } do |s| + s.item :profile, safe_join([fa_icon('pencil fw'), t('settings.appearance')]), settings_profile_path + s.item :featured_tags, safe_join([fa_icon('hashtag fw'), t('settings.featured_tags')]), settings_featured_tags_path end - n.item :preferences, safe_join([fa_icon('cog fw'), t('settings.preferences')]), settings_preferences_url, if: -> { current_user.functional? } do |s| - s.item :appearance, safe_join([fa_icon('desktop fw'), t('settings.appearance')]), settings_preferences_appearance_url - s.item :notifications, safe_join([fa_icon('bell fw'), t('settings.notifications')]), settings_preferences_notifications_url - s.item :other, safe_join([fa_icon('cog fw'), t('preferences.other')]), settings_preferences_other_url + n.item :preferences, safe_join([fa_icon('cog fw'), t('settings.preferences')]), settings_preferences_path, if: -> { current_user.functional? } do |s| + s.item :appearance, safe_join([fa_icon('desktop fw'), t('settings.appearance')]), settings_preferences_appearance_path + s.item :notifications, safe_join([fa_icon('bell fw'), t('settings.notifications')]), settings_preferences_notifications_path + s.item :other, safe_join([fa_icon('cog fw'), t('preferences.other')]), settings_preferences_other_path end - n.item :relationships, safe_join([fa_icon('users fw'), t('settings.relationships')]), relationships_url, if: -> { current_user.functional? } + n.item :relationships, safe_join([fa_icon('users fw'), t('settings.relationships')]), relationships_path, if: -> { current_user.functional? } n.item :filters, safe_join([fa_icon('filter fw'), t('filters.index.title')]), filters_path, highlights_on: %r{/filters}, if: -> { current_user.functional? } - n.item :statuses_cleanup, safe_join([fa_icon('history fw'), t('settings.statuses_cleanup')]), statuses_cleanup_url, if: -> { current_user.functional? } + n.item :statuses_cleanup, safe_join([fa_icon('history fw'), t('settings.statuses_cleanup')]), statuses_cleanup_path, if: -> { current_user.functional? } - n.item :security, safe_join([fa_icon('lock fw'), t('settings.account')]), edit_user_registration_url do |s| - s.item :password, safe_join([fa_icon('lock fw'), t('settings.account_settings')]), edit_user_registration_url, highlights_on: %r{/auth/edit|/settings/delete|/settings/migration|/settings/aliases|/settings/login_activities|^/disputes} - s.item :two_factor_authentication, safe_join([fa_icon('mobile fw'), t('settings.two_factor_authentication')]), settings_two_factor_authentication_methods_url, highlights_on: %r{/settings/two_factor_authentication|/settings/otp_authentication|/settings/security_keys} - s.item :authorized_apps, safe_join([fa_icon('list fw'), t('settings.authorized_apps')]), oauth_authorized_applications_url + n.item :security, safe_join([fa_icon('lock fw'), t('settings.account')]), edit_user_registration_path do |s| + s.item :password, safe_join([fa_icon('lock fw'), t('settings.account_settings')]), edit_user_registration_path, highlights_on: %r{/auth/edit|/settings/delete|/settings/migration|/settings/aliases|/settings/login_activities|^/disputes} + s.item :two_factor_authentication, safe_join([fa_icon('mobile fw'), t('settings.two_factor_authentication')]), settings_two_factor_authentication_methods_path, highlights_on: %r{/settings/two_factor_authentication|/settings/otp_authentication|/settings/security_keys} + s.item :authorized_apps, safe_join([fa_icon('list fw'), t('settings.authorized_apps')]), oauth_authorized_applications_path end - n.item :data, safe_join([fa_icon('cloud-download fw'), t('settings.import_and_export')]), settings_export_url do |s| - s.item :import, safe_join([fa_icon('cloud-upload fw'), t('settings.import')]), settings_import_url, if: -> { current_user.functional? } - s.item :export, safe_join([fa_icon('cloud-download fw'), t('settings.export')]), settings_export_url + n.item :data, safe_join([fa_icon('cloud-download fw'), t('settings.import_and_export')]), settings_export_path do |s| + s.item :import, safe_join([fa_icon('cloud-upload fw'), t('settings.import')]), settings_import_path, if: -> { current_user.functional? } + s.item :export, safe_join([fa_icon('cloud-download fw'), t('settings.export')]), settings_export_path end - n.item :invites, safe_join([fa_icon('user-plus fw'), t('invites.title')]), invites_path, if: proc { Setting.min_invite_role == 'user' && current_user.functional? } - n.item :development, safe_join([fa_icon('code fw'), t('settings.development')]), settings_applications_url, if: -> { current_user.functional? } + n.item :invites, safe_join([fa_icon('user-plus fw'), t('invites.title')]), invites_path, if: -> { current_user.can?(:invite_users) && current_user.functional? } + n.item :development, safe_join([fa_icon('code fw'), t('settings.development')]), settings_applications_path, if: -> { current_user.functional? } - n.item :trends, safe_join([fa_icon('fire fw'), t('admin.trends.title')]), admin_trends_tags_path, if: proc { current_user.staff? } do |s| + n.item :trends, safe_join([fa_icon('fire fw'), t('admin.trends.title')]), admin_trends_statuses_path, if: -> { current_user.can?(:manage_taxonomies) } do |s| s.item :statuses, safe_join([fa_icon('comments-o fw'), t('admin.trends.statuses.title')]), admin_trends_statuses_path, highlights_on: %r{/admin/trends/statuses} s.item :tags, safe_join([fa_icon('hashtag fw'), t('admin.trends.tags.title')]), admin_trends_tags_path, highlights_on: %r{/admin/tags|/admin/trends/tags} s.item :links, safe_join([fa_icon('newspaper-o fw'), t('admin.trends.links.title')]), admin_trends_links_path, highlights_on: %r{/admin/trends/links} end - n.item :moderation, safe_join([fa_icon('gavel fw'), t('moderation.title')]), admin_reports_url, if: proc { current_user.staff? } do |s| - s.item :action_logs, safe_join([fa_icon('bars fw'), t('admin.action_logs.title')]), admin_action_logs_url - s.item :reports, safe_join([fa_icon('flag fw'), t('admin.reports.title')]), admin_reports_url, highlights_on: %r{/admin/reports} - s.item :accounts, safe_join([fa_icon('users fw'), t('admin.accounts.title')]), admin_accounts_url(origin: 'local'), highlights_on: %r{/admin/accounts|/admin/pending_accounts|/admin/disputes} - s.item :invites, safe_join([fa_icon('user-plus fw'), t('admin.invites.title')]), admin_invites_path - s.item :follow_recommendations, safe_join([fa_icon('user-plus fw'), t('admin.follow_recommendations.title')]), admin_follow_recommendations_path, highlights_on: %r{/admin/follow_recommendations} - s.item :instances, safe_join([fa_icon('cloud fw'), t('admin.instances.title')]), admin_instances_url(limited: whitelist_mode? ? nil : '1'), highlights_on: %r{/admin/instances|/admin/domain_blocks|/admin/domain_allows}, if: -> { current_user.admin? } - s.item :email_domain_blocks, safe_join([fa_icon('envelope fw'), t('admin.email_domain_blocks.title')]), admin_email_domain_blocks_url, highlights_on: %r{/admin/email_domain_blocks}, if: -> { current_user.admin? } - s.item :ip_blocks, safe_join([fa_icon('ban fw'), t('admin.ip_blocks.title')]), admin_ip_blocks_url, highlights_on: %r{/admin/ip_blocks}, if: -> { current_user.admin? } + n.item :moderation, safe_join([fa_icon('gavel fw'), t('moderation.title')]), nil, if: -> { current_user.can?(:manage_reports, :view_audit_log, :manage_users, :manage_invites, :manage_taxonomies, :manage_federation, :manage_blocks) } do |s| + s.item :reports, safe_join([fa_icon('flag fw'), t('admin.reports.title')]), admin_reports_path, highlights_on: %r{/admin/reports}, if: -> { current_user.can?(:manage_reports) } + s.item :accounts, safe_join([fa_icon('users fw'), t('admin.accounts.title')]), admin_accounts_path(origin: 'local'), highlights_on: %r{/admin/accounts|/admin/pending_accounts|/admin/disputes|/admin/users}, if: -> { current_user.can?(:manage_users) } + s.item :invites, safe_join([fa_icon('user-plus fw'), t('admin.invites.title')]), admin_invites_path, if: -> { current_user.can?(:manage_invites) } + s.item :follow_recommendations, safe_join([fa_icon('user-plus fw'), t('admin.follow_recommendations.title')]), admin_follow_recommendations_path, highlights_on: %r{/admin/follow_recommendations}, if: -> { current_user.can?(:manage_taxonomies) } + s.item :instances, safe_join([fa_icon('cloud fw'), t('admin.instances.title')]), admin_instances_path(limited: whitelist_mode? ? nil : '1'), highlights_on: %r{/admin/instances|/admin/domain_blocks|/admin/domain_allows}, if: -> { current_user.can?(:manage_federation) } + s.item :email_domain_blocks, safe_join([fa_icon('envelope fw'), t('admin.email_domain_blocks.title')]), admin_email_domain_blocks_path, highlights_on: %r{/admin/email_domain_blocks}, if: -> { current_user.can?(:manage_blocks) } + s.item :ip_blocks, safe_join([fa_icon('ban fw'), t('admin.ip_blocks.title')]), admin_ip_blocks_path, highlights_on: %r{/admin/ip_blocks}, if: -> { current_user.can?(:manage_blocks) } + s.item :action_logs, safe_join([fa_icon('bars fw'), t('admin.action_logs.title')]), admin_action_logs_path, if: -> { current_user.can?(:view_audit_log) } end - n.item :admin, safe_join([fa_icon('cogs fw'), t('admin.title')]), admin_dashboard_url, if: proc { current_user.staff? } do |s| - s.item :dashboard, safe_join([fa_icon('tachometer fw'), t('admin.dashboard.title')]), admin_dashboard_url - s.item :settings, safe_join([fa_icon('cogs fw'), t('admin.settings.title')]), edit_admin_settings_url, if: -> { current_user.admin? }, highlights_on: %r{/admin/settings} - s.item :rules, safe_join([fa_icon('gavel fw'), t('admin.rules.title')]), admin_rules_path, highlights_on: %r{/admin/rules} - s.item :announcements, safe_join([fa_icon('bullhorn fw'), t('admin.announcements.title')]), admin_announcements_path, highlights_on: %r{/admin/announcements} - s.item :custom_emojis, safe_join([fa_icon('smile-o fw'), t('admin.custom_emojis.title')]), admin_custom_emojis_url, highlights_on: %r{/admin/custom_emojis} - s.item :webhooks, safe_join([fa_icon('inbox fw'), t('admin.webhooks.title')]), admin_webhooks_path, highlights_on: %r{/admin/webhooks} - s.item :relays, safe_join([fa_icon('exchange fw'), t('admin.relays.title')]), admin_relays_url, if: -> { current_user.admin? && !whitelist_mode? }, highlights_on: %r{/admin/relays} - s.item :sidekiq, safe_join([fa_icon('diamond fw'), 'Sidekiq']), sidekiq_url, link_html: { target: 'sidekiq' }, if: -> { current_user.admin? } - s.item :pghero, safe_join([fa_icon('database fw'), 'PgHero']), pghero_url, link_html: { target: 'pghero' }, if: -> { current_user.admin? } + n.item :admin, safe_join([fa_icon('cogs fw'), t('admin.title')]), nil, if: -> { current_user.can?(:view_dashboard, :manage_settings, :manage_rules, :manage_announcements, :manage_custom_emojis, :manage_webhooks, :manage_federation) } do |s| + s.item :dashboard, safe_join([fa_icon('tachometer fw'), t('admin.dashboard.title')]), admin_dashboard_path, if: -> { current_user.can?(:view_dashboard) } + s.item :settings, safe_join([fa_icon('cogs fw'), t('admin.settings.title')]), edit_admin_settings_path, if: -> { current_user.can?(:manage_settings) }, highlights_on: %r{/admin/settings} + s.item :rules, safe_join([fa_icon('gavel fw'), t('admin.rules.title')]), admin_rules_path, highlights_on: %r{/admin/rules}, if: -> { current_user.can?(:manage_rules) } + s.item :roles, safe_join([fa_icon('vcard fw'), t('admin.roles.title')]), admin_roles_path, highlights_on: %r{/admin/roles}, if: -> { current_user.can?(:manage_roles) } + s.item :announcements, safe_join([fa_icon('bullhorn fw'), t('admin.announcements.title')]), admin_announcements_path, highlights_on: %r{/admin/announcements}, if: -> { current_user.can?(:manage_announcements) } + s.item :custom_emojis, safe_join([fa_icon('smile-o fw'), t('admin.custom_emojis.title')]), admin_custom_emojis_path, highlights_on: %r{/admin/custom_emojis}, if: -> { current_user.can?(:manage_custom_emojis) } + s.item :webhooks, safe_join([fa_icon('inbox fw'), t('admin.webhooks.title')]), admin_webhooks_path, highlights_on: %r{/admin/webhooks}, if: -> { current_user.can?(:manage_webhooks) } + s.item :relays, safe_join([fa_icon('exchange fw'), t('admin.relays.title')]), admin_relays_path, highlights_on: %r{/admin/relays}, if: -> { !whitelist_mode? && current_user.can?(:manage_federation) } end - n.item :logout, safe_join([fa_icon('sign-out fw'), t('auth.logout')]), destroy_user_session_url, link_html: { 'data-method' => 'delete' } + n.item :sidekiq, safe_join([fa_icon('diamond fw'), 'Sidekiq']), sidekiq_path, link_html: { target: 'sidekiq' }, if: -> { current_user.can?(:view_devops) } + n.item :pghero, safe_join([fa_icon('database fw'), 'PgHero']), pghero_path, link_html: { target: 'pghero' }, if: -> { current_user.can?(:view_devops) } + n.item :logout, safe_join([fa_icon('sign-out fw'), t('auth.logout')]), destroy_user_session_path, link_html: { 'data-method' => 'delete' } end end diff --git a/config/roles.yml b/config/roles.yml new file mode 100644 index 000000000..f443250d1 --- /dev/null +++ b/config/roles.yml @@ -0,0 +1,35 @@ +moderator: + name: Moderator + position: 10 + permissions: + - view_dashboard + - view_audit_log + - manage_users + - manage_reports + - manage_taxonomies +admin: + name: Admin + position: 100 + permissions: + - view_dashboard + - view_audit_log + - manage_users + - manage_user_access + - delete_user_data + - manage_reports + - manage_taxonomies + - manage_federation + - manage_settings + - manage_blocks + - manage_appeals + - manage_rules + - manage_invites + - manage_announcements + - manage_custom_emojis + - manage_webhooks + - manage_roles +owner: + name: Owner + position: 1000 + permissions: + - administrator diff --git a/config/routes.rb b/config/routes.rb index 4abf55655..177c1cff4 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -10,7 +10,7 @@ Rails.application.routes.draw do get 'health', to: 'health#show' - authenticate :user, lambda { |u| u.admin? } do + authenticate :user, lambda { |u| u.role&.can?(:view_devops) } do mount Sidekiq::Web, at: 'sidekiq', as: :sidekiq mount PgHero::Engine, at: 'pghero', as: :pghero end @@ -295,17 +295,11 @@ Rails.application.routes.draw do post :resend end end - - resource :role, only: [] do - member do - post :promote - post :demote - end - end end resources :users, only: [] do - resource :two_factor_authentication, only: [:destroy] + resource :two_factor_authentication, only: [:destroy], controller: 'users/two_factor_authentications' + resource :role, only: [:show, :update], controller: 'users/roles' end resources :custom_emojis, only: [:index, :new, :create] do @@ -320,6 +314,7 @@ Rails.application.routes.draw do end end + resources :roles, except: [:show] resources :account_moderation_notes, only: [:create, :destroy] resource :follow_recommendations, only: [:show, :update] resources :tags, only: [:show, :update] diff --git a/db/migrate/20220611210335_create_user_roles.rb b/db/migrate/20220611210335_create_user_roles.rb new file mode 100644 index 000000000..6b7f2b637 --- /dev/null +++ b/db/migrate/20220611210335_create_user_roles.rb @@ -0,0 +1,13 @@ +class CreateUserRoles < ActiveRecord::Migration[6.1] + def change + create_table :user_roles do |t| + t.string :name, null: false, default: '' + t.string :color, null: false, default: '' + t.integer :position, null: false, default: 0 + t.bigint :permissions, null: false, default: 0 + t.boolean :highlighted, null: false, default: false + + t.timestamps + end + end +end diff --git a/db/migrate/20220611212541_add_role_id_to_users.rb b/db/migrate/20220611212541_add_role_id_to_users.rb new file mode 100644 index 000000000..2fda647d4 --- /dev/null +++ b/db/migrate/20220611212541_add_role_id_to_users.rb @@ -0,0 +1,8 @@ +class AddRoleIdToUsers < ActiveRecord::Migration[6.1] + disable_ddl_transaction! + + def change + safety_assured { add_reference :users, :role, foreign_key: { to_table: 'user_roles', on_delete: :nullify }, index: false } + add_index :users, :role_id, algorithm: :concurrently, where: 'role_id IS NOT NULL' + end +end diff --git a/db/post_migrate/20220617202502_migrate_roles.rb b/db/post_migrate/20220617202502_migrate_roles.rb new file mode 100644 index 000000000..b7a7b2201 --- /dev/null +++ b/db/post_migrate/20220617202502_migrate_roles.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +class MigrateRoles < ActiveRecord::Migration[5.2] + disable_ddl_transaction! + + class UserRole < ApplicationRecord; end + class User < ApplicationRecord; end + + def up + load Rails.root.join('db', 'seeds', '03_roles.rb') + + admin_role = UserRole.find_by(name: 'Admin') + moderator_role = UserRole.find_by(name: 'Moderator') + + User.where(admin: true).in_batches.update_all(role_id: admin_role.id) + User.where(moderator: true).in_batches.update_all(role_id: moderator_role.id) + end + + def down + admin_role = UserRole.find_by(name: 'Admin') + moderator_role = UserRole.find_by(name: 'Moderator') + + User.where(role_id: admin_role.id).in_batches.update_all(admin: true) if admin_role + User.where(role_id: moderator_role.id).in_batches.update_all(moderator: true) if moderator_role + end +end diff --git a/db/post_migrate/20220704024901_migrate_settings_to_user_roles.rb b/db/post_migrate/20220704024901_migrate_settings_to_user_roles.rb new file mode 100644 index 000000000..254690cc3 --- /dev/null +++ b/db/post_migrate/20220704024901_migrate_settings_to_user_roles.rb @@ -0,0 +1,41 @@ +# frozen_string_literal: true + +class MigrateSettingsToUserRoles < ActiveRecord::Migration[6.1] + disable_ddl_transaction! + + class UserRole < ApplicationRecord; end + + def up + owner_role = UserRole.find_by(name: 'Owner') + admin_role = UserRole.find_by(name: 'Admin') + moderator_role = UserRole.find_by(name: 'Moderator') + everyone_role = UserRole.find_by(id: -99) + + min_invite_role = Setting.min_invite_role + show_staff_badge = Setting.show_staff_badge + + if everyone_role + everyone_role.permissions &= ~::UserRole::FLAGS[:invite_users] unless min_invite_role == 'user' + everyone_role.save + end + + if owner_role + owner_role.highlighted = show_staff_badge + owner_role.save + end + + if admin_role + admin_role.permissions |= ::UserRole::FLAGS[:invite_users] if %w(admin moderator).include?(min_invite_role) + admin_role.highlighted = show_staff_badge + admin_role.save + end + + if moderator_role + moderator_role.permissions |= ::UserRole::FLAGS[:invite_users] if %w(moderator).include?(min_invite_role) + moderator_role.highlighted = show_staff_badge + moderator_role.save + end + end + + def down; end +end diff --git a/db/schema.rb b/db/schema.rb index 759dc712b..54966ef64 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2022_06_13_110903) do +ActiveRecord::Schema.define(version: 2022_07_04_024901) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -968,6 +968,16 @@ ActiveRecord::Schema.define(version: 2022_06_13_110903) do t.index ["user_id"], name: "index_user_invite_requests_on_user_id" end + create_table "user_roles", force: :cascade do |t| + t.string "name", default: "", null: false + t.string "color", default: "", null: false + t.integer "position", default: 0, null: false + t.bigint "permissions", default: 0, null: false + t.boolean "highlighted", default: false, null: false + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + end + create_table "users", force: :cascade do |t| t.string "email", default: "", null: false t.datetime "created_at", null: false @@ -1003,11 +1013,13 @@ ActiveRecord::Schema.define(version: 2022_06_13_110903) do t.string "webauthn_id" t.inet "sign_up_ip" t.boolean "skip_sign_in_token" + t.bigint "role_id" t.index ["account_id"], name: "index_users_on_account_id" t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true t.index ["created_by_application_id"], name: "index_users_on_created_by_application_id", where: "(created_by_application_id IS NOT NULL)" t.index ["email"], name: "index_users_on_email", unique: true t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, opclass: :text_pattern_ops, where: "(reset_password_token IS NOT NULL)" + t.index ["role_id"], name: "index_users_on_role_id", where: "(role_id IS NOT NULL)" end create_table "web_push_subscriptions", force: :cascade do |t| @@ -1159,6 +1171,7 @@ ActiveRecord::Schema.define(version: 2022_06_13_110903) do add_foreign_key "users", "accounts", name: "fk_50500f500d", on_delete: :cascade add_foreign_key "users", "invites", on_delete: :nullify add_foreign_key "users", "oauth_applications", column: "created_by_application_id", on_delete: :nullify + add_foreign_key "users", "user_roles", column: "role_id", on_delete: :nullify add_foreign_key "web_push_subscriptions", "oauth_access_tokens", column: "access_token_id", on_delete: :cascade add_foreign_key "web_push_subscriptions", "users", on_delete: :cascade add_foreign_key "web_settings", "users", name: "fk_11910667b2", on_delete: :cascade diff --git a/db/seeds.rb b/db/seeds.rb index 0bfb5d0db..1ca300de7 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -1,11 +1,5 @@ -Doorkeeper::Application.create!(name: 'Web', superapp: true, redirect_uri: Doorkeeper.configuration.native_redirect_uri, scopes: 'read write follow push') +# frozen_string_literal: true -domain = ENV['LOCAL_DOMAIN'] || Rails.configuration.x.local_domain -account = Account.find_or_initialize_by(id: -99, actor_type: 'Application', locked: true, username: domain) -account.save! - -if Rails.env.development? - admin = Account.where(username: 'admin').first_or_initialize(username: 'admin') - admin.save(validate: false) - User.where(email: "admin@#{domain}").first_or_initialize(email: "admin@#{domain}", password: 'mastodonadmin', password_confirmation: 'mastodonadmin', confirmed_at: Time.now.utc, admin: true, account: admin, agreement: true, approved: true).save! +Dir[Rails.root.join('db', 'seeds', '*.rb')].sort.each do |seed| + load seed end diff --git a/db/seeds/01_web_app.rb b/db/seeds/01_web_app.rb new file mode 100644 index 000000000..a457a883b --- /dev/null +++ b/db/seeds/01_web_app.rb @@ -0,0 +1 @@ +Doorkeeper::Application.create_with(name: 'Web', redirect_uri: Doorkeeper.configuration.native_redirect_uri, scopes: 'read write follow push').find_or_create_by(superapp: true) diff --git a/db/seeds/02_instance_actor.rb b/db/seeds/02_instance_actor.rb new file mode 100644 index 000000000..39186b273 --- /dev/null +++ b/db/seeds/02_instance_actor.rb @@ -0,0 +1 @@ +Account.create_with(actor_type: 'Application', locked: true, username: ENV['LOCAL_DOMAIN'] || Rails.configuration.x.local_domain).find_or_create_by(id: -99) diff --git a/db/seeds/03_roles.rb b/db/seeds/03_roles.rb new file mode 100644 index 000000000..7fedf0f71 --- /dev/null +++ b/db/seeds/03_roles.rb @@ -0,0 +1,9 @@ +# Pre-create base role +UserRole.everyone + +# Create default roles defined in config file +default_roles = YAML.load_file(Rails.root.join('config', 'roles.yml')) + +default_roles.each do |_, config| + UserRole.create_with(position: config['position'], permissions_as_keys: config['permissions'], highlighted: true).find_or_create_by(name: config['name']) +end diff --git a/db/seeds/04_admin.rb b/db/seeds/04_admin.rb new file mode 100644 index 000000000..a67040e4e --- /dev/null +++ b/db/seeds/04_admin.rb @@ -0,0 +1,8 @@ +if Rails.env.development? + domain = ENV['LOCAL_DOMAIN'] || Rails.configuration.x.local_domain + + admin = Account.where(username: 'admin').first_or_initialize(username: 'admin') + admin.save(validate: false) + + User.where(email: "admin@#{domain}").first_or_initialize(email: "admin@#{domain}", password: 'mastodonadmin', password_confirmation: 'mastodonadmin', confirmed_at: Time.now.utc, role: UserRole.find_by(name: 'Owner'), account: admin, agreement: true, approved: true).save! +end diff --git a/lib/mastodon/accounts_cli.rb b/lib/mastodon/accounts_cli.rb index 7256d1da9..29c934453 100644 --- a/lib/mastodon/accounts_cli.rb +++ b/lib/mastodon/accounts_cli.rb @@ -54,7 +54,7 @@ module Mastodon option :email, required: true option :confirmed, type: :boolean - option :role, default: 'user', enum: %w(user moderator admin) + option :role option :reattach, type: :boolean option :force, type: :boolean desc 'create USERNAME', 'Create a new user' @@ -65,8 +65,7 @@ module Mastodon With the --confirmed option, the confirmation e-mail will be skipped and the account will be active straight away. - With the --role option one of "user", "admin" or "moderator" - can be supplied. Defaults to "user" + With the --role option, the role can be supplied. With the --reattach option, the new user will be reattached to a given existing username of an old account. If the old @@ -75,9 +74,22 @@ module Mastodon username to the new account anyway. LONG_DESC def create(username) + role_id = nil + + if options[:role] + role = UserRole.find_by(name: options[:role]) + + if role.nil? + say('Cannot find user role with that name', :red) + exit(1) + end + + role_id = role.id + end + account = Account.new(username: username) password = SecureRandom.hex - user = User.new(email: options[:email], password: password, agreement: true, approved: true, admin: options[:role] == 'admin', moderator: options[:role] == 'moderator', confirmed_at: options[:confirmed] ? Time.now.utc : nil, bypass_invite_request_check: true) + user = User.new(email: options[:email], password: password, agreement: true, approved: true, role_id: role_id, confirmed_at: options[:confirmed] ? Time.now.utc : nil, bypass_invite_request_check: true) if options[:reattach] account = Account.find_local(username) || Account.new(username: username) @@ -106,14 +118,14 @@ module Mastodon user.errors.to_h.each do |key, error| say('Failure/Error: ', :red) say(key) - say(' ' + error, :red) + say(" #{error}", :red) end exit(1) end end - option :role, enum: %w(user moderator admin) + option :role option :email option :confirm, type: :boolean option :enable, type: :boolean @@ -125,8 +137,7 @@ module Mastodon long_desc <<-LONG_DESC Modify a user account. - With the --role option, update the user's role to one of "user", - "moderator" or "admin". + With the --role option, update the user's role. With the --email option, update the user's e-mail address. With the --confirm option, mark the user's e-mail as confirmed. @@ -152,8 +163,14 @@ module Mastodon end if options[:role] - user.admin = options[:role] == 'admin' - user.moderator = options[:role] == 'moderator' + role = UserRole.find_by(name: options[:role]) + + if role.nil? + say('Cannot find user role with that name', :red) + exit(1) + end + + user.role_id = role.id end password = SecureRandom.hex if options[:reset_password] @@ -172,7 +189,7 @@ module Mastodon user.errors.to_h.each do |key, error| say('Failure/Error: ', :red) say(key) - say(' ' + error, :red) + say(" #{error}", :red) end exit(1) @@ -319,7 +336,7 @@ module Mastodon unless skip_domains.empty? say('The following domains were not available during the check:', :yellow) - skip_domains.each { |domain| say(' ' + domain) } + skip_domains.each { |domain| say(" #{domain}") } end end diff --git a/lib/simple_navigation/item_extensions.rb b/lib/simple_navigation/item_extensions.rb new file mode 100644 index 000000000..28af37a18 --- /dev/null +++ b/lib/simple_navigation/item_extensions.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module SimpleNavigation + module ItemExtensions + def url + if @url.nil? && @sub_navigation + @sub_navigation.items.first.url + else + @url + end + end + end +end + +SimpleNavigation::Item.prepend(SimpleNavigation::ItemExtensions) diff --git a/spec/controllers/admin/account_moderation_notes_controller_spec.rb b/spec/controllers/admin/account_moderation_notes_controller_spec.rb index 410ce6543..d3f3263f8 100644 --- a/spec/controllers/admin/account_moderation_notes_controller_spec.rb +++ b/spec/controllers/admin/account_moderation_notes_controller_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe Admin::AccountModerationNotesController, type: :controller do render_views - let(:user) { Fabricate(:user, admin: true) } + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } let(:target_account) { Fabricate(:account) } before do diff --git a/spec/controllers/admin/accounts_controller_spec.rb b/spec/controllers/admin/accounts_controller_spec.rb index 1779fb7c0..1bd51a0c8 100644 --- a/spec/controllers/admin/accounts_controller_spec.rb +++ b/spec/controllers/admin/accounts_controller_spec.rb @@ -6,7 +6,7 @@ RSpec.describe Admin::AccountsController, type: :controller do before { sign_in current_user, scope: :user } describe 'GET #index' do - let(:current_user) { Fabricate(:user, admin: true) } + let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } around do |example| default_per_page = Account.default_per_page @@ -60,7 +60,7 @@ RSpec.describe Admin::AccountsController, type: :controller do end describe 'GET #show' do - let(:current_user) { Fabricate(:user, admin: true) } + let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } let(:account) { Fabricate(:account) } it 'returns http success' do @@ -72,15 +72,15 @@ RSpec.describe Admin::AccountsController, type: :controller do describe 'POST #memorialize' do subject { post :memorialize, params: { id: account.id } } - let(:current_user) { Fabricate(:user, admin: current_user_admin) } + let(:current_user) { Fabricate(:user, role: current_role) } let(:account) { user.account } - let(:user) { Fabricate(:user, admin: target_user_admin) } + let(:user) { Fabricate(:user, role: target_role) } context 'when user is admin' do - let(:current_user_admin) { true } + let(:current_role) { UserRole.find_by(name: 'Admin') } context 'when target user is admin' do - let(:target_user_admin) { true } + let(:target_role) { UserRole.find_by(name: 'Admin') } it 'fails to memorialize account' do is_expected.to have_http_status :forbidden @@ -89,7 +89,7 @@ RSpec.describe Admin::AccountsController, type: :controller do end context 'when target user is not admin' do - let(:target_user_admin) { false } + let(:target_role) { UserRole.find_by(name: 'Moderator') } it 'succeeds in memorializing account' do is_expected.to redirect_to admin_account_path(account.id) @@ -99,10 +99,10 @@ RSpec.describe Admin::AccountsController, type: :controller do end context 'when user is not admin' do - let(:current_user_admin) { false } + let(:current_role) { UserRole.find_by(name: 'Moderator') } context 'when target user is admin' do - let(:target_user_admin) { true } + let(:target_role) { UserRole.find_by(name: 'Admin') } it 'fails to memorialize account' do is_expected.to have_http_status :forbidden @@ -111,7 +111,7 @@ RSpec.describe Admin::AccountsController, type: :controller do end context 'when target user is not admin' do - let(:target_user_admin) { false } + let(:target_role) { UserRole.find_by(name: 'Moderator') } it 'fails to memorialize account' do is_expected.to have_http_status :forbidden @@ -124,12 +124,12 @@ RSpec.describe Admin::AccountsController, type: :controller do describe 'POST #enable' do subject { post :enable, params: { id: account.id } } - let(:current_user) { Fabricate(:user, admin: admin) } + let(:current_user) { Fabricate(:user, role: role) } let(:account) { user.account } let(:user) { Fabricate(:user, disabled: true) } context 'when user is admin' do - let(:admin) { true } + let(:role) { UserRole.find_by(name: 'Admin') } it 'succeeds in enabling account' do is_expected.to redirect_to admin_account_path(account.id) @@ -138,7 +138,7 @@ RSpec.describe Admin::AccountsController, type: :controller do end context 'when user is not admin' do - let(:admin) { false } + let(:role) { UserRole.everyone } it 'fails to enable account' do is_expected.to have_http_status :forbidden @@ -150,19 +150,23 @@ RSpec.describe Admin::AccountsController, type: :controller do describe 'POST #redownload' do subject { post :redownload, params: { id: account.id } } - let(:current_user) { Fabricate(:user, admin: admin) } - let(:account) { Fabricate(:account) } + let(:current_user) { Fabricate(:user, role: role) } + let(:account) { Fabricate(:account, domain: 'example.com') } + + before do + allow_any_instance_of(ResolveAccountService).to receive(:call) + end context 'when user is admin' do - let(:admin) { true } + let(:role) { UserRole.find_by(name: 'Admin') } - it 'succeeds in redownloadin' do + it 'succeeds in redownloading' do is_expected.to redirect_to admin_account_path(account.id) end end context 'when user is not admin' do - let(:admin) { false } + let(:role) { UserRole.everyone } it 'fails to redownload' do is_expected.to have_http_status :forbidden @@ -173,11 +177,11 @@ RSpec.describe Admin::AccountsController, type: :controller do describe 'POST #remove_avatar' do subject { post :remove_avatar, params: { id: account.id } } - let(:current_user) { Fabricate(:user, admin: admin) } + let(:current_user) { Fabricate(:user, role: role) } let(:account) { Fabricate(:account) } context 'when user is admin' do - let(:admin) { true } + let(:role) { UserRole.find_by(name: 'Admin') } it 'succeeds in removing avatar' do is_expected.to redirect_to admin_account_path(account.id) @@ -185,7 +189,7 @@ RSpec.describe Admin::AccountsController, type: :controller do end context 'when user is not admin' do - let(:admin) { false } + let(:role) { UserRole.everyone } it 'fails to remove avatar' do is_expected.to have_http_status :forbidden @@ -196,12 +200,12 @@ RSpec.describe Admin::AccountsController, type: :controller do describe 'POST #unblock_email' do subject { post :unblock_email, params: { id: account.id } } - let(:current_user) { Fabricate(:user, admin: admin) } + let(:current_user) { Fabricate(:user, role: role) } let(:account) { Fabricate(:account, suspended: true) } let!(:email_block) { Fabricate(:canonical_email_block, reference_account: account) } context 'when user is admin' do - let(:admin) { true } + let(:role) { UserRole.find_by(name: 'Admin') } it 'succeeds in removing email blocks' do expect { subject }.to change { CanonicalEmailBlock.where(reference_account: account).count }.from(1).to(0) @@ -214,7 +218,7 @@ RSpec.describe Admin::AccountsController, type: :controller do end context 'when user is not admin' do - let(:admin) { false } + let(:role) { UserRole.everyone } it 'fails to remove avatar' do subject diff --git a/spec/controllers/admin/action_logs_controller_spec.rb b/spec/controllers/admin/action_logs_controller_spec.rb index 4720ed2e2..c1957258f 100644 --- a/spec/controllers/admin/action_logs_controller_spec.rb +++ b/spec/controllers/admin/action_logs_controller_spec.rb @@ -5,7 +5,7 @@ require 'rails_helper' describe Admin::ActionLogsController, type: :controller do describe 'GET #index' do it 'returns 200' do - sign_in Fabricate(:user, admin: true) + sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')) get :index, params: { page: 1 } expect(response).to have_http_status(200) diff --git a/spec/controllers/admin/base_controller_spec.rb b/spec/controllers/admin/base_controller_spec.rb index 9ac833623..44be91951 100644 --- a/spec/controllers/admin/base_controller_spec.rb +++ b/spec/controllers/admin/base_controller_spec.rb @@ -5,13 +5,14 @@ require 'rails_helper' describe Admin::BaseController, type: :controller do controller do def success + authorize :dashboard, :index? render 'admin/reports/show' end end it 'requires administrator or moderator' do routes.draw { get 'success' => 'admin/base#success' } - sign_in(Fabricate(:user, admin: false, moderator: false)) + sign_in(Fabricate(:user)) get :success expect(response).to have_http_status(:forbidden) @@ -19,14 +20,14 @@ describe Admin::BaseController, type: :controller do it 'renders admin layout as a moderator' do routes.draw { get 'success' => 'admin/base#success' } - sign_in(Fabricate(:user, moderator: true)) + sign_in(Fabricate(:user, role: UserRole.find_by(name: 'Moderator'))) get :success expect(response).to render_template layout: 'admin' end it 'renders admin layout as an admin' do routes.draw { get 'success' => 'admin/base#success' } - sign_in(Fabricate(:user, admin: true)) + sign_in(Fabricate(:user, role: UserRole.find_by(name: 'Admin'))) get :success expect(response).to render_template layout: 'admin' end diff --git a/spec/controllers/admin/change_email_controller_spec.rb b/spec/controllers/admin/change_email_controller_spec.rb index e7f3f7c97..cf8a27d39 100644 --- a/spec/controllers/admin/change_email_controller_spec.rb +++ b/spec/controllers/admin/change_email_controller_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe Admin::ChangeEmailsController, type: :controller do render_views - let(:admin) { Fabricate(:user, admin: true) } + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } before do sign_in admin diff --git a/spec/controllers/admin/confirmations_controller_spec.rb b/spec/controllers/admin/confirmations_controller_spec.rb index 5b4f7e925..6268903c4 100644 --- a/spec/controllers/admin/confirmations_controller_spec.rb +++ b/spec/controllers/admin/confirmations_controller_spec.rb @@ -4,7 +4,7 @@ RSpec.describe Admin::ConfirmationsController, type: :controller do render_views before do - sign_in Fabricate(:user, admin: true), scope: :user + sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user end describe 'POST #create' do diff --git a/spec/controllers/admin/custom_emojis_controller_spec.rb b/spec/controllers/admin/custom_emojis_controller_spec.rb index a8d96948c..06cd0c22d 100644 --- a/spec/controllers/admin/custom_emojis_controller_spec.rb +++ b/spec/controllers/admin/custom_emojis_controller_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' describe Admin::CustomEmojisController do render_views - let(:user) { Fabricate(:user, admin: true) } + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } before do sign_in user, scope: :user diff --git a/spec/controllers/admin/dashboard_controller_spec.rb b/spec/controllers/admin/dashboard_controller_spec.rb index 7824854f9..6231a09a2 100644 --- a/spec/controllers/admin/dashboard_controller_spec.rb +++ b/spec/controllers/admin/dashboard_controller_spec.rb @@ -12,7 +12,7 @@ describe Admin::DashboardController, type: :controller do Admin::SystemCheck::Message.new(:rules_check, nil, admin_rules_path), Admin::SystemCheck::Message.new(:sidekiq_process_check, 'foo, bar'), ]) - sign_in Fabricate(:user, admin: true) + sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')) end it 'returns 200' do diff --git a/spec/controllers/admin/disputes/appeals_controller_spec.rb b/spec/controllers/admin/disputes/appeals_controller_spec.rb index 6a06f9406..712657791 100644 --- a/spec/controllers/admin/disputes/appeals_controller_spec.rb +++ b/spec/controllers/admin/disputes/appeals_controller_spec.rb @@ -14,7 +14,7 @@ RSpec.describe Admin::Disputes::AppealsController, type: :controller do end describe 'POST #approve' do - let(:current_user) { Fabricate(:user, admin: true) } + let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } before do allow(UserMailer).to receive(:appeal_approved).and_return(double('email', deliver_later: nil)) @@ -35,7 +35,7 @@ RSpec.describe Admin::Disputes::AppealsController, type: :controller do end describe 'POST #reject' do - let(:current_user) { Fabricate(:user, admin: true) } + let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } before do allow(UserMailer).to receive(:appeal_rejected).and_return(double('email', deliver_later: nil)) diff --git a/spec/controllers/admin/domain_blocks_controller_spec.rb b/spec/controllers/admin/domain_blocks_controller_spec.rb index ecc79292b..5c2dcd268 100644 --- a/spec/controllers/admin/domain_blocks_controller_spec.rb +++ b/spec/controllers/admin/domain_blocks_controller_spec.rb @@ -4,7 +4,7 @@ RSpec.describe Admin::DomainBlocksController, type: :controller do render_views before do - sign_in Fabricate(:user, admin: true), scope: :user + sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user end describe 'GET #new' do diff --git a/spec/controllers/admin/email_domain_blocks_controller_spec.rb b/spec/controllers/admin/email_domain_blocks_controller_spec.rb index cf194579d..e9cef4a94 100644 --- a/spec/controllers/admin/email_domain_blocks_controller_spec.rb +++ b/spec/controllers/admin/email_domain_blocks_controller_spec.rb @@ -6,7 +6,7 @@ RSpec.describe Admin::EmailDomainBlocksController, type: :controller do render_views before do - sign_in Fabricate(:user, admin: true), scope: :user + sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user end describe 'GET #index' do diff --git a/spec/controllers/admin/instances_controller_spec.rb b/spec/controllers/admin/instances_controller_spec.rb index 53427b874..337f7a80c 100644 --- a/spec/controllers/admin/instances_controller_spec.rb +++ b/spec/controllers/admin/instances_controller_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe Admin::InstancesController, type: :controller do render_views - let(:current_user) { Fabricate(:user, admin: true) } + let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } let!(:account) { Fabricate(:account, domain: 'popular') } let!(:account2) { Fabricate(:account, domain: 'popular') } @@ -35,11 +35,11 @@ RSpec.describe Admin::InstancesController, type: :controller do describe 'DELETE #destroy' do subject { delete :destroy, params: { id: Instance.first.id } } - let(:current_user) { Fabricate(:user, admin: admin) } + let(:current_user) { Fabricate(:user, role: role) } let(:account) { Fabricate(:account) } context 'when user is admin' do - let(:admin) { true } + let(:role) { UserRole.find_by(name: 'Admin') } it 'succeeds in purging instance' do is_expected.to redirect_to admin_instances_path @@ -47,7 +47,7 @@ RSpec.describe Admin::InstancesController, type: :controller do end context 'when user is not admin' do - let(:admin) { false } + let(:role) { nil } it 'fails to purge instance' do is_expected.to have_http_status :forbidden diff --git a/spec/controllers/admin/invites_controller_spec.rb b/spec/controllers/admin/invites_controller_spec.rb index 449a699e4..1fb488742 100644 --- a/spec/controllers/admin/invites_controller_spec.rb +++ b/spec/controllers/admin/invites_controller_spec.rb @@ -5,7 +5,7 @@ require 'rails_helper' describe Admin::InvitesController do render_views - let(:user) { Fabricate(:user, admin: true) } + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } before do sign_in user, scope: :user diff --git a/spec/controllers/admin/report_notes_controller_spec.rb b/spec/controllers/admin/report_notes_controller_spec.rb index c0013f41a..fa7572d18 100644 --- a/spec/controllers/admin/report_notes_controller_spec.rb +++ b/spec/controllers/admin/report_notes_controller_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' describe Admin::ReportNotesController do render_views - let(:user) { Fabricate(:user, admin: true) } + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } before do sign_in user, scope: :user diff --git a/spec/controllers/admin/reports_controller_spec.rb b/spec/controllers/admin/reports_controller_spec.rb index d421f0739..4cd1524bf 100644 --- a/spec/controllers/admin/reports_controller_spec.rb +++ b/spec/controllers/admin/reports_controller_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' describe Admin::ReportsController do render_views - let(:user) { Fabricate(:user, admin: true) } + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } before do sign_in user, scope: :user end diff --git a/spec/controllers/admin/resets_controller_spec.rb b/spec/controllers/admin/resets_controller_spec.rb index 28510b5af..aeb172318 100644 --- a/spec/controllers/admin/resets_controller_spec.rb +++ b/spec/controllers/admin/resets_controller_spec.rb @@ -5,7 +5,7 @@ describe Admin::ResetsController do let(:account) { Fabricate(:account) } before do - sign_in Fabricate(:user, admin: true), scope: :user + sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user end describe 'POST #create' do diff --git a/spec/controllers/admin/roles_controller_spec.rb b/spec/controllers/admin/roles_controller_spec.rb index 8e0de73cb..8ff891205 100644 --- a/spec/controllers/admin/roles_controller_spec.rb +++ b/spec/controllers/admin/roles_controller_spec.rb @@ -3,31 +3,247 @@ require 'rails_helper' describe Admin::RolesController do render_views - let(:admin) { Fabricate(:user, admin: true) } + let(:permissions) { UserRole::Flags::NONE } + let(:current_role) { UserRole.create(name: 'Foo', permissions: permissions, position: 10) } + let(:current_user) { Fabricate(:user, role: current_role) } before do - sign_in admin, scope: :user + sign_in current_user, scope: :user end - describe 'POST #promote' do - subject { post :promote, params: { account_id: user.account_id } } + describe 'GET #index' do + before do + get :index + end - let(:user) { Fabricate(:user, moderator: false, admin: false) } + context 'when user does not have permission to manage roles' do + it 'returns http forbidden' do + expect(response).to have_http_status(:forbidden) + end + end - it 'promotes user' do - expect(subject).to redirect_to admin_account_path(user.account_id) - expect(user.reload).to be_moderator + context 'when user has permission to manage roles' do + let(:permissions) { UserRole::FLAGS[:manage_roles] } + + it 'returns http success' do + expect(response).to have_http_status(:success) + end end end - describe 'POST #demote' do - subject { post :demote, params: { account_id: user.account_id } } + describe 'GET #new' do + before do + get :new + end - let(:user) { Fabricate(:user, moderator: true, admin: false) } + context 'when user does not have permission to manage roles' do + it 'returns http forbidden' do + expect(response).to have_http_status(:forbidden) + end + end - it 'demotes user' do - expect(subject).to redirect_to admin_account_path(user.account_id) - expect(user.reload).not_to be_moderator + context 'when user has permission to manage roles' do + let(:permissions) { UserRole::FLAGS[:manage_roles] } + + it 'returns http success' do + expect(response).to have_http_status(:success) + end + end + end + + describe 'POST #create' do + let(:selected_position) { 1 } + let(:selected_permissions_as_keys) { %w(manage_roles) } + + before do + post :create, params: { user_role: { name: 'Bar', position: selected_position, permissions_as_keys: selected_permissions_as_keys } } + end + + context 'when user has permission to manage roles' do + let(:permissions) { UserRole::FLAGS[:manage_roles] } + + context 'when new role\'s does not elevate above the user\'s role' do + let(:selected_position) { 1 } + let(:selected_permissions_as_keys) { %w(manage_roles) } + + it 'redirects to roles page' do + expect(response).to redirect_to(admin_roles_path) + end + + it 'creates new role' do + expect(UserRole.find_by(name: 'Bar')).to_not be_nil + end + end + + context 'when new role\'s position is higher than user\'s role' do + let(:selected_position) { 100 } + let(:selected_permissions_as_keys) { %w(manage_roles) } + + it 'renders new template' do + expect(response).to render_template(:new) + end + + it 'does not create new role' do + expect(UserRole.find_by(name: 'Bar')).to be_nil + end + end + + context 'when new role has permissions the user does not have' do + let(:selected_position) { 1 } + let(:selected_permissions_as_keys) { %w(manage_roles manage_users manage_reports) } + + it 'renders new template' do + expect(response).to render_template(:new) + end + + it 'does not create new role' do + expect(UserRole.find_by(name: 'Bar')).to be_nil + end + end + + context 'when user has administrator permission' do + let(:permissions) { UserRole::FLAGS[:administrator] } + + let(:selected_position) { 1 } + let(:selected_permissions_as_keys) { %w(manage_roles manage_users manage_reports) } + + it 'redirects to roles page' do + expect(response).to redirect_to(admin_roles_path) + end + + it 'creates new role' do + expect(UserRole.find_by(name: 'Bar')).to_not be_nil + end + end + end + end + + describe 'GET #edit' do + let(:role_position) { 8 } + let(:role) { UserRole.create(name: 'Bar', permissions: UserRole::FLAGS[:manage_users], position: role_position) } + + before do + get :edit, params: { id: role.id } + end + + context 'when user does not have permission to manage roles' do + it 'returns http forbidden' do + expect(response).to have_http_status(:forbidden) + end + end + + context 'when user has permission to manage roles' do + let(:permissions) { UserRole::FLAGS[:manage_roles] } + + context 'when user outranks the role' do + it 'returns http success' do + expect(response).to have_http_status(:success) + end + end + + context 'when role outranks user' do + let(:role_position) { current_role.position + 1 } + + it 'returns http forbidden' do + expect(response).to have_http_status(:forbidden) + end + end + end + end + + describe 'PUT #update' do + let(:role_position) { 8 } + let(:role_permissions) { UserRole::FLAGS[:manage_users] } + let(:role) { UserRole.create(name: 'Bar', permissions: role_permissions, position: role_position) } + + let(:selected_position) { 8 } + let(:selected_permissions_as_keys) { %w(manage_users) } + + before do + put :update, params: { id: role.id, user_role: { name: 'Baz', position: selected_position, permissions_as_keys: selected_permissions_as_keys } } + end + + context 'when user does not have permission to manage roles' do + it 'returns http forbidden' do + expect(response).to have_http_status(:forbidden) + end + + it 'does not update the role' do + expect(role.reload.name).to eq 'Bar' + end + end + + context 'when user has permission to manage roles' do + let(:permissions) { UserRole::FLAGS[:manage_roles] } + + context 'when role has permissions the user doesn\'t' do + it 'renders edit template' do + expect(response).to render_template(:edit) + end + + it 'does not update the role' do + expect(role.reload.name).to eq 'Bar' + end + end + + context 'when user has all permissions of the role' do + let(:permissions) { UserRole::FLAGS[:manage_roles] | UserRole::FLAGS[:manage_users] } + + context 'when user outranks the role' do + it 'redirects to roles page' do + expect(response).to redirect_to(admin_roles_path) + end + + it 'updates the role' do + expect(role.reload.name).to eq 'Baz' + end + end + + context 'when role outranks user' do + let(:role_position) { current_role.position + 1 } + + it 'returns http forbidden' do + expect(response).to have_http_status(:forbidden) + end + + it 'does not update the role' do + expect(role.reload.name).to eq 'Bar' + end + end + end + end + end + + describe 'DELETE #destroy' do + let(:role_position) { 8 } + let(:role) { UserRole.create(name: 'Bar', permissions: UserRole::FLAGS[:manage_users], position: role_position) } + + before do + delete :destroy, params: { id: role.id } + end + + context 'when user does not have permission to manage roles' do + it 'returns http forbidden' do + expect(response).to have_http_status(:forbidden) + end + end + + context 'when user has permission to manage roles' do + let(:permissions) { UserRole::FLAGS[:manage_roles] } + + context 'when user outranks the role' do + it 'redirects to roles page' do + expect(response).to redirect_to(admin_roles_path) + end + end + + context 'when role outranks user' do + let(:role_position) { current_role.position + 1 } + + it 'returns http forbidden' do + expect(response).to have_http_status(:forbidden) + end + end end end end diff --git a/spec/controllers/admin/settings_controller_spec.rb b/spec/controllers/admin/settings_controller_spec.rb index 6cf0ee20a..46749f76c 100644 --- a/spec/controllers/admin/settings_controller_spec.rb +++ b/spec/controllers/admin/settings_controller_spec.rb @@ -7,7 +7,7 @@ RSpec.describe Admin::SettingsController, type: :controller do describe 'When signed in as an admin' do before do - sign_in Fabricate(:user, admin: true), scope: :user + sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user end describe 'GET #edit' do diff --git a/spec/controllers/admin/statuses_controller_spec.rb b/spec/controllers/admin/statuses_controller_spec.rb index de32fd18e..227688e23 100644 --- a/spec/controllers/admin/statuses_controller_spec.rb +++ b/spec/controllers/admin/statuses_controller_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' describe Admin::StatusesController do render_views - let(:user) { Fabricate(:user, admin: true) } + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } let(:account) { Fabricate(:account) } let!(:status) { Fabricate(:status, account: account) } let(:media_attached_status) { Fabricate(:status, account: account, sensitive: !sensitive) } diff --git a/spec/controllers/admin/tags_controller_spec.rb b/spec/controllers/admin/tags_controller_spec.rb index 85c801a9c..52fd09eb1 100644 --- a/spec/controllers/admin/tags_controller_spec.rb +++ b/spec/controllers/admin/tags_controller_spec.rb @@ -6,7 +6,7 @@ RSpec.describe Admin::TagsController, type: :controller do render_views before do - sign_in Fabricate(:user, admin: true) + sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')) end describe 'GET #show' do diff --git a/spec/controllers/admin/users/roles_controller.rb b/spec/controllers/admin/users/roles_controller.rb new file mode 100644 index 000000000..bd6a3fa67 --- /dev/null +++ b/spec/controllers/admin/users/roles_controller.rb @@ -0,0 +1,81 @@ +require 'rails_helper' + +describe Admin::Users::RolesController do + render_views + + let(:current_role) { UserRole.create(name: 'Foo', permissions: UserRole::FLAGS[:manage_roles], position: 10) } + let(:current_user) { Fabricate(:user, role: current_role) } + + let(:previous_role) { nil } + let(:user) { Fabricate(:user, role: previous_role) } + + before do + sign_in current_user, scope: :user + end + + describe 'GET #show' do + before do + get :show, params: { user_id: user.id } + end + + it 'returns http success' do + expect(response).to have_http_status(:success) + end + + context 'when target user is higher ranked than current user' do + let(:previous_role) { UserRole.create(name: 'Baz', permissions: UserRole::FLAGS[:administrator], position: 100) } + + it 'returns http forbidden' do + expect(response).to have_http_status(:forbidden) + end + end + end + + describe 'PUT #update' do + let(:selected_role) { UserRole.create(name: 'Bar', permissions: permissions, position: position) } + + before do + put :update, params: { user_id: user.id, user: { role_id: selected_role.id } } + end + + context do + let(:permissions) { UserRole::FLAGS[:manage_roles] } + let(:position) { 1 } + + it 'updates user role' do + expect(user.reload.role_id).to eq selected_role&.id + end + + it 'redirects back to account page' do + expect(response).to redirect_to(admin_account_path(user.account_id)) + end + end + + context 'when selected role has higher position than current user\'s role' do + let(:permissions) { UserRole::FLAGS[:administrator] } + let(:position) { 100 } + + it 'does not update user role' do + expect(user.reload.role_id).to eq previous_role&.id + end + + it 'renders edit form' do + expect(response).to render_template(:show) + end + end + + context 'when target user is higher ranked than current user' do + let(:previous_role) { UserRole.create(name: 'Baz', permissions: UserRole::FLAGS[:administrator], position: 100) } + let(:permissions) { UserRole::FLAGS[:manage_roles] } + let(:position) { 1 } + + it 'does not update user role' do + expect(user.reload.role_id).to eq previous_role&.id + end + + it 'returns http forbidden' do + expect(response).to have_http_status(:forbidden) + end + end + end +end diff --git a/spec/controllers/admin/two_factor_authentications_controller_spec.rb b/spec/controllers/admin/users/two_factor_authentications_controller_spec.rb similarity index 90% rename from spec/controllers/admin/two_factor_authentications_controller_spec.rb rename to spec/controllers/admin/users/two_factor_authentications_controller_spec.rb index c65095729..e56264ef6 100644 --- a/spec/controllers/admin/two_factor_authentications_controller_spec.rb +++ b/spec/controllers/admin/users/two_factor_authentications_controller_spec.rb @@ -1,12 +1,13 @@ require 'rails_helper' require 'webauthn/fake_client' -describe Admin::TwoFactorAuthenticationsController do +describe Admin::Users::TwoFactorAuthenticationsController do render_views let(:user) { Fabricate(:user) } + before do - sign_in Fabricate(:user, admin: true), scope: :user + sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user end describe 'DELETE #destroy' do diff --git a/spec/controllers/api/v1/admin/account_actions_controller_spec.rb b/spec/controllers/api/v1/admin/account_actions_controller_spec.rb index 601290b82..199395f55 100644 --- a/spec/controllers/api/v1/admin/account_actions_controller_spec.rb +++ b/spec/controllers/api/v1/admin/account_actions_controller_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe Api::V1::Admin::AccountActionsController, type: :controller do render_views - let(:role) { 'moderator' } + let(:role) { UserRole.find_by(name: 'Moderator') } let(:user) { Fabricate(:user, role: role) } let(:scopes) { 'admin:read admin:write' } let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } @@ -22,7 +22,7 @@ RSpec.describe Api::V1::Admin::AccountActionsController, type: :controller do end shared_examples 'forbidden for wrong role' do |wrong_role| - let(:role) { wrong_role } + let(:role) { UserRole.find_by(name: wrong_role) } it 'returns http forbidden' do expect(response).to have_http_status(403) @@ -35,7 +35,7 @@ RSpec.describe Api::V1::Admin::AccountActionsController, type: :controller do end it_behaves_like 'forbidden for wrong scope', 'write:statuses' - it_behaves_like 'forbidden for wrong role', 'user' + it_behaves_like 'forbidden for wrong role', '' it 'returns http success' do expect(response).to have_http_status(200) diff --git a/spec/controllers/api/v1/admin/accounts_controller_spec.rb b/spec/controllers/api/v1/admin/accounts_controller_spec.rb index b69595f7e..cd38030e0 100644 --- a/spec/controllers/api/v1/admin/accounts_controller_spec.rb +++ b/spec/controllers/api/v1/admin/accounts_controller_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe Api::V1::Admin::AccountsController, type: :controller do render_views - let(:role) { 'moderator' } + let(:role) { UserRole.find_by(name: 'Moderator') } let(:user) { Fabricate(:user, role: role) } let(:scopes) { 'admin:read admin:write' } let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } @@ -22,7 +22,7 @@ RSpec.describe Api::V1::Admin::AccountsController, type: :controller do end shared_examples 'forbidden for wrong role' do |wrong_role| - let(:role) { wrong_role } + let(:role) { UserRole.find_by(name: wrong_role) } it 'returns http forbidden' do expect(response).to have_http_status(403) @@ -46,7 +46,7 @@ RSpec.describe Api::V1::Admin::AccountsController, type: :controller do end it_behaves_like 'forbidden for wrong scope', 'write:statuses' - it_behaves_like 'forbidden for wrong role', 'user' + it_behaves_like 'forbidden for wrong role', '' [ [{ active: 'true', local: 'true', staff: 'true' }, [:admin_account]], @@ -77,7 +77,7 @@ RSpec.describe Api::V1::Admin::AccountsController, type: :controller do end it_behaves_like 'forbidden for wrong scope', 'write:statuses' - it_behaves_like 'forbidden for wrong role', 'user' + it_behaves_like 'forbidden for wrong role', '' it 'returns http success' do expect(response).to have_http_status(200) @@ -91,7 +91,7 @@ RSpec.describe Api::V1::Admin::AccountsController, type: :controller do end it_behaves_like 'forbidden for wrong scope', 'write:statuses' - it_behaves_like 'forbidden for wrong role', 'user' + it_behaves_like 'forbidden for wrong role', '' it 'returns http success' do expect(response).to have_http_status(200) @@ -109,7 +109,7 @@ RSpec.describe Api::V1::Admin::AccountsController, type: :controller do end it_behaves_like 'forbidden for wrong scope', 'write:statuses' - it_behaves_like 'forbidden for wrong role', 'user' + it_behaves_like 'forbidden for wrong role', '' it 'returns http success' do expect(response).to have_http_status(200) @@ -127,7 +127,7 @@ RSpec.describe Api::V1::Admin::AccountsController, type: :controller do end it_behaves_like 'forbidden for wrong scope', 'write:statuses' - it_behaves_like 'forbidden for wrong role', 'user' + it_behaves_like 'forbidden for wrong role', '' it 'returns http success' do expect(response).to have_http_status(200) @@ -145,7 +145,7 @@ RSpec.describe Api::V1::Admin::AccountsController, type: :controller do end it_behaves_like 'forbidden for wrong scope', 'write:statuses' - it_behaves_like 'forbidden for wrong role', 'user' + it_behaves_like 'forbidden for wrong role', '' it 'returns http success' do expect(response).to have_http_status(200) @@ -163,7 +163,7 @@ RSpec.describe Api::V1::Admin::AccountsController, type: :controller do end it_behaves_like 'forbidden for wrong scope', 'write:statuses' - it_behaves_like 'forbidden for wrong role', 'user' + it_behaves_like 'forbidden for wrong role', '' it 'returns http success' do expect(response).to have_http_status(200) @@ -181,7 +181,7 @@ RSpec.describe Api::V1::Admin::AccountsController, type: :controller do end it_behaves_like 'forbidden for wrong scope', 'write:statuses' - it_behaves_like 'forbidden for wrong role', 'user' + it_behaves_like 'forbidden for wrong role', '' it 'returns http success' do expect(response).to have_http_status(200) diff --git a/spec/controllers/api/v1/admin/domain_allows_controller_spec.rb b/spec/controllers/api/v1/admin/domain_allows_controller_spec.rb index edee3ab6c..26a391a60 100644 --- a/spec/controllers/api/v1/admin/domain_allows_controller_spec.rb +++ b/spec/controllers/api/v1/admin/domain_allows_controller_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe Api::V1::Admin::DomainAllowsController, type: :controller do render_views - let(:role) { 'admin' } + let(:role) { UserRole.find_by(name: 'Admin') } let(:user) { Fabricate(:user, role: role) } let(:scopes) { 'admin:read admin:write' } let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } @@ -21,7 +21,7 @@ RSpec.describe Api::V1::Admin::DomainAllowsController, type: :controller do end shared_examples 'forbidden for wrong role' do |wrong_role| - let(:role) { wrong_role } + let(:role) { UserRole.find_by(name: wrong_role) } it 'returns http forbidden' do expect(response).to have_http_status(403) @@ -36,8 +36,8 @@ RSpec.describe Api::V1::Admin::DomainAllowsController, type: :controller do end it_behaves_like 'forbidden for wrong scope', 'write:statuses' - it_behaves_like 'forbidden for wrong role', 'user' - it_behaves_like 'forbidden for wrong role', 'moderator' + it_behaves_like 'forbidden for wrong role', '' + it_behaves_like 'forbidden for wrong role', 'Moderator' it 'returns http success' do expect(response).to have_http_status(200) @@ -58,8 +58,8 @@ RSpec.describe Api::V1::Admin::DomainAllowsController, type: :controller do end it_behaves_like 'forbidden for wrong scope', 'write:statuses' - it_behaves_like 'forbidden for wrong role', 'user' - it_behaves_like 'forbidden for wrong role', 'moderator' + it_behaves_like 'forbidden for wrong role', '' + it_behaves_like 'forbidden for wrong role', 'Moderator' it 'returns http success' do expect(response).to have_http_status(200) @@ -79,8 +79,8 @@ RSpec.describe Api::V1::Admin::DomainAllowsController, type: :controller do end it_behaves_like 'forbidden for wrong scope', 'write:statuses' - it_behaves_like 'forbidden for wrong role', 'user' - it_behaves_like 'forbidden for wrong role', 'moderator' + it_behaves_like 'forbidden for wrong role', '' + it_behaves_like 'forbidden for wrong role', 'Moderator' it 'returns http success' do expect(response).to have_http_status(200) @@ -99,8 +99,8 @@ RSpec.describe Api::V1::Admin::DomainAllowsController, type: :controller do end it_behaves_like 'forbidden for wrong scope', 'write:statuses' - it_behaves_like 'forbidden for wrong role', 'user' - it_behaves_like 'forbidden for wrong role', 'moderator' + it_behaves_like 'forbidden for wrong role', '' + it_behaves_like 'forbidden for wrong role', 'Moderator' it 'returns http success' do expect(response).to have_http_status(200) diff --git a/spec/controllers/api/v1/admin/domain_blocks_controller_spec.rb b/spec/controllers/api/v1/admin/domain_blocks_controller_spec.rb index 196f6dc28..f12285b2a 100644 --- a/spec/controllers/api/v1/admin/domain_blocks_controller_spec.rb +++ b/spec/controllers/api/v1/admin/domain_blocks_controller_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe Api::V1::Admin::DomainBlocksController, type: :controller do render_views - let(:role) { 'admin' } + let(:role) { UserRole.find_by(name: 'Admin') } let(:user) { Fabricate(:user, role: role) } let(:scopes) { 'admin:read admin:write' } let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } @@ -21,7 +21,7 @@ RSpec.describe Api::V1::Admin::DomainBlocksController, type: :controller do end shared_examples 'forbidden for wrong role' do |wrong_role| - let(:role) { wrong_role } + let(:role) { UserRole.find_by(name: wrong_role) } it 'returns http forbidden' do expect(response).to have_http_status(403) @@ -36,8 +36,8 @@ RSpec.describe Api::V1::Admin::DomainBlocksController, type: :controller do end it_behaves_like 'forbidden for wrong scope', 'write:statuses' - it_behaves_like 'forbidden for wrong role', 'user' - it_behaves_like 'forbidden for wrong role', 'moderator' + it_behaves_like 'forbidden for wrong role', '' + it_behaves_like 'forbidden for wrong role', 'Moderator' it 'returns http success' do expect(response).to have_http_status(200) @@ -58,8 +58,8 @@ RSpec.describe Api::V1::Admin::DomainBlocksController, type: :controller do end it_behaves_like 'forbidden for wrong scope', 'write:statuses' - it_behaves_like 'forbidden for wrong role', 'user' - it_behaves_like 'forbidden for wrong role', 'moderator' + it_behaves_like 'forbidden for wrong role', '' + it_behaves_like 'forbidden for wrong role', 'Moderator' it 'returns http success' do expect(response).to have_http_status(200) @@ -79,8 +79,8 @@ RSpec.describe Api::V1::Admin::DomainBlocksController, type: :controller do end it_behaves_like 'forbidden for wrong scope', 'write:statuses' - it_behaves_like 'forbidden for wrong role', 'user' - it_behaves_like 'forbidden for wrong role', 'moderator' + it_behaves_like 'forbidden for wrong role', '' + it_behaves_like 'forbidden for wrong role', 'Moderator' it 'returns http success' do expect(response).to have_http_status(200) @@ -100,8 +100,8 @@ RSpec.describe Api::V1::Admin::DomainBlocksController, type: :controller do end it_behaves_like 'forbidden for wrong scope', 'write:statuses' - it_behaves_like 'forbidden for wrong role', 'user' - it_behaves_like 'forbidden for wrong role', 'moderator' + it_behaves_like 'forbidden for wrong role', '' + it_behaves_like 'forbidden for wrong role', 'Moderator' it 'returns http success' do expect(response).to have_http_status(200) diff --git a/spec/controllers/api/v1/admin/reports_controller_spec.rb b/spec/controllers/api/v1/admin/reports_controller_spec.rb index b6df53048..880e72030 100644 --- a/spec/controllers/api/v1/admin/reports_controller_spec.rb +++ b/spec/controllers/api/v1/admin/reports_controller_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe Api::V1::Admin::ReportsController, type: :controller do render_views - let(:role) { 'moderator' } + let(:role) { UserRole.find_by(name: 'Moderator') } let(:user) { Fabricate(:user, role: role) } let(:scopes) { 'admin:read admin:write' } let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } @@ -22,7 +22,7 @@ RSpec.describe Api::V1::Admin::ReportsController, type: :controller do end shared_examples 'forbidden for wrong role' do |wrong_role| - let(:role) { wrong_role } + let(:role) { UserRole.find_by(name: wrong_role) } it 'returns http forbidden' do expect(response).to have_http_status(403) @@ -35,7 +35,7 @@ RSpec.describe Api::V1::Admin::ReportsController, type: :controller do end it_behaves_like 'forbidden for wrong scope', 'write:statuses' - it_behaves_like 'forbidden for wrong role', 'user' + it_behaves_like 'forbidden for wrong role', '' it 'returns http success' do expect(response).to have_http_status(200) @@ -48,7 +48,7 @@ RSpec.describe Api::V1::Admin::ReportsController, type: :controller do end it_behaves_like 'forbidden for wrong scope', 'write:statuses' - it_behaves_like 'forbidden for wrong role', 'user' + it_behaves_like 'forbidden for wrong role', '' it 'returns http success' do expect(response).to have_http_status(200) @@ -61,7 +61,7 @@ RSpec.describe Api::V1::Admin::ReportsController, type: :controller do end it_behaves_like 'forbidden for wrong scope', 'write:statuses' - it_behaves_like 'forbidden for wrong role', 'user' + it_behaves_like 'forbidden for wrong role', '' it 'returns http success' do expect(response).to have_http_status(200) @@ -74,7 +74,7 @@ RSpec.describe Api::V1::Admin::ReportsController, type: :controller do end it_behaves_like 'forbidden for wrong scope', 'write:statuses' - it_behaves_like 'forbidden for wrong role', 'user' + it_behaves_like 'forbidden for wrong role', '' it 'returns http success' do expect(response).to have_http_status(200) @@ -87,7 +87,7 @@ RSpec.describe Api::V1::Admin::ReportsController, type: :controller do end it_behaves_like 'forbidden for wrong scope', 'write:statuses' - it_behaves_like 'forbidden for wrong role', 'user' + it_behaves_like 'forbidden for wrong role', '' it 'returns http success' do expect(response).to have_http_status(200) @@ -100,7 +100,7 @@ RSpec.describe Api::V1::Admin::ReportsController, type: :controller do end it_behaves_like 'forbidden for wrong scope', 'write:statuses' - it_behaves_like 'forbidden for wrong role', 'user' + it_behaves_like 'forbidden for wrong role', '' it 'returns http success' do expect(response).to have_http_status(200) diff --git a/spec/controllers/api/v1/reports_controller_spec.rb b/spec/controllers/api/v1/reports_controller_spec.rb index b5baf60e1..dbc64e704 100644 --- a/spec/controllers/api/v1/reports_controller_spec.rb +++ b/spec/controllers/api/v1/reports_controller_spec.rb @@ -13,7 +13,7 @@ RSpec.describe Api::V1::ReportsController, type: :controller do end describe 'POST #create' do - let!(:admin) { Fabricate(:user, admin: true) } + let!(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } let(:scopes) { 'write:reports' } let(:status) { Fabricate(:status) } diff --git a/spec/controllers/api/v2/admin/accounts_controller_spec.rb b/spec/controllers/api/v2/admin/accounts_controller_spec.rb index 3212ddb84..2508a9e05 100644 --- a/spec/controllers/api/v2/admin/accounts_controller_spec.rb +++ b/spec/controllers/api/v2/admin/accounts_controller_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe Api::V2::Admin::AccountsController, type: :controller do render_views - let(:role) { 'moderator' } + let(:role) { UserRole.find_by(name: 'Moderator') } let(:user) { Fabricate(:user, role: role) } let(:scopes) { 'admin:read admin:write' } let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } @@ -22,7 +22,7 @@ RSpec.describe Api::V2::Admin::AccountsController, type: :controller do end shared_examples 'forbidden for wrong role' do |wrong_role| - let(:role) { wrong_role } + let(:role) { UserRole.find_by(name: wrong_role) } it 'returns http forbidden' do expect(response).to have_http_status(403) @@ -46,7 +46,7 @@ RSpec.describe Api::V2::Admin::AccountsController, type: :controller do end it_behaves_like 'forbidden for wrong scope', 'write:statuses' - it_behaves_like 'forbidden for wrong role', 'user' + it_behaves_like 'forbidden for wrong role', '' [ [{ status: 'active', origin: 'local', permissions: 'staff' }, [:admin_account]], diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb index 53e163d49..1b002e01c 100644 --- a/spec/controllers/application_controller_spec.rb +++ b/spec/controllers/application_controller_spec.rb @@ -183,70 +183,6 @@ describe ApplicationController, type: :controller do end end - describe 'require_admin!' do - controller do - before_action :require_admin! - - def success - head 200 - end - end - - before do - routes.draw { get 'success' => 'anonymous#success' } - end - - it 'returns a 403 if current user is not admin' do - sign_in(Fabricate(:user, admin: false)) - get 'success' - expect(response).to have_http_status(403) - end - - it 'returns a 403 if current user is only a moderator' do - sign_in(Fabricate(:user, moderator: true)) - get 'success' - expect(response).to have_http_status(403) - end - - it 'does nothing if current user is admin' do - sign_in(Fabricate(:user, admin: true)) - get 'success' - expect(response).to have_http_status(200) - end - end - - describe 'require_staff!' do - controller do - before_action :require_staff! - - def success - head 200 - end - end - - before do - routes.draw { get 'success' => 'anonymous#success' } - end - - it 'returns a 403 if current user is not admin or moderator' do - sign_in(Fabricate(:user, admin: false, moderator: false)) - get 'success' - expect(response).to have_http_status(403) - end - - it 'does nothing if current user is moderator' do - sign_in(Fabricate(:user, moderator: true)) - get 'success' - expect(response).to have_http_status(200) - end - - it 'does nothing if current user is admin' do - sign_in(Fabricate(:user, admin: true)) - get 'success' - expect(response).to have_http_status(200) - end - end - describe 'forbidden' do controller do def route_forbidden diff --git a/spec/controllers/disputes/appeals_controller_spec.rb b/spec/controllers/disputes/appeals_controller_spec.rb index faa571fc9..90f222f49 100644 --- a/spec/controllers/disputes/appeals_controller_spec.rb +++ b/spec/controllers/disputes/appeals_controller_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Disputes::AppealsController, type: :controller do before { sign_in current_user, scope: :user } - let!(:admin) { Fabricate(:user, admin: true) } + let!(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } describe '#create' do let(:current_user) { Fabricate(:user) } diff --git a/spec/controllers/invites_controller_spec.rb b/spec/controllers/invites_controller_spec.rb index 76e617e6b..23b98fb12 100644 --- a/spec/controllers/invites_controller_spec.rb +++ b/spec/controllers/invites_controller_spec.rb @@ -7,30 +7,30 @@ describe InvitesController do sign_in user end - around do |example| - min_invite_role = Setting.min_invite_role - example.run - Setting.min_invite_role = min_invite_role - end - describe 'GET #index' do subject { get :index } - let(:user) { Fabricate(:user, moderator: false, admin: false) } + let(:user) { Fabricate(:user) } let!(:invite) { Fabricate(:invite, user: user) } - context 'when user is a staff' do + context 'when everyone can invite' do + before do + UserRole.everyone.update(permissions: UserRole.everyone.permissions | UserRole::FLAGS[:invite_users]) + end + it 'renders index page' do - Setting.min_invite_role = 'user' expect(subject).to render_template :index expect(assigns(:invites)).to include invite expect(assigns(:invites).count).to eq 1 end end - context 'when user is not a staff' do + context 'when not everyone can invite' do + before do + UserRole.everyone.update(permissions: UserRole.everyone.permissions & ~UserRole::FLAGS[:invite_users]) + end + it 'returns 403' do - Setting.min_invite_role = 'modelator' expect(subject).to have_http_status 403 end end @@ -39,8 +39,12 @@ describe InvitesController do describe 'POST #create' do subject { post :create, params: { invite: { max_uses: '10', expires_in: 1800 } } } - context 'when user is an admin' do - let(:user) { Fabricate(:user, moderator: false, admin: true) } + context 'when everyone can invite' do + let(:user) { Fabricate(:user) } + + before do + UserRole.everyone.update(permissions: UserRole.everyone.permissions | UserRole::FLAGS[:invite_users]) + end it 'succeeds to create a invite' do expect { subject }.to change { Invite.count }.by(1) @@ -49,8 +53,12 @@ describe InvitesController do end end - context 'when user is not an admin' do - let(:user) { Fabricate(:user, moderator: true, admin: false) } + context 'when not everyone can invite' do + let(:user) { Fabricate(:user) } + + before do + UserRole.everyone.update(permissions: UserRole.everyone.permissions & ~UserRole::FLAGS[:invite_users]) + end it 'returns 403' do expect(subject).to have_http_status 403 @@ -61,8 +69,8 @@ describe InvitesController do describe 'DELETE #create' do subject { delete :destroy, params: { id: invite.id } } + let(:user) { Fabricate(:user) } let!(:invite) { Fabricate(:invite, user: user, expires_at: nil) } - let(:user) { Fabricate(:user, moderator: false, admin: true) } it 'expires invite' do expect(subject).to redirect_to invites_path diff --git a/spec/fabricators/user_role_fabricator.rb b/spec/fabricators/user_role_fabricator.rb new file mode 100644 index 000000000..28f76c8c4 --- /dev/null +++ b/spec/fabricators/user_role_fabricator.rb @@ -0,0 +1,5 @@ +Fabricator(:user_role) do + name "MyString" + color "MyString" + permissions "" +end \ No newline at end of file diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index dc0ca3da3..467d41836 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -445,7 +445,7 @@ RSpec.describe Account, type: :model do it 'accepts arbitrary limits' do 2.times.each { Fabricate(:account, display_name: "Display Name") } - results = Account.search_for("display", 1) + results = Account.search_for("display", limit: 1) expect(results.size).to eq 1 end @@ -473,7 +473,7 @@ RSpec.describe Account, type: :model do ) account.follow!(match) - results = Account.advanced_search_for('A?l\i:c e', account, 10, true) + results = Account.advanced_search_for('A?l\i:c e', account, limit: 10, following: true) expect(results).to eq [match] end @@ -485,7 +485,7 @@ RSpec.describe Account, type: :model do domain: 'example.com' ) - results = Account.advanced_search_for('A?l\i:c e', account, 10, true) + results = Account.advanced_search_for('A?l\i:c e', account, limit: 10, following: true) expect(results).to eq [] end @@ -498,7 +498,7 @@ RSpec.describe Account, type: :model do suspended: true ) - results = Account.advanced_search_for('username', account, 10, true) + results = Account.advanced_search_for('username', account, limit: 10, following: true) expect(results).to eq [] end @@ -511,7 +511,7 @@ RSpec.describe Account, type: :model do match.user.update(approved: false) - results = Account.advanced_search_for('username', account, 10, true) + results = Account.advanced_search_for('username', account, limit: 10, following: true) expect(results).to eq [] end @@ -524,7 +524,7 @@ RSpec.describe Account, type: :model do match.user.update(confirmed_at: nil) - results = Account.advanced_search_for('username', account, 10, true) + results = Account.advanced_search_for('username', account, limit: 10, following: true) expect(results).to eq [] end end @@ -588,7 +588,7 @@ RSpec.describe Account, type: :model do it 'accepts arbitrary limits' do 2.times { Fabricate(:account, display_name: "Display Name") } - results = Account.advanced_search_for("display", account, 1) + results = Account.advanced_search_for("display", account, limit: 1) expect(results.size).to eq 1 end diff --git a/spec/models/admin/account_action_spec.rb b/spec/models/admin/account_action_spec.rb index 809c7fc46..b6a052b76 100644 --- a/spec/models/admin/account_action_spec.rb +++ b/spec/models/admin/account_action_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Admin::AccountAction, type: :model do describe '#save!' do subject { account_action.save! } - let(:account) { Fabricate(:user, admin: true).account } + let(:account) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } let(:target_account) { Fabricate(:account) } let(:type) { 'disable' } diff --git a/spec/models/user_role_spec.rb b/spec/models/user_role_spec.rb new file mode 100644 index 000000000..28019593e --- /dev/null +++ b/spec/models/user_role_spec.rb @@ -0,0 +1,189 @@ +require 'rails_helper' + +RSpec.describe UserRole, type: :model do + subject { described_class.create(name: 'Foo', position: 1) } + + describe '#can?' do + context 'with a single flag' do + it 'returns true if any of them are present' do + subject.permissions = UserRole::FLAGS[:manage_reports] + expect(subject.can?(:manage_reports)).to be true + end + + it 'returns false if it is not set' do + expect(subject.can?(:manage_reports)).to be false + end + end + + context 'with multiple flags' do + it 'returns true if any of them are present' do + subject.permissions = UserRole::FLAGS[:manage_users] + expect(subject.can?(:manage_reports, :manage_users)).to be true + end + + it 'returns false if none of them are present' do + expect(subject.can?(:manage_reports, :manage_users)).to be false + end + end + + context 'with an unknown flag' do + it 'raises an error' do + expect { subject.can?(:foo) }.to raise_error ArgumentError + end + end + end + + describe '#overrides?' do + it 'returns true if other role has lower position' do + expect(subject.overrides?(described_class.new(position: subject.position - 1))).to be true + end + + it 'returns true if other role is nil' do + expect(subject.overrides?(nil)).to be true + end + + it 'returns false if other role has higher position' do + expect(subject.overrides?(described_class.new(position: subject.position + 1))).to be false + end + end + + describe '#permissions_as_keys' do + before do + subject.permissions = UserRole::FLAGS[:invite_users] | UserRole::FLAGS[:view_dashboard] | UserRole::FLAGS[:manage_reports] + end + + it 'returns an array' do + expect(subject.permissions_as_keys).to match_array %w(invite_users view_dashboard manage_reports) + end + end + + describe '#permissions_as_keys=' do + let(:input) { } + + before do + subject.permissions_as_keys = input + end + + context 'with a single value' do + let(:input) { %w(manage_users) } + + it 'sets permission flags' do + expect(subject.permissions).to eq UserRole::FLAGS[:manage_users] + end + end + + context 'with multiple values' do + let(:input) { %w(manage_users manage_reports) } + + it 'sets permission flags' do + expect(subject.permissions).to eq UserRole::FLAGS[:manage_users] | UserRole::FLAGS[:manage_reports] + end + end + + context 'with an unknown value' do + let(:input) { %w(foo) } + + it 'does not set permission flags' do + expect(subject.permissions).to eq UserRole::Flags::NONE + end + end + end + + describe '#computed_permissions' do + context 'when the role is nobody' do + let(:subject) { described_class.nobody } + + it 'returns none' do + expect(subject.computed_permissions).to eq UserRole::Flags::NONE + end + end + + context 'when the role is everyone' do + let(:subject) { described_class.everyone } + + it 'returns permissions' do + expect(subject.computed_permissions).to eq subject.permissions + end + end + + context 'when role has the administrator flag' do + before do + subject.permissions = UserRole::FLAGS[:administrator] + end + + it 'returns all permissions' do + expect(subject.computed_permissions).to eq UserRole::Flags::ALL + end + end + + context do + it 'returns permissions combined with the everyone role' do + expect(subject.computed_permissions).to eq described_class.everyone.permissions + end + end + end + + describe '.everyone' do + subject { described_class.everyone } + + it 'returns a role' do + expect(subject).to be_kind_of(described_class) + end + + it 'is identified as the everyone role' do + expect(subject.everyone?).to be true + end + + it 'has default permissions' do + expect(subject.permissions).to eq UserRole::FLAGS[:invite_users] + end + + it 'has negative position' do + expect(subject.position).to eq -1 + end + end + + describe '.nobody' do + subject { described_class.nobody } + + it 'returns a role' do + expect(subject).to be_kind_of(described_class) + end + + it 'is identified as the nobody role' do + expect(subject.nobody?).to be true + end + + it 'has no permissions' do + expect(subject.permissions).to eq UserRole::Flags::NONE + end + + it 'has negative position' do + expect(subject.position).to eq -1 + end + end + + describe '#everyone?' do + it 'returns true when id is -99' do + subject.id = -99 + expect(subject.everyone?).to be true + end + + it 'returns false when id is not -99' do + subject.id = 123 + expect(subject.everyone?).to be false + end + end + + describe '#nobody?' do + it 'returns true when id is nil' do + subject.id = nil + expect(subject.nobody?).to be true + end + + it 'returns false when id is not nil' do + subject.id = 123 + expect(subject.nobody?).to be false + end + end +end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 1645ab59e..a7da31e60 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -56,14 +56,6 @@ RSpec.describe User, type: :model do end end - describe 'admins' do - it 'returns an array of users who are admin' do - user_1 = Fabricate(:user, admin: false) - user_2 = Fabricate(:user, admin: true) - expect(User.admins).to match_array([user_2]) - end - end - describe 'confirmed' do it 'returns an array of users who are confirmed' do user_1 = Fabricate(:user, confirmed_at: nil) @@ -289,49 +281,6 @@ RSpec.describe User, type: :model do end end - describe '#role' do - it 'returns admin for admin' do - user = User.new(admin: true) - expect(user.role).to eq 'admin' - end - - it 'returns moderator for moderator' do - user = User.new(moderator: true) - expect(user.role).to eq 'moderator' - end - - it 'returns user otherwise' do - user = User.new - expect(user.role).to eq 'user' - end - end - - describe '#role?' do - it 'returns false when invalid role requested' do - user = User.new(admin: true) - expect(user.role?('disabled')).to be false - end - - it 'returns true when exact role match' do - user = User.new - mod = User.new(moderator: true) - admin = User.new(admin: true) - - expect(user.role?('user')).to be true - expect(mod.role?('moderator')).to be true - expect(admin.role?('admin')).to be true - end - - it 'returns true when role higher than needed' do - mod = User.new(moderator: true) - admin = User.new(admin: true) - - expect(mod.role?('user')).to be true - expect(admin.role?('user')).to be true - expect(admin.role?('moderator')).to be true - end - end - describe '#disable!' do subject(:user) { Fabricate(:user, disabled: false, current_sign_in_at: current_sign_in_at, last_sign_in_at: nil) } let(:current_sign_in_at) { Time.zone.now } @@ -420,110 +369,6 @@ RSpec.describe User, type: :model do end end - describe '#promote!' do - subject(:user) { Fabricate(:user, admin: is_admin, moderator: is_moderator) } - - before do - user.promote! - end - - context 'when user is an admin' do - let(:is_admin) { true } - - context 'when user is a moderator' do - let(:is_moderator) { true } - - it 'changes moderator filed false' do - expect(user).to be_admin - expect(user).not_to be_moderator - end - end - - context 'when user is not a moderator' do - let(:is_moderator) { false } - - it 'does not change status' do - expect(user).to be_admin - expect(user).not_to be_moderator - end - end - end - - context 'when user is not admin' do - let(:is_admin) { false } - - context 'when user is a moderator' do - let(:is_moderator) { true } - - it 'changes user into an admin' do - expect(user).to be_admin - expect(user).not_to be_moderator - end - end - - context 'when user is not a moderator' do - let(:is_moderator) { false } - - it 'changes user into a moderator' do - expect(user).not_to be_admin - expect(user).to be_moderator - end - end - end - end - - describe '#demote!' do - subject(:user) { Fabricate(:user, admin: admin, moderator: moderator) } - - before do - user.demote! - end - - context 'when user is an admin' do - let(:admin) { true } - - context 'when user is a moderator' do - let(:moderator) { true } - - it 'changes user into a moderator' do - expect(user).not_to be_admin - expect(user).to be_moderator - end - end - - context 'when user is not a moderator' do - let(:moderator) { false } - - it 'changes user into a moderator' do - expect(user).not_to be_admin - expect(user).to be_moderator - end - end - end - - context 'when user is not an admin' do - let(:admin) { false } - - context 'when user is a moderator' do - let(:moderator) { true } - - it 'changes user into a plain user' do - expect(user).not_to be_admin - expect(user).not_to be_moderator - end - end - - context 'when user is not a moderator' do - let(:moderator) { false } - - it 'does not change any fields' do - expect(user).not_to be_admin - expect(user).not_to be_moderator - end - end - end - end - describe '#active_for_authentication?' do subject { user.active_for_authentication? } let(:user) { Fabricate(:user, disabled: disabled, confirmed_at: confirmed_at) } @@ -560,4 +405,8 @@ RSpec.describe User, type: :model do end end end + + describe '.those_who_can' do + pending + end end diff --git a/spec/policies/account_moderation_note_policy_spec.rb b/spec/policies/account_moderation_note_policy_spec.rb index 39ec2008a..846747346 100644 --- a/spec/policies/account_moderation_note_policy_spec.rb +++ b/spec/policies/account_moderation_note_policy_spec.rb @@ -5,7 +5,7 @@ require 'pundit/rspec' RSpec.describe AccountModerationNotePolicy do let(:subject) { described_class } - let(:admin) { Fabricate(:user, admin: true).account } + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } let(:john) { Fabricate(:account) } permissions :create? do @@ -31,7 +31,7 @@ RSpec.describe AccountModerationNotePolicy do context 'admin' do it 'grants to destroy' do - expect(subject).to permit(admin, AccountModerationNotePolicy) + expect(subject).to permit(admin, account_moderation_note) end end diff --git a/spec/policies/account_policy_spec.rb b/spec/policies/account_policy_spec.rb index b55eb65a7..0f23fd97e 100644 --- a/spec/policies/account_policy_spec.rb +++ b/spec/policies/account_policy_spec.rb @@ -5,7 +5,7 @@ require 'pundit/rspec' RSpec.describe AccountPolicy do let(:subject) { described_class } - let(:admin) { Fabricate(:user, admin: true).account } + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } let(:john) { Fabricate(:account) } let(:alice) { Fabricate(:account) } @@ -55,7 +55,7 @@ RSpec.describe AccountPolicy do end end - permissions :redownload?, :subscribe?, :unsubscribe? do + permissions :redownload? do context 'admin' do it 'permits' do expect(subject).to permit(admin) @@ -70,7 +70,7 @@ RSpec.describe AccountPolicy do end permissions :suspend?, :silence? do - let(:staff) { Fabricate(:user, admin: true).account } + let(:staff) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } context 'staff' do context 'record is staff' do @@ -94,7 +94,7 @@ RSpec.describe AccountPolicy do end permissions :memorialize? do - let(:other_admin) { Fabricate(:user, admin: true).account } + let(:other_admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } context 'admin' do context 'record is admin' do diff --git a/spec/policies/custom_emoji_policy_spec.rb b/spec/policies/custom_emoji_policy_spec.rb index e4f1af3c1..6a6ef6694 100644 --- a/spec/policies/custom_emoji_policy_spec.rb +++ b/spec/policies/custom_emoji_policy_spec.rb @@ -5,7 +5,7 @@ require 'pundit/rspec' RSpec.describe CustomEmojiPolicy do let(:subject) { described_class } - let(:admin) { Fabricate(:user, admin: true).account } + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } let(:john) { Fabricate(:account) } permissions :index?, :enable?, :disable? do diff --git a/spec/policies/domain_block_policy_spec.rb b/spec/policies/domain_block_policy_spec.rb index b24ed9e3a..01b97e823 100644 --- a/spec/policies/domain_block_policy_spec.rb +++ b/spec/policies/domain_block_policy_spec.rb @@ -5,7 +5,7 @@ require 'pundit/rspec' RSpec.describe DomainBlockPolicy do let(:subject) { described_class } - let(:admin) { Fabricate(:user, admin: true).account } + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } let(:john) { Fabricate(:account) } permissions :index?, :show?, :create?, :destroy? do diff --git a/spec/policies/email_domain_block_policy_spec.rb b/spec/policies/email_domain_block_policy_spec.rb index 1ff55af8e..913075c3d 100644 --- a/spec/policies/email_domain_block_policy_spec.rb +++ b/spec/policies/email_domain_block_policy_spec.rb @@ -5,7 +5,7 @@ require 'pundit/rspec' RSpec.describe EmailDomainBlockPolicy do let(:subject) { described_class } - let(:admin) { Fabricate(:user, admin: true).account } + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } let(:john) { Fabricate(:account) } permissions :index?, :create?, :destroy? do diff --git a/spec/policies/instance_policy_spec.rb b/spec/policies/instance_policy_spec.rb index 71ef1fe50..f6f51af06 100644 --- a/spec/policies/instance_policy_spec.rb +++ b/spec/policies/instance_policy_spec.rb @@ -5,7 +5,7 @@ require 'pundit/rspec' RSpec.describe InstancePolicy do let(:subject) { described_class } - let(:admin) { Fabricate(:user, admin: true).account } + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } let(:john) { Fabricate(:account) } permissions :index?, :show?, :destroy? do diff --git a/spec/policies/invite_policy_spec.rb b/spec/policies/invite_policy_spec.rb index 122137804..01660322f 100644 --- a/spec/policies/invite_policy_spec.rb +++ b/spec/policies/invite_policy_spec.rb @@ -5,8 +5,8 @@ require 'pundit/rspec' RSpec.describe InvitePolicy do let(:subject) { described_class } - let(:admin) { Fabricate(:user, admin: true).account } - let(:john) { Fabricate(:account) } + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:john) { Fabricate(:user).account } permissions :index? do context 'staff?' do @@ -17,16 +17,22 @@ RSpec.describe InvitePolicy do end permissions :create? do - context 'min_required_role?' do + context 'has privilege' do + before do + UserRole.everyone.update(permissions: UserRole::FLAGS[:invite_users]) + end + it 'permits' do - allow_any_instance_of(described_class).to receive(:min_required_role?) { true } expect(subject).to permit(john, Invite) end end - context 'not min_required_role?' do + context 'does not have privilege' do + before do + UserRole.everyone.update(permissions: UserRole::Flags::NONE) + end + it 'denies' do - allow_any_instance_of(described_class).to receive(:min_required_role?) { false } expect(subject).to_not permit(john, Invite) end end @@ -54,39 +60,15 @@ RSpec.describe InvitePolicy do end context 'not owner?' do - context 'Setting.min_invite_role == "admin"' do - before do - Setting.min_invite_role = 'admin' - end - - context 'admin?' do - it 'permits' do - expect(subject).to permit(admin, Fabricate(:invite)) - end - end - - context 'not admin?' do - it 'denies' do - expect(subject).to_not permit(john, Fabricate(:invite)) - end + context 'admin?' do + it 'permits' do + expect(subject).to permit(admin, Fabricate(:invite)) end end - context 'Setting.min_invite_role != "admin"' do - before do - Setting.min_invite_role = 'else' - end - - context 'staff?' do - it 'permits' do - expect(subject).to permit(admin, Fabricate(:invite)) - end - end - - context 'not staff?' do - it 'denies' do - expect(subject).to_not permit(john, Fabricate(:invite)) - end + context 'not admin?' do + it 'denies' do + expect(subject).to_not permit(john, Fabricate(:invite)) end end end diff --git a/spec/policies/relay_policy_spec.rb b/spec/policies/relay_policy_spec.rb index 139d945dc..2c50ba1e9 100644 --- a/spec/policies/relay_policy_spec.rb +++ b/spec/policies/relay_policy_spec.rb @@ -5,7 +5,7 @@ require 'pundit/rspec' RSpec.describe RelayPolicy do let(:subject) { described_class } - let(:admin) { Fabricate(:user, admin: true).account } + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } let(:john) { Fabricate(:account) } permissions :update? do diff --git a/spec/policies/report_note_policy_spec.rb b/spec/policies/report_note_policy_spec.rb index c34f99b71..99f5ffb8e 100644 --- a/spec/policies/report_note_policy_spec.rb +++ b/spec/policies/report_note_policy_spec.rb @@ -5,7 +5,7 @@ require 'pundit/rspec' RSpec.describe ReportNotePolicy do let(:subject) { described_class } - let(:admin) { Fabricate(:user, admin: true).account } + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } let(:john) { Fabricate(:account) } permissions :create? do @@ -25,7 +25,8 @@ RSpec.describe ReportNotePolicy do permissions :destroy? do context 'admin?' do it 'permit' do - expect(subject).to permit(admin, ReportNote) + report_note = Fabricate(:report_note, account: john) + expect(subject).to permit(admin, report_note) end end diff --git a/spec/policies/report_policy_spec.rb b/spec/policies/report_policy_spec.rb index 84c366d7f..8b005d8dd 100644 --- a/spec/policies/report_policy_spec.rb +++ b/spec/policies/report_policy_spec.rb @@ -5,7 +5,7 @@ require 'pundit/rspec' RSpec.describe ReportPolicy do let(:subject) { described_class } - let(:admin) { Fabricate(:user, admin: true).account } + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } let(:john) { Fabricate(:account) } permissions :update?, :index?, :show? do diff --git a/spec/policies/settings_policy_spec.rb b/spec/policies/settings_policy_spec.rb index 3fa183c50..e16ee51a4 100644 --- a/spec/policies/settings_policy_spec.rb +++ b/spec/policies/settings_policy_spec.rb @@ -5,7 +5,7 @@ require 'pundit/rspec' RSpec.describe SettingsPolicy do let(:subject) { described_class } - let(:admin) { Fabricate(:user, admin: true).account } + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } let(:john) { Fabricate(:account) } permissions :update?, :show? do diff --git a/spec/policies/status_policy_spec.rb b/spec/policies/status_policy_spec.rb index 28b808ee2..205ecd720 100644 --- a/spec/policies/status_policy_spec.rb +++ b/spec/policies/status_policy_spec.rb @@ -6,7 +6,7 @@ require 'pundit/rspec' RSpec.describe StatusPolicy, type: :model do subject { described_class } - let(:admin) { Fabricate(:user, admin: true) } + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } let(:alice) { Fabricate(:account, username: 'alice') } let(:bob) { Fabricate(:account, username: 'bob') } let(:status) { Fabricate(:status, account: alice) } diff --git a/spec/policies/tag_policy_spec.rb b/spec/policies/tag_policy_spec.rb index 256e6786a..9be7140fc 100644 --- a/spec/policies/tag_policy_spec.rb +++ b/spec/policies/tag_policy_spec.rb @@ -5,7 +5,7 @@ require 'pundit/rspec' RSpec.describe TagPolicy do let(:subject) { described_class } - let(:admin) { Fabricate(:user, admin: true).account } + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } let(:john) { Fabricate(:account) } permissions :index?, :show?, :update? do diff --git a/spec/policies/user_policy_spec.rb b/spec/policies/user_policy_spec.rb index 731c041d1..ff0916674 100644 --- a/spec/policies/user_policy_spec.rb +++ b/spec/policies/user_policy_spec.rb @@ -5,7 +5,7 @@ require 'pundit/rspec' RSpec.describe UserPolicy do let(:subject) { described_class } - let(:admin) { Fabricate(:user, admin: true).account } + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } let(:john) { Fabricate(:account) } permissions :reset_password?, :change_email? do @@ -111,57 +111,4 @@ RSpec.describe UserPolicy do end end end - - permissions :promote? do - context 'admin?' do - context 'promotable?' do - it 'permits' do - expect(subject).to permit(admin, john.user) - end - end - - context '!promotable?' do - it 'denies' do - expect(subject).to_not permit(admin, admin.user) - end - end - end - - context '!admin?' do - it 'denies' do - expect(subject).to_not permit(john, User) - end - end - end - - permissions :demote? do - context 'admin?' do - context '!record.admin?' do - context 'demoteable?' do - it 'permits' do - john.user.update(moderator: true) - expect(subject).to permit(admin, john.user) - end - end - - context '!demoteable?' do - it 'denies' do - expect(subject).to_not permit(admin, john.user) - end - end - end - - context 'record.admin?' do - it 'denies' do - expect(subject).to_not permit(admin, admin.user) - end - end - end - - context '!admin?' do - it 'denies' do - expect(subject).to_not permit(john, User) - end - end - end end From 0665ba8a2307f7e894c99261864536d9998b2ca1 Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 5 Jul 2022 20:01:50 +0200 Subject: [PATCH 212/652] Fix incorrect param in role card link (#18776) --- app/views/admin/roles/_role.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/admin/roles/_role.html.haml b/app/views/admin/roles/_role.html.haml index 6804f4f15..1ca5ca392 100644 --- a/app/views/admin/roles/_role.html.haml +++ b/app/views/admin/roles/_role.html.haml @@ -13,6 +13,6 @@ - if role.everyone? = t('admin.roles.everyone_full_description_html') - else - = link_to t('admin.roles.assigned_users', count: role.users.count), admin_accounts_path(role_id: role.id) + = link_to t('admin.roles.assigned_users', count: role.users.count), admin_accounts_path(role_ids: role.id) • %abbr{ title: role.permissions_as_keys.map { |privilege| I18n.t("admin.roles.privileges.#{privilege}") }.join(', ') }= t('admin.roles.permissions_count', count: role.permissions_as_keys.size) From d8082ed7725e6538c83c7a3e3cde2978d14a27cc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Jul 2022 09:11:00 +0900 Subject: [PATCH 213/652] Bump sidekiq from 6.4.2 to 6.5.1 (#18672) Bumps [sidekiq](https://github.com/mperham/sidekiq) from 6.4.2 to 6.5.1. - [Release notes](https://github.com/mperham/sidekiq/releases) - [Changelog](https://github.com/mperham/sidekiq/blob/main/Changes.md) - [Commits](https://github.com/mperham/sidekiq/compare/v6.4.2...v6.5.1) --- updated-dependencies: - dependency-name: sidekiq dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 05b238b65..b4d38160c 100644 --- a/Gemfile +++ b/Gemfile @@ -78,7 +78,7 @@ gem 'rqrcode', '~> 2.1' gem 'ruby-progressbar', '~> 1.11' gem 'sanitize', '~> 6.0' gem 'scenic', '~> 1.6' -gem 'sidekiq', '~> 6.4' +gem 'sidekiq', '~> 6.5' gem 'sidekiq-scheduler', '~> 4.0' gem 'sidekiq-unique-jobs', '~> 7.1' gem 'sidekiq-bulk', '~> 0.2.0' diff --git a/Gemfile.lock b/Gemfile.lock index b020263a7..ed82a0896 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -601,7 +601,7 @@ GEM railties (>= 4.0.0) securecompare (1.0.0) semantic_range (3.0.0) - sidekiq (6.4.2) + sidekiq (6.5.1) connection_pool (>= 2.2.2) rack (~> 2.0) redis (>= 4.2.0) @@ -827,7 +827,7 @@ DEPENDENCIES ruby-progressbar (~> 1.11) sanitize (~> 6.0) scenic (~> 1.6) - sidekiq (~> 6.4) + sidekiq (~> 6.5) sidekiq-bulk (~> 0.2.0) sidekiq-scheduler (~> 4.0) sidekiq-unique-jobs (~> 7.1) From 15ec3c357f9af6d6268acb198e4408c2ff061a5c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Jul 2022 09:14:46 +0900 Subject: [PATCH 214/652] Bump react-select from 5.3.2 to 5.4.0 (#18772) Bumps [react-select](https://github.com/JedWatson/react-select) from 5.3.2 to 5.4.0. - [Release notes](https://github.com/JedWatson/react-select/releases) - [Changelog](https://github.com/JedWatson/react-select/blob/master/docs/CHANGELOG.md) - [Commits](https://github.com/JedWatson/react-select/compare/react-select@5.3.2...react-select@5.4.0) --- updated-dependencies: - dependency-name: react-select dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index b6343395b..1fb6a41e6 100644 --- a/package.json +++ b/package.json @@ -105,7 +105,7 @@ "react-redux-loading-bar": "^4.0.8", "react-router-dom": "^4.1.1", "react-router-scroll-4": "^1.0.0-beta.1", - "react-select": "^5.3.2", + "react-select": "^5.4.0", "react-sparklines": "^1.7.0", "react-swipeable-views": "^0.14.0", "react-textarea-autosize": "^8.3.4", diff --git a/yarn.lock b/yarn.lock index acd6fc370..ed01714a2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9216,10 +9216,10 @@ react-router@^4.3.1: prop-types "^15.6.1" warning "^4.0.1" -react-select@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.3.2.tgz#ecee0d5c59ed4acb7f567f7de3c75a488d93dacb" - integrity sha512-W6Irh7U6Ha7p5uQQ2ZnemoCQ8mcfgOtHfw3wuMzG6FAu0P+CYicgofSLOq97BhjMx8jS+h+wwWdCBeVVZ9VqlQ== +react-select@^5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.4.0.tgz#81f6ac73906126706f104751ee14437bd16798f4" + integrity sha512-CjE9RFLUvChd5SdlfG4vqxZd55AZJRrLrHzkQyTYeHlpOztqcgnyftYAolJ0SGsBev6zAs6qFrjm6KU3eo2hzg== dependencies: "@babel/runtime" "^7.12.0" "@emotion/cache" "^11.4.0" From 35c69f0e1f82ceae65b984b70ef12569725a86b1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Jul 2022 09:16:52 +0900 Subject: [PATCH 215/652] Bump oj from 3.13.14 to 3.13.15 (#18765) Bumps [oj](https://github.com/ohler55/oj) from 3.13.14 to 3.13.15. - [Release notes](https://github.com/ohler55/oj/releases) - [Changelog](https://github.com/ohler55/oj/blob/develop/CHANGELOG.md) - [Commits](https://github.com/ohler55/oj/compare/v3.13.14...v3.13.15) --- updated-dependencies: - dependency-name: oj dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index ed82a0896..711abdeb3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -413,7 +413,7 @@ GEM concurrent-ruby (~> 1.0, >= 1.0.2) sidekiq (>= 3.5) statsd-ruby (~> 1.4, >= 1.4.0) - oj (3.13.14) + oj (3.13.15) omniauth (1.9.1) hashie (>= 3.4.6) rack (>= 1.6.2, < 3) From 1b9030bff4de9d6977a8f452cb1f8940c5829189 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Jul 2022 09:17:32 +0900 Subject: [PATCH 216/652] Bump babel-jest from 28.1.1 to 28.1.2 (#18770) Bumps [babel-jest](https://github.com/facebook/jest/tree/HEAD/packages/babel-jest) from 28.1.1 to 28.1.2. - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v28.1.2/packages/babel-jest) --- updated-dependencies: - dependency-name: babel-jest dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 28 ++++++++++++++++++---------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 1fb6a41e6..3856bf36b 100644 --- a/package.json +++ b/package.json @@ -142,7 +142,7 @@ "@babel/eslint-parser": "^7.18.2", "@testing-library/jest-dom": "^5.16.4", "@testing-library/react": "^12.1.5", - "babel-jest": "^28.1.1", + "babel-jest": "^28.1.2", "eslint": "^7.32.0", "eslint-plugin-import": "~2.26.0", "eslint-plugin-jsx-a11y": "~6.6.0", diff --git a/yarn.lock b/yarn.lock index ed01714a2..23a00aef5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1393,14 +1393,14 @@ jest-haste-map "^28.1.1" slash "^3.0.0" -"@jest/transform@^28.1.1": - version "28.1.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.1.tgz#83541f2a3f612077c8501f49cc4e205d4e4a6b27" - integrity sha512-PkfaTUuvjUarl1EDr5ZQcCA++oXkFCP9QFUkG0yVKVmNObjhrqDy0kbMpMebfHWm3CCDHjYNem9eUSH8suVNHQ== +"@jest/transform@^28.1.1", "@jest/transform@^28.1.2": + version "28.1.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.2.tgz#b367962c53fd53821269bde050ce373e111327c1" + integrity sha512-3o+lKF6iweLeJFHBlMJysdaPbpoMmtbHEFsjzSv37HIq/wWt5ijTeO2Yf7MO5yyczCopD507cNwNLeX8Y/CuIg== dependencies: "@babel/core" "^7.11.6" "@jest/types" "^28.1.1" - "@jridgewell/trace-mapping" "^0.3.7" + "@jridgewell/trace-mapping" "^0.3.13" babel-plugin-istanbul "^6.1.1" chalk "^4.0.0" convert-source-map "^1.4.0" @@ -1479,6 +1479,14 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@jridgewell/trace-mapping@^0.3.13": + version "0.3.14" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed" + integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping@^0.3.7": version "0.3.9" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" @@ -2461,12 +2469,12 @@ axobject-query@^2.2.0: resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== -babel-jest@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.1.tgz#2a3a4ae50964695b2d694ccffe4bec537c5a3586" - integrity sha512-MEt0263viUdAkTq5D7upHPNxvt4n9uLUGa6pPz3WviNBMtOmStb1lIXS3QobnoqM+qnH+vr4EKlvhe8QcmxIYw== +babel-jest@^28.1.1, babel-jest@^28.1.2: + version "28.1.2" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.2.tgz#2b37fb81439f14d34d8b2cc4a4bd7efabf9acbfe" + integrity sha512-pfmoo6sh4L/+5/G2OOfQrGJgvH7fTa1oChnuYH2G/6gA+JwDvO8PELwvwnofKBMNrQsam0Wy/Rw+QSrBNewq2Q== dependencies: - "@jest/transform" "^28.1.1" + "@jest/transform" "^28.1.2" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.1.1" babel-preset-jest "^28.1.1" From 9442017224ffeca280b7e573fed7d708235a4895 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Jul 2022 09:17:57 +0900 Subject: [PATCH 217/652] Bump jest-environment-jsdom from 28.1.1 to 28.1.2 (#18766) Bumps [jest-environment-jsdom](https://github.com/facebook/jest/tree/HEAD/packages/jest-environment-jsdom) from 28.1.1 to 28.1.2. - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v28.1.2/packages/jest-environment-jsdom) --- updated-dependencies: - dependency-name: jest-environment-jsdom dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 34 +++++++++++++++++----------------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/package.json b/package.json index 3856bf36b..b67b429b0 100644 --- a/package.json +++ b/package.json @@ -149,7 +149,7 @@ "eslint-plugin-promise": "~6.0.0", "eslint-plugin-react": "~7.30.1", "jest": "^28.1.1", - "jest-environment-jsdom": "^28.1.1", + "jest-environment-jsdom": "^28.1.2", "postcss-scss": "^4.0.4", "prettier": "^2.7.1", "raf": "^3.4.1", diff --git a/yarn.lock b/yarn.lock index 23a00aef5..e02ce6043 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1280,12 +1280,12 @@ slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^28.1.1": - version "28.1.1" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.1.1.tgz#c4cbf85283278d768f816ebd1a258ea6f9e39d4f" - integrity sha512-9auVQ2GzQ7nrU+lAr8KyY838YahElTX9HVjbQPPS2XjlxQ+na18G113OoBhyBGBtD6ZnO/SrUy5WR8EzOj1/Uw== +"@jest/environment@^28.1.1", "@jest/environment@^28.1.2": + version "28.1.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.1.2.tgz#94a052c0c5f9f8c8e6d13ea6da78dbc5d7d9b85b" + integrity sha512-I0CR1RUMmOzd0tRpz10oUfaChBWs+/Hrvn5xYhMEF/ZqrDaaeHwS8yDBqEWCrEnkH2g+WE/6g90oBv3nKpcm8Q== dependencies: - "@jest/fake-timers" "^28.1.1" + "@jest/fake-timers" "^28.1.2" "@jest/types" "^28.1.1" "@types/node" "*" jest-mock "^28.1.1" @@ -1305,13 +1305,13 @@ expect "^28.1.1" jest-snapshot "^28.1.1" -"@jest/fake-timers@^28.1.1": - version "28.1.1" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.1.1.tgz#47ce33296ab9d680c76076d51ddbe65ceb3337f1" - integrity sha512-BY/3+TyLs5+q87rGWrGUY5f8e8uC3LsVHS9Diz8+FV3ARXL4sNnkLlIB8dvDvRrp+LUCGM+DLqlsYubizGUjIA== +"@jest/fake-timers@^28.1.1", "@jest/fake-timers@^28.1.2": + version "28.1.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.1.2.tgz#d49e8ee4e02ba85a6e844a52a5e7c59c23e3b76f" + integrity sha512-xSYEI7Y0D5FbZN2LsCUj/EKRR1zfQYmGuAUVh6xTqhx7V5JhjgMcK5Pa0iR6WIk0GXiHDe0Ke4A+yERKE9saqg== dependencies: "@jest/types" "^28.1.1" - "@sinonjs/fake-timers" "^9.1.1" + "@sinonjs/fake-timers" "^9.1.2" "@types/node" "*" jest-message-util "^28.1.1" jest-mock "^28.1.1" @@ -1588,7 +1588,7 @@ dependencies: type-detect "4.0.8" -"@sinonjs/fake-timers@^9.1.1": +"@sinonjs/fake-timers@^9.1.2": version "9.1.2" resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw== @@ -6498,13 +6498,13 @@ jest-each@^28.1.1: jest-util "^28.1.1" pretty-format "^28.1.1" -jest-environment-jsdom@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-28.1.1.tgz#8bd721915b32f9b196723292c4461a0ad548b55b" - integrity sha512-41ZvgSoPNcKG5q3LuuOcAczdBxRq9DbZkPe24okN6ZCmiZdAfFtPg3z+lOtsT1fM6OAERApKT+3m0MRDQH2zIA== +jest-environment-jsdom@^28.1.2: + version "28.1.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-28.1.2.tgz#d3fe82ef8f900c34ab582df7d3002c5079e3d8ab" + integrity sha512-Ujhx/xFZGVPuxAVpseQ7KqdBErenuWH3Io2HujkGOKMS2VWmpnTGYHzv+73p21QJ9yYQlJkeg06rTe1svV+u0g== dependencies: - "@jest/environment" "^28.1.1" - "@jest/fake-timers" "^28.1.1" + "@jest/environment" "^28.1.2" + "@jest/fake-timers" "^28.1.2" "@jest/types" "^28.1.1" "@types/jsdom" "^16.2.4" "@types/node" "*" From fff0a55df215010abddb218b598049a6fb0ed669 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Jul 2022 09:40:06 +0900 Subject: [PATCH 218/652] Bump jest from 28.1.1 to 28.1.2 (#18769) Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 28.1.1 to 28.1.2. - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v28.1.2/packages/jest) --- updated-dependencies: - dependency-name: jest dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 220 +++++++++++++++++++++++++-------------------------- 2 files changed, 107 insertions(+), 115 deletions(-) diff --git a/package.json b/package.json index b67b429b0..505247350 100644 --- a/package.json +++ b/package.json @@ -148,7 +148,7 @@ "eslint-plugin-jsx-a11y": "~6.6.0", "eslint-plugin-promise": "~6.0.0", "eslint-plugin-react": "~7.30.1", - "jest": "^28.1.1", + "jest": "^28.1.2", "jest-environment-jsdom": "^28.1.2", "postcss-scss": "^4.0.4", "prettier": "^2.7.1", diff --git a/yarn.lock b/yarn.lock index e02ce6043..c0de7a650 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1245,15 +1245,15 @@ jest-util "^28.1.1" slash "^3.0.0" -"@jest/core@^28.1.1": - version "28.1.1" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.1.1.tgz#086830bec6267accf9af5ca76f794858e9f9f092" - integrity sha512-3pYsBoZZ42tXMdlcFeCc/0j9kOlK7MYuXs2B1QbvDgMoW1K9NJ4G/VYvIbMb26iqlkTfPHo7SC2JgjDOk/mxXw== +"@jest/core@^28.1.2": + version "28.1.2" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.1.2.tgz#eac519b9acbd154313854b8823a47b5c645f785a" + integrity sha512-Xo4E+Sb/nZODMGOPt2G3cMmCBqL4/W2Ijwr7/mrXlq4jdJwcFQ/9KrrJZT2adQRk2otVBXXOz1GRQ4Z5iOgvRQ== dependencies: "@jest/console" "^28.1.1" - "@jest/reporters" "^28.1.1" + "@jest/reporters" "^28.1.2" "@jest/test-result" "^28.1.1" - "@jest/transform" "^28.1.1" + "@jest/transform" "^28.1.2" "@jest/types" "^28.1.1" "@types/node" "*" ansi-escapes "^4.2.1" @@ -1262,15 +1262,15 @@ exit "^0.1.2" graceful-fs "^4.2.9" jest-changed-files "^28.0.2" - jest-config "^28.1.1" + jest-config "^28.1.2" jest-haste-map "^28.1.1" jest-message-util "^28.1.1" jest-regex-util "^28.0.2" jest-resolve "^28.1.1" - jest-resolve-dependencies "^28.1.1" - jest-runner "^28.1.1" - jest-runtime "^28.1.1" - jest-snapshot "^28.1.1" + jest-resolve-dependencies "^28.1.2" + jest-runner "^28.1.2" + jest-runtime "^28.1.2" + jest-snapshot "^28.1.2" jest-util "^28.1.1" jest-validate "^28.1.1" jest-watcher "^28.1.1" @@ -1280,7 +1280,7 @@ slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^28.1.1", "@jest/environment@^28.1.2": +"@jest/environment@^28.1.2": version "28.1.2" resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.1.2.tgz#94a052c0c5f9f8c8e6d13ea6da78dbc5d7d9b85b" integrity sha512-I0CR1RUMmOzd0tRpz10oUfaChBWs+/Hrvn5xYhMEF/ZqrDaaeHwS8yDBqEWCrEnkH2g+WE/6g90oBv3nKpcm8Q== @@ -1297,15 +1297,15 @@ dependencies: jest-get-type "^28.0.2" -"@jest/expect@^28.1.1": - version "28.1.1" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-28.1.1.tgz#ea4fcc8504b45835029221c0dc357c622a761326" - integrity sha512-/+tQprrFoT6lfkMj4mW/mUIfAmmk/+iQPmg7mLDIFOf2lyf7EBHaS+x3RbeR0VZVMe55IvX7QRoT/2aK3AuUXg== +"@jest/expect@^28.1.2": + version "28.1.2" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-28.1.2.tgz#0b25acedff46e1e1e5606285306c8a399c12534f" + integrity sha512-HBzyZBeFBiOelNbBKN0pilWbbrGvwDUwAqMC46NVJmWm8AVkuE58NbG1s7DR4cxFt4U5cVLxofAoHxgvC5MyOw== dependencies: expect "^28.1.1" - jest-snapshot "^28.1.1" + jest-snapshot "^28.1.2" -"@jest/fake-timers@^28.1.1", "@jest/fake-timers@^28.1.2": +"@jest/fake-timers@^28.1.2": version "28.1.2" resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.1.2.tgz#d49e8ee4e02ba85a6e844a52a5e7c59c23e3b76f" integrity sha512-xSYEI7Y0D5FbZN2LsCUj/EKRR1zfQYmGuAUVh6xTqhx7V5JhjgMcK5Pa0iR6WIk0GXiHDe0Ke4A+yERKE9saqg== @@ -1317,26 +1317,26 @@ jest-mock "^28.1.1" jest-util "^28.1.1" -"@jest/globals@^28.1.1": - version "28.1.1" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.1.1.tgz#c0a7977f85e26279cc090d9adcdf82b8a34c4061" - integrity sha512-dEgl/6v7ToB4vXItdvcltJBgny0xBE6xy6IYQrPJAJggdEinGxCDMivNv7sFzPcTITGquXD6UJwYxfJ/5ZwDSg== +"@jest/globals@^28.1.2": + version "28.1.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.1.2.tgz#92fab296e337c7309c25e4202fb724f62249d83f" + integrity sha512-cz0lkJVDOtDaYhvT3Fv2U1B6FtBnV+OpEyJCzTHM1fdoTsU4QNLAt/H4RkiwEUU+dL4g/MFsoTuHeT2pvbo4Hg== dependencies: - "@jest/environment" "^28.1.1" - "@jest/expect" "^28.1.1" + "@jest/environment" "^28.1.2" + "@jest/expect" "^28.1.2" "@jest/types" "^28.1.1" -"@jest/reporters@^28.1.1": - version "28.1.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.1.1.tgz#9389f4bb3cce4d9b586f6195f83c79cd2a1c8662" - integrity sha512-597Zj4D4d88sZrzM4atEGLuO7SdA/YrOv9SRXHXRNC+/FwPCWxZhBAEzhXoiJzfRwn8zes/EjS8Lo6DouGN5Gg== +"@jest/reporters@^28.1.2": + version "28.1.2" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.1.2.tgz#0327be4ce4d0d9ae49e7908656f89669d0c2a260" + integrity sha512-/whGLhiwAqeCTmQEouSigUZJPVl7sW8V26EiboImL+UyXznnr1a03/YZ2BX8OlFw0n+Zlwu+EZAITZtaeRTxyA== dependencies: "@bcoe/v8-coverage" "^0.2.3" "@jest/console" "^28.1.1" "@jest/test-result" "^28.1.1" - "@jest/transform" "^28.1.1" + "@jest/transform" "^28.1.2" "@jest/types" "^28.1.1" - "@jridgewell/trace-mapping" "^0.3.7" + "@jridgewell/trace-mapping" "^0.3.13" "@types/node" "*" chalk "^4.0.0" collect-v8-coverage "^1.0.0" @@ -1355,7 +1355,7 @@ string-length "^4.0.1" strip-ansi "^6.0.0" terminal-link "^2.0.0" - v8-to-istanbul "^9.0.0" + v8-to-istanbul "^9.0.1" "@jest/schemas@^28.0.2": version "28.0.2" @@ -1364,12 +1364,12 @@ dependencies: "@sinclair/typebox" "^0.23.3" -"@jest/source-map@^28.0.2": - version "28.0.2" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-28.0.2.tgz#914546f4410b67b1d42c262a1da7e0406b52dc90" - integrity sha512-Y9dxC8ZpN3kImkk0LkK5XCEneYMAXlZ8m5bflmSL5vrwyeUpJfentacCUg6fOb8NOpOO7hz2+l37MV77T6BFPw== +"@jest/source-map@^28.1.2": + version "28.1.2" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-28.1.2.tgz#7fe832b172b497d6663cdff6c13b0a920e139e24" + integrity sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww== dependencies: - "@jridgewell/trace-mapping" "^0.3.7" + "@jridgewell/trace-mapping" "^0.3.13" callsites "^3.0.0" graceful-fs "^4.2.9" @@ -1393,7 +1393,7 @@ jest-haste-map "^28.1.1" slash "^3.0.0" -"@jest/transform@^28.1.1", "@jest/transform@^28.1.2": +"@jest/transform@^28.1.2": version "28.1.2" resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.2.tgz#b367962c53fd53821269bde050ce373e111327c1" integrity sha512-3o+lKF6iweLeJFHBlMJysdaPbpoMmtbHEFsjzSv37HIq/wWt5ijTeO2Yf7MO5yyczCopD507cNwNLeX8Y/CuIg== @@ -1479,7 +1479,7 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.13": +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.13": version "0.3.14" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed" integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ== @@ -1487,14 +1487,6 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.7": - version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping@^0.3.9": version "0.3.13" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" @@ -2469,7 +2461,7 @@ axobject-query@^2.2.0: resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== -babel-jest@^28.1.1, babel-jest@^28.1.2: +babel-jest@^28.1.2: version "28.1.2" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.2.tgz#2b37fb81439f14d34d8b2cc4a4bd7efabf9acbfe" integrity sha512-pfmoo6sh4L/+5/G2OOfQrGJgvH7fTa1oChnuYH2G/6gA+JwDvO8PELwvwnofKBMNrQsam0Wy/Rw+QSrBNewq2Q== @@ -6389,13 +6381,13 @@ jest-changed-files@^28.0.2: execa "^5.0.0" throat "^6.0.1" -jest-circus@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.1.1.tgz#3d27da6a974d85a466dc0cdc6ddeb58daaa57bb4" - integrity sha512-75+BBVTsL4+p2w198DQpCeyh1RdaS2lhEG87HkaFX/UG0gJExVq2skG2pT7XZEGBubNj2CytcWSPan4QEPNosw== +jest-circus@^28.1.2: + version "28.1.2" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.1.2.tgz#0d5a5623eccb244efe87d1edc365696e4fcf80ce" + integrity sha512-E2vdPIJG5/69EMpslFhaA46WkcrN74LI5V/cSJ59L7uS8UNoXbzTxmwhpi9XrIL3zqvMt5T0pl5k2l2u2GwBNQ== dependencies: - "@jest/environment" "^28.1.1" - "@jest/expect" "^28.1.1" + "@jest/environment" "^28.1.2" + "@jest/expect" "^28.1.2" "@jest/test-result" "^28.1.1" "@jest/types" "^28.1.1" "@types/node" "*" @@ -6406,52 +6398,52 @@ jest-circus@^28.1.1: jest-each "^28.1.1" jest-matcher-utils "^28.1.1" jest-message-util "^28.1.1" - jest-runtime "^28.1.1" - jest-snapshot "^28.1.1" + jest-runtime "^28.1.2" + jest-snapshot "^28.1.2" jest-util "^28.1.1" pretty-format "^28.1.1" slash "^3.0.0" stack-utils "^2.0.3" throat "^6.0.1" -jest-cli@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.1.1.tgz#23ddfde8940e1818585ae4a568877b33b0e51cfe" - integrity sha512-+sUfVbJqb1OjBZ0OdBbI6OWfYM1i7bSfzYy6gze1F1w3OKWq8ZTEKkZ8a7ZQPq6G/G1qMh/uKqpdWhgl11NFQQ== +jest-cli@^28.1.2: + version "28.1.2" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.1.2.tgz#b89012e5bad14135e71b1628b85475d3773a1bbc" + integrity sha512-l6eoi5Do/IJUXAFL9qRmDiFpBeEJAnjJb1dcd9i/VWfVWbp3mJhuH50dNtX67Ali4Ecvt4eBkWb4hXhPHkAZTw== dependencies: - "@jest/core" "^28.1.1" + "@jest/core" "^28.1.2" "@jest/test-result" "^28.1.1" "@jest/types" "^28.1.1" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.9" import-local "^3.0.2" - jest-config "^28.1.1" + jest-config "^28.1.2" jest-util "^28.1.1" jest-validate "^28.1.1" prompts "^2.0.1" yargs "^17.3.1" -jest-config@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-28.1.1.tgz#e90b97b984f14a6c24a221859e81b258990fce2f" - integrity sha512-tASynMhS+jVV85zKvjfbJ8nUyJS/jUSYZ5KQxLUN2ZCvcQc/OmhQl2j6VEL3ezQkNofxn5pQ3SPYWPHb0unTZA== +jest-config@^28.1.2: + version "28.1.2" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-28.1.2.tgz#ba00ad30caf62286c86e7c1099e915218a0ac8c6" + integrity sha512-g6EfeRqddVbjPVBVY4JWpUY4IvQoFRIZcv4V36QkqzE0IGhEC/VkugFeBMAeUE7PRgC8KJF0yvJNDeQRbamEVA== dependencies: "@babel/core" "^7.11.6" "@jest/test-sequencer" "^28.1.1" "@jest/types" "^28.1.1" - babel-jest "^28.1.1" + babel-jest "^28.1.2" chalk "^4.0.0" ci-info "^3.2.0" deepmerge "^4.2.2" glob "^7.1.3" graceful-fs "^4.2.9" - jest-circus "^28.1.1" - jest-environment-node "^28.1.1" + jest-circus "^28.1.2" + jest-environment-node "^28.1.2" jest-get-type "^28.0.2" jest-regex-util "^28.0.2" jest-resolve "^28.1.1" - jest-runner "^28.1.1" + jest-runner "^28.1.2" jest-util "^28.1.1" jest-validate "^28.1.1" micromatch "^4.0.4" @@ -6512,13 +6504,13 @@ jest-environment-jsdom@^28.1.2: jest-util "^28.1.1" jsdom "^19.0.0" -jest-environment-node@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.1.1.tgz#1c86c59003a7d319fa06ea3b1bbda6c193715c67" - integrity sha512-2aV/eeY/WNgUUJrrkDJ3cFEigjC5fqT1+fCclrY6paqJ5zVPoM//sHmfgUUp7WLYxIdbPwMiVIzejpN56MxnNA== +jest-environment-node@^28.1.2: + version "28.1.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.1.2.tgz#3e2eb47f6d173b0648d5f7c717cb1c26651d5c8a" + integrity sha512-oYsZz9Qw27XKmOgTtnl0jW7VplJkN2oeof+SwAwKFQacq3CLlG9u4kTGuuLWfvu3J7bVutWlrbEQMOCL/jughw== dependencies: - "@jest/environment" "^28.1.1" - "@jest/fake-timers" "^28.1.1" + "@jest/environment" "^28.1.2" + "@jest/fake-timers" "^28.1.2" "@jest/types" "^28.1.1" "@types/node" "*" jest-mock "^28.1.1" @@ -6604,13 +6596,13 @@ jest-regex-util@^28.0.2: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== -jest-resolve-dependencies@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.1.tgz#3dffaaa56f4b41bc6b61053899d1756401763a27" - integrity sha512-p8Y150xYJth4EXhOuB8FzmS9r8IGLEioiaetgdNGb9VHka4fl0zqWlVe4v7mSkYOuEUg2uB61iE+zySDgrOmgQ== +jest-resolve-dependencies@^28.1.2: + version "28.1.2" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.2.tgz#ca528858e0c6642d5a1dda8fc7cda10230c275bc" + integrity sha512-OXw4vbOZuyRTBi3tapWBqdyodU+T33ww5cPZORuTWkg+Y8lmsxQlVu3MWtJh6NMlKRTHQetF96yGPv01Ye7Mbg== dependencies: jest-regex-util "^28.0.2" - jest-snapshot "^28.1.1" + jest-snapshot "^28.1.2" jest-resolve@^28.1.1: version "28.1.1" @@ -6627,44 +6619,44 @@ jest-resolve@^28.1.1: resolve.exports "^1.1.0" slash "^3.0.0" -jest-runner@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-28.1.1.tgz#9ecdb3f27a00059986797aa6b012ba8306aa436c" - integrity sha512-W5oFUiDBgTsCloTAj6q95wEvYDB0pxIhY6bc5F26OucnwBN+K58xGTGbliSMI4ChQal5eANDF+xvELaYkJxTmA== +jest-runner@^28.1.2: + version "28.1.2" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-28.1.2.tgz#f293409592a62234285a71237e38499a3554e350" + integrity sha512-6/k3DlAsAEr5VcptCMdhtRhOoYClZQmxnVMZvZ/quvPGRpN7OBQYPIC32tWSgOnbgqLXNs5RAniC+nkdFZpD4A== dependencies: "@jest/console" "^28.1.1" - "@jest/environment" "^28.1.1" + "@jest/environment" "^28.1.2" "@jest/test-result" "^28.1.1" - "@jest/transform" "^28.1.1" + "@jest/transform" "^28.1.2" "@jest/types" "^28.1.1" "@types/node" "*" chalk "^4.0.0" emittery "^0.10.2" graceful-fs "^4.2.9" jest-docblock "^28.1.1" - jest-environment-node "^28.1.1" + jest-environment-node "^28.1.2" jest-haste-map "^28.1.1" jest-leak-detector "^28.1.1" jest-message-util "^28.1.1" jest-resolve "^28.1.1" - jest-runtime "^28.1.1" + jest-runtime "^28.1.2" jest-util "^28.1.1" jest-watcher "^28.1.1" jest-worker "^28.1.1" source-map-support "0.5.13" throat "^6.0.1" -jest-runtime@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-28.1.1.tgz#569e1dc3c36c6c4c0b29516c1c49b6ad580abdaf" - integrity sha512-J89qEJWW0leOsqyi0D9zHpFEYHwwafFdS9xgvhFHtIdRghbadodI0eA+DrthK/1PebBv3Px8mFSMGKrtaVnleg== +jest-runtime@^28.1.2: + version "28.1.2" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-28.1.2.tgz#d68f34f814a848555a345ceda23289f14d59a688" + integrity sha512-i4w93OsWzLOeMXSi9epmakb2+3z0AchZtUQVF1hesBmcQQy4vtaql5YdVe9KexdJaVRyPDw8DoBR0j3lYsZVYw== dependencies: - "@jest/environment" "^28.1.1" - "@jest/fake-timers" "^28.1.1" - "@jest/globals" "^28.1.1" - "@jest/source-map" "^28.0.2" + "@jest/environment" "^28.1.2" + "@jest/fake-timers" "^28.1.2" + "@jest/globals" "^28.1.2" + "@jest/source-map" "^28.1.2" "@jest/test-result" "^28.1.1" - "@jest/transform" "^28.1.1" + "@jest/transform" "^28.1.2" "@jest/types" "^28.1.1" chalk "^4.0.0" cjs-module-lexer "^1.0.0" @@ -6677,15 +6669,15 @@ jest-runtime@^28.1.1: jest-mock "^28.1.1" jest-regex-util "^28.0.2" jest-resolve "^28.1.1" - jest-snapshot "^28.1.1" + jest-snapshot "^28.1.2" jest-util "^28.1.1" slash "^3.0.0" strip-bom "^4.0.0" -jest-snapshot@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-28.1.1.tgz#ab825c16c8d8b5e883bd57eee6ca8748c42ab848" - integrity sha512-1KjqHJ98adRcbIdMizjF5DipwZFbvxym/kFO4g4fVZCZRxH/dqV8TiBFCa6rqic3p0karsy8RWS1y4E07b7P0A== +jest-snapshot@^28.1.2: + version "28.1.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-28.1.2.tgz#93d31b87b11b384f5946fe0767541496135f8d52" + integrity sha512-wzrieFttZYfLvrCVRJxX+jwML2YTArOUqFpCoSVy1QUapx+LlV9uLbV/mMEhYj4t7aMeE9aSQFHSvV/oNoDAMA== dependencies: "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" @@ -6693,7 +6685,7 @@ jest-snapshot@^28.1.1: "@babel/traverse" "^7.7.2" "@babel/types" "^7.3.3" "@jest/expect-utils" "^28.1.1" - "@jest/transform" "^28.1.1" + "@jest/transform" "^28.1.2" "@jest/types" "^28.1.1" "@types/babel__traverse" "^7.0.6" "@types/prettier" "^2.1.5" @@ -6767,15 +6759,15 @@ jest-worker@^28.1.1: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-28.1.1.tgz#3c39a3a09791e16e9ef283597d24ab19a0df701e" - integrity sha512-qw9YHBnjt6TCbIDMPMpJZqf9E12rh6869iZaN08/vpOGgHJSAaLLUn6H8W3IAEuy34Ls3rct064mZLETkxJ2XA== +jest@^28.1.2: + version "28.1.2" + resolved "https://registry.yarnpkg.com/jest/-/jest-28.1.2.tgz#451ff24081ce31ca00b07b60c61add13aa96f8eb" + integrity sha512-Tuf05DwLeCh2cfWCQbcz9UxldoDyiR1E9Igaei5khjonKncYdc6LDfynKCEWozK0oLE3GD+xKAo2u8x/0s6GOg== dependencies: - "@jest/core" "^28.1.1" + "@jest/core" "^28.1.2" "@jest/types" "^28.1.1" import-local "^3.0.2" - jest-cli "^28.1.1" + jest-cli "^28.1.2" js-base64@^2.1.9: version "2.6.4" @@ -11228,12 +11220,12 @@ v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.1, v8-compile-cache@^2.3.0: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== -v8-to-istanbul@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.0.tgz#be0dae58719fc53cb97e5c7ac1d7e6d4f5b19511" - integrity sha512-HcvgY/xaRm7isYmyx+lFKA4uQmfUbN0J4M0nNItvzTvH/iQ9kW5j/t4YSR+Ge323/lrgDAWJoF46tzGQHwBHFw== +v8-to-istanbul@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" + integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w== dependencies: - "@jridgewell/trace-mapping" "^0.3.7" + "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" From fa01b993cfbb7d2137386287313178dcdc452b36 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Jul 2022 09:42:11 +0900 Subject: [PATCH 219/652] Bump http-link-header from 1.0.4 to 1.0.5 (#18767) Bumps [http-link-header](https://github.com/jhermsmeier/node-http-link-header) from 1.0.4 to 1.0.5. - [Release notes](https://github.com/jhermsmeier/node-http-link-header/releases) - [Changelog](https://github.com/jhermsmeier/node-http-link-header/blob/master/CHANGELOG.md) - [Commits](https://github.com/jhermsmeier/node-http-link-header/compare/v1.0.4...v1.0.5) --- updated-dependencies: - dependency-name: http-link-header dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 505247350..e087bdab8 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "fuzzysort": "^1.9.0", "glob": "^8.0.3", "history": "^4.10.1", - "http-link-header": "^1.0.4", + "http-link-header": "^1.0.5", "immutable": "^4.1.0", "imports-loader": "^1.2.0", "intersection-observer": "^0.12.2", diff --git a/yarn.lock b/yarn.lock index c0de7a650..82eea048b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5627,10 +5627,10 @@ http-errors@~1.6.2: setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" -http-link-header@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/http-link-header/-/http-link-header-1.0.4.tgz#f4efc76c6151ed0ba0d1a2d679798a18854a4a99" - integrity sha512-Cnv3Q+FF+35avekdnH/ML8dls++tdnSgrvUIWw0YEszrWeLSuw5Iq1vyCVTb5v0rEUgFTy0x4shxXyrO0MDUzw== +http-link-header@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/http-link-header/-/http-link-header-1.0.5.tgz#8e6d9ed1d393e8d5e01aa5c48bd97aa38d7e261c" + integrity sha512-msKrMbv/xHzhdOD4sstbEr+NbGqpv8ZtZliiCeByGENJo1jK1GZ/81zHF9HpWtEH5ihovPpdqHXniwZapJCKEA== "http-parser-js@>=0.4.0 <0.4.11": version "0.4.10" From 0e785b130982a17c54d43e1de9b609c533c09c97 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Jul 2022 09:44:02 +0900 Subject: [PATCH 220/652] Bump gitlab-omniauth-openid-connect from 0.9.1 to 0.10.0 (#18574) Bumps [gitlab-omniauth-openid-connect](https://gitlab.com/gitlab-org/gitlab-omniauth-openid-connect) from 0.9.1 to 0.10.0. - [Release notes](https://gitlab.com/gitlab-org/gitlab-omniauth-openid-connect/tags) - [Changelog](https://gitlab.com/gitlab-org/gitlab-omniauth-openid-connect/blob/master/CHANGELOG.md) - [Commits](https://gitlab.com/gitlab-org/gitlab-omniauth-openid-connect/compare/v0.9.1...v0.10.0) --- updated-dependencies: - dependency-name: gitlab-omniauth-openid-connect dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index b4d38160c..7d3cff7dd 100644 --- a/Gemfile +++ b/Gemfile @@ -40,7 +40,7 @@ end gem 'net-ldap', '~> 0.17' gem 'omniauth-cas', '~> 2.0' gem 'omniauth-saml', '~> 1.10' -gem 'gitlab-omniauth-openid-connect', '~>0.9.1', require: 'omniauth_openid_connect' +gem 'gitlab-omniauth-openid-connect', '~>0.10.0', require: 'omniauth_openid_connect' gem 'omniauth', '~> 1.9' gem 'omniauth-rails_csrf_protection', '~> 0.1' diff --git a/Gemfile.lock b/Gemfile.lock index 711abdeb3..d35ef988e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -270,9 +270,9 @@ GEM fuubar (2.5.1) rspec-core (~> 3.0) ruby-progressbar (~> 1.4) - gitlab-omniauth-openid-connect (0.9.1) + gitlab-omniauth-openid-connect (0.10.0) addressable (~> 2.7) - omniauth (~> 1.9) + omniauth (>= 1.9, < 3) openid_connect (~> 1.2) globalid (1.0.0) activesupport (>= 5.0) @@ -683,7 +683,7 @@ GEM validate_email (0.1.6) activemodel (>= 3.0) mail (>= 2.2.5) - validate_url (1.0.13) + validate_url (1.0.15) activemodel (>= 3.0.0) public_suffix warden (1.2.9) @@ -765,7 +765,7 @@ DEPENDENCIES fog-core (<= 2.1.0) fog-openstack (~> 0.3) fuubar (~> 2.5) - gitlab-omniauth-openid-connect (~> 0.9.1) + gitlab-omniauth-openid-connect (~> 0.10.0) hamlit-rails (~> 0.2) hiredis (~> 0.6) htmlentities (~> 4.3) From 65537ff4d9ecbd36784596f57ce0753cf412d66e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Jul 2022 09:47:18 +0900 Subject: [PATCH 221/652] Bump marky from 1.2.4 to 1.2.5 (#18771) Bumps [marky](https://github.com/nolanlawson/marky) from 1.2.4 to 1.2.5. - [Release notes](https://github.com/nolanlawson/marky/releases) - [Commits](https://github.com/nolanlawson/marky/compare/v1.2.4...v1.2.5) --- updated-dependencies: - dependency-name: marky dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index e087bdab8..5c94e8fef 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,7 @@ "jsdom": "^20.0.0", "lodash": "^4.17.21", "mark-loader": "^0.1.6", - "marky": "^1.2.4", + "marky": "^1.2.5", "mini-css-extract-plugin": "^1.6.2", "mkdirp": "^1.0.4", "npmlog": "^6.0.2", diff --git a/yarn.lock b/yarn.lock index 82eea048b..c93c30ede 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7220,10 +7220,10 @@ mark-loader@^0.1.6: resolved "https://registry.yarnpkg.com/mark-loader/-/mark-loader-0.1.6.tgz#0abb477dca7421d70e20128ff6489f5cae8676d5" integrity sha1-CrtHfcp0IdcOIBKP9kifXK6GdtU= -marky@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/marky/-/marky-1.2.4.tgz#d02bb4c08be2366687c778ecd2a328971ce23d7f" - integrity sha512-zd2/GiSn6U3/jeFVZ0J9CA1LzQ8RfIVvXkb/U0swFHF/zT+dVohTAWjmo2DcIuofmIIIROlwTbd+shSeXmxr0w== +marky@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/marky/-/marky-1.2.5.tgz#55796b688cbd72390d2d399eaaf1832c9413e3c0" + integrity sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q== mathml-tag-names@^2.1.3: version "2.1.3" From 3eeb10d9febf1844cc9b31f3c4e0255958ca0c37 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Jul 2022 09:54:41 +0900 Subject: [PATCH 222/652] Bump rack from 2.2.3.1 to 2.2.4 (#18768) Bumps [rack](https://github.com/rack/rack) from 2.2.3.1 to 2.2.4. - [Release notes](https://github.com/rack/rack/releases) - [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md) - [Commits](https://github.com/rack/rack/compare/2.2.3.1...2.2.4) --- updated-dependencies: - dependency-name: rack dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 7d3cff7dd..ce5e231d0 100644 --- a/Gemfile +++ b/Gemfile @@ -10,7 +10,7 @@ gem 'puma', '~> 5.6' gem 'rails', '~> 6.1.6' gem 'sprockets', '~> 3.7.2' gem 'thor', '~> 1.2' -gem 'rack', '~> 2.2.3' +gem 'rack', '~> 2.2.4' gem 'hamlit-rails', '~> 0.2' gem 'pg', '~> 1.4' diff --git a/Gemfile.lock b/Gemfile.lock index d35ef988e..9b6104004 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -475,7 +475,7 @@ GEM activesupport (>= 3.0.0) raabro (1.4.0) racc (1.6.0) - rack (2.2.3.1) + rack (2.2.4) rack-attack (6.6.1) rack (>= 1.0, < 3) rack-cors (1.1.1) @@ -807,7 +807,7 @@ DEPENDENCIES pry-rails (~> 0.3) puma (~> 5.6) pundit (~> 2.2) - rack (~> 2.2.3) + rack (~> 2.2.4) rack-attack (~> 6.6) rack-cors (~> 1.1) rails (~> 6.1.6) From c9d6571da82e48ecfbbb40b63815e6dfc42bb1b3 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 6 Jul 2022 22:58:31 +0200 Subject: [PATCH 223/652] New Crowdin updates (#18716) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Norwegian Nynorsk) * New translations en.yml (Telugu) * New translations en.yml (Malay) * New translations en.yml (Latvian) * New translations en.yml (Estonian) * New translations en.yml (Kazakh) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Croatian) * New translations en.yml (Indonesian) * New translations en.yml (Persian) * New translations en.yml (Tamil) * New translations en.json (Spanish, Mexico) * New translations en.yml (Spanish, Mexico) * New translations en.yml (Bengali) * New translations en.yml (Malayalam) * New translations en.yml (Sinhala) * New translations en.yml (Breton) * New translations en.yml (Tatar) * New translations en.yml (Chinese Traditional, Hong Kong) * New translations en.yml (Welsh) * New translations en.yml (Standard Moroccan Tamazight) * New translations en.yml (Scottish Gaelic) * New translations en.yml (Asturian) * New translations en.yml (Occitan) * New translations en.yml (Serbian (Latin)) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.yml (Sorani (Kurdish)) * New translations en.yml (Corsican) * New translations en.yml (Sardinian) * New translations en.yml (Kabyle) * New translations en.yml (Ido) * New translations simple_form.en.yml (Spanish, Mexico) * New translations activerecord.en.yml (Japanese) * New translations activerecord.en.yml (Finnish) * New translations doorkeeper.en.yml (Danish) * New translations activerecord.en.yml (German) * New translations doorkeeper.en.yml (German) * New translations activerecord.en.yml (Greek) * New translations doorkeeper.en.yml (Greek) * New translations activerecord.en.yml (Frisian) * New translations doorkeeper.en.yml (Frisian) * New translations activerecord.en.yml (Basque) * New translations doorkeeper.en.yml (Basque) * New translations doorkeeper.en.yml (Finnish) * New translations doorkeeper.en.yml (Czech) * New translations activerecord.en.yml (Hebrew) * New translations doorkeeper.en.yml (Hebrew) * New translations activerecord.en.yml (Hungarian) * New translations doorkeeper.en.yml (Hungarian) * New translations activerecord.en.yml (Armenian) * New translations doorkeeper.en.yml (Armenian) * New translations activerecord.en.yml (Italian) * New translations doorkeeper.en.yml (Italian) * New translations activerecord.en.yml (Danish) * New translations activerecord.en.yml (Czech) * New translations activerecord.en.yml (French) * New translations activerecord.en.yml (Romanian) * New translations doorkeeper.en.yml (Romanian) * New translations doorkeeper.en.yml (Catalan) * New translations doorkeeper.en.yml (French) * New translations activerecord.en.yml (Spanish) * New translations doorkeeper.en.yml (Spanish) * New translations activerecord.en.yml (Afrikaans) * New translations doorkeeper.en.yml (Afrikaans) * New translations activerecord.en.yml (Arabic) * New translations doorkeeper.en.yml (Arabic) * New translations activerecord.en.yml (Bulgarian) * New translations doorkeeper.en.yml (Bulgarian) * New translations activerecord.en.yml (Catalan) * New translations doorkeeper.en.yml (Japanese) * New translations doorkeeper.en.yml (Chinese Traditional) * New translations activerecord.en.yml (Swedish) * New translations doorkeeper.en.yml (Swedish) * New translations activerecord.en.yml (Turkish) * New translations doorkeeper.en.yml (Turkish) * New translations activerecord.en.yml (Ukrainian) * New translations doorkeeper.en.yml (Ukrainian) * New translations activerecord.en.yml (Chinese Simplified) * New translations doorkeeper.en.yml (Chinese Simplified) * New translations activerecord.en.yml (Chinese Traditional) * New translations activerecord.en.yml (Serbian (Cyrillic)) * New translations activerecord.en.yml (Vietnamese) * New translations doorkeeper.en.yml (Vietnamese) * New translations activerecord.en.yml (Galician) * New translations doorkeeper.en.yml (Galician) * New translations activerecord.en.yml (Icelandic) * New translations doorkeeper.en.yml (Icelandic) * New translations doorkeeper.en.yml (Portuguese, Brazilian) * New translations activerecord.en.yml (Indonesian) * New translations doorkeeper.en.yml (Indonesian) * New translations doorkeeper.en.yml (Serbian (Cyrillic)) * New translations doorkeeper.en.yml (Albanian) * New translations activerecord.en.yml (Georgian) * New translations doorkeeper.en.yml (Georgian) * New translations activerecord.en.yml (Korean) * New translations doorkeeper.en.yml (Korean) * New translations doorkeeper.en.yml (Dutch) * New translations activerecord.en.yml (Norwegian) * New translations doorkeeper.en.yml (Norwegian) * New translations activerecord.en.yml (Albanian) * New translations activerecord.en.yml (Polish) * New translations doorkeeper.en.yml (Polish) * New translations activerecord.en.yml (Portuguese) * New translations doorkeeper.en.yml (Portuguese) * New translations activerecord.en.yml (Russian) * New translations doorkeeper.en.yml (Russian) * New translations activerecord.en.yml (Slovak) * New translations doorkeeper.en.yml (Slovak) * New translations activerecord.en.yml (Slovenian) * New translations doorkeeper.en.yml (Slovenian) * New translations activerecord.en.yml (Persian) * New translations doorkeeper.en.yml (Persian) * New translations activerecord.en.yml (Kazakh) * New translations activerecord.en.yml (Tamil) * New translations doorkeeper.en.yml (Hindi) * New translations activerecord.en.yml (Hindi) * New translations doorkeeper.en.yml (Latvian) * New translations activerecord.en.yml (Latvian) * New translations doorkeeper.en.yml (Estonian) * New translations activerecord.en.yml (Estonian) * New translations doorkeeper.en.yml (Kazakh) * New translations doorkeeper.en.yml (Norwegian Nynorsk) * New translations activerecord.en.yml (Bengali) * New translations activerecord.en.yml (Norwegian Nynorsk) * New translations doorkeeper.en.yml (Tamil) * New translations activerecord.en.yml (Spanish, Argentina) * New translations doorkeeper.en.yml (Spanish, Argentina) * New translations doorkeeper.en.yml (Spanish, Mexico) * New translations activerecord.en.yml (Spanish, Mexico) * New translations activerecord.en.yml (Marathi) * New translations doorkeeper.en.yml (Marathi) * New translations activerecord.en.yml (Thai) * New translations doorkeeper.en.yml (Thai) * New translations activerecord.en.yml (Croatian) * New translations doorkeeper.en.yml (Croatian) * New translations doorkeeper.en.yml (Malayalam) * New translations activerecord.en.yml (Scottish Gaelic) * New translations doorkeeper.en.yml (Breton) * New translations activerecord.en.yml (Breton) * New translations activerecord.en.yml (Esperanto) * New translations activerecord.en.yml (Malayalam) * New translations doorkeeper.en.yml (Tatar) * New translations activerecord.en.yml (Tatar) * New translations doorkeeper.en.yml (Chinese Traditional, Hong Kong) * New translations activerecord.en.yml (Chinese Traditional, Hong Kong) * New translations doorkeeper.en.yml (Welsh) * New translations activerecord.en.yml (Welsh) * New translations doorkeeper.en.yml (Scottish Gaelic) * New translations activerecord.en.yml (Asturian) * New translations activerecord.en.yml (Standard Moroccan Tamazight) * New translations doorkeeper.en.yml (Ido) * New translations activerecord.en.yml (Ido) * New translations doorkeeper.en.yml (Kabyle) * New translations activerecord.en.yml (Kabyle) * New translations doorkeeper.en.yml (Sardinian) * New translations activerecord.en.yml (Occitan) * New translations activerecord.en.yml (Sardinian) * New translations doorkeeper.en.yml (Corsican) * New translations activerecord.en.yml (Corsican) * New translations doorkeeper.en.yml (Sorani (Kurdish)) * New translations activerecord.en.yml (Sorani (Kurdish)) * New translations doorkeeper.en.yml (Kurmanji (Kurdish)) * New translations activerecord.en.yml (Kurmanji (Kurdish)) * New translations doorkeeper.en.yml (Serbian (Latin)) * New translations activerecord.en.yml (Serbian (Latin)) * New translations doorkeeper.en.yml (Occitan) * New translations doorkeeper.en.yml (Standard Moroccan Tamazight) * New translations en.yml (Korean) * New translations simple_form.en.yml (Korean) * New translations en.yml (Chinese Traditional) * New translations en.yml (Spanish, Argentina) * New translations simple_form.en.yml (Chinese Traditional) * New translations simple_form.en.yml (Spanish, Argentina) * New translations activerecord.en.yml (Korean) * New translations activerecord.en.yml (Chinese Traditional) * New translations activerecord.en.yml (Spanish, Argentina) * New translations en.yml (Galician) * New translations en.yml (Chinese Traditional) * New translations en.yml (Galician) * New translations simple_form.en.yml (Galician) * New translations en.yml (Chinese Traditional) * New translations activerecord.en.yml (Galician) * New translations en.yml (Catalan) * New translations en.yml (Slovenian) * New translations en.yml (Turkish) * New translations en.yml (Catalan) * New translations en.yml (Czech) * New translations en.yml (Greek) * New translations simple_form.en.yml (Slovenian) * New translations activerecord.en.yml (Slovenian) * New translations en.yml (Turkish) * New translations en.yml (Russian) * New translations simple_form.en.yml (Russian) * New translations simple_form.en.yml (Turkish) * New translations activerecord.en.yml (Russian) * New translations activerecord.en.yml (Turkish) * New translations en.yml (Hungarian) * New translations en.yml (Polish) * New translations en.yml (Icelandic) * New translations simple_form.en.yml (Icelandic) * New translations en.yml (Polish) * New translations activerecord.en.yml (Icelandic) * New translations en.json (Esperanto) * New translations en.yml (Danish) * New translations en.yml (Italian) * New translations devise.en.yml (Esperanto) * New translations en.json (Esperanto) * New translations simple_form.en.yml (Esperanto) * New translations en.yml (Danish) * New translations en.yml (Italian) * New translations simple_form.en.yml (Italian) * New translations activerecord.en.yml (Italian) * New translations en.yml (Danish) * New translations simple_form.en.yml (Czech) * New translations en.yml (Danish) * New translations en.yml (Vietnamese) * New translations simple_form.en.yml (Vietnamese) * New translations activerecord.en.yml (Vietnamese) * New translations en.yml (Latvian) * New translations simple_form.en.yml (Latvian) * New translations activerecord.en.yml (Latvian) * New translations en.yml (Icelandic) * New translations en.yml (Spanish) * New translations en.yml (Icelandic) * New translations en.yml (Czech) * New translations simple_form.en.yml (Spanish) * New translations activerecord.en.yml (Spanish) * New translations en.yml (Czech) * New translations en.yml (Czech) * New translations en.yml (Czech) * New translations en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations en.yml (Esperanto) * New translations en.json (Esperanto) * New translations simple_form.en.yml (Esperanto) * New translations en.yml (Czech) * New translations simple_form.en.yml (Czech) * New translations en.yml (Czech) * New translations en.yml (Czech) * New translations simple_form.en.yml (Czech) * New translations en.yml (Czech) * New translations en.json (Esperanto) * New translations simple_form.en.yml (Czech) * New translations en.yml (Asturian) * New translations simple_form.en.yml (Asturian) * New translations en.yml (Czech) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 9 + app/javascript/mastodon/locales/ar.json | 9 + app/javascript/mastodon/locales/ast.json | 21 +- app/javascript/mastodon/locales/bg.json | 9 + app/javascript/mastodon/locales/bn.json | 9 + app/javascript/mastodon/locales/br.json | 9 + app/javascript/mastodon/locales/ca.json | 9 + app/javascript/mastodon/locales/ckb.json | 9 + app/javascript/mastodon/locales/co.json | 9 + app/javascript/mastodon/locales/cs.json | 9 + app/javascript/mastodon/locales/cy.json | 9 + app/javascript/mastodon/locales/da.json | 9 + app/javascript/mastodon/locales/de.json | 9 + .../mastodon/locales/defaultMessages.json | 8 + app/javascript/mastodon/locales/el.json | 9 + app/javascript/mastodon/locales/en-GB.json | 9 + app/javascript/mastodon/locales/en.json | 2 + app/javascript/mastodon/locales/eo.json | 111 +- app/javascript/mastodon/locales/es-AR.json | 9 + app/javascript/mastodon/locales/es-MX.json | 9 + app/javascript/mastodon/locales/es.json | 9 + app/javascript/mastodon/locales/et.json | 9 + app/javascript/mastodon/locales/eu.json | 9 + app/javascript/mastodon/locales/fa.json | 9 + app/javascript/mastodon/locales/fi.json | 9 + app/javascript/mastodon/locales/fr.json | 9 + app/javascript/mastodon/locales/fy.json | 9 + app/javascript/mastodon/locales/ga.json | 9 + app/javascript/mastodon/locales/gd.json | 9 + app/javascript/mastodon/locales/gl.json | 9 + app/javascript/mastodon/locales/he.json | 13 +- app/javascript/mastodon/locales/hi.json | 9 + app/javascript/mastodon/locales/hr.json | 9 + app/javascript/mastodon/locales/hu.json | 9 + app/javascript/mastodon/locales/hy.json | 9 + app/javascript/mastodon/locales/id.json | 9 + app/javascript/mastodon/locales/io.json | 9 + app/javascript/mastodon/locales/is.json | 9 + app/javascript/mastodon/locales/it.json | 9 + app/javascript/mastodon/locales/ja.json | 9 + app/javascript/mastodon/locales/ka.json | 9 + app/javascript/mastodon/locales/kab.json | 9 + app/javascript/mastodon/locales/kk.json | 9 + app/javascript/mastodon/locales/kn.json | 9 + app/javascript/mastodon/locales/ko.json | 9 + app/javascript/mastodon/locales/ku.json | 9 + app/javascript/mastodon/locales/kw.json | 9 + app/javascript/mastodon/locales/lt.json | 9 + app/javascript/mastodon/locales/lv.json | 9 + app/javascript/mastodon/locales/mk.json | 9 + app/javascript/mastodon/locales/ml.json | 9 + app/javascript/mastodon/locales/mr.json | 9 + app/javascript/mastodon/locales/ms.json | 9 + app/javascript/mastodon/locales/nl.json | 11 +- app/javascript/mastodon/locales/nn.json | 9 + app/javascript/mastodon/locales/no.json | 9 + app/javascript/mastodon/locales/oc.json | 9 + app/javascript/mastodon/locales/pa.json | 9 + app/javascript/mastodon/locales/pl.json | 9 + app/javascript/mastodon/locales/pt-BR.json | 9 + app/javascript/mastodon/locales/pt-PT.json | 9 + app/javascript/mastodon/locales/ro.json | 9 + app/javascript/mastodon/locales/ru.json | 11 +- app/javascript/mastodon/locales/sa.json | 9 + app/javascript/mastodon/locales/sc.json | 9 + app/javascript/mastodon/locales/si.json | 761 ++++----- app/javascript/mastodon/locales/sk.json | 11 +- app/javascript/mastodon/locales/sl.json | 9 + app/javascript/mastodon/locales/sq.json | 9 + app/javascript/mastodon/locales/sr-Latn.json | 9 + app/javascript/mastodon/locales/sr.json | 9 + app/javascript/mastodon/locales/sv.json | 9 + app/javascript/mastodon/locales/szl.json | 9 + app/javascript/mastodon/locales/ta.json | 9 + app/javascript/mastodon/locales/tai.json | 9 + app/javascript/mastodon/locales/te.json | 9 + app/javascript/mastodon/locales/th.json | 9 + app/javascript/mastodon/locales/tr.json | 9 + app/javascript/mastodon/locales/tt.json | 9 + app/javascript/mastodon/locales/ug.json | 9 + app/javascript/mastodon/locales/uk.json | 9 + app/javascript/mastodon/locales/ur.json | 9 + app/javascript/mastodon/locales/vi.json | 9 + app/javascript/mastodon/locales/zgh.json | 9 + app/javascript/mastodon/locales/zh-CN.json | 9 + app/javascript/mastodon/locales/zh-HK.json | 15 +- app/javascript/mastodon/locales/zh-TW.json | 9 + config/locales/activerecord.es-AR.yml | 9 + config/locales/activerecord.es-MX.yml | 8 + config/locales/activerecord.es.yml | 9 + config/locales/activerecord.gl.yml | 9 + config/locales/activerecord.is.yml | 9 + config/locales/activerecord.it.yml | 9 + config/locales/activerecord.ko.yml | 9 + config/locales/activerecord.lv.yml | 11 +- config/locales/activerecord.pt-BR.yml | 8 + config/locales/activerecord.ru.yml | 6 + config/locales/activerecord.sl.yml | 9 + config/locales/activerecord.tr.yml | 9 + config/locales/activerecord.vi.yml | 9 + config/locales/activerecord.zh-TW.yml | 9 + config/locales/ar.yml | 16 - config/locales/ast.yml | 15 +- config/locales/bg.yml | 3 - config/locales/bn.yml | 9 - config/locales/br.yml | 5 - config/locales/ca.yml | 93 +- config/locales/ckb.yml | 16 - config/locales/co.yml | 16 - config/locales/cs.yml | 70 +- config/locales/cy.yml | 15 - config/locales/da.yml | 85 +- config/locales/de.yml | 16 - config/locales/devise.si.yml | 83 +- config/locales/doorkeeper.eo.yml | 1 + config/locales/doorkeeper.si.yml | 135 +- config/locales/el.yml | 41 +- config/locales/eo.yml | 89 +- config/locales/es-AR.yml | 98 +- config/locales/es-MX.yml | 48 +- config/locales/es.yml | 98 +- config/locales/et.yml | 16 - config/locales/eu.yml | 16 - config/locales/fa.yml | 16 - config/locales/fi.yml | 16 - config/locales/fr.yml | 109 +- config/locales/ga.yml | 6 - config/locales/gd.yml | 16 - config/locales/gl.yml | 100 +- config/locales/he.yml | 16 - config/locales/hr.yml | 1 - config/locales/hu.yml | 52 +- config/locales/hy.yml | 15 - config/locales/id.yml | 16 - config/locales/io.yml | 25 +- config/locales/is.yml | 75 +- config/locales/it.yml | 98 +- config/locales/ja.yml | 20 +- config/locales/ka.yml | 16 - config/locales/kab.yml | 12 - config/locales/kk.yml | 16 - config/locales/ko.yml | 90 +- config/locales/ku.yml | 41 +- config/locales/lt.yml | 16 - config/locales/lv.yml | 105 +- config/locales/ml.yml | 5 - config/locales/ms.yml | 12 - config/locales/nl.yml | 164 +- config/locales/nn.yml | 15 - config/locales/no.yml | 15 - config/locales/oc.yml | 16 - config/locales/pl.yml | 103 +- config/locales/pt-BR.yml | 42 +- config/locales/pt-PT.yml | 28 +- config/locales/ro.yml | 10 - config/locales/ru.yml | 87 +- config/locales/sc.yml | 16 - config/locales/si.yml | 1360 ++++++++++++++++- config/locales/simple_form.ast.yml | 4 + config/locales/simple_form.ca.yml | 10 + config/locales/simple_form.cs.yml | 9 + config/locales/simple_form.da.yml | 10 + config/locales/simple_form.el.yml | 5 + config/locales/simple_form.eo.yml | 17 +- config/locales/simple_form.es-AR.yml | 25 + config/locales/simple_form.es-MX.yml | 16 + config/locales/simple_form.es.yml | 25 + config/locales/simple_form.fr.yml | 10 + config/locales/simple_form.gl.yml | 37 +- config/locales/simple_form.hu.yml | 10 + config/locales/simple_form.id.yml | 7 + config/locales/simple_form.io.yml | 5 + config/locales/simple_form.is.yml | 16 + config/locales/simple_form.it.yml | 25 + config/locales/simple_form.ko.yml | 24 + config/locales/simple_form.ku.yml | 6 + config/locales/simple_form.lv.yml | 25 + config/locales/simple_form.nl.yml | 15 + config/locales/simple_form.pl.yml | 10 + config/locales/simple_form.pt-BR.yml | 22 + config/locales/simple_form.pt-PT.yml | 10 + config/locales/simple_form.ru.yml | 20 + config/locales/simple_form.si.yml | 226 ++- config/locales/simple_form.sl.yml | 25 + config/locales/simple_form.tr.yml | 25 + config/locales/simple_form.uk.yml | 10 + config/locales/simple_form.vi.yml | 25 + config/locales/simple_form.zh-TW.yml | 25 + config/locales/sk.yml | 22 +- config/locales/sl.yml | 99 +- config/locales/sq.yml | 16 - config/locales/sr-Latn.yml | 13 - config/locales/sr.yml | 16 - config/locales/sv.yml | 15 - config/locales/ta.yml | 9 - config/locales/te.yml | 3 - config/locales/th.yml | 15 - config/locales/tr.yml | 98 +- config/locales/tt.yml | 5 - config/locales/uk.yml | 30 +- config/locales/vi.yml | 97 +- config/locales/zgh.yml | 2 - config/locales/zh-CN.yml | 18 +- config/locales/zh-HK.yml | 16 - config/locales/zh-TW.yml | 125 +- 205 files changed, 5266 insertions(+), 1546 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 52cb08217..9e84a1bd7 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Search", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", @@ -484,6 +492,7 @@ "status.report": "Report @{name}", "status.sensitive_warning": "Sensitive content", "status.share": "Share", + "status.show_filter_reason": "Show anyway", "status.show_less": "Show less", "status.show_less_all": "Show less for all", "status.show_more": "Show more", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 406868d65..d3f49b82f 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "التفضيلات", "navigation_bar.public_timeline": "الخيط العام الموحد", "navigation_bar.security": "الأمان", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "أنشأ {name} حسابًا", "notification.favourite": "أُعجِب {name} بمنشورك", "notification.follow": "{name} يتابعك", @@ -326,6 +327,7 @@ "notification.update": "عدّلَ {name} منشورًا", "notifications.clear": "امسح الإخطارات", "notifications.clear_confirmation": "أمتأكد من أنك تود مسح جل الإخطارات الخاصة بك و المتلقاة إلى حد الآن ؟", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "التسجيلات الجديدة:", "notifications.column_settings.alert": "إشعارات سطح المكتب", "notifications.column_settings.favourite": "المُفَضَّلة:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "شُكرًا لَكَ على الإبلاغ، سَوفَ نَنظُرُ فِي هَذَا الأمر.", "report.unfollow": "إلغاء متابعة @{name}", "report.unfollow_explanation": "أنت تتابع هذا الحساب، لإزالة مَنشوراته من تغذيَتِكَ الرئيسة ألغ متابعته.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "ابحث", "search_popout.search_format": "نمط البحث المتقدم", "search_popout.tips.full_text": "النص البسيط يقوم بعرض المنشورات التي كتبتها أو قمت بإرسالها أو ترقيتها أو تمت الإشارة إليك فيها من طرف آخرين ، بالإضافة إلى مطابقة أسماء المستخدمين وأسماء العرض وعلامات التصنيف.", @@ -461,6 +468,7 @@ "status.embed": "إدماج", "status.favourite": "أضف إلى المفضلة", "status.filtered": "مُصفّى", + "status.hide": "Hide toot", "status.history.created": "أنشأه {name} {date}", "status.history.edited": "عدله {name} {date}", "status.load_more": "حمّل المزيد", @@ -484,6 +492,7 @@ "status.report": "ابلِغ عن @{name}", "status.sensitive_warning": "محتوى حساس", "status.share": "مشاركة", + "status.show_filter_reason": "Show anyway", "status.show_less": "اعرض أقلّ", "status.show_less_all": "طي الكل", "status.show_more": "أظهر المزيد", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 0f18f7376..16fa5e1b6 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -33,7 +33,7 @@ "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", "account.posts": "Barritos", - "account.posts_with_replies": "Barritos y rempuestes", + "account.posts_with_replies": "Artículos y rempuestes", "account.report": "Report @{name}", "account.requested": "Esperando pola aprobación. Calca pa encaboxar la solicitú de siguimientu", "account.share": "Share @{name}'s profile", @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Preferencies", "navigation_bar.public_timeline": "Llinia temporal federada", "navigation_bar.security": "Seguranza", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} siguióte", @@ -326,6 +327,7 @@ "notification.update": "{name} editó l'artículu", "notifications.clear": "Llimpiar avisos", "notifications.clear_confirmation": "¿De xuru que quies llimpiar dafechu tolos avisos?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Avisos d'escritoriu", "notifications.column_settings.favourite": "Favoritos:", @@ -413,14 +415,14 @@ "report.placeholder": "Comentarios adicionales", "report.reasons.dislike": "I don't like it", "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", - "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", + "report.reasons.other": "Ye daqué más", + "report.reasons.other_description": "La incidencia nun s'axusta a les demás categoríes", + "report.reasons.spam": "Ye spam", "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", "report.reasons.violation": "Incumple les regles del sirvidor", "report.reasons.violation_description": "You are aware that it breaks specific rules", "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", + "report.rules.title": "¿Qué regles s'incumplen?", "report.statuses.subtitle": "Select all that apply", "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Unviar", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Buscar", "search_popout.search_format": "Formatu de gueta avanzada", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Empotrar", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Cargar más", @@ -484,6 +492,7 @@ "status.report": "Report @{name}", "status.sensitive_warning": "Conteníu sensible", "status.share": "Share", + "status.show_filter_reason": "Show anyway", "status.show_less": "Amosar menos", "status.show_less_all": "Amosar menos en too", "status.show_more": "Amosar más", @@ -509,7 +518,7 @@ "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older posts", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", - "trends.trending_now": "Trending now", + "trends.trending_now": "En tendencia", "ui.beforeunload": "El borrador va perdese si coles de Mastodon.", "units.short.billion": "{count} B", "units.short.million": "{count} M", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 69f4796ff..18d95b5dd 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Предпочитания", "navigation_bar.public_timeline": "Публичен канал", "navigation_bar.security": "Сигурност", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} хареса твоята публикация", "notification.follow": "{name} те последва", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Изчистване на известия", "notifications.clear_confirmation": "Сигурни ли сте, че искате да изчистите окончателно всичките си известия?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Десктоп известия", "notifications.column_settings.favourite": "Предпочитани:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Търсене", "search_popout.search_format": "Формат за разширено търсене", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Вграждане", "status.favourite": "Предпочитани", "status.filtered": "Филтрирано", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Зареждане на още", @@ -484,6 +492,7 @@ "status.report": "Докладване на @{name}", "status.sensitive_warning": "Деликатно съдържание", "status.share": "Споделяне", + "status.show_filter_reason": "Show anyway", "status.show_less": "Покажи по-малко", "status.show_less_all": "Покажи по-малко за всички", "status.show_more": "Покажи повече", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index 912a7eb7e..34d650234 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "পছন্দসমূহ", "navigation_bar.public_timeline": "যুক্তবিশ্বের সময়রেখা", "navigation_bar.security": "নিরাপত্তা", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} আপনার কার্যক্রম পছন্দ করেছেন", "notification.follow": "{name} আপনাকে অনুসরণ করেছেন", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "প্রজ্ঞাপনগুলো মুছে ফেলতে", "notifications.clear_confirmation": "আপনি কি নির্চিত প্রজ্ঞাপনগুলো মুছে ফেলতে চান ?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "কম্পিউটারে প্রজ্ঞাপনগুলি", "notifications.column_settings.favourite": "পছন্দের:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "অনুসন্ধান", "search_popout.search_format": "বিস্তারিতভাবে খোঁজার পদ্ধতি", "search_popout.tips.full_text": "সাধারণ লেখা দিয়ে খুঁজলে বের হবে সেরকম আপনার লেখা, পছন্দের লেখা, সমর্থন করা লেখা, আপনাকে উল্লেখকরা কোনো লেখা, যা খুঁজছেন সেরকম কোনো ব্যবহারকারীর নাম বা কোনো হ্যাশট্যাগগুলো।", @@ -461,6 +468,7 @@ "status.embed": "এমবেড করতে", "status.favourite": "পছন্দের করতে", "status.filtered": "ছাঁকনিদিত", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "আরো দেখুন", @@ -484,6 +492,7 @@ "status.report": "@{name} কে রিপোর্ট করতে", "status.sensitive_warning": "সংবেদনশীল কিছু", "status.share": "অন্যদের জানান", + "status.show_filter_reason": "Show anyway", "status.show_less": "কম দেখতে", "status.show_less_all": "সবগুলোতে কম দেখতে", "status.show_more": "আরো দেখাতে", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index c5559a277..14a55e420 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Gwellvezioù", "navigation_bar.public_timeline": "Red-amzer kevreet", "navigation_bar.security": "Diogelroez", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} en/he deus lakaet ho toud en e/he muiañ-karet", "notification.follow": "heuliañ a ra {name} ac'hanoc'h", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Skarzhañ ar c'hemennoù", "notifications.clear_confirmation": "Ha sur oc'h e fell deoc'h skarzhañ ho kemennoù penn-da-benn?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Kemennoù war ar burev", "notifications.column_settings.favourite": "Ar re vuiañ-karet:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Klask", "search_popout.search_format": "Framm klask araokaet", "search_popout.tips.full_text": "Testenn simpl a adkas toudoù skrivet ganeoc'h, merket ganeoc'h evel miuañ-karet, toudoù skignet, pe e-lec'h oc'h bet meneget, met ivez anvioù skrammañ, anvioù implijer ha gêrioù-klik hag a glot.", @@ -461,6 +468,7 @@ "status.embed": "Enframmañ", "status.favourite": "Muiañ-karet", "status.filtered": "Silet", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Kargañ muioc'h", @@ -484,6 +492,7 @@ "status.report": "Disklêriañ @{name}", "status.sensitive_warning": "Dalc'had kizidik", "status.share": "Rannañ", + "status.show_filter_reason": "Show anyway", "status.show_less": "Diskouez nebeutoc'h", "status.show_less_all": "Diskouez nebeutoc'h evit an holl", "status.show_more": "Diskouez muioc'h", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 5490bb6b7..0c9420035 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Preferències", "navigation_bar.public_timeline": "Línia de temps federada", "navigation_bar.security": "Seguretat", + "notification.admin.report": "{name} ha reportat {target}", "notification.admin.sign_up": "{name} s'ha registrat", "notification.favourite": "{name} ha afavorit la teva publicació", "notification.follow": "{name} et segueix", @@ -326,6 +327,7 @@ "notification.update": "{name} ha editat una publicació", "notifications.clear": "Esborra les notificacions", "notifications.clear_confirmation": "Segur que vols esborrar permanentment totes les teves notificacions?", + "notifications.column_settings.admin.report": "Nous informes:", "notifications.column_settings.admin.sign_up": "Nous registres:", "notifications.column_settings.alert": "Notificacions d'escriptori", "notifications.column_settings.favourite": "Preferits:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Gràcies per denunciar-ho. Ho investigarem.", "report.unfollow": "Deixa de seguir @{name}", "report.unfollow_explanation": "Estàs seguint aquest compte. Per no veure les seves publicacions a la teva línia de temps d'Inici, deixa de seguir-lo.", + "report_notification.attached_statuses": "{count, plural, one {{count} publicació} other {{count} publicacions}} attached", + "report_notification.categories.other": "Altres", + "report_notification.categories.spam": "Contingut brossa", + "report_notification.categories.violation": "Violació de norma", + "report_notification.open": "Informe obert", "search.placeholder": "Cerca", "search_popout.search_format": "Format de cerca avançada", "search_popout.tips.full_text": "El text simple recupera publicacions que has escrit, marcat com a preferides, que has impulsat o on t'han esmentat, així com els usuaris, els noms d'usuaris i les etiquetes.", @@ -461,6 +468,7 @@ "status.embed": "Incrusta", "status.favourite": "Favorit", "status.filtered": "Filtrat", + "status.hide": "Hide toot", "status.history.created": "{name} ha creat {date}", "status.history.edited": "{name} ha editat {date}", "status.load_more": "Carregar-ne més", @@ -484,6 +492,7 @@ "status.report": "Denuncia @{name}", "status.sensitive_warning": "Contingut sensible", "status.share": "Comparteix", + "status.show_filter_reason": "Show anyway", "status.show_less": "Mostrar-ne menys", "status.show_less_all": "Mostrar-ne menys per a tot", "status.show_more": "Mostrar-ne més", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index e7c4dab71..223b0d417 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "پەسەندەکان", "navigation_bar.public_timeline": "نووسراوەکانی هەمووشوێنێک", "navigation_bar.security": "ئاسایش", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} تۆمارکرا", "notification.favourite": "{name} نووسراوەکەتی پەسەند کرد", "notification.follow": "{name} دوای تۆ کەوت", @@ -326,6 +327,7 @@ "notification.update": "{name} پۆستێکی دەستکاریکرد", "notifications.clear": "ئاگانامەکان بسڕیەوە", "notifications.clear_confirmation": "ئایا دڵنیایت لەوەی دەتەوێت بە هەمیشەیی هەموو ئاگانامەکانت بسڕیتەوە?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "چوونەژوورەوەی نوێ:", "notifications.column_settings.alert": "ئاگانامەکانی پیشانگەرر ڕومێزی", "notifications.column_settings.favourite": "دڵخوازترین:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "سوپاس بۆ ڕاپۆرتکردن، ئێمە سەیری ئەم بابەتە دەکەین.", "report.unfollow": "بەدوادانەچوو@{name}", "report.unfollow_explanation": "تۆ شوێنکەوتووی ئەم هەژماررەی دەکەیت. بۆ ئەوەی چیتر نووسراوەکانیان لە هۆم فیدی خۆت نەبینی، بەدوایان مەچۆ.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "گەڕان", "search_popout.search_format": "شێوەی گەڕانی پێشکەوتوو", "search_popout.tips.full_text": "گەڕانێکی دەقی سادە دەتوانێت توتەکانی ئێوە کە، نووسیوتانە،پەسەنتان کردووە، دووبارەتانکردووە، یان ئەو توتانە کە باسی ئێوەی تێدا کراوە پەیدا دەکا. هەروەها ناوی بەکارهێنەران، ناوی پیشاندراو و هەشتەگەکانیش لە خۆ دەگرێت.", @@ -461,6 +468,7 @@ "status.embed": "نیشتەجێ بکە", "status.favourite": "دڵخواز", "status.filtered": "پاڵاوتن", + "status.hide": "Hide toot", "status.history.created": "{name} دروستکراوە لە{date}", "status.history.edited": "{name} دروستکاریکراوە لە{date}", "status.load_more": "زیاتر بار بکە", @@ -484,6 +492,7 @@ "status.report": "گوزارشت @{name}", "status.sensitive_warning": "ناوەڕۆکی هەستیار", "status.share": "هاوبەشی بکە", + "status.show_filter_reason": "Show anyway", "status.show_less": "کەمتر نیشان بدە", "status.show_less_all": "هەمووی بچووک بکەوە", "status.show_more": "زیاتر نیشان بدە", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 9172aea2e..9dd6f1a48 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Preferenze", "navigation_bar.public_timeline": "Linea pubblica glubale", "navigation_bar.security": "Sicurità", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} hà aghjuntu u vostru statutu à i so favuriti", "notification.follow": "{name} v'hà seguitatu", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Purgà e nutificazione", "notifications.clear_confirmation": "Site sicuru·a che vulete toglie tutte ste nutificazione?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Nutificazione nant'à l'urdinatore", "notifications.column_settings.favourite": "Favuriti:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Circà", "search_popout.search_format": "Ricerca avanzata", "search_popout.tips.full_text": "I testi simplici rimandanu i statuti ch'avete scritti, aghjunti à i vostri favuriti, spartuti o induve quelli site mintuvatu·a, è ancu i cugnomi, nomi pubblichi è hashtag chì currispondenu.", @@ -461,6 +468,7 @@ "status.embed": "Integrà", "status.favourite": "Aghjunghje à i favuriti", "status.filtered": "Filtratu", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Vede di più", @@ -484,6 +492,7 @@ "status.report": "Palisà @{name}", "status.sensitive_warning": "Cuntinutu sensibile", "status.share": "Sparte", + "status.show_filter_reason": "Show anyway", "status.show_less": "Ripiegà", "status.show_less_all": "Ripiegà tuttu", "status.show_more": "Slibrà", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index e1602dacf..9fee3948a 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Předvolby", "navigation_bar.public_timeline": "Federovaná časová osa", "navigation_bar.security": "Zabezpečení", + "notification.admin.report": "Uživatel {name} nahlásil {target}", "notification.admin.sign_up": "Uživatel {name} se zaregistroval", "notification.favourite": "Uživatel {name} si oblíbil váš příspěvek", "notification.follow": "Uživatel {name} vás začal sledovat", @@ -326,6 +327,7 @@ "notification.update": "Uživatel {name} upravil příspěvek", "notifications.clear": "Vymazat oznámení", "notifications.clear_confirmation": "Opravdu chcete trvale smazat všechna vaše oznámení?", + "notifications.column_settings.admin.report": "Nová hlášení:", "notifications.column_settings.admin.sign_up": "Nové registrace:", "notifications.column_settings.alert": "Oznámení na počítači", "notifications.column_settings.favourite": "Oblíbení:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Děkujeme za nahlášení, podíváme se na to.", "report.unfollow": "Přestat sledovat @{name}", "report.unfollow_explanation": "Tento účet sledujete. Abyste už neviděli jejich příspěvky ve své domácí časové ose, přestaňte je sledovat.", + "report_notification.attached_statuses": "{count, plural, one {{count} připojený příspěvek} few {{count} připojené příspěvky} many {{count} připojených příspěvků} other {{count} připojených příspěvků}}", + "report_notification.categories.other": "Ostatní", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Porušení pravidla", + "report_notification.open": "Otevřít hlášení", "search.placeholder": "Hledat", "search_popout.search_format": "Pokročilé hledání", "search_popout.tips.full_text": "Jednoduchý text vrací příspěvky, které jste napsali, oblíbili si, boostnuli, nebo vás v nich někdo zmínil, a také odpovídající přezdívky, zobrazovaná jména a hashtagy.", @@ -461,6 +468,7 @@ "status.embed": "Vložit na web", "status.favourite": "Oblíbit", "status.filtered": "Filtrováno", + "status.hide": "Hide toot", "status.history.created": "Uživatel {name} vytvořil {date}", "status.history.edited": "Uživatel {name} upravil {date}", "status.load_more": "Zobrazit více", @@ -484,6 +492,7 @@ "status.report": "Nahlásit @{name}", "status.sensitive_warning": "Citlivý obsah", "status.share": "Sdílet", + "status.show_filter_reason": "Show anyway", "status.show_less": "Zobrazit méně", "status.show_less_all": "Zobrazit méně pro všechny", "status.show_more": "Zobrazit více", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 42fef4732..9b2886b01 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Dewisiadau", "navigation_bar.public_timeline": "Ffrwd y ffederasiwn", "navigation_bar.security": "Diogelwch", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "Cofrestrodd {name}", "notification.favourite": "Hoffodd {name} eich post", "notification.follow": "Dilynodd {name} chi", @@ -326,6 +327,7 @@ "notification.update": "Golygodd {name} bost", "notifications.clear": "Clirio hysbysiadau", "notifications.clear_confirmation": "Ydych chi'n sicr eich bod am glirio'ch holl hysbysiadau am byth?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "Cofrestriadau newydd:", "notifications.column_settings.alert": "Hysbysiadau bwrdd gwaith", "notifications.column_settings.favourite": "Ffefrynnau:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Diolch am adrodd, byddwn yn ymchwilio i hyn.", "report.unfollow": "Dad-ddilyn @{name}", "report.unfollow_explanation": "Rydych chi'n dilyn y cyfrif hwn. I beidio â gweld eu postiadau yn eich porthiant cartref mwyach, dad-ddilynwch nhw.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Chwilio", "search_popout.search_format": "Fformat chwilio uwch", "search_popout.tips.full_text": "Mae testun syml yn dychwelyd postiadau yr ydych wedi ysgrifennu, hoffi, wedi'u hybio, neu wedi'ch crybwyll ynddynt, ynghyd a chyfateb a enwau defnyddwyr, enwau arddangos ac hashnodau.", @@ -461,6 +468,7 @@ "status.embed": "Plannu", "status.favourite": "Hoffi", "status.filtered": "Wedi'i hidlo", + "status.hide": "Hide toot", "status.history.created": "{name} greuodd {date}", "status.history.edited": "{name} olygodd {date}", "status.load_more": "Llwythwch mwy", @@ -484,6 +492,7 @@ "status.report": "Adrodd @{name}", "status.sensitive_warning": "Cynnwys sensitif", "status.share": "Rhannu", + "status.show_filter_reason": "Show anyway", "status.show_less": "Dangos llai", "status.show_less_all": "Dangos llai i bawb", "status.show_more": "Dangos mwy", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 537fa6af6..11371dfd0 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Præferencer", "navigation_bar.public_timeline": "Fælles tidslinje", "navigation_bar.security": "Sikkerhed", + "notification.admin.report": "{name} anmeldte {target}", "notification.admin.sign_up": "{name} tilmeldte sig", "notification.favourite": "{name} favoritmarkerede dit indlæg", "notification.follow": "{name} begyndte at følge dig", @@ -326,6 +327,7 @@ "notification.update": "{name} redigerede et indlæg", "notifications.clear": "Ryd notifikationer", "notifications.clear_confirmation": "Sikker på, at du vil rydde alle dine notifikationer permanent?", + "notifications.column_settings.admin.report": "Nye anmeldelser:", "notifications.column_settings.admin.sign_up": "Nye tilmeldinger:", "notifications.column_settings.alert": "Computernotifikationer", "notifications.column_settings.favourite": "Favoritter:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Tak for anmeldelsen, der vil blive set nærmere på dette.", "report.unfollow": "Følg ikke længere @{name}", "report.unfollow_explanation": "Denne konto følges. For at ophøre med at se vedkommendes indlæg på hjemmetidslinjen, vælg Følg ikke længere.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} poster}} vedhæftet", + "report_notification.categories.other": "Andre", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Regelovertrædelse", + "report_notification.open": "Åbn anmeldelse", "search.placeholder": "Søg", "search_popout.search_format": "Avanceret søgeformat", "search_popout.tips.full_text": "Simpel tekst returnerer indlæg, du har skrevet, favoritmarkeret, boostet eller som er nævnt i/matcher bruger- og profilnavne samt hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Indlejr", "status.favourite": "Favorit", "status.filtered": "Filtreret", + "status.hide": "Hide toot", "status.history.created": "{name} oprettet {date}", "status.history.edited": "{name} redigeret {date}", "status.load_more": "Indlæs mere", @@ -484,6 +492,7 @@ "status.report": "Anmeld @{name}", "status.sensitive_warning": "Følsomt indhold", "status.share": "Del", + "status.show_filter_reason": "Show anyway", "status.show_less": "Vis mindre", "status.show_less_all": "Vis mindre for alle", "status.show_more": "Vis mere", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index aaf552a1e..ee6c7cfda 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Einstellungen", "navigation_bar.public_timeline": "Föderierte Zeitleiste", "navigation_bar.security": "Sicherheit", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} hat sich registriert", "notification.favourite": "{name} hat deinen Beitrag favorisiert", "notification.follow": "{name} folgt dir", @@ -326,6 +327,7 @@ "notification.update": "{name} bearbeitete einen Beitrag", "notifications.clear": "Mitteilungen löschen", "notifications.clear_confirmation": "Bist du dir sicher, dass du alle Mitteilungen löschen möchtest?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "Neue Anmeldungen:", "notifications.column_settings.alert": "Desktop-Benachrichtigungen", "notifications.column_settings.favourite": "Favorisierungen:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Vielen Dank für die Meldung, wir werden uns das ansehen.", "report.unfollow": "@{name} entfolgen", "report.unfollow_explanation": "Du folgst diesem Konto. Um die Beiträge nicht mehr auf deiner Startseite zu sehen, entfolge dem Konto.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Suche", "search_popout.search_format": "Fortgeschrittenes Suchformat", "search_popout.tips.full_text": "Einfache Texteingabe gibt Beiträge, die du geschrieben, favorisiert und geteilt hast zurück. Außerdem auch Beiträge in denen du erwähnt wurdest, aber auch passende Nutzernamen, Anzeigenamen oder Hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Einbetten", "status.favourite": "Favorisieren", "status.filtered": "Gefiltert", + "status.hide": "Hide toot", "status.history.created": "{name} erstellte {date}", "status.history.edited": "{name} bearbeitete {date}", "status.load_more": "Weitere laden", @@ -484,6 +492,7 @@ "status.report": "@{name} melden", "status.sensitive_warning": "NSFW", "status.share": "Teilen", + "status.show_filter_reason": "Show anyway", "status.show_less": "Weniger anzeigen", "status.show_less_all": "Alle Inhaltswarnungen zuklappen", "status.show_more": "Mehr anzeigen", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 7cd913493..28618104a 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -612,6 +612,10 @@ "defaultMessage": "Copy link to status", "id": "status.copy" }, + { + "defaultMessage": "Hide toot", + "id": "status.hide" + }, { "defaultMessage": "Block domain {domain}", "id": "account.block_domain" @@ -678,6 +682,10 @@ "defaultMessage": "Filtered", "id": "status.filtered" }, + { + "defaultMessage": "Show anyway", + "id": "status.show_filter_reason" + }, { "defaultMessage": "Pinned post", "id": "status.pinned" diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 6f324860c..c8f799967 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Προτιμήσεις", "navigation_bar.public_timeline": "Ομοσπονδιακή ροή", "navigation_bar.security": "Ασφάλεια", + "notification.admin.report": "{name} ανέφερε {target}", "notification.admin.sign_up": "{name} έχει εγγραφεί", "notification.favourite": "Ο/Η {name} σημείωσε ως αγαπημένη την κατάστασή σου", "notification.follow": "Ο/Η {name} σε ακολούθησε", @@ -326,6 +327,7 @@ "notification.update": "{name} επεξεργάστηκε μια δημοσίευση", "notifications.clear": "Καθαρισμός ειδοποιήσεων", "notifications.clear_confirmation": "Σίγουρα θέλεις να καθαρίσεις όλες τις ειδοποιήσεις σου;", + "notifications.column_settings.admin.report": "Νέες αναφορές:", "notifications.column_settings.admin.sign_up": "Νέες εγγραφές:", "notifications.column_settings.alert": "Ειδοποιήσεις επιφάνειας εργασίας", "notifications.column_settings.favourite": "Αγαπημένα:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Άλλες", + "report_notification.categories.spam": "Ανεπιθύμητα", + "report_notification.categories.violation": "Παραβίαση κανόνα", + "report_notification.open": "Open report", "search.placeholder": "Αναζήτηση", "search_popout.search_format": "Προχωρημένη αναζήτηση", "search_popout.tips.full_text": "Απλό κείμενο που επιστρέφει καταστάσεις που έχεις γράψει, έχεις σημειώσει ως αγαπημένες, έχεις προωθήσει ή έχεις αναφερθεί σε αυτές, καθώς και όσα ονόματα χρηστών και ετικέτες ταιριάζουν.", @@ -461,6 +468,7 @@ "status.embed": "Ενσωμάτωσε", "status.favourite": "Σημείωσε ως αγαπημένο", "status.filtered": "Φιλτραρισμένα", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Φόρτωσε περισσότερα", @@ -484,6 +492,7 @@ "status.report": "Κατάγγειλε @{name}", "status.sensitive_warning": "Ευαίσθητο περιεχόμενο", "status.share": "Μοιράσου", + "status.show_filter_reason": "Show anyway", "status.show_less": "Δείξε λιγότερα", "status.show_less_all": "Δείξε λιγότερα για όλα", "status.show_more": "Δείξε περισσότερα", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 71874cb45..561f1088b 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Search", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", @@ -484,6 +492,7 @@ "status.report": "Report @{name}", "status.sensitive_warning": "Sensitive content", "status.share": "Share", + "status.show_filter_reason": "Show anyway", "status.show_less": "Show less", "status.show_less_all": "Show less for all", "status.show_more": "Show more", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 9082c4202..b6bc2ac97 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -468,6 +468,7 @@ "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", @@ -491,6 +492,7 @@ "status.report": "Report @{name}", "status.sensitive_warning": "Sensitive content", "status.share": "Share", + "status.show_filter_reason": "Show anyway", "status.show_less": "Show less", "status.show_less_all": "Show less for all", "status.show_more": "Show more", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 999f34be6..d49c342f9 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -4,12 +4,12 @@ "account.badges.bot": "Roboto", "account.badges.group": "Grupo", "account.block": "Bloki @{name}", - "account.block_domain": "Bloki domajnon {domain}", + "account.block_domain": "Bloki la domajnon {domain}", "account.blocked": "Blokita", "account.browse_more_on_origin_server": "Vidi pli ĉe la originala profilo", "account.cancel_follow_request": "Nuligi la demandon de sekvado", "account.direct": "Rekte mesaĝi @{name}", - "account.disable_notifications": "Ĉesu sciigi min kiam @{name} mesaĝi", + "account.disable_notifications": "Ne plu sciigi min kiam @{name} mesaĝas", "account.domain_blocked": "Domajno blokita", "account.edit_profile": "Redakti la profilon", "account.enable_notifications": "Sciigi min kiam @{name} mesaĝas", @@ -18,9 +18,9 @@ "account.followers": "Sekvantoj", "account.followers.empty": "Ankoraŭ neniu sekvas tiun uzanton.", "account.followers_counter": "{count, plural, one{{counter} Sekvanto} other {{counter} Sekvantoj}}", - "account.following": "Sekvantaj", - "account.following_counter": "{count, plural, one {{counter} Sekvato} other {{counter} Sekvatoj}}", - "account.follows.empty": "Tiu uzanto ankoraŭ ne sekvas iun.", + "account.following": "Sekvadoj", + "account.following_counter": "{count, plural, one {{counter} Sekvado} other {{counter} Sekvadoj}}", + "account.follows.empty": "La uzanto ankoraŭ ne sekvas iun ajn.", "account.follows_you": "Sekvas vin", "account.hide_reblogs": "Kaŝi la plusendojn de @{name}", "account.joined": "Kuniĝis {date}", @@ -35,17 +35,17 @@ "account.posts": "Mesaĝoj", "account.posts_with_replies": "Mesaĝoj kaj respondoj", "account.report": "Raporti @{name}", - "account.requested": "Atendo de aprobo. Alklaku por nuligi peton de sekvado", + "account.requested": "Atendo de aprobo. Klaku por nuligi la demandon de sekvado", "account.share": "Kundividi la profilon de @{name}", "account.show_reblogs": "Montri la plusendojn de @{name}", "account.statuses_counter": "{count, plural, one {{counter} Mesaĝo} other {{counter} Mesaĝoj}}", "account.unblock": "Malbloki @{name}", - "account.unblock_domain": "Malbloki {domain}", + "account.unblock_domain": "Malbloki la domajnon {domain}", "account.unblock_short": "Malbloki", - "account.unendorse": "Ne rekomendi ĉe la profilo", + "account.unendorse": "Ne plu rekomendi ĉe la profilo", "account.unfollow": "Ne plu sekvi", "account.unmute": "Ne plu silentigi @{name}", - "account.unmute_notifications": "Reebligi la sciigojn de @{name}", + "account.unmute_notifications": "Ne plu silentigi la sciigojn de @{name}", "account.unmute_short": "Ne plu silentigi", "account_note.placeholder": "Klaku por aldoni noton", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", @@ -71,7 +71,7 @@ "column.bookmarks": "Legosignoj", "column.community": "Loka templinio", "column.direct": "Rektaj mesaĝoj", - "column.directory": "Trarigardi profilojn", + "column.directory": "Foliumi la profilojn", "column.domain_blocks": "Blokitaj domajnoj", "column.favourites": "Preferaĵoj", "column.follow_requests": "Demandoj de sekvado", @@ -80,7 +80,7 @@ "column.mutes": "Silentigitaj uzantoj", "column.notifications": "Sciigoj", "column.pins": "Alpinglitaj mesaĝoj", - "column.public": "Federata templinio", + "column.public": "Fratara templinio", "column_back_button.label": "Reveni", "column_header.hide_settings": "Kaŝi la agordojn", "column_header.moveLeft_settings": "Movi kolumnon maldekstren", @@ -101,19 +101,19 @@ "compose_form.lock_disclaimer.lock": "ŝlosita", "compose_form.placeholder": "Kion vi pensas?", "compose_form.poll.add_option": "Aldoni elekteblon", - "compose_form.poll.duration": "Balotenketa daŭro", + "compose_form.poll.duration": "Daŭro de la balotenketo", "compose_form.poll.option_placeholder": "Elekteblo {number}", "compose_form.poll.remove_option": "Forigi ĉi tiu elekteblon", "compose_form.poll.switch_to_multiple": "Ŝanĝi la balotenketon por permesi multajn elektojn", "compose_form.poll.switch_to_single": "Ŝanĝi la balotenketon por permesi unu solan elekton", - "compose_form.publish": "Publish", + "compose_form.publish": "Publikigi", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Konservi ŝanĝojn", + "compose_form.save_changes": "Konservi la ŝanĝojn", "compose_form.sensitive.hide": "Marki la aŭdovidaĵojn kiel tiklaj", "compose_form.sensitive.marked": "Aŭdovidaĵo markita tikla", "compose_form.sensitive.unmarked": "Aŭdovidaĵo ne markita tikla", - "compose_form.spoiler.marked": "Teksto kaŝita malantaŭ averto", - "compose_form.spoiler.unmarked": "Teksto ne kaŝita", + "compose_form.spoiler.marked": "Forigi la averton de enhavo", + "compose_form.spoiler.unmarked": "Aldoni averton de enhavo", "compose_form.spoiler_placeholder": "Skribu vian averton ĉi tie", "confirmation_modal.cancel": "Nuligi", "confirmations.block.block_and_report": "Bloki kaj raporti", @@ -123,8 +123,8 @@ "confirmations.delete.message": "Ĉu vi certas, ke vi volas forigi ĉi tiun mesaĝon?", "confirmations.delete_list.confirm": "Forigi", "confirmations.delete_list.message": "Ĉu vi certas, ke vi volas porĉiame forigi ĉi tiun liston?", - "confirmations.discard_edit_media.confirm": "Ne konservi", - "confirmations.discard_edit_media.message": "Vi havas nekonservitan ŝanĝon de la priskribo aŭ de la antaŭvido de aŭdvidaĵo, ĉu vi forigu ĝin?", + "confirmations.discard_edit_media.confirm": "Forlasi", + "confirmations.discard_edit_media.message": "Vi havas nekonservitan ŝanĝon de la priskribo aŭ de la antaŭvido de la aŭdovidaĵo, ĉu vi forigu ĝin?", "confirmations.domain_block.confirm": "Bloki la tutan domajnon", "confirmations.domain_block.message": "Ĉu vi vere, vere certas, ke vi volas tute bloki {domain}? Plej ofte, trafa blokado kaj silentigado sufiĉas kaj preferindas. Vi ne vidos enhavon de tiu domajno en publika templinio aŭ en viaj sciigoj. Viaj sekvantoj de tiu domajno estos forigitaj.", "confirmations.logout.confirm": "Adiaŭi", @@ -133,7 +133,7 @@ "confirmations.mute.explanation": "Ĉi-tio kaŝos mesaĝojn el ili kaj mesaĝojn kiuj mencias ilin, sed ili ankoraŭ rajtos vidi viajn mesaĝojn kaj sekvi vin.", "confirmations.mute.message": "Ĉu vi certas, ke vi volas silentigi {name}?", "confirmations.redraft.confirm": "Forigi kaj reskribi", - "confirmations.redraft.message": "Ĉu vi certas ke vi volas forigi kaj reskribi la mesaĝon? Ĝiaj preferitaĵoj kaj ĝiaj plusendoj estos perditaj, kaj la respondoj al la originala mesaĝo estos orfaj.", + "confirmations.redraft.message": "Ĉu vi certas, ke vi volas forigi kaj reskribi la mesaĝon? Plusendaĵoj kaj preferaĵoj de ĝi estos perditaj, kaj la respondoj al la originala mesaĝo estos orfaj.", "confirmations.reply.confirm": "Respondi", "confirmations.reply.message": "Respondi nun anstataŭigos la mesaĝon, kiun vi nun skribas. Ĉu vi certas, ke vi volas daŭrigi?", "confirmations.unfollow.confirm": "Ne plu sekvi", @@ -163,7 +163,7 @@ "emoji_button.search_results": "Serĉaj rezultoj", "emoji_button.symbols": "Simboloj", "emoji_button.travel": "Vojaĝoj kaj lokoj", - "empty_column.account_suspended": "Konto haltigita", + "empty_column.account_suspended": "Konto suspendita", "empty_column.account_timeline": "Neniu mesaĝo ĉi tie!", "empty_column.account_unavailable": "Profilo ne disponebla", "empty_column.blocks": "Vi ankoraŭ ne blokis uzanton.", @@ -173,9 +173,9 @@ "empty_column.domain_blocks": "Ankoraŭ neniu domajno estas blokita.", "empty_column.explore_statuses": "Nenio tendencas nun. Rekontrolu poste!", "empty_column.favourited_statuses": "Vi ankoraŭ ne havas mesaĝon en la preferaĵoj. Kiam vi aldonas ion, ĝi aperos ĉi tie.", - "empty_column.favourites": "Ankoraŭ neniu preferis la mesaĝon. Kiam iu faros ĉi tion, ili aperos ĉi tie.", + "empty_column.favourites": "Ankoraŭ neniu aldonis tiun mesaĝon al siaj preferaĵoj. Kiam iu faros ĉi tion, ili aperos ĉi tie.", "empty_column.follow_recommendations": "Ŝajnas, ke neniuj sugestoj povis esti generitaj por vi. Vi povas provi uzi serĉon por serĉi homojn, kiujn vi eble konas, aŭ esplori tendencajn kradvortojn.", - "empty_column.follow_requests": "Vi ne ankoraŭ havas iun peton de sekvado. Kiam vi ricevos unu, ĝi aperos ĉi tie.", + "empty_column.follow_requests": "Vi ankoraŭ ne havas demandon de sekvado. Kiam vi ricevas unu, ĝi aperas tie ĉi.", "empty_column.hashtag": "Ankoraŭ estas nenio per ĉi tiu kradvorto.", "empty_column.home": "Via hejma tempolinio estas malplena! Vizitu {public} aŭ uzu la serĉilon por renkonti aliajn uzantojn.", "empty_column.home.suggestions": "Vidu iujn sugestojn", @@ -197,11 +197,11 @@ "explore.trending_statuses": "Afiŝoj", "explore.trending_tags": "Kradvortoj", "follow_recommendations.done": "Farita", - "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", - "follow_recommendations.lead": "La mesaĝoj de personoj kiujn vi sekvas, kronologie aperos en via hejma templinio. Ne timu erari, vi povas ĉesi sekvi facile iam ajn!", + "follow_recommendations.heading": "Sekvi la personojn kies mesaĝojn vi volas vidi! Jen iom da sugestoj.", + "follow_recommendations.lead": "La mesaĝoj de personoj kiujn vi sekvas, aperos laŭ kronologia ordo en via hejma templinio. Ne timu erari, vi povas ĉesi sekvi facile iam ajn!", "follow_request.authorize": "Rajtigi", "follow_request.reject": "Rifuzi", - "follow_requests.unlocked_explanation": "Kvankam via konto ne estas ŝlosita, la teamo de {domain} pensis ke vi eble volas permane kontroli la demandojn de sekvado de ĉi tiuj kontoj.", + "follow_requests.unlocked_explanation": "Kvankam via konto ne estas ŝlosita, la teamo de {domain} pensas, ke vi eble volas permane kontroli la demandojn de sekvado de ĉi tiuj kontoj.", "generic.saved": "Konservita", "getting_started.developers": "Programistoj", "getting_started.directory": "Profilujo", @@ -210,7 +210,7 @@ "getting_started.invite": "Inviti homojn", "getting_started.open_source_notice": "Mastodon estas malfermitkoda programo. Vi povas kontribui aŭ raporti problemojn en GitHub je {github}.", "getting_started.security": "Sekureco", - "getting_started.terms": "Uzkondiĉoj", + "getting_started.terms": "Kondiĉoj de la servo", "hashtag.column_header.tag_mode.all": "kaj {additional}", "hashtag.column_header.tag_mode.any": "aŭ {additional}", "hashtag.column_header.tag_mode.none": "sen {additional}", @@ -223,14 +223,14 @@ "home.column_settings.basic": "Bazaj agordoj", "home.column_settings.show_reblogs": "Montri plusendojn", "home.column_settings.show_replies": "Montri respondojn", - "home.hide_announcements": "Kaŝi anoncojn", + "home.hide_announcements": "Kaŝi la anoncojn", "home.show_announcements": "Montri anoncojn", "intervals.full.days": "{number, plural, one {# tago} other {# tagoj}}", "intervals.full.hours": "{number, plural, one {# horo} other {# horoj}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutoj}}", "keyboard_shortcuts.back": "reveni", - "keyboard_shortcuts.blocked": "malfermi la liston de blokitaj uzantoj", - "keyboard_shortcuts.boost": "Plusendi", + "keyboard_shortcuts.blocked": "Malfermi la liston de blokitaj uzantoj", + "keyboard_shortcuts.boost": "Plusendi la mesaĝon", "keyboard_shortcuts.column": "fokusi mesaĝon en unu el la kolumnoj", "keyboard_shortcuts.compose": "enfokusigi la tekstujon", "keyboard_shortcuts.description": "Priskribo", @@ -239,7 +239,7 @@ "keyboard_shortcuts.enter": "malfermi mesaĝon", "keyboard_shortcuts.favourite": "Aldoni la mesaĝon al preferaĵoj", "keyboard_shortcuts.favourites": "Malfermi la liston de preferaĵoj", - "keyboard_shortcuts.federated": "Malfermi la federatan templinion", + "keyboard_shortcuts.federated": "Malfermi la frataran templinion", "keyboard_shortcuts.heading": "Klavaraj mallongigoj", "keyboard_shortcuts.home": "Malfermi la hejman templinion", "keyboard_shortcuts.hotkey": "Rapidklavo", @@ -253,22 +253,22 @@ "keyboard_shortcuts.pinned": "malfermi la liston de alpinglitaj mesaĝoj", "keyboard_shortcuts.profile": "malfermi la profilon de la aŭtoro", "keyboard_shortcuts.reply": "respondi", - "keyboard_shortcuts.requests": "malfermi la liston de petoj de sekvado", + "keyboard_shortcuts.requests": "Malfermi la liston de demandoj de sekvado", "keyboard_shortcuts.search": "enfokusigi la serĉilon", - "keyboard_shortcuts.spoilers": "montri/kaŝi la kampon de enhava averto", + "keyboard_shortcuts.spoilers": "Montri/kaŝi la kampon de averto de enhavo (\"CW\")", "keyboard_shortcuts.start": "malfermi la kolumnon «por komenci»", - "keyboard_shortcuts.toggle_hidden": "montri/kaŝi tekston malantaŭ enhava averto", - "keyboard_shortcuts.toggle_sensitivity": "montri/kaŝi aŭdovidaĵojn", + "keyboard_shortcuts.toggle_hidden": "Montri/kaŝi tekston malantaŭ la averto de enhavo (\"CW\")", + "keyboard_shortcuts.toggle_sensitivity": "Montri/kaŝi la aŭdovidaĵojn", "keyboard_shortcuts.toot": "Krei novan mesaĝon", "keyboard_shortcuts.unfocus": "malenfokusigi la tekstujon aŭ la serĉilon", "keyboard_shortcuts.up": "iri supren en la listo", "lightbox.close": "Fermi", "lightbox.compress": "Kunpremi bildan vidkeston", "lightbox.expand": "Pligrandigi bildan vidkeston", - "lightbox.next": "Sekva", - "lightbox.previous": "Antaŭa", + "lightbox.next": "Antaŭen", + "lightbox.previous": "Malantaŭen", "limited_account_hint.action": "Montru profilon ĉiukaze", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "La profilo estas kaŝita de la moderigantoj de via servilo.", "lists.account.add": "Aldoni al la listo", "lists.account.remove": "Forigi de la listo", "lists.delete": "Forigi la liston", @@ -300,9 +300,9 @@ "navigation_bar.domain_blocks": "Blokitaj domajnoj", "navigation_bar.edit_profile": "Redakti profilon", "navigation_bar.explore": "Esplori", - "navigation_bar.favourites": "Stelumoj", + "navigation_bar.favourites": "Preferaĵoj", "navigation_bar.filters": "Silentigitaj vortoj", - "navigation_bar.follow_requests": "Petoj de sekvado", + "navigation_bar.follow_requests": "Demandoj de sekvado", "navigation_bar.follows_and_followers": "Sekvatoj kaj sekvantoj", "navigation_bar.info": "Pri ĉi tiu servilo", "navigation_bar.keyboard_shortcuts": "Rapidklavoj", @@ -312,10 +312,11 @@ "navigation_bar.personal": "Persone", "navigation_bar.pins": "Alpinglitaj mesaĝoj", "navigation_bar.preferences": "Preferoj", - "navigation_bar.public_timeline": "Federata templinio", + "navigation_bar.public_timeline": "Fratara templinio", "navigation_bar.security": "Sekureco", + "notification.admin.report": "{name} raportis {target}", "notification.admin.sign_up": "{name} registris", - "notification.favourite": "{name} preferis vian mesaĝon", + "notification.favourite": "{name} aldonis vian mesaĝon al siaj preferaĵoj", "notification.follow": "{name} eksekvis vin", "notification.follow_request": "{name} petis sekvi vin", "notification.mention": "{name} menciis vin", @@ -326,14 +327,15 @@ "notification.update": "{name} redaktis afiŝon", "notifications.clear": "Forviŝi sciigojn", "notifications.clear_confirmation": "Ĉu vi certas, ke vi volas porĉiame forviŝi ĉiujn viajn sciigojn?", + "notifications.column_settings.admin.report": "Novaj raportoj:", "notifications.column_settings.admin.sign_up": "Novaj registriĝoj:", - "notifications.column_settings.alert": "Retumilaj sciigoj", + "notifications.column_settings.alert": "Sciigoj de la retumilo", "notifications.column_settings.favourite": "Preferaĵoj:", "notifications.column_settings.filter_bar.advanced": "Montri ĉiujn kategoriojn", "notifications.column_settings.filter_bar.category": "Rapida filtra breto", "notifications.column_settings.filter_bar.show_bar": "Montri la breton de filtrilo", "notifications.column_settings.follow": "Novaj sekvantoj:", - "notifications.column_settings.follow_request": "Novaj petoj de sekvado:", + "notifications.column_settings.follow_request": "Novaj demandoj de sekvado:", "notifications.column_settings.mention": "Mencioj:", "notifications.column_settings.poll": "Balotenketaj rezultoj:", "notifications.column_settings.push": "Puŝsciigoj", @@ -397,7 +399,7 @@ "report.block": "Bloki", "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Aliaj", - "report.categories.spam": "Trudaĵo", + "report.categories.spam": "Trudmesaĝo", "report.categories.violation": "Content violates one or more server rules", "report.category.subtitle": "Elektu la plej bonan kongruon", "report.category.title": "Diru al ni kio okazas pri ĉi tiu {type}", @@ -406,10 +408,10 @@ "report.close": "Farita", "report.comment.title": "Ĉu estas io alia kion vi pensas ke ni devas scii?", "report.forward": "Plusendi al {target}", - "report.forward_hint": "La konto estas de alia servilo. Ĉu vi volas sendi anoniman kopion de la informo ankaŭ al tie?", + "report.forward_hint": "La konto estas de alia servilo. Ĉu vi volas sendi anoniman kopion de la raporto ankaŭ al tie?", "report.mute": "Silentigi", "report.mute_explanation": "Vi ne vidos iliajn afiŝojn. Ili ankoraŭ povas sekvi vin kaj vidi viajn afiŝojn, kaj ne scios ke ili estas silentigitaj.", - "report.next": "Sekva", + "report.next": "Antaŭen", "report.placeholder": "Pliaj komentoj", "report.reasons.dislike": "Mi ne ŝatas ĝin", "report.reasons.dislike_description": "Ĝi ne estas io, kiun vi volas vidi", @@ -424,13 +426,18 @@ "report.statuses.subtitle": "Elektu ĉiujn, kiuj validas", "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Sendi", - "report.target": "Raporto pri {target}", + "report.target": "Raporti pri {target}", "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", "report.thanks.title": "Ĉu vi ne volas vidi ĉi tion?", "report.thanks.title_actionable": "Dankon pro raporti, ni esploros ĉi tion.", "report.unfollow": "Malsekvi @{name}", "report.unfollow_explanation": "Vi sekvas ĉi tiun konton. Por ne plu vidi ĝiajn abonfluojn en via hejma templinio, ĉesu sekvi ĝin.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Malobservo de la regulo", + "report_notification.open": "Malfermi la raporton", "search.placeholder": "Serĉi", "search_popout.search_format": "Detala serĉo", "search_popout.tips.full_text": "Simplaj tekstoj montras la mesaĝojn, kiujn vi skribis, stelumis, diskonigis, aŭ en kiuj vi estis menciita, sed ankaŭ kongruajn uzantnomojn, montratajn nomojn, kaj kradvortojn.", @@ -459,8 +466,9 @@ "status.edited": "Redaktita {date}", "status.edited_x_times": "Redactita {count, plural, one {{count} fojon} other {{count} fojojn}}", "status.embed": "Enkorpigi", - "status.favourite": "Preferaĵo", + "status.favourite": "Aldoni al viaj preferaĵoj", "status.filtered": "Filtrita", + "status.hide": "Hide toot", "status.history.created": "{name} kreis {date}", "status.history.edited": "{name} redaktis {date}", "status.load_more": "Ŝargi pli", @@ -474,9 +482,9 @@ "status.pinned": "Alpinglita mesaĝo", "status.read_more": "Legi pli", "status.reblog": "Plusendi", - "status.reblog_private": "Plusendi kiel la originala videbleco", + "status.reblog_private": "Plusendi kun la originala videbleco", "status.reblogged_by": "{name} plusendis", - "status.reblogs.empty": "Neniu ankoraŭ plusendis la mesaĝon. Kiam iu faros tion, ili aperos ĉi tie.", + "status.reblogs.empty": "Ankoraŭ neniu plusendis la mesaĝon. Kiam iu faras tion, ili aperos ĉi tie.", "status.redraft": "Forigi kaj reskribi", "status.remove_bookmark": "Forigi legosignon", "status.reply": "Respondi", @@ -484,6 +492,7 @@ "status.report": "Raporti @{name}", "status.sensitive_warning": "Tikla enhavo", "status.share": "Kundividi", + "status.show_filter_reason": "Show anyway", "status.show_less": "Montri malpli", "status.show_less_all": "Montri malpli ĉiun", "status.show_more": "Montri pli", @@ -494,7 +503,7 @@ "status.unpin": "Depingli de profilo", "suggestions.dismiss": "Forigi la proponon", "suggestions.header": "Vi povus interesiĝi pri…", - "tabs_bar.federated_timeline": "Federata", + "tabs_bar.federated_timeline": "Fratara", "tabs_bar.home": "Hejmo", "tabs_bar.local_timeline": "Loka templinio", "tabs_bar.notifications": "Sciigoj", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 78d81b38f..3a572524d 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Configuración", "navigation_bar.public_timeline": "Línea temporal federada", "navigation_bar.security": "Seguridad", + "notification.admin.report": "{name} denunció a {target}", "notification.admin.sign_up": "Se registró {name}", "notification.favourite": "{name} marcó tu mensaje como favorito", "notification.follow": "{name} te empezó a seguir", @@ -326,6 +327,7 @@ "notification.update": "{name} editó un mensaje", "notifications.clear": "Limpiar notificaciones", "notifications.clear_confirmation": "¿Estás seguro que querés limpiar todas tus notificaciones permanentemente?", + "notifications.column_settings.admin.report": "Nuevas denuncias:", "notifications.column_settings.admin.sign_up": "Nuevos registros:", "notifications.column_settings.alert": "Notificaciones de escritorio", "notifications.column_settings.favourite": "Favoritos:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Gracias por tu denuncia, vamos a revisarla.", "report.unfollow": "Dejar de seguir a @{name}", "report.unfollow_explanation": "Estás siguiendo a esta cuenta. Para no ver sus mensajes en tu línea temporal principal, dejá de seguirla.", + "report_notification.attached_statuses": "{count, plural, one {{count} mensaje adjunto} other {{count} mensajes adjuntos}}", + "report_notification.categories.other": "Otros", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Violación de regla", + "report_notification.open": "Abrir denuncia", "search.placeholder": "Buscar", "search_popout.search_format": "Formato de búsqueda avanzada", "search_popout.tips.full_text": "Las búsquedas de texto simple devuelven los mensajes que escribiste, los marcados como favoritos, los adheridos o en los que te mencionaron, así como nombres de usuarios, nombres mostrados y etiquetas.", @@ -461,6 +468,7 @@ "status.embed": "Insertar", "status.favourite": "Marcar como favorito", "status.filtered": "Filtrado", + "status.hide": "Hide toot", "status.history.created": "Creado por {name} el {date}", "status.history.edited": "Editado por {name} el {date}", "status.load_more": "Cargar más", @@ -484,6 +492,7 @@ "status.report": "Denunciar a @{name}", "status.sensitive_warning": "Contenido sensible", "status.share": "Compartir", + "status.show_filter_reason": "Show anyway", "status.show_less": "Mostrar menos", "status.show_less_all": "Mostrar menos para todo", "status.show_more": "Mostrar más", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 570a03186..0923a0734 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Preferencias", "navigation_bar.public_timeline": "Historia federada", "navigation_bar.security": "Seguridad", + "notification.admin.report": "{name} informó {target}", "notification.admin.sign_up": "{name} se unio", "notification.favourite": "{name} marcó tu estado como favorito", "notification.follow": "{name} te empezó a seguir", @@ -326,6 +327,7 @@ "notification.update": "{name} editó una publicación", "notifications.clear": "Limpiar notificaciones", "notifications.clear_confirmation": "¿Seguro que quieres limpiar permanentemente todas tus notificaciones?", + "notifications.column_settings.admin.report": "Nuevos informes:", "notifications.column_settings.admin.sign_up": "Registros nuevos:", "notifications.column_settings.alert": "Notificaciones de escritorio", "notifications.column_settings.favourite": "Favoritos:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Gracias por informar, estudiaremos esto.", "report.unfollow": "Dejar de seguir @{name}", "report.unfollow_explanation": "Estás siguiendo esta cuenta. Para no ver sus publicaciones en tu sección de noticias, deja de seguirlo.", + "report_notification.attached_statuses": "{count, plural, one {{count} publicación} other {{count} publicaciones}} adjunta(s)", + "report_notification.categories.other": "Otros", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Infracción de regla", + "report_notification.open": "Abrir informe", "search.placeholder": "Buscar", "search_popout.search_format": "Formato de búsqueda avanzada", "search_popout.tips.full_text": "Búsquedas de texto recuperan posts que has escrito, marcado como favoritos, retooteado o en los que has sido mencionado, así como usuarios, nombres y hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Incrustado", "status.favourite": "Favorito", "status.filtered": "Filtrado", + "status.hide": "Hide toot", "status.history.created": "{name} creó {date}", "status.history.edited": "{name} editado {date}", "status.load_more": "Cargar más", @@ -484,6 +492,7 @@ "status.report": "Reportar", "status.sensitive_warning": "Contenido sensible", "status.share": "Compartir", + "status.show_filter_reason": "Show anyway", "status.show_less": "Mostrar menos", "status.show_less_all": "Mostrar menos para todo", "status.show_more": "Mostrar más", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 0befa9153..652185a7b 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Preferencias", "navigation_bar.public_timeline": "Línea de tiempo federada", "navigation_bar.security": "Seguridad", + "notification.admin.report": "{name} informó {target}", "notification.admin.sign_up": "{name} se registró", "notification.favourite": "{name} marcó tu estado como favorito", "notification.follow": "{name} te empezó a seguir", @@ -326,6 +327,7 @@ "notification.update": "{name} editó una publicación", "notifications.clear": "Limpiar notificaciones", "notifications.clear_confirmation": "¿Seguro que quieres limpiar permanentemente todas tus notificaciones?", + "notifications.column_settings.admin.report": "Nuevos informes:", "notifications.column_settings.admin.sign_up": "Nuevos registros:", "notifications.column_settings.alert": "Notificaciones de escritorio", "notifications.column_settings.favourite": "Favoritos:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Gracias por informar, estudiaremos esto.", "report.unfollow": "Dejar de seguir a @{name}", "report.unfollow_explanation": "Estás siguiendo esta cuenta. Para no ver sus publicaciones en tu muro de inicio, deja de seguirla.", + "report_notification.attached_statuses": "{count, plural, one {{count} publicación} other {{count} publicaciones}} adjunta(s)", + "report_notification.categories.other": "Otros", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Infracción de regla", + "report_notification.open": "Abrir informe", "search.placeholder": "Buscar", "search_popout.search_format": "Formato de búsqueda avanzada", "search_popout.tips.full_text": "Las búsquedas de texto recuperan publicaciones que has escrito, marcado como favoritas, retooteado o en los que has sido mencionado, así como usuarios, nombres y hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Incrustado", "status.favourite": "Favorito", "status.filtered": "Filtrado", + "status.hide": "Hide toot", "status.history.created": "{name} creó {date}", "status.history.edited": "{name} editó {date}", "status.load_more": "Cargar más", @@ -484,6 +492,7 @@ "status.report": "Reportar", "status.sensitive_warning": "Contenido sensible", "status.share": "Compartir", + "status.show_filter_reason": "Show anyway", "status.show_less": "Mostrar menos", "status.show_less_all": "Mostrar menos para todo", "status.show_more": "Mostrar más", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index eb3425f79..2f2d29b8d 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Eelistused", "navigation_bar.public_timeline": "Föderatiivne ajajoon", "navigation_bar.security": "Turvalisus", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} märkis Teie staatuse lemmikuks", "notification.follow": "{name} jälgib nüüd Teid", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Puhasta teated", "notifications.clear_confirmation": "Olete kindel, et soovite püsivalt kõik oma teated eemaldada?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Töölauateated", "notifications.column_settings.favourite": "Lemmikud:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Otsi", "search_popout.search_format": "Täiustatud otsiformaat", "search_popout.tips.full_text": "Lihtne tekst toob esile staatused mida olete kirjutanud, lisanud lemmikuks, upitanud või olete seal mainitud, ning lisaks veel kattuvad kasutajanimed, kuvanimed ja sildid.", @@ -461,6 +468,7 @@ "status.embed": "Sängita", "status.favourite": "Lemmik", "status.filtered": "Filtreeritud", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Lae rohkem", @@ -484,6 +492,7 @@ "status.report": "Raporteeri @{name}", "status.sensitive_warning": "Tundlik sisu", "status.share": "Jaga", + "status.show_filter_reason": "Show anyway", "status.show_less": "Näita vähem", "status.show_less_all": "Näita vähem kõigile", "status.show_more": "Näita veel", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index c8182640a..618b8265f 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Hobespenak", "navigation_bar.public_timeline": "Federatutako denbora-lerroa", "navigation_bar.security": "Segurtasuna", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} erabiltzailea erregistratu da", "notification.favourite": "{name}(e)k zure bidalketa gogoko du", "notification.follow": "{name}(e)k jarraitzen zaitu", @@ -326,6 +327,7 @@ "notification.update": "{name} erabiltzaileak bidalketa bat editatu du", "notifications.clear": "Garbitu jakinarazpenak", "notifications.clear_confirmation": "Ziur zure jakinarazpen guztiak behin betirako garbitu nahi dituzula?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "Izen-emate berriak:", "notifications.column_settings.alert": "Mahaigaineko jakinarazpenak", "notifications.column_settings.favourite": "Gogokoak:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Mila esker salaketagatik, berrikusiko dugu.", "report.unfollow": "@{name} jarraitzeari utzi", "report.unfollow_explanation": "Kontu hau jarraitzen ari zara. Zure denbora-lerro nagusian bere bidalketak ez ikusteko, jarraitzeari utzi.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Bilatu", "search_popout.search_format": "Bilaketa aurreratuaren formatua", "search_popout.tips.full_text": "Testu hutsarekin zuk idatzitako bidalketak, gogokoak, bultzadak edo aipamenak aurkitu ditzakezu, bat datozen erabiltzaile-izenak, pantaila-izenak, eta traolak.", @@ -461,6 +468,7 @@ "status.embed": "Txertatu", "status.favourite": "Gogokoa", "status.filtered": "Iragazita", + "status.hide": "Hide toot", "status.history.created": "{name} erabiltzaileak sortua {date}", "status.history.edited": "{name} erabiltzaileak editatua {date}", "status.load_more": "Kargatu gehiago", @@ -484,6 +492,7 @@ "status.report": "Salatu @{name}", "status.sensitive_warning": "Kontuz: Eduki hunkigarria", "status.share": "Partekatu", + "status.show_filter_reason": "Show anyway", "status.show_less": "Erakutsi gutxiago", "status.show_less_all": "Erakutsi denetarik gutxiago", "status.show_more": "Erakutsi gehiago", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index c76c596eb..99621747e 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "ترجیحات", "navigation_bar.public_timeline": "خط زمانی همگانی", "navigation_bar.security": "امنیت", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} ثبت نام کرد", "notification.favourite": "‫{name}‬ فرسته‌تان را پسندید", "notification.follow": "‫{name}‬ پی‌گیرتان شد", @@ -326,6 +327,7 @@ "notification.update": "{name} فرسته‌ای را ویرایش کرد", "notifications.clear": "پاک‌سازی آگاهی‌ها", "notifications.clear_confirmation": "مطمئنید می‌خواهید همهٔ آگاهی‌هایتان را برای همیشه پاک کنید؟", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "ثبت نام‌های جدید:", "notifications.column_settings.alert": "آگاهی‌های میزکار", "notifications.column_settings.favourite": "پسندیده‌ها:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "ممنون بابت گزارش، ما آن را بررسی خواهیم کرد.", "report.unfollow": "ناپی‌گیری ‎@{name}", "report.unfollow_explanation": "شما این حساب را پی‌گرفته‌اید، برای اینکه دیگر فرسته‌هایش را در خوراک خانه‌تان نبینید؛ آن را پی‌نگیرید.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "جست‌وجو", "search_popout.search_format": "راهنمای جست‌وجوی پیشرفته", "search_popout.tips.full_text": "جست‌وجوی متنی ساده فرسته‌هایی که نوشته، پسندیده، تقویت‌کرده یا در آن‌ها نام‌برده شده‌اید را به علاوهٔ نام‌های کاربری، نام‌های نمایشی و برچسب‌ها برمی‌گرداند.", @@ -461,6 +468,7 @@ "status.embed": "جاسازی", "status.favourite": "پسندیدن", "status.filtered": "پالوده", + "status.hide": "Hide toot", "status.history.created": "توسط {name} در {date} ایجاد شد", "status.history.edited": "توسط {name} در {date} ویرایش شد", "status.load_more": "بار کردن بیش‌تر", @@ -484,6 +492,7 @@ "status.report": "گزارش ‎@{name}", "status.sensitive_warning": "محتوای حساس", "status.share": "هم‌رسانی", + "status.show_filter_reason": "Show anyway", "status.show_less": "نمایش کمتر", "status.show_less_all": "نمایش کمتر همه", "status.show_more": "نمایش بیشتر", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index fb3725664..a423d1f02 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Asetukset", "navigation_bar.public_timeline": "Yleinen aikajana", "navigation_bar.security": "Turvallisuus", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} rekisteröitynyt", "notification.favourite": "{name} tykkäsi viestistäsi", "notification.follow": "{name} seurasi sinua", @@ -326,6 +327,7 @@ "notification.update": "{name} muokkasi viestiä", "notifications.clear": "Tyhjennä ilmoitukset", "notifications.clear_confirmation": "Haluatko varmasti poistaa kaikki ilmoitukset pysyvästi?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "Uudet kirjautumiset:", "notifications.column_settings.alert": "Työpöytäilmoitukset", "notifications.column_settings.favourite": "Tykkäykset:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Kiitos raportista, tutkimme asiaa.", "report.unfollow": "Lopeta seuraaminen @{name}", "report.unfollow_explanation": "Seuraat tätä tiliä. Jotta et enää näkisi heidän kirjoituksiaan, lopeta niiden seuraaminen.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Hae", "search_popout.search_format": "Tarkennettu haku", "search_popout.tips.full_text": "Tekstihaku listaa tilapäivitykset, jotka olet kirjoittanut, lisännyt suosikkeihisi, boostannut tai joissa sinut mainitaan, sekä tekstin sisältävät käyttäjänimet, nimimerkit ja hastagit.", @@ -461,6 +468,7 @@ "status.embed": "Upota", "status.favourite": "Tykkää", "status.filtered": "Suodatettu", + "status.hide": "Hide toot", "status.history.created": "{name} luotu {date}", "status.history.edited": "{name} muokkasi {date}", "status.load_more": "Lataa lisää", @@ -484,6 +492,7 @@ "status.report": "Raportoi @{name}", "status.sensitive_warning": "Arkaluontoista sisältöä", "status.share": "Jaa", + "status.show_filter_reason": "Show anyway", "status.show_less": "Näytä vähemmän", "status.show_less_all": "Näytä vähemmän kaikista", "status.show_more": "Näytä lisää", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 0d8759e25..d1cebafd2 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Préférences", "navigation_bar.public_timeline": "Fil public global", "navigation_bar.security": "Sécurité", + "notification.admin.report": "{name} a signalé {target}", "notification.admin.sign_up": "{name} s'est inscrit·e", "notification.favourite": "{name} a ajouté le message à ses favoris", "notification.follow": "{name} vous suit", @@ -326,6 +327,7 @@ "notification.update": "{name} a modifié un message", "notifications.clear": "Effacer les notifications", "notifications.clear_confirmation": "Voulez-vous vraiment effacer toutes vos notifications ?", + "notifications.column_settings.admin.report": "Nouveaux signalements :", "notifications.column_settings.admin.sign_up": "Nouvelles inscriptions :", "notifications.column_settings.alert": "Notifications du navigateur", "notifications.column_settings.favourite": "Favoris :", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Merci pour votre signalement, nous allons investiguer.", "report.unfollow": "Ne plus suivre @{name}", "report.unfollow_explanation": "Vous suivez ce compte. Désabonnez-vous pour ne plus en voir les messages sur votre fil principal.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Autre", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Infraction aux règles du serveur", + "report_notification.open": "Ouvrir le signalement", "search.placeholder": "Rechercher", "search_popout.search_format": "Recherche avancée", "search_popout.tips.full_text": "Un texte normal retourne les messages que vous avez écrits, ajoutés à vos favoris, partagés, ou vous mentionnant, ainsi que les identifiants, les noms affichés, et les hashtags des personnes et messages correspondants.", @@ -461,6 +468,7 @@ "status.embed": "Intégrer", "status.favourite": "Ajouter aux favoris", "status.filtered": "Filtré", + "status.hide": "Hide toot", "status.history.created": "créé par {name} {date}", "status.history.edited": "édité par {name} {date}", "status.load_more": "Charger plus", @@ -484,6 +492,7 @@ "status.report": "Signaler @{name}", "status.sensitive_warning": "Contenu sensible", "status.share": "Partager", + "status.show_filter_reason": "Show anyway", "status.show_less": "Replier", "status.show_less_all": "Tout replier", "status.show_more": "Déplier", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index f8485270a..dd361b995 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Foarkarren", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} hat harren ynskreaun", "notification.favourite": "{name} hat jo berjocht as favoryt markearre", "notification.follow": "{name} folget jo", @@ -326,6 +327,7 @@ "notification.update": "{name} hat in berjocht feroare", "notifications.clear": "Notifikaasjes leegje", "notifications.clear_confirmation": "Wolle jo al jo notifikaasjes werklik foar ivich fuortsmite?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "Nije ynskriuwingen:", "notifications.column_settings.alert": "Desktop notifikaasjes", "notifications.column_settings.favourite": "Favoriten:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Search", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Ynslute", "status.favourite": "Favorite", "status.filtered": "Filtere", + "status.hide": "Hide toot", "status.history.created": "{name} makke dit {date}", "status.history.edited": "{name} feroare dit {date}", "status.load_more": "Load more", @@ -484,6 +492,7 @@ "status.report": "Jou @{name} oan", "status.sensitive_warning": "Sensitive content", "status.share": "Diele", + "status.show_filter_reason": "Show anyway", "status.show_less": "Minder sjen litte", "status.show_less_all": "Foar alles minder sjen litte", "status.show_more": "Mear sjen litte", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 2d2551845..f036e9b08 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "Roghnaigh {name} do phostáil", "notification.follow": "Lean {name} thú", @@ -326,6 +327,7 @@ "notification.update": "Chuir {name} postáil in eagar", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Roghanna:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Cuardaigh", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Embed", "status.favourite": "Rogha", "status.filtered": "Filtered", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "Curtha in eagar ag {name} in {date}", "status.load_more": "Load more", @@ -484,6 +492,7 @@ "status.report": "Report @{name}", "status.sensitive_warning": "Sensitive content", "status.share": "Share", + "status.show_filter_reason": "Show anyway", "status.show_less": "Show less", "status.show_less_all": "Show less for all", "status.show_more": "Show more", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index bdfc02af7..a0127c578 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Roghainnean", "navigation_bar.public_timeline": "Loidhne-ama cho-naisgte", "navigation_bar.security": "Tèarainteachd", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "Chlàraich {name}", "notification.favourite": "Is annsa le {name} am post agad", "notification.follow": "Tha {name} a’ leantainn ort a-nis", @@ -326,6 +327,7 @@ "notification.update": "Dheasaich {name} post", "notifications.clear": "Falamhaich na brathan", "notifications.clear_confirmation": "A bheil thu cinnteach gu bheil thu airson na brathan uile agad fhalamhachadh gu buan?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "Clàraidhean ùra:", "notifications.column_settings.alert": "Brathan deasga", "notifications.column_settings.favourite": "Na h-annsachdan:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Mòran taing airson a’ ghearain, bheir sinn sùil air.", "report.unfollow": "Na lean air @{name} tuilleadh", "report.unfollow_explanation": "Tha thu a’ leantainn air a’ chunntas seo. Sgur de leantainn orra ach nach fhaic thu na puist aca air inbhir na dachaigh agad.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Lorg", "search_popout.search_format": "Fòrmat adhartach an luirg", "search_popout.tips.full_text": "Bheir teacsa sìmplidh dhut na postaichean a sgrìobh thu, a tha nan annsachdan dhut, a bhrosnaich thu no san deach iomradh a thoirt ort cho math ri ainmean-cleachdaiche, ainmean taisbeanaidh agus tagaichean hais a mhaidsicheas.", @@ -461,6 +468,7 @@ "status.embed": "Leabaich", "status.favourite": "Cuir ris na h-annsachdan", "status.filtered": "Criathraichte", + "status.hide": "Hide toot", "status.history.created": "Chruthaich {name} {date} e", "status.history.edited": "Dheasaich {name} {date} e", "status.load_more": "Luchdaich barrachd dheth", @@ -484,6 +492,7 @@ "status.report": "Dèan gearan mu @{name}", "status.sensitive_warning": "Susbaint fhrionasach", "status.share": "Co-roinn", + "status.show_filter_reason": "Show anyway", "status.show_less": "Seall nas lugha dheth", "status.show_less_all": "Seall nas lugha dhen a h-uile", "status.show_more": "Seall barrachd dheth", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 01fd9a567..2dc7070d2 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Preferencias", "navigation_bar.public_timeline": "Cronoloxía federada", "navigation_bar.security": "Seguranza", + "notification.admin.report": "{name} denunciou a {target}", "notification.admin.sign_up": "{name} rexistrouse", "notification.favourite": "{name} marcou a túa publicación como favorita", "notification.follow": "{name} comezou a seguirte", @@ -326,6 +327,7 @@ "notification.update": "{name} editou unha publicación", "notifications.clear": "Limpar notificacións", "notifications.clear_confirmation": "Tes a certeza de querer limpar de xeito permanente todas as túas notificacións?", + "notifications.column_settings.admin.report": "Novas denuncias:", "notifications.column_settings.admin.sign_up": "Novas usuarias:", "notifications.column_settings.alert": "Notificacións de escritorio", "notifications.column_settings.favourite": "Favoritos:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Grazas pola denuncia, investigarémola.", "report.unfollow": "Non seguir a @{name}", "report.unfollow_explanation": "Estás a seguir esta conta. Deixar de ver as súas publicacións na túa cronoloxía, non seguila.", + "report_notification.attached_statuses": "Achegou {count, plural, one {{count} publicación} other {{count} publicacións}}", + "report_notification.categories.other": "Outro", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Faltou ás regras", + "report_notification.open": "Abrir a denuncia", "search.placeholder": "Procurar", "search_popout.search_format": "Formato de procura avanzada", "search_popout.tips.full_text": "Texto simple devolve toots que ti escribiches, promoviches, marcaches favoritos, ou foches mencionada, así como nomes de usuaria coincidentes, nomes públicos e cancelos.", @@ -461,6 +468,7 @@ "status.embed": "Incrustar", "status.favourite": "Favorito", "status.filtered": "Filtrado", + "status.hide": "Hide toot", "status.history.created": "{name} creouno o {date}", "status.history.edited": "{name} editouno o {date}", "status.load_more": "Cargar máis", @@ -484,6 +492,7 @@ "status.report": "Denunciar @{name}", "status.sensitive_warning": "Contido sensíbel", "status.share": "Compartir", + "status.show_filter_reason": "Show anyway", "status.show_less": "Amosar menos", "status.show_less_all": "Amosar menos para todos", "status.show_more": "Amosar máis", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index ecbc373c6..5d71113e4 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "העדפות", "navigation_bar.public_timeline": "ציר זמן בין-קהילתי", "navigation_bar.security": "אבטחה", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} נרשמו", "notification.favourite": "חצרוצך חובב על ידי {name}", "notification.follow": "{name} במעקב אחרייך", @@ -321,11 +322,12 @@ "notification.mention": "אוזכרת על ידי {name}", "notification.own_poll": "הסקר שלך הסתיים", "notification.poll": "סקר שהצבעת בו הסתיים", - "notification.reblog": "חצרוצך הודהד על ידי {name}", + "notification.reblog": "הפוסט הזה הודהד על ידי {name}", "notification.status": "{name} הרגע פרסמו", "notification.update": "{name} ערכו פוסט", "notifications.clear": "הסרת התראות", "notifications.clear_confirmation": "להסיר את כל ההתראות? בטוח?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "הרשמות חדשות:", "notifications.column_settings.alert": "התראות לשולחן העבודה", "notifications.column_settings.favourite": "מחובבים:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "תודה על הדיווח, נבדוק את העניין.", "report.unfollow": "הפסיקו לעקוב אחרי @{name}", "report.unfollow_explanation": "אתם עוקבים אחרי החשבון הזה. כדי להפסיק לראות את הפרסומים שלו בפיד הבית שלכם, הפסיקו לעקוב אחריהם.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "חיפוש", "search_popout.search_format": "מבנה חיפוש מתקדם", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -461,6 +468,7 @@ "status.embed": "הטמעה", "status.favourite": "חיבוב", "status.filtered": "סונן", + "status.hide": "Hide toot", "status.history.created": "{name} יצר/ה {date}", "status.history.edited": "{name} ערך/ה {date}", "status.load_more": "עוד", @@ -475,7 +483,7 @@ "status.read_more": "לקרוא עוד", "status.reblog": "הדהוד", "status.reblog_private": "להדהד ברמת הנראות המקורית", - "status.reblogged_by": "הודהד על ידי {name}", + "status.reblogged_by": "{name} הידהד/ה:", "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "מחיקה ועריכה מחדש", "status.remove_bookmark": "הסרת סימניה", @@ -484,6 +492,7 @@ "status.report": "דיווח על @{name}", "status.sensitive_warning": "תוכן רגיש", "status.share": "שיתוף", + "status.show_filter_reason": "Show anyway", "status.show_less": "הראה פחות", "status.show_less_all": "להציג פחות מהכל", "status.show_more": "הראה יותר", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index df0085067..0ff1fc7a1 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "खोजें", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", @@ -484,6 +492,7 @@ "status.report": "Report @{name}", "status.sensitive_warning": "संवेदनशील विषय वस्तु", "status.share": "शेयर करें", + "status.show_filter_reason": "Show anyway", "status.show_less": "कम दिखाएँ", "status.show_less_all": "Show less for all", "status.show_more": "और दिखाएँ", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index 1ed57960e..56678d12a 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Postavke", "navigation_bar.public_timeline": "Federalna vremenska crta", "navigation_bar.security": "Sigurnost", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} je favorizirao/la Vaš toot", "notification.follow": "{name} Vas je počeo/la pratiti", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Očisti obavijesti", "notifications.clear_confirmation": "Želite li zaista trajno očistiti sve Vaše obavijesti?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Obavijesti radne površine", "notifications.column_settings.favourite": "Favoriti:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Traži", "search_popout.search_format": "Format naprednog pretraživanja", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Embed", "status.favourite": "Označi favoritom", "status.filtered": "Filtered", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Učitaj više", @@ -484,6 +492,7 @@ "status.report": "Prijavi @{name}", "status.sensitive_warning": "Osjetljiv sadržaj", "status.share": "Podijeli", + "status.show_filter_reason": "Show anyway", "status.show_less": "Pokaži manje", "status.show_less_all": "Show less for all", "status.show_more": "Pokaži više", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 403e9edfe..530feba2c 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Beállítások", "navigation_bar.public_timeline": "Föderációs idővonal", "navigation_bar.security": "Biztonság", + "notification.admin.report": "{name} jelentette: {target}", "notification.admin.sign_up": "{name} regisztrált", "notification.favourite": "{name} kedvencnek jelölte a bejegyzésedet", "notification.follow": "{name} követ téged", @@ -326,6 +327,7 @@ "notification.update": "{name} szerkesztett egy bejegyzést", "notifications.clear": "Értesítések törlése", "notifications.clear_confirmation": "Biztos, hogy véglegesen törölni akarod az összes értesítésed?", + "notifications.column_settings.admin.report": "Új jelentések:", "notifications.column_settings.admin.sign_up": "Új regisztrálók:", "notifications.column_settings.alert": "Asztali értesítések", "notifications.column_settings.favourite": "Kedvencek:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Köszönjük, hogy jelentetted, megnézzük.", "report.unfollow": "@{name} követésének leállítása", "report.unfollow_explanation": "Követed ezt a fiókot. Hogy ne lásd a bejegyzéseit a saját idővonaladon, szüntesd meg a követését.", + "report_notification.attached_statuses": "{count} bejegyzés mellékelve", + "report_notification.categories.other": "Egyéb", + "report_notification.categories.spam": "Kéretlen üzenet", + "report_notification.categories.violation": "Szabálysértés", + "report_notification.open": "Bejelentés megnyitása", "search.placeholder": "Keresés", "search_popout.search_format": "Speciális keresés", "search_popout.tips.full_text": "Egyszerű szöveg, mely általad írt, kedvencnek jelölt vagy megtolt bejegyzéseket, rólad szóló megemlítéseket, felhasználói neveket, megjelenített neveket, hashtageket ad majd vissza.", @@ -461,6 +468,7 @@ "status.embed": "Beágyazás", "status.favourite": "Kedvenc", "status.filtered": "Megszűrt", + "status.hide": "Hide toot", "status.history.created": "{name} létrehozta: {date}", "status.history.edited": "{name} szerkesztette: {date}", "status.load_more": "Többet", @@ -484,6 +492,7 @@ "status.report": "@{name} bejelentése", "status.sensitive_warning": "Kényes tartalom", "status.share": "Megosztás", + "status.show_filter_reason": "Show anyway", "status.show_less": "Kevesebb megjelenítése", "status.show_less_all": "Kevesebbet mindenhol", "status.show_more": "Többet", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index 7d80b18d8..866a6a2cf 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Նախապատուութիւններ", "navigation_bar.public_timeline": "Դաշնային հոսք", "navigation_bar.security": "Անվտանգութիւն", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name}-ը գրանցուած է", "notification.favourite": "{name} հաւանեց գրառումդ", "notification.follow": "{name} սկսեց հետեւել քեզ", @@ -326,6 +327,7 @@ "notification.update": "{name}-ը փոխել է գրառումը", "notifications.clear": "Մաքրել ծանուցումները", "notifications.clear_confirmation": "Վստա՞հ ես, որ ուզում ես մշտապէս մաքրել քո բոլոր ծանուցումները։", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "Նոր գրանցումներ՝", "notifications.column_settings.alert": "Աշխատատիրոյթի ծանուցումներ", "notifications.column_settings.favourite": "Հաւանածներից՝", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Փնտրել", "search_popout.search_format": "Փնտրելու առաջադէմ ձեւ", "search_popout.tips.full_text": "Պարզ տեքստը վերադարձնում է գրառումներդ, հաւանածներդ, տարածածներդ, որտեղ ես նշուած եղել, ինչպէս նաեւ նման օգտանուններ, անուններ եւ պիտակներ։", @@ -461,6 +468,7 @@ "status.embed": "Ներդնել", "status.favourite": "Հաւանել", "status.filtered": "Զտուած", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Բեռնել աւելին", @@ -484,6 +492,7 @@ "status.report": "Բողոքել @{name}֊ից", "status.sensitive_warning": "Կասկածելի բովանդակութիւն", "status.share": "Կիսուել", + "status.show_filter_reason": "Show anyway", "status.show_less": "Պակաս", "status.show_less_all": "Թաքցնել բոլոր նախազգուշացնումները", "status.show_more": "Աւելին", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 10f80ee61..04fe5213b 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Pengaturan", "navigation_bar.public_timeline": "Linimasa gabungan", "navigation_bar.security": "Keamanan", + "notification.admin.report": "{name} melaporkan {target}", "notification.admin.sign_up": "{name} mendaftar", "notification.favourite": "{name} menyukai status anda", "notification.follow": "{name} mengikuti anda", @@ -326,6 +327,7 @@ "notification.update": "{name} mengedit kiriman", "notifications.clear": "Hapus notifikasi", "notifications.clear_confirmation": "Apa anda yakin hendak menghapus semua notifikasi anda?", + "notifications.column_settings.admin.report": "Laporan baru:", "notifications.column_settings.admin.sign_up": "Pendaftaran baru:", "notifications.column_settings.alert": "Notifikasi desktop", "notifications.column_settings.favourite": "Favorit:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Terima kasih atas pelaporan Anda, kami akan memeriksa ini lebih lanjut.", "report.unfollow": "Berhenti mengikuti @{name}", "report.unfollow_explanation": "Anda mengikuti akun ini. Untuk tidak melihat postingan mereka di Beranda Anda, berhenti mengikuti mereka.", + "report_notification.attached_statuses": "{count, plural, other {{count} postingan}} terlampir", + "report_notification.categories.other": "Lainnya", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Pelanggaran peraturan", + "report_notification.open": "Buka laporan", "search.placeholder": "Pencarian", "search_popout.search_format": "Format pencarian mahir", "search_popout.tips.full_text": "Teks simpel menampilkan status yang Anda tulis, favoritkan, boost-kan, atau status yang menyebut Anda, serta nama pengguna, nama yang ditampilkan, dan tagar yang cocok.", @@ -461,6 +468,7 @@ "status.embed": "Tanam", "status.favourite": "Difavoritkan", "status.filtered": "Disaring", + "status.hide": "Hide toot", "status.history.created": "{name} membuat pada {date}", "status.history.edited": "{name} mengedit pada {date}", "status.load_more": "Tampilkan semua", @@ -484,6 +492,7 @@ "status.report": "Laporkan @{name}", "status.sensitive_warning": "Konten sensitif", "status.share": "Bagikan", + "status.show_filter_reason": "Show anyway", "status.show_less": "Tampilkan lebih sedikit", "status.show_less_all": "Tampilkan lebih sedikit", "status.show_more": "Tampilkan semua", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 3eea9dcca..bc596e7fd 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Preferi", "navigation_bar.public_timeline": "Federata tempolineo", "navigation_bar.security": "Sekureso", + "notification.admin.report": "{name} raportizis {target}", "notification.admin.sign_up": "{name} registresis", "notification.favourite": "{name} favorizis tua mesajo", "notification.follow": "{name} sequeskis tu", @@ -326,6 +327,7 @@ "notification.update": "{name} modifikis posto", "notifications.clear": "Efacar savigi", "notifications.clear_confirmation": "Ka tu esas certa, ke tu volas efacar omna tua savigi?", + "notifications.column_settings.admin.report": "Nova raporti:", "notifications.column_settings.admin.sign_up": "Nova registranti:", "notifications.column_settings.alert": "Desktopavizi", "notifications.column_settings.favourite": "Favorati:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Danko por raportizar, ni kontrolos co.", "report.unfollow": "Desequez @{name}", "report.unfollow_explanation": "Vu sequas ca konto. Por ne vidar olia posti en vua hemniuzeto pluse, desequez oli.", + "report_notification.attached_statuses": "{count, plural,one {{count} posti} other {{count} posti}} adjuntesas", + "report_notification.categories.other": "Altra", + "report_notification.categories.spam": "Spamo", + "report_notification.categories.violation": "Regulnesequo", + "report_notification.open": "Apertez raporto", "search.placeholder": "Serchez", "search_popout.search_format": "Avancata trovformato", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Eninsertez", "status.favourite": "Favorizar", "status.filtered": "Filtrita", + "status.hide": "Hide toot", "status.history.created": "{name} kreis ye {date}", "status.history.edited": "{name} modifikis ye {date}", "status.load_more": "Kargar pluse", @@ -484,6 +492,7 @@ "status.report": "Denuncar @{name}", "status.sensitive_warning": "Trubliva kontenajo", "status.share": "Partigez", + "status.show_filter_reason": "Show anyway", "status.show_less": "Montrar mine", "status.show_less_all": "Montrez min por omno", "status.show_more": "Montrar plue", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 2cdf3c2c0..a03fa35ae 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Kjörstillingar", "navigation_bar.public_timeline": "Sameiginleg tímalína", "navigation_bar.security": "Öryggi", + "notification.admin.report": "{name} kærði {target}", "notification.admin.sign_up": "{name} skráði sig", "notification.favourite": "{name} setti færslu þína í eftirlæti", "notification.follow": "{name} fylgist með þér", @@ -326,6 +327,7 @@ "notification.update": "{name} breytti færslu", "notifications.clear": "Hreinsa tilkynningar", "notifications.clear_confirmation": "Ertu viss um að þú viljir endanlega eyða öllum tilkynningunum þínum?", + "notifications.column_settings.admin.report": "Nýjar kærur:", "notifications.column_settings.admin.sign_up": "Nýjar skráningar:", "notifications.column_settings.alert": "Tilkynningar á skjáborði", "notifications.column_settings.favourite": "Eftirlæti:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Takk fyrir tilkynninguna, við munum skoða málið.", "report.unfollow": "Hætta að fylgjast með @{name}", "report.unfollow_explanation": "Þú ert að fylgjast með þessum aðgangi. Til að hætta að sjá viðkomandi færslur á streyminu þínu, skaltu hætta að fylgjast með viðkomandi.", + "report_notification.attached_statuses": "{count, plural, one {{count} færsla} other {{count} færslur}} viðhengdar", + "report_notification.categories.other": "Annað", + "report_notification.categories.spam": "Ruslpóstur", + "report_notification.categories.violation": "Brot á reglum", + "report_notification.open": "Opin kæra", "search.placeholder": "Leita", "search_popout.search_format": "Snið ítarlegrar leitar", "search_popout.tips.full_text": "Einfaldur texti skilar færslum sem þú hefur skrifað, sett í eftirlæti, endurbirt eða verið minnst á þig í, ásamt samsvarandi birtingarnöfnum, notendanöfnum og myllumerkjum.", @@ -461,6 +468,7 @@ "status.embed": "Ívefja", "status.favourite": "Eftirlæti", "status.filtered": "Síað", + "status.hide": "Hide toot", "status.history.created": "{name} útbjó {date}", "status.history.edited": "{name} breytti {date}", "status.load_more": "Hlaða inn meiru", @@ -484,6 +492,7 @@ "status.report": "Kæra @{name}", "status.sensitive_warning": "Viðkvæmt efni", "status.share": "Deila", + "status.show_filter_reason": "Show anyway", "status.show_less": "Sýna minna", "status.show_less_all": "Sýna minna fyrir allt", "status.show_more": "Sýna meira", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index d28316242..85d71608d 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Impostazioni", "navigation_bar.public_timeline": "Timeline federata", "navigation_bar.security": "Sicurezza", + "notification.admin.report": "{name} ha segnalato {target}", "notification.admin.sign_up": "{name} si è iscritto", "notification.favourite": "{name} ha apprezzato il tuo post", "notification.follow": "{name} ha iniziato a seguirti", @@ -326,6 +327,7 @@ "notification.update": "{name} ha modificato un post", "notifications.clear": "Cancella notifiche", "notifications.clear_confirmation": "Vuoi davvero cancellare tutte le notifiche?", + "notifications.column_settings.admin.report": "Nuove segnalazioni:", "notifications.column_settings.admin.sign_up": "Nuove iscrizioni:", "notifications.column_settings.alert": "Notifiche desktop", "notifications.column_settings.favourite": "Apprezzati:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Grazie per la segnalazione, controlleremo il problema.", "report.unfollow": "Non seguire più @{name}", "report.unfollow_explanation": "Stai seguendo questo account. Per non vedere più i suoi post nel tuo feed home, smetti di seguirlo.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} post}} allegati", + "report_notification.categories.other": "Altro", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Violazione delle regole", + "report_notification.open": "Apri segnalazione", "search.placeholder": "Cerca", "search_popout.search_format": "Formato di ricerca avanzato", "search_popout.tips.full_text": "Testo semplice per trovare gli status che hai scritto, segnato come apprezzati, condiviso o in cui sei stato citato, e inoltre i nomi utente, nomi visualizzati e hashtag che lo contengono.", @@ -461,6 +468,7 @@ "status.embed": "Incorpora", "status.favourite": "Apprezzato", "status.filtered": "Filtrato", + "status.hide": "Hide toot", "status.history.created": "{name} ha creato {date}", "status.history.edited": "{name} ha modificato {date}", "status.load_more": "Mostra di più", @@ -484,6 +492,7 @@ "status.report": "Segnala @{name}", "status.sensitive_warning": "Materiale sensibile", "status.share": "Condividi", + "status.show_filter_reason": "Show anyway", "status.show_less": "Mostra meno", "status.show_less_all": "Mostra meno per tutti", "status.show_more": "Mostra di più", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 95d35c0ef..a9e0d722a 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "ユーザー設定", "navigation_bar.public_timeline": "連合タイムライン", "navigation_bar.security": "セキュリティ", + "notification.admin.report": "{name}さんが{target}さんを通報しました", "notification.admin.sign_up": "{name}さんがサインアップしました", "notification.favourite": "{name}さんがあなたの投稿をお気に入りに登録しました", "notification.follow": "{name}さんにフォローされました", @@ -326,6 +327,7 @@ "notification.update": "{name}さんが投稿を編集しました", "notifications.clear": "通知を消去", "notifications.clear_confirmation": "本当に通知を消去しますか?", + "notifications.column_settings.admin.report": "新しい通報:", "notifications.column_settings.admin.sign_up": "新規登録:", "notifications.column_settings.alert": "デスクトップ通知", "notifications.column_settings.favourite": "お気に入り:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "ご報告ありがとうございます、追って確認します。", "report.unfollow": "@{name}さんのフォローを解除", "report.unfollow_explanation": "このアカウントをフォローしています。ホームフィードに彼らの投稿を表示しないようにするには、彼らのフォローを外してください。", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "その他", + "report_notification.categories.spam": "スパム", + "report_notification.categories.violation": "ルール違反", + "report_notification.open": "通報を開く", "search.placeholder": "検索", "search_popout.search_format": "高度な検索フォーマット", "search_popout.tips.full_text": "表示名やユーザー名、ハッシュタグのほか、あなたの投稿やお気に入り、ブーストした投稿、返信に一致する単純なテキスト。", @@ -461,6 +468,7 @@ "status.embed": "埋め込み", "status.favourite": "お気に入り", "status.filtered": "フィルターされました", + "status.hide": "Hide toot", "status.history.created": "{name}さんが{date}に作成", "status.history.edited": "{name}さんが{date}に編集", "status.load_more": "もっと見る", @@ -484,6 +492,7 @@ "status.report": "@{name}さんを通報", "status.sensitive_warning": "閲覧注意", "status.share": "共有", + "status.show_filter_reason": "Show anyway", "status.show_less": "隠す", "status.show_less_all": "全て隠す", "status.show_more": "もっと見る", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index d97673fc4..047cdab85 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "პრეფერენსიები", "navigation_bar.public_timeline": "ფედერალური თაიმლაინი", "navigation_bar.security": "უსაფრთხოება", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name}-მა თქვენი სტატუსი აქცია ფავორიტად", "notification.follow": "{name} გამოგყვათ", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "შეტყობინებების გასუფთავება", "notifications.clear_confirmation": "დარწმუნებული ხართ, გსურთ სამუდამოდ წაშალოთ ყველა თქვენი შეტყობინება?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "დესკტოპ შეტყობინებები", "notifications.column_settings.favourite": "ფავორიტები:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "ძებნა", "search_popout.search_format": "დეტალური ძებნის ფორმა", "search_popout.tips.full_text": "მარტივი ტექსტი აბრუნებს სტატუსებს რომლებიც შექმენით, აქციეთ ფავორიტად, დაბუსტეთ, ან რაშიც ასახელეთ, ასევე ემთხვევა მომხმარებლის სახელებს, დისპლეი სახელებს, და ჰეშტეგებს.", @@ -461,6 +468,7 @@ "status.embed": "ჩართვა", "status.favourite": "ფავორიტი", "status.filtered": "ფილტრირებული", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "მეტის ჩატვირთვა", @@ -484,6 +492,7 @@ "status.report": "დაარეპორტე @{name}", "status.sensitive_warning": "მგრძნობიარე კონტენტი", "status.share": "გაზიარება", + "status.show_filter_reason": "Show anyway", "status.show_less": "აჩვენე ნაკლები", "status.show_less_all": "აჩვენე ნაკლები ყველაზე", "status.show_more": "აჩვენე მეტი", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index b19bb8e49..57e6bf0d1 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Imenyafen", "navigation_bar.public_timeline": "Tasuddemt tazayezt tamatut", "navigation_bar.security": "Taɣellist", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} yesmenyef tasuffeɣt-ik·im", "notification.follow": "{name} yeṭṭafaṛ-ik", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Sfeḍ tilɣa", "notifications.clear_confirmation": "Tebɣiḍ s tidet ad tekkseḍ akk tilɣa-inek·em i lebda?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Tilɣa n tnarit", "notifications.column_settings.favourite": "Ismenyifen:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Nadi", "search_popout.search_format": "Anadi yenneflin", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Seddu", "status.favourite": "Rnu ɣer yismenyifen", "status.filtered": "Yettwasizdeg", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Sali ugar", @@ -484,6 +492,7 @@ "status.report": "Cetki ɣef @{name}", "status.sensitive_warning": "Agbur amḥulfu", "status.share": "Bḍu", + "status.show_filter_reason": "Show anyway", "status.show_less": "Ssken-d drus", "status.show_less_all": "Semẓi akk tisuffγin", "status.show_more": "Ssken-d ugar", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index 1364311ac..c5459baf3 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Басымдықтар", "navigation_bar.public_timeline": "Жаһандық желі", "navigation_bar.security": "Қауіпсіздік", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} жазбаңызды таңдаулыға қосты", "notification.follow": "{name} сізге жазылды", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Ескертпелерді тазарт", "notifications.clear_confirmation": "Шынымен барлық ескертпелерді өшіресіз бе?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Үстел ескертпелері", "notifications.column_settings.favourite": "Таңдаулылар:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Іздеу", "search_popout.search_format": "Кеңейтілген іздеу форматы", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, bоosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Embеd", "status.favourite": "Таңдаулы", "status.filtered": "Фильтрленген", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Тағы әкел", @@ -484,6 +492,7 @@ "status.report": "Шағым @{name}", "status.sensitive_warning": "Нәзік контент", "status.share": "Бөлісу", + "status.show_filter_reason": "Show anyway", "status.show_less": "Аздап көрсет", "status.show_less_all": "Бәрін аздап көрсет", "status.show_more": "Толығырақ", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index 630431d39..3e0649ba1 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Search", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", @@ -484,6 +492,7 @@ "status.report": "Report @{name}", "status.sensitive_warning": "Sensitive content", "status.share": "Share", + "status.show_filter_reason": "Show anyway", "status.show_less": "Show less", "status.show_less_all": "Show less for all", "status.show_more": "Show more", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 34fabbacf..6f709752a 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "사용자 설정", "navigation_bar.public_timeline": "연합 타임라인", "navigation_bar.security": "보안", + "notification.admin.report": "{name} 님이 {target}를 신고했습니다", "notification.admin.sign_up": "{name} 님이 가입했습니다", "notification.favourite": "{name} 님이 당신의 게시물을 마음에 들어합니다", "notification.follow": "{name} 님이 나를 팔로우 했습니다", @@ -326,6 +327,7 @@ "notification.update": "{name} 님이 게시물을 수정했습니다", "notifications.clear": "알림 지우기", "notifications.clear_confirmation": "정말로 알림을 삭제하시겠습니까?", + "notifications.column_settings.admin.report": "새 신고:", "notifications.column_settings.admin.sign_up": "새로운 가입:", "notifications.column_settings.alert": "데스크탑 알림", "notifications.column_settings.favourite": "좋아요:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "신고해주셔서 감사합니다, 중재자분들이 확인할 예정입니다.", "report.unfollow": "@{name}을 팔로우 해제", "report.unfollow_explanation": "당신을 이 계정을 팔로우 하고 있습니다. 홈 피드에서 게시물을 보지 않으려면, 팔로우를 해제하세요.", + "report_notification.attached_statuses": "{count}개의 게시물 첨부됨", + "report_notification.categories.other": "기타", + "report_notification.categories.spam": "스팸", + "report_notification.categories.violation": "규칙 위반", + "report_notification.open": "신고 열기", "search.placeholder": "검색", "search_popout.search_format": "고급 검색 방법", "search_popout.tips.full_text": "단순한 텍스트 검색은 당신이 작성했거나, 관심글로 지정했거나, 부스트했거나, 멘션을 받은 게시글, 그리고 사용자명, 표시되는 이름, 해시태그를 반환합니다.", @@ -461,6 +468,7 @@ "status.embed": "공유하기", "status.favourite": "좋아요", "status.filtered": "필터로 걸러짐", + "status.hide": "Hide toot", "status.history.created": "{name} 님이 {date}에 생성함", "status.history.edited": "{name} 님이 {date}에 수정함", "status.load_more": "더 보기", @@ -484,6 +492,7 @@ "status.report": "신고", "status.sensitive_warning": "민감한 미디어", "status.share": "공유", + "status.show_filter_reason": "Show anyway", "status.show_less": "숨기기", "status.show_less_all": "모두 접기", "status.show_more": "더 보기", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index a38f18fa3..80a9fcf0a 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Sazkarî", "navigation_bar.public_timeline": "Demnameyê federalîkirî", "navigation_bar.security": "Ewlehî", + "notification.admin.report": "{name} hate ragihandin {target}", "notification.admin.sign_up": "{name} tomar bû", "notification.favourite": "{name} şandiya te hez kir", "notification.follow": "{name} te şopand", @@ -326,6 +327,7 @@ "notification.update": "{name} şandiyek serrast kir", "notifications.clear": "Agahdariyan pak bike", "notifications.clear_confirmation": "Bi rastî tu dixwazî bi awayekî dawî hemû agahdariyên xwe pak bikî?", + "notifications.column_settings.admin.report": "Ragihandinên nû:", "notifications.column_settings.admin.sign_up": "Tomarkirinên nû:", "notifications.column_settings.alert": "Agahdariyên sermaseyê", "notifications.column_settings.favourite": "Bijarte:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Spas ji bo ragihandina te, em ê binirxînin.", "report.unfollow": "@{name} neşopîne", "report.unfollow_explanation": "Tê vê ajimêrê dişopînî. Ji bo ku êdî şandiyên wan di rojeva xwe de nebînî, wan neşopîne.", + "report_notification.attached_statuses": "{count, plural,one {{count} şandî} other {{count} şandî }} pêvekirî", + "report_notification.categories.other": "Ên din", + "report_notification.categories.spam": "Nexwestî (Spam)", + "report_notification.categories.violation": "Binpêkirina rêzîkê", + "report_notification.open": "Ragihandinê veke", "search.placeholder": "Bigere", "search_popout.search_format": "Dirûva lêgerîna pêşketî", "search_popout.tips.full_text": "Nivîsên hêsan, şandiyên ku te nivîsandiye, bijare kiriye, bilind kiriye an jî yên behsa te kirine û her wiha navê bikarhêneran, navên xûya dike û hashtagan vedigerîne.", @@ -461,6 +468,7 @@ "status.embed": "Hedimandî", "status.favourite": "Bijarte", "status.filtered": "Parzûnkirî", + "status.hide": "Hide toot", "status.history.created": "{name} {date} afirand", "status.history.edited": "{name} {date} serrast kir", "status.load_more": "Bêtir bar bike", @@ -484,6 +492,7 @@ "status.report": "{name} gilî bike", "status.sensitive_warning": "Naveroka hestiyarî", "status.share": "Parve bike", + "status.show_filter_reason": "Show anyway", "status.show_less": "Kêmtir nîşan bide", "status.show_less_all": "Ji bo hemîyan kêmtir nîşan bide", "status.show_more": "Hêj zehftir nîşan bide", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index 6a8c9933a..8ffa521b5 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Erviransow", "navigation_bar.public_timeline": "Amserlin geffrysys", "navigation_bar.security": "Diogeledh", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} a wrug merkya agas post vel drudh", "notification.follow": "{name} a wrug agas holya", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Dilea gwarnyansow", "notifications.clear_confirmation": "Owgh hwi sur a vynnes dilea agas gwarnyansow oll yn fast?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Gwarnyansow pennskrin", "notifications.column_settings.favourite": "Re drudh:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Hwilas", "search_popout.search_format": "Furvas hwilas avonsys", "search_popout.tips.full_text": "Tekst sempel a wra daskor postow a wrussowgh aga skrifa, merkya vel drudh, po bos menegys ynna, keffrys ha henwyn devnydhyoryon ha displetyans, ha bòlnosow a dhesedh.", @@ -461,6 +468,7 @@ "status.embed": "Staga", "status.favourite": "Merkya vel drudh", "status.filtered": "Sidhlys", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Karga moy", @@ -484,6 +492,7 @@ "status.report": "Reportya @{name}", "status.sensitive_warning": "Dalgh tender", "status.share": "Kevrenna", + "status.show_filter_reason": "Show anyway", "status.show_less": "Diskwedhes le", "status.show_less_all": "Diskwedhes le rag puptra", "status.show_more": "Diskwedhes moy", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index afff3a79c..1a69e7e1d 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Search", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", @@ -484,6 +492,7 @@ "status.report": "Report @{name}", "status.sensitive_warning": "Sensitive content", "status.share": "Share", + "status.show_filter_reason": "Show anyway", "status.show_less": "Show less", "status.show_less_all": "Show less for all", "status.show_more": "Show more", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index b889948cf..6c848de79 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Iestatījumi", "navigation_bar.public_timeline": "Apvienotā ziņu lenta", "navigation_bar.security": "Drošība", + "notification.admin.report": "{name} ziņoja par {target}", "notification.admin.sign_up": "{name} ir pierakstījies", "notification.favourite": "{name} izcēla tavu ziņu", "notification.follow": "{name} uzsāka tev sekot", @@ -326,6 +327,7 @@ "notification.update": "{name} ir rediģējis rakstu", "notifications.clear": "Notīrīt paziņojumus", "notifications.clear_confirmation": "Vai tiešām vēlies neatgriezeniski notīrīt visus savus paziņojumus?", + "notifications.column_settings.admin.report": "Jauni ziņojumi:", "notifications.column_settings.admin.sign_up": "Jaunas pierakstīšanās:", "notifications.column_settings.alert": "Darbvirsmas paziņojumi", "notifications.column_settings.favourite": "Izlases:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Paldies, ka ziņoji, mēs to izskatīsim.", "report.unfollow": "Pārtraukt sekošanu @{name}", "report.unfollow_explanation": "Tu seko šim kontam. Lai vairs neredzētu viņu ziņas savā ziņu plūsmā, pārtrauc viņiem sekot.", + "report_notification.attached_statuses": "Pievienoti {count, plural,one {{count} sūtījums} other {{count} sūtījumi}}", + "report_notification.categories.other": "Cita", + "report_notification.categories.spam": "Spams", + "report_notification.categories.violation": "Noteikumu pārkāpums", + "report_notification.open": "Atvērt ziņojumu", "search.placeholder": "Meklēšana", "search_popout.search_format": "Paplašināts meklēšanas formāts", "search_popout.tips.full_text": "Vienkāršs teksts atgriež ziņas, kuras esi rakstījis, iecienījis, paaugstinājis vai pieminējis, kā arī atbilstošie lietotājvārdi, parādāmie vārdi un tēmturi.", @@ -461,6 +468,7 @@ "status.embed": "Iestrādāt", "status.favourite": "Iecienītā", "status.filtered": "Filtrēts", + "status.hide": "Hide toot", "status.history.created": "{name} izveidots {date}", "status.history.edited": "{name} rediģēts {date}", "status.load_more": "Ielādēt vairāk", @@ -484,6 +492,7 @@ "status.report": "Ziņot par @{name}", "status.sensitive_warning": "Sensitīvs saturs", "status.share": "Kopīgot", + "status.show_filter_reason": "Show anyway", "status.show_less": "Rādīt mazāk", "status.show_less_all": "Rādīt mazāk visiem", "status.show_more": "Rādīt vairāk", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index 1b868de07..36126fc25 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Федеративен времеплов", "navigation_bar.security": "Безбедност", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Барај", "search_popout.search_format": "Напреден формат за барање", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", @@ -484,6 +492,7 @@ "status.report": "Report @{name}", "status.sensitive_warning": "Sensitive content", "status.share": "Share", + "status.show_filter_reason": "Show anyway", "status.show_less": "Show less", "status.show_less_all": "Show less for all", "status.show_more": "Show more", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index 674f74dd6..4307259c0 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "ക്രമീകരണങ്ങൾ", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "സുരക്ഷ", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} നിങ്ങളെ പിന്തുടർന്നു", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "അറിയിപ്പ് മായ്ക്കുക", "notifications.clear_confirmation": "നിങ്ങളുടെ എല്ലാ അറിയിപ്പുകളും ശാശ്വതമായി മായ്‌ക്കണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "ഡെസ്ക്ടോപ്പ് അറിയിപ്പുകൾ", "notifications.column_settings.favourite": "പ്രിയപ്പെട്ടവ:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "തിരയുക", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -461,6 +468,7 @@ "status.embed": "ഉൾച്ചേർക്കുക", "status.favourite": "പ്രിയപ്പെട്ടത്", "status.filtered": "ഫിൽട്ടർ ചെയ്‌തു", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "കൂടുതൽ ലോഡു ചെയ്യുക", @@ -484,6 +492,7 @@ "status.report": "@{name}--നെ റിപ്പോർട്ട് ചെയ്യുക", "status.sensitive_warning": "Sensitive content", "status.share": "പങ്കിടുക", + "status.show_filter_reason": "Show anyway", "status.show_less": "കുറച്ച് കാണിക്കുക", "status.show_less_all": "Show less for all", "status.show_more": "കൂടുതകൽ കാണിക്കുക", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index d9dafa222..d78e0384e 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Search", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", @@ -484,6 +492,7 @@ "status.report": "Report @{name}", "status.sensitive_warning": "Sensitive content", "status.share": "Share", + "status.show_filter_reason": "Show anyway", "status.show_less": "Show less", "status.show_less_all": "Show less for all", "status.show_more": "Show more", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index c3ca25965..c1f20ec4f 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Keutamaan", "navigation_bar.public_timeline": "Garis masa bersekutu", "navigation_bar.security": "Keselamatan", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} menggemari hantaran anda", "notification.follow": "{name} mengikuti anda", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Buang pemberitahuan", "notifications.clear_confirmation": "Adakah anda pasti anda ingin membuang semua pemberitahuan anda secara kekal?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Pemberitahuan atas meja", "notifications.column_settings.favourite": "Kegemaran:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Cari", "search_popout.search_format": "Format gelintar lanjutan", "search_popout.tips.full_text": "Teks ringkas mengembalikan hantaran yang anda telah tulis, menggemari, menggalak, atau telah disebutkan, dan juga nama pengguna, nama paparan, dan tanda pagar yang dipadankan.", @@ -461,6 +468,7 @@ "status.embed": "Benaman", "status.favourite": "Kegemaran", "status.filtered": "Ditapis", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Muatkan lagi", @@ -484,6 +492,7 @@ "status.report": "Laporkan @{name}", "status.sensitive_warning": "Kandungan sensitif", "status.share": "Kongsi", + "status.show_filter_reason": "Show anyway", "status.show_less": "Tunjukkan kurang", "status.show_less_all": "Tunjukkan kurang untuk semua", "status.show_more": "Tunjukkan lebih", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 76a631b55..40053f4cd 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -23,7 +23,7 @@ "account.follows.empty": "Deze gebruiker volgt nog niemand.", "account.follows_you": "Volgt jou", "account.hide_reblogs": "Boosts van @{name} verbergen", - "account.joined": "Geregistreerd in {date}", + "account.joined": "Geregistreerd op {date}", "account.link_verified_on": "Eigendom van deze link is gecontroleerd op {date}", "account.locked_info": "De privacystatus van dit account is op besloten gezet. De eigenaar bepaalt handmatig wie diegene kan volgen.", "account.media": "Media", @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Instellingen", "navigation_bar.public_timeline": "Globale tijdlijn", "navigation_bar.security": "Beveiliging", + "notification.admin.report": "{name} heeft {target} geapporteerd", "notification.admin.sign_up": "{name} heeft zich aangemeld", "notification.favourite": "{name} voegde jouw bericht als favoriet toe", "notification.follow": "{name} volgt jou nu", @@ -326,6 +327,7 @@ "notification.update": "{name} heeft een bericht bewerkt", "notifications.clear": "Meldingen verwijderen", "notifications.clear_confirmation": "Weet je het zeker dat je al jouw meldingen wilt verwijderen?", + "notifications.column_settings.admin.report": "Nieuwe rapportages:", "notifications.column_settings.admin.sign_up": "Nieuwe aanmeldingen:", "notifications.column_settings.alert": "Desktopmeldingen", "notifications.column_settings.favourite": "Favorieten:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Dank je voor het rapporteren. Wij gaan er naar kijken.", "report.unfollow": "@{name} ontvolgen", "report.unfollow_explanation": "Je volgt dit account. Om diens berichten niet meer op jouw starttijdlijn te zien, kun je diegene ontvolgen.", + "report_notification.attached_statuses": "{count, plural, one {{count} bericht} other {{count} berichten}} toegevoegd", + "report_notification.categories.other": "Overig", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Overtreden regel(s)", + "report_notification.open": "Rapportage openen", "search.placeholder": "Zoeken", "search_popout.search_format": "Geavanceerd zoeken", "search_popout.tips.full_text": "Gebruik gewone tekst om te zoeken in jouw berichten, gebooste berichten, favorieten en in berichten waarin je bent vermeldt, en tevens naar gebruikersnamen, weergavenamen en hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Insluiten", "status.favourite": "Favoriet", "status.filtered": "Gefilterd", + "status.hide": "Hide toot", "status.history.created": "{name} plaatste dit {date}", "status.history.edited": "{name} bewerkte dit {date}", "status.load_more": "Meer laden", @@ -484,6 +492,7 @@ "status.report": "@{name} rapporteren", "status.sensitive_warning": "Gevoelige inhoud", "status.share": "Delen", + "status.show_filter_reason": "Show anyway", "status.show_less": "Minder tonen", "status.show_less_all": "Alles minder tonen", "status.show_more": "Meer tonen", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index cd802bed0..87d3579e9 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Innstillingar", "navigation_bar.public_timeline": "Føderert tidsline", "navigation_bar.security": "Tryggleik", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} merkte statusen din som favoritt", "notification.follow": "{name} fylgde deg", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Tøm varsel", "notifications.clear_confirmation": "Er du sikker på at du vil fjerna alle varsla dine for alltid?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Skrivebordsvarsel", "notifications.column_settings.favourite": "Favorittar:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Søk", "search_popout.search_format": "Avansert søkeformat", "search_popout.tips.full_text": "Enkel tekst returnerer statusar du har skrive, likt, framheva eller vorte nemnd i, i tillegg til samsvarande brukarnamn, visningsnamn og emneknaggar.", @@ -461,6 +468,7 @@ "status.embed": "Bygg inn", "status.favourite": "Favoritt", "status.filtered": "Filtrert", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Last inn meir", @@ -484,6 +492,7 @@ "status.report": "Rapporter @{name}", "status.sensitive_warning": "Sensitivt innhald", "status.share": "Del", + "status.show_filter_reason": "Show anyway", "status.show_less": "Vis mindre", "status.show_less_all": "Vis mindre for alle", "status.show_more": "Vis meir", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index c188a868b..b4da321eb 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Innstillinger", "navigation_bar.public_timeline": "Felles tidslinje", "navigation_bar.security": "Sikkerhet", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} likte din status", "notification.follow": "{name} fulgte deg", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Fjern varsler", "notifications.clear_confirmation": "Er du sikker på at du vil fjerne alle dine varsler permanent?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Skrivebordsvarslinger", "notifications.column_settings.favourite": "Likt:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Søk", "search_popout.search_format": "Avansert søkeformat", "search_popout.tips.full_text": "Enkel tekst gir resultater for statuser du har skrevet, likt, fremhevet, eller har blitt nevnt i, i tillegg til samsvarende brukernavn, visningsnavn og emneknagger.", @@ -461,6 +468,7 @@ "status.embed": "Bygge inn", "status.favourite": "Lik", "status.filtered": "Filtrert", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Last mer", @@ -484,6 +492,7 @@ "status.report": "Rapporter @{name}", "status.sensitive_warning": "Følsomt innhold", "status.share": "Del", + "status.show_filter_reason": "Show anyway", "status.show_less": "Vis mindre", "status.show_less_all": "Vis mindre for alle", "status.show_more": "Vis mer", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 3a57a5c3f..982a3fa16 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Preferéncias", "navigation_bar.public_timeline": "Flux public global", "navigation_bar.security": "Seguretat", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} se marquèt", "notification.favourite": "{name} a ajustat a sos favorits", "notification.follow": "{name} vos sèc", @@ -326,6 +327,7 @@ "notification.update": "{name} modiquè sa publicacion", "notifications.clear": "Escafar", "notifications.clear_confirmation": "Volètz vertadièrament escafar totas vòstras las notificacions ?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Notificacions localas", "notifications.column_settings.favourite": "Favorits :", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Quitar de sègre {name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Recercar", "search_popout.search_format": "Format recèrca avançada", "search_popout.tips.full_text": "Un tèxte simple que tòrna los estatuts qu’avètz escriches, mes en favorits, partejats, o ont sètz mencionat, e tanben los noms d’utilizaires, escais-noms e etiquetas que correspondonas.", @@ -461,6 +468,7 @@ "status.embed": "Embarcar", "status.favourite": "Apondre als favorits", "status.filtered": "Filtrat", + "status.hide": "Hide toot", "status.history.created": "{name} o creèt lo {date}", "status.history.edited": "{name} o modifiquèt lo {date}", "status.load_more": "Cargar mai", @@ -484,6 +492,7 @@ "status.report": "Senhalar @{name}", "status.sensitive_warning": "Contengut sensible", "status.share": "Partejar", + "status.show_filter_reason": "Show anyway", "status.show_less": "Tornar plegar", "status.show_less_all": "Los tornar plegar totes", "status.show_more": "Desplegar", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index 658a3318e..13cb39de8 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Search", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", @@ -484,6 +492,7 @@ "status.report": "Report @{name}", "status.sensitive_warning": "Sensitive content", "status.share": "Share", + "status.show_filter_reason": "Show anyway", "status.show_less": "Show less", "status.show_less_all": "Show less for all", "status.show_more": "Show more", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index afaa9358f..9a72dba8f 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Preferencje", "navigation_bar.public_timeline": "Globalna oś czasu", "navigation_bar.security": "Bezpieczeństwo", + "notification.admin.report": "{name} zgłosił {target}", "notification.admin.sign_up": "Użytkownik {name} zarejestrował się", "notification.favourite": "{name} dodał(a) Twój wpis do ulubionych", "notification.follow": "{name} zaczął(-ęła) Cię śledzić", @@ -326,6 +327,7 @@ "notification.update": "{name} edytował post", "notifications.clear": "Wyczyść powiadomienia", "notifications.clear_confirmation": "Czy na pewno chcesz bezpowrotnie usunąć wszystkie powiadomienia?", + "notifications.column_settings.admin.report": "Nowe raporty:", "notifications.column_settings.admin.sign_up": "Nowe rejestracje:", "notifications.column_settings.alert": "Powiadomienia na pulpicie", "notifications.column_settings.favourite": "Dodanie do ulubionych:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Dziękujemy za zgłoszenie. Przyjrzymy się tej sprawie.", "report.unfollow": "Przestań śledzić @{name}", "report.unfollow_explanation": "Śledzisz to konto. Jeśli nie chcesz już widzieć postów z tego konta w swojej głównej osi czasu, przestań je śledzić.", + "report_notification.attached_statuses": "{count, plural, one {{count} wpis} few {{count} wpisy} many {{counter} wpisów} other {{counter} wpisów}}", + "report_notification.categories.other": "Inne", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Naruszenie zasad", + "report_notification.open": "Otwórz raport", "search.placeholder": "Szukaj", "search_popout.search_format": "Zaawansowane wyszukiwanie", "search_popout.tips.full_text": "Pozwala na wyszukiwanie wpisów które napisałeś(-aś), dodałeś(-aś) do ulubionych lub podbiłeś(-aś), w których o Tobie wspomniano, oraz pasujące nazwy użytkowników, pełne nazwy i hashtagi.", @@ -461,6 +468,7 @@ "status.embed": "Osadź", "status.favourite": "Dodaj do ulubionych", "status.filtered": "Filtrowany(-a)", + "status.hide": "Hide toot", "status.history.created": "{name} utworzył(a) {date}", "status.history.edited": "{name} edytował(a) {date}", "status.load_more": "Załaduj więcej", @@ -484,6 +492,7 @@ "status.report": "Zgłoś @{name}", "status.sensitive_warning": "Wrażliwa zawartość", "status.share": "Udostępnij", + "status.show_filter_reason": "Show anyway", "status.show_less": "Zwiń", "status.show_less_all": "Zwiń wszystkie", "status.show_more": "Rozwiń", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index bdf973e04..bb9800786 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Preferências", "navigation_bar.public_timeline": "Linha global", "navigation_bar.security": "Segurança", + "notification.admin.report": "{name} denunciou {target}", "notification.admin.sign_up": "{name} se inscreveu", "notification.favourite": "{name} favoritou teu toot", "notification.follow": "{name} te seguiu", @@ -326,6 +327,7 @@ "notification.update": "{name} editou uma publicação", "notifications.clear": "Limpar notificações", "notifications.clear_confirmation": "Você tem certeza de que deseja limpar todas as suas notificações?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "Novas inscrições:", "notifications.column_settings.alert": "Notificações no computador", "notifications.column_settings.favourite": "Favoritos:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Obrigado por reportar. Vamos analisar.", "report.unfollow": "Deixar de seguir @{name}", "report.unfollow_explanation": "Você está seguindo esta conta. Para não mais ver os posts dele em sua página inicial, deixe de segui-lo.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Outro", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Violação de regra", + "report_notification.open": "Abrir relatório", "search.placeholder": "Pesquisar", "search_popout.search_format": "Formato de pesquisa avançada", "search_popout.tips.full_text": "Texto simples retorna toots que você escreveu, favoritou, deu boost, ou em que foi mencionado, assim como nomes de usuário e de exibição, e hashtags correspondentes.", @@ -461,6 +468,7 @@ "status.embed": "Incorporar", "status.favourite": "Favoritar", "status.filtered": "Filtrado", + "status.hide": "Hide toot", "status.history.created": "{name} criou {date}", "status.history.edited": "{name} editou {date}", "status.load_more": "Ver mais", @@ -484,6 +492,7 @@ "status.report": "Denunciar @{name}", "status.sensitive_warning": "Mídia sensível", "status.share": "Compartilhar", + "status.show_filter_reason": "Show anyway", "status.show_less": "Mostrar menos", "status.show_less_all": "Mostrar menos em tudo", "status.show_more": "Mostrar mais", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 90285a70f..3d48e84ad 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Preferências", "navigation_bar.public_timeline": "Cronologia federada", "navigation_bar.security": "Segurança", + "notification.admin.report": "{name} denunciou {target}", "notification.admin.sign_up": "{name} inscreveu-se", "notification.favourite": "{name} adicionou a tua publicação aos favoritos", "notification.follow": "{name} começou a seguir-te", @@ -326,6 +327,7 @@ "notification.update": "{name} editou uma publicação", "notifications.clear": "Limpar notificações", "notifications.clear_confirmation": "Queres mesmo limpar todas as notificações?", + "notifications.column_settings.admin.report": "Novas denúncias:", "notifications.column_settings.admin.sign_up": "Novas inscrições:", "notifications.column_settings.alert": "Notificações no ambiente de trabalho", "notifications.column_settings.favourite": "Favoritos:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Obrigado por reportar, vamos analisar.", "report.unfollow": "Deixar de seguir @{name}", "report.unfollow_explanation": "Está a seguir esta conta. Para não ver mais as publicações desta conta na sua página inicial, deixe de segui-la.", + "report_notification.attached_statuses": "{count, plural,one {{count} publicação} other {{count} publicações}} em anexo", + "report_notification.categories.other": "Outro", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Violação de regra", + "report_notification.open": "Abrir denúncia", "search.placeholder": "Pesquisar", "search_popout.search_format": "Formato avançado de pesquisa", "search_popout.tips.full_text": "Texto simples devolve publicações que escreveu, marcou como favorita, partilhou ou em que foi mencionado, tal como nomes de utilizador, alcunhas e hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Incorporar", "status.favourite": "Adicionar aos favoritos", "status.filtered": "Filtrada", + "status.hide": "Hide toot", "status.history.created": "{name} criado em {date}", "status.history.edited": "{name} editado em {date}", "status.load_more": "Carregar mais", @@ -484,6 +492,7 @@ "status.report": "Denunciar @{name}", "status.sensitive_warning": "Conteúdo sensível", "status.share": "Partilhar", + "status.show_filter_reason": "Show anyway", "status.show_less": "Mostrar menos", "status.show_less_all": "Mostrar menos para todas", "status.show_more": "Mostrar mais", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 34328e65b..0c2ce0b2d 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Preferințe", "navigation_bar.public_timeline": "Cronologie globală", "navigation_bar.security": "Securitate", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} a adăugat postarea ta la favorite", "notification.follow": "{name} s-a abonat la tine", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Șterge notificările", "notifications.clear_confirmation": "Ești sigur că vrei să ștergi permanent toate notificările?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Notificări pe desktop", "notifications.column_settings.favourite": "Favorite:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Caută", "search_popout.search_format": "Formate pentru căutare avansată", "search_popout.tips.full_text": "Textele simple returnează postări pe care le-ai scris, favorizat, impulsionat, sau în care sunt menționate, deasemenea și utilizatorii sau hashtag-urile care se potrivesc.", @@ -461,6 +468,7 @@ "status.embed": "Înglobează", "status.favourite": "Favorite", "status.filtered": "Sortate", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Încarcă mai multe", @@ -484,6 +492,7 @@ "status.report": "Raportează pe @{name}", "status.sensitive_warning": "Conținut sensibil", "status.share": "Distribuie", + "status.show_filter_reason": "Show anyway", "status.show_less": "Arată mai puțin", "status.show_less_all": "Arată mai puțin pentru toți", "status.show_more": "Arată mai mult", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index d6927e0e4..62b68e5bf 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Настройки", "navigation_bar.public_timeline": "Глобальная лента", "navigation_bar.security": "Безопасность", + "notification.admin.report": "{name} сообщил о {target}", "notification.admin.sign_up": "{name} зарегистрирован", "notification.favourite": "{name} добавил(а) ваш пост в избранное", "notification.follow": "{name} подписался (-лась) на вас", @@ -326,6 +327,7 @@ "notification.update": "{name} изменил(а) пост", "notifications.clear": "Очистить уведомления", "notifications.clear_confirmation": "Вы уверены, что хотите очистить все уведомления?", + "notifications.column_settings.admin.report": "Новые жалобы:", "notifications.column_settings.admin.sign_up": "Новые регистрации:", "notifications.column_settings.alert": "Уведомления на рабочем столе", "notifications.column_settings.favourite": "Ваш пост добавили в «избранное»:", @@ -405,7 +407,7 @@ "report.category.title_status": "этим постом", "report.close": "Готово", "report.comment.title": "Есть ли что-нибудь ещё, что нам стоит знать?", - "report.forward": "Переслать на {target}", + "report.forward": "Переслать в {target}", "report.forward_hint": "Эта учётная запись расположена на другом узле. Отправить туда анонимную копию вашей жалобы?", "report.mute": "Игнорировать", "report.mute_explanation": "Вы не будете видеть их посты. Они по-прежнему могут подписываться на вас и видеть ваши посты, но не будут знать, что они в списке игнорируемых.", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Спасибо за обращение, мы его рассмотрим.", "report.unfollow": "Отписаться от @{name}", "report.unfollow_explanation": "Вы подписаны на этого пользователя. Чтобы не видеть его/её посты в своей домашней ленте, отпишитесь от него/неё.", + "report_notification.attached_statuses": "{count, plural, one {{count} сообщение} few {{count} сообщения} many {{count} сообщений} other {{count} сообщений}} вложено", + "report_notification.categories.other": "Прочее", + "report_notification.categories.spam": "Спам", + "report_notification.categories.violation": "Нарушение правил", + "report_notification.open": "Подать жалобу", "search.placeholder": "Поиск", "search_popout.search_format": "Продвинутый формат поиска", "search_popout.tips.full_text": "Поиск по простому тексту отобразит посты, которые вы написали, добавили в избранное, продвинули или в которых были упомянуты, а также подходящие имена пользователей и хэштеги.", @@ -461,6 +468,7 @@ "status.embed": "Встроить на свой сайт", "status.favourite": "В избранное", "status.filtered": "Отфильтровано", + "status.hide": "Hide toot", "status.history.created": "{name} создал {date}", "status.history.edited": "{name} отредактировал {date}", "status.load_more": "Загрузить остальное", @@ -484,6 +492,7 @@ "status.report": "Пожаловаться", "status.sensitive_warning": "Содержимое «деликатного характера»", "status.share": "Поделиться", + "status.show_filter_reason": "Show anyway", "status.show_less": "Свернуть", "status.show_less_all": "Свернуть все спойлеры в ветке", "status.show_more": "Развернуть", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index f0861f9bc..0bcca64ea 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Search", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", @@ -484,6 +492,7 @@ "status.report": "Report @{name}", "status.sensitive_warning": "Sensitive content", "status.share": "Share", + "status.show_filter_reason": "Show anyway", "status.show_less": "Show less", "status.show_less_all": "Show less for all", "status.show_more": "Show more", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 202caa5ca..957b114c0 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Preferèntzias", "navigation_bar.public_timeline": "Lìnia de tempus federada", "navigation_bar.security": "Seguresa", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} at marcadu sa publicatzione tua comente a preferida", "notification.follow": "{name} ti sighit", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Lìmpia notìficas", "notifications.clear_confirmation": "Seguru chi boles isboidare in manera permanente totu is notìficas tuas?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Notìficas de iscrivania", "notifications.column_settings.favourite": "Preferidos:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Chirca", "search_popout.search_format": "Formadu de chirca avantzada", "search_popout.tips.full_text": "Testu sèmplitze pro agatare publicatziones chi as iscritu, marcadu comente a preferidas, cumpartzidu o chi t'ant mentovadu, e fintzas nòmines, nòmines de utente e etichetas.", @@ -461,6 +468,7 @@ "status.embed": "Afissa", "status.favourite": "Preferidos", "status.filtered": "Filtradu", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Càrriga·nde àteros", @@ -484,6 +492,7 @@ "status.report": "Sinnala @{name}", "status.sensitive_warning": "Cuntenutu sensìbile", "status.share": "Cumpartzi", + "status.show_filter_reason": "Show anyway", "status.show_less": "Ammustra·nde prus pagu", "status.show_less_all": "Ammustra·nde prus pagu pro totus", "status.show_more": "Ammustra·nde prus", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 4d9e0d3b5..8c7d47d53 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -7,155 +7,155 @@ "account.block_domain": "{domain} වසම අවහිර කරන්න", "account.blocked": "අවහිර කර ඇත", "account.browse_more_on_origin_server": "මුල් පැතිකඩෙහි තවත් පිරික්සන්න", - "account.cancel_follow_request": "Cancel follow request", + "account.cancel_follow_request": "ඉල්ලීම අනුගමනය කිරීම අවලංගු කරන්න", "account.direct": "@{name} සෘජු පණිවිඩය", "account.disable_notifications": "@{name} පළ කරන විට මට දැනුම් දීම නවත්වන්න", "account.domain_blocked": "වසම අවහිර කර ඇත", "account.edit_profile": "පැතිකඩ සංස්කරණය", "account.enable_notifications": "@{name} පළ කරන විට මට දැනුම් දෙන්න", "account.endorse": "පැතිකඩෙහි විශේෂාංගය", - "account.follow": "Follow", - "account.followers": "Followers", - "account.followers.empty": "No one follows this user yet.", - "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", - "account.following": "Following", - "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", - "account.follows.empty": "This user doesn't follow anyone yet.", - "account.follows_you": "Follows you", - "account.hide_reblogs": "Hide boosts from @{name}", + "account.follow": "අනුගමනය කරන්න", + "account.followers": "අනුගාමිකයින්", + "account.followers.empty": "කිසිවෙකු තවමත් මෙම පරිශීලකයා අනුගමනය නොකරයි.", + "account.followers_counter": "{count, plural, one {{counter} අනුගාමිකයෙක්} other {{counter} අනුගාමිකයින්}}", + "account.following": "අනුගමනය", + "account.following_counter": "{count, plural, one {{counter} අනුගමනය කරන්න} other {{counter} අනුගමනය කරන්න}}", + "account.follows.empty": "මෙම පරිශීලකයා තවමත් කිසිවෙකු අනුගමනය නොකරයි.", + "account.follows_you": "ඔබව අනුගමනය කරයි", + "account.hide_reblogs": "@{name}සිට බූස්ට් සඟවන්න", "account.joined": "{date} එක් වී ඇත", - "account.link_verified_on": "මෙම සබැඳියේ හිමිකාරිත්වය {date} දින පරීක්ෂා කරන ලදි", - "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", + "account.link_verified_on": "මෙම සබැඳියේ හිමිකාරිත්වය {date} දින පරීක්ෂා කරන ලදී", + "account.locked_info": "මෙම ගිණුමේ රහස්‍යතා තත්ත්වය අගුලු දමා ඇත. හිමිකරු ඔවුන් අනුගමනය කළ හැක්කේ කාටදැයි හස්තීයව සමාලෝචනය කරයි.", "account.media": "මාධ්‍යය", "account.mention": "@{name} සැඳහුම", - "account.moved_to": "{name} has moved to:", + "account.moved_to": "{name} වෙත මාරු වී ඇත:", "account.mute": "@{name} නිහඬ කරන්න", - "account.mute_notifications": "Mute notifications from @{name}", - "account.muted": "Muted", - "account.posts": "Toots", - "account.posts_with_replies": "Toots and replies", + "account.mute_notifications": "@{name}වෙතින් දැනුම්දීම් නිහඬ කරන්න", + "account.muted": "නිහඬ කළා", + "account.posts": "ටූට්ස්", + "account.posts_with_replies": "ටූට්ස් සහ පිළිතුරු", "account.report": "@{name} වාර්තා කරන්න", - "account.requested": "Awaiting approval", + "account.requested": "අනුමැතිය බලාපොරොත්තුවෙන්", "account.share": "@{name} ගේ පැතිකඩ බෙදාගන්න", - "account.show_reblogs": "Show boosts from @{name}", - "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", + "account.show_reblogs": "@{name}සිට බූස්ට් පෙන්වන්න", + "account.statuses_counter": "{count, plural, one {{counter} ටූට්} other {{counter} ටූට්ස්}}", "account.unblock": "@{name} අනවහිර කරන්න", "account.unblock_domain": "{domain} වසම අනවහිර කරන්න", - "account.unblock_short": "Unblock", + "account.unblock_short": "අවහිර කිරීම ඉවත් කරන්න", "account.unendorse": "පැතිකඩෙහි විශේෂාංග නොකරන්න", - "account.unfollow": "Unfollow", - "account.unmute": "Unmute @{name}", - "account.unmute_notifications": "Unmute notifications from @{name}", - "account.unmute_short": "Unmute", + "account.unfollow": "අනුගමනය නොකරන්න", + "account.unmute": "@{name}නිහඬ නොකරන්න", + "account.unmute_notifications": "@{name}වෙතින් දැනුම්දීම් නිහඬ නොකරන්න", + "account.unmute_short": "නිහඬ නොකරන්න", "account_note.placeholder": "සටහන එකතු කිරීමට ක්ලික් කරන්න", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", + "admin.dashboard.daily_retention": "ලියාපදිංචි වීමෙන් පසු දිනකට පරිශීලක රඳවා ගැනීමේ අනුපාතය", + "admin.dashboard.monthly_retention": "ලියාපදිංචි වීමෙන් පසු මාසය අනුව පරිශීලක රඳවා ගැනීමේ අනුපාතය", + "admin.dashboard.retention.average": "සාමාන්යය", + "admin.dashboard.retention.cohort": "ලියාපදිංචි වීමේ මාසය", "admin.dashboard.retention.cohort_size": "නව පරිශීලකයින්", "alert.rate_limited.message": "කරුණාකර {retry_time, time, medium} ට පසු නැවත උත්සාහ කරන්න.", - "alert.rate_limited.title": "Rate limited", - "alert.unexpected.message": "An unexpected error occurred.", + "alert.rate_limited.title": "මිල සීමා සහිතයි", + "alert.unexpected.message": "අනපේක්ෂිත දෝෂයක් ඇතිවුනා.", "alert.unexpected.title": "අපොයි!", "announcement.announcement": "නිවේදනය", - "attachments_list.unprocessed": "(unprocessed)", - "autosuggest_hashtag.per_week": "{count} per week", - "boost_modal.combo": "You can press {combo} to skip this next time", - "bundle_column_error.body": "Something went wrong while loading this component.", + "attachments_list.unprocessed": "(සැකසුම් නොකළ)", + "autosuggest_hashtag.per_week": "සතියකට {count}", + "boost_modal.combo": "ඊළඟ වතාවේ මෙය මඟ හැරීමට ඔබට {combo} එබිය හැක", + "bundle_column_error.body": "මෙම සංරචකය පූරණය කිරීමේදී යම් දෙයක් වැරදී ඇත.", "bundle_column_error.retry": "නැවත උත්සාහ කරන්න", "bundle_column_error.title": "ජාලයේ දෝෂයකි", "bundle_modal_error.close": "වසන්න", - "bundle_modal_error.message": "Something went wrong while loading this component.", + "bundle_modal_error.message": "මෙම සංරචකය පූරණය කිරීමේදී යම් දෙයක් වැරදී ඇත.", "bundle_modal_error.retry": "නැවත උත්සාහ කරන්න", "column.blocks": "අවහිර කළ පරිශීලකයින්", "column.bookmarks": "පොත් යොමු", - "column.community": "Local timeline", - "column.direct": "Direct messages", - "column.directory": "පැතිකඩයන් පිරික්සන්න", + "column.community": "දේශීය කාලරේඛාව", + "column.direct": "සෘජු පණිවිඩ", + "column.directory": "පැතිකඩ පිරික්සන්න", "column.domain_blocks": "අවහිර කළ වසම්", "column.favourites": "ප්‍රියතමයන්", - "column.follow_requests": "Follow requests", + "column.follow_requests": "ඉල්ලීම් අනුගමනය කරන්න", "column.home": "මුල් පිටුව", - "column.lists": "ලැයිස්තු", - "column.mutes": "නිහඬ කළ පරිශීලකයන්", + "column.lists": "ලැයිස්තුව", + "column.mutes": "සමඟ කළ පරිශීලකයන්", "column.notifications": "දැනුම්දීම්", - "column.pins": "Pinned toot", - "column.public": "Federated timeline", + "column.pins": "පින් කළ දත", + "column.public": "ෆෙඩරේටඩ් කාලරේඛාව", "column_back_button.label": "ආපසු", "column_header.hide_settings": "සැකසුම් සඟවන්න", "column_header.moveLeft_settings": "තීරුව වමට ගෙනයන්න", "column_header.moveRight_settings": "තීරුව දකුණට ගෙනයන්න", - "column_header.pin": "Pin", + "column_header.pin": "පින් කරන්න", "column_header.show_settings": "සැකසුම් පෙන්වන්න", - "column_header.unpin": "Unpin", + "column_header.unpin": "ඇමුණුම ඉවත් කරන්න", "column_subheading.settings": "සැකසුම්", "community.column_settings.local_only": "ස්ථානීයව පමණයි", "community.column_settings.media_only": "මාධ්‍ය පමණයි", "community.column_settings.remote_only": "දුරස්ථව පමණයි", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "භාෂාව වෙනස් කරන්න", + "compose.language.search": "භාෂා සොයන්න...", "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 toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", - "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", + "compose_form.encryption_warning": "Mastodon හි පළ කිරීම් අන්තයේ සිට අවසානය දක්වා සංකේතනය කර නොමැත. Mastodon හරහා කිසිදු සංවේදී තොරතුරක් බෙදා නොගන්න.", + "compose_form.hashtag_warning": "මෙම මෙවලම ලැයිස්තුගත කර නොමැති බැවින් කිසිදු හැෂ් ටැගය යටතේ ලැයිස්තුගත නොකෙරේ. හැෂ් ටැග් මගින් සෙවිය හැක්කේ පොදු මෙවලම් පමණි.", + "compose_form.lock_disclaimer": "ඔබගේ ගිණුම {locked}නොවේ. ඔබගේ අනුගාමිකයින්ට පමණක් පළ කිරීම් බැලීමට ඕනෑම කෙනෙකුට ඔබව අනුගමනය කළ හැක.", "compose_form.lock_disclaimer.lock": "අගුළු දමා ඇත", "compose_form.placeholder": "ඔබගේ සිතුවිලි මොනවාද?", "compose_form.poll.add_option": "තේරීමක් එකතු කරන්න", "compose_form.poll.duration": "මත විමසීමේ කාලය", - "compose_form.poll.option_placeholder": "Choice {number}", - "compose_form.poll.remove_option": "මෙම තේරීම ඉවත් කරන්න", - "compose_form.poll.switch_to_multiple": "තේරීම් කිහිපයකට ඉඩ දීම සඳහා මත විමසුම වෙනස් කරන්න", + "compose_form.poll.option_placeholder": "තේරීම {number}", + "compose_form.poll.remove_option": "මෙම ඉවත් කරන්න", + "compose_form.poll.switch_to_multiple": "තේරීම් කිහිපයක් ඉඩ දීම සඳහා මත විමසුම වෙනස් කරන්න", "compose_form.poll.switch_to_single": "තනි තේරීමකට ඉඩ දීම සඳහා මත විමසුම වෙනස් කරන්න", - "compose_form.publish": "Publish", + "compose_form.publish": "ප්‍රකාශ කරන්න", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", - "compose_form.sensitive.hide": "{count, plural, one {මාධ්‍ය සංවේදී ලෙස සලකුණු කරන්න} other {මාධ්‍ය සංවේදී ලෙස සලකුණු කරන්න}}", + "compose_form.save_changes": "වෙනස්කම් සුරකින්න", + "compose_form.sensitive.hide": "{count, plural, one {මාධ්ය සංවේදී ලෙස සලකුණු කරන්න} other {මාධ්ය සංවේදී ලෙස සලකුණු කරන්න}}", "compose_form.sensitive.marked": "{count, plural, one {මාධ්‍ය සංවේදී ලෙස සලකුණු කර ඇත} other {මාධ්‍ය සංවේදී ලෙස සලකුණු කර ඇත}}", "compose_form.sensitive.unmarked": "{count, plural, one {මාධ්‍ය සංවේදී ලෙස සලකුණු කර නැත} other {මාධ්‍ය සංවේදී ලෙස සලකුණු කර නැත}}", - "compose_form.spoiler.marked": "Text is hidden behind warning", - "compose_form.spoiler.unmarked": "පාඨය සඟවා නැත", + "compose_form.spoiler.marked": "අනතුරු ඇඟවීම පිටුපස පෙළ සඟවා ඇත", + "compose_form.spoiler.unmarked": "ප්‍රයෝජනය සඟවා නැත", "compose_form.spoiler_placeholder": "ඔබගේ අවවාදය මෙහි ලියන්න", "confirmation_modal.cancel": "අවලංගු", "confirmations.block.block_and_report": "අවහිර කර වාර්තා කරන්න", "confirmations.block.confirm": "අවහිර", - "confirmations.block.message": "ඔබට {name} අවහිර කිරීමට අවශ්‍ය බව විශ්වාසද?", - "confirmations.delete.confirm": "Delete", - "confirmations.delete.message": "Are you sure you want to delete this status?", - "confirmations.delete_list.confirm": "Delete", - "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", + "confirmations.block.message": "ඔබට {name} අවහිර කිරීමට අවශ්‍ය බව ද?", + "confirmations.delete.confirm": "මකන්න", + "confirmations.delete.message": "ඔබට මෙම තත්ත්වය මැකීමට අවශ්‍ය බව විශ්වාසද?", + "confirmations.delete_list.confirm": "මකන්න", + "confirmations.delete_list.message": "ඔබට මෙම ලැයිස්තුව ස්ථිරවම මැකීමට අවශ්‍ය බව විශ්වාසද?", "confirmations.discard_edit_media.confirm": "ඉවත ලන්න", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.message": "ඔබට මාධ්‍ය විස්තරයට හෝ පෙරදසුනට නොසුරකින ලද වෙනස්කම් තිබේ, කෙසේ වෙතත් ඒවා ඉවත දමන්නද?", "confirmations.domain_block.confirm": "සම්පූර්ණ වසම අවහිර කරන්න", - "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", + "confirmations.domain_block.message": "ඔබට සම්පූර්ණ {domain}අවහිර කිරීමට අවශ්‍ය බව ඔබට සැබවින්ම විශ්වාසද? බොහෝ අවස්ථාවලදී ඉලක්කගත බ්ලොක් හෝ නිශ්ශබ්ද කිරීම් කිහිපයක් ප්රමාණවත් වන අතර වඩාත් යෝග්ය වේ. ඔබ කිසිදු පොදු කාලරාමුවක හෝ ඔබගේ දැනුම්දීම් වල එම වසමේ අන්තර්ගතය නොදකිනු ඇත. එම වසමෙන් ඔබගේ අනුගාමිකයින් ඉවත් කරනු ලැබේ.", "confirmations.logout.confirm": "නික්මෙන්න", "confirmations.logout.message": "ඔබට නික්මෙන්න අවශ්‍ය බව විශ්වාසද?", "confirmations.mute.confirm": "නිශ්ශබ්ද", - "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.", + "confirmations.mute.explanation": "මෙය ඔවුන්ගෙන් පළ කිරීම් සහ ඒවා සඳහන් කරන පළ කිරීම් සඟවයි, නමුත් එය ඔවුන්ට ඔබේ පළ කිරීම් බැලීමට සහ ඔබව අනුගමනය කිරීමට තවමත් ඉඩ ලබා දේ.", "confirmations.mute.message": "ඔබට {name} නිශ්ශබ්ද කිරීමට අවශ්‍ය බව විශ්වාසද?", - "confirmations.redraft.confirm": "Delete & redraft", - "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.", + "confirmations.redraft.confirm": "මකන්න සහ නැවත කෙටුම්පත් කරන්න", + "confirmations.redraft.message": "ඔබට මෙම තත්ත්වය මකා එය නැවත කෙටුම්පත් කිරීමට අවශ්‍ය බව විශ්වාසද? ප්‍රියතමයන් සහ බූස්ට් අහිමි වනු ඇත, මුල් පළ කිරීම සඳහා පිළිතුරු අනාථ වනු ඇත.", "confirmations.reply.confirm": "පිළිතුර", - "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", - "confirmations.unfollow.confirm": "Unfollow", - "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", - "conversation.delete": "Delete conversation", + "confirmations.reply.message": "දැන් පිළිතුරු දීම ඔබ දැනට රචනා කරන පණිවිඩය උඩින් ලියයි. ඔබට ඉදිරියට යාමට අවශ්‍ය බව විශ්වාසද?", + "confirmations.unfollow.confirm": "අනුගමනය නොකරන්න", + "confirmations.unfollow.message": "ඔබට {name}අනුගමනය නොකිරීමට අවශ්‍ය බව විශ්වාසද?", + "conversation.delete": "සංවාදය මකන්න", "conversation.mark_as_read": "කියවූ ලෙස සලකුණු කරන්න", "conversation.open": "සංවාදය බලන්න", "conversation.with": "{names} සමඟ", - "directory.federated": "From known fediverse", - "directory.local": "{domain} වෙතින් පමණි", - "directory.new_arrivals": "New arrivals", - "directory.recently_active": "Recently active", - "embed.instructions": "Embed this status on your website by copying the code below.", - "embed.preview": "Here is what it will look like:", + "directory.federated": "දන්නා fediverse වලින්", + "directory.local": "{domain} පමණි", + "directory.new_arrivals": "නව පැමිණීම්", + "directory.recently_active": "මෑතකදී ක්රියාකාරී", + "embed.instructions": "පහත කේතය පිටපත් කිරීමෙන් මෙම තත්ත්වය ඔබේ වෙබ් අඩවියට ඇතුළත් කරන්න.", + "embed.preview": "එය පෙනෙන්නේ කෙසේද යන්න මෙන්න:", "emoji_button.activity": "ක්‍රියාකාරකම", - "emoji_button.clear": "Clear", + "emoji_button.clear": "පැහැදිලිව", "emoji_button.custom": "අභිරුචි", - "emoji_button.flags": "Flags", + "emoji_button.flags": "කොඩි", "emoji_button.food": "ආහාර සහ පාන", - "emoji_button.label": "Insert emoji", - "emoji_button.nature": "සොබාදහම", - "emoji_button.not_found": "No matching emojis found", + "emoji_button.label": "ඉමොජි ඇතුළු කරන්න", + "emoji_button.nature": "ස්වභාවික", + "emoji_button.not_found": "ගැළපෙන ඉමෝජි හමු නොවීය", "emoji_button.objects": "වස්තූන්", "emoji_button.people": "මිනිසුන්", "emoji_button.recent": "නිතර භාවිතා වූ", @@ -164,386 +164,395 @@ "emoji_button.symbols": "සංකේත", "emoji_button.travel": "චාරිකා සහ ස්ථාන", "empty_column.account_suspended": "ගිණුම අත්හිටුවා ඇත", - "empty_column.account_timeline": "No toots here!", - "empty_column.account_unavailable": "Profile unavailable", + "empty_column.account_timeline": "මෙහි දත් නැත!", + "empty_column.account_unavailable": "පැතිකඩ නොමැත", "empty_column.blocks": "ඔබ තවමත් කිසිදු පරිශීලකයෙකු අවහිර කර නැත.", - "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", - "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.bookmarked_statuses": "ඔබට තවමත් පිටු සලකුණු කළ මෙවලම් කිසිවක් නොමැත. ඔබ එකක් පිටු සලකුණු කළ විට, එය මෙහි පෙන්වනු ඇත.", + "empty_column.community": "දේශීය කාලරේඛාව හිස් ය. පන්දුව පෙරළීමට ප්‍රසිද්ධියේ යමක් ලියන්න!", + "empty_column.direct": "ඔබට තවමත් සෘජු පණිවිඩ කිසිවක් නොමැත. ඔබ එකක් යවන විට හෝ ලැබුණු විට, එය මෙහි පෙන්වනු ඇත.", "empty_column.domain_blocks": "අවහිර කළ වසම් නොමැත.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", - "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", - "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", - "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", - "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.", - "empty_column.hashtag": "There is nothing in this hashtag yet.", - "empty_column.home": "Your home timeline is empty! Follow more people to fill it up. {suggestions}", - "empty_column.home.suggestions": "See some suggestions", - "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.", - "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.", - "empty_column.mutes": "You haven't muted any users yet.", - "empty_column.notifications": "You don't have any notifications yet. When other people interact with you, you will see it here.", - "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up", - "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.", - "error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.", - "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", - "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", - "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", - "errors.unexpected_crash.report_issue": "Report issue", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", - "follow_recommendations.done": "Done", - "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", - "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", - "follow_request.authorize": "Authorize", - "follow_request.reject": "ප්‍රතික්ෂේප", - "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "empty_column.explore_statuses": "දැන් කිසිවක් නැඹුරු නොවේ. පසුව නැවත පරීක්ෂා කරන්න!", + "empty_column.favourited_statuses": "ඔබට තවමත් ප්‍රියතම දත් කිසිවක් නැත. ඔබ කැමති එකක් වූ විට, එය මෙහි පෙන්වනු ඇත.", + "empty_column.favourites": "කිසිවෙකු තවමත් මෙම මෙවලමට ප්‍රිය කර නැත. යමෙකු එසේ කළ විට, ඔවුන් මෙහි පෙන්වනු ඇත.", + "empty_column.follow_recommendations": "ඔබ වෙනුවෙන් යෝජනා ජනනය කළ නොහැකි බව පෙනේ. ඔබ දන්නා හඳුනන පුද්ගලයින් සෙවීමට හෝ ප්‍රවණතා හැෂ් ටැග් ගවේෂණය කිරීමට ඔබට සෙවීම භාවිත කිරීමට උත්සාහ කළ හැක.", + "empty_column.follow_requests": "ඔබට තවමත් අනුගමනය කිරීමේ ඉල්ලීම් කිසිවක් නොමැත. ඔබට එකක් ලැබුණු විට, එය මෙහි පෙන්වනු ඇත.", + "empty_column.hashtag": "මෙම හැෂ් ටැග් එකේ තවම කිසිවක් නොමැත.", + "empty_column.home": "ඔබගේ නිවසේ කාලරේඛාව හිස්ය! එය පිරවීම සඳහා තවත් පුද්ගලයින් අනුගමනය කරන්න. {suggestions}", + "empty_column.home.suggestions": "යෝජනා කිහිපයක් බලන්න", + "empty_column.list": "මෙම ලැයිස්තුවේ තවමත් කිසිවක් නොමැත. මෙම ලැයිස්තුවේ සාමාජිකයන් නව තත්ව පළ කරන විට, ඔවුන් මෙහි දිස් වනු ඇත.", + "empty_column.lists": "ඔබට තවමත් ලැයිස්තු කිසිවක් නැත. ඔබ එකක් සාදන විට, එය මෙහි පෙන්වනු ඇත.", + "empty_column.mutes": "ඔබ තවමත් කිසිදු පරිශීලකයෙකු නිහඬ කර නැත.", + "empty_column.notifications": "ඔබට තවම දැනුම්දීම් කිසිවක් නැත. වෙනත් පුද්ගලයින් ඔබ සමඟ අන්තර් ක්‍රියා කරන විට, ඔබ එය මෙහි දකිනු ඇත.", + "empty_column.public": "මෙහි කිසිවක් නැත! යමක් ප්‍රසිද්ධියේ ලියන්න, නැතහොත් එය පිරවීම සඳහා වෙනත් සේවාදායකයන්ගෙන් පරිශීලකයන් හස්තීයව අනුගමනය කරන්න", + "error.unexpected_crash.explanation": "අපගේ කේතයේ දෝෂයක් හෝ බ්‍රවුසර ගැළපුම් ගැටලුවක් හේතුවෙන්, මෙම පිටුව නිවැරදිව ප්‍රදර්ශනය කළ නොහැක.", + "error.unexpected_crash.explanation_addons": "මෙම පිටුව නිවැරදිව ප්‍රදර්ශනය කළ නොහැක. මෙම දෝෂය බ්‍රවුසර ඇඩෝනයක් හෝ ස්වයංක්‍රීය පරිවර්තන මෙවලම් නිසා ඇති විය හැක.", + "error.unexpected_crash.next_steps": "පිටුව නැවුම් කිරීමට උත්සාහ කරන්න. එය උදව් නොකළහොත්, ඔබට තවමත් වෙනත් බ්‍රවුසරයක් හෝ ස්වදේශීය යෙදුමක් හරහා Mastodon භාවිත කිරීමට හැකි වේ.", + "error.unexpected_crash.next_steps_addons": "ඒවා අක්‍රිය කර පිටුව නැවුම් කිරීමට උත්සාහ කරන්න. එය උදව් නොකළහොත්, ඔබට තවමත් වෙනත් බ්‍රවුසරයක් හෝ ස්වදේශීය යෙදුමක් හරහා Mastodon භාවිත කිරීමට හැකි වේ.", + "errors.unexpected_crash.copy_stacktrace": "ස්ටැක්ට්රේස් පසුරු පුවරුවට පිටපත් කරන්න", + "errors.unexpected_crash.report_issue": "ගැටලුව වාර්තා කරන්න", + "explore.search_results": "සෙවුම් ප්‍රතිඵල", + "explore.suggested_follows": "ඔයා වෙනුවෙන්", + "explore.title": "ගවේෂණය කරන්න", + "explore.trending_links": "පුවත්", + "explore.trending_statuses": "තනතුරු", + "explore.trending_tags": "හැෂ් ටැග්", + "follow_recommendations.done": "කළා", + "follow_recommendations.heading": "ඔබ පළ කිරීම් බැලීමට කැමති පුද්ගලයින් අනුගමනය කරන්න! මෙන්න යෝජනා කිහිපයක්.", + "follow_recommendations.lead": "ඔබ අනුගමන කරන පුද්ගලයින්ගේ පළ කිරීම් ඔබගේ නිවසේ සංග්‍රහයේ කාලානුක්‍රමික අනුපිළිවෙලට පෙන්වනු ඇත. වැරදි කිරීමට බිය නොවන්න, ඔබට ඕනෑම වේලාවක පහසුවෙන් මිනිසුන් අනුගමනය කළ නොහැක!", + "follow_request.authorize": "අවසරලත්", + "follow_request.reject": "ප්රතික්ෂේප", + "follow_requests.unlocked_explanation": "ඔබගේ ගිණුම අගුලු දමා නොතිබුණද, {domain} කාර්ය මණ්ඩලය සිතුවේ ඔබට මෙම ගිණුම් වලින් ලැබෙන ඉල්ලීම් හස්තීයව සමාලෝචනය කිරීමට අවශ්‍ය විය හැකි බවයි.", "generic.saved": "සුරැකිණි", "getting_started.developers": "සංවර්ධකයින්", "getting_started.directory": "පැතිකඩ නාමාවලිය", "getting_started.documentation": "ප්‍රලේඛනය", - "getting_started.heading": "Getting started", + "getting_started.heading": "ඇරඹේ", "getting_started.invite": "මිනිසුන්ට ආරාධනා කරන්න", - "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.open_source_notice": "Mastodon යනු විවෘත කේත මෘදුකාංගයකි. ඔබට GitHub හි {github}ට දායක වීමට හෝ ගැටළු වාර්තා කිරීමට හැකිය.", "getting_started.security": "ගිණුමේ සැකසුම්", "getting_started.terms": "සේවාවේ කොන්දේසි", "hashtag.column_header.tag_mode.all": "සහ {additional}", "hashtag.column_header.tag_mode.any": "හෝ {additional}", - "hashtag.column_header.tag_mode.none": "without {additional}", + "hashtag.column_header.tag_mode.none": "{additional}නොමැතිව", "hashtag.column_settings.select.no_options_message": "යෝජනා කිසිවක් හමු නොවිණි", - "hashtag.column_settings.select.placeholder": "Enter hashtags…", - "hashtag.column_settings.tag_mode.all": "මේ සියල්ලම", - "hashtag.column_settings.tag_mode.any": "මෙයින් ඕනෑම එකක්", - "hashtag.column_settings.tag_mode.none": "None of these", - "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.column_settings.select.placeholder": "හැෂ් ටැග්…ඇතුලත් කරන්න", + "hashtag.column_settings.tag_mode.all": "මේ වගේ", + "hashtag.column_settings.tag_mode.any": "ඇතුළත් එකක්", + "hashtag.column_settings.tag_mode.none": "මේ කිසිවක් නැත", + "hashtag.column_settings.tag_toggle": "මෙම තීරුවේ අමතර ටැග් ඇතුළත් කරන්න", "home.column_settings.basic": "මූලික", - "home.column_settings.show_reblogs": "Show boosts", - "home.column_settings.show_replies": "ප්‍රතිචාර පෙන්වන්න", + "home.column_settings.show_reblogs": "බූස්ට් පෙන්වන්න", + "home.column_settings.show_replies": "ප්රතිචාර පෙන්වන්න", "home.hide_announcements": "නිවේදන සඟවන්න", "home.show_announcements": "නිවේදන පෙන්වන්න", - "intervals.full.days": "{number, plural, one {# day} other {# days}}", - "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", - "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", - "keyboard_shortcuts.back": "to navigate back", - "keyboard_shortcuts.blocked": "to open blocked users list", - "keyboard_shortcuts.boost": "to boost", - "keyboard_shortcuts.column": "to focus a status in one of the columns", - "keyboard_shortcuts.compose": "to focus the compose textarea", + "intervals.full.days": "{number, plural, one {# දින} other {# දින}}", + "intervals.full.hours": "{number, plural, one {# පැය} other {# පැය}}", + "intervals.full.minutes": "{number, plural, one {විනාඩි #} other {# මිනිත්තු}}", + "keyboard_shortcuts.back": "ආපසු සැරිසැරීමට", + "keyboard_shortcuts.blocked": "අවහිර කළ පරිශීලක ලැයිස්තුව විවෘත කිරීමට", + "keyboard_shortcuts.boost": "වැඩි කිරීමට", + "keyboard_shortcuts.column": "එක් තීරුවක තත්ත්වය නාභිගත කිරීමට", + "keyboard_shortcuts.compose": "රචනා පාඨ ප්‍රදේශය නාභිගත කිරීමට", "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.favourite": "to favourite", - "keyboard_shortcuts.favourites": "to open favourites list", - "keyboard_shortcuts.federated": "to open federated timeline", - "keyboard_shortcuts.heading": "Keyboard Shortcuts", - "keyboard_shortcuts.home": "to open home timeline", + "keyboard_shortcuts.direct": "සෘජු පණිවිඩ තීරුව විවෘත කිරීමට", + "keyboard_shortcuts.down": "ලැයිස්තුවේ පහළට ගමන් කිරීමට", + "keyboard_shortcuts.enter": "තත්ත්වය විවෘත කිරීමට", + "keyboard_shortcuts.favourite": "කැමති කිරීමට", + "keyboard_shortcuts.favourites": "ප්රියතම ලැයිස්තුව විවෘත කිරීමට", + "keyboard_shortcuts.federated": "ෆෙඩරේටඩ් කාලරාමුව විවෘත කිරීමට", + "keyboard_shortcuts.heading": "යතුරුපුවරු කෙටිමං", + "keyboard_shortcuts.home": "නිවසේ කාලරේඛාව විවෘත කිරීමට", "keyboard_shortcuts.hotkey": "උණුසුම් යතුර", - "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.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.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.unfocus": "to un-focus compose textarea/search", - "keyboard_shortcuts.up": "to move up in the list", + "keyboard_shortcuts.legend": "මෙම පුරාවෘත්තය ප්රදර්ශනය කිරීමට", + "keyboard_shortcuts.local": "දේශීය කාලරේඛාව විවෘත කිරීමට", + "keyboard_shortcuts.mention": "කතුවරයා සඳහන් කිරීමට", + "keyboard_shortcuts.muted": "නිශ්ශබ්ද පරිශීලක ලැයිස්තුව විවෘත කිරීමට", + "keyboard_shortcuts.my_profile": "ඔබගේ පැතිකඩ විවෘත කිරීමට", + "keyboard_shortcuts.notifications": "දැනුම්දීම් තීරුව විවෘත කිරීමට", + "keyboard_shortcuts.open_media": "මාධ්‍ය විවෘත කිරීමට", + "keyboard_shortcuts.pinned": "පින් කළ මෙවලම් ලැයිස්තුව විවෘත කිරීමට", + "keyboard_shortcuts.profile": "කර්තෘගේ පැතිකඩ විවෘත කිරීමට", + "keyboard_shortcuts.reply": "පිළිතුරු දීමට", + "keyboard_shortcuts.requests": "පහත ඉල්ලීම් ලැයිස්තුව විවෘත කිරීමට", + "keyboard_shortcuts.search": "සෙවුම් අවධානය යොමු කිරීමට", + "keyboard_shortcuts.spoilers": "CW ක්ෂේත්‍රය පෙන්වීමට/සැඟවීමට", + "keyboard_shortcuts.start": "\"ආරම්භ කරන්න\" තීරුව විවෘත කිරීමට", + "keyboard_shortcuts.toggle_hidden": "CW පිටුපස පෙළ පෙන්වීමට/සැඟවීමට", + "keyboard_shortcuts.toggle_sensitivity": "මාධ්‍ය පෙන්වීමට/සැඟවීමට", + "keyboard_shortcuts.toot": "අලුත්ම ටූට් එකක් පටන් ගන්න", + "keyboard_shortcuts.unfocus": "අවධානය යොමු නොකිරීමට textarea/search රචනා කරන්න", + "keyboard_shortcuts.up": "ලැයිස්තුවේ ඉහළට යාමට", "lightbox.close": "වසන්න", - "lightbox.compress": "Compress image view box", - "lightbox.expand": "Expand image view box", + "lightbox.compress": "රූප බැලීමේ කොටුව සම්පීඩනය කරන්න", + "lightbox.expand": "රූප දර්ශන පෙට්ටිය දිග හරින්න", "lightbox.next": "ඊළඟ", "lightbox.previous": "පෙර", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "කෙසේ හෝ පැතිකඩ පෙන්වන්න", + "limited_account_hint.title": "මෙම පැතිකඩ ඔබගේ සේවාදායකයේ පරිපාලකයින් විසින් සඟවා ඇත.", "lists.account.add": "ලැයිස්තුවට එකතු කරන්න", - "lists.account.remove": "Remove from list", - "lists.delete": "Delete list", + "lists.account.remove": "ලැයිස්තුවෙන් ඉවත්", + "lists.delete": "ලැයිස්තුව මකන්න", "lists.edit": "ලැයිස්තුව සංස්කරණය කරන්න", - "lists.edit.submit": "Change title", + "lists.edit.submit": "මාතෘකාව වෙනස් කරන්න", "lists.new.create": "ලැයිස්තුව එකතු කරන්න", - "lists.new.title_placeholder": "New list title", - "lists.replies_policy.followed": "Any followed user", - "lists.replies_policy.list": "Members of the list", + "lists.new.title_placeholder": "නව ලැයිස්තු මාතෘකාව", + "lists.replies_policy.followed": "අනුගමනය කරන ඕනෑම පරිශීලකයෙක්", + "lists.replies_policy.list": "ලැයිස්තුවේ සාමාජිකයන්", "lists.replies_policy.none": "කිසිවෙක් නැත", - "lists.replies_policy.title": "Show replies to:", - "lists.search": "Search among people you follow", - "lists.subheading": "Your lists", - "load_pending": "{count, plural, one {# new item} other {# new items}}", + "lists.replies_policy.title": "පිළිතුරු පෙන්වන්න:", + "lists.search": "ඔබ අනුගමනය කරන පුද්ගලයින් අතර සොයන්න", + "lists.subheading": "ඔබේ ලැයිස්තු", + "load_pending": "{count, plural, one {# නව අයිතමයක්} other {නව අයිතම #ක්}}", "loading_indicator.label": "පූරණය වෙමින්...", - "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", - "missing_indicator.label": "Not found", - "missing_indicator.sublabel": "This resource could not be found", - "mute_modal.duration": "Duration", - "mute_modal.hide_notifications": "Hide notifications from this user?", - "mute_modal.indefinite": "Indefinite", + "media_gallery.toggle_visible": "{number, plural, one {රූපය සඟවන්න} other {පින්තූර සඟවන්න}}", + "missing_indicator.label": "හමු වුණේ නැහැ", + "missing_indicator.sublabel": "මෙම සම්පත සොයාගත නොහැකි විය", + "mute_modal.duration": "කාල සීමාව", + "mute_modal.hide_notifications": "මෙම පරිශීලකයාගෙන් දැනුම්දීම් සඟවන්නද?", + "mute_modal.indefinite": "අවිනිශ්චිත", "navigation_bar.apps": "ජංගම යෙදුම්", "navigation_bar.blocks": "අවහිර කළ පරිශීලකයින්", - "navigation_bar.bookmarks": "පොත් යොමු", - "navigation_bar.community_timeline": "Local timeline", - "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", - "navigation_bar.discover": "Discover", - "navigation_bar.domain_blocks": "Hidden domains", + "navigation_bar.bookmarks": "පොත් යොමු කරන්න", + "navigation_bar.community_timeline": "දේශීය කාලරේඛාව", + "navigation_bar.compose": "නව ටූට් සාදන්න", + "navigation_bar.direct": "සෘජු පණිවිඩ", + "navigation_bar.discover": "සොයා ගන්න", + "navigation_bar.domain_blocks": "සැඟවුණු වසම්", "navigation_bar.edit_profile": "පැතිකඩ සංස්කරණය", - "navigation_bar.explore": "Explore", + "navigation_bar.explore": "ගවේෂණය කරන්න", "navigation_bar.favourites": "ප්‍රියතමයන්", - "navigation_bar.filters": "නිහඬ කළ වචන", - "navigation_bar.follow_requests": "Follow requests", - "navigation_bar.follows_and_followers": "Follows and followers", + "navigation_bar.filters": "සමඟ කළ වචන", + "navigation_bar.follow_requests": "ඉල්ලීම් අනුගමනය කරන්න", + "navigation_bar.follows_and_followers": "අනුගාමිකයින් සහ අනුගාමිකයින්", "navigation_bar.info": "මෙම සේවාදායකය පිළිබඳව", "navigation_bar.keyboard_shortcuts": "උණුසුම් යතුරු", - "navigation_bar.lists": "Lists", + "navigation_bar.lists": "ලැයිස්තු", "navigation_bar.logout": "නික්මෙන්න", - "navigation_bar.mutes": "Muted users", + "navigation_bar.mutes": "නිශ්ශබ්ද පරිශීලකයන්", "navigation_bar.personal": "පුද්ගලික", - "navigation_bar.pins": "Pinned toots", - "navigation_bar.preferences": "Preferences", - "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.pins": "ඇලවූ දත්", + "navigation_bar.preferences": "මනාප", + "navigation_bar.public_timeline": "ෆෙඩරේටඩ් කාලරේඛාව", "navigation_bar.security": "ආරක්ෂාව", - "notification.admin.sign_up": "{name} signed up", - "notification.favourite": "{name} favourited your status", - "notification.follow": "{name} followed you", - "notification.follow_request": "{name} has requested to follow you", - "notification.mention": "{name} mentioned you", - "notification.own_poll": "Your poll has ended", - "notification.poll": "A poll you have voted in has ended", - "notification.reblog": "{name} boosted your status", - "notification.status": "{name} just posted", - "notification.update": "{name} edited a post", + "notification.admin.report": "{name} වාර්තා {target}", + "notification.admin.sign_up": "{name} අත්සන් කර ඇත", + "notification.favourite": "{name} ඔබගේ තත්වයට කැමති විය", + "notification.follow": "{name} ඔබව අනුගමනය කළා", + "notification.follow_request": "{name} ඔබව අනුගමනය කිරීමට ඉල්ලා ඇත", + "notification.mention": "{name} ඔබව සඳහන් කර ඇත", + "notification.own_poll": "ඔබේ මත විමසුම අවසන් වී ඇත", + "notification.poll": "ඔබ ඡන්දය දුන් මත විමසුමක් අවසන් වී ඇත", + "notification.reblog": "{name} ඔබේ තත්ත්වය ඉහළ නැංවීය", + "notification.status": "{name} දැන් පළ කළා", + "notification.update": "{name} පළ කිරීමක් සංස්කරණය කළා", "notifications.clear": "දැනුම්දීම් හිස්කරන්න", - "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", - "notifications.column_settings.admin.sign_up": "New sign-ups:", - "notifications.column_settings.alert": "Desktop notifications", + "notifications.clear_confirmation": "ඔබට ඔබගේ සියලු දැනුම්දීම් ස්ථිරවම හිස් කිරීමට අවශ්‍ය බව විශ්වාසද?", + "notifications.column_settings.admin.report": "නව වාර්තා:", + "notifications.column_settings.admin.sign_up": "නව ලියාපදිංචි කිරීම්:", + "notifications.column_settings.alert": "ඩෙස්ක්ටොප් දැනුම්දීම්", "notifications.column_settings.favourite": "ප්‍රියතමයන්:", - "notifications.column_settings.filter_bar.advanced": "Display all categories", - "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show_bar": "Show filter bar", - "notifications.column_settings.follow": "New followers:", - "notifications.column_settings.follow_request": "New follow requests:", + "notifications.column_settings.filter_bar.advanced": "සියලුම කාණ්ඩ පෙන්වන්න", + "notifications.column_settings.filter_bar.category": "ඉක්මන් පෙරහන් තීරුව", + "notifications.column_settings.filter_bar.show_bar": "පෙරහන් තීරුව පෙන්වන්න", + "notifications.column_settings.follow": "නව අනුගාමිකයින්:", + "notifications.column_settings.follow_request": "නව පහත ඉල්ලීම්:", "notifications.column_settings.mention": "සැඳහුම්:", - "notifications.column_settings.poll": "Poll results:", - "notifications.column_settings.push": "Push notifications", - "notifications.column_settings.reblog": "Boosts:", + "notifications.column_settings.poll": "ඡන්ද ප්‍රතිඵල:", + "notifications.column_settings.push": "තල්ලු දැනුම්දීම්", + "notifications.column_settings.reblog": "තල්ලු කිරීම්:", "notifications.column_settings.show": "තීරුවෙහි පෙන්වන්න", - "notifications.column_settings.sound": "ශබ්දය ධාවනය", - "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_notifications.category": "Unread notifications", - "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.sound": "ශබ්දය සිදු කරන ලදී", + "notifications.column_settings.status": "නව දත්:", + "notifications.column_settings.unread_notifications.category": "නොකියවූ දැනුම්දීම්", + "notifications.column_settings.unread_notifications.highlight": "නොකියවූ දැනුම්දීම් ඉස්මතු කරන්න", + "notifications.column_settings.update": "සංස්කරණ:", "notifications.filter.all": "සියල්ල", - "notifications.filter.boosts": "Boosts", + "notifications.filter.boosts": "බූස්ට් කරයි", "notifications.filter.favourites": "ප්‍රියතමයන්", - "notifications.filter.follows": "Follows", + "notifications.filter.follows": "පහත සඳහන්", "notifications.filter.mentions": "සැඳහුම්", - "notifications.filter.polls": "Poll results", - "notifications.filter.statuses": "Updates from people you follow", - "notifications.grant_permission": "Grant permission.", + "notifications.filter.polls": "ඡන්ද ප්‍රතිඵල", + "notifications.filter.statuses": "ඔබ අනුගමනය කරන පුද්ගලයින්ගෙන් යාවත්කාලීන", + "notifications.grant_permission": "අවසර දෙන්න.", "notifications.group": "දැනුම්දීම් {count}", - "notifications.mark_as_read": "සෑම දැනුම්දීමක්ම කියවූ ලෙස සලකුණු කරන්න", - "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", - "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", - "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.", - "notifications_permission_banner.enable": "Enable desktop notifications", - "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", - "notifications_permission_banner.title": "Never miss a thing", - "picture_in_picture.restore": "Put it back", + "notifications.mark_as_read": "දැනුම්දීමක්ම කියවූ ලෙස සලකුණු කරන්න", + "notifications.permission_denied": "කලින් ප්‍රතික්ෂේප කළ බ්‍රවුසර අවසර ඉල්ලීම හේතුවෙන් ඩෙස්ක්ටොප් දැනුම්දීම් නොමැත", + "notifications.permission_denied_alert": "බ්‍රවුසර අවසරය පෙර ප්‍රතික්ෂේප කර ඇති බැවින්, ඩෙස්ක්ටොප් දැනුම්දීම් සබල කළ නොහැක", + "notifications.permission_required": "අවශ්‍ය අවසරය ලබා දී නොමැති නිසා ඩෙස්ක්ටොප් දැනුම්දීම් නොමැත.", + "notifications_permission_banner.enable": "ඩෙස්ක්ටොප් දැනුම්දීම් සබල කරන්න", + "notifications_permission_banner.how_to_control": "Mastodon විවෘතව නොමැති විට දැනුම්දීම් ලබා ගැනීමට, ඩෙස්ක්ටොප් දැනුම්දීම් සබල කරන්න. ඔබට ඒවා සක්‍රිය කළ පසු ඉහත {icon} බොත්තම හරහා ඩෙස්ක්ටොප් දැනුම්දීම් ජනනය කරන්නේ කුමන ආකාරයේ අන්තර්ක්‍රියාද යන්න නිවැරදිව පාලනය කළ හැක.", + "notifications_permission_banner.title": "කිසිම දෙයක් අතපසු කරන්න එපා", + "picture_in_picture.restore": "ආපහු දාන්න", "poll.closed": "වසා ඇත", "poll.refresh": "නැවුම් කරන්න", - "poll.total_people": "{count, plural, one {# person} other {# people}}", - "poll.total_votes": "{count, plural, one {# vote} other {# votes}}", + "poll.total_people": "{count, plural, one {# පුද්ගලයා} other {# මහජන}}", + "poll.total_votes": "{count, plural, one {# ඡන්දය} other {ඡන්ද #}}", "poll.vote": "මනාපය", - "poll.voted": "You voted for this answer", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", - "poll_button.add_poll": "Add a poll", - "poll_button.remove_poll": "Remove poll", - "privacy.change": "Adjust status privacy", - "privacy.direct.long": "Visible for mentioned users only", - "privacy.direct.short": "Direct", - "privacy.private.long": "Visible for followers only", - "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all", - "privacy.public.short": "ප්‍රසිද්ධ", - "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", - "privacy.unlisted.short": "Unlisted", + "poll.voted": "ඔබ මෙම පිළිතුරට ඡන්දය දුන්නා", + "poll.votes": "{votes, plural, one {# ඡන්දය} other {ඡන්ද #}}", + "poll_button.add_poll": "මත විමසුමක් එක් කරන්න", + "poll_button.remove_poll": "ඡන්ද විමසීම ඉවත් කරන්න", + "privacy.change": "තත්ත්‍වයේ පෞද්ගලිකත්වය සීරුමාරු කරන්න", + "privacy.direct.long": "සඳහන් කළ පරිශීලකයින් සඳහා පමණක් දෘශ්‍යමාන වේ", + "privacy.direct.short": "සඳහන් කළ පුද්ගලයන් පමණි", + "privacy.private.long": "අනුගාමිකයින් සඳහා පමණක් දෘශ්‍යමාන වේ", + "privacy.private.short": "අනුගාමිකයින් පමණි", + "privacy.public.long": "සැමට දෘශ්‍යමානයි", + "privacy.public.short": "ප්රසිද්ධ", + "privacy.unlisted.long": "සැමට දෘශ්‍යමාන, නමුත් සොයාගැනීමේ විශේෂාංග වලින් ඉවත් විය", + "privacy.unlisted.short": "ලැයිස්තුගත නොකළ", "refresh": "නැවුම් කරන්න", "regeneration_indicator.label": "පූරණය වෙමින්…", - "regeneration_indicator.sublabel": "Your home feed is being prepared!", + "regeneration_indicator.sublabel": "ඔබේ නිවසේ පෝෂණය සූදානම් වෙමින් පවතී!", "relative_time.days": "{number}d", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", - "relative_time.hours": "{number}h", + "relative_time.full.days": "{number, plural, one {# දින} other {# දින}} පෙර", + "relative_time.full.hours": "{number, plural, one {# පැය} other {# පැය}} පෙර", + "relative_time.full.just_now": "මේ දැන්", + "relative_time.full.minutes": "{number, plural, one {විනාඩි #} other {# මිනිත්තු}} පෙර", + "relative_time.full.seconds": "{number, plural, one {# දෙවැනි} other {# තත්පර}} පෙර", + "relative_time.hours": "පැය {number}", "relative_time.just_now": "දැන්", - "relative_time.minutes": "{number}m", - "relative_time.seconds": "{number}s", + "relative_time.minutes": "මීටර් {number}", + "relative_time.seconds": "{number}තත්", "relative_time.today": "අද", "reply_indicator.cancel": "අවලංගු කරන්න", - "report.block": "Block", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", - "report.categories.other": "Other", - "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", - "report.category.subtitle": "Choose the best match", - "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", - "report.category.title_status": "post", - "report.close": "Done", - "report.comment.title": "Is there anything else you think we should know?", - "report.forward": "Forward to {target}", - "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", - "report.mute": "Mute", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.block": "අවහිර කරන්න", + "report.block_explanation": "ඔබට ඔවුන්ගේ පෝස්ට් නොපෙනේ. ඔවුන්ට ඔබේ පළ කිරීම් බැලීමට හෝ ඔබව අනුගමනය කිරීමට නොහැකි වනු ඇත. ඔවුන් අවහිර කර ඇති බව ඔවුන්ට පැවසිය හැකිය.", + "report.categories.other": "වෙනත්", + "report.categories.spam": "ආයාචිත තැපැල්", + "report.categories.violation": "අන්තර්ගතය සේවාදායක නීති එකක් හෝ කිහිපයක් උල්ලංඝනය කරයි", + "report.category.subtitle": "හොඳම ගැලපීම තෝරන්න", + "report.category.title": "මෙම {type}සමඟ සිදුවන්නේ කුමක්දැයි අපට කියන්න", + "report.category.title_account": "පැතිකඩ", + "report.category.title_status": "තැපැල්", + "report.close": "කළා", + "report.comment.title": "අප දැනගත යුතු යැයි ඔබ සිතන තවත් යමක් තිබේද?", + "report.forward": "{target}වෙත යොමු කරන්න", + "report.forward_hint": "ගිණුම වෙනත් සේවාදායකයකින්. වාර්තාවේ නිර්නාමික පිටපතක් එතනටත් එවන්න?", + "report.mute": "නිහඬ කරන්න", + "report.mute_explanation": "ඔබට ඔවුන්ගේ පෝස්ට් නොපෙනේ. ඔවුන්ට තවමත් ඔබව අනුගමනය කිරීමට සහ ඔබේ පළ කිරීම් දැකීමට හැකි අතර ඒවා නිශ්ශබ්ද කර ඇති බව නොදැනේ.", + "report.next": "ඊළඟ", "report.placeholder": "අමතර අදහස්", - "report.reasons.dislike": "I don't like it", - "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", - "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", - "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", - "report.reasons.violation": "It violates server rules", - "report.reasons.violation_description": "You are aware that it breaks specific rules", - "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", - "report.statuses.subtitle": "Select all that apply", - "report.statuses.title": "Are there any posts that back up this report?", + "report.reasons.dislike": "මම ඒකට කැමති නැහැ", + "report.reasons.dislike_description": "ඒක බලන්න ඕන දෙයක් නෙවෙයි", + "report.reasons.other": "ඒක වෙන දෙයක්", + "report.reasons.other_description": "ගැටළුව වෙනත් වර්ග වලට නොගැලපේ", + "report.reasons.spam": "එය අයාචිත තැපැල් ය", + "report.reasons.spam_description": "අනිෂ්ට සබැඳි, ව්‍යාජ නියැලීම, හෝ පුනරාවර්තන පිළිතුරු", + "report.reasons.violation": "එය සේවාදායක නීති උල්ලංඝනය කරයි", + "report.reasons.violation_description": "එය නිශ්චිත නීති කඩ කරන බව ඔබ දන්නවා", + "report.rules.subtitle": "අදාළ සියල්ල තෝරන්න", + "report.rules.title": "කුමන නීති උල්ලංඝනය කරන්නේද?", + "report.statuses.subtitle": "අදාළ සියල්ල තෝරන්න", + "report.statuses.title": "මෙම වාර්තාව උපස්ථ කරන පෝස්ට් තිබේද?", "report.submit": "යොමන්න", - "report.target": "Report {target}", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", - "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", - "report.unfollow": "Unfollow @{name}", - "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report.target": "වාර්තාව {target}", + "report.thanks.take_action": "Mastodon හි ඔබ දකින දේ පාලනය කිරීම සඳහා ඔබේ විකල්ප මෙන්න:", + "report.thanks.take_action_actionable": "අපි මෙය සමාලෝචනය කරන අතරතුර, ඔබට @{name}ට එරෙහිව පියවර ගත හැක:", + "report.thanks.title": "මේක බලන්න ඕන නැද්ද?", + "report.thanks.title_actionable": "වාර්තා කිරීමට ස්තූතියි, අපි මේ ගැන සොයා බලමු.", + "report.unfollow": "@{name}අනුගමනය නොකරන්න", + "report.unfollow_explanation": "ඔබ මෙම ගිණුම අනුගමනය කරයි. ඔබේ නිවසේ සංග්‍රහයේ ඔවුන්ගේ පළ කිරීම් තවදුරටත් නොදැකීමට, ඒවා අනුගමනය නොකරන්න.", + "report_notification.attached_statuses": "{count, plural, one {{count} තැපැල්} other {{count} තනතුරු}} අමුණා ඇත", + "report_notification.categories.other": "වෙනත්", + "report_notification.categories.spam": "ආයාචිත තැපැල්", + "report_notification.categories.violation": "රීති උල්ලංඝනය කිරීම", + "report_notification.open": "විවෘත වාර්තාව", "search.placeholder": "සොයන්න", - "search_popout.search_format": "Advanced search format", - "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", - "search_popout.tips.hashtag": "hashtag", - "search_popout.tips.status": "status", - "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.search_format": "උසස් සෙවුම් ආකෘතිය", + "search_popout.tips.full_text": "සරල පෙළ ඔබ ලියා ඇති, ප්‍රිය කළ, වැඩි කළ හෝ සඳහන් කර ඇති තත්ත්වයන් මෙන්ම ගැළපෙන පරිශීලක නාම, සංදර්ශක නම් සහ හැෂ් ටැග් ලබා දෙයි.", + "search_popout.tips.hashtag": "හෑෂ් ටැගය", + "search_popout.tips.status": "තත්ත්වය", + "search_popout.tips.text": "සරල පෙළ ගැළපෙන සංදර්ශක නම්, පරිශීලක නාම සහ හැෂ් ටැග් ලබා දෙයි", "search_popout.tips.user": "පරිශීලක", "search_results.accounts": "මිනිසුන්", - "search_results.all": "All", - "search_results.hashtags": "Hashtags", - "search_results.nothing_found": "Could not find anything for these search terms", - "search_results.statuses": "Toots", - "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", - "search_results.total": "{count, number} {count, plural, one {result} other {results}}", - "status.admin_account": "Open moderation interface for @{name}", - "status.admin_status": "Open this status in the moderation interface", + "search_results.all": "සියලුම", + "search_results.hashtags": "හැෂ් ටැග්", + "search_results.nothing_found": "මෙම සෙවුම් පද සඳහා කිසිවක් සොයාගත නොහැකි විය", + "search_results.statuses": "ටූට්ස්", + "search_results.statuses_fts_disabled": "මෙම Mastodon සේවාදායකයේ ඒවායේ අන්තර්ගතය අනුව මෙවලම් සෙවීම සබල නොවේ.", + "search_results.total": "{count, number} {count, plural, one {ප්රතිඵලය} other {ප්රතිපල}}", + "status.admin_account": "@{name}සඳහා මධ්‍යස්ථ අතුරුමුහුණත විවෘත කරන්න", + "status.admin_status": "මධ්‍යස්ථ අතුරුමුහුණතෙහි මෙම තත්ත්වය විවෘත කරන්න", "status.block": "@{name} අවහිර කරන්න", "status.bookmark": "පොත් යොමුව", "status.cancel_reblog_private": "Unboost", - "status.cannot_reblog": "This post cannot be boosted", - "status.copy": "Copy link to status", - "status.delete": "Delete", - "status.detailed_status": "Detailed conversation view", + "status.cannot_reblog": "මෙම තනතුර වැඩි කළ නොහැක", + "status.copy": "තත්වයට සබැඳිය පිටපත් කරන්න", + "status.delete": "මකන්න", + "status.detailed_status": "සවිස්තරාත්මක සංවාද දසුන", "status.direct": "@{name} සෘජු පණිවිඩය", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "සංස්කරණය කරන්න", + "status.edited": "සංස්කරණය {date}", + "status.edited_x_times": "සංස්කරණය කළා {count, plural, one {{count} කාලය} other {{count} වාර}}", "status.embed": "එබ්බවූ", "status.favourite": "ප්‍රියතම", "status.filtered": "පෙරන ලද", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.hide": "Hide toot", + "status.history.created": "{name} නිර්මාණය {date}", + "status.history.edited": "{name} සංස්කරණය {date}", "status.load_more": "තව පූරණය කරන්න", - "status.media_hidden": "මාධ්‍ය සඟවා ඇත", + "status.media_hidden": "මාධ්‍ය සංගුවා ඇත", "status.mention": "@{name} සැඳහුම", "status.more": "තව", - "status.mute": "@{name} නිහඬ කරන්න", - "status.mute_conversation": "සංවාදය නිහඬ කරන්න", - "status.open": "Expand this status", - "status.pin": "Pin on profile", - "status.pinned": "Pinned toot", + "status.mute": "@{name} කරන්න", + "status.mute_conversation": "සංවාදයෙන් කරන්න", + "status.open": "මෙම තත්ත්වය පුළුල් කරන්න", + "status.pin": "පැතිකඩ මත අමුණන්න", + "status.pinned": "පින් කළ දත", "status.read_more": "තව කියවන්න", - "status.reblog": "Boost", - "status.reblog_private": "Boost with original visibility", - "status.reblogged_by": "{name} boosted", - "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", - "status.redraft": "Delete & re-draft", + "status.reblog": "බූස්ට් කරන්න", + "status.reblog_private": "මුල් දෘශ්‍යතාව සමඟ වැඩි කරන්න", + "status.reblogged_by": "{name} වැඩි කරන ලදී", + "status.reblogs.empty": "තාම කවුරුත් මේ toot එක boost කරලා නැහැ. යමෙකු එසේ කළ විට, ඔවුන් මෙහි පෙන්වනු ඇත.", + "status.redraft": "මකන්න සහ නැවත කෙටුම්පත", "status.remove_bookmark": "පොත්යොමුව ඉවත් කරන්න", "status.reply": "පිළිතුරු", - "status.replyAll": "Reply to thread", + "status.replyAll": "ත්‍රෙඩ් එකට පිළිතුරු දෙන්න", "status.report": "@{name} වාර්තා කරන්න", "status.sensitive_warning": "සංවේදී අන්තර්ගතයකි", "status.share": "බෙදාගන්න", + "status.show_filter_reason": "Show anyway", "status.show_less": "අඩුවෙන් පෙන්වන්න", - "status.show_less_all": "Show less for all", + "status.show_less_all": "සියල්ලටම අඩුවෙන් පෙන්වන්න", "status.show_more": "තව පෙන්වන්න", - "status.show_more_all": "Show more for all", - "status.show_thread": "Show thread", - "status.uncached_media_warning": "Not available", - "status.unmute_conversation": "Unmute conversation", - "status.unpin": "Unpin from profile", - "suggestions.dismiss": "Dismiss suggestion", - "suggestions.header": "You might be interested in…", - "tabs_bar.federated_timeline": "Federated", + "status.show_more_all": "සියල්ල සඳහා තවත් පෙන්වන්න", + "status.show_thread": "නූල් පෙන්වන්න", + "status.uncached_media_warning": "ලද නොහැක", + "status.unmute_conversation": "සංවාදය නිහඬ නොකරන්න", + "status.unpin": "පැතිකඩෙන් ඉවත් කරන්න", + "suggestions.dismiss": "යෝජනාව ඉවත ලන්න", + "suggestions.header": "ඔබ…ගැන උනන්දු විය හැකිය", + "tabs_bar.federated_timeline": "ෆෙඩරල්", "tabs_bar.home": "මුල් පිටුව", "tabs_bar.local_timeline": "ස්ථානීය", "tabs_bar.notifications": "දැනුම්දීම්", "tabs_bar.search": "සොයන්න", - "time_remaining.days": "{number, plural, one {# day} other {# days}} left", - "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", - "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", - "time_remaining.moments": "Moments remaining", - "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left", - "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.", - "timeline_hint.resources.followers": "Followers", - "timeline_hint.resources.follows": "Follows", - "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", - "trends.trending_now": "Trending now", - "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", - "units.short.billion": "{count}B", - "units.short.million": "{count}M", - "units.short.thousand": "{count}K", + "time_remaining.days": "{number, plural, one {# දින} other {# දින}} අත්හැරියා", + "time_remaining.hours": "{number, plural, one {# පැය} other {# පැය}} අත්හැරියා", + "time_remaining.minutes": "{number, plural, one {විනාඩි #} other {# මිනිත්තු}} අත්හැරියා", + "time_remaining.moments": "ඉතිරිව ඇති මොහොත", + "time_remaining.seconds": "{number, plural, one {# දෙවැනි} other {# තත්පර}} අත්හැරියා", + "timeline_hint.remote_resource_not_displayed": "වෙනත් සේවාදායකයන්ගෙන් {resource} දර්ශනය නොවේ.", + "timeline_hint.resources.followers": "අනුගාමිකයින්", + "timeline_hint.resources.follows": "පහත සඳහන්", + "timeline_hint.resources.statuses": "පැරණි දත්", + "trends.counter_by_accounts": "{count, plural, one {{counter} පුද්ගලයා} other {{counter} මහජන}} කතා කරනවා", + "trends.trending_now": "දැන් ප්‍රවණතාවය", + "ui.beforeunload": "ඔබ Mastodon හැර ගියහොත් ඔබේ කෙටුම්පත නැති වනු ඇත.", + "units.short.billion": "{count}බී", + "units.short.million": "{count}එම්", + "units.short.thousand": "{count}කි", "upload_area.title": "උඩුගත කිරීමට ඇද දමන්න", - "upload_button.label": "Add images, a video or an audio file", - "upload_error.limit": "ගොනුව උඩුගත කළ හැකි සීමාව ඉක්මවා ඇත.", - "upload_error.poll": "File upload not allowed with polls.", - "upload_form.audio_description": "Describe for people with hearing loss", - "upload_form.description": "Describe for the visually impaired", - "upload_form.description_missing": "No description added", + "upload_button.label": "පින්තූර, වීඩියෝවක් හෝ ශ්‍රව්‍ය ගොනුවක් එක් කරන්න", + "upload_error.limit": "ගොනුව උඩුගත කළ හැකි සීමාවන් ඇත.", + "upload_error.poll": "ඡන්ද විමසීම් සමඟ ගොනු උඩුගත කිරීමට අවසර නැත.", + "upload_form.audio_description": "ශ්‍රවණාබාධ ඇති පුද්ගලයන් සඳහා විස්තර කරන්න", + "upload_form.description": "දෘශ්‍යාබාධිතයන් සඳහා විස්තර කරන්න", + "upload_form.description_missing": "විස්තරයක් එක් කර නැත", "upload_form.edit": "සංස්කරණය", - "upload_form.thumbnail": "Change thumbnail", - "upload_form.undo": "Delete", - "upload_form.video_description": "Describe for people with hearing loss or visual impairment", + "upload_form.thumbnail": "සිඟිති රුව වෙනස් කරන්න", + "upload_form.undo": "මකන්න", + "upload_form.video_description": "ශ්‍රවණාබාධ හෝ දෘශ්‍යාබාධිත පුද්ගලයන් සඳහා විස්තර කරන්න", "upload_modal.analyzing_picture": "පින්තූරය විශ්ලේෂණය කරමින්…", "upload_modal.apply": "යොදන්න", - "upload_modal.applying": "Applying…", - "upload_modal.choose_image": "පින්තුරයක් තෝරන්න", - "upload_modal.description_placeholder": "කඩිසර දුඹුරු හිවලෙක් කම්මැලි බල්ලා මතින් පනී", - "upload_modal.detect_text": "පින්තූරයෙන් පාඨ හඳුනාගන්න", + "upload_modal.applying": "…යෙදීම", + "upload_modal.choose_image": "පින්තුරයක් තෝරාගන්න", + "upload_modal.description_placeholder": "කඩිසර හා හිවලෙක් කම්මැලි බල්ලා මතින් පනී", + "upload_modal.detect_text": "පින්තූරයෙන් හඳුනාගන්න", "upload_modal.edit_media": "මාධ්‍ය සංස්කරණය", - "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", - "upload_modal.preparing_ocr": "Preparing OCR…", + "upload_modal.hint": "සියලුම සිඟිති රූ මත සැම විටම දර්ශනය වන නාභි ලක්ෂ්‍යය තේරීමට පෙරදසුනෙහි රවුම ක්ලික් කරන්න හෝ අදින්න.", + "upload_modal.preparing_ocr": "OCR…සූදානම් කරමින්", "upload_modal.preview_label": "පෙරදසුන ({ratio})", "upload_progress.label": "උඩුගත වෙමින්...", - "video.close": "දෘශ්‍යකය වසන්න", + "video.close": "දෘශ්‍යයක් වසන්න", "video.download": "ගොනුව බාගන්න", "video.exit_fullscreen": "පූර්ණ තිරයෙන් පිටවන්න", - "video.expand": "Expand video", + "video.expand": "වීඩියෝව දිග හරින්න", "video.fullscreen": "පූර්ණ තිරය", - "video.hide": "දෘශ්‍යකය සඟවන්න", - "video.mute": "Mute sound", + "video.hide": "දෘශ්‍ය‍ය සඟවන්න", + "video.mute": "ශබ්දය නිශ්ශබ්ද කරන්න", "video.pause": "විරාමය", "video.play": "ධාවනය", - "video.unmute": "Unmute sound" + "video.unmute": "ශබ්දය නිශ්ශබ්ද කරන්න" } diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 861722c2f..46873d31c 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -268,7 +268,7 @@ "lightbox.next": "Ďalšie", "lightbox.previous": "Predchádzajúci", "limited_account_hint.action": "Ukáž profil aj tak", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "Tento profil bol ukrytý správcami tvojho servera.", "lists.account.add": "Pridaj do zoznamu", "lists.account.remove": "Odober zo zoznamu", "lists.delete": "Vymaž list", @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Nastavenia", "navigation_bar.public_timeline": "Federovaná časová os", "navigation_bar.security": "Zabezbečenie", + "notification.admin.report": "{name} nahlásil/a {target}", "notification.admin.sign_up": "{name} sa zaregistroval/a", "notification.favourite": "{name} si obľúbil/a tvoj príspevok", "notification.follow": "{name} ťa začal/a následovať", @@ -326,6 +327,7 @@ "notification.update": "{name} upravil/a príspevok", "notifications.clear": "Vyčisti oboznámenia", "notifications.clear_confirmation": "Naozaj chceš nenávratne prečistiť všetky tvoje oboznámenia?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "Nové registrácie:", "notifications.column_settings.alert": "Oboznámenia na ploche", "notifications.column_settings.favourite": "Obľúbené:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Nesleduj @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Hľadaj", "search_popout.search_format": "Pokročilé vyhľadávanie", "search_popout.tips.full_text": "Vráti jednoduchý textový výpis príspevkov ktoré si napísal/a, ktoré si obľúbil/a, povýšil/a, alebo aj tých, v ktorých si bol/a spomenutý/á, a potom všetky zadaniu odpovedajúce prezývky, mená a haštagy.", @@ -461,6 +468,7 @@ "status.embed": "Vložiť", "status.favourite": "Páči sa mi", "status.filtered": "Filtrované", + "status.hide": "Hide toot", "status.history.created": "{name} vytvoril/a {date}", "status.history.edited": "{name} upravil/a {date}", "status.load_more": "Ukáž viac", @@ -484,6 +492,7 @@ "status.report": "Nahlás @{name}", "status.sensitive_warning": "Chúlostivý obsah", "status.share": "Zdieľaj", + "status.show_filter_reason": "Show anyway", "status.show_less": "Zobraz menej", "status.show_less_all": "Všetkým ukáž menej", "status.show_more": "Ukáž viac", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index b094abfff..894824413 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Nastavitve", "navigation_bar.public_timeline": "Združena časovnica", "navigation_bar.security": "Varnost", + "notification.admin.report": "{name} je prijavil/a {target}", "notification.admin.sign_up": "{name} se je vpisal/a", "notification.favourite": "{name} je vzljubil/a vaš status", "notification.follow": "{name} vam sledi", @@ -326,6 +327,7 @@ "notification.update": "{name} je uredil(a) objavo", "notifications.clear": "Počisti obvestila", "notifications.clear_confirmation": "Ali ste prepričani, da želite trajno izbrisati vsa vaša obvestila?", + "notifications.column_settings.admin.report": "Nove prijave:", "notifications.column_settings.admin.sign_up": "Novi vpisi:", "notifications.column_settings.alert": "Namizna obvestila", "notifications.column_settings.favourite": "Priljubljeni:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Hvala za poročilo, bomo preverili.", "report.unfollow": "Ne sledi več @{name}", "report.unfollow_explanation": "Temu računu sledite. Da ne boste več videli njegovih objav v svojem domačem viru, mu prenehajte slediti.", + "report_notification.attached_statuses": "{count, plural, one {{count} objava pripeta} two {{count} objavi pripeti} few {{count} objave pripete} other {{count} objav pripetih}}", + "report_notification.categories.other": "Drugo", + "report_notification.categories.spam": "Neželeno", + "report_notification.categories.violation": "Kršitev pravila", + "report_notification.open": "Odpri prijavo", "search.placeholder": "Iskanje", "search_popout.search_format": "Napredna oblika iskanja", "search_popout.tips.full_text": "Enostavno besedilo vrne objave, ki ste jih napisali, vzljubili, izpostavili ali ste bili v njih omenjeni, kot tudi ujemajoča se uporabniška imena, prikazna imena in ključnike.", @@ -461,6 +468,7 @@ "status.embed": "Vgradi", "status.favourite": "Priljubljen", "status.filtered": "Filtrirano", + "status.hide": "Hide toot", "status.history.created": "{name}: ustvarjeno {date}", "status.history.edited": "{name}: urejeno {date}", "status.load_more": "Naloži več", @@ -484,6 +492,7 @@ "status.report": "Prijavi @{name}", "status.sensitive_warning": "Občutljiva vsebina", "status.share": "Deli", + "status.show_filter_reason": "Show anyway", "status.show_less": "Prikaži manj", "status.show_less_all": "Prikaži manj za vse", "status.show_more": "Prikaži več", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index ba354e98b..6bc84ae0c 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Parapëlqime", "navigation_bar.public_timeline": "Rrjedhë kohore të federuarish", "navigation_bar.security": "Siguri", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} u regjistrua", "notification.favourite": "{name} pëlqeu mesazhin tuaj", "notification.follow": "{name} zuri t’ju ndjekë", @@ -326,6 +327,7 @@ "notification.update": "{name} përpunoi një postim", "notifications.clear": "Spastroji njoftimet", "notifications.clear_confirmation": "Jeni i sigurt se doni të spastrohen përgjithmonë krejt njoftimet tuaja?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "Regjistrime të reja:", "notifications.column_settings.alert": "Njoftime desktopi", "notifications.column_settings.favourite": "Të parapëlqyer:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Faleminderit për raportimin, do ta shohim.", "report.unfollow": "Mos e ndiq më @{name}", "report.unfollow_explanation": "Po e ndiqni këtë llogari. Për të mos parë më postimet e tyre te prurja juaj e kreut, ndalni ndjekjen e tyre.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Kërkoni", "search_popout.search_format": "Format kërkimi të mëtejshëm", "search_popout.tips.full_text": "Kërkimi për tekst të thjeshtë përgjigjet me mesazhe që keni shkruar, parapëlqyer, përforcuar, ose ku jeni përmendur, si dhe emra përdoruesish, emra ekrani dhe hashtag-ë që kanë përputhje me termin e kërkimit.", @@ -461,6 +468,7 @@ "status.embed": "Trupëzim", "status.favourite": "I parapëlqyer", "status.filtered": "I filtruar", + "status.hide": "Hide toot", "status.history.created": "{name} u krijua më {date}", "status.history.edited": "{name} u përpunua më {date}", "status.load_more": "Ngarko më tepër", @@ -484,6 +492,7 @@ "status.report": "Raportojeni @{name}", "status.sensitive_warning": "Lëndë rezervat", "status.share": "Ndajeni me të tjerë", + "status.show_filter_reason": "Show anyway", "status.show_less": "Shfaq më pak", "status.show_less_all": "Shfaq më pak për të tërë", "status.show_more": "Shfaq më tepër", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 498cbf963..4dedb58bb 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Podešavanja", "navigation_bar.public_timeline": "Federisana lajna", "navigation_bar.security": "Security", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} je stavio Vaš status kao omiljeni", "notification.follow": "{name} Vas je zapratio", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Očisti obaveštenja", "notifications.clear_confirmation": "Da li ste sigurno da trajno želite da očistite Vaša obaveštenja?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Obaveštenja na radnoj površini", "notifications.column_settings.favourite": "Omiljeni:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Pretraga", "search_popout.search_format": "Napredni format pretrage", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Ugradi na sajt", "status.favourite": "Omiljeno", "status.filtered": "Filtered", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Učitaj još", @@ -484,6 +492,7 @@ "status.report": "Prijavi korisnika @{name}", "status.sensitive_warning": "Osetljiv sadržaj", "status.share": "Podeli", + "status.show_filter_reason": "Show anyway", "status.show_less": "Prikaži manje", "status.show_less_all": "Show less for all", "status.show_more": "Prikaži više", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 1e6ec2086..42ae479da 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Подешавања", "navigation_bar.public_timeline": "Здружена временска линија", "navigation_bar.security": "Безбедност", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} је ставио/ла Ваш статус као омиљени", "notification.follow": "{name} Вас је запратио/ла", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Очисти обавештења", "notifications.clear_confirmation": "Да ли сте сигурно да трајно желите да очистите Ваша обавештења?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Обавештења на радној површини", "notifications.column_settings.favourite": "Омиљени:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Претрага", "search_popout.search_format": "Напредни формат претраге", "search_popout.tips.full_text": "Једноставан текст враћа статусе које сте написали, фаворизовали, подржали или били поменути, као и подударање корисничких имена, приказаних имена, и тараба.", @@ -461,6 +468,7 @@ "status.embed": "Угради на сајт", "status.favourite": "Омиљено", "status.filtered": "Филтрирано", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Учитај још", @@ -484,6 +492,7 @@ "status.report": "Пријави корисника @{name}", "status.sensitive_warning": "Осетљив садржај", "status.share": "Подели", + "status.show_filter_reason": "Show anyway", "status.show_less": "Прикажи мање", "status.show_less_all": "Прикажи мање за све", "status.show_more": "Прикажи више", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 46baa722e..d8d2c6720 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Inställningar", "navigation_bar.public_timeline": "Federerad tidslinje", "navigation_bar.security": "Säkerhet", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} registrerade sig", "notification.favourite": "{name} favoriserade din status", "notification.follow": "{name} följer dig", @@ -326,6 +327,7 @@ "notification.update": "{name} redigerade ett inlägg", "notifications.clear": "Rensa aviseringar", "notifications.clear_confirmation": "Är du säker på att du vill rensa alla dina aviseringar permanent?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "Nya registreringar:", "notifications.column_settings.alert": "Skrivbordsaviseringar", "notifications.column_settings.favourite": "Favoriter:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Tack för att du rapporterar, vi kommer att titta på detta.", "report.unfollow": "Sluta följ @{username}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Sök", "search_popout.search_format": "Avancerat sökformat", "search_popout.tips.full_text": "Enkel text returnerar statusar där du har skrivit, favoriserat, knuffat eller nämnts samt med matchande användarnamn, visningsnamn och hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Bädda in", "status.favourite": "Favorit", "status.filtered": "Filtrerat", + "status.hide": "Hide toot", "status.history.created": "{name} skapade {date}", "status.history.edited": "{name} redigerade {date}", "status.load_more": "Ladda fler", @@ -484,6 +492,7 @@ "status.report": "Rapportera @{name}", "status.sensitive_warning": "Känsligt innehåll", "status.share": "Dela", + "status.show_filter_reason": "Show anyway", "status.show_less": "Visa mindre", "status.show_less_all": "Visa mindre för alla", "status.show_more": "Visa mer", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index 658a3318e..13cb39de8 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Search", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", @@ -484,6 +492,7 @@ "status.report": "Report @{name}", "status.sensitive_warning": "Sensitive content", "status.share": "Share", + "status.show_filter_reason": "Show anyway", "status.show_less": "Show less", "status.show_less_all": "Show less for all", "status.show_more": "Show more", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 68b11b61b..6491ff7b7 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "விருப்பங்கள்", "navigation_bar.public_timeline": "கூட்டாட்சி காலக்கெடு", "navigation_bar.security": "பத்திரம்", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} ஆர்வம் கொண்டவர், உங்கள் நிலை", "notification.follow": "{name} உங்களைப் பின்தொடர்கிறார்", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "அறிவிப்புகளை அழிக்கவும்", "notifications.clear_confirmation": "உங்கள் எல்லா அறிவிப்புகளையும் நிரந்தரமாக அழிக்க விரும்புகிறீர்களா?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "டெஸ்க்டாப் அறிவிப்புகள்", "notifications.column_settings.favourite": "பிடித்தவை:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "தேடு", "search_popout.search_format": "மேம்பட்ட தேடல் வடிவம்", "search_popout.tips.full_text": "எளிமையான உரை நீங்கள் எழுதப்பட்ட, புகழ், அதிகரித்தது, அல்லது குறிப்பிட்டுள்ள, அதே போல் பயனர் பெயர்கள், காட்சி பெயர்கள், மற்றும் ஹேஸ்டேகைகளை கொண்டுள்ளது என்று நிலைகளை கொடுக்கிறது.", @@ -461,6 +468,7 @@ "status.embed": "கிடத்து", "status.favourite": "விருப்பத்துக்குகந்த", "status.filtered": "வடிகட்டு", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "அதிகமாய் ஏற்று", @@ -484,6 +492,7 @@ "status.report": "@{name} மீது புகாரளி", "status.sensitive_warning": "உணர்திறன் உள்ளடக்கம்", "status.share": "பங்கிடு", + "status.show_filter_reason": "Show anyway", "status.show_less": "குறைவாகக் காண்பி", "status.show_less_all": "அனைத்தையும் குறைவாக காட்டு", "status.show_more": "மேலும் காட்ட", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 89683cb63..268ce7ef7 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Search", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", @@ -484,6 +492,7 @@ "status.report": "Report @{name}", "status.sensitive_warning": "Sensitive content", "status.share": "Share", + "status.show_filter_reason": "Show anyway", "status.show_less": "Show less", "status.show_less_all": "Show less for all", "status.show_more": "Show more", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index c84ecd00d..f2312ee12 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "ప్రాధాన్యతలు", "navigation_bar.public_timeline": "సమాఖ్య కాలక్రమం", "navigation_bar.security": "భద్రత", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} మీ స్టేటస్ ను ఇష్టపడ్డారు", "notification.follow": "{name} మిమ్మల్ని అనుసరిస్తున్నారు", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "ప్రకటనలను తుడిచివేయు", "notifications.clear_confirmation": "మీరు మీ అన్ని నోటిఫికేషన్లను శాశ్వతంగా తొలగించాలనుకుంటున్నారా?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "డెస్క్టాప్ నోటిఫికేషన్లు", "notifications.column_settings.favourite": "ఇష్టపడినవి:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "శోధన", "search_popout.search_format": "అధునాతన శోధన ఆకృతి", "search_popout.tips.full_text": "సాధారణ వచనం మీరు వ్రాసిన, ఇష్టపడే, పెంచబడిన లేదా పేర్కొనబడిన, అలాగే యూజర్పేర్లు, ప్రదర్శన పేర్లు, మరియు హ్యాష్ట్యాగ్లను నమోదు చేసిన హోదాలను అందిస్తుంది.", @@ -461,6 +468,7 @@ "status.embed": "ఎంబెడ్", "status.favourite": "ఇష్టపడు", "status.filtered": "వడకట్టబడిన", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "మరిన్ని లోడ్ చేయి", @@ -484,6 +492,7 @@ "status.report": "@{name}పై ఫిర్యాదుచేయు", "status.sensitive_warning": "సున్నితమైన కంటెంట్", "status.share": "పంచుకోండి", + "status.show_filter_reason": "Show anyway", "status.show_less": "తక్కువ చూపించు", "status.show_less_all": "అన్నిటికీ తక్కువ చూపించు", "status.show_more": "ఇంకా చూపించు", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index b4e85be06..85444d9d8 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "การกำหนดลักษณะ", "navigation_bar.public_timeline": "เส้นเวลาที่ติดต่อกับภายนอก", "navigation_bar.security": "ความปลอดภัย", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} ได้ลงทะเบียน", "notification.favourite": "{name} ได้ชื่นชอบโพสต์ของคุณ", "notification.follow": "{name} ได้ติดตามคุณ", @@ -326,6 +327,7 @@ "notification.update": "{name} ได้แก้ไขโพสต์", "notifications.clear": "ล้างการแจ้งเตือน", "notifications.clear_confirmation": "คุณแน่ใจหรือไม่ว่าต้องการล้างการแจ้งเตือนทั้งหมดของคุณอย่างถาวร?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "การลงทะเบียนใหม่:", "notifications.column_settings.alert": "การแจ้งเตือนบนเดสก์ท็อป", "notifications.column_settings.favourite": "รายการโปรด:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "ขอบคุณสำหรับการรายงาน เราจะตรวจสอบสิ่งนี้", "report.unfollow": "เลิกติดตาม @{name}", "report.unfollow_explanation": "คุณกำลังติดตามบัญชีนี้ เพื่อไม่ให้เห็นโพสต์ของเขาในฟีดหน้าแรกของคุณอีกต่อไป เลิกติดตามเขา", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "รายงานที่เปิด", "search.placeholder": "ค้นหา", "search_popout.search_format": "รูปแบบการค้นหาขั้นสูง", "search_popout.tips.full_text": "ข้อความแบบง่ายส่งคืนโพสต์ที่คุณได้เขียน ชื่นชอบ ดัน หรือได้รับการกล่าวถึง ตลอดจนชื่อผู้ใช้, ชื่อที่แสดง และแฮชแท็กที่ตรงกัน", @@ -461,6 +468,7 @@ "status.embed": "ฝัง", "status.favourite": "ชื่นชอบ", "status.filtered": "กรองอยู่", + "status.hide": "Hide toot", "status.history.created": "{name} ได้สร้างเมื่อ {date}", "status.history.edited": "{name} ได้แก้ไขเมื่อ {date}", "status.load_more": "โหลดเพิ่มเติม", @@ -484,6 +492,7 @@ "status.report": "รายงาน @{name}", "status.sensitive_warning": "เนื้อหาที่ละเอียดอ่อน", "status.share": "แบ่งปัน", + "status.show_filter_reason": "Show anyway", "status.show_less": "แสดงน้อยลง", "status.show_less_all": "แสดงน้อยลงทั้งหมด", "status.show_more": "แสดงเพิ่มเติม", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index c813ee1c2..f062d81ce 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Tercihler", "navigation_bar.public_timeline": "Federe zaman tüneli", "navigation_bar.security": "Güvenlik", + "notification.admin.report": "{name}, {target} kişisini bildirdi", "notification.admin.sign_up": "{name} kaydoldu", "notification.favourite": "{name} gönderini favorilerine ekledi", "notification.follow": "{name} seni takip etti", @@ -326,6 +327,7 @@ "notification.update": "{name} bir gönderiyi düzenledi", "notifications.clear": "Bildirimleri temizle", "notifications.clear_confirmation": "Tüm bildirimlerinizi kalıcı olarak temizlemek ister misiniz?", + "notifications.column_settings.admin.report": "Yeni bildirimler:", "notifications.column_settings.admin.sign_up": "Yeni kayıtlar:", "notifications.column_settings.alert": "Masaüstü bildirimleri", "notifications.column_settings.favourite": "Favoriler:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Bildirdiğiniz için teşekkürler, konuyu araştıracağız.", "report.unfollow": "@{name} takip etmeyi bırak", "report.unfollow_explanation": "Bu hesabı takip ediyorsunuz. Ana akışınızda gönderilerini görmek istemiyorsanız, onu takip etmeyi bırakın.", + "report_notification.attached_statuses": "{count, plural, one {{count} gönderi} other {{count} gönderi}} eklendi", + "report_notification.categories.other": "Diğer", + "report_notification.categories.spam": "İstenmeyen", + "report_notification.categories.violation": "Kural ihlali", + "report_notification.open": "Bildirim aç", "search.placeholder": "Ara", "search_popout.search_format": "Gelişmiş arama biçimi", "search_popout.tips.full_text": "Basit metin yazdığınız, beğendiğiniz, teşvik ettiğiniz veya söz edilen gönderilerin yanı sıra kullanıcı adlarını, görünen adları ve hashtag'leri eşleştiren gönderileri de döndürür.", @@ -461,6 +468,7 @@ "status.embed": "Gömülü", "status.favourite": "Favorilerine ekle", "status.filtered": "Filtrelenmiş", + "status.hide": "Hide toot", "status.history.created": "{name} oluşturdu {date}", "status.history.edited": "{name} düzenledi {date}", "status.load_more": "Daha fazlasını yükle", @@ -484,6 +492,7 @@ "status.report": "@{name} adlı kişiyi bildir", "status.sensitive_warning": "Hassas içerik", "status.share": "Paylaş", + "status.show_filter_reason": "Show anyway", "status.show_less": "Daha az göster", "status.show_less_all": "Hepsi için daha az göster", "status.show_more": "Daha fazlasını göster", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index 862325f1c..6ace5e763 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Caylaw", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Хәвефсезлек", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Эзләү", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", @@ -484,6 +492,7 @@ "status.report": "Report @{name}", "status.sensitive_warning": "Sensitive content", "status.share": "Уртаклашу", + "status.show_filter_reason": "Show anyway", "status.show_less": "Әзрәк күрсәтү", "status.show_less_all": "Show less for all", "status.show_more": "Күбрәк күрсәтү", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index 658a3318e..13cb39de8 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Search", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", @@ -484,6 +492,7 @@ "status.report": "Report @{name}", "status.sensitive_warning": "Sensitive content", "status.share": "Share", + "status.show_filter_reason": "Show anyway", "status.show_less": "Show less", "status.show_less_all": "Show less for all", "status.show_more": "Show more", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 32d5dce84..3eeda561f 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Налаштування", "navigation_bar.public_timeline": "Глобальна стрічка", "navigation_bar.security": "Безпека", + "notification.admin.report": "Скарга від {name} на {target}", "notification.admin.sign_up": "{name} приєдналися", "notification.favourite": "{name} вподобали ваш допис", "notification.follow": "{name} підписалися на вас", @@ -326,6 +327,7 @@ "notification.update": "{name} змінює допис", "notifications.clear": "Очистити сповіщення", "notifications.clear_confirmation": "Ви впевнені, що хочете назавжди видалити всі сповіщення?", + "notifications.column_settings.admin.report": "Нові скарги:", "notifications.column_settings.admin.sign_up": "Нові реєстрації:", "notifications.column_settings.alert": "Сповіщення на комп'ютері", "notifications.column_settings.favourite": "Вподобане:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Дякуємо за скаргу, ми розглянемо її.", "report.unfollow": "Відписатися від @{name}", "report.unfollow_explanation": "Ви підписані на цього користувача. Щоб більше не бачити їхні дописи у вашій стрічці, відпишіться від них.", + "report_notification.attached_statuses": "{count, plural, one {{count} допис} few {{count} дописи} other {{counter} дописів}} прикріплено", + "report_notification.categories.other": "Інше", + "report_notification.categories.spam": "Спам", + "report_notification.categories.violation": "Порушення правил", + "report_notification.open": "Відкрити скаргу", "search.placeholder": "Пошук", "search_popout.search_format": "Розширений формат пошуку", "search_popout.tips.full_text": "Пошук за текстом знаходить статуси, які ви написали, вподобали, передмухнули, або в яких вас згадували. Також він знаходить імена користувачів, реальні імена та хештеґи.", @@ -461,6 +468,7 @@ "status.embed": "Вбудувати", "status.favourite": "Подобається", "status.filtered": "Відфільтровано", + "status.hide": "Hide toot", "status.history.created": "{name} створює {date}", "status.history.edited": "{name} змінює {date}", "status.load_more": "Завантажити більше", @@ -484,6 +492,7 @@ "status.report": "Поскаржитися на @{name}", "status.sensitive_warning": "Делікатний зміст", "status.share": "Поділитися", + "status.show_filter_reason": "Show anyway", "status.show_less": "Згорнути", "status.show_less_all": "Показувати менше для всіх", "status.show_more": "Розгорнути", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index d4daaceb3..9485dbabf 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "ترجیحات", "navigation_bar.public_timeline": "وفاقی ٹائم لائن", "navigation_bar.security": "سیکورٹی", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} آپ کی پیروی کی", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "اطلاعات ہٹائیں", "notifications.clear_confirmation": "کیا آپ واقعی اپنی تمام اطلاعات کو صاف کرنا چاہتے ہیں؟", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "ڈیسک ٹاپ اطلاعات", "notifications.column_settings.favourite": "پسندیدہ:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "Search", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Load more", @@ -484,6 +492,7 @@ "status.report": "Report @{name}", "status.sensitive_warning": "Sensitive content", "status.share": "Share", + "status.show_filter_reason": "Show anyway", "status.show_less": "Show less", "status.show_less_all": "Show less for all", "status.show_more": "Show more", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index e4e7c233b..553a41f2c 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Cài đặt", "navigation_bar.public_timeline": "Thế giới", "navigation_bar.security": "Bảo mật", + "notification.admin.report": "{name} đã báo cáo {target}", "notification.admin.sign_up": "{name} đăng ký máy chủ của bạn", "notification.favourite": "{name} thích tút của bạn", "notification.follow": "{name} theo dõi bạn", @@ -326,6 +327,7 @@ "notification.update": "{name} đã viết lại một tút", "notifications.clear": "Xóa hết thông báo", "notifications.clear_confirmation": "Bạn thật sự muốn xóa vĩnh viễn tất cả thông báo của mình?", + "notifications.column_settings.admin.report": "Báo cáo mới:", "notifications.column_settings.admin.sign_up": "Lượt đăng ký mới:", "notifications.column_settings.alert": "Thông báo trên máy tính", "notifications.column_settings.favourite": "Lượt thích:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Cảm ơn đã báo cáo, chúng tôi sẽ xem xét kỹ.", "report.unfollow": "Ngưng theo dõi @{name}", "report.unfollow_explanation": "Bạn đang theo dõi người này. Để không thấy tút của họ trong bảng tin nữa, hãy ngưng theo dõi.", + "report_notification.attached_statuses": "{count, plural, other {{count} tút}} đính kèm", + "report_notification.categories.other": "Khác", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Vi phạm quy tắc", + "report_notification.open": "Mở báo cáo", "search.placeholder": "Tìm kiếm", "search_popout.search_format": "Gợi ý", "search_popout.tips.full_text": "Nội dung trả về bao gồm những tút mà bạn đã viết, thích, đăng lại hoặc những tút có nhắc đến bạn. Bạn cũng có thể tìm địa chỉ người dùng, tên hiển thị và hashtag.", @@ -461,6 +468,7 @@ "status.embed": "Nhúng", "status.favourite": "Thích", "status.filtered": "Bộ lọc", + "status.hide": "Hide toot", "status.history.created": "{name} tạo lúc {date}", "status.history.edited": "{name} sửa lúc {date}", "status.load_more": "Tải thêm", @@ -484,6 +492,7 @@ "status.report": "Báo cáo @{name}", "status.sensitive_warning": "Nhạy cảm", "status.share": "Chia sẻ", + "status.show_filter_reason": "Show anyway", "status.show_less": "Thu gọn", "status.show_less_all": "Thu gọn toàn bộ", "status.show_more": "Xem thêm", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index c6528fbe7..7f1965401 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", "notification.follow": "ⵉⴹⴼⴼⴰⵔ ⴽ {name}", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "ⵙⴼⴹ ⵜⵉⵏⵖⵎⵉⵙⵉⵏ", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "ⵔⵣⵓ", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", @@ -461,6 +468,7 @@ "status.embed": "Embed", "status.favourite": "Favourite", "status.filtered": "Filtered", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "ⵙⵙⵉⵍⵉ ⵓⴳⴳⴰⵔ", @@ -484,6 +492,7 @@ "status.report": "Report @{name}", "status.sensitive_warning": "Sensitive content", "status.share": "ⴱⴹⵓ", + "status.show_filter_reason": "Show anyway", "status.show_less": "ⵙⵎⴰⵍ ⴷⵔⵓⵙ", "status.show_less_all": "ⵙⵎⴰⵍ ⴷⵔⵓⵙ ⵉ ⵎⴰⵕⵕⴰ", "status.show_more": "ⵙⵎⴰⵍ ⵓⴳⴳⴰⵔ", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index a7bf96f9e..e92227f72 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "首选项", "navigation_bar.public_timeline": "跨站公共时间轴", "navigation_bar.security": "安全", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} 注册了", "notification.favourite": "{name} 喜欢了你的嘟文", "notification.follow": "{name} 开始关注你", @@ -326,6 +327,7 @@ "notification.update": "{name} 编辑了嘟文", "notifications.clear": "清空通知列表", "notifications.clear_confirmation": "你确定要永久清空通知列表吗?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "新注册:", "notifications.column_settings.alert": "桌面通知", "notifications.column_settings.favourite": "喜欢:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "感谢提交举报,我们将会进行处理。", "report.unfollow": "取消关注 @{name}", "report.unfollow_explanation": "你正在关注此账户。如果要想在你的主页上不再看到他们的帖子,取消对他们的关注即可。", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "其他", + "report_notification.categories.spam": "骚扰", + "report_notification.categories.violation": "违反规则", + "report_notification.open": "展开报告", "search.placeholder": "搜索", "search_popout.search_format": "高级搜索格式", "search_popout.tips.full_text": "输入关键词检索所有你发送、喜欢、转嘟过或提及到你的帖子,以及其他用户公开的用户名、昵称和话题标签。", @@ -461,6 +468,7 @@ "status.embed": "嵌入", "status.favourite": "喜欢", "status.filtered": "已过滤", + "status.hide": "Hide toot", "status.history.created": "{name} 创建于 {date}", "status.history.edited": "{name} 编辑于 {date}", "status.load_more": "加载更多", @@ -484,6 +492,7 @@ "status.report": "举报 @{name}", "status.sensitive_warning": "敏感内容", "status.share": "分享", + "status.show_filter_reason": "Show anyway", "status.show_less": "隐藏内容", "status.show_less_all": "隐藏全部内容", "status.show_more": "显示更多", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index d757b9daf..867ced8d5 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -18,7 +18,7 @@ "account.followers": "關注者", "account.followers.empty": "尚未有人關注這位使用者。", "account.followers_counter": "有 {count, plural,one {{counter} 個} other {{counter} 個}}關注者", - "account.following": "Following", + "account.following": "正在關注", "account.following_counter": "正在關注 {count, plural,one {{counter}}other {{counter} 人}}", "account.follows.empty": "這位使用者尚未關注任何人。", "account.follows_you": "關注你", @@ -41,12 +41,12 @@ "account.statuses_counter": "{count, plural,one {{counter} 篇}other {{counter} 篇}}文章", "account.unblock": "解除對 @{name} 的封鎖", "account.unblock_domain": "解除對域名 {domain} 的封鎖", - "account.unblock_short": "Unblock", + "account.unblock_short": "解除封鎖", "account.unendorse": "不再於個人資料頁面推薦對方", "account.unfollow": "取消關注", "account.unmute": "取消 @{name} 的靜音", "account.unmute_notifications": "取消來自 @{name} 通知的靜音", - "account.unmute_short": "Unmute", + "account.unmute_short": "取消靜音", "account_note.placeholder": "按此添加備注", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -314,6 +314,7 @@ "navigation_bar.preferences": "偏好設定", "navigation_bar.public_timeline": "跨站時間軸", "navigation_bar.security": "安全", + "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} 喜歡你的文章", "notification.follow": "{name} 開始關注你", @@ -326,6 +327,7 @@ "notification.update": "{name} edited a post", "notifications.clear": "清空通知紀錄", "notifications.clear_confirmation": "你確定要清空通知紀錄嗎?", + "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "顯示桌面通知", "notifications.column_settings.favourite": "你最愛的文章:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", "search.placeholder": "搜尋", "search_popout.search_format": "高級搜索格式", "search_popout.tips.full_text": "輸入簡單的文字,搜索由你發放、收藏、轉推和提及你的文章,以及符合的使用者名稱,顯示名稱和標籤。", @@ -461,6 +468,7 @@ "status.embed": "嵌入", "status.favourite": "最愛", "status.filtered": "已過濾", + "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "載入更多", @@ -484,6 +492,7 @@ "status.report": "舉報 @{name}", "status.sensitive_warning": "敏感內容", "status.share": "分享", + "status.show_filter_reason": "Show anyway", "status.show_less": "收起", "status.show_less_all": "全部收起", "status.show_more": "展開", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 17d0b9998..b666ed02c 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -314,6 +314,7 @@ "navigation_bar.preferences": "偏好設定", "navigation_bar.public_timeline": "聯邦時間軸", "navigation_bar.security": "安全性", + "notification.admin.report": "{name} 檢舉了 {target}", "notification.admin.sign_up": "{name} 已經註冊", "notification.favourite": "{name} 把您的嘟文加入了最愛", "notification.follow": "{name} 跟隨了您", @@ -326,6 +327,7 @@ "notification.update": "{name} 編輯了嘟文", "notifications.clear": "清除通知", "notifications.clear_confirmation": "您確定要永久清除您的通知嗎?", + "notifications.column_settings.admin.report": "新檢舉報告:", "notifications.column_settings.admin.sign_up": "新註冊帳號:", "notifications.column_settings.alert": "桌面通知", "notifications.column_settings.favourite": "最愛:", @@ -431,6 +433,11 @@ "report.thanks.title_actionable": "感謝您的檢舉,我們將會著手處理。", "report.unfollow": "取消跟隨 @{name}", "report.unfollow_explanation": "您正在跟隨此帳號。如不欲於首頁時間軸再見到他們的嘟文,請取消跟隨。", + "report_notification.attached_statuses": "{count, plural, one {{count} 則} other {{count} 則}} 嘟文", + "report_notification.categories.other": "其他", + "report_notification.categories.spam": "垃圾訊息", + "report_notification.categories.violation": "違反規則", + "report_notification.open": "開啟檢舉報告", "search.placeholder": "搜尋", "search_popout.search_format": "進階搜尋格式", "search_popout.tips.full_text": "輸入簡單的文字,搜尋由您撰寫、最愛、轉嘟或提您的嘟文,以及與關鍵詞匹配的使用者名稱、帳號顯示名稱和主題標籤。", @@ -461,6 +468,7 @@ "status.embed": "內嵌", "status.favourite": "最愛", "status.filtered": "已過濾", + "status.hide": "Hide toot", "status.history.created": "{name} 於 {date} 建立", "status.history.edited": "{name} 於 {date} 修改", "status.load_more": "載入更多", @@ -484,6 +492,7 @@ "status.report": "檢舉 @{name}", "status.sensitive_warning": "敏感內容", "status.share": "分享", + "status.show_filter_reason": "Show anyway", "status.show_less": "減少顯示", "status.show_less_all": "減少顯示這類嘟文", "status.show_more": "顯示更多", diff --git a/config/locales/activerecord.es-AR.yml b/config/locales/activerecord.es-AR.yml index 8a9b75a8c..f5b8221d1 100644 --- a/config/locales/activerecord.es-AR.yml +++ b/config/locales/activerecord.es-AR.yml @@ -38,3 +38,12 @@ es-AR: email: blocked: usa un proveedor de correo electrónico no permitido unreachable: no parece existir + role_id: + elevated: no puede ser mayor que tu rol actual + user_role: + attributes: + permissions_as_keys: + dangerous: incluir permisos que no son seguros para el rol base + elevated: no se pueden incluir permisos que tu rol actual no posea + position: + elevated: no puede ser mayor que tu rol actual diff --git a/config/locales/activerecord.es-MX.yml b/config/locales/activerecord.es-MX.yml index c316a70a7..83632be43 100644 --- a/config/locales/activerecord.es-MX.yml +++ b/config/locales/activerecord.es-MX.yml @@ -21,6 +21,14 @@ es-MX: username: invalid: solo puede contener letras, números y guiones bajos reserved: está reservado + admin/webhook: + attributes: + url: + invalid: no es una URL válida + doorkeeper/application: + attributes: + website: + invalid: no es una URL válida status: attributes: reblog: diff --git a/config/locales/activerecord.es.yml b/config/locales/activerecord.es.yml index 805e6b920..8cdfcfcc0 100644 --- a/config/locales/activerecord.es.yml +++ b/config/locales/activerecord.es.yml @@ -38,3 +38,12 @@ es: email: blocked: utiliza un proveedor de correo no autorizado unreachable: no parece existir + role_id: + elevated: no puede ser mayor que tu rol actual + user_role: + attributes: + permissions_as_keys: + dangerous: incluir permisos que no son seguros para el rol base + elevated: no se pueden incluir permisos que tu rol actual no posea + position: + elevated: no puede ser mayor que tu rol actual diff --git a/config/locales/activerecord.gl.yml b/config/locales/activerecord.gl.yml index 4b039f5af..6b225137a 100644 --- a/config/locales/activerecord.gl.yml +++ b/config/locales/activerecord.gl.yml @@ -38,3 +38,12 @@ gl: email: blocked: utiliza un provedor de email non autorizado unreachable: semella que non existe + role_id: + elevated: non pode superar o teu rol actual + user_role: + attributes: + permissions_as_keys: + dangerous: inclúe permisos que non son seguros para o rol básico + elevated: non pode incluir permisos que o teu rol actual non posúe + position: + elevated: non pode superar ao teu rol actual diff --git a/config/locales/activerecord.is.yml b/config/locales/activerecord.is.yml index 75c18c6a3..25c30fe4c 100644 --- a/config/locales/activerecord.is.yml +++ b/config/locales/activerecord.is.yml @@ -38,3 +38,12 @@ is: email: blocked: notar óleyfilega tölvupóstþjónustu unreachable: virðist ekki vera til + role_id: + elevated: getur ekki verið veigameiri en núverandi hlutverk þitt + user_role: + attributes: + permissions_as_keys: + dangerous: hefur heimildir sem ekki eru öruggar fyrir grunnhlutverk + elevated: getur ekki haft heimildir sem núverandi hlutverk þitt er ekki með + position: + elevated: getur ekki verið veigameiri en núverandi hlutverk þitt diff --git a/config/locales/activerecord.it.yml b/config/locales/activerecord.it.yml index 307bd801e..53acb7d02 100644 --- a/config/locales/activerecord.it.yml +++ b/config/locales/activerecord.it.yml @@ -38,3 +38,12 @@ it: email: blocked: utilizza un provider di posta elettronica non autorizzato unreachable: non sembra esistere + role_id: + elevated: non può essere superiore al tuo ruolo attuale + user_role: + attributes: + permissions_as_keys: + dangerous: include i permessi non sicuri per il ruolo di base + elevated: non è possibile includere i permessi che il tuo ruolo attuale non possiede + position: + elevated: non può essere superiore al tuo ruolo attuale diff --git a/config/locales/activerecord.ko.yml b/config/locales/activerecord.ko.yml index 4db8d73af..7dcdad9f3 100644 --- a/config/locales/activerecord.ko.yml +++ b/config/locales/activerecord.ko.yml @@ -38,3 +38,12 @@ ko: email: blocked: 허용되지 않은 이메일 제공자입니다 unreachable: 존재하지 않는 것 같습니다 + role_id: + elevated: 당신의 현재 역할보다 높을 수 없습니다 + user_role: + attributes: + permissions_as_keys: + dangerous: 기본 역할로 사용하기에 안전하지 않은 권한을 포함하고 있습니다 + elevated: 당신의 현재 역할이 가지고 있지 않은 권한은 포함할 수 없습니다 + position: + elevated: 당신의 현재 역할보다 높을 수 없습니다 diff --git a/config/locales/activerecord.lv.yml b/config/locales/activerecord.lv.yml index 89a1fb094..db5519005 100644 --- a/config/locales/activerecord.lv.yml +++ b/config/locales/activerecord.lv.yml @@ -3,7 +3,7 @@ lv: activerecord: attributes: poll: - expires_at: Deadline + expires_at: Gala termiņš options: Izvēles user: agreement: Pakalpojuma līgums @@ -38,3 +38,12 @@ lv: email: blocked: lieto neatļautu epasta pakalpojuma sniedzēju unreachable: šķiet, ka neeksistē + role_id: + elevated: nevar būt augstāka par tavu pašreizējo lomu + user_role: + attributes: + permissions_as_keys: + dangerous: ietver atļaujas, kas nav drošas pamata lomai + elevated: nevar ietvert atļaujas, kas nepieder tavai pašreizējai lomai + position: + elevated: nevar būt augstāka par tavu pašreizējo lomu diff --git a/config/locales/activerecord.pt-BR.yml b/config/locales/activerecord.pt-BR.yml index 8b4d3439a..ad034fdbc 100644 --- a/config/locales/activerecord.pt-BR.yml +++ b/config/locales/activerecord.pt-BR.yml @@ -21,6 +21,14 @@ pt-BR: username: invalid: apenas letras, números e underlines ( "_" ) reserved: já existe + admin/webhook: + attributes: + url: + invalid: não é uma URL válida + doorkeeper/application: + attributes: + website: + invalid: não é uma URL válida status: attributes: reblog: diff --git a/config/locales/activerecord.ru.yml b/config/locales/activerecord.ru.yml index 758fe7dd4..2324b6bf9 100644 --- a/config/locales/activerecord.ru.yml +++ b/config/locales/activerecord.ru.yml @@ -38,3 +38,9 @@ ru: email: blocked: использует запрещённого провайдера эл. почты unreachable: не существует + role_id: + elevated: не может быть выше вашей текущей роли + user_role: + attributes: + permissions_as_keys: + dangerous: включить разрешения, небезопасные для базовой роли diff --git a/config/locales/activerecord.sl.yml b/config/locales/activerecord.sl.yml index 7927cb4fc..591c126d3 100644 --- a/config/locales/activerecord.sl.yml +++ b/config/locales/activerecord.sl.yml @@ -38,3 +38,12 @@ sl: email: blocked: uporablja nedovoljenega ponudnika e-poštnih storitev unreachable: kot kaže ne obstaja + role_id: + elevated: ne more biti višje od vaše trenutne vloge + user_role: + attributes: + permissions_as_keys: + dangerous: vključi pravice, ki niso varne za osnovno vlogo + elevated: ni mogoče vključiti pravic, ki jih vaša trenutna vloga ne vsebuje + position: + elevated: ne more biti višje od vaše trenutne vloge diff --git a/config/locales/activerecord.tr.yml b/config/locales/activerecord.tr.yml index ac40e0615..e9f8a9fff 100644 --- a/config/locales/activerecord.tr.yml +++ b/config/locales/activerecord.tr.yml @@ -38,3 +38,12 @@ tr: email: blocked: izin verilmeyen bir e-posta sağlayıcı kullanıyor unreachable: mevcut gözükmüyor + role_id: + elevated: mevcut rolünüzden yüksek olamaz + user_role: + attributes: + permissions_as_keys: + dangerous: temel rol için güvenli olmayan izinleri içerir + elevated: mevcut rolünüzün sahip olmadığı izinleri içeremez + position: + elevated: mevcut rolünüzden yüksek olamaz diff --git a/config/locales/activerecord.vi.yml b/config/locales/activerecord.vi.yml index 6c7c41903..aeffa3daf 100644 --- a/config/locales/activerecord.vi.yml +++ b/config/locales/activerecord.vi.yml @@ -38,3 +38,12 @@ vi: email: blocked: sử dụng dịch vụ email bị cấm unreachable: không tồn tại + role_id: + elevated: không thể cao hơn vai trò hiện tại của bạn + user_role: + attributes: + permissions_as_keys: + dangerous: bao gồm các quyền không an toàn cho vai trò cơ bản + elevated: không thể bao gồm các quyền mà vai trò hiện tại của bạn không có + position: + elevated: không thể cao hơn vai trò hiện tại của bạn diff --git a/config/locales/activerecord.zh-TW.yml b/config/locales/activerecord.zh-TW.yml index bea950ed6..554f6047d 100644 --- a/config/locales/activerecord.zh-TW.yml +++ b/config/locales/activerecord.zh-TW.yml @@ -38,3 +38,12 @@ zh-TW: email: blocked: 使用不被允許的電子信箱供應商 unreachable: 似乎不存在 + role_id: + elevated: 不能高於您目前的角色 + user_role: + attributes: + permissions_as_keys: + dangerous: 包含對基本角色不安全的權限 + elevated: 不能包含您目前角色不具備的權限 + position: + elevated: 不能高於您目前的角色 diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 01f55f344..bac1e661d 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -98,10 +98,8 @@ ar: posts_tab_heading: المنشورات posts_with_replies: المنشورات والردود roles: - admin: المدير bot: روبوت group: فريق - moderator: مُشرِف unavailable: الصفحة التعريفية غير متوفرة unfollow: إلغاء المتابعة admin: @@ -120,7 +118,6 @@ ar: avatar: الصورة الرمزية by_domain: النطاق change_email: - changed_msg: تم تعديل عنوان البريد الإلكتروني الخاص بالحساب بنجاح! current_email: عنوان البريد الإلكتروني الحالي label: تعديل عنوان البريد الإلكتروني new_email: عنوان البريد الإلكتروني الجديد @@ -199,12 +196,6 @@ ar: reset: إعادة التعيين reset_password: إعادة ضبط كلمة السر resubscribe: إعادة الاشتراك - role: الصلاحيات - roles: - admin: مدير - moderator: مشرف - staff: الفريق - user: مستخدِم search: البحث search_same_email_domain: مستخدمون آخرون لديهم نفس نطاق البريد الإلكتروني search_same_ip: مستخدِمون آخرون بنفس الـ IP @@ -665,9 +656,6 @@ ar: deletion: desc_html: السماح لأي مستخدم إغلاق حسابه title: السماح بحذف الحسابات - min_invite_role: - disabled: لا أحد - title: المستخدِمون المصرح لهم لإرسال الدعوات require_invite_text: desc_html: عندما تتطلب التسجيلات الموافقة اليدوية، جعل إدخال نص لسؤال "لماذا تريد أن تنضم؟" إلزاميا بدلاً من اختياري title: الطلب من المستخدمين الجدد إدخال سبب للتسجيل @@ -680,9 +668,6 @@ ar: show_known_fediverse_at_about_page: desc_html: عند التعطيل، يُقيّد الخط الزمني العام المرتبط من صفحة الهبوط لعرض المحتوى المحلي فقط title: إظهار الفديفرس الموحَّد في خيط المُعايَنة - show_staff_badge: - desc_html: عرض شارة الموظفين على صفحة المستخدم - title: إظهار شارة الموظفين site_description: desc_html: فقرة تمهيدية على الصفحة الأولى. صف ميزات خادوم ماستدون هذا و ما يميّزه عن الآخرين. يمكنك استخدام علامات HTML ، ولا سيما <a> و <em>. title: وصف مثيل الخادوم @@ -1026,7 +1011,6 @@ ar: title: تعديل عامل التصفية errors: invalid_context: لم تقم بتحديد أي مجال أو أنّ المجال غير صالح - invalid_irreversible: إلّا مجالات الإشعارات و الخيط الرئيسي معنية بالتصفية اللارجعية index: delete: إزالة empty: ليست لديك أية عوامل تصفية. diff --git a/config/locales/ast.yml b/config/locales/ast.yml index 1fb1cee90..f4765360e 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -70,11 +70,6 @@ ast: resend_confirmation: already_confirmed: Esti usuariu yá ta confirmáu send: Reunviar les instrucciones - role: Permisos - roles: - admin: Alministrador - moderator: Llendador - user: Usuariu statuses: Estaos title: Cuentes username: Nome d'usuariu @@ -134,10 +129,12 @@ ast: are_you_sure: "¿De xuru?" status: Estáu title: Informes + roles: + everyone: Permisos predeterminaos + permissions_count: + one: "%{count} permisu" + other: "%{count} permisos" settings: - registrations: - min_invite_role: - disabled: Naide site_description: title: Descripción del sirvidor site_title: Nome del sirvidor @@ -353,7 +350,7 @@ ast: followers: Siguidores most_recent: Lo más recién relationship: Rellación - remove_selected_follows: Dexar de siguir a los usuarios esbillaos + remove_selected_follows: Dexar de siguir a los usuarios seleicionaos status: Estáu remote_follow: acct: Introduz el nome_usuariu@dominiu dende'l que lo quies facer diff --git a/config/locales/bg.yml b/config/locales/bg.yml index 04296b342..a7b8ffc23 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -71,10 +71,8 @@ bg: posts_tab_heading: Публикации posts_with_replies: Публикации и отговори roles: - admin: Админ bot: Бот group: Група - moderator: Мод unavailable: Профилът не е наличен unfollow: Не следвай admin: @@ -90,7 +88,6 @@ bg: avatar: Аватар by_domain: Домейн change_email: - changed_msg: Имейлът на акаунта беше успешно променен! current_email: Текущ имейл label: Промяна на имейл new_email: Нов имейл diff --git a/config/locales/bn.yml b/config/locales/bn.yml index ae1ced450..bbeab8655 100644 --- a/config/locales/bn.yml +++ b/config/locales/bn.yml @@ -74,10 +74,8 @@ bn: posts_tab_heading: লেখাগুলো posts_with_replies: লেখা এবং মতামত roles: - admin: পরিচালক bot: রোবট group: গোষ্ঠী - moderator: পরিচালক unavailable: প্রোফাইল অনুপলব্ধ unfollow: অনুসরণ বাদ admin: @@ -95,7 +93,6 @@ bn: avatar: অবতার by_domain: ওয়েবসাইট/কার্যক্ষেত্র change_email: - changed_msg: নিবন্ধনের ইমেইল সঠিকভাবে পরিবর্তন হয়েছে! current_email: এখনকার ইমেইল label: ইমেইল পরিবর্তন new_email: নতুন ইমেইল @@ -160,12 +157,6 @@ bn: reset: পুনরায় সেট করুন reset_password: পাসওয়ার্ড পুনঃস্থাপন করুন resubscribe: পুনরায় সদস্যতা নিন - role: অনুমতিসমূহ - roles: - admin: পরিচালক - moderator: নিয়ামক - staff: কর্মী - user: ব্যবহারকারী search: অনুসন্ধান search_same_email_domain: একই ইমেল ডোমেন সহ অন্যান্য ব্যবহারকারীরা search_same_ip: একই IP সহ অন্যান্য ব্যবহারকারীরা diff --git a/config/locales/br.yml b/config/locales/br.yml index f7c060579..61e85d163 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -48,7 +48,6 @@ br: posts_tab_heading: Toudoù posts_with_replies: Toudoù ha respontoù roles: - admin: Merour bot: Robot group: Strollad unavailable: Profil dihegerz @@ -83,10 +82,6 @@ br: remove_header: Dilemel an talbenn reset: Adderaouekaat reset_password: Adderaouekaat ar ger-tremen - roles: - admin: Merour - moderator: Habaskaer·ez - user: Implijer·ez search: Klask suspended: Astalet title: Kontoù diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 8c8fa1ffb..680a0646f 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -83,10 +83,8 @@ ca: posts_tab_heading: Publicacions posts_with_replies: Publicacions i respostes roles: - admin: Administrador bot: Bot group: Grup - moderator: Moderador unavailable: Perfil inaccessible unfollow: Deixa de seguir admin: @@ -111,6 +109,11 @@ ca: new_email: Adreça electrònica nova submit: Canvia l'adreça electrònica title: Canvia l'adreça electrònica de %{username} + change_role: + changed_msg: Els privilegis del compte s'han canviat correctament! + label: Canvia rol + no_role: Sense rol + title: Canvia el rol per a %{username} confirm: Confirma confirmed: Confirmat confirming: Confirmant @@ -154,6 +157,7 @@ ca: active: Actiu all: Tot pending: Pendent + silenced: Limitat suspended: Suspès title: Moderació moderation_notes: Notes de moderació @@ -161,6 +165,7 @@ ca: most_recent_ip: IP més recent no_account_selected: No s'han canviat els comptes perquè no s'han seleccionat no_limits_imposed: Sense límits imposats + no_role_assigned: Cap rol assignat not_subscribed: No subscrit pending: Revisió pendent perform_full_suspension: Suspèn @@ -187,12 +192,7 @@ ca: reset: Reinicialitza reset_password: Restableix la contrasenya resubscribe: Torna a subscriure - role: Permisos - roles: - admin: Administrador - moderator: Moderador - staff: Personal - user: Usuari + role: Rol search: Cerca search_same_email_domain: Altres usuaris amb el mateix domini de correu search_same_ip: Altres usuaris amb la mateixa IP @@ -649,6 +649,64 @@ ca: unresolved: No resolt updated_at: Actualitzat view_profile: Veure perfil + roles: + add_new: Afegir rol + categories: + administration: Administració + devops: Operadors de desenvolupament + invites: Invitacions + moderation: Moderació + special: Especial + delete: Esborra + description_html: Amb rols d'usuari, pots personalitzar quines funcions i àrees de Mastodon els teus usuaris poden accedir. + edit: Editar el rol %{name} + everyone: Permisos per defecte + everyone_full_description_html: Aquest és el rol base que afecta tots els usuaris, fins i tot els que no en tenen cap d'assignat. Tots els altres rols n'hereten els permisos. + permissions_count: + one: "%{count} permís" + other: "%{count} permisos" + privileges: + administrator: Administrador + administrator_description: Els usuaris amb aquest permís passaran per alt tots els permisos + delete_user_data: Esborra dades d'usuari + delete_user_data_description: Permet als usuaris suprimir les dades d'altres usuaris sense demora + invite_users: Convida usuaris + invite_users_description: Permet als usuaris convidar persones noves al servidor + manage_announcements: Gestiona els anuncis + manage_announcements_description: Permet als usuaris gestionar els anuncis al servidor + manage_appeals: Gestiona apel·lacions + manage_appeals_description: Permet als usuaris revisar les apel·lacions contra les accions de moderació + manage_blocks: Gestiona blocs + manage_blocks_description: Permet als usuaris bloquejar proveïdors de correu electrònic i adreces IP + manage_custom_emojis: Gestiona emojis personalitzats + manage_custom_emojis_description: Permet als usuaris gestionar emojis personalitzats al servidor + manage_federation: Gestiona federació + manage_federation_description: Permet als usuaris bloquejar o permetre la federació amb altres dominis i controlar la capacitat de lliurament + manage_invites: Gestiona invitacions + manage_invites_description: Permet als usuaris veure i desactivar els enllaços d'invitació + manage_reports: Gestiona informes + manage_reports_description: Permet als usuaris revisar informes i realitzar accions de moderació contra ells + manage_roles: Gestionar rols + manage_roles_description: Permet als usuaris gestionar i assignar rols per sota dels seus + manage_rules: Gestiona normes + manage_rules_description: Permet als usuaris canviar les normes del servidor + manage_settings: Gestiona configuració + manage_settings_description: Permet als usuaris canviar la configuració del lloc + manage_taxonomies: Gestionar taxonomies + manage_taxonomies_description: Permet als usuaris revisar el contingut actual i actualitzar la configuració de l'etiqueta + manage_user_access: Gestionar l'accés dels usuaris + manage_user_access_description: Permet als usuaris desactivar l'autenticació de dos factors d'altres usuaris, canviar la seva adreça de correu electrònic i restablir la seva contrasenya + manage_users: Gestionar usuaris + manage_users_description: Permet als usuaris veure els detalls d'altres usuaris i realitzar accions de moderació contra ells + manage_webhooks: Gestionar Webhooks + manage_webhooks_description: Permet als usuaris configurar webhooks per a esdeveniments administratius + view_audit_log: Veure el registre d'auditoria + view_audit_log_description: Permet als usuaris veure un historial d'accions administratives al servidor + view_dashboard: Veure panell + view_dashboard_description: Permet als usuaris accedir al tauler i a diverses mètriques + view_devops: Operadors de desenvolupament + view_devops_description: Permet als usuaris accedir als taulers de control de Sidekiq i pgHero + title: Rols rules: add_new: Afegir norma delete: Suprimeix @@ -701,9 +759,6 @@ ca: deletion: desc_html: Permet a qualsevol usuari d'esborrar el seu compte title: Obre la supressió del compte - min_invite_role: - disabled: Ningú - title: Permet les invitacions de require_invite_text: desc_html: Quan el registre requereix aprovació manual, fer que sigui obligatori enlloc d'opcions l escriure el text de la solicitud d'invitació "Perquè vols unirte?" title: Requerir als nous usuaris omplir el text de la solicitud d'invitació @@ -716,9 +771,6 @@ ca: show_known_fediverse_at_about_page: desc_html: Quan està desactivat, restringeix la línia de temps pública enllaçada des de la pàgina inicial a mostrar només contingut local title: Inclou el contingut federat a la pàgina no autenticada de la línia de temps pública - show_staff_badge: - desc_html: Mostra una insígnia de personal en la pàgina d'usuari - title: Mostra insígnia de personal site_description: desc_html: Paràgraf introductori a la pàgina principal i en etiquetes meta. Pots utilitzar etiquetes HTML, en particular <a> i <em>. title: Descripció del servidor @@ -1124,15 +1176,24 @@ ca: public: Línies de temps públiques thread: Converses edit: + add_keyword: Afegeix paraula clau + keywords: Paraules clau title: Editar filtre errors: + deprecated_api_multiple_keywords: Aquests paràmetres no poden ser canviats des d'aquesta aplicació perquè apliquen a més d'un filtre per paraula clau. Utilitza una aplicació més recent o la interfície web. invalid_context: Cap o el context proporcionat no és vàlid - invalid_irreversible: El filtratge irreversible només funciona amb el contextos inici o notificacions index: + contexts: Filtres en %{contexts} delete: Esborra empty: No hi tens cap filtre. + expires_in: Expira en %{distance} + expires_on: Expira el %{date} + keywords: + one: "%{count} paraula clau" + other: "%{count} paraules clau" title: Filtres new: + save: Desa el nou filtre title: Afegir un nou filtre footer: developers: Desenvolupadors @@ -1251,6 +1312,8 @@ ca: copy_account_note_text: 'Aquest usuari s’ha mogut des de %{acct}, aquí estaven les teves notes prèvies sobre ell:' notification_mailer: admin: + report: + subject: "%{name} ha presentat un informe" sign_up: subject: "%{name} s'ha registrat" digest: diff --git a/config/locales/ckb.yml b/config/locales/ckb.yml index 35e826c9c..3e9f414df 100644 --- a/config/locales/ckb.yml +++ b/config/locales/ckb.yml @@ -81,10 +81,8 @@ ckb: posts_tab_heading: تووتەکان posts_with_replies: تووتەکان و وڵامەکان roles: - admin: بەڕێوەبەر bot: بۆت group: گرووپ - moderator: مۆد unavailable: پرۆفایل بەردەست نیە unfollow: بەدوادانەچو admin: @@ -103,7 +101,6 @@ ckb: avatar: وێنۆچکە by_domain: دۆمەین change_email: - changed_msg: ئیمەیڵی ئەژمێر بە سەرکەوتوویی گۆڕا! current_email: ئیمەیلی ئێستا label: گۆڕینی ئیمێڵ new_email: ئیمەیڵی نوێ @@ -182,12 +179,6 @@ ckb: reset: ڕێکخستنەوە reset_password: گەڕانەوەی تێپەڕوشە resubscribe: دووبارە ئابونەبوون - role: مۆڵەتەکان - roles: - admin: بەڕێوەبەر - moderator: بەڕێوەبەر - staff: ستاف - user: بەکارهێنەر search: گەڕان search_same_email_domain: بەکارهێنەرانی دیکە بە ئیمەیلی یەکسان search_same_ip: بەکارهێنەرانی تر بەهەمان ئای پی @@ -621,9 +612,6 @@ ckb: deletion: desc_html: ڕێ بدە بە هەر کەسێک هەژمارەکەی بسڕیتەوە title: سڕینەوەی هەژمارە بکەوە - min_invite_role: - disabled: هیچکەس - title: ڕێپێدانی بانگهێشتەکان لەلایەن require_invite_text: desc_html: کاتێک تۆمارکردنەکان پێویستیان بە ڕەزامەندی دەستی هەیە، "بۆچی دەتەوێت بەشداری بکەیت؟" نووسینی دەق ئیجبارییە نەک ئیختیاری registrations_mode: @@ -635,9 +623,6 @@ ckb: show_known_fediverse_at_about_page: desc_html: کاتێک ناچالاک کرا، هێڵی کاتی گشتی کە بەستراوەتەوە بە لاپەڕەی ئێستا سنووردار دەبن، تەنها ناوەڕۆکی ناوخۆیی پیشاندەدرێن title: نیشاندانی ڕاژەکانی دیکە لە پێشنەمایەشی ئەم ڕاژە - show_staff_badge: - desc_html: پیشاندانی هێمایەک هاوکار لە سەر پەڕەی بەکارهێنەر - title: نیشاندانی هێمای هاوکار site_description: desc_html: کورتە باسیک دەربارەی API، دەربارەی ئەوە چ شتێک دەربارەی ئەم ڕاژەی ماستۆدۆن تایبەتە یان هەر شتێکی گرینگی دیکە. دەتوانن HTML بنووسن، بەتایبەت <a> وە <em>. title: دەربارەی ئەم ڕاژە @@ -884,7 +869,6 @@ ckb: title: دەستکاری فلتەر errors: invalid_context: هیچ دەقێکی نادروست نییە یان بێ بڕوایە - invalid_irreversible: فلتەرکردنی بێ گەڕانەوە تەنها کار دەکات لەگەڵ چوارچێوەی ماڵ یان ئاگانامەکان index: delete: سڕینەوە empty: هیچ پالێوەرێکت نیە. diff --git a/config/locales/co.yml b/config/locales/co.yml index 183439447..a71c187fc 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -79,10 +79,8 @@ co: posts_tab_heading: Statuti posts_with_replies: Statuti è risposte roles: - admin: Amministratore bot: Bot group: Gruppu - moderator: Muderatore unavailable: Prufile micca dispunibule unfollow: Ùn siguità più admin: @@ -101,7 +99,6 @@ co: avatar: Ritrattu di prufile by_domain: Duminiu change_email: - changed_msg: Email di u contu cambiatu! current_email: E-mail attuale label: Mudificà l’e-mail new_email: Novu e-mail @@ -178,12 +175,6 @@ co: reset: Riinizializà reset_password: Riinizializà a chjave d’accessu resubscribe: Riabbunassi - role: Auturizazione - roles: - admin: Amministratore - moderator: Muderatore - staff: Squadra - user: Utilizatore search: Cercà search_same_email_domain: Altri utilizatori cù listessu duminiu d'e-mail search_same_ip: Altri utilizatori cù listessa IP @@ -579,9 +570,6 @@ co: deletion: desc_html: Auturizà tuttu u mondu à sguassà u so propiu contu title: Auturizà à sguassà i conti - min_invite_role: - disabled: Nimu - title: Auturizà l’invitazione da require_invite_text: desc_html: Quandu l'arregistramenti necessitanu un'apprubazione manuale, fà chì u testu "Perchè vulete ghjunghje?" sia ubligatoriu invece d'esse facultativu title: Richiede chì i novi utilizatori empiinu una dumanda d'invitazione @@ -594,9 +582,6 @@ co: show_known_fediverse_at_about_page: desc_html: Quandu ghjè selezziunatu, statuti di tuttu l’istanze cunnisciute saranu affissati indè a vista di e linee. Altrimente soli i statuti lucali saranu mustrati title: Vedde tuttu u fediverse cunnisciutu nant’a vista di e linee - show_staff_badge: - desc_html: Mustrerà un badge Squadra nant’à un prufile d’utilizatore - title: Mustrà un badge staff site_description: desc_html: Paragrafu di prisentazione nant’a pagina d’accolta. Parlate di cio chì rende stu servore speziale, o d'altre cose impurtante. Pudete fà usu di marchi HTML, in particulare <a> è <em>. title: Discrizzione di u servore @@ -862,7 +847,6 @@ co: title: Mudificà u filtru errors: invalid_context: Micca abbastanza cuntestu - invalid_irreversible: A filtrazione irreversibile marchja solu per l'accolta è e nutificazione index: delete: Toglie empty: Ùn avete manc'un filtru. diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 1868b9dd7..06a5387a7 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -91,10 +91,8 @@ cs: posts_tab_heading: Příspěvky posts_with_replies: Příspěvky a odpovědi roles: - admin: Administrátor bot: Robot group: Skupina - moderator: Moderátor unavailable: Profil není dostupný unfollow: Přestat sledovat admin: @@ -113,12 +111,16 @@ cs: avatar: Avatar by_domain: Doména change_email: - changed_msg: E-mail k tomuto účtu byl úspěšně změněn! current_email: Současný e-mail label: Změnit e-mail new_email: Nový e-mail submit: Změnit e-mail title: Změnit e-mail uživateli %{username} + change_role: + changed_msg: Role úspěšně změněna! + label: Změnit roli + no_role: Žádná role + title: Změnit roli pro %{username} confirm: Potvrdit confirmed: Potvrzeno confirming: Potvrzuji @@ -197,12 +199,7 @@ cs: reset: Obnovit reset_password: Obnovit heslo resubscribe: Znovu odebírat - role: Oprávnění - roles: - admin: Administrátor - moderator: Moderátor - staff: Personál - user: Uživatel + role: Role search: Hledat search_same_email_domain: Ostatní uživatelé se stejnou e-mailovou doménou search_same_ip: Další uživatelé se stejnou IP adresou @@ -677,6 +674,50 @@ cs: unresolved: Nevyřešeno updated_at: Aktualizováno view_profile: Zobrazit profil + roles: + add_new: Přidat roli + assigned_users: + few: "%{count} uživatelé" + many: "%{count} uživatelů" + one: "%{count} uživatel" + other: "%{count} uživatelů" + categories: + administration: Administrace + devops: Devops + invites: Pozvánky + moderation: Moderování + special: Speciální + delete: Smazat + edit: Upravit roli „%{name}“ + everyone: Výchozí oprávnění + permissions_count: + few: "%{count} oprávnění" + many: "%{count} oprávnění" + one: "%{count} oprávnění" + other: "%{count} oprávnění" + privileges: + administrator: Správce + delete_user_data: Mazat uživatelská data + delete_user_data_description: Umožňuje uživatelům bezodkladně mazat data jiných uživatelů + invite_users: Zvát uživatele + invite_users_description: Umožňuje uživatelům zvát na server nové lidi + manage_announcements: Spravovat oznámení + manage_appeals: Spravovat odvolání + manage_appeals_description: Umožňuje uživatelům posuzovat odvolání proti moderátorským zásahům + manage_blocks: Spravovat blokace + manage_custom_emojis: Spravovat vlastní emoji + manage_custom_emojis_description: Umožňuje uživatelům spravovat vlastní emoji na serveru + manage_invites: Spravovat pozvánky + manage_reports: Spravovat hlášení + manage_roles: Spravovat role + manage_rules: Spravovat pravidla + manage_settings: Spravovat nastavení + manage_user_access: Spravovat uživatelské přístupy + manage_users: Spravovat uživatele + manage_webhooks: Spravovat webhooky + view_audit_log: Zobrazovat protokol auditu + view_devops: Devops + title: Role rules: add_new: Přidat pravidlo delete: Smazat @@ -729,9 +770,6 @@ cs: deletion: desc_html: Povolit komukoliv smazat svůj účet title: Zpřístupnit smazání účtu - min_invite_role: - disabled: Nikdo - title: Povolit pozvánky od require_invite_text: desc_html: Když jsou registrace schvalovány ručně, udělat odpověď na otázku "Proč se chcete připojit?" povinnou title: Požadovat od nových uživatelů zdůvodnění založení @@ -744,9 +782,6 @@ cs: show_known_fediverse_at_about_page: desc_html: Je-li vypnuto, bude veřejná časová osa, na kterou odkazuje hlavní stránka serveru, omezena pouze na místní obsah title: Zahrnout federovaný obsah na neautentizované stránce veřejné časové osy - show_staff_badge: - desc_html: Zobrazit na stránce uživatele odznak personálu - title: Zobrazit odznak personálu site_description: desc_html: Úvodní odstavec v API. Popište, čím se tento server Mastodon odlišuje od ostatních, a cokoliv jiného, co je důležité. Můžete zde používat HTML značky, hlavně <a> a <em>. title: Popis serveru @@ -1116,7 +1151,7 @@ cs: invalid_domain: není platné doménové jméno errors: '400': Žádost, kterou jste odeslali, byla neplatná nebo poškozená. - '403': Nemáte povolení zobrazit tuto stránku. + '403': Nejste oprávněni tuto stránku zobrazit. '404': Stránka, kterou hledáte, tu není. '406': Tato stránka není v požadovaném formátu dostupná. '410': Stránka, kterou hledáte, tu již není. @@ -1163,7 +1198,6 @@ cs: title: Upravit filtr errors: invalid_context: Nebyl poskytnut žádný nebo jen neplatný kontext - invalid_irreversible: Nezvratné filtrování funguje pouze v souvislosti s domovskou osou či oznámeními index: delete: Smazat empty: Nemáte žádný filtr. @@ -1291,6 +1325,8 @@ cs: copy_account_note_text: 'Tento účet se přesunul z %{acct}, zde byly Vaše předchozí poznámky o něm:' notification_mailer: admin: + report: + subject: Uživatel %{name} podal hlášení sign_up: subject: Uživatel %{name} se zaregistroval digest: diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 913753325..41c54ba75 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -98,10 +98,8 @@ cy: posts_tab_heading: Postiadau posts_with_replies: Postiadau ac atebion roles: - admin: Gweinyddwr bot: Bot group: Grŵp - moderator: Safonwr unavailable: Proffil ddim ar gael unfollow: Dad-ddilyn admin: @@ -120,7 +118,6 @@ cy: avatar: Afatar by_domain: Parth change_email: - changed_msg: E-bost cyfrif wedi ei newid yn llwyddiannus! current_email: E-bost Cyfredol label: Newid E-bost new_email: E-bost Newydd @@ -197,11 +194,6 @@ cy: reset: Ailosod reset_password: Ailosod cyfrinair resubscribe: Aildanysgrifio - role: Caniatâd - roles: - admin: Gweinyddwr - moderator: Aroglygydd - user: Defnyddiwr search: Chwilio search_same_email_domain: Defnyddwyr eraill gyda'r un parth ebost search_same_ip: Defnyddwyr eraill gyda'r un IP @@ -488,9 +480,6 @@ cy: deletion: desc_html: Caniatau i unrhywun i ddileu eu cyfrif title: Agor dileu cyfrif - min_invite_role: - disabled: Neb - title: Caniatau gwahoddiadau gan registrations_mode: modes: approved: Mae angen cymeradwyaeth ar gyfer cofrestru @@ -500,9 +489,6 @@ cy: show_known_fediverse_at_about_page: desc_html: Wedi'i ddewis, bydd yn dangos rhagolwg o dŵtiau o'r holl ffedysawd. Fel arall bydd ond yn dangos tŵtiau lleol. title: Dangos ffedysawd hysbys ar ragolwg y ffrwd - show_staff_badge: - desc_html: Dangos bathodyn staff ar dudalen defnyddiwr - title: Dangos bathodyn staff site_description: desc_html: Paragraff agoriadol ar y dudalen flaen. Disgrifiwch yr hyn sy'n arbennig am y gweinydd Mastodon hwn ac unrhywbeth arall o bwys. Mae modd defnyddio tagiau HTML <a> a <em>. title: Disgrifiad achos @@ -734,7 +720,6 @@ cy: title: Golygu hidlydd errors: invalid_context: Dim cyd-destun neu cyd-destun annilys wedi ei ddarparu - invalid_irreversible: Mae hidlo anadferadwy ond yn gweithio yng nghyd-destun cartref neu hysbysiadau index: delete: Dileu empty: Nid oes gennych chi hidlyddion. diff --git a/config/locales/da.yml b/config/locales/da.yml index 337005369..c9a0954fe 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -83,10 +83,8 @@ da: posts_tab_heading: Indlæg posts_with_replies: Indlæg og svar roles: - admin: Admin bot: Bot group: Gruppe - moderator: Moderator unavailable: Profil utilgængelig unfollow: Følg ikke længere admin: @@ -105,12 +103,17 @@ da: avatar: Profilbillede by_domain: Domæne change_email: - changed_msg: Kontoens e-mail er skiftet! + changed_msg: E-mail skiftet! current_email: Nuværende e-mail label: Skift e-mail new_email: Ny e-mail submit: Skift e-mail title: Skift e-mail for %{username} + change_role: + changed_msg: Rolle ændret! + label: Ændr rolle + no_role: Ingen rolle + title: Ændr rolle for %{username} confirm: Bekræft confirmed: Bekræftet confirming: Bekræfter @@ -154,6 +157,7 @@ da: active: Aktiv all: Alle pending: Afventer + silenced: Begrænset suspended: Suspenderet title: Moderation moderation_notes: Moderationsnotater @@ -161,6 +165,7 @@ da: most_recent_ip: Seneste IP no_account_selected: Ingen kontiændringer, da ingen var valgt no_limits_imposed: Ingen begrænsninger pålagt + no_role_assigned: Ingen rolle tildelt not_subscribed: Abonnerer ikke pending: Afventende vurdering perform_full_suspension: Suspendér @@ -187,12 +192,7 @@ da: reset: Nulstil reset_password: Nulstil adgangskode resubscribe: Genabonnér - role: Tilladelser - roles: - admin: Administrator - moderator: Moderator - staff: Personale - user: Bruger + role: Rolle search: Søg search_same_email_domain: Øvrige brugere med samme e-maildomæne search_same_ip: Øvrige brugere med identisk IP @@ -649,6 +649,54 @@ da: unresolved: Uløst updated_at: Opdateret view_profile: Vis profil + roles: + add_new: Tilføj rolle + assigned_users: + one: "%{count} bruger" + other: "%{count} brugere" + categories: + administration: Håndtering + devops: Devops + invites: Invitationer + moderation: Moderering + special: Speciel + delete: Slet + description_html: Med brugerrollerkan man tilpasse sine brugeres adgang til Mastodon-funktioner og -områder. + edit: Redigér rolle for '%{name} + everyone: Standardtilladelser + everyone_full_description_html: Dette er basisrollen med indvirkning på alle brugere, selv dem uden rolletildeling. Alle øvrige rolletilladelser nedarves herfra. + permissions_count: + one: "%{count} tilladelse" + other: "%{count} tilladelser" + privileges: + administrator: Administrator + administrator_description: Brugere med denne rolle kan omgå alle tilladelser + delete_user_data: Slet brugerdata + invite_users: Invitere brugere + invite_users_description: Tillader brugere at invitere nye personer til serveren + manage_announcements: Håndtere bekendtgørelser + manage_announcements_description: Tillader brugere at håndtere bekendtgørelser på serveren + manage_appeals: Håndtere appeller + manage_appeals_description: Tillader brugere at vurdere appeller af modereringshandlinger + manage_blocks: Håndtere blokeringer + manage_blocks_description: Tillader brugere at blokere e-mailudbydere og IP-adresser + manage_custom_emojis: Håndtere tilpassede emojier + manage_custom_emojis_description: Tillader brugere at håndtere tilpassede emojier på serveren + manage_federation: Håndtere federation + manage_federation_description: Tillader brugere at blokere eller tillade federation med andre domæner og styre leverbarhed + manage_invites: Håndtere invitationer + manage_invites_description: Tillader brugere at gennemse og deaktivere invitationslinks + manage_reports: Håndtere rapporter + manage_reports_description: Tillader brugere at vurdere rapporter og, i overensstemmelse hermed, at udføre moderationshandlinger + manage_roles: Håndtere roller + manage_roles_description: Tillader brugere at håndtere og tildele roller under deres privilegiestatus + manage_rules: Håndtere regler + manage_rules_description: Tillad brugere at ændre serverregler + manage_settings: Håndtere indstillinger + manage_settings_description: Tillader brugere at ændre webstedsindstillinger + manage_taxonomies: Håndtere taksonomier + manage_taxonomies_description: Tillader brugere at gennemse tenderende indhold og opdatere hashtag-indstillinger + manage_user_access: Håndtere brugeradgang rules: add_new: Tilføj regel delete: Slet @@ -701,9 +749,6 @@ da: deletion: desc_html: Tillad enhver at slette sin konto title: Åbn kontosletning - min_invite_role: - disabled: Ingen - title: Tillad invitationer fra require_invite_text: desc_html: Når tilmelding kræver manuel godkendelse, så gør “Hvorfor ønsker du at deltage?” tekstinput obligatorisk i stedet for valgfrit title: Nye brugere afkræves tilmeldingsbegrundelse @@ -716,9 +761,6 @@ da: show_known_fediverse_at_about_page: desc_html: Når deaktiveret, begrænses den fra indgangssiden linkede offentlige tidslinje til kun at vise lokalt indhold title: Medtag federeret indhold på ikke-godkendt, offentlig tidslinjeside - show_staff_badge: - desc_html: Vis et personale-badge på en brugerside - title: Vis personale-badge site_description: desc_html: Introduktionsafsnit på API'en. Beskriv, hvad der gør denne Mastodonserver speciel samt alt andet vigtigt. HTML-tags kan bruges, især <a> og <em>. title: Serverbeskrivelse @@ -1124,15 +1166,24 @@ da: public: Offentlig tidslinje thread: Konversationer edit: + add_keyword: Tilføj nøgleord + keywords: Nøgleord title: Redigere filter errors: + deprecated_api_multiple_keywords: Disse parametre kan ikke ændres fra denne applikation, da de gælder for flere end ét filternøgleord. Brug en nyere applikation eller webgrænsefladen. invalid_context: Ingen eller ugyldig kontekst angivet - invalid_irreversible: Uigenkaldelig filtrering virker kun med hjemme- eller notifikationskontekster index: + contexts: Filtre i %{contexts} delete: Slet empty: Du har ingen filtre. + expires_in: Udløber om %{distance} + expires_on: Udløber om %{date} + keywords: + one: "%{count} nøgleord" + other: "%{count} nøgleord" title: Filtre new: + save: Gem nye filter title: Tilføj nyt filter footer: developers: Udviklere @@ -1251,6 +1302,8 @@ da: copy_account_note_text: 'Denne bruger er flyttet fra %{acct}, hvor dine tidligere noter om dem var:' notification_mailer: admin: + report: + subject: "%{name} indsendte en anmeldelse" sign_up: subject: "%{name} tilmeldte sig" digest: diff --git a/config/locales/de.yml b/config/locales/de.yml index d15011a5e..0c8321295 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -83,10 +83,8 @@ de: posts_tab_heading: Beiträge posts_with_replies: Beiträge mit Antworten roles: - admin: Administrator bot: Bot group: Gruppe - moderator: Moderator unavailable: Profil nicht verfügbar unfollow: Entfolgen admin: @@ -105,7 +103,6 @@ de: avatar: Profilbild by_domain: Domain change_email: - changed_msg: E-Mail-Adresse des Kontos erfolgreich geändert! current_email: Aktuelle E-Mail-Adresse label: E-Mail-Adresse ändern new_email: Neue E-Mail-Adresse @@ -187,12 +184,6 @@ de: reset: Zurücksetzen reset_password: Passwort zurücksetzen resubscribe: Wieder abonnieren - role: Berechtigungen - roles: - admin: Administrator - moderator: Moderator_in - staff: Mitarbeiter - user: Nutzer search: Suche search_same_email_domain: Andere Benutzer mit der gleichen E-Mail-Domain search_same_ip: Andere Benutzer mit derselben IP @@ -701,9 +692,6 @@ de: deletion: desc_html: Allen erlauben, ihr Konto eigenmächtig zu löschen title: Kontolöschung erlauben - min_invite_role: - disabled: Niemand - title: Einladungen erlauben von require_invite_text: desc_html: Wenn eine Registrierung manuell genehmigt werden muss, mache den "Warum möchtest du beitreten?" Text eher obligatorisch als optional title: Neue Benutzer müssen einen Einladungstext ausfüllen @@ -716,9 +704,6 @@ de: show_known_fediverse_at_about_page: desc_html: Wenn aktiviert, wird es alle Beiträge aus dem bereits bekannten Teil des Fediversums auf der Startseite anzeigen. Andernfalls werden lokale Beitrage des Servers angezeigt. title: Zeige eine öffentliche Zeitleiste auf der Einstiegsseite - show_staff_badge: - desc_html: Zeige Mitarbeiter-Badge auf Benutzerseite - title: Zeige Mitarbeiter-Badge site_description: desc_html: Einleitungsabschnitt auf der Frontseite. Beschreibe, was diesen Mastodon-Server ausmacht. Du kannst HTML-Tags benutzen, insbesondere <a> und <em>. title: Beschreibung des Servers @@ -1127,7 +1112,6 @@ de: title: Filter bearbeiten errors: invalid_context: Ungültiger oder fehlender Kontext übergeben - invalid_irreversible: Unwiderrufliche Filterung funktioniert nur mit Heim- oder Benachrichtigungskontext index: delete: Löschen empty: Du hast keine Filter. diff --git a/config/locales/devise.si.yml b/config/locales/devise.si.yml index b9aa1527c..08b7286cb 100644 --- a/config/locales/devise.si.yml +++ b/config/locales/devise.si.yml @@ -1,42 +1,115 @@ --- si: devise: + confirmations: + confirmed: ඔබගේ විද්‍යුත් තැපැල් ලිපිනය සාර්ථකව තහවුරු කර ඇත. + send_instructions: මිනිත්තු කිහිපයකින් ඔබගේ විද්‍යුත් තැපැල් ලිපිනය තහවුරු කරන ආකාරය පිළිබඳ උපදෙස් සහිත විද්‍යුත් තැපෑලක් ඔබට ලැබෙනු ඇත. ඔබට මෙම විද්‍යුත් තැපෑල නොලැබුනේ නම් කරුණාකර ඔබගේ අයාචිත තැපැල් ෆෝල්ඩරය පරීක්ෂා කරන්න. + send_paranoid_instructions: ඔබගේ විද්‍යුත් තැපැල් ලිපිනය අපගේ දත්ත ගබඩාවේ තිබේ නම්, මිනිත්තු කිහිපයකින් ඔබගේ විද්‍යුත් තැපැල් ලිපිනය තහවුරු කරන ආකාරය පිළිබඳ උපදෙස් සහිත විද්‍යුත් තැපෑලක් ඔබට ලැබෙනු ඇත. ඔබට මෙම විද්‍යුත් තැපෑල නොලැබුනේ නම් කරුණාකර ඔබගේ අයාචිත තැපැල් ෆෝල්ඩරය පරීක්ෂා කරන්න. failure: already_authenticated: ඔබ දැනටමත් පිවිස ඇත. + inactive: ඔබගේ ගිණුම තවම සක්‍රිය කර නොමැත. + invalid: වලංගු නොවන %{authentication_keys} හෝ මුරපදය. + last_attempt: ඔබගේ ගිණුම අගුලු දැමීමට පෙර ඔබට තවත් එක් උත්සාහයක් ඇත. locked: ඔබගේ ගිණුම අගුළු දමා ඇත. + not_found_in_database: වලංගු නොවන %{authentication_keys} හෝ මුරපදය. + pending: ඔබගේ ගිණුම තවමත් සමාලෝචනය වෙමින් පවතී. + timeout: ඔබේ සැසිය කල් ඉකුත් විය. ඉදිරියට යාමට කරුණාකර නැවත පුරන්න. + unauthenticated: ඉදිරියට යාමට පෙර ඔබ පුරනය වීමට හෝ ලියාපදිංචි වීමට අවශ්‍ය වේ. + unconfirmed: දිගටම කරගෙන යාමට පෙර ඔබ ඔබේ ඊමේල් ලිපිනය තහවුරු කළ යුතුය. mailer: confirmation_instructions: + action: ඊමේල් ලිපිනය තහවුරු කරන්න + action_with_app: තහවුරු කර %{app}වෙත ආපසු යන්න + explanation: ඔබ මෙම ඊමේල් ලිපිනය සමඟ %{host} හි ගිණුමක් සාදා ඇත. ඔබ එය සක්‍රිය කිරීමට එක ක්ලික් කිරීමක් ඇත. මේ ඔබ නොවේ නම්, කරුණාකර මෙම විද්‍යුත් තැපෑල නොසලකා හරින්න. + explanation_when_pending: ඔබ මෙම විද්‍යුත් තැපැල් ලිපිනය සමඟ %{host} වෙත ආරාධනාවක් සඳහා ඉල්ලුම් කළා. ඔබ ඔබගේ විද්‍යුත් තැපැල් ලිපිනය තහවුරු කළ පසු, අපි ඔබගේ අයදුම්පත සමාලෝචනය කරන්නෙමු. ඔබගේ විස්තර වෙනස් කිරීමට හෝ ඔබගේ ගිණුම මකා දැමීමට ඔබට පුරනය විය හැක, නමුත් ඔබගේ ගිණුම අනුමත වන තුරු ඔබට බොහෝ කාර්යයන් වෙත ප්‍රවේශ විය නොහැක. ඔබගේ අයදුම්පත ප්‍රතික්ෂේප කළහොත්, ඔබගේ දත්ත ඉවත් කරනු ඇත, එබැවින් ඔබෙන් වැඩිදුර ක්‍රියාමාර්ග අවශ්‍ය නොවනු ඇත. මේ ඔබ නොවේ නම්, කරුණාකර මෙම විද්‍යුත් තැපෑල නොසලකා හරින්න. + extra_html: කරුණාකර සේවාදායකයේ නීති සහ අපගේ සේවා කොන්දේසිද පරීක්ෂා කරන්න. + subject: 'Mastodon: %{instance}සඳහා තහවුරු කිරීමේ උපදෙස්' title: වි. තැපැල් ලිපිනය තහවුරු කරන්න email_changed: + explanation: 'ඔබගේ ගිණුම සඳහා ඊමේල් ලිපිනය වෙනස් වෙමින් පවතී:' + extra: ඔබ ඔබගේ විද්‍යුත් තැපෑල වෙනස් නොකළේ නම්, යම් අයෙකු ඔබගේ ගිණුමට ප්‍රවේශය ලබා ගෙන ඇති බව පෙනෙන්නට තිබේ. ඔබගේ ගිණුමෙන් අගුලු දමා ඇත්නම් කරුණාකර ඔබගේ මුරපදය වහාම වෙනස් කරන්න හෝ සේවාදායක පරිපාලක අමතන්න. subject: 'මාස්ටඩන්: වි-තැපෑල වෙනස් විය' title: නව විද්‍යුත් තැපැල් ලිපිනය password_change: - title: මුරපදය වෙනස් කරන ලදි + explanation: ඔබගේ ගිණුම සඳහා මුරපදය වෙනස් කර ඇත. + extra: ඔබ ඔබගේ මුරපදය වෙනස් නොකළේ නම්, යමෙකු ඔබගේ ගිණුමට ප්‍රවේශය ලබා ගෙන ඇති බව පෙනෙන්නට තිබේ. ඔබගේ ගිණුමෙන් අගුලු දමා ඇත්නම් කරුණාකර ඔබගේ මුරපදය වහාම වෙනස් කරන්න හෝ සේවාදායක පරිපාලක අමතන්න. + subject: 'Mastodon: මුරපදය වෙනස් විය' + title: මුරපදය වෙනස් කරන ලදී reconfirmation_instructions: + explanation: ඔබගේ ඊමේල් වෙනස් කිරීමට නව ලිපිනය තහවුරු කරන්න. + extra: මෙම වෙනස ඔබ විසින් ආරම්භ කරන ලද්දක් නොවේ නම්, කරුණාකර මෙම විද්‍යුත් තැපෑල නොසලකා හරින්න. ඔබ ඉහත සබැඳියට ප්‍රවේශ වන තෙක් Mastodon ගිණුම සඳහා ඊමේල් ලිපිනය වෙනස් නොවේ. + subject: 'Mastodon: %{instance}සඳහා විද්‍යුත් තැපෑල තහවුරු කරන්න' title: වි. තැපැල් ලිපිනය තහවුරු කරන්න reset_password_instructions: action: මුරපදය වෙනස් කරන්න + explanation: ඔබ ඔබගේ ගිණුම සඳහා නව මුරපදයක් ඉල්ලා ඇත. + extra: ඔබ මෙය ඉල්ලා නොසිටියේ නම්, කරුණාකර මෙම විද්‍යුත් තැපෑල නොසලකා හරින්න. ඔබ ඉහත සබැඳියට ප්‍රවේශ වී අලුත් එකක් සාදන තෙක් ඔබේ මුරපදය වෙනස් නොවනු ඇත. + subject: 'Mastodon: මුරපද උපදෙස් යළි පිහිටුවන්න' title: මුරපදය නැවත සැකසීම two_factor_disabled: + explanation: ඔබගේ ගිණුම සඳහා ද්වි-සාධක සත්‍යාපනය අබල කර ඇත. විද්‍යුත් තැපැල් ලිපිනය සහ මුරපදය පමණක් භාවිතයෙන් දැන් පුරනය විය හැක. + subject: 'Mastodon: ද්වි සාධක සත්‍යාපනය අක්‍රීය කර ඇත' title: ද්විපියවර අබලයි two_factor_enabled: + explanation: ඔබගේ ගිණුම සඳහා ද්වි-සාධක සත්‍යාපනය සක්‍රීය කර ඇත. යුගල කළ TOTP යෙදුම මගින් ජනනය කරන ලද ටෝකනයක් පුරනය වීමට අවශ්‍ය වනු ඇත. + subject: 'Mastodon: ද්වි සාධක සත්‍යාපනය සක්‍රීය කර ඇත' title: ද්විපියවර සබලයි two_factor_recovery_codes_changed: - title: ද්විපියවර ප්‍රතිසාධන කේත වෙනස්විණි + explanation: පෙර ප්‍රතිසාධන කේත අවලංගු කර නව ඒවා උත්පාදනය කර ඇත. + subject: 'Mastodon: ද්වි-සාධක ප්‍රතිසාධන කේත නැවත උත්පාදනය කරන ලදී' + title: ද්විපියවර ප්‍රතිසාධන කේත වෙනස් වේ unlock_instructions: - subject: 'මාස්ටඩන්: අගුලුහැරීමේ උපදේශ' + subject: 'මාස්ටඩන්: අගුලුහැරීමේ උපදේශනය' webauthn_credential: added: + explanation: පහත ආරක්ෂක යතුර ඔබගේ ගිණුමට එක් කර ඇත subject: 'මාස්ටඩන්: නව ආරක්‍ෂණ යතුර' title: ආරක්‍ෂණ යතුරක් එකතු කර ඇත + deleted: + explanation: පහත ආරක්ෂක යතුර ඔබගේ ගිණුමෙන් මකා ඇත + subject: 'Mastodon: ආරක්ෂක යතුර මකා ඇත' + title: ඔබගේ ආරක්ෂක යතුරු වලින් එකක් මකා ඇත webauthn_disabled: + explanation: ඔබගේ ගිණුම සඳහා ආරක්ෂක යතුරු සමඟ සත්‍යාපනය අබල කර ඇත. යුගල කළ TOTP යෙදුම මගින් ජනනය කරන ලද ටෝකනය පමණක් භාවිතයෙන් දැන් පුරනය විය හැක. + subject: 'Mastodon: ආරක්ෂක යතුරු සමඟ සත්‍යාපනය අක්‍රිය කර ඇත' title: ආරක්‍ෂණ යතුරු අබල කර ඇත webauthn_enabled: + explanation: ඔබගේ ගිණුම සඳහා ආරක්ෂක යතුරු සත්‍යාපනය සක්‍රීය කර ඇත. ඔබගේ ආරක්ෂක යතුර දැන් පුරනය වීම සඳහා භාවිතා කළ හැක. + subject: 'Mastodon: ආරක්ෂක යතුරු සත්‍යාපනය සක්‍රීය කර ඇත' title: ආරක්‍ෂණ යතුරු සබල කර ඇත + omniauth_callbacks: + failure: '"%{reason}" නිසා %{kind} සිට ඔබව සත්‍යාපනය කළ නොහැක.' + success: "%{kind} ගිණුමෙන් සාර්ථකව සත්‍යාපනය කරන ලදී." + passwords: + no_token: මුරපද යළි පිහිටුවීමේ විද්‍යුත් තැපෑලකින් නොපැමිණ ඔබට මෙම පිටුවට ප්‍රවේශ විය නොහැක. ඔබ පැමිණෙන්නේ මුරපද යළි පිහිටුවීමේ විද්‍යුත් තැපෑලකින් නම්, කරුණාකර ඔබ සපයා ඇති සම්පූර්ණ URL භාවිතා කර ඇති බවට වග බලා ගන්න. + send_instructions: ඔබගේ විද්‍යුත් තැපැල් ලිපිනය අපගේ දත්ත ගබඩාවේ තිබේ නම්, මිනිත්තු කිහිපයකින් ඔබගේ විද්‍යුත් තැපැල් ලිපිනයට මුරපද ප්‍රතිසාධන සබැඳියක් ලැබෙනු ඇත. ඔබට මෙම විද්‍යුත් තැපෑල නොලැබුනේ නම් කරුණාකර ඔබගේ අයාචිත තැපැල් ෆෝල්ඩරය පරීක්ෂා කරන්න. + send_paranoid_instructions: ඔබගේ විද්‍යුත් තැපැල් ලිපිනය අපගේ දත්ත ගබඩාවේ තිබේ නම්, මිනිත්තු කිහිපයකින් ඔබගේ විද්‍යුත් තැපැල් ලිපිනයට මුරපද ප්‍රතිසාධන සබැඳියක් ලැබෙනු ඇත. ඔබට මෙම විද්‍යුත් තැපෑල නොලැබුනේ නම් කරුණාකර ඔබගේ අයාචිත තැපැල් ෆෝල්ඩරය පරීක්ෂා කරන්න. + updated: ඔබගේ මුරපදය සාර්ථකව වෙනස් කර ඇත. ඔබ දැන් පුරනය වී ඇත. + updated_not_active: ඔබගේ මුරපදය සාර්ථකව වෙනස් කර ඇත. registrations: - update_needs_confirmation: ඔබ ඔබගේ ගිණුම සාර්ථකව යාවත්කාලීන කළ නමුත් අපට ඔබගේ නව විද්‍යුත් තැපැල් ලිපිනය තහවුරු කළ යුතුය. කරුණාකර ඔබගේ විද්‍යුත් තැපෑල පරීක්ෂා කර තහවුරු කිරීමේ සබැඳිය අනුගමනය කර ඔබගේ නව විද්‍යුත් තැපැල් ලිපිනය තහවුරු කරන්න. ඔබට මෙම විද්‍යුත් තැපෑල නොලැබුනේ නම් කරුණාකර ඔබගේ අයාචිත තැපැල් බහාලුම පරීක්ෂා කරන්න. + destroyed: ආයුබෝවන්! ඔබගේ ගිණුම සාර්ථකව අවලංගු කර ඇත. ඉක්මනින්ම ඔබව නැවත හමුවීමට අපි බලාපොරොත්තු වෙමු. + signed_up: සාදරයෙන් පිළිගනිමු! ඔබ සාර්ථකව ලියාපදිංචි වී ඇත. + signed_up_but_inactive: ඔබ සාර්ථකව ලියාපදිංචි වී ඇත. කෙසේ වෙතත්, ඔබගේ ගිණුම තවමත් සක්‍රිය කර නොමැති නිසා අපට ඔබව පුරනය වීමට නොහැකි විය. + signed_up_but_locked: ඔබ සාර්ථකව ලියාපදිංචි වී ඇත. කෙසේ වෙතත්, ඔබගේ ගිණුම අගුලු දමා ඇති නිසා අපට ඔබව පුරනය කිරීමට නොහැකි විය. + signed_up_but_pending: තහවුරු කිරීමේ සබැඳියක් සහිත පණිවිඩයක් ඔබගේ විද්‍යුත් තැපැල් ලිපිනයට යවා ඇත. ඔබ සබැඳිය ක්ලික් කළ පසු, අපි ඔබගේ අයදුම්පත සමාලෝචනය කරන්නෙමු. එය අනුමත වුවහොත් ඔබට දැනුම් දෙනු ලැබේ. + signed_up_but_unconfirmed: තහවුරු කිරීමේ සබැඳියක් සහිත පණිවිඩයක් ඔබගේ විද්‍යුත් තැපැල් ලිපිනයට යවා ඇත. ඔබගේ ගිණුම සක්‍රිය කිරීමට කරුණාකර සබැඳිය අනුගමනය කරන්න. ඔබට මෙම විද්‍යුත් තැපෑල නොලැබුනේ නම් කරුණාකර ඔබගේ අයාචිත තැපැල් ෆෝල්ඩරය පරීක්ෂා කරන්න. + update_needs_confirmation: ඔබගේ ගිණුම සාර්ථකව යාවත්කාලීන කළ හැකි නමුත් අපට ඔබගේ නව විද්‍යුත් තැපැල් ලිපිනය තහවුරු කර ගත යුතුය. කරුණාකර ඔබගේ විද්‍යුත් තැපෑල පරීක්ෂා කර තහවුරු කිරීමේ සබැඳිය අනුගමනය කරන්න ඔබගේ නව විද්‍යුත් තැපැල් ලිපිනය තහවුරු කරන්න. ඔබට මෙම විද්‍යුත් තැපෑල නොලැබුනේ නම් කරුණාකර ඔබගේ අයාචිත තැපැල් බහාලුම පරීක්ෂා කරන්න. updated: ඔබගේ ගිණුම සාර්ථකව යාවත්කාලීන කර ඇත. sessions: already_signed_out: සාර්ථකව නික්මුනි. - signed_in: සාර්ථකව පිවිසුනි. + signed_in: සාර්ථකව පිවිසෙන්න. signed_out: සාර්ථකව නික්මුනි. + unlocks: + send_instructions: මිනිත්තු කිහිපයකින් ඔබගේ ගිණුම අගුළු හරින ආකාරය පිළිබඳ උපදෙස් සහිත විද්‍යුත් තැපෑලක් ඔබට ලැබෙනු ඇත. ඔබට මෙම විද්‍යුත් තැපෑල නොලැබුනේ නම් කරුණාකර ඔබගේ අයාචිත තැපැල් ෆෝල්ඩරය පරීක්ෂා කරන්න. + send_paranoid_instructions: ඔබගේ ගිණුම තිබේ නම්, මිනිත්තු කිහිපයකින් එය අගුළු හරින ආකාරය පිළිබඳ උපදෙස් සහිත විද්‍යුත් තැපෑලක් ඔබට ලැබෙනු ඇත. ඔබට මෙම විද්‍යුත් තැපෑල නොලැබුනේ නම් කරුණාකර ඔබගේ අයාචිත තැපැල් ෆෝල්ඩරය පරීක්ෂා කරන්න. + unlocked: ඔබගේ ගිණුම සාර්ථකව අගුලු හැර ඇත. ඉදිරියට යාමට කරුණාකර පුරනය වන්න. + errors: + messages: + already_confirmed: දැනටමත් තහවුරු කර ඇත, කරුණාකර පුරනය වීමට උත්සාහ කරන්න + confirmation_period_expired: "%{period}තුළ තහවුරු කළ යුතුය, කරුණාකර අලුත් එකක් ඉල්ලන්න" + expired: කල් ඉකුත් වී ඇත, කරුණාකර අලුත් එකක් ඉල්ලන්න + not_found: හමු වුණේ නැහැ + not_locked: අගුලු දමා නොතිබුණි + not_saved: + one: '1 දෝෂයක් මෙම %{resource} සුරැකීම තහනම් කර ඇත:' + other: 'දෝෂ %{count} කින් මෙම %{resource} සුරැකීම තහනම් කර ඇත:' diff --git a/config/locales/doorkeeper.eo.yml b/config/locales/doorkeeper.eo.yml index 1584fddf0..473757a37 100644 --- a/config/locales/doorkeeper.eo.yml +++ b/config/locales/doorkeeper.eo.yml @@ -110,6 +110,7 @@ eo: bookmarks: Legosignoj lists: Listoj mutes: Silentigitaj + reports: Raportoj search: Serĉi statuses: Afiŝoj layouts: diff --git a/config/locales/doorkeeper.si.yml b/config/locales/doorkeeper.si.yml index 6416fd082..4bbfa4e90 100644 --- a/config/locales/doorkeeper.si.yml +++ b/config/locales/doorkeeper.si.yml @@ -4,10 +4,22 @@ si: attributes: doorkeeper/application: name: යෙදුමේ නම + redirect_uri: URI යළි-යොමු කරන්න + scopes: විෂය පථයන් website: යෙදුමේ වියමන අඩවිය + errors: + models: + doorkeeper/application: + attributes: + redirect_uri: + fragment_present: කොටසක් අඩංගු විය නොහැක. + invalid_uri: වලංගු URI එකක් විය යුතුය. + relative_uri: නිරපේක්ෂ URI විය යුතුය. + secured_uri: HTTPS/SSL URI එකක් විය යුතුය. doorkeeper: applications: buttons: + authorize: අවසරලත් cancel: අවලංගු destroy: විනාශ කරන්න edit: සංස්කරණය @@ -16,11 +28,20 @@ si: destroy: ඔබට විශ්වාසද? edit: title: යෙදුම සංස්කරණය + form: + error: අපොයි! විය හැකි දෝෂ සඳහා ඔබේ පෝරමය පරීක්ෂා කරන්න + help: + native_redirect_uri: දේශීය පරීක්ෂණ සඳහා %{native_redirect_uri} භාවිතා කරන්න + redirect_uri: URI එකකට එක පේළියක් භාවිතා කරන්න + scopes: අවකාශයන් සහිත විෂය පථයන් වෙන් කරන්න. පෙරනිමි විෂය පථ භාවිතා කිරීමට හිස්ව තබන්න. index: application: යෙදුම + callback_url: ආපසු ඇමතුම් URL + delete: මකන්න empty: ඔබට කිසිම යෙදුමක් නැත. name: නම new: නව යෙදුම + scopes: විෂය පථයන් show: පෙන්වන්න title: ඔබගේ යෙදුම් new: @@ -28,33 +49,137 @@ si: show: actions: ක්‍රියාමාර්ග application_id: අනුග්‍රාහක යතුර + callback_urls: ආපසු ඇමතුම් URL + scopes: විෂය පථයන් secret: අනුග්‍රාහකයේ රහස title: 'යෙදුම: %{name}' authorizations: buttons: authorize: සත්‍යාපනය + deny: ප්‍රතික්ෂේප කරන්න + error: + title: දෝෂයක් සිදුවී ඇත + new: + prompt_html: "%{client_name} ඔබගේ ගිණුමට ප්‍රවේශ වීමට අවසර ලබා ගැනීමට කැමති වේ. එය තෙවන පාර්ශවීය යෙදුමකි. ඔබ එය විශ්වාස නොකරන්නේ නම්, ඔබ එයට අවසර නොදිය යුතුය." + review_permissions: අවසර සමාලෝචනය කරන්න + title: බලය පැවරීමේ අවශ්ය + show: + title: මෙම අවසර කේතය පිටපත් කර එය යෙදුමට අලවන්න. authorized_applications: + buttons: + revoke: අවලංගු කරන්න confirmations: revoke: ඔබට විශ්වාසද? + index: + authorized_at: "%{date}මත අවසර දී ඇත" + description_html: මේවා API භාවිතයෙන් ඔබගේ ගිණුමට ප්‍රවේශ විය හැකි යෙදුම් වේ. ඔබ මෙහි හඳුනා නොගත් යෙදුම් තිබේ නම්, හෝ යෙදුමක් වැරදි ලෙස හැසිරෙන්නේ නම්, ඔබට එහි ප්‍රවේශය අවලංගු කළ හැක. + last_used_at: අවසන් වරට භාවිතා කළේ %{date} + never_used: කවදාවත් පාවිච්චි කළේ නැහැ + scopes: අවසර + superapp: අභ්යන්තර + title: ඔබගේ බලයලත් අයදුම්පත් + errors: + messages: + access_denied: සම්පත් හිමිකරු හෝ අවසර සේවාදායකය ඉල්ලීම ප්‍රතික්ෂේප කළේය. + credential_flow_not_configured: Doorkeeper.configure.resource_owner_from_credentials වින්‍යාස නොකිරීම හේතුවෙන් සම්පත් හිමිකරුගේ මුරපද අක්තපත්‍ර ප්‍රවාහය අසාර්ථක විය. + invalid_client: නොදන්නා සේවාලාභියා නිසා සේවාලාභී සත්‍යාපනය අසාර්ථක විය, සේවාලාභී සත්‍යාපනය ඇතුළත් කර නැත, හෝ සහය නොදක්වන සත්‍යාපන ක්‍රමයක්. + invalid_grant: සපයා ඇති අවසර දීමනාව වලංගු නැත, කල් ඉකුත් වී ඇත, අවලංගු කර ඇත, අවසර ඉල්ලීමේ භාවිතා කරන ලද යළි-යොමුවීම් URI සමඟ නොගැලපේ, නැතහොත් වෙනත් සේවාදායකයෙකුට නිකුත් කර ඇත. + invalid_redirect_uri: ඇතුළත් කර ඇති යළි-යොමුවීම් uri වලංගු නොවේ. + invalid_request: + missing_param: 'අවශ්‍ය පරාමිතිය අස්ථානගත වී ඇත: %{value}.' + request_not_authorized: ඉල්ලීම අනුමත කළ යුතුය. අවසර ඉල්ලීම සඳහා අවශ්‍ය පරාමිතිය අස්ථානගත වී හෝ වලංගු නොවේ. + unknown: ඉල්ලීමට අවශ්‍ය පරාමිතියක් අස්ථානගත වී ඇත, සහය නොදක්වන පරාමිති අගයක් ඇතුළත් වේ, නැතහොත් වෙනත් ආකාරයකින් විකෘති වී ඇත. + invalid_resource_owner: සපයන ලද සම්පත් හිමිකරු අක්තපත්‍ර වලංගු නැත, නැතහොත් සම්පත් හිමිකරු සොයාගත නොහැක + invalid_scope: ඉල්ලා සිටින විෂය පථය වලංගු නැත, නොදන්නා, හෝ විකෘති වී ඇත. + invalid_token: + expired: ප්‍රවේශ ටෝකනය කල් ඉකුත් විය + revoked: ප්‍රවේශ ටෝකනය අවලංගු කරන ලදී + unknown: ප්‍රවේශ ටෝකනය වලංගු නොවේ + resource_owner_authenticator_not_configured: Doorkeeper.configure.resource_owner_authenticator වින්‍යාසගත නොවීම හේතුවෙන් සම්පත් හිමිකරු සොයා ගැනීම අසාර්ථක විය. + server_error: අවසර සේවාදායකයට අනපේක්ෂිත කොන්දේසියක් ඇති වූ අතර එය ඉල්ලීම ඉටු කිරීම වළක්වයි. + temporarily_unavailable: තාවකාලික අධි බර පැටවීමක් හෝ සේවාදායකයේ නඩත්තුවක් හේතුවෙන් අවසර සේවාදායකයට ඉල්ලීම හැසිරවීමට දැනට නොහැක. + unauthorized_client: මෙම ක්‍රමය භාවිතයෙන් මෙම ඉල්ලීම ඉටු කිරීමට සේවාදායකයාට අවසර නැත. + unsupported_grant_type: අවසර ප්‍රදාන වර්ගයට බලය පැවරීමේ සේවාදායකය විසින් සහය නොදක්වයි. + unsupported_response_type: අවසර සේවාදායකය මෙම ප්‍රතිචාර වර්ගයට සහය නොදක්වයි. + flash: + applications: + create: + notice: යෙදුම නිර්මාණය කරන ලදී. + destroy: + notice: යෙදුම මකා ඇත. + update: + notice: යෙදුම යාවත්කාලීන කරන ලදී. + authorized_applications: + destroy: + notice: අයදුම්පත අවලංගු කරන ලදී. + grouped_scopes: + access: + read: කියවීමට පමණක් ප්‍රවේශය + read/write: කියවීමට සහ ලිවීමට ප්‍රවේශය + write: ලිවීමට පමණක් ප්‍රවේශය + title: + accounts: ගිණුම් + admin/accounts: ගිණුම් පරිපාලනය + admin/all: සියලුම පරිපාලන කාර්යයන් + admin/reports: වාර්තා පරිපාලනය + all: සියල්ල + blocks: කුට්ටි + bookmarks: පිටු සලකුණු + conversations: සංවාද + crypto: අන්තයේ සිට අගට සංකේතනය කිරීම + favourites: ප්රියතම + filters: පෙරහන් + follow: සබඳතා + follows: පහත සඳහන් + lists: ලැයිස්තු + media: මාධ්ය ඇමුණුම් + mutes: නිහඬ කරයි + notifications: දැනුම්දීම් + push: තල්ලු දැනුම්දීම් + reports: වාර්තා + search: සොයන්න + statuses: තනතුරු layouts: admin: nav: applications: යෙදුම් oauth2_provider: වි.සත්‍යා.2 (OAuth) සැපයුම්කරු application: - title: වි.සත්‍යා. (OAuth) අනුමැතිය අවශ්‍යයයි + title: වි.සත්යා. (OAuth) තොරතුරු අවශ්‍යයි scopes: admin:read: සේවාදායකයේ ඇති සියලුම දත්ත කියවන්න admin:read:accounts: සියලුම ගිණුම් වල සංවේදී තොරතුරු කියවන්න admin:read:reports: සියලුම වාර්තා සහ වාර්තා කළ ගිණුම් වල සංවේදී තොරතුරු කියවන්න + admin:write: සේවාදායකයේ සියලුම දත්ත වෙනස් කරන්න + admin:write:accounts: ගිණුම් මත මධ්‍යස්ථ ක්‍රියා සිදු කරන්න + admin:write:reports: වාර්තා මත මධ්‍යස්ථ ක්‍රියා සිදු කරන්න + crypto: end-to-end encryption භාවිතා කරන්න + follow: ගිණුම් සබඳතා වෙනස් කරන්න + push: ඔබගේ තල්ලු දැනුම්දීම් ලබා ගන්න read: ඔබගේ ගිණුමේ සියලුම දත්ත කියවන්න + read:accounts: ගිණුම් තොරතුරු බලන්න + read:blocks: ඔබගේ වාරණ බලන්න + read:bookmarks: ඔබගේ පිටු සලකුණු බලන්න + read:favourites: ඔබේ ප්රියතම බලන්න read:filters: ඔබගේ පෙරහන් බලන්න + read:follows: ඔබගේ පහත සඳහන් බලන්න read:lists: ඔබගේ ලැයිස්තු බලන්න + read:mutes: ඔබේ ගොළු බලන්න read:notifications: ඔබගේ දැනුම්දීම් බලන්න - read:search: ඔබ වෙනුවට සොයන්න + read:reports: ඔබගේ වාර්තා බලන්න + read:search: ඔබ වෙනුවෙන් සොයන්න + read:statuses: සියලුම පෝස්ට් බලන්න + write: ඔබගේ ගිණුමේ සියලුම දත්ත වෙනස් කරන්න + write:accounts: ඔබගේ පැතිකඩ වෙනස් කරන්න write:blocks: ගිණුම් සහ වසම් අවහිර කරන්න - write:filters: පෙරහන් සාදන්න + write:bookmarks: පිටු සලකුණු සටහන් + write:conversations: සංවාද නිහඬ කිරීම සහ මකා දැමීම + write:favourites: ප්රියතම තනතුරු + write:filters: පෙරහන් කරන්න + write:follows: මිනිසුන් අනුගමනය කරන්න + write:lists: ලැයිස්තු සාදන්න write:media: මාධ්‍ය ගොනු උඩුගත කරන්න - write:mutes: මිනිසුන් සහ සංවාද නිහඬකරන්න + write:mutes: මිනිසුන් සහ සංවාද කරන්න write:notifications: ඔබගේ දැනුම්දීම් හිස්කරන්න - write:reports: වෙනත් මිනිසුන් වාර්තා කරන්න + write:reports: වෙනත් පුද්ගලයින් වාර්තා කරන්න + write:statuses: පළ කිරීම් පළ කරන්න diff --git a/config/locales/el.yml b/config/locales/el.yml index 96ec15247..8bbb02822 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -80,10 +80,8 @@ el: posts_tab_heading: Τουτ posts_with_replies: Τουτ και απαντήσεις roles: - admin: Διαχειριστής bot: Μποτ (αυτόματος λογαριασμός) group: Ομάδα - moderator: Μεσολαβητής unavailable: Το προφίλ δεν είναι διαθέσιμο unfollow: Διακοπή παρακολούθησης admin: @@ -102,12 +100,15 @@ el: avatar: Αβατάρ by_domain: Τομέας change_email: - changed_msg: Επιτυχής αλλαγή email λογαριασμού! current_email: Τρέχον email label: Αλλαγή email new_email: Νέο email submit: Αλλαγή email title: Αλλαγή email για %{username} + change_role: + label: Αλλαγή ρόλου + no_role: Κανένας ρόλος + title: Αλλαγή ρόλου για %{username} confirm: Επιβεβαίωση confirmed: Επιβεβαιώθηκε confirming: Προς επιβεβαίωση @@ -148,6 +149,7 @@ el: active: Ενεργός/ή all: Όλα pending: Εκκρεμούν + silenced: Περιορισμένοι suspended: Σε αναστολή title: Μεσολάβηση moderation_notes: Σημειώσεις μεσολάβησης @@ -155,6 +157,7 @@ el: most_recent_ip: Πιο πρόσφατη IP no_account_selected: Κανείς λογαριασμός δεν ενημερώθηκε αφού κανείς δεν ήταν επιλεγμένος no_limits_imposed: Χωρίς όρια + no_role_assigned: Δεν έχει ανατεθεί ρόλος not_subscribed: Άνευ συνδρομής pending: Εκκρεμεί έγκριση perform_full_suspension: Αναστολή @@ -177,12 +180,7 @@ el: reset: Επαναφορά reset_password: Επαναφορά συνθηματικού resubscribe: Επανεγγραφή - role: Δικαιώματα - roles: - admin: Διαχειριστής - moderator: Συντονιστής - staff: Προσωπικό - user: Χρήστης + role: Ρόλος search: Αναζήτηση search_same_email_domain: Άλλοι χρήστες με τον ίδιο τομέα e-mail search_same_ip: Υπόλοιποι χρήστες με την ίδια διεύθυνση IP @@ -492,6 +490,16 @@ el: unresolved: Άλυτη updated_at: Ενημερωμένη view_profile: Προβολή προφίλ + roles: + add_new: Προσθήκη ρόλου + assigned_users: + one: "%{count} χρήστης" + other: "%{count} χρήστες" + categories: + administration: Διαχείριση + devops: Devops + invites: Προσκλήσεις + delete: Διαγραφή rules: add_new: Προσθήκη κανόνα delete: Διαγραφή @@ -544,9 +552,6 @@ el: deletion: desc_html: Επέτρεψε σε οποιονδήποτε να διαγράψει το λογαριασμό του/της title: Άνοιξε τη διαγραφή λογαριασμού - min_invite_role: - disabled: Κανείς - title: Επέτρεψε προσκλήσεις από registrations_mode: modes: approved: Απαιτείται έγκριση για εγγραφή @@ -556,9 +561,6 @@ el: show_known_fediverse_at_about_page: desc_html: Όταν αντιστραφεί, θα δείχνει τα τουτ από όλο το γνωστό fediverse στην προεπισκόπηση. Διαφορετικά θα δείχνει μόνο τοπικά τουτ. title: Εμφάνιση του γνωστού fediverse στην προεπισκόπηση ροής - show_staff_badge: - desc_html: Δείξε ένα σήμα προσωπικού στη σελίδα ενός χρήστη - title: Δείξε διακριτικό προσωπικού site_description: desc_html: Εισαγωγική παράγραφος στην αρχική σελίδα. Περιέγραψε τι κάνει αυτό τον διακομιστή Mastodon διαφορετικό και ό,τι άλλο ενδιαφέρον. Μπορείς να χρησιμοποιήσεις HTML tags, συγκεκριμένα < a> και < em>. title: Περιγραφή κόμβου @@ -820,15 +822,20 @@ el: public: Δημόσιες ροές thread: Συζητήσεις edit: + add_keyword: Προσθήκη λέξης-κλειδιού + keywords: Λέξεις-κλειδιά title: Ενημέρωση φίλτρου errors: invalid_context: Έδωσες λάθος ή ανύπαρκτο πλαίσιο - invalid_irreversible: Τα μη αντιστρέψιμα φίλτρα δουλεύουν μόνο στα πλαίσια της αρχικής ροής και των ειδοποιήσεων index: + contexts: Φίλτρα σε %{contexts} delete: Διαγραφή empty: Δεν έχεις φίλτρα. + expires_in: Λήγει σε %{distance} + expires_on: Λήγει στις %{date} title: Φίλτρα new: + save: Αποθήκευση νέου φίλτρου title: Πρόσθεσε νέο φίλτρο footer: developers: Ανάπτυξη @@ -935,6 +942,8 @@ el: copy_account_note_text: 'Ο/Η χρήστης μετακόμισε από το %{acct}, ορίστε οι προηγούμενες σημειώσεις σου:' notification_mailer: admin: + report: + subject: "%{name} υπέβαλε μια αναφορά" sign_up: subject: "%{name} έχει εγγραφεί" digest: diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 9e1eaaffa..e9ed57a39 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -13,8 +13,8 @@ eo: browse_directory: Esplori profilujo kaj filtri per interesoj browse_local_posts: Vidi vivantan fluon de publikaj mesaĝoj al Mastodon browse_public_posts: Vidi vivantan fluon de publikaj mesaĝoj al Mastodon - contact: Kontakti - contact_missing: Ne elektita + contact: Kontakto + contact_missing: Ne ŝargita contact_unavailable: Ne disponebla continue_to_web: Daŭrigi al la retaplikaĵo discover_users: Malkovri uzantojn @@ -22,7 +22,7 @@ eo: federation_hint_html: Per konto ĉe %{instance}, vi povos sekvi homojn ĉe iu ajn Mastodon nodo kaj preter. get_apps: Provu telefonan aplikaĵon hosted_on: "%{domain} estas nodo de Mastodon" - instance_actor_flash: 'Ĉi tiu konto estas virtuala aganto uzata por reprezenti la servilon mem kaj neniun individuan uzanton. Ĝi estas uzata por celoj de la federaĵo kaj devas ne esti brokita se vi ne volas bloki la tutan servilon, tiuokaze vi devas uzi blokadon de domajno. + instance_actor_flash: 'Ĉi tiu konto estas virtuala agento uzata por reprezenti la servilon mem kaj neniu individua uzanto. Ĝi estas uzata por celoj de la federaĵo kaj devas ne esti brokita se vi ne volas bloki la tutan servilon, en kiu okazo vi devas uzi blokadon de domajno. ' learn_more: Lerni pli @@ -36,14 +36,14 @@ eo: one: mesaĝo other: mesaĝoj status_count_before: Kie skribiĝis - terms: Uzkondiĉoj + terms: Kondiĉoj de la servo unavailable_content: Moderigitaj serviloj unavailable_content_description: domain: Servilo reason: 'Kialo:' rejecting_media_title: Filtritaj aŭdovidaĵoj silenced_title: Silentigitaj serviloj - suspended_title: Haltigitaj serviloj + suspended_title: Suspenditaj serviloj user_count_after: one: uzanto other: uzantoj @@ -56,6 +56,7 @@ eo: one: Sekvanto other: Sekvantoj following: Sekvatoj + instance_actor_flash: Ĉi tiu konto estas virtuala agento uzata por reprezenti la servilon mem kaj neniu individua uzanto. Ĝi estas uzata por celoj de la federaĵo kaj devas ne esti suspendita. joined: Aliĝis je %{date} last_active: laste aktiva link_verified_on: Proprieto de ĉi tiu ligilo estis kontrolita je %{date} @@ -73,10 +74,8 @@ eo: posts_tab_heading: Mesaĝoj posts_with_replies: Mesaĝoj kaj respondoj roles: - admin: Administranto bot: Roboto group: Grupo - moderator: Kontrolanto unavailable: Profilo ne disponebla unfollow: Ne plu sekvi admin: @@ -94,7 +93,6 @@ eo: avatar: Profilbildo by_domain: Domajno change_email: - changed_msg: Konta retadreso sukcese ŝanĝita! current_email: Nuna retadreso label: Ŝanĝi retadreson new_email: Nova retadreso @@ -138,7 +136,7 @@ eo: active: Aktiva all: Ĉio pending: Pritraktata - suspended: Haltigita + suspended: Suspendita title: Moderigado moderation_notes: Notoj de moderigado most_recent_activity: Lasta ago @@ -163,12 +161,6 @@ eo: reset: Restarigi reset_password: Restarigi pasvorton resubscribe: Reaboni - role: Permesoj - roles: - admin: Administranto - moderator: Moderigisto - staff: Teamo - user: Uzanto search: Serĉi search_same_email_domain: Aliaj uzantoj kun la sama retpoŝta domajno search_same_ip: Aliaj uzantoj kun la sama IP @@ -179,14 +171,14 @@ eo: sensitized: markita tikla shared_inbox_url: URL de kunhavigita leterkesto show: - created_reports: Kreitaj raportoj + created_reports: Faritaj raportoj targeted_reports: Raporitaj de alia - silence: Kaŝi + silence: Mutigita silenced: Silentigita statuses: Mesaĝoj subscribe: Aboni suspend: Haltigu - suspended: Haltigita + suspended: Suspendita title: Kontoj unblock_email: Malbloki retpoŝtadresojn unblocked_email_msg: Sukcese malblokis la retpoŝtadreson de %{username} @@ -195,6 +187,7 @@ eo: undo_silenced: Malfari kaŝon undo_suspension: Malfari haltigon unsubscribe: Malaboni + unsuspended_msg: La konto de %{username} estas sukcese reaktivigita username: Uzantnomo view_domain: Vidi la resumon de la domajno warn: Averti @@ -206,7 +199,7 @@ eo: assigned_to_self_report: Atribui Raporton change_email_user: Ŝanĝi retadreson de uzanto confirm_user: Konfermi uzanto - create_account_warning: Krei Averton + create_account_warning: Krei averton create_announcement: Krei Anoncon create_custom_emoji: Krei Propran emoĝion create_domain_allow: Krei Domajnan Permeson @@ -226,6 +219,7 @@ eo: disable_custom_emoji: Malebligi Propran Emoĝion disable_user: Malebligi uzanton enable_custom_emoji: Ebligi Propran Emoĝion + enable_sign_in_token_auth_user: Aktivigi la aŭtentigon de peco per retpoŝto por la uzanto enable_user: Ebligi uzanton memorialize_account: Memorigu Konton promote_user: Promocii Uzanton @@ -276,6 +270,8 @@ eo: reject_user_html: "%{name} malakceptis registriĝon de %{target}" remove_avatar_user_html: "%{name} forigis profilbildon de %{target}" reopen_report_html: "%{name} remalfermis signalon %{target}" + suspend_account_html: "%{name} suspendis la konton de %{target}" + unsuspend_account_html: "%{name} reaktivigis la konton de %{target}" update_announcement_html: "%{name} ĝisdatigis anoncon %{target}" deleted_status: "(forigita mesaĝo)" empty: Neniu protokolo trovita. @@ -361,7 +357,7 @@ eo: severity: desc_html: "Kaŝi igos la mesaĝojn de la konto nevideblaj al tiuj, kiuj ne sekvas tiun. Haltigi forigos ĉiujn enhavojn, aŭdovidaĵojn kaj datumojn de la konto. Uzu Nenio se vi simple volas malakcepti aŭdovidaĵojn." noop: Nenio - silence: Kaŝi + silence: Mutigi suspend: Haltigi title: Nova domajna blokado obfuscate: Malklara domajna nomo @@ -410,6 +406,7 @@ eo: instance_statuses_measure: konservitaj afiŝoj delivery: all: Ĉiuj + unavailable: Nedisponebla delivery_available: Liverado disponeblas empty: Neniuj domajnoj trovitaj. moderation: @@ -475,6 +472,8 @@ eo: one: "%{count} noto" other: "%{count} notoj" action_taken_by: Ago farita de + actions: + other_description_html: Vidu pli da elektebloj por kontroli la agadon de la konto kaj personecigi la komunikadon kun la konto pri kiu raporto. add_to_report: Aldoni pli al raporto are_you_sure: Ĉu vi certas? assign_to_self: Asigni al mi @@ -547,7 +546,7 @@ eo: desc_html: Nomoj de domajnoj, kiujn ĉi tiu servilo renkontis en la federauniverso title: Publikigi liston de malkovritaj serviloj preview_sensitive_media: - desc_html: Antaŭvido de ligiloj en aliaj retejoj montros bildeton eĉ se la aŭdovidaĵo estas markita kiel tikla + desc_html: La antaŭmontroj de ligilo al la aliaj retejoj montros bildeton eĉ se la aŭdovidaĵo estas markita kiel tikla title: Montri tiklajn aŭdovidaĵojn en la antaŭvidoj de OpenGraph profile_directory: desc_html: Permesi al uzantoj esti troveblaj @@ -559,21 +558,15 @@ eo: deletion: desc_html: Permesi al iu ajn forigi propran konton title: Permesi forigi konton - min_invite_role: - disabled: Neniu - title: Permesi invitojn de registrations_mode: modes: approved: Bezonas aprobi por aliĝi none: Neniu povas aliĝi open: Iu povas aliĝi - title: Registrado modo + title: Reĝimo de registriĝo show_known_fediverse_at_about_page: desc_html: Kiam ŝaltita, ĝi montros mesaĝojn de la tuta konata fediverse antaŭvide. Aliokaze, ĝi montros nur lokajn mesaĝojn. - title: Montri konatan fediverse en tempolinia antaŭvido - show_staff_badge: - desc_html: Montri teaman insignon en paĝo de uzanto - title: Montri teaman insignon + title: Inkluzivi frataran enhavon en la neaŭtentigita publika antaŭmontro de templinio site_description: desc_html: Enkonduka alineo en la ĉefpaĝo. Priskribu la unikaĵojn de ĉi tiu nodo de Mastodon, kaj ĉiujn aliajn gravaĵojn. Vi povas uzi HTML-etikedojn, kiel <a> kaj <em>. title: Priskribo de la servilo @@ -585,14 +578,14 @@ eo: title: Mallonga priskribo de la servilo site_terms: desc_html: Vi povas skribi vian propran privatecan politikon, viajn uzkondiĉojn aŭ aliajn leĝaĵojn. Vi povas uzi HTML-etikedojn - title: Propraj uzkondiĉoj + title: Propraj kondiĉoj de la servo site_title: Nomo de la servilo thumbnail: desc_html: Uzata por antaŭvidoj per OpenGraph kaj per API. 1200x630px rekomendita title: Bildeto de la servilo timeline_preview: desc_html: Montri publikan templinion en komenca paĝo - title: Tempolinia antaŭvido + title: Permesi la neaŭtentigitan aliron al la publika templinio title: Retejaj agordoj trends: desc_html: Publike montri antaŭe kontrolitajn kradvortojn, kiuj nune furoras @@ -615,6 +608,7 @@ eo: actions: delete_statuses: "%{name} forigis afiŝojn de %{target}" disable: "%{name} malebligis la konton de %{target}" + suspend: "%{name} suspendis la konton de %{target}" appeal_approved: Apelaciita system_checks: database_schema_check: @@ -846,15 +840,23 @@ eo: public: Publika templinio thread: Konversacioj edit: + add_keyword: Aldoni ĉefvorton + keywords: Ĉefvortoj title: Ŝanĝi filtrilojn errors: invalid_context: Neniu aŭ nevalida kunteksto donita - invalid_irreversible: Nemalfarebla filtrado funkcias nur por hejma aŭ sciiga kuntekstoj index: + contexts: Filtri en %{contexts} delete: Forigi empty: Vi havas neniun filtrilon. + expires_in: Eksvalidiĝi en %{distance} + expires_on: Eksvalidiĝi je %{date} + keywords: + one: "%{count} ĉefvorto" + other: "%{count} ĉefvortoj" title: Filtriloj new: + save: Konservi novan filtrilon title: Aldoni novan filtrilon footer: developers: Programistoj @@ -1010,9 +1012,9 @@ eo: wrong_code: La enmetita kodo estis nevalida! Ĉu la servila tempo kaj la aparata tempo ĝustas? pagination: newer: Pli nova - next: Sekva + next: Antaŭen older: Malpli nova - prev: Antaŭa + prev: Malantaŭen truncate: "…" polls: errors: @@ -1060,13 +1062,15 @@ eo: remote_interaction: favourite: proceed: Konfirmi la stelumon - prompt: 'Vi volas stelumi ĉi tiun mesaĝon:' + prompt: 'Vi volas aldoni ĉi tiun mesaĝon al viaj preferaĵoj:' reblog: proceed: Konfirmi la diskonigon prompt: 'Vi volas diskonigi ĉi tiun mesaĝon:' reply: proceed: Konfirmi la respondon prompt: 'Vi volas respondi al ĉi tiu mesaĝo:' + rss: + content_warning: 'Averto pri enhavo:' scheduled_statuses: over_daily_limit: Vi transpasis la limigon al %{limit} samtage planitaj mesaĝoj over_total_limit: Vi transpasis la limigon al %{limit} planitaj mesaĝoj @@ -1125,7 +1129,7 @@ eo: export: Eksporti datumojn featured_tags: Elstarigitaj kradvortoj import: Importi - import_and_export: Alporto kaj elporto + import_and_export: Enporti kaj elporti migrate: Konta migrado notifications: Sciigoj preferences: Preferoj @@ -1146,7 +1150,7 @@ eo: one: "%{count} video" other: "%{count} videoj" boosted_from_html: Diskonigita de %{acct_link} - content_warning: 'Enhava averto: %{warning}' + content_warning: 'Averto de la enhavo: %{warning}' disallowed_hashtags: one: 'enhavas malpermesitan kradvorton: %{tags}' other: 'enhavis malpermesitan kradvorton: %{tags}' @@ -1181,10 +1185,11 @@ eo: statuses_cleanup: enabled: Aŭtomate forigi malnovajn postojn exceptions: Esceptoj - ignore_favs: Ignori ŝatatajn + ignore_favs: Ignori la preferaĵojn ignore_reblogs: Ignori akcelojn keep_direct: Konservi rektajn mesaĝojn keep_direct_hint: Ne forigos viajn rektajn mesagôjn + keep_self_fav_hint: Ne forviŝi viajn proprajn afiŝojn, se vi aldonis ilin al viaj preferaĵoj min_age: '1209600': 2 semajnoj '15778476': 6 monatoj @@ -1238,12 +1243,12 @@ eo: disable: Via konto %{acct} estas frostigita none: Averto por %{acct} silence: Via konto %{acct} estas limigita - suspend: Via konto %{acct} estas haltigita + suspend: Via konto %{acct} estas suspendita title: disable: Konto frostigita none: Averto silence: Konto limigita - suspend: Konto haltigita + suspend: Konto suspendita welcome: edit_profile_action: Agordi profilon edit_profile_step: Vi povas proprigi vian profilon per alŝuto de profilbildo, fonbildo, ŝanĝo de via afiŝita nomo kaj pli. Se vi ŝatus kontroli novajn sekvantojn antaŭ ol ili rajtas sekvi vin, vi povas ŝlosi vian konton. @@ -1255,9 +1260,9 @@ eo: review_preferences_action: Ŝanĝi preferojn review_preferences_step: Estu certa ke vi agordis viajn preferojn, kiel kiujn retmesaĝojn vi ŝatus ricevi, aŭ kiun dekomencan privatecan nivelon vi ŝatus ke viaj mesaĝoj havu. Se tio ne ĝenas vin, vi povas ebligi aŭtomatan ekigon de GIF-oj. subject: Bonvenon en Mastodon - tip_federated_timeline: La federata templinio estas rekta vido de la reto de Mastodon. Sed ĝi inkluzivas nur personojn kiujn via najbaroj abonas, do ĝi ne estas kompleta. + tip_federated_timeline: La fratara templinio estas rekta montro de la reto de Mastodon. Sed ĝi inkluzivas nur personojn kiujn viaj najbaroj abonas, do ĝi ne estas kompleta. tip_following: Vi dekomence sekvas la administrantojn de via servilo. Por trovi pli da interesaj homoj, rigardu la lokan kaj frataran templiniojn. - tip_local_timeline: La loka templinio estas antaŭvido de la homoj en %{instance}. Ĉi tiuj estas viaj apudaj najbaroj! + tip_local_timeline: La loka templinio estas rekta montro de personoj ĉe %{instance}. Ĉi tiuj estas viaj senperaj najbaroj! tip_mobile_webapp: Se via telefona retumilo proponas al vi aldoni Mastodon al via hejma ekrano, vi povas ricevi puŝsciigojn. Tio multmaniere funkcias kiel operaciuma aplikaĵo! tips: Konsiloj title: Bonvenon, %{name}! diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 79ae68bf4..c4d9ee969 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -83,10 +83,8 @@ es-AR: posts_tab_heading: Mensajes posts_with_replies: Mensajes y respuestas roles: - admin: Administrador bot: Bot group: Grupo - moderator: Moderador unavailable: Perfil no disponible unfollow: Dejar de seguir admin: @@ -105,12 +103,17 @@ es-AR: avatar: Avatar by_domain: Dominio change_email: - changed_msg: "¡Correo electrónico de cuenta cambiado exitosamente!" + changed_msg: "¡Correo electrónico cambiado exitosamente!" current_email: Correo electrónico actual label: Cambiar correo electrónico new_email: Nuevo correo electrónico submit: Cambiar correo electrónico title: Cambiar correo electrónico para %{username} + change_role: + changed_msg: "¡Rol cambiado exitosamente!" + label: Cambiar rol + no_role: Sin rol + title: Cambiar rol para %{username} confirm: Confirmar confirmed: Confirmado confirming: Confirmación @@ -154,6 +157,7 @@ es-AR: active: Activas all: Todas pending: Pendientes + silenced: Limitada suspended: Suspendidas title: Moderación moderation_notes: Notas de moderación @@ -161,6 +165,7 @@ es-AR: most_recent_ip: Dirección IP más reciente no_account_selected: No se cambió ninguna cuenta ya que ninguna fue seleccionada no_limits_imposed: Sin límites impuestos + no_role_assigned: Sin rol asignado not_subscribed: No suscripto pending: Revisión pendiente perform_full_suspension: Suspender @@ -187,12 +192,7 @@ es-AR: reset: Restablecer reset_password: Cambiar contraseña resubscribe: Resuscribir - role: Permisos - roles: - admin: Administrador - moderator: Moderador - staff: Administración - user: Usuario + role: Rol search: Buscar search_same_email_domain: Otros usuarios con el mismo dominio de correo electrónico search_same_ip: Otros usuarios con la misma dirección IP @@ -649,6 +649,67 @@ es-AR: unresolved: No resueltas updated_at: Actualizadas view_profile: Ver perfil + roles: + add_new: Agregar rol + assigned_users: + one: "%{count} usuario" + other: "%{count} usuarios" + categories: + administration: Administración + devops: Operadores de desarrollo + invites: Invitaciones + moderation: Moderación + special: Especial + delete: Eliminar + description_html: Con roles de usuario, podés personalizar las funciones y áreas de Mastodon a las que pueden acceder tus usuarios. + edit: Editar rol de «%{name}» + everyone: Permisos predeterminados + everyone_full_description_html: Este es el rol base que afecta a todos los usuarios, incluso aquellos sin un rol asignado. Todos los otros roles heredan permisos de él. + permissions_count: + one: "%{count} permiso" + other: "%{count} permisos" + privileges: + administrator: Administrador + administrator_description: Los usuarios con este permiso saltarán todos los permisos + delete_user_data: Eliminar datos del usuario + delete_user_data_description: Permite a los usuarios eliminar los datos de otros usuarios sin demora + invite_users: Invitar usuarios + invite_users_description: Permite a los usuarios invitar a nuevas personas al servidor + manage_announcements: Administrar anuncios + manage_announcements_description: Permite a los usuarios administrar anuncios en el servidor + manage_appeals: Administrar apelaciones + manage_appeals_description: Permite a los usuarios revisar apelaciones contra acciones de moderación + manage_blocks: Administrar bloqueos + manage_blocks_description: Permite a los usuarios bloquear proveedores de correo electrónico y direcciones IP + manage_custom_emojis: Administrar emojis personalizados + manage_custom_emojis_description: Permite a los usuarios administrar emojis personalizados en el servidor + manage_federation: Administrar Federación + manage_federation_description: Permite a los usuarios bloquear o permitir la federación con otros dominios y controlar las entregas + manage_invites: Administrar invitaciones + manage_invites_description: Permite a los usuarios navegar y desactivar los enlaces de invitación + manage_reports: Administrar denuncias + manage_reports_description: Permite a los usuarios revisar denuncias y realizar acciones de moderación contra ellas + manage_roles: Administrar roles + manage_roles_description: Permite a los usuarios administrar y asignar roles por debajo de los suyos + manage_rules: Administrar reglas + manage_rules_description: Permite a los usuarios cambiar las reglas del servidor + manage_settings: Administrar configuración + manage_settings_description: Permite a los usuarios cambiar la configuración del sitio + manage_taxonomies: Administrar taxonomías + manage_taxonomies_description: Permite a los usuarios revisar el contenido de tendencia y actualizar la configuración de las etiquetas + manage_user_access: Administrar acceso de usuario + manage_user_access_description: Permite a los usuarios deshabilitar la autenticación de dos factores de otros usuarios, cambiar su dirección de correo electrónico y restablecer su contraseña + manage_users: Administrar usuarios + manage_users_description: Permite a los usuarios ver los detalles de otros usuarios y realizar acciones de moderación contra ellos + manage_webhooks: Administrar Webhooks + manage_webhooks_description: Permite a los usuarios configurar webhooks para eventos administrativos + view_audit_log: Ver auditoría + view_audit_log_description: Permite a los usuarios ver un historial de acciones administrativas en el servidor + view_dashboard: Ver panel + view_dashboard_description: Permite a los usuarios acceder al panel de control y varias métricas + view_devops: Operadores de desarrollo + view_devops_description: Permite a los usuarios acceder a los paneles de Sidekiq y pgHero + title: Roles rules: add_new: Agregar regla delete: Eliminar @@ -701,9 +762,6 @@ es-AR: deletion: desc_html: Permitir que cualquiera elimine su cuenta title: Abrir eliminación de cuenta - min_invite_role: - disabled: Nadie - title: Permitir invitaciones de require_invite_text: desc_html: Cuando los registros requieran aprobación manual, hacé que la solicitud de invitación "¿Por qué querés unirte?" sea obligatoria, en vez de opcional title: Requerir que los nuevos usuarios llenen un texto de solicitud de invitación @@ -716,9 +774,6 @@ es-AR: show_known_fediverse_at_about_page: desc_html: Cuando está deshabilitado, restringe la línea temporal pública enlazada desde la página de inicio para mostrar sólo contenido local title: Incluir contenido federado en la página de línea temporal pública no autenticada - show_staff_badge: - desc_html: Mostrar una insignia de administración en la página de un usuario - title: Mostrar insignia de administración site_description: desc_html: Párrafo introductorio en la API. Describe qué hace especial a este servidor de Mastodon y todo lo demás que sea importante. Podés usar etiquetas HTML, en particular <a> y <em>. title: Descripción del servidor @@ -1124,15 +1179,24 @@ es-AR: public: Líneas temporales públicas thread: Conversaciones edit: + add_keyword: Agregar palabra clave + keywords: Palabras clave title: Editar filtro errors: + deprecated_api_multiple_keywords: Estos parámetros no se pueden cambiar de esta aplicación porque se aplican a más de una palabra clave de filtro. Usá una aplicación más reciente o la interface web. invalid_context: Se suministró un contexto no válido o vacío - invalid_irreversible: El filtrado irreversible sólo funciona con los contextos de "Principal" o de "Notificaciones" index: + contexts: Filtros en %{contexts} delete: Eliminar empty: No tenés filtros. + expires_in: Caduca en %{distance} + expires_on: Caduca en %{date} + keywords: + one: "%{count} palabra clave" + other: "%{count} palabras clave" title: Filtros new: + save: Guardar nuevo filtro title: Agregar nuevo filtro footer: developers: Desarrolladores @@ -1251,6 +1315,8 @@ es-AR: copy_account_note_text: 'Este usuario se mudó desde %{acct}, acá están tus notas previas sobre él/ella:' notification_mailer: admin: + report: + subject: "%{name} envió una denuncia" sign_up: subject: Se registró %{name} digest: diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index f57fb9601..7ba46a89c 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -83,10 +83,8 @@ es-MX: posts_tab_heading: Toots posts_with_replies: Toots con respuestas roles: - admin: Administrador bot: Bot group: Grupo - moderator: Moderador unavailable: Perfil no disponible unfollow: Dejar de seguir admin: @@ -105,7 +103,6 @@ es-MX: avatar: Foto de perfil by_domain: Dominio change_email: - changed_msg: "¡El correo electrónico se ha actualizado correctamente!" current_email: Correo electrónico actual label: Cambiar el correo electrónico new_email: Nuevo correo electrónico @@ -187,12 +184,6 @@ es-MX: reset: Reiniciar reset_password: Reiniciar contraseña resubscribe: Re-suscribir - role: Permisos - roles: - admin: Administrador - moderator: Moderador - staff: Personal - user: Usuario search: Buscar search_same_email_domain: Otros usuarios con el mismo dominio de correo search_same_ip: Otros usuarios con la misma IP @@ -701,9 +692,6 @@ es-MX: deletion: desc_html: Permite a cualquiera a eliminar su cuenta title: Eliminación de cuenta abierta - min_invite_role: - disabled: Nadie - title: Permitir invitaciones de require_invite_text: desc_html: Cuando los registros requieren aprobación manual, haga obligatorio en la invitaciones el campo "¿Por qué quieres unirte?" en lugar de opcional title: Requiere a los nuevos usuarios rellenar un texto de solicitud de invitación @@ -716,9 +704,6 @@ es-MX: show_known_fediverse_at_about_page: desc_html: Cuando esté activado, se mostrarán toots de todo el fediverso conocido en la vista previa. En otro caso, se mostrarán solamente toots locales. title: Mostrar fediverso conocido en la vista previa de la historia - show_staff_badge: - desc_html: Mostrar un parche de staff en la página de un usuario - title: Mostrar parche de staff site_description: desc_html: Párrafo introductorio en la portada y en meta tags. Puedes usar tags HTML, en particular <a> y <em>. title: Descripción de instancia @@ -852,6 +837,26 @@ es-MX: edit_preset: Editar aviso predeterminado empty: Aún no has definido ningún preajuste de advertencia. title: Editar configuración predeterminada de avisos + webhooks: + add_new: Añadir endpoint + delete: Eliminar + description_html: Un webhook permite a Mastodon enviar notificaciones en tiempo real sobre los eventos elegidos a tu propia aplicación, para que tu aplicación pueda lanzar reacciones automáticamente. + disable: Deshabilitar + disabled: Deshabilitado + edit: Editar endpoint + empty: Aún no tienes ningún endpoint de webhook configurado. + enable: Habilitar + enabled: Activo + enabled_events: + one: 1 evento habilitado + other: "%{count} eventos habilitados" + events: Eventos + new: Nuevo webhook + rotate_secret: Rotar secreto + secret: Firmando secreto + status: Estado + title: Webhooks + webhook: Webhook admin_mailer: new_appeal: actions: @@ -1104,15 +1109,24 @@ es-MX: public: Timeline público thread: Conversaciones edit: + add_keyword: Añadir palabra clave + keywords: Palabras clave title: Editar filtro errors: + deprecated_api_multiple_keywords: Estos parámetros no se pueden cambiar desde esta aplicación porque se aplican a más de una palabra clave de filtro. Utilice una aplicación más reciente o la interfaz web. invalid_context: Se suminstró un contexto inválido o vacío - invalid_irreversible: El filtrado irreversible solo funciona con los contextos propios o de notificaciones index: + contexts: Filtros en %{contexts} delete: Borrar empty: No tienes filtros. + expires_in: Caduca en %{distance} + expires_on: Expira el %{date} + keywords: + one: "%{count} palabra clave" + other: "%{count} palabras clave" title: Filtros new: + save: Guardar nuevo filtro title: Añadir un nuevo filtro footer: developers: Desarrolladores @@ -1231,6 +1245,8 @@ es-MX: copy_account_note_text: 'Este usuario se mudó desde %{acct}, aquí estaban tus notas anteriores sobre él:' notification_mailer: admin: + report: + subject: "%{name} envió un informe" sign_up: subject: "%{name} se registró" digest: diff --git a/config/locales/es.yml b/config/locales/es.yml index 96d985f53..568ad46d9 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -83,10 +83,8 @@ es: posts_tab_heading: Publicaciones posts_with_replies: Publicaciones y respuestas roles: - admin: Administrador bot: Bot group: Grupo - moderator: Moderador unavailable: Perfil no disponible unfollow: Dejar de seguir admin: @@ -105,12 +103,17 @@ es: avatar: Avatar by_domain: Dominio change_email: - changed_msg: "¡El correo electrónico se ha actualizado correctamente!" + changed_msg: "¡Email cambiado con éxito!" current_email: Correo electrónico actual label: Cambiar el correo electrónico new_email: Nuevo correo electrónico submit: Cambiar el correo electrónico title: Cambiar el correo electrónico de %{username} + change_role: + changed_msg: "¡Rol cambiado con éxito!" + label: Cambiar rol + no_role: Sin rol + title: Cambiar rol para %{username} confirm: Confirmar confirmed: Confirmado confirming: Confirmando @@ -154,6 +157,7 @@ es: active: Activo all: Todos pending: Pendiente + silenced: Limitado suspended: Suspendidos title: Moderación moderation_notes: Notas de moderación @@ -161,6 +165,7 @@ es: most_recent_ip: IP más reciente no_account_selected: Ninguna cuenta se cambió como ninguna fue seleccionada no_limits_imposed: Sin límites impuestos + no_role_assigned: Ningún rol asignado not_subscribed: No se está suscrito pending: Revisión pendiente perform_full_suspension: Suspender @@ -187,12 +192,7 @@ es: reset: Reiniciar reset_password: Reiniciar contraseña resubscribe: Re-suscribir - role: Permisos - roles: - admin: Administrador - moderator: Moderador - staff: Personal - user: Usuario + role: Rol search: Buscar search_same_email_domain: Otros usuarios con el mismo dominio de correo search_same_ip: Otros usuarios con la misma IP @@ -649,6 +649,67 @@ es: unresolved: No resuelto updated_at: Actualizado view_profile: Ver perfil + roles: + add_new: Añadir rol + assigned_users: + one: "%{count} usuario" + other: "%{count} usuarios" + categories: + administration: Administración + devops: DevOps + invites: Invitaciones + moderation: Moderación + special: Especial + delete: Eliminar + description_html: Con roles de usuario, puede personalizar las funciones y áreas de Mastodon a las que pueden acceder sus usuarios. + edit: Editar rol '%{name}' + everyone: Permisos por defecto + everyone_full_description_html: Este es el rol base que afecta a todos los usuarios, incluso aquellos sin un rol asignado. Todos los otros roles heredan permisos de él. + permissions_count: + one: "%{count} permiso" + other: "%{count} permisos" + privileges: + administrator: Administrador + administrator_description: Los usuarios con este permiso saltarán todos los permisos + delete_user_data: Borrar Datos de Usuario + delete_user_data_description: Permite a los usuarios eliminar los datos de otros usuarios sin demora + invite_users: Invitar usuarios + invite_users_description: Permite a los usuarios invitar a nuevas personas al servidor + manage_announcements: Administrar Anuncios + manage_announcements_description: Permite a los usuarios gestionar anuncios en el servidor + manage_appeals: Administrar Apelaciones + manage_appeals_description: Permite a los usuarios revisar apelaciones contra acciones de moderación + manage_blocks: Administrar Bloqueos + manage_blocks_description: Permite a los usuarios bloquear los proveedores de e-mail y las direcciones IP + manage_custom_emojis: Administrar Emojis Personalizados + manage_custom_emojis_description: Permite a los usuarios gestionar emojis personalizados en el servidor + manage_federation: Administrar Federación + manage_federation_description: Permite a los usuarios bloquear o permitir la federación con otros dominios, y controlar la entregabilidad + manage_invites: Administrar Invitaciones + manage_invites_description: Permite a los usuarios navegar y desactivar los enlaces de invitación + manage_reports: Administrar Informes + manage_reports_description: Permite a los usuarios revisar informes y realizar acciones de moderación basadas en ellos + manage_roles: Administrar Roles + manage_roles_description: Permite a los usuarios administrar y asignar roles por debajo de los suyos + manage_rules: Gestionar Reglas + manage_rules_description: Permite a los usuarios cambiar las reglas del servidor + manage_settings: Administrar Ajustes + manage_settings_description: Permite a los usuarios cambiar la configuración del sitio + manage_taxonomies: Administrar Taxonomías + manage_taxonomies_description: Permite a los usuarios revisar el contenido en tendencia y actualizar la configuración de las etiquetas + manage_user_access: Administrar Acceso de Usuarios + manage_user_access_description: Permite a los usuarios desactivar la autenticación de dos factores de otros usuarios, cambiar su dirección de correo electrónico y restablecer su contraseña + manage_users: Administrar Usuarios + manage_users_description: Permite a los usuarios ver los detalles de otros usuarios y realizar acciones de moderación contra ellos + manage_webhooks: Administrar Webhooks + manage_webhooks_description: Permite a los usuarios configurar webhooks para eventos administrativos + view_audit_log: Ver Registro de Auditoría + view_audit_log_description: Permite a los usuarios ver un historial de acciones administrativas en el servidor + view_dashboard: Ver Panel de Control + view_dashboard_description: Permite a los usuarios acceder al panel de control y varias métricas + view_devops: DevOps + view_devops_description: Permite a los usuarios acceder a los paneles de control Sidekiq y pgHero + title: Roles rules: add_new: Añadir norma delete: Eliminar @@ -701,9 +762,6 @@ es: deletion: desc_html: Permite a cualquiera a eliminar su cuenta title: Eliminación de cuenta abierta - min_invite_role: - disabled: Nadie - title: Permitir invitaciones de require_invite_text: desc_html: Cuando los registros requieren aprobación manual, haga obligatorio en la invitaciones el campo "¿Por qué quieres unirte?" en lugar de opcional title: Requiere a los nuevos usuarios rellenar un texto de solicitud de invitación @@ -716,9 +774,6 @@ es: show_known_fediverse_at_about_page: desc_html: Cuando esté desactivado, se mostrarán solamente publicaciones locales en la línea temporal pública title: Incluye contenido federado en la página de línea de tiempo pública no autenticada - show_staff_badge: - desc_html: Mostrar un parche de staff en la página de un usuario - title: Mostrar parche de staff site_description: desc_html: Párrafo introductorio en la portada y en meta tags. Puedes usar tags HTML, en particular <a> y <em>. title: Descripción de instancia @@ -1124,15 +1179,24 @@ es: public: Líneas de tiempo públicas thread: Conversaciones edit: + add_keyword: Añadir palabra clave + keywords: Palabras clave title: Editar filtro errors: + deprecated_api_multiple_keywords: Estos parámetros no se pueden cambiar desde esta aplicación porque se aplican a más de una palabra clave de filtro. Utilice una aplicación más reciente o la interfaz web. invalid_context: Se suminstró un contexto inválido o vacío - invalid_irreversible: El filtrado irreversible solo funciona con los contextos propios o de notificaciones index: + contexts: Filtros en %{contexts} delete: Borrar empty: No tienes filtros. + expires_in: Caduca en %{distance} + expires_on: Expira el %{date} + keywords: + one: "%{count} palabra clave" + other: "%{count} palabras clave" title: Filtros new: + save: Guardar nuevo filtro title: Añadir nuevo filtro footer: developers: Desarrolladores @@ -1251,6 +1315,8 @@ es: copy_account_note_text: 'Este usuario se mudó desde %{acct}, aquí estaban tus notas anteriores sobre él:' notification_mailer: admin: + report: + subject: "%{name} envió un informe" sign_up: subject: "%{name} se registró" digest: diff --git a/config/locales/et.yml b/config/locales/et.yml index a551ab424..6aab7a219 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -75,10 +75,8 @@ et: posts_tab_heading: Postitused posts_with_replies: Postitused ja vastused roles: - admin: Administraator bot: Robot group: Grupp - moderator: Moderaator unavailable: Profiil pole saadaval unfollow: Lõpeta jälgimine admin: @@ -96,7 +94,6 @@ et: avatar: Profiilipilt by_domain: Domeen change_email: - changed_msg: Konto e-postiaadress edukalt muudetud! current_email: Praegune e-postiaadress label: Muuda e-posti aadressi new_email: Uus е-posti aadress @@ -160,12 +157,6 @@ et: reset: Lähtesta reset_password: Lähtesta salasõna resubscribe: Telli taas - role: Õigused - roles: - admin: Administraator - moderator: Moderaator - staff: Personal - user: Kasutaja search: Otsi search_same_email_domain: Muud kasutajad sama e-posti domeeniga search_same_ip: Teised kasutajad, kellel on sama IP @@ -443,9 +434,6 @@ et: deletion: desc_html: Luba kasutajatel oma konto kustutada title: Ava kontode kustutamine - min_invite_role: - disabled: Mitte keegi - title: Luba kutseid registrations_mode: modes: approved: Kinnitus vajalik konto loomisel @@ -455,9 +443,6 @@ et: show_known_fediverse_at_about_page: desc_html: Kui lubatud, näitab kõiki teatud fediversumi tuututusi. Vastasel juhul näidatakse ainult kohalike tuututusi. title: Näita teatud fediversumit ajajoone eelvaates - show_staff_badge: - desc_html: Näita personalimärki kasutaja profiilil - title: Näita personalimärki site_description: desc_html: Sissejuhatuslik lõik API kohta. Kirjelda, mis teeb selle Mastodoni serveri eriliseks ja ka muud tähtsat. Te saate kasutada HTMLi silte, peamiselt <a> ja <em>. title: Serveri kirjeldus @@ -683,7 +668,6 @@ et: title: Muuda filtrit errors: invalid_context: Puudulik või vale kontekst - invalid_irreversible: Taastamatu filter töötab ainult kodu või teavituste kontekstis index: delete: Kustuta empty: Teil pole filtreid. diff --git a/config/locales/eu.yml b/config/locales/eu.yml index a71cd186d..3202b9b9c 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -80,10 +80,8 @@ eu: posts_tab_heading: Bidalketa posts_with_replies: Bidalketak eta erantzunak roles: - admin: Administratzailea bot: Bot-a group: Taldea - moderator: Moderatzailea unavailable: Profila ez dago eskuragarri unfollow: Utzi jarraitzeari admin: @@ -102,7 +100,6 @@ eu: avatar: Abatarra by_domain: Domeinua change_email: - changed_msg: e-mail kontua ongi aldatu da! current_email: Uneko e-mail helbidea label: Aldatu e-mail helbidea new_email: E-mail berria @@ -184,12 +181,6 @@ eu: reset: Berrezarri reset_password: Berrezarri pasahitza resubscribe: Berriro harpidetu - role: Baimenak - roles: - admin: Administratzailea - moderator: Moderatzailea - staff: Langilea - user: Erabiltzailea search: Bilatu search_same_email_domain: E-mail domeinu bera duten beste erabiltzailean search_same_ip: IP bera duten beste erabiltzaileak @@ -674,9 +665,6 @@ eu: deletion: desc_html: Baimendu edonori bere kontua ezabatzea title: Ireki kontu ezabaketa - min_invite_role: - disabled: Inor ez - title: Baimendu hauen gobidapenak require_invite_text: desc_html: Izen emateak eskuz onartu behar direnean, "Zergatik elkartu nahi duzu?" testu sarrera derrigorrezko bezala ezarri, ez hautazko title: Eskatu erabiltzaile berriei bat egiteko arrazoia sartzeko @@ -689,9 +677,6 @@ eu: show_known_fediverse_at_about_page: desc_html: Txandakatzean, fedibertso ezagun osoko tootak bistaratuko ditu aurrebistan. Bestela, toot lokalak besterik ez ditu erakutsiko title: Erakutsi fedibertsu ezagun osoko denbora-lerroa aurrebistan - show_staff_badge: - desc_html: Erakutsi langile banda erabiltzailearen orrian - title: Erakutsi langile banda site_description: desc_html: Azaleko orrian agertuko den sarrera paragrafoa. Azaldu zerk egiten duen berezi Mastodon zerbitzari hau eta garrantzizko beste edozer. HTML etiketak erabili ditzakezu, zehazki <a> eta <em>. title: Zerbitzariaren deskripzioa @@ -1020,7 +1005,6 @@ eu: title: Editatu iragazkia errors: invalid_context: Testuinguru baliogabe edo hutsa eman da - invalid_irreversible: Behin betiko iragazketa hasiera edo jakinarazpenen testuinguruan besterik ez dabil index: delete: Ezabatu empty: Ez duzu iragazkirik. diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 93b766859..d6acaf534 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -82,10 +82,8 @@ fa: posts_tab_heading: فرسته‌ها posts_with_replies: فرسته‌ها و پاسخ‌ها roles: - admin: مدیر bot: ربات group: گروه - moderator: ناظر unavailable: نمایهٔ ناموجود unfollow: پایان پیگیری admin: @@ -104,7 +102,6 @@ fa: avatar: تصویر نمایه by_domain: دامین change_email: - changed_msg: نشانی رایانامهٔ این حساب با موفقیت تغییر کرد! current_email: رایانامهٔ کنونی label: تغییر رایانامه new_email: رایانامهٔ جدید @@ -183,12 +180,6 @@ fa: reset: بازنشانی reset_password: بازنشانی رمز resubscribe: اشتراک دوباره - role: اجازه‌ها - roles: - admin: مدیر - moderator: ناظر - staff: کارمند - user: کاربر search: جستجو search_same_email_domain: دیگر کاربران با دامنهٔ رایانامهٔ یکسان search_same_ip: دیگر کاربران با IP یکسان @@ -654,9 +645,6 @@ fa: deletion: desc_html: هر کسی بتواند حساب خود را پاک کند title: فعال‌سازی پاک‌کردن حساب - min_invite_role: - disabled: هیچ کس - title: اجازهٔ دعوت به require_invite_text: desc_html: زمانی که نام‌نویسی نیازمند تایید دستی است، متن «چرا می‌خواهید عضو شود؟» بخش درخواست دعوت را به جای اختیاری، اجباری کنید title: نیازمند پر کردن متن درخواست دعوت توسط کاربران جدید @@ -669,9 +657,6 @@ fa: show_known_fediverse_at_about_page: desc_html: اگر از کار انداخته شود، خط‌زمانی همگانی را محدود می‌کند؛ تا فقط محتوای محلّی را نمایش دهد. title: نمایش سرورهای دیگر در پیش‌نمایش این سرور - show_staff_badge: - desc_html: نمایش علامت همکار روی صفحهٔ کاربر - title: نمایش علامت همکار site_description: desc_html: معرفی کوتاهی دربارهٔ رابط برنامه‌نویسی کاربردی. دربارهٔ این که چه چیزی دربارهٔ این کارساز ماستودون ویژه است یا هر چیز مهم دیگری بنویسید. می‌توانید HTML بنویسید، به‌ویژه <a> و <em>. title: دربارهٔ این سرور @@ -983,7 +968,6 @@ fa: title: ویرایش پالایه errors: invalid_context: زمینه‌ای موجود نیست یا نامعتبر است - invalid_irreversible: پالایش برگشت‌ناپذیر تنها در زمینهٔ خانه یا آگاهی‌ها کار می‌کنند index: delete: پاک‌کردن empty: هیچ پالایه‌ای ندارید. diff --git a/config/locales/fi.yml b/config/locales/fi.yml index ff369f2fe..bbc44d644 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -82,10 +82,8 @@ fi: posts_tab_heading: Julkaisut posts_with_replies: Julkaisut ja vastaukset roles: - admin: Ylläpitäjä bot: Botti group: Ryhmä - moderator: Moderaattori unavailable: Profiili ei saatavilla unfollow: Lopeta seuraaminen admin: @@ -104,7 +102,6 @@ fi: avatar: Profiilikuva by_domain: Verkkotunnus change_email: - changed_msg: Tilin sähköposti vaihdettu onnistuneesti! current_email: Nykyinen sähköposti label: Vaihda sähköposti new_email: Uusi sähköposti @@ -183,12 +180,6 @@ fi: reset: Palauta reset_password: Palauta salasana resubscribe: Tilaa uudelleen - role: Oikeudet - roles: - admin: Ylläpitäjä - moderator: Moderaattori - staff: Henkilöstö - user: Käyttäjä search: Hae search_same_email_domain: Muut käyttäjät, joilla on sama sähköpostiverkkotunnus search_same_ip: Muut käyttäjät samalla IP-osoitteella @@ -657,9 +648,6 @@ fi: deletion: desc_html: Salli jokaisen poistaa oma tilinsä title: Avoin tilin poisto - min_invite_role: - disabled: Ei kukaan - title: Salli kutsut käyttäjältä require_invite_text: desc_html: Kun rekisteröinnit edellyttävät manuaalista hyväksyntää, tee “Miksi haluat liittyä?” teksti pakolliseksi eikä valinnaiseksi title: Vaadi uusia käyttäjiä antamaan liittymisen syy @@ -672,9 +660,6 @@ fi: show_known_fediverse_at_about_page: desc_html: Kun tämä on valittu, esikatselussa näytetään tuuttaukset kaikkialta tunnetusta fediversumista. Muutoin näytetään vain paikalliset tuuttaukset. title: Näytä aikajanan esikatselussa koko tunnettu fediversumi - show_staff_badge: - desc_html: Näytä käyttäjäsivulla henkilöstömerkki - title: Näytä henkilöstömerkki site_description: desc_html: Esittelykappale etusivulla ja metatunnisteissa. HTML-tagit käytössä, tärkeimmät ovat <a> ja <em>. title: Instanssin kuvaus @@ -1048,7 +1033,6 @@ fi: title: Muokkaa suodatinta errors: invalid_context: Ei sisältöä tai se on virheellinen - invalid_irreversible: Sen sijaan suodatus toimii vain kodin tai ilmoitusten yhteydessä index: delete: Poista empty: Sinulla ei ole suodattimia. diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 5f74972f9..6246836ae 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -83,10 +83,8 @@ fr: posts_tab_heading: Messages posts_with_replies: Messages et réponses roles: - admin: Admin bot: Robot group: Groupe - moderator: Modérateur·trice unavailable: Profil non disponible unfollow: Ne plus suivre admin: @@ -105,7 +103,6 @@ fr: avatar: Avatar by_domain: Domaine change_email: - changed_msg: Courriel du compte modifié avec succès ! current_email: Courriel actuel label: Modifier le courriel new_email: Nouveau courriel @@ -187,12 +184,6 @@ fr: reset: Réinitialiser reset_password: Réinitialiser le mot de passe resubscribe: Se réabonner - role: Permissions - roles: - admin: Administrateur - moderator: Modérateur - staff: Équipe - user: Utilisateur search: Rechercher search_same_email_domain: Autres utilisateurs·trices avec le même domaine de courriel search_same_ip: Autres utilisateur·rice·s avec la même IP @@ -701,9 +692,6 @@ fr: deletion: desc_html: Permettre à tou·te·s les utilisateur·rice·s de supprimer leur compte title: Autoriser les suppressions de compte - min_invite_role: - disabled: Personne - title: Autoriser les invitations par require_invite_text: desc_html: Lorsque les enregistrements nécessitent une approbation manuelle, rendre le texte de l’invitation "Pourquoi voulez-vous vous inscrire ?" obligatoire plutôt que facultatif title: Exiger que les nouveaux utilisateurs remplissent un texte de demande d’invitation @@ -716,9 +704,6 @@ fr: show_known_fediverse_at_about_page: desc_html: Lorsque désactivée, restreint le fil public accessible via la page d’accueil de l’instance pour ne montrer que le contenu local title: Inclure le contenu fédéré sur la page de fil public sans authentification - show_staff_badge: - desc_html: Montrer un badge de responsable sur une page utilisateur·rice - title: Montrer un badge de responsable site_description: desc_html: Paragraphe introductif sur l'API. Décrivez les particularités de ce serveur Mastodon et précisez toute autre chose qui vous semble importante. Vous pouvez utiliser des balises HTML, en particulier <a> et <em>. title: Description du serveur @@ -1123,15 +1108,24 @@ fr: public: Fils publics thread: Discussions edit: + add_keyword: Ajouter un mot-clé + keywords: Mots-clés title: Éditer le filtre errors: + deprecated_api_multiple_keywords: Ces paramètres ne peuvent pas être modifiés depuis cette application, car ils s'appliquent à plus d'un filtre de mot-clé. Utilisez une application plus récente ou l'interface web. invalid_context: Contexte invalide ou insuffisant - invalid_irreversible: Le filtrage irréversible ne fonctionne que pour l’accueil et les notifications index: + contexts: Filtres dans %{contexts} delete: Supprimer empty: Vous n'avez aucun filtre. + expires_in: Expire dans %{distance} + expires_on: Expire le %{date} + keywords: + one: "%{count} mot-clé" + other: "%{count} mots-clés" title: Filtres new: + save: Enregistrer le nouveau filtre title: Ajouter un nouveau filtre footer: developers: Développeurs @@ -1250,6 +1244,8 @@ fr: copy_account_note_text: 'Cet·te utilisateur·rice est parti·e de %{acct}, voici vos notes précédentes à son sujet :' notification_mailer: admin: + report: + subject: "%{name} a soumis un signalement" sign_up: subject: "%{name} s'est inscrit·e" digest: @@ -1544,6 +1540,87 @@ fr: tags: does_not_match_previous_name: ne correspond pas au nom précédent terms: + body_html: | +

    Politique de confidentialité

    +

    Quelles informations collectons-nous ?

    + +
      +
    • Informations de base sur votre compte : si vous vous inscrivez sur ce serveur, il vous sera demandé de rentrer un identifiant, une adresse électronique et un mot de passe. Vous pourrez également ajouter des informations additionnelles sur votre profil, telles qu’un nom public et une biographie, ainsi que téléverser une image de profil et une image d’en-tête. Vos identifiant, nom public, biographie, image de profil et image d’en-tête seront toujours affichés publiquement.
    • +
    • Posts, liste d’abonnements et autres informations publiques : la liste de vos abonnements ainsi que la liste de vos abonné·e·s sont publiques. Quand vous postez un message, la date et l’heure d’envoi ainsi que le nom de l’application utilisée pour sa transmission sont enregistré·e·s. Des médias, tels que des images ou des vidéos, peuvent être joints aux messages. Les posts publics et non listés sont affichés publiquement. Quand vous mettez en avant un post sur votre profil, ce post est également affiché publiquement. Vos messages sont délivrés à vos abonné·e·s, ce qui, dans certains cas, signifie qu’ils sont délivrés à des serveurs tiers et que ces derniers en stockent une copie. Quand vous supprimez un post, il est probable que l'action soit aussi délivrée à vos abonné·e·s. Partager un message ou le marquer comme favori est toujours une action publique.
    • +
    • Posts directs et abonné·e·s uniquement : tous les posts sont stockés et traités par le serveur. Les messages abonné·e·s uniquement ne sont transmis qu’à vos abonné·e·s et aux personnes mentionnées dans le corps du message, tandis que les messages directs ne sont transmis qu’aux personnes mentionnées. Dans certains cas, cela signifie qu’ils sont délivrés à des serveurs tiers et que ces derniers en stockent une copie. Nous faisons un effort de bonne foi pour en limiter l’accès uniquement aux personnes autorisées, mais ce n’est pas nécessairement le cas des autres serveurs. Il est donc très important que vous vérifiiez les serveurs auxquels appartiennent vos abonné·e·s. Il vous est possible d’activer une option dans les paramètres afin d’approuver et de rejeter manuellement les nouveaux·lles abonné·e·s. Gardez s’il vous plaît en mémoire que les opérateur·rice·s du serveur ainsi que celles et ceux de n’importe quel serveur récepteur peuvent voir ces messages, et qu’il est possible pour les destinataires de faire des captures d’écran, de copier et plus généralement de repartager ces messages. Ne partagez aucune information sensible à l’aide de Mastodon !
    • +
    • IP et autres métadonnées : quand vous vous connectez, nous enregistrons votre adresse IP ainsi que le nom de votre navigateur web. Toutes les sessions enregistrées peuvent être consultées dans les paramètres, afin que vous puissiez les surveiller et éventuellement les révoquer. La dernière adresse IP utilisée est conservée pour une durée de 12 mois. Nous sommes également susceptibles de conserver les journaux du serveur, ce qui inclut l’adresse IP de chaque requête reçue.
    • +
    + +
    + +

    Que faisons-nous des informations vous concernant ?

    + +

    Toutes les informations que nous collectons sur vous peuvent être utilisées des manières suivantes :

    + +
      +
    • pour vous fournir les fonctionnalités de base de Mastodon. Vous ne pouvez interagir avec le contenu des autres et poster votre propre contenu que lorsque vous êtes connecté·e. Par exemple, vous pouvez vous abonner à plusieurs autres comptes pour voir l’ensemble de leurs posts dans votre fil d’accueil personnalisé ;
    • +
    • pour aider à la modération de la communauté : par exemple, comparer votre adresse IP avec d’autres afin de déterminer si un bannissement a été contourné ou si une autre infraction aux règles a été commise ;
    • +
    • l’adresse électronique que vous nous avez fournie peut être utilisée pour vous envoyer des informations, des notifications lorsque d’autres personnes interagissent avec votre contenu ou vous envoient des messages, pour répondre à des demandes de votre part ainsi que pour toutes autres requêtes ou questions.
    • +
    + +
    + +

    Comment protégeons-nous vos informations ?

    + +

    Nous mettons en œuvre une variété de mesures de sécurité afin de garantir la sécurité de vos informations personnelles quand vous les saisissez, les soumettez et les consultez. Entre autres choses, votre session de navigation ainsi que le trafic entre votre application et l’API sont protégées par un certificat SSL ; tandis que votre mot de passe est haché à l'aide d'un puissant algorithme à sens unique. Vous pouvez également activer l’authentification à deux facteurs pour sécuriser encore plus l’accès à votre compte.

    + +
    + +

    Quelle est notre politique de conservation des données ?

    + +

    Nous ferons un effort de bonne foi pour :

    + +
      +
    • ne pas conserver plus de 90 jours les journaux systèmes contenant les adresses IP de toutes les requêtes reçues par ce serveur ;
    • +
    • ne pas conserver plus de 12 mois les adresses IP associées aux utilisateur·ice·s enregistré·e·s.
    • +
    + +

    Vous pouvez demander à télécharger une archive de votre contenu, incluant vos posts, vos médias joints, votre image de profil et votre image d’en-tête.

    + +

    Vous pouvez supprimer votre compte de manière définitive à tout moment.

    + +
    + +

    Utilisons-nous des témoins de connexion ?

    + +

    Oui. Les témoins de connexion sont de petits fichiers qu’un site ou un service transfère sur le disque dur de votre ordinateur via votre navigateur web (si vous l’y avez autorisé). Ces témoins permettent au site de reconnaître votre navigateur et, dans le cas où vous possédez un compte, de vous associer avec ce dernier.

    + +

    Nous utilisons les témoins de connexion afin de comprendre et de sauvegarder vos préférences pour vos prochaines visites.

    + +
    + +

    Divulguons-nous des informations à des tiers ?

    + +

    Nous ne vendons, n’échangeons ou ne transférons d’une quelconque manière que ce soit des informations permettant de vous identifier personnellement. Cela n’inclut pas les tiers de confiance qui nous aident à faire fonctionner ce site, à conduire nos activités commerciales ou à vous servir, du moment qu’ils acceptent de garder ces informations confidentielles. Nous sommes également susceptibles de partager vos informations quand nous pensons que cela est nécessaire pour nous conformer à la loi, pour faire respecter les règles de notre site, ainsi que pour défendre nos droits, notre propriété, notre sécurité, ou ceux d’autres personnes.

    + +

    Votre contenu public peut être téléchargé par d’autres serveurs du réseau. Dans le cas où vos abonné·e·s et vos destinataires résident sur des serveurs différents du vôtre, vos posts publics et abonné·e·s uniquement sont délivrés vers les serveurs de vos abonné·e·s tandis que vos messages directs sont délivrés aux serveurs de vos destinataires.

    + +

    Quand vous autorisez une application à utiliser votre compte, en fonction de l’étendue des permissions que vous approuvez, il est possible qu’elle puisse accéder aux informations publiques de votre profil, à votre liste d’abonnements, votre liste d’abonné·e·s, vos listes, tous vos posts et vos favoris. Les applications ne peuvent en aucun cas accéder à votre adresse électronique et à votre mot de passe.

    + +
    + +

    Utilisation de ce site par les enfants

    + +

    Si ce serveur est situé dans l’UE ou l’EEE : notre site, nos produits et nos services sont tous destinés à des personnes âgées de 16 ans ou plus. Si vous avez moins de 16 ans, en application du RGPD (Réglement Général sur la Protection des Données), merci de ne pas utiliser ce site.

    + +

    Si ce serveur est situé aux États-Unis d’Amérique : notre site, nos produits et nos services sont tous destinés à des personnes âgées de 13 ans ou plus. Si vous avez moins de 13 ans, en application du COPPA (Children's Online Privacy Protection Act), merci de ne pas utiliser ce site.

    + +

    Les exigences légales peuvent être différentes si ce serveur dépend d'une autre juridiction.

    + +
    + +

    Modifications de notre politique de confidentialité

    + +

    Dans le cas où nous déciderions de changer notre politique de confidentialité, nous posterons les modifications sur cette page.

    + +

    Ce document est publié sous licence CC-BY-SA. Il a été mis à jour pour la dernière fois le 26 mai 2022.

    + +

    Initialement adapté de la politique de confidentialité de Discourse.

    title: Conditions d’utilisation et politique de confidentialité de %{instance} themes: contrast: Mastodon (Contraste élevé) diff --git a/config/locales/ga.yml b/config/locales/ga.yml index 8a280c001..19a67a8ec 100644 --- a/config/locales/ga.yml +++ b/config/locales/ga.yml @@ -11,7 +11,6 @@ ga: roles: bot: Róbat group: Grúpa - moderator: Modhnóir unfollow: Ná lean admin: accounts: @@ -27,11 +26,6 @@ ga: all: Uile public: Poiblí reject: Diúltaigh - roles: - admin: Riarthóir - moderator: Modhnóir - staff: Foireann - user: Úsáideoir search: Cuardaigh statuses: Postálacha title: Cuntais diff --git a/config/locales/gd.yml b/config/locales/gd.yml index 387ba6c2a..bdbd26199 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -90,10 +90,8 @@ gd: posts_tab_heading: Postaichean posts_with_replies: Postaichean ’s freagairtean roles: - admin: Rianaire bot: Bot group: Buidheann - moderator: Maor unavailable: Chan eil a’ phròifil ri làimh unfollow: Na lean tuilleadh admin: @@ -112,7 +110,6 @@ gd: avatar: Avatar by_domain: Àrainn change_email: - changed_msg: Chaidh post-d a’ chunntais atharrachadh! current_email: Am post-d làithreach label: Atharraich am post-d new_email: Post-d ùr @@ -196,12 +193,6 @@ gd: reset: Ath-shuidhich reset_password: Ath-shuidhich am facal-faire resubscribe: Fo-sgrìobh a-rithist - role: Ceadan - roles: - admin: Rianaire - moderator: Maor - staff: Ball dhen sgioba - user: Cleachdaiche search: Lorg search_same_email_domain: Cleachdaichean eile aig a bheil an aon àrainn puist-d search_same_ip: Cleachdaichean eile aig a bheil an t-aon IP @@ -728,9 +719,6 @@ gd: deletion: desc_html: Leig le neach sa bith an cunntas a sguabadh às title: Fosgail sguabadh às chunntasan - min_invite_role: - disabled: Na ceadaich idir - title: Ceadaich cuiridhean le require_invite_text: desc_html: Nuair a bhios aontachadh a làimh riatanach dhan chlàradh, dèan an raon teacsa “Carson a bu mhiann leat ballrachd fhaighinn?” riatanach seach roghainneil title: Iarr air cleachdaichean ùra gun innis iad carson a tha iad ag iarraidh ballrachd @@ -743,9 +731,6 @@ gd: show_known_fediverse_at_about_page: desc_html: Nuair a bhios seo à comas, cha sheall an loidhne-ama phoblach a thèid a cheangal rithe on duilleag-landaidh ach susbaint ionadail title: Gabh a-staigh susbaint cho-naisgte air duilleag na loidhne-ama poblaich gun ùghdarrachadh - show_staff_badge: - desc_html: Seall bràist sgioba air duilleag cleachdaiche - title: Seall bràist sgioba site_description: desc_html: Earrann tuairisgeil air an API. Mìnich dè tha sònraichte mun fhrithealaiche Mastodon seo agus rud sa bith eile a tha cudromach. ’S urrainn dhut tagaichean HTML a chleachdadh agus <a> ’s <em> gu sònraichte. title: Tuairisgeul an fhrithealaiche @@ -1140,7 +1125,6 @@ gd: title: Deasaich a’ chriathrag errors: invalid_context: Cha deach co-theacs a sholar no tha e mì-dhligheach - invalid_irreversible: Chan obraich criathradh buan ach ann an co-theacsa na dachaigh no na brathan index: delete: Sguab às empty: Chan eil criathrag agad. diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 10454b5fd..4d459a74a 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -83,10 +83,8 @@ gl: posts_tab_heading: Publicacións posts_with_replies: Publicacións e respostas roles: - admin: Administradora bot: Bot group: Grupo - moderator: Moderadora unavailable: Perfil non dispoñíbel unfollow: Deixar de seguir admin: @@ -105,12 +103,17 @@ gl: avatar: Imaxe de perfil by_domain: Dominio change_email: - changed_msg: Email da conta mudado de xeito correcto! + changed_msg: Email mudado de xeito correcto! current_email: Email actual label: Mudar email new_email: Novo email submit: Mudar email title: Mudar email de %{username} + change_role: + changed_msg: Rol mudado correctamente! + label: Cambiar rol + no_role: Sen rol + title: Cambiar o rol de %{username} confirm: Confirmar confirmed: Confirmado confirming: Estase a confirmar @@ -154,6 +157,7 @@ gl: active: Activa all: Todo pending: Pendente + silenced: Limitada suspended: Suspendidos title: Moderación moderation_notes: Notas de moderación @@ -161,6 +165,7 @@ gl: most_recent_ip: IP máis recente no_account_selected: Ningunha conta mudou porque ningunha foi seleccionada no_limits_imposed: Sen límites impostos + no_role_assigned: Sen rol asignado not_subscribed: Non subscrita pending: Revisión pendente perform_full_suspension: Suspender @@ -187,12 +192,7 @@ gl: reset: Restabelecer reset_password: Restabelecer contrasinal resubscribe: Resubscribir - role: Permisos - roles: - admin: Administrador - moderator: Moderador - staff: Persoal (staff) - user: Usuaria + role: Rol search: Procurar search_same_email_domain: Outras usuarias co mesmo dominio de email search_same_ip: Outras usuarias co mesmo IP @@ -649,6 +649,67 @@ gl: unresolved: Non resolto updated_at: Actualizado view_profile: Ver perfil + roles: + add_new: Engadir rol + assigned_users: + one: "%{count} usuaria" + other: "%{count} usuarias" + categories: + administration: Administración + devops: DevOps + invites: Convites + moderation: Moderación + special: Especial + delete: Eliminar + description_html: Cos roles das usuarias podes personalizar as funcións e áreas de Mastodon ás que as usuarias poden acceder. + edit: Editar rol '%{name}' + everyone: Permisos por defecto + everyone_full_description_html: Este é o rol básico que afecta a tódalas usuarias, incluso aquelas sen un rol asignado. Tódolos outros roles herdar os seus permisos. + permissions_count: + one: "%{count} permiso" + other: "%{count} permisos" + privileges: + administrator: Administradora + administrator_description: As usuarias con este permiso poderán superar calquera restrición + delete_user_data: Eliminar datos de usuarias + delete_user_data_description: Permite eliminar datos doutras usuarias sen demoras + invite_users: Convidar usuarias + invite_users_description: Permite que outras usuarias conviden a xente ao servidor + manage_announcements: Xestionar anuncios + manage_announcements_description: Permite que xestionen os anuncios publicados no servidor + manage_appeals: Xestionar recursos + manage_appeals_description: Permite revisar as apelacións contra as accións de moderación + manage_blocks: Xestionar bloqueos + manage_blocks_description: Permite bloquear provedores de email e enderezos IP + manage_custom_emojis: Xestionar Emojis personalizados + manage_custom_emojis_description: Permite xestionar os emojis personalizados do servidor + manage_federation: Xestionar a federación + manage_federation_description: Permite bloquear ou permitir a federación con outros dominios, e controlar as entregas + manage_invites: Xestionar Convites + manage_invites_description: Permite ver e desactivar ligazóns de convite + manage_reports: Xestionar Denuncias + manage_reports_description: Permite revisar as denuncias e realizar accións de moderación sobre elas + manage_roles: Xestionar Roles + manage_roles_description: Permite xestionar e asignar roles a niveis inferiores + manage_rules: Xestionar Regras + manage_rules_description: Permite cambiar as regras do servidor + manage_settings: Xestionar Axustes + manage_settings_description: Permite cambiar os axustes do sitio web + manage_taxonomies: Xestionar Taxonomías + manage_taxonomies_description: Permite revisar o contido en voga e actualizar os axustes dos cancelos + manage_user_access: Xestionar Acceso das usuarias + manage_user_access_description: Permite desactivar o segundo factor de autenticación doutras usuarias, cambiar o enderezo de email e restablecer o contrasinal + manage_users: Xestionar Usuarias + manage_users_description: Permite ver os detalles doutras usuarias e realizar accións de moderación en sobre elas + manage_webhooks: Xestionar Webhooks + manage_webhooks_description: Permite establecer webhooks para eventos administrativos + view_audit_log: Ver Rexistro de auditoría + view_audit_log_description: Permite ver o historial de accións administrativas no servidor + view_dashboard: Ver Taboleiro + view_dashboard_description: Permite acceder ao taboleiro e varias métricas do servidor + view_devops: Devops + view_devops_description: Permite acceder aos taboleiros Sidekiq e phHero + title: Roles rules: add_new: Engadir regra delete: Eliminar @@ -701,9 +762,6 @@ gl: deletion: desc_html: Permitirlle a calquera que elimine a súa conta title: Abrir o borrado da conta - min_invite_role: - disabled: Ninguén - title: Permitir convites por require_invite_text: desc_html: Cando os rexistros requiren aprobación manual, facer que o texto "Por que te queres rexistrar?" do convite sexa obrigatorio en lugar de optativo title: Require que as novas usuarias completen solicitude de texto do convite @@ -716,9 +774,6 @@ gl: show_known_fediverse_at_about_page: desc_html: Si activado, mostraralle os toots de todo o fediverso coñecido nunha vista previa. Si non só mostrará os toots locais. title: Incluír contido federado na páxina da cronoloxía pública sen autenticación - show_staff_badge: - desc_html: Mostrar unha insignia de membresía nunha páxina de usuaria - title: Mostrar insigna de membresía site_description: desc_html: Parágrafo de presentación na páxina principal. Describe o que fai especial a este servidor Mastodon e calquera outra ouca importante. Pode utilizar cancelos HTML, en particular <a> e <em>. title: Descrición do servidor @@ -1124,15 +1179,24 @@ gl: public: Cronoloxías públicas thread: Conversas edit: + add_keyword: Engadir palabra chave + keywords: Palabras chave title: Editar filtro errors: + deprecated_api_multiple_keywords: Estes parámetros non se poden cambiar desde esta aplicación porque son de aplicación a máis dun filtro de palabras chave. Usa unha aplicación máis recente ou a interface web. invalid_context: Non se proporcionou un contexto válido - invalid_irreversible: O filtrado non reversible só funciona con contexto de avisos ou Inicio index: + contexts: Filtros para %{contexts} delete: Eliminar empty: Non tes filtros. + expires_in: Caduca en %{distance} + expires_on: Caduca o %{date} + keywords: + one: "%{count} palabra chave" + other: "%{count} palabras chave" title: Filtros new: + save: Gardar o novo filtro title: Engadir novo filtro footer: developers: Desenvolvedoras @@ -1251,6 +1315,8 @@ gl: copy_account_note_text: 'Esta usuaria chegou desde %{acct}, aquí están as túas notas previas acerca dela:' notification_mailer: admin: + report: + subject: "%{name} enviou unha denuncia" sign_up: subject: "%{name} rexistrouse" digest: @@ -1279,7 +1345,7 @@ gl: title: Nova petición de seguimento mention: action: Responder - body: 'Foi mencionada por %{name} en:' + body: "%{name} mencionoute en:" subject: Foches mencionada por %{name} title: Nova mención poll: diff --git a/config/locales/he.yml b/config/locales/he.yml index 040034125..4daa4f3b6 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -90,10 +90,8 @@ he: posts_tab_heading: חצרוצים posts_with_replies: חצרוצים ותגובות roles: - admin: מנהל bot: בוט group: קבוצה - moderator: מנחה unavailable: פרופיל לא זמין unfollow: הפסקת מעקב admin: @@ -112,7 +110,6 @@ he: avatar: יַצְגָן by_domain: שם מתחם change_email: - changed_msg: כתובת הדוא"ל המשוייכת לחשבון שונתה בהצלחה ! current_email: כתובת דוא"ל נוכחית label: שינוי כתובת דוא"ל משוייכת לחשבון new_email: כתובת דוא"ל חדשה @@ -196,12 +193,6 @@ he: reset: איפוס reset_password: אתחול סיסמא resubscribe: להרשם מחדש - role: הרשאות - roles: - admin: מנהל מערכת - moderator: מנחה דיונים - staff: צוות - user: משתמש(ת) search: חיפוש search_same_email_domain: משתמשים אחרים מאותו דומיין דוא"ל search_same_ip: משתמשים אחרים מאותה כתובת IP @@ -727,9 +718,6 @@ he: deletion: desc_html: הרשאה לכולם למחוק את חשבונם title: פתיחת מחיקת חשבון - min_invite_role: - disabled: אף אחד - title: אפשר הזמנות לפי require_invite_text: desc_html: כאשר הרשמות דורשות אישור ידני, הפיכת טקסט ה"מדוע את/ה רוצה להצטרף" להכרחי במקום אופציונלי title: אלץ משתמשים חדשים למלא סיבת הצטרפות @@ -742,9 +730,6 @@ he: show_known_fediverse_at_about_page: desc_html: כאשר לא מופעל, מגביל את הפיד הפומבי המקושר מדף הנחיתה להצגת תוכן מקומי בלבד title: הכללת תוכן פדרטיבי בדף הפיד הפומבי הבלתי מאומת - show_staff_badge: - desc_html: הצג תג צוות בדף המשתמש - title: הצג תג צוות site_description: desc_html: מוצג כפסקה על הדף הראשי ומשמש כתגית מטא. ניתן להשתמש בתגיות HTML, ובמיוחד ב־ < a> ו־ < em> . title: תיאור האתר @@ -1145,7 +1130,6 @@ he: title: ערוך מסנן errors: invalid_context: לא סופק הקשר או הקשר לא תקין - invalid_irreversible: סינון בלתי הפיך עובד רק בהקשר פיד הבית או התראות index: delete: למחוק empty: אין לך מסננים. diff --git a/config/locales/hr.yml b/config/locales/hr.yml index fd90a5ac4..3a2af1662 100644 --- a/config/locales/hr.yml +++ b/config/locales/hr.yml @@ -44,7 +44,6 @@ hr: are_you_sure: Jeste li sigurni? by_domain: Domena change_email: - changed_msg: E-pošta računa uspješno je promijenjena! current_email: Trenutna e-pošta label: Promijeni e-poštu new_email: Nova e-pošta diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 5ee01ea2c..2c286e87d 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -85,10 +85,8 @@ hu: posts_tab_heading: Bejegyzés posts_with_replies: Bejegyzés válaszokkal roles: - admin: Adminisztrátor bot: Bot group: Csoport - moderator: Moderátor unavailable: Nincs ilyen profil unfollow: Követés vége admin: @@ -107,12 +105,17 @@ hu: avatar: Profilkép by_domain: Domain change_email: - changed_msg: A fiókhoz tartozó e-mailt megváltoztattuk! + changed_msg: Az emailt sikeresen megváltoztattuk! current_email: Jelenlegi e-mail label: E-mail megváltoztatása new_email: Új e-mail submit: E-mail megváltoztatása title: "%{username} felhasználó e-mail változás" + change_role: + changed_msg: A szerepet sikeresen megváltoztattuk! + label: Szerep megváltoztatása + no_role: Nincs szerep + title: "%{username} szerepének megváltoztatása" confirm: Megerősítés confirmed: Megerősítve confirming: Megerősítés alatt @@ -156,6 +159,7 @@ hu: active: Aktív all: Összes pending: Függőben + silenced: Korlátozott suspended: Felfüggesztve title: Moderáció moderation_notes: Moderációs bejegyzés @@ -163,6 +167,7 @@ hu: most_recent_ip: Legutóbbi IP-cím no_account_selected: Nem változott meg egy fiók sem, mert semmi sem volt kiválasztva no_limits_imposed: Nincs korlátozás + no_role_assigned: Nincs szerep hozzárendelve not_subscribed: Nincs feliratkozás pending: Engedélyezés alatt perform_full_suspension: Felfüggesztés @@ -189,12 +194,7 @@ hu: reset: Visszaállítás reset_password: Jelszó visszaállítása resubscribe: Feliratkozás ismét - role: Engedélyek - roles: - admin: Adminisztrátor - moderator: Moderátor - staff: Stáb - user: Felhasználó + role: Szerep search: Keresés search_same_email_domain: Felhasználók ugyanezzel az email domainnel search_same_ip: Más felhasználók ugyanezzel az IP-vel @@ -651,6 +651,21 @@ hu: unresolved: Megoldatlan updated_at: Frissítve view_profile: Profil megtekintése + roles: + add_new: Szerep hozzáadása + assigned_users: + one: "%{count} felhasználó" + other: "%{count} felhasználó" + categories: + administration: Adminisztráció + devops: Devops + invites: Meghívások + moderation: Moderáció + special: Speciális + delete: Törlés + description_html: A felhasználói szerepekkel testreszabhatod, hogy a felhasználóid milyen Mastodon funkciókat és területeket érjenek el. + edit: "'%{name}' szerep szerkesztése" + everyone: Alapértelmezett engedélyek rules: add_new: Szabály hozzáadása delete: Törlés @@ -703,9 +718,6 @@ hu: deletion: desc_html: Engedélyezed a felhasználóknak, hogy töröljék fiókjukat title: Fiók törlésének engedélyezése - min_invite_role: - disabled: Senki - title: Meghívások engedélyezése require_invite_text: desc_html: Ha a regisztrációhoz kézi jóváhagyásra van szükség, akkor a „Miért akarsz csatlakozni?” válasz kitöltése legyen kötelező, és ne opcionális title: Az új felhasználóktól legyen megkövetelve a meghívási kérés szövegének kitöltése @@ -718,9 +730,6 @@ hu: show_known_fediverse_at_about_page: desc_html: Ha le van tiltva, a nyilvános, főoldalról elérhető idővonalon csak helyi tartalmak jelennek meg title: Mutassuk az általunk ismert föderációt az idővonal előnézetben - show_staff_badge: - desc_html: Stáb-jelvény megjelenítése a felhasználó oldalán - title: Stáb-jelvény megjelenítése site_description: desc_html: Rövid bemutatkozás a főoldalon és a meta fejlécekben. Írd le, mi teszi ezt a szervert különlegessé! Használhatod a <a> és <em> HTML tageket. title: Kiszolgáló leírása @@ -1126,15 +1135,24 @@ hu: public: Nyilvános idővonalak thread: Beszélgetések edit: + add_keyword: Kulcsszó hozzáadása + keywords: Kulcsszavak title: Szűrő szerkesztése errors: + deprecated_api_multiple_keywords: Ezek a paraméterek nem módosíthatóak az alkalmazásból, mert több mint egy szűrőkulcsszóra is hatással vannak. Használd az alkalmazás vagy a webes felület újabb verzióját. invalid_context: A megadott kontextus hamis vagy hiányzik - invalid_irreversible: Visszafordíthatatlan szűrést csak saját idővonalon vagy értesítéseken lehet végezni index: + contexts: 'Szűrés helye: %{contexts}' delete: Törlés empty: Nincs szűrés. + expires_in: 'Ennyi idő múlva jár le: %{distance}' + expires_on: 'Lejárat ideje: %{date}' + keywords: + one: "%{count} kulcsszó" + other: "%{count} kulcsszó" title: Szűrők new: + save: Új szűrő mentése title: Új szűrő hozzáadása footer: developers: Fejlesztőknek @@ -1253,6 +1271,8 @@ hu: copy_account_note_text: 'Ez a fiók elköltözött innen %{acct}, itt vannak a bejegyzéseitek róla:' notification_mailer: admin: + report: + subject: "%{name} bejelentést küldött" sign_up: subject: "%{name} feliratkozott" digest: diff --git a/config/locales/hy.yml b/config/locales/hy.yml index 831ca6621..e04f2088c 100644 --- a/config/locales/hy.yml +++ b/config/locales/hy.yml @@ -77,10 +77,8 @@ hy: posts_tab_heading: Գրառումներ posts_with_replies: Գրառումներ եւ պատասխաններ roles: - admin: Ադմինիստրատոր bot: Բոտ group: Խումբ - moderator: Մոդերատոր unavailable: Պրոֆիլը հասանելի չի unfollow: Չհետևել admin: @@ -99,7 +97,6 @@ hy: avatar: Աւատար by_domain: Դոմէն change_email: - changed_msg: Հաշուի էլ․ հասցէն բարեյաջող փոփոխուեց current_email: Ներկայիս էլ․ հասցէ label: Փոխել էլ. հասցէն new_email: Նոր էլ․ փոստ @@ -174,12 +171,6 @@ hy: reset: Վերականգնել reset_password: Վերականգնել գաղտանաբառը resubscribe: Կրկին բաժանորդագրուել - role: Թոյլտուութիւններ - roles: - admin: Ադմինիստրատոր - moderator: Մոդերատոր - staff: Անձնակազմ - user: Oգտատէր search: Որոնել search_same_email_domain: Այլ օգտատէրեր նոյն էլ․ փոստի դոմէյնով search_same_ip: Այլ օգտատէրեր նոյն IP֊ով @@ -466,18 +457,12 @@ hy: deletion: desc_html: Բոլորին թոյլատրել ջնջել իրենց հաշիւը title: Բացել հաշուի ջնջումը - min_invite_role: - disabled: Ոչ ոք - title: Թոյլատրել հրաւէրներ registrations_mode: modes: approved: Գրանցման համար անհրաժեշտ է հաստատում none: Ոչ ոք չի կարող գրանցուել open: Բոլորը կարող են գրանցուել title: Գրանցումային ռեժիմ - show_staff_badge: - desc_html: Ցուցադրել անձնակազմի անդամի նշանը օգտատիրոջ էջում - title: Ցուցադրել անձնակազմի անդամի նշանը site_description: title: Կայքի նկարագրութիւն site_short_description: diff --git a/config/locales/id.yml b/config/locales/id.yml index 368b21add..2bf3e7d13 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -77,10 +77,8 @@ id: posts_tab_heading: Toot posts_with_replies: Toot dan balasan roles: - admin: Admin bot: Bot group: Grup - moderator: Moderator unavailable: Profil tidak tersedia unfollow: Berhenti mengikuti admin: @@ -99,7 +97,6 @@ id: avatar: Avatar by_domain: Domian change_email: - changed_msg: Email akun ini berhasil diubah! current_email: Email saat ini label: Ganti email new_email: Email baru @@ -180,12 +177,6 @@ id: reset: Atur ulang reset_password: Reset kata sandi resubscribe: Langganan ulang - role: Hak akses - roles: - admin: Administrator - moderator: Moderator - staff: Staf - user: Pengguna search: Cari search_same_email_domain: Pengguna lain dengan domain email yang sama search_same_ip: Pengguna lain dengan IP yang sama @@ -685,9 +676,6 @@ id: deletion: desc_html: Izinkan siapapun untuk menghapus akun miliknya title: Buka penghapusan akun - min_invite_role: - disabled: Tidak ada satu pun - title: Izinkan undangan oleh require_invite_text: desc_html: Saat pendaftaran harus disetujui manual, buat input teks "Mengapa Anda ingin bergabung?" sebagai hal wajib bukan opsional title: Pengguna baru harus memasukkan alasan bergabung @@ -700,9 +688,6 @@ id: show_known_fediverse_at_about_page: desc_html: Ketika dimatikan, batasi linimasa publik yang ditautkan dari halaman landas untuk menampilkan konten lokal saja title: Masukkan konten gabungan di halaman linimasa publik tanpa autentifikasi - show_staff_badge: - desc_html: Tampilkan lencana staf pada halaman pengguna - title: Tampilkan lencana staf site_description: desc_html: Ditampilkan sebagai sebuah paragraf di halaman depan dan digunakan sebagai tag meta.
    Anda bisa menggunakan tag HTML, khususnya <a> dan <em>. title: Deskripsi situs @@ -1103,7 +1088,6 @@ id: title: Ubah saringan errors: invalid_context: Konteks tidak ada atau invalid - invalid_irreversible: Penyaringan yang tidak dapat dipulihkan hanya bekerja di beranda atau konteks notifikasi index: delete: Hapus empty: Anda tidak memiliki filter. diff --git a/config/locales/io.yml b/config/locales/io.yml index 7cf253089..e7a8b1daf 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -83,10 +83,8 @@ io: posts_tab_heading: Posti posts_with_replies: Posti e respondi roles: - admin: Administrero bot: Boto group: Grupo - moderator: Jerero unavailable: Profilo esas nedisponebla unfollow: Dessequar admin: @@ -105,7 +103,6 @@ io: avatar: Profilimajo by_domain: Domeno change_email: - changed_msg: Kontoretposto sucesoze chanjesis! current_email: Nuna retposto label: Chanjez retposto new_email: Nova retposto @@ -187,12 +184,6 @@ io: reset: Richanjez reset_password: Richanjez pasvorto resubscribe: Riabonez - role: Permisi - roles: - admin: Administrero - moderator: Jerero - staff: Laborero - user: Uzanto search: Trovez search_same_email_domain: Altra uzanti kun sama retpostodomeno search_same_ip: Altra uzanti kun sama IP @@ -701,9 +692,6 @@ io: deletion: desc_html: Permisez irgu efacar sua konto title: Apertez kontoefaco - min_invite_role: - disabled: Nulu - title: Permisez inviti da require_invite_text: desc_html: Se registri bezonas manuala aprobo, kauzigar "Por quo vu volas juntar?" textoenpoz divenar obligata title: Bezonez nova uzanti insertar motivo por juntar @@ -716,9 +704,6 @@ io: show_known_fediverse_at_about_page: desc_html: Se desaktivigesis, co permisas publika tempolineo quo ligesas de atingopagino montrar nur lokala kontenajo title: Inkluzez federatita kontenajo che neyurizita publika tempolineopagino - show_staff_badge: - desc_html: Montrez laborerinsigno che uzantopagino - title: Montrez laborerinsigno site_description: desc_html: Displayed as a paragraph on the frontpage and used as a meta tag.
    You can use HTML tags, in particular <a> and <em>. title: Site description @@ -1124,13 +1109,19 @@ io: public: Publika tempolinei thread: Konversi edit: + add_keyword: Insertez klefvorto + keywords: Klefvorti title: Modifikez filtrilo errors: invalid_context: Nula o nevalida kuntexto donesis - invalid_irreversible: Neinversigebla filtro nur funcionas kun hemo- e aviz- kuntexto index: delete: Efacez empty: Vu ne havas filtrili. + expires_in: Expiras ye %{distance} + expires_on: Expiras ye %{date} + keywords: + one: "%{count} klefvorto" + other: "%{count} klefvorti" title: Filtrili new: title: Insertez nova filtrilo @@ -1251,6 +1242,8 @@ io: copy_account_note_text: 'Ca uzanti transferesis de %{acct}, co esas vua antea noti pri ol:' notification_mailer: admin: + report: + subject: "%{name} sendis raporto" sign_up: subject: "%{name} registris" digest: diff --git a/config/locales/is.yml b/config/locales/is.yml index 5978ac41c..912a3f5bc 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -83,10 +83,8 @@ is: posts_tab_heading: Færslur posts_with_replies: Færslur og svör roles: - admin: Stjóri bot: Róbót group: Hópur - moderator: Umsjón unavailable: Notandasnið ekki tiltækt unfollow: Hætta að fylgja admin: @@ -105,12 +103,17 @@ is: avatar: Auðkennismynd by_domain: Lén change_email: - changed_msg: Tölvupóstfangi notandaaðgangsins hefur verið breytt! + changed_msg: Tókst að breyta tölvupóstfangi! current_email: Núverandi tölvupóstfang label: Breyta tölvupóstfangi new_email: Nýr tölvupóstur submit: Breyta tölvupóstfangi title: Breyta tölvupóstfangi fyrir %{username} + change_role: + changed_msg: Tókst að breyta hlutverki! + label: Breyta hlutverki + no_role: Ekkert hlutverk + title: Breyta hlutverki fyrir %{username} confirm: Staðfesta confirmed: Staðfest confirming: Staðfesti @@ -154,6 +157,7 @@ is: active: Virkur all: Allt pending: Í bið + silenced: Takmarkað suspended: Í bið title: Umsjón moderation_notes: Minnispunktar umsjónarmanna @@ -161,6 +165,7 @@ is: most_recent_ip: Nýjasta IP-vistfang no_account_selected: Engum aðgöngum var breytt þar sem engir voru valdir no_limits_imposed: Engra takmarka krafist + no_role_assigned: Engu hlutverki úthlutað not_subscribed: Ekki í áskrift pending: Bíður eftir yfirlestri perform_full_suspension: Setja í bið @@ -187,12 +192,7 @@ is: reset: Endurstilla reset_password: Endurstilla lykilorð resubscribe: Gerast áskrifandi aftur - role: Heimildir - roles: - admin: Stjórnandi - moderator: Umsjónarmaður - staff: Starfsmaður - user: Notandi + role: Hlutverk search: Leita search_same_email_domain: Aðra notendur með sama tölvupóstlén search_same_ip: Aðrir notendur með sama IP-vistfang @@ -649,6 +649,44 @@ is: unresolved: Óleyst updated_at: Uppfært view_profile: Skoða notandasnið + roles: + add_new: Bæta við hlutverki + assigned_users: + one: "%{count} notandi" + other: "%{count} notendur" + categories: + administration: Stjórnun + devops: Kerfisstjórar + invites: Boðsgestir + moderation: Umsjón + special: Sérstakt + delete: Eyða + description_html: Með hlutverkum notenda geturðu sérsniðið að hvaða aðgerðum og hvaða svæðum í Mastodon notendurnir þínir hafa aðgang. + edit: Breyta hlutverki fyrir '%{name}' + everyone: Sjálfgefnar heimildir + permissions_count: + one: "%{count} heimild" + other: "%{count} heimildir" + privileges: + administrator: Stjórnandi + administrator_description: Notendur með þessa heimild fara framhjá öllum öðrum heimildum + delete_user_data: Eyða gögnum notanda + delete_user_data_description: Leyfir notendum að eyða gögnum annarra notenda án tafar + invite_users: Bjóða notendum + invite_users_description: Leyfir notendum að bjóða nýju fólki inn á netþjóninn + manage_announcements: Sýsla með tilkynningar + manage_announcements_description: Leyfir notendum að sýsla með tilkynningar á netþjóninum + manage_appeals: Sýsla með áfrýanir + manage_appeals_description: Leyfir notendum að yfirfara áfrýjanir vegna aðgerða umsjónarfólks + manage_blocks: Sýsla með útilokanir + manage_blocks_description: Leyfir notendum að loka á tölvupóstþjónustur og IP-vistföng + manage_settings: Sýsla með stillingar + manage_settings_description: Leyfir notendum að breyta stillingum vefsvæðisins + view_dashboard: Skoða stjórnborð + view_dashboard_description: Leyfir notendum að skoða stjórnborðið og sjá ýmsar mælingar + view_devops: Kerfisstjórar + view_devops_description: Leyfir notendum að skoða Sidekiq og pgHero stjórnborð + title: Hlutverk rules: add_new: Skrá reglu delete: Eyða @@ -701,9 +739,6 @@ is: deletion: desc_html: Leyfa öllum að eyða aðgangnum sínum title: Opna eyðingu á notandaaðgangi - min_invite_role: - disabled: Enginn - title: Leyfa boð frá require_invite_text: desc_html: Þegar nýskráningar krefjast handvirks samþykkis, skal gera "Hvers vegna viltu taka þátt?" boðstexta að skyldu fremur en valkvæðan title: Krefja nýja notendur um að fylla út boðstexta @@ -716,9 +751,6 @@ is: show_known_fediverse_at_about_page: desc_html: Þegar þetta er óvirkt, takmarkast opinbera tímalínan sem tengt er í af upphafssíðunni við að birta einungis staðvært efni (af sama vefþjóni) title: Hafa með efni úr skýjasambandi á síðu fyrir óauðkennda opinbera tímalínu - show_staff_badge: - desc_html: Sýna starfsmannamerki á síðu notandans - title: Sýna starfsmannamerki site_description: desc_html: Kynningarmálsgrein í API. Lýstu því hvað það er sem geri þennan Mastodon-þjón sérstakan, auk annarra mikilvægra upplýsinga. Þú getur notað HTML-einindi, sér í lagi <a> og <em>. title: Lýsing á vefþjóni @@ -1124,15 +1156,24 @@ is: public: Opinberar tímalínur thread: Samtöl edit: + add_keyword: Bæta við stikkorði + keywords: Stikkorð title: Breyta síu errors: + deprecated_api_multiple_keywords: Þessum viðföngum er ekki hægt að breyta úr þessu forriti, þar sem þau eiga við fleiri en eitt stikkorð síu. Notaðu nýrra forrit eða farðu í vefviðmótið. invalid_context: Ekkert eða ógilt samhengi var gefið - invalid_irreversible: Óendurkræf síun virkar bara í sambandi við heimasvæði eða tilkynningar index: + contexts: Síur í %{contexts} delete: Eyða empty: Þú ert ekki með neinar síur. + expires_in: Rennur út %{distance} + expires_on: Rennur út þann %{date} + keywords: + one: "%{count} stikkorð" + other: "%{count} stikkorð" title: Síur new: + save: Vista nýja síu title: Bæta við nýrri síu footer: developers: Forritarar @@ -1251,6 +1292,8 @@ is: copy_account_note_text: 'Þessi notandi fluttist frá %{acct}, hér eru fyrri minnispunktar þínir um hann:' notification_mailer: admin: + report: + subject: "%{name} sendi inn kæru" sign_up: subject: "%{name} nýskráði sig" digest: diff --git a/config/locales/it.yml b/config/locales/it.yml index f97779d26..f269cc542 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -83,10 +83,8 @@ it: posts_tab_heading: Toot posts_with_replies: Toot e risposte roles: - admin: Amministratore bot: Bot group: Gruppo - moderator: Moderatore unavailable: Profilo non disponibile unfollow: Non seguire più admin: @@ -105,12 +103,17 @@ it: avatar: Immagine di profilo by_domain: Dominio change_email: - changed_msg: Account email cambiato con successo! + changed_msg: Email modificata! current_email: Email attuale label: Cambia email new_email: Nuova email submit: Cambia email title: Cambia email per %{username} + change_role: + changed_msg: Ruolo modificato correttamente! + label: Cambia ruolo + no_role: Nessun ruolo + title: Cambia ruolo per %{username} confirm: Conferma confirmed: Confermato confirming: Confermando @@ -154,6 +157,7 @@ it: active: Attivo all: Tutto pending: In attesa + silenced: Limitato suspended: Sospesi title: Moderazione moderation_notes: Note di moderazione @@ -161,6 +165,7 @@ it: most_recent_ip: IP più recente no_account_selected: Nessun account è stato modificato visto che non ne è stato selezionato nessuno no_limits_imposed: Nessun limite imposto + no_role_assigned: Nessun ruolo assegnato not_subscribed: Non sottoscritto pending: Revisioni in attesa perform_full_suspension: Sospendi @@ -187,12 +192,7 @@ it: reset: Reimposta reset_password: Reimposta password resubscribe: Riscriversi - role: Permessi - roles: - admin: Amministratore - moderator: Moderatore - staff: Personale - user: Utente + role: Ruolo search: Cerca search_same_email_domain: Altri utenti con lo stesso dominio e-mail search_same_ip: Altri utenti con lo stesso IP @@ -649,6 +649,67 @@ it: unresolved: Non risolto updated_at: Aggiornato view_profile: Visualizza profilo + roles: + add_new: Aggiungi ruolo + assigned_users: + one: "%{count} utente" + other: "%{count} utenti" + categories: + administration: Amministrazione + devops: Devops + invites: Inviti + moderation: Moderazione + special: Speciale + delete: Cancella + description_html: Con i ruoli utente, puoi personalizzare a quali funzioni e aree di Mastodon i tuoi utenti possono accedere. + edit: Modifica il ruolo '%{name}' + everyone: Permessi predefiniti + everyone_full_description_html: Questo è il ruolo base che influenza tutti gli utenti, anche quelli senza un ruolo assegnato. Tutti gli altri ruoli ereditano i permessi da esso. + permissions_count: + one: "%{count} permesso" + other: "%{count} permessi" + privileges: + administrator: Amministratore + administrator_description: Gli utenti con questo permesso saranno esentati da ogni permesso + delete_user_data: Cancella dati utente + delete_user_data_description: Consente agli utenti di eliminare subito i dati degli altri utenti + invite_users: Invita Utenti + invite_users_description: Consente agli utenti di invitare nuove persone su questo server + manage_announcements: Gestisci Annunci + manage_announcements_description: Consente agli utenti di gestire gli annunci sul server + manage_appeals: Gestisci appelli + manage_appeals_description: Consente agli utenti di esaminare i ricorsi contro le azioni di moderazione + manage_blocks: Gestisci Blocchi + manage_blocks_description: Consente agli utenti di bloccare provider e-mail e indirizzi IP + manage_custom_emojis: Gestisci emoji personalizzate + manage_custom_emojis_description: Consente agli utenti di gestire emoji personalizzate sul server + manage_federation: Gestisci Federazione + manage_federation_description: Consente agli utenti di bloccare o consentire la federazione con altri domini e controllare la consegnabilità + manage_invites: Gestisci Inviti + manage_invites_description: Consente agli utenti di esaminare e disattivare i link di invito + manage_reports: Gestisci report + manage_reports_description: Consente agli utenti di esaminare i report ed eseguire azioni di moderazione su di essi + manage_roles: Gestisci Ruoli + manage_roles_description: Consente agli utenti di gestire e assegnare i ruoli inferiori al loro + manage_rules: Gestisci Regole + manage_rules_description: Consente agli utenti di modificare le regole del server + manage_settings: Gestisci impostazioni + manage_settings_description: Consente agli utenti di modificare le impostazioni del sito + manage_taxonomies: Gestisci Tassonomie + manage_taxonomies_description: Consente agli utenti di esaminare i contenuti di tendenza e aggiornare le impostazioni degli hashtag + manage_user_access: Gestisci accesso utenti + manage_user_access_description: Consente agli utenti di disabilitare l'autenticazione a due fattori degli altri utenti, modificare il loro indirizzo e-mail e reimpostare la password + manage_users: Gestisci utenti + manage_users_description: Consente agli utenti di visualizzare le informazioni sugli altri utenti ed eseguire azioni di moderazione contro di loro + manage_webhooks: Gestisci Webhook + manage_webhooks_description: Consente agli utenti di impostare webhook per eventi amministrativi + view_audit_log: Visualizza Registro Attività + view_audit_log_description: Consente agli utenti di vedere una cronologia delle azioni amministrative sul server + view_dashboard: Mostra dashboard + view_dashboard_description: Consente agli utenti di accedere alla dashboard e alle varie metriche + view_devops: Devops + view_devops_description: Consente agli utenti di accedere alle dashboard Sidekiq e pgHero + title: Ruoli rules: add_new: Aggiungi regola delete: Cancella @@ -701,9 +762,6 @@ it: deletion: desc_html: Consenti a chiunque di cancellare il proprio account title: Apri la cancellazione dell'account - min_invite_role: - disabled: Nessuno - title: Permetti inviti da require_invite_text: desc_html: Quando le iscrizioni richiedono l'approvazione manuale, rendere la richiesta “Perché si desidera iscriversi?” obbligatoria invece che opzionale title: Richiedi ai nuovi utenti di rispondere alla richiesta di motivazione per l'iscrizione @@ -716,9 +774,6 @@ it: show_known_fediverse_at_about_page: desc_html: Quando attivato, mostra nell'anteprima i toot da tutte le istanze conosciute. Altrimenti mostra solo i toot locali. title: Mostra la fediverse conosciuta nell'anteprima della timeline - show_staff_badge: - desc_html: Mostra un distintivo dello staff sulla pagina dell'utente - title: Mostra badge staff site_description: desc_html: Paragrafo introduttivo nella pagina iniziale. Descrive ciò che rende speciale questo server Mastodon e qualunque altra cosa sia importante dire. Potete usare marcatori HTML, in particolare <a> e <em>. title: Descrizione del server @@ -1126,15 +1181,24 @@ it: public: Timeline pubbliche thread: Conversazioni edit: + add_keyword: Aggiungi parola chiave + keywords: Parole chiave title: Modifica filtro errors: + deprecated_api_multiple_keywords: Questi parametri non possono essere modificati da questa applicazione perché si applicano a più di una parola chiave che fa da filtro. Utilizzare un'applicazione più recente o l'interfaccia web. invalid_context: Contesto mancante o non valido - invalid_irreversible: Il filtraggio irreversibile funziona solo nei contesti di home o notifiche index: + contexts: Filtri in %{contexts} delete: Cancella empty: Non hai alcun filtro. + expires_in: Scade tra %{distance} + expires_on: Scade il %{date} + keywords: + one: "%{count} parola chiave" + other: "%{count} parole chiave" title: Filtri new: + save: Salva nuovo filtro title: Aggiungi filtro footer: developers: Sviluppatori @@ -1253,6 +1317,8 @@ it: copy_account_note_text: 'Questo utente si è spostato da %{acct}, ecco le tue note precedenti su di loro:' notification_mailer: admin: + report: + subject: "%{name} ha inviato una segnalazione" sign_up: subject: "%{name} si è iscritto" digest: diff --git a/config/locales/ja.yml b/config/locales/ja.yml index b7139523b..cb7a1526c 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -77,10 +77,8 @@ ja: posts_tab_heading: 投稿 posts_with_replies: 投稿と返信 roles: - admin: Admin bot: Bot group: Group - moderator: Mod unavailable: プロフィールは利用できません unfollow: フォロー解除 admin: @@ -99,7 +97,6 @@ ja: avatar: アイコン by_domain: ドメイン change_email: - changed_msg: メールアドレスの変更に成功しました! current_email: 現在のメールアドレス label: メールアドレスを変更 new_email: 新しいメールアドレス @@ -180,12 +177,6 @@ ja: reset: リセット reset_password: パスワード再設定 resubscribe: 再講読 - role: 役割 - roles: - admin: 管理者 - moderator: モデレーター - staff: スタッフ - user: ユーザー search: 検索 search_same_email_domain: 同じドメインのメールアドレスを使用しているユーザー search_same_ip: 同じIPのユーザーを検索 @@ -681,9 +672,6 @@ ja: deletion: desc_html: 誰でも自分のアカウントを削除できるようにします title: アカウント削除を受け付ける - min_invite_role: - disabled: 誰にも許可しない - title: 招待の作成を許可 require_invite_text: desc_html: アカウント登録が承認制の場合、「意気込みをお聞かせください」のテキストを必須入力にする title: 新規ユーザー登録時の理由を必須入力にする @@ -696,9 +684,6 @@ ja: show_known_fediverse_at_about_page: desc_html: チェックを外すと、ランディングページからリンクされた公開タイムラインにローカルの公開投稿のみ表示します。 title: 公開タイムラインに連合先のコンテンツも表示する - show_staff_badge: - desc_html: ユーザーページにスタッフのバッジを表示します - title: スタッフバッジを表示する site_description: desc_html: フロントページへの表示に使用される紹介文です。このMastodonサーバーを特徴付けることやその他重要なことを記述してください。HTMLタグ、特に<a><em>が使えます。 title: サーバーの説明 @@ -1085,13 +1070,16 @@ ja: public: 公開タイムライン thread: 会話 edit: + add_keyword: キーワードを追加 + keywords: キーワード title: フィルターを編集 errors: invalid_context: 対象がないか無効です - invalid_irreversible: この機能はホームタイムラインまたは通知と一緒に指定する場合のみ機能します index: delete: 削除 empty: フィルターはありません。 + keywords: + other: "%{count}件のキーワード" title: フィルター new: title: 新規フィルターを追加 diff --git a/config/locales/ka.yml b/config/locales/ka.yml index bd02b0f8d..9948ae493 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -34,9 +34,7 @@ ka: following: იმ ადამიანს, ვინც მოგწონთ, უკვე უნდა მიჰყვებოდეთ posts_with_replies: ტუტები და პასუხები roles: - admin: ადმინისტრატორი bot: ბოტი - moderator: მოდერატორი unfollow: ნუღარ მიჰყვები admin: account_moderation_notes: @@ -48,7 +46,6 @@ ka: avatar: ავატარი by_domain: დომენი change_email: - changed_msg: ანგარიშის ელ-ფოსტა წარმატებით შეიცვალა! current_email: მიმდინარე ელ-ფოსტა label: ელ-ფოსტის შეცვლა new_email: ახალი ელ-ფოსტა @@ -102,12 +99,6 @@ ka: reset: გადატვირთვა reset_password: პაროლის გადატვირთვა resubscribe: ხელახალი გამოწერა - role: უფლებები - roles: - admin: ადმინისტრატორი - moderator: მოდერატორი - staff: სტაფი - user: მომხმარებელი search: ძებნა shared_inbox_url: გაზიარებული ინბოქსის ურლ show: @@ -254,15 +245,9 @@ ka: deletion: desc_html: უფლება მიეცით ყველას, გააუქმონ თავიანთი ანგარიში title: ღია ანგარიშის გაუქმება - min_invite_role: - disabled: არავინ - title: ნება დაერთოს მოწვეევებს show_known_fediverse_at_about_page: desc_html: ჩართვისას, ეს გამოაჩენს ტუტებს ყველა ცნობილი ფედივერსისგან პრევიუზე. სხვა შემთხვევაში, გამოაჩენს მხოლოდ ლოკალურ ტუტებს. title: გამოჩნდეს ცნობილი ვედივერსი თაიმლაინ პრევიუში - show_staff_badge: - desc_html: გამოჩნდეს სტაფის ნიშანი მომხმარებლის გვერდზე - title: სტაფის ნიშნის გამოჩენა site_description: desc_html: საშესავლო პარაგრაფი წინა გვერდზე. აღწერეთ თუ რა ხდის ამ მასტოდონის სერვერს განსაკუთრებულს და სხვა მნიშვნელოვანი. შეგიძლიათ გამოიყენოთ ჰტმლ ტეგები, კერძოდ <a> და <em>. title: ინსტანციის აღწერილობა @@ -395,7 +380,6 @@ ka: title: ფილტრის ცვლილება errors: invalid_context: მოწოდებულია არასწორი ან ცარიელი კონტექსტი - invalid_irreversible: დაუბრუნებელი ფილტრაცია მუშაობს მხოლოდ სახლის ან ნოტიფიკაციის კონტექსტში index: delete: გაუქმება title: ფილტრები diff --git a/config/locales/kab.yml b/config/locales/kab.yml index 0db4e1c9d..4fac9a796 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -63,10 +63,8 @@ kab: posts_tab_heading: Tijewwiqin posts_with_replies: Tijewwaqin akked tririyin roles: - admin: Anedbal bot: Aṛubut group: Agraw - moderator: Atrar unavailable: Ur nufi ara amaɣnu-a unfollow: Ur ṭṭafaṛ ara admin: @@ -81,7 +79,6 @@ kab: avatar: Tugna n umaɣnu by_domain: Taɣult change_email: - changed_msg: Imayl n umiḍan yettwabeddel mebla ugur! current_email: Imayl n tura label: Beddel imayl new_email: Imayl amaynut @@ -152,12 +149,6 @@ kab: reset: Wennez reset_password: Beddel awal uffir resubscribe: Ales ajerred - role: Tisirag - roles: - admin: Anedbal - moderator: Aseɣyad - staff: Tarbaɛt - user: Amseqdac search: Nadi search_same_email_domain: Iseqdacen-nniḍen s yiwet n taɣult n yimayl search_same_ip: Imseqdacen-nniḍen s tansa IP am tinn-ik @@ -446,9 +437,6 @@ kab: users: Γef yimseqdacen idiganen i yeqqnen profile_directory: title: Rmed akaram n imaγnuten - registrations: - min_invite_role: - disabled: Ula yiwen·t registrations_mode: modes: none: Yiwen·t ur yzmir ad izeddi diff --git a/config/locales/kk.yml b/config/locales/kk.yml index 406f7e3c8..b12f79163 100644 --- a/config/locales/kk.yml +++ b/config/locales/kk.yml @@ -72,10 +72,8 @@ kk: posts_tab_heading: Жазба posts_with_replies: Жазбалар және жауаптар roles: - admin: Админ bot: Бот group: Топ - moderator: Мод unavailable: Профиль қолжетімді емес unfollow: Оқымау admin: @@ -92,7 +90,6 @@ kk: avatar: Аватар by_domain: Домен change_email: - changed_msg: Аккаунт email-і сәтті өзгертілді! current_email: Қазіргі email label: email өзгерту new_email: Жаңа email @@ -157,12 +154,6 @@ kk: reset: Қалпына келтіру reset_password: Құпиясөзді қалпына келтіру resubscribe: Resubscribе - role: Рұқсаттар - roles: - admin: Админ - moderator: Модератор - staff: Қызметкерлер - user: Қолданушы search: Іздеу search_same_ip: Осы ІРмен кірген басқа қолданушылар shared_inbox_url: Бөлісілген инбокс URL @@ -385,9 +376,6 @@ kk: deletion: desc_html: Allow anyone to delete their аккаунт title: Open аккаунт deletion - min_invite_role: - disabled: Ешкім - title: Allow шақырулар by registrations_mode: modes: approved: Тіркелу үшін мақұлдау қажет @@ -397,9 +385,6 @@ kk: show_known_fediverse_at_about_page: desc_html: When toggled, it will show toots from all the known fediverse on preview. Otherwise it will only show жергілікті toots. title: Show known fediverse on timeline превью - show_staff_badge: - desc_html: Show a staff badge on a user бет - title: Көрсет staff badge site_description: desc_html: Introductory paragraph on the басты бет. Describe what makes this Mastodon server special and anything else important. You can use HTML tags, in particular <a> and <em>. title: Сервер туралы @@ -618,7 +603,6 @@ kk: title: Фильтр өңдеу errors: invalid_context: Жоқ немесе жарамсыз контекст берілген - invalid_irreversible: Қайтарылмайтын сүзгі тек ішкі немесе ескертпелер контекстімен жұмыс істейді index: delete: Өшіру empty: Сізде ешқандай фильтр жоқ. diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 2397b63e5..ce377f4d6 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -79,10 +79,8 @@ ko: posts_tab_heading: 게시물 posts_with_replies: 게시물과 답장 roles: - admin: 관리자 bot: 봇 group: 그룹 - moderator: 중재자 unavailable: 프로필 사용 불가 unfollow: 팔로우 해제 admin: @@ -101,12 +99,17 @@ ko: avatar: 아바타 by_domain: 도메인 change_email: - changed_msg: 이메일이 성공적으로 바뀌었습니다! + changed_msg: 이메일이 성공적으로 변경되었습니다! current_email: 현재 이메일 주소 label: 이메일 주소 변경 new_email: 새 이메일 주소 submit: 이메일 주소 변경 title: "%{username}의 이메일 주소 변경" + change_role: + changed_msg: 역할이 성공적으로 변경되었습니다! + label: 역할 변경 + no_role: 역할 없음 + title: "%{username}의 역할 변경" confirm: 확인 confirmed: 확인됨 confirming: 확인 중 @@ -150,6 +153,7 @@ ko: active: 활동 all: 전체 pending: 대기중 + silenced: 제한됨 suspended: 정지 중 title: 중재 moderation_notes: 중재 기록 @@ -157,6 +161,7 @@ ko: most_recent_ip: 최근 IP no_account_selected: 아무 계정도 선택 되지 않아 아무 것도 변경 되지 않았습니다 no_limits_imposed: 제한 없음 + no_role_assigned: 할당된 역할 없음 not_subscribed: 구독하지 않음 pending: 심사 대기 perform_full_suspension: 정지시키기 @@ -182,12 +187,7 @@ ko: reset: 초기화 reset_password: 암호 초기화 resubscribe: 다시 구독 - role: 권한 - roles: - admin: 관리자 - moderator: 중재자 - staff: 스태프 - user: 사용자 + role: 역할 search: 검색 search_same_email_domain: 같은 이메일 도메인을 가진 다른 사용자들 search_same_ip: 같은 IP의 다른 사용자들 @@ -637,6 +637,60 @@ ko: unresolved: 미해결 updated_at: 업데이트 시각 view_profile: 프로필 보기 + roles: + add_new: 역할 추가 + assigned_users: + other: "%{count} 명의 사용자" + categories: + administration: 관리 + devops: 데브옵스 + invites: 초대 + moderation: 중재 + special: 특수 + delete: 삭제 + edit: "%{name} 역할 수정" + everyone: 기본 권한 + permissions_count: + other: "%{count} 개의 권한" + privileges: + administrator: 관리자 + delete_user_data: 사용자 데이터 삭제 + invite_users: 사용자 초대 + manage_announcements: 공지 관리 + manage_announcements_description: 사용자가 서버의 공지사항을 관리할 수 있도록 허용 + manage_appeals: 이의제기 관리 + manage_appeals_description: 사용자가 중재에 대한 이의제기를 리뷰할 수 있도록 허용 + manage_blocks: 차단 관리 + manage_blocks_description: 사용자가 이메일 제공자와 IP 주소를 차단할 수 있도록 허용 + manage_custom_emojis: 커스텀 에모지 관리 + manage_custom_emojis_description: 사용자가 서버의 커스텀 에모지를 관리할 수 있도록 허용 + manage_federation: 연합 관리 + manage_federation_description: 사용자가 다른 도메인과의 연합을 차단하거나 허용할 수 있도록 하고, 전달 가능 여부를 조정할 수 있도록 허용 + manage_invites: 초대 관리 + manage_invites_description: 사용자가 초대 링크를 보고 비활성화 할 수 있도록 허용 + manage_reports: 신고 관리 + manage_reports_description: 사용자가 신고를 리뷰하고 해당 사용자에 대한 중재활동을 수행할 수 있도록 허용 + manage_roles: 역할 관리 + manage_roles_description: 사용자가 그들 이하의 권한에 대해 관리하고 할당할 수 있도록 허용 + manage_rules: 규칙 관리 + manage_rules_description: 사용자가 서버 규칙을 수정할 수 있도록 허용합니다 + manage_settings: 설정 관리 + manage_settings_description: 사용자가 서버 설정을 수정할 수 있도록 허용합니다 + manage_taxonomies: 분류 관리 + manage_taxonomies_description: 사용자가 트렌드를 리뷰하고 해시태그 설정을 수정할 수 있도록 허용합니다 + manage_user_access: 사용자 접근 관리 + manage_user_access_description: 사용자가 다른 사용자의 2차 인증을 비활성화 하거나, 이메일 주소를 바꾸거나, 암호를 초기화 할 수 있도록 허용 + manage_users: 사용자 관리 + manage_users_description: 사용자가 다른 사용자의 상세정보를 보고 해당 사용자에 대한 중재활동을 할 수 있도록 허용 + manage_webhooks: 웹훅 관리 + manage_webhooks_description: 사용자가 관리용 웹훅을 설정할 수 있도록 허용 + view_audit_log: 감사 기록 보기 + view_audit_log_description: 사용자가 서버의 감사 기록을 볼 수 있도록 허용 + view_dashboard: 대시보드 보기 + view_dashboard_description: 사용자가 여러 통계정보를 볼 수 있는 대시보드에 접근할 수 있도록 허용 + view_devops: 데브옵스 + view_devops_description: Sidekiq과 pgHero 대시보드에 접근할 수 있도록 허용 + title: 역할 rules: add_new: 규칙 추가 delete: 삭제 @@ -689,9 +743,6 @@ ko: deletion: desc_html: 사용자가 자신의 계정을 삭제할 수 있도록 허용합니다 title: 계정 삭제를 허가함 - min_invite_role: - disabled: 아무도 못 하게 - title: 초대링크를 만들 수 있는 권한 require_invite_text: desc_html: 가입이 수동 승인을 필요로 할 때, "왜 가입하려고 하나요?" 항목을 선택사항으로 두는 것보다는 필수로 두는 것이 낫습니다 title: 새 사용자가 초대 요청 글을 작성해야 하도록 @@ -704,9 +755,6 @@ ko: show_known_fediverse_at_about_page: desc_html: 활성화 되면 프리뷰 페이지에서 페디버스의 모든 게시물을 표시합니다. 비활성화시 로컬에 있는 게시물만 표시 됩니다. title: 타임라인 프리뷰에 알려진 페디버스 표시하기 - show_staff_badge: - desc_html: 사용자 페이지에 스태프 배지를 표시합니다 - title: 스태프 배지 표시 site_description: desc_html: API의 소개문에 사용 됩니다.이 마스토돈 서버의 특별한 점 등을 설명하세요. HTML 태그, 주로 <a>, <em> 같은 것을 사용 가능합니다. title: 서버 설명 @@ -1108,15 +1156,23 @@ ko: public: 퍼블릭 타임라인 thread: 대화 edit: + add_keyword: 키워드 추가 + keywords: 키워드 title: 필터 편집 errors: + deprecated_api_multiple_keywords: 이 파라미터들은 하나를 초과하는 필터 키워드에 적용되기 때문에 이 응용프로그램에서 수정될 수 없습니다. 더 최신의 응용프로그램이나 웹 인터페이스를 사용하세요. invalid_context: 컨텍스트가 없거나 올바르지 않습니다 - invalid_irreversible: 되돌릴 수 없는 필터링은 홈 타임라인과 알림에서만 동작합니다 index: + contexts: "%{contexts}에 대한 필터" delete: 삭제 empty: 필터가 없습니다. + expires_in: "%{distance} 안에 만료됨" + expires_on: "%{date}에 만료됨" + keywords: + other: "%{count}개의 키워드" title: 필터 new: + save: 새 필터 저장 title: 필터 추가 footer: developers: 개발자 @@ -1233,6 +1289,8 @@ ko: copy_account_note_text: '이 사용자는 %{acct}로부터 이동하였습니다. 당신의 이전 노트는 이렇습니다:' notification_mailer: admin: + report: + subject: "%{name} 님이 신고를 제출했습니다" sign_up: subject: "%{name} 님이 가입했습니다" digest: diff --git a/config/locales/ku.yml b/config/locales/ku.yml index a157dbb4e..47b8b037b 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -83,10 +83,8 @@ ku: posts_tab_heading: Şandî posts_with_replies: Şandî û bersiv roles: - admin: Rêvebir bot: Bot group: Kom - moderator: Moderator unavailable: Profîl nay bikaranîn unfollow: Neşopîne admin: @@ -105,12 +103,17 @@ ku: avatar: Wêne by_domain: Navper change_email: - changed_msg: E-nameya ajimêr bi awayekî serkeftî hate guhertin! + changed_msg: E-name bi awayekî serkeftî hate guhertin! current_email: E-nameya heyî label: E-nameyê biguherîne new_email: E-nameya nû submit: E-nameyê biguherîne title: E-nameyê biguherîne bo %{username} + change_role: + changed_msg: Rol bi awayekî serkeftî hate guhertin! + label: Rolê biguherîne + no_role: Rol tune + title: Rolê biguherîne ji bo %{username} confirm: Bipejirîne confirmed: Hate pejirandin confirming: Tê pejirandin @@ -154,6 +157,7 @@ ku: active: Çalak all: Hemû pending: Tê nirxandin + silenced: Sînorkirî suspended: Sekinandî title: Çavdêrî moderation_notes: Nîşeyên Rêvebirinê @@ -161,6 +165,7 @@ ku: most_recent_ip: IP' a dawî no_account_selected: Tu ajimêr nehat hilbijartin ji ber vê tu ajimêr nehat guhertin no_limits_imposed: Sînor nay danîn + no_role_assigned: Ti rol nehatin diyarkirin not_subscribed: Beşdar nebû pending: Li benda nirxandinê ye perform_full_suspension: Sekinî @@ -187,12 +192,7 @@ ku: reset: Ji nû ve saz bike reset_password: Borînpeyvê ji nû ve saz bike resubscribe: Dîsa beşdar bibe - role: Maf - roles: - admin: Rêvebir - moderator: Çavdêr - staff: Xebatkar - user: Bikarhêner + role: Rol search: Bigere search_same_email_domain: Bikarhênerên din ên bi heman navpera e-nameyê search_same_ip: Bikarhênerên din ên xwedî heman IP @@ -651,6 +651,20 @@ ku: unresolved: Neçareserkirî updated_at: Rojanekirî view_profile: Profîlê nîşan bide + roles: + add_new: Rolê tevlî bike + assigned_users: + one: "%{count} bikarhêner" + other: "%{count} bikarhêner" + categories: + administration: Rêvebirî + devops: Devops + invites: Vexwendin + moderation: Çavdêrî + special: Taybet + delete: Jê bibe + privileges: + manage_settings: Sazkariyan bi rê ve bibe rules: add_new: Rêbazekê tevlî bike delete: Jê bibe @@ -703,9 +717,6 @@ ku: deletion: desc_html: Maf bide ku herkes bikaribe ajimêrê te jê bibe title: Jê birina ajimêrê vekek - min_invite_role: - disabled: Ne yek - title: Maf bide vexwendinên ji alîyê require_invite_text: desc_html: Gava ku tomarkirin pêdiviya pejirandina destan dike, Têketina nivîsê "Tu çima dixwazî beşdar bibî?" Bibe sereke ji devla vebijêrkî be title: Ji bo bikarhênerên nû divê ku sedemek tevlêbûnê binivîsinin @@ -718,9 +729,6 @@ ku: show_known_fediverse_at_about_page: desc_html: Dema ku neçalak be, demnameya gerdûnî ya ku ji rûpela zeviyê ve hatî girêdan tenê bi nîşandana naveroka herêmî tên sînorkirin title: Li ser rûpela demnameya ne naskirî naveroka giştî nîşan bide - show_staff_badge: - desc_html: Di rûpela bikarhêner da rozeta xebatkaran nîşan bike - title: Rozeta xebatkara nîşan bike site_description: desc_html: Paragrafa destpêkê li ser API. Dide nasîn ka çi ev rajekarê Mastodon taybet dike û tiştên din ên girîn. Tu dikarî hashtagên HTML-ê, bi kar bîne di <a> û <em> de. title: Danasîna rajekar @@ -1129,7 +1137,6 @@ ku: title: Parzûnê serrast bike errors: invalid_context: Naverok tune ye yan jî nederbasdar tê peydakirin - invalid_irreversible: Tenê qadên agahdarkirinê û serrûpel bi parzûna bêveger re dixebitin index: delete: Jê bibe empty: Parzûnên te tune ne. @@ -1253,6 +1260,8 @@ ku: copy_account_note_text: 'Ev bikarhêner ji %{acct} livî ye, li vir nîşeyên te yên berê ku te di derbarê wî/ê de nivîsandiye:' notification_mailer: admin: + report: + subject: "%{name} ragihandinek şand" sign_up: subject: "%{name} tomar bû" digest: diff --git a/config/locales/lt.yml b/config/locales/lt.yml index 5846f7d5d..96119216d 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -35,9 +35,7 @@ lt: posts_tab_heading: Tootai posts_with_replies: Tootai ir atsakymai roles: - admin: Administratorius bot: Bot'as - moderator: Moderatorius unfollow: Nesekti admin: account_actions: @@ -52,7 +50,6 @@ lt: avatar: Profilio nuotrauka by_domain: Domenas change_email: - changed_msg: Paskyros el paštas sėkmingai pakeistas! current_email: Dabartinis el paštas label: Pakeisti el pašto adresą new_email: Naujas el pašto adresas @@ -112,12 +109,6 @@ lt: reset: Iš naujo reset_password: Atkurti slaptažodį resubscribe: Per prenumeruoti - role: Leidimai - roles: - admin: Administratorius - moderator: Moderatorius - staff: Personalas - user: Vartotojas search: Ieškoti shared_inbox_url: Bendroji gautųjų URL show: @@ -297,15 +288,9 @@ lt: deletion: desc_html: Leisti visiems ištrinti savo paskyrą title: Atidaryti paskyros trynimą - min_invite_role: - disabled: Nei vienas - title: Leisti pakvietimus show_known_fediverse_at_about_page: desc_html: Kai įjungta, rodys įrašus iš visos žinomos fedi-visatos. Kitokiu atvėju, rodys tik lokalius įrašus. title: Rodyti žinoma fedi-visatos laiko juosta peržiūroje - show_staff_badge: - desc_html: Rodyti personalo ženklelį vartotojo puslapyje - title: Rodyti personalo ženklelį site_description: desc_html: Introdukcinis paragrafas pagrindiniame puslapyje. Apibūdink, kas padaro šį Mastodon serverį išskirtiniu ir visa kita, kas svarbu. Nebijok naudoti HTML žymes, pavyzdžiui < a > bei <em>. title: Serverio apibūdinimas @@ -449,7 +434,6 @@ lt: title: Keisti filtrą errors: invalid_context: Jokio arba netinkamas pateiktas kontekstas - invalid_irreversible: Negrąžinamas filtras veikia tik namų ir priminimų kontekste index: delete: Ištrinti title: Filtrai diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 2ceec30b2..cc7306c09 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -62,7 +62,7 @@ lv: choices_html: "%{name} izvēles:" endorsements_hint: Jūs varat apstiprināt cilvēkus, kuriem sekojat no tīmekļa saskarnes, un viņi tiks parādīti šeit. featured_tags_hint: Šeit vari norādīt īpašus tēmturus, kuri tiks parādīti šeit. - follow: Seko + follow: Sekot followers: one: Sekotājs other: Sekotāji @@ -87,10 +87,8 @@ lv: posts_tab_heading: Ziņas posts_with_replies: Ziņas un atbildes roles: - admin: Admins bot: Bots group: Grupa - moderator: Moder unavailable: Profils nav pieejams unfollow: Pārstāt sekot admin: @@ -109,12 +107,17 @@ lv: avatar: Avatars by_domain: Domēns change_email: - changed_msg: Konta e-pasts veiksmīgi nomainīts! + changed_msg: E-pasts veiksmīgi nomainīts! current_email: Pašreizējais e-pasts label: Mainīt e-pastu new_email: Jaunā e-pasta adrese submit: Mainīt e-pastu title: Mainīt e-pastu %{username} + change_role: + changed_msg: Loma veiksmīgi nomainīta! + label: Mainīt lomu + no_role: Nav lomas + title: Mainīt lomu %{username} confirm: Apstiprināt confirmed: Apstiprināts confirming: Apstiprina @@ -150,7 +153,7 @@ lv: remote: Attālinātie title: Atrašanās vieta login_status: Pieteikšanās statuss - media_attachments: Mediju pielikumi + media_attachments: Multivides pielikumi memorialize: Pārvērst atmiņās memorialized: Piemiņa saglabāta memorialized_msg: "%{username} veiksmīgi pārvērsts par piemiņas kontu" @@ -158,6 +161,7 @@ lv: active: Aktīvie all: Visi pending: Gaida + silenced: Ierobežotie suspended: Apturētie title: Moderācija moderation_notes: Moderācijas piezīmes @@ -165,6 +169,7 @@ lv: most_recent_ip: Pati pēdējā IP no_account_selected: Neviens konts netika mainīts, jo neviens netika atlasīts no_limits_imposed: Nav noteikti ierobežojumi + no_role_assigned: Loma nav piešķirta not_subscribed: Nav abonēts pending: Gaida pārskatīšanu perform_full_suspension: Apturēt @@ -192,12 +197,7 @@ lv: reset: Atiestatīt reset_password: Atiestatīt paroli resubscribe: Pieteikties vēlreiz - role: Privilēģijas - roles: - admin: Administrators - moderator: Moderators - staff: Personāls - user: Lietotājs + role: Loma search: Meklēt search_same_email_domain: Citi lietotāji ar tādu pašu e-pasta domēnu search_same_ip: Citi lietotāji ar tādu pašu IP @@ -663,6 +663,69 @@ lv: unresolved: Neatrisinātie updated_at: Atjaunināts view_profile: Skatīt profilu + roles: + add_new: Pievienot lomu + assigned_users: + one: "%{count} lietotājs" + other: "%{count} lietotāji" + zero: "%{count} lietotāju" + categories: + administration: Administrēšana + devops: Izstrādātāji + invites: Uzaicinājumi + moderation: Moderācija + special: Īpašās + delete: Dzēst + description_html: Izmantojot lietotāju lomas, vari pielāgot, kurām Mastodon funkcijām un apgabaliem var piekļūt tavi lietotāji. + edit: Rediģēt lomu '%{name}' + everyone: Noklusētās atļaujas + everyone_full_description_html: Šī ir pamata loma, kas ietekmē visus lietotājus, pat tos, kuriem nav piešķirta loma. Visas pārējās lomas manto atļaujas no šīs. + permissions_count: + one: "%{count} atļauja" + other: "%{count} atļaujas" + zero: "%{count} atļauju" + privileges: + administrator: Administrators + administrator_description: Lietotāji ar šo atļauju apies visas atļaujas + delete_user_data: Dzēst Lietotāja Datus + delete_user_data_description: Ļauj lietotājiem bez kavēšanās dzēst citu lietotāju datus + invite_users: Uzaicināt Lietotājus + invite_users_description: Ļauj lietotājiem uzaicināt jaunus cilvēkus uz šo serveri + manage_announcements: Pārvaldīt Paziņojumus + manage_announcements_description: Ļauj lietotājiem pārvaldīt paziņojumus serverī + manage_appeals: Pārvaldīt Pārsūdzības + manage_appeals_description: Ļauj lietotājiem izskatīt apelācijas pret regulēšanas darbībām + manage_blocks: Pārvaldīt Bloķus + manage_blocks_description: Ļauj lietotājiem bloķēt e-pasta pakalpojumu sniedzējus un IP adreses + manage_custom_emojis: Pārvaldīt Pielāgotās Emocijzīmes + manage_custom_emojis_description: Ļauj lietotājiem pārvaldīt pielāgotās emocijzīmes serverī + manage_federation: Pārvaldīt Federāciju + manage_federation_description: Ļauj lietotājiem bloķēt vai atļaut federāciju ar citiem domēniem un kontrolēt piegādi + manage_invites: Pārvaldīt Uzaicinājumus + manage_invites_description: Ļauj lietotājiem pārlūkot un deaktivizēt uzaicinājuma saites + manage_reports: Pārvaldīt Pārskatus + manage_reports_description: Ļauj lietotājiem pārskatīt pārskatus un veikt pret tiem regulēšanas darbības + manage_roles: Pārvaldīt Lomas + manage_roles_description: Ļauj lietotājiem pārvaldīt un piešķirt lomas, kas ir zemākas par viņu lomu + manage_rules: Pārvaldīt Noteikumus + manage_rules_description: Ļauj lietotājiem mainīt servera noteikumus + manage_settings: Pārvaldīt Iestatījumus + manage_settings_description: Ļauj lietotājiem mainīt vietnes uzstādījumus + manage_taxonomies: Pārvaldīt Taksonomijas + manage_taxonomies_description: Ļauj lietotājiem pārskatīt aktuālo saturu un atjaunināt atsauces iestatījumus + manage_user_access: Pārvaldīt Lietotāju Piekļuves + manage_user_access_description: Ļauj lietotājiem atspējot citu lietotāju divu faktoru autentifikāciju, mainīt savu e-pasta adresi un atiestatīt paroli + manage_users: Pārvaldīt Lietotājus + manage_users_description: Ļauj lietotājiem skatīt citu lietotāju informāciju un veikt pret viņiem regulēšanas darbības + manage_webhooks: Pārvaldīt Tīmekļa Aizķeres + manage_webhooks_description: Ļauj lietotājiem iestatīt tīmekļa aizķeres administratīviem pasākumiem + view_audit_log: Skatīt Audita Žurnālu + view_audit_log_description: Ļauj lietotājiem redzēt serverī veikto administratīvo darbību vēsturi + view_dashboard: Skatīt Informācijas Paneli + view_dashboard_description: Ļauj lietotājiem piekļūt informācijas panelim un dažādiem rādītājiem + view_devops: Izstrādātāji + view_devops_description: Ļauj lietotājiem piekļūt Sidekiq un pgHero informācijas paneļiem + title: Lomas rules: add_new: Pievienot noteikumu delete: Dzēst @@ -715,9 +778,6 @@ lv: deletion: desc_html: Atļaut ikvienam dzēst savu kontu title: Atvērt konta dzēšanu - min_invite_role: - disabled: Nevienam - title: Atļaut uzaicinājumus require_invite_text: desc_html: 'Ja reģistrācijai nepieciešama manuāla apstiprināšana, izdari, lai teksta: “Kāpēc vēlaties pievienoties?” ievade ir obligāta, nevis neobligāts' title: Pieprasīt jauniem lietotājiem ievadīt pievienošanās iemeslu @@ -730,9 +790,6 @@ lv: show_known_fediverse_at_about_page: desc_html: Ja šī funkcija ir atspējota, tā ierobežo publisko ziņu lentu, kas ir saistīta ar galveno lapu, lai parādītu tikai vietējo saturu title: Iekļaut federēto saturu neautentificētā publiskā ziņu lentas lapā - show_staff_badge: - desc_html: Parāda personāla emblēmu lietotāja lapā - title: Parādīt personāla emblēmu site_description: desc_html: Ievadpunkts par API. Apraksti, kas padara šo Mastodon serveri īpašu, un jebko citu svarīgu. Vari izmantot HTML tagus, jo īpaši <a> un <em>. title: Servera apraksts @@ -1142,15 +1199,25 @@ lv: public: Publiskās ziņu lentas thread: Sarunas edit: + add_keyword: Pievienot atslēgvārdu + keywords: Atslēgvārdi title: Rediģēt filtru errors: + deprecated_api_multiple_keywords: Šos parametrus šajā lietojumprogrammā nevar mainīt, jo tie attiecas uz vairāk nekā vienu filtra atslēgvārdu. Izmanto jaunāku lietojumprogrammu vai tīmekļa saskarni. invalid_context: Nav, vai piegādāts nederīgs konteksts - invalid_irreversible: Neatgriezeniskā filtrēšana darbojas tikai sākuma vai paziņojumu kontekstā index: + contexts: Filtri %{contexts} delete: Dzēst empty: Tev nav filtru. + expires_in: Beidzas %{distance} + expires_on: Beidzas %{date} + keywords: + one: "%{count} atsēgvārds" + other: "%{count} atslēgvārdi" + zero: "%{count} atslēgvārdu" title: Filtri new: + save: Saglabāt jauno filtru title: Pievienot jaunu filtru footer: developers: Izstrādātāji @@ -1271,6 +1338,8 @@ lv: copy_account_note_text: 'Šis lietotājs pārcēlās no %{acct}, šeit bija tavas iepriekšējās piezīmes par viņu:' notification_mailer: admin: + report: + subject: "%{name} iesniedza ziņojumu" sign_up: subject: "%{name} ir pierakstījies" digest: diff --git a/config/locales/ml.yml b/config/locales/ml.yml index f035633ca..76a3ec07c 100644 --- a/config/locales/ml.yml +++ b/config/locales/ml.yml @@ -35,7 +35,6 @@ ml: posts_tab_heading: ടൂട്ടുകൾ posts_with_replies: ടൂട്ടുകളും മറുപടികളും roles: - admin: അഡ്‌മിന്‍ bot: ബോട്ട് group: ഗ്രൂപ്പ് unavailable: പ്രൊഫൈൽ ലഭ്യമല്ല @@ -47,7 +46,6 @@ ml: avatar: അവതാർ by_domain: മേഖല change_email: - changed_msg: അംഗത്തിന്റെ ഇലക്ട്രോണിക് കത്തിന്റെ മേൽവിലാസം വിജയകരമായി മാറ്റിയിരിക്കുന്നു! current_email: ഇപ്പോഴത്തെ ഇലക്ട്രോണിക് കത്തിന്റെ മേൽവിലാസം label: മാറിയ ഇലക്ട്രോണിക് കത്തിന്റെ മേൽവിലാസം new_email: പുതിയ ഇലക്ട്രോണിക് കത്ത് @@ -83,9 +81,6 @@ ml: success: സ്ഥിരീകരണ ഇമെയിൽ വിജയകരമായി അയച്ചു! reset: പുനഃക്രമീകരിക്കുക reset_password: പാസ്‌വേഡ് പുനഃക്രമീകരിക്കുക - role: അനുമതികൾ - roles: - user: ഉപയോക്താവ് search: തിരയുക title: അക്കൗണ്ടുകൾ unconfirmed_email: സ്ഥിരീകരിക്കാത്ത ഇമെയിൽ diff --git a/config/locales/ms.yml b/config/locales/ms.yml index d400d3256..36aa351d9 100644 --- a/config/locales/ms.yml +++ b/config/locales/ms.yml @@ -75,10 +75,8 @@ ms: posts_tab_heading: Hantaran posts_with_replies: Hantaran dan balasan roles: - admin: Pentadbir bot: Bot group: Kumpulan - moderator: Penyederhana unavailable: Profil tidak tersedia unfollow: Nyahikut admin: @@ -97,7 +95,6 @@ ms: avatar: Avatar by_domain: Domain change_email: - changed_msg: E-mel akaun telah berjaya ditukar! current_email: E-mel semasa label: Ubah e-mel new_email: E-mel baharu @@ -172,12 +169,6 @@ ms: reset: Tetapkan semula reset_password: Tetapkan semula kata laluan resubscribe: Langgan semula - role: Kebenaran - roles: - admin: Pentadbir - moderator: Penyederhana - staff: Kakitangan - user: Pengguna search: Cari search_same_email_domain: Pengguna lain dengan domain e-mel yang sama search_same_ip: Pengguna lain dengan alamat IP yang sama @@ -529,9 +520,6 @@ ms: deletion: desc_html: Benarkan sesiapapun memadamkan akaun mereka title: Buka pemadaman akaun - min_invite_role: - disabled: Tiada sesiapa - title: Benarkan jemputan dari require_invite_text: desc_html: Apabila pendaftaran memerlukan kelulusan manual, tandakan input teks "Kenapa anda mahu menyertai?" sebagai wajib, bukan pilihan title: Memerlukan alasan bagi pengguna baru untuk menyertai diff --git a/config/locales/nl.yml b/config/locales/nl.yml index b5040153e..08ccb823c 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -81,10 +81,8 @@ nl: posts_tab_heading: Berichten posts_with_replies: Berichten en reacties roles: - admin: Beheerder bot: Bot group: Groep - moderator: Moderator unavailable: Profiel niet beschikbaar unfollow: Ontvolgen admin: @@ -103,7 +101,6 @@ nl: avatar: Avatar by_domain: Domein change_email: - changed_msg: E-mailadres van account succesvol veranderd! current_email: Huidig e-mailadres label: E-mailadres wijzigen new_email: Nieuw e-mailadres @@ -135,7 +132,7 @@ nl: invite_request_text: Redenen om te registreren invited_by: Uitgenodigd door ip: IP - joined: Geregistreerd in + joined: Geregistreerd location: all: Alles local: Lokaal @@ -160,7 +157,7 @@ nl: not_subscribed: Niet geabonneerd pending: Moet nog beoordeeld worden perform_full_suspension: Opschorten - previous_strikes: Vorige overtredingen + previous_strikes: Eerdere overtredingen previous_strikes_description_html: one: Dit account heeft één overtreding. other: Dit account heeft %{count} overtredingen. @@ -183,12 +180,6 @@ nl: reset: Opnieuw reset_password: Wachtwoord opnieuw instellen resubscribe: Opnieuw abonneren - role: Bevoegdheden - roles: - admin: Beheerder - moderator: Moderator - staff: Medewerkers - user: Gebruiker search: Zoeken search_same_email_domain: Andere gebruikers met hetzelfde e-maildomein search_same_ip: Andere gebruikers met hetzelfde IP-adres @@ -202,6 +193,7 @@ nl: silenced: Beperkt statuses: Berichten subscribe: Abonneren + suspend: Opschorten suspended: Opgeschort suspension_irreversible: De gegevens van dit account zijn onomkeerbaar verwijderd. Je kunt het opschorten van dit account ongedaan maken zodat het weer valt te gebruiken, maar de verwijderde gegevens worden hiermee niet hersteld. suspension_reversible_hint_html: Dit account is opgeschort en de gegevens worden volledig verwijderd op %{date}. Tot die tijd kan dit account worden hersteld zonder nadelige gevolgen. Wanneer je alle gegevens van dit account onmiddellijk wilt verwijderen, kun je dit hieronder doen. @@ -220,6 +212,7 @@ nl: whitelisted: Goedgekeurd voor federatie action_logs: action_types: + approve_appeal: Bezwaar goedkeuren assigned_to_self_report: Rapportage toewijzen change_email_user: E-mailadres van gebruiker wijzigen confirm_user: Gebruiker bevestigen @@ -247,6 +240,7 @@ nl: enable_user: Gebruiker inschakelen memorialize_account: Het account in een In memoriam veranderen promote_user: Gebruiker promoveren + reject_appeal: Bezwaar verwerpen remove_avatar_user: Avatar verwijderen reopen_report: Rapportage heropenen reset_password_user: Wachtwoord opnieuw instellen @@ -263,6 +257,7 @@ nl: update_domain_block: Domeinblokkade bijwerken update_status: Bericht bijwerken actions: + approve_appeal_html: "%{name} heeft het bezwaar tegen de moderatie-actie van %{target} goedgekeurd" assigned_to_self_report_html: "%{name} heeft rapportage %{target} aan zichzelf toegewezen" change_email_user_html: "%{name} veranderde het e-mailadres van gebruiker %{target}" confirm_user_html: E-mailadres van gebruiker %{target} is door %{name} bevestigd @@ -290,6 +285,7 @@ nl: enable_user_html: Inloggen voor %{target} is door %{name} ingeschakeld memorialize_account_html: Het account %{target} is door %{name} in een In memoriam veranderd promote_user_html: Gebruiker %{target} is door %{name} gepromoveerd + reject_appeal_html: "%{name} heeft het bezwaar tegen de moderatie-actie van %{target} verworpen" remove_avatar_user_html: "%{name} verwijderde de avatar van %{target}" reopen_report_html: "%{name} heeft rapportage %{target} heropend" reset_password_user_html: Wachtwoord van gebruiker %{target} is door %{name} opnieuw ingesteld @@ -360,9 +356,26 @@ nl: updated_msg: Bijwerken van emoji is geslaagd! upload: Uploaden dashboard: + active_users: actieve gebruikers + interactions: interacties + media_storage: Opgeslagen mediabestanden + new_users: nieuwe gebruikers + opened_reports: aangemaakte rapportages + pending_appeals_html: + one: "%{count} bezwaar te beoordelen" + other: "%{count} bezwaren te beoordelen" + resolved_reports: opgeloste rapportages software: Software + sources: Locatie van registratie space: Ruimtegebruik title: Dashboard + top_languages: Meest actieve talen + top_servers: Meest actieve servers + website: Website + disputes: + appeals: + empty: Geen bezwaren gevonden. + title: Bezwaren domain_allows: add_new: Federatie met domein goedkeuren created_msg: Federatie met domein is succesvol goedgekeurd @@ -400,6 +413,9 @@ nl: add_new: Nieuwe toevoegen created_msg: Blokkeren e-maildomein geslaagd delete: Verwijderen + dns: + types: + mx: MX-record domain: Domein new: create: Blokkeren @@ -414,13 +430,37 @@ nl: title: Aanbevolen accounts unsuppress: Account weer aanbevelen instances: + availability: + title: Beschikbaarheid + warning: De laatste poging om met deze server te verbinden was onsuccesvol back_to_all: Alles back_to_limited: Beperkt back_to_warning: Waarschuwing by_domain: Domein + content_policies: + comment: Interne reden + description_html: Je kunt het beleid bepalen dat op de accounts van dit domein en alle subdomeinen van toepassing is. + policies: + reject_media: Mediabestanden weigeren + reject_reports: Rapportages weigeren + silence: Beperkt + suspend: Opgeschort + policy: Zwaarte + reason: Publieke reden + title: Beleid + dashboard: + instance_accounts_dimension: Meest door ons gevolgde accounts + instance_accounts_measure: opgeslagen accounts + instance_followers_measure: daar ons daar gevolgd + instance_follows_measure: door hun hier gevolgd + instance_languages_dimension: Meest actieve talen + instance_media_attachments_measure: opgeslagen mediabestanden + instance_reports_measure: rapportages over hun + instance_statuses_measure: opgeslagen berichten delivery: all: Alles clear: Bezorgfouten weghalen + failing: Problemen restart: Bezorging herstarten stop: Bezorging beëindigen unavailable: Niet beschikbaar @@ -434,6 +474,7 @@ nl: title: Moderatie private_comment: Privé-opmerking public_comment: Openbare opmerking + purge: Volledig verwijderen title: Federatie total_blocked_by_us: Door ons geblokkeerd total_followed_by_them: Door hun gevolgd @@ -489,14 +530,17 @@ nl: notes: one: "%{count} opmerking" other: "%{count} opmerkingen" + action_log: Auditlog action_taken_by: Actie uitgevoerd door are_you_sure: Weet je het zeker? assign_to_self: Aan mij toewijzen assigned: Toegewezen moderator by_target_domain: Domein van gerapporteerde account + category: Category comment: none: Geen created_at: Gerapporteerd op + delete_and_resolve: Bericht verwijderen forwarded: Doorgestuurd forwarded_to: Doorgestuurd naar %{domain} mark_as_resolved: Markeer als opgelost @@ -507,17 +551,20 @@ nl: create_and_unresolve: Heropenen met opmerking delete: Verwijderen placeholder: Beschrijf welke acties zijn ondernomen of andere gerelateerde opmerkingen… + title: Opmerkingen reopen: Rapportage heropenen report: 'Rapportage #%{id}' reported_account: Gerapporteerde account reported_by: Gerapporteerd door resolved: Opgelost resolved_msg: Rapportage succesvol opgelost! - status: Bericht + status: Rapportages + target_origin: Herkomst van de gerapporteerde accounts title: Rapportages unassign: Niet langer toewijzen unresolved: Onopgelost updated_at: Bijgewerkt + view_profile: Profiel bekijken rules: add_new: Regel toevoegen delete: Verwijderen @@ -570,9 +617,6 @@ nl: deletion: desc_html: Toestaan dat iedereen diens eigen account kan verwijderen title: Verwijderen account toestaan - min_invite_role: - disabled: Niemand - title: Uitnodigingen toestaan door require_invite_text: desc_html: Maak het invullen van "Waarom wil je je hier registreren?" verplicht in plaats van optioneel, wanneer registraties handmatig moeten worden goedgekeurd title: Nieuwe gebruikers moeten een reden invullen waarom ze zich willen registreren @@ -585,9 +629,6 @@ nl: show_known_fediverse_at_about_page: desc_html: Wanneer ingeschakeld wordt de globale tijdlijn op de voorpagina getoond en wanneer uitgeschakeld de lokale tijdlijn title: De globale tijdlijn op de openbare tijdlijnpagina tonen - show_staff_badge: - desc_html: Medewerkersbadge op profielpagina tonen - title: Medewerkersbadge tonen site_description: desc_html: Introductie-alinea voor de API. Beschrijf wat er speciaal is aan deze server en andere zaken die van belang zijn. Je kan HTML gebruiken, zoals <a> en <em>. title: Omschrijving Mastodonserver (API) @@ -619,12 +660,17 @@ nl: destroyed_msg: Verwijderen website-upload geslaagd! statuses: back_to_account: Terug naar accountpagina + batch: + report: Rapportage deleted: Verwijderd media: title: Media no_status_selected: Er werden geen berichten gewijzigd, omdat er geen enkele werd geselecteerd title: Berichten van account with_media: Met media + strikes: + appeal_approved: Bezwaar ingediend + appeal_pending: Bezwaar in behandeling system_checks: database_schema_check: message_html: Niet alle databasemigraties zijn voltooid. Je moet deze uitvoeren om er voor te zorgen dat de applicatie blijft werken zoals het hoort @@ -637,6 +683,20 @@ nl: review: Status beoordelen updated_msg: Instellingen hashtag succesvol bijgewerkt title: Beheer + trends: + allow: Toestaan + disallow: Weigeren + links: + allow: Link toestaan + allow_provider: Uitgever toestaan + title: Trending links + only_allowed: Alleen toegestaan + pending_review: In afwachting van beoordeling + preview_card_providers: + title: Uitgevers + rejected: Geweigerd + statuses: + allow: Bericht toestaan warning_presets: add_new: Nieuwe toevoegen delete: Verwijderen @@ -644,6 +704,18 @@ nl: empty: Je hebt nog geen presets voor waarschuwingen toegevoegd. title: Presets voor waarschuwingen beheren admin_mailer: + new_appeal: + actions: + delete_statuses: het verwijderen van diens berichten + disable: het bevriezen van diens account + mark_statuses_as_sensitive: het markeren van diens berichten als gevoelig + none: een waarschuwing + sensitive: het gevoelig forceren van diens account + silence: het beperken van diens account + suspend: het opschorten van diens account + body: "%{target} maakt bezwaar tegen een moderatie-actie door %{action_taken_by} op %{date}, betreffende %{type}. De gebruiker schrijft:" + next_steps: Je kunt het bezwaar goedkeuren om daarmee de moderatie-actie ongedaan te maken, of je kunt het verwerpen. + subject: "%{username} maakt bezwaar tegen een moderatie-actie op %{instance}" new_pending_account: body: Zie hieronder de details van het nieuwe account. Je kunt de aanvraag goedkeuren of afkeuren. subject: Er dient een nieuw account op %{instance} te worden beoordeeld (%{username}) @@ -789,14 +861,18 @@ nl: explore_mastodon: "%{title} verkennen" disputes: strikes: - appeal: Beroep - appeal_approved: Het aangetekende beroep is goedgekeurd en deze overtreding is niet langer geldig - appeal_rejected: Het aangetekende beroep is afgewezen - appeal_submitted_at: Beroep aangetekend - appealed_msg: Jouw aangetekende beroep is ingediend. Wanneer deze wordt goedgekeurd, krijg je hiervan bericht. + appeal: Bezwaar + appeal_approved: Het ingediende bezwaar is goedgekeurd en de eerder vastgestelde overtreding is niet langer geldig + appeal_rejected: Het ingediende bezwaar is verworpen + appeal_submitted_at: Bezwaar ingediend + appealed_msg: Jouw bezwaar is ingediend. Wanneer deze wordt goedgekeurd, krijg je hiervan bericht. appeals: - submit: Beroep aantekenen - approve_appeal: Beroep goedkeuren + submit: Bezwaar indienen + approve_appeal: Bezwaar goedkeuren + reject_appeal: Bezwaar verworpen + your_appeal_approved: Jouw bezwaar is goedgekeurd + your_appeal_pending: Je hebt een bezwaar ingediend + your_appeal_rejected: Jouw bezwaar is verworpen domain_validator: invalid_domain: is een ongeldige domeinnaam errors: @@ -845,15 +921,24 @@ nl: public: Openbare tijdlijnen thread: Gesprekken edit: + add_keyword: Trefwoord toevoegen + keywords: Trefwoorden title: Filter bewerken errors: + deprecated_api_multiple_keywords: Deze instellingen kunnen niet via deze applicatie worden veranderd, omdat er meer dan één trefwoord wordt gebruikt. Gebruik een meer recente applicatie of de webomgeving. invalid_context: Geen of ongeldige context verstrekt - invalid_irreversible: Onomkeerbaar filteren werkt alleen met de starttijdlijn en meldingen index: + contexts: Filters in %{contexts} delete: Verwijderen empty: Je hebt geen filters aangemaakt. + expires_in: Vervalt na %{distance} + expires_on: Vervalt op %{date} + keywords: + one: "%{count} trefwoord" + other: "%{count} trefwoorden" title: Filters new: + save: Nieuwe filter opslaan title: Nieuw filter toevoegen footer: developers: Ontwikkelaars @@ -960,6 +1045,9 @@ nl: carry_mutes_over_text: Deze gebruiker is verhuisd vanaf %{acct}. Je hebt dat account genegeerd. copy_account_note_text: 'Deze gebruiker is verhuisd vanaf %{acct}. Je hebt de volgende opmerkingen over dat account gemaakt:' notification_mailer: + admin: + report: + subject: "%{name} heeft een rapportage ingediend" digest: action: Alle meldingen bekijken body: Hier is een korte samenvatting van de berichten die je sinds jouw laatste bezoek op %{since} hebt gemist @@ -1188,10 +1276,23 @@ nl: public_long: Aan iedereen tonen, ook op openbare tijdlijnen unlisted: Minder openbaar unlisted_long: Aan iedereen tonen, maar niet op openbare tijdlijnen + statuses_cleanup: + min_age: + '1209600': 2 weken + '15778476': 6 maanden + '2629746': 1 maand + '31556952': 1 jaar + '5259492': 2 maanden + '604800': 1 week + '63113904': 2 jaar + '7889238': 3 maanden stream_entries: pinned: Vastgemaakt bericht reblogged: boostte sensitive_content: Gevoelige inhoud + strikes: + errors: + too_late: De periode dat je bezwaar kon maken is verstreken tags: does_not_match_previous_name: komt niet overeen met de vorige naam terms: @@ -1301,11 +1402,22 @@ nl: recovery_instructions_html: Wanneer je ooit de toegang verliest tot jouw telefoon, kan je met behulp van een van de herstelcodes hieronder opnieuw toegang krijgen tot jouw account. Zorg ervoor dat je de herstelcodes op een veilige plek bewaard. Je kunt ze bijvoorbeeld printen en ze samen met andere belangrijke documenten bewaren. webauthn: Beveiligingssleutels user_mailer: + appeal_approved: + action: Ga naar je account + explanation: Het bezwaar tegen een door een moderator vastgestelde overtreding van jou op %{strike_date}, ingediend op %{appeal_date}, is goedgekeurd. De eerder vastgestelde overtreding is hierbij niet langer geldig. + subject: Jouw bezwaar van %{date} is goedgekeurd + title: Bezwaar goedgekeurd + appeal_rejected: + explanation: Het bezwaar tegen een door een moderator vastgestelde overtreding van jou op %{strike_date}, ingediend op %{appeal_date}, is verworpen. De vastgestelde overtreding blijft daarom ongewijzigd. + subject: Jouw bezwaar van %{date} is verworpen + title: Bezwaar verworpen backup_ready: explanation: Je hebt een volledige back-up van jouw Mastodon-account opgevraagd. Het staat nu klaar om te worden gedownload! subject: Jouw archief staat klaar om te worden gedownload title: Archief ophalen warning: + appeal: Bezwaar indienen + appeal_description: Wanneer je denkt dat dit een fout is, kun je een bezwaar indienen bij de medewerkers van %{instance}. explanation: mark_statuses_as_sensitive: Sommige van jouw berichten zijn als gevoelig gemarkeerd door de moderatoren van %{instance}. Dit betekent dat mensen op de media in de berichten moeten klikken/tikken om deze weer te geven. Je kunt media in de toekomst ook zelf als gevoelig markeren. sensitive: Vanaf nu worden al jouw geüploade media als gevoelig gemarkeerd en verborgen achter een waarschuwing. diff --git a/config/locales/nn.yml b/config/locales/nn.yml index 5218270da..14f9b95ad 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -74,10 +74,8 @@ nn: posts_tab_heading: Tut posts_with_replies: Tut og svar roles: - admin: Administrator bot: Robot group: Gruppe - moderator: Moderator unavailable: Profil ikkje tilgjengeleg unfollow: Slutt å fylgja admin: @@ -96,7 +94,6 @@ nn: avatar: Bilete by_domain: Domene change_email: - changed_msg: Konto-e-posten er endra! current_email: Noverande e-post label: Byt e-post new_email: Ny e-post @@ -173,12 +170,6 @@ nn: reset: Attstill reset_password: Attstill passord resubscribe: Ting på nytt - role: Løyve - roles: - admin: Administrator - moderator: Ordstyrer - staff: Personell - user: Brukar search: Søk search_same_email_domain: Andre brukarar med same e-postdomene search_same_ip: Andre brukarar med same IP @@ -529,9 +520,6 @@ nn: deletion: desc_html: Tillat alle å sletta kontoen sin title: Åpne kontosletting - min_invite_role: - disabled: Ingen - title: Tillat innbydingar frå require_invite_text: desc_html: Når registreringer krever manuell godkjenning, må du føye «Hvorfor vil du bli med?» tekstinput obligatoriske i stedet for valgfritt title: Krev nye brukere for å oppgi en grunn for å delta @@ -543,9 +531,6 @@ nn: title: Registreringsmodus show_known_fediverse_at_about_page: desc_html: Begrenser den offentlige tidslinjen som er knyttet til landingssiden når den er deaktivert, og viser bare lokalt innhold - show_staff_badge: - desc_html: Vis personalmerke på ei brukarside - title: Vis personalmerke site_description: desc_html: Vises som et avsnitt på forsiden og brukes som en meta-tagg. Du kan bruke HTML-tagger, spesielt <a> og <em>. title: Tenarskilding diff --git a/config/locales/no.yml b/config/locales/no.yml index 30b7a56fb..13f13d8bd 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -77,10 +77,8 @@ posts_tab_heading: Tuter posts_with_replies: Tuter med svar roles: - admin: Administrator bot: Bot group: Gruppe - moderator: Moderere unavailable: Profilen er utilgjengelig unfollow: Slutt å følge admin: @@ -99,7 +97,6 @@ avatar: Profilbilde by_domain: Domene change_email: - changed_msg: Konto-E-postadressen ble vellykket endret! current_email: Nåværende E-post label: Endre e-post new_email: Ny E-post @@ -176,12 +173,6 @@ reset: Tilbakestill reset_password: Nullstill passord resubscribe: Abonner på nytt - role: Rettigheter - roles: - admin: Administrator - moderator: Ordstyrer - staff: Personale - user: Bruker search: Søk search_same_email_domain: Andre brukere med samme E-postdomene search_same_ip: Andre brukere med den samme IP-en @@ -529,9 +520,6 @@ deletion: desc_html: Tillat alle å slette sin konto title: Åpne kontosletting - min_invite_role: - disabled: Ingen - title: Tillat invitasjoner fra require_invite_text: desc_html: Når registreringer krever manuell godkjenning, må du føye «Hvorfor vil du bli med?» tekstinput obligatoriske i stedet for valgfritt title: Krev nye brukere for å oppgi en grunn for å delta @@ -543,9 +531,6 @@ title: Registreringsmodus show_known_fediverse_at_about_page: desc_html: Begrenser den offentlige tidslinjen som er knyttet til landingssiden når den er deaktivert, og viser bare lokalt innhold - show_staff_badge: - desc_html: Vis personalemerke på brukersiden - title: Vis personalemerke site_description: desc_html: Vises som et avsnitt på forsiden og brukes som en meta-tagg. Du kan bruke HTML-tagger, spesielt <a> og <em>. title: Nettstedsbeskrivelse diff --git a/config/locales/oc.yml b/config/locales/oc.yml index 57cecbdc4..463940567 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -71,10 +71,8 @@ oc: posts_tab_heading: Tuts posts_with_replies: Tuts e responsas roles: - admin: Admin bot: Robòt group: Grop - moderator: Moderador unavailable: Perfil indisponible unfollow: Quitar de sègre admin: @@ -92,7 +90,6 @@ oc: avatar: Avatar by_domain: Domeni change_email: - changed_msg: Adreça corrèctament cambiada ! current_email: Adreça actuala label: Cambiar d’adreça new_email: Novèla adreça @@ -160,12 +157,6 @@ oc: reset: Reïnicializar reset_password: Reïnicializar lo senhal resubscribe: Se tornar abonar - role: Autorizacions - roles: - admin: Administrator - moderator: Moderador - staff: Personnal - user: Uitlizaire search: Cercar search_same_ip: Autres utilizaires amb la meteissa IP security_measures: @@ -475,9 +466,6 @@ oc: deletion: desc_html: Autorizar lo monde a suprimir lor compte title: Possibilitat de suprimir lo compte - min_invite_role: - disabled: Degun - title: Autorizat amb invitacions registrations_mode: modes: approved: Validacion necessària per s’inscriure @@ -487,9 +475,6 @@ oc: show_known_fediverse_at_about_page: desc_html: Un còp activat mostrarà los tuts de totes los fediverse dins l’apercebut. Autrament mostrarà pas que los tuts locals. title: Mostrar los fediverse coneguts dins l’apercebut del flux - show_staff_badge: - desc_html: Mostrar lo badge Personal sus la pagina de perfil - title: Mostrar lo badge personal site_description: desc_html: Paragraf d’introduccion sus la pagina d’acuèlh. Explicatz çò que fa diferent aqueste servidor Mastodon e tot çò qu’es important de dire. Podètz utilizare de balises HTML, en particular <a> e<em>. title: Descripcion del servidor @@ -711,7 +696,6 @@ oc: title: Modificar lo filtre errors: invalid_context: Cap de contèxte o contèxte invalid fornit - invalid_irreversible: Lo filtratge irreversible fonciona pas qu’amb lo flux d’actualitat o en contèxte de notificacion index: delete: Suprimir empty: Avètz pas cap de filtre. diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 7557ab83f..0044771fb 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -40,6 +40,7 @@ pl: one: wpisu other: wpisów status_count_before: Są autorami + tagline: Zdecentralizowana sieć społecznościowa terms: Zasady użytkowania unavailable_content: Niedostępne treści unavailable_content_description: @@ -90,10 +91,8 @@ pl: posts_tab_heading: Wpisy posts_with_replies: Wpisy z odpowiedziami roles: - admin: Administrator bot: Bot group: Grupa - moderator: Moderator unavailable: Profil niedostępny unfollow: Przestań śledzić admin: @@ -112,12 +111,17 @@ pl: avatar: Awatar by_domain: Domena change_email: - changed_msg: Pomyślnie zmieniono adres e-mail konta! + changed_msg: Pomyślnie zmieniono adres e-mail! current_email: Obecny adres e-mail label: Zmień adres e-mail new_email: Nowy adres e-mail submit: Zmień adres e-mail title: Zmień adres e-mail dla %{username} + change_role: + changed_msg: Pomyślnie zmieniono rolę! + label: Zmień rolę + no_role: Brak roli + title: Zmień rolę dla %{username} confirm: Potwierdź confirmed: Potwierdzono confirming: Potwierdzanie @@ -161,6 +165,7 @@ pl: active: Aktywne all: Wszystkie pending: Oczekujące + silenced: Ograniczone suspended: Zawieszone title: Moderacja moderation_notes: Notatki moderacyjne @@ -168,6 +173,7 @@ pl: most_recent_ip: Ostatnie IP no_account_selected: Żadne konto nie zostało zmienione, bo żadne nie zostało wybrane no_limits_imposed: Nie nałożono ograniczeń + no_role_assigned: Nie przypisano żadnej roli not_subscribed: Nie zasubskrybowano pending: Oczekuje na przegląd perform_full_suspension: Zawieś @@ -196,12 +202,7 @@ pl: reset: Resetuj reset_password: Resetuj hasło resubscribe: Ponów subskrypcję - role: Uprawnienia - roles: - admin: Administrator - moderator: Moderator - staff: Ekipa - user: Użytkownik + role: Rola search: Szukaj search_same_email_domain: Inni użytkownicy z e-mail w tej domenie search_same_ip: Inni użytkownicy z tym samym IP @@ -499,6 +500,11 @@ pl: unsuppress: Przywróć polecenie śledzenia konta instances: availability: + description_html: + few: Jeśli dostarczenie do domeny nie powiedzie się %{count} dni bez powodzenia, nie zostaną podjęte dalsze próby dostawy, chyba że otrzymano dostawę od domeny. + many: Jeśli dostarczenie do domeny nie powiedzie się %{count} dni bez powodzenia, nie zostaną podjęte dalsze próby dostawy, chyba że otrzymano dostawę od domeny. + one: Jeśli dostarczenie do domeny nie powiedzie się %{count} dzień bez powodzenia, nie zostaną podjęte dalsze próby dostawy, chyba że otrzymano dostawę od domeny. + other: Jeśli dostarczenie do domeny nie powiedzie się %{count} dni bez powodzenia, nie zostaną podjęte dalsze próby dostawy, chyba że otrzymano dostawę od domeny. failure_threshold_reached: Próg niepowodzenia osiągnięty dnia %{date}. failures_recorded: few: Nieudane próby w %{count} różnych dniach. @@ -671,6 +677,54 @@ pl: unresolved: Nierozwiązane updated_at: Zaktualizowano view_profile: Wyświetl profil + roles: + add_new: Dodaj rolę + assigned_users: + few: "%{count} użytkowników" + many: "%{count} użytkowników" + one: "%{count} użytkownik" + other: "%{count} użytkowników" + categories: + administration: Administracja + devops: DevOps + invites: Zaproszenia + moderation: Moderacja + special: Specjalne + delete: Usuń + description_html: Za pomocą ról użytkownikówmożesz dostosowywać funkcje i obszary Mastodon, do których użytkownicy mogą uzyskać dostęp. + edit: Edytuj rolę '%{name}' + everyone: Domyślnie uprawnienia + everyone_full_description_html: To jest rola podstawowa wpływająca na wszystkich użytkowników, nawet tych, którzy nie mają przypisanej roli. Wszystkie inne role dziedziczą z niej uprawnienia. + privileges: + administrator: Administrator + administrator_description: Użytkownicy z tym uprawnieniem omijają każde uprawnienie + delete_user_data: Usuń dane użytkownika + delete_user_data_description: Pozwala użytkownikom na bezzwłoczne usuwanie danych innych użytkowników + invite_users: Zaproś użytkowników + invite_users_description: Pozwala użytkownikom zapraszać nowych ludzi na serwer + manage_announcements: Zarządzaj ogłoszeniami + manage_announcements_description: Pozwala użytkownikom zarządzać ogłoszeniami na serwerze + manage_appeals: Zarządzaj odwołaniami + manage_appeals_description: Pozwala użytkownikom przeglądać odwołania od działań moderacyjnych + manage_blocks: Zarządzaj blokami + manage_blocks_description: Pozwala użytkownikom na blokowanie dostawców poczty elektronicznej i adresów IP + manage_custom_emojis: Zarządzaj niestandardowymi emoji + manage_custom_emojis_description: Pozwala użytkownikom zarządzać niestandardowymi emoji na serwerze + manage_federation: Zarządzaj federacją + manage_federation_description: Pozwala użytkownikom na blokowanie lub zezwalanie federacji z innymi domenami i kontrolowanie doręczania + manage_invites: Zarządzaj zaproszeniami + manage_invites_description: Pozwala użytkownikom przeglądać i dezaktywować linki z zaproszeniami + manage_reports: Zarządzaj raportami + manage_reports_description: Pozwala użytkownikom przeglądać raporty i wykonywać przeciwko nim działania moderacyjne + manage_roles: Zarządzaj rolami + manage_roles_description: Pozwala użytkownikom zarządzać rolami i przypisywać role poniżej ich własnych + manage_rules: Zarządzaj regułami + manage_rules_description: Pozwala użytkownikom na zmianę reguł serwera + manage_settings: Zarządzaj ustawieniami + manage_settings_description: Pozwala użytkownikom na zmianę ustawień witryny + manage_taxonomies: Zarządzaj taksonomiami + manage_taxonomies_description: Pozwala użytkownikom przeglądać najpopularniejsze treści i aktualizować ustawienia hasztagów + manage_user_access: Zarządzaj dostępem użytkownika rules: add_new: Dodaj zasadę delete: Usuń @@ -723,9 +777,6 @@ pl: deletion: desc_html: Pozwól każdemu na usunięcie konta title: Możliwość usunięcia - min_invite_role: - disabled: Nikt - title: Kto może zapraszać użytkowników require_invite_text: desc_html: Kiedy rejestracje wymagają ręcznego zatwierdzenia, ustaw pole "Dlaczego chcesz dołączyć?" jako obowiązkowe, a nie opcjonalne title: Wymagaj od nowych użytkowników wypełnienia tekstu prośby o zaproszenie @@ -738,9 +789,6 @@ pl: show_known_fediverse_at_about_page: desc_html: Jeśli włączone, podgląd instancji będzie wyświetlał wpisy z całego Fediwersum. W innym przypadku, będą wyświetlane tylko lokalne wpisy. title: Pokazuj wszystkie znane wpisy na podglądzie instancji - show_staff_badge: - desc_html: Pokazuj odznakę uprawnień na stronie profilu użytkownika - title: Pokazuj odznakę administracji site_description: desc_html: Akapit wprowadzający, widoczny na stronie głównej. Opisz, co czyni tę instancję wyjątkową. Możesz korzystać ze znaczników HTML, w szczególności <a> i <em>. title: Opis serwera @@ -820,6 +868,11 @@ pl: description_html: Są to linki, które są obecnie często udostępniane przez konta, z których Twój serwer widzi posty. Może to pomóc Twoim użytkownikom dowiedzieć się, co dzieje się na świecie. Żadne linki nie są wyświetlane publicznie dopóki nie zaakceptujesz wydawcy. Możesz również zezwolić lub odrzucić indywidualne linki. disallow: Nie zezwalaj na link disallow_provider: Nie zezwalaj na wydawcę + shared_by_over_week: + few: Udostępnione przez %{count} osoby w ciągu ostatniego tygodnia + many: Udostępnione przez %{count} osób w ciągu ostatniego tygodnia + one: Udostępnione przez jedną osobę w ciągu ostatniego tygodnia + other: Udostępnione przez %{count} osoby w ciągu ostatniego tygodnia title: Popularne linki usage_comparison: Udostępnione %{today} razy dzisiaj, w porównaniu z %{yesterday} wczoraj only_allowed: Tylko dozwolone @@ -837,6 +890,11 @@ pl: disallow: Nie zezwalaj na post disallow_account: Nie zezwalaj na autora not_discoverable: Autor nie włączył opcji, by być wyświetlany w katalogu + shared_by: + few: Udostępnione i dodane do ulubionych %{friendly_count} razy + many: Udostępnione i dodane do ulubionych %{friendly_count} razy + one: Udostępnione lub dodane do ulubionych jednorazowo + other: Udostępnione i dodane do ulubionych %{friendly_count} razy title: Popularne teraz tags: current_score: Bieżący wynik %{score} @@ -1144,15 +1202,26 @@ pl: public: Publiczne osie czasu thread: Konwersacje edit: + add_keyword: Dodaj słowo kluczowe + keywords: Słowa kluczowe title: Edytuj filtr errors: + deprecated_api_multiple_keywords: Te parametry nie mogą zostać zmienione z tej aplikacji, ponieważ dotyczą więcej niż jednego słowa kluczowego. Użyj nowszej wersji aplikacji lub interfejsu internetowego. invalid_context: Nie podano lub podano nieprawidłową treść - invalid_irreversible: Nieodwracalne filtrowanie działa tylko na stronie głównej i w powiadomieniach index: + contexts: Filtry w %{contexts} delete: Usuń empty: Nie masz żadnych filtrów. + expires_in: Wygasa za %{distance} + expires_on: Wygasa %{date} + keywords: + few: "%{count} słowa kluczowe" + many: "%{count} słów kluczowych" + one: "%{count} słowo kluczowe" + other: "%{count} słów kluczowych" title: Filtry new: + save: Zapisz jako nowy filtr title: Dodaj nowy filtr footer: developers: Dla programistów @@ -1275,6 +1344,8 @@ pl: copy_account_note_text: 'Ten użytkownik przeniósł się z konta %{acct}, oto Twoje poprzednie notatki o nim:' notification_mailer: admin: + report: + subject: "%{name} wysłał raport" sign_up: subject: "%{name} zarejestrował(-a) się" digest: diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 7661df9a0..4a7800b60 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -38,6 +38,7 @@ pt-BR: one: toot other: toots status_count_before: Autores de + tagline: Rede social descentralizada terms: Termos de serviço unavailable_content: Conteúdo indisponível unavailable_content_description: @@ -82,10 +83,8 @@ pt-BR: posts_tab_heading: Toots posts_with_replies: Toots e respostas roles: - admin: Admin bot: Robô group: Grupo - moderator: Moderador unavailable: Perfil indisponível unfollow: Deixar de seguir admin: @@ -104,7 +103,6 @@ pt-BR: avatar: Imagem de perfil by_domain: Domínio change_email: - changed_msg: E-mail da conta alterado com sucesso! current_email: E-mail atual label: Alterar e-mail new_email: Novo e-mail @@ -186,12 +184,6 @@ pt-BR: reset: Redefinir reset_password: Redefinir senha resubscribe: Reinscrever-se - role: Permissões - roles: - admin: Administrador - moderator: Moderador - staff: Equipe - user: Usuário search: Pesquisar search_same_email_domain: Outros usuários com o mesmo domínio de e-mail search_same_ip: Outros usuários com o mesmo IP @@ -695,9 +687,6 @@ pt-BR: deletion: desc_html: Permitir que qualquer um exclua a própria conta title: Exclusão aberta de contas - min_invite_role: - disabled: Ninguém - title: Permitir convites de require_invite_text: desc_html: Quando o cadastro de novas contas exigir aprovação manual, tornar obrigatório, ao invés de opcional, o texto de solicitação de convite em "Por que você deseja criar uma conta aqui?" title: Exigir que novos usuários preencham um texto de solicitação de convite @@ -710,9 +699,6 @@ pt-BR: show_known_fediverse_at_about_page: desc_html: Quando ativado, mostra toots globais na prévia da linha, se não, mostra somente toots locais title: Mostrar toots globais na prévia da linha - show_staff_badge: - desc_html: Mostrar uma insígnia de Equipe na página de usuário - title: Mostrar insígnia de equipe site_description: desc_html: Parágrafo introdutório na página inicial. Descreva o que faz esse servidor especial, e qualquer outra coisa de importante. Você pode usar tags HTML, em especial <a> e <em>. title: Descrição da instância @@ -746,6 +732,7 @@ pt-BR: back_to_account: Voltar para página da conta back_to_report: Voltar às denúncias batch: + remove_from_report: Remover do relatório report: Denunciar deleted: Excluídos media: @@ -753,9 +740,16 @@ pt-BR: no_status_selected: Nenhum status foi modificado porque nenhum estava selecionado title: Toots da conta with_media: Com mídia + strikes: + appeal_approved: Apelado + appeal_pending: Recurso pendente system_checks: database_schema_check: message_html: Existem migrações de banco de dados pendentes. Por favor, execute-as para garantir que o aplicativo se comporte como esperado + elasticsearch_running_check: + message_html: Não foi possível conectar ao Elasticsearch. Por favor, verifique se está em execução, ou desabilite a pesquisa de texto completo + elasticsearch_version_check: + message_html: 'Versão de Elasticsearch incompatível: %{value}' rules_check: action: Gerenciar regras do servidor message_html: Você não definiu nenhuma regra de servidor. @@ -808,6 +802,14 @@ pt-BR: edit_preset: Editar o aviso pré-definido empty: Você ainda não definiu nenhuma predefinição de alerta. title: Gerenciar os avisos pré-definidos + webhooks: + delete: Excluir + disable: Desabilitar + disabled: Desativado + enable: Habilitar + enabled: Ativo + events: Eventos + status: Status admin_mailer: new_appeal: actions: @@ -979,10 +981,12 @@ pt-BR: appealed_msg: Seu recurso foi enviado. Se ele for aprovado, você será notificado. appeals: submit: Enviar recurso + approve_appeal: Aprovar recurso associated_report: Relatório associado created_at: Datado description_html: Estas são ações tomadas contra sua conta e avisos que foram enviados a você pela equipe de %{instance}. recipient: Endereçado para + reject_appeal: Rejeitar recurso status: 'Postagem #%{id}' status_removed: Postagem já removida do sistema title: "%{action} de %{date}" @@ -1045,15 +1049,17 @@ pt-BR: public: Linhas públicas thread: Conversas edit: + add_keyword: Adicionar palavra-chave + keywords: Palavras-chave title: Editar filtro errors: invalid_context: Contexto inválido ou nenhum contexto informado - invalid_irreversible: O filtro irreversível só funciona com os contextos página inicial e notificações index: delete: Remover empty: Sem filtros. title: Filtros new: + save: Salvar novo filtro title: Adicionar filtro footer: developers: Desenvolvedores @@ -1172,6 +1178,8 @@ pt-BR: copy_account_note_text: 'Este usuário saiu de %{acct}, aqui estão suas notas anteriores sobre ele:' notification_mailer: admin: + report: + subject: "%{name} enviou uma denúncia" sign_up: subject: "%{name} se inscreveu" digest: @@ -1297,6 +1305,8 @@ pt-BR: reports: errors: invalid_rules: não faz referência a regras válidas + rss: + content_warning: 'Aviso de conteúdo:' scheduled_statuses: over_daily_limit: Você excedeu o limite de %{limit} toots agendados para esse dia over_total_limit: Você excedeu o limite de %{limit} toots agendados diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 9607762bb..4008bb2a2 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -83,10 +83,8 @@ pt-PT: posts_tab_heading: Publicações posts_with_replies: Posts e Respostas roles: - admin: Administrador(a) bot: Robô group: Grupo - moderator: Moderador unavailable: Perfil indisponível unfollow: Deixar de seguir admin: @@ -105,7 +103,6 @@ pt-PT: avatar: Imagem de Perfil by_domain: Domínio change_email: - changed_msg: E-mail da conta alterado com sucesso! current_email: E-mail atual label: Alterar e-mail new_email: Novo e-mail @@ -187,12 +184,6 @@ pt-PT: reset: Restaurar reset_password: Reset palavra-passe resubscribe: Reinscrever - role: Permissões - roles: - admin: Administrador(a) - moderator: Moderador - staff: Equipa - user: Utilizador search: Pesquisar search_same_email_domain: Outros utilizadores com o mesmo domínio de e-mail search_same_ip: Outros utilizadores com o mesmo IP @@ -701,9 +692,6 @@ pt-PT: deletion: desc_html: Permitir a qualquer utilizador eliminar a sua conta title: Permitir eliminar contas - min_invite_role: - disabled: Ninguém - title: Permitir convites de require_invite_text: desc_html: Quando os registos exigirem aprovação manual, faça o texto "Porque se quer juntar a nós?" da solicitação de convite obrigatório, em vez de opcional title: Exigir que novos utilizadores preencham um texto de solicitação de convite @@ -716,9 +704,6 @@ pt-PT: show_known_fediverse_at_about_page: desc_html: Quando comutado, irá mostrar a previsualização de publicações de todo o fediverse conhecido. De outro modo só mostrará publicações locais. title: Mostrar o fediverse conhecido na previsualização da cronologia - show_staff_badge: - desc_html: Mostrar um crachá da equipa na página de utilizador - title: Mostrar crachá da equipa site_description: desc_html: Mostrar como parágrafo na página inicial e usado como meta tag.Podes usar tags HTML, em particular <a> e <em>. title: Descrição do site @@ -1124,15 +1109,24 @@ pt-PT: public: Cronologias públicas thread: Conversações edit: + add_keyword: Adicionar palavra-chave + keywords: Palavras-chave title: Editar filtros errors: + deprecated_api_multiple_keywords: Estes parâmetros não podem ser alterados a partir deste aplicativo porque se aplicam a mais de um filtro de palavra-chave. Use um aplicativo mais recente ou a interface web. invalid_context: Inválido ou nenhum contexto fornecido - invalid_irreversible: Filtragem irreversível só funciona no contexto das notificações ou do início index: + contexts: Filtros em %{contexts} delete: Eliminar empty: Não tem filtros. + expires_in: Expira em %{distance} + expires_on: Expira em %{date} + keywords: + one: "%{count} palavra-chave" + other: "%{count} palavras-chaves" title: Filtros new: + save: Salvar novo filtro title: Adicionar novo filtro footer: developers: Responsáveis pelo desenvolvimento @@ -1251,6 +1245,8 @@ pt-PT: copy_account_note_text: 'Este utilizador migrou de %{acct}, aqui estão as suas notas anteriores sobre ele:' notification_mailer: admin: + report: + subject: "%{name} submeteu uma denúncia" sign_up: subject: "%{name} inscreveu-se" digest: diff --git a/config/locales/ro.yml b/config/locales/ro.yml index 3203e9178..8ed812e5b 100644 --- a/config/locales/ro.yml +++ b/config/locales/ro.yml @@ -83,10 +83,8 @@ ro: posts_tab_heading: Postări posts_with_replies: Postări și răspunsuri roles: - admin: Admin bot: Robot group: Grup - moderator: Moderator unavailable: Profil indisponibil unfollow: Nu mai urmării admin: @@ -105,7 +103,6 @@ ro: avatar: Poză de profil by_domain: Domeniu change_email: - changed_msg: E-mail de cont schimbat cu succes! current_email: E-mailul curent label: Schimbă adresa de email new_email: E-mail nou @@ -183,12 +180,6 @@ ro: reset: Resetează reset_password: Resetează parola resubscribe: Resubscrie-te - role: Permisiuni - roles: - admin: Administrator - moderator: Moderator - staff: Personal - user: Utilizator search: Caută search_same_email_domain: Alţi utilizatori cu acelaşi domeniu de e-mail search_same_ip: Alţi utilizatori cu acelaşi IP @@ -417,7 +408,6 @@ ro: title: Editează filtru errors: invalid_context: Lipsa conținut sau acesta este invalid - invalid_irreversible: Filtrarea ireversibilă funcționează dor cu context din fluxul Acasă și notificări index: delete: Șterge title: Filtre diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 47f944129..515636d35 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -91,10 +91,8 @@ ru: posts_tab_heading: Посты posts_with_replies: Посты с ответами roles: - admin: Администратор bot: Бот group: Группа - moderator: Модератор unavailable: Профиль недоступен unfollow: Отписаться admin: @@ -113,12 +111,17 @@ ru: avatar: Аватар by_domain: Домен change_email: - changed_msg: E-mail учётной записи успешно изменён! + changed_msg: Адрес эл. почты успешно изменен! current_email: Текущий e-mail label: Сменить e-mail new_email: Новый e-mail submit: Сменить e-mail title: Сменить e-mail для %{username} + change_role: + changed_msg: Роль успешно изменена! + label: Изменить роль + no_role: Нет роли + title: Изменить роль %{username} confirm: Подтвердить confirmed: Подтверждено confirming: Подтверждение @@ -162,6 +165,7 @@ ru: active: Действующие all: Все pending: В ожидании + silenced: Ограниченные suspended: Заблокированные title: Модерация moderation_notes: Заметки модератора @@ -169,6 +173,7 @@ ru: most_recent_ip: Последний IP no_account_selected: Ничего не изменилось, так как ни одна учётная запись не была выделена no_limits_imposed: Без ограничений + no_role_assigned: Роль не присвоена not_subscribed: Не подписаны pending: Ожидает рассмотрения perform_full_suspension: Блокировка @@ -197,12 +202,7 @@ ru: reset: Сбросить reset_password: Сбросить пароль resubscribe: Переподписаться - role: Разрешения - roles: - admin: Администратор - moderator: Модератор - staff: Персонал - user: Пользователь + role: Роль search: Поиск search_same_email_domain: Другие пользователи с тем же доменом электронной почты search_same_ip: Другие пользователи с таким же IP @@ -408,6 +408,11 @@ ru: many: "%{count} ожидающих отчетов" one: "%{count} ожидающий отчет" other: "%{count} ожидающих отчетов" + pending_tags_html: + few: "%{count} ожидающих хэштега" + many: "%{count} ожидающих хэштегов" + one: "%{count} ожидающий хэштег" + other: "%{count} ожидающих хэштегов" pending_users_html: few: "%{count} ожидающих пользователя" many: "%{count} ожидающих пользователей" @@ -494,6 +499,11 @@ ru: unsuppress: Восстановить рекомендацию instances: availability: + failures_recorded: + few: Попытки неудачны уже %{count} дня. + many: Попытки неудачны уже %{count} дней. + one: Попытки неудачны %{count} день. + other: Попытки неудачны уже %{count} дней. no_failures_recorded: Сбоев в записи нет. title: Доступность warning: Последняя попытка подключения к этому серверу не удалась @@ -650,6 +660,38 @@ ru: unresolved: Нерешённые updated_at: Обновлена view_profile: Открыть профиль + roles: + add_new: Добавить роль + assigned_users: + few: "%{count} пользователя" + many: "%{count} пользователей" + one: "%{count} пользователь" + other: "%{count} пользователей" + categories: + administration: Администрация + devops: DevOps + invites: Приглашения + moderation: Модерация + special: Особые + delete: Удалить + description_html: С помощью ролей пользователей вы можете настроить, к каким функциям и областям Mastodon у ваших пользователей будет доступ. + edit: Изменить роль '%{name}' ' + everyone: Разрешения по умолчанию + everyone_full_description_html: Это базовая роль, касающаяся всех пользователей, даже тех, кто не имеет назначенной роли. Все другие роли наследуют разрешения от нее. + permissions_count: + few: "%{count} разрешения" + many: "%{count} разрешений" + one: "%{count} разрешение" + other: "%{count} разрешений" + privileges: + administrator: Администратор + delete_user_data: Удалить пользовательские данные + delete_user_data_description: Позволяет пользователям удалять данные других пользователей без задержки + invite_users: Пригласить пользователей + invite_users_description: Позволяет пользователям приглашать новых людей на сервер + manage_announcements: Управление объявлениями + manage_announcements_description: Позволяет пользователям управлять объявлениями на сервере + title: Роли rules: add_new: Добавить правило delete: Удалить @@ -702,9 +744,6 @@ ru: deletion: desc_html: Позволяет всем удалять собственные учётные записи title: Разрешить удаление учётных записей - min_invite_role: - disabled: Никого - title: Разрешать приглашения от require_invite_text: desc_html: Когда регистрация требует ручного подтверждения, сделать ответ на вопрос "Почему вы хотите присоединиться?" обязательным, а не опциональным title: Обязать новых пользователей заполнять текст запроса на приглашение @@ -717,9 +756,6 @@ ru: show_known_fediverse_at_about_page: desc_html: Если включено, показывает посты со всех известных узлов в предпросмотре ленты. В противном случае отображаются только локальные посты. title: Показывать контент со всей федерации в публичной ленте неавторизованным пользователям - show_staff_badge: - desc_html: Показывать метку персонала на странице пользователя - title: Показывать метку персонала site_description: desc_html: Отображается в качестве параграфа на титульной странице и используется в качестве мета-тега.
    Можно использовать HTML-теги, в особенности <a> и <em>. title: Описание сайта @@ -816,6 +852,11 @@ ru: allow_account: Разрешить автора disallow: Запретить пост disallow_account: Запретить автора + shared_by: + few: Поделились или добавили в избранное %{friendly_count} раза + many: Поделились или добавили в избранное %{friendly_count} раз + one: Поделились или добавили в избранное один раз + other: Поделились или добавили в избранное %{friendly_count} раз title: Популярные посты tags: current_score: Текущий счет %{score} @@ -893,6 +934,7 @@ ru: new_trending_tags: no_approved_tags: На данный момент популярные подтвержденные хэштеги отсутствуют. title: Популярные хэштеги + subject: Новые тренды для проверки на %{instance} aliases: add_new: Создать псевдоним created_msg: Новый псевдоним установлен. Теперь мы можете начать миграцию со старой учётной записи. @@ -1109,15 +1151,26 @@ ru: public: Публичные ленты thread: Диалоги edit: + add_keyword: Добавить ключевое слово + keywords: Ключевые слова title: Изменить фильтр errors: + deprecated_api_multiple_keywords: Эти параметры нельзя изменить из этого приложения, так как применяются к более чем одному ключевому слову фильтра. Используйте более последнее приложение или веб-интерфейс. invalid_context: Некорректный контекст или ничего - invalid_irreversible: Необратимая фильтрация работает только с лентой уведомлений и домашней лентой index: + contexts: Фильтры по %{contexts} delete: Удалить empty: У вас пока нет фильтров. + expires_in: Истекает через %{distance} + expires_on: Истекает %{date} + keywords: + few: "%{count} ключевых слова" + many: "%{count} ключевых слов" + one: "%{count} ключевое слово" + other: "%{count} ключевых слов" title: Фильтры new: + save: Сохранить новый фильтр title: Добавить фильтр footer: developers: Разработчикам @@ -1240,6 +1293,8 @@ ru: copy_account_note_text: 'Этот пользователь переехал с %{acct}, вот ваша предыдущая заметка о нём:' notification_mailer: admin: + report: + subject: "%{name} отправил жалобу" sign_up: subject: "%{name} зарегистрирован" digest: diff --git a/config/locales/sc.yml b/config/locales/sc.yml index 490654143..e6ee2bca9 100644 --- a/config/locales/sc.yml +++ b/config/locales/sc.yml @@ -79,10 +79,8 @@ sc: posts_tab_heading: Tuts posts_with_replies: Tuts e rispostas roles: - admin: Admin bot: Bot group: Grupu - moderator: Moderatzione unavailable: Su profilu no est a disponimentu unfollow: Non sigas prus admin: @@ -101,7 +99,6 @@ sc: avatar: Immàgine de profilu by_domain: Domìniu change_email: - changed_msg: As cambiadu s'indiritzu eletrònicu. current_email: Indiritzu eletrònicu atuale label: Muda s'indiritzu eletrònicu new_email: Indiritzu eletrònicu nou @@ -176,12 +173,6 @@ sc: reset: Reseta reset_password: Reseta sa crae resubscribe: Torra a sutascrìere - role: Permissos - roles: - admin: Amministratzione - moderator: Moderatzione - staff: Personale - user: Utente search: Chirca search_same_email_domain: Àteras persones cun su pròpiu domìniu de posta search_same_ip: Àteras persones cun sa pròpiu IP @@ -548,9 +539,6 @@ sc: deletion: desc_html: Permite a chie si siat de cantzellare su contu suo title: Aberi s'eliminatzione de su contu - min_invite_role: - disabled: Nemos - title: Permite invitos de require_invite_text: desc_html: Cando is registratziones rechedent s'aprovatzione manuale, faghe chi a incarcare su butone "Pro ite ti boles iscrìere?" siat obligatòriu e no a praghere title: Rechede a is persones noas chi iscriant una resone prima de aderire @@ -563,9 +551,6 @@ sc: show_known_fediverse_at_about_page: desc_html: Cando ativu, ammustrat in sa previsualizatzione is tuts de totu is istàntzias connòschidas. Si nono, ammustrat isceti is cuntenutos locales title: Include su cuntenutu federadu in sa pàgina no autenticada de sa lìnia de tempus pùblica - show_staff_badge: - desc_html: Ammustra un'insigna de personale in sa pàgina de utente - title: Ammustra insigna de personale site_description: desc_html: Paràgrafu de introdutzione a s'API. Descrie pro ite custu serbidore de Mastodon siat ispetziale e cale si siat àtera cosa de importu. Podes impreare etichetas HTML, mescamente <a> e <em>. title: Descritzione de su serbidore @@ -816,7 +801,6 @@ sc: title: Modìfica filtru errors: invalid_context: Cuntestu mancante o non vàlidu - invalid_irreversible: Su filtràgiu non reversìbile funtzionat isceti in is cuntestos printzipale o de notìficas index: delete: Cantzella empty: Non tenes perunu filtru. diff --git a/config/locales/si.yml b/config/locales/si.yml index de029aa50..811cd7a47 100644 --- a/config/locales/si.yml +++ b/config/locales/si.yml @@ -1,66 +1,140 @@ --- si: about: + about_hashtag_html: මේවා #%{hashtag}ටැග් කර ඇති පොදු පළ කිරීම් වේ. ඔබට fediverse හි ඕනෑම තැනක ගිණුමක් තිබේ නම් ඔබට ඔවුන් සමඟ අන්තර් ක්‍රියා කළ හැක. + about_mastodon_html: 'අනාගත සමාජ ජාලය: දැන්වීම් නැත, ආයතනික නිරීක්ෂණ නැත, සදාචාරාත්මක සැලසුම් සහ විමධ්‍යගත කිරීම! Mastodon සමඟ ඔබේ දත්ත අයිති කරගන්න!' about_this: පිලිබඳව active_count_after: සක්‍රීයයි active_footnote: මාසික ක්‍රියාකාරී පරිශීලකයින් (මාක්‍රිප) + administered_by: 'පරිපාලනය කරන්නේ:' api: යෙ.ක්‍ර. මු. (API) apps: ජංගම යෙදුම් + apps_platforms: iOS, Android සහ වෙනත් වේදිකා වලින් Mastodon භාවිතා කරන්න + browse_directory: පැතිකඩ නාමාවලියක් පිරික්සන්න සහ රුචිකත්වයන් අනුව පෙරහන් කරන්න + browse_local_posts: මෙම සේවාදායකයෙන් පොදු පළ කිරීම් වල සජීවී ප්‍රවාහයක් බ්‍රවුස් කරන්න + browse_public_posts: Mastodon හි පොදු පළ කිරීම් වල සජීවී ප්‍රවාහයක් බ්‍රවුස් කරන්න contact: සබඳතාව - contact_missing: සකසා නැත + contact_missing: සකස් කර නැත contact_unavailable: අ/නොවේ + continue_to_web: වෙබ් යෙදුම වෙත ඉදිරියට යන්න + discover_users: පරිශීලකයන් සොයා ගන්න documentation: ප්‍රලේඛනය + federation_hint_html: "%{instance} හි ගිණුමක් සමඟින් ඔබට ඕනෑම Mastodon සේවාදායකයක සහ ඉන් ඔබ්බෙහි පුද්ගලයින් අනුගමනය කිරීමට හැකි වනු ඇත." get_apps: ජංගම යෙදුමක් උත්සාහ කරන්න + hosted_on: Mastodon %{domain}හි සත්කාරකත්වය දරයි + instance_actor_flash: | + මෙම ගිණුම සේවාදායකයම නියෝජනය කිරීමට භාවිතා කරන අතථ්‍ය නළුවෙකු වන අතර කිසිදු තනි පරිශීලකයෙකු නොවේ. + එය ෆෙඩරේෂන් අරමුණු සඳහා භාවිතා කරන අතර ඔබට සම්පූර්ණ අවස්ථාව අවහිර කිරීමට අවශ්‍ය නම් මිස අවහිර නොකළ යුතුය, මෙම අවස්ථාවේදී ඔබ ඩොමේන් බ්ලොක් එකක් භාවිතා කළ යුතුය. learn_more: තව දැනගන්න + logged_in_as_html: ඔබ දැනට %{username}ලෙස පුරනය වී ඇත. + logout_before_registering: ඔබ දැනටමත් පුරනය වී ඇත. privacy_policy: රහස්‍යතා ප්‍රතිපත්තිය rules: සේවාදායකයේ නීති + rules_html: 'ඔබට Mastodon හි මෙම සේවාදායකයේ ගිණුමක් ඇති කර ගැනීමට අවශ්‍ය නම් ඔබ අනුගමනය කළ යුතු නීති වල සාරාංශයක් පහත දැක්වේ:' + see_whats_happening: මොකද වෙන්නේ කියලා බලන්න + server_stats: 'සේවාදායක සංඛ්යාලේඛන:' source_code: මූල කේතය status_count_after: - one: තත්වය - other: තත්වයන් + one: තත්ත්වය + other: තත්ත්වයන් + status_count_before: කවුද පළ කළේ + tagline: විමධ්‍යගත සමාජ ජාලය terms: සේවාවේ කොන්දේසි + unavailable_content: මධ්‍යස්ථ සේවාදායකයන් unavailable_content_description: domain: සේවාදායකය reason: හේතුව + rejecting_media: 'මෙම සේවාදායකයන්ගෙන් මාධ්‍ය ගොනු සැකසීම හෝ ගබඩා කිරීම සිදු නොවනු ඇති අතර, මුල් ගොනුව වෙත අතින් ක්ලික් කිරීම අවශ්‍ය වන, සිඟිති රූ නොපෙන්වනු ඇත:' + rejecting_media_title: පෙරූ මාධ්‍ය + silenced: 'මෙම සේවාදායකයන්ගෙන් පළ කිරීම් පොදු කාලරේඛා සහ සංවාදවල සඟවනු ඇති අතර, ඔබ ඒවා අනුගමනය කරන්නේ නම් මිස, ඔවුන්ගේ පරිශීලක අන්තර්ක්‍රියාවලින් කිසිදු දැනුම්දීමක් ජනනය නොවේ:' silenced_title: සීමාසහිත සේවාදායක + suspended: 'මෙම සේවාදායකයන්ගෙන් කිසිදු දත්තයක් සැකසීම, ගබඩා කිරීම හෝ හුවමාරු කිරීම සිදු නොවනු ඇත, මෙම සේවාදායකයන්ගෙන් පරිශීලකයින් සමඟ කිසියම් අන්තර්ක්‍රියා හෝ සන්නිවේදනයක් කළ නොහැක:' suspended_title: අත්හිටවූ සේවාදායකයන් + unavailable_content_html: Mastodon සාමාන්‍යයෙන් ඔබට ෆෙඩිවර්ස් හි වෙනත් ඕනෑම සේවාදායකයකින් අන්තර්ගතය බැලීමට සහ පරිශීලකයින් සමඟ අන්තර් ක්‍රියා කිරීමට ඉඩ සලසයි. මෙම විශේෂිත සේවාදායකයේ සිදු කර ඇති ව්‍යතිරේක මේවාය. user_count_after: one: පරිශීලක other: පරිශීලකයින් + user_count_before: ගෙදරට what_is_mastodon: මාස්ටඩන් යනු කුමක්ද? accounts: + choices_html: "%{name}හි තේරීම්:" + endorsements_hint: ඔබට වෙබ් අතුරු මුහුණතෙන් ඔබ අනුගමනය කරන පුද්ගලයින් අනුමත කළ හැකි අතර, ඔවුන් මෙහි පෙන්වනු ඇත. + featured_tags_hint: ඔබට මෙහි සංදර්ශන කෙරෙන විශේෂිත හැෂ් ටැග් විශේෂාංගගත කළ හැක. + follow: අනුගමනය කරන්න + followers: + one: අනුගාමිකයා + other: අනුගාමිකයින් + following: අනුගමනය + instance_actor_flash: මෙම ගිණුම සේවාදායකයම නියෝජනය කිරීමට භාවිතා කරන අතථ්‍ය නළුවෙකු වන අතර කිසිදු තනි පරිශීලකයෙකු නොවේ. එය ෆෙඩරේෂන් අරමුණු සඳහා භාවිතා කරන අතර අත්හිටුවිය යුතු නොවේ. joined: "%{date} එක් වී ඇත" + last_active: අවසාන ක්රියාකාරී + link_verified_on: මෙම සබැඳියේ හිමිකාරිත්වය %{date}හි පරීක්ෂා කරන ලදී media: මාධ්‍යය + moved_html: "%{name} %{new_profile_link}මාරු වී ඇත:" + network_hidden: මෙම තොරතුරු ලබා ගත නොහැක nothing_here: මෙහි කිසිත් නැත! + people_followed_by: "%{name} අනුගමනය කරන පුද්ගලයින්" + people_who_follow: "%{name}අනුගමනය කරන පුද්ගලයින්" + pin_errors: + following: ඔබට අනුමත කිරීමට අවශ්‍ය පුද්ගලයා ඔබ දැනටමත් අනුගමනය කරමින් සිටිය යුතුය + posts: + one: තැපැල් + other: තනතුරු + posts_tab_heading: තනතුරු + posts_with_replies: පළ කිරීම් සහ පිළිතුරු roles: - admin: පරිපාලක bot: ස්වයං ක්‍රමලේඛය group: සමූහය + unavailable: පැතිකඩ නොමැත + unfollow: අනුගමනය නොකරන්න admin: + account_actions: + action: ක්‍රියාව සිදු කරන්න + title: "%{acct}මත මධ්‍යස්ථ ක්‍රියාව සිදු කරන්න" account_moderation_notes: create: සටහන හැරයන්න + created_msg: මධ්‍යස්ථ සටහන සාර්ථකව සාදන ලදී! + destroyed_msg: මධ්‍යස්ථ සටහන සාර්ථකව විනාශ විය! accounts: add_email_domain_block: වි-තැපැල් වසම අවහිර කරන්න approve: අනුමත කරන්න + approved_msg: "%{username}හි ලියාපදිංචි වීමේ යෙදුම සාර්ථකව අනුමත කරන ලදී" are_you_sure: ඔබට විශ්වාසද? + avatar: අවතාරය by_domain: වසම change_email: - changed_msg: ගිණුමේ වි-තැපෑල සාර්ථකව වෙනස් කෙරිණි! current_email: වත්මන් වි-තැපෑල label: වි-තැපෑල වෙනස් කරන්න new_email: නව විද්‍යුත් තැපෑල submit: වි-තැපෑල වෙනස් කරන්න title: "%{username} සඳහා වි-තැපෑල වෙනස් කරන්න" confirm: සනාථ කරන්න - confirmed: සනාථ කර ඇත + confirmed: තහවුරු කර ඇත confirming: සනාථ කරමින් + custom: අභිරුචි + delete: දත්ත මකන්න + deleted: මකා දමන ලදී + demote: පහත් කරන්න + destroyed_msg: "%{username}හි දත්ත ඉක්මනින් මකා දැමීමට පෝලිම් කර ඇත" + disable: කැටි කරන්න + disable_sign_in_token_auth: ඊමේල් ටෝකන් සත්‍යාපනය අක්‍රීය කරන්න + disable_two_factor_authentication: 2FA අබල කරන්න + disabled: ශීත කළ + display_name: ප්රදර්ශන නාමය domain: වසම edit: සංස්කරණය email: විද්‍යුත් තැපෑල email_status: වි-තැපෑලෙහි තත්වය + enable: කැටි කිරීම ඉවත් කරන්න + enable_sign_in_token_auth: විද්‍යුත් තැපෑල ටෝකන් සත්‍යාපනය සබල කරන්න enabled: සබල කර ඇත + enabled_msg: "%{username}ගේ ගිණුම සාර්ථකව අත්හිටුවා ඇත" + followers: අනුගාමිකයින් + follows: පහත සඳහන් header: ශීර්ෂය - invite_request_text: එක්වීම සඳහා හේතුව + inbox_url: එන ලිපි URL + invite_request_text: එක්වීම සඳහා + invited_by: විසින් ආරාධනා කරන ලදී ip: අ.ජා. කෙ. (IP) joined: එක් වී ඇත location: @@ -70,110 +144,410 @@ si: title: ස්ථානය login_status: පිවිසීමේ තත්වය media_attachments: මාධ්‍ය ඇමුණුම් + memorialize: මතක සටහන් බවට පත් කරන්න + memorialized: අනුස්මරණය කරන ලදී + memorialized_msg: සාර්ථක ලෙස %{username} අනුස්මරණ ගිණුමක් බවට පත් කරන ලදී moderation: active: සක්‍රීයයි all: සියල්ල + pending: පොරොත්තුවෙන් suspended: අත්හිටුවන ලදි - most_recent_ip: වඩා මෑත අ.ජා.කෙ.(IP) + title: මධ්යස්ථභාවය + moderation_notes: මධ්‍යස්ථ සටහන් + most_recent_activity: වඩාත්ම මෑත ක්රියාකාරිත්වය + most_recent_ip: ඊට වඩා අ.ජා.කේ.(IP) + no_account_selected: කිසිවක් තෝරා නොගත් බැවින් ගිණුම් කිසිවක් වෙනස් කර නැත + no_limits_imposed: සීමාවන් පනවා නැත + not_subscribed: දායක වී නැත + pending: පොරොත්තු සමාලෝචනය perform_full_suspension: අත්හිටුවන්න + previous_strikes: පෙර වැඩ වර්ජන + previous_strikes_description_html: + one: මෙම ගිණුමට එක වර්ජනයක් ඇත. + other: මෙම ගිණුමේ වර්ජන %{count} ඇත. + promote: ප්රවර්ධනය කරන්න protocol: කෙටුම්පත - public: ප්‍රසිද්ධ + public: ප්රසිද්ධ + push_subscription_expires: පුෂ් දායකත්වය කල් ඉකුත් වේ redownload: පැතිකඩ නැවුම්කරන්න + redownloaded_msg: මූලාරම්භයේ සිට %{username}හි පැතිකඩ සාර්ථකව නැවුම් කරන ලදී reject: ප්‍රතික්ෂේප + rejected_msg: "%{username}හි ලියාපදිංචි වීමේ අයදුම්පත සාර්ථකව ප්‍රතික්ෂේප විය" + remove_avatar: අවතාරය ඉවත් කරන්න remove_header: ශීර්ෂය ඉවත්කරන්න + removed_avatar_msg: "%{username}ගේ අවතාර රූපය සාර්ථකව ඉවත් කරන ලදී" + removed_header_msg: "%{username}හි ශීර්ෂ රූපය සාර්ථකව ඉවත් කරන ලදී" + resend_confirmation: + already_confirmed: මෙම පරිශීලකයා දැනටමත් තහවුරු කර ඇත + send: තහවුරුකිරීමේ විද්යුත් තැපැල් පණිවිඩය නැවත එවන්න + success: තහවුරු කිරීමේ විද්‍යුත් තැපෑල සාර්ථකව යවා ඇත! reset: නැවත සකසන්න reset_password: මුරපදය නැවතසකසන්න - role: අවසරයන් - roles: - admin: පරිපාලක - staff: කාර්ය මණ්ඩලය - user: පරිශීලක + resubscribe: නැවත දායක වන්න search: සොයන්න + search_same_email_domain: එකම විද්‍යුත් තැපැල් වසම සහිත වෙනත් පරිශීලකයන් + search_same_ip: එකම IP සහිත වෙනත් පරිශීලකයන් security_measures: only_password: මුරපදය පමණි + password_and_2fa: මුරපදය සහ 2FA sensitive: සංවේදී + sensitized: සංවේදී ලෙස සලකුණු කර ඇත + shared_inbox_url: බෙදාගත් එන ලිපි URL + show: + created_reports: වාර්තා හැදුවා + targeted_reports: වෙනත් අය විසින් වාර්තා කරන ලදී silence: සීමාව silenced: සීමාසහිත - statuses: තත්වයන් + statuses: තත්ත්වයන් + strikes: පෙර වැඩ වර්ජන + subscribe: දායක වන්න + suspend: අත්හිටුවන්න suspended: අත්හිටුවන ලදි + suspension_irreversible: මෙම ගිණුමේ දත්ත ආපසු හැරවිය නොහැකි ලෙස මකා ඇත. ඔබට එය භාවිතා කළ හැකි බවට පත් කිරීම සඳහා ගිණුම අත්හිටුවිය හැක නමුත් එය පෙර තිබූ දත්ත කිසිවක් ප්‍රතිසාධනය නොකරයි. + suspension_reversible_hint_html: ගිණුම අත්හිටුවා ඇති අතර, දත්ත සම්පූර්ණයෙන්ම %{date}දින ඉවත් කරනු ලැබේ. එතෙක් කිසිදු අයහපත් ප්‍රතිඵලයකින් තොරව ගිණුම යථා තත්ත්වයට පත් කළ හැක. ඔබට ගිණුමේ සියලුම දත්ත වහාම ඉවත් කිරීමට අවශ්‍ය නම්, ඔබට එය පහතින් කළ හැක. title: ගිණුම් + unblock_email: ඊමේල් ලිපිනය අවහිර කිරීම ඉවත් කරන්න + unblocked_email_msg: "%{username}ගේ විද්‍යුත් තැපැල් ලිපිනය අවහිර කිරීම සාර්ථකව ඉවත් කරන ලදී" + unconfirmed_email: තහවුරු නොකළ ඊමේල් + undo_sensitized: බල සංවේදී අහෝසි කරන්න + undo_silenced: සීමාව අහෝසි කරන්න + undo_suspension: අත්හිටුවීම අහෝසි කරන්න + unsilenced_msg: "%{username}ගිණුමේ සීමාව සාර්ථකව ඉවත් කරන ලදී" + unsubscribe: දායක නොවන්න + unsuspended_msg: "%{username}ගිණුම සාර්ථකව අත්හිටුවන ලදී" username: පරිශීලක නාමය + view_domain: වසම සඳහා සාරාංශය බලන්න warn: අවවාද web: වියමන + whitelisted: ෆෙඩරේෂන් සඳහා අවසර ඇත action_logs: action_types: - change_email_user: පරිශීලකට වි-තැපෑල වෙනස් කරන්න + approve_appeal: අභියාචනය අනුමත කරන්න + approve_user: පරිශීලක අනුමත කරන්න + assigned_to_self_report: වාර්තාව පැවරීම + change_email_user: පරිශීලකයින්ට වි-තැපෑල වෙනස් කරන්න + confirm_user: පරිශීලක තහවුරු කරන්න create_account_warning: අවවාදයක් සාදන්න create_announcement: නිවේදනය සාදන්න + create_custom_emoji: අභිරුචි ඉමොජි සාදන්න create_domain_allow: වසම් ඉඩදීමක් සාදන්න create_domain_block: වසම් අවහිරයක් සාදන්න + create_email_domain_block: ඊමේල් ඩොමේන් බ්ලොක් එකක් සාදන්න create_ip_block: අ.ජා. කෙ. (IP) නීතියක් සාදන්න - disable_user: පරිශීලක අබල කරන්න + create_unavailable_domain: ලබා ගත නොහැකි වසම සාදන්න + demote_user: පරිශීලකයා පහත් කරන්න + destroy_announcement: නිවේදනය මකන්න + destroy_custom_emoji: අභිරුචි ඉමොජි මකන්න + destroy_domain_allow: වසම මකන්න ඉඩ දෙන්න + destroy_domain_block: වසම් වාරණය මකන්න + destroy_email_domain_block: ඊමේල් ඩොමේන් බ්ලොක් එක මකන්න + destroy_instance: වසම පිරිසිදු කරන්න + destroy_ip_block: IP රීතිය මකන්න + destroy_status: පළ කිරීම මකන්න + destroy_unavailable_domain: ලබා ගත නොහැකි වසම මකන්න + disable_2fa_user: 2FA අබල කරන්න + disable_custom_emoji: අභිරුචි ඉමොජි අබල කරන්න + disable_sign_in_token_auth_user: පරිශීලකයා සඳහා ඊමේල් ටෝකන් සත්‍යාපනය අක්‍රීය කරන්න + disable_user: පරිශීලනය කරන්න + enable_custom_emoji: අභිරුචි ඉමොජි සබල කරන්න + enable_sign_in_token_auth_user: පරිශීලකයා සඳහා විද්‍යුත් තැපෑල ටෝකන් සත්‍යාපනය සක්‍රීය කරන්න enable_user: පරිශීලක සබල කරන්න + memorialize_account: ගිණුම අනුස්මරණ කරන්න + promote_user: පරිශීලක ප්රවර්ධනය කරන්න + reject_appeal: අභියාචනය ප්‍රතික්ෂේප කරන්න + reject_user: පරිශීලක ප්‍රතික්ෂේප කරන්න + remove_avatar_user: Avatar ඉවත් කරන්න reopen_report: වාර්තාව නැවත විවෘත කරන්න reset_password_user: මුරපදය නැවතසකසන්න - suspend_account: ගිණුම අත්හිටුවන්න + resolve_report: වාර්තාව විසඳන්න + sensitive_account: බල සංවේදී ගිණුම + silence_account: ගිණුම සීමා කරන්න + suspend_account: සැලකිය යුතු + unassigned_report: වාර්තාව පැවරීම ඉවත් කරන්න + unblock_email_account: ඊමේල් ලිපිනය අවහිර කිරීම ඉවත් කරන්න + unsensitive_account: බල සංවේදී ගිණුම අහෝසි කරන්න + unsilence_account: සීමාව ගිණුම අහෝසි කරන්න + unsuspend_account: ගිණුම අත්හිටුවීම update_announcement: නිවේදනය යාවත්කාල කරන්න - filter_by_action: ක්‍රියාමාර්ගය අනුව පෙරන්න + update_custom_emoji: අභිරුචි ඉමොජි යාවත්කාලීන කරන්න + update_domain_block: ඩොමේන් බ්ලොක් යාවත්කාලීන කරන්න + update_status: පළ කිරීම යාවත්කාලීන කරන්න + actions: + approve_appeal_html: "%{name} අනුමත මධ්‍යස්ථ තීරණ අභියාචනය %{target}සිට" + approve_user_html: "%{name} අනුමත ලියාපදිංචිය %{target}සිට" + assigned_to_self_report_html: "%{name} වාර්තාව %{target} තමන්ටම පවරා ඇත" + change_email_user_html: "%{name} පරිශීලක %{target}ගේ ඊමේල් ලිපිනය වෙනස් කළේය" + confirm_user_html: "%{name} පරිශීලකයාගේ තහවුරු කරන ලද විද්‍යුත් තැපැල් ලිපිනය %{target}" + create_account_warning_html: "%{name} %{target}අනතුරු ඇඟවීමක් යවා ඇත" + create_announcement_html: "%{name} නව නිවේදනයක් තනන %{target}" + create_custom_emoji_html: "%{name} නව ඉමොජි %{target}උඩුගත කරන ලදී" + create_domain_allow_html: "%{name} වසම %{target}සමඟ ෆෙඩරේෂණයට අවසර දී ඇත" + create_domain_block_html: "%{name} අවහිර කළ වසම %{target}" + create_email_domain_block_html: "%{name} අවහිර කරන ලද විද්‍යුත් තැපැල් වසම %{target}" + create_ip_block_html: "%{name} IP %{target}සඳහා රීතිය සාදන ලදී" + create_unavailable_domain_html: "%{name} වසම %{target}වෙත බෙදා හැරීම නැවැත්වීය" + demote_user_html: "%{name} පහත හෙලන ලද පරිශීලක %{target}" + destroy_announcement_html: "%{name} මකා දැමූ නිවේදනය %{target}" + destroy_custom_emoji_html: "%{name} විනාශ වූ ඉමොජි %{target}" + destroy_domain_allow_html: වසම %{target}සමඟ %{name} අවසර නොදුන් සම්මේලනය + destroy_domain_block_html: "%{name} අවහිර නොකළ වසම %{target}" + destroy_email_domain_block_html: "%{name} අවහිර නොකළ විද්‍යුත් තැපැල් වසම %{target}" + destroy_instance_html: "%{name} පිරිසිදු කරන ලද වසම %{target}" + destroy_ip_block_html: IP %{target}සඳහා %{name} මකා දැමූ රීතිය + destroy_status_html: "%{name} පෝස්ට් %{target}විසින් ඉවත් කරන ලදී" + destroy_unavailable_domain_html: "%{name} වසම %{target}වෙත බෙදා හැරීම නැවත ආරම්භ විය" + disable_2fa_user_html: "%{name} පරිශීලක %{target}සඳහා සාධක දෙකක අවශ්‍යතාවය අක්‍රීය කර ඇත" + disable_custom_emoji_html: "%{name} ආබාධිත ඉමොජි %{target}" + disable_sign_in_token_auth_user_html: "%{name} අක්‍රීය කරන ලද විද්‍යුත් තැපෑල ටෝකන් සත්‍යාපනය සඳහා %{target}" + disable_user_html: "%{name} පරිශීලක %{target}සඳහා අබල කළ පිවිසුම" + enable_custom_emoji_html: "%{name} සක්‍රීය ඉමොජි %{target}" + enable_sign_in_token_auth_user_html: "%{name} %{target}විද්‍යුත් තැපෑල ටෝකන් සත්‍යාපනය සක්‍රීය කර ඇත" + enable_user_html: පරිශීලක %{target}සඳහා %{name} සක්‍රීය පුරනය වීම + memorialize_account_html: "%{name} %{target}ගේ ගිණුම සිහිවටන පිටුවක් බවට පත් කළේය" + promote_user_html: "%{name} උසස් පරිශීලක %{target}" + reject_appeal_html: "%{name} %{target}සිට මධ්‍යස්ථ තීරණ අභියාචනය ප්‍රතික්ෂේප කරන ලදී" + reject_user_html: "%{name} %{target}සිට ලියාපදිංචි වීම ප්‍රතික්ෂේප විය" + remove_avatar_user_html: "%{name} %{target}ගේ අවතාරය ඉවත් කරන ලදී" + reopen_report_html: "%{name} නැවත විවෘත කළ වාර්තාව %{target}" + reset_password_user_html: "%{name} පරිශීලක %{target}හි මුරපදය යළි පිහිටුවන්න" + resolve_report_html: "%{name} විසඳන ලද වාර්තාව %{target}" + sensitive_account_html: "%{name} %{target}හි මාධ්‍ය සංවේදී ලෙස සලකුණු කර ඇත" + silence_account_html: "%{name} සීමිත %{target}ගිණුමක්" + suspend_account_html: "%{name} %{target}ගේ ගිණුම අත්හිටුවා ඇත" + unassigned_report_html: "%{name} පවරා නොදුන් වාර්තාව %{target}" + unblock_email_account_html: "%{name} %{target}ගේ ඊමේල් ලිපිනය අවහිර කිරීම ඉවත් කරන ලදී" + unsensitive_account_html: "%{name} සලකුණු නොකළ %{target}ගේ මාධ්‍ය සංවේදී ලෙස" + unsilence_account_html: "%{target}ගිණුමේ %{name} undid සීමාව" + unsuspend_account_html: "%{name} අත්හිටුවන ලද %{target}ගිණුම" + update_announcement_html: "%{name} යාවත්කාලීන නිවේදනය %{target}" + update_custom_emoji_html: "%{name} යාවත්කාලීන කළ ඉමොජි %{target}" + update_domain_block_html: "%{target}සඳහා %{name} යාවත්කාලීන කරන ලද වසම් වාරණ" + update_status_html: "%{name} %{target}යාවත්කාලීන කරන ලද පළ කිරීම" + deleted_status: "(මකා දැමූ පළ කිරීම)" + empty: ලඝු-සටහන් හමු නොවිණි. + filter_by_action: ක්‍රියාව අනුව පෙරන්න filter_by_user: පරිශීලක අනුව පෙරන්න + title: විගණන සටහන announcements: + destroyed_msg: නිවේදනය සාර්ථකව මකා ඇත! edit: title: නිවේදනය සංස්කරණය + empty: නිවේදන කිසිවක් හමු නොවීය. live: සජීවී new: create: නිවේදනය සාදන්න title: නව නිවේදනය + publish: ප්‍රකාශ කරන්න published_msg: නිවේදනය සාර්ථකව ප්‍රකාශයට පත් කරන ලදි! + scheduled_for: "%{time}සඳහා සැලසුම් කර ඇත" + scheduled_msg: නිවේදනය නිකුත් කිරීමට නියමිතයි! title: නිවේදන + unpublish: ප්‍රකාශනය ඉවත් කරන්න + unpublished_msg: නිවේදනය සාර්ථකව ප්‍රකාශයට පත් නොකළේය! + updated_msg: නිවේදනය සාර්ථකව යාවත්කාලීන කරන ලදී! custom_emojis: + assign_category: කාණ්ඩය පැවරීම by_domain: වසම + copied_msg: ඉමොජි වල දේශීය පිටපත සාර්ථකව සාදන ලදී copy: පිටපත් + copy_failed_msg: එම ඉමොජියේ දේශීය පිටපතක් සෑදීමට නොහැකි විය create_new_category: නව ප්‍රවර්ගයක් සාදන්න + created_msg: ඉමොජි සාර්ථකව නිර්මාණය කළා! + delete: මකන්න + destroyed_msg: Emojo සාර්ථකව විනාශ විය! disable: අබල කරන්න disabled: අබල කර ඇත + disabled_msg: එම ඉමොජිය සාර්ථකව අබල කරන ලදී + emoji: ඉමොජි enable: සබල කරන්න enabled: සබල කර ඇත + enabled_msg: එම ඉමොජි සාර්ථකව සබල කරන ලදී + image_hint: PNG හෝ GIF %{size}දක්වා list: ලැයිස්තුව + listed: ලැයිස්තුගත කර ඇත + new: + title: නව අභිරුචි ඉමොජි එක් කරන්න + not_permitted: මෙම ක්‍රියාව සිදු කිරීමට ඔබට අවසර නැත + overwrite: උඩින් ලියන්න shortcode: කෙටිකේතය + shortcode_hint: අවම වශයෙන් අක්ෂර 2 ක්, අක්ෂරාංක අක්ෂර සහ යටි ඉරි පමණි + title: අභිරුචි ඉමෝජි + uncategorized: වර්ගීකරණය නොකළ + unlist: ලැයිස්තුගත නොකරන්න + unlisted: ලැයිස්තුගත නොකළ + update_failed_msg: එම ඉමොජි යාවත්කාලීන කළ නොහැකි විය + updated_msg: ඉමොජි සාර්ථකව යාවත්කාලීන කරන ලදී! upload: උඩුගත කරන්න dashboard: + active_users: ක්රියාකාරී පරිශීලකයන් + interactions: අන්තර්ක්රියා + media_storage: මාධ්ය ගබඩාව + new_users: නව පරිශීලකයන් + opened_reports: වාර්තා විවෘත විය + pending_appeals_html: + one: "%{count} අභියාචනයක් බලාපොරොත්තු වේ" + other: "%{count} අභියාචනා පොරොත්තු" + pending_reports_html: + one: "%{count} පොරොත්තු වාර්තාව" + other: "%{count} පොරොත්තු වාර්තා" + pending_tags_html: + one: "%{count} පොරොත්තු හැෂ් ටැගය" + other: "%{count} පොරොත්තු හැෂ් ටැග්" + pending_users_html: + one: "%{count} අපේක්ෂිත පරිශීලකයා" + other: "%{count} අපේක්ෂිත පරිශීලකයින්" + resolved_reports: වාර්තා විසඳා ඇත software: මෘදුකාංගය + sources: ලියාපදිංචි මූලාශ්‍ර + space: අවකාශය භාවිතය title: උපකරණ පුවරුව + top_languages: ඉහළම ක්රියාකාරී භාෂා + top_servers: ඉහළම ක්රියාකාරී සේවාදායකයන් + website: වෙබ් අඩවිය + disputes: + appeals: + empty: අභියාචනා හමු නොවීය. + title: අභියාචනා + domain_allows: + add_new: වසම සමඟ සම්මේලනයට ඉඩ දෙන්න + created_msg: ෆෙඩරේෂන් සඳහා වසම සාර්ථකව අවසර දී ඇත + destroyed_msg: ෆෙඩරේෂන් වෙතින් වසම අනුමත කර නැත + undo: වසම සමඟ සම්මේලනයට ඉඩ නොදෙන්න domain_blocks: + add_new: නව වසම් වාරණ එක් කරන්න + created_msg: වසම් අවහිර කිරීම දැන් සකසමින් පවතී + destroyed_msg: වසම් අවහිර කිරීම ඉවත් කර ඇත domain: වසම + edit: වසම් වාරණය සංස්කරණය කරන්න + existing_domain_block: ඔබ දැනටමත් %{name}මත දැඩි සීමාවන් පනවා ඇත. + existing_domain_block_html: ඔබ දැනටමත් %{name}මත දැඩි සීමාවන් පනවා ඇත, ඔබට එය අවහිර කිරීම ඉවත් කිරීමට අවශ්‍යයි. new: + create: බ්ලොක් එකක් සාදන්න + hint: ඩොමේන් බ්ලොක් එක දත්ත සමුදාය තුල ගිණුම් ඇතුලත් කිරීම් නිර්මාණය වීම වලක්වන්නේ නැත, නමුත් එම ගිණුම් වලට ප්‍රතික්‍රියාශීලීව සහ ස්වයංක්‍රීයව විශේෂිත මධ්‍යස්ථ ක්‍රම යොදනු ඇත. severity: + desc_html: "Silence ගිණුමේ පළ කිරීම් ඒවා අනුගමනය නොකරන ඕනෑම කෙනෙකුට නොපෙනී යයි. අත්හිටුවීම ගිණුමේ අන්තර්ගතය, මාධ්‍ය සහ පැතිකඩ දත්ත සියල්ල ඉවත් කරයි. ඔබට මාධ්‍ය ගොනු ප්‍රතික්ෂේප කිරීමට අවශ්‍ය නම් None භාවිතා කරන්න." noop: කිසිවක් නැත + silence: නිශ්ශබ්දතාව suspend: අත්හිටුවන්න + title: නව වසම් වාරණ + obfuscate: අපැහැදිලි වසම් නාමය + obfuscate_hint: වසම් සීමාවන් ලැයිස්තුව ප්‍රචාරණය කිරීම සබල කර ඇත්නම් ලැයිස්තුවේ වසම් නාමය අර්ධ වශයෙන් අපැහැදිලි කරන්න private_comment: පුද්ගලික අදහස + private_comment_hint: පරිපාලකයින් විසින් අභ්‍යන්තර භාවිතය සඳහා මෙම වසම් සීමාව ගැන අදහස් දක්වන්න. public_comment: ප්‍රසිද්ධ අදහස + public_comment_hint: වසම් සීමාවන් ලැයිස්තුව ප්‍රචාරණය කිරීම සබල කර ඇත්නම්, සාමාන්‍ය ජනතාව සඳහා මෙම වසම් සීමාව ගැන අදහස් දක්වන්න. + reject_media: මාධ්‍ය ගොනු ප්‍රතික්ෂේප කරන්න + reject_media_hint: දේශීයව ගබඩා කර ඇති මාධ්‍ය ගොනු ඉවත් කරන අතර අනාගතයේදී ඒවා බාගත කිරීම ප්‍රතික්ෂේප කරයි. අත්හිටුවීම් සඳහා අදාළ නොවේ reject_reports: වාර්තා ප්‍රතික්ෂේප කරන්න + reject_reports_hint: මෙම වසමෙන් එන සියලුම වාර්තා නොසලකා හරින්න. අත්හිටුවීම් සඳහා අදාළ නොවේ + undo: වසම් අවහිර කිරීම අහෝසි කරන්න + view: වසම් වාරණය බලන්න email_domain_blocks: + add_new: අලුතින් එකතු කරන්න + attempts_over_week: + one: පසුගිය සතිය පුරා %{count} උත්සාහයක් + other: පසුගිය සතියේ ලියාපදිංචි වීමේ උත්සාහයන් %{count} ක් + created_msg: විද්‍යුත් තැපැල් වසම සාර්ථකව අවහිර කරන ලදී + delete: මකන්න + dns: + types: + mx: MX වාර්තාව domain: වසම new: create: වසම එකතු කරන්න + resolve: වසම විසඳන්න + title: නව විද්‍යුත් තැපැල් වසම අවහිර කරන්න + no_email_domain_block_selected: කිසිවක් තෝරා නොගත් බැවින් විද්‍යුත් තැපැල් වසම් වාරණ කිසිවක් වෙනස් කර නැත + resolved_dns_records_hint_html: ඩොමේන් නාමය පහත දැක්වෙන MX වසම් වලට විසඳයි, ඒවා අවසානයේ ඊමේල් පිළිගැනීම සඳහා වගකිව යුතුය. MX වසමක් අවහිර කිරීම දෘශ්‍ය වසම් නාමය වෙනස් වුවද, එකම MX වසම භාවිතා කරන ඕනෑම විද්‍යුත් තැපැල් ලිපිනයකින් ලියාපදිංචි වීම අවහිර කරයි. ප්‍රධාන විද්‍යුත් තැපැල් සපයන්නන් අවහිර නොකිරීමට ප්‍රවේශම් වන්න. + resolved_through_html: "%{domain}හරහා විසඳා ඇත" title: අවහිර කළ වි-තැපැල් වසම් follow_recommendations: + description_html: "නව පරිශීලකයින්ට රසවත් අන්තර්ගතයන් ඉක්මනින් සොයා ගැනීමට උපකාර වන නිර්දේශ අනුගමනය කරන්න. පෞද්ගලීකරණය කළ පසු විපරම් නිර්දේශ සැකසීමට තරම් පරිශීලකයෙකු අන් අය සමඟ අන්තර් ක්‍රියා කර නොමැති විට, ඒ වෙනුවට මෙම ගිණුම් නිර්දේශ කෙරේ. දී ඇති භාෂාවක් සඳහා ඉහළම මෑත කාලීන නියැලීම් සහ ඉහළම දේශීය අනුගාමික සංඛ්‍යාව සහිත ගිණුම් මිශ්‍රණයකින් ඒවා දෛනික පදනමින් නැවත ගණනය කෙරේ." language: භාෂාව සඳහා - status: තත්වය + status: තත්ත්වය + suppress: අනුගමනය නිර්දේශය යටපත් කරන්න + suppressed: යටපත් කළා + title: නිර්දේශ අනුගමනය කරන්න + unsuppress: නිර්දේශ පිළිපැදීම ප්‍රතිසාධනය කරන්න instances: + availability: + description_html: + one: වසම වෙත බෙදා හැරීම සාර්ථක නොවී දින %{count} අසාර්ථක වුවහොත්, වසම
    න් බෙදා හැරීමක් ලැබෙන්නේ නම් මිස වැඩිදුර බෙදා හැරීමේ උත්සාහයන් සිදු නොකෙරේ. + other: වසම වෙත බෙදා හැරීම සාර්ථක නොවී %{count} වෙනස් දින අසාර්ථක වුවහොත්, වසම සිට බෙදා හැරීමක් නොලැබුනේ නම්, තවදුරටත් බෙදා හැරීමේ උත්සාහයන් සිදු නොකෙරේ. + failure_threshold_reached: අසාර්ථක වීමේ සීමාව %{date}ට ළඟා විය. + failures_recorded: + one: දින %{count} කින් අසාර්ථක උත්සාහයක්. + other: විවිධ දින %{count} ක අසාර්ථක උත්සාහයන්. + no_failures_recorded: වාර්තාගත අසාර්ථක වීම් නොමැත. + title: පවතින බව + warning: මෙම සේවාදායකයට සම්බන්ධ වීමට ගත් අවසන් උත්සාහය අසාර්ථක විය back_to_all: සියල්ල + back_to_limited: සීමා සහිතයි back_to_warning: අවවාදයයි by_domain: වසම + confirm_purge: ඔබට මෙම වසමෙන් දත්ත ස්ථිරවම මැකීමට අවශ්‍ය බව විශ්වාසද? + content_policies: + comment: අභ්යන්තර සටහන + description_html: ඔබට මෙම වසම සහ එහි ඕනෑම උප වසමකින් සියලුම ගිණුම් වලට අදාළ වන අන්තර්ගත ප්‍රතිපත්ති නිර්වචනය කළ හැක. + policies: + reject_media: මාධ්‍ය ප්‍රතික්ෂේප කරන්න + reject_reports: වාර්තා ප්‍රතික්ෂේප කරන්න + silence: සීමාව + suspend: අත්හිටුවන්න + policy: ප්රතිපත්ති + reason: පොදු හේතුව + title: අන්තර්ගත ප්රතිපත්ති + dashboard: + instance_accounts_dimension: වැඩිපුරම අනුගමනය කරන ගිණුම් + instance_accounts_measure: ගබඩා කර ඇති ගිණුම් + instance_followers_measure: එතන අපේ අනුගාමිකයෝ + instance_follows_measure: ඔවුන්ගේ අනුගාමිකයන් මෙහි + instance_languages_dimension: ඉහළම භාෂා + instance_media_attachments_measure: ගබඩා කළ මාධ්‍ය ඇමුණුම් + instance_reports_measure: ඔවුන් ගැන වාර්තා + instance_statuses_measure: ගබඩා කළ තනතුරු delivery: all: සියල්ල + clear: බෙදා හැරීමේ දෝෂ ඉවත් කරන්න + failing: අසාර්ථක වෙනවා + restart: බෙදා හැරීම නැවත ආරම්භ කරන්න + stop: බෙදා හැරීම නවත්වන්න + unavailable: ලබා ගත නොහැක + delivery_available: බෙදා හැරීම ලබා ගත හැකිය + delivery_error_days: බෙදා හැරීමේ දෝෂ සහිත දින + delivery_error_hint: දින %{count} ක් සඳහා බෙදා හැරීම කළ නොහැකි නම්, එය ස්වයංක්‍රීයව බෙදා හැරිය නොහැකි ලෙස ලකුණු කරනු ලැබේ. + destroyed_msg: "%{domain} සිට දත්ත දැන් ආසන්න මකාදැමීම සඳහා පෝලිම් කර ඇත." + empty: වසම් කිසිවක් හමු නොවීය. + known_accounts: + one: "%{count} දන්නා ගිණුම්" + other: දන්නා ගිණුම් %{count} ක් moderation: all: සියල්ල + limited: සීමා සහිතයි + title: මධ්යස්ථභාවය private_comment: පුද්ගලික අදහස public_comment: ප්‍රසිද්ධ අදහස + purge: පිරිසිදු කරන්න + purge_description_html: මෙම වසම යහපත සඳහා නොබැඳි බව ඔබ විශ්වාස කරන්නේ නම්, ඔබට ඔබගේ ගබඩාවෙන් මෙම වසමෙන් සියලුම ගිණුම් වාර්තා සහ ආශ්‍රිත දත්ත මකා දැමිය හැක. මෙයට යම් කාලයක් ගත විය හැක. + title: සම්මේලනය + total_blocked_by_us: අප විසින් අවහිර කරන ලදී + total_followed_by_them: ඔවුන් විසින් අනුගමනය කරන ලදී + total_followed_by_us: අප විසින් අනුගමනය කරන ලදී + total_reported: ඔවුන් ගැන වාර්තා + total_storage: මාධ්ය ඇමුණුම් + totals_time_period_hint_html: පහත දැක්වෙන එකතුවෙහි සියලු කාලය සඳහා දත්ත ඇතුළත් වේ. invites: + deactivate_all: සියල්ල අක්‍රිය කරන්න filter: all: සියල්ල + available: පවතින expired: කල් ඉකුත් වී ඇත title: පෙරහන title: ඇරයුම් ip_blocks: add_new: නීතිය සාදන්න + created_msg: නව IP රීතිය සාර්ථකව එක් කරන ලදී + delete: මකන්න expires_in: '1209600': සති 2 '15778476': මාස 6 @@ -183,116 +557,608 @@ si: '94670856': අවුරුදු 3 new: title: නව අ.ජා. කෙ.(IP) නීතියක් සාදන්න + no_ip_block_selected: IP රීති කිසිවක් තෝරා නොගත් බැවින් වෙනස් කර නැත title: අ.ජා. කෙ. (IP) නීති + relationships: + title: "%{acct}හි සබඳතා" relays: + add_new: නව රිලේ එක් කරන්න + delete: මකන්න + description_html: "ෆෙඩරේෂන් රිලේ යනු එයට දායක වී ප්‍රකාශයට පත් කරන සේවාදායකයන් අතර විශාල ප්‍රසිද්ධ පළ කිරීම් හුවමාරු කරන අතරමැදි සේවාදායකයකි. එය කුඩා සහ මධ්‍යම සේවාදායකයන්ට fediverseවෙතින් අන්තර්ගතය සොයා ගැනීමට උදවු කළ හැකි අතර, එසේ නොමැති නම් දේශීය පරිශීලකයින්ට දුරස්ථ සේවාදායකයන් මත වෙනත් පුද්ගලයින් හස්තීයව අනුගමනය කිරීම අවශ්‍ය වේ." disable: අබල කරන්න disabled: අබල කර ඇත enable: සබල කරන්න + enable_hint: සක්‍රිය කළ පසු, ඔබේ සේවාදායකය මෙම රිලේ වෙතින් සියලුම පොදු පළ කිරීම් සඳහා දායක වන අතර, මෙම සේවාදායකයේ පොදු පළ කිරීම් එයට යැවීම ආරම්භ කරනු ඇත. enabled: සබල කර ඇත + inbox_url: රිලේ URL + pending: රිලේ අනුමැතිය සඳහා රැඳී සිටිමින් + save_and_enable: සුරකින්න සහ සක්රිය කරන්න + setup: රිලේ සම්බන්ධතාවයක් සකසන්න + signatures_not_enabled: ආරක්ෂිත මාදිලිය හෝ සීමිත ෆෙඩරේෂන් මාදිලිය සබල කර ඇති අතර රිලේ නිවැරදිව ක්‍රියා නොකරනු ඇත status: තත්වය + title: රිලේස් + report_notes: + created_msg: වාර්තා සටහන සාර්ථකව සාදන ලදී! + destroyed_msg: වාර්තා සටහන සාර්ථකව මකා ඇත! + today_at: අද %{time}ට reports: + account: + notes: + one: "%{count} සටහන" + other: "%{count} සටහන්" + action_log: විගණන සටහන + action_taken_by: විසින් ගන්නා ලද පියවර + actions: + delete_description_html: වාර්තා කරන ලද පළ කිරීම් මකා දැමෙනු ඇති අතර එම ගිණුමේම අනාගත උල්ලංඝනයන් තීව්‍ර කිරීමට ඔබට උදවු කිරීමට වර්ජනයක් වාර්තා කරනු ඇත. + mark_as_sensitive_description_html: වාර්තා කරන ලද පළ කිරීම් වල මාධ්‍ය සංවේදී ලෙස සලකුණු කරනු ලබන අතර එම ගිණුම මගින් අනාගත උල්ලංඝනයන් උත්සන්න කිරීමට ඔබට උපකාර කිරීමට වර්ජනයක් වාර්තා කරනු ඇත. + other_description_html: ගිණුමේ හැසිරීම පාලනය කිරීම සහ වාර්තා කළ ගිණුමට සන්නිවේදනය අභිරුචිකරණය කිරීම සඳහා තවත් විකල්ප බලන්න. + resolve_description_html: වාර්තා කරන ලද ගිණුමට එරෙහිව කිසිදු ක්‍රියාමාර්ගයක් නොගනු ඇත, වැඩ වර්ජනයක් වාර්තා නොකෙරේ, වාර්තාව වසා දමනු ඇත. + silence_description_html: පැතිකඩ දෘශ්‍යමාන වනු ඇත්තේ දැනටමත් එය අනුගමනය කරන හෝ අතින් බලන අයට පමණක් වන අතර, එහි ළඟාවීම දැඩි ලෙස සීමා කරයි. සෑම විටම ආපසු හැරවිය හැක. + suspend_description_html: එය අවසානයේ මකා දමන තුරු පැතිකඩ සහ එහි සියලුම අන්තර්ගතයන් ප්‍රවේශ විය නොහැකි වනු ඇත. ගිණුම සමඟ අන්තර් ක්රියා කිරීම කළ නොහැකි වනු ඇත. දින 30 ක් ඇතුළත ආපසු හැරවිය හැකිය. + actions_description_html: මෙම වාර්තාව විසඳීමට ගත යුතු ක්‍රියාමාර්ගය තීරණය කරන්න. ඔබ වාර්තා කරන ලද ගිණුමට එරෙහිව දණ්ඩනීය ක්‍රියාමාර්ගයක් ගන්නේ නම්, Spam කාණ්ඩය තෝරාගත් විට හැර, ඔවුන්ට විද්‍යුත් තැපෑලෙන් දැනුම්දීමක් යවනු ලැබේ. + add_to_report: වාර්තා කිරීමට තවත් එක් කරන්න are_you_sure: ඔබට විශ්වාසද? + assign_to_self: මට පවරන්න + assigned: පවරා ඇති උපපරිපාලක by_target_domain: වාර්තා කළ ගිණුමෙහි වසම + category: වර්ගය + category_description_html: මෙම ගිණුම සහ/හෝ අන්තර්ගතය වාර්තා කළ හේතුව වාර්තා කළ ගිණුම සමඟ සන්නිවේදනයේ සඳහන් කරනු ඇත comment: none: කිසිවක් නැත + comment_description_html: 'වැඩි විස්තර සැපයීම සඳහා, %{name} ලිවීය:' + created_at: වාර්තා කර ඇත + delete_and_resolve: පළ කිරීම් මකන්න + forwarded: යොමු කළා + forwarded_to: "%{domain}වෙත යොමු කරන ලදී" + mark_as_resolved: විසඳා ඇති ලෙස ලකුණු කරන්න + mark_as_sensitive: සංවේදී ලෙස ලකුණු කරන්න + mark_as_unresolved: නොවිසඳුනු ලෙස ලකුණු කරන්න + no_one_assigned: කිසි කෙනෙක නැහැ notes: create: සටහන එකතු කරන්න + create_and_resolve: සටහන සමඟ විසඳන්න + create_and_unresolve: සටහනක් සමඟ නැවත විවෘත කරන්න + delete: මකන්න + placeholder: ගෙන ඇති ක්‍රියාමාර්ග, හෝ වෙනත් අදාළ යාවත්කාලීන විස්තර කරන්න... + title: සටහන් + notes_description_html: අනෙකුත් උපපරිපාලකයින්ට සහ ඔබේ අනාගතයට සටහන් බලන්න සහ තබන්න + quick_actions_description_html: 'වාර්තා කළ අන්තර්ගතය බැලීමට ඉක්මන් ක්‍රියාමාර්ගයක් ගන්න හෝ පහළට අනුචලනය කරන්න:' + remote_user_placeholder: "%{instance}සිට දුරස්ථ පරිශීලකයා" reopen: වාර්තාව නැවත විවෘත කරන්න report: "@%{id} වාර්තා කරන්න" reported_account: වාර්තා කළ ගිණුම + reported_by: විසින් වාර්තා + resolved: විසඳා ඇත + resolved_msg: වාර්තාව සාර්ථකව විසඳා ඇත! + skip_to_actions: ක්‍රියාවන් වෙත යන්න status: තත්වය + statuses: වාර්තා කළ අන්තර්ගතය + statuses_description_html: වාර්තා කරන ලද ගිණුම සමඟ සන්නිවේදනය කිරීමේදී වැරදි අන්තර්ගතයන් උපුටා දක්වනු ඇත + target_origin: වාර්තා කළ ගිණුමේ ආරම්භය title: වාර්තා + unassign: පැවරීම ඉවත් කරන්න + unresolved: නොවිසඳී ඇත + updated_at: යාවත්කාලීන කරන ලදී + view_profile: පැතිකඩ බලන්න rules: add_new: නීතිය එකතු කරන්න + delete: මකන්න + description_html: බොහෝ දෙනා සේවා කොන්දේසි කියවා එකඟ වූ බව ප්‍රකාශ කරන අතර, සාමාන්‍යයෙන් මිනිසුන් ගැටලුවක් පැනනඟින තුරු කියවා නොගනිති. පැතලි බුලට් පොයින්ට් ලිස්ට් එකකින් ඒවා ලබා දීමෙන් බැලූ බැල්මට ඔබේ සේවාදායකයේ නීති බැලීම පහසු කරන්න. තනි නීති කෙටි හා සරලව තබා ගැනීමට උත්සාහ කරන්න, නමුත් ඒවා විවිධ අයිතම වලට බෙදීමට උත්සාහ නොකරන්න. edit: නීතිය සංස්කරණය කරන්න + empty: තවමත් සේවාදායක රීති නිර්වචනය කර නොමැත. title: සේවාදායකයේ නීති settings: + activity_api_enabled: + desc_html: සතිපතා බාල්දිවල දේශීයව ප්‍රකාශිත පළ කිරීම්, ක්‍රියාකාරී පරිශීලකයින් සහ නව ලියාපදිංචි කිරීම් ගණන + title: API හි පරිශීලක ක්‍රියාකාරකම් පිළිබඳ සමස්ත සංඛ්‍යාලේඛන ප්‍රකාශයට පත් කරන්න + bootstrap_timeline_accounts: + desc_html: බහු පරිශීලක නාම කොමාවෙන් වෙන් කරන්න. මෙම ගිණුම් පහත සඳහන් නිර්දේශවල පෙන්වීමට සහතික වනු ඇත + title: නව පරිශීලකයින්ට මෙම ගිණුම් නිර්දේශ කරන්න contact_information: email: ව්‍යාපාරික වි-තැපෑල + username: පරිශීලක නාමය අමතන්න + custom_css: + desc_html: සෑම පිටුවකම පටවා ඇති CSS සමඟ පෙනුම වෙනස් කරන්න + title: අභිරුචි CSS + default_noindex: + desc_html: මෙම සැකසුම තමන් විසින්ම වෙනස් කර නොමැති සියලුම පරිශීලකයින්ට බලපායි + title: පෙරනිමියෙන් සෙවුම් යන්ත්‍ර සුචිගත කිරීමෙන් පරිශීලකයින් ඉවත් කරන්න + domain_blocks: + all: හැමෝටම + disabled: කාටවත් නෑ + title: වසම් වාරණ පෙන්වන්න + users: පුරනය වී ඇති දේශීය පරිශීලකයින් වෙත + domain_blocks_rationale: + title: තාර්කිකත්වය පෙන්වන්න + hero: + desc_html: මුල් පිටුවේ ප්‍රදර්ශනය කෙරේ. අවම වශයෙන් 600x100px නිර්දේශිතයි. සකසා නොමැති විට, සේවාදායක සිඟිති රුව වෙත ආපසු වැටේ + title: වීර රූපය + mascot: + desc_html: පිටු කිහිපයක ප්‍රදර්ශනය කෙරේ. අවම වශයෙන් 293×205px නිර්දේශිතයි. සකසා නොමැති විට, පෙරනිමි මැස්කොට් වෙත ආපසු වැටේ + title: මැස්කොට් රූපය + peers_api_enabled: + desc_html: මෙම සේවාදායකය fediverse තුළ හමු වූ වසම් නම් + title: API හි සොයාගත් සේවාදායක ලැයිස්තුවක් ප්‍රකාශයට පත් කරන්න + preview_sensitive_media: + desc_html: මාධ්‍ය සංවේදී ලෙස සලකුණු කළත් වෙනත් වෙබ් අඩවිවල සබැඳි පෙරදසුන් සිඟිති රූපයක් පෙන්වයි + title: OpenGraph පෙරදසුන් තුළ සංවේදී මාධ්‍ය පෙන්වන්න + profile_directory: + desc_html: පරිශීලකයින්ට සොයාගත හැකි වීමට ඉඩ දෙන්න + title: පැතිකඩ නාමාවලිය සබල කරන්න + registrations: + closed_message: + desc_html: ලියාපදිංචිය වසා ඇති විට මුල් පිටුවේ ප්‍රදර්ශනය කෙරේ. ඔබට HTML ටැග් භාවිතා කළ හැකිය + title: සංවෘත ලියාපදිංචි පණිවිඩය + deletion: + desc_html: ඕනෑම කෙනෙකුට තම ගිණුම මකා දැමීමට ඉඩ දෙන්න + title: ගිණුම් මකාදැමීම විවෘත කරන්න + require_invite_text: + desc_html: ලියාපදිංචිය සඳහා අතින් අනුමැතිය අවශ්‍ය වූ විට, "ඔබට සම්බන්ධ වීමට අවශ්‍ය වන්නේ ඇයි?" විකල්ප වෙනුවට පෙළ ආදානය අනිවාර්ය වේ + title: සම්බන්ධ වීමට හේතුවක් ඇතුළත් කිරීමට නව පරිශීලකයින්ට අවශ්‍ය වේ + registrations_mode: + modes: + approved: ලියාපදිංචි වීමට අනුමැතිය අවශ්‍යයි + none: කිසිවෙකුට ලියාපදිංචි විය නොහැක + open: ඕනෑම කෙනෙකුට ලියාපදිංචි විය හැක + title: ලියාපදිංචි කිරීමේ මාදිලිය + show_known_fediverse_at_about_page: + desc_html: අබල කළ විට, ගොඩබෑමේ පිටුවෙන් සම්බන්ධ කර ඇති පොදු කාලරාමුව දේශීය අන්තර්ගතය පමණක් පෙන්වීමට සීමා කරයි + title: සත්‍යාපනය නොකළ පොදු කාලරේඛා පිටුවේ ෆෙඩරේටඩ් අන්තර්ගතය ඇතුළත් කරන්න site_description: + desc_html: API හි හඳුන්වාදීමේ ඡේදය. මෙම Mastodon සේවාදායකය විශේෂ වන්නේ කුමක්ද සහ වෙනත් වැදගත් දෙයක් විස්තර කරන්න. ඔබට HTML ටැග් භාවිතා කළ හැකිය, විශේෂයෙන් <a> සහ <em>. title: සේවාදායකයේ සවිස්තරය + site_description_extended: + desc_html: ඔබේ චර්යාධර්ම සංග්‍රහය, රීති, මාර්ගෝපදේශ සහ ඔබේ සේවාදායකය වෙන් කරන වෙනත් දේවල් සඳහා හොඳ තැනක්. ඔබට HTML ටැග් භාවිතා කළ හැකිය + title: අභිරුචි දීර්ඝ තොරතුරු site_short_description: + desc_html: පැති තීරුවේ සහ මෙටා ටැග්වල පෙන්වයි. Mastodon යනු කුමක්ද සහ මෙම සේවාදායකය විශේෂ වන්නේ කුමක්ද යන්න තනි ඡේදයකින් විස්තර කරන්න. title: සේවාදායකයේ කෙටි සවිස්තරය + site_terms: + desc_html: ඔබට ඔබේම රහස්‍යතා ප්‍රතිපත්තියක්, සේවා කොන්දේසි හෝ වෙනත් නීත්‍යානුකූල භාවයක් ලිවිය හැක. ඔබට HTML ටැග් භාවිතා කළ හැකිය + title: අභිරුචි සේවා කොන්දේසි site_title: සේවාදායකයේ නම + thumbnail: + desc_html: OpenGraph සහ API හරහා පෙරදසුන් සඳහා භාවිතා වේ. 1200x630px නිර්දේශිතයි + title: සේවාදායක සිඟිති රුව + timeline_preview: + desc_html: ගොඩබෑමේ පිටුවේ පොදු කාලරාමුව වෙත සබැඳිය සංදර්ශනය කරන්න සහ සත්‍යාපනයකින් තොරව පොදු කාලරේඛාවට API ප්‍රවේශයට ඉඩ දෙන්න + title: පොදු කාලරේඛාවට අනවසර පිවිසීමට ඉඩ දෙන්න title: අඩවියේ සැකසුම් + trendable_by_default: + desc_html: කලින් අවසර නොදුන් හැෂ් ටැග් වලට බලපායි + title: පෙර සමාලෝචනයකින් තොරව හැෂ් ටැග් වලට නැඹුරු වීමට ඉඩ දෙන්න + trends: + desc_html: දැනට ප්‍රවණතා ඇති කලින් සමාලෝචනය කළ අන්තර්ගතය ප්‍රසිද්ධියේ සංදර්ශන කරන්න + title: ප්රවණතා + site_uploads: + delete: උඩුගත කළ ගොනුව මකන්න + destroyed_msg: අඩවිය උඩුගත කිරීම සාර්ථකව මකා ඇත! statuses: back_to_account: ගිණුම් පිටුවට ආපසු යන්න + back_to_report: වාර්තා පිටුවට ආපසු යන්න + batch: + remove_from_report: වාර්තාවෙන් ඉවත් කරන්න + report: වාර්තාව + deleted: මකා දමන ලදී media: title: මාධ්‍යය - with_media: මාධ්‍ය සමඟ + no_status_selected: කිසිවක් තෝරා නොගත් බැවින් තනතුරු කිසිවක් වෙනස් කර නැත + title: ගිණුම් තනතුරු + with_media: මාධ්‍ය දායකත්වය + strikes: + actions: + delete_statuses: "%{target}ගේ පළ කිරීම් %{name} මකා දමන ලදී" + disable: "%{name} %{target}ගේ ගිණුම නිශ්චල කළේය" + mark_statuses_as_sensitive: "%{name} %{target}ගේ පළ කිරීම් සංවේදී ලෙස ලකුණු කර ඇත" + none: "%{name} %{target}අනතුරු ඇඟවීමක් යවා ඇත" + sensitive: "%{name} %{target}ගේ ගිණුම සංවේදී ලෙස ලකුණු කර ඇත" + silence: "%{name} සීමිත %{target}ගිණුමක්" + suspend: "%{name} %{target}ගේ ගිණුම අත්හිටුවා ඇත" + appeal_approved: අභියාචනා කළා + appeal_pending: අභියාචනය පොරොත්තුවෙන් + system_checks: + database_schema_check: + message_html: පොරොත්තු දත්ත සමුදා සංක්‍රමණයන් ඇත. යෙදුම අපේක්ෂිත පරිදි ක්‍රියා කරන බව සහතික කිරීමට කරුණාකර ඒවා ධාවනය කරන්න + elasticsearch_running_check: + message_html: Elasticsearch වෙත සම්බන්ධ වීමට නොහැකි විය. කරුණාකර එය ක්‍රියාත්මක වන බව පරීක්ෂා කරන්න, නැතහොත් සම්පූර්ණ පෙළ සෙවීම අක්‍රීය කරන්න + elasticsearch_version_check: + message_html: 'නොගැලපෙන ඉලාස්ටික් සෙවුම් අනුවාදය: %{value}' + version_comparison: Elasticsearch %{running_version} ක්‍රියාත්මක වන අතර %{required_version} අවශ්‍ය වේ + rules_check: + action: සේවාදායක නීති කළමනාකරණය කරන්න + message_html: ඔබ සේවාදායක රීති කිසිවක් නිර්වචනය කර නැත. + sidekiq_process_check: + message_html: "%{value} පෝලිම්(ය) සඳහා Sidekiq ක්‍රියාවලියක් ක්‍රියාත්මක නොවේ. කරුණාකර ඔබේ Sidekiq වින්‍යාසය සමාලෝචනය කරන්න" + tags: + review: තත්ත්වය සමාලෝචනය කරන්න + updated_msg: Hashtag සැකසුම් සාර්ථකව යාවත්කාලීන කරන ලදී title: පරිපාලනය + trends: + allow: ඉඩ දෙන්න + approved: අනුමත කළා + disallow: අවසර නොදෙන්න + links: + allow: සබැඳියට ඉඩ දෙන්න + allow_provider: ප්‍රකාශකයාට ඉඩ දෙන්න + description_html: මේවා ඔබගේ සේවාදායකය විසින් පළ කිරීම් දකින ගිණුම් මගින් දැනට බොහෝ සෙයින් බෙදා ගන්නා සබැඳි වේ. එය ඔබගේ පරිශීලකයින්ට ලෝකයේ සිදුවෙමින් පවතින දේ සොයා ගැනීමට උදවු කළ හැක. ඔබ ප්‍රකාශකයා අනුමත කරන තුරු සබැඳි කිසිවක් ප්‍රසිද්ධියේ ප්‍රදර්ශනය නොවේ. ඔබට තනි සබැඳිවලට ඉඩ දීමට හෝ ප්‍රතික්ෂේප කිරීමටද හැකිය. + disallow: සබැඳියට ඉඩ නොදෙන්න + disallow_provider: ප්‍රකාශකයාට ඉඩ නොදෙන්න + shared_by_over_week: + one: පසුගිය සතිය පුරා එක් පුද්ගලයෙකු විසින් බෙදා ගන්නා ලදී + other: පසුගිය සතිය පුරා පුද්ගලයින් %{count} දෙනෙකු විසින් බෙදා ගන්නා ලදී + title: නැඟී එන සබැඳි + usage_comparison: ඊයේ %{yesterday} හා සසඳන විට අද %{today} වරක් බෙදා ගන්නා ලදී + only_allowed: අවසර දී ඇත + pending_review: පොරොත්තු සමාලෝචනය + preview_card_providers: + allowed: මෙම ප්‍රකාශකයාගේ සබැඳි නැඹුරු විය හැක + description_html: මේවා බොහෝ විට ඔබගේ සේවාදායකයේ සබැඳි බෙදා ගන්නා වසම් වේ. සබැඳියේ වසම අනුමත කරන්නේ නම් මිස සබැඳි ප්‍රසිද්ධියේ නැඹුරු නොවේ. ඔබගේ අනුමැතිය (හෝ ප්‍රතික්ෂේප කිරීම) උපවසම් දක්වා විහිදේ. + rejected: මෙම ප්‍රකාශකයාගේ සබැඳි නැඹුරු නොවනු ඇත + title: ප්‍රකාශකයන් + rejected: ප්‍රතික්ෂේප කළා + statuses: + allow: පළ කිරීමට ඉඩ දෙන්න + allow_account: කතුවරයාට ඉඩ දෙන්න + description_html: මේ වන විට ඔබේ සේවාදායකය දන්නා පෝස්ට් මේ වන විට බොහෝ බෙදාහරින සහ මේ මොහොතේ වැඩි කැමැත්තක් දක්වයි. එය ඔබගේ නව සහ නැවත පැමිණෙන පරිශීලකයින්ට අනුගමනය කිරීමට තවත් පුද්ගලයින් සොයා ගැනීමට උදවු කළ හැක. ඔබ කර්තෘ අනුමත කරන තෙක් පළ කිරීම් කිසිවක් ප්‍රසිද්ධියේ නොපෙන්වන අතර, කර්තෘ තම ගිණුම අන් අයට යෝජනා කිරීමට ඉඩ දෙයි. ඔබට තනි පළ කිරීම්වලට ඉඩ දීමට හෝ ප්‍රතික්ෂේප කිරීමටද හැකිය. + disallow: පළ කිරීමට ඉඩ නොදෙන්න + disallow_account: කතුවරයාට ඉඩ නොදෙන්න + not_discoverable: කර්තෘ සොයා ගත හැකි බව තෝරාගෙන නැත + shared_by: + one: එක් වරක් බෙදාගත් හෝ ප්‍රිය කරන ලදී + other: "%{friendly_count} වරක් බෙදාගෙන ප්‍රිය කරන ලදී" + title: ප්‍රවණතා පළ කිරීම් + tags: + current_score: වත්මන් ලකුණු %{score} + dashboard: + tag_accounts_measure: අද්විතීය භාවිතයන් + tag_languages_dimension: ඉහළම භාෂා + tag_servers_dimension: ඉහළම සේවාදායකයන් + tag_servers_measure: විවිධ සේවාදායකයන් + tag_uses_measure: සම්පූර්ණ භාවිතය + description_html: මේවා දැනට ඔබගේ සේවාදායකය දකින බොහෝ පළ කිරීම් වල දිස්වන හැෂ් ටැග් වේ. මේ මොහොතේ මිනිසුන් වැඩිපුරම කතා කරන්නේ කුමක් දැයි සොයා ගැනීමට එය ඔබගේ පරිශීලකයින්ට උදවු කළ හැක. ඔබ ඒවා අනුමත කරන තුරු හෑෂ් ටැග් ප්‍රසිද්ධියේ නොපෙන්වයි. + listable: යෝජනා කළ හැක + not_listable: යෝජනා නොකරනු ඇත + not_trendable: ප්‍රවණතා යටතේ දිස් නොවනු ඇත + not_usable: භාවිතා කළ නොහැක + peaked_on_and_decaying: "%{date}හි උච්චතම, දැන් දිරාපත් වෙමින් පවතී" + title: ප්‍රවණතා හැෂ් ටැග් + trendable: ප්රවණතා යටතේ පෙනී සිටිය හැක + trending_rank: 'නැඹුරු #%{rank}' + usable: භාවිතා කළ හැක + usage_comparison: ඊයේ %{yesterday} හා සසඳන විට අද %{today} වරක් භාවිතා වේ + used_by_over_week: + one: පසුගිය සතිය පුරා එක් පුද්ගලයෙකු විසින් භාවිතා කරන ලදී + other: පසුගිය සතිය පුරා පුද්ගලයින් %{count} දෙනෙකු විසින් භාවිතා කරන ලදී + title: ප්රවණතා + trending: ප්රවණතා + warning_presets: + add_new: අලුතින් එකතු කරන්න + delete: මකන්න + edit_preset: අනතුරු ඇඟවීමේ පෙර සැකසුම සංස්කරණය කරන්න + empty: ඔබ තවම කිසිදු අනතුරු ඇඟවීමේ පෙරසිටුවක් නිර්වචනය කර නැත. + title: අනතුරු ඇඟවීමේ පෙරසිටුවීම් කළමනාකරණය කරන්න + webhooks: + add_new: අන්ත ලක්ෂ්‍යය එක් කරන්න + delete: මකන්න + description_html: A webhook Mastodon හට තෝරාගත් සිදුවීම් පිළිබඳ තත්‍ය කාලීන දැනුම්දීම් ක් ඔබේම යෙදුමට තල්ලු කිරීමට හැකියාව ලබා දෙයි, එම නිසා ඔබේ යෙදුමට ස්වයංක්‍රීයව ප්‍රතික්‍රියා අවුලුවාලීමට හැකිය. + disable: අක්රිය කරන්න + disabled: ආබාධිතයි + edit: අන්ත ලක්ෂ්‍යය සංස්කරණය කරන්න + empty: ඔබට තවම වින්‍යාස කර ඇති කිසිදු webhook අන්ත ලක්ෂ්‍යයක් නොමැත. + enable: සබල කරන්න + enabled: ක්රියාකාරී + enabled_events: + one: 1 සබල කළ සිදුවීමක් + other: "%{count} සබල කළ සිදුවීම්" + events: සිදුවීම් + new: නව webhook + rotate_secret: රහස කරකවන්න + secret: අත්සන් කිරීමේ රහස + status: තත්ත්වය + webhook: වෙබ්හුක් + admin_mailer: + new_appeal: + actions: + delete_statuses: ඔවුන්ගේ පළ කිරීම් මකා දැමීමට + disable: ඔවුන්ගේ ගිණුම කැටි කිරීමට + mark_statuses_as_sensitive: ඔවුන්ගේ තනතුරු සංවේදී ලෙස සලකුණු කිරීමට + none: අනතුරු ඇඟවීමක් + sensitive: ඔවුන්ගේ ගිණුම සංවේදී ලෙස සලකුණු කිරීමට + silence: ඔවුන්ගේ ගිණුම සීමා කිරීමට + suspend: ඔවුන්ගේ ගිණුම අත්හිටුවීමට + body: "%{target} යනු %{type}ක් වූ %{date}සිට %{action_taken_by} කින් මධ්‍යස්ථ තීරණයක් අභියාචනා කරයි. ඔවුන් මෙසේ ලිවීය." + next_steps: ඔබට මධ්‍යස්ථ තීරණය අවලංගු කිරීමට අභියාචනය අනුමත කළ හැකිය, නැතහොත් එය නොසලකා හරින්න. + subject: "%{username} යනු %{instance}හි මධ්‍යස්ථ තීරණයකට අභියාචනා කරයි" + new_pending_account: + body: නව ගිණුමේ විස්තර පහතින්. ඔබට මෙම යෙදුම අනුමත කිරීමට හෝ ප්‍රතික්ෂේප කිරීමට හැකිය. + subject: නව ගිණුම සමාලෝචනය සඳහා %{instance} (%{username}) + new_report: + body: "%{reporter} %{target}වාර්තා කර ඇත" + body_remote: "%{domain} සිට යමෙක් %{target}වාර්තා කර ඇත" + subject: "%{instance} සඳහා නව වාර්තාව (#%{id})" + new_trends: + body: 'පහත අයිතම ප්‍රසිද්ධියේ ප්‍රදර්ශනය කිරීමට පෙර සමාලෝචනයක් අවශ්‍ය වේ:' + new_trending_links: + no_approved_links: දැනට අනුමත නැඹුරු සබැඳි නොමැත. + requirements: 'මෙම ඕනෑම අපේක්ෂකයෙකුට #%{rank} අනුමත ප්‍රවණතා සබැඳිය ඉක්මවා යා හැකි අතර, එය දැනට ලකුණු %{lowest_link_score}ක් සමඟින් "%{lowest_link_title}" වේ.' + title: නැඟී එන සබැඳි + new_trending_statuses: + no_approved_statuses: දැනට අනුමත ප්‍රවණතා පළ කිරීම් නොමැත. + requirements: 'මෙම ඕනෑම අපේක්ෂකයෙකුට #%{rank} අනුමත ප්‍රවණතා පළ කිරීම අභිබවා යා හැකි අතර, එය දැනට ලකුණු %{lowest_status_score}ක් සමඟින් %{lowest_status_url} වේ.' + title: ප්‍රවණතා පළ කිරීම් + new_trending_tags: + no_approved_tags: දැනට අනුමත ප්‍රවණතා හැෂ් ටැග් නොමැත. + requirements: 'මෙම ඕනෑම අපේක්ෂකයෙකුට #%{rank} අනුමත ප්‍රවණතා හැෂ් ටැගය අභිබවා යා හැකිය, එය දැනට ලකුණු %{lowest_tag_score}ක් සමඟ #%{lowest_tag_name} වේ.' + title: ප්‍රවණතා හැෂ් ටැග් + subject: "%{instance}හි සමාලෝචනය සඳහා නව ප්‍රවණතා" + aliases: + add_new: අන්වර්ථ නාමයක් සාදන්න + created_msg: නව අන්වර්ථ නාමයක් සාර්ථකව නිර්මාණය කරන ලදී. ඔබට දැන් පැරණි ගිණුමෙන් මාරුවීම ආරම්භ කළ හැක. + deleted_msg: අන්වර්ථය සාර්ථකව ඉවත් කරන ලදී. එම ගිණුමෙන් මෙම ගිණුමට මාරුවීම තවදුරටත් කළ නොහැකි වනු ඇත. + empty: ඔබට අන්වර්ථ නාම නොමැත. + hint_html: ඔබට වෙනත් ගිණුමකින් මෙය වෙත මාරු වීමට අවශ්‍ය නම්, මෙහිදී ඔබට අන්වර්ථ නාමයක් සෑදිය හැක, එය පැරණි ගිණුමෙන් අනුගාමිකයින් මෙම ගිණුමට ගෙන යාමට පෙර අවශ්‍ය වේ. මෙම ක්‍රියාවම හානිකර නොවන සහ ආපසු හැරවිය හැකිවේ. ගිණුම් සංක්‍රමණය පැරණි ගිණුමෙන් ආරම්භ වේ. + remove: අන්වර්ථය විසන්ධි කරන්න appearance: advanced_web_interface: උසස් වියමන අතුරුමුහුණත + advanced_web_interface_hint: 'ඔබට ඔබේ සම්පූර්ණ තිරයේ පළල භාවිතා කිරීමට අවශ්‍ය නම්, උසස් වෙබ් අතුරු මුහුණත ඔබට අවශ්‍ය පරිදි එකම වේලාවක බොහෝ තොරතුරු බැලීමට විවිධ තීරු වින්‍යාස කිරීමට ඉඩ දෙයි: නිවස, දැනුම්දීම්, ෆෙඩරේටඩ් කාලරාමුව, ඕනෑම ලැයිස්තු සහ හැෂ් ටැග්.' + animations_and_accessibility: සජීවිකරණ සහ ප්‍රවේශ්‍යතාව + confirmation_dialogs: තහවුරු කිරීමේ සංවාද + discovery: සොයාගැනීම localization: + body: Mastodon ස්වේච්ඡා සේවකයන් විසින් පරිවර්තනය කර ඇත. guide_link: https://crowdin.com/project/mastodon - sensitive_content: සංවේදී අන්තර්ගතයකි + guide_link_text: සෑම කෙනෙකුටම දායක විය හැකිය. + sensitive_content: සංවේදී අන්තර්ගතය + toot_layout: පෝස්ට් පිරිසැලසුම application_mailer: + notification_preferences: ඊමේල් මනාප වෙනස් කරන්න salutation: "%{name}," + settings: 'ඊමේල් මනාප වෙනස් කරන්න: %{link}' + view: 'දැක්ම:' + view_profile: පැතිකඩ බලන්න + view_status: පළ කිරීම බලන්න + applications: + created: යෙදුම සාර්ථකව නිර්මාණය කරන ලදී + destroyed: යෙදුම සාර්ථකව මකා ඇත + regenerate_token: ප්‍රවේශ ටෝකනය නැවත උත්පාදනය කරන්න + token_regenerated: ප්‍රවේශ ටෝකනය සාර්ථකව ප්‍රතිජනනය කරන ලදී + warning: මෙම දත්ත සමඟ ඉතා ප්රවේශම් වන්න. එය කිසි විටෙක කිසිවෙකු සමඟ බෙදා නොගන්න! + your_token: ඔබේ ප්‍රවේශ ටෝකනය auth: + apply_for_account: ආරාධනාවක් ඉල්ලන්න change_password: මුර පදය + checkbox_agreement_html: මම සේවාදායක රීති සහ සේවා නියමට එකඟ වෙමි + checkbox_agreement_without_rules_html: මම සේවා කොන්දේසි එකඟ වෙමි + delete_account: ගිණුම මකන්න + delete_account_html: ඔබට ඔබගේ ගිණුම මකා දැමීමට අවශ්‍ය නම්, ඔබට මෙතැනින් ඉදිරියට යා හැක. තහවුරු කිරීම සඳහා ඔබෙන් අසනු ඇත. + description: + prefix_invited_by_user: "@%{name} ඔබට Mastodon හි මෙම සේවාදායකයට සම්බන්ධ වීමට ආරාධනා කරයි!" + prefix_sign_up: අදම Mastodon හි ලියාපදිංචි වන්න! + suffix: ගිණුමක් සමඟ, ඔබට ඕනෑම Mastodon සේවාදායකයකින් සහ තවත් බොහෝ දේ භාවිතා කරන්නන් සමඟ පුද්ගලයින් අනුගමනය කිරීමට, යාවත්කාලීන කිරීම් පළ කිරීමට සහ පණිවිඩ හුවමාරු කර ගැනීමට හැකි වනු ඇත! + didnt_get_confirmation: තහවුරු කිරීමේ උපදෙස් ලැබුණේ නැද්ද? + dont_have_your_security_key: ඔබගේ ආරක්ෂක යතුර නොමැතිද? + forgot_password: මුරපදය අමතක වුනාද? + invalid_reset_password_token: මුරපද යළි පිහිටුවීමේ ටෝකනය අවලංගු හෝ කල් ඉකුත් වී ඇත. කරුණාකර අලුත් එකක් ඉල්ලන්න. + link_to_otp: ඔබගේ දුරකථනයෙන් ද්වි සාධක කේතයක් හෝ ප්‍රතිසාධන කේතයක් ඇතුළු කරන්න + link_to_webauth: ඔබගේ ආරක්ෂක යතුරු උපාංගය භාවිතා කරන්න + log_in_with: සමඟ ලොග් වන්න login: පිවිසෙන්න logout: නික්මෙන්න - or_log_in_with: හෝ සමඟ පිවිසෙන්න + migrate_account: වෙනත් ගිණුමකට යන්න + migrate_account_html: ඔබට මෙම ගිණුම වෙනත් එකකට හරවා යැවීමට අවශ්‍ය නම්, ඔබට එය මෙහි වින්‍යාසගත කළ හැක. + or_log_in_with: හෝ සමඟින් පිවිසෙන්න + register: ලියාපදිංචි වන්න + registration_closed: "%{instance} නව සාමාජිකයින් පිළිගන්නේ නැත" + resend_confirmation: තහවුරු කිරීමේ උපදෙස් නැවත යවන්න + reset_password: මුරපදය නැවත සකසන්න security: ආරක්ෂාව + set_new_password: නව මුරපදය සකසන්න + setup: + email_below_hint_html: පහත විද්‍යුත් තැපැල් ලිපිනය වැරදි නම්, ඔබට එය මෙතැනින් වෙනස් කර නව තහවුරු කිරීමේ විද්‍යුත් තැපෑලක් ලබා ගත හැක. + email_settings_hint_html: තහවුරු කිරීමේ විද්‍යුත් තැපෑල %{email}වෙත යවන ලදී. එම විද්‍යුත් තැපැල් ලිපිනය නිවැරදි නොවේ නම්, ඔබට එය ගිණුම් සැකසුම් තුළ වෙනස් කළ හැක. + title: සැලසුම status: account_status: ගිණුමේ තත්වය + confirming: විද්‍යුත් තැපෑල තහවුරු කිරීම සම්පූර්ණ කිරීම සඳහා රැඳී සිටිමින්. + functional: ඔබගේ ගිණුම සම්පුර්ණයෙන්ම ක්‍රියාත්මකයි. + pending: ඔබගේ අයදුම්පත අපගේ කාර්ය මණ්ඩලය විසින් සමාලෝචනය කිරීමට බලාපොරොත්තු වේ. මෙය යම් කාලයක් ගත විය හැක. ඔබගේ අයදුම්පත අනුමත වුවහොත් ඔබට විද්‍යුත් තැපෑලක් ලැබෙනු ඇත. + redirecting_to: එය දැනට %{acct}වෙත හරවා යවන බැවින් ඔබගේ ගිණුම අක්‍රියයි. + view_strikes: ඔබගේ ගිණුමට එරෙහිව පසුගිය වර්ජන බලන්න + too_fast: පෝරමය ඉතා වේගයෙන් ඉදිරිපත් කර ඇත, නැවත උත්සාහ කරන්න. + trouble_logging_in: පුරනය වීමේ ගැටලුවක්ද? + use_security_key: ආරක්ෂක යතුර භාවිතා කරන්න authorize_follow: + already_following: ඔබ දැනටමත් මෙම ගිණුම අනුගමනය කරයි + already_requested: ඔබ දැනටමත් එම ගිණුමට අනුගමනය ඉල්ලීමක් යවා ඇත + error: අවාසනාවකට, දුරස්ථ ගිණුම සෙවීමේදී දෝෂයක් ඇති විය + follow: අනුගමනය කරන්න + follow_request: 'ඔබ පහත ඉල්ලීමක් යවා ඇත:' + following: 'සාර්ථකත්වය! ඔබ දැන් පහත දැක්වේ:' post_follow: close: හෝ ඔබට මෙම කවුළුව වසාදැමිය හැකිය. return: පරිශීලකගේ පැතිකඩ පෙන්වන්න web: වියමන ට යන්න + title: "%{acct}අනුගමනය කරන්න" challenge: confirm: ඉදිරියට - invalid_password: අවලංගු නොවන මුරපදයකි + hint_html: "ඉඟිය: අපි ඉදිරි පැය සඳහා නැවත ඔබගේ මුරපදය ඔබෙන් නොඉල්ලමු." + invalid_password: නොවන මුරපදයකි + prompt: ඉදිරියට යාමට මුරපදය තහවුරු කරන්න + crypto: + errors: + invalid_key: වලංගු Ed25519 හෝ Curve25519 යතුරක් නොවේ + invalid_signature: වලංගු Ed25519 අත්සනක් නොවේ date: formats: default: "%b %d, %Y" with_month_name: "%B %d, %Y" datetime: distance_in_words: + about_x_hours: පැය %{count} + about_x_months: මාස %{count} + half_a_minute: මේ දැන් + less_than_x_minutes: මීටර් %{count} less_than_x_seconds: මේ දැන් + x_minutes: මීටර් %{count} + x_months: මාස %{count} + x_seconds: "%{count}තත්" + deletes: + challenge_not_passed: ඔබ ඇතුළත් කළ තොරතුරු නිවැරදි නැත + confirm_password: ඔබගේ අනන්‍යතාවය තහවුරු කිරීමට ඔබගේ වත්මන් මුරපදය ඇතුලත් කරන්න + confirm_username: ක්රියා පටිපාටිය තහවුරු කිරීමට ඔබගේ පරිශීලක නාමය ඇතුලත් කරන්න + proceed: ගිණුම මකන්න + success_msg: ඔබගේ ගිණුම සාර්ථකව මකා ඇත + warning: + before: 'ඉදිරියට යාමට පෙර, කරුණාකර මෙම සටහන් හොඳින් කියවන්න:' + caches: වෙනත් සේවාදායකයන් විසින් හැඹිලිගත කර ඇති අන්තර්ගතය දිගටම පැවතිය හැක + data_removal: ඔබගේ පළ කිරීම් සහ අනෙකුත් දත්ත ස්ථිරවම ඉවත් කරනු ලැබේ + email_change_html: ඔබට ඔබගේ ගිණුම මකා කළ හැක + email_contact_html: එය තවමත් නොපැමිණියේ නම්, ඔබට උදව් සඳහා %{email} විද්‍යුත් තැපෑලෙන් යැවිය හැක + email_reconfirmation_html: ඔබට තහවුරු කිරීමේ විද්‍යුත් තැපෑල නොලැබුනේ නම්, ඔබට එය නැවත ඉල්ලා සිටිය හැක + irreversible: ඔබට ඔබගේ ගිණුම ප්‍රතිසාධනය කිරීමට හෝ නැවත සක්‍රිය කිරීමට නොහැකි වනු ඇත + more_details_html: වැඩි විස්තර සඳහා, පෞද්ගලිකත්ව ප්‍රතිපත්තියබලන්න. + username_available: ඔබගේ පරිශීලක නාමය නැවත ලබා ගත හැකි වනු ඇත + username_unavailable: ඔබගේ පරිශීලක නාමය නොතිබෙනු ඇත + directories: + directory: පැතිකඩ නාමාවලිය + explanation: ඔවුන්ගේ රුචිකත්වයන් මත පදනම්ව පරිශීලකයින් සොයා ගන්න + explore_mastodon: "%{title}ගවේෂණය කරන්න" + disputes: + strikes: + action_taken: පියවර ගත්තා + appeal: අභියාචනය + appeal_approved: මෙම වර්ජනය සාර්ථකව අභියාචනා කර ඇති අතර එය තවදුරටත් වලංගු නොවේ + appeal_rejected: අභියාචනය ප්‍රතික්ෂේප කර ඇත + appeal_submitted_at: අභියාචනය ඉදිරිපත් කරන ලදී + appealed_msg: ඔබගේ අභියාචනය ඉදිරිපත් කර ඇත. එය අනුමත වුවහොත්, ඔබට දැනුම් දෙනු ලැබේ. + appeals: + submit: අභියාචනය ඉදිරිපත් කරන්න + approve_appeal: අභියාචනය අනුමත කරන්න + associated_report: ආශ්රිත වාර්තාව + created_at: දිනැති + description_html: මේවා ඔබගේ ගිණුමට එරෙහිව ගන්නා ලද ක්‍රියා සහ %{instance}හි කාර්ය මණ්ඩලය විසින් ඔබට එවා ඇති අනතුරු ඇඟවීම් වේ. + recipient: වෙත යොමු කරන ලදී + reject_appeal: අභියාචනය ප්‍රතික්ෂේප කරන්න + status: 'පළ කිරීම #%{id}' + status_removed: පළ කිරීම දැනටමත් පද්ධතියෙන් ඉවත් කර ඇත + title: "%{action} සිට %{date}" + title_actions: + delete_statuses: පසු ඉවත් කිරීම + disable: ගිණුම කැටි කිරීම + mark_statuses_as_sensitive: තනතුරු සංවේදී ලෙස සලකුණු කිරීම + none: අවවාදයයි + sensitive: ගිණුම සංවේදී ලෙස සලකුණු කිරීම + silence: ගිණුම සීමා කිරීම + suspend: ගිණුම අත්හිටුවීම + your_appeal_approved: ඔබගේ අභියාචනය අනුමත කර ඇත + your_appeal_pending: ඔබ අභියාචනයක් ඉදිරිපත් කර ඇත + your_appeal_rejected: ඔබගේ අභියාචනය ප්‍රතික්ෂේප කර ඇත + domain_validator: + invalid_domain: වලංගු ඩොමේන් නාමයක් නොවේ errors: - '400': The request you submitted was invalid or malformed. - '403': You don't have permission to view this page. - '404': The page you are looking for isn't here. - '406': This page is not available in the requested format. - '410': The page you were looking for doesn't exist here anymore. - '422': - '429': Too many requests - '500': - '503': The page could not be served due to a temporary server failure. + '400': ඔබ ඉදිරිපත් කළ ඉල්ලීම අවලංගු හෝ විකෘති විය. + '403': ඔබට මෙම පිටුව බැලීමට අවසර නැත. + '404': ඔබ සොයන පිටුව මෙහි නොමැත. + '406': මෙම පිටුව ඉල්ලන ලද ආකෘතියෙන් නොමැත. + '410': ඔබ සොයන පිටුව තවදුරටත් මෙහි නොමැත. + '422': + content: ආරක්ෂක සත්‍යාපනය අසාර්ථක විය. ඔබ කුකීස් අවහිර කරනවාද? + title: ආරක්ෂක සත්‍යාපනය අසාර්ථක විය + '429': ඉල්ලීම් වැඩියි + '500': + content: අපට කණගාටුයි, නමුත් අපගේ පැත්තෙන් යමක් වැරදී ඇත. + title: මෙම පිටුව නිවැරදි නොවේ + '503': තාවකාලික සේවාදායකයේ අසාර්ථක වීමක් හේතුවෙන් පිටුව සේවය කිරීමට නොහැකි විය. + noscript_html: Mastodon වෙබ් යෙදුම භාවිතා කිරීමට, කරුණාකර JavaScript සක්‍රීය කරන්න. විකල්පයක් ලෙස, ඔබේ වේදිකාව සඳහා එකක් උත්සාහ කරන්න. + existing_username_validator: + not_found: එම පරිශීලක නාමය සහිත දේශීය පරිශීලකයෙකු සොයා ගැනීමට නොහැකි විය + not_found_multiple: "%{usernames}සොයා ගැනීමට නොහැකි විය" exports: archive_takeout: date: දිනය - download: ඔබගේ සංරක්ෂිතය බාගන්න + download: ඔබගේ සුරක්ෂිතභාවය බාගන්න + hint_html: ඔබට ඔබගේ පළ කිරීම් සහ උඩුගත කළ මාධ්‍යහි සංරක්ෂිතයක් ඉල්ලා සිටිය හැක. නිර්යාත කළ දත්ත ActivityPub ආකෘතියෙන්, ඕනෑම අනුකූල මෘදුකාංගයකට කියවිය හැකිය. ඔබට දින 7කට වරක් ලේඛනාගාරයක් ඉල්ලා සිටිය හැක. + in_progress: ඔබගේ සංරක්ෂිතය සම්පාදනය කරමින්... + request: ඔබගේ සංරක්ෂිතය ඉල්ලන්න size: ප්‍රමාණය - bookmarks: පොත් යොමු - lists: ලැයිස්තු + blocks: ඔබ අවහිර කරන්න + bookmarks: පොත් යොමු කරන්න + domain_blocks: වසම් අවහිර කිරීම් + lists: ලැයිස්තුව + mutes: ඔබ නිහඬ කරන්න storage: මාධ්‍ය ගබඩාව + featured_tags: + add_new: අලුතින් එකතු කරන්න + errors: + limit: ඔබ දැනටමත් උපරිම හෑෂ් ටැග් ප්‍රමාණය විශේෂාංග කර ඇත + hint_html: "විශේෂාංගගත හැෂ් ටැග් මොනවාද? ඒවා ඔබේ පොදු පැතිකඩෙහි ප්‍රමුඛව ප්‍රදර්ශනය වන අතර එම හැෂ් ටැග් යටතේ ඔබේ පොදු පළ කිරීම් බ්‍රවුස් කිරීමට මිනිසුන්ට ඉඩ සලසයි. නිර්මාණාත්මක කෘති හෝ දිගු කාලීන ව්යාපෘති පිළිබඳ වාර්තාවක් තබා ගැනීම සඳහා ඔවුන් විශිෂ්ට මෙවලමක් වේ." filters: contexts: account: පැතිකඩයන් + home: නිවස සහ ලැයිස්තු notifications: දැනුම්දීම් + public: පොදු කාලරේඛා thread: සංවාද edit: + add_keyword: මූල පදය එක් කරන්න + keywords: මූල පද title: පෙරහන සංස්කරණය + errors: + deprecated_api_multiple_keywords: මෙම පරාමිති පෙරහන් මූල පද එකකට වඩා අදාළ වන බැවින් මෙම යෙදුමෙන් වෙනස් කළ නොහැක. වඩාත් මෑත යෙදුමක් හෝ වෙබ් අතුරු මුහුණතක් භාවිතා කරන්න. + invalid_context: කිසිවක් හෝ වලංගු නොවන සන්දර්භයක් සපයා නැත index: + contexts: "%{contexts}හි පෙරහන්" + delete: මකන්න + empty: ඔබට පෙරහන් නොමැත. + expires_in: "%{distance}කින් කල් ඉකුත් වේ" + expires_on: "%{date}දින කල් ඉකුත් වේ" + keywords: + one: "%{count} මූල පදය" + other: "%{count} මූල පද" title: පෙරහන් new: + save: නව පෙරහන සුරකින්න title: නව පෙරහනක් එකතු කරන්න footer: developers: සංවර්ධකයින් more: තව… resources: සම්පත් + trending_now: දැන් ප්‍රවණතාවය generic: all: සියල්ල + changes_saved_msg: වෙනස්කම් සාර්ථකව සුරකින ලදී! copy: පිටපත් + delete: මකන්න + none: කිසිවක් නැත + order_by: විසින් ඇණවුම් කරන්න save_changes: වෙනස්කම් සුරකින්න + today: අද + validation_errors: + one: යමක් තවමත් හරි නැත! කරුණාකර පහත දෝෂය සමාලෝචනය කරන්න + other: යමක් තවමත් හරි නැත! කරුණාකර පහත දෝෂ %{count} ක් සමාලෝචනය කරන්න + html_validator: + invalid_markup: 'වලංගු නොවන HTML සලකුණු අඩංගු වේ: %{error}' imports: + errors: + over_rows_processing_limit: පේළි %{count} කට වඩා අඩංගු වේ + modes: + merge: ඒකාබද්ධ කරන්න + merge_long: පවතින වාර්තා තබා නව ඒවා එකතු කරන්න + overwrite: උඩින් ලියන්න + overwrite_long: වත්මන් වාර්තා නව ඒවා සමඟ ප්‍රතිස්ථාපනය කරන්න + preface: ඔබ අනුගමන කරන හෝ අවහිර කරන පුද්ගලයින්ගේ ලැයිස්තුවක් වැනි වෙනත් සේවාදායකයකින් ඔබ නිර්යාත කර ඇති දත්ත ඔබට ආයාත කළ හැක. + success: ඔබගේ දත්ත සාර්ථකව උඩුගත කර ඇති අතර නියමිත වේලාවට සැකසෙනු ඇත types: - bookmarks: පොත් යොමු + blocking: අවහිර කිරීමේ ලැයිස්තුව + bookmarks: පොත් යොමු කරන්න + domain_blocking: වසම් අවහිර කිරීමේ ලැයිස්තුව + following: පහත ලැයිස්තුව + muting: නිහඬ කිරීමේ ලැයිස්තුව upload: උඩුගත කරන්න + in_memoriam_html: මතකය තුළ. invites: + delete: අක්රිය කරන්න + expired: කල් ඉකුත් වී ඇත expires_in: '1800': විනාඩි 30 '21600': හෝරා 6 @@ -300,29 +1166,214 @@ si: '43200': හෝරා 12 '604800': සති 1 '86400': දවස් 1 + expires_in_prompt: කවදාවත් නැහැ + generate: ආරාධනා සබැඳිය උත්පාදනය කරන්න + invited_by: 'ඔබට ආරාධනා කළේ:' + max_uses: + one: 1 භාවිතය + other: "%{count} භාවිතා කරයි" + max_uses_prompt: සීමාවක් නැත + prompt: මෙම සේවාදායකයට ප්‍රවේශය ලබා දීමට අන් අය සමඟ සබැඳි ජනනය කර බෙදා ගන්න + table: + expires_at: කල් ඉකුත් වේ + uses: භාවිතා කරයි title: මිනිසුන්ට ආරාධනා කරන්න + lists: + errors: + limit: ඔබ උපරිම ලැයිස්තු ප්‍රමාණයට ළඟා වී ඇත login_activities: authentication_methods: + otp: ද්වි-සාධක සත්‍යාපන යෙදුම password: මුර පදය + sign_in_token: ඊමේල් ආරක්ෂක කේතය + webauthn: ආරක්ෂක යතුරු + description_html: ඔබ හඳුනා නොගත් ක්‍රියාකාරකම් ඔබ දුටුවහොත්, ඔබේ මුරපදය වෙනස් කිරීම සහ ද්වි-සාධක සත්‍යාපනය සක්‍රීය කිරීම සලකා බලන්න. + empty: සත්‍යාපන ඉතිහාසයක් නොමැත + failed_sign_in_html: "%{ip} (%{browser}) සිට %{method} සමඟ අසාර්ථක පුරනය වීමේ උත්සාහය" + successful_sign_in_html: "%{ip} (%{browser}) සිට %{method} සමඟ සාර්ථක පුරනය වීම" + title: සත්‍යාපන ඉතිහාසය + media_attachments: + validations: + images_and_video: දැනටමත් පින්තූර අඩංගු පළ කිරීමකට වීඩියෝවක් ඇමිණිය නොහැක + not_ready: සැකසීම අවසන් නොකළ ගොනු ඇමිණිය නොහැක. මොහොතකින් නැවත උත්සාහ කරන්න! + too_many: ගොනු 4කට වඩා ඇමිණිය නොහැක + migrations: + acct: වෙත ගෙන යන ලදී + cancel: යළි-යොමුවීම් අවලංගු කරන්න + cancel_explanation: යළි-යොමුවීම් අවලංගු කිරීම ඔබගේ ජංගම ගිණුම නැවත සක්‍රිය කරනු ඇත, නමුත් එම ගිණුමට ගෙන ගිය අනුගාමිකයින් ආපසු ගෙන එන්නේ නැත. + cancelled_msg: යළි-යොමුවීම සාර්ථකව අවලංගු කරන ලදී. + errors: + already_moved: ඔබ දැනටමත් මාරු කර ඇති ගිණුමයි + missing_also_known_as: මෙම ගිණුමේ අන්වර්ථ නාමයක් නොවේ + move_to_self: ජංගම ගිණුම විය නොහැක + not_found: සොයා ගැනීමට නොහැකි විය + on_cooldown: ඔබ සිසිලනය මත සිටී + followers_count: චලනය වන අවස්ථාවේ අනුගාමිකයන් + incoming_migrations: වෙනත් ගිණුමකින් මාරු වීම + incoming_migrations_html: වෙනත් ගිණුමකින් මෙම ගිණුමට මාරු වීමට, පළමුව ඔබ අන්වර්ථගිණුමක් සෑදිය යුතුය. + moved_msg: ඔබගේ ගිණුම දැන් %{acct} වෙත හරවා යවනු ලබන අතර ඔබගේ අනුගාමිකයින් එහා මෙහා ගෙන යමින් පවතී. + not_redirecting: ඔබගේ ගිණුම දැනට වෙනත් කිසිදු ගිණුමකට හරවා යවන්නේ නැත. + on_cooldown: ඔබ මෑතකදී ඔබගේ ගිණුම සංක්‍රමණය කර ඇත. මෙම කාර්යය දින %{count} කින් නැවත ලබා ගත හැකි වනු ඇත. + past_migrations: අතීත සංක්‍රමණ + proceed_with_move: අනුගාමිකයන් මාරු කරන්න + redirected_msg: ඔබගේ ගිණුම දැන් %{acct}වෙත හරවා යවනු ලැබේ. + redirecting_to: ඔබගේ ගිණුම %{acct}වෙත හරවා යවනු ලැබේ. + set_redirect: යළි-යොමුවීම් සකසන්න + warning: + backreference_required: නව ගිණුම ප්‍රථමයෙන් මෙය ආපසු යොමු කිරීමට වින්‍යාස කළ යුතුය + before: 'ඉදිරියට යාමට පෙර, කරුණාකර මෙම සටහන් හොඳින් කියවන්න:' + cooldown: මාරු වීමෙන් පසු ඔබට නැවත ගමන් කිරීමට නොහැකි වනු ඇති පොරොත්තු කාල සීමාවක් ඇත + disabled_account: ඔබගේ ජංගම ගිණුම පසුව සම්පූර්ණයෙන්ම භාවිතා කළ නොහැක. කෙසේ වෙතත්, ඔබට දත්ත අපනයනයට මෙන්ම නැවත සක්‍රිය කිරීමට ප්‍රවේශය ඇත. + followers: මෙම ක්‍රියාව සියළුම අනුගාමිකයින් ජංගම ගිණුමේ සිට නව ගිණුමට ගෙන යනු ඇත + only_redirect_html: විකල්පයක් ලෙස, ඔබට ඔබගේ පැතිකඩහි යළි-යොමුවීමක් පමණක් තැබිය හැකිය. + other_data: වෙනත් දත්ත කිසිවක් ස්වයංක්‍රීයව ගෙන නොයනු ඇත + redirect: ඔබගේ ජංගම ගිණුමේ පැතිකඩ යළි-යොමු කිරීමේ දැන්වීමක් සමඟ යාවත්කාලීන කෙරෙන අතර සෙවුම් වලින් බැහැර කරනු ලැබේ + moderation: + title: මධ්යස්ථභාවය + move_handler: + carry_blocks_over_text: මෙම පරිශීලකයා ඔබ අවහිර කර තිබූ %{acct}සිට මාරු විය. + carry_mutes_over_text: මෙම පරිශීලකයා ඔබ නිශ්ශබ්ද කර තිබූ %{acct}වෙතින් මාරු විය. + copy_account_note_text: 'මෙම පරිශීලකයා %{acct}සිට මාරු විය, මෙන්න ඔවුන් ගැන ඔබේ පෙර සටහන්:' notification_mailer: + admin: + report: + subject: "%{name} වාර්තාවක් ඉදිරිපත් කළේය" + sign_up: + subject: "%{name} අත්සන් කර ඇත" + digest: + action: සියලුම දැනුම්දීම් බලන්න + body: "%{since}වෙනිදා ඔබගේ අවසන් සංචාරයේ සිට ඔබට මග හැරුණු පණිවිඩවල කෙටි සාරාංශයක් මෙන්න" + mention: "%{name} ඔබව සඳහන් කළේ:" + new_followers_summary: + one: එසේම, ඔබ බැහැරව සිටියදී එක් නව අනුගාමිකයෙකු ලබා ගෙන ඇත! Yay! + other: එසේම, ඔබ බැහැරව සිටියදී නව අනුගාමිකයින් %{count} ක් ලබාගෙන ඇත! අරුම පුදුම! + subject: + one: "ඔබගේ අවසන් සංචාරයේ සිට 1 නව දැනුම්දීමක් 🐘" + other: "ඔබගේ අවසන් සංචාරයේ සිට නව දැනුම්දීම් %{count} ක් 🐘" + title: ඔබ නොමැති විට... + favourite: + body: 'ඔබේ පළ කිරීම %{name}විසින් ප්‍රිය කරන ලදී:' + subject: "%{name} ඔබගේ පළ කිරීම ප්‍රිය කරන ලදී" + title: නව ප්රියතම + follow: + body: "%{name} දැන් ඔබව අනුගමනය කරයි!" + subject: "%{name} දැන් ඔබව අනුගමනය කරයි" + title: නව අනුගාමිකයෙක් + follow_request: + action: අනුගමනය කරන ඉල්ලීම් කළමනාකරණය කරන්න + body: "%{name} ඔබව අනුගමනය කිරීමට ඉල්ලා ඇත" + subject: 'පොරොත්තු අනුගාමිකයා: %{name}' + title: නව අනුගමනය ඉල්ලීම mention: action: පිළිතුර + body: 'ඔබව මෙහි %{name} කින් සඳහන් කර ඇත:' + subject: ඔබව %{name}මගින් සඳහන් කර ඇත title: නව සඳැහුම + poll: + subject: "%{name} න් මත විමසුමක් අවසන් විය" + reblog: + body: 'ඔබේ පළ කිරීම %{name}කින් වැඩි කරන ලදී:' + subject: "%{name} ඔබේ පළ කිරීම ඉහළ නැංවීය" + title: නව තල්ලුවක් + status: + subject: "%{name} දැන් පළ කළා" + update: + subject: "%{name} පළ කිරීමක් සංස්කරණය කළා" notifications: + email_events: ඊමේල් දැනුම්දීම් සඳහා සිදුවීම් + email_events_hint: 'ඔබට දැනුම්දීම් ලැබීමට අවශ්‍ය සිදුවීම් තෝරන්න:' other_settings: වෙනත් දැනුම්දීම් සැකසුම් number: human: decimal_units: format: "%n%u" + units: + billion: බී + million: එම් + quadrillion: ප්‍රශ්නය + thousand: කේ + trillion: ටී otp_authentication: + code_hint: තහවුරු කිරීමට ඔබගේ සත්‍යාපන යෙදුම මගින් ජනනය කරන ලද කේතය ඇතුළු කරන්න + description_html: ඔබ සත්‍යාපන යෙදුමක් භාවිතයෙන් ද්වි-සාධක සත්‍යාපනය සක්‍රීය කරන්නේ නම්, ලොගින් වීමේදී ඔබට ඔබගේ දුරකථනය සන්තකයේ තබා ගැනීමට අවශ්‍ය වනු ඇත, එය ඔබට ඇතුළු වීමට ටෝකන ජනනය කරයි. enable: සබල කරන්න + instructions_html: "මෙම QR කේතය ඔබගේ දුරකථනයේ Google Authenticator හෝ එවැනිම TOTP යෙදුමකට පරිලෝකනය කරන්න. මෙතැන් සිට, එම යෙදුම ඔබට ලොග් වීමේදී ඇතුළත් කළ යුතු ටෝකන ජනනය කරයි." + manual_instructions: 'ඔබට QR කේතය පරිලෝකනය කළ නොහැකි නම් සහ එය අතින් ඇතුල් කිරීමට අවශ්‍ය නම්, මෙන්න සරල පෙළ රහස:' + setup: සැලසුම + wrong_code: ඇතුළත් කළ කේතය අවලංගුයි! සේවාදායක වේලාව සහ උපාංග වේලාව නිවැරදිද? pagination: - next: ඊළඟ + newer: අලුත් + next: සඳහා + older: වැඩිහිටි + prev: පෙර truncate: "…" + polls: + errors: + already_voted: ඔබ දැනටමත් මෙම මත විමසුමට ඡන්දය දී ඇත + duplicate_options: අනුපිටපත් අයිතම අඩංගු වේ + duration_too_long: අනාගතයට බොහෝ දුරයි + duration_too_short: ඉතා ඉක්මනින් වේ + expired: මත විමසුම දැනටමත් අවසන් වී ඇත + invalid_choice: තෝරාගත් ඡන්ද විකල්පය නොපවතී + over_character_limit: එක් එක් අක්ෂර %{max} ට වඩා දිගු විය නොහැක + too_few_options: එක් අයිතමයකට වඩා තිබිය යුතුය + too_many_options: අයිතම %{max} කට වඩා අඩංගු විය නොහැක + preferences: + other: වෙනත් + posting_defaults: පෙරනිමි පළ කිරීම + public_timelines: පොදු කාලරේඛා + reactions: + errors: + limit_reached: විවිධ ප්‍රතික්‍රියා වල සීමාව ළඟා විය + unrecognized_emoji: පිළිගත් ඉමොජියක් නොවේ relationships: activity: ගිණුමේ ක්‍රියාකාරකම් - status: ගිණුමේ තත්වය + dormant: නිදිමතයි + follow_selected_followers: තෝරාගත් අනුගාමිකයින් අනුගමනය කරන්න + followers: අනුගාමිකයින් + following: අනුගමනය + invited: ආරාධනා කළා + last_active: අවසන් වරට ක්‍රියාකාරී + most_recent: මෑතකාලීන + moved: මාරු කළා + mutual: අන්යෝන්ය + primary: ප්රාථමික + relationship: සම්බන්ධතාවය + remove_selected_domains: තෝරාගත් වසම් වලින් සියලුම අනුගාමිකයින් ඉවත් කරන්න + remove_selected_followers: තෝරාගත් අනුගාමිකයින් ඉවත් කරන්න + remove_selected_follows: තෝරාගත් පරිශීලකයින් අනුගමනය නොකරන්න + status: ගිණුමේ තත්ත්වය + remote_follow: + acct: ඔබට ක්‍රියා කිරීමට අවශ්‍ය ඔබගේ username@domain ඇතුලත් කරන්න + missing_resource: ඔබගේ ගිණුම සඳහා අවශ්‍ය යළි-යොමුවීම් URL එක සොයා ගැනීමට නොහැකි විය + no_account_html: ගිණුමක් නැද්ද? ඔබට මෙහි ලියාපදිංචි විය හැක + proceed: අනුගමනය කිරීමට ඉදිරියට යන්න + prompt: 'ඔබ අනුගමනය කිරීමට යන්නේ:' + reason_html: "මෙම පියවර අවශ්ය වන්නේ ඇයි? %{instance} ඔබ ලියාපදිංචි වී ඇති සේවාදායකය නොවිය හැක, එබැවින් අපට පළමුව ඔබව ඔබගේ නිවසේ සේවාදායකය වෙත හරවා යැවිය යුතුය." + remote_interaction: + favourite: + proceed: ප්රියතම වෙත ඉදිරියට යන්න + prompt: 'ඔබට මෙම පෝස්ටය ප්‍රියතම කිරීමට අවශ්‍යයි:' + reblog: + proceed: වැඩි කිරීමට ඉදිරියට යන්න + prompt: 'ඔබට මෙම පළ කිරීම වැඩි කිරීමට අවශ්‍යයි:' + reply: + proceed: පිළිතුරු දීමට ඉදිරියට යන්න + prompt: 'ඔබට මෙම පළ කිරීමට පිළිතුරු දීමට අවශ්‍යයි:' + reports: + errors: + invalid_rules: වලංගු නීති සඳහන් නොකරයි + rss: + content_warning: 'අන්තර්ගත අනතුරු ඇඟවීම:' + descriptions: + account: "@%{acct}සිට පොදු පළ කිරීම්" + tag: "#%{hashtag}ටැග් කර ඇති පොදු පළ කිරීම්" + scheduled_statuses: + over_daily_limit: ඔබ අද දිනට නියමිත පළ කිරීම් %{limit} සීමාව ඉක්මවා ඇත + over_total_limit: ඔබ නියමිත පළ කිරීම් %{limit} සීමාව ඉක්මවා ඇත + too_soon: නියමිත දිනය අනාගතයේ විය යුතුය sessions: + activity: අවසාන ක්‍රියාකාරකම browser: අතිරික්සුව browsers: alipay: අලිපේ @@ -334,41 +1385,264 @@ si: generic: නොදන්නා අතිරික්සුවකි ie: ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් micro_messenger: මයික්‍රොමැසෙන්ජර් + nokia: Nokia S40 Ovi බ්‍රව්සරය opera: ඔපෙරා otter: ඔටර් qq: කියුකියු අතිරික්සුව safari: සෆාරි uc_browser: යූසී අතිරික්සුව weibo: වෙයිබො + current_session: වත්මන් සැසිය + description: "%{browser} මත %{platform}" + explanation: මේවා දැනට ඔබගේ Mastodon ගිණුමට ලොග් වී ඇති වෙබ් බ්‍රව්සර් වේ. ip: අ.ජා. කෙ. (IP) platforms: adobe_air: ඇඩෝබි එයාර් android: ඇන්ඩ්‍රොයිඩ් blackberry: බ්ලැක්බෙරි - chrome_os: ක්‍රෝම් ඕඑස් + chrome_os: ක්‍රෝම්ස් firefox_os: ෆයර්ෆොක්ස් ඕඑස් ios: අයිඕඑස් linux: ලිනක්ස් mac: මැක්ඕඑස් + other: නොදන්නා වේදිකාව windows: වින්ඩෝස් windows_mobile: වින්ඩෝස් මොබයිල් windows_phone: වින්ඩෝස් පෝන් + revoke: අවලංගු කරන්න + revoke_success: සැසිය සාර්ථකව අවලංගු කරන ලදී + title: සැසිවාර + view_authentication_history: ඔබගේ ගිණුමේ සත්‍යාපන ඉතිහාසය බලන්න settings: account: ගිණුම account_settings: ගිණුමේ සැකසුම් + aliases: ගිණුම් අන්වර්ථ නාමයන් + appearance: පෙනුම + authorized_apps: අවසර ලත් යෙදුම් + back: Mastodon වෙත නැවත යන්න + delete: ගිණුම මකා දැමීම + development: සංවර්ධනය edit_profile: පැතිකඩ සංස්කරණය export: දත්ත නිර්යාත - import: ආයාත කරන්න + featured_tags: විශේෂාංගගත හැෂ් ටැග් + import: ආයත කරන්න import_and_export: ආයාත සහ නිර්යාත + migrate: ගිණුම් සංක්‍රමණය notifications: දැනුම්දීම් + preferences: මනාප profile: පැතිකඩ + relationships: අනුගාමිකයින් සහ අනුගාමිකයින් + statuses_cleanup: ස්වයංක්‍රීය පළ කිරීම් මකාදැමීම + strikes: මධ්‍යස්ථ වැඩ වර්ජන + two_factor_authentication: ද්වි සාධක Aut + webauthn_authentication: ආරක්ෂක යතුරු statuses: + attached: + audio: + one: "%{count} ශ්රව්ය" + other: "%{count} ශ්රව්ය" + description: 'අමුණා ඇත: %{attached}' + image: + one: "%{count} රූපය" + other: පින්තූර %{count} + video: + one: "%{count} වීඩියෝ" + other: වීඩියෝ %{count} + boosted_from_html: "%{acct_link}සිට වැඩි කරන ලදී" + content_warning: 'අන්තර්ගත අනතුරු ඇඟවීම: %{warning}' + default_language: අතුරු මුහුණත් භාෂාවට සමානයි + disallowed_hashtags: + one: 'අනුමත නොකළ හැෂ් ටැගයක් අඩංගු විය: %{tags}' + other: 'අනුමත නොකළ හැෂ් ටැග් අඩංගු විය: %{tags}' + edited_at_html: සංස්කරණය %{date} + errors: + in_reply_not_found: ඔබ පිළිතුරු දීමට උත්සාහ කරන පළ කිරීම පවතින බවක් නොපෙනේ. + open_in_web: වෙබයේ විවෘත කරන්න + over_character_limit: අක්ෂර සීමාව %{max} ඉක්මවා ඇත + pin_errors: + direct: සඳහන් කළ පරිශීලකයින්ට පමණක් පෙනෙන පළ කිරීම් ඇමිණිය නොහැක + limit: ඔබ දැනටමත් උපරිම පළ කිරීම් සංඛ්‍යාව අමුණා ඇත + ownership: වෙනත් කෙනෙකුගේ පළ කිරීමක් ඇමිණිය නොහැක + reblog: බූස්ට් එකක් ඇලවිය නොහැක + poll: + total_people: + one: "%{count} පුද්ගලයෙක්" + other: පුද්ගලයන් %{count} + total_votes: + one: "%{count} ඡන්ද" + other: ඡන්ද %{count} යි + vote: ඡන්දය දෙන්න show_more: තව පෙන්වන්න + show_newer: අලුත්ම පෙන්වන්න + show_older: පැරණි පෙන්වන්න + show_thread: නූල් පෙන්වන්න + sign_in_to_participate: සංවාදයට සහභාගී වීමට පුරන්න title: '%{name}: "%{quote}"' visibilities: - public: ප්‍රසිද්ධ + direct: සෘජු + private: අනුගාමිකයින්-පමණි + private_long: අනුගාමිකයින්ට පමණක් පෙන්වන්න + public: ප්රසිද්ධ + public_long: හැමෝටම පේනවා + unlisted: ලැයිස්තුගත නොකළ + unlisted_long: සෑම කෙනෙකුටම දැකිය හැක, නමුත් පොදු කාලරාමුවෙහි ලැයිස්තුගත කර නොමැත + statuses_cleanup: + enabled: පැරණි පළ කිරීම් ස්වයංක්‍රීයව මකන්න + enabled_hint: ඔබේ පළ කිරීම් පහත ව්‍යතිරේකවලින් එකකට ගැලපෙන්නේ නම් මිස, ඒවා නිශ්චිත වයස් සීමාවකට ළඟා වූ පසු ස්වයංක්‍රීයව මකයි + exceptions: ව්යතිරේක + explanation: පළ කිරීම් මකා දැමීම මිල අධික මෙහෙයුමක් වන බැවින්, සේවාදායකය වෙනත් ආකාරයකින් කාර්යබහුල නොවන විට කාලයත් සමඟ මෙය සෙමින් සිදු කෙරේ. මෙම හේතුව නිසා, ඔබේ පළ කිරීම් වයස් සීමාවට ළඟා වූ පසු ටික වේලාවකට පසුව මකා දැමිය හැක. + ignore_favs: ප්‍රියතමයන් නොසලකා හරින්න + ignore_reblogs: වැඩි කිරීම් නොසලකා හරින්න + interaction_exceptions: අන්තර්ක්‍රියා මත පදනම් වූ ව්‍යතිරේක + interaction_exceptions_explanation: පළ කිරීම් වරක් ඒවා ඉක්මවා ගිය පසු ප්‍රියතම හෝ බූස්ට් සීමාවට පහළින් ගියහොත් ඒවා මැකීමට සහතිකයක් නොමැති බව සලකන්න. + keep_direct: සෘජු පණිවිඩ තබා ගන්න + keep_direct_hint: ඔබගේ සෘජු පණිවිඩ කිසිවක් මකන්නේ නැත + keep_media: මාධ්‍ය ඇමුණුම් සමඟ පළ කිරීම් තබා ගන්න + keep_media_hint: මාධ්‍ය ඇමුණුම් ඇති ඔබේ පළ කිරීම් කිසිවක් මකන්නේ නැත + keep_pinned: පින් කළ පළ කිරීම් තබා ගන්න + keep_pinned_hint: ඔබගේ පින් කළ පළ කිරීම් කිසිවක් මකන්නේ නැත + keep_polls: ඡන්ද තබා ගන්න + keep_polls_hint: ඔබගේ ඡන්ද විමසීම් කිසිවක් මකන්නේ නැත + keep_self_bookmark: ඔබ පිටු සලකුණු කළ පළ කිරීම් තබා ගන්න + keep_self_bookmark_hint: ඔබ ඔබේම පළ කිරීම් පිටු සලකුණු කර ඇත්නම් ඒවා මකා නොදමන්න + keep_self_fav: ඔබ කැමති පළ කිරීම් තබා ගන්න + keep_self_fav_hint: ඔබ ඒවාට කැමති නම් ඔබේම පළ කිරීම් මකා නොදමන්න + min_age: + '1209600': සති 2 යි + '15778476': මාස 6 යි + '2629746': මාස 1 යි + '31556952': වසර 1 යි + '5259492': මාස 2 ක් + '604800': 1 සතිය + '63113904': අවුරුදු 2 ක් + '7889238': මාස 3 යි + min_age_label: වයස් සීමාව + min_favs: අඩුම තරමින් පෝස්ට් ප්‍රිය කරන ලෙස තබා ගන්න + min_favs_hint: අවම වශයෙන් මෙම ප්‍රියතම ප්‍රමාණය ලබා ඇති ඔබේ පළ කිරීම් කිසිවක් මකන්නේ නැත. ඔවුන්ගේ ප්‍රියතමයන් ගණන නොතකා පළ කිරීම් මැකීමට හිස්ව තබන්න + min_reblogs: අඩුම තරමේ පෝස්ට් බූස්ට් කරගෙන තියාගන්න + min_reblogs_hint: අඩුම තරමින් මෙම වාර ගණන වැඩි කර ඇති ඔබගේ පළ කිරීම් කිසිවක් මකා නොදමන්න. බූස්ට් ගණන නොතකා පළ කිරීම් මැකීමට හිස්ව තබන්න stream_entries: - sensitive_content: සංවේදී අන්තර්ගතයකි + pinned: පින් කළ පළ කිරීම + reblogged: ඉහල නැංවීය + sensitive_content: සංවේදී අන්තර්ගතය + strikes: + errors: + too_late: මෙම වර්ජනයට අභියාචනයක් ඉදිරිපත් කිරීමට ප්‍රමාද වැඩියි + tags: + does_not_match_previous_name: පෙර නමට නොගැලපේ + terms: + title: "%{instance} සේවා නියම සහ රහස්‍යතා ප්‍රතිපත්තිය" + themes: + contrast: Mastodon (ඉහළ වෙනස) + default: මැස්ටෝඩන් (අඳුරු) + mastodon-light: මැස්ටෝඩන් (ආලෝකය) two_factor_authentication: + add: එකතු කරන්න + disable: 2FA අබල කරන්න + disabled_success: ද්වි-සාධක සත්‍යාපනය සාර්ථකව අබල කර ඇත edit: සංස්කරණය + enabled: ද්වි-සාධක සත්‍යාපනය සක්‍රීය කර ඇත + enabled_success: ද්වි-සාධක සත්‍යාපනය සාර්ථකව සබල කර ඇත + generate_recovery_codes: ප්‍රතිසාධන කේත ජනනය කරන්න + lost_recovery_codes: ඔබගේ දුරකථනය නැති වුවහොත් ඔබගේ ගිණුමට ප්‍රවේශය නැවත ලබා ගැනීමට ප්‍රතිසාධන කේත ඔබට ඉඩ සලසයි. ඔබට ඔබේ ප්‍රතිසාධන කේත නැති වී ඇත්නම්, ඔබට ඒවා මෙහි නැවත උත්පාදනය කළ හැක. ඔබගේ පැරණි ප්‍රතිසාධන කේත අවලංගු වනු ඇත. + methods: ද්වි සාධක ක්රම + otp: Authenticator යෙදුම + recovery_codes: උපස්ථ ප්‍රතිසාධන කේත + recovery_codes_regenerated: ප්‍රතිසාධන කේත සාර්ථකව ප්‍රතිජනනය කරන ලදී + recovery_instructions_html: ඔබට කවදා හෝ ඔබගේ දුරකථනයට ප්‍රවේශය අහිමි වුවහොත්, ඔබගේ ගිණුමට ප්‍රවේශය නැවත ලබා ගැනීමට පහත ප්‍රතිසාධන කේත වලින් එකක් භාවිතා කළ හැක. ප්‍රතිසාධන කේත ආරක්ෂිතව තබා ගන්න. උදාහරණයක් ලෙස, ඔබට ඒවා මුද්‍රණය කර වෙනත් වැදගත් ලේඛන සමඟ ගබඩා කළ හැකිය. webauthn: ආරක්‍ෂණ යතුරු + user_mailer: + appeal_approved: + action: ඔබගේ ගිණුමට යන්න + explanation: ඔබ %{appeal_date} දින ඉදිරිපත් කළ %{strike_date} හි ඔබේ ගිණුමට එරෙහි වර්ජනයේ අභියාචනය අනුමත කර ඇත. ඔබගේ ගිණුම නැවත වරක් හොඳ තත්වයක පවතී. + subject: "%{date} සිට ඔබගේ අභියාචනය අනුමත කර ඇත" + title: අභියාචනය අනුමත කර ඇත + appeal_rejected: + explanation: "%{strike_date} දින ඔබේ ගිණුමට එරෙහිව ඔබ %{appeal_date} දින ඉදිරිපත් කළ වර්ජනයේ අභියාචනය ප්‍රතික්ෂේප කර ඇත." + subject: "%{date} සිට ඔබගේ අභියාචනය ප්‍රතික්ෂේප කර ඇත" + title: අභියාචනය ප්‍රතික්ෂේප විය + backup_ready: + explanation: ඔබ ඔබේ Mastodon ගිණුමේ සම්පූර්ණ උපස්ථයක් ඉල්ලා ඇත. එය දැන් බාගත කිරීම සඳහා සූදානම්! + subject: ඔබගේ සංරක්ෂිතය බාගැනීමට සූදානම්ය + title: සංරක්ෂිත රැගෙන යාම + suspicious_sign_in: + change_password: ඔබගේ මුරපදය වෙනස් කරන්න + details: 'පුරනය වීමේ විස්තර මෙන්න:' + explanation: අපි නව IP ලිපිනයකින් ඔබගේ ගිණුමට පුරනය වීමක් අනාවරණය කරගෙන ඇත. + further_actions_html: මෙය ඔබ නොවේ නම්, අපි ඔබට වහාම %{action} ලෙස නිර්දේශ කර ඔබගේ ගිණුම සුරක්ෂිතව තබා ගැනීමට සාධක දෙකක සත්‍යාපනය සබල කරන්න. + subject: ඔබගේ ගිණුම නව IP ලිපිනයකින් ප්‍රවේශ වී ඇත + title: නව පුරනය වීමක් + warning: + appeal: අභියාචනයක් ඉදිරිපත් කරන්න + appeal_description: මෙය දෝෂයක් බව ඔබ විශ්වාස කරන්නේ නම්, ඔබට %{instance}හි කාර්ය මණ්ඩලයට අභියාචනයක් ඉදිරිපත් කළ හැක. + categories: + spam: ආයාචිත තැපැල් + violation: අන්තර්ගතය පහත ප්‍රජා මාර්ගෝපදේශ උල්ලංඝනය කරයි + explanation: + delete_statuses: ඔබගේ සමහර පළ කිරීම් ප්‍රජා මාර්ගෝපදේශ එකක් හෝ කිහිපයක් උල්ලංඝනය කරන බව සොයා ගෙන ඇති අතර පසුව %{instance}හි උපපරිපාලකයින් විසින් ඉවත් කර ඇත. + disable: ඔබට තවදුරටත් ඔබගේ ගිණුම භාවිතා කළ නොහැක, නමුත් ඔබගේ පැතිකඩ සහ අනෙකුත් දත්ත නොවෙනස්ව පවතී. ඔබට ඔබගේ දත්තවල උපස්ථයක් ඉල්ලා සිටීමට, ගිණුම් සැකසීම් වෙනස් කිරීමට හෝ ඔබගේ ගිණුම මකා දැමීමට හැකිය. + mark_statuses_as_sensitive: ඔබගේ සමහර පළ කිරීම් %{instance}හි පරිපාලකයින් විසින් සංවේදී ලෙස සලකුණු කර ඇත. මෙයින් අදහස් කරන්නේ පෙරදසුනක් දර්ශනය වීමට පෙර පුද්ගලයින්ට පළ කිරීම් වල මාධ්‍ය තට්ටු කිරීමට අවශ්‍ය වනු ඇති බවයි. අනාගතයේදී පළ කිරීමේදී ඔබට මාධ්‍ය සංවේදී ලෙස සලකුණු කළ හැක. + sensitive: මෙතැන් සිට, ඔබගේ උඩුගත කරන ලද සියලුම මාධ්‍ය ගොනු සංවේදී ලෙස සලකුණු කර ක්ලික්-හරහා අනතුරු ඇඟවීමක් පිටුපස සඟවනු ඇත. + silence: ඔබට තවමත් ඔබගේ ගිණුම භාවිතා කළ හැකි නමුත් දැනටමත් ඔබව අනුගමනය කරන පුද්ගලයින් පමණක් මෙම සේවාදායකයේ ඔබගේ පළ කිරීම් දකිනු ඇති අතර, විවිධ සොයාගැනීම් විශේෂාංග වලින් ඔබව බැහැර කරනු ලැබිය හැක. කෙසේ වෙතත්, අනෙක් අය තවමත් ඔබව අතින් අනුගමනය කළ හැක. + suspend: ඔබට තවදුරටත් ඔබගේ ගිණුම භාවිතා කළ නොහැකි අතර, ඔබගේ පැතිකඩ සහ අනෙකුත් දත්ත තවදුරටත් ප්‍රවේශ විය නොහැක. දින 30කින් පමණ දත්ත සම්පූර්ණයෙන් ඉවත් කරන තෙක් ඔබට තවමත් ඔබේ දත්තවල උපස්ථයක් ඉල්ලා සිටීමට පුරනය විය හැක, නමුත් ඔබව අත්හිටුවීම මගහැර යාම වැළැක්වීමට අපි මූලික දත්ත කිහිපයක් රඳවා ගන්නෙමු. + reason: 'හේතුව:' + statuses: 'උපුටා දක්වන ලද පළ කිරීම්:' + subject: + delete_statuses: "%{acct} හි ඔබගේ පළ කිරීම් ඉවත් කර ඇත" + disable: ඔබගේ ගිණුම %{acct} කර ඇත + mark_statuses_as_sensitive: "%{acct} හි ඔබගේ පළ කිරීම් සංවේදී ලෙස සලකුණු කර ඇත" + none: "%{acct}සඳහා අනතුරු ඇඟවීම" + sensitive: "%{acct} හි ඔබගේ පළ කිරීම් මෙතැන් සිට සංවේදී ලෙස සලකුණු කෙරේ" + silence: ඔබගේ ගිණුම %{acct} සීමා කර ඇත + suspend: ඔබගේ ගිණුම %{acct} අත්හිටුවා ඇත + title: + delete_statuses: පළ කිරීම් ඉවත් කරන ලදී + disable: ගිණුම නිශ්චල කර ඇත + mark_statuses_as_sensitive: පළ කිරීම් සංවේදී ලෙස ලකුණු කර ඇත + none: අවවාදයයි + sensitive: ගිණුම සංවේදී ලෙස ලකුණු කර ඇත + silence: ගිණුම සීමා සහිතයි + suspend: ගිණුම අත්හිටුවා ඇත + welcome: + edit_profile_action: සැකසුම් පැතිකඩ + edit_profile_step: ඔබට අවතාරයක්, ශීර්ෂයක් උඩුගත කිරීමෙන්, ඔබේ සංදර්ශක නම වෙනස් කිරීමෙන් සහ තවත් දේ මඟින් ඔබේ පැතිකඩ අභිරුචිකරණය කළ හැකිය. නව අනුගාමිකයින්ට ඔබව අනුගමනය කිරීමට ඉඩ දීමට පෙර ඔවුන් සමාලෝචනය කිරීමට ඔබ කැමති නම්, ඔබට ඔබගේ ගිණුම අගුළු දැමිය හැක. + explanation: ඔබ ආරම්භ කිරීමට උපදෙස් කිහිපයක් මෙන්න + final_action: පළ කිරීම ආරම්භ කරන්න + final_step: 'පළ කිරීම ආරම්භ කරන්න! අනුගාමිකයින් නොමැතිව වුවද, ඔබගේ පොදු පළ කිරීම් වෙනත් අය විසින් දැකිය හැකිය, උදාහරණයක් ලෙස දේශීය කාලරේඛාවේ සහ හැෂ් ටැග් වල. ඔබට #introductions හැෂ් ටැගය මත ඔබව හඳුන්වා දීමට අවශ්‍ය විය හැක.' + full_handle: ඔබේ සම්පූර්ණ හසුරුව + full_handle_hint: මෙය ඔබ ඔබේ මිතුරන්ට පවසනු ඇත, එවිට ඔවුන්ට වෙනත් සේවාදායකයකින් ඔබට පණිවිඩ යැවීමට හෝ අනුගමනය කිරීමට හැකිය. + review_preferences_action: මනාප වෙනස් කරන්න + review_preferences_step: ඔබට ලැබීමට කැමති ඊමේල්, හෝ ඔබේ පළ කිරීම් පෙරනිමි කිරීමට ඔබ කැමති පුද්ගලිකත්ව මට්ටම වැනි ඔබේ මනාප සැකසීමට වග බලා ගන්න. ඔබට චලන අසනීපයක් නොමැති නම්, ඔබට GIF ස්වයංක්‍රීය ධාවනය සබල කිරීමට තෝරා ගත හැකිය. + subject: Mastodon වෙත සාදරයෙන් පිළිගනිමු + tip_federated_timeline: ෆෙඩරේටඩ් කාලරාමුව යනු මැස්ටෝඩන් ජාලයේ ගිනි හෝස් දසුනකි. නමුත් එයට ඇතුළත් වන්නේ ඔබේ අසල්වැසියන් දායක වී ඇති පුද්ගලයින් පමණි, එබැවින් එය සම්පූර්ණ නොවේ. + tip_following: ඔබ පෙරනිමියෙන් ඔබගේ සේවාදායකයේ පරිපාලක(න්) අනුගමනය කරයි. වඩාත් සිත්ගන්නා පුද්ගලයින් සොයා ගැනීමට, දේශීය සහ ෆෙඩරල් කාලරේඛා පරීක්ෂා කරන්න. + tip_local_timeline: ප්‍රාදේශීය කාලරේඛාව යනු %{instance}හි පුද්ගලයින්ගේ ගිනි හෝස් දසුනකි. මේ ඔබේ ආසන්න අසල්වැසියන්! + tip_mobile_webapp: ඔබගේ ජංගම බ්‍රවුසරය ඔබගේ මුල් තිරයට Mastodon එක් කිරීමට ඉදිරිපත් කරන්නේ නම්, ඔබට තල්ලු දැනුම්දීම් ලැබිය හැක. එය බොහෝ ආකාරවලින් ස්වදේශීය යෙදුමක් ලෙස ක්‍රියා කරයි! + tips: ඉඟි + title: නැවට සාදරයෙන් පිළිගනිමු, %{name}! + users: + follow_limit_reached: ඔබට පුද්ගලයින් %{limit} කට වඩා අනුගමනය කළ නොහැක + invalid_otp_token: වලංගු නොවන ද්වි-සාධක කේතය + otp_lost_help_html: ඔබට දෙකටම ප්‍රවේශය අහිමි වුවහොත්, ඔබට %{email}සමඟ සම්බන්ධ විය හැක + seamless_external_login: ඔබ බාහිර සේවාවක් හරහා ලොග් වී ඇත, එබැවින් මුරපදය සහ ඊමේල් සැකසුම් නොමැත. + signed_in_as: 'මෙසේ පුරනය වී ඇත:' + verification: + explanation_html: 'ඔබගේ පැතිකඩ පාරදත්තහි ඇති සබැඳි වල හිමිකරු ලෙස ඔබට සත්‍යාපනය කළ හැක. ඒ සඳහා, සම්බන්ධිත වෙබ් අඩවියේ ඔබේ Mastodon පැතිකඩ වෙත ආපසු සබැඳියක් තිබිය යුතුය. සබැඳිය ආපසු යුතුය. සබැඳියේ පෙළ අන්තර්ගතය වැදගත් නොවේ. මෙන්න උදාහරණයක්:' + verification: සත්යාපනය + webauthn_credentials: + add: නව ආරක්ෂක යතුර එක් කරන්න + create: + error: ඔබගේ ආරක්ෂක යතුර එක් කිරීමේ ගැටලුවක් ඇති විය. කරුණාකර නැවත උත්සාහ කරන්න. + success: ඔබගේ ආරක්ෂක යතුර සාර්ථකව එක් කරන ලදී. + delete: මකන්න + delete_confirmation: ඔබට මෙම ආරක්ෂක යතුර මැකීමට අවශ්‍ය බව විශ්වාසද? + description_html: ඔබ ආරක්‍ෂක යතුරු සත්‍යාපනයසක්‍රීය කරන්නේ නම්, පුරනය වීමේදී ඔබගේ ආරක්‍ෂක යතුරු වලින් එකක් භාවිතා කිරීම අවශ්‍ය වේ. + destroy: + error: ඔබගේ ආරක්ෂක යතුර මැකීමේ ගැටලුවක් ඇති විය. කරුණාකර නැවත උත්සාහ කරන්න. + success: ඔබගේ ආරක්ෂක යතුර සාර්ථකව මකා ඇත. + invalid_credential: වලංගු නොවන ආරක්ෂක යතුර + nickname_hint: ඔබගේ නව ආරක්ෂක යතුරේ අන්වර්ථ නාමය ඇතුළත් කරන්න + not_enabled: ඔබ තවමත් WebAuthn සබල කර නැත + not_supported: මෙම බ්‍රවුසරය ආරක්ෂක යතුරු සඳහා සහය නොදක්වයි + otp_required: ආරක්ෂක යතුරු භාවිතා කිරීමට කරුණාකර පළමුව ද්වි-සාධක සත්‍යාපනය සක්‍රීය කරන්න. + registered_on: "%{date}හි ලියාපදිංචි වී ඇත" diff --git a/config/locales/simple_form.ast.yml b/config/locales/simple_form.ast.yml index c98913985..b41e6404b 100644 --- a/config/locales/simple_form.ast.yml +++ b/config/locales/simple_form.ast.yml @@ -96,6 +96,10 @@ ast: reblog: Daquién compartió dalgún estáu de to tag: name: Etiqueta + user_role: + name: Nome + permissions_as_keys: Permisos + position: Prioridá 'no': Non recommended: Aconséyase required: diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index ccbb90282..81fd117f7 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -68,6 +68,11 @@ ca: with_dns_records: Es procurarà resoldre els registres DNS del domini determinat i els resultats també es llistaran a la llista negra featured_tag: name: 'És possible que vulguis utilitzar una d''aquestes:' + filters: + action: Tria quina acció cal executar quan una publicació coincideixi amb el filtre + actions: + hide: Ocultar completament el contingut filtrat, comportant-se com si no existís + warn: Oculta el contingut filtrat rera un avís mencionant el títol del filtre form_challenge: current_password: Estàs entrant en una àrea segura imports: @@ -181,6 +186,7 @@ ca: setting_use_pending_items: Mode lent severity: Severitat sign_in_token_attempt: Codi de seguretat + title: Títol type: Importa el tipus username: Nom d'usuari username_or_email: Nom d'usuari o adreça electrònica @@ -189,6 +195,10 @@ ca: with_dns_records: Incloure registres MX i IP del domini featured_tag: name: Etiqueta + filters: + actions: + hide: Oculta completament + warn: Oculta amb un avís interactions: must_be_follower: Bloqueja les notificacions de persones que no em segueixen must_be_following: Bloqueja les notificacions de persones no seguides diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index 789b328b5..110a13c76 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -91,6 +91,9 @@ cs: name: Můžete měnit pouze velikost písmen, například kvůli lepší čitelnosti user: chosen_languages: Po zaškrtnutí budou ve veřejných časových osách zobrazeny pouze příspěvky ve zvolených jazycích + user_role: + highlighted: Toto roli učiní veřejně viditelnou + permissions_as_keys: Uživatelé s touto rolí budou moci... webhook: events: Zvolte odesílané události url: Kam budou události odesílány @@ -222,6 +225,12 @@ cs: name: Hashtag trendable: Povolit zobrazení tohoto hashtagu mezi populárními usable: Povolit používat tento hashtag v příspěvcích + user: + role: Role + user_role: + name: Název + permissions_as_keys: Oprávnění + position: Priorita webhook: events: Zapnuté události url: URL koncového bodu diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index 84450c768..cb80f7eaa 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -68,6 +68,11 @@ da: with_dns_records: Et forsøg på at opløse det givne domænes DNS-poster foretages, og resultaterne blokeres ligeledes featured_tag: name: 'Et af flg. ønskes måske anvendt:' + filters: + action: Vælg handlingen til eksekvering, når et indlæg matcher filteret + actions: + hide: Skjul filtreret indhold helt (adfærd som om, det ikke fandtes) + warn: Skjul filtreret indhold bag en advarsel, der nævner filterets titel form_challenge: current_password: Du bevæger dig ind på et sikkert område imports: @@ -181,6 +186,7 @@ da: setting_use_pending_items: Langsom tilstand severity: Alvorlighed sign_in_token_attempt: Sikkerhedskode + title: Titel type: Importtype username: Brugernavn username_or_email: Brugernavn eller e-mail @@ -189,6 +195,10 @@ da: with_dns_records: Inkludér domænets MX-poster og IP'er featured_tag: name: Hashtag + filters: + actions: + hide: Skjul helt + warn: Skjul bag en advarsel interactions: must_be_follower: Blokér notifikationer fra ikke-følgere must_be_following: Blokér notifikationer fra folk, som ikke følges diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml index 89ddae0cb..63a68c1c0 100644 --- a/config/locales/simple_form.el.yml +++ b/config/locales/simple_form.el.yml @@ -172,6 +172,7 @@ el: setting_use_pending_items: Αργή λειτουργία severity: Αυστηρότητα sign_in_token_attempt: Κωδικός ασφαλείας + title: Τίτλος type: Τύπος εισαγωγής username: Όνομα χρηστη username_or_email: Όνομα ή διεύθυνση email χρήστη @@ -180,6 +181,10 @@ el: with_dns_records: Συμπερίληψη εγγραφών MX και διευθύνσεων IP του τομέα featured_tag: name: Ετικέτα + filters: + actions: + hide: Πλήρης απόκρυψη + warn: Απόκρυψη με προειδοποίηση interactions: must_be_follower: Μπλόκαρε τις ειδοποιήσεις από όσους δεν σε ακολουθούν must_be_following: Μπλόκαρε τις ειδοποιήσεις από όσους δεν ακολουθείς diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml index 47ec6559d..2175ab571 100644 --- a/config/locales/simple_form.eo.yml +++ b/config/locales/simple_form.eo.yml @@ -10,7 +10,7 @@ eo: text: Vi povas uzi skribmanierojn de mesaĝoj, kiel URL-ojn, kradvortojn kaj menciojn title: Laŭvola. Ne videbla por la ricevanto admin_account_action: - include_statuses: La uzanto vidos, kiujn afiŝojn estas kaŭzintaj la moderigan agon aŭ averton + include_statuses: La uzanto vidos, kiujn afiŝojn kaŭzis la agon de moderigo aŭ de averto send_email_notification: La uzanto ricevos klarigon pri tio, kio okazis al ties konto text_html: Malnepra. Vi povas uzi skribmanierojn de mesaĝoj. Vi povas aldoni avertajn antaŭagordojn por ŝpari tempon type_html: Elektu kion fari kun %{acct} @@ -45,7 +45,7 @@ eo: password: Uzu almenaŭ 8 signojn phrase: Estos provita senzorge pri la uskleco de teksto aŭ averto pri enhavo de mesaĝo scopes: Kiujn API-ojn la aplikaĵo permesiĝos atingi. Se vi elektas supran amplekson, vi ne bezonas elekti la individuajn. - setting_aggregate_reblogs: Ne montri novajn diskonigojn de mesaĝoj laste diskonigitaj (nur efikas al novaj diskonigoj) + setting_aggregate_reblogs: Ne montri novajn plusendojn de mesaĝoj lastatempe plusenditaj (nur efikas al nove ricevitaj plusendoj) setting_default_sensitive: Tiklaj aŭdovidaĵoj estas defaŭlte kaŝita kaj povas esti malkiŝita per klako setting_display_media_default: Kaŝi aŭdovidaĵojn markitajn kiel tiklaj setting_display_media_hide_all: Ĉiam kaŝi ĉiujn aŭdovidaĵojn @@ -61,6 +61,9 @@ eo: domain: Ĉi tiu domajno povos akiri datumon de ĉi tiu servilo kaj envenanta datumo estos prilaborita kaj konservita featured_tag: name: 'Vi povus uzi iun el la jenaj:' + filters: + actions: + warn: Kaŝi la enhavon filtritan malantaŭ averto mencianta la nomon de la filtro form_challenge: current_password: Vi eniras sekuran areon imports: @@ -138,9 +141,10 @@ eo: note: Sinprezento otp_attempt: Kodo de dufaktora aŭtentigo password: Pasvorto - phrase: Vorto aŭ frazo + phrase: Ĉefvorto aŭ frazo setting_advanced_layout: Ebligi altnivelan retpaĝan interfacon setting_aggregate_reblogs: Grupigi diskonigojn en templinioj + setting_always_send_emails: Ĉiam sendi la sciigojn per retpoŝto setting_auto_play_gif: Aŭtomate ekigi GIF-ojn setting_boost_modal: Montri konfirman fenestron antaŭ ol diskonigi mesaĝon setting_crop_images: Stuci bildojn en negrandigitaj mesaĝoj al 16x9 @@ -159,19 +163,24 @@ eo: setting_reduce_motion: Redukti la movecojn de la animacioj setting_show_application: Publikigi la aplikaĵon uzatan por sendi mesaĝojn setting_system_font_ui: Uzi la dekomencan tiparon de la sistemo - setting_theme: Reteja etoso + setting_theme: Etoso de la retejo setting_trends: Montri hodiaŭajn furoraĵojn setting_unfollow_modal: Montri konfirman fenestron antaŭ ol ĉesi sekvi iun setting_use_blurhash: Montri buntajn transirojn por kaŝitaj aŭdovidaĵoj setting_use_pending_items: Malrapida modo severity: Graveco sign_in_token_attempt: Sekureca kodo + title: Titolo type: Importa tipo username: Uzantnomo username_or_email: Uzantnomo aŭ Retadreso whole_word: Tuta vorto featured_tag: name: Kradvorto + filters: + actions: + hide: Kaŝi komplete + warn: Kaŝi malantaŭ averto interactions: must_be_follower: Bloki sciigojn de nesekvantoj must_be_following: Bloki sciigojn de homoj, kiujn vi ne sekvas diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml index 8f30266e3..656599d94 100644 --- a/config/locales/simple_form.es-AR.yml +++ b/config/locales/simple_form.es-AR.yml @@ -68,6 +68,11 @@ es-AR: with_dns_records: Se hará un intento de resolver los registros DNS del dominio dado y los resultados serán también bloqueados featured_tag: name: 'Puede que quieras usar una de estas:' + filters: + action: Elegir qué acción realizar cuando un mensaje coincide con el filtro + actions: + hide: Ocultar completamente el contenido filtrado, comportándose como si no existiera + warn: Ocultar el contenido filtrado detrás de una advertencia mencionando el título del filtro form_challenge: current_password: Estás ingresando en un área segura imports: @@ -91,6 +96,13 @@ es-AR: name: Sólo podés cambiar la capitalización de las letras, por ejemplo, para que sea más legible user: chosen_languages: Cuando estén marcados, sólo se mostrarán los mensajes en los idiomas seleccionados en las líneas temporales públicas + role: El rol controla qué permisos tiene el usuario + user_role: + color: Color que se utilizará para el rol a lo largo de la interface de usuario, como RGB en formato hexadecimal + highlighted: Esto hace que el rol sea públicamente visible + name: Nombre público del rol, si el rol se establece para que se muestre como una insignia + permissions_as_keys: Los usuarios con este rol tendrán acceso a… + position: Un rol más alto decide la resolución de conflictos en ciertas situaciones webhook: events: Seleccionar eventos para enviar url: Adónde serán enviados los eventos @@ -181,6 +193,7 @@ es-AR: setting_use_pending_items: Modo lento severity: Severidad sign_in_token_attempt: Código de seguridad + title: Título type: Tipo de importación username: Nombre de usuario username_or_email: Nombre de usuario o correo electrónico @@ -189,6 +202,10 @@ es-AR: with_dns_records: Incluir los registros MX y las direcciones IP del dominio featured_tag: name: Etiqueta + filters: + actions: + hide: Ocultar completamente + warn: Ocultar con una advertencia interactions: must_be_follower: Bloquear notificaciones de cuentas que no te siguen must_be_following: Bloquear notificaciones de cuentas que no seguís @@ -222,6 +239,14 @@ es-AR: name: Etiqueta trendable: Permitir que esta etiqueta aparezca bajo tendencias usable: Permitir a los mensajes usar esta etiqueta + user: + role: Rol + user_role: + color: Color de Insignia + highlighted: Mostrar rol como insignia en perfiles de usuario + name: Nombre + permissions_as_keys: Permisos + position: Prioridad webhook: events: Eventos habilitados url: Dirección web del punto final diff --git a/config/locales/simple_form.es-MX.yml b/config/locales/simple_form.es-MX.yml index 66efd68ab..b4c003593 100644 --- a/config/locales/simple_form.es-MX.yml +++ b/config/locales/simple_form.es-MX.yml @@ -68,6 +68,11 @@ es-MX: with_dns_records: Se hará un intento de resolver los registros DNS del dominio dado y los resultados serán también puestos en lista negra featured_tag: name: 'Puede que quieras usar uno de estos:' + filters: + action: Elegir qué acción realizar cuando una publicación coincide con el filtro + actions: + hide: Ocultar completamente el contenido filtrado, comportándose como si no existiera + warn: Ocultar el contenido filtrado detrás de una advertencia mencionando el título del filtro form_challenge: current_password: Estás entrando en un área segura imports: @@ -91,6 +96,9 @@ es-MX: name: Sólo se puede cambiar el cajón de las letras, por ejemplo, para que sea más legible user: chosen_languages: Cuando se marca, solo se mostrarán los toots en los idiomas seleccionados en los timelines públicos + webhook: + events: Seleccionar eventos para enviar + url: Donde los eventos serán enviados labels: account: fields: @@ -178,6 +186,7 @@ es-MX: setting_use_pending_items: Modo lento severity: Severidad sign_in_token_attempt: Código de seguridad + title: Título type: Importar tipo username: Nombre de usuario username_or_email: Usuario o Email @@ -186,6 +195,10 @@ es-MX: with_dns_records: Incluye los registros MX y las IP del dominio featured_tag: name: Etiqueta + filters: + actions: + hide: Ocultar completamente + warn: Ocultar con una advertencia interactions: must_be_follower: Bloquear notificaciones de personas que no te siguen must_be_following: Bloquear notificaciones de personas que no sigues @@ -219,6 +232,9 @@ es-MX: name: Etiqueta trendable: Permitir que esta etiqueta aparezca bajo tendencias usable: Permitir a los toots usar esta etiqueta + webhook: + events: Eventos habilitados + url: URL de Endpoint 'no': 'No' recommended: Recomendado required: diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index 53863ba31..b407e0581 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -68,6 +68,11 @@ es: with_dns_records: Se hará un intento de resolver los registros DNS del dominio dado y los resultados serán también puestos en lista negra featured_tag: name: 'Puede que quieras usar uno de estos:' + filters: + action: Elegir qué acción realizar cuando una publicación coincide con el filtro + actions: + hide: Ocultar completamente el contenido filtrado, comportándose como si no existiera + warn: Ocultar el contenido filtrado detrás de una advertencia mencionando el título del filtro form_challenge: current_password: Estás entrando en un área segura imports: @@ -91,6 +96,13 @@ es: name: Sólo se puede cambiar el cajón de las letras, por ejemplo, para que sea más legible user: chosen_languages: Cuando se marca, solo se mostrarán las publicaciones en los idiomas seleccionados en las líneas de tiempo públicas + role: El rol controla qué permisos tiene el usuario + user_role: + color: Color que se utilizará para el rol a lo largo de la interfaz de usuario, como RGB en formato hexadecimal + highlighted: Esto hace que el rol sea públicamente visible + name: Nombre público del rol, si el rol se establece para que se muestre como una insignia + permissions_as_keys: Los usuarios con este rol tendrán acceso a... + position: Un rol más alto decide la resolución de conflictos en ciertas situaciones webhook: events: Seleccionar eventos para enviar url: Donde los eventos serán enviados @@ -181,6 +193,7 @@ es: setting_use_pending_items: Modo lento severity: Severidad sign_in_token_attempt: Código de seguridad + title: Título type: Importar tipo username: Nombre de usuario username_or_email: Usuario o Email @@ -189,6 +202,10 @@ es: with_dns_records: Incluye los registros MX y las IP del dominio featured_tag: name: Etiqueta + filters: + actions: + hide: Ocultar completamente + warn: Ocultar con una advertencia interactions: must_be_follower: Bloquear notificaciones de personas que no te siguen must_be_following: Bloquear notificaciones de personas que no sigues @@ -222,6 +239,14 @@ es: name: Etiqueta trendable: Permitir que esta etiqueta aparezca bajo tendencias usable: Permitir a las publicaciones usar esta etiqueta + user: + role: Rol + user_role: + color: Color de insignia + highlighted: Mostrar rol como insignia en perfiles de usuario + name: Nombre + permissions_as_keys: Permisos + position: Prioridad webhook: events: Eventos habilitados url: URL de Endpoint diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index c4fd49040..e9545cf08 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -68,6 +68,11 @@ fr: with_dns_records: Une tentative de résolution des enregistrements DNS du domaine donné sera effectuée et les résultats seront également mis sur liste noire featured_tag: name: 'Vous pourriez vouloir utiliser l’un d’entre eux :' + filters: + action: Choisir l'action à effectuer quand un message correspond au filtre + actions: + hide: Cacher complètement le contenu filtré, faire comme s'il n'existait pas + warn: Cacher le contenu filtré derrière un avertissement mentionnant le nom du filtre form_challenge: current_password: Vous entrez une zone sécurisée imports: @@ -181,6 +186,7 @@ fr: setting_use_pending_items: Mode lent severity: Sévérité sign_in_token_attempt: Code de sécurité + title: Nom type: Type d’import username: Identifiant username_or_email: Nom d’utilisateur·rice ou courriel @@ -189,6 +195,10 @@ fr: with_dns_records: Inclure les enregistrements MX et IP du domaine featured_tag: name: Hashtag + filters: + actions: + hide: Cacher complètement + warn: Cacher derrière un avertissement interactions: must_be_follower: Bloquer les notifications des personnes qui ne vous suivent pas must_be_following: Bloquer les notifications des personnes que vous ne suivez pas diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml index e7fc36c64..fdd58ebbc 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -49,7 +49,7 @@ gl: phrase: Concordará independentemente das maiúsculas ou avisos de contido na publicación scopes: A que APIs terá acceso a aplicación. Se escolles un ámbito de alto nivel, non precisas seleccionar elementos individuais. setting_aggregate_reblogs: Non mostrar novas promocións de publicacións que foron promovidas recentemente (só afecta a promocións recén recibidas) - setting_always_send_emails: Como norma xeral non che enviamos emails se usas activamente Mastodon + setting_always_send_emails: Como norma xeral non che enviamos correos electrónicos se usas activamente Mastodon setting_default_sensitive: Medios sensibles marcados como ocultos por defecto e móstranse cun click setting_display_media_default: Ocultar medios marcados como sensibles setting_display_media_hide_all: Ocultar sempre os medios @@ -68,6 +68,11 @@ gl: with_dns_records: Vaise facer un intento de resolver os rexistros DNS proporcionados e os resultados tamén irán a lista de bloqueo featured_tag: name: 'Poderías usar algún destos:' + filters: + action: Elixe a acción a realizar cando algunha publicación coincida co filtro + actions: + hide: Agochar todo o contido filtrado, facer coma se non existise + warn: Agochar o contido filtrado tras un aviso que conteña o nome do filtro form_challenge: current_password: Estás entrando nun área segura imports: @@ -91,9 +96,16 @@ gl: name: Só podes cambiar maiús/minúsculas, por exemplo, mellorar a lexibilidade user: chosen_languages: Se ten marca, só as publicacións nos idiomas seleccionados serán mostrados en cronoloxías públicas + role: O control dos roles adxudicados ás usuarias + user_role: + color: Cor que se usará para o rol a través da IU, como RGB en formato hex + highlighted: Esto fai o rol públicamente visible + name: Nome público do rol, se o rol se mostra como unha insignia + permissions_as_keys: As usuarias con este rol terá acceso a... + position: O rol de maior rango decide en situación de resolución de conflitos webhook: - events: Elexir eventos a enviar - url: Cando serán enviados os eventos + events: Elixir eventos a enviar + url: A onde se enviarán os eventos labels: account: fields: @@ -108,7 +120,7 @@ gl: title: Título admin_account_action: include_statuses: Incluír no correo as publicacións denunciadas - send_email_notification: Notificar a usuaria por correo-e + send_email_notification: Notificar á usuaria por email text: Aviso personalizado type: Acción types: @@ -155,7 +167,7 @@ gl: phrase: Palabra chave ou frase setting_advanced_layout: Activar interface web avanzada setting_aggregate_reblogs: Agrupar promocións nas cronoloxías - setting_always_send_emails: Enviar sempre notificacións por email + setting_always_send_emails: Enviar sempre notificacións por correo electrónico setting_auto_play_gif: Reprodución automática de GIFs animados setting_boost_modal: Pedir confirmación antes de promocionar setting_crop_images: Recortar imaxes a 16x9 en publicacións non despregadas @@ -181,14 +193,19 @@ gl: setting_use_pending_items: Modo lento severity: Severidade sign_in_token_attempt: Código de seguridade + title: Título type: Tipo de importación username: Nome de usuaria - username_or_email: Nome de usuaria ou Correo-e + username_or_email: Identificador ou Email whole_word: Palabra completa email_domain_block: with_dns_records: Incluír rexistros MX e IPs do dominio featured_tag: name: Cancelo + filters: + actions: + hide: Agochar completamente + warn: Agochar tras un aviso interactions: must_be_follower: Bloquear as notificacións de non-seguidoras must_be_following: Bloquea as notificacións de persoas que non segues @@ -222,6 +239,14 @@ gl: name: Cancelo trendable: Permitir que este cancelo apareza en tendencias usable: Permitir que as publicacións utilicen este cancelo + user: + role: Rol + user_role: + color: Cor da insignia + highlighted: Mostrar rol como insignia en perfís de usuarias + name: Nome + permissions_as_keys: Permisos + position: Prioridade webhook: events: Eventos activados url: URL do extremo diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index 3aba33995..6152a87f1 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -68,6 +68,11 @@ hu: with_dns_records: Megpróbáljuk a megadott domain DNS rekordjait lekérni, és az eredményeket hozzáadjuk a tiltólistához featured_tag: name: 'Ezeket esetleg használhatod:' + filters: + action: A végrehajtandó műveletet, ha a bejegyzés megfelel a szűrőnek + actions: + hide: A szűrt tartalom teljes elrejtése, mintha nem is létezne + warn: A szűrt tartalom a szűrő címét említő figyelmeztetés mögé rejtése form_challenge: current_password: Beléptél egy biztonsági térben imports: @@ -181,6 +186,7 @@ hu: setting_use_pending_items: Lassú mód severity: Súlyosság sign_in_token_attempt: Biztonsági kód + title: Cím type: Importálás típusa username: Felhasználónév username_or_email: Felhasználónév vagy e-mail cím @@ -189,6 +195,10 @@ hu: with_dns_records: Domain MX rekordjainak és IP-címeinek hozzávétele featured_tag: name: Hashtag + filters: + actions: + hide: Teljes elrejtés + warn: Elrejtés figyelmeztetéssel interactions: must_be_follower: Nem követőidtől érkező értesítések tiltása must_be_following: Nem követettjeidtől érkező értesítések tiltása diff --git a/config/locales/simple_form.id.yml b/config/locales/simple_form.id.yml index dfc4902ab..41114ef0d 100644 --- a/config/locales/simple_form.id.yml +++ b/config/locales/simple_form.id.yml @@ -178,6 +178,7 @@ id: setting_use_pending_items: Mode pelan severity: Keparahan sign_in_token_attempt: Kode keamanan + title: Judul type: Tipe impor username: Nama pengguna username_or_email: Nama pengguna atau Email @@ -186,6 +187,10 @@ id: with_dns_records: Termasuk data MX dan IP domain featured_tag: name: Tagar + filters: + actions: + hide: Sembunyikan seluruhnya + warn: Sembunyikan dengan peringatan interactions: must_be_follower: Blokir notifikasi dari non-pengikut must_be_following: Blokir notifikasi dari orang yang tidak anda ikuti @@ -219,6 +224,8 @@ id: name: Tagar trendable: Izinkan tagar ini muncul di bawah tren usable: Izinkan toot memakai tagar ini + webhook: + events: Acara yang diaktifkan 'no': Tidak recommended: Direkomendasikan required: diff --git a/config/locales/simple_form.io.yml b/config/locales/simple_form.io.yml index 5f72276b7..c6831eac2 100644 --- a/config/locales/simple_form.io.yml +++ b/config/locales/simple_form.io.yml @@ -181,6 +181,7 @@ io: setting_use_pending_items: Modo lenta severity: Severeso sign_in_token_attempt: Sekureskodexo + title: Titulo type: Tipo di importaco username: Uzernomo username_or_email: Uzantonomo o retposto @@ -189,6 +190,10 @@ io: with_dns_records: Inkluzez registraji MX e IPi di domeno featured_tag: name: Hashtago + filters: + actions: + hide: Tote celez + warn: Celez kun averto 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 diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml index 638458dae..d14673287 100644 --- a/config/locales/simple_form.is.yml +++ b/config/locales/simple_form.is.yml @@ -68,6 +68,11 @@ is: with_dns_records: Tilraun verður gerð til að leysa DNS-færslur uppgefins léns og munu niðurstöðurnar einnig verða útilokaðar featured_tag: name: 'Þú gætir viljað nota eitt af þessum:' + filters: + action: Veldu hvaða aðgerð á að framkvæma þegar færsla samsvarar síunni + actions: + hide: Fela síað efni algerlega, rétt eins og það sé ekki til staðar + warn: Fela síað efni á bakvið aðvörun sem tekur fram titil síunnar form_challenge: current_password: Þú ert að fara inn á öryggissvæði imports: @@ -181,6 +186,7 @@ is: setting_use_pending_items: Rólegur hamur severity: Mikilvægi sign_in_token_attempt: Öryggiskóði + title: Titill type: Tegund innflutnings username: Notandanafn username_or_email: Notandanafn eða tölvupóstfang @@ -189,6 +195,10 @@ is: with_dns_records: Hafa með MX-færslur og IP-vistföng lénsins featured_tag: name: Myllumerki + filters: + actions: + hide: Fela alveg + warn: Fela með aðvörun interactions: must_be_follower: Loka á tilkynningar frá þeim sem ekki eru fylgjendur must_be_following: Loka á tilkynningar frá þeim sem þú fylgist ekki með @@ -222,6 +232,12 @@ is: name: Myllumerki trendable: Leyfa þessu myllumerki að birtast undir tilhneigingum usable: Leyfa færslum að nota þetta myllumerki + user: + role: Hlutverk + user_role: + name: Nafn + permissions_as_keys: Heimildir + position: Forgangur webhook: events: Virkjaðir atburðir url: Slóð á endapunkt diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml index 4d86f24df..668474ff9 100644 --- a/config/locales/simple_form.it.yml +++ b/config/locales/simple_form.it.yml @@ -68,6 +68,11 @@ it: with_dns_records: Sarà effettuato un tentativo di risolvere i record DNS del dominio in questione e i risultati saranno inseriti anche nella blacklist featured_tag: name: 'Eccone alcuni che potresti usare:' + filters: + action: Scegli quale azione eseguire quando un post corrisponde al filtro + actions: + hide: Nascondi completamente il contenuto filtrato, come se non esistesse + warn: Nascondi il contenuto filtrato e mostra invece un avviso, citando il titolo del filtro form_challenge: current_password: Stai entrando in un'area sicura imports: @@ -91,6 +96,13 @@ it: name: Puoi cambiare solo il minuscolo/maiuscolo delle lettere, ad esempio, per renderlo più leggibile user: chosen_languages: Quando una o più lingue sono contrassegnate, nelle timeline pubbliche vengono mostrati solo i toot nelle lingue selezionate + role: Il ruolo controlla quali permessi ha l'utente + user_role: + color: Colore da usare per il ruolo in tutta l'UI, come RGB in formato esadecimale + highlighted: Rende il ruolo visibile + name: Nome pubblico del ruolo, se il ruolo è impostato per essere visualizzato come distintivo + permissions_as_keys: Gli utenti con questo ruolo avranno accesso a... + position: Il ruolo più elevato decide la risoluzione dei conflitti in determinate situazioni webhook: events: Seleziona eventi da inviare url: Dove gli eventi saranno inviati @@ -181,6 +193,7 @@ it: setting_use_pending_items: Modalità lenta severity: Severità sign_in_token_attempt: Codice di sicurezza + title: Titolo type: Tipo importazione username: Nome utente username_or_email: Nome utente o email @@ -189,6 +202,10 @@ it: with_dns_records: Includi record MX e indirizzi IP del dominio featured_tag: name: Etichetta + filters: + actions: + hide: Nascondi completamente + warn: Nascondi con avviso interactions: must_be_follower: Blocca notifiche da chi non ti segue must_be_following: Blocca notifiche dalle persone che non segui @@ -222,6 +239,14 @@ it: name: Hashtag trendable: Permetti a questo hashtag di apparire nelle tendenze usable: Permetti ai post di usare questo hashtag + user: + role: Ruolo + user_role: + color: Colore distintivo + highlighted: Mostra il ruolo come distintivo sui profili utente + name: Nome + permissions_as_keys: Permessi + position: Priorità webhook: events: Eventi abilitati url: URL endpoint diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index d79b79513..19f164e00 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -68,6 +68,11 @@ ko: with_dns_records: 입력한 도메인의 DNS를 조회를 시도하여 나온 값도 차단됩니다 featured_tag: name: '이것들을 사용하면 좋을 것 같습니다:' + filters: + action: 게시물이 필터에 걸러질 때 어떤 동작을 수행할 지 고르세요 + actions: + hide: 필터에 걸러진 글을 처음부터 없었던 것처럼 완전히 가리기 + warn: 필터에 걸러진 글을 필터 제목과 함께 경고 뒤에 가리기 form_challenge: current_password: 당신은 보안 구역에 진입하고 있습니다 imports: @@ -91,6 +96,12 @@ ko: name: 읽기 쉽게하기 위한 글자의 대소문자만 변경할 수 있습니다. user: chosen_languages: 체크하면, 선택 된 언어로 작성된 게시물들만 공개 타임라인에 보여집니다 + role: 역할은 사용자가 어떤 권한을 가지게 될 지 결정합니다 + user_role: + color: 색상은 사용자 인터페이스에서 역할을 나타내기 위해 사용되며, RGB 16진수 형식입니다 + highlighted: 이 역할이 공개적으로 보이도록 설정합니다 + name: 역할이 배지로 표시될 경우, 그 역할에 대한 공개적인 이름입니다 + permissions_as_keys: 이 역할을 가진 사용자는 다음에 접근할 수 있게 됩니다... webhook: events: 전송할 이벤트를 선택하세요 url: 이벤트가 어디로 전송될 지 @@ -181,6 +192,7 @@ ko: setting_use_pending_items: 느린 모드 severity: 심각도 sign_in_token_attempt: 보안 코드 + title: 제목 type: 불러오기 종류 username: 사용자명 username_or_email: 사용자명 또는 이메일 @@ -189,6 +201,10 @@ ko: with_dns_records: 도메인의 IP와 MX 레코드 값을 포함 featured_tag: name: 해시태그 + filters: + actions: + hide: 완전히 숨기기 + warn: 경고와 함께 숨기기 interactions: must_be_follower: 나를 팔로우 하지 않는 사람에게서 온 알림을 차단 must_be_following: 내가 팔로우 하지 않는 사람에게서 온 알림을 차단 @@ -222,6 +238,14 @@ ko: name: 해시태그 trendable: 이 해시태그가 유행에 보여지도록 허용 usable: 이 해시태그를 게시물에 사용 가능하도록 허용 + user: + role: 역할 + user_role: + color: 배지 색상 + highlighted: 역할 배지를 사용자 프로필에 표시 + name: 이름 + permissions_as_keys: 권한 + position: 우선순위 webhook: events: 활성화된 이벤트 url: 엔드포인트 URL diff --git a/config/locales/simple_form.ku.yml b/config/locales/simple_form.ku.yml index 9cfe371b5..139d46a2d 100644 --- a/config/locales/simple_form.ku.yml +++ b/config/locales/simple_form.ku.yml @@ -224,6 +224,12 @@ ku: name: Hashtag trendable: Bihêle ku ev hashtag werê xuyakirin di bin rojevê de usable: Bihêle ku şandî ev hashtag bi kar bînin + user: + role: Rol + user_role: + name: Nav + permissions_as_keys: Maf + position: Pêşikî webhook: events: Bûyerên çalakkirî url: Girêdana xala dawîbûnê diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml index 97fa2bff4..325c421cc 100644 --- a/config/locales/simple_form.lv.yml +++ b/config/locales/simple_form.lv.yml @@ -68,6 +68,11 @@ lv: with_dns_records: Tiks mēģināts atrisināt dotā domēna DNS ierakstus, un rezultāti arī tiks bloķēti featured_tag: name: 'Iespējams, vēlēsies izmantot kādu no šīm:' + filters: + action: Izvēlies, kuru darbību veikt, ja ziņa atbilst filtram + actions: + hide: Paslēp filtrēto saturu pilnībā, izturoties tā, it kā tas neeksistētu + warn: Paslēp filtrēto saturu aiz brīdinājuma, kurā minēts filtra nosaukums form_challenge: current_password: Tu ieej drošā zonā imports: @@ -91,6 +96,13 @@ lv: name: Tu vari mainīt tikai burtu lielumu, piemēram, lai tie būtu vieglāk lasāmi user: chosen_languages: Ja ieķeksēts, publiskos laika grafikos tiks parādītas tikai ziņas noteiktajās valodās + role: Loma kontrolē, kādas atļaujas ir lietotājam + user_role: + color: Krāsa, kas jāizmanto lomai visā lietotāja interfeisā, kā RGB hex formātā + highlighted: Tas padara lomu publiski redzamu + name: Lomas publiskais nosaukums, ja loma ir iestatīta rādīšanai kā emblēma + permissions_as_keys: Lietotājiem ar šo lomu būs piekļuve... + position: Augstāka loma nosaka konfliktu risināšanu noteiktās situācijās webhook: events: Atlasi nosūtāmos notikums url: Kur notikumi tiks nosūtīti @@ -181,6 +193,7 @@ lv: setting_use_pending_items: Lēnais režīms severity: Smagums sign_in_token_attempt: Drošības kods + title: Virsraksts type: Importa veids username: Lietotājvārds username_or_email: Lietotājvārds vai e-pasts @@ -189,6 +202,10 @@ lv: with_dns_records: Ietvert domēna MX ierakstus un IP adreses featured_tag: name: Tēmturis + filters: + actions: + hide: Paslēpt pilnībā + warn: Paslēpt ar brīdinājumu interactions: must_be_follower: Bloķēt paziņojumus no ne-sekotājiem must_be_following: Bloķēt paziņojumus no cilvēkiem, kuriem tu neseko @@ -222,6 +239,14 @@ lv: name: Tēmturis trendable: Atļaut šim tēmturim parādīties zem tendencēm usable: Atļaut lietot ziņās šo tēmturi + user: + role: Loma + user_role: + color: Emblēmas krāsa + highlighted: Atainot lomu kā emblēmu lietotāju profilos + name: Nosaukums + permissions_as_keys: Atļaujas + position: Prioritāte webhook: events: Iespējotie notikumi url: Galapunkta URL diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index 09dd2bd1b..cb0025f21 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -27,6 +27,8 @@ nl: scheduled_at: Laat leeg om de mededeling meteen te publiceren starts_at: Optioneel. In het geval dat jouw mededeling aan een bepaald tijdvak is gebonden text: Je kunt specifieke tekst voor berichten gebruiken. Let op de ruimte die de mededeling op het scherm van de gebruiker inneemt + appeal: + text: Je kunt maar eenmalig bezwaar indienen tegen een vastgestelde overtreding defaults: autofollow: Mensen die zich via de uitnodiging hebben geregistreerd, volgen jou automatisch avatar: PNG, GIF of JPG. Maximaal %{size}. Wordt teruggeschaald naar %{dimensions}px @@ -63,6 +65,11 @@ nl: with_dns_records: Er wordt een poging gewaagd om de desbetreffende DNS-records op te zoeken, waarna de resultaten ook worden geblokkeerd featured_tag: name: 'Je wilt misschien een van deze gebruiken:' + filters: + action: Kies welke acties uitgevoerd moeten wanneer een bericht overeenkomt met het filter + actions: + hide: Verberg de gefilterde inhoud volledig, alsof het niet bestaat + warn: Verberg de gefilterde inhoud achter een waarschuwing, met de titel van het filter als waarschuwingstekst form_challenge: current_password: Je betreedt een veilige omgeving imports: @@ -116,6 +123,8 @@ nl: scheduled_at: Mededeling inplannen starts_at: Begint text: Mededeling + appeal: + text: Leg uit waarom deze beslissing volgens jou teruggedraaid moet worden defaults: autofollow: Uitnodigen om jouw account te volgen avatar: Avatar @@ -170,6 +179,7 @@ nl: setting_use_pending_items: Langzame modus severity: Zwaarte sign_in_token_attempt: Beveiligingscode + title: Titel type: Importtype username: Gebruikersnaam username_or_email: Gebruikersnaam of e-mailadres @@ -178,6 +188,10 @@ nl: with_dns_records: MX-records en IP-adressen van het domein toevoegen featured_tag: name: Hashtag + filters: + actions: + hide: Volledig verbergen + warn: Met een waarschuwing verbergen interactions: must_be_follower: Meldingen van mensen die jou niet volgen blokkeren must_be_following: Meldingen van mensen die jij niet volgt blokkeren @@ -194,6 +208,7 @@ nl: sign_up_requires_approval: Registraties beperken severity: Regel notification_emails: + appeal: Iemand heeft bezwaar ingediend tegen een beslissing van een moderator digest: Periodiek e-mails met een samenvatting versturen favourite: Wanneer iemand jouw bericht aan diens favorieten heeft toegevoegd follow: Wanneer iemand jou is gaan volgen diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index b0373fbc6..8a9b6a905 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -68,6 +68,11 @@ pl: with_dns_records: Zostanie wykonana próba rozwiązania rekordów DNS podanej domeny, a wyniki również zostaną dodane na czarną listę featured_tag: name: 'Sugerujemy użycie jednego z następujących:' + filters: + action: Wybierz akcję do wykonania, gdy post pasuje do filtra + actions: + hide: Całkowicie ukryj przefiltrowaną zawartość, jakby nie istniała + warn: Ukryj filtrowaną zawartość za ostrzeżeniem wskazującym tytuł filtra form_challenge: current_password: Wchodzisz w strefę bezpieczną imports: @@ -181,6 +186,7 @@ pl: setting_use_pending_items: Tryb spowolniony severity: Priorytet sign_in_token_attempt: Kod zabezpieczający + title: Tytuł type: Importowane dane username: Nazwa użytkownika username_or_email: Nazwa użytkownika lub adres e-mail @@ -189,6 +195,10 @@ pl: with_dns_records: Uwzględnij rekordy MX i adresy IP domeny featured_tag: name: Hasztag + filters: + actions: + hide: Ukryj całkowicie + warn: Ukryj z ostrzeżeniem interactions: must_be_follower: Nie wyświetlaj powiadomień od osób, które Cię nie śledzą must_be_following: Nie wyświetlaj powiadomień od osób, których nie śledzisz diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml index b96952e96..9bbc6b4d7 100644 --- a/config/locales/simple_form.pt-BR.yml +++ b/config/locales/simple_form.pt-BR.yml @@ -27,6 +27,8 @@ pt-BR: scheduled_at: Deixe em branco para publicar o comunicado agora starts_at: Opcional. Caso o comunicado esteja vinculado a um período específico text: Você pode usar a sintaxe do toot. Considere o espaço que o comunicado ocupará na tela do usuário + appeal: + text: Você só pode recorrer uma vez defaults: autofollow: Pessoas que criarem conta através de seu convite te seguirão automaticamente avatar: PNG, GIF or JPG. Arquivos de até %{size}. Serão redimensionados para %{dimensions}px @@ -35,6 +37,7 @@ pt-BR: current_password: Para fins de segurança, por favor, digite a senha da conta atual current_username: Para confirmar, por favor, digite o nome de usuário da conta atual digest: Enviado apenas após um longo período de inatividade com um resumo das menções recebidas durante ausência + discoverable: Permita que a sua conta seja descoberta por estranhos através de recomendações, tendências e outros recursos email: Você receberá um e-mail de confirmação fields: Você pode ter até 4 itens mostrados em forma de tabela no seu perfil header: PNG, GIF or JPG. Arquivos de até %{size}. Serão redimensionados para %{dimensions}px @@ -46,6 +49,7 @@ pt-BR: phrase: Corresponderá independente de maiúsculas ou minúsculas, no texto ou no Aviso de Conteúdo de um toot scopes: Quais APIs o aplicativo vai ter permissão de acessar. Se você selecionar uma autorização de alto nível, você não precisa selecionar individualmente os outros. setting_aggregate_reblogs: Não mostra novos boosts para toots que receberam boost recentemente (afeta somente os boosts mais recentes) + setting_always_send_emails: Normalmente, as notificações por e-mail não serão enviadas enquanto você estiver usando ativamente o Mastodon setting_default_sensitive: Mídia sensível está oculta por padrão e pode ser revelada com um clique setting_display_media_default: Sempre ocultar mídia sensível setting_display_media_hide_all: Sempre ocultar todas as mídias @@ -64,6 +68,11 @@ pt-BR: with_dns_records: Será feita uma tentativa de resolver os registros DNS do domínio em questão e os resultados também serão colocados na lista negra featured_tag: name: 'Você pode querer usar um destes:' + filters: + action: Escolher qual ação executar quando um post corresponder ao filtro + actions: + hide: Esconder completamente o conteúdo filtrado, comportando-se como se ele não existisse + warn: Ocultar o conteúdo filtrado por trás de um aviso mencionando o título do filtro form_challenge: current_password: Você está entrando em uma área segura imports: @@ -87,6 +96,9 @@ pt-BR: name: Você pode mudar a capitalização das letras, por exemplo, para torná-la mais legível user: chosen_languages: Apenas toots dos idiomas selecionados serão mostrados nas linhas públicas + webhook: + events: Selecione eventos para enviar + url: Aonde os eventos serão enviados labels: account: fields: @@ -148,6 +160,7 @@ pt-BR: phrase: Palavra-chave ou frase setting_advanced_layout: Ativar interface web avançada setting_aggregate_reblogs: Agrupar boosts nas linhas + setting_always_send_emails: Sempre enviar notificações por e-mail setting_auto_play_gif: Reproduzir GIFs automaticamente setting_boost_modal: Solicitar confirmação antes de dar boost setting_crop_images: Cortar imagens no formato 16x9 em toots não expandidos @@ -173,6 +186,7 @@ pt-BR: setting_use_pending_items: Modo lento severity: Gravidade sign_in_token_attempt: Código de segurança + title: Título type: Tipo de importação username: Nome de usuário username_or_email: Nome de usuário ou e-mail @@ -181,6 +195,10 @@ pt-BR: with_dns_records: Incluir registros MX e IPs do domínio featured_tag: name: Hashtag + filters: + actions: + hide: Ocultar completamente + warn: Ocultar com um aviso interactions: must_be_follower: Bloquear notificações de não-seguidores must_be_following: Bloquear notificações de não-seguidos @@ -197,6 +215,7 @@ pt-BR: sign_up_requires_approval: Limitar novas contas severity: Regra notification_emails: + appeal: Alguém recorre de uma decisão moderadora digest: Enviar e-mails de resumo favourite: Enviar e-mail quando alguém favoritar teus toots follow: Enviar e-mail quando alguém te seguir @@ -213,6 +232,9 @@ pt-BR: name: Hashtag trendable: Permitir que esta hashtag fique em alta usable: Permitir que toots usem esta hashtag + webhook: + events: Eventos habilitados + url: URL do Endpoint 'no': Não recommended: Recomendado required: diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml index 16972ca6a..2ce3e1542 100644 --- a/config/locales/simple_form.pt-PT.yml +++ b/config/locales/simple_form.pt-PT.yml @@ -68,6 +68,11 @@ pt-PT: with_dns_records: Será feita uma tentativa de resolver os registos DNS do domínio em questão e os resultados também serão colocados na lista negra featured_tag: name: 'Poderás querer usar um destes:' + filters: + action: Escolha qual a ação a executar quando uma publicação corresponde ao filtro + actions: + hide: Ocultar completamente o conteúdo filtrado, comportando-se como se não existisse + warn: Ocultar o conteúdo filtrado por trás de um aviso mencionando o título do filtro form_challenge: current_password: Está a entrar numa área restrita imports: @@ -181,6 +186,7 @@ pt-PT: setting_use_pending_items: Modo lento severity: Gravidade sign_in_token_attempt: Código de segurança + title: Título type: Tipo de importação username: Nome de utilizador username_or_email: Nome de utilizador ou e-mail @@ -189,6 +195,10 @@ pt-PT: with_dns_records: Incluir registos MX e IPs do domínio featured_tag: name: Hashtag + filters: + actions: + hide: Ocultar por completo + warn: Ocultar com um aviso interactions: must_be_follower: Bloquear notificações de não-seguidores must_be_following: Bloquear notificações de pessoas que não segues diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml index 571411c09..f86bca016 100644 --- a/config/locales/simple_form.ru.yml +++ b/config/locales/simple_form.ru.yml @@ -68,6 +68,11 @@ ru: with_dns_records: Будет сделана попытка разрешить DNS-записи данного домена и результаты также будут внесены в чёрный список featured_tag: name: 'Возможно, вы захотите добавить что-то из этого:' + filters: + action: Выберите действие, которое нужно выполнить, когда сообщение соответствует фильтру + actions: + hide: Полностью скрыть отфильтрованный контент так, как будто его не существует + warn: Скрыть отфильтрованный контент за предупреждением с указанием названия фильтра form_challenge: current_password: Вы переходите к настройкам безопасности imports: @@ -91,6 +96,10 @@ ru: name: Вы можете изменить только регистр букв чтобы, например, сделать тег более читаемым user: chosen_languages: Если выбрано, то в публичных лентах будут показаны только посты на выбранных языках. + role: Роль определяет, какие разрешения есть у пользователя + user_role: + color: Цвет, который будет использоваться для роли в интерфейсе (UI), как RGB в формате HEX + permissions_as_keys: Пользователи с этой ролью будут иметь доступ... webhook: events: Выберите события для отправки url: Куда события будут отправляться @@ -181,6 +190,7 @@ ru: setting_use_pending_items: Медленный режим severity: Накладываемые ограничения sign_in_token_attempt: Код безопасности + title: Название type: Тип импорта username: Имя пользователя username_or_email: Имя пользователя или e-mail @@ -189,6 +199,10 @@ ru: with_dns_records: Включить MX-записи и IP-адреса домена featured_tag: name: Добавить хэштег + filters: + actions: + hide: Скрыть полностью + warn: Скрыть с предупреждением interactions: must_be_follower: Присылать уведомления только от подписчиков must_be_following: Присылать уведомления только от людей на которых вы подписаны @@ -222,6 +236,12 @@ ru: name: Хэштег trendable: Разрешить показ хэштега в трендах usable: Разрешить использовать этот хэштег в постах + user: + role: Роль + user_role: + name: Название + permissions_as_keys: Разрешения + position: Приоритет webhook: events: Включенные события url: Endpoint URL diff --git a/config/locales/simple_form.si.yml b/config/locales/simple_form.si.yml index 9f2e0ee31..aa51438a9 100644 --- a/config/locales/simple_form.si.yml +++ b/config/locales/simple_form.si.yml @@ -1,38 +1,246 @@ --- si: simple_form: - labels: + hints: + account_alias: + acct: ඔබට ගෙන යාමට අවශ්‍ය ගිණුමේ username@domain සඳහන් කරන්න + account_migration: + acct: ඔබට යාමට අවශ්‍ය ගිණුමේ username@domain සඳහන් කරන්න + account_warning_preset: + text: ඔබට URL, හෑෂ් ටැග් සහ සඳහන් කිරීම් වැනි පෝස්ට් සින්ටැක්ස් භාවිතා කළ හැක + title: විකල්ප. ලබන්නාට නොපෙනේ admin_account_action: - type: ක්‍රියාමාර්ගය + include_statuses: මධ්‍යස්ථ ක්‍රියාව හෝ අනතුරු ඇඟවීමට හේතු වී ඇත්තේ කුමන පළ කිරීම්දැයි පරිශීලකයා දකිනු ඇත + send_email_notification: පරිශීලකයාට ඔවුන්ගේ ගිණුම සමඟ සිදු වූ දේ පිළිබඳ පැහැදිලි කිරීමක් ලැබෙනු ඇත + text_html: විකල්ප. ඔබට post syntax භාවිතා කළ හැක. කාලය ඉතිරි කර ගැනීම සඳහා ඔබට අනතුරු ඇඟවීමේ කළ හැක + type_html: "%{acct}සමඟ කළ යුතු දේ තෝරන්න" types: - sensitive: සංවේදීතාව - suspend: අත්හිටුවන්න + disable: පරිශීලකයාගේ ගිණුම භාවිතා කිරීමෙන් වළක්වන්න, නමුත් ඔවුන්ගේ අන්තර්ගතය මකා දැමීම හෝ සඟවන්න එපා. + none: වෙනත් ක්‍රියාවක් අවුලුවාලීමකින් තොරව, පරිශීලකයාට අනතුරු ඇඟවීමක් යැවීමට මෙය භාවිතා කරන්න. + sensitive: මෙම පරිශීලකයාගේ සියලුම මාධ්‍ය ඇමුණුම් සංවේදී ලෙස සලකුණු කිරීමට බල කරන්න. + silence: පරිශීලකයාට පොදු දෘශ්‍යතාව සමඟ පළ කිරීමට හැකි වීම වළක්වන්න, ඔවුන් අනුගමනය නොකරන පුද්ගලයින්ගෙන් ඔවුන්ගේ පළ කිරීම් සහ දැනුම්දීම් සඟවන්න. + suspend: මෙම ගිණුමෙන් හෝ මෙම ගිණුමට යම් අන්තර්ක්‍රියා වළක්වා එහි අන්තර්ගතය මකා දමන්න. දින 30 ක් ඇතුළත ආපසු හැරවිය හැකිය. + warning_preset_id: විකල්ප. ඔබට තවමත් පෙරසිටුවීමේ අවසානයට අභිරුචි පෙළ එක් කළ හැක + announcement: + all_day: පරීක්ෂා කළ විට, කාල පරාසයේ දින පමණක් දර්ශනය වනු ඇත + ends_at: විකල්ප. මෙම අවස්ථාවේදී නිවේදනය ස්වයංක්‍රීයව ප්‍රකාශනය කිරීමෙන් ඉවත් වනු ඇත + scheduled_at: නිවේදනය වහාම ප්‍රකාශයට පත් කිරීමට හිස්ව තබන්න + starts_at: විකල්ප. ඔබගේ නිවේදනය නිශ්චිත කාල පරාසයකට බැඳී ඇත්නම් + text: ඔබට post syntax භාවිතා කළ හැක. කරුණාකර පරිශීලකයාගේ තිරය මත නිවේදනය ලබා ගන්නා ඉඩ ගැන සැලකිලිමත් වන්න + appeal: + text: ඔබට වර්ජනයකට අභියාචනා කළ හැක්කේ එක් වරක් පමණි defaults: + autofollow: ආරාධනාව හරහා ලියාපදිංචි වන පුද්ගලයින් ස්වයංක්‍රීයව ඔබව අනුගමනය කරනු ඇත + avatar: PNG, GIF හෝ JPG. වැඩිම %{size}. %{dimensions}px දක්වා අඩු කරනු ඇත + bot: ගිණුම ප්‍රධාන වශයෙන් ස්වයංක්‍රීය ක්‍රියා සිදු කරන බවත් නිරීක්ෂණය නොකළ හැකි බවත් අන් අයට සංඥා කරන්න + context: පෙරහන යෙදිය යුතු සන්දර්භ එකක් හෝ කිහිපයක් + current_password: ආරක්ෂක අරමුණු සඳහා කරුණාකර ජංගම ගිණුමේ මුරපදය ඇතුළත් කරන්න + current_username: තහවුරු කිරීමට, කරුණාකර වත්මන් ගිණුමේ පරිශීලක නාමය ඇතුළත් කරන්න + digest: දිගු කාලයක් අක්‍රියව සිටීමෙන් පසුව පමණක් යවන ලද අතර ඔබ නොමැති විට ඔබට කිසියම් පුද්ගලික පණිවිඩයක් ලැබී ඇත්නම් පමණි + discoverable: නිර්දේශ, ප්‍රවණතා සහ වෙනත් විශේෂාංග හරහා ඔබේ ගිණුම ආගන්තුකයන්ට සොයා ගැනීමට ඉඩ දෙන්න + email: ඔබට තහවුරු කිරීමේ විද්‍යුත් තැපෑලක් එවනු ලැබේ + fields: ඔබට ඔබගේ පැතිකඩෙහි වගුවක් ලෙස අයිතම 4ක් දක්වා පෙන්විය හැක + header: PNG, GIF හෝ JPG. වැඩිම %{size}. %{dimensions}px දක්වා අඩු කරනු ඇත + inbox_url: ඔබට භාවිතා කිරීමට අවශ්‍ය රිලේ හි මුල් පිටුවෙන් URL එක පිටපත් කරන්න + irreversible: පෙරහන පසුව ඉවත් කළද, පෙරූ පළ කිරීම් ආපසු හැරවිය නොහැකි ලෙස අතුරුදහන් වනු ඇත + locale: පරිශීලක අතුරුමුහුණතේ භාෂාව, ඊමේල් සහ තල්ලු දැනුම්දීම් + locked: අනුගමන ඉල්ලීම් අනුමත කිරීමෙන් ඔබව අනුගමනය කළ හැක්කේ කාටදැයි හස්තීයව පාලනය කරන්න + password: අවම වශයෙන් අක්ෂර 8 ක් භාවිතා කරන්න + phrase: පළ කිරීමක පෙළ හෝ අන්තර්ගත අනතුරු ඇඟවීම නොසලකා ගැලපේ + scopes: යෙදුමට ප්‍රවේශ වීමට ඉඩ දෙන්නේ කුමන API වලටද. ඔබ ඉහළ මට්ටමේ විෂය පථයක් තෝරා ගන්නේ නම්, ඔබට තනි ඒවා තෝරා ගැනීමට අවශ්‍ය නොවේ. + setting_aggregate_reblogs: මෑතකදී බූස්ට් කරන ලද පළ කිරීම් සඳහා නව බූස්ට් පෙන්වන්න එපා (අලුතින් ලැබුණු බූස්ට් වලට පමණක් බලපායි) + setting_always_send_emails: සාමාන්‍යයෙන් ඔබ Mastodon සක්‍රියව භාවිතා කරන විට විද්‍යුත් තැපැල් දැනුම්දීම් නොයවනු ඇත + setting_default_sensitive: සංවේදී මාධ්‍ය පෙරනිමියෙන් සඟවා ඇති අතර ක්ලික් කිරීමකින් හෙළිදරව් කළ හැක + setting_display_media_default: සංවේදී ලෙස සලකුණු කළ මාධ්‍ය සඟවන්න + setting_display_media_hide_all: සෑම විටම මාධ්‍ය සඟවන්න + setting_display_media_show_all: සෑම විටම මාධ්‍ය පෙන්වන්න + setting_hide_network: ඔබ අනුගමනය කරන්නේ කවුරුන්ද සහ ඔබව අනුගමනය කරන්නේ කවුරුන්ද යන්න ඔබගේ පැතිකඩෙහි සඟවනු ඇත + setting_noindex: ඔබගේ පොදු පැතිකඩ සහ පළ කිරීම් පිටු වලට බලපායි + setting_show_application: ඔබ පළ කිරීමට භාවිතා කරන යෙදුම ඔබගේ පළ කිරීම් වල සවිස්තරාත්මක දර්ශනයේ පෙන්වනු ඇත + setting_use_blurhash: අනුක්‍රමණ සැඟවුණු දෘශ්‍යවල වර්ණ මත පදනම් වන නමුත් ඕනෑම විස්තරයක් අපැහැදිලි කරයි + setting_use_pending_items: සංග්‍රහය ස්වයංක්‍රීයව අනුචලනය කරනවා වෙනුවට ක්ලික් කිරීමක් පිටුපස කාලරේඛා යාවත්කාලීන සඟවන්න + username: ඔබගේ පරිශීලක නාමය %{domain}හි අද්විතීය වනු ඇත + whole_word: මූල පදය හෝ වාක්‍ය ඛණ්ඩය අක්ෂරාංක පමණක් වන විට, එය යෙදෙන්නේ එය සම්පූර්ණ වචනයට ගැලපේ නම් පමණි + domain_allow: + domain: මෙම වසමට මෙම සේවාදායකයෙන් දත්ත ලබා ගැනීමට හැකි වන අතර එයින් ලැබෙන දත්ත සකස් කර ගබඩා කරනු ලැබේ + email_domain_block: + domain: මෙය විද්‍යුත් තැපැල් ලිපිනයේ හෝ එය භාවිතා කරන MX වාර්තාවේ පෙන්වන ඩොමේන් නාමය විය හැක. ලියාපදිංචි වූ පසු ඒවා පරීක්ෂා කරනු ලැබේ. + with_dns_records: ලබා දී ඇති වසමේ DNS වාර්තා විසඳීමට උත්සාහ කරන අතර ප්‍රතිඵල ද අවහිර කරනු ලැබේ + featured_tag: + name: 'ඔබට මේවායින් එකක් භාවිතා කිරීමට අවශ්‍ය විය හැකිය:' + filters: + action: පළ කිරීමක් පෙරහනට ගැළපෙන විට සිදු කළ යුතු ක්‍රියාව තෝරන්න + actions: + hide: පෙරහන් කළ අන්තර්ගතය සම්පූර්ණයෙන්ම සඟවන්න, එය නොපවතින ලෙස හැසිරෙන්න + warn: පෙරහන මාතෘකාව සඳහන් කරන අනතුරු ඇඟවීමක් පිටුපස පෙරූ අන්තර්ගතය සඟවන්න + form_challenge: + current_password: ඔබ ආරක්ෂිත ප්‍රදේශයකට ඇතුල් වේ + imports: + data: CSV ගොනුව වෙනත් Mastodon සේවාදායකයකින් අපනයනය කරන ලදී + invite_request: + text: මෙය ඔබගේ අයදුම්පත සමාලෝචනය කිරීමට අපට උපකාරී වනු ඇත + ip_block: + comment: විකල්ප. ඔබ මෙම රීතිය එක් කළේ මන්දැයි මතක තබා ගන්න. + expires_in: IP ලිපින යනු සීමිත සම්පතකි, ඒවා සමහර විට බෙදාගෙන ඇති අතර බොහෝ විට අත් වෙනස් වේ. මෙම හේතුව නිසා අවිනිශ්චිත IP වාරණ නිර්දේශ නොකරයි. + ip: IPv4 හෝ IPv6 ලිපිනයක් ඇතුළත් කරන්න. ඔබට CIDR සින්ටැක්ස් භාවිතයෙන් සම්පූර්ණ පරාසයන් අවහිර කළ හැක. ඔබව අගුලු නොදැමීමට ප්‍රවේශම් වන්න! + severities: + no_access: සියලු සම්පත් වෙත ප්‍රවේශය අවහිර කරන්න + sign_up_requires_approval: නව ලියාපදිංචි කිරීම් සඳහා ඔබේ අනුමැතිය අවශ්‍ය වනු ඇත + severity: මෙම IP වෙතින් ඉල්ලීම් සමඟ කුමක් සිදුවේද යන්න තෝරන්න + rule: + text: මෙම සේවාදායකයේ භාවිතා කරන්නන් සඳහා රීතියක් හෝ අවශ්‍යතාවයක් විස්තර කරන්න. එය කෙටි හා සරල කිරීමට උත්සාහ කරන්න + sessions: + otp: 'ඔබගේ දුරකථන යෙදුම මගින් උත්පාදනය කරන ලද ද්වි-සාධක කේතය ඇතුළු කරන්න හෝ ඔබගේ ප්‍රතිසාධන කේත වලින් එකක් භාවිතා කරන්න:' + webauthn: එය USB යතුරක් නම්, එය ඇතුළු කිරීමට වග බලා ගන්න, අවශ්ය නම්, එය තට්ටු කරන්න. + tag: + name: ඔබට අකුරු වල ආවරණය පමණක් වෙනස් කළ හැකිය, උදාහරණයක් ලෙස, එය වඩාත් කියවිය හැකි කිරීමට + user: + chosen_languages: පරීක්ෂා කළ විට, තෝරාගත් භාෂාවලින් පළ කිරීම් පමණක් පොදු කාලරේඛා තුළ සංදර්ශන කෙරේ + webhook: + events: යැවීමට සිදුවීම් තෝරන්න + url: සිදුවීම් යවනු ලබන ස්ථානය + labels: + account: + fields: + name: ලේබලය + value: අන්තර්ගතය + account_alias: + acct: පැරණි ගිණුමේ හැසිරවීම + account_migration: + acct: නව ගිණුමේ හැසිරවීම + account_warning_preset: + text: පෙර සැකසූ පෙළ + title: ශීර්ෂය + admin_account_action: + include_statuses: විද්‍යුත් තැපෑලෙහි වාර්තා කරන ලද පළ කිරීම් ඇතුළත් කරන්න + send_email_notification: විද්‍යුත් තැපෑලෙන් පරිශීලකයාට දැනුම් දෙන්න + text: අභිරුචි අනතුරු ඇඟවීම + type: ක්‍රියාව + types: + disable: කැටි කරන්න + none: අනතුරු ඇඟවීමක් යවන්න + sensitive: පවතී + silence: සීමාව + suspend: අවශ්ය + warning_preset_id: අනතුරු ඇඟවීමේ පෙරසිටුවක් භාවිතා කරන්න + announcement: + all_day: දවස පුරා සිදුවීම + ends_at: සිදුවීමේ අවසානය + scheduled_at: උපලේඛන ප්රකාශනය + starts_at: සිදුවීමේ ආරම්භය + text: නිවේදනය + appeal: + text: මෙම තීරණය ආපසු හැරවිය යුත්තේ මන්දැයි පැහැදිලි කරන්න + defaults: + autofollow: ඔබගේ ගිණුම අනුගමනය කිරීමට ආරාධනා කරන්න + avatar: අවතාරය bot: මෙය ස්වයං ක්‍රමලේඛගත ගිණුමකි + chosen_languages: භාෂා පෙරහන් කරන්න confirm_new_password: නව මුර පදය තහවුරු කරන්න - confirm_password: මුරපදය තහවුරු කරන්න + confirm_password: මුරපදය තහවුරු කර ඇත + context: සන්දර්භ පෙරහන් කරන්න + current_password: වත්මන් මුර පදය data: දත්ත + discoverable: අන් අයට ගිණුමක් යෝජනා කරන්න + display_name: ප්රදර්ශන නාමය email: වි-තැපැල් ලිපිනය + expires_in: පසු කල් ඉකුත් වේ + fields: පැතිකඩ පාරදත්ත + header: ශීර්ෂකය + honeypot: "%{label} (පුරවන්න එපා)" + inbox_url: රිලේ එන ලිපි URL + irreversible: සැඟවීම වෙනුවට අතහරින්න + locale: අතුරු මුහුණත භාෂාව + locked: ඉල්ලීම් අනුගමනය කිරීම අවශ්‍ය වේ + max_uses: උපරිම භාවිත ගණන new_password: නව මුරපදය + note: ජෛව + otp_attempt: ද්වි සාධක කේතය password: මුර පදය + phrase: මූල පදය හෝ වාක්‍ය ඛණ්ඩය + setting_advanced_layout: උසස් වෙබ් අතුරු මුහුණත සබල කරන්න + setting_aggregate_reblogs: කණ්ඩායම් කාලරේඛාව වැඩි කරයි + setting_always_send_emails: සෑම විටම විද්‍යුත් තැපැල් දැනුම්දීම් යවන්න + setting_auto_play_gif: සජීවිකරණ GIF ස්වයංක්‍රීයව ධාවනය කරන්න + setting_boost_modal: වැඩි කිරීමට පෙර තහවුරු කිරීමේ සංවාදය පෙන්වන්න + setting_crop_images: ප්‍රසාරණය නොකළ පළ කිරීම් වල පින්තූර 16x9 දක්වා කප්පාදු කරන්න + setting_default_language: පළ කිරීමේ භාෂාව + setting_default_privacy: පුද්ගලිකත්වය පළ කිරීම + setting_default_sensitive: සෑම විටම මාධ්‍ය සංවේදී ලෙස සලකුණු කරන්න + setting_delete_modal: පළ කිරීමක් මැකීමට පෙර තහවුරු කිරීමේ සංවාදය පෙන්වන්න + setting_disable_swiping: ස්වයිප් චලන අක්‍රීය කරන්න + setting_display_media: මාධ්ය සංදර්ශකය + setting_display_media_default: පෙරනිමිය setting_display_media_hide_all: සියල්ල සඟවන්න setting_display_media_show_all: සියල්ල පෙන්වන්න + setting_expand_spoilers: අන්තර්ගත අනතුරු ඇඟවීම් සමඟ සලකුණු කර ඇති පළ කිරීම් සැමවිටම පුළුල් කරන්න setting_hide_network: ඔබගේ ජාලය සඟවන්න - setting_theme: අඩවියේ තේමාව - sign_in_token_attempt: ආරක්‍ෂණ කේතය + setting_noindex: සෙවුම් යන්ත්‍ර සුචිගත කිරීමෙන් ඉවත් වීම + setting_reduce_motion: සජීවිකරණවල චලනය අඩු කරන්න + setting_show_application: පළ කිරීම් යැවීමට භාවිතා කරන යෙදුම හෙළි කරන්න + setting_system_font_ui: පද්ධතියේ පෙරනිමි අකුරු භාවිතා කරන්න + setting_theme: අඩවියේ මාතෘකාව + setting_trends: අද ප්‍රවණතා පෙන්වන්න + setting_unfollow_modal: යමෙකු අනුගමනය නොකිරීමට පෙර තහවුරු කිරීමේ සංවාදය පෙන්වන්න + setting_use_blurhash: සැඟවුණු මාධ්‍ය සඳහා වර්ණවත් අනුක්‍රමික පෙන්වන්න + setting_use_pending_items: මන්දගාමී මාදිලිය + severity: බරපතලකම + sign_in_token_attempt: ආරක්ෂණ කේතය + title: ශීර්ෂය + type: ආයාත වර්ගය username: පරිශීලක නාමය username_or_email: පරිශීලක නාමය හෝ වි-තැපෑල whole_word: සමස්ත වචනය + email_domain_block: + with_dns_records: වසමෙහි MX වාර්තා සහ IP ඇතුළත් කරන්න + featured_tag: + name: හෑෂ් ටැගය + filters: + actions: + hide: සම්පූර්ණයෙන්ම සඟවන්න + warn: අනතුරු ඇඟවීමක් සමඟ සඟවන්න + interactions: + must_be_follower: අනුගාමිකයින් නොවන අයගේ දැනුම්දීම් අවහිර කරන්න + must_be_following: ඔබ අනුගමනය නොකරන පුද්ගලයින්ගේ දැනුම්දීම් අවහිර කරන්න + must_be_following_dm: ඔබ අනුගමනය නොකරන පුද්ගලයින්ගෙන් සෘජු පණිවිඩ අවහිර කරන්න invite: comment: අදහස + invite_request: + text: ඔබට එක් වීමට අවශ්‍ය ඇයි? ip_block: comment: අදහස ip: අ.ජා. කෙ. (IP) severities: - no_access: ප්‍රවේශය අවහිර කරන්න + no_access: ප්රවේශය අවහිර කරන්න + sign_up_requires_approval: ලියාපදිංචි වීම සීමා කරන්න severity: නීතිය + notification_emails: + appeal: යමෙක් උපපරිපාලක තීරණයකට අභියාචනා කරයි + digest: digest ඊමේල් යවන්න + favourite: කවුරුහරි ඔබේ පළ කිරීම ප්‍රිය කළා + follow: කවුරුහරි ඔබව අනුගමනය කළා + follow_request: කවුරුහරි ඔබව අනුගමනය කරන ලෙස ඉල්ලා සිටියේය + mention: කවුරුහරි ඔබව සඳහන් කළා + pending_account: නව ගිණුම සමාලෝචනය අවශ්‍යයි + reblog: කවුරුහරි ඔබේ පළ කිරීම වැඩි කළා + report: නව වාර්තාවක් ඉදිරිපත් කෙරේ + trending_tag: නව ප්‍රවණතාවයට සමාලෝචනයක් අවශ්‍ය වේ + rule: + text: නීතිය + tag: + listable: මෙම හැෂ් ටැගය සෙවීම් සහ යෝජනා වල දිස් වීමට ඉඩ දෙන්න + name: හෑෂ් ටැගය + trendable: මෙම හැෂ් ටැගය ප්‍රවණතා යටතේ දිස් වීමට ඉඩ දෙන්න + usable: මෙම හැෂ් ටැගය භාවිතා කිරීමට පළ කිරීම් වලට ඉඩ දෙන්න + webhook: + events: සබල කළ සිදුවීම් + url: අන්ත ලක්ෂ්‍ය URL + 'no': නැත recommended: නිර්දේශිත required: mark: "*" - text: අවශ්‍යයි + text: අවශ්යයි + title: + sessions: + webauthn: පුරනය වීමට ඔබගේ ආරක්ෂක යතුරු වලින් එකක් භාවිතා කරන්න 'yes': ඔව් diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml index 04df4eb49..698a3152e 100644 --- a/config/locales/simple_form.sl.yml +++ b/config/locales/simple_form.sl.yml @@ -68,6 +68,11 @@ sl: with_dns_records: Poskus razrešitve zapisov DNS danih domen bo izveden in rezultati bodo prav tako blokirani featured_tag: name: 'Morda boste želeli uporabiti eno od teh:' + filters: + action: Izberite, kako naj se program vede, ko se objava sklada s filtrom + actions: + hide: Povsem skrij filtrirano vsebino, kot da ne bi obstajala + warn: Skrij filtrirano vsebino za opozorilom, ki pomenja naslov filtra form_challenge: current_password: Vstopate v varovano območje imports: @@ -91,6 +96,13 @@ sl: name: Spremenite lahko le npr. velikost črk (velike/male), da je bolj berljivo user: chosen_languages: Ko je označeno, bodo v javnih časovnicah prikazane samo objave v izbranih jezikih + role: Vloga nadzira, katere pravice ima uporabnik + user_role: + color: Barva, uporabljena za vlogo po celem up. vmesniku, podana v šestnajstiškem zapisu RGB + highlighted: S tem je vloga javno vidna + name: Javno ime vloge, če naj bo vloga prikazana kot priponka + permissions_as_keys: Uporabniki s to vlogo bodo imeli dostop do ... + position: Višja vloga odloča o razrešitvi sporov v določenih situacijah webhook: events: Izberite dogodke za pošiljanje url: Kam bodo poslani dogodki @@ -181,6 +193,7 @@ sl: setting_use_pending_items: Počasen način severity: Strogost sign_in_token_attempt: Varnostna koda + title: Naslov type: Vrsta uvoza username: Uporabniško ime username_or_email: Uporabniško ime ali E-pošta @@ -189,6 +202,10 @@ sl: with_dns_records: Vključi zapise MX in IP-številke domene featured_tag: name: Ključnik + filters: + actions: + hide: Povsem skrij + warn: Skrij z opozorilom interactions: must_be_follower: Blokiraj obvestila nesledilcev must_be_following: Blokiraj obvestila oseb, ki jim ne sledite @@ -222,6 +239,14 @@ sl: name: Ključnik trendable: Dovoli, da se ta ključnik pojavi med trendi usable: Dovoli, da objave uporabljajo ta ključnik + user: + role: Vloga + user_role: + color: Barva značke + highlighted: Prikaži vlogo kot značko na uporabniškem profilu + name: Ime + permissions_as_keys: Pravice + position: Prioriteta webhook: events: Omogočeni dogodki url: URL končne točke diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml index 994213065..93d0c20f0 100644 --- a/config/locales/simple_form.tr.yml +++ b/config/locales/simple_form.tr.yml @@ -68,6 +68,11 @@ tr: with_dns_records: Belirli bir alanın DNS kayıtlarını çözmeyi deneyecek ve sonuçlar kara listeye eklenecek featured_tag: name: 'Bunlardan birini kullanmak isteyebilirsiniz:' + filters: + action: Bir gönderi filtreyle eşleştiğinde hangi eylemin yapılacağını seçin + actions: + hide: Filtrelenmiş içeriği tamamen gizle, sanki varolmamış gibi + warn: Filtrelenmiş içeriği, filtrenin başlığından söz eden bir uyarının arkasında gizle form_challenge: current_password: Güvenli bir bölgeye giriyorsunuz imports: @@ -91,6 +96,13 @@ tr: name: Harflerin, örneğin daha okunabilir yapmak için, sadece büyük/küçük harf durumlarını değiştirebilirsiniz user: chosen_languages: İşaretlendiğinde, yalnızca seçilen dillerdeki tootlar genel zaman çizelgelerinde görüntülenir + role: Rol, kullanıcıların sahip olduğu izinleri denetler + user_role: + color: Arayüz boyunca rol için kullanılacak olan renk, hex biçiminde RGB + highlighted: Bu rolü herkese açık hale getirir + name: Rolün, eğer rozet olarak görüntülenmesi ayarlandıysa kullanılacak herkese açık ismi + permissions_as_keys: Bu role sahip kullanıcıların şunlara erişimi var... + position: Belirli durumlarda uyuşmazlığın çözümünde daha yüksek rol belirleyicidir webhook: events: Gönderilecek etkinlikleri seçin url: Olayların gönderileceği yer @@ -181,6 +193,7 @@ tr: setting_use_pending_items: Yavaş mod severity: Önem derecesi sign_in_token_attempt: Güvenlik kodu + title: Başlık type: İçeri aktarma türü username: Kullanıcı adı username_or_email: Kullanıcı adı ya da e-posta @@ -189,6 +202,10 @@ tr: with_dns_records: Alan adının MX kayıtlarını ve IP'lerini ekleyin featured_tag: name: Etiket + filters: + actions: + hide: Tamamen gizle + warn: Uyarıyla gizle interactions: must_be_follower: Takipçim olmayan kişilerden gelen bildirimleri engelle must_be_following: Takip etmediğim kişilerden gelen bildirimleri engelle @@ -222,6 +239,14 @@ tr: name: Etiket trendable: Bu etiketin gündem altında görünmesine izin ver usable: Tootların bu etiketi kullanmasına izin ver + user: + role: Rol + user_role: + color: Rozet rengi + highlighted: Rolü kullanıcıların profilinde rozet olarak görüntüle + name: Ad + permissions_as_keys: İzinler + position: Öncelik webhook: events: Etkin olaylar url: Uç nokta URL’si diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index 9b8ecb573..8763e0226 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -68,6 +68,11 @@ uk: with_dns_records: Спроба визначення DNS-записів заданого домену буде здійснена, а результати також будуть занесені до чорного списку featured_tag: name: 'Можливо, ви захочете використовувати один з цих:' + filters: + action: Виберіть дію для виконання коли допис збігається з фільтром + actions: + hide: Повністю сховати фільтрований вміст, ніби його не існує + warn: Сховати відфільтрований вміст за попередженням, у якому вказано заголовок фільтра form_challenge: current_password: Ви входите до безпечної зони imports: @@ -181,6 +186,7 @@ uk: setting_use_pending_items: Повільний режим severity: Серйозність sign_in_token_attempt: Код безпеки + title: Заголовок type: Тип імпорту username: Ім'я користувача username_or_email: Ім'я користувача або електронна пошта @@ -189,6 +195,10 @@ uk: with_dns_records: Включити MX записи та IP-адреси домену featured_tag: name: Хештеґ + filters: + actions: + hide: Сховати повністю + warn: Сховати за попередженням interactions: must_be_follower: Блокувати сповіщення від непідписаних людей must_be_following: Блокувати сповіщення від людей, на яких ви не підписані diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml index 729be6634..915bb4d24 100644 --- a/config/locales/simple_form.vi.yml +++ b/config/locales/simple_form.vi.yml @@ -68,6 +68,11 @@ vi: with_dns_records: Nếu DNS có vấn đề, nó sẽ bị đưa vào danh sách cấm featured_tag: name: 'Những hashtag gợi ý cho bạn:' + filters: + action: Chọn hành động sẽ thực hiện khi một tút khớp với bộ lọc + actions: + hide: Ẩn hoàn toàn nội dung đã lọc, hoạt động như thể nó không tồn tại + warn: Ẩn nội dung đã lọc đằng sau một cảnh báo đề cập đến tiêu đề của bộ lọc form_challenge: current_password: Biểu mẫu này an toàn imports: @@ -91,6 +96,13 @@ vi: name: Bạn có thể thay đổi cách viết hoa các chữ cái để giúp nó dễ đọc hơn user: chosen_languages: Chỉ hiển thị những tút viết bằng các ngôn ngữ được chọn sau + role: Vai trò kiểm soát những quyền mà người dùng có + user_role: + color: Màu được sử dụng cho vai trò trong toàn bộ giao diện người dùng, dưới dạng RGB ở định dạng hex + highlighted: Vai trò sẽ hiển thị công khai + name: Tên công khai của vai trò, nếu vai trò được đặt để hiển thị dưới dạng huy hiệu + permissions_as_keys: Người dùng có vai trò này sẽ có quyền truy cập vào... + position: Vai trò cao hơn quyết định việc giải quyết xung đột trong một số tình huống nhất định webhook: events: Chọn sự kiện để gửi url: Nơi những sự kiện được gửi đến @@ -181,6 +193,7 @@ vi: setting_use_pending_items: Không tự động cập nhật bảng tin severity: Mức độ nghiêm trọng sign_in_token_attempt: Mã an toàn + title: Tựa đề type: Kiểu nhập username: Tên người dùng username_or_email: Tên người dùng hoặc email @@ -189,6 +202,10 @@ vi: with_dns_records: Bao gồm bản ghi MX và địa chỉ IP của máy chủ featured_tag: name: Hashtag + filters: + actions: + hide: Ẩn toàn bộ + warn: Ẩn kèm theo cảnh báo interactions: must_be_follower: Chặn thông báo từ những người không theo dõi bạn must_be_following: Chặn thông báo từ những người bạn không theo dõi @@ -222,6 +239,14 @@ vi: name: Hashtag trendable: Cho phép xuất hiện trong xu hướng usable: Cho phép dùng trong tút + user: + role: Vai trò + user_role: + color: Màu huy hiệu + highlighted: Hiển thị huy hiệu vai trò trên hồ sơ người dùng + name: Tên + permissions_as_keys: Quyền + position: Mức độ ưu tiên webhook: events: Những sự kiện đã bật url: URL endpoint diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index 4cc6af416..0526df527 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -68,6 +68,11 @@ zh-TW: with_dns_records: Mastodon 會嘗試解析所給域名的 DNS 記錄,解析結果一致者將一併封鎖 featured_tag: name: 您可能想使用其中一個: + filters: + action: 請選擇當嘟文符合該過濾器時將被執行之動作 + actions: + hide: 完全隱藏過濾內容,當作它似乎不曾存在過 + warn: 隱藏過濾內容於過濾器標題之警告後 form_challenge: current_password: 您正要進入安全區域 imports: @@ -91,6 +96,13 @@ zh-TW: name: 您只能變更大小寫,例如,以使其更易讀。 user: chosen_languages: 當核取時,只有選取語言的嘟文會在公開時間軸中顯示 + role: 角色控制使用者有哪些權限 + user_role: + color: 在整個使用者介面中用於角色的顏色,十六進位格式的 RGB + highlighted: 這會讓角色公開可見 + name: 角色的公開名稱,如果角色設定為顯示為徽章 + permissions_as_keys: 有此角色的使用者將有權存取…… + position: 更高的角色決定在某些情況下解決衝突 webhook: events: 請選擇要傳送的事件 url: 事件會被傳送至何處 @@ -181,6 +193,7 @@ zh-TW: setting_use_pending_items: 限速模式 severity: 優先級 sign_in_token_attempt: 安全代碼 + title: 標題 type: 匯入類型 username: 使用者名稱 username_or_email: 使用者名稱或電子信箱地址 @@ -189,6 +202,10 @@ zh-TW: with_dns_records: 包括網域的 MX 記錄和 IP 位址 featured_tag: name: "「#」標籤" + filters: + actions: + hide: 完全隱藏 + warn: 隱藏於警告之後 interactions: must_be_follower: 封鎖非跟隨者的通知 must_be_following: 封鎖您未跟隨之使用者的通知 @@ -222,6 +239,14 @@ zh-TW: name: 主題標籤 trendable: 允許此主題標籤在趨勢下顯示 usable: 允許嘟文使用此主題標籤 + user: + role: 角色 + user_role: + color: 識別顏色 + highlighted: 在使用者個人資料上將角色顯示為徽章 + name: 名稱 + permissions_as_keys: 權限 + position: 優先權 webhook: events: 已啟用的事件 url: 端點 URL diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 1f64c78c7..5fefb4e09 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -87,9 +87,7 @@ sk: posts_tab_heading: Príspevky posts_with_replies: Príspevky s odpoveďami roles: - admin: Správca group: Skupina - moderator: Moderátor unavailable: Profil nieje dostupný unfollow: Prestaň sledovať admin: @@ -107,7 +105,6 @@ sk: avatar: Maskot by_domain: Doména change_email: - changed_msg: Email pre tento účet bol úspešne zmenený! current_email: Súčasný email label: Zmeň email new_email: Nový email @@ -174,12 +171,6 @@ sk: reset: Resetuj reset_password: Obnov heslo resubscribe: Znovu odoberaj - role: Oprávnenia - roles: - admin: Správca - moderator: Moderátor - staff: Člen - user: Užívateľ search: Hľadaj search_same_email_domain: Iní užívatelia s tou istou emailovou doménou search_same_ip: Ostatní užívatelia s rovnakou IP adresou @@ -374,8 +365,11 @@ sk: back_to_warning: Upozornenie by_domain: Doména content_policies: + comment: Interná poznámka policies: + reject_media: Zamietni médiá suspend: Vylúč + reason: Verejné odôvodnenie delivery: all: Všetko unavailable: Nedostupné @@ -473,6 +467,9 @@ sk: unassign: Odober unresolved: Nevyriešené updated_at: Aktualizované + rules: + empty: Žiadne pravidlá servera ešte neboli určené. + title: Serverové pravidlá settings: activity_api_enabled: desc_html: Sčítanie miestne uverejnených príspevkov, aktívnych užívateľov, a nových registrácii, v týždenných intervaloch @@ -518,9 +515,6 @@ sk: deletion: desc_html: Dovoľ každému, aby si mohli vymazať svok účet title: Sprístupni možnosť vymazať si účet - min_invite_role: - disabled: Nikto - title: Povoľ pozvánky od registrations_mode: modes: approved: Pre registráciu je nutné povolenie @@ -530,9 +524,6 @@ sk: show_known_fediverse_at_about_page: desc_html: Ak je zapnuté, bude v ukážke osi možné nahliadnúť príspevky z celého známeho fediversa. Inak budú ukázané iba príspevky z miestnej osi. title: Ukáž celé známe fediverse na náhľade osi - show_staff_badge: - desc_html: Ukáž moderátorsky odznak na užívateľovom profile - title: Ukáž značku moderátora site_description: desc_html: Oboznamujúci paragraf na hlavnej stránke a pri meta tagoch. Opíš, čo robí tento Mastodon server špecifickým, a ďalej hocičo iné, čo považuješ za dôležité. Môžeš použiť HTML kód, hlavne <a> a <em>. title: Popis servera @@ -774,7 +765,6 @@ sk: title: Uprav triedenie errors: invalid_context: Nebola poskytnutá žiadna, alebo ide o neplatnú súvislosť - invalid_irreversible: Nezvratné filtrovanie funguje iba so súvislostiami domovskej osi a oboznámení index: delete: Vymaž empty: Nemáš žiadné filtrovanie. diff --git a/config/locales/sl.yml b/config/locales/sl.yml index ff3492d60..5eaf0afee 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -91,10 +91,8 @@ sl: posts_tab_heading: Objave posts_with_replies: Objave in odgovori roles: - admin: Skrbnik bot: Robot group: Skupina - moderator: Mod unavailable: Profil ni na voljo unfollow: Prenehaj slediti admin: @@ -113,12 +111,17 @@ sl: avatar: Podoba by_domain: Domena change_email: - changed_msg: E-pošta računa je uspešno spremenjena! + changed_msg: E-pošni naslov uspešno spremenjen! current_email: Trenutna e-pošta label: Spremeni e-pošto new_email: Nova e-pošta submit: Spremeni e-pošto title: Spremeni e-pošto za %{username} + change_role: + changed_msg: Vloga uspešno spremenjena! + label: Spremeni vlogo + no_role: Ni vloge + title: Spremeni vlogo za %{username} confirm: Potrdi confirmed: Potrjeno confirming: Potrjujem @@ -162,6 +165,7 @@ sl: active: Dejaven all: Vse pending: Na čakanju + silenced: Omejeno suspended: Suspendiran title: Moderiranje moderation_notes: Opombe moderiranja @@ -169,6 +173,7 @@ sl: most_recent_ip: Zadnji IP no_account_selected: Noben račun ni bil spremenjen, ker ni bil izbran noben no_limits_imposed: Brez omejitev + no_role_assigned: Dodeljena ni nobena vloga not_subscribed: Ni naročen pending: Čakanje na pregled perform_full_suspension: Suspendiraj @@ -197,12 +202,7 @@ sl: reset: Ponastavi reset_password: Ponastavi geslo resubscribe: Ponovno se naroči - role: Dovoljenja - roles: - admin: Skrbnik - moderator: Moderator - staff: Osebje - user: Uporabnik + role: Vloga search: Iskanje search_same_email_domain: Drugi uporabniki z isto domeno e-pošte search_same_ip: Drugi uporabniki z istim IP @@ -677,6 +677,61 @@ sl: unresolved: Nerešeni updated_at: Posodobljeni view_profile: Pokaži profil + roles: + add_new: Dodaj vlogo + assigned_users: + few: "%{count} uporabniki" + one: "%{count} uporabnik" + other: "%{count} uporabnikov" + two: "%{count} uporabnika" + categories: + administration: Upravljanje + invites: Povabila + moderation: Moderiranje + special: Posebno + delete: Izbriši + description_html: Z uporabniškimi vlogami lahko prilagodite, do katerih funkcij in področij Mastodona lahko dostopajo vaši uporabniki. + edit: Uredi vlogo %{name} + everyone: Privzete pravice + everyone_full_description_html: To je osnovna vloga, ki vpliva na vse uporabnike, celo na tiste brez dodeljene vloge. Vse druge vloge dedujejo njene pravice. + permissions_count: + few: "%{count} pravice" + one: "%{count} pravica" + other: "%{count} pravic" + two: "%{count} pravici" + privileges: + administrator: Skrbnik + administrator_description: Uporabniki s temi pravicami bodo zaobšli vse pravice + delete_user_data: Izbriši uporabniške podatke + delete_user_data_description: Omogoča uporabnikom, da izbrišejo podatke drugih uporabnikov brez časvnega zamika + invite_users: Povabi uporabnike + invite_users_description: Omogoča uporabnikom, da povabi nove osebe na strežnik + manage_announcements: Upravljaj obvestila + manage_announcements_description: Omogoča uporabnikom, da upravljajo obvestila na strežniku + manage_appeals: Upravljaj pritožbe + manage_appeals_description: Omogoča uporabnikom, da pregledajo pritožbe glede dejanj moderiranja + manage_blocks: Upravljaj blokirano + manage_blocks_description: Omogoča uporabnikom, da blokirajo ponudnike e-pošte in naslove IP + manage_invites: Upravljaj vabila + manage_invites_description: Omogoča uporabnikom, da brskajo in deaktivirajo povezave povabil + manage_reports: Upravljaj poročila + manage_reports_description: Omogoča uporabnikom, da pregledajo poročila in glede le-teh opravijo dejanja moderiranja + manage_roles: Upravljaj vloge + manage_rules: Upravljaj pravila + manage_rules_description: Omogoča uporabnikom, da spremenijo pravila strežnika + manage_settings: Upravljaj nastavitve + manage_settings_description: Omogoča uporabnikom, da spremenijo nastavitve spletišča + manage_taxonomies: Upravljaj taksonomije + manage_user_access: Upravljaj dostop uporabnikov + manage_users: Upravljaj uporabnike + manage_users_description: Omogoča uporabnikom, da vidijo podrobnosti drugih uporabnikov in nad njimi izvedejo dejanja moderiranja + manage_webhooks: Upravljaj spletne zanke + manage_webhooks_description: Omogoča uporabnikom, da vzpostavijo nove spletne zanke za skrbniške dogodke + view_audit_log_description: Omogoča, da uporabnik vidi zgodovino skrbniških opravil na strežniku + view_dashboard: Pokaži nadzorno ploščo + view_dashboard_description: Omogoča uporabnikom, da dostopajo do nadzorne plošče in različnih meritev + view_devops_description: Omogoča uporabnikom, da dostopajo do nadzornih plošč Sidekiq in phHero + title: Vloge rules: add_new: Dodaj pravilo delete: Izbriši @@ -729,9 +784,6 @@ sl: deletion: desc_html: Dovoli vsakomur, da izbriše svoj račun title: Odpri brisanje računa - min_invite_role: - disabled: Nihče - title: Dovoli vabila od require_invite_text: desc_html: Če registracije zahtevajo ročno potrditev, nastavite vnos besedila pod »Zakaj se želite pridružiti?« za obveznega title: Zahteva, da novi uprorabniki navedejo razlog, zakaj se želijo registrirati @@ -744,9 +796,6 @@ sl: show_known_fediverse_at_about_page: desc_html: Ko preklopite, bo prikazal objave vseh znanih fediverzumov v predogledu. V nasprotnem primeru bodo prikazane samo krajevne objave. title: Pokaži znane fediverse-e v predogledu časovnice - show_staff_badge: - desc_html: Prikaži značko osebja na uporabniški strani - title: Prikaži značko osebja site_description: desc_html: Uvodni odstavek na API-ju. Opišite, zakaj je ta Mastodon strežnik poseben in karkoli pomembnega. Lahko uporabite HTML oznake, zlasti <a> in <em>. title: Opis strežnika @@ -896,6 +945,11 @@ sl: empty: Zaenkrat še nimate prilagojenih končnih točk spletnih zank. enable: Omogoči enabled: Dejaven + enabled_events: + few: "%{count} omogočeni dogodki" + one: "%{count} omogočen dogodek" + other: "%{count} omogočenih dogodkov" + two: "%{count} omogočena dogodka" events: Dogodki new: Nova spletna zanka rotate_secret: Zasukaj skrivnost @@ -1155,15 +1209,26 @@ sl: public: Javne časovnice thread: Pogovori edit: + add_keyword: Dodaj ključno besedo + keywords: Ključne besede title: Uredite filter errors: + deprecated_api_multiple_keywords: Teh parametrov ni mogoče spremeniti iz tega programa, ker veljajo za več kot eno ključno besedo filtra. Uporabite novejšo izdaj programa ali spletni vmesnik. invalid_context: Ne vsebuje nobenega ali vsebuje neveljaven kontekst - invalid_irreversible: Nepovratno filtriranje deluje le v kontekstu doma ali obvestil index: + contexts: Filtri v %{contexts} delete: Izbriši empty: Nimate filtrov. + expires_in: Poteče čez %{distance} + expires_on: Poteče %{date} + keywords: + few: "%{count} ključne besede" + one: "%{count} ključna beseda" + other: "%{count} ključnih besed" + two: "%{count} ključni besedi" title: Filtri new: + save: Shrani nov filter title: Dodaj nov filter footer: developers: Razvijalci @@ -1286,6 +1351,8 @@ sl: copy_account_note_text: 'Ta uporabnik se je preselil iz %{acct}, tukaj so vaše poprejšnje opombe o njem:' notification_mailer: admin: + report: + subject: "%{name} je oddal/a prijavo" sign_up: subject: "%{name} se je vpisal/a" digest: diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 0e4d9871e..748072c29 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -83,10 +83,8 @@ sq: posts_tab_heading: Mesazhe posts_with_replies: Mesazhe dhe përgjigje roles: - admin: Përgjegjës bot: Robot group: Grup - moderator: Moderator unavailable: Profil jashtë funksionimi unfollow: Resht së ndjekuri admin: @@ -105,7 +103,6 @@ sq: avatar: Avatar by_domain: Përkatësi change_email: - changed_msg: Email-i i llogarisë u ndryshua me sukses! current_email: Email-i i tanishëm label: Ndrysho email-in new_email: Email i ri @@ -187,12 +184,6 @@ sq: reset: Riktheje te parazgjedhjet reset_password: Ricaktoni fjalëkalimin resubscribe: Ripajtohuni - role: Leje - roles: - admin: Përgjegjës - moderator: Moderator - staff: Staf - user: Përdorues search: Kërkoni search_same_email_domain: Të tjerë përdorues me të njëjtën përkatësi email-i search_same_ip: Të tjerë përdorues me të njëjtën IP @@ -700,9 +691,6 @@ sq: deletion: desc_html: Lejo këdo të fshijë llogarinë e vet title: Hapni fshirje llogarie - min_invite_role: - disabled: Asnjë - title: Lejo ftesa nga require_invite_text: desc_html: Kur regjistrimet lypin miratim dorazi, tekstin e kërkesës për ftesë “Pse doni të merrni pjesë?” bëje të detyrueshëm, në vend se opsional title: Kërkoju përdoruesve të rinj të plotësojnë doemos një tekst kërkese për ftesë @@ -715,9 +703,6 @@ sq: show_known_fediverse_at_about_page: desc_html: Kur përdoret, do të shfaqë mesazhe prej krejt fediversit të njohur, si paraparje. Përndryshe do të shfaqë vetëm mesazhe vendore title: Përfshi lëndë të federuar në faqe rrjedhe publike kohore të pamirëfilltësuar - show_staff_badge: - desc_html: Shfaq një stemë stafi në faqen e një përdoruesi - title: Shfaq stemë stafi site_description: desc_html: Paragraf hyrës te faqja ballore. Përshkruani ç’e bën special këtë shërbyes Mastodon dhe çfarëdo gjëje tjetër të rëndësishme. Mund të përdorni etiketa HTML, veçanërisht <a> dhe <em>. title: Përshkrim shërbyesi @@ -1119,7 +1104,6 @@ sq: title: Përpunoni filtër errors: invalid_context: Ose s’u dha fare, ose u dha kontekst i pavlefshëm - invalid_irreversible: Filtrim i pakthyeshëm funksionon vetëm me kontekste home ose njoftimesh index: delete: Fshije empty: S’keni filtra. diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index cfea20c55..a94893b9e 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -19,9 +19,6 @@ sr-Latn: people_followed_by: Ljudi koje %{name} prati people_who_follow: Ljudi koji prate %{name} posts_with_replies: Tutovi i odgovori - roles: - admin: Administrator - moderator: Moderator unfollow: Otprati admin: account_moderation_notes: @@ -76,10 +73,6 @@ sr-Latn: reset: Resetuj reset_password: Resetuj lozinku resubscribe: Ponovo se pretplati - role: Ovlašćenja - roles: - staff: Osoblje - user: Korisnik search: Pretraga shared_inbox_url: Adresa deljenog sandučeta show: @@ -180,12 +173,6 @@ sr-Latn: deletion: desc_html: Dozvoli svima da mogu da obrišu svoj nalog title: Otvori brisanje naloga - min_invite_role: - disabled: Niko - title: Samo preko pozivnice - show_staff_badge: - desc_html: Prikaži bedž osoblja na korisničkoj strani - title: Prikaži bedž osoblja site_description: desc_html: Uvodni pasus na naslovnoj strani i u meta HTML tagovima. Možete koristiti HTML tagove, konkretno <a> i <em>. title: Opis instance diff --git a/config/locales/sr.yml b/config/locales/sr.yml index 445f8f326..2042fc440 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -52,9 +52,7 @@ sr: posts_tab_heading: Трубе posts_with_replies: Трубе и одговори roles: - admin: Администратор bot: Бот - moderator: Модератор unavailable: Налог је недоступан unfollow: Отпрати admin: @@ -70,7 +68,6 @@ sr: avatar: Аватар by_domain: Домен change_email: - changed_msg: Е-пошта налога успешно промењена! current_email: Тренутна е-пошта label: Промените е-пошту new_email: Нова e-пошта @@ -130,12 +127,6 @@ sr: reset: Ресетуј reset_password: Ресетуј лозинку resubscribe: Поново се претплати - role: Овлашћења - roles: - admin: Администратор - moderator: Модератор - staff: Особље - user: Корисник search: Претрага shared_inbox_url: Адреса дељеног сандучета show: @@ -312,15 +303,9 @@ sr: deletion: desc_html: Дозволи свима да могу да обришу свој налог title: Отвори брисање налога - min_invite_role: - disabled: Нико - title: Само преко позивнице show_known_fediverse_at_about_page: desc_html: Када се упали, показаће трубе из свих знаних федиверса на преглед. У супротном ће само показати локалне трубе. title: Покажи познате здружене инстанце у прегледнику временске линије - show_staff_badge: - desc_html: Прикажи беџ особља на корисничкој страни - title: Прикажи беџ особља site_description: desc_html: Уводни пасус на насловној страни и у meta HTML таговима. Можете користити HTML тагове, конкретно <a> и <em>. title: Опис инстанце @@ -459,7 +444,6 @@ sr: title: Измени филтер errors: invalid_context: Ниједан или неважећи контекст испоручен - invalid_irreversible: Неповратно филтрирање функционише само са почетном или контекстом обавештења index: delete: Избриши title: Филтери diff --git a/config/locales/sv.yml b/config/locales/sv.yml index a84ae6cfe..1e238b196 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -80,10 +80,8 @@ sv: posts_tab_heading: Tutor posts_with_replies: Toots med svar roles: - admin: Administratör bot: Robot group: Grupp - moderator: Moderator unavailable: Profilen är inte tillgänglig unfollow: Sluta följa admin: @@ -101,7 +99,6 @@ sv: avatar: Profilbild by_domain: Domän change_email: - changed_msg: E-postadressen har ändrats! current_email: Nuvarande E-postadress label: Byt E-postadress new_email: Ny E-postadress @@ -177,12 +174,6 @@ sv: reset: Återställ reset_password: Återställ lösenord resubscribe: Starta en ny prenumeration - role: Behörigheter - roles: - admin: Administratör - moderator: Moderator - staff: Personal - user: Användare search: Sök search_same_email_domain: Andra användare med samma e-postdomän search_same_ip: Annan användare med samma IP-adress @@ -565,9 +556,6 @@ sv: deletion: desc_html: Tillåt vem som helst att radera sitt konto title: Öppen kontoradering - min_invite_role: - disabled: Ingen - title: Tillåt inbjudningar av require_invite_text: desc_html: När nyregistrering kräver manuellt godkännande, gör det obligatoriskt att fylla i text i fältet "Varför vill du gå med?" title: Kräv att nya användare fyller i en inbjudningsförfrågan @@ -580,9 +568,6 @@ sv: show_known_fediverse_at_about_page: desc_html: När den växlas, kommer toots från hela fediverse visas på förhandsvisning. Annars visas bara lokala toots. title: Visa det kända fediverse på tidslinjens förhandsgranskning - show_staff_badge: - desc_html: Visa en personalbricka på en användarsida - title: Visa personalbricka site_description: desc_html: Inledande stycke på framsidan och i metataggar. Du kan använda HTML-taggar, i synnerhet <a> och <em>. title: Instansbeskrivning diff --git a/config/locales/ta.yml b/config/locales/ta.yml index 3016250cc..d2b753cf3 100644 --- a/config/locales/ta.yml +++ b/config/locales/ta.yml @@ -62,10 +62,8 @@ ta: posts_tab_heading: பிளிறல்கள் posts_with_replies: பிளிறல்கள் மற்றும் மறுமொழிகள் roles: - admin: நிர்வாகி bot: பொறி group: குழு - moderator: மட்டுறுத்துநர் unavailable: சுயவிவரம் கிடைக்கவில்லை unfollow: பின்தொடராதே admin: @@ -83,7 +81,6 @@ ta: avatar: அவதாரம் by_domain: தளம் change_email: - changed_msg: உறிமை மின் அஞ்சல் வெற்றிகரமாக மாற்ற்ப்பட்டது! current_email: தற்கால மின் அஞ்சல் label: மின் அஞ்சலை மற்றுக new_email: புதிய மின் அஞ்சல் @@ -139,12 +136,6 @@ ta: already_confirmed: இப்பயனர் ஏற்கனவே உறுதி படுத்திவிட்டார் reset: மீட்டமைக்கவும் reset_password: கடவுச்சொல்லை மீளமைத்திடுக - role: அனுமதி - roles: - admin: நிர்வாகி - moderator: நடுவர் - staff: பணியாளர் - user: பயனர் search: தேடு search_same_email_domain: இம்மின்னஞ்சல் களத்தில் உள்ள மற்ற பயனர்கள் shared_inbox_url: குழு மின்னஞ்சல் முகவரி diff --git a/config/locales/te.yml b/config/locales/te.yml index 7f6aa0f09..fe39bb752 100644 --- a/config/locales/te.yml +++ b/config/locales/te.yml @@ -48,9 +48,7 @@ te: posts_tab_heading: టూట్లు posts_with_replies: టూట్లు మరియు ప్రత్యుత్తరాలు roles: - admin: నిర్వాహకులు bot: బోట్ - moderator: నియంత్రికుడు unfollow: అనుసరించవద్దు admin: account_actions: @@ -65,7 +63,6 @@ te: avatar: అవతారం by_domain: డొమైను change_email: - changed_msg: ఖాతా యొక్క ఈమెయిల్ విజయవంతంగా మార్చబడింది! current_email: ప్రస్తుత ఈమెయిల్ label: ఈమెయిల్ ను మార్చు new_email: కొత్త ఈమెయిల్ diff --git a/config/locales/th.yml b/config/locales/th.yml index 57fbc1fdd..996382543 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -74,10 +74,8 @@ th: posts_tab_heading: โพสต์ posts_with_replies: โพสต์และการตอบกลับ roles: - admin: ผู้ดูแล bot: บอต group: กลุ่ม - moderator: ผู้ควบคุม unavailable: โปรไฟล์ไม่พร้อมใช้งาน unfollow: เลิกติดตาม admin: @@ -96,7 +94,6 @@ th: avatar: ภาพประจำตัว by_domain: โดเมน change_email: - changed_msg: เปลี่ยนอีเมลบัญชีสำเร็จ! current_email: อีเมลปัจจุบัน label: เปลี่ยนอีเมล new_email: อีเมลใหม่ @@ -177,12 +174,6 @@ th: reset: รีเซ็ต reset_password: ตั้งรหัสผ่านใหม่ resubscribe: บอกรับใหม่ - role: สิทธิอนุญาต - roles: - admin: ผู้ดูแล - moderator: ผู้ควบคุม - staff: พนักงาน - user: ผู้ใช้ search: ค้นหา search_same_email_domain: ผู้ใช้อื่น ๆ ที่มีโดเมนอีเมลเดียวกัน search_same_ip: ผู้ใช้อื่น ๆ ที่มี IP เดียวกัน @@ -647,9 +638,6 @@ th: deletion: desc_html: อนุญาตให้ใครก็ตามลบบัญชีของเขา title: เปิดการลบบัญชี - min_invite_role: - disabled: ไม่มีใคร - title: อนุญาตคำเชิญโดย require_invite_text: title: ต้องให้ผู้ใช้ใหม่ป้อนเหตุผลที่จะเข้าร่วม registrations_mode: @@ -661,9 +649,6 @@ th: show_known_fediverse_at_about_page: desc_html: เมื่อปิดใช้งาน จำกัดเส้นเวลาสาธารณะที่เชื่อมโยงจากหน้าเริ่มต้นให้แสดงเฉพาะเนื้อหาในเซิร์ฟเวอร์เท่านั้น title: รวมเนื้อหาที่ติดต่อกับภายนอกไว้ในหน้าเส้นเวลาสาธารณะที่ไม่ได้รับรองความถูกต้อง - show_staff_badge: - desc_html: แสดงป้ายพนักงานในหน้าผู้ใช้ - title: แสดงป้ายพนักงาน site_description: desc_html: ย่อหน้าเกริ่นนำใน API อธิบายถึงสิ่งที่ทำให้เซิร์ฟเวอร์ Mastodon นี้พิเศษและสิ่งอื่นใดที่สำคัญ คุณสามารถใช้แท็ก HTML โดยเฉพาะอย่างยิ่ง <a> และ <em> title: คำอธิบายเซิร์ฟเวอร์ diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 7bd5723c4..bc2b730f8 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -83,10 +83,8 @@ tr: posts_tab_heading: Tootlar posts_with_replies: Tootlar ve yanıtlar roles: - admin: Yönetici bot: Bot group: Grup - moderator: Denetleyici unavailable: Profil kullanılamıyor unfollow: Takibi bırak admin: @@ -105,12 +103,17 @@ tr: avatar: Profil resmi by_domain: Alan adı change_email: - changed_msg: Hesap e-postası başarıyla değiştirildi! + changed_msg: E-posta başarıyla değiştirildi! current_email: Mevcut e-posta label: E-postayı değiştir new_email: Yeni e-posta submit: E-postayı değiştir title: "%{username} için e-postayı değiştir" + change_role: + changed_msg: Rol başarıyla değiştirildi! + label: Rolü değiştir + no_role: Rol yok + title: "%{username} için rolü değiştir" confirm: Onayla confirmed: Onaylandı confirming: Onaylanıyor @@ -154,6 +157,7 @@ tr: active: Etkin all: Hepsi pending: Bekliyor + silenced: Sınırlı suspended: Uzaklaştırılanlar title: Denetim moderation_notes: Denetleme notları @@ -161,6 +165,7 @@ tr: most_recent_ip: Son IP no_account_selected: Hiçbiri seçilmediğinden hiçbir hesap değiştirilmedi no_limits_imposed: Sınır koymaz + no_role_assigned: Rol atanmamış not_subscribed: Abone edilmedi pending: Bekleyen yorum perform_full_suspension: Askıya al @@ -187,12 +192,7 @@ tr: reset: Sıfırla reset_password: Parolayı sıfırla resubscribe: Yeniden abone ol - role: İzinler - roles: - admin: Yönetici - moderator: Denetleyici - staff: Personel - user: Kullanıcı + role: Rol search: Ara search_same_email_domain: Aynı e-posta alan adına sahip diğer kullanıcılar search_same_ip: Aynı IP adresine sahip diğer kullanıcılar @@ -649,6 +649,67 @@ tr: unresolved: Giderilmedi updated_at: Güncellendi view_profile: Profili görüntüle + roles: + add_new: Rol ekle + assigned_users: + one: "%{count} kullanıcı" + other: "%{count} kullanıcı" + categories: + administration: Yönetim + devops: Devops + invites: Davetler + moderation: Denetim + special: Özel + delete: Sil + description_html: "Kullanıcı rolleri ile, kullanıcılarınızın Mastodon'un hangi işlevlerine ve alanlarına erişebileceğini düzenleyebilirsiniz." + edit: "'%{name}' rolünü düzenle" + everyone: Varsayılan izinler + everyone_full_description_html: Bu, herhangi bir rol atanmamış olanlar da olmak üzere tüm kullanıcıları etkileyen temel roldür. Diğer tüm roller izinleri bu rolden alıyorlar. + permissions_count: + one: "%{count} izin" + other: "%{count} izin" + privileges: + administrator: Yönetici + administrator_description: Bu izne sahip kullanıcılar tüm diğer izinleri atlıyorlar + delete_user_data: Kullanıcı Verilerini Silme + delete_user_data_description: Kullanıcıların, diğer kullanıcıların verisini gecikme olmaksızın silmesine izin verir + invite_users: Kullanıcıları Davet Etme + invite_users_description: Kullanıcıların yeni kişileri sunucuya davet etmesine izin verir + manage_announcements: Duyuruları Yönetme + manage_announcements_description: Kullanıcıların sunucudaki duyuruları yönetmesine izin verir + manage_appeals: İtirazları Yönetme + manage_appeals_description: Kullanıcıların denetleme eylemlerine itirazları gözden geçirmesine izin verir + manage_blocks: Engelleri Yönetme + manage_blocks_description: Kullanıcıların e-posta sağlayıcıları ve IP adreslerini engellemesine izin verir + manage_custom_emojis: Özel İfadeleri Yönetme + manage_custom_emojis_description: Kullanıcıların sunucudaki özel ifadeleri yönetmesine izin verir + manage_federation: Birleştirme Yönetme + manage_federation_description: Kullanıcıların diğer alan adlarıyla birleştirmeye izin vermesi veya engellemesine ve teslim edilebilirliği denetlemesine izin verir + manage_invites: Davetleri Yönetme + manage_invites_description: Kullanıcıların davet bağlantılarını görüntüleme ve etkisizleştirmesine izin verir + manage_reports: Raporları Yönetme + manage_reports_description: Kullanıcıların bildirimleri incelemesine ve onlara yönelik denetim eylemleri gerçekleştirmesine izin verir + manage_roles: Rolleri Yönetme + manage_roles_description: Kullanıcıların kendi rollerinden düşük rolleri atamasına izin verir + manage_rules: Kuralları Yönetme + manage_rules_description: Kullanıcıların sunucu kurallarını değiştirmesine izin ver + manage_settings: Ayarları Yönetme + manage_settings_description: Kullanıcıların site ayarlarını değiştirmesine izin verir + manage_taxonomies: Kategorileri Yönetme + manage_taxonomies_description: Kullanıcıların öne çıkan içeriği incelemesine ve etiket ayarlarını güncellemesine izin verir + manage_user_access: Kullanıcı Erişimini Yönetme + manage_user_access_description: Kullanıcıların, diğer kullanıcıların işi aşamalı yetkilendirme, e-posta adreslerini değiştirme ve parolalarını sıfırlama eylemlerini etkisizleştirmesine izin verir + manage_users: Kullanıcıları Yönetme + manage_users_description: Kullanıcıların, diğer kullanıcıların ayrıntılarını görüntülemesine ve onlara karşı denetim eylemleri gerçekleştirmesine izin verir + manage_webhooks: Webhookları Yönetme + manage_webhooks_description: Kullanıcıların yönetsel olaylar için webhook kurmasına izin verir + view_audit_log: Denetim Kaydını Görüntüleme + view_audit_log_description: Kullanıcıların sunucudaki yönetsel eylemlerin bir tarihçesini görüntülemesine izin verir + view_dashboard: Ana Paneli Görüntüleme + view_dashboard_description: Kullanıcıların ana panele ve çeşitli ölçütlere erişmesine izin verir + view_devops: Devops + view_devops_description: Kullanıcıların Sidekiq ve pgHero panellerine erişmesine izin verir + title: Roller rules: add_new: Kural ekle delete: Sil @@ -701,9 +762,6 @@ tr: deletion: desc_html: Herkese hesabını silme izni ver title: Hesap silmeyi aç - min_invite_role: - disabled: Hiç kimse - title: tarafından yapılan davetlere izin ver require_invite_text: desc_html: Kayıtlar elle doğrulama gerektiriyorsa, "Neden katılmak istiyorsunuz?" metin girdisini isteğe bağlı yerine zorunlu yapın title: Yeni kullanıcıların katılmak için bir gerekçe sunmasını gerektir @@ -716,9 +774,6 @@ tr: show_known_fediverse_at_about_page: desc_html: Değiştirildiğinde, bilinen bütün fediverse'lerden gönderileri ön izlemede gösterir. Diğer türlü sadece yerel gönderileri gösterecektir. title: Zaman çizelgesi ön izlemesinde bilinen fediverse'i göster - show_staff_badge: - desc_html: Kullanıcının sayfasında bir personel rozeti göster - title: Personel rozeti göster site_description: desc_html: Ana sayfada paragraf olarak görüntülenecek bilgidir.
    Özellikle <a> ve <em> olmak suretiyle HTML etiketlerini kullanabilirsiniz. title: Site açıklaması @@ -1124,15 +1179,24 @@ tr: public: Genel zaman çizelgesi thread: Sohbetler edit: + add_keyword: Anahtar sözcük ekle + keywords: Anahtar Sözcükler title: Filtreyi düzenle errors: + deprecated_api_multiple_keywords: Bu parametreler, birden fazla filtre anahtar sözcüğü için geçerli olduğundan dolayı bu uygulama içerisinden değiştirilemezler. Daha yeni bir uygulama veya web arayüzünü kullanın. invalid_context: Sıfır ya da geçersiz içerik sağlandı - invalid_irreversible: Geri dönüşümsüz filtreleme sadece anasayfa ya da bildirim bağlamında çalışır index: + contexts: "%{contexts} içindeki filtreler" delete: Sil empty: Hiç filtreniz yok. + expires_in: "%{distance} sürede sona eriyor" + expires_on: "%{date} tarihinde sona eriyor" + keywords: + one: "%{count} anahtar sözcük" + other: "%{count} anahtar sözcük" title: Filtreler new: + save: Yeni filtre kaydet title: Yeni filtre ekle footer: developers: Geliştiriciler @@ -1251,6 +1315,8 @@ tr: copy_account_note_text: 'Bu kullanıcı %{acct} adresinden taşındı, işte onlarla ilgili önceki notlarınız:' notification_mailer: admin: + report: + subject: "%{name} bir bildirim gönderdi" sign_up: subject: "%{name} kaydoldu" digest: diff --git a/config/locales/tt.yml b/config/locales/tt.yml index e23533828..a520e4d2b 100644 --- a/config/locales/tt.yml +++ b/config/locales/tt.yml @@ -14,7 +14,6 @@ tt: following: Язылгансыз media: Медиа roles: - admin: Админ bot: Бот group: Törkem unfollow: Язылынмау @@ -41,10 +40,6 @@ tt: all: Бөтенесе perform_full_suspension: Искә алмау reset: Ташлату - role: Рөхсәтләр - roles: - moderator: Модератор - user: Кулланучы search: Эзләү sensitive: Sizmäle username: Кулланучы исеме diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 2612237b8..e29c59cb6 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -89,10 +89,8 @@ uk: posts_tab_heading: Дмухи posts_with_replies: Дмухи та відповіді roles: - admin: Адміністратор bot: Бот group: Група - moderator: Мод unavailable: Профіль недоступний unfollow: Відписатися admin: @@ -111,7 +109,6 @@ uk: avatar: Аватар by_domain: Домен change_email: - changed_msg: Адресу електронної пошти облікового запису успішно змінено! current_email: Поточна адреса електронної пошти label: Змінити адресу електронної пошти new_email: Нова адреса електронної пошти @@ -195,12 +192,6 @@ uk: reset: Скинути reset_password: Скинути пароль resubscribe: Перепідписатися - role: Дозволи - roles: - admin: Адміністратор - moderator: Модератор - staff: Персонал - user: Користувач search: Пошук search_same_email_domain: Інші користувачі з тим самим поштовим доменом search_same_ip: Інші користувачі з тим самим IP @@ -716,9 +707,6 @@ uk: deletion: desc_html: Дозволити будь-кому видаляти свій обліковий запис title: Видалення відкритого облікового запису - min_invite_role: - disabled: Ніхто - title: Дозволити запрошення від require_invite_text: desc_html: Якщо реєстрація вимагає власноручного затвердження, зробіть текстове поле «Чому ви хочете приєднатися?» обов'язковим, а не додатковим title: Вимагати повідомлення причини приєднання від нових користувачів @@ -731,9 +719,6 @@ uk: show_known_fediverse_at_about_page: desc_html: Коли увімкнено, будуть показані пости з усього відомого федисвіту у передпоказі. Інакше будуть показані лише локальні дмухи. title: Показувати доступний федисвіт у передпоказі стрічки - show_staff_badge: - desc_html: Відмічати персонал на сторінці користувачів - title: Показувати персонал site_description: desc_html: Відображається у якості параграфа на титульній сторінці та використовується у якості мета-тега.
    Можна використовувати HTML-теги, особливо <a> і <em>. title: Опис сервера @@ -1134,15 +1119,26 @@ uk: public: Глобальні стрічки thread: Повідомлення edit: + add_keyword: Додати ключове слово + keywords: Ключові слова title: Редагувати фільтр errors: + deprecated_api_multiple_keywords: Ці параметри не можна змінити з цього застосунку, тому що вони застосовуються до більш ніж одного ключового слова. Використовуйте новішу версію застосунку або вебінтерфейс. invalid_context: Контекст неправильний або не був наданий - invalid_irreversible: Незворотне фільтрування працює тільки в контексті свого фіду або сповіщень index: + contexts: Фільтри в %{contexts} delete: Видалити empty: У вас немає фільтрів. + expires_in: Закінчується %{distance} + expires_on: Закінчується %{date} + keywords: + few: "%{count} ключові слова" + many: "%{count} ключових слів" + one: "%{count} ключове слово" + other: "%{count} ключових слів" title: Фільтри new: + save: Зберегти новий фільтр title: Додати фільтр footer: developers: Розробникам @@ -1265,6 +1261,8 @@ uk: copy_account_note_text: 'Цей користувач був переміщений з %{acct}, ось ваші попередні нотатки:' notification_mailer: admin: + report: + subject: "%{name} подає скаргу" sign_up: subject: "%{name} приєднується" digest: diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 72d06ab55..b471cc153 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -77,10 +77,8 @@ vi: posts_tab_heading: Tút posts_with_replies: Trả lời roles: - admin: Quản trị viên bot: Tài khoản Bot group: Nhóm - moderator: Kiểm duyệt viên unavailable: Tài khoản bị đình chỉ unfollow: Ngưng theo dõi admin: @@ -99,12 +97,17 @@ vi: avatar: Ảnh đại diện by_domain: Máy chủ change_email: - changed_msg: Email tài khoản đã thay đổi thành công! + changed_msg: Email đã thay đổi thành công! current_email: Email hiện tại label: Thay đổi email new_email: Email mới submit: Thay đổi email title: Thay đổi email cho %{username} + change_role: + changed_msg: Vai trò đã thay đổi thành công! + label: Đổi vai trò + no_role: Chưa có vai trò + title: Thay đổi vai trò %{username} confirm: Phê duyệt confirmed: Đã xác minh confirming: Chờ xác nhận @@ -116,7 +119,7 @@ vi: disable: Khóa disable_sign_in_token_auth: Vô hiệu hóa xác minh bằng email disable_two_factor_authentication: Vô hiệu hóa xác minh 2 bước - disabled: Đã vô hiệu hóa + disabled: Tạm khóa display_name: Tên hiển thị domain: Máy chủ edit: Chỉnh sửa @@ -148,6 +151,7 @@ vi: active: Hoạt động all: Toàn bộ pending: Chờ xử lý + silenced: Hạn chế suspended: Vô hiệu hóa title: Trạng thái moderation_notes: Nhật ký kiểm duyệt @@ -155,6 +159,7 @@ vi: most_recent_ip: IP gần nhất no_account_selected: Không có tài khoản nào thay đổi vì không có tài khoản nào được chọn no_limits_imposed: Bình thường + no_role_assigned: Chưa có vai trò not_subscribed: Chưa đăng ký pending: Chờ duyệt perform_full_suspension: Vô hiệu hóa @@ -181,11 +186,6 @@ vi: reset_password: Đặt lại mật khẩu resubscribe: Đăng ký lại role: Vai trò - roles: - admin: Quản trị viên - moderator: Kiểm duyệt viên - staff: Đội ngũ - user: Người dùng search: Tìm kiếm search_same_email_domain: Tra cứu email search_same_ip: Tra cứu IP @@ -198,7 +198,7 @@ vi: show: created_reports: Gửi báo cáo targeted_reports: Bị báo cáo - silence: Ẩn + silence: Hạn chế silenced: Hạn chế statuses: Tút strikes: Lịch sử kiểm duyệt @@ -633,6 +633,65 @@ vi: unresolved: Chờ xử lý updated_at: Cập nhật lúc view_profile: Xem trang hồ sơ + roles: + add_new: Thêm vai trò + assigned_users: + other: "%{count} người" + categories: + administration: Quản trị viên + devops: Nhà phát triển + invites: Lời mời + moderation: Kiểm duyệt + special: Đặc biệt + delete: Xóa + description_html: Thông qua vai trò người dùng, bạn có thể tùy chỉnh những tính năng và vị trí của Mastodon mà người dùng có thể truy cập. + edit: Sửa vai trò '%{name}' + everyone: Quyền hạn mặc định + everyone_full_description_html: Đây vai trò cơ bản ảnh hưởng tới mọi người dùng khác, kể cả những người không có vai trò được chỉ định. Tất cả các vai trò khác đều kế thừa quyền từ vai trò đó. + permissions_count: + other: "%{count} quyền hạn" + privileges: + administrator: Quản trị viên + administrator_description: Người dùng này có thể truy cập mọi quyền hạn + delete_user_data: Xóa dữ liệu người dùng + delete_user_data_description: Cho phép xóa dữ liệu của người dùng khác lập tức + invite_users: Mời người dùng + invite_users_description: Cho phép mời những người mới vào máy chủ + manage_announcements: Quản lý thông báo + manage_announcements_description: Cho phép quản lý thông báo trên máy chủ + manage_appeals: Quản lý kháng cáo + manage_appeals_description: Cho phép xem xét kháng cáo đối với các hành động kiểm duyệt + manage_blocks: Quản lý chặn + manage_blocks_description: Cho phép chặn các nhà cung cấp e-mail và địa chỉ IP + manage_custom_emojis: Quản lý emoji + manage_custom_emojis_description: Cho phép quản lý các emoji tùy chỉnh trên máy chủ + manage_federation: Quản lý liên hợp + manage_federation_description: Cho phép chặn hoặc liên hợp với các máy chủ khác và kiểm soát khả năng phân phối + manage_invites: Quản lý lời mời + manage_invites_description: Cho phép mở và đóng các lời mời đăng ký + manage_reports: Quản lý báo cáo + manage_reports_description: Cho phép xem xét các báo cáo và thực hiện hành động kiểm duyệt đối với chúng + manage_roles: Quản lý vai trò + manage_roles_description: Cho phép quản lý và chỉ định các vai trò nhỏ hơn họ + manage_rules: Quản lý quy tắc máy chủ + manage_rules_description: Cho phép thay đổi quy tắc máy chủ + manage_settings: Quản lý thiết lập + manage_settings_description: Cho phép thay đổi thiết lập máy chủ + manage_taxonomies: Quản lý phân loại + manage_taxonomies_description: Cho phép đánh giá nội dung xu hướng và cập nhật cài đặt hashtag + manage_user_access: Quản lý người dùng truy cập + manage_user_access_description: Cho phép vô hiệu hóa xác thực hai bước của người dùng khác, thay đổi địa chỉ email và đặt lại mật khẩu của họ + manage_users: Quản lý người dùng + manage_users_description: Cho phép xem thông tin chi tiết của người dùng khác và thực hiện các hành động kiểm duyệt đối với họ + manage_webhooks: Quản lý Webhook + manage_webhooks_description: Cho phép thiết lập webhook cho các sự kiện quản trị + view_audit_log: Xem nhật ký + view_audit_log_description: Cho phép xem lịch sử của các hành động quản trị trên máy chủ + view_dashboard: Xem quản trị + view_dashboard_description: Cho phép truy cập trang tổng quan và các chỉ số khác + view_devops: Nhà phát triển + view_devops_description: Cho phép truy cập trang tổng quan Sidekiq và pgHero + title: Danh sách vai trò rules: add_new: Thêm quy tắc delete: Xóa bỏ @@ -685,9 +744,6 @@ vi: deletion: desc_html: Cho phép mọi người xóa tài khoản của họ title: Xóa tài khoản - min_invite_role: - disabled: Không một ai - title: Cho phép lời mời bằng cách require_invite_text: desc_html: Khi chọn phê duyệt người dùng thủ công, hiện “Tại sao bạn muốn đăng ký?” thay cho tùy chọn nhập title: Người đăng ký mới phải nhập mã mời tham gia @@ -700,9 +756,6 @@ vi: show_known_fediverse_at_about_page: desc_html: Nếu tắt, bảng tin sẽ chỉ hiển thị nội dung do người dùng của máy chủ này tạo ra title: Bao gồm nội dung từ mạng liên hợp trên bảng tin không được cho phép - show_staff_badge: - desc_html: Hiện huy hiệu đội ngũ trên trang người dùng - title: Hiện huy hiệu đội ngũ site_description: desc_html: Nội dung giới thiệu về máy chủ. Mô tả những gì làm cho máy chủ Mastodon này đặc biệt và bất cứ điều gì quan trọng khác. Bạn có thể dùng các thẻ HTML, đặc biệt là <a><em>. title: Mô tả máy chủ @@ -1104,15 +1157,23 @@ vi: public: Tin công khai thread: Thảo luận edit: + add_keyword: Thêm từ khoá + keywords: Từ khóa title: Chỉnh sửa bộ lọc errors: + deprecated_api_multiple_keywords: Không thể thay đổi các tham số này từ ứng dụng này vì chúng áp dụng cho nhiều hơn một từ khóa bộ lọc. Sử dụng ứng dụng mới hơn hoặc giao diện web. invalid_context: Bối cảnh không hợp lệ hoặc không có - invalid_irreversible: Bộ lọc chỉ hoạt động với bảng tin hoặc nội dung thông báo index: + contexts: Bộ lọc %{contexts} delete: Xóa bỏ empty: Chưa có bộ lọc nào. + expires_in: Hết hạn trong %{distance} + expires_on: Hết hạn vào %{date} + keywords: + other: "%{count} từ khóa" title: Bộ lọc new: + save: Lưu thành bộ lọc mới title: Thêm bộ lọc mới footer: developers: Phát triển @@ -1229,6 +1290,8 @@ vi: copy_account_note_text: 'Tài khoản này chuyển từ %{acct}, đây là lịch sử kiểm duyệt của họ:' notification_mailer: admin: + report: + subject: "%{name} đã gửi báo cáo" sign_up: subject: "%{name} đã được đăng ký" digest: diff --git a/config/locales/zgh.yml b/config/locales/zgh.yml index 83b5866df..36240355b 100644 --- a/config/locales/zgh.yml +++ b/config/locales/zgh.yml @@ -40,8 +40,6 @@ zgh: all: ⵎⴰⵕⵕⴰ public: ⴰⴳⴷⵓⴷⴰⵏ reject: ⴰⴳⵢ - roles: - user: ⵓⵏⵙⵙⵓⵎⵔⵙ title: ⵉⵎⵉⴹⴰⵏⵏ web: ⵡⵉⴱ action_logs: diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 475d03a2a..9ccabc998 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -79,10 +79,8 @@ zh-CN: posts_tab_heading: 嘟文 posts_with_replies: 嘟文和回复 roles: - admin: 管理员 bot: 机器人 group: 群组 - moderator: 监察员 unavailable: 个人资料不可用 unfollow: 取消关注 admin: @@ -101,7 +99,6 @@ zh-CN: avatar: 头像 by_domain: 域名 change_email: - changed_msg: 已成功更改账号的电子邮箱! current_email: 当前的电子邮箱 label: 更改电子邮箱 new_email: 新的电子邮箱 @@ -182,12 +179,6 @@ zh-CN: reset: 重置 reset_password: 重置密码 resubscribe: 重新订阅 - role: 用户组 - roles: - admin: 管理员 - moderator: 监察员 - staff: 站务人员 - user: 普通用户 search: 搜索 search_same_email_domain: 其他具有相同电子邮箱域名的用户 search_same_ip: 具有相同IP的其他用户 @@ -687,9 +678,6 @@ zh-CN: deletion: desc_html: 允许所有人删除自己的帐户 title: 开放删除帐户权限 - min_invite_role: - disabled: 没有人 - title: 允许发送邀请的用户组 require_invite_text: desc_html: 当注册需要手动批准时,将“你为什么想要加入?”设为必填项 title: 要求新用户填写申请注册的原因 @@ -702,9 +690,6 @@ zh-CN: show_known_fediverse_at_about_page: desc_html: 如果开启,就会在时间轴预览显示其他站点嘟文,否则就只会只显示本站嘟文。 title: 在时间轴预览中显示其他站点嘟文 - show_staff_badge: - desc_html: 在个人资料页上显示管理人员标志 - title: 显示管理人员标志 site_description: desc_html: 首页上的介绍文字。 描述一下本 Mastodon 实例的特殊之处以及其他重要信息。可以使用 HTML 标签,包括 <a><em> 。 title: 本站简介 @@ -1091,10 +1076,11 @@ zh-CN: public: 公共时间轴 thread: 对话 edit: + add_keyword: 添加关键词 + keywords: 关键词 title: 编辑过滤器 errors: invalid_context: 过滤器场景没有或无效 - invalid_irreversible: 此功能只适用于主页时间轴或通知 index: delete: 删除 empty: 你没有过滤器。 diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index 5b6e0b83a..e375bb4c8 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -75,10 +75,8 @@ zh-HK: posts_tab_heading: 文章 posts_with_replies: 包含回覆的文章 roles: - admin: 管理員 bot: 機械人 group: 群組 - moderator: 板主 unavailable: 無法取得個人檔案 unfollow: 取消關注 admin: @@ -97,7 +95,6 @@ zh-HK: avatar: 頭像 by_domain: 域名 change_email: - changed_msg: 帳號電郵更新成功! current_email: 現時電郵 label: 更改電郵 new_email: 新的電郵 @@ -174,12 +171,6 @@ zh-HK: reset: 重設 reset_password: 重設密碼 resubscribe: 重新訂閱 - role: 權限 - roles: - admin: 管理員 - moderator: 管理員 - staff: 工作人員 - user: 普通使用者 search: 搜尋 search_same_email_domain: 其他有相同電郵網域的使用者 search_same_ip: 其他有相同 IP 位址的使用者 @@ -568,9 +559,6 @@ zh-HK: deletion: desc_html: 允許所有人刪除自己的帳號 title: 容許刪除帳號 - min_invite_role: - disabled: 沒有人 - title: 允許發送邀請的身份 require_invite_text: desc_html: 如果已設定為手動審核注冊,請把「加入的原因」設定為必填項目。 title: 要求新用戶填寫注冊申請 @@ -583,9 +571,6 @@ zh-HK: show_known_fediverse_at_about_page: desc_html: 如果停用,將會只在本站的歡迎頁顯示本站的文章。 title: 在訪客預覽本站的時間軸上,顯示跨站文章 - show_staff_badge: - desc_html: 在個人資料頁上顯示工作人員標誌 - title: 顯示工作人員標誌 site_description: desc_html: 在首頁顯示,及在 meta 標籤使用作網站介紹。
    你可以在此使用 <a><em> 等 HTML 標籤。 title: 本站介紹 @@ -836,7 +821,6 @@ zh-HK: title: 編輯篩選器 errors: invalid_context: 沒有提供內文或內文無效 - invalid_irreversible: 不可逆的篩選器只適用放主頁或通知頁面 index: delete: 刪除 empty: 你沒有過濾器。 diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 7d2bb80cb..1490aeef1 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -1,7 +1,7 @@ --- zh-TW: about: - about_hashtag_html: 這些是包含「#%{hashtag}」標籤的公開文章。只要您有任何 Mastodon 站點、或者其他站點的使用者,便可以與他們互動。 + about_hashtag_html: 這些是包含「#%{hashtag}」標籤的公開文章。只要您有任何 Mastodon 站點、或者其他聯邦宇宙的使用者,便可以與他們互動。 about_mastodon_html: Mastodon (長毛象)是一個自由、開放原始碼的社群網站。它是一個分散式的服務,避免您的通訊被單一商業機構壟斷操控。請您選擇一家您信任的 Mastodon 站點,在上面建立帳號,然後您就可以和任一 Mastodon 站點上的使用者互通,享受無縫的社群網路交流。 about_this: 關於本站 active_count_after: 活躍 @@ -22,7 +22,9 @@ zh-TW: federation_hint_html: 您只需要擁有 %{instance} 的帳號,就可以追蹤任何一台 Mastodon 伺服器上的人等等。 get_apps: 嘗試行動應用程式 hosted_on: 在 %{domain} 運作的 Mastodon 站點 - instance_actor_flash: "這個帳戶是個用來代表伺服器自已的虛擬角色,而不是實際的使用者。它是用來聯盟用的,除非您想要封鎖整個站台,不然不該封鎖它。但要封鎖整個站台,您可以使用網域封鎖功能。 \n" + instance_actor_flash: '這個帳戶是個用來代表伺服器本身的虛擬角色,而非實際的使用者。它是用來聯盟用的,除非您想要封鎖整個站台,不然不該封鎖它。但要封鎖整個站台,您可以使用網域封鎖功能。 + + ' learn_more: 了解詳細 logged_in_as_html: 您目前登入使用的帳號是 %{username} logout_before_registering: 您已經登入了! @@ -60,7 +62,7 @@ zh-TW: followers: other: 跟隨者 following: 正在跟隨 - instance_actor_flash: 這個帳號是一個用來代表此伺服器的虛擬執行者,而非真實使用者。它用途為站點聯盟且不應被停權。 + instance_actor_flash: 這個帳號是一個用來代表此伺服器的虛擬執行者,而非真實使用者。它用途為聯邦宇宙且不應被停權。 joined: 加入於 %{date} last_active: 上次活躍時間 link_verified_on: 此連結的所有權已在 %{date} 檢查過 @@ -77,10 +79,8 @@ zh-TW: posts_tab_heading: 嘟文 posts_with_replies: 嘟文與回覆 roles: - admin: 管理員 bot: 機器人 group: 群組 - moderator: 版主 unavailable: 無法取得個人檔案 unfollow: 取消跟隨 admin: @@ -99,12 +99,17 @@ zh-TW: avatar: 頭像 by_domain: 站點 change_email: - changed_msg: 已成功變更帳號電子信箱地址! + changed_msg: 電子郵件已成功變更! current_email: 目前的電子信箱地址 label: 變更電子信箱地址 new_email: 新的電子信箱地址 submit: 變更電子信箱地址 title: 為 %{username} 變更電子信箱地址 + change_role: + changed_msg: 成功修改角色! + label: 變更角色 + no_role: 沒有角色 + title: 為 %{username} 變更角色 confirm: 確定 confirmed: 已確定 confirming: 確定 @@ -148,13 +153,15 @@ zh-TW: active: 活躍 all: 全部 pending: 等待中 + silenced: 受限的 suspended: 已停權 - title: 版務 + title: 站務 moderation_notes: 管理備忘 most_recent_activity: 最近活動 most_recent_ip: 最近 IP 位址 no_account_selected: 未選取任何帳號,因此未變更 no_limits_imposed: 未受限制 + no_role_assigned: 未指派角色 not_subscribed: 未訂閱 pending: 等待審核中 perform_full_suspension: 停權 @@ -180,12 +187,7 @@ zh-TW: reset: 重設 reset_password: 重設密碼 resubscribe: 重新訂閱 - role: 身份 - roles: - admin: 管理員 - moderator: 版主 - staff: 管理人員 - user: 普通使用者 + role: 角色 search: 搜尋 search_same_email_domain: 其他有同個電子郵件網域的使用者 search_same_ip: 其他有同個 IP 的使用者 @@ -283,7 +285,7 @@ zh-TW: create_account_warning_html: "%{name} 已對 %{target} 送出警告" create_announcement_html: "%{name} 新增了公告 %{target}" create_custom_emoji_html: "%{name} 上傳了新自訂表情符號 %{target}" - create_domain_allow_html: "%{name} 允許 %{target} 網域加入站點聯盟" + create_domain_allow_html: "%{name} 允許 %{target} 網域加入聯邦宇宙" create_domain_block_html: "%{name} 封鎖了網域 %{target}" create_email_domain_block_html: "%{name} 封鎖了電子信箱網域 %{target}" create_ip_block_html: "%{name} 已經設定了IP %{target} 的規則" @@ -291,7 +293,7 @@ zh-TW: demote_user_html: "%{name} 將使用者 %{target} 降級" destroy_announcement_html: "%{name} 刪除了公告 %{target}" destroy_custom_emoji_html: "%{name} 停用了自訂表情符號 %{target}" - destroy_domain_allow_html: "%{name} 不允許與網域 %{target} 加入站點聯盟" + destroy_domain_allow_html: "%{name} 不允許與網域 %{target} 加入聯邦宇宙" destroy_domain_block_html: "%{name} 取消了對網域 %{target} 的封鎖" destroy_email_domain_block_html: "%{name} 取消了對電子信箱網域 %{target} 的封鎖" destroy_instance_html: "%{name} 清除了網域 %{target}" @@ -407,10 +409,10 @@ zh-TW: empty: 找不到申訴。 title: 申訴 domain_allows: - add_new: 將網域加入白名單 - created_msg: 網域已成功加入白名單 - destroyed_msg: 網域已成功從白名單移除 - undo: 從白名單移除 + add_new: 將網域加入聯邦宇宙白名單 + created_msg: 網域已成功加入聯邦宇宙白名單 + destroyed_msg: 網域已成功從聯邦宇宙白名單移除 + undo: 從聯邦宇宙白名單移除 domain_blocks: add_new: 新增欲封鎖域名 created_msg: 正在進行站點封鎖 @@ -520,12 +522,12 @@ zh-TW: moderation: all: 全部 limited: 限制 - title: 版主 + title: 管管 private_comment: 私人留言 public_comment: 公開留言 purge: 清除 purge_description_html: 若您相信此網域將永久離線,您可以自儲存空間中刪除該網域所有帳號紀錄及相關資料。這可能花費一些時間。 - title: 聯邦 + title: 聯邦宇宙 total_blocked_by_us: 被我們封鎖 total_followed_by_them: 被他們跟隨 total_followed_by_us: 被我們跟隨 @@ -570,7 +572,7 @@ zh-TW: pending: 等待中繼站審核 save_and_enable: 儲存並啟用 setup: 設定中繼連結 - signatures_not_enabled: 若啟用安全模式或受限的站點聯盟模式,中繼將不會正常運作 + signatures_not_enabled: 若啟用安全模式或受限的聯邦宇宙模式,中繼將不會正常運作 status: 狀態 title: 中繼 report_notes: @@ -635,6 +637,65 @@ zh-TW: unresolved: 未解決 updated_at: 更新 view_profile: 檢視個人資料頁 + roles: + add_new: 新增角色 + assigned_users: + other: "%{count} 個使用者" + categories: + administration: 管理員 + devops: Devops + invites: 邀請 + moderation: 站務 + special: 特殊 + delete: 刪除 + description_html: 透過使用者角色,您可以自訂您的使用者可以存取 Mastodon 的哪些功能與區域。 + edit: 編輯「%{name}」角色 + everyone: 預設權限 + everyone_full_description_html: 這是會影響所有使用者基本角色,即使是那些沒有被分配角色的使用者也一樣。其他所有的角色都從它繼承權限。 + permissions_count: + other: "%{count} 個權限" + privileges: + administrator: 管理員 + administrator_description: 擁有此權限的使用者將會略過所有權限 + delete_user_data: 刪除使用者資料 + delete_user_data_description: 允許使用者立刻刪除其他使用者的資料 + invite_users: 邀請使用者 + invite_users_description: 允許使用者邀請新人加入伺服器 + manage_announcements: 管理公告 + manage_announcements_description: 允許使用者管理伺服器上的公告 + manage_appeals: 管理解封申訴系統 + manage_appeals_description: 允許使用者審閱針對站務動作的申訴 + manage_blocks: 管理封鎖 + manage_blocks_description: 允許使用者封鎖電子郵件提供者與 IP 位置 + manage_custom_emojis: 管理自訂表情符號 + manage_custom_emojis_description: 允許使用者管理伺服器上的自訂表情符號 + manage_federation: 管理聯邦宇宙 + manage_federation_description: 允許使用者封鎖或允許與其他網域的聯邦宇宙,並控制傳遞能力 + manage_invites: 管理邀請 + manage_invites_description: 允許使用者瀏覽與停用邀請連結 + manage_reports: 管理回報 + manage_reports_description: 允許使用者審閱回報並對回報執行站務動作 + manage_roles: 管理角色 + manage_roles_description: 允許使用者管理並指派低於他們的使用者 + manage_rules: 管理規則 + manage_rules_description: 允許使用者變更伺服器規則 + manage_settings: 管理設定 + manage_settings_description: 允許使用者變更站點設定 + manage_taxonomies: 管理分類方式 + manage_taxonomies_description: 允許使用者審閱熱門內容與更新主題標籤設定 + manage_user_access: 管理使用者存取權 + manage_user_access_description: 允許使用者停用其他人的兩步驟驗證、變更他們的電子郵件地址以及重設他們的密碼 + manage_users: 管理使用者 + manage_users_description: 允許使用者檢視其他使用者的詳細資訊並對回報執行站務動作 + manage_webhooks: 管理 Webhooks + manage_webhooks_description: 允許使用者為管理事件設定 webhooks + view_audit_log: 檢視審核日誌 + view_audit_log_description: 允許使用者檢視伺服器上的管理動作歷史 + view_dashboard: 檢視儀表板 + view_dashboard_description: 允許使用者存取儀表板與各種指標 + view_devops: Devops + view_devops_description: 允許使用者存取 Sidekiq 與 pgHero 儀表板 + title: 角色 rules: add_new: 新增規則 delete: 刪除 @@ -687,9 +748,6 @@ zh-TW: deletion: desc_html: 允許所有人刪除自己的帳號 title: 開放刪除帳號的權限 - min_invite_role: - disabled: 沒有人 - title: 允許發送邀請的身份 require_invite_text: desc_html: 如果已設定為手動審核註冊,請將「加入原因」設定為必填項目。 title: 要求新使用者填申請書以索取邀請 @@ -702,9 +760,6 @@ zh-TW: show_known_fediverse_at_about_page: desc_html: 如果開啟,就會在時間軸預覽顯示其他站點嘟文,否則就只會顯示本站點嘟文。 title: 在時間軸預覽顯示其他站點嘟文 - show_staff_badge: - desc_html: 在個人資料頁面上顯示管理人員標誌 - title: 顯示管理人員標誌 site_description: desc_html: 首頁上的介紹文字,描述此 Mastodon 伺服器的特別之處和其他重要資訊。可使用 HTML 標籤,包括 <a><em>。 title: 伺服器描述 @@ -1106,15 +1161,23 @@ zh-TW: public: 公開時間軸 thread: 會話 edit: + add_keyword: 新增關鍵字 + keywords: 關鍵字 title: 編輯篩選條件 errors: + deprecated_api_multiple_keywords: 這些參數無法從此應用程式中更改,因為它們適用於一或多個過濾器關鍵字。請使用較新的應用程式或是網頁介面。 invalid_context: 沒有提供內文或內文無效 - invalid_irreversible: 此功能僅適用於首頁或通知頁面 index: + contexts: "%{contexts} 中的過濾器" delete: 刪除 empty: 您沒有過濾器。 + expires_in: 於 %{distance} 過期 + expires_on: 於 %{date} 過期 + keywords: + other: "%{count} 個關鍵字" title: 過濾器 new: + save: 儲存新過濾器 title: 新增篩選器 footer: developers: 開發者 @@ -1224,13 +1287,15 @@ zh-TW: other_data: 其他資料並不會自動轉移 redirect: 您目前的帳號將會在個人資料頁面新增重新導向公告,並會被排除在搜尋結果之外 moderation: - title: 營運 + title: 站務 move_handler: carry_blocks_over_text: 此使用者轉移自被您封鎖的 %{acct}。 carry_mutes_over_text: 此使用者轉移自被您靜音的 %{acct}。 copy_account_note_text: 此使用者轉移自 %{acct},以下是您之前關於他們的備註: notification_mailer: admin: + report: + subject: "%{name} 送出了一則檢舉報告" sign_up: subject: "%{name} 已進行註冊" digest: From 25e076505ebe735cb3819ae8675b734d4f1c49aa Mon Sep 17 00:00:00 2001 From: Jeremy Kescher Date: Thu, 7 Jul 2022 01:14:28 +0000 Subject: [PATCH 224/652] ip_cleanup_scheduler: Make IP and session retention configurable (#18757) --- .env.production.sample | 8 ++++++++ app/workers/scheduler/ip_cleanup_scheduler.rb | 6 ++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.env.production.sample b/.env.production.sample index 4fc58072f..5eecb8bde 100644 --- a/.env.production.sample +++ b/.env.production.sample @@ -67,3 +67,11 @@ S3_BUCKET=files.example.com AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= S3_ALIAS_HOST=files.example.com + +# IP and session retention +# ----------------------- +# Make sure to modify the scheduling of ip_cleanup_scheduler in config/sidekiq.yml +# to be less than daily if you lower IP_RETENTION_PERIOD below two days (172800). +# ----------------------- +IP_RETENTION_PERIOD=31556952 +SESSION_RETENTION_PERIOD=31556952 diff --git a/app/workers/scheduler/ip_cleanup_scheduler.rb b/app/workers/scheduler/ip_cleanup_scheduler.rb index 7afad2f58..8f607db03 100644 --- a/app/workers/scheduler/ip_cleanup_scheduler.rb +++ b/app/workers/scheduler/ip_cleanup_scheduler.rb @@ -3,7 +3,8 @@ class Scheduler::IpCleanupScheduler include Sidekiq::Worker - IP_RETENTION_PERIOD = 1.year.freeze + IP_RETENTION_PERIOD = ENV.fetch('IP_RETENTION_PERIOD', 1.year).to_i.seconds.freeze + SESSION_RETENTION_PERIOD = ENV.fetch('SESSION_RETENTION_PERIOD', 1.year).to_i.seconds.freeze sidekiq_options retry: 0 @@ -15,7 +16,8 @@ class Scheduler::IpCleanupScheduler private def clean_ip_columns! - SessionActivation.where('updated_at < ?', IP_RETENTION_PERIOD.ago).in_batches.destroy_all + SessionActivation.where('updated_at < ?', SESSION_RETENTION_PERIOD.ago).in_batches.destroy_all + SessionActivation.where('updated_at < ?', IP_RETENTION_PERIOD.ago).in_batches.update_all(ip: nil) User.where('current_sign_in_at < ?', IP_RETENTION_PERIOD.ago).in_batches.update_all(sign_up_ip: nil) LoginActivity.where('created_at < ?', IP_RETENTION_PERIOD.ago).in_batches.destroy_all Doorkeeper::AccessToken.where('last_used_at < ?', IP_RETENTION_PERIOD.ago).in_batches.update_all(last_used_ip: nil) From befbac3f1c54fd850256711327cbd4d24cd8390a Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 7 Jul 2022 18:18:23 +0200 Subject: [PATCH 225/652] Fix various in the user role management UI (#18777) * Reword priority description * Disable checkboxes for permissions you can't enable in role edition interface * Set max priority in HTML attribute * Explicitly link to role edition, do not link when you can't edit * Reword priority description based on review --- app/views/admin/roles/_form.html.haml | 4 ++-- app/views/admin/roles/_role.html.haml | 26 +++++++++++++++++++------- config/locales/simple_form.en.yml | 2 +- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/app/views/admin/roles/_form.html.haml b/app/views/admin/roles/_form.html.haml index 68607ce68..99a211eea 100644 --- a/app/views/admin/roles/_form.html.haml +++ b/app/views/admin/roles/_form.html.haml @@ -9,7 +9,7 @@ = f.input :name, wrapper: :with_label .fields-group - = f.input :position, wrapper: :with_label + = f.input :position, wrapper: :with_label, input_html: { max: current_user.role.position - 1 } .fields-group = f.input :color, wrapper: :with_label, input_html: { placeholder: '#000000' } @@ -29,7 +29,7 @@ - (@role.everyone? ? UserRole::Flags::CATEGORIES.slice(:invites) : UserRole::Flags::CATEGORIES).each do |category, permissions| %h4= t(category, scope: 'admin.roles.categories') - = f.input :permissions_as_keys, collection: permissions, wrapper: :with_block_label, include_blank: false, label_method: lambda { |privilege| safe_join([t("admin.roles.privileges.#{privilege}"), content_tag(:span, t("admin.roles.privileges.#{privilege}_description"), class: 'hint')]) }, required: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', label: false, hint: false + = f.input :permissions_as_keys, collection: permissions, wrapper: :with_block_label, include_blank: false, label_method: lambda { |privilege| safe_join([t("admin.roles.privileges.#{privilege}"), content_tag(:span, t("admin.roles.privileges.#{privilege}_description"), class: 'hint')]) }, required: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', label: false, hint: false, disabled: permissions.filter { |privilege| UserRole::FLAGS[privilege] & current_user.role.computed_permissions == 0 } %hr.spacer/ diff --git a/app/views/admin/roles/_role.html.haml b/app/views/admin/roles/_role.html.haml index 1ca5ca392..798d8d8b4 100644 --- a/app/views/admin/roles/_role.html.haml +++ b/app/views/admin/roles/_role.html.haml @@ -1,12 +1,22 @@ .announcements-list__item - = link_to edit_admin_role_path(role), class: 'announcements-list__item__title' do - %span.user-role{ class: "user-role-#{role.id}" } - = fa_icon 'users fw' + - if can?(:update, role) + = link_to edit_admin_role_path(role), class: 'announcements-list__item__title' do + %span.user-role{ class: "user-role-#{role.id}" } + = fa_icon 'users fw' - - if role.everyone? - = t('admin.roles.everyone') - - else - = role.name + - if role.everyone? + = t('admin.roles.everyone') + - else + = role.name + - else + %span.announcements-list__item__title + %span.user-role{ class: "user-role-#{role.id}" } + = fa_icon 'users fw' + + - if role.everyone? + = t('admin.roles.everyone') + - else + = role.name .announcements-list__item__action-bar .announcements-list__item__meta @@ -16,3 +26,5 @@ = link_to t('admin.roles.assigned_users', count: role.users.count), admin_accounts_path(role_ids: role.id) • %abbr{ title: role.permissions_as_keys.map { |privilege| I18n.t("admin.roles.privileges.#{privilege}") }.join(', ') }= t('admin.roles.permissions_count', count: role.permissions_as_keys.size) + %div + = table_link_to 'pencil', t('admin.accounts.edit'), edit_admin_role_path(role) if can?(:update, role) diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index 932f34d82..f7da3a23d 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -102,7 +102,7 @@ en: highlighted: This makes the role publicly visible name: Public name of the role, if role is set to be displayed as a badge permissions_as_keys: Users with this role will have access to... - position: Higher role decides conflict resolution in certain situations + position: Higher role decides conflict resolution in certain situations. Certain actions can only be performed on roles with alower priority webhook: events: Select events to send url: Where events will be sent to From 04cdfc0086dc2d7295d0a5cffb35481bba09e66e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Pokorn=C3=BD?= Date: Fri, 8 Jul 2022 22:39:17 +0200 Subject: [PATCH 226/652] Fix a typo in user role priority (#18786) "alower priority" -> "a lower priority" --- config/locales/simple_form.en.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index f7da3a23d..c17a62cbe 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -102,7 +102,7 @@ en: highlighted: This makes the role publicly visible name: Public name of the role, if role is set to be displayed as a badge permissions_as_keys: Users with this role will have access to... - position: Higher role decides conflict resolution in certain situations. Certain actions can only be performed on roles with alower priority + position: Higher role decides conflict resolution in certain situations. Certain actions can only be performed on roles with a lower priority webhook: events: Select events to send url: Where events will be sent to From 12ed2d793b1b4823b0df047a47677bb0667bf43d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 9 Jul 2022 22:07:17 +0200 Subject: [PATCH 227/652] Change custom emoji file size limit from 50 KB to 256 KB (#18788) --- app/models/custom_emoji.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/custom_emoji.rb b/app/models/custom_emoji.rb index b08893e77..289e3b66f 100644 --- a/app/models/custom_emoji.rb +++ b/app/models/custom_emoji.rb @@ -23,7 +23,7 @@ class CustomEmoji < ApplicationRecord include Attachmentable - LIMIT = 50.kilobytes + LIMIT = 256.kilobytes SHORTCODE_RE_FRAGMENT = '[a-zA-Z0-9_]{2,}' From e7aa2be828f6a632dadd5c41e2364cea91ddbb2c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 13 Jul 2022 15:03:28 +0200 Subject: [PATCH 228/652] Change how hashtags are normalized (#18795) * Change how hashtags are normalized * Fix tests --- app/controllers/admin/tags_controller.rb | 4 ++- .../api/v1/featured_tags_controller.rb | 4 +-- .../settings/featured_tags_controller.rb | 1 - app/javascript/mastodon/actions/compose.js | 15 ++++++++- app/lib/ascii_folding.rb | 10 ++++++ app/lib/hashtag_normalizer.rb | 25 +++++++++++++++ app/models/account.rb | 2 +- app/models/custom_filter.rb | 6 ++-- app/models/custom_filter_keyword.rb | 4 +-- app/models/featured_tag.rb | 31 ++++++++++++------ app/models/tag.rb | 20 +++++++++--- .../activitypub/hashtag_serializer.rb | 4 +-- .../rest/featured_tag_serializer.rb | 4 +++ app/serializers/rest/tag_serializer.rb | 4 +++ app/views/accounts/show.html.haml | 2 +- app/views/accounts/show.rss.ruby | 2 +- app/views/admin/tags/show.html.haml | 4 +-- app/views/admin/trends/tags/_tag.html.haml | 2 +- .../admin_mailer/_new_trending_tags.text.erb | 4 +-- .../settings/featured_tags/index.html.haml | 2 +- app/views/tags/_og.html.haml | 4 +-- app/views/tags/show.html.haml | 6 ++-- app/views/tags/show.rss.ruby | 6 ++-- config/initializers/inflections.rb | 1 + ...20220710102457_add_display_name_to_tags.rb | 5 +++ db/schema.rb | 3 +- spec/lib/hashtag_normalizer_spec.rb | 29 +++++++++++++++++ spec/models/tag_spec.rb | 8 ++--- streaming/index.js | 32 +++++++++++++++++-- 29 files changed, 193 insertions(+), 51 deletions(-) create mode 100644 app/lib/ascii_folding.rb create mode 100644 app/lib/hashtag_normalizer.rb create mode 100644 db/migrate/20220710102457_add_display_name_to_tags.rb create mode 100644 spec/lib/hashtag_normalizer_spec.rb diff --git a/app/controllers/admin/tags_controller.rb b/app/controllers/admin/tags_controller.rb index 749e2f144..4f727c398 100644 --- a/app/controllers/admin/tags_controller.rb +++ b/app/controllers/admin/tags_controller.rb @@ -16,6 +16,8 @@ module Admin if @tag.update(tag_params.merge(reviewed_at: Time.now.utc)) redirect_to admin_tag_path(@tag.id), notice: I18n.t('admin.tags.updated_msg') else + @time_period = (6.days.ago.to_date...Time.now.utc.to_date) + render :show end end @@ -27,7 +29,7 @@ module Admin end def tag_params - params.require(:tag).permit(:name, :trendable, :usable, :listable) + params.require(:tag).permit(:name, :display_name, :trendable, :usable, :listable) end end end diff --git a/app/controllers/api/v1/featured_tags_controller.rb b/app/controllers/api/v1/featured_tags_controller.rb index e4e836c97..c1ead4f54 100644 --- a/app/controllers/api/v1/featured_tags_controller.rb +++ b/app/controllers/api/v1/featured_tags_controller.rb @@ -13,9 +13,7 @@ class Api::V1::FeaturedTagsController < Api::BaseController end def create - @featured_tag = current_account.featured_tags.new(featured_tag_params) - @featured_tag.reset_data - @featured_tag.save! + @featured_tag = current_account.featured_tags.create!(featured_tag_params) render json: @featured_tag, serializer: REST::FeaturedTagSerializer end diff --git a/app/controllers/settings/featured_tags_controller.rb b/app/controllers/settings/featured_tags_controller.rb index e805527d0..aadff7c83 100644 --- a/app/controllers/settings/featured_tags_controller.rb +++ b/app/controllers/settings/featured_tags_controller.rb @@ -11,7 +11,6 @@ class Settings::FeaturedTagsController < Settings::BaseController def create @featured_tag = current_account.featured_tags.new(featured_tag_params) - @featured_tag.reset_data if @featured_tag.save redirect_to settings_featured_tags_path diff --git a/app/javascript/mastodon/actions/compose.js b/app/javascript/mastodon/actions/compose.js index bd4c1d002..32d8c229e 100644 --- a/app/javascript/mastodon/actions/compose.js +++ b/app/javascript/mastodon/actions/compose.js @@ -606,7 +606,20 @@ function insertIntoTagHistory(recognizedTags, text) { const state = getState(); const oldHistory = state.getIn(['compose', 'tagHistory']); const me = state.getIn(['meta', 'me']); - const names = recognizedTags.map(tag => text.match(new RegExp(`#${tag.name}`, 'i'))[0].slice(1)); + + // FIXME: Matching input hashtags with recognized hashtags has become more + // complicated because of new normalization rules, it's no longer just + // a case sensitivity issue + const names = recognizedTags.map(tag => { + const matches = text.match(new RegExp(`#${tag.name}`, 'i')); + + if (matches && matches.length > 0) { + return matches[0].slice(1); + } else { + return tag.name; + } + }); + const intersectedOldHistory = oldHistory.filter(name => names.findIndex(newName => newName.toLowerCase() === name.toLowerCase()) === -1); names.push(...intersectedOldHistory.toJS()); diff --git a/app/lib/ascii_folding.rb b/app/lib/ascii_folding.rb new file mode 100644 index 000000000..1798d3d0e --- /dev/null +++ b/app/lib/ascii_folding.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +class ASCIIFolding + NON_ASCII_CHARS = 'ÀÁÂÃÄÅàáâãäåĀāĂ㥹ÇçĆćĈĉĊċČčÐðĎďĐđÈÉÊËèéêëĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħÌÍÎÏìíîïĨĩĪīĬĭĮįİıĴĵĶķĸĹĺĻļĽľĿŀŁłÑñŃńŅņŇňʼnŊŋÒÓÔÕÖØòóôõöøŌōŎŏŐőŔŕŖŗŘřŚśŜŝŞşŠšſŢţŤťŦŧÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųŴŵÝýÿŶŷŸŹźŻżŽž' + EQUIVALENT_ASCII_CHARS = 'AAAAAAaaaaaaAaAaAaCcCcCcCcCcDdDdDdEEEEeeeeEeEeEeEeEeGgGgGgGgHhHhIIIIiiiiIiIiIiIiIiJjKkkLlLlLlLlLlNnNnNnNnnNnOOOOOOooooooOoOoOoRrRrRrSsSsSsSssTtTtTtUUUUuuuuUuUuUuUuUuUuWwYyyYyYZzZzZz' + + def fold(str) + str.tr(NON_ASCII_CHARS, EQUIVALENT_ASCII_CHARS) + end +end diff --git a/app/lib/hashtag_normalizer.rb b/app/lib/hashtag_normalizer.rb new file mode 100644 index 000000000..c1f99e163 --- /dev/null +++ b/app/lib/hashtag_normalizer.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +class HashtagNormalizer + def normalize(str) + remove_invalid_characters(ascii_folding(lowercase(cjk_width(str)))) + end + + private + + def remove_invalid_characters(str) + str.gsub(/[^[:alnum:]#{Tag::HASHTAG_SEPARATORS}]/, '') + end + + def ascii_folding(str) + ASCIIFolding.new.fold(str) + end + + def lowercase(str) + str.mb_chars.downcase.to_s + end + + def cjk_width(str) + str.unicode_normalize(:nfkc) + end +end diff --git a/app/models/account.rb b/app/models/account.rb index 628692d22..fe77eaec4 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -62,7 +62,7 @@ class Account < ApplicationRecord ) USERNAME_RE = /[a-z0-9_]+([a-z0-9_\.-]+[a-z0-9_]+)?/i - MENTION_RE = /(?<=^|[^\/[:word:]])@((#{USERNAME_RE})(?:@[[:word:]\.\-]+[[:word:]]+)?)/i + MENTION_RE = /(?<=^|[^\/[:word:]])@((#{USERNAME_RE})(?:@[[:alnum:]\.\-]+[[:alnum:]]+)?)/i URL_PREFIX_RE = /\Ahttp(s?):\/\/[^\/]+/ include Attachmentable diff --git a/app/models/custom_filter.rb b/app/models/custom_filter.rb index e98ed7df9..985eab125 100644 --- a/app/models/custom_filter.rb +++ b/app/models/custom_filter.rb @@ -3,14 +3,14 @@ # # Table name: custom_filters # -# id :bigint not null, primary key -# account_id :bigint +# id :bigint(8) not null, primary key +# account_id :bigint(8) # expires_at :datetime # phrase :text default(""), not null # context :string default([]), not null, is an Array # created_at :datetime not null # updated_at :datetime not null -# action :integer default(0), not null +# action :integer default("warn"), not null # class CustomFilter < ApplicationRecord diff --git a/app/models/custom_filter_keyword.rb b/app/models/custom_filter_keyword.rb index bf5c55746..e0d0289ae 100644 --- a/app/models/custom_filter_keyword.rb +++ b/app/models/custom_filter_keyword.rb @@ -3,8 +3,8 @@ # # Table name: custom_filter_keywords # -# id :bigint not null, primary key -# custom_filter_id :bigint not null +# id :bigint(8) not null, primary key +# custom_filter_id :bigint(8) not null # keyword :text default(""), not null # whole_word :boolean default(TRUE), not null # created_at :datetime not null diff --git a/app/models/featured_tag.rb b/app/models/featured_tag.rb index 74d62e777..c9c285bfa 100644 --- a/app/models/featured_tag.rb +++ b/app/models/featured_tag.rb @@ -13,17 +13,19 @@ # class FeaturedTag < ApplicationRecord - belongs_to :account, inverse_of: :featured_tags, required: true - belongs_to :tag, inverse_of: :featured_tags, required: true + belongs_to :account, inverse_of: :featured_tags + belongs_to :tag, inverse_of: :featured_tags, optional: true # Set after validation - delegate :name, to: :tag, allow_nil: true - - validates_associated :tag, on: :create - validates :name, presence: true, on: :create + validate :validate_tag_name, on: :create validate :validate_featured_tags_limit, on: :create - def name=(str) - self.tag = Tag.find_or_create_by_names(str.strip)&.first + before_create :set_tag + before_create :reset_data + + attr_writer :name + + def name + tag_id.present? ? tag.name : @name end def increment(timestamp) @@ -34,14 +36,23 @@ class FeaturedTag < ApplicationRecord update(statuses_count: [0, statuses_count - 1].max, last_status_at: account.statuses.where(visibility: %i(public unlisted)).tagged_with(tag).where.not(id: deleted_status_id).select(:created_at).first&.created_at) end + private + + def set_tag + self.tag = Tag.find_or_create_by_names(@name)&.first + end + def reset_data self.statuses_count = account.statuses.where(visibility: %i(public unlisted)).tagged_with(tag).count self.last_status_at = account.statuses.where(visibility: %i(public unlisted)).tagged_with(tag).select(:created_at).first&.created_at end - private - def validate_featured_tags_limit errors.add(:base, I18n.t('featured_tags.errors.limit')) if account.featured_tags.count >= 10 end + + def validate_tag_name + errors.add(:name, :blank) if @name.blank? + errors.add(:name, :invalid) unless @name.match?(/\A(#{Tag::HASHTAG_NAME_RE})\z/i) + end end diff --git a/app/models/tag.rb b/app/models/tag.rb index a64042614..f078007f2 100644 --- a/app/models/tag.rb +++ b/app/models/tag.rb @@ -15,6 +15,7 @@ # last_status_at :datetime # max_score :float # max_score_at :datetime +# display_name :string # class Tag < ApplicationRecord @@ -24,11 +25,12 @@ class Tag < ApplicationRecord has_many :featured_tags, dependent: :destroy, inverse_of: :tag HASHTAG_SEPARATORS = "_\u00B7\u200c" - HASHTAG_NAME_RE = "([[:word:]_][[:word:]#{HASHTAG_SEPARATORS}]*[[:alpha:]#{HASHTAG_SEPARATORS}][[:word:]#{HASHTAG_SEPARATORS}]*[[:word:]_])|([[:word:]_]*[[:alpha:]][[:word:]_]*)" + HASHTAG_NAME_RE = "([[:alnum:]_][[:alnum:]#{HASHTAG_SEPARATORS}]*[[:alpha:]#{HASHTAG_SEPARATORS}][[:alnum:]#{HASHTAG_SEPARATORS}]*[[:alnum:]_])|([[:alnum:]_]*[[:alpha:]][[:alnum:]_]*)" HASHTAG_RE = /(?:^|[^\/\)\w])#(#{HASHTAG_NAME_RE})/i validates :name, presence: true, format: { with: /\A(#{HASHTAG_NAME_RE})\z/i } validate :validate_name_change, if: -> { !new_record? && name_changed? } + validate :validate_display_name_change, if: -> { !new_record? && display_name_changed? } scope :reviewed, -> { where.not(reviewed_at: nil) } scope :unreviewed, -> { where(reviewed_at: nil) } @@ -46,6 +48,10 @@ class Tag < ApplicationRecord name end + def display_name + attributes['display_name'] || name + end + def usable boolean_with_default('usable', true) end @@ -90,8 +96,10 @@ class Tag < ApplicationRecord class << self def find_or_create_by_names(name_or_names) - Array(name_or_names).map(&method(:normalize)).uniq { |str| str.mb_chars.downcase.to_s }.map do |normalized_name| - tag = matching_name(normalized_name).first || create(name: normalized_name) + names = Array(name_or_names).map { |str| [normalize(str), str] }.uniq(&:first) + + names.map do |(normalized_name, display_name)| + tag = matching_name(normalized_name).first || create(name: normalized_name, display_name: display_name) yield tag if block_given? @@ -129,7 +137,7 @@ class Tag < ApplicationRecord end def normalize(str) - str.gsub(/\A#/, '') + HashtagNormalizer.new.normalize(str) end end @@ -138,4 +146,8 @@ class Tag < ApplicationRecord def validate_name_change errors.add(:name, I18n.t('tags.does_not_match_previous_name')) unless name_was.mb_chars.casecmp(name.mb_chars).zero? end + + def validate_display_name_change + errors.add(:display_name, I18n.t('tags.does_not_match_previous_name')) unless HashtagNormalizer.new.normalize(display_name).casecmp(name.mb_chars).zero? + end end diff --git a/app/serializers/activitypub/hashtag_serializer.rb b/app/serializers/activitypub/hashtag_serializer.rb index 1a56e4dfe..90929c57f 100644 --- a/app/serializers/activitypub/hashtag_serializer.rb +++ b/app/serializers/activitypub/hashtag_serializer.rb @@ -10,11 +10,11 @@ class ActivityPub::HashtagSerializer < ActivityPub::Serializer end def name - "##{object.name}" + "##{object.display_name}" end def href - if object.class.name == 'FeaturedTag' + if object.instance_of?(FeaturedTag) short_account_tag_url(object.account, object.tag) else tag_url(object) diff --git a/app/serializers/rest/featured_tag_serializer.rb b/app/serializers/rest/featured_tag_serializer.rb index 96adcc7d0..8abcd9b90 100644 --- a/app/serializers/rest/featured_tag_serializer.rb +++ b/app/serializers/rest/featured_tag_serializer.rb @@ -12,4 +12,8 @@ class REST::FeaturedTagSerializer < ActiveModel::Serializer def url short_account_tag_url(object.account, object.tag) end + + def name + object.display_name + end end diff --git a/app/serializers/rest/tag_serializer.rb b/app/serializers/rest/tag_serializer.rb index 74aa571a4..52bfaa4ce 100644 --- a/app/serializers/rest/tag_serializer.rb +++ b/app/serializers/rest/tag_serializer.rb @@ -8,4 +8,8 @@ class REST::TagSerializer < ActiveModel::Serializer def url tag_url(object) end + + def name + object.display_name + end end diff --git a/app/views/accounts/show.html.haml b/app/views/accounts/show.html.haml index 72e9c6611..7fa688bd3 100644 --- a/app/views/accounts/show.html.haml +++ b/app/views/accounts/show.html.haml @@ -75,7 +75,7 @@ = link_to short_account_tag_path(@account, featured_tag.tag) do %h4 = fa_icon 'hashtag' - = featured_tag.name + = featured_tag.display_name %small - if featured_tag.last_status_at.nil? = t('accounts.nothing_here') diff --git a/app/views/accounts/show.rss.ruby b/app/views/accounts/show.rss.ruby index fd45a8b2b..34e29d483 100644 --- a/app/views/accounts/show.rss.ruby +++ b/app/views/accounts/show.rss.ruby @@ -28,7 +28,7 @@ RSS::Builder.build do |doc| end status.tags.each do |tag| - item.category(tag.name) + item.category(tag.display_name) end end end diff --git a/app/views/admin/tags/show.html.haml b/app/views/admin/tags/show.html.haml index fd9acce4a..104190b58 100644 --- a/app/views/admin/tags/show.html.haml +++ b/app/views/admin/tags/show.html.haml @@ -2,7 +2,7 @@ = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' - content_for :page_title do - = "##{@tag.name}" + = "##{@tag.display_name}" - if current_user.can?(:view_dashboard) - content_for :heading_actions do @@ -53,7 +53,7 @@ = render 'shared/error_messages', object: @tag .fields-group - = f.input :name, wrapper: :with_block_label + = f.input :display_name, wrapper: :with_block_label .fields-group = f.input :usable, as: :boolean, wrapper: :with_label diff --git a/app/views/admin/trends/tags/_tag.html.haml b/app/views/admin/trends/tags/_tag.html.haml index 7bb99b158..a30666a08 100644 --- a/app/views/admin/trends/tags/_tag.html.haml +++ b/app/views/admin/trends/tags/_tag.html.haml @@ -6,7 +6,7 @@ .pending-account__header = link_to admin_tag_path(tag.id) do = fa_icon 'hashtag' - = tag.name + = tag.display_name %br/ diff --git a/app/views/admin_mailer/_new_trending_tags.text.erb b/app/views/admin_mailer/_new_trending_tags.text.erb index cde5af4e4..363df369d 100644 --- a/app/views/admin_mailer/_new_trending_tags.text.erb +++ b/app/views/admin_mailer/_new_trending_tags.text.erb @@ -1,12 +1,12 @@ <%= raw t('admin_mailer.new_trends.new_trending_tags.title') %> <% @tags.each do |tag| %> -- #<%= tag.name %> +- #<%= tag.display_name %> <%= raw t('admin.trends.tags.usage_comparison', today: tag.history.get(Time.now.utc).accounts, yesterday: tag.history.get(Time.now.utc - 1.day).accounts) %> • <%= t('admin.trends.tags.current_score', score: Trends.tags.score(tag.id).round(2)) %> <% end %> <% if @lowest_trending_tag %> -<%= raw t('admin_mailer.new_trends.new_trending_tags.requirements', lowest_tag_name: @lowest_trending_tag.name, lowest_tag_score: Trends.tags.score(@lowest_trending_tag.id).round(2), rank: Trends.tags.options[:review_threshold]) %> +<%= raw t('admin_mailer.new_trends.new_trending_tags.requirements', lowest_tag_name: @lowest_trending_tag.display_name, lowest_tag_score: Trends.tags.score(@lowest_trending_tag.id).round(2), rank: Trends.tags.options[:review_threshold]) %> <% else %> <%= raw t('admin_mailer.new_trends.new_trending_tags.no_approved_tags') %> <% end %> diff --git a/app/views/settings/featured_tags/index.html.haml b/app/views/settings/featured_tags/index.html.haml index 65de7f8f3..5d87e2862 100644 --- a/app/views/settings/featured_tags/index.html.haml +++ b/app/views/settings/featured_tags/index.html.haml @@ -9,7 +9,7 @@ = render 'shared/error_messages', object: @featured_tag .fields-group - = f.input :name, wrapper: :with_block_label, hint: safe_join([t('simple_form.hints.featured_tag.name'), safe_join(@recently_used_tags.map { |tag| link_to("##{tag.name}", settings_featured_tags_path(featured_tag: { name: tag.name }), method: :post) }, ', ')], ' ') + = f.input :name, wrapper: :with_block_label, hint: safe_join([t('simple_form.hints.featured_tag.name'), safe_join(@recently_used_tags.map { |tag| link_to("##{tag.display_name}", settings_featured_tags_path(featured_tag: { name: tag.name }), method: :post) }, ', ')], ' ') .actions = f.button :button, t('featured_tags.add_new'), type: :submit diff --git a/app/views/tags/_og.html.haml b/app/views/tags/_og.html.haml index a7c289bcb..37f644cf2 100644 --- a/app/views/tags/_og.html.haml +++ b/app/views/tags/_og.html.haml @@ -1,6 +1,6 @@ = opengraph 'og:site_name', t('about.hosted_on', domain: site_hostname) = opengraph 'og:url', tag_url(@tag) = opengraph 'og:type', 'website' -= opengraph 'og:title', "##{@tag.name}" -= opengraph 'og:description', strip_tags(t('about.about_hashtag_html', hashtag: @tag.name)) += opengraph 'og:title', "##{@tag.display_name}" += opengraph 'og:description', strip_tags(t('about.about_hashtag_html', hashtag: @tag.display_name)) = opengraph 'twitter:card', 'summary' diff --git a/app/views/tags/show.html.haml b/app/views/tags/show.html.haml index 5cd513b32..6dfb4f9b3 100644 --- a/app/views/tags/show.html.haml +++ b/app/views/tags/show.html.haml @@ -1,5 +1,5 @@ - content_for :page_title do - = "##{@tag.name}" + = "##{@tag.display_name}" - content_for :header_tags do %meta{ name: 'robots', content: 'noindex' }/ @@ -9,8 +9,8 @@ = render 'og' .page-header - %h1= "##{@tag.name}" - %p= t('about.about_hashtag_html', hashtag: @tag.name) + %h1= "##{@tag.display_name}" + %p= t('about.about_hashtag_html', hashtag: @tag.display_name) #mastodon-timeline{ data: { props: Oj.dump(default_props.merge(hashtag: @tag.name, local: @local)) }} .notranslate#modal-container diff --git a/app/views/tags/show.rss.ruby b/app/views/tags/show.rss.ruby index 9ce71be74..8e0c2327b 100644 --- a/app/views/tags/show.rss.ruby +++ b/app/views/tags/show.rss.ruby @@ -1,6 +1,6 @@ RSS::Builder.build do |doc| - doc.title("##{@tag.name}") - doc.description(I18n.t('rss.descriptions.tag', hashtag: @tag.name)) + doc.title("##{@tag.display_name}") + doc.description(I18n.t('rss.descriptions.tag', hashtag: @tag.display_name)) doc.link(tag_url(@tag)) doc.last_build_date(@statuses.first.created_at) if @statuses.any? doc.generator("Mastodon v#{Mastodon::Version.to_s}") @@ -26,7 +26,7 @@ RSS::Builder.build do |doc| end status.tags.each do |tag| - item.category(tag.name) + item.category(tag.display_name) end end end diff --git a/config/initializers/inflections.rb b/config/initializers/inflections.rb index 9bc9a54b2..3e5a55617 100644 --- a/config/initializers/inflections.rb +++ b/config/initializers/inflections.rb @@ -24,6 +24,7 @@ ActiveSupport::Inflector.inflections(:en) do |inflect| inflect.acronym 'RSS' inflect.acronym 'REST' inflect.acronym 'URL' + inflect.acronym 'ASCII' inflect.singular 'data', 'data' end diff --git a/db/migrate/20220710102457_add_display_name_to_tags.rb b/db/migrate/20220710102457_add_display_name_to_tags.rb new file mode 100644 index 000000000..aa7867645 --- /dev/null +++ b/db/migrate/20220710102457_add_display_name_to_tags.rb @@ -0,0 +1,5 @@ +class AddDisplayNameToTags < ActiveRecord::Migration[6.1] + def change + add_column :tags, :display_name, :string + end +end diff --git a/db/schema.rb b/db/schema.rb index 54966ef64..9b465b674 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2022_07_04_024901) do +ActiveRecord::Schema.define(version: 2022_07_10_102457) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -940,6 +940,7 @@ ActiveRecord::Schema.define(version: 2022_07_04_024901) do t.datetime "last_status_at" t.float "max_score" t.datetime "max_score_at" + t.string "display_name" t.index "lower((name)::text) text_pattern_ops", name: "index_tags_on_name_lower_btree", unique: true end diff --git a/spec/lib/hashtag_normalizer_spec.rb b/spec/lib/hashtag_normalizer_spec.rb new file mode 100644 index 000000000..fbb9f37c0 --- /dev/null +++ b/spec/lib/hashtag_normalizer_spec.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe HashtagNormalizer do + subject { described_class.new } + + describe '#normalize' do + it 'converts full-width Latin characters into basic Latin characters' do + expect(subject.normalize('Synthwave')).to eq 'synthwave' + end + + it 'converts half-width Katakana into Kana characters' do + expect(subject.normalize('シーサイドライナー')).to eq 'シーサイドライナー' + end + + it 'converts modified Latin characters into basic Latin characters' do + expect(subject.normalize('BLÅHAJ')).to eq 'blahaj' + end + + it 'strips out invalid characters' do + expect(subject.normalize('#foo')).to eq 'foo' + end + + it 'keeps valid characters' do + expect(subject.normalize('a·b')).to eq 'a·b' + end + end +end diff --git a/spec/models/tag_spec.rb b/spec/models/tag_spec.rb index 3949dbce5..b16f99a79 100644 --- a/spec/models/tag_spec.rb +++ b/spec/models/tag_spec.rb @@ -91,7 +91,7 @@ RSpec.describe Tag, type: :model do upcase_string = 'abcABCabcABCやゆよ' downcase_string = 'abcabcabcabcやゆよ'; - tag = Fabricate(:tag, name: downcase_string) + tag = Fabricate(:tag, name: HashtagNormalizer.new.normalize(downcase_string)) expect(Tag.find_normalized(upcase_string)).to eq tag end end @@ -101,12 +101,12 @@ RSpec.describe Tag, type: :model do upcase_string = 'abcABCabcABCやゆよ' downcase_string = 'abcabcabcabcやゆよ'; - tag = Fabricate(:tag, name: downcase_string) + tag = Fabricate(:tag, name: HashtagNormalizer.new.normalize(downcase_string)) expect(Tag.matches_name(upcase_string)).to eq [tag] end it 'uses the LIKE operator' do - expect(Tag.matches_name('100%abc').to_sql).to eq %q[SELECT "tags".* FROM "tags" WHERE LOWER("tags"."name") LIKE LOWER('100\\%abc%')] + expect(Tag.matches_name('100%abc').to_sql).to eq %q[SELECT "tags".* FROM "tags" WHERE LOWER("tags"."name") LIKE LOWER('100abc%')] end end @@ -115,7 +115,7 @@ RSpec.describe Tag, type: :model do upcase_string = 'abcABCabcABCやゆよ' downcase_string = 'abcabcabcabcやゆよ'; - tag = Fabricate(:tag, name: downcase_string) + tag = Fabricate(:tag, name: HashtagNormalizer.new.normalize(downcase_string)) expect(Tag.matching_name(upcase_string)).to eq [tag] end end diff --git a/streaming/index.js b/streaming/index.js index 792ec5a44..a55181bad 100644 --- a/streaming/index.js +++ b/streaming/index.js @@ -892,6 +892,34 @@ const startWorker = async (workerId) => { return arr; }; + /** + * See app/lib/ascii_folder.rb for the canon definitions + * of these constants + */ + const NON_ASCII_CHARS = 'ÀÁÂÃÄÅàáâãäåĀāĂ㥹ÇçĆćĈĉĊċČčÐðĎďĐđÈÉÊËèéêëĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħÌÍÎÏìíîïĨĩĪīĬĭĮįİıĴĵĶķĸĹĺĻļĽľĿŀŁłÑñŃńŅņŇňʼnŊŋÒÓÔÕÖØòóôõöøŌōŎŏŐőŔŕŖŗŘřŚśŜŝŞşŠšſŢţŤťŦŧÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųŴŵÝýÿŶŷŸŹźŻżŽž'; + const EQUIVALENT_ASCII_CHARS = 'AAAAAAaaaaaaAaAaAaCcCcCcCcCcDdDdDdEEEEeeeeEeEeEeEeEeGgGgGgGgHhHhIIIIiiiiIiIiIiIiIiJjKkkLlLlLlLlLlNnNnNnNnnNnOOOOOOooooooOoOoOoRrRrRrSsSsSsSssTtTtTtUUUUuuuuUuUuUuUuUuUuWwYyyYyYZzZzZz'; + + /** + * @param {string} str + * @return {string} + */ + const foldToASCII = str => { + const regex = new RegExp(NON_ASCII_CHARS.split('').join('|'), 'g'); + + return str.replace(regex, match => { + const index = NON_ASCII_CHARS.indexOf(match); + return EQUIVALENT_ASCII_CHARS[index]; + }); + }; + + /** + * @param {string} str + * @return {string} + */ + const normalizeHashtag = str => { + return foldToASCII(str.normalize('NFKC').toLowerCase()).replace(/[^\p{L}\p{N}_\u00b7\u200c]/gu, ''); + }; + /** * @param {any} req * @param {string} name @@ -968,7 +996,7 @@ const startWorker = async (workerId) => { reject('No tag for stream provided'); } else { resolve({ - channelIds: [`timeline:hashtag:${params.tag.toLowerCase()}`], + channelIds: [`timeline:hashtag:${normalizeHashtag(params.tag)}`], options: { needsFiltering: true }, }); } @@ -979,7 +1007,7 @@ const startWorker = async (workerId) => { reject('No tag for stream provided'); } else { resolve({ - channelIds: [`timeline:hashtag:${params.tag.toLowerCase()}:local`], + channelIds: [`timeline:hashtag:${normalizeHashtag(params.tag)}:local`], options: { needsFiltering: true }, }); } From 6ca0de9494fe47d2c322335c3a257896140a22fb Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 14 Jul 2022 01:23:10 +0200 Subject: [PATCH 229/652] Fix nil error when rendering featured hashtags on profile (#18808) Regression from #18795 --- app/models/featured_tag.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/models/featured_tag.rb b/app/models/featured_tag.rb index c9c285bfa..201ce75f5 100644 --- a/app/models/featured_tag.rb +++ b/app/models/featured_tag.rb @@ -22,6 +22,8 @@ class FeaturedTag < ApplicationRecord before_create :set_tag before_create :reset_data + delegate :display_name, to: :tag + attr_writer :name def name From bbb5f1917d6a09c8b7f12885a40550006a26d9a8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 15 Jul 2022 03:20:58 +0200 Subject: [PATCH 230/652] New Crowdin updates (#18781) * New translations en.json (Malayalam) * New translations en.json (Corsican) * New translations en.json (Sardinian) * New translations en.json (Sanskrit) * New translations en.json (Kabyle) * New translations en.json (Taigi) * New translations en.json (Silesian) * New translations en.json (Breton) * New translations en.json (Tatar) * New translations en.json (Tamil) * New translations en.json (Kazakh) * New translations en.json (Spanish, Argentina) * New translations en.json (Spanish, Mexico) * New translations en.json (Bengali) * New translations en.json (Marathi) * New translations en.json (Croatian) * New translations en.json (Norwegian Nynorsk) * New translations en.json (Estonian) * New translations en.json (Chinese Traditional, Hong Kong) * New translations en.json (Latvian) * New translations en.json (Hindi) * New translations en.json (Malay) * New translations en.json (Telugu) * New translations en.json (English, United Kingdom) * New translations en.json (Welsh) * New translations en.json (Uyghur) * New translations en.json (Standard Moroccan Tamazight) * New translations en.yml (Slovenian) * New translations simple_form.en.yml (Icelandic) * New translations en.json (Danish) * New translations en.json (Polish) * New translations en.json (Slovenian) * New translations en.json (Chinese Traditional) * New translations en.json (Ido) * New translations en.json (Danish) * New translations en.yml (Danish) * New translations en.yml (Ido) * New translations simple_form.en.yml (Danish) * New translations activerecord.en.yml (Danish) * New translations en.yml (Ido) * New translations simple_form.en.yml (Ido) * New translations activerecord.en.yml (Ido) * New translations en.yml (Ido) * New translations en.json (Latvian) * New translations en.yml (Czech) * New translations en.json (Czech) * New translations en.json (Greek) * New translations en.json (Hungarian) * New translations en.yml (Hungarian) * New translations en.json (Korean) * New translations en.json (Spanish, Argentina) * New translations en.yml (Hungarian) * New translations en.json (Italian) * New translations en.json (Russian) * New translations simple_form.en.yml (Hungarian) * New translations activerecord.en.yml (Hungarian) * New translations en.json (Hungarian) * New translations en.json (Turkish) * New translations simple_form.en.yml (Catalan) * New translations en.yml (Catalan) * New translations simple_form.en.yml (Catalan) * New translations activerecord.en.yml (Catalan) * New translations en.yml (Ukrainian) * New translations en.json (Ukrainian) * New translations simple_form.en.yml (Galician) * New translations simple_form.en.yml (Slovenian) * New translations simple_form.en.yml (Georgian) * New translations simple_form.en.yml (Norwegian) * New translations simple_form.en.yml (Polish) * New translations simple_form.en.yml (Portuguese) * New translations simple_form.en.yml (Russian) * New translations simple_form.en.yml (Slovak) * New translations simple_form.en.yml (Albanian) * New translations simple_form.en.yml (Italian) * New translations simple_form.en.yml (Serbian (Cyrillic)) * New translations simple_form.en.yml (Swedish) * New translations simple_form.en.yml (Turkish) * New translations simple_form.en.yml (Ukrainian) * New translations simple_form.en.yml (Chinese Simplified) * New translations simple_form.en.yml (Chinese Traditional) * New translations simple_form.en.yml (Vietnamese) * New translations simple_form.en.yml (Portuguese, Brazilian) * New translations simple_form.en.yml (Indonesian) * New translations simple_form.en.yml (Japanese) * New translations simple_form.en.yml (Armenian) * New translations simple_form.en.yml (Korean) * New translations simple_form.en.yml (Arabic) * New translations simple_form.en.yml (Dutch) * New translations simple_form.en.yml (Thai) * New translations en.yml (Ukrainian) * New translations simple_form.en.yml (Esperanto) * New translations en.json (Ukrainian) * New translations simple_form.en.yml (Romanian) * New translations simple_form.en.yml (French) * New translations simple_form.en.yml (Spanish) * New translations simple_form.en.yml (Afrikaans) * New translations simple_form.en.yml (Bulgarian) * New translations simple_form.en.yml (Hungarian) * New translations simple_form.en.yml (Catalan) * New translations simple_form.en.yml (Czech) * New translations simple_form.en.yml (Danish) * New translations simple_form.en.yml (German) * New translations simple_form.en.yml (Greek) * New translations simple_form.en.yml (Frisian) * New translations simple_form.en.yml (Basque) * New translations simple_form.en.yml (Finnish) * New translations simple_form.en.yml (Hebrew) * New translations simple_form.en.yml (Persian) * New translations simple_form.en.yml (Tamil) * New translations simple_form.en.yml (Sorani (Kurdish)) * New translations simple_form.en.yml (Scottish Gaelic) * New translations simple_form.en.yml (Asturian) * New translations simple_form.en.yml (Occitan) * New translations simple_form.en.yml (Serbian (Latin)) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Corsican) * New translations simple_form.en.yml (Sinhala) * New translations simple_form.en.yml (Sardinian) * New translations simple_form.en.yml (Kabyle) * New translations simple_form.en.yml (Ido) * New translations simple_form.en.yml (Standard Moroccan Tamazight) * New translations simple_form.en.yml (Breton) * New translations simple_form.en.yml (Spanish, Argentina) * New translations simple_form.en.yml (Latvian) * New translations simple_form.en.yml (Spanish, Mexico) * New translations simple_form.en.yml (Bengali) * New translations simple_form.en.yml (Croatian) * New translations simple_form.en.yml (Norwegian Nynorsk) * New translations simple_form.en.yml (Kazakh) * New translations simple_form.en.yml (Estonian) * New translations simple_form.en.yml (Malayalam) * New translations simple_form.en.yml (Welsh) * New translations simple_form.en.yml (Chinese Traditional, Hong Kong) * New translations simple_form.en.yml (Tatar) * New translations activerecord.en.yml (Ukrainian) * New translations simple_form.en.yml (Afrikaans) * New translations simple_form.en.yml (Latvian) * New translations en.yml (Icelandic) * New translations simple_form.en.yml (Icelandic) * New translations en.yml (Russian) * New translations simple_form.en.yml (Danish) * New translations simple_form.en.yml (Ido) * New translations en.json (Spanish) * New translations simple_form.en.yml (Polish) * New translations en.yml (Korean) * New translations simple_form.en.yml (Chinese Traditional) * New translations simple_form.en.yml (Chinese Traditional) * New translations en.json (Esperanto) * New translations en.json (Esperanto) * New translations simple_form.en.yml (Czech) * New translations simple_form.en.yml (Hungarian) * New translations en.yml (Esperanto) * New translations en.yml (Esperanto) * New translations en.json (Esperanto) * New translations en.yml (Galician) * New translations en.json (Galician) * New translations simple_form.en.yml (Galician) * New translations en.json (Spanish) * New translations en.json (Vietnamese) * New translations simple_form.en.yml (Spanish) * New translations simple_form.en.yml (Vietnamese) * New translations en.json (Kurmanji (Kurdish)) * New translations activerecord.en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Galician) * New translations simple_form.en.yml (Polish) * New translations simple_form.en.yml (Ukrainian) * New translations simple_form.en.yml (Chinese Traditional) * New translations simple_form.en.yml (Vietnamese) * New translations simple_form.en.yml (Spanish) * New translations simple_form.en.yml (Afrikaans) * New translations simple_form.en.yml (Italian) * New translations simple_form.en.yml (Danish) * New translations simple_form.en.yml (Hungarian) * New translations simple_form.en.yml (Ido) * New translations simple_form.en.yml (Latvian) * New translations en.yml (Esperanto) * New translations simple_form.en.yml (Latvian) * New translations en.yml (Esperanto) * New translations en.json (Esperanto) * New translations en.yml (Korean) * New translations en.yml (Esperanto) * New translations simple_form.en.yml (Ido) * New translations simple_form.en.yml (Danish) * New translations simple_form.en.yml (Chinese Traditional) * New translations simple_form.en.yml (Slovenian) * New translations simple_form.en.yml (Spanish) * New translations simple_form.en.yml (Vietnamese) * New translations simple_form.en.yml (Ukrainian) * New translations en.yml (French) * New translations en.json (French) * New translations en.yml (French) * New translations en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (French) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations en.json (Sinhala) * New translations activerecord.en.yml (Sinhala) * New translations en.yml (Thai) * New translations en.json (Thai) * New translations simple_form.en.yml (Italian) * New translations en.yml (Thai) * New translations simple_form.en.yml (Thai) * New translations simple_form.en.yml (Hungarian) * New translations en.json (Japanese) * New translations simple_form.en.yml (Polish) * New translations en.yml (Thai) * New translations en.yml (Portuguese) * New translations en.json (Portuguese) * New translations en.yml (Portuguese) * New translations simple_form.en.yml (Portuguese) * New translations activerecord.en.yml (Portuguese) * New translations simple_form.en.yml (Russian) * New translations en.yml (Thai) * New translations simple_form.en.yml (Thai) * New translations en.yml (French) * New translations activerecord.en.yml (French) * New translations en.yml (French) * New translations en.json (French) * New translations en.yml (French) * New translations simple_form.en.yml (French) * New translations en.yml (French) * New translations simple_form.en.yml (French) * New translations activerecord.en.yml (French) * New translations en.json (Dutch) * New translations en.yml (Dutch) * New translations simple_form.en.yml (Dutch) * New translations en.json (Dutch) * New translations devise.en.yml (Dutch) * New translations en.json (Welsh) * New translations en.yml (Welsh) * New translations simple_form.en.yml (Welsh) * New translations doorkeeper.en.yml (Welsh) * New translations en.yml (Galician) * New translations simple_form.en.yml (Galician) * New translations en.json (Albanian) * New translations activerecord.en.yml (Albanian) * New translations en.yml (Albanian) * New translations simple_form.en.yml (Albanian) * New translations activerecord.en.yml (Albanian) * New translations doorkeeper.en.yml (Albanian) * New translations devise.en.yml (Albanian) * New translations en.yml (Portuguese) * New translations en.json (Vietnamese) * New translations en.yml (Esperanto) * New translations en.yml (Esperanto) * New translations simple_form.en.yml (Esperanto) * New translations en.yml (Esperanto) * New translations simple_form.en.yml (Esperanto) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/ca.json | 4 +- app/javascript/mastodon/locales/cs.json | 4 +- app/javascript/mastodon/locales/cy.json | 16 +-- app/javascript/mastodon/locales/da.json | 10 +- app/javascript/mastodon/locales/el.json | 4 +- app/javascript/mastodon/locales/eo.json | 40 +++--- app/javascript/mastodon/locales/es-AR.json | 4 +- app/javascript/mastodon/locales/es.json | 4 +- app/javascript/mastodon/locales/fr.json | 6 +- app/javascript/mastodon/locales/gl.json | 4 +- app/javascript/mastodon/locales/hu.json | 4 +- app/javascript/mastodon/locales/io.json | 4 +- app/javascript/mastodon/locales/is.json | 4 +- app/javascript/mastodon/locales/it.json | 4 +- app/javascript/mastodon/locales/ja.json | 6 +- app/javascript/mastodon/locales/ko.json | 4 +- app/javascript/mastodon/locales/ku.json | 4 +- app/javascript/mastodon/locales/lv.json | 4 +- app/javascript/mastodon/locales/nl.json | 6 +- app/javascript/mastodon/locales/pl.json | 4 +- app/javascript/mastodon/locales/pt-PT.json | 4 +- app/javascript/mastodon/locales/ru.json | 4 +- app/javascript/mastodon/locales/si.json | 2 +- app/javascript/mastodon/locales/sl.json | 4 +- app/javascript/mastodon/locales/sq.json | 18 +-- app/javascript/mastodon/locales/th.json | 16 +-- app/javascript/mastodon/locales/tr.json | 2 +- app/javascript/mastodon/locales/uk.json | 6 +- app/javascript/mastodon/locales/vi.json | 10 +- app/javascript/mastodon/locales/zh-TW.json | 4 +- config/locales/activerecord.ca.yml | 9 ++ config/locales/activerecord.da.yml | 9 ++ config/locales/activerecord.fr.yml | 9 ++ config/locales/activerecord.hu.yml | 9 ++ config/locales/activerecord.io.yml | 9 ++ config/locales/activerecord.ku.yml | 9 ++ config/locales/activerecord.pt-PT.yml | 9 ++ config/locales/activerecord.sq.yml | 9 ++ config/locales/activerecord.uk.yml | 9 ++ config/locales/ca.yml | 75 ++++++++++ config/locales/cs.yml | 1 + config/locales/cy.yml | 1 + config/locales/da.yml | 12 ++ config/locales/devise.nl.yml | 2 +- config/locales/doorkeeper.cy.yml | 7 + config/locales/eo.yml | 37 +++-- config/locales/fr.yml | 77 ++++++++++- config/locales/gl.yml | 8 +- config/locales/hu.yml | 46 +++++++ config/locales/io.yml | 73 ++++++++++ config/locales/is.yml | 3 + config/locales/ko.yml | 3 + config/locales/ku.yml | 16 +++ config/locales/nl.yml | 63 +++++++-- config/locales/pt-PT.yml | 151 +++++++++++++++++++++ config/locales/ru.yml | 1 + config/locales/simple_form.ca.yml | 15 ++ config/locales/simple_form.cs.yml | 2 + config/locales/simple_form.cy.yml | 11 ++ config/locales/simple_form.da.yml | 15 ++ config/locales/simple_form.eo.yml | 23 ++-- config/locales/simple_form.es-AR.yml | 2 +- config/locales/simple_form.es-MX.yml | 14 ++ config/locales/simple_form.es.yml | 2 +- config/locales/simple_form.fr.yml | 15 ++ config/locales/simple_form.gl.yml | 2 +- config/locales/simple_form.hu.yml | 15 ++ config/locales/simple_form.io.yml | 20 +++ config/locales/simple_form.is.yml | 7 + config/locales/simple_form.it.yml | 2 +- config/locales/simple_form.ku.yml | 2 + config/locales/simple_form.lv.yml | 2 +- config/locales/simple_form.nl.yml | 8 ++ config/locales/simple_form.pl.yml | 2 + config/locales/simple_form.pt-PT.yml | 15 ++ config/locales/simple_form.ru.yml | 1 + config/locales/simple_form.sl.yml | 2 +- config/locales/simple_form.sq.yml | 25 ++++ config/locales/simple_form.th.yml | 6 + config/locales/simple_form.tr.yml | 1 - config/locales/simple_form.uk.yml | 15 ++ config/locales/simple_form.vi.yml | 2 +- config/locales/simple_form.zh-TW.yml | 2 +- config/locales/sl.yml | 10 ++ config/locales/sq.yml | 81 +++++++++++ config/locales/th.yml | 35 +++++ config/locales/uk.yml | 76 ++++++++++- 87 files changed, 1139 insertions(+), 158 deletions(-) diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 0c9420035..2e3520fed 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -468,7 +468,7 @@ "status.embed": "Incrusta", "status.favourite": "Favorit", "status.filtered": "Filtrat", - "status.hide": "Hide toot", + "status.hide": "Amaga publicació", "status.history.created": "{name} ha creat {date}", "status.history.edited": "{name} ha editat {date}", "status.load_more": "Carregar-ne més", @@ -492,7 +492,7 @@ "status.report": "Denuncia @{name}", "status.sensitive_warning": "Contingut sensible", "status.share": "Comparteix", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Mostra igualment", "status.show_less": "Mostrar-ne menys", "status.show_less_all": "Mostrar-ne menys per a tot", "status.show_more": "Mostrar-ne més", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 9fee3948a..e7d6eb87b 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -468,7 +468,7 @@ "status.embed": "Vložit na web", "status.favourite": "Oblíbit", "status.filtered": "Filtrováno", - "status.hide": "Hide toot", + "status.hide": "Skrýt příspěvek", "status.history.created": "Uživatel {name} vytvořil {date}", "status.history.edited": "Uživatel {name} upravil {date}", "status.load_more": "Zobrazit více", @@ -492,7 +492,7 @@ "status.report": "Nahlásit @{name}", "status.sensitive_warning": "Citlivý obsah", "status.share": "Sdílet", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Přesto zobrazit", "status.show_less": "Zobrazit méně", "status.show_less_all": "Zobrazit méně pro všechny", "status.show_more": "Zobrazit více", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 9b2886b01..3a18db095 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -92,10 +92,10 @@ "community.column_settings.local_only": "Lleol yn unig", "community.column_settings.media_only": "Cyfryngau yn unig", "community.column_settings.remote_only": "Anghysbell yn unig", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "Newid iaith", + "compose.language.search": "Chwilio ieithoedd...", "compose_form.direct_message_warning_learn_more": "Dysgu mwy", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "Dyw postiadau ar Mastodon ddim wedi'u hamgryptio o ben i ben. Peidiwch â rhannu unrhyw wybodaeth sensitif dros Mastodon.", "compose_form.hashtag_warning": "Ni fydd y post hwn wedi ei restru o dan unrhyw hashnod gan ei fod heb ei restru. Dim ond postiadau cyhoeddus gellid chwilio amdanynt drwy hashnod.", "compose_form.lock_disclaimer": "Nid yw eich cyfri wedi'i {locked}. Gall unrhyw un eich dilyn i weld eich postiadau dilynwyr-yn-unig.", "compose_form.lock_disclaimer.lock": "wedi ei gloi", @@ -106,7 +106,7 @@ "compose_form.poll.remove_option": "Tynnu'r dewisiad", "compose_form.poll.switch_to_multiple": "Newid pleidlais i adael mwy nag un dewis", "compose_form.poll.switch_to_single": "Newid pleidlais i gyfyngu i un dewis", - "compose_form.publish": "Publish", + "compose_form.publish": "Cyhoeddi", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Cadw newidiadau", "compose_form.sensitive.hide": "Marcio cyfryngau fel eu bod yn sensitif", @@ -149,7 +149,7 @@ "embed.instructions": "Gosodwch y post hwn ar eich gwefan drwy gopïo'r côd isod.", "embed.preview": "Dyma sut olwg fydd arno:", "emoji_button.activity": "Gweithgarwch", - "emoji_button.clear": "Clear", + "emoji_button.clear": "Clir", "emoji_button.custom": "Unigryw", "emoji_button.flags": "Baneri", "emoji_button.food": "Bwyd a Diod", @@ -327,7 +327,7 @@ "notification.update": "Golygodd {name} bost", "notifications.clear": "Clirio hysbysiadau", "notifications.clear_confirmation": "Ydych chi'n sicr eich bod am glirio'ch holl hysbysiadau am byth?", - "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.report": "Adroddiadau newydd:", "notifications.column_settings.admin.sign_up": "Cofrestriadau newydd:", "notifications.column_settings.alert": "Hysbysiadau bwrdd gwaith", "notifications.column_settings.favourite": "Ffefrynnau:", @@ -434,8 +434,8 @@ "report.unfollow": "Dad-ddilyn @{name}", "report.unfollow_explanation": "Rydych chi'n dilyn y cyfrif hwn. I beidio â gweld eu postiadau yn eich porthiant cartref mwyach, dad-ddilynwch nhw.", "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", - "report_notification.categories.spam": "Spam", + "report_notification.categories.other": "Arall", + "report_notification.categories.spam": "Sbam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Chwilio", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 11371dfd0..fab1f2075 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -92,8 +92,8 @@ "community.column_settings.local_only": "Kun lokalt", "community.column_settings.media_only": "Kun medier", "community.column_settings.remote_only": "Kun udefra", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "Skift sprog", + "compose.language.search": "Søg efter sprog...", "compose_form.direct_message_warning_learn_more": "Få mere at vide", "compose_form.encryption_warning": "Indlæg på Mastodon er ikke ende-til-ende krypteret. Del derfor ikke sensitiv information via Mastodon.", "compose_form.hashtag_warning": "Da indlægget ikke er offentligt, vises det ikke under noget hashtag, idet kun offentlige indlæg kan søges via hashtags.", @@ -149,7 +149,7 @@ "embed.instructions": "Indlejr dette indlæg på dit websted ved at kopiere nedenstående kode.", "embed.preview": "Sådan kommer det til at se ud:", "emoji_button.activity": "Aktivitet", - "emoji_button.clear": "Clear", + "emoji_button.clear": "Ryd", "emoji_button.custom": "Tilpasset", "emoji_button.flags": "Flag", "emoji_button.food": "Mad og drikke", @@ -468,7 +468,7 @@ "status.embed": "Indlejr", "status.favourite": "Favorit", "status.filtered": "Filtreret", - "status.hide": "Hide toot", + "status.hide": "Skjul indlæg", "status.history.created": "{name} oprettet {date}", "status.history.edited": "{name} redigeret {date}", "status.load_more": "Indlæs mere", @@ -492,7 +492,7 @@ "status.report": "Anmeld @{name}", "status.sensitive_warning": "Følsomt indhold", "status.share": "Del", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Vis alligevel", "status.show_less": "Vis mindre", "status.show_less_all": "Vis mindre for alle", "status.show_more": "Vis mere", diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index c8f799967..3240b682a 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -468,7 +468,7 @@ "status.embed": "Ενσωμάτωσε", "status.favourite": "Σημείωσε ως αγαπημένο", "status.filtered": "Φιλτραρισμένα", - "status.hide": "Hide toot", + "status.hide": "Απόκρυψη toot", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "Φόρτωσε περισσότερα", @@ -492,7 +492,7 @@ "status.report": "Κατάγγειλε @{name}", "status.sensitive_warning": "Ευαίσθητο περιεχόμενο", "status.share": "Μοιράσου", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Εμφάνιση παρ'όλα αυτά", "status.show_less": "Δείξε λιγότερα", "status.show_less_all": "Δείξε λιγότερα για όλα", "status.show_more": "Δείξε περισσότερα", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index d49c342f9..3e2475f20 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -6,7 +6,7 @@ "account.block": "Bloki @{name}", "account.block_domain": "Bloki la domajnon {domain}", "account.blocked": "Blokita", - "account.browse_more_on_origin_server": "Vidi pli ĉe la originala profilo", + "account.browse_more_on_origin_server": "Foliumi pli ĉe la originala profilo", "account.cancel_follow_request": "Nuligi la demandon de sekvado", "account.direct": "Rekte mesaĝi @{name}", "account.disable_notifications": "Ne plu sciigi min kiam @{name} mesaĝas", @@ -95,7 +95,7 @@ "compose.language.change": "Ŝanĝi lingvon", "compose.language.search": "Serĉi lingvojn...", "compose_form.direct_message_warning_learn_more": "Lerni pli", - "compose_form.encryption_warning": "La mesaĵoj en Mastodono ne estas ĉifrita de tutvojo. Ne kundividu sentemajn informojn ĉe Mastodono.", + "compose_form.encryption_warning": "La mesaĵoj en Mastodon ne estas tutvoje ĉifritaj. Ne kundividu tiklajn informojn ĉe Mastodon.", "compose_form.hashtag_warning": "Ĉi tiu mesaĝo ne estos listigita per ajna kradvorto. Nur publikaj mesaĝoj estas serĉeblaj per kradvortoj.", "compose_form.lock_disclaimer": "Via konto ne estas {locked}. Iu ajn povas sekvi vin por vidi viajn mesaĝojn nur al la sekvantoj.", "compose_form.lock_disclaimer.lock": "ŝlosita", @@ -109,9 +109,9 @@ "compose_form.publish": "Publikigi", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Konservi la ŝanĝojn", - "compose_form.sensitive.hide": "Marki la aŭdovidaĵojn kiel tiklaj", - "compose_form.sensitive.marked": "Aŭdovidaĵo markita tikla", - "compose_form.sensitive.unmarked": "Aŭdovidaĵo ne markita tikla", + "compose_form.sensitive.hide": "{count, plural, one {Marki la aŭdovidaĵon kiel tikla} other {Marki la aŭdovidaĵojn kiel tikla}}", + "compose_form.sensitive.marked": "{count, plural, one {La aŭdovidaĵo estas markita kiel tikla} other {La aŭdovidaĵoj estas markitaj kiel tikla}}", + "compose_form.sensitive.unmarked": "{count, plural, one {La aŭdovidaĵo ne estas markita kiel tikla} other {La aŭdovidaĵoj ne estas markitaj kiel tikla}}", "compose_form.spoiler.marked": "Forigi la averton de enhavo", "compose_form.spoiler.unmarked": "Aldoni averton de enhavo", "compose_form.spoiler_placeholder": "Skribu vian averton ĉi tie", @@ -124,7 +124,7 @@ "confirmations.delete_list.confirm": "Forigi", "confirmations.delete_list.message": "Ĉu vi certas, ke vi volas porĉiame forigi ĉi tiun liston?", "confirmations.discard_edit_media.confirm": "Forlasi", - "confirmations.discard_edit_media.message": "Vi havas nekonservitan ŝanĝon de la priskribo aŭ de la antaŭvido de la aŭdovidaĵo, ĉu vi forigu ĝin?", + "confirmations.discard_edit_media.message": "Vi havas nekonservitajn ŝanĝojn de la priskribo aŭ de la antaŭmontro de la aŭdovidaĵo, ĉu vi forlasu ilin ĉiuokaze?", "confirmations.domain_block.confirm": "Bloki la tutan domajnon", "confirmations.domain_block.message": "Ĉu vi vere, vere certas, ke vi volas tute bloki {domain}? Plej ofte, trafa blokado kaj silentigado sufiĉas kaj preferindas. Vi ne vidos enhavon de tiu domajno en publika templinio aŭ en viaj sciigoj. Viaj sekvantoj de tiu domajno estos forigitaj.", "confirmations.logout.confirm": "Adiaŭi", @@ -133,7 +133,7 @@ "confirmations.mute.explanation": "Ĉi-tio kaŝos mesaĝojn el ili kaj mesaĝojn kiuj mencias ilin, sed ili ankoraŭ rajtos vidi viajn mesaĝojn kaj sekvi vin.", "confirmations.mute.message": "Ĉu vi certas, ke vi volas silentigi {name}?", "confirmations.redraft.confirm": "Forigi kaj reskribi", - "confirmations.redraft.message": "Ĉu vi certas, ke vi volas forigi kaj reskribi la mesaĝon? Plusendaĵoj kaj preferaĵoj de ĝi estos perditaj, kaj la respondoj al la originala mesaĝo estos orfaj.", + "confirmations.redraft.message": "Ĉu vi certas ke vi volas forigi tiun mesaĝon kaj reskribi ĝin? Ĉiuj diskonigoj kaj stelumoj estos perditaj, kaj respondoj al la originala mesaĝo estos senparentaj.", "confirmations.reply.confirm": "Respondi", "confirmations.reply.message": "Respondi nun anstataŭigos la mesaĝon, kiun vi nun skribas. Ĉu vi certas, ke vi volas daŭrigi?", "confirmations.unfollow.confirm": "Ne plu sekvi", @@ -172,8 +172,8 @@ "empty_column.direct": "Vi ankoraŭ ne havas rektan mesaĝon. Kiam vi sendos aŭ ricevos iun, ĝi aperos ĉi tie.", "empty_column.domain_blocks": "Ankoraŭ neniu domajno estas blokita.", "empty_column.explore_statuses": "Nenio tendencas nun. Rekontrolu poste!", - "empty_column.favourited_statuses": "Vi ankoraŭ ne havas mesaĝon en la preferaĵoj. Kiam vi aldonas ion, ĝi aperos ĉi tie.", - "empty_column.favourites": "Ankoraŭ neniu aldonis tiun mesaĝon al siaj preferaĵoj. Kiam iu faros ĉi tion, ili aperos ĉi tie.", + "empty_column.favourited_statuses": "Vi ankoraŭ ne havas mesaĝon en la preferaĵoj. Kiam vi aldonas iun, tiu aperos ĉi tie.", + "empty_column.favourites": "Ankoraŭ neniu aldonis tiun mesaĝon al siaj preferaĵoj. Kiam iu faros ĉi tion, tiu aperos ĉi tie.", "empty_column.follow_recommendations": "Ŝajnas, ke neniuj sugestoj povis esti generitaj por vi. Vi povas provi uzi serĉon por serĉi homojn, kiujn vi eble konas, aŭ esplori tendencajn kradvortojn.", "empty_column.follow_requests": "Vi ankoraŭ ne havas demandon de sekvado. Kiam vi ricevas unu, ĝi aperas tie ĉi.", "empty_column.hashtag": "Ankoraŭ estas nenio per ĉi tiu kradvorto.", @@ -249,7 +249,7 @@ "keyboard_shortcuts.muted": "malfermi la liston de silentigitaj uzantoj", "keyboard_shortcuts.my_profile": "malfermi vian profilon", "keyboard_shortcuts.notifications": "malfermi la kolumnon de sciigoj", - "keyboard_shortcuts.open_media": "malfermi aŭdovidaĵon", + "keyboard_shortcuts.open_media": "Malfermi la aŭdovidaĵon", "keyboard_shortcuts.pinned": "malfermi la liston de alpinglitaj mesaĝoj", "keyboard_shortcuts.profile": "malfermi la profilon de la aŭtoro", "keyboard_shortcuts.reply": "respondi", @@ -284,7 +284,7 @@ "lists.subheading": "Viaj listoj", "load_pending": "{count,plural, one {# nova elemento} other {# novaj elementoj}}", "loading_indicator.label": "Ŝargado…", - "media_gallery.toggle_visible": "Baskuligi videblecon", + "media_gallery.toggle_visible": "{number, plural, one {Kaŝi la bildon} other {Kaŝi la bildojn}}", "missing_indicator.label": "Ne trovita", "missing_indicator.sublabel": "Ĉi tiu elemento ne estis trovita", "mute_modal.duration": "Daŭro", @@ -374,19 +374,19 @@ "poll_button.remove_poll": "Forigi balotenketon", "privacy.change": "Agordi mesaĝan privatecon", "privacy.direct.long": "Videbla nur al menciitaj uzantoj", - "privacy.direct.short": "Direct", + "privacy.direct.short": "Nur menciitaj personoj", "privacy.private.long": "Videbla nur al viaj sekvantoj", "privacy.private.short": "Nur abonantoj", "privacy.public.long": "Videbla por ĉiuj", "privacy.public.short": "Publika", - "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", + "privacy.unlisted.long": "Videbla por ĉiuj, sed ekskluzive de la funkcio de esploro", "privacy.unlisted.short": "Nelistigita", "refresh": "Refreŝigu", "regeneration_indicator.label": "Ŝargado…", "regeneration_indicator.sublabel": "Via abonfluo estas preparata!", "relative_time.days": "{number}t", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.days": "antaŭ {number, plural, one {# tago} other {# tagoj}}", + "relative_time.full.hours": "antaŭ {number, plural, one {# horo} other {# horoj}}", "relative_time.full.just_now": "ĵus nun", "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", @@ -434,8 +434,8 @@ "report.unfollow": "Malsekvi @{name}", "report.unfollow_explanation": "Vi sekvas ĉi tiun konton. Por ne plu vidi ĝiajn abonfluojn en via hejma templinio, ĉesu sekvi ĝin.", "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", - "report_notification.categories.spam": "Spam", + "report_notification.categories.other": "Alia", + "report_notification.categories.spam": "Trudmesaĝo", "report_notification.categories.violation": "Malobservo de la regulo", "report_notification.open": "Malfermi la raporton", "search.placeholder": "Serĉi", @@ -468,7 +468,7 @@ "status.embed": "Enkorpigi", "status.favourite": "Aldoni al viaj preferaĵoj", "status.filtered": "Filtrita", - "status.hide": "Hide toot", + "status.hide": "Kaŝi la mesaĝon", "status.history.created": "{name} kreis {date}", "status.history.edited": "{name} redaktis {date}", "status.load_more": "Ŝargi pli", @@ -492,7 +492,7 @@ "status.report": "Raporti @{name}", "status.sensitive_warning": "Tikla enhavo", "status.share": "Kundividi", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Ĉial montri", "status.show_less": "Montri malpli", "status.show_less_all": "Montri malpli ĉiun", "status.show_more": "Montri pli", @@ -540,7 +540,7 @@ "upload_modal.choose_image": "Elekti bildon", "upload_modal.description_placeholder": "Laŭ Ludoviko Zamenhof bongustas freŝa ĉeĥa manĝaĵo kun spicoj", "upload_modal.detect_text": "Detekti tekston de la bildo", - "upload_modal.edit_media": "Redakti aŭdovidaĵon", + "upload_modal.edit_media": "Redakti la aŭdovidaĵon", "upload_modal.hint": "Klaku aŭ trenu la cirklon en la antaŭvidilo por elekti la fokuspunkton kiu ĉiam videblos en ĉiuj etigitaj bildoj.", "upload_modal.preparing_ocr": "Preparante OSR…", "upload_modal.preview_label": "Antaŭvido ({ratio})", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 3a572524d..2c967ccdf 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -468,7 +468,7 @@ "status.embed": "Insertar", "status.favourite": "Marcar como favorito", "status.filtered": "Filtrado", - "status.hide": "Hide toot", + "status.hide": "Ocultar mensaje", "status.history.created": "Creado por {name} el {date}", "status.history.edited": "Editado por {name} el {date}", "status.load_more": "Cargar más", @@ -492,7 +492,7 @@ "status.report": "Denunciar a @{name}", "status.sensitive_warning": "Contenido sensible", "status.share": "Compartir", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Mostrar de todos modos", "status.show_less": "Mostrar menos", "status.show_less_all": "Mostrar menos para todo", "status.show_more": "Mostrar más", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 652185a7b..4e30f7b71 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -468,7 +468,7 @@ "status.embed": "Incrustado", "status.favourite": "Favorito", "status.filtered": "Filtrado", - "status.hide": "Hide toot", + "status.hide": "Ocultar publicación", "status.history.created": "{name} creó {date}", "status.history.edited": "{name} editó {date}", "status.load_more": "Cargar más", @@ -492,7 +492,7 @@ "status.report": "Reportar", "status.sensitive_warning": "Contenido sensible", "status.share": "Compartir", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Mostrar de todos modos", "status.show_less": "Mostrar menos", "status.show_less_all": "Mostrar menos para todo", "status.show_more": "Mostrar más", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index d1cebafd2..e0a9cb42d 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -468,7 +468,7 @@ "status.embed": "Intégrer", "status.favourite": "Ajouter aux favoris", "status.filtered": "Filtré", - "status.hide": "Hide toot", + "status.hide": "Cacher le pouet", "status.history.created": "créé par {name} {date}", "status.history.edited": "édité par {name} {date}", "status.load_more": "Charger plus", @@ -492,7 +492,7 @@ "status.report": "Signaler @{name}", "status.sensitive_warning": "Contenu sensible", "status.share": "Partager", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Afficher quand même", "status.show_less": "Replier", "status.show_less_all": "Tout replier", "status.show_more": "Déplier", @@ -533,7 +533,7 @@ "upload_form.edit": "Modifier", "upload_form.thumbnail": "Changer la vignette", "upload_form.undo": "Supprimer", - "upload_form.video_description": "Décrire pour les personnes ayant des problèmes d’audition ou de vision", + "upload_form.video_description": "Décrire pour les personnes ayant des problèmes de vue ou d'audition", "upload_modal.analyzing_picture": "Analyse de l’image en cours…", "upload_modal.apply": "Appliquer", "upload_modal.applying": "Application en cours…", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 2dc7070d2..c11db8a65 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -468,7 +468,7 @@ "status.embed": "Incrustar", "status.favourite": "Favorito", "status.filtered": "Filtrado", - "status.hide": "Hide toot", + "status.hide": "Agochar publicación", "status.history.created": "{name} creouno o {date}", "status.history.edited": "{name} editouno o {date}", "status.load_more": "Cargar máis", @@ -492,7 +492,7 @@ "status.report": "Denunciar @{name}", "status.sensitive_warning": "Contido sensíbel", "status.share": "Compartir", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Mostrar igualmente", "status.show_less": "Amosar menos", "status.show_less_all": "Amosar menos para todos", "status.show_more": "Amosar máis", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 530feba2c..4b768de8f 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -468,7 +468,7 @@ "status.embed": "Beágyazás", "status.favourite": "Kedvenc", "status.filtered": "Megszűrt", - "status.hide": "Hide toot", + "status.hide": "Bejegyzés elrejtése", "status.history.created": "{name} létrehozta: {date}", "status.history.edited": "{name} szerkesztette: {date}", "status.load_more": "Többet", @@ -492,7 +492,7 @@ "status.report": "@{name} bejelentése", "status.sensitive_warning": "Kényes tartalom", "status.share": "Megosztás", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Megjelenítés mindenképp", "status.show_less": "Kevesebb megjelenítése", "status.show_less_all": "Kevesebbet mindenhol", "status.show_more": "Többet", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index bc596e7fd..d06045cf8 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -468,7 +468,7 @@ "status.embed": "Eninsertez", "status.favourite": "Favorizar", "status.filtered": "Filtrita", - "status.hide": "Hide toot", + "status.hide": "Celez posto", "status.history.created": "{name} kreis ye {date}", "status.history.edited": "{name} modifikis ye {date}", "status.load_more": "Kargar pluse", @@ -492,7 +492,7 @@ "status.report": "Denuncar @{name}", "status.sensitive_warning": "Trubliva kontenajo", "status.share": "Partigez", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Jus montrez", "status.show_less": "Montrar mine", "status.show_less_all": "Montrez min por omno", "status.show_more": "Montrar plue", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index a03fa35ae..a2714aa4f 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -468,7 +468,7 @@ "status.embed": "Ívefja", "status.favourite": "Eftirlæti", "status.filtered": "Síað", - "status.hide": "Hide toot", + "status.hide": "Fela færslu", "status.history.created": "{name} útbjó {date}", "status.history.edited": "{name} breytti {date}", "status.load_more": "Hlaða inn meiru", @@ -492,7 +492,7 @@ "status.report": "Kæra @{name}", "status.sensitive_warning": "Viðkvæmt efni", "status.share": "Deila", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Birta samt", "status.show_less": "Sýna minna", "status.show_less_all": "Sýna minna fyrir allt", "status.show_more": "Sýna meira", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 85d71608d..ab8b10e8d 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -468,7 +468,7 @@ "status.embed": "Incorpora", "status.favourite": "Apprezzato", "status.filtered": "Filtrato", - "status.hide": "Hide toot", + "status.hide": "Nascondi toot", "status.history.created": "{name} ha creato {date}", "status.history.edited": "{name} ha modificato {date}", "status.load_more": "Mostra di più", @@ -492,7 +492,7 @@ "status.report": "Segnala @{name}", "status.sensitive_warning": "Materiale sensibile", "status.share": "Condividi", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Mostra comunque", "status.show_less": "Mostra meno", "status.show_less_all": "Mostra meno per tutti", "status.show_more": "Mostra di più", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index a9e0d722a..430d81c12 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -433,7 +433,7 @@ "report.thanks.title_actionable": "ご報告ありがとうございます、追って確認します。", "report.unfollow": "@{name}さんのフォローを解除", "report.unfollow_explanation": "このアカウントをフォローしています。ホームフィードに彼らの投稿を表示しないようにするには、彼らのフォローを外してください。", - "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.attached_statuses": "{count, plural, one {{count} 件の投稿} other {{count} 件の投稿}}が添付されました。", "report_notification.categories.other": "その他", "report_notification.categories.spam": "スパム", "report_notification.categories.violation": "ルール違反", @@ -468,7 +468,7 @@ "status.embed": "埋め込み", "status.favourite": "お気に入り", "status.filtered": "フィルターされました", - "status.hide": "Hide toot", + "status.hide": "トゥートを非表示", "status.history.created": "{name}さんが{date}に作成", "status.history.edited": "{name}さんが{date}に編集", "status.load_more": "もっと見る", @@ -492,7 +492,7 @@ "status.report": "@{name}さんを通報", "status.sensitive_warning": "閲覧注意", "status.share": "共有", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "表示する", "status.show_less": "隠す", "status.show_less_all": "全て隠す", "status.show_more": "もっと見る", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 6f709752a..c07948a73 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -468,7 +468,7 @@ "status.embed": "공유하기", "status.favourite": "좋아요", "status.filtered": "필터로 걸러짐", - "status.hide": "Hide toot", + "status.hide": "툿 숨기기", "status.history.created": "{name} 님이 {date}에 생성함", "status.history.edited": "{name} 님이 {date}에 수정함", "status.load_more": "더 보기", @@ -492,7 +492,7 @@ "status.report": "신고", "status.sensitive_warning": "민감한 미디어", "status.share": "공유", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "그냥 표시하기", "status.show_less": "숨기기", "status.show_less_all": "모두 접기", "status.show_more": "더 보기", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 80a9fcf0a..2bc1e9bea 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -468,7 +468,7 @@ "status.embed": "Hedimandî", "status.favourite": "Bijarte", "status.filtered": "Parzûnkirî", - "status.hide": "Hide toot", + "status.hide": "Şandiyê veşêre", "status.history.created": "{name} {date} afirand", "status.history.edited": "{name} {date} serrast kir", "status.load_more": "Bêtir bar bike", @@ -492,7 +492,7 @@ "status.report": "{name} gilî bike", "status.sensitive_warning": "Naveroka hestiyarî", "status.share": "Parve bike", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Bi her awayî nîşan bide", "status.show_less": "Kêmtir nîşan bide", "status.show_less_all": "Ji bo hemîyan kêmtir nîşan bide", "status.show_more": "Hêj zehftir nîşan bide", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 6c848de79..a91fa9aea 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -468,7 +468,7 @@ "status.embed": "Iestrādāt", "status.favourite": "Iecienītā", "status.filtered": "Filtrēts", - "status.hide": "Hide toot", + "status.hide": "Slēpt", "status.history.created": "{name} izveidots {date}", "status.history.edited": "{name} rediģēts {date}", "status.load_more": "Ielādēt vairāk", @@ -492,7 +492,7 @@ "status.report": "Ziņot par @{name}", "status.sensitive_warning": "Sensitīvs saturs", "status.share": "Kopīgot", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Tomēr rādīt", "status.show_less": "Rādīt mazāk", "status.show_less_all": "Rādīt mazāk visiem", "status.show_more": "Rādīt vairāk", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 40053f4cd..db67d2bcd 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -200,7 +200,7 @@ "follow_recommendations.heading": "Volg mensen waarvan je graag berichten wil zien! Hier zijn enkele aanbevelingen.", "follow_recommendations.lead": "Berichten van mensen die je volgt zullen in chronologische volgorde onder start verschijnen. Wees niet bang om hierin fouten te maken, want je kunt mensen op elk moment net zo eenvoudig ontvolgen!", "follow_request.authorize": "Goedkeuren", - "follow_request.reject": "Afkeuren", + "follow_request.reject": "Afwijzen", "follow_requests.unlocked_explanation": "Ook al is jouw account niet besloten, de medewerkers van {domain} denken dat jij misschien de volgende volgverzoeken handmatig wil controleren.", "generic.saved": "Opgeslagen", "getting_started.developers": "Ontwikkelaars", @@ -468,7 +468,7 @@ "status.embed": "Insluiten", "status.favourite": "Favoriet", "status.filtered": "Gefilterd", - "status.hide": "Hide toot", + "status.hide": "Bericht verbergen", "status.history.created": "{name} plaatste dit {date}", "status.history.edited": "{name} bewerkte dit {date}", "status.load_more": "Meer laden", @@ -492,7 +492,7 @@ "status.report": "@{name} rapporteren", "status.sensitive_warning": "Gevoelige inhoud", "status.share": "Delen", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Alsnog tonen", "status.show_less": "Minder tonen", "status.show_less_all": "Alles minder tonen", "status.show_more": "Meer tonen", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 9a72dba8f..3093ce15e 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -468,7 +468,7 @@ "status.embed": "Osadź", "status.favourite": "Dodaj do ulubionych", "status.filtered": "Filtrowany(-a)", - "status.hide": "Hide toot", + "status.hide": "Schowaj toota", "status.history.created": "{name} utworzył(a) {date}", "status.history.edited": "{name} edytował(a) {date}", "status.load_more": "Załaduj więcej", @@ -492,7 +492,7 @@ "status.report": "Zgłoś @{name}", "status.sensitive_warning": "Wrażliwa zawartość", "status.share": "Udostępnij", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Pokaż mimo wszystko", "status.show_less": "Zwiń", "status.show_less_all": "Zwiń wszystkie", "status.show_more": "Rozwiń", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 3d48e84ad..c8810703e 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -468,7 +468,7 @@ "status.embed": "Incorporar", "status.favourite": "Adicionar aos favoritos", "status.filtered": "Filtrada", - "status.hide": "Hide toot", + "status.hide": "Esconder publicação", "status.history.created": "{name} criado em {date}", "status.history.edited": "{name} editado em {date}", "status.load_more": "Carregar mais", @@ -492,7 +492,7 @@ "status.report": "Denunciar @{name}", "status.sensitive_warning": "Conteúdo sensível", "status.share": "Partilhar", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Mostrar mesmo assim", "status.show_less": "Mostrar menos", "status.show_less_all": "Mostrar menos para todas", "status.show_more": "Mostrar mais", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 62b68e5bf..015fb0feb 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -468,7 +468,7 @@ "status.embed": "Встроить на свой сайт", "status.favourite": "В избранное", "status.filtered": "Отфильтровано", - "status.hide": "Hide toot", + "status.hide": "Скрыть пост", "status.history.created": "{name} создал {date}", "status.history.edited": "{name} отредактировал {date}", "status.load_more": "Загрузить остальное", @@ -492,7 +492,7 @@ "status.report": "Пожаловаться", "status.sensitive_warning": "Содержимое «деликатного характера»", "status.share": "Поделиться", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Все равно показать", "status.show_less": "Свернуть", "status.show_less_all": "Свернуть все спойлеры в ветке", "status.show_more": "Развернуть", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 8c7d47d53..7ef228273 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -14,7 +14,7 @@ "account.edit_profile": "පැතිකඩ සංස්කරණය", "account.enable_notifications": "@{name} පළ කරන විට මට දැනුම් දෙන්න", "account.endorse": "පැතිකඩෙහි විශේෂාංගය", - "account.follow": "අනුගමනය කරන්න", + "account.follow": "අනුගමනය", "account.followers": "අනුගාමිකයින්", "account.followers.empty": "කිසිවෙකු තවමත් මෙම පරිශීලකයා අනුගමනය නොකරයි.", "account.followers_counter": "{count, plural, one {{counter} අනුගාමිකයෙක්} other {{counter} අනුගාමිකයින්}}", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 894824413..6e7368592 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -468,7 +468,7 @@ "status.embed": "Vgradi", "status.favourite": "Priljubljen", "status.filtered": "Filtrirano", - "status.hide": "Hide toot", + "status.hide": "Skrij tut", "status.history.created": "{name}: ustvarjeno {date}", "status.history.edited": "{name}: urejeno {date}", "status.load_more": "Naloži več", @@ -492,7 +492,7 @@ "status.report": "Prijavi @{name}", "status.sensitive_warning": "Občutljiva vsebina", "status.share": "Deli", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Vseeno pokaži", "status.show_less": "Prikaži manj", "status.show_less_all": "Prikaži manj za vse", "status.show_more": "Prikaži več", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 6bc84ae0c..4aa70477d 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -314,7 +314,7 @@ "navigation_bar.preferences": "Parapëlqime", "navigation_bar.public_timeline": "Rrjedhë kohore të federuarish", "navigation_bar.security": "Siguri", - "notification.admin.report": "{name} reported {target}", + "notification.admin.report": "{name} raportoi {target}", "notification.admin.sign_up": "{name} u regjistrua", "notification.favourite": "{name} pëlqeu mesazhin tuaj", "notification.follow": "{name} zuri t’ju ndjekë", @@ -327,7 +327,7 @@ "notification.update": "{name} përpunoi një postim", "notifications.clear": "Spastroji njoftimet", "notifications.clear_confirmation": "Jeni i sigurt se doni të spastrohen përgjithmonë krejt njoftimet tuaja?", - "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.report": "Raportime të reja:", "notifications.column_settings.admin.sign_up": "Regjistrime të reja:", "notifications.column_settings.alert": "Njoftime desktopi", "notifications.column_settings.favourite": "Të parapëlqyer:", @@ -433,11 +433,11 @@ "report.thanks.title_actionable": "Faleminderit për raportimin, do ta shohim.", "report.unfollow": "Mos e ndiq më @{name}", "report.unfollow_explanation": "Po e ndiqni këtë llogari. Për të mos parë më postimet e tyre te prurja juaj e kreut, ndalni ndjekjen e tyre.", - "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", - "report_notification.categories.spam": "Spam", - "report_notification.categories.violation": "Rule violation", - "report_notification.open": "Open report", + "report_notification.attached_statuses": "{count, plural, one {{count} postim} other {{count} postime}} bashkëngjitur", + "report_notification.categories.other": "Tjetër", + "report_notification.categories.spam": "I padëshiruar", + "report_notification.categories.violation": "Cenim rregullash", + "report_notification.open": "Hape raportimin", "search.placeholder": "Kërkoni", "search_popout.search_format": "Format kërkimi të mëtejshëm", "search_popout.tips.full_text": "Kërkimi për tekst të thjeshtë përgjigjet me mesazhe që keni shkruar, parapëlqyer, përforcuar, ose ku jeni përmendur, si dhe emra përdoruesish, emra ekrani dhe hashtag-ë që kanë përputhje me termin e kërkimit.", @@ -468,7 +468,7 @@ "status.embed": "Trupëzim", "status.favourite": "I parapëlqyer", "status.filtered": "I filtruar", - "status.hide": "Hide toot", + "status.hide": "Fshihe mesazhin", "status.history.created": "{name} u krijua më {date}", "status.history.edited": "{name} u përpunua më {date}", "status.load_more": "Ngarko më tepër", @@ -492,7 +492,7 @@ "status.report": "Raportojeni @{name}", "status.sensitive_warning": "Lëndë rezervat", "status.share": "Ndajeni me të tjerë", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Shfaqe, sido qoftë", "status.show_less": "Shfaq më pak", "status.show_less_all": "Shfaq më pak për të tërë", "status.show_more": "Shfaq më tepër", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 85444d9d8..74bbf0446 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -314,7 +314,7 @@ "navigation_bar.preferences": "การกำหนดลักษณะ", "navigation_bar.public_timeline": "เส้นเวลาที่ติดต่อกับภายนอก", "navigation_bar.security": "ความปลอดภัย", - "notification.admin.report": "{name} reported {target}", + "notification.admin.report": "{name} ได้รายงาน {target}", "notification.admin.sign_up": "{name} ได้ลงทะเบียน", "notification.favourite": "{name} ได้ชื่นชอบโพสต์ของคุณ", "notification.follow": "{name} ได้ติดตามคุณ", @@ -327,7 +327,7 @@ "notification.update": "{name} ได้แก้ไขโพสต์", "notifications.clear": "ล้างการแจ้งเตือน", "notifications.clear_confirmation": "คุณแน่ใจหรือไม่ว่าต้องการล้างการแจ้งเตือนทั้งหมดของคุณอย่างถาวร?", - "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.report": "รายงานใหม่:", "notifications.column_settings.admin.sign_up": "การลงทะเบียนใหม่:", "notifications.column_settings.alert": "การแจ้งเตือนบนเดสก์ท็อป", "notifications.column_settings.favourite": "รายการโปรด:", @@ -433,10 +433,10 @@ "report.thanks.title_actionable": "ขอบคุณสำหรับการรายงาน เราจะตรวจสอบสิ่งนี้", "report.unfollow": "เลิกติดตาม @{name}", "report.unfollow_explanation": "คุณกำลังติดตามบัญชีนี้ เพื่อไม่ให้เห็นโพสต์ของเขาในฟีดหน้าแรกของคุณอีกต่อไป เลิกติดตามเขา", - "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", - "report_notification.categories.spam": "Spam", - "report_notification.categories.violation": "Rule violation", + "report_notification.attached_statuses": "{count, plural, other {{count} โพสต์}}ที่แนบมา", + "report_notification.categories.other": "อื่น ๆ", + "report_notification.categories.spam": "สแปม", + "report_notification.categories.violation": "การละเมิดกฎ", "report_notification.open": "รายงานที่เปิด", "search.placeholder": "ค้นหา", "search_popout.search_format": "รูปแบบการค้นหาขั้นสูง", @@ -468,7 +468,7 @@ "status.embed": "ฝัง", "status.favourite": "ชื่นชอบ", "status.filtered": "กรองอยู่", - "status.hide": "Hide toot", + "status.hide": "ซ่อนโพสต์", "status.history.created": "{name} ได้สร้างเมื่อ {date}", "status.history.edited": "{name} ได้แก้ไขเมื่อ {date}", "status.load_more": "โหลดเพิ่มเติม", @@ -492,7 +492,7 @@ "status.report": "รายงาน @{name}", "status.sensitive_warning": "เนื้อหาที่ละเอียดอ่อน", "status.share": "แบ่งปัน", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "แสดงต่อไป", "status.show_less": "แสดงน้อยลง", "status.show_less_all": "แสดงน้อยลงทั้งหมด", "status.show_more": "แสดงเพิ่มเติม", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index f062d81ce..070bdb95b 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -492,7 +492,7 @@ "status.report": "@{name} adlı kişiyi bildir", "status.sensitive_warning": "Hassas içerik", "status.share": "Paylaş", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Yine de göster", "status.show_less": "Daha az göster", "status.show_less_all": "Hepsi için daha az göster", "status.show_more": "Daha fazlasını göster", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 3eeda561f..4b0bc5e70 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -427,7 +427,7 @@ "report.statuses.title": "Чи є дописи, які належать до цієї скарги?", "report.submit": "Відправити", "report.target": "Скаржимося на {target}", - "report.thanks.take_action": "Ось ваші варіанти управління тим, що ви бачите в Mastodon:", + "report.thanks.take_action": "Ось ваші варіанти керування тим, що ви бачите в Mastodon:", "report.thanks.take_action_actionable": "Поки ми переглядаємо це, ви можете вжити власних заходів проти @{name}:", "report.thanks.title": "Не хочете це бачити?", "report.thanks.title_actionable": "Дякуємо за скаргу, ми розглянемо її.", @@ -468,7 +468,7 @@ "status.embed": "Вбудувати", "status.favourite": "Подобається", "status.filtered": "Відфільтровано", - "status.hide": "Hide toot", + "status.hide": "Сховати дмух", "status.history.created": "{name} створює {date}", "status.history.edited": "{name} змінює {date}", "status.load_more": "Завантажити більше", @@ -492,7 +492,7 @@ "status.report": "Поскаржитися на @{name}", "status.sensitive_warning": "Делікатний зміст", "status.share": "Поділитися", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Усе одно показати", "status.show_less": "Згорнути", "status.show_less_all": "Показувати менше для всіх", "status.show_more": "Розгорнути", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 553a41f2c..1019c342a 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -92,7 +92,7 @@ "community.column_settings.local_only": "Chỉ máy chủ của bạn", "community.column_settings.media_only": "Chỉ xem media", "community.column_settings.remote_only": "Chỉ người dùng ở máy chủ khác", - "compose.language.change": "Đổi ngôn ngữ", + "compose.language.change": "Chọn ngôn ngữ tút", "compose.language.search": "Tìm ngôn ngữ...", "compose_form.direct_message_warning_learn_more": "Tìm hiểu thêm", "compose_form.encryption_warning": "Các tút trên Mastodon không được mã hóa đầu cuối. Không chia sẻ bất kỳ thông tin nhạy cảm nào qua Mastodon.", @@ -374,12 +374,12 @@ "poll_button.remove_poll": "Hủy cuộc bình chọn", "privacy.change": "Thay đổi quyền riêng tư", "privacy.direct.long": "Chỉ người được nhắc đến mới thấy", - "privacy.direct.short": "Chỉ người được nhắc", + "privacy.direct.short": "Nhắn riêng", "privacy.private.long": "Dành riêng cho người theo dõi", "privacy.private.short": "Chỉ người theo dõi", "privacy.public.long": "Hiển thị với mọi người", "privacy.public.short": "Công khai", - "privacy.unlisted.long": "Hiển thị với mọi người, nhưng không hiện trong tính năng khám phá", + "privacy.unlisted.long": "Công khai nhưng không hiện trên bảng tin", "privacy.unlisted.short": "Hạn chế", "refresh": "Làm mới", "regeneration_indicator.label": "Đang tải…", @@ -468,7 +468,7 @@ "status.embed": "Nhúng", "status.favourite": "Thích", "status.filtered": "Bộ lọc", - "status.hide": "Hide toot", + "status.hide": "Ẩn tút", "status.history.created": "{name} tạo lúc {date}", "status.history.edited": "{name} sửa lúc {date}", "status.load_more": "Tải thêm", @@ -492,7 +492,7 @@ "status.report": "Báo cáo @{name}", "status.sensitive_warning": "Nhạy cảm", "status.share": "Chia sẻ", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Vẫn cứ xem", "status.show_less": "Thu gọn", "status.show_less_all": "Thu gọn toàn bộ", "status.show_more": "Xem thêm", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index b666ed02c..1589ff09a 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -468,7 +468,7 @@ "status.embed": "內嵌", "status.favourite": "最愛", "status.filtered": "已過濾", - "status.hide": "Hide toot", + "status.hide": "隱藏嘟文", "status.history.created": "{name} 於 {date} 建立", "status.history.edited": "{name} 於 {date} 修改", "status.load_more": "載入更多", @@ -492,7 +492,7 @@ "status.report": "檢舉 @{name}", "status.sensitive_warning": "敏感內容", "status.share": "分享", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "仍要顯示", "status.show_less": "減少顯示", "status.show_less_all": "減少顯示這類嘟文", "status.show_more": "顯示更多", diff --git a/config/locales/activerecord.ca.yml b/config/locales/activerecord.ca.yml index 056137276..08fa1cb5a 100644 --- a/config/locales/activerecord.ca.yml +++ b/config/locales/activerecord.ca.yml @@ -38,3 +38,12 @@ ca: email: blocked: utilitza un proveïdor de correu electrònic no autoritzat unreachable: sembla que no existeix + role_id: + elevated: no pot ser superior que el teu rol actual + user_role: + attributes: + permissions_as_keys: + dangerous: inclou permisos que no són segurs per al rol base + elevated: no pot incloure permisos que el teu rol actual no té + position: + elevated: no pot ser superior al teu rol actual diff --git a/config/locales/activerecord.da.yml b/config/locales/activerecord.da.yml index 3566abf43..a8fe65498 100644 --- a/config/locales/activerecord.da.yml +++ b/config/locales/activerecord.da.yml @@ -38,3 +38,12 @@ da: email: blocked: bruger en ikke-tilladt e-mailudbyder unreachable: ser ikke ud til at eksistere + role_id: + elevated: kan ikke være højere end din aktuelle rolle + user_role: + attributes: + permissions_as_keys: + dangerous: omfat tilladelser, som ikke er sikre for basisrollen + elevated: kan ikke omfatte tilladelser, din aktuelle rolle ikke besidder + position: + elevated: kan ikke være højere end din aktuelle rolle diff --git a/config/locales/activerecord.fr.yml b/config/locales/activerecord.fr.yml index 4ab8f6a91..bc063864a 100644 --- a/config/locales/activerecord.fr.yml +++ b/config/locales/activerecord.fr.yml @@ -38,3 +38,12 @@ fr: email: blocked: utilise un fournisseur de courriel interdit unreachable: ne semble pas exister + role_id: + elevated: ne peut pas être supérieur à votre rôle actuel + user_role: + attributes: + permissions_as_keys: + dangerous: inclure des autorisations non sécurisées pour le rôle de base + elevated: ne peut pas inclure des autorisations que votre rôle actuel ne possède pas + position: + elevated: ne peut pas être supérieur à votre rôle actuel diff --git a/config/locales/activerecord.hu.yml b/config/locales/activerecord.hu.yml index 442bf3858..5b055bfa2 100644 --- a/config/locales/activerecord.hu.yml +++ b/config/locales/activerecord.hu.yml @@ -38,3 +38,12 @@ hu: email: blocked: egy letiltott e-mail szolgáltatót használ unreachable: úgy tűnik, hogy nem létezik + role_id: + elevated: nem lehet magasabb, mint a jelenlegi szereped + user_role: + attributes: + permissions_as_keys: + dangerous: tartalmaz olyan engedélyeket is, melyek az alap szerephez nem biztonságosak + elevated: nem tartalmazhat olyan engedélyeket, melyek nincsenek benne a jelenlegi szerepedben + position: + elevated: nem lehet magasabb, mint a jelenlegi szereped diff --git a/config/locales/activerecord.io.yml b/config/locales/activerecord.io.yml index 9779cbdd1..545c32d5f 100644 --- a/config/locales/activerecord.io.yml +++ b/config/locales/activerecord.io.yml @@ -38,3 +38,12 @@ io: email: blocked: uzas nepermisata retpostodomeno unreachable: semblas ne existar + role_id: + elevated: ne povas divenar plu alta kam vua nuna rolo + user_role: + attributes: + permissions_as_keys: + dangerous: inkluzas permisi quo ne esas segura por bazrolo + elevated: ne povas inkluzar permisi quon vua nuna rolo ne havas + position: + elevated: ne povas divenar plu alta kam vua nuna rolo diff --git a/config/locales/activerecord.ku.yml b/config/locales/activerecord.ku.yml index b440181d8..ee8d9a8d8 100644 --- a/config/locales/activerecord.ku.yml +++ b/config/locales/activerecord.ku.yml @@ -38,3 +38,12 @@ ku: email: blocked: dabînkerê e-nameya qedexe bi kar tîne unreachable: xuya ye ku tune ye + role_id: + elevated: nabe ku ji rola te ya heyî bilindtir be + user_role: + attributes: + permissions_as_keys: + dangerous: mafdayînên ku ji bo rola bingehîn ne ewle ne tê de hene + elevated: di rola te ya heyî de nabe mafdayîn tê de hebin + position: + elevated: nabe ku ji rola te ya heyî bilindtir be diff --git a/config/locales/activerecord.pt-PT.yml b/config/locales/activerecord.pt-PT.yml index 5b89ee5a2..ceeaa909e 100644 --- a/config/locales/activerecord.pt-PT.yml +++ b/config/locales/activerecord.pt-PT.yml @@ -38,3 +38,12 @@ pt-PT: email: blocked: utiliza um provedor de e-mail não permitido unreachable: não parece existir + role_id: + elevated: não pode ser maior que o da sua função atual + user_role: + attributes: + permissions_as_keys: + dangerous: incluir permissões que não são seguras para a função base + elevated: não pode incluir permissões que a sua função atual não possui + position: + elevated: não pode ser maior que o da sua função atual diff --git a/config/locales/activerecord.sq.yml b/config/locales/activerecord.sq.yml index 57de9d3cb..1255b79a2 100644 --- a/config/locales/activerecord.sq.yml +++ b/config/locales/activerecord.sq.yml @@ -38,3 +38,12 @@ sq: email: blocked: përdor një shërbim email të palejuar unreachable: s’duket se ekziston + role_id: + elevated: s’mund të jetë më i lartë sesa roli juaj i tanishëm + user_role: + attributes: + permissions_as_keys: + dangerous: përfshi leje që s’janë të parrezik për rolin bazë + elevated: s’mund të përfshijë leje të cilat roli juaj i tanishëm s’i përfshin + position: + elevated: s’mund të jetë më i lartë sesa roli juaj i tanishëm diff --git a/config/locales/activerecord.uk.yml b/config/locales/activerecord.uk.yml index 06967ddc7..58e549b53 100644 --- a/config/locales/activerecord.uk.yml +++ b/config/locales/activerecord.uk.yml @@ -38,3 +38,12 @@ uk: email: blocked: використовує не дозволенного постачальника електронної пошти unreachable: не існує + role_id: + elevated: не може бути вищою за поточну роль + user_role: + attributes: + permissions_as_keys: + dangerous: включити небезпечні для базової ролі дозволи + elevated: не можна включити права, якими не володіє ваша поточна роль + position: + elevated: не може бути вищою за поточну роль diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 680a0646f..dfc1c1e27 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -651,6 +651,9 @@ ca: view_profile: Veure perfil roles: add_new: Afegir rol + assigned_users: + one: "%{count} usuari" + other: "%{count} usuaris" categories: administration: Administració devops: Operadors de desenvolupament @@ -1608,6 +1611,78 @@ ca: tags: does_not_match_previous_name: no coincideix amb el nom anterior terms: + body_html: | +

    Aquesta pàgina conté els nostres Termes del servei (adaptats de la Bsd.network ToS) i la nostra Política de privadesa. + +

    Termes del servei

    + +

    La nostra intenció és que utilitzis aquest servei per al gaudi personal i la interacció respectuosa i amistosa. A aquest efecte, esperem fomentar un entorn favorable i integrador. + +

    Aquest servidor és de propietat privada i obert als usuaris voluntàriament, no un espai públic. S'espera que els usuaris que vulguin unir-se a aquesta comunitat actuïn sense malícia i de bona fe. Fer-ho d'una altra manera pot conduir a l'eliminació de l'usuari del servei, independentment de si viola qualsevol regla que s'esbossi a continuació. + +

    Polítiques i normes

    + +

    La nostra instància està subjecta a un conjunt de normes que regeixen el comportament dels usuaris. Les regles sempre són visibles a la nostra pàgina Quant a. + +

    Aquestes normes estan dissenyades per a mantenir un ambient amistós i obert, i per a evitar l'assetjament i la discriminació. Per tant, són un conjunt de directrius, però per necessitat incompletes. Els usuaris que violen l'esperit d'aquestes normes no es tractaran de manera diferent que els usuaris que violen una regla específica. + +

    Si us plau, tingues en compte que les nostres normes contenen una secció sobre les millors pràctiques, i els usuaris que repetidament i que malaurat els advertiments ignoren aquestes millors pràctiques poden veure's violant les nostres normes. + +

    Els moderadors poden eliminar els comptes que publiquin spam, o si se sospita que un compte és creat només per reservar un nom d'usuari. La violació de les polítiques i les normes també pot portar a l'eliminació de comptes a discreció dels moderadors. + +

    Accés a dades

    + +

    El contingut d'aquest servidor no s'ha d'utilitzar per a l'aprenentatge automàtic o altres propòsits de "recerca" sense el consentiment explícit dels usuaris implicats. + +

    El contingut d'aquest servidor més enllà d'aquesta pàgina no s'ha d'arxivar o indexar a l'engròs per mitjans automatitzats per qualsevol usuari o servei. Els usuaris actius poden exportar les seves llistes i publicacions a través de l'exportació proporcionada a la seva pàgina de configuració, o l'API. + +

    Política de privadesa

    + +

    Recollida d'informació

    + +

    Informació obligatòria del compte: nom d'usuari (sempre públic), adreça de correu electrònic i contrasenya. + +

    Informació del compte opcional: nom de visualització, biografia, camps d'informació del perfil, imatge de perfil i imatge de capçalera. El nom de visualització, la biografia, la imatge de perfil i la imatge de capçalera sempre seran públics. + +

    Estat i interaccions: Retenim totes les vostres publicacions, inclosos els adjunts, i altres interaccions (com ara els preferits, els segueix i els impulsos). A més del contingut i les persones implicades, també emmagatzemen els codis de temps per a totes les entrades de dades enumerades. Si aquestes interaccions impacten en un altre servidor (per exemple, seguint, impulsant o missatger a un usuari en un servidor diferent), aquest altre servidor rebrà tota la informació requerida. Les publicacions públiques, no llistades i fitxades són públiques. Els teus seguidors només tenen missatges de seguiment, i els missatges directes estan disponibles per a tu i totes les persones esmentades en el missatge. Tingues en compte que, com que no podem controlar altres servidors, això significa que no podem garantir l'estat de privacitat dels teus missatges tan aviat abandonin aquest servidor. + +

    Galetes: Utilitzem galetes per mantenir-te registrat i guardar les teves preferències per a futures visites. + +

    Altres metadades: No registrem ni emmagatzem la teva adreça IP com a norma general. Es faran excepcions quan busquem activament errors. Una vegada que s'hagi finalitzat la cerca d'errors, les adreces IP recollides s'eliminaran. Retenim el nom de l'aplicació del teu navegador per permetre't revisar les sessions actualment iniciades per motius de seguretat. + +

    Ús de la informació

    + +

    Tota la informació que recopilem de tu pot ser utilitzada de les maneres següents: + +

    Per proporcionar la funcionalitat principal d'aquest servidor. Només pots interaccionar amb el contingut d'altres persones i publicar el teu propi contingut quan hagis iniciat la sessió. Per exemple, pots seguir a altres persones per veure les seves publicacions en la teva pròpia línia de temps personalitzada. + +

    Per a ajudar a la moderació de la comunitat, quan s'informi d'una publicació o un compte, examinarem la qüestió com a part de les nostres tasques de moderació. + +

    L'adreça de correu electrònic que proporcionis es pot utilitzar per enviar-te informació, notificacions sobre altres persones que interaccionen amb el teu contingut o que t'envien missatges, i per respondre a les investigacions, i/o altres peticions o preguntes. + +

    Protecció de la informació

    + +

    Apliquem una varietat de mesures de seguretat per a mantenir la seguretat de la teva informació personal quan entres, presentes o accedeixes a la teva informació personal. Entre altres coses, la teva sessió de navegador, així com el trànsit entre les teves aplicacions i l'API, estan assegurades amb HTTPS, i la teva contrasenya es resumeix mitjançant un algorisme d'un únic sentit. Pots habilitar l'autenticació de doble factor per a un accés més segur al teu compte. + +

    Supressió i retenció de la informació

    + +

    Pots sol·licitar i descarregar un arxiu del teu contingut, incloent-hi les entrades, el contingut gràfic, la imatge del perfil i la imatge de capçalera. + +

    En qualsevol moment pots suprimir el teu compte de manera irreversible. + +

    Si jutgem que estàs incomplint les nostres normes, pot ser que eliminem de manera irreversible el teu compte en qualsevol moment. + +

    Divulgació de la informació

    + +

    La informació no es revela tret que ho permetis explícitament. L'única excepció és el proveïdor d'aquest servidor, que és un tercer de confiança i inevitable. + +

    Contactar o permetre el contacte d'un usuari d'una instància diferent implica el consentiment que les dades necessàries es comparteixen amb el servidor en qüestió. + +

    L'autorització d'una aplicació de tercers concedeix accés a la informació en funció de l'abast dels permisos que aprovis. L'aplicació pot accedir a la teva informació de perfil públic, la teva llista següent, els teus seguidors, les teves llistes, tots els teus missatges i els teus preferits. Les aplicacions no poden accedir mai a la teva adreça de correu electrònic o contrasenya. + +

    Atribució

    + +

    This text is free to be adapted and remixed under the terms of the CC-BY (Attribution 4.0 International) license. title: "%{instance} Condicions del servei i política de privadesa" themes: contrast: Mastodon (alt contrast) diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 06a5387a7..3a58fd23b 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -713,6 +713,7 @@ cs: manage_rules: Spravovat pravidla manage_settings: Spravovat nastavení manage_user_access: Spravovat uživatelské přístupy + manage_user_access_description: Umožňuje uživatelům rušit jiným uživatelům dvoufázové ověřování, měnit jejich e-mailovou adresu a obnovovat jim hesla manage_users: Spravovat uživatele manage_webhooks: Spravovat webhooky view_audit_log: Zobrazovat protokol auditu diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 41c54ba75..a1e9835d6 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -194,6 +194,7 @@ cy: reset: Ailosod reset_password: Ailosod cyfrinair resubscribe: Aildanysgrifio + role: Rôl search: Chwilio search_same_email_domain: Defnyddwyr eraill gyda'r un parth ebost search_same_ip: Defnyddwyr eraill gyda'r un IP diff --git a/config/locales/da.yml b/config/locales/da.yml index c9a0954fe..a08748deb 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -697,6 +697,18 @@ da: manage_taxonomies: Håndtere taksonomier manage_taxonomies_description: Tillader brugere at gennemse tenderende indhold og opdatere hashtag-indstillinger manage_user_access: Håndtere brugeradgang + manage_user_access_description: Tillader brugere at deaktivere andre brugeres tofaktorgodkendelse, skifte deres e-mailadresse og nulstille deres adgangskode + manage_users: Håndtere brugere + manage_users_description: Tillader brugere at se andre brugeres oplysninger og underkaste dem moderationshandlinger + manage_webhooks: Håndtere Webhooks + manage_webhooks_description: Tillader brugere at opsætte webhooks til administrative begivenheder + view_audit_log: Vis revisionslog + view_audit_log_description: Tillader brugere at se en historik over administrative handlinger på serveren + view_dashboard: Vis Dashboard + view_dashboard_description: Tillader brugere at tilgå Dashboard'et og forskellige målinger + view_devops: Devops + view_devops_description: Tillader brugere at tilgå Sidekiq- og pgHero-dashboards + title: Roller rules: add_new: Tilføj regel delete: Slet diff --git a/config/locales/devise.nl.yml b/config/locales/devise.nl.yml index bf3b02e3f..2cbbee6cf 100644 --- a/config/locales/devise.nl.yml +++ b/config/locales/devise.nl.yml @@ -21,7 +21,7 @@ nl: action: E-mailadres verifiëren action_with_app: Bevestigen en naar %{app} teruggaan explanation: Je hebt een account op %{host} aangemaakt en met één klik kun je deze activeren. Wanneer jij dit account niet hebt aangemaakt, mag je deze e-mail negeren. - explanation_when_pending: Je vroeg met dit e-mailadres een uitnodiging aan voor %{host}. Nadat je jouw e-mailadres hebt bevestigd, beoordelen we jouw aanvraag. Je kunt tot dan nog niet inloggen. Wanneer jouw aanvraag wordt afgekeurd, worden jouw gegevens verwijderd en hoef je daarna verder niets meer te doen. Wanneer jij dit niet was, kun je deze e-mail negeren. + explanation_when_pending: Je vroeg met dit e-mailadres een uitnodiging aan voor %{host}. Nadat je jouw e-mailadres hebt bevestigd, beoordelen we jouw aanvraag. Je kunt tot dan nog niet inloggen. Wanneer jouw aanvraag wordt afgewezen, worden jouw gegevens verwijderd en hoef je daarna verder niets meer te doen. Wanneer jij dit niet was, kun je deze e-mail negeren. extra_html: Bekijk ook de regels van de Mastodonserver en onze gebruiksvoorwaarden. subject: 'Mastodon: E-mail bevestigen voor %{instance}' title: E-mailadres verifiëren diff --git a/config/locales/doorkeeper.cy.yml b/config/locales/doorkeeper.cy.yml index 4dc4b5e0a..85aaccea6 100644 --- a/config/locales/doorkeeper.cy.yml +++ b/config/locales/doorkeeper.cy.yml @@ -69,6 +69,7 @@ cy: confirmations: revoke: Ydych chi'n sicr? index: + scopes: Caniatâd title: Eich rhaglenni awdurdodedig errors: messages: @@ -100,6 +101,12 @@ cy: authorized_applications: destroy: notice: Diddymwyd y cais. + grouped_scopes: + title: + accounts: Cyfrifon + bookmarks: Tudalnodau + filters: Hidlyddion + search: Chwilio layouts: admin: nav: diff --git a/config/locales/eo.yml b/config/locales/eo.yml index e9ed57a39..8d71055a9 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -41,7 +41,9 @@ eo: unavailable_content_description: domain: Servilo reason: 'Kialo:' + rejecting_media: 'La aŭdovidaj dosieroj de ĉi tiuj serviloj ne estos prilaboritaj aŭ stokitaj, kaj neniu bildeto estos montrita, do necesas klaki permane por vidi la originalan afiŝon:' rejecting_media_title: Filtritaj aŭdovidaĵoj + silenced: 'La mesaĝoj de tiuj serviloj estos kaŝitaj de publikaj templinio kaj konversacioj, kaj la interagoj de la uzantoj donas neniun sciigon, ĝis vi sekvos ilin:' silenced_title: Silentigitaj serviloj suspended_title: Suspenditaj serviloj user_count_after: @@ -90,7 +92,7 @@ eo: add_email_domain_block: Bloki retadresan domajnon approve: Aprobi are_you_sure: Ĉu vi certas? - avatar: Profilbildo + avatar: Rolfiguro by_domain: Domajno change_email: current_email: Nuna retadreso @@ -129,7 +131,7 @@ eo: remote: Foraj title: Loko login_status: Ensaluta stato - media_attachments: Ligitaj aŭdovidaĵoj + media_attachments: Aŭdovidaj aldonaĵoj memorialize: Ŝanĝi al memoro memorialized: Memorita moderation: @@ -152,7 +154,7 @@ eo: push_subscription_expires: Eksvalidiĝo de la abono al PuSH redownload: Aktualigi profilon reject: Malakcepti - remove_avatar: Forigi profilbildon + remove_avatar: Forigi la rolfigron remove_header: Forigi kapan bildon resend_confirmation: already_confirmed: Ĉi tiu uzanto jam estas konfirmita @@ -179,6 +181,7 @@ eo: subscribe: Aboni suspend: Haltigu suspended: Suspendita + suspension_reversible_hint_html: La konto estas suspendita, kaj la datumoj estos komplete forgitaj en la %{date}. Ĝis tiam, la konto povas esti restaŭrita sen malutila efiko. Se vi deziras tuj forigi ĉiujn datumojn de la konto, vi povas fari ĉi-sube. title: Kontoj unblock_email: Malbloki retpoŝtadresojn unblocked_email_msg: Sukcese malblokis la retpoŝtadreson de %{username} @@ -224,7 +227,7 @@ eo: memorialize_account: Memorigu Konton promote_user: Promocii Uzanton reject_user: Malakcepti Uzanton - remove_avatar_user: Forigi profilbildon + remove_avatar_user: Forigi la rolfigron reopen_report: Remalfermi signalon reset_password_user: Restarigi pasvorton resolve_report: Solvitaj reporto @@ -268,7 +271,7 @@ eo: memorialize_account_html: "%{name} ŝanĝis la konton de %{target} al memora paĝo" promote_user_html: "%{name} plirangigis uzanton %{target}" reject_user_html: "%{name} malakceptis registriĝon de %{target}" - remove_avatar_user_html: "%{name} forigis profilbildon de %{target}" + remove_avatar_user_html: "%{name} forigis la rolfiguron de %{target}" reopen_report_html: "%{name} remalfermis signalon %{target}" suspend_account_html: "%{name} suspendis la konton de %{target}" unsuspend_account_html: "%{name} reaktivigis la konton de %{target}" @@ -330,7 +333,7 @@ eo: dashboard: active_users: aktivaj uzantoj interactions: interago - media_storage: Aŭdvidaĵa memorilo + media_storage: Memorilo de aŭdovidaĵoj new_users: novaj uzantoj opened_reports: raportoj malfermitaj resolved_reports: raportoj solvitaj @@ -363,7 +366,7 @@ eo: obfuscate: Malklara domajna nomo private_comment: Privata komento public_comment: Publika komento - reject_media: Malakcepti aŭdovidajn dosierojn + reject_media: Malakcepti la aŭdovidajn dosierojn reject_media_hint: Forigas aŭdovidaĵojn loke konservitajn kaj rifuzas alŝuti ajnan estonte. Ne koncernas haltigojn reject_reports: Malakcepti signalojn reject_reports_hint: Ignori ĉiujn signalojn el tiu domajno. Ne koncernas haltigojn @@ -394,6 +397,7 @@ eo: by_domain: Domajno content_policies: policies: + reject_media: Malakcepti la aŭdovidaĵojn reject_reports: Malakcepti raportojn silence: Kaŝu policy: Politiko @@ -402,6 +406,7 @@ eo: instance_accounts_measure: konservitaj kontoj instance_followers_measure: niaj sekvantoj tie instance_follows_measure: iliaj sekvantoj ĉi tie + instance_media_attachments_measure: stokitaj aŭdovidaj aldonaĵoj instance_reports_measure: raportoj pri ili instance_statuses_measure: konservitaj afiŝoj delivery: @@ -511,6 +516,8 @@ eo: unresolved: Nesolvitaj updated_at: Ĝisdatigita view_profile: Vidi profilon + roles: + everyone: Implicitaj permesoj rules: add_new: Aldoni regulon delete: Forigi @@ -643,8 +650,8 @@ eo: title: Tendencoj warning_presets: add_new: Aldoni novan - delete: Forigi - edit_preset: Redakti avertan antaŭagordon + delete: Forviŝi + edit_preset: Redakti la antaŭagordojn de averto title: Administri avertajn antaŭagordojn admin_mailer: new_appeal: @@ -704,6 +711,7 @@ eo: description: prefix_invited_by_user: "@%{name} invitigi vin aligiĝi ĉi tiu servilo de Mastodon!" prefix_sign_up: Registriĝi ĉe Mastodon hodiaŭ! + suffix: Kun konto, vi povos sekvi aliajn homojn, skribi afiŝojn kaj interŝanĝi mesaĝojn kun la uzantoj de iu ajn Mastodon'a servilo kaj multe pli! didnt_get_confirmation: Ĉu vi ne ricevis la instrukciojn por konfirmi? dont_have_your_security_key: Ne havas vi vian sekurecan ŝlosilon? forgot_password: Pasvorto forgesita? @@ -721,7 +729,7 @@ eo: register: Registriĝi registration_closed: "%{instance} ne estas akcepti nova uzantojn" resend_confirmation: Resendi la instrukciojn por konfirmi - reset_password: Ŝanĝi pasvorton + reset_password: Restarigi pasvorton security: Sekureco set_new_password: Elekti novan pasvorton setup: @@ -753,7 +761,7 @@ eo: invalid_signature: 올바른 Ed25519 시그니처가 아닙니다 date: formats: - default: "%Y-%m-%d " + default: "%d de %b %Y" with_month_name: "%e-a de %B %Y" datetime: distance_in_words: @@ -1029,7 +1037,7 @@ eo: too_many_options: ne povas enhavi pli da %{max} proponoj preferences: other: Aliaj aferoj - posting_defaults: Afiŝadoj defaŭltoj + posting_defaults: Implicitaj agordoj de afiŝado public_timelines: Publikaj templinioj reactions: errors: @@ -1151,6 +1159,7 @@ eo: other: "%{count} videoj" boosted_from_html: Diskonigita de %{acct_link} content_warning: 'Averto de la enhavo: %{warning}' + default_language: Same kiel lingvo de la fasado disallowed_hashtags: one: 'enhavas malpermesitan kradvorton: %{tags}' other: 'enhavis malpermesitan kradvorton: %{tags}' @@ -1189,6 +1198,8 @@ eo: ignore_reblogs: Ignori akcelojn keep_direct: Konservi rektajn mesaĝojn keep_direct_hint: Ne forigos viajn rektajn mesagôjn + keep_media: Konservi la mesaĝojn kun aŭdovidaj aldonaĵoj + keep_media_hint: Ne forviŝi la mesaĝojn kiuj enhavas aŭdovidajn aldonaĵojn keep_self_fav_hint: Ne forviŝi viajn proprajn afiŝojn, se vi aldonis ilin al viaj preferaĵoj min_age: '1209600': 2 semajnoj @@ -1213,7 +1224,7 @@ eo: mastodon-light: Mastodon (Luma) time: formats: - default: "%Y-%m-%d %H:%M" + default: "%Y.%b.%d, %H:%M" month: "%b %Y" time: "%H:%M" two_factor_authentication: diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 6246836ae..018dea3af 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -103,11 +103,17 @@ fr: avatar: Avatar by_domain: Domaine change_email: + changed_msg: Courriel modifié avec succès ! current_email: Courriel actuel label: Modifier le courriel new_email: Nouveau courriel submit: Modifier le courriel title: Modifier le courriel pour %{username} + change_role: + changed_msg: Rôle modifié avec succès ! + label: Modifier le rôle + no_role: Aucun rôle + title: Modifier le rôle de %{username} confirm: Confirmer confirmed: Confirmé confirming: Confirmation @@ -151,6 +157,7 @@ fr: active: Actifs all: Tous pending: En cours de traitement + silenced: Limité suspended: Suspendus title: Modération moderation_notes: Notes de modération @@ -158,6 +165,7 @@ fr: most_recent_ip: Adresse IP la plus récente no_account_selected: Aucun compte n’a été modifié, car aucun n’a été sélectionné no_limits_imposed: Aucune limite imposée + no_role_assigned: Aucun rôle assigné not_subscribed: Non abonné pending: En attente d’approbation perform_full_suspension: Suspendre @@ -184,6 +192,7 @@ fr: reset: Réinitialiser reset_password: Réinitialiser le mot de passe resubscribe: Se réabonner + role: Rôle search: Rechercher search_same_email_domain: Autres utilisateurs·trices avec le même domaine de courriel search_same_ip: Autres utilisateur·rice·s avec la même IP @@ -225,7 +234,7 @@ fr: approve_appeal: Approuver l'appel approve_user: Approuver l’utilisateur assigned_to_self_report: Affecter le signalement - change_email_user: Modifier le courriel pour + change_email_user: Modifier le courriel pour ce compte confirm_user: Confirmer l’utilisateur create_account_warning: Créer une alerte create_announcement: Créer une annonce @@ -472,8 +481,8 @@ fr: instances: availability: description_html: - one: Si la livraison au domaine échoue pendant %{count} jour sans succès, aucune autre tentative de livraison ne sera faite à moins qu'une livraison depuis le domaine soit reçue. - other: Si la livraison au domaine échoue pendant %{count} jours différents sans succès, aucune autre tentative de livraison ne sera faite à moins qu'une livraison depuis le domaine soit reçue. + one: Si la livraison au domaine échoue pendant %{count} jour, aucune autre tentative de livraison ne sera faite à moins qu'une livraison depuis le domaine ne soit reçue. + other: Si la livraison au domaine échoue pendant %{count} jours différents, aucune autre tentative de livraison ne sera faite à moins qu'une livraison depuis le domaine ne soit reçue. failure_threshold_reached: Le seuil de défaillance a été atteint le %{date}. failures_recorded: one: Tentative échouée pendant %{count} jour. @@ -640,6 +649,67 @@ fr: unresolved: Non résolus updated_at: Mis à jour view_profile: Voir le profil + roles: + add_new: Ajouter un rôle + assigned_users: + one: "%{count} utilisateur·rice" + other: "%{count} utilisateur·rice·s" + categories: + administration: Administration + devops: Devops + invites: Invitations + moderation: Modération + special: Spécial + delete: Supprimer + description_html: Les rôles utilisateur vous permettent de personnaliser les fonctions et les zones de Mastodon auxquelles vos utilisateur⋅rice⋅s peuvent accéder. + edit: Modifier le rôle '%{name}' + everyone: Autorisations par défaut + everyone_full_description_html: Ceci est le rôle de base qui impacte tou⋅te⋅s les utilisateur⋅rice⋅s, même celleux sans rôle assigné. Tous les autres rôles héritent des autorisations de celui-ci. + permissions_count: + one: "%{count} autorisation" + other: "%{count} autorisations" + privileges: + administrator: Administrateur·rice + administrator_description: Les utilisateur⋅rice⋅s ayant cette autorisation pourront contourner toutes les autorisations + delete_user_data: Supprimer les données de l'utilisateur⋅rice + delete_user_data_description: Permet aux utilisateur⋅rice⋅s de supprimer sans délai les données des autres utilisateur⋅rice⋅s + invite_users: Inviter des utilisateur⋅rice⋅s + invite_users_description: Permet aux utilisateur⋅rice⋅s d'inviter de nouvelles personnes sur le serveur + manage_announcements: Gérer les annonces + manage_announcements_description: Permet aux utilisateur⋅rice⋅s de gérer les annonces sur le serveur + manage_appeals: Gérer les contestations + manage_appeals_description: Permet aux utilisateur⋅rice⋅s d'examiner les appels contre les actions de modération + manage_blocks: Gérer les blocages + manage_blocks_description: Permet aux utilisateur⋅rice⋅s de bloquer des fournisseurs de courriel et des adresses IP + manage_custom_emojis: Gérer les émojis personnalisés + manage_custom_emojis_description: Permet aux utilisateur⋅rice⋅s de gérer les émoticônes personnalisées sur le serveur + manage_federation: Gérer de la féderation + manage_federation_description: Permet aux utilisateur⋅rice⋅s de bloquer ou d'autoriser la fédération avec d'autres domaines, et de contrôler la capacité de livraison + manage_invites: Gérer les invitations + manage_invites_description: Permet aux utilisateur⋅rice⋅s de parcourir et de désactiver les liens d'invitation + manage_reports: Gérer les rapports + manage_reports_description: Permet aux utilisateur⋅rice⋅s d'examiner les signalements et d'effectuer des actions de modération en conséquence + manage_roles: Gérer les rôles + manage_roles_description: Permet aux utilisateur⋅rice⋅s de gérer et d'assigner des rôles inférieurs au leur + manage_rules: Gérer les règles + manage_rules_description: Permet aux utilisateur·rice·s de modifier les règles du serveur + manage_settings: Gérer les paramètres + manage_settings_description: Permet aux utilisateur·rice·s de modifier les paramètres du site + manage_taxonomies: Gérer les taxonomies + manage_taxonomies_description: Permet aux utilisateur⋅rice⋅s d'examiner les contenus tendance et de mettre à jour les paramètres des hashtags + manage_user_access: Gérer l'accès utilisateur + manage_user_access_description: Permet aux utilisateur⋅rice⋅s de désactiver l'authentification à deux facteurs, de modifier l'adresse courriel et de réinitialiser le mot de passe des autres utilisateur⋅rice⋅s + manage_users: Gérer les utilisateur·rice·s + manage_users_description: Permet aux utilisateur⋅rice⋅s de voir les détails des autres utilisateur⋅rice⋅s et d'effectuer des actions de modération en conséquence + manage_webhooks: Gérer les points d’ancrage web + manage_webhooks_description: Permet aux utilisateur⋅rice⋅s de configurer des webhooks pour des événements d'administration + view_audit_log: Afficher le journal d'audit + view_audit_log_description: Permet aux utilisateur⋅rice⋅s de voir l'historique des opérations d'administration sur le serveur + view_dashboard: Voir le tableau de bord + view_dashboard_description: Permet aux utilisateur⋅rice⋅s d'accéder au tableau de bord et à diverses statistiques + view_devops: Devops + view_devops_description: Permet aux utilisateur⋅rice⋅s d'accéder aux tableaux de bord Sidekiq et pgHero + title: Rôles rules: add_new: Ajouter une règle delete: Supprimer @@ -853,6 +923,7 @@ fr: events: Événements new: Nouveau point d’ancrage web rotate_secret: Effectuer une rotation du secret + secret: Jeton de connexion status: État title: Points d’ancrage web webhook: Point d’ancrage web diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 4d459a74a..a5baa17f2 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -601,7 +601,7 @@ gl: delete_description_html: As publicacións denunciadas van ser eliminadas e gárdase un aviso para axudarche a xestionar futuras infraccións desta conta. mark_as_sensitive_description_html: Os multimedia das publicacións denunciadas serán marcados como sensibles e engadirase un aviso para axudarche a xestionar futuras infraccións da mesma conta. other_description_html: Mira máis opcións para controlar o comportamento da conta e personalizar as comunicacións coa conta denunciada. - resolve_description_html: Non se van tomar accións contra a conta denunciada, nin se gardan avisos, e a denuncia arquivada. + resolve_description_html: Non se van tomar accións contra a conta denunciada, nin se gardarán avisos, e pecharase a denuncia. silence_description_html: O perfil será visible só para quen xa o está a seguir ou quen o buscou manualmente, limitando moito o seu alcance. Pódese cambiar. suspend_description_html: O perfil e tódolos seus contidos será inaccesbles e finalmente eliminados. A interacción coa conta non será posible. Reversible durante 30 días. actions_description_html: Decide que acción tomar respecto desta denuncia. Se tomas accións punitivas contra a conta denunciada, enviaráselles un email coa notificación, excepto se está seleccionada a categoría Spam. @@ -631,7 +631,7 @@ gl: placeholder: Describir que accións foron tomadas ou calquera outra novidade sobre esta denuncia... title: Notas notes_description_html: Ver e deixar unha nota para ti no futuro e outras moderadoras - quick_actions_description_html: 'Tomar unha acción rápida ou desprázate abaixo para ver o contido denunciado:' + quick_actions_description_html: 'Toma unha acción rápida ou desprázate abaixo para ver o contido denunciado:' remote_user_placeholder: a usuaria remota desde %{instance} reopen: Reabrir denuncia report: 'Denuncia #%{id}' @@ -664,7 +664,7 @@ gl: description_html: Cos roles das usuarias podes personalizar as funcións e áreas de Mastodon ás que as usuarias poden acceder. edit: Editar rol '%{name}' everyone: Permisos por defecto - everyone_full_description_html: Este é o rol básico que afecta a tódalas usuarias, incluso aquelas sen un rol asignado. Tódolos outros roles herdar os seus permisos. + everyone_full_description_html: Este é o rol básico que afecta a tódalas usuarias, incluso aquelas sen un rol asignado. Tódolos outros roles herdan os seus permisos. permissions_count: one: "%{count} permiso" other: "%{count} permisos" @@ -700,7 +700,7 @@ gl: manage_user_access: Xestionar Acceso das usuarias manage_user_access_description: Permite desactivar o segundo factor de autenticación doutras usuarias, cambiar o enderezo de email e restablecer o contrasinal manage_users: Xestionar Usuarias - manage_users_description: Permite ver os detalles doutras usuarias e realizar accións de moderación en sobre elas + manage_users_description: Permite ver os detalles doutras usuarias e realizar accións de moderación sobre elas manage_webhooks: Xestionar Webhooks manage_webhooks_description: Permite establecer webhooks para eventos administrativos view_audit_log: Ver Rexistro de auditoría diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 2c286e87d..9a601c4ca 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -666,6 +666,52 @@ hu: description_html: A felhasználói szerepekkel testreszabhatod, hogy a felhasználóid milyen Mastodon funkciókat és területeket érjenek el. edit: "'%{name}' szerep szerkesztése" everyone: Alapértelmezett engedélyek + everyone_full_description_html: Ez az alap szerep, mely minden felhasználóra kihat, azokra is, akiknek nincs hozzárendelt szerepük. Minden más szerep ebből örökli az engedélyeit. + permissions_count: + one: "%{count} engedély" + other: "%{count} engedély" + privileges: + administrator: Adminisztrátor + administrator_description: A felhasználók ezzel a szereppel minden jogosultsággal rendelkeznek + delete_user_data: Felhasználói adatok törlése + delete_user_data_description: Lehetővé teszi a felhasználónak, hogy azonnal törölhesse más felhasználó adatait + invite_users: Felhasználók meghívása + invite_users_description: Lehetővé teszi a felhasználónak, hogy új embereket hívjon meg a kiszolgálóra + manage_announcements: Hirdetmények kezelése + manage_announcements_description: Lehetővé teszi a felhasználónak, hogy a kiszolgáló hirdetményeit kezelje + manage_appeals: Fellebbezések kezelése + manage_appeals_description: Lehetővé teszi, hogy a felhasználó átnézze a moderációval kapcsolatos fellebbezéseket + manage_blocks: Letiltások kezelése + manage_blocks_description: Lehetővé teszi, hogy a felhasználó letiltson email szolgáltatókat és IP címeket + manage_custom_emojis: Egyedi emodzsik kezelése + manage_custom_emojis_description: Lehetővé teszi a felhasználó számára, hogy a kiszolgáló egyedi emodzsiait kezelje + manage_federation: Föderáció kezelése + manage_federation_description: Lehetővé teszi a felhasználó számára, hogy más domainnekkel való föderációt engedélyezzen vagy letiltson, illetve szabályozza a kézbesítést + manage_invites: Meghívások kezelése + manage_invites_description: Lehetővé teszi a felhasználó számára, hogy böngéssze és deaktiválja a meghívási hivatkozásokat + manage_reports: Bejelentések kezelése + manage_reports_description: Lehetővé teszi a felhasználó számára, hogy átnézze a bejelentéseket és moderáljon ezek alapján + manage_roles: Szerepek kezelése + manage_roles_description: Lehetővé teszi a felhasználó számára, hogy a sajátjánál alacsonyabb rangú szerepeket kezeljen és hozzárendeljen másokhoz + manage_rules: Szabályok kezelése + manage_rules_description: Lehetővé teszi a felhasználó számára, hogy megváltoztassa a kiszolgáló szabályait + manage_settings: Beállítások kezelése + manage_settings_description: Lehetővé teszi, hogy a felhasználó megváltoztassa az oldal beállításait + manage_taxonomies: Taxonómiák kezelése + manage_taxonomies_description: Lehetővé teszi, hogy a felhasználó átnézze a népszerű tartalmakat és frissítse a hashtag-ek beállításait + manage_user_access: Felhasználói hozzáférések kezelése + manage_user_access_description: Lehetővé teszi, hogy a felhasználó letiltsa mások kétlépcsős azonosítását, megváltoztassa az email címüket, és alaphelyzetbe állítsa a jelszavukat + manage_users: Felhasználók kezelése + manage_users_description: Lehetővé teszi, hogy a felhasználó megtekintse mások részletes adatait és moderálja őket + manage_webhooks: Webhookok kezelése + manage_webhooks_description: Lehetővé teszi, hogy a felhasználó webhookokat állítson be adminisztratív eseményekhez + view_audit_log: Audit napló megtekintése + view_audit_log_description: Lehetővé teszi, hogy a felhasználó megtekintse a kiszolgáló adminisztratív eseményeinek történetét + view_dashboard: Irányítópult megtekintése + view_dashboard_description: Lehetővé teszi, hogy a felhasználó elérje az irányítópultot és vele számos metrikát + view_devops: Devops + view_devops_description: Lehetővé teszi, hogy a felhasználó elérje a Sidekiq és pgHero irányítópultjait + title: Szerepek rules: add_new: Szabály hozzáadása delete: Törlés diff --git a/config/locales/io.yml b/config/locales/io.yml index e7a8b1daf..f88ab4164 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -103,11 +103,17 @@ io: avatar: Profilimajo by_domain: Domeno change_email: + changed_msg: Kontoretposto sucesoze chanjesis! current_email: Nuna retposto label: Chanjez retposto new_email: Nova retposto submit: Chanjez retposto title: Chanjez retposto por %{username} + change_role: + changed_msg: Rolo sucesoze chanjesis! + label: Chanjez rolo + no_role: Nula rolo + title: Chanjez rolo por %{username} confirm: Konfirmez confirmed: Konfirmita confirming: Ankore konfirmesas @@ -151,6 +157,7 @@ io: active: Aktiva all: Omna pending: Vartanta + silenced: Limitizita suspended: Restriktita title: Jero moderation_notes: Jernoti @@ -158,6 +165,7 @@ io: most_recent_ip: Maxim recenta IP no_account_selected: Nula konti chanjesis pro ke nulo selektesis no_limits_imposed: Limiti ne fixesis + no_role_assigned: Nula rolo not_subscribed: Ne abonita pending: Vartar kontrolo perform_full_suspension: Perform full suspension @@ -184,6 +192,7 @@ io: reset: Richanjez reset_password: Richanjez pasvorto resubscribe: Riabonez + role: Rolo search: Trovez search_same_email_domain: Altra uzanti kun sama retpostodomeno search_same_ip: Altra uzanti kun sama IP @@ -640,6 +649,67 @@ io: unresolved: Nerezolvita updated_at: Novigesis view_profile: Videz profilo + roles: + add_new: Insertez rolo + assigned_users: + one: "%{count} uzanto" + other: "%{count} uzanti" + categories: + administration: Administro + devops: Developeri + invites: Inviti + moderation: Jero + special: Specala + delete: Efacez + description_html: Per uzantoroli, vu povas kustumizar funciono e siti di Mastodon quon vua uzanti povas uzar. + edit: Modifikez rolo di '%{name}' + everyone: Originala permisi + everyone_full_description_html: Co esas bazrolo quo efektigas omna uzanti, mem personi sen rolo. Omna altra roli ganas sama permisi de ol. + permissions_count: + one: "%{count} permiso" + other: "%{count} permisi" + privileges: + administrator: Administrero + administrator_description: Uzanti kun ca permiso ignoros singla permiso + delete_user_data: Efacez uzantinformi + delete_user_data_description: Permisez uzanti efacar informi di altra uzanti sen varto + invite_users: Invitez uzanti + invite_users_description: Permisez uzanti invitar nova personi a la servilo + manage_announcements: Jerez anunci + manage_announcements_description: Permisez uzanti jerar anunci en la servilo + manage_appeals: Jerez apeli + manage_appeals_description: Permisez uzanti kontrolar apeli kontra jero + manage_blocks: Jerez obstrukti + manage_blocks_description: Permisez uzanti obstruktar retpostoservilo e adresi di IP + manage_custom_emojis: Jerez kustumizita emocimaji + manage_custom_emojis_description: Permisez uzanti jerar kustumizita emocimaji en la servilo + manage_federation: Jerez federo + manage_federation_description: Permisez uzanti obstruktar o permisez federo kun altra domeni, e dominacar sendebleso + manage_invites: Jerez inviti + manage_invites_description: Permisez uzanti vidar e desaktivigar invitligili + manage_reports: Jerez raporti + manage_reports_description: Permisez uzanti kontrolar raporti e jerez kontra oli + manage_roles: Jerez roli + manage_roles_description: Permisez uzanti jerar e ajustar plu basa roli di olia + manage_rules: Jerez reguli + manage_rules_description: Permisez uzanti chanjar servilreguli + manage_settings: Jerez opcioni + manage_settings_description: Permisez uzanti chanjar sitopcioni + manage_taxonomies: Jerez nomkategorii + manage_taxonomies_description: Permisez uzanti kontrolar tendencoza kontenajo e novigar hashtagopcioni + manage_user_access: Jerez uzantoeniro + manage_user_access_description: Permisez uzanti desaktivigar 2-faktoryurizeso di altra uzanti, chanjar olia retpostoadreso e richanjar olia pasvorto + manage_users: Jerez uzanti + manage_users_description: Permisez uzanti vidar detali di altra uzanti e jerar kontra oli + manage_webhooks: Jerez interrethoki + manage_webhooks_description: Permisez uzanti igas interrethoki por administrala eventi + view_audit_log: Videz kontrollogo + view_audit_log_description: Permisez uzanti vidar historio di administrala agi en la servilo + view_dashboard: Videz chefpanelo + view_dashboard_description: Permisez uzanti uzar chefpanelo e diversa opcioni + view_devops: Developeri + view_devops_description: Permisez uzanti uzar chefpaneli Sidekiq e pgHero + title: Roli rules: add_new: Insertez regulo delete: Efacez @@ -1113,8 +1183,10 @@ io: keywords: Klefvorti title: Modifikez filtrilo errors: + deprecated_api_multiple_keywords: Ca parametri ne povas chanjesar per ca softwaro pro quo oli efektigas plu kam 1 filtrilklefvorto. Uzez plu recenta softwaro o interretintervizajo. invalid_context: Nula o nevalida kuntexto donesis index: + contexts: Filtrili kun %{contexts} delete: Efacez empty: Vu ne havas filtrili. expires_in: Expiras ye %{distance} @@ -1124,6 +1196,7 @@ io: other: "%{count} klefvorti" title: Filtrili new: + save: Salvez nova filtrilo title: Insertez nova filtrilo footer: developers: Developeri diff --git a/config/locales/is.yml b/config/locales/is.yml index 912a3f5bc..1a13e3222 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -664,6 +664,7 @@ is: description_html: Með hlutverkum notenda geturðu sérsniðið að hvaða aðgerðum og hvaða svæðum í Mastodon notendurnir þínir hafa aðgang. edit: Breyta hlutverki fyrir '%{name}' everyone: Sjálfgefnar heimildir + everyone_full_description_html: Þetta er grunnhlutverk sem allir notendur fá, líka þeir sem ekki hafa fengið neitt sérstakt hlutverk. Öll önnur hlutverk erfa heimildir frá þessu. permissions_count: one: "%{count} heimild" other: "%{count} heimildir" @@ -680,6 +681,8 @@ is: manage_appeals_description: Leyfir notendum að yfirfara áfrýjanir vegna aðgerða umsjónarfólks manage_blocks: Sýsla með útilokanir manage_blocks_description: Leyfir notendum að loka á tölvupóstþjónustur og IP-vistföng + manage_rules: Sýsla með reglur + manage_rules_description: Leyfir notendum að breyta reglum á netþjóninum manage_settings: Sýsla með stillingar manage_settings_description: Leyfir notendum að breyta stillingum vefsvæðisins view_dashboard: Skoða stjórnborð diff --git a/config/locales/ko.yml b/config/locales/ko.yml index ce377f4d6..4109bfb4a 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -654,8 +654,11 @@ ko: other: "%{count} 개의 권한" privileges: administrator: 관리자 + administrator_description: 이 권한을 가진 사용자는 모든 권한을 우회합니다 delete_user_data: 사용자 데이터 삭제 + delete_user_data_description: 사용자가 다른 사용자의 데이터를 지체 없이 삭제할 수 있도록 허용 invite_users: 사용자 초대 + invite_users_description: 사용자가 다른 사람들을 서버에 초대할 수 있도록 허용 manage_announcements: 공지 관리 manage_announcements_description: 사용자가 서버의 공지사항을 관리할 수 있도록 허용 manage_appeals: 이의제기 관리 diff --git a/config/locales/ku.yml b/config/locales/ku.yml index 47b8b037b..ccc70d9c5 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -663,8 +663,23 @@ ku: moderation: Çavdêrî special: Taybet delete: Jê bibe + description_html: Bi rolên bikarhêner, tu dikarî fonksiyon û deverên Mastodon ku bikarhênerên wê dikarin xwe bigihînin kesane bikî. + edit: Rolê '%{name}' serrast bike + everyone: Mafdayînên berdest + everyone_full_description_html: Ev rola bingehîn bandorê li hemû bikarhêneran dike, tevî yên bêyî rolek diyarkirî jî. Hemû rolên din mafdayînan jê digirin. + permissions_count: + one: "%{count} mafdayîn" + other: "%{count} mafdayîn" privileges: + administrator: Rêvebir + invite_users: Bikarhêneran vexwîne + manage_custom_emojis: Emojiyên kesane bi rêve bibe + manage_invites: Vexwendinan bi rêve bibe + manage_roles: Rolan bi rêve bibe + manage_rules: Rolan bi rêve bibe manage_settings: Sazkariyan bi rê ve bibe + manage_users: Bikarhêneran bi rêve bibe + title: Rol rules: add_new: Rêbazekê tevlî bike delete: Jê bibe @@ -1134,6 +1149,7 @@ ku: public: Demnameya gelemperî thread: Axaftin edit: + keywords: Peyvkilît title: Parzûnê serrast bike errors: invalid_context: Naverok tune ye yan jî nederbasdar tê peydakirin diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 08ccb823c..caf3370d8 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -101,11 +101,17 @@ nl: avatar: Avatar by_domain: Domein change_email: + changed_msg: E-mailadres succesvol veranderd! current_email: Huidig e-mailadres label: E-mailadres wijzigen new_email: Nieuw e-mailadres submit: E-mailadres veranderen title: E-mailadres wijzigen voor %{username} + change_role: + changed_msg: Rol succesvol veranderd! + label: Rol veranderen + no_role: Geen rol + title: Rol van %{username} veranderen confirm: Bevestigen confirmed: Bevestigd confirming: Bevestiging @@ -147,6 +153,7 @@ nl: active: Actief all: Alles pending: In afwachting + silenced: Beperkt suspended: Opgeschort title: Moderatie moderation_notes: Opmerkingen voor moderatoren @@ -154,6 +161,7 @@ nl: most_recent_ip: Laatst gebruikt IP-adres no_account_selected: Er zijn geen accounts veranderd, omdat er geen een was geselecteerd no_limits_imposed: Geen limieten ingesteld + no_role_assigned: Geen rol toegewezen not_subscribed: Niet geabonneerd pending: Moet nog beoordeeld worden perform_full_suspension: Opschorten @@ -167,7 +175,7 @@ nl: push_subscription_expires: PuSH-abonnement verloopt op redownload: Profiel vernieuwen redownloaded_msg: Het herstellen van het oorspronkelijke profiel van %{username} is geslaagd - reject: Afkeuren + reject: Afwijzen rejected_msg: Het afwijzen van het registratieverzoek van %{username} is geslaagd remove_avatar: Avatar verwijderen remove_header: Omslagfoto verwijderen @@ -180,9 +188,13 @@ nl: reset: Opnieuw reset_password: Wachtwoord opnieuw instellen resubscribe: Opnieuw abonneren + role: Rol search: Zoeken search_same_email_domain: Andere gebruikers met hetzelfde e-maildomein search_same_ip: Andere gebruikers met hetzelfde IP-adres + security_measures: + only_password: Alleen wachtwoord + password_and_2fa: Wachtwoord en tweestapsverificatie sensitive: Gevoelig forceren sensitized: als gevoelig gemarkeerd shared_inbox_url: Gedeelde inbox-URL @@ -192,12 +204,14 @@ nl: silence: Beperken silenced: Beperkt statuses: Berichten + strikes: Eerdere overtredingen subscribe: Abonneren suspend: Opschorten suspended: Opgeschort suspension_irreversible: De gegevens van dit account zijn onomkeerbaar verwijderd. Je kunt het opschorten van dit account ongedaan maken zodat het weer valt te gebruiken, maar de verwijderde gegevens worden hiermee niet hersteld. suspension_reversible_hint_html: Dit account is opgeschort en de gegevens worden volledig verwijderd op %{date}. Tot die tijd kan dit account worden hersteld zonder nadelige gevolgen. Wanneer je alle gegevens van dit account onmiddellijk wilt verwijderen, kun je dit hieronder doen. title: Accounts + unblock_email: E-mailadres deblokkeren unconfirmed_email: Onbevestigd e-mailadres undo_sensitized: Niet meer als gevoelig forceren undo_silenced: Niet langer beperken @@ -213,6 +227,7 @@ nl: action_logs: action_types: approve_appeal: Bezwaar goedkeuren + approve_user: Gebruiker goedkeuren assigned_to_self_report: Rapportage toewijzen change_email_user: E-mailadres van gebruiker wijzigen confirm_user: Gebruiker bevestigen @@ -230,6 +245,7 @@ nl: destroy_domain_allow: Domeingoedkeuring verwijderen destroy_domain_block: Domeinblokkade verwijderen destroy_email_domain_block: Blokkade van e-maildomein verwijderen + destroy_instance: Domein volledig verwijderen destroy_ip_block: IP-regel verwijderen destroy_status: Toot verwijderen destroy_unavailable_domain: Niet beschikbaar domein verwijderen @@ -240,7 +256,8 @@ nl: enable_user: Gebruiker inschakelen memorialize_account: Het account in een In memoriam veranderen promote_user: Gebruiker promoveren - reject_appeal: Bezwaar verwerpen + reject_appeal: Bezwaar afwijzen + reject_user: Gebruiker afwijzen remove_avatar_user: Avatar verwijderen reopen_report: Rapportage heropenen reset_password_user: Wachtwoord opnieuw instellen @@ -249,6 +266,7 @@ nl: silence_account: Account beperken suspend_account: Account opschorten unassigned_report: Rapportage niet langer toewijzen + unblock_email_account: E-mailadres deblokkeren unsensitive_account: De media in jouw account niet langer als gevoelig markeren unsilence_account: Account niet langer beperken unsuspend_account: Account niet langer opschorten @@ -285,7 +303,8 @@ nl: enable_user_html: Inloggen voor %{target} is door %{name} ingeschakeld memorialize_account_html: Het account %{target} is door %{name} in een In memoriam veranderd promote_user_html: Gebruiker %{target} is door %{name} gepromoveerd - reject_appeal_html: "%{name} heeft het bezwaar tegen de moderatie-actie van %{target} verworpen" + reject_appeal_html: "%{name} heeft het bezwaar tegen de moderatie-actie van %{target} afgewezen" + reject_user_html: "%{name} heeft de registratie van %{target} afgewezen" remove_avatar_user_html: "%{name} verwijderde de avatar van %{target}" reopen_report_html: "%{name} heeft rapportage %{target} heropend" reset_password_user_html: Wachtwoord van gebruiker %{target} is door %{name} opnieuw ingesteld @@ -565,6 +584,8 @@ nl: unresolved: Onopgelost updated_at: Bijgewerkt view_profile: Profiel bekijken + roles: + add_new: Rol toevoegen rules: add_new: Regel toevoegen delete: Verwijderen @@ -694,7 +715,7 @@ nl: pending_review: In afwachting van beoordeling preview_card_providers: title: Uitgevers - rejected: Geweigerd + rejected: Afgewezen statuses: allow: Bericht toestaan warning_presets: @@ -717,7 +738,7 @@ nl: next_steps: Je kunt het bezwaar goedkeuren om daarmee de moderatie-actie ongedaan te maken, of je kunt het verwerpen. subject: "%{username} maakt bezwaar tegen een moderatie-actie op %{instance}" new_pending_account: - body: Zie hieronder de details van het nieuwe account. Je kunt de aanvraag goedkeuren of afkeuren. + body: Zie hieronder de details van het nieuwe account. Je kunt de aanvraag goedkeuren of afwijzen. subject: Er dient een nieuw account op %{instance} te worden beoordeeld (%{username}) new_report: body: "%{reporter} heeft %{target} gerapporteerd" @@ -863,16 +884,24 @@ nl: strikes: appeal: Bezwaar appeal_approved: Het ingediende bezwaar is goedgekeurd en de eerder vastgestelde overtreding is niet langer geldig - appeal_rejected: Het ingediende bezwaar is verworpen + appeal_rejected: Het ingediende bezwaar is afgewezen appeal_submitted_at: Bezwaar ingediend appealed_msg: Jouw bezwaar is ingediend. Wanneer deze wordt goedgekeurd, krijg je hiervan bericht. appeals: submit: Bezwaar indienen approve_appeal: Bezwaar goedkeuren - reject_appeal: Bezwaar verworpen + reject_appeal: Bezwaar afgewezen + title_actions: + delete_statuses: Verwijdering bericht + disable: Bevriezen van account + mark_statuses_as_sensitive: Berichten als gevoelig markeren + none: Waarschuwing + sensitive: Volledige account als gevoelig markeren + silence: Beperking account + suspend: Opschorting account your_appeal_approved: Jouw bezwaar is goedgekeurd your_appeal_pending: Je hebt een bezwaar ingediend - your_appeal_rejected: Jouw bezwaar is verworpen + your_appeal_rejected: Jouw bezwaar is afgewezen domain_validator: invalid_domain: is een ongeldige domeinnaam errors: @@ -1002,6 +1031,12 @@ nl: lists: errors: limit: Je hebt het maximaal aantal lijsten bereikt + login_activities: + authentication_methods: + otp: tweestapsverificatie-app + password: wachtwoord + sign_in_token: beveiligingscode via e-mail + webauthn: beveiligingssleutels media_attachments: validations: images_and_video: Een video kan niet aan een bericht met afbeeldingen worden gekoppeld @@ -1408,19 +1443,25 @@ nl: subject: Jouw bezwaar van %{date} is goedgekeurd title: Bezwaar goedgekeurd appeal_rejected: - explanation: Het bezwaar tegen een door een moderator vastgestelde overtreding van jou op %{strike_date}, ingediend op %{appeal_date}, is verworpen. De vastgestelde overtreding blijft daarom ongewijzigd. - subject: Jouw bezwaar van %{date} is verworpen - title: Bezwaar verworpen + explanation: Het bezwaar tegen een door een moderator vastgestelde overtreding van jou op %{strike_date}, ingediend op %{appeal_date}, is afgewezen. De vastgestelde overtreding blijft daarom ongewijzigd. + subject: Jouw bezwaar van %{date} is afgewezen + title: Bezwaar afgewezen backup_ready: explanation: Je hebt een volledige back-up van jouw Mastodon-account opgevraagd. Het staat nu klaar om te worden gedownload! subject: Jouw archief staat klaar om te worden gedownload title: Archief ophalen + suspicious_sign_in: + title: Een nieuwe registratie warning: appeal: Bezwaar indienen appeal_description: Wanneer je denkt dat dit een fout is, kun je een bezwaar indienen bij de medewerkers van %{instance}. + categories: + spam: Spam explanation: mark_statuses_as_sensitive: Sommige van jouw berichten zijn als gevoelig gemarkeerd door de moderatoren van %{instance}. Dit betekent dat mensen op de media in de berichten moeten klikken/tikken om deze weer te geven. Je kunt media in de toekomst ook zelf als gevoelig markeren. sensitive: Vanaf nu worden al jouw geüploade media als gevoelig gemarkeerd en verborgen achter een waarschuwing. + reason: 'Reden:' + statuses: 'Gerapporteerde berichten:' subject: disable: Jouw account %{acct} is bevroren none: Waarschuwing voor %{acct} diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 4008bb2a2..ac21c330e 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -103,11 +103,17 @@ pt-PT: avatar: Imagem de Perfil by_domain: Domínio change_email: + changed_msg: E-mail alterado com sucesso! current_email: E-mail atual label: Alterar e-mail new_email: Novo e-mail submit: Alterar e-mail title: Alterar e-mail para %{username} + change_role: + changed_msg: Função alterada com sucesso! + label: Alterar função + no_role: Nenhuma função + title: Alterar a função de %{username} confirm: Confirmar confirmed: Confirmado confirming: A confirmar @@ -151,6 +157,7 @@ pt-PT: active: Activo all: Todos pending: Pendente + silenced: Limitadas suspended: Supensos title: Moderação moderation_notes: Notas de moderação @@ -158,6 +165,7 @@ pt-PT: most_recent_ip: IP mais recente no_account_selected: Nenhuma conta foi alterada porque nenhuma foi selecionada no_limits_imposed: Sem limites impostos + no_role_assigned: Nenhuma função atribuída not_subscribed: Não inscrito pending: Pendente de revisão perform_full_suspension: Fazer suspensão completa @@ -184,6 +192,7 @@ pt-PT: reset: Restaurar reset_password: Reset palavra-passe resubscribe: Reinscrever + role: Função search: Pesquisar search_same_email_domain: Outros utilizadores com o mesmo domínio de e-mail search_same_ip: Outros utilizadores com o mesmo IP @@ -640,6 +649,67 @@ pt-PT: unresolved: Por resolver updated_at: Atualizado view_profile: Ver perfil + roles: + add_new: Adicionar função + assigned_users: + one: "%{count} utilizador" + other: "%{count} utilizadores" + categories: + administration: Administração + devops: DevOps + invites: Convites + moderation: Moderação + special: Especiais + delete: Eliminar + description_html: Com as funções de utilizador, pode personalizar quais funções e áreas do Mastodon os seus utilizadores podem aceder. + edit: Editar função '%{name}' + everyone: Permissões padrão + everyone_full_description_html: Esta é a função base que afeta todos os utilizadores, mesmo aqueles sem uma função atribuída. Todas as outras funções herdam as permissões desta. + permissions_count: + one: "%{count} permissão" + other: "%{count} permissões" + privileges: + administrator: Administrador + administrator_description: Utilizadores com esta permissão irão contornar todas as permissões + delete_user_data: Eliminar Dados de Utilizador + delete_user_data_description: Permite que os utilizadores eliminem os dados de outros utilizadores sem atraso + invite_users: Convidar Utilizadores + invite_users_description: Permite aos utilizadores convidar pessoas novas para o servidor + manage_announcements: Gerir Anúncios + manage_announcements_description: Permite aos utilizadores gerir anúncios no servidor + manage_appeals: Gerir Recursos + manage_appeals_description: Permite aos utilizadores rever recursos de moderação + manage_blocks: Gerir Bloqueios + manage_blocks_description: Permite aos utilizadores bloquear provedores de e-mail e endereços IP + manage_custom_emojis: Gerir Emojis Personalizados + manage_custom_emojis_description: Permite aos utilizadores gerir os emojis personalizados do servidor + manage_federation: Gerir Federação + manage_federation_description: Permite aos utilizadores bloquear ou permitir federação com outros domínios e controlar a entregabilidade + manage_invites: Gerir Convites + manage_invites_description: Permite aos utilizadores pesquisar e desativar links de convite + manage_reports: Gerir Relatórios + manage_reports_description: Permite aos utilizadores rever relatórios e executar ações de moderação contra eles + manage_roles: Gerir Funções + manage_roles_description: Permite aos usuários gerir e atribuir funções abaixo das deles + manage_rules: Gerir Regras + manage_rules_description: Permite aos utilizadores alterar as regras do servidor + manage_settings: Gerir Configurações + manage_settings_description: Permite aos utilizadores alterar as configurações do site + manage_taxonomies: Gerir Taxonomias + manage_taxonomies_description: Permite aos utilizadores rever o conteúdo em tendência e atualizar as configurações de hashtag + manage_user_access: Gerir Acesso de Utilizador + manage_user_access_description: Permite aos utilizadores desativar a autenticação em duas etapas de outros utilizadores, alterar o seu endereço de e-mail e redefinir a sua palavra-passe + manage_users: Gerir Utilizadores + manage_users_description: Permite aos utilizadores ver os detalhes de outros utilizadores e executar ações de moderação contra eles + manage_webhooks: Gerir Webhooks + manage_webhooks_description: Permite aos utilizadores configurar webhooks para eventos administrativos + view_audit_log: Ver Registo de Auditoria + view_audit_log_description: Permite aos utilizadores ver um histórico de ações administrativas no servidor + view_dashboard: Ver Painel de Controlo + view_dashboard_description: Permite aos utilizadores aceder ao painel de controlo e várias métricas + view_devops: DevOps + view_devops_description: Permite aos utilizadores aceder aos painéis de controlo do Sidekiq e pgHero + title: Funções rules: add_new: Adicionar regra delete: Eliminar @@ -1541,6 +1611,87 @@ pt-PT: tags: does_not_match_previous_name: não coincide com o nome anterior terms: + body_html: | +

    Política de privacidade

    +

    Que informação nós recolhemos?

    + +
      +
    • Informação básica da conta: Ao registar-se neste servidor, pode ser-lhe pedido que indique um nome de utilizador, um endereço de e-mail e uma palavra-chave. Pode ainda incluir informações adicionais no seu perfil, tais como um nome a exibir e biografia, e carregar uma imagem de perfil e imagem de cabeçalho. O nome de utilizador, nome a exibir, a biografia, a imagem de perfil e a imagem de cabeçalho são sempre listados publicamente.
    • +
    • Publicações, seguimento e outra informação pública: A lista de pessoas que segue é pública, o mesmo é verdade para os seus seguidores. Quando publica uma mensagem, a data e a hora são guardados, tal como a aplicação a partir da qual a mensagem foi enviada. As mensagens podem conter anexos de media, tais como fotografias ou vídeos. Publicações públicas e não listadas são acessíveis publicamente. Quando destaca uma publicação no seu perfil, isso é também informação disponível publicamente. As suas publicações são enviadas aos seus seguidores, em alguns casos isso significa que elas são enviadas para servidores diferentes onde são guardadas cópias. Quando elimina publicações, isso também é enviado para os teus seguidores. A ação de partilhar ou adicionar uma publicação aos favoritos é sempre pública.
    • +
    • Publicações diretas e exclusivas para seguidores: Todas as publicações são guardadas e processadas no servidor. Publicações exclusivas para seguidores são enviadas para os teus seguidores e para os utilizadores nelas mencionados. As publicações diretas são enviadas apenas para os utilizadores nelas mencionados. Em alguns casos isso significa que são enviadas para diferentes servidores onde são guardadas cópias. Nós fazemos um grande esforço para limitar o acesso a estas publicações aos utilizadores autorizados, mas outros servidores podem falhar neste objetivo. Por isso, deve rever os servidores a que os seus seguidores pertencem. Pode ativar uma opção para aprovar e rejeitar manualmente novos seguidores nas configurações. Por favor, tenha em mente que os gestores do seu servidor e qualquer servidor que receba a publicação pode lê-la e que os destinatários podem fazer uma captura de tela, copiar ou partilhar a publicação. Não partilhe qualquer informação sensível no Mastodon.
    • +
    • IPs e outros metadados: Quando inicia sessão, nós guardamos o endereço de IP a partir do qual inicou sessão, tal como o nome do seu navegador. Todas as sessões estão disponíveis para verificação e revogação nas configurações. O último endereço de IP usado é guardado até 12 meses. Nós também podemos guardar registos de servidor, os quais incluem o endereço de IP de cada pedido dirigido ao nosso servidor.
    • +
    + +
    + +

    Para que utilizamos a sua informação?

    + +

    Qualquer informação que recolhemos sobre sí pode ser utilizada dos seguintes modos:

    + +
      +
    • Para prover a funcionalidade central do Mastodon. Só pode interagir com o conteúdo de outras pessoas e publicar o seu próprio conteúdo depois de ter iniciado sessão. Por exemplo, pode seguir outras pessoas para veres as suas publicações na sua cronologia inicial personalizada.
    • +
    • Para ajudar na moderação da comunidade, por exemplo, para comparar o seu endereço IP com outros conhecidos, para determinar a fuga ao banimento ou outras violações.
    • +
    • O endereço de e-mail que fornece pode ser utilizado para lhe enviar informações e/ou notificações sobre outras pessoas que estão a interagir com o seu conteúdo ou a enviar-lhe mensagens, para responder a inquéritos e/ou outros pedidos ou questões.
    • +
    + +
    + +

    Como protegemos a sua informação?

    + +

    Implementamos uma variedade de medidas para garantir a segurança da sua informação pessoal quando introduz, submete ou acede à mesma. Entre outras coisas, a sua sessão de navegação, tal como o tráfego entre as tuas aplicações e a API, estão seguras por SSL e a sua palavra-passe é codificada utilizando um forte algoritmo de sentido único. Pode activar a autenticação em duas etapas para aumentar ainda mais a segurança do acesso à sua conta.

    + +
    + +

    >Qual é a nossa política de retenção de dados?

    + +

    Faremos o nosso melhor esforço para:

    + +
      +
    • Reter registos do servidor contendo o endereço de IP de todos os pedidos feitos a este servidor, considerando que estes registos não sejam guardados por mais de 90 dias.
    • +
    • Reter os endereços de IP associados aos utilizadores registados durante um período que não ultrapasse os 12 meses.
    • +
    + +

    Pode requer e descarregar um ficheiro com o seu conteúdo, incluindo as suas publicações, os ficheiros multimédia, a imagem de perfil e a imagem de cabeçalho.

    + +

    Pode eliminar a sua conta de modo irreversível a qualquer momento.

    + +
    + +

    Utilizamos cookies?

    + +

    Sim. Cookies são pequenos ficheiros que um site ou o seu fornecedor de serviço transfere para o disco rígido do seu computador através do seu navegador (se você o permitir). Esses cookies possibilitam ao site reconhecer o seu navegador e, se você tiver uma conta registada, associá-lo a ela.

    + +

    Nós usamos os cookies para compreender e guardar as suas preferências para visitas futuras.

    + +
    + +

    Divulgamos alguma informação para entidades externas?

    + +

    Nós não vendemos, trocamos ou transferimos de qualquer modo a sua informação pessoal que seja identificável para qualquer entidade externa. Isto não inclui entindades terceiras de confiança que nos ajudam a manter o nosso site, conduzir o nosso negócio ou prestar-lhe este serviço, desde que essas entendidades concordem em manter essa informação confidencial. Poderemos também revelar a sua informação quando acreditarmos que isso é o apropriado para cumprir a lei, forçar a aplicação dos nossos termos de serviço ou proteger os direitos, propriedade e segurança, nossos e de outrem.

    + +

    O seu conteúdo público pode ser descarregado por outros servidores na rede. As suas publicações públicas e exclusivas para os seus seguidores são enviadas para os servidores onde os seus seguidores residem e as mensagens diretas são entregues aos servidores dos seus destinatários, no caso desses seguidores ou destinatários residirem num servidor diferente deste.

    + +

    Quando autoriza uma aplicação a utilizar a sua conta, dependendo da abrangência das permissões que aprova, ela pode ter acesso à informação pública do seu perfil, à lista de quem segue, aos seus seguidores, às suas listas, a todas as suas publicações e aos seus favoritos. As aplicações nunca terão acesso ao seu endereço de e-mail ou à sua palavra-passe.

    + +
    + +

    Utilização do site por crianças

    + +

    Se este servidor estiver na UE ou no EEE: O nosso site, produtos e serviços são todos dirigidos a pessoas que tenham, pelo menos, 16 anos de idade. Se você tem menos de 16 anos de idade, em concordância com os requisitos da GDPR (General Data Protection Regulation) não utilize este site.

    + +

    Se este servidor estiver nos EUA: O nosso site, produtos e serviços são todos dirigidos a pessoas que tenham, pelo menos, 13 anos de idade. Se você tem menos de 13 anos de idade, em concordância com os requisitos da COPPA (Children's Online Privacy Protection Act) não utilize este site.

    + +

    Os requisitos legais poderão ser diferentes se este servidor estiver noutra jurisdição.

    + +
    + +

    Alterações à nossa Política de Privacidade

    + +

    Se decidirmos alterar a nossa política de privacidade, iremos publicar essas alterações nesta página.

    + +

    Este documento é CC-BY-SA. Ele foi actualizado pela última vez em 26 de Maio 2022.

    + +

    Originalmente adaptado de Discourse privacy policy.

    title: "%{instance} Termos de Serviço e Política de Privacidade" themes: contrast: Mastodon (Elevado contraste) diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 515636d35..7cdf1f0c7 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -516,6 +516,7 @@ ru: comment: Внутренняя заметка policies: reject_media: Отклонить медиа + reject_reports: Отклонять жалобы silence: Лимит suspend: Приостановить policy: Политика diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index 81fd117f7..f13624403 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -96,6 +96,13 @@ ca: name: Només pots canviar la caixa de les lletres, per exemple, per fer-la més llegible user: chosen_languages: Quan estigui marcat, només es mostraran les publicacions en les llengües seleccionades en les línies de temps públiques + role: El rol controla quines permissions té l'usuari + user_role: + color: Color que s'utilitzarà per al rol a tota la interfície d'usuari, com a RGB en format hexadecimal + highlighted: Això torno el rol visibile publicament + name: Nom públic del rol, si el rol està configurat per a ser mostrat com a insígnia + permissions_as_keys: Els usuaris amb aquest rol tingran accés a... + position: El rol superior decideix la resolució de conflictes en certes situacions. Certes accions només es poden realitzar amb rols amb menor prioritat webhook: events: Selecciona esdeveniments a enviar url: On els esdeveniments seran enviats @@ -232,6 +239,14 @@ ca: name: Etiqueta trendable: Permet que aquesta etiqueta aparegui en les tendències usable: Permetre a les publicacions emprar aquesta etiqueta + user: + role: Rol + user_role: + color: Color de la insígnia + highlighted: Motra el rol com a insígnia en el perfil dels usuaris + name: Nom + permissions_as_keys: Permisos + position: Prioritat webhook: events: Esdeveniments activats url: URL del extrem diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index 110a13c76..bc84e0f39 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -228,6 +228,8 @@ cs: user: role: Role user_role: + color: Barva odznaku + highlighted: Zobrazit roli jako odznak na profilech uživatelů name: Název permissions_as_keys: Oprávnění position: Priorita diff --git a/config/locales/simple_form.cy.yml b/config/locales/simple_form.cy.yml index 77b46ad2b..b0217cfe3 100644 --- a/config/locales/simple_form.cy.yml +++ b/config/locales/simple_form.cy.yml @@ -73,6 +73,7 @@ cy: labels: account: fields: + name: Label value: Cynnwys account_alias: acct: Enw'r hen gyfrif @@ -89,6 +90,7 @@ cy: types: disable: Analluogi none: Gwneud dim + sensitive: Sensitif silence: Tawelwch suspend: Dileu data cyfrif warning_preset_id: Defnyddiwch ragnod rhag rhybudd @@ -107,6 +109,7 @@ cy: confirm_password: Cadarnhau cyfrinair context: Hidlo cyd-destunau current_password: Cyfrinair presennol + data: Data discoverable: Rhestrwch y cyfrif hwn ar y cyfeiriadur display_name: Enw arddangos email: Cyfeiriad e-bost @@ -149,6 +152,7 @@ cy: setting_use_pending_items: Modd araf severity: Difrifoldeb sign_in_token_attempt: Cod dioelwch + title: Teitl type: Modd mewnforio username: Enw defnyddiwr username_or_email: Enw defnyddiwr neu e-bost @@ -166,6 +170,8 @@ cy: invite_request: text: Pam hoffech ymuno? ip_block: + comment: Sylw + ip: IP severity: Rheol notification_emails: digest: Anfonwch e-byst crynhoi @@ -183,6 +189,11 @@ cy: name: Hashnod trendable: Gadewch i'r hashnod hwn ymddangos o dan dueddiadau usable: Caniatáu i tŵtiau ddefnyddio'r hashnod hwn + user: + role: Rôl + user_role: + name: Enw + permissions_as_keys: Caniatâd 'no': Na recommended: Argymhellwyd required: diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index cb80f7eaa..0c190f1b3 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -96,6 +96,13 @@ da: name: Kun bogstavtyper (store/små) kan ændres, eksempelvis for at gøre det mere læsbart user: chosen_languages: Når markeret, vil kun indlæg på de valgte sprog fremgå på offentlige tidslinjer + role: Rollen styrer, hvilke tilladelser brugeren har + user_role: + color: Farven, i RGB hex-format, der skal bruges til rollen i hele UI'en + highlighted: Dette gør rollen offentligt synlig + name: Offentligt rollennavn, hvis rollen er opsat til fremstå som et badge + permissions_as_keys: Brugere med denne rolle vil kunne tilgå... + position: Højere rolle bestemmer konfliktløsning i visse situationer. Visse handlinger kan kun udføres på roller med lavere prioritet webhook: events: Vælg begivenheder at sende url: Hvor begivenheder sendes til @@ -232,6 +239,14 @@ da: name: Hashtag trendable: Tillad visning af dette hashtag under trends usable: Tillad indlæg at benytte dette hashtag + user: + role: Rolle + user_role: + color: Badge-farve + highlighted: Vis rolle som badge på brugerprofiler + name: Navn + permissions_as_keys: Tilladelser + position: Prioritet webhook: events: Aktive begivenheder url: Endepunkts-URL diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml index 2175ab571..30ea0f4be 100644 --- a/config/locales/simple_form.eo.yml +++ b/config/locales/simple_form.eo.yml @@ -35,27 +35,28 @@ eo: current_password: Pro sekuraj kialoj, bonvolu enigi la pasvorton de la nuna konto current_username: Por konfirmi, bonvolu enigi la uzantnomon de la nuna konto digest: Sendita nur post longa tempo de neaktiveco, kaj nur se vi ricevis personan mesaĝon en via foresto - email: Vi ricevos konfirman retmesaĝon + email: Vi ricevos retpoŝtaĵon de konfirmo fields: Vi povas havi ĝis 4 tabelajn elementojn en via profilo header: Formato PNG, GIF aŭ JPG. Ĝis %{size}. Estos malgrandigita al %{dimensions}px inbox_url: Kopiu la URL de la ĉefpaĝo de la ripetilo, kiun vi volas uzi - irreversible: Elfiltritaj mesaĝoj malaperos por ĉiam, eĉ se la filtrilo estas poste forigita - locale: La lingvo de la uzant-interfaco, retmesaĝoj kaj puŝ-sciigoj + irreversible: La filtritaj mesaĝoj malaperos por eterne, eĉ se la filtrilo estas forigita poste + locale: La lingvo de la fasado, de retpoŝtaĵoj, kaj de sciigoj locked: Vi devos aprobi ĉiun peton de sekvado mane password: Uzu almenaŭ 8 signojn phrase: Estos provita senzorge pri la uskleco de teksto aŭ averto pri enhavo de mesaĝo scopes: Kiujn API-ojn la aplikaĵo permesiĝos atingi. Se vi elektas supran amplekson, vi ne bezonas elekti la individuajn. setting_aggregate_reblogs: Ne montri novajn plusendojn de mesaĝoj lastatempe plusenditaj (nur efikas al nove ricevitaj plusendoj) - setting_default_sensitive: Tiklaj aŭdovidaĵoj estas defaŭlte kaŝita kaj povas esti malkiŝita per klako - setting_display_media_default: Kaŝi aŭdovidaĵojn markitajn kiel tiklaj - setting_display_media_hide_all: Ĉiam kaŝi ĉiujn aŭdovidaĵojn - setting_display_media_show_all: Ĉiam montri aŭdovidaĵojn markitajn kiel tiklaj - setting_hide_network: Tiuj, kiujn vi sekvas, kaj tiuj, kiuj sekvas vin ne estos videblaj en via profilo + setting_always_send_emails: Normale, la sciigoj per retpoŝto ne estos senditaj kiam vi uzas Mastodon aktive + setting_default_sensitive: La tiklaj aŭdovidaĵoj estas kaŝitaj implicite, kaj povas esti montritaj per klako + setting_display_media_default: Kaŝi aŭdovidaĵojn markitajn kiel tikla + setting_display_media_hide_all: Ĉiam kaŝi la aŭdovidaĵojn + setting_display_media_show_all: Ĉiam montri la aŭdovidaĵojn + setting_hide_network: Tiuj kiujn vi sekvas, kaj tiuj kiuj sekvas vin estos kaŝitaj en via profilo setting_noindex: Influas vian publikan profilon kaj mesaĝajn paĝojn setting_show_application: La aplikaĵo, kiun vi uzas por afiŝi, estos montrita en la detala vido de viaj mesaĝoj setting_use_blurhash: Transirojn estas bazita sur la koloroj de la kaŝitaj aŭdovidaĵoj sed ne montri iun ajn detalon setting_use_pending_items: Kaŝi tempoliniajn ĝisdatigojn malantaŭ klako anstataŭ aŭtomate rulumi la fluon - username: Via uzantnomo estos unika ĉe %{domain} + username: Via uzantnomo estos unika en %{domain} whole_word: Kiam la vorto aŭ frazo estas nur litera aŭ cifera, ĝi estos uzata nur se ĝi kongruas kun la tuta vorto domain_allow: domain: Ĉi tiu domajno povos akiri datumon de ĉi tiu servilo kaj envenanta datumo estos prilaborita kaj konservita @@ -117,7 +118,7 @@ eo: text: Anonco defaults: autofollow: Inviti al sekvi vian konton - avatar: Profilbildo + avatar: Rolfiguro bot: Tio estas robota konto chosen_languages: Filtri lingvojn confirm_new_password: Konfirmi novan pasvorton @@ -154,7 +155,7 @@ eo: setting_delete_modal: Montri konfirman fenestron antaŭ ol forigi mesaĝon setting_disable_swiping: Malebligi svingajn movojn setting_display_media: Aŭdovidaĵa montrado - setting_display_media_default: Dekomenca + setting_display_media_default: Implicita setting_display_media_hide_all: Kaŝi ĉiujn setting_display_media_show_all: Montri ĉiujn setting_expand_spoilers: Ĉiam malfoldas mesaĝojn markitajn per averto pri enhavo diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml index 656599d94..d61666834 100644 --- a/config/locales/simple_form.es-AR.yml +++ b/config/locales/simple_form.es-AR.yml @@ -102,7 +102,7 @@ es-AR: highlighted: Esto hace que el rol sea públicamente visible name: Nombre público del rol, si el rol se establece para que se muestre como una insignia permissions_as_keys: Los usuarios con este rol tendrán acceso a… - position: Un rol más alto decide la resolución de conflictos en ciertas situaciones + position: Un rol más alto decide la resolución de conflictos en ciertas situaciones. Ciertas acciones sólo pueden llevarse a cabo en roles con prioridad inferior webhook: events: Seleccionar eventos para enviar url: Adónde serán enviados los eventos diff --git a/config/locales/simple_form.es-MX.yml b/config/locales/simple_form.es-MX.yml index b4c003593..582295abb 100644 --- a/config/locales/simple_form.es-MX.yml +++ b/config/locales/simple_form.es-MX.yml @@ -96,6 +96,12 @@ es-MX: name: Sólo se puede cambiar el cajón de las letras, por ejemplo, para que sea más legible user: chosen_languages: Cuando se marca, solo se mostrarán los toots en los idiomas seleccionados en los timelines públicos + role: El rol controla qué permisos tiene el usuario + user_role: + color: Color que se utilizará para el rol a lo largo de la interfaz de usuario, como RGB en formato hexadecimal + highlighted: Esto hace que el rol sea públicamente visible + name: Nombre público del rol, si el rol se establece para que se muestre como una insignia + permissions_as_keys: Los usuarios con este rol tendrán acceso a... webhook: events: Seleccionar eventos para enviar url: Donde los eventos serán enviados @@ -232,6 +238,14 @@ es-MX: name: Etiqueta trendable: Permitir que esta etiqueta aparezca bajo tendencias usable: Permitir a los toots usar esta etiqueta + user: + role: Rol + user_role: + color: Color de insignia + highlighted: Mostrar rol como insignia en perfiles de usuario + name: Nombre + permissions_as_keys: Permisos + position: Prioridad webhook: events: Eventos habilitados url: URL de Endpoint diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index b407e0581..cd390493c 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -102,7 +102,7 @@ es: highlighted: Esto hace que el rol sea públicamente visible name: Nombre público del rol, si el rol se establece para que se muestre como una insignia permissions_as_keys: Los usuarios con este rol tendrán acceso a... - position: Un rol más alto decide la resolución de conflictos en ciertas situaciones + position: Un rol superior decide la resolución de conflictos en ciertas situaciones. Ciertas acciones sólo pueden llevarse a cabo en roles con menor prioridad webhook: events: Seleccionar eventos para enviar url: Donde los eventos serán enviados diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index e9545cf08..d94238242 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -96,6 +96,13 @@ fr: name: Vous ne pouvez modifier que la casse des lettres, par exemple, pour le rendre plus lisible user: chosen_languages: Lorsque coché, seuls les messages dans les langues sélectionnées seront affichés sur les fils publics + role: Le rôle définit quelles autorisations a l'utilisateur⋅rice + user_role: + color: Couleur à attribuer au rôle dans l'interface, au format hexadécimal RVB + highlighted: Cela rend le rôle visible publiquement + name: Nom public du rôle, si le rôle est configuré pour être affiché avec un badge + permissions_as_keys: Les utilisateur·rice·s ayant ce rôle auront accès à … + position: Dans certaines situations, un rôle supérieur peut trancher la résolution d'un conflit. Mais certaines opérations ne peuvent être effectuées que sur des rôles ayant une priorité inférieure webhook: events: Sélectionnez les événements à envoyer url: Là où les événements seront envoyés @@ -232,6 +239,14 @@ fr: name: Hashtag trendable: Autoriser ce hashtag à apparaitre dans les tendances usable: Autoriser les messages à utiliser ce hashtag + user: + role: Rôle + user_role: + color: Couleur du badge + highlighted: Afficher le rôle avec un badge sur les profils des utilisateur·rice·s + name: Nom + permissions_as_keys: Autorisations + position: Priorité webhook: events: Événements activés url: URL du point de terminaison diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml index fdd58ebbc..0727fb97f 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -102,7 +102,7 @@ gl: highlighted: Esto fai o rol públicamente visible name: Nome público do rol, se o rol se mostra como unha insignia permissions_as_keys: As usuarias con este rol terá acceso a... - position: O rol de maior rango decide en situación de resolución de conflitos + position: O rol superior decide nos conflitos en certas situacións. Algunhas accións só poden aplicarse sobre roles cunha prioridade menor webhook: events: Elixir eventos a enviar url: A onde se enviarán os eventos diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index 6152a87f1..d0ae814e6 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -96,6 +96,13 @@ hu: name: Csak a kis/nagybetűséget változtathatod meg, pl. hogy olvashatóbb legyen user: chosen_languages: Ha aktív, csak a kiválasztott nyelvű bejegyzések jelennek majd meg a nyilvános idővonalon + role: A szerep szabályozza, hogy a felhasználó milyen jogosultságokkal rendelkezik + user_role: + color: A szerephez használandó szín mindenhol a felhasználói felületen, hexa RGB formátumban + highlighted: Ez nyilvánosan láthatóvá teszi a szerepet + name: A szerep nyilvános neve, ha a szerepet úgy állították be, hogy jelvényként látható legyen + permissions_as_keys: A felhasználók ezzel a szereppel elérhetik a... + position: A magasabb szerepkör oldja fel az ütközéseket bizonyos helyzetekben. Bizonyos műveleteket csak alacsonyabb prioritású szerepkörrel lehet elvégezni. webhook: events: Válaszd ki a küldendő eseményeket url: Ahová az eseményket küldjük @@ -232,6 +239,14 @@ hu: name: Hashtag trendable: A hashtag megjelenhet a felkapottak között usable: Bejegyzések használhatják ezt a hashtaget + user: + role: Szerep + user_role: + color: Jelvény színe + highlighted: Szerep megjelenítése jelvényként a felhasználói profilokon + name: Név + permissions_as_keys: Engedélyek + position: Prioritás webhook: events: Engedélyezett események url: Végponti URL diff --git a/config/locales/simple_form.io.yml b/config/locales/simple_form.io.yml index c6831eac2..743c8964a 100644 --- a/config/locales/simple_form.io.yml +++ b/config/locales/simple_form.io.yml @@ -68,6 +68,11 @@ io: with_dns_records: Probo di rezolvar registri DNS di la domeno agesos e rezulti anke preventesos featured_tag: name: 'Vu forsan volas uzar 1 de co:' + 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_challenge: current_password: Vu eniras sekura areo imports: @@ -91,6 +96,13 @@ io: name: Vu povas nur chanjar literkaso, por exemplo, por kauzigar lu divenar plu lektebla user: chosen_languages: Kande marketigesis, nur posti en selektesis lingui montresos en publika tempolinei + role: Rolo dominacas permisi quon uzanto havas + user_role: + color: Koloro quo uzesas por rolo en tota UI, quale RGB kun hexformato + highlighted: Co kauzigas rolo divenar publike videbla + name: Publika nomo di ca rolo, se rolo ajustesas quale montresas quale insigno + permissions_as_keys: Uzanti kun ca rolo povas... + position: Plu alta rolo decidas problemsolvo en kelka situeso. Kelka agi povas nur eventar a roli kun plu basa prioreso webhook: events: Selektigez eventi por sendar url: Ibe eventi sendesos @@ -227,6 +239,14 @@ io: name: Hashtago trendable: Permisez ca hashtago aparar che tendenci usable: Permisez posti uzar ca hashtago + user: + role: Rolo + user_role: + color: Insignokoloro + highlighted: Montrez rolo quale insigno en uzantoprofili + name: Nomo + permissions_as_keys: Permisi + position: Prioreso webhook: events: Aktivigita eventi url: URL di finpunto diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml index d14673287..f0fd23d5e 100644 --- a/config/locales/simple_form.is.yml +++ b/config/locales/simple_form.is.yml @@ -96,6 +96,11 @@ is: name: Þú getur aðeins breytt stafstöði mill há-/lágstafa, til gæmis til að gera þetta læsilegra user: chosen_languages: Þegar merkt er við þetta, birtast einungis færslur á völdum tungumálum á opinberum tímalínum + role: Hlutverk stýrir hvaða heimildir notandinn hefur + user_role: + highlighted: Þetta gerir hlutverk sýnilegt opinberlega + name: Opinbert heiti hlutverks, ef birta á hlutverk sem merki + permissions_as_keys: Notendur með þetta hlutverk munu hafa aðgang að... webhook: events: Veldu atburði sem á að senda url: Hvert atburðir verða sendir @@ -235,6 +240,8 @@ is: user: role: Hlutverk user_role: + color: Litur merkis + highlighted: Birta hlutverk sem merki á notandaauðkenni name: Nafn permissions_as_keys: Heimildir position: Forgangur diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml index 668474ff9..d2ffda888 100644 --- a/config/locales/simple_form.it.yml +++ b/config/locales/simple_form.it.yml @@ -102,7 +102,7 @@ it: highlighted: Rende il ruolo visibile name: Nome pubblico del ruolo, se il ruolo è impostato per essere visualizzato come distintivo permissions_as_keys: Gli utenti con questo ruolo avranno accesso a... - position: Il ruolo più elevato decide la risoluzione dei conflitti in determinate situazioni + position: Un ruolo più alto decide la risoluzione dei conflitti in determinate situazioni. Alcune azioni possono essere eseguite solo su ruoli con priorità più bassa webhook: events: Seleziona eventi da inviare url: Dove gli eventi saranno inviati diff --git a/config/locales/simple_form.ku.yml b/config/locales/simple_form.ku.yml index 139d46a2d..ea6db0972 100644 --- a/config/locales/simple_form.ku.yml +++ b/config/locales/simple_form.ku.yml @@ -93,6 +93,8 @@ ku: name: Tîpan, mînak ji bo ku bêhtir paknivîs bibe, tenê rewşa tîpên girdek/hûrdek dikarî biguherînî user: chosen_languages: Dema were nîşankirin, tenê parvekirinên bi zimanên hilbijartî dê di rêzikên giştî de werin nîşandan + user_role: + position: Rola bilind di hinek rewşan de biryara çareserkirina nakokiyan dide. Hinej çalakî tenê dikarin li ser rolên bi pêşanînek kêmtir bêne kirin webhook: events: Bûyeran hilbijêre bo şandinê url: Cihê ku bûyer wê werin şandin diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml index 325c421cc..ad8f3bd4d 100644 --- a/config/locales/simple_form.lv.yml +++ b/config/locales/simple_form.lv.yml @@ -102,7 +102,7 @@ lv: highlighted: Tas padara lomu publiski redzamu name: Lomas publiskais nosaukums, ja loma ir iestatīta rādīšanai kā emblēma permissions_as_keys: Lietotājiem ar šo lomu būs piekļuve... - position: Augstāka loma nosaka konfliktu risināšanu noteiktās situācijās + position: What is "alower"? webhook: events: Atlasi nosūtāmos notikums url: Kur notikumi tiks nosūtīti diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index cb0025f21..00f8e762c 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -154,6 +154,7 @@ nl: phrase: Trefwoord of zinsdeel setting_advanced_layout: Geavanceerde webomgeving inschakelen setting_aggregate_reblogs: Boosts in tijdlijnen groeperen + setting_always_send_emails: Altijd e-mailmeldingen verzenden setting_auto_play_gif: Speel geanimeerde GIF's automatisch af setting_boost_modal: Vraag voor het boosten van een bericht een bevestiging setting_crop_images: Afbeeldingen bijsnijden tot 16x9 in berichten op tijdlijnen @@ -225,6 +226,13 @@ nl: name: Hashtag trendable: Toestaan dat deze hashtag onder trends te zien valt usable: Toestaan dat deze hashtag in berichten gebruikt mag worden + user: + role: Rol + user_role: + color: Kleur van badge + name: Naam + permissions_as_keys: Rechten + position: Prioriteit webhook: url: Eindpunt URL 'no': Nee diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index 8a9b6a905..1db60d3fa 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -96,6 +96,8 @@ pl: name: Możesz zmieniać tylko wielkość liter, np. aby były bardziej widoczne user: chosen_languages: Jeżeli zaznaczone, tylko wpisy w wybranych językach będą wyświetlane na publicznych osiach czasu + user_role: + position: Wyższa rola decyduje o rozwiązywaniu konfliktów w pewnych sytuacjach. Niektóre działania mogą być wykonywane tylko na rolach z niższym priorytetem webhook: events: Wybierz zdarzenia do wysłania url: Dokąd będą wysłane zdarzenia diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml index 2ce3e1542..e77457f94 100644 --- a/config/locales/simple_form.pt-PT.yml +++ b/config/locales/simple_form.pt-PT.yml @@ -96,6 +96,13 @@ pt-PT: name: Só pode alterar a capitalização das letras, por exemplo, para torná-las mais legíveis user: chosen_languages: Quando seleccionado, só publicações nas línguas escolhidas serão mostradas nas cronologias públicas + role: A função controla que permissões o utilizador tem + user_role: + color: Cor a ser utilizada para a função em toda a interface de utilizador, como RGB no formato hexadecimal + highlighted: Isto torna a função visível publicamente + name: Nome público da função, se a função for definida para ser exibida como um distintivo + permissions_as_keys: Utilizadores com esta função terão acesso a... + position: Função mais alta decidem a resolução de conflitos em certas situações. Certas ações só podem ser executadas em funções com uma menor prioridade webhook: events: Selecione os eventos a enviar url: Para onde os eventos serão enviados @@ -232,6 +239,14 @@ pt-PT: name: Hashtag trendable: Permitir que esta hashtag apareça em destaque usable: Permitir que toots utilizem esta hashtag + user: + role: Função + user_role: + color: Cor do distintivo + highlighted: Exibir a função como distintivo nos perfis de utilizador + name: Nome + permissions_as_keys: Permissões + position: Prioridade webhook: events: Eventos ativados url: URL do Endpoint diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml index f86bca016..ffe41dd14 100644 --- a/config/locales/simple_form.ru.yml +++ b/config/locales/simple_form.ru.yml @@ -100,6 +100,7 @@ ru: user_role: color: Цвет, который будет использоваться для роли в интерфейсе (UI), как RGB в формате HEX permissions_as_keys: Пользователи с этой ролью будут иметь доступ... + position: Повышение роли разрешают конфликты интересов в некоторых ситуациях. Некоторые действия могут выполняться только на ролях с более низким приоритетом webhook: events: Выберите события для отправки url: Куда события будут отправляться diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml index 698a3152e..640d2c27e 100644 --- a/config/locales/simple_form.sl.yml +++ b/config/locales/simple_form.sl.yml @@ -102,7 +102,7 @@ sl: highlighted: S tem je vloga javno vidna name: Javno ime vloge, če naj bo vloga prikazana kot priponka permissions_as_keys: Uporabniki s to vlogo bodo imeli dostop do ... - position: Višja vloga odloča o razrešitvi sporov v določenih situacijah + position: Višja vloga se odloča o razrešitvi sporov v določenih situacijah. Določena dejanja lahko izvede le na vlogah z nižjo prioriteto webhook: events: Izberite dogodke za pošiljanje url: Kam bodo poslani dogodki diff --git a/config/locales/simple_form.sq.yml b/config/locales/simple_form.sq.yml index 0e2fb4ab8..fd17afb0e 100644 --- a/config/locales/simple_form.sq.yml +++ b/config/locales/simple_form.sq.yml @@ -68,6 +68,11 @@ sq: with_dns_records: Do të bëhet një përpjekje për ftillimin e zërave DNS të përkatësisë së dhënë dhe do të futen në listë bllokimesh edhe përfundimet featured_tag: name: 'Mund të doni të përdorni një nga këto:' + filters: + action: Zgjidhni cili veprim të kryhet, kur një postim ka përputhje me një filtër + actions: + hide: Fshihe plotësisht lëndën e filtruar, duke u sjellë sikur të mos ekzistonte + warn: Fshihe lëndën e filtruar pas një sinjalizimi që përmend titullin e filtrit form_challenge: current_password: Po hyni në një zonë të sigurt imports: @@ -91,6 +96,13 @@ sq: name: Mund të ndryshoni shkronjat vetëm nga të mëdha në të vogla ose anasjelltas, për shembull, për t’i bërë më të lexueshme user: chosen_languages: Në iu vëntë shenjë, te rrjedha kohore publike do të shfaqen vetëm mesazhe në gjuhët e përzgjedhura + role: Roli kontrollon cilat leje ka përdoruesi + user_role: + color: Ngjyrë për t’u përdorur për rolin nëpër UI, si RGB në format gjashtëmbëdhjetësh + highlighted: Kjo e bën rolin të dukshëm publikisht + name: Emër publik për rolin, nëse roli është ujdisur të shfaqet si një stemë + permissions_as_keys: Përdoruest me këtë rol do të mund të… + position: Role më të lartë vendosin zgjidhje përplasje në disa raste. Disa veprime mund të kryhen vetëm mbi role të një shkalle më të ulët webhook: events: Përzgjidhni akte për dërgim url: Ku do të dërgohen aktet @@ -181,6 +193,7 @@ sq: setting_use_pending_items: Mënyra ngadalë severity: Rëndësi sign_in_token_attempt: Kod sigurie + title: Titull type: Lloj importimi username: Emër përdoruesi username_or_email: Emër përdoruesi ose Email @@ -189,6 +202,10 @@ sq: with_dns_records: Përfshi zëra MX dhe IP-ra të përkatësisë featured_tag: name: Hashtag + filters: + actions: + hide: Fshihe plotësisht + warn: Fshihe me një sinjalizim interactions: must_be_follower: Blloko njoftime nga jo-ndjekës must_be_following: Blloko njoftime nga persona që s’i ndiqni @@ -222,6 +239,14 @@ sq: name: Hashtag trendable: Lejoje këtë hashtag të shfaqet në prirje usable: Lejoji mesazhet të përdorin këtë hashtag + user: + role: Rol + user_role: + color: Ngjyrë steme + highlighted: Shfaqe rolin si një stemë në profile përdoruesish + name: Emër + permissions_as_keys: Leje + position: Përparësi webhook: events: Akte të aktivizuar url: URL pikëmbarimi diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index a33e87593..3de5753e1 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -175,6 +175,7 @@ th: setting_use_pending_items: โหมดช้า severity: ความรุนแรง sign_in_token_attempt: รหัสความปลอดภัย + title: ชื่อเรื่อง type: ชนิดการนำเข้า username: ชื่อผู้ใช้ username_or_email: ชื่อผู้ใช้หรืออีเมล @@ -216,6 +217,11 @@ th: name: แฮชแท็ก trendable: อนุญาตให้แฮชแท็กนี้ปรากฏภายใต้แนวโน้ม usable: อนุญาตให้โพสต์ใช้แฮชแท็กนี้ + user: + role: บทบาท + user_role: + name: ชื่อ + permissions_as_keys: สิทธิอนุญาต webhook: url: URL ปลายทาง 'no': ไม่ diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml index 93d0c20f0..d1124e3b6 100644 --- a/config/locales/simple_form.tr.yml +++ b/config/locales/simple_form.tr.yml @@ -102,7 +102,6 @@ tr: highlighted: Bu rolü herkese açık hale getirir name: Rolün, eğer rozet olarak görüntülenmesi ayarlandıysa kullanılacak herkese açık ismi permissions_as_keys: Bu role sahip kullanıcıların şunlara erişimi var... - position: Belirli durumlarda uyuşmazlığın çözümünde daha yüksek rol belirleyicidir webhook: events: Gönderilecek etkinlikleri seçin url: Olayların gönderileceği yer diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index 8763e0226..ec43655e4 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -96,6 +96,13 @@ uk: name: Тут ви можете лише змінювати регістр літер, щоб підвищити читабельність user: chosen_languages: У глобальних стрічках будуть відображатися дмухи тільки обраними мовами + role: Роль визначає права користувача + user_role: + color: Колір, який буде використовуватися для ролі у всьому інтерфейсі, як RGB у форматі hex + highlighted: Це робить роль видимою всім + name: Загальнодоступна назва ролі, якщо роль налаштована бути показаною у вигляді відзнаки + permissions_as_keys: Користувачі з цією роллю матимуть доступ до... + position: Вища роль розв'язує конфлікти у певних ситуаціях. Певні дії можуть бути виконані лише щодо ролей з нижчим пріоритетом webhook: events: Оберіть події для надсилання url: Куди надсилатимуться події @@ -232,6 +239,14 @@ uk: name: Хештеґ trendable: Дозволити появу цього хештеґа у списку популярних хештеґів usable: Дозволити дмухам використовувати цей хештеґ + user: + role: Роль + user_role: + color: Колір відзнаки + highlighted: Показувати роль у вигляді відзнаки у профілях користувачів + name: Назва + permissions_as_keys: Дозволи + position: Пріоритет webhook: events: Увімкнені події url: URL кінцевої точки diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml index 915bb4d24..7bc43a0b0 100644 --- a/config/locales/simple_form.vi.yml +++ b/config/locales/simple_form.vi.yml @@ -102,7 +102,7 @@ vi: highlighted: Vai trò sẽ hiển thị công khai name: Tên công khai của vai trò, nếu vai trò được đặt để hiển thị dưới dạng huy hiệu permissions_as_keys: Người dùng có vai trò này sẽ có quyền truy cập vào... - position: Vai trò cao hơn quyết định việc giải quyết xung đột trong một số tình huống nhất định + position: Vai trò cao hơn sẽ có quyền quyết định xung đột trong các tình huống. Các vai trò có mức độ ưu tiên thấp hơn chỉ có thể thực hiện một số hành động nhất định webhook: events: Chọn sự kiện để gửi url: Nơi những sự kiện được gửi đến diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index 0526df527..a3e29b374 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -102,7 +102,7 @@ zh-TW: highlighted: 這會讓角色公開可見 name: 角色的公開名稱,如果角色設定為顯示為徽章 permissions_as_keys: 有此角色的使用者將有權存取…… - position: 更高的角色決定在某些情況下解決衝突 + position: 在某些情況下,衝突的解決方式由更高階的角色決定。某些動作只能由優先程度較低的角色執行 webhook: events: 請選擇要傳送的事件 url: 事件會被傳送至何處 diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 5eaf0afee..e4c510308 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -686,6 +686,7 @@ sl: two: "%{count} uporabnika" categories: administration: Upravljanje + devops: Razvojniki invites: Povabila moderation: Moderiranje special: Posebno @@ -712,24 +713,33 @@ sl: manage_appeals_description: Omogoča uporabnikom, da pregledajo pritožbe glede dejanj moderiranja manage_blocks: Upravljaj blokirano manage_blocks_description: Omogoča uporabnikom, da blokirajo ponudnike e-pošte in naslove IP + manage_custom_emojis: Upravljaj emodžije po meri + manage_custom_emojis_description: Omogoča uporabnikom, da upravljajo emodžije po meri na strežniku + manage_federation: Upravljaj beli seznam + manage_federation_description: Omogoča uporabnikom blokirati ali dovoljevati vstop na beli seznam z druimi domenami ter nadzirati dostavljivost manage_invites: Upravljaj vabila manage_invites_description: Omogoča uporabnikom, da brskajo in deaktivirajo povezave povabil manage_reports: Upravljaj poročila manage_reports_description: Omogoča uporabnikom, da pregledajo poročila in glede le-teh opravijo dejanja moderiranja manage_roles: Upravljaj vloge + manage_roles_description: Omogoča uporabnikom upravljati in dodeljevati vloge pod svojo manage_rules: Upravljaj pravila manage_rules_description: Omogoča uporabnikom, da spremenijo pravila strežnika manage_settings: Upravljaj nastavitve manage_settings_description: Omogoča uporabnikom, da spremenijo nastavitve spletišča manage_taxonomies: Upravljaj taksonomije + manage_taxonomies_description: Omogoča uporabnikom, da preverijo vsebino v trendu in posodobijo nastavitve ključnikov manage_user_access: Upravljaj dostop uporabnikov + manage_user_access_description: Omogoča uporabnikom, da onemogočijo drugim uporabnikom dvofazno overjanje, spremenijo njihov e-naslov ter ponastavijo njihovo geslo manage_users: Upravljaj uporabnike manage_users_description: Omogoča uporabnikom, da vidijo podrobnosti drugih uporabnikov in nad njimi izvedejo dejanja moderiranja manage_webhooks: Upravljaj spletne zanke manage_webhooks_description: Omogoča uporabnikom, da vzpostavijo nove spletne zanke za skrbniške dogodke + view_audit_log: Pokaži revizijski zapisnik view_audit_log_description: Omogoča, da uporabnik vidi zgodovino skrbniških opravil na strežniku view_dashboard: Pokaži nadzorno ploščo view_dashboard_description: Omogoča uporabnikom, da dostopajo do nadzorne plošče in različnih meritev + view_devops: Razvojniki view_devops_description: Omogoča uporabnikom, da dostopajo do nadzornih plošč Sidekiq in phHero title: Vloge rules: diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 748072c29..8a91cc6f4 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -103,11 +103,17 @@ sq: avatar: Avatar by_domain: Përkatësi change_email: + changed_msg: Email-i u ndryshua me sukses! current_email: Email-i i tanishëm label: Ndrysho email-in new_email: Email i ri submit: Ndrysho email-in title: Ndrysho email-in për %{username} + change_role: + changed_msg: Roli u ndryshua me sukses! + label: Ndryshoni rol + no_role: Pa rol + title: Ndryshoni rolin për %{username} confirm: Ripohojeni confirmed: U ripohua confirming: Po ripohohet @@ -151,6 +157,7 @@ sq: active: Aktiv all: Krejt pending: Pezull + silenced: I kufizuar suspended: Të pezulluara title: Moderim moderation_notes: Shënime moderimesh @@ -158,6 +165,7 @@ sq: most_recent_ip: IP-ja më e freskët no_account_selected: S’u ndryshua ndonjë llogari, ngaqë s’u përzgjodh ndonjë no_limits_imposed: Pa imponim kufijsh + no_role_assigned: Pa rol të caktuar not_subscribed: Jo i pajtuar pending: Në pritje të shqyrtimit perform_full_suspension: Pezulloje @@ -184,6 +192,7 @@ sq: reset: Riktheje te parazgjedhjet reset_password: Ricaktoni fjalëkalimin resubscribe: Ripajtohuni + role: Rol search: Kërkoni search_same_email_domain: Të tjerë përdorues me të njëjtën përkatësi email-i search_same_ip: Të tjerë përdorues me të njëjtën IP @@ -639,6 +648,65 @@ sq: unresolved: Të pazgjidhur updated_at: U përditësua më view_profile: Shihni profilin + roles: + add_new: Shtoni rol + assigned_users: + one: "%{count} përdorues" + other: "%{count} përdorues" + categories: + administration: Administrim + invites: Ftesa + moderation: Moderim + special: Special + delete: Fshije + description_html: Me role përdoruesi, mund të përshtatni cilat funksione dhe fusha të Mastodon-it mund të përdorin përdoruesit tuaj. + edit: Përpunoni rolin e '%{name}' + everyone: Leje parazgjedhje + everyone_full_description_html: Ky është roli bazë që prek krejt përdoruesit, madje edhe ata pa një rol të caktuar. Krejt rolet e tjerë trashëgojnë lejet prej tij. + permissions_count: + one: "%{count} leje" + other: "%{count} leje" + privileges: + administrator: Përgjegjës + administrator_description: Përdoruesit me këtë leje do të anashkalojnë çdo leje + delete_user_data: Të Fshijë të Dhëna Përdoruesi + delete_user_data_description: U lejon përdoruesve të fshijnë pa humbur kohë të dhëna përdoruesish të tjerë + invite_users: Të Ftojë Përdorues + invite_users_description: U lejon përdruesve të ftojë te shërbyesi persona të rinj + manage_announcements: Të Administrojë Njoftime + manage_announcements_description: U lejon përdoruesve të administrojë njoftime te shërbyesi + manage_appeals: Të Administrojë Apelime + manage_appeals_description: U lejon përdoruesve të shqyrtojnë apelime kundër veprimesh moderimi + manage_blocks: Të Administrojë Bllokim + manage_blocks_description: U lejon përdoruesve të bllokojnë shërbime email dhe adresa IP + manage_custom_emojis: Të Administrojë Emoxhi Vetjake + manage_custom_emojis_description: U lejon përdoruesve të administrojnë te shërbyesi emoxhi vetjake + manage_federation: Të Administrjë Federim + manage_federation_description: U lejon përdoruesve të bllokojnë ose lejojnë federim me përkatësi të tjera dhe të kontrollojnë shpërndarjen + manage_invites: Të Administrojë Ftesa + manage_invites_description: U lejon përdoruesve të shfletojnë dhe çaktivizojnë lidhje ftesash + manage_reports: Të Administrojë Raportime + manage_reports_description: U lejon përdruesve të shqyrtojnë raportime dhe kryejnë veprime moderimi ndaj tyre + manage_roles: Të Administrojë Role + manage_roles_description: U lejon përdoruesve të administrojnë dhe caktojnë role nën të tyret + manage_rules: Të Administrojë Rregulla + manage_rules_description: U lejon përdoruesve të ndryshojnë rregulla shërbyesi + manage_settings: Të Administrojë Rregullime + manage_settings_description: U lejon përdoruesve të ndryshojnë rregullime sajti + manage_taxonomies: Të Administrojë Klasifikime + manage_taxonomies_description: U lejon përdoruesve të shqyrtojnë lëndë në modë dhe të përditësojnë rregullime hashtag-ësh + manage_user_access: Të Administrojë Hyrje Përdoruesi + manage_user_access_description: U lejon përdoruesve të çaktivizojnë mirëfilltësim dyfaktorësh për përdorues të tjerë, të ndryshojnë adresa të tyret email dhe të ricaktojnë fjalëkalimet e tyre + manage_users: Të Administrojë Përdorues + manage_users_description: U lejon përdoruesve të shohin hollësi përdoruesish të tjerë dhe të kryejnë veprime moderimi mbi ta + manage_webhooks: Të Administrojë Webhook-e + manage_webhooks_description: U lejon përdoruesve të ujdisin webhook-e për veprime administrative + view_audit_log: Shihni Regjistër Auditimesh + view_audit_log_description: U lejon përdoruesve të shohin një historik veprimesh administrative te shërbyesi + view_dashboard: Shihni Pultin + view_dashboard_description: U lejon përdoruesve të hyjnë te pulti dhe shohin shifra të ndryshme matjesh + view_devops_description: U lejon përdoruesve të hyjnë në pultet Sidekiq dhe pgHero + title: Role rules: add_new: Shtoni rregull delete: Fshije @@ -852,6 +920,7 @@ sq: secret: E fshehtë nënshkrimesh status: Gjendje title: Webhook-ë + webhook: Webhook admin_mailer: new_appeal: actions: @@ -1101,14 +1170,24 @@ sq: public: Rrjedha kohore publike thread: Biseda edit: + add_keyword: Shtoni fjalëkyç + keywords: Fjalëkyçe title: Përpunoni filtër errors: + deprecated_api_multiple_keywords: Këta parametra s’mund të ndryshohen nga ky aplikacion, ngaqë aplikohen mbi më shumë se një fjalëkyç filtri. Përdorni një aplikacion më të ri, ose ndërfaqen web. invalid_context: Ose s’u dha fare, ose u dha kontekst i pavlefshëm index: + contexts: Filtra në %{contexts} delete: Fshije empty: S’keni filtra. + expires_in: Skadon për %{distance} + expires_on: Skadon më %{date} + keywords: + one: "%{count} fjalëkyç" + other: "%{count} fjalëkyçe" title: Filtra new: + save: Ruani filtër të ri title: Shtoni filtër të ri footer: developers: Zhvillues @@ -1227,6 +1306,8 @@ sq: copy_account_note_text: 'Ky përdorues ka ikur prej %{acct}, ja ku janë shënimet tuaja të mëparshme mbi të:' notification_mailer: admin: + report: + subject: "%{name} parashtroi një raportim" sign_up: subject: "%{name} u regjistrua" digest: diff --git a/config/locales/th.yml b/config/locales/th.yml index 996382543..d48d4ddb3 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -94,11 +94,17 @@ th: avatar: ภาพประจำตัว by_domain: โดเมน change_email: + changed_msg: เปลี่ยนอีเมลสำเร็จ! current_email: อีเมลปัจจุบัน label: เปลี่ยนอีเมล new_email: อีเมลใหม่ submit: เปลี่ยนอีเมล title: เปลี่ยนอีเมลสำหรับ %{username} + change_role: + changed_msg: เปลี่ยนบทบาทสำเร็จ! + label: เปลี่ยนบทบาท + no_role: ไม่มีบทบาท + title: เปลี่ยนบทบาทสำหรับ %{username} confirm: ยืนยัน confirmed: ยืนยันแล้ว confirming: กำลังยืนยัน @@ -142,6 +148,7 @@ th: active: ใช้งานอยู่ all: ทั้งหมด pending: รอดำเนินการ + silenced: จำกัดอยู่ suspended: ระงับอยู่ title: การควบคุม moderation_notes: หมายเหตุการควบคุม @@ -174,6 +181,7 @@ th: reset: รีเซ็ต reset_password: ตั้งรหัสผ่านใหม่ resubscribe: บอกรับใหม่ + role: บทบาท search: ค้นหา search_same_email_domain: ผู้ใช้อื่น ๆ ที่มีโดเมนอีเมลเดียวกัน search_same_ip: ผู้ใช้อื่น ๆ ที่มี IP เดียวกัน @@ -587,6 +595,23 @@ th: unresolved: ยังไม่ได้แก้ปัญหา updated_at: อัปเดตเมื่อ view_profile: ดูโปรไฟล์ + roles: + add_new: เพิ่มบทบาท + assigned_users: + other: "%{count} ผู้ใช้" + categories: + administration: การดูแล + invites: คำเชิญ + moderation: การควบคุม + special: พิเศษ + delete: ลบ + edit: แก้ไขบทบาท '%{name}' + everyone: สิทธิอนุญาตเริ่มต้น + permissions_count: + other: "%{count} สิทธิอนุญาต" + privileges: + manage_roles: จัดการบทบาท + title: บทบาท rules: add_new: เพิ่มกฎ delete: ลบ @@ -1017,12 +1042,20 @@ th: public: เส้นเวลาสาธารณะ thread: การสนทนา edit: + add_keyword: เพิ่มคำสำคัญ + keywords: คำสำคัญ title: แก้ไขตัวกรอง index: + contexts: กรองใน %{contexts} delete: ลบ empty: คุณไม่มีตัวกรอง + expires_in: หมดอายุใน %{distance} + expires_on: หมดอายุเมื่อ %{date} + keywords: + other: "%{count} คำสำคัญ" title: ตัวกรอง new: + save: บันทึกตัวกรองใหม่ title: เพิ่มตัวกรองใหม่ footer: developers: นักพัฒนา @@ -1127,6 +1160,8 @@ th: copy_account_note_text: 'ผู้ใช้นี้ได้ย้ายจาก %{acct} นี่คือหมายเหตุก่อนหน้านี้ของคุณเกี่ยวกับผู้ใช้:' notification_mailer: admin: + report: + subject: "%{name} ได้ส่งรายงาน" sign_up: subject: "%{name} ได้ลงทะเบียน" digest: diff --git a/config/locales/uk.yml b/config/locales/uk.yml index e29c59cb6..708ce998e 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -109,11 +109,17 @@ uk: avatar: Аватар by_domain: Домен change_email: + changed_msg: Адресу електронної пошти успішно змінено! current_email: Поточна адреса електронної пошти label: Змінити адресу електронної пошти new_email: Нова адреса електронної пошти submit: Змінити адресу електронної пошти title: Змінити адресу електронної пошти для %{username} + change_role: + changed_msg: Роль успішно змінено! + label: Змінити роль + no_role: Немає ролі + title: Змінити роль для %{username} confirm: Зберегти confirmed: Збережено confirming: Зберігається @@ -157,6 +163,7 @@ uk: active: Активний all: Усі pending: Очікують + silenced: Обмежені suspended: Призупинені title: Модерація moderation_notes: Нотатки модераторів @@ -164,6 +171,7 @@ uk: most_recent_ip: Останній IP no_account_selected: Жоден обліковий запис не було змінено, оскільки жоден не було вибрано no_limits_imposed: Жодних обмежень не накладено + no_role_assigned: Роль не призначено not_subscribed: Не підписані pending: Відгук в очікуванні perform_full_suspension: Призупинити @@ -192,6 +200,7 @@ uk: reset: Скинути reset_password: Скинути пароль resubscribe: Перепідписатися + role: Роль search: Пошук search_same_email_domain: Інші користувачі з тим самим поштовим доменом search_same_ip: Інші користувачі з тим самим IP @@ -655,6 +664,71 @@ uk: unresolved: Невирішені updated_at: Оновлені view_profile: Переглянути профіль + roles: + add_new: Додати роль + assigned_users: + few: "%{count} користувачі" + many: "%{count} користувачів" + one: "%{count} користувач" + other: "%{count} користувача" + categories: + administration: Адміністрування + devops: DevOps + invites: Запрошення + moderation: Модерація + special: Спеціальні + delete: Видалити + description_html: За допомогою ролі користувача, ви можете налаштувати, до яких функцій і місць можуть доступатися ваші користувачі Mastodon. + edit: Змінити роль «%{name}» + everyone: Типові дозволи + everyone_full_description_html: Це базова роль, яка впливає на всіх користувачів, навіть ті, яким не призначені ролі. Усі інші ролі успадковують її дозволи. + permissions_count: + few: "%{count} дозволи" + many: "%{count} дозволів" + one: "%{count} дозвіл" + other: "%{count} дозволи" + privileges: + administrator: Адміністратор + administrator_description: Користувачі з цим дозволом обходять усі дозволи + delete_user_data: Видаляти дані користувача + delete_user_data_description: Дозволяє користувачам видаляти дані інших користувачів без затримок + invite_users: Запрошувати користувачів + invite_users_description: Дозволяє користувачам запрошувати нових людей на сервер + manage_announcements: Керувати оголошеннями + manage_announcements_description: Дозволяє користувачам керувати оголошеннями на сервері + manage_appeals: Керувати оскарженнями + manage_appeals_description: Дозволяє користувачам розглядати оскарження дій модерації + manage_blocks: Керувати блокуваннями + manage_blocks_description: Дозволяє користувачам блокувати постачальників е-пошти та IP-адреси + manage_custom_emojis: Керувати користувацькими емоджі + manage_custom_emojis_description: Дозволяє користувачам керувати користувацькими емоджі на сервері + manage_federation: Керувати федерацією + manage_federation_description: Дозволяє користувачам блокувати або дозволяти федерацію з іншими доменами й керувати можливостями доставлення + manage_invites: Керувати запрошеннями + manage_invites_description: Дозволяє користувачам переглядати й деактивувати запрошувальні посилання + manage_reports: Керувати скаргами + manage_reports_description: Дозволяє користувачам переглядати скарги та виконувати відповідні дії модерації + manage_roles: Керувати ролями + manage_roles_description: Дозволяє користувачам керувати та призначати ролі, нижчі за свій рівень + manage_rules: Керувати правилами + manage_rules_description: Дозволяє користувачам змінювати правила сервера + manage_settings: Керування налаштуваннями + manage_settings_description: Дозволяє користувачам змінювати налаштування сайту + manage_taxonomies: Керувати таксономіями + manage_taxonomies_description: Дозволяє користувачам переглядати актуальні налаштування вмісту й оновити хештеґ + manage_user_access: Керувати доступом користувачів + manage_user_access_description: Дозволяє користувачам вимкнути двоетапну перевірку інших користувачів, змінити їхню адресу електронної пошти та відновити пароль + manage_users: Керувати користувачами + manage_users_description: Дозволяє користувачам переглядати подробиці інших користувачів і виконувати їхню модерацію + manage_webhooks: Керувати Webhooks + manage_webhooks_description: Дозволяє користувачам налаштовувати вебхуки для адміністративних подій + view_audit_log: Переглядати журнал перевірки + view_audit_log_description: Дозволяє користувачам бачити історію адміністративних дій на сервері + view_dashboard: Переглядати панель керування + view_dashboard_description: Дозволяє користувачам доступ до панелі керування та різних метрик + view_devops: DevOps + view_devops_description: Дозволяє користувачам доступ до Sidekiq і панелі pgHero + title: Ролі rules: add_new: Додати правило delete: Видалити @@ -849,7 +923,7 @@ uk: delete: Видалити edit_preset: Редагувати шаблон попередження empty: Ви ще не визначили жодних попереджень. - title: Управління шаблонами попереджень + title: Керування шаблонами попереджень webhooks: add_new: Додати кінцеву точку delete: Видалити From 05e39dc6199c609d200d546fed8a6a560659aa06 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 15 Jul 2022 10:21:28 +0900 Subject: [PATCH 231/652] Bump oj from 3.13.15 to 3.13.16 (#18797) Bumps [oj](https://github.com/ohler55/oj) from 3.13.15 to 3.13.16. - [Release notes](https://github.com/ohler55/oj/releases) - [Changelog](https://github.com/ohler55/oj/blob/develop/CHANGELOG.md) - [Commits](https://github.com/ohler55/oj/compare/v3.13.15...v3.13.16) --- updated-dependencies: - dependency-name: oj dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 9b6104004..f68442d43 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -413,7 +413,7 @@ GEM concurrent-ruby (~> 1.0, >= 1.0.2) sidekiq (>= 3.5) statsd-ruby (~> 1.4, >= 1.4.0) - oj (3.13.15) + oj (3.13.16) omniauth (1.9.1) hashie (>= 3.4.6) rack (>= 1.6.2, < 3) From ecb3bb3256fe1bab0d7a63829cdce914b2b509a9 Mon Sep 17 00:00:00 2001 From: Claire Date: Sun, 17 Jul 2022 13:37:30 +0200 Subject: [PATCH 232/652] Add support for editing labelling of one's own role (#18812) Still disallow edition of rank or permissions --- app/models/user_role.rb | 7 +++++++ app/policies/user_role_policy.rb | 2 +- app/views/admin/roles/_form.html.haml | 23 +++++++++++++---------- config/locales/activerecord.en.yml | 2 ++ 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/app/models/user_role.rb b/app/models/user_role.rb index 833b96d71..57a56c0b0 100644 --- a/app/models/user_role.rb +++ b/app/models/user_role.rb @@ -90,6 +90,7 @@ class UserRole < ApplicationRecord validate :validate_permissions_elevation validate :validate_position_elevation validate :validate_dangerous_permissions + validate :validate_own_role_edition before_validation :set_position @@ -165,6 +166,12 @@ class UserRole < ApplicationRecord self.position = -1 if everyone? end + def validate_own_role_edition + return unless defined?(@current_account) && @current_account.user_role.id == id + errors.add(:permissions_as_keys, :own_role) if permissions_changed? + errors.add(:position, :own_role) if position_changed? + end + def validate_permissions_elevation errors.add(:permissions_as_keys, :elevated) if defined?(@current_account) && @current_account.user_role.computed_permissions & permissions != permissions end diff --git a/app/policies/user_role_policy.rb b/app/policies/user_role_policy.rb index 7019637fc..6144a0ec4 100644 --- a/app/policies/user_role_policy.rb +++ b/app/policies/user_role_policy.rb @@ -10,7 +10,7 @@ class UserRolePolicy < ApplicationPolicy end def update? - role.can?(:manage_roles) && role.overrides?(record) + role.can?(:manage_roles) && (role.overrides?(record) || role.id == record.id) end def destroy? diff --git a/app/views/admin/roles/_form.html.haml b/app/views/admin/roles/_form.html.haml index 99a211eea..9beaf619f 100644 --- a/app/views/admin/roles/_form.html.haml +++ b/app/views/admin/roles/_form.html.haml @@ -8,8 +8,9 @@ .fields-group = f.input :name, wrapper: :with_label - .fields-group - = f.input :position, wrapper: :with_label, input_html: { max: current_user.role.position - 1 } + - unless current_user.role.id == @role.id + .fields-group + = f.input :position, wrapper: :with_label, input_html: { max: current_user.role.position - 1 } .fields-group = f.input :color, wrapper: :with_label, input_html: { placeholder: '#000000' } @@ -21,17 +22,19 @@ %hr.spacer/ - .field-group - .input.with_block_label - %label= t('simple_form.labels.user_role.permissions_as_keys') - %span.hint= t('simple_form.hints.user_role.permissions_as_keys') + - unless current_user.role.id == @role.id - - (@role.everyone? ? UserRole::Flags::CATEGORIES.slice(:invites) : UserRole::Flags::CATEGORIES).each do |category, permissions| - %h4= t(category, scope: 'admin.roles.categories') + .field-group + .input.with_block_label + %label= t('simple_form.labels.user_role.permissions_as_keys') + %span.hint= t('simple_form.hints.user_role.permissions_as_keys') - = f.input :permissions_as_keys, collection: permissions, wrapper: :with_block_label, include_blank: false, label_method: lambda { |privilege| safe_join([t("admin.roles.privileges.#{privilege}"), content_tag(:span, t("admin.roles.privileges.#{privilege}_description"), class: 'hint')]) }, required: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', label: false, hint: false, disabled: permissions.filter { |privilege| UserRole::FLAGS[privilege] & current_user.role.computed_permissions == 0 } + - (@role.everyone? ? UserRole::Flags::CATEGORIES.slice(:invites) : UserRole::Flags::CATEGORIES).each do |category, permissions| + %h4= t(category, scope: 'admin.roles.categories') - %hr.spacer/ + = f.input :permissions_as_keys, collection: permissions, wrapper: :with_block_label, include_blank: false, label_method: lambda { |privilege| safe_join([t("admin.roles.privileges.#{privilege}"), content_tag(:span, t("admin.roles.privileges.#{privilege}_description"), class: 'hint')]) }, required: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', label: false, hint: false, disabled: permissions.filter { |privilege| UserRole::FLAGS[privilege] & current_user.role.computed_permissions == 0 } + + %hr.spacer/ .actions = f.button :button, @role.new_record? ? t('admin.roles.add_new') : t('generic.save_changes'), type: :submit diff --git a/config/locales/activerecord.en.yml b/config/locales/activerecord.en.yml index daeed58b8..2dfa3b955 100644 --- a/config/locales/activerecord.en.yml +++ b/config/locales/activerecord.en.yml @@ -45,5 +45,7 @@ en: permissions_as_keys: dangerous: include permissions that are not safe for the base role elevated: cannot include permissions your current role does not possess + own_role: cannot be changed with your current role position: elevated: cannot be higher than your current role + own_role: cannot be changed with your current role From c3f0621a59a74d0e20e6db6170894871c48e8f0f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 17 Jul 2022 13:49:29 +0200 Subject: [PATCH 233/652] Add ability to follow hashtags (#18809) --- .../featured_tags/suggestions_controller.rb | 2 +- .../api/v1/followed_tags_controller.rb | 52 ++++++++++++ app/controllers/api/v1/tags_controller.rb | 29 +++++++ .../api/v1/trends/tags_controller.rb | 2 +- app/lib/feed_manager.rb | 36 +++++--- app/models/tag.rb | 5 +- app/models/tag_follow.rb | 24 ++++++ app/presenters/tag_relationships_presenter.rb | 15 ++++ app/serializers/rest/tag_serializer.rb | 14 ++++ app/services/fan_out_on_write_service.rb | 15 +++- app/workers/feed_insert_worker.rb | 8 +- config/routes.rb | 9 ++ .../20220714171049_create_tag_follows.rb | 12 +++ db/schema.rb | 13 ++- .../api/v1/followed_tags_controller_spec.rb | 23 ++++++ .../api/v1/tags_controller_spec.rb | 82 +++++++++++++++++++ spec/fabricators/tag_follow_fabricator.rb | 4 + spec/models/tag_follow_spec.rb | 4 + 18 files changed, 329 insertions(+), 20 deletions(-) create mode 100644 app/controllers/api/v1/followed_tags_controller.rb create mode 100644 app/controllers/api/v1/tags_controller.rb create mode 100644 app/models/tag_follow.rb create mode 100644 app/presenters/tag_relationships_presenter.rb create mode 100644 db/migrate/20220714171049_create_tag_follows.rb create mode 100644 spec/controllers/api/v1/followed_tags_controller_spec.rb create mode 100644 spec/controllers/api/v1/tags_controller_spec.rb create mode 100644 spec/fabricators/tag_follow_fabricator.rb create mode 100644 spec/models/tag_follow_spec.rb diff --git a/app/controllers/api/v1/featured_tags/suggestions_controller.rb b/app/controllers/api/v1/featured_tags/suggestions_controller.rb index 75545d3c7..76633210a 100644 --- a/app/controllers/api/v1/featured_tags/suggestions_controller.rb +++ b/app/controllers/api/v1/featured_tags/suggestions_controller.rb @@ -6,7 +6,7 @@ class Api::V1::FeaturedTags::SuggestionsController < Api::BaseController before_action :set_recently_used_tags, only: :index def index - render json: @recently_used_tags, each_serializer: REST::TagSerializer + render json: @recently_used_tags, each_serializer: REST::TagSerializer, relationships: TagRelationshipsPresenter.new(@recently_used_tags, current_user&.account_id) end private diff --git a/app/controllers/api/v1/followed_tags_controller.rb b/app/controllers/api/v1/followed_tags_controller.rb new file mode 100644 index 000000000..f0dfd044c --- /dev/null +++ b/app/controllers/api/v1/followed_tags_controller.rb @@ -0,0 +1,52 @@ +# frozen_string_literal: true + +class Api::V1::FollowedTagsController < Api::BaseController + TAGS_LIMIT = 100 + + before_action -> { doorkeeper_authorize! :follow, :read, :'read:follows' }, except: :show + before_action :require_user! + before_action :set_results + + after_action :insert_pagination_headers, only: :show + + def index + render json: @results.map(&:tag), each_serializer: REST::TagSerializer, relationships: TagRelationshipsPresenter.new(@results.map(&:tag), current_user&.account_id) + end + + private + + def set_results + @results = TagFollow.where(account: current_account).joins(:tag).eager_load(:tag).to_a_paginated_by_id( + limit_param(TAGS_LIMIT), + params_slice(:max_id, :since_id, :min_id) + ) + end + + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + + def next_path + api_v1_followed_tags_url pagination_params(max_id: pagination_max_id) if records_continue? + end + + def prev_path + api_v1_followed_tags_url pagination_params(since_id: pagination_since_id) unless @results.empty? + end + + def pagination_max_id + @results.last.id + end + + def pagination_since_id + @results.first.id + end + + def records_continue? + @results.size == limit_param(TAG_LIMIT) + end + + def pagination_params(core_params) + params.slice(:limit).permit(:limit).merge(core_params) + end +end diff --git a/app/controllers/api/v1/tags_controller.rb b/app/controllers/api/v1/tags_controller.rb new file mode 100644 index 000000000..d45015ff5 --- /dev/null +++ b/app/controllers/api/v1/tags_controller.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +class Api::V1::TagsController < Api::BaseController + before_action -> { doorkeeper_authorize! :follow, :write, :'write:follows' }, except: :show + before_action :require_user!, except: :show + before_action :set_or_create_tag + + override_rate_limit_headers :follow, family: :follows + + def show + render json: @tag, serializer: REST::TagSerializer + end + + def follow + TagFollow.create!(tag: @tag, account: current_account, rate_limit: true) + render json: @tag, serializer: REST::TagSerializer + end + + def unfollow + TagFollow.find_by(account: current_account, tag: @tag)&.destroy! + render json: @tag, serializer: REST::TagSerializer + end + + private + + def set_or_create_tag + @tag = Tag.find_normalized(params[:id]) || Tag.new(name: Tag.normalize(params[:id]), display_name: params[:id]) + end +end diff --git a/app/controllers/api/v1/trends/tags_controller.rb b/app/controllers/api/v1/trends/tags_controller.rb index 41f9ffac1..21adfa2a1 100644 --- a/app/controllers/api/v1/trends/tags_controller.rb +++ b/app/controllers/api/v1/trends/tags_controller.rb @@ -8,7 +8,7 @@ class Api::V1::Trends::TagsController < Api::BaseController DEFAULT_TAGS_LIMIT = 10 def index - render json: @tags, each_serializer: REST::TagSerializer + render json: @tags, each_serializer: REST::TagSerializer, relationships: TagRelationshipsPresenter.new(@tags, current_user&.account_id) end private diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb index 2eb4ba2f4..145352fe8 100644 --- a/app/lib/feed_manager.rb +++ b/app/lib/feed_manager.rb @@ -45,6 +45,8 @@ class FeedManager filter_from_list?(status, receiver) || filter_from_home?(status, receiver.account_id, build_crutches(receiver.account_id, [status])) when :mentions filter_from_mentions?(status, receiver.id) + when :tags + filter_from_tags?(status, receiver.id, build_crutches(receiver.id, [status])) else false end @@ -56,7 +58,7 @@ class FeedManager # @param [Boolean] update # @return [Boolean] def push_to_home(account, status, update: false) - return false unless add_to_feed(:home, account.id, status, account.user&.aggregates_reblogs?) + return false unless add_to_feed(:home, account.id, status, aggregate_reblogs: account.user&.aggregates_reblogs?) trim(:home, account.id) PushUpdateWorker.perform_async(account.id, status.id, "timeline:#{account.id}", { 'update' => update }) if push_update_required?("timeline:#{account.id}") @@ -69,7 +71,7 @@ class FeedManager # @param [Boolean] update # @return [Boolean] def unpush_from_home(account, status, update: false) - return false unless remove_from_feed(:home, account.id, status, account.user&.aggregates_reblogs?) + return false unless remove_from_feed(:home, account.id, status, aggregate_reblogs: account.user&.aggregates_reblogs?) redis.publish("timeline:#{account.id}", Oj.dump(event: :delete, payload: status.id.to_s)) unless update true @@ -81,7 +83,7 @@ class FeedManager # @param [Boolean] update # @return [Boolean] def push_to_list(list, status, update: false) - return false if filter_from_list?(status, list) || !add_to_feed(:list, list.id, status, list.account.user&.aggregates_reblogs?) + return false if filter_from_list?(status, list) || !add_to_feed(:list, list.id, status, aggregate_reblogs: list.account.user&.aggregates_reblogs?) trim(:list, list.id) PushUpdateWorker.perform_async(list.account_id, status.id, "timeline:list:#{list.id}", { 'update' => update }) if push_update_required?("timeline:list:#{list.id}") @@ -94,7 +96,7 @@ class FeedManager # @param [Boolean] update # @return [Boolean] def unpush_from_list(list, status, update: false) - return false unless remove_from_feed(:list, list.id, status, list.account.user&.aggregates_reblogs?) + return false unless remove_from_feed(:list, list.id, status, aggregate_reblogs: list.account.user&.aggregates_reblogs?) redis.publish("timeline:list:#{list.id}", Oj.dump(event: :delete, payload: status.id.to_s)) unless update true @@ -120,7 +122,7 @@ class FeedManager statuses.each do |status| next if filter_from_home?(status, into_account.id, crutches) - add_to_feed(:home, into_account.id, status, aggregate) + add_to_feed(:home, into_account.id, status, aggregate_reblogs: aggregate) end trim(:home, into_account.id) @@ -146,7 +148,7 @@ class FeedManager statuses.each do |status| next if filter_from_home?(status, list.account_id, crutches) || filter_from_list?(status, list) - add_to_feed(:list, list.id, status, aggregate) + add_to_feed(:list, list.id, status, aggregate_reblogs: aggregate) end trim(:list, list.id) @@ -161,7 +163,7 @@ class FeedManager timeline_status_ids = redis.zrange(timeline_key, 0, -1) from_account.statuses.select('id, reblog_of_id').where(id: timeline_status_ids).reorder(nil).find_each do |status| - remove_from_feed(:home, into_account.id, status, into_account.user&.aggregates_reblogs?) + remove_from_feed(:home, into_account.id, status, aggregate_reblogs: into_account.user&.aggregates_reblogs?) end end @@ -174,7 +176,7 @@ class FeedManager timeline_status_ids = redis.zrange(timeline_key, 0, -1) from_account.statuses.select('id, reblog_of_id').where(id: timeline_status_ids).reorder(nil).find_each do |status| - remove_from_feed(:list, list.id, status, list.account.user&.aggregates_reblogs?) + remove_from_feed(:list, list.id, status, aggregate_reblogs: list.account.user&.aggregates_reblogs?) end end @@ -237,7 +239,7 @@ class FeedManager timeline_key = key(:home, account.id) account.statuses.limit(limit).each do |status| - add_to_feed(:home, account.id, status, aggregate) + add_to_feed(:home, account.id, status, aggregate_reblogs: aggregate) end account.following.includes(:account_stat).find_each do |target_account| @@ -257,7 +259,7 @@ class FeedManager statuses.each do |status| next if filter_from_home?(status, account.id, crutches) - add_to_feed(:home, account.id, status, aggregate) + add_to_feed(:home, account.id, status, aggregate_reblogs: aggregate) end trim(:home, account.id) @@ -416,6 +418,16 @@ class FeedManager false end + # Check if a status should not be added to the home feed when it comes + # from a followed hashtag + # @param [Status] status + # @param [Integer] receiver_id + # @param [Hash] crutches + # @return [Boolean] + def filter_from_tags?(status, receiver_id, crutches) + receiver_id != status.account_id && (((crutches[:active_mentions][status.id] || []) + [status.account_id]).any? { |target_account_id| crutches[:blocking][target_account_id] || crutches[:muting][target_account_id] } || crutches[:blocked_by][status.account_id] || crutches[:domain_blocking][status.account.domain]) + end + # Adds a status to an account's feed, returning true if a status was # added, and false if it was not added to the feed. Note that this is # an internal helper: callers must call trim or push updates if @@ -425,7 +437,7 @@ class FeedManager # @param [Status] status # @param [Boolean] aggregate_reblogs # @return [Boolean] - def add_to_feed(timeline_type, account_id, status, aggregate_reblogs = true) + def add_to_feed(timeline_type, account_id, status, aggregate_reblogs: true) timeline_key = key(timeline_type, account_id) reblog_key = key(timeline_type, account_id, 'reblogs') @@ -473,7 +485,7 @@ class FeedManager # @param [Status] status # @param [Boolean] aggregate_reblogs # @return [Boolean] - def remove_from_feed(timeline_type, account_id, status, aggregate_reblogs = true) + def remove_from_feed(timeline_type, account_id, status, aggregate_reblogs: true) timeline_key = key(timeline_type, account_id) reblog_key = key(timeline_type, account_id, 'reblogs') diff --git a/app/models/tag.rb b/app/models/tag.rb index f078007f2..eebf3b47d 100644 --- a/app/models/tag.rb +++ b/app/models/tag.rb @@ -22,13 +22,16 @@ class Tag < ApplicationRecord has_and_belongs_to_many :statuses has_and_belongs_to_many :accounts + has_many :passive_relationships, class_name: 'TagFollow', inverse_of: :tag, dependent: :destroy has_many :featured_tags, dependent: :destroy, inverse_of: :tag + has_many :followers, through: :passive_relationships, source: :account HASHTAG_SEPARATORS = "_\u00B7\u200c" HASHTAG_NAME_RE = "([[:alnum:]_][[:alnum:]#{HASHTAG_SEPARATORS}]*[[:alpha:]#{HASHTAG_SEPARATORS}][[:alnum:]#{HASHTAG_SEPARATORS}]*[[:alnum:]_])|([[:alnum:]_]*[[:alpha:]][[:alnum:]_]*)" HASHTAG_RE = /(?:^|[^\/\)\w])#(#{HASHTAG_NAME_RE})/i validates :name, presence: true, format: { with: /\A(#{HASHTAG_NAME_RE})\z/i } + validates :display_name, format: { with: /\A(#{HASHTAG_NAME_RE})\z/i } validate :validate_name_change, if: -> { !new_record? && name_changed? } validate :validate_display_name_change, if: -> { !new_record? && display_name_changed? } @@ -99,7 +102,7 @@ class Tag < ApplicationRecord names = Array(name_or_names).map { |str| [normalize(str), str] }.uniq(&:first) names.map do |(normalized_name, display_name)| - tag = matching_name(normalized_name).first || create(name: normalized_name, display_name: display_name) + tag = matching_name(normalized_name).first || create(name: normalized_name, display_name: display_name.gsub(/[^[:alnum:]#{HASHTAG_SEPARATORS}]/, '')) yield tag if block_given? diff --git a/app/models/tag_follow.rb b/app/models/tag_follow.rb new file mode 100644 index 000000000..abe36cd17 --- /dev/null +++ b/app/models/tag_follow.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +# == Schema Information +# +# Table name: tag_follows +# +# id :bigint(8) not null, primary key +# tag_id :bigint(8) not null +# account_id :bigint(8) not null +# created_at :datetime not null +# updated_at :datetime not null +# + +class TagFollow < ApplicationRecord + include RateLimitable + include Paginable + + belongs_to :tag + belongs_to :account + + accepts_nested_attributes_for :tag + + rate_limit by: :account, family: :follows +end diff --git a/app/presenters/tag_relationships_presenter.rb b/app/presenters/tag_relationships_presenter.rb new file mode 100644 index 000000000..c3bdbaf07 --- /dev/null +++ b/app/presenters/tag_relationships_presenter.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class TagRelationshipsPresenter + attr_reader :following_map + + def initialize(tags, current_account_id = nil, **options) + @following_map = begin + if current_account_id.nil? + {} + else + TagFollow.select(:tag_id).where(tag_id: tags.map(&:id), account_id: current_account_id).each_with_object({}) { |f, h| h[f.tag_id] = true }.merge(options[:following_map] || {}) + end + end + end +end diff --git a/app/serializers/rest/tag_serializer.rb b/app/serializers/rest/tag_serializer.rb index 52bfaa4ce..7801e77d1 100644 --- a/app/serializers/rest/tag_serializer.rb +++ b/app/serializers/rest/tag_serializer.rb @@ -5,6 +5,8 @@ class REST::TagSerializer < ActiveModel::Serializer attributes :name, :url, :history + attribute :following, if: :current_user? + def url tag_url(object) end @@ -12,4 +14,16 @@ class REST::TagSerializer < ActiveModel::Serializer def name object.display_name end + + def following + if instance_options && instance_options[:relationships] + instance_options[:relationships].following_map[object.id] || false + else + TagFollow.where(tag_id: object.id, account_id: current_user.account_id).exists? + end + end + + def current_user? + !current_user.nil? + end end diff --git a/app/services/fan_out_on_write_service.rb b/app/services/fan_out_on_write_service.rb index de5c5ebe4..ce20a146e 100644 --- a/app/services/fan_out_on_write_service.rb +++ b/app/services/fan_out_on_write_service.rb @@ -16,6 +16,7 @@ class FanOutOnWriteService < BaseService check_race_condition! fan_out_to_local_recipients! + fan_out_to_public_recipients! if broadcastable? fan_out_to_public_streams! if broadcastable? end @@ -50,6 +51,10 @@ class FanOutOnWriteService < BaseService end end + def fan_out_to_public_recipients! + deliver_to_hashtag_followers! + end + def fan_out_to_public_streams! broadcast_to_hashtag_streams! broadcast_to_public_streams! @@ -83,6 +88,14 @@ class FanOutOnWriteService < BaseService end end + def deliver_to_hashtag_followers! + TagFollow.where(tag_id: @status.tags.map(&:id)).select(:id, :account_id).reorder(nil).find_in_batches do |follows| + FeedInsertWorker.push_bulk(follows) do |follow| + [@status.id, follow.account_id, 'tags', { 'update' => update? }] + end + end + end + def deliver_to_lists! @account.lists_for_local_distribution.select(:id).reorder(nil).find_in_batches do |lists| FeedInsertWorker.push_bulk(lists) do |list| @@ -100,7 +113,7 @@ class FanOutOnWriteService < BaseService end def broadcast_to_hashtag_streams! - @status.tags.pluck(:name).each do |hashtag| + @status.tags.map(&:name).each do |hashtag| redis.publish("timeline:hashtag:#{hashtag.mb_chars.downcase}", anonymous_payload) redis.publish("timeline:hashtag:#{hashtag.mb_chars.downcase}:local", anonymous_payload) if @status.local? end diff --git a/app/workers/feed_insert_worker.rb b/app/workers/feed_insert_worker.rb index 40bc9cb6e..758cebd4b 100644 --- a/app/workers/feed_insert_worker.rb +++ b/app/workers/feed_insert_worker.rb @@ -9,7 +9,7 @@ class FeedInsertWorker @options = options.symbolize_keys case @type - when :home + when :home, :tags @follower = Account.find(id) when :list @list = List.find(id) @@ -36,6 +36,8 @@ class FeedInsertWorker case @type when :home FeedManager.instance.filter?(:home, @status, @follower) + when :tags + FeedManager.instance.filter?(:tags, @status, @follower) when :list FeedManager.instance.filter?(:list, @status, @list) end @@ -49,7 +51,7 @@ class FeedInsertWorker def perform_push case @type - when :home + when :home, :tags FeedManager.instance.push_to_home(@follower, @status, update: update?) when :list FeedManager.instance.push_to_list(@list, @status, update: update?) @@ -58,7 +60,7 @@ class FeedInsertWorker def perform_unpush case @type - when :home + when :home, :tags FeedManager.instance.unpush_from_home(@follower, @status, update: true) when :list FeedManager.instance.unpush_from_list(@list, @status, update: true) diff --git a/config/routes.rb b/config/routes.rb index 177c1cff4..7a902b1f0 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -530,6 +530,15 @@ Rails.application.routes.draw do resource :note, only: :create, controller: 'accounts/notes' end + resources :tags, only: [:show], constraints: { id: /#{Tag::HASHTAG_NAME_RE}/ } do + member do + post :follow + post :unfollow + end + end + + resources :followed_tags, only: [:index] + resources :lists, only: [:index, :create, :show, :update, :destroy] do resource :accounts, only: [:show, :create, :destroy], controller: 'lists/accounts' end diff --git a/db/migrate/20220714171049_create_tag_follows.rb b/db/migrate/20220714171049_create_tag_follows.rb new file mode 100644 index 000000000..a393e90f5 --- /dev/null +++ b/db/migrate/20220714171049_create_tag_follows.rb @@ -0,0 +1,12 @@ +class CreateTagFollows < ActiveRecord::Migration[6.1] + def change + create_table :tag_follows do |t| + t.belongs_to :tag, null: false, foreign_key: { on_delete: :cascade } + t.belongs_to :account, null: false, foreign_key: { on_delete: :cascade }, index: false + + t.timestamps + end + + add_index :tag_follows, [:account_id, :tag_id], unique: true + end +end diff --git a/db/schema.rb b/db/schema.rb index 9b465b674..2263dc7d7 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2022_07_10_102457) do +ActiveRecord::Schema.define(version: 2022_07_14_171049) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -928,6 +928,15 @@ ActiveRecord::Schema.define(version: 2022_07_10_102457) do t.datetime "updated_at", null: false end + create_table "tag_follows", force: :cascade do |t| + t.bigint "tag_id", null: false + t.bigint "account_id", null: false + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + t.index ["account_id", "tag_id"], name: "index_tag_follows_on_account_id_and_tag_id", unique: true + t.index ["tag_id"], name: "index_tag_follows_on_tag_id" + end + create_table "tags", force: :cascade do |t| t.string "name", default: "", null: false t.datetime "created_at", null: false @@ -1167,6 +1176,8 @@ ActiveRecord::Schema.define(version: 2022_07_10_102457) do add_foreign_key "statuses", "statuses", column: "reblog_of_id", on_delete: :cascade add_foreign_key "statuses_tags", "statuses", on_delete: :cascade add_foreign_key "statuses_tags", "tags", name: "fk_3081861e21", on_delete: :cascade + add_foreign_key "tag_follows", "accounts", on_delete: :cascade + add_foreign_key "tag_follows", "tags", on_delete: :cascade add_foreign_key "tombstones", "accounts", on_delete: :cascade add_foreign_key "user_invite_requests", "users", on_delete: :cascade add_foreign_key "users", "accounts", name: "fk_50500f500d", on_delete: :cascade diff --git a/spec/controllers/api/v1/followed_tags_controller_spec.rb b/spec/controllers/api/v1/followed_tags_controller_spec.rb new file mode 100644 index 000000000..2191350ef --- /dev/null +++ b/spec/controllers/api/v1/followed_tags_controller_spec.rb @@ -0,0 +1,23 @@ +require 'rails_helper' + +RSpec.describe Api::V1::FollowedTagsController, type: :controller do + render_views + + let(:user) { Fabricate(:user) } + let(:scopes) { 'read:follows' } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } + + before { allow(controller).to receive(:doorkeeper_token) { token } } + + describe 'GET #index' do + let!(:tag_follows) { Fabricate.times(5, :tag_follow, account: user.account) } + + before do + get :index, params: { limit: 1 } + end + + it 'returns http success' do + expect(response).to have_http_status(:success) + end + end +end diff --git a/spec/controllers/api/v1/tags_controller_spec.rb b/spec/controllers/api/v1/tags_controller_spec.rb new file mode 100644 index 000000000..ac42660df --- /dev/null +++ b/spec/controllers/api/v1/tags_controller_spec.rb @@ -0,0 +1,82 @@ +require 'rails_helper' + +RSpec.describe Api::V1::TagsController, type: :controller do + render_views + + let(:user) { Fabricate(:user) } + let(:scopes) { 'write:follows' } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } + + before { allow(controller).to receive(:doorkeeper_token) { token } } + + describe 'GET #show' do + before do + get :show, params: { id: name } + end + + context 'with existing tag' do + let!(:tag) { Fabricate(:tag) } + let(:name) { tag.name } + + it 'returns http success' do + expect(response).to have_http_status(:success) + end + end + + context 'with non-existing tag' do + let(:name) { 'hoge' } + + it 'returns http success' do + expect(response).to have_http_status(:success) + end + end + end + + describe 'POST #follow' do + before do + post :follow, params: { id: name } + end + + context 'with existing tag' do + let!(:tag) { Fabricate(:tag) } + let(:name) { tag.name } + + it 'returns http success' do + expect(response).to have_http_status(:success) + end + + it 'creates follow' do + expect(TagFollow.where(tag: tag, account: user.account).exists?).to be true + end + end + + context 'with non-existing tag' do + let(:name) { 'hoge' } + + it 'returns http success' do + expect(response).to have_http_status(:success) + end + + it 'creates follow' do + expect(TagFollow.where(tag: Tag.find_by!(name: name), account: user.account).exists?).to be true + end + end + end + + describe 'POST #unfollow' do + let!(:tag) { Fabricate(:tag, name: 'foo') } + let!(:tag_follow) { Fabricate(:tag_follow, account: user.account, tag: tag) } + + before do + post :unfollow, params: { id: tag.name } + end + + it 'returns http success' do + expect(response).to have_http_status(:success) + end + + it 'removes the follow' do + expect(TagFollow.where(tag: tag, account: user.account).exists?).to be false + end + end +end diff --git a/spec/fabricators/tag_follow_fabricator.rb b/spec/fabricators/tag_follow_fabricator.rb new file mode 100644 index 000000000..a2cccb07a --- /dev/null +++ b/spec/fabricators/tag_follow_fabricator.rb @@ -0,0 +1,4 @@ +Fabricator(:tag_follow) do + tag + account +end diff --git a/spec/models/tag_follow_spec.rb b/spec/models/tag_follow_spec.rb new file mode 100644 index 000000000..50c04d2e4 --- /dev/null +++ b/spec/models/tag_follow_spec.rb @@ -0,0 +1,4 @@ +require 'rails_helper' + +RSpec.describe TagFollow, type: :model do +end From ad489f865a38e54a0f05598fa3f0638d3808214d Mon Sep 17 00:00:00 2001 From: Jeong Arm Date: Mon, 18 Jul 2022 15:41:08 +0900 Subject: [PATCH 234/652] Fix custom.css html escaped (#18824) --- app/views/custom_css/show.css.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/custom_css/show.css.erb b/app/views/custom_css/show.css.erb index 521834832..9cd38fb37 100644 --- a/app/views/custom_css/show.css.erb +++ b/app/views/custom_css/show.css.erb @@ -1,5 +1,5 @@ <%- if Setting.custom_css.present? %> -<%= Setting.custom_css %> +<%= raw Setting.custom_css %> <%- end %> <%- UserRole.where(highlighted: true).select { |role| role.color.present? }.each do |role| %> From ec83e2a35ee5f3a68ec0f8f5285e45d24d4d1da6 Mon Sep 17 00:00:00 2001 From: Jeremy Kescher Date: Mon, 18 Jul 2022 06:41:50 +0000 Subject: [PATCH 235/652] Fix missing scope for current_user in _sidebar.html.haml (#18822) Fixes https://github.com/mastodon/mastodon/issues/18821 Fix suggested by https://miaow.gay/@meganeko/108665430982072358 --- app/views/application/_sidebar.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/application/_sidebar.html.haml b/app/views/application/_sidebar.html.haml index 0a952add0..cc157bf47 100644 --- a/app/views/application/_sidebar.html.haml +++ b/app/views/application/_sidebar.html.haml @@ -13,4 +13,4 @@ %h4.emojify= t('footer.trending_now') - trends.each do |tag| - = react_component :hashtag, hashtag: ActiveModelSerializers::SerializableResource.new(tag, serializer: REST::TagSerializer).as_json + = react_component :hashtag, hashtag: ActiveModelSerializers::SerializableResource.new(tag, serializer: REST::TagSerializer, scope: current_user, scope_name: :current_user).as_json From f248d95be26ceca3c2d717fa71557a56e975fece Mon Sep 17 00:00:00 2001 From: Jeong Arm Date: Tue, 19 Jul 2022 08:06:11 +0900 Subject: [PATCH 236/652] Fix badge color not affected (#18826) * Fix badge color not affected * Generate user role css --- app/javascript/styles/mastodon/accounts.scss | 6 +++--- app/views/custom_css/show.css.erb | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app/javascript/styles/mastodon/accounts.scss b/app/javascript/styles/mastodon/accounts.scss index 215774a19..54b65bfc8 100644 --- a/app/javascript/styles/mastodon/accounts.scss +++ b/app/javascript/styles/mastodon/accounts.scss @@ -210,9 +210,9 @@ font-size: 12px; line-height: 12px; font-weight: 500; - color: $ui-secondary-color; - background-color: rgba($ui-secondary-color, 0.1); - border: 1px solid rgba($ui-secondary-color, 0.5); + color: var(--user-role-accent, $ui-secondary-color); + background-color: var(--user-role-background, rgba($ui-secondary-color, 0.1)); + border: 1px solid var(--user-role-border, rgba($ui-secondary-color, 0.5)); &.moderator { color: $success-green; diff --git a/app/views/custom_css/show.css.erb b/app/views/custom_css/show.css.erb index 9cd38fb37..bcbe81962 100644 --- a/app/views/custom_css/show.css.erb +++ b/app/views/custom_css/show.css.erb @@ -5,6 +5,8 @@ <%- UserRole.where(highlighted: true).select { |role| role.color.present? }.each do |role| %> .user-role-<%= role.id %> { --user-role-accent: <%= role.color %>; + --user-role-background: <%= role.color + '19' %>; + --user-role-border: <%= role.color + '80' %>; } <%- end %> From 8a67e6e237c7df81eb38571cd81fac2768293aba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Jul 2022 20:24:34 +0900 Subject: [PATCH 237/652] Bump terser from 4.8.0 to 4.8.1 (#18849) Bumps [terser](https://github.com/terser/terser) from 4.8.0 to 4.8.1. - [Release notes](https://github.com/terser/terser/releases) - [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md) - [Commits](https://github.com/terser/terser/commits) --- updated-dependencies: - dependency-name: terser dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/yarn.lock b/yarn.lock index c93c30ede..9f26d5dae 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2895,9 +2895,9 @@ bser@2.1.1: node-int64 "^0.4.0" buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== buffer-indexof@^1.0.0: version "1.1.1" @@ -10115,9 +10115,9 @@ source-map-support@0.5.13: source-map "^0.6.0" source-map-support@~0.5.12, source-map-support@~0.5.19: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -10721,9 +10721,9 @@ terser-webpack-plugin@^4.2.3: webpack-sources "^1.4.3" terser@^4.1.2: - version "4.8.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" - integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + version "4.8.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.1.tgz#a00e5634562de2239fd404c649051bf6fc21144f" + integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw== dependencies: commander "^2.20.0" source-map "~0.6.1" From bcc6510f5315048f0d5800f331ee56e282080ded Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Jul 2022 20:25:14 +0900 Subject: [PATCH 238/652] Bump @babel/preset-env from 7.18.6 to 7.18.9 (#18830) Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.18.6 to 7.18.9. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.9/packages/babel-preset-env) --- updated-dependencies: - dependency-name: "@babel/preset-env" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 387 +++++++++++++++++++++++++++++++-------------------- 2 files changed, 239 insertions(+), 150 deletions(-) diff --git a/package.json b/package.json index 5c94e8fef..e7aaa7366 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "@babel/plugin-proposal-decorators": "^7.18.6", "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.18.6", - "@babel/preset-env": "^7.18.6", + "@babel/preset-env": "^7.18.9", "@babel/preset-react": "^7.18.6", "@babel/runtime": "^7.18.6", "@gamestdio/websocket": "^0.3.2", diff --git a/yarn.lock b/yarn.lock index 9f26d5dae..0101ee516 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,10 +23,10 @@ dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.6.tgz#8b37d24e88e8e21c499d4328db80577d8882fa53" - integrity sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ== +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.18.8": + version "7.18.8" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d" + integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ== "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.6", "@babel/core@^7.7.2": version "7.18.6" @@ -67,6 +67,15 @@ "@jridgewell/gen-mapping" "^0.3.0" jsesc "^2.5.1" +"@babel/generator@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.9.tgz#68337e9ea8044d6ddc690fb29acae39359cca0a5" + integrity sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug== + dependencies: + "@babel/types" "^7.18.9" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" @@ -90,12 +99,12 @@ "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz#18d35bfb9f83b1293c22c55b3d576c1315b6ed96" - integrity sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg== +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.18.6", "@babel/helper-compilation-targets@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf" + integrity sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg== dependencies: - "@babel/compat-data" "^7.18.6" + "@babel/compat-data" "^7.18.8" "@babel/helper-validator-option" "^7.18.6" browserslist "^4.20.2" semver "^6.3.0" @@ -140,6 +149,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz#b7eee2b5b9d70602e59d1a6cad7dd24de7ca6cd7" integrity sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q== +"@babel/helper-environment-visitor@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" + integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== + "@babel/helper-explode-assignable-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" @@ -155,6 +169,14 @@ "@babel/template" "^7.18.6" "@babel/types" "^7.18.6" +"@babel/helper-function-name@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz#940e6084a55dee867d33b4e487da2676365e86b0" + integrity sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A== + dependencies: + "@babel/template" "^7.18.6" + "@babel/types" "^7.18.9" + "@babel/helper-hoist-variables@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" @@ -169,6 +191,13 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-member-expression-to-functions@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815" + integrity sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg== + dependencies: + "@babel/types" "^7.18.9" + "@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" @@ -190,6 +219,20 @@ "@babel/traverse" "^7.18.6" "@babel/types" "^7.18.6" +"@babel/helper-module-transforms@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz#5a1079c005135ed627442df31a42887e80fcb712" + integrity sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.18.6" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" @@ -197,10 +240,10 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz#9448974dd4fb1d80fefe72e8a0af37809cd30d6d" - integrity sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz#4b8aea3b069d8cb8a72cdfe28ddf5ceca695ef2f" + integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w== "@babel/helper-remap-async-to-generator@^7.18.6": version "7.18.6" @@ -223,6 +266,17 @@ "@babel/traverse" "^7.18.6" "@babel/types" "^7.18.6" +"@babel/helper-replace-supers@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz#1092e002feca980fbbb0bd4d51b74a65c6a500e6" + integrity sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.18.9" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + "@babel/helper-simple-access@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz#d6d8f51f4ac2978068df934b569f08f29788c7ea" @@ -230,12 +284,12 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-skip-transparent-expression-wrappers@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.6.tgz#7dff00a5320ca4cf63270e5a0eca4b268b7380d9" - integrity sha512-4KoLhwGS9vGethZpAhYnMejWkX64wsnHPDwvOsKWU6Fg4+AlK2Jz3TyjQLMEPvz+1zemi/WBdkYxCD0bAfIkiw== +"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz#778d87b3a758d90b471e7b9918f34a9a02eb5818" + integrity sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw== dependencies: - "@babel/types" "^7.18.6" + "@babel/types" "^7.18.9" "@babel/helper-split-export-declaration@^7.18.6": version "7.18.6" @@ -301,6 +355,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.6.tgz#845338edecad65ebffef058d3be851f1d28a63bc" integrity sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw== +"@babel/parser@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.9.tgz#f2dde0c682ccc264a9a8595efd030a5cc8fd2539" + integrity sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg== + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" @@ -308,14 +367,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.6.tgz#b4e4dbc2cd1acd0133479918f7c6412961c9adb8" - integrity sha512-Udgu8ZRgrBrttVz6A0EVL0SJ1z+RLbIeqsu632SA1hf0awEppD6TvdznoH+orIF8wtFFAV/Enmw9Y+9oV8TQcw== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz#a11af19aa373d68d561f08e0a57242350ed0ec50" + integrity sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" - "@babel/plugin-proposal-optional-chaining" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" + "@babel/plugin-proposal-optional-chaining" "^7.18.9" "@babel/plugin-proposal-async-generator-functions@^7.18.6": version "7.18.6" @@ -363,12 +422,12 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-proposal-export-namespace-from@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.6.tgz#1016f0aa5ab383bbf8b3a85a2dcaedf6c8ee7491" - integrity sha512-zr/QcUlUo7GPo6+X1wC98NJADqmy5QTFWWhqeQWiki4XHafJtLl/YMGkmRB2szDD2IYJCCdBTd4ElwhId9T7Xw== +"@babel/plugin-proposal-export-namespace-from@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" + integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-proposal-json-strings@^7.18.6": @@ -379,12 +438,12 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.6.tgz#3b9cac6f1ffc2aa459d111df80c12020dfc6b665" - integrity sha512-zMo66azZth/0tVd7gmkxOkOjs2rpHyhpcFo565PUP37hSp6hSd9uUKIfTDFMz58BwqgQKhJ9YxtM5XddjXVn+Q== +"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz#8148cbb350483bf6220af06fa6db3690e14b2e23" + integrity sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": @@ -403,16 +462,16 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.6.tgz#ec93bba06bfb3e15ebd7da73e953d84b094d5daf" - integrity sha512-9yuM6wr4rIsKa1wlUAbZEazkCrgw2sMPEXCr4Rnwetu7cEW1NydkCWytLuYletbf8vFxdJxFhwEZqMpOx2eZyw== +"@babel/plugin-proposal-object-rest-spread@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz#f9434f6beb2c8cae9dfcf97d2a5941bbbf9ad4e7" + integrity sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q== dependencies: - "@babel/compat-data" "^7.18.6" - "@babel/helper-compilation-targets" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/compat-data" "^7.18.8" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.18.6" + "@babel/plugin-transform-parameters" "^7.18.8" "@babel/plugin-proposal-optional-catch-binding@^7.18.6": version "7.18.6" @@ -422,13 +481,13 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.6.tgz#46d4f2ffc20e87fad1d98bc4fa5d466366f6aa0b" - integrity sha512-PatI6elL5eMzoypFAiYDpYQyMtXTn+iMhuxxQt5mAXD4fEmKorpSI3PHd+i3JXBJN3xyA6MvJv7at23HffFHwA== +"@babel/plugin-proposal-optional-chaining@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993" + integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-proposal-private-methods@^7.18.6": @@ -627,40 +686,40 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-block-scoping@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.6.tgz#b5f78318914615397d86a731ef2cc668796a726c" - integrity sha512-pRqwb91C42vs1ahSAWJkxOxU1RHWDn16XAa6ggQ72wjLlWyYeAcLvTtE0aM8ph3KNydy9CQF2nLYcjq1WysgxQ== +"@babel/plugin-transform-block-scoping@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz#f9b7e018ac3f373c81452d6ada8bd5a18928926d" + integrity sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-classes@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.6.tgz#3501a8f3f4c7d5697c27a3eedbee71d68312669f" - integrity sha512-XTg8XW/mKpzAF3actL554Jl/dOYoJtv3l8fxaEczpgz84IeeVf+T1u2CSvPHuZbt0w3JkIx4rdn/MRQI7mo0HQ== +"@babel/plugin-transform-classes@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz#90818efc5b9746879b869d5ce83eb2aa48bbc3da" + integrity sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.6" - "@babel/helper-function-name" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-replace-supers" "^7.18.9" "@babel/helper-split-export-declaration" "^7.18.6" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.6.tgz#5d15eb90e22e69604f3348344c91165c5395d032" - integrity sha512-9repI4BhNrR0KenoR9vm3/cIc1tSBIo+u1WVjKCAynahj25O8zfbiE6JtAtHPGQSs4yZ+bA8mRasRP+qc+2R5A== +"@babel/plugin-transform-computed-properties@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz#2357a8224d402dad623caf6259b611e56aec746e" + integrity sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-destructuring@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.6.tgz#a98b0e42c7ffbf5eefcbcf33280430f230895c6f" - integrity sha512-tgy3u6lRp17ilY8r1kP4i2+HDUwxlVqq3RTc943eAWSzGgpU1qhiKpqZ5CMyHReIYPHdo3Kg8v8edKtDqSVEyQ== +"@babel/plugin-transform-destructuring@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz#68906549c021cb231bee1db21d3b5b095f8ee292" + integrity sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.18.6" @@ -670,12 +729,12 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-duplicate-keys@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.6.tgz#e6c94e8cd3c9dd8a88144f7b78ae22975a7ff473" - integrity sha512-NJU26U/208+sxYszf82nmGYqVF9QN8py2HFTblPT9hbawi8+1C5a9JubODLTGFuT0qlkqVinmkwOD13s0sZktg== +"@babel/plugin-transform-duplicate-keys@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" + integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-exponentiation-operator@^7.18.6": version "7.18.6" @@ -685,28 +744,28 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-for-of@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.6.tgz#e0fdb813be908e91ccc9ec87b30cc2eabf046f7c" - integrity sha512-WAjoMf4wIiSsy88KmG7tgj2nFdEK7E46tArVtcgED7Bkj6Fg/tG5SbvNIOKxbFS2VFgNh6+iaPswBeQZm4ox8w== +"@babel/plugin-transform-for-of@^7.18.8": + version "7.18.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" + integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-function-name@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.6.tgz#6a7e4ae2893d336fd1b8f64c9f92276391d0f1b4" - integrity sha512-kJha/Gbs5RjzIu0CxZwf5e3aTTSlhZnHMT8zPWnJMjNpLOUgqevg+PN5oMH68nMCXnfiMo4Bhgxqj59KHTlAnA== +"@babel/plugin-transform-function-name@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" + integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== dependencies: - "@babel/helper-compilation-targets" "^7.18.6" - "@babel/helper-function-name" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-literals@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.6.tgz#9d6af353b5209df72960baf4492722d56f39a205" - integrity sha512-x3HEw0cJZVDoENXOp20HlypIHfl0zMIhMVZEBVTfmqbObIpsMxMbmU5nOEO8R7LYT+z5RORKPlTI5Hj4OsO9/Q== +"@babel/plugin-transform-literals@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" + integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-member-expression-literals@^7.18.6": version "7.18.6" @@ -734,14 +793,14 @@ "@babel/helper-simple-access" "^7.18.6" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.6.tgz#026511b7657d63bf5d4cf2fd4aeb963139914a54" - integrity sha512-UbPYpXxLjTw6w6yXX2BYNxF3p6QY225wcTkfQCy3OMnSlS/C3xGtwUjEzGkldb/sy6PWLiCQ3NbYfjWUTI3t4g== +"@babel/plugin-transform-modules-systemjs@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz#545df284a7ac6a05125e3e405e536c5853099a06" + integrity sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A== dependencies: "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-module-transforms" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/helper-validator-identifier" "^7.18.6" babel-plugin-dynamic-import-node "^2.3.3" @@ -776,10 +835,10 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-replace-supers" "^7.18.6" -"@babel/plugin-transform-parameters@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.6.tgz#cbe03d5a4c6385dd756034ac1baa63c04beab8dc" - integrity sha512-FjdqgMv37yVl/gwvzkcB+wfjRI8HQmc5EgOG9iGNvUY1ok+TjsoaMP7IqCDZBhkFcM5f3OPVMs6Dmp03C5k4/A== +"@babel/plugin-transform-parameters@^7.18.8": + version "7.18.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz#ee9f1a0ce6d78af58d0956a9378ea3427cccb48a" + integrity sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -865,13 +924,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-spread@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.6.tgz#82b080241965f1689f0a60ecc6f1f6575dbdb9d6" - integrity sha512-ayT53rT/ENF8WWexIRg9AiV9h0aIteyWn5ptfZTZQrjk/+f3WdrJGCY4c9wcgl2+MKkKPhzbYp97FTsquZpDCw== +"@babel/plugin-transform-spread@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz#6ea7a6297740f381c540ac56caf75b05b74fb664" + integrity sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-transform-sticky-regex@^7.18.6": version "7.18.6" @@ -880,19 +939,19 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-template-literals@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.6.tgz#b763f4dc9d11a7cce58cf9a490d82e80547db9c2" - integrity sha512-UuqlRrQmT2SWRvahW46cGSany0uTlcj8NYOS5sRGYi8FxPYPoLd5DDmMd32ZXEj2Jq+06uGVQKHxa/hJx2EzKw== +"@babel/plugin-transform-template-literals@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" + integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-typeof-symbol@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.6.tgz#486bb39d5a18047358e0d04dc0d2f322f0b92e92" - integrity sha512-7m71iS/QhsPk85xSjFPovHPcH3H9qeyzsujhTc+vcdnsXavoWYJ74zx0lP5RhpC5+iDnVLO+PPMHzC11qels1g== +"@babel/plugin-transform-typeof-symbol@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" + integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-unicode-escapes@^7.18.6": version "7.18.6" @@ -909,29 +968,29 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/preset-env@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.6.tgz#953422e98a5f66bc56cd0b9074eaea127ec86ace" - integrity sha512-WrthhuIIYKrEFAwttYzgRNQ5hULGmwTj+D6l7Zdfsv5M7IWV/OZbUfbeL++Qrzx1nVJwWROIFhCHRYQV4xbPNw== +"@babel/preset-env@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.9.tgz#9b3425140d724fbe590322017466580844c7eaff" + integrity sha512-75pt/q95cMIHWssYtyfjVlvI+QEZQThQbKvR9xH+F/Agtw/s4Wfc2V9Bwd/P39VtixB7oWxGdH4GteTTwYJWMg== dependencies: - "@babel/compat-data" "^7.18.6" - "@babel/helper-compilation-targets" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/compat-data" "^7.18.8" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/helper-validator-option" "^7.18.6" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.6" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" "@babel/plugin-proposal-async-generator-functions" "^7.18.6" "@babel/plugin-proposal-class-properties" "^7.18.6" "@babel/plugin-proposal-class-static-block" "^7.18.6" "@babel/plugin-proposal-dynamic-import" "^7.18.6" - "@babel/plugin-proposal-export-namespace-from" "^7.18.6" + "@babel/plugin-proposal-export-namespace-from" "^7.18.9" "@babel/plugin-proposal-json-strings" "^7.18.6" - "@babel/plugin-proposal-logical-assignment-operators" "^7.18.6" + "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" "@babel/plugin-proposal-numeric-separator" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread" "^7.18.6" + "@babel/plugin-proposal-object-rest-spread" "^7.18.9" "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" - "@babel/plugin-proposal-optional-chaining" "^7.18.6" + "@babel/plugin-proposal-optional-chaining" "^7.18.9" "@babel/plugin-proposal-private-methods" "^7.18.6" "@babel/plugin-proposal-private-property-in-object" "^7.18.6" "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" @@ -953,37 +1012,37 @@ "@babel/plugin-transform-arrow-functions" "^7.18.6" "@babel/plugin-transform-async-to-generator" "^7.18.6" "@babel/plugin-transform-block-scoped-functions" "^7.18.6" - "@babel/plugin-transform-block-scoping" "^7.18.6" - "@babel/plugin-transform-classes" "^7.18.6" - "@babel/plugin-transform-computed-properties" "^7.18.6" - "@babel/plugin-transform-destructuring" "^7.18.6" + "@babel/plugin-transform-block-scoping" "^7.18.9" + "@babel/plugin-transform-classes" "^7.18.9" + "@babel/plugin-transform-computed-properties" "^7.18.9" + "@babel/plugin-transform-destructuring" "^7.18.9" "@babel/plugin-transform-dotall-regex" "^7.18.6" - "@babel/plugin-transform-duplicate-keys" "^7.18.6" + "@babel/plugin-transform-duplicate-keys" "^7.18.9" "@babel/plugin-transform-exponentiation-operator" "^7.18.6" - "@babel/plugin-transform-for-of" "^7.18.6" - "@babel/plugin-transform-function-name" "^7.18.6" - "@babel/plugin-transform-literals" "^7.18.6" + "@babel/plugin-transform-for-of" "^7.18.8" + "@babel/plugin-transform-function-name" "^7.18.9" + "@babel/plugin-transform-literals" "^7.18.9" "@babel/plugin-transform-member-expression-literals" "^7.18.6" "@babel/plugin-transform-modules-amd" "^7.18.6" "@babel/plugin-transform-modules-commonjs" "^7.18.6" - "@babel/plugin-transform-modules-systemjs" "^7.18.6" + "@babel/plugin-transform-modules-systemjs" "^7.18.9" "@babel/plugin-transform-modules-umd" "^7.18.6" "@babel/plugin-transform-named-capturing-groups-regex" "^7.18.6" "@babel/plugin-transform-new-target" "^7.18.6" "@babel/plugin-transform-object-super" "^7.18.6" - "@babel/plugin-transform-parameters" "^7.18.6" + "@babel/plugin-transform-parameters" "^7.18.8" "@babel/plugin-transform-property-literals" "^7.18.6" "@babel/plugin-transform-regenerator" "^7.18.6" "@babel/plugin-transform-reserved-words" "^7.18.6" "@babel/plugin-transform-shorthand-properties" "^7.18.6" - "@babel/plugin-transform-spread" "^7.18.6" + "@babel/plugin-transform-spread" "^7.18.9" "@babel/plugin-transform-sticky-regex" "^7.18.6" - "@babel/plugin-transform-template-literals" "^7.18.6" - "@babel/plugin-transform-typeof-symbol" "^7.18.6" + "@babel/plugin-transform-template-literals" "^7.18.9" + "@babel/plugin-transform-typeof-symbol" "^7.18.9" "@babel/plugin-transform-unicode-escapes" "^7.18.6" "@babel/plugin-transform-unicode-regex" "^7.18.6" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.18.6" + "@babel/types" "^7.18.9" babel-plugin-polyfill-corejs2 "^0.3.1" babel-plugin-polyfill-corejs3 "^0.5.2" babel-plugin-polyfill-regenerator "^0.3.1" @@ -1060,10 +1119,26 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.18.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.6.tgz#5d781dd10a3f0c9f1f931bd19de5eb26ec31acf0" - integrity sha512-NdBNzPDwed30fZdDQtVR7ZgaO4UKjuaQFH9VArS+HMnurlOY0JWN+4ROlu/iapMFwjRQU4pOG4StZfDmulEwGA== +"@babel/traverse@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.9.tgz#deeff3e8f1bad9786874cb2feda7a2d77a904f98" + integrity sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.9" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.18.9" + "@babel/types" "^7.18.9" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.9.tgz#7148d64ba133d8d73a41b3172ac4b83a1452205f" + integrity sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg== dependencies: "@babel/helper-validator-identifier" "^7.18.6" to-fast-properties "^2.0.0" @@ -1456,6 +1531,15 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" +"@jridgewell/gen-mapping@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + "@jridgewell/resolve-uri@^3.0.3": version "3.0.4" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.4.tgz#b876e3feefb9c8d3aa84014da28b5e52a0640d72" @@ -1466,6 +1550,11 @@ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.0.tgz#1179863356ac8fbea64a5a4bcde93a4871012c01" integrity sha512-SfJxIxNVYLTsKwzB3MoOQ1yxf4w/E6MdkvTgrgAt1bfxjSrLUoHMKrDOykwN14q65waezZIdqDneUIPh4/sKxg== +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.10" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.10.tgz#baf57b4e2a690d4f38560171f91783656b7f8186" From e8207d984086347794f3608f610bf72797b7426a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Jul 2022 20:25:45 +0900 Subject: [PATCH 239/652] Bump @babel/runtime from 7.18.6 to 7.18.9 (#18833) Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.18.6 to 7.18.9. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.9/packages/babel-runtime) --- updated-dependencies: - dependency-name: "@babel/runtime" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index e7aaa7366..420997758 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "@babel/plugin-transform-runtime": "^7.18.6", "@babel/preset-env": "^7.18.9", "@babel/preset-react": "^7.18.6", - "@babel/runtime": "^7.18.6", + "@babel/runtime": "^7.18.9", "@gamestdio/websocket": "^0.3.2", "@github/webauthn-json": "^0.5.7", "@rails/ujs": "^6.1.6", diff --git a/yarn.lock b/yarn.lock index 0101ee516..36775b18d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1087,10 +1087,10 @@ dependencies: regenerator-runtime "^0.12.0" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.6", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.6.tgz#6a1ef59f838debd670421f8c7f2cbb8da9751580" - integrity sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ== +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a" + integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== dependencies: regenerator-runtime "^0.13.4" From e8e65c10bce131df66bc2864d5152303035281af Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Jul 2022 20:26:23 +0900 Subject: [PATCH 240/652] Bump babel-jest from 28.1.2 to 28.1.3 (#18838) Bumps [babel-jest](https://github.com/facebook/jest/tree/HEAD/packages/babel-jest) from 28.1.2 to 28.1.3. - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v28.1.3/packages/babel-jest) --- updated-dependencies: - dependency-name: babel-jest dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 108 ++++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 87 insertions(+), 23 deletions(-) diff --git a/package.json b/package.json index 420997758..232a24d14 100644 --- a/package.json +++ b/package.json @@ -142,7 +142,7 @@ "@babel/eslint-parser": "^7.18.2", "@testing-library/jest-dom": "^5.16.4", "@testing-library/react": "^12.1.5", - "babel-jest": "^28.1.2", + "babel-jest": "^28.1.3", "eslint": "^7.32.0", "eslint-plugin-import": "~2.26.0", "eslint-plugin-jsx-a11y": "~6.6.0", diff --git a/yarn.lock b/yarn.lock index 36775b18d..b8e9a232c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1439,6 +1439,13 @@ dependencies: "@sinclair/typebox" "^0.23.3" +"@jest/schemas@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" + integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== + dependencies: + "@sinclair/typebox" "^0.24.1" + "@jest/source-map@^28.1.2": version "28.1.2" resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-28.1.2.tgz#7fe832b172b497d6663cdff6c13b0a920e139e24" @@ -1468,22 +1475,22 @@ jest-haste-map "^28.1.1" slash "^3.0.0" -"@jest/transform@^28.1.2": - version "28.1.2" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.2.tgz#b367962c53fd53821269bde050ce373e111327c1" - integrity sha512-3o+lKF6iweLeJFHBlMJysdaPbpoMmtbHEFsjzSv37HIq/wWt5ijTeO2Yf7MO5yyczCopD507cNwNLeX8Y/CuIg== +"@jest/transform@^28.1.2", "@jest/transform@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.3.tgz#59d8098e50ab07950e0f2fc0fc7ec462371281b0" + integrity sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA== dependencies: "@babel/core" "^7.11.6" - "@jest/types" "^28.1.1" + "@jest/types" "^28.1.3" "@jridgewell/trace-mapping" "^0.3.13" babel-plugin-istanbul "^6.1.1" chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.2.9" - jest-haste-map "^28.1.1" + jest-haste-map "^28.1.3" jest-regex-util "^28.0.2" - jest-util "^28.1.1" + jest-util "^28.1.3" micromatch "^4.0.4" pirates "^4.0.4" slash "^3.0.0" @@ -1522,6 +1529,18 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" +"@jest/types@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" + integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== + dependencies: + "@jest/schemas" "^28.1.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + "@jridgewell/gen-mapping@^0.3.0": version "0.3.1" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9" @@ -1662,6 +1681,11 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.23.5.tgz#93f7b9f4e3285a7a9ade7557d9a8d36809cbc47d" integrity sha512-AFBVi/iT4g20DHoujvMH1aEDn8fGJh4xsRGCP6d8RpLPMqsNPvW01Jcn0QysXTsg++/xj25NmJsGyH9xug/wKg== +"@sinclair/typebox@^0.24.1": + version "0.24.20" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.20.tgz#11a657875de6008622d53f56e063a6347c51a6dd" + integrity sha512-kVaO5aEFZb33nPMTZBxiPEkY+slxiPtqC7QX8f9B3eGOMBvEfuMfxp9DSTTCsRJPumPKjrge4yagyssO4q6qzQ== + "@sinonjs/commons@^1.7.0": version "1.8.1" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.1.tgz#e7df00f98a203324f6dc7cc606cad9d4a8ab2217" @@ -2550,15 +2574,15 @@ axobject-query@^2.2.0: resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== -babel-jest@^28.1.2: - version "28.1.2" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.2.tgz#2b37fb81439f14d34d8b2cc4a4bd7efabf9acbfe" - integrity sha512-pfmoo6sh4L/+5/G2OOfQrGJgvH7fTa1oChnuYH2G/6gA+JwDvO8PELwvwnofKBMNrQsam0Wy/Rw+QSrBNewq2Q== +babel-jest@^28.1.2, babel-jest@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.3.tgz#c1187258197c099072156a0a121c11ee1e3917d5" + integrity sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q== dependencies: - "@jest/transform" "^28.1.2" + "@jest/transform" "^28.1.3" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^28.1.1" + babel-preset-jest "^28.1.3" chalk "^4.0.0" graceful-fs "^4.2.9" slash "^3.0.0" @@ -2591,10 +2615,10 @@ babel-plugin-istanbul@^6.1.1: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.1.tgz#5e055cdcc47894f28341f87f5e35aad2df680b11" - integrity sha512-NovGCy5Hn25uMJSAU8FaHqzs13cFoOI4lhIujiepssjCKRsAo3TA734RDWSGxuFTsUJXerYOqQQodlxgmtqbzw== +babel-plugin-jest-hoist@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz#1952c4d0ea50f2d6d794353762278d1d8cca3fbe" + integrity sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" @@ -2700,12 +2724,12 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.1.1.tgz#5b6e5e69f963eb2d70f739c607b8f723c0ee75e4" - integrity sha512-FCq9Oud0ReTeWtcneYf/48981aTfXYuB9gbU4rBNNJVBSQ6ssv7E6v/qvbBxtOWwZFXjLZwpg+W3q7J6vhH25g== +babel-preset-jest@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz#5dfc20b99abed5db994406c2b9ab94c73aaa419d" + integrity sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A== dependencies: - babel-plugin-jest-hoist "^28.1.1" + babel-plugin-jest-hoist "^28.1.3" babel-preset-current-node-syntax "^1.0.0" balanced-match@^1.0.0: @@ -6634,6 +6658,25 @@ jest-haste-map@^28.1.1: optionalDependencies: fsevents "^2.3.2" +jest-haste-map@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.1.3.tgz#abd5451129a38d9841049644f34b034308944e2b" + integrity sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA== + dependencies: + "@jest/types" "^28.1.3" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^28.0.2" + jest-util "^28.1.3" + jest-worker "^28.1.3" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + jest-leak-detector@^28.1.1: version "28.1.1" resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.1.1.tgz#537f37afd610a4b3f4cab15e06baf60484548efb" @@ -6804,6 +6847,18 @@ jest-util@^28.1.1: graceful-fs "^4.2.9" picomatch "^2.2.3" +jest-util@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" + integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== + dependencies: + "@jest/types" "^28.1.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + jest-validate@^28.1.1: version "28.1.1" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.1.1.tgz#59b7b339b3c85b5144bd0c06ad3600f503a4acc8" @@ -6848,6 +6903,15 @@ jest-worker@^28.1.1: merge-stream "^2.0.0" supports-color "^8.0.0" +jest-worker@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.3.tgz#7e3c4ce3fa23d1bb6accb169e7f396f98ed4bb98" + integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + jest@^28.1.2: version "28.1.2" resolved "https://registry.yarnpkg.com/jest/-/jest-28.1.2.tgz#451ff24081ce31ca00b07b60c61add13aa96f8eb" From bd9095fcfa476a63a35674e4ba2eb53aaa378e88 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Jul 2022 20:27:45 +0900 Subject: [PATCH 241/652] Bump @babel/eslint-parser from 7.18.2 to 7.18.9 (#18842) Bumps [@babel/eslint-parser](https://github.com/babel/babel/tree/HEAD/eslint/babel-eslint-parser) from 7.18.2 to 7.18.9. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.9/eslint/babel-eslint-parser) --- updated-dependencies: - dependency-name: "@babel/eslint-parser" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 15 +++++---------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 232a24d14..840870fff 100644 --- a/package.json +++ b/package.json @@ -139,7 +139,7 @@ "ws": "^8.8.0" }, "devDependencies": { - "@babel/eslint-parser": "^7.18.2", + "@babel/eslint-parser": "^7.18.9", "@testing-library/jest-dom": "^5.16.4", "@testing-library/react": "^12.1.5", "babel-jest": "^28.1.3", diff --git a/yarn.lock b/yarn.lock index b8e9a232c..686b625b0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -49,10 +49,10 @@ json5 "^2.2.1" semver "^6.3.0" -"@babel/eslint-parser@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.18.2.tgz#e14dee36c010edfb0153cf900c2b0815e82e3245" - integrity sha512-oFQYkE8SuH14+uR51JVAmdqwKYXGRjEXx7s+WiagVjqQ+HPE+nnwyF2qlVG8evUsUHmPcA+6YXMEDbIhEyQc5A== +"@babel/eslint-parser@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.18.9.tgz#255a63796819a97b7578751bb08ab9f2a375a031" + integrity sha512-KzSGpMBggz4fKbRbWLNyPVTuQr6cmCcBhOyXTw/fieOVaw5oYAwcAj4a7UKcDYCPxQq+CG1NCDZH9e2JTXquiQ== dependencies: eslint-scope "^5.1.1" eslint-visitor-keys "^2.1.0" @@ -4690,12 +4690,7 @@ eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== -eslint-visitor-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" - integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== - -eslint-visitor-keys@^2.1.0: +eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== From 22755e621bf906d1b2a4d4124445d214c4cd6d18 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Jul 2022 20:28:53 +0900 Subject: [PATCH 242/652] Bump nokogiri from 1.13.6 to 1.13.7 (#18843) Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.13.6 to 1.13.7. - [Release notes](https://github.com/sparklemotion/nokogiri/releases) - [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.13.6...v1.13.7) --- updated-dependencies: - dependency-name: nokogiri dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index f68442d43..f8f54e67a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -405,7 +405,7 @@ GEM net-ssh (>= 2.6.5, < 7.0.0) net-ssh (6.1.0) nio4r (2.5.8) - nokogiri (1.13.6) + nokogiri (1.13.7) mini_portile2 (~> 2.8.0) racc (~> 1.4) nsa (0.2.8) From e37a792c36fe1dab2667a10fe44901dc3f466bdb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Jul 2022 20:29:18 +0900 Subject: [PATCH 243/652] Bump jest-environment-jsdom from 28.1.2 to 28.1.3 (#18840) Bumps [jest-environment-jsdom](https://github.com/facebook/jest/tree/HEAD/packages/jest-environment-jsdom) from 28.1.2 to 28.1.3. - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v28.1.3/packages/jest-environment-jsdom) --- updated-dependencies: - dependency-name: jest-environment-jsdom dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 103 ++++++++++++++++++++++++++++++++------------------- 2 files changed, 65 insertions(+), 40 deletions(-) diff --git a/package.json b/package.json index 840870fff..0881f607a 100644 --- a/package.json +++ b/package.json @@ -149,7 +149,7 @@ "eslint-plugin-promise": "~6.0.0", "eslint-plugin-react": "~7.30.1", "jest": "^28.1.2", - "jest-environment-jsdom": "^28.1.2", + "jest-environment-jsdom": "^28.1.3", "postcss-scss": "^4.0.4", "prettier": "^2.7.1", "raf": "^3.4.1", diff --git a/yarn.lock b/yarn.lock index 686b625b0..f9a970a30 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1355,15 +1355,15 @@ slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^28.1.2": - version "28.1.2" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.1.2.tgz#94a052c0c5f9f8c8e6d13ea6da78dbc5d7d9b85b" - integrity sha512-I0CR1RUMmOzd0tRpz10oUfaChBWs+/Hrvn5xYhMEF/ZqrDaaeHwS8yDBqEWCrEnkH2g+WE/6g90oBv3nKpcm8Q== +"@jest/environment@^28.1.2", "@jest/environment@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.1.3.tgz#abed43a6b040a4c24fdcb69eab1f97589b2d663e" + integrity sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA== dependencies: - "@jest/fake-timers" "^28.1.2" - "@jest/types" "^28.1.1" + "@jest/fake-timers" "^28.1.3" + "@jest/types" "^28.1.3" "@types/node" "*" - jest-mock "^28.1.1" + jest-mock "^28.1.3" "@jest/expect-utils@^28.1.1": version "28.1.1" @@ -1380,17 +1380,17 @@ expect "^28.1.1" jest-snapshot "^28.1.2" -"@jest/fake-timers@^28.1.2": - version "28.1.2" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.1.2.tgz#d49e8ee4e02ba85a6e844a52a5e7c59c23e3b76f" - integrity sha512-xSYEI7Y0D5FbZN2LsCUj/EKRR1zfQYmGuAUVh6xTqhx7V5JhjgMcK5Pa0iR6WIk0GXiHDe0Ke4A+yERKE9saqg== +"@jest/fake-timers@^28.1.2", "@jest/fake-timers@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.1.3.tgz#230255b3ad0a3d4978f1d06f70685baea91c640e" + integrity sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw== dependencies: - "@jest/types" "^28.1.1" + "@jest/types" "^28.1.3" "@sinonjs/fake-timers" "^9.1.2" "@types/node" "*" - jest-message-util "^28.1.1" - jest-mock "^28.1.1" - jest-util "^28.1.1" + jest-message-util "^28.1.3" + jest-mock "^28.1.3" + jest-util "^28.1.3" "@jest/globals@^28.1.2": version "28.1.2" @@ -1517,12 +1517,12 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" -"@jest/types@^28.1.1": - version "28.1.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.1.tgz#d059bbc80e6da6eda9f081f293299348bd78ee0b" - integrity sha512-vRXVqSg1VhDnB8bWcmvLzmg0Bt9CRKVgHPXqYwvWMX3TvAjeO+nRuK6+VdTKCtWOvYlmkF/HqNAL/z+N3B53Kw== +"@jest/types@^28.1.1", "@jest/types@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" + integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== dependencies: - "@jest/schemas" "^28.0.2" + "@jest/schemas" "^28.1.3" "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" @@ -6598,18 +6598,18 @@ jest-each@^28.1.1: jest-util "^28.1.1" pretty-format "^28.1.1" -jest-environment-jsdom@^28.1.2: - version "28.1.2" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-28.1.2.tgz#d3fe82ef8f900c34ab582df7d3002c5079e3d8ab" - integrity sha512-Ujhx/xFZGVPuxAVpseQ7KqdBErenuWH3Io2HujkGOKMS2VWmpnTGYHzv+73p21QJ9yYQlJkeg06rTe1svV+u0g== +jest-environment-jsdom@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-28.1.3.tgz#2d4e5d61b7f1d94c3bddfbb21f0308ee506c09fb" + integrity sha512-HnlGUmZRdxfCByd3GM2F100DgQOajUBzEitjGqIREcb45kGjZvRrKUdlaF6escXBdcXNl0OBh+1ZrfeZT3GnAg== dependencies: - "@jest/environment" "^28.1.2" - "@jest/fake-timers" "^28.1.2" - "@jest/types" "^28.1.1" + "@jest/environment" "^28.1.3" + "@jest/fake-timers" "^28.1.3" + "@jest/types" "^28.1.3" "@types/jsdom" "^16.2.4" "@types/node" "*" - jest-mock "^28.1.1" - jest-util "^28.1.1" + jest-mock "^28.1.3" + jest-util "^28.1.3" jsdom "^19.0.0" jest-environment-node@^28.1.2: @@ -6705,12 +6705,27 @@ jest-message-util@^28.1.1: slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.1.1.tgz#37903d269427fa1ef5b2447be874e1c62a39a371" - integrity sha512-bDCb0FjfsmKweAvE09dZT59IMkzgN0fYBH6t5S45NoJfd2DHkS3ySG2K+hucortryhO3fVuXdlxWcbtIuV/Skw== +jest-message-util@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.3.tgz#232def7f2e333f1eecc90649b5b94b0055e7c43d" + integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g== dependencies: - "@jest/types" "^28.1.1" + "@babel/code-frame" "^7.12.13" + "@jest/types" "^28.1.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^28.1.3" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^28.1.1, jest-mock@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.1.3.tgz#d4e9b1fc838bea595c77ab73672ebf513ab249da" + integrity sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA== + dependencies: + "@jest/types" "^28.1.3" "@types/node" "*" jest-pnp-resolver@^1.2.2: @@ -6830,12 +6845,12 @@ jest-snapshot@^28.1.2: pretty-format "^28.1.1" semver "^7.3.5" -jest-util@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.1.tgz#ff39e436a1aca397c0ab998db5a51ae2b7080d05" - integrity sha512-FktOu7ca1DZSyhPAxgxB6hfh2+9zMoJ7aEQA759Z6p45NuO8mWcqujH+UdHlCm/V6JTWwDztM2ITCzU1ijJAfw== +jest-util@^28.1.1, jest-util@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" + integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== dependencies: - "@jest/types" "^28.1.1" + "@jest/types" "^28.1.3" "@types/node" "*" chalk "^4.0.0" ci-info "^3.2.0" @@ -8981,6 +8996,16 @@ pretty-format@^28.1.1: ansi-styles "^5.0.0" react-is "^18.0.0" +pretty-format@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5" + integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q== + dependencies: + "@jest/schemas" "^28.1.3" + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^18.0.0" + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" From d7595ce3332389495c3b597376d8113f092c8bb4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Jul 2022 20:29:59 +0900 Subject: [PATCH 244/652] Bump oj from 3.13.16 to 3.13.17 (#18835) Bumps [oj](https://github.com/ohler55/oj) from 3.13.16 to 3.13.17. - [Release notes](https://github.com/ohler55/oj/releases) - [Changelog](https://github.com/ohler55/oj/blob/develop/CHANGELOG.md) - [Commits](https://github.com/ohler55/oj/compare/v3.13.16...v3.13.17) --- updated-dependencies: - dependency-name: oj dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index f8f54e67a..af07cb9a2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -413,7 +413,7 @@ GEM concurrent-ruby (~> 1.0, >= 1.0.2) sidekiq (>= 3.5) statsd-ruby (~> 1.4, >= 1.4.0) - oj (3.13.16) + oj (3.13.17) omniauth (1.9.1) hashie (>= 3.4.6) rack (>= 1.6.2, < 3) From f8835387ea6ce66c16a1c1baf582a787bf436903 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Jul 2022 20:30:41 +0900 Subject: [PATCH 245/652] Bump react-toggle from 4.1.2 to 4.1.3 (#18839) Bumps [react-toggle](https://github.com/aaronshaf/react-toggle) from 4.1.2 to 4.1.3. - [Release notes](https://github.com/aaronshaf/react-toggle/releases) - [Changelog](https://github.com/aaronshaf/react-toggle/blob/master/CHANGELOG.md) - [Commits](https://github.com/aaronshaf/react-toggle/commits) --- updated-dependencies: - dependency-name: react-toggle dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 0881f607a..daaf8af2a 100644 --- a/package.json +++ b/package.json @@ -109,7 +109,7 @@ "react-sparklines": "^1.7.0", "react-swipeable-views": "^0.14.0", "react-textarea-autosize": "^8.3.4", - "react-toggle": "^4.1.2", + "react-toggle": "^4.1.3", "redis": "^4.0.6 <4.1.0", "redux": "^4.2.0", "redux-immutable": "^4.0.0", diff --git a/yarn.lock b/yarn.lock index f9a970a30..f07c6d454 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9459,10 +9459,10 @@ react-textarea-autosize@^8.3.4: use-composed-ref "^1.3.0" use-latest "^1.2.1" -react-toggle@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/react-toggle/-/react-toggle-4.1.2.tgz#b00500832f925ad524356d909821821ae39f6c52" - integrity sha512-4Ohw31TuYQdhWfA6qlKafeXx3IOH7t4ZHhmRdwsm1fQREwOBGxJT+I22sgHqR/w8JRdk+AeMCJXPImEFSrNXow== +react-toggle@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/react-toggle/-/react-toggle-4.1.3.tgz#99193392cca8e495710860c49f55e74c4e6cf452" + integrity sha512-WoPrvbwfQSvoagbrDnXPrlsxwzuhQIrs+V0I162j/s+4XPgY/YDAUmHSeWiroznfI73wj+MBydvW95zX8ABbSg== dependencies: classnames "^2.2.5" From f290be71e02c842c583979eb419f2fbb86fffbcb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Jul 2022 20:36:45 +0900 Subject: [PATCH 246/652] Bump @babel/plugin-proposal-decorators from 7.18.6 to 7.18.9 (#18837) Bumps [@babel/plugin-proposal-decorators](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-proposal-decorators) from 7.18.6 to 7.18.9. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.9/packages/babel-plugin-proposal-decorators) --- updated-dependencies: - dependency-name: "@babel/plugin-proposal-decorators" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 50 ++++++++++++++++---------------------------------- 2 files changed, 17 insertions(+), 35 deletions(-) diff --git a/package.json b/package.json index daaf8af2a..d76e0fe35 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "private": true, "dependencies": { "@babel/core": "^7.18.6", - "@babel/plugin-proposal-decorators": "^7.18.6", + "@babel/plugin-proposal-decorators": "^7.18.9", "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.18.6", "@babel/preset-env": "^7.18.9", diff --git a/yarn.lock b/yarn.lock index f07c6d454..1ef86911e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -109,17 +109,17 @@ browserslist "^4.20.2" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.6.tgz#6f15f8459f3b523b39e00a99982e2c040871ed72" - integrity sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw== +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz#d802ee16a64a9e824fcbf0a2ffc92f19d58550ce" + integrity sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.6" - "@babel/helper-function-name" "^7.18.6" - "@babel/helper-member-expression-to-functions" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.18.9" "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.9" "@babel/helper-split-export-declaration" "^7.18.6" "@babel/helper-create-regexp-features-plugin@^7.18.6": @@ -184,13 +184,6 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-member-expression-to-functions@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.6.tgz#44802d7d602c285e1692db0bad9396d007be2afc" - integrity sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng== - dependencies: - "@babel/types" "^7.18.6" - "@babel/helper-member-expression-to-functions@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815" @@ -255,18 +248,7 @@ "@babel/helper-wrap-function" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/helper-replace-supers@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.6.tgz#efedf51cfccea7b7b8c0f00002ab317e7abfe420" - integrity sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g== - dependencies: - "@babel/helper-environment-visitor" "^7.18.6" - "@babel/helper-member-expression-to-functions" "^7.18.6" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/traverse" "^7.18.6" - "@babel/types" "^7.18.6" - -"@babel/helper-replace-supers@^7.18.9": +"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz#1092e002feca980fbbb0bd4d51b74a65c6a500e6" integrity sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ== @@ -403,14 +385,14 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-proposal-decorators@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.18.6.tgz#68e9fd0f022b944f84a8824bb28bfaee724d2595" - integrity sha512-gAdhsjaYmiZVxx5vTMiRfj31nB7LhwBJFMSLzeDxc7X4tKLixup0+k9ughn0RcpBrv9E3PBaXJW7jF5TCihAOg== +"@babel/plugin-proposal-decorators@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.18.9.tgz#d09d41ffc74af8499d2ac706ed0dbd5474711665" + integrity sha512-KD7zDNaD14CRpjQjVbV4EnH9lsKYlcpUrhZH37ei2IY+AlXrfAPy5pTmRUE4X6X1k8EsKXPraykxeaogqQvSGA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-replace-supers" "^7.18.9" "@babel/helper-split-export-declaration" "^7.18.6" "@babel/plugin-syntax-decorators" "^7.18.6" From 21a536a16ea37e874c2645c611ade3f397c27adc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Jul 2022 20:47:44 +0900 Subject: [PATCH 247/652] Bump jest from 28.1.2 to 28.1.3 (#18832) Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 28.1.2 to 28.1.3. - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v28.1.3/packages/jest) --- updated-dependencies: - dependency-name: jest dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 586 ++++++++++++++++++++++----------------------------- 2 files changed, 253 insertions(+), 335 deletions(-) diff --git a/package.json b/package.json index d76e0fe35..14e5c6280 100644 --- a/package.json +++ b/package.json @@ -148,7 +148,7 @@ "eslint-plugin-jsx-a11y": "~6.6.0", "eslint-plugin-promise": "~6.0.0", "eslint-plugin-react": "~7.30.1", - "jest": "^28.1.2", + "jest": "^28.1.3", "jest-environment-jsdom": "^28.1.3", "postcss-scss": "^4.0.4", "prettier": "^2.7.1", diff --git a/yarn.lock b/yarn.lock index 1ef86911e..7d95b881b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1290,54 +1290,54 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@jest/console@^28.1.1": - version "28.1.1" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.1.tgz#305f8ca50b6e70413839f54c0e002b60a0f2fd7d" - integrity sha512-0RiUocPVFEm3WRMOStIHbRWllG6iW6E3/gUPnf4lkrVFyXIIDeCe+vlKeYyFOMhB2EPE6FLFCNADSOOQMaqvyA== +"@jest/console@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.3.tgz#2030606ec03a18c31803b8a36382762e447655df" + integrity sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw== dependencies: - "@jest/types" "^28.1.1" + "@jest/types" "^28.1.3" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^28.1.1" - jest-util "^28.1.1" + jest-message-util "^28.1.3" + jest-util "^28.1.3" slash "^3.0.0" -"@jest/core@^28.1.2": - version "28.1.2" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.1.2.tgz#eac519b9acbd154313854b8823a47b5c645f785a" - integrity sha512-Xo4E+Sb/nZODMGOPt2G3cMmCBqL4/W2Ijwr7/mrXlq4jdJwcFQ/9KrrJZT2adQRk2otVBXXOz1GRQ4Z5iOgvRQ== +"@jest/core@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.1.3.tgz#0ebf2bd39840f1233cd5f2d1e6fc8b71bd5a1ac7" + integrity sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA== dependencies: - "@jest/console" "^28.1.1" - "@jest/reporters" "^28.1.2" - "@jest/test-result" "^28.1.1" - "@jest/transform" "^28.1.2" - "@jest/types" "^28.1.1" + "@jest/console" "^28.1.3" + "@jest/reporters" "^28.1.3" + "@jest/test-result" "^28.1.3" + "@jest/transform" "^28.1.3" + "@jest/types" "^28.1.3" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" ci-info "^3.2.0" exit "^0.1.2" graceful-fs "^4.2.9" - jest-changed-files "^28.0.2" - jest-config "^28.1.2" - jest-haste-map "^28.1.1" - jest-message-util "^28.1.1" + jest-changed-files "^28.1.3" + jest-config "^28.1.3" + jest-haste-map "^28.1.3" + jest-message-util "^28.1.3" jest-regex-util "^28.0.2" - jest-resolve "^28.1.1" - jest-resolve-dependencies "^28.1.2" - jest-runner "^28.1.2" - jest-runtime "^28.1.2" - jest-snapshot "^28.1.2" - jest-util "^28.1.1" - jest-validate "^28.1.1" - jest-watcher "^28.1.1" + jest-resolve "^28.1.3" + jest-resolve-dependencies "^28.1.3" + jest-runner "^28.1.3" + jest-runtime "^28.1.3" + jest-snapshot "^28.1.3" + jest-util "^28.1.3" + jest-validate "^28.1.3" + jest-watcher "^28.1.3" micromatch "^4.0.4" - pretty-format "^28.1.1" + pretty-format "^28.1.3" rimraf "^3.0.0" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^28.1.2", "@jest/environment@^28.1.3": +"@jest/environment@^28.1.3": version "28.1.3" resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.1.3.tgz#abed43a6b040a4c24fdcb69eab1f97589b2d663e" integrity sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA== @@ -1347,22 +1347,22 @@ "@types/node" "*" jest-mock "^28.1.3" -"@jest/expect-utils@^28.1.1": - version "28.1.1" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.1.1.tgz#d84c346025b9f6f3886d02c48a6177e2b0360587" - integrity sha512-n/ghlvdhCdMI/hTcnn4qV57kQuV9OTsZzH1TTCVARANKhl6hXJqLKUkwX69ftMGpsbpt96SsDD8n8LD2d9+FRw== +"@jest/expect-utils@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.1.3.tgz#58561ce5db7cd253a7edddbc051fb39dda50f525" + integrity sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA== dependencies: jest-get-type "^28.0.2" -"@jest/expect@^28.1.2": - version "28.1.2" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-28.1.2.tgz#0b25acedff46e1e1e5606285306c8a399c12534f" - integrity sha512-HBzyZBeFBiOelNbBKN0pilWbbrGvwDUwAqMC46NVJmWm8AVkuE58NbG1s7DR4cxFt4U5cVLxofAoHxgvC5MyOw== +"@jest/expect@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-28.1.3.tgz#9ac57e1d4491baca550f6bdbd232487177ad6a72" + integrity sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw== dependencies: - expect "^28.1.1" - jest-snapshot "^28.1.2" + expect "^28.1.3" + jest-snapshot "^28.1.3" -"@jest/fake-timers@^28.1.2", "@jest/fake-timers@^28.1.3": +"@jest/fake-timers@^28.1.3": version "28.1.3" resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.1.3.tgz#230255b3ad0a3d4978f1d06f70685baea91c640e" integrity sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw== @@ -1374,25 +1374,25 @@ jest-mock "^28.1.3" jest-util "^28.1.3" -"@jest/globals@^28.1.2": - version "28.1.2" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.1.2.tgz#92fab296e337c7309c25e4202fb724f62249d83f" - integrity sha512-cz0lkJVDOtDaYhvT3Fv2U1B6FtBnV+OpEyJCzTHM1fdoTsU4QNLAt/H4RkiwEUU+dL4g/MFsoTuHeT2pvbo4Hg== +"@jest/globals@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.1.3.tgz#a601d78ddc5fdef542728309894895b4a42dc333" + integrity sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA== dependencies: - "@jest/environment" "^28.1.2" - "@jest/expect" "^28.1.2" - "@jest/types" "^28.1.1" + "@jest/environment" "^28.1.3" + "@jest/expect" "^28.1.3" + "@jest/types" "^28.1.3" -"@jest/reporters@^28.1.2": - version "28.1.2" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.1.2.tgz#0327be4ce4d0d9ae49e7908656f89669d0c2a260" - integrity sha512-/whGLhiwAqeCTmQEouSigUZJPVl7sW8V26EiboImL+UyXznnr1a03/YZ2BX8OlFw0n+Zlwu+EZAITZtaeRTxyA== +"@jest/reporters@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.1.3.tgz#9adf6d265edafc5fc4a434cfb31e2df5a67a369a" + integrity sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^28.1.1" - "@jest/test-result" "^28.1.1" - "@jest/transform" "^28.1.2" - "@jest/types" "^28.1.1" + "@jest/console" "^28.1.3" + "@jest/test-result" "^28.1.3" + "@jest/transform" "^28.1.3" + "@jest/types" "^28.1.3" "@jridgewell/trace-mapping" "^0.3.13" "@types/node" "*" chalk "^4.0.0" @@ -1405,22 +1405,15 @@ istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.1.3" - jest-message-util "^28.1.1" - jest-util "^28.1.1" - jest-worker "^28.1.1" + jest-message-util "^28.1.3" + jest-util "^28.1.3" + jest-worker "^28.1.3" slash "^3.0.0" string-length "^4.0.1" strip-ansi "^6.0.0" terminal-link "^2.0.0" v8-to-istanbul "^9.0.1" -"@jest/schemas@^28.0.2": - version "28.0.2" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.0.2.tgz#08c30df6a8d07eafea0aef9fb222c5e26d72e613" - integrity sha512-YVDJZjd4izeTDkij00vHHAymNXQ6WWsdChFRK86qck6Jpr3DCL5W3Is3vslviRlP+bLuMYRLbdp98amMvqudhA== - dependencies: - "@sinclair/typebox" "^0.23.3" - "@jest/schemas@^28.1.3": version "28.1.3" resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" @@ -1437,27 +1430,27 @@ callsites "^3.0.0" graceful-fs "^4.2.9" -"@jest/test-result@^28.1.1": - version "28.1.1" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.1.tgz#c6f18d1bbb01aa88925dd687872a75f8414b317a" - integrity sha512-hPmkugBktqL6rRzwWAtp1JtYT4VHwv8OQ+9lE5Gymj6dHzubI/oJHMUpPOt8NrdVWSrz9S7bHjJUmv2ggFoUNQ== +"@jest/test-result@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.3.tgz#5eae945fd9f4b8fcfce74d239e6f725b6bf076c5" + integrity sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg== dependencies: - "@jest/console" "^28.1.1" - "@jest/types" "^28.1.1" + "@jest/console" "^28.1.3" + "@jest/types" "^28.1.3" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^28.1.1": - version "28.1.1" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-28.1.1.tgz#f594ee2331df75000afe0d1ae3237630ecec732e" - integrity sha512-nuL+dNSVMcWB7OOtgb0EGH5AjO4UBCt68SLP08rwmC+iRhyuJWS9MtZ/MpipxFwKAlHFftbMsydXqWre8B0+XA== +"@jest/test-sequencer@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz#9d0c283d906ac599c74bde464bc0d7e6a82886c3" + integrity sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw== dependencies: - "@jest/test-result" "^28.1.1" + "@jest/test-result" "^28.1.3" graceful-fs "^4.2.9" - jest-haste-map "^28.1.1" + jest-haste-map "^28.1.3" slash "^3.0.0" -"@jest/transform@^28.1.2", "@jest/transform@^28.1.3": +"@jest/transform@^28.1.3": version "28.1.3" resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.3.tgz#59d8098e50ab07950e0f2fc0fc7ec462371281b0" integrity sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA== @@ -1499,18 +1492,6 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" -"@jest/types@^28.1.1", "@jest/types@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" - integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== - dependencies: - "@jest/schemas" "^28.1.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - "@jest/types@^28.1.3": version "28.1.3" resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" @@ -1658,11 +1639,6 @@ resolved "https://registry.yarnpkg.com/@rails/ujs/-/ujs-6.1.6.tgz#de486ae0a663e1bed637a012cbb2739bfcfa2031" integrity sha512-2M4zlthYmOC6X/tcPcFd//sIL26a7JbCpGNl8uIrQf+pR1Z47uhYt9cOwVqJTJZPurdy2k+YY3Pn64pqruAPEA== -"@sinclair/typebox@^0.23.3": - version "0.23.5" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.23.5.tgz#93f7b9f4e3285a7a9ade7557d9a8d36809cbc47d" - integrity sha512-AFBVi/iT4g20DHoujvMH1aEDn8fGJh4xsRGCP6d8RpLPMqsNPvW01Jcn0QysXTsg++/xj25NmJsGyH9xug/wKg== - "@sinclair/typebox@^0.24.1": version "0.24.20" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.20.tgz#11a657875de6008622d53f56e063a6347c51a6dd" @@ -2556,7 +2532,7 @@ axobject-query@^2.2.0: resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== -babel-jest@^28.1.2, babel-jest@^28.1.3: +babel-jest@^28.1.3: version "28.1.3" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.3.tgz#c1187258197c099072156a0a121c11ee1e3917d5" integrity sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q== @@ -4861,16 +4837,16 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -expect@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-28.1.1.tgz#ca6fff65f6517cf7220c2e805a49c19aea30b420" - integrity sha512-/AANEwGL0tWBwzLNOvO0yUdy2D52jVdNXppOqswC49sxMN2cPWsGCQdzuIf9tj6hHoBQzNvx75JUYuQAckPo3w== +expect@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/expect/-/expect-28.1.3.tgz#90a7c1a124f1824133dd4533cce2d2bdcb6603ec" + integrity sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g== dependencies: - "@jest/expect-utils" "^28.1.1" + "@jest/expect-utils" "^28.1.3" jest-get-type "^28.0.2" - jest-matcher-utils "^28.1.1" - jest-message-util "^28.1.1" - jest-util "^28.1.1" + jest-matcher-utils "^28.1.3" + jest-message-util "^28.1.3" + jest-util "^28.1.3" express@^4.17.1, express@^4.18.1: version "4.18.1" @@ -6463,82 +6439,82 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jest-changed-files@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-28.0.2.tgz#7d7810660a5bd043af9e9cfbe4d58adb05e91531" - integrity sha512-QX9u+5I2s54ZnGoMEjiM2WeBvJR2J7w/8ZUmH2um/WLAuGAYFQcsVXY9+1YL6k0H/AGUdH8pXUAv6erDqEsvIA== +jest-changed-files@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-28.1.3.tgz#d9aeee6792be3686c47cb988a8eaf82ff4238831" + integrity sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA== dependencies: execa "^5.0.0" - throat "^6.0.1" + p-limit "^3.1.0" -jest-circus@^28.1.2: - version "28.1.2" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.1.2.tgz#0d5a5623eccb244efe87d1edc365696e4fcf80ce" - integrity sha512-E2vdPIJG5/69EMpslFhaA46WkcrN74LI5V/cSJ59L7uS8UNoXbzTxmwhpi9XrIL3zqvMt5T0pl5k2l2u2GwBNQ== +jest-circus@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.1.3.tgz#d14bd11cf8ee1a03d69902dc47b6bd4634ee00e4" + integrity sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow== dependencies: - "@jest/environment" "^28.1.2" - "@jest/expect" "^28.1.2" - "@jest/test-result" "^28.1.1" - "@jest/types" "^28.1.1" + "@jest/environment" "^28.1.3" + "@jest/expect" "^28.1.3" + "@jest/test-result" "^28.1.3" + "@jest/types" "^28.1.3" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" dedent "^0.7.0" is-generator-fn "^2.0.0" - jest-each "^28.1.1" - jest-matcher-utils "^28.1.1" - jest-message-util "^28.1.1" - jest-runtime "^28.1.2" - jest-snapshot "^28.1.2" - jest-util "^28.1.1" - pretty-format "^28.1.1" + jest-each "^28.1.3" + jest-matcher-utils "^28.1.3" + jest-message-util "^28.1.3" + jest-runtime "^28.1.3" + jest-snapshot "^28.1.3" + jest-util "^28.1.3" + p-limit "^3.1.0" + pretty-format "^28.1.3" slash "^3.0.0" stack-utils "^2.0.3" - throat "^6.0.1" -jest-cli@^28.1.2: - version "28.1.2" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.1.2.tgz#b89012e5bad14135e71b1628b85475d3773a1bbc" - integrity sha512-l6eoi5Do/IJUXAFL9qRmDiFpBeEJAnjJb1dcd9i/VWfVWbp3mJhuH50dNtX67Ali4Ecvt4eBkWb4hXhPHkAZTw== +jest-cli@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.1.3.tgz#558b33c577d06de55087b8448d373b9f654e46b2" + integrity sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ== dependencies: - "@jest/core" "^28.1.2" - "@jest/test-result" "^28.1.1" - "@jest/types" "^28.1.1" + "@jest/core" "^28.1.3" + "@jest/test-result" "^28.1.3" + "@jest/types" "^28.1.3" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.9" import-local "^3.0.2" - jest-config "^28.1.2" - jest-util "^28.1.1" - jest-validate "^28.1.1" + jest-config "^28.1.3" + jest-util "^28.1.3" + jest-validate "^28.1.3" prompts "^2.0.1" yargs "^17.3.1" -jest-config@^28.1.2: - version "28.1.2" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-28.1.2.tgz#ba00ad30caf62286c86e7c1099e915218a0ac8c6" - integrity sha512-g6EfeRqddVbjPVBVY4JWpUY4IvQoFRIZcv4V36QkqzE0IGhEC/VkugFeBMAeUE7PRgC8KJF0yvJNDeQRbamEVA== +jest-config@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-28.1.3.tgz#e315e1f73df3cac31447eed8b8740a477392ec60" + integrity sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ== dependencies: "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^28.1.1" - "@jest/types" "^28.1.1" - babel-jest "^28.1.2" + "@jest/test-sequencer" "^28.1.3" + "@jest/types" "^28.1.3" + babel-jest "^28.1.3" chalk "^4.0.0" ci-info "^3.2.0" deepmerge "^4.2.2" glob "^7.1.3" graceful-fs "^4.2.9" - jest-circus "^28.1.2" - jest-environment-node "^28.1.2" + jest-circus "^28.1.3" + jest-environment-node "^28.1.3" jest-get-type "^28.0.2" jest-regex-util "^28.0.2" - jest-resolve "^28.1.1" - jest-runner "^28.1.2" - jest-util "^28.1.1" - jest-validate "^28.1.1" + jest-resolve "^28.1.3" + jest-runner "^28.1.3" + jest-util "^28.1.3" + jest-validate "^28.1.3" micromatch "^4.0.4" parse-json "^5.2.0" - pretty-format "^28.1.1" + pretty-format "^28.1.3" slash "^3.0.0" strip-json-comments "^3.1.1" @@ -6552,15 +6528,15 @@ jest-diff@^25.2.1: jest-get-type "^25.2.6" pretty-format "^25.5.0" -jest-diff@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.1.1.tgz#1a3eedfd81ae79810931c63a1d0f201b9120106c" - integrity sha512-/MUUxeR2fHbqHoMMiffe/Afm+U8U4olFRJ0hiVG2lZatPJcnGxx292ustVu7bULhjV65IYMxRdploAKLbcrsyg== +jest-diff@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.1.3.tgz#948a192d86f4e7a64c5264ad4da4877133d8792f" + integrity sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw== dependencies: chalk "^4.0.0" diff-sequences "^28.1.1" jest-get-type "^28.0.2" - pretty-format "^28.1.1" + pretty-format "^28.1.3" jest-docblock@^28.1.1: version "28.1.1" @@ -6569,16 +6545,16 @@ jest-docblock@^28.1.1: dependencies: detect-newline "^3.0.0" -jest-each@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-28.1.1.tgz#ba5238dacf4f31d9fe23ddc2c44c01e7c23885c4" - integrity sha512-A042rqh17ZvEhRceDMi784ppoXR7MWGDEKTXEZXb4svt0eShMZvijGxzKsx+yIjeE8QYmHPrnHiTSQVhN4nqaw== +jest-each@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-28.1.3.tgz#bdd1516edbe2b1f3569cfdad9acd543040028f81" + integrity sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g== dependencies: - "@jest/types" "^28.1.1" + "@jest/types" "^28.1.3" chalk "^4.0.0" jest-get-type "^28.0.2" - jest-util "^28.1.1" - pretty-format "^28.1.1" + jest-util "^28.1.3" + pretty-format "^28.1.3" jest-environment-jsdom@^28.1.3: version "28.1.3" @@ -6594,17 +6570,17 @@ jest-environment-jsdom@^28.1.3: jest-util "^28.1.3" jsdom "^19.0.0" -jest-environment-node@^28.1.2: - version "28.1.2" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.1.2.tgz#3e2eb47f6d173b0648d5f7c717cb1c26651d5c8a" - integrity sha512-oYsZz9Qw27XKmOgTtnl0jW7VplJkN2oeof+SwAwKFQacq3CLlG9u4kTGuuLWfvu3J7bVutWlrbEQMOCL/jughw== +jest-environment-node@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.1.3.tgz#7e74fe40eb645b9d56c0c4b70ca4357faa349be5" + integrity sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A== dependencies: - "@jest/environment" "^28.1.2" - "@jest/fake-timers" "^28.1.2" - "@jest/types" "^28.1.1" + "@jest/environment" "^28.1.3" + "@jest/fake-timers" "^28.1.3" + "@jest/types" "^28.1.3" "@types/node" "*" - jest-mock "^28.1.1" - jest-util "^28.1.1" + jest-mock "^28.1.3" + jest-util "^28.1.3" jest-get-type@^25.2.6: version "25.2.6" @@ -6616,25 +6592,6 @@ jest-get-type@^28.0.2: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-28.0.2.tgz#34622e628e4fdcd793d46db8a242227901fcf203" integrity sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA== -jest-haste-map@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.1.1.tgz#471685f1acd365a9394745bb97c8fc16289adca3" - integrity sha512-ZrRSE2o3Ezh7sb1KmeLEZRZ4mgufbrMwolcFHNRSjKZhpLa8TdooXOOFlSwoUzlbVs1t0l7upVRW2K7RWGHzbQ== - dependencies: - "@jest/types" "^28.1.1" - "@types/graceful-fs" "^4.1.3" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^28.0.2" - jest-util "^28.1.1" - jest-worker "^28.1.1" - micromatch "^4.0.4" - walker "^1.0.8" - optionalDependencies: - fsevents "^2.3.2" - jest-haste-map@^28.1.3: version "28.1.3" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.1.3.tgz#abd5451129a38d9841049644f34b034308944e2b" @@ -6654,38 +6611,23 @@ jest-haste-map@^28.1.3: optionalDependencies: fsevents "^2.3.2" -jest-leak-detector@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.1.1.tgz#537f37afd610a4b3f4cab15e06baf60484548efb" - integrity sha512-4jvs8V8kLbAaotE+wFR7vfUGf603cwYtFf1/PYEsyX2BAjSzj8hQSVTP6OWzseTl0xL6dyHuKs2JAks7Pfubmw== +jest-leak-detector@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz#a6685d9b074be99e3adee816ce84fd30795e654d" + integrity sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA== dependencies: jest-get-type "^28.0.2" - pretty-format "^28.1.1" + pretty-format "^28.1.3" -jest-matcher-utils@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.1.tgz#a7c4653c2b782ec96796eb3088060720f1e29304" - integrity sha512-NPJPRWrbmR2nAJ+1nmnfcKKzSwgfaciCCrYZzVnNoxVoyusYWIjkBMNvu0RHJe7dNj4hH3uZOPZsQA+xAYWqsw== +jest-matcher-utils@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz#5a77f1c129dd5ba3b4d7fc20728806c78893146e" + integrity sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw== dependencies: chalk "^4.0.0" - jest-diff "^28.1.1" + jest-diff "^28.1.3" jest-get-type "^28.0.2" - pretty-format "^28.1.1" - -jest-message-util@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.1.tgz#60aa0b475cfc08c8a9363ed2fb9108514dd9ab89" - integrity sha512-xoDOOT66fLfmTRiqkoLIU7v42mal/SqwDKvfmfiWAdJMSJiU+ozgluO7KbvoAgiwIrrGZsV7viETjc8GNrA/IQ== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^28.1.1" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^28.1.1" - slash "^3.0.0" - stack-utils "^2.0.3" + pretty-format "^28.1.3" jest-message-util@^28.1.3: version "28.1.3" @@ -6702,7 +6644,7 @@ jest-message-util@^28.1.3: slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^28.1.1, jest-mock@^28.1.3: +jest-mock@^28.1.3: version "28.1.3" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.1.3.tgz#d4e9b1fc838bea595c77ab73672ebf513ab249da" integrity sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA== @@ -6720,125 +6662,113 @@ jest-regex-util@^28.0.2: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== -jest-resolve-dependencies@^28.1.2: - version "28.1.2" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.2.tgz#ca528858e0c6642d5a1dda8fc7cda10230c275bc" - integrity sha512-OXw4vbOZuyRTBi3tapWBqdyodU+T33ww5cPZORuTWkg+Y8lmsxQlVu3MWtJh6NMlKRTHQetF96yGPv01Ye7Mbg== +jest-resolve-dependencies@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz#8c65d7583460df7275c6ea2791901fa975c1fe66" + integrity sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA== dependencies: jest-regex-util "^28.0.2" - jest-snapshot "^28.1.2" + jest-snapshot "^28.1.3" -jest-resolve@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-28.1.1.tgz#bc2eaf384abdcc1aaf3ba7c50d1adf01e59095e5" - integrity sha512-/d1UbyUkf9nvsgdBildLe6LAD4DalgkgZcKd0nZ8XUGPyA/7fsnaQIlKVnDiuUXv/IeZhPEDrRJubVSulxrShA== +jest-resolve@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-28.1.3.tgz#cfb36100341ddbb061ec781426b3c31eb51aa0a8" + integrity sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ== dependencies: chalk "^4.0.0" graceful-fs "^4.2.9" - jest-haste-map "^28.1.1" + jest-haste-map "^28.1.3" jest-pnp-resolver "^1.2.2" - jest-util "^28.1.1" - jest-validate "^28.1.1" + jest-util "^28.1.3" + jest-validate "^28.1.3" resolve "^1.20.0" resolve.exports "^1.1.0" slash "^3.0.0" -jest-runner@^28.1.2: - version "28.1.2" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-28.1.2.tgz#f293409592a62234285a71237e38499a3554e350" - integrity sha512-6/k3DlAsAEr5VcptCMdhtRhOoYClZQmxnVMZvZ/quvPGRpN7OBQYPIC32tWSgOnbgqLXNs5RAniC+nkdFZpD4A== +jest-runner@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-28.1.3.tgz#5eee25febd730b4713a2cdfd76bdd5557840f9a1" + integrity sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA== dependencies: - "@jest/console" "^28.1.1" - "@jest/environment" "^28.1.2" - "@jest/test-result" "^28.1.1" - "@jest/transform" "^28.1.2" - "@jest/types" "^28.1.1" + "@jest/console" "^28.1.3" + "@jest/environment" "^28.1.3" + "@jest/test-result" "^28.1.3" + "@jest/transform" "^28.1.3" + "@jest/types" "^28.1.3" "@types/node" "*" chalk "^4.0.0" emittery "^0.10.2" graceful-fs "^4.2.9" jest-docblock "^28.1.1" - jest-environment-node "^28.1.2" - jest-haste-map "^28.1.1" - jest-leak-detector "^28.1.1" - jest-message-util "^28.1.1" - jest-resolve "^28.1.1" - jest-runtime "^28.1.2" - jest-util "^28.1.1" - jest-watcher "^28.1.1" - jest-worker "^28.1.1" + jest-environment-node "^28.1.3" + jest-haste-map "^28.1.3" + jest-leak-detector "^28.1.3" + jest-message-util "^28.1.3" + jest-resolve "^28.1.3" + jest-runtime "^28.1.3" + jest-util "^28.1.3" + jest-watcher "^28.1.3" + jest-worker "^28.1.3" + p-limit "^3.1.0" source-map-support "0.5.13" - throat "^6.0.1" -jest-runtime@^28.1.2: - version "28.1.2" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-28.1.2.tgz#d68f34f814a848555a345ceda23289f14d59a688" - integrity sha512-i4w93OsWzLOeMXSi9epmakb2+3z0AchZtUQVF1hesBmcQQy4vtaql5YdVe9KexdJaVRyPDw8DoBR0j3lYsZVYw== +jest-runtime@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-28.1.3.tgz#a57643458235aa53e8ec7821949e728960d0605f" + integrity sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw== dependencies: - "@jest/environment" "^28.1.2" - "@jest/fake-timers" "^28.1.2" - "@jest/globals" "^28.1.2" + "@jest/environment" "^28.1.3" + "@jest/fake-timers" "^28.1.3" + "@jest/globals" "^28.1.3" "@jest/source-map" "^28.1.2" - "@jest/test-result" "^28.1.1" - "@jest/transform" "^28.1.2" - "@jest/types" "^28.1.1" + "@jest/test-result" "^28.1.3" + "@jest/transform" "^28.1.3" + "@jest/types" "^28.1.3" chalk "^4.0.0" cjs-module-lexer "^1.0.0" collect-v8-coverage "^1.0.0" execa "^5.0.0" glob "^7.1.3" graceful-fs "^4.2.9" - jest-haste-map "^28.1.1" - jest-message-util "^28.1.1" - jest-mock "^28.1.1" + jest-haste-map "^28.1.3" + jest-message-util "^28.1.3" + jest-mock "^28.1.3" jest-regex-util "^28.0.2" - jest-resolve "^28.1.1" - jest-snapshot "^28.1.2" - jest-util "^28.1.1" + jest-resolve "^28.1.3" + jest-snapshot "^28.1.3" + jest-util "^28.1.3" slash "^3.0.0" strip-bom "^4.0.0" -jest-snapshot@^28.1.2: - version "28.1.2" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-28.1.2.tgz#93d31b87b11b384f5946fe0767541496135f8d52" - integrity sha512-wzrieFttZYfLvrCVRJxX+jwML2YTArOUqFpCoSVy1QUapx+LlV9uLbV/mMEhYj4t7aMeE9aSQFHSvV/oNoDAMA== +jest-snapshot@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-28.1.3.tgz#17467b3ab8ddb81e2f605db05583d69388fc0668" + integrity sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg== dependencies: "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" "@babel/plugin-syntax-typescript" "^7.7.2" "@babel/traverse" "^7.7.2" "@babel/types" "^7.3.3" - "@jest/expect-utils" "^28.1.1" - "@jest/transform" "^28.1.2" - "@jest/types" "^28.1.1" + "@jest/expect-utils" "^28.1.3" + "@jest/transform" "^28.1.3" + "@jest/types" "^28.1.3" "@types/babel__traverse" "^7.0.6" "@types/prettier" "^2.1.5" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^28.1.1" + expect "^28.1.3" graceful-fs "^4.2.9" - jest-diff "^28.1.1" + jest-diff "^28.1.3" jest-get-type "^28.0.2" - jest-haste-map "^28.1.1" - jest-matcher-utils "^28.1.1" - jest-message-util "^28.1.1" - jest-util "^28.1.1" + jest-haste-map "^28.1.3" + jest-matcher-utils "^28.1.3" + jest-message-util "^28.1.3" + jest-util "^28.1.3" natural-compare "^1.4.0" - pretty-format "^28.1.1" + pretty-format "^28.1.3" semver "^7.3.5" -jest-util@^28.1.1, jest-util@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" - integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== - dependencies: - "@jest/types" "^28.1.3" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - jest-util@^28.1.3: version "28.1.3" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" @@ -6851,30 +6781,30 @@ jest-util@^28.1.3: graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.1.1.tgz#59b7b339b3c85b5144bd0c06ad3600f503a4acc8" - integrity sha512-Kpf6gcClqFCIZ4ti5++XemYJWUPCFUW+N2gknn+KgnDf549iLul3cBuKVe1YcWRlaF8tZV8eJCap0eECOEE3Ug== +jest-validate@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.1.3.tgz#e322267fd5e7c64cea4629612c357bbda96229df" + integrity sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA== dependencies: - "@jest/types" "^28.1.1" + "@jest/types" "^28.1.3" camelcase "^6.2.0" chalk "^4.0.0" jest-get-type "^28.0.2" leven "^3.1.0" - pretty-format "^28.1.1" + pretty-format "^28.1.3" -jest-watcher@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.1.tgz#533597fb3bfefd52b5cd115cd916cffd237fb60c" - integrity sha512-RQIpeZ8EIJMxbQrXpJQYIIlubBnB9imEHsxxE41f54ZwcqWLysL/A0ZcdMirf+XsMn3xfphVQVV4EW0/p7i7Ug== +jest-watcher@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.3.tgz#c6023a59ba2255e3b4c57179fc94164b3e73abd4" + integrity sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g== dependencies: - "@jest/test-result" "^28.1.1" - "@jest/types" "^28.1.1" + "@jest/test-result" "^28.1.3" + "@jest/types" "^28.1.3" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" emittery "^0.10.2" - jest-util "^28.1.1" + jest-util "^28.1.3" string-length "^4.0.1" jest-worker@^26.5.0: @@ -6886,15 +6816,6 @@ jest-worker@^26.5.0: merge-stream "^2.0.0" supports-color "^7.0.0" -jest-worker@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.1.tgz#3480c73247171dfd01eda77200f0063ab6a3bf28" - integrity sha512-Au7slXB08C6h+xbJPp7VIb6U0XX5Kc9uel/WFc6/rcTzGiaVCBRngBExSYuXSLFPULPSYU3cJ3ybS988lNFQhQ== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - jest-worker@^28.1.3: version "28.1.3" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.3.tgz#7e3c4ce3fa23d1bb6accb169e7f396f98ed4bb98" @@ -6904,15 +6825,15 @@ jest-worker@^28.1.3: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^28.1.2: - version "28.1.2" - resolved "https://registry.yarnpkg.com/jest/-/jest-28.1.2.tgz#451ff24081ce31ca00b07b60c61add13aa96f8eb" - integrity sha512-Tuf05DwLeCh2cfWCQbcz9UxldoDyiR1E9Igaei5khjonKncYdc6LDfynKCEWozK0oLE3GD+xKAo2u8x/0s6GOg== +jest@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest/-/jest-28.1.3.tgz#e9c6a7eecdebe3548ca2b18894a50f45b36dfc6b" + integrity sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA== dependencies: - "@jest/core" "^28.1.2" - "@jest/types" "^28.1.1" + "@jest/core" "^28.1.3" + "@jest/types" "^28.1.3" import-local "^3.0.2" - jest-cli "^28.1.2" + jest-cli "^28.1.3" js-base64@^2.1.9: version "2.6.4" @@ -8159,6 +8080,13 @@ p-limit@^3.0.2: dependencies: p-try "^2.0.0" +p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -8968,16 +8896,6 @@ pretty-format@^27.0.2: ansi-styles "^5.0.0" react-is "^17.0.1" -pretty-format@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.1.tgz#f731530394e0f7fcd95aba6b43c50e02d86b95cb" - integrity sha512-wwJbVTGFHeucr5Jw2bQ9P+VYHyLdAqedFLEkdQUVaBF/eiidDwH5OpilINq4mEfhbCjLnirt6HTTDhv1HaTIQw== - dependencies: - "@jest/schemas" "^28.0.2" - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^18.0.0" - pretty-format@^28.1.3: version "28.1.3" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5" @@ -10929,11 +10847,6 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -throat@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" - integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== - throng@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/throng/-/throng-4.0.0.tgz#983c6ba1993b58eae859998aa687ffe88df84c17" @@ -11890,6 +11803,11 @@ yargs@^17.3.1, yargs@^17.5.1: y18n "^5.0.5" yargs-parser "^21.0.0" +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + zlibjs@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/zlibjs/-/zlibjs-0.3.1.tgz#50197edb28a1c42ca659cc8b4e6a9ddd6d444554" From 085ce95dc2f640e86701df41743de9bd7fa57a70 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Jul 2022 20:55:45 +0900 Subject: [PATCH 248/652] Bump @babel/core from 7.18.6 to 7.18.9 (#18834) Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.18.6 to 7.18.9. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.9/packages/babel-core) --- updated-dependencies: - dependency-name: "@babel/core" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 102 +++++++++++---------------------------------------- 2 files changed, 23 insertions(+), 81 deletions(-) diff --git a/package.json b/package.json index 14e5c6280..5183257ec 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ }, "private": true, "dependencies": { - "@babel/core": "^7.18.6", + "@babel/core": "^7.18.9", "@babel/plugin-proposal-decorators": "^7.18.9", "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.18.6", diff --git a/yarn.lock b/yarn.lock index 7d95b881b..b3eeee3b5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -28,21 +28,21 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d" integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ== -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.6", "@babel/core@^7.7.2": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.6.tgz#54a107a3c298aee3fe5e1947a6464b9b6faca03d" - integrity sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ== +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.9", "@babel/core@^7.7.2": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.9.tgz#805461f967c77ff46c74ca0460ccf4fe933ddd59" + integrity sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.6" - "@babel/helper-compilation-targets" "^7.18.6" - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helpers" "^7.18.6" - "@babel/parser" "^7.18.6" + "@babel/generator" "^7.18.9" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-module-transforms" "^7.18.9" + "@babel/helpers" "^7.18.9" + "@babel/parser" "^7.18.9" "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.6" - "@babel/types" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -58,16 +58,7 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.0" -"@babel/generator@^7.18.6", "@babel/generator@^7.7.2": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.6.tgz#9ab2d46d3cbf631f0e80f72e72874a04c3fc12a9" - integrity sha512-AIwwoOS8axIC5MZbhNHRLKi3D+DMpvDf9XUcu3pIVAfOHFT45f4AoDAltRbHIQomCipkCZxrNkfpOEHhJz/VKw== - dependencies: - "@babel/types" "^7.18.6" - "@jridgewell/gen-mapping" "^0.3.0" - jsesc "^2.5.1" - -"@babel/generator@^7.18.9": +"@babel/generator@^7.18.9", "@babel/generator@^7.7.2": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.9.tgz#68337e9ea8044d6ddc690fb29acae39359cca0a5" integrity sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug== @@ -99,7 +90,7 @@ "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.18.6", "@babel/helper-compilation-targets@^7.18.9": +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf" integrity sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg== @@ -198,21 +189,7 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-transforms@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz#57e3ca669e273d55c3cda55e6ebf552f37f483c8" - integrity sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw== - dependencies: - "@babel/helper-environment-visitor" "^7.18.6" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.18.6" - "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.6" - "@babel/types" "^7.18.6" - -"@babel/helper-module-transforms@^7.18.9": +"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz#5a1079c005135ed627442df31a42887e80fcb712" integrity sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g== @@ -305,14 +282,14 @@ "@babel/traverse" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/helpers@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.6.tgz#4c966140eaa1fcaa3d5a8c09d7db61077d4debfd" - integrity sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ== +"@babel/helpers@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.9.tgz#4bef3b893f253a1eced04516824ede94dcfe7ff9" + integrity sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ== dependencies: "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.6" - "@babel/types" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" "@babel/highlight@^7.10.4": version "7.12.13" @@ -332,12 +309,7 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.6.tgz#845338edecad65ebffef058d3be851f1d28a63bc" - integrity sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw== - -"@babel/parser@^7.18.9": +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.6", "@babel/parser@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.9.tgz#f2dde0c682ccc264a9a8595efd030a5cc8fd2539" integrity sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg== @@ -1085,23 +1057,7 @@ "@babel/parser" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/traverse@^7.13.0", "@babel/traverse@^7.18.6", "@babel/traverse@^7.7.2": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.6.tgz#a228562d2f46e89258efa4ddd0416942e2fd671d" - integrity sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.6" - "@babel/helper-function-name" "^7.18.6" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.18.6" - "@babel/types" "^7.18.6" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.18.9": +"@babel/traverse@^7.13.0", "@babel/traverse@^7.18.6", "@babel/traverse@^7.18.9", "@babel/traverse@^7.7.2": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.9.tgz#deeff3e8f1bad9786874cb2feda7a2d77a904f98" integrity sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg== @@ -1504,15 +1460,6 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" -"@jridgewell/gen-mapping@^0.3.0": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9" - integrity sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg== - dependencies: - "@jridgewell/set-array" "^1.0.0" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - "@jridgewell/gen-mapping@^0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" @@ -1527,11 +1474,6 @@ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.4.tgz#b876e3feefb9c8d3aa84014da28b5e52a0640d72" integrity sha512-cz8HFjOFfUBtvN+NXYSFMHYRdxZMaEl0XypVrhzxBgadKIXhIkRd8aMeHhmF56Sl7SuS8OnUpQ73/k9LE4VnLg== -"@jridgewell/set-array@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.0.tgz#1179863356ac8fbea64a5a4bcde93a4871012c01" - integrity sha512-SfJxIxNVYLTsKwzB3MoOQ1yxf4w/E6MdkvTgrgAt1bfxjSrLUoHMKrDOykwN14q65waezZIdqDneUIPh4/sKxg== - "@jridgewell/set-array@^1.0.1": version "1.1.2" resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" From a44ea8af53d100b3414de96e14d66e3a73ef520b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Jul 2022 20:55:56 +0900 Subject: [PATCH 249/652] Bump @babel/plugin-transform-runtime from 7.18.6 to 7.18.9 (#18841) Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.18.6 to 7.18.9. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.9/packages/babel-plugin-transform-runtime) --- updated-dependencies: - dependency-name: "@babel/plugin-transform-runtime" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 5183257ec..a3c520b5c 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "@babel/core": "^7.18.9", "@babel/plugin-proposal-decorators": "^7.18.9", "@babel/plugin-transform-react-inline-elements": "^7.18.6", - "@babel/plugin-transform-runtime": "^7.18.6", + "@babel/plugin-transform-runtime": "^7.18.9", "@babel/preset-env": "^7.18.9", "@babel/preset-react": "^7.18.6", "@babel/runtime": "^7.18.9", diff --git a/yarn.lock b/yarn.lock index b3eeee3b5..27276089e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -859,13 +859,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-runtime@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.6.tgz#77b14416015ea93367ca06979710f5000ff34ccb" - integrity sha512-8uRHk9ZmRSnWqUgyae249EJZ94b0yAGLBIqzZzl+0iEdbno55Pmlt/32JZsHwXD9k/uZj18Aqqk35wBX4CBTXA== +"@babel/plugin-transform-runtime@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.9.tgz#d9e4b1b25719307bfafbf43065ed7fb3a83adb8f" + integrity sha512-wS8uJwBt7/b/mzE13ktsJdmS4JP/j7PQSaADtnb4I2wL0zK51MQ0pmF8/Jy0wUIS96fr+fXT6S/ifiPXnvrlSg== dependencies: "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" babel-plugin-polyfill-corejs2 "^0.3.1" babel-plugin-polyfill-corejs3 "^0.5.2" babel-plugin-polyfill-regenerator "^0.3.1" From d5ca204e89377ebce72a06eaf318c9ff848b2187 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Wed, 20 Jul 2022 20:56:44 +0900 Subject: [PATCH 250/652] Bump react-redux-loading-bar from 4.0.8 to 5.0.4 (#18562) --- .../features/ui/components/image_loader.js | 26 +++++++++++-------- .../styles/mastodon/components.scss | 6 ++++- package.json | 2 +- yarn.lock | 14 +++++----- 4 files changed, 28 insertions(+), 20 deletions(-) diff --git a/app/javascript/mastodon/features/ui/components/image_loader.js b/app/javascript/mastodon/features/ui/components/image_loader.js index c6f16a792..dfa0efe49 100644 --- a/app/javascript/mastodon/features/ui/components/image_loader.js +++ b/app/javascript/mastodon/features/ui/components/image_loader.js @@ -1,10 +1,10 @@ -import React from 'react'; -import PropTypes from 'prop-types'; import classNames from 'classnames'; +import PropTypes from 'prop-types'; +import React, { PureComponent } from 'react'; import { LoadingBar } from 'react-redux-loading-bar'; import ZoomableImage from './zoomable_image'; -export default class ImageLoader extends React.PureComponent { +export default class ImageLoader extends PureComponent { static propTypes = { alt: PropTypes.string, @@ -43,7 +43,7 @@ export default class ImageLoader extends React.PureComponent { this.loadImage(this.props); } - componentWillReceiveProps (nextProps) { + UNSAFE_componentWillReceiveProps (nextProps) { if (this.props.src !== nextProps.src) { this.loadImage(nextProps); } @@ -139,14 +139,18 @@ export default class ImageLoader extends React.PureComponent { return ( ); } diff --git a/app/javascript/mastodon/features/community_timeline/index.js b/app/javascript/mastodon/features/community_timeline/index.js index 30f776048..f9d50e64c 100644 --- a/app/javascript/mastodon/features/community_timeline/index.js +++ b/app/javascript/mastodon/features/community_timeline/index.js @@ -9,6 +9,8 @@ import { expandCommunityTimeline } from '../../actions/timelines'; import { addColumn, removeColumn, moveColumn } from '../../actions/columns'; import ColumnSettingsContainer from './containers/column_settings_container'; import { connectCommunityStream } from '../../actions/streaming'; +import { Helmet } from 'react-helmet'; +import { title } from 'mastodon/initial_state'; const messages = defineMessages({ title: { id: 'column.community', defaultMessage: 'Local timeline' }, @@ -128,6 +130,10 @@ class CommunityTimeline extends React.PureComponent { emptyMessage={} bindToDocument={!multiColumn} /> + + + {intl.formatMessage(messages.title)} - {title} + ); } diff --git a/app/javascript/mastodon/features/directory/index.js b/app/javascript/mastodon/features/directory/index.js index 94d7d1a9c..36f46c510 100644 --- a/app/javascript/mastodon/features/directory/index.js +++ b/app/javascript/mastodon/features/directory/index.js @@ -13,6 +13,8 @@ import RadioButton from 'mastodon/components/radio_button'; import LoadMore from 'mastodon/components/load_more'; import ScrollContainer from 'mastodon/containers/scroll_container'; import LoadingIndicator from 'mastodon/components/loading_indicator'; +import { title } from 'mastodon/initial_state'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ title: { id: 'column.directory', defaultMessage: 'Browse profiles' }, @@ -165,6 +167,10 @@ class Directory extends React.PureComponent { /> {multiColumn && !pinned ? {scrollableArea} : scrollableArea} + + + {intl.formatMessage(messages.title)} - {title} + ); } diff --git a/app/javascript/mastodon/features/explore/index.js b/app/javascript/mastodon/features/explore/index.js index 8082f2d99..e1d1eb563 100644 --- a/app/javascript/mastodon/features/explore/index.js +++ b/app/javascript/mastodon/features/explore/index.js @@ -11,6 +11,8 @@ import Statuses from './statuses'; import Suggestions from './suggestions'; import Search from 'mastodon/features/compose/containers/search_container'; import SearchResults from './results'; +import { Helmet } from 'react-helmet'; +import { title } from 'mastodon/initial_state'; const messages = defineMessages({ title: { id: 'explore.title', defaultMessage: 'Explore' }, @@ -81,6 +83,10 @@ class Explore extends React.PureComponent { + + + {intl.formatMessage(messages.title)} - {title} + )}
    - {loading ? ( - + <> +
    + +
    + + ) : ( Date: Wed, 20 Jul 2022 20:57:25 +0900 Subject: [PATCH 251/652] Bump ws from 8.8.0 to 8.8.1 (#18836) Bumps [ws](https://github.com/websockets/ws) from 8.8.0 to 8.8.1. - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/8.8.0...8.8.1) --- updated-dependencies: - dependency-name: ws dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index b842800c9..9b933a59d 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "webpack-cli": "^3.3.12", "webpack-merge": "^5.8.0", "wicg-inert": "^3.1.2", - "ws": "^8.8.0" + "ws": "^8.8.1" }, "devDependencies": { "@babel/eslint-parser": "^7.18.9", diff --git a/yarn.lock b/yarn.lock index c539879bf..2168c1230 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11653,10 +11653,10 @@ ws@^7.3.1: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== -ws@^8.2.3, ws@^8.8.0: - version "8.8.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.8.0.tgz#8e71c75e2f6348dbf8d78005107297056cb77769" - integrity sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ== +ws@^8.2.3, ws@^8.8.0, ws@^8.8.1: + version "8.8.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.8.1.tgz#5dbad0feb7ade8ecc99b830c1d77c913d4955ff0" + integrity sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA== xml-name-validator@^4.0.0: version "4.0.0" From f8b3e3692932ddfd69bc0a631256ac78411e818a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 20 Jul 2022 14:21:57 +0200 Subject: [PATCH 252/652] New Crowdin updates (#18810) * New translations en.yml (Esperanto) * New translations en.yml (Esperanto) * New translations en.yml (Chinese Simplified) * New translations en.yml (Esperanto) * New translations en.json (Chinese Simplified) * New translations simple_form.en.yml (Chinese Simplified) * New translations en.yml (Chinese Simplified) * New translations en.json (Chinese Simplified) * New translations simple_form.en.yml (Chinese Simplified) * New translations activerecord.en.yml (Chinese Simplified) * New translations en.json (Thai) * New translations en.json (Thai) * New translations simple_form.en.yml (Thai) * New translations activerecord.en.yml (Thai) * New translations doorkeeper.en.yml (Thai) * New translations en.yml (Thai) * New translations en.yml (Thai) * New translations activerecord.en.yml (Dutch) * New translations activerecord.en.yml (Turkish) * New translations activerecord.en.yml (Polish) * New translations activerecord.en.yml (Portuguese) * New translations activerecord.en.yml (Russian) * New translations activerecord.en.yml (Slovak) * New translations activerecord.en.yml (Slovenian) * New translations activerecord.en.yml (Albanian) * New translations activerecord.en.yml (Serbian (Cyrillic)) * New translations activerecord.en.yml (Swedish) * New translations activerecord.en.yml (Ukrainian) * New translations activerecord.en.yml (Chinese Traditional) * New translations activerecord.en.yml (Vietnamese) * New translations activerecord.en.yml (Galician) * New translations activerecord.en.yml (Icelandic) * New translations activerecord.en.yml (Indonesian) * New translations activerecord.en.yml (Persian) * New translations activerecord.en.yml (Tamil) * New translations activerecord.en.yml (Spanish, Argentina) * New translations activerecord.en.yml (Norwegian) * New translations activerecord.en.yml (Portuguese, Brazilian) * New translations activerecord.en.yml (German) * New translations activerecord.en.yml (Sinhala) * New translations activerecord.en.yml (Romanian) * New translations activerecord.en.yml (French) * New translations activerecord.en.yml (Spanish) * New translations activerecord.en.yml (Afrikaans) * New translations activerecord.en.yml (Arabic) * New translations activerecord.en.yml (Bulgarian) * New translations activerecord.en.yml (Catalan) * New translations activerecord.en.yml (Czech) * New translations activerecord.en.yml (Danish) * New translations activerecord.en.yml (Greek) * New translations activerecord.en.yml (Korean) * New translations activerecord.en.yml (Frisian) * New translations activerecord.en.yml (Basque) * New translations activerecord.en.yml (Finnish) * New translations activerecord.en.yml (Hebrew) * New translations activerecord.en.yml (Hungarian) * New translations activerecord.en.yml (Armenian) * New translations activerecord.en.yml (Italian) * New translations activerecord.en.yml (Japanese) * New translations activerecord.en.yml (Georgian) * New translations activerecord.en.yml (Spanish, Mexico) * New translations activerecord.en.yml (Bengali) * New translations activerecord.en.yml (Sorani (Kurdish)) * New translations activerecord.en.yml (Scottish Gaelic) * New translations activerecord.en.yml (Asturian) * New translations activerecord.en.yml (Occitan) * New translations activerecord.en.yml (Serbian (Latin)) * New translations activerecord.en.yml (Kurmanji (Kurdish)) * New translations activerecord.en.yml (Corsican) * New translations activerecord.en.yml (Breton) * New translations activerecord.en.yml (Sardinian) * New translations activerecord.en.yml (Kabyle) * New translations activerecord.en.yml (Ido) * New translations activerecord.en.yml (Malayalam) * New translations activerecord.en.yml (Marathi) * New translations activerecord.en.yml (Hindi) * New translations activerecord.en.yml (Croatian) * New translations activerecord.en.yml (Norwegian Nynorsk) * New translations activerecord.en.yml (Kazakh) * New translations activerecord.en.yml (Estonian) * New translations activerecord.en.yml (Latvian) * New translations activerecord.en.yml (Tatar) * New translations activerecord.en.yml (Welsh) * New translations activerecord.en.yml (Esperanto) * New translations activerecord.en.yml (Chinese Traditional, Hong Kong) * New translations activerecord.en.yml (Standard Moroccan Tamazight) * New translations activerecord.en.yml (Catalan) * New translations activerecord.en.yml (Danish) * New translations activerecord.en.yml (Greek) * New translations activerecord.en.yml (Latvian) * New translations en.yml (Polish) * New translations simple_form.en.yml (Polish) * New translations activerecord.en.yml (Afrikaans) * New translations activerecord.en.yml (Korean) * New translations activerecord.en.yml (Polish) * New translations en.yml (Esperanto) * New translations activerecord.en.yml (Russian) * New translations activerecord.en.yml (Italian) * New translations activerecord.en.yml (Ukrainian) * New translations activerecord.en.yml (Slovenian) * New translations activerecord.en.yml (Portuguese) * New translations activerecord.en.yml (Chinese Traditional) * New translations activerecord.en.yml (Spanish, Argentina) * New translations activerecord.en.yml (Galician) * New translations activerecord.en.yml (Polish) * New translations activerecord.en.yml (Hungarian) * New translations activerecord.en.yml (Albanian) * New translations en.yml (Icelandic) * New translations simple_form.en.yml (Icelandic) * New translations activerecord.en.yml (Icelandic) * New translations en.yml (Korean) * New translations simple_form.en.yml (Korean) * New translations devise.en.yml (Korean) * New translations activerecord.en.yml (Ido) * New translations activerecord.en.yml (Spanish) * New translations activerecord.en.yml (Chinese Simplified) * Run `bundle exec i18n-tasks normalize` * Fix syntax Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/th.json | 6 +- app/javascript/mastodon/locales/zh-CN.json | 10 ++-- config/locales/activerecord.af.yml | 6 ++ config/locales/activerecord.ca.yml | 2 + config/locales/activerecord.da.yml | 1 + config/locales/activerecord.el.yml | 6 ++ config/locales/activerecord.es-AR.yml | 2 + config/locales/activerecord.es-MX.yml | 9 +++ config/locales/activerecord.es.yml | 2 + config/locales/activerecord.gl.yml | 2 + config/locales/activerecord.hu.yml | 2 + config/locales/activerecord.io.yml | 2 + config/locales/activerecord.is.yml | 2 + config/locales/activerecord.it.yml | 2 + config/locales/activerecord.ko.yml | 2 + config/locales/activerecord.lv.yml | 2 + config/locales/activerecord.pl.yml | 9 +++ config/locales/activerecord.pt-PT.yml | 2 + config/locales/activerecord.ru.yml | 1 + config/locales/activerecord.sl.yml | 2 + config/locales/activerecord.sq.yml | 2 + config/locales/activerecord.th.yml | 9 +++ config/locales/activerecord.uk.yml | 2 + config/locales/activerecord.zh-CN.yml | 14 +++++ config/locales/activerecord.zh-TW.yml | 2 + config/locales/devise.ko.yml | 2 +- config/locales/doorkeeper.th.yml | 9 +++ config/locales/eo.yml | 24 ++++---- config/locales/is.yml | 22 ++++++- config/locales/ko.yml | 2 + config/locales/pl.yml | 8 +++ config/locales/simple_form.is.yml | 2 + config/locales/simple_form.ko.yml | 1 + config/locales/simple_form.pl.yml | 8 +++ config/locales/simple_form.th.yml | 26 ++++++++ config/locales/simple_form.zh-CN.yml | 31 ++++++++++ config/locales/th.yml | 14 +++++ config/locales/zh-CN.yml | 69 ++++++++++++++++++++++ 38 files changed, 299 insertions(+), 20 deletions(-) diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 74bbf0446..3bcae61b8 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -198,7 +198,7 @@ "explore.trending_tags": "แฮชแท็ก", "follow_recommendations.done": "เสร็จสิ้น", "follow_recommendations.heading": "ติดตามผู้คนที่คุณต้องการเห็นโพสต์! นี่คือข้อเสนอแนะบางส่วน", - "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", + "follow_recommendations.lead": "โพสต์จากคนที่คุณติดตามจะแสดงตามลำดับเวลาบนฟีดหลักของคุณ อย่ากลัวที่จะทำผิดพลาด คุณสามารถเลิกติดตามผู้คนได้ง่ายๆ ทุกเมื่อ!", "follow_request.authorize": "อนุญาต", "follow_request.reject": "ปฏิเสธ", "follow_requests.unlocked_explanation": "แม้ว่าไม่มีการล็อคบัญชีของคุณ พนักงานของ {domain} คิดว่าคุณอาจต้องการตรวจทานคำขอติดตามจากบัญชีเหล่านี้ด้วยตนเอง", @@ -268,7 +268,7 @@ "lightbox.next": "ถัดไป", "lightbox.previous": "ก่อนหน้า", "limited_account_hint.action": "แสดงโปรไฟล์ต่อไป", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "โปรไฟล์นี้ถูกซ่อนไว้โดยโมเดอเรเตอร์ของเซิร์ฟเวอร์ของคุณ", "lists.account.add": "เพิ่มไปยังรายการ", "lists.account.remove": "เอาออกจากรายการ", "lists.delete": "ลบรายการ", @@ -360,7 +360,7 @@ "notifications.permission_denied_alert": "ไม่สามารถเปิดใช้งานการแจ้งเตือนบนเดสก์ท็อป เนื่องจากมีการปฏิเสธสิทธิอนุญาตเบราว์เซอร์ก่อนหน้านี้", "notifications.permission_required": "การแจ้งเตือนบนเดสก์ท็อปไม่พร้อมใช้งานเนื่องจากไม่ได้ให้สิทธิอนุญาตที่จำเป็น", "notifications_permission_banner.enable": "เปิดใช้งานการแจ้งเตือนบนเดสก์ท็อป", - "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", + "notifications_permission_banner.how_to_control": "หากต้องการรับการแจ้งเตือนเมื่อไม่ได้เปิด Mastodon ให้เปิดใช้การแจ้งเตือนบนเดสก์ท็อป คุณสามารถควบคุมได้ตามความต้องการด้วยการโต้ตอบประเภทที่สร้างการแจ้งเตือนบนเดสก์ท็อปผ่านปุ่ม {icon} ด้านบนเมื่อเปิดใช้งาน", "notifications_permission_banner.title": "ไม่พลาดสิ่งใด", "picture_in_picture.restore": "นำกลับมา", "poll.closed": "ปิดแล้ว", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index e92227f72..dcb54735f 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -314,7 +314,7 @@ "navigation_bar.preferences": "首选项", "navigation_bar.public_timeline": "跨站公共时间轴", "navigation_bar.security": "安全", - "notification.admin.report": "{name} reported {target}", + "notification.admin.report": "{name} 已报告 {target}", "notification.admin.sign_up": "{name} 注册了", "notification.favourite": "{name} 喜欢了你的嘟文", "notification.follow": "{name} 开始关注你", @@ -327,7 +327,7 @@ "notification.update": "{name} 编辑了嘟文", "notifications.clear": "清空通知列表", "notifications.clear_confirmation": "你确定要永久清空通知列表吗?", - "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.report": "新报告", "notifications.column_settings.admin.sign_up": "新注册:", "notifications.column_settings.alert": "桌面通知", "notifications.column_settings.favourite": "喜欢:", @@ -433,7 +433,7 @@ "report.thanks.title_actionable": "感谢提交举报,我们将会进行处理。", "report.unfollow": "取消关注 @{name}", "report.unfollow_explanation": "你正在关注此账户。如果要想在你的主页上不再看到他们的帖子,取消对他们的关注即可。", - "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.attached_statuses": "{count, plural, one {{count} 嘟文} other {{count} 嘟文}} 附件", "report_notification.categories.other": "其他", "report_notification.categories.spam": "骚扰", "report_notification.categories.violation": "违反规则", @@ -468,7 +468,7 @@ "status.embed": "嵌入", "status.favourite": "喜欢", "status.filtered": "已过滤", - "status.hide": "Hide toot", + "status.hide": "屏蔽嘟文", "status.history.created": "{name} 创建于 {date}", "status.history.edited": "{name} 编辑于 {date}", "status.load_more": "加载更多", @@ -492,7 +492,7 @@ "status.report": "举报 @{name}", "status.sensitive_warning": "敏感内容", "status.share": "分享", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "继续显示", "status.show_less": "隐藏内容", "status.show_less_all": "隐藏全部内容", "status.show_more": "显示更多", diff --git a/config/locales/activerecord.af.yml b/config/locales/activerecord.af.yml index c41e2341d..dff778d57 100644 --- a/config/locales/activerecord.af.yml +++ b/config/locales/activerecord.af.yml @@ -38,3 +38,9 @@ af: email: blocked: maak gebruik van 'n e-pos verskaffer wat nie toegelaat word nie unreachable: blyk nie te bestaan nie + user_role: + attributes: + permissions_as_keys: + own_role: kan nie verander word met jou huidige rol nie + position: + own_role: kan nie verander word met jou huidige rol nie diff --git a/config/locales/activerecord.ca.yml b/config/locales/activerecord.ca.yml index 08fa1cb5a..ddf3fed4e 100644 --- a/config/locales/activerecord.ca.yml +++ b/config/locales/activerecord.ca.yml @@ -45,5 +45,7 @@ ca: permissions_as_keys: dangerous: inclou permisos que no són segurs per al rol base elevated: no pot incloure permisos que el teu rol actual no té + own_role: no es pot canviar amb el teu rol actual position: elevated: no pot ser superior al teu rol actual + own_role: no pot ser canviat amb el teu rol actual diff --git a/config/locales/activerecord.da.yml b/config/locales/activerecord.da.yml index a8fe65498..33d86e296 100644 --- a/config/locales/activerecord.da.yml +++ b/config/locales/activerecord.da.yml @@ -45,5 +45,6 @@ da: permissions_as_keys: dangerous: omfat tilladelser, som ikke er sikre for basisrollen elevated: kan ikke omfatte tilladelser, din aktuelle rolle ikke besidder + own_role: kan ikke ændres med din aktuelle rolle position: elevated: kan ikke være højere end din aktuelle rolle diff --git a/config/locales/activerecord.el.yml b/config/locales/activerecord.el.yml index 67ce1758e..77d0c2716 100644 --- a/config/locales/activerecord.el.yml +++ b/config/locales/activerecord.el.yml @@ -30,3 +30,9 @@ el: email: blocked: χρησιμοποιεί μη επιτρεπόμενο πάροχο e-mail unreachable: δεν φαίνεται να υπάρχει + user_role: + attributes: + permissions_as_keys: + own_role: δεν μπορεί να αλλάξει με τον τρέχοντα ρόλο σας + position: + own_role: δεν μπορεί να αλλάξει με τον τρέχοντα ρόλο σας diff --git a/config/locales/activerecord.es-AR.yml b/config/locales/activerecord.es-AR.yml index f5b8221d1..d1eda3406 100644 --- a/config/locales/activerecord.es-AR.yml +++ b/config/locales/activerecord.es-AR.yml @@ -45,5 +45,7 @@ es-AR: permissions_as_keys: dangerous: incluir permisos que no son seguros para el rol base elevated: no se pueden incluir permisos que tu rol actual no posea + own_role: no se puede cambiar con tu rol actual position: elevated: no puede ser mayor que tu rol actual + own_role: no se puede cambiar con tu rol actual diff --git a/config/locales/activerecord.es-MX.yml b/config/locales/activerecord.es-MX.yml index 83632be43..37b9b05df 100644 --- a/config/locales/activerecord.es-MX.yml +++ b/config/locales/activerecord.es-MX.yml @@ -38,3 +38,12 @@ es-MX: email: blocked: utiliza un proveedor de correo no autorizado unreachable: no parece existir + role_id: + elevated: no puede ser mayor que tu rol actual + user_role: + attributes: + permissions_as_keys: + dangerous: incluir permisos que no son seguros para el rol base + elevated: no se pueden incluir permisos que tu rol actual no posea + position: + elevated: no puede ser mayor que tu rol actual diff --git a/config/locales/activerecord.es.yml b/config/locales/activerecord.es.yml index 8cdfcfcc0..4aec0f074 100644 --- a/config/locales/activerecord.es.yml +++ b/config/locales/activerecord.es.yml @@ -45,5 +45,7 @@ es: permissions_as_keys: dangerous: incluir permisos que no son seguros para el rol base elevated: no se pueden incluir permisos que tu rol actual no posea + own_role: no se puede cambiar con tu rol actual position: elevated: no puede ser mayor que tu rol actual + own_role: no se puede cambiar con tu rol actual diff --git a/config/locales/activerecord.gl.yml b/config/locales/activerecord.gl.yml index 6b225137a..a80e3ece5 100644 --- a/config/locales/activerecord.gl.yml +++ b/config/locales/activerecord.gl.yml @@ -45,5 +45,7 @@ gl: permissions_as_keys: dangerous: inclúe permisos que non son seguros para o rol básico elevated: non pode incluir permisos que o teu rol actual non posúe + own_role: non pode ser modificado co teu rol actual position: elevated: non pode superar ao teu rol actual + own_role: non pode ser modificado co teu rol actual diff --git a/config/locales/activerecord.hu.yml b/config/locales/activerecord.hu.yml index 5b055bfa2..44340b3e9 100644 --- a/config/locales/activerecord.hu.yml +++ b/config/locales/activerecord.hu.yml @@ -45,5 +45,7 @@ hu: permissions_as_keys: dangerous: tartalmaz olyan engedélyeket is, melyek az alap szerephez nem biztonságosak elevated: nem tartalmazhat olyan engedélyeket, melyek nincsenek benne a jelenlegi szerepedben + own_role: nem megváltoztatható a jelenlegi szerepköröddel position: elevated: nem lehet magasabb, mint a jelenlegi szereped + own_role: nem megváltoztatható a jelenlegi szerepköröddel diff --git a/config/locales/activerecord.io.yml b/config/locales/activerecord.io.yml index 545c32d5f..5c809ce2e 100644 --- a/config/locales/activerecord.io.yml +++ b/config/locales/activerecord.io.yml @@ -45,5 +45,7 @@ io: permissions_as_keys: dangerous: inkluzas permisi quo ne esas segura por bazrolo elevated: ne povas inkluzar permisi quon vua nuna rolo ne havas + own_role: ne povas divenesar kun vua nuna rolo position: elevated: ne povas divenar plu alta kam vua nuna rolo + own_role: ne povas divenesar kun vua nuna rolo diff --git a/config/locales/activerecord.is.yml b/config/locales/activerecord.is.yml index 25c30fe4c..1fe540322 100644 --- a/config/locales/activerecord.is.yml +++ b/config/locales/activerecord.is.yml @@ -45,5 +45,7 @@ is: permissions_as_keys: dangerous: hefur heimildir sem ekki eru öruggar fyrir grunnhlutverk elevated: getur ekki haft heimildir sem núverandi hlutverk þitt er ekki með + own_role: er ekki hægt að breyta með þinu hlutverki position: elevated: getur ekki verið veigameiri en núverandi hlutverk þitt + own_role: er ekki hægt að breyta með þinu hlutverki diff --git a/config/locales/activerecord.it.yml b/config/locales/activerecord.it.yml index 53acb7d02..388c354ae 100644 --- a/config/locales/activerecord.it.yml +++ b/config/locales/activerecord.it.yml @@ -45,5 +45,7 @@ it: permissions_as_keys: dangerous: include i permessi non sicuri per il ruolo di base elevated: non è possibile includere i permessi che il tuo ruolo attuale non possiede + own_role: non può essere modificato con il tuo ruolo attuale position: elevated: non può essere superiore al tuo ruolo attuale + own_role: non può essere modificato con il tuo ruolo attuale diff --git a/config/locales/activerecord.ko.yml b/config/locales/activerecord.ko.yml index 7dcdad9f3..8ce4c0701 100644 --- a/config/locales/activerecord.ko.yml +++ b/config/locales/activerecord.ko.yml @@ -45,5 +45,7 @@ ko: permissions_as_keys: dangerous: 기본 역할로 사용하기에 안전하지 않은 권한을 포함하고 있습니다 elevated: 당신의 현재 역할이 가지고 있지 않은 권한은 포함할 수 없습니다 + own_role: 당신의 현재 역할을 변경할 수 없습니다 position: elevated: 당신의 현재 역할보다 높을 수 없습니다 + own_role: 당신의 현재 역할을 변경할 수 없습니다 diff --git a/config/locales/activerecord.lv.yml b/config/locales/activerecord.lv.yml index db5519005..ba31a8b3c 100644 --- a/config/locales/activerecord.lv.yml +++ b/config/locales/activerecord.lv.yml @@ -45,5 +45,7 @@ lv: permissions_as_keys: dangerous: ietver atļaujas, kas nav drošas pamata lomai elevated: nevar ietvert atļaujas, kas nepieder tavai pašreizējai lomai + own_role: nevar mainīt pert tavu pašreizējo lomu position: elevated: nevar būt augstāka par tavu pašreizējo lomu + own_role: nevar mainīt pert tavu pašreizējo lomu diff --git a/config/locales/activerecord.pl.yml b/config/locales/activerecord.pl.yml index e9af76244..78ee745e2 100644 --- a/config/locales/activerecord.pl.yml +++ b/config/locales/activerecord.pl.yml @@ -38,3 +38,12 @@ pl: email: blocked: używa niedozwolonego dostawcy poczty elektronicznej unreachable: wydaje się nie istnieć + role_id: + elevated: nie może być wyższa niż twoja bieżąca rola + user_role: + attributes: + permissions_as_keys: + own_role: nie można zmienić z aktualną rolą + position: + elevated: nie może być wyższa niż twoja bieżąca rola + own_role: nie można zmienić z aktualną rolą diff --git a/config/locales/activerecord.pt-PT.yml b/config/locales/activerecord.pt-PT.yml index ceeaa909e..b730eaf67 100644 --- a/config/locales/activerecord.pt-PT.yml +++ b/config/locales/activerecord.pt-PT.yml @@ -45,5 +45,7 @@ pt-PT: permissions_as_keys: dangerous: incluir permissões que não são seguras para a função base elevated: não pode incluir permissões que a sua função atual não possui + own_role: não pode ser alterado com a sua função atual position: elevated: não pode ser maior que o da sua função atual + own_role: não pode ser alterado com a sua função atual diff --git a/config/locales/activerecord.ru.yml b/config/locales/activerecord.ru.yml index 2324b6bf9..2a267cfd2 100644 --- a/config/locales/activerecord.ru.yml +++ b/config/locales/activerecord.ru.yml @@ -44,3 +44,4 @@ ru: attributes: permissions_as_keys: dangerous: включить разрешения, небезопасные для базовой роли + own_role: невозможно изменить с вашей текущей ролью diff --git a/config/locales/activerecord.sl.yml b/config/locales/activerecord.sl.yml index 591c126d3..255f5e1ed 100644 --- a/config/locales/activerecord.sl.yml +++ b/config/locales/activerecord.sl.yml @@ -45,5 +45,7 @@ sl: permissions_as_keys: dangerous: vključi pravice, ki niso varne za osnovno vlogo elevated: ni mogoče vključiti pravic, ki jih vaša trenutna vloga ne vsebuje + own_role: ni mogoče spremeniti z vašo trenutno vlogo position: elevated: ne more biti višje od vaše trenutne vloge + own_role: ni mogoče spremeniti z vašo trenutno vlogo diff --git a/config/locales/activerecord.sq.yml b/config/locales/activerecord.sq.yml index 1255b79a2..a4c8af15f 100644 --- a/config/locales/activerecord.sq.yml +++ b/config/locales/activerecord.sq.yml @@ -45,5 +45,7 @@ sq: permissions_as_keys: dangerous: përfshi leje që s’janë të parrezik për rolin bazë elevated: s’mund të përfshijë leje të cilat roli juaj i tanishëm s’i përfshin + own_role: s’mund të ndryshohet me rolin tuaj të tanishëm position: elevated: s’mund të jetë më i lartë sesa roli juaj i tanishëm + own_role: s’mund të ndryshohet me rolin tuaj të tanishëm diff --git a/config/locales/activerecord.th.yml b/config/locales/activerecord.th.yml index 60908144f..716c003e9 100644 --- a/config/locales/activerecord.th.yml +++ b/config/locales/activerecord.th.yml @@ -38,3 +38,12 @@ th: email: blocked: ใช้ผู้ให้บริการอีเมลที่ไม่ได้รับอนุญาต unreachable: ดูเหมือนว่าจะไม่มีอยู่ + role_id: + elevated: ไม่สามารถสูงกว่าบทบาทปัจจุบันของคุณ + user_role: + attributes: + permissions_as_keys: + dangerous: รวมสิทธิ์ที่ไม่ปลอดภัยสำหรับบทบาทพื้นฐาน + elevated: ไม่สามารถรวบรวมสิทธิ์ในบทบาทปัจจุบันของคุณไม่ได้ + position: + elevated: ไม่สามารถสูงกว่าบทบาทปัจจุบันของคุณ diff --git a/config/locales/activerecord.uk.yml b/config/locales/activerecord.uk.yml index 58e549b53..159f6d40a 100644 --- a/config/locales/activerecord.uk.yml +++ b/config/locales/activerecord.uk.yml @@ -45,5 +45,7 @@ uk: permissions_as_keys: dangerous: включити небезпечні для базової ролі дозволи elevated: не можна включити права, якими не володіє ваша поточна роль + own_role: не можна змінити у вашій поточній ролі position: elevated: не може бути вищою за поточну роль + own_role: не можна змінити у вашій поточній ролі diff --git a/config/locales/activerecord.zh-CN.yml b/config/locales/activerecord.zh-CN.yml index 855e79de6..27ec73ab9 100644 --- a/config/locales/activerecord.zh-CN.yml +++ b/config/locales/activerecord.zh-CN.yml @@ -25,6 +25,10 @@ zh-CN: attributes: url: invalid: 不是有效的 URL。 + doorkeeper/application: + attributes: + website: + invalid: 网址无效 status: attributes: reblog: @@ -34,3 +38,13 @@ zh-CN: email: blocked: 使用了被封禁的电子邮件提供商 unreachable: 似乎不存在 + role_id: + elevated: 不能高于您当前的角色 + user_role: + attributes: + permissions_as_keys: + dangerous: 包含对基本角色不安全的权限 + elevated: 不能包含您当前角色不拥有的权限 + own_role: 无法以您当前的身份更改 + position: + elevated: 不能高于您当前的角色 diff --git a/config/locales/activerecord.zh-TW.yml b/config/locales/activerecord.zh-TW.yml index 554f6047d..2ebb4460c 100644 --- a/config/locales/activerecord.zh-TW.yml +++ b/config/locales/activerecord.zh-TW.yml @@ -45,5 +45,7 @@ zh-TW: permissions_as_keys: dangerous: 包含對基本角色不安全的權限 elevated: 不能包含您目前角色不具備的權限 + own_role: 無法被您目前的角色更改 position: elevated: 不能高於您目前的角色 + own_role: 無法被您目前的角色更改 diff --git a/config/locales/devise.ko.yml b/config/locales/devise.ko.yml index 570377f8a..cd949d772 100644 --- a/config/locales/devise.ko.yml +++ b/config/locales/devise.ko.yml @@ -7,7 +7,7 @@ ko: send_paranoid_instructions: 당신의 이메일이 우리의 DB에 있을 경우 몇 분 이내로 확인 메일이 발송 됩니다. 이메일을 받지 못 한 경우, 스팸 폴더를 확인하세요. failure: already_authenticated: 이미 로그인 된 상태입니다. - inactive: 계정이 활성화 되지 않았습니다. + inactive: 계정이 아직 활성화 되지 않았습니다. invalid: 올바르지 않은 %{authentication_keys} 혹은 패스워드입니다. last_attempt: 계정이 잠기기까지 한 번의 시도가 남았습니다. locked: 계정이 잠겼습니다. diff --git a/config/locales/doorkeeper.th.yml b/config/locales/doorkeeper.th.yml index 5c1e1582f..963b2361d 100644 --- a/config/locales/doorkeeper.th.yml +++ b/config/locales/doorkeeper.th.yml @@ -81,16 +81,25 @@ th: errors: messages: access_denied: เจ้าของทรัพยากรหรือเซิร์ฟเวอร์การอนุญาตปฏิเสธคำขอ + credential_flow_not_configured: การไหลของข้อมูลรับรองรหัสผ่านเจ้าของทรัพยากรล้มเหลวเนื่องจาก Doorkeeper.configure.resource_owner_from_credentials ไม่ได้ถูกกำหนดค่า + invalid_client: การตรวจสอบสิทธิ์ไคลเอ็นต์ล้มเหลวเนื่องจากไคลเอ็นต์ที่ไม่รู้จัก ไม่รวมการตรวจสอบไคลเอ็นต์ หรือวิธีการตรวจสอบสิทธิ์ที่ไม่รองรับ + invalid_grant: การให้สิทธิ์ที่ระบุไม่ถูกต้อง หมดอายุ เพิกถอน ไม่ตรงกับ URI การเปลี่ยนเส้นทางที่ใช้ในคำขอการให้สิทธิ์ หรือออกให้ไคลเอ็นต์อื่น invalid_redirect_uri: URI การเปลี่ยนเส้นทางที่รวมอยู่ไม่ถูกต้อง invalid_request: missing_param: 'พารามิเตอร์ที่จำเป็นขาดหายไป: %{value}' + request_not_authorized: คำขอต้องได้รับอนุญาต พารามิเตอร์ที่จำเป็นสำหรับการให้สิทธิ์คำขอขาดหายไปหรือไม่ถูกต้อง + unknown: คำขอไม่มีพารามิเตอร์ที่จำเป็น มีค่าพารามิเตอร์ที่ไม่รองรับ หรืออยู่ในรูปแบบที่ไม่ถูกต้อง + invalid_resource_owner: ข้อมูลรับรองเจ้าของทรัพยากรที่ระบุไม่ถูกต้อง หรือไม่พบเจ้าของทรัพยากร invalid_scope: ขอบเขตที่ขอไม่ถูกต้อง ไม่รู้จัก หรือผิดรูปแบบ invalid_token: expired: โทเคนการเข้าถึงหมดอายุแล้ว revoked: เพิกถอนโทเคนการเข้าถึงแล้ว unknown: โทเคนการเข้าถึงไม่ถูกต้อง resource_owner_authenticator_not_configured: การค้นหาเจ้าของทรัพยากรล้มเหลวเนื่องจากไม่ได้กำหนดค่า Doorkeeper.configure.resource_owner_authenticator + server_error: เซิร์ฟเวอร์การให้สิทธิ์พบสภาวะที่ไม่คาดคิดซึ่งทำให้ไม่สามารถดำเนินการตามคำขอได้ + temporarily_unavailable: ขณะนี้เซิร์ฟเวอร์การให้สิทธิ์ไม่สามารถจัดการตามคำขอได้ เนื่องจากการโอเวอร์โหลดหรือมีการบำรุงรักษาเซิร์ฟเวอร์ชั่วคราว unauthorized_client: ไคลเอ็นต์ไม่ได้รับอนุญาตให้ทำคำขอนี้โดยใช้วิธีการนี้ + unsupported_grant_type: ประเภทการให้สิทธิ์ไม่ได้รับการสนับสนุนโดยเซิร์ฟเวอร์การให้สิทธิ์นะ unsupported_response_type: เซิร์ฟเวอร์การอนุญาตไม่รองรับชนิดการตอบสนองนี้ flash: applications: diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 8d71055a9..5fbde142b 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -2,15 +2,15 @@ eo: about: about_hashtag_html: Ĉi tiuj estas la publikaj mesaĝoj markitaj per #%{hashtag}. Vi povas interagi kun ili se vi havas konton ie ajn en la fediverse. - about_mastodon_html: Mastodon estas socia reto bazita sur malfermitaj retaj protokoloj kaj sur libera malfermitkoda programo. Ĝi estas sencentra kiel retmesaĝoj. + about_mastodon_html: 'Mastodon estas socia retejo de la estonteco: sen reklamo, sen kompania gvato, etika dezajno kaj malcentraligo! Vi regu viajn datumojn kun Mastodon!' about_this: Pri - active_count_after: aktiva + active_count_after: aktivaj active_footnote: Monate Aktivaj Uzantoj (MAU) administered_by: 'Administrata de:' api: API apps: Poŝtelefonaj aplikaĵoj - apps_platforms: Uzu Mastodon ĉe iOS, Android kaj aliajn platformojn - browse_directory: Esplori profilujo kaj filtri per interesoj + apps_platforms: Uzu Mastodon de iOS, Android, kaj aliaj substratoj + browse_directory: Esplori la profilujon kaj filtri en interesoj browse_local_posts: Vidi vivantan fluon de publikaj mesaĝoj al Mastodon browse_public_posts: Vidi vivantan fluon de publikaj mesaĝoj al Mastodon contact: Kontakto @@ -40,11 +40,12 @@ eo: unavailable_content: Moderigitaj serviloj unavailable_content_description: domain: Servilo - reason: 'Kialo:' + reason: Motivo rejecting_media: 'La aŭdovidaj dosieroj de ĉi tiuj serviloj ne estos prilaboritaj aŭ stokitaj, kaj neniu bildeto estos montrita, do necesas klaki permane por vidi la originalan afiŝon:' rejecting_media_title: Filtritaj aŭdovidaĵoj silenced: 'La mesaĝoj de tiuj serviloj estos kaŝitaj de publikaj templinio kaj konversacioj, kaj la interagoj de la uzantoj donas neniun sciigon, ĝis vi sekvos ilin:' - silenced_title: Silentigitaj serviloj + silenced_title: Limigitaj serviloj + suspended: 'Neniu datumo de ĉi tiuj serviloj estos prilaboritaj, stokitaj, aŭ interŝanĝitaj, neeble fari interagon aŭ komunikon kun la uzantoj de ĉi tiuj serviloj:' suspended_title: Suspenditaj serviloj user_count_after: one: uzanto @@ -154,8 +155,9 @@ eo: push_subscription_expires: Eksvalidiĝo de la abono al PuSH redownload: Aktualigi profilon reject: Malakcepti - remove_avatar: Forigi la rolfigron + remove_avatar: Forigi la rolfiguron remove_header: Forigi kapan bildon + removed_avatar_msg: La bildo de la rolfiguro de %{username} estas sukcese forigita resend_confirmation: already_confirmed: Ĉi tiu uzanto jam estas konfirmita send: Resendi konfirman retmesaĝon @@ -227,7 +229,7 @@ eo: memorialize_account: Memorigu Konton promote_user: Promocii Uzanton reject_user: Malakcepti Uzanton - remove_avatar_user: Forigi la rolfigron + remove_avatar_user: Forigi la rolfiguron reopen_report: Remalfermi signalon reset_password_user: Restarigi pasvorton resolve_report: Solvitaj reporto @@ -518,6 +520,8 @@ eo: view_profile: Vidi profilon roles: everyone: Implicitaj permesoj + privileges: + delete_user_data: Forviŝi la datumojn de la uzanto rules: add_new: Aldoni regulon delete: Forigi @@ -1117,7 +1121,7 @@ eo: ios: iOS linux: Linux mac: Mac - other: nekonata platformo + other: nekonata substrato windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone @@ -1262,7 +1266,7 @@ eo: suspend: Konto suspendita welcome: edit_profile_action: Agordi profilon - edit_profile_step: Vi povas proprigi vian profilon per alŝuto de profilbildo, fonbildo, ŝanĝo de via afiŝita nomo kaj pli. Se vi ŝatus kontroli novajn sekvantojn antaŭ ol ili rajtas sekvi vin, vi povas ŝlosi vian konton. + edit_profile_step: Vi povas personecigi vian profilon en alŝuto de rolfiguro, paĝokapa bildo, en ŝanĝo de via vidiga nomo kaj pli. Se vi volas ekzameni novajn sekvantojn antaŭ ol permesi al ili aboni vin, vi povas agordi vian konton kiel privata. explanation: Jen kelkaj konsiloj por helpi vin komenci final_action: Ekmesaĝi final_step: 'Ekmesaĝu! Eĉ sen sekvantoj, viaj publikaj mesaĝoj povas esti vidataj de aliaj, ekzemple en la loka templinio kaj en la kradvortoj. Eble vi ŝatus prezenti vin per la kradvorto #introductions.' diff --git a/config/locales/is.yml b/config/locales/is.yml index 1a13e3222..943fff632 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -538,7 +538,7 @@ is: public_comment: Opinber athugasemd purge: Henda purge_description_html: Ef þú heldur að þetta lén sé farið endanlega af netinu, geturðu eytt öllum færslum aðganga og tengdum gögnum frá þessu léni úr gagnageymslum þínum. Þetta gæti tekið þó nokkra stund. - title: Samband + title: Netþjónasambönd total_blocked_by_us: Útilokað af okkur total_followed_by_them: Fylgt af þeim total_followed_by_us: Fylgt af okkur @@ -681,10 +681,30 @@ is: manage_appeals_description: Leyfir notendum að yfirfara áfrýjanir vegna aðgerða umsjónarfólks manage_blocks: Sýsla með útilokanir manage_blocks_description: Leyfir notendum að loka á tölvupóstþjónustur og IP-vistföng + manage_custom_emojis: Sýsla með sérsniðin tjáningartákn + manage_custom_emojis_description: Leyfir notendum að sýsla með sérsniðin tjáningartákn á netþjóninum + manage_federation: Sýsla með netþjónasambönd + manage_federation_description: Leyfir notendum að loka á eða leyfa samþættingu við önnur lén (federation) og stýra afhendingu skilaboða + manage_invites: Sýsla með boðsgesti + manage_invites_description: Leyfir notendum að vafra um og gera boðstengla óvirka + manage_reports: Sýsla með kærur + manage_reports_description: Leyfir notendum að yfirfara kærur og framkvæma umsýsluaðgerðir sem byggjast á þeim + manage_roles: Sýsla með hlutverk + manage_roles_description: Leyfir notendum að sýsla með hlutverk og úthluta hlutverkum sem eru réttminni en þeirra eigið manage_rules: Sýsla með reglur manage_rules_description: Leyfir notendum að breyta reglum á netþjóninum manage_settings: Sýsla með stillingar manage_settings_description: Leyfir notendum að breyta stillingum vefsvæðisins + manage_taxonomies: Sýsla með vægi efnis + manage_taxonomies_description: Leyfir notendum að yfirfara vinsælt efni og uppfæra stillingar myllumerkja + manage_user_access: Sýsla með notendaaðgang + manage_user_access_description: Leyfir notendum að gera tveggja-þátta auðkenningu annarra notenda óvirka, breyta tölvupóstfangi þeirra og endurstilla lykilorð + manage_users: Sýsla með notendur + manage_users_description: Leyfir notendum að sýsla með nánari upplýsingar um aðra notendur og framkvæma umsýsluaðgerðir gagnvart þeim + manage_webhooks: Sýsla með Webhook-vefkrækjur + manage_webhooks_description: Leyfir notendum að setja upp webhook-vefkrækjur vagna stjórnunartengdra atburða + view_audit_log: Skoða atvikaskráningu + view_audit_log_description: Leyfir notendum að skoða feril stjórnunaraðgerða á netþjóninum view_dashboard: Skoða stjórnborð view_dashboard_description: Leyfir notendum að skoða stjórnborðið og sjá ýmsar mælingar view_devops: Kerfisstjórar diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 4109bfb4a..f290318a6 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -648,8 +648,10 @@ ko: moderation: 중재 special: 특수 delete: 삭제 + description_html: "사용자 역할을 통해, 사용자들이 마스토돈의 어떤 기능과 영역에 접근할 수 있을지 설정할 수 있습니다." edit: "%{name} 역할 수정" everyone: 기본 권한 + everyone_full_description_html: 이것은 모든 사용자에게 적용될 기본 역할이며, 역할을 지정하지 않아도 적용됩니다. 다른 모든 역할들은 여기에서 권한을 상속합니다. permissions_count: other: "%{count} 개의 권한" privileges: diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 0044771fb..2d49d756d 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -725,6 +725,14 @@ pl: manage_taxonomies: Zarządzaj taksonomiami manage_taxonomies_description: Pozwala użytkownikom przeglądać najpopularniejsze treści i aktualizować ustawienia hasztagów manage_user_access: Zarządzaj dostępem użytkownika + manage_users: Zarządzanie użytkownikami + manage_webhooks: Zarządzanie webhookami + view_audit_log: Wyświetl dziennik zdarzeń + view_audit_log_description: Pozwala użytkownikom zobaczyć historię działań administracyjnych na serwerze + view_dashboard: Wyświetl panel + view_devops: Devops + view_devops_description: Pozwala użytkownikom na dostęp do paneli Sidekiq i pgHero + title: Role rules: add_new: Dodaj zasadę delete: Usuń diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml index f0fd23d5e..facef6f18 100644 --- a/config/locales/simple_form.is.yml +++ b/config/locales/simple_form.is.yml @@ -98,9 +98,11 @@ is: chosen_languages: Þegar merkt er við þetta, birtast einungis færslur á völdum tungumálum á opinberum tímalínum role: Hlutverk stýrir hvaða heimildir notandinn hefur user_role: + color: Litur sem notaður er fyrir hlutverkið allsstaðar í viðmótinu, sem RGB-gildi á hex-sniði highlighted: Þetta gerir hlutverk sýnilegt opinberlega name: Opinbert heiti hlutverks, ef birta á hlutverk sem merki permissions_as_keys: Notendur með þetta hlutverk munu hafa aðgang að... + position: Rétthærra hlutverk ákvarðar lausn árekstra í ákveðnum tilfellum. Sumar aðgerðir er aðeins hægt að framkvæma á hlutverk með lægri forgangi webhook: events: Veldu atburði sem á að senda url: Hvert atburðir verða sendir diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index 19f164e00..79c28b4fc 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -102,6 +102,7 @@ ko: highlighted: 이 역할이 공개적으로 보이도록 설정합니다 name: 역할이 배지로 표시될 경우, 그 역할에 대한 공개적인 이름입니다 permissions_as_keys: 이 역할을 가진 사용자는 다음에 접근할 수 있게 됩니다... + position: 특정 상황에서 충돌이 발생할 경우 더 높은 역할이 충돌을 해결합니다. 특정 작업은 우선순위가 낮은 역할에 대해서만 수행될 수 있습니다 webhook: events: 전송할 이벤트를 선택하세요 url: 이벤트가 어디로 전송될 지 diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index 1db60d3fa..1be350dca 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -234,6 +234,14 @@ pl: name: Hashtag trendable: Pozwól na wyświetlanie tego hashtagu w „Na czasie” usable: Pozwól na umieszczanie tego hashtagu we wpisach + user: + role: Rola + user_role: + color: Kolor odznaki + highlighted: Wyświetl rolę jako odznakę na profilach użytkowników + name: Nazwa + permissions_as_keys: Uprawnienia + position: Priorytet webhook: events: Włączone zdarzenia url: Endpoint URL diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index 3de5753e1..b542eba54 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -64,9 +64,15 @@ th: domain_allow: domain: โดเมนนี้จะสามารถดึงข้อมูลจากเซิร์ฟเวอร์นี้และจะประมวลผลและจัดเก็บข้อมูลขาเข้าจากโดเมน email_domain_block: + domain: อาจเป็นชื่อโดเมนที่แสดงในที่อยู่อีเมลหรือทะเบียน MX ที่ใช้อยู่ พวกเขาอาจจะได้รับการตรวจสอบเมื่อมีการสมัคร with_dns_records: จะทำการพยายามแปลงที่อยู่ระเบียน DNS ของโดเมนที่กำหนดและจะปิดกั้นผลลัพธ์เช่นกัน featured_tag: name: 'คุณอาจต้องการใช้หนึ่งในนี้:' + filters: + action: เลือกการดำเนินการเมื่อโพสต์ตรงกับตัวกรอง + actions: + hide: ซ่อนเนื้อหาที่ถูกกรองโดยสิ้นเชิง ทำตัวราวกับว่าไม่มีอยู่จริง + warn: ซ่อนเนื้อหาที่ถูกกรองไว้ด้านหลังคำเตือนที่กล่าวถึงชื่อตัวกรอง form_challenge: current_password: คุณกำลังเข้าสู่พื้นที่ปลอดภัย imports: @@ -75,6 +81,7 @@ th: text: นี่จะช่วยให้เราตรวจทานใบสมัครของคุณ ip_block: comment: ไม่จำเป็น จดจำเหตุผลที่คุณเพิ่มกฎนี้ + expires_in: ที่อยู่ IP เป็นทรัพยากร บางครั้งมีการแบ่งปันและมักเปลี่ยนมือ ด้วยเหตุผลนี้ จึงไม่แนะนำให้บล็อก IP ip: ป้อนที่อยู่ IPv4 หรือ IPv6 คุณสามารถปิดกั้นทั้งช่วงได้โดยใช้ไวยากรณ์ CIDR ระวังอย่าล็อคตัวคุณเองออก! severities: no_access: ปิดกั้นการเข้าถึงทรัพยากรทั้งหมด @@ -84,12 +91,21 @@ th: text: อธิบายกฎหรือข้อกำหนดสำหรับผู้ใช้ในเซิร์ฟเวอร์นี้ พยายามทำให้กฎหรือข้อกำหนดสั้นและเรียบง่าย sessions: otp: 'ป้อนรหัสสองปัจจัยที่สร้างโดยแอปในโทรศัพท์ของคุณหรือใช้หนึ่งในรหัสกู้คืนของคุณ:' + webauthn: หากเป็นคีย์ USB อย่าลืมเสียบไว้ และหากจำเป็น ให้แตะคีย์นั้นไว้นะ tag: name: คุณสามารถเปลี่ยนได้เฉพาะตัวพิมพ์ใหญ่เล็กของตัวอักษรเท่านั้น ตัวอย่างเช่น เพื่อทำให้ตัวอักษรอ่านได้ง่ายขึ้น user: chosen_languages: เมื่อกาเครื่องหมาย จะแสดงเฉพาะโพสต์ในภาษาที่เลือกในเส้นเวลาสาธารณะเท่านั้น + role: ควบคุมบทบาท ว่าผู้ใช้มีสิทธิใดบ้าง + user_role: + color: สีที่จะใช้สำหรับบทบาทตลอดทั้ง UI เป็น RGB ในรูปแบบฐานสิบหก + highlighted: ทำให้บทบาทนี้ปรากฏต่อสู่สาธารณะ + name: ชื่อสาธารณะของบทบาท หากกำหนดบทบาทให้แสดงเป็นตราสัญลักษณ์ + permissions_as_keys: ผู้ใช้ที่มีบทบาทนี้จะมีสิทธิ์เข้าถึง... + position: บทบาทที่สูงขึ้นอาจจะตัดสินใจแก้ไขข้อขัดแย้งในบางสถานการณ์ การดำเนินการบางอย่างสามารถทำได้เฉพาะกับบทบาทที่มีลำดับความสำคัญต่ำกว่า webhook: events: เลือกเหตุการณ์ที่จะส่ง + url: กิจกรรมจะถูกส่งไปที่ labels: account: fields: @@ -120,6 +136,8 @@ th: scheduled_at: จัดกำหนดการเผยแพร่ starts_at: การเริ่มต้นเหตุการณ์ text: ประกาศ + appeal: + text: อธิบายว่าเหตุใดจึงควรกลับคำตัดสินนี้ defaults: autofollow: เชิญให้ติดตามบัญชีของคุณ avatar: ภาพประจำตัว @@ -184,6 +202,10 @@ th: with_dns_records: รวมระเบียน MX และ IP ของโดเมน featured_tag: name: แฮชแท็ก + filters: + actions: + hide: ซ่อนอย่างสมบูรณ์ + warn: ซ่อนพร้อมคำเตือน interactions: must_be_follower: ปิดกั้นการแจ้งเตือนจากผู้ที่ไม่ใช่ผู้ติดตาม must_be_following: ปิดกั้นการแจ้งเตือนจากผู้คนที่คุณไม่ได้ติดตาม @@ -220,9 +242,13 @@ th: user: role: บทบาท user_role: + color: สีของตรา + highlighted: แสดงบทบาทเป็นเครื่องหมายบนโปรไฟล์ผู้ใช้ name: ชื่อ permissions_as_keys: สิทธิอนุญาต + position: ระดับความสำคัญ webhook: + events: เปิดใช้งานอีเว้น url: URL ปลายทาง 'no': ไม่ recommended: แนะนำ diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index 33602885c..703c200c9 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -68,6 +68,11 @@ zh-CN: with_dns_records: Mastodon 会尝试解析所给域名的 DNS 记录,然后把解析结果一并封禁 featured_tag: name: 你可能想要使用以下之一: + filters: + action: 选择在帖子匹配过滤器时要执行的操作 + actions: + hide: 彻底屏蔽过滤内容,犹如它不曾存在过一般 + warn: 在警告中提及过滤器标题后,隐藏过滤内容 form_challenge: current_password: 你正在进入安全区域 imports: @@ -91,6 +96,16 @@ zh-CN: name: 你只能改变字母的大小写,让它更易读 user: chosen_languages: 仅选中语言的嘟文会出现在公共时间轴上(全不选则显示所有语言的嘟文) + role: 角色决定该用户拥有的权限 + user_role: + color: 整个用户界面中,该角色使用的颜色,以RGB 十六进制格式 + highlighted: 这使角色公开可见 + name: 角色的公开名称,如果角色设置为展示的徽章 + permissions_as_keys: 具有此角色的用户将有权访问... + position: 较高的角色决定在某些情况下解决冲突。某些行动只能对优先级较低的角色执行 + webhook: + events: 选择要发送的事件 + url: 事件将发送到哪个地点 labels: account: fields: @@ -178,6 +193,7 @@ zh-CN: setting_use_pending_items: 慢速模式 severity: 级别 sign_in_token_attempt: 安全码 + title: 标题 type: 导入数据类型 username: 用户名 username_or_email: 用户名或电子邮件地址 @@ -186,6 +202,10 @@ zh-CN: with_dns_records: 包括该域名的 MX 记录和 IP 地址 featured_tag: name: 话题标签 + filters: + actions: + hide: 完全隐藏 + warn: 隐藏时显示警告信息 interactions: must_be_follower: 屏蔽来自未关注我的用户的通知 must_be_following: 屏蔽来自我未关注的用户的通知 @@ -219,6 +239,17 @@ zh-CN: name: 话题标签 trendable: 允许在热门下显示此话题 usable: 允许嘟文使用此话题标签 + user: + role: 角色 + user_role: + color: 徽章颜色 + highlighted: 用户配置中以徽章显示角色 + name: 名称 + permissions_as_keys: 权限设置 + position: 优先权 + webhook: + events: 已启用事件 + url: 端点网址 'no': 否 recommended: 推荐 required: diff --git a/config/locales/th.yml b/config/locales/th.yml index d48d4ddb3..e2f1db855 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -22,6 +22,9 @@ th: federation_hint_html: ด้วยบัญชีที่ %{instance} คุณจะสามารถติดตามผู้คนในเซิร์ฟเวอร์ Mastodon และอื่น ๆ get_apps: ลองแอปมือถือ hosted_on: Mastodon ที่โฮสต์ที่ %{domain} + instance_actor_flash: 'บัญชีนี้เป็นนักแสดงเสมือนที่ใช้เพื่อเป็นตัวแทนของเซิร์ฟเวอร์เอง ไม่ใช่ผู้ใช้รายบุคคล แต่มันก็ถูกใช้เพื่อวัตถุประสงค์ในการรวมกลุ่มและไม่ควรถูกบล็อก เว้นแต่คุณต้องการบล็อกทั้งอินสแตนซ์นั้น ซึ่งในกรณีนี้คุณควรใช้บล็อกโดเมนนะ + + ' learn_more: เรียนรู้เพิ่มเติม logged_in_as_html: คุณกำลังเข้าสู่ระบบเป็น %{username} ในปัจจุบัน logout_before_registering: คุณได้เข้าสู่ระบบอยู่แล้ว @@ -46,6 +49,7 @@ th: silenced_title: เซิร์ฟเวอร์ที่จำกัดอยู่ suspended: 'จะไม่ประมวลผล จัดเก็บ หรือแลกเปลี่ยนข้อมูลจากเซิร์ฟเวอร์เหล่านี้ ทำให้การโต้ตอบหรือการสื่อสารใด ๆ กับผู้ใช้จากเซิร์ฟเวอร์เหล่านี้เป็นไปไม่ได้:' suspended_title: เซิร์ฟเวอร์ที่ระงับอยู่ + unavailable_content_html: โดยทั่วไปแล้ว Mastodon อนุญาตให้คุณดูเนื้อหาและโต้ตอบกับผู้ใช้งานจากเซิร์ฟเวอร์อื่นใน fediverse เหล่านี้เป็นข้อยกเว้นที่เกิดขึ้นบนเซิร์ฟเวอร์นี้โดยเฉพาะ user_count_after: other: ผู้ใช้ user_count_before: บ้านของ @@ -58,6 +62,7 @@ th: followers: other: ผู้ติดตาม following: กำลังติดตาม + instance_actor_flash: บัญชีนี้เป็นนักแสดงเสมือนที่ใช้เพื่อเป็นตัวแทนของเซิร์ฟเวอร์เอง แต่ก็ไม่ใช่ผู้ใช้รายบุคคล แต่มันถูกใช้เพื่อวัตถุประสงค์ของการรวมกลุ่มและไม่ควรถูกระงับ joined: เข้าร่วมเมื่อ %{date} last_active: ใช้งานล่าสุด link_verified_on: ตรวจสอบความเป็นเจ้าของของลิงก์นี้เมื่อ %{date} @@ -156,6 +161,7 @@ th: most_recent_ip: IP ล่าสุด no_account_selected: ไม่มีการเปลี่ยนแปลงบัญชีเนื่องจากไม่มีการเลือก no_limits_imposed: ไม่มีการกำหนดขีดจำกัด + no_role_assigned: ไม่มีการกำหนดบทบาท not_subscribed: ไม่ได้บอกรับ pending: การตรวจทานที่รอดำเนินการ perform_full_suspension: ระงับ @@ -201,6 +207,8 @@ th: subscribe: บอกรับ suspend: ระงับ suspended: ระงับอยู่ + suspension_irreversible: ข้อมูลของบัญชีนี้ถูกลบไม่สามารถย้อนกลับได้ คุณสามารถระงับบัญชีเพื่อให้ใช้งานได้ แต่จะไม่กู้คืนข้อมูลใดๆทั้งสิ้น ที่เคยมีอยู่ก่อนหน้านี้ + suspension_reversible_hint_html: บัญชีถูกระงับ และข้อมูลจะถูกลบออกอย่างสมบูรณ์ในวันที่ %{date} ก่อนหน้านั้น บัญชีสามารถกู้คืนได้โดยไม่มีผลร้ายใดๆทั้งสิ้น ถ้าหากคุณต้องการลบข้อมูลของบัญชีทั้งหมดในทันที คุณสามารถทำได้ด้านล่างนี้ title: บัญชี unblock_email: เลิกปิดกั้นที่อยู่อีเมล unblocked_email_msg: เลิกปิดกั้นที่อยู่อีเมลของ %{username} สำเร็จ @@ -291,6 +299,7 @@ th: destroy_instance_html: "%{name} ได้ล้างข้อมูลโดเมน %{target}" destroy_ip_block_html: "%{name} ได้ลบกฎสำหรับ IP %{target}" destroy_status_html: "%{name} ได้เอาโพสต์โดย %{target} ออก" + destroy_unavailable_domain_html: "%{name} ได้พักการจัดส่งไปยังโดเมน %{target}" disable_2fa_user_html: "%{name} ได้ปิดใช้งานความต้องการสองปัจจัยสำหรับผู้ใช้ %{target}" disable_custom_emoji_html: "%{name} ได้ปิดใช้งานอีโมจิ %{target}" disable_sign_in_token_auth_user_html: "%{name} ได้ปิดใช้งานการรับรองความถูกต้องด้วยโทเคนอีเมลสำหรับ %{target}" @@ -410,6 +419,8 @@ th: destroyed_msg: เลิกทำการปิดกั้นโดเมนแล้ว domain: โดเมน edit: แก้ไขการปิดกั้นโดเมน + existing_domain_block: คุณได้กำหนดขีดจำกัดที่เข้มงวดขึ้นแล้วบน %{name} + existing_domain_block_html: คุณได้กำหนดขีดจำกัดที่เข้มงวดขึ้นใน %{name} แล้วคุณต้อง unblock ก่อน new: create: สร้างการปิดกั้น hint: การปิดกั้นโดเมนจะไม่ป้องกันการสร้างรายการบัญชีในฐานข้อมูล แต่จะใช้วิธีการควบคุมที่เฉพาะเจาะจงกับบัญชีเหล่านั้นย้อนหลังและโดยอัตโนมัติ @@ -420,8 +431,11 @@ th: suspend: ระงับ title: การปิดกั้นโดเมนใหม่ obfuscate: ทำให้ชื่อโดเมนคลุมเครือ + obfuscate_hint: อาจมีผลทำให้ชื่อโดเมนสับสนบางส่วนในรายการหากเปิดใช้งานการโฆษณารายการข้อจำกัดของโดเมน private_comment: ความคิดเห็นส่วนตัว + private_comment_hint: แสดงความคิดเห็นเกี่ยวกับข้อจำกัดของโดเมนนี้สำหรับการใช้งานภายในโดยผู้ดูแล public_comment: ความคิดเห็นสาธารณะ + public_comment_hint: แสดงความคิดเห็นเกี่ยวกับข้อจำกัดโดเมนนี้สำหรับบุคคลทั่วไป หากต้องการโฆษณารายการข้อจำกัดโดเมนเปิดใช้งานอยู่ reject_media: ปฏิเสธไฟล์สื่อ reject_media_hint: เอาไฟล์สื่อที่จัดเก็บไว้ในเซิร์ฟเวอร์ออกและปฏิเสธที่จะดาวน์โหลดไฟล์ใด ๆ ในอนาคต ไม่เกี่ยวข้องกับการระงับ reject_reports: ปฏิเสธรายงาน diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 9ccabc998..47a1ab29f 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -99,11 +99,17 @@ zh-CN: avatar: 头像 by_domain: 域名 change_email: + changed_msg: 已成功更改电子邮件地址! current_email: 当前的电子邮箱 label: 更改电子邮箱 new_email: 新的电子邮箱 submit: 更改电子邮件地址 title: 为 %{username} 更改电子邮箱 + change_role: + changed_msg: 已成功更改角色! + label: 更改角色 + no_role: 未设置角色 + title: 为 %{username} 更改角色 confirm: 确认 confirmed: 已确认 confirming: 等待确认 @@ -147,6 +153,7 @@ zh-CN: active: 活跃 all: 全部 pending: 待审核 + silenced: 受限 suspended: 已封禁 title: 管理 moderation_notes: 管理员备注 @@ -154,6 +161,7 @@ zh-CN: most_recent_ip: 最后一次活跃的 IP 地址 no_account_selected: 因为没有选中任何账号,所以没有更改 no_limits_imposed: 无限制 + no_role_assigned: 未定角色 not_subscribed: 未订阅 pending: 待审核 perform_full_suspension: 封禁 @@ -179,6 +187,7 @@ zh-CN: reset: 重置 reset_password: 重置密码 resubscribe: 重新订阅 + role: 角色 search: 搜索 search_same_email_domain: 其他具有相同电子邮箱域名的用户 search_same_ip: 具有相同IP的其他用户 @@ -626,6 +635,57 @@ zh-CN: unresolved: 未处理 updated_at: 更新时间 view_profile: 查看资料 + roles: + add_new: 添加角色 + assigned_users: + other: "%{count} 用户" + categories: + administration: 管理 + devops: 开发运维 + invites: 邀请 + moderation: 监察 + special: 特殊 + delete: 刪除 + description_html: 使用 用户角色,您可以自定义您的用户可以访问的功能和区域。 + edit: 编辑 '%{name}' 角色 + everyone: 默认权限 + everyone_full_description_html: 这是影响到 所有用户基础角色,包括未指定角色的用户。 其他所有的角色都继承着它的权限。 + permissions_count: + other: "%{count} 权限" + privileges: + administrator: 管理员 + administrator_description: 拥有此权限的用户将绕过每个权限 + delete_user_data: 删除用户数据 + delete_user_data_description: 允许用户立即删除其他用户的数据 + invite_users: 邀请用户 + invite_users_description: 允许用户邀请新人加入服务器 + manage_announcements: 管理公告 + manage_announcements_description: 允许用户管理服务器上的通知 + manage_appeals: 管理申诉 + manage_appeals_description: 允许用户审查对适度动作的上诉 + manage_blocks: 管理版块 + manage_blocks_description: 允许用户屏蔽电子邮件提供商和IP地址 + manage_custom_emojis: 管理自定义表情 + manage_custom_emojis_description: 允许用户管理服务器上的自定义表情 + manage_federation: 管理联邦 + manage_invites: 管理邀请 + manage_invites_description: 允许用户浏览和停用邀请链接 + manage_reports: 管理报告 + manage_reports_description: 允许用户查看报告并对其执行审核操作 + manage_roles: 管理角色 + manage_roles_description: 允许用户管理和分配比他们权限低的角色 + manage_rules: 管理规则 + manage_rules_description: 允许用户更改服务器规则 + manage_settings: 管理设置 + manage_settings_description: 允许用户更改站点设置 + manage_users: 管理用户 + manage_users_description: 允许用户查看其他用户信息并对他们执行审核操作 + manage_webhooks: 管理网钩 + manage_webhooks_description: 允许用户为管理事件设置网钩 + view_audit_log: 查看审核日志 + view_audit_log_description: 允许用户在服务器上查看管理操作历史 + view_dashboard: 查看仪表板 + view_dashboard_description: 允许用户访问仪表盘和各种指标 rules: add_new: 添加规则 delete: 删除 @@ -823,7 +883,11 @@ zh-CN: webhooks: delete: 删除 disable: 禁用 + disabled: 已禁用 enable: 启用 + status: 状态 + title: 网钩 + webhook: 网钩 admin_mailer: new_appeal: actions: @@ -1084,8 +1148,11 @@ zh-CN: index: delete: 删除 empty: 你没有过滤器。 + keywords: + other: "%{count} 关键词" title: 过滤器 new: + save: 保存新过滤器 title: 添加新的过滤器 footer: developers: 开发者 @@ -1202,6 +1269,8 @@ zh-CN: copy_account_note_text: 这个用户迁移自 %{acct},你曾为其添加备注: notification_mailer: admin: + report: + subject: "%{name} 提交了报告" sign_up: subject: "%{name} 注册了" digest: From 726931fe4a8202c64fd1a72a6043f80fe075fda7 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 20 Jul 2022 17:06:52 +0200 Subject: [PATCH 253/652] Fix /api/v1/tags/:id route constraints (#18854) The constraint was applied prior to decoding, and rejected anything containing the '%' character, which would be used for anything with non-ASCII unicode characters. --- app/controllers/api/v1/tags_controller.rb | 1 + config/routes.rb | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/controllers/api/v1/tags_controller.rb b/app/controllers/api/v1/tags_controller.rb index d45015ff5..9e5c53330 100644 --- a/app/controllers/api/v1/tags_controller.rb +++ b/app/controllers/api/v1/tags_controller.rb @@ -24,6 +24,7 @@ class Api::V1::TagsController < Api::BaseController private def set_or_create_tag + return not_found unless /\A(#{Tag::HASHTAG_NAME_RE})\z/.match?(params[:id]) @tag = Tag.find_normalized(params[:id]) || Tag.new(name: Tag.normalize(params[:id]), display_name: params[:id]) end end diff --git a/config/routes.rb b/config/routes.rb index 7a902b1f0..7dc9f391d 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -530,7 +530,7 @@ Rails.application.routes.draw do resource :note, only: :create, controller: 'accounts/notes' end - resources :tags, only: [:show], constraints: { id: /#{Tag::HASHTAG_NAME_RE}/ } do + resources :tags, only: [:show] do member do post :follow post :unfollow From f5d8501138c2bb0058cca41fd76f2c8d9a7593ab Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 22 Jul 2022 03:17:41 +0200 Subject: [PATCH 254/652] Change hashtag numbers to have clearer labels in web UI (#18864) --- app/javascript/mastodon/components/hashtag.js | 18 ++++++++++++------ .../mastodon/locales/defaultMessages.json | 8 ++++++-- app/javascript/mastodon/locales/en.json | 3 ++- app/javascript/styles/mastodon/components.scss | 7 +++++++ 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/app/javascript/mastodon/components/hashtag.js b/app/javascript/mastodon/components/hashtag.js index 7f442d189..4e9cd3569 100644 --- a/app/javascript/mastodon/components/hashtag.js +++ b/app/javascript/mastodon/components/hashtag.js @@ -1,7 +1,7 @@ // @ts-check import React from 'react'; import { Sparklines, SparklinesCurve } from 'react-sparklines'; -import { FormattedMessage } from 'react-intl'; +import { FormattedMessage, injectIntl, defineMessages } from 'react-intl'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import Permalink from './permalink'; @@ -9,6 +9,10 @@ import ShortNumber from 'mastodon/components/short_number'; import Skeleton from 'mastodon/components/skeleton'; import classNames from 'classnames'; +const messages = defineMessages({ + totalVolume: { id: 'hashtag.total_volume', defaultMessage: 'Total volume in the last {days, plural, one {day} other {{days} days}}' }, +}); + class SilentErrorBoundary extends React.Component { static propTypes = { @@ -41,10 +45,11 @@ class SilentErrorBoundary extends React.Component { export const accountsCountRenderer = (displayNumber, pluralReady) => ( {displayNumber}
    , + days: 2, }} /> ); @@ -64,7 +69,7 @@ ImmutableHashtag.propTypes = { hashtag: ImmutablePropTypes.map.isRequired, }; -const Hashtag = ({ name, href, to, people, uses, history, className }) => ( +const Hashtag = injectIntl(({ name, href, to, people, uses, history, className, intl }) => (
    @@ -74,9 +79,10 @@ const Hashtag = ({ name, href, to, people, uses, history, className }) => ( {typeof people !== 'undefined' ? : }
    -
    + {typeof uses !== 'undefined' ? : } -
    + * +
    @@ -86,7 +92,7 @@ const Hashtag = ({ name, href, to, people, uses, history, className }) => (
    -); +)); Hashtag.propTypes = { name: PropTypes.string, diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 28618104a..d86cddc9b 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -290,7 +290,11 @@ { "descriptors": [ { - "defaultMessage": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "defaultMessage": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "id": "hashtag.total_volume" + }, + { + "defaultMessage": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "id": "trends.counter_by_accounts" } ], @@ -3752,4 +3756,4 @@ ], "path": "app/javascript/mastodon/features/video/index.json" } -] \ No newline at end of file +] diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index b6bc2ac97..c668cefc6 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -220,6 +220,7 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags for this column", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", @@ -517,7 +518,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older posts", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 19d3f2426..3e202841b 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -7243,6 +7243,13 @@ noscript { padding-right: 15px; margin-left: 5px; color: $secondary-text-color; + text-decoration: none; + + &__asterisk { + color: $darker-text-color; + font-size: 18px; + vertical-align: super; + } } &__sparkline { From 76ff45230630c32dd01fd45c89557e092a81b27f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 22 Jul 2022 03:17:56 +0200 Subject: [PATCH 255/652] Fix unicode regression in #18809 (#18863) --- app/models/account.rb | 2 +- app/models/tag.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models/account.rb b/app/models/account.rb index fe77eaec4..628692d22 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -62,7 +62,7 @@ class Account < ApplicationRecord ) USERNAME_RE = /[a-z0-9_]+([a-z0-9_\.-]+[a-z0-9_]+)?/i - MENTION_RE = /(?<=^|[^\/[:word:]])@((#{USERNAME_RE})(?:@[[:alnum:]\.\-]+[[:alnum:]]+)?)/i + MENTION_RE = /(?<=^|[^\/[:word:]])@((#{USERNAME_RE})(?:@[[:word:]\.\-]+[[:word:]]+)?)/i URL_PREFIX_RE = /\Ahttp(s?):\/\/[^\/]+/ include Attachmentable diff --git a/app/models/tag.rb b/app/models/tag.rb index eebf3b47d..8929baf66 100644 --- a/app/models/tag.rb +++ b/app/models/tag.rb @@ -27,7 +27,7 @@ class Tag < ApplicationRecord has_many :followers, through: :passive_relationships, source: :account HASHTAG_SEPARATORS = "_\u00B7\u200c" - HASHTAG_NAME_RE = "([[:alnum:]_][[:alnum:]#{HASHTAG_SEPARATORS}]*[[:alpha:]#{HASHTAG_SEPARATORS}][[:alnum:]#{HASHTAG_SEPARATORS}]*[[:alnum:]_])|([[:alnum:]_]*[[:alpha:]][[:alnum:]_]*)" + HASHTAG_NAME_RE = "([[:word:]_][[:word:]#{HASHTAG_SEPARATORS}]*[[:alpha:]#{HASHTAG_SEPARATORS}][[:word:]#{HASHTAG_SEPARATORS}]*[[:word:]_])|([[:word:]_]*[[:alpha:]][[:word:]_]*)" HASHTAG_RE = /(?:^|[^\/\)\w])#(#{HASHTAG_NAME_RE})/i validates :name, presence: true, format: { with: /\A(#{HASHTAG_NAME_RE})\z/i } From 9608e720a4e5f977c0e2db0de7b264574b0ddeac Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 22 Jul 2022 15:52:06 +0200 Subject: [PATCH 256/652] Add ability to follow hashtags in web UI (#18862) --- app/javascript/mastodon/actions/tags.js | 92 +++++++++++++++++++ .../features/hashtag_timeline/index.js | 87 ++++++++++++++---- app/javascript/mastodon/reducers/index.js | 2 + app/javascript/mastodon/reducers/tags.js | 25 +++++ 4 files changed, 188 insertions(+), 18 deletions(-) create mode 100644 app/javascript/mastodon/actions/tags.js create mode 100644 app/javascript/mastodon/reducers/tags.js diff --git a/app/javascript/mastodon/actions/tags.js b/app/javascript/mastodon/actions/tags.js new file mode 100644 index 000000000..216e5b541 --- /dev/null +++ b/app/javascript/mastodon/actions/tags.js @@ -0,0 +1,92 @@ +import api from '../api'; + +export const HASHTAG_FETCH_REQUEST = 'HASHTAG_FETCH_REQUEST'; +export const HASHTAG_FETCH_SUCCESS = 'HASHTAG_FETCH_SUCCESS'; +export const HASHTAG_FETCH_FAIL = 'HASHTAG_FETCH_FAIL'; + +export const HASHTAG_FOLLOW_REQUEST = 'HASHTAG_FOLLOW_REQUEST'; +export const HASHTAG_FOLLOW_SUCCESS = 'HASHTAG_FOLLOW_SUCCESS'; +export const HASHTAG_FOLLOW_FAIL = 'HASHTAG_FOLLOW_FAIL'; + +export const HASHTAG_UNFOLLOW_REQUEST = 'HASHTAG_UNFOLLOW_REQUEST'; +export const HASHTAG_UNFOLLOW_SUCCESS = 'HASHTAG_UNFOLLOW_SUCCESS'; +export const HASHTAG_UNFOLLOW_FAIL = 'HASHTAG_UNFOLLOW_FAIL'; + +export const fetchHashtag = name => (dispatch, getState) => { + dispatch(fetchHashtagRequest()); + + api(getState).get(`/api/v1/tags/${name}`).then(({ data }) => { + dispatch(fetchHashtagSuccess(name, data)); + }).catch(err => { + dispatch(fetchHashtagFail(err)); + }); +}; + +export const fetchHashtagRequest = () => ({ + type: HASHTAG_FETCH_REQUEST, +}); + +export const fetchHashtagSuccess = (name, tag) => ({ + type: HASHTAG_FETCH_SUCCESS, + name, + tag, +}); + +export const fetchHashtagFail = error => ({ + type: HASHTAG_FETCH_FAIL, + error, +}); + +export const followHashtag = name => (dispatch, getState) => { + dispatch(followHashtagRequest(name)); + + api(getState).post(`/api/v1/tags/${name}/follow`).then(({ data }) => { + dispatch(followHashtagSuccess(name, data)); + }).catch(err => { + dispatch(followHashtagFail(name, err)); + }); +}; + +export const followHashtagRequest = name => ({ + type: HASHTAG_FOLLOW_REQUEST, + name, +}); + +export const followHashtagSuccess = (name, tag) => ({ + type: HASHTAG_FOLLOW_SUCCESS, + name, + tag, +}); + +export const followHashtagFail = (name, error) => ({ + type: HASHTAG_FOLLOW_FAIL, + name, + error, +}); + +export const unfollowHashtag = name => (dispatch, getState) => { + dispatch(unfollowHashtagRequest(name)); + + api(getState).post(`/api/v1/tags/${name}/unfollow`).then(({ data }) => { + dispatch(unfollowHashtagSuccess(name, data)); + }).catch(err => { + dispatch(unfollowHashtagFail(name, err)); + }); +}; + +export const unfollowHashtagRequest = name => ({ + type: HASHTAG_FETCH_REQUEST, + name, +}); + +export const unfollowHashtagSuccess = (name, tag) => ({ + type: HASHTAG_FETCH_SUCCESS, + name, + tag, +}); + +export const unfollowHashtagFail = (name, error) => ({ + type: HASHTAG_FETCH_FAIL, + name, + error, +}); diff --git a/app/javascript/mastodon/features/hashtag_timeline/index.js b/app/javascript/mastodon/features/hashtag_timeline/index.js index 6a808eb30..dc8a61640 100644 --- a/app/javascript/mastodon/features/hashtag_timeline/index.js +++ b/app/javascript/mastodon/features/hashtag_timeline/index.js @@ -1,21 +1,32 @@ import React from 'react'; import { connect } from 'react-redux'; import PropTypes from 'prop-types'; +import ImmutablePropTypes from 'react-immutable-proptypes'; import StatusListContainer from '../ui/containers/status_list_container'; -import Column from '../../components/column'; -import ColumnHeader from '../../components/column_header'; +import Column from 'mastodon/components/column'; +import ColumnHeader from 'mastodon/components/column_header'; import ColumnSettingsContainer from './containers/column_settings_container'; -import { expandHashtagTimeline, clearTimeline } from '../../actions/timelines'; -import { addColumn, removeColumn, moveColumn } from '../../actions/columns'; -import { FormattedMessage } from 'react-intl'; -import { connectHashtagStream } from '../../actions/streaming'; +import { expandHashtagTimeline, clearTimeline } from 'mastodon/actions/timelines'; +import { addColumn, removeColumn, moveColumn } from 'mastodon/actions/columns'; +import { injectIntl, FormattedMessage, defineMessages } from 'react-intl'; +import { connectHashtagStream } from 'mastodon/actions/streaming'; import { isEqual } from 'lodash'; +import { fetchHashtag, followHashtag, unfollowHashtag } from 'mastodon/actions/tags'; +import Icon from 'mastodon/components/icon'; +import classNames from 'classnames'; + +const messages = defineMessages({ + followHashtag: { id: 'hashtag.follow', defaultMessage: 'Follow hashtag' }, + unfollowHashtag: { id: 'hashtag.unfollow', defaultMessage: 'Unfollow hashtag' }, +}); const mapStateToProps = (state, props) => ({ hasUnread: state.getIn(['timelines', `hashtag:${props.params.id}${props.params.local ? ':local' : ''}`, 'unread']) > 0, + tag: state.getIn(['tags', props.params.id]), }); export default @connect(mapStateToProps) +@injectIntl class HashtagTimeline extends React.PureComponent { disconnects = []; @@ -25,7 +36,9 @@ class HashtagTimeline extends React.PureComponent { columnId: PropTypes.string, dispatch: PropTypes.func.isRequired, hasUnread: PropTypes.bool, + tag: ImmutablePropTypes.map, multiColumn: PropTypes.bool, + intl: PropTypes.object, }; handlePin = () => { @@ -39,7 +52,8 @@ class HashtagTimeline extends React.PureComponent { } title = () => { - let title = [this.props.params.id]; + const { id } = this.props.params; + const title = [id]; if (this.additionalFor('any')) { title.push(' ', ); @@ -95,23 +109,34 @@ class HashtagTimeline extends React.PureComponent { this.disconnects = []; } - componentDidMount () { + _unload () { + const { dispatch } = this.props; + const { id, local } = this.props.params; + + this._unsubscribe(); + dispatch(clearTimeline(`hashtag:${id}${local ? ':local' : ''}`)); + } + + _load() { const { dispatch } = this.props; const { id, tags, local } = this.props.params; this._subscribe(dispatch, id, tags, local); dispatch(expandHashtagTimeline(id, { tags, local })); + dispatch(fetchHashtag(id)); } - componentWillReceiveProps (nextProps) { - const { dispatch, params } = this.props; - const { id, tags, local } = nextProps.params; + componentDidMount () { + this._load(); + } + + componentDidUpdate (prevProps) { + const { params } = this.props; + const { id, tags, local } = prevProps.params; if (id !== params.id || !isEqual(tags, params.tags) || !isEqual(local, params.local)) { - this._unsubscribe(); - this._subscribe(dispatch, id, tags, local); - dispatch(clearTimeline(`hashtag:${id}${local ? ':local' : ''}`)); - dispatch(expandHashtagTimeline(id, { tags, local })); + this._unload(); + this._load(); } } @@ -124,15 +149,40 @@ class HashtagTimeline extends React.PureComponent { } handleLoadMore = maxId => { - const { id, tags, local } = this.props.params; - this.props.dispatch(expandHashtagTimeline(id, { maxId, tags, local })); + const { dispatch, params } = this.props; + const { id, tags, local } = params; + + dispatch(expandHashtagTimeline(id, { maxId, tags, local })); + } + + handleFollow = () => { + const { dispatch, params, tag } = this.props; + const { id } = params; + + if (tag.get('following')) { + dispatch(unfollowHashtag(id)); + } else { + dispatch(followHashtag(id)); + } } render () { - const { hasUnread, columnId, multiColumn } = this.props; + const { hasUnread, columnId, multiColumn, tag, intl } = this.props; const { id, local } = this.props.params; const pinned = !!columnId; + let followButton; + + if (tag) { + const following = tag.get('following'); + + followButton = ( + + ); + } + return ( {columnId && } diff --git a/app/javascript/mastodon/reducers/index.js b/app/javascript/mastodon/reducers/index.js index 0219d8a5e..d3d0303df 100644 --- a/app/javascript/mastodon/reducers/index.js +++ b/app/javascript/mastodon/reducers/index.js @@ -39,6 +39,7 @@ import markers from './markers'; import picture_in_picture from './picture_in_picture'; import accounts_map from './accounts_map'; import history from './history'; +import tags from './tags'; const reducers = { announcements, @@ -81,6 +82,7 @@ const reducers = { markers, picture_in_picture, history, + tags, }; export default combineReducers(reducers); diff --git a/app/javascript/mastodon/reducers/tags.js b/app/javascript/mastodon/reducers/tags.js new file mode 100644 index 000000000..d24098e39 --- /dev/null +++ b/app/javascript/mastodon/reducers/tags.js @@ -0,0 +1,25 @@ +import { + HASHTAG_FETCH_SUCCESS, + HASHTAG_FOLLOW_REQUEST, + HASHTAG_FOLLOW_FAIL, + HASHTAG_UNFOLLOW_REQUEST, + HASHTAG_UNFOLLOW_FAIL, +} from 'mastodon/actions/tags'; +import { Map as ImmutableMap, fromJS } from 'immutable'; + +const initialState = ImmutableMap(); + +export default function tags(state = initialState, action) { + switch(action.type) { + case HASHTAG_FETCH_SUCCESS: + return state.set(action.name, fromJS(action.tag)); + case HASHTAG_FOLLOW_REQUEST: + case HASHTAG_UNFOLLOW_FAIL: + return state.setIn([action.name, 'following'], true); + case HASHTAG_FOLLOW_FAIL: + case HASHTAG_UNFOLLOW_REQUEST: + return state.setIn([action.name, 'following'], false); + default: + return state; + } +}; From 3bc3a172eb87c9635c8e72cc6b56f93e6707b2ce Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 Jul 2022 00:56:29 +0900 Subject: [PATCH 257/652] Bump sass from 1.53.0 to 1.54.0 (#18881) Bumps [sass](https://github.com/sass/dart-sass) from 1.53.0 to 1.54.0. - [Release notes](https://github.com/sass/dart-sass/releases) - [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md) - [Commits](https://github.com/sass/dart-sass/compare/1.53.0...1.54.0) --- updated-dependencies: - dependency-name: sass dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 9b933a59d..b19aeaabc 100644 --- a/package.json +++ b/package.json @@ -119,7 +119,7 @@ "requestidlecallback": "^0.3.0", "reselect": "^4.1.6", "rimraf": "^3.0.2", - "sass": "^1.53.0", + "sass": "^1.54.0", "sass-loader": "^10.2.0", "stacktrace-js": "^2.0.2", "stringz": "^2.1.0", diff --git a/yarn.lock b/yarn.lock index 2168c1230..1735e8fa6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9749,10 +9749,10 @@ sass-loader@^10.2.0: schema-utils "^3.0.0" semver "^7.3.2" -sass@^1.53.0: - version "1.53.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.53.0.tgz#eab73a7baac045cc57ddc1d1ff501ad2659952eb" - integrity sha512-zb/oMirbKhUgRQ0/GFz8TSAwRq2IlR29vOUJZOx0l8sV+CkHUfHa4u5nqrG+1VceZp7Jfj59SVW9ogdhTvJDcQ== +sass@^1.54.0: + version "1.54.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.0.tgz#24873673265e2a4fe3d3a997f714971db2fba1f4" + integrity sha512-C4zp79GCXZfK0yoHZg+GxF818/aclhp9F48XBu/+bm9vXEVAYov9iU3FBVRMq3Hx3OA4jfKL+p2K9180mEh0xQ== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" From f305bd2c761114935e9dddd3116675b62933c3a7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 Jul 2022 00:57:08 +0900 Subject: [PATCH 258/652] Bump eslint-plugin-jsx-a11y from 6.6.0 to 6.6.1 (#18884) Bumps [eslint-plugin-jsx-a11y](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y) from 6.6.0 to 6.6.1. - [Release notes](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/releases) - [Changelog](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/CHANGELOG.md) - [Commits](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/compare/v6.6.0...v6.6.1) --- updated-dependencies: - dependency-name: eslint-plugin-jsx-a11y dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 32 ++++++++++++++++---------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index b19aeaabc..3f777ee75 100644 --- a/package.json +++ b/package.json @@ -145,7 +145,7 @@ "babel-jest": "^28.1.3", "eslint": "^7.32.0", "eslint-plugin-import": "~2.26.0", - "eslint-plugin-jsx-a11y": "~6.6.0", + "eslint-plugin-jsx-a11y": "~6.6.1", "eslint-plugin-promise": "~6.0.0", "eslint-plugin-react": "~7.30.1", "jest": "^28.1.3", diff --git a/yarn.lock b/yarn.lock index 1735e8fa6..d054daf02 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1041,7 +1041,7 @@ dependencies: regenerator-runtime "^0.12.0" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.9", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a" integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== @@ -2456,10 +2456,10 @@ autoprefixer@^9.8.8: postcss "^7.0.32" postcss-value-parser "^4.1.0" -axe-core@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.2.tgz#dcf7fb6dea866166c3eab33d68208afe4d5f670c" - integrity sha512-LVAaGp/wkkgYJcjmHsoKx4juT1aQvJyPcW09MLCjVTh3V2cc6PnyempiLMNH5iMdfIX/zdbjUx2KDjMLCTdPeA== +axe-core@^4.4.3: + version "4.4.3" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.3.tgz#11c74d23d5013c0fa5d183796729bc3482bd2f6f" + integrity sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w== axios@^0.27.2: version "0.27.2" @@ -4518,21 +4518,21 @@ eslint-plugin-import@~2.26.0: resolve "^1.22.0" tsconfig-paths "^3.14.1" -eslint-plugin-jsx-a11y@~6.6.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.0.tgz#2c5ac12e013eb98337b9aa261c3b355275cc6415" - integrity sha512-kTeLuIzpNhXL2CwLlc8AHI0aFRwWHcg483yepO9VQiHzM9bZwJdzTkzBszbuPrbgGmq2rlX/FaT2fJQsjUSHsw== +eslint-plugin-jsx-a11y@~6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz#93736fc91b83fdc38cc8d115deedfc3091aef1ff" + integrity sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q== dependencies: - "@babel/runtime" "^7.18.3" + "@babel/runtime" "^7.18.9" aria-query "^4.2.2" array-includes "^3.1.5" ast-types-flow "^0.0.7" - axe-core "^4.4.2" + axe-core "^4.4.3" axobject-query "^2.2.0" damerau-levenshtein "^1.0.8" emoji-regex "^9.2.2" has "^1.0.3" - jsx-ast-utils "^3.3.1" + jsx-ast-utils "^3.3.2" language-tags "^1.0.5" minimatch "^3.1.2" semver "^6.3.0" @@ -6944,10 +6944,10 @@ jsonify@~0.0.0: resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.1.tgz#a3e0f1cb7e230954eab4dcbce9f6288a78f8ba44" - integrity sha512-pxrjmNpeRw5wwVeWyEAk7QJu2GnBO3uzPFmHCKJJFPKK2Cy0cWL23krGtLdnMmbIi6/FjlrQpPyfQI19ByPOhQ== +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.2.tgz#afe5efe4332cd3515c065072bd4d6b0aa22152bd" + integrity sha512-4ZCADZHRkno244xlNnn4AOG6sRQ7iBZ5BbgZ4vW4y5IZw7cVUD1PPeblm1xx/nfmMxPdt/LHsXZW8z/j58+l9Q== dependencies: array-includes "^3.1.5" object.assign "^4.1.2" From d52afaa6c71b02d56935b4f64234b48f95913efc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 Jul 2022 00:59:37 +0900 Subject: [PATCH 259/652] Bump nokogiri from 1.13.7 to 1.13.8 (#18882) Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.13.7 to 1.13.8. - [Release notes](https://github.com/sparklemotion/nokogiri/releases) - [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.13.7...v1.13.8) --- updated-dependencies: - dependency-name: nokogiri dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index af07cb9a2..d9646bd2d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -405,7 +405,7 @@ GEM net-ssh (>= 2.6.5, < 7.0.0) net-ssh (6.1.0) nio4r (2.5.8) - nokogiri (1.13.7) + nokogiri (1.13.8) mini_portile2 (~> 2.8.0) racc (~> 1.4) nsa (0.2.8) From 1f611d6ffb7170cd3121920c6c6d2da36b9377df Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 Jul 2022 01:09:28 +0900 Subject: [PATCH 260/652] Bump oj from 3.13.17 to 3.13.18 (#18896) Bumps [oj](https://github.com/ohler55/oj) from 3.13.17 to 3.13.18. - [Release notes](https://github.com/ohler55/oj/releases) - [Changelog](https://github.com/ohler55/oj/blob/develop/CHANGELOG.md) - [Commits](https://github.com/ohler55/oj/compare/v3.13.17...v3.13.18) --- updated-dependencies: - dependency-name: oj dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index d9646bd2d..408424e0c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -413,7 +413,7 @@ GEM concurrent-ruby (~> 1.0, >= 1.0.2) sidekiq (>= 3.5) statsd-ruby (~> 1.4, >= 1.4.0) - oj (3.13.17) + oj (3.13.18) omniauth (1.9.1) hashie (>= 3.4.6) rack (>= 1.6.2, < 3) From f12afa177ebb51e92c222f43c01f7a5c11f4ec0d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 Jul 2022 01:11:57 +0900 Subject: [PATCH 261/652] Bump rqrcode from 2.1.1 to 2.1.2 (#18897) Bumps [rqrcode](https://github.com/whomwah/rqrcode) from 2.1.1 to 2.1.2. - [Release notes](https://github.com/whomwah/rqrcode/releases) - [Changelog](https://github.com/whomwah/rqrcode/blob/master/CHANGELOG.md) - [Commits](https://github.com/whomwah/rqrcode/compare/v2.1.1...v2.1.2) --- updated-dependencies: - dependency-name: rqrcode dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 408424e0c..76c5fdb49 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -543,7 +543,7 @@ GEM rexml (3.2.5) rotp (6.2.0) rpam2 (4.0.2) - rqrcode (2.1.1) + rqrcode (2.1.2) chunky_png (~> 1.0) rqrcode_core (~> 1.0) rqrcode_core (1.2.0) From 07025a7f1bb8cee45e66249320336bf37aedaa27 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 Jul 2022 01:16:28 +0900 Subject: [PATCH 262/652] Bump faker from 2.21.0 to 2.22.0 (#18899) Bumps [faker](https://github.com/faker-ruby/faker) from 2.21.0 to 2.22.0. - [Release notes](https://github.com/faker-ruby/faker/releases) - [Changelog](https://github.com/faker-ruby/faker/blob/master/CHANGELOG.md) - [Commits](https://github.com/faker-ruby/faker/compare/v2.21.0...v2.22.0) --- updated-dependencies: - dependency-name: faker dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index ce5e231d0..6f042eefe 100644 --- a/Gemfile +++ b/Gemfile @@ -114,7 +114,7 @@ end group :test do gem 'capybara', '~> 3.37' gem 'climate_control', '~> 0.2' - gem 'faker', '~> 2.21' + gem 'faker', '~> 2.22' gem 'microformats', '~> 4.4' gem 'rails-controller-testing', '~> 1.0' gem 'rspec-sidekiq', '~> 3.1' diff --git a/Gemfile.lock b/Gemfile.lock index 76c5fdb49..508fd3957 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -220,7 +220,7 @@ GEM tzinfo excon (0.76.0) fabrication (2.29.0) - faker (2.21.0) + faker (2.22.0) i18n (>= 1.8.11, < 2) faraday (1.9.3) faraday-em_http (~> 1.0) @@ -305,7 +305,7 @@ GEM httplog (1.5.0) rack (>= 1.0) rainbow (>= 2.0.0) - i18n (1.10.0) + i18n (1.12.0) concurrent-ruby (~> 1.0) i18n-tasks (1.0.11) activesupport (>= 4.0.2) @@ -759,7 +759,7 @@ DEPENDENCIES dotenv-rails (~> 2.7) ed25519 (~> 1.3) fabrication (~> 2.29) - faker (~> 2.21) + faker (~> 2.22) fast_blank (~> 1.0) fastimage fog-core (<= 2.1.0) From 7ad86cbc96533055e5afb12d8da8fc807059cdc2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 Jul 2022 01:24:30 +0900 Subject: [PATCH 263/652] Bump stackprof from 0.2.19 to 0.2.20 (#18903) Bumps [stackprof](https://github.com/tmm1/stackprof) from 0.2.19 to 0.2.20. - [Release notes](https://github.com/tmm1/stackprof/releases) - [Changelog](https://github.com/tmm1/stackprof/blob/master/CHANGELOG.md) - [Commits](https://github.com/tmm1/stackprof/compare/v0.2.19...v0.2.20) --- updated-dependencies: - dependency-name: stackprof dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 508fd3957..436838fc3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -639,7 +639,7 @@ GEM sshkit (1.21.2) net-scp (>= 1.1.2) net-ssh (>= 2.8.0) - stackprof (0.2.19) + stackprof (0.2.20) statsd-ruby (1.5.0) stoplight (3.0.0) strong_migrations (0.7.9) From 742a8301e7dc3b4d7e83a276dbce66ccd617135b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 Jul 2022 01:27:12 +0900 Subject: [PATCH 264/652] Bump fabrication from 2.29.0 to 2.30.0 (#18901) Bumps [fabrication](https://gitlab.com/fabrication-gem/fabrication/) from 2.29.0 to 2.30.0. - [Release notes](https://gitlab.com/fabrication-gem/fabrication//tags) - [Commits](https://gitlab.com/fabrication-gem/fabrication//compare/2.29.0...2.30.0) --- updated-dependencies: - dependency-name: fabrication dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 6f042eefe..0a99f075e 100644 --- a/Gemfile +++ b/Gemfile @@ -99,7 +99,7 @@ gem 'json-ld-preloaded', '~> 3.2' gem 'rdf-normalize', '~> 0.5' group :development, :test do - gem 'fabrication', '~> 2.29' + gem 'fabrication', '~> 2.30' gem 'fuubar', '~> 2.5' gem 'i18n-tasks', '~> 1.0', require: false gem 'pry-byebug', '~> 3.9' diff --git a/Gemfile.lock b/Gemfile.lock index 436838fc3..1b6b847ce 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -219,7 +219,7 @@ GEM et-orbi (1.2.7) tzinfo excon (0.76.0) - fabrication (2.29.0) + fabrication (2.30.0) faker (2.22.0) i18n (>= 1.8.11, < 2) faraday (1.9.3) @@ -758,7 +758,7 @@ DEPENDENCIES doorkeeper (~> 5.5) dotenv-rails (~> 2.7) ed25519 (~> 1.3) - fabrication (~> 2.29) + fabrication (~> 2.30) faker (~> 2.22) fast_blank (~> 1.0) fastimage From f3bb142b8f86219e5dfca6d8fa99f95ff37d37fc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 Jul 2022 01:29:43 +0900 Subject: [PATCH 265/652] Bump bootsnap from 1.12.0 to 1.13.0 (#18902) Bumps [bootsnap](https://github.com/Shopify/bootsnap) from 1.12.0 to 1.13.0. - [Release notes](https://github.com/Shopify/bootsnap/releases) - [Changelog](https://github.com/Shopify/bootsnap/blob/main/CHANGELOG.md) - [Commits](https://github.com/Shopify/bootsnap/compare/v1.12.0...v1.13.0) --- updated-dependencies: - dependency-name: bootsnap dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index 0a99f075e..5bb386a80 100644 --- a/Gemfile +++ b/Gemfile @@ -26,7 +26,7 @@ gem 'blurhash', '~> 0.1' gem 'active_model_serializers', '~> 0.10' gem 'addressable', '~> 2.8' -gem 'bootsnap', '~> 1.12.0', require: false +gem 'bootsnap', '~> 1.13.0', require: false gem 'browser' gem 'charlock_holmes', '~> 0.7.7' gem 'chewy', '~> 7.2' diff --git a/Gemfile.lock b/Gemfile.lock index 1b6b847ce..91c8de7aa 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -114,7 +114,7 @@ GEM debug_inspector (>= 0.0.1) blurhash (0.1.6) ffi (~> 1.14) - bootsnap (1.12.0) + bootsnap (1.13.0) msgpack (~> 1.2) brakeman (5.2.3) browser (4.2.0) @@ -397,7 +397,7 @@ GEM mini_mime (1.1.2) mini_portile2 (2.8.0) minitest (5.16.0) - msgpack (1.5.2) + msgpack (1.5.4) multi_json (1.15.0) multipart-post (2.1.1) net-ldap (0.17.1) @@ -734,7 +734,7 @@ DEPENDENCIES better_errors (~> 2.9) binding_of_caller (~> 1.0) blurhash (~> 0.1) - bootsnap (~> 1.12.0) + bootsnap (~> 1.13.0) brakeman (~> 5.2) browser bullet (~> 7.0) From 7bfbf1c119a8c2a8a3655505fdc1ce098d47cd93 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 Jul 2022 01:31:49 +0900 Subject: [PATCH 266/652] Bump sidekiq-unique-jobs from 7.1.25 to 7.1.26 (#18900) Bumps [sidekiq-unique-jobs](https://github.com/mhenrixon/sidekiq-unique-jobs) from 7.1.25 to 7.1.26. - [Release notes](https://github.com/mhenrixon/sidekiq-unique-jobs/releases) - [Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/blob/main/CHANGELOG.md) - [Commits](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v7.1.25...v7.1.26) --- updated-dependencies: - dependency-name: sidekiq-unique-jobs dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 91c8de7aa..ad99e3909 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -612,7 +612,7 @@ GEM rufus-scheduler (~> 3.2) sidekiq (>= 4) tilt (>= 1.4.0) - sidekiq-unique-jobs (7.1.25) + sidekiq-unique-jobs (7.1.26) brpoplpush-redis_script (> 0.1.1, <= 2.0.0) concurrent-ruby (~> 1.0, >= 1.0.5) sidekiq (>= 5.0, < 8.0) From 6af383213adc1666fd222c11837a9a0ddb5d24bd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 Jul 2022 01:39:38 +0900 Subject: [PATCH 267/652] Bump dotenv-rails from 2.7.6 to 2.8.1 (#18898) Bumps [dotenv-rails](https://github.com/bkeepers/dotenv) from 2.7.6 to 2.8.1. - [Release notes](https://github.com/bkeepers/dotenv/releases) - [Changelog](https://github.com/bkeepers/dotenv/blob/master/Changelog.md) - [Commits](https://github.com/bkeepers/dotenv/compare/v2.7.6...v2.8.1) --- updated-dependencies: - dependency-name: dotenv-rails dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Gemfile b/Gemfile index 5bb386a80..1690f92df 100644 --- a/Gemfile +++ b/Gemfile @@ -16,7 +16,7 @@ gem 'hamlit-rails', '~> 0.2' gem 'pg', '~> 1.4' gem 'makara', '~> 0.5' gem 'pghero', '~> 2.8' -gem 'dotenv-rails', '~> 2.7' +gem 'dotenv-rails', '~> 2.8' gem 'aws-sdk-s3', '~> 1.114', require: false gem 'fog-core', '<= 2.1.0' diff --git a/Gemfile.lock b/Gemfile.lock index ad99e3909..a37486aaa 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -200,9 +200,9 @@ GEM unf (>= 0.0.5, < 1.0.0) doorkeeper (5.5.4) railties (>= 5) - dotenv (2.7.6) - dotenv-rails (2.7.6) - dotenv (= 2.7.6) + dotenv (2.8.1) + dotenv-rails (2.8.1) + dotenv (= 2.8.1) railties (>= 3.2) ed25519 (1.3.0) elasticsearch (7.13.3) @@ -396,7 +396,7 @@ GEM mime-types-data (3.2022.0105) mini_mime (1.1.2) mini_portile2 (2.8.0) - minitest (5.16.0) + minitest (5.16.2) msgpack (1.5.4) multi_json (1.15.0) multipart-post (2.1.1) @@ -488,8 +488,8 @@ GEM rack (>= 2.1.0) rack-proxy (0.7.0) rack - rack-test (1.1.0) - rack (>= 1.0, < 3) + rack-test (2.0.2) + rack (>= 1.3) rails (6.1.6) actioncable (= 6.1.6) actionmailbox (= 6.1.6) @@ -671,7 +671,7 @@ GEM twitter-text (3.1.0) idn-ruby unf (~> 0.1.0) - tzinfo (2.0.4) + tzinfo (2.0.5) concurrent-ruby (~> 1.0) tzinfo-data (1.2022.1) tzinfo (>= 1.0.0) @@ -756,7 +756,7 @@ DEPENDENCIES devise_pam_authenticatable2 (~> 9.2) discard (~> 1.2) doorkeeper (~> 5.5) - dotenv-rails (~> 2.7) + dotenv-rails (~> 2.8) ed25519 (~> 1.3) fabrication (~> 2.30) faker (~> 2.22) From e606140bacbfd4a3a5a203458c451d334b1b204f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 Jul 2022 01:48:43 +0900 Subject: [PATCH 268/652] Bump pg from 1.4.1 to 1.4.2 (#18895) Bumps [pg](https://github.com/ged/ruby-pg) from 1.4.1 to 1.4.2. - [Release notes](https://github.com/ged/ruby-pg/releases) - [Changelog](https://github.com/ged/ruby-pg/blob/master/History.rdoc) - [Commits](https://github.com/ged/ruby-pg/compare/v1.4.1...v1.4.2) --- updated-dependencies: - dependency-name: pg dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index a37486aaa..6130ea07f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -447,7 +447,7 @@ GEM parslet (2.0.0) pastel (0.8.0) tty-color (~> 0.5) - pg (1.4.1) + pg (1.4.2) pghero (2.8.3) activerecord (>= 5) pkg-config (1.4.7) From 4b36e47474d11849ac28c6c8121a568feb8308a7 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 30 Jul 2022 15:09:18 +0200 Subject: [PATCH 269/652] New Crowdin updates (#18855) * New translations en.json (Hebrew) * New translations en.json (Indonesian) * New translations activerecord.en.yml (Hebrew) * New translations activerecord.en.yml (Indonesian) * New translations en.yml (Hebrew) * New translations en.yml (Indonesian) * New translations simple_form.en.yml (Hebrew) * New translations activerecord.en.yml (Hebrew) * New translations en.yml (Hebrew) * New translations devise.en.yml (Hebrew) * New translations en.json (Chinese Simplified) * New translations en.json (Galician) * New translations en.json (Punjabi) * New translations en.json (Irish) * New translations en.json (Hungarian) * New translations en.json (Armenian) * New translations en.json (Italian) * New translations en.json (Georgian) * New translations en.json (Korean) * New translations en.json (Lithuanian) * New translations en.json (Macedonian) * New translations en.json (Norwegian) * New translations en.json (Polish) * New translations en.json (Basque) * New translations en.json (Russian) * New translations en.json (Slovak) * New translations en.json (Slovenian) * New translations en.json (Serbian (Cyrillic)) * New translations en.json (Swedish) * New translations en.json (Turkish) * New translations en.json (Ukrainian) * New translations en.json (Chinese Traditional) * New translations en.json (Urdu (Pakistan)) * New translations en.json (Icelandic) * New translations en.json (Finnish) * New translations en.json (Frisian) * New translations en.json (Hebrew) * New translations en.json (Greek) * New translations en.json (Albanian) * New translations en.json (French) * New translations en.json (Spanish) * New translations en.json (Japanese) * New translations en.json (Dutch) * New translations en.json (Portuguese) * New translations en.json (Chinese Simplified) * New translations en.json (Vietnamese) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Romanian) * New translations en.json (Afrikaans) * New translations en.json (Arabic) * New translations en.json (Bulgarian) * New translations en.json (Catalan) * New translations en.json (Czech) * New translations en.json (Danish) * New translations en.json (German) * New translations en.json (Sinhala) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Indonesian) * New translations en.json (Esperanto) * New translations en.json (Thai) * New translations en.json (Welsh) * New translations en.json (Persian) * New translations en.json (Sorani (Kurdish)) * New translations en.json (Cornish) * New translations en.json (Kannada) * New translations en.json (Scottish Gaelic) * New translations en.json (Asturian) * New translations en.json (Occitan) * New translations en.json (Serbian (Latin)) * New translations en.json (Corsican) * New translations en.json (Malayalam) * New translations en.json (Sardinian) * New translations en.json (Sanskrit) * New translations en.json (Kabyle) * New translations en.json (Ido) * New translations en.json (Taigi) * New translations en.json (Silesian) * New translations en.json (Breton) * New translations en.json (Tatar) * New translations en.json (Tamil) * New translations en.json (Kazakh) * New translations en.json (Spanish, Argentina) * New translations en.json (Spanish, Mexico) * New translations en.json (Bengali) * New translations en.json (Marathi) * New translations en.json (Croatian) * New translations en.json (Norwegian Nynorsk) * New translations en.json (Estonian) * New translations en.json (Chinese Traditional, Hong Kong) * New translations en.json (Latvian) * New translations en.json (Hindi) * New translations en.json (Malay) * New translations en.json (Telugu) * New translations en.json (English, United Kingdom) * New translations en.json (Uyghur) * New translations en.json (Standard Moroccan Tamazight) * New translations en.yml (Thai) * New translations activerecord.en.yml (Thai) * New translations en.json (Spanish, Argentina) * New translations en.json (Chinese Traditional) * New translations en.json (Galician) * New translations en.json (Greek) * New translations en.json (Hungarian) * New translations activerecord.en.yml (Chinese Simplified) * New translations en.json (Polish) * New translations en.json (Latvian) * New translations en.json (Albanian) * New translations simple_form.en.yml (Turkish) * New translations activerecord.en.yml (Turkish) * New translations en.json (Russian) * New translations en.json (Turkish) * New translations en.json (Portuguese) * New translations en.json (Spanish) * New translations en.json (Danish) * New translations en.json (Russian) * New translations en.json (Slovak) * New translations en.json (Slovenian) * New translations en.json (Ukrainian) * New translations en.json (Portuguese) * New translations en.json (Italian) * New translations en.json (Polish) * New translations en.json (Swedish) * New translations en.json (Ukrainian) * New translations en.json (Tamil) * New translations en.json (Spanish, Argentina) * New translations en.json (Kabyle) * New translations en.json (Spanish, Argentina) * New translations en.json (Ido) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Hebrew) * New translations simple_form.en.yml (Hebrew) * New translations en.yml (Hebrew) * New translations en.yml (Japanese) * New translations simple_form.en.yml (Japanese) * New translations en.yml (Polish) * New translations simple_form.en.yml (Polish) * New translations activerecord.en.yml (Polish) * New translations en.json (Korean) * New translations en.json (Spanish) * New translations en.json (Hindi) * New translations en.json (Vietnamese) * New translations activerecord.en.yml (Vietnamese) * New translations en.json (Hindi) * New translations en.json (German) * New translations en.json (German) * New translations en.yml (Esperanto) * New translations en.yml (Chinese Simplified) * New translations en.json (Chinese Simplified) * New translations en.json (Esperanto) * New translations activerecord.en.yml (French) * New translations en.json (French) * New translations en.json (French) * New translations en.yml (Thai) * New translations en.json (Thai) * New translations activerecord.en.yml (Thai) * New translations en.yml (Thai) * New translations simple_form.en.yml (Thai) * New translations activerecord.en.yml (Thai) * New translations en.json (Thai) * New translations activerecord.en.yml (Thai) * New translations en.yml (Thai) * New translations simple_form.en.yml (Thai) * New translations simple_form.en.yml (Thai) * New translations doorkeeper.en.yml (Thai) * New translations simple_form.en.yml (Thai) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 5 +- app/javascript/mastodon/locales/ar.json | 5 +- app/javascript/mastodon/locales/ast.json | 5 +- app/javascript/mastodon/locales/bg.json | 5 +- app/javascript/mastodon/locales/bn.json | 5 +- app/javascript/mastodon/locales/br.json | 5 +- app/javascript/mastodon/locales/ca.json | 5 +- app/javascript/mastodon/locales/ckb.json | 5 +- app/javascript/mastodon/locales/co.json | 5 +- app/javascript/mastodon/locales/cs.json | 5 +- app/javascript/mastodon/locales/cy.json | 5 +- app/javascript/mastodon/locales/da.json | 5 +- app/javascript/mastodon/locales/de.json | 21 ++- .../mastodon/locales/defaultMessages.json | 10 +- app/javascript/mastodon/locales/el.json | 5 +- app/javascript/mastodon/locales/en-GB.json | 5 +- app/javascript/mastodon/locales/en.json | 2 + app/javascript/mastodon/locales/eo.json | 7 +- app/javascript/mastodon/locales/es-AR.json | 5 +- app/javascript/mastodon/locales/es-MX.json | 9 +- app/javascript/mastodon/locales/es.json | 5 +- app/javascript/mastodon/locales/et.json | 5 +- app/javascript/mastodon/locales/eu.json | 5 +- app/javascript/mastodon/locales/fa.json | 5 +- app/javascript/mastodon/locales/fi.json | 5 +- app/javascript/mastodon/locales/fr.json | 7 +- app/javascript/mastodon/locales/fy.json | 5 +- app/javascript/mastodon/locales/ga.json | 5 +- app/javascript/mastodon/locales/gd.json | 5 +- app/javascript/mastodon/locales/gl.json | 5 +- app/javascript/mastodon/locales/he.json | 85 +++++----- app/javascript/mastodon/locales/hi.json | 35 ++-- app/javascript/mastodon/locales/hr.json | 5 +- app/javascript/mastodon/locales/hu.json | 5 +- app/javascript/mastodon/locales/hy.json | 5 +- app/javascript/mastodon/locales/id.json | 9 +- app/javascript/mastodon/locales/io.json | 5 +- app/javascript/mastodon/locales/is.json | 5 +- app/javascript/mastodon/locales/it.json | 7 +- app/javascript/mastodon/locales/ja.json | 5 +- app/javascript/mastodon/locales/ka.json | 5 +- app/javascript/mastodon/locales/kab.json | 7 +- app/javascript/mastodon/locales/kk.json | 5 +- app/javascript/mastodon/locales/kn.json | 5 +- app/javascript/mastodon/locales/ko.json | 5 +- app/javascript/mastodon/locales/ku.json | 5 +- app/javascript/mastodon/locales/kw.json | 5 +- app/javascript/mastodon/locales/lt.json | 5 +- app/javascript/mastodon/locales/lv.json | 5 +- app/javascript/mastodon/locales/mk.json | 5 +- app/javascript/mastodon/locales/ml.json | 5 +- app/javascript/mastodon/locales/mr.json | 5 +- app/javascript/mastodon/locales/ms.json | 5 +- app/javascript/mastodon/locales/nl.json | 5 +- app/javascript/mastodon/locales/nn.json | 5 +- app/javascript/mastodon/locales/no.json | 5 +- app/javascript/mastodon/locales/oc.json | 5 +- app/javascript/mastodon/locales/pa.json | 5 +- app/javascript/mastodon/locales/pl.json | 7 +- app/javascript/mastodon/locales/pt-BR.json | 5 +- app/javascript/mastodon/locales/pt-PT.json | 7 +- app/javascript/mastodon/locales/ro.json | 5 +- app/javascript/mastodon/locales/ru.json | 5 +- app/javascript/mastodon/locales/sa.json | 5 +- app/javascript/mastodon/locales/sc.json | 5 +- app/javascript/mastodon/locales/si.json | 5 +- app/javascript/mastodon/locales/sk.json | 9 +- app/javascript/mastodon/locales/sl.json | 5 +- app/javascript/mastodon/locales/sq.json | 5 +- app/javascript/mastodon/locales/sr-Latn.json | 5 +- app/javascript/mastodon/locales/sr.json | 5 +- app/javascript/mastodon/locales/sv.json | 7 +- app/javascript/mastodon/locales/szl.json | 5 +- app/javascript/mastodon/locales/ta.json | 7 +- app/javascript/mastodon/locales/tai.json | 5 +- app/javascript/mastodon/locales/te.json | 5 +- app/javascript/mastodon/locales/th.json | 11 +- app/javascript/mastodon/locales/tr.json | 7 +- app/javascript/mastodon/locales/tt.json | 5 +- app/javascript/mastodon/locales/ug.json | 5 +- app/javascript/mastodon/locales/uk.json | 5 +- app/javascript/mastodon/locales/ur.json | 5 +- app/javascript/mastodon/locales/vi.json | 5 +- app/javascript/mastodon/locales/zgh.json | 5 +- app/javascript/mastodon/locales/zh-CN.json | 7 +- app/javascript/mastodon/locales/zh-HK.json | 5 +- app/javascript/mastodon/locales/zh-TW.json | 5 +- config/locales/activerecord.fr.yml | 2 + config/locales/activerecord.he.yml | 19 +++ config/locales/activerecord.pl.yml | 2 + config/locales/activerecord.th.yml | 6 +- config/locales/activerecord.tr.yml | 2 + config/locales/activerecord.vi.yml | 2 + config/locales/activerecord.zh-CN.yml | 11 +- config/locales/devise.he.yml | 5 + config/locales/doorkeeper.th.yml | 18 +- config/locales/eo.yml | 2 +- config/locales/he.yml | 159 +++++++++++++++--- config/locales/id.yml | 5 + config/locales/ja.yml | 26 +++ config/locales/pl.yml | 9 + config/locales/simple_form.he.yml | 41 ++++- config/locales/simple_form.ja.yml | 13 ++ config/locales/simple_form.pl.yml | 5 + config/locales/simple_form.th.yml | 26 +-- config/locales/simple_form.tr.yml | 1 + config/locales/th.yml | 43 +++-- config/locales/zh-CN.yml | 21 +++ 108 files changed, 777 insertions(+), 242 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 9e84a1bd7..942c8191f 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index d3f49b82f..13d6e4e7a 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "أي كان مِن هذه", "hashtag.column_settings.tag_mode.none": "لا شيء مِن هذه", "hashtag.column_settings.tag_toggle": "إدراج الوسوم الإضافية لهذا العمود", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "الأساسية", "home.column_settings.show_reblogs": "اعرض الترقيات", "home.column_settings.show_replies": "اعرض الردود", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "المتابِعون", "timeline_hint.resources.follows": "المتابَعون", "timeline_hint.resources.statuses": "المنشورات القديمة", - "trends.counter_by_accounts": "{count,plural,zero{} one{{counter} شخص} two{{counter} شخصين} few{{counter} أشخاص } many{{counter} شخص} other{{counter} شخص}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "المتداولة الآن", "ui.beforeunload": "سوف تفقد مسودتك إن تركت ماستدون.", "units.short.billion": "{count} مليار", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 16fa5e1b6..034885e81 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Cualesquiera d'estes", "hashtag.column_settings.tag_mode.none": "Nenguna d'estes", "hashtag.column_settings.tag_toggle": "Incluyir les etiquetes adicionales d'esta columna", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Amosar rempuestes", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older posts", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "En tendencia", "ui.beforeunload": "El borrador va perdese si coles de Mastodon.", "units.short.billion": "{count} B", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 18d95b5dd..89f2efc85 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -220,6 +220,9 @@ "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": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Основно", "home.column_settings.show_reblogs": "Показване на споделяния", "home.column_settings.show_replies": "Показване на отговори", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Последователи", "timeline_hint.resources.follows": "Последвани", "timeline_hint.resources.statuses": "По-стари публикации", - "trends.counter_by_accounts": "{count, plural, one {{counter} човек} other {{counter} човека}} говорят", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Налагащи се сега", "ui.beforeunload": "Черновата ви ще бъде загубена, ако излезете от Mastodon.", "units.short.billion": "{count}млрд", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index 34d650234..852c4c720 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "এর ভেতরে যেকোনোটা", "hashtag.column_settings.tag_mode.none": "এগুলোর একটাও না", "hashtag.column_settings.tag_toggle": "আরো ট্যাগ এই কলামে যুক্ত করতে", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "সাধারণ", "home.column_settings.show_reblogs": "সমর্থনগুলো দেখান", "home.column_settings.show_replies": "মতামত দেখান", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "অনুসরকারীরা", "timeline_hint.resources.follows": "অনুসরণ করে", "timeline_hint.resources.statuses": "পুরনো টুটগুলি", - "trends.counter_by_accounts": "{count, plural,one {{counter} জন ব্যক্তি} other {{counter} জন লোক}} কথা বলছে", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "বর্তমানে জনপ্রিয়", "ui.beforeunload": "যে পর্যন্ত এটা লেখা হয়েছে, মাস্টাডন থেকে চলে গেলে এটা মুছে যাবে।", "units.short.billion": "{count}বিলিয়ন", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index 14a55e420..ac504c49c 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Unan e mesk anezho", "hashtag.column_settings.tag_mode.none": "Hini ebet anezho", "hashtag.column_settings.tag_toggle": "Endelc'her gerioù-alc'hwez ouzhpenn evit ar bannad-mañ", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Diazez", "home.column_settings.show_reblogs": "Diskouez ar skignadennoù", "home.column_settings.show_replies": "Diskouez ar respontoù", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Heulier·ezed·ien", "timeline_hint.resources.follows": "Heuliañ", "timeline_hint.resources.statuses": "Toudoù koshoc'h", - "trends.counter_by_accounts": "{count, plural, one {{counter} den} other {{counter} a zud}} a zo o komz", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Luskad ar mare", "ui.beforeunload": "Kollet e vo ho prell ma kuitit Mastodon.", "units.short.billion": "{count}miliard", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 2e3520fed..bc6029fe0 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Qualsevol d’aquests", "hashtag.column_settings.tag_mode.none": "Cap d’aquests", "hashtag.column_settings.tag_toggle": "Inclou etiquetes addicionals per a aquesta columna", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Bàsic", "home.column_settings.show_reblogs": "Mostra els impulsos", "home.column_settings.show_replies": "Mostra les respostes", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Seguidors", "timeline_hint.resources.follows": "Seguiments", "timeline_hint.resources.statuses": "Publicacions més antigues", - "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} persones}} parlant-ne", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "En tendència", "ui.beforeunload": "El teu esborrany es perdrà si surts de Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 223b0d417..80c5089ae 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "هەر کام لەمانە", "hashtag.column_settings.tag_mode.none": "هیچ کام لەمانە", "hashtag.column_settings.tag_toggle": "تاگی زیادە ی ئەم ستوونە لەخۆ بنووسە", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "بنەڕەتی", "home.column_settings.show_reblogs": "پیشاندانی بەهێزکردن", "home.column_settings.show_replies": "وەڵامدانەوەکان پیشان بدە", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "شوێنکەوتوو", "timeline_hint.resources.follows": "شوێنکەوتن", "timeline_hint.resources.statuses": "نێردراوی کۆن", - "trends.counter_by_accounts": "{count, plural, one {{counter} کەس} other {{counter} کەس}} گفتوگۆ دەکا", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "ڕۆژەڤ", "ui.beforeunload": "ڕەشنووسەکەت لەدەست دەچێت ئەگەر ماستۆدۆن جێ بهێڵیت.", "units.short.billion": "{count} ملیار", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 9dd6f1a48..2dbc256ee 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Unu di quessi", "hashtag.column_settings.tag_mode.none": "Nisunu di quessi", "hashtag.column_settings.tag_toggle": "Inchjude tag addiziunali per sta colonna", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Bàsichi", "home.column_settings.show_reblogs": "Vede e spartere", "home.column_settings.show_replies": "Vede e risposte", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Abbunati", "timeline_hint.resources.follows": "Abbunamenti", "timeline_hint.resources.statuses": "Statuti più anziani", - "trends.counter_by_accounts": "{count, plural, one {{counter} persona chì parla} other {{counter} persone chì parlanu}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Tindenze d'avà", "ui.beforeunload": "A bruttacopia sarà persa s'ellu hè chjosu Mastodon.", "units.short.billion": "{count}G", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index e7d6eb87b..2f667eae6 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Jakékoliv z těchto", "hashtag.column_settings.tag_mode.none": "Žádné z těchto", "hashtag.column_settings.tag_toggle": "Zahrnout v tomto sloupci dodatečné tagy", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Základní", "home.column_settings.show_reblogs": "Zobrazit boosty", "home.column_settings.show_replies": "Zobrazit odpovědi", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Sledující", "timeline_hint.resources.follows": "Sledovaní", "timeline_hint.resources.statuses": "Starší příspěvky", - "trends.counter_by_accounts": "zmiňuje {count, plural, one {{counter} člověk} few {{counter} lidé} many {{counter} lidí} other {{counter} lidí}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Právě populární", "ui.beforeunload": "Pokud Mastodon opustíte, váš koncept se ztratí.", "units.short.billion": "{count} mld.", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 3a18db095..228fd280f 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Unrhyw un o'r rhain", "hashtag.column_settings.tag_mode.none": "Dim o'r rhain", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Syml", "home.column_settings.show_reblogs": "Dangos hybiau", "home.column_settings.show_replies": "Dangos ymatebion", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Dilynwyr", "timeline_hint.resources.follows": "Yn dilyn", "timeline_hint.resources.statuses": "Postiadau hŷn", - "trends.counter_by_accounts": "{count, plural, one {{counter} berson} other {{counter} o bobl}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Yn tueddu nawr", "ui.beforeunload": "Mi fyddwch yn colli eich drafft os gadewch Mastodon.", "units.short.billion": "{count}biliwn", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index fab1f2075..0898b9081 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Nogle af disse", "hashtag.column_settings.tag_mode.none": "Ingen af disse", "hashtag.column_settings.tag_toggle": "Inkludér ekstra tags for denne kolonne", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Samlet volumen {days, plural, one {den seneste dag} other {de seneste {days} dage}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Grundlæggende", "home.column_settings.show_reblogs": "Vis boosts", "home.column_settings.show_replies": "Vis svar", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Følgere", "timeline_hint.resources.follows": "Følger", "timeline_hint.resources.statuses": "Ældre indlæg", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} personer}} taler", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} personer}} {days, plural, one {den seneste dag} other {de seneste {days} dage}}", "trends.trending_now": "Hot lige nu", "ui.beforeunload": "Dit udkast går tabt, hvis du lukker Mastodon.", "units.short.billion": "{count} mia.", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index ee6c7cfda..f2ec638c7 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Eins von diesen", "hashtag.column_settings.tag_mode.none": "Keins von diesen", "hashtag.column_settings.tag_toggle": "Zusätzliche Hashtags für diese Spalte einfügen", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Gesamtes Aufkommen {days, plural, one {am letzten Tag} other {in den letzten {days} Tagen}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Einfach", "home.column_settings.show_reblogs": "Geteilte Beiträge anzeigen", "home.column_settings.show_replies": "Antworten anzeigen", @@ -314,7 +317,7 @@ "navigation_bar.preferences": "Einstellungen", "navigation_bar.public_timeline": "Föderierte Zeitleiste", "navigation_bar.security": "Sicherheit", - "notification.admin.report": "{name} reported {target}", + "notification.admin.report": "{target} wurde von {name} gemeldet", "notification.admin.sign_up": "{name} hat sich registriert", "notification.favourite": "{name} hat deinen Beitrag favorisiert", "notification.follow": "{name} folgt dir", @@ -327,7 +330,7 @@ "notification.update": "{name} bearbeitete einen Beitrag", "notifications.clear": "Mitteilungen löschen", "notifications.clear_confirmation": "Bist du dir sicher, dass du alle Mitteilungen löschen möchtest?", - "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.report": "Neue Meldungen:", "notifications.column_settings.admin.sign_up": "Neue Anmeldungen:", "notifications.column_settings.alert": "Desktop-Benachrichtigungen", "notifications.column_settings.favourite": "Favorisierungen:", @@ -433,11 +436,11 @@ "report.thanks.title_actionable": "Vielen Dank für die Meldung, wir werden uns das ansehen.", "report.unfollow": "@{name} entfolgen", "report.unfollow_explanation": "Du folgst diesem Konto. Um die Beiträge nicht mehr auf deiner Startseite zu sehen, entfolge dem Konto.", - "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", + "report_notification.attached_statuses": "{count, plural, one {{count} angehangener Beitrag} other {{count} angehängte Beiträge}}", + "report_notification.categories.other": "Nicht Aufgelistet", "report_notification.categories.spam": "Spam", - "report_notification.categories.violation": "Rule violation", - "report_notification.open": "Open report", + "report_notification.categories.violation": "Regelbruch", + "report_notification.open": "Meldung öffnen", "search.placeholder": "Suche", "search_popout.search_format": "Fortgeschrittenes Suchformat", "search_popout.tips.full_text": "Einfache Texteingabe gibt Beiträge, die du geschrieben, favorisiert und geteilt hast zurück. Außerdem auch Beiträge in denen du erwähnt wurdest, aber auch passende Nutzernamen, Anzeigenamen oder Hashtags.", @@ -468,7 +471,7 @@ "status.embed": "Einbetten", "status.favourite": "Favorisieren", "status.filtered": "Gefiltert", - "status.hide": "Hide toot", + "status.hide": "Tröt verbergen", "status.history.created": "{name} erstellte {date}", "status.history.edited": "{name} bearbeitete {date}", "status.load_more": "Weitere laden", @@ -492,7 +495,7 @@ "status.report": "@{name} melden", "status.sensitive_warning": "NSFW", "status.share": "Teilen", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Trotzdem anzeigen", "status.show_less": "Weniger anzeigen", "status.show_less_all": "Alle Inhaltswarnungen zuklappen", "status.show_more": "Mehr anzeigen", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Follower", "timeline_hint.resources.follows": "Folgt", "timeline_hint.resources.statuses": "Ältere Beiträge", - "trends.counter_by_accounts": "{count, plural, one {{counter} Person redet darüber} other {{counter} Personen reden darüber}}", + "trends.counter_by_accounts": "{count, plural, one {{count} Person} other {{count} Personen}} {days, plural, one {am vergangenen Tag} other {in den vergangenen {days} Tagen}}", "trends.trending_now": "In den Trends", "ui.beforeunload": "Dein Entwurf geht verloren, wenn du Mastodon verlässt.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index d86cddc9b..908396348 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -2124,6 +2124,14 @@ }, { "descriptors": [ + { + "defaultMessage": "Follow hashtag", + "id": "hashtag.follow" + }, + { + "defaultMessage": "Unfollow hashtag", + "id": "hashtag.unfollow" + }, { "defaultMessage": "or {additional}", "id": "hashtag.column_header.tag_mode.any" @@ -3756,4 +3764,4 @@ ], "path": "app/javascript/mastodon/features/video/index.json" } -] +] \ No newline at end of file diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 3240b682a..3cfce1647 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Οποιοδήποτε από αυτά", "hashtag.column_settings.tag_mode.none": "Κανένα από αυτά", "hashtag.column_settings.tag_toggle": "Προσθήκη επιπλέον ταμπελών για την κολώνα", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Συνολικός όγκος κατά την τελευταία {days, plural, one {ημέρα} other {{days} ημέρες}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Βασικές ρυθμίσεις", "home.column_settings.show_reblogs": "Εμφάνιση προωθήσεων", "home.column_settings.show_replies": "Εμφάνιση απαντήσεων", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Ακόλουθοι", "timeline_hint.resources.follows": "Ακολουθεί", "timeline_hint.resources.statuses": "Παλαιότερα τουτ", - "trends.counter_by_accounts": "{count, plural, one {{counter} άτομο μιλάει} other {{counter} άτομα μιλάνε}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} άτομο} other {{counter} άνθρωποι}} στο παρελθόν {days, plural, one {ημέρα} other {{days} ημέρες}}", "trends.trending_now": "Δημοφιλή τώρα", "ui.beforeunload": "Το προσχέδιό σου θα χαθεί αν φύγεις από το Mastodon.", "units.short.billion": "{count}Δ", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 561f1088b..535c5852a 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older posts", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index c668cefc6..ed7ea2992 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -220,7 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags for this column", + "hashtag.follow": "Follow hashtag", "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 3e2475f20..67872ff0a 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -123,7 +123,7 @@ "confirmations.delete.message": "Ĉu vi certas, ke vi volas forigi ĉi tiun mesaĝon?", "confirmations.delete_list.confirm": "Forigi", "confirmations.delete_list.message": "Ĉu vi certas, ke vi volas porĉiame forigi ĉi tiun liston?", - "confirmations.discard_edit_media.confirm": "Forlasi", + "confirmations.discard_edit_media.confirm": "Forĵeti", "confirmations.discard_edit_media.message": "Vi havas nekonservitajn ŝanĝojn de la priskribo aŭ de la antaŭmontro de la aŭdovidaĵo, ĉu vi forlasu ilin ĉiuokaze?", "confirmations.domain_block.confirm": "Bloki la tutan domajnon", "confirmations.domain_block.message": "Ĉu vi vere, vere certas, ke vi volas tute bloki {domain}? Plej ofte, trafa blokado kaj silentigado sufiĉas kaj preferindas. Vi ne vidos enhavon de tiu domajno en publika templinio aŭ en viaj sciigoj. Viaj sekvantoj de tiu domajno estos forigitaj.", @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Iu ajn", "hashtag.column_settings.tag_mode.none": "Neniu", "hashtag.column_settings.tag_toggle": "Aldoni pliajn etikedojn por ĉi tiu kolumno", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Bazaj agordoj", "home.column_settings.show_reblogs": "Montri plusendojn", "home.column_settings.show_replies": "Montri respondojn", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Sekvantoj", "timeline_hint.resources.follows": "Sekvatoj", "timeline_hint.resources.statuses": "Pli malnovaj mesaĝoj", - "trends.counter_by_accounts": "{count, plural, one {{counter} persono} other {{counter} personoj}} parolante", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Nunaj furoraĵoj", "ui.beforeunload": "Via malneto perdiĝos se vi eliras de Mastodon.", "units.short.billion": "{count}Md", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 2c967ccdf..0eeb6e1ff 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Cualquiera de estas", "hashtag.column_settings.tag_mode.none": "Ninguna de estas", "hashtag.column_settings.tag_toggle": "Incluir etiquetas adicionales para esta columna", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Volumen total en el/los último/s {days, plural, one {día} other {{days} días}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar adhesiones", "home.column_settings.show_replies": "Mostrar respuestas", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Tus seguidores", "timeline_hint.resources.follows": "Las cuentas que seguís", "timeline_hint.resources.statuses": "Mensajes más antiguos", - "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} personas}} hablando", + "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} personas}} en el/los pasado/s {days, plural, one {día} other {{days} días}}", "trends.trending_now": "Tendencia ahora", "ui.beforeunload": "Tu borrador se perderá si abandonás Mastodon.", "units.short.billion": "{count}MM", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 0923a0734..23a8d7247 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Cualquiera de estos", "hashtag.column_settings.tag_mode.none": "Ninguno de estos", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar retoots", "home.column_settings.show_replies": "Mostrar respuestas", @@ -468,7 +471,7 @@ "status.embed": "Incrustado", "status.favourite": "Favorito", "status.filtered": "Filtrado", - "status.hide": "Hide toot", + "status.hide": "Ocultar publicación", "status.history.created": "{name} creó {date}", "status.history.edited": "{name} editado {date}", "status.load_more": "Cargar más", @@ -492,7 +495,7 @@ "status.report": "Reportar", "status.sensitive_warning": "Contenido sensible", "status.share": "Compartir", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Mostrar de todos modos", "status.show_less": "Mostrar menos", "status.show_less_all": "Mostrar menos para todo", "status.show_more": "Mostrar más", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Seguidores", "timeline_hint.resources.follows": "Seguidos", "timeline_hint.resources.statuses": "Toots más antiguos", - "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} personas}} hablando", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Tendencia ahora", "ui.beforeunload": "Tu borrador se perderá si sales de Mastodon.", "units.short.billion": "{count} MM", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 4e30f7b71..0ca847b35 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Cualquiera de estos", "hashtag.column_settings.tag_mode.none": "Ninguno de estos", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Volumen total en los últimos {days, plural, one {día} other {{days} días}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar retoots", "home.column_settings.show_replies": "Mostrar respuestas", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Seguidores", "timeline_hint.resources.follows": "Seguidos", "timeline_hint.resources.statuses": "Publicaciones más antiguas", - "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} personas}} hablando", + "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} personas}} en los últimos {days, plural, one {días} other {{days} días}}", "trends.trending_now": "Tendencia ahora", "ui.beforeunload": "Tu borrador se perderá si sales de Mastodon.", "units.short.billion": "{count} MM", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 2f2d29b8d..2b6594b87 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Mõni neist", "hashtag.column_settings.tag_mode.none": "Mitte ükski neist", "hashtag.column_settings.tag_toggle": "Kaasa lisamärked selle tulba jaoks", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Peamine", "home.column_settings.show_reblogs": "Näita upitusi", "home.column_settings.show_replies": "Näita vastuseid", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Hetkel populaarne", "ui.beforeunload": "Teie mustand läheb kaotsi, kui lahkute Mastodonist.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 618b8265f..44ab5f80e 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Hautako edozein", "hashtag.column_settings.tag_mode.none": "Hauetako bat ere ez", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Oinarrizkoa", "home.column_settings.show_reblogs": "Erakutsi bultzadak", "home.column_settings.show_replies": "Erakutsi erantzunak", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Jarraitzaileak", "timeline_hint.resources.follows": "Jarraitzen", "timeline_hint.resources.statuses": "Bidalketa zaharragoak", - "trends.counter_by_accounts": "{count, plural, one {Pertsona {counter}} other {{counter} pertsona}} hizketan", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Joera orain", "ui.beforeunload": "Zure zirriborroa galduko da Mastodon uzten baduzu.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 99621747e..977b0aa74 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "هرکدام از این‌ها", "hashtag.column_settings.tag_mode.none": "هیچ‌کدام از این‌ها", "hashtag.column_settings.tag_toggle": "افزودن برچسب‌هایی بیشتر به این ستون", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "پایه‌ای", "home.column_settings.show_reblogs": "نمایش تقویت‌ها", "home.column_settings.show_replies": "نمایش پاسخ‌ها", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "پیگیرندگان", "timeline_hint.resources.follows": "پی‌گرفتگان", "timeline_hint.resources.statuses": "فرسته‌های قدیمی‌تر", - "trends.counter_by_accounts": "{count, plural, one {{counter} نفر} other {{counter} نفر}} صحبت می‌کنند", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "پرطرفدار", "ui.beforeunload": "اگر از ماستودون خارج شوید پیش‌نویس شما از دست خواهد رفت.", "units.short.billion": "{count}میلیارد", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index a423d1f02..faa322df9 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Mikä tahansa näistä", "hashtag.column_settings.tag_mode.none": "Ei mitään näistä", "hashtag.column_settings.tag_toggle": "Sisällytä lisätunnisteet tähän sarakkeeseen", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Perusasetukset", "home.column_settings.show_reblogs": "Näytä buustaukset", "home.column_settings.show_replies": "Näytä vastaukset", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Seuraajat", "timeline_hint.resources.follows": "Seuraa", "timeline_hint.resources.statuses": "Vanhemmat julkaisut", - "trends.counter_by_accounts": "{count, plural, one {{counter} henkilö} other {{counter} henkilöä}} puhuu", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Suosittua nyt", "ui.beforeunload": "Luonnos häviää, jos poistut Mastodonista.", "units.short.billion": "{count} mrd.", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index e0a9cb42d..18b889e9b 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Au moins un de ces éléments", "hashtag.column_settings.tag_mode.none": "Aucun de ces éléments", "hashtag.column_settings.tag_toggle": "Inclure des hashtags additionnels pour cette colonne", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Volume total {days, plural, one {des dernières 24h} other {des {days} derniers jours}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basique", "home.column_settings.show_reblogs": "Afficher les partages", "home.column_settings.show_replies": "Afficher les réponses", @@ -433,7 +436,7 @@ "report.thanks.title_actionable": "Merci pour votre signalement, nous allons investiguer.", "report.unfollow": "Ne plus suivre @{name}", "report.unfollow_explanation": "Vous suivez ce compte. Désabonnez-vous pour ne plus en voir les messages sur votre fil principal.", - "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.attached_statuses": "{count, plural, one {{count} message lié} other {{count} messages liés}}", "report_notification.categories.other": "Autre", "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Infraction aux règles du serveur", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Les abonnés", "timeline_hint.resources.follows": "Les abonnements", "timeline_hint.resources.statuses": "Messages plus anciens", - "trends.counter_by_accounts": "{count, plural, one {{counter} personne en parle} other {{counter} personnes en parlent}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} personne} other {{counter} personnes}} au cours {days, plural, one {des dernières 24h} other {des {days} derniers jours}}", "trends.trending_now": "Tendance en ce moment", "ui.beforeunload": "Votre brouillon sera perdu si vous quittez Mastodon.", "units.short.billion": "{count}Md", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index dd361b995..ea5a61cdc 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Folgers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Aldere berjochten", - "trends.counter_by_accounts": "{count, plural, one {{counter} persoan is} other {{counter} persoanen binne}} yn petear", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index f036e9b08..1dd7e635f 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Taispeáin treisithe", "home.column_settings.show_replies": "Show replies", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Leantóirí", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older posts", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index a0127c578..f7ffe0d87 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Gin sam bith dhiubh", "hashtag.column_settings.tag_mode.none": "Às aonais gin sam bith dhiubh", "hashtag.column_settings.tag_toggle": "Gabh a-steach barrachd tagaichean sa cholbh seo", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Bunasach", "home.column_settings.show_reblogs": "Seall na brosnachaidhean", "home.column_settings.show_replies": "Seall na freagairtean", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Luchd-leantainn", "timeline_hint.resources.follows": "A’ leantainn air", "timeline_hint.resources.statuses": "Postaichean nas sine", - "trends.counter_by_accounts": "{count, plural, one {Tha {counter} neach} two {Tha {counter} neach} few {Tha {counter} daoine} other {Tha {counter} duine}} a’ bruidhinn", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "A’ treandadh an-dràsta", "ui.beforeunload": "Caillidh tu an dreachd agad ma dh’fhàgas tu Mastodon an-dràsta.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index c11db8a65..56ceb54e8 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Calquera destes", "hashtag.column_settings.tag_mode.none": "Ningún destes", "hashtag.column_settings.tag_toggle": "Incluír cancelos adicionais para esta columna", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Cantidade total {days, plural, one {no último día} other {nos {days} últimos días}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Amosar compartidos", "home.column_settings.show_replies": "Amosar respostas", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Seguidoras", "timeline_hint.resources.follows": "Seguindo", "timeline_hint.resources.statuses": "Publicacións antigas", - "trends.counter_by_accounts": "{count, plural, one {{counter} persoa} other {{counter} persoas}} comentando", + "trends.counter_by_accounts": "{count, plural, one {{counter} persoa} other {{counter} persoas}} nos últimos {days, plural, one {día} other {{days} días}}", "trends.trending_now": "Tendencias actuais", "ui.beforeunload": "O borrador perderase se saes de Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 5d71113e4..4cb3380b4 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -5,7 +5,7 @@ "account.badges.group": "קבוצה", "account.block": "חסמי את @{name}", "account.block_domain": "חסמו את קהילת {domain}", - "account.blocked": "חסום", + "account.blocked": "לחסום", "account.browse_more_on_origin_server": "ראה יותר בפרופיל המקורי", "account.cancel_follow_request": "בטל בקשת מעקב", "account.direct": "הודעה ישירה ל@{name}", @@ -38,7 +38,7 @@ "account.requested": "בהמתנה לאישור. לחצי כדי לבטל בקשת מעקב", "account.share": "שתף את הפרופיל של @{name}", "account.show_reblogs": "הצג הדהודים מאת @{name}", - "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", + "account.statuses_counter": "{count, plural, one {{counter} פוסט} two {{counter} פוסטים} many {{counter} פוסטים} other {{counter} פוסטים}}", "account.unblock": "הסר את החסימה של @{name}", "account.unblock_domain": "הסירי את החסימה של קהילת {domain}", "account.unblock_short": "הסר חסימה", @@ -77,7 +77,7 @@ "column.follow_requests": "בקשות מעקב", "column.home": "פיד הבית", "column.lists": "רשימות", - "column.mutes": "השתקות", + "column.mutes": "משתמשים בהשתקה", "column.notifications": "התראות", "column.pins": "פווסטים נעוצים", "column.public": "פיד כללי (כל השרתים)", @@ -99,7 +99,7 @@ "compose_form.hashtag_warning": "פוסט זה לא יירשם תחת תגי הקבצה (האשטאגים) היות והנראות שלו היא 'לא רשום'. רק פוסטים ציבוריים יכולים להימצא באמצעות תגי הקבצה.", "compose_form.lock_disclaimer": "חשבונך אינו {locked}. כל אחד יוכל לעקוב אחריך כדי לקרוא את הודעותיך המיועדות לעוקבים בלבד.", "compose_form.lock_disclaimer.lock": "נעול", - "compose_form.placeholder": "מה עובר לך בראש?", + "compose_form.placeholder": "על מה את/ה חושב/ת ?", "compose_form.poll.add_option": "הוסיפו בחירה", "compose_form.poll.duration": "משך הסקר", "compose_form.poll.option_placeholder": "אפשרות מספר {number}", @@ -131,12 +131,12 @@ "confirmations.logout.message": "האם אתם בטוחים שאתם רוצים להתנתק?", "confirmations.mute.confirm": "להשתיק", "confirmations.mute.explanation": "זה יסתיר פוסטים שלהם ופוסטים שמאזכרים אותם, אבל עדיין יתיר להם לראות פוסטים שלך ולעקוב אחריך.", - "confirmations.mute.message": "להשתיק את {name}?", - "confirmations.redraft.confirm": "מחק וערוך מחדש", + "confirmations.mute.message": "בטוח/ה שברצונך להשתיק את {name}?", + "confirmations.redraft.confirm": "מחיקה ועריכה מחדש", "confirmations.redraft.message": "בטוחה שאת רוצה למחוק ולהתחיל טיוטה חדשה? חיבובים והדהודים יאבדו, ותגובות לפוסט המקורי ישארו יתומות.", - "confirmations.reply.confirm": "הגב", + "confirmations.reply.confirm": "תגובה", "confirmations.reply.message": "תגובה עכשיו תדרוס את ההודעה שכבר התחלתים לכתוב. האם אתם בטוחים שברצונכם להמשיך?", - "confirmations.unfollow.confirm": "להפסיק מעקב", + "confirmations.unfollow.confirm": "הפסקת מעקב", "confirmations.unfollow.message": "להפסיק מעקב אחרי {name}?", "conversation.delete": "מחיקת שיחה", "conversation.mark_as_read": "סמן כנקרא", @@ -146,17 +146,17 @@ "directory.local": "מ- {domain} בלבד", "directory.new_arrivals": "חדשים כאן", "directory.recently_active": "פעילים לאחרונה", - "embed.instructions": "ניתן להטמיע את ההודעה באתרך ע\"י העתקת הקוד שלהלן.", + "embed.instructions": "ניתן להטמיע את הפוסט הזה באתרך ע\"י העתקת הקוד שלהלן.", "embed.preview": "דוגמא כיצד זה יראה:", "emoji_button.activity": "פעילות", "emoji_button.clear": "ניקוי", - "emoji_button.custom": "מיוחדים", + "emoji_button.custom": "בהתאמה אישית", "emoji_button.flags": "דגלים", "emoji_button.food": "אוכל ושתיה", "emoji_button.label": "הוספת אמוג'י", "emoji_button.nature": "טבע", - "emoji_button.not_found": "רגישון לא נמצא!! (╯°□°)╯︵ ┻━┻", - "emoji_button.objects": "חפצים", + "emoji_button.not_found": "לא נמצאו סמלונים מתאימים", + "emoji_button.objects": "אובייקטים", "emoji_button.people": "אנשים", "emoji_button.recent": "בשימוש תדיר", "emoji_button.search": "חיפוש...", @@ -167,7 +167,7 @@ "empty_column.account_timeline": "אין עדיין אף פוסט!", "empty_column.account_unavailable": "פרופיל לא זמין", "empty_column.blocks": "עדיין לא חסמתם משתמשים אחרים.", - "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", + "empty_column.bookmarked_statuses": "אין עדיין פוסטים שחיבבת. כשתחבב את הראשון, הוא יופיע כאן.", "empty_column.community": "פיד השרת המקומי ריק. יש לפרסם משהו כדי שדברים יתרחילו להתגלגל!", "empty_column.direct": "אין לך שום הודעות פרטיות עדיין. כשתשלחו או תקבלו אחת, היא תופיע כאן.", "empty_column.domain_blocks": "אין עדיין קהילות מוסתרות.", @@ -177,7 +177,7 @@ "empty_column.follow_recommendations": "נראה שלא ניתן לייצר המלצות עבורך. נסה/י להשתמש בחיפוש כדי למצוא אנשים מוכרים או לבדוק את הנושאים החמים.", "empty_column.follow_requests": "אין לך שום בקשות מעקב עדיין. לכשיתקבלו כאלה, הן תופענה כאן.", "empty_column.hashtag": "אין כלום בהאשתג הזה עדיין.", - "empty_column.home": "אף אחד לא במעקב עדיין. אפשר לבקר ב{public} או להשתמש בחיפוש כדי להתחיל ולהכיר חצוצרנים אחרים. {suggestions}", + "empty_column.home": "פיד הבית ריק ! אפשר לבקר ב{public} או להשתמש בחיפוש כדי להתחיל ולהכיר משתמשים/ות אחרים/ות. {suggestions}", "empty_column.home.suggestions": "ראה/י כמה הצעות", "empty_column.list": "אין עדיין פריטים ברשימה. כאשר חברים ברשימה הזאת יפרסמו פוסטים חדשים, הם יופיעו פה.", "empty_column.lists": "אין לך שום רשימות עדיין. לכשיהיו, הן תופענה כאן.", @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "כל אלה", "hashtag.column_settings.tag_mode.none": "אף אחד מאלה", "hashtag.column_settings.tag_toggle": "כלול תגיות נוספות בטור זה", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "למתחילים", "home.column_settings.show_reblogs": "הצגת הדהודים", "home.column_settings.show_replies": "הצגת תגובות", @@ -240,10 +243,10 @@ "keyboard_shortcuts.favourite": "לחבב", "keyboard_shortcuts.favourites": "פתיחת רשימת מועדפים", "keyboard_shortcuts.federated": "פתיחת ציר זמן בין-קהילתי", - "keyboard_shortcuts.heading": "Keyboard Shortcuts", + "keyboard_shortcuts.heading": "מקשי קיצור במקלדת", "keyboard_shortcuts.home": "פתיחת ציר זמן אישי", "keyboard_shortcuts.hotkey": "מקש קיצור", - "keyboard_shortcuts.legend": "להציג את הפירוש", + "keyboard_shortcuts.legend": "הצגת מקרא", "keyboard_shortcuts.local": "פתיחת ציר זמן קהילתי", "keyboard_shortcuts.mention": "לאזכר את המחבר(ת)", "keyboard_shortcuts.muted": "פתיחת רשימת משתמשים מושתקים", @@ -252,11 +255,11 @@ "keyboard_shortcuts.open_media": "פתיחת מדיה", "keyboard_shortcuts.pinned": "פתיחת רשימת חצרותים מוצמדים", "keyboard_shortcuts.profile": "פתח את פרופיל המשתמש", - "keyboard_shortcuts.reply": "לענות", + "keyboard_shortcuts.reply": "תגובה לפוסט", "keyboard_shortcuts.requests": "פתיחת רשימת בקשות מעקב", "keyboard_shortcuts.search": "להתמקד בחלון החיפוש", "keyboard_shortcuts.spoilers": "הצגת/הסתרת שדה אזהרת תוכן (CW)", - "keyboard_shortcuts.start": "to open \"get started\" column", + "keyboard_shortcuts.start": "לפתוח את הטור \"בואו נתחיל\"", "keyboard_shortcuts.toggle_hidden": "הצגת/הסתרת טקסט מוסתר מאחורי אזהרת תוכן", "keyboard_shortcuts.toggle_sensitivity": "הצגת/הסתרת מדיה", "keyboard_shortcuts.toot": "להתחיל פוסט חדש", @@ -265,7 +268,7 @@ "lightbox.close": "סגירה", "lightbox.compress": "דחיסת קופסת צפייה בתמונה", "lightbox.expand": "הרחבת קופסת צפייה בתמונה", - "lightbox.next": "הלאה", + "lightbox.next": "הבא", "lightbox.previous": "הקודם", "limited_account_hint.action": "הצג חשבון בכל זאת", "limited_account_hint.title": "פרופיל זה הוסתר ע\"י מנהלי השרת שלך.", @@ -284,7 +287,7 @@ "lists.subheading": "הרשימות שלך", "load_pending": "{count, plural, one {# פריט חדש} other {# פריטים חדשים}}", "loading_indicator.label": "טוען...", - "media_gallery.toggle_visible": "נראה\\בלתי נראה", + "media_gallery.toggle_visible": "{number, plural, one {להסתיר תמונה} two {Hide images} many {להסתיר תמונות} other {Hide תמונות}}", "missing_indicator.label": "לא נמצא", "missing_indicator.sublabel": "לא ניתן היה למצוא את המשאב", "mute_modal.duration": "משך הזמן", @@ -308,15 +311,15 @@ "navigation_bar.keyboard_shortcuts": "קיצורי מקלדת", "navigation_bar.lists": "רשימות", "navigation_bar.logout": "התנתקות", - "navigation_bar.mutes": "השתקות", + "navigation_bar.mutes": "משתמשים בהשתקה", "navigation_bar.personal": "אישי", "navigation_bar.pins": "פוסטים נעוצים", "navigation_bar.preferences": "העדפות", - "navigation_bar.public_timeline": "ציר זמן בין-קהילתי", + "navigation_bar.public_timeline": "פיד כללי (כל השרתים)", "navigation_bar.security": "אבטחה", - "notification.admin.report": "{name} reported {target}", + "notification.admin.report": "{name} דיווח.ה על {target}", "notification.admin.sign_up": "{name} נרשמו", - "notification.favourite": "חצרוצך חובב על ידי {name}", + "notification.favourite": "{name} חיבב/ה את הפוסט שלך", "notification.follow": "{name} במעקב אחרייך", "notification.follow_request": "{name} ביקשו לעקוב אחריך", "notification.mention": "אוזכרת על ידי {name}", @@ -326,8 +329,8 @@ "notification.status": "{name} הרגע פרסמו", "notification.update": "{name} ערכו פוסט", "notifications.clear": "הסרת התראות", - "notifications.clear_confirmation": "להסיר את כל ההתראות? בטוח?", - "notifications.column_settings.admin.report": "New reports:", + "notifications.clear_confirmation": "להסיר את כל ההתראות לצמיתות ? ", + "notifications.column_settings.admin.report": "דו\"חות חדשים", "notifications.column_settings.admin.sign_up": "הרשמות חדשות:", "notifications.column_settings.alert": "התראות לשולחן העבודה", "notifications.column_settings.favourite": "מחובבים:", @@ -338,7 +341,7 @@ "notifications.column_settings.follow_request": "בקשות מעקב חדשות:", "notifications.column_settings.mention": "פניות:", "notifications.column_settings.poll": "תוצאות סקר:", - "notifications.column_settings.push": "הודעות בדחיפה", + "notifications.column_settings.push": "התראות בדחיפה", "notifications.column_settings.reblog": "הדהודים:", "notifications.column_settings.show": "הצגה בטור", "notifications.column_settings.sound": "שמע מופעל", @@ -433,24 +436,24 @@ "report.thanks.title_actionable": "תודה על הדיווח, נבדוק את העניין.", "report.unfollow": "הפסיקו לעקוב אחרי @{name}", "report.unfollow_explanation": "אתם עוקבים אחרי החשבון הזה. כדי להפסיק לראות את הפרסומים שלו בפיד הבית שלכם, הפסיקו לעקוב אחריהם.", - "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", - "report_notification.categories.spam": "Spam", - "report_notification.categories.violation": "Rule violation", - "report_notification.open": "Open report", + "report_notification.attached_statuses": "{count, plural, one {{count} פוסט} two {{count} posts} many {{count} פוסטים} other {{count} פוסטים}} מצורפים", + "report_notification.categories.other": "שונות", + "report_notification.categories.spam": "ספאם (דואר זבל)", + "report_notification.categories.violation": "הפרת כלל", + "report_notification.open": "פתח דו\"ח", "search.placeholder": "חיפוש", "search_popout.search_format": "מבנה חיפוש מתקדם", - "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", + "search_popout.tips.full_text": "טקסט פשוט מחזיר פוסטים שכתבת, חיבבת, הידהדת או שאוזכרת בהם, כמו גם שמות משתמשים, שמות להצגה ותגיות מתאימים.", "search_popout.tips.hashtag": "האשתג", - "search_popout.tips.status": "status", + "search_popout.tips.status": "פוסט", "search_popout.tips.text": "טקסט פשוט מחזיר כינויים, שמות משתמש והאשתגים", "search_popout.tips.user": "משתמש(ת)", "search_results.accounts": "אנשים", "search_results.all": "כל התוצאות", "search_results.hashtags": "האשתגיות", "search_results.nothing_found": "לא נמצא דבר עבור תנאי חיפוש אלה", - "search_results.statuses": "Toots", - "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.statuses": "פוסטים", + "search_results.statuses_fts_disabled": "חיפוש פוסטים לפי תוכן לא מאופשר בשרת מסטודון זה.", "search_results.total": "{count, number} {count, plural, one {תוצאה} other {תוצאות}}", "status.admin_account": "פתח/י ממשק ניהול עבור @{name}", "status.admin_status": "Open this status in the moderation interface", @@ -468,7 +471,7 @@ "status.embed": "הטמעה", "status.favourite": "חיבוב", "status.filtered": "סונן", - "status.hide": "Hide toot", + "status.hide": "הסתר פוסט", "status.history.created": "{name} יצר/ה {date}", "status.history.edited": "{name} ערך/ה {date}", "status.load_more": "עוד", @@ -479,7 +482,7 @@ "status.mute_conversation": "השתקת שיחה", "status.open": "הרחבת פוסט זה", "status.pin": "הצמדה לפרופיל שלי", - "status.pinned": "Pinned toot", + "status.pinned": "פוסט נעוץ", "status.read_more": "לקרוא עוד", "status.reblog": "הדהוד", "status.reblog_private": "להדהד ברמת הנראות המקורית", @@ -492,7 +495,7 @@ "status.report": "דיווח על @{name}", "status.sensitive_warning": "תוכן רגיש", "status.share": "שיתוף", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "הראה בכל זאת", "status.show_less": "הראה פחות", "status.show_less_all": "להציג פחות מהכל", "status.show_more": "הראה יותר", @@ -516,8 +519,8 @@ "timeline_hint.remote_resource_not_displayed": "{resource} משרתים אחרים לא מוצגים.", "timeline_hint.resources.followers": "עוקבים", "timeline_hint.resources.follows": "נעקבים", - "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} אחד/ת מדבר/ת} other {{counter} אנשים מדברים}}", + "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} days}}", "trends.trending_now": "נושאים חמים", "ui.beforeunload": "הטיוטא תאבד אם תעזבו את מסטודון.", "units.short.billion": "{count} מליארד", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index 0ff1fc7a1..aa76ebf10 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -92,10 +92,10 @@ "community.column_settings.local_only": "स्थानीय ही", "community.column_settings.media_only": "सिर्फ़ मीडिया", "community.column_settings.remote_only": "केवल सुदूर", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "भाषा बदलें", + "compose.language.search": "भाषाएँ खोजें...", "compose_form.direct_message_warning_learn_more": "और जानें", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "मास्टोडॉन पर पोस्ट एन्ड-टू-एन्ड एन्क्रिप्टेड नहीं है। कोई भी व्यक्तिगत जानकारी मास्टोडॉन पर मत भेजें।", "compose_form.hashtag_warning": "यह टूट् किसी भी हैशटैग के तहत सूचीबद्ध नहीं होगा क्योंकि यह अनलिस्टेड है। हैशटैग द्वारा केवल सार्वजनिक टूट्स खोजे जा सकते हैं।", "compose_form.lock_disclaimer": "आपका खाता {locked} नहीं है। आपको केवल फॉलोवर्स को दिखाई दिए जाने वाले पोस्ट देखने के लिए कोई भी फॉलो कर सकता है।", "compose_form.lock_disclaimer.lock": "लॉक्ड", @@ -149,7 +149,7 @@ "embed.instructions": "अपने वेबसाइट पर, निचे दिए कोड को कॉपी करके, इस स्टेटस को एम्बेड करें", "embed.preview": "यह ऐसा दिखेगा :", "emoji_button.activity": "गतिविधि", - "emoji_button.clear": "Clear", + "emoji_button.clear": "मिटा दें", "emoji_button.custom": "निजीकृत", "emoji_button.flags": "झंडे", "emoji_button.food": "भोजन एवं पेय", @@ -191,7 +191,7 @@ "errors.unexpected_crash.copy_stacktrace": "स्टैकट्रेस को क्लिपबोर्ड पर कॉपी करें", "errors.unexpected_crash.report_issue": "समस्या सूचित करें", "explore.search_results": "Search results", - "explore.suggested_follows": "For you", + "explore.suggested_follows": "आपके लिए", "explore.title": "Explore", "explore.trending_links": "News", "explore.trending_statuses": "Posts", @@ -220,6 +220,9 @@ "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": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "बुनियादी", "home.column_settings.show_reblogs": "बूस्ट दिखाए", "home.column_settings.show_replies": "जवाबों को दिखाए", @@ -387,17 +390,17 @@ "relative_time.days": "{number}d", "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", - "relative_time.hours": "{number}h", + "relative_time.full.just_now": "अभी-अभी", + "relative_time.full.minutes": "{number, plural, one {# मिनट} other {# मिनट}} पहले", + "relative_time.full.seconds": "{number, plural, one {# सेकंड} other {# सेकंड}} पहले", + "relative_time.hours": "{number} घंटे", "relative_time.just_now": "अभी", - "relative_time.minutes": "{number}m", - "relative_time.seconds": "{number}s", - "relative_time.today": "today", + "relative_time.minutes": "{number} मिनट", + "relative_time.seconds": "{number} सेकंड", + "relative_time.today": "आज", "reply_indicator.cancel": "रद्द करें", "report.block": "Block", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.block_explanation": "आपको उनकी पोस्टें नहीं दिखेंगे। वे आपकी पोस्टें को देख नहीं पाएंगे और आपको फ़ॉलो नहीं कर पाएंगे। उन्हे पता लगेगा कि वे blocked हैं।", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", @@ -413,9 +416,9 @@ "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", "report.next": "Next", "report.placeholder": "Type or paste additional comments", - "report.reasons.dislike": "I don't like it", + "report.reasons.dislike": "मुझे यह पसंद नहीं है", "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", + "report.reasons.other": "कुछ और है।", "report.reasons.other_description": "The issue does not fit into other categories", "report.reasons.spam": "It's spam", "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index 56678d12a..fe0379f0a 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Bilo koji navedeni", "hashtag.column_settings.tag_mode.none": "Nijedan navedeni", "hashtag.column_settings.tag_toggle": "Uključi dodatne oznake za ovaj stupac", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Osnovno", "home.column_settings.show_reblogs": "Pokaži boostove", "home.column_settings.show_replies": "Pokaži odgovore", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Pratitelji", "timeline_hint.resources.follows": "Praćenja", "timeline_hint.resources.statuses": "Stariji tootovi", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Popularno", "ui.beforeunload": "Vaša skica bit će izgubljena ako napustite Mastodon.", "units.short.billion": "{count} mlrd.", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 4b768de8f..def9348ec 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Bármelyik", "hashtag.column_settings.tag_mode.none": "Egyik sem", "hashtag.column_settings.tag_toggle": "Új címkék felvétele ehhez az oszlophoz", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Teljes mennyiség az elmúlt {days, plural, one {napban} other {{days} napban}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Alapvető", "home.column_settings.show_reblogs": "Megtolások mutatása", "home.column_settings.show_replies": "Válaszok megjelenítése", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Követő", "timeline_hint.resources.follows": "Követett", "timeline_hint.resources.statuses": "Régi bejegyzések", - "trends.counter_by_accounts": "{count, plural, one {{counter} személy} other {{counter} személy}} beszélget", + "trends.counter_by_accounts": "{count, plural, one {{counter} ember} other {{counter} ember}} az elmúlt {days, plural,one {napban} other {{days} napban}}", "trends.trending_now": "Most felkapott", "ui.beforeunload": "A piszkozatod el fog veszni, ha elhagyod a Mastodont.", "units.short.billion": "{count}Mrd", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index 866a6a2cf..9aa8ec4c3 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Ցանկացածը", "hashtag.column_settings.tag_mode.none": "Ոչ մեկը", "hashtag.column_settings.tag_toggle": "Ներառել լրացուցիչ պիտակները այս սիւնակում ", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Հիմնական", "home.column_settings.show_reblogs": "Ցուցադրել տարածածները", "home.column_settings.show_replies": "Ցուցադրել պատասխանները", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Հետեւորդ", "timeline_hint.resources.follows": "Հետեւել", "timeline_hint.resources.statuses": "Հին գրառումներ", - "trends.counter_by_accounts": "{count, plural, one {{counter} մարդ} other {{counter} մարդիկ}} խօսում են", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Այժմ արդիական", "ui.beforeunload": "Քո սեւագիրը կը կորի, եթէ լքես Մաստոդոնը։", "units.short.billion": "{count}մլրդ", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 04fe5213b..effc01737 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -1,9 +1,9 @@ { "account.account_note_header": "Catatan", "account.add_or_remove_from_list": "Tambah atau Hapus dari daftar", - "account.badges.bot": "Bot", + "account.badges.bot": "בוט", "account.badges.group": "Grup", - "account.block": "Blokir @{name}", + "account.block": "{name}לחסום את ", "account.block_domain": "Blokir domain {domain}", "account.blocked": "Terblokir", "account.browse_more_on_origin_server": "Lihat lebih lanjut diprofil asli", @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Semua ini", "hashtag.column_settings.tag_mode.none": "Tak satu pun", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Dasar", "home.column_settings.show_reblogs": "Tampilkan boost", "home.column_settings.show_replies": "Tampilkan balasan", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Pengikut", "timeline_hint.resources.follows": "Ikuti", "timeline_hint.resources.statuses": "Toot lama", - "trends.counter_by_accounts": "{count, plural, other {{counter} orang}} berbicara", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Sedang tren sekarang", "ui.beforeunload": "Naskah anda akan hilang jika anda keluar dari Mastodon.", "units.short.billion": "{count}M", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index d06045cf8..d54687117 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -220,6 +220,9 @@ "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.follow": "Follow hashtag", + "hashtag.total_volume": "Sumo en antea {days, plural,one {dio} other {{days} dii}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Simpla", "home.column_settings.show_reblogs": "Montrar repeti", "home.column_settings.show_replies": "Montrar respondi", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Sequanti", "timeline_hint.resources.follows": "Sequati", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} persono} other {{counter} personi}} parolas", + "trends.counter_by_accounts": "{count, plural,one {{counter} persono} other {{counter} personi}} en antea {days, plural,one {dio} other {{days} dii}}", "trends.trending_now": "Tendencigas nun", "ui.beforeunload": "Vua skisato perdesos se vu ekiras Mastodon.", "units.short.billion": "{count}G", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index a2714aa4f..e12bfe305 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Hvað sem er af þessu", "hashtag.column_settings.tag_mode.none": "Ekkert af þessu", "hashtag.column_settings.tag_toggle": "Taka með viðbótarmerki fyrir þennan dálk", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Einfalt", "home.column_settings.show_reblogs": "Sýna endurbirtingar", "home.column_settings.show_replies": "Birta svör", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Fylgjendur", "timeline_hint.resources.follows": "Fylgist með", "timeline_hint.resources.statuses": "Eldri færslur", - "trends.counter_by_accounts": "{count, plural, one {{counter} aðili} other {{counter} aðilar}} tala", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Í umræðunni núna", "ui.beforeunload": "Drögin tapast ef þú ferð út úr Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index ab8b10e8d..da29dfde1 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Uno o più di questi", "hashtag.column_settings.tag_mode.none": "Nessuno di questi", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Volume totale {days, plural, one {nell'ultimo giorno} other {negli ultimi {days} giorni}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Semplice", "home.column_settings.show_reblogs": "Mostra condivisioni", "home.column_settings.show_replies": "Mostra risposte", @@ -513,11 +516,11 @@ "time_remaining.minutes": "{number, plural, one {# minuto} other {# minuti}} left", "time_remaining.moments": "Restano pochi istanti", "time_remaining.seconds": "{number, plural, one {# secondo} other {# secondi}} left", - "timeline_hint.remote_resource_not_displayed": "{resource] da altri server non sono mostrati.", + "timeline_hint.remote_resource_not_displayed": "{resource} da altri server non sono mostrati.", "timeline_hint.resources.followers": "Follower", "timeline_hint.resources.follows": "Segue", "timeline_hint.resources.statuses": "Post meno recenti", - "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} persone}} ne parlano", + "trends.counter_by_accounts": "{count, plural, one {{count} persona} other {{count} persone}} {days, plural, one {nell'ultimo giorno} other {negli ultimi {days} giorni}}", "trends.trending_now": "Di tendenza ora", "ui.beforeunload": "La bozza andrà persa se esci da Mastodon.", "units.short.billion": "{count}G", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 430d81c12..35c7d916e 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "いずれかを含む", "hashtag.column_settings.tag_mode.none": "これらを除く", "hashtag.column_settings.tag_toggle": "このカラムに追加のタグを含める", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "基本設定", "home.column_settings.show_reblogs": "ブースト表示", "home.column_settings.show_replies": "返信表示", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "フォロワー", "timeline_hint.resources.follows": "フォロー", "timeline_hint.resources.statuses": "以前の投稿", - "trends.counter_by_accounts": "{counter}人が投稿", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "トレンドタグ", "ui.beforeunload": "Mastodonから離れると送信前の投稿は失われます。", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index 047cdab85..a01b2290c 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "ძირითადი", "home.column_settings.show_reblogs": "ბუსტების ჩვენება", "home.column_settings.show_replies": "პასუხების ჩვენება", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "თქვენი დრაფტი გაუქმდება თუ დატოვებთ მასტოდონს.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 57e6bf0d1..d5ab20008 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -19,7 +19,7 @@ "account.followers.empty": "Ar tura, ulac yiwen i yeṭṭafaṛen amseqdac-agi.", "account.followers_counter": "{count, plural, one {{count} n umeḍfar} other {{count} n imeḍfaren}}", "account.following": "Following", - "account.following_counter": "{count, plural, one {{counter} yeṭṭafaren} aḍfar {{counter} wayeḍ}}", + "account.following_counter": "{count, plural, one {{counter} yeṭṭafaren} other {{counter} wayeḍ}}", "account.follows.empty": "Ar tura, amseqdac-agi ur yeṭṭafaṛ yiwen.", "account.follows_you": "Yeṭṭafaṛ-ik", "account.hide_reblogs": "Ffer ayen i ibeṭṭu @{name}", @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Yiwen seg-sen", "hashtag.column_settings.tag_mode.none": "Yiwen ala seg-sen", "hashtag.column_settings.tag_toggle": "Glu-d s yihacṭagen imerna i ujgu-agi", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Igejdanen", "home.column_settings.show_reblogs": "Ssken-d beṭṭu", "home.column_settings.show_replies": "Ssken-d tiririyin", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Imeḍfaṛen", "timeline_hint.resources.follows": "T·Yeṭafaṛ", "timeline_hint.resources.statuses": "Tijewwaqin tiqdimin", - "trends.counter_by_accounts": "{count, plural, one {{counter} amdan} imdanen {{counter} wiyaḍ}} yettmeslayen", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Arewway-ik·im ad iruḥ ma yella tefeɣ-d deg Maṣṭudun.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index c5459baf3..5334331c4 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Осылардың біреуін", "hashtag.column_settings.tag_mode.none": "Бұлардың ешқайсысын", "hashtag.column_settings.tag_toggle": "Осы бағанға қосымша тегтерді қосыңыз", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Негізгі", "home.column_settings.show_reblogs": "Бөлісулерді көрсету", "home.column_settings.show_replies": "Жауаптарды көрсету", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Оқырман", "timeline_hint.resources.follows": "Жазылым", "timeline_hint.resources.statuses": "Ескі посттары", - "trends.counter_by_accounts": "{count, plural, one {{counter} адам} other {{counter} адам}} айтып жатыр", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Тренд тақырыптар", "ui.beforeunload": "Mastodon желісінен шықсаңыз, нобайыңыз сақталмайды.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index 3e0649ba1..bde13c04c 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index c07948a73..30cf08ff2 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "아무것이든", "hashtag.column_settings.tag_mode.none": "이것들을 제외하고", "hashtag.column_settings.tag_toggle": "추가 해시태그를 이 컬럼에 추가합니다", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "최근 {days}일 동안의 총 사용량", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "기본", "home.column_settings.show_reblogs": "부스트 표시", "home.column_settings.show_replies": "답글 표시", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "팔로워", "timeline_hint.resources.follows": "팔로우", "timeline_hint.resources.statuses": "이전 게시물", - "trends.counter_by_accounts": "{counter} 명이 말하는 중", + "trends.counter_by_accounts": "이전 {days}일 동안 {counter} 명의 사용자", "trends.trending_now": "지금 유행중", "ui.beforeunload": "지금 나가면 저장되지 않은 항목을 잃게 됩니다.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 2bc1e9bea..d8c4151d3 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Yek ji van", "hashtag.column_settings.tag_mode.none": "Ne yek ji van", "hashtag.column_settings.tag_toggle": "Ji bo vê stûnê hin pêvekan tevlî bike", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Tevahiya giraniyê dawîn di {days, plural, one {roj} other {{days} roj}} de", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Bingehîn", "home.column_settings.show_reblogs": "Bilindkirinan nîşan bike", "home.column_settings.show_replies": "Bersivan nîşan bide", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Şopîner", "timeline_hint.resources.follows": "Dişopîne", "timeline_hint.resources.statuses": "Şandiyên kevn", - "trends.counter_by_accounts": "{count, plural, one {{counter} kes} other {{counter} kes}} diaxivin", + "trends.counter_by_accounts": "{count, plural, one {{counter} kes} other {{counter} kes}} berî {days, plural, one {roj} other {{days} roj}}", "trends.trending_now": "Rojev", "ui.beforeunload": "Ger ji Mastodonê veketi wê reşnivîsa te jî winda bibe.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index 8ffa521b5..988655921 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Pynag a'n re ma", "hashtag.column_settings.tag_mode.none": "Travyth a'n re ma", "hashtag.column_settings.tag_toggle": "Yssynsi taggys ynwedhek rag an goloven ma", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Selyek", "home.column_settings.show_reblogs": "Diskwedhes kenerthow", "home.column_settings.show_replies": "Diskwedhes gorthebow", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Holyoryon", "timeline_hint.resources.follows": "Holyansow", "timeline_hint.resources.statuses": "Kottha postow", - "trends.counter_by_accounts": "{count, plural, one {{counter} den} other {{counter} a dus}} ow kewsel", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Tuedhegus lemmyn", "ui.beforeunload": "Agas kysnkrif a vydh kellys mar kwrewgh diberth a Mastodon.", "units.short.billion": "{count}Mek", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 1a69e7e1d..3df14c833 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index a91fa9aea..1cb0095b1 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Kāds no šiem", "hashtag.column_settings.tag_mode.none": "Neviens no šiem", "hashtag.column_settings.tag_toggle": "Iekļaut šai kolonnai papildu tagus", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Kopējais apjoms par {days, plural, one {dienu} other {{days} dienām}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Pamata", "home.column_settings.show_reblogs": "Rādīt palielinājumus", "home.column_settings.show_replies": "Rādīt atbildes", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Sekotāji", "timeline_hint.resources.follows": "Seko", "timeline_hint.resources.statuses": "Vecākas ziņas", - "trends.counter_by_accounts": "Sarunājas {count, plural, one {{counter} persona} other {{counter} cilvēki}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} cilvēki}} par {days, plural, one {dienu} other {{days} dienām}}", "trends.trending_now": "Šobrīd tendences", "ui.beforeunload": "Ja pametīsit Mastodonu, jūsu melnraksts tiks zaudēts.", "units.short.billion": "{count}M", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index 36126fc25..faf4174f9 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Било кои", "hashtag.column_settings.tag_mode.none": "Никои", "hashtag.column_settings.tag_toggle": "Стави додатни тагови за оваа колона", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Основно", "home.column_settings.show_reblogs": "Прикажи бустирања", "home.column_settings.show_replies": "Прикажи одговори", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index 4307259c0..175316e84 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "ഇവയിലേതെങ്കിലും", "hashtag.column_settings.tag_mode.none": "ഇതിലൊന്നുമല്ല", "hashtag.column_settings.tag_toggle": "ഈ എഴുത്തുപംക്തിക്ക് കൂടുതൽ ഉപനാമങ്ങൾ ചേർക്കുക", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "അടിസ്ഥാനം", "home.column_settings.show_reblogs": "ബൂസ്റ്റുകൾ കാണിക്കുക", "home.column_settings.show_replies": "മറുപടികൾ കാണിക്കുക", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "പിന്തുടരുന്നവർ", "timeline_hint.resources.follows": "പിന്തുടരുന്നു", "timeline_hint.resources.statuses": "പഴയ ടൂട്ടുകൾ", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "ഇപ്പോൾ ട്രെൻഡിംഗ്", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index d78e0384e..762d94c40 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index c1f20ec4f..13a1e3345 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Mana-mana daripada yang ini", "hashtag.column_settings.tag_mode.none": "Tiada apa pun daripada yang ini", "hashtag.column_settings.tag_toggle": "Sertakan tag tambahan untuk lajur ini", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Asas", "home.column_settings.show_reblogs": "Tunjukkan galakan", "home.column_settings.show_replies": "Tunjukkan balasan", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Pengikut", "timeline_hint.resources.follows": "Ikutan", "timeline_hint.resources.statuses": "Hantaran lebih lama", - "trends.counter_by_accounts": "{count, plural, other {{counter} orang}} bercakap", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Sohor kini", "ui.beforeunload": "Rangka anda akan terhapus jika anda meninggalkan Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index db67d2bcd..94cbd5bcd 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Een van deze", "hashtag.column_settings.tag_mode.none": "Geen van deze", "hashtag.column_settings.tag_toggle": "Additionele tags aan deze kolom toevoegen", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Algemeen", "home.column_settings.show_reblogs": "Boosts tonen", "home.column_settings.show_replies": "Reacties tonen", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Volgers", "timeline_hint.resources.follows": "Volgend", "timeline_hint.resources.statuses": "Oudere berichten", - "trends.counter_by_accounts": "{count, plural, one {{counter} persoon} other {{counter} personen}} zijn aan het praten", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Huidige trends", "ui.beforeunload": "Je concept gaat verloren wanneer je Mastodon verlaat.", "units.short.billion": "{count} mrd.", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 87d3579e9..1a8904cd2 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Kva som helst av desse", "hashtag.column_settings.tag_mode.none": "Ikkje nokon av disse", "hashtag.column_settings.tag_toggle": "Inkluder ekstra emneknaggar for denne kolonna", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Enkelt", "home.column_settings.show_reblogs": "Vis framhevingar", "home.column_settings.show_replies": "Vis svar", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Fylgjarar", "timeline_hint.resources.follows": "Fylgjer", "timeline_hint.resources.statuses": "Eldre tut", - "trends.counter_by_accounts": "Pratas om av {count, plural, one {{counter} person} other {{counter} folk}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Populært no", "ui.beforeunload": "Kladden din forsvinn om du forlèt Mastodon no.", "units.short.billion": "{count}m.ard", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index b4da321eb..829be51a5 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Enhver av disse", "hashtag.column_settings.tag_mode.none": "Ingen av disse", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Enkelt", "home.column_settings.show_reblogs": "Vis fremhevinger", "home.column_settings.show_replies": "Vis svar", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Følgere", "timeline_hint.resources.follows": "Følger", "timeline_hint.resources.statuses": "Eldre tuter", - "trends.counter_by_accounts": "Snakkes om av {count, plural, one {{counter} person} other {{counter} personer}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trender nå", "ui.beforeunload": "Din kladd vil bli forkastet om du forlater Mastodon.", "units.short.billion": "{count}m.ard", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 982a3fa16..b065b4e8f 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Un d’aquestes", "hashtag.column_settings.tag_mode.none": "Cap d’aquestes", "hashtag.column_settings.tag_toggle": "Inclure las etiquetas suplementàrias dins aquesta colomna", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Mostrar los partatges", "home.column_settings.show_replies": "Mostrar las responsas", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Seguidors", "timeline_hint.resources.follows": "Abonaments", "timeline_hint.resources.statuses": "Tuts mai ancians", - "trends.counter_by_accounts": "{count, plural, one {{counter} persona ne parla} other {{counter} personas ne parlan}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Tendéncia del moment", "ui.beforeunload": "Vòstre brolhon serà perdut se quitatz Mastodon.", "units.short.billion": "{count}Md", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index 13cb39de8..99fdcfd45 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 3093ce15e..bc8799831 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Dowolne", "hashtag.column_settings.tag_mode.none": "Żadne", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Całkowity wolumen w ciągu {days, plural, one {ostatniego dnia} other {ostatnich {days} dni}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Podstawowe", "home.column_settings.show_reblogs": "Pokazuj podbicia", "home.column_settings.show_replies": "Pokazuj odpowiedzi", @@ -451,7 +454,7 @@ "search_results.nothing_found": "Nie znaleziono innych wyników dla tego wyszukania", "search_results.statuses": "Wpisy", "search_results.statuses_fts_disabled": "Szukanie wpisów przy pomocy ich zawartości nie jest włączone na tym serwerze Mastodona.", - "search_results.total": "{count, number} {count, plural, one {wynik} few {wyniki} many {wyników} more {wyników}}", + "search_results.total": "{count, number} {count, plural, one {wynik} few {wyniki} many {wyników} other {wyników}}", "status.admin_account": "Otwórz interfejs moderacyjny dla @{name}", "status.admin_status": "Otwórz ten wpis w interfejsie moderacyjnym", "status.block": "Zablokuj @{name}", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Śledzący", "timeline_hint.resources.follows": "Śledzeni", "timeline_hint.resources.statuses": "Starsze wpisy", - "trends.counter_by_accounts": "rozmawiają: {count, plural, one {{counter} osoba} few {{counter} osoby} many {{counter} osób} other {{counter} osoby}}", + "trends.counter_by_accounts": "{count, plural, one {jedna osoba} few {{count} osoby} many {{count} osób} other {{counter} ludzie}} w ciągu {days, plural, one {ostatniego dnia} other {ostatnich {days} dni}}", "trends.trending_now": "Popularne teraz", "ui.beforeunload": "Utracisz tworzony wpis, jeżeli opuścisz Mastodona.", "units.short.billion": "{count} mld", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index bb9800786..0073ff5f1 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Qualquer uma", "hashtag.column_settings.tag_mode.none": "Nenhuma", "hashtag.column_settings.tag_toggle": "Adicionar mais hashtags aqui", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar boosts", "home.column_settings.show_replies": "Mostrar respostas", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Seguidores", "timeline_hint.resources.follows": "Segue", "timeline_hint.resources.statuses": "Toots anteriores", - "trends.counter_by_accounts": "{count, plural, one {{counter} pessoa} other {{counter} pessoas}} falando", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Em alta agora", "ui.beforeunload": "Seu rascunho será perdido se sair do Mastodon.", "units.short.billion": "{count} bi", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index c8810703e..643ef1c6e 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Qualquer destes", "hashtag.column_settings.tag_mode.none": "Nenhum destes", "hashtag.column_settings.tag_toggle": "Incluir etiquetas adicionais para esta coluna", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Volume total {days, plural, one {no último dia} other {nos últimos {days} dias}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar boosts", "home.column_settings.show_replies": "Mostrar respostas", @@ -366,7 +369,7 @@ "poll.closed": "Fechado", "poll.refresh": "Recarregar", "poll.total_people": "{count, plural, one {# pessoa} other {# pessoas}}", - "poll.total_votes": "{contar, plural, um {# vote} outro {# votes}}", + "poll.total_votes": "{count, plural, one {# voto} other {# votos}}", "poll.vote": "Votar", "poll.voted": "Votaste nesta resposta", "poll.votes": "{votes, plural, one {# voto } other {# votos}}", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Seguidores", "timeline_hint.resources.follows": "Seguindo", "timeline_hint.resources.statuses": "Toots antigos", - "trends.counter_by_accounts": "{count, plural, one {{counter} pessoa} other {{counter} pessoas}} a conversar", + "trends.counter_by_accounts": "{count, plural, one {{counter} pessoa} other {{counter} pessoas}} {days, plural, one {no último dia} other {nos últimos {days} dias}}", "trends.trending_now": "Tendências atuais", "ui.beforeunload": "O teu rascunho será perdido se abandonares o Mastodon.", "units.short.billion": "{count}MM", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 0c2ce0b2d..a3188f553 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Oricare din acestea", "hashtag.column_settings.tag_mode.none": "Niciuna dintre acestea", "hashtag.column_settings.tag_toggle": "Adaugă etichete suplimentare pentru această coloană", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "De bază", "home.column_settings.show_reblogs": "Afișează distribuirile", "home.column_settings.show_replies": "Afișează răspunsurile", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Urmăritori", "timeline_hint.resources.follows": "Urmăriri", "timeline_hint.resources.statuses": "Postări mai vechi", - "trends.counter_by_accounts": "{count, plural, one {{counter} persoană postează} other {{counter} persoane postează}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "În tendință acum", "ui.beforeunload": "Postarea se va pierde dacă părăsești pagina.", "units.short.billion": "{count}Mld", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 015fb0feb..ca9a2cceb 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Любой из списка", "hashtag.column_settings.tag_mode.none": "Ни один из списка", "hashtag.column_settings.tag_toggle": "Включить дополнительные теги для этой колонки", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Общий объем за {days, plural, =1 {последний день} one {последний {days} день} few {последних {days} дня} many {последних {days} дней} other {последних {days} дней}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Основные", "home.column_settings.show_reblogs": "Показывать продвижения", "home.column_settings.show_replies": "Показывать ответы", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "подписчиков", "timeline_hint.resources.follows": "подписки", "timeline_hint.resources.statuses": "прошлые посты", - "trends.counter_by_accounts": "{count, plural, one {{counter} человек обсуждает} few {{counter} человека обсуждают} many {{counter} человек обсуждают} other {{counter} человека обсуждает}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} человек} few {{counter} человека} many {{counter} человек} other {{counter} человека}} на протяжении {days, plural, =1 {последнего дня} one {последнего {days} дня} few {последних {days} дней} many {последних {days} дней} other {последних {days} дней}}", "trends.trending_now": "Самое актуальное", "ui.beforeunload": "Ваш черновик будет утерян, если вы покинете Mastodon.", "units.short.billion": "{count} млрд", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index 0bcca64ea..ecbdf816c 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 957b114c0..aaecfd8e1 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Cale si siat de custos", "hashtag.column_settings.tag_mode.none": "Perunu de custos", "hashtag.column_settings.tag_toggle": "Include etichetas additzionales pro custa colunna", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Bàsicu", "home.column_settings.show_reblogs": "Ammustra is cumpartziduras", "home.column_settings.show_replies": "Ammustra rispostas", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Sighiduras", "timeline_hint.resources.follows": "Sighende", "timeline_hint.resources.statuses": "Publicatziones prus betzas", - "trends.counter_by_accounts": "{count, plural, one {{counter} persone} other {{counter} persones}} chistionende", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Est tendèntzia immoe", "ui.beforeunload": "S'abbotzu tuo at a èssere pèrdidu si essis dae Mastodon.", "units.short.billion": "{count}Mrd", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 7ef228273..e50ea9135 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "ඇතුළත් එකක්", "hashtag.column_settings.tag_mode.none": "මේ කිසිවක් නැත", "hashtag.column_settings.tag_toggle": "මෙම තීරුවේ අමතර ටැග් ඇතුළත් කරන්න", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "මූලික", "home.column_settings.show_reblogs": "බූස්ට් පෙන්වන්න", "home.column_settings.show_replies": "ප්රතිචාර පෙන්වන්න", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "අනුගාමිකයින්", "timeline_hint.resources.follows": "පහත සඳහන්", "timeline_hint.resources.statuses": "පැරණි දත්", - "trends.counter_by_accounts": "{count, plural, one {{counter} පුද්ගලයා} other {{counter} මහජන}} කතා කරනවා", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "දැන් ප්‍රවණතාවය", "ui.beforeunload": "ඔබ Mastodon හැර ගියහොත් ඔබේ කෙටුම්පත නැති වනු ඇත.", "units.short.billion": "{count}බී", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 46873d31c..3454fe7d2 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Hociktorý z týchto", "hashtag.column_settings.tag_mode.none": "Žiaden z týchto", "hashtag.column_settings.tag_toggle": "Vlož dodatočné haštagy pre tento stĺpec", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Základné", "home.column_settings.show_reblogs": "Ukáž vyzdvihnuté", "home.column_settings.show_replies": "Ukáž odpovede", @@ -234,7 +237,7 @@ "keyboard_shortcuts.column": "zameraj sa na príspevok v jednom zo stĺpcov", "keyboard_shortcuts.compose": "zameraj sa na písaciu plochu", "keyboard_shortcuts.description": "Popis", - "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.direct": "pre otvorenie panelu priamých správ", "keyboard_shortcuts.down": "posunúť sa dole v zozname", "keyboard_shortcuts.enter": "Otvor príspevok", "keyboard_shortcuts.favourite": "pridaj do obľúbených", @@ -327,7 +330,7 @@ "notification.update": "{name} upravil/a príspevok", "notifications.clear": "Vyčisti oboznámenia", "notifications.clear_confirmation": "Naozaj chceš nenávratne prečistiť všetky tvoje oboznámenia?", - "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.report": "Nové hlásenia:", "notifications.column_settings.admin.sign_up": "Nové registrácie:", "notifications.column_settings.alert": "Oboznámenia na ploche", "notifications.column_settings.favourite": "Obľúbené:", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Sledujúci", "timeline_hint.resources.follows": "Následuje", "timeline_hint.resources.statuses": "Staršie príspevky", - "trends.counter_by_accounts": "{count, plural, one {{counter} človek rozpráva} few {{counter} ľudia rozprávajú} many {{counter} ľudia rozprávajú} other {{counter} ľudí rozpráva}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Teraz populárne", "ui.beforeunload": "Čo máš rozpísané sa stratí, ak opustíš Mastodon.", "units.short.billion": "{count}mld.", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 6e7368592..733614f3e 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Karkoli od naštetega", "hashtag.column_settings.tag_mode.none": "Nič od naštetega", "hashtag.column_settings.tag_toggle": "Za ta stolpec vključi dodatne oznake", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Skupen obseg v {days, plural, one {zadnjem {day} dnevu} two {zadnjih {days} dneh} few {zadnjih {days} dneh} other {zadnjih {days} dneh}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Osnovno", "home.column_settings.show_reblogs": "Pokaži izpostavitve", "home.column_settings.show_replies": "Pokaži odgovore", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "sledilcev", "timeline_hint.resources.follows": "Sledi", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{count} oseba govori} two {{count} osebi govorita} few {{count} osebe govorijo} other {{count} oseb govori}}", + "trends.counter_by_accounts": "{count, plural, one {{count} oseba} two {{count} osebi} few {{count} osebe} other {{count} oseb}} v {days, plural, one {zadnjem {day} dnevu} two {zadnjih {days} dneh} few {zadnjih {days} dneh} other {zadnjih {days} dneh}}", "trends.trending_now": "Zdaj v trendu", "ui.beforeunload": "Vaš osnutek bo izgubljen, če zapustite Mastodona.", "units.short.billion": "{count} milijard", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 4aa70477d..8bc440503 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Cilindo prej këtyre", "hashtag.column_settings.tag_mode.none": "Asnjë prej këtyre", "hashtag.column_settings.tag_toggle": "Përfshi etiketa shtesë për këtë shtyllë", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Vëllim gjithsej {days, plural, një {day} other {{days} ditët}} e fundit", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Bazë", "home.column_settings.show_reblogs": "Shfaq përforcime", "home.column_settings.show_replies": "Shfaq përgjigje", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Ndjekës", "timeline_hint.resources.follows": "Ndjekje", "timeline_hint.resources.statuses": "Mesazhe të vjetër", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} vetë}} duke folur", + "trends.counter_by_accounts": "{count, plural, një {{counter} person} other {{counter} vetë}} në {days, plural, një {day} other {{days} ditë}} të kaluar", "trends.trending_now": "Prirjet e tashme", "ui.beforeunload": "Skica juaj do të humbë, nëse dilni nga Mastodon-i.", "units.short.billion": "{count}Md", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 4dedb58bb..131af97e1 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Osnovno", "home.column_settings.show_reblogs": "Prikaži i podržavanja", "home.column_settings.show_replies": "Prikaži odgovore", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Ako napustite Mastodont, izgubićete napisani nacrt.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 42ae479da..a2409e957 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -220,6 +220,9 @@ "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": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Основно", "home.column_settings.show_reblogs": "Прикажи и подржавања", "home.column_settings.show_replies": "Прикажи одговоре", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Пратиоци", "timeline_hint.resources.follows": "Праћени", "timeline_hint.resources.statuses": "Старији тут", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Ако напустите Мастодонт, изгубићете написани нацрт.", "units.short.billion": "{count}Б", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index d8d2c6720..c0a69b24b 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Någon av dessa", "hashtag.column_settings.tag_mode.none": "Ingen av dessa", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Grundläggande", "home.column_settings.show_reblogs": "Visa knuffar", "home.column_settings.show_replies": "Visa svar", @@ -451,7 +454,7 @@ "search_results.nothing_found": "Kunde inte hitta något för dessa sökord", "search_results.statuses": "Inlägg", "search_results.statuses_fts_disabled": "Att söka toots med deras innehåll är inte möjligt på denna Mastodon-server.", - "search_results.total": "{count, number} {count, plural, ett {result} andra {results}}", + "search_results.total": "{count, number} {count, plural, one {result} other {results}}", "status.admin_account": "Öppet modereringsgränssnitt för @{name}", "status.admin_status": "Öppna denna status i modereringsgränssnittet", "status.block": "Blockera @{name}", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Följare", "timeline_hint.resources.follows": "Följer", "timeline_hint.resources.statuses": "Äldre tutningar", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} personer}} pratar", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trendar nu", "ui.beforeunload": "Ditt utkast kommer att förloras om du lämnar Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index 13cb39de8..99fdcfd45 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 6491ff7b7..cc7241bad 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "இவற்றில் எவையேனும்", "hashtag.column_settings.tag_mode.none": "இவற்றில் ஏதுமில்லை", "hashtag.column_settings.tag_toggle": "இந்த நெடுவரிசையில் கூடுதல் சிட்டைகளைச் சேர்க்கவும்", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "அடிப்படையானவை", "home.column_settings.show_reblogs": "பகிர்வுகளைக் காண்பி", "home.column_settings.show_replies": "மறுமொழிகளைக் காண்பி", @@ -366,7 +369,7 @@ "poll.closed": "மூடிய", "poll.refresh": "பத்துயிர்ப்ப?ட்டு", "poll.total_people": "{count, plural, one {# நபர்} other {# நபர்கள்}}", - "poll.total_votes": "{count, plural, one {# vote} மற்ற {# votes}}", + "poll.total_votes": "{count, plural, one {# vote} other {# votes}}", "poll.vote": "வாக்களி", "poll.voted": "உங்கள் தேர்வு", "poll.votes": "{votes, plural, one {# vote} other {# votes}}", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "வாசகர்கள்", "timeline_hint.resources.follows": "வாசிக்கிறார்", "timeline_hint.resources.statuses": "பழைய டூட்டுகள்", - "trends.counter_by_accounts": "{count, plural, one {{counter} நபர்} other {{counter} நபர்கள்}} உரையாடலில்", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "இப்போது செல்திசையில் இருப்பவை", "ui.beforeunload": "நீங்கள் வெளியே சென்றால் உங்கள் வரைவு இழக்கப்படும் மஸ்தோடோன்.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 268ce7ef7..17b0e1ed1 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index f2312ee12..bbe99b4a6 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "వీటిలో ఏవైనా", "hashtag.column_settings.tag_mode.none": "ఇవేవీ కావు", "hashtag.column_settings.tag_toggle": "ఈ నిలువు వరుసలో మరికొన్ని ట్యాగులను చేర్చండి", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "ప్రాథమిక", "home.column_settings.show_reblogs": "బూస్ట్ లను చూపించు", "home.column_settings.show_replies": "ప్రత్యుత్తరాలను చూపించు", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "మీరు మాస్టొడొన్ను వదిలివేస్తే మీ డ్రాఫ్ట్లు పోతాయి.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 3bcae61b8..0bff3caab 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -198,7 +198,7 @@ "explore.trending_tags": "แฮชแท็ก", "follow_recommendations.done": "เสร็จสิ้น", "follow_recommendations.heading": "ติดตามผู้คนที่คุณต้องการเห็นโพสต์! นี่คือข้อเสนอแนะบางส่วน", - "follow_recommendations.lead": "โพสต์จากคนที่คุณติดตามจะแสดงตามลำดับเวลาบนฟีดหลักของคุณ อย่ากลัวที่จะทำผิดพลาด คุณสามารถเลิกติดตามผู้คนได้ง่ายๆ ทุกเมื่อ!", + "follow_recommendations.lead": "โพสต์จากผู้คนที่คุณติดตามจะแสดงตามลำดับเวลาในฟีดหน้าแรกของคุณ อย่ากลัวที่จะทำผิดพลาด คุณสามารถเลิกติดตามผู้คนได้อย่างง่ายดายเมื่อใดก็ตาม!", "follow_request.authorize": "อนุญาต", "follow_request.reject": "ปฏิเสธ", "follow_requests.unlocked_explanation": "แม้ว่าไม่มีการล็อคบัญชีของคุณ พนักงานของ {domain} คิดว่าคุณอาจต้องการตรวจทานคำขอติดตามจากบัญชีเหล่านี้ด้วยตนเอง", @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "ใดก็ตามนี้", "hashtag.column_settings.tag_mode.none": "ไม่ใช่ทั้งหมดนี้", "hashtag.column_settings.tag_toggle": "รวมแท็กเพิ่มเติมสำหรับคอลัมน์นี้", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "พื้นฐาน", "home.column_settings.show_reblogs": "แสดงการดัน", "home.column_settings.show_replies": "แสดงการตอบกลับ", @@ -268,7 +271,7 @@ "lightbox.next": "ถัดไป", "lightbox.previous": "ก่อนหน้า", "limited_account_hint.action": "แสดงโปรไฟล์ต่อไป", - "limited_account_hint.title": "โปรไฟล์นี้ถูกซ่อนไว้โดยโมเดอเรเตอร์ของเซิร์ฟเวอร์ของคุณ", + "limited_account_hint.title": "มีการซ่อนโปรไฟล์นี้โดยผู้ควบคุมของเซิร์ฟเวอร์ของคุณ", "lists.account.add": "เพิ่มไปยังรายการ", "lists.account.remove": "เอาออกจากรายการ", "lists.delete": "ลบรายการ", @@ -360,7 +363,7 @@ "notifications.permission_denied_alert": "ไม่สามารถเปิดใช้งานการแจ้งเตือนบนเดสก์ท็อป เนื่องจากมีการปฏิเสธสิทธิอนุญาตเบราว์เซอร์ก่อนหน้านี้", "notifications.permission_required": "การแจ้งเตือนบนเดสก์ท็อปไม่พร้อมใช้งานเนื่องจากไม่ได้ให้สิทธิอนุญาตที่จำเป็น", "notifications_permission_banner.enable": "เปิดใช้งานการแจ้งเตือนบนเดสก์ท็อป", - "notifications_permission_banner.how_to_control": "หากต้องการรับการแจ้งเตือนเมื่อไม่ได้เปิด Mastodon ให้เปิดใช้การแจ้งเตือนบนเดสก์ท็อป คุณสามารถควบคุมได้ตามความต้องการด้วยการโต้ตอบประเภทที่สร้างการแจ้งเตือนบนเดสก์ท็อปผ่านปุ่ม {icon} ด้านบนเมื่อเปิดใช้งาน", + "notifications_permission_banner.how_to_control": "เพื่อรับการแจ้งเตือนเมื่อ Mastodon ไม่ได้เปิด เปิดใช้งานการแจ้งเตือนบนเดสก์ท็อป คุณสามารถควบคุมชนิดของการโต้ตอบที่สร้างการแจ้งเตือนบนเดสก์ท็อปได้อย่างแม่นยำผ่านปุ่ม {icon} ด้านบนเมื่อเปิดใช้งานการแจ้งเตือน", "notifications_permission_banner.title": "ไม่พลาดสิ่งใด", "picture_in_picture.restore": "นำกลับมา", "poll.closed": "ปิดแล้ว", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "ผู้ติดตาม", "timeline_hint.resources.follows": "การติดตาม", "timeline_hint.resources.statuses": "โพสต์ที่เก่ากว่า", - "trends.counter_by_accounts": "{count, plural, other {{counter} คน}}กำลังพูดคุย", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "กำลังนิยม", "ui.beforeunload": "แบบร่างของคุณจะหายไปหากคุณออกจาก Mastodon", "units.short.billion": "{count} พันล้าน", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 070bdb95b..3948bde5e 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Herhangi biri", "hashtag.column_settings.tag_mode.none": "Bunların hiçbiri", "hashtag.column_settings.tag_toggle": "Bu sütundaki ek etiketleri içer", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Son {days, plural, one {gündeki} other {{days} gündeki}} toplam hacim", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Temel", "home.column_settings.show_reblogs": "Boostları göster", "home.column_settings.show_replies": "Yanıtları göster", @@ -468,7 +471,7 @@ "status.embed": "Gömülü", "status.favourite": "Favorilerine ekle", "status.filtered": "Filtrelenmiş", - "status.hide": "Hide toot", + "status.hide": "Gönderiyi sakla", "status.history.created": "{name} oluşturdu {date}", "status.history.edited": "{name} düzenledi {date}", "status.load_more": "Daha fazlasını yükle", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Takipçiler", "timeline_hint.resources.follows": "Takip Edilenler", "timeline_hint.resources.statuses": "Eski tootlar", - "trends.counter_by_accounts": "{count, plural, one {{counter} kişi} other {{counter} kişi}} konuşuyor", + "trends.counter_by_accounts": "Son {days, plural, one {gündeki} other {{days} gündeki}} {count, plural, one {{counter} kişi} other {{counter} kişi}}", "trends.trending_now": "Şu an gündemde", "ui.beforeunload": "Mastodon'u terk ederseniz taslağınız kaybolacak.", "units.short.billion": "{count}Mr", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index 6ace5e763..c9a48d37c 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index 13cb39de8..99fdcfd45 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 4b0bc5e70..727b0b994 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Який-небудь зі списку", "hashtag.column_settings.tag_mode.none": "Жоден зі списку", "hashtag.column_settings.tag_toggle": "Додати додаткові теґи до цього стовпчика", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Загальний обсяг за останні(й) {days, plural, one {день} few {{days} дні} other {{days} днів}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Основні", "home.column_settings.show_reblogs": "Показувати поширення", "home.column_settings.show_replies": "Показувати відповіді", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Підписники", "timeline_hint.resources.follows": "Підписки", "timeline_hint.resources.statuses": "Попередні дописи", - "trends.counter_by_accounts": "{count, plural, one {{counter} особа обговорює} few {{counter} особи обговорюють} many {{counter} осіб обговорюють} other {{counter} особи обговорюють}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} особа} few {{counter} особи} other {{counter} осіб}} за останні(й) {days, plural, one {день} few {{days} дні} other {{days} днів}}", "trends.trending_now": "Актуальні", "ui.beforeunload": "Вашу чернетку буде втрачено, якщо ви покинете Mastodon.", "units.short.billion": "{count} млрд.", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index 9485dbabf..b3e3fd771 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "ان میں سے کوئی", "hashtag.column_settings.tag_mode.none": "ان میں سے کوئی بھی نہیں", "hashtag.column_settings.tag_toggle": "اس کالم کے لئے مزید ٹیگز شامل کریں", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "بنیادی", "home.column_settings.show_reblogs": "افزائشات دکھائیں", "home.column_settings.show_replies": "جوابات دکھائیں", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Followers", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 1019c342a..4cdb1e53d 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Một phần", "hashtag.column_settings.tag_mode.none": "Không chọn", "hashtag.column_settings.tag_toggle": "Bao gồm thêm hashtag cho cột này", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Tổng số lần sử dụng {days, plural, other {{days} ngày}} qua", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Tùy chỉnh", "home.column_settings.show_reblogs": "Hiện những lượt đăng lại", "home.column_settings.show_replies": "Hiện những tút dạng trả lời", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "Người theo dõi", "timeline_hint.resources.follows": "Đang theo dõi", "timeline_hint.resources.statuses": "Tút cũ hơn", - "trends.counter_by_accounts": "{count, plural, one {{counter} người} other {{counter} người}} đang thảo luận", + "trends.counter_by_accounts": "{count, plural, other {{count} lượt}} dùng trong {days, plural, other {{days} ngày}} qua", "trends.trending_now": "Xu hướng", "ui.beforeunload": "Bản nháp của bạn sẽ bị mất nếu bạn thoát khỏi Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index 7f1965401..898cc22a9 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "ⵉⵎⴹⴼⴰⵕⵏ", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older toots", - "trends.counter_by_accounts": "{count, plural, one {{counter} ⵓⴼⴳⴰⵏ} other {{counter} ⵉⴼⴳⴰⵏⵏ}} ⴰⴳ ⵙⵙⴰⵡⴰⵍⵏ", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trending now", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index dcb54735f..334b93034 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "任一", "hashtag.column_settings.tag_mode.none": "无一", "hashtag.column_settings.tag_toggle": "在此栏加入额外的标签", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "在过去的{days, plural,one {day}other {{days}days}}的总数量", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "基本设置", "home.column_settings.show_reblogs": "显示转嘟", "home.column_settings.show_replies": "显示回复", @@ -278,7 +281,7 @@ "lists.new.title_placeholder": "新列表的标题", "lists.replies_policy.followed": "任何被关注的用户", "lists.replies_policy.list": "列表成员", - "lists.replies_policy.none": "没有人", + "lists.replies_policy.none": "无人", "lists.replies_policy.title": "显示回复给:", "lists.search": "搜索你关注的人", "lists.subheading": "你的列表", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "关注者", "timeline_hint.resources.follows": "关注", "timeline_hint.resources.statuses": "更早的嘟文", - "trends.counter_by_accounts": "{count, plural, one {{counter} 人} other {{counter} 人}}正在讨论", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "现在流行", "ui.beforeunload": "如果你现在离开 Mastodon,你的草稿内容将会丢失。", "units.short.billion": "{count} B", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 867ced8d5..e3c65cdab 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "任一", "hashtag.column_settings.tag_mode.none": "全不", "hashtag.column_settings.tag_toggle": "在這欄位加入額外的標籤", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "基本", "home.column_settings.show_reblogs": "顯示被轉推的文章", "home.column_settings.show_replies": "顯示回應文章", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "關注者", "timeline_hint.resources.follows": "關注中", "timeline_hint.resources.statuses": "更早的文章", - "trends.counter_by_accounts": "{count, plural, one {{counter} 個人}other {{counter} 個人}}正在討論", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "現在流行", "ui.beforeunload": "如果你現在離開 Mastodon,你的草稿內容將會被丟棄。", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 1589ff09a..99814b30d 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -220,6 +220,9 @@ "hashtag.column_settings.tag_mode.any": "任一", "hashtag.column_settings.tag_mode.none": "全不", "hashtag.column_settings.tag_toggle": "將額外標籤加入到這個欄位", + "hashtag.follow": "Follow hashtag", + "hashtag.total_volume": "過去 {days, plural, one {日} other {{days} 日}} 之總量", + "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "基本", "home.column_settings.show_reblogs": "顯示轉嘟", "home.column_settings.show_replies": "顯示回覆", @@ -517,7 +520,7 @@ "timeline_hint.resources.followers": "跟隨者", "timeline_hint.resources.follows": "正在跟隨", "timeline_hint.resources.statuses": "更早的嘟文", - "trends.counter_by_accounts": "{count, plural,one {{counter} 人}other {{counter} 人}}正在討論", + "trends.counter_by_accounts": "{count, plural, one {{counter} 人} other {{counter} 人}} 於過去 {days, plural, one {日} other {{days} days}} 之間", "trends.trending_now": "現正熱門", "ui.beforeunload": "如果離開 Mastodon,您的草稿將會不見。", "units.short.billion": "{count}B", diff --git a/config/locales/activerecord.fr.yml b/config/locales/activerecord.fr.yml index bc063864a..cc650cec8 100644 --- a/config/locales/activerecord.fr.yml +++ b/config/locales/activerecord.fr.yml @@ -45,5 +45,7 @@ fr: permissions_as_keys: dangerous: inclure des autorisations non sécurisées pour le rôle de base elevated: ne peut pas inclure des autorisations que votre rôle actuel ne possède pas + own_role: ne peut pas être modifié avec votre rôle actuel position: elevated: ne peut pas être supérieur à votre rôle actuel + own_role: ne peut pas être modifié avec votre rôle actuel diff --git a/config/locales/activerecord.he.yml b/config/locales/activerecord.he.yml index 5dc8ddc96..7a9d54cd2 100644 --- a/config/locales/activerecord.he.yml +++ b/config/locales/activerecord.he.yml @@ -21,6 +21,14 @@ he: username: invalid: ספרות, אותיות לטיניות וקו תחתי בלבד reserved: שמור + admin/webhook: + attributes: + url: + invalid: כתובת לא חוקית + doorkeeper/application: + attributes: + website: + invalid: הינה כתובת לא חוקית status: attributes: reblog: @@ -30,3 +38,14 @@ he: email: blocked: עושה שימוש בספק דוא"ל אסור unreachable: נראה שלא קיים + role_id: + elevated: לא יכול להיות גבוה יותר מתפקידך הנוכחי + user_role: + attributes: + permissions_as_keys: + dangerous: כלול הרשאות לא בטוחות לתפקיד הבסיסי + elevated: לא ניתן לכלול הרשאות שתפקידך הנוכחי לא כולל + own_role: לא ניתן למזג על תפקידך הנוכחי + position: + elevated: לא יכול להיות גבוה יותר מתפקידך הנוכחי + own_role: לא ניתן לשנות באמצעות תפקידך הנוכחי diff --git a/config/locales/activerecord.pl.yml b/config/locales/activerecord.pl.yml index 78ee745e2..68d0b7784 100644 --- a/config/locales/activerecord.pl.yml +++ b/config/locales/activerecord.pl.yml @@ -43,6 +43,8 @@ pl: user_role: attributes: permissions_as_keys: + dangerous: dołącz uprawnienia, które nie są bezpieczne dla roli podstawowej + elevated: nie może zawierać uprawnień, jakie twoja obecna rola nie posiada own_role: nie można zmienić z aktualną rolą position: elevated: nie może być wyższa niż twoja bieżąca rola diff --git a/config/locales/activerecord.th.yml b/config/locales/activerecord.th.yml index 716c003e9..64586f5bb 100644 --- a/config/locales/activerecord.th.yml +++ b/config/locales/activerecord.th.yml @@ -43,7 +43,9 @@ th: user_role: attributes: permissions_as_keys: - dangerous: รวมสิทธิ์ที่ไม่ปลอดภัยสำหรับบทบาทพื้นฐาน - elevated: ไม่สามารถรวบรวมสิทธิ์ในบทบาทปัจจุบันของคุณไม่ได้ + dangerous: รวมสิทธิอนุญาตที่ไม่ปลอดภัยสำหรับบทบาทพื้นฐาน + elevated: ไม่สามารถรวมสิทธิอนุญาตที่บทบาทปัจจุบันของคุณไม่มี + own_role: ไม่สามารถเปลี่ยนด้วยบทบาทปัจจุบันของคุณ position: elevated: ไม่สามารถสูงกว่าบทบาทปัจจุบันของคุณ + own_role: ไม่สามารถเปลี่ยนด้วยบทบาทปัจจุบันของคุณ diff --git a/config/locales/activerecord.tr.yml b/config/locales/activerecord.tr.yml index e9f8a9fff..f0787dc41 100644 --- a/config/locales/activerecord.tr.yml +++ b/config/locales/activerecord.tr.yml @@ -45,5 +45,7 @@ tr: permissions_as_keys: dangerous: temel rol için güvenli olmayan izinleri içerir elevated: mevcut rolünüzün sahip olmadığı izinleri içeremez + own_role: mevcut rolünüzle değiştirilemez position: elevated: mevcut rolünüzden yüksek olamaz + own_role: mevcut rolünüzle değiştirilemez diff --git a/config/locales/activerecord.vi.yml b/config/locales/activerecord.vi.yml index aeffa3daf..9062dc532 100644 --- a/config/locales/activerecord.vi.yml +++ b/config/locales/activerecord.vi.yml @@ -45,5 +45,7 @@ vi: permissions_as_keys: dangerous: bao gồm các quyền không an toàn cho vai trò cơ bản elevated: không thể bao gồm các quyền mà vai trò hiện tại của bạn không có + own_role: không thể thay đổi vai trò hiện tại của bạn position: elevated: không thể cao hơn vai trò hiện tại của bạn + own_role: không thể thay đổi vai trò hiện tại của bạn diff --git a/config/locales/activerecord.zh-CN.yml b/config/locales/activerecord.zh-CN.yml index 27ec73ab9..c46c87451 100644 --- a/config/locales/activerecord.zh-CN.yml +++ b/config/locales/activerecord.zh-CN.yml @@ -19,27 +19,27 @@ zh-CN: account: attributes: username: - invalid: 只能使用字母、数字和下划线 + invalid: 只能包含字母、数字和下划线 reserved: 是保留关键字 admin/webhook: attributes: url: - invalid: 不是有效的 URL。 + invalid: 非有效网址 doorkeeper/application: attributes: website: - invalid: 网址无效 + invalid: 非有效网址 status: attributes: reblog: - taken: 已经被转嘟过 + taken: 已被转嘟过 user: attributes: email: blocked: 使用了被封禁的电子邮件提供商 unreachable: 似乎不存在 role_id: - elevated: 不能高于您当前的角色 + elevated: 不能高于您当前的身份 user_role: attributes: permissions_as_keys: @@ -48,3 +48,4 @@ zh-CN: own_role: 无法以您当前的身份更改 position: elevated: 不能高于您当前的角色 + own_role: 无法以您当前的身份更改 diff --git a/config/locales/devise.he.yml b/config/locales/devise.he.yml index 63bb3aedd..0f389bd38 100644 --- a/config/locales/devise.he.yml +++ b/config/locales/devise.he.yml @@ -110,3 +110,8 @@ he: expired: פג תוקפו. נא לבקש חדש not_found: לא נמצא not_locked: לא היה נעול + not_saved: + many: "%{count} שגיאות מנעו מ%{resource} זה מלהשמר:" + one: 'שגיאה אחת מנעה מ%{resource} זה מלהשמר:' + other: "%{count} שגיאות מנעו מ%{resource} זה מלהשמר:" + two: " %{count} שגיאות מנעו מ%{resource} זה מלהשמר:" diff --git a/config/locales/doorkeeper.th.yml b/config/locales/doorkeeper.th.yml index 963b2361d..a7e4a69a5 100644 --- a/config/locales/doorkeeper.th.yml +++ b/config/locales/doorkeeper.th.yml @@ -81,25 +81,25 @@ th: errors: messages: access_denied: เจ้าของทรัพยากรหรือเซิร์ฟเวอร์การอนุญาตปฏิเสธคำขอ - credential_flow_not_configured: การไหลของข้อมูลรับรองรหัสผ่านเจ้าของทรัพยากรล้มเหลวเนื่องจาก Doorkeeper.configure.resource_owner_from_credentials ไม่ได้ถูกกำหนดค่า - invalid_client: การตรวจสอบสิทธิ์ไคลเอ็นต์ล้มเหลวเนื่องจากไคลเอ็นต์ที่ไม่รู้จัก ไม่รวมการตรวจสอบไคลเอ็นต์ หรือวิธีการตรวจสอบสิทธิ์ที่ไม่รองรับ - invalid_grant: การให้สิทธิ์ที่ระบุไม่ถูกต้อง หมดอายุ เพิกถอน ไม่ตรงกับ URI การเปลี่ยนเส้นทางที่ใช้ในคำขอการให้สิทธิ์ หรือออกให้ไคลเอ็นต์อื่น + credential_flow_not_configured: โฟลว์ข้อมูลประจำตัวรหัสผ่านเจ้าของทรัพยากรล้มเหลวเนื่องจากไม่ได้กำหนดค่า Doorkeeper.configure.resource_owner_from_credentials + invalid_client: การรับรองความถูกต้องไคลเอ็นต์ล้มเหลวเนื่องจากไคลเอ็นต์ที่ไม่รู้จัก ไม่มีการรับรองความถูกต้องไคลเอ็นต์ที่รวมอยู่ หรือวิธีการรับรองความถูกต้องที่ไม่รองรับ + invalid_grant: การให้การรับรองความถูกต้องที่ให้มาไม่ถูกต้อง หมดอายุแล้ว เพิกถอนแล้ว ไม่ตรงกับ URI การเปลี่ยนเส้นทางที่ใช้ในคำขอการรับรองความถูกต้อง หรือออกให้ไคลเอ็นต์อื่น invalid_redirect_uri: URI การเปลี่ยนเส้นทางที่รวมอยู่ไม่ถูกต้อง invalid_request: missing_param: 'พารามิเตอร์ที่จำเป็นขาดหายไป: %{value}' - request_not_authorized: คำขอต้องได้รับอนุญาต พารามิเตอร์ที่จำเป็นสำหรับการให้สิทธิ์คำขอขาดหายไปหรือไม่ถูกต้อง - unknown: คำขอไม่มีพารามิเตอร์ที่จำเป็น มีค่าพารามิเตอร์ที่ไม่รองรับ หรืออยู่ในรูปแบบที่ไม่ถูกต้อง - invalid_resource_owner: ข้อมูลรับรองเจ้าของทรัพยากรที่ระบุไม่ถูกต้อง หรือไม่พบเจ้าของทรัพยากร + request_not_authorized: คำขอจำเป็นต้องได้รับอนุญาต พารามิเตอร์ที่จำเป็นสำหรับการอนุญาตคำขอขาดหายไปหรือไม่ถูกต้อง + unknown: คำขอไม่มีพารามิเตอร์ที่จำเป็น รวมค่าพารามิเตอร์ที่ไม่รองรับ หรือผิดรูปแบบ + invalid_resource_owner: ข้อมูลประจำตัวเจ้าของทรัพยากรที่ให้มาไม่ถูกต้อง หรือไม่พบเจ้าของทรัพยากร invalid_scope: ขอบเขตที่ขอไม่ถูกต้อง ไม่รู้จัก หรือผิดรูปแบบ invalid_token: expired: โทเคนการเข้าถึงหมดอายุแล้ว revoked: เพิกถอนโทเคนการเข้าถึงแล้ว unknown: โทเคนการเข้าถึงไม่ถูกต้อง resource_owner_authenticator_not_configured: การค้นหาเจ้าของทรัพยากรล้มเหลวเนื่องจากไม่ได้กำหนดค่า Doorkeeper.configure.resource_owner_authenticator - server_error: เซิร์ฟเวอร์การให้สิทธิ์พบสภาวะที่ไม่คาดคิดซึ่งทำให้ไม่สามารถดำเนินการตามคำขอได้ - temporarily_unavailable: ขณะนี้เซิร์ฟเวอร์การให้สิทธิ์ไม่สามารถจัดการตามคำขอได้ เนื่องจากการโอเวอร์โหลดหรือมีการบำรุงรักษาเซิร์ฟเวอร์ชั่วคราว + server_error: เซิร์ฟเวอร์การรับรองความถูกต้องพบเงื่อนไขที่ไม่คาดคิดซึ่งป้องกันไม่ให้เซิร์ฟเวอร์ดำเนินการตามคำขอ + temporarily_unavailable: เซิร์ฟเวอร์การรับรองความถูกต้องไม่สามารถจัดการคำขอได้ในปัจจุบันเนื่องจากการทำงานเกินพิกัดชั่วคราวหรือการบำรุงรักษาเซิร์ฟเวอร์ unauthorized_client: ไคลเอ็นต์ไม่ได้รับอนุญาตให้ทำคำขอนี้โดยใช้วิธีการนี้ - unsupported_grant_type: ประเภทการให้สิทธิ์ไม่ได้รับการสนับสนุนโดยเซิร์ฟเวอร์การให้สิทธิ์นะ + unsupported_grant_type: ชนิดการให้การรับรองความถูกต้องไม่รองรับโดยเซิร์ฟเวอร์การรับรองความถูกต้อง unsupported_response_type: เซิร์ฟเวอร์การอนุญาตไม่รองรับชนิดการตอบสนองนี้ flash: applications: diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 5fbde142b..5d3e1e367 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -22,7 +22,7 @@ eo: federation_hint_html: Per konto ĉe %{instance}, vi povos sekvi homojn ĉe iu ajn Mastodon nodo kaj preter. get_apps: Provu telefonan aplikaĵon hosted_on: "%{domain} estas nodo de Mastodon" - instance_actor_flash: 'Ĉi tiu konto estas virtuala agento uzata por reprezenti la servilon mem kaj neniu individua uzanto. Ĝi estas uzata por celoj de la federaĵo kaj devas ne esti brokita se vi ne volas bloki la tutan servilon, en kiu okazo vi devas uzi blokadon de domajno. + instance_actor_flash: 'Ĉi tiu konto estas virtuala agento uzata por reprezenti la servilon mem kaj neniu individua uzanto. Ĝi estas uzata por celoj de la federaĵo, kaj devas ne esti brokita, krom se vi ne volas bloki la tutan servilon, tiuokaze vi devas uzi blokadon de domajno. ' learn_more: Lerni pli diff --git a/config/locales/he.yml b/config/locales/he.yml index 4daa4f3b6..74fee81cc 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -35,11 +35,12 @@ he: server_stats: 'סטטיסטיקות שרת:' source_code: קוד מקור status_count_after: - many: חצרוצים - one: חצרוץ - other: חצרוצים - two: חצרוצים + many: פוסטים + one: פוסט + other: פוסטים + two: פוסטים status_count_before: שכתבו + tagline: רשת חברתית מבוזרת terms: תנאי שימוש unavailable_content: שרתים מוגבלים unavailable_content_description: @@ -83,10 +84,10 @@ he: pin_errors: following: עליך לעקוב אחרי חשבון לפני שניתן יהיה להמליץ עליו posts: - many: חצרוצים - one: חצרוץ - other: חצרוצים - two: חצרוצים + many: פוסטים + one: פוסט + other: פוסטים + two: פוסטים posts_tab_heading: חצרוצים posts_with_replies: חצרוצים ותגובות roles: @@ -110,11 +111,17 @@ he: avatar: יַצְגָן by_domain: שם מתחם change_email: + changed_msg: דוא"ל שונה בהצלחה current_email: כתובת דוא"ל נוכחית label: שינוי כתובת דוא"ל משוייכת לחשבון new_email: כתובת דוא"ל חדשה submit: שלחי בקשה לשינוי דוא"ל title: שינוי כתובת דוא"ל עבור המשתמש.ת %{username} + change_role: + changed_msg: תפקיד שונה בהצלחה ! + label: שנה תפקיד + no_role: ללא תפקיד + title: שינוי תפקיד עבור המשתמש.ת %{username} confirm: אישור confirmed: אושר confirming: המאשר @@ -158,6 +165,7 @@ he: active: פעילים all: הכל pending: בהמתנה + silenced: מוגבלים suspended: מושהים title: ניהול קהילה moderation_notes: הודעות מנחה @@ -165,6 +173,7 @@ he: most_recent_ip: כתובות אחרונות no_account_selected: לא בוצעו שינויים בחשבונות ל שכן לא נבחרו חשבונות no_limits_imposed: לא הוטלו הגבלות + no_role_assigned: ללא תפקיד not_subscribed: לא רשום pending: ממתינים לסקירה perform_full_suspension: ביצוע השעייה מלאה @@ -193,6 +202,7 @@ he: reset: איפוס reset_password: אתחול סיסמא resubscribe: להרשם מחדש + role: תפקיד search: חיפוש search_same_email_domain: משתמשים אחרים מאותו דומיין דוא"ל search_same_ip: משתמשים אחרים מאותה כתובת IP @@ -252,7 +262,7 @@ he: destroy_email_domain_block: מחיקת חסימת דומיין דוא"ל destroy_instance: טיהור דומיין destroy_ip_block: מחיקת כלל IP - destroy_status: מחיקת חצרוץ + destroy_status: מחיקת פוסט destroy_unavailable_domain: מחיקת דומיין בלתי זמין disable_2fa_user: השעיית זיהוי דו-גורמי disable_custom_emoji: השעיית אמוג'י מיוחד @@ -303,7 +313,7 @@ he: destroy_email_domain_block_html: '%{name} הסיר/ה חסימה מדומיין הדוא"ל %{target}' destroy_instance_html: "%{name} טיהר/ה את הדומיין %{target}" destroy_ip_block_html: "%{name} מחק/ה את הכלל עבור IP %{target}" - destroy_status_html: "%{name} הסיר/ה חצרוץ מאת %{target}" + destroy_status_html: "%{name} הסיר/ה פוסט מאת %{target}" destroy_unavailable_domain_html: "%{name} התחיל/ה מחדש משלוח לדומיין %{target}" disable_2fa_user_html: "%{name} ביטל/ה את הדרישה לאימות דו-גורמי למשתמש %{target}" disable_custom_emoji_html: "%{name} השבית/ה את האמוג'י %{target}" @@ -331,8 +341,8 @@ he: update_announcement_html: "%{name} עדכן/ה הכרזה %{target}" update_custom_emoji_html: "%{name} עדכן/ה אמוג'י %{target}" update_domain_block_html: "%{name} עדכן/ה חסימת דומיין עבור %{target}" - update_status_html: "%{name} עדכן/ה חצרוץ של %{target}" - deleted_status: "(חצרוץ נמחק)" + update_status_html: "%{name} עדכן/ה פוסט של %{target}" + deleted_status: "(פוסט נמחק)" empty: לא נמצאו יומנים. filter_by_action: סינון לפי פעולה filter_by_user: סינון לפי משתמש @@ -436,6 +446,7 @@ he: destroyed_msg: חסימת שרת בוטלה domain: שרת edit: עריכת חסימת שם מתחם + existing_domain_block: כבר החלת הגבלות מחמירות יותר על %{name} existing_domain_block_html: כבר הפעלת הגבלות חמורות יותר על %{name}, עליך ראשית להסיר מעליו/ה את החסימה. new: create: יצירת חסימה @@ -666,6 +677,71 @@ he: unresolved: לא פתור updated_at: עודכן view_profile: צפה בפרופיל + roles: + add_new: הוספת תפקיד + assigned_users: + many: "%{count} משתמשים" + one: 'משתמש %{count} ' + other: "%{count} משתמשים" + two: "%{count} שני משתמשים" + categories: + administration: ניהול מערכת + devops: פיתוח + invites: הזמנות + moderation: פיקוח + special: מיוחדים + delete: מחיקה + description_html: באמצעות תפקידי משתמש, תוכלו להתאים אישית לאילו פונקציות ואזורים של מסטודון המשתמשים יוכלו לגשת + edit: עריכת התפקיד של %{name} + everyone: הרשאות ברירת מחדל + everyone_full_description_html: זהו התפקיד הבסיסי שמשפיע על כלל המשתשמשים, אפילו אלו ללא תפקיד. כל התפקידים האחרים יורשים את ההרשאות שלהם ממנו. + permissions_count: + many: "%{count} הרשאות" + one: הרשאה %{count} + other: "%{count} הרשאות" + two: "%{count} הרשאות" + privileges: + administrator: מנהל מערכת + administrator_description: משתמשים עם הרשאה זו יוכלו לעקוף כל הרשאה + delete_user_data: מחיקת כל נתוני המשתמש + delete_user_data_description: מאפשר למשתמשים למחוק נתוני משתמשים אחרים ללא דיחוי + invite_users: הזמנת משתמשים + invite_users_description: מאפשר למשתמשים להזמין אנשים חדשים לשרת + manage_announcements: ניהול הכרזות + manage_announcements_description: מאפשר למשתמשים לנהל הכרזות של השרת + manage_appeals: ניהול ערעורים + manage_appeals_description: מאפשר למשתמשים לסקור ערעורים כנגד פעולות מודרציה + manage_blocks: ניהול חסימות + manage_blocks_description: מאפשר למשתמשים לחסום ספקי דוא"ל וכתובות IP + manage_custom_emojis: ניהול סמלונים בהתאמה אישית + manage_custom_emojis_description: מאפשר למשתמשים לנהל סמלונים בהתאמה אישית של השרת + manage_federation: ניהול פדרציה + manage_federation_description: מאפשר למשתמשים לחסום או לאפשר התממשקות עם שמות מתחם אחרים + manage_invites: ניהול הזמנות + manage_invites_description: מאפשר למשתמשים לעלעל ב ולבטל קישורי הזמנה + manage_reports: ניהול דו"חות + manage_reports_description: מאפשר למשתמשים לסקור דו"חות ולבצע פעולות מודרציה בהתבסס עליהם + manage_roles: ניהול תפקידים + manage_roles_description: מאפשר למשתמשים לנהל ולמנות אחרים לתפקידים נמוכים יותר משלהם. + manage_rules: ניהול כללים + manage_rules_description: מאפשר למשתמשים לנהל את כללי השרת + manage_settings: נהל הגדרות + manage_settings_description: מאפשר למשתמשים לנהל את הגדרות השרת + manage_taxonomies: ניהול טקסונומיות + manage_taxonomies_description: מאפשר למשתמשים לסקור תוכן אופנתי (טרנדי) ולעדכן אפשרויות של תגיות. + manage_user_access: ניהול גישת משתמשים + manage_user_access_description: מאפשר למשתמשים לבטל אימות דו-שלבי של משתמשים אחרים, לשנות את כתובות הדוא"ל שלהם, ולאפס את סיסמתם + manage_users: ניהול משתמשים + manage_users_description: מאפשר למשתמשים לצפות בפרטים של משתמשים אחרים ולבצע פעולות מודרציה לפיהם + manage_webhooks: ניהול Webhooks + manage_webhooks_description: מאפשר למשתמשים להגדיר Webhooks לאירועים מנהלתיים + view_audit_log: צפייה בלוג ביקורת + view_audit_log_description: מאפשר למשתשמשים לצפות בהיסטוריה של פעולות מנהלתיות על השרת + view_dashboard: הצג לוח מחוונים + view_dashboard_description: אפשר למשתמשים לגשת ללוח המחוונים + view_devops: פיתוח + view_devops_description: מאפשר למשתמשים לגשת ללוחות המחוונים של Sidekiq ושל pgHero + title: תפקידים rules: add_new: הוספת כלל delete: מחיקה @@ -825,10 +901,10 @@ he: title: מפרסמים rejected: דחוי statuses: - allow: הרשאת חצרוץ + allow: הרשאת פוסט allow_account: הרשאת מחבר/ת description_html: אלו הם חצרוצים שהשרת שלך מכיר וזוכים להדהודים וחיבובים רבים כרגע. זה עשוי למשתמשיך החדשים והחוזרים למצוא עוד נעקבים. החצרוצים לא מוצגים עד שיאושר המחבר/ת, והמחבר/ת יאשרו שחשבונים יומלץ לאחרים. ניתן לאשר או לדחות חצרוצים ספציפיים. - disallow: לא לאשר חצרוץ + disallow: לדחות פוסט disallow_account: לא לאשר מחבר/ת not_discoverable: המחבר/ת לא בחר/ה לאפשר את גילויים shared_by: @@ -870,13 +946,26 @@ he: empty: לא הגדרת עדיין שום טקסט מוכן מראש לאזהרה. title: ניהול טקסטים מוכנים מראש לאזהרות webhooks: + add_new: הוספת נקודת קצה delete: מחיקה disable: כיבוי disabled: כבוי + edit: עריכת נקודת קצה + empty: לא הוגדו נקודות קצה להתליות רשת עדיין. enable: אפשר enabled: פעילים + enabled_events: + many: "%{count} אירועים אופשרו" + one: אירוע %{count} מאופשר + other: "%{count} אירועים אופשרו" + two: "%{count} אירועים אופשרו" events: אירועים + new: Webhook חדש + rotate_secret: החלף מפתח + secret: מפתח הרשמה status: סטטוס + title: התליות רשת + webhook: התליית רשת admin_mailer: new_appeal: actions: @@ -905,7 +994,7 @@ he: title: נושאים חמים new_trending_statuses: no_approved_statuses: אין כרגע שום חצרוצים חמים מאושרים. - requirements: כל אחד מהמועמדים האלה עשוי לעבור החצרוץ החם המאושר מדרגה %{rank}, שההא כרגע %{lowest_status_url} עם ציון של %{lowest_status_score}. + requirements: כל אחד מהמועמדים האלה עשוי לעבור את הפוסט החם המאושר מדרגה %{rank}, שהוא כרגע %{lowest_status_url} עם ציון של %{lowest_status_score}. title: חצרוצים לוהטים new_trending_tags: no_approved_tags: אין כרגע שום האשתגיות חמות מאושרות. @@ -930,14 +1019,14 @@ he: guide_link: https://crowdin.com/project/mastodon guide_link_text: כולם יכולים לתרום. sensitive_content: תוכן רגיש - toot_layout: פריסת חצרוץ + toot_layout: פריסת פוסט application_mailer: notification_preferences: שינוי העדפות דוא"ל salutation: "%{name}," settings: 'שינוי הגדרות דוא"ל: %{link}' view: 'תצוגה:' view_profile: צפיה בפרופיל - view_status: הצגת חצרוץ + view_status: הצגת פוסט applications: created: ישום נוצר בהצלחה destroyed: ישום נמחק בהצלחה @@ -1061,15 +1150,17 @@ he: appealed_msg: הערעור שלך הוגש. במידה ויאושר, תיודע. appeals: submit: הגש ערעור + approve_appeal: קבלת ערעור associated_report: הדו"ח המשויך created_at: מתאריך description_html: אלו הן הפעולות שננקטו כנגד חשבונך והאזהרות שנשלחו אליך על ידי צוות %{instance}. recipient: הנמען - status: 'חצרוץ #%{id}' - status_removed: החצרוץ כבר הוסר מהמערכת + reject_appeal: דחיית ערעור + status: 'פוסט #%{id}' + status_removed: הפוסט כבר הוסר מהמערכת title: "%{action} מתאריך %{date}" title_actions: - delete_statuses: הסרת חצרוץ + delete_statuses: הסרת פוסט disable: הקפאת חשבון mark_statuses_as_sensitive: סימון חצרוצים כרגישים none: אזהרה @@ -1127,14 +1218,26 @@ he: public: פידים פומביים thread: שיחות edit: + add_keyword: הוספת מילת מפתח + keywords: מילות מפתח title: ערוך מסנן errors: + deprecated_api_multiple_keywords: לא ניתן לשנות פרמטרים אלו מהיישומון הזה בגלל שהם חלים על יותר ממילת מפתח אחת. ניתן להשתמש ביישומון מעודכן יותר או בממשק הוובי. invalid_context: לא סופק הקשר או הקשר לא תקין index: + contexts: פילטרים ב %{contexts} delete: למחוק empty: אין לך מסננים. + expires_in: פג תוקף ב %{distance} + expires_on: פג תוקף ב %{date} + keywords: + many: "%{count} מילות מפתח" + one: מילת מפתח %{count} + other: "%{count} מילות מפתח" + two: "%{count} מילות מפתח" title: מסננים new: + save: שמירת מסנן חדש title: הוספת מסנן חדש footer: developers: מפתחות @@ -1215,7 +1318,7 @@ he: title: הסטוריית אימותים media_attachments: validations: - images_and_video: לא ניתן להוסיף וידאו לחצרוץ שכבר מכיל תמונות + images_and_video: לא ניתן להוסיף וידאו לפוסט שכבר מכיל תמונות not_ready: לא ניתן להצמיד קבצים שהעלאתם לא הסתיימה. נסה/י שוב בעוד רגע! too_many: לא ניתן להוסיף יותר מארבעה קבצים migrations: @@ -1257,6 +1360,8 @@ he: copy_account_note_text: 'חשבון זה הועבר מ-%{acct}, הנה הערותיך הקודמות לגביהם:' notification_mailer: admin: + report: + subject: '%{name} שלח/ה דו"ח' sign_up: subject: "%{name} נרשמו" digest: @@ -1343,7 +1448,7 @@ he: too_many_options: לא יכול להכיל יותר מ-%{max} פריטים preferences: other: שונות - posting_defaults: ברירות מחדל לחצרוץ + posting_defaults: ברירות מחדל לפוסטים public_timelines: פידים פומביים reactions: errors: @@ -1376,13 +1481,13 @@ he: remote_interaction: favourite: proceed: המשך לחיבוב - prompt: 'ברצונך לחבב חצרוץ זה:' + prompt: 'ברצונך לחבב פוסט זה:' reblog: proceed: המשיכו להדהוד - prompt: 'ברצונך להדהד חצרוץ זה:' + prompt: 'ברצונך להדהד פוסט זה:' reply: proceed: המשיבו לתגובה - prompt: 'ברצונך להשיב לחצרוץ זה:' + prompt: 'ברצונך להשיב לפוסט זה:' reports: errors: invalid_rules: לא מתייחס לכללים קבילים @@ -1488,7 +1593,7 @@ he: two: 'מכיל את ההאשתגיות האסורות: %{tags}' edited_at_html: נערך ב-%{date} errors: - in_reply_not_found: נראה שהחצרוץ שאת/ה מנסה להגיב לו לא קיים. + in_reply_not_found: נראה שהפוסט שאת/ה מנסה להגיב לו לא קיים. open_in_web: פתח ברשת over_character_limit: חריגה מגבול התווים של %{max} pin_errors: @@ -1558,7 +1663,7 @@ he: min_reblogs: שמור חצרוצים מהודהדים לפחות min_reblogs_hint: לא מוחק מי מחצרוציך שקיבלו לפחות את המספר הזה של הדהודים. להשאיר ריק כדי למחוק חצרוצים ללא קשר למספר ההדהודים שקיבלו stream_entries: - pinned: חצרוץ מוצמד + pinned: פוסט נעוץ reblogged: הודהד sensitive_content: תוכן רגיש strikes: diff --git a/config/locales/id.yml b/config/locales/id.yml index 2bf3e7d13..f14f4cf9f 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -97,11 +97,14 @@ id: avatar: Avatar by_domain: Domian change_email: + changed_msg: כתובת דוא"ל שונתה בהצלחה ! current_email: Email saat ini label: Ganti email new_email: Email baru submit: Ganti email title: Ganti email untuk %{username} + change_role: + changed_msg: תפקיד שונה בהצלחה ! confirm: Konfirmasi confirmed: Dikonfirmasi confirming: Mengkonfirmasi @@ -624,6 +627,8 @@ id: unresolved: Belum Terseleseikan updated_at: Diperbarui view_profile: Lihat profil + roles: + edit: ערכי את התפקיד של '%{name}' rules: add_new: Tambah aturan delete: Hapus diff --git a/config/locales/ja.yml b/config/locales/ja.yml index cb7a1526c..e4c7b6d11 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -620,6 +620,25 @@ ja: unresolved: 未解決 updated_at: 更新日時 view_profile: プロフィールを表示 + roles: + privileges: + manage_rules: ルールの管理 + manage_rules_description: ユーザーがサーバールールを変更できるようにします + manage_settings: 設定の管理 + manage_settings_description: ユーザーがサイト設定を変更できるようにします + manage_taxonomies_description: トレンドコンテンツの確認とハッシュタグの設定の更新 + manage_user_access: アクセス権を管理 + manage_user_access_description: 他のユーザーの2段階認証を無効にしたり、メールアドレスを変更したり、パスワードをリセットしたりすることができます。 + manage_users: ユーザーの管理 + manage_webhooks: Webhook の管理 + manage_webhooks_description: 管理者イベントのWebhookを設定できます。 + view_audit_log: 監査ログの表示 + view_audit_log_description: ユーザーがサーバー上で管理アクションの履歴を表示できるようにします + view_dashboard: ダッシュボードの表示 + view_dashboard_description: ユーザーがダッシュボードやさまざまなメトリクスにアクセスできるようにします + view_devops: 開発者 + view_devops_description: Sidekiq と pgHero ダッシュボードにアクセスできるようにします + title: 権限 rules: add_new: ルールを追加 delete: 削除 @@ -820,6 +839,7 @@ ja: enabled: アクティブ events: イベント new: 新しいwebhook + status: ステータス title: Webhooks webhook: Webhook admin_mailer: @@ -1076,12 +1096,16 @@ ja: errors: invalid_context: 対象がないか無効です index: + contexts: "%{contexts} のフィルター" delete: 削除 empty: フィルターはありません。 + expires_in: "%{distance} で期限切れ" + expires_on: 有効期限 %{date} keywords: other: "%{count}件のキーワード" title: フィルター new: + save: 新規フィルターを保存 title: 新規フィルターを追加 footer: developers: 開発者向け @@ -1198,6 +1222,8 @@ ja: copy_account_note_text: このユーザーは%{acct}から引っ越しました。これは以前のメモです。 notification_mailer: admin: + report: + subject: "%{name} がレポートを送信しました" sign_up: subject: "%{name}さんがサインアップしました" digest: diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 2d49d756d..9c20a8f8a 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -695,6 +695,11 @@ pl: edit: Edytuj rolę '%{name}' everyone: Domyślnie uprawnienia everyone_full_description_html: To jest rola podstawowa wpływająca na wszystkich użytkowników, nawet tych, którzy nie mają przypisanej roli. Wszystkie inne role dziedziczą z niej uprawnienia. + permissions_count: + few: "%{count} uprawnień" + many: "%{count} uprawnień" + one: "%{count} uprawnienie" + other: "%{count} uprawnień" privileges: administrator: Administrator administrator_description: Użytkownicy z tym uprawnieniem omijają każde uprawnienie @@ -725,11 +730,15 @@ pl: manage_taxonomies: Zarządzaj taksonomiami manage_taxonomies_description: Pozwala użytkownikom przeglądać najpopularniejsze treści i aktualizować ustawienia hasztagów manage_user_access: Zarządzaj dostępem użytkownika + manage_user_access_description: Pozwala użytkownikom na wyłączenie uwierzytelniania dwuskładnikowego innych użytkowników, zmianę adresu e-mail i zresetowanie hasła manage_users: Zarządzanie użytkownikami + manage_users_description: Pozwala użytkownikom na oglądanie szczegółów innych użytkowników i wykonywanie na ich kontach działań moderacyjnych manage_webhooks: Zarządzanie webhookami + manage_webhooks_description: Pozwala użytkownikom na konfigurację webhooków dla wydarzeń administracyjnych view_audit_log: Wyświetl dziennik zdarzeń view_audit_log_description: Pozwala użytkownikom zobaczyć historię działań administracyjnych na serwerze view_dashboard: Wyświetl panel + view_dashboard_description: Pozwala użytkownikom na dostęp do panelu i różnych metryk view_devops: Devops view_devops_description: Pozwala użytkownikom na dostęp do paneli Sidekiq i pgHero title: Role diff --git a/config/locales/simple_form.he.yml b/config/locales/simple_form.he.yml index c7fe6026c..fe0ed1a77 100644 --- a/config/locales/simple_form.he.yml +++ b/config/locales/simple_form.he.yml @@ -46,7 +46,7 @@ he: locale: שפת ממשק המשתמש, הדוא"ל וההתראות בדחיפה locked: מחייב אישור עוקבים באופן ידני. פרטיות ההודעות תהיה עוקבים-בלבד אלא אם יצוין אחרת password: נא להשתמש בלפחות 8 תוים - phrase: התאמה תמצא ללא תלות באזהרת תוכן בחצרוץ + phrase: התאמה תמצא ללא תלות באזהרת תוכן בפוסט scopes: לאיזה ממשק יורשה היישום לגשת. בבחירת תחום כללי, אין צורך לבחור ממשקים ספציפיים. setting_aggregate_reblogs: לא להראות הדהודים של חצרוצים שהודהדו לאחרונה (משפיע רק על הדהודים שהתקבלו לא מזמן) setting_always_send_emails: בדרך כלל התראות דוא"ל לא יישלחו בזמן שימוש פעיל במסטודון @@ -56,7 +56,7 @@ he: setting_display_media_show_all: גלה מדיה תמיד setting_hide_network: עוקבייך ונעקבייך יוסתרו בפרופילך setting_noindex: משפיע על הפרופיל הציבורי שלך ועמודי ההודעות - setting_show_application: היישום בו נעשה שימוש כדי לחצרץ יופיע בתצוגה המפורטת של החצרוץ + setting_show_application: היישום בו נעשה שימוש כדי לפרסם פוסט יופיע בתצוגה המפורטת של הפוסט setting_use_blurhash: הגראדיינטים מבוססים על תוכן התמונה המוסתרת, אבל מסתירים את כל הפרטים setting_use_pending_items: הסתר עדכוני פיד מאחורי קליק במקום לגלול את הפיד אוטומטית username: שם המשתמש שלך יהיה ייחודי ב-%{domain} @@ -68,6 +68,11 @@ he: with_dns_records: ייעשה נסיון למצוא את רשומות ה-DNS של דומיין נתון והתוצאות ייחסמו גם הן featured_tag: name: 'אולי תרצה/י להשתמש באחד מאלה:' + filters: + action: בחרו איזו פעולה לבצע כאשר פוסט מתאים למסנן + actions: + hide: הסתר את התוכן המסונן, כאילו לא היה קיים + warn: הסתר את התוכן המסונן מאחורי אזהרה עם כותרת המסנן form_challenge: current_password: את.ה נכנס. ת לאזור מאובטח imports: @@ -91,8 +96,16 @@ he: name: ניתן רק להחליף בין אותיות קטנות וגדולות, למשל כדי לשפר את הקריאות user: chosen_languages: אם פעיל, רק חצרוצים בשפות הנבחרות יוצגו לפידים הפומביים + role: התפקיד שולט על אילו הרשאות יש למשתמש + user_role: + color: צבע לתפקיד בממשק המשתמש, כ RGB בפורמט הקסדצימלי + highlighted: מאפשר נראות ציבורית של התפקיד + name: שם ציבורי של התפקיד, במידה והתפקיד מוגדר ככזה שמופיע כתג + permissions_as_keys: למשתמשים בתפקיד זה תהיה גישה ל... + position: תפקיד גבוה יותר מכריע בחילוקי דעות במצבים מסוימים. פעולות מסוימות יכולות להתבצע רק על תפקידים בדרגה נמוכה יותר webhook: events: בחר אירועים לשליחה + url: היעד שאליו יישלחו אירועים labels: account: fields: @@ -158,7 +171,7 @@ he: setting_auto_play_gif: ניגון אוטומטי של גיפים setting_boost_modal: הצגת דיאלוג אישור לפני הדהוד setting_crop_images: קטום תמונות בחצרוצים לא מורחבים ל 16 על 9 - setting_default_language: שפת חצרוץ + setting_default_language: שפת ברירת מחדל לפוסט setting_default_privacy: פרטיות ההודעות setting_default_sensitive: תמיד לתת סימון "רגיש" למדיה setting_delete_modal: להראות תיבת אישור לפני מחיקת חיצרוץ @@ -171,7 +184,7 @@ he: setting_hide_network: להחביא את הגרף החברתי שלך setting_noindex: לבקש הסתרה ממנועי חיפוש setting_reduce_motion: הפחתת תנועה בהנפשות - setting_show_application: הצגת הישום ששימש לחצרוץ + setting_show_application: הצגת הישום ששימש לפרסום הפוסט setting_system_font_ui: להשתמש בגופן ברירת המחדל של המערכת setting_theme: ערכת העיצוב של האתר setting_trends: הצגת הנושאים החמים @@ -180,6 +193,7 @@ he: setting_use_pending_items: מצב איטי severity: חומרה sign_in_token_attempt: קוד אבטחה + title: כותרת type: סוג יבוא username: שם משתמש username_or_email: שם משתמש או דוא"ל @@ -188,6 +202,10 @@ he: with_dns_records: לכלול רשומות MX וכתובות IP של הדומיין featured_tag: name: האשתג + filters: + actions: + hide: הסתרה כוללת + warn: הסתרה עם אזהרה interactions: must_be_follower: חסימת התראות משאינם עוקבים must_be_following: חסימת התראות משאינם נעקבים @@ -206,12 +224,12 @@ he: notification_emails: appeal: מישהם מערערים על החלטת מנהל קהילה digest: שליחת הודעות דוא"ל מסכמות - favourite: שליחת דוא"ל כשמחבבים חצרוץ + favourite: שליחת דוא"ל כשמחבבים פוסט follow: שליחת דוא"ל כשנוספות עוקבות follow_request: שליחת דוא"ל כשמבקשים לעקוב mention: שליחת דוא"ל כשפונים אלייך pending_account: נדרשת סקירה של חשבון חדש - reblog: שליחת דוא"ל כשמהדהדים חצרוץ שלך + reblog: שליחת דוא"ל כשמהדהדים פוסט שלך report: דו"ח חדש הוגש trending_tag: נושאים חמים חדשים דורשים סקירה rule: @@ -221,6 +239,17 @@ he: name: האשתג trendable: הרשה/י להאשתג זה להופיע תחת נושאים חמים usable: הרשה/י לחצרוצים להכיל האשתג זה + user: + role: תפקיד + user_role: + color: צבע תג + highlighted: הצג תפקיד כתג בפרופיל משתמש + name: שם + permissions_as_keys: הרשאות + position: עדיפות + webhook: + events: אירועים מאופשרים + url: כתובת URL של נקודת הקצה 'no': לא recommended: מומלץ required: diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index cde47dbd0..5e8ef67b4 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -91,6 +91,10 @@ ja: name: 視認性向上などのためにアルファベット大文字小文字の変更のみ行うことができます user: chosen_languages: 選択すると、選択した言語の投稿のみが公開タイムラインに表示されるようになります + user_role: + highlighted: これにより、役割が公開されます。 + name: 役割をバッジ表示する際の表示名 + permissions_as_keys: この役割を持つユーザーは次の機能にアクセスできます labels: account: fields: @@ -178,6 +182,7 @@ ja: setting_use_pending_items: 手動更新モード severity: 重大性 sign_in_token_attempt: セキュリティコード + title: タイトル type: インポートする項目 username: ユーザー名 username_or_email: ユーザー名またはメールアドレス @@ -219,6 +224,14 @@ ja: name: ハッシュタグ trendable: トレンドへの表示を許可する usable: 投稿への使用を許可する + user: + role: 役割 + user_role: + color: バッジの色 + highlighted: プロフィールに役割のバッジを表示する + name: 名前 + permissions_as_keys: 権限 + position: 優先度 webhook: events: 有効なイベント url: エンドポイントURL diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index 1be350dca..91a472b21 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -96,7 +96,12 @@ pl: name: Możesz zmieniać tylko wielkość liter, np. aby były bardziej widoczne user: chosen_languages: Jeżeli zaznaczone, tylko wpisy w wybranych językach będą wyświetlane na publicznych osiach czasu + role: Rola kontroluje uprawnienia użytkownika user_role: + color: Kolor używany dla roli w całym interfejsie użytkownika, wyrażony jako RGB w formacie szesnastkowym + highlighted: To sprawia, że rola jest widoczna publicznie + name: Publiczna nazwa roli, jeśli włączone jest wyświetlanie odznaki + permissions_as_keys: Użytkownicy z tą rolą będą mieli dostęp do... position: Wyższa rola decyduje o rozwiązywaniu konfliktów w pewnych sytuacjach. Niektóre działania mogą być wykonywane tylko na rolach z niższym priorytetem webhook: events: Wybierz zdarzenia do wysłania diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index b542eba54..b032295ba 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -81,7 +81,7 @@ th: text: นี่จะช่วยให้เราตรวจทานใบสมัครของคุณ ip_block: comment: ไม่จำเป็น จดจำเหตุผลที่คุณเพิ่มกฎนี้ - expires_in: ที่อยู่ IP เป็นทรัพยากร บางครั้งมีการแบ่งปันและมักเปลี่ยนมือ ด้วยเหตุผลนี้ จึงไม่แนะนำให้บล็อก IP + expires_in: ที่อยู่ IP เป็นทรัพยากรที่มีจำกัด บางครั้งที่อยู่ใช้ร่วมกันและมักเปลี่ยนมือ ด้วยเหตุผลนี้ การปิดกั้น IP แบบไม่มีกำหนดจึงไม่แนะนำ ip: ป้อนที่อยู่ IPv4 หรือ IPv6 คุณสามารถปิดกั้นทั้งช่วงได้โดยใช้ไวยากรณ์ CIDR ระวังอย่าล็อคตัวคุณเองออก! severities: no_access: ปิดกั้นการเข้าถึงทรัพยากรทั้งหมด @@ -91,21 +91,21 @@ th: text: อธิบายกฎหรือข้อกำหนดสำหรับผู้ใช้ในเซิร์ฟเวอร์นี้ พยายามทำให้กฎหรือข้อกำหนดสั้นและเรียบง่าย sessions: otp: 'ป้อนรหัสสองปัจจัยที่สร้างโดยแอปในโทรศัพท์ของคุณหรือใช้หนึ่งในรหัสกู้คืนของคุณ:' - webauthn: หากเป็นคีย์ USB อย่าลืมเสียบไว้ และหากจำเป็น ให้แตะคีย์นั้นไว้นะ + webauthn: หากกุญแจความปลอดภัยเป็นกุญแจ USB ตรวจสอบให้แน่ใจว่าได้เสียบกุญแจ และหากจำเป็น ให้แตะกุญแจ tag: name: คุณสามารถเปลี่ยนได้เฉพาะตัวพิมพ์ใหญ่เล็กของตัวอักษรเท่านั้น ตัวอย่างเช่น เพื่อทำให้ตัวอักษรอ่านได้ง่ายขึ้น user: chosen_languages: เมื่อกาเครื่องหมาย จะแสดงเฉพาะโพสต์ในภาษาที่เลือกในเส้นเวลาสาธารณะเท่านั้น - role: ควบคุมบทบาท ว่าผู้ใช้มีสิทธิใดบ้าง + role: บทบาทควบคุมว่าสิทธิอนุญาตใดที่ผู้ใช้มี user_role: - color: สีที่จะใช้สำหรับบทบาทตลอดทั้ง UI เป็น RGB ในรูปแบบฐานสิบหก - highlighted: ทำให้บทบาทนี้ปรากฏต่อสู่สาธารณะ - name: ชื่อสาธารณะของบทบาท หากกำหนดบทบาทให้แสดงเป็นตราสัญลักษณ์ - permissions_as_keys: ผู้ใช้ที่มีบทบาทนี้จะมีสิทธิ์เข้าถึง... - position: บทบาทที่สูงขึ้นอาจจะตัดสินใจแก้ไขข้อขัดแย้งในบางสถานการณ์ การดำเนินการบางอย่างสามารถทำได้เฉพาะกับบทบาทที่มีลำดับความสำคัญต่ำกว่า + color: สีที่ใช้สำหรับบทบาททั่วทั้ง UI เป็น RGB ในรูปแบบฐานสิบหก + highlighted: สิ่งนี้ทำให้บทบาทปรากฏเป็นสาธารณะ + name: ชื่อสาธารณะของบทบาท หากมีการตั้งบทบาทให้แสดงเป็นป้าย + permissions_as_keys: ผู้ใช้ที่มีบทบาทนี้จะสามารถเข้าถึง... + position: บทบาทที่สูงขึ้นตัดสินใจการแก้ปัญหาข้อขัดแย้งในบางสถานการณ์ การกระทำบางอย่างสามารถทำได้เฉพาะกับบทบาทที่มีระดับความสำคัญต่ำกว่าเท่านั้น webhook: events: เลือกเหตุการณ์ที่จะส่ง - url: กิจกรรมจะถูกส่งไปที่ + url: จะส่งเหตุการณ์ไปยัง labels: account: fields: @@ -137,7 +137,7 @@ th: starts_at: การเริ่มต้นเหตุการณ์ text: ประกาศ appeal: - text: อธิบายว่าเหตุใดจึงควรกลับคำตัดสินนี้ + text: อธิบายเหตุผลที่ควรกลับการตัดสินใจนี้ defaults: autofollow: เชิญให้ติดตามบัญชีของคุณ avatar: ภาพประจำตัว @@ -242,13 +242,13 @@ th: user: role: บทบาท user_role: - color: สีของตรา - highlighted: แสดงบทบาทเป็นเครื่องหมายบนโปรไฟล์ผู้ใช้ + color: สีป้าย + highlighted: แสดงบทบาทเป็นป้ายในโปรไฟล์ผู้ใช้ name: ชื่อ permissions_as_keys: สิทธิอนุญาต position: ระดับความสำคัญ webhook: - events: เปิดใช้งานอีเว้น + events: เหตุการณ์ที่เปิดใช้งาน url: URL ปลายทาง 'no': ไม่ recommended: แนะนำ diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml index d1124e3b6..f2e728d2a 100644 --- a/config/locales/simple_form.tr.yml +++ b/config/locales/simple_form.tr.yml @@ -102,6 +102,7 @@ tr: highlighted: Bu rolü herkese açık hale getirir name: Rolün, eğer rozet olarak görüntülenmesi ayarlandıysa kullanılacak herkese açık ismi permissions_as_keys: Bu role sahip kullanıcıların şunlara erişimi var... + position: Belirli durumlarda çatışmayı çözmek için daha yüksek rol belirleyicidir. Bazı eylemler ancak daha düşük öncelikteki rollere uygulanabilir webhook: events: Gönderilecek etkinlikleri seçin url: Olayların gönderileceği yer diff --git a/config/locales/th.yml b/config/locales/th.yml index e2f1db855..28ffeb462 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -22,7 +22,7 @@ th: federation_hint_html: ด้วยบัญชีที่ %{instance} คุณจะสามารถติดตามผู้คนในเซิร์ฟเวอร์ Mastodon และอื่น ๆ get_apps: ลองแอปมือถือ hosted_on: Mastodon ที่โฮสต์ที่ %{domain} - instance_actor_flash: 'บัญชีนี้เป็นนักแสดงเสมือนที่ใช้เพื่อเป็นตัวแทนของเซิร์ฟเวอร์เอง ไม่ใช่ผู้ใช้รายบุคคล แต่มันก็ถูกใช้เพื่อวัตถุประสงค์ในการรวมกลุ่มและไม่ควรถูกบล็อก เว้นแต่คุณต้องการบล็อกทั้งอินสแตนซ์นั้น ซึ่งในกรณีนี้คุณควรใช้บล็อกโดเมนนะ + instance_actor_flash: 'บัญชีนี้เป็นตัวดำเนินการเสมือนที่ใช้เพื่อเป็นตัวแทนของเซิร์ฟเวอร์เองและไม่ใช่ผู้ใช้รายบุคคลใด ๆ บัญชีใช้สำหรับวัตถุประสงค์ในการติดต่อกับภายนอกและไม่ควรได้รับการปิดกั้นเว้นแต่คุณต้องการปิดกั้นทั้งอินสแตนซ์ ในกรณีนี้คุณควรใช้การปิดกั้นโดเมน ' learn_more: เรียนรู้เพิ่มเติม @@ -49,7 +49,7 @@ th: silenced_title: เซิร์ฟเวอร์ที่จำกัดอยู่ suspended: 'จะไม่ประมวลผล จัดเก็บ หรือแลกเปลี่ยนข้อมูลจากเซิร์ฟเวอร์เหล่านี้ ทำให้การโต้ตอบหรือการสื่อสารใด ๆ กับผู้ใช้จากเซิร์ฟเวอร์เหล่านี้เป็นไปไม่ได้:' suspended_title: เซิร์ฟเวอร์ที่ระงับอยู่ - unavailable_content_html: โดยทั่วไปแล้ว Mastodon อนุญาตให้คุณดูเนื้อหาและโต้ตอบกับผู้ใช้งานจากเซิร์ฟเวอร์อื่นใน fediverse เหล่านี้เป็นข้อยกเว้นที่เกิดขึ้นบนเซิร์ฟเวอร์นี้โดยเฉพาะ + unavailable_content_html: โดยทั่วไป Mastodon อนุญาตให้คุณดูเนื้อหาจากและโต้ตอบกับผู้ใช้จากเซิร์ฟเวอร์อื่นใดในจักรวาลสหพันธ์ นี่คือข้อยกเว้นที่ทำขึ้นในเซิร์ฟเวอร์นี้โดยเฉพาะ user_count_after: other: ผู้ใช้ user_count_before: บ้านของ @@ -62,7 +62,7 @@ th: followers: other: ผู้ติดตาม following: กำลังติดตาม - instance_actor_flash: บัญชีนี้เป็นนักแสดงเสมือนที่ใช้เพื่อเป็นตัวแทนของเซิร์ฟเวอร์เอง แต่ก็ไม่ใช่ผู้ใช้รายบุคคล แต่มันถูกใช้เพื่อวัตถุประสงค์ของการรวมกลุ่มและไม่ควรถูกระงับ + instance_actor_flash: บัญชีนี้เป็นตัวดำเนินการเสมือนที่ใช้เพื่อเป็นตัวแทนของเซิร์ฟเวอร์เองและไม่ใช่ผู้ใช้รายบุคคลใด ๆ บัญชีใช้สำหรับวัตถุประสงค์ในการติดต่อกับภายนอกและไม่ควรได้รับการระงับ joined: เข้าร่วมเมื่อ %{date} last_active: ใช้งานล่าสุด link_verified_on: ตรวจสอบความเป็นเจ้าของของลิงก์นี้เมื่อ %{date} @@ -207,8 +207,8 @@ th: subscribe: บอกรับ suspend: ระงับ suspended: ระงับอยู่ - suspension_irreversible: ข้อมูลของบัญชีนี้ถูกลบไม่สามารถย้อนกลับได้ คุณสามารถระงับบัญชีเพื่อให้ใช้งานได้ แต่จะไม่กู้คืนข้อมูลใดๆทั้งสิ้น ที่เคยมีอยู่ก่อนหน้านี้ - suspension_reversible_hint_html: บัญชีถูกระงับ และข้อมูลจะถูกลบออกอย่างสมบูรณ์ในวันที่ %{date} ก่อนหน้านั้น บัญชีสามารถกู้คืนได้โดยไม่มีผลร้ายใดๆทั้งสิ้น ถ้าหากคุณต้องการลบข้อมูลของบัญชีทั้งหมดในทันที คุณสามารถทำได้ด้านล่างนี้ + suspension_irreversible: ลบข้อมูลของบัญชีนี้อย่างถาวรแล้ว คุณสามารถเลิกระงับบัญชีเพื่อทำให้บัญชีใช้งานได้แต่จะไม่กู้คืนข้อมูลใด ๆ ที่บัญชีมีก่อนหน้านี้ + suspension_reversible_hint_html: ระงับบัญชีแล้ว และจะเอาข้อมูลออกอย่างสมบูรณ์ใน %{date} จนกว่าจะถึงตอนนั้น สามารถกู้คืนบัญชีได้โดยไม่มีผลร้ายใด ๆ หากคุณต้องการเอาข้อมูลของบัญชีทั้งหมดออกในทันที คุณสามารถทำได้ด้านล่าง title: บัญชี unblock_email: เลิกปิดกั้นที่อยู่อีเมล unblocked_email_msg: เลิกปิดกั้นที่อยู่อีเมลของ %{username} สำเร็จ @@ -299,7 +299,7 @@ th: destroy_instance_html: "%{name} ได้ล้างข้อมูลโดเมน %{target}" destroy_ip_block_html: "%{name} ได้ลบกฎสำหรับ IP %{target}" destroy_status_html: "%{name} ได้เอาโพสต์โดย %{target} ออก" - destroy_unavailable_domain_html: "%{name} ได้พักการจัดส่งไปยังโดเมน %{target}" + destroy_unavailable_domain_html: "%{name} ได้ทำการจัดส่งไปยังโดเมน %{target} ต่อ" disable_2fa_user_html: "%{name} ได้ปิดใช้งานความต้องการสองปัจจัยสำหรับผู้ใช้ %{target}" disable_custom_emoji_html: "%{name} ได้ปิดใช้งานอีโมจิ %{target}" disable_sign_in_token_auth_user_html: "%{name} ได้ปิดใช้งานการรับรองความถูกต้องด้วยโทเคนอีเมลสำหรับ %{target}" @@ -419,8 +419,8 @@ th: destroyed_msg: เลิกทำการปิดกั้นโดเมนแล้ว domain: โดเมน edit: แก้ไขการปิดกั้นโดเมน - existing_domain_block: คุณได้กำหนดขีดจำกัดที่เข้มงวดขึ้นแล้วบน %{name} - existing_domain_block_html: คุณได้กำหนดขีดจำกัดที่เข้มงวดขึ้นใน %{name} แล้วคุณต้อง unblock ก่อน + existing_domain_block: คุณได้กำหนดขีดจำกัดที่เข้มงวดกว่าใน %{name} ไปแล้ว + existing_domain_block_html: คุณได้กำหนดขีดจำกัดที่เข้มงวดกว่าใน %{name} ไปแล้ว คุณจำเป็นต้อง เลิกปิดกั้น ก่อน new: create: สร้างการปิดกั้น hint: การปิดกั้นโดเมนจะไม่ป้องกันการสร้างรายการบัญชีในฐานข้อมูล แต่จะใช้วิธีการควบคุมที่เฉพาะเจาะจงกับบัญชีเหล่านั้นย้อนหลังและโดยอัตโนมัติ @@ -431,11 +431,11 @@ th: suspend: ระงับ title: การปิดกั้นโดเมนใหม่ obfuscate: ทำให้ชื่อโดเมนคลุมเครือ - obfuscate_hint: อาจมีผลทำให้ชื่อโดเมนสับสนบางส่วนในรายการหากเปิดใช้งานการโฆษณารายการข้อจำกัดของโดเมน + obfuscate_hint: ปิดบังชื่อโดเมนบางส่วนในรายการหากมีการเปิดใช้งานการประกาศรายการการจำกัดโดเมน private_comment: ความคิดเห็นส่วนตัว - private_comment_hint: แสดงความคิดเห็นเกี่ยวกับข้อจำกัดของโดเมนนี้สำหรับการใช้งานภายในโดยผู้ดูแล + private_comment_hint: ความคิดเห็นเกี่ยวกับการจำกัดโดเมนนี้สำหรับการใช้งานภายในโดยผู้ควบคุม public_comment: ความคิดเห็นสาธารณะ - public_comment_hint: แสดงความคิดเห็นเกี่ยวกับข้อจำกัดโดเมนนี้สำหรับบุคคลทั่วไป หากต้องการโฆษณารายการข้อจำกัดโดเมนเปิดใช้งานอยู่ + public_comment_hint: ความคิดเห็นเกี่ยวกับการจำกัดโดเมนนี้สำหรับสาธารณชนทั่วไป หากมีการเปิดใช้งานการประกาศรายการการจำกัดโดเมน reject_media: ปฏิเสธไฟล์สื่อ reject_media_hint: เอาไฟล์สื่อที่จัดเก็บไว้ในเซิร์ฟเวอร์ออกและปฏิเสธที่จะดาวน์โหลดไฟล์ใด ๆ ในอนาคต ไม่เกี่ยวข้องกับการระงับ reject_reports: ปฏิเสธรายงาน @@ -444,6 +444,8 @@ th: view: ดูการปิดกั้นโดเมน email_domain_blocks: add_new: เพิ่มใหม่ + attempts_over_week: + other: "%{count} ความพยายามในการลงทะเบียนในช่วงสัปดาห์ที่ผ่านมา" created_msg: ปิดกั้นโดเมนอีเมลสำเร็จ delete: ลบ dns: @@ -455,9 +457,11 @@ th: resolve: แปลงที่อยู่โดเมน title: ปิดกั้นโดเมนอีเมลใหม่ no_email_domain_block_selected: ไม่มีการเปลี่ยนแปลงการปิดกั้นโดเมนอีเมลเนื่องจากไม่มีการเลือก + resolved_dns_records_hint_html: ชื่อโดเมนจะแก้ไขเป็นโดเมน MX ต่อไปนี้ ซึ่งแต่ท้ายที่สุดแล้วคุณจะต้องรับผิดชอบในการยอมรับอีเมล การบล็อกโดเมน MX จะบล็อกการลงชื่อสมัครใช้จากที่อยู่อีเมลใดๆ ที่ใช้โดเมน MX เดียวกัน ถึงแม้ว่าชื่อโดเมนที่มองเห็นได้นั้นจะต่างกัน ระวังอย่าบล็อกผู้ให้บริการอีเมลรายใหญ่ resolved_through_html: แปลงที่อยู่ผ่าน %{domain} title: โดเมนอีเมลที่ปิดกั้นอยู่ follow_recommendations: + description_html: "จะทำตามคำแนะนำช่วยให้ผู้ใช้ใหม่ให้พบเนื้อหาที่น่าสนใจได้อย่างรวดเร็ว เมื่อผู้ใช้ไม่ได้โต้ตอบใดๆกับผู้อื่นมากพอที่จะสร้างคำแนะนำส่วนบุคคลให้กดติดตาม ขอแนะนำให้ใช้บัญชีเหล่านี้แทน พวกเขาจะคำนวณใหม่ทุกๆวันจากบัญชีต่างๆ ที่มีการมีส่วนร่วมล่าสุดและจำนวนผู้ติดตามในพื้นที่สูงสุดสำหรับภาษาที่คุณกำหนดไว้" language: สำหรับภาษา status: สถานะ suppress: ระงับคำแนะนำการติดตาม @@ -624,7 +628,22 @@ th: permissions_count: other: "%{count} สิทธิอนุญาต" privileges: + administrator: ผู้ดูแล + delete_user_data: ลบข้อมูลผู้ใช้ + invite_users: เชิญผู้ใช้ + manage_announcements: จัดการประกาศ + manage_appeals: จัดการการอุทธรณ์ + manage_blocks: จัดการการปิดกั้น + manage_custom_emojis: จัดการอีโมจิที่กำหนดเอง + manage_federation: จัดการการติดต่อกับภายนอก + manage_invites: จัดการคำเชิญ + manage_reports: จัดการรายงาน manage_roles: จัดการบทบาท + manage_rules: จัดการกฎ + manage_settings: จัดการการตั้งค่า + manage_user_access: จัดการการเข้าถึงของผู้ใช้ + manage_users: จัดการผู้ใช้ + view_devops_description: อนุญาตให้ผู้ใช้เข้าถึงแดชบอร์ด Sidekiq และ pgHero title: บทบาท rules: add_new: เพิ่มกฎ @@ -815,6 +834,8 @@ th: edit: แก้ไขปลายทาง enable: เปิดใช้งาน enabled: ใช้งานอยู่ + enabled_events: + other: "%{count} เหตุการณ์ที่เปิดใช้งาน" events: เหตุการณ์ status: สถานะ admin_mailer: diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 47a1ab29f..12b371bf3 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -668,6 +668,7 @@ zh-CN: manage_custom_emojis: 管理自定义表情 manage_custom_emojis_description: 允许用户管理服务器上的自定义表情 manage_federation: 管理联邦 + manage_federation_description: 允许用户阻止或允许使用其他域切换并控制可交付性 manage_invites: 管理邀请 manage_invites_description: 允许用户浏览和停用邀请链接 manage_reports: 管理报告 @@ -678,6 +679,10 @@ zh-CN: manage_rules_description: 允许用户更改服务器规则 manage_settings: 管理设置 manage_settings_description: 允许用户更改站点设置 + manage_taxonomies: 管理分类法 + manage_taxonomies_description: 允许用户查看热门内容并更新标签设置 + manage_user_access: 管理访问 + manage_user_access_description: 允许用户禁用其他用户的双重身份验证, 更改他们的电子邮件地址, 并重置他们的密码 manage_users: 管理用户 manage_users_description: 允许用户查看其他用户信息并对他们执行审核操作 manage_webhooks: 管理网钩 @@ -686,6 +691,8 @@ zh-CN: view_audit_log_description: 允许用户在服务器上查看管理操作历史 view_dashboard: 查看仪表板 view_dashboard_description: 允许用户访问仪表盘和各种指标 + view_devops: 开发运维 + title: 角色 rules: add_new: 添加规则 delete: 删除 @@ -881,10 +888,20 @@ zh-CN: empty: 你尚未定义任何警告预设。 title: 管理预设警告 webhooks: + add_new: 端点 delete: 删除 + description_html: "webhook 使Mastodon能够推送 关于所选事件的实时通知 到您自己的应用程序。 所以您的应用程序可以自动触发反应 。" disable: 禁用 disabled: 已禁用 + empty: 您尚未配置任何Web 钩子端点。 enable: 启用 + enabled: 活跃 + enabled_events: + other: "%{count} 启用的事件" + events: 事件 + new: 新建网钩 + rotate_secret: 旋转密钥 + secret: 签名密钥 status: 状态 title: 网钩 webhook: 网钩 @@ -1144,10 +1161,14 @@ zh-CN: keywords: 关键词 title: 编辑过滤器 errors: + deprecated_api_multiple_keywords: 这些参数不能从此应用程序更改,因为它们应用于一个以上的过滤关键字。 使用较新的应用程序或网页界面。 invalid_context: 过滤器场景没有或无效 index: + contexts: 在 %{contexts} 中的过滤器 delete: 删除 empty: 你没有过滤器。 + expires_in: 在 %{distance} 后过期 + expires_on: "%{date} 后到期" keywords: other: "%{count} 关键词" title: 过滤器 From 47bbd53eca6c91c631725e40f29c91daafaa13ea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Aug 2022 15:14:17 +0900 Subject: [PATCH 270/652] Bump @babel/preset-env from 7.18.9 to 7.18.10 (#18915) Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.18.9 to 7.18.10. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.10/packages/babel-preset-env) --- updated-dependencies: - dependency-name: "@babel/preset-env" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 162 ++++++++++++++++++++++++++++++++++++++------------- 2 files changed, 124 insertions(+), 40 deletions(-) diff --git a/package.json b/package.json index 3f777ee75..f41ea3feb 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "@babel/plugin-proposal-decorators": "^7.18.9", "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.18.9", - "@babel/preset-env": "^7.18.9", + "@babel/preset-env": "^7.18.10", "@babel/preset-react": "^7.18.6", "@babel/runtime": "^7.18.9", "@gamestdio/websocket": "^0.3.2", diff --git a/yarn.lock b/yarn.lock index d054daf02..6f07eef04 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,7 +23,7 @@ dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.18.8": +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8": version "7.18.8" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d" integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ== @@ -58,6 +58,15 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.0" +"@babel/generator@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.10.tgz#794f328bfabdcbaf0ebf9bf91b5b57b61fa77a2a" + integrity sha512-0+sW7e3HjQbiHbj1NeU/vN8ornohYlacAfZIaXhdoGweQqgcNy69COVciYYqEXJ/v+9OBA7Frxm4CVAuNqKeNA== + dependencies: + "@babel/types" "^7.18.10" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" + "@babel/generator@^7.18.9", "@babel/generator@^7.7.2": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.9.tgz#68337e9ea8044d6ddc690fb29acae39359cca0a5" @@ -90,7 +99,7 @@ "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.18.9": +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf" integrity sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg== @@ -135,6 +144,18 @@ resolve "^1.14.2" semver "^6.1.2" +"@babel/helper-define-polyfill-provider@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz#bd10d0aca18e8ce012755395b05a79f45eca5073" + integrity sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg== + dependencies: + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + "@babel/helper-environment-visitor@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz#b7eee2b5b9d70602e59d1a6cad7dd24de7ca6cd7" @@ -225,6 +246,16 @@ "@babel/helper-wrap-function" "^7.18.6" "@babel/types" "^7.18.6" +"@babel/helper-remap-async-to-generator@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" + integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-wrap-function" "^7.18.9" + "@babel/types" "^7.18.9" + "@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz#1092e002feca980fbbb0bd4d51b74a65c6a500e6" @@ -257,6 +288,11 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-string-parser@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56" + integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== + "@babel/helper-validator-identifier@^7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" @@ -282,6 +318,16 @@ "@babel/traverse" "^7.18.6" "@babel/types" "^7.18.6" +"@babel/helper-wrap-function@^7.18.9": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.18.10.tgz#a7fcd3ab9b1be4c9b52cf7d7fdc1e88c2ce93396" + integrity sha512-95NLBP59VWdfK2lyLKe6eTMq9xg+yWKzxzxbJ1wcYNi1Auz200+83fMDADjRxBvc2QQor5zja2yTQzXGhk2GtQ== + dependencies: + "@babel/helper-function-name" "^7.18.9" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.18.10" + "@babel/types" "^7.18.10" + "@babel/helpers@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.9.tgz#4bef3b893f253a1eced04516824ede94dcfe7ff9" @@ -314,6 +360,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.9.tgz#f2dde0c682ccc264a9a8595efd030a5cc8fd2539" integrity sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg== +"@babel/parser@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.10.tgz#94b5f8522356e69e8277276adf67ed280c90ecc1" + integrity sha512-TYk3OA0HKL6qNryUayb5UUEhM/rkOQozIBEA5ITXh5DWrSp0TlUQXMyZmnWxG/DizSWBeeQ0Zbc5z8UGaaqoeg== + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" @@ -330,14 +381,14 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-proposal-optional-chaining" "^7.18.9" -"@babel/plugin-proposal-async-generator-functions@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz#aedac81e6fc12bb643374656dd5f2605bf743d17" - integrity sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w== +"@babel/plugin-proposal-async-generator-functions@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz#85ea478c98b0095c3e4102bff3b67d306ed24952" + integrity sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew== dependencies: - "@babel/helper-environment-visitor" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-remap-async-to-generator" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-remap-async-to-generator" "^7.18.9" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-proposal-class-properties@^7.18.6": @@ -907,12 +958,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-unicode-escapes@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz#0d01fb7fb2243ae1c033f65f6e3b4be78db75f27" - integrity sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw== +"@babel/plugin-transform-unicode-escapes@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" + integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-unicode-regex@^7.18.6": version "7.18.6" @@ -922,10 +973,10 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/preset-env@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.9.tgz#9b3425140d724fbe590322017466580844c7eaff" - integrity sha512-75pt/q95cMIHWssYtyfjVlvI+QEZQThQbKvR9xH+F/Agtw/s4Wfc2V9Bwd/P39VtixB7oWxGdH4GteTTwYJWMg== +"@babel/preset-env@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.10.tgz#83b8dfe70d7eea1aae5a10635ab0a5fe60dfc0f4" + integrity sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA== dependencies: "@babel/compat-data" "^7.18.8" "@babel/helper-compilation-targets" "^7.18.9" @@ -933,7 +984,7 @@ "@babel/helper-validator-option" "^7.18.6" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-async-generator-functions" "^7.18.6" + "@babel/plugin-proposal-async-generator-functions" "^7.18.10" "@babel/plugin-proposal-class-properties" "^7.18.6" "@babel/plugin-proposal-class-static-block" "^7.18.6" "@babel/plugin-proposal-dynamic-import" "^7.18.6" @@ -993,13 +1044,13 @@ "@babel/plugin-transform-sticky-regex" "^7.18.6" "@babel/plugin-transform-template-literals" "^7.18.9" "@babel/plugin-transform-typeof-symbol" "^7.18.9" - "@babel/plugin-transform-unicode-escapes" "^7.18.6" + "@babel/plugin-transform-unicode-escapes" "^7.18.10" "@babel/plugin-transform-unicode-regex" "^7.18.6" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.18.9" - babel-plugin-polyfill-corejs2 "^0.3.1" - babel-plugin-polyfill-corejs3 "^0.5.2" - babel-plugin-polyfill-regenerator "^0.3.1" + "@babel/types" "^7.18.10" + babel-plugin-polyfill-corejs2 "^0.3.2" + babel-plugin-polyfill-corejs3 "^0.5.3" + babel-plugin-polyfill-regenerator "^0.4.0" core-js-compat "^3.22.1" semver "^6.3.0" @@ -1048,6 +1099,15 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/template@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" + integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.18.10" + "@babel/types" "^7.18.10" + "@babel/template@^7.18.6", "@babel/template@^7.3.3": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.6.tgz#1283f4993e00b929d6e2d3c72fdc9168a2977a31" @@ -1073,11 +1133,28 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.9.tgz#7148d64ba133d8d73a41b3172ac4b83a1452205f" - integrity sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg== +"@babel/traverse@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.10.tgz#37ad97d1cb00efa869b91dd5d1950f8a6cf0cb08" + integrity sha512-J7ycxg0/K9XCtLyHf0cz2DqDihonJeIo+z+HEdRe9YuT8TY4A66i+Ab2/xZCEW7Ro60bPCBBfqqboHSamoV3+g== dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.10" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.18.10" + "@babel/types" "^7.18.10" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.10.tgz#4908e81b6b339ca7c6b7a555a5fc29446f26dde6" + integrity sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ== + dependencies: + "@babel/helper-string-parser" "^7.18.10" "@babel/helper-validator-identifier" "^7.18.6" to-fast-properties "^2.0.0" @@ -2554,21 +2631,21 @@ babel-plugin-macros@^3.0.1: cosmiconfig "^7.0.0" resolve "^1.19.0" -babel-plugin-polyfill-corejs2@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" - integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== +babel-plugin-polyfill-corejs2@^0.3.1, babel-plugin-polyfill-corejs2@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz#e4c31d4c89b56f3cf85b92558954c66b54bd972d" + integrity sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q== dependencies: - "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.3.1" + "@babel/compat-data" "^7.17.7" + "@babel/helper-define-polyfill-provider" "^0.3.2" semver "^6.1.1" -babel-plugin-polyfill-corejs3@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" - integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== +babel-plugin-polyfill-corejs3@^0.5.2, babel-plugin-polyfill-corejs3@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz#d7e09c9a899079d71a8b670c6181af56ec19c5c7" + integrity sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw== dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.1" + "@babel/helper-define-polyfill-provider" "^0.3.2" core-js-compat "^3.21.0" babel-plugin-polyfill-regenerator@^0.3.1: @@ -2578,6 +2655,13 @@ babel-plugin-polyfill-regenerator@^0.3.1: dependencies: "@babel/helper-define-polyfill-provider" "^0.3.1" +babel-plugin-polyfill-regenerator@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz#8f51809b6d5883e07e71548d75966ff7635527fe" + integrity sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.2" + babel-plugin-preval@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/babel-plugin-preval/-/babel-plugin-preval-5.1.0.tgz#6efb89bf6b97af592cd1400c6df49c0e9e6ab027" From 6897f70119fa5bc30da37450cf4f46bfab6eb0eb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Aug 2022 15:14:41 +0900 Subject: [PATCH 271/652] Bump @babel/plugin-proposal-decorators from 7.18.9 to 7.18.10 (#18917) Bumps [@babel/plugin-proposal-decorators](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-proposal-decorators) from 7.18.9 to 7.18.10. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.10/packages/babel-plugin-proposal-decorators) --- updated-dependencies: - dependency-name: "@babel/plugin-proposal-decorators" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index f41ea3feb..ab7586e39 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "private": true, "dependencies": { "@babel/core": "^7.18.9", - "@babel/plugin-proposal-decorators": "^7.18.9", + "@babel/plugin-proposal-decorators": "^7.18.10", "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.18.9", "@babel/preset-env": "^7.18.10", diff --git a/yarn.lock b/yarn.lock index 6f07eef04..da9d335ae 100644 --- a/yarn.lock +++ b/yarn.lock @@ -408,10 +408,10 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-proposal-decorators@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.18.9.tgz#d09d41ffc74af8499d2ac706ed0dbd5474711665" - integrity sha512-KD7zDNaD14CRpjQjVbV4EnH9lsKYlcpUrhZH37ei2IY+AlXrfAPy5pTmRUE4X6X1k8EsKXPraykxeaogqQvSGA== +"@babel/plugin-proposal-decorators@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.18.10.tgz#788650d01e518a8a722eb8b3055dd9d73ecb7a35" + integrity sha512-wdGTwWF5QtpTY/gbBtQLAiCnoxfD4qMbN87NYZle1dOZ9Os8Y6zXcKrIaOU8W+TIvFUWVGG9tUgNww3CjXRVVw== dependencies: "@babel/helper-create-class-features-plugin" "^7.18.9" "@babel/helper-plugin-utils" "^7.18.9" From d53152baa4c8f2be1d884cebc8776ee1468bbbdb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Aug 2022 15:21:06 +0900 Subject: [PATCH 272/652] Bump @babel/plugin-transform-runtime from 7.18.9 to 7.18.10 (#18913) Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.18.9 to 7.18.10. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.10/packages/babel-plugin-transform-runtime) --- updated-dependencies: - dependency-name: "@babel/plugin-transform-runtime" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 75 +++++++++++++++++++--------------------------------- 2 files changed, 28 insertions(+), 49 deletions(-) diff --git a/package.json b/package.json index ab7586e39..945774f9a 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "@babel/core": "^7.18.9", "@babel/plugin-proposal-decorators": "^7.18.10", "@babel/plugin-transform-react-inline-elements": "^7.18.6", - "@babel/plugin-transform-runtime": "^7.18.9", + "@babel/plugin-transform-runtime": "^7.18.10", "@babel/preset-env": "^7.18.10", "@babel/preset-react": "^7.18.6", "@babel/runtime": "^7.18.9", diff --git a/yarn.lock b/yarn.lock index da9d335ae..097f58254 100644 --- a/yarn.lock +++ b/yarn.lock @@ -99,7 +99,7 @@ "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9": +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf" integrity sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg== @@ -130,20 +130,6 @@ "@babel/helper-annotate-as-pure" "^7.18.6" regexpu-core "^5.1.0" -"@babel/helper-define-polyfill-provider@^0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665" - integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA== - dependencies: - "@babel/helper-compilation-targets" "^7.13.0" - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/traverse" "^7.13.0" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - "@babel/helper-define-polyfill-provider@^0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz#bd10d0aca18e8ce012755395b05a79f45eca5073" @@ -231,7 +217,7 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz#4b8aea3b069d8cb8a72cdfe28ddf5ceca695ef2f" integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w== @@ -910,16 +896,16 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-runtime@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.9.tgz#d9e4b1b25719307bfafbf43065ed7fb3a83adb8f" - integrity sha512-wS8uJwBt7/b/mzE13ktsJdmS4JP/j7PQSaADtnb4I2wL0zK51MQ0pmF8/Jy0wUIS96fr+fXT6S/ifiPXnvrlSg== +"@babel/plugin-transform-runtime@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz#37d14d1fa810a368fd635d4d1476c0154144a96f" + integrity sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ== dependencies: "@babel/helper-module-imports" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.9" - babel-plugin-polyfill-corejs2 "^0.3.1" - babel-plugin-polyfill-corejs3 "^0.5.2" - babel-plugin-polyfill-regenerator "^0.3.1" + babel-plugin-polyfill-corejs2 "^0.3.2" + babel-plugin-polyfill-corejs3 "^0.5.3" + babel-plugin-polyfill-regenerator "^0.4.0" semver "^6.3.0" "@babel/plugin-transform-shorthand-properties@^7.18.6": @@ -1117,22 +1103,6 @@ "@babel/parser" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/traverse@^7.13.0", "@babel/traverse@^7.18.6", "@babel/traverse@^7.18.9", "@babel/traverse@^7.7.2": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.9.tgz#deeff3e8f1bad9786874cb2feda7a2d77a904f98" - integrity sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.9" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.18.9" - "@babel/types" "^7.18.9" - debug "^4.1.0" - globals "^11.1.0" - "@babel/traverse@^7.18.10": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.10.tgz#37ad97d1cb00efa869b91dd5d1950f8a6cf0cb08" @@ -1149,6 +1119,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.18.6", "@babel/traverse@^7.18.9", "@babel/traverse@^7.7.2": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.9.tgz#deeff3e8f1bad9786874cb2feda7a2d77a904f98" + integrity sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.9" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.18.9" + "@babel/types" "^7.18.9" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.10.tgz#4908e81b6b339ca7c6b7a555a5fc29446f26dde6" @@ -2631,7 +2617,7 @@ babel-plugin-macros@^3.0.1: cosmiconfig "^7.0.0" resolve "^1.19.0" -babel-plugin-polyfill-corejs2@^0.3.1, babel-plugin-polyfill-corejs2@^0.3.2: +babel-plugin-polyfill-corejs2@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz#e4c31d4c89b56f3cf85b92558954c66b54bd972d" integrity sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q== @@ -2640,7 +2626,7 @@ babel-plugin-polyfill-corejs2@^0.3.1, babel-plugin-polyfill-corejs2@^0.3.2: "@babel/helper-define-polyfill-provider" "^0.3.2" semver "^6.1.1" -babel-plugin-polyfill-corejs3@^0.5.2, babel-plugin-polyfill-corejs3@^0.5.3: +babel-plugin-polyfill-corejs3@^0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz#d7e09c9a899079d71a8b670c6181af56ec19c5c7" integrity sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw== @@ -2648,13 +2634,6 @@ babel-plugin-polyfill-corejs3@^0.5.2, babel-plugin-polyfill-corejs3@^0.5.3: "@babel/helper-define-polyfill-provider" "^0.3.2" core-js-compat "^3.21.0" -babel-plugin-polyfill-regenerator@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" - integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.1" - babel-plugin-polyfill-regenerator@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz#8f51809b6d5883e07e71548d75966ff7635527fe" From c23a0a3ebc6fcbcc930a44711f2fc26c97452123 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Aug 2022 15:31:15 +0900 Subject: [PATCH 273/652] Bump @babel/core from 7.18.9 to 7.18.10 (#18914) Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.18.9 to 7.18.10. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.10/packages/babel-core) --- updated-dependencies: - dependency-name: "@babel/core" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 65 +++++++++++----------------------------------------- 2 files changed, 14 insertions(+), 53 deletions(-) diff --git a/package.json b/package.json index 945774f9a..90f7af384 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ }, "private": true, "dependencies": { - "@babel/core": "^7.18.9", + "@babel/core": "^7.18.10", "@babel/plugin-proposal-decorators": "^7.18.10", "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.18.10", diff --git a/yarn.lock b/yarn.lock index 097f58254..1369a9b32 100644 --- a/yarn.lock +++ b/yarn.lock @@ -28,21 +28,21 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d" integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ== -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.9", "@babel/core@^7.7.2": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.9.tgz#805461f967c77ff46c74ca0460ccf4fe933ddd59" - integrity sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g== +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.10", "@babel/core@^7.7.2": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.10.tgz#39ad504991d77f1f3da91be0b8b949a5bc466fb8" + integrity sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.9" + "@babel/generator" "^7.18.10" "@babel/helper-compilation-targets" "^7.18.9" "@babel/helper-module-transforms" "^7.18.9" "@babel/helpers" "^7.18.9" - "@babel/parser" "^7.18.9" - "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" + "@babel/parser" "^7.18.10" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.18.10" + "@babel/types" "^7.18.10" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -58,7 +58,7 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.0" -"@babel/generator@^7.18.10": +"@babel/generator@^7.18.10", "@babel/generator@^7.7.2": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.10.tgz#794f328bfabdcbaf0ebf9bf91b5b57b61fa77a2a" integrity sha512-0+sW7e3HjQbiHbj1NeU/vN8ornohYlacAfZIaXhdoGweQqgcNy69COVciYYqEXJ/v+9OBA7Frxm4CVAuNqKeNA== @@ -67,15 +67,6 @@ "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" -"@babel/generator@^7.18.9", "@babel/generator@^7.7.2": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.9.tgz#68337e9ea8044d6ddc690fb29acae39359cca0a5" - integrity sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug== - dependencies: - "@babel/types" "^7.18.9" - "@jridgewell/gen-mapping" "^0.3.2" - jsesc "^2.5.1" - "@babel/helper-annotate-as-pure@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" @@ -341,12 +332,7 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.6", "@babel/parser@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.9.tgz#f2dde0c682ccc264a9a8595efd030a5cc8fd2539" - integrity sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg== - -"@babel/parser@^7.18.10": +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.10.tgz#94b5f8522356e69e8277276adf67ed280c90ecc1" integrity sha512-TYk3OA0HKL6qNryUayb5UUEhM/rkOQozIBEA5ITXh5DWrSp0TlUQXMyZmnWxG/DizSWBeeQ0Zbc5z8UGaaqoeg== @@ -1085,7 +1071,7 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.18.10": +"@babel/template@^7.18.10", "@babel/template@^7.18.6", "@babel/template@^7.3.3": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== @@ -1094,16 +1080,7 @@ "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/template@^7.18.6", "@babel/template@^7.3.3": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.6.tgz#1283f4993e00b929d6e2d3c72fdc9168a2977a31" - integrity sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.18.6" - "@babel/types" "^7.18.6" - -"@babel/traverse@^7.18.10": +"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.6", "@babel/traverse@^7.18.9", "@babel/traverse@^7.7.2": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.10.tgz#37ad97d1cb00efa869b91dd5d1950f8a6cf0cb08" integrity sha512-J7ycxg0/K9XCtLyHf0cz2DqDihonJeIo+z+HEdRe9YuT8TY4A66i+Ab2/xZCEW7Ro60bPCBBfqqboHSamoV3+g== @@ -1119,22 +1096,6 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/traverse@^7.18.6", "@babel/traverse@^7.18.9", "@babel/traverse@^7.7.2": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.9.tgz#deeff3e8f1bad9786874cb2feda7a2d77a904f98" - integrity sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.9" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.18.9" - "@babel/types" "^7.18.9" - debug "^4.1.0" - globals "^11.1.0" - "@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.10.tgz#4908e81b6b339ca7c6b7a555a5fc29446f26dde6" From 2aba0a98f887c510333661de6fca430be3b79dab Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Aug 2022 15:31:47 +0900 Subject: [PATCH 274/652] Bump sidekiq-unique-jobs from 7.1.26 to 7.1.27 (#18912) Bumps [sidekiq-unique-jobs](https://github.com/mhenrixon/sidekiq-unique-jobs) from 7.1.26 to 7.1.27. - [Release notes](https://github.com/mhenrixon/sidekiq-unique-jobs/releases) - [Changelog](https://github.com/mhenrixon/sidekiq-unique-jobs/blob/main/CHANGELOG.md) - [Commits](https://github.com/mhenrixon/sidekiq-unique-jobs/compare/v7.1.26...v7.1.27) --- updated-dependencies: - dependency-name: sidekiq-unique-jobs dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 6130ea07f..250f857cd 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -612,7 +612,7 @@ GEM rufus-scheduler (~> 3.2) sidekiq (>= 4) tilt (>= 1.4.0) - sidekiq-unique-jobs (7.1.26) + sidekiq-unique-jobs (7.1.27) brpoplpush-redis_script (> 0.1.1, <= 2.0.0) concurrent-ruby (~> 1.0, >= 1.0.5) sidekiq (>= 5.0, < 8.0) From 79ccc1575fba826b82dc234e74c38d9bd4e938dc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Aug 2022 15:34:00 +0900 Subject: [PATCH 275/652] Bump pkg-config from 1.4.7 to 1.4.9 (#18916) Bumps [pkg-config](https://github.com/ruby-gnome/pkg-config) from 1.4.7 to 1.4.9. - [Release notes](https://github.com/ruby-gnome/pkg-config/releases) - [Changelog](https://github.com/ruby-gnome/pkg-config/blob/master/NEWS) - [Commits](https://github.com/ruby-gnome/pkg-config/compare/1.4.7...1.4.9) --- updated-dependencies: - dependency-name: pkg-config dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 250f857cd..66805010e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -450,7 +450,7 @@ GEM pg (1.4.2) pghero (2.8.3) activerecord (>= 5) - pkg-config (1.4.7) + pkg-config (1.4.9) posix-spawn (0.3.15) premailer (1.14.2) addressable From 47066bb26a16e0d3913a5035364afc19b1962fde Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Aug 2022 15:37:04 +0900 Subject: [PATCH 276/652] Bump oj from 3.13.18 to 3.13.19 (#18911) Bumps [oj](https://github.com/ohler55/oj) from 3.13.18 to 3.13.19. - [Release notes](https://github.com/ohler55/oj/releases) - [Changelog](https://github.com/ohler55/oj/blob/develop/CHANGELOG.md) - [Commits](https://github.com/ohler55/oj/compare/v3.13.18...v3.13.19) --- updated-dependencies: - dependency-name: oj dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 66805010e..dcec4e72d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -413,7 +413,7 @@ GEM concurrent-ruby (~> 1.0, >= 1.0.2) sidekiq (>= 3.5) statsd-ruby (~> 1.4, >= 1.4.0) - oj (3.13.18) + oj (3.13.19) omniauth (1.9.1) hashie (>= 3.4.6) rack (>= 1.6.2, < 3) From e34135270023f0ca1433595160cb385481071356 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Aug 2022 15:46:33 +0900 Subject: [PATCH 277/652] Bump json-ld from 3.2.0 to 3.2.2 (#18932) Bumps [json-ld](https://github.com/ruby-rdf/json-ld) from 3.2.0 to 3.2.2. - [Release notes](https://github.com/ruby-rdf/json-ld/releases) - [Commits](https://github.com/ruby-rdf/json-ld/compare/3.2.0...3.2.2) --- updated-dependencies: - dependency-name: json-ld dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index dcec4e72d..f3e995453 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -327,7 +327,7 @@ GEM activesupport (>= 4.2) aes_key_wrap bindata - json-ld (3.2.0) + json-ld (3.2.2) htmlentities (~> 4.3) json-canonicalization (~> 0.3) link_header (~> 0.0, >= 0.0.8) @@ -527,7 +527,7 @@ GEM thor (~> 1.0) rainbow (3.1.1) rake (13.0.6) - rdf (3.2.3) + rdf (3.2.8) link_header (~> 0.0, >= 0.0.8) rdf-normalize (0.5.0) rdf (~> 3.2) From 4e830af31c4dee239068b31295c149a4094c4548 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Aug 2022 15:47:17 +0900 Subject: [PATCH 278/652] Bump xorcist from 1.1.2 to 1.1.3 (#18936) Bumps [xorcist](https://github.com/fny/xorcist) from 1.1.2 to 1.1.3. - [Release notes](https://github.com/fny/xorcist/releases) - [Commits](https://github.com/fny/xorcist/compare/v1.1.2...v1.1.3) --- updated-dependencies: - dependency-name: xorcist dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index f3e995453..49aa15650 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -717,7 +717,7 @@ GEM websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) wisper (2.0.1) - xorcist (1.1.2) + xorcist (1.1.3) xpath (3.2.0) nokogiri (~> 1.8) zeitwerk (2.6.0) From 0a2433948bac34af277c21b474e567475bf995df Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Aug 2022 16:01:40 +0900 Subject: [PATCH 279/652] Bump sidekiq from 6.5.1 to 6.5.3 (#18934) Bumps [sidekiq](https://github.com/mperham/sidekiq) from 6.5.1 to 6.5.3. - [Release notes](https://github.com/mperham/sidekiq/releases) - [Changelog](https://github.com/mperham/sidekiq/blob/main/Changes.md) - [Commits](https://github.com/mperham/sidekiq/compare/v6.5.1...v6.5.3) --- updated-dependencies: - dependency-name: sidekiq dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 49aa15650..486c772d3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -601,10 +601,10 @@ GEM railties (>= 4.0.0) securecompare (1.0.0) semantic_range (3.0.0) - sidekiq (6.5.1) + sidekiq (6.5.3) connection_pool (>= 2.2.2) rack (~> 2.0) - redis (>= 4.2.0) + redis (>= 4.5.0) sidekiq-bulk (0.2.0) sidekiq sidekiq-scheduler (4.0.2) From 041f87471f1058a06a1c454a13e31bbd38a96a33 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Aug 2022 16:28:09 +0900 Subject: [PATCH 280/652] Bump webmock from 3.14.0 to 3.17.0 (#18935) Bumps [webmock](https://github.com/bblimke/webmock) from 3.14.0 to 3.17.0. - [Release notes](https://github.com/bblimke/webmock/releases) - [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md) - [Commits](https://github.com/bblimke/webmock/compare/v3.14.0...v3.17.0) --- updated-dependencies: - dependency-name: webmock dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 1690f92df..d21459fcc 100644 --- a/Gemfile +++ b/Gemfile @@ -119,7 +119,7 @@ group :test do gem 'rails-controller-testing', '~> 1.0' gem 'rspec-sidekiq', '~> 3.1' gem 'simplecov', '~> 0.21', require: false - gem 'webmock', '~> 3.14' + gem 'webmock', '~> 3.17' gem 'rspec_junit_formatter', '~> 0.5' end diff --git a/Gemfile.lock b/Gemfile.lock index 486c772d3..03c0f297b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -701,7 +701,7 @@ GEM webfinger (1.2.0) activesupport httpclient (>= 2.4) - webmock (3.14.0) + webmock (3.17.0) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) @@ -844,7 +844,7 @@ DEPENDENCIES twitter-text (~> 3.1.0) tzinfo-data (~> 1.2022) webauthn (~> 3.0.0.alpha1) - webmock (~> 3.14) + webmock (~> 3.17) webpacker (~> 5.4) webpush (~> 0.3) xorcist (~> 1.1) From 7ccf7a73f1c47a8c03712c39f7c591e837cf6d08 Mon Sep 17 00:00:00 2001 From: Alex Nordlund Date: Wed, 10 Aug 2022 17:12:58 +0200 Subject: [PATCH 281/652] Fix broken dependencies in helm chart and allow using existing secrets in the chart (#18941) * Add ability to specify an existing Secret (#18139) Closes #18139 * Allow using secrets with external postgres * Upgrade CronJob to batch/v1 * Allow using redis.auth.existingSecret * Helmignore mastodon-*.tgz for easy local development * Upgrade helm dependencies * Upgrade postgresql to 11 * Allow putting SMTP password into a secret * Add optional login to SMTP secret This to allow setting LOGIN either in values.yaml or in the secret. * Switch to bitnami charts full archive This prevents older versions from disappearing, see https://github.com/bitnami/charts/issues/10539 for full context. Co-authored-by: Ted Tramonte --- chart/.helmignore | 1 + chart/Chart.lock | 16 ++-- chart/Chart.yaml | 14 +-- chart/templates/_helpers.tpl | 50 +++++++++++ chart/templates/configmap-env.yaml | 6 +- chart/templates/cronjob-media-remove.yaml | 14 ++- chart/templates/deployment-sidekiq.yaml | 25 ++++-- chart/templates/deployment-streaming.yaml | 10 +-- chart/templates/deployment-web.yaml | 12 +-- chart/templates/job-assets-precompile.yaml | 12 +-- chart/templates/job-chewy-upgrade.yaml | 12 +-- chart/templates/job-create-admin.yaml | 12 +-- chart/templates/job-db-migrate.yaml | 12 +-- chart/templates/secrets.yaml | 12 ++- chart/values.yaml | 100 ++++++++++++--------- 15 files changed, 183 insertions(+), 125 deletions(-) diff --git a/chart/.helmignore b/chart/.helmignore index 0e8a0eb36..886747ed0 100644 --- a/chart/.helmignore +++ b/chart/.helmignore @@ -21,3 +21,4 @@ .idea/ *.tmproj .vscode/ +mastodon-*.tgz diff --git a/chart/Chart.lock b/chart/Chart.lock index d74e7570c..961e4fa80 100644 --- a/chart/Chart.lock +++ b/chart/Chart.lock @@ -1,12 +1,12 @@ dependencies: - name: elasticsearch - repository: https://charts.bitnami.com/bitnami - version: 15.10.3 + repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami + version: 19.0.1 - name: postgresql - repository: https://charts.bitnami.com/bitnami - version: 8.10.14 + repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami + version: 11.1.3 - name: redis - repository: https://charts.bitnami.com/bitnami - version: 10.9.0 -digest: sha256:f5c57108f7768fd16391c1a050991c7809f84a640cca308d7d24d87379d04000 -generated: "2021-08-05T08:01:01.457727804Z" + repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami + version: 16.13.2 +digest: sha256:17ea58a3264aa22faff18215c4269f47dabae956d0df273c684972f356416193 +generated: "2022-08-08T21:44:18.0195364+02:00" diff --git a/chart/Chart.yaml b/chart/Chart.yaml index 1687132ac..b1138b594 100644 --- a/chart/Chart.yaml +++ b/chart/Chart.yaml @@ -15,7 +15,7 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 1.2.1 +version: 2.0.0 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to @@ -24,13 +24,13 @@ appVersion: 3.3.0 dependencies: - name: elasticsearch - version: 15.10.3 - repository: https://charts.bitnami.com/bitnami + version: 19.0.1 + repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami condition: elasticsearch.enabled - name: postgresql - version: 8.10.14 - repository: https://charts.bitnami.com/bitnami + version: 11.1.3 + repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami condition: postgresql.enabled - name: redis - version: 10.9.0 - repository: https://charts.bitnami.com/bitnami + version: 16.13.2 + repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami diff --git a/chart/templates/_helpers.tpl b/chart/templates/_helpers.tpl index 5814a3120..71bb002ef 100644 --- a/chart/templates/_helpers.tpl +++ b/chart/templates/_helpers.tpl @@ -77,3 +77,53 @@ We truncate at 63 chars because some Kubernetes name fields are limited to this {{- define "mastodon.postgresql.fullname" -}} {{- printf "%s-%s" .Release.Name "postgresql" | trunc 63 | trimSuffix "-" -}} {{- end -}} + +{{/* +Get the mastodon secret. +*/}} +{{- define "mastodon.secretName" -}} +{{- if .Values.mastodon.secrets.existingSecret }} + {{- printf "%s" (tpl .Values.mastodon.secrets.existingSecret $) -}} +{{- else -}} + {{- printf "%s" (include "common.names.fullname" .) -}} +{{- end -}} +{{- end -}} + +{{/* +Get the postgresql secret. +*/}} +{{- define "mastodon.postgresql.secretName" -}} +{{- if (and (or .Values.postgresql.enabled .Values.postgresql.postgresqlHostname) .Values.postgresql.auth.existingSecret) }} + {{- printf "%s" (tpl .Values.postgresql.auth.existingSecret $) -}} +{{- else if .Values.postgresql.enabled -}} + {{- printf "%s-postgresql" (tpl .Release.Name $) -}} +{{- else -}} + {{- printf "%s" (include "common.names.fullname" .) -}} +{{- end -}} +{{- end -}} + +{{/* +Get the redis secret. +*/}} +{{- define "mastodon.redis.secretName" -}} +{{- if .Values.redis.auth.existingSecret }} + {{- printf "%s" (tpl .Values.redis.auth.existingSecret $) -}} +{{- else if .Values.redis.existingSecret }} + {{- printf "%s" (tpl .Values.redis.existingSecret $) -}} +{{- else -}} + {{- printf "%s-redis" (tpl .Release.Name $) -}} +{{- end -}} +{{- end -}} + +{{/* +Return true if a mastodon secret object should be created +*/}} +{{- define "mastodon.createSecret" -}} +{{- if (or + (and .Values.mastodon.s3.enabled (not .Values.mastodon.s3.existingSecret)) + (not .Values.mastodon.secrets.existingSecret ) + (and (not .Values.postgresql.enabled) (not .Values.postgresql.auth.existingSecret)) + ) -}} + {{- true -}} +{{- end -}} +{{- end -}} diff --git a/chart/templates/configmap-env.yaml b/chart/templates/configmap-env.yaml index aa242684f..f988477d9 100644 --- a/chart/templates/configmap-env.yaml +++ b/chart/templates/configmap-env.yaml @@ -10,14 +10,14 @@ data: {{- else }} DB_HOST: {{ .Values.postgresql.postgresqlHostname }} {{- end }} - DB_NAME: {{ .Values.postgresql.postgresqlDatabase }} + DB_NAME: {{ .Values.postgresql.auth.database }} DB_POOL: {{ .Values.mastodon.sidekiq.concurrency | quote }} DB_PORT: "5432" - DB_USER: {{ .Values.postgresql.postgresqlUsername }} + DB_USER: {{ .Values.postgresql.auth.username }} DEFAULT_LOCALE: {{ .Values.mastodon.locale }} {{- if .Values.elasticsearch.enabled }} ES_ENABLED: "true" - ES_HOST: {{ template "mastodon.elasticsearch.fullname" . }}-master + ES_HOST: {{ template "mastodon.elasticsearch.fullname" . }}-master-hl ES_PORT: "9200" {{- end }} LOCAL_DOMAIN: {{ .Values.mastodon.local_domain }} diff --git a/chart/templates/cronjob-media-remove.yaml b/chart/templates/cronjob-media-remove.yaml index 3d6e25cc6..726e100cf 100644 --- a/chart/templates/cronjob-media-remove.yaml +++ b/chart/templates/cronjob-media-remove.yaml @@ -1,5 +1,5 @@ {{ if .Values.mastodon.cron.removeMedia.enabled }} -apiVersion: batch/v1beta1 +apiVersion: batch/v1 kind: CronJob metadata: name: {{ include "mastodon.fullname" . }}-media-remove @@ -49,21 +49,17 @@ spec: - configMapRef: name: {{ include "mastodon.fullname" . }}-env - secretRef: - name: {{ template "mastodon.fullname" . }} + name: {{ template "mastodon.secretName" . }} env: - name: "DB_PASS" valueFrom: secretKeyRef: - {{- if .Values.postgresql.enabled }} - name: {{ .Release.Name }}-postgresql - {{- else }} - name: {{ template "mastodon.fullname" . }} - {{- end }} - key: postgresql-password + name: {{ template "mastodon.postgresql.secretName" . }} + key: password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: - name: {{ .Release.Name }}-redis + name: {{ template "mastodon.redis.secretName" . }} key: redis-password - name: "PORT" value: {{ .Values.mastodon.web.port | quote }} diff --git a/chart/templates/deployment-sidekiq.yaml b/chart/templates/deployment-sidekiq.yaml index baf6c2b2d..f1809bd85 100644 --- a/chart/templates/deployment-sidekiq.yaml +++ b/chart/templates/deployment-sidekiq.yaml @@ -70,22 +70,31 @@ spec: - configMapRef: name: {{ include "mastodon.fullname" . }}-env - secretRef: - name: {{ template "mastodon.fullname" . }} + name: {{ template "mastodon.secretName" . }} env: - name: "DB_PASS" valueFrom: secretKeyRef: - {{- if .Values.postgresql.enabled }} - name: {{ .Release.Name }}-postgresql - {{- else }} - name: {{ template "mastodon.fullname" . }} - {{- end }} - key: postgresql-password + name: {{ template "mastodon.postgresql.secretName" . }} + key: password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: - name: {{ .Release.Name }}-redis + name: {{ template "mastodon.redis.secretName" . }} key: redis-password + {{- if .Values.mastodon.smtp.existingSecret }} + - name: "SMTP_LOGIN" + valueFrom: + secretKeyRef: + name: {{ .Values.mastodon.smtp.existingSecret }} + key: login + optional: true + - name: "SMTP_PASSWORD" + valueFrom: + secretKeyRef: + name: {{ .Values.mastodon.smtp.existingSecret }} + key: password + {{- end -}} {{- if (not .Values.mastodon.s3.enabled) }} volumeMounts: - name: assets diff --git a/chart/templates/deployment-streaming.yaml b/chart/templates/deployment-streaming.yaml index b332b686a..12203a530 100644 --- a/chart/templates/deployment-streaming.yaml +++ b/chart/templates/deployment-streaming.yaml @@ -43,16 +43,12 @@ spec: - name: "DB_PASS" valueFrom: secretKeyRef: - {{- if .Values.postgresql.enabled }} - name: {{ .Release.Name }}-postgresql - {{- else }} - name: {{ template "mastodon.fullname" . }} - {{- end }} - key: postgresql-password + name: {{ template "mastodon.postgresql.secretName" . }} + key: password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: - name: {{ .Release.Name }}-redis + name: {{ template "mastodon.redis.secretName" . }} key: redis-password - name: "PORT" value: {{ .Values.mastodon.streaming.port | quote }} diff --git a/chart/templates/deployment-web.yaml b/chart/templates/deployment-web.yaml index 8b8bb4f29..5e22ca539 100644 --- a/chart/templates/deployment-web.yaml +++ b/chart/templates/deployment-web.yaml @@ -56,21 +56,17 @@ spec: - configMapRef: name: {{ include "mastodon.fullname" . }}-env - secretRef: - name: {{ template "mastodon.fullname" . }} + name: {{ template "mastodon.secretName" . }} env: - name: "DB_PASS" valueFrom: secretKeyRef: - {{- if .Values.postgresql.enabled }} - name: {{ .Release.Name }}-postgresql - {{- else }} - name: {{ template "mastodon.fullname" . }} - {{- end }} - key: postgresql-password + name: {{ template "mastodon.postgresql.secretName" . }} + key: password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: - name: {{ .Release.Name }}-redis + name: {{ template "mastodon.redis.secretName" . }} key: redis-password - name: "PORT" value: {{ .Values.mastodon.web.port | quote }} diff --git a/chart/templates/job-assets-precompile.yaml b/chart/templates/job-assets-precompile.yaml index 825a7e916..4aa8d1407 100644 --- a/chart/templates/job-assets-precompile.yaml +++ b/chart/templates/job-assets-precompile.yaml @@ -50,21 +50,17 @@ spec: - configMapRef: name: {{ include "mastodon.fullname" . }}-env - secretRef: - name: {{ template "mastodon.fullname" . }} + name: {{ template "mastodon.secretName" . }} env: - name: "DB_PASS" valueFrom: secretKeyRef: - {{- if .Values.postgresql.enabled }} - name: {{ .Release.Name }}-postgresql - {{- else }} - name: {{ template "mastodon.fullname" . }} - {{- end }} - key: postgresql-password + name: {{ template "mastodon.postgresql.secretName" . }} + key: password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: - name: {{ .Release.Name }}-redis + name: {{ template "mastodon.redis.secretName" . }} key: redis-password - name: "PORT" value: {{ .Values.mastodon.web.port | quote }} diff --git a/chart/templates/job-chewy-upgrade.yaml b/chart/templates/job-chewy-upgrade.yaml index cc68a3385..16b4f75a7 100644 --- a/chart/templates/job-chewy-upgrade.yaml +++ b/chart/templates/job-chewy-upgrade.yaml @@ -51,21 +51,17 @@ spec: - configMapRef: name: {{ include "mastodon.fullname" . }}-env - secretRef: - name: {{ template "mastodon.fullname" . }} + name: {{ template "mastodon.secretName" . }} env: - name: "DB_PASS" valueFrom: secretKeyRef: - {{- if .Values.postgresql.enabled }} - name: {{ .Release.Name }}-postgresql - {{- else }} - name: {{ template "mastodon.fullname" . }} - {{- end }} - key: postgresql-password + name: {{ template "mastodon.postgresql.secretName" . }} + key: password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: - name: {{ .Release.Name }}-redis + name: {{ template "mastodon.redis.secretName" . }} key: redis-password - name: "PORT" value: {{ .Values.mastodon.web.port | quote }} diff --git a/chart/templates/job-create-admin.yaml b/chart/templates/job-create-admin.yaml index ffb8bb059..486c0c357 100644 --- a/chart/templates/job-create-admin.yaml +++ b/chart/templates/job-create-admin.yaml @@ -56,21 +56,17 @@ spec: - configMapRef: name: {{ include "mastodon.fullname" . }}-env - secretRef: - name: {{ template "mastodon.fullname" . }} + name: {{ template "mastodon.secretName" . }} env: - name: "DB_PASS" valueFrom: secretKeyRef: - {{- if .Values.postgresql.enabled }} - name: {{ .Release.Name }}-postgresql - {{- else }} - name: {{ template "mastodon.fullname" . }} - {{- end }} - key: postgresql-password + name: {{ template "mastodon.postgresql.secretName" . }} + key: password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: - name: {{ .Release.Name }}-redis + name: {{ template "mastodon.redis.secretName" . }} key: redis-password - name: "PORT" value: {{ .Values.mastodon.web.port | quote }} diff --git a/chart/templates/job-db-migrate.yaml b/chart/templates/job-db-migrate.yaml index 72f910e3b..41ece64a2 100644 --- a/chart/templates/job-db-migrate.yaml +++ b/chart/templates/job-db-migrate.yaml @@ -50,21 +50,17 @@ spec: - configMapRef: name: {{ include "mastodon.fullname" . }}-env - secretRef: - name: {{ template "mastodon.fullname" . }} + name: {{ template "mastodon.secretName" . }} env: - name: "DB_PASS" valueFrom: secretKeyRef: - {{- if .Values.postgresql.enabled }} - name: {{ .Release.Name }}-postgresql - {{- else }} - name: {{ template "mastodon.fullname" . }} - {{- end }} - key: postgresql-password + name: {{ template "mastodon.postgresql.secretName" . }} + key: password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: - name: {{ .Release.Name }}-redis + name: {{ template "mastodon.redis.secretName" . }} key: redis-password - name: "PORT" value: {{ .Values.mastodon.web.port | quote }} diff --git a/chart/templates/secrets.yaml b/chart/templates/secrets.yaml index 0452a8ae1..135d5b61a 100644 --- a/chart/templates/secrets.yaml +++ b/chart/templates/secrets.yaml @@ -1,3 +1,4 @@ +{{- if (include "mastodon.createSecret" .) }} apiVersion: v1 kind: Secret metadata: @@ -7,9 +8,12 @@ metadata: type: Opaque data: {{- if .Values.mastodon.s3.enabled }} + {{- if not .Values.mastodon.s3.existingSecret }} AWS_ACCESS_KEY_ID: "{{ .Values.mastodon.s3.access_key | b64enc }}" AWS_SECRET_ACCESS_KEY: "{{ .Values.mastodon.s3.access_secret | b64enc }}" {{- end }} + {{- end }} + {{- if not .Values.mastodon.secrets.existingSecret }} {{- if not (empty .Values.mastodon.secrets.secret_key_base) }} SECRET_KEY_BASE: "{{ .Values.mastodon.secrets.secret_key_base | b64enc }}" {{- else }} @@ -30,6 +34,10 @@ data: {{- else }} VAPID_PUBLIC_KEY: {{ required "vapid.public_key is required" .Values.mastodon.secrets.vapid.public_key }} {{- end }} - {{- if not .Values.postgresql.enabled }} - postgresql-password: "{{ .Values.postgresql.postgresqlPassword | b64enc }}" {{- end }} + {{- if not .Values.postgresql.enabled }} + {{- if not .Values.postgresql.auth.existingSecret }} + postgresql-password: "{{ .Values.postgresql.auth.password | b64enc }}" + {{- end }} + {{- end }} +{{- end -}} diff --git a/chart/values.yaml b/chart/values.yaml index 2cfa3484b..bd723567f 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -48,6 +48,9 @@ mastodon: enabled: false access_key: "" access_secret: "" + # you can also specify the name of an existing Secret + # with keys AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY + existingSecret: "" bucket: "" endpoint: https://us-east-1.linodeobjects.com hostname: us-east-1.linodeobjects.com @@ -61,6 +64,10 @@ mastodon: vapid: private_key: "" public_key: "" + # you can also specify the name of an existing Secret + # with keys SECRET_KEY_BASE and OTP_SECRET and + # VAPID_PRIVATE_KEY and VAPID_PUBLIC_KEY + existingSecret: "" sidekiq: concurrency: 25 smtp: @@ -70,13 +77,16 @@ mastodon: domain: enable_starttls_auto: true from_address: notifications@example.com - login: openssl_verify_mode: peer - password: port: 587 reply_to: server: smtp.mailgun.org tls: false + login: + password: + # you can also specify the name of an existing Secret + # with the keys login and password + existingSecret: streaming: port: 4000 # this should be set manually since os.cpus() returns the number of CPUs on @@ -127,18 +137,26 @@ postgresql: # must match those of that external postgres instance enabled: true # postgresqlHostname: preexisting-postgresql - postgresqlDatabase: mastodon_production - # you must set a password; the password generated by the postgresql chart will - # be rotated on each upgrade: - # https://github.com/bitnami/charts/tree/master/bitnami/postgresql#upgrade - postgresqlPassword: "" - postgresqlUsername: postgres + auth: + database: mastodon_production + username: postgres + # you must set a password; the password generated by the postgresql chart will + # be rotated on each upgrade: + # https://github.com/bitnami/charts/tree/master/bitnami/postgresql#upgrade + password: "" + # you can also specify the name of an existing Secret + # with a key of postgres-password set to the password you want + existingSecret: "" # https://github.com/bitnami/charts/tree/master/bitnami/redis#parameters redis: # you must set a password; the password generated by the redis chart will be # rotated on each upgrade: password: "" + # you can also specify the name of an existing Secret + # with a key of redis-password set to the password you want + # auth: + # existingSecret: "" service: type: ClusterIP @@ -157,45 +175,45 @@ externalAuth: # client_secret: SECRETKEY # redirect_uri: https://example.com/auth/auth/openid_connect/callback # assume_email_is_verified: true - # client_auth_method: - # response_type: - # response_mode: - # display: - # prompt: - # send_nonce: - # send_scope_to_token_endpoint: - # idp_logout_redirect_uri: - # http_scheme: - # host: - # port: - # jwks_uri: - # auth_endpoint: - # token_endpoint: - # user_info_endpoint: - # end_session_endpoint: + # client_auth_method: + # response_type: + # response_mode: + # display: + # prompt: + # send_nonce: + # send_scope_to_token_endpoint: + # idp_logout_redirect_uri: + # http_scheme: + # host: + # port: + # jwks_uri: + # auth_endpoint: + # token_endpoint: + # user_info_endpoint: + # end_session_endpoint: saml: enabled: false # acs_url: http://mastodon.example.com/auth/auth/saml/callback # issuer: mastodon # idp_sso_target_url: https://login.example.com/auth/realms/example/protocol/saml # idp_cert: '-----BEGIN CERTIFICATE-----[your_cert_content]-----END CERTIFICATE-----' - # idp_cert_fingerprint: + # idp_cert_fingerprint: # name_identifier_format: urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified - # cert: - # private_key: + # cert: + # private_key: # want_assertion_signed: true # want_assertion_encrypted: true # assume_email_is_verified: true # uid_attribute: "urn:oid:0.9.2342.19200300.100.1.1" - # attributes_statements: + # attributes_statements: # uid: "urn:oid:0.9.2342.19200300.100.1.1" # email: "urn:oid:1.3.6.1.4.1.5923.1.1.1.6" # full_name: "urn:oid:2.16.840.1.113730.3.1.241" # first_name: "urn:oid:2.5.4.42" # last_name: "urn:oid:2.5.4.4" - # verified: - # verified_email: - oauth_global: + # verified: + # verified_email: + oauth_global: # Force redirect local login to CAS. Does not function with SAML or LDAP. oauth_redirect_at_sign_in: false cas: @@ -204,15 +222,15 @@ externalAuth: # host: sso.myserver.com # port: 443 # ssl: true - # validate_url: - # callback_url: - # logout_url: - # login_url: + # validate_url: + # callback_url: + # logout_url: + # login_url: # uid_field: 'user' - # ca_path: + # ca_path: # disable_ssl_verification: false # assume_email_is_verified: true - # keys: + # keys: # uid: 'user' # name: 'name' # email: 'email' @@ -222,7 +240,7 @@ externalAuth: # location: 'location' # image: 'image' # phone: 'phone' - pam: + pam: enabled: false # email_domain: example.com # default_service: rpam @@ -232,9 +250,9 @@ externalAuth: # host: myservice.namespace.svc # port: 389 # method: simple_tls - # base: - # bind_on: - # password: + # base: + # bind_on: + # password: # uid: cn # mail: mail # search_filter: "(|(%{uid}=%{email})(%{mail}=%{email}))" From 03f19b8cd38ee0096f9a4ce47247379ed6f94cd7 Mon Sep 17 00:00:00 2001 From: Tony Jiang Date: Sat, 13 Aug 2022 06:28:16 -0700 Subject: [PATCH 282/652] Remove nanobox (#17881) Co-authored-by: Tony Jiang --- .env.nanobox | 254 ---------------------------------- boxfile.yml | 205 --------------------------- nanobox/nginx-local.conf | 92 ------------ nanobox/nginx-stream.conf.erb | 66 --------- nanobox/nginx-web.conf.erb | 90 ------------ 5 files changed, 707 deletions(-) delete mode 100644 .env.nanobox delete mode 100644 boxfile.yml delete mode 100644 nanobox/nginx-local.conf delete mode 100644 nanobox/nginx-stream.conf.erb delete mode 100644 nanobox/nginx-web.conf.erb diff --git a/.env.nanobox b/.env.nanobox deleted file mode 100644 index 51dfdbd58..000000000 --- a/.env.nanobox +++ /dev/null @@ -1,254 +0,0 @@ -# Service dependencies -# You may set REDIS_URL instead for more advanced options -REDIS_HOST=$DATA_REDIS_HOST -REDIS_PORT=6379 -# REDIS_DB=0 - -# You may set DATABASE_URL instead for more advanced options -DB_HOST=$DATA_DB_HOST -DB_USER=$DATA_DB_USER -DB_NAME=gonano -DB_PASS=$DATA_DB_PASS -DB_PORT=5432 - -# DATABASE_URL=postgresql://$DATA_DB_USER:$DATA_DB_PASS@$DATA_DB_HOST/gonano - -# Optional Elasticsearch configuration -ES_ENABLED=true -ES_HOST=$DATA_ELASTIC_HOST -ES_PORT=9200 - -BIND=0.0.0.0 - -# Federation -# Note: Changing LOCAL_DOMAIN at a later time will cause unwanted side effects, including breaking all existing federation. -# LOCAL_DOMAIN should *NOT* contain the protocol part of the domain e.g https://example.com. -LOCAL_DOMAIN=${APP_NAME}.nanoapp.io - -# Changing LOCAL_HTTPS in production is no longer supported. (Mastodon will always serve https:// links) - -# Use this only if you need to run mastodon on a different domain than the one used for federation. -# You can read more about this option on https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Serving_a_different_domain.md -# DO *NOT* USE THIS UNLESS YOU KNOW *EXACTLY* WHAT YOU ARE DOING. -# WEB_DOMAIN=mastodon.example.com - -# Use this if you want to have several aliases handler@example1.com -# handler@example2.com etc. for the same user. LOCAL_DOMAIN should not -# be added. Comma separated values -# ALTERNATE_DOMAINS=example1.com,example2.com - -# Application secrets -# Generate each with the `rake secret` task (`nanobox run bundle exec rake secret`) -SECRET_KEY_BASE=$SECRET_KEY_BASE -OTP_SECRET=$OTP_SECRET - -# VAPID keys (used for push notifications) -# You can generate the keys using the following command (first is the private key, second is the public one) -# You should only generate this once per instance. If you later decide to change it, all push subscription will -# be invalidated, requiring the users to access the website again to resubscribe. -# -# Generate with `rake mastodon:webpush:generate_vapid_key` task (`nanobox run bundle exec rake mastodon:webpush:generate_vapid_key`) -# -# For more information visit https://rossta.net/blog/using-the-web-push-api-with-vapid.html -VAPID_PRIVATE_KEY=$VAPID_PRIVATE_KEY -VAPID_PUBLIC_KEY=$VAPID_PUBLIC_KEY - -# Registrations -# Single user mode will disable registrations and redirect frontpage to the first profile -# SINGLE_USER_MODE=true -# Prevent registrations with following e-mail domains -# EMAIL_DOMAIN_BLACKLIST=example1.com|example2.de|etc -# Only allow registrations with the following e-mail domains -# EMAIL_DOMAIN_WHITELIST=example1.com|example2.de|etc - -# Optionally change default language -# DEFAULT_LOCALE=de - -# E-mail configuration -# Note: Mailgun and SparkPost (https://sparkpo.st/smtp) each have good free tiers -# If you want to use an SMTP server without authentication (e.g local Postfix relay) -# then set SMTP_AUTH_METHOD and SMTP_OPENSSL_VERIFY_MODE to 'none' and -# *comment* SMTP_LOGIN and SMTP_PASSWORD (leaving them blank is not enough). -SMTP_SERVER=$SMTP_SERVER -SMTP_PORT=587 -SMTP_LOGIN=$SMTP_LOGIN -SMTP_PASSWORD=$SMTP_PASSWORD -SMTP_FROM_ADDRESS=notifications@${APP_NAME}.nanoapp.io -#SMTP_REPLY_TO= -#SMTP_DOMAIN= # defaults to LOCAL_DOMAIN -#SMTP_DELIVERY_METHOD=smtp # delivery method can also be sendmail -#SMTP_AUTH_METHOD=plain -#SMTP_CA_FILE=/etc/ssl/certs/ca-certificates.crt -#SMTP_OPENSSL_VERIFY_MODE=peer -#SMTP_ENABLE_STARTTLS_AUTO=true -#SMTP_TLS=true - -# Optional user upload path and URL (images, avatars). Default is :rails_root/public/system. If you set this variable, you are responsible for making your HTTP server (eg. nginx) serve these files. -# PAPERCLIP_ROOT_PATH=/var/lib/mastodon/public-system -# PAPERCLIP_ROOT_URL=/system - -# Optional asset host for multi-server setups -# The asset host must allow cross origin request from WEB_DOMAIN or LOCAL_DOMAIN -# if WEB_DOMAIN is not set. For example, the server may have the -# following header field: -# Access-Control-Allow-Origin: https://example.com/ -# CDN_HOST=https://assets.example.com - -# S3 (optional) -# The attachment host must allow cross origin request from WEB_DOMAIN or -# LOCAL_DOMAIN if WEB_DOMAIN is not set. For example, the server may have the -# following header field: -# Access-Control-Allow-Origin: https://192.168.1.123:9000/ -# S3_ENABLED=true -# S3_BUCKET= -# AWS_ACCESS_KEY_ID= -# AWS_SECRET_ACCESS_KEY= -# S3_REGION= -# S3_PROTOCOL=http -# S3_HOSTNAME=192.168.1.123:9000 - -# S3 (Minio Config (optional) Please check Minio instance for details) -# The attachment host must allow cross origin request - see the description -# above. -# S3_ENABLED=true -# S3_BUCKET= -# AWS_ACCESS_KEY_ID= -# AWS_SECRET_ACCESS_KEY= -# S3_REGION= -# S3_PROTOCOL=https -# S3_HOSTNAME= -# S3_ENDPOINT= -# S3_SIGNATURE_VERSION= - -# Google Cloud Storage (optional) -# Use S3 compatible API. Since GCS does not support Multipart Upload, -# increase the value of S3_MULTIPART_THRESHOLD to disable Multipart Upload. -# The attachment host must allow cross origin request - see the description -# above. -# S3_ENABLED=true -# AWS_ACCESS_KEY_ID= -# AWS_SECRET_ACCESS_KEY= -# S3_REGION= -# S3_PROTOCOL=https -# S3_HOSTNAME=storage.googleapis.com -# S3_ENDPOINT=https://storage.googleapis.com -# S3_MULTIPART_THRESHOLD=52428801 # 50.megabytes - -# Swift (optional) -# The attachment host must allow cross origin request - see the description -# above. -# SWIFT_ENABLED=true -# SWIFT_USERNAME= -# For Keystone V3, the value for SWIFT_TENANT should be the project name -# SWIFT_TENANT= -# SWIFT_PASSWORD= -# Some OpenStack V3 providers require PROJECT_ID (optional) -# SWIFT_PROJECT_ID= -# Keystone V2 and V3 URLs are supported. Use a V3 URL if possible to avoid -# issues with token rate-limiting during high load. -# SWIFT_AUTH_URL= -# SWIFT_CONTAINER= -# SWIFT_OBJECT_URL= -# SWIFT_REGION= -# Defaults to 'default' -# SWIFT_DOMAIN_NAME= -# Defaults to 60 seconds. Set to 0 to disable -# SWIFT_CACHE_TTL= - -# Optional alias for S3 (e.g. to serve files on a custom domain, possibly using Cloudfront or Cloudflare) -# S3_ALIAS_HOST= - -# Streaming API integration -# STREAMING_API_BASE_URL= - -# Advanced settings -# If you need to use pgBouncer, you need to disable prepared statements: -# PREPARED_STATEMENTS=false - -# Cluster number setting for streaming API server. -# If you comment out following line, cluster number will be `numOfCpuCores - 1`. -# STREAMING_CLUSTER_NUM=1 - -# Docker mastodon user -# If you use Docker, you may want to assign UID/GID manually. -# UID=1000 -# GID=1000 - -# LDAP authentication (optional) -# LDAP_ENABLED=true -# LDAP_HOST=localhost -# LDAP_PORT=389 -# LDAP_METHOD=simple_tls -# LDAP_BASE= -# LDAP_BIND_DN= -# LDAP_PASSWORD= -# LDAP_UID=cn -# LDAP_MAIL=mail -# LDAP_SEARCH_FILTER=(|(%{uid}=%{email})(%{mail}=%{email})) -# LDAP_UID_CONVERSION_ENABLED=true -# LDAP_UID_CONVERSION_SEARCH=., - -# LDAP_UID_CONVERSION_REPLACE=_ - -# PAM authentication (optional) -# PAM authentication uses for the email generation the "email" pam variable -# and optional as fallback PAM_DEFAULT_SUFFIX -# The pam environment variable "email" is provided by: -# https://github.com/devkral/pam_email_extractor -# PAM_ENABLED=true -# Fallback email domain for email address generation (LOCAL_DOMAIN by default) -# PAM_EMAIL_DOMAIN=example.com -# Name of the pam service (pam "auth" section is evaluated) -# PAM_DEFAULT_SERVICE=rpam -# Name of the pam service used for checking if an user can register (pam "account" section is evaluated) (nil (disabled) by default) -# PAM_CONTROLLED_SERVICE=rpam - -# Optional CAS authentication (cf. omniauth-cas) : -# CAS_ENABLED=true -# CAS_URL=https://sso.myserver.com/ -# CAS_HOST=sso.myserver.com/ -# CAS_PORT=443 -# CAS_SSL=true -# CAS_VALIDATE_URL= -# CAS_CALLBACK_URL= -# CAS_LOGOUT_URL= -# CAS_LOGIN_URL= -# CAS_UID_FIELD='user' -# CAS_CA_PATH= -# CAS_DISABLE_SSL_VERIFICATION=false -# CAS_UID_KEY='user' -# CAS_NAME_KEY='name' -# CAS_EMAIL_KEY='email' -# CAS_NICKNAME_KEY='nickname' -# CAS_FIRST_NAME_KEY='firstname' -# CAS_LAST_NAME_KEY='lastname' -# CAS_LOCATION_KEY='location' -# CAS_IMAGE_KEY='image' -# CAS_PHONE_KEY='phone' -# CAS_SECURITY_ASSUME_EMAIL_IS_VERIFIED=true - -# Optional SAML authentication (cf. omniauth-saml) -# SAML_ENABLED=true -# SAML_ACS_URL=http://localhost:3000/auth/auth/saml/callback -# SAML_ISSUER=https://example.com -# SAML_IDP_SSO_TARGET_URL=https://idp.testshib.org/idp/profile/SAML2/Redirect/SSO -# SAML_IDP_CERT= -# SAML_IDP_CERT_FINGERPRINT= -# SAML_NAME_IDENTIFIER_FORMAT= -# SAML_CERT= -# SAML_PRIVATE_KEY= -# SAML_SECURITY_WANT_ASSERTION_SIGNED=true -# SAML_SECURITY_WANT_ASSERTION_ENCRYPTED=true -# SAML_SECURITY_ASSUME_EMAIL_IS_VERIFIED=true -# SAML_ATTRIBUTES_STATEMENTS_UID="urn:oid:0.9.2342.19200300.100.1.1" -# SAML_ATTRIBUTES_STATEMENTS_EMAIL="urn:oid:1.3.6.1.4.1.5923.1.1.1.6" -# SAML_ATTRIBUTES_STATEMENTS_FULL_NAME="urn:oid:2.16.840.1.113730.3.1.241" -# SAML_ATTRIBUTES_STATEMENTS_FIRST_NAME="urn:oid:2.5.4.42" -# SAML_ATTRIBUTES_STATEMENTS_LAST_NAME="urn:oid:2.5.4.4" -# SAML_UID_ATTRIBUTE="urn:oid:0.9.2342.19200300.100.1.1" -# SAML_ATTRIBUTES_STATEMENTS_VERIFIED= -# SAML_ATTRIBUTES_STATEMENTS_VERIFIED_EMAIL= - -# Use HTTP proxy for outgoing request (optional) -# http_proxy=http://gateway.local:8118 -# Access control for hidden service. -# ALLOW_ACCESS_TO_HIDDEN_SERVICE=true diff --git a/boxfile.yml b/boxfile.yml deleted file mode 100644 index 27166cec9..000000000 --- a/boxfile.yml +++ /dev/null @@ -1,205 +0,0 @@ -run.config: - engine: ruby - engine.config: - runtime: ruby-2.5 - - extra_packages: - # basic servers: - - nginx - - nodejs - - # for images: - - ImageMagick - - jemalloc - - # for videos: - - ffmpeg3 - - # to prep the .env file: - - gettext-tools - - # for node-gyp, used in the asset compilation process: - - python-2 - - # i18n: - - libidn - - cache_dirs: - - node_modules - - extra_path_dirs: - - node_modules/.bin - - build_triggers: - - .ruby-version - - Gemfile - - Gemfile.lock - - package.json - - yarn.lock - - extra_steps: - - cp .env.nanobox .env - - yarn - - fs_watch: true - -deploy.config: - extra_steps: - - NODE_ENV=production bundle exec rake assets:precompile - transform: - - 'envsubst < /app/.env.nanobox > /app/.env.production' - - |- - if [ -z "$LOCAL_DOMAIN" ] - then - . /app/.env.production - export LOCAL_DOMAIN - fi - erb /app/nanobox/nginx-web.conf.erb > /app/nanobox/nginx-web.conf - erb /app/nanobox/nginx-stream.conf.erb > /app/nanobox/nginx-stream.conf - - touch /app/log/production.log - before_live: - web.web: - - bin/tootctl cache clear - - bundle exec rake db:migrate:setup - after_live: - worker.sidekiq: - - |- - if [[ "${ES_ENABLED}" != "false" ]] - then - bin/tootctl search deploy - fi - -web.web: - start: - nginx: nginx -c /app/nanobox/nginx-web.conf - rails: bundle exec puma -C /app/config/puma.rb - - routes: - - '/' - - writable_dirs: - - tmp - - log_watch: - rails: 'log/production.log' - - network_dirs: - data.storage: - - public/system - -web.stream: - start: - nginx: nginx -c /app/nanobox/nginx-stream.conf - node: yarn run start - - routes: - - '/api/v1/streaming*' - # Somehow we're getting requests for scheme://domain//api/v1/streaming* - match those, too - - '//api/v1/streaming*' - - writable_dirs: - - tmp - -worker.sidekiq: - start: - default: bundle exec sidekiq -c 5 -q default -L /app/log/sidekiq.log - mailers: bundle exec sidekiq -c 5 -q mailers -L /app/log/sidekiq.log - pull: bundle exec sidekiq -c 5 -q pull -L /app/log/sidekiq.log - push: bundle exec sidekiq -c 5 -q push -L /app/log/sidekiq.log - scheduler: bundle exec sidekiq -c 5 -q scheduler -L /app/log/sidekiq.log - - writable_dirs: - - tmp - - log_watch: - rails: 'log/production.log' - sidekiq: 'log/sidekiq.log' - - network_dirs: - data.storage: - - public/system - -data.db: - image: nanobox/postgresql:9.6 - - cron: - - id: backup - schedule: '0 3 * * *' - command: | - PGPASSWORD=${DATA_DB_PASS} pg_dump -U ${DATA_DB_USER} -w -Fc -O gonano | - gzip | - curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/backup-${HOSTNAME}-$(date -u +%Y-%m-%d.%H-%M-%S).sql.gz -X POST -T - >&2 - curl -k -s -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/ | - sed 's/,/\n/g' | - grep ${HOSTNAME} | - sort | - head -n-${BACKUP_COUNT:-1} | - sed 's/.*: \?"\(.*\)".*/\1/' | - while read file - do - curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/${file} -X DELETE - done - -data.elastic: - image: nanobox/elasticsearch:5 - - cron: - - id: backup - schedule: '0 3 * * *' - command: | - id=$(cat /proc/sys/kernel/random/uuid) - curl -X PUT -H "Content-Type: application/json" "127.0.0.1:9200/_snapshot/${id}" -d "{\"type\": \"fs\",\"settings\": {\"location\": \"/var/tmp/${id}\",\"compress\": true}}" - curl -X PUT -H "Content-Type: application/json" "127.0.0.1:9200/_snapshot/${id}/backup?wait_for_completion=true&pretty" - tar -cz -C "/var/tmp/${id}" . | - curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/backup-${HOSTNAME}-$(date -u +%Y-%m-%d.%H-%M-%S).tgz -X POST -T - >&2 - curl -X DELETE -H "Content-Type: application/json" "127.0.0.1:9200/_snapshot/${id}" - rm -rf "/var/tmp/${id}" - curl -k -s -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/ | - sed 's/,/\n/g' | - grep ${HOSTNAME} | - sort | - head -n-${BACKUP_COUNT:-1} | - sed 's/.*: \?"\(.*\)".*/\1/' | - while read file - do - curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/${file} -X DELETE - done - -data.redis: - image: nanobox/redis:4.0 - - cron: - - id: backup - schedule: '0 3 * * *' - command: | - curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/backup-${HOSTNAME}-$(date -u +%Y-%m-%d.%H-%M-%S).rdb -X POST -T /data/var/db/redis/dump.rdb >&2 - curl -k -s -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/ | - sed 's/,/\n/g' | - grep ${HOSTNAME} | - sort | - head -n-${BACKUP_COUNT:-1} | - sed 's/.*: \?"\(.*\)".*/\1/' | - while read file - do - curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/${file} -X DELETE - done - -data.storage: - image: nanobox/unfs:0.9 - - cron: - - id: backup - schedule: '0 3 * * *' - command: | - tar cz -C /data/var/db/unfs/ . | - curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/backup-${HOSTNAME}-$(date -u +%Y-%m-%d.%H-%M-%S).tgz -X POST -T - >&2 - curl -k -s -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/ | - sed 's/,/\n/g' | - grep ${HOSTNAME} | - sort | - head -n-${BACKUP_COUNT:-1} | - sed 's/.*: \?"\(.*\)".*/\1/' | - while read file - do - curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/${file} -X DELETE - done diff --git a/nanobox/nginx-local.conf b/nanobox/nginx-local.conf deleted file mode 100644 index 37c8a451a..000000000 --- a/nanobox/nginx-local.conf +++ /dev/null @@ -1,92 +0,0 @@ -worker_processes 1; -daemon off; - -events { - worker_connections 1024; -} - -http { - include /data/etc/nginx/mime.types; - sendfile on; - - gzip on; - gzip_disable "MSIE [1-6]\."; - gzip_vary on; - gzip_proxied any; - gzip_comp_level 6; - gzip_buffers 16 8k; - gzip_min_length 500; - gzip_http_version 1.1; - gzip_types text/plain text/xml text/javascript text/css text/comma-separated-values application/xml+rss application/xml application/x-javascript application/json application/javascript application/atom+xml; - - # Proxy upstream to the puma process - upstream rails { - server 127.0.0.1:3000; - } - - # Proxy upstream to the node process - upstream node { - server 127.0.0.1:4000; - } - - map $http_upgrade $connection_upgrade { - default upgrade; - '' close; - } - - # Configuration for Nginx - server { - # Listen on port 8080 - listen 8080; - - keepalive_timeout 70; - client_max_body_size 80M; - - root /app/public; - - add_header Strict-Transport-Security "max-age=31536000"; - - location / { - try_files $uri @rails; - } - - # Proxy connections to rails - location @rails { - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto https; - proxy_set_header Proxy ""; - proxy_pass_header Server; - - proxy_pass http://rails; - proxy_buffering off; - proxy_redirect off; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection $connection_upgrade; - - tcp_nodelay on; - } - - # Proxy connections to node - location /api/v1/streaming { - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto https; - proxy_set_header Proxy ""; - - proxy_pass http://node; - proxy_buffering off; - proxy_redirect off; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection $connection_upgrade; - - tcp_nodelay on; - } - } - - error_page 500 501 502 503 504 /500.html; -} diff --git a/nanobox/nginx-stream.conf.erb b/nanobox/nginx-stream.conf.erb deleted file mode 100644 index 4ea6e30fc..000000000 --- a/nanobox/nginx-stream.conf.erb +++ /dev/null @@ -1,66 +0,0 @@ -worker_processes 1; -daemon off; - -events { - worker_connections 1024; -} - -http { - include /data/etc/nginx/mime.types; - sendfile on; - - gzip on; - gzip_disable "MSIE [1-6]\."; - gzip_vary on; - gzip_proxied any; - gzip_comp_level 6; - gzip_buffers 16 8k; - gzip_min_length 500; - gzip_http_version 1.1; - gzip_types text/plain text/xml text/javascript text/css text/comma-separated-values application/xml+rss application/xml application/x-javascript application/json application/javascript application/atom+xml; - - # Proxy upstream to the node process - upstream node { - server 127.0.0.1:4000; - } - - map $http_upgrade $connection_upgrade { - default upgrade; - '' close; - } - - # Configuration for Nginx - server { - # Listen on port 8080 - listen 8080; - - keepalive_timeout 70; - client_max_body_size 80M; - - root /app/public; - - add_header Strict-Transport-Security "max-age=31536000"; - - location / { - try_files $uri @node; - } - - # Proxy connections to node - location @node { - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto https; - proxy_set_header Proxy ""; - - proxy_pass http://node; - proxy_buffering off; - proxy_redirect off; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection $connection_upgrade; - - tcp_nodelay on; - } - } -} diff --git a/nanobox/nginx-web.conf.erb b/nanobox/nginx-web.conf.erb deleted file mode 100644 index 182d99209..000000000 --- a/nanobox/nginx-web.conf.erb +++ /dev/null @@ -1,90 +0,0 @@ -worker_processes 1; -daemon off; - -events { - worker_connections 1024; -} - -http { - include /data/etc/nginx/mime.types; - sendfile on; - - gzip on; - gzip_disable "MSIE [1-6]\."; - gzip_vary on; - gzip_proxied any; - gzip_comp_level 6; - gzip_buffers 16 8k; - gzip_min_length 500; - gzip_http_version 1.1; - gzip_types text/plain text/xml text/javascript text/css text/comma-separated-values application/xml+rss application/xml application/x-javascript application/json application/javascript application/atom+xml; - - # Proxy upstream to the puma process - upstream rails { - server 127.0.0.1:3000; - } - - map $http_upgrade $connection_upgrade { - default upgrade; - '' close; - } - - # Configuration for Nginx - server { - # Listen on port 8080 - listen 8080; - - keepalive_timeout 70; - client_max_body_size 80M; - - root /app/public; - - add_header Strict-Transport-Security "max-age=31536000"; - - location / { - try_files $uri @rails; - } - - location /sw.js { - add_header Cache-Control "public, max-age=0"; - add_header Strict-Transport-Security "max-age=31536000"; - try_files $uri @rails; - } - - location ~ ^/(emoji|packs|system/media_attachments/files|system/accounts/avatars) { - add_header Cache-Control "public, max-age=31536000, immutable"; - add_header Strict-Transport-Security "max-age=31536000"; - try_files $uri @rails; - } - - # Proxy connections to rails - location @rails { - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto https; - proxy_set_header Proxy ""; - proxy_pass_header Server; - - proxy_pass http://rails; - proxy_buffering on; - proxy_redirect off; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection $connection_upgrade; - - proxy_cache CACHE; - proxy_cache_valid 200 7d; - proxy_cache_valid 410 24h; - proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504; - add_header Strict-Transport-Security "max-age=31536000"; - add_header X-Cached $upstream_cache_status; - - tcp_nodelay on; - } - } - - proxy_cache_path /data/var/cache/nginx levels=1:2 keys_zone=CACHE:10m inactive=7d max_size=1g; - - error_page 500 501 502 503 504 /500.html; -} From e6979aa6d43f24ab290c27f596fcd71fcc0ac03a Mon Sep 17 00:00:00 2001 From: Rens Groothuijsen Date: Sat, 13 Aug 2022 15:39:05 +0200 Subject: [PATCH 283/652] Add warning for sensitive audio posts (#17885) --- app/javascript/mastodon/components/status.js | 4 ++ .../mastodon/features/audio/index.js | 64 ++++++++++++++++--- .../status/components/detailed_status.js | 4 ++ .../styles/mastodon/components.scss | 7 ++ 4 files changed, 71 insertions(+), 8 deletions(-) diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js index 238a0d734..dee935a6c 100644 --- a/app/javascript/mastodon/components/status.js +++ b/app/javascript/mastodon/components/status.js @@ -409,6 +409,10 @@ class Status extends ImmutablePureComponent { height={110} cacheWidth={this.props.cacheMediaWidth} deployPictureInPicture={pictureInPicture.get('available') ? this.handleDeployPictureInPicture : undefined} + sensitive={status.get('sensitive')} + blurhash={attachment.get('blurhash')} + visible={this.state.showMedia} + onToggleVisibility={this.handleToggleMediaVisibility} /> )} diff --git a/app/javascript/mastodon/features/audio/index.js b/app/javascript/mastodon/features/audio/index.js index c47f55dd1..00854d0e4 100644 --- a/app/javascript/mastodon/features/audio/index.js +++ b/app/javascript/mastodon/features/audio/index.js @@ -1,6 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { defineMessages, injectIntl } from 'react-intl'; +import { defineMessages, FormattedMessage, injectIntl } from 'react-intl'; import { formatTime } from 'mastodon/features/video'; import Icon from 'mastodon/components/icon'; import classNames from 'classnames'; @@ -8,6 +8,9 @@ import { throttle } from 'lodash'; import { getPointerPosition, fileNameFromURL } from 'mastodon/features/video'; import { debounce } from 'lodash'; import Visualizer from './visualizer'; +import { displayMedia, useBlurhash } from '../../initial_state'; +import Blurhash from '../../components/blurhash'; +import { is } from 'immutable'; const messages = defineMessages({ play: { id: 'video.play', defaultMessage: 'Play' }, @@ -15,6 +18,7 @@ const messages = defineMessages({ mute: { id: 'video.mute', defaultMessage: 'Mute sound' }, unmute: { id: 'video.unmute', defaultMessage: 'Unmute sound' }, download: { id: 'video.download', defaultMessage: 'Download file' }, + hide: { id: 'audio.hide', defaultMessage: 'Hide audio' }, }); const TICK_SIZE = 10; @@ -30,10 +34,14 @@ class Audio extends React.PureComponent { duration: PropTypes.number, width: PropTypes.number, height: PropTypes.number, + sensitive: PropTypes.bool, editable: PropTypes.bool, fullscreen: PropTypes.bool, intl: PropTypes.object.isRequired, + blurhash: PropTypes.string, cacheWidth: PropTypes.func, + visible: PropTypes.bool, + onToggleVisibility: PropTypes.func, backgroundColor: PropTypes.string, foregroundColor: PropTypes.string, accentColor: PropTypes.string, @@ -53,6 +61,7 @@ class Audio extends React.PureComponent { muted: false, volume: 0.5, dragging: false, + revealed: this.props.visible !== undefined ? this.props.visible : (displayMedia !== 'hide_all' && !this.props.sensitive || displayMedia === 'show_all'), }; constructor (props) { @@ -78,6 +87,8 @@ class Audio extends React.PureComponent { backgroundColor: this.props.backgroundColor, foregroundColor: this.props.foregroundColor, accentColor: this.props.accentColor, + sensitive: this.props.sensitive, + visible: this.props.visible, }; } @@ -126,6 +137,12 @@ class Audio extends React.PureComponent { } } + componentWillReceiveProps (nextProps) { + if (!is(nextProps.visible, this.props.visible) && nextProps.visible !== undefined) { + this.setState({ revealed: nextProps.visible }); + } + } + componentWillUnmount () { window.removeEventListener('scroll', this.handleScroll); window.removeEventListener('resize', this.handleResize); @@ -189,6 +206,14 @@ class Audio extends React.PureComponent { }); } + toggleReveal = () => { + if (this.props.onToggleVisibility) { + this.props.onToggleVisibility(); + } else { + this.setState({ revealed: !this.state.revealed }); + } + } + handleVolumeMouseDown = e => { document.addEventListener('mousemove', this.handleMouseVolSlide, true); document.addEventListener('mouseup', this.handleVolumeMouseUp, true); @@ -433,13 +458,29 @@ class Audio extends React.PureComponent { } render () { - const { src, intl, alt, editable, autoPlay } = this.props; - const { paused, muted, volume, currentTime, duration, buffer, dragging } = this.state; + const { src, intl, alt, editable, autoPlay, sensitive, blurhash } = this.props; + const { paused, muted, volume, currentTime, duration, buffer, dragging, revealed } = this.state; const progress = Math.min((currentTime / duration) * 100, 100); + let warning; + if (sensitive) { + warning = ; + } else { + warning = ; + } + return ( -
    -
    + + {(revealed || editable) && + />}
    @@ -508,6 +555,7 @@ class Audio extends React.PureComponent {
    + {!editable && } diff --git a/app/javascript/mastodon/features/status/components/detailed_status.js b/app/javascript/mastodon/features/status/components/detailed_status.js index 13bce1b83..5c43c2038 100644 --- a/app/javascript/mastodon/features/status/components/detailed_status.js +++ b/app/javascript/mastodon/features/status/components/detailed_status.js @@ -138,7 +138,11 @@ class DetailedStatus extends ImmutablePureComponent { backgroundColor={attachment.getIn(['meta', 'colors', 'background'])} foregroundColor={attachment.getIn(['meta', 'colors', 'foreground'])} accentColor={attachment.getIn(['meta', 'colors', 'accent'])} + sensitive={status.get('sensitive')} + visible={this.props.showMedia} + blurhash={attachment.get('blurhash')} height={150} + onToggleVisibility={this.props.onToggleMediaVisibility} /> ); } else if (status.getIn(['media_attachments', 0, 'type']) === 'video') { diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 3e202841b..a0a39812b 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -5939,6 +5939,13 @@ a.status-card.compact:hover { height: 100%; } + &.inactive { + audio, + .video-player__controls { + visibility: hidden; + } + } + .video-player__volume::before, .video-player__seek::before { background: currentColor; From 8d3318910461c30ffbfc48a15f8b907f45ce98a3 Mon Sep 17 00:00:00 2001 From: gol-cha Date: Sat, 13 Aug 2022 22:40:00 +0900 Subject: [PATCH 284/652] Remove Rack::Deflater (#17937) Co-authored-by: Eugen Rochko --- config/application.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/config/application.rb b/config/application.rb index 06360832c..2e54eb6f6 100644 --- a/config/application.rb +++ b/config/application.rb @@ -165,7 +165,6 @@ module Mastodon config.active_job.queue_adapter = :sidekiq config.middleware.use Rack::Attack - config.middleware.use Rack::Deflater config.middleware.use Mastodon::RackMiddleware config.to_prepare do From fc46fa8f99124b132a82f4f7ef06850c45df445b Mon Sep 17 00:00:00 2001 From: Brayd Date: Sat, 13 Aug 2022 15:41:12 +0200 Subject: [PATCH 285/652] Minimal adjustments to the short description (#18001) Minimal adjustments have been made to the short description so that it logically follows the long description --- lib/mastodon/accounts_cli.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/mastodon/accounts_cli.rb b/lib/mastodon/accounts_cli.rb index 29c934453..558f4d3c4 100644 --- a/lib/mastodon/accounts_cli.rb +++ b/lib/mastodon/accounts_cli.rb @@ -57,7 +57,7 @@ module Mastodon option :role option :reattach, type: :boolean option :force, type: :boolean - desc 'create USERNAME', 'Create a new user' + desc 'create USERNAME', 'Create a new user account' long_desc <<-LONG_DESC Create a new user account with a given USERNAME and an e-mail address provided with --email. @@ -133,7 +133,7 @@ module Mastodon option :disable_2fa, type: :boolean option :approve, type: :boolean option :reset_password, type: :boolean - desc 'modify USERNAME', 'Modify a user' + desc 'modify USERNAME', 'Modify a user account' long_desc <<-LONG_DESC Modify a user account. From f879cf03f03632c016a0c5b73e90a388f04bed13 Mon Sep 17 00:00:00 2001 From: The Stranjer <791672+TheStranjer@users.noreply.github.com> Date: Sat, 13 Aug 2022 07:44:34 -0600 Subject: [PATCH 286/652] Make Mastodon use its own gemset (#17858) --- .ruby-gemset | 1 + 1 file changed, 1 insertion(+) create mode 100644 .ruby-gemset diff --git a/.ruby-gemset b/.ruby-gemset new file mode 100644 index 000000000..2b97bf65d --- /dev/null +++ b/.ruby-gemset @@ -0,0 +1 @@ +mastodon From aa33c7f26e67ca2afdd69557ffbae3d9ae656dce Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 15 Aug 2022 00:39:44 +0200 Subject: [PATCH 287/652] New Crowdin updates (#18905) * New translations doorkeeper.en.yml (Chinese Traditional) * New translations en.yml (Urdu (Pakistan)) * New translations devise.en.yml (Urdu (Pakistan)) * New translations en.yml (Vietnamese) * New translations simple_form.en.yml (Vietnamese) * New translations simple_form.en.yml (Bengali) * New translations simple_form.en.yml (Spanish, Argentina) * New translations devise.en.yml (Spanish, Argentina) * New translations doorkeeper.en.yml (Spanish, Argentina) * New translations en.yml (Spanish, Mexico) * New translations simple_form.en.yml (Spanish, Mexico) * New translations activerecord.en.yml (Spanish, Mexico) * New translations devise.en.yml (Spanish, Mexico) * New translations doorkeeper.en.yml (Spanish, Mexico) * New translations en.yml (Bengali) * New translations activerecord.en.yml (Bengali) * New translations doorkeeper.en.yml (Tamil) * New translations devise.en.yml (Bengali) * New translations en.yml (Marathi) * New translations activerecord.en.yml (Marathi) * New translations doorkeeper.en.yml (Marathi) * New translations devise.en.yml (Thai) * New translations en.yml (Croatian) * New translations simple_form.en.yml (Croatian) * New translations en.yml (Spanish, Argentina) * New translations devise.en.yml (Tamil) * New translations devise.en.yml (Vietnamese) * New translations devise.en.yml (Portuguese, Brazilian) * New translations doorkeeper.en.yml (Vietnamese) * New translations en.yml (Galician) * New translations simple_form.en.yml (Galician) * New translations devise.en.yml (Galician) * New translations doorkeeper.en.yml (Galician) * New translations devise.en.yml (Icelandic) * New translations doorkeeper.en.yml (Icelandic) * New translations en.yml (Portuguese, Brazilian) * New translations simple_form.en.yml (Portuguese, Brazilian) * New translations activerecord.en.yml (Portuguese, Brazilian) * New translations doorkeeper.en.yml (Portuguese, Brazilian) * New translations activerecord.en.yml (Tamil) * New translations simple_form.en.yml (Indonesian) * New translations devise.en.yml (Indonesian) * New translations doorkeeper.en.yml (Indonesian) * New translations en.yml (Persian) * New translations simple_form.en.yml (Persian) * New translations activerecord.en.yml (Persian) * New translations devise.en.yml (Persian) * New translations doorkeeper.en.yml (Persian) * New translations en.yml (Tamil) * New translations simple_form.en.yml (Tamil) * New translations activerecord.en.yml (Croatian) * New translations devise.en.yml (Croatian) * New translations en.yml (English, United Kingdom) * New translations en.yml (Telugu) * New translations doorkeeper.en.yml (Hindi) * New translations devise.en.yml (English, United Kingdom) * New translations en.yml (Welsh) * New translations simple_form.en.yml (Welsh) * New translations activerecord.en.yml (Welsh) * New translations devise.en.yml (Welsh) * New translations doorkeeper.en.yml (Welsh) * New translations simple_form.en.yml (Esperanto) * New translations activerecord.en.yml (Esperanto) * New translations en.yml (Malay) * New translations devise.en.yml (Hindi) * New translations doorkeeper.en.yml (Croatian) * New translations en.yml (Estonian) * New translations en.yml (Norwegian Nynorsk) * New translations simple_form.en.yml (Norwegian Nynorsk) * New translations activerecord.en.yml (Norwegian Nynorsk) * New translations devise.en.yml (Norwegian Nynorsk) * New translations doorkeeper.en.yml (Norwegian Nynorsk) * New translations en.yml (Kazakh) * New translations simple_form.en.yml (Kazakh) * New translations activerecord.en.yml (Kazakh) * New translations devise.en.yml (Kazakh) * New translations doorkeeper.en.yml (Kazakh) * New translations simple_form.en.yml (Estonian) * New translations activerecord.en.yml (Hindi) * New translations activerecord.en.yml (Estonian) * New translations devise.en.yml (Estonian) * New translations doorkeeper.en.yml (Estonian) * New translations en.yml (Latvian) * New translations simple_form.en.yml (Latvian) * New translations activerecord.en.yml (Latvian) * New translations devise.en.yml (Latvian) * New translations doorkeeper.en.yml (Latvian) * New translations en.yml (Hindi) * New translations devise.en.yml (Esperanto) * New translations doorkeeper.en.yml (Esperanto) * New translations activerecord.en.yml (Sinhala) * New translations devise.en.yml (Sinhala) * New translations doorkeeper.en.yml (Sinhala) * New translations en.yml (Cornish) * New translations en.yml (Kannada) * New translations en.yml (Sinhala) * New translations devise.en.yml (Kannada) * New translations en.yml (Scottish Gaelic) * New translations simple_form.en.yml (Scottish Gaelic) * New translations activerecord.en.yml (Scottish Gaelic) * New translations devise.en.yml (Scottish Gaelic) * New translations doorkeeper.en.yml (Scottish Gaelic) * New translations en.yml (Asturian) * New translations simple_form.en.yml (Asturian) * New translations activerecord.en.yml (Asturian) * New translations simple_form.en.yml (Sinhala) * New translations doorkeeper.en.yml (Breton) * New translations en.yml (Uyghur) * New translations simple_form.en.yml (Tatar) * New translations en.yml (Chinese Traditional, Hong Kong) * New translations simple_form.en.yml (Chinese Traditional, Hong Kong) * New translations activerecord.en.yml (Chinese Traditional, Hong Kong) * New translations devise.en.yml (Chinese Traditional, Hong Kong) * New translations doorkeeper.en.yml (Chinese Traditional, Hong Kong) * New translations en.yml (Tatar) * New translations activerecord.en.yml (Tatar) * New translations devise.en.yml (Breton) * New translations devise.en.yml (Tatar) * New translations doorkeeper.en.yml (Tatar) * New translations en.yml (Malayalam) * New translations simple_form.en.yml (Malayalam) * New translations activerecord.en.yml (Malayalam) * New translations devise.en.yml (Malayalam) * New translations doorkeeper.en.yml (Malayalam) * New translations en.yml (Breton) * New translations simple_form.en.yml (Breton) * New translations activerecord.en.yml (Breton) * New translations devise.en.yml (Asturian) * New translations doorkeeper.en.yml (Asturian) * New translations simple_form.en.yml (Kabyle) * New translations activerecord.en.yml (Sardinian) * New translations devise.en.yml (Sardinian) * New translations doorkeeper.en.yml (Sardinian) * New translations en.yml (Sanskrit) * New translations en.yml (Kabyle) * New translations activerecord.en.yml (Kabyle) * New translations en.yml (Sardinian) * New translations devise.en.yml (Kabyle) * New translations doorkeeper.en.yml (Kabyle) * New translations en.yml (Ido) * New translations simple_form.en.yml (Ido) * New translations devise.en.yml (Ido) * New translations doorkeeper.en.yml (Ido) * New translations en.yml (Taigi) * New translations simple_form.en.yml (Sardinian) * New translations doorkeeper.en.yml (Corsican) * New translations en.yml (Occitan) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Occitan) * New translations activerecord.en.yml (Occitan) * New translations devise.en.yml (Occitan) * New translations doorkeeper.en.yml (Occitan) * New translations en.yml (Serbian (Latin)) * New translations simple_form.en.yml (Serbian (Latin)) * New translations activerecord.en.yml (Serbian (Latin)) * New translations devise.en.yml (Serbian (Latin)) * New translations doorkeeper.en.yml (Serbian (Latin)) * New translations en.yml (Kurmanji (Kurdish)) * New translations activerecord.en.yml (Kurmanji (Kurdish)) * New translations devise.en.yml (Corsican) * New translations devise.en.yml (Kurmanji (Kurdish)) * New translations doorkeeper.en.yml (Kurmanji (Kurdish)) * New translations en.yml (Sorani (Kurdish)) * New translations simple_form.en.yml (Sorani (Kurdish)) * New translations activerecord.en.yml (Sorani (Kurdish)) * New translations devise.en.yml (Sorani (Kurdish)) * New translations doorkeeper.en.yml (Sorani (Kurdish)) * New translations en.yml (Corsican) * New translations simple_form.en.yml (Corsican) * New translations activerecord.en.yml (Corsican) * New translations en.yml (Silesian) * New translations en.yml (Standard Moroccan Tamazight) * New translations simple_form.en.yml (Standard Moroccan Tamazight) * New translations activerecord.en.yml (Standard Moroccan Tamazight) * New translations devise.en.yml (Standard Moroccan Tamazight) * New translations doorkeeper.en.yml (Standard Moroccan Tamazight) * New translations en.yml (Vietnamese) * New translations en.yml (Esperanto) * New translations simple_form.en.yml (Esperanto) * New translations simple_form.en.yml (Esperanto) * New translations en.yml (Esperanto) * New translations en.json (Ido) * New translations en.yml (German) * New translations en.yml (German) * New translations en.json (Hebrew) * New translations en.json (Hebrew) * New translations en.yml (Hebrew) * New translations activerecord.en.yml (German) * New translations en.yml (Hebrew) * New translations en.json (Scottish Gaelic) * New translations en.yml (Scottish Gaelic) * New translations simple_form.en.yml (Scottish Gaelic) * New translations activerecord.en.yml (Scottish Gaelic) * New translations doorkeeper.en.yml (Scottish Gaelic) * New translations en.yml (Chinese Simplified) * New translations en.json (Chinese Simplified) * New translations en.json (Chinese Simplified) * New translations en.json (Esperanto) * New translations en.yml (Esperanto) * New translations en.yml (Esperanto) * New translations en.json (Spanish) * New translations en.yml (German) * New translations simple_form.en.yml (German) * New translations activerecord.en.yml (German) * New translations en.yml (Thai) * New translations en.yml (Thai) * New translations en.json (Dutch) * New translations en.yml (Dutch) * New translations devise.en.yml (Dutch) * New translations en.json (Dutch) * New translations en.yml (Dutch) * New translations simple_form.en.yml (Dutch) * New translations en.json (Slovak) * New translations en.json (Finnish) * New translations en.json (Finnish) * New translations simple_form.en.yml (Finnish) * New translations activerecord.en.yml (Finnish) * New translations doorkeeper.en.yml (Finnish) * New translations en.yml (German) * New translations simple_form.en.yml (German) * New translations en.yml (German) * New translations en.yml (Russian) * New translations simple_form.en.yml (Russian) * New translations en.yml (Thai) * New translations en.yml (Thai) * New translations en.json (Norwegian Nynorsk) * New translations en.json (Norwegian Nynorsk) * New translations en.yml (Norwegian Nynorsk) * New translations simple_form.en.yml (Norwegian Nynorsk) * New translations activerecord.en.yml (Norwegian Nynorsk) * New translations devise.en.yml (Norwegian Nynorsk) * New translations doorkeeper.en.yml (Norwegian Nynorsk) * New translations en.yml (Norwegian Nynorsk) * New translations en.json (Kurmanji (Kurdish)) * New translations en.yml (Kurmanji (Kurdish)) * New translations activerecord.en.yml (Kurmanji (Kurdish)) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.json (Albanian) * New translations en.yml (Thai) * New translations en.yml (Thai) * New translations en.json (Japanese) * New translations en.yml (Japanese) * New translations activerecord.en.yml (Japanese) * New translations en.yml (Japanese) * New translations en.yml (Esperanto) * New translations en.json (Slovak) * New translations en.yml (Slovak) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 1 + app/javascript/mastodon/locales/ar.json | 1 + app/javascript/mastodon/locales/ast.json | 1 + app/javascript/mastodon/locales/bg.json | 1 + app/javascript/mastodon/locales/bn.json | 1 + app/javascript/mastodon/locales/br.json | 21 +-- app/javascript/mastodon/locales/ca.json | 5 +- app/javascript/mastodon/locales/ckb.json | 1 + app/javascript/mastodon/locales/co.json | 1 + app/javascript/mastodon/locales/cs.json | 1 + app/javascript/mastodon/locales/cy.json | 1 + app/javascript/mastodon/locales/da.json | 5 +- app/javascript/mastodon/locales/de.json | 5 +- .../mastodon/locales/defaultMessages.json | 12 ++ app/javascript/mastodon/locales/el.json | 5 +- app/javascript/mastodon/locales/en-GB.json | 1 + app/javascript/mastodon/locales/en.json | 1 + app/javascript/mastodon/locales/eo.json | 5 +- app/javascript/mastodon/locales/es-AR.json | 5 +- app/javascript/mastodon/locales/es-MX.json | 5 +- app/javascript/mastodon/locales/es.json | 5 +- app/javascript/mastodon/locales/et.json | 1 + app/javascript/mastodon/locales/eu.json | 1 + app/javascript/mastodon/locales/fa.json | 1 + app/javascript/mastodon/locales/fi.json | 67 ++++----- app/javascript/mastodon/locales/fr.json | 5 +- app/javascript/mastodon/locales/fy.json | 1 + app/javascript/mastodon/locales/ga.json | 1 + app/javascript/mastodon/locales/gd.json | 35 ++--- app/javascript/mastodon/locales/gl.json | 5 +- app/javascript/mastodon/locales/he.json | 7 +- app/javascript/mastodon/locales/hi.json | 1 + app/javascript/mastodon/locales/hr.json | 1 + app/javascript/mastodon/locales/hu.json | 5 +- app/javascript/mastodon/locales/hy.json | 1 + app/javascript/mastodon/locales/id.json | 1 + app/javascript/mastodon/locales/io.json | 5 +- app/javascript/mastodon/locales/is.json | 9 +- app/javascript/mastodon/locales/it.json | 5 +- app/javascript/mastodon/locales/ja.json | 5 +- app/javascript/mastodon/locales/ka.json | 1 + app/javascript/mastodon/locales/kab.json | 1 + app/javascript/mastodon/locales/kk.json | 1 + app/javascript/mastodon/locales/kn.json | 1 + app/javascript/mastodon/locales/ko.json | 5 +- app/javascript/mastodon/locales/ku.json | 5 +- app/javascript/mastodon/locales/kw.json | 1 + app/javascript/mastodon/locales/lt.json | 1 + app/javascript/mastodon/locales/lv.json | 5 +- app/javascript/mastodon/locales/mk.json | 1 + app/javascript/mastodon/locales/ml.json | 1 + app/javascript/mastodon/locales/mr.json | 1 + app/javascript/mastodon/locales/ms.json | 1 + app/javascript/mastodon/locales/nl.json | 19 +-- app/javascript/mastodon/locales/nn.json | 137 +++++++++--------- app/javascript/mastodon/locales/no.json | 1 + app/javascript/mastodon/locales/oc.json | 1 + app/javascript/mastodon/locales/pa.json | 1 + app/javascript/mastodon/locales/pl.json | 5 +- app/javascript/mastodon/locales/pt-BR.json | 1 + app/javascript/mastodon/locales/pt-PT.json | 5 +- app/javascript/mastodon/locales/ro.json | 1 + app/javascript/mastodon/locales/ru.json | 5 +- app/javascript/mastodon/locales/sa.json | 1 + app/javascript/mastodon/locales/sc.json | 1 + app/javascript/mastodon/locales/si.json | 1 + app/javascript/mastodon/locales/sk.json | 13 +- app/javascript/mastodon/locales/sl.json | 5 +- app/javascript/mastodon/locales/sq.json | 5 +- app/javascript/mastodon/locales/sr-Latn.json | 1 + app/javascript/mastodon/locales/sr.json | 1 + app/javascript/mastodon/locales/sv.json | 1 + app/javascript/mastodon/locales/szl.json | 1 + app/javascript/mastodon/locales/ta.json | 1 + app/javascript/mastodon/locales/tai.json | 1 + app/javascript/mastodon/locales/te.json | 1 + app/javascript/mastodon/locales/th.json | 9 +- app/javascript/mastodon/locales/tr.json | 5 +- app/javascript/mastodon/locales/tt.json | 1 + app/javascript/mastodon/locales/ug.json | 1 + app/javascript/mastodon/locales/uk.json | 5 +- app/javascript/mastodon/locales/ur.json | 1 + app/javascript/mastodon/locales/vi.json | 5 +- app/javascript/mastodon/locales/zgh.json | 1 + app/javascript/mastodon/locales/zh-CN.json | 7 +- app/javascript/mastodon/locales/zh-HK.json | 1 + app/javascript/mastodon/locales/zh-TW.json | 5 +- config/locales/activerecord.de.yml | 11 ++ config/locales/activerecord.es-MX.yml | 2 + config/locales/activerecord.fi.yml | 19 +++ config/locales/activerecord.gd.yml | 19 +++ config/locales/activerecord.ja.yml | 6 + config/locales/activerecord.ku.yml | 2 + config/locales/activerecord.nn.yml | 32 +++- config/locales/de.yml | 82 +++++++++++ config/locales/devise.en-GB.yml | 1 + config/locales/devise.ku.yml | 6 +- config/locales/devise.nl.yml | 2 +- config/locales/devise.nn.yml | 50 +++---- config/locales/doorkeeper.fi.yml | 8 + config/locales/doorkeeper.nn.yml | 33 ++++- config/locales/doorkeeper.th.yml | 2 +- config/locales/eo.yml | 71 ++++----- config/locales/es-MX.yml | 70 +++++++++ config/locales/gd.yml | 113 ++++++++++++++- config/locales/he.yml | 109 ++++++++++++-- config/locales/ja.yml | 38 +++++ config/locales/ku.yml | 11 ++ config/locales/lv.yml | 10 +- config/locales/nl.yml | 11 +- config/locales/nn.yml | 13 +- config/locales/ru.yml | 2 + config/locales/simple_form.de.yml | 25 ++++ config/locales/simple_form.eo.yml | 2 +- config/locales/simple_form.es-MX.yml | 1 + config/locales/simple_form.fi.yml | 20 +++ config/locales/simple_form.gd.yml | 31 ++++ config/locales/simple_form.nl.yml | 2 +- config/locales/simple_form.nn.yml | 18 +++ config/locales/simple_form.ru.yml | 8 +- config/locales/simple_form.th.yml | 12 +- config/locales/sk.yml | 31 ++++ config/locales/th.yml | 42 +++++- config/locales/vi.yml | 2 +- config/locales/zh-CN.yml | 2 + 125 files changed, 1115 insertions(+), 320 deletions(-) create mode 100644 config/locales/devise.en-GB.yml diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 942c8191f..cb5a70dd4 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oops!", "announcement.announcement": "Aankondiging", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.body": "Something went wrong while loading this component.", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 13d6e4e7a..45a5beede 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "المعذرة!", "announcement.announcement": "إعلان", "attachments_list.unprocessed": "(غير معالَج)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} في الأسبوع", "boost_modal.combo": "يُمكنك الضّغط على {combo} لتخطي هذا في المرة المُقبلة", "bundle_column_error.body": "لقد حدث خطأ ما أثناء تحميل هذا العنصر.", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 034885e81..289e328f5 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "¡Meca!", "announcement.announcement": "Anunciu", "attachments_list.unprocessed": "(ensin procesar)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per selmana", "boost_modal.combo": "Pues primir {combo} pa saltar esto la próxima vegada", "bundle_column_error.body": "Asocedió daqué malo mentanto se cargaba esti componente.", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 89f2efc85..160219e09 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Опаа!", "announcement.announcement": "Оповестяване", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} на седмица", "boost_modal.combo": "Можете да натиснете {combo}, за да пропуснете това следващия път", "bundle_column_error.body": "Нещо се обърка при зареждането на този компонент.", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index 852c4c720..d4626e463 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "ওহো!", "announcement.announcement": "ঘোষণা", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "প্রতি সপ্তাহে {count}", "boost_modal.combo": "পরেরবার আপনি {combo} টিপলে এটি আর আসবে না", "bundle_column_error.body": "এই অংশটি দেখতে যেয়ে কোনো সমস্যা হয়েছে।.", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index ac504c49c..c784c697a 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -18,7 +18,7 @@ "account.followers": "Heulier·ezed·ien", "account.followers.empty": "Den na heul an implijer-mañ c'hoazh.", "account.followers_counter": "{count, plural, other{{counter} Heulier}}", - "account.following": "Following", + "account.following": "O heuliañ", "account.following_counter": "{count, plural, other {{counter} Heuliañ}}", "account.follows.empty": "An implijer·ez-mañ na heul den ebet.", "account.follows_you": "Ho heul", @@ -59,6 +59,7 @@ "alert.unexpected.title": "Hopala!", "announcement.announcement": "Kemenn", "attachments_list.unprocessed": "(ket meret)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} bep sizhun", "boost_modal.combo": "Ar wezh kentañ e c'halliot gwaskañ war {combo} evit tremen hebiou", "bundle_column_error.body": "Degouezhet ez eus bet ur fazi en ur gargañ an elfenn-mañ.", @@ -108,7 +109,7 @@ "compose_form.poll.switch_to_single": "Kemmañ ar sontadeg evit aotren un dibab hepken", "compose_form.publish": "Embann", "compose_form.publish_loud": "{publish} !", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Enrollañ ar cheñchamantoù", "compose_form.sensitive.hide": "Merkañ ar media evel kizidik", "compose_form.sensitive.marked": "Merket eo ar media evel kizidik", "compose_form.sensitive.unmarked": "N'eo ket merket ar media evel kizidik", @@ -149,7 +150,7 @@ "embed.instructions": "Enkorfit ar statud war ho lec'hienn en ur eilañ ar c'hod dindan.", "embed.preview": "Setu penaos e vo diskouezet:", "emoji_button.activity": "Obererezh", - "emoji_button.clear": "Clear", + "emoji_button.clear": "Diverkañ", "emoji_button.custom": "Kempennet", "emoji_button.flags": "Bannieloù", "emoji_button.food": "Boued hag Evaj", @@ -169,7 +170,7 @@ "empty_column.blocks": "N'eus ket bet berzet implijer·ez ganeoc'h c'hoazh.", "empty_column.bookmarked_statuses": "N'ho peus toud ebet enrollet en ho sinedoù c'hoazh. Pa vo ouzhpennet unan ganeoc'h e teuio war wel amañ.", "empty_column.community": "Goulo eo ar red-amzer lec'hel. Skrivit'ta un dra evit lakaat tan dezhi !", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "N'ho peus kemennad prevez ebet c'hoazh. Pa vo resevet pe kaset unan ganeoc'h e teuio war wel amañ.", "empty_column.domain_blocks": "N'eus domani kuzh ebet c'hoazh.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "N'ho peus toud muiañ-karet ebet c'hoazh. Pa vo lakaet unan ganeoc'h e vo diskouezet amañ.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Unan e mesk anezho", "hashtag.column_settings.tag_mode.none": "Hini ebet anezho", "hashtag.column_settings.tag_toggle": "Endelc'her gerioù-alc'hwez ouzhpenn evit ar bannad-mañ", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Heuliañ ar ger-klik", "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Paouez heuliañ ar ger-klik", "home.column_settings.basic": "Diazez", "home.column_settings.show_reblogs": "Diskouez ar skignadennoù", "home.column_settings.show_replies": "Diskouez ar respontoù", @@ -270,8 +271,8 @@ "lightbox.expand": "Ledanaat boest hewel ar skeudenn", "lightbox.next": "Da-heul", "lightbox.previous": "A-raok", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Diskouez an aelad memes tra", + "limited_account_hint.title": "Kuzhet eo bet an aelad-mañ gant habaskerien·ezed ho servijer.", "lists.account.add": "Ouzhpennañ d'al listenn", "lists.account.remove": "Lemel kuit eus al listenn", "lists.delete": "Dilemel al listenn", @@ -317,8 +318,8 @@ "navigation_bar.preferences": "Gwellvezioù", "navigation_bar.public_timeline": "Red-amzer kevreet", "navigation_bar.security": "Diogelroez", - "notification.admin.report": "{name} reported {target}", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.report": "Disklêriet eo bet {target} gant {name}", + "notification.admin.sign_up": "{name} en·he deus lakaet e·hec'h anv", "notification.favourite": "{name} en/he deus lakaet ho toud en e/he muiañ-karet", "notification.follow": "heuliañ a ra {name} ac'hanoc'h", "notification.follow_request": "{name} en/he deus goulennet da heuliañ ac'hanoc'h", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index bc6029fe0..5549b3952 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Vaja!", "announcement.announcement": "Anunci", "attachments_list.unprocessed": "(sense processar)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per setmana", "boost_modal.combo": "Pots prémer {combo} per evitar-ho el pròxim cop", "bundle_column_error.body": "S'ha produït un error en carregar aquest component.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Qualsevol d’aquests", "hashtag.column_settings.tag_mode.none": "Cap d’aquests", "hashtag.column_settings.tag_toggle": "Inclou etiquetes addicionals per a aquesta columna", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Segueix etiqueta", "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Deixa de seguir etiqueta", "home.column_settings.basic": "Bàsic", "home.column_settings.show_reblogs": "Mostra els impulsos", "home.column_settings.show_replies": "Mostra les respostes", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 80c5089ae..1addda370 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "تەححح!", "announcement.announcement": "بانگەواز", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} هەرهەفتە", "boost_modal.combo": "دەتوانیت دەست بنێی بە سەر {combo} بۆ بازدان لە جاری داهاتوو", "bundle_column_error.body": "هەڵەیەک ڕوویدا لەکاتی بارکردنی ئەم پێکهاتەیە.", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 2dbc256ee..63d214046 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Uups!", "announcement.announcement": "Annunziu", "attachments_list.unprocessed": "(micca trattata)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per settimana", "boost_modal.combo": "Pudete appughjà nant'à {combo} per saltà quessa a prussima volta", "bundle_column_error.body": "C'hè statu un prublemu caricandu st'elementu.", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 2f667eae6..7ac077ae5 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Jejda!", "announcement.announcement": "Oznámení", "attachments_list.unprocessed": "(nezpracováno)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} za týden", "boost_modal.combo": "Příště můžete pro přeskočení stisknout {combo}", "bundle_column_error.body": "Při načítání této komponenty se něco pokazilo.", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 228fd280f..f6440db72 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Wps!", "announcement.announcement": "Cyhoeddiad", "attachments_list.unprocessed": "(heb eu prosesu)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} yr wythnos", "boost_modal.combo": "Mae modd gwasgu {combo} er mwyn sgipio hyn tro nesa", "bundle_column_error.body": "Aeth rhywbeth o'i le tra'n llwytho'r elfen hon.", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 0898b9081..ef7f85a3b 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Ups!", "announcement.announcement": "Bekendtgørelse", "attachments_list.unprocessed": "(ubehandlet)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} pr. uge", "boost_modal.combo": "Du kan trykke på {combo} for at overspringe dette næste gang", "bundle_column_error.body": "Noget gik galt under indlæsningen af denne komponent.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Nogle af disse", "hashtag.column_settings.tag_mode.none": "Ingen af disse", "hashtag.column_settings.tag_toggle": "Inkludér ekstra tags for denne kolonne", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Følg hashtag", "hashtag.total_volume": "Samlet volumen {days, plural, one {den seneste dag} other {de seneste {days} dage}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Stop med at følge hashtag", "home.column_settings.basic": "Grundlæggende", "home.column_settings.show_reblogs": "Vis boosts", "home.column_settings.show_replies": "Vis svar", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index f2ec638c7..8a9d0f06d 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Hoppla!", "announcement.announcement": "Ankündigung", "attachments_list.unprocessed": "(ausstehend)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} pro Woche", "boost_modal.combo": "Drücke {combo}, um dieses Fenster zu überspringen", "bundle_column_error.body": "Etwas ist beim Laden schiefgelaufen.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Eins von diesen", "hashtag.column_settings.tag_mode.none": "Keins von diesen", "hashtag.column_settings.tag_toggle": "Zusätzliche Hashtags für diese Spalte einfügen", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Hashtag folgen", "hashtag.total_volume": "Gesamtes Aufkommen {days, plural, one {am letzten Tag} other {in den letzten {days} Tagen}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Hashtag entfolgen", "home.column_settings.basic": "Einfach", "home.column_settings.show_reblogs": "Geteilte Beiträge anzeigen", "home.column_settings.show_replies": "Antworten anzeigen", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 908396348..760602f6e 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -1078,6 +1078,18 @@ { "defaultMessage": "Download file", "id": "video.download" + }, + { + "defaultMessage": "Hide audio", + "id": "audio.hide" + }, + { + "defaultMessage": "Sensitive content", + "id": "status.sensitive_warning" + }, + { + "defaultMessage": "Media hidden", + "id": "status.media_hidden" } ], "path": "app/javascript/mastodon/features/audio/index.json" diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 3cfce1647..de96147cf 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Εεπ!", "announcement.announcement": "Ανακοίνωση", "attachments_list.unprocessed": "(μη επεξεργασμένο)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} ανα εβδομάδα", "boost_modal.combo": "Μπορείς να πατήσεις {combo} για να το προσπεράσεις αυτό την επόμενη φορά", "bundle_column_error.body": "Κάτι πήγε στραβά ενώ φορτωνόταν αυτό το στοιχείο.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Οποιοδήποτε από αυτά", "hashtag.column_settings.tag_mode.none": "Κανένα από αυτά", "hashtag.column_settings.tag_toggle": "Προσθήκη επιπλέον ταμπελών για την κολώνα", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Παρακολούθηση ετικέτας", "hashtag.total_volume": "Συνολικός όγκος κατά την τελευταία {days, plural, one {ημέρα} other {{days} ημέρες}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Διακοπή παρακολούθησης ετικέτας", "home.column_settings.basic": "Βασικές ρυθμίσεις", "home.column_settings.show_reblogs": "Εμφάνιση προωθήσεων", "home.column_settings.show_replies": "Εμφάνιση απαντήσεων", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 535c5852a..988793357 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oops!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.body": "Something went wrong while loading this component.", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index ed7ea2992..22ecee8df 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oops!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.body": "Something went wrong while loading this component.", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 67872ff0a..a86842d08 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Aj!", "announcement.announcement": "Anonco", "attachments_list.unprocessed": "(neprilaborita)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} semajne", "boost_modal.combo": "Vi povas premi {combo} por preterpasi sekvafoje", "bundle_column_error.body": "Io misfunkciis en la ŝargado de ĉi tiu elemento.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Iu ajn", "hashtag.column_settings.tag_mode.none": "Neniu", "hashtag.column_settings.tag_toggle": "Aldoni pliajn etikedojn por ĉi tiu kolumno", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Sekvi la kradvorton", "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Ne plu sekvi la kradvorton", "home.column_settings.basic": "Bazaj agordoj", "home.column_settings.show_reblogs": "Montri plusendojn", "home.column_settings.show_replies": "Montri respondojn", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 0eeb6e1ff..9f2bbc2e4 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "¡Epa!", "announcement.announcement": "Anuncio", "attachments_list.unprocessed": "[sin procesar]", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Podés hacer clic en {combo} para saltar esto la próxima vez", "bundle_column_error.body": "Algo salió mal al cargar este componente.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Cualquiera de estas", "hashtag.column_settings.tag_mode.none": "Ninguna de estas", "hashtag.column_settings.tag_toggle": "Incluir etiquetas adicionales para esta columna", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Seguir etiqueta", "hashtag.total_volume": "Volumen total en el/los último/s {days, plural, one {día} other {{days} días}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Dejar de seguir etiqueta", "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar adhesiones", "home.column_settings.show_replies": "Mostrar respuestas", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 23a8d7247..d8854041b 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "¡Ups!", "announcement.announcement": "Anuncio", "attachments_list.unprocessed": "(sin procesar)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Puedes hacer clic en {combo} para saltar este aviso la próxima vez", "bundle_column_error.body": "Algo salió mal al cargar este componente.", @@ -221,7 +222,7 @@ "hashtag.column_settings.tag_mode.none": "Ninguno de estos", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", "hashtag.follow": "Follow hashtag", - "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.total_volume": "Volumen total en los últimos {days, plural, one {día} other {{days} días}}", "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar retoots", @@ -520,7 +521,7 @@ "timeline_hint.resources.followers": "Seguidores", "timeline_hint.resources.follows": "Seguidos", "timeline_hint.resources.statuses": "Toots más antiguos", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} personas}} en los últimos {days, plural, one {días} other {{days} días}}", "trends.trending_now": "Tendencia ahora", "ui.beforeunload": "Tu borrador se perderá si sales de Mastodon.", "units.short.billion": "{count} MM", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 0ca847b35..928b870e4 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "¡Ups!", "announcement.announcement": "Anuncio", "attachments_list.unprocessed": "(sin procesar)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Puedes hacer clic en {combo} para saltar este aviso la próxima vez", "bundle_column_error.body": "Algo salió mal al cargar este componente.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Cualquiera de estos", "hashtag.column_settings.tag_mode.none": "Ninguno de estos", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Seguir etiqueta", "hashtag.total_volume": "Volumen total en los últimos {days, plural, one {día} other {{days} días}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Dejar de seguir etiqueta", "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar retoots", "home.column_settings.show_replies": "Mostrar respuestas", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 2b6594b87..0bac1f3d3 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oih!", "announcement.announcement": "Teadaanne", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} nädalas", "boost_modal.combo": "Võite vajutada {combo}, et see järgmine kord vahele jätta", "bundle_column_error.body": "Midagi läks valesti selle komponendi laadimisel.", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 44ab5f80e..76c520a59 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Ene!", "announcement.announcement": "Iragarpena", "attachments_list.unprocessed": "(prozesatu gabe)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} asteko", "boost_modal.combo": "{combo} sakatu dezakezu hurrengoan hau saltatzeko", "bundle_column_error.body": "Zerbait okerra gertatu da osagai hau kargatzean.", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 977b0aa74..c3876e2e3 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "ای وای!", "announcement.announcement": "اعلامیه", "attachments_list.unprocessed": "(پردازش نشده)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} در هفته", "boost_modal.combo": "دکمهٔ {combo} را بزنید تا دیگر این را نبینید", "bundle_column_error.body": "هنگام بار کردن این مولفه، اشتباهی رخ داد.", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index faa322df9..46316731a 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -18,7 +18,7 @@ "account.followers": "Seuraajat", "account.followers.empty": "Kukaan ei seuraa tätä käyttäjää vielä.", "account.followers_counter": "{count, plural, one {{counter} seuraaja} other {{counter} seuraajat}}", - "account.following": "Following", + "account.following": "Seurataan", "account.following_counter": "{count, plural, one {{counter} seuraa} other {{counter} seuraa}}", "account.follows.empty": "Tämä käyttäjä ei vielä seuraa ketään.", "account.follows_you": "Seuraa sinua", @@ -41,12 +41,12 @@ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "Salli @{name}", "account.unblock_domain": "Salli {domain}", - "account.unblock_short": "Unblock", + "account.unblock_short": "Poista esto", "account.unendorse": "Poista suosittelu profiilistasi", "account.unfollow": "Lopeta seuraaminen", "account.unmute": "Poista käyttäjän @{name} mykistys", "account.unmute_notifications": "Poista mykistys käyttäjän @{name} ilmoituksilta", - "account.unmute_short": "Unmute", + "account.unmute_short": "Poista mykistys", "account_note.placeholder": "Lisää muistiinpano napsauttamalla", "admin.dashboard.daily_retention": "Käyttäjän säilyminen rekisteröitymisen jälkeiseen päivään mennessä", "admin.dashboard.monthly_retention": "Käyttäjän säilyminen rekisteröitymisen jälkeiseen kuukauteen mennessä", @@ -59,6 +59,7 @@ "alert.unexpected.title": "Hups!", "announcement.announcement": "Ilmoitus", "attachments_list.unprocessed": "(käsittelemätön)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} viikossa", "boost_modal.combo": "Ensi kerralla voit ohittaa tämän painamalla {combo}", "bundle_column_error.body": "Jokin meni vikaan komponenttia ladattaessa.", @@ -70,7 +71,7 @@ "column.blocks": "Estetyt käyttäjät", "column.bookmarks": "Kirjanmerkit", "column.community": "Paikallinen aikajana", - "column.direct": "Direct messages", + "column.direct": "Yksityisviestit", "column.directory": "Selaa profiileja", "column.domain_blocks": "Piilotetut verkkotunnukset", "column.favourites": "Suosikit", @@ -92,10 +93,10 @@ "community.column_settings.local_only": "Vain paikalliset", "community.column_settings.media_only": "Vain media", "community.column_settings.remote_only": "Vain etäkäyttö", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "Vaihda kieli", + "compose.language.search": "Hae kieliä...", "compose_form.direct_message_warning_learn_more": "Lisätietoja", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "Mastodonin viestit eivät ole päästä päähän salattuja. Älä jaa arkaluonteisia tietoja Mastodonissa.", "compose_form.hashtag_warning": "Tätä julkaisua listata minkään hastagin alle, koska se on listaamaton. Ainoastaan julkisia julkaisuja etsiä hastageilla.", "compose_form.lock_disclaimer": "Tilisi ei ole {locked}. Kuka tahansa voi seurata tiliäsi ja nähdä vain seuraajille rajaamasi julkaisut.", "compose_form.lock_disclaimer.lock": "lukittu", @@ -106,7 +107,7 @@ "compose_form.poll.remove_option": "Poista tämä valinta", "compose_form.poll.switch_to_multiple": "Muuta kysely monivalinnaksi", "compose_form.poll.switch_to_single": "Muuta kysely sallimaan vain yksi valinta", - "compose_form.publish": "Publish", + "compose_form.publish": "Julkaise", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Tallenna muutokset", "compose_form.sensitive.hide": "{count, plural, one {Merkitse media arkaluontoiseksi} other {Merkitse media arkaluontoiseksi}}", @@ -149,7 +150,7 @@ "embed.instructions": "Upota julkaisu verkkosivullesi kopioimalla alla oleva koodi.", "embed.preview": "Se tulee näyttämään tältä:", "emoji_button.activity": "Aktiviteetit", - "emoji_button.clear": "Clear", + "emoji_button.clear": "Tyhjennä", "emoji_button.custom": "Mukautetut", "emoji_button.flags": "Liput", "emoji_button.food": "Ruoka ja juoma", @@ -169,7 +170,7 @@ "empty_column.blocks": "Et ole vielä estänyt yhtään käyttäjää.", "empty_column.bookmarked_statuses": "Et ole vielä lisännyt viestejä kirjanmerkkeihisi. Kun lisäät yhden, se näkyy tässä.", "empty_column.community": "Paikallinen aikajana on tyhjä. Kirjoita jotain julkista, niin homma lähtee käyntiin!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "Sinulla ei ole vielä yksityisviestejä. Kun lähetät tai vastaanotat sellaisen, se näkyy tässä.", "empty_column.domain_blocks": "Yhtään verkko-osoitetta ei ole vielä estetty.", "empty_column.explore_statuses": "Mikään ei ole nyt trendi. Tarkista myöhemmin!", "empty_column.favourited_statuses": "Et ole vielä lisännyt viestejä kirjanmerkkeihisi. Kun lisäät yhden, se näkyy tässä.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Mikä tahansa näistä", "hashtag.column_settings.tag_mode.none": "Ei mitään näistä", "hashtag.column_settings.tag_toggle": "Sisällytä lisätunnisteet tähän sarakkeeseen", - "hashtag.follow": "Follow hashtag", - "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.follow": "Seuraa hashtagia", + "hashtag.total_volume": "Kokonaismäärä viimeiset {days, plural, one {päivä} other {{days} päivää}}", + "hashtag.unfollow": "Lopeta seuraaminen hashtagilla", "home.column_settings.basic": "Perusasetukset", "home.column_settings.show_reblogs": "Näytä buustaukset", "home.column_settings.show_replies": "Näytä vastaukset", @@ -237,7 +238,7 @@ "keyboard_shortcuts.column": "Kohdista sarakkeeseen", "keyboard_shortcuts.compose": "siirry tekstinsyöttöön", "keyboard_shortcuts.description": "Kuvaus", - "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.direct": "avaa yksityisviesti sarake", "keyboard_shortcuts.down": "Siirry listassa alaspäin", "keyboard_shortcuts.enter": "Avaa julkaisu", "keyboard_shortcuts.favourite": "Lisää suosikkeihin", @@ -270,8 +271,8 @@ "lightbox.expand": "Laajenna kuvan näkymälaatikko", "lightbox.next": "Seuraava", "lightbox.previous": "Edellinen", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Näytä profiili joka tapauksessa", + "limited_account_hint.title": "Tämä profiili on piilotettu serverisi valvojien toimesta.", "lists.account.add": "Lisää listaan", "lists.account.remove": "Poista listasta", "lists.delete": "Poista lista", @@ -298,11 +299,11 @@ "navigation_bar.bookmarks": "Kirjanmerkit", "navigation_bar.community_timeline": "Paikallinen aikajana", "navigation_bar.compose": "Luo uusi viesti", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Yksityisviestit", "navigation_bar.discover": "Löydä uutta", "navigation_bar.domain_blocks": "Estetyt verkkotunnukset", "navigation_bar.edit_profile": "Muokkaa profiilia", - "navigation_bar.explore": "Explore", + "navigation_bar.explore": "Selaa", "navigation_bar.favourites": "Suosikit", "navigation_bar.filters": "Mykistetyt sanat", "navigation_bar.follow_requests": "Seuraamispyynnöt", @@ -317,7 +318,7 @@ "navigation_bar.preferences": "Asetukset", "navigation_bar.public_timeline": "Yleinen aikajana", "navigation_bar.security": "Turvallisuus", - "notification.admin.report": "{name} reported {target}", + "notification.admin.report": "{name} ilmoitti {target}", "notification.admin.sign_up": "{name} rekisteröitynyt", "notification.favourite": "{name} tykkäsi viestistäsi", "notification.follow": "{name} seurasi sinua", @@ -330,7 +331,7 @@ "notification.update": "{name} muokkasi viestiä", "notifications.clear": "Tyhjennä ilmoitukset", "notifications.clear_confirmation": "Haluatko varmasti poistaa kaikki ilmoitukset pysyvästi?", - "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.report": "Uudet raportit:", "notifications.column_settings.admin.sign_up": "Uudet kirjautumiset:", "notifications.column_settings.alert": "Työpöytäilmoitukset", "notifications.column_settings.favourite": "Tykkäykset:", @@ -377,12 +378,12 @@ "poll_button.remove_poll": "Poista kysely", "privacy.change": "Muuta julkaisun näkyvyyttä", "privacy.direct.long": "Julkaise vain mainituille käyttäjille", - "privacy.direct.short": "Direct", + "privacy.direct.short": "Vain mainitut henkilöt", "privacy.private.long": "Julkaise vain seuraajille", - "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all", + "privacy.private.short": "Vain seuraajat", + "privacy.public.long": "Näkyvissä kaikille", "privacy.public.short": "Julkinen", - "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", + "privacy.unlisted.long": "Näkyvissä kaikille, mutta jättäen pois hakemisen mahdollisuus", "privacy.unlisted.short": "Listaamaton julkinen", "refresh": "Päivitä", "regeneration_indicator.label": "Ladataan…", @@ -436,11 +437,11 @@ "report.thanks.title_actionable": "Kiitos raportista, tutkimme asiaa.", "report.unfollow": "Lopeta seuraaminen @{name}", "report.unfollow_explanation": "Seuraat tätä tiliä. Jotta et enää näkisi heidän kirjoituksiaan, lopeta niiden seuraaminen.", - "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", - "report_notification.categories.spam": "Spam", - "report_notification.categories.violation": "Rule violation", - "report_notification.open": "Open report", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} viestiä}} liitteenä", + "report_notification.categories.other": "Muu", + "report_notification.categories.spam": "Roskaposti", + "report_notification.categories.violation": "Sääntöjen rikkominen", + "report_notification.open": "Avaa raportti", "search.placeholder": "Hae", "search_popout.search_format": "Tarkennettu haku", "search_popout.tips.full_text": "Tekstihaku listaa tilapäivitykset, jotka olet kirjoittanut, lisännyt suosikkeihisi, boostannut tai joissa sinut mainitaan, sekä tekstin sisältävät käyttäjänimet, nimimerkit ja hastagit.", @@ -471,7 +472,7 @@ "status.embed": "Upota", "status.favourite": "Tykkää", "status.filtered": "Suodatettu", - "status.hide": "Hide toot", + "status.hide": "Piilota toot", "status.history.created": "{name} luotu {date}", "status.history.edited": "{name} muokkasi {date}", "status.load_more": "Lataa lisää", @@ -495,7 +496,7 @@ "status.report": "Raportoi @{name}", "status.sensitive_warning": "Arkaluontoista sisältöä", "status.share": "Jaa", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Näytä joka tapauksessa", "status.show_less": "Näytä vähemmän", "status.show_less_all": "Näytä vähemmän kaikista", "status.show_more": "Näytä lisää", @@ -520,7 +521,7 @@ "timeline_hint.resources.followers": "Seuraajat", "timeline_hint.resources.follows": "Seuraa", "timeline_hint.resources.statuses": "Vanhemmat julkaisut", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} henkilö} other {{counter} henkilöä}} viimeinen {days, plural, one {päivä} other {{days} päivää}}", "trends.trending_now": "Suosittua nyt", "ui.beforeunload": "Luonnos häviää, jos poistut Mastodonista.", "units.short.billion": "{count} mrd.", @@ -532,7 +533,7 @@ "upload_error.poll": "Tiedon lataaminen ei ole sallittua kyselyissä.", "upload_form.audio_description": "Kuvaile kuulovammaisille", "upload_form.description": "Anna kuvaus näkörajoitteisia varten", - "upload_form.description_missing": "No description added", + "upload_form.description_missing": "Kuvausta ei ole lisätty", "upload_form.edit": "Muokkaa", "upload_form.thumbnail": "Vaihda pikkukuva", "upload_form.undo": "Peru", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 18b889e9b..b6b8e5d6f 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oups !", "announcement.announcement": "Annonce", "attachments_list.unprocessed": "(non traité)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} par semaine", "boost_modal.combo": "Vous pouvez appuyer sur {combo} pour passer ceci la prochaine fois", "bundle_column_error.body": "Une erreur s’est produite lors du chargement de ce composant.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Au moins un de ces éléments", "hashtag.column_settings.tag_mode.none": "Aucun de ces éléments", "hashtag.column_settings.tag_toggle": "Inclure des hashtags additionnels pour cette colonne", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Suivre le hashtag", "hashtag.total_volume": "Volume total {days, plural, one {des dernières 24h} other {des {days} derniers jours}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Ne plus suivre le hashtag", "home.column_settings.basic": "Basique", "home.column_settings.show_reblogs": "Afficher les partages", "home.column_settings.show_replies": "Afficher les réponses", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index ea5a61cdc..2ff93a6e3 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oops!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(net ferwurke)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.body": "Something went wrong while loading this component.", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 1dd7e635f..6a7aff2af 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Hiúps!", "announcement.announcement": "Fógra", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "Is féidir leat brúigh {combo} chun é seo a scipeáil an chéad uair eile", "bundle_column_error.body": "Something went wrong while loading this component.", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index f7ffe0d87..cfaa429a7 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oich!", "announcement.announcement": "Brath-fios", "attachments_list.unprocessed": "(gun phròiseasadh)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} san t-seachdain", "boost_modal.combo": "Brùth air {combo} nam b’ fheàrr leat leum a ghearradh thar seo an ath-thuras", "bundle_column_error.body": "Chaidh rudeigin cearr nuair a dh’fheuch sinn ris a’ cho-phàirt seo a luchdadh.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Gin sam bith dhiubh", "hashtag.column_settings.tag_mode.none": "Às aonais gin sam bith dhiubh", "hashtag.column_settings.tag_toggle": "Gabh a-steach barrachd tagaichean sa cholbh seo", - "hashtag.follow": "Follow hashtag", - "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.follow": "Lean air an taga hais", + "hashtag.total_volume": "An t-iomlan sna {days, plural, one {{days} latha} two {{days} latha} few {{days} làithean} other {{days} latha}} seo chaidh", + "hashtag.unfollow": "Na lean air an taga hais tuilleadh", "home.column_settings.basic": "Bunasach", "home.column_settings.show_reblogs": "Seall na brosnachaidhean", "home.column_settings.show_replies": "Seall na freagairtean", @@ -317,7 +318,7 @@ "navigation_bar.preferences": "Roghainnean", "navigation_bar.public_timeline": "Loidhne-ama cho-naisgte", "navigation_bar.security": "Tèarainteachd", - "notification.admin.report": "{name} reported {target}", + "notification.admin.report": "Rinn {name} mu {target}", "notification.admin.sign_up": "Chlàraich {name}", "notification.favourite": "Is annsa le {name} am post agad", "notification.follow": "Tha {name} a’ leantainn ort a-nis", @@ -330,7 +331,7 @@ "notification.update": "Dheasaich {name} post", "notifications.clear": "Falamhaich na brathan", "notifications.clear_confirmation": "A bheil thu cinnteach gu bheil thu airson na brathan uile agad fhalamhachadh gu buan?", - "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.report": "Gearanan ùra:", "notifications.column_settings.admin.sign_up": "Clàraidhean ùra:", "notifications.column_settings.alert": "Brathan deasga", "notifications.column_settings.favourite": "Na h-annsachdan:", @@ -388,11 +389,11 @@ "regeneration_indicator.label": "’Ga luchdadh…", "regeneration_indicator.sublabel": "Tha inbhir na dachaigh agad ’ga ullachadh!", "relative_time.days": "{number}l", - "relative_time.full.days": "{count, plural, one {# latha} two {# latha} few {# làithean} other {# latha}} air ais", - "relative_time.full.hours": "{count, plural, one {# uair a thìde} two {# uair a thìde} few {# uairean a thìde} other {# uair a thìde}} air ais", + "relative_time.full.days": "{number, plural, one {# latha} two {# latha} few {# làithean} other {# latha}} air ais", + "relative_time.full.hours": "{number, plural, one {# uair a thìde} two {# uair a thìde} few {# uairean a thìde} other {# uair a thìde}} air ais", "relative_time.full.just_now": "an-dràsta fhèin", - "relative_time.full.minutes": "{count, plural, one {# mhionaid} two {# mhionaid} few {# mionaidean} other {# mionaid}} air ais", - "relative_time.full.seconds": "{count, plural, one {# diog} two {# dhiog} few {# diogan} other {# diog}} air ais", + "relative_time.full.minutes": "{number, plural, one {# mhionaid} two {# mhionaid} few {# mionaidean} other {# mionaid}} air ais", + "relative_time.full.seconds": "{number, plural, one {# diog} two {# dhiog} few {# diogan} other {# diog}} air ais", "relative_time.hours": "{number}u", "relative_time.just_now": "an-dràsta", "relative_time.minutes": "{number}m", @@ -436,11 +437,11 @@ "report.thanks.title_actionable": "Mòran taing airson a’ ghearain, bheir sinn sùil air.", "report.unfollow": "Na lean air @{name} tuilleadh", "report.unfollow_explanation": "Tha thu a’ leantainn air a’ chunntas seo. Sgur de leantainn orra ach nach fhaic thu na puist aca air inbhir na dachaigh agad.", - "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", - "report_notification.categories.spam": "Spam", - "report_notification.categories.violation": "Rule violation", - "report_notification.open": "Open report", + "report_notification.attached_statuses": "Tha {count, plural, one {{counter} phost} two {{counter} phost} few {{counter} postaichean} other {{counter} post}} ceangailte ris", + "report_notification.categories.other": "Eile", + "report_notification.categories.spam": "Spama", + "report_notification.categories.violation": "Briseadh riaghailte", + "report_notification.open": "Fosgail an gearan", "search.placeholder": "Lorg", "search_popout.search_format": "Fòrmat adhartach an luirg", "search_popout.tips.full_text": "Bheir teacsa sìmplidh dhut na postaichean a sgrìobh thu, a tha nan annsachdan dhut, a bhrosnaich thu no san deach iomradh a thoirt ort cho math ri ainmean-cleachdaiche, ainmean taisbeanaidh agus tagaichean hais a mhaidsicheas.", @@ -471,7 +472,7 @@ "status.embed": "Leabaich", "status.favourite": "Cuir ris na h-annsachdan", "status.filtered": "Criathraichte", - "status.hide": "Hide toot", + "status.hide": "Falaich am post", "status.history.created": "Chruthaich {name} {date} e", "status.history.edited": "Dheasaich {name} {date} e", "status.load_more": "Luchdaich barrachd dheth", @@ -495,7 +496,7 @@ "status.report": "Dèan gearan mu @{name}", "status.sensitive_warning": "Susbaint fhrionasach", "status.share": "Co-roinn", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Seall e co-dhiù", "status.show_less": "Seall nas lugha dheth", "status.show_less_all": "Seall nas lugha dhen a h-uile", "status.show_more": "Seall barrachd dheth", @@ -520,7 +521,7 @@ "timeline_hint.resources.followers": "Luchd-leantainn", "timeline_hint.resources.follows": "A’ leantainn air", "timeline_hint.resources.statuses": "Postaichean nas sine", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} neach} two {{counter} neach} few {{counter} daoine} other {{counter} duine}} sna {days, plural, one {{days} latha} two {{days} latha} few {{days} làithean} other {{days} latha}} seo chaidh", "trends.trending_now": "A’ treandadh an-dràsta", "ui.beforeunload": "Caillidh tu an dreachd agad ma dh’fhàgas tu Mastodon an-dràsta.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 56ceb54e8..adef612c6 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Vaites!", "announcement.announcement": "Anuncio", "attachments_list.unprocessed": "(sen procesar)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Preme {combo} para ignorar isto na seguinte vez", "bundle_column_error.body": "Ocorreu un erro ó cargar este compoñente.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Calquera destes", "hashtag.column_settings.tag_mode.none": "Ningún destes", "hashtag.column_settings.tag_toggle": "Incluír cancelos adicionais para esta columna", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Seguir cancelo", "hashtag.total_volume": "Cantidade total {days, plural, one {no último día} other {nos {days} últimos días}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Deixar de seguir cancelo", "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Amosar compartidos", "home.column_settings.show_replies": "Amosar respostas", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 4cb3380b4..c0c0b57f1 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "אופס!", "announcement.announcement": "הכרזה", "attachments_list.unprocessed": "(לא מעובד)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} לשבוע", "boost_modal.combo": "ניתן להקיש {combo} כדי לדלג בפעם הבאה", "bundle_column_error.body": "משהו השתבש בעת טעינת הרכיב הזה.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "כל אלה", "hashtag.column_settings.tag_mode.none": "אף אחד מאלה", "hashtag.column_settings.tag_toggle": "כלול תגיות נוספות בטור זה", - "hashtag.follow": "Follow hashtag", - "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.follow": "מעקב אחר תגית", + "hashtag.total_volume": "נפח כולל ב {days, plural, one {יום} other {{days} ימים}} האחרונים", + "hashtag.unfollow": "ביטול מעקב אחר תגית", "home.column_settings.basic": "למתחילים", "home.column_settings.show_reblogs": "הצגת הדהודים", "home.column_settings.show_replies": "הצגת תגובות", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index aa76ebf10..9f35187f2 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "उफ़!", "announcement.announcement": "घोषणा", "attachments_list.unprocessed": "(असंसाधित)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} हर सप्ताह", "boost_modal.combo": "अगली बार स्किप करने के लिए आप {combo} दबा सकते है", "bundle_column_error.body": "इस कॉम्पोनेन्ट को लोड करते वक्त कुछ गलत हो गया", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index fe0379f0a..9f2df3c71 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Ups!", "announcement.announcement": "Najava", "attachments_list.unprocessed": "(neobrađeno)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} tjedno", "boost_modal.combo": "Možete pritisnuti {combo} kako biste preskočili ovo sljedeći put", "bundle_column_error.body": "Nešto je pošlo po zlu tijekom učitavanja ove komponente.", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index def9348ec..5b2b98172 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Hoppá!", "announcement.announcement": "Közlemény", "attachments_list.unprocessed": "(feldolgozatlan)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} hetente", "boost_modal.combo": "Hogy átugord ezt következő alkalommal, használd {combo}", "bundle_column_error.body": "Valami hiba történt a komponens betöltése közben.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Bármelyik", "hashtag.column_settings.tag_mode.none": "Egyik sem", "hashtag.column_settings.tag_toggle": "Új címkék felvétele ehhez az oszlophoz", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Hashtag követése", "hashtag.total_volume": "Teljes mennyiség az elmúlt {days, plural, one {napban} other {{days} napban}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Hashtag követésének megszüntetése", "home.column_settings.basic": "Alapvető", "home.column_settings.show_reblogs": "Megtolások mutatása", "home.column_settings.show_replies": "Válaszok megjelenítése", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index 9aa8ec4c3..f552e345c 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Վա՜յ", "announcement.announcement": "Յայտարարութիւններ", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "շաբաթը՝ {count}", "boost_modal.combo": "Կարող ես սեղմել {combo}՝ սա յաջորդ անգամ բաց թողնելու համար", "bundle_column_error.body": "Այս բաղադրիչը բեռնելու ընթացքում ինչ֊որ բան խափանուեց։", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index effc01737..2a081cfbb 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Ups!", "announcement.announcement": "Pengumuman", "attachments_list.unprocessed": "(tidak diproses)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per minggu", "boost_modal.combo": "Anda dapat menekan {combo} untuk melewati ini", "bundle_column_error.body": "Kesalahan terjadi saat memuat komponen ini.", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index d54687117..1d0a909a2 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Problemo!", "announcement.announcement": "Anunco", "attachments_list.unprocessed": "(neprocedita)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} dum singla semano", "boost_modal.combo": "Tu povas presar sur {combo} por omisar co en la venonta foyo", "bundle_column_error.body": "Nulo ne functionis dum chargar ca kompozaj.", @@ -220,9 +221,9 @@ "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.follow": "Follow hashtag", + "hashtag.follow": "Sequez hashtago", "hashtag.total_volume": "Sumo en antea {days, plural,one {dio} other {{days} dii}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Desequez hashtago", "home.column_settings.basic": "Simpla", "home.column_settings.show_reblogs": "Montrar repeti", "home.column_settings.show_replies": "Montrar respondi", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index e12bfe305..d74d45a76 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Úbbs!", "announcement.announcement": "Auglýsing", "attachments_list.unprocessed": "(óunnið)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} á viku", "boost_modal.combo": "Þú getur ýtt á {combo} til að sleppa þessu næst", "bundle_column_error.body": "Eitthvað fór úrskeiðis við að hlaða inn þessari einingu.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Hvað sem er af þessu", "hashtag.column_settings.tag_mode.none": "Ekkert af þessu", "hashtag.column_settings.tag_toggle": "Taka með viðbótarmerki fyrir þennan dálk", - "hashtag.follow": "Follow hashtag", - "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.follow": "Fylgjast með myllumerki", + "hashtag.total_volume": "Heildarmagn {days, plural, one {síðasta {days} sólarhring} other {síðustu {days} daga}}", + "hashtag.unfollow": "Hætta að fylgjast með myllumerki", "home.column_settings.basic": "Einfalt", "home.column_settings.show_reblogs": "Sýna endurbirtingar", "home.column_settings.show_replies": "Birta svör", @@ -520,7 +521,7 @@ "timeline_hint.resources.followers": "Fylgjendur", "timeline_hint.resources.follows": "Fylgist með", "timeline_hint.resources.statuses": "Eldri færslur", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} aðili} other {{counter} manns}} {days, plural, one {síðasta sólarhringinn} other {síðustu {days} daga}}", "trends.trending_now": "Í umræðunni núna", "ui.beforeunload": "Drögin tapast ef þú ferð út úr Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index da29dfde1..7a99d031e 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oops!", "announcement.announcement": "Annuncio", "attachments_list.unprocessed": "(non elaborato)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per settimana", "boost_modal.combo": "Puoi premere {combo} per saltare questo passaggio la prossima volta", "bundle_column_error.body": "E' avvenuto un errore durante il caricamento di questo componente.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Uno o più di questi", "hashtag.column_settings.tag_mode.none": "Nessuno di questi", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Segui l'hashtag", "hashtag.total_volume": "Volume totale {days, plural, one {nell'ultimo giorno} other {negli ultimi {days} giorni}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Cessa di seguire l'hashtag", "home.column_settings.basic": "Semplice", "home.column_settings.show_reblogs": "Mostra condivisioni", "home.column_settings.show_replies": "Mostra risposte", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 35c7d916e..070248d10 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "エラー!", "announcement.announcement": "お知らせ", "attachments_list.unprocessed": "(未処理)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} 回 / 週", "boost_modal.combo": "次からは{combo}を押せばスキップできます", "bundle_column_error.body": "コンポーネントの読み込み中に問題が発生しました。", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "いずれかを含む", "hashtag.column_settings.tag_mode.none": "これらを除く", "hashtag.column_settings.tag_toggle": "このカラムに追加のタグを含める", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "ハッシュタグをフォローする", "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "ハッシュタグのフォローを解除", "home.column_settings.basic": "基本設定", "home.column_settings.show_reblogs": "ブースト表示", "home.column_settings.show_replies": "返信表示", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index a01b2290c..bafaca65e 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "უპს!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "კვირაში {count}", "boost_modal.combo": "შეგიძლიათ დააჭიროთ {combo}-ს რათა შემდეგ ჯერზე გამოტოვოთ ეს", "bundle_column_error.body": "ამ კომპონენტის ჩატვირთვისას რაღაც აირია.", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index d5ab20008..ff93fc968 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Ayhuh!", "announcement.announcement": "Ulɣu", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} i yimalas", "boost_modal.combo": "Tzemreḍ ad tetekkiḍ ɣef {combo} akken ad tessurfeḍ aya tikelt-nniḍen", "bundle_column_error.body": "Tella-d kra n tuccḍa mi d-yettali ugbur-agi.", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index 5334331c4..f15dc88a0 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Өй!", "announcement.announcement": "Хабарландыру", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} аптасына", "boost_modal.combo": "Келесіде өткізіп жіберу үшін басыңыз {combo}", "bundle_column_error.body": "Бұл компонентті жүктеген кезде бір қате пайда болды.", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index bde13c04c..1e81ab32a 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "ಅಯ್ಯೋ!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.body": "Something went wrong while loading this component.", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 30cf08ff2..d8eca4ee0 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "앗!", "announcement.announcement": "공지사항", "attachments_list.unprocessed": "(처리 안 됨)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "주간 {count}회", "boost_modal.combo": "다음엔 {combo}를 눌러서 이 과정을 건너뛸 수 있습니다", "bundle_column_error.body": "컴포넌트를 불러오는 과정에서 문제가 발생했습니다.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "아무것이든", "hashtag.column_settings.tag_mode.none": "이것들을 제외하고", "hashtag.column_settings.tag_toggle": "추가 해시태그를 이 컬럼에 추가합니다", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "해시태그 팔로우", "hashtag.total_volume": "최근 {days}일 동안의 총 사용량", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "해시태그 팔로우 해제", "home.column_settings.basic": "기본", "home.column_settings.show_reblogs": "부스트 표시", "home.column_settings.show_replies": "답글 표시", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index d8c4151d3..740bcd917 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Wey li min!", "announcement.announcement": "Daxuyanî", "attachments_list.unprocessed": "(bêpêvajo)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "Her hefte {count}", "boost_modal.combo": "Ji bo derbas bî carekî din de pêlê {combo} bike", "bundle_column_error.body": "Di dema barkirina vê hêmanê de tiştek çewt çê bû.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Yek ji van", "hashtag.column_settings.tag_mode.none": "Ne yek ji van", "hashtag.column_settings.tag_toggle": "Ji bo vê stûnê hin pêvekan tevlî bike", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Hashtagê bişopîne", "hashtag.total_volume": "Tevahiya giraniyê dawîn di {days, plural, one {roj} other {{days} roj}} de", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Hashtagê neşopîne", "home.column_settings.basic": "Bingehîn", "home.column_settings.show_reblogs": "Bilindkirinan nîşan bike", "home.column_settings.show_replies": "Bersivan nîşan bide", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index 988655921..ad0e1ae31 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oups!", "announcement.announcement": "Deklaryans", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} an seythen", "boost_modal.combo": "Hwi a yll gwaska {combo} dhe woheles hemma an nessa tro", "bundle_column_error.body": "Neppyth eth yn kamm ow karga'n elven ma.", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 3df14c833..a38374230 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oi!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.body": "Something went wrong while loading this component.", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 1cb0095b1..60b6e75da 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Ups!", "announcement.announcement": "Paziņojums", "attachments_list.unprocessed": "(neapstrādāti)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} nedēļā", "boost_modal.combo": "Nospied {combo} lai izlaistu šo nākamreiz", "bundle_column_error.body": "Kaut kas nogāja greizi ielādējot šo komponenti.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Kāds no šiem", "hashtag.column_settings.tag_mode.none": "Neviens no šiem", "hashtag.column_settings.tag_toggle": "Iekļaut šai kolonnai papildu tagus", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Seko mirkļbirkai", "hashtag.total_volume": "Kopējais apjoms par {days, plural, one {dienu} other {{days} dienām}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Pārstāj sekot mirkļbirkai", "home.column_settings.basic": "Pamata", "home.column_settings.show_reblogs": "Rādīt palielinājumus", "home.column_settings.show_replies": "Rādīt atbildes", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index faf4174f9..a00e1762c 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Упс!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} неделно", "boost_modal.combo": "Кликни {combo} за да го прескокниш ова нареден пат", "bundle_column_error.body": "Се случи проблем при вчитувањето.", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index 175316e84..2e4aac762 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "ശ്ശോ!", "announcement.announcement": "അറിയിപ്പ്", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "ആഴ്ച തോറും {count}", "boost_modal.combo": "അടുത്ത തവണ ഇത് ഒഴിവാക്കുവാൻ {combo} ഞെക്കാവുന്നതാണ്", "bundle_column_error.body": "ഈ ഘടകം പ്രദശിപ്പിക്കുമ്പോൾ എന്തോ കുഴപ്പം സംഭവിച്ചു.", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index 762d94c40..3ce4fc0f9 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "अरेरे!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} प्रतिसप्ताह", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.body": "हा घटक लोड करतांना काहीतरी चुकले आहे.", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 13a1e3345..70683ef42 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Alamak!", "announcement.announcement": "Pengumuman", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} seminggu", "boost_modal.combo": "Anda boleh tekan {combo} untuk melangkauinya pada waktu lain", "bundle_column_error.body": "Terdapat kesilapan ketika memuatkan komponen ini.", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 94cbd5bcd..64c747aa1 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -51,7 +51,7 @@ "admin.dashboard.daily_retention": "Retentiegraad van gebruikers per dag, vanaf registratie", "admin.dashboard.monthly_retention": "Retentiegraad van gebruikers per maand, vanaf registratie", "admin.dashboard.retention.average": "Gemiddelde", - "admin.dashboard.retention.cohort": "Aanmeldingsmaand", + "admin.dashboard.retention.cohort": "Maand van registratie", "admin.dashboard.retention.cohort_size": "Nieuwe gebruikers", "alert.rate_limited.message": "Probeer het nog een keer na {retry_time, time, medium}.", "alert.rate_limited.title": "Beperkt te gebruiken", @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oeps!", "announcement.announcement": "Mededeling", "attachments_list.unprocessed": "(niet verwerkt)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "Je kunt {combo} klikken om dit de volgende keer over te slaan", "bundle_column_error.body": "Tijdens het laden van dit onderdeel is er iets fout gegaan.", @@ -172,8 +173,8 @@ "empty_column.direct": "Je hebt nog geen directe berichten. Wanneer je er een verzend of ontvangt, komt deze hier te staan.", "empty_column.domain_blocks": "Er zijn nog geen geblokkeerde domeinen.", "empty_column.explore_statuses": "Momenteel zijn er geen trends. Kom later terug!", - "empty_column.favourited_statuses": "Jij hebt nog geen favoriete berichten. Wanneer je er een aan jouw favorieten toevoegt, valt deze hier te zien.", - "empty_column.favourites": "Niemand heeft dit bericht nog aan diens favorieten toegevoegd. Wanneer iemand dit doet, valt dat hier te zien.", + "empty_column.favourited_statuses": "Jij hebt nog geen favoriete berichten. Wanneer je een bericht als favoriet markeert, valt deze hier te zien.", + "empty_column.favourites": "Niemand heeft dit bericht nog als favoriet gemarkeerd. Wanneer iemand dit doet, valt dat hier te zien.", "empty_column.follow_recommendations": "Het lijkt er op dat er geen aanbevelingen voor jou aangemaakt kunnen worden. Je kunt proberen te zoeken naar mensen die je wellicht kent, zoeken op hashtags, de lokale en globale tijdlijnen bekijken of de gebruikersgids doorbladeren.", "empty_column.follow_requests": "Jij hebt nog enkel volgverzoek ontvangen. Wanneer je er eentje ontvangt, valt dat hier te zien.", "empty_column.hashtag": "Er is nog niks te vinden onder deze hashtag.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Een van deze", "hashtag.column_settings.tag_mode.none": "Geen van deze", "hashtag.column_settings.tag_toggle": "Additionele tags aan deze kolom toevoegen", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Hashtag volgen", "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Hashtag ontvolgen", "home.column_settings.basic": "Algemeen", "home.column_settings.show_reblogs": "Boosts tonen", "home.column_settings.show_replies": "Reacties tonen", @@ -240,7 +241,7 @@ "keyboard_shortcuts.direct": "Directe berichten tonen", "keyboard_shortcuts.down": "Naar beneden in de lijst bewegen", "keyboard_shortcuts.enter": "Volledig bericht tonen", - "keyboard_shortcuts.favourite": "Aan jouw favorieten toevoegen", + "keyboard_shortcuts.favourite": "Als favoriet markeren", "keyboard_shortcuts.favourites": "Favorieten tonen", "keyboard_shortcuts.federated": "Globale tijdlijn tonen", "keyboard_shortcuts.heading": "Sneltoetsen", @@ -318,8 +319,8 @@ "navigation_bar.public_timeline": "Globale tijdlijn", "navigation_bar.security": "Beveiliging", "notification.admin.report": "{name} heeft {target} geapporteerd", - "notification.admin.sign_up": "{name} heeft zich aangemeld", - "notification.favourite": "{name} voegde jouw bericht als favoriet toe", + "notification.admin.sign_up": "{name} heeft zich geregistreerd", + "notification.favourite": "{name} markeerde jouw bericht als favoriet", "notification.follow": "{name} volgt jou nu", "notification.follow_request": "{name} wil jou graag volgen", "notification.mention": "{name} vermeldde jou", @@ -331,7 +332,7 @@ "notifications.clear": "Meldingen verwijderen", "notifications.clear_confirmation": "Weet je het zeker dat je al jouw meldingen wilt verwijderen?", "notifications.column_settings.admin.report": "Nieuwe rapportages:", - "notifications.column_settings.admin.sign_up": "Nieuwe aanmeldingen:", + "notifications.column_settings.admin.sign_up": "Nieuwe registraties:", "notifications.column_settings.alert": "Desktopmeldingen", "notifications.column_settings.favourite": "Favorieten:", "notifications.column_settings.filter_bar.advanced": "Alle categorieën tonen", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 1a8904cd2..3f6a1747b 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -41,24 +41,25 @@ "account.statuses_counter": "{count, plural, one {{counter} tut} other {{counter} tut}}", "account.unblock": "Slutt å blokera @{name}", "account.unblock_domain": "Vis {domain}", - "account.unblock_short": "Opphev blokkering", + "account.unblock_short": "Avblokker", "account.unendorse": "Ikkje framhev på profil", "account.unfollow": "Slutt å fylgja", - "account.unmute": "Av-demp @{name}", + "account.unmute": "Opphev målbinding av @{name}", "account.unmute_notifications": "Vis varsel frå @{name}", - "account.unmute_short": "Opphev demping", + "account.unmute_short": "Opphev målbinding", "account_note.placeholder": "Klikk for å leggja til merknad", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Gjennomsnitt", "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "Nye brukere", + "admin.dashboard.retention.cohort_size": "Nye brukarar", "alert.rate_limited.message": "Ver venleg å prøva igjen etter {retry_time, time, medium}.", "alert.rate_limited.title": "Begrensa rate", "alert.unexpected.message": "Eit uventa problem oppstod.", "alert.unexpected.title": "Oi sann!", "announcement.announcement": "Kunngjering", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per veke", "boost_modal.combo": "Du kan trykkja {combo} for å hoppa over dette neste gong", "bundle_column_error.body": "Noko gjekk gale mens denne komponenten vart lasta ned.", @@ -70,7 +71,7 @@ "column.blocks": "Blokkerte brukarar", "column.bookmarks": "Bokmerke", "column.community": "Lokal tidsline", - "column.direct": "Direct messages", + "column.direct": "Direktemeldingar", "column.directory": "Sjå gjennom profilar", "column.domain_blocks": "Gøymde domene", "column.favourites": "Favorittar", @@ -92,10 +93,10 @@ "community.column_settings.local_only": "Berre lokalt", "community.column_settings.media_only": "Berre media", "community.column_settings.remote_only": "Berre eksternt", - "compose.language.change": "Change language", + "compose.language.change": "Byt språk", "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Lær meir", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "Innlegg på Mastodon er ikkje ende-til-ende-krypterte. Ikkje del eventuell sensitiv informasjon via Mastodon.", "compose_form.hashtag_warning": "Dette tutet vert ikkje oppført under nokon emneknagg sidan det ikkje er oppført. Berre offentlege tut kan verta søkt etter med emneknagg.", "compose_form.lock_disclaimer": "Kontoen din er ikkje {locked}. Kven som helst kan fylgja deg for å sjå innlegga dine som berre visast til fylgjarar.", "compose_form.lock_disclaimer.lock": "låst", @@ -108,7 +109,7 @@ "compose_form.poll.switch_to_single": "Endra avstemninga til tillate berre eitt val", "compose_form.publish": "Publish", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Lagre endringar", "compose_form.sensitive.hide": "Merk medium som sensitivt", "compose_form.sensitive.marked": "Medium er markert som sensitivt", "compose_form.sensitive.unmarked": "Medium er ikkje merka som sensitivt", @@ -124,7 +125,7 @@ "confirmations.delete_list.confirm": "Slett", "confirmations.delete_list.message": "Er du sikker på at du vil sletta denne lista for alltid?", "confirmations.discard_edit_media.confirm": "Forkast", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.message": "Du har ulagra endringar i mediabeskrivinga eller førehandsvisinga. Vil du forkaste dei likevel?", "confirmations.domain_block.confirm": "Gøym heile domenet", "confirmations.domain_block.message": "Er du heilt, heilt sikker på at du vil blokkera heile {domain}? I dei fleste tilfelle er det godt nok og føretrekt med nokre få målretta blokkeringar eller målbindingar. Du kjem ikkje til å sjå innhald frå det domenet i nokon fødererte tidsliner eller i varsla dine. Fylgjarane dine frå det domenet vert fjerna.", "confirmations.logout.confirm": "Logg ut", @@ -178,7 +179,7 @@ "empty_column.follow_requests": "Du har ingen følgjeførespurnadar ennå. Når du får ein, så vil den dukke opp her.", "empty_column.hashtag": "Det er ingenting i denne emneknaggen ennå.", "empty_column.home": "Heime-tidslinja di er tom! Besøk {public} eller søk for å starte og å møte andre brukarar.", - "empty_column.home.suggestions": "Se noen forslag", + "empty_column.home.suggestions": "Sjå nokre forslag", "empty_column.list": "Det er ingenting i denne lista enno. Når medlemer av denne lista legg ut nye statusar, så dukkar dei opp her.", "empty_column.lists": "Du har ingen lister enno. Når du lagar ei, så dukkar ho opp her.", "empty_column.mutes": "Du har ikkje målbunde nokon brukarar enno.", @@ -190,14 +191,14 @@ "error.unexpected_crash.next_steps_addons": "Prøv å deaktivere dem og laste siden på nytt. Hvis det ikke hjelper, kan du fremdeles bruke Mastodon via en annen nettleser eller en annen app.", "errors.unexpected_crash.copy_stacktrace": "Kopier stacktrace til utklippstavla", "errors.unexpected_crash.report_issue": "Rapporter problem", - "explore.search_results": "Søkeresultater", + "explore.search_results": "Søkeresultat", "explore.suggested_follows": "For deg", "explore.title": "Utforsk", - "explore.trending_links": "Nyheter", + "explore.trending_links": "Nyheiter", "explore.trending_statuses": "Innlegg", - "explore.trending_tags": "Hashtags", + "explore.trending_tags": "Emneknaggar", "follow_recommendations.done": "Ferdig", - "follow_recommendations.heading": "Følg folk du ønsker å se innlegg fra! Her er noen forslag.", + "follow_recommendations.heading": "Fylg folk du ønsker å sjå innlegg frå! Her er nokre forslag.", "follow_recommendations.lead": "Innlegg fra mennesker du følger vil vises i kronologisk rekkefølge på hjemmefeed. Ikke vær redd for å gjøre feil, du kan slutte å følge folk like enkelt som alt!", "follow_request.authorize": "Autoriser", "follow_request.reject": "Avvis", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Kva som helst av desse", "hashtag.column_settings.tag_mode.none": "Ikkje nokon av disse", "hashtag.column_settings.tag_toggle": "Inkluder ekstra emneknaggar for denne kolonna", - "hashtag.follow": "Follow hashtag", - "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.follow": "Fylg emneknagg", + "hashtag.total_volume": "Totalt volum siste {days, plural, one {dag} other {{days} dagar}}", + "hashtag.unfollow": "Slutt å fylgje emneknaggen", "home.column_settings.basic": "Enkelt", "home.column_settings.show_reblogs": "Vis framhevingar", "home.column_settings.show_replies": "Vis svar", @@ -270,8 +271,8 @@ "lightbox.expand": "Ekspander bildevisning boks", "lightbox.next": "Neste", "lightbox.previous": "Førre", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Vis profilen likevel", + "limited_account_hint.title": "Denne profilen har vorte skjult av moderatorane på tenaren din.", "lists.account.add": "Legg til i liste", "lists.account.remove": "Fjern frå liste", "lists.delete": "Slett liste", @@ -280,7 +281,7 @@ "lists.new.create": "Legg til liste", "lists.new.title_placeholder": "Ny listetittel", "lists.replies_policy.followed": "Enhver fulgt bruker", - "lists.replies_policy.list": "Medlemmer i listen", + "lists.replies_policy.list": "Medlem i lista", "lists.replies_policy.none": "Ikkje nokon", "lists.replies_policy.title": "Vis svar på:", "lists.search": "Søk gjennom folk du følgjer", @@ -298,7 +299,7 @@ "navigation_bar.bookmarks": "Bokmerke", "navigation_bar.community_timeline": "Lokal tidsline", "navigation_bar.compose": "Lag eit nytt tut", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Direktemeldingar", "navigation_bar.discover": "Oppdag", "navigation_bar.domain_blocks": "Skjulte domene", "navigation_bar.edit_profile": "Rediger profil", @@ -317,7 +318,7 @@ "navigation_bar.preferences": "Innstillingar", "navigation_bar.public_timeline": "Føderert tidsline", "navigation_bar.security": "Tryggleik", - "notification.admin.report": "{name} reported {target}", + "notification.admin.report": "{name} rapporterte {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} merkte statusen din som favoritt", "notification.follow": "{name} fylgde deg", @@ -327,10 +328,10 @@ "notification.poll": "Ei rundspørjing du har røysta i er ferdig", "notification.reblog": "{name} framheva statusen din", "notification.status": "{name} la nettopp ut", - "notification.update": "{name} edited a post", + "notification.update": "{name} redigerte eit innlegg", "notifications.clear": "Tøm varsel", "notifications.clear_confirmation": "Er du sikker på at du vil fjerna alle varsla dine for alltid?", - "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.report": "Nye rapportar:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Skrivebordsvarsel", "notifications.column_settings.favourite": "Favorittar:", @@ -346,9 +347,9 @@ "notifications.column_settings.show": "Vis i kolonne", "notifications.column_settings.sound": "Spel av lyd", "notifications.column_settings.status": "Nye tuter:", - "notifications.column_settings.unread_notifications.category": "Unread notifications", - "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", - "notifications.column_settings.update": "Redigeringer:", + "notifications.column_settings.unread_notifications.category": "Uleste varsel", + "notifications.column_settings.unread_notifications.highlight": "Marker uleste varsel", + "notifications.column_settings.update": "Redigeringar:", "notifications.filter.all": "Alle", "notifications.filter.boosts": "Framhevingar", "notifications.filter.favourites": "Favorittar", @@ -372,15 +373,15 @@ "poll.total_votes": "{count, plural, one {# røyst} other {# røyster}}", "poll.vote": "Røyst", "poll.voted": "Du røysta på dette svaret", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# stemme} other {# stemmer}}", "poll_button.add_poll": "Start ei meiningsmåling", "poll_button.remove_poll": "Fjern røyst", "privacy.change": "Juster status-synlegheit", "privacy.direct.long": "Legg berre ut for nemnde brukarar", - "privacy.direct.short": "Direct", + "privacy.direct.short": "Kun nemnde personar", "privacy.private.long": "Post kun til følgjarar", - "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all", + "privacy.private.short": "Kun fylgjarar", + "privacy.public.long": "Synleg for alle", "privacy.public.short": "Offentleg", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Uoppført", @@ -388,11 +389,11 @@ "regeneration_indicator.label": "Lastar…", "regeneration_indicator.sublabel": "Heimetidslinja di vert førebudd!", "relative_time.days": "{number}dg", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number, plural, one {# dag} other {# dagar}} sidan", + "relative_time.full.hours": "{number, plural, one {# time} other {# timar}} sidan", + "relative_time.full.just_now": "nettopp nå", + "relative_time.full.minutes": "{number, plural, one {# minutt} other {# minutt}} sidan", + "relative_time.full.seconds": "{number, plural, one {# sekund} other {# sekund}} sidan", "relative_time.hours": "{number}t", "relative_time.just_now": "nå", "relative_time.minutes": "{number}min", @@ -400,46 +401,46 @@ "relative_time.today": "i dag", "reply_indicator.cancel": "Avbryt", "report.block": "Blokker", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", - "report.categories.other": "Other", + "report.block_explanation": "Du vil ikkje kunne sjå innlegga deira. Dei vil ikkje kunne sjå innlegga dine eller fylgje deg. Dei kan sjå at dei er blokkert.", + "report.categories.other": "Anna", "report.categories.spam": "Søppelpost", - "report.categories.violation": "Content violates one or more server rules", - "report.category.subtitle": "Choose the best match", - "report.category.title": "Tell us what's going on with this {type}", + "report.categories.violation": "Innhaldet bryt ei eller fleire regler for tenaren", + "report.category.subtitle": "Vel det som passar best", + "report.category.title": "Fortel oss kva som skjer med denne {type}", "report.category.title_account": "profil", "report.category.title_status": "innlegg", - "report.close": "Utført", - "report.comment.title": "Is there anything else you think we should know?", + "report.close": "Ferdig", + "report.comment.title": "Er det noko anna du meiner me bør vite?", "report.forward": "Vidaresend til {target}", "report.forward_hint": "Kontoen er frå ein annan tenar. Vil du senda ein anonymisert kopi av rapporten dit òg?", - "report.mute": "Demp", + "report.mute": "Målbind", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", "report.next": "Neste", "report.placeholder": "Tilleggskommentarar", - "report.reasons.dislike": "Jeg liker det ikke", - "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", - "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "Det er spam", - "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", - "report.reasons.violation": "It violates server rules", - "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.reasons.dislike": "Eg likar det ikkje", + "report.reasons.dislike_description": "Det er ikkje noko du ønsker å sjå", + "report.reasons.other": "Det er noko anna", + "report.reasons.other_description": "Problemet passar ikkje inn i dei andre kategoriane", + "report.reasons.spam": "Det er søppelpost", + "report.reasons.spam_description": "Skadelege lenker, falskt engasjement og gjentakande svar", + "report.reasons.violation": "Det bryt tenaren sine reglar", + "report.reasons.violation_description": "Du veit at den bryt spesifikke reglar", "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", + "report.rules.title": "Kva reglar vert brotne?", "report.statuses.subtitle": "Select all that apply", "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Send inn", "report.target": "Rapporterer {target}", "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.thanks.title": "Vil du ikkje sjå dette?", + "report.thanks.title_actionable": "Takk for at du rapporterer, me skal sjå på dette.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", - "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", - "report_notification.categories.spam": "Spam", - "report_notification.categories.violation": "Rule violation", + "report_notification.attached_statuses": "{count, plural, one {{count} innlegg} other {{count} innlegg}} lagt ved", + "report_notification.categories.other": "Anna", + "report_notification.categories.spam": "Søppelpost", + "report_notification.categories.violation": "Regelbrot", "report_notification.open": "Open report", "search.placeholder": "Søk", "search_popout.search_format": "Avansert søkeformat", @@ -451,7 +452,7 @@ "search_results.accounts": "Folk", "search_results.all": "All", "search_results.hashtags": "Emneknaggar", - "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.nothing_found": "Kunne ikkje finne noko for desse søkeorda", "search_results.statuses": "Tut", "search_results.statuses_fts_disabled": "På denne Matsodon-tenaren kan du ikkje søkja på tut etter innhaldet deira.", "search_results.total": "{count, number} {count, plural, one {treff} other {treff}}", @@ -465,15 +466,15 @@ "status.delete": "Slett", "status.detailed_status": "Detaljert samtalevisning", "status.direct": "Send melding til @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Rediger", + "status.edited": "Redigert {date}", + "status.edited_x_times": "Redigert {count, plural, one {{count} gong} other {{count} gonger}}", "status.embed": "Bygg inn", "status.favourite": "Favoritt", "status.filtered": "Filtrert", - "status.hide": "Hide toot", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.hide": "Gøym innlegg", + "status.history.created": "{name} oppretta {date}", + "status.history.edited": "{name} redigerte {date}", "status.load_more": "Last inn meir", "status.media_hidden": "Medium gøymd", "status.mention": "Nemn @{name}", @@ -495,7 +496,7 @@ "status.report": "Rapporter @{name}", "status.sensitive_warning": "Sensitivt innhald", "status.share": "Del", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Vis likevel", "status.show_less": "Vis mindre", "status.show_less_all": "Vis mindre for alle", "status.show_more": "Vis meir", @@ -532,7 +533,7 @@ "upload_error.poll": "Filopplasting ikkje tillate med meiningsmålingar.", "upload_form.audio_description": "Grei ut for folk med nedsett høyrsel", "upload_form.description": "Skildr for synshemja", - "upload_form.description_missing": "Ingen beskrivelse lagt til", + "upload_form.description_missing": "Inga beskriving er lagt til", "upload_form.edit": "Rediger", "upload_form.thumbnail": "Bytt miniatyrbilete", "upload_form.undo": "Slett", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 829be51a5..b0b7f76bc 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oi!", "announcement.announcement": "Kunngjøring", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per uke", "boost_modal.combo": "You kan trykke {combo} for å hoppe over dette neste gang", "bundle_column_error.body": "Noe gikk galt mens denne komponenten lastet.", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index b065b4e8f..d9d3b20a1 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Ops !", "announcement.announcement": "Anóncia", "attachments_list.unprocessed": "(pas tractat)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per setmana", "boost_modal.combo": "Podètz botar {combo} per passar aquò lo còp que ven", "bundle_column_error.body": "Quicòm a fach mèuca pendent lo cargament d’aqueste compausant.", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index 99fdcfd45..bc5e9d91c 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oops!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.body": "Something went wrong while loading this component.", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index bc8799831..5ba83f01f 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "O nie!", "announcement.announcement": "Ogłoszenie", "attachments_list.unprocessed": "(nieprzetworzone)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} co tydzień", "boost_modal.combo": "Naciśnij {combo}, aby pominąć to następnym razem", "bundle_column_error.body": "Coś poszło nie tak podczas ładowania tego składnika.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Dowolne", "hashtag.column_settings.tag_mode.none": "Żadne", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Obserwuj hasztag", "hashtag.total_volume": "Całkowity wolumen w ciągu {days, plural, one {ostatniego dnia} other {ostatnich {days} dni}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Przestań obserwować hashtag", "home.column_settings.basic": "Podstawowe", "home.column_settings.show_reblogs": "Pokazuj podbicia", "home.column_settings.show_replies": "Pokazuj odpowiedzi", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 0073ff5f1..3fd4c822e 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Eita!", "announcement.announcement": "Comunicados", "attachments_list.unprocessed": "(não processado)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Pressione {combo} para pular isso na próxima vez", "bundle_column_error.body": "Erro ao carregar este componente.", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 643ef1c6e..0764920e8 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Bolas!", "announcement.announcement": "Anúncio", "attachments_list.unprocessed": "(não processado)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Pode clicar {combo} para não voltar a ver", "bundle_column_error.body": "Algo de errado aconteceu enquanto este componente era carregado.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Qualquer destes", "hashtag.column_settings.tag_mode.none": "Nenhum destes", "hashtag.column_settings.tag_toggle": "Incluir etiquetas adicionais para esta coluna", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Seguir hashtag", "hashtag.total_volume": "Volume total {days, plural, one {no último dia} other {nos últimos {days} dias}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Parar de seguir hashtag", "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar boosts", "home.column_settings.show_replies": "Mostrar respostas", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index a3188f553..e60ce2220 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Ups!", "announcement.announcement": "Anunț", "attachments_list.unprocessed": "(neprocesate)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} pe săptămână", "boost_modal.combo": "Poți apăsa {combo} pentru a sări peste asta data viitoare", "bundle_column_error.body": "A apărut o eroare la încărcarea acestui element.", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index ca9a2cceb..c0bfb8b79 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Упс!", "announcement.announcement": "Объявление", "attachments_list.unprocessed": "(не обработан)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} / неделю", "boost_modal.combo": "{combo}, чтобы пропустить это в следующий раз", "bundle_column_error.body": "Что-то пошло не так при загрузке этого компонента.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Любой из списка", "hashtag.column_settings.tag_mode.none": "Ни один из списка", "hashtag.column_settings.tag_toggle": "Включить дополнительные теги для этой колонки", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Подписаться на новые посты", "hashtag.total_volume": "Общий объем за {days, plural, =1 {последний день} one {последний {days} день} few {последних {days} дня} many {последних {days} дней} other {последних {days} дней}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Отписаться", "home.column_settings.basic": "Основные", "home.column_settings.show_reblogs": "Показывать продвижения", "home.column_settings.show_replies": "Показывать ответы", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index ecbdf816c..3a5faf272 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "अरे !", "announcement.announcement": "उद्घोषणा", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} प्रतिसप्ताहे", "boost_modal.combo": "{combo} अत्र स्प्रष्टुं शक्यते, त्यक्तुमेतमन्यस्मिन् समये", "bundle_column_error.body": "विषयस्याऽऽरोपणे कश्चिद्दोषो जातः", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index aaecfd8e1..93a7ea769 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oh!", "announcement.announcement": "Annùntziu", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} a sa chida", "boost_modal.combo": "Podes incarcare {combo} pro brincare custu sa borta chi benit", "bundle_column_error.body": "Faddina in su carrigamentu de custu cumponente.", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index e50ea9135..18342b7ce 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "අපොයි!", "announcement.announcement": "නිවේදනය", "attachments_list.unprocessed": "(සැකසුම් නොකළ)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "සතියකට {count}", "boost_modal.combo": "ඊළඟ වතාවේ මෙය මඟ හැරීමට ඔබට {combo} එබිය හැක", "bundle_column_error.body": "මෙම සංරචකය පූරණය කිරීමේදී යම් දෙයක් වැරදී ඇත.", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 3454fe7d2..aff5960d9 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Ups!", "announcement.announcement": "Oboznámenie", "attachments_list.unprocessed": "(nespracované)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} týždenne", "boost_modal.combo": "Nabudúce môžeš kliknúť {combo} pre preskočenie", "bundle_column_error.body": "Pri načítaní tohto prvku nastala nejaká chyba.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Hociktorý z týchto", "hashtag.column_settings.tag_mode.none": "Žiaden z týchto", "hashtag.column_settings.tag_toggle": "Vlož dodatočné haštagy pre tento stĺpec", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Nasleduj haštag", "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Nesleduj haštag", "home.column_settings.basic": "Základné", "home.column_settings.show_reblogs": "Ukáž vyzdvihnuté", "home.column_settings.show_replies": "Ukáž odpovede", @@ -401,7 +402,7 @@ "reply_indicator.cancel": "Zrušiť", "report.block": "Blokuj", "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", - "report.categories.other": "Other", + "report.categories.other": "Ostatné", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", "report.category.subtitle": "Choose the best match", @@ -437,7 +438,7 @@ "report.unfollow": "Nesleduj @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", + "report_notification.categories.other": "Ostatné", "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", @@ -471,7 +472,7 @@ "status.embed": "Vložiť", "status.favourite": "Páči sa mi", "status.filtered": "Filtrované", - "status.hide": "Hide toot", + "status.hide": "Skry príspevok", "status.history.created": "{name} vytvoril/a {date}", "status.history.edited": "{name} upravil/a {date}", "status.load_more": "Ukáž viac", @@ -495,7 +496,7 @@ "status.report": "Nahlás @{name}", "status.sensitive_warning": "Chúlostivý obsah", "status.share": "Zdieľaj", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Ukáž aj tak", "status.show_less": "Zobraz menej", "status.show_less_all": "Všetkým ukáž menej", "status.show_more": "Ukáž viac", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 733614f3e..af736ed59 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Uups!", "announcement.announcement": "Objava", "attachments_list.unprocessed": "(neobdelano)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} na teden", "boost_modal.combo": "Če želite preskočiti to, lahko pritisnete {combo}", "bundle_column_error.body": "Med nalaganjem te komponente je prišlo do napake.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Karkoli od naštetega", "hashtag.column_settings.tag_mode.none": "Nič od naštetega", "hashtag.column_settings.tag_toggle": "Za ta stolpec vključi dodatne oznake", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Sledi ključniku", "hashtag.total_volume": "Skupen obseg v {days, plural, one {zadnjem {day} dnevu} two {zadnjih {days} dneh} few {zadnjih {days} dneh} other {zadnjih {days} dneh}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Nehaj slediti ključniku", "home.column_settings.basic": "Osnovno", "home.column_settings.show_reblogs": "Pokaži izpostavitve", "home.column_settings.show_replies": "Pokaži odgovore", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 8bc440503..4f43cec0b 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Hëm!", "announcement.announcement": "Lajmërim", "attachments_list.unprocessed": "(e papërpunuar)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} për javë", "boost_modal.combo": "Që kjo të anashkalohet herës tjetër, mund të shtypni {combo}", "bundle_column_error.body": "Diç shkoi ters teksa ngarkohej ky përbërës.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Cilindo prej këtyre", "hashtag.column_settings.tag_mode.none": "Asnjë prej këtyre", "hashtag.column_settings.tag_toggle": "Përfshi etiketa shtesë për këtë shtyllë", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Ndiqe hashtag-un", "hashtag.total_volume": "Vëllim gjithsej {days, plural, një {day} other {{days} ditët}} e fundit", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Hiqe ndjekjen e hashtag-ut", "home.column_settings.basic": "Bazë", "home.column_settings.show_reblogs": "Shfaq përforcime", "home.column_settings.show_replies": "Shfaq përgjigje", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 131af97e1..2f35ba2c4 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oops!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "Možete pritisnuti {combo} da preskočite ovo sledeći put", "bundle_column_error.body": "Nešto je pošlo po zlu prilikom učitavanja ove komponente.", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index a2409e957..d9d67edf0 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Упс!", "announcement.announcement": "Најава", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} недељно", "boost_modal.combo": "Можете притиснути {combo} да прескочите ово следећи пут", "bundle_column_error.body": "Нешто је пошло по злу приликом учитавања ове компоненте.", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index c0a69b24b..9e3b9cf37 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Hoppsan!", "announcement.announcement": "Meddelande", "attachments_list.unprocessed": "(obearbetad)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per vecka", "boost_modal.combo": "Du kan trycka {combo} för att slippa detta nästa gång", "bundle_column_error.body": "Något gick fel medan denna komponent laddades.", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index 99fdcfd45..bc5e9d91c 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oops!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.body": "Something went wrong while loading this component.", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index cc7241bad..021315b33 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "அச்சச்சோ!", "announcement.announcement": "அறிவிப்பு", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "ஒவ்வொரு வாரம் {count}", "boost_modal.combo": "நீங்கள் இதை அடுத்தமுறை தவிர்க்க {combo} வை அழுத்தவும்", "bundle_column_error.body": "இக்கூற்றை ஏற்றம் செய்யும்பொழுது ஏதோ தவறு ஏற்பட்டுள்ளது.", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 17b0e1ed1..77232ff5f 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oops!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.body": "Something went wrong while loading this component.", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index bbe99b4a6..be49846cb 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "అయ్యో!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "మీరు తదుపరిసారి దీనిని దాటవేయడానికి {combo} నొక్కవచ్చు", "bundle_column_error.body": "ఈ భాగం లోడ్ అవుతున్నప్పుడు ఏదో తప్పు జరిగింది.", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 0bff3caab..e901b9647 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "อุปส์!", "announcement.announcement": "ประกาศ", "attachments_list.unprocessed": "(ยังไม่ได้ประมวลผล)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} ต่อสัปดาห์", "boost_modal.combo": "คุณสามารถกด {combo} เพื่อข้ามสิ่งนี้ในครั้งถัดไป", "bundle_column_error.body": "มีบางอย่างผิดพลาดขณะโหลดส่วนประกอบนี้", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "ใดก็ตามนี้", "hashtag.column_settings.tag_mode.none": "ไม่ใช่ทั้งหมดนี้", "hashtag.column_settings.tag_toggle": "รวมแท็กเพิ่มเติมสำหรับคอลัมน์นี้", - "hashtag.follow": "Follow hashtag", - "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.follow": "ติดตามแฮชแท็ก", + "hashtag.total_volume": "ปริมาณรวมใน {days, plural, other {{days} วัน}}ที่ผ่านมา", + "hashtag.unfollow": "เลิกติดตามแฮชแท็ก", "home.column_settings.basic": "พื้นฐาน", "home.column_settings.show_reblogs": "แสดงการดัน", "home.column_settings.show_replies": "แสดงการตอบกลับ", @@ -520,7 +521,7 @@ "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} days}}", + "trends.counter_by_accounts": "{count, plural, other {{counter} คน}}ใน {days, plural, other {{days} วัน}}ที่ผ่านมา", "trends.trending_now": "กำลังนิยม", "ui.beforeunload": "แบบร่างของคุณจะหายไปหากคุณออกจาก Mastodon", "units.short.billion": "{count} พันล้าน", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 3948bde5e..b69153a62 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Hay aksi!", "announcement.announcement": "Duyuru", "attachments_list.unprocessed": "(işlenmemiş)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "Haftada {count}", "boost_modal.combo": "Bir daha ki sefere {combo} tuşuna basabilirsin", "bundle_column_error.body": "Bu bileşen yüklenirken bir şeyler ters gitti.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Herhangi biri", "hashtag.column_settings.tag_mode.none": "Bunların hiçbiri", "hashtag.column_settings.tag_toggle": "Bu sütundaki ek etiketleri içer", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Etiketi takip et", "hashtag.total_volume": "Son {days, plural, one {gündeki} other {{days} gündeki}} toplam hacim", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Etiketi takibi bırak", "home.column_settings.basic": "Temel", "home.column_settings.show_reblogs": "Boostları göster", "home.column_settings.show_replies": "Yanıtları göster", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index c9a48d37c..9e72174d1 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Ой!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.body": "Something went wrong while loading this component.", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index 99fdcfd45..bc5e9d91c 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oops!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.body": "Something went wrong while loading this component.", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 727b0b994..e26a73f62 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Ой!", "announcement.announcement": "Оголошення", "attachments_list.unprocessed": "(не оброблено)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} в тиждень", "boost_modal.combo": "Ви можете натиснути {combo}, щоб пропустити це наступного разу", "bundle_column_error.body": "Щось пішло не так під час завантаження цього компоненту.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Який-небудь зі списку", "hashtag.column_settings.tag_mode.none": "Жоден зі списку", "hashtag.column_settings.tag_toggle": "Додати додаткові теґи до цього стовпчика", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Стежити за хештегом", "hashtag.total_volume": "Загальний обсяг за останні(й) {days, plural, one {день} few {{days} дні} other {{days} днів}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Не стежити за хештегом", "home.column_settings.basic": "Основні", "home.column_settings.show_reblogs": "Показувати поширення", "home.column_settings.show_replies": "Показувати відповіді", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index b3e3fd771..be9b8b80d 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "ا رے!", "announcement.announcement": "اعلان", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} فی ہفتہ", "boost_modal.combo": "آئیندہ یہ نہ دیکھنے کیلئے آپ {combo} دبا سکتے ہیں", "bundle_column_error.body": "اس عنصر کو برآمد کرتے وقت کچھ خرابی پیش آئی ہے.", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 4cdb1e53d..016fa6b76 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Ốiii!", "announcement.announcement": "Có gì mới?", "attachments_list.unprocessed": "(chưa xử lí)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} mỗi tuần", "boost_modal.combo": "Nhấn {combo} để bỏ qua bước này", "bundle_column_error.body": "Đã có lỗi xảy ra trong khi tải nội dung này.", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "Một phần", "hashtag.column_settings.tag_mode.none": "Không chọn", "hashtag.column_settings.tag_toggle": "Bao gồm thêm hashtag cho cột này", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Theo dõi hashtag", "hashtag.total_volume": "Tổng số lần sử dụng {days, plural, other {{days} ngày}} qua", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Ngưng theo dõi hashtag", "home.column_settings.basic": "Tùy chỉnh", "home.column_settings.show_reblogs": "Hiện những lượt đăng lại", "home.column_settings.show_replies": "Hiện những tút dạng trả lời", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index 898cc22a9..e96b64cc4 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "Oops!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} ⵙ ⵉⵎⴰⵍⴰⵙⵙ", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.body": "Something went wrong while loading this component.", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 334b93034..f250aa1b7 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "哎呀!", "announcement.announcement": "公告", "attachments_list.unprocessed": "(未处理)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "每星期 {count} 条", "boost_modal.combo": "下次按住 {combo} 即可跳过此提示", "bundle_column_error.body": "载入这个组件时发生了错误。", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "任一", "hashtag.column_settings.tag_mode.none": "无一", "hashtag.column_settings.tag_toggle": "在此栏加入额外的标签", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "关注哈希标签", "hashtag.total_volume": "在过去的{days, plural,one {day}other {{days}days}}的总数量", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "取消关注哈希标签", "home.column_settings.basic": "基本设置", "home.column_settings.show_reblogs": "显示转嘟", "home.column_settings.show_replies": "显示回复", @@ -520,7 +521,7 @@ "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} days}}", + "trends.counter_by_accounts": "过去{day}天有{counter}人讨论", "trends.trending_now": "现在流行", "ui.beforeunload": "如果你现在离开 Mastodon,你的草稿内容将会丢失。", "units.short.billion": "{count} B", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index e3c65cdab..f17df83c4 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "噢!", "announcement.announcement": "公告", "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} / 週", "boost_modal.combo": "如你想在下次路過這顯示,請按{combo},", "bundle_column_error.body": "加載本組件出錯。", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 99814b30d..a18e92066 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -59,6 +59,7 @@ "alert.unexpected.title": "哎呀!", "announcement.announcement": "公告", "attachments_list.unprocessed": "(未經處理)", + "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} / 週", "boost_modal.combo": "下次您可以按 {combo} 跳過", "bundle_column_error.body": "載入此元件時發生錯誤。", @@ -220,9 +221,9 @@ "hashtag.column_settings.tag_mode.any": "任一", "hashtag.column_settings.tag_mode.none": "全不", "hashtag.column_settings.tag_toggle": "將額外標籤加入到這個欄位", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "追蹤主題標籤", "hashtag.total_volume": "過去 {days, plural, one {日} other {{days} 日}} 之總量", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "取消追蹤主題標籤", "home.column_settings.basic": "基本", "home.column_settings.show_reblogs": "顯示轉嘟", "home.column_settings.show_replies": "顯示回覆", diff --git a/config/locales/activerecord.de.yml b/config/locales/activerecord.de.yml index a24862a70..d3c013dc0 100644 --- a/config/locales/activerecord.de.yml +++ b/config/locales/activerecord.de.yml @@ -38,3 +38,14 @@ de: email: blocked: verwendet einen nicht erlaubten E-Mail-Anbieter unreachable: scheint nicht zu existieren + role_id: + elevated: Kann nicht höher als Ihre aktuelle Rolle sein + user_role: + attributes: + permissions_as_keys: + dangerous: enthalte Berechtigungen, die für die Basisrolle nicht sicher sind + elevated: kann keine Berechtigungen enthalten, die deine aktuelle Rolle nicht besitzt + own_role: kann nicht mit deiner aktuellen Rolle geändert werden + position: + elevated: kann nicht höher sein als deine aktuelle Rolle + own_role: kann nicht mit deiner aktuellen Rolle geändert werden diff --git a/config/locales/activerecord.es-MX.yml b/config/locales/activerecord.es-MX.yml index 37b9b05df..c7283aafd 100644 --- a/config/locales/activerecord.es-MX.yml +++ b/config/locales/activerecord.es-MX.yml @@ -45,5 +45,7 @@ es-MX: permissions_as_keys: dangerous: incluir permisos que no son seguros para el rol base elevated: no se pueden incluir permisos que tu rol actual no posea + own_role: no se puede cambiar con tu rol actual position: elevated: no puede ser mayor que tu rol actual + own_role: no se puede cambiar con tu rol actual diff --git a/config/locales/activerecord.fi.yml b/config/locales/activerecord.fi.yml index 40dd81812..f9798cabe 100644 --- a/config/locales/activerecord.fi.yml +++ b/config/locales/activerecord.fi.yml @@ -21,6 +21,14 @@ fi: username: invalid: saa sisältää vain kirjaimia, numeroita ja alaviivoja reserved: on varattu + admin/webhook: + attributes: + url: + invalid: ei ole kelvollinen URL + doorkeeper/application: + attributes: + website: + invalid: ei ole kelvollinen URL status: attributes: reblog: @@ -30,3 +38,14 @@ fi: email: blocked: käyttää kiellettyä sähköpostipalvelun tarjoajaa unreachable: ei näytä olevan olemassa + role_id: + elevated: ei voi olla korkeampi kuin nykyinen roolisi + user_role: + attributes: + permissions_as_keys: + dangerous: sisältää oikeudet, jotka eivät ole turvallisia perusroolille + elevated: ei voi sisältää oikeuksia, joita nykyisellä roolillasi ei ole + own_role: ei voi muuttaa nykyisellä roolillasi + position: + elevated: ei voi olla korkeampi kuin nykyinen roolisi + own_role: ei voi muuttaa nykyisellä roolillasi diff --git a/config/locales/activerecord.gd.yml b/config/locales/activerecord.gd.yml index 2920b561e..b210144ef 100644 --- a/config/locales/activerecord.gd.yml +++ b/config/locales/activerecord.gd.yml @@ -21,6 +21,14 @@ gd: username: invalid: "– chan fhaod ach litrichean gun sràcan, àireamhan ’s fo-loidhnichean a bhith ’na bhroinn" reserved: "– tha e glèidhte" + admin/webhook: + attributes: + url: + invalid: "– chan eil seo ’na URL dligheach" + doorkeeper/application: + attributes: + website: + invalid: "– chan eil seo ’na URL dligheach" status: attributes: reblog: @@ -30,3 +38,14 @@ gd: email: blocked: "– tha seo a’ chleachdadh solaraiche puist-d nach eil ceadaichte" unreachable: "– tha coltas nach eil seo ann" + role_id: + elevated: "– chan fhaod seo a bhith nas àirde na an dreuchd a th’ agad an-dràsta" + user_role: + attributes: + permissions_as_keys: + dangerous: gabh a-staigh na ceadan nach eil sàbhailte dhan bhun-dreuchd + elevated: chan urrainn dhut ceadan a ghabhail a-staigh nach eil aig an dreuchd a th’ agad an-dràsta + own_role: cha ghabh seo atharrachadh leis an dreuchd a th’ agad an-dràsta + position: + elevated: chan fhaod seo a bhith nas àirde na an dreuchd a th’ agad an-dràsta + own_role: cha ghabh seo atharrachadh leis an dreuchd a th’ agad an-dràsta diff --git a/config/locales/activerecord.ja.yml b/config/locales/activerecord.ja.yml index 52b1b37fd..06d63da7a 100644 --- a/config/locales/activerecord.ja.yml +++ b/config/locales/activerecord.ja.yml @@ -38,3 +38,9 @@ ja: email: blocked: は禁止されているメールプロバイダを使用しています unreachable: は存在しないようです + user_role: + attributes: + permissions_as_keys: + own_role: 現在と同じロールには変更できません + position: + own_role: 現在と同じロールには変更できません diff --git a/config/locales/activerecord.ku.yml b/config/locales/activerecord.ku.yml index ee8d9a8d8..3eec2950c 100644 --- a/config/locales/activerecord.ku.yml +++ b/config/locales/activerecord.ku.yml @@ -45,5 +45,7 @@ ku: permissions_as_keys: dangerous: mafdayînên ku ji bo rola bingehîn ne ewle ne tê de hene elevated: di rola te ya heyî de nabe mafdayîn tê de hebin + own_role: bi rola te ya heyî nayê guhertin position: elevated: nabe ku ji rola te ya heyî bilindtir be + own_role: bi rola te ya heyî nayê guhertin diff --git a/config/locales/activerecord.nn.yml b/config/locales/activerecord.nn.yml index f23f9ae6c..ce37d1856 100644 --- a/config/locales/activerecord.nn.yml +++ b/config/locales/activerecord.nn.yml @@ -6,11 +6,12 @@ nn: expires_at: Frist options: Val user: - email: E-mail address + agreement: Serviceavtale + email: Epostadresse locale: Område password: Passord user/account: - username: Brukernavn + username: Brukarnamn user/invite_request: text: Grunn errors: @@ -18,9 +19,32 @@ nn: account: attributes: username: - invalid: bare bokstaver, tall og understreker + invalid: må innehalde kun bokstavar, tal og understrekar reserved: er reservert + admin/webhook: + attributes: + url: + invalid: er ikkje ein gyldig URL + doorkeeper/application: + attributes: + website: + invalid: er ikkje ein gyldig URL status: attributes: reblog: - taken: av status eksisterer allerede + taken: av innlegg eksisterer allereie + user: + attributes: + email: + unreachable: ser ikkje ut til å eksistere + role_id: + elevated: kan ikkje vere høgare enn di noverande rolle + user_role: + attributes: + permissions_as_keys: + dangerous: inkluder tillatingar som ikkje er trygge for basisrolla + elevated: kan ikkje inkludere rettigheiter di noverande rolle ikkje innehar + own_role: kan ikkje endrast med di noverande rolle + position: + elevated: kan ikkje vere høgare enn di noverande rolle + own_role: kan ikkje endrast med di noverande rolle diff --git a/config/locales/de.yml b/config/locales/de.yml index 0c8321295..0ce9c3254 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -103,11 +103,17 @@ de: avatar: Profilbild by_domain: Domain change_email: + changed_msg: E-Mail erfolgreich geändert! current_email: Aktuelle E-Mail-Adresse label: E-Mail-Adresse ändern new_email: Neue E-Mail-Adresse submit: E-Mail-Adresse ändern title: E-Mail-Adresse für %{username} ändern + change_role: + changed_msg: Rolle erfolgreich geändert! + label: Rolle ändern + no_role: Keine Rolle + title: Rolle für %{username} ändern confirm: Bestätigen confirmed: Bestätigt confirming: Bestätigung @@ -151,6 +157,7 @@ de: active: Aktiv all: Alle pending: In Warteschlange + silenced: Limitiert suspended: Gesperrt title: Moderation moderation_notes: Moderationsnotizen @@ -158,6 +165,7 @@ de: most_recent_ip: Letzte IP-Adresse no_account_selected: Keine Konten wurden geändert, da keine ausgewählt wurden no_limits_imposed: Keine Beschränkungen + no_role_assigned: Keine Rolle zugewiesen not_subscribed: Nicht abonniert pending: In Warteschlange perform_full_suspension: Verbannen @@ -184,6 +192,7 @@ de: reset: Zurücksetzen reset_password: Passwort zurücksetzen resubscribe: Wieder abonnieren + role: Rolle search: Suche search_same_email_domain: Andere Benutzer mit der gleichen E-Mail-Domain search_same_ip: Andere Benutzer mit derselben IP @@ -640,6 +649,67 @@ de: unresolved: Ungelöst updated_at: Aktualisiert view_profile: Zeige Profil + roles: + add_new: Rolle hinzufügen + assigned_users: + one: "%{count} Benutzer" + other: "%{count} Benutzer" + categories: + administration: Administration + devops: DevOps + invites: Einladungen + moderation: Moderation + special: Spezial + delete: Löschen + description_html: Mit Benutzerrollenkönnen Sie die Funktionen und Bereiche von Mastodon anpassen, auf die Ihre Benutzer zugreifen können. + edit: "'%{name}' Rolle bearbeiten" + everyone: Standardberechtigungen + everyone_full_description_html: Das ist die -Basis-Rolle die jeden Benutzer betrifft, auch diejenigen ohne zugewiesene Rolle. Alle anderen Rollen erben Berechtigungen davon. + permissions_count: + one: "%{count} Berechtigung" + other: "%{count} Berechtigungen" + privileges: + administrator: Administrator + administrator_description: Benutzer mit dieser Berechtigung werden jede Berechtigung umgehen + delete_user_data: Benutzerdaten löschen + delete_user_data_description: Erlaubt Benutzern, die Daten anderer Benutzer ohne Verzögerung zu löschen + invite_users: Benutzer einladen + invite_users_description: Erlaubt Benutzern neue Leute zum Server einzuladen + manage_announcements: Ankündigungen verwalten + manage_announcements_description: Erlaubt Benutzern Ankündigungen auf dem Server zu verwalten + manage_appeals: Anträge verwalten + manage_appeals_description: Erlaubt es Benutzer Anträge gegen Moderationsaktionen zu überprüfen + manage_blocks: Geblocktes verwalten + manage_blocks_description: Erlaubt Benutzern E-Mail-Anbieter und IP-Adressen zu blockieren + manage_custom_emojis: Benutzerdefinierte Emojis verwalten + manage_custom_emojis_description: Erlaubt Benutzern benutzerdefinierte Emojis auf dem Server zu verwalten + manage_federation: Föderation verwalten + manage_federation_description: Erlaubt Benutzern, Föderation mit anderen Domänen zu blockieren oder zuzulassen und die Zustellbarkeit zu kontrollieren + manage_invites: Einladungen verwalten + manage_invites_description: Erlaubt Benutzern Einladungslinks zu durchsuchen und zu deaktivieren + manage_reports: Meldungen verwalten + manage_reports_description: Erlaubt Benutzern Meldungen zu überprüfen und Moderationsaktionen gegen sie durchzuführen + manage_roles: Rollen verwalten + manage_roles_description: Erlaubt Benutzern Rollen unter ihren Rollen zu verwalten und zuzuweisen + manage_rules: Regeln verwalten + manage_rules_description: Erlaubt Benutzern Serverregeln zu ändern + manage_settings: Einstellungen verwalten + manage_settings_description: Erlaubt Benutzern Site-Einstellungen zu ändern + manage_taxonomies: Taxonomien verwalten + manage_taxonomies_description: Ermöglicht Benutzern die Überprüfung angesagter Inhalte und das Aktualisieren der Hashtag-Einstellungen + manage_user_access: Benutzerzugriff verwalten + manage_user_access_description: Erlaubt Benutzern die Zwei-Faktor-Authentifizierung anderer Benutzer zu deaktivieren, ihre E-Mail-Adresse zu ändern und ihr Passwort zurückzusetzen + manage_users: Benutzer verwalten + manage_users_description: Erlaubt Benutzern die Details anderer Benutzer anzuzeigen und Moderationsaktionen gegen sie auszuführen + manage_webhooks: Webhooks verwalten + manage_webhooks_description: Erlaubt Benutzern Webhooks für administrative Ereignisse einzurichten + view_audit_log: Audit-Log anzeigen + view_audit_log_description: Erlaubt Benutzern den Verlauf von administrativen Aktionen auf dem Server zu sehen + view_dashboard: Dashboard anzeigen + view_dashboard_description: Erlaubt Benutzern den Zugriff auf das Dashboard und verschiedene Metriken + view_devops: DevOps + view_devops_description: Erlaubt Benutzern auf Sidekiq und pgHero Dashboards zuzugreifen + title: Rollen rules: add_new: Regel hinzufügen delete: Löschen @@ -1109,14 +1179,24 @@ de: public: Öffentliche Zeitleisten thread: Gespräche edit: + add_keyword: Stichwort hinzufügen + keywords: Stichwörter title: Filter bearbeiten errors: + deprecated_api_multiple_keywords: Diese Parameter können von dieser Anwendung nicht geändert werden, da sie auf mehr als ein Filterschlüsselwort angewendet werden. Verwenden Sie eine neuere Anwendung oder die Web-Schnittstelle. invalid_context: Ungültiger oder fehlender Kontext übergeben index: + contexts: Filter in %{contexts} delete: Löschen empty: Du hast keine Filter. + expires_in: Läuft ab in %{distance} + expires_on: Läuft am %{date} ab + keywords: + one: "%{count} Stichwort" + other: "%{count} Stichwörter" title: Filter new: + save: Neuen Filter speichern title: Neuen Filter hinzufügen footer: developers: Entwickler @@ -1235,6 +1315,8 @@ de: copy_account_note_text: 'Dieser Benutzer ist von %{acct} umgezogen, hier waren deine letzten Notizen zu diesem Benutzer:' notification_mailer: admin: + report: + subject: "%{name} hat eine Meldung eingereicht" sign_up: subject: "%{name} registrierte sich" digest: diff --git a/config/locales/devise.en-GB.yml b/config/locales/devise.en-GB.yml new file mode 100644 index 000000000..ef03d1810 --- /dev/null +++ b/config/locales/devise.en-GB.yml @@ -0,0 +1 @@ +en-GB: diff --git a/config/locales/devise.ku.yml b/config/locales/devise.ku.yml index 18187a156..d5d0105ef 100644 --- a/config/locales/devise.ku.yml +++ b/config/locales/devise.ku.yml @@ -29,13 +29,13 @@ ku: title: Navnîşana e-nameyê piştrast bike email_changed: explanation: 'Navnîşana e-nameyê ajimêra te hate guhertin bo:' - extra: Heke te ajimêra xwe ne guhertiye. Ew tê wateya ku kesek ketiye ajimêrê te. Jkx pêborîna xwe zû biguherîne an jî bi rêveberiya rajekar re têkeve têkiliyê heke tu êdî nikare ajimêra xwe bi kar bînî. + extra: Ku te ajimêra xwe neguhertiye. Ew tê wateya ku kesek ketiye ajimêrê te. Jkx pêborîna xwe zû biguherîne an jî bi rêveberiya rajekar re têkeve têkiliyê heke tu êdî nikare ajimêra xwe bi kar bînî. subject: 'Mastodon: E-name hate guhertin' title: Navnîşana e-nameya nû password_change: explanation: Borînpeyva ajimêra te hate guhertin. - extra: Heke te ajimêra xwe ne guhertiye. Ew tê wateya ku kesek ketiye ajimêrê te. Jkx pêborîna xwe zû biguherîne an jî bi rêveberiya rajekar re têkeve têkiliyê heke tu êdî nikare ajimêra xwe bi kar bînî. - subject: 'Mastodon: pêborîn hate guhertin' + extra: Ku te ajimêra xwe neguhertiye. Ew tê wateya ku kesek ketiye ajimêrê te. Jkx pêborîna xwe zû biguherîne an jî bi rêveberiya rajekar re têkeve têkiliyê heke tu êdî nikare ajimêra xwe bi kar bînî. + subject: 'Mastodon: Borînpeyv hate guhertin' title: Borînpeyv hate guhertin reconfirmation_instructions: explanation: Navnîşana nû piştrast bike da ku tu e-nameya xwe biguherînî. diff --git a/config/locales/devise.nl.yml b/config/locales/devise.nl.yml index 2cbbee6cf..477c7d41f 100644 --- a/config/locales/devise.nl.yml +++ b/config/locales/devise.nl.yml @@ -51,7 +51,7 @@ nl: subject: 'Mastodon: Tweestapsverificatie uitgeschakeld' title: Tweestapsverificatie uitgeschakeld two_factor_enabled: - explanation: Tweestapsverificatie voor jouw account is ingeschakeld. Om te kunnen aanmelden is een door een tweestapsverificatie-app genereerde toegangscode nodig. + explanation: Tweestapsverificatie voor jouw account is ingeschakeld. Om te kunnen inloggen is een door een tweestapsverificatie-app genereerde toegangscode nodig. subject: 'Mastodon: Tweestapsverificatie ingeschakeld' title: Tweestapsverificatie ingeschakeld two_factor_recovery_codes_changed: diff --git a/config/locales/devise.nn.yml b/config/locales/devise.nn.yml index 88d8458f7..0318e7ea9 100644 --- a/config/locales/devise.nn.yml +++ b/config/locales/devise.nn.yml @@ -41,7 +41,7 @@ nn: subject: 'Mastodon: Stadfest e-post for %{instance}' title: Stadfest e-postadresse reset_password_instructions: - action: Endr passord + action: Endre passord explanation: Du har bedt om eit nytt passord til kontoen din. extra: Om du ikkje bad om dette, ignorer denne e-posten. Passordet ditt vert ikkje endra før du går inn på lenkja ovanfor og lagar eit nytt. subject: 'Mastodon: Instuksjonar for å endra passord' @@ -63,51 +63,51 @@ nn: webauthn_credential: added: explanation: Følgende sikkerhetsnøkkel har blitt lagt til i kontoen din - subject: 'Mastodon: Ny sikkerhetsnøkkel' - title: En ny sikkerhetsnøkkel har blitt lagt til + subject: 'Mastodon: Ny sikkerheitsnøkkel' + title: Ein ny sikkerheitsnøkkel har blitt lagt til deleted: - explanation: Følgende sikkerhetsnøkkel har blitt slettet fra kontoen din - subject: 'Mastodon: Sikkerhetsnøkkel slettet' - title: En av sikkerhetsnøklene dine har blitt slettet + explanation: Den følgande sikkerheitsnøkkelen har blitt sletta frå kontoen din + subject: 'Mastodon: Sikkerheitsnøkkel sletta' + title: Ein av sikkerheitsnøklane dine har blitt sletta webauthn_disabled: - subject: 'Mastodon: Autentisering med sikkerhetsnøkler ble skrudd av' - title: Sikkerhetsnøkler deaktivert + subject: 'Mastodon: Autentisering med sikkerheitsnøklar vart skrudd av' + title: Sikkerheitsnøklar deaktivert webauthn_enabled: - subject: 'Mastodon: Sikkerhetsnøkkelsautentisering ble skrudd på' - title: Sikkerhetsnøkler aktivert + subject: 'Mastodon: Sikkerheitsnøkkelsautentisering vart skrudd på' + title: Sikkerheitsnøklar aktivert omniauth_callbacks: - failure: Du kunne ikkje verte autentisert frå %{kind} av di "%{reason}". + failure: Kunne ikkje autentisere deg frå %{kind} fordi "%{reason}". success: Autentisert frå %{kind}-konto. passwords: - no_token: Du har ikkje tilgang til denne sida utan ha gått via ein e-post som gjeld å nullstille passordet. Dersom det er kva du har gjort, dobbelsjekk at du har kopiert heile URLen. - send_instructions: Om vi har e-postadressa di i databasen vår, får du ein e-post med lenke til gjenopprette passordet om nokre få minutt. Sjekk søppelpostmappa di om du ikkje fekk denne e-posten. - send_paranoid_instructions: Om vi har e-postadressa di i databasen vår, får du ei lenkje til å endra passordet om nokre få minutt. Ver venleg og sjekk søppelpostmappa om du ikkje fekk denne e-posten. + no_token: Du har ikkje tilgang til denne sida utan ha gått via ein e-post som gjeld å nullstille passordet. Dersom det var det du gjorde, dobbelsjekk at du har kopiert heile URLen. + send_instructions: Om me har epostadressa di i databasen vår, får du ein epost med ei lenke til å gjenopprette passordet om nokre få minutt. Sjekk søppelpostmappa di om du ikkje fekk denne eposten. + send_paranoid_instructions: Om me har epostadressa di i databasen vår, får du ei lenke til å endra passordet om nokre få minutt. Ver venleg å sjekke søppelpostmappa om du ikkje fekk denne eposten. updated: Passordet ditt er endra. No er du logga inn. updated_not_active: Passordet ditt er endra. registrations: - destroyed: Ha det! Kontoen din er sletta. Vi vonar å sjå deg igjen snart. + destroyed: Ha det! Kontoen din er sletta. Me vonar å sjå deg igjen snart. signed_up: Velkomen! No er du registrert. - signed_up_but_inactive: Du har registrert deg inn, men vi kunne ikkje logga deg inn fordi kontoen din er ikkje aktivert enno. - signed_up_but_locked: Du har registrert deg inn, men vi kunne ikkje logga deg inn fordi kontoen din er låst. - signed_up_but_pending: Ei melding med ei stadfestingslenkje er vorten send til e-postadressa di. Når du klikkar på lenkja skal vi sjå gjennom søknaden din. Du får ei melding om han vert godkjend. - signed_up_but_unconfirmed: Ei melding med ei lenke for å stadfeste kontoen har vorte sendt e-postadressa di. Klikk på lenka for å aktivere kontoen. Sjekk søppelpostmappa dersom du ikkje har fått e-posten. - update_needs_confirmation: Du har oppdatert kontoen din, men vi må stadfeste den nye e-postadressa. Sjekk innboksen og følg lenka for å stadfeste adressa di. Sjekk søppelpostmappa dersom du ikkje har fått den e-posten. + signed_up_but_inactive: Du har registrert deg, men me kunne ikkje logga deg inn fordi kontoen din er ikkje aktivert enno. + signed_up_but_locked: Du har registrert deg, men me kunne ikkje logga deg inn fordi kontoen din er låst. + signed_up_but_pending: Ei melding med ei stadfestingslenke har vorte sendt til epostadressa di. Når du klikkar på lenka skal me sjå gjennom søknaden din. Du får ei melding om den vert godkjend. + signed_up_but_unconfirmed: Ei melding med ei lenke for å stadfeste kontoen har vorte sendt til epostadressa di. Klikk på lenka for å aktivere kontoen. Sjekk søppelpostmappa dersom du ikkje har fått eposten. + update_needs_confirmation: Du har oppdatert kontoen din, men me må stadfesta den nye epostadressa. Sjekk innboksen og fylg lenka for å stadfeste adressa di. Sjekk søppelpostmappa dersom du ikkje har fått denne eposten. updated: Kontoen har vorte oppdatert. sessions: already_signed_out: Logga ut. signed_in: Logga inn. signed_out: Logga ut. unlocks: - send_instructions: Om nokre minutt får du ein e-post med instruksjonar for korleis du kan låse opp kontoen din. Sjekk søppelpostmappa om du ikkje finn den mailen. - send_paranoid_instructions: Dersom du har konto her, får du ein e-post med instruksjonar for korleis du kan låse opp kontoen din om nokre minutt. Sjekk søppelpostmappa om du ikkje finn den mailen. + send_instructions: Om nokre minutt får du ein epost med instruksjonar for korleis du kan låse opp kontoen din. Sjekk søppelpostmappa om du ikkje finn den eposten. + send_paranoid_instructions: Dersom du har konto her, får du ein epost med instruksjonar for korleis du kan låse opp kontoen din om nokre minutt. Sjekk søppelpostmappa om du ikkje finn den eposten. unlocked: Kontoen din har vorte låst opp. Logg inn for å halde fram. errors: messages: - already_confirmed: er allereie stadfesta, prøv logge inn + already_confirmed: er allereie stadfesta, prøv å logge inn confirmation_period_expired: må verte stadfesta innan %{period}, spør etter ein ny - expired: er utgått, ver venleg å beda om ein ny ein + expired: er utgått, ver venleg å be om ein ny ein not_found: ikkje funne not_locked: var ikkje låst not_saved: one: '1 feil hindra %{resource} frå verte lagra:' - other: "%{count} feil hindra %{resource} frå verte lagra:" + other: "%{count} feil hindra %{resource} frå å verte lagra:" diff --git a/config/locales/doorkeeper.fi.yml b/config/locales/doorkeeper.fi.yml index db7c4d01a..5efa63bc9 100644 --- a/config/locales/doorkeeper.fi.yml +++ b/config/locales/doorkeeper.fi.yml @@ -60,6 +60,7 @@ fi: error: title: Tapahtui virhe new: + prompt_html: "%{client_name} pyytää lupaa käyttää tiliäsi. Se on kolmannen osapuolen sovellus. Jos et luota siihen, sinun ei pitäisi sallia sitä." review_permissions: Tarkista käyttöoikeudet title: Valtuutus vaaditaan show: @@ -70,6 +71,8 @@ fi: confirmations: revoke: Oletko varma? index: + authorized_at: Valtuutettu %{date} + description_html: Nämä ovat sovelluksia, jotka voivat käyttää tiliäsi käyttäen API. Jos et tunnista sitä tai sovellus toimii väärin, voit peruuttaa sen käyttöoikeuden. last_used_at: Viimeksi käytetty %{date} never_used: Ei käytetty scopes: Oikeudet @@ -116,6 +119,9 @@ fi: write: Vain kirjoitus title: accounts: Tilit + admin/accounts: Tilien hallinta + admin/all: Kaikki hallinnolliset toiminnot + admin/reports: Raporttien hallinta all: Kaikki blocks: Torjutut bookmarks: Kirjanmerkit @@ -147,6 +153,7 @@ fi: admin:write: muokata kaikkia tietoja palvelimella admin:write:accounts: suorita moderointitoiminnot tileillä admin:write:reports: suorita moderointitoiminnot raporteissa + crypto: käytä päästä päähän salausta follow: seurata, estää, perua eston ja lopettaa tilien seuraaminen push: vastaanottaa push-ilmoituksesi read: lukea tilin tietoja @@ -166,6 +173,7 @@ fi: write:accounts: muokata profiiliasi write:blocks: estää tilit ja palvelimet write:bookmarks: kirjanmerkki viestit + write:conversations: mykistä ja poistaa keskustelut write:favourites: suosikki viestit write:filters: luoda suodattimia write:follows: seurata ihmisiä diff --git a/config/locales/doorkeeper.nn.yml b/config/locales/doorkeeper.nn.yml index 789b50f61..d17d38c3f 100644 --- a/config/locales/doorkeeper.nn.yml +++ b/config/locales/doorkeeper.nn.yml @@ -60,6 +60,7 @@ nn: error: title: Ein feil har oppstått new: + prompt_html: "%{client_name} ønsker tilgang til kontoen din. Det er ein tredjepartsapplikasjon. Dersom du ikkje stolar på den, bør du ikkje autorisere det." title: Autorisasjon nødvendig show: title: Kopier denne autorisasjonskoden og lim den inn i applikasjonen. @@ -69,6 +70,9 @@ nn: confirmations: revoke: Er du sikker? index: + authorized_at: Autorisert den %{date} + last_used_at: Sist brukt den %{date} + never_used: Aldri brukt title: Dine autoriserte applikasjonar errors: messages: @@ -104,6 +108,25 @@ nn: authorized_applications: destroy: notice: App avvist. + grouped_scopes: + title: + accounts: Kontoar + admin/accounts: Kontoadministrasjon + admin/all: Alle administrative funksjonar + admin/reports: Rapportadministrasjon + all: Alt + bookmarks: Bokmerke + conversations: Samtalar + crypto: Ende-til-ende-kryptering + favourites: Favorittar + filters: Filter + lists: Lister + media: Mediavedlegg + mutes: Målbindingar + notifications: Varsel + reports: Rapportar + search: Søk + statuses: Innlegg layouts: admin: nav: @@ -118,6 +141,7 @@ nn: admin:write: modifisere alle data på tjeneren admin:write:accounts: utføre moderatorhandlinger på kontoer admin:write:reports: utføre moderatorhandlinger på rapporter + crypto: bruk ende-til-ende-kryptering follow: følg, blokkér, avblokkér, avfølg brukere push: motta dine varsler read: lese dine data @@ -132,12 +156,13 @@ nn: read:notifications: sjå varsla dine read:reports: sjå rapportane dine read:search: søke på dine vegne - read:statuses: sjå alle statusar + read:statuses: sjå alle innlegg write: poste på dine vegne - write:accounts: rediger profilen din + write:accounts: redigera profilen din write:blocks: blokker kontoar og domene write:bookmarks: bokmerk statusar - write:favourites: merk statusar som favoritt + write:conversations: målbind og slett samtalar + write:favourites: merk innlegg som favoritt write:filters: lag filter write:follows: fylg folk write:lists: lag lister @@ -145,4 +170,4 @@ nn: write:mutes: målbind folk og samtalar write:notifications: tøm varsla dine write:reports: rapporter andre folk - write:statuses: legg ut statusar + write:statuses: publiser innlegg diff --git a/config/locales/doorkeeper.th.yml b/config/locales/doorkeeper.th.yml index a7e4a69a5..a0913dc92 100644 --- a/config/locales/doorkeeper.th.yml +++ b/config/locales/doorkeeper.th.yml @@ -88,7 +88,7 @@ th: invalid_request: missing_param: 'พารามิเตอร์ที่จำเป็นขาดหายไป: %{value}' request_not_authorized: คำขอจำเป็นต้องได้รับอนุญาต พารามิเตอร์ที่จำเป็นสำหรับการอนุญาตคำขอขาดหายไปหรือไม่ถูกต้อง - unknown: คำขอไม่มีพารามิเตอร์ที่จำเป็น รวมค่าพารามิเตอร์ที่ไม่รองรับ หรือผิดรูปแบบ + unknown: คำขอไม่มีพารามิเตอร์ที่จำเป็น รวมค่าพารามิเตอร์ที่ไม่รองรับ หรือมิฉะนั้นผิดรูปแบบ invalid_resource_owner: ข้อมูลประจำตัวเจ้าของทรัพยากรที่ให้มาไม่ถูกต้อง หรือไม่พบเจ้าของทรัพยากร invalid_scope: ขอบเขตที่ขอไม่ถูกต้อง ไม่รู้จัก หรือผิดรูปแบบ invalid_token: diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 5d3e1e367..6ac1eb45d 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -26,16 +26,18 @@ eo: ' learn_more: Lerni pli + logged_in_as_html: Vi nun salutis kiel %{username}. logout_before_registering: Vi jam salutis. - privacy_policy: Privateca politiko + privacy_policy: Politiko de privateco rules: Reguloj de la servilo see_whats_happening: Vidi kio okazas - server_stats: Servo statuso + server_stats: 'Statistiko de la servilo:' source_code: Fontkodo status_count_after: one: mesaĝo other: mesaĝoj status_count_before: Kie skribiĝis + tagline: Malcentrigita socia retejo terms: Kondiĉoj de la servo unavailable_content: Moderigitaj serviloj unavailable_content_description: @@ -108,9 +110,9 @@ eo: delete: Forigi datumojn deleted: Forigita demote: Degradi - disable: Malebligi - disable_two_factor_authentication: Malebligi 2FA - disabled: Malebligita + disable: Frostigi + disable_two_factor_authentication: Malaktivigi 2FA-n + disabled: Frostigita display_name: Montrata nomo domain: Domajno edit: Redakti @@ -220,9 +222,9 @@ eo: destroy_ip_block: Forigi IP-regulon destroy_status: Forigi mesaĝon destroy_unavailable_domain: Forigi Nehaveblan Domajnon - disable_2fa_user: Malebligi 2FA - disable_custom_emoji: Malebligi Propran Emoĝion - disable_user: Malebligi uzanton + disable_2fa_user: Malaktivigi 2FA-n + disable_custom_emoji: Malaktivigi la proprajn emoĝiojn + disable_user: Malaktivigi la uzanton enable_custom_emoji: Ebligi Propran Emoĝion enable_sign_in_token_auth_user: Aktivigi la aŭtentigon de peco per retpoŝto por la uzanto enable_user: Ebligi uzanton @@ -265,9 +267,9 @@ eo: destroy_email_domain_block_html: "%{name} malblokis retpoŝtan domajnon %{target}" destroy_ip_block_html: "%{name} forigis regulon por IP %{target}" destroy_status_html: "%{name} forigis mesaĝojn de %{target}" - disable_2fa_user_html: "%{name} malebligis dufaktoran aŭtentigon por uzanto %{target}" - disable_custom_emoji_html: "%{name} malebligis emoĝion %{target}" - disable_user_html: "%{name} malebligis ensaluton por uzanto %{target}" + disable_2fa_user_html: "%{name} malaktivigis la postulon de la dufaktora aŭtentigo por la uzanto %{target}" + disable_custom_emoji_html: "%{name} neebligis la emoĝion %{target}" + disable_user_html: "%{name} neebligis la saluton de la uzanto %{target}" enable_custom_emoji_html: "%{name} ebligis emoĝion %{target}" enable_user_html: "%{name} ebligis ensaluton por uzanto %{target}" memorialize_account_html: "%{name} ŝanĝis la konton de %{target} al memora paĝo" @@ -310,9 +312,9 @@ eo: created_msg: Emoĝio sukcese kreita! delete: Forigi destroyed_msg: Emoĝio sukcese forigita! - disable: Malebligi - disabled: Malebligita - disabled_msg: Emoĝio sukcese malebligita + disable: Neebligi + disabled: Neebligita + disabled_msg: La emoĝio sukcese neebligita emoji: Emoĝio enable: Ebligi enabled: Ebligita @@ -458,11 +460,11 @@ eo: add_new: Aldoni novan ripetilon delete: Forigi description_html: "Fratara ripetilo estas survoja servilo, kiu interŝanĝas grandan kvanton de publikaj mesaĝoj inter serviloj, kiuj abonas kaj publikigas al ĝi. Ĝi povas helpi etajn kaj mezgrandajn servilojn malkovri enhavon de la fediverse, kio normale postulus al lokaj uzantoj mane sekvi homojn de foraj serviloj." - disable: Malebligi - disabled: Malebligita + disable: Neebligi + disabled: Neebligita enable: Ebligi enable_hint: Post ebligo, via servilo abonos ĉiujn publikajn mesaĝojn de tiu ripetilo, kaj komencos sendi publikajn mesaĝojn de la servilo al ĝi. - enabled: Malebligita + enabled: Ebligita inbox_url: URL de la ripetilo pending: Atendante aprobon de la ripetilo save_and_enable: Konservi kaj ebligi @@ -618,7 +620,7 @@ eo: strikes: actions: delete_statuses: "%{name} forigis afiŝojn de %{target}" - disable: "%{name} malebligis la konton de %{target}" + disable: "%{name} frostigis la konton de %{target}" suspend: "%{name} suspendis la konton de %{target}" appeal_approved: Apelaciita system_checks: @@ -644,6 +646,9 @@ eo: allow_account: Permesi aŭtoron disallow: Malpermesi afiŝon disallow_account: Malpermesi aŭtoron + shared_by: + one: Kundividita kaj aldonita al preferaĵoj unufoje + other: Kundividita kaj aldonita al preferaĵoj %{friendly_count}-foje title: Tendencantaj afiŝoj tags: dashboard: @@ -660,7 +665,7 @@ eo: admin_mailer: new_appeal: actions: - disable: por malebligi ties konton + disable: por frostigi ties konton new_pending_account: body: La detaloj de la nova konto estas sube. Vi povas aprobi aŭ Malakcepti ĉi kandidatiĝo. subject: Nova konto atendas por recenzo en %{instance} (%{username}) @@ -765,7 +770,7 @@ eo: invalid_signature: 올바른 Ed25519 시그니처가 아닙니다 date: formats: - default: "%d de %b %Y" + default: "%Y-%b-%d" with_month_name: "%e-a de %B %Y" datetime: distance_in_words: @@ -858,7 +863,7 @@ eo: errors: invalid_context: Neniu aŭ nevalida kunteksto donita index: - contexts: Filtri en %{contexts} + contexts: Filtriloj en %{contexts} delete: Forigi empty: Vi havas neniun filtrilon. expires_in: Eksvalidiĝi en %{distance} @@ -922,7 +927,7 @@ eo: one: 1 uzo other: "%{count} uzoj" max_uses_prompt: Neniu limo - prompt: Krei kaj diskonigi ligilojn al aliaj por doni aliron al ĉi tiu servilo + prompt: Generi kaj kundividi ligilojn kun aliaj personoj por doni aliron al ĉi tiu servilo table: expires_at: Eksvalidiĝas je uses: Uzoj @@ -994,9 +999,9 @@ eo: subject: "%{name} menciis vin" title: Nova mencio reblog: - body: "%{name} diskonigis vian mesaĝon:" - subject: "%{name} diskonigis vian mesaĝon" - title: Nova diskonigo + body: 'Via mesaĝo estas suprenigita de %{name}:' + subject: "%{name} suprenigis vian mesaĝon" + title: Nova suprenigo status: subject: "%{name} ĵus afiŝita" update: @@ -1076,8 +1081,8 @@ eo: proceed: Konfirmi la stelumon prompt: 'Vi volas aldoni ĉi tiun mesaĝon al viaj preferaĵoj:' reblog: - proceed: Konfirmi la diskonigon - prompt: 'Vi volas diskonigi ĉi tiun mesaĝon:' + proceed: Procedi pri la suprenigo + prompt: 'Vi deziras suprenigi ĉi tiun mesaĝon:' reply: proceed: Konfirmi la respondon prompt: 'Vi volas respondi al ĉi tiu mesaĝo:' @@ -1161,7 +1166,7 @@ eo: video: one: "%{count} video" other: "%{count} videoj" - boosted_from_html: Diskonigita de %{acct_link} + boosted_from_html: Suprenigita de %{acct_link} content_warning: 'Averto de la enhavo: %{warning}' default_language: Same kiel lingvo de la fasado disallowed_hashtags: @@ -1172,7 +1177,7 @@ eo: pin_errors: limit: Vi jam atingis la maksimuman nombron de alpinglitaj mesaĝoj ownership: Mesaĝo de iu alia ne povas esti alpinglita - reblog: Diskonigo ne povas esti alpinglita + reblog: Suprenigo ne povas esti alpinglita poll: total_people: one: "%{count} persono" @@ -1199,7 +1204,7 @@ eo: enabled: Aŭtomate forigi malnovajn postojn exceptions: Esceptoj ignore_favs: Ignori la preferaĵojn - ignore_reblogs: Ignori akcelojn + ignore_reblogs: Ignori la suprenigojn keep_direct: Konservi rektajn mesaĝojn keep_direct_hint: Ne forigos viajn rektajn mesagôjn keep_media: Konservi la mesaĝojn kun aŭdovidaj aldonaĵoj @@ -1216,7 +1221,7 @@ eo: '7889238': 3 monatoj stream_entries: pinned: Alpinglita - reblogged: diskonigita + reblogged: suprenigita sensitive_content: Tikla enhavo tags: does_not_match_previous_name: ne kongruas kun la antaŭa nomo @@ -1233,8 +1238,8 @@ eo: time: "%H:%M" two_factor_authentication: add: Aldoni - disable: Malebligi - disabled_success: Dufaktora aŭtentigo sukcese malebligita + disable: Malaktivigi 2FA-n + disabled_success: Du-faktora aŭtentigo sukcese malaktivigita edit: Redakti enabled: Dufaktora aŭtentigo ebligita enabled_success: Dufaktora aŭtentigo sukcese ebligita diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 7ba46a89c..8faa88f56 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -103,11 +103,17 @@ es-MX: avatar: Foto de perfil by_domain: Dominio change_email: + changed_msg: "¡Email cambiado con éxito!" current_email: Correo electrónico actual label: Cambiar el correo electrónico new_email: Nuevo correo electrónico submit: Cambiar el correo electrónico title: Cambiar el correo electrónico de %{username} + change_role: + changed_msg: "¡Rol cambiado con éxito!" + label: Cambiar rol + no_role: Sin rol + title: Cambiar rol para %{username} confirm: Confirmar confirmed: Confirmado confirming: Confirmando @@ -151,6 +157,7 @@ es-MX: active: Activo all: Todos pending: Pendiente + silenced: Limitado suspended: Suspendidos title: Moderación moderation_notes: Notas de moderación @@ -158,6 +165,7 @@ es-MX: most_recent_ip: IP más reciente no_account_selected: Ninguna cuenta se cambió como ninguna fue seleccionada no_limits_imposed: Sin límites impuestos + no_role_assigned: Ningún rol asignado not_subscribed: No se está suscrito pending: Revisión pendiente perform_full_suspension: Suspender @@ -184,6 +192,7 @@ es-MX: reset: Reiniciar reset_password: Reiniciar contraseña resubscribe: Re-suscribir + role: Rol search: Buscar search_same_email_domain: Otros usuarios con el mismo dominio de correo search_same_ip: Otros usuarios con la misma IP @@ -640,6 +649,67 @@ es-MX: unresolved: No resuelto updated_at: Actualizado view_profile: Ver perfil + roles: + add_new: Añadir rol + assigned_users: + one: "%{count} usuario" + other: "%{count} usuarios" + categories: + administration: Administración + devops: DevOps + invites: Invitaciones + moderation: Moderación + special: Especial + delete: Eliminar + description_html: Con roles de usuario, puede personalizar las funciones y áreas de Mastodon a las que pueden acceder sus usuarios. + edit: Editar rol '%{name}' + everyone: Permisos por defecto + everyone_full_description_html: Este es el rol base que afecta a todos los usuarios, incluso aquellos sin un rol asignado. Todos los otros roles heredan permisos de él. + permissions_count: + one: "%{count} permiso" + other: "%{count} permisos" + privileges: + administrator: Administrador + administrator_description: Los usuarios con este permiso saltarán todos los permisos + delete_user_data: Borrar Datos de Usuario + delete_user_data_description: Permite a los usuarios eliminar los datos de otros usuarios sin demora + invite_users: Invitar usuarios + invite_users_description: Permite a los usuarios invitar a nuevas personas al servidor + manage_announcements: Administrar Anuncios + manage_announcements_description: Permite a los usuarios gestionar anuncios en el servidor + manage_appeals: Administrar Apelaciones + manage_appeals_description: Permite a los usuarios revisar apelaciones contra acciones de moderación + manage_blocks: Administrar Bloqueos + manage_blocks_description: Permite a los usuarios bloquear los proveedores de e-mail y las direcciones IP + manage_custom_emojis: Administrar Emojis Personalizados + manage_custom_emojis_description: Permite a los usuarios gestionar emojis personalizados en el servidor + manage_federation: Administrar Federación + manage_federation_description: Permite a los usuarios bloquear o permitir la federación con otros dominios, y controlar la entregabilidad + manage_invites: Administrar Invitaciones + manage_invites_description: Permite a los usuarios navegar y desactivar los enlaces de invitación + manage_reports: Administrar Informes + manage_reports_description: Permite a los usuarios revisar informes y realizar acciones de moderación basadas en ellos + manage_roles: Administrar Roles + manage_roles_description: Permite a los usuarios administrar y asignar roles por debajo de los suyos + manage_rules: Gestionar Reglas + manage_rules_description: Permite a los usuarios cambiar las reglas del servidor + manage_settings: Administrar Ajustes + manage_settings_description: Permite a los usuarios cambiar la configuración del sitio + manage_taxonomies: Administrar Taxonomías + manage_taxonomies_description: Permite a los usuarios revisar el contenido en tendencia y actualizar la configuración de las etiquetas + manage_user_access: Administrar Acceso de Usuarios + manage_user_access_description: Permite a los usuarios desactivar la autenticación de dos factores de otros usuarios, cambiar su dirección de correo electrónico y restablecer su contraseña + manage_users: Administrar Usuarios + manage_users_description: Permite a los usuarios ver los detalles de otros usuarios y realizar acciones de moderación contra ellos + manage_webhooks: Administrar Webhooks + manage_webhooks_description: Permite a los usuarios configurar webhooks para eventos administrativos + view_audit_log: Ver Registro de Auditoría + view_audit_log_description: Permite a los usuarios ver un historial de acciones administrativas en el servidor + view_dashboard: Ver Panel de Control + view_dashboard_description: Permite a los usuarios acceder al panel de control y varias métricas + view_devops: DevOps + view_devops_description: Permite a los usuarios acceder a los paneles de control Sidekiq y pgHero + title: Roles rules: add_new: Añadir norma delete: Eliminar diff --git a/config/locales/gd.yml b/config/locales/gd.yml index bdbd26199..c98235cff 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -40,6 +40,7 @@ gd: other: post two: phost status_count_before: A dh’fhoillsich + tagline: Lìonra sòisealta sgaoilte terms: Teirmichean na seirbheise unavailable_content: Frithealaichean fo mhaorsainneachd unavailable_content_description: @@ -110,11 +111,17 @@ gd: avatar: Avatar by_domain: Àrainn change_email: + changed_msg: Chaidh am post-d atharrachadh! current_email: Am post-d làithreach label: Atharraich am post-d new_email: Post-d ùr submit: Atharraich am post-d title: Atharraich am post-d airson %{username} + change_role: + changed_msg: Chaidh an dreuchd atharrachadh! + label: Atharraich an dreuchd + no_role: Gun dreuchd + title: Atharraich an dreuchd aig %{username} confirm: Dearbh confirmed: Chaidh a dhearbhachadh confirming: "’Ga dhearbhadh" @@ -158,6 +165,7 @@ gd: active: Gnìomhach all: Na h-uile pending: Ri dhèiligeadh + silenced: Cuingichte suspended: À rèim title: Maorsainneachd moderation_notes: Nòtaichean na maorsainneachd @@ -165,6 +173,7 @@ gd: most_recent_ip: An IP as ùire no_account_selected: Cha deach cunntas sam bith atharrachadh o nach deach gin dhiubh a thaghadh no_limits_imposed: Cha deach crìoch sam bith a sparradh + no_role_assigned: Cha deach dreuchd iomruineadh not_subscribed: Gun fho-sgrìobhadh pending: A’ feitheamh air lèirmheas perform_full_suspension: Cuir à rèim @@ -193,6 +202,7 @@ gd: reset: Ath-shuidhich reset_password: Ath-shuidhich am facal-faire resubscribe: Fo-sgrìobh a-rithist + role: Dreuchd search: Lorg search_same_email_domain: Cleachdaichean eile aig a bheil an aon àrainn puist-d search_same_ip: Cleachdaichean eile aig a bheil an t-aon IP @@ -667,6 +677,71 @@ gd: unresolved: Gun fhuasgladh updated_at: Air ùrachadh view_profile: Seall a’ phròifil + roles: + add_new: Cuir dreuchd ris + assigned_users: + few: "%{count} cleachdaichean" + one: "%{count} chleachdaiche" + other: "%{count} cleachdaiche" + two: "%{count} chleachdaiche" + categories: + administration: Rianachd + devops: DevOps + invites: Cuiridhean + moderation: Maorsainneachd + special: Sònraichte + delete: Sguab às + description_html: Le dreuchdan chleachdaichean, ’s urrainn dhut gnàthachadh dè na gleusan is raointean de Mhastodon as urrainn dha na cleachdaichean agad inntrigeadh. + edit: Deasaich an dreuchd aig “%{name}“ + everyone: Na ceadan bunaiteach + everyone_full_description_html: Seo an dreuchd bhunaiteach a bheir buaidh air gach cleachdaiche, fiù an fheadhainn nach deach dreuchd iomruineadh dhaibh. Gheibh a h-uile dreuch ceadan uaipe mar dhìleab. + permissions_count: + few: "%{count} ceadan" + one: "%{count} chead" + other: "%{count} cead" + two: "%{count} chead" + privileges: + administrator: Rianaire + administrator_description: Chan eil cuingeachadh sam bith air na cleachdaichean aig bheil an cead seo + delete_user_data: Sguab às dàta a’ chleachdaiche + delete_user_data_description: Leigidh seo le cleachdaichean dàta chleachdaichean eile a sguabadh às gun dàil + invite_users: Thoir cuireadh do chleachdaichean + invite_users_description: Leigidh seo le cleachdaichean cuireadh dhan fhrithealaiche a chur gu daoine eile + manage_announcements: Stiùireadh nam brathan-fios + manage_announcements_description: Leigidh seo le cleachdaichean brathan-fios a stiùireadh air an fhrithealaiche + manage_appeals: Stiùireadh ath-thagraidhean + manage_appeals_description: Leigidh seo le cleachdaichean lèirmheas a dhèanamh air ath-thagraidhean an aghaidh gnìomhan mhaor + manage_blocks: Stiùireadh nam bacaidhean + manage_blocks_description: Leigidh seo le cleachdaichean solaraichean puist-d is seòlaidhean IP a bhacadh + manage_custom_emojis: Stiùireadh nan Emojis gnàthaichte + manage_custom_emojis_description: Leigidh seo le cleachdaichean Emojis gnàthaichte a stiùireadh air an fhrithealaiche + manage_federation: Stiùireadh a’ cho-nasgaidh + manage_federation_description: Leigidh seo le cleachdaichean an co-nasgadh le àrainnean eile a bhacadh no a cheadachadh agus stiùireadh dè ghabhas lìbhrigeadh + manage_invites: Stiùireadh nan cuiridhean + manage_invites_description: Leigidh seo le cleachdaichean ceanglaichean cuiridh a rùrachadh ’s a chur à gnìomh + manage_reports: Stiùireadh ghearanan + manage_reports_description: Leigidh seo le cleachdaichean lèirmheas a dhèanamh air gearanan agus gnìomhan maoir a ghabhail ’nan aghaidh + manage_roles: Stiùireadh dhreuchdan + manage_roles_description: Leigidh seo le cleachdaichean dreuchdan a stiùireadh is iomruineadh do dh’ìochdaran + manage_rules: Stiùireadh nan riaghailtean + manage_rules_description: Leigidh seo le cleachdaichean riaghailtean an fhrithealaiche atharrachadh + manage_settings: Stiùireadh nan roghainnean + manage_settings_description: Leigidh seo le cleachdaichean roghainnean na làraich atharrachadh + manage_taxonomies: Stiùireadh thacsonamaidhean + manage_taxonomies_description: Leigidh seo le cleachdaichean lèirmheas a dhèanamh air an t-susbaint a tha a’ treandadh agus roghainnean nan tagaichean hais ùrachadh + manage_user_access: Stiùireadh inntrigeadh chleachdaichean + manage_user_access_description: Leigidh seo le cleachdaichean gun cuir iad à comas dearbhadh dà-cheumnach càich, gun atharraich iad an seòladh puist-d aca is gun ath-shuidhich iad am facal-faire aca + manage_users: Stiùireadh chleachdaichean + manage_users_description: Leigidh seo le cleachdaichean mion-fhiosrachadh càich a shealltainn agus gnìomhan maoir a ghabhail ’nan aghaidh + manage_webhooks: Stiùireadh nan webhooks + manage_webhooks_description: Leigidh seo le cleachdaichean webhooks a shuidheachadh do thachartasan na rianachd + view_audit_log: Coimhead air an loga sgrùdaidh + view_audit_log_description: Leigidh seo le cleachdaichean coimhead air eachdraidh gnìomhan na rianachd air an fhrithealaiche + view_dashboard: Coimhead air an deas-bhòrd + view_dashboard_description: Leigidh seo le cleachdaichean an deas-bhòrd agus meatrachdan inntrigeadh + view_devops: DevOps + view_devops_description: Leigidh seo le cleachdaichean na deas-bhùird aig Sidekiq is pgHero inntrigeadh + title: Dreuchdan rules: add_new: Cuir riaghailt ris delete: Sguab às @@ -870,6 +945,28 @@ gd: edit_preset: Deasaich rabhadh ro-shuidhichte empty: Cha do mhìnich thu ro-sheataichean rabhaidhean fhathast. title: Stiùirich na rabhaidhean ro-shuidhichte + webhooks: + add_new: Cuir puing-dheiridh ris + delete: Sguab às + description_html: Bheir webhook comas do Mhastodon gus brathan fìor-ama a phutadh dhan aplacaid agad fhèin mu na tachartasan a thagh thu ach an adhbharaich an aplacaid agad freagairtean gu fèin-obrachail. + disable: Cuir à comas + disabled: À comas + edit: Deasaich a’ phuing-dheiridh + empty: Cha deach puing-deiridh webhook sam bith a rèiteachadh fhathast. + enable: Cuir an comas + enabled: Gnìomhach + enabled_events: + few: Tha %{count} tachartasan an comas + one: Tha %{count} tachartas an comas + other: Tha %{count} tachartas an comas + two: Tha %{count} thachartas an comas + events: Tachartasan + new: Webhook ùr + rotate_secret: Cuairtich an rùn + secret: Rùn soidhnich + status: Staid + title: Webhooks + webhook: Webhook admin_mailer: new_appeal: actions: @@ -1122,14 +1219,26 @@ gd: public: Loidhnichean-ama poblach thread: Còmhraidhean edit: + add_keyword: Cuir facal-luirg ris + keywords: Faclan-luirg title: Deasaich a’ chriathrag errors: + deprecated_api_multiple_keywords: Cha ghabh na paramadairean seo atharrachadh on aplacaid seo on a bhios iad an sàs air iomadh facal-luirg na criathraige. Cleachd aplacaid nas ùire no an eadar-aghaidh-lìn. invalid_context: Cha deach co-theacs a sholar no tha e mì-dhligheach index: + contexts: Criathradh am broinn %{contexts} delete: Sguab às empty: Chan eil criathrag agad. + expires_in: Falbhaidh an ùine air an ceann %{distance} + expires_on: Falbhaidh an ùine air %{date} + keywords: + few: "%{count} faclan-luirg" + one: "%{count} fhacal-luirg" + other: "%{count} facal-luirg" + two: "%{count} fhacal-luirg" title: Criathragan new: + save: Sàbhail a’ chriathrag ùr title: Cuir criathrag ùr ris footer: developers: Luchd-leasachaidh @@ -1252,6 +1361,8 @@ gd: copy_account_note_text: 'Da cleachdaiche air gluasad o %{acct}, seo na nòtaichean a bh’ agad mu dhèidhinn roimhe:' notification_mailer: admin: + report: + subject: Rinn %{name} gearan sign_up: subject: Chlàraich %{name} digest: @@ -1328,7 +1439,7 @@ gd: polls: errors: already_voted: Chuir thu bhòt sa chunntas-bheachd seo mu thràth - duplicate_options: " – tha nithean dùblaichte ann" + duplicate_options: "– tha nithean dùblaichte ann" duration_too_long: "– tha seo ro fhad air falbh san àm ri teachd" duration_too_short: "– tha seo ro aithghearr" expired: Tha an cunntas-bheachd air a thighinn gu crìoch diff --git a/config/locales/he.yml b/config/locales/he.yml index 74fee81cc..2106423bc 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -200,15 +200,15 @@ he: send: שלח מחדש דוא"ל אימות success: הודעת האימייל נשלחה בהצלחה! reset: איפוס - reset_password: אתחול סיסמא + reset_password: איפוס סיסמה resubscribe: להרשם מחדש role: תפקיד search: חיפוש search_same_email_domain: משתמשים אחרים מאותו דומיין דוא"ל search_same_ip: משתמשים אחרים מאותה כתובת IP security_measures: - only_password: סיסמא בלבד - password_and_2fa: סיסמא ואימות דו-גורמי + only_password: סיסמה בלבד + password_and_2fa: סיסמה ואימות דו-שלבי sensitive: מאולצים לרגישות sensitized: מסומנים כרגישים shared_inbox_url: תיבה משותפת לדואר נכנס @@ -277,7 +277,7 @@ he: reject_user: דחיית משתמש remove_avatar_user: הסרת תמונת פרופיל reopen_report: פתיחת דו"ח מחדש - reset_password_user: איפוס סיסמא + reset_password_user: איפוס סיסמה resolve_report: פתירת דו"ח sensitive_account: חשבון רגיש לכח silence_account: הגבלת חשבון @@ -328,7 +328,7 @@ he: reject_user_html: "%{name} דחו הרשמה מ-%{target}" remove_avatar_user_html: "%{name} הסירו את תמונת הפרופיל של %{target}" reopen_report_html: '%{name} פתח מחדש דו"ח %{target}' - reset_password_user_html: "%{name} איפס/ה סיסמא עבור המשתמש %{target}" + reset_password_user_html: הסיסמה עבור המשתמש %{target} התאפסה על־ידי %{name} resolve_report_html: '%{name} פתר/ה דו"ח %{target}' sensitive_account_html: "%{name} סימן/ה את המדיה של %{target} כרגיש" silence_account_html: "%{name} הגביל/ה את חשבונו של %{target}" @@ -1036,7 +1036,7 @@ he: your_token: אסימון הגישה שלך auth: apply_for_account: בקשת הזמנה - change_password: סיסמא + change_password: סיסמה checkbox_agreement_html: אני מסכים/ה לכללי השרת ולתנאי השימוש checkbox_agreement_without_rules_html: אני מסכים/ה לתנאי השימוש delete_account: מחיקת חשבון @@ -1048,7 +1048,7 @@ he: didnt_get_confirmation: לא התקבלו הוראות אימות? dont_have_your_security_key: אין לך מפתח אבטחה? forgot_password: הנשתכחה סיסמתך? - invalid_reset_password_token: אסימון איפוס הסיסמא לא תקין או פג תוקף. נא לבקש אחד חדש. + invalid_reset_password_token: טוקן איפוס הסיסמה אינו תקין או שפג תוקף. נא לבקש אחד חדש. link_to_otp: נא להכניס את קוד האימות הדו-גורמי מהטלפון או את קוד האחזור link_to_webauth: נא להשתמש במכשיר מפתח האבטחה log_in_with: התחבר באמצעות @@ -1063,9 +1063,9 @@ he: register: הרשמה registration_closed: "%{instance} לא מקבל חברים חדשים" resend_confirmation: שלח הוראות אימות בשנית - reset_password: איפוס סיסמא - security: החלפת סיסמא - set_new_password: שינוי סיסמא + reset_password: איפוס סיסמה + security: אבטחה + set_new_password: סיסמה חדשה setup: email_below_hint_html: אם כתובת הדוא"ל להלן לא נכונה, ניתן לשנותה כאן ולקבל דוא"ל אישור חדש. email_settings_hint_html: דוא"ל האישור נשלח ל-%{email}. אם כתובת הדוא"ל הזו לא נכונה, ניתן לשנותה בהגדרות החשבון. @@ -1095,8 +1095,8 @@ he: challenge: confirm: המשך hint_html: "טיפ: לא נבקש את סיסמתך שוב בשעה הקרובה." - invalid_password: סיסמא שגויה - prompt: אשר/י סיסמא להמשך + invalid_password: סיסמה שגויה + prompt: יש לאשר את הסיסמה כדי להמשיך crypto: errors: invalid_key: זהו לא מפתח Ed25519 או Curve25519 קביל @@ -1121,7 +1121,7 @@ he: x_seconds: "%{count} שניות" deletes: challenge_not_passed: המידע שהכנסת לא היה נכון - confirm_password: נא להכניס את הסיסמא הנוכחית כדי לוודא את זהותך + confirm_password: נא להכניס את הסיסמה הנוכחית כדי לאמת את זהותך confirm_username: נא להכניס את שם המשתמש כדאי לאשר את הפעולה proceed: מחיקת חשבון success_msg: חשבונך נמחק בהצלחה @@ -1308,7 +1308,7 @@ he: login_activities: authentication_methods: otp: יישומון אימות דו-שלבי - password: סיסמא + password: סיסמה sign_in_token: קוד אימות בדוא"ל webauthn: מפתחות אבטחה description_html: אם את/ה רואה פעילות שאינך מזהה, אנא שנה/י את סיסמתך והפעל/י אימות דו-גורמי. @@ -1672,6 +1672,87 @@ he: tags: does_not_match_previous_name: לא תואם את השם האחרון terms: + body_html: | +

    מדיניות פרטיות

    +

    איזה מידע אנחנו אוספים ?

    + +
      +
    • מידע חשבון בסיסי: If you register on this server, you may be asked to enter a username, an e-mail address and a password. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly.
    • +
    • Posts, following and other public information: The list of people you follow is listed publicly, the same is true for your followers. When you submit a message, the date and time is stored as well as the application you submitted the message from. Messages may contain media attachments, such as pictures and videos. Public and unlisted posts are available publicly. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public.
    • +
    • Direct and followers-only posts: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. Please keep in mind that the operators of the server and any receiving server may view such messages, and that recipients may screenshot, copy or otherwise re-share them. Do not share any sensitive information over Mastodon.
    • +
    • IPs and other metadata: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server.
    • +
    + +
    + +

    What do we use your information for?

    + +

    Any of the information we collect from you may be used in the following ways:

    + +
      +
    • To provide the core functionality of Mastodon. You can only interact with other people's content and post your own content when you are logged in. For example, you may follow other people to view their combined posts in your own personalized home timeline.
    • +
    • To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations.
    • +
    • The email address you provide may be used to send you information, notifications about other people interacting with your content or sending you messages, and to respond to inquiries, and/or other requests or questions.
    • +
    + +
    + +

    How do we protect your information?

    + +

    We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL, and your password is hashed using a strong one-way algorithm. You may enable two-factor authentication to further secure access to your account.

    + +
    + +

    What is our data retention policy?

    + +

    We will make a good faith effort to:

    + +
      +
    • Retain server logs containing the IP address of all requests to this server, in so far as such logs are kept, no more than 90 days.
    • +
    • Retain the IP addresses associated with registered users no more than 12 months.
    • +
    + +

    You can request and download an archive of your content, including your posts, media attachments, profile picture, and header image.

    + +

    You may irreversibly delete your account at any time.

    + +
    + +

    Do we use cookies?

    + +

    Yes. Cookies are small files that a site or its service provider transfers to your computer's hard drive through your Web browser (if you allow). These cookies enable the site to recognize your browser and, if you have a registered account, associate it with your registered account.

    + +

    We use cookies to understand and save your preferences for future visits.

    + +
    + +

    Do we disclose any information to outside parties?

    + +

    We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety.

    + +

    Your public content may be downloaded by other servers in the network. Your public and followers-only posts are delivered to the servers where your followers reside, and direct messages are delivered to the servers of the recipients, in so far as those followers or recipients reside on a different server than this.

    + +

    When you authorize an application to use your account, depending on the scope of permissions you approve, it may access your public profile information, your following list, your followers, your lists, all your posts, and your favourites. Applications can never access your e-mail address or password.

    + +
    + +

    Site usage by children

    + +

    If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site.

    + +

    If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site.

    + +

    Law requirements can be different if this server is in another jurisdiction.

    + +
    + +

    Changes to our Privacy Policy

    + +

    If we decide to change our privacy policy, we will post those changes on this page.

    + +

    This document is CC-BY-SA. It was last updated May 26, 2022.

    + +

    Originally adapted from the Discourse privacy policy.

    title: תנאי שימוש ומדיניות פרטיות ב-%{instance} themes: contrast: מסטודון (ניגודיות גבוהה) diff --git a/config/locales/ja.yml b/config/locales/ja.yml index e4c7b6d11..5dccf1a43 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -145,6 +145,7 @@ ja: active: アクティブ all: すべて pending: 承認待ち + silenced: 制限 suspended: 停止済み title: モデレーション moderation_notes: モデレーションメモ @@ -152,6 +153,7 @@ ja: most_recent_ip: 直近のIP no_account_selected: 何も選択されていないため、変更されていません no_limits_imposed: 制限なし + no_role_assigned: ロールが割り当てられていません not_subscribed: 購読していない pending: 承認待ち perform_full_suspension: 活動を完全に停止させる @@ -177,6 +179,7 @@ ja: reset: リセット reset_password: パスワード再設定 resubscribe: 再講読 + role: 役割 search: 検索 search_same_email_domain: 同じドメインのメールアドレスを使用しているユーザー search_same_ip: 同じIPのユーザーを検索 @@ -621,7 +624,42 @@ ja: updated_at: 更新日時 view_profile: プロフィールを表示 roles: + add_new: 役割を追加 + assigned_users: + other: "%{count} 人" + categories: + administration: 管理 + devops: 開発者 + invites: 招待 + moderation: モデレーション + delete: 削除 + description_html: "ユーザー ロールを使用すると、ユーザーがアクセスできる Mastodon の機能や領域をカスタマイズできます。" + edit: "'%{name}' の役割を編集" + everyone: デフォルトの権限 + everyone_full_description_html: これは、割り当てられたロールを持っていないものであっても、 すべてのユーザー に影響を与える 基本ロールです。 他のすべてのロールは、そこから権限を継承します。 + permissions_count: + other: "%{count} つの権限" privileges: + administrator: 管理者 + administrator_description: この権限を持つユーザーはすべての権限をバイパスします + delete_user_data: ユーザーデータの削除 + delete_user_data_description: ユーザーは、遅滞なく他のユーザーのデータを削除することができます + invite_users: ユーザーを招待 + invite_users_description: ユーザーがサーバーに新しい人を招待できるようにします + manage_announcements: お知らせの管理 + manage_announcements_description: ユーザーがサーバー上のアナウンスを管理できるようにします + manage_appeals: 抗議の管理 + manage_appeals_description: ユーザーはモデレーションアクションに対する抗議を確認できます + manage_blocks: ブロックの管理 + manage_blocks_description: ユーザーが電子メールプロバイダとIPアドレスをブロックできるようにします + manage_custom_emojis: カスタム絵文字を管理 + manage_custom_emojis_description: ユーザーがサーバー上のカスタム絵文字を管理できるようにします + manage_federation: 連合の管理 + manage_federation_description: ユーザーが他のドメインとの連合をブロックまたは許可したり、配信を制御したりできます。 + manage_invites: 招待を管理 + manage_reports: レポートの管理 + manage_reports_description: ユーザーがレポートを確認したり、モデレーションアクションを実行したりできます。 + manage_roles: 役職の管理 manage_rules: ルールの管理 manage_rules_description: ユーザーがサーバールールを変更できるようにします manage_settings: 設定の管理 diff --git a/config/locales/ku.yml b/config/locales/ku.yml index ccc70d9c5..b6b663662 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -672,8 +672,19 @@ ku: other: "%{count} mafdayîn" privileges: administrator: Rêvebir + administrator_description: Bikarhênerên xwediyê vê mafdayînan wê her mafdayîn derbas bike + delete_user_data: Daneyên bikarhêner jê bibe + delete_user_data_description: Mafê dide bikarhêneran ku daneyên bikarhênerên din bêyî derengxisitn jê bibin invite_users: Bikarhêneran vexwîne + invite_users_description: Mafê dide bikarhêneran ku mirovên nû vexwîne bo rajekarê + manage_announcements: Reklaman bi rê be bibe + manage_announcements_description: Mafê dide bikarhêneran ku reklaman bi rê ve bibin li ser vê rajekarê + manage_appeals: Îtîrazan bi rê ve bibe + manage_appeals_description: Mafê dide bikarhêneran ku îtîrazan binirxînin li dijî çalakiyên çavdêriyê + manage_blocks: Astengkirinan bi rê ve bibe + manage_blocks_description: Mafê dide bikarhêneran ku peydakarê e-nameyê û navnîşanên IP asteng bike manage_custom_emojis: Emojiyên kesane bi rêve bibe + manage_custom_emojis_description: Mafê dide bikarhêneran ku îmojî kesane bikin li ser vê rajekarê manage_invites: Vexwendinan bi rêve bibe manage_roles: Rolan bi rêve bibe manage_rules: Rolan bi rêve bibe diff --git a/config/locales/lv.yml b/config/locales/lv.yml index cc7306c09..21da83077 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -1002,9 +1002,9 @@ lv: sensitive_content: Sensitīvs saturs toot_layout: Ziņas izskats application_mailer: - notification_preferences: Mainīt e-pasta preferences + notification_preferences: Mainīt e-pasta uztādījumus salutation: "%{name}," - settings: 'Mainīt e-pasta preferences: %{link}' + settings: 'Mainīt e-pasta uztādījumus: %{link}' view: 'Skatījums:' view_profile: Skatīt profilu view_status: Skatīt ziņu @@ -1692,7 +1692,7 @@ lv:

    Jā. Sīkfaili ir nelieli faili, ko vietne vai tās pakalpojumu sniedzējs pārsūta uz jūsu datora cieto disku, izmantojot jūsu tīmekļa pārlūkprogrammu (ja atļaujat). Šīs sīkdatnes ļauj vietnei atpazīt jūsu pārlūkprogrammu un, ja jums ir reģistrēts konts, saistīt to ar jūsu reģistrēto kontu.

    -

    Mēs izmantojam sīkfailus, lai saprastu un saglabātu jūsu preferences turpmākiem apmeklējumiem.

    +

    Mēs izmantojam sīkfailus, lai saprastu un saglabātu jūsu uztādījumus turpmākiem apmeklējumiem.


    @@ -1808,8 +1808,8 @@ lv: final_step: 'Sāc publicēt! Pat bez sekotājiem tavas publiskās ziņas var redzēt citi, piemēram, vietējā ziņu lentā un atsaucēs. Iespējams, tu vēlēsies iepazīstināt ar sevi, izmantojot tēmturi #introductions.' full_handle: Tavs pilnais rokturis full_handle_hint: Šis ir tas, ko tu pasaki saviem draugiem, lai viņi varētu tev ziņot vai sekot tev no cita servera. - review_preferences_action: Mainīt preferences - review_preferences_step: Noteikti iestati savas preferences, piemēram, kādus e-pasta ziņojumus vēlies saņemt vai kādu konfidencialitātes līmeni vēlies iestatīt savām ziņām pēc noklusējuma. Ja tev nav kustību slimības, vari izvēlēties iespējot GIF automātisko atskaņošanu. + review_preferences_action: Mainīt uztādījumus + review_preferences_step: Noteikti iestati savas uztādījumus, piemēram, kādus e-pasta ziņojumus vēlies saņemt vai kādu konfidencialitātes līmeni vēlies iestatīt savām ziņām pēc noklusējuma. Ja tev nav kustību slimības, vari izvēlēties iespējot GIF automātisko atskaņošanu. subject: Laipni lūgts Mastodon tip_federated_timeline: Apvienotā ziņu lenta ir skats caur ugunsdzēsības šļūteni uz Mastodon tīklu. Bet tajā ir iekļauti tikai tie cilvēki, kurus abonē tavi kaimiņi, tāpēc tas nav pilnīgs. tip_following: Pēc noklusējuma tu seko sava servera administratoram(-iem). Lai atrastu vairāk interesantu cilvēku, pārbaudi vietējās un federālās ziņu lentas. diff --git a/config/locales/nl.yml b/config/locales/nl.yml index caf3370d8..e34092f8f 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -1092,8 +1092,8 @@ nl: other: Je hebt trouwens sinds je weg was er ook %{count} nieuwe volgers bijgekregen! Fantastisch! title: Tijdens jouw afwezigheid... favourite: - body: 'Jouw bericht werd door %{name} aan diens favorieten toegevoegd:' - subject: "%{name} voegde jouw bericht als favoriet toe" + body: 'Jouw bericht werd door %{name} als favoriet gemarkeerd:' + subject: "%{name} markeerde jouw bericht als favoriet" title: Nieuwe favoriet follow: body: "%{name} volgt jou nu!" @@ -1117,6 +1117,8 @@ nl: title: Nieuwe boost status: subject: "%{name} heeft zojuist een bericht geplaatst" + update: + subject: "%{name} bewerkte een bericht" notifications: email_events: E-mailmeldingen voor gebeurtenissen email_events_hint: 'Selecteer gebeurtenissen waarvoor je meldingen wilt ontvangen:' @@ -1190,8 +1192,8 @@ nl: reason_html: " Waarom is deze extra stap nodig? %{instance} is wellicht niet de server waarop jij je geregistreerd hebt. We verwijzen je eerst door naar jouw eigen server." remote_interaction: favourite: - proceed: Doorgaan met toevoegen aan jouw favorieten - prompt: 'Je wilt het volgende bericht aan jouw favorieten toevoegen:' + proceed: Doorgaan met het markeren als favoriet + prompt: 'Je wilt het volgende bericht als favoriet markeren:' reblog: proceed: Doorgaan met boosten prompt: 'Je wilt het volgende bericht boosten:' @@ -1281,6 +1283,7 @@ nl: disallowed_hashtags: one: 'bevatte een niet toegestane hashtag: %{tags}' other: 'bevatte niet toegestane hashtags: %{tags}' + edited_at_html: Bewerkt op %{date} errors: in_reply_not_found: Het bericht waarop je probeert te reageren lijkt niet te bestaan. open_in_web: In de webapp openen diff --git a/config/locales/nn.yml b/config/locales/nn.yml index 14f9b95ad..392b927e1 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -23,13 +23,15 @@ nn: hosted_on: "%{domain} er vert for Mastodon" instance_actor_flash: "Denne brukeren er en virtuell aktør brukt til å representere selve serveren og ingen individuell bruker. Det brukes til foreningsformål og bør ikke blokkeres med mindre du vil blokkere hele instansen, hvor domeneblokkering bør brukes i stedet. \n" learn_more: Lær meir + logout_before_registering: Du er allereie logga inn. privacy_policy: Personvernsreglar - rules: Server regler - rules_html: 'Nedenfor er et sammendrag av reglene du må følge om du vil ha en konto på denne serveren av Mastodon:' + rules: Tenarreglar + rules_html: 'Nedanfor er eit samandrag av reglar du må fylgje dersom du vil ha ein konto på denne Mastodontenaren:' see_whats_happening: Sjå kva som skjer server_stats: 'Tenarstatistikk:' source_code: Kjeldekode status_count_before: Som skreiv + tagline: Desentralisert sosialt nettverk terms: Brukarvilkår unavailable_content: Utilgjengeleg innhald unavailable_content_description: @@ -99,6 +101,10 @@ nn: new_email: Ny e-post submit: Byt e-post title: Byt e-post for %{username} + change_role: + label: Endre rolle + no_role: Inga rolle + title: Endre rolle for %{username} confirm: Stadfest confirmed: Stadfesta confirming: Stadfestar @@ -170,11 +176,12 @@ nn: reset: Attstill reset_password: Attstill passord resubscribe: Ting på nytt + role: Rolle search: Søk search_same_email_domain: Andre brukarar med same e-postdomene search_same_ip: Andre brukarar med same IP security_measures: - only_password: Bare passord + only_password: Kun passord password_and_2fa: Passord og 2FA sensitized: Merket som følsom shared_inbox_url: Delt Innboks URL diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 7cdf1f0c7..90f2db0c4 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -692,6 +692,8 @@ ru: invite_users_description: Позволяет пользователям приглашать новых людей на сервер manage_announcements: Управление объявлениями manage_announcements_description: Позволяет пользователям управлять объявлениями на сервере + view_dashboard: Открыть панель управления + view_devops: DevOps title: Роли rules: add_new: Добавить правило diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index 46472cdcf..4d0cc5118 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -68,6 +68,11 @@ de: with_dns_records: Ein Versuch die DNS-Einträge der Domain aufzulösen wurde unternommen und diese Ergebnisse werden unter anderem auch geblockt featured_tag: name: 'Du möchtest vielleicht einen von diesen benutzen:' + filters: + action: Wählen Sie, welche Aktion ausgeführt werden soll, wenn ein Beitrag dem Filter entspricht + actions: + hide: Den gefilterten Inhalt vollständig ausblenden, als hätte er nie existiert + warn: Den gefilterten Inhalt hinter einer Warnung ausblenden, die den Filtertitel beinhaltet form_challenge: current_password: Du betrittst einen sicheren Bereich imports: @@ -91,6 +96,13 @@ de: name: Du kannst zum Beispiel nur die Groß- und Kleinschreibung der Buchstaben ändern, um es lesbarer zu machen user: chosen_languages: Wenn aktiviert, werden nur Beiträge in den ausgewählten Sprachen auf den öffentlichen Zeitleisten angezeigt + role: Die Rolle kontrolliert welche Berechtigungen ein Benutzer hat + user_role: + color: Die Farbe, die für die Rolle im gesamten UI verwendet wird, als RGB im Hexformat + highlighted: Dies macht die Rolle öffentlich sichtbar + name: Öffentlicher Name der Rolle, wenn die Rolle als Abzeichen angezeigt werden soll + permissions_as_keys: Benutzer mit dieser Rolle haben Zugriff auf... + position: Die höhere Rolle entscheidet über die Konfliktlösung in bestimmten Situationen. Bestimmte Aktionen können nur in Rollen mit geringerer Priorität ausgeführt werden webhook: events: Zu sendende Ereignisse auswählen url: Wo Ereignisse hingesendet werden @@ -181,6 +193,7 @@ de: setting_use_pending_items: Langsamer Modus severity: Schweregrad sign_in_token_attempt: Sicherheitscode + title: Titel type: Art des Imports username: Profilname username_or_email: Profilname oder E-Mail @@ -189,6 +202,10 @@ de: with_dns_records: MX-Einträge und IPs der Domain einbeziehen featured_tag: name: Hashtag + filters: + actions: + hide: Komplett ausblenden + warn: Mit einer Warnung ausblenden interactions: must_be_follower: Benachrichtigungen von Profilen blockieren, die mir nicht folgen must_be_following: Benachrichtigungen von Profilen blockieren, denen ich nicht folge @@ -222,6 +239,14 @@ de: name: Hashtag trendable: Erlaube es diesen Hashtag in den Trends erscheinen zu lassen usable: Beiträge erlauben, diesen Hashtag zu verwenden + user: + role: Rolle + user_role: + color: Abzeichenfarbe + highlighted: Rolle als Abzeichen in Benutzerprofilen anzeigen + name: Name + permissions_as_keys: Berechtigungen + position: Priorität webhook: events: Aktivierte Ereignisse url: Endpunkt-URL diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml index 30ea0f4be..507650674 100644 --- a/config/locales/simple_form.eo.yml +++ b/config/locales/simple_form.eo.yml @@ -39,7 +39,7 @@ eo: fields: Vi povas havi ĝis 4 tabelajn elementojn en via profilo header: Formato PNG, GIF aŭ JPG. Ĝis %{size}. Estos malgrandigita al %{dimensions}px inbox_url: Kopiu la URL de la ĉefpaĝo de la ripetilo, kiun vi volas uzi - irreversible: La filtritaj mesaĝoj malaperos por eterne, eĉ se la filtrilo estas forigita poste + irreversible: La filtritaj mesaĝoj malaperos por eterne, eĉ se la filtrilo poste estas forigita locale: La lingvo de la fasado, de retpoŝtaĵoj, kaj de sciigoj locked: Vi devos aprobi ĉiun peton de sekvado mane password: Uzu almenaŭ 8 signojn diff --git a/config/locales/simple_form.es-MX.yml b/config/locales/simple_form.es-MX.yml index 582295abb..3128209e8 100644 --- a/config/locales/simple_form.es-MX.yml +++ b/config/locales/simple_form.es-MX.yml @@ -102,6 +102,7 @@ es-MX: highlighted: Esto hace que el rol sea públicamente visible name: Nombre público del rol, si el rol se establece para que se muestre como una insignia permissions_as_keys: Los usuarios con este rol tendrán acceso a... + position: Un rol superior decide la resolución de conflictos en ciertas situaciones. Ciertas acciones sólo pueden llevarse a cabo en roles con menor prioridad webhook: events: Seleccionar eventos para enviar url: Donde los eventos serán enviados diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index 678ce7291..8962f0b5d 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -89,6 +89,9 @@ fi: name: Voit muuttaa esimerkiksi kirjaimia paremmin luettavaksi user: chosen_languages: Kun valittu, vain valituilla kielillä julkaistut viestit näkyvät julkisilla aikajanoilla + webhook: + events: Valitse lähetettävät tapahtumat + url: Mihin tapahtumat lähetetään labels: account: fields: @@ -150,6 +153,7 @@ fi: phrase: Avainsana tai lause setting_advanced_layout: Ota käyttöön edistynyt web käyttöliittymä setting_aggregate_reblogs: Ryhmitä boostaukset aikajanalla + setting_always_send_emails: Lähetä aina sähköposti-ilmoituksia setting_auto_play_gif: Toista GIF-animaatiot automaattisesti setting_boost_modal: Kysy vahvistusta ennen buustausta setting_crop_images: Rajaa kuvat avaamattomissa tuuttauksissa 16:9 kuvasuhteeseen @@ -175,6 +179,7 @@ fi: setting_use_pending_items: Hidastila severity: Vakavuus sign_in_token_attempt: Turvakoodi + title: Otsikko type: Tietojen laji username: Käyttäjänimi username_or_email: Käyttäjänimi tai sähköposti @@ -183,6 +188,10 @@ fi: with_dns_records: Sisällytä toimialueen MX tietueet ja IP-osoite featured_tag: name: Aihetunniste + filters: + actions: + hide: Piilota kokonaan + warn: Piilota varoituksella interactions: must_be_follower: Estä ilmoitukset käyttäjiltä, jotka eivät seuraa sinua must_be_following: Estä ilmoitukset käyttäjiltä, joita et seuraa @@ -216,6 +225,17 @@ fi: name: Aihetunniste trendable: Salli tämän aihetunnisteen näkyä trendeissä usable: Salli postauksien käyttää tätä aihetunnistetta + user: + role: Rooli + user_role: + color: Merkin väri + highlighted: Näyttä rooli merkkinä käyttäjäprofiileissa + name: Nimi + permissions_as_keys: Oikeudet + position: Prioriteetti + webhook: + events: Tapahtumat käytössä + url: Päätepisteen URL 'no': Ei recommended: Suositeltu required: diff --git a/config/locales/simple_form.gd.yml b/config/locales/simple_form.gd.yml index 63199e2cd..7165cb243 100644 --- a/config/locales/simple_form.gd.yml +++ b/config/locales/simple_form.gd.yml @@ -68,6 +68,11 @@ gd: with_dns_records: Thèid oidhirp a dhèanamh air fuasgladh clàran DNS na h-àrainne a chaidh a thoirt seachad agus thèid na toraidhean a bhacadh cuideachd featured_tag: name: 'Mholamaid fear dhe na tagaichean seo:' + filters: + action: Tagh na thachras nuair a bhios post a’ maidseadh na criathraige + actions: + hide: Falaich an t-susbaint chriathraichte uile gu lèir mar nach robh i ann idir + warn: Falaich an t-susbaint chriathraichte air cùlaibh rabhaidh a dh’innseas tiotal na criathraige form_challenge: current_password: Tha thu a’ tighinn a-steach gu raon tèarainte imports: @@ -91,6 +96,16 @@ gd: name: Mar eisimpleir, ’s urrainn dhut measgachadh de litrichean mòra ’s beaga a chleachdadh ach an gabh a leughadh nas fhasa user: chosen_languages: Nuair a bhios cromag ris, cha nochd ach postaichean sna cànain a thagh thu air loidhnichean-ama poblach + role: Stiùiridh an dreuchd dè na ceadan a bhios aig cleachdaiche + user_role: + color: An datha a bhios air an dreuchd air feadh na h-eadar-aghaidh, ’na RGB san fhòrmat sia-dheicheach + highlighted: Le seo, chithear an dreuchd gu poblach + name: Ainm poblach na dreuchd ma chaidh a suidheachadh gun nochd i na baidse + permissions_as_keys: Gheibh na cleachdaichean aig a bheil an dreuchd seo inntrigeadh dha… + position: Ma tha còmhstri ann, buannaichidh an dreuchd as àirde ann an cuid a shuidheachaidhean. Tha gnìomhan sònraichte ann nach urrainn ach dreuchdan le prìomhachas ìosail a ghabhail + webhook: + events: Tagh na tachartasan a thèid a chur + url: Far an dèid na tachartasan a chur labels: account: fields: @@ -178,6 +193,7 @@ gd: setting_use_pending_items: Am modh slaodach severity: Donad sign_in_token_attempt: Còd-tèarainteachd + title: Tiotal type: Seòrsa an ion-phortaidh username: Ainm-cleachdaiche username_or_email: Ainm-cleachdaiche no post-d @@ -186,6 +202,10 @@ gd: with_dns_records: Gabh a-steach clàran MX agus IPan na h-àrainne featured_tag: name: Taga hais + filters: + actions: + hide: Falaich uile gu lèir + warn: Falaich le rabhadh interactions: must_be_follower: Bac na brathan nach eil o luchd-leantainn must_be_following: Bac na brathan o dhaoine air nach lean thu @@ -219,6 +239,17 @@ gd: name: Taga hais trendable: Leig leis an taga hais seo gun nochd e am measg nan treandaichean usable: Leig le postaichean an taga hais seo a chleachdadh + user: + role: Dreuchd + user_role: + color: Dathan na baidse + highlighted: Seall an dreuchd ’na baidse air pròifilean nan cleachdaichean + name: Ainm + permissions_as_keys: Ceadan + position: Prìomhachas + webhook: + events: Na tachartas an comas + url: URL na puinge-deiridh 'no': Chan eil recommended: Molta required: diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index 00f8e762c..cd9811f3c 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -211,7 +211,7 @@ nl: notification_emails: appeal: Iemand heeft bezwaar ingediend tegen een beslissing van een moderator digest: Periodiek e-mails met een samenvatting versturen - favourite: Wanneer iemand jouw bericht aan diens favorieten heeft toegevoegd + favourite: Wanneer iemand jouw bericht als favoriet markeert follow: Wanneer iemand jou is gaan volgen follow_request: Wanneer iemand jou wil volgen mention: Wanneer iemand jou heeft vermeld diff --git a/config/locales/simple_form.nn.yml b/config/locales/simple_form.nn.yml index 0e9988654..71734509b 100644 --- a/config/locales/simple_form.nn.yml +++ b/config/locales/simple_form.nn.yml @@ -85,6 +85,10 @@ nn: name: Du kan berre endra bruken av store/små bokstavar, t. d. for å gjera det meir leseleg user: chosen_languages: Når merka vil berre tuta på dei valde språka synast på offentlege tidsliner + role: Rolla kontrollerer kva tilgangar brukaren har + user_role: + highlighted: Dette gjer rolla synleg offentleg + permissions_as_keys: Brukarar med denne rolla vil ha tilgang til... labels: account: fields: @@ -144,6 +148,7 @@ nn: phrase: Nykelord eller frase setting_advanced_layout: Skruv på det avanserte nettgrensesnittet setting_aggregate_reblogs: Gruppeframhevingar på tidsliner + setting_always_send_emails: Alltid send epostvarsel setting_auto_play_gif: Spel av animerte GIF-ar automatisk setting_boost_modal: Vis stadfesting før framheving setting_crop_images: Skjer bilete i ikkje-utvida tut til 16x9 @@ -169,6 +174,7 @@ nn: setting_use_pending_items: Saktemodus severity: Alvorsgrad sign_in_token_attempt: Trygdenykel + title: Tittel type: Importtype username: Brukarnamn username_or_email: Brukarnamn eller E-post @@ -177,6 +183,10 @@ nn: with_dns_records: Ha med MX-recordar og IP-ar til domenet featured_tag: name: Emneknagg + filters: + actions: + hide: Gøym totalt + warn: Gøym med ei advarsel interactions: must_be_follower: Gøym varslingar frå folk som ikkje fylgjer deg must_be_following: Gøym varslingar frå folk du ikkje fylgjer @@ -200,6 +210,7 @@ nn: mention: Send e-post når nokon nemner deg pending_account: Send e-post når ein ny konto treng gjennomgang reblog: Send e-post når nokon framhevar statusen din + report: Ny rapport er sendt rule: text: Regler tag: @@ -207,6 +218,13 @@ nn: name: Emneknagg trendable: Tillat denne emneknaggen til å synast under trendar usable: Gje tut lov til å nytta denne emneknaggen + user: + role: Rolle + user_role: + name: Namn + position: Prioritet + webhook: + url: Endepunkts-URL 'no': Nei recommended: Tilrådt required: diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml index ffe41dd14..b144b29d5 100644 --- a/config/locales/simple_form.ru.yml +++ b/config/locales/simple_form.ru.yml @@ -3,7 +3,7 @@ ru: simple_form: hints: account_alias: - acct: Укажите имя_пользователя@домен учётной записи, с которой вы собираетесь мигрировать + acct: Укажите ник@домен учётной записи, с которой вы собираетесь мигрировать account_migration: acct: Укажите имя_пользователя@домен учётной записи, на которую вы собираетесь мигрировать account_warning_preset: @@ -44,7 +44,7 @@ ru: inbox_url: Копировать URL с главной страницы ретранслятора, который вы хотите использовать irreversible: Отфильтрованные посты будут утеряны навсегда, даже если в будущем фильтр будет убран locale: Язык интерфейса, e-mail писем и push-уведомлений - locked: Подписчиков нужно будет подтверждать вручную. + locked: Вручную контролируйте, кто может подписываться на вас, утверждая запросы на подписку password: Укажите не менее 8 символов. phrase: Будет сопоставлено независимо от присутствия в тексте или предупреждения о содержании поста scopes: Какие API приложению будет позволено использовать. Если вы выберете самый верхний, нижестоящие будут выбраны автоматически. @@ -99,6 +99,8 @@ ru: role: Роль определяет, какие разрешения есть у пользователя user_role: color: Цвет, который будет использоваться для роли в интерфейсе (UI), как RGB в формате HEX + highlighted: Это действие сделает роль публичной + name: Публичное имя роли, если роль настроена на отображение в виде значка permissions_as_keys: Пользователи с этой ролью будут иметь доступ... position: Повышение роли разрешают конфликты интересов в некоторых ситуациях. Некоторые действия могут выполняться только на ролях с более низким приоритетом webhook: @@ -240,6 +242,8 @@ ru: user: role: Роль user_role: + color: Цвет значка + highlighted: Отображать роль в качестве значка в профилях пользователей name: Название permissions_as_keys: Разрешения position: Приоритет diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index b032295ba..2a31ea9c2 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -64,15 +64,15 @@ th: domain_allow: domain: โดเมนนี้จะสามารถดึงข้อมูลจากเซิร์ฟเวอร์นี้และจะประมวลผลและจัดเก็บข้อมูลขาเข้าจากโดเมน email_domain_block: - domain: อาจเป็นชื่อโดเมนที่แสดงในที่อยู่อีเมลหรือทะเบียน MX ที่ใช้อยู่ พวกเขาอาจจะได้รับการตรวจสอบเมื่อมีการสมัคร + domain: สิ่งนี้สามารถเป็นชื่อโดเมนที่ปรากฏในที่อยู่อีเมลหรือระเบียน MX ที่โดเมนใช้ จะตรวจสอบโดเมนเมื่อลงทะเบียน with_dns_records: จะทำการพยายามแปลงที่อยู่ระเบียน DNS ของโดเมนที่กำหนดและจะปิดกั้นผลลัพธ์เช่นกัน featured_tag: name: 'คุณอาจต้องการใช้หนึ่งในนี้:' filters: - action: เลือกการดำเนินการเมื่อโพสต์ตรงกับตัวกรอง + action: เลือกว่าการกระทำใดที่จะทำเมื่อโพสต์ตรงกับตัวกรอง actions: - hide: ซ่อนเนื้อหาที่ถูกกรองโดยสิ้นเชิง ทำตัวราวกับว่าไม่มีอยู่จริง - warn: ซ่อนเนื้อหาที่ถูกกรองไว้ด้านหลังคำเตือนที่กล่าวถึงชื่อตัวกรอง + hide: ซ่อนเนื้อหาที่กรองอยู่อย่างสมบูรณ์ ทำเสมือนว่าไม่มีเนื้อหาอยู่ + warn: ซ่อนเนื้อหาที่กรองอยู่หลังคำเตือนที่กล่าวถึงชื่อเรื่องของตัวกรอง form_challenge: current_password: คุณกำลังเข้าสู่พื้นที่ปลอดภัย imports: @@ -105,7 +105,7 @@ th: position: บทบาทที่สูงขึ้นตัดสินใจการแก้ปัญหาข้อขัดแย้งในบางสถานการณ์ การกระทำบางอย่างสามารถทำได้เฉพาะกับบทบาทที่มีระดับความสำคัญต่ำกว่าเท่านั้น webhook: events: เลือกเหตุการณ์ที่จะส่ง - url: จะส่งเหตุการณ์ไปยัง + url: ที่ซึ่งจะส่งเหตุการณ์ไปยัง labels: account: fields: @@ -205,7 +205,7 @@ th: filters: actions: hide: ซ่อนอย่างสมบูรณ์ - warn: ซ่อนพร้อมคำเตือน + warn: ซ่อนด้วยคำเตือน interactions: must_be_follower: ปิดกั้นการแจ้งเตือนจากผู้ที่ไม่ใช่ผู้ติดตาม must_be_following: ปิดกั้นการแจ้งเตือนจากผู้คนที่คุณไม่ได้ติดตาม diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 5fefb4e09..7b02930c2 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -110,6 +110,11 @@ sk: new_email: Nový email submit: Zmeň email title: Zmeň email pre %{username} + change_role: + changed_msg: Postavenie úspešne zmenené! + label: Zmeň pozíciu + no_role: Žiadna pozícia + title: Zmeň pozíciu pre %{username} confirm: Potvrď confirmed: Potvrdený confirming: Potvrdzujúci @@ -146,6 +151,7 @@ sk: active: Aktívny/a all: Všetko pending: Čakajúci + silenced: Obmedzený suspended: Vylúčený/á title: Moderácia moderation_notes: Moderátorské poznámky @@ -153,6 +159,7 @@ sk: most_recent_ip: Posledná IP adresa no_account_selected: Nedošlo k žiadnému pozmeneniu účtov, keďže žiadne neboli vybrané no_limits_imposed: Nie sú stanovené žiadné obmedzenia + no_role_assigned: Žiadne postavenie nepriradené not_subscribed: Neodoberá pending: Vyžaduje posúdenie perform_full_suspension: Vylúč @@ -171,6 +178,7 @@ sk: reset: Resetuj reset_password: Obnov heslo resubscribe: Znovu odoberaj + role: Postavenie search: Hľadaj search_same_email_domain: Iní užívatelia s tou istou emailovou doménou search_same_ip: Ostatní užívatelia s rovnakou IP adresou @@ -347,7 +355,9 @@ sk: domain: Doména new: create: Pridaj doménu + resolve: Preveď doménu title: Nový email na zablokovanie + resolved_through_html: Prevedená cez %{domain} title: Blokované emailové adresy follow_recommendations: description_html: "Odporúčania na sledovanie pomáhaju novým užívateľom rýchlo nájsť zaujímavý obsah. Ak užívateľ zatiaľ nedostatočne interagoval s ostatnými aby si vyformoval personalizované odporúčania na sledovanie, tak mu budú odporúčané tieto účty. Sú prepočítavané na dennej báze z mixu účtov s nedávnym najvyšším záujmom a najvyšším počtom lokálnych sledujúcich pre daný jazyk." @@ -369,7 +379,11 @@ sk: policies: reject_media: Zamietni médiá suspend: Vylúč + policy: Zásady reason: Verejné odôvodnenie + title: Zásady o obsahu + dashboard: + instance_accounts_dimension: Najsledovanejšie účty delivery: all: Všetko unavailable: Nedostupné @@ -467,6 +481,23 @@ sk: unassign: Odober unresolved: Nevyriešené updated_at: Aktualizované + view_profile: Zobraz profil + roles: + add_new: Pridaj postavenie + assigned_users: + few: "%{count} užívateľov" + many: "%{count} užívateľov" + one: "%{count} užívateľ" + other: "%{count} užívatelia" + categories: + administration: Spravovanie + invites: Pozvánky + edit: Uprav postavenie %{name} + privileges: + administrator: Správca + invite_users: Pozvi užívateľov + manage_roles: Spravuj postavenia + title: Postavenia rules: empty: Žiadne pravidlá servera ešte neboli určené. title: Serverové pravidlá diff --git a/config/locales/th.yml b/config/locales/th.yml index 28ffeb462..ef5e5e38e 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -457,11 +457,11 @@ th: resolve: แปลงที่อยู่โดเมน title: ปิดกั้นโดเมนอีเมลใหม่ no_email_domain_block_selected: ไม่มีการเปลี่ยนแปลงการปิดกั้นโดเมนอีเมลเนื่องจากไม่มีการเลือก - resolved_dns_records_hint_html: ชื่อโดเมนจะแก้ไขเป็นโดเมน MX ต่อไปนี้ ซึ่งแต่ท้ายที่สุดแล้วคุณจะต้องรับผิดชอบในการยอมรับอีเมล การบล็อกโดเมน MX จะบล็อกการลงชื่อสมัครใช้จากที่อยู่อีเมลใดๆ ที่ใช้โดเมน MX เดียวกัน ถึงแม้ว่าชื่อโดเมนที่มองเห็นได้นั้นจะต่างกัน ระวังอย่าบล็อกผู้ให้บริการอีเมลรายใหญ่ + resolved_dns_records_hint_html: ชื่อโดเมนแปลงที่อยู่เป็นโดเมน MX ดังต่อไปนี้ ซึ่งท้ายที่สุดแล้วจะรับผิดชอบสำหรับการยอมรับอีเมล การปิดกั้นโดเมน MX จะปิดกั้นการลงทะเบียนจากที่อยู่อีเมลใด ๆ ซึ่งใช้โดเมน MX เดียวกัน แม้ว่าชื่อโดเมนที่ปรากฏจะแตกต่างกัน ระวังอย่าปิดกั้นผู้ให้บริการอีเมลรายใหญ่ resolved_through_html: แปลงที่อยู่ผ่าน %{domain} title: โดเมนอีเมลที่ปิดกั้นอยู่ follow_recommendations: - description_html: "จะทำตามคำแนะนำช่วยให้ผู้ใช้ใหม่ให้พบเนื้อหาที่น่าสนใจได้อย่างรวดเร็ว เมื่อผู้ใช้ไม่ได้โต้ตอบใดๆกับผู้อื่นมากพอที่จะสร้างคำแนะนำส่วนบุคคลให้กดติดตาม ขอแนะนำให้ใช้บัญชีเหล่านี้แทน พวกเขาจะคำนวณใหม่ทุกๆวันจากบัญชีต่างๆ ที่มีการมีส่วนร่วมล่าสุดและจำนวนผู้ติดตามในพื้นที่สูงสุดสำหรับภาษาที่คุณกำหนดไว้" + description_html: "คำแนะนำการติดตามช่วยให้ผู้ใช้ใหม่ค้นหาเนื้อหาที่น่าสนใจได้อย่างรวดเร็ว เมื่อผู้ใช้ไม่ได้โต้ตอบกับผู้อื่นมากพอที่จะสร้างคำแนะนำการติดตามส่วนบุคคล จะแนะนำบัญชีเหล่านี้แทน จะคำนวณคำแนะนำใหม่เป็นประจำทุกวันจากบัญชีต่าง ๆ ที่มีการมีส่วนร่วมล่าสุดสูงสุดและจำนวนผู้ติดตามในเซิร์ฟเวอร์สูงสุดสำหรับภาษาที่กำหนด" language: สำหรับภาษา status: สถานะ suppress: ระงับคำแนะนำการติดตาม @@ -470,7 +470,14 @@ th: unsuppress: คืนค่าคำแนะนำการติดตาม instances: availability: + description_html: + other: หากการจัดส่งไปยังโดเมนล้มเหลวเป็นเวลา %{count} วันที่แตกต่างกัน โดยไม่สำเร็จ จะไม่ทำการพยายามจัดส่งเพิ่มเติมเว้นแต่จะได้รับการจัดส่ง จาก โดเมน + failure_threshold_reached: ถึงค่าเกณฑ์ความล้มเหลวเมื่อ %{date} + failures_recorded: + other: ความพยายามที่ล้มเหลวเป็นเวลา %{count} วันที่แตกต่างกัน + no_failures_recorded: ไม่มีความล้มเหลวในระเบียน title: ความพร้อมใช้งาน + warning: ความพยายามล่าสุดในการเชื่อมต่อกับเซิร์ฟเวอร์นี้ไม่สำเร็จ back_to_all: ทั้งหมด back_to_limited: จำกัดอยู่ back_to_warning: คำเตือน @@ -505,6 +512,8 @@ th: unavailable: ไม่พร้อมใช้งาน delivery_available: มีการจัดส่ง delivery_error_days: วันที่มีข้อผิดพลาดการจัดส่ง + delivery_error_hint: หากไม่สามารถทำการจัดส่งได้เป็นเวลา %{count} วัน จะทำเครื่องหมายโดเมนว่าจัดส่งไม่ได้โดยอัตโนมัติ + destroyed_msg: ตอนนี้จัดคิวข้อมูลจาก %{domain} สำหรับการลบในเร็ว ๆ นี้แล้ว empty: ไม่พบโดเมน known_accounts: other: "%{count} บัญชีที่รู้จัก" @@ -515,12 +524,14 @@ th: private_comment: ความคิดเห็นส่วนตัว public_comment: ความคิดเห็นสาธารณะ purge: ล้างข้อมูล + purge_description_html: หากคุณเชื่อว่าโดเมนนี้ออฟไลน์อย่างถาวร คุณสามารถลบระเบียนบัญชีและข้อมูลที่เกี่ยวข้องทั้งหมดจากโดเมนนี้จากที่เก็บข้อมูลของคุณ นี่อาจใช้เวลาสักครู่ title: การติดต่อกับภายนอก total_blocked_by_us: ปิดกั้นโดยเรา total_followed_by_them: ติดตามโดยเขา total_followed_by_us: ติดตามโดยเรา total_reported: รายงานเกี่ยวกับเขา total_storage: ไฟล์แนบสื่อ + totals_time_period_hint_html: ยอดรวมที่แสดงด้านล่างรวมข้อมูลสำหรับเวลาทั้งหมด invites: deactivate_all: ปิดใช้งานทั้งหมด filter: @@ -549,6 +560,7 @@ th: relays: add_new: เพิ่มรีเลย์ใหม่ delete: ลบ + description_html: "รีเลย์การติดต่อกับภายนอก เป็นเซิร์ฟเวอร์ตัวกลางที่แลกเปลี่ยนโพสต์สาธารณะจำนวนมากระหว่างเซิร์ฟเวอร์ที่บอกรับและเผยแพร่ไปยังรีเลย์ รีเลย์สามารถช่วยให้เซิร์ฟเวอร์ขนาดเล็กและขนาดกลางค้นพบเนื้อหาจากจักรวาลสหพันธ์ ซึ่งมิฉะนั้นจะต้องให้ผู้ใช้ในเซิร์ฟเวอร์ติดตามผู้คนอื่น ๆ ในเซิร์ฟเวอร์ระยะไกลด้วยตนเอง" disable: ปิดใช้งาน disabled: ปิดใช้งานอยู่ enable: เปิดใช้งาน @@ -558,6 +570,7 @@ th: pending: กำลังรอการอนุมัติของรีเลย์ save_and_enable: บันทึกแล้วเปิดใช้งาน setup: ตั้งค่าการเชื่อมต่อแบบรีเลย์ + signatures_not_enabled: รีเลย์จะทำงานไม่ถูกต้องขณะที่มีการเปิดใช้งานโหมดปลอดภัยหรือโหมดการติดต่อกับภายนอกแบบจำกัด status: สถานะ title: รีเลย์ report_notes: @@ -571,9 +584,12 @@ th: action_log: รายการบันทึกการตรวจสอบ action_taken_by: ใช้การกระทำโดย actions: + delete_description_html: จะลบโพสต์ที่รายงานและจะบันทึกการดำเนินการเพื่อช่วยให้คุณเลื่อนระดับการละเมิดในอนาคตโดยบัญชีเดียวกัน + mark_as_sensitive_description_html: จะทำเครื่องหมายสื่อในโพสต์ที่รายงานว่าละเอียดอ่อนและจะบันทึกการดำเนินการเพื่อช่วยให้คุณเลื่อนระดับการละเมิดในอนาคตโดยบัญชีเดียวกัน other_description_html: ดูตัวเลือกเพิ่มเติมสำหรับการควบคุมพฤติกรรมของบัญชีและปรับแต่งการสื่อสารไปยังบัญชีที่รายงาน resolve_description_html: จะไม่ใช้การกระทำกับบัญชีที่รายงาน ไม่มีการบันทึกการดำเนินการ และจะปิดรายงาน actions_description_html: ตัดสินใจว่าการกระทำใดที่จะใช้เพื่อแก้ปัญหารายงานนี้ หากคุณใช้การกระทำที่เป็นการลงโทษกับบัญชีที่รายงาน จะส่งการแจ้งเตือนอีเมลถึงเขา ยกเว้นเมื่อมีการเลือกหมวดหมู่ สแปม + add_to_report: เพิ่มข้อมูลเพิ่มเติมไปยังรายงาน are_you_sure: คุณแน่ใจหรือไม่? assign_to_self: มอบหมายให้ฉัน assigned: ผู้ควบคุมที่ได้รับมอบหมาย @@ -596,6 +612,7 @@ th: create_and_unresolve: เปิดใหม่โดยมีหมายเหตุ delete: ลบ title: หมายเหตุ + notes_description_html: ดูและฝากหมายเหตุถึงผู้ควบคุมอื่น ๆ และตัวคุณเองในอนาคต quick_actions_description_html: 'ดำเนินการอย่างรวดเร็วหรือเลื่อนลงเพื่อดูเนื้อหาที่รายงาน:' remote_user_placeholder: ผู้ใช้ระยะไกลจาก %{instance} reopen: เปิดรายงานใหม่ @@ -623,6 +640,7 @@ th: moderation: การควบคุม special: พิเศษ delete: ลบ + description_html: ด้วย บทบาทผู้ใช้ คุณสามารถปรับแต่งว่าฟังก์ชันและพื้นที่ใดของ Mastodon ที่ผู้ใช้ของคุณสามารถเข้าถึง edit: แก้ไขบทบาท '%{name}' everyone: สิทธิอนุญาตเริ่มต้น permissions_count: @@ -631,18 +649,32 @@ th: administrator: ผู้ดูแล delete_user_data: ลบข้อมูลผู้ใช้ invite_users: เชิญผู้ใช้ + invite_users_description: อนุญาตให้ผู้ใช้เชิญผู้คนใหม่ไปยังเซิร์ฟเวอร์ manage_announcements: จัดการประกาศ + manage_announcements_description: อนุญาตให้ผู้ใช้จัดการประกาศในเซิร์ฟเวอร์ manage_appeals: จัดการการอุทธรณ์ manage_blocks: จัดการการปิดกั้น + manage_blocks_description: อนุญาตให้ผู้ใช้ปิดกั้นผู้ให้บริการอีเมลและที่อยู่ IP manage_custom_emojis: จัดการอีโมจิที่กำหนดเอง + manage_custom_emojis_description: อนุญาตให้ผู้ใช้จัดการอีโมจิที่กำหนดเองในเซิร์ฟเวอร์ manage_federation: จัดการการติดต่อกับภายนอก + manage_federation_description: อนุญาตให้ผู้ใช้ปิดกั้นหรืออนุญาตการติดต่อกับภายนอกกับโดเมนอื่น ๆ และควบคุมความสามารถในการจัดส่ง manage_invites: จัดการคำเชิญ + manage_invites_description: อนุญาตให้ผู้ใช้เรียกดูและปิดใช้งานลิงก์เชิญ manage_reports: จัดการรายงาน manage_roles: จัดการบทบาท manage_rules: จัดการกฎ + manage_rules_description: อนุญาตให้ผู้ใช้เปลี่ยนกฎของเซิร์ฟเวอร์ manage_settings: จัดการการตั้งค่า + manage_settings_description: อนุญาตให้ผู้ใช้เปลี่ยนการตั้งค่าไซต์ + manage_taxonomies: จัดการอนุกรมวิธาน + manage_taxonomies_description: อนุญาตให้ผู้ใช้ตรวจทานเนื้อหาที่กำลังนิยมและอัปเดตการตั้งค่าแฮชแท็ก manage_user_access: จัดการการเข้าถึงของผู้ใช้ manage_users: จัดการผู้ใช้ + view_audit_log: ดูรายการบันทึกการตรวจสอบ + view_audit_log_description: อนุญาตให้ผู้ใช้ดูประวัติการกระทำการดูแลในเซิร์ฟเวอร์ + view_dashboard: ดูแดชบอร์ด + view_dashboard_description: อนุญาตให้ผู้ใช้เข้าถึงแดชบอร์ดและเมตริกต่าง ๆ view_devops_description: อนุญาตให้ผู้ใช้เข้าถึงแดชบอร์ด Sidekiq และ pgHero title: บทบาท rules: @@ -941,6 +973,7 @@ th: confirming: กำลังรอการยืนยันอีเมลให้เสร็จสมบูรณ์ functional: บัญชีของคุณทำงานได้อย่างเต็มที่ pending: ใบสมัครของคุณกำลังรอดำเนินการตรวจทานโดยพนักงานของเรา นี่อาจใช้เวลาสักครู่ คุณจะได้รับอีเมลหากใบสมัครของคุณได้รับการอนุมัติ + redirecting_to: บัญชีของคุณไม่ได้ใช้งานเนื่องจากบัญชีกำลังเปลี่ยนเส้นทางไปยัง %{acct} ในปัจจุบัน view_strikes: ดูการดำเนินการที่ผ่านมากับบัญชีของคุณ too_fast: ส่งแบบฟอร์มเร็วเกินไป ลองอีกครั้ง trouble_logging_in: มีปัญหาในการเข้าสู่ระบบ? @@ -1008,6 +1041,7 @@ th: strikes: action_taken: การกระทำที่ใช้ appeal: อุทธรณ์ + appeal_approved: อุทธรณ์การดำเนินการนี้สำเร็จและไม่มีผลบังคับอีกต่อไป appeal_rejected: ปฏิเสธการอุทธรณ์แล้ว appeal_submitted_at: ส่งการอุทธรณ์แล้ว appeals: @@ -1119,6 +1153,7 @@ th: overwrite: เขียนทับ overwrite_long: แทนที่ระเบียนปัจจุบันด้วยระเบียนใหม่ preface: คุณสามารถนำเข้าข้อมูลที่คุณได้ส่งออกจากเซิร์ฟเวอร์อื่น เช่น รายการผู้คนที่คุณกำลังติดตามหรือกำลังปิดกั้น + success: อัปโหลดข้อมูลของคุณสำเร็จและจะได้รับการประมวลผลในเวลาที่ครบกำหนด types: blocking: รายการปิดกั้น bookmarks: ที่คั่นหน้า @@ -1170,6 +1205,7 @@ th: cancel_explanation: การยกเลิกการเปลี่ยนเส้นทางจะเปิดใช้งานบัญชีปัจจุบันของคุณใหม่ แต่จะไม่นำผู้ติดตามที่ได้รับการย้ายไปยังบัญชีนั้นกลับมา cancelled_msg: ยกเลิกการเปลี่ยนเส้นทางสำเร็จ errors: + already_moved: เป็นบัญชีเดียวกันกับที่คุณได้ย้ายไปแล้ว missing_also_known_as: ไม่ใช่นามแฝงของบัญชีนี้ move_to_self: ไม่สามารถเป็นบัญชีปัจจุบัน not_found: ไม่พบ @@ -1298,6 +1334,7 @@ th: status: สถานะบัญชี remote_follow: acct: ป้อน username@domain ของคุณที่คุณต้องการกระทำจาก + missing_resource: ไม่พบ URL การเปลี่ยนเส้นทางที่จำเป็นสำหรับบัญชีของคุณ no_account_html: ไม่มีบัญชี? คุณสามารถ ลงทะเบียนที่นี่ proceed: ดำเนินการต่อเพื่อติดตาม prompt: 'คุณกำลังจะติดตาม:' @@ -1318,6 +1355,7 @@ th: content_warning: 'คำเตือนเนื้อหา:' descriptions: account: โพสต์สาธารณะจาก @%{acct} + tag: 'โพสต์สาธารณะที่ได้รับการแท็ก #%{hashtag}' scheduled_statuses: too_soon: วันที่ตามกำหนดการต้องอยู่ในอนาคต sessions: diff --git a/config/locales/vi.yml b/config/locales/vi.yml index b471cc153..743d9b608 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -915,7 +915,7 @@ vi: sensitive: đánh dấu tài khoản của họ là nhạy cảm silence: hạn chế tài khoản của họ suspend: vô hiệu hóa tài khoản của họ - body: "%{target} đã khiếu nại quyết định kiểm duyệt từ %{action_taken_by} vào %{date}, vì %{type}. Họ cho biết:" + body: "%{target} đã khiếu nại quyết định kiểm duyệt bởi %{action_taken_by} vào %{date}, vì %{type}. Họ cho biết:" next_steps: Bạn có thể chấp nhận kháng cáo để hủy bỏ kiểm duyệt, hoặc bỏ qua. subject: "%{username} đang khiếu nại quyết định kiểm duyệt trên %{instance}" new_pending_account: diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 12b371bf3..0bf1833f2 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -692,6 +692,7 @@ zh-CN: view_dashboard: 查看仪表板 view_dashboard_description: 允许用户访问仪表盘和各种指标 view_devops: 开发运维 + view_devops_description: 允许用户访问 Sidekiq 和 pgHero 仪表板 title: 角色 rules: add_new: 添加规则 @@ -893,6 +894,7 @@ zh-CN: description_html: "webhook 使Mastodon能够推送 关于所选事件的实时通知 到您自己的应用程序。 所以您的应用程序可以自动触发反应 。" disable: 禁用 disabled: 已禁用 + edit: 编辑端点 empty: 您尚未配置任何Web 钩子端点。 enable: 启用 enabled: 活跃 From ac27972d9df7309993170de9931b9f76ea244a77 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Aug 2022 07:40:25 +0900 Subject: [PATCH 288/652] Bump postcss from 8.4.14 to 8.4.16 (#18952) Bumps [postcss](https://github.com/postcss/postcss) from 8.4.14 to 8.4.16. - [Release notes](https://github.com/postcss/postcss/releases) - [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/postcss/postcss/compare/8.4.14...8.4.16) --- updated-dependencies: - dependency-name: postcss dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 90f7af384..1d511b79c 100644 --- a/package.json +++ b/package.json @@ -85,7 +85,7 @@ "offline-plugin": "^5.0.7", "path-complete-extname": "^1.0.0", "pg": "^8.5.0", - "postcss": "^8.4.14", + "postcss": "^8.4.16", "postcss-loader": "^3.0.0", "postcss-object-fit-images": "^1.1.2", "promise.prototype.finally": "^3.1.3", diff --git a/yarn.lock b/yarn.lock index 1369a9b32..cfcc1e692 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8796,10 +8796,10 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.27, postcss@^7.0.32: source-map "^0.6.1" supports-color "^6.1.0" -postcss@^8.2.15, postcss@^8.4.14: - version "8.4.14" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" - integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== +postcss@^8.2.15, postcss@^8.4.14, postcss@^8.4.16: + version "8.4.16" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.16.tgz#33a1d675fac39941f5f445db0de4db2b6e01d43c" + integrity sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ== dependencies: nanoid "^3.3.4" picocolors "^1.0.0" From 334acf93796671f28238a3a1e7a73e5bf3f6bcba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Aug 2022 07:41:35 +0900 Subject: [PATCH 289/652] Bump sass from 1.54.0 to 1.54.3 (#18951) Bumps [sass](https://github.com/sass/dart-sass) from 1.54.0 to 1.54.3. - [Release notes](https://github.com/sass/dart-sass/releases) - [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md) - [Commits](https://github.com/sass/dart-sass/compare/1.54.0...1.54.3) --- updated-dependencies: - dependency-name: sass dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 1d511b79c..f88133562 100644 --- a/package.json +++ b/package.json @@ -119,7 +119,7 @@ "requestidlecallback": "^0.3.0", "reselect": "^4.1.6", "rimraf": "^3.0.2", - "sass": "^1.54.0", + "sass": "^1.54.3", "sass-loader": "^10.2.0", "stacktrace-js": "^2.0.2", "stringz": "^2.1.0", diff --git a/yarn.lock b/yarn.lock index cfcc1e692..d29772bb2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9773,10 +9773,10 @@ sass-loader@^10.2.0: schema-utils "^3.0.0" semver "^7.3.2" -sass@^1.54.0: - version "1.54.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.0.tgz#24873673265e2a4fe3d3a997f714971db2fba1f4" - integrity sha512-C4zp79GCXZfK0yoHZg+GxF818/aclhp9F48XBu/+bm9vXEVAYov9iU3FBVRMq3Hx3OA4jfKL+p2K9180mEh0xQ== +sass@^1.54.3: + version "1.54.3" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.3.tgz#37baa2652f7f1fdadb73240ee9a2b9b81fabb5c4" + integrity sha512-fLodey5Qd41Pxp/Tk7Al97sViYwF/TazRc5t6E65O7JOk4XF8pzwIW7CvCxYVOfJFFI/1x5+elDyBIixrp+zrw== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" From 2d6b41fe30dca92fd35d491ae4bf66a9fd5805a7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Aug 2022 07:42:03 +0900 Subject: [PATCH 290/652] Bump @testing-library/jest-dom from 5.16.4 to 5.16.5 (#18947) Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 5.16.4 to 5.16.5. - [Release notes](https://github.com/testing-library/jest-dom/releases) - [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/jest-dom/compare/v5.16.4...v5.16.5) --- updated-dependencies: - dependency-name: "@testing-library/jest-dom" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 32 ++++++++++---------------------- 2 files changed, 11 insertions(+), 23 deletions(-) diff --git a/package.json b/package.json index f88133562..564b8b3f5 100644 --- a/package.json +++ b/package.json @@ -140,7 +140,7 @@ }, "devDependencies": { "@babel/eslint-parser": "^7.18.9", - "@testing-library/jest-dom": "^5.16.4", + "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^12.1.5", "babel-jest": "^28.1.3", "eslint": "^7.32.0", diff --git a/yarn.lock b/yarn.lock index d29772bb2..d2c61b112 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,11 @@ # yarn lockfile v1 +"@adobe/css-tools@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.0.1.tgz#b38b444ad3aa5fedbb15f2f746dcd934226a12dd" + integrity sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g== + "@ampproject/remapping@^2.1.0": version "2.1.2" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" @@ -1638,16 +1643,16 @@ lz-string "^1.4.4" pretty-format "^27.0.2" -"@testing-library/jest-dom@^5.16.4": - version "5.16.4" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.4.tgz#938302d7b8b483963a3ae821f1c0808f872245cd" - integrity sha512-Gy+IoFutbMQcky0k+bqqumXZ1cTGswLsFqmNLzNdSKkU9KGV2u9oXhukCbbJ9/LRPKiqwxEE8VpV/+YZlfkPUA== +"@testing-library/jest-dom@^5.16.5": + version "5.16.5" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz#3912846af19a29b2dbf32a6ae9c31ef52580074e" + integrity sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA== dependencies: + "@adobe/css-tools" "^4.0.1" "@babel/runtime" "^7.9.2" "@types/testing-library__jest-dom" "^5.9.1" aria-query "^5.0.0" chalk "^3.0.0" - css "^3.0.0" css.escape "^1.5.1" dom-accessibility-api "^0.5.6" lodash "^4.17.15" @@ -3759,15 +3764,6 @@ css.escape@^1.5.1: resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= -css@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d" - integrity sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ== - dependencies: - inherits "^2.0.4" - source-map "^0.6.1" - source-map-resolve "^0.6.0" - cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" @@ -10137,14 +10133,6 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-resolve@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2" - integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - source-map-support@0.5.13: version "0.5.13" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" From b794addc4a39e6cde38aa191e4cfc22f5d4ce59f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Aug 2022 07:43:03 +0900 Subject: [PATCH 291/652] Bump json-ld from 3.2.2 to 3.2.3 (#18950) Bumps [json-ld](https://github.com/ruby-rdf/json-ld) from 3.2.2 to 3.2.3. - [Release notes](https://github.com/ruby-rdf/json-ld/releases) - [Commits](https://github.com/ruby-rdf/json-ld/compare/3.2.2...3.2.3) --- updated-dependencies: - dependency-name: json-ld dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 03c0f297b..accf9ebe7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -327,13 +327,13 @@ GEM activesupport (>= 4.2) aes_key_wrap bindata - json-ld (3.2.2) + json-ld (3.2.3) htmlentities (~> 4.3) json-canonicalization (~> 0.3) link_header (~> 0.0, >= 0.0.8) multi_json (~> 1.15) rack (~> 2.2) - rdf (~> 3.2) + rdf (~> 3.2, >= 3.2.9) json-ld-preloaded (3.2.0) json-ld (~> 3.2) rdf (~> 3.2) @@ -527,7 +527,7 @@ GEM thor (~> 1.0) rainbow (3.1.1) rake (13.0.6) - rdf (3.2.8) + rdf (3.2.9) link_header (~> 0.0, >= 0.0.8) rdf-normalize (0.5.0) rdf (~> 3.2) From 1abf2a05849361c7e7c38f1aa8ce6206f8b03a93 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Aug 2022 07:43:22 +0900 Subject: [PATCH 292/652] Bump oj from 3.13.19 to 3.13.20 (#18948) Bumps [oj](https://github.com/ohler55/oj) from 3.13.19 to 3.13.20. - [Release notes](https://github.com/ohler55/oj/releases) - [Changelog](https://github.com/ohler55/oj/blob/develop/CHANGELOG.md) - [Commits](https://github.com/ohler55/oj/compare/v3.13.19...v3.13.20) --- updated-dependencies: - dependency-name: oj dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index accf9ebe7..debce991b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -413,7 +413,7 @@ GEM concurrent-ruby (~> 1.0, >= 1.0.2) sidekiq (>= 3.5) statsd-ruby (~> 1.4, >= 1.4.0) - oj (3.13.19) + oj (3.13.20) omniauth (1.9.1) hashie (>= 3.4.6) rack (>= 1.6.2, < 3) From c384430ba03d3417d05d4cd2991d89a505ab51df Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Aug 2022 07:50:50 +0900 Subject: [PATCH 293/652] Bump capistrano from 3.17.0 to 3.17.1 (#18949) * Bump capistrano from 3.17.0 to 3.17.1 Bumps [capistrano](https://github.com/capistrano/capistrano) from 3.17.0 to 3.17.1. - [Release notes](https://github.com/capistrano/capistrano/releases) - [Commits](https://github.com/capistrano/capistrano/compare/v3.17.0...v3.17.1) --- updated-dependencies: - dependency-name: capistrano dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * 3.17.1 Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Yamagishi Kazutoshi --- Gemfile.lock | 10 +++++----- config/deploy.rb | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index debce991b..b08a7ce2e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -69,7 +69,7 @@ GEM addressable (2.8.0) public_suffix (>= 2.0.2, < 5.0) aes_key_wrap (1.1.0) - airbrussh (1.4.0) + airbrussh (1.4.1) sshkit (>= 1.6.1, != 1.7.0) android_key_attestation (0.3.0) annotate (3.2.0) @@ -129,7 +129,7 @@ GEM bundler (>= 1.2.0, < 3) thor (~> 1.0) byebug (11.1.3) - capistrano (3.17.0) + capistrano (3.17.1) airbrussh (>= 1.0.0) i18n rake (>= 10.0.0) @@ -401,9 +401,9 @@ GEM multi_json (1.15.0) multipart-post (2.1.1) net-ldap (0.17.1) - net-scp (3.0.0) - net-ssh (>= 2.6.5, < 7.0.0) - net-ssh (6.1.0) + net-scp (4.0.0.rc1) + net-ssh (>= 2.6.5, < 8.0.0) + net-ssh (7.0.1) nio4r (2.5.8) nokogiri (1.13.8) mini_portile2 (~> 2.8.0) diff --git a/config/deploy.rb b/config/deploy.rb index 8a2316b57..2bdb11595 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -lock '3.17.0' +lock '3.17.1' set :repo_url, ENV.fetch('REPO', 'https://github.com/mastodon/mastodon.git') set :branch, ENV.fetch('BRANCH', 'master') From 9f61f22a3b93115763aa7b21c19c437698c34cf8 Mon Sep 17 00:00:00 2001 From: Daniel Jakots Date: Sun, 14 Aug 2022 20:47:33 -0400 Subject: [PATCH 294/652] Update node to 16.16.0 (#18790) See https://nodejs.org/en/blog/vulnerability/july-2022-security-releases/ --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 6180e0796..c79618da9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ SHELL ["/bin/bash", "-c"] RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections # Install Node v16 (LTS) -ENV NODE_VER="16.15.1" +ENV NODE_VER="16.16.0" RUN ARCH= && \ dpkgArch="$(dpkg --print-architecture)" && \ case "${dpkgArch##*-}" in \ From 113dd90aa3e8dd930fa343a2dea52e64bf63eb06 Mon Sep 17 00:00:00 2001 From: zunda Date: Sun, 14 Aug 2022 16:39:58 -1000 Subject: [PATCH 295/652] Bump Ruby version from 3.0.3 to 3.0.4 (#18028) https://www.ruby-lang.org/en/news/2022/04/12/ruby-3-0-4-released/ --- .ruby-version | 2 +- Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.ruby-version b/.ruby-version index 75a22a26a..b0f2dcb32 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -3.0.3 +3.0.4 diff --git a/Dockerfile b/Dockerfile index c79618da9..7757bd0e4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -27,7 +27,7 @@ RUN ARCH= && \ mv node-v$NODE_VER-linux-$ARCH /opt/node # Install Ruby 3.0 -ENV RUBY_VER="3.0.3" +ENV RUBY_VER="3.0.4" RUN apt-get update && \ apt-get install -y --no-install-recommends build-essential \ bison libyaml-dev libgdbm-dev libreadline-dev libjemalloc-dev \ From 6aa83b13ba541b948d7d6927728bbdcf63a23950 Mon Sep 17 00:00:00 2001 From: Jeong Arm Date: Tue, 16 Aug 2022 03:32:21 +0900 Subject: [PATCH 296/652] Properly delete remote account's avatar/header when fetch/update (#18973) --- app/services/activitypub/process_account_service.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/services/activitypub/process_account_service.rb b/app/services/activitypub/process_account_service.rb index 4449a5427..34750dba6 100644 --- a/app/services/activitypub/process_account_service.rb +++ b/app/services/activitypub/process_account_service.rb @@ -105,11 +105,13 @@ class ActivityPub::ProcessAccountService < BaseService def set_fetchable_attributes! begin @account.avatar_remote_url = image_url('icon') || '' unless skip_download? + @account.avatar = nil if @account.avatar_remote_url.blank? rescue Mastodon::UnexpectedResponseError, HTTP::TimeoutError, HTTP::ConnectionError, OpenSSL::SSL::SSLError RedownloadAvatarWorker.perform_in(rand(30..600).seconds, @account.id) end begin @account.header_remote_url = image_url('image') || '' unless skip_download? + @account.header = nil if @account.header_remote_url.blank? rescue Mastodon::UnexpectedResponseError, HTTP::TimeoutError, HTTP::ConnectionError, OpenSSL::SSL::SSLError RedownloadHeaderWorker.perform_in(rand(30..600).seconds, @account.id) end From d92ce31c92903c3ce24c3fcadb99af3c1ba1d585 Mon Sep 17 00:00:00 2001 From: Shlee Date: Tue, 16 Aug 2022 04:03:05 +0930 Subject: [PATCH 297/652] Update notifications.js (#18977) --- app/javascript/mastodon/reducers/notifications.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/javascript/mastodon/reducers/notifications.js b/app/javascript/mastodon/reducers/notifications.js index 4b460bc10..4563118ea 100644 --- a/app/javascript/mastodon/reducers/notifications.js +++ b/app/javascript/mastodon/reducers/notifications.js @@ -234,8 +234,6 @@ export default function notifications(state = initialState, action) { case FOLLOW_REQUEST_AUTHORIZE_SUCCESS: case FOLLOW_REQUEST_REJECT_SUCCESS: return filterNotifications(state, [action.id], 'follow_request'); - case ACCOUNT_MUTE_SUCCESS: - return action.relationship.muting_notifications ? filterNotifications(state, [action.relationship.id]) : state; case NOTIFICATIONS_CLEAR: return state.set('items', ImmutableList()).set('pendingItems', ImmutableList()).set('hasMore', false); case TIMELINE_DELETE: From 461239db5d87ac584b07b394f894384853e875af Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 17 Aug 2022 23:06:48 +0200 Subject: [PATCH 298/652] Fix backend compatibility with OpenSSL 3.0 (#18449) * Update webpush to fork with OpenSSL 3 compatibility * Fix tests with OpenSSL 3.0 * Update webauthn gem to latest release and update dependencies --- Gemfile | 4 +- Gemfile.lock | 44 +++++++++++-------- .../webauthn_credential_fabricator.rb | 2 +- 3 files changed, 28 insertions(+), 22 deletions(-) diff --git a/Gemfile b/Gemfile index d21459fcc..cd519111f 100644 --- a/Gemfile +++ b/Gemfile @@ -91,8 +91,8 @@ gem 'tty-prompt', '~> 0.23', require: false gem 'twitter-text', '~> 3.1.0' gem 'tzinfo-data', '~> 1.2022' gem 'webpacker', '~> 5.4' -gem 'webpush', '~> 0.3' -gem 'webauthn', '~> 3.0.0.alpha1' +gem 'webpush', git: 'https://github.com/ClearlyClaire/webpush.git', ref: 'f14a4d52e201128b1b00245d11b6de80d6cfdcd9' +gem 'webauthn', '~> 2.5' gem 'json-ld' gem 'json-ld-preloaded', '~> 3.2' diff --git a/Gemfile.lock b/Gemfile.lock index b08a7ce2e..72c58848e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,3 +1,12 @@ +GIT + remote: https://github.com/ClearlyClaire/webpush.git + revision: f14a4d52e201128b1b00245d11b6de80d6cfdcd9 + ref: f14a4d52e201128b1b00245d11b6de80d6cfdcd9 + specs: + webpush (0.3.8) + hkdf (~> 0.2) + jwt (~> 2.0) + GEM remote: https://rubygems.org/ specs: @@ -79,7 +88,7 @@ GEM attr_encrypted (3.1.0) encryptor (~> 3.0.0) attr_required (1.0.1) - awrence (1.1.1) + awrence (1.2.1) aws-eventstream (1.2.0) aws-partitions (1.587.0) aws-sdk-core (3.130.2) @@ -168,9 +177,9 @@ GEM color_diff (0.1) concurrent-ruby (1.1.10) connection_pool (2.2.5) - cose (1.0.0) + cose (1.2.1) cbor (~> 0.5.9) - openssl-signature_algorithm (~> 0.4.0) + openssl-signature_algorithm (~> 1.0) crack (0.4.5) rexml crass (1.0.6) @@ -338,7 +347,7 @@ GEM json-ld (~> 3.2) rdf (~> 3.2) jsonapi-renderer (0.2.2) - jwt (2.2.2) + jwt (2.4.1) kaminari (1.2.2) activesupport (>= 4.1.0) kaminari-actionview (= 1.2.2) @@ -437,8 +446,9 @@ GEM validate_email validate_url webfinger (>= 1.0.1) - openssl (2.2.0) - openssl-signature_algorithm (0.4.0) + openssl (3.0.0) + openssl-signature_algorithm (1.2.1) + openssl (> 2.0, < 3.1) orm_adapter (0.5.0) ox (2.14.11) parallel (1.22.1) @@ -599,7 +609,6 @@ GEM scenic (1.6.0) activerecord (>= 4.0.0) railties (>= 4.0.0) - securecompare (1.0.0) semantic_range (3.0.0) sidekiq (6.5.3) connection_pool (>= 2.2.2) @@ -655,9 +664,10 @@ GEM climate_control (>= 0.0.3, < 1.0) thor (1.2.1) tilt (2.0.10) - tpm-key_attestation (0.9.0) + tpm-key_attestation (0.11.0) bindata (~> 2.4) - openssl-signature_algorithm (~> 0.4.0) + openssl (> 2.0, < 3.1) + openssl-signature_algorithm (~> 1.0) tty-color (0.6.0) tty-cursor (0.7.1) tty-prompt (0.23.1) @@ -688,16 +698,15 @@ GEM public_suffix warden (1.2.9) rack (>= 2.0.9) - webauthn (3.0.0.alpha1) + webauthn (2.5.2) android_key_attestation (~> 0.3.0) awrence (~> 1.1) bindata (~> 2.4) cbor (~> 0.5.9) - cose (~> 1.0) - openssl (~> 2.0) + cose (~> 1.1) + openssl (>= 2.2, < 3.1) safety_net_attestation (~> 0.4.0) - securecompare (~> 1.0) - tpm-key_attestation (~> 0.9.0) + tpm-key_attestation (~> 0.11.0) webfinger (1.2.0) activesupport httpclient (>= 2.4) @@ -710,9 +719,6 @@ GEM rack-proxy (>= 0.6.1) railties (>= 5.2) semantic_range (>= 2.3.0) - webpush (0.3.8) - hkdf (~> 0.2) - jwt (~> 2.0) websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) @@ -843,8 +849,8 @@ DEPENDENCIES tty-prompt (~> 0.23) twitter-text (~> 3.1.0) tzinfo-data (~> 1.2022) - webauthn (~> 3.0.0.alpha1) + webauthn (~> 2.5) webmock (~> 3.17) webpacker (~> 5.4) - webpush (~> 0.3) + webpush! xorcist (~> 1.1) diff --git a/spec/fabricators/webauthn_credential_fabricator.rb b/spec/fabricators/webauthn_credential_fabricator.rb index 496a7a735..ba59ce967 100644 --- a/spec/fabricators/webauthn_credential_fabricator.rb +++ b/spec/fabricators/webauthn_credential_fabricator.rb @@ -1,7 +1,7 @@ Fabricator(:webauthn_credential) do user_id { Fabricate(:user).id } external_id { Base64.urlsafe_encode64(SecureRandom.random_bytes(16)) } - public_key { OpenSSL::PKey::EC.new("prime256v1").generate_key.public_key } + public_key { OpenSSL::PKey::EC.generate('prime256v1').public_key } nickname 'USB key' sign_count 0 end From 656ac99ef04464b37d152b09f25facb8fd76c190 Mon Sep 17 00:00:00 2001 From: Mashiro Date: Thu, 18 Aug 2022 05:07:12 +0800 Subject: [PATCH 299/652] Fix ambiguous column names in `tootctl search deploy` (#18993) --- app/lib/importer/statuses_index_importer.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/lib/importer/statuses_index_importer.rb b/app/lib/importer/statuses_index_importer.rb index 7c6532560..5b5153d5c 100644 --- a/app/lib/importer/statuses_index_importer.rb +++ b/app/lib/importer/statuses_index_importer.rb @@ -84,6 +84,6 @@ class Importer::StatusesIndexImporter < Importer::BaseImporter end def local_statuses_scope - Status.local.select('id, coalesce(reblog_of_id, id) as status_id') + Status.local.select('"statuses"."id", COALESCE("statuses"."reblog_of_id", "statuses"."id") AS status_id') end end From d415f1116b4d992b7f33b6f0d2dcbf00934f61b1 Mon Sep 17 00:00:00 2001 From: Jeong Arm Date: Thu, 18 Aug 2022 06:07:30 +0900 Subject: [PATCH 300/652] Fix /admin/accounts/ order parameter (#18996) --- app/views/admin/accounts/index.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/admin/accounts/index.html.haml b/app/views/admin/accounts/index.html.haml index 7560fac7a..cb378f0ed 100644 --- a/app/views/admin/accounts/index.html.haml +++ b/app/views/admin/accounts/index.html.haml @@ -21,7 +21,7 @@ .filter-subset.filter-subset--with-select %strong= t 'generic.order_by' .input.select - = select_tag :order, options_for_select([[t('relationships.most_recent'), nil], [t('relationships.last_active'), 'active']], params[:order]) + = select_tag :order, options_for_select([[t('relationships.most_recent'), 'recent'], [t('relationships.last_active'), 'active']], params[:order]) .fields-group - %i(username by_domain display_name email ip).each do |key| From 86b364920491de74128d0fa538f31b225a750154 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 08:52:05 +0900 Subject: [PATCH 301/652] Bump tzinfo-data from 1.2022.1 to 1.2022.3 (#19003) Bumps [tzinfo-data](https://github.com/tzinfo/tzinfo-data) from 1.2022.1 to 1.2022.3. - [Release notes](https://github.com/tzinfo/tzinfo-data/releases) - [Commits](https://github.com/tzinfo/tzinfo-data/compare/v1.2022.1...v1.2022.3) --- updated-dependencies: - dependency-name: tzinfo-data dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 72c58848e..5f76ae58d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -683,7 +683,7 @@ GEM unf (~> 0.1.0) tzinfo (2.0.5) concurrent-ruby (~> 1.0) - tzinfo-data (1.2022.1) + tzinfo-data (1.2022.3) tzinfo (>= 1.0.0) unf (0.1.4) unf_ext From 1cadebfcc7d74a2d4ec23e4a2380bfec174395d8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 08:52:57 +0900 Subject: [PATCH 302/652] Bump stylelint from 14.9.1 to 14.10.0 (#18983) Bumps [stylelint](https://github.com/stylelint/stylelint) from 14.9.1 to 14.10.0. - [Release notes](https://github.com/stylelint/stylelint/releases) - [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md) - [Commits](https://github.com/stylelint/stylelint/compare/14.9.1...14.10.0) --- updated-dependencies: - dependency-name: stylelint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 58 +++++++++++++++------------------------------------- 2 files changed, 17 insertions(+), 43 deletions(-) diff --git a/package.json b/package.json index 564b8b3f5..3557537cd 100644 --- a/package.json +++ b/package.json @@ -155,7 +155,7 @@ "raf": "^3.4.1", "react-intl-translations-manager": "^5.0.3", "react-test-renderer": "^16.14.0", - "stylelint": "^14.9.1", + "stylelint": "^14.10.0", "stylelint-config-standard-scss": "^4.0.0", "webpack-dev-server": "^3.11.3", "yargs": "^17.5.1" diff --git a/yarn.lock b/yarn.lock index d2c61b112..6399f802f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1115,10 +1115,10 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@csstools/selector-specificity@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.0.1.tgz#b6b8d81780b9a9f6459f4bfe9226ac6aefaefe87" - integrity sha512-aG20vknL4/YjQF9BSV7ts4EWm/yrjagAN7OWBNmlbEOUiu0llj4OGrFoOKK3g2vey4/p2omKCoHrWtPxSwV3HA== +"@csstools/selector-specificity@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz#1bfafe4b7ed0f3e4105837e056e0a89b108ebe36" + integrity sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg== "@emotion/babel-plugin@^11.7.1": version "11.9.2" @@ -3279,13 +3279,6 @@ clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" -clone-regexp@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clone-regexp/-/clone-regexp-2.2.0.tgz#7d65e00885cd8796405c35a737e7a86b7429e36f" - integrity sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q== - dependencies: - is-regexp "^2.0.0" - cluster-key-slot@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz#30474b2a981fb12172695833052bc0d01336d10d" @@ -4762,13 +4755,6 @@ execa@^5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" -execall@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/execall/-/execall-2.0.0.tgz#16a06b5fe5099df7d00be5d9c06eecded1663b45" - integrity sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow== - dependencies: - clone-regexp "^2.1.0" - exif-js@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/exif-js/-/exif-js-2.3.0.tgz#9d10819bf571f873813e7640241255ab9ce1a814" @@ -4909,10 +4895,10 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= -fastest-levenshtein@^1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" - integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== +fastest-levenshtein@^1.0.16: + version "1.0.16" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== fastq@^1.6.0: version "1.13.0" @@ -5237,11 +5223,6 @@ get-package-type@^0.1.0: resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -get-stdin@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" - integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== - get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -6257,11 +6238,6 @@ is-regex@^1.1.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-regexp@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-2.1.0.tgz#cd734a56864e23b956bf4e7c66c396a4c0b22c2d" - integrity sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA== - is-resolvable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" @@ -8792,7 +8768,7 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.27, postcss@^7.0.32: source-map "^0.6.1" supports-color "^6.1.0" -postcss@^8.2.15, postcss@^8.4.14, postcss@^8.4.16: +postcss@^8.2.15, postcss@^8.4.16: version "8.4.16" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.16.tgz#33a1d675fac39941f5f445db0de4db2b6e01d43c" integrity sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ== @@ -10538,22 +10514,20 @@ stylelint-scss@^4.0.0: postcss-selector-parser "^6.0.6" postcss-value-parser "^4.1.0" -stylelint@^14.9.1: - version "14.9.1" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.9.1.tgz#6494ed38f148b1e75b402d678a3b6a8aae86dfda" - integrity sha512-RdAkJdPiLqHawCSnu21nE27MjNXaVd4WcOHA4vK5GtIGjScfhNnaOuWR2wWdfKFAvcWQPOYe311iveiVKSmwsA== +stylelint@^14.10.0: + version "14.10.0" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.10.0.tgz#c588f5cd47cd214cf1acee5bc165961b6a3ad836" + integrity sha512-VAmyKrEK+wNFh9R8mNqoxEFzaa4gsHGhcT4xgkQDuOA5cjF6CaNS8loYV7gpi4tIZBPUyXesotPXzJAMN8VLOQ== dependencies: - "@csstools/selector-specificity" "^2.0.1" + "@csstools/selector-specificity" "^2.0.2" balanced-match "^2.0.0" colord "^2.9.2" cosmiconfig "^7.0.1" css-functions-list "^3.1.0" debug "^4.3.4" - execall "^2.0.0" fast-glob "^3.2.11" - fastest-levenshtein "^1.0.12" + fastest-levenshtein "^1.0.16" file-entry-cache "^6.0.1" - get-stdin "^8.0.0" global-modules "^2.0.0" globby "^11.1.0" globjoin "^0.1.4" @@ -10568,7 +10542,7 @@ stylelint@^14.9.1: micromatch "^4.0.5" normalize-path "^3.0.0" picocolors "^1.0.0" - postcss "^8.4.14" + postcss "^8.4.16" postcss-media-query-parser "^0.2.3" postcss-resolve-nested-selector "^0.1.1" postcss-safe-parser "^6.0.0" From da2a5233bea340d3ff17fc3a156d99bd52b4494b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 08:53:14 +0900 Subject: [PATCH 303/652] Bump sass from 1.54.3 to 1.54.4 (#18989) Bumps [sass](https://github.com/sass/dart-sass) from 1.54.3 to 1.54.4. - [Release notes](https://github.com/sass/dart-sass/releases) - [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md) - [Commits](https://github.com/sass/dart-sass/compare/1.54.3...1.54.4) --- updated-dependencies: - dependency-name: sass dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 3557537cd..5054c818c 100644 --- a/package.json +++ b/package.json @@ -119,7 +119,7 @@ "requestidlecallback": "^0.3.0", "reselect": "^4.1.6", "rimraf": "^3.0.2", - "sass": "^1.54.3", + "sass": "^1.54.4", "sass-loader": "^10.2.0", "stacktrace-js": "^2.0.2", "stringz": "^2.1.0", diff --git a/yarn.lock b/yarn.lock index 6399f802f..e916197dc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9745,10 +9745,10 @@ sass-loader@^10.2.0: schema-utils "^3.0.0" semver "^7.3.2" -sass@^1.54.3: - version "1.54.3" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.3.tgz#37baa2652f7f1fdadb73240ee9a2b9b81fabb5c4" - integrity sha512-fLodey5Qd41Pxp/Tk7Al97sViYwF/TazRc5t6E65O7JOk4XF8pzwIW7CvCxYVOfJFFI/1x5+elDyBIixrp+zrw== +sass@^1.54.4: + version "1.54.4" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.4.tgz#803ff2fef5525f1dd01670c3915b4b68b6cba72d" + integrity sha512-3tmF16yvnBwtlPrNBHw/H907j8MlOX8aTBnlNX1yrKx24RKcJGPyLhFUwkoKBKesR3unP93/2z14Ll8NicwQUA== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" From 0a3c0cbff7968ed539ae50a3d803ae760c46f633 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 08:53:28 +0900 Subject: [PATCH 304/652] Bump bullet from 7.0.2 to 7.0.3 (#18984) Bumps [bullet](https://github.com/flyerhzm/bullet) from 7.0.2 to 7.0.3. - [Release notes](https://github.com/flyerhzm/bullet/releases) - [Changelog](https://github.com/flyerhzm/bullet/blob/master/CHANGELOG.md) - [Commits](https://github.com/flyerhzm/bullet/compare/7.0.2...7.0.3) --- updated-dependencies: - dependency-name: bullet dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 5f76ae58d..e71572504 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -131,7 +131,7 @@ GEM concurrent-ruby (~> 1.0, >= 1.0.5) redis (>= 1.0, <= 5.0) builder (3.2.4) - bullet (7.0.2) + bullet (7.0.3) activesupport (>= 3.0.0) uniform_notifier (~> 1.11) bundler-audit (0.9.1) From 96fdbdb0ad8d8b1e61ec0611b333395cf6855834 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 08:53:37 +0900 Subject: [PATCH 305/652] Bump webmock from 3.17.0 to 3.17.1 (#18988) Bumps [webmock](https://github.com/bblimke/webmock) from 3.17.0 to 3.17.1. - [Release notes](https://github.com/bblimke/webmock/releases) - [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md) - [Commits](https://github.com/bblimke/webmock/compare/v3.17.0...v3.17.1) --- updated-dependencies: - dependency-name: webmock dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index e71572504..4ac700928 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -710,7 +710,7 @@ GEM webfinger (1.2.0) activesupport httpclient (>= 2.4) - webmock (3.17.0) + webmock (3.17.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) From a220c84181f45b6104e711a931b6a2b72799aace Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 08:54:31 +0900 Subject: [PATCH 306/652] Bump sidekiq from 6.5.3 to 6.5.4 (#18982) Bumps [sidekiq](https://github.com/mperham/sidekiq) from 6.5.3 to 6.5.4. - [Release notes](https://github.com/mperham/sidekiq/releases) - [Changelog](https://github.com/mperham/sidekiq/blob/main/Changes.md) - [Commits](https://github.com/mperham/sidekiq/compare/v6.5.3...v6.5.4) --- updated-dependencies: - dependency-name: sidekiq dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 4ac700928..81a36ccd2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -610,7 +610,7 @@ GEM activerecord (>= 4.0.0) railties (>= 4.0.0) semantic_range (3.0.0) - sidekiq (6.5.3) + sidekiq (6.5.4) connection_pool (>= 2.2.2) rack (~> 2.0) redis (>= 4.5.0) From 71d403230e8cd9978bdd80092f155426ef4614a0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 08:55:18 +0900 Subject: [PATCH 307/652] Bump brakeman from 5.2.3 to 5.3.1 (#18985) Bumps [brakeman](https://github.com/presidentbeef/brakeman) from 5.2.3 to 5.3.1. - [Release notes](https://github.com/presidentbeef/brakeman/releases) - [Changelog](https://github.com/presidentbeef/brakeman/blob/main/CHANGES.md) - [Commits](https://github.com/presidentbeef/brakeman/commits) --- updated-dependencies: - dependency-name: brakeman dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index cd519111f..addf923b4 100644 --- a/Gemfile +++ b/Gemfile @@ -134,7 +134,7 @@ group :development do gem 'memory_profiler' gem 'rubocop', '~> 1.30', require: false gem 'rubocop-rails', '~> 2.15', require: false - gem 'brakeman', '~> 5.2', require: false + gem 'brakeman', '~> 5.3', require: false gem 'bundler-audit', '~> 0.9', require: false gem 'capistrano', '~> 3.17' diff --git a/Gemfile.lock b/Gemfile.lock index 81a36ccd2..c7ff3b65e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -125,7 +125,7 @@ GEM ffi (~> 1.14) bootsnap (1.13.0) msgpack (~> 1.2) - brakeman (5.2.3) + brakeman (5.3.1) browser (4.2.0) brpoplpush-redis_script (0.1.2) concurrent-ruby (~> 1.0, >= 1.0.5) @@ -741,7 +741,7 @@ DEPENDENCIES binding_of_caller (~> 1.0) blurhash (~> 0.1) bootsnap (~> 1.13.0) - brakeman (~> 5.2) + brakeman (~> 5.3) browser bullet (~> 7.0) bundler-audit (~> 0.9) From 5935e61306d546d621ca6a4dd02100659ef4428d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 08:58:16 +0900 Subject: [PATCH 308/652] Bump pry-byebug from 3.9.0 to 3.10.1 (#19002) Bumps [pry-byebug](https://github.com/deivid-rodriguez/pry-byebug) from 3.9.0 to 3.10.1. - [Release notes](https://github.com/deivid-rodriguez/pry-byebug/releases) - [Changelog](https://github.com/deivid-rodriguez/pry-byebug/blob/master/CHANGELOG.md) - [Commits](https://github.com/deivid-rodriguez/pry-byebug/compare/v3.9.0...v3.10.1) --- updated-dependencies: - dependency-name: pry-byebug dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index addf923b4..38a4e6314 100644 --- a/Gemfile +++ b/Gemfile @@ -102,7 +102,7 @@ group :development, :test do gem 'fabrication', '~> 2.30' gem 'fuubar', '~> 2.5' gem 'i18n-tasks', '~> 1.0', require: false - gem 'pry-byebug', '~> 3.9' + gem 'pry-byebug', '~> 3.10' gem 'pry-rails', '~> 0.3' gem 'rspec-rails', '~> 5.1' end diff --git a/Gemfile.lock b/Gemfile.lock index c7ff3b65e..bd6150e53 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -470,12 +470,12 @@ GEM actionmailer (>= 3) premailer (~> 1.7, >= 1.7.9) private_address_check (0.5.0) - pry (0.13.1) + pry (0.14.1) coderay (~> 1.1) method_source (~> 1.0) - pry-byebug (3.9.0) + pry-byebug (3.10.1) byebug (~> 11.0) - pry (~> 0.13.0) + pry (>= 0.13, < 0.15) pry-rails (0.3.9) pry (>= 0.10.4) public_suffix (4.0.7) @@ -809,7 +809,7 @@ DEPENDENCIES posix-spawn premailer-rails private_address_check (~> 0.5) - pry-byebug (~> 3.9) + pry-byebug (~> 3.10) pry-rails (~> 0.3) puma (~> 5.6) pundit (~> 2.2) From a7c280f93a22c1a711ca93b14282efece7fb16d9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 09:06:07 +0900 Subject: [PATCH 309/652] Bump redis-namespace from 1.8.2 to 1.9.0 (#18987) Bumps [redis-namespace](https://github.com/resque/redis-namespace) from 1.8.2 to 1.9.0. - [Release notes](https://github.com/resque/redis-namespace/releases) - [Changelog](https://github.com/resque/redis-namespace/blob/master/CHANGELOG.md) - [Commits](https://github.com/resque/redis-namespace/compare/v1.8.2...v1.9) --- updated-dependencies: - dependency-name: redis-namespace dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index 38a4e6314..5dfaf756b 100644 --- a/Gemfile +++ b/Gemfile @@ -51,7 +51,7 @@ gem 'ed25519', '~> 1.3' gem 'fast_blank', '~> 1.0' gem 'fastimage' gem 'hiredis', '~> 0.6' -gem 'redis-namespace', '~> 1.8' +gem 'redis-namespace', '~> 1.9' gem 'htmlentities', '~> 4.3' gem 'http', '~> 5.1' gem 'http_accept_language', '~> 2.1' diff --git a/Gemfile.lock b/Gemfile.lock index bd6150e53..1ed77ed12 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -542,8 +542,8 @@ GEM rdf-normalize (0.5.0) rdf (~> 3.2) redis (4.5.1) - redis-namespace (1.8.2) - redis (>= 3.0.4) + redis-namespace (1.9.0) + redis (>= 4) regexp_parser (2.5.0) request_store (1.5.1) rack (>= 1.4) @@ -822,7 +822,7 @@ DEPENDENCIES rails-settings-cached (~> 0.6) rdf-normalize (~> 0.5) redis (~> 4.5) - redis-namespace (~> 1.8) + redis-namespace (~> 1.9) rexml (~> 3.2) rqrcode (~> 2.1) rspec-rails (~> 5.1) From 99f6be3b601d643ec31e679d20f0d065f788455e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 09:06:15 +0900 Subject: [PATCH 310/652] Bump pg from 1.4.2 to 1.4.3 (#18986) Bumps [pg](https://github.com/ged/ruby-pg) from 1.4.2 to 1.4.3. - [Release notes](https://github.com/ged/ruby-pg/releases) - [Changelog](https://github.com/ged/ruby-pg/blob/master/History.rdoc) - [Commits](https://github.com/ged/ruby-pg/compare/v1.4.2...v1.4.3) --- updated-dependencies: - dependency-name: pg dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 1ed77ed12..21d3b81ca 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -457,7 +457,7 @@ GEM parslet (2.0.0) pastel (0.8.0) tty-color (~> 0.5) - pg (1.4.2) + pg (1.4.3) pghero (2.8.3) activerecord (>= 5) pkg-config (1.4.9) From 1254fa122fd04e5e3f2fce01649ce6c78a560209 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 09:24:46 +0900 Subject: [PATCH 311/652] Bump cocoon-js-vanilla from 1.2.0 to 1.3.0 (#18991) Bumps cocoon-js-vanilla from 1.2.0 to 1.3.0. --- updated-dependencies: - dependency-name: cocoon-js-vanilla dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 5054c818c..6c7f9f53a 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "babel-plugin-transform-react-remove-prop-types": "^0.4.24", "blurhash": "^1.1.5", "classnames": "^2.3.1", - "cocoon-js-vanilla": "^1.2.0", + "cocoon-js-vanilla": "^1.3.0", "color-blend": "^3.0.1", "compression-webpack-plugin": "^6.1.1", "cross-env": "^7.0.3", diff --git a/yarn.lock b/yarn.lock index e916197dc..d98905b07 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3298,10 +3298,10 @@ coa@^2.0.2: chalk "^2.4.1" q "^1.1.2" -cocoon-js-vanilla@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/cocoon-js-vanilla/-/cocoon-js-vanilla-1.2.0.tgz#595348499d315d3b5828dd77a20974756cf59321" - integrity sha512-qLomIVL0Krfc983WLgaYPPktMjMtBN+F/CV15NPVDc9U9BCe2OL5WyAIYkPrVhDRphoYBmHCdIlZkq+vSBI4xg== +cocoon-js-vanilla@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/cocoon-js-vanilla/-/cocoon-js-vanilla-1.3.0.tgz#1e53663f5d314e5e9b315b63eaf8ae701df113c0" + integrity sha512-rMnbfW6oFhvELUg141vfqZKzsowfLJRxs5FksfmDr1ZBs6LTNVYE63NQyvgRqyYUOK54cKKbI+V83dQKeeRuPg== collect-v8-coverage@^1.0.0: version "1.0.1" From a6dc606d5209c5f61f8c19f5fbe5e33cb74d662a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 09:27:53 +0900 Subject: [PATCH 312/652] Bump webmock from 3.17.0 to 3.18.1 (#19007) Bumps [webmock](https://github.com/bblimke/webmock) from 3.17.0 to 3.18.1. - [Release notes](https://github.com/bblimke/webmock/releases) - [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md) - [Commits](https://github.com/bblimke/webmock/compare/v3.17.0...v3.18.1) --- updated-dependencies: - dependency-name: webmock dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 5dfaf756b..75525b0ac 100644 --- a/Gemfile +++ b/Gemfile @@ -119,7 +119,7 @@ group :test do gem 'rails-controller-testing', '~> 1.0' gem 'rspec-sidekiq', '~> 3.1' gem 'simplecov', '~> 0.21', require: false - gem 'webmock', '~> 3.17' + gem 'webmock', '~> 3.18' gem 'rspec_junit_formatter', '~> 0.5' end diff --git a/Gemfile.lock b/Gemfile.lock index 21d3b81ca..35c2d5114 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -710,7 +710,7 @@ GEM webfinger (1.2.0) activesupport httpclient (>= 2.4) - webmock (3.17.1) + webmock (3.18.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) @@ -850,7 +850,7 @@ DEPENDENCIES twitter-text (~> 3.1.0) tzinfo-data (~> 1.2022) webauthn (~> 2.5) - webmock (~> 3.17) + webmock (~> 3.18) webpacker (~> 5.4) webpush! xorcist (~> 1.1) From 5920d8fe33d5ecb0c7ca20c3b255216bb8de4aa9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 18:53:42 +0900 Subject: [PATCH 313/652] Bump omniauth from 1.9.1 to 1.9.2 (#19006) Bumps [omniauth](https://github.com/omniauth/omniauth) from 1.9.1 to 1.9.2. - [Release notes](https://github.com/omniauth/omniauth/releases) - [Commits](https://github.com/omniauth/omniauth/compare/v1.9.1...v1.9.2) --- updated-dependencies: - dependency-name: omniauth dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 35c2d5114..840fe0a78 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -423,7 +423,7 @@ GEM sidekiq (>= 3.5) statsd-ruby (~> 1.4, >= 1.4.0) oj (3.13.20) - omniauth (1.9.1) + omniauth (1.9.2) hashie (>= 3.4.6) rack (>= 1.6.2, < 3) omniauth-cas (2.0.0) From d83faa1a8902c91a5dbd0bf3d9740e3e19c1d623 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 24 Aug 2022 19:00:37 +0200 Subject: [PATCH 314/652] Add ability to block sign-ups from IP (#19037) --- .../auth/registrations_controller.rb | 6 +- app/models/ip_block.rb | 1 + app/services/app_sign_up_service.rb | 66 +++++++++++++++---- config/locales/simple_form.en.yml | 2 + spec/services/app_sign_up_service_spec.rb | 2 +- 5 files changed, 64 insertions(+), 13 deletions(-) diff --git a/app/controllers/auth/registrations_controller.rb b/app/controllers/auth/registrations_controller.rb index 1c3adbd78..7e86e01ba 100644 --- a/app/controllers/auth/registrations_controller.rb +++ b/app/controllers/auth/registrations_controller.rb @@ -82,7 +82,7 @@ class Auth::RegistrationsController < Devise::RegistrationsController end def check_enabled_registrations - redirect_to root_path if single_user_mode? || omniauth_only? || !allowed_registrations? + redirect_to root_path if single_user_mode? || omniauth_only? || !allowed_registrations? || ip_blocked? end def allowed_registrations? @@ -93,6 +93,10 @@ class Auth::RegistrationsController < Devise::RegistrationsController ENV['OMNIAUTH_ONLY'] == 'true' end + def ip_blocked? + IpBlock.where(severity: :sign_up_block).where('ip >>= ?', request.remote_ip.to_s).exists? + end + def invite_code if params[:user] params[:user][:invite_code] diff --git a/app/models/ip_block.rb b/app/models/ip_block.rb index aedd3ca0d..e1ab59806 100644 --- a/app/models/ip_block.rb +++ b/app/models/ip_block.rb @@ -19,6 +19,7 @@ class IpBlock < ApplicationRecord enum severity: { sign_up_requires_approval: 5000, + sign_up_block: 5500, no_access: 9999, } diff --git a/app/services/app_sign_up_service.rb b/app/services/app_sign_up_service.rb index e00694157..3833327bb 100644 --- a/app/services/app_sign_up_service.rb +++ b/app/services/app_sign_up_service.rb @@ -2,23 +2,67 @@ class AppSignUpService < BaseService def call(app, remote_ip, params) - return unless allowed_registrations? + @app = app + @remote_ip = remote_ip + @params = params - user_params = params.slice(:email, :password, :agreement, :locale) - account_params = params.slice(:username) - invite_request_params = { text: params[:reason] } - user = User.create!(user_params.merge(created_by_application: app, sign_up_ip: remote_ip, password_confirmation: user_params[:password], account_attributes: account_params, invite_request_attributes: invite_request_params)) + raise Mastodon::NotPermittedError unless allowed_registrations? - Doorkeeper::AccessToken.create!(application: app, - resource_owner_id: user.id, - scopes: app.scopes, - expires_in: Doorkeeper.configuration.access_token_expires_in, - use_refresh_token: Doorkeeper.configuration.refresh_token_enabled?) + ApplicationRecord.transaction do + create_user! + create_access_token! + end + + @access_token end private + def create_user! + @user = User.create!( + user_params.merge(created_by_application: @app, sign_up_ip: @remote_ip, password_confirmation: user_params[:password], account_attributes: account_params, invite_request_attributes: invite_request_params) + ) + end + + def create_access_token! + @access_token = Doorkeeper::AccessToken.create!( + application: @app, + resource_owner_id: @user.id, + scopes: @app.scopes, + expires_in: Doorkeeper.configuration.access_token_expires_in, + use_refresh_token: Doorkeeper.configuration.refresh_token_enabled? + ) + end + + def user_params + @params.slice(:email, :password, :agreement, :locale) + end + + def account_params + @params.slice(:username) + end + + def invite_request_params + { text: @params[:reason] } + end + def allowed_registrations? - Setting.registrations_mode != 'none' && !Rails.configuration.x.single_user_mode + registrations_open? && !single_user_mode? && !omniauth_only? && !ip_blocked? + end + + def registrations_open? + Setting.registrations_mode != 'none' + end + + def single_user_mode? + Rails.configuration.x.single_user_mode + end + + def omniauth_only? + ENV['OMNIAUTH_ONLY'] == 'true' + end + + def ip_blocked? + IpBlock.where(severity: :sign_up_block).where('ip >>= ?', @remote_ip.to_s).exists? end end diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index c17a62cbe..28f78d500 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -85,6 +85,7 @@ en: ip: Enter an IPv4 or IPv6 address. You can block entire ranges using the CIDR syntax. Be careful not to lock yourself out! severities: no_access: Block access to all resources + sign_up_block: New sign-ups will not be possible sign_up_requires_approval: New sign-ups will require your approval severity: Choose what will happen with requests from this IP rule: @@ -219,6 +220,7 @@ en: ip: IP severities: no_access: Block access + sign_up_block: Block sign-ups sign_up_requires_approval: Limit sign-ups severity: Rule notification_emails: diff --git a/spec/services/app_sign_up_service_spec.rb b/spec/services/app_sign_up_service_spec.rb index e0c83b704..8ec4d4a7a 100644 --- a/spec/services/app_sign_up_service_spec.rb +++ b/spec/services/app_sign_up_service_spec.rb @@ -11,7 +11,7 @@ RSpec.describe AppSignUpService, type: :service do it 'returns nil when registrations are closed' do tmp = Setting.registrations_mode Setting.registrations_mode = 'none' - expect(subject.call(app, remote_ip, good_params)).to be_nil + expect { subject.call(app, remote_ip, good_params) }.to raise_error Mastodon::NotPermittedError Setting.registrations_mode = tmp end From 0412a4d03e3e075b8b4090774ebe5db4f95412de Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 24 Aug 2022 19:00:55 +0200 Subject: [PATCH 315/652] Change e-mail domain blocks to match subdomains of blocked domains (#18979) --- app/models/email_domain_block.rb | 66 ++++++++++++++++++-------- spec/models/email_domain_block_spec.rb | 27 ++++++++--- 2 files changed, 65 insertions(+), 28 deletions(-) diff --git a/app/models/email_domain_block.rb b/app/models/email_domain_block.rb index 0e1e663c1..f9d74332b 100644 --- a/app/models/email_domain_block.rb +++ b/app/models/email_domain_block.rb @@ -30,32 +30,56 @@ class EmailDomainBlock < ApplicationRecord @history ||= Trends::History.new('email_domain_blocks', id) end - def self.block?(domain_or_domains, attempt_ip: nil) - domains = Array(domain_or_domains).map do |str| - domain = begin - if str.include?('@') - str.split('@', 2).last - else - str - end + class Matcher + def initialize(domain_or_domains, attempt_ip: nil) + @uris = extract_uris(domain_or_domains) + @attempt_ip = attempt_ip + end + + def match? + blocking? || invalid_uri? + end + + private + + def invalid_uri? + @uris.any?(&:nil?) + end + + def blocking? + blocks = EmailDomainBlock.where(domain: domains_with_variants).order(Arel.sql('char_length(domain) desc')) + blocks.each { |block| block.history.add(@attempt_ip) } if @attempt_ip.present? + blocks.any? + end + + def domains_with_variants + @uris.flat_map do |uri| + next if uri.nil? + + segments = uri.normalized_host.split('.') + + segments.map.with_index { |_, i| segments[i..-1].join('.') } end - - TagManager.instance.normalize_domain(domain) if domain.present? - rescue Addressable::URI::InvalidURIError - nil end - # If some of the inputs passed in are invalid, we definitely want to - # block the attempt, but we also want to register hits against any - # other valid matches + def extract_uris(domain_or_domains) + Array(domain_or_domains).map do |str| + domain = begin + if str.include?('@') + str.split('@', 2).last + else + str + end + end - blocked = domains.any?(&:nil?) - - where(domain: domains).find_each do |block| - blocked = true - block.history.add(attempt_ip) if attempt_ip.present? + Addressable::URI.new.tap { |u| u.host = domain.strip } if domain.present? + rescue Addressable::URI::InvalidURIError, IDN::Idna::IdnaError + nil + end end + end - blocked + def self.block?(domain_or_domains, attempt_ip: nil) + Matcher.new(domain_or_domains, attempt_ip: attempt_ip).match? end end diff --git a/spec/models/email_domain_block_spec.rb b/spec/models/email_domain_block_spec.rb index 567a32c32..e23116888 100644 --- a/spec/models/email_domain_block_spec.rb +++ b/spec/models/email_domain_block_spec.rb @@ -12,16 +12,29 @@ RSpec.describe EmailDomainBlock, type: :model do let(:input) { nil } context 'given an e-mail address' do - let(:input) { 'nyarn@example.com' } + let(:input) { "foo@#{domain}" } - it 'returns true if the domain is blocked' do - Fabricate(:email_domain_block, domain: 'example.com') - expect(EmailDomainBlock.block?(input)).to be true + context do + let(:domain) { 'example.com' } + + it 'returns true if the domain is blocked' do + Fabricate(:email_domain_block, domain: 'example.com') + expect(EmailDomainBlock.block?(input)).to be true + end + + it 'returns false if the domain is not blocked' do + Fabricate(:email_domain_block, domain: 'other-example.com') + expect(EmailDomainBlock.block?(input)).to be false + end end - it 'returns false if the domain is not blocked' do - Fabricate(:email_domain_block, domain: 'other-example.com') - expect(EmailDomainBlock.block?(input)).to be false + context do + let(:domain) { 'mail.example.com' } + + it 'returns true if it is a subdomain of a blocked domain' do + Fabricate(:email_domain_block, domain: 'example.com') + expect(described_class.block?(input)).to be true + end end end From b21aa828039610ef1750eff2291821b95da76896 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Aug 2022 09:54:36 +0900 Subject: [PATCH 316/652] Bump stackprof from 0.2.20 to 0.2.21 (#19027) Bumps [stackprof](https://github.com/tmm1/stackprof) from 0.2.20 to 0.2.21. - [Release notes](https://github.com/tmm1/stackprof/releases) - [Changelog](https://github.com/tmm1/stackprof/blob/master/CHANGELOG.md) - [Commits](https://github.com/tmm1/stackprof/compare/v0.2.20...v0.2.21) --- updated-dependencies: - dependency-name: stackprof dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 840fe0a78..266ddda1a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -648,7 +648,7 @@ GEM sshkit (1.21.2) net-scp (>= 1.1.2) net-ssh (>= 2.8.0) - stackprof (0.2.20) + stackprof (0.2.21) statsd-ruby (1.5.0) stoplight (3.0.0) strong_migrations (0.7.9) From ca5536167105e2bb690233d53cdfb05f4b0c33db Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Aug 2022 09:55:01 +0900 Subject: [PATCH 317/652] Bump @babel/core from 7.18.10 to 7.18.13 (#19032) Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.18.10 to 7.18.13. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.18.13/packages/babel-core) --- updated-dependencies: - dependency-name: "@babel/core" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 56 ++++++++++++++++++++++++++-------------------------- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/package.json b/package.json index 6c7f9f53a..f116add2e 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ }, "private": true, "dependencies": { - "@babel/core": "^7.18.10", + "@babel/core": "^7.18.13", "@babel/plugin-proposal-decorators": "^7.18.10", "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.18.10", diff --git a/yarn.lock b/yarn.lock index d98905b07..a9b1cd757 100644 --- a/yarn.lock +++ b/yarn.lock @@ -33,21 +33,21 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d" integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ== -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.10", "@babel/core@^7.7.2": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.10.tgz#39ad504991d77f1f3da91be0b8b949a5bc466fb8" - integrity sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw== +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.13", "@babel/core@^7.7.2": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.13.tgz#9be8c44512751b05094a4d3ab05fc53a47ce00ac" + integrity sha512-ZisbOvRRusFktksHSG6pjj1CSvkPkcZq/KHD45LAkVP/oiHJkNBZWfpvlLmX8OtHDG8IuzsFlVRWo08w7Qxn0A== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.10" + "@babel/generator" "^7.18.13" "@babel/helper-compilation-targets" "^7.18.9" "@babel/helper-module-transforms" "^7.18.9" "@babel/helpers" "^7.18.9" - "@babel/parser" "^7.18.10" + "@babel/parser" "^7.18.13" "@babel/template" "^7.18.10" - "@babel/traverse" "^7.18.10" - "@babel/types" "^7.18.10" + "@babel/traverse" "^7.18.13" + "@babel/types" "^7.18.13" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -63,12 +63,12 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.0" -"@babel/generator@^7.18.10", "@babel/generator@^7.7.2": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.10.tgz#794f328bfabdcbaf0ebf9bf91b5b57b61fa77a2a" - integrity sha512-0+sW7e3HjQbiHbj1NeU/vN8ornohYlacAfZIaXhdoGweQqgcNy69COVciYYqEXJ/v+9OBA7Frxm4CVAuNqKeNA== +"@babel/generator@^7.18.13", "@babel/generator@^7.7.2": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.13.tgz#59550cbb9ae79b8def15587bdfbaa388c4abf212" + integrity sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ== dependencies: - "@babel/types" "^7.18.10" + "@babel/types" "^7.18.13" "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" @@ -337,10 +337,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.10.tgz#94b5f8522356e69e8277276adf67ed280c90ecc1" - integrity sha512-TYk3OA0HKL6qNryUayb5UUEhM/rkOQozIBEA5ITXh5DWrSp0TlUQXMyZmnWxG/DizSWBeeQ0Zbc5z8UGaaqoeg== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.18.13": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.13.tgz#5b2dd21cae4a2c5145f1fbd8ca103f9313d3b7e4" + integrity sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" @@ -1085,26 +1085,26 @@ "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.6", "@babel/traverse@^7.18.9", "@babel/traverse@^7.7.2": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.10.tgz#37ad97d1cb00efa869b91dd5d1950f8a6cf0cb08" - integrity sha512-J7ycxg0/K9XCtLyHf0cz2DqDihonJeIo+z+HEdRe9YuT8TY4A66i+Ab2/xZCEW7Ro60bPCBBfqqboHSamoV3+g== +"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.13", "@babel/traverse@^7.18.6", "@babel/traverse@^7.18.9", "@babel/traverse@^7.7.2": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.13.tgz#5ab59ef51a997b3f10c4587d648b9696b6cb1a68" + integrity sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA== dependencies: "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.10" + "@babel/generator" "^7.18.13" "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-function-name" "^7.18.9" "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.18.10" - "@babel/types" "^7.18.10" + "@babel/parser" "^7.18.13" + "@babel/types" "^7.18.13" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.10.tgz#4908e81b6b339ca7c6b7a555a5fc29446f26dde6" - integrity sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ== +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.18.10", "@babel/types@^7.18.13", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.13.tgz#30aeb9e514f4100f7c1cb6e5ba472b30e48f519a" + integrity sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ== dependencies: "@babel/helper-string-parser" "^7.18.10" "@babel/helper-validator-identifier" "^7.18.6" From 37de05fdde75e32d6801e237545d4b67fd3d600e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Aug 2022 09:55:34 +0900 Subject: [PATCH 318/652] Bump sass from 1.54.4 to 1.54.5 (#19028) Bumps [sass](https://github.com/sass/dart-sass) from 1.54.4 to 1.54.5. - [Release notes](https://github.com/sass/dart-sass/releases) - [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md) - [Commits](https://github.com/sass/dart-sass/compare/1.54.4...1.54.5) --- updated-dependencies: - dependency-name: sass dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index f116add2e..6f6aa7b85 100644 --- a/package.json +++ b/package.json @@ -119,7 +119,7 @@ "requestidlecallback": "^0.3.0", "reselect": "^4.1.6", "rimraf": "^3.0.2", - "sass": "^1.54.4", + "sass": "^1.54.5", "sass-loader": "^10.2.0", "stacktrace-js": "^2.0.2", "stringz": "^2.1.0", diff --git a/yarn.lock b/yarn.lock index a9b1cd757..e78c4741b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9745,10 +9745,10 @@ sass-loader@^10.2.0: schema-utils "^3.0.0" semver "^7.3.2" -sass@^1.54.4: - version "1.54.4" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.4.tgz#803ff2fef5525f1dd01670c3915b4b68b6cba72d" - integrity sha512-3tmF16yvnBwtlPrNBHw/H907j8MlOX8aTBnlNX1yrKx24RKcJGPyLhFUwkoKBKesR3unP93/2z14Ll8NicwQUA== +sass@^1.54.5: + version "1.54.5" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.5.tgz#93708f5560784f6ff2eab8542ade021a4a947b3a" + integrity sha512-p7DTOzxkUPa/63FU0R3KApkRHwcVZYC0PLnLm5iyZACyp15qSi32x7zVUhRdABAATmkALqgGrjCJAcWvobmhHw== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" From 26a1d1ac5f4e582296f813530be68c07cc85033a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Aug 2022 09:56:16 +0900 Subject: [PATCH 319/652] Bump webpack-bundle-analyzer from 4.5.0 to 4.6.1 (#19029) Bumps [webpack-bundle-analyzer](https://github.com/webpack-contrib/webpack-bundle-analyzer) from 4.5.0 to 4.6.1. - [Release notes](https://github.com/webpack-contrib/webpack-bundle-analyzer/releases) - [Changelog](https://github.com/webpack-contrib/webpack-bundle-analyzer/blob/master/CHANGELOG.md) - [Commits](https://github.com/webpack-contrib/webpack-bundle-analyzer/compare/v4.5.0...v4.6.1) --- updated-dependencies: - dependency-name: webpack-bundle-analyzer dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 15 +++++---------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 6f6aa7b85..9ae7573d9 100644 --- a/package.json +++ b/package.json @@ -132,7 +132,7 @@ "uuid": "^8.3.1", "webpack": "^4.46.0", "webpack-assets-manifest": "^4.0.6", - "webpack-bundle-analyzer": "^4.5.0", + "webpack-bundle-analyzer": "^4.6.1", "webpack-cli": "^3.3.12", "webpack-merge": "^5.8.0", "wicg-inert": "^3.1.2", diff --git a/yarn.lock b/yarn.lock index e78c4741b..0703b0a7e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2139,12 +2139,7 @@ acorn@^7.1.1, acorn@^7.4.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.0.4: - version "8.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.3.0.tgz#1193f9b96c4e8232f00b11a9edff81b2c8b98b88" - integrity sha512-tqPKHZ5CaBJw0Xmy0ZZvLs1qTV+BNFSyvn77ASXkpBNfIRk8ev26fKrD9iLGwGA9zedPao52GSHzq8lyZG0NUw== - -acorn@^8.5.0, acorn@^8.7.1: +acorn@^8.0.4, acorn@^8.5.0, acorn@^8.7.1: version "8.7.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== @@ -11343,10 +11338,10 @@ webpack-assets-manifest@^4.0.6: tapable "^1.0" webpack-sources "^1.0" -webpack-bundle-analyzer@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz#1b0eea2947e73528754a6f9af3e91b2b6e0f79d5" - integrity sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ== +webpack-bundle-analyzer@^4.6.1: + version "4.6.1" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.6.1.tgz#bee2ee05f4ba4ed430e4831a319126bb4ed9f5a6" + integrity sha512-oKz9Oz9j3rUciLNfpGFjOb49/jEpXNmWdVH8Ls//zNcnLlQdTGXQQMsBbb/gR7Zl8WNLxVCq+0Hqbx3zv6twBw== dependencies: acorn "^8.0.4" acorn-walk "^8.0.0" From 115b8311c1f3e38fba5eb6bdbd272e8a925aa06c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Aug 2022 09:57:16 +0900 Subject: [PATCH 320/652] Bump sidekiq from 6.5.4 to 6.5.5 (#19030) Bumps [sidekiq](https://github.com/mperham/sidekiq) from 6.5.4 to 6.5.5. - [Release notes](https://github.com/mperham/sidekiq/releases) - [Changelog](https://github.com/mperham/sidekiq/blob/main/Changes.md) - [Commits](https://github.com/mperham/sidekiq/compare/v6.5.4...v6.5.5) --- updated-dependencies: - dependency-name: sidekiq dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 266ddda1a..8306efec2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -610,7 +610,7 @@ GEM activerecord (>= 4.0.0) railties (>= 4.0.0) semantic_range (3.0.0) - sidekiq (6.5.4) + sidekiq (6.5.5) connection_pool (>= 2.2.2) rack (~> 2.0) redis (>= 4.5.0) From d156e9b823e5be9e33de4a5d667b2cd32a94cbe4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Aug 2022 09:58:04 +0900 Subject: [PATCH 321/652] Bump stylelint from 14.10.0 to 14.11.0 (#19034) Bumps [stylelint](https://github.com/stylelint/stylelint) from 14.10.0 to 14.11.0. - [Release notes](https://github.com/stylelint/stylelint/releases) - [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md) - [Commits](https://github.com/stylelint/stylelint/compare/14.10.0...14.11.0) --- updated-dependencies: - dependency-name: stylelint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 28 ++++++++++++++-------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 9ae7573d9..b605fe114 100644 --- a/package.json +++ b/package.json @@ -155,7 +155,7 @@ "raf": "^3.4.1", "react-intl-translations-manager": "^5.0.3", "react-test-renderer": "^16.14.0", - "stylelint": "^14.10.0", + "stylelint": "^14.11.0", "stylelint-config-standard-scss": "^4.0.0", "webpack-dev-server": "^3.11.3", "yargs": "^17.5.1" diff --git a/yarn.lock b/yarn.lock index 0703b0a7e..ef957156d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3361,10 +3361,10 @@ color@^3.0.0: color-convert "^1.9.1" color-string "^1.5.2" -colord@^2.9.2: - version "2.9.2" - resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1" - integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ== +colord@^2.9.3: + version "2.9.3" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" + integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== colorette@^1.2.2: version "1.2.2" @@ -10509,14 +10509,14 @@ stylelint-scss@^4.0.0: postcss-selector-parser "^6.0.6" postcss-value-parser "^4.1.0" -stylelint@^14.10.0: - version "14.10.0" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.10.0.tgz#c588f5cd47cd214cf1acee5bc165961b6a3ad836" - integrity sha512-VAmyKrEK+wNFh9R8mNqoxEFzaa4gsHGhcT4xgkQDuOA5cjF6CaNS8loYV7gpi4tIZBPUyXesotPXzJAMN8VLOQ== +stylelint@^14.11.0: + version "14.11.0" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.11.0.tgz#e2ecb28bbacab05e1fbeb84cbba23883b27499cc" + integrity sha512-OTLjLPxpvGtojEfpESWM8Ir64Z01E89xsisaBMUP/ngOx1+4VG2DPRcUyCCiin9Rd3kPXPsh/uwHd9eqnvhsYA== dependencies: "@csstools/selector-specificity" "^2.0.2" balanced-match "^2.0.0" - colord "^2.9.2" + colord "^2.9.3" cosmiconfig "^7.0.1" css-functions-list "^3.1.0" debug "^4.3.4" @@ -10551,7 +10551,7 @@ stylelint@^14.10.0: svg-tags "^1.0.0" table "^6.8.0" v8-compile-cache "^2.3.0" - write-file-atomic "^4.0.1" + write-file-atomic "^4.0.2" stylis@4.0.13: version "4.0.13" @@ -11614,10 +11614,10 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.1.tgz#9faa33a964c1c85ff6f849b80b42a88c2c537c8f" - integrity sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ== +write-file-atomic@^4.0.1, write-file-atomic@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== dependencies: imurmurhash "^0.1.4" signal-exit "^3.0.7" From 50487db1224851a49ee523bbc013d5f8686a7a55 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 25 Aug 2022 04:27:47 +0200 Subject: [PATCH 322/652] Add ability to filter individual posts (#18945) * Add database table for status-specific filters * Add REST endpoints, entities and attributes * Show status filters in /filters interface * Perform server-side filtering for individual posts filters * Fix filtering on context mismatch * Refactor `toServerSideType` by moving it to its own module * Move loupe and delete icons to their own module * Add ability to filter individual posts from WebUI * Replace keyword list by warnings (expired, context mismatch) * Refactor server-side filtering code * Add tests --- .../api/v1/filters/statuses_controller.rb | 44 ++++ .../filters/statuses_controller.rb | 49 +++++ app/controllers/filters_controller.rb | 2 +- app/javascript/mastodon/actions/filters.js | 93 +++++++++ app/javascript/mastodon/actions/statuses.js | 4 +- app/javascript/mastodon/components/status.js | 1 + .../mastodon/components/status_action_bar.js | 16 +- .../mastodon/containers/status_container.js | 9 +- .../compose/components/language_dropdown.js | 19 +- .../features/filters/added_to_filter.js | 102 ++++++++++ .../features/filters/select_filter.js | 192 ++++++++++++++++++ .../features/ui/components/filter_modal.js | 134 ++++++++++++ .../features/ui/components/modal_root.js | 2 + .../features/ui/util/async-components.js | 4 + app/javascript/mastodon/reducers/filters.js | 11 +- app/javascript/mastodon/selectors/index.js | 19 +- app/javascript/mastodon/utils/filters.js | 16 ++ app/javascript/mastodon/utils/icons.js | 13 ++ .../styles/mastodon/components.scss | 18 ++ app/models/concerns/account_interactions.rb | 10 +- app/models/custom_filter.rb | 28 ++- app/models/custom_filter_status.rb | 37 ++++ app/models/form/status_filter_batch_action.rb | 34 ++++ app/presenters/filter_result_presenter.rb | 2 +- .../status_relationships_presenter.rb | 7 +- .../rest/filter_result_serializer.rb | 5 + app/serializers/rest/filter_serializer.rb | 1 + .../rest/filter_status_serializer.rb | 13 ++ app/views/filters/_filter.html.haml | 9 + app/views/filters/_filter_fields.html.haml | 7 + .../filters/statuses/_status_filter.html.haml | 37 ++++ app/views/filters/statuses/index.html.haml | 38 ++++ config/locales/en.yml | 15 ++ config/routes.rb | 11 +- ...808101323_create_custom_filter_statuses.rb | 12 ++ db/schema.rb | 13 +- .../v1/filters/statuses_controller_spec.rb | 116 +++++++++++ .../api/v1/statuses_controller_spec.rb | 27 +++ .../custom_filter_status_fabricator.rb | 4 + .../status_relationships_presenter_spec.rb | 27 +++ 40 files changed, 1138 insertions(+), 63 deletions(-) create mode 100644 app/controllers/api/v1/filters/statuses_controller.rb create mode 100644 app/controllers/filters/statuses_controller.rb create mode 100644 app/javascript/mastodon/actions/filters.js create mode 100644 app/javascript/mastodon/features/filters/added_to_filter.js create mode 100644 app/javascript/mastodon/features/filters/select_filter.js create mode 100644 app/javascript/mastodon/features/ui/components/filter_modal.js create mode 100644 app/javascript/mastodon/utils/filters.js create mode 100644 app/javascript/mastodon/utils/icons.js create mode 100644 app/models/custom_filter_status.rb create mode 100644 app/models/form/status_filter_batch_action.rb create mode 100644 app/serializers/rest/filter_status_serializer.rb create mode 100644 app/views/filters/statuses/_status_filter.html.haml create mode 100644 app/views/filters/statuses/index.html.haml create mode 100644 db/migrate/20220808101323_create_custom_filter_statuses.rb create mode 100644 spec/controllers/api/v1/filters/statuses_controller_spec.rb create mode 100644 spec/fabricators/custom_filter_status_fabricator.rb diff --git a/app/controllers/api/v1/filters/statuses_controller.rb b/app/controllers/api/v1/filters/statuses_controller.rb new file mode 100644 index 000000000..b6bed306f --- /dev/null +++ b/app/controllers/api/v1/filters/statuses_controller.rb @@ -0,0 +1,44 @@ +# frozen_string_literal: true + +class Api::V1::Filters::StatusesController < Api::BaseController + before_action -> { doorkeeper_authorize! :read, :'read:filters' }, only: [:index, :show] + before_action -> { doorkeeper_authorize! :write, :'write:filters' }, except: [:index, :show] + before_action :require_user! + + before_action :set_status_filters, only: :index + before_action :set_status_filter, only: [:show, :destroy] + + def index + render json: @status_filters, each_serializer: REST::FilterStatusSerializer + end + + def create + @status_filter = current_account.custom_filters.find(params[:filter_id]).statuses.create!(resource_params) + + render json: @status_filter, serializer: REST::FilterStatusSerializer + end + + def show + render json: @status_filter, serializer: REST::FilterStatusSerializer + end + + def destroy + @status_filter.destroy! + render_empty + end + + private + + def set_status_filters + filter = current_account.custom_filters.includes(:statuses).find(params[:filter_id]) + @status_filters = filter.statuses + end + + def set_status_filter + @status_filter = CustomFilterStatus.includes(:custom_filter).where(custom_filter: { account: current_account }).find(params[:id]) + end + + def resource_params + params.permit(:status_id) + end +end diff --git a/app/controllers/filters/statuses_controller.rb b/app/controllers/filters/statuses_controller.rb new file mode 100644 index 000000000..cc493c22c --- /dev/null +++ b/app/controllers/filters/statuses_controller.rb @@ -0,0 +1,49 @@ +# frozen_string_literal: true + +class Filters::StatusesController < ApplicationController + layout 'admin' + + before_action :authenticate_user! + before_action :set_filter + before_action :set_status_filters + before_action :set_body_classes + + PER_PAGE = 20 + + def index + @status_filter_batch_action = Form::StatusFilterBatchAction.new + end + + def batch + @status_filter_batch_action = Form::StatusFilterBatchAction.new(status_filter_batch_action_params.merge(current_account: current_account, filter_id: params[:filter_id], type: action_from_button)) + @status_filter_batch_action.save! + rescue ActionController::ParameterMissing + flash[:alert] = I18n.t('admin.statuses.no_status_selected') + ensure + redirect_to edit_filter_path(@filter) + end + + private + + def set_filter + @filter = current_account.custom_filters.find(params[:filter_id]) + end + + def set_status_filters + @status_filters = @filter.statuses.preload(:status).page(params[:page]).per(PER_PAGE) + end + + def status_filter_batch_action_params + params.require(:form_status_filter_batch_action).permit(status_filter_ids: []) + end + + def action_from_button + if params[:remove] + 'remove' + end + end + + def set_body_classes + @body_classes = 'admin' + end +end diff --git a/app/controllers/filters_controller.rb b/app/controllers/filters_controller.rb index 5ed53bce1..cc5cb5d9f 100644 --- a/app/controllers/filters_controller.rb +++ b/app/controllers/filters_controller.rb @@ -8,7 +8,7 @@ class FiltersController < ApplicationController before_action :set_body_classes def index - @filters = current_account.custom_filters.includes(:keywords).order(:phrase) + @filters = current_account.custom_filters.includes(:keywords, :statuses).order(:phrase) end def new diff --git a/app/javascript/mastodon/actions/filters.js b/app/javascript/mastodon/actions/filters.js new file mode 100644 index 000000000..76326802e --- /dev/null +++ b/app/javascript/mastodon/actions/filters.js @@ -0,0 +1,93 @@ +import api from '../api'; +import { openModal } from './modal'; + +export const FILTERS_FETCH_REQUEST = 'FILTERS_FETCH_REQUEST'; +export const FILTERS_FETCH_SUCCESS = 'FILTERS_FETCH_SUCCESS'; +export const FILTERS_FETCH_FAIL = 'FILTERS_FETCH_FAIL'; + +export const FILTERS_STATUS_CREATE_REQUEST = 'FILTERS_STATUS_CREATE_REQUEST'; +export const FILTERS_STATUS_CREATE_SUCCESS = 'FILTERS_STATUS_CREATE_SUCCESS'; +export const FILTERS_STATUS_CREATE_FAIL = 'FILTERS_STATUS_CREATE_FAIL'; + +export const FILTERS_CREATE_REQUEST = 'FILTERS_CREATE_REQUEST'; +export const FILTERS_CREATE_SUCCESS = 'FILTERS_CREATE_SUCCESS'; +export const FILTERS_CREATE_FAIL = 'FILTERS_CREATE_FAIL'; + +export const initAddFilter = (status, { contextType }) => dispatch => + dispatch(openModal('FILTER', { + statusId: status?.get('id'), + contextType: contextType, + })); + +export const fetchFilters = () => (dispatch, getState) => { + dispatch({ + type: FILTERS_FETCH_REQUEST, + skipLoading: true, + }); + + api(getState) + .get('/api/v2/filters') + .then(({ data }) => dispatch({ + type: FILTERS_FETCH_SUCCESS, + filters: data, + skipLoading: true, + })) + .catch(err => dispatch({ + type: FILTERS_FETCH_FAIL, + err, + skipLoading: true, + skipAlert: true, + })); +}; + +export const createFilterStatus = (params, onSuccess, onFail) => (dispatch, getState) => { + dispatch(createFilterStatusRequest()); + + api(getState).post(`/api/v1/filters/${params.filter_id}/statuses`, params).then(response => { + dispatch(createFilterStatusSuccess(response.data)); + if (onSuccess) onSuccess(); + }).catch(error => { + dispatch(createFilterStatusFail(error)); + if (onFail) onFail(); + }); +}; + +export const createFilterStatusRequest = () => ({ + type: FILTERS_STATUS_CREATE_REQUEST, +}); + +export const createFilterStatusSuccess = filter_status => ({ + type: FILTERS_STATUS_CREATE_SUCCESS, + filter_status, +}); + +export const createFilterStatusFail = error => ({ + type: FILTERS_STATUS_CREATE_FAIL, + error, +}); + +export const createFilter = (params, onSuccess, onFail) => (dispatch, getState) => { + dispatch(createFilterRequest()); + + api(getState).post('/api/v2/filters', params).then(response => { + dispatch(createFilterSuccess(response.data)); + if (onSuccess) onSuccess(response.data); + }).catch(error => { + dispatch(createFilterFail(error)); + if (onFail) onFail(); + }); +}; + +export const createFilterRequest = () => ({ + type: FILTERS_CREATE_REQUEST, +}); + +export const createFilterSuccess = filter => ({ + type: FILTERS_CREATE_SUCCESS, + filter, +}); + +export const createFilterFail = error => ({ + type: FILTERS_CREATE_FAIL, + error, +}); diff --git a/app/javascript/mastodon/actions/statuses.js b/app/javascript/mastodon/actions/statuses.js index adc24eabf..32a4f1f85 100644 --- a/app/javascript/mastodon/actions/statuses.js +++ b/app/javascript/mastodon/actions/statuses.js @@ -42,9 +42,9 @@ export function fetchStatusRequest(id, skipLoading) { }; }; -export function fetchStatus(id) { +export function fetchStatus(id, forceFetch = false) { return (dispatch, getState) => { - const skipLoading = getState().getIn(['statuses', id], null) !== null; + const skipLoading = !forceFetch && getState().getIn(['statuses', id], null) !== null; dispatch(fetchContext(id)); diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js index dee935a6c..d36311c67 100644 --- a/app/javascript/mastodon/components/status.js +++ b/app/javascript/mastodon/components/status.js @@ -80,6 +80,7 @@ class Status extends ImmutablePureComponent { onOpenMedia: PropTypes.func, onOpenVideo: PropTypes.func, onBlock: PropTypes.func, + onAddFilter: PropTypes.func, onEmbed: PropTypes.func, onHeightChange: PropTypes.func, onToggleHidden: PropTypes.func, diff --git a/app/javascript/mastodon/components/status_action_bar.js b/app/javascript/mastodon/components/status_action_bar.js index d44da482d..4b384e6e5 100644 --- a/app/javascript/mastodon/components/status_action_bar.js +++ b/app/javascript/mastodon/components/status_action_bar.js @@ -44,6 +44,7 @@ const messages = defineMessages({ unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unblock domain {domain}' }, unmute: { id: 'account.unmute', defaultMessage: 'Unmute @{name}' }, unblock: { id: 'account.unblock', defaultMessage: 'Unblock @{name}' }, + filter: { id: 'status.filter', defaultMessage: 'Filter this post' }, }); const mapStateToProps = (state, { status }) => ({ @@ -80,6 +81,7 @@ class StatusActionBar extends ImmutablePureComponent { onPin: PropTypes.func, onBookmark: PropTypes.func, onFilter: PropTypes.func, + onAddFilter: PropTypes.func, withDismiss: PropTypes.bool, withCounters: PropTypes.bool, scrollKey: PropTypes.string, @@ -211,8 +213,8 @@ class StatusActionBar extends ImmutablePureComponent { this.props.onMuteConversation(this.props.status); } - handleFilter = () => { - this.props.onFilter(); + handleFilterClick = () => { + this.props.onAddFilter(this.props.status); } handleCopy = () => { @@ -235,7 +237,7 @@ class StatusActionBar extends ImmutablePureComponent { } - handleFilterClick = () => { + handleHideClick = () => { this.props.onFilter(); } @@ -294,6 +296,12 @@ class StatusActionBar extends ImmutablePureComponent { menu.push({ text: intl.formatMessage(messages.block, { name: account.get('username') }), action: this.handleBlockClick }); } + if (!this.props.onFilter) { + menu.push(null); + menu.push({ text: intl.formatMessage(messages.filter), action: this.handleFilterClick }); + menu.push(null); + } + menu.push({ text: intl.formatMessage(messages.report, { name: account.get('username') }), action: this.handleReport }); if (account.get('acct') !== account.get('username')) { @@ -343,7 +351,7 @@ class StatusActionBar extends ImmutablePureComponent { ); const filterButton = this.props.onFilter && ( - + ); return ( diff --git a/app/javascript/mastodon/containers/status_container.js b/app/javascript/mastodon/containers/status_container.js index ef0aca13a..28698b082 100644 --- a/app/javascript/mastodon/containers/status_container.js +++ b/app/javascript/mastodon/containers/status_container.js @@ -34,6 +34,9 @@ import { blockDomain, unblockDomain, } from '../actions/domain_blocks'; +import { + initAddFilter, +} from '../actions/filters'; import { initMuteModal } from '../actions/mutes'; import { initBlockModal } from '../actions/blocks'; import { initBoostModal } from '../actions/boosts'; @@ -66,7 +69,7 @@ const makeMapStateToProps = () => { return mapStateToProps; }; -const mapDispatchToProps = (dispatch, { intl }) => ({ +const mapDispatchToProps = (dispatch, { intl, contextType }) => ({ onReply (status, router) { dispatch((_, getState) => { @@ -176,6 +179,10 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ dispatch(initReport(status.get('account'), status)); }, + onAddFilter (status) { + dispatch(initAddFilter(status, { contextType })); + }, + onMute (account) { dispatch(initMuteModal(account)); }, diff --git a/app/javascript/mastodon/features/compose/components/language_dropdown.js b/app/javascript/mastodon/features/compose/components/language_dropdown.js index d76490c77..0af3db7a4 100644 --- a/app/javascript/mastodon/features/compose/components/language_dropdown.js +++ b/app/javascript/mastodon/features/compose/components/language_dropdown.js @@ -8,6 +8,7 @@ import spring from 'react-motion/lib/spring'; import { supportsPassiveEvents } from 'detect-passive-events'; import classNames from 'classnames'; import { languages as preloadedLanguages } from 'mastodon/initial_state'; +import { loupeIcon, deleteIcon } from 'mastodon/utils/icons'; import fuzzysort from 'fuzzysort'; const messages = defineMessages({ @@ -16,22 +17,6 @@ const messages = defineMessages({ clear: { id: 'emoji_button.clear', defaultMessage: 'Clear' }, }); -// Copied from emoji-mart for consistency with emoji picker and since -// they don't export the icons in the package -const icons = { - loupe: ( - - - - ), - - delete: ( - - - - ), -}; - const listenerOptions = supportsPassiveEvents ? { passive: true } : false; class LanguageDropdownMenu extends React.PureComponent { @@ -242,7 +227,7 @@ class LanguageDropdownMenu extends React.PureComponent {
    - +
    diff --git a/app/javascript/mastodon/features/filters/added_to_filter.js b/app/javascript/mastodon/features/filters/added_to_filter.js new file mode 100644 index 000000000..3785eb3c5 --- /dev/null +++ b/app/javascript/mastodon/features/filters/added_to_filter.js @@ -0,0 +1,102 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import { FormattedMessage } from 'react-intl'; +import { toServerSideType } from 'mastodon/utils/filters'; +import Button from 'mastodon/components/button'; +import { connect } from 'react-redux'; + +const mapStateToProps = (state, { filterId }) => ({ + filter: state.getIn(['filters', filterId]), +}); + +export default @connect(mapStateToProps) +class AddedToFilter extends React.PureComponent { + + static propTypes = { + onClose: PropTypes.func.isRequired, + contextType: PropTypes.string, + filter: ImmutablePropTypes.map.isRequired, + dispatch: PropTypes.func.isRequired, + }; + + handleCloseClick = () => { + const { onClose } = this.props; + onClose(); + }; + + render () { + const { filter, contextType } = this.props; + + let expiredMessage = null; + if (filter.get('expires_at') && filter.get('expires_at') < new Date()) { + expiredMessage = ( + +

    +

    + +

    +
    + ); + } + + let contextMismatchMessage = null; + if (contextType && !filter.get('context').includes(toServerSideType(contextType))) { + contextMismatchMessage = ( + +

    +

    + +

    +
    + ); + } + + const settings_link = ( + + + + ); + + return ( + +

    +

    + +

    + + {expiredMessage} + {contextMismatchMessage} + +

    +

    + +

    + +
    + +
    + +
    + + ); + } + +} diff --git a/app/javascript/mastodon/features/filters/select_filter.js b/app/javascript/mastodon/features/filters/select_filter.js new file mode 100644 index 000000000..b5b354529 --- /dev/null +++ b/app/javascript/mastodon/features/filters/select_filter.js @@ -0,0 +1,192 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { connect } from 'react-redux'; +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; +import { toServerSideType } from 'mastodon/utils/filters'; +import { loupeIcon, deleteIcon } from 'mastodon/utils/icons'; +import Icon from 'mastodon/components/icon'; +import fuzzysort from 'fuzzysort'; + +const messages = defineMessages({ + search: { id: 'filter_modal.select_filter.search', defaultMessage: 'Search or create' }, + clear: { id: 'emoji_button.clear', defaultMessage: 'Clear' }, +}); + +const mapStateToProps = (state, { contextType }) => ({ + filters: Array.from(state.get('filters').values()).map((filter) => [ + filter.get('id'), + filter.get('title'), + filter.get('keywords')?.map((keyword) => keyword.get('keyword')).join('\n'), + filter.get('expires_at') && filter.get('expires_at') < new Date(), + contextType && !filter.get('context').includes(toServerSideType(contextType)), + ]), +}); + +export default @connect(mapStateToProps) +@injectIntl +class SelectFilter extends React.PureComponent { + + static propTypes = { + onSelectFilter: PropTypes.func.isRequired, + onNewFilter: PropTypes.func.isRequired, + filters: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.object)), + intl: PropTypes.object.isRequired, + }; + + state = { + searchValue: '', + }; + + search () { + const { filters } = this.props; + const { searchValue } = this.state; + + if (searchValue === '') { + return filters; + } + + return fuzzysort.go(searchValue, filters, { + keys: ['1', '2'], + limit: 5, + threshold: -10000, + }).map(result => result.obj); + } + + renderItem = filter => { + let warning = null; + if (filter[3] || filter[4]) { + warning = ( + + ( + {filter[3] && } + {filter[3] && filter[4] && ', '} + {filter[4] && } + ) + + ); + } + + return ( +
    + {filter[1]} {warning} +
    + ); + } + + renderCreateNew (name) { + return ( +
    + +
    + ); + } + + handleSearchChange = ({ target }) => { + this.setState({ searchValue: target.value }); + } + + setListRef = c => { + this.listNode = c; + } + + handleKeyDown = e => { + const index = Array.from(this.listNode.childNodes).findIndex(node => node === e.currentTarget); + + let element = null; + + switch(e.key) { + case ' ': + case 'Enter': + e.currentTarget.click(); + break; + case 'ArrowDown': + element = this.listNode.childNodes[index + 1] || this.listNode.firstChild; + break; + case 'ArrowUp': + element = this.listNode.childNodes[index - 1] || this.listNode.lastChild; + break; + case 'Tab': + if (e.shiftKey) { + element = this.listNode.childNodes[index - 1] || this.listNode.lastChild; + } else { + element = this.listNode.childNodes[index + 1] || this.listNode.firstChild; + } + break; + case 'Home': + element = this.listNode.firstChild; + break; + case 'End': + element = this.listNode.lastChild; + break; + } + + if (element) { + element.focus(); + e.preventDefault(); + e.stopPropagation(); + } + } + + handleSearchKeyDown = e => { + let element = null; + + switch(e.key) { + case 'Tab': + case 'ArrowDown': + element = this.listNode.firstChild; + + if (element) { + element.focus(); + e.preventDefault(); + e.stopPropagation(); + } + + break; + } + } + + handleClear = () => { + this.setState({ searchValue: '' }); + } + + handleItemClick = e => { + const value = e.currentTarget.getAttribute('data-index'); + + e.preventDefault(); + + this.props.onSelectFilter(value); + } + + handleNewFilterClick = e => { + e.preventDefault(); + + this.props.onNewFilter(this.state.searchValue); + }; + + render () { + const { intl } = this.props; + + const { searchValue } = this.state; + const isSearching = searchValue !== ''; + const results = this.search(); + + return ( + +

    +

    + +
    + + +
    + +
    + {results.map(this.renderItem)} + {isSearching && this.renderCreateNew(searchValue) } +
    + +
    + ); + } + +} diff --git a/app/javascript/mastodon/features/ui/components/filter_modal.js b/app/javascript/mastodon/features/ui/components/filter_modal.js new file mode 100644 index 000000000..376db961d --- /dev/null +++ b/app/javascript/mastodon/features/ui/components/filter_modal.js @@ -0,0 +1,134 @@ +import React from 'react'; +import { connect } from 'react-redux'; +import { fetchStatus } from 'mastodon/actions/statuses'; +import { fetchFilters, createFilter, createFilterStatus } from 'mastodon/actions/filters'; +import PropTypes from 'prop-types'; +import { defineMessages, FormattedMessage, injectIntl } from 'react-intl'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import IconButton from 'mastodon/components/icon_button'; +import SelectFilter from 'mastodon/features/filters/select_filter'; +import AddedToFilter from 'mastodon/features/filters/added_to_filter'; + +const messages = defineMessages({ + close: { id: 'lightbox.close', defaultMessage: 'Close' }, +}); + +export default @connect(undefined) +@injectIntl +class FilterModal extends ImmutablePureComponent { + + static propTypes = { + statusId: PropTypes.string.isRequired, + contextType: PropTypes.string, + dispatch: PropTypes.func.isRequired, + intl: PropTypes.object.isRequired, + }; + + state = { + step: 'select', + filterId: null, + isSubmitting: false, + isSubmitted: false, + }; + + handleNewFilterSuccess = (result) => { + this.handleSelectFilter(result.id); + }; + + handleSuccess = () => { + const { dispatch, statusId } = this.props; + dispatch(fetchStatus(statusId, true)); + this.setState({ isSubmitting: false, isSubmitted: true, step: 'submitted' }); + }; + + handleFail = () => { + this.setState({ isSubmitting: false }); + }; + + handleNextStep = step => { + this.setState({ step }); + }; + + handleSelectFilter = (filterId) => { + const { dispatch, statusId } = this.props; + + this.setState({ isSubmitting: true, filterId }); + + dispatch(createFilterStatus({ + filter_id: filterId, + status_id: statusId, + }, this.handleSuccess, this.handleFail)); + }; + + handleNewFilter = (title) => { + const { dispatch } = this.props; + + this.setState({ isSubmitting: true }); + + dispatch(createFilter({ + title, + context: ['home', 'notifications', 'public', 'thread', 'account'], + action: 'warn', + }, this.handleNewFilterSuccess, this.handleFail)); + }; + + componentDidMount () { + const { dispatch } = this.props; + + dispatch(fetchFilters()); + } + + render () { + const { + intl, + statusId, + contextType, + onClose, + } = this.props; + + const { + step, + filterId, + } = this.state; + + let stepComponent; + + switch(step) { + case 'select': + stepComponent = ( + + ); + break; + case 'create': + stepComponent = null; + break; + case 'submitted': + stepComponent = ( + + ); + } + + return ( +
    +
    + + +
    + +
    + {stepComponent} +
    +
    + ); + } + +} diff --git a/app/javascript/mastodon/features/ui/components/modal_root.js b/app/javascript/mastodon/features/ui/components/modal_root.js index 3fc235849..b2c30e079 100644 --- a/app/javascript/mastodon/features/ui/components/modal_root.js +++ b/app/javascript/mastodon/features/ui/components/modal_root.js @@ -20,6 +20,7 @@ import { ListEditor, ListAdder, CompareHistoryModal, + FilterModal, } from 'mastodon/features/ui/util/async-components'; const MODAL_COMPONENTS = { @@ -37,6 +38,7 @@ const MODAL_COMPONENTS = { 'FOCAL_POINT': () => Promise.resolve({ default: FocalPointModal }), 'LIST_ADDER': ListAdder, 'COMPARE_HISTORY': CompareHistoryModal, + 'FILTER': FilterModal, }; export default class ModalRoot extends React.PureComponent { diff --git a/app/javascript/mastodon/features/ui/util/async-components.js b/app/javascript/mastodon/features/ui/util/async-components.js index 92c683e2f..29b06206a 100644 --- a/app/javascript/mastodon/features/ui/util/async-components.js +++ b/app/javascript/mastodon/features/ui/util/async-components.js @@ -161,3 +161,7 @@ export function CompareHistoryModal () { export function Explore () { return import(/* webpackChunkName: "features/explore" */'../../explore'); } + +export function FilterModal () { + return import(/*webpackChunkName: "modals/filter_modal" */'../components/filter_modal'); +} diff --git a/app/javascript/mastodon/reducers/filters.js b/app/javascript/mastodon/reducers/filters.js index 14b704027..cc1d3349c 100644 --- a/app/javascript/mastodon/reducers/filters.js +++ b/app/javascript/mastodon/reducers/filters.js @@ -1,4 +1,5 @@ import { FILTERS_IMPORT } from '../actions/importer'; +import { FILTERS_FETCH_SUCCESS, FILTERS_CREATE_SUCCESS } from '../actions/filters'; import { Map as ImmutableMap, is, fromJS } from 'immutable'; const normalizeFilter = (state, filter) => { @@ -7,13 +8,17 @@ const normalizeFilter = (state, filter) => { title: filter.title, context: filter.context, filter_action: filter.filter_action, + keywords: filter.keywords, expires_at: filter.expires_at ? Date.parse(filter.expires_at) : null, }); if (is(state.get(filter.id), normalizedFilter)) { return state; } else { - return state.set(filter.id, normalizedFilter); + // Do not overwrite keywords when receiving a partial filter + return state.update(filter.id, ImmutableMap(), (old) => ( + old.mergeWith(((old_value, new_value) => (new_value === undefined ? old_value : new_value)), normalizedFilter) + )); } }; @@ -27,6 +32,10 @@ const normalizeFilters = (state, filters) => { export default function filters(state = ImmutableMap(), action) { switch(action.type) { + case FILTERS_CREATE_SUCCESS: + return normalizeFilter(state, action.filter); + case FILTERS_FETCH_SUCCESS: + //TODO: handle deleting obsolete filters case FILTERS_IMPORT: return normalizeFilters(state, action.filters); default: diff --git a/app/javascript/mastodon/selectors/index.js b/app/javascript/mastodon/selectors/index.js index 187e3306d..3dd7f4897 100644 --- a/app/javascript/mastodon/selectors/index.js +++ b/app/javascript/mastodon/selectors/index.js @@ -1,5 +1,6 @@ import { createSelector } from 'reselect'; import { List as ImmutableList, Map as ImmutableMap } from 'immutable'; +import { toServerSideType } from 'mastodon/utils/filters'; import { me } from '../initial_state'; const getAccountBase = (state, id) => state.getIn(['accounts', id], null); @@ -20,23 +21,6 @@ export const makeGetAccount = () => { }); }; -const toServerSideType = columnType => { - switch (columnType) { - case 'home': - case 'notifications': - case 'public': - case 'thread': - case 'account': - return columnType; - default: - if (columnType.indexOf('list:') > -1) { - return 'home'; - } else { - return 'public'; // community, account, hashtag - } - } -}; - const getFilters = (state, { contextType }) => { if (!contextType) return null; @@ -73,6 +57,7 @@ export const makeGetStatus = () => { if (filterResults.some((result) => filters.getIn([result.get('filter'), 'filter_action']) === 'hide')) { return null; } + filterResults = filterResults.filter(result => filters.has(result.get('filter'))); if (!filterResults.isEmpty()) { filtered = filterResults.map(result => filters.getIn([result.get('filter'), 'title'])); } diff --git a/app/javascript/mastodon/utils/filters.js b/app/javascript/mastodon/utils/filters.js new file mode 100644 index 000000000..97b433a99 --- /dev/null +++ b/app/javascript/mastodon/utils/filters.js @@ -0,0 +1,16 @@ +export const toServerSideType = columnType => { + switch (columnType) { + case 'home': + case 'notifications': + case 'public': + case 'thread': + case 'account': + return columnType; + default: + if (columnType.indexOf('list:') > -1) { + return 'home'; + } else { + return 'public'; // community, account, hashtag + } + } +}; diff --git a/app/javascript/mastodon/utils/icons.js b/app/javascript/mastodon/utils/icons.js new file mode 100644 index 000000000..be566032e --- /dev/null +++ b/app/javascript/mastodon/utils/icons.js @@ -0,0 +1,13 @@ +// Copied from emoji-mart for consistency with emoji picker and since +// they don't export the icons in the package +export const loupeIcon = ( + + + +); + +export const deleteIcon = ( + + + +); diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index a0a39812b..f5377a858 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -5233,6 +5233,16 @@ a.status-card.compact:hover { line-height: 22px; color: lighten($inverted-text-color, 16%); margin-bottom: 30px; + + a { + text-decoration: none; + color: $inverted-text-color; + font-weight: 500; + + &:hover { + text-decoration: underline; + } + } } &__actions { @@ -5379,6 +5389,14 @@ a.status-card.compact:hover { background: transparent; margin: 15px 0; } + + .emoji-mart-search { + padding-right: 10px; + } + + .emoji-mart-search-icon { + right: 10px + 5px; + } } .report-modal__container { diff --git a/app/models/concerns/account_interactions.rb b/app/models/concerns/account_interactions.rb index a7401362f..9b358d338 100644 --- a/app/models/concerns/account_interactions.rb +++ b/app/models/concerns/account_interactions.rb @@ -249,15 +249,7 @@ module AccountInteractions def status_matches_filters(status) active_filters = CustomFilter.cached_filters_for(id) - - filter_matches = active_filters.filter_map do |filter, rules| - next if rules[:keywords].blank? - - match = rules[:keywords].match(status.proper.searchable_text) - FilterResultPresenter.new(filter: filter, keyword_matches: [match.to_s]) unless match.nil? - end - - filter_matches + CustomFilter.apply_cached_filters(active_filters, status) end def followers_for_local_distribution diff --git a/app/models/custom_filter.rb b/app/models/custom_filter.rb index 985eab125..da2a91493 100644 --- a/app/models/custom_filter.rb +++ b/app/models/custom_filter.rb @@ -34,6 +34,7 @@ class CustomFilter < ApplicationRecord belongs_to :account has_many :keywords, class_name: 'CustomFilterKeyword', foreign_key: :custom_filter_id, inverse_of: :custom_filter, dependent: :destroy + has_many :statuses, class_name: 'CustomFilterStatus', foreign_key: :custom_filter_id, inverse_of: :custom_filter, dependent: :destroy accepts_nested_attributes_for :keywords, reject_if: :all_blank, allow_destroy: true validates :title, :context, presence: true @@ -62,8 +63,10 @@ class CustomFilter < ApplicationRecord def self.cached_filters_for(account_id) active_filters = Rails.cache.fetch("filters:v3:#{account_id}") do + filters_hash = {} + scope = CustomFilterKeyword.includes(:custom_filter).where(custom_filter: { account_id: account_id }).where(Arel.sql('expires_at IS NULL OR expires_at > NOW()')) - scope.to_a.group_by(&:custom_filter).map do |filter, keywords| + scope.to_a.group_by(&:custom_filter).each do |filter, keywords| keywords.map! do |keyword| if keyword.whole_word sb = /\A[[:word:]]/.match?(keyword.keyword) ? '\b' : '' @@ -74,13 +77,34 @@ class CustomFilter < ApplicationRecord /#{Regexp.escape(keyword.keyword)}/i end end - [filter, { keywords: Regexp.union(keywords) }] + + filters_hash[filter.id] = { keywords: Regexp.union(keywords), filter: filter } + end.to_h + + scope = CustomFilterStatus.includes(:custom_filter).where(custom_filter: { account_id: account_id }).where(Arel.sql('expires_at IS NULL OR expires_at > NOW()')) + scope.to_a.group_by(&:custom_filter).each do |filter, statuses| + filters_hash[filter.id] ||= { filter: filter } + filters_hash[filter.id].merge!(status_ids: statuses.map(&:status_id)) end + + filters_hash.values.map { |cache| [cache.delete(:filter), cache] } end.to_a active_filters.select { |custom_filter, _| !custom_filter.expired? } end + def self.apply_cached_filters(cached_filters, status) + cached_filters.filter_map do |filter, rules| + match = rules[:keywords].match(status.proper.searchable_text) if rules[:keywords].present? + keyword_matches = [match.to_s] unless match.nil? + + status_matches = [status.id, status.reblog_of_id].compact & rules[:status_ids] if rules[:status_ids].present? + + next if keyword_matches.blank? && status_matches.blank? + FilterResultPresenter.new(filter: filter, keyword_matches: keyword_matches, status_matches: status_matches) + end + end + def prepare_cache_invalidation! @should_invalidate_cache = true end diff --git a/app/models/custom_filter_status.rb b/app/models/custom_filter_status.rb new file mode 100644 index 000000000..b6bea1394 --- /dev/null +++ b/app/models/custom_filter_status.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true +# == Schema Information +# +# Table name: custom_filter_statuses +# +# id :bigint(8) not null, primary key +# custom_filter_id :bigint(8) not null +# status_id :bigint(8) default(""), not null +# created_at :datetime not null +# updated_at :datetime not null +# + +class CustomFilterStatus < ApplicationRecord + belongs_to :custom_filter + belongs_to :status + + validates :status, uniqueness: { scope: :custom_filter } + validate :validate_status_access + + before_save :prepare_cache_invalidation! + before_destroy :prepare_cache_invalidation! + after_commit :invalidate_cache! + + private + + def validate_status_access + errors.add(:status_id, :invalid) unless StatusPolicy.new(custom_filter.account, status).show? + end + + def prepare_cache_invalidation! + custom_filter.prepare_cache_invalidation! + end + + def invalidate_cache! + custom_filter.invalidate_cache! + end +end diff --git a/app/models/form/status_filter_batch_action.rb b/app/models/form/status_filter_batch_action.rb new file mode 100644 index 000000000..d87bd5cc4 --- /dev/null +++ b/app/models/form/status_filter_batch_action.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +class Form::StatusFilterBatchAction + include ActiveModel::Model + include AccountableConcern + include Authorization + + attr_accessor :current_account, :type, + :status_filter_ids, :filter_id + + def save! + process_action! + end + + private + + def status_filters + filter = current_account.custom_filters.find(filter_id) + filter.statuses.where(id: status_filter_ids) + end + + def process_action! + return if status_filter_ids.empty? + + case type + when 'remove' + handle_remove! + end + end + + def handle_remove! + status_filters.destroy_all + end +end diff --git a/app/presenters/filter_result_presenter.rb b/app/presenters/filter_result_presenter.rb index 677225f5e..1e9e8f3c1 100644 --- a/app/presenters/filter_result_presenter.rb +++ b/app/presenters/filter_result_presenter.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true class FilterResultPresenter < ActiveModelSerializers::Model - attributes :filter, :keyword_matches + attributes :filter, :keyword_matches, :status_matches end diff --git a/app/presenters/status_relationships_presenter.rb b/app/presenters/status_relationships_presenter.rb index d7ffb1954..be818a2de 100644 --- a/app/presenters/status_relationships_presenter.rb +++ b/app/presenters/status_relationships_presenter.rb @@ -33,12 +33,7 @@ class StatusRelationshipsPresenter active_filters = CustomFilter.cached_filters_for(current_account_id) @filters_map = statuses.each_with_object({}) do |status, h| - filter_matches = active_filters.filter_map do |filter, rules| - next if rules[:keywords].blank? - - match = rules[:keywords].match(status.proper.searchable_text) - FilterResultPresenter.new(filter: filter, keyword_matches: [match.to_s]) unless match.nil? - end + filter_matches = CustomFilter.apply_cached_filters(active_filters, status) unless filter_matches.empty? h[status.id] = filter_matches diff --git a/app/serializers/rest/filter_result_serializer.rb b/app/serializers/rest/filter_result_serializer.rb index 0ef4db79a..54ead2f1f 100644 --- a/app/serializers/rest/filter_result_serializer.rb +++ b/app/serializers/rest/filter_result_serializer.rb @@ -3,4 +3,9 @@ class REST::FilterResultSerializer < ActiveModel::Serializer belongs_to :filter, serializer: REST::FilterSerializer has_many :keyword_matches + has_many :status_matches + + def status_matches + object.status_matches&.map(&:to_s) + end end diff --git a/app/serializers/rest/filter_serializer.rb b/app/serializers/rest/filter_serializer.rb index 98d7edb17..8816dd807 100644 --- a/app/serializers/rest/filter_serializer.rb +++ b/app/serializers/rest/filter_serializer.rb @@ -3,6 +3,7 @@ class REST::FilterSerializer < ActiveModel::Serializer attributes :id, :title, :context, :expires_at, :filter_action has_many :keywords, serializer: REST::FilterKeywordSerializer, if: :rules_requested? + has_many :statuses, serializer: REST::FilterStatusSerializer, if: :rules_requested? def id object.id.to_s diff --git a/app/serializers/rest/filter_status_serializer.rb b/app/serializers/rest/filter_status_serializer.rb new file mode 100644 index 000000000..6bcbaa249 --- /dev/null +++ b/app/serializers/rest/filter_status_serializer.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class REST::FilterStatusSerializer < ActiveModel::Serializer + attributes :id, :status_id + + def id + object.id.to_s + end + + def status_id + object.status_id.to_s + end +end diff --git a/app/views/filters/_filter.html.haml b/app/views/filters/_filter.html.haml index 2ab014081..9993ad2ee 100644 --- a/app/views/filters/_filter.html.haml +++ b/app/views/filters/_filter.html.haml @@ -22,6 +22,15 @@ - keywords = filter.keywords.map(&:keyword) - keywords = keywords.take(5) + ['…'] if keywords.size > 5 # TODO = keywords.join(', ') + - unless filter.statuses.empty? + %li.permissions-list__item + .permissions-list__item__icon + = fa_icon('comment') + .permissions-list__item__text + .permissions-list__item__text__title + = t('filters.index.statuses', count: filter.statuses.size) + .permissions-list__item__text__type + = t('filters.index.statuses_long', count: filter.statuses.size) .announcements-list__item__action-bar .announcements-list__item__meta diff --git a/app/views/filters/_filter_fields.html.haml b/app/views/filters/_filter_fields.html.haml index 1a52faa7a..c58978f5a 100644 --- a/app/views/filters/_filter_fields.html.haml +++ b/app/views/filters/_filter_fields.html.haml @@ -14,6 +14,13 @@ %hr.spacer/ +- unless f.object.statuses.empty? + %h4= t('filters.edit.statuses') + + %p.muted-hint= t('filters.edit.statuses_hint_html', path: filter_statuses_path(f.object)) + + %hr.spacer/ + %h4= t('filters.edit.keywords') .table-wrapper diff --git a/app/views/filters/statuses/_status_filter.html.haml b/app/views/filters/statuses/_status_filter.html.haml new file mode 100644 index 000000000..ba1170cf9 --- /dev/null +++ b/app/views/filters/statuses/_status_filter.html.haml @@ -0,0 +1,37 @@ +- status = status_filter.status.proper + +.batch-table__row + %label.batch-table__row__select.batch-checkbox + = f.check_box :status_filter_ids, { multiple: true, include_hidden: false }, status_filter.id + .batch-table__row__content + .status__content>< + - if status.spoiler_text.blank? + = prerender_custom_emojis(status_content_format(status), status.emojis) + - else + %details< + %summary>< + %strong> Content warning: #{prerender_custom_emojis(h(status.spoiler_text), status.emojis)} + = prerender_custom_emojis(status_content_format(status), status.emojis) + + - status.ordered_media_attachments.each do |media_attachment| + %abbr{ title: media_attachment.description } + = fa_icon 'link' + = media_attachment.file_file_name + + .detailed-status__meta + = link_to ActivityPub::TagManager.instance.url_for(status.account), class: 'name-tag', target: '_blank', rel: 'noopener noreferrer' do + = image_tag(status.account.avatar.url, width: 15, height: 15, alt: display_name(status.account), class: 'avatar') + .username= status.account.acct + · + = link_to ActivityPub::TagManager.instance.url_for(status), class: 'detailed-status__datetime', target: stream_link_target, rel: 'noopener noreferrer' do + %time.formatted{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at) + - if status.edited? + · + = t('statuses.edited_at_html', date: content_tag(:time, l(status.edited_at), datetime: status.edited_at.iso8601, title: l(status.edited_at), class: 'formatted')) + · + = fa_visibility_icon(status) + = t("statuses.visibilities.#{status.visibility}") + - if status.sensitive? + · + = fa_icon('eye-slash fw') + = t('stream_entries.sensitive_content') diff --git a/app/views/filters/statuses/index.html.haml b/app/views/filters/statuses/index.html.haml new file mode 100644 index 000000000..886de58fa --- /dev/null +++ b/app/views/filters/statuses/index.html.haml @@ -0,0 +1,38 @@ +- content_for :header_tags do + = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' + +- content_for :page_title do + = t('filters.statuses.index.title') + \- + = @filter.title + +.filters + .back-link + = link_to edit_filter_path(@filter) do + = fa_icon 'chevron-left fw' + = t('filters.statuses.back_to_filter') + +%p.hint= t('filters.statuses.index.hint') + +%hr.spacer/ + += form_for(@status_filter_batch_action, url: batch_filter_statuses_path(@filter.id)) do |f| + = hidden_field_tag :page, params[:page] || 1 + + - Admin::StatusFilter::KEYS.each do |key| + = hidden_field_tag key, params[key] if params[key].present? + + .batch-table + .batch-table__toolbar + %label.batch-table__toolbar__select.batch-checkbox-all + = check_box_tag :batch_checkbox_all, nil, false + .batch-table__toolbar__actions + - unless @status_filters.empty? + = f.button safe_join([fa_icon('times'), t('filters.statuses.batch.remove')]), name: :remove, class: 'table-action-link', type: :submit + .batch-table__body + - if @status_filters.empty? + = nothing_here 'nothing-here--under-tabs' + - else + = render partial: 'status_filter', collection: @status_filters, locals: { f: f } + += paginate @status_filters diff --git a/config/locales/en.yml b/config/locales/en.yml index 2cd4f45ac..596cc1a28 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1181,6 +1181,8 @@ en: edit: add_keyword: Add keyword keywords: Keywords + statuses: Individual posts + statuses_hint_html: This filter applies to select individual posts regardless of whether they match the keywords below. You can review these posts and remove them from the filter by clicking here. title: Edit filter errors: deprecated_api_multiple_keywords: These parameters cannot be changed from this application because they apply to more than one filter keyword. Use a more recent application or the web interface. @@ -1194,10 +1196,23 @@ en: keywords: one: "%{count} keyword" other: "%{count} keywords" + statuses: + one: "%{count} post" + other: "%{count} posts" + statuses_long: + one: "%{count} individual post hidden" + other: "%{count} individual posts hidden" title: Filters new: save: Save new filter title: Add new filter + statuses: + back_to_filter: Back to filter + batch: + remove: Remove from filter + index: + hint: This filter applies to select individual posts regardless of other criteria. You can add more posts to this filter from the Web interface. + title: Filtered posts footer: developers: Developers more: More… diff --git a/config/routes.rb b/config/routes.rb index 7dc9f391d..dff0add3a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -177,7 +177,14 @@ Rails.application.routes.draw do resources :tags, only: [:show] resources :emojis, only: [:show] resources :invites, only: [:index, :create, :destroy] - resources :filters, except: [:show] + resources :filters, except: [:show] do + resources :statuses, only: [:index], controller: 'filters/statuses' do + collection do + post :batch + end + end + end + resource :relationships, only: [:show, :update] resource :statuses_cleanup, controller: :statuses_cleanup, only: [:show, :update] @@ -448,12 +455,14 @@ Rails.application.routes.draw do resources :trends, only: [:index], controller: 'trends/tags' resources :filters, only: [:index, :create, :show, :update, :destroy] do resources :keywords, only: [:index, :create], controller: 'filters/keywords' + resources :statuses, only: [:index, :create], controller: 'filters/statuses' end resources :endorsements, only: [:index] resources :markers, only: [:index, :create] namespace :filters do resources :keywords, only: [:show, :update, :destroy] + resources :statuses, only: [:show, :destroy] end namespace :apps do diff --git a/db/migrate/20220808101323_create_custom_filter_statuses.rb b/db/migrate/20220808101323_create_custom_filter_statuses.rb new file mode 100644 index 000000000..52f703749 --- /dev/null +++ b/db/migrate/20220808101323_create_custom_filter_statuses.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +class CreateCustomFilterStatuses < ActiveRecord::Migration[6.1] + def change + create_table :custom_filter_statuses do |t| + t.belongs_to :custom_filter, foreign_key: { on_delete: :cascade }, null: false + t.belongs_to :status, foreign_key: { on_delete: :cascade }, null: false + + t.timestamps + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 2263dc7d7..15ab2e85e 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2022_07_14_171049) do +ActiveRecord::Schema.define(version: 2022_08_08_101323) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -348,6 +348,15 @@ ActiveRecord::Schema.define(version: 2022_07_14_171049) do t.index ["custom_filter_id"], name: "index_custom_filter_keywords_on_custom_filter_id" end + create_table "custom_filter_statuses", force: :cascade do |t| + t.bigint "custom_filter_id", null: false + t.bigint "status_id", null: false + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + t.index ["custom_filter_id"], name: "index_custom_filter_statuses_on_custom_filter_id" + t.index ["status_id"], name: "index_custom_filter_statuses_on_status_id" + end + create_table "custom_filters", force: :cascade do |t| t.bigint "account_id" t.datetime "expires_at" @@ -1113,6 +1122,8 @@ ActiveRecord::Schema.define(version: 2022_07_14_171049) do add_foreign_key "conversation_mutes", "accounts", name: "fk_225b4212bb", on_delete: :cascade add_foreign_key "conversation_mutes", "conversations", on_delete: :cascade add_foreign_key "custom_filter_keywords", "custom_filters", on_delete: :cascade + add_foreign_key "custom_filter_statuses", "custom_filters", on_delete: :cascade + add_foreign_key "custom_filter_statuses", "statuses", on_delete: :cascade add_foreign_key "custom_filters", "accounts", on_delete: :cascade add_foreign_key "devices", "accounts", on_delete: :cascade add_foreign_key "devices", "oauth_access_tokens", column: "access_token_id", on_delete: :cascade diff --git a/spec/controllers/api/v1/filters/statuses_controller_spec.rb b/spec/controllers/api/v1/filters/statuses_controller_spec.rb new file mode 100644 index 000000000..3b2399dd8 --- /dev/null +++ b/spec/controllers/api/v1/filters/statuses_controller_spec.rb @@ -0,0 +1,116 @@ +require 'rails_helper' + +RSpec.describe Api::V1::Filters::StatusesController, type: :controller do + render_views + + let(:user) { Fabricate(:user) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } + let(:filter) { Fabricate(:custom_filter, account: user.account) } + let(:other_user) { Fabricate(:user) } + let(:other_filter) { Fabricate(:custom_filter, account: other_user.account) } + + before do + allow(controller).to receive(:doorkeeper_token) { token } + end + + describe 'GET #index' do + let(:scopes) { 'read:filters' } + let!(:status_filter) { Fabricate(:custom_filter_status, custom_filter: filter) } + + it 'returns http success' do + get :index, params: { filter_id: filter.id } + expect(response).to have_http_status(200) + end + + context "when trying to access another's user filters" do + it 'returns http not found' do + get :index, params: { filter_id: other_filter.id } + expect(response).to have_http_status(404) + end + end + end + + describe 'POST #create' do + let(:scopes) { 'write:filters' } + let(:filter_id) { filter.id } + let!(:status) { Fabricate(:status) } + + before do + post :create, params: { filter_id: filter_id, status_id: status.id } + end + + it 'returns http success' do + expect(response).to have_http_status(200) + end + + it 'returns a status filter' do + json = body_as_json + expect(json[:status_id]).to eq status.id.to_s + end + + it 'creates a status filter' do + filter = user.account.custom_filters.first + expect(filter).to_not be_nil + expect(filter.statuses.pluck(:status_id)).to eq [status.id] + end + + context "when trying to add to another another's user filters" do + let(:filter_id) { other_filter.id } + + it 'returns http not found' do + expect(response).to have_http_status(404) + end + end + end + + describe 'GET #show' do + let(:scopes) { 'read:filters' } + let!(:status_filter) { Fabricate(:custom_filter_status, custom_filter: filter) } + + before do + get :show, params: { id: status_filter.id } + end + + it 'returns http success' do + expect(response).to have_http_status(200) + end + + it 'returns expected data' do + json = body_as_json + expect(json[:status_id]).to eq status_filter.status_id.to_s + end + + context "when trying to access another user's filter keyword" do + let(:status_filter) { Fabricate(:custom_filter_status, custom_filter: other_filter) } + + it 'returns http not found' do + expect(response).to have_http_status(404) + end + end + end + + describe 'DELETE #destroy' do + let(:scopes) { 'write:filters' } + let(:status_filter) { Fabricate(:custom_filter_status, custom_filter: filter) } + + before do + delete :destroy, params: { id: status_filter.id } + end + + it 'returns http success' do + expect(response).to have_http_status(200) + end + + it 'removes the filter' do + expect { status_filter.reload }.to raise_error ActiveRecord::RecordNotFound + end + + context "when trying to update another user's filter keyword" do + let(:status_filter) { Fabricate(:custom_filter_status, custom_filter: other_filter) } + + it 'returns http not found' do + expect(response).to have_http_status(404) + end + end + end +end diff --git a/spec/controllers/api/v1/statuses_controller_spec.rb b/spec/controllers/api/v1/statuses_controller_spec.rb index 4d104a198..24810a5d2 100644 --- a/spec/controllers/api/v1/statuses_controller_spec.rb +++ b/spec/controllers/api/v1/statuses_controller_spec.rb @@ -47,6 +47,33 @@ RSpec.describe Api::V1::StatusesController, type: :controller do end end + context 'when post is explicitly filtered' do + let(:status) { Fabricate(:status, text: 'hello world') } + + before do + filter = user.account.custom_filters.create!(phrase: 'filter1', context: %w(home), action: :hide) + filter.statuses.create!(status_id: status.id) + end + + it 'returns http success' do + get :show, params: { id: status.id } + expect(response).to have_http_status(200) + end + + it 'returns filter information' do + get :show, params: { id: status.id } + json = body_as_json + expect(json[:filtered][0]).to include({ + filter: a_hash_including({ + id: user.account.custom_filters.first.id.to_s, + title: 'filter1', + filter_action: 'hide', + }), + status_matches: [status.id.to_s], + }) + end + end + context 'when reblog includes filtered terms' do let(:status) { Fabricate(:status, reblog: Fabricate(:status, text: 'this toot is about that banned word')) } diff --git a/spec/fabricators/custom_filter_status_fabricator.rb b/spec/fabricators/custom_filter_status_fabricator.rb new file mode 100644 index 000000000..d082b81c5 --- /dev/null +++ b/spec/fabricators/custom_filter_status_fabricator.rb @@ -0,0 +1,4 @@ +Fabricator(:custom_filter_status) do + custom_filter + status +end diff --git a/spec/presenters/status_relationships_presenter_spec.rb b/spec/presenters/status_relationships_presenter_spec.rb index 5cd4929a6..eaab922fd 100644 --- a/spec/presenters/status_relationships_presenter_spec.rb +++ b/spec/presenters/status_relationships_presenter_spec.rb @@ -94,5 +94,32 @@ RSpec.describe StatusRelationshipsPresenter do expect(matched_filters[0].keyword_matches).to eq ['irrelevant'] end end + + context 'when post includes filtered individual statuses' do + let(:statuses) { [Fabricate(:status, text: 'hello world'), Fabricate(:status, reblog: Fabricate(:status, text: 'this toot is about an irrelevant word'))] } + let(:options) { {} } + + before do + filter = Account.find(current_account_id).custom_filters.create!(phrase: 'filter1', context: %w(home), action: :hide) + filter.statuses.create!(status_id: statuses[0].id) + filter.statuses.create!(status_id: statuses[1].reblog_of_id) + end + + it 'sets @filters_map to filter top-level status' do + matched_filters = presenter.filters_map[statuses[0].id] + expect(matched_filters.size).to eq 1 + + expect(matched_filters[0].filter.title).to eq 'filter1' + expect(matched_filters[0].status_matches).to eq [statuses[0].id] + end + + it 'sets @filters_map to filter reblogged status' do + matched_filters = presenter.filters_map[statuses[1].reblog_of_id] + expect(matched_filters.size).to eq 1 + + expect(matched_filters[0].filter.title).to eq 'filter1' + expect(matched_filters[0].status_matches).to eq [statuses[1].reblog_of_id] + end + end end end From afb8bc97d08c2738da7873ca42fea68e4672d65b Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 25 Aug 2022 04:29:00 +0200 Subject: [PATCH 323/652] Fix quickly switching notification filters resulting in empty or incorrect list (#18960) --- app/javascript/mastodon/actions/notifications.js | 6 +++--- app/javascript/mastodon/reducers/notifications.js | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/javascript/mastodon/actions/notifications.js b/app/javascript/mastodon/actions/notifications.js index 3c42f71da..7f62e6c04 100644 --- a/app/javascript/mastodon/actions/notifications.js +++ b/app/javascript/mastodon/actions/notifications.js @@ -141,13 +141,13 @@ const excludeTypesFromFilter = filter => { const noOp = () => {}; -export function expandNotifications({ maxId } = {}, done = noOp) { +export function expandNotifications({ maxId, forceLoad } = {}, done = noOp) { return (dispatch, getState) => { const activeFilter = getState().getIn(['settings', 'notifications', 'quickFilter', 'active']); const notifications = getState().get('notifications'); const isLoadingMore = !!maxId; - if (notifications.get('isLoading')) { + if (notifications.get('isLoading') && !forceLoad) { done(); return; } @@ -243,7 +243,7 @@ export function setFilter (filterType) { path: ['notifications', 'quickFilter', 'active'], value: filterType, }); - dispatch(expandNotifications()); + dispatch(expandNotifications({ forceLoad: true })); dispatch(saveSettings()); }; }; diff --git a/app/javascript/mastodon/reducers/notifications.js b/app/javascript/mastodon/reducers/notifications.js index 4563118ea..eb34edb63 100644 --- a/app/javascript/mastodon/reducers/notifications.js +++ b/app/javascript/mastodon/reducers/notifications.js @@ -41,7 +41,7 @@ const initialState = ImmutableMap({ lastReadId: '0', readMarkerId: '0', isTabVisible: true, - isLoading: false, + isLoading: 0, browserSupport: false, browserPermission: 'default', }); @@ -115,7 +115,7 @@ const expandNormalizedNotifications = (state, notifications, next, isLoadingRece } } - mutable.set('isLoading', false); + mutable.update('isLoading', (nbLoading) => nbLoading - 1); }); }; @@ -214,9 +214,9 @@ export default function notifications(state = initialState, action) { case NOTIFICATIONS_LOAD_PENDING: return state.update('items', list => state.get('pendingItems').concat(list.take(40))).set('pendingItems', ImmutableList()).set('unread', 0); case NOTIFICATIONS_EXPAND_REQUEST: - return state.set('isLoading', true); + return state.update('isLoading', (nbLoading) => nbLoading + 1); case NOTIFICATIONS_EXPAND_FAIL: - return state.set('isLoading', false); + return state.update('isLoading', (nbLoading) => nbLoading - 1); case NOTIFICATIONS_FILTER_SET: return state.set('items', ImmutableList()).set('pendingItems', ImmutableList()).set('hasMore', true); case NOTIFICATIONS_SCROLL_TOP: From ba745ca99a4ce4b953e11776827aabb68d621e79 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 25 Aug 2022 04:30:53 +0200 Subject: [PATCH 325/652] Fix media modal link button (#18877) Fixes regression from #18697 --- app/javascript/mastodon/components/icon_button.js | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/app/javascript/mastodon/components/icon_button.js b/app/javascript/mastodon/components/icon_button.js index 81743a1db..47945c475 100644 --- a/app/javascript/mastodon/components/icon_button.js +++ b/app/javascript/mastodon/components/icon_button.js @@ -131,17 +131,9 @@ export default class IconButton extends React.PureComponent { ); - if (href) { - return ( - + if (href && !this.prop) { + contents = ( + {contents} ); From 03241d884eb93c59695b4bad98c1725bdc544824 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 25 Aug 2022 04:31:10 +0200 Subject: [PATCH 326/652] Add option for EMAIL_DOMAIN_DENYLIST/EMAIL_DOMAIN_ALLOWLIST to apply after confirmation (#18642) Fixes #18620 --- app/models/user.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 60abaf77e..9833300cd 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -94,7 +94,7 @@ class User < ApplicationRecord validates :invite_request, presence: true, on: :create, if: :invite_text_required? validates :locale, inclusion: I18n.available_locales.map(&:to_s), if: :locale? - validates_with BlacklistedEmailValidator, if: -> { !confirmed? } + validates_with BlacklistedEmailValidator, if: -> { ENV['EMAIL_DOMAIN_LISTS_APPLY_AFTER_CONFIRMATION'] == 'true' || !confirmed? } validates_with EmailMxValidator, if: :validate_email_dns? validates :agreement, acceptance: { allow_nil: false, accept: [true, 'true', '1'] }, on: :create From af9c9936dd8c87746c9afa128483a93ad21a8b7e Mon Sep 17 00:00:00 2001 From: Arya K <73596856+gi-yt@users.noreply.github.com> Date: Thu, 25 Aug 2022 08:07:09 +0530 Subject: [PATCH 328/652] Fix I2P HTTPS redirect (#18929) --- config/environments/production.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/environments/production.rb b/config/environments/production.rb index 514c08cff..f41a0f197 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -47,7 +47,7 @@ Rails.application.configure do config.force_ssl = true config.ssl_options = { redirect: { - exclude: -> request { request.path.start_with?('/health') || request.headers["Host"].end_with?('.onion') } + exclude: -> request { request.path.start_with?('/health') || request.headers["Host"].end_with?('.onion') || request.headers["Host"].end_with?('.i2p') } } } From 66b8abf218a87e65fab8a7fae6fc6ea73c41d750 Mon Sep 17 00:00:00 2001 From: Takeshi Umeda Date: Thu, 25 Aug 2022 11:37:40 +0900 Subject: [PATCH 329/652] Fix case where boolean was passed to onFilter on StatusActionBar (#18923) --- app/javascript/mastodon/components/status.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js index d36311c67..6fc132bf5 100644 --- a/app/javascript/mastodon/components/status.js +++ b/app/javascript/mastodon/components/status.js @@ -516,7 +516,7 @@ class Status extends ImmutablePureComponent { {media} - +
    From 5d70a16a1417e53b0c6cc97def9688fda21f337c Mon Sep 17 00:00:00 2001 From: Takeshi Umeda Date: Thu, 25 Aug 2022 11:38:01 +0900 Subject: [PATCH 330/652] Fix action type for unfollowHashtag (#18924) --- app/javascript/mastodon/actions/tags.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/javascript/mastodon/actions/tags.js b/app/javascript/mastodon/actions/tags.js index 216e5b541..37e79d4cb 100644 --- a/app/javascript/mastodon/actions/tags.js +++ b/app/javascript/mastodon/actions/tags.js @@ -75,18 +75,18 @@ export const unfollowHashtag = name => (dispatch, getState) => { }; export const unfollowHashtagRequest = name => ({ - type: HASHTAG_FETCH_REQUEST, + type: HASHTAG_UNFOLLOW_REQUEST, name, }); export const unfollowHashtagSuccess = (name, tag) => ({ - type: HASHTAG_FETCH_SUCCESS, + type: HASHTAG_UNFOLLOW_SUCCESS, name, tag, }); export const unfollowHashtagFail = (name, error) => ({ - type: HASHTAG_FETCH_FAIL, + type: HASHTAG_UNFOLLOW_FAIL, name, error, }); From 42ff4dce412752a05c2e3b990c93b08cb46ffd88 Mon Sep 17 00:00:00 2001 From: Jeong Arm Date: Thu, 25 Aug 2022 11:38:34 +0900 Subject: [PATCH 331/652] Use type="color" on badge color input field (#18825) This informs browser to use interactive color picker --- app/views/admin/roles/_form.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/admin/roles/_form.html.haml b/app/views/admin/roles/_form.html.haml index 9beaf619f..31f78f240 100644 --- a/app/views/admin/roles/_form.html.haml +++ b/app/views/admin/roles/_form.html.haml @@ -13,7 +13,7 @@ = f.input :position, wrapper: :with_label, input_html: { max: current_user.role.position - 1 } .fields-group - = f.input :color, wrapper: :with_label, input_html: { placeholder: '#000000' } + = f.input :color, wrapper: :with_label, input_html: { placeholder: '#000000', type: 'color' } %hr.spacer/ From 63a5514b29d44520058260cfb64c9fbf256e366a Mon Sep 17 00:00:00 2001 From: Alex Nordlund Date: Thu, 25 Aug 2022 04:39:11 +0200 Subject: [PATCH 332/652] Allow S3 to use an existing secret (#18997) --- chart/templates/deployment-web.yaml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/chart/templates/deployment-web.yaml b/chart/templates/deployment-web.yaml index 5e22ca539..ab722c77b 100644 --- a/chart/templates/deployment-web.yaml +++ b/chart/templates/deployment-web.yaml @@ -70,6 +70,18 @@ spec: key: redis-password - name: "PORT" value: {{ .Values.mastodon.web.port | quote }} + {{- if (and .Values.mastodon.s3.enabled .Values.mastodon.s3.existingSecret) }} + - name: "AWS_SECRET_ACCESS_KEY" + valueFrom: + secretKeyRef: + name: {{ .Values.mastodon.s3.existingSecret }} + key: AWS_SECRET_ACCESS_KEY + - name: "AWS_ACCESS_KEY_ID" + valueFrom: + secretKeyRef: + name: {{ .Values.mastodon.s3.existingSecret }} + key: AWS_ACCESS_KEY_ID + {{- end -}} {{- if (not .Values.mastodon.s3.enabled) }} volumeMounts: - name: assets From e682975afd9d476eaf938dfe753debfc20d4e603 Mon Sep 17 00:00:00 2001 From: Jeong Arm Date: Thu, 25 Aug 2022 11:40:17 +0900 Subject: [PATCH 333/652] Add '--days' option to tootctl media refresh (#18425) * Add '--days' option to tootctl media refresh * Fix undefined scope --- lib/mastodon/media_cli.rb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/mastodon/media_cli.rb b/lib/mastodon/media_cli.rb index 36ca71844..4904cc5eb 100644 --- a/lib/mastodon/media_cli.rb +++ b/lib/mastodon/media_cli.rb @@ -187,6 +187,7 @@ module Mastodon option :account, type: :string option :domain, type: :string option :status, type: :numeric + option :days, type: :numeric option :concurrency, type: :numeric, default: 5, aliases: [:c] option :verbose, type: :boolean, default: false, aliases: [:v] option :dry_run, type: :boolean, default: false @@ -204,6 +205,8 @@ module Mastodon Use the --domain option to download attachments from a specific domain. + Use the --days option to limit attachments created within days. + By default, attachments that are believed to be already downloaded will not be re-downloaded. To force re-download of every URL, use --force. DESC @@ -224,10 +227,16 @@ module Mastodon scope = MediaAttachment.where(account_id: account.id) elsif options[:domain] scope = MediaAttachment.joins(:account).merge(Account.by_domain_and_subdomains(options[:domain])) + elsif options[:days].present? + scope = MediaAttachment.remote else exit(1) end + if options[:days].present? + scope = scope.where('id > ?', Mastodon::Snowflake.id_at(options[:days].days.ago, with_random: false)) + end + processed, aggregate = parallelize_with_progress(scope) do |media_attachment| next if media_attachment.remote_url.blank? || (!options[:force] && media_attachment.file_file_name.present?) next if DomainBlock.reject_media?(media_attachment.account.domain) From 1165943968f8c79cfaccf30c392b14b4930d68e6 Mon Sep 17 00:00:00 2001 From: James Smith <119005+jgsmith@users.noreply.github.com> Date: Wed, 24 Aug 2022 22:40:38 -0400 Subject: [PATCH 334/652] Mark job pods not to use Istio's envoy sidecar (#18415) * Mark job pods not to use Istio's envoy sidecar Istio injects sidecars into pods to implement mTLS between pods. Jobs usually don't know about this, so they don't signal the Envoy process to stop when the job finishes. Since at least one process is running in the pod, Kubernetes doesn't consider the job to be completed, so it lingers. By adding the `sidecar.istio.io/inject` annotation set to `"false"`, we let Istio know that it should not inject the sidecar. If Istio is not installed, then this has no impact. * Support arbitrary job annotations in the Helm chart Rather than focus on Istio, this allows arbitrary annotations for job pods. * Add in-line documentation for pod/job annotations --- chart/templates/cronjob-media-remove.yaml | 4 ++++ chart/templates/job-assets-precompile.yaml | 4 ++++ chart/templates/job-chewy-upgrade.yaml | 4 ++++ chart/templates/job-create-admin.yaml | 4 ++++ chart/templates/job-db-migrate.yaml | 4 ++++ chart/values.yaml | 6 ++++++ 6 files changed, 26 insertions(+) diff --git a/chart/templates/cronjob-media-remove.yaml b/chart/templates/cronjob-media-remove.yaml index 726e100cf..160aee204 100644 --- a/chart/templates/cronjob-media-remove.yaml +++ b/chart/templates/cronjob-media-remove.yaml @@ -12,6 +12,10 @@ spec: template: metadata: name: {{ include "mastodon.fullname" . }}-media-remove + {{- with .Values.jobAnnotations }} + annotations: + {{- toYaml . | nindent 12 }} + {{- end }} spec: restartPolicy: OnFailure {{- if (not .Values.mastodon.s3.enabled) }} diff --git a/chart/templates/job-assets-precompile.yaml b/chart/templates/job-assets-precompile.yaml index 4aa8d1407..faa51a20d 100644 --- a/chart/templates/job-assets-precompile.yaml +++ b/chart/templates/job-assets-precompile.yaml @@ -12,6 +12,10 @@ spec: template: metadata: name: {{ include "mastodon.fullname" . }}-assets-precompile + {{- with .Values.jobAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} spec: restartPolicy: Never {{- if (not .Values.mastodon.s3.enabled) }} diff --git a/chart/templates/job-chewy-upgrade.yaml b/chart/templates/job-chewy-upgrade.yaml index 16b4f75a7..ae6fb38e1 100644 --- a/chart/templates/job-chewy-upgrade.yaml +++ b/chart/templates/job-chewy-upgrade.yaml @@ -13,6 +13,10 @@ spec: template: metadata: name: {{ include "mastodon.fullname" . }}-chewy-upgrade + {{- with .Values.jobAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} spec: restartPolicy: Never {{- if (not .Values.mastodon.s3.enabled) }} diff --git a/chart/templates/job-create-admin.yaml b/chart/templates/job-create-admin.yaml index 486c0c357..659c00671 100644 --- a/chart/templates/job-create-admin.yaml +++ b/chart/templates/job-create-admin.yaml @@ -13,6 +13,10 @@ spec: template: metadata: name: {{ include "mastodon.fullname" . }}-create-admin + {{- with .Values.jobAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} spec: restartPolicy: Never {{- if (not .Values.mastodon.s3.enabled) }} diff --git a/chart/templates/job-db-migrate.yaml b/chart/templates/job-db-migrate.yaml index 41ece64a2..8e4f70dfb 100644 --- a/chart/templates/job-db-migrate.yaml +++ b/chart/templates/job-db-migrate.yaml @@ -12,6 +12,10 @@ spec: template: metadata: name: {{ include "mastodon.fullname" . }}-db-migrate + {{- with .Values.jobAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} spec: restartPolicy: Never {{- if (not .Values.mastodon.s3.enabled) }} diff --git a/chart/values.yaml b/chart/values.yaml index bd723567f..4b18a9dfa 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -281,8 +281,14 @@ serviceAccount: # If not set and create is true, a name is generated using the fullname template name: "" +# Kubernetes manages pods for jobs and pods for deployments differently, so you might +# need to apply different annotations to the two different sets of pods. The annotations +# set with podAnnotations will be added to all deployment-managed pods. podAnnotations: {} +# The annotations set with jobAnnotations will be added to all job pods. +jobAnnotations: {} + resources: {} # We usually recommend not to specify default resources and to leave this as a conscious # choice for the user. This also increases chances charts run on environments with little From 861b35dd54d266bc0a40b3cacb28e5b82ff6faaa Mon Sep 17 00:00:00 2001 From: Jeong Arm Date: Thu, 25 Aug 2022 11:41:14 +0900 Subject: [PATCH 335/652] Support "http_hidden_proxy" ENV var for hidden service only proxy (#18427) * Support "http_hidden_proxy" ENV var for hidden service only proxy * Fallback to http_proxy if http_hidden_proxy is not set --- app/lib/request.rb | 18 +++++++++++++++--- config/initializers/http_client_proxy.rb | 17 +++++++++++++++++ 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/app/lib/request.rb b/app/lib/request.rb index 4289da933..f5123d776 100644 --- a/app/lib/request.rb +++ b/app/lib/request.rb @@ -31,7 +31,7 @@ class Request @url = Addressable::URI.parse(url).normalize @http_client = options.delete(:http_client) @options = options.merge(socket_class: use_proxy? ? ProxySocket : Socket) - @options = @options.merge(Rails.configuration.x.http_client_proxy) if use_proxy? + @options = @options.merge(proxy_url) if use_proxy? @headers = {} raise Mastodon::HostValidationError, 'Instance does not support hidden service connections' if block_hidden_service? @@ -141,11 +141,23 @@ class Request end def use_proxy? - Rails.configuration.x.http_client_proxy.present? + proxy_url.present? + end + + def proxy_url + if hidden_service? && Rails.configuration.x.http_client_hidden_proxy.present? + Rails.configuration.x.http_client_hidden_proxy + else + Rails.configuration.x.http_client_proxy + end end def block_hidden_service? - !Rails.configuration.x.access_to_hidden_service && /\.(onion|i2p)$/.match?(@url.host) + !Rails.configuration.x.access_to_hidden_service && hidden_service? + end + + def hidden_service? + /\.(onion|i2p)$/.match?(@url.host) end module ClientLimit diff --git a/config/initializers/http_client_proxy.rb b/config/initializers/http_client_proxy.rb index 7a9b7b86d..b29e9edd7 100644 --- a/config/initializers/http_client_proxy.rb +++ b/config/initializers/http_client_proxy.rb @@ -18,5 +18,22 @@ Rails.application.configure do }.compact end + if ENV['http_hidden_proxy'].present? + proxy = URI.parse(ENV['http_hidden_proxy']) + + raise "Unsupported proxy type: #{proxy.scheme}" unless %w(http https).include? proxy.scheme + raise "No proxy host" unless proxy.host + + host = proxy.host + host = host[1...-1] if host[0] == '[' # for IPv6 address + + config.x.http_client_hidden_proxy[:proxy] = { + proxy_address: host, + proxy_port: proxy.port, + proxy_username: proxy.user, + proxy_password: proxy.password, + }.compact + end + config.x.access_to_hidden_service = ENV['ALLOW_ACCESS_TO_HIDDEN_SERVICE'] == 'true' end From 3efa8da2d6867aeaeb96d5504afbbdf126f0bd2f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 25 Aug 2022 12:40:19 +0200 Subject: [PATCH 336/652] New Crowdin updates (#18972) * New translations en.json (Hindi) * New translations en.json (Malay) * New translations en.json (Telugu) * New translations en.json (English, United Kingdom) * New translations en.json (Uyghur) * New translations en.json (Standard Moroccan Tamazight) * New translations en.json (Dutch) * New translations en.json (Portuguese) * New translations en.json (Ukrainian) * New translations en.json (Chinese Traditional) * New translations en.json (Chinese Simplified) * New translations en.json (Danish) * New translations en.json (Spanish, Argentina) * New translations en.json (Korean) * New translations en.json (Catalan) * New translations en.json (Hungarian) * New translations en.json (Slovenian) * New translations en.json (Galician) * New translations en.json (Greek) * New translations en.json (Polish) * New translations en.json (Turkish) * New translations devise.en.yml (Turkish) * New translations doorkeeper.en.yml (Turkish) * New translations en.json (Albanian) * New translations en.json (Swedish) * New translations en.json (Turkish) * New translations en.json (Icelandic) * New translations en.json (Latvian) * New translations en.json (Spanish) * New translations en.json (German) * New translations en.json (Italian) * New translations en.json (Ido) * New translations en.json (Russian) * New translations en.json (Vietnamese) * New translations en.yml (Esperanto) * New translations en.json (Kurmanji (Kurdish)) * New translations en.yml (Kurmanji (Kurdish)) * New translations doorkeeper.en.yml (Kurmanji (Kurdish)) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Kurmanji (Kurdish)) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Finnish) * New translations simple_form.en.yml (Finnish) * New translations simple_form.en.yml (Finnish) * New translations en.yml (Finnish) * New translations en.yml (Finnish) * New translations en.json (Thai) * New translations en.json (Russian) * New translations en.json (Chinese Simplified) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations en.json (Kurmanji (Kurdish)) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (German) * New translations simple_form.en.yml (Turkish) * New translations simple_form.en.yml (Norwegian) * New translations simple_form.en.yml (Polish) * New translations simple_form.en.yml (Portuguese) * New translations simple_form.en.yml (Slovak) * New translations simple_form.en.yml (Slovenian) * New translations simple_form.en.yml (Albanian) * New translations simple_form.en.yml (Serbian (Cyrillic)) * New translations simple_form.en.yml (Swedish) * New translations simple_form.en.yml (Ukrainian) * New translations simple_form.en.yml (Chinese Simplified) * New translations simple_form.en.yml (Chinese Traditional) * New translations simple_form.en.yml (Vietnamese) * New translations simple_form.en.yml (Galician) * New translations simple_form.en.yml (Icelandic) * New translations simple_form.en.yml (Portuguese, Brazilian) * New translations simple_form.en.yml (Indonesian) * New translations simple_form.en.yml (Persian) * New translations simple_form.en.yml (Tamil) * New translations simple_form.en.yml (Dutch) * New translations simple_form.en.yml (Czech) * New translations simple_form.en.yml (Russian) * New translations simple_form.en.yml (Norwegian Nynorsk) * New translations simple_form.en.yml (Romanian) * New translations simple_form.en.yml (French) * New translations simple_form.en.yml (Spanish) * New translations simple_form.en.yml (Afrikaans) * New translations simple_form.en.yml (Arabic) * New translations simple_form.en.yml (Bulgarian) * New translations simple_form.en.yml (Catalan) * New translations simple_form.en.yml (Danish) * New translations simple_form.en.yml (Korean) * New translations simple_form.en.yml (Greek) * New translations simple_form.en.yml (Frisian) * New translations simple_form.en.yml (Basque) * New translations simple_form.en.yml (Hebrew) * New translations simple_form.en.yml (Hungarian) * New translations simple_form.en.yml (Armenian) * New translations simple_form.en.yml (Italian) * New translations simple_form.en.yml (Japanese) * New translations simple_form.en.yml (Georgian) * New translations simple_form.en.yml (Spanish, Argentina) * New translations simple_form.en.yml (Spanish, Mexico) * New translations simple_form.en.yml (Sorani (Kurdish)) * New translations simple_form.en.yml (Scottish Gaelic) * New translations simple_form.en.yml (Asturian) * New translations simple_form.en.yml (Occitan) * New translations simple_form.en.yml (Serbian (Latin)) * New translations simple_form.en.yml (Corsican) * New translations simple_form.en.yml (Breton) * New translations simple_form.en.yml (Sardinian) * New translations simple_form.en.yml (Kabyle) * New translations simple_form.en.yml (Ido) * New translations simple_form.en.yml (Sinhala) * New translations simple_form.en.yml (Malayalam) * New translations simple_form.en.yml (Bengali) * New translations simple_form.en.yml (Thai) * New translations simple_form.en.yml (Croatian) * New translations simple_form.en.yml (Kazakh) * New translations simple_form.en.yml (Estonian) * New translations simple_form.en.yml (Latvian) * New translations simple_form.en.yml (Tatar) * New translations simple_form.en.yml (Welsh) * New translations simple_form.en.yml (Esperanto) * New translations simple_form.en.yml (Chinese Traditional, Hong Kong) * New translations simple_form.en.yml (Standard Moroccan Tamazight) * New translations en.yml (Thai) * New translations simple_form.en.yml (Russian) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Spanish) * New translations simple_form.en.yml (Catalan) * New translations simple_form.en.yml (Greek) * New translations simple_form.en.yml (Hungarian) * New translations simple_form.en.yml (Portuguese) * New translations simple_form.en.yml (Icelandic) * New translations simple_form.en.yml (Thai) * New translations simple_form.en.yml (Latvian) * New translations simple_form.en.yml (Danish) * New translations simple_form.en.yml (German) * New translations simple_form.en.yml (Catalan) * New translations simple_form.en.yml (Italian) * New translations simple_form.en.yml (Ukrainian) * New translations en.yml (Ukrainian) * New translations simple_form.en.yml (Russian) * New translations simple_form.en.yml (Spanish, Argentina) * New translations simple_form.en.yml (Korean) * New translations doorkeeper.en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Chinese Traditional) * New translations en.yml (Albanian) * New translations en.yml (Korean) * New translations en.yml (Lithuanian) * New translations en.yml (Macedonian) * New translations en.yml (Dutch) * New translations en.yml (Norwegian) * New translations en.yml (Punjabi) * New translations en.yml (Polish) * New translations en.yml (Portuguese) * New translations en.yml (Slovenian) * New translations en.yml (Serbian (Cyrillic)) * New translations en.yml (Italian) * New translations en.yml (Swedish) * New translations en.yml (Turkish) * New translations en.yml (Chinese Simplified) * New translations en.yml (Chinese Traditional) * New translations en.yml (Urdu (Pakistan)) * New translations en.yml (Vietnamese) * New translations en.yml (Galician) * New translations en.yml (Icelandic) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Indonesian) * New translations en.yml (Georgian) * New translations en.yml (Armenian) * New translations en.yml (Spanish) * New translations en.yml (Japanese) * New translations en.yml (German) * New translations en.yml (Russian) * New translations en.yml (Slovak) * New translations en.yml (Norwegian Nynorsk) * New translations en.yml (Romanian) * New translations en.yml (French) * New translations en.yml (Afrikaans) * New translations en.yml (Hungarian) * New translations en.yml (Arabic) * New translations en.yml (Bulgarian) * New translations en.yml (Catalan) * New translations en.yml (Czech) * New translations en.yml (Danish) * New translations en.yml (Greek) * New translations en.yml (Frisian) * New translations en.yml (Basque) * New translations en.yml (Irish) * New translations en.yml (Hebrew) * New translations en.yml (Persian) * New translations en.yml (Tamil) * New translations en.yml (Sorani (Kurdish)) * New translations en.yml (Cornish) * New translations en.yml (Kannada) * New translations en.yml (Scottish Gaelic) * New translations en.yml (Asturian) * New translations en.yml (Occitan) * New translations en.yml (Serbian (Latin)) * New translations en.yml (Corsican) * New translations en.yml (Breton) * New translations en.yml (Sardinian) * New translations en.yml (Sanskrit) * New translations en.yml (Kabyle) * New translations en.yml (Ido) * New translations en.yml (Taigi) * New translations en.yml (Silesian) * New translations en.yml (Sinhala) * New translations en.yml (Malayalam) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Latvian) * New translations en.yml (Spanish, Mexico) * New translations en.yml (Bengali) * New translations en.yml (Marathi) * New translations en.yml (Croatian) * New translations en.yml (Kazakh) * New translations en.yml (Estonian) * New translations en.yml (Hindi) * New translations en.yml (Tatar) * New translations en.yml (Malay) * New translations en.yml (Telugu) * New translations en.yml (English, United Kingdom) * New translations en.yml (Welsh) * New translations en.yml (Uyghur) * New translations en.yml (Chinese Traditional, Hong Kong) * New translations en.yml (Standard Moroccan Tamazight) * New translations simple_form.en.yml (Chinese Simplified) * New translations simple_form.en.yml (Galician) * New translations en.yml (Chinese Simplified) * New translations en.yml (Galician) * New translations simple_form.en.yml (Swedish) * New translations en.yml (Chinese Traditional) * New translations simple_form.en.yml (Slovenian) * New translations en.yml (Polish) * New translations en.yml (Slovenian) * New translations en.yml (Chinese Simplified) * New translations simple_form.en.yml (Turkish) * New translations en.yml (Polish) * New translations en.yml (Turkish) * New translations simple_form.en.yml (Vietnamese) * New translations en.yml (Spanish) * New translations en.yml (Danish) * New translations en.yml (Korean) * New translations en.yml (Vietnamese) * New translations en.yml (Icelandic) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 17 +++ app/javascript/mastodon/locales/ar.json | 17 +++ app/javascript/mastodon/locales/ast.json | 17 +++ app/javascript/mastodon/locales/bg.json | 17 +++ app/javascript/mastodon/locales/bn.json | 17 +++ app/javascript/mastodon/locales/br.json | 17 +++ app/javascript/mastodon/locales/ca.json | 19 ++- app/javascript/mastodon/locales/ckb.json | 17 +++ app/javascript/mastodon/locales/co.json | 17 +++ app/javascript/mastodon/locales/cs.json | 17 +++ app/javascript/mastodon/locales/cy.json | 17 +++ app/javascript/mastodon/locales/da.json | 19 ++- app/javascript/mastodon/locales/de.json | 19 ++- .../mastodon/locales/defaultMessages.json | 95 ++++++++++++++ app/javascript/mastodon/locales/el.json | 19 ++- app/javascript/mastodon/locales/en-GB.json | 17 +++ app/javascript/mastodon/locales/en.json | 17 +++ app/javascript/mastodon/locales/eo.json | 17 +++ app/javascript/mastodon/locales/es-AR.json | 19 ++- app/javascript/mastodon/locales/es-MX.json | 21 +++- app/javascript/mastodon/locales/es.json | 19 ++- app/javascript/mastodon/locales/et.json | 17 +++ app/javascript/mastodon/locales/eu.json | 17 +++ app/javascript/mastodon/locales/fa.json | 17 +++ app/javascript/mastodon/locales/fi.json | 19 ++- app/javascript/mastodon/locales/fr.json | 17 +++ app/javascript/mastodon/locales/fy.json | 17 +++ app/javascript/mastodon/locales/ga.json | 17 +++ app/javascript/mastodon/locales/gd.json | 17 +++ app/javascript/mastodon/locales/gl.json | 21 +++- app/javascript/mastodon/locales/he.json | 17 +++ app/javascript/mastodon/locales/hi.json | 17 +++ app/javascript/mastodon/locales/hr.json | 17 +++ app/javascript/mastodon/locales/hu.json | 19 ++- app/javascript/mastodon/locales/hy.json | 17 +++ app/javascript/mastodon/locales/id.json | 17 +++ app/javascript/mastodon/locales/io.json | 19 ++- app/javascript/mastodon/locales/is.json | 19 ++- app/javascript/mastodon/locales/it.json | 19 ++- app/javascript/mastodon/locales/ja.json | 17 +++ app/javascript/mastodon/locales/ka.json | 17 +++ app/javascript/mastodon/locales/kab.json | 17 +++ app/javascript/mastodon/locales/kk.json | 17 +++ app/javascript/mastodon/locales/kn.json | 17 +++ app/javascript/mastodon/locales/ko.json | 19 ++- app/javascript/mastodon/locales/ku.json | 65 ++++++---- app/javascript/mastodon/locales/kw.json | 17 +++ app/javascript/mastodon/locales/lt.json | 17 +++ app/javascript/mastodon/locales/lv.json | 19 ++- app/javascript/mastodon/locales/mk.json | 17 +++ app/javascript/mastodon/locales/ml.json | 17 +++ app/javascript/mastodon/locales/mr.json | 17 +++ app/javascript/mastodon/locales/ms.json | 17 +++ app/javascript/mastodon/locales/nl.json | 19 ++- app/javascript/mastodon/locales/nn.json | 17 +++ app/javascript/mastodon/locales/no.json | 17 +++ app/javascript/mastodon/locales/oc.json | 17 +++ app/javascript/mastodon/locales/pa.json | 17 +++ app/javascript/mastodon/locales/pl.json | 19 ++- app/javascript/mastodon/locales/pt-BR.json | 17 +++ app/javascript/mastodon/locales/pt-PT.json | 19 ++- app/javascript/mastodon/locales/ro.json | 17 +++ app/javascript/mastodon/locales/ru.json | 21 +++- app/javascript/mastodon/locales/sa.json | 17 +++ app/javascript/mastodon/locales/sc.json | 17 +++ app/javascript/mastodon/locales/si.json | 17 +++ app/javascript/mastodon/locales/sk.json | 17 +++ app/javascript/mastodon/locales/sl.json | 19 ++- app/javascript/mastodon/locales/sq.json | 19 ++- app/javascript/mastodon/locales/sr-Latn.json | 17 +++ app/javascript/mastodon/locales/sr.json | 17 +++ app/javascript/mastodon/locales/sv.json | 19 ++- app/javascript/mastodon/locales/szl.json | 17 +++ app/javascript/mastodon/locales/ta.json | 17 +++ app/javascript/mastodon/locales/tai.json | 17 +++ app/javascript/mastodon/locales/te.json | 17 +++ app/javascript/mastodon/locales/th.json | 19 ++- app/javascript/mastodon/locales/tr.json | 33 +++-- app/javascript/mastodon/locales/tt.json | 17 +++ app/javascript/mastodon/locales/ug.json | 17 +++ app/javascript/mastodon/locales/uk.json | 19 ++- app/javascript/mastodon/locales/ur.json | 17 +++ app/javascript/mastodon/locales/vi.json | 19 ++- app/javascript/mastodon/locales/zgh.json | 17 +++ app/javascript/mastodon/locales/zh-CN.json | 31 +++-- app/javascript/mastodon/locales/zh-HK.json | 17 +++ app/javascript/mastodon/locales/zh-TW.json | 19 ++- config/locales/da.yml | 15 +++ config/locales/devise.tr.yml | 10 +- config/locales/doorkeeper.ku.yml | 6 +- config/locales/doorkeeper.tr.yml | 2 +- config/locales/eo.yml | 2 +- config/locales/es-AR.yml | 15 +++ config/locales/es.yml | 15 +++ config/locales/fi.yml | 119 ++++++++++++++++++ config/locales/gl.yml | 15 +++ config/locales/is.yml | 15 +++ config/locales/ko.yml | 13 ++ config/locales/ku.yml | 72 +++++++---- config/locales/pl.yml | 9 ++ config/locales/simple_form.ca.yml | 2 + config/locales/simple_form.da.yml | 2 + config/locales/simple_form.de.yml | 2 + config/locales/simple_form.el.yml | 2 + config/locales/simple_form.es-AR.yml | 2 + config/locales/simple_form.es.yml | 2 + config/locales/simple_form.fi.yml | 14 +++ config/locales/simple_form.gl.yml | 2 + config/locales/simple_form.hu.yml | 2 + config/locales/simple_form.is.yml | 2 + config/locales/simple_form.it.yml | 2 + config/locales/simple_form.ko.yml | 2 + config/locales/simple_form.ku.yml | 19 +++ config/locales/simple_form.lv.yml | 2 + config/locales/simple_form.pt-PT.yml | 2 + config/locales/simple_form.ru.yml | 2 + config/locales/simple_form.sl.yml | 2 + config/locales/simple_form.sv.yml | 2 + config/locales/simple_form.th.yml | 2 + config/locales/simple_form.tr.yml | 2 + config/locales/simple_form.uk.yml | 2 + config/locales/simple_form.vi.yml | 2 + config/locales/simple_form.zh-CN.yml | 2 + config/locales/simple_form.zh-TW.yml | 2 + config/locales/sl.yml | 19 +++ config/locales/th.yml | 3 + config/locales/tr.yml | 17 ++- config/locales/uk.yml | 12 +- config/locales/vi.yml | 9 ++ config/locales/zh-CN.yml | 13 ++ config/locales/zh-TW.yml | 13 ++ 131 files changed, 2063 insertions(+), 101 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index cb5a70dd4..86d590654 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 45a5beede..220aa14ee 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -197,6 +197,22 @@ "explore.trending_links": "الأخبار", "explore.trending_statuses": "المنشورات", "explore.trending_tags": "الوسوم", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "تم", "follow_recommendations.heading": "تابع الأشخاص الذين ترغب في رؤية منشوراتهم! إليك بعض الاقتراحات.", "follow_recommendations.lead": "ستظهر منشورات الأشخاص الذين تُتابعتهم بترتيب تسلسلي زمني على صفحتك الرئيسية. لا تخف إذا ارتكبت أي أخطاء، تستطيع إلغاء متابعة أي شخص في أي وقت تريد!", @@ -471,6 +487,7 @@ "status.edited_x_times": "عُدّل {count, plural, zero {} one {{count} مرة} two {{count} مرتين} few {{count} مرات} many {{count} مرات} other {{count} مرة}}", "status.embed": "إدماج", "status.favourite": "أضف إلى المفضلة", + "status.filter": "Filter this post", "status.filtered": "مُصفّى", "status.hide": "Hide toot", "status.history.created": "أنشأه {name} {date}", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 289e328f5..dba626299 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -197,6 +197,22 @@ "explore.trending_links": "Noticies", "explore.trending_statuses": "Posts", "explore.trending_tags": "Etiquetes", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Empotrar", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 160219e09..4ded919e0 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Следвайте хора, които харесвате, за да виждате техните съобщения! Ето някои предложения.", "follow_recommendations.lead": "Съобщения от хора, които следвате, ще се показват в хронологичен ред на вашата главна страница. Не се страхувайте, че ще сгрешите, по всяко време много лесно можете да спрете да ги следвате!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Вграждане", "status.favourite": "Предпочитани", + "status.filter": "Filter this post", "status.filtered": "Филтрирано", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index d4626e463..94b0477b5 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "সম্পন্ন", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "এমবেড করতে", "status.favourite": "পছন্দের করতে", + "status.filter": "Filter this post", "status.filtered": "ছাঁকনিদিত", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index c784c697a..50837691f 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -197,6 +197,22 @@ "explore.trending_links": "Keleier", "explore.trending_statuses": "Posts", "explore.trending_tags": "Gerioù-klik", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Graet", "follow_recommendations.heading": "Heuliit tud e plijfe deoc'h lenn toudoù! Setu un tamm alioù.", "follow_recommendations.lead": "Toudoù eus tud heuliet ganeoc'h a zeuio war wel en un urzh amzeroniezhel war ho red degemer. N'ho peus ket aon ober fazioù, gallout a rit paouez heuliañ tud ken aes n'eus forzh pegoulz!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Enframmañ", "status.favourite": "Muiañ-karet", + "status.filter": "Filter this post", "status.filtered": "Silet", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 5549b3952..f67a0f3fc 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Vaja!", "announcement.announcement": "Anunci", "attachments_list.unprocessed": "(sense processar)", - "audio.hide": "Hide audio", + "audio.hide": "Amaga l'àudio", "autosuggest_hashtag.per_week": "{count} per setmana", "boost_modal.combo": "Pots prémer {combo} per evitar-ho el pròxim cop", "bundle_column_error.body": "S'ha produït un error en carregar aquest component.", @@ -197,6 +197,22 @@ "explore.trending_links": "Notícies", "explore.trending_statuses": "Publicacions", "explore.trending_tags": "Etiquetes", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Fet", "follow_recommendations.heading": "Segueix a la gent de la que t'agradaria veure les seves publicacions! Aquí hi ha algunes recomanacions.", "follow_recommendations.lead": "Les publicacions del usuaris que segueixes es mostraran en ordre cronològic en la teva línia de temps Inici. No tinguis por en cometre errors, pots fàcilment deixar de seguir-los en qualsevol moment!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Editat {count, plural, one {{count} vegada} other {{count} vegades}}", "status.embed": "Incrusta", "status.favourite": "Favorit", + "status.filter": "Filter this post", "status.filtered": "Filtrat", "status.hide": "Amaga publicació", "status.history.created": "{name} ha creat {date}", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 1addda370..19d9550d0 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -197,6 +197,22 @@ "explore.trending_links": "هەواڵەکان", "explore.trending_statuses": "نووسراوەکان", "explore.trending_tags": "هاشتاگ", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "تەواو", "follow_recommendations.heading": "شوێن ئەو کەسانە بکەون کە دەتەوێت پۆستەکان ببینیت لە! لێرەدا چەند پێشنیارێک هەیە.", "follow_recommendations.lead": "بابەتەکانی ئەو کەسانەی کە بەدوایدا دەگەڕێیت بە فەرمانی کرۆنۆلۆجی لە خواردنەکانی ماڵەکەت دەردەکەون. مەترسە لە هەڵەکردن، دەتوانیت بە ئاسانی خەڵک هەڵبکەیت هەر کاتێک!", @@ -471,6 +487,7 @@ "status.edited_x_times": "دەستکاریکراوە {count, plural, one {{count} کات} other {{count} کات}}", "status.embed": "نیشتەجێ بکە", "status.favourite": "دڵخواز", + "status.filter": "Filter this post", "status.filtered": "پاڵاوتن", "status.hide": "Hide toot", "status.history.created": "{name} دروستکراوە لە{date}", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 63d214046..5ca3f4a4b 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Fatta", "follow_recommendations.heading": "Siguitate a ghjente da quelli vulete vede i missaghji! Eccu qualchì ricumandazione.", "follow_recommendations.lead": "I missaghji da a ghjente che voi siguitate figureranu in ordine crunulogicu nant'a vostra pagina d'accolta. Ùn timite micca di fà un sbagliu, pudete sempre disabbunavvi d'un contu à ogni mumentu!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Integrà", "status.favourite": "Aghjunghje à i favuriti", + "status.filter": "Filter this post", "status.filtered": "Filtratu", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 7ac077ae5..ef1a13d8f 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -197,6 +197,22 @@ "explore.trending_links": "Zprávy", "explore.trending_statuses": "Příspěvky", "explore.trending_tags": "Hashtagy", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Hotovo", "follow_recommendations.heading": "Sledujte lidi, jejichž příspěvky chcete vidět! Tady jsou nějaké návrhy.", "follow_recommendations.lead": "Příspěvky od lidí, které sledujete, se budou objevovat v chronologickém pořadí ve vaší domovské ose. Nebojte se, že uděláte chybu, můžete lidi stejně snadno kdykoliv přestat sledovat!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Upraven {count, plural, one {{count}krát} few {{count}krát} many {{count}krát} other {{count}krát}}", "status.embed": "Vložit na web", "status.favourite": "Oblíbit", + "status.filter": "Filter this post", "status.filtered": "Filtrováno", "status.hide": "Skrýt příspěvek", "status.history.created": "Uživatel {name} vytvořil {date}", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index f6440db72..cb1c90d69 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -197,6 +197,22 @@ "explore.trending_links": "Newyddion", "explore.trending_statuses": "Postiadau", "explore.trending_tags": "Hashnodau", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Wedi gorffen", "follow_recommendations.heading": "Dilynwch y bobl yr hoffech chi weld eu postiadau! Dyma ambell i awgrymiad.", "follow_recommendations.lead": "Bydd postiadau gan bobl rydych chi'n eu dilyn yn ymddangos mewn trefn amser ar eich ffrwd cartref. Peidiwch â bod ofn gwneud camgymeriadau, gallwch chi ddad-ddilyn pobl yr un mor hawdd unrhyw bryd!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Golygwyd {count, plural, one {unwaith} two {dwywaith} other {{count} gwaith}}", "status.embed": "Plannu", "status.favourite": "Hoffi", + "status.filter": "Filter this post", "status.filtered": "Wedi'i hidlo", "status.hide": "Hide toot", "status.history.created": "{name} greuodd {date}", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index ef7f85a3b..8f015b50d 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Ups!", "announcement.announcement": "Bekendtgørelse", "attachments_list.unprocessed": "(ubehandlet)", - "audio.hide": "Hide audio", + "audio.hide": "Skjul lyd", "autosuggest_hashtag.per_week": "{count} pr. uge", "boost_modal.combo": "Du kan trykke på {combo} for at overspringe dette næste gang", "bundle_column_error.body": "Noget gik galt under indlæsningen af denne komponent.", @@ -197,6 +197,22 @@ "explore.trending_links": "Nyheder", "explore.trending_statuses": "Indlæg", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Udført", "follow_recommendations.heading": "Følg personer du gerne vil se indlæg fra! Her er nogle forslag.", "follow_recommendations.lead": "Indlæg, fra personer du følger, vil fremgå kronologisk ordnet i dit hjemmefeed. Vær ikke bange for at begå fejl, da du altid og meget nemt kan ændre dit valg!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Redigeret {count, plural, one {{count} gang} other {{count} gange}}", "status.embed": "Indlejr", "status.favourite": "Favorit", + "status.filter": "Filter this post", "status.filtered": "Filtreret", "status.hide": "Skjul indlæg", "status.history.created": "{name} oprettet {date}", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 8a9d0f06d..2df1dc0ea 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Hoppla!", "announcement.announcement": "Ankündigung", "attachments_list.unprocessed": "(ausstehend)", - "audio.hide": "Hide audio", + "audio.hide": "Audio stummschalten", "autosuggest_hashtag.per_week": "{count} pro Woche", "boost_modal.combo": "Drücke {combo}, um dieses Fenster zu überspringen", "bundle_column_error.body": "Etwas ist beim Laden schiefgelaufen.", @@ -197,6 +197,22 @@ "explore.trending_links": "Nachrichten", "explore.trending_statuses": "Beiträge", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Fertig", "follow_recommendations.heading": "Folge Leuten, von denen du Beiträge sehen möchtest! Hier sind einige Vorschläge.", "follow_recommendations.lead": "Beiträge von Personen, denen du folgst, werden in chronologischer Reihenfolge auf deiner Startseite angezeigt. Hab keine Angst, Fehler zu machen, du kannst den Leuten jederzeit wieder entfolgen!", @@ -471,6 +487,7 @@ "status.edited_x_times": "{count, plural, one {{count} mal} other {{count} mal}} bearbeitet", "status.embed": "Einbetten", "status.favourite": "Favorisieren", + "status.filter": "Filter this post", "status.filtered": "Gefiltert", "status.hide": "Tröt verbergen", "status.history.created": "{name} erstellte {date}", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 760602f6e..13ef56922 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -635,6 +635,10 @@ { "defaultMessage": "Unblock @{name}", "id": "account.unblock" + }, + { + "defaultMessage": "Filter this post", + "id": "status.filter" } ], "path": "app/javascript/mastodon/components/status_action_bar.json" @@ -1880,6 +1884,84 @@ ], "path": "app/javascript/mastodon/features/favourites/index.json" }, + { + "descriptors": [ + { + "defaultMessage": "Expired filter!", + "id": "filter_modal.added.expired_title" + }, + { + "defaultMessage": "This filter category has expired, you will need to change the expiration date for it to apply.", + "id": "filter_modal.added.expired_explanation" + }, + { + "defaultMessage": "Context mismatch!", + "id": "filter_modal.added.context_mismatch_title" + }, + { + "defaultMessage": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "id": "filter_modal.added.context_mismatch_explanation" + }, + { + "defaultMessage": "settings page", + "id": "filter_modal.added.settings_link" + }, + { + "defaultMessage": "Filter added!", + "id": "filter_modal.added.title" + }, + { + "defaultMessage": "This post has been added to the following filter category: {title}.", + "id": "filter_modal.added.short_explanation" + }, + { + "defaultMessage": "Filter settings", + "id": "filter_modal.added.review_and_configure_title" + }, + { + "defaultMessage": "To review and further configure this filter category, go to the {settings_link}.", + "id": "filter_modal.added.review_and_configure" + }, + { + "defaultMessage": "Done", + "id": "report.close" + } + ], + "path": "app/javascript/mastodon/features/filters/added_to_filter.json" + }, + { + "descriptors": [ + { + "defaultMessage": "Search or create", + "id": "filter_modal.select_filter.search" + }, + { + "defaultMessage": "Clear", + "id": "emoji_button.clear" + }, + { + "defaultMessage": "expired", + "id": "filter_modal.select_filter.expired" + }, + { + "defaultMessage": "does not apply to this context", + "id": "filter_modal.select_filter.context_mismatch" + }, + { + "defaultMessage": "New category: {name}", + "id": "filter_modal.select_filter.prompt_new" + }, + { + "defaultMessage": "Filter this post", + "id": "filter_modal.select_filter.title" + }, + { + "defaultMessage": "Use an existing category or create a new one", + "id": "filter_modal.select_filter.subtitle" + } + ], + "path": "app/javascript/mastodon/features/filters/select_filter.json" + }, { "descriptors": [ { @@ -3408,6 +3490,19 @@ ], "path": "app/javascript/mastodon/features/ui/components/embed_modal.json" }, + { + "descriptors": [ + { + "defaultMessage": "Close", + "id": "lightbox.close" + }, + { + "defaultMessage": "Filter a post", + "id": "filter_modal.title.status" + } + ], + "path": "app/javascript/mastodon/features/ui/components/filter_modal.json" + }, { "descriptors": [ { diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index de96147cf..999f67c73 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Εεπ!", "announcement.announcement": "Ανακοίνωση", "attachments_list.unprocessed": "(μη επεξεργασμένο)", - "audio.hide": "Hide audio", + "audio.hide": "Απόκρυψη αρχείου ήχου", "autosuggest_hashtag.per_week": "{count} ανα εβδομάδα", "boost_modal.combo": "Μπορείς να πατήσεις {combo} για να το προσπεράσεις αυτό την επόμενη φορά", "bundle_column_error.body": "Κάτι πήγε στραβά ενώ φορτωνόταν αυτό το στοιχείο.", @@ -197,6 +197,22 @@ "explore.trending_links": "Νέα", "explore.trending_statuses": "Αναρτήσεις", "explore.trending_tags": "Ετικέτες", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Ολοκληρώθηκε", "follow_recommendations.heading": "Ακολουθήστε άτομα από τα οποία θα θέλατε να βλέπετε δημοσιεύσεις! Ορίστε μερικές προτάσεις.", "follow_recommendations.lead": "Οι αναρτήσεις των ατόμων που ακολουθείτε θα εμφανίζονται με χρονολογική σειρά στη ροή σας. Μη φοβάστε να κάνετε λάθη, καθώς μπορείτε πολύ εύκολα να σταματήσετε να ακολουθείτε άλλα άτομα οποιαδήποτε στιγμή!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Ενσωμάτωσε", "status.favourite": "Σημείωσε ως αγαπημένο", + "status.filter": "Filter this post", "status.filtered": "Φιλτραρισμένα", "status.hide": "Απόκρυψη toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 988793357..2287dcda5 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 22ecee8df..521bc4455 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index a86842d08..082c53de7 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -197,6 +197,22 @@ "explore.trending_links": "Novaĵoj", "explore.trending_statuses": "Afiŝoj", "explore.trending_tags": "Kradvortoj", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Farita", "follow_recommendations.heading": "Sekvi la personojn kies mesaĝojn vi volas vidi! Jen iom da sugestoj.", "follow_recommendations.lead": "La mesaĝoj de personoj kiujn vi sekvas, aperos laŭ kronologia ordo en via hejma templinio. Ne timu erari, vi povas ĉesi sekvi facile iam ajn!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Redactita {count, plural, one {{count} fojon} other {{count} fojojn}}", "status.embed": "Enkorpigi", "status.favourite": "Aldoni al viaj preferaĵoj", + "status.filter": "Filter this post", "status.filtered": "Filtrita", "status.hide": "Kaŝi la mesaĝon", "status.history.created": "{name} kreis {date}", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 9f2bbc2e4..8e4b906a2 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "¡Epa!", "announcement.announcement": "Anuncio", "attachments_list.unprocessed": "[sin procesar]", - "audio.hide": "Hide audio", + "audio.hide": "Ocultar audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Podés hacer clic en {combo} para saltar esto la próxima vez", "bundle_column_error.body": "Algo salió mal al cargar este componente.", @@ -197,6 +197,22 @@ "explore.trending_links": "Noticias", "explore.trending_statuses": "Mensajes", "explore.trending_tags": "Etiquetas", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Listo", "follow_recommendations.heading": "¡Seguí cuentas cuyos mensajes te gustaría ver! Acá tenés algunas sugerencias.", "follow_recommendations.lead": "Los mensajes de las cuentas que seguís aparecerán en orden cronológico en la columna \"Inicio\". No tengás miedo de meter la pata, ¡podés dejar de seguir cuentas fácilmente en cualquier momento!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} veces}}", "status.embed": "Insertar", "status.favourite": "Marcar como favorito", + "status.filter": "Filter this post", "status.filtered": "Filtrado", "status.hide": "Ocultar mensaje", "status.history.created": "Creado por {name} el {date}", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index d8854041b..96f0a59dc 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -197,6 +197,22 @@ "explore.trending_links": "Noticias", "explore.trending_statuses": "Publicaciones", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Hecho", "follow_recommendations.heading": "¡Sigue a gente que publique cosas que te gusten! Aquí tienes algunas sugerencias.", "follow_recommendations.lead": "Las publicaciones de la gente a la que sigas aparecerán ordenadas cronológicamente en Inicio. No tengas miedo de cometer errores, ¡puedes dejarles de seguir en cualquier momento con la misma facilidad!", @@ -221,9 +237,9 @@ "hashtag.column_settings.tag_mode.any": "Cualquiera de estos", "hashtag.column_settings.tag_mode.none": "Ninguno de estos", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Seguir etiqueta", "hashtag.total_volume": "Volumen total en los últimos {days, plural, one {día} other {{days} días}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Dejar de seguir etiqueta", "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar retoots", "home.column_settings.show_replies": "Mostrar respuestas", @@ -471,6 +487,7 @@ "status.edited_x_times": "Editado {count, plural, one {{count} time} other {{count} veces}}", "status.embed": "Incrustado", "status.favourite": "Favorito", + "status.filter": "Filter this post", "status.filtered": "Filtrado", "status.hide": "Ocultar publicación", "status.history.created": "{name} creó {date}", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 928b870e4..5de01d5fc 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "¡Ups!", "announcement.announcement": "Anuncio", "attachments_list.unprocessed": "(sin procesar)", - "audio.hide": "Hide audio", + "audio.hide": "Ocultar audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Puedes hacer clic en {combo} para saltar este aviso la próxima vez", "bundle_column_error.body": "Algo salió mal al cargar este componente.", @@ -197,6 +197,22 @@ "explore.trending_links": "Noticias", "explore.trending_statuses": "Publicaciones", "explore.trending_tags": "Etiquetas", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Hecho", "follow_recommendations.heading": "¡Sigue a gente que publique cosas que te gusten! Aquí tienes algunas sugerencias.", "follow_recommendations.lead": "Las publicaciones de la gente a la que sigas aparecerán ordenadas cronológicamente en Inicio. No tengas miedo de cometer errores, ¡puedes dejarles de seguir en cualquier momento con la misma facilidad!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} veces}}", "status.embed": "Incrustado", "status.favourite": "Favorito", + "status.filter": "Filter this post", "status.filtered": "Filtrado", "status.hide": "Ocultar publicación", "status.history.created": "{name} creó {date}", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 0bac1f3d3..6737111fd 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -197,6 +197,22 @@ "explore.trending_links": "Uudised", "explore.trending_statuses": "Postitused", "explore.trending_tags": "Sildid", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Sängita", "status.favourite": "Lemmik", + "status.filter": "Filter this post", "status.filtered": "Filtreeritud", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 76c520a59..c8062f004 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -197,6 +197,22 @@ "explore.trending_links": "Berriak", "explore.trending_statuses": "Bidalketak", "explore.trending_tags": "Traolak", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Egina", "follow_recommendations.heading": "Jarraitu jendea beren bidalketak ikusteko! Hemen dituzu iradokizun batzuk.", "follow_recommendations.lead": "Jarraitzen duzun jendearen bidalketak ordena kronologikoan agertuko dira zure hasierako jarioan. Ez izan akatsak egiteko beldurrik, jendea jarraitzeari uztea erraza da!", @@ -471,6 +487,7 @@ "status.edited_x_times": "{count, plural, one {behin} other {{count} aldiz}} editatua", "status.embed": "Txertatu", "status.favourite": "Gogokoa", + "status.filter": "Filter this post", "status.filtered": "Iragazita", "status.hide": "Hide toot", "status.history.created": "{name} erabiltzaileak sortua {date}", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index c3876e2e3..775f38475 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -197,6 +197,22 @@ "explore.trending_links": "اخبار", "explore.trending_statuses": "فرسته‌ها", "explore.trending_tags": "هشتگ‌ها", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "انجام شد", "follow_recommendations.heading": "افرادی را که می‌خواهید فرسته‌هایشان را ببینید پی‌گیری کنید! این‌ها تعدادی پیشنهاد هستند.", "follow_recommendations.lead": "فرسته‌های افرادی که دنبال می‌کنید به ترتیب زمانی در خوراک خانه‌تان نشان داده خواهد شد. از اشتباه کردن نترسید. می‌توانید به همین سادگی در هر زمانی از دنبال کردن افراد دست بکشید!", @@ -471,6 +487,7 @@ "status.edited_x_times": "{count, plural, one {{count} مرتبه} other {{count} مرتبه}} ویرایش شد", "status.embed": "جاسازی", "status.favourite": "پسندیدن", + "status.filter": "Filter this post", "status.filtered": "پالوده", "status.hide": "Hide toot", "status.history.created": "توسط {name} در {date} ایجاد شد", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 46316731a..0dece0c51 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Hups!", "announcement.announcement": "Ilmoitus", "attachments_list.unprocessed": "(käsittelemätön)", - "audio.hide": "Hide audio", + "audio.hide": "Piilota ääni", "autosuggest_hashtag.per_week": "{count} viikossa", "boost_modal.combo": "Ensi kerralla voit ohittaa tämän painamalla {combo}", "bundle_column_error.body": "Jokin meni vikaan komponenttia ladattaessa.", @@ -197,6 +197,22 @@ "explore.trending_links": "Uutiset", "explore.trending_statuses": "Viestit", "explore.trending_tags": "Aihetunnisteet", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Valmis", "follow_recommendations.heading": "Seuraa ihmisiä, joilta haluaisit nähdä julkaisuja! Tässä on muutamia ehdotuksia.", "follow_recommendations.lead": "Seuraamiesi julkaisut näkyvät aikajärjestyksessä kotisyötteessä. Älä pelkää seurata vahingossa, voit lopettaa seuraamisen yhtä helposti!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Muokattu {count, plural, one {{count} aika} other {{count} kertaa}}", "status.embed": "Upota", "status.favourite": "Tykkää", + "status.filter": "Filter this post", "status.filtered": "Suodatettu", "status.hide": "Piilota toot", "status.history.created": "{name} luotu {date}", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index b6b8e5d6f..dcac5c880 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -197,6 +197,22 @@ "explore.trending_links": "Actualité", "explore.trending_statuses": "Messages", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Terminé", "follow_recommendations.heading": "Suivez les personnes dont vous aimeriez voir les messages ! Voici quelques suggestions.", "follow_recommendations.lead": "Les messages des personnes que vous suivez apparaîtront par ordre chronologique sur votre fil d'accueil. Ne craignez pas de faire des erreurs, vous pouvez arrêter de suivre les gens aussi facilement à tout moment !", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edité {count, plural, one {{count} fois} other {{count} fois}}", "status.embed": "Intégrer", "status.favourite": "Ajouter aux favoris", + "status.filter": "Filter this post", "status.filtered": "Filtré", "status.hide": "Cacher le pouet", "status.history.created": "créé par {name} {date}", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index 2ff93a6e3..a53a1cf52 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -197,6 +197,22 @@ "explore.trending_links": "Nijs", "explore.trending_statuses": "Berjochten", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Klear", "follow_recommendations.heading": "Folgje minsken wer as jo graach berjochten fan sjen wolle! Hjir binne wat suggestjes.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "{count, plural, one {{count} kear} other {{count} kearen}} bewurke", "status.embed": "Ynslute", "status.favourite": "Favorite", + "status.filter": "Filter this post", "status.filtered": "Filtere", "status.hide": "Hide toot", "status.history.created": "{name} makke dit {date}", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 6a7aff2af..e05c4a41d 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -197,6 +197,22 @@ "explore.trending_links": "Nuacht", "explore.trending_statuses": "Postálacha", "explore.trending_tags": "Haischlibeanna", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Déanta", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Curtha in eagar {count, plural, one {{count} uair amháin} two {{count} uair} few {{count} uair} many {{count} uair} other {{count} uair}}", "status.embed": "Embed", "status.favourite": "Rogha", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index cfaa429a7..c58729271 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -197,6 +197,22 @@ "explore.trending_links": "Naidheachdan", "explore.trending_statuses": "Postaichean", "explore.trending_tags": "Tagaichean hais", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Deiseil", "follow_recommendations.heading": "Lean air daoine ma tha thu airson nam postaichean aca fhaicinn! Seo moladh no dà dhut.", "follow_recommendations.lead": "Nochdaidh na postaichean aig na daoine air a leanas tu a-rèir an ama air inbhir na dachaighe agad. Bi dàna on as urrainn dhut sgur de leantainn air daoine cuideachd uair sam bith!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Chaidh a dheasachadh {count, plural, one {{counter} turas} two {{counter} thuras} few {{counter} tursan} other {{counter} turas}}", "status.embed": "Leabaich", "status.favourite": "Cuir ris na h-annsachdan", + "status.filter": "Filter this post", "status.filtered": "Criathraichte", "status.hide": "Falaich am post", "status.history.created": "Chruthaich {name} {date} e", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index adef612c6..0c7baa332 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Vaites!", "announcement.announcement": "Anuncio", "attachments_list.unprocessed": "(sen procesar)", - "audio.hide": "Hide audio", + "audio.hide": "Agochar audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Preme {combo} para ignorar isto na seguinte vez", "bundle_column_error.body": "Ocorreu un erro ó cargar este compoñente.", @@ -197,6 +197,22 @@ "explore.trending_links": "Novas", "explore.trending_statuses": "Publicacións", "explore.trending_tags": "Cancelos", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Feito", "follow_recommendations.heading": "Segue a persoas das que queiras ler publicacións! Aqui tes unhas suxestións.", "follow_recommendations.lead": "As publicacións das persoas que segues aparecerán na túa cronoloxía de inicio ordenadas temporalmente. Non teñas medo a equivocarte, podes deixar de seguirlas igual de fácil en calquera momento!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} veces}}", "status.embed": "Incrustar", "status.favourite": "Favorito", + "status.filter": "Filter this post", "status.filtered": "Filtrado", "status.hide": "Agochar publicación", "status.history.created": "{name} creouno o {date}", @@ -521,7 +538,7 @@ "timeline_hint.resources.followers": "Seguidoras", "timeline_hint.resources.follows": "Seguindo", "timeline_hint.resources.statuses": "Publicacións antigas", - "trends.counter_by_accounts": "{count, plural, one {{counter} persoa} other {{counter} persoas}} nos últimos {days, plural, one {día} other {{days} días}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} persoa} other {{counter} persoas}} {days, plural, one {no último día} other {nos {days} últimos días}}", "trends.trending_now": "Tendencias actuais", "ui.beforeunload": "O borrador perderase se saes de Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index c0c0b57f1..281b91bc1 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -197,6 +197,22 @@ "explore.trending_links": "חדשות", "explore.trending_statuses": "פוסטים", "explore.trending_tags": "האשטאגים", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "בוצע", "follow_recommendations.heading": "עקב/י אחרי אנשים שתרצה/י לראות את חצרוציהם! הנה כמה הצעות.", "follow_recommendations.lead": "חצרוצים מאנשים במעקב יופיעו בסדר כרונולוגי בפיד הבית. אל תחששו מטעויות, אפשר להסיר מעקב באותה הקלות ובכל זמן!", @@ -471,6 +487,7 @@ "status.edited_x_times": "נערך {count, plural, one {פעם {count}} other {{count} פעמים}}", "status.embed": "הטמעה", "status.favourite": "חיבוב", + "status.filter": "Filter this post", "status.filtered": "סונן", "status.hide": "הסתר פוסט", "status.history.created": "{name} יצר/ה {date}", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index 9f35187f2..d2403c1f5 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index 9f2df3c71..c66de9c0d 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Učinjeno", "follow_recommendations.heading": "Zaprati osobe čije objave želiš vidjeti! Evo nekoliko prijedloga.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Označi favoritom", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 5b2b98172..ce25cd103 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Hoppá!", "announcement.announcement": "Közlemény", "attachments_list.unprocessed": "(feldolgozatlan)", - "audio.hide": "Hide audio", + "audio.hide": "Hang elrejtése", "autosuggest_hashtag.per_week": "{count} hetente", "boost_modal.combo": "Hogy átugord ezt következő alkalommal, használd {combo}", "bundle_column_error.body": "Valami hiba történt a komponens betöltése közben.", @@ -197,6 +197,22 @@ "explore.trending_links": "Hírek", "explore.trending_statuses": "Bejegyzések", "explore.trending_tags": "Hashtagek", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Kész", "follow_recommendations.heading": "Kövesd azokat, akiknek a bejegyzéseit látni szeretnéd! Itt van néhány javaslat.", "follow_recommendations.lead": "Az általad követettek bejegyzései a saját idővonaladon fognak megjelenni időrendi sorrendben. Ne félj attól, hogy hibázol! A követést bármikor, ugyanilyen könnyen visszavonhatod!", @@ -471,6 +487,7 @@ "status.edited_x_times": "{count, plural, one {{count} alkalommal} other {{count} alkalommal}} szerkesztve", "status.embed": "Beágyazás", "status.favourite": "Kedvenc", + "status.filter": "Filter this post", "status.filtered": "Megszűrt", "status.hide": "Bejegyzés elrejtése", "status.history.created": "{name} létrehozta: {date}", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index f552e345c..5a18eff04 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -197,6 +197,22 @@ "explore.trending_links": "Նորութիւններ", "explore.trending_statuses": "Գրառումներ", "explore.trending_tags": "Պիտակներ", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Աւարտուած է", "follow_recommendations.heading": "Հետեւիր այն մարդկանց, որոնց գրառումները կը ցանկանաս տեսնել։ Ահա մի քանի առաջարկ։", "follow_recommendations.lead": "Քո հոսքում, ժամանակագրական դասաւորութեամբ կը տեսնես այն մարդկանց գրառումները, որոնց հետեւում ես։ Մի վախեցիր սխալուել, դու միշտ կարող ես հեշտութեամբ ապահետեւել մարդկանց։", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Ներդնել", "status.favourite": "Հաւանել", + "status.filter": "Filter this post", "status.filtered": "Զտուած", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 2a081cfbb..9c3879212 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -197,6 +197,22 @@ "explore.trending_links": "Berita", "explore.trending_statuses": "Postingan", "explore.trending_tags": "Tagar", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Selesai", "follow_recommendations.heading": "Ikuti orang yang ingin Anda lihat kirimannya! Ini ada beberapa saran.", "follow_recommendations.lead": "Kiriman dari orang yang Anda ikuti akan tampil berdasar waktu di beranda Anda. Jangan takut membuat kesalahan, Anda dapat berhenti mengikuti mereka dengan mudah kapan saja!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Diedit {count, plural, other {{count} kali}}", "status.embed": "Tanam", "status.favourite": "Difavoritkan", + "status.filter": "Filter this post", "status.filtered": "Disaring", "status.hide": "Hide toot", "status.history.created": "{name} membuat pada {date}", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 1d0a909a2..f3bdb040c 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Problemo!", "announcement.announcement": "Anunco", "attachments_list.unprocessed": "(neprocedita)", - "audio.hide": "Hide audio", + "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", "bundle_column_error.body": "Nulo ne functionis dum chargar ca kompozaj.", @@ -197,6 +197,22 @@ "explore.trending_links": "Niuzi", "explore.trending_statuses": "Posti", "explore.trending_tags": "Hashtagi", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Fina", "follow_recommendations.heading": "Sequez personi quo igas posti quon vu volas vidar! Hike esas ula sugestati.", "follow_recommendations.lead": "Posti de personi quon vu sequas kronologiale montresos en vua hemniuzeto. Ne timas igar erori, vu povas desequar personi tam same facila irgatempe!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Modifikesis {count, plural, one {{count} foyo} other {{count} foyi}}", "status.embed": "Eninsertez", "status.favourite": "Favorizar", + "status.filter": "Filter this post", "status.filtered": "Filtrita", "status.hide": "Celez posto", "status.history.created": "{name} kreis ye {date}", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index d74d45a76..7e3a40fa7 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Úbbs!", "announcement.announcement": "Auglýsing", "attachments_list.unprocessed": "(óunnið)", - "audio.hide": "Hide audio", + "audio.hide": "Fela hljóð", "autosuggest_hashtag.per_week": "{count} á viku", "boost_modal.combo": "Þú getur ýtt á {combo} til að sleppa þessu næst", "bundle_column_error.body": "Eitthvað fór úrskeiðis við að hlaða inn þessari einingu.", @@ -197,6 +197,22 @@ "explore.trending_links": "Fréttir", "explore.trending_statuses": "Færslur", "explore.trending_tags": "Myllumerki", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Lokið", "follow_recommendations.heading": "Fylgstu með fólki sem þú vilt sjá færslur frá! Hér eru nokkrar tillögur.", "follow_recommendations.lead": "Færslur frá fólki sem þú fylgist með eru birtar í tímaröð á heimastreyminu þínu. Þú þarft ekki að hræðast mistök, það er jafn auðvelt að hætta að fylgjast með fólki hvenær sem er!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Breytt {count, plural, one {{count} sinni} other {{count} sinnum}}", "status.embed": "Ívefja", "status.favourite": "Eftirlæti", + "status.filter": "Filter this post", "status.filtered": "Síað", "status.hide": "Fela færslu", "status.history.created": "{name} útbjó {date}", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 7a99d031e..9f32a0685 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Oops!", "announcement.announcement": "Annuncio", "attachments_list.unprocessed": "(non elaborato)", - "audio.hide": "Hide audio", + "audio.hide": "Nascondi audio", "autosuggest_hashtag.per_week": "{count} per settimana", "boost_modal.combo": "Puoi premere {combo} per saltare questo passaggio la prossima volta", "bundle_column_error.body": "E' avvenuto un errore durante il caricamento di questo componente.", @@ -197,6 +197,22 @@ "explore.trending_links": "Novità", "explore.trending_statuses": "Post", "explore.trending_tags": "Hashtag", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Fatto", "follow_recommendations.heading": "Segui le persone da cui vuoi vedere i messaggi! Ecco alcuni suggerimenti.", "follow_recommendations.lead": "I messaggi da persone che segui verranno visualizzati in ordine cronologico nel tuo home feed. Non abbiate paura di commettere errori, potete smettere di seguire le persone altrettanto facilmente in qualsiasi momento!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Modificato {count, plural, one {{count} volta} other {{count} volte}}", "status.embed": "Incorpora", "status.favourite": "Apprezzato", + "status.filter": "Filter this post", "status.filtered": "Filtrato", "status.hide": "Nascondi toot", "status.history.created": "{name} ha creato {date}", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 070248d10..55cb2eb93 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -197,6 +197,22 @@ "explore.trending_links": "ニュース", "explore.trending_statuses": "投稿", "explore.trending_tags": "ハッシュタグ", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "完了", "follow_recommendations.heading": "投稿を見たい人をフォローしてください!ここにおすすめがあります。", "follow_recommendations.lead": "あなたがフォローしている人の投稿は、ホームフィードに時系列で表示されます。いつでも簡単に解除できるので、気軽にフォローしてみてください!", @@ -471,6 +487,7 @@ "status.edited_x_times": "{count}回編集", "status.embed": "埋め込み", "status.favourite": "お気に入り", + "status.filter": "Filter this post", "status.filtered": "フィルターされました", "status.hide": "トゥートを非表示", "status.history.created": "{name}さんが{date}に作成", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index bafaca65e..c6c72b6ce 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "ჩართვა", "status.favourite": "ფავორიტი", + "status.filter": "Filter this post", "status.filtered": "ფილტრირებული", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index ff93fc968..035ec7c84 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Tisuffaɣ", "explore.trending_tags": "Ihacṭagen", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Immed", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Seddu", "status.favourite": "Rnu ɣer yismenyifen", + "status.filter": "Filter this post", "status.filtered": "Yettwasizdeg", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index f15dc88a0..edcf0650c 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embеd", "status.favourite": "Таңдаулы", + "status.filter": "Filter this post", "status.filtered": "Фильтрленген", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index 1e81ab32a..3d2e0a68d 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index d8eca4ee0..e5dfc7689 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "앗!", "announcement.announcement": "공지사항", "attachments_list.unprocessed": "(처리 안 됨)", - "audio.hide": "Hide audio", + "audio.hide": "소리 숨기기", "autosuggest_hashtag.per_week": "주간 {count}회", "boost_modal.combo": "다음엔 {combo}를 눌러서 이 과정을 건너뛸 수 있습니다", "bundle_column_error.body": "컴포넌트를 불러오는 과정에서 문제가 발생했습니다.", @@ -197,6 +197,22 @@ "explore.trending_links": "소식", "explore.trending_statuses": "게시물", "explore.trending_tags": "해시태그", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "완료", "follow_recommendations.heading": "게시물을 받아 볼 사람들을 팔로우 하세요! 여기 몇몇의 추천이 있습니다.", "follow_recommendations.lead": "당신이 팔로우 하는 사람들의 게시물이 시간순으로 정렬되어 당신의 홈 피드에 표시될 것입니다. 실수를 두려워 하지 마세요, 언제든지 쉽게 팔로우 취소를 할 수 있습니다!", @@ -471,6 +487,7 @@ "status.edited_x_times": "{count}번 수정됨", "status.embed": "공유하기", "status.favourite": "좋아요", + "status.filter": "Filter this post", "status.filtered": "필터로 걸러짐", "status.hide": "툿 숨기기", "status.history.created": "{name} 님이 {date}에 생성함", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 740bcd917..27033efbf 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -17,28 +17,28 @@ "account.follow": "Bişopîne", "account.followers": "Şopîner", "account.followers.empty": "Kesekî hin ev bikarhêner neşopandiye.", - "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", + "account.followers_counter": "{count, plural, one {{counter} Şopîner} other {{counter} Şopîner}}", "account.following": "Dişopîne", "account.following_counter": "{count, plural, one {{counter} Dişopîne} other {{counter} Dişopîne}}", "account.follows.empty": "Ev bikarhêner hin kesekî heya niha neşopandiye.", "account.follows_you": "Te dişopîne", "account.hide_reblogs": "Bilindkirinên ji @{name} veşêre", - "account.joined": "Tevlîbû di {date} de", + "account.joined": "Di {date} de tevlî bû", "account.link_verified_on": "Xwedaniya li vê girêdanê di {date} de hatiye kontrolkirin", "account.locked_info": "Rewşa vê ajimêrê wek kilît kirî hatiye saz kirin. Xwedî yê ajimêrê, kesên vê bişopîne bi dest vekolin dike.", "account.media": "Medya", "account.mention": "Qal @{name} bike", "account.moved_to": "{name} hate livandin bo:", - "account.mute": "@{name} Bêdeng bike", + "account.mute": "@{name} bêdeng bike", "account.mute_notifications": "Agahdariyan ji @{name} bêdeng bike", "account.muted": "Bêdengkirî", "account.posts": "Şandî", "account.posts_with_replies": "Şandî û bersiv", - "account.report": "@{name} Ragihîne", + "account.report": "@{name} ragihîne", "account.requested": "Li benda erêkirinê ye. Ji bo betal kirina daxwazê pêl bikin", "account.share": "Profîla @{name} parve bike", "account.show_reblogs": "Bilindkirinên ji @{name} nîşan bike", - "account.statuses_counter": "{count, plural,one {{counter} şandî}other {{counter} şandî}}", + "account.statuses_counter": "{count, plural,one {{counter} Şandî}other {{counter} Şandî}}", "account.unblock": "Astengê li ser @{name} rake", "account.unblock_domain": "Astengê li ser navperê {domain} rake", "account.unblock_short": "Astengiyê rake", @@ -59,7 +59,7 @@ "alert.unexpected.title": "Wey li min!", "announcement.announcement": "Daxuyanî", "attachments_list.unprocessed": "(bêpêvajo)", - "audio.hide": "Hide audio", + "audio.hide": "Dengê veşêre", "autosuggest_hashtag.per_week": "Her hefte {count}", "boost_modal.combo": "Ji bo derbas bî carekî din de pêlê {combo} bike", "bundle_column_error.body": "Di dema barkirina vê hêmanê de tiştek çewt çê bû.", @@ -76,12 +76,12 @@ "column.domain_blocks": "Navperên astengkirî", "column.favourites": "Bijarte", "column.follow_requests": "Daxwazên şopandinê", - "column.home": "Serrûpel", + "column.home": "Rûpela sereke", "column.lists": "Rêzok", "column.mutes": "Bikarhênerên bêdengkirî", "column.notifications": "Agahdarî", "column.pins": "Şandiya derzîkirî", - "column.public": "Demnameyê federalîkirî", + "column.public": "Demnameya giştî", "column_back_button.label": "Vegere", "column_header.hide_settings": "Sazkariyan veşêre", "column_header.moveLeft_settings": "Stûnê bilivîne bo çepê", @@ -168,12 +168,12 @@ "empty_column.account_timeline": "Li vir şandî tune!", "empty_column.account_unavailable": "Profîl nayê peydakirin", "empty_column.blocks": "Te tu bikarhêner asteng nekiriye.", - "empty_column.bookmarked_statuses": "Hîn tu peyamên şûnpelkirî tuneye. Gava ku hûn yek şûnpel bikin, ew ê li vir xûya bike.", + "empty_column.bookmarked_statuses": "Hîn tu peyamên te yên şûnpelkirî tune ne. Dema ku tu yekî şûnpel bikî, ew ê li vir xuya bibe.", "empty_column.community": "Demnameya herêmî vala ye. Tiştek ji raya giştî re binivsînin da ku rûpel biherike!", - "empty_column.direct": "Hêj peyameke te yê rasterast tuneye. Gava ku tu yekî bişeynî an jî bigirî, ew ê li vir xûya bike.", + "empty_column.direct": "Hîn peyamên te yên rasterast tune ne. Dema ku tu yekî bişînî an jî wergirî, ew ê li vir xuya bibe.", "empty_column.domain_blocks": "Hê jî navperên hatine asteng kirin tune ne.", "empty_column.explore_statuses": "Tiştek niha di rojevê de tune. Paşê vegere!", - "empty_column.favourited_statuses": "Hîn tu peyamên te yên bijare tunene. Gava ku te yekî bijart, ew ê li vir xûya bike.", + "empty_column.favourited_statuses": "Hîn tu peyamên te yên bijarte tune ne. Dema ku te yekî bijart, ew ê li vir xuya bibe.", "empty_column.favourites": "Hîn tu kes vê peyamê nebijartiye. Gava ku hin kes bijartin, ew ê li vir xûya bikin.", "empty_column.follow_recommendations": "Wusa dixuye ku ji bo we tu pêşniyar nehatine çêkirin. Hûn dikarin lêgerînê bikarbînin da ku li kesên ku hûn nas dikin bigerin an hashtagên trendî bigerin.", "empty_column.follow_requests": "Hê jî daxwaza şopandinê tunne ye. Dema daxwazek hat, yê li vir were nîşan kirin.", @@ -181,7 +181,7 @@ "empty_column.home": "Demnameya mala we vala ye! Ji bona tijîkirinê bêtir mirovan bişopînin. {suggestions}", "empty_column.home.suggestions": "Hinek pêşniyaran bibîne", "empty_column.list": "Di vê rêzokê de hîn tiştek tune ye. Gava ku endamên vê rêzokê peyamên nû biweşînin, ew ê li vir xuya bibin.", - "empty_column.lists": "Hêj qet rêzokê te tunne ye. Dema yek peyda bû, yê li vir were nîşan kirin.", + "empty_column.lists": "Hîn tu rêzokên te tune ne. Dema yekî çê bikî, ew ê li vir xuya bibe.", "empty_column.mutes": "Te tu bikarhêner bêdeng nekiriye.", "empty_column.notifications": "Hêj hişyariyên te tunene. Dema ku mirovên din bi we re têkilî danîn, hûn ê wê li vir bibînin.", "empty_column.public": "Li vir tiştekî tuneye! Ji raya giştî re tiştekî binivîsîne, an ji bo tijîkirinê ji rajekerên din bikarhêneran bi destan bişopînin", @@ -197,6 +197,22 @@ "explore.trending_links": "Nûçe", "explore.trending_statuses": "Şandî", "explore.trending_tags": "Hashtag", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Qediya", "follow_recommendations.heading": "Mirovên ku tu dixwazî ji wan peyaman bibînî bişopîne! Hin pêşnîyar li vir in.", "follow_recommendations.lead": "Li gorî rêza kronolojîkî peyamên mirovên ku tu dişopînî dê demnameya te de xûya bike. Ji xeletiyan netirse, bi awayekî hêsan her wextî tu dikarî dev ji şopandinê berdî!", @@ -243,10 +259,10 @@ "keyboard_shortcuts.enter": "Şandiyê veke", "keyboard_shortcuts.favourite": "Şandiya bijarte", "keyboard_shortcuts.favourites": "Rêzokên bijarte veke", - "keyboard_shortcuts.federated": "Demnameyê federalîkirî veke", + "keyboard_shortcuts.federated": "Demnameya giştî veke", "keyboard_shortcuts.heading": "Kurterêyên klavyeyê", "keyboard_shortcuts.home": "Demnameyê veke", - "keyboard_shortcuts.hotkey": "Bişkoka kurterê", + "keyboard_shortcuts.hotkey": "Kurte bişkok", "keyboard_shortcuts.legend": "Vê çîrokê nîşan bike", "keyboard_shortcuts.local": "Demnameya herêmî veke", "keyboard_shortcuts.mention": "Qala nivîskarî/ê bike", @@ -272,7 +288,7 @@ "lightbox.next": "Pêş", "lightbox.previous": "Paş", "limited_account_hint.action": "Bi heman awayî profîlê nîşan bide", - "limited_account_hint.title": "Ev profîl ji aliyê çavêriya li ser rajekarê te hatiye veşartin.", + "limited_account_hint.title": "Ev profîl ji aliyê çavdêriya li ser rajekarê te hatiye veşartin.", "lists.account.add": "Tevlî rêzokê bike", "lists.account.remove": "Ji rêzokê rake", "lists.delete": "Rêzokê jê bibe", @@ -294,7 +310,7 @@ "mute_modal.duration": "Dem", "mute_modal.hide_notifications": "Agahdariyan ji ev bikarhêner veşêre?", "mute_modal.indefinite": "Nediyar", - "navigation_bar.apps": "Sepana mobîl", + "navigation_bar.apps": "Sepana mobayil", "navigation_bar.blocks": "Bikarhênerên astengkirî", "navigation_bar.bookmarks": "Şûnpel", "navigation_bar.community_timeline": "Demnameya herêmî", @@ -309,14 +325,14 @@ "navigation_bar.follow_requests": "Daxwazên şopandinê", "navigation_bar.follows_and_followers": "Şopandin û şopîner", "navigation_bar.info": "Derbarê vî rajekarî", - "navigation_bar.keyboard_shortcuts": "Bişkoka kurterê", + "navigation_bar.keyboard_shortcuts": "Kurte bişkok", "navigation_bar.lists": "Rêzok", "navigation_bar.logout": "Derkeve", "navigation_bar.mutes": "Bikarhênerên bêdengkirî", "navigation_bar.personal": "Kesanî", "navigation_bar.pins": "Şandiya derzîkirî", "navigation_bar.preferences": "Sazkarî", - "navigation_bar.public_timeline": "Demnameyê federalîkirî", + "navigation_bar.public_timeline": "Demnameya giştî", "navigation_bar.security": "Ewlehî", "notification.admin.report": "{name} hate ragihandin {target}", "notification.admin.sign_up": "{name} tomar bû", @@ -387,7 +403,7 @@ "privacy.unlisted.short": "Nerêzok", "refresh": "Nû bike", "regeneration_indicator.label": "Tê barkirin…", - "regeneration_indicator.sublabel": "Mala te da tê amedekirin!", + "regeneration_indicator.sublabel": "Naveroka rûpela sereke ya te tê amedekirin!", "relative_time.days": "{number}r", "relative_time.full.days": "{number, plural, one {# roj} other {# roj}} berê", "relative_time.full.hours": "{number, plural, one {# demjimêr} other {# demjimêr}} berê", @@ -412,7 +428,7 @@ "report.close": "Qediya", "report.comment.title": "Tiştek din heye ku tu difikirî ku divê em zanibin?", "report.forward": "Biçe bo {target}", - "report.forward_hint": "Ajimêr ji rajekarek din da ne. Tu kopîyeka anonîm ya raporê bişînî li wur?", + "report.forward_hint": "Ajimêr ji rajekareke din e. Tu kopîyeka anonîm ya raporê bişînî wir jî?", "report.mute": "Bêdeng bike", "report.mute_explanation": "Tê yê şandiyên wan nebînî. Ew hin jî dikarin te bişopînin û şandiyên te bibînin û wê nizanibin ku ew hatine bêdengkirin.", "report.next": "Pêş", @@ -437,7 +453,7 @@ "report.thanks.title_actionable": "Spas ji bo ragihandina te, em ê binirxînin.", "report.unfollow": "@{name} neşopîne", "report.unfollow_explanation": "Tê vê ajimêrê dişopînî. Ji bo ku êdî şandiyên wan di rojeva xwe de nebînî, wan neşopîne.", - "report_notification.attached_statuses": "{count, plural,one {{count} şandî} other {{count} şandî }} pêvekirî", + "report_notification.attached_statuses": "{count, plural,one {{count} şandî} other {{count} şandî}} pêvekirî", "report_notification.categories.other": "Ên din", "report_notification.categories.spam": "Nexwestî (Spam)", "report_notification.categories.violation": "Binpêkirina rêzîkê", @@ -471,6 +487,7 @@ "status.edited_x_times": "{count, plural, one {{count} car} other {{count} car}} hate serrastkirin", "status.embed": "Hedimandî", "status.favourite": "Bijarte", + "status.filter": "Filter this post", "status.filtered": "Parzûnkirî", "status.hide": "Şandiyê veşêre", "status.history.created": "{name} {date} afirand", @@ -493,13 +510,13 @@ "status.remove_bookmark": "Şûnpêlê jê rake", "status.reply": "Bersivê bide", "status.replyAll": "Mijarê bibersivîne", - "status.report": "{name} gilî bike", + "status.report": "@{name} ragihîne", "status.sensitive_warning": "Naveroka hestiyarî", "status.share": "Parve bike", "status.show_filter_reason": "Bi her awayî nîşan bide", "status.show_less": "Kêmtir nîşan bide", "status.show_less_all": "Ji bo hemîyan kêmtir nîşan bide", - "status.show_more": "Hêj zehftir nîşan bide", + "status.show_more": "Bêtir nîşan bide", "status.show_more_all": "Bêtir nîşan bide bo hemûyan", "status.show_thread": "Mijarê nîşan bide", "status.uncached_media_warning": "Tune ye", @@ -508,7 +525,7 @@ "suggestions.dismiss": "Pêşniyarê paşguh bike", "suggestions.header": "Dibe ku bala te bikşîne…", "tabs_bar.federated_timeline": "Giştî", - "tabs_bar.home": "Serrûpel", + "tabs_bar.home": "Rûpela sereke", "tabs_bar.local_timeline": "Herêmî", "tabs_bar.notifications": "Agahdarî", "tabs_bar.search": "Bigere", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index ad0e1ae31..f6a85a932 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Gwrys", "follow_recommendations.heading": "Holyewgh tus a vynnowgh gweles postow anedha! Ottomma nebes profyansow.", "follow_recommendations.lead": "Postow a dus a holyewgh a wra omdhiskwedhes omma yn aray termynel yn agas lin dre. Na borthewgh own a gammwul, hwi a yll p'eurpynag anholya tus mar es poran!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Staga", "status.favourite": "Merkya vel drudh", + "status.filter": "Filter this post", "status.filtered": "Sidhlys", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index a38374230..4e238273e 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 60b6e75da..1912dd7db 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Ups!", "announcement.announcement": "Paziņojums", "attachments_list.unprocessed": "(neapstrādāti)", - "audio.hide": "Hide audio", + "audio.hide": "Slēpt audio", "autosuggest_hashtag.per_week": "{count} nedēļā", "boost_modal.combo": "Nospied {combo} lai izlaistu šo nākamreiz", "bundle_column_error.body": "Kaut kas nogāja greizi ielādējot šo komponenti.", @@ -197,6 +197,22 @@ "explore.trending_links": "Jaunumi", "explore.trending_statuses": "Ziņas", "explore.trending_tags": "Tēmturi", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Izpildīts", "follow_recommendations.heading": "Seko cilvēkiem, no kuriem vēlies redzēt ziņas! Šeit ir daži ieteikumi.", "follow_recommendations.lead": "Ziņas no cilvēkiem, kuriem seko, mājas plūsmā tiks parādītas hronoloģiskā secībā. Nebaidies kļūdīties, tu tikpat viegli vari pārtraukt sekot cilvēkiem jebkurā laikā!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Rediģēts {count, plural, one {{count} reize} other {{count} reizes}}", "status.embed": "Iestrādāt", "status.favourite": "Iecienītā", + "status.filter": "Filter this post", "status.filtered": "Filtrēts", "status.hide": "Slēpt", "status.history.created": "{name} izveidots {date}", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index a00e1762c..d782dff64 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index 2e4aac762..37969475d 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "പൂര്‍ത്തിയായീ", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "ഉൾച്ചേർക്കുക", "status.favourite": "പ്രിയപ്പെട്ടത്", + "status.filter": "Filter this post", "status.filtered": "ഫിൽട്ടർ ചെയ്‌തു", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index 3ce4fc0f9..09eaea3f9 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 70683ef42..6a1302329 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Selesai", "follow_recommendations.heading": "Ikuti orang yang anda ingin lihat hantarannya! Di sini ada beberapa cadangan.", "follow_recommendations.lead": "Hantaran daripada orang yang anda ikuti akan muncul dalam susunan kronologi di suapan rumah anda. Jangan takut melakukan kesilapan, anda boleh nyahikuti orang dengan mudah pada bila-bila masa!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Benaman", "status.favourite": "Kegemaran", + "status.filter": "Filter this post", "status.filtered": "Ditapis", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 64c747aa1..b48ebbc16 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Oeps!", "announcement.announcement": "Mededeling", "attachments_list.unprocessed": "(niet verwerkt)", - "audio.hide": "Hide audio", + "audio.hide": "Audio verbergen", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "Je kunt {combo} klikken om dit de volgende keer over te slaan", "bundle_column_error.body": "Tijdens het laden van dit onderdeel is er iets fout gegaan.", @@ -197,6 +197,22 @@ "explore.trending_links": "Nieuws", "explore.trending_statuses": "Berichten", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Klaar", "follow_recommendations.heading": "Volg mensen waarvan je graag berichten wil zien! Hier zijn enkele aanbevelingen.", "follow_recommendations.lead": "Berichten van mensen die je volgt zullen in chronologische volgorde onder start verschijnen. Wees niet bang om hierin fouten te maken, want je kunt mensen op elk moment net zo eenvoudig ontvolgen!", @@ -471,6 +487,7 @@ "status.edited_x_times": "{count, plural, one {{count} keer} other {{count} keer}} bewerkt", "status.embed": "Insluiten", "status.favourite": "Favoriet", + "status.filter": "Filter this post", "status.filtered": "Gefilterd", "status.hide": "Bericht verbergen", "status.history.created": "{name} plaatste dit {date}", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 3f6a1747b..33c06e11e 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -197,6 +197,22 @@ "explore.trending_links": "Nyheiter", "explore.trending_statuses": "Innlegg", "explore.trending_tags": "Emneknaggar", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Ferdig", "follow_recommendations.heading": "Fylg folk du ønsker å sjå innlegg frå! Her er nokre forslag.", "follow_recommendations.lead": "Innlegg fra mennesker du følger vil vises i kronologisk rekkefølge på hjemmefeed. Ikke vær redd for å gjøre feil, du kan slutte å følge folk like enkelt som alt!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Redigert {count, plural, one {{count} gong} other {{count} gonger}}", "status.embed": "Bygg inn", "status.favourite": "Favoritt", + "status.filter": "Filter this post", "status.filtered": "Filtrert", "status.hide": "Gøym innlegg", "status.history.created": "{name} oppretta {date}", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index b0b7f76bc..6e2783713 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -197,6 +197,22 @@ "explore.trending_links": "Nyheter", "explore.trending_statuses": "Innlegg", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Utført", "follow_recommendations.heading": "Følg folk du ønsker å se innlegg fra! Her er noen forslag.", "follow_recommendations.lead": "Innlegg fra mennesker du følger vil vises i kronologisk rekkefølge på hjemmefeed. Ikke vær redd for å gjøre feil, du kan slutte å følge folk like enkelt som alt!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Bygge inn", "status.favourite": "Lik", + "status.filter": "Filter this post", "status.filtered": "Filtrert", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index d9d3b20a1..fa3ef3967 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -197,6 +197,22 @@ "explore.trending_links": "Novèlas", "explore.trending_statuses": "Publicacions", "explore.trending_tags": "Etiquetas", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Acabat", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Modificat {count, plural, un {{count} còp} other {{count} còps}}", "status.embed": "Embarcar", "status.favourite": "Apondre als favorits", + "status.filter": "Filter this post", "status.filtered": "Filtrat", "status.hide": "Hide toot", "status.history.created": "{name} o creèt lo {date}", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index bc5e9d91c..c77444bff 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 5ba83f01f..04b0868ee 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "O nie!", "announcement.announcement": "Ogłoszenie", "attachments_list.unprocessed": "(nieprzetworzone)", - "audio.hide": "Hide audio", + "audio.hide": "Ukryj dźwięk", "autosuggest_hashtag.per_week": "{count} co tydzień", "boost_modal.combo": "Naciśnij {combo}, aby pominąć to następnym razem", "bundle_column_error.body": "Coś poszło nie tak podczas ładowania tego składnika.", @@ -197,6 +197,22 @@ "explore.trending_links": "Aktualności", "explore.trending_statuses": "Posty", "explore.trending_tags": "Hasztagi", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Gotowe", "follow_recommendations.heading": "Śledź ludzi, których wpisy chcesz czytać. Oto kilka propozycji.", "follow_recommendations.lead": "Wpisy osób, które śledzisz będą pojawiać się w porządku chronologicznym na stronie głównej. Nie bój się popełniać błędów, możesz bez problemu przestać śledzić każdego w każdej chwili!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edytowano {count, plural, one {{count} raz} other {{count} razy}}", "status.embed": "Osadź", "status.favourite": "Dodaj do ulubionych", + "status.filter": "Filter this post", "status.filtered": "Filtrowany(-a)", "status.hide": "Schowaj toota", "status.history.created": "{name} utworzył(a) {date}", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 3fd4c822e..ab1443ece 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -197,6 +197,22 @@ "explore.trending_links": "Notícias", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Salvar", "follow_recommendations.heading": "Siga pessoas que você gostaria de acompanhar! Aqui estão algumas sugestões.", "follow_recommendations.lead": "Toots de pessoas que você segue aparecerão em ordem cronológica na página inicial. Não tenha medo de cometer erros, você pode facilmente deixar de seguir a qualquer momento!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Editado {count, plural, one {{count} hora} other {{count} vezes}}", "status.embed": "Incorporar", "status.favourite": "Favoritar", + "status.filter": "Filter this post", "status.filtered": "Filtrado", "status.hide": "Hide toot", "status.history.created": "{name} criou {date}", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 0764920e8..ef097b380 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Bolas!", "announcement.announcement": "Anúncio", "attachments_list.unprocessed": "(não processado)", - "audio.hide": "Hide audio", + "audio.hide": "Ocultar áudio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Pode clicar {combo} para não voltar a ver", "bundle_column_error.body": "Algo de errado aconteceu enquanto este componente era carregado.", @@ -197,6 +197,22 @@ "explore.trending_links": "Notícias", "explore.trending_statuses": "Publicações", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Concluído", "follow_recommendations.heading": "Siga pessoas das quais gostaria de ver publicações! Aqui estão algumas sugestões.", "follow_recommendations.lead": "As publicações das pessoas que segue serão exibidos em ordem cronológica na sua página inicial. Não tenha medo de cometer erros, você pode deixar de seguir as pessoas tão facilmente a qualquer momento!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Editado {count, plural,one {{count} vez} other {{count} vezes}}", "status.embed": "Incorporar", "status.favourite": "Adicionar aos favoritos", + "status.filter": "Filter this post", "status.filtered": "Filtrada", "status.hide": "Esconder publicação", "status.history.created": "{name} criado em {date}", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index e60ce2220..ff5ec9b2a 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Terminat", "follow_recommendations.heading": "Urmărește persoanele ale căror postări te-ar interesa! Iată câteva sugestii.", "follow_recommendations.lead": "Postările de la persoanele la care te-ai abonat vor apărea în ordine cronologică în cronologia principală. Nu-ți fie teamă să faci greșeli, poți să te dezabonezi oricând de la ei la fel de ușor!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Înglobează", "status.favourite": "Favorite", + "status.filter": "Filter this post", "status.filtered": "Sortate", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index c0bfb8b79..e53088e39 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Упс!", "announcement.announcement": "Объявление", "attachments_list.unprocessed": "(не обработан)", - "audio.hide": "Hide audio", + "audio.hide": "Скрыть аудио", "autosuggest_hashtag.per_week": "{count} / неделю", "boost_modal.combo": "{combo}, чтобы пропустить это в следующий раз", "bundle_column_error.body": "Что-то пошло не так при загрузке этого компонента.", @@ -197,6 +197,22 @@ "explore.trending_links": "Новости", "explore.trending_statuses": "Посты", "explore.trending_tags": "Хэштеги", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Готово", "follow_recommendations.heading": "Подпишитесь на людей, чьи посты вы бы хотели видеть. Вот несколько предложений.", "follow_recommendations.lead": "Посты от людей, на которых вы подписаны, будут отображаться в вашей домашней ленте в хронологическом порядке. Не бойтесь ошибиться — вы так же легко сможете отписаться от них в любое время!", @@ -471,10 +487,11 @@ "status.edited_x_times": "{count, plural, one {{count} изменение} many {{count} изменений} other {{count} изменения}}", "status.embed": "Встроить на свой сайт", "status.favourite": "В избранное", + "status.filter": "Filter this post", "status.filtered": "Отфильтровано", "status.hide": "Скрыть пост", "status.history.created": "{name} создал {date}", - "status.history.edited": "{name} отредактировал {date}", + "status.history.edited": "{name} отредактировал(а) {date}", "status.load_more": "Загрузить остальное", "status.media_hidden": "Файл скрыт", "status.mention": "Упомянуть @{name}", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index 3a5faf272..2ebda63cd 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 93a7ea769..7482d15fe 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Fatu", "follow_recommendations.heading": "Sighi gente de chie boles bìdere is publicatziones! Càstia custos cussìgios.", "follow_recommendations.lead": "Is messàgios de gente a sa chi ses sighende ant a èssere ammustrados in òrdine cronològicu in sa lìnia de tempus printzipale tua. Non timas de fàghere errores, acabbare de sighire gente est fàtzile in cale si siat momentu!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Afissa", "status.favourite": "Preferidos", + "status.filter": "Filter this post", "status.filtered": "Filtradu", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 18342b7ce..170c34b57 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -197,6 +197,22 @@ "explore.trending_links": "පුවත්", "explore.trending_statuses": "තනතුරු", "explore.trending_tags": "හැෂ් ටැග්", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "කළා", "follow_recommendations.heading": "ඔබ පළ කිරීම් බැලීමට කැමති පුද්ගලයින් අනුගමනය කරන්න! මෙන්න යෝජනා කිහිපයක්.", "follow_recommendations.lead": "ඔබ අනුගමන කරන පුද්ගලයින්ගේ පළ කිරීම් ඔබගේ නිවසේ සංග්‍රහයේ කාලානුක්‍රමික අනුපිළිවෙලට පෙන්වනු ඇත. වැරදි කිරීමට බිය නොවන්න, ඔබට ඕනෑම වේලාවක පහසුවෙන් මිනිසුන් අනුගමනය කළ නොහැක!", @@ -471,6 +487,7 @@ "status.edited_x_times": "සංස්කරණය කළා {count, plural, one {{count} කාලය} other {{count} වාර}}", "status.embed": "එබ්බවූ", "status.favourite": "ප්‍රියතම", + "status.filter": "Filter this post", "status.filtered": "පෙරන ලද", "status.hide": "Hide toot", "status.history.created": "{name} නිර්මාණය {date}", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index aff5960d9..8aeb2aec6 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -197,6 +197,22 @@ "explore.trending_links": "Novinky", "explore.trending_statuses": "Príspevky", "explore.trending_tags": "Haštagy", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Hotovo", "follow_recommendations.heading": "Následuj ľudí od ktorých by si chcel/a vidieť príspevky! Tu sú nejaké návrhy.", "follow_recommendations.lead": "Príspevky od ľudi ktorých sledujete sa zobrazia v chronologickom poradí na Vašej nástenke. Nebojte sa spraviť chyby, vždy môžete zrušiť sledovanie konkrétnych ľudí!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Vložiť", "status.favourite": "Páči sa mi", + "status.filter": "Filter this post", "status.filtered": "Filtrované", "status.hide": "Skry príspevok", "status.history.created": "{name} vytvoril/a {date}", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index af736ed59..c793d9de8 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Uups!", "announcement.announcement": "Objava", "attachments_list.unprocessed": "(neobdelano)", - "audio.hide": "Hide audio", + "audio.hide": "Skrij zvok", "autosuggest_hashtag.per_week": "{count} na teden", "boost_modal.combo": "Če želite preskočiti to, lahko pritisnete {combo}", "bundle_column_error.body": "Med nalaganjem te komponente je prišlo do napake.", @@ -197,6 +197,22 @@ "explore.trending_links": "Novice", "explore.trending_statuses": "Objave", "explore.trending_tags": "Ključniki", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Opravljeno", "follow_recommendations.heading": "Sledite osebam, katerih objave želite videti! Tukaj je nekaj predlogov.", "follow_recommendations.lead": "Objave oseb, ki jim sledite, se bodo prikazale v kronološkem zaporedju v vašem domačem viru. Ne bojte se storiti napake, osebam enako enostavno nehate slediti kadar koli!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Urejeno {count, plural, one {#-krat} two {#-krat} few {#-krat} other {#-krat}}", "status.embed": "Vgradi", "status.favourite": "Priljubljen", + "status.filter": "Filter this post", "status.filtered": "Filtrirano", "status.hide": "Skrij tut", "status.history.created": "{name}: ustvarjeno {date}", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 4f43cec0b..0b7fabb45 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Hëm!", "announcement.announcement": "Lajmërim", "attachments_list.unprocessed": "(e papërpunuar)", - "audio.hide": "Hide audio", + "audio.hide": "Fshihe audion", "autosuggest_hashtag.per_week": "{count} për javë", "boost_modal.combo": "Që kjo të anashkalohet herës tjetër, mund të shtypni {combo}", "bundle_column_error.body": "Diç shkoi ters teksa ngarkohej ky përbërës.", @@ -197,6 +197,22 @@ "explore.trending_links": "Lajme", "explore.trending_statuses": "Postime", "explore.trending_tags": "Hashtagë", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "U bë", "follow_recommendations.heading": "Ndiqni persona prej të cilëve doni të shihni postime! Ja ca sugjerime.", "follow_recommendations.lead": "Postimet prej personash që ndiqni do të shfaqen në rend kohor te prurja juaj kryesore. Mos kini frikë të bëni gabime, mund të ndalni po aq kollaj ndjekjen e dikujt, në çfarëdo kohe!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Përpunuar {count, plural, one {{count} herë} other {{count} herë}}", "status.embed": "Trupëzim", "status.favourite": "I parapëlqyer", + "status.filter": "Filter this post", "status.filtered": "I filtruar", "status.hide": "Fshihe mesazhin", "status.history.created": "{name} u krijua më {date}", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 2f35ba2c4..8e955727d 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Ugradi na sajt", "status.favourite": "Omiljeno", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index d9d67edf0..442e7ee3d 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Угради на сајт", "status.favourite": "Омиљено", + "status.filter": "Filter this post", "status.filtered": "Филтрирано", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 9e3b9cf37..a150deadb 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Hoppsan!", "announcement.announcement": "Meddelande", "attachments_list.unprocessed": "(obearbetad)", - "audio.hide": "Hide audio", + "audio.hide": "Dölj audio", "autosuggest_hashtag.per_week": "{count} per vecka", "boost_modal.combo": "Du kan trycka {combo} för att slippa detta nästa gång", "bundle_column_error.body": "Något gick fel medan denna komponent laddades.", @@ -197,6 +197,22 @@ "explore.trending_links": "Nyheter", "explore.trending_statuses": "Inlägg", "explore.trending_tags": "Hashtaggar", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Klar", "follow_recommendations.heading": "Följ personer som du skulle vilja se inlägg från! Här finns det några förslag.", "follow_recommendations.lead": "Inlägg från personer du följer kommer att dyka upp i kronologisk ordning i ditt hem-flöde. Var inte rädd för att göra misstag, du kan sluta följa människor lika enkelt när som helst!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Redigerad {count, plural, one {{count} gång} other {{count} gånger}}", "status.embed": "Bädda in", "status.favourite": "Favorit", + "status.filter": "Filter this post", "status.filtered": "Filtrerat", "status.hide": "Hide toot", "status.history.created": "{name} skapade {date}", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index bc5e9d91c..c77444bff 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 021315b33..728cfac11 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "கிடத்து", "status.favourite": "விருப்பத்துக்குகந்த", + "status.filter": "Filter this post", "status.filtered": "வடிகட்டு", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 77232ff5f..beba8e333 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index be49846cb..d5cc02b10 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "ఎంబెడ్", "status.favourite": "ఇష్టపడు", + "status.filter": "Filter this post", "status.filtered": "వడకట్టబడిన", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index e901b9647..38539d512 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "อุปส์!", "announcement.announcement": "ประกาศ", "attachments_list.unprocessed": "(ยังไม่ได้ประมวลผล)", - "audio.hide": "Hide audio", + "audio.hide": "ซ่อนเสียง", "autosuggest_hashtag.per_week": "{count} ต่อสัปดาห์", "boost_modal.combo": "คุณสามารถกด {combo} เพื่อข้ามสิ่งนี้ในครั้งถัดไป", "bundle_column_error.body": "มีบางอย่างผิดพลาดขณะโหลดส่วนประกอบนี้", @@ -197,6 +197,22 @@ "explore.trending_links": "ข่าว", "explore.trending_statuses": "โพสต์", "explore.trending_tags": "แฮชแท็ก", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "เสร็จสิ้น", "follow_recommendations.heading": "ติดตามผู้คนที่คุณต้องการเห็นโพสต์! นี่คือข้อเสนอแนะบางส่วน", "follow_recommendations.lead": "โพสต์จากผู้คนที่คุณติดตามจะแสดงตามลำดับเวลาในฟีดหน้าแรกของคุณ อย่ากลัวที่จะทำผิดพลาด คุณสามารถเลิกติดตามผู้คนได้อย่างง่ายดายเมื่อใดก็ตาม!", @@ -471,6 +487,7 @@ "status.edited_x_times": "แก้ไข {count, plural, other {{count} ครั้ง}}", "status.embed": "ฝัง", "status.favourite": "ชื่นชอบ", + "status.filter": "Filter this post", "status.filtered": "กรองอยู่", "status.hide": "ซ่อนโพสต์", "status.history.created": "{name} ได้สร้างเมื่อ {date}", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index b69153a62..35c888e47 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -12,7 +12,7 @@ "account.disable_notifications": "@{name} kişisinin gönderi bildirimlerini kapat", "account.domain_blocked": "Alan adı engellendi", "account.edit_profile": "Profili düzenle", - "account.enable_notifications": "@{name} kişisinin gönderi bildirimlerini aç", + "account.enable_notifications": "@{name}'in gönderilerini bana bildir", "account.endorse": "Profilimde öne çıkar", "account.follow": "Takip et", "account.followers": "Takipçi", @@ -20,23 +20,23 @@ "account.followers_counter": "{count, plural, one {{counter} Takipçi} other {{counter} Takipçi}}", "account.following": "Takip Ediliyor", "account.following_counter": "{count, plural, one {{counter} Takip Edilen} other {{counter} Takip Edilen}}", - "account.follows.empty": "Bu kullanıcı henüz kimseyi takip etmiyor.", + "account.follows.empty": "Bu kullanıcı henüz hiçkimseyi takip etmiyor.", "account.follows_you": "Seni takip ediyor", "account.hide_reblogs": "@{name} kişisinin boostlarını gizle", "account.joined": "{date} tarihinde katıldı", "account.link_verified_on": "Bu bağlantının sahipliği {date} tarihinde kontrol edildi", "account.locked_info": "Bu hesabın gizlilik durumu gizli olarak ayarlanmış. Sahibi, onu kimin takip edebileceğini manuel olarak onaylıyor.", "account.media": "Medya", - "account.mention": "@{name} kişisinden bahset", + "account.mention": "@{name}'i an", "account.moved_to": "{name} şuraya taşındı:", - "account.mute": "@{name} adlı kişiyi sessize al", - "account.mute_notifications": "@{name} adlı kişinin bildirimlerini kapat", + "account.mute": "@{name}'i susstur", + "account.mute_notifications": "@{name}'in bildirimlerini sustur", "account.muted": "Susturuldu", "account.posts": "Gönderiler", "account.posts_with_replies": "Gönderiler ve yanıtlar", - "account.report": "@{name} adlı kişiyi bildir", + "account.report": "@{name}'i şikayet et", "account.requested": "Onay bekleniyor. Takip isteğini iptal etmek için tıklayın", - "account.share": "@{name} adlı kişinin profilini paylaş", + "account.share": "@{name}'in profilini paylaş", "account.show_reblogs": "@{name} kişisinin boostlarını göster", "account.statuses_counter": "{count, plural, one {{counter} Gönderi} other {{counter} Gönderi}}", "account.unblock": "@{name} adlı kişinin engelini kaldır", @@ -59,7 +59,7 @@ "alert.unexpected.title": "Hay aksi!", "announcement.announcement": "Duyuru", "attachments_list.unprocessed": "(işlenmemiş)", - "audio.hide": "Hide audio", + "audio.hide": "Sesi gizle", "autosuggest_hashtag.per_week": "Haftada {count}", "boost_modal.combo": "Bir daha ki sefere {combo} tuşuna basabilirsin", "bundle_column_error.body": "Bu bileşen yüklenirken bir şeyler ters gitti.", @@ -197,6 +197,22 @@ "explore.trending_links": "Haberler", "explore.trending_statuses": "Gönderiler", "explore.trending_tags": "Etiketler", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Tamam", "follow_recommendations.heading": "Gönderilerini görmek isteyeceğiniz kişileri takip edin! Burada bazı öneriler bulabilirsiniz.", "follow_recommendations.lead": "Takip ettiğiniz kişilerin gönderileri anasayfa akışınızda kronolojik sırada görünmeye devam edecek. Hata yapmaktan çekinmeyin, kişileri istediğiniz anda kolayca takipten çıkabilirsiniz!", @@ -471,6 +487,7 @@ "status.edited_x_times": "{count, plural, one {{count} kez} other {{count} kez}} düzenlendi", "status.embed": "Gömülü", "status.favourite": "Favorilerine ekle", + "status.filter": "Filter this post", "status.filtered": "Filtrelenmiş", "status.hide": "Gönderiyi sakla", "status.history.created": "{name} oluşturdu {date}", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index 9e72174d1..c2739e181 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index bc5e9d91c..c77444bff 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index e26a73f62..e1b10445d 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Ой!", "announcement.announcement": "Оголошення", "attachments_list.unprocessed": "(не оброблено)", - "audio.hide": "Hide audio", + "audio.hide": "Сховати аудіо", "autosuggest_hashtag.per_week": "{count} в тиждень", "boost_modal.combo": "Ви можете натиснути {combo}, щоб пропустити це наступного разу", "bundle_column_error.body": "Щось пішло не так під час завантаження цього компоненту.", @@ -197,6 +197,22 @@ "explore.trending_links": "Новини", "explore.trending_statuses": "Дописи", "explore.trending_tags": "Хештеґи", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Готово", "follow_recommendations.heading": "Підпишіться на людей, чиї дописи ви хочете бачити! Ось деякі пропозиції.", "follow_recommendations.lead": "Дописи від людей, за якими ви стежите, з'являться в хронологічному порядку у вашій домашній стрічці. Не бійся помилятися, ви можете відписатися від людей так само легко в будь-який час!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Відредаговано {count, plural, one {{count} раз} few {{count} рази} many {{counter} разів} other {{counter} разів}}", "status.embed": "Вбудувати", "status.favourite": "Подобається", + "status.filter": "Filter this post", "status.filtered": "Відфільтровано", "status.hide": "Сховати дмух", "status.history.created": "{name} створює {date}", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index be9b8b80d..19cee9c2a 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 016fa6b76..3dc6db112 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Ốiii!", "announcement.announcement": "Có gì mới?", "attachments_list.unprocessed": "(chưa xử lí)", - "audio.hide": "Hide audio", + "audio.hide": "Ẩn âm thanh", "autosuggest_hashtag.per_week": "{count} mỗi tuần", "boost_modal.combo": "Nhấn {combo} để bỏ qua bước này", "bundle_column_error.body": "Đã có lỗi xảy ra trong khi tải nội dung này.", @@ -197,6 +197,22 @@ "explore.trending_links": "Tin tức", "explore.trending_statuses": "Tút", "explore.trending_tags": "Hashtag", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Xong", "follow_recommendations.heading": "Theo dõi những người bạn muốn đọc tút của họ! Dưới đây là vài gợi ý.", "follow_recommendations.lead": "Tút từ những người bạn theo dõi sẽ hiện theo thứ tự thời gian trên bảng tin. Đừng ngại, bạn có thể dễ dàng ngưng theo dõi họ bất cứ lúc nào!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Đã sửa {count, plural, other {{count} lần}}", "status.embed": "Nhúng", "status.favourite": "Thích", + "status.filter": "Filter this post", "status.filtered": "Bộ lọc", "status.hide": "Ẩn tút", "status.history.created": "{name} tạo lúc {date}", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index e96b64cc4..92201375d 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Embed", "status.favourite": "Favourite", + "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index f250aa1b7..9241eeec8 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "哎呀!", "announcement.announcement": "公告", "attachments_list.unprocessed": "(未处理)", - "audio.hide": "Hide audio", + "audio.hide": "隐藏音频", "autosuggest_hashtag.per_week": "每星期 {count} 条", "boost_modal.combo": "下次按住 {combo} 即可跳过此提示", "bundle_column_error.body": "载入这个组件时发生了错误。", @@ -110,8 +110,8 @@ "compose_form.publish": "发布", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "保存更改", - "compose_form.sensitive.hide": "{count, plural, one {将媒体标记为敏感内容} other {将媒体标记为敏感内容}}", - "compose_form.sensitive.marked": "{count, plural, one {媒体已被标记为敏感内容} other {媒体已被标记为敏感内容}}", + "compose_form.sensitive.hide": "标记媒体为敏感内容", + "compose_form.sensitive.marked": "媒体已被标记为敏感内容", "compose_form.sensitive.unmarked": "媒体未被标记为敏感内容", "compose_form.spoiler.marked": "移除内容警告", "compose_form.spoiler.unmarked": "添加内容警告", @@ -197,6 +197,22 @@ "explore.trending_links": "最新消息", "explore.trending_statuses": "嘟文", "explore.trending_tags": "话题标签", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "完成", "follow_recommendations.heading": "关注你感兴趣的用户!这里有一些推荐。", "follow_recommendations.lead": "你关注的人的嘟文将按时间顺序在你的主页上显示。 别担心,你可以随时取消关注!", @@ -204,8 +220,8 @@ "follow_request.reject": "拒绝", "follow_requests.unlocked_explanation": "尽管你没有锁嘟,但是 {domain} 的工作人员认为你也许会想手动审核审核这些账号的关注请求。", "generic.saved": "已保存", - "getting_started.developers": "开发", - "getting_started.directory": "用户目录", + "getting_started.developers": "开发者", + "getting_started.directory": "个人资料目录", "getting_started.documentation": "文档", "getting_started.heading": "开始使用", "getting_started.invite": "邀请用户", @@ -437,7 +453,7 @@ "report.thanks.title_actionable": "感谢提交举报,我们将会进行处理。", "report.unfollow": "取消关注 @{name}", "report.unfollow_explanation": "你正在关注此账户。如果要想在你的主页上不再看到他们的帖子,取消对他们的关注即可。", - "report_notification.attached_statuses": "{count, plural, one {{count} 嘟文} other {{count} 嘟文}} 附件", + "report_notification.attached_statuses": "附上 {count} 条嘟文", "report_notification.categories.other": "其他", "report_notification.categories.spam": "骚扰", "report_notification.categories.violation": "违反规则", @@ -471,6 +487,7 @@ "status.edited_x_times": "共编辑 {count, plural, one {{count} 次} other {{count} 次}}", "status.embed": "嵌入", "status.favourite": "喜欢", + "status.filter": "Filter this post", "status.filtered": "已过滤", "status.hide": "屏蔽嘟文", "status.history.created": "{name} 创建于 {date}", @@ -521,7 +538,7 @@ "timeline_hint.resources.followers": "关注者", "timeline_hint.resources.follows": "关注", "timeline_hint.resources.statuses": "更早的嘟文", - "trends.counter_by_accounts": "过去{day}天有{counter}人讨论", + "trends.counter_by_accounts": "过去 {day} 天有 {counter} 人讨论", "trends.trending_now": "现在流行", "ui.beforeunload": "如果你现在离开 Mastodon,你的草稿内容将会丢失。", "units.short.billion": "{count} B", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index f17df83c4..fdc206800 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -197,6 +197,22 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "完成", "follow_recommendations.heading": "跟隨人們以看到來自他們的嘟文!這裡有些建議。", "follow_recommendations.lead": "您跟隨對象知嘟文將會以時間順序顯示於您的 home feed 上。別擔心犯下錯誤,您隨時可以取消跟隨人們!", @@ -471,6 +487,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "嵌入", "status.favourite": "最愛", + "status.filter": "Filter this post", "status.filtered": "已過濾", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index a18e92066..13eee62de 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "哎呀!", "announcement.announcement": "公告", "attachments_list.unprocessed": "(未經處理)", - "audio.hide": "Hide audio", + "audio.hide": "隱藏音訊", "autosuggest_hashtag.per_week": "{count} / 週", "boost_modal.combo": "下次您可以按 {combo} 跳過", "bundle_column_error.body": "載入此元件時發生錯誤。", @@ -197,6 +197,22 @@ "explore.trending_links": "最新消息", "explore.trending_statuses": "嘟文", "explore.trending_tags": "主題標籤", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "完成", "follow_recommendations.heading": "跟隨您想檢視其嘟文的人!這裡有一些建議。", "follow_recommendations.lead": "來自您跟隨的人之嘟文將會按時間順序顯示在您的首頁時間軸上。不要害怕犯錯,您隨時都可以取消跟隨其他人!", @@ -471,6 +487,7 @@ "status.edited_x_times": "已編輯 {count, plural, one {{count} 次} other {{count} 次}}", "status.embed": "內嵌", "status.favourite": "最愛", + "status.filter": "Filter this post", "status.filtered": "已過濾", "status.hide": "隱藏嘟文", "status.history.created": "{name} 於 {date} 建立", diff --git a/config/locales/da.yml b/config/locales/da.yml index a08748deb..9538186c4 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -1180,6 +1180,8 @@ da: edit: add_keyword: Tilføj nøgleord keywords: Nøgleord + statuses: Individuelle indlæg + statuses_hint_html: Dette filter gælder for udvalgte, individuelle indlæg, uanset om de matcher nøgleordene nedenfor. Disse indlæg kan gennemgås og fjernes fra filteret ved at klikke hér. title: Redigere filter errors: deprecated_api_multiple_keywords: Disse parametre kan ikke ændres fra denne applikation, da de gælder for flere end ét filternøgleord. Brug en nyere applikation eller webgrænsefladen. @@ -1193,10 +1195,23 @@ da: keywords: one: "%{count} nøgleord" other: "%{count} nøgleord" + statuses: + one: "%{count} indlæg" + other: "%{count} indlæg" + statuses_long: + one: "%{count} individuelt indlæg skjult" + other: "%{count} individuelle indlæg skjult" title: Filtre new: save: Gem nye filter title: Tilføj nyt filter + statuses: + back_to_filter: Returnér til filter + batch: + remove: Fjern fra filter + index: + hint: Dette filter gælder for udvalgte, individuelle indlæg uanset andre kriterier. Flere indlæg kan føjes til filteret via webgrænsefladen. + title: Filtrerede indlæg footer: developers: Udviklere more: Mere… diff --git a/config/locales/devise.tr.yml b/config/locales/devise.tr.yml index 98baf2916..86b1c951f 100644 --- a/config/locales/devise.tr.yml +++ b/config/locales/devise.tr.yml @@ -8,7 +8,7 @@ tr: failure: already_authenticated: Zaten oturum açtınız. inactive: Hesabınız henüz etkinleştirilmedi. - invalid: Geçersiz %{authentication_keys} ya da şifre. + invalid: Geçersiz %{authentication_keys} ya da parola. last_attempt: Hesabınız kilitlenmeden önce bir kez daha denemeniz gerekir. locked: Hesabınız kilitlendi. not_found_in_database: Geçersiz %{authentication_keys} ya da parola. @@ -31,7 +31,7 @@ tr: subject: 'Mastodon: E-posta adresi değişti' title: Yeni e-posta adresi password_change: - explanation: Hesabınızın şifresi değiştirildi. + explanation: Hesabınızın parolası değiştirildi. extra: Parolanızı değiştirmediyseniz, büyük olasılıkla birileri hesabınıza erişmiş olabilir. Lütfen derhal parolanızı değiştirin veya hesabınız kilitlendiyse sunucu yöneticisine başvurun. subject: 'Mastodon: Parola değiştirildi' title: Parola değiştirildi @@ -81,11 +81,11 @@ tr: failure: '%{kind}''den kimliğiniz doğrulanamadı çünkü "%{reason}".' success: "%{kind} hesabından başarıyla kimlik doğrulaması yapıldı." passwords: - no_token: Bu sayfaya şifre sıfırlama e-postasından gelmeden erişemezsiniz. Şifre sıfırlama e-postasından geliyorsanız lütfen sağlanan tam URL'yi kullandığınızdan emin olun. + no_token: Bu sayfaya parola sıfırlama e-postasından gelmeden erişemezsiniz. Parola sıfırlama e-postasından geliyorsanız lütfen sağlanan tam URL'yi kullandığınızdan emin olun. send_instructions: E-posta adresiniz veritabanımızda varsa, e-posta adresinize birkaç dakika içinde bir parola kurtarma bağlantısı gönderilir. Bu e-postayı almadıysanız, lütfen spam klasörünüzü kontrol edin. send_paranoid_instructions: E-posta adresiniz veritabanımızda varsa, e-posta adresinize birkaç dakika içinde bir parola kurtarma bağlantısı gönderilir. Bu e-postayı almadıysanız, lütfen spam klasörünüzü kontrol edin. - updated: Şifreniz başarılı bir şekilde değiştirildi. Şu an oturum açtınız. - updated_not_active: Şifreniz başarıyla değiştirildi. + updated: Parolanız başarılı bir şekilde değiştirildi. Şu an oturum açtınız. + updated_not_active: Parolanız başarıyla değiştirildi. registrations: destroyed: Görüşürüz! hesabın başarıyla iptal edildi. Umarız seni sonra tekrar görürüz. signed_up: Hoş geldiniz! Başarılı bir şekilde oturum açtınız. diff --git a/config/locales/doorkeeper.ku.yml b/config/locales/doorkeeper.ku.yml index f92a228d1..c4e66aef1 100644 --- a/config/locales/doorkeeper.ku.yml +++ b/config/locales/doorkeeper.ku.yml @@ -67,7 +67,7 @@ ku: title: Destûr hildana vê kodê jê bigire û ji sepanê re pêve bike. authorized_applications: buttons: - revoke: Betal bike + revoke: Rake confirmations: revoke: Ma tu bawerî? index: @@ -149,7 +149,7 @@ ku: scopes: admin:read: hemû daneyên li ser rajekar bixwîne admin:read:accounts: zanyariyên hestiyar yên hemû ajimêran li ser rajekar bixwîne - admin:read:reports: zanyariyên hestiyar yên hemû gilîyan û ajimêrên gilêkirî li ser rajekar bixwîne + admin:read:reports: zanyariyên hestiyar yên hemû ragihandinan û ajimêrên ragihandî li ser rajekar bixwîne admin:write: hemû daneyên li ser rajekar biguherîne admin:write:accounts: di ajimêrê de çalakiyên li hev kirî pêk bîne admin:write:reports: di ragihandinê de çalakiyên li hev kirî pêk bîne @@ -181,5 +181,5 @@ ku: write:media: pelên medya bar bike write:mutes: mirovan û axaftinan bêdeng bike write:notifications: agahdariyên xwe pak bike - write:reports: mirovên din gilî bike + write:reports: mirovên din ragihîne write:statuses: şandiyekê biweşîne diff --git a/config/locales/doorkeeper.tr.yml b/config/locales/doorkeeper.tr.yml index 351d271d0..51d0dff08 100644 --- a/config/locales/doorkeeper.tr.yml +++ b/config/locales/doorkeeper.tr.yml @@ -81,7 +81,7 @@ tr: errors: messages: access_denied: Kaynak sahibi veya yetkilendirme sunucusu isteği reddetti. - credential_flow_not_configured: Kaynak Sahibi Şifresi Kimlik Bilgileri akışı Doorkeeper.configure.resource_owner_from_credentials 'ın yapılandırılmamış olması nedeniyle başarısız oldu. + credential_flow_not_configured: Kaynak Sahibi Parolası Kimlik Bilgileri akışı Doorkeeper.configure.resource_owner_from_credentials 'ın yapılandırılmamış olması nedeniyle başarısız oldu. invalid_client: İstemcinin kimlik doğrulaması bilinmeyen istemci, istemci kimlik doğrulamasının dahil olmaması veya desteklenmeyen kimlik doğrulama yöntemi nedeniyle başarısız oldu. invalid_grant: Sağlanan yetkilendirme izni geçersiz, süresi dolmuş, iptal edilmiş, yetkilendirme isteğinde kullanılan yönlendirme URL'siyle eşleşmiyor veya başka bir istemciye verilmiş. invalid_redirect_uri: Dahil edilmiş yönlendirme URL'si geçersiz. diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 6ac1eb45d..3eabb665a 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -31,7 +31,7 @@ eo: privacy_policy: Politiko de privateco rules: Reguloj de la servilo see_whats_happening: Vidi kio okazas - server_stats: 'Statistiko de la servilo:' + server_stats: 'Statistikoj de la servilo:' source_code: Fontkodo status_count_after: one: mesaĝo diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index c4d9ee969..72c2ad347 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -1181,6 +1181,8 @@ es-AR: edit: add_keyword: Agregar palabra clave keywords: Palabras clave + statuses: Mensajes individuales + statuses_hint_html: Este filtro se aplica a los mensajes individuales seleccionados, independientemente de si coinciden con las palabras clave de abajo. Podés revisar estos mensajes y eliminarlos del filtro haciendo clic acá. title: Editar filtro errors: deprecated_api_multiple_keywords: Estos parámetros no se pueden cambiar de esta aplicación porque se aplican a más de una palabra clave de filtro. Usá una aplicación más reciente o la interface web. @@ -1194,10 +1196,23 @@ es-AR: keywords: one: "%{count} palabra clave" other: "%{count} palabras clave" + statuses: + one: "%{count} mensaje" + other: "%{count} mensajes" + statuses_long: + one: "%{count} mensaje individual oculto" + other: "%{count} mensajes individuales ocultos" title: Filtros new: save: Guardar nuevo filtro title: Agregar nuevo filtro + statuses: + back_to_filter: Volver al filtro + batch: + remove: Quitar del filtro + index: + hint: Este filtro se aplica a la selección de mensajes individuales independientemente de otros criterios. Podés agregar más mensajes a este filtro desde la interface web. + title: Mensajes filtrados footer: developers: Desarrolladores more: Más… diff --git a/config/locales/es.yml b/config/locales/es.yml index 568ad46d9..8d2ed1a33 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -1181,6 +1181,8 @@ es: edit: add_keyword: Añadir palabra clave keywords: Palabras clave + statuses: Publicaciones individuales + statuses_hint_html: Este filtro se aplica a las publicaciones individuales seleccionadas, independientemente de si coinciden con las palabras clave de abajo. Puedes revisar estos mensajes y eliminarlos del filtro pulsando aquí. title: Editar filtro errors: deprecated_api_multiple_keywords: Estos parámetros no se pueden cambiar desde esta aplicación porque se aplican a más de una palabra clave de filtro. Utilice una aplicación más reciente o la interfaz web. @@ -1194,10 +1196,23 @@ es: keywords: one: "%{count} palabra clave" other: "%{count} palabras clave" + statuses: + one: "%{count} publicación" + other: "%{count} publicaciones" + statuses_long: + one: "%{count} publicación individual oculta" + other: "%{count} publicaciones individuales ocultas" title: Filtros new: save: Guardar nuevo filtro title: Añadir nuevo filtro + statuses: + back_to_filter: Volver a filtrar + batch: + remove: Eliminar del filtro + index: + hint: Este filtro se aplica a la selección de publicaciones individuales independientemente de otros criterios. Puede añadir más mensajes a este filtro desde la interfaz Web. + title: Publicaciones filtradas footer: developers: Desarrolladores more: Mas… diff --git a/config/locales/fi.yml b/config/locales/fi.yml index bbc44d644..b48d8ab9f 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -38,6 +38,7 @@ fi: one: julkaisun other: julkaisua status_count_before: Julkaistu + tagline: Hajautettu sosiaalinen verkosto terms: Käyttöehdot unavailable_content: Moderoidut palvelimet unavailable_content_description: @@ -102,11 +103,17 @@ fi: avatar: Profiilikuva by_domain: Verkkotunnus change_email: + changed_msg: Sähköpostin vaihto onnistui! current_email: Nykyinen sähköposti label: Vaihda sähköposti new_email: Uusi sähköposti submit: Vaihda sähköposti title: Vaihda sähköposti käyttäjälle %{username} + change_role: + changed_msg: Rooli vaihdettu onnistuneesti! + label: Vaihda roolia + no_role: Ei roolia + title: Vaihda roolia käyttäjälle %{username} confirm: Vahvista confirmed: Vahvistettu confirming: Vahvistetaan @@ -150,6 +157,7 @@ fi: active: Aktiivinen all: Kaikki pending: Odottavat + silenced: Rajoitettu suspended: Jäähyllä title: Moderointi moderation_notes: Moderointimerkinnät @@ -157,10 +165,14 @@ fi: most_recent_ip: Viimeisin IP no_account_selected: Yhtään tiliä ei muutettu, koska mitään ei valittu no_limits_imposed: Rajoituksia ei ole asetettu + no_role_assigned: Roolia ei ole määritetty not_subscribed: Ei tilaaja pending: Odottaa tarkistusta perform_full_suspension: Siirrä kokonaan jäähylle previous_strikes: Aiemmat varoitukset + previous_strikes_description_html: + one: Tällä tilillä on yksi varoitus. + other: Tällä tilillä on %{count} varoitusta. promote: Ylennä protocol: Protokolla public: Julkinen @@ -180,6 +192,7 @@ fi: reset: Palauta reset_password: Palauta salasana resubscribe: Tilaa uudelleen + role: Rooli search: Hae search_same_email_domain: Muut käyttäjät, joilla on sama sähköpostiverkkotunnus search_same_ip: Muut käyttäjät samalla IP-osoitteella @@ -358,6 +371,7 @@ fi: enable: Ota käyttöön enabled: Käytössä enabled_msg: Emojin käyttöönotto onnistui + image_hint: PNG tai GIF enintään %{size} list: Listaa listed: Listassa new: @@ -414,6 +428,7 @@ fi: destroyed_msg: Verkkotunnuksen esto on peruttu domain: Verkkotunnus edit: Muokkaa verkkotunnuksen estoa + existing_domain_block: Olet jo asettanut tiukemmat rajoitukset %{name}. existing_domain_block_html: Olet jo asettanut %{name} tiukemmat rajat ja sinun täytyy poistaa se ensin. new: create: Luo esto @@ -464,14 +479,43 @@ fi: title: Noudata suosituksia unsuppress: Palauta seuraa suositus instances: + availability: + failure_threshold_reached: Epäonnistumisen kynnys saavutettu %{date}. + failures_recorded: + one: Epäonnistuneita yrityksiä %{count} päivässä. + other: Epäonnistuneita yrityksiä %{count} päivää. + no_failures_recorded: Ei epäonnistumisia kirjattu. + title: Saatavuus + warning: Viimeisin yritys yhdistää yhteys tähän palvelimeen on epäonnistunut back_to_all: Kaikki back_to_limited: Rajoitettu back_to_warning: Varoitus by_domain: Verkkotunnus confirm_purge: Oletko varma, että haluat pysyvästi poistaa tiedot tältä verkkotunnukselta? + content_policies: + comment: Sisäinen huomautus + description_html: Voit määrittää sisältökäytännöt, joita sovelletaan kaikkiin tämän verkkotunnuksen ja sen aliverkkotunnuksien tileihin. + policies: + reject_media: Hylkää media + reject_reports: Hylkää raportit + silence: Rajoitus + suspend: Jäädytä + policy: Käytännöt + reason: Julkinen syy + title: Sisällön toimintatavat + dashboard: + instance_accounts_dimension: Seuratuimmat tilit + instance_accounts_measure: tallennetut tilit + instance_followers_measure: seuraajamme siellä + instance_follows_measure: heidän seuraajansa täällä + instance_languages_dimension: Suosituimmat kielet + instance_media_attachments_measure: tallennetut median liitteet + instance_reports_measure: niitä koskevat raportit + instance_statuses_measure: tallennetut viestit delivery: all: Kaikki clear: Tyhjennä toimitusvirheet + failing: Epäonnistuminen restart: Käynnistä toimitus uudelleen stop: Lopeta toimitus unavailable: Ei saatavilla @@ -480,6 +524,9 @@ fi: delivery_error_hint: Jos toimitus ei ole mahdollista %{count} päivän aikana, se merkitään automaattisesti toimittamattomaksi. destroyed_msg: Tiedot %{domain} on nyt jonossa välitöntä poistoa varten. empty: Verkkotunnuksia ei löytynyt. + known_accounts: + one: "%{count} tunnettu tili" + other: "%{count} tunnettua tiliä" moderation: all: Kaikki limited: Rajoitettu @@ -487,12 +534,14 @@ fi: private_comment: Yksityinen kommentti public_comment: Julkinen kommentti purge: Tyhjennä + purge_description_html: Jos uskot tämän verkkotunnuksen olevan offline-tilassa, voit poistaa kaikki tilitietueet ja niihin liittyvät tiedot sinun tallennustilasta. Tämä voi kestää jonkin aikaa. title: Tiedossa olevat instanssit total_blocked_by_us: Estetty meidän toimesta total_followed_by_them: Heidän seuraama total_followed_by_us: Meidän seuraama total_reported: Niitä koskevat raportit total_storage: Medialiitteet + totals_time_period_hint_html: Alla näkyvät yhteenlasketut tiedot sisältävät koko ajan. invites: deactivate_all: Poista kaikki käytöstä filter: @@ -547,6 +596,7 @@ fi: action_taken_by: Toimenpiteen tekijä actions: delete_description_html: Ilmoitetut viestit poistetaan ja kirjataan varoitus, joka auttaa sinua saman tilin tulevista rikkomuksista. + mark_as_sensitive_description_html: Ilmoitettujen viestien media merkitään arkaluonteisiksi ja varoitus tallennetaan, jotta voit kärjistää saman tilin tulevia rikkomuksia. other_description_html: Katso lisää vaihtoehtoja tilin käytöksen hallitsemiseksi ja ilmoitetun tilin viestinnän mukauttamiseksi. resolve_description_html: Ilmoitettua tiliä vastaan ei ryhdytä toimenpiteisiin, varoitusta ei kirjata ja raportti suljetaan. silence_description_html: Profiili näkyy vain niille, jotka jo seuraavat sitä tai etsivät sen manuaalisesti, mikä rajoittaa merkittävästi kattavuutta. Se voidaan aina palauttaa. @@ -596,6 +646,20 @@ fi: unresolved: Ratkaisemattomat updated_at: Päivitetty view_profile: Näytä profiili + roles: + add_new: Lisää rooli + assigned_users: + one: "%{count} käyttäjä" + other: "%{count} käyttäjää" + categories: + administration: Ylläpito + devops: Operaattorit + invites: Kutsut + moderation: Moderointi + special: Erikois + delete: Poista + description_html: Käyttäjän roolit, voit muokata toimintoja ja alueita mitä sinun Mastodon käyttäjät voivat käyttää. + edit: Muokkaa "%{name}" roolia rules: add_new: Lisää sääntö delete: Poista @@ -773,13 +837,36 @@ fi: trending_rank: 'Nousussa #%{rank}' usable: Voidaan käyttää usage_comparison: Käytetty %{today} kertaa tänään, verrattuna %{yesterday} eiliseen + used_by_over_week: + one: Yhden henkilön käyttämä viime viikon aikana + other: Käyttänyt %{count} henkilöä viimeisen viikon aikana title: Trendit + trending: Nousussa warning_presets: add_new: Lisää uusi delete: Poista edit_preset: Muokkaa varoituksen esiasetusta empty: Et ole vielä määrittänyt yhtään varoitusesiasetusta. title: Hallinnoi varoitusesiasetuksia + webhooks: + add_new: Lisää päätepiste + delete: Poista + disable: Poista käytöstä + disabled: Ei käytössä + edit: Muokkaa päätepistettä + empty: Sinulla ei ole vielä määritetty webhook-päätepisteitä. + enable: Ota käyttöön + enabled: Aktiivinen + enabled_events: + one: 1 aktivoitu tapahtuma + other: "%{count} aktivoitua tapahtumaa" + events: Tapahtumat + new: Uusi webhook + rotate_secret: Vaihda salaus + secret: Salainen tunnus + status: Tila + title: Webhookit + webhook: Webhook admin_mailer: new_appeal: actions: @@ -964,10 +1051,12 @@ fi: appealed_msg: Valituksesi on lähetetty. Jos se hyväksytään, sinulle ilmoitetaan. appeals: submit: Lähetä valitus + approve_appeal: Hyväksy valitus associated_report: Liittyvä raportti created_at: Päivätty description_html: Nämä ovat tiliäsi koskevia toimia ja varoituksia, jotka %{instance} henkilökunta on lähettänyt sinulle. recipient: Osoitettu + reject_appeal: Hylkää valitus status: 'Viesti #%{id}' status_removed: Viesti on jo poistettu järjestelmästä title: "%{action} alkaen %{date}" @@ -1030,14 +1119,23 @@ fi: public: Julkiset aikajanat thread: Keskustelut edit: + add_keyword: Lisää avainsana + keywords: Avainsanat title: Muokkaa suodatinta errors: invalid_context: Ei sisältöä tai se on virheellinen index: + contexts: Suodattimet %{contexts} delete: Poista empty: Sinulla ei ole suodattimia. + expires_in: Vanhenee %{distance} + expires_on: Vanhenee %{date} + keywords: + one: "%{count} avainsana" + other: "%{count} avainsanaa" title: Suodattimet new: + save: Tallenna uusi suodatin title: Lisää uusi suodatin footer: developers: Kehittäjille @@ -1156,6 +1254,8 @@ fi: copy_account_note_text: 'Tämä käyttäjä siirtyi paikasta %{acct}, tässä olivat aiemmat muistiinpanosi niistä:' notification_mailer: admin: + report: + subject: "%{name} lähetti raportin" sign_up: subject: "%{name} kirjautunut" digest: @@ -1165,6 +1265,9 @@ fi: new_followers_summary: one: Olet myös saanut yhden uuden seuraajan! Juhuu! other: Olet myös saanut %{count} uutta seuraajaa! Aivan mahtavaa! + subject: + one: "1 uusi ilmoitus viime käyntisi jälkeen 🐘" + other: "%{count} uutta ilmoitusta viime käyntisi jälkeen 🐘" title: Poissaollessasi… favourite: body: "%{name} tykkäsi tilastasi:" @@ -1278,6 +1381,11 @@ fi: reports: errors: invalid_rules: ei viittaa voimassa oleviin sääntöihin + rss: + content_warning: 'Sisällön varoitus:' + descriptions: + account: Julkiset viestit lähettäjältä @%{acct} + tag: 'Julkiset viestit merkitty #%{hashtag}' scheduled_statuses: over_daily_limit: Olet ylittänyt %{limit} ajoitetun viestin rajan tälle päivälle over_total_limit: Olet ylittänyt %{limit} ajoitetun viestin rajan @@ -1365,6 +1473,7 @@ fi: disallowed_hashtags: one: 'sisälsi aihetunnisteen jota ei sallita: %{tags}' other: 'sisälsi aihetunnisteet joita ei sallita: %{tags}' + edited_at_html: Muokattu %{date} errors: in_reply_not_found: Viesti, johon yrität vastata, ei näytä olevan olemassa. open_in_web: Avaa selaimessa @@ -1435,6 +1544,9 @@ fi: pinned: Kiinnitetty tuuttaus reblogged: buustasi sensitive_content: Arkaluontoista sisältöä + strikes: + errors: + too_late: On liian myöhäistä vedota tähän varoitukseen tags: does_not_match_previous_name: ei vastaa edellistä nimeä terms: @@ -1477,6 +1589,13 @@ fi: explanation: Pyysit täydellistä varmuuskopiota Mastodon-tilistäsi. Voit nyt ladata sen! subject: Arkisto on valmiina ladattavaksi title: Arkiston tallennus + suspicious_sign_in: + change_password: vaihda salasanasi + details: 'Tässä on tiedot kirjautumisesta:' + explanation: Olemme havainneet kirjautumisen tilillesi uudesta IP-osoitteesta. + further_actions_html: Jos et ollut sinä, suosittelemme, että %{action} teet välittömästi ja otat kaksivaiheisen todennuksen käyttöön tilisi turvallisuuden varmistamiseksi. + subject: Tiliäsi on käytetty uudesta IP-osoitteesta + title: Uusi kirjautuminen warning: appeal: Lähetä valitus appeal_description: Jos uskot, että tämä on virhe, voit hakea muutosta henkilökunnalta %{instance}. diff --git a/config/locales/gl.yml b/config/locales/gl.yml index a5baa17f2..5610272b7 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -1181,6 +1181,8 @@ gl: edit: add_keyword: Engadir palabra chave keywords: Palabras chave + statuses: Publicacións individuais + statuses_hint_html: Este filtro aplícase para seleccionar publicacións individuais independentemente de se concordan coas palabras chave aquí indicadas. Podes revisar estas publicacións e eliminalas do filtro premendo aquí. title: Editar filtro errors: deprecated_api_multiple_keywords: Estes parámetros non se poden cambiar desde esta aplicación porque son de aplicación a máis dun filtro de palabras chave. Usa unha aplicación máis recente ou a interface web. @@ -1194,10 +1196,23 @@ gl: keywords: one: "%{count} palabra chave" other: "%{count} palabras chave" + statuses: + one: "%{count} publicación" + other: "%{count} publicacións" + statuses_long: + one: "%{count} publicación individual agochada" + other: "%{count} publicacións individuais agochadas" title: Filtros new: save: Gardar o novo filtro title: Engadir novo filtro + statuses: + back_to_filter: Volver ao filtro + batch: + remove: Eliminar do filtro + index: + hint: Este filtro aplícase para seleccionar publicacións individuais independentemente de outros criterios. Podes engadir máis publicacións a este filtro desde a interface Web. + title: Publicacións filtradas footer: developers: Desenvolvedoras more: Máis… diff --git a/config/locales/is.yml b/config/locales/is.yml index 943fff632..db856011b 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -1181,6 +1181,8 @@ is: edit: add_keyword: Bæta við stikkorði keywords: Stikkorð + statuses: Einstakar færslur + statuses_hint_html: Þessi sía virkar til að velja stakar færslur burtséð frá því hvort þær samsvari stikkorðunum hér fyrir neðan. Þú getur yfirfarið þessar færslur og fjarlægt þær úr síunni með því að smella hér. title: Breyta síu errors: deprecated_api_multiple_keywords: Þessum viðföngum er ekki hægt að breyta úr þessu forriti, þar sem þau eiga við fleiri en eitt stikkorð síu. Notaðu nýrra forrit eða farðu í vefviðmótið. @@ -1194,10 +1196,23 @@ is: keywords: one: "%{count} stikkorð" other: "%{count} stikkorð" + statuses: + one: "%{count} færsla" + other: "%{count} færslur" + statuses_long: + one: "%{count} stök færsla falin" + other: "%{count} stakar færslur faldar" title: Síur new: save: Vista nýja síu title: Bæta við nýrri síu + statuses: + back_to_filter: Til baka í síu + batch: + remove: Fjarlægja úr síu + index: + hint: Þessi sía virkar til að velja stakar færslur án tillits til annarra skilyrða. Þú getur bætt fleiri færslum í þessa síu í vefviðmótinu. + title: Síaðar færslur footer: developers: Forritarar more: Meira… diff --git a/config/locales/ko.yml b/config/locales/ko.yml index f290318a6..4788365c2 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -1163,6 +1163,8 @@ ko: edit: add_keyword: 키워드 추가 keywords: 키워드 + statuses: 개별 게시물 + statuses_hint_html: 이 필터는 아래 키워드들의 매치 여부와는 관계 없이 선택된 개별적인 게시물들에 적용됩니다. 다음 게시물들을 검토하고 여기를 클릭해 필터에서 제거할 수 있습니다. title: 필터 편집 errors: deprecated_api_multiple_keywords: 이 파라미터들은 하나를 초과하는 필터 키워드에 적용되기 때문에 이 응용프로그램에서 수정될 수 없습니다. 더 최신의 응용프로그램이나 웹 인터페이스를 사용하세요. @@ -1175,10 +1177,21 @@ ko: expires_on: "%{date}에 만료됨" keywords: other: "%{count}개의 키워드" + statuses: + other: "%{count}개의 게시물" + statuses_long: + other: "%{count}개의 개별적인 게시물 숨겨짐" title: 필터 new: save: 새 필터 저장 title: 필터 추가 + statuses: + back_to_filter: 필터로 돌아가기 + batch: + remove: 필터에서 제거 + index: + hint: 이 필터는 다른 기준에 관계 없이 선택된 개별적인 게시물들에 적용됩니다. 웹 인터페이스에서 더 많은 게시물들을 이 필터에 추가할 수 있습니다. + title: 필터링된 게시물 footer: developers: 개발자 more: 더 보기… diff --git a/config/locales/ku.yml b/config/locales/ku.yml index b6b663662..497876c6c 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -19,10 +19,10 @@ ku: continue_to_web: Bo malpera sepanê bidomîne discover_users: Bikarhêneran keşf bike documentation: Pelbend - federation_hint_html: Bi ajimêrê xwe %{instance} re tu dikarî kesên rajekar û li derveyî mastodonê bişopînî. + federation_hint_html: Bi ajimêrê xwe %{instance} re tu dikarî kesên ji her kîjan rajekarê mastodonê bişopînî. get_apps: Sepaneke mobîl bicerbîne hosted_on: Mastodon li ser %{domain} tê pêşkêşkirin - instance_actor_flash: 'Ev ajimêr aktorekî aşopî ye ji bo rajekar were temsîl kirin tê bikaranîn ne ajimêra kesî ye. Ji bo armanca federasyonê dixebite û divê ney asteng kirin heta ku te xwest hemû nimûneyan asteng bikî, di vir de ger tu blogek navper bikarbînî. + instance_actor_flash: 'Ev ajimêr şanogereke aşopî ye ji bo rajekar were naskirin tê bikaranîn ne ajimêra kesî ye. Ji bo armanca giştî dixebite û divê neye astengkirin heya ku te xwest hemû mînakan asteng bikî, di vir de ku tu navpereke astengiyê bi kar bînî. ' learn_more: Bêtir fêr bibe @@ -58,14 +58,14 @@ ku: what_is_mastodon: Mastodon çi ye? accounts: choices_html: 'Hilbijartina %{name}:' - endorsements_hint: Tu dikarî kesên ku di navrûyê wep de dişopînî bipejirînî û ew li vir were nîşan kirin. - featured_tags_hint: Tu dikarî hashtagên teybetî li vir tê nîşan kirin di pê de derxî. + endorsements_hint: Tu dikarî kesên ku di navrûya tevnê de dişopînî bipejirînî û ew ê li vir were nîşankirin. + featured_tags_hint: Tu dikarî hashtagên taybet ên ku wê li vir werin nîşandan bibînî. follow: Bişopîne followers: one: Şopîner other: Şopîner following: Dişopîne - instance_actor_flash: Ev ajimêr listikvaneke rastkî ye ku ji bo wek nûnerê rajekar bixwe tê bikaranîn û ne bikarhênerek kesane. Ew ji bo mebestên yekbûyî tê bikaranîn û divê neyê rawestandin. + instance_actor_flash: Ev ajimêr listikvaneke rastkî ye ku ji bo wek nûnerê rajekar bixwe tê bikaranîn û ne bikarhênerek kesane. Ew ji bo mebestên giştî tê bikaranîn û divê neyê rawestandin. joined: Di %{date} de tevlî bû last_active: çalakiya dawî link_verified_on: Xwedaniya li vê girêdanê di %{date} de hatiye kontrolkirin @@ -73,7 +73,7 @@ ku: moved_html: "%{name} bar kire %{new_profile_link}:" network_hidden: Ev zanyarî berdest nîne nothing_here: Li vir tiştek tune ye! - people_followed_by: Kesên ku%{name} wan dişopîne + people_followed_by: Kesên ku %{name} wan dişopîne people_who_follow: Kesên%{name} dişopîne pin_errors: following: Kesê ku tu dixwazî bipejirînî jixwe tu vê dişopînî @@ -228,7 +228,7 @@ ku: view_domain: Kurte ji bo navperê bide nîşan warn: Hişyarî web: Tevn - whitelisted: Ji bona yekbûyînê maf tê dayîn + whitelisted: Ji bo demnameya giştî maf hate dayin action_logs: action_types: approve_appeal: Îtîrazê bipejirîne @@ -290,7 +290,7 @@ ku: create_account_warning_html: "%{name} ji bo %{target} hişyariyek şand" create_announcement_html: "%{name} agahdarkirineke nû çêkir %{target}" create_custom_emoji_html: "%{name} emojîyeke nû ya %{target} bar kir" - create_domain_allow_html: "%{name} bi navperê %{target} re maf da federeyê" + create_domain_allow_html: "%{name} bi navperê %{target} re maf da demnameya giştî" create_domain_block_html: "%{name} navpera %{target} asteng kir" create_email_domain_block_html: "%{name} e-nameya navperê %{target} asteng kir" create_ip_block_html: "%{name} ji bo IPya %{target} rêzikname saz kir" @@ -298,7 +298,7 @@ ku: demote_user_html: "%{name} bikarhênerê %{target} kaşê jêr kir" destroy_announcement_html: "%{name} daxûyaniyeke %{target} jê bir" destroy_custom_emoji_html: "%{name} emojiya %{target} tune kir" - destroy_domain_allow_html: "%{name} bi navperê %{target} re maf neda federeyê" + destroy_domain_allow_html: "%{name} bi navperê %{target} re maf neda demnameya giştî" destroy_domain_block_html: "%{name} navpera %{target} asteng kir" destroy_email_domain_block_html: "%{name} astengiya li ser navpera e-nameyê %{target} rakir" destroy_instance_html: "%{name} navpera %{target} asteng kir" @@ -418,10 +418,10 @@ ku: empty: Îtîraz nehatin dîtin. title: Îtîraz domain_allows: - add_new: Maf bide navpera federasyonê - created_msg: Ji bo federasyonê maf dayîna navperê bi serkeftî hate dayîn - destroyed_msg: Ji bo federasyonê maf dayîna navperê nehat dayîn - undo: Maf nede navpera federasyonê + add_new: Mafê bide navpera demnameya giştî + created_msg: Ji bo demnameya giştî mafdayîna navperê bi serkeftî hate dayîn + destroyed_msg: Ji bo demnameya giştî mafdayîna navperê nehat dayîn + undo: Mafê nede navpera demnameya giştî domain_blocks: add_new: Astengkirina navpera nû created_msg: Navpera asteng kirinê nû hat şixulandin @@ -515,7 +515,7 @@ ku: instance_follows_measure: şopînerên wan li vir instance_languages_dimension: Zimanên pir tên bikaranîn instance_media_attachments_measure: pêvekên medyayê tomarkirî - instance_reports_measure: giliyên derbarê wan de + instance_reports_measure: ragehandinên di derbarê wan de instance_statuses_measure: şandiyên tomarkirî delivery: all: Hemû @@ -544,7 +544,7 @@ ku: total_blocked_by_us: Ji aliyê me ve hatiye astengkirin total_followed_by_them: Ji aliyê wan ve hatiye şopandin total_followed_by_us: Ji aliyê me ve hatiye şopandin - total_reported: Giliyên derheqê wan de + total_reported: Ragehandinên di derbarê wan de total_storage: Pêvekên medyayê totals_time_period_hint_html: Tevahiyên ku li jêr têne xuyakirin daneyên hemû deman dihewîne. invites: @@ -575,7 +575,7 @@ ku: relays: add_new: Guhêrkerê nû tevlê bike delete: Jê bibe - description_html: "Guhêrkerê giştî rajekareke navberkar e ku hejmareke mezin ji şandiyan di navbera rajekaran ku jê re dibin endam û weşanê dikin diguherîne. Ew dikare ji rajekarên piçûk û navîn re bibe alîkar ku naveroka ji fendiverse ê bibîne, ku bi rengeke din pêdivî dike ku bikarhênerên herêmî bi desta li dû kesên din ên li rajekarên ji dûr be bişopînin." + description_html: "Guhêrkerê giştî rajekareke navberkar e ku hejmareke mezin ji şandiyan di navbera rajekaran ku jê re dibin endam û weşanê dikin diguherîne. Ew dikare ji rajekarên piçûk û navîn re bibe alîkar ku naveroka ji fediverse ê bibîne, ku bi rengeke din pêdivî dike ku bikarhênerên herêmî bi desta li dû kesên din ên li rajekarên ji dûr be bişopînin." disable: Neçalak bike disabled: Neçalakkirî enable: Çalak bike @@ -585,7 +585,7 @@ ku: pending: Li benda pêjirandina guhêrker e save_and_enable: Tomar û çalak bike setup: Girêdanekê guhêrker saz bike - signatures_not_enabled: Dema ku moda ewle ya jî moda rêzoka spî çalak be guhêrker wê birêkûpêk nexebite + signatures_not_enabled: Dema ku moda ewle yan jî moda demnameya giştî çalak be guhêrker wê birêkûpêk nexebite status: Rewş title: Guhêrker report_notes: @@ -685,11 +685,32 @@ ku: manage_blocks_description: Mafê dide bikarhêneran ku peydakarê e-nameyê û navnîşanên IP asteng bike manage_custom_emojis: Emojiyên kesane bi rêve bibe manage_custom_emojis_description: Mafê dide bikarhêneran ku îmojî kesane bikin li ser vê rajekarê + manage_federation: Demnameya giştî bi rê ve bibe + manage_federation_description: Mafê dide bikarhêneran ku demnameya giştî bi navparên din re asteng bikin û radestkirinê kontrol bikin manage_invites: Vexwendinan bi rêve bibe + manage_invites_description: Mafê dide bikarhêneran ku li girêdanên vexwendinê bigerin û neçalak bikin + manage_reports: Ragihandinan bi rê ve bibe + manage_reports_description: Mafê dide bikarhêneran ku ragihandinan binirxînin û li dijî wan kiryarên çavdêriyê çalakiyan pêk bînin manage_roles: Rolan bi rêve bibe + manage_roles_description: Mafê dide bikarhêneran ku rolên li jêr ên xwe birêve bibin û nîşan bikin manage_rules: Rolan bi rêve bibe + manage_rules_description: Mafê dide bikarhêneran ku rêzikên rajekarê biguherînin manage_settings: Sazkariyan bi rê ve bibe + manage_settings_description: Mafê dide bikarhêneran ku sazkariyên malperê biguherînin + manage_taxonomies: Beşan bi rê ve bibe + manage_taxonomies_description: Mafê dide bikarhêneran ku naveroka rojevê binirxînin û sazkariyên hashtagê rojane bikin + manage_user_access: Gihiştinê bikarhêner bi rê ve bibe + manage_user_access_description: Mafê dide bikarhêneran ku piştrastkirina du-gavî ya bikarhênerên din neçalak bikin, navnîşana e-nameya xwe biguherînin û borînpeyva xwe ji nû ve bikin manage_users: Bikarhêneran bi rêve bibe + manage_users_description: Mafê dide bikarhêneran ku hûrguliyên bikarhênerên din bibînin û li dijî wan kiryarên çavdêriyê çalakiyan pêk bînin + manage_webhooks: Webhook bi rê ve bibe + manage_webhooks_description: Mafê dide bikarhêneran ku ji bo bûyerên rêveberî yên webhook saz bikin + view_audit_log: Têketinên kontrolê nîşan bide + view_audit_log_description: Mafê dide bikarhêneran ku dîroka çalakiyên rêveberî yên li ser rajekarê bibînin + view_dashboard: Destgehê nîşan bide + view_dashboard_description: Mafê dide bikarhêneran ku bigihîjin destgehê û pîvanên cuda + view_devops: Pêşdebir + view_devops_description: Mafê dide bikarhêneran ku bigihîjin destgehên Sidekiq û pgHero title: Rol rules: add_new: Rêbazekê tevlî bike @@ -952,7 +973,7 @@ ku: remove: Girêdana nûçikê rake appearance: advanced_web_interface: Navrûya tevnê yê pêşketî - advanced_web_interface_hint: 'Heke tu bixwazin tevahiya ferehiya dîmendera xwe bi kar bînî, navrûya pêşketî ya tevnê dihêle ku tu gelek stûnên cihêreng saz bikî da ku di heman demê de bi qasî ku tu dixwazî zanyariyan bibînî: Serrûpel, agahdarî, demnameya giştî, her hejmarek ji rêzik û hashtagan.' + advanced_web_interface_hint: 'Ku tu bixwazî tevahiya ferehiya dîmendera xwe bi kar bînî, navrûya pêşketî ya tevnê dihêle ku tu gelek stûnên cihêreng saz bikî da ku di heman demê de bi qasî ku tu dixwazî zanyariyan bibînî: Serrûpel, agahdarî, demnameya giştî, her hejmarek ji rêzik û hashtagan.' animations_and_accessibility: Anîmasyon û gihînî confirmation_dialogs: Gotûbêjên piştrastkirî discovery: Vedîtin @@ -1160,15 +1181,24 @@ ku: public: Demnameya gelemperî thread: Axaftin edit: + add_keyword: Kilîtpeyv tevî bike keywords: Peyvkilît title: Parzûnê serrast bike errors: + deprecated_api_multiple_keywords: Van parameteran ji vê sepanê nayên guhertin ji ber ku ew li ser bêtirî yek kilîtpeyvên parzûnkirî têne sepandin. Sepaneke nûtir an navrûya bikarhêneriyê ya malperê bi kar bîne. invalid_context: Naverok tune ye yan jî nederbasdar tê peydakirin index: + contexts: Parzûnên di %{contexts} de delete: Jê bibe empty: Parzûnên te tune ne. + expires_in: Di %{distance} de diqede + expires_on: Di %{date} de diqede + keywords: + one: "%{count} kilîtpeyv" + other: "%{count} kilîtpeyv" title: Parzûn new: + save: Parzûna nû tomar bike title: Parzûnek nû li zêde bike footer: developers: Pêşdebir @@ -1238,7 +1268,7 @@ ku: password: borînpeyv sign_in_token: koda ewlehiyê bo e-nameyê webauthn: kilîtên ewlehiyê - description_html: Heke çalakiya ku nas nakî dibînî, çêtir dibe ku borînpeyva xwe biguherînî û rastandina du-gavî çalak bikî. + description_html: Çalakiya ku nas nakî dibînî, çêtir dibe ku borînpeyva xwe biguherînî û rastandina du-gavî çalak bikî. empty: Dîroka piştrastkirinê tune ye failed_sign_in_html: Hewldana têketinê ser neket bi%{method} ji %{ip} (%{browser}) de successful_sign_in_html: Bi serkeftî têketin bi %{method} ji %{ip}(%{browser}) çêbû @@ -1707,7 +1737,7 @@ ku: change_password: borînpeyva xwe biguherîne details: 'Li vir hûrgiliyên hewldanên têketinê hene:' explanation: Me têketineke nû ji ajimêra te ji navnîşaneke IP ya nû dît. - further_actions_html: Ku ev ne tu bû, em ji te re pêşniyar dikin ku tu di tavilê de %{action} bikî û piştrastkirina du-gavî çalak bikî da ku ajimêra te di ewlehiyê de bimîne. + further_actions_html: Ku ev ne tu ye, em pêşniyar dikin ku tu di tavilê de %{action} û piştrastkirina du-gavî çalak bikî da ku ajimêra te di ewlehiyê de bimîne. subject: Ajimêra te ji navnîşaneke IP ya nû ve hatiye gihîştin title: Têketineke nû warning: @@ -1753,7 +1783,7 @@ ku: review_preferences_step: Pê bawer be ku vebijêrkên xwe saz bikî, wek mînak kîjan e-nameyên ku tu dixwaziî wergirîne, an tu dixwazî weşanên te ji kîjan astê nehêniyê de kesanekirî bin. Heke nexweşiya te ya tevgerê tune be, tu dikarî hilbijêrî ku GIF ya xweser çalak bibe. subject: Tu bi xêr hatî Mastodon tip_federated_timeline: Demnameya giştî dimenêke gelemperî a Mastodon e. Lê tenê kesên ku ciranên te endamên wê ne dihewîne, ji ber vê yekê ew hemû nîne. - tip_following: Tu rêvebir (ên) rajeker wek berdest dişopînî. Ji bo mirovên balkêştir bibînî, demnameya herêmî û federasyonî kontrol bike. + tip_following: Tu rêvebir (ên) rajeker wek berdest dişopînî. Ji bo mirovên balkêştir bibînî, demnameya herêmî û giştî kontrol bike. tip_local_timeline: Demnameya herêmî, dimenêke bi giştî ye li ser %{instance} e. Ev ciranên te yên herî nêzik in! tip_mobile_webapp: Ger geroka te ya desta pêşkêşî te bike ku tu Mastodon li ser ekrana xwe ya malê lê zêde bikî, tu dikarî agahdariyên push bistînî. Ew bi gelek awayan mîna serîlêdanek xwemalî tevdigere! tips: Serbend diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 9c20a8f8a..f51c231a6 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -1221,6 +1221,8 @@ pl: edit: add_keyword: Dodaj słowo kluczowe keywords: Słowa kluczowe + statuses: Pojedyncze wpisy + statuses_hint_html: Ten filtr ma zastosowanie do wybierania poszczególnych postów niezależnie od tego, czy pasują one do słów kluczowych poniżej. Możesz przejrzeć te posty i usunąć je z filtra klikając tutaj. title: Edytuj filtr errors: deprecated_api_multiple_keywords: Te parametry nie mogą zostać zmienione z tej aplikacji, ponieważ dotyczą więcej niż jednego słowa kluczowego. Użyj nowszej wersji aplikacji lub interfejsu internetowego. @@ -1240,6 +1242,13 @@ pl: new: save: Zapisz jako nowy filtr title: Dodaj nowy filtr + statuses: + back_to_filter: Powrót do filtra + batch: + remove: Usuń z filtra + index: + hint: Ten filtr ma zastosowanie do wybierania poszczególnych postów niezależnie od innych kryteriów. Możesz dodać więcej postów do tego filtra z interfejsu WWW. + title: Filtrowane posty footer: developers: Dla programistów more: Więcej… diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index f13624403..cf450f825 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -85,6 +85,7 @@ ca: ip: Introdueix una adreça IPv4 o IPv6. Pots bloquejar rangs complets amb la sintaxi CIDR. Ves a compte no et bloquegis a tu mateix! severities: no_access: Bloqueja l’accés a tots els recursos + sign_up_block: Els nous registres no seran possibles sign_up_requires_approval: Els nous registres requeriran la teva aprovació severity: Tria què passarà amb les sol·licituds des d’aquesta IP rule: @@ -219,6 +220,7 @@ ca: ip: IP severities: no_access: Bloquejar l’accés + sign_up_block: Bloqueja registres sign_up_requires_approval: Limitar els registres severity: Regla notification_emails: diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index 0c190f1b3..5077e16ff 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -85,6 +85,7 @@ da: ip: Angiv en IPv4- eller IPv6-adresse. Hele intervaller kan blokeres vha. CIDR-syntaksen. Pas på med ikke selv at blive låst ude! severities: no_access: Blokér adgang til alle ressourcer + sign_up_block: Nye tilmeldinger vil ikke være mulige sign_up_requires_approval: Nye tilmeldinger kræver din godkendelse severity: Afgør, hvordan forespørgsler fra denne IP behandles rule: @@ -219,6 +220,7 @@ da: ip: IP severities: no_access: Blokér adgang + sign_up_block: Blokér tilmeldinger sign_up_requires_approval: Begræns tilmeldinger severity: Regel notification_emails: diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index 4d0cc5118..bbeb610ec 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -85,6 +85,7 @@ de: ip: Gebe eine IPv4- oder IPv6-Adresse an. Du kannst ganze Bereiche mit der CIDR-Syntax blockieren. Achte darauf, dass du dich nicht aussperrst! severities: no_access: Zugriff auf alle Ressourcen blockieren + sign_up_block: Neue Anmeldungen werden nicht möglich sein sign_up_requires_approval: Neue Anmeldungen erfordern deine Zustimmung severity: Wähle aus, was mit Anfragen aus dieser IP passiert rule: @@ -219,6 +220,7 @@ de: ip: IP-Adresse severities: no_access: Zugriff sperren + sign_up_block: Anmeldungen blockieren sign_up_requires_approval: Anmeldungen begrenzen severity: Regel notification_emails: diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml index 63a68c1c0..9e1464a4f 100644 --- a/config/locales/simple_form.el.yml +++ b/config/locales/simple_form.el.yml @@ -76,6 +76,7 @@ el: ip: Εισάγετε μια διεύθυνση IPv4 ή IPv6. Μπορείτε να αποκλείσετε ολόκληρο το εύρος χρησιμοποιώντας τη σύνταξη CIDR. Προσέξτε να μην κλειδώσετε τον εαυτό σας! severities: no_access: Αποκλεισμός πρόσβασης σε όλους τους πόρους + sign_up_block: Νέες εγγραφές δεν θα είναι δυνατές sign_up_requires_approval: Νέες εγγραφές θα απαιτούν την έγκριση σας severity: Επιλέξτε τι θα γίνεται με αιτήσεις από αυτήν την διεύθυνση IP rule: @@ -198,6 +199,7 @@ el: ip: Διεύθυνση IP severities: no_access: Αποκλεισμός πρόσβασης + sign_up_block: Αποκλεισμός εγγραφών sign_up_requires_approval: Περιορισμός εγγραφών severity: Κανόνας notification_emails: diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml index d61666834..53b25da8e 100644 --- a/config/locales/simple_form.es-AR.yml +++ b/config/locales/simple_form.es-AR.yml @@ -85,6 +85,7 @@ es-AR: ip: Ingresá una dirección IPv4 ó IPv6. Podés bloquear rangos completos usando la sintaxis CIDR. ¡Tené cuidado de no bloquearte vos mismo! severities: no_access: Bloquear acceso a todos los recursos + sign_up_block: Los nuevos registros se deshabilitarán sign_up_requires_approval: Los nuevos registros requerirán tu aprobación severity: Elegí lo que pasará con las solicitudes desde esta dirección IP rule: @@ -219,6 +220,7 @@ es-AR: ip: Dirección IP severities: no_access: Bloquear acceso + sign_up_block: Bloquear registros sign_up_requires_approval: Limitar registros severity: Regla notification_emails: diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index cd390493c..25efe37cd 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -85,6 +85,7 @@ es: ip: Introduzca una dirección IPv4 o IPv6. Puede bloquear rangos completos usando la sintaxis CIDR. ¡Tenga cuidado de no quedarse fuera! severities: no_access: Bloquear acceso a todos los recursos + sign_up_block: Los nuevos registros se deshabilitarán sign_up_requires_approval: Nuevos registros requerirán su aprobación severity: Elegir lo que pasará con las peticiones desde esta IP rule: @@ -219,6 +220,7 @@ es: ip: IP severities: no_access: Bloquear acceso + sign_up_block: Bloquear registros sign_up_requires_approval: Limitar registros severity: Regla notification_emails: diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index 8962f0b5d..189f51ab6 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -37,6 +37,7 @@ fi: current_password: Turvallisuussyistä kirjoita nykyisen tilin salasana current_username: Vahvista kirjoittamalla nykyisen tilin käyttäjätunnus digest: Lähetetään vain pitkän poissaolon jälkeen ja vain, jos olet saanut suoria viestejä poissaolosi aikana + discoverable: Salli tuntemattomien löytää tilisi suositusten, trendien ja muiden ominaisuuksien kautta email: Sinulle lähetetään vahvistussähköposti fields: Sinulla voi olla korkeintaan 4 asiaa profiilissasi taulukossa header: PNG, GIF tai JPG. Enintään %{size}. Skaalataan kokoon %{dimensions} px @@ -48,6 +49,7 @@ fi: phrase: Täytetään riippumatta julkaisun kirjainkoon tai sisällön varoituksesta scopes: Mihin sovellusliittymiin sovellus pääsee käsiksi. Jos valitset ylätason laajuuden, sinun ei tarvitse valita yksittäisiä. setting_aggregate_reblogs: Älä näytä uusia tehosteita viesteille, joita on äskettäin tehostettu (koskee vain äskettäin saatuja tehosteita) + setting_always_send_emails: Yleensä sähköposti-ilmoituksia ei lähetetä, kun käytät aktiivisesti Mastodonia setting_default_sensitive: Arkaluontoinen media on oletuksena piilotettu ja se voidaan näyttää yhdellä napsautuksella setting_display_media_default: Piilota arkaluonteiseksi merkitty media setting_display_media_hide_all: Piilota aina kaikki media @@ -66,6 +68,11 @@ fi: with_dns_records: Annetun verkkotunnuksen DNS-tietueet yritetään ratkaista ja tulokset myös estetään featured_tag: name: 'Voit halutessasi käyttää jotakin näistä:' + filters: + action: Valitse, mikä toiminto suoritetaan, kun viesti vastaa suodatinta + actions: + hide: Piilota suodatettu sisältö kokonaan ja käyttäydy ikään kuin sitä ei olisi olemassa + warn: Piilota suodatettu sisältö varoituksen taakse, jossa mainitaan suodattimen otsikko form_challenge: current_password: Olet menossa suojatulle alueelle imports: @@ -89,6 +96,13 @@ fi: name: Voit muuttaa esimerkiksi kirjaimia paremmin luettavaksi user: chosen_languages: Kun valittu, vain valituilla kielillä julkaistut viestit näkyvät julkisilla aikajanoilla + role: Rooli määrää, mitkä käyttöoikeudet käyttäjällä on + user_role: + color: Väri, jota käytetään roolin koko käyttöliittymässä, RGB heksamuodossa + highlighted: Tämä tekee roolista julkisesti näkyvän + name: Roolin julkinen nimi, jos rooli on asetettu näytettäväksi mekkinä + permissions_as_keys: Käyttäjillä, joilla on tämä rooli, on käyttöoikeus... + position: Korkeampi rooli ratkaisee konfliktit tietyissä tilanteissa. Tiettyjä toimintoja voidaan suorittaa vain rooleille, joiden prioriteetti on pienempi webhook: events: Valitse lähetettävät tapahtumat url: Mihin tapahtumat lähetetään diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml index 0727fb97f..a9d801409 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -85,6 +85,7 @@ gl: ip: Escribe un enderezo IPv4 ou IPv6. Podes bloquear rangos completos usando a sintaxe CIDR. Ten coidado e non te bloquees a ti mesma! severities: no_access: Bloquear acceso a tódolos recursos + sign_up_block: Non se poderán rexistrar novas contas sign_up_requires_approval: Os novos rexistros requerirán a túa aprobación severity: Escolle que acontecerá coas peticións desde este IP rule: @@ -219,6 +220,7 @@ gl: ip: IP severities: no_access: Bloquear acceso + sign_up_block: Bloquear novos rexistros sign_up_requires_approval: Limitar o rexistro severity: Regra notification_emails: diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index d0ae814e6..df19f4aa7 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -85,6 +85,7 @@ hu: ip: Írj be egy IPv4 vagy IPv6 címet. A CIDR formátum használatával teljes tartományokat tilthatsz ki. Légy óvatos, hogy magadat véletlenül se zárd ki! severities: no_access: Elérés tiltása minden erőforráshoz + sign_up_block: Új feliratkozások nem lesznek lehetségesek sign_up_requires_approval: Új regisztrációk csak a jóváhagyásoddal történhetnek majd meg severity: Válaszd ki, mi történjen a kérésekkel erről az IP-ről rule: @@ -219,6 +220,7 @@ hu: ip: IP severities: no_access: Elérés letiltása + sign_up_block: Feliratkozások letiltása sign_up_requires_approval: Regisztrációk korlátozása severity: Szabály notification_emails: diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml index facef6f18..60cbb3341 100644 --- a/config/locales/simple_form.is.yml +++ b/config/locales/simple_form.is.yml @@ -85,6 +85,7 @@ is: ip: Settu inn IPv4 eða IPv6 vistfang. Þú getur lokað á svið vistfanga með því að nota CIDR-framsetningu. Gættu þess að loka ekki sjálfa/n þig úti! severities: no_access: Loka á aðgang að öllum tilföngum + sign_up_block: Nýskráningar verða ekki mögulegar sign_up_requires_approval: Nýskráningar munu þurfa samþykki þitt severity: Veldu hvað munir gerast við beiðnir frá þessu IP-vistfangi rule: @@ -219,6 +220,7 @@ is: ip: IP-vistfang severities: no_access: Loka á aðgang + sign_up_block: Loka á nýskráningar sign_up_requires_approval: Takmarka nýskráningar severity: Regla notification_emails: diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml index d2ffda888..50a4caae9 100644 --- a/config/locales/simple_form.it.yml +++ b/config/locales/simple_form.it.yml @@ -85,6 +85,7 @@ it: ip: Inserisci un indirizzo IPv4 o IPv6. Puoi bloccare interi intervalli usando la sintassi CIDR. Fai attenzione a non bloccare te stesso! severities: no_access: Blocca l'accesso a tutte le risorse + sign_up_block: Le nuove iscrizioni non saranno possibili sign_up_requires_approval: Le nuove iscrizioni richiederanno la tua approvazione severity: Scegli cosa accadrà con le richieste da questo IP rule: @@ -219,6 +220,7 @@ it: ip: IP severities: no_access: Blocca accesso + sign_up_block: Blocca iscrizioni sign_up_requires_approval: Limita iscrizioni severity: Regola notification_emails: diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index 79c28b4fc..5469a7c04 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -85,6 +85,7 @@ ko: ip: IPv4 또는 IPv6 주소를 입력하세요. CIDR 문법을 사용해서 모든 범위를 차단할 수도 있습니다. 자기 자신을 잠가버리지 않도록 주의하세요! severities: no_access: 모든 자원에 대한 접근 차단 + sign_up_block: 새 가입이 불가능하게 됩니다 sign_up_requires_approval: 새 가입이 승인을 필요로 하도록 합니다 severity: 해당 IP로부터의 요청에 대해 무엇이 일어나게 할 지 고르세요 rule: @@ -219,6 +220,7 @@ ko: ip: IP severities: no_access: 접근 차단 + sign_up_block: 가입 차단 sign_up_requires_approval: 가입 제한 severity: 규칙 notification_emails: diff --git a/config/locales/simple_form.ku.yml b/config/locales/simple_form.ku.yml index ea6db0972..d08b4bf05 100644 --- a/config/locales/simple_form.ku.yml +++ b/config/locales/simple_form.ku.yml @@ -70,6 +70,11 @@ ku: with_dns_records: Hewl tê dayîn ku tomarên DNSê yên li qada jê re hatine dayîn were çareserkirin û encamên wê jî were astengkirin featured_tag: name: 'Belkî tu yekê bi kar bînî çi van:' + filters: + action: Hilbijêre ku dema şandiyek bi parzûnê re lihevhatî be bila kîjan çalakî were pêkanîn + actions: + hide: Naveroka parzûnkirî bi tevahî veşêre, mîna ku ew tune be tevbigere + warn: Naveroka parzûnkirî li pişt hişyariyek ku sernavê parzûnê qal dike veşêre form_challenge: current_password: Tu dikevî qadeke ewledar imports: @@ -82,6 +87,7 @@ ku: ip: Têkeve navnîşana IPv4 an jî IPv6'yek. Tu dikarî bi hevoksazî ya CIDR re hemî valahîyan asteng bikî. Hay ji xwe hebe ku xwe derve nehêle! severities: no_access: Gihîştina hemî çavkaniyan asteng bike + sign_up_block: Tomarkirinên nû wê ne pêkan bin sign_up_requires_approval: Tomarkirinên nû de pejirandina te pêwîste severity: Daxwazên ku ji vê IPyê tên dê çi bibe hilbijêre rule: @@ -93,7 +99,12 @@ ku: name: Tîpan, mînak ji bo ku bêhtir paknivîs bibe, tenê rewşa tîpên girdek/hûrdek dikarî biguherînî user: chosen_languages: Dema were nîşankirin, tenê parvekirinên bi zimanên hilbijartî dê di rêzikên giştî de werin nîşandan + role: Rola kîjan mafdayînên bikarhêner heye kontrol dike user_role: + color: Renga ku were bikaranîn ji bo rola li seranserê navrûya bikarhêneriyê, wekî RGB di forma hex + highlighted: Ev rola xwe ji raya giştî re xuya dike + name: Navê giştî yê rolê, ku rol wekî nîşanekê were nîşankirin + permissions_as_keys: Bikarhênerên bi vê rolê wê bigihîjin... position: Rola bilind di hinek rewşan de biryara çareserkirina nakokiyan dide. Hinej çalakî tenê dikarin li ser rolên bi pêşanînek kêmtir bêne kirin webhook: events: Bûyeran hilbijêre bo şandinê @@ -185,6 +196,7 @@ ku: setting_use_pending_items: Awayê hêdî severity: Asta girîngiyê sign_in_token_attempt: Koda ewlehiyê + title: Sernav type: Cureya têxistinê username: Navê bikarhêneriyê username_or_email: Navê bikarhêner an jî e-name @@ -193,6 +205,10 @@ ku: with_dns_records: Tomarên MX û IP yên hundirê navper lê zêde bike featured_tag: name: Hashtag + filters: + actions: + hide: Bi tevahî veşêre + warn: Bi hişyariyekê veşêre interactions: must_be_follower: Danezanên ji kesên ku ne şopînerên min tên asteng bike must_be_following: Agahdariyan asteng bike ji kesên ku tu wan naşopînî @@ -206,6 +222,7 @@ ku: ip: IP severities: no_access: Gihîştinê asteng bike + sign_up_block: Tomarkirinan asteng bike sign_up_requires_approval: Tomaran sînordar bike severity: Rêbaz notification_emails: @@ -229,6 +246,8 @@ ku: user: role: Rol user_role: + color: Rengê nîşanê + highlighted: Li ser profîlên bikarhêner rola wekî nîşan bide nîşankirin name: Nav permissions_as_keys: Maf position: Pêşikî diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml index ad8f3bd4d..d73da1c2a 100644 --- a/config/locales/simple_form.lv.yml +++ b/config/locales/simple_form.lv.yml @@ -85,6 +85,7 @@ lv: ip: Ievadi IPv4 vai IPv6 adresi. Izmantojot CIDR sintaksi, tu vari bloķēt visus diapazonus. Esi piesardzīgs un neizslēdz pats sevi! severities: no_access: Bloķēt piekļuvi visiem resursiem + sign_up_block: Jaunas pieteikšanās nebūs iespējamas sign_up_requires_approval: Jaunām reģistrācijām būs nepieciešams tavs apstiprinājums severity: Izvēlies, kas notiks ar pieprasījumiem no šīs IP adreses rule: @@ -219,6 +220,7 @@ lv: ip: IP severities: no_access: Bloķēt piekļuvi + sign_up_block: Bloķēt pieteikšanās sign_up_requires_approval: Ierobežot reģistrēšanos severity: Noteikumi notification_emails: diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml index e77457f94..ab6c2e3ff 100644 --- a/config/locales/simple_form.pt-PT.yml +++ b/config/locales/simple_form.pt-PT.yml @@ -85,6 +85,7 @@ pt-PT: ip: Introduza um endereço IPv4 ou IPv6. Pode bloquear intervalos inteiros usando a sintaxe CIDR. Tenha cuidado para não se bloquear a sí mesmo! severities: no_access: Bloquear o acesso a todos os recursos + sign_up_block: Não serão possíveis novas inscrições sign_up_requires_approval: Novas inscrições requererão a sua aprovação severity: Escolha o que acontecerá com as solicitações deste IP rule: @@ -219,6 +220,7 @@ pt-PT: ip: IP severities: no_access: Bloquear acesso + sign_up_block: Bloquear inscrições sign_up_requires_approval: Limitar inscrições severity: Regra notification_emails: diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml index b144b29d5..8f897c917 100644 --- a/config/locales/simple_form.ru.yml +++ b/config/locales/simple_form.ru.yml @@ -85,6 +85,7 @@ ru: ip: Введите IPv4 или IPv6 адрес. Вы можете блокировать целые диапазоны, используя синтаксис CIDR. Будьте осторожны, не заблокируйте самого себя! severities: no_access: Заблокировать доступ ко всем ресурсам + sign_up_block: Новые регистрации будут невозможны sign_up_requires_approval: Новые регистрации потребуют вашего одобрения severity: Выберите, что будет происходить с запросами с этого IP rule: @@ -219,6 +220,7 @@ ru: ip: IP severities: no_access: Блокировать доступ + sign_up_block: Заблокировать регистрацию sign_up_requires_approval: Ограничить регистрации severity: Правило notification_emails: diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml index 640d2c27e..854670fe5 100644 --- a/config/locales/simple_form.sl.yml +++ b/config/locales/simple_form.sl.yml @@ -85,6 +85,7 @@ sl: ip: Vnesite naslov IPv4 oz. IPv6. S skladnjo CIDR lahko blokirate celotne obsege. Pazite, da se ne zaklenete ven! severities: no_access: Blokiraj dostop do vseh virov + sign_up_block: Nove registracije ne bodo možne sign_up_requires_approval: Za nove registracije bo potrebna vaša odobritev severity: Izberite, kaj se bo zgodilo z zahtevami iz tega IP-naslova rule: @@ -219,6 +220,7 @@ sl: ip: IP severities: no_access: Blokiraj dostop + sign_up_block: Blokiraj registracije sign_up_requires_approval: Omeji število prijav severity: Pravilo notification_emails: diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml index c311eb189..a90c3bce9 100644 --- a/config/locales/simple_form.sv.yml +++ b/config/locales/simple_form.sv.yml @@ -60,6 +60,7 @@ sv: ip: Ange en IPv4 eller IPv6-adress. Du kan blockera hela intervall med hjälp av CIDR-syntax. Var försiktig så att du inte låser ut dig själv! severities: no_access: Blockera åtkomst till alla resurser + sign_up_block: Nya registreringar inte möjligt sign_up_requires_approval: Nya registreringar kräver ditt godkännande severity: Välj vad som ska hända med förfrågningar från denna IP rule: @@ -176,6 +177,7 @@ sv: ip: IP severities: no_access: Blockera åtkomst + sign_up_block: Blockera registreringar sign_up_requires_approval: Begränsa registreringar severity: Regel notification_emails: diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index 2a31ea9c2..8a23d1f6b 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -85,6 +85,7 @@ th: ip: ป้อนที่อยู่ IPv4 หรือ IPv6 คุณสามารถปิดกั้นทั้งช่วงได้โดยใช้ไวยากรณ์ CIDR ระวังอย่าล็อคตัวคุณเองออก! severities: no_access: ปิดกั้นการเข้าถึงทรัพยากรทั้งหมด + sign_up_block: จะไม่สามารถทำการลงทะเบียนใหม่ sign_up_requires_approval: การลงทะเบียนใหม่จะต้องมีการอนุมัติของคุณ severity: เลือกสิ่งที่จะเกิดขึ้นกับคำขอจาก IP นี้ rule: @@ -219,6 +220,7 @@ th: ip: IP severities: no_access: ปิดกั้นการเข้าถึง + sign_up_block: ปิดกั้นการลงทะเบียน sign_up_requires_approval: จำกัดการลงทะเบียน severity: กฎ notification_emails: diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml index f2e728d2a..f63ad13aa 100644 --- a/config/locales/simple_form.tr.yml +++ b/config/locales/simple_form.tr.yml @@ -85,6 +85,7 @@ tr: ip: Bir IPv4 veya IPv6 adresi girin. CIDR sözdizimini kullanarak tüm aralıkları engelleyebilirsiniz. Kendinizi dışarıda bırakmamaya dikkat edin! severities: no_access: Tüm kaynaklara erişimi engelle + sign_up_block: Yeni kayıtlar mümkün olmayacaktır sign_up_requires_approval: Yeni kayıt onayınızı gerektirir severity: Bu IP'den gelen isteklere ne olacağını seçin rule: @@ -219,6 +220,7 @@ tr: ip: IP severities: no_access: Erişimi engelle + sign_up_block: Kayıt olmayı engelle sign_up_requires_approval: Kayıtları sınırla severity: Kural notification_emails: diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index ec43655e4..df9f1fb4d 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -85,6 +85,7 @@ uk: ip: Введіть адресу IPv4 або IPv6. Ви можете блокувати цілі діапазони, використовуючи синтаксис CIDR. Будьте обережні, щоб не заблокувати себе! severities: no_access: Заблокувати доступ до всіх ресурсів + sign_up_block: Нові реєстрації будуть неможливі sign_up_requires_approval: Нові реєстрації потребуватимуть затвердження вами severity: Виберіть, що буде відбуватися з запитами з цієї IP rule: @@ -219,6 +220,7 @@ uk: ip: IP severities: no_access: Заборонити доступ + sign_up_block: Блокувати реєстрацію sign_up_requires_approval: Обмеження реєстрації severity: Правило notification_emails: diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml index 7bc43a0b0..143064c5d 100644 --- a/config/locales/simple_form.vi.yml +++ b/config/locales/simple_form.vi.yml @@ -85,6 +85,7 @@ vi: ip: Nhập một địa chỉ IPv4 hoặc IPv6. Bạn cũng có thể chặn toàn bộ dãy IP bằng cú pháp CIDR. Hãy cẩn thận đừng chặn nhầm toàn bộ! severities: no_access: Chặn truy cập từ tất cả IP này + sign_up_block: Không chấp nhận đăng ký mới sign_up_requires_approval: Bạn sẽ phê duyệt những đăng ký mới từ IP này severity: Chọn hành động nếu nhận được yêu cầu từ IP này rule: @@ -219,6 +220,7 @@ vi: ip: IP severities: no_access: Chặn truy cập + sign_up_block: Chặn đăng ký sign_up_requires_approval: Giới hạn đăng ký severity: Mức độ notification_emails: diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index 703c200c9..0c3c28c67 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -85,6 +85,7 @@ zh-CN: ip: 输入 IPv4 或 IPv6 地址。你可以使用 CIDR 语法屏蔽 IP 段。小心不要屏蔽自己! severities: no_access: 阻止访问所有资源 + sign_up_block: 无法进行新的账号注册 sign_up_requires_approval: 新注册需要你的批准 severity: 选择如何处理来自此 IP 的请求。 rule: @@ -219,6 +220,7 @@ zh-CN: ip: IP 地址 severities: no_access: 阻止访问 + sign_up_block: 阻止账号注册 sign_up_requires_approval: 限制注册 severity: 规则 notification_emails: diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index a3e29b374..3691af892 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -85,6 +85,7 @@ zh-TW: ip: 請輸入 IPv4 或 IPv6 位址,亦可以用 CIDR 語法以封鎖整個 IP 區段。小心不要把自己給一併封鎖掉囉! severities: no_access: 封鎖對所有資源存取 + sign_up_block: 無法註冊新帳號 sign_up_requires_approval: 新註冊申請需要先經過您的審核 severity: 請選擇將如何處理來自這個 IP 位址的請求 rule: @@ -219,6 +220,7 @@ zh-TW: ip: IP 位址 severities: no_access: 封鎖 + sign_up_block: 禁止註冊新帳號 sign_up_requires_approval: 限制註冊 severity: 規則 notification_emails: diff --git a/config/locales/sl.yml b/config/locales/sl.yml index e4c510308..ea7b8e6ba 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -1221,6 +1221,8 @@ sl: edit: add_keyword: Dodaj ključno besedo keywords: Ključne besede + statuses: Posamezne objave + statuses_hint_html: Ta filter se nanaša na posamezne objave ne glede na to, ali se ujemajo s spodnjimi ključnimi besedami. Te objave lahko pregledate in jih odstranite iz filtra, če kliknete tukaj. title: Uredite filter errors: deprecated_api_multiple_keywords: Teh parametrov ni mogoče spremeniti iz tega programa, ker veljajo za več kot eno ključno besedo filtra. Uporabite novejšo izdaj programa ali spletni vmesnik. @@ -1236,10 +1238,27 @@ sl: one: "%{count} ključna beseda" other: "%{count} ključnih besed" two: "%{count} ključni besedi" + statuses: + few: "%{count} objave" + one: "%{count} objava" + other: "%{count} objav" + two: "%{count} objavi" + statuses_long: + few: "%{count} posamezne objave skrite" + one: "%{count} posamezna objava skrita" + other: "%{count} posameznih objav skritih" + two: "%{count} posamezni objavi skriti" title: Filtri new: save: Shrani nov filter title: Dodaj nov filter + statuses: + back_to_filter: Nazaj na filter + batch: + remove: Odstrani iz filtra + index: + hint: Ta filter se nanaša na posamezne objave ne glede na druge pogoje. Filtru lahko dodate več objav prek spletnega vmesnika. + title: Filtrirane objave footer: developers: Razvijalci more: Več… diff --git a/config/locales/th.yml b/config/locales/th.yml index ef5e5e38e..7f3c25ff1 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -653,6 +653,7 @@ th: manage_announcements: จัดการประกาศ manage_announcements_description: อนุญาตให้ผู้ใช้จัดการประกาศในเซิร์ฟเวอร์ manage_appeals: จัดการการอุทธรณ์ + manage_appeals_description: อนุญาตให้ผู้ใช้ตรวจทานการอุทธรณ์ต่อการกระทำการควบคุม manage_blocks: จัดการการปิดกั้น manage_blocks_description: อนุญาตให้ผู้ใช้ปิดกั้นผู้ให้บริการอีเมลและที่อยู่ IP manage_custom_emojis: จัดการอีโมจิที่กำหนดเอง @@ -827,6 +828,7 @@ th: allow_account: อนุญาตผู้สร้าง disallow: ไม่อนุญาตโพสต์ disallow_account: ไม่อนุญาตผู้สร้าง + not_discoverable: ผู้สร้างไม่ได้เลือกรับให้สามารถค้นพบได้ shared_by: other: แบ่งปันและชื่นชอบ %{friendly_count} ครั้ง title: โพสต์ที่กำลังนิยม @@ -992,6 +994,7 @@ th: title: ติดตาม %{acct} challenge: confirm: ดำเนินการต่อ + hint_html: "เคล็ดลับ: เราจะไม่ถามรหัสผ่านของคุณกับคุณสำหรับชั่วโมงถัดไป" invalid_password: รหัสผ่านไม่ถูกต้อง prompt: ยืนยันรหัสผ่านเพื่อดำเนินการต่อ crypto: diff --git a/config/locales/tr.yml b/config/locales/tr.yml index bc2b730f8..2706070a3 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -79,7 +79,7 @@ tr: following: Onaylamak istediğiniz kişiyi zaten takip ediyor olmalısınız posts: one: Gönderi - other: Toot + other: Gönderiler posts_tab_heading: Tootlar posts_with_replies: Tootlar ve yanıtlar roles: @@ -1181,6 +1181,8 @@ tr: edit: add_keyword: Anahtar sözcük ekle keywords: Anahtar Sözcükler + statuses: Tekil gönderiler + statuses_hint_html: Bu filtre aşağıdaki anahtar kelimelere eşlenip eşlenmediklerinden bağımsız olarak tekil gönderileri seçmek için uygulanıyor. Bu gönderileri gözden geçirip, buraya tıklayarak filtreden kaldırabilirsiniz. title: Filtreyi düzenle errors: deprecated_api_multiple_keywords: Bu parametreler, birden fazla filtre anahtar sözcüğü için geçerli olduğundan dolayı bu uygulama içerisinden değiştirilemezler. Daha yeni bir uygulama veya web arayüzünü kullanın. @@ -1194,10 +1196,23 @@ tr: keywords: one: "%{count} anahtar sözcük" other: "%{count} anahtar sözcük" + statuses: + one: "%{count} gönderi" + other: "%{count} gönderi" + statuses_long: + one: "%{count} tekil gönderi gizli" + other: "%{count} tekil gönderi gizli" title: Filtreler new: save: Yeni filtre kaydet title: Yeni filtre ekle + statuses: + back_to_filter: Filtreye dön + batch: + remove: Filtreden kaldır + index: + hint: Bu filtre diğer ölçütlerden bağımsız olarak tekil gönderileri seçmek için uygulanıyor. Web arayüzünü kullanarak bu filtreye daha fazla gönderi ekleyebilirsiniz. + title: Filtrelenmiş gönderiler footer: developers: Geliştiriciler more: Daha Fazla… diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 708ce998e..c1ca26c52 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -513,6 +513,7 @@ uk: confirm_purge: Ви впевнені, що хочете видалити ці дані з цього домену? content_policies: comment: Внутрішня примітка + description_html: Ви можете визначити правила вмісту що буде застосовано до всіх облікових записів із цього домену та будь-якого з його піддоменів. policies: reject_media: Відхилити медіа reject_reports: Відхилити скарги @@ -617,7 +618,10 @@ uk: action_log: Журнал подій action_taken_by: Дія виконана actions: + delete_description_html: Дописи, на які скаржилися будуть видалені, а попередження буде записано, щоб допомогти вам підвищити рівень майбутніх порушень того самого облікового запису. + mark_as_sensitive_description_html: Медіа у дописах, на які скаржилися будуть позначені делікатними, а попередження буде записано, щоб допомогти вам підвищити рівень майбутніх порушень того самого облікового запису. other_description_html: Більше опцій керування поведінкою облікового запису і налаштування комунікації з обліковим записом, на який поскаржилися. + resolve_description_html: Не буде застосовано жодних дій проти облікового запису, на який скаржилися, не буде записано попередження, а скаргу буде закрито. silence_description_html: Профіль буде видимий лише тим, хто вже стежить за ним або знайде його самостійно, сильно обмежуючи його знаходження. Можна потім скасувати. suspend_description_html: Профіль і весь його вміст буде недоступним, поки його не буде видалено. Взаємодія з обліковим записом буде неможливою. add_to_report: Додати ще подробиць до скарги @@ -892,6 +896,7 @@ uk: allow_account: Дозволити автора disallow: Заборонити допис disallow_account: Заборонити автора + not_discoverable: Автор не вирішив бути видимим title: Популярні дописи tags: current_score: Поточний результат %{score} @@ -967,14 +972,18 @@ uk: body_remote: Хтось з домену %{domain} поскаржився(-лася) на %{target} subject: Нова скарга до %{instance} (#%{id}) new_trends: + body: 'Ці елементи потребують розгляду перед оприлюдненням:' new_trending_links: no_approved_links: На цей час немає схвалених популярних посилань. + requirements: 'Кожен з цих кандидатів може перевершити #%{rank} затвердженого популярного посилання, яке зараз на «%{lowest_link_title}» з рейтингом %{lowest_link_score}.' title: Популярні посилання new_trending_statuses: no_approved_statuses: На цей час немає схвалених популярних дописів. + requirements: 'Кожен з цих кандидатів може перевершити #%{rank} затвердженого популярного допису, який зараз на %{lowest_status_url} з рейтингом %{lowest_status_score}.' title: Популярні дописи new_trending_tags: no_approved_tags: На цей час немає схвалених популярних хештегів. + requirements: 'Кожен з цих кандидатів може перевершити #%{rank} затвердженого популярного хештеґу, який зараз на #%{lowest_tag_name} з рейтингом %{lowest_tag_score}.' title: Популярні хештеги subject: Нове популярне до розгляду на %{instance} aliases: @@ -1129,6 +1138,7 @@ uk: approve_appeal: Схвалити апеляцію associated_report: Пов'язана скарга created_at: Застарілі + description_html: Це дії, виконані проти вашого облікового запису та попереджень, які були відправлені вам персоналом %{instance}. recipient: Адресант reject_appeal: Відхилити апеляцію status: 'Допис #%{id}' @@ -1356,7 +1366,7 @@ uk: title: Поки ви були відсутні... favourite: body: 'Ваш статус подобається %{name}:' - subject: Користувачу %{name} сподобався ваш статус + subject: Ваш статус сподобався %{name} title: Нове вподобання follow: body: "%{name} тепер підписаний(-а) на вас!" diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 743d9b608..625d3a07e 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -1159,6 +1159,7 @@ vi: edit: add_keyword: Thêm từ khoá keywords: Từ khóa + statuses: Những tút riêng lẻ title: Chỉnh sửa bộ lọc errors: deprecated_api_multiple_keywords: Không thể thay đổi các tham số này từ ứng dụng này vì chúng áp dụng cho nhiều hơn một từ khóa bộ lọc. Sử dụng ứng dụng mới hơn hoặc giao diện web. @@ -1171,10 +1172,18 @@ vi: expires_on: Hết hạn vào %{date} keywords: other: "%{count} từ khóa" + statuses: + other: "%{count} tút" title: Bộ lọc new: save: Lưu thành bộ lọc mới title: Thêm bộ lọc mới + statuses: + back_to_filter: Quay về bộ lọc + batch: + remove: Xóa khỏi bộ lọc + index: + title: Những tút đã lọc footer: developers: Phát triển more: Nhiều hơn diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 0bf1833f2..1a71554bb 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -1161,6 +1161,8 @@ zh-CN: edit: add_keyword: 添加关键词 keywords: 关键词 + statuses: 个别嘟文 + statuses_hint_html: 无论是否匹配下列关键词,此过滤器适用于选用个别嘟文。你可以点击此处来审核这些嘟文,并从过滤器中移除。 title: 编辑过滤器 errors: deprecated_api_multiple_keywords: 这些参数不能从此应用程序更改,因为它们应用于一个以上的过滤关键字。 使用较新的应用程序或网页界面。 @@ -1173,10 +1175,21 @@ zh-CN: expires_on: "%{date} 后到期" keywords: other: "%{count} 关键词" + statuses: + other: "%{count} 条嘟文" + statuses_long: + other: "%{count} 条个别嘟文已隐藏" title: 过滤器 new: save: 保存新过滤器 title: 添加新的过滤器 + statuses: + back_to_filter: 返回至过滤器 + batch: + remove: 从过滤器中移除 + index: + hint: 无论其他条件如何,此过滤器适用于选用个别嘟文。你可以从网页界面中向此过滤器加入更多嘟文。 + title: 过滤的嘟文 footer: developers: 开发者 more: 更多… diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 1490aeef1..c055ba69f 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -1163,6 +1163,8 @@ zh-TW: edit: add_keyword: 新增關鍵字 keywords: 關鍵字 + statuses: 各別嘟文 + statuses_hint_html: 此過濾器會套用至所選之各別嘟文,不管它們有無匹配到以下的關鍵字。您可以檢視這些嘟文而按此將它們從過濾器中移除。 title: 編輯篩選條件 errors: deprecated_api_multiple_keywords: 這些參數無法從此應用程式中更改,因為它們適用於一或多個過濾器關鍵字。請使用較新的應用程式或是網頁介面。 @@ -1175,10 +1177,21 @@ zh-TW: expires_on: 於 %{date} 過期 keywords: other: "%{count} 個關鍵字" + statuses: + other: "%{count} 則嘟文" + statuses_long: + other: "%{count} 則各別嘟文被隱藏" title: 過濾器 new: save: 儲存新過濾器 title: 新增篩選器 + statuses: + back_to_filter: 回到過濾器 + batch: + remove: 從過濾器中移除 + index: + hint: 此過濾器會套用至所選之各別嘟文,不管它們有無符合其他條件。您可以從網頁介面中將更多嘟文加入至此過濾器。 + title: 已過濾之嘟文 footer: developers: 開發者 more: 更多...... From 63adef2021b05f282c5a0c6ba25f99e093620e88 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 25 Aug 2022 17:36:01 +0200 Subject: [PATCH 337/652] Change wording of a few filter-related strings (#19050) Follow-up on #18945 addressing review comments --- config/locales/en.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index 596cc1a28..e495ef841 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1182,7 +1182,7 @@ en: add_keyword: Add keyword keywords: Keywords statuses: Individual posts - statuses_hint_html: This filter applies to select individual posts regardless of whether they match the keywords below. You can review these posts and remove them from the filter by clicking here. + statuses_hint_html: This filter applies to select individual posts regardless of whether they match the keywords below. Review or remove posts from the filter. title: Edit filter errors: deprecated_api_multiple_keywords: These parameters cannot be changed from this application because they apply to more than one filter keyword. Use a more recent application or the web interface. @@ -1211,7 +1211,7 @@ en: batch: remove: Remove from filter index: - hint: This filter applies to select individual posts regardless of other criteria. You can add more posts to this filter from the Web interface. + hint: This filter applies to select individual posts regardless of other criteria. You can add more posts to this filter from the web interface. title: Filtered posts footer: developers: Developers From 2cae5f5b8d4d0702fe9835a0ce2782f238755d0c Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 25 Aug 2022 17:36:35 +0200 Subject: [PATCH 338/652] =?UTF-8?q?Fix=20=E2=80=9CFilter=20this=20post?= =?UTF-8?q?=E2=80=9D=20potentially=20listing=20deleted=20filters=20(#19051?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/javascript/mastodon/reducers/filters.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/reducers/filters.js b/app/javascript/mastodon/reducers/filters.js index cc1d3349c..f4f97cd3a 100644 --- a/app/javascript/mastodon/reducers/filters.js +++ b/app/javascript/mastodon/reducers/filters.js @@ -35,7 +35,7 @@ export default function filters(state = ImmutableMap(), action) { case FILTERS_CREATE_SUCCESS: return normalizeFilter(state, action.filter); case FILTERS_FETCH_SUCCESS: - //TODO: handle deleting obsolete filters + return normalizeFilters(ImmutableMap(), action.filters); case FILTERS_IMPORT: return normalizeFilters(state, action.filters); default: From 55bef1e34fc3b07ed7f762d565a161e74e128016 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 25 Aug 2022 17:36:54 +0200 Subject: [PATCH 339/652] Fix quickly switching notification filters resulting in empty or incorrect list (#19052) Follow-up to #18960 The aforementioned PR fixed an issue in which switching notification filters while notifications were loading prevented the query for the new filter from running, but another issue remained: if the first query completed after the second one, its results would override the second one, thus leading to the same issue. This commit cancels the first request if it is still running, before issuing the second one. --- .../mastodon/actions/notifications.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/app/javascript/mastodon/actions/notifications.js b/app/javascript/mastodon/actions/notifications.js index 7f62e6c04..d4588db2c 100644 --- a/app/javascript/mastodon/actions/notifications.js +++ b/app/javascript/mastodon/actions/notifications.js @@ -141,15 +141,22 @@ const excludeTypesFromFilter = filter => { const noOp = () => {}; +let expandNotificationsController = new AbortController(); + export function expandNotifications({ maxId, forceLoad } = {}, done = noOp) { return (dispatch, getState) => { const activeFilter = getState().getIn(['settings', 'notifications', 'quickFilter', 'active']); const notifications = getState().get('notifications'); const isLoadingMore = !!maxId; - if (notifications.get('isLoading') && !forceLoad) { - done(); - return; + if (notifications.get('isLoading')) { + if (forceLoad) { + expandNotificationsController.abort(); + expandNotificationsController = new AbortController(); + } else { + done(); + return; + } } const params = { @@ -174,7 +181,7 @@ export function expandNotifications({ maxId, forceLoad } = {}, done = noOp) { dispatch(expandNotificationsRequest(isLoadingMore)); - api(getState).get('/api/v1/notifications', { params }).then(response => { + api(getState).get('/api/v1/notifications', { params, signal: expandNotificationsController.signal }).then(response => { const next = getLinks(response).refs.find(link => link.rel === 'next'); dispatch(importFetchedAccounts(response.data.map(item => item.account))); @@ -215,7 +222,7 @@ export function expandNotificationsFail(error, isLoadingMore) { type: NOTIFICATIONS_EXPAND_FAIL, error, skipLoading: !isLoadingMore, - skipAlert: !isLoadingMore, + skipAlert: !isLoadingMore || error.name === 'AbortError', }; }; From 81e1cc5fece9a431c28ca648c2dd4b1b5f643f13 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Fri, 26 Aug 2022 03:10:01 +0900 Subject: [PATCH 340/652] Replace to `workbox-webpack-plugin` from `offline-plugin` (#18409) --- app/javascript/mastodon/main.js | 26 +- .../mastodon/service_worker/entry.js | 81 +- .../service_worker/web_push_notifications.js | 7 +- app/javascript/mastodon/storage/db.js | 27 - app/javascript/mastodon/storage/modifier.js | 211 ---- config/webpack/production.js | 84 +- package.json | 7 +- public/sw.js | 2 +- public/sw.js.map | 1 + yarn.lock | 1058 +++++++++++++++-- 10 files changed, 1059 insertions(+), 445 deletions(-) delete mode 100644 app/javascript/mastodon/storage/db.js delete mode 100644 app/javascript/mastodon/storage/modifier.js create mode 120000 public/sw.js.map diff --git a/app/javascript/mastodon/main.js b/app/javascript/mastodon/main.js index bda51f692..a66975bfd 100644 --- a/app/javascript/mastodon/main.js +++ b/app/javascript/mastodon/main.js @@ -1,9 +1,9 @@ -import * as registerPushNotifications from './actions/push_notifications'; -import { setupBrowserNotifications } from './actions/notifications'; -import { default as Mastodon, store } from './containers/mastodon'; import React from 'react'; import ReactDOM from 'react-dom'; -import ready from './ready'; +import * as registerPushNotifications from 'mastodon/actions/push_notifications'; +import { setupBrowserNotifications } from 'mastodon/actions/notifications'; +import Mastodon, { store } from 'mastodon/containers/mastodon'; +import ready from 'mastodon/ready'; const perf = require('./performance'); @@ -24,10 +24,20 @@ function main() { ReactDOM.render(, mountNode); store.dispatch(setupBrowserNotifications()); - if (process.env.NODE_ENV === 'production') { - // avoid offline in dev mode because it's harder to debug - require('offline-plugin/runtime').install(); - store.dispatch(registerPushNotifications.register()); + + if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { + import('workbox-window') + .then(({ Workbox }) => { + const wb = new Workbox('/sw.js'); + + return wb.register(); + }) + .then(() => { + store.dispatch(registerPushNotifications.register()); + }) + .catch(err => { + console.error(err); + }); } perf.stop('main()'); }); diff --git a/app/javascript/mastodon/service_worker/entry.js b/app/javascript/mastodon/service_worker/entry.js index b354f3b33..e4c66cc00 100644 --- a/app/javascript/mastodon/service_worker/entry.js +++ b/app/javascript/mastodon/service_worker/entry.js @@ -1,20 +1,59 @@ -// import { freeStorage, storageFreeable } from '../storage/modifier'; -import './web_push_notifications'; +import { ExpirationPlugin } from 'workbox-expiration'; +import { precacheAndRoute } from 'workbox-precaching'; +import { registerRoute } from 'workbox-routing'; +import { CacheFirst } from 'workbox-strategies'; +import { handleNotificationClick, handlePush } from './web_push_notifications'; -// function openSystemCache() { -// return caches.open('mastodon-system'); -// } +const CACHE_NAME_PREFIX = 'mastodon-'; function openWebCache() { - return caches.open('mastodon-web'); + return caches.open(`${CACHE_NAME_PREFIX}web`); } function fetchRoot() { return fetch('/', { credentials: 'include', redirect: 'manual' }); } -// const firefox = navigator.userAgent.match(/Firefox\/(\d+)/); -// const invalidOnlyIfCached = firefox && firefox[1] < 60; +precacheAndRoute(self.__WB_MANIFEST); + +registerRoute( + /locale_.*\.js$/, + new CacheFirst({ + cacheName: `${CACHE_NAME_PREFIX}locales`, + plugins: [ + new ExpirationPlugin({ + maxAgeSeconds: 30 * 24 * 60 * 60, // 1 month + maxEntries: 5, + }), + ], + }), +); + +registerRoute( + ({ request }) => request.destination === 'font', + new CacheFirst({ + cacheName: `${CACHE_NAME_PREFIX}fonts`, + plugins: [ + new ExpirationPlugin({ + maxAgeSeconds: 30 * 24 * 60 * 60, // 1 month + maxEntries: 5, + }), + ], + }), +); + +registerRoute( + ({ request }) => ['audio', 'image', 'track', 'video'].includes(request.destination), + new CacheFirst({ + cacheName: `m${CACHE_NAME_PREFIX}media`, + plugins: [ + new ExpirationPlugin({ + maxAgeSeconds: 7 * 24 * 60 * 60, // 1 week + maxEntries: 256, + }), + ], + }), +); // Cause a new version of a registered Service Worker to replace an existing one // that is already installed, and replace the currently active worker on open pages. @@ -52,26 +91,8 @@ self.addEventListener('fetch', function(event) { return response; })); - } /* else if (storageFreeable && (ATTACHMENT_HOST ? url.host === ATTACHMENT_HOST : url.pathname.startsWith('/system/'))) { - event.respondWith(openSystemCache().then(cache => { - return cache.match(event.request.url).then(cached => { - if (cached === undefined) { - const asyncResponse = invalidOnlyIfCached && event.request.cache === 'only-if-cached' ? - fetch(event.request, { cache: 'no-cache' }) : fetch(event.request); - - return asyncResponse.then(response => { - if (response.ok) { - cache - .put(event.request.url, response.clone()) - .catch(()=>{}).then(freeStorage()).catch(); - } - - return response; - }); - } - - return cached; - }); - })); - } */ + } }); + +self.addEventListener('push', handlePush); +self.addEventListener('notificationclick', handleNotificationClick); diff --git a/app/javascript/mastodon/service_worker/web_push_notifications.js b/app/javascript/mastodon/service_worker/web_push_notifications.js index 48a2be7e7..9b75e9b9d 100644 --- a/app/javascript/mastodon/service_worker/web_push_notifications.js +++ b/app/javascript/mastodon/service_worker/web_push_notifications.js @@ -75,7 +75,7 @@ const formatMessage = (messageId, locale, values = {}) => const htmlToPlainText = html => unescape(html.replace(//g, '\n').replace(/<\/p>

    /g, '\n\n').replace(/<[^>]*>/g, '')); -const handlePush = (event) => { +export const handlePush = (event) => { const { access_token, notification_id, preferred_locale, title, body, icon } = event.data.json(); // Placeholder until more information can be loaded @@ -189,7 +189,7 @@ const openUrl = url => return self.clients.openWindow(url); }); -const handleNotificationClick = (event) => { +export const handleNotificationClick = (event) => { const reactToNotificationClick = new Promise((resolve, reject) => { if (event.action) { if (event.action === 'expand') { @@ -211,6 +211,3 @@ const handleNotificationClick = (event) => { event.waitUntil(reactToNotificationClick); }; - -self.addEventListener('push', handlePush); -self.addEventListener('notificationclick', handleNotificationClick); diff --git a/app/javascript/mastodon/storage/db.js b/app/javascript/mastodon/storage/db.js deleted file mode 100644 index 377a792a7..000000000 --- a/app/javascript/mastodon/storage/db.js +++ /dev/null @@ -1,27 +0,0 @@ -export default () => new Promise((resolve, reject) => { - // ServiceWorker is required to synchronize the login state. - // Microsoft Edge 17 does not support getAll according to: - // Catalog of standard and vendor APIs across browsers - Microsoft Edge Development - // https://developer.microsoft.com/en-us/microsoft-edge/platform/catalog/?q=specName%3Aindexeddb - if (!('caches' in self && 'getAll' in IDBObjectStore.prototype)) { - reject(); - return; - } - - const request = indexedDB.open('mastodon'); - - request.onerror = reject; - request.onsuccess = ({ target }) => resolve(target.result); - - request.onupgradeneeded = ({ target }) => { - const accounts = target.result.createObjectStore('accounts', { autoIncrement: true }); - const statuses = target.result.createObjectStore('statuses', { autoIncrement: true }); - - accounts.createIndex('id', 'id', { unique: true }); - accounts.createIndex('moved', 'moved'); - - statuses.createIndex('id', 'id', { unique: true }); - statuses.createIndex('account', 'account'); - statuses.createIndex('reblog', 'reblog'); - }; -}); diff --git a/app/javascript/mastodon/storage/modifier.js b/app/javascript/mastodon/storage/modifier.js deleted file mode 100644 index 9fadabef4..000000000 --- a/app/javascript/mastodon/storage/modifier.js +++ /dev/null @@ -1,211 +0,0 @@ -import openDB from './db'; - -const accountAssetKeys = ['avatar', 'avatar_static', 'header', 'header_static']; -const storageMargin = 8388608; -const storeLimit = 1024; - -// navigator.storage is not present on: -// Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.100 Safari/537.36 Edge/16.16299 -// estimate method is not present on Chrome 57.0.2987.98 on Linux. -export const storageFreeable = 'storage' in navigator && 'estimate' in navigator.storage; - -function openCache() { - // ServiceWorker and Cache API is not available on iOS 11 - // https://webkit.org/status/#specification-service-workers - return self.caches ? caches.open('mastodon-system') : Promise.reject(); -} - -function printErrorIfAvailable(error) { - if (error) { - console.warn(error); - } -} - -function put(name, objects, onupdate, oncreate) { - return openDB().then(db => (new Promise((resolve, reject) => { - const putTransaction = db.transaction(name, 'readwrite'); - const putStore = putTransaction.objectStore(name); - const putIndex = putStore.index('id'); - - objects.forEach(object => { - putIndex.getKey(object.id).onsuccess = retrieval => { - function addObject() { - putStore.add(object); - } - - function deleteObject() { - putStore.delete(retrieval.target.result).onsuccess = addObject; - } - - if (retrieval.target.result) { - if (onupdate) { - onupdate(object, retrieval.target.result, putStore, deleteObject); - } else { - deleteObject(); - } - } else { - if (oncreate) { - oncreate(object, addObject); - } else { - addObject(); - } - } - }; - }); - - putTransaction.oncomplete = () => { - const readTransaction = db.transaction(name, 'readonly'); - const readStore = readTransaction.objectStore(name); - const count = readStore.count(); - - count.onsuccess = () => { - const excess = count.result - storeLimit; - - if (excess > 0) { - const retrieval = readStore.getAll(null, excess); - - retrieval.onsuccess = () => resolve(retrieval.result); - retrieval.onerror = reject; - } else { - resolve([]); - } - }; - - count.onerror = reject; - }; - - putTransaction.onerror = reject; - })).then(resolved => { - db.close(); - return resolved; - }, error => { - db.close(); - throw error; - })); -} - -function evictAccountsByRecords(records) { - return openDB().then(db => { - const transaction = db.transaction(['accounts', 'statuses'], 'readwrite'); - const accounts = transaction.objectStore('accounts'); - const accountsIdIndex = accounts.index('id'); - const accountsMovedIndex = accounts.index('moved'); - const statuses = transaction.objectStore('statuses'); - const statusesIndex = statuses.index('account'); - - function evict(toEvict) { - toEvict.forEach(record => { - openCache() - .then(cache => accountAssetKeys.forEach(key => cache.delete(records[key]))) - .catch(printErrorIfAvailable); - - accountsMovedIndex.getAll(record.id).onsuccess = ({ target }) => evict(target.result); - - statusesIndex.getAll(record.id).onsuccess = - ({ target }) => evictStatusesByRecords(target.result); - - accountsIdIndex.getKey(record.id).onsuccess = - ({ target }) => target.result && accounts.delete(target.result); - }); - } - - evict(records); - - db.close(); - }).catch(printErrorIfAvailable); -} - -export function evictStatus(id) { - evictStatuses([id]); -} - -export function evictStatuses(ids) { - return openDB().then(db => { - const transaction = db.transaction('statuses', 'readwrite'); - const store = transaction.objectStore('statuses'); - const idIndex = store.index('id'); - const reblogIndex = store.index('reblog'); - - ids.forEach(id => { - reblogIndex.getAllKeys(id).onsuccess = - ({ target }) => target.result.forEach(reblogKey => store.delete(reblogKey)); - - idIndex.getKey(id).onsuccess = - ({ target }) => target.result && store.delete(target.result); - }); - - db.close(); - }).catch(printErrorIfAvailable); -} - -function evictStatusesByRecords(records) { - return evictStatuses(records.map(({ id }) => id)); -} - -export function putAccounts(records, avatarStatic) { - const avatarKey = avatarStatic ? 'avatar_static' : 'avatar'; - const newURLs = []; - - put('accounts', records, (newRecord, oldKey, store, oncomplete) => { - store.get(oldKey).onsuccess = ({ target }) => { - accountAssetKeys.forEach(key => { - const newURL = newRecord[key]; - const oldURL = target.result[key]; - - if (newURL !== oldURL) { - openCache() - .then(cache => cache.delete(oldURL)) - .catch(printErrorIfAvailable); - } - }); - - const newURL = newRecord[avatarKey]; - const oldURL = target.result[avatarKey]; - - if (newURL !== oldURL) { - newURLs.push(newURL); - } - - oncomplete(); - }; - }, (newRecord, oncomplete) => { - newURLs.push(newRecord[avatarKey]); - oncomplete(); - }).then(records => Promise.all([ - evictAccountsByRecords(records), - openCache().then(cache => cache.addAll(newURLs)), - ])).then(freeStorage, error => { - freeStorage(); - throw error; - }).catch(printErrorIfAvailable); -} - -export function putStatuses(records) { - put('statuses', records) - .then(evictStatusesByRecords) - .catch(printErrorIfAvailable); -} - -export function freeStorage() { - return storageFreeable && navigator.storage.estimate().then(({ quota, usage }) => { - if (usage + storageMargin < quota) { - return null; - } - - return openDB().then(db => new Promise((resolve, reject) => { - const retrieval = db.transaction('accounts', 'readonly').objectStore('accounts').getAll(null, 1); - - retrieval.onsuccess = () => { - if (retrieval.result.length > 0) { - resolve(evictAccountsByRecords(retrieval.result).then(freeStorage)); - } else { - resolve(caches.delete('mastodon-system')); - } - }; - - retrieval.onerror = reject; - - db.close(); - })); - }); -} diff --git a/config/webpack/production.js b/config/webpack/production.js index cd3d01035..79dcebc7c 100644 --- a/config/webpack/production.js +++ b/config/webpack/production.js @@ -1,29 +1,16 @@ // Note: You must restart bin/webpack-dev-server for changes to take effect -const path = require('path'); -const { URL } = require('url'); +const { createHash } = require('crypto'); +const { readFileSync } = require('fs'); +const { resolve } = require('path'); const { merge } = require('webpack-merge'); const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer'); -const OfflinePlugin = require('offline-plugin'); const TerserPlugin = require('terser-webpack-plugin'); const CompressionPlugin = require('compression-webpack-plugin'); -const { output } = require('./configuration'); +const { InjectManifest } = require('workbox-webpack-plugin'); const sharedConfig = require('./shared'); -let attachmentHost; - -if (process.env.S3_ENABLED === 'true') { - if (process.env.S3_ALIAS_HOST || process.env.S3_CLOUDFRONT_HOST) { - attachmentHost = process.env.S3_ALIAS_HOST || process.env.S3_CLOUDFRONT_HOST; - } else { - attachmentHost = process.env.S3_HOSTNAME || `s3-${process.env.S3_REGION || 'us-east-1'}.amazonaws.com`; - } -} else if (process.env.SWIFT_ENABLED === 'true') { - const { host } = new URL(process.env.SWIFT_OBJECT_URL); - attachmentHost = host; -} else { - attachmentHost = null; -} +const root = resolve(__dirname, '..', '..'); module.exports = merge(sharedConfig, { mode: 'production', @@ -52,47 +39,28 @@ module.exports = merge(sharedConfig, { openAnalyzer: false, logLevel: 'silent', // do not bother Webpacker, who runs with --json and parses stdout }), - new OfflinePlugin({ - publicPath: output.publicPath, // sw.js must be served from the root to avoid scope issues - safeToUseOptionalCaches: true, - caches: { - main: [':rest:'], - additional: [':externals:'], - optional: [ - '**/locale_*.js', // don't fetch every locale; the user only needs one - '**/*_polyfills-*.js', // the user may not need polyfills - '**/*.woff2', // the user may have system-fonts enabled - // images/audio can be cached on-demand - '**/*.png', - '**/*.jpg', - '**/*.jpeg', - '**/*.svg', - '**/*.mp3', - '**/*.ogg', - ], - }, - externals: [ - '/emoji/1f602.svg', // used for emoji picker dropdown - '/emoji/sheet_10.png', // used in emoji-mart + new InjectManifest({ + additionalManifestEntries: ['1f602.svg', 'sheet_13.png'].map((filename) => { + const path = resolve(root, 'public', 'emoji', filename); + const body = readFileSync(path); + const md5 = createHash('md5'); + + md5.update(body); + + return { + revision: md5.digest('hex'), + url: `/emoji/${filename}`, + }; + }), + exclude: [ + /(?:base|extra)_polyfills-.*\.js$/, + /locale_.*\.js$/, + /mailer-.*\.(?:css|js)$/, ], - excludes: [ - '**/*.gz', - '**/*.map', - 'stats.json', - 'report.html', - // any browser that supports ServiceWorker will support woff2 - '**/*.eot', - '**/*.ttf', - '**/*-webfont-*.svg', - '**/*.woff', - ], - ServiceWorker: { - entry: `imports-loader?additionalCode=${encodeURIComponent(`var ATTACHMENT_HOST=${JSON.stringify(attachmentHost)};`)}!${encodeURI(path.join(__dirname, '../../app/javascript/mastodon/service_worker/entry.js'))}`, - cacheName: 'mastodon', - output: '../assets/sw.js', - publicPath: '/sw.js', - minify: true, - }, + include: [/\.js$/, /\.css$/], + maximumFileSizeToCacheInBytes: 2 * 1_024 * 1_024, // 2 MiB + swDest: resolve(root, 'public', 'packs', 'sw.js'), + swSrc: resolve(root, 'app', 'javascript', 'mastodon', 'service_worker', 'entry.js'), }), ], }); diff --git a/package.json b/package.json index b605fe114..6973afeaa 100644 --- a/package.json +++ b/package.json @@ -82,7 +82,6 @@ "object-assign": "^4.1.1", "object-fit-images": "^3.2.3", "object.values": "^1.1.5", - "offline-plugin": "^5.0.7", "path-complete-extname": "^1.0.0", "pg": "^8.5.0", "postcss": "^8.4.16", @@ -136,6 +135,12 @@ "webpack-cli": "^3.3.12", "webpack-merge": "^5.8.0", "wicg-inert": "^3.1.2", + "workbox-expiration": "^6.5.3", + "workbox-precaching": "^6.5.3", + "workbox-routing": "^6.5.3", + "workbox-strategies": "^6.5.3", + "workbox-webpack-plugin": "^6.5.3", + "workbox-window": "^6.5.3", "ws": "^8.8.1" }, "devDependencies": { diff --git a/public/sw.js b/public/sw.js index 1471a9e64..debb9af9d 120000 --- a/public/sw.js +++ b/public/sw.js @@ -1 +1 @@ -assets/sw.js \ No newline at end of file +packs/sw.js \ No newline at end of file diff --git a/public/sw.js.map b/public/sw.js.map new file mode 120000 index 000000000..0734c8199 --- /dev/null +++ b/public/sw.js.map @@ -0,0 +1 @@ +packs/sw.js.map \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index ef957156d..be3db7a96 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14,6 +14,15 @@ dependencies: "@jridgewell/trace-mapping" "^0.3.0" +"@apideck/better-ajv-errors@^0.3.1": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.3.tgz#ab0b1e981e1749bf59736cf7ebe25cfc9f949c15" + integrity sha512-9o+HO2MbJhJHjDYZaDxJmSDckvDpiuItEsrIShV0DXeCshXWRHhqYyU/PKHMkuClOmFnZhRd6wzv4vpDu/dRKg== + dependencies: + json-schema "^0.4.0" + jsonpointer "^5.0.0" + leven "^3.1.0" + "@babel/code-frame@7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" @@ -21,19 +30,45 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== dependencies: "@babel/highlight" "^7.18.6" +"@babel/compat-data@^7.17.10": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.6.tgz#8b37d24e88e8e21c499d4328db80577d8882fa53" + integrity sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ== + "@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8": version "7.18.8" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d" integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ== -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.13", "@babel/core@^7.7.2": +"@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.7.2": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.10.tgz#74ef0fbf56b7dfc3f198fc2d927f4f03e12f4b05" + integrity sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.10" + "@babel/helper-compilation-targets" "^7.17.10" + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helpers" "^7.17.9" + "@babel/parser" "^7.17.10" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.10" + "@babel/types" "^7.17.10" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" + +"@babel/core@^7.18.13": version "7.18.13" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.13.tgz#9be8c44512751b05094a4d3ab05fc53a47ce00ac" integrity sha512-ZisbOvRRusFktksHSG6pjj1CSvkPkcZq/KHD45LAkVP/oiHJkNBZWfpvlLmX8OtHDG8IuzsFlVRWo08w7Qxn0A== @@ -63,7 +98,16 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.0" -"@babel/generator@^7.18.13", "@babel/generator@^7.7.2": +"@babel/generator@^7.17.10", "@babel/generator@^7.7.2": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.6.tgz#9ab2d46d3cbf631f0e80f72e72874a04c3fc12a9" + integrity sha512-AIwwoOS8axIC5MZbhNHRLKi3D+DMpvDf9XUcu3pIVAfOHFT45f4AoDAltRbHIQomCipkCZxrNkfpOEHhJz/VKw== + dependencies: + "@babel/types" "^7.18.6" + "@jridgewell/gen-mapping" "^0.3.0" + jsesc "^2.5.1" + +"@babel/generator@^7.18.13": version "7.18.13" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.13.tgz#59550cbb9ae79b8def15587bdfbaa388c4abf212" integrity sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ== @@ -95,6 +139,16 @@ "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/types" "^7.18.6" +"@babel/helper-compilation-targets@^7.17.10": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz#18d35bfb9f83b1293c22c55b3d576c1315b6ed96" + integrity sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg== + dependencies: + "@babel/compat-data" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + browserslist "^4.20.2" + semver "^6.3.0" + "@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf" @@ -185,14 +239,35 @@ dependencies: "@babel/types" "^7.18.9" -"@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.18.6": +"@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-module-imports@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.18.9": +"@babel/helper-module-transforms@^7.17.7", "@babel/helper-module-transforms@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz#57e3ca669e273d55c3cda55e6ebf552f37f483c8" + integrity sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw== + dependencies: + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.18.6" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.6" + "@babel/types" "^7.18.6" + +"@babel/helper-module-transforms@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz#5a1079c005135ed627442df31a42887e80fcb712" integrity sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g== @@ -285,7 +360,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== -"@babel/helper-validator-option@^7.18.6": +"@babel/helper-validator-option@^7.16.7", "@babel/helper-validator-option@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== @@ -310,6 +385,15 @@ "@babel/traverse" "^7.18.10" "@babel/types" "^7.18.10" +"@babel/helpers@^7.17.9": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.6.tgz#4c966140eaa1fcaa3d5a8c09d7db61077d4debfd" + integrity sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ== + dependencies: + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.6" + "@babel/types" "^7.18.6" + "@babel/helpers@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.9.tgz#4bef3b893f253a1eced04516824ede94dcfe7ff9" @@ -337,18 +421,32 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.18.13": +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.17.10": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.6.tgz#845338edecad65ebffef058d3be851f1d28a63bc" + integrity sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw== + +"@babel/parser@^7.18.10", "@babel/parser@^7.18.13": version "7.18.13" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.13.tgz#5b2dd21cae4a2c5145f1fbd8ca103f9313d3b7e4" integrity sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg== -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.6.tgz#b4e4dbc2cd1acd0133479918f7c6412961c9adb8" + integrity sha512-Udgu8ZRgrBrttVz6A0EVL0SJ1z+RLbIeqsu632SA1hf0awEppD6TvdznoH+orIF8wtFFAV/Enmw9Y+9oV8TQcw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" + "@babel/plugin-proposal-optional-chaining" "^7.18.6" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz#a11af19aa373d68d561f08e0a57242350ed0ec50" @@ -358,6 +456,16 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-proposal-optional-chaining" "^7.18.9" +"@babel/plugin-proposal-async-generator-functions@^7.16.8": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz#aedac81e6fc12bb643374656dd5f2605bf743d17" + integrity sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w== + dependencies: + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-remap-async-to-generator" "^7.18.6" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-proposal-async-generator-functions@^7.18.10": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz#85ea478c98b0095c3e4102bff3b67d306ed24952" @@ -368,7 +476,7 @@ "@babel/helper-remap-async-to-generator" "^7.18.9" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.18.6": +"@babel/plugin-proposal-class-properties@^7.16.7", "@babel/plugin-proposal-class-properties@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== @@ -376,7 +484,7 @@ "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-class-static-block@^7.18.6": +"@babel/plugin-proposal-class-static-block@^7.17.6", "@babel/plugin-proposal-class-static-block@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz#8aa81d403ab72d3962fc06c26e222dacfc9b9020" integrity sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw== @@ -396,7 +504,7 @@ "@babel/helper-split-export-declaration" "^7.18.6" "@babel/plugin-syntax-decorators" "^7.18.6" -"@babel/plugin-proposal-dynamic-import@^7.18.6": +"@babel/plugin-proposal-dynamic-import@^7.16.7", "@babel/plugin-proposal-dynamic-import@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== @@ -404,6 +512,14 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-dynamic-import" "^7.8.3" +"@babel/plugin-proposal-export-namespace-from@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.6.tgz#1016f0aa5ab383bbf8b3a85a2dcaedf6c8ee7491" + integrity sha512-zr/QcUlUo7GPo6+X1wC98NJADqmy5QTFWWhqeQWiki4XHafJtLl/YMGkmRB2szDD2IYJCCdBTd4ElwhId9T7Xw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-proposal-export-namespace-from@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" @@ -412,7 +528,7 @@ "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.18.6": +"@babel/plugin-proposal-json-strings@^7.16.7", "@babel/plugin-proposal-json-strings@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== @@ -420,6 +536,14 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-json-strings" "^7.8.3" +"@babel/plugin-proposal-logical-assignment-operators@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.6.tgz#3b9cac6f1ffc2aa459d111df80c12020dfc6b665" + integrity sha512-zMo66azZth/0tVd7gmkxOkOjs2rpHyhpcFo565PUP37hSp6hSd9uUKIfTDFMz58BwqgQKhJ9YxtM5XddjXVn+Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-proposal-logical-assignment-operators@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz#8148cbb350483bf6220af06fa6db3690e14b2e23" @@ -428,7 +552,7 @@ "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== @@ -436,7 +560,7 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.18.6": +"@babel/plugin-proposal-numeric-separator@^7.16.7", "@babel/plugin-proposal-numeric-separator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== @@ -444,6 +568,17 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" +"@babel/plugin-proposal-object-rest-spread@^7.17.3": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.6.tgz#ec93bba06bfb3e15ebd7da73e953d84b094d5daf" + integrity sha512-9yuM6wr4rIsKa1wlUAbZEazkCrgw2sMPEXCr4Rnwetu7cEW1NydkCWytLuYletbf8vFxdJxFhwEZqMpOx2eZyw== + dependencies: + "@babel/compat-data" "^7.18.6" + "@babel/helper-compilation-targets" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.18.6" + "@babel/plugin-proposal-object-rest-spread@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz#f9434f6beb2c8cae9dfcf97d2a5941bbbf9ad4e7" @@ -455,7 +590,7 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.18.8" -"@babel/plugin-proposal-optional-catch-binding@^7.18.6": +"@babel/plugin-proposal-optional-catch-binding@^7.16.7", "@babel/plugin-proposal-optional-catch-binding@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== @@ -463,6 +598,15 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" +"@babel/plugin-proposal-optional-chaining@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.6.tgz#46d4f2ffc20e87fad1d98bc4fa5d466366f6aa0b" + integrity sha512-PatI6elL5eMzoypFAiYDpYQyMtXTn+iMhuxxQt5mAXD4fEmKorpSI3PHd+i3JXBJN3xyA6MvJv7at23HffFHwA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-proposal-optional-chaining@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993" @@ -472,7 +616,7 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-methods@^7.18.6": +"@babel/plugin-proposal-private-methods@^7.16.11", "@babel/plugin-proposal-private-methods@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== @@ -480,7 +624,7 @@ "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-private-property-in-object@^7.18.6": +"@babel/plugin-proposal-private-property-in-object@^7.16.7", "@babel/plugin-proposal-private-property-in-object@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz#a64137b232f0aca3733a67eb1a144c192389c503" integrity sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw== @@ -490,7 +634,7 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": +"@babel/plugin-proposal-unicode-property-regex@^7.16.7", "@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== @@ -645,14 +789,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-arrow-functions@^7.18.6": +"@babel/plugin-transform-arrow-functions@^7.16.7", "@babel/plugin-transform-arrow-functions@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz#19063fcf8771ec7b31d742339dac62433d0611fe" integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-async-to-generator@^7.18.6": +"@babel/plugin-transform-async-to-generator@^7.16.8", "@babel/plugin-transform-async-to-generator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz#ccda3d1ab9d5ced5265fdb13f1882d5476c71615" integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== @@ -661,13 +805,20 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-remap-async-to-generator" "^7.18.6" -"@babel/plugin-transform-block-scoped-functions@^7.18.6": +"@babel/plugin-transform-block-scoped-functions@^7.16.7", "@babel/plugin-transform-block-scoped-functions@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" +"@babel/plugin-transform-block-scoping@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.6.tgz#b5f78318914615397d86a731ef2cc668796a726c" + integrity sha512-pRqwb91C42vs1ahSAWJkxOxU1RHWDn16XAa6ggQ72wjLlWyYeAcLvTtE0aM8ph3KNydy9CQF2nLYcjq1WysgxQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-transform-block-scoping@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz#f9b7e018ac3f373c81452d6ada8bd5a18928926d" @@ -675,6 +826,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" +"@babel/plugin-transform-classes@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.6.tgz#3501a8f3f4c7d5697c27a3eedbee71d68312669f" + integrity sha512-XTg8XW/mKpzAF3actL554Jl/dOYoJtv3l8fxaEczpgz84IeeVf+T1u2CSvPHuZbt0w3JkIx4rdn/MRQI7mo0HQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-function-name" "^7.18.6" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + globals "^11.1.0" + "@babel/plugin-transform-classes@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz#90818efc5b9746879b869d5ce83eb2aa48bbc3da" @@ -689,6 +854,13 @@ "@babel/helper-split-export-declaration" "^7.18.6" globals "^11.1.0" +"@babel/plugin-transform-computed-properties@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.6.tgz#5d15eb90e22e69604f3348344c91165c5395d032" + integrity sha512-9repI4BhNrR0KenoR9vm3/cIc1tSBIo+u1WVjKCAynahj25O8zfbiE6JtAtHPGQSs4yZ+bA8mRasRP+qc+2R5A== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-transform-computed-properties@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz#2357a8224d402dad623caf6259b611e56aec746e" @@ -696,6 +868,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" +"@babel/plugin-transform-destructuring@^7.17.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.6.tgz#a98b0e42c7ffbf5eefcbcf33280430f230895c6f" + integrity sha512-tgy3u6lRp17ilY8r1kP4i2+HDUwxlVqq3RTc943eAWSzGgpU1qhiKpqZ5CMyHReIYPHdo3Kg8v8edKtDqSVEyQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-transform-destructuring@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz#68906549c021cb231bee1db21d3b5b095f8ee292" @@ -703,7 +882,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": +"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== @@ -711,6 +890,13 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" +"@babel/plugin-transform-duplicate-keys@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.6.tgz#e6c94e8cd3c9dd8a88144f7b78ae22975a7ff473" + integrity sha512-NJU26U/208+sxYszf82nmGYqVF9QN8py2HFTblPT9hbawi8+1C5a9JubODLTGFuT0qlkqVinmkwOD13s0sZktg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-transform-duplicate-keys@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" @@ -718,7 +904,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-exponentiation-operator@^7.18.6": +"@babel/plugin-transform-exponentiation-operator@^7.16.7", "@babel/plugin-transform-exponentiation-operator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== @@ -726,6 +912,13 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" +"@babel/plugin-transform-for-of@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.6.tgz#e0fdb813be908e91ccc9ec87b30cc2eabf046f7c" + integrity sha512-WAjoMf4wIiSsy88KmG7tgj2nFdEK7E46tArVtcgED7Bkj6Fg/tG5SbvNIOKxbFS2VFgNh6+iaPswBeQZm4ox8w== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-transform-for-of@^7.18.8": version "7.18.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" @@ -733,6 +926,15 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" +"@babel/plugin-transform-function-name@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.6.tgz#6a7e4ae2893d336fd1b8f64c9f92276391d0f1b4" + integrity sha512-kJha/Gbs5RjzIu0CxZwf5e3aTTSlhZnHMT8zPWnJMjNpLOUgqevg+PN5oMH68nMCXnfiMo4Bhgxqj59KHTlAnA== + dependencies: + "@babel/helper-compilation-targets" "^7.18.6" + "@babel/helper-function-name" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-transform-function-name@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" @@ -742,6 +944,13 @@ "@babel/helper-function-name" "^7.18.9" "@babel/helper-plugin-utils" "^7.18.9" +"@babel/plugin-transform-literals@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.6.tgz#9d6af353b5209df72960baf4492722d56f39a205" + integrity sha512-x3HEw0cJZVDoENXOp20HlypIHfl0zMIhMVZEBVTfmqbObIpsMxMbmU5nOEO8R7LYT+z5RORKPlTI5Hj4OsO9/Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-transform-literals@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" @@ -749,14 +958,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-member-expression-literals@^7.18.6": +"@babel/plugin-transform-member-expression-literals@^7.16.7", "@babel/plugin-transform-member-expression-literals@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-modules-amd@^7.18.6": +"@babel/plugin-transform-modules-amd@^7.16.7", "@babel/plugin-transform-modules-amd@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz#8c91f8c5115d2202f277549848874027d7172d21" integrity sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg== @@ -765,7 +974,7 @@ "@babel/helper-plugin-utils" "^7.18.6" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.18.6": +"@babel/plugin-transform-modules-commonjs@^7.17.9", "@babel/plugin-transform-modules-commonjs@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz#afd243afba166cca69892e24a8fd8c9f2ca87883" integrity sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q== @@ -775,6 +984,17 @@ "@babel/helper-simple-access" "^7.18.6" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-systemjs@^7.17.8": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.6.tgz#026511b7657d63bf5d4cf2fd4aeb963139914a54" + integrity sha512-UbPYpXxLjTw6w6yXX2BYNxF3p6QY225wcTkfQCy3OMnSlS/C3xGtwUjEzGkldb/sy6PWLiCQ3NbYfjWUTI3t4g== + dependencies: + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-identifier" "^7.18.6" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-modules-systemjs@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz#545df284a7ac6a05125e3e405e536c5853099a06" @@ -786,7 +1006,7 @@ "@babel/helper-validator-identifier" "^7.18.6" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.18.6": +"@babel/plugin-transform-modules-umd@^7.16.7", "@babel/plugin-transform-modules-umd@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== @@ -794,7 +1014,7 @@ "@babel/helper-module-transforms" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-named-capturing-groups-regex@^7.18.6": +"@babel/plugin-transform-named-capturing-groups-regex@^7.17.10", "@babel/plugin-transform-named-capturing-groups-regex@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz#c89bfbc7cc6805d692f3a49bc5fc1b630007246d" integrity sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg== @@ -802,14 +1022,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-new-target@^7.18.6": +"@babel/plugin-transform-new-target@^7.16.7", "@babel/plugin-transform-new-target@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-object-super@^7.18.6": +"@babel/plugin-transform-object-super@^7.16.7", "@babel/plugin-transform-object-super@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== @@ -817,6 +1037,13 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-replace-supers" "^7.18.6" +"@babel/plugin-transform-parameters@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.6.tgz#cbe03d5a4c6385dd756034ac1baa63c04beab8dc" + integrity sha512-FjdqgMv37yVl/gwvzkcB+wfjRI8HQmc5EgOG9iGNvUY1ok+TjsoaMP7IqCDZBhkFcM5f3OPVMs6Dmp03C5k4/A== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-transform-parameters@^7.18.8": version "7.18.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz#ee9f1a0ce6d78af58d0956a9378ea3427cccb48a" @@ -824,7 +1051,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-property-literals@^7.18.6": +"@babel/plugin-transform-property-literals@^7.16.7", "@babel/plugin-transform-property-literals@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== @@ -872,7 +1099,7 @@ "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-regenerator@^7.18.6": +"@babel/plugin-transform-regenerator@^7.17.9", "@babel/plugin-transform-regenerator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz#585c66cb84d4b4bf72519a34cfce761b8676ca73" integrity sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ== @@ -880,7 +1107,7 @@ "@babel/helper-plugin-utils" "^7.18.6" regenerator-transform "^0.15.0" -"@babel/plugin-transform-reserved-words@^7.18.6": +"@babel/plugin-transform-reserved-words@^7.16.7", "@babel/plugin-transform-reserved-words@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== @@ -899,13 +1126,21 @@ babel-plugin-polyfill-regenerator "^0.4.0" semver "^6.3.0" -"@babel/plugin-transform-shorthand-properties@^7.18.6": +"@babel/plugin-transform-shorthand-properties@^7.16.7", "@babel/plugin-transform-shorthand-properties@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" +"@babel/plugin-transform-spread@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.6.tgz#82b080241965f1689f0a60ecc6f1f6575dbdb9d6" + integrity sha512-ayT53rT/ENF8WWexIRg9AiV9h0aIteyWn5ptfZTZQrjk/+f3WdrJGCY4c9wcgl2+MKkKPhzbYp97FTsquZpDCw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" + "@babel/plugin-transform-spread@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz#6ea7a6297740f381c540ac56caf75b05b74fb664" @@ -914,13 +1149,20 @@ "@babel/helper-plugin-utils" "^7.18.9" "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" -"@babel/plugin-transform-sticky-regex@^7.18.6": +"@babel/plugin-transform-sticky-regex@^7.16.7", "@babel/plugin-transform-sticky-regex@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== dependencies: "@babel/helper-plugin-utils" "^7.18.6" +"@babel/plugin-transform-template-literals@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.6.tgz#b763f4dc9d11a7cce58cf9a490d82e80547db9c2" + integrity sha512-UuqlRrQmT2SWRvahW46cGSany0uTlcj8NYOS5sRGYi8FxPYPoLd5DDmMd32ZXEj2Jq+06uGVQKHxa/hJx2EzKw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-transform-template-literals@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" @@ -928,6 +1170,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" +"@babel/plugin-transform-typeof-symbol@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.6.tgz#486bb39d5a18047358e0d04dc0d2f322f0b92e92" + integrity sha512-7m71iS/QhsPk85xSjFPovHPcH3H9qeyzsujhTc+vcdnsXavoWYJ74zx0lP5RhpC5+iDnVLO+PPMHzC11qels1g== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-transform-typeof-symbol@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" @@ -935,6 +1184,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" +"@babel/plugin-transform-unicode-escapes@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz#0d01fb7fb2243ae1c033f65f6e3b4be78db75f27" + integrity sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-transform-unicode-escapes@^7.18.10": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" @@ -942,7 +1198,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-unicode-regex@^7.18.6": +"@babel/plugin-transform-unicode-regex@^7.16.7", "@babel/plugin-transform-unicode-regex@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== @@ -950,6 +1206,86 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" +"@babel/preset-env@^7.11.0": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.17.10.tgz#a81b093669e3eb6541bb81a23173c5963c5de69c" + integrity sha512-YNgyBHZQpeoBSRBg0xixsZzfT58Ze1iZrajvv0lJc70qDDGuGfonEnMGfWeSY0mQ3JTuCWFbMkzFRVafOyJx4g== + dependencies: + "@babel/compat-data" "^7.17.10" + "@babel/helper-compilation-targets" "^7.17.10" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-async-generator-functions" "^7.16.8" + "@babel/plugin-proposal-class-properties" "^7.16.7" + "@babel/plugin-proposal-class-static-block" "^7.17.6" + "@babel/plugin-proposal-dynamic-import" "^7.16.7" + "@babel/plugin-proposal-export-namespace-from" "^7.16.7" + "@babel/plugin-proposal-json-strings" "^7.16.7" + "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" + "@babel/plugin-proposal-numeric-separator" "^7.16.7" + "@babel/plugin-proposal-object-rest-spread" "^7.17.3" + "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" + "@babel/plugin-proposal-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-private-methods" "^7.16.11" + "@babel/plugin-proposal-private-property-in-object" "^7.16.7" + "@babel/plugin-proposal-unicode-property-regex" "^7.16.7" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.16.7" + "@babel/plugin-transform-async-to-generator" "^7.16.8" + "@babel/plugin-transform-block-scoped-functions" "^7.16.7" + "@babel/plugin-transform-block-scoping" "^7.16.7" + "@babel/plugin-transform-classes" "^7.16.7" + "@babel/plugin-transform-computed-properties" "^7.16.7" + "@babel/plugin-transform-destructuring" "^7.17.7" + "@babel/plugin-transform-dotall-regex" "^7.16.7" + "@babel/plugin-transform-duplicate-keys" "^7.16.7" + "@babel/plugin-transform-exponentiation-operator" "^7.16.7" + "@babel/plugin-transform-for-of" "^7.16.7" + "@babel/plugin-transform-function-name" "^7.16.7" + "@babel/plugin-transform-literals" "^7.16.7" + "@babel/plugin-transform-member-expression-literals" "^7.16.7" + "@babel/plugin-transform-modules-amd" "^7.16.7" + "@babel/plugin-transform-modules-commonjs" "^7.17.9" + "@babel/plugin-transform-modules-systemjs" "^7.17.8" + "@babel/plugin-transform-modules-umd" "^7.16.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.10" + "@babel/plugin-transform-new-target" "^7.16.7" + "@babel/plugin-transform-object-super" "^7.16.7" + "@babel/plugin-transform-parameters" "^7.16.7" + "@babel/plugin-transform-property-literals" "^7.16.7" + "@babel/plugin-transform-regenerator" "^7.17.9" + "@babel/plugin-transform-reserved-words" "^7.16.7" + "@babel/plugin-transform-shorthand-properties" "^7.16.7" + "@babel/plugin-transform-spread" "^7.16.7" + "@babel/plugin-transform-sticky-regex" "^7.16.7" + "@babel/plugin-transform-template-literals" "^7.16.7" + "@babel/plugin-transform-typeof-symbol" "^7.16.7" + "@babel/plugin-transform-unicode-escapes" "^7.16.7" + "@babel/plugin-transform-unicode-regex" "^7.16.7" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.17.10" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.5.0" + babel-plugin-polyfill-regenerator "^0.3.0" + core-js-compat "^3.22.1" + semver "^6.3.0" + "@babel/preset-env@^7.18.10": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.10.tgz#83b8dfe70d7eea1aae5a10635ab0a5fe60dfc0f4" @@ -1069,14 +1405,30 @@ dependencies: regenerator-runtime "^0.12.0" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.9", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" + integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a" integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.18.10", "@babel/template@^7.18.6", "@babel/template@^7.3.3": +"@babel/template@^7.16.7", "@babel/template@^7.18.6", "@babel/template@^7.3.3": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.6.tgz#1283f4993e00b929d6e2d3c72fdc9168a2977a31" + integrity sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.18.6" + "@babel/types" "^7.18.6" + +"@babel/template@^7.18.10": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== @@ -1085,7 +1437,23 @@ "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.13", "@babel/traverse@^7.18.6", "@babel/traverse@^7.18.9", "@babel/traverse@^7.7.2": +"@babel/traverse@^7.17.10", "@babel/traverse@^7.18.6", "@babel/traverse@^7.7.2": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.6.tgz#a228562d2f46e89258efa4ddd0416942e2fd671d" + integrity sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-function-name" "^7.18.6" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.18.6" + "@babel/types" "^7.18.6" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.13", "@babel/traverse@^7.18.9": version "7.18.13" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.13.tgz#5ab59ef51a997b3f10c4587d648b9696b6cb1a68" integrity sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA== @@ -1101,7 +1469,15 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.18.10", "@babel/types@^7.18.13", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.7", "@babel/types@^7.17.10", "@babel/types@^7.18.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.6.tgz#5d781dd10a3f0c9f1f931bd19de5eb26ec31acf0" + integrity sha512-NdBNzPDwed30fZdDQtVR7ZgaO4UKjuaQFH9VArS+HMnurlOY0JWN+4ROlu/iapMFwjRQU4pOG4StZfDmulEwGA== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + to-fast-properties "^2.0.0" + +"@babel/types@^7.18.10", "@babel/types@^7.18.13", "@babel/types@^7.18.9": version "7.18.13" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.13.tgz#30aeb9e514f4100f7c1cb6e5ba472b30e48f519a" integrity sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ== @@ -1610,6 +1986,43 @@ resolved "https://registry.yarnpkg.com/@rails/ujs/-/ujs-6.1.6.tgz#de486ae0a663e1bed637a012cbb2739bfcfa2031" integrity sha512-2M4zlthYmOC6X/tcPcFd//sIL26a7JbCpGNl8uIrQf+pR1Z47uhYt9cOwVqJTJZPurdy2k+YY3Pn64pqruAPEA== +"@rollup/plugin-babel@^5.2.0": + version "5.3.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" + integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@rollup/pluginutils" "^3.1.0" + +"@rollup/plugin-node-resolve@^11.2.1": + version "11.2.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" + integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + builtin-modules "^3.1.0" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.19.0" + +"@rollup/plugin-replace@^2.4.1": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a" + integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== + dependencies: + "@rollup/pluginutils" "^3.1.0" + magic-string "^0.25.7" + +"@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + "@sinclair/typebox@^0.24.1": version "0.24.20" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.20.tgz#11a657875de6008622d53f56e063a6347c51a6dd" @@ -1629,6 +2042,16 @@ dependencies: "@sinonjs/commons" "^1.7.0" +"@surma/rollup-plugin-off-main-thread@^2.2.3": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz#ee34985952ca21558ab0d952f00298ad2190c053" + integrity sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ== + dependencies: + ejs "^3.1.6" + json5 "^2.2.0" + magic-string "^0.25.0" + string.prototype.matchall "^4.0.6" + "@testing-library/dom@^8.0.0": version "8.1.0" resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.1.0.tgz#f8358b1883844ea569ba76b7e94582168df5370d" @@ -1715,6 +2138,11 @@ resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + "@types/events@*": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" @@ -1885,6 +2313,13 @@ "@types/scheduler" "*" csstype "^3.0.2" +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== + dependencies: + "@types/node" "*" + "@types/scheduler@*": version "0.16.1" resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.1.tgz#18845205e86ff0038517aab7a18a62a6b9f71275" @@ -1912,6 +2347,11 @@ resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.2.tgz#6286b4c7228d58ab7866d19716f3696e03a09397" integrity sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw== +"@types/trusted-types@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.2.tgz#fc25ad9943bcac11cceb8168db4f275e0e72e756" + integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg== + "@types/yargs-parser@*": version "15.0.0" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" @@ -2189,6 +2629,16 @@ ajv@^8.0.1: require-from-string "^2.0.2" uri-js "^4.2.2" +ajv@^8.6.0: + version "8.11.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" + integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + alphanum-sort@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" @@ -2457,11 +2907,21 @@ async@^2.6.2: dependencies: lodash "^4.17.14" +async@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9" + integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g== + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" @@ -2578,6 +3038,15 @@ babel-plugin-macros@^3.0.1: cosmiconfig "^7.0.0" resolve "^1.19.0" +babel-plugin-polyfill-corejs2@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" + integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== + dependencies: + "@babel/compat-data" "^7.13.11" + "@babel/helper-define-polyfill-provider" "^0.3.1" + semver "^6.1.1" + babel-plugin-polyfill-corejs2@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz#e4c31d4c89b56f3cf85b92558954c66b54bd972d" @@ -2587,6 +3056,14 @@ babel-plugin-polyfill-corejs2@^0.3.2: "@babel/helper-define-polyfill-provider" "^0.3.2" semver "^6.1.1" +babel-plugin-polyfill-corejs3@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" + integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.1" + core-js-compat "^3.21.0" + babel-plugin-polyfill-corejs3@^0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz#d7e09c9a899079d71a8b670c6181af56ec19c5c7" @@ -2595,6 +3072,13 @@ babel-plugin-polyfill-corejs3@^0.5.3: "@babel/helper-define-polyfill-provider" "^0.3.2" core-js-compat "^3.21.0" +babel-plugin-polyfill-regenerator@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" + integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.1" + babel-plugin-polyfill-regenerator@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz#8f51809b6d5883e07e71548d75966ff7635527fe" @@ -2689,11 +3173,6 @@ batch@0.6.1: resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= -big.js@^3.1.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" - integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== - big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -2967,6 +3446,11 @@ bufferutil@^4.0.6: dependencies: node-gyp-build "^4.3.0" +builtin-modules@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== + builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" @@ -3153,6 +3637,14 @@ chalk@^4.0, chalk@^4.0.0, chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + char-regex@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" @@ -3388,6 +3880,11 @@ commander@^7.2.0: resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== +common-tags@^1.8.0: + version "1.8.2" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" + integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -3640,6 +4137,11 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== + css-color-names@0.0.4, css-color-names@^0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" @@ -3947,11 +4449,6 @@ deep-equal@^1.0.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" -deep-extend@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.5.1.tgz#b894a9dd90d3023fbf1c55a394fb858eb2066f1f" - integrity sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w== - deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -4223,10 +4720,12 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -ejs@^2.3.4: - version "2.7.4" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" - integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== +ejs@^3.1.6: + version "3.1.8" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" + integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== + dependencies: + jake "^10.8.5" electron-to-chromium@^1.3.723: version "1.3.736" @@ -4285,11 +4784,6 @@ emoji-regex@^9.2.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" @@ -4687,6 +5181,11 @@ estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -4880,7 +5379,7 @@ fast-glob@^3.2.11, fast-glob@^3.2.9: merge2 "^1.3.0" micromatch "^4.0.4" -fast-json-stable-stringify@^2.0.0: +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== @@ -4946,6 +5445,13 @@ file-uri-to-path@1.0.0: resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== +filelist@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -5110,6 +5616,16 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" +fs-extra@^9.0.1: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-minipass@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" @@ -5140,7 +5656,7 @@ fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" -fsevents@^2.3.2, fsevents@~2.3.1: +fsevents@^2.3.2, fsevents@~2.3.1, fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -5213,6 +5729,11 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: has "^1.0.3" has-symbols "^1.0.1" +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -5258,7 +5779,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" -glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: +glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== @@ -5716,6 +6237,11 @@ idb-keyval@^3.2.0: resolved "https://registry.yarnpkg.com/idb-keyval/-/idb-keyval-3.2.0.tgz#cbbf354deb5684b6cdc84376294fc05932845bd6" integrity sha512-slx8Q6oywCCSfKgPgL0sEsXtPVnSbTLWpyiDcu6msHOyKOLari1TD1qocXVCft80umnkk3/Qqh3lwoFt8T/BPQ== +idb@^6.1.4: + version "6.1.5" + resolved "https://registry.yarnpkg.com/idb/-/idb-6.1.5.tgz#dbc53e7adf1ac7c59f9b2bf56e00b4ea4fce8c7b" + integrity sha512-IJtugpKkiVXQn5Y+LteyBCNk1N8xpGV3wWZk9EVtZWH8DYkjBn0bX1XnGP9RkyZF0sAcywa6unHqSWKe7q4LGw== + ieee754@^1.1.4: version "1.1.13" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" @@ -6142,6 +6668,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= + is-nan@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" @@ -6172,6 +6703,11 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + is-obj@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" @@ -6233,6 +6769,11 @@ is-regex@^1.1.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + is-resolvable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" @@ -6372,6 +6913,16 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" +jake@^10.8.5: + version "10.8.5" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" + integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.1" + minimatch "^3.0.4" + jest-changed-files@^28.1.3: version "28.1.3" resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-28.1.3.tgz#d9aeee6792be3686c47cb988a8eaf82ff4238831" @@ -6740,6 +7291,15 @@ jest-watcher@^28.1.3: jest-util "^28.1.3" string-length "^4.0.1" +jest-worker@^26.2.1: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" + jest-worker@^26.5.0: version "26.5.0" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.5.0.tgz#87deee86dbbc5f98d9919e0dadf2c40e3152fa30" @@ -6889,6 +7449,11 @@ json-schema-traverse@^1.0.0: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== +json-schema@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" @@ -6906,11 +7471,6 @@ json3@^3.3.3: resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== -json5@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" @@ -6918,7 +7478,7 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.1.2, json5@^2.2.1: +json5@^2.1.2, json5@^2.2.0, json5@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== @@ -6930,12 +7490,34 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.2: +jsonpointer@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.0.tgz#f802669a524ec4805fa7389eadbc9921d5dc8072" + integrity sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg== + +"jsx-ast-utils@^2.4.1 || ^3.0.0": + version "3.2.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b" + integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA== + dependencies: + array-includes "^3.1.3" + object.assign "^4.1.2" + +jsx-ast-utils@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.2.tgz#afe5efe4332cd3515c065072bd4d6b0aa22152bd" integrity sha512-4ZCADZHRkno244xlNnn4AOG6sRQ7iBZ5BbgZ4vW4y5IZw7cVUD1PPeblm1xx/nfmMxPdt/LHsXZW8z/j58+l9Q== @@ -7021,16 +7603,6 @@ loader-runner@^2.4.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@0.2.x: - version "0.2.17" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - object-assign "^4.0.1" - loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" @@ -7124,6 +7696,11 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + lodash.truncate@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" @@ -7170,6 +7747,13 @@ lz-string@^1.4.4: resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= +magic-string@^0.25.0, magic-string@^0.25.7: + version "0.25.9" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== + dependencies: + sourcemap-codec "^1.4.8" + make-dir@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" @@ -7427,7 +8011,7 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.1.2: +minimatch@^3.0.4, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -7897,17 +8481,6 @@ obuf@^1.0.0, obuf@^1.1.2: resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== -offline-plugin@^5.0.7: - version "5.0.7" - resolved "https://registry.yarnpkg.com/offline-plugin/-/offline-plugin-5.0.7.tgz#26936ad1a7699f4d67e0a095a258972a4ccf1788" - integrity sha512-ArMFt4QFjK0wg8B5+R/6tt65u6Dk+Pkx4PAcW5O7mgIF3ywMepaQqFOQgfZD4ybanuGwuJihxUwMRgkzd+YGYw== - dependencies: - deep-extend "^0.5.1" - ejs "^2.3.4" - loader-utils "0.2.x" - minimatch "^3.0.3" - slash "^1.0.0" - on-finished@2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" @@ -8331,16 +8904,16 @@ picomatch@^2.0.4, picomatch@^2.2.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== +picomatch@^2.2.2, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + picomatch@^2.2.3: version "2.3.0" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== -picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -8809,6 +9382,11 @@ prettier@^2.7.1: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== +pretty-bytes@^5.3.0, pretty-bytes@^5.4.1: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== + pretty-format@^25.2.1, pretty-format@^25.5.0: version "25.5.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" @@ -9693,6 +10271,23 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" +rollup-plugin-terser@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" + integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== + dependencies: + "@babel/code-frame" "^7.10.4" + jest-worker "^26.2.1" + serialize-javascript "^4.0.0" + terser "^5.0.0" + +rollup@^2.43.1: + version "2.72.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.72.1.tgz#861c94790537b10008f0ca0fbc60e631aabdd045" + integrity sha512-NTc5UGy/NWFGpSqF1lFY8z9Adri6uhyMLI6LvPAXdBKoPRFhIIiBUpt+Qg2awixqO3xvzSijjhnb4+QEZwJmxA== + optionalDependencies: + fsevents "~2.3.2" + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -9869,6 +10464,13 @@ serialize-javascript@^2.1.2: resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + serialize-javascript@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" @@ -10013,11 +10615,6 @@ sisteransi@^1.0.4: resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= - slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -10112,7 +10709,7 @@ source-map-support@0.5.13: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@~0.5.12, source-map-support@~0.5.19: +source-map-support@~0.5.12, source-map-support@~0.5.19, source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -10140,11 +10737,23 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +source-map@^0.8.0-beta.0, source-map@~0.8.0-beta.0: + version "0.8.0-beta.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" + integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== + dependencies: + whatwg-url "^7.0.0" + source-map@~0.7.2: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + spdx-correct@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" @@ -10344,7 +10953,7 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string.prototype.matchall@^4.0.7: +string.prototype.matchall@^4.0.6, string.prototype.matchall@^4.0.7: version "4.0.7" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== @@ -10390,6 +10999,15 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +stringify-object@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + stringz@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/stringz/-/stringz-2.1.0.tgz#5896b4713eac31157556040fb90258fb02c1630c" @@ -10678,6 +11296,21 @@ tcomb@^2.5.0: resolved "https://registry.yarnpkg.com/tcomb/-/tcomb-2.7.0.tgz#10d62958041669a5d53567b9a4ee8cde22b1c2b0" integrity sha1-ENYpWAQWaaXVNWe5pO6M3iKxwrA= +temp-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== + +tempy@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.6.0.tgz#65e2c35abc06f1124a97f387b08303442bde59f3" + integrity sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw== + dependencies: + is-stream "^2.0.0" + temp-dir "^2.0.0" + type-fest "^0.16.0" + unique-string "^2.0.0" + terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" @@ -10725,6 +11358,16 @@ terser@^4.1.2: source-map "~0.6.1" source-map-support "~0.5.12" +terser@^5.0.0: + version "5.13.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.13.1.tgz#66332cdc5a01b04a224c9fad449fc1a18eaa1799" + integrity sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA== + dependencies: + acorn "^8.5.0" + commander "^2.20.0" + source-map "~0.8.0-beta.0" + source-map-support "~0.5.20" + terser@^5.3.4: version "5.3.4" resolved "https://registry.yarnpkg.com/terser/-/terser-5.3.4.tgz#e510e05f86e0bd87f01835c3238839193f77a60c" @@ -10883,6 +11526,13 @@ tough-cookie@^4.0.0: punycode "^2.1.1" universalify "^0.1.2" +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + dependencies: + punycode "^2.1.0" + tr46@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" @@ -10959,6 +11609,11 @@ type-fest@^0.11.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== +type-fest@^0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" + integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== + type-fest@^0.18.0: version "0.18.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" @@ -11069,11 +11724,23 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== + dependencies: + crypto-random-string "^2.0.0" + universalify@^0.1.0, universalify@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -11092,7 +11759,7 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -upath@^1.1.1: +upath@^1.1.1, upath@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== @@ -11318,6 +11985,11 @@ webidl-conversions@^3.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + webidl-conversions@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" @@ -11532,6 +12204,15 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" @@ -11584,6 +12265,175 @@ word-wrap@^1.2.3, word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +workbox-background-sync@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.5.3.tgz#7c66c1836aeca6f3762dc48d17a1852a33b3168c" + integrity sha512-0DD/V05FAcek6tWv9XYj2w5T/plxhDSpclIcAGjA/b7t/6PdaRkQ7ZgtAX6Q/L7kV7wZ8uYRJUoH11VjNipMZw== + dependencies: + idb "^6.1.4" + workbox-core "6.5.3" + +workbox-broadcast-update@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.5.3.tgz#fc2ad79cf507e22950cda9baf1e9a0ccc43f31bc" + integrity sha512-4AwCIA5DiDrYhlN+Miv/fp5T3/whNmSL+KqhTwRBTZIL6pvTgE4lVuRzAt1JltmqyMcQ3SEfCdfxczuI4kwFQg== + dependencies: + workbox-core "6.5.3" + +workbox-build@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.5.3.tgz#38e3f286d63d2745bff4d1478bb3a6ab5c8b1170" + integrity sha512-8JNHHS7u13nhwIYCDea9MNXBNPHXCs5KDZPKI/ZNTr3f4sMGoD7hgFGecbyjX1gw4z6e9bMpMsOEJNyH5htA/w== + dependencies: + "@apideck/better-ajv-errors" "^0.3.1" + "@babel/core" "^7.11.1" + "@babel/preset-env" "^7.11.0" + "@babel/runtime" "^7.11.2" + "@rollup/plugin-babel" "^5.2.0" + "@rollup/plugin-node-resolve" "^11.2.1" + "@rollup/plugin-replace" "^2.4.1" + "@surma/rollup-plugin-off-main-thread" "^2.2.3" + ajv "^8.6.0" + common-tags "^1.8.0" + fast-json-stable-stringify "^2.1.0" + fs-extra "^9.0.1" + glob "^7.1.6" + lodash "^4.17.20" + pretty-bytes "^5.3.0" + rollup "^2.43.1" + rollup-plugin-terser "^7.0.0" + source-map "^0.8.0-beta.0" + stringify-object "^3.3.0" + strip-comments "^2.0.1" + tempy "^0.6.0" + upath "^1.2.0" + workbox-background-sync "6.5.3" + workbox-broadcast-update "6.5.3" + workbox-cacheable-response "6.5.3" + workbox-core "6.5.3" + workbox-expiration "6.5.3" + workbox-google-analytics "6.5.3" + workbox-navigation-preload "6.5.3" + workbox-precaching "6.5.3" + workbox-range-requests "6.5.3" + workbox-recipes "6.5.3" + workbox-routing "6.5.3" + workbox-strategies "6.5.3" + workbox-streams "6.5.3" + workbox-sw "6.5.3" + workbox-window "6.5.3" + +workbox-cacheable-response@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.5.3.tgz#b1f8c2bc599a7be8f7e3c262535629c558738e47" + integrity sha512-6JE/Zm05hNasHzzAGKDkqqgYtZZL2H06ic2GxuRLStA4S/rHUfm2mnLFFXuHAaGR1XuuYyVCEey1M6H3PdZ7SQ== + dependencies: + workbox-core "6.5.3" + +workbox-core@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.5.3.tgz#bca038a9ef0d7a634a6db2a60f45313ed22ac249" + integrity sha512-Bb9ey5n/M9x+l3fBTlLpHt9ASTzgSGj6vxni7pY72ilB/Pb3XtN+cZ9yueboVhD5+9cNQrC9n/E1fSrqWsUz7Q== + +workbox-expiration@6.5.3, workbox-expiration@^6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.5.3.tgz#efc0811f371a2ede1052b9de1c4f072b71d50503" + integrity sha512-jzYopYR1zD04ZMdlbn/R2Ik6ixiXbi15c9iX5H8CTi6RPDz7uhvMLZPKEndZTpfgmUk8mdmT9Vx/AhbuCl5Sqw== + dependencies: + idb "^6.1.4" + workbox-core "6.5.3" + +workbox-google-analytics@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.5.3.tgz#cc8c3a61f449131660a4ed2f5362d9a3599b18fe" + integrity sha512-3GLCHotz5umoRSb4aNQeTbILETcrTVEozSfLhHSBaegHs1PnqCmN0zbIy2TjTpph2AGXiNwDrWGF0AN+UgDNTw== + dependencies: + workbox-background-sync "6.5.3" + workbox-core "6.5.3" + workbox-routing "6.5.3" + workbox-strategies "6.5.3" + +workbox-navigation-preload@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.5.3.tgz#81b74f598b11aa07e2cf1c21af7a826a4f0f70b3" + integrity sha512-bK1gDFTc5iu6lH3UQ07QVo+0ovErhRNGvJJO/1ngknT0UQ702nmOUhoN9qE5mhuQSrnK+cqu7O7xeaJ+Rd9Tmg== + dependencies: + workbox-core "6.5.3" + +workbox-precaching@6.5.3, workbox-precaching@^6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.5.3.tgz#c870312b2ef901d790ab9e48da084e776c62af47" + integrity sha512-sjNfgNLSsRX5zcc63H/ar/hCf+T19fRtTqvWh795gdpghWb5xsfEkecXEvZ8biEi1QD7X/ljtHphdaPvXDygMQ== + dependencies: + workbox-core "6.5.3" + workbox-routing "6.5.3" + workbox-strategies "6.5.3" + +workbox-range-requests@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.5.3.tgz#e624ac82ff266a5e4f236d055797def07949d941" + integrity sha512-pGCP80Bpn/0Q0MQsfETSfmtXsQcu3M2QCJwSFuJ6cDp8s2XmbUXkzbuQhCUzKR86ZH2Vex/VUjb2UaZBGamijA== + dependencies: + workbox-core "6.5.3" + +workbox-recipes@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-6.5.3.tgz#15beac9d8ae7a3a1c100218094a824b4dd3fd59a" + integrity sha512-IcgiKYmbGiDvvf3PMSEtmwqxwfQ5zwI7OZPio3GWu4PfehA8jI8JHI3KZj+PCfRiUPZhjQHJ3v1HbNs+SiSkig== + dependencies: + workbox-cacheable-response "6.5.3" + workbox-core "6.5.3" + workbox-expiration "6.5.3" + workbox-precaching "6.5.3" + workbox-routing "6.5.3" + workbox-strategies "6.5.3" + +workbox-routing@6.5.3, workbox-routing@^6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.5.3.tgz#a0a699d8cc90b5692bd3df24679acbbda3913777" + integrity sha512-DFjxcuRAJjjt4T34RbMm3MCn+xnd36UT/2RfPRfa8VWJGItGJIn7tG+GwVTdHmvE54i/QmVTJepyAGWtoLPTmg== + dependencies: + workbox-core "6.5.3" + +workbox-strategies@6.5.3, workbox-strategies@^6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.5.3.tgz#4bea9a48fee16cf43766e0d8138296773c8a9783" + integrity sha512-MgmGRrDVXs7rtSCcetZgkSZyMpRGw8HqL2aguszOc3nUmzGZsT238z/NN9ZouCxSzDu3PQ3ZSKmovAacaIhu1w== + dependencies: + workbox-core "6.5.3" + +workbox-streams@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.5.3.tgz#b6860290031caa7d0e46ad7142315c94359c780b" + integrity sha512-vN4Qi8o+b7zj1FDVNZ+PlmAcy1sBoV7SC956uhqYvZ9Sg1fViSbOpydULOssVJ4tOyKRifH/eoi6h99d+sJ33w== + dependencies: + workbox-core "6.5.3" + workbox-routing "6.5.3" + +workbox-sw@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.5.3.tgz#cd2f0c086f4496acd25774ed02c48504189bebdd" + integrity sha512-BQBzm092w+NqdIEF2yhl32dERt9j9MDGUTa2Eaa+o3YKL4Qqw55W9yQC6f44FdAHdAJrJvp0t+HVrfh8AiGj8A== + +workbox-webpack-plugin@^6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.3.tgz#c37bb323be4952311565c07db51054fe59c87d73" + integrity sha512-Es8Xr02Gi6Kc3zaUwR691ZLy61hz3vhhs5GztcklQ7kl5k2qAusPh0s6LF3wEtlpfs9ZDErnmy5SErwoll7jBA== + dependencies: + fast-json-stable-stringify "^2.1.0" + pretty-bytes "^5.4.1" + upath "^1.2.0" + webpack-sources "^1.4.3" + workbox-build "6.5.3" + +workbox-window@6.5.3, workbox-window@^6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.5.3.tgz#4ade70056cb73477ef1cd8fea7cfd0ecbd825c7f" + integrity sha512-GnJbx1kcKXDtoJBVZs/P7ddP0Yt52NNy4nocjBpYPiRhMqTpJCNrSL+fGHZ/i/oP6p/vhE8II0sA6AZGKGnssw== + dependencies: + "@types/trusted-types" "^2.0.2" + workbox-core "6.5.3" + worker-farm@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" From 99aed9069d4319d53779c483142e6649f3fef17b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Aug 2022 20:10:43 +0200 Subject: [PATCH 341/652] Bump puma from 5.6.4 to 5.6.5 (#19042) Bumps [puma](https://github.com/puma/puma) from 5.6.4 to 5.6.5. - [Release notes](https://github.com/puma/puma/releases) - [Changelog](https://github.com/puma/puma/blob/master/History.md) - [Commits](https://github.com/puma/puma/compare/v5.6.4...v5.6.5) --- updated-dependencies: - dependency-name: puma dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 8306efec2..076cc2a0d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -479,7 +479,7 @@ GEM pry-rails (0.3.9) pry (>= 0.10.4) public_suffix (4.0.7) - puma (5.6.4) + puma (5.6.5) nio4r (~> 2.0) pundit (2.2.0) activesupport (>= 3.0.0) From 0396acf39ea902688374fac65fa7ef5dc4c05512 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 25 Aug 2022 20:39:40 +0200 Subject: [PATCH 342/652] Add audit log entries for user roles (#19040) * Refactor audit log schema * Add audit log entries for user roles --- app/controllers/admin/roles_controller.rb | 3 + .../admin/users/roles_controller.rb | 1 + .../concerns/accountable_concern.rb | 8 ++- app/helpers/admin/action_logs_helper.rb | 61 +++++-------------- app/models/account.rb | 4 ++ app/models/account_warning.rb | 4 ++ app/models/admin/action_log.rb | 36 ++++++----- app/models/admin/action_log_filter.rb | 4 ++ app/models/announcement.rb | 4 ++ app/models/appeal.rb | 8 +++ app/models/custom_emoji.rb | 6 +- app/models/domain_allow.rb | 4 ++ app/models/domain_block.rb | 4 ++ app/models/email_domain_block.rb | 4 ++ app/models/form/account_batch.rb | 2 +- app/models/instance.rb | 2 + app/models/ip_block.rb | 4 ++ app/models/report.rb | 6 ++ app/models/status.rb | 8 +++ app/models/unavailable_domain.rb | 4 ++ app/models/user.rb | 8 +++ app/models/user_role.rb | 4 ++ config/locales/en.yml | 11 +++- ...d_human_identifier_to_admin_action_logs.rb | 7 +++ ...recorded_changes_from_admin_action_logs.rb | 9 +++ db/schema.rb | 6 +- spec/helpers/admin/action_log_helper_spec.rb | 28 --------- 27 files changed, 151 insertions(+), 99 deletions(-) create mode 100644 db/migrate/20220824164433_add_human_identifier_to_admin_action_logs.rb create mode 100644 db/post_migrate/20220824164532_remove_recorded_changes_from_admin_action_logs.rb diff --git a/app/controllers/admin/roles_controller.rb b/app/controllers/admin/roles_controller.rb index 3e502ccc4..d76aa745b 100644 --- a/app/controllers/admin/roles_controller.rb +++ b/app/controllers/admin/roles_controller.rb @@ -23,6 +23,7 @@ module Admin @role.current_account = current_account if @role.save + log_action :create, @role redirect_to admin_roles_path else render :new @@ -39,6 +40,7 @@ module Admin @role.current_account = current_account if @role.update(resource_params) + log_action :update, @role redirect_to admin_roles_path else render :edit @@ -48,6 +50,7 @@ module Admin def destroy authorize @role, :destroy? @role.destroy! + log_action :destroy, @role redirect_to admin_roles_path end diff --git a/app/controllers/admin/users/roles_controller.rb b/app/controllers/admin/users/roles_controller.rb index 0db50cee9..f5dfc643d 100644 --- a/app/controllers/admin/users/roles_controller.rb +++ b/app/controllers/admin/users/roles_controller.rb @@ -14,6 +14,7 @@ module Admin @user.current_account = current_account if @user.update(resource_params) + log_action :change_role, @user redirect_to admin_account_path(@user.account_id), notice: I18n.t('admin.accounts.change_role.changed_msg') else render :show diff --git a/app/controllers/concerns/accountable_concern.rb b/app/controllers/concerns/accountable_concern.rb index 87d62478d..c1349915f 100644 --- a/app/controllers/concerns/accountable_concern.rb +++ b/app/controllers/concerns/accountable_concern.rb @@ -3,7 +3,11 @@ module AccountableConcern extend ActiveSupport::Concern - def log_action(action, target, options = {}) - Admin::ActionLog.create(account: current_account, action: action, target: target, recorded_changes: options.stringify_keys) + def log_action(action, target) + Admin::ActionLog.create( + account: current_account, + action: action, + target: target + ) end end diff --git a/app/helpers/admin/action_logs_helper.rb b/app/helpers/admin/action_logs_helper.rb index 47eeeaac3..3e9fe17f4 100644 --- a/app/helpers/admin/action_logs_helper.rb +++ b/app/helpers/admin/action_logs_helper.rb @@ -2,64 +2,31 @@ module Admin::ActionLogsHelper def log_target(log) - if log.target - linkable_log_target(log.target) - else - log_target_from_history(log.target_type, log.recorded_changes) - end - end - - private - - def linkable_log_target(record) - case record.class.name + case log.target_type when 'Account' - link_to record.acct, admin_account_path(record.id) + link_to log.human_identifier, admin_account_path(log.target_id) when 'User' - link_to record.account.acct, admin_account_path(record.account_id) + link_to log.human_identifier, admin_account_path(log.route_param) + when 'UserRole' + link_to log.human_identifier, admin_roles_path(log.target_id) when 'CustomEmoji' - record.shortcode + log.human_identifier when 'Report' - link_to "##{record.id}", admin_report_path(record) + link_to "##{log.human_identifier}", admin_report_path(log.target_id) when 'DomainBlock', 'DomainAllow', 'EmailDomainBlock', 'UnavailableDomain' - link_to record.domain, "https://#{record.domain}" + link_to log.human_identifier, "https://#{log.human_identifier}" when 'Status' - link_to record.account.acct, ActivityPub::TagManager.instance.url_for(record) + link_to log.human_identifier, log.permalink when 'AccountWarning' - link_to record.target_account.acct, admin_account_path(record.target_account_id) + link_to log.human_identifier, admin_account_path(log.target_id) when 'Announcement' - link_to truncate(record.text), edit_admin_announcement_path(record.id) + link_to truncate(log.human_identifier), edit_admin_announcement_path(log.target_id) when 'IpBlock' - "#{record.ip}/#{record.ip.prefix} (#{I18n.t("simple_form.labels.ip_block.severities.#{record.severity}")})" + log.human_identifier when 'Instance' - record.domain + log.human_identifier when 'Appeal' - link_to record.account.acct, disputes_strike_path(record.strike) - end - end - - def log_target_from_history(type, attributes) - case type - when 'User' - attributes['username'] - when 'CustomEmoji' - attributes['shortcode'] - when 'DomainBlock', 'DomainAllow', 'EmailDomainBlock', 'UnavailableDomain' - link_to attributes['domain'], "https://#{attributes['domain']}" - when 'Status' - tmp_status = Status.new(attributes.except('reblogs_count', 'favourites_count')) - - if tmp_status.account - link_to tmp_status.account&.acct || "##{tmp_status.account_id}", admin_account_path(tmp_status.account_id) - else - I18n.t('admin.action_logs.deleted_status') - end - when 'Announcement' - truncate(attributes['text'].is_a?(Array) ? attributes['text'].last : attributes['text']) - when 'IpBlock' - "#{attributes['ip']}/#{attributes['ip'].prefix} (#{I18n.t("simple_form.labels.ip_block.severities.#{attributes['severity']}")})" - when 'Instance' - attributes['domain'] + link_to log.human_identifier, disputes_strike_path(log.route_param) end end end diff --git a/app/models/account.rb b/app/models/account.rb index 628692d22..d25afeb89 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -362,6 +362,10 @@ class Account < ApplicationRecord username end + def to_log_human_identifier + acct + end + def excluded_from_timeline_account_ids Rails.cache.fetch("exclude_account_ids_for:#{id}") { block_relationships.pluck(:target_account_id) + blocked_by_relationships.pluck(:account_id) + mute_relationships.pluck(:target_account_id) } end diff --git a/app/models/account_warning.rb b/app/models/account_warning.rb index 6067b54b7..961a078b9 100644 --- a/app/models/account_warning.rb +++ b/app/models/account_warning.rb @@ -43,4 +43,8 @@ class AccountWarning < ApplicationRecord def overruled? overruled_at.present? end + + def to_log_human_identifier + target_account.acct + end end diff --git a/app/models/admin/action_log.rb b/app/models/admin/action_log.rb index 401bfd9ac..4fa8008f5 100644 --- a/app/models/admin/action_log.rb +++ b/app/models/admin/action_log.rb @@ -9,38 +9,42 @@ # action :string default(""), not null # target_type :string # target_id :bigint(8) -# recorded_changes :text default(""), not null # created_at :datetime not null # updated_at :datetime not null +# human_identifier :string +# route_param :string +# permalink :string # class Admin::ActionLog < ApplicationRecord - serialize :recorded_changes + self.ignored_columns = %w( + recorded_changes + ) belongs_to :account belongs_to :target, polymorphic: true, optional: true default_scope -> { order('id desc') } + before_validation :set_human_identifier + before_validation :set_route_param + before_validation :set_permalink + def action super.to_sym end - before_validation :set_changes - private - def set_changes - case action - when :destroy, :create - self.recorded_changes = target.attributes - when :update, :promote, :demote - self.recorded_changes = target.previous_changes - when :change_email - self.recorded_changes = ActiveSupport::HashWithIndifferentAccess.new( - email: [target.email, nil], - unconfirmed_email: [nil, target.unconfirmed_email] - ) - end + def set_human_identifier + self.human_identifier = target.to_log_human_identifier if target.respond_to?(:to_log_human_identifier) + end + + def set_route_param + self.route_param = target.to_log_route_param if target.respond_to?(:to_log_route_param) + end + + def set_permalink + self.permalink = target.to_log_permalink if target.respond_to?(:to_log_permalink) end end diff --git a/app/models/admin/action_log_filter.rb b/app/models/admin/action_log_filter.rb index 0f2f712a2..6382cd782 100644 --- a/app/models/admin/action_log_filter.rb +++ b/app/models/admin/action_log_filter.rb @@ -12,6 +12,7 @@ class Admin::ActionLogFilter reject_appeal: { target_type: 'Appeal', action: 'reject' }.freeze, assigned_to_self_report: { target_type: 'Report', action: 'assigned_to_self' }.freeze, change_email_user: { target_type: 'User', action: 'change_email' }.freeze, + change_role_user: { target_type: 'User', action: 'change_role' }.freeze, confirm_user: { target_type: 'User', action: 'confirm' }.freeze, approve_user: { target_type: 'User', action: 'approve' }.freeze, reject_user: { target_type: 'User', action: 'reject' }.freeze, @@ -22,6 +23,7 @@ class Admin::ActionLogFilter create_domain_block: { target_type: 'DomainBlock', action: 'create' }.freeze, create_email_domain_block: { target_type: 'EmailDomainBlock', action: 'create' }.freeze, create_unavailable_domain: { target_type: 'UnavailableDomain', action: 'create' }.freeze, + create_user_role: { target_type: 'UserRole', action: 'create' }.freeze, demote_user: { target_type: 'User', action: 'demote' }.freeze, destroy_announcement: { target_type: 'Announcement', action: 'destroy' }.freeze, destroy_custom_emoji: { target_type: 'CustomEmoji', action: 'destroy' }.freeze, @@ -31,6 +33,7 @@ class Admin::ActionLogFilter destroy_instance: { target_type: 'Instance', action: 'destroy' }.freeze, destroy_unavailable_domain: { target_type: 'UnavailableDomain', action: 'destroy' }.freeze, destroy_status: { target_type: 'Status', action: 'destroy' }.freeze, + destroy_user_role: { target_type: 'UserRole', action: 'destroy' }.freeze, disable_2fa_user: { target_type: 'User', action: 'disable' }.freeze, disable_custom_emoji: { target_type: 'CustomEmoji', action: 'disable' }.freeze, disable_user: { target_type: 'User', action: 'disable' }.freeze, @@ -52,6 +55,7 @@ class Admin::ActionLogFilter update_announcement: { target_type: 'Announcement', action: 'update' }.freeze, update_custom_emoji: { target_type: 'CustomEmoji', action: 'update' }.freeze, update_status: { target_type: 'Status', action: 'update' }.freeze, + update_user_role: { target_type: 'UserRole', action: 'update' }.freeze, unblock_email_account: { target_type: 'Account', action: 'unblock_email' }.freeze, }.freeze diff --git a/app/models/announcement.rb b/app/models/announcement.rb index f8183aabc..bedced9de 100644 --- a/app/models/announcement.rb +++ b/app/models/announcement.rb @@ -34,6 +34,10 @@ class Announcement < ApplicationRecord before_validation :set_all_day before_validation :set_published, on: :create + def to_log_human_identifier + text + end + def publish! update!(published: true, published_at: Time.now.utc, scheduled_at: nil) end diff --git a/app/models/appeal.rb b/app/models/appeal.rb index 1f32cfa8b..6fbf60b39 100644 --- a/app/models/appeal.rb +++ b/app/models/appeal.rb @@ -52,6 +52,14 @@ class Appeal < ApplicationRecord update!(rejected_at: Time.now.utc, rejected_by_account: current_account) end + def to_log_human_identifier + account.acct + end + + def to_log_route_param + account_warning_id + end + private def validate_time_frame diff --git a/app/models/custom_emoji.rb b/app/models/custom_emoji.rb index 289e3b66f..077ce559a 100644 --- a/app/models/custom_emoji.rb +++ b/app/models/custom_emoji.rb @@ -46,7 +46,7 @@ class CustomEmoji < ApplicationRecord scope :local, -> { where(domain: nil) } scope :remote, -> { where.not(domain: nil) } scope :alphabetic, -> { order(domain: :asc, shortcode: :asc) } - scope :by_domain_and_subdomains, ->(domain) { where(domain: domain).or(where(arel_table[:domain].matches('%.' + domain))) } + scope :by_domain_and_subdomains, ->(domain) { where(domain: domain).or(where(arel_table[:domain].matches("%.#{domain}"))) } scope :listed, -> { local.where(disabled: false).where(visible_in_picker: true) } remotable_attachment :image, LIMIT @@ -67,6 +67,10 @@ class CustomEmoji < ApplicationRecord copy.tap(&:save!) end + def to_log_human_identifier + shortcode + end + class << self def from_text(text, domain = nil) return [] if text.blank? diff --git a/app/models/domain_allow.rb b/app/models/domain_allow.rb index 6aa9267fe..65f494fed 100644 --- a/app/models/domain_allow.rb +++ b/app/models/domain_allow.rb @@ -19,6 +19,10 @@ class DomainAllow < ApplicationRecord scope :matches_domain, ->(value) { where(arel_table[:domain].matches("%#{value}%")) } + def to_log_human_identifier + domain + end + class << self def allowed?(domain) !rule_for(domain).nil? diff --git a/app/models/domain_block.rb b/app/models/domain_block.rb index a15206b5e..b08687787 100644 --- a/app/models/domain_block.rb +++ b/app/models/domain_block.rb @@ -31,6 +31,10 @@ class DomainBlock < ApplicationRecord scope :with_user_facing_limitations, -> { where(severity: [:silence, :suspend]).or(where(reject_media: true)) } scope :by_severity, -> { order(Arel.sql('(CASE severity WHEN 0 THEN 1 WHEN 1 THEN 2 WHEN 2 THEN 0 END), reject_media, domain')) } + def to_log_human_identifier + domain + end + def policies if suspend? [:suspend] diff --git a/app/models/email_domain_block.rb b/app/models/email_domain_block.rb index f9d74332b..661f6727d 100644 --- a/app/models/email_domain_block.rb +++ b/app/models/email_domain_block.rb @@ -26,6 +26,10 @@ class EmailDomainBlock < ApplicationRecord # Used for adding multiple blocks at once attr_accessor :other_domains + def to_log_human_identifier + domain + end + def history @history ||= Trends::History.new('email_domain_blocks', id) end diff --git a/app/models/form/account_batch.rb b/app/models/form/account_batch.rb index dcf155840..98f2cad3e 100644 --- a/app/models/form/account_batch.rb +++ b/app/models/form/account_batch.rb @@ -101,7 +101,7 @@ class Form::AccountBatch def reject_account(account) authorize(account.user, :reject?) - log_action(:reject, account.user, username: account.username) + log_action(:reject, account.user) account.suspend!(origin: :local) AccountDeletionWorker.perform_async(account.id, { 'reserve_username' => false }) end diff --git a/app/models/instance.rb b/app/models/instance.rb index 36110ee40..edbf02a6d 100644 --- a/app/models/instance.rb +++ b/app/models/instance.rb @@ -48,6 +48,8 @@ class Instance < ApplicationRecord domain end + alias to_log_human_identifier to_param + delegate :exhausted_deliveries_days, to: :delivery_failure_tracker def availability_over_days(num_days, end_date = Time.now.utc.to_date) diff --git a/app/models/ip_block.rb b/app/models/ip_block.rb index e1ab59806..f40c8a0b1 100644 --- a/app/models/ip_block.rb +++ b/app/models/ip_block.rb @@ -27,6 +27,10 @@ class IpBlock < ApplicationRecord after_commit :reset_cache + def to_log_human_identifier + "#{record.ip}/#{record.ip.prefix}" + end + class << self def blocked?(remote_ip) blocked_ips_map = Rails.cache.fetch(CACHE_KEY) { FastIpMap.new(IpBlock.where(severity: :no_access).pluck(:ip)) } diff --git a/app/models/report.rb b/app/models/report.rb index 2efb6d4a7..42c869dd4 100644 --- a/app/models/report.rb +++ b/app/models/report.rb @@ -115,6 +115,10 @@ class Report < ApplicationRecord Report.where.not(id: id).where(target_account_id: target_account_id).unresolved.exists? end + def to_log_human_identifier + id + end + def history subquery = [ Admin::ActionLog.where( @@ -136,6 +140,8 @@ class Report < ApplicationRecord Admin::ActionLog.from(Arel::Nodes::As.new(subquery, Admin::ActionLog.arel_table)) end + private + def set_uri self.uri = ActivityPub::TagManager.instance.generate_uri_for(self) if uri.nil? && account.local? end diff --git a/app/models/status.rb b/app/models/status.rb index 4828d6340..7eff990aa 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -166,6 +166,14 @@ class Status < ApplicationRecord ].compact.join("\n\n") end + def to_log_human_identifier + account.acct + end + + def to_log_permalink + ActivityPub::TagManager.instance.uri_for(self) + end + def reply? !in_reply_to_id.nil? || attributes['reply'] end diff --git a/app/models/unavailable_domain.rb b/app/models/unavailable_domain.rb index 5e8870bde..dfc0ef14e 100644 --- a/app/models/unavailable_domain.rb +++ b/app/models/unavailable_domain.rb @@ -16,6 +16,10 @@ class UnavailableDomain < ApplicationRecord after_commit :reset_cache! + def to_log_human_identifier + domain + end + private def reset_cache! diff --git a/app/models/user.rb b/app/models/user.rb index 9833300cd..18b9d5928 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -181,6 +181,14 @@ class User < ApplicationRecord update!(disabled: false) end + def to_log_human_identifier + account.acct + end + + def to_log_route_param + account_id + end + def confirm new_user = !confirmed? self.approved = true if open_registrations? && !sign_up_from_ip_requires_approval? diff --git a/app/models/user_role.rb b/app/models/user_role.rb index 57a56c0b0..74dfdc220 100644 --- a/app/models/user_role.rb +++ b/app/models/user_role.rb @@ -155,6 +155,10 @@ class UserRole < ApplicationRecord end end + def to_log_human_identifier + name + end + private def in_permissions?(privilege) diff --git a/config/locales/en.yml b/config/locales/en.yml index e495ef841..5c309ab11 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -235,6 +235,7 @@ en: approve_user: Approve User assigned_to_self_report: Assign Report change_email_user: Change E-mail for User + change_role_user: Change Role of User confirm_user: Confirm User create_account_warning: Create Warning create_announcement: Create Announcement @@ -244,6 +245,7 @@ en: create_email_domain_block: Create E-mail Domain Block create_ip_block: Create IP rule create_unavailable_domain: Create Unavailable Domain + create_user_role: Create Role demote_user: Demote User destroy_announcement: Delete Announcement destroy_custom_emoji: Delete Custom Emoji @@ -254,6 +256,7 @@ en: destroy_ip_block: Delete IP rule destroy_status: Delete Post destroy_unavailable_domain: Delete Unavailable Domain + destroy_user_role: Destroy Role disable_2fa_user: Disable 2FA disable_custom_emoji: Disable Custom Emoji disable_sign_in_token_auth_user: Disable E-mail Token Authentication for User @@ -281,11 +284,13 @@ en: update_custom_emoji: Update Custom Emoji update_domain_block: Update Domain Block update_status: Update Post + update_user_role: Update Role actions: approve_appeal_html: "%{name} approved moderation decision appeal from %{target}" approve_user_html: "%{name} approved sign-up from %{target}" assigned_to_self_report_html: "%{name} assigned report %{target} to themselves" change_email_user_html: "%{name} changed the e-mail address of user %{target}" + change_role_user_html: "%{name} changed role of %{target}" confirm_user_html: "%{name} confirmed e-mail address of user %{target}" create_account_warning_html: "%{name} sent a warning to %{target}" create_announcement_html: "%{name} created new announcement %{target}" @@ -295,9 +300,10 @@ en: create_email_domain_block_html: "%{name} blocked e-mail domain %{target}" create_ip_block_html: "%{name} created rule for IP %{target}" create_unavailable_domain_html: "%{name} stopped delivery to domain %{target}" + create_user_role_html: "%{name} created %{target} role" demote_user_html: "%{name} demoted user %{target}" destroy_announcement_html: "%{name} deleted announcement %{target}" - destroy_custom_emoji_html: "%{name} destroyed emoji %{target}" + destroy_custom_emoji_html: "%{name} deleted emoji %{target}" destroy_domain_allow_html: "%{name} disallowed federation with domain %{target}" destroy_domain_block_html: "%{name} unblocked domain %{target}" destroy_email_domain_block_html: "%{name} unblocked e-mail domain %{target}" @@ -305,6 +311,7 @@ en: destroy_ip_block_html: "%{name} deleted rule for IP %{target}" destroy_status_html: "%{name} removed post by %{target}" destroy_unavailable_domain_html: "%{name} resumed delivery to domain %{target}" + destroy_user_role_html: "%{name} deleted %{target} role" disable_2fa_user_html: "%{name} disabled two factor requirement for user %{target}" disable_custom_emoji_html: "%{name} disabled emoji %{target}" disable_sign_in_token_auth_user_html: "%{name} disabled e-mail token authentication for %{target}" @@ -332,7 +339,7 @@ en: update_custom_emoji_html: "%{name} updated emoji %{target}" update_domain_block_html: "%{name} updated domain block for %{target}" update_status_html: "%{name} updated post by %{target}" - deleted_status: "(deleted post)" + update_user_role_html: "%{name} changed %{target} role" empty: No logs found. filter_by_action: Filter by action filter_by_user: Filter by user diff --git a/db/migrate/20220824164433_add_human_identifier_to_admin_action_logs.rb b/db/migrate/20220824164433_add_human_identifier_to_admin_action_logs.rb new file mode 100644 index 000000000..2cb8cddf1 --- /dev/null +++ b/db/migrate/20220824164433_add_human_identifier_to_admin_action_logs.rb @@ -0,0 +1,7 @@ +class AddHumanIdentifierToAdminActionLogs < ActiveRecord::Migration[6.1] + def change + add_column :admin_action_logs, :human_identifier, :string + add_column :admin_action_logs, :route_param, :string + add_column :admin_action_logs, :permalink, :string + end +end diff --git a/db/post_migrate/20220824164532_remove_recorded_changes_from_admin_action_logs.rb b/db/post_migrate/20220824164532_remove_recorded_changes_from_admin_action_logs.rb new file mode 100644 index 000000000..c42d5df8f --- /dev/null +++ b/db/post_migrate/20220824164532_remove_recorded_changes_from_admin_action_logs.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class RemoveRecordedChangesFromAdminActionLogs < ActiveRecord::Migration[5.2] + disable_ddl_transaction! + + def change + safety_assured { remove_column :admin_action_logs, :recorded_changes, :text } + end +end diff --git a/db/schema.rb b/db/schema.rb index 15ab2e85e..83fd9549c 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2022_08_08_101323) do +ActiveRecord::Schema.define(version: 2022_08_24_164532) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -205,9 +205,11 @@ ActiveRecord::Schema.define(version: 2022_08_08_101323) do t.string "action", default: "", null: false t.string "target_type" t.bigint "target_id" - t.text "recorded_changes", default: "", null: false t.datetime "created_at", null: false t.datetime "updated_at", null: false + t.string "human_identifier" + t.string "route_param" + t.string "permalink" t.index ["account_id"], name: "index_admin_action_logs_on_account_id" t.index ["target_type", "target_id"], name: "index_admin_action_logs_on_target_type_and_target_id" end diff --git a/spec/helpers/admin/action_log_helper_spec.rb b/spec/helpers/admin/action_log_helper_spec.rb index 60f5ecdcc..9d7ed4ab7 100644 --- a/spec/helpers/admin/action_log_helper_spec.rb +++ b/spec/helpers/admin/action_log_helper_spec.rb @@ -3,32 +3,4 @@ require 'rails_helper' RSpec.describe Admin::ActionLogsHelper, type: :helper do - klass = Class.new do - include ActionView::Helpers - include Admin::ActionLogsHelper - end - - let(:hoge) { klass.new } - - describe '#log_target' do - after do - hoge.log_target(log) - end - - context 'log.target' do - let(:log) { double(target: true) } - - it 'calls linkable_log_target' do - expect(hoge).to receive(:linkable_log_target).with(log.target) - end - end - - context '!log.target' do - let(:log) { double(target: false, target_type: :type, recorded_changes: :change) } - - it 'calls log_target_from_history' do - expect(hoge).to receive(:log_target_from_history).with(log.target_type, log.recorded_changes) - end - end - end end From c36262c914ba28a9d65511e8e438f8cc85e59dc2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 26 Aug 2022 03:57:01 +0900 Subject: [PATCH 343/652] Bump oj from 3.13.20 to 3.13.21 (#19031) Bumps [oj](https://github.com/ohler55/oj) from 3.13.20 to 3.13.21. - [Release notes](https://github.com/ohler55/oj/releases) - [Changelog](https://github.com/ohler55/oj/blob/develop/CHANGELOG.md) - [Commits](https://github.com/ohler55/oj/compare/v3.13.20...v3.13.21) --- updated-dependencies: - dependency-name: oj dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 076cc2a0d..7843c0c04 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -422,7 +422,7 @@ GEM concurrent-ruby (~> 1.0, >= 1.0.2) sidekiq (>= 3.5) statsd-ruby (~> 1.4, >= 1.4.0) - oj (3.13.20) + oj (3.13.21) omniauth (1.9.2) hashie (>= 3.4.6) rack (>= 1.6.2, < 3) From 3c79ccb7e36f2a1f291374a0a57e4c24af4ef0bd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 26 Aug 2022 03:57:41 +0900 Subject: [PATCH 344/652] Bump addressable from 2.8.0 to 2.8.1 (#19033) Bumps [addressable](https://github.com/sporkmonger/addressable) from 2.8.0 to 2.8.1. - [Release notes](https://github.com/sporkmonger/addressable/releases) - [Changelog](https://github.com/sporkmonger/addressable/blob/main/CHANGELOG.md) - [Commits](https://github.com/sporkmonger/addressable/compare/addressable-2.8.0...addressable-2.8.1) --- updated-dependencies: - dependency-name: addressable dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 7843c0c04..13357f600 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -75,8 +75,8 @@ GEM minitest (>= 5.1) tzinfo (~> 2.0) zeitwerk (~> 2.3) - addressable (2.8.0) - public_suffix (>= 2.0.2, < 5.0) + addressable (2.8.1) + public_suffix (>= 2.0.2, < 6.0) aes_key_wrap (1.1.0) airbrussh (1.4.1) sshkit (>= 1.6.1, != 1.7.0) @@ -478,7 +478,7 @@ GEM pry (>= 0.13, < 0.15) pry-rails (0.3.9) pry (>= 0.10.4) - public_suffix (4.0.7) + public_suffix (5.0.0) puma (5.6.5) nio4r (~> 2.0) pundit (2.2.0) From d696f729f1dc27c9d92b896c651e1ea73bf93d75 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 25 Aug 2022 23:27:10 +0200 Subject: [PATCH 345/652] Add meta tag for official iOS app (#16599) --- app/views/layouts/application.html.haml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index bf164223c..3e50de3fb 100755 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -23,6 +23,7 @@ %link{ rel: 'manifest', href: manifest_path(format: :json) }/ %meta{ name: 'theme-color', content: '#6364FF' }/ %meta{ name: 'apple-mobile-web-app-capable', content: 'yes' }/ + %meta{ name: 'apple-itunes-app', content: 'app-id=1571998974' }/ %title= content_for?(:page_title) ? safe_join([yield(:page_title).chomp.html_safe, title], ' - ') : title From 5b0e8cc92b9ca0ab0dc24366d95f67a88c470173 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 25 Aug 2022 23:33:34 +0200 Subject: [PATCH 346/652] Add ability to select all accounts matching search for batch actions (#19053) --- app/controllers/admin/accounts_controller.rb | 6 ++- app/javascript/packs/admin.js | 53 ++++++++++++++++++++ app/javascript/styles/mastodon/tables.scss | 49 ++++++++++++++++++ app/models/custom_filter_status.rb | 2 +- app/models/form/account_batch.rb | 13 ++++- app/views/admin/accounts/index.html.haml | 9 ++++ config/locales/en.yml | 10 ++++ 7 files changed, 138 insertions(+), 4 deletions(-) diff --git a/app/controllers/admin/accounts_controller.rb b/app/controllers/admin/accounts_controller.rb index 46c9aba91..40bf685c5 100644 --- a/app/controllers/admin/accounts_controller.rb +++ b/app/controllers/admin/accounts_controller.rb @@ -16,7 +16,11 @@ module Admin def batch authorize :account, :index? - @form = Form::AccountBatch.new(form_account_batch_params.merge(current_account: current_account, action: action_from_button)) + @form = Form::AccountBatch.new(form_account_batch_params) + @form.current_account = current_account + @form.action = action_from_button + @form.select_all_matching = params[:select_all_matching] + @form.query = filtered_accounts @form.save rescue ActionController::ParameterMissing flash[:alert] = I18n.t('admin.accounts.no_account_selected') diff --git a/app/javascript/packs/admin.js b/app/javascript/packs/admin.js index a3ed1ffed..b733d6b18 100644 --- a/app/javascript/packs/admin.js +++ b/app/javascript/packs/admin.js @@ -4,18 +4,71 @@ import ready from '../mastodon/ready'; const batchCheckboxClassName = '.batch-checkbox input[type="checkbox"]'; +const showSelectAll = () => { + const selectAllMatchingElement = document.querySelector('.batch-table__select-all'); + selectAllMatchingElement.classList.add('active'); +}; + +const hideSelectAll = () => { + const selectAllMatchingElement = document.querySelector('.batch-table__select-all'); + const hiddenField = document.querySelector('#select_all_matching'); + const selectedMsg = document.querySelector('.batch-table__select-all .selected'); + const notSelectedMsg = document.querySelector('.batch-table__select-all .not-selected'); + + selectAllMatchingElement.classList.remove('active'); + selectedMsg.classList.remove('active'); + notSelectedMsg.classList.add('active'); + hiddenField.value = '0'; +}; + delegate(document, '#batch_checkbox_all', 'change', ({ target }) => { + const selectAllMatchingElement = document.querySelector('.batch-table__select-all'); + [].forEach.call(document.querySelectorAll(batchCheckboxClassName), (content) => { content.checked = target.checked; }); + + if (selectAllMatchingElement) { + if (target.checked) { + showSelectAll(); + } else { + hideSelectAll(); + } + } +}); + +delegate(document, '.batch-table__select-all button', 'click', () => { + const hiddenField = document.querySelector('#select_all_matching'); + const active = hiddenField.value === '1'; + const selectedMsg = document.querySelector('.batch-table__select-all .selected'); + const notSelectedMsg = document.querySelector('.batch-table__select-all .not-selected'); + + if (active) { + hiddenField.value = '0'; + selectedMsg.classList.remove('active'); + notSelectedMsg.classList.add('active'); + } else { + hiddenField.value = '1'; + notSelectedMsg.classList.remove('active'); + selectedMsg.classList.add('active'); + } }); delegate(document, batchCheckboxClassName, 'change', () => { const checkAllElement = document.querySelector('#batch_checkbox_all'); + const selectAllMatchingElement = document.querySelector('.batch-table__select-all'); if (checkAllElement) { checkAllElement.checked = [].every.call(document.querySelectorAll(batchCheckboxClassName), (content) => content.checked); checkAllElement.indeterminate = !checkAllElement.checked && [].some.call(document.querySelectorAll(batchCheckboxClassName), (content) => content.checked); + + if (selectAllMatchingElement) { + if (checkAllElement.checked) { + showSelectAll(); + } else { + hideSelectAll(); + } + } } }); diff --git a/app/javascript/styles/mastodon/tables.scss b/app/javascript/styles/mastodon/tables.scss index 431b8a73a..39211910f 100644 --- a/app/javascript/styles/mastodon/tables.scss +++ b/app/javascript/styles/mastodon/tables.scss @@ -190,6 +190,55 @@ a.table-action-link { } } + &__select-all { + background: $ui-base-color; + height: 47px; + align-items: center; + justify-content: center; + border: 1px solid darken($ui-base-color, 8%); + border-top: 0; + color: $secondary-text-color; + display: none; + + &.active { + display: flex; + } + + .selected, + .not-selected { + display: none; + + &.active { + display: block; + } + } + + strong { + font-weight: 700; + } + + span { + padding: 8px; + display: inline-block; + } + + button { + background: transparent; + border: 0; + font: inherit; + color: $highlight-text-color; + border-radius: 4px; + font-weight: 700; + padding: 8px; + + &:hover, + &:focus, + &:active { + background: lighten($ui-base-color, 8%); + } + } + } + &__form { padding: 16px; border: 1px solid darken($ui-base-color, 8%); diff --git a/app/models/custom_filter_status.rb b/app/models/custom_filter_status.rb index b6bea1394..e748d6963 100644 --- a/app/models/custom_filter_status.rb +++ b/app/models/custom_filter_status.rb @@ -5,7 +5,7 @@ # # id :bigint(8) not null, primary key # custom_filter_id :bigint(8) not null -# status_id :bigint(8) default(""), not null +# status_id :bigint(8) not null # created_at :datetime not null # updated_at :datetime not null # diff --git a/app/models/form/account_batch.rb b/app/models/form/account_batch.rb index 98f2cad3e..5cfcf7205 100644 --- a/app/models/form/account_batch.rb +++ b/app/models/form/account_batch.rb @@ -6,7 +6,8 @@ class Form::AccountBatch include AccountableConcern include Payloadable - attr_accessor :account_ids, :action, :current_account + attr_accessor :account_ids, :action, :current_account, + :select_all_matching, :query def save case action @@ -60,7 +61,11 @@ class Form::AccountBatch end def accounts - Account.where(id: account_ids) + if select_all_matching? + query + else + Account.where(id: account_ids) + end end def approve! @@ -118,4 +123,8 @@ class Form::AccountBatch log_action(:approve, account.user) account.user.approve! end + + def select_all_matching? + select_all_matching == '1' + end end diff --git a/app/views/admin/accounts/index.html.haml b/app/views/admin/accounts/index.html.haml index cb378f0ed..670a09a2d 100644 --- a/app/views/admin/accounts/index.html.haml +++ b/app/views/admin/accounts/index.html.haml @@ -37,6 +37,7 @@ = form_for(@form, url: batch_admin_accounts_path) do |f| = hidden_field_tag :page, params[:page] || 1 + = hidden_field_tag :select_all_matching, '0' - AccountFilter::KEYS.each do |key| = hidden_field_tag key, params[key] if params[key].present? @@ -52,6 +53,14 @@ = f.button safe_join([fa_icon('times'), t('admin.accounts.reject')]), name: :reject, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') } = f.button safe_join([fa_icon('lock'), t('admin.accounts.perform_full_suspension')]), name: :suspend, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') } + - if true || @accounts.total_count > @accounts.size + .batch-table__select-all + .not-selected.active + %span= t('generic.all_items_on_page_selected_html', count: @accounts.size) + %button{ type: 'button' }= t('generic.select_all_matching_items', count: @accounts.total_count) + .selected + %span= t('generic.all_matching_items_selected_html', count: @accounts.total_count) + %button{ type: 'button' }= t('generic.deselect') .batch-table__body - if @accounts.empty? = nothing_here 'nothing-here--under-tabs' diff --git a/config/locales/en.yml b/config/locales/en.yml index 5c309ab11..6aa87e4a0 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1227,12 +1227,22 @@ en: trending_now: Trending now generic: all: All + all_items_on_page_selected_html: + one: "%{count} item on this page is selected." + other: All %{count} items on this page are selected. + all_matching_items_selected_html: + one: "%{count} item matching your search is selected." + other: All %{count} items matching your search are selected. changes_saved_msg: Changes successfully saved! copy: Copy delete: Delete + deselect: Deselect all none: None order_by: Order by save_changes: Save changes + select_all_matching_items: + one: Select %{count} item matching your search. + other: Select all %{count} items matching your search. today: today validation_errors: one: Something isn't quite right yet! Please review the error below From 0b3e4fd5de392969b624719b2eb3f86277b6ac1f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 25 Aug 2022 23:38:22 +0200 Subject: [PATCH 347/652] Remove digest e-mails (#17985) * Remove digest e-mails * Remove digest-related code --- .../settings/preferences_controller.rb | 2 +- app/mailers/notification_mailer.rb | 18 -------- app/models/user.rb | 4 -- .../notification_mailer/digest.html.haml | 44 ------------------- app/views/notification_mailer/digest.text.erb | 15 ------- .../preferences/notifications/show.html.haml | 4 -- app/workers/digest_mailer_worker.rb | 21 --------- app/workers/scheduler/email_scheduler.rb | 25 ----------- config/locales/en.yml | 11 ----- config/sidekiq.yml | 4 -- spec/mailers/notification_mailer_spec.rb | 31 ------------- spec/workers/digest_mailer_worker_spec.rb | 36 --------------- 12 files changed, 1 insertion(+), 214 deletions(-) delete mode 100644 app/views/notification_mailer/digest.html.haml delete mode 100644 app/views/notification_mailer/digest.text.erb delete mode 100644 app/workers/digest_mailer_worker.rb delete mode 100644 app/workers/scheduler/email_scheduler.rb delete mode 100644 spec/workers/digest_mailer_worker_spec.rb diff --git a/app/controllers/settings/preferences_controller.rb b/app/controllers/settings/preferences_controller.rb index bfe651bc6..f5d5c1244 100644 --- a/app/controllers/settings/preferences_controller.rb +++ b/app/controllers/settings/preferences_controller.rb @@ -55,7 +55,7 @@ class Settings::PreferencesController < Settings::BaseController :setting_trends, :setting_crop_images, :setting_always_send_emails, - notification_emails: %i(follow follow_request reblog favourite mention digest report pending_account trending_tag appeal), + notification_emails: %i(follow follow_request reblog favourite mention report pending_account trending_tag appeal), interactions: %i(must_be_follower must_be_following must_be_following_dm) ) end diff --git a/app/mailers/notification_mailer.rb b/app/mailers/notification_mailer.rb index 9e683b6a1..ab73826ab 100644 --- a/app/mailers/notification_mailer.rb +++ b/app/mailers/notification_mailer.rb @@ -66,24 +66,6 @@ class NotificationMailer < ApplicationMailer end end - def digest(recipient, **opts) - return unless recipient.user.functional? - - @me = recipient - @since = opts[:since] || [@me.user.last_emailed_at, (@me.user.current_sign_in_at + 1.day)].compact.max - @notifications_count = Notification.where(account: @me, activity_type: 'Mention').where('created_at > ?', @since).count - - return if @notifications_count.zero? - - @notifications = Notification.where(account: @me, activity_type: 'Mention').where('created_at > ?', @since).limit(40) - @follows_since = Notification.where(account: @me, activity_type: 'Follow').where('created_at > ?', @since).count - - locale_for_account(@me) do - mail to: @me.user.email, - subject: I18n.t(:subject, scope: [:notification_mailer, :digest], count: @notifications_count) - end - end - private def thread_by_conversation(conversation) diff --git a/app/models/user.rb b/app/models/user.rb index 18b9d5928..342f5e6cc 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -289,10 +289,6 @@ class User < ApplicationRecord settings.default_privacy || (account.locked? ? 'private' : 'public') end - def allows_digest_emails? - settings.notification_emails['digest'] - end - def allows_report_emails? settings.notification_emails['report'] end diff --git a/app/views/notification_mailer/digest.html.haml b/app/views/notification_mailer/digest.html.haml deleted file mode 100644 index a94ace228..000000000 --- a/app/views/notification_mailer/digest.html.haml +++ /dev/null @@ -1,44 +0,0 @@ -%table.email-table{ cellspacing: 0, cellpadding: 0 } - %tbody - %tr - %td.email-body - .email-container - %table.content-section{ cellspacing: 0, cellpadding: 0 } - %tbody - %tr - %td.content-cell.darker.hero-with-button - .email-row - .col-6 - %table.column{ cellspacing: 0, cellpadding: 0 } - %tbody - %tr - %td.column-cell.text-center.padded - %h1= t 'notification_mailer.digest.title' - %p.lead= t('notification_mailer.digest.body', since: l((@me.user_current_sign_in_at || @since).to_date, format: :short), instance: site_hostname) - %table.button{ align: 'center', cellspacing: 0, cellpadding: 0 } - %tbody - %tr - %td.button-primary - = link_to web_url do - %span= t 'notification_mailer.digest.action' - -- @notifications.each_with_index do |n, i| - = render 'status', status: n.target_status, i: i - -- unless @follows_since.zero? - %table.email-table{ cellspacing: 0, cellpadding: 0 } - %tbody - %tr - %td.email-body - .email-container - %table.content-section{ cellspacing: 0, cellpadding: 0 } - %tbody - %tr - %td.content-cell.content-start.border-top - .email-row - .col-6 - %table.column{ cellspacing: 0, cellpadding: 0 } - %tbody - %tr - %td.column-cell.text-center - %p= t('notification_mailer.digest.new_followers_summary', count: @follows_since) diff --git a/app/views/notification_mailer/digest.text.erb b/app/views/notification_mailer/digest.text.erb deleted file mode 100644 index 0f84a4ef0..000000000 --- a/app/views/notification_mailer/digest.text.erb +++ /dev/null @@ -1,15 +0,0 @@ -<%= raw t('application_mailer.salutation', name: display_name(@me)) %> - -<%= raw t('notification_mailer.digest.body', since: l(@me.user_current_sign_in_at || @since), instance: root_url) %> -<% @notifications.each do |notification| %> - -* <%= raw t('notification_mailer.digest.mention', name: notification.from_account.pretty_acct) %> - - <%= raw extract_status_plain_text(notification.target_status) %> - - <%= raw t('application_mailer.view')%> <%= web_url("statuses/#{notification.target_status.id}") %> -<% end %> -<% if @follows_since > 0 %> - -<%= raw t('notification_mailer.digest.new_followers_summary', count: @follows_since) %> -<% end %> diff --git a/app/views/settings/preferences/notifications/show.html.haml b/app/views/settings/preferences/notifications/show.html.haml index bc7afb993..f00dbadd4 100644 --- a/app/views/settings/preferences/notifications/show.html.haml +++ b/app/views/settings/preferences/notifications/show.html.haml @@ -26,10 +26,6 @@ .fields-group = f.input :setting_always_send_emails, as: :boolean, wrapper: :with_label - .fields-group - = f.simple_fields_for :notification_emails, hash_to_object(current_user.settings.notification_emails) do |ff| - = ff.input :digest, as: :boolean, wrapper: :with_label - %h4= t 'notifications.other_settings' .fields-group diff --git a/app/workers/digest_mailer_worker.rb b/app/workers/digest_mailer_worker.rb deleted file mode 100644 index 21f1c357a..000000000 --- a/app/workers/digest_mailer_worker.rb +++ /dev/null @@ -1,21 +0,0 @@ -# frozen_string_literal: true - -class DigestMailerWorker - include Sidekiq::Worker - - sidekiq_options queue: 'mailers' - - attr_reader :user - - def perform(user_id) - @user = User.find(user_id) - deliver_digest if @user.allows_digest_emails? - end - - private - - def deliver_digest - NotificationMailer.digest(user.account).deliver_now! - user.touch(:last_emailed_at) - end -end diff --git a/app/workers/scheduler/email_scheduler.rb b/app/workers/scheduler/email_scheduler.rb deleted file mode 100644 index c052f2fce..000000000 --- a/app/workers/scheduler/email_scheduler.rb +++ /dev/null @@ -1,25 +0,0 @@ -# frozen_string_literal: true - -class Scheduler::EmailScheduler - include Sidekiq::Worker - - sidekiq_options retry: 0 - - FREQUENCY = 7.days.freeze - SIGN_IN_OFFSET = 1.day.freeze - - def perform - eligible_users.reorder(nil).find_each do |user| - next unless user.allows_digest_emails? - DigestMailerWorker.perform_async(user.id) - end - end - - private - - def eligible_users - User.emailable - .where('current_sign_in_at < ?', (FREQUENCY + SIGN_IN_OFFSET).ago) - .where('last_emailed_at IS NULL OR last_emailed_at < ?', FREQUENCY.ago) - end -end diff --git a/config/locales/en.yml b/config/locales/en.yml index 6aa87e4a0..72ebfafba 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1351,17 +1351,6 @@ en: subject: "%{name} submitted a report" sign_up: subject: "%{name} signed up" - digest: - action: View all notifications - body: Here is a brief summary of the messages you missed since your last visit on %{since} - mention: "%{name} mentioned you in:" - new_followers_summary: - one: Also, you have acquired one new follower while being away! Yay! - other: Also, you have acquired %{count} new followers while being away! Amazing! - subject: - one: "1 new notification since your last visit 🐘" - other: "%{count} new notifications since your last visit 🐘" - title: In your absence... favourite: body: 'Your post was favourited by %{name}:' subject: "%{name} favourited your post" diff --git a/config/sidekiq.yml b/config/sidekiq.yml index 2a3871468..9ec6eb5ec 100644 --- a/config/sidekiq.yml +++ b/config/sidekiq.yml @@ -49,10 +49,6 @@ cron: '<%= Random.rand(0..59) %> <%= Random.rand(3..5) %> * * *' class: Scheduler::IpCleanupScheduler queue: scheduler - email_scheduler: - cron: '0 10 * * 2' - class: Scheduler::EmailScheduler - queue: scheduler backup_cleanup_scheduler: cron: '<%= Random.rand(0..59) %> <%= Random.rand(3..5) %> * * *' class: Scheduler::BackupCleanupScheduler diff --git a/spec/mailers/notification_mailer_spec.rb b/spec/mailers/notification_mailer_spec.rb index 2ca4e26fa..29bdc349b 100644 --- a/spec/mailers/notification_mailer_spec.rb +++ b/spec/mailers/notification_mailer_spec.rb @@ -101,35 +101,4 @@ RSpec.describe NotificationMailer, type: :mailer do expect(mail.body.encoded).to match("bob has requested to follow you") end end - - describe 'digest' do - before do - mention = Fabricate(:mention, account: receiver.account, status: foreign_status) - Fabricate(:notification, account: receiver.account, activity: mention) - sender.follow!(receiver.account) - end - - context do - let!(:mail) { NotificationMailer.digest(receiver.account, since: 5.days.ago) } - - include_examples 'localized subject', 'notification_mailer.digest.subject', count: 1, name: 'bob' - - it 'renders the headers' do - expect(mail.subject).to match('notification since your last') - expect(mail.to).to eq([receiver.email]) - end - - it 'renders the body' do - expect(mail.body.encoded).to match('brief summary') - expect(mail.body.encoded).to include 'The body of the foreign status' - expect(mail.body.encoded).to include sender.username - end - end - - it 'includes activities since the receiver last signed in' do - receiver.update!(last_emailed_at: nil, current_sign_in_at: '2000-03-01T00:00:00Z') - mail = NotificationMailer.digest(receiver.account) - expect(mail.body.encoded).to include 'Mar 01, 2000, 00:00' - end - end end diff --git a/spec/workers/digest_mailer_worker_spec.rb b/spec/workers/digest_mailer_worker_spec.rb deleted file mode 100644 index db3b1390d..000000000 --- a/spec/workers/digest_mailer_worker_spec.rb +++ /dev/null @@ -1,36 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -describe DigestMailerWorker do - describe 'perform' do - let(:user) { Fabricate(:user, last_emailed_at: 3.days.ago) } - - context 'for a user who receives digests' do - it 'sends the email' do - service = double(deliver_now!: nil) - allow(NotificationMailer).to receive(:digest).and_return(service) - update_user_digest_setting(true) - described_class.perform_async(user.id) - - expect(NotificationMailer).to have_received(:digest) - expect(user.reload.last_emailed_at).to be_within(1).of(Time.now.utc) - end - end - - context 'for a user who does not receive digests' do - it 'does not send the email' do - allow(NotificationMailer).to receive(:digest) - update_user_digest_setting(false) - described_class.perform_async(user.id) - - expect(NotificationMailer).not_to have_received(:digest) - expect(user.last_emailed_at).to be_within(1).of(3.days.ago) - end - end - - def update_user_digest_setting(value) - user.settings['notification_emails'] = user.settings['notification_emails'].merge('digest' => value) - end - end -end From af396fa35f589e1f759c7a3a0dad7932f1862309 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 25 Aug 2022 23:38:36 +0200 Subject: [PATCH 348/652] Remove preference to aggregate reblogs in home/list feeds (#18112) --- app/lib/feed_manager.rb | 18 +++++++++--------- .../settings/preferences/other/show.html.haml | 3 --- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb index 145352fe8..ccff2667b 100644 --- a/app/lib/feed_manager.rb +++ b/app/lib/feed_manager.rb @@ -58,7 +58,7 @@ class FeedManager # @param [Boolean] update # @return [Boolean] def push_to_home(account, status, update: false) - return false unless add_to_feed(:home, account.id, status, aggregate_reblogs: account.user&.aggregates_reblogs?) + return false unless add_to_feed(:home, account.id, status, aggregate_reblogs: true) trim(:home, account.id) PushUpdateWorker.perform_async(account.id, status.id, "timeline:#{account.id}", { 'update' => update }) if push_update_required?("timeline:#{account.id}") @@ -71,7 +71,7 @@ class FeedManager # @param [Boolean] update # @return [Boolean] def unpush_from_home(account, status, update: false) - return false unless remove_from_feed(:home, account.id, status, aggregate_reblogs: account.user&.aggregates_reblogs?) + return false unless remove_from_feed(:home, account.id, status, aggregate_reblogs: true) redis.publish("timeline:#{account.id}", Oj.dump(event: :delete, payload: status.id.to_s)) unless update true @@ -83,7 +83,7 @@ class FeedManager # @param [Boolean] update # @return [Boolean] def push_to_list(list, status, update: false) - return false if filter_from_list?(status, list) || !add_to_feed(:list, list.id, status, aggregate_reblogs: list.account.user&.aggregates_reblogs?) + return false if filter_from_list?(status, list) || !add_to_feed(:list, list.id, status, aggregate_reblogs: true) trim(:list, list.id) PushUpdateWorker.perform_async(list.account_id, status.id, "timeline:list:#{list.id}", { 'update' => update }) if push_update_required?("timeline:list:#{list.id}") @@ -96,7 +96,7 @@ class FeedManager # @param [Boolean] update # @return [Boolean] def unpush_from_list(list, status, update: false) - return false unless remove_from_feed(:list, list.id, status, aggregate_reblogs: list.account.user&.aggregates_reblogs?) + return false unless remove_from_feed(:list, list.id, status, aggregate_reblogs: true) redis.publish("timeline:list:#{list.id}", Oj.dump(event: :delete, payload: status.id.to_s)) unless update true @@ -108,7 +108,7 @@ class FeedManager # @return [void] def merge_into_home(from_account, into_account) timeline_key = key(:home, into_account.id) - aggregate = into_account.user&.aggregates_reblogs? + aggregate = true query = from_account.statuses.where(visibility: [:public, :unlisted, :private]).includes(:preloadable_poll, :media_attachments, reblog: :account).limit(FeedManager::MAX_ITEMS / 4) if redis.zcard(timeline_key) >= FeedManager::MAX_ITEMS / 4 @@ -134,7 +134,7 @@ class FeedManager # @return [void] def merge_into_list(from_account, list) timeline_key = key(:list, list.id) - aggregate = list.account.user&.aggregates_reblogs? + aggregate = true query = from_account.statuses.where(visibility: [:public, :unlisted, :private]).includes(:preloadable_poll, :media_attachments, reblog: :account).limit(FeedManager::MAX_ITEMS / 4) if redis.zcard(timeline_key) >= FeedManager::MAX_ITEMS / 4 @@ -163,7 +163,7 @@ class FeedManager timeline_status_ids = redis.zrange(timeline_key, 0, -1) from_account.statuses.select('id, reblog_of_id').where(id: timeline_status_ids).reorder(nil).find_each do |status| - remove_from_feed(:home, into_account.id, status, aggregate_reblogs: into_account.user&.aggregates_reblogs?) + remove_from_feed(:home, into_account.id, status, aggregate_reblogs: true) end end @@ -176,7 +176,7 @@ class FeedManager timeline_status_ids = redis.zrange(timeline_key, 0, -1) from_account.statuses.select('id, reblog_of_id').where(id: timeline_status_ids).reorder(nil).find_each do |status| - remove_from_feed(:list, list.id, status, aggregate_reblogs: list.account.user&.aggregates_reblogs?) + remove_from_feed(:list, list.id, status, aggregate_reblogs: true) end end @@ -235,7 +235,7 @@ class FeedManager # @return [void] def populate_home(account) limit = FeedManager::MAX_ITEMS / 2 - aggregate = account.user&.aggregates_reblogs? + aggregate = true timeline_key = key(:home, account.id) account.statuses.limit(limit).each do |status| diff --git a/app/views/settings/preferences/other/show.html.haml b/app/views/settings/preferences/other/show.html.haml index 44f4af2eb..379678703 100644 --- a/app/views/settings/preferences/other/show.html.haml +++ b/app/views/settings/preferences/other/show.html.haml @@ -10,9 +10,6 @@ .fields-group = f.input :setting_noindex, as: :boolean, wrapper: :with_label - .fields-group - = f.input :setting_aggregate_reblogs, as: :boolean, wrapper: :with_label, recommended: true - %h4= t 'preferences.posting_defaults' .fields-row From 1d84cbeaab7cecdfef10f53afe1e708b8a363603 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 26 Aug 2022 02:11:23 +0200 Subject: [PATCH 349/652] Fix "select all matching items" being offered when all items are on the page (#19054) --- app/views/admin/accounts/index.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/admin/accounts/index.html.haml b/app/views/admin/accounts/index.html.haml index 670a09a2d..f33f788ed 100644 --- a/app/views/admin/accounts/index.html.haml +++ b/app/views/admin/accounts/index.html.haml @@ -53,7 +53,7 @@ = f.button safe_join([fa_icon('times'), t('admin.accounts.reject')]), name: :reject, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') } = f.button safe_join([fa_icon('lock'), t('admin.accounts.perform_full_suspension')]), name: :suspend, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') } - - if true || @accounts.total_count > @accounts.size + - if @accounts.total_count > @accounts.size .batch-table__select-all .not-selected.active %span= t('generic.all_items_on_page_selected_html', count: @accounts.size) From 1fac99e842c99e8f6aef9429ee1f19c7e63f7b07 Mon Sep 17 00:00:00 2001 From: Shlee Date: Fri, 26 Aug 2022 09:42:46 +0930 Subject: [PATCH 350/652] Add rel="noopener" to links to remote profiles (#19014) * Update timeline_hint.js * Update timeline_hint.js --- app/javascript/mastodon/components/timeline_hint.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/components/timeline_hint.js b/app/javascript/mastodon/components/timeline_hint.js index fb55a62cc..ac9a79dcc 100644 --- a/app/javascript/mastodon/components/timeline_hint.js +++ b/app/javascript/mastodon/components/timeline_hint.js @@ -6,7 +6,7 @@ const TimelineHint = ({ resource, url }) => (


    - +
    ); From c7147bab908aca4cefd17d527e7cbfe3b6e5d3a6 Mon Sep 17 00:00:00 2001 From: Claire Date: Sat, 27 Aug 2022 00:45:54 +0200 Subject: [PATCH 351/652] Fix incorrect and slow cache invalidation in ClearDomainMediaService (#19062) Fixes #19060 --- app/services/clear_domain_media_service.rb | 32 +++++++++++----------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/app/services/clear_domain_media_service.rb b/app/services/clear_domain_media_service.rb index 704cfb71a..9e70ebe51 100644 --- a/app/services/clear_domain_media_service.rb +++ b/app/services/clear_domain_media_service.rb @@ -10,24 +10,18 @@ class ClearDomainMediaService < BaseService private - def invalidate_association_caches! + def invalidate_association_caches!(status_ids) # Normally, associated models of a status are immutable (except for accounts) # so they are aggressively cached. After updating the media attachments to no # longer point to a local file, we need to clear the cache to make those # changes appear in the API and UI - @affected_status_ids.each { |id| Rails.cache.delete_matched("statuses/#{id}-*") } + Rails.cache.delete_multi(status_ids.map { |id| "statuses/#{id}" }) end def clear_media! - @affected_status_ids = [] - - begin - clear_account_images! - clear_account_attachments! - clear_emojos! - ensure - invalidate_association_caches! - end + clear_account_images! + clear_account_attachments! + clear_emojos! end def clear_account_images! @@ -39,12 +33,18 @@ class ClearDomainMediaService < BaseService end def clear_account_attachments! - media_from_blocked_domain.reorder(nil).find_each do |attachment| - @affected_status_ids << attachment.status_id if attachment.status_id.present? + media_from_blocked_domain.reorder(nil).find_in_batches do |attachments| + affected_status_ids = [] - attachment.file.destroy if attachment.file&.exists? - attachment.type = :unknown - attachment.save + attachments.each do |attachment| + affected_status_ids << attachment.status_id if attachment.status_id.present? + + attachment.file.destroy if attachment.file&.exists? + attachment.type = :unknown + attachment.save + end + + invalidate_association_caches!(affected_status_ids) unless affected_status_ids.empty? end end From 159b4edeef1ebdb70cc8d7d1316184252aef00a3 Mon Sep 17 00:00:00 2001 From: Shlee Date: Sun, 28 Aug 2022 01:10:46 +0930 Subject: [PATCH 352/652] Update docker-compose.yml (#19063) --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index d86cb55d2..c534286c7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -15,7 +15,7 @@ services: redis: restart: always - image: redis:6-alpine + image: redis:7-alpine networks: - internal_network healthcheck: From ff19dad5a05dba689122b0427886c8375491571a Mon Sep 17 00:00:00 2001 From: Claire Date: Sat, 27 Aug 2022 17:41:20 +0200 Subject: [PATCH 353/652] Fix crash when adding a new filter (#18894) Fixes #18742 --- ...71123_fix_custom_filter_keywords_id_seq.rb | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 db/post_migrate/20220729171123_fix_custom_filter_keywords_id_seq.rb diff --git a/db/post_migrate/20220729171123_fix_custom_filter_keywords_id_seq.rb b/db/post_migrate/20220729171123_fix_custom_filter_keywords_id_seq.rb new file mode 100644 index 000000000..7ed34a3ef --- /dev/null +++ b/db/post_migrate/20220729171123_fix_custom_filter_keywords_id_seq.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +class FixCustomFilterKeywordsIdSeq < ActiveRecord::Migration[6.1] + disable_ddl_transaction! + + def up + # 20220613110711 manually inserts items with set `id` in the database, but + # we also need to bump the sequence number, otherwise + safety_assured do + execute <<-SQL.squish + BEGIN; + LOCK TABLE custom_filter_keywords IN EXCLUSIVE MODE; + SELECT setval('custom_filter_keywords_id_seq'::regclass, id) FROM custom_filter_keywords ORDER BY id DESC LIMIT 1; + COMMIT; + SQL + end + end + + def down; end +end From b399d79545e5e5430cb9d6a2c936efc244b69a75 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 27 Aug 2022 20:56:47 +0200 Subject: [PATCH 354/652] Add admin API for managing IP blocks (#19065) --- .../api/v1/admin/ip_blocks_controller.rb | 99 +++++++++++++++++++ app/models/ip_block.rb | 3 +- app/policies/ip_block_policy.rb | 4 + .../rest/admin/ip_block_serializer.rb | 14 +++ config/routes.rb | 1 + 5 files changed, 120 insertions(+), 1 deletion(-) create mode 100644 app/controllers/api/v1/admin/ip_blocks_controller.rb create mode 100644 app/serializers/rest/admin/ip_block_serializer.rb diff --git a/app/controllers/api/v1/admin/ip_blocks_controller.rb b/app/controllers/api/v1/admin/ip_blocks_controller.rb new file mode 100644 index 000000000..f13d63267 --- /dev/null +++ b/app/controllers/api/v1/admin/ip_blocks_controller.rb @@ -0,0 +1,99 @@ +# frozen_string_literal: true + +class Api::V1::Admin::IpBlocksController < Api::BaseController + include Authorization + include AccountableConcern + + LIMIT = 100 + + before_action -> { authorize_if_got_token! :'admin:read', :'admin:read:ip_blocks' }, only: [:index, :show] + before_action -> { authorize_if_got_token! :'admin:write', :'admin:write:ip_blocks' }, except: [:index, :show] + before_action :set_ip_blocks, only: :index + before_action :set_ip_block, only: [:show, :update, :destroy] + + after_action :verify_authorized + after_action :insert_pagination_headers, only: :index + + PAGINATION_PARAMS = %i( + limit + ).freeze + + def create + authorize :ip_block, :create? + + @ip_block = IpBlock.create!(resource_params) + log_action :create, @ip_block + + render json: @ip_block, serializer: REST::Admin::IpBlockSerializer + end + + def index + authorize :ip_block, :index? + render json: @ip_blocks, each_serializer: REST::Admin::IpBlockSerializer + end + + def show + authorize @ip_block, :show? + render json: @ip_block, serializer: REST::Admin::IpBlockSerializer + end + + def update + authorize @ip_block, :update? + + @ip_block.update(resource_params) + log_action :update, @ip_block + + render json: @ip_block, serializer: REST::Admin::IpBlockSerializer + end + + def destroy + authorize @ip_block, :destroy? + + @ip_block.destroy! + log_action :destroy, @ip_block + + render json: @ip_block, serializer: REST::Admin::IpBlockSerializer + end + + private + + def set_ip_blocks + @ip_blocks = IpBlock.order(id: :desc).to_a_paginated_by_id(limit_param(LIMIT), params_slice(:max_id, :since_id, :min_id)) + end + + def set_ip_block + @ip_block = IpBlock.find(params[:id]) + end + + def resource_params + params.permit(:ip, :severity, :comment, :expires_in) + end + + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + + def next_path + api_v1_admin_ip_blocks_url(pagination_params(max_id: pagination_max_id)) if records_continue? + end + + def prev_path + api_v1_admin_ip_blocks_url(pagination_params(min_id: pagination_since_id)) unless @ip_blocks.empty? + end + + def pagination_max_id + @ip_blocks.last.id + end + + def pagination_since_id + @ip_blocks.first.id + end + + def records_continue? + @ip_blocks.size == limit_param(LIMIT) + end + + def pagination_params(core_params) + params.slice(*PAGINATION_PARAMS).permit(*PAGINATION_PARAMS).merge(core_params) + end +end diff --git a/app/models/ip_block.rb b/app/models/ip_block.rb index f40c8a0b1..8666f4248 100644 --- a/app/models/ip_block.rb +++ b/app/models/ip_block.rb @@ -16,6 +16,7 @@ class IpBlock < ApplicationRecord CACHE_KEY = 'blocked_ips' include Expireable + include Paginable enum severity: { sign_up_requires_approval: 5000, @@ -28,7 +29,7 @@ class IpBlock < ApplicationRecord after_commit :reset_cache def to_log_human_identifier - "#{record.ip}/#{record.ip.prefix}" + "#{ip}/#{ip.prefix}" end class << self diff --git a/app/policies/ip_block_policy.rb b/app/policies/ip_block_policy.rb index 1abc97ad8..2986a4fdb 100644 --- a/app/policies/ip_block_policy.rb +++ b/app/policies/ip_block_policy.rb @@ -9,6 +9,10 @@ class IpBlockPolicy < ApplicationPolicy role.can?(:manage_blocks) end + def update? + role.can?(:manage_blocks) + end + def destroy? role.can?(:manage_blocks) end diff --git a/app/serializers/rest/admin/ip_block_serializer.rb b/app/serializers/rest/admin/ip_block_serializer.rb new file mode 100644 index 000000000..6a38f8b56 --- /dev/null +++ b/app/serializers/rest/admin/ip_block_serializer.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class REST::Admin::IpBlockSerializer < ActiveModel::Serializer + attributes :id, :ip, :severity, :comment, + :created_at, :expires_at + + def id + object.id.to_s + end + + def ip + "#{object.ip}/#{object.ip.prefix}" + end +end diff --git a/config/routes.rb b/config/routes.rb index dff0add3a..1168c9aee 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -591,6 +591,7 @@ Rails.application.routes.draw do resources :domain_allows, only: [:index, :show, :create, :destroy] resources :domain_blocks, only: [:index, :show, :update, :create, :destroy] + resources :ip_blocks, only: [:index, :show, :update, :create, :destroy] namespace :trends do resources :tags, only: [:index] From c556c3a0d1e54a6b07bbdd8f76cbb43672a91fd1 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 28 Aug 2022 03:31:54 +0200 Subject: [PATCH 355/652] Add admin API for managing canonical e-mail blocks (#19067) --- .../canonical_email_blocks_controller.rb | 99 +++++++++++++++++++ app/helpers/admin/action_logs_helper.rb | 8 +- app/models/admin/action_log_filter.rb | 5 + app/models/canonical_email_block.rb | 17 ++-- app/policies/canonical_email_block_policy.rb | 23 +++++ .../admin/canonical_email_block_serializer.rb | 9 ++ config/locales/en.yml | 6 ++ config/routes.rb | 6 ++ ..._change_canonical_email_blocks_nullable.rb | 5 + db/schema.rb | 4 +- lib/mastodon/canonical_email_blocks_cli.rb | 31 ++---- 11 files changed, 177 insertions(+), 36 deletions(-) create mode 100644 app/controllers/api/v1/admin/canonical_email_blocks_controller.rb create mode 100644 app/policies/canonical_email_block_policy.rb create mode 100644 app/serializers/rest/admin/canonical_email_block_serializer.rb create mode 100644 db/migrate/20220827195229_change_canonical_email_blocks_nullable.rb diff --git a/app/controllers/api/v1/admin/canonical_email_blocks_controller.rb b/app/controllers/api/v1/admin/canonical_email_blocks_controller.rb new file mode 100644 index 000000000..bf8a6a131 --- /dev/null +++ b/app/controllers/api/v1/admin/canonical_email_blocks_controller.rb @@ -0,0 +1,99 @@ +# frozen_string_literal: true + +class Api::V1::Admin::CanonicalEmailBlocksController < Api::BaseController + include Authorization + include AccountableConcern + + LIMIT = 100 + + before_action -> { authorize_if_got_token! :'admin:read', :'admin:read:canonical_email_blocks' }, only: [:index, :show, :test] + before_action -> { authorize_if_got_token! :'admin:write', :'admin:write:canonical_email_blocks' }, except: [:index, :show, :test] + + before_action :set_canonical_email_blocks, only: :index + before_action :set_canonical_email_blocks_from_test, only: [:test] + before_action :set_canonical_email_block, only: [:show, :destroy] + + after_action :verify_authorized + after_action :insert_pagination_headers, only: :index + + PAGINATION_PARAMS = %i(limit).freeze + + def index + authorize :canonical_email_block, :index? + render json: @canonical_email_blocks, each_serializer: REST::Admin::CanonicalEmailBlockSerializer + end + + def show + authorize @canonical_email_block, :show? + render json: @canonical_email_block, serializer: REST::Admin::CanonicalEmailBlockSerializer + end + + def test + authorize :canonical_email_block, :test? + render json: @canonical_email_blocks, each_serializer: REST::Admin::CanonicalEmailBlockSerializer + end + + def create + authorize :canonical_email_block, :create? + + @canonical_email_block = CanonicalEmailBlock.create!(resource_params) + log_action :create, @canonical_email_block + + render json: @canonical_email_block, serializer: REST::Admin::CanonicalEmailBlockSerializer + end + + def destroy + authorize @canonical_email_block, :destroy? + + @canonical_email_block.destroy! + log_action :destroy, @canonical_email_block + + render json: @canonical_email_block, serializer: REST::Admin::CanonicalEmailBlockSerializer + end + + private + + def resource_params + params.permit(:canonical_email_hash, :email) + end + + def set_canonical_email_blocks + @canonical_email_blocks = CanonicalEmailBlock.order(id: :desc).to_a_paginated_by_id(limit_param(LIMIT), params_slice(:max_id, :since_id, :min_id)) + end + + def set_canonical_email_blocks_from_test + @canonical_email_blocks = CanonicalEmailBlock.matching_email(params[:email]) + end + + def set_canonical_email_block + @canonical_email_block = CanonicalEmailBlock.find(params[:id]) + end + + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + + def next_path + api_v1_admin_canonical_email_blocks_url(pagination_params(max_id: pagination_max_id)) if records_continue? + end + + def prev_path + api_v1_admin_canonical_email_blocks_url(pagination_params(min_id: pagination_since_id)) unless @canonical_email_blocks.empty? + end + + def pagination_max_id + @canonical_email_blocks.last.id + end + + def pagination_since_id + @canonical_email_blocks.first.id + end + + def records_continue? + @canonical_email_blocks.size == limit_param(LIMIT) + end + + def pagination_params(core_params) + params.slice(*PAGINATION_PARAMS).permit(*PAGINATION_PARAMS).merge(core_params) + end +end diff --git a/app/helpers/admin/action_logs_helper.rb b/app/helpers/admin/action_logs_helper.rb index 3e9fe17f4..fd1977ac5 100644 --- a/app/helpers/admin/action_logs_helper.rb +++ b/app/helpers/admin/action_logs_helper.rb @@ -9,8 +9,6 @@ module Admin::ActionLogsHelper link_to log.human_identifier, admin_account_path(log.route_param) when 'UserRole' link_to log.human_identifier, admin_roles_path(log.target_id) - when 'CustomEmoji' - log.human_identifier when 'Report' link_to "##{log.human_identifier}", admin_report_path(log.target_id) when 'DomainBlock', 'DomainAllow', 'EmailDomainBlock', 'UnavailableDomain' @@ -21,10 +19,10 @@ module Admin::ActionLogsHelper link_to log.human_identifier, admin_account_path(log.target_id) when 'Announcement' link_to truncate(log.human_identifier), edit_admin_announcement_path(log.target_id) - when 'IpBlock' - log.human_identifier - when 'Instance' + when 'IpBlock', 'Instance', 'CustomEmoji' log.human_identifier + when 'CanonicalEmailBlock' + content_tag(:samp, log.human_identifier[0...7], title: log.human_identifier) when 'Appeal' link_to log.human_identifier, disputes_strike_path(log.route_param) end diff --git a/app/models/admin/action_log_filter.rb b/app/models/admin/action_log_filter.rb index 6382cd782..c7a7e1a4c 100644 --- a/app/models/admin/action_log_filter.rb +++ b/app/models/admin/action_log_filter.rb @@ -22,18 +22,22 @@ class Admin::ActionLogFilter create_domain_allow: { target_type: 'DomainAllow', action: 'create' }.freeze, create_domain_block: { target_type: 'DomainBlock', action: 'create' }.freeze, create_email_domain_block: { target_type: 'EmailDomainBlock', action: 'create' }.freeze, + create_ip_block: { target_type: 'IpBlock', action: 'create' }.freeze, create_unavailable_domain: { target_type: 'UnavailableDomain', action: 'create' }.freeze, create_user_role: { target_type: 'UserRole', action: 'create' }.freeze, + create_canonical_email_block: { target_type: 'CanonicalEmailBlock', action: 'create' }.freeze, demote_user: { target_type: 'User', action: 'demote' }.freeze, destroy_announcement: { target_type: 'Announcement', action: 'destroy' }.freeze, destroy_custom_emoji: { target_type: 'CustomEmoji', action: 'destroy' }.freeze, destroy_domain_allow: { target_type: 'DomainAllow', action: 'destroy' }.freeze, destroy_domain_block: { target_type: 'DomainBlock', action: 'destroy' }.freeze, + destroy_ip_block: { target_type: 'IpBlock', action: 'destroy' }.freeze, destroy_email_domain_block: { target_type: 'EmailDomainBlock', action: 'destroy' }.freeze, destroy_instance: { target_type: 'Instance', action: 'destroy' }.freeze, destroy_unavailable_domain: { target_type: 'UnavailableDomain', action: 'destroy' }.freeze, destroy_status: { target_type: 'Status', action: 'destroy' }.freeze, destroy_user_role: { target_type: 'UserRole', action: 'destroy' }.freeze, + destroy_canonical_email_block: { target_type: 'CanonicalEmailBlock', action: 'destroy' }.freeze, disable_2fa_user: { target_type: 'User', action: 'disable' }.freeze, disable_custom_emoji: { target_type: 'CustomEmoji', action: 'disable' }.freeze, disable_user: { target_type: 'User', action: 'disable' }.freeze, @@ -56,6 +60,7 @@ class Admin::ActionLogFilter update_custom_emoji: { target_type: 'CustomEmoji', action: 'update' }.freeze, update_status: { target_type: 'Status', action: 'update' }.freeze, update_user_role: { target_type: 'UserRole', action: 'update' }.freeze, + update_ip_block: { target_type: 'IpBlock', action: 'update' }.freeze, unblock_email_account: { target_type: 'Account', action: 'unblock_email' }.freeze, }.freeze diff --git a/app/models/canonical_email_block.rb b/app/models/canonical_email_block.rb index 94781386c..1eb69ac67 100644 --- a/app/models/canonical_email_block.rb +++ b/app/models/canonical_email_block.rb @@ -5,27 +5,30 @@ # # id :bigint(8) not null, primary key # canonical_email_hash :string default(""), not null -# reference_account_id :bigint(8) not null +# reference_account_id :bigint(8) # created_at :datetime not null # updated_at :datetime not null # class CanonicalEmailBlock < ApplicationRecord include EmailHelper + include Paginable - belongs_to :reference_account, class_name: 'Account' + belongs_to :reference_account, class_name: 'Account', optional: true validates :canonical_email_hash, presence: true, uniqueness: true + scope :matching_email, ->(email) { where(canonical_email_hash: email_to_canonical_email_hash(email)) } + + def to_log_human_identifier + canonical_email_hash + end + def email=(email) self.canonical_email_hash = email_to_canonical_email_hash(email) end def self.block?(email) - where(canonical_email_hash: email_to_canonical_email_hash(email)).exists? - end - - def self.find_blocks(email) - where(canonical_email_hash: email_to_canonical_email_hash(email)) + matching_email(email).exists? end end diff --git a/app/policies/canonical_email_block_policy.rb b/app/policies/canonical_email_block_policy.rb new file mode 100644 index 000000000..8d76075c9 --- /dev/null +++ b/app/policies/canonical_email_block_policy.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +class CanonicalEmailBlockPolicy < ApplicationPolicy + def index? + role.can?(:manage_blocks) + end + + def show? + role.can?(:manage_blocks) + end + + def test? + role.can?(:manage_blocks) + end + + def create? + role.can?(:manage_blocks) + end + + def destroy? + role.can?(:manage_blocks) + end +end diff --git a/app/serializers/rest/admin/canonical_email_block_serializer.rb b/app/serializers/rest/admin/canonical_email_block_serializer.rb new file mode 100644 index 000000000..fe385940a --- /dev/null +++ b/app/serializers/rest/admin/canonical_email_block_serializer.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class REST::Admin::CanonicalEmailBlockSerializer < ActiveModel::Serializer + attributes :id, :canonical_email_hash + + def id + object.id.to_s + end +end diff --git a/config/locales/en.yml b/config/locales/en.yml index 72ebfafba..0b721c163 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -239,6 +239,7 @@ en: confirm_user: Confirm User create_account_warning: Create Warning create_announcement: Create Announcement + create_canonical_email_block: Create E-mail Block create_custom_emoji: Create Custom Emoji create_domain_allow: Create Domain Allow create_domain_block: Create Domain Block @@ -248,6 +249,7 @@ en: create_user_role: Create Role demote_user: Demote User destroy_announcement: Delete Announcement + destroy_canonical_email_block: Delete E-mail Block destroy_custom_emoji: Delete Custom Emoji destroy_domain_allow: Delete Domain Allow destroy_domain_block: Delete Domain Block @@ -283,6 +285,7 @@ en: update_announcement: Update Announcement update_custom_emoji: Update Custom Emoji update_domain_block: Update Domain Block + update_ip_block: Update IP rule update_status: Update Post update_user_role: Update Role actions: @@ -294,6 +297,7 @@ en: confirm_user_html: "%{name} confirmed e-mail address of user %{target}" create_account_warning_html: "%{name} sent a warning to %{target}" create_announcement_html: "%{name} created new announcement %{target}" + create_canonical_email_block_html: "%{name} blocked e-mail with the hash %{target}" create_custom_emoji_html: "%{name} uploaded new emoji %{target}" create_domain_allow_html: "%{name} allowed federation with domain %{target}" create_domain_block_html: "%{name} blocked domain %{target}" @@ -303,6 +307,7 @@ en: create_user_role_html: "%{name} created %{target} role" demote_user_html: "%{name} demoted user %{target}" destroy_announcement_html: "%{name} deleted announcement %{target}" + destroy_canonical_email_block_html: "%{name} unblocked e-mail with the hash %{target}" destroy_custom_emoji_html: "%{name} deleted emoji %{target}" destroy_domain_allow_html: "%{name} disallowed federation with domain %{target}" destroy_domain_block_html: "%{name} unblocked domain %{target}" @@ -338,6 +343,7 @@ en: update_announcement_html: "%{name} updated announcement %{target}" update_custom_emoji_html: "%{name} updated emoji %{target}" update_domain_block_html: "%{name} updated domain block for %{target}" + update_ip_block_html: "%{name} changed rule for IP %{target}" update_status_html: "%{name} updated post by %{target}" update_user_role_html: "%{name} changed %{target} role" empty: No logs found. diff --git a/config/routes.rb b/config/routes.rb index 1168c9aee..8694a6436 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -602,6 +602,12 @@ Rails.application.routes.draw do post :measures, to: 'measures#create' post :dimensions, to: 'dimensions#create' post :retention, to: 'retention#create' + + resources :canonical_email_blocks, only: [:index, :create, :show, :destroy] do + collection do + post :test + end + end end end diff --git a/db/migrate/20220827195229_change_canonical_email_blocks_nullable.rb b/db/migrate/20220827195229_change_canonical_email_blocks_nullable.rb new file mode 100644 index 000000000..5b3ec4727 --- /dev/null +++ b/db/migrate/20220827195229_change_canonical_email_blocks_nullable.rb @@ -0,0 +1,5 @@ +class ChangeCanonicalEmailBlocksNullable < ActiveRecord::Migration[6.1] + def change + safety_assured { change_column :canonical_email_blocks, :reference_account_id, :bigint, null: true, default: nil } + end +end diff --git a/db/schema.rb b/db/schema.rb index 83fd9549c..db22f538a 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2022_08_24_164532) do +ActiveRecord::Schema.define(version: 2022_08_27_195229) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -296,7 +296,7 @@ ActiveRecord::Schema.define(version: 2022_08_24_164532) do create_table "canonical_email_blocks", force: :cascade do |t| t.string "canonical_email_hash", default: "", null: false - t.bigint "reference_account_id", null: false + t.bigint "reference_account_id" t.datetime "created_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false t.index ["canonical_email_hash"], name: "index_canonical_email_blocks_on_canonical_email_hash", unique: true diff --git a/lib/mastodon/canonical_email_blocks_cli.rb b/lib/mastodon/canonical_email_blocks_cli.rb index 64b72e603..ec228d466 100644 --- a/lib/mastodon/canonical_email_blocks_cli.rb +++ b/lib/mastodon/canonical_email_blocks_cli.rb @@ -18,17 +18,15 @@ module Mastodon When suspending a local user, a hash of a "canonical" version of their e-mail address is stored to prevent them from signing up again. - This command can be used to find whether a known email address is blocked, - and if so, which account it was attached to. + This command can be used to find whether a known email address is blocked. LONG_DESC def find(email) - accts = CanonicalEmailBlock.find_blocks(email).map(&:reference_account).map(&:acct).to_a + accts = CanonicalEmailBlock.matching_email(email) + if accts.empty? - say("#{email} is not blocked", :yellow) + say("#{email} is not blocked", :green) else - accts.each do |acct| - say(acct, :white) - end + say("#{email} is blocked", :red) end end @@ -40,24 +38,13 @@ module Mastodon This command allows removing a canonical email block. LONG_DESC def remove(email) - blocks = CanonicalEmailBlock.find_blocks(email) + blocks = CanonicalEmailBlock.matching_email(email) + if blocks.empty? - say("#{email} is not blocked", :yellow) + say("#{email} is not blocked", :green) else blocks.destroy_all - say("Removed canonical email block for #{email}", :green) - end - end - - private - - def color(processed, failed) - if !processed.zero? && failed.zero? - :green - elsif failed.zero? - :yellow - else - :red + say("Unblocked #{email}", :green) end end end From 2a7766dcc958ad18df761de50f9da5164f1a2e8f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 28 Aug 2022 03:37:55 +0200 Subject: [PATCH 356/652] Add admin API for managing e-mail domain blocks (#19066) --- .../admin/email_domain_blocks_controller.rb | 90 +++++++++++++++++++ app/models/email_domain_block.rb | 1 + .../admin/email_domain_block_serializer.rb | 9 ++ config/routes.rb | 1 + 4 files changed, 101 insertions(+) create mode 100644 app/controllers/api/v1/admin/email_domain_blocks_controller.rb create mode 100644 app/serializers/rest/admin/email_domain_block_serializer.rb diff --git a/app/controllers/api/v1/admin/email_domain_blocks_controller.rb b/app/controllers/api/v1/admin/email_domain_blocks_controller.rb new file mode 100644 index 000000000..ac16f70b0 --- /dev/null +++ b/app/controllers/api/v1/admin/email_domain_blocks_controller.rb @@ -0,0 +1,90 @@ +# frozen_string_literal: true + +class Api::V1::Admin::EmailDomainBlocksController < Api::BaseController + include Authorization + include AccountableConcern + + LIMIT = 100 + + before_action -> { authorize_if_got_token! :'admin:read', :'admin:read:email_domain_blocks' }, only: [:index, :show] + before_action -> { authorize_if_got_token! :'admin:write', :'admin:write:email_domain_blocks' }, except: [:index, :show] + before_action :set_email_domain_blocks, only: :index + before_action :set_email_domain_block, only: [:show, :destroy] + + after_action :verify_authorized + after_action :insert_pagination_headers, only: :index + + PAGINATION_PARAMS = %i( + limit + ).freeze + + def create + authorize :email_domain_block, :create? + + @email_domain_block = EmailDomainBlock.create!(resource_params) + log_action :create, @email_domain_block + + render json: @email_domain_block, serializer: REST::Admin::EmailDomainBlockSerializer + end + + def index + authorize :email_domain_block, :index? + render json: @email_domain_blocks, each_serializer: REST::Admin::EmailDomainBlockSerializer + end + + def show + authorize @email_domain_block, :show? + render json: @email_domain_block, serializer: REST::Admin::EmailDomainBlockSerializer + end + + def destroy + authorize @email_domain_block, :destroy? + + @email_domain_block.destroy! + log_action :destroy, @email_domain_block + + render json: @email_domain_block, serializer: REST::Admin::EmailDomainBlockSerializer + end + + private + + def set_email_domain_blocks + @email_domain_blocks = EmailDomainBlock.order(id: :desc).to_a_paginated_by_id(limit_param(LIMIT), params_slice(:max_id, :since_id, :min_id)) + end + + def set_email_domain_block + @email_domain_block = EmailDomainBlock.find(params[:id]) + end + + def resource_params + params.permit(:domain) + end + + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + + def next_path + api_v1_admin_email_domain_blocks_url(pagination_params(max_id: pagination_max_id)) if records_continue? + end + + def prev_path + api_v1_admin_email_domain_blocks_url(pagination_params(min_id: pagination_since_id)) unless @email_domain_blocks.empty? + end + + def pagination_max_id + @email_domain_blocks.last.id + end + + def pagination_since_id + @email_domain_blocks.first.id + end + + def records_continue? + @email_domain_blocks.size == limit_param(LIMIT) + end + + def pagination_params(core_params) + params.slice(*PAGINATION_PARAMS).permit(*PAGINATION_PARAMS).merge(core_params) + end +end diff --git a/app/models/email_domain_block.rb b/app/models/email_domain_block.rb index 661f6727d..10a0e5102 100644 --- a/app/models/email_domain_block.rb +++ b/app/models/email_domain_block.rb @@ -17,6 +17,7 @@ class EmailDomainBlock < ApplicationRecord ) include DomainNormalizable + include Paginable belongs_to :parent, class_name: 'EmailDomainBlock', optional: true has_many :children, class_name: 'EmailDomainBlock', foreign_key: :parent_id, inverse_of: :parent, dependent: :destroy diff --git a/app/serializers/rest/admin/email_domain_block_serializer.rb b/app/serializers/rest/admin/email_domain_block_serializer.rb new file mode 100644 index 000000000..a026ff680 --- /dev/null +++ b/app/serializers/rest/admin/email_domain_block_serializer.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class REST::Admin::EmailDomainBlockSerializer < ActiveModel::Serializer + attributes :id, :domain, :created_at, :history + + def id + object.id.to_s + end +end diff --git a/config/routes.rb b/config/routes.rb index 8694a6436..13a4a1618 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -591,6 +591,7 @@ Rails.application.routes.draw do resources :domain_allows, only: [:index, :show, :create, :destroy] resources :domain_blocks, only: [:index, :show, :update, :create, :destroy] + resources :email_domain_blocks, only: [:index, :show, :create, :destroy] resources :ip_blocks, only: [:index, :show, :update, :create, :destroy] namespace :trends do From c99c106ef08d44591d6b7802ea6f9914ea2842bd Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 28 Aug 2022 03:45:07 +0200 Subject: [PATCH 357/652] Change following and followers API to be accessible without being logged in (#18964) --- app/controllers/api/v1/accounts/follower_accounts_controller.rb | 2 +- .../api/v1/accounts/following_accounts_controller.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/api/v1/accounts/follower_accounts_controller.rb b/app/controllers/api/v1/accounts/follower_accounts_controller.rb index a665863eb..b61de13b9 100644 --- a/app/controllers/api/v1/accounts/follower_accounts_controller.rb +++ b/app/controllers/api/v1/accounts/follower_accounts_controller.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class Api::V1::Accounts::FollowerAccountsController < Api::BaseController - before_action -> { doorkeeper_authorize! :read, :'read:accounts' } + before_action -> { authorize_if_got_token! :read, :'read:accounts' } before_action :set_account after_action :insert_pagination_headers diff --git a/app/controllers/api/v1/accounts/following_accounts_controller.rb b/app/controllers/api/v1/accounts/following_accounts_controller.rb index 7d885a212..37d3c2d78 100644 --- a/app/controllers/api/v1/accounts/following_accounts_controller.rb +++ b/app/controllers/api/v1/accounts/following_accounts_controller.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class Api::V1::Accounts::FollowingAccountsController < Api::BaseController - before_action -> { doorkeeper_authorize! :read, :'read:accounts' } + before_action -> { authorize_if_got_token! :read, :'read:accounts' } before_action :set_account after_action :insert_pagination_headers From c57907737a35d05d4bb936acd662df6ce725456f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 28 Aug 2022 03:45:19 +0200 Subject: [PATCH 358/652] Change search API to be accessible without being logged in (#18963) But with the resolve option turned off --- app/controllers/api/v2/search_controller.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/controllers/api/v2/search_controller.rb b/app/controllers/api/v2/search_controller.rb index a30560133..e384ecbaf 100644 --- a/app/controllers/api/v2/search_controller.rb +++ b/app/controllers/api/v2/search_controller.rb @@ -5,8 +5,7 @@ class Api::V2::SearchController < Api::BaseController RESULTS_LIMIT = 20 - before_action -> { doorkeeper_authorize! :read, :'read:search' } - before_action :require_user! + before_action -> { authorize_if_got_token! :read, :'read:search' } def index @search = Search.new(search_results) @@ -24,7 +23,7 @@ class Api::V2::SearchController < Api::BaseController params[:q], current_account, limit_param(RESULTS_LIMIT), - search_params.merge(resolve: truthy_param?(:resolve), exclude_unreviewed: truthy_param?(:exclude_unreviewed)) + search_params.merge(resolve: user_signed_in? ? truthy_param?(:resolve) : false, exclude_unreviewed: truthy_param?(:exclude_unreviewed)) ) end From 546672e292dc3218e996048464c4c52e5d00f766 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 28 Aug 2022 04:00:39 +0200 Subject: [PATCH 359/652] Change "Allow trends without prior review" setting to include statuses (#17977) * Change "Allow trends without prior review" setting to include posts * Fix i18n-tasks --- app/javascript/styles/mastodon/accounts.scss | 9 ++++++++- app/javascript/styles/mastodon/forms.scss | 3 ++- app/models/account.rb | 4 ++++ app/views/admin/settings/edit.html.haml | 2 +- config/i18n-tasks.yml | 2 +- config/initializers/simple_form.rb | 5 ++++- config/locales/en.yml | 4 ++-- config/locales/simple_form.en.yml | 1 + 8 files changed, 23 insertions(+), 7 deletions(-) diff --git a/app/javascript/styles/mastodon/accounts.scss b/app/javascript/styles/mastodon/accounts.scss index 54b65bfc8..c007eb4b5 100644 --- a/app/javascript/styles/mastodon/accounts.scss +++ b/app/javascript/styles/mastodon/accounts.scss @@ -202,7 +202,8 @@ } .account-role, -.simple_form .recommended { +.simple_form .recommended, +.simple_form .not_recommended { display: inline-block; padding: 4px 6px; cursor: default; @@ -227,6 +228,12 @@ } } +.simple_form .not_recommended { + color: lighten($error-red, 12%); + background-color: rgba(lighten($error-red, 12%), 0.1); + border-color: rgba(lighten($error-red, 12%), 0.5); +} + .account__header__fields { max-width: 100vw; padding: 0; diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss index 990903859..a6419821f 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -102,7 +102,8 @@ code { } } - .recommended { + .recommended, + .not_recommended { position: absolute; margin: 0 4px; margin-top: -2px; diff --git a/app/models/account.rb b/app/models/account.rb index d25afeb89..1be7b4d12 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -258,6 +258,10 @@ class Account < ApplicationRecord update!(memorial: true) end + def trendable + boolean_with_default('trendable', Setting.trendable_by_default) + end + def sign? true end diff --git a/app/views/admin/settings/edit.html.haml b/app/views/admin/settings/edit.html.haml index d7896bbc0..64687b7a6 100644 --- a/app/views/admin/settings/edit.html.haml +++ b/app/views/admin/settings/edit.html.haml @@ -81,7 +81,7 @@ = f.input :trends, as: :boolean, wrapper: :with_label, label: t('admin.settings.trends.title'), hint: t('admin.settings.trends.desc_html') .fields-group - = f.input :trendable_by_default, as: :boolean, wrapper: :with_label, label: t('admin.settings.trendable_by_default.title'), hint: t('admin.settings.trendable_by_default.desc_html') + = f.input :trendable_by_default, as: :boolean, wrapper: :with_label, label: t('admin.settings.trendable_by_default.title'), hint: t('admin.settings.trendable_by_default.desc_html'), recommended: :not_recommended .fields-group = f.input :noindex, as: :boolean, wrapper: :with_label, label: t('admin.settings.default_noindex.title'), hint: t('admin.settings.default_noindex.desc_html') diff --git a/config/i18n-tasks.yml b/config/i18n-tasks.yml index 42a7afb33..1bebae5e9 100644 --- a/config/i18n-tasks.yml +++ b/config/i18n-tasks.yml @@ -51,7 +51,7 @@ ignore_unused: - 'activerecord.errors.*' - '{devise,pagination,doorkeeper}.*' - '{date,datetime,time,number}.*' - - 'simple_form.{yes,no,recommended}' + - 'simple_form.{yes,no,recommended,not_recommended}' - 'simple_form.{placeholders,hints,labels}.*' - 'simple_form.{error_notification,required}.:' - 'errors.messages.*' diff --git a/config/initializers/simple_form.rb b/config/initializers/simple_form.rb index 3a2097d2f..92cffc5a2 100644 --- a/config/initializers/simple_form.rb +++ b/config/initializers/simple_form.rb @@ -11,7 +11,10 @@ end module RecommendedComponent def recommended(_wrapper_options = nil) return unless options[:recommended] - options[:label_text] = ->(raw_label_text, _required_label_text, _label_present) { safe_join([raw_label_text, ' ', content_tag(:span, I18n.t('simple_form.recommended'), class: 'recommended')]) } + + key = options[:recommended].is_a?(Symbol) ? options[:recommended] : :recommended + options[:label_text] = ->(raw_label_text, _required_label_text, _label_present) { safe_join([raw_label_text, ' ', content_tag(:span, I18n.t(key, scope: 'simple_form'), class: key)]) } + nil end end diff --git a/config/locales/en.yml b/config/locales/en.yml index 0b721c163..9f047f523 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -808,8 +808,8 @@ en: title: Allow unauthenticated access to public timeline title: Site settings trendable_by_default: - desc_html: Affects hashtags that have not been previously disallowed - title: Allow hashtags to trend without prior review + desc_html: Specific trending content can still be explicitly disallowed + title: Allow trends without prior review trends: desc_html: Publicly display previously reviewed content that is currently trending title: Trends diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index 28f78d500..ddc83e896 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -253,6 +253,7 @@ en: events: Enabled events url: Endpoint URL 'no': 'No' + not_recommended: Not recommended recommended: Recommended required: mark: "*" From 4aa3b9bd016ef5d9ce9bb63f260b7f6e35b649ff Mon Sep 17 00:00:00 2001 From: luzpaz Date: Sun, 28 Aug 2022 11:44:34 -0400 Subject: [PATCH 360/652] Fix typos (#18604) * Fix typos Found via `codespell -q 3 -S ./CHANGELOG.md,./AUTHORS.md,./config/locales,./app/javascript/mastodon/locales -L ba,keypair,medias,pixelx,ro` * Follow-up typo fix --- .github/workflows/linter.yml | 2 +- lib/mastodon/search_cli.rb | 2 +- lib/tasks/mastodon.rake | 2 +- spec/lib/request_spec.rb | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml index f77a9720e..cd8cb12c4 100644 --- a/.github/workflows/linter.yml +++ b/.github/workflows/linter.yml @@ -55,7 +55,7 @@ jobs: with: node-version: 16.x cache: yarn - - name: Intall dependencies + - name: Install dependencies run: yarn install --frozen-lockfile - name: Set-up RuboCop Problem Mathcher uses: r7kamura/rubocop-problem-matchers-action@v1 diff --git a/lib/mastodon/search_cli.rb b/lib/mastodon/search_cli.rb index b579ebc14..b206854ab 100644 --- a/lib/mastodon/search_cli.rb +++ b/lib/mastodon/search_cli.rb @@ -30,7 +30,7 @@ module Mastodon changed since the last run. Index upgrades erase index data. Even if creating or upgrading indices is not necessary, data from the - database will be imported into the indices, unless overriden with --no-import. + database will be imported into the indices, unless overridden with --no-import. LONG_DESC def deploy if options[:concurrency] < 1 diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake index d652468b3..0ccfc9f29 100644 --- a/lib/tasks/mastodon.rake +++ b/lib/tasks/mastodon.rake @@ -11,7 +11,7 @@ namespace :mastodon do # When the application code gets loaded, it runs `lib/mastodon/redis_configuration.rb`. # This happens before application environment configuration and sets REDIS_URL etc. # These variables are then used even when REDIS_HOST etc. are changed, so clear them - # out so they don't interfer with our new configuration. + # out so they don't interfere with our new configuration. ENV.delete('REDIS_URL') ENV.delete('CACHE_REDIS_URL') ENV.delete('SIDEKIQ_REDIS_URL') diff --git a/spec/lib/request_spec.rb b/spec/lib/request_spec.rb index 2d300f18d..5eccf3201 100644 --- a/spec/lib/request_spec.rb +++ b/spec/lib/request_spec.rb @@ -63,7 +63,7 @@ describe Request do expect(a_request(:get, 'http://example.com').with(headers: subject.headers)).to have_been_made end - it 'closes underlaying connection' do + it 'closes underlying connection' do expect_any_instance_of(HTTP::Client).to receive(:close) expect { |block| subject.perform &block }.to yield_control end From 90917b305a0389f7c851059331852006a4233094 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 29 Aug 2022 10:02:40 +0200 Subject: [PATCH 361/652] Fix WebUI error in development mode (#19078) Caused by using JSX features without importing React --- app/javascript/mastodon/utils/icons.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/javascript/mastodon/utils/icons.js b/app/javascript/mastodon/utils/icons.js index be566032e..c3e362e39 100644 --- a/app/javascript/mastodon/utils/icons.js +++ b/app/javascript/mastodon/utils/icons.js @@ -1,3 +1,5 @@ +import React from 'react'; + // Copied from emoji-mart for consistency with emoji picker and since // they don't export the icons in the package export const loupeIcon = ( From 06b64f2e19fc3749fe7b1bc24632821ad6b4961c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Sep 2022 01:12:53 +0900 Subject: [PATCH 362/652] Bump workbox-webpack-plugin from 6.5.3 to 6.5.4 (#19093) Bumps [workbox-webpack-plugin](https://github.com/googlechrome/workbox) from 6.5.3 to 6.5.4. - [Release notes](https://github.com/googlechrome/workbox/releases) - [Commits](https://github.com/googlechrome/workbox/compare/v6.5.3...v6.5.4) --- updated-dependencies: - dependency-name: workbox-webpack-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 234 +++++++++++++++++++++++++++++++-------------------- 2 files changed, 145 insertions(+), 91 deletions(-) diff --git a/package.json b/package.json index 6973afeaa..d24051c99 100644 --- a/package.json +++ b/package.json @@ -139,7 +139,7 @@ "workbox-precaching": "^6.5.3", "workbox-routing": "^6.5.3", "workbox-strategies": "^6.5.3", - "workbox-webpack-plugin": "^6.5.3", + "workbox-webpack-plugin": "^6.5.4", "workbox-window": "^6.5.3", "ws": "^8.8.1" }, diff --git a/yarn.lock b/yarn.lock index be3db7a96..90e56811d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -37,6 +37,11 @@ dependencies: "@babel/highlight" "^7.18.6" +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.18.6": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.13.tgz#6aff7b350a1e8c3e40b029e46cbe78e24a913483" + integrity sha512-5yUzC5LqyTFp2HLmDoxGQelcdYgSpP9xsnMWBphAscOdFrHSAVbLNzWiy32sVNDqJRDiJK6klfDnAgu6PAGSHw== + "@babel/compat-data@^7.17.10": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.6.tgz#8b37d24e88e8e21c499d4328db80577d8882fa53" @@ -107,7 +112,7 @@ "@jridgewell/gen-mapping" "^0.3.0" jsesc "^2.5.1" -"@babel/generator@^7.18.13": +"@babel/generator@^7.18.13", "@babel/generator@^7.18.6": version "7.18.13" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.13.tgz#59550cbb9ae79b8def15587bdfbaa388c4abf212" integrity sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ== @@ -149,7 +154,7 @@ browserslist "^4.20.2" semver "^6.3.0" -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9": +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.6", "@babel/helper-compilation-targets@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf" integrity sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg== @@ -180,7 +185,7 @@ "@babel/helper-annotate-as-pure" "^7.18.6" regexpu-core "^5.1.0" -"@babel/helper-define-polyfill-provider@^0.3.2": +"@babel/helper-define-polyfill-provider@^0.3.1", "@babel/helper-define-polyfill-provider@^0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz#bd10d0aca18e8ce012755395b05a79f45eca5073" integrity sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg== @@ -331,7 +336,7 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": +"@babel/helper-skip-transparent-expression-wrappers@^7.18.6", "@babel/helper-skip-transparent-expression-wrappers@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz#778d87b3a758d90b471e7b9918f34a9a02eb5818" integrity sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw== @@ -426,7 +431,7 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.6.tgz#845338edecad65ebffef058d3be851f1d28a63bc" integrity sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw== -"@babel/parser@^7.18.10", "@babel/parser@^7.18.13": +"@babel/parser@^7.18.10", "@babel/parser@^7.18.13", "@babel/parser@^7.18.6": version "7.18.13" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.13.tgz#5b2dd21cae4a2c5145f1fbd8ca103f9313d3b7e4" integrity sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg== @@ -607,7 +612,7 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.18.9": +"@babel/plugin-proposal-optional-chaining@^7.18.6", "@babel/plugin-proposal-optional-chaining@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993" integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w== @@ -1044,7 +1049,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-parameters@^7.18.8": +"@babel/plugin-transform-parameters@^7.18.6", "@babel/plugin-transform-parameters@^7.18.8": version "7.18.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz#ee9f1a0ce6d78af58d0956a9378ea3427cccb48a" integrity sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg== @@ -1865,7 +1870,7 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" -"@jridgewell/gen-mapping@^0.3.2": +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== @@ -2795,7 +2800,7 @@ array-flatten@^2.1.0: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== -array-includes@^3.1.4, array-includes@^3.1.5: +array-includes@^3.1.3, array-includes@^3.1.4, array-includes@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== @@ -6242,6 +6247,11 @@ idb@^6.1.4: resolved "https://registry.yarnpkg.com/idb/-/idb-6.1.5.tgz#dbc53e7adf1ac7c59f9b2bf56e00b4ea4fce8c7b" integrity sha512-IJtugpKkiVXQn5Y+LteyBCNk1N8xpGV3wWZk9EVtZWH8DYkjBn0bX1XnGP9RkyZF0sAcywa6unHqSWKe7q4LGw== +idb@^7.0.1: + version "7.0.2" + resolved "https://registry.yarnpkg.com/idb/-/idb-7.0.2.tgz#7a067e20dd16539938e456814b7d714ba8db3892" + integrity sha512-jjKrT1EnyZewQ/gCBb/eyiYrhGzws2FeY92Yx8qT9S9GeQAmo4JFVIiWRIfKW/6Ob9A+UDAOW9j9jn58fy2HIg== + ieee754@^1.1.4: version "1.1.13" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" @@ -12265,25 +12275,25 @@ word-wrap@^1.2.3, word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -workbox-background-sync@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.5.3.tgz#7c66c1836aeca6f3762dc48d17a1852a33b3168c" - integrity sha512-0DD/V05FAcek6tWv9XYj2w5T/plxhDSpclIcAGjA/b7t/6PdaRkQ7ZgtAX6Q/L7kV7wZ8uYRJUoH11VjNipMZw== +workbox-background-sync@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.5.4.tgz#3141afba3cc8aa2ae14c24d0f6811374ba8ff6a9" + integrity sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g== dependencies: - idb "^6.1.4" - workbox-core "6.5.3" + idb "^7.0.1" + workbox-core "6.5.4" -workbox-broadcast-update@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.5.3.tgz#fc2ad79cf507e22950cda9baf1e9a0ccc43f31bc" - integrity sha512-4AwCIA5DiDrYhlN+Miv/fp5T3/whNmSL+KqhTwRBTZIL6pvTgE4lVuRzAt1JltmqyMcQ3SEfCdfxczuI4kwFQg== +workbox-broadcast-update@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.5.4.tgz#8441cff5417cd41f384ba7633ca960a7ffe40f66" + integrity sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw== dependencies: - workbox-core "6.5.3" + workbox-core "6.5.4" -workbox-build@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.5.3.tgz#38e3f286d63d2745bff4d1478bb3a6ab5c8b1170" - integrity sha512-8JNHHS7u13nhwIYCDea9MNXBNPHXCs5KDZPKI/ZNTr3f4sMGoD7hgFGecbyjX1gw4z6e9bMpMsOEJNyH5htA/w== +workbox-build@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.5.4.tgz#7d06d31eb28a878817e1c991c05c5b93409f0389" + integrity sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA== dependencies: "@apideck/better-ajv-errors" "^0.3.1" "@babel/core" "^7.11.1" @@ -12307,35 +12317,48 @@ workbox-build@6.5.3: strip-comments "^2.0.1" tempy "^0.6.0" upath "^1.2.0" - workbox-background-sync "6.5.3" - workbox-broadcast-update "6.5.3" - workbox-cacheable-response "6.5.3" - workbox-core "6.5.3" - workbox-expiration "6.5.3" - workbox-google-analytics "6.5.3" - workbox-navigation-preload "6.5.3" - workbox-precaching "6.5.3" - workbox-range-requests "6.5.3" - workbox-recipes "6.5.3" - workbox-routing "6.5.3" - workbox-strategies "6.5.3" - workbox-streams "6.5.3" - workbox-sw "6.5.3" - workbox-window "6.5.3" + workbox-background-sync "6.5.4" + workbox-broadcast-update "6.5.4" + workbox-cacheable-response "6.5.4" + workbox-core "6.5.4" + workbox-expiration "6.5.4" + workbox-google-analytics "6.5.4" + workbox-navigation-preload "6.5.4" + workbox-precaching "6.5.4" + workbox-range-requests "6.5.4" + workbox-recipes "6.5.4" + workbox-routing "6.5.4" + workbox-strategies "6.5.4" + workbox-streams "6.5.4" + workbox-sw "6.5.4" + workbox-window "6.5.4" -workbox-cacheable-response@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.5.3.tgz#b1f8c2bc599a7be8f7e3c262535629c558738e47" - integrity sha512-6JE/Zm05hNasHzzAGKDkqqgYtZZL2H06ic2GxuRLStA4S/rHUfm2mnLFFXuHAaGR1XuuYyVCEey1M6H3PdZ7SQ== +workbox-cacheable-response@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.5.4.tgz#a5c6ec0c6e2b6f037379198d4ef07d098f7cf137" + integrity sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug== dependencies: - workbox-core "6.5.3" + workbox-core "6.5.4" workbox-core@6.5.3: version "6.5.3" resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.5.3.tgz#bca038a9ef0d7a634a6db2a60f45313ed22ac249" integrity sha512-Bb9ey5n/M9x+l3fBTlLpHt9ASTzgSGj6vxni7pY72ilB/Pb3XtN+cZ9yueboVhD5+9cNQrC9n/E1fSrqWsUz7Q== -workbox-expiration@6.5.3, workbox-expiration@^6.5.3: +workbox-core@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.5.4.tgz#df48bf44cd58bb1d1726c49b883fb1dffa24c9ba" + integrity sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q== + +workbox-expiration@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.5.4.tgz#501056f81e87e1d296c76570bb483ce5e29b4539" + integrity sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ== + dependencies: + idb "^7.0.1" + workbox-core "6.5.4" + +workbox-expiration@^6.5.3: version "6.5.3" resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.5.3.tgz#efc0811f371a2ede1052b9de1c4f072b71d50503" integrity sha512-jzYopYR1zD04ZMdlbn/R2Ik6ixiXbi15c9iX5H8CTi6RPDz7uhvMLZPKEndZTpfgmUk8mdmT9Vx/AhbuCl5Sqw== @@ -12343,24 +12366,33 @@ workbox-expiration@6.5.3, workbox-expiration@^6.5.3: idb "^6.1.4" workbox-core "6.5.3" -workbox-google-analytics@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.5.3.tgz#cc8c3a61f449131660a4ed2f5362d9a3599b18fe" - integrity sha512-3GLCHotz5umoRSb4aNQeTbILETcrTVEozSfLhHSBaegHs1PnqCmN0zbIy2TjTpph2AGXiNwDrWGF0AN+UgDNTw== +workbox-google-analytics@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz#c74327f80dfa4c1954cbba93cd7ea640fe7ece7d" + integrity sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg== dependencies: - workbox-background-sync "6.5.3" - workbox-core "6.5.3" - workbox-routing "6.5.3" - workbox-strategies "6.5.3" + workbox-background-sync "6.5.4" + workbox-core "6.5.4" + workbox-routing "6.5.4" + workbox-strategies "6.5.4" -workbox-navigation-preload@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.5.3.tgz#81b74f598b11aa07e2cf1c21af7a826a4f0f70b3" - integrity sha512-bK1gDFTc5iu6lH3UQ07QVo+0ovErhRNGvJJO/1ngknT0UQ702nmOUhoN9qE5mhuQSrnK+cqu7O7xeaJ+Rd9Tmg== +workbox-navigation-preload@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.5.4.tgz#ede56dd5f6fc9e860a7e45b2c1a8f87c1c793212" + integrity sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng== dependencies: - workbox-core "6.5.3" + workbox-core "6.5.4" -workbox-precaching@6.5.3, workbox-precaching@^6.5.3: +workbox-precaching@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.5.4.tgz#740e3561df92c6726ab5f7471e6aac89582cab72" + integrity sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg== + dependencies: + workbox-core "6.5.4" + workbox-routing "6.5.4" + workbox-strategies "6.5.4" + +workbox-precaching@^6.5.3: version "6.5.3" resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.5.3.tgz#c870312b2ef901d790ab9e48da084e776c62af47" integrity sha512-sjNfgNLSsRX5zcc63H/ar/hCf+T19fRtTqvWh795gdpghWb5xsfEkecXEvZ8biEi1QD7X/ljtHphdaPvXDygMQ== @@ -12369,24 +12401,24 @@ workbox-precaching@6.5.3, workbox-precaching@^6.5.3: workbox-routing "6.5.3" workbox-strategies "6.5.3" -workbox-range-requests@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.5.3.tgz#e624ac82ff266a5e4f236d055797def07949d941" - integrity sha512-pGCP80Bpn/0Q0MQsfETSfmtXsQcu3M2QCJwSFuJ6cDp8s2XmbUXkzbuQhCUzKR86ZH2Vex/VUjb2UaZBGamijA== +workbox-range-requests@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz#86b3d482e090433dab38d36ae031b2bb0bd74399" + integrity sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg== dependencies: - workbox-core "6.5.3" + workbox-core "6.5.4" -workbox-recipes@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-6.5.3.tgz#15beac9d8ae7a3a1c100218094a824b4dd3fd59a" - integrity sha512-IcgiKYmbGiDvvf3PMSEtmwqxwfQ5zwI7OZPio3GWu4PfehA8jI8JHI3KZj+PCfRiUPZhjQHJ3v1HbNs+SiSkig== +workbox-recipes@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-6.5.4.tgz#cca809ee63b98b158b2702dcfb741b5cc3e24acb" + integrity sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA== dependencies: - workbox-cacheable-response "6.5.3" - workbox-core "6.5.3" - workbox-expiration "6.5.3" - workbox-precaching "6.5.3" - workbox-routing "6.5.3" - workbox-strategies "6.5.3" + workbox-cacheable-response "6.5.4" + workbox-core "6.5.4" + workbox-expiration "6.5.4" + workbox-precaching "6.5.4" + workbox-routing "6.5.4" + workbox-strategies "6.5.4" workbox-routing@6.5.3, workbox-routing@^6.5.3: version "6.5.3" @@ -12395,6 +12427,13 @@ workbox-routing@6.5.3, workbox-routing@^6.5.3: dependencies: workbox-core "6.5.3" +workbox-routing@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.5.4.tgz#6a7fbbd23f4ac801038d9a0298bc907ee26fe3da" + integrity sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg== + dependencies: + workbox-core "6.5.4" + workbox-strategies@6.5.3, workbox-strategies@^6.5.3: version "6.5.3" resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.5.3.tgz#4bea9a48fee16cf43766e0d8138296773c8a9783" @@ -12402,31 +12441,46 @@ workbox-strategies@6.5.3, workbox-strategies@^6.5.3: dependencies: workbox-core "6.5.3" -workbox-streams@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.5.3.tgz#b6860290031caa7d0e46ad7142315c94359c780b" - integrity sha512-vN4Qi8o+b7zj1FDVNZ+PlmAcy1sBoV7SC956uhqYvZ9Sg1fViSbOpydULOssVJ4tOyKRifH/eoi6h99d+sJ33w== +workbox-strategies@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.5.4.tgz#4edda035b3c010fc7f6152918370699334cd204d" + integrity sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw== dependencies: - workbox-core "6.5.3" - workbox-routing "6.5.3" + workbox-core "6.5.4" -workbox-sw@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.5.3.tgz#cd2f0c086f4496acd25774ed02c48504189bebdd" - integrity sha512-BQBzm092w+NqdIEF2yhl32dERt9j9MDGUTa2Eaa+o3YKL4Qqw55W9yQC6f44FdAHdAJrJvp0t+HVrfh8AiGj8A== +workbox-streams@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.5.4.tgz#1cb3c168a6101df7b5269d0353c19e36668d7d69" + integrity sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg== + dependencies: + workbox-core "6.5.4" + workbox-routing "6.5.4" -workbox-webpack-plugin@^6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.3.tgz#c37bb323be4952311565c07db51054fe59c87d73" - integrity sha512-Es8Xr02Gi6Kc3zaUwR691ZLy61hz3vhhs5GztcklQ7kl5k2qAusPh0s6LF3wEtlpfs9ZDErnmy5SErwoll7jBA== +workbox-sw@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.5.4.tgz#d93e9c67924dd153a61367a4656ff4d2ae2ed736" + integrity sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA== + +workbox-webpack-plugin@^6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.4.tgz#baf2d3f4b8f435f3469887cf4fba2b7fac3d0fd7" + integrity sha512-LmWm/zoaahe0EGmMTrSLUi+BjyR3cdGEfU3fS6PN1zKFYbqAKuQ+Oy/27e4VSXsyIwAw8+QDfk1XHNGtZu9nQg== dependencies: fast-json-stable-stringify "^2.1.0" pretty-bytes "^5.4.1" upath "^1.2.0" webpack-sources "^1.4.3" - workbox-build "6.5.3" + workbox-build "6.5.4" -workbox-window@6.5.3, workbox-window@^6.5.3: +workbox-window@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.5.4.tgz#d991bc0a94dff3c2dbb6b84558cff155ca878e91" + integrity sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug== + dependencies: + "@types/trusted-types" "^2.0.2" + workbox-core "6.5.4" + +workbox-window@^6.5.3: version "6.5.3" resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.5.3.tgz#4ade70056cb73477ef1cd8fea7cfd0ecbd825c7f" integrity sha512-GnJbx1kcKXDtoJBVZs/P7ddP0Yt52NNy4nocjBpYPiRhMqTpJCNrSL+fGHZ/i/oP6p/vhE8II0sA6AZGKGnssw== From 59b53c6869caeff1571f04fe277f6db73f2c73b2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Sep 2022 01:14:28 +0900 Subject: [PATCH 363/652] Bump eslint-plugin-react from 7.30.1 to 7.31.1 (#19082) Bumps [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) from 7.30.1 to 7.31.1. - [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases) - [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md) - [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.30.1...v7.31.1) --- updated-dependencies: - dependency-name: eslint-plugin-react dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 18 +++++------------- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index d24051c99..1f28fd577 100644 --- a/package.json +++ b/package.json @@ -152,7 +152,7 @@ "eslint-plugin-import": "~2.26.0", "eslint-plugin-jsx-a11y": "~6.6.1", "eslint-plugin-promise": "~6.0.0", - "eslint-plugin-react": "~7.30.1", + "eslint-plugin-react": "~7.31.1", "jest": "^28.1.3", "jest-environment-jsdom": "^28.1.3", "postcss-scss": "^4.0.4", diff --git a/yarn.lock b/yarn.lock index 90e56811d..0ac565e75 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5049,10 +5049,10 @@ eslint-plugin-promise@~6.0.0: resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz#017652c07c9816413a41e11c30adc42c3d55ff18" integrity sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw== -eslint-plugin-react@~7.30.1: - version "7.30.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.30.1.tgz#2be4ab23ce09b5949c6631413ba64b2810fd3e22" - integrity sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg== +eslint-plugin-react@~7.31.1: + version "7.31.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.1.tgz#d29793ed27743f3ed8a473c347b1bf5a0a8fb9af" + integrity sha512-j4/2xWqt/R7AZzG8CakGHA6Xa/u7iR8Q3xCxY+AUghdT92bnIDOBEefV456OeH0QvBcroVc0eyvrrLSyQGYIfg== dependencies: array-includes "^3.1.5" array.prototype.flatmap "^1.3.0" @@ -7519,15 +7519,7 @@ jsonpointer@^5.0.0: resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.0.tgz#f802669a524ec4805fa7389eadbc9921d5dc8072" integrity sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg== -"jsx-ast-utils@^2.4.1 || ^3.0.0": - version "3.2.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b" - integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA== - dependencies: - array-includes "^3.1.3" - object.assign "^4.1.2" - -jsx-ast-utils@^3.3.2: +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.2.tgz#afe5efe4332cd3515c065072bd4d6b0aa22152bd" integrity sha512-4ZCADZHRkno244xlNnn4AOG6sRQ7iBZ5BbgZ4vW4y5IZw7cVUD1PPeblm1xx/nfmMxPdt/LHsXZW8z/j58+l9Q== From dcd81f05bcf5bc6a395a09ef79cff8380c397297 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Sep 2022 01:15:32 +0900 Subject: [PATCH 364/652] Bump sidekiq from 6.5.5 to 6.5.6 (#19081) Bumps [sidekiq](https://github.com/mperham/sidekiq) from 6.5.5 to 6.5.6. - [Release notes](https://github.com/mperham/sidekiq/releases) - [Changelog](https://github.com/mperham/sidekiq/blob/main/Changes.md) - [Commits](https://github.com/mperham/sidekiq/compare/v6.5.5...v6.5.6) --- updated-dependencies: - dependency-name: sidekiq dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 13357f600..e4a19ec30 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -610,10 +610,10 @@ GEM activerecord (>= 4.0.0) railties (>= 4.0.0) semantic_range (3.0.0) - sidekiq (6.5.5) - connection_pool (>= 2.2.2) + sidekiq (6.5.6) + connection_pool (>= 2.2.5) rack (~> 2.0) - redis (>= 4.5.0) + redis (>= 4.5.0, < 5) sidekiq-bulk (0.2.0) sidekiq sidekiq-scheduler (4.0.2) From 5073a755d7f1f9060ea6e4cf39846df89d771a65 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Sep 2022 01:16:06 +0900 Subject: [PATCH 365/652] Bump rails from 6.1.6 to 6.1.6.1 (#18831) Bumps [rails](https://github.com/rails/rails) from 6.1.6 to 6.1.6.1. - [Release notes](https://github.com/rails/rails/releases) - [Commits](https://github.com/rails/rails/compare/v6.1.6...v6.1.6.1) --- updated-dependencies: - dependency-name: rails dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 110 +++++++++++++++++++++++++-------------------------- 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index e4a19ec30..6cb9c7ba2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -10,40 +10,40 @@ GIT GEM remote: https://rubygems.org/ specs: - actioncable (6.1.6) - actionpack (= 6.1.6) - activesupport (= 6.1.6) + actioncable (6.1.6.1) + actionpack (= 6.1.6.1) + activesupport (= 6.1.6.1) nio4r (~> 2.0) websocket-driver (>= 0.6.1) - actionmailbox (6.1.6) - actionpack (= 6.1.6) - activejob (= 6.1.6) - activerecord (= 6.1.6) - activestorage (= 6.1.6) - activesupport (= 6.1.6) + actionmailbox (6.1.6.1) + actionpack (= 6.1.6.1) + activejob (= 6.1.6.1) + activerecord (= 6.1.6.1) + activestorage (= 6.1.6.1) + activesupport (= 6.1.6.1) mail (>= 2.7.1) - actionmailer (6.1.6) - actionpack (= 6.1.6) - actionview (= 6.1.6) - activejob (= 6.1.6) - activesupport (= 6.1.6) + actionmailer (6.1.6.1) + actionpack (= 6.1.6.1) + actionview (= 6.1.6.1) + activejob (= 6.1.6.1) + activesupport (= 6.1.6.1) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 2.0) - actionpack (6.1.6) - actionview (= 6.1.6) - activesupport (= 6.1.6) + actionpack (6.1.6.1) + actionview (= 6.1.6.1) + activesupport (= 6.1.6.1) rack (~> 2.0, >= 2.0.9) rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.2.0) - actiontext (6.1.6) - actionpack (= 6.1.6) - activerecord (= 6.1.6) - activestorage (= 6.1.6) - activesupport (= 6.1.6) + actiontext (6.1.6.1) + actionpack (= 6.1.6.1) + activerecord (= 6.1.6.1) + activestorage (= 6.1.6.1) + activesupport (= 6.1.6.1) nokogiri (>= 1.8.5) - actionview (6.1.6) - activesupport (= 6.1.6) + actionview (6.1.6.1) + activesupport (= 6.1.6.1) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) @@ -54,22 +54,22 @@ GEM case_transform (>= 0.2) jsonapi-renderer (>= 0.1.1.beta1, < 0.3) active_record_query_trace (1.8) - activejob (6.1.6) - activesupport (= 6.1.6) + activejob (6.1.6.1) + activesupport (= 6.1.6.1) globalid (>= 0.3.6) - activemodel (6.1.6) - activesupport (= 6.1.6) - activerecord (6.1.6) - activemodel (= 6.1.6) - activesupport (= 6.1.6) - activestorage (6.1.6) - actionpack (= 6.1.6) - activejob (= 6.1.6) - activerecord (= 6.1.6) - activesupport (= 6.1.6) + activemodel (6.1.6.1) + activesupport (= 6.1.6.1) + activerecord (6.1.6.1) + activemodel (= 6.1.6.1) + activesupport (= 6.1.6.1) + activestorage (6.1.6.1) + actionpack (= 6.1.6.1) + activejob (= 6.1.6.1) + activerecord (= 6.1.6.1) + activesupport (= 6.1.6.1) marcel (~> 1.0) mini_mime (>= 1.1.0) - activesupport (6.1.6) + activesupport (6.1.6.1) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) minitest (>= 5.1) @@ -224,7 +224,7 @@ GEM faraday (~> 1) multi_json encryptor (3.0.0) - erubi (1.10.0) + erubi (1.11.0) et-orbi (1.2.7) tzinfo excon (0.76.0) @@ -405,7 +405,7 @@ GEM mime-types-data (3.2022.0105) mini_mime (1.1.2) mini_portile2 (2.8.0) - minitest (5.16.2) + minitest (5.16.3) msgpack (1.5.4) multi_json (1.15.0) multipart-post (2.1.1) @@ -500,20 +500,20 @@ GEM rack rack-test (2.0.2) rack (>= 1.3) - rails (6.1.6) - actioncable (= 6.1.6) - actionmailbox (= 6.1.6) - actionmailer (= 6.1.6) - actionpack (= 6.1.6) - actiontext (= 6.1.6) - actionview (= 6.1.6) - activejob (= 6.1.6) - activemodel (= 6.1.6) - activerecord (= 6.1.6) - activestorage (= 6.1.6) - activesupport (= 6.1.6) + rails (6.1.6.1) + actioncable (= 6.1.6.1) + actionmailbox (= 6.1.6.1) + actionmailer (= 6.1.6.1) + actionpack (= 6.1.6.1) + actiontext (= 6.1.6.1) + actionview (= 6.1.6.1) + activejob (= 6.1.6.1) + activemodel (= 6.1.6.1) + activerecord (= 6.1.6.1) + activestorage (= 6.1.6.1) + activesupport (= 6.1.6.1) bundler (>= 1.15.0) - railties (= 6.1.6) + railties (= 6.1.6.1) sprockets-rails (>= 2.0.0) rails-controller-testing (1.0.5) actionpack (>= 5.0.1.rc1) @@ -529,9 +529,9 @@ GEM railties (>= 6.0.0, < 7) rails-settings-cached (0.6.6) rails (>= 4.2.0) - railties (6.1.6) - actionpack (= 6.1.6) - activesupport (= 6.1.6) + railties (6.1.6.1) + actionpack (= 6.1.6.1) + activesupport (= 6.1.6.1) method_source rake (>= 12.2) thor (~> 1.0) From e97cdd47bda688a00d21b241ac77909cbbfff6f1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Sep 2022 01:32:17 +0900 Subject: [PATCH 366/652] Bump workbox-routing from 6.5.3 to 6.5.4 (#19092) Bumps [workbox-routing](https://github.com/googlechrome/workbox) from 6.5.3 to 6.5.4. - [Release notes](https://github.com/googlechrome/workbox/releases) - [Commits](https://github.com/googlechrome/workbox/compare/v6.5.3...v6.5.4) --- updated-dependencies: - dependency-name: workbox-routing dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 1f28fd577..e3d8b9f6a 100644 --- a/package.json +++ b/package.json @@ -137,7 +137,7 @@ "wicg-inert": "^3.1.2", "workbox-expiration": "^6.5.3", "workbox-precaching": "^6.5.3", - "workbox-routing": "^6.5.3", + "workbox-routing": "^6.5.4", "workbox-strategies": "^6.5.3", "workbox-webpack-plugin": "^6.5.4", "workbox-window": "^6.5.3", diff --git a/yarn.lock b/yarn.lock index 0ac565e75..95029d91e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2800,7 +2800,7 @@ array-flatten@^2.1.0: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== -array-includes@^3.1.3, array-includes@^3.1.4, array-includes@^3.1.5: +array-includes@^3.1.4, array-includes@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== @@ -12412,14 +12412,14 @@ workbox-recipes@6.5.4: workbox-routing "6.5.4" workbox-strategies "6.5.4" -workbox-routing@6.5.3, workbox-routing@^6.5.3: +workbox-routing@6.5.3: version "6.5.3" resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.5.3.tgz#a0a699d8cc90b5692bd3df24679acbbda3913777" integrity sha512-DFjxcuRAJjjt4T34RbMm3MCn+xnd36UT/2RfPRfa8VWJGItGJIn7tG+GwVTdHmvE54i/QmVTJepyAGWtoLPTmg== dependencies: workbox-core "6.5.3" -workbox-routing@6.5.4: +workbox-routing@6.5.4, workbox-routing@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.5.4.tgz#6a7fbbd23f4ac801038d9a0298bc907ee26fe3da" integrity sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg== From bf725837d5f5e972e8490b28e5f4439a5e9b8522 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Sep 2022 01:32:58 +0900 Subject: [PATCH 367/652] Bump workbox-expiration from 6.5.3 to 6.5.4 (#19091) Bumps [workbox-expiration](https://github.com/googlechrome/workbox) from 6.5.3 to 6.5.4. - [Release notes](https://github.com/googlechrome/workbox/releases) - [Commits](https://github.com/googlechrome/workbox/compare/v6.5.3...v6.5.4) --- updated-dependencies: - dependency-name: workbox-expiration dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 15 +-------------- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index e3d8b9f6a..b4229d6d0 100644 --- a/package.json +++ b/package.json @@ -135,7 +135,7 @@ "webpack-cli": "^3.3.12", "webpack-merge": "^5.8.0", "wicg-inert": "^3.1.2", - "workbox-expiration": "^6.5.3", + "workbox-expiration": "^6.5.4", "workbox-precaching": "^6.5.3", "workbox-routing": "^6.5.4", "workbox-strategies": "^6.5.3", diff --git a/yarn.lock b/yarn.lock index 95029d91e..3d0076a81 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6242,11 +6242,6 @@ idb-keyval@^3.2.0: resolved "https://registry.yarnpkg.com/idb-keyval/-/idb-keyval-3.2.0.tgz#cbbf354deb5684b6cdc84376294fc05932845bd6" integrity sha512-slx8Q6oywCCSfKgPgL0sEsXtPVnSbTLWpyiDcu6msHOyKOLari1TD1qocXVCft80umnkk3/Qqh3lwoFt8T/BPQ== -idb@^6.1.4: - version "6.1.5" - resolved "https://registry.yarnpkg.com/idb/-/idb-6.1.5.tgz#dbc53e7adf1ac7c59f9b2bf56e00b4ea4fce8c7b" - integrity sha512-IJtugpKkiVXQn5Y+LteyBCNk1N8xpGV3wWZk9EVtZWH8DYkjBn0bX1XnGP9RkyZF0sAcywa6unHqSWKe7q4LGw== - idb@^7.0.1: version "7.0.2" resolved "https://registry.yarnpkg.com/idb/-/idb-7.0.2.tgz#7a067e20dd16539938e456814b7d714ba8db3892" @@ -12342,7 +12337,7 @@ workbox-core@6.5.4: resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.5.4.tgz#df48bf44cd58bb1d1726c49b883fb1dffa24c9ba" integrity sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q== -workbox-expiration@6.5.4: +workbox-expiration@6.5.4, workbox-expiration@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.5.4.tgz#501056f81e87e1d296c76570bb483ce5e29b4539" integrity sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ== @@ -12350,14 +12345,6 @@ workbox-expiration@6.5.4: idb "^7.0.1" workbox-core "6.5.4" -workbox-expiration@^6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.5.3.tgz#efc0811f371a2ede1052b9de1c4f072b71d50503" - integrity sha512-jzYopYR1zD04ZMdlbn/R2Ik6ixiXbi15c9iX5H8CTi6RPDz7uhvMLZPKEndZTpfgmUk8mdmT9Vx/AhbuCl5Sqw== - dependencies: - idb "^6.1.4" - workbox-core "6.5.3" - workbox-google-analytics@6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz#c74327f80dfa4c1954cbba93cd7ea640fe7ece7d" From 77e17a22f79aaea705e5e53e3f5354c43c6361ca Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Sep 2022 01:33:26 +0900 Subject: [PATCH 368/652] Bump eslint-plugin-promise from 6.0.0 to 6.0.1 (#19087) Bumps [eslint-plugin-promise](https://github.com/xjamundx/eslint-plugin-promise) from 6.0.0 to 6.0.1. - [Release notes](https://github.com/xjamundx/eslint-plugin-promise/releases) - [Changelog](https://github.com/xjamundx/eslint-plugin-promise/blob/development/CHANGELOG.md) - [Commits](https://github.com/xjamundx/eslint-plugin-promise/commits) --- updated-dependencies: - dependency-name: eslint-plugin-promise dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index b4229d6d0..c0f497190 100644 --- a/package.json +++ b/package.json @@ -151,7 +151,7 @@ "eslint": "^7.32.0", "eslint-plugin-import": "~2.26.0", "eslint-plugin-jsx-a11y": "~6.6.1", - "eslint-plugin-promise": "~6.0.0", + "eslint-plugin-promise": "~6.0.1", "eslint-plugin-react": "~7.31.1", "jest": "^28.1.3", "jest-environment-jsdom": "^28.1.3", diff --git a/yarn.lock b/yarn.lock index 3d0076a81..d404f944a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5044,10 +5044,10 @@ eslint-plugin-jsx-a11y@~6.6.1: minimatch "^3.1.2" semver "^6.3.0" -eslint-plugin-promise@~6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz#017652c07c9816413a41e11c30adc42c3d55ff18" - integrity sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw== +eslint-plugin-promise@~6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.0.1.tgz#a8cddf96a67c4059bdabf4d724a29572188ae423" + integrity sha512-uM4Tgo5u3UWQiroOyDEsYcVMOo7re3zmno0IZmB5auxoaQNIceAbXEkSt8RNrKtaYehARHG06pYK6K1JhtP0Zw== eslint-plugin-react@~7.31.1: version "7.31.1" From e7ed2283fa90f769c1105bd05c47423d13c0f608 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Sep 2022 06:28:31 +0900 Subject: [PATCH 369/652] Bump workbox-strategies from 6.5.3 to 6.5.4 (#19089) Bumps [workbox-strategies](https://github.com/googlechrome/workbox) from 6.5.3 to 6.5.4. - [Release notes](https://github.com/googlechrome/workbox/releases) - [Commits](https://github.com/googlechrome/workbox/compare/v6.5.3...v6.5.4) --- updated-dependencies: - dependency-name: workbox-strategies dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index c0f497190..8eed45898 100644 --- a/package.json +++ b/package.json @@ -138,7 +138,7 @@ "workbox-expiration": "^6.5.4", "workbox-precaching": "^6.5.3", "workbox-routing": "^6.5.4", - "workbox-strategies": "^6.5.3", + "workbox-strategies": "^6.5.4", "workbox-webpack-plugin": "^6.5.4", "workbox-window": "^6.5.3", "ws": "^8.8.1" diff --git a/yarn.lock b/yarn.lock index d404f944a..fb62e42af 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12413,14 +12413,14 @@ workbox-routing@6.5.4, workbox-routing@^6.5.4: dependencies: workbox-core "6.5.4" -workbox-strategies@6.5.3, workbox-strategies@^6.5.3: +workbox-strategies@6.5.3: version "6.5.3" resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.5.3.tgz#4bea9a48fee16cf43766e0d8138296773c8a9783" integrity sha512-MgmGRrDVXs7rtSCcetZgkSZyMpRGw8HqL2aguszOc3nUmzGZsT238z/NN9ZouCxSzDu3PQ3ZSKmovAacaIhu1w== dependencies: workbox-core "6.5.3" -workbox-strategies@6.5.4: +workbox-strategies@6.5.4, workbox-strategies@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.5.4.tgz#4edda035b3c010fc7f6152918370699334cd204d" integrity sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw== From 6ad807f86001b99f305ccd1ab5115fc1e73c9555 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Sep 2022 06:29:39 +0900 Subject: [PATCH 370/652] Bump workbox-window from 6.5.3 to 6.5.4 (#19088) Bumps [workbox-window](https://github.com/googlechrome/workbox) from 6.5.3 to 6.5.4. - [Release notes](https://github.com/googlechrome/workbox/releases) - [Commits](https://github.com/googlechrome/workbox/compare/v6.5.3...v6.5.4) --- updated-dependencies: - dependency-name: workbox-window dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 10 +--------- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 8eed45898..6809afdbb 100644 --- a/package.json +++ b/package.json @@ -140,7 +140,7 @@ "workbox-routing": "^6.5.4", "workbox-strategies": "^6.5.4", "workbox-webpack-plugin": "^6.5.4", - "workbox-window": "^6.5.3", + "workbox-window": "^6.5.4", "ws": "^8.8.1" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index fb62e42af..5cbc157e0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12451,7 +12451,7 @@ workbox-webpack-plugin@^6.5.4: webpack-sources "^1.4.3" workbox-build "6.5.4" -workbox-window@6.5.4: +workbox-window@6.5.4, workbox-window@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.5.4.tgz#d991bc0a94dff3c2dbb6b84558cff155ca878e91" integrity sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug== @@ -12459,14 +12459,6 @@ workbox-window@6.5.4: "@types/trusted-types" "^2.0.2" workbox-core "6.5.4" -workbox-window@^6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.5.3.tgz#4ade70056cb73477ef1cd8fea7cfd0ecbd825c7f" - integrity sha512-GnJbx1kcKXDtoJBVZs/P7ddP0Yt52NNy4nocjBpYPiRhMqTpJCNrSL+fGHZ/i/oP6p/vhE8II0sA6AZGKGnssw== - dependencies: - "@types/trusted-types" "^2.0.2" - workbox-core "6.5.3" - worker-farm@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" From 95a149d7c12666d15257ac88687b3193a74179c1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Sep 2022 11:41:31 +0900 Subject: [PATCH 371/652] Bump workbox-precaching from 6.5.3 to 6.5.4 (#19083) Bumps [workbox-precaching](https://github.com/googlechrome/workbox) from 6.5.3 to 6.5.4. - [Release notes](https://github.com/googlechrome/workbox/releases) - [Commits](https://github.com/googlechrome/workbox/compare/v6.5.3...v6.5.4) --- updated-dependencies: - dependency-name: workbox-precaching dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 30 +----------------------------- 2 files changed, 2 insertions(+), 30 deletions(-) diff --git a/package.json b/package.json index 6809afdbb..6ab814029 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "webpack-merge": "^5.8.0", "wicg-inert": "^3.1.2", "workbox-expiration": "^6.5.4", - "workbox-precaching": "^6.5.3", + "workbox-precaching": "^6.5.4", "workbox-routing": "^6.5.4", "workbox-strategies": "^6.5.4", "workbox-webpack-plugin": "^6.5.4", diff --git a/yarn.lock b/yarn.lock index 5cbc157e0..8418aa301 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12327,11 +12327,6 @@ workbox-cacheable-response@6.5.4: dependencies: workbox-core "6.5.4" -workbox-core@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.5.3.tgz#bca038a9ef0d7a634a6db2a60f45313ed22ac249" - integrity sha512-Bb9ey5n/M9x+l3fBTlLpHt9ASTzgSGj6vxni7pY72ilB/Pb3XtN+cZ9yueboVhD5+9cNQrC9n/E1fSrqWsUz7Q== - workbox-core@6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.5.4.tgz#df48bf44cd58bb1d1726c49b883fb1dffa24c9ba" @@ -12362,7 +12357,7 @@ workbox-navigation-preload@6.5.4: dependencies: workbox-core "6.5.4" -workbox-precaching@6.5.4: +workbox-precaching@6.5.4, workbox-precaching@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.5.4.tgz#740e3561df92c6726ab5f7471e6aac89582cab72" integrity sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg== @@ -12371,15 +12366,6 @@ workbox-precaching@6.5.4: workbox-routing "6.5.4" workbox-strategies "6.5.4" -workbox-precaching@^6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.5.3.tgz#c870312b2ef901d790ab9e48da084e776c62af47" - integrity sha512-sjNfgNLSsRX5zcc63H/ar/hCf+T19fRtTqvWh795gdpghWb5xsfEkecXEvZ8biEi1QD7X/ljtHphdaPvXDygMQ== - dependencies: - workbox-core "6.5.3" - workbox-routing "6.5.3" - workbox-strategies "6.5.3" - workbox-range-requests@6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz#86b3d482e090433dab38d36ae031b2bb0bd74399" @@ -12399,13 +12385,6 @@ workbox-recipes@6.5.4: workbox-routing "6.5.4" workbox-strategies "6.5.4" -workbox-routing@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.5.3.tgz#a0a699d8cc90b5692bd3df24679acbbda3913777" - integrity sha512-DFjxcuRAJjjt4T34RbMm3MCn+xnd36UT/2RfPRfa8VWJGItGJIn7tG+GwVTdHmvE54i/QmVTJepyAGWtoLPTmg== - dependencies: - workbox-core "6.5.3" - workbox-routing@6.5.4, workbox-routing@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.5.4.tgz#6a7fbbd23f4ac801038d9a0298bc907ee26fe3da" @@ -12413,13 +12392,6 @@ workbox-routing@6.5.4, workbox-routing@^6.5.4: dependencies: workbox-core "6.5.4" -workbox-strategies@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.5.3.tgz#4bea9a48fee16cf43766e0d8138296773c8a9783" - integrity sha512-MgmGRrDVXs7rtSCcetZgkSZyMpRGw8HqL2aguszOc3nUmzGZsT238z/NN9ZouCxSzDu3PQ3ZSKmovAacaIhu1w== - dependencies: - workbox-core "6.5.3" - workbox-strategies@6.5.4, workbox-strategies@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.5.4.tgz#4edda035b3c010fc7f6152918370699334cd204d" From af46584f826165687611d97c08dbecb8f1a0416b Mon Sep 17 00:00:00 2001 From: Ashish Kurmi <100655670+boahc077@users.noreply.github.com> Date: Thu, 8 Sep 2022 00:44:24 -0700 Subject: [PATCH 372/652] ci: add minimum GitHub token permissions for workflows (#19138) Signed-off-by: Ashish Kurmi Signed-off-by: Ashish Kurmi --- .github/workflows/build-image.yml | 3 +++ .github/workflows/check-i18n.yml | 3 +++ 2 files changed, 6 insertions(+) diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index 157c2fcde..624aabbe7 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -10,6 +10,9 @@ on: paths: - .github/workflows/build-image.yml - Dockerfile +permissions: + contents: read + jobs: build-image: runs-on: ubuntu-latest diff --git a/.github/workflows/check-i18n.yml b/.github/workflows/check-i18n.yml index 1c60515f8..a9d8ea2ea 100644 --- a/.github/workflows/check-i18n.yml +++ b/.github/workflows/check-i18n.yml @@ -9,6 +9,9 @@ on: env: RAILS_ENV: test +permissions: + contents: read + jobs: check-i18n: runs-on: ubuntu-latest From 2750a7a0e6baac8753f7fceb1c747f56718cd93f Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 8 Sep 2022 09:44:36 +0200 Subject: [PATCH 373/652] Fix REST API sometimes returning HTML on error (#19135) Fixes #19115 --- app/controllers/api/base_controller.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/controllers/api/base_controller.rb b/app/controllers/api/base_controller.rb index 2e393fbb6..7ce6599c5 100644 --- a/app/controllers/api/base_controller.rb +++ b/app/controllers/api/base_controller.rb @@ -131,4 +131,10 @@ class Api::BaseController < ApplicationController def disallow_unauthenticated_api_access? authorized_fetch_mode? end + + private + + def respond_with_error(code) + render json: { error: Rack::Utils::HTTP_STATUS_CODES[code] }, status: code + end end From 9ff24772e27982c090018a84532aef78fbf39606 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Sep 2022 21:53:06 +0900 Subject: [PATCH 374/652] Bump dotenv from 16.0.1 to 16.0.2 (#19128) Bumps [dotenv](https://github.com/motdotla/dotenv) from 16.0.1 to 16.0.2. - [Release notes](https://github.com/motdotla/dotenv/releases) - [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md) - [Commits](https://github.com/motdotla/dotenv/compare/v16.0.1...v16.0.2) --- updated-dependencies: - dependency-name: dotenv dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 6ab814029..f435c4ff9 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "css-loader": "^5.2.7", "cssnano": "^4.1.11", "detect-passive-events": "^2.0.3", - "dotenv": "^16.0.1", + "dotenv": "^16.0.2", "emoji-mart": "npm:emoji-mart-lazyload", "es6-symbol": "^3.1.3", "escape-html": "^1.0.3", diff --git a/yarn.lock b/yarn.lock index 8418aa301..32a724256 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4700,10 +4700,10 @@ dot-prop@^5.2.0: dependencies: is-obj "^2.0.0" -dotenv@^16.0.1: - version "16.0.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.1.tgz#8f8f9d94876c35dac989876a5d3a82a267fdce1d" - integrity sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ== +dotenv@^16.0.2: + version "16.0.2" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.2.tgz#0b0f8652c016a3858ef795024508cddc4bffc5bf" + integrity sha512-JvpYKUmzQhYoIFgK2MOnF3bciIZoItIIoryihy0rIA+H4Jy0FmgyKYAHCTN98P5ybGSJcIFbh6QKeJdtZd1qhA== duplexer@^0.1.2: version "0.1.2" From 103cec2302b16c9dd394004242124ef26d287e29 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Sep 2022 21:53:33 +0900 Subject: [PATCH 375/652] Bump faker from 2.22.0 to 2.23.0 (#19123) Bumps [faker](https://github.com/faker-ruby/faker) from 2.22.0 to 2.23.0. - [Release notes](https://github.com/faker-ruby/faker/releases) - [Changelog](https://github.com/faker-ruby/faker/blob/master/CHANGELOG.md) - [Commits](https://github.com/faker-ruby/faker/compare/v2.22.0...v2.23.0) --- updated-dependencies: - dependency-name: faker dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 75525b0ac..92b69782e 100644 --- a/Gemfile +++ b/Gemfile @@ -114,7 +114,7 @@ end group :test do gem 'capybara', '~> 3.37' gem 'climate_control', '~> 0.2' - gem 'faker', '~> 2.22' + gem 'faker', '~> 2.23' gem 'microformats', '~> 4.4' gem 'rails-controller-testing', '~> 1.0' gem 'rspec-sidekiq', '~> 3.1' diff --git a/Gemfile.lock b/Gemfile.lock index 6cb9c7ba2..0c6aea49b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -229,7 +229,7 @@ GEM tzinfo excon (0.76.0) fabrication (2.30.0) - faker (2.22.0) + faker (2.23.0) i18n (>= 1.8.11, < 2) faraday (1.9.3) faraday-em_http (~> 1.0) @@ -765,7 +765,7 @@ DEPENDENCIES dotenv-rails (~> 2.8) ed25519 (~> 1.3) fabrication (~> 2.30) - faker (~> 2.22) + faker (~> 2.23) fast_blank (~> 1.0) fastimage fog-core (<= 2.1.0) From 56dd2dc6b9e81e483b2b224c2cf94223c494847b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Sep 2022 21:54:05 +0900 Subject: [PATCH 376/652] Bump @babel/runtime from 7.18.9 to 7.19.0 (#19122) Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.18.9 to 7.19.0. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.19.0/packages/babel-runtime) --- updated-dependencies: - dependency-name: "@babel/runtime" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 15 ++++----------- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index f435c4ff9..3c474546c 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "@babel/plugin-transform-runtime": "^7.18.10", "@babel/preset-env": "^7.18.10", "@babel/preset-react": "^7.18.6", - "@babel/runtime": "^7.18.9", + "@babel/runtime": "^7.19.0", "@gamestdio/websocket": "^0.3.2", "@github/webauthn-json": "^0.5.7", "@rails/ujs": "^6.1.6", diff --git a/yarn.lock b/yarn.lock index 32a724256..f7c4e8aad 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1410,17 +1410,10 @@ dependencies: regenerator-runtime "^0.12.0" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" - integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a" - integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.9", "@babel/runtime@^7.19.0", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.19.0.tgz#22b11c037b094d27a8a2504ea4dcff00f50e2259" + integrity sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA== dependencies: regenerator-runtime "^0.13.4" From aa94c3355f98af79df63ca93141d0bed570f04fe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Sep 2022 21:54:28 +0900 Subject: [PATCH 377/652] Bump @babel/plugin-proposal-decorators from 7.18.10 to 7.19.0 (#19121) Bumps [@babel/plugin-proposal-decorators](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-proposal-decorators) from 7.18.10 to 7.19.0. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.19.0/packages/babel-plugin-proposal-decorators) --- updated-dependencies: - dependency-name: "@babel/plugin-proposal-decorators" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 59 +++++++++++++++++++++++++++++++++------------------- 2 files changed, 39 insertions(+), 22 deletions(-) diff --git a/package.json b/package.json index 3c474546c..32f82c379 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "private": true, "dependencies": { "@babel/core": "^7.18.13", - "@babel/plugin-proposal-decorators": "^7.18.10", + "@babel/plugin-proposal-decorators": "^7.19.0", "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.18.10", "@babel/preset-env": "^7.18.10", diff --git a/yarn.lock b/yarn.lock index f7c4e8aad..e1cff994b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -164,14 +164,14 @@ browserslist "^4.20.2" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz#d802ee16a64a9e824fcbf0a2ffc92f19d58550ce" - integrity sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw== +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz#bfd6904620df4e46470bae4850d66be1054c404b" + integrity sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" "@babel/helper-member-expression-to-functions" "^7.18.9" "@babel/helper-optimise-call-expression" "^7.18.6" "@babel/helper-replace-supers" "^7.18.9" @@ -230,6 +230,14 @@ "@babel/template" "^7.18.6" "@babel/types" "^7.18.9" +"@babel/helper-function-name@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" + integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== + dependencies: + "@babel/template" "^7.18.10" + "@babel/types" "^7.19.0" + "@babel/helper-hoist-variables@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" @@ -293,10 +301,10 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz#4b8aea3b069d8cb8a72cdfe28ddf5ceca695ef2f" - integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz#4796bb14961521f0f8715990bee2fb6e51ce21bf" + integrity sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw== "@babel/helper-remap-async-to-generator@^7.18.6": version "7.18.6" @@ -498,16 +506,16 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-proposal-decorators@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.18.10.tgz#788650d01e518a8a722eb8b3055dd9d73ecb7a35" - integrity sha512-wdGTwWF5QtpTY/gbBtQLAiCnoxfD4qMbN87NYZle1dOZ9Os8Y6zXcKrIaOU8W+TIvFUWVGG9tUgNww3CjXRVVw== +"@babel/plugin-proposal-decorators@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.19.0.tgz#5a3bc0699ee34117c73c960a5396ffce104c4eaa" + integrity sha512-Bo5nOSjiJccjv00+BrDkmfeBLBi2B0qe8ygj24KdL8VdwtZz+710NCwehF+x/Ng+0mkHx5za2eAofmvVFLF4Fg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-create-class-features-plugin" "^7.19.0" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/helper-replace-supers" "^7.18.9" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/plugin-syntax-decorators" "^7.18.6" + "@babel/plugin-syntax-decorators" "^7.19.0" "@babel/plugin-proposal-dynamic-import@^7.16.7", "@babel/plugin-proposal-dynamic-import@^7.18.6": version "7.18.6" @@ -675,12 +683,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-decorators@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.18.6.tgz#2e45af22835d0b0f8665da2bfd4463649ce5dbc1" - integrity sha512-fqyLgjcxf/1yhyZ6A+yo1u9gJ7eleFQod2lkaUsF9DQ7sbbY3Ligym3L0+I2c0WmqNKDpoD9UTb1AKP3qRMOAQ== +"@babel/plugin-syntax-decorators@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz#5f13d1d8fce96951bea01a10424463c9a5b3a599" + integrity sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" @@ -1484,6 +1492,15 @@ "@babel/helper-validator-identifier" "^7.18.6" to-fast-properties "^2.0.0" +"@babel/types@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.0.tgz#75f21d73d73dc0351f3368d28db73465f4814600" + integrity sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA== + dependencies: + "@babel/helper-string-parser" "^7.18.10" + "@babel/helper-validator-identifier" "^7.18.6" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" From 3edf32b5a590a6d2894ede78244670639b4474a8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Sep 2022 21:54:50 +0900 Subject: [PATCH 378/652] Bump @babel/preset-env from 7.18.10 to 7.19.0 (#19127) Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.18.10 to 7.19.0. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.19.0/packages/babel-preset-env) --- updated-dependencies: - dependency-name: "@babel/preset-env" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 532 ++++++++++++++------------------------------------- 2 files changed, 144 insertions(+), 390 deletions(-) diff --git a/package.json b/package.json index 32f82c379..47826e54c 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "@babel/plugin-proposal-decorators": "^7.19.0", "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.18.10", - "@babel/preset-env": "^7.18.10", + "@babel/preset-env": "^7.19.0", "@babel/preset-react": "^7.18.6", "@babel/runtime": "^7.19.0", "@gamestdio/websocket": "^0.3.2", diff --git a/yarn.lock b/yarn.lock index e1cff994b..9cdeb288d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -37,20 +37,10 @@ dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.18.6": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.13.tgz#6aff7b350a1e8c3e40b029e46cbe78e24a913483" - integrity sha512-5yUzC5LqyTFp2HLmDoxGQelcdYgSpP9xsnMWBphAscOdFrHSAVbLNzWiy32sVNDqJRDiJK6klfDnAgu6PAGSHw== - -"@babel/compat-data@^7.17.10": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.6.tgz#8b37d24e88e8e21c499d4328db80577d8882fa53" - integrity sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ== - -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8": - version "7.18.8" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d" - integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ== +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8", "@babel/compat-data@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.0.tgz#2a592fd89bacb1fcde68de31bee4f2f2dacb0e86" + integrity sha512-y5rqgTTPTmaF5e2nVhOxw+Ur9HDJLsWb6U/KpgUzRZEdPfE6VOubXBKLdbcUTijzRptednSBDQbYZBOSqJxpJw== "@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.7.2": version "7.17.10" @@ -121,6 +111,15 @@ "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" +"@babel/generator@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.0.tgz#785596c06425e59334df2ccee63ab166b738419a" + integrity sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg== + dependencies: + "@babel/types" "^7.19.0" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" @@ -144,22 +143,12 @@ "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/helper-compilation-targets@^7.17.10": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz#18d35bfb9f83b1293c22c55b3d576c1315b6ed96" - integrity sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg== +"@babel/helper-compilation-targets@^7.17.10", "@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.0.tgz#537ec8339d53e806ed422f1e06c8f17d55b96bb0" + integrity sha512-Ai5bNWXIvwDvWM7njqsG3feMlL9hCVQsPYXodsZyLwshYkZVJt59Gftau4VrE8S9IT9asd2uSP1hG6wCNw+sXA== dependencies: - "@babel/compat-data" "^7.18.6" - "@babel/helper-validator-option" "^7.18.6" - browserslist "^4.20.2" - semver "^6.3.0" - -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.6", "@babel/helper-compilation-targets@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf" - integrity sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg== - dependencies: - "@babel/compat-data" "^7.18.8" + "@babel/compat-data" "^7.19.0" "@babel/helper-validator-option" "^7.18.6" browserslist "^4.20.2" semver "^6.3.0" @@ -185,7 +174,15 @@ "@babel/helper-annotate-as-pure" "^7.18.6" regexpu-core "^5.1.0" -"@babel/helper-define-polyfill-provider@^0.3.1", "@babel/helper-define-polyfill-provider@^0.3.2": +"@babel/helper-create-regexp-features-plugin@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz#7976aca61c0984202baca73d84e2337a5424a41b" + integrity sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + regexpu-core "^5.1.0" + +"@babel/helper-define-polyfill-provider@^0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz#bd10d0aca18e8ce012755395b05a79f45eca5073" integrity sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg== @@ -294,6 +291,20 @@ "@babel/traverse" "^7.18.9" "@babel/types" "^7.18.9" +"@babel/helper-module-transforms@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz#309b230f04e22c58c6a2c0c0c7e50b216d350c30" + integrity sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.18.6" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.19.0" + "@babel/types" "^7.19.0" + "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" @@ -344,7 +355,7 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-skip-transparent-expression-wrappers@^7.18.6", "@babel/helper-skip-transparent-expression-wrappers@^7.18.9": +"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz#778d87b3a758d90b471e7b9918f34a9a02eb5818" integrity sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw== @@ -373,7 +384,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== -"@babel/helper-validator-option@^7.16.7", "@babel/helper-validator-option@^7.18.6": +"@babel/helper-validator-option@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== @@ -444,22 +455,18 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.13.tgz#5b2dd21cae4a2c5145f1fbd8ca103f9313d3b7e4" integrity sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg== -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": +"@babel/parser@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.0.tgz#497fcafb1d5b61376959c1c338745ef0577aa02c" + integrity sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw== + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.6.tgz#b4e4dbc2cd1acd0133479918f7c6412961c9adb8" - integrity sha512-Udgu8ZRgrBrttVz6A0EVL0SJ1z+RLbIeqsu632SA1hf0awEppD6TvdznoH+orIF8wtFFAV/Enmw9Y+9oV8TQcw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" - "@babel/plugin-proposal-optional-chaining" "^7.18.6" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz#a11af19aa373d68d561f08e0a57242350ed0ec50" @@ -469,27 +476,17 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-proposal-optional-chaining" "^7.18.9" -"@babel/plugin-proposal-async-generator-functions@^7.16.8": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz#aedac81e6fc12bb643374656dd5f2605bf743d17" - integrity sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w== - dependencies: - "@babel/helper-environment-visitor" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-remap-async-to-generator" "^7.18.6" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-async-generator-functions@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz#85ea478c98b0095c3e4102bff3b67d306ed24952" - integrity sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew== +"@babel/plugin-proposal-async-generator-functions@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.0.tgz#cf5740194f170467df20581712400487efc79ff1" + integrity sha512-nhEByMUTx3uZueJ/QkJuSlCfN4FGg+xy+vRsfGQGzSauq5ks2Deid2+05Q3KhfaUjvec1IGhw/Zm3cFm8JigTQ== dependencies: "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/helper-remap-async-to-generator" "^7.18.9" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.16.7", "@babel/plugin-proposal-class-properties@^7.18.6": +"@babel/plugin-proposal-class-properties@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== @@ -497,7 +494,7 @@ "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-class-static-block@^7.17.6", "@babel/plugin-proposal-class-static-block@^7.18.6": +"@babel/plugin-proposal-class-static-block@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz#8aa81d403ab72d3962fc06c26e222dacfc9b9020" integrity sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw== @@ -517,7 +514,7 @@ "@babel/helper-split-export-declaration" "^7.18.6" "@babel/plugin-syntax-decorators" "^7.19.0" -"@babel/plugin-proposal-dynamic-import@^7.16.7", "@babel/plugin-proposal-dynamic-import@^7.18.6": +"@babel/plugin-proposal-dynamic-import@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== @@ -525,14 +522,6 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-proposal-export-namespace-from@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.6.tgz#1016f0aa5ab383bbf8b3a85a2dcaedf6c8ee7491" - integrity sha512-zr/QcUlUo7GPo6+X1wC98NJADqmy5QTFWWhqeQWiki4XHafJtLl/YMGkmRB2szDD2IYJCCdBTd4ElwhId9T7Xw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-proposal-export-namespace-from@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" @@ -541,7 +530,7 @@ "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.16.7", "@babel/plugin-proposal-json-strings@^7.18.6": +"@babel/plugin-proposal-json-strings@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== @@ -549,14 +538,6 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.6.tgz#3b9cac6f1ffc2aa459d111df80c12020dfc6b665" - integrity sha512-zMo66azZth/0tVd7gmkxOkOjs2rpHyhpcFo565PUP37hSp6hSd9uUKIfTDFMz58BwqgQKhJ9YxtM5XddjXVn+Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-proposal-logical-assignment-operators@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz#8148cbb350483bf6220af06fa6db3690e14b2e23" @@ -565,7 +546,7 @@ "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": +"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== @@ -573,7 +554,7 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.16.7", "@babel/plugin-proposal-numeric-separator@^7.18.6": +"@babel/plugin-proposal-numeric-separator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== @@ -581,17 +562,6 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.17.3": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.6.tgz#ec93bba06bfb3e15ebd7da73e953d84b094d5daf" - integrity sha512-9yuM6wr4rIsKa1wlUAbZEazkCrgw2sMPEXCr4Rnwetu7cEW1NydkCWytLuYletbf8vFxdJxFhwEZqMpOx2eZyw== - dependencies: - "@babel/compat-data" "^7.18.6" - "@babel/helper-compilation-targets" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz#f9434f6beb2c8cae9dfcf97d2a5941bbbf9ad4e7" @@ -603,7 +573,7 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.18.8" -"@babel/plugin-proposal-optional-catch-binding@^7.16.7", "@babel/plugin-proposal-optional-catch-binding@^7.18.6": +"@babel/plugin-proposal-optional-catch-binding@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== @@ -611,16 +581,7 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.6.tgz#46d4f2ffc20e87fad1d98bc4fa5d466366f6aa0b" - integrity sha512-PatI6elL5eMzoypFAiYDpYQyMtXTn+iMhuxxQt5mAXD4fEmKorpSI3PHd+i3JXBJN3xyA6MvJv7at23HffFHwA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.18.6", "@babel/plugin-proposal-optional-chaining@^7.18.9": +"@babel/plugin-proposal-optional-chaining@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993" integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w== @@ -629,7 +590,7 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-methods@^7.16.11", "@babel/plugin-proposal-private-methods@^7.18.6": +"@babel/plugin-proposal-private-methods@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== @@ -637,7 +598,7 @@ "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-private-property-in-object@^7.16.7", "@babel/plugin-proposal-private-property-in-object@^7.18.6": +"@babel/plugin-proposal-private-property-in-object@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz#a64137b232f0aca3733a67eb1a144c192389c503" integrity sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw== @@ -647,7 +608,7 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.16.7", "@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": +"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== @@ -802,14 +763,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-arrow-functions@^7.16.7", "@babel/plugin-transform-arrow-functions@^7.18.6": +"@babel/plugin-transform-arrow-functions@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz#19063fcf8771ec7b31d742339dac62433d0611fe" integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-async-to-generator@^7.16.8", "@babel/plugin-transform-async-to-generator@^7.18.6": +"@babel/plugin-transform-async-to-generator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz#ccda3d1ab9d5ced5265fdb13f1882d5476c71615" integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== @@ -818,20 +779,13 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-remap-async-to-generator" "^7.18.6" -"@babel/plugin-transform-block-scoped-functions@^7.16.7", "@babel/plugin-transform-block-scoped-functions@^7.18.6": +"@babel/plugin-transform-block-scoped-functions@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-block-scoping@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.6.tgz#b5f78318914615397d86a731ef2cc668796a726c" - integrity sha512-pRqwb91C42vs1ahSAWJkxOxU1RHWDn16XAa6ggQ72wjLlWyYeAcLvTtE0aM8ph3KNydy9CQF2nLYcjq1WysgxQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-transform-block-scoping@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz#f9b7e018ac3f373c81452d6ada8bd5a18928926d" @@ -839,41 +793,21 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-classes@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.6.tgz#3501a8f3f4c7d5697c27a3eedbee71d68312669f" - integrity sha512-XTg8XW/mKpzAF3actL554Jl/dOYoJtv3l8fxaEczpgz84IeeVf+T1u2CSvPHuZbt0w3JkIx4rdn/MRQI7mo0HQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.6" - "@babel/helper-function-name" "^7.18.6" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - globals "^11.1.0" - -"@babel/plugin-transform-classes@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz#90818efc5b9746879b869d5ce83eb2aa48bbc3da" - integrity sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g== +"@babel/plugin-transform-classes@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz#0e61ec257fba409c41372175e7c1e606dc79bb20" + integrity sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-compilation-targets" "^7.19.0" "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/helper-replace-supers" "^7.18.9" "@babel/helper-split-export-declaration" "^7.18.6" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.6.tgz#5d15eb90e22e69604f3348344c91165c5395d032" - integrity sha512-9repI4BhNrR0KenoR9vm3/cIc1tSBIo+u1WVjKCAynahj25O8zfbiE6JtAtHPGQSs4yZ+bA8mRasRP+qc+2R5A== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-transform-computed-properties@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz#2357a8224d402dad623caf6259b611e56aec746e" @@ -881,21 +815,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-destructuring@^7.17.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.6.tgz#a98b0e42c7ffbf5eefcbcf33280430f230895c6f" - integrity sha512-tgy3u6lRp17ilY8r1kP4i2+HDUwxlVqq3RTc943eAWSzGgpU1qhiKpqZ5CMyHReIYPHdo3Kg8v8edKtDqSVEyQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-destructuring@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz#68906549c021cb231bee1db21d3b5b095f8ee292" - integrity sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA== +"@babel/plugin-transform-destructuring@^7.18.13": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz#9e03bc4a94475d62b7f4114938e6c5c33372cbf5" + integrity sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow== dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": +"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== @@ -903,13 +830,6 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-duplicate-keys@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.6.tgz#e6c94e8cd3c9dd8a88144f7b78ae22975a7ff473" - integrity sha512-NJU26U/208+sxYszf82nmGYqVF9QN8py2HFTblPT9hbawi8+1C5a9JubODLTGFuT0qlkqVinmkwOD13s0sZktg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-transform-duplicate-keys@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" @@ -917,7 +837,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-exponentiation-operator@^7.16.7", "@babel/plugin-transform-exponentiation-operator@^7.18.6": +"@babel/plugin-transform-exponentiation-operator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== @@ -925,13 +845,6 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-for-of@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.6.tgz#e0fdb813be908e91ccc9ec87b30cc2eabf046f7c" - integrity sha512-WAjoMf4wIiSsy88KmG7tgj2nFdEK7E46tArVtcgED7Bkj6Fg/tG5SbvNIOKxbFS2VFgNh6+iaPswBeQZm4ox8w== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-transform-for-of@^7.18.8": version "7.18.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" @@ -939,15 +852,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-function-name@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.6.tgz#6a7e4ae2893d336fd1b8f64c9f92276391d0f1b4" - integrity sha512-kJha/Gbs5RjzIu0CxZwf5e3aTTSlhZnHMT8zPWnJMjNpLOUgqevg+PN5oMH68nMCXnfiMo4Bhgxqj59KHTlAnA== - dependencies: - "@babel/helper-compilation-targets" "^7.18.6" - "@babel/helper-function-name" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-transform-function-name@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" @@ -957,13 +861,6 @@ "@babel/helper-function-name" "^7.18.9" "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-literals@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.6.tgz#9d6af353b5209df72960baf4492722d56f39a205" - integrity sha512-x3HEw0cJZVDoENXOp20HlypIHfl0zMIhMVZEBVTfmqbObIpsMxMbmU5nOEO8R7LYT+z5RORKPlTI5Hj4OsO9/Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-transform-literals@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" @@ -971,14 +868,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-member-expression-literals@^7.16.7", "@babel/plugin-transform-member-expression-literals@^7.18.6": +"@babel/plugin-transform-member-expression-literals@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-modules-amd@^7.16.7", "@babel/plugin-transform-modules-amd@^7.18.6": +"@babel/plugin-transform-modules-amd@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz#8c91f8c5115d2202f277549848874027d7172d21" integrity sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg== @@ -987,7 +884,7 @@ "@babel/helper-plugin-utils" "^7.18.6" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.17.9", "@babel/plugin-transform-modules-commonjs@^7.18.6": +"@babel/plugin-transform-modules-commonjs@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz#afd243afba166cca69892e24a8fd8c9f2ca87883" integrity sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q== @@ -997,29 +894,18 @@ "@babel/helper-simple-access" "^7.18.6" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.17.8": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.6.tgz#026511b7657d63bf5d4cf2fd4aeb963139914a54" - integrity sha512-UbPYpXxLjTw6w6yXX2BYNxF3p6QY225wcTkfQCy3OMnSlS/C3xGtwUjEzGkldb/sy6PWLiCQ3NbYfjWUTI3t4g== +"@babel/plugin-transform-modules-systemjs@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz#5f20b471284430f02d9c5059d9b9a16d4b085a1f" + integrity sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A== dependencies: "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-module-transforms" "^7.19.0" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/helper-validator-identifier" "^7.18.6" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz#545df284a7ac6a05125e3e405e536c5853099a06" - integrity sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A== - dependencies: - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-validator-identifier" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-umd@^7.16.7", "@babel/plugin-transform-modules-umd@^7.18.6": +"@babel/plugin-transform-modules-umd@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== @@ -1027,22 +913,22 @@ "@babel/helper-module-transforms" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-named-capturing-groups-regex@^7.17.10", "@babel/plugin-transform-named-capturing-groups-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz#c89bfbc7cc6805d692f3a49bc5fc1b630007246d" - integrity sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg== +"@babel/plugin-transform-named-capturing-groups-regex@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.0.tgz#58c52422e4f91a381727faed7d513c89d7f41ada" + integrity sha512-HDSuqOQzkU//kfGdiHBt71/hkDTApw4U/cMVgKgX7PqfB3LOaK+2GtCEsBu1dL9CkswDm0Gwehht1dCr421ULQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-create-regexp-features-plugin" "^7.19.0" + "@babel/helper-plugin-utils" "^7.19.0" -"@babel/plugin-transform-new-target@^7.16.7", "@babel/plugin-transform-new-target@^7.18.6": +"@babel/plugin-transform-new-target@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-object-super@^7.16.7", "@babel/plugin-transform-object-super@^7.18.6": +"@babel/plugin-transform-object-super@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== @@ -1050,21 +936,14 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-replace-supers" "^7.18.6" -"@babel/plugin-transform-parameters@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.6.tgz#cbe03d5a4c6385dd756034ac1baa63c04beab8dc" - integrity sha512-FjdqgMv37yVl/gwvzkcB+wfjRI8HQmc5EgOG9iGNvUY1ok+TjsoaMP7IqCDZBhkFcM5f3OPVMs6Dmp03C5k4/A== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-parameters@^7.18.6", "@babel/plugin-transform-parameters@^7.18.8": +"@babel/plugin-transform-parameters@^7.18.8": version "7.18.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz#ee9f1a0ce6d78af58d0956a9378ea3427cccb48a" integrity sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-property-literals@^7.16.7", "@babel/plugin-transform-property-literals@^7.18.6": +"@babel/plugin-transform-property-literals@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== @@ -1112,7 +991,7 @@ "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-regenerator@^7.17.9", "@babel/plugin-transform-regenerator@^7.18.6": +"@babel/plugin-transform-regenerator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz#585c66cb84d4b4bf72519a34cfce761b8676ca73" integrity sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ== @@ -1120,7 +999,7 @@ "@babel/helper-plugin-utils" "^7.18.6" regenerator-transform "^0.15.0" -"@babel/plugin-transform-reserved-words@^7.16.7", "@babel/plugin-transform-reserved-words@^7.18.6": +"@babel/plugin-transform-reserved-words@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== @@ -1139,43 +1018,28 @@ babel-plugin-polyfill-regenerator "^0.4.0" semver "^6.3.0" -"@babel/plugin-transform-shorthand-properties@^7.16.7", "@babel/plugin-transform-shorthand-properties@^7.18.6": +"@babel/plugin-transform-shorthand-properties@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-spread@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.6.tgz#82b080241965f1689f0a60ecc6f1f6575dbdb9d6" - integrity sha512-ayT53rT/ENF8WWexIRg9AiV9h0aIteyWn5ptfZTZQrjk/+f3WdrJGCY4c9wcgl2+MKkKPhzbYp97FTsquZpDCw== +"@babel/plugin-transform-spread@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz#dd60b4620c2fec806d60cfaae364ec2188d593b6" + integrity sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" - -"@babel/plugin-transform-spread@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz#6ea7a6297740f381c540ac56caf75b05b74fb664" - integrity sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" -"@babel/plugin-transform-sticky-regex@^7.16.7", "@babel/plugin-transform-sticky-regex@^7.18.6": +"@babel/plugin-transform-sticky-regex@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-template-literals@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.6.tgz#b763f4dc9d11a7cce58cf9a490d82e80547db9c2" - integrity sha512-UuqlRrQmT2SWRvahW46cGSany0uTlcj8NYOS5sRGYi8FxPYPoLd5DDmMd32ZXEj2Jq+06uGVQKHxa/hJx2EzKw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-transform-template-literals@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" @@ -1183,13 +1047,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-typeof-symbol@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.6.tgz#486bb39d5a18047358e0d04dc0d2f322f0b92e92" - integrity sha512-7m71iS/QhsPk85xSjFPovHPcH3H9qeyzsujhTc+vcdnsXavoWYJ74zx0lP5RhpC5+iDnVLO+PPMHzC11qels1g== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-transform-typeof-symbol@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" @@ -1197,13 +1054,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-unicode-escapes@^7.16.7": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz#0d01fb7fb2243ae1c033f65f6e3b4be78db75f27" - integrity sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-transform-unicode-escapes@^7.18.10": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" @@ -1211,7 +1061,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-unicode-regex@^7.16.7", "@babel/plugin-transform-unicode-regex@^7.18.6": +"@babel/plugin-transform-unicode-regex@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== @@ -1219,98 +1069,18 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/preset-env@^7.11.0": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.17.10.tgz#a81b093669e3eb6541bb81a23173c5963c5de69c" - integrity sha512-YNgyBHZQpeoBSRBg0xixsZzfT58Ze1iZrajvv0lJc70qDDGuGfonEnMGfWeSY0mQ3JTuCWFbMkzFRVafOyJx4g== +"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.19.0.tgz#fd18caf499a67d6411b9ded68dc70d01ed1e5da7" + integrity sha512-1YUju1TAFuzjIQqNM9WsF4U6VbD/8t3wEAlw3LFYuuEr+ywqLRcSXxFKz4DCEj+sN94l/XTDiUXYRrsvMpz9WQ== dependencies: - "@babel/compat-data" "^7.17.10" - "@babel/helper-compilation-targets" "^7.17.10" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" - "@babel/plugin-proposal-async-generator-functions" "^7.16.8" - "@babel/plugin-proposal-class-properties" "^7.16.7" - "@babel/plugin-proposal-class-static-block" "^7.17.6" - "@babel/plugin-proposal-dynamic-import" "^7.16.7" - "@babel/plugin-proposal-export-namespace-from" "^7.16.7" - "@babel/plugin-proposal-json-strings" "^7.16.7" - "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" - "@babel/plugin-proposal-numeric-separator" "^7.16.7" - "@babel/plugin-proposal-object-rest-spread" "^7.17.3" - "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" - "@babel/plugin-proposal-optional-chaining" "^7.16.7" - "@babel/plugin-proposal-private-methods" "^7.16.11" - "@babel/plugin-proposal-private-property-in-object" "^7.16.7" - "@babel/plugin-proposal-unicode-property-regex" "^7.16.7" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.16.7" - "@babel/plugin-transform-async-to-generator" "^7.16.8" - "@babel/plugin-transform-block-scoped-functions" "^7.16.7" - "@babel/plugin-transform-block-scoping" "^7.16.7" - "@babel/plugin-transform-classes" "^7.16.7" - "@babel/plugin-transform-computed-properties" "^7.16.7" - "@babel/plugin-transform-destructuring" "^7.17.7" - "@babel/plugin-transform-dotall-regex" "^7.16.7" - "@babel/plugin-transform-duplicate-keys" "^7.16.7" - "@babel/plugin-transform-exponentiation-operator" "^7.16.7" - "@babel/plugin-transform-for-of" "^7.16.7" - "@babel/plugin-transform-function-name" "^7.16.7" - "@babel/plugin-transform-literals" "^7.16.7" - "@babel/plugin-transform-member-expression-literals" "^7.16.7" - "@babel/plugin-transform-modules-amd" "^7.16.7" - "@babel/plugin-transform-modules-commonjs" "^7.17.9" - "@babel/plugin-transform-modules-systemjs" "^7.17.8" - "@babel/plugin-transform-modules-umd" "^7.16.7" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.10" - "@babel/plugin-transform-new-target" "^7.16.7" - "@babel/plugin-transform-object-super" "^7.16.7" - "@babel/plugin-transform-parameters" "^7.16.7" - "@babel/plugin-transform-property-literals" "^7.16.7" - "@babel/plugin-transform-regenerator" "^7.17.9" - "@babel/plugin-transform-reserved-words" "^7.16.7" - "@babel/plugin-transform-shorthand-properties" "^7.16.7" - "@babel/plugin-transform-spread" "^7.16.7" - "@babel/plugin-transform-sticky-regex" "^7.16.7" - "@babel/plugin-transform-template-literals" "^7.16.7" - "@babel/plugin-transform-typeof-symbol" "^7.16.7" - "@babel/plugin-transform-unicode-escapes" "^7.16.7" - "@babel/plugin-transform-unicode-regex" "^7.16.7" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.17.10" - babel-plugin-polyfill-corejs2 "^0.3.0" - babel-plugin-polyfill-corejs3 "^0.5.0" - babel-plugin-polyfill-regenerator "^0.3.0" - core-js-compat "^3.22.1" - semver "^6.3.0" - -"@babel/preset-env@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.10.tgz#83b8dfe70d7eea1aae5a10635ab0a5fe60dfc0f4" - integrity sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA== - dependencies: - "@babel/compat-data" "^7.18.8" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/compat-data" "^7.19.0" + "@babel/helper-compilation-targets" "^7.19.0" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/helper-validator-option" "^7.18.6" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-async-generator-functions" "^7.18.10" + "@babel/plugin-proposal-async-generator-functions" "^7.19.0" "@babel/plugin-proposal-class-properties" "^7.18.6" "@babel/plugin-proposal-class-static-block" "^7.18.6" "@babel/plugin-proposal-dynamic-import" "^7.18.6" @@ -1344,9 +1114,9 @@ "@babel/plugin-transform-async-to-generator" "^7.18.6" "@babel/plugin-transform-block-scoped-functions" "^7.18.6" "@babel/plugin-transform-block-scoping" "^7.18.9" - "@babel/plugin-transform-classes" "^7.18.9" + "@babel/plugin-transform-classes" "^7.19.0" "@babel/plugin-transform-computed-properties" "^7.18.9" - "@babel/plugin-transform-destructuring" "^7.18.9" + "@babel/plugin-transform-destructuring" "^7.18.13" "@babel/plugin-transform-dotall-regex" "^7.18.6" "@babel/plugin-transform-duplicate-keys" "^7.18.9" "@babel/plugin-transform-exponentiation-operator" "^7.18.6" @@ -1356,9 +1126,9 @@ "@babel/plugin-transform-member-expression-literals" "^7.18.6" "@babel/plugin-transform-modules-amd" "^7.18.6" "@babel/plugin-transform-modules-commonjs" "^7.18.6" - "@babel/plugin-transform-modules-systemjs" "^7.18.9" + "@babel/plugin-transform-modules-systemjs" "^7.19.0" "@babel/plugin-transform-modules-umd" "^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.18.6" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.0" "@babel/plugin-transform-new-target" "^7.18.6" "@babel/plugin-transform-object-super" "^7.18.6" "@babel/plugin-transform-parameters" "^7.18.8" @@ -1366,14 +1136,14 @@ "@babel/plugin-transform-regenerator" "^7.18.6" "@babel/plugin-transform-reserved-words" "^7.18.6" "@babel/plugin-transform-shorthand-properties" "^7.18.6" - "@babel/plugin-transform-spread" "^7.18.9" + "@babel/plugin-transform-spread" "^7.19.0" "@babel/plugin-transform-sticky-regex" "^7.18.6" "@babel/plugin-transform-template-literals" "^7.18.9" "@babel/plugin-transform-typeof-symbol" "^7.18.9" "@babel/plugin-transform-unicode-escapes" "^7.18.10" "@babel/plugin-transform-unicode-regex" "^7.18.6" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.18.10" + "@babel/types" "^7.19.0" babel-plugin-polyfill-corejs2 "^0.3.2" babel-plugin-polyfill-corejs3 "^0.5.3" babel-plugin-polyfill-regenerator "^0.4.0" @@ -1475,18 +1245,26 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.7", "@babel/types@^7.17.10", "@babel/types@^7.18.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.6.tgz#5d781dd10a3f0c9f1f931bd19de5eb26ec31acf0" - integrity sha512-NdBNzPDwed30fZdDQtVR7ZgaO4UKjuaQFH9VArS+HMnurlOY0JWN+4ROlu/iapMFwjRQU4pOG4StZfDmulEwGA== +"@babel/traverse@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.0.tgz#eb9c561c7360005c592cc645abafe0c3c4548eed" + integrity sha512-4pKpFRDh+utd2mbRC8JLnlsMUii3PMHjpL6a0SZ4NMZy7YFP9aXORxEhdMVOc9CpWtDF09IkciQLEhK7Ml7gRA== dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - to-fast-properties "^2.0.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.19.0" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.19.0" + "@babel/types" "^7.19.0" + debug "^4.1.0" + globals "^11.1.0" -"@babel/types@^7.18.10", "@babel/types@^7.18.13", "@babel/types@^7.18.9": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.13.tgz#30aeb9e514f4100f7c1cb6e5ba472b30e48f519a" - integrity sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ== +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.7", "@babel/types@^7.17.10", "@babel/types@^7.18.10", "@babel/types@^7.18.13", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.0.tgz#75f21d73d73dc0351f3368d28db73465f4814600" + integrity sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA== dependencies: "@babel/helper-string-parser" "^7.18.10" "@babel/helper-validator-identifier" "^7.18.6" @@ -3053,15 +2831,6 @@ babel-plugin-macros@^3.0.1: cosmiconfig "^7.0.0" resolve "^1.19.0" -babel-plugin-polyfill-corejs2@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" - integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== - dependencies: - "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.3.1" - semver "^6.1.1" - babel-plugin-polyfill-corejs2@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz#e4c31d4c89b56f3cf85b92558954c66b54bd972d" @@ -3071,14 +2840,6 @@ babel-plugin-polyfill-corejs2@^0.3.2: "@babel/helper-define-polyfill-provider" "^0.3.2" semver "^6.1.1" -babel-plugin-polyfill-corejs3@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" - integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.1" - core-js-compat "^3.21.0" - babel-plugin-polyfill-corejs3@^0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz#d7e09c9a899079d71a8b670c6181af56ec19c5c7" @@ -3087,13 +2848,6 @@ babel-plugin-polyfill-corejs3@^0.5.3: "@babel/helper-define-polyfill-provider" "^0.3.2" core-js-compat "^3.21.0" -babel-plugin-polyfill-regenerator@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" - integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.1" - babel-plugin-polyfill-regenerator@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz#8f51809b6d5883e07e71548d75966ff7635527fe" From bc58833bba222810893d9b0601508a40233275c2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Sep 2022 21:55:47 +0900 Subject: [PATCH 379/652] Bump eslint-plugin-react from 7.31.1 to 7.31.6 (#19125) Bumps [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) from 7.31.1 to 7.31.6. - [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases) - [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md) - [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.31.1...v7.31.6) --- updated-dependencies: - dependency-name: eslint-plugin-react dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 47826e54c..5a75ec638 100644 --- a/package.json +++ b/package.json @@ -152,7 +152,7 @@ "eslint-plugin-import": "~2.26.0", "eslint-plugin-jsx-a11y": "~6.6.1", "eslint-plugin-promise": "~6.0.1", - "eslint-plugin-react": "~7.31.1", + "eslint-plugin-react": "~7.31.6", "jest": "^28.1.3", "jest-environment-jsdom": "^28.1.3", "postcss-scss": "^4.0.4", diff --git a/yarn.lock b/yarn.lock index 9cdeb288d..49aac4803 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4813,10 +4813,10 @@ eslint-plugin-promise@~6.0.1: resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.0.1.tgz#a8cddf96a67c4059bdabf4d724a29572188ae423" integrity sha512-uM4Tgo5u3UWQiroOyDEsYcVMOo7re3zmno0IZmB5auxoaQNIceAbXEkSt8RNrKtaYehARHG06pYK6K1JhtP0Zw== -eslint-plugin-react@~7.31.1: - version "7.31.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.1.tgz#d29793ed27743f3ed8a473c347b1bf5a0a8fb9af" - integrity sha512-j4/2xWqt/R7AZzG8CakGHA6Xa/u7iR8Q3xCxY+AUghdT92bnIDOBEefV456OeH0QvBcroVc0eyvrrLSyQGYIfg== +eslint-plugin-react@~7.31.6: + version "7.31.6" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.6.tgz#55ec176be94917ecde3f3ca0e1363073193e241a" + integrity sha512-CXu4eu28sb8Sd2+cyUYsJVyDvpTlaXPG+bOzzpS9IzZKtye96AYX3ZmHQ6ayn/OAIQ/ufDJP8ElPWd63Pepn9w== dependencies: array-includes "^3.1.5" array.prototype.flatmap "^1.3.0" From 0b9167494b25328bff037a2f3e56c0dbddcf6ddc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Sep 2022 21:59:06 +0900 Subject: [PATCH 380/652] Bump sass from 1.54.5 to 1.54.8 (#19118) Bumps [sass](https://github.com/sass/dart-sass) from 1.54.5 to 1.54.8. - [Release notes](https://github.com/sass/dart-sass/releases) - [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md) - [Commits](https://github.com/sass/dart-sass/compare/1.54.5...1.54.8) --- updated-dependencies: - dependency-name: sass dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 5a75ec638..4cefb4d00 100644 --- a/package.json +++ b/package.json @@ -118,7 +118,7 @@ "requestidlecallback": "^0.3.0", "reselect": "^4.1.6", "rimraf": "^3.0.2", - "sass": "^1.54.5", + "sass": "^1.54.8", "sass-loader": "^10.2.0", "stacktrace-js": "^2.0.2", "stringz": "^2.1.0", diff --git a/yarn.lock b/yarn.lock index 49aac4803..75f5e86bc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10096,10 +10096,10 @@ sass-loader@^10.2.0: schema-utils "^3.0.0" semver "^7.3.2" -sass@^1.54.5: - version "1.54.5" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.5.tgz#93708f5560784f6ff2eab8542ade021a4a947b3a" - integrity sha512-p7DTOzxkUPa/63FU0R3KApkRHwcVZYC0PLnLm5iyZACyp15qSi32x7zVUhRdABAATmkALqgGrjCJAcWvobmhHw== +sass@^1.54.8: + version "1.54.8" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.8.tgz#4adef0dd86ea2b1e4074f551eeda4fc5f812a996" + integrity sha512-ib4JhLRRgbg6QVy6bsv5uJxnJMTS2soVcCp9Y88Extyy13A8vV0G1fAwujOzmNkFQbR3LvedudAMbtuNRPbQww== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" From 7ceab5bc040118f7283ddfac1ce99d817429ca95 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Sep 2022 22:00:06 +0900 Subject: [PATCH 381/652] Bump stylelint-config-standard-scss from 4.0.0 to 5.0.0 (#18829) Bumps [stylelint-config-standard-scss](https://github.com/stylelint-scss/stylelint-config-standard-scss) from 4.0.0 to 5.0.0. - [Release notes](https://github.com/stylelint-scss/stylelint-config-standard-scss/releases) - [Changelog](https://github.com/stylelint-scss/stylelint-config-standard-scss/blob/main/CHANGELOG.md) - [Commits](https://github.com/stylelint-scss/stylelint-config-standard-scss/compare/v4.0.0...v5.0.0) --- updated-dependencies: - dependency-name: stylelint-config-standard-scss dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 40 ++++++++++++++++++++-------------------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index 4cefb4d00..db0c0a05d 100644 --- a/package.json +++ b/package.json @@ -161,7 +161,7 @@ "react-intl-translations-manager": "^5.0.3", "react-test-renderer": "^16.14.0", "stylelint": "^14.11.0", - "stylelint-config-standard-scss": "^4.0.0", + "stylelint-config-standard-scss": "^5.0.0", "webpack-dev-server": "^3.11.3", "yargs": "^17.5.1" }, diff --git a/yarn.lock b/yarn.lock index 75f5e86bc..d0e249e35 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10848,34 +10848,34 @@ stylehacks@^4.0.0: postcss "^7.0.0" postcss-selector-parser "^3.0.0" -stylelint-config-recommended-scss@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-6.0.0.tgz#02baeace2b7f30f80369b6ee2da77aae5a01bff6" - integrity sha512-6QOe2/OzXV2AP5FE12A7+qtKdZik7Saf42SMMl84ksVBBPpTdrV+9HaCbPYiRMiwELY9hXCVdH4wlJ+YJb5eig== +stylelint-config-recommended-scss@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-7.0.0.tgz#db16b6ae6055e72e3398916c0f13d6eb685902a2" + integrity sha512-rGz1J4rMAyJkvoJW4hZasuQBB7y9KIrShb20l9DVEKKZSEi1HAy0vuNlR8HyCKy/jveb/BdaQFcoiYnmx4HoiA== dependencies: postcss-scss "^4.0.2" - stylelint-config-recommended "^7.0.0" + stylelint-config-recommended "^8.0.0" stylelint-scss "^4.0.0" -stylelint-config-recommended@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-7.0.0.tgz#7497372ae83ab7a6fffc18d7d7b424c6480ae15e" - integrity sha512-yGn84Bf/q41J4luis1AZ95gj0EQwRX8lWmGmBwkwBNSkpGSpl66XcPTulxGa/Z91aPoNGuIGBmFkcM1MejMo9Q== +stylelint-config-recommended@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-8.0.0.tgz#7736be9984246177f017c39ec7b1cd0f19ae9117" + integrity sha512-IK6dWvE000+xBv9jbnHOnBq01gt6HGVB2ZTsot+QsMpe82doDQ9hvplxfv4YnpEuUwVGGd9y6nbaAnhrjcxhZQ== -stylelint-config-standard-scss@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/stylelint-config-standard-scss/-/stylelint-config-standard-scss-4.0.0.tgz#9c1dc99eea73394bf22ad15648a5b1d9b74ff649" - integrity sha512-xizu8PTEyB6zYXBiVg6VtvUYn9m57x+6ZtaOdaxsfpbe5eagLPGNlbYnKfm/CfN69ArUpnwR6LjgsTHzlGbtXQ== +stylelint-config-standard-scss@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/stylelint-config-standard-scss/-/stylelint-config-standard-scss-5.0.0.tgz#afc5e43c73e7a15875b8f30f54204b01a2634743" + integrity sha512-zoXLibojHZYPFjtkc4STZtAJ2yGTq3Bb4MYO0oiyO6f/vNxDKRcSDZYoqN260Gv2eD5niQIr1/kr5SXlFj9kcQ== dependencies: - stylelint-config-recommended-scss "^6.0.0" - stylelint-config-standard "^25.0.0" + stylelint-config-recommended-scss "^7.0.0" + stylelint-config-standard "^26.0.0" -stylelint-config-standard@^25.0.0: - version "25.0.0" - resolved "https://registry.yarnpkg.com/stylelint-config-standard/-/stylelint-config-standard-25.0.0.tgz#2c916984e6655d40d6e8748b19baa8603b680bff" - integrity sha512-21HnP3VSpaT1wFjFvv9VjvOGDtAviv47uTp3uFmzcN+3Lt+RYRv6oAplLaV51Kf792JSxJ6svCJh/G18E9VnCA== +stylelint-config-standard@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/stylelint-config-standard/-/stylelint-config-standard-26.0.0.tgz#4701b8d582d34120eec7d260ba779e4c2d953635" + integrity sha512-hUuB7LaaqM8abvkOO84wh5oYSkpXgTzHu2Zza6e7mY+aOmpNTjoFBRxSLlzY0uAOMWEFx0OMKzr+reG1BUtcqQ== dependencies: - stylelint-config-recommended "^7.0.0" + stylelint-config-recommended "^8.0.0" stylelint-scss@^4.0.0: version "4.2.0" From b312f35d245fad54bd0321eef740c6a30a5b1ce4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 11 Sep 2022 15:19:58 +0200 Subject: [PATCH 382/652] New Crowdin updates (#19049) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Croatian) * New translations en.yml (Kazakh) * New translations en.yml (Estonian) * New translations en.yml (Latvian) * New translations en.yml (Malay) * New translations en.yml (Corsican) * New translations en.yml (Sardinian) * New translations en.yml (Kabyle) * New translations en.yml (Ido) * New translations simple_form.en.yml (Ido) * New translations en.yml (Ukrainian) * New translations en.yml (Spanish) * New translations en.yml (Ido) * New translations simple_form.en.yml (Ido) * New translations en.yml (Portuguese) * New translations en.yml (Spanish, Argentina) * New translations en.json (Chinese Traditional) * New translations en.yml (Danish) * New translations en.yml (Chinese Traditional) * New translations en.yml (Chinese Simplified) * New translations en.yml (Chinese Simplified) * New translations en.yml (Latvian) * New translations en.yml (Latvian) * New translations en.yml (Hungarian) * New translations en.yml (Polish) * New translations en.yml (Turkish) * New translations en.yml (Italian) * New translations en.yml (Slovenian) * New translations en.yml (German) * New translations en.yml (Icelandic) * New translations en.json (Galician) * New translations en.json (Galician) * New translations en.yml (Galician) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations activerecord.en.yml (Portuguese, Brazilian) * New translations en.yml (Spanish) * New translations en.yml (Spanish) * New translations en.json (Scottish Gaelic) * New translations en.yml (Scottish Gaelic) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Spanish, Mexico) * New translations en.yml (Thai) * New translations simple_form.en.yml (Norwegian) * New translations simple_form.en.yml (Hungarian) * New translations simple_form.en.yml (Armenian) * New translations simple_form.en.yml (Italian) * New translations simple_form.en.yml (Japanese) * New translations simple_form.en.yml (Georgian) * New translations simple_form.en.yml (Korean) * New translations simple_form.en.yml (Dutch) * New translations simple_form.en.yml (Polish) * New translations simple_form.en.yml (Portuguese) * New translations simple_form.en.yml (Slovak) * New translations simple_form.en.yml (Slovenian) * New translations simple_form.en.yml (Albanian) * New translations simple_form.en.yml (Serbian (Cyrillic)) * New translations simple_form.en.yml (Swedish) * New translations simple_form.en.yml (Turkish) * New translations simple_form.en.yml (Ukrainian) * New translations simple_form.en.yml (Basque) * New translations en.yml (Finnish) * New translations en.yml (Japanese) * New translations en.yml (German) * New translations simple_form.en.yml (German) * New translations en.yml (Russian) * New translations simple_form.en.yml (Russian) * New translations en.yml (Slovak) * New translations en.yml (Norwegian Nynorsk) * New translations simple_form.en.yml (Norwegian Nynorsk) * New translations en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Frisian) * New translations simple_form.en.yml (Romanian) * New translations simple_form.en.yml (French) * New translations simple_form.en.yml (Spanish) * New translations simple_form.en.yml (Afrikaans) * New translations simple_form.en.yml (Arabic) * New translations simple_form.en.yml (Bulgarian) * New translations simple_form.en.yml (Catalan) * New translations simple_form.en.yml (Czech) * New translations simple_form.en.yml (Danish) * New translations simple_form.en.yml (Greek) * New translations simple_form.en.yml (Chinese Traditional) * New translations simple_form.en.yml (Sardinian) * New translations simple_form.en.yml (Sinhala) * New translations simple_form.en.yml (Scottish Gaelic) * New translations simple_form.en.yml (Asturian) * New translations simple_form.en.yml (Occitan) * New translations simple_form.en.yml (Serbian (Latin)) * New translations simple_form.en.yml (Sorani (Kurdish)) * New translations simple_form.en.yml (Corsican) * New translations simple_form.en.yml (Malayalam) * New translations simple_form.en.yml (Kabyle) * New translations simple_form.en.yml (Standard Moroccan Tamazight) * New translations en.yml (Ukrainian) * New translations en.yml (French) * New translations en.yml (Spanish) * New translations simple_form.en.yml (Breton) * New translations simple_form.en.yml (Tatar) * New translations simple_form.en.yml (Vietnamese) * New translations simple_form.en.yml (Thai) * New translations simple_form.en.yml (Galician) * New translations simple_form.en.yml (Icelandic) * New translations simple_form.en.yml (Portuguese, Brazilian) * New translations simple_form.en.yml (Indonesian) * New translations simple_form.en.yml (Persian) * New translations simple_form.en.yml (Tamil) * New translations simple_form.en.yml (Spanish, Argentina) * New translations simple_form.en.yml (Spanish, Mexico) * New translations simple_form.en.yml (Bengali) * New translations simple_form.en.yml (Croatian) * New translations simple_form.en.yml (Chinese Traditional, Hong Kong) * New translations simple_form.en.yml (Kazakh) * New translations simple_form.en.yml (Estonian) * New translations simple_form.en.yml (Latvian) * New translations simple_form.en.yml (Welsh) * New translations simple_form.en.yml (Esperanto) * New translations en.yml (Arabic) * New translations en.yml (Spanish, Mexico) * New translations en.yml (Vietnamese) * New translations en.yml (Galician) * New translations en.yml (Icelandic) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Indonesian) * New translations en.yml (Persian) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Chinese Simplified) * New translations en.yml (Kazakh) * New translations en.yml (Estonian) * New translations en.yml (Latvian) * New translations en.yml (Welsh) * New translations en.yml (Chinese Traditional) * New translations en.yml (Turkish) * New translations en.yml (Catalan) * New translations en.yml (Czech) * New translations en.yml (Danish) * New translations en.yml (Greek) * New translations en.yml (Basque) * New translations en.yml (Hebrew) * New translations en.yml (Hungarian) * New translations en.yml (Italian) * New translations en.yml (Korean) * New translations en.yml (Dutch) * New translations en.yml (Norwegian) * New translations en.yml (Polish) * New translations en.yml (Portuguese) * New translations en.yml (Slovenian) * New translations en.yml (Albanian) * New translations en.yml (Chinese Traditional, Hong Kong) * New translations en.yml (Sorani (Kurdish)) * New translations en.yml (Ido) * New translations en.yml (Sardinian) * New translations en.yml (Corsican) * New translations en.yml (Scottish Gaelic) * New translations en.yml (Sinhala) * New translations en.json (Vietnamese) * New translations en.yml (Vietnamese) * New translations simple_form.en.yml (Vietnamese) * New translations simple_form.en.yml (Spanish, Argentina) * New translations en.yml (Vietnamese) * New translations en.yml (Spanish, Argentina) * New translations simple_form.en.yml (Latvian) * New translations en.yml (Latvian) * New translations en.json (Asturian) * New translations en.json (Russian) * New translations en.yml (Russian) * New translations simple_form.en.yml (Russian) * New translations simple_form.en.yml (Catalan) * New translations en.yml (Catalan) * New translations activerecord.en.yml (Russian) * New translations en.json (Russian) * New translations en.yml (Russian) * New translations simple_form.en.yml (Spanish) * New translations simple_form.en.yml (Hungarian) * New translations en.yml (Spanish) * New translations en.yml (Hungarian) * New translations doorkeeper.en.yml (Russian) * New translations simple_form.en.yml (Portuguese) * New translations simple_form.en.yml (Turkish) * New translations en.yml (Portuguese) * New translations en.yml (Turkish) * New translations simple_form.en.yml (Polish) * New translations en.yml (Polish) * New translations en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations en.yml (Czech) * New translations en.json (Russian) * New translations en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Danish) * New translations simple_form.en.yml (Ukrainian) * New translations en.yml (Ukrainian) * New translations en.yml (Danish) * New translations simple_form.en.yml (Czech) * New translations simple_form.en.yml (Chinese Traditional) * New translations en.yml (Czech) * New translations en.yml (Chinese Traditional) * New translations en.yml (Czech) * New translations simple_form.en.yml (Slovenian) * New translations en.yml (Slovenian) * New translations en.yml (Russian) * New translations simple_form.en.yml (Italian) * New translations en.yml (Italian) * New translations simple_form.en.yml (Korean) * New translations en.yml (Korean) * New translations en.yml (Korean) * New translations en.yml (German) * New translations en.yml (Catalan) * New translations en.yml (German) * New translations simple_form.en.yml (German) * New translations simple_form.en.yml (Galician) * New translations en.yml (Galician) * New translations en.yml (Thai) * New translations en.json (Thai) * New translations simple_form.en.yml (Thai) * New translations simple_form.en.yml (Polish) * New translations en.yml (Polish) * New translations en.json (Icelandic) * New translations simple_form.en.yml (Icelandic) * New translations en.yml (Icelandic) * New translations en.yml (Czech) * New translations en.yml (German) * New translations en.json (Hebrew) * New translations simple_form.en.yml (Hebrew) * New translations en.yml (Chinese Simplified) * New translations en.json (Bulgarian) * New translations en.json (Bulgarian) * New translations en.yml (Thai) * New translations en.json (Thai) * New translations en.yml (Ido) * New translations simple_form.en.yml (Ido) * New translations en.yml (Ido) * New translations en.json (Ido) * New translations en.yml (German) * New translations en.yml (German) * New translations en.json (German) * New translations en.yml (German) * New translations simple_form.en.yml (German) * New translations en.json (German) * New translations devise.en.yml (German) * New translations doorkeeper.en.yml (German) * New translations en.json (Tamil) * New translations en.json (Tamil) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/ast.json | 8 +- app/javascript/mastodon/locales/bg.json | 38 +-- app/javascript/mastodon/locales/ca.json | 38 +-- app/javascript/mastodon/locales/da.json | 34 +-- app/javascript/mastodon/locales/de.json | 60 ++--- app/javascript/mastodon/locales/es-AR.json | 34 +-- app/javascript/mastodon/locales/es-MX.json | 2 +- app/javascript/mastodon/locales/es.json | 34 +-- app/javascript/mastodon/locales/fi.json | 34 +-- app/javascript/mastodon/locales/gd.json | 2 +- app/javascript/mastodon/locales/gl.json | 34 +-- app/javascript/mastodon/locales/he.json | 50 ++-- app/javascript/mastodon/locales/hu.json | 34 +-- app/javascript/mastodon/locales/io.json | 34 +-- app/javascript/mastodon/locales/is.json | 36 +-- app/javascript/mastodon/locales/it.json | 34 +-- app/javascript/mastodon/locales/ko.json | 34 +-- app/javascript/mastodon/locales/ku.json | 34 +-- app/javascript/mastodon/locales/lv.json | 34 +-- app/javascript/mastodon/locales/pl.json | 34 +-- app/javascript/mastodon/locales/pt-PT.json | 34 +-- app/javascript/mastodon/locales/ru.json | 50 ++-- app/javascript/mastodon/locales/sk.json | 10 +- app/javascript/mastodon/locales/sl.json | 34 +-- app/javascript/mastodon/locales/ta.json | 48 ++-- app/javascript/mastodon/locales/th.json | 24 +- app/javascript/mastodon/locales/tr.json | 34 +-- app/javascript/mastodon/locales/uk.json | 34 +-- app/javascript/mastodon/locales/vi.json | 34 +-- app/javascript/mastodon/locales/zh-CN.json | 34 +-- app/javascript/mastodon/locales/zh-TW.json | 34 +-- config/locales/activerecord.pt-BR.yml | 10 + config/locales/activerecord.ru.yml | 4 + config/locales/ar.yml | 17 -- config/locales/ast.yml | 3 - config/locales/bg.yml | 6 - config/locales/br.yml | 1 - config/locales/ca.yml | 57 +++-- config/locales/ckb.yml | 12 - config/locales/co.yml | 13 - config/locales/cs.yml | 33 +-- config/locales/cy.yml | 16 -- config/locales/da.yml | 46 ++-- config/locales/de.yml | 281 +++++++++++---------- config/locales/devise.de.yml | 18 +- config/locales/devise.hu.yml | 2 +- config/locales/doorkeeper.de.yml | 6 +- config/locales/doorkeeper.ru.yml | 7 +- config/locales/el.yml | 15 -- config/locales/eo.yml | 13 - config/locales/es-AR.yml | 46 ++-- config/locales/es-MX.yml | 50 ++-- config/locales/es.yml | 46 ++-- config/locales/et.yml | 12 - config/locales/eu.yml | 13 - config/locales/fa.yml | 13 - config/locales/fi.yml | 99 ++++++-- config/locales/fr.yml | 16 -- config/locales/fy.yml | 2 - config/locales/gd.yml | 22 +- config/locales/gl.yml | 46 ++-- config/locales/he.yml | 38 ++- config/locales/hr.yml | 4 - config/locales/hu.yml | 65 +++-- config/locales/hy.yml | 5 - config/locales/id.yml | 14 - config/locales/io.yml | 55 +++- config/locales/is.yml | 46 ++-- config/locales/it.yml | 57 +++-- config/locales/ja.yml | 14 - config/locales/ka.yml | 9 - config/locales/kab.yml | 5 - config/locales/kk.yml | 12 - config/locales/ko.yml | 39 ++- config/locales/ku.yml | 57 +++-- config/locales/lt.yml | 6 - config/locales/lv.yml | 68 +++-- config/locales/ml.yml | 2 - config/locales/ms.yml | 5 - config/locales/nl.yml | 13 - config/locales/nn.yml | 12 - config/locales/no.yml | 12 - config/locales/oc.yml | 9 - config/locales/pl.yml | 36 ++- config/locales/pt-BR.yml | 85 +++++-- config/locales/pt-PT.yml | 57 +++-- config/locales/ru.yml | 41 ++- config/locales/sc.yml | 13 - config/locales/si.yml | 16 -- config/locales/simple_form.ca.yml | 1 + config/locales/simple_form.cs.yml | 10 + config/locales/simple_form.da.yml | 1 + config/locales/simple_form.de.yml | 29 ++- config/locales/simple_form.es-AR.yml | 1 + config/locales/simple_form.es-MX.yml | 2 + config/locales/simple_form.es.yml | 1 + config/locales/simple_form.fi.yml | 2 + config/locales/simple_form.gl.yml | 1 + config/locales/simple_form.he.yml | 3 + config/locales/simple_form.hu.yml | 3 +- config/locales/simple_form.io.yml | 3 + config/locales/simple_form.is.yml | 5 +- config/locales/simple_form.it.yml | 1 + config/locales/simple_form.ko.yml | 1 + config/locales/simple_form.ku.yml | 3 +- config/locales/simple_form.lv.yml | 1 + config/locales/simple_form.pl.yml | 2 + config/locales/simple_form.pt-PT.yml | 1 + config/locales/simple_form.ru.yml | 1 + config/locales/simple_form.sl.yml | 1 + config/locales/simple_form.th.yml | 1 + config/locales/simple_form.tr.yml | 1 + config/locales/simple_form.uk.yml | 1 + config/locales/simple_form.vi.yml | 1 + config/locales/simple_form.zh-CN.yml | 4 +- config/locales/simple_form.zh-TW.yml | 1 + config/locales/sk.yml | 14 - config/locales/sl.yml | 54 ++-- config/locales/sq.yml | 16 -- config/locales/sr-Latn.yml | 7 - config/locales/sr.yml | 10 - config/locales/sv.yml | 10 - config/locales/th.yml | 35 ++- config/locales/tr.yml | 44 ++-- config/locales/uk.yml | 72 ++++-- config/locales/vi.yml | 39 ++- config/locales/zh-CN.yml | 42 +-- config/locales/zh-HK.yml | 12 - config/locales/zh-TW.yml | 39 ++- 129 files changed, 1692 insertions(+), 1516 deletions(-) diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index dba626299..50fc3f25c 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -93,8 +93,8 @@ "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Namái multimedia", "community.column_settings.remote_only": "Remote only", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "Camudar la llingua", + "compose.language.search": "Buscar llingües…", "compose_form.direct_message_warning_learn_more": "Saber más", "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.", @@ -149,7 +149,7 @@ "directory.recently_active": "Actividá recién", "embed.instructions": "Empotra esti estáu nun sitiu web copiando'l códigu d'embaxo.", "embed.preview": "Asina ye cómo va vese:", - "emoji_button.activity": "Actividaes", + "emoji_button.activity": "Actividá", "emoji_button.clear": "Clear", "emoji_button.custom": "Custom", "emoji_button.flags": "Banderes", @@ -170,7 +170,7 @@ "empty_column.blocks": "Entá nun bloquiesti a nengún usuariu.", "empty_column.bookmarked_statuses": "Entá nun tienes nengún barritu en Marcadores. Cuando amiestes unu, va amosase equí.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "Entá nun tienes nengún mensaxe direutu. Cuando unvies o recibas dalgún, apaez equí.", + "empty_column.direct": "Entá nun tienes nengún mensaxe direutu. Cuando unvies o recibas dalgún, apaecen equí.", "empty_column.domain_blocks": "Entá nun hai dominios anubríos.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Entá nun tienes nengún barritu en Favoritos. Cuando amiestes unu, va amosase equí.", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 4ded919e0..ebe795039 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -18,12 +18,12 @@ "account.followers": "Последователи", "account.followers.empty": "Все още никой не следва този потребител.", "account.followers_counter": "{count, plural, one {{counter} Последовател} other {{counter} Последователи}}", - "account.following": "Following", + "account.following": "Последвани", "account.following_counter": "{count, plural, one {{counter} Последван} other {{counter} Последвани}}", "account.follows.empty": "Този потребител все още не следва никого.", "account.follows_you": "Твой последовател", "account.hide_reblogs": "Скриване на споделяния от @{name}", - "account.joined": "Joined {date}", + "account.joined": "Присъединил се на {date}", "account.link_verified_on": "Собствеността върху тази връзка е проверена на {date}", "account.locked_info": "Този акаунт е поверително заключен. Собственикът преглежда ръчно кой може да го следва.", "account.media": "Мултимедия", @@ -50,9 +50,9 @@ "account_note.placeholder": "Click to add a note", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", - "admin.dashboard.retention.average": "Average", + "admin.dashboard.retention.average": "Средно", "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.retention.cohort_size": "Нови потребители", "alert.rate_limited.message": "Моля, опитайте отново след {retry_time, time, medium}.", "alert.rate_limited.title": "Скоростта е ограничена", "alert.unexpected.message": "Възникна неочаквана грешка.", @@ -71,7 +71,7 @@ "column.blocks": "Блокирани потребители", "column.bookmarks": "Отметки", "column.community": "Локална емисия", - "column.direct": "Direct messages", + "column.direct": "Лични съобщения", "column.directory": "Преглед на профили", "column.domain_blocks": "Hidden domains", "column.favourites": "Любими", @@ -124,8 +124,8 @@ "confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete_list.confirm": "Изтриване", "confirmations.delete_list.message": "Сигурни ли сте, че искате да изтриете окончателно този списък?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "Отмени", + "confirmations.discard_edit_media.message": "Имате незапазени промени на описанието или прегледа на медията, отмяна въпреки това?", "confirmations.domain_block.confirm": "Hide entire domain", "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.", "confirmations.logout.confirm": "Излизане", @@ -143,14 +143,14 @@ "conversation.mark_as_read": "Маркиране като прочетено", "conversation.open": "Преглед на разговор", "conversation.with": "С {names}", - "directory.federated": "From known fediverse", + "directory.federated": "От познат федивърс", "directory.local": "Само от {domain}", "directory.new_arrivals": "Новодошли", "directory.recently_active": "Наскоро активни", "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Ето как ще изглежда:", "emoji_button.activity": "Дейност", - "emoji_button.clear": "Clear", + "emoji_button.clear": "Изчисти", "emoji_button.custom": "Персонализирано", "emoji_button.flags": "Знамена", "emoji_button.food": "Храна и напитки", @@ -170,12 +170,12 @@ "empty_column.blocks": "Не сте блокирали потребители все още.", "empty_column.bookmarked_statuses": "Все още нямате отметнати публикации. Когато отметнете някоя, тя ще се покаже тук.", "empty_column.community": "Локалната емисия е празна. Напишете нещо публично, за да започнете!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "Все още нямате лични съобщения. Когато изпратите или получите ще се покаже тук.", "empty_column.domain_blocks": "There are no hidden domains yet.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "Няма нищо популярно в момента. Проверете пак по-късно!", "empty_column.favourited_statuses": "Все още нямате любими публикации. Когато поставите някоя в любими, тя ще се покаже тук.", "empty_column.favourites": "Все още никой не е поставил тази публикация в любими. Когато някой го направи, ще се покаже тук.", - "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", + "empty_column.follow_recommendations": "Изглежда, че няма генерирани предложения за вас. Можете да опитате да търсите за хора, които знаете или да разгледате популярните тагове.", "empty_column.follow_requests": "Все още нямате заявки за последване. Когато получите такава, тя ще се покаже тук.", "empty_column.hashtag": "В този хаштаг няма нищо все още.", "empty_column.home": "Вашата начална емисия е празна! Посетете {public} или използвайте търсене, за да започнете и да се запознаете с други потребители.", @@ -191,12 +191,12 @@ "error.unexpected_crash.next_steps_addons": "Опитайте да ги деактивирате и да опресните страницата. Ако това не помогне, може все още да използвате Mastodon чрез различен браузър или приложение.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.report_issue": "Сигнал за проблем", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", + "explore.search_results": "Резултати от търсенето", + "explore.suggested_follows": "За вас", + "explore.title": "Разглеждане", + "explore.trending_links": "Новини", + "explore.trending_statuses": "Публикации", + "explore.trending_tags": "Тагове", "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", "filter_modal.added.context_mismatch_title": "Context mismatch!", "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", @@ -213,7 +213,7 @@ "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", "filter_modal.select_filter.title": "Filter this post", "filter_modal.title.status": "Filter a post", - "follow_recommendations.done": "Done", + "follow_recommendations.done": "Готово", "follow_recommendations.heading": "Следвайте хора, които харесвате, за да виждате техните съобщения! Ето някои предложения.", "follow_recommendations.lead": "Съобщения от хора, които следвате, ще се показват в хронологичен ред на вашата главна страница. Не се страхувайте, че ще сгрешите, по всяко време много лесно можете да спрете да ги следвате!", "follow_request.authorize": "Упълномощаване", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index f67a0f3fc..c3fe88121 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -197,22 +197,22 @@ "explore.trending_links": "Notícies", "explore.trending_statuses": "Publicacions", "explore.trending_tags": "Etiquetes", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Aquesta categoria del filtr no aplica al context en el que has accedit a aquest apunt. Si vols que l'apunt sigui filtrat també en aquest context, hauràs d'editar el filtre.", + "filter_modal.added.context_mismatch_title": "El context no coincideix!", + "filter_modal.added.expired_explanation": "La categoria d'aquest filtre ha caducat, necesitaràs canviar la seva data de caducitat per a aplicar-la.", + "filter_modal.added.expired_title": "Filtre caducat!", + "filter_modal.added.review_and_configure": "Per a revisar i configurar aquesta categoria de filtre, ves a {settings_link}.", + "filter_modal.added.review_and_configure_title": "Configuració del filtre", + "filter_modal.added.settings_link": "pàgina de configuració", + "filter_modal.added.short_explanation": "Aquest apunt s'ha afegit a la següent categoria de filtre: {title}.", + "filter_modal.added.title": "Filtre afegit!", + "filter_modal.select_filter.context_mismatch": "no aplica en aquest context", + "filter_modal.select_filter.expired": "caducat", + "filter_modal.select_filter.prompt_new": "Nova categoria: {name}", + "filter_modal.select_filter.search": "Cerca o crea", + "filter_modal.select_filter.subtitle": "Usa una categoria existent o crea una nova", + "filter_modal.select_filter.title": "Filtra aquest apunt", + "filter_modal.title.status": "Filtre un apunt", "follow_recommendations.done": "Fet", "follow_recommendations.heading": "Segueix a la gent de la que t'agradaria veure les seves publicacions! Aquí hi ha algunes recomanacions.", "follow_recommendations.lead": "Les publicacions del usuaris que segueixes es mostraran en ordre cronològic en la teva línia de temps Inici. No tinguis por en cometre errors, pots fàcilment deixar de seguir-los en qualsevol moment!", @@ -238,7 +238,7 @@ "hashtag.column_settings.tag_mode.none": "Cap d’aquests", "hashtag.column_settings.tag_toggle": "Inclou etiquetes addicionals per a aquesta columna", "hashtag.follow": "Segueix etiqueta", - "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.total_volume": "Volumen total en els darrers {days, plural, one {day} other {{days} dies}}", "hashtag.unfollow": "Deixa de seguir etiqueta", "home.column_settings.basic": "Bàsic", "home.column_settings.show_reblogs": "Mostra els impulsos", @@ -487,7 +487,7 @@ "status.edited_x_times": "Editat {count, plural, one {{count} vegada} other {{count} vegades}}", "status.embed": "Incrusta", "status.favourite": "Favorit", - "status.filter": "Filter this post", + "status.filter": "Filtre aquest apunt", "status.filtered": "Filtrat", "status.hide": "Amaga publicació", "status.history.created": "{name} ha creat {date}", @@ -538,7 +538,7 @@ "timeline_hint.resources.followers": "Seguidors", "timeline_hint.resources.follows": "Seguiments", "timeline_hint.resources.statuses": "Publicacions més antigues", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} persones}} en els passats {days, plural, one {day} other {{days} dies}}", "trends.trending_now": "En tendència", "ui.beforeunload": "El teu esborrany es perdrà si surts de Mastodon.", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 8f015b50d..80cb8e6c6 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -197,22 +197,22 @@ "explore.trending_links": "Nyheder", "explore.trending_statuses": "Indlæg", "explore.trending_tags": "Hashtags", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Denne filterkategori omfatter ikke konteksten, hvorunder dette indlæg er tilgået. Redigér filteret, hvis indlægget også ønskes filtreret i denne kontekst.", + "filter_modal.added.context_mismatch_title": "Kontekstmisforhold!", + "filter_modal.added.expired_explanation": "Denne filterkategori er udløbet. Ændr dens udløbsdato, for at anvende den.", + "filter_modal.added.expired_title": "Udløbet filter!", + "filter_modal.added.review_and_configure": "Gå til {settings_link} for at gennemse og yderligere opsætte denne filterkategori.", + "filter_modal.added.review_and_configure_title": "Filterindstillinger", + "filter_modal.added.settings_link": "indstillingsside", + "filter_modal.added.short_explanation": "Dette indlæg er nu føjet til flg. filterkategori: {title}.", + "filter_modal.added.title": "Filter tilføjet!", + "filter_modal.select_filter.context_mismatch": "gælder ikke for denne kontekst", + "filter_modal.select_filter.expired": "udløbet", + "filter_modal.select_filter.prompt_new": "Ny kategori: {name}", + "filter_modal.select_filter.search": "Søg eller opret", + "filter_modal.select_filter.subtitle": "Vælg en eksisterende kategori eller opret en ny", + "filter_modal.select_filter.title": "Filtrér dette indlæg", + "filter_modal.title.status": "Filtrér et indlæg", "follow_recommendations.done": "Udført", "follow_recommendations.heading": "Følg personer du gerne vil se indlæg fra! Her er nogle forslag.", "follow_recommendations.lead": "Indlæg, fra personer du følger, vil fremgå kronologisk ordnet i dit hjemmefeed. Vær ikke bange for at begå fejl, da du altid og meget nemt kan ændre dit valg!", @@ -487,7 +487,7 @@ "status.edited_x_times": "Redigeret {count, plural, one {{count} gang} other {{count} gange}}", "status.embed": "Indlejr", "status.favourite": "Favorit", - "status.filter": "Filter this post", + "status.filter": "Filtrér dette indlæg", "status.filtered": "Filtreret", "status.hide": "Skjul indlæg", "status.history.created": "{name} oprettet {date}", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 2df1dc0ea..9bed25526 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -106,7 +106,7 @@ "compose_form.poll.option_placeholder": "Wahl {number}", "compose_form.poll.remove_option": "Wahl entfernen", "compose_form.poll.switch_to_multiple": "Umfrage ändern, um mehrere Optionen zu erlauben", - "compose_form.poll.switch_to_single": "Umfrage ändern, um eine einzige Wahl zu erlauben", + "compose_form.poll.switch_to_single": "Umfrage ändern, sodass nur eine einzige Auswahl erlaubt ist", "compose_form.publish": "Veröffentlichen", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Änderungen speichern", @@ -175,20 +175,20 @@ "empty_column.explore_statuses": "Momentan ist nichts im Trend. Schau später wieder vorbei!", "empty_column.favourited_statuses": "Du hast noch keine favorisierten Tröts. Wenn du einen favorisierst, wird er hier erscheinen.", "empty_column.favourites": "Noch niemand hat diesen Beitrag favorisiert. Sobald es jemand tut, wird das hier angezeigt.", - "empty_column.follow_recommendations": "Es sieht so aus, als könnten keine Vorschläge für dich generiert werden. Du kannst versuchen nach Leuten zu suchen, die du vielleicht kennst oder du kannst angesagte Hashtags erkunden.", + "empty_column.follow_recommendations": "Es sieht so aus, als könnten keine Vorschläge für dich generiert werden. Du kannst versuchen, nach Leuten zu suchen, die du vielleicht kennst, oder du kannst angesagte Hashtags erkunden.", "empty_column.follow_requests": "Du hast noch keine Folge-Anfragen. Sobald du eine erhältst, wird sie hier angezeigt.", "empty_column.hashtag": "Unter diesem Hashtag gibt es noch nichts.", "empty_column.home": "Deine Startseite ist leer! Folge mehr Leuten, um sie zu füllen. {suggestions}", "empty_column.home.suggestions": "Ein paar Vorschläge ansehen", "empty_column.list": "Diese Liste ist derzeit leer. Wenn Konten auf dieser Liste neue Beiträge veröffentlichen werden sie hier erscheinen.", - "empty_column.lists": "Du hast noch keine Listen. Wenn du eine anlegst, wird sie hier angezeigt.", + "empty_column.lists": "Du hast noch keine Listen. Wenn du eine anlegst, wird sie hier angezeigt werden.", "empty_column.mutes": "Du hast keine Profile stummgeschaltet.", "empty_column.notifications": "Du hast noch keine Mitteilungen. Interagiere mit anderen, um ins Gespräch zu kommen.", "empty_column.public": "Hier ist nichts zu sehen! Schreibe etwas öffentlich oder folge Profilen von anderen Servern, um die Zeitleiste aufzufüllen", - "error.unexpected_crash.explanation": "Aufgrund eines Fehlers in unserem Code oder einer Browsereinkompatibilität konnte diese Seite nicht korrekt angezeigt werden.", + "error.unexpected_crash.explanation": "Aufgrund eines Fehlers in unserem Code oder einer Browser-Inkompatibilität konnte diese Seite nicht korrekt angezeigt werden.", "error.unexpected_crash.explanation_addons": "Diese Seite konnte nicht korrekt angezeigt werden. Dieser Fehler wird wahrscheinlich durch ein Browser-Add-on oder automatische Übersetzungswerkzeuge verursacht.", - "error.unexpected_crash.next_steps": "Versuche die Seite zu aktualisieren. Wenn das nicht hilft, kannst du Mastodon über einen anderen Browser oder eine native App verwenden.", - "error.unexpected_crash.next_steps_addons": "Versuche sie zu deaktivieren und lade dann die Seite neu. Wenn das Problem weiterhin besteht, solltest du Mastodon über einen anderen Browser oder eine native App nutzen.", + "error.unexpected_crash.next_steps": "Versuche, die Seite zu aktualisieren. Wenn das nicht hilft, kannst du Mastodon über einen anderen Browser oder eine native App verwenden.", + "error.unexpected_crash.next_steps_addons": "Versuche, sie zu deaktivieren, und lade dann die Seite neu. Wenn das Problem weiterhin besteht, solltest du Mastodon über einen anderen Browser oder eine native App nutzen.", "errors.unexpected_crash.copy_stacktrace": "Fehlerlog in die Zwischenablage kopieren", "errors.unexpected_crash.report_issue": "Problem melden", "explore.search_results": "Suchergebnisse", @@ -197,22 +197,22 @@ "explore.trending_links": "Nachrichten", "explore.trending_statuses": "Beiträge", "explore.trending_tags": "Hashtags", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Diese Filterkategorie gilt nicht für den Kontext, in welchem du auf diesen Beitrag zugegriffen hast. Wenn der Beitrag auch in diesem Kontext gefiltert werden soll, musst du den Filter bearbeiten.", + "filter_modal.added.context_mismatch_title": "Kontext stimmt nicht überein!", + "filter_modal.added.expired_explanation": "Diese Filterkategrie ist abgelaufen, du musst das Ablaufdatum für diese Kategorie ändern.", + "filter_modal.added.expired_title": "Abgelaufener Filter!", + "filter_modal.added.review_and_configure": "Um diese Filterkategorie zu überprüfen und weiter zu konfigurieren, gehe zu {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filtereinstellungen", + "filter_modal.added.settings_link": "Einstellungsseite", + "filter_modal.added.short_explanation": "Dieser Post wurde zu folgender Filterkategorie hinzugefügt: {title}.", + "filter_modal.added.title": "Filter hinzugefügt!", + "filter_modal.select_filter.context_mismatch": "gilt nicht für diesen Kontext", + "filter_modal.select_filter.expired": "abgelaufen", + "filter_modal.select_filter.prompt_new": "Neue Kategorie: {name}", + "filter_modal.select_filter.search": "Suchen oder Erstellen", + "filter_modal.select_filter.subtitle": "Eine existierende Kategorie benutzen oder eine erstellen", + "filter_modal.select_filter.title": "Diesen Beitrag filtern", + "filter_modal.title.status": "Einen Beitrag filtern", "follow_recommendations.done": "Fertig", "follow_recommendations.heading": "Folge Leuten, von denen du Beiträge sehen möchtest! Hier sind einige Vorschläge.", "follow_recommendations.lead": "Beiträge von Personen, denen du folgst, werden in chronologischer Reihenfolge auf deiner Startseite angezeigt. Hab keine Angst, Fehler zu machen, du kannst den Leuten jederzeit wieder entfolgen!", @@ -234,8 +234,8 @@ "hashtag.column_settings.select.no_options_message": "Keine Vorschläge gefunden", "hashtag.column_settings.select.placeholder": "Hashtags eintragen…", "hashtag.column_settings.tag_mode.all": "All diese", - "hashtag.column_settings.tag_mode.any": "Eins von diesen", - "hashtag.column_settings.tag_mode.none": "Keins von diesen", + "hashtag.column_settings.tag_mode.any": "Eines von diesen", + "hashtag.column_settings.tag_mode.none": "Keines von diesen", "hashtag.column_settings.tag_toggle": "Zusätzliche Hashtags für diese Spalte einfügen", "hashtag.follow": "Hashtag folgen", "hashtag.total_volume": "Gesamtes Aufkommen {days, plural, one {am letzten Tag} other {in den letzten {days} Tagen}}", @@ -300,7 +300,7 @@ "lists.replies_policy.list": "Mitglieder der Liste", "lists.replies_policy.none": "Niemand", "lists.replies_policy.title": "Antworten anzeigen für:", - "lists.search": "Suche nach Leuten denen du folgst", + "lists.search": "Suche nach Leuten, denen du folgst", "lists.subheading": "Deine Listen", "load_pending": "{count, plural, one {# neuer Beitrag} other {# neue Beiträge}}", "loading_indicator.label": "Wird geladen …", @@ -341,7 +341,7 @@ "notification.follow_request": "{name} möchte dir folgen", "notification.mention": "{name} hat dich erwähnt", "notification.own_poll": "Deine Umfrage ist beendet", - "notification.poll": "Eine Umfrage in der du abgestimmt hast ist vorbei", + "notification.poll": "Eine Umfrage, an der du teilgenommen hast, ist vorbei", "notification.reblog": "{name} hat deinen Beitrag geteilt", "notification.status": "{name} hat gerade etwas gepostet", "notification.update": "{name} bearbeitete einen Beitrag", @@ -430,7 +430,7 @@ "report.forward": "An {target} weiterleiten", "report.forward_hint": "Dieses Konto gehört zu einem anderen Server. Soll eine anonymisierte Kopie der Meldung auch dorthin geschickt werden?", "report.mute": "Stummschalten", - "report.mute_explanation": "Du wirst die Beiträge vom Konto nicht mehr sehen. Das Konto kann dir immernoch folgen und die Person hinter dem Konto wird deine Beiträge sehen können und nicht wissen, dass du sie stumm geschaltet hast.", + "report.mute_explanation": "Du wirst die Beiträge vom Konto nicht mehr sehen. Das Konto kann dir immer noch folgen, und die Person hinter dem Konto wird deine Beiträge sehen können und nicht wissen, dass du sie stummgeschaltet hast.", "report.next": "Weiter", "report.placeholder": "Zusätzliche Kommentare", "report.reasons.dislike": "Das gefällt mir nicht", @@ -447,7 +447,7 @@ "report.statuses.title": "Gibt es Beiträge, die diesen Bericht unterstützen?", "report.submit": "Absenden", "report.target": "{target} melden", - "report.thanks.take_action": "Das sind deine Möglichkeiten, zu bestimmen, was du auf Mastodon sehen möchtest:", + "report.thanks.take_action": "Das sind deine Möglichkeiten zu bestimmen, was du auf Mastodon sehen möchtest:", "report.thanks.take_action_actionable": "Während wir dies überprüfen, kannst du gegen @{name} vorgehen:", "report.thanks.title": "Möchtest du das nicht sehen?", "report.thanks.title_actionable": "Vielen Dank für die Meldung, wir werden uns das ansehen.", @@ -460,7 +460,7 @@ "report_notification.open": "Meldung öffnen", "search.placeholder": "Suche", "search_popout.search_format": "Fortgeschrittenes Suchformat", - "search_popout.tips.full_text": "Einfache Texteingabe gibt Beiträge, die du geschrieben, favorisiert und geteilt hast zurück. Außerdem auch Beiträge in denen du erwähnt wurdest, aber auch passende Nutzernamen, Anzeigenamen oder Hashtags.", + "search_popout.tips.full_text": "Einfache Texteingabe gibt Beiträge, die du geschrieben, favorisiert und geteilt hast, zurück; außerdem auch Beiträge, in denen du erwähnt wurdest, aber auch passende Nutzernamen, Anzeigenamen oder Hashtags.", "search_popout.tips.hashtag": "Hashtag", "search_popout.tips.status": "Tröt", "search_popout.tips.text": "Einfache Texteingabe gibt Anzeigenamen, Benutzernamen und Hashtags zurück", @@ -487,7 +487,7 @@ "status.edited_x_times": "{count, plural, one {{count} mal} other {{count} mal}} bearbeitet", "status.embed": "Einbetten", "status.favourite": "Favorisieren", - "status.filter": "Filter this post", + "status.filter": "Diesen Beitrag filtern", "status.filtered": "Gefiltert", "status.hide": "Tröt verbergen", "status.history.created": "{name} erstellte {date}", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 8e4b906a2..27ebd749d 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -197,22 +197,22 @@ "explore.trending_links": "Noticias", "explore.trending_statuses": "Mensajes", "explore.trending_tags": "Etiquetas", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Esta categoría de filtro no se aplica al contexto en el que accediste a este mensaje. Si querés que el mensaje sea filtrado también en este contexto, vas a tener que editar el filtro.", + "filter_modal.added.context_mismatch_title": "¡El contexto no coincide!", + "filter_modal.added.expired_explanation": "Esta categoría de filtro caducó; vas a necesitar cambiar la fecha de caducidad para que se aplique.", + "filter_modal.added.expired_title": "¡Filtro caducado!", + "filter_modal.added.review_and_configure": "Para revisar y configurar esta categoría de filtros, visitá a la {settings_link}.", + "filter_modal.added.review_and_configure_title": "Configuración de filtro", + "filter_modal.added.settings_link": "página de configuración", + "filter_modal.added.short_explanation": "Este mensaje fue agregado a la siguiente categoría de filtros: {title}.", + "filter_modal.added.title": "¡Filtro agregado!", + "filter_modal.select_filter.context_mismatch": "no aplica a este contexto", + "filter_modal.select_filter.expired": "expirado", + "filter_modal.select_filter.prompt_new": "Nueva categoría: {name}", + "filter_modal.select_filter.search": "Buscar o crear", + "filter_modal.select_filter.subtitle": "Usar una categoría existente o crear una nueva", + "filter_modal.select_filter.title": "Filtrar este mensaje", + "filter_modal.title.status": "Filtrar un mensaje", "follow_recommendations.done": "Listo", "follow_recommendations.heading": "¡Seguí cuentas cuyos mensajes te gustaría ver! Acá tenés algunas sugerencias.", "follow_recommendations.lead": "Los mensajes de las cuentas que seguís aparecerán en orden cronológico en la columna \"Inicio\". No tengás miedo de meter la pata, ¡podés dejar de seguir cuentas fácilmente en cualquier momento!", @@ -487,7 +487,7 @@ "status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} veces}}", "status.embed": "Insertar", "status.favourite": "Marcar como favorito", - "status.filter": "Filter this post", + "status.filter": "Filtrar este mensaje", "status.filtered": "Filtrado", "status.hide": "Ocultar mensaje", "status.history.created": "Creado por {name} el {date}", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 96f0a59dc..bb03a2975 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "¡Ups!", "announcement.announcement": "Anuncio", "attachments_list.unprocessed": "(sin procesar)", - "audio.hide": "Hide audio", + "audio.hide": "Ocultar audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Puedes hacer clic en {combo} para saltar este aviso la próxima vez", "bundle_column_error.body": "Algo salió mal al cargar este componente.", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 5de01d5fc..7c9700ecb 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -197,22 +197,22 @@ "explore.trending_links": "Noticias", "explore.trending_statuses": "Publicaciones", "explore.trending_tags": "Etiquetas", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Esta categoría de filtro no se aplica al contexto en el que ha accedido a esta publlicación. Si quieres que la publicación sea filtrada también en este contexto, tendrás que editar el filtro.", + "filter_modal.added.context_mismatch_title": "¡El contexto no coincide!", + "filter_modal.added.expired_explanation": "Esta categoría de filtro ha caducado, necesitará cambiar la fecha de caducidad para que se aplique.", + "filter_modal.added.expired_title": "¡Filtro caducado!", + "filter_modal.added.review_and_configure": "Para revisar y configurar esta categoría de filtros, vaya a {settings_link}.", + "filter_modal.added.review_and_configure_title": "Ajustes de filtro", + "filter_modal.added.settings_link": "página de ajustes", + "filter_modal.added.short_explanation": "Esta publicación ha sido añadida a la siguiente categoría de filtros: {title}.", + "filter_modal.added.title": "¡Filtro añadido!", + "filter_modal.select_filter.context_mismatch": "no se aplica a este contexto", + "filter_modal.select_filter.expired": "expirado", + "filter_modal.select_filter.prompt_new": "Nueva categoría: {name}", + "filter_modal.select_filter.search": "Buscar o crear", + "filter_modal.select_filter.subtitle": "Usar una categoría existente o crear una nueva", + "filter_modal.select_filter.title": "Filtrar esta publicación", + "filter_modal.title.status": "Filtrar una publicación", "follow_recommendations.done": "Hecho", "follow_recommendations.heading": "¡Sigue a gente que publique cosas que te gusten! Aquí tienes algunas sugerencias.", "follow_recommendations.lead": "Las publicaciones de la gente a la que sigas aparecerán ordenadas cronológicamente en Inicio. No tengas miedo de cometer errores, ¡puedes dejarles de seguir en cualquier momento con la misma facilidad!", @@ -487,7 +487,7 @@ "status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} veces}}", "status.embed": "Incrustado", "status.favourite": "Favorito", - "status.filter": "Filter this post", + "status.filter": "Filtrar esta publicación", "status.filtered": "Filtrado", "status.hide": "Ocultar publicación", "status.history.created": "{name} creó {date}", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 0dece0c51..52afeaa5d 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -197,22 +197,22 @@ "explore.trending_links": "Uutiset", "explore.trending_statuses": "Viestit", "explore.trending_tags": "Aihetunnisteet", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Tämä suodatinluokka ei koske asiayhteyttä, jossa olet käyttänyt tätä viestiä. Jos haluat, että viesti suodatetaan myös tässä yhteydessä, sinun on muokattava suodatinta.", + "filter_modal.added.context_mismatch_title": "Asiayhteys ei täsmää!", + "filter_modal.added.expired_explanation": "Tämä suodatinluokka on vanhentunut ja sinun on muutettava viimeistä voimassaolon päivää, jotta sitä voidaan käyttää.", + "filter_modal.added.expired_title": "Vanhentunut suodatin!", + "filter_modal.added.review_and_configure": "Voit tarkastella tätä suodatinluokkaa ja määrittää sen tarkemmin siirtymällä {settings_link}.", + "filter_modal.added.review_and_configure_title": "Suodattimen asetukset", + "filter_modal.added.settings_link": "asetukset sivu", + "filter_modal.added.short_explanation": "Tämä viesti on lisätty seuraavaan suodatinluokkaan: {title}.", + "filter_modal.added.title": "Suodatin lisätty!", + "filter_modal.select_filter.context_mismatch": "ei sovellu tähän asiayhteyteen", + "filter_modal.select_filter.expired": "vanhentunut", + "filter_modal.select_filter.prompt_new": "Uusi luokka: {name}", + "filter_modal.select_filter.search": "Etsi tai luo", + "filter_modal.select_filter.subtitle": "Käytä olemassa olevaa luokkaa tai luo uusi luokka", + "filter_modal.select_filter.title": "Suodata tämä viesti", + "filter_modal.title.status": "Suodata viesti", "follow_recommendations.done": "Valmis", "follow_recommendations.heading": "Seuraa ihmisiä, joilta haluaisit nähdä julkaisuja! Tässä on muutamia ehdotuksia.", "follow_recommendations.lead": "Seuraamiesi julkaisut näkyvät aikajärjestyksessä kotisyötteessä. Älä pelkää seurata vahingossa, voit lopettaa seuraamisen yhtä helposti!", @@ -487,7 +487,7 @@ "status.edited_x_times": "Muokattu {count, plural, one {{count} aika} other {{count} kertaa}}", "status.embed": "Upota", "status.favourite": "Tykkää", - "status.filter": "Filter this post", + "status.filter": "Suodata tämä viesti", "status.filtered": "Suodatettu", "status.hide": "Piilota toot", "status.history.created": "{name} luotu {date}", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index c58729271..f874637fa 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Oich!", "announcement.announcement": "Brath-fios", "attachments_list.unprocessed": "(gun phròiseasadh)", - "audio.hide": "Hide audio", + "audio.hide": "Falaich an fhuaim", "autosuggest_hashtag.per_week": "{count} san t-seachdain", "boost_modal.combo": "Brùth air {combo} nam b’ fheàrr leat leum a ghearradh thar seo an ath-thuras", "bundle_column_error.body": "Chaidh rudeigin cearr nuair a dh’fheuch sinn ris a’ cho-phàirt seo a luchdadh.", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 0c7baa332..c584dd551 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -197,22 +197,22 @@ "explore.trending_links": "Novas", "explore.trending_statuses": "Publicacións", "explore.trending_tags": "Cancelos", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Esta categoría de filtro non se aplica ao contexto no que accedeches a esta publicación. Se queres que a publicación se filtre nese contexto tamén, terás que editar o filtro.", + "filter_modal.added.context_mismatch_title": "Non concorda o contexto!", + "filter_modal.added.expired_explanation": "Esta categoría de filtro caducou, terás que cambiar a data de caducidade para que se aplique.", + "filter_modal.added.expired_title": "Filtro caducado!", + "filter_modal.added.review_and_configure": "Para revisar e despois configurar esta categoría de filtro, vaite a {settings_link}.", + "filter_modal.added.review_and_configure_title": "Axustes do filtro", + "filter_modal.added.settings_link": "páxina de axustes", + "filter_modal.added.short_explanation": "Engadiuse esta publicación á seguinte categoría de filtro: {title}.", + "filter_modal.added.title": "Filtro engadido!", + "filter_modal.select_filter.context_mismatch": "non se aplica neste contexto", + "filter_modal.select_filter.expired": "caducado", + "filter_modal.select_filter.prompt_new": "Nova categoría: {name}", + "filter_modal.select_filter.search": "Buscar ou crear", + "filter_modal.select_filter.subtitle": "Usar unha categoría existente ou crear unha nova", + "filter_modal.select_filter.title": "Filtrar esta publicación", + "filter_modal.title.status": "Filtrar unha publicación", "follow_recommendations.done": "Feito", "follow_recommendations.heading": "Segue a persoas das que queiras ler publicacións! Aqui tes unhas suxestións.", "follow_recommendations.lead": "As publicacións das persoas que segues aparecerán na túa cronoloxía de inicio ordenadas temporalmente. Non teñas medo a equivocarte, podes deixar de seguirlas igual de fácil en calquera momento!", @@ -487,7 +487,7 @@ "status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} veces}}", "status.embed": "Incrustar", "status.favourite": "Favorito", - "status.filter": "Filter this post", + "status.filter": "Filtrar esta publicación", "status.filtered": "Filtrado", "status.hide": "Agochar publicación", "status.history.created": "{name} creouno o {date}", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 281b91bc1..81253fd1f 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "אופס!", "announcement.announcement": "הכרזה", "attachments_list.unprocessed": "(לא מעובד)", - "audio.hide": "Hide audio", + "audio.hide": "השתק", "autosuggest_hashtag.per_week": "{count} לשבוע", "boost_modal.combo": "ניתן להקיש {combo} כדי לדלג בפעם הבאה", "bundle_column_error.body": "משהו השתבש בעת טעינת הרכיב הזה.", @@ -197,22 +197,22 @@ "explore.trending_links": "חדשות", "explore.trending_statuses": "פוסטים", "explore.trending_tags": "האשטאגים", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "קטגוריית הפילטר הזאת לא חלה על ההקשר שממנו הגעת אל הפוסט הזה. אם תרצה/י שהפוסט יסונן גם בהקשר זה, תצטרך/י לערוך את הפילטר.", + "filter_modal.added.context_mismatch_title": "אין התאמה להקשר!", + "filter_modal.added.expired_explanation": "פג תוקפה של קטגוריית הסינון הזו, יש צורך לשנות את תאריך התפוגה כדי שהסינון יוחל.", + "filter_modal.added.expired_title": "פג תוקף הפילטר!", + "filter_modal.added.review_and_configure": "לסקירה והתאמה מתקדמת של קטגוריית הסינון הזו, לכו ל{settings_link}.", + "filter_modal.added.review_and_configure_title": "אפשרויות סינון", + "filter_modal.added.settings_link": "דף הגדרות", + "filter_modal.added.short_explanation": "הפוסט הזה הוסף לקטגוריית הסינון הזו: {title}.", + "filter_modal.added.title": "הפילטר הוסף!", + "filter_modal.select_filter.context_mismatch": "לא חל בהקשר זה", + "filter_modal.select_filter.expired": "פג התוקף", + "filter_modal.select_filter.prompt_new": "קטגוריה חדשה {name}", + "filter_modal.select_filter.search": "חיפוש או יצירה", + "filter_modal.select_filter.subtitle": "שימוש בקטגורייה קיימת או יצירת אחת חדשה", + "filter_modal.select_filter.title": "סינון הפוסט הזה", + "filter_modal.title.status": "סנן פוסט", "follow_recommendations.done": "בוצע", "follow_recommendations.heading": "עקב/י אחרי אנשים שתרצה/י לראות את חצרוציהם! הנה כמה הצעות.", "follow_recommendations.lead": "חצרוצים מאנשים במעקב יופיעו בסדר כרונולוגי בפיד הבית. אל תחששו מטעויות, אפשר להסיר מעקב באותה הקלות ובכל זמן!", @@ -256,7 +256,7 @@ "keyboard_shortcuts.description": "תיאור", "keyboard_shortcuts.direct": "לפתיחת טור הודעות ישירות", "keyboard_shortcuts.down": "לנוע במורד הרשימה", - "keyboard_shortcuts.enter": "פתח חצרוץ", + "keyboard_shortcuts.enter": "פתח פוסט", "keyboard_shortcuts.favourite": "לחבב", "keyboard_shortcuts.favourites": "פתיחת רשימת מועדפים", "keyboard_shortcuts.federated": "פתיחת ציר זמן בין-קהילתי", @@ -270,7 +270,7 @@ "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": "פתיחת רשימת בקשות מעקב", @@ -362,7 +362,7 @@ "notifications.column_settings.reblog": "הדהודים:", "notifications.column_settings.show": "הצגה בטור", "notifications.column_settings.sound": "שמע מופעל", - "notifications.column_settings.status": "New toots:", + "notifications.column_settings.status": "פוסטים חדשים:", "notifications.column_settings.unread_notifications.category": "התראות שלא נקראו", "notifications.column_settings.unread_notifications.highlight": "הבלט התראות שלא נקראו", "notifications.column_settings.update": "שינויים:", @@ -424,13 +424,13 @@ "report.category.subtitle": "בחר/י את המתאים ביותר", "report.category.title": "ספר/י לנו מה קורה עם ה-{type} הזה", "report.category.title_account": "פרופיל", - "report.category.title_status": "חצרוץ", + "report.category.title_status": "פוסט", "report.close": "בוצע", "report.comment.title": "האם יש דבר נוסף שלדעתך חשוב שנדע?", "report.forward": "קדם ל-{target}", "report.forward_hint": "חשבון זה הוא משרת אחר. האם לשלוח בנוסף עותק אנונימי לשם?", "report.mute": "להשתיק", - "report.mute_explanation": "לא ניתן יהיה לראות את חצרוציהם. הם עדיין יוכלו לעקוב אחריך ולראות את חצרוציך ולא ידעו שהם מושתקים.", + "report.mute_explanation": "לא ניתן יהיה לראות את הפוסטים. הם עדיין יוכלו לעקוב אחריך ולראות את הפוסטים שלך ולא ידעו שהם מושתקים.", "report.next": "הבא", "report.placeholder": "הערות נוספות", "report.reasons.dislike": "אני לא אוהב את זה", @@ -444,7 +444,7 @@ "report.rules.subtitle": "בחר/י את כל המתאימים", "report.rules.title": "אילו חוקים מופרים?", "report.statuses.subtitle": "בחר/י את כל המתאימים", - "report.statuses.title": "האם ישנם חצרוצים התומכים בדיווח זה?", + "report.statuses.title": "האם ישנם פוסטים התומכים בדיווח זה?", "report.submit": "שליחה", "report.target": "דיווח על {target}", "report.thanks.take_action": "הנה כמה אפשרויות לשליטה בתצוגת מסטודון:", @@ -487,7 +487,7 @@ "status.edited_x_times": "נערך {count, plural, one {פעם {count}} other {{count} פעמים}}", "status.embed": "הטמעה", "status.favourite": "חיבוב", - "status.filter": "Filter this post", + "status.filter": "סנן פוסט זה", "status.filtered": "סונן", "status.hide": "הסתר פוסט", "status.history.created": "{name} יצר/ה {date}", @@ -505,7 +505,7 @@ "status.reblog": "הדהוד", "status.reblog_private": "להדהד ברמת הנראות המקורית", "status.reblogged_by": "{name} הידהד/ה:", - "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", + "status.reblogs.empty": "עוד לא הידהדו את הפוסט הזה. כאשר זה יקרה, ההדהודים יופיעו כאן.", "status.redraft": "מחיקה ועריכה מחדש", "status.remove_bookmark": "הסרת סימניה", "status.reply": "תגובה", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index ce25cd103..08cb01dc3 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -197,22 +197,22 @@ "explore.trending_links": "Hírek", "explore.trending_statuses": "Bejegyzések", "explore.trending_tags": "Hashtagek", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Ez a szűrőkategória nem érvényes abban a környezetben, amelyből elérted ezt a bejegyzést. Ha ebben a környezetben is szűrni szeretnéd a bejegyzést, akkor szerkesztened kell a szűrőt.", + "filter_modal.added.context_mismatch_title": "Környezeti eltérés.", + "filter_modal.added.expired_explanation": "Ez a szűrőkategória elévült, a használatához módosítanod kell az elévülési dátumot.", + "filter_modal.added.expired_title": "Elévült szűrő.", + "filter_modal.added.review_and_configure": "A szűrőkategória felülvizsgálatához és további beállításához ugorjon a {settings_link} oldalra.", + "filter_modal.added.review_and_configure_title": "Szűrőbeállítások", + "filter_modal.added.settings_link": "beállítások oldal", + "filter_modal.added.short_explanation": "A következő bejegyzés hozzá lett adva a következő szűrőkategóriához: {title}.", + "filter_modal.added.title": "Szűrő hozzáadva.", + "filter_modal.select_filter.context_mismatch": "nem érvényes erre a környezetre", + "filter_modal.select_filter.expired": "elévült", + "filter_modal.select_filter.prompt_new": "Új kategória: {name}", + "filter_modal.select_filter.search": "Keresés vagy létrehozás", + "filter_modal.select_filter.subtitle": "Válassz egy meglévő kategóriát, vagy hozz létre egy újat", + "filter_modal.select_filter.title": "E bejegyzés szűrése", + "filter_modal.title.status": "Egy bejegyzés szűrése", "follow_recommendations.done": "Kész", "follow_recommendations.heading": "Kövesd azokat, akiknek a bejegyzéseit látni szeretnéd! Itt van néhány javaslat.", "follow_recommendations.lead": "Az általad követettek bejegyzései a saját idővonaladon fognak megjelenni időrendi sorrendben. Ne félj attól, hogy hibázol! A követést bármikor, ugyanilyen könnyen visszavonhatod!", @@ -487,7 +487,7 @@ "status.edited_x_times": "{count, plural, one {{count} alkalommal} other {{count} alkalommal}} szerkesztve", "status.embed": "Beágyazás", "status.favourite": "Kedvenc", - "status.filter": "Filter this post", + "status.filter": "E bejegyzés szűrése", "status.filtered": "Megszűrt", "status.hide": "Bejegyzés elrejtése", "status.history.created": "{name} létrehozta: {date}", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index f3bdb040c..28edbc7a3 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -197,22 +197,22 @@ "explore.trending_links": "Niuzi", "explore.trending_statuses": "Posti", "explore.trending_tags": "Hashtagi", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Ca filtrilgrupo ne relatesas kun informo de ca acesesita posto. Se vu volas posto filtresar kun ca informo anke, vu bezonas modifikar filtrilo.", + "filter_modal.added.context_mismatch_title": "Kontenajneparigeso!", + "filter_modal.added.expired_explanation": "Ca filtrilgrupo expiris, vu bezonas chanjar expirtempo por apliko.", + "filter_modal.added.expired_title": "Expirinta filtrilo!", + "filter_modal.added.review_and_configure": "Por kontrolar e plue ajustar ca filtrilgrupo, irez a {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filtrilopcioni", + "filter_modal.added.settings_link": "opcionpagino", + "filter_modal.added.short_explanation": "Ca posto adjuntesas a ca filtrilgrupo: {title}.", + "filter_modal.added.title": "Filtrilo adjuntesas!", + "filter_modal.select_filter.context_mismatch": "ne relatesas kun ca informo", + "filter_modal.select_filter.expired": "expiris", + "filter_modal.select_filter.prompt_new": "Nova grupo: {name}", + "filter_modal.select_filter.search": "Trovez o kreez", + "filter_modal.select_filter.subtitle": "Usez disponebla grupo o kreez novajo", + "filter_modal.select_filter.title": "Filtragez ca posto", + "filter_modal.title.status": "Filtragez posto", "follow_recommendations.done": "Fina", "follow_recommendations.heading": "Sequez personi quo igas posti quon vu volas vidar! Hike esas ula sugestati.", "follow_recommendations.lead": "Posti de personi quon vu sequas kronologiale montresos en vua hemniuzeto. Ne timas igar erori, vu povas desequar personi tam same facila irgatempe!", @@ -487,7 +487,7 @@ "status.edited_x_times": "Modifikesis {count, plural, one {{count} foyo} other {{count} foyi}}", "status.embed": "Eninsertez", "status.favourite": "Favorizar", - "status.filter": "Filter this post", + "status.filter": "Filtragez ca posto", "status.filtered": "Filtrita", "status.hide": "Celez posto", "status.history.created": "{name} kreis ye {date}", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 7e3a40fa7..e15656a50 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -197,22 +197,22 @@ "explore.trending_links": "Fréttir", "explore.trending_statuses": "Færslur", "explore.trending_tags": "Myllumerki", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Þessi síuflokkur á ekki við í því samhengi sem aðgangur þinn að þessari færslu felur í sér. Ef þú vilt að færslan sé einnig síuð í þessu samhengi, þá þarftu að breyta síunni.", + "filter_modal.added.context_mismatch_title": "Misræmi í samhengi!", + "filter_modal.added.expired_explanation": "Þessi síuflokkur er útrunninn, þú þarft að breyta gidistímanum svo hann geti átt við.", + "filter_modal.added.expired_title": "Útrunnin sía!", + "filter_modal.added.review_and_configure": "Til að yfirfara og stilla frekar þennan síuflokk, ættirðu að fara í {settings_link}.", + "filter_modal.added.review_and_configure_title": "Síustillingar", + "filter_modal.added.settings_link": "stillingasíða", + "filter_modal.added.short_explanation": "Þessari færslu hefur verið bætt í eftirfarandi síuflokk: {title}.", + "filter_modal.added.title": "Síu bætt við!", + "filter_modal.select_filter.context_mismatch": "á ekki við í þessu samhengi", + "filter_modal.select_filter.expired": "útrunnið", + "filter_modal.select_filter.prompt_new": "Nýr flokkur: {name}", + "filter_modal.select_filter.search": "Leita eða búa til", + "filter_modal.select_filter.subtitle": "Notaðu fyrirliggjandi flokk eða útbúðu nýjan", + "filter_modal.select_filter.title": "Sía þessa færslu", + "filter_modal.title.status": "Sía færslu", "follow_recommendations.done": "Lokið", "follow_recommendations.heading": "Fylgstu með fólki sem þú vilt sjá færslur frá! Hér eru nokkrar tillögur.", "follow_recommendations.lead": "Færslur frá fólki sem þú fylgist með eru birtar í tímaröð á heimastreyminu þínu. Þú þarft ekki að hræðast mistök, það er jafn auðvelt að hætta að fylgjast með fólki hvenær sem er!", @@ -487,7 +487,7 @@ "status.edited_x_times": "Breytt {count, plural, one {{count} sinni} other {{count} sinnum}}", "status.embed": "Ívefja", "status.favourite": "Eftirlæti", - "status.filter": "Filter this post", + "status.filter": "Sía þessa færslu", "status.filtered": "Síað", "status.hide": "Fela færslu", "status.history.created": "{name} útbjó {date}", @@ -539,7 +539,7 @@ "timeline_hint.resources.follows": "Fylgist með", "timeline_hint.resources.statuses": "Eldri færslur", "trends.counter_by_accounts": "{count, plural, one {{counter} aðili} other {{counter} manns}} {days, plural, one {síðasta sólarhringinn} other {síðustu {days} daga}}", - "trends.trending_now": "Í umræðunni núna", + "trends.trending_now": "Vinsælt núna", "ui.beforeunload": "Drögin tapast ef þú ferð út úr Mastodon.", "units.short.billion": "{count}B", "units.short.million": "{count}M", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 9f32a0685..3e59c2782 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -197,22 +197,22 @@ "explore.trending_links": "Novità", "explore.trending_statuses": "Post", "explore.trending_tags": "Hashtag", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "La categoria di questo filtro non si applica al contesto in cui hai acceduto a questo post. Se desideri che il post sia filtrato anche in questo contesto, dovrai modificare il filtro.", + "filter_modal.added.context_mismatch_title": "Contesto non corrispondente!", + "filter_modal.added.expired_explanation": "La categoria di questo filtro è scaduta, dovrai modificarne la data di scadenza per applicarlo.", + "filter_modal.added.expired_title": "Filtro scaduto!", + "filter_modal.added.review_and_configure": "Per revisionare e configurare ulteriormente la categoria di questo filtro, vai alle {settings_link}.", + "filter_modal.added.review_and_configure_title": "Impostazioni del filtro", + "filter_modal.added.settings_link": "pagina delle impostazioni", + "filter_modal.added.short_explanation": "Questo post è stato aggiunto alla categoria del filtro seguente: {title}.", + "filter_modal.added.title": "Filtro aggiunto!", + "filter_modal.select_filter.context_mismatch": "non si applica a questo contesto", + "filter_modal.select_filter.expired": "scaduto", + "filter_modal.select_filter.prompt_new": "Nuova categoria: {name}", + "filter_modal.select_filter.search": "Cerca o crea", + "filter_modal.select_filter.subtitle": "Usa una categoria esistente o creane una nuova", + "filter_modal.select_filter.title": "Filtra questo post", + "filter_modal.title.status": "Filtra un post", "follow_recommendations.done": "Fatto", "follow_recommendations.heading": "Segui le persone da cui vuoi vedere i messaggi! Ecco alcuni suggerimenti.", "follow_recommendations.lead": "I messaggi da persone che segui verranno visualizzati in ordine cronologico nel tuo home feed. Non abbiate paura di commettere errori, potete smettere di seguire le persone altrettanto facilmente in qualsiasi momento!", @@ -487,7 +487,7 @@ "status.edited_x_times": "Modificato {count, plural, one {{count} volta} other {{count} volte}}", "status.embed": "Incorpora", "status.favourite": "Apprezzato", - "status.filter": "Filter this post", + "status.filter": "Filtra questo post", "status.filtered": "Filtrato", "status.hide": "Nascondi toot", "status.history.created": "{name} ha creato {date}", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index e5dfc7689..300b2d7c1 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -197,22 +197,22 @@ "explore.trending_links": "소식", "explore.trending_statuses": "게시물", "explore.trending_tags": "해시태그", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "이 필터 카테고리는 당신이 이 게시물에 접근한 문맥에 적용되지 않습니다. 만약 이 문맥에서도 필터되길 원한다면, 필터를 수정해야 합니다.", + "filter_modal.added.context_mismatch_title": "문맥 불일치!", + "filter_modal.added.expired_explanation": "이 필터 카테고리는 만료되었습니다, 적용하려면 만료 일자를 변경할 필요가 있습니다.", + "filter_modal.added.expired_title": "만료된 필터!", + "filter_modal.added.review_and_configure": "이 필터 카테고리를 검토하거나 나중에 더 설정하려면, {settings_link}로 가십시오.", + "filter_modal.added.review_and_configure_title": "필터 설정", + "filter_modal.added.settings_link": "설정 페이지", + "filter_modal.added.short_explanation": "이 게시물을 다음 필터 카테고리에 추가되었습니다: {title}.", + "filter_modal.added.title": "필터 추가됨!", + "filter_modal.select_filter.context_mismatch": "이 문맥에 적용되지 않습니다", + "filter_modal.select_filter.expired": "만료됨", + "filter_modal.select_filter.prompt_new": "새 카테고리: {name}", + "filter_modal.select_filter.search": "검색 또는 생성", + "filter_modal.select_filter.subtitle": "기존의 카테고리를 사용하거나 새로 하나를 만듧니다", + "filter_modal.select_filter.title": "이 게시물을 필터", + "filter_modal.title.status": "게시물 필터", "follow_recommendations.done": "완료", "follow_recommendations.heading": "게시물을 받아 볼 사람들을 팔로우 하세요! 여기 몇몇의 추천이 있습니다.", "follow_recommendations.lead": "당신이 팔로우 하는 사람들의 게시물이 시간순으로 정렬되어 당신의 홈 피드에 표시될 것입니다. 실수를 두려워 하지 마세요, 언제든지 쉽게 팔로우 취소를 할 수 있습니다!", @@ -487,7 +487,7 @@ "status.edited_x_times": "{count}번 수정됨", "status.embed": "공유하기", "status.favourite": "좋아요", - "status.filter": "Filter this post", + "status.filter": "이 게시물을 필터", "status.filtered": "필터로 걸러짐", "status.hide": "툿 숨기기", "status.history.created": "{name} 님이 {date}에 생성함", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 27033efbf..06c0e6f7a 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -197,22 +197,22 @@ "explore.trending_links": "Nûçe", "explore.trending_statuses": "Şandî", "explore.trending_tags": "Hashtag", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Ev beşa parzûnê ji bo naveroka ku te tê de xwe gihandiye vê şandiyê nayê sepandin. Ku tu dixwazî şandî di vê naverokê de jî werê parzûnkirin, divê tu parzûnê biguherînî.", + "filter_modal.added.context_mismatch_title": "Naverok li hev nagire!", + "filter_modal.added.expired_explanation": "Ev beşa parzûnê qediya ye, ji bo ku tu bikaribe wê biguherîne divê tu dema qedandinê biguherînî.", + "filter_modal.added.expired_title": "Dema parzûnê qediya!", + "filter_modal.added.review_and_configure": "Ji bo nîrxandin û bêtir sazkirina vê beşa parzûnê, biçe {settings_link}.", + "filter_modal.added.review_and_configure_title": "Sazkariyên parzûnê", + "filter_modal.added.settings_link": "rûpela sazkariyan", + "filter_modal.added.short_explanation": "Ev şandî li beşa parzûna jêrîn hate tevlîkirin: {title}.", + "filter_modal.added.title": "Parzûn tevlî bû!", + "filter_modal.select_filter.context_mismatch": "di vê naverokê de nayê sepandin", + "filter_modal.select_filter.expired": "dema wê qediya", + "filter_modal.select_filter.prompt_new": "Beşa nû: {name}", + "filter_modal.select_filter.search": "Lê bigere an jî biafirîne", + "filter_modal.select_filter.subtitle": "Beşeke nû ya heyî bi kar bîne an jî yekî nû biafirîne", + "filter_modal.select_filter.title": "Vê şandiyê parzûn bike", + "filter_modal.title.status": "Şandiyekê parzûn bike", "follow_recommendations.done": "Qediya", "follow_recommendations.heading": "Mirovên ku tu dixwazî ji wan peyaman bibînî bişopîne! Hin pêşnîyar li vir in.", "follow_recommendations.lead": "Li gorî rêza kronolojîkî peyamên mirovên ku tu dişopînî dê demnameya te de xûya bike. Ji xeletiyan netirse, bi awayekî hêsan her wextî tu dikarî dev ji şopandinê berdî!", @@ -487,7 +487,7 @@ "status.edited_x_times": "{count, plural, one {{count} car} other {{count} car}} hate serrastkirin", "status.embed": "Hedimandî", "status.favourite": "Bijarte", - "status.filter": "Filter this post", + "status.filter": "Vê şandiyê parzûn bike", "status.filtered": "Parzûnkirî", "status.hide": "Şandiyê veşêre", "status.history.created": "{name} {date} afirand", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 1912dd7db..33f6832bf 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -197,22 +197,22 @@ "explore.trending_links": "Jaunumi", "explore.trending_statuses": "Ziņas", "explore.trending_tags": "Tēmturi", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Šī filtra kategorija neattiecas uz kontekstu, kurā esi piekļuvis šai ziņai. Ja vēlies, lai ziņa tiktu filtrēta arī šajā kontekstā, tev būs jārediģē filtrs.", + "filter_modal.added.context_mismatch_title": "Konteksta neatbilstība!", + "filter_modal.added.expired_explanation": "Šai filtra kategorijai ir beidzies derīguma termiņš. Lai to lietotu, tev būs jāmaina derīguma termiņš.", + "filter_modal.added.expired_title": "Filtrs beidzies!", + "filter_modal.added.review_and_configure": "Lai pārskatītu un tālāk konfigurētu šo filtru kategoriju, dodies uz {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filtra iestatījumi", + "filter_modal.added.settings_link": "iestatījumu lapa", + "filter_modal.added.short_explanation": "Šī ziņa ir pievienota šai filtra kategorijai: {title}.", + "filter_modal.added.title": "Filtrs pievienots!", + "filter_modal.select_filter.context_mismatch": "neattiecas uz šo kontekstu", + "filter_modal.select_filter.expired": "beidzies", + "filter_modal.select_filter.prompt_new": "Jauna kategorija: {name}", + "filter_modal.select_filter.search": "Meklē vai izveido", + "filter_modal.select_filter.subtitle": "Izmanto esošu kategoriju vai izveido jaunu", + "filter_modal.select_filter.title": "Filtrēt šo ziņu", + "filter_modal.title.status": "Filtrēt ziņu", "follow_recommendations.done": "Izpildīts", "follow_recommendations.heading": "Seko cilvēkiem, no kuriem vēlies redzēt ziņas! Šeit ir daži ieteikumi.", "follow_recommendations.lead": "Ziņas no cilvēkiem, kuriem seko, mājas plūsmā tiks parādītas hronoloģiskā secībā. Nebaidies kļūdīties, tu tikpat viegli vari pārtraukt sekot cilvēkiem jebkurā laikā!", @@ -487,7 +487,7 @@ "status.edited_x_times": "Rediģēts {count, plural, one {{count} reize} other {{count} reizes}}", "status.embed": "Iestrādāt", "status.favourite": "Iecienītā", - "status.filter": "Filter this post", + "status.filter": "Filtrē šo ziņu", "status.filtered": "Filtrēts", "status.hide": "Slēpt", "status.history.created": "{name} izveidots {date}", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 04b0868ee..e264f8055 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -197,22 +197,22 @@ "explore.trending_links": "Aktualności", "explore.trending_statuses": "Posty", "explore.trending_tags": "Hasztagi", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Ta kategoria filtrów nie ma zastosowania do kontekstu, w którym uzyskałeś dostęp do tego wpisu. Jeśli chcesz, aby wpis został przefiltrowany również w tym kontekście, będziesz musiał edytować filtr.", + "filter_modal.added.context_mismatch_title": "Niezgodność kontekstów!", + "filter_modal.added.expired_explanation": "Ta kategoria filtra wygasła, będziesz musiał zmienić datę wygaśnięcia, aby ją zastosować.", + "filter_modal.added.expired_title": "Wygasły filtr!", + "filter_modal.added.review_and_configure": "Aby przejrzeć i skonfigurować tę kategorię filtrów, przejdź do {settings_link}.", + "filter_modal.added.review_and_configure_title": "Ustawienia filtra", + "filter_modal.added.settings_link": "strona ustawień", + "filter_modal.added.short_explanation": "Ten wpis został dodany do następującej kategorii filtrów: {title}.", + "filter_modal.added.title": "Filtr dodany!", + "filter_modal.select_filter.context_mismatch": "nie dotyczy tego kontekstu", + "filter_modal.select_filter.expired": "wygasły", + "filter_modal.select_filter.prompt_new": "Nowa kategoria: {name}", + "filter_modal.select_filter.search": "Szukaj lub utwórz", + "filter_modal.select_filter.subtitle": "Użyj istniejącej kategorii lub utwórz nową", + "filter_modal.select_filter.title": "Filtruj ten wpis", + "filter_modal.title.status": "Filtruj wpis", "follow_recommendations.done": "Gotowe", "follow_recommendations.heading": "Śledź ludzi, których wpisy chcesz czytać. Oto kilka propozycji.", "follow_recommendations.lead": "Wpisy osób, które śledzisz będą pojawiać się w porządku chronologicznym na stronie głównej. Nie bój się popełniać błędów, możesz bez problemu przestać śledzić każdego w każdej chwili!", @@ -487,7 +487,7 @@ "status.edited_x_times": "Edytowano {count, plural, one {{count} raz} other {{count} razy}}", "status.embed": "Osadź", "status.favourite": "Dodaj do ulubionych", - "status.filter": "Filter this post", + "status.filter": "Filtruj ten wpis", "status.filtered": "Filtrowany(-a)", "status.hide": "Schowaj toota", "status.history.created": "{name} utworzył(a) {date}", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index ef097b380..15fb991bd 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -197,22 +197,22 @@ "explore.trending_links": "Notícias", "explore.trending_statuses": "Publicações", "explore.trending_tags": "Hashtags", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Esta categoria de filtro não se aplica ao contexto em que acedeu a esta publicação. Se pretender que esta publicação seja filtrada também neste contexto, terá que editar o filtro.", + "filter_modal.added.context_mismatch_title": "Contexto incoerente!", + "filter_modal.added.expired_explanation": "Esta categoria de filtro expirou, necessita alterar a data de validade para que ele seja aplicado.", + "filter_modal.added.expired_title": "Filtro expirado!", + "filter_modal.added.review_and_configure": "Para rever e configurar mais detalhadamente esta categoria de filtro, vá a {settings_link}.", + "filter_modal.added.review_and_configure_title": "Definições do filtro", + "filter_modal.added.settings_link": "página de definições", + "filter_modal.added.short_explanation": "Esta publicação foi adicionada à seguinte categoria de filtro: {title}.", + "filter_modal.added.title": "Filtro adicionado!", + "filter_modal.select_filter.context_mismatch": "não se aplica a este contexto", + "filter_modal.select_filter.expired": "expirado", + "filter_modal.select_filter.prompt_new": "Nova categoria: {name}", + "filter_modal.select_filter.search": "Pesquisar ou criar", + "filter_modal.select_filter.subtitle": "Utilize uma categoria existente ou crie uma nova", + "filter_modal.select_filter.title": "Filtrar esta publicação", + "filter_modal.title.status": "Filtrar uma publicação", "follow_recommendations.done": "Concluído", "follow_recommendations.heading": "Siga pessoas das quais gostaria de ver publicações! Aqui estão algumas sugestões.", "follow_recommendations.lead": "As publicações das pessoas que segue serão exibidos em ordem cronológica na sua página inicial. Não tenha medo de cometer erros, você pode deixar de seguir as pessoas tão facilmente a qualquer momento!", @@ -487,7 +487,7 @@ "status.edited_x_times": "Editado {count, plural,one {{count} vez} other {{count} vezes}}", "status.embed": "Incorporar", "status.favourite": "Adicionar aos favoritos", - "status.filter": "Filter this post", + "status.filter": "Filtrar esta publicação", "status.filtered": "Filtrada", "status.hide": "Esconder publicação", "status.history.created": "{name} criado em {date}", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index e53088e39..4c277544b 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -7,12 +7,12 @@ "account.block_domain": "Заблокировать {domain}", "account.blocked": "Заблокирован(а)", "account.browse_more_on_origin_server": "Посмотреть в оригинальном профиле", - "account.cancel_follow_request": "Отменить запрос", + "account.cancel_follow_request": "Отменить подписку", "account.direct": "Написать @{name}", - "account.disable_notifications": "Отключить уведомления от @{name}", + "account.disable_notifications": "Не уведомлять о постах от @{name}", "account.domain_blocked": "Домен заблокирован", "account.edit_profile": "Редактировать профиль", - "account.enable_notifications": "Включить уведомления для @{name}", + "account.enable_notifications": "Уведомлять о постах от @{name}", "account.endorse": "Рекомендовать в профиле", "account.follow": "Подписаться", "account.followers": "Подписчики", @@ -30,7 +30,7 @@ "account.mention": "Упомянуть @{name}", "account.moved_to": "Ищите {name} здесь:", "account.mute": "Игнорировать @{name}", - "account.mute_notifications": "Скрыть уведомления от @{name}", + "account.mute_notifications": "Игнорировать уведомления от @{name}", "account.muted": "Игнорируется", "account.posts": "Посты", "account.posts_with_replies": "Посты и ответы", @@ -44,7 +44,7 @@ "account.unblock_short": "Разблокировать", "account.unendorse": "Не рекомендовать в профиле", "account.unfollow": "Отписаться", - "account.unmute": "Не игнорировать @{name}", + "account.unmute": "Убрать {name} из игнорируемых", "account.unmute_notifications": "Показывать уведомления от @{name}", "account.unmute_short": "Не игнорировать", "account_note.placeholder": "Текст заметки", @@ -127,7 +127,7 @@ "confirmations.discard_edit_media.confirm": "Отменить", "confirmations.discard_edit_media.message": "У вас есть несохранённые изменения описания мультимедиа или предпросмотра, отменить их?", "confirmations.domain_block.confirm": "Да, заблокировать узел", - "confirmations.domain_block.message": "Вы точно уверены, что хотите скрыть все посты с узла {domain}? В большинстве случаев пары блокировок и скрытий вполне достаточно.\n\nПри блокировке узла, вы перестанете получать уведомления оттуда, все посты будут скрыты из публичных лент, а подписчики убраны.", + "confirmations.domain_block.message": "Вы точно уверены, что хотите заблокировать {domain} полностью? В большинстве случаев нескольких блокировок и игнорирований вполне достаточно. Вы перестанете видеть публичную ленту и уведомления оттуда. Ваши подписчики из этого домена будут удалены.", "confirmations.logout.confirm": "Выйти", "confirmations.logout.message": "Вы уверены, что хотите выйти?", "confirmations.mute.confirm": "Игнорировать", @@ -197,22 +197,22 @@ "explore.trending_links": "Новости", "explore.trending_statuses": "Посты", "explore.trending_tags": "Хэштеги", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Эта категория не применяется к контексту, в котором вы получили доступ к этому посту. Если вы хотите, чтобы пост был отфильтрован в этом контексте, вам придётся отредактировать фильтр.", + "filter_modal.added.context_mismatch_title": "Несоответствие контекста!", + "filter_modal.added.expired_explanation": "Эта категория фильтра устарела, вам нужно изменить дату окончания фильтра, чтобы применить его.", + "filter_modal.added.expired_title": "Истёкший фильтр!", + "filter_modal.added.review_and_configure": "Для просмотра и настройки этой категории фильтра, перейдите в {settings_link}.", + "filter_modal.added.review_and_configure_title": "Настройки фильтра", + "filter_modal.added.settings_link": "страница настроек", + "filter_modal.added.short_explanation": "Этот пост был добавлен в следующую категорию фильтра: {title}.", + "filter_modal.added.title": "Фильтр добавлен!", + "filter_modal.select_filter.context_mismatch": "не применяется к этому контексту", + "filter_modal.select_filter.expired": "истекло", + "filter_modal.select_filter.prompt_new": "Новая категория: {name}", + "filter_modal.select_filter.search": "Поиск или создание", + "filter_modal.select_filter.subtitle": "Используйте существующую категорию или создайте новую", + "filter_modal.select_filter.title": "Фильтровать этот пост", + "filter_modal.title.status": "Фильтровать пост", "follow_recommendations.done": "Готово", "follow_recommendations.heading": "Подпишитесь на людей, чьи посты вы бы хотели видеть. Вот несколько предложений.", "follow_recommendations.lead": "Посты от людей, на которых вы подписаны, будут отображаться в вашей домашней ленте в хронологическом порядке. Не бойтесь ошибиться — вы так же легко сможете отписаться от них в любое время!", @@ -266,7 +266,7 @@ "keyboard_shortcuts.legend": "показать это окно", "keyboard_shortcuts.local": "перейти к локальной ленте", "keyboard_shortcuts.mention": "упомянуть автора поста", - "keyboard_shortcuts.muted": "открыть список игнорируемых", + "keyboard_shortcuts.muted": "Открыть список игнорируемых", "keyboard_shortcuts.my_profile": "перейти к своему профилю", "keyboard_shortcuts.notifications": "перейти к уведомлениям", "keyboard_shortcuts.open_media": "открыть вложение", @@ -328,7 +328,7 @@ "navigation_bar.keyboard_shortcuts": "Сочетания клавиш", "navigation_bar.lists": "Списки", "navigation_bar.logout": "Выйти", - "navigation_bar.mutes": "Список игнорируемых пользователей", + "navigation_bar.mutes": "Игнорируемые пользователи", "navigation_bar.personal": "Личное", "navigation_bar.pins": "Закреплённые посты", "navigation_bar.preferences": "Настройки", @@ -487,7 +487,7 @@ "status.edited_x_times": "{count, plural, one {{count} изменение} many {{count} изменений} other {{count} изменения}}", "status.embed": "Встроить на свой сайт", "status.favourite": "В избранное", - "status.filter": "Filter this post", + "status.filter": "Фильтровать этот пост", "status.filtered": "Отфильтровано", "status.hide": "Скрыть пост", "status.history.created": "{name} создал {date}", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 8aeb2aec6..128858646 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -59,7 +59,7 @@ "alert.unexpected.title": "Ups!", "announcement.announcement": "Oboznámenie", "attachments_list.unprocessed": "(nespracované)", - "audio.hide": "Hide audio", + "audio.hide": "Skry zvuk", "autosuggest_hashtag.per_week": "{count} týždenne", "boost_modal.combo": "Nabudúce môžeš kliknúť {combo} pre preskočenie", "bundle_column_error.body": "Pri načítaní tohto prvku nastala nejaká chyba.", @@ -202,12 +202,12 @@ "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", "filter_modal.added.expired_title": "Expired filter!", "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.review_and_configure_title": "Nastavenie triedenia", "filter_modal.added.settings_link": "settings page", "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", + "filter_modal.added.title": "Triedenie pridané!", "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.expired": "vypršalo", "filter_modal.select_filter.prompt_new": "New category: {name}", "filter_modal.select_filter.search": "Search or create", "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", @@ -403,7 +403,7 @@ "privacy.unlisted.short": "Verejne, ale nezobraziť v osi", "refresh": "Obnoviť", "regeneration_indicator.label": "Načítava sa…", - "regeneration_indicator.sublabel": "Vaša nástenka sa pripravuje!", + "regeneration_indicator.sublabel": "Tvoja domovská nástenka sa pripravuje!", "relative_time.days": "{number}dní", "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index c793d9de8..89894acf8 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -197,22 +197,22 @@ "explore.trending_links": "Novice", "explore.trending_statuses": "Objave", "explore.trending_tags": "Ključniki", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Ta kategorija filtra ne velja za kontekst, v katerem ste dostopali do te objave. Če želite, da je objava filtrirana tudi v tem kontekstu, morate urediti filter.", + "filter_modal.added.context_mismatch_title": "Neujamanje konteksta!", + "filter_modal.added.expired_explanation": "Ta kategorija filtra je pretekla, morali boste spremeniti datum veljavnosti, da bo veljal še naprej.", + "filter_modal.added.expired_title": "Filter je pretekel!", + "filter_modal.added.review_and_configure": "Če želite pregledati in nadalje prilagoditi kategorijo filtra, obiščite {settings_link}.", + "filter_modal.added.review_and_configure_title": "Nastavitve filtra", + "filter_modal.added.settings_link": "stran nastavitev", + "filter_modal.added.short_explanation": "Ta objava je bila dodana v naslednjo kategorijo filtra: {title}.", + "filter_modal.added.title": "Filter dodan!", + "filter_modal.select_filter.context_mismatch": "ne velja za ta kontekst", + "filter_modal.select_filter.expired": "poteklo", + "filter_modal.select_filter.prompt_new": "Nova kategorija: {name}", + "filter_modal.select_filter.search": "Išči ali ustvari", + "filter_modal.select_filter.subtitle": "Uporabite obstoječo kategorijo ali ustvarite novo", + "filter_modal.select_filter.title": "Filtriraj to objavo", + "filter_modal.title.status": "Filtrirajte objave", "follow_recommendations.done": "Opravljeno", "follow_recommendations.heading": "Sledite osebam, katerih objave želite videti! Tukaj je nekaj predlogov.", "follow_recommendations.lead": "Objave oseb, ki jim sledite, se bodo prikazale v kronološkem zaporedju v vašem domačem viru. Ne bojte se storiti napake, osebam enako enostavno nehate slediti kadar koli!", @@ -487,7 +487,7 @@ "status.edited_x_times": "Urejeno {count, plural, one {#-krat} two {#-krat} few {#-krat} other {#-krat}}", "status.embed": "Vgradi", "status.favourite": "Priljubljen", - "status.filter": "Filter this post", + "status.filter": "Filtriraj to objavo", "status.filtered": "Filtrirano", "status.hide": "Skrij tut", "status.history.created": "{name}: ustvarjeno {date}", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 728cfac11..6c9529a32 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -9,21 +9,21 @@ "account.browse_more_on_origin_server": "மேலும் உலாவ சுயவிவரத்திற்குச் செல்க", "account.cancel_follow_request": "பின்தொடரும் கோரிக்கையை நிராகரி", "account.direct": "நேரடி செய்தி @{name}", - "account.disable_notifications": "Stop notifying me when @{name} posts", + "account.disable_notifications": "@{name} பதிவிட்டல் எனக்கு தெரியபடுத்த வேண்டாம்", "account.domain_blocked": "மறைக்கப்பட்டத் தளங்கள்", "account.edit_profile": "சுயவிவரத்தை மாற்று", - "account.enable_notifications": "Notify me when @{name} posts", + "account.enable_notifications": "@{name} பதிவிட்டல் எனக்குத் தெரியப்படுத்தவும்", "account.endorse": "சுயவிவரத்தில் வெளிப்படுத்து", "account.follow": "பின்தொடர்", "account.followers": "பின்தொடர்பவர்கள்", "account.followers.empty": "இதுவரை யாரும் இந்த பயனரைப் பின்தொடரவில்லை.", "account.followers_counter": "{count, plural, one {{counter} வாசகர்} other {{counter} வாசகர்கள்}}", - "account.following": "Following", + "account.following": "பின்தொடரும்", "account.following_counter": "{count, plural,one {{counter} சந்தா} other {{counter} சந்தாக்கள்}}", "account.follows.empty": "இந்த பயனர் இதுவரை யாரையும் பின்தொடரவில்லை.", "account.follows_you": "உங்களைப் பின்தொடர்கிறார்", "account.hide_reblogs": "இருந்து ஊக்கியாக மறை @{name}", - "account.joined": "Joined {date}", + "account.joined": "சேர்ந்த நாள் {date}", "account.link_verified_on": "இந்த இணைப்பை உரிமையாளர் சரிபார்க்கப்பட்டது {date}", "account.locked_info": "இந்தக் கணக்கு தனியுரிமை நிலை பூட்டப்பட்டுள்ளது. அவர்களைப் பின்தொடர்பவர் யார் என்பதை உரிமையாளர் கைமுறையாக மதிப்பாய்வு செய்கிறார்.", "account.media": "ஊடகங்கள்", @@ -41,25 +41,25 @@ "account.statuses_counter": "{count, plural, one {{counter} டூட்} other {{counter} டூட்டுகள்}}", "account.unblock": "@{name} மீது தடை நீக்குக", "account.unblock_domain": "{domain} ஐ காண்பி", - "account.unblock_short": "Unblock", + "account.unblock_short": "தடையை நீக்கு", "account.unendorse": "சுயவிவரத்தில் இடம்பெற வேண்டாம்", "account.unfollow": "பின்தொடர்வதை நிறுத்துக", "account.unmute": "@{name} இன் மீது மௌனத் தடையை நீக்குக", "account.unmute_notifications": "@{name} இலிருந்து அறிவிப்புகளின் மீது மௌனத் தடையை நீக்குக", - "account.unmute_short": "Unmute", + "account.unmute_short": "அமைதியை நீக்கு", "account_note.placeholder": "குறிப்பு ஒன்றை சேர்க்க சொடுக்கவும்", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "பதிவுசெய்த பிறகு நாள்தோறும் பயனர் தக்கவைப்பு விகிதம்", + "admin.dashboard.monthly_retention": "பதிவுசெய்த பிறகு மாதந்தோறும் பயனர் தக்கவைப்பு விகிதம்", + "admin.dashboard.retention.average": "சராசரி", + "admin.dashboard.retention.cohort": "பதிவுசெய்த மாதம்", + "admin.dashboard.retention.cohort_size": "புதிய பயனர்கள்", "alert.rate_limited.message": "{retry_time, time, medium} க்கு பிறகு மீண்டும் முயற்சிக்கவும்.", "alert.rate_limited.title": "பயன்பாடு கட்டுப்படுத்தப்பட்டுள்ளது", "alert.unexpected.message": "எதிர்பாராத பிழை ஏற்பட்டுவிட்டது.", "alert.unexpected.title": "அச்சச்சோ!", "announcement.announcement": "அறிவிப்பு", - "attachments_list.unprocessed": "(unprocessed)", - "audio.hide": "Hide audio", + "attachments_list.unprocessed": "(செயலாக்கப்படாதது)", + "audio.hide": "ஆடியோவை மறை", "autosuggest_hashtag.per_week": "ஒவ்வொரு வாரம் {count}", "boost_modal.combo": "நீங்கள் இதை அடுத்தமுறை தவிர்க்க {combo} வை அழுத்தவும்", "bundle_column_error.body": "இக்கூற்றை ஏற்றம் செய்யும்பொழுது ஏதோ தவறு ஏற்பட்டுள்ளது.", @@ -71,7 +71,7 @@ "column.blocks": "தடுக்கப்பட்ட பயனர்கள்", "column.bookmarks": "அடையாளக்குறிகள்", "column.community": "சுய நிகழ்வு காலவரிசை", - "column.direct": "Direct messages", + "column.direct": "நேரடி செய்திகள்", "column.directory": "சுயவிவரங்களை உலாவு", "column.domain_blocks": "மறைந்திருக்கும் திரளங்கள்", "column.favourites": "பிடித்தவைகள்", @@ -93,10 +93,10 @@ "community.column_settings.local_only": "அருகிலிருந்து மட்டுமே", "community.column_settings.media_only": "படங்கள் மட்டுமே", "community.column_settings.remote_only": "தொலைவிலிருந்து மட்டுமே", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "மொழியை மாற்று", + "compose.language.search": "தேடல் மொழிகள்...", "compose_form.direct_message_warning_learn_more": "மேலும் அறிய", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "Mastodonல் உள்ள பதிவுகள் முறையாக என்க்ரிப்ட்(encrypt) செய்யபடவில்லை. அதனால் முக்கிய தகவல்களை இங்கே பகிர வேண்டாம்.", "compose_form.hashtag_warning": "இது ஒரு பட்டியலிடப்படாத டூட் என்பதால் எந்த ஹேஷ்டேகின் கீழும் வராது. ஹேஷ்டேகின் மூலம் பொதுவில் உள்ள டூட்டுகளை மட்டுமே தேட முடியும்.", "compose_form.lock_disclaimer": "உங்கள் கணக்கு {locked} செய்யப்படவில்லை. உங்கள் பதிவுகளை யார் வேண்டுமானாலும் பின்தொடர்ந்து காணலாம்.", "compose_form.lock_disclaimer.lock": "பூட்டப்பட்டது", @@ -107,9 +107,9 @@ "compose_form.poll.remove_option": "இந்தத் தேர்வை அகற்று", "compose_form.poll.switch_to_multiple": "பல தேர்வுகளை அனுமதிக்குமாறு மாற்று", "compose_form.poll.switch_to_single": "ஒரே ஒரு தேர்வை மட்டும் அனுமதிக்குமாறு மாற்று", - "compose_form.publish": "Publish", + "compose_form.publish": "வெளியிடு", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "மாற்றங்களை சேமி", "compose_form.sensitive.hide": "அனைவருக்கும் ஏற்றப் படம் இல்லை எனக் குறியிடு", "compose_form.sensitive.marked": "இப்படம் அனைவருக்கும் ஏற்றதல்ல எனக் குறியிடப்பட்டுள்ளது", "compose_form.sensitive.unmarked": "இப்படம் அனைவருக்கும் ஏற்றதல்ல எனக் குறியிடப்படவில்லை", @@ -124,8 +124,8 @@ "confirmations.delete.message": "இப்பதிவை நிச்சயமாக நீக்க விரும்புகிறீர்களா?", "confirmations.delete_list.confirm": "நீக்கு", "confirmations.delete_list.message": "இப்பட்டியலை நிரந்தரமாக நீக்க நிச்சயம் விரும்புகிறீர்களா?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "நிராகரி", + "confirmations.discard_edit_media.message": "சேமிக்கப்படாத மாற்றங்கள் ஊடக விளக்கம் அல்லது முன்னோட்டத்தில் உள்ளது. அவற்றை நிராகரிக்கவா?", "confirmations.domain_block.confirm": "முழு களத்தையும் மறை", "confirmations.domain_block.message": "நீங்கள் முழு {domain} களத்தையும் நிச்சயமாக, நிச்சயமாகத் தடுக்க விரும்புகிறீர்களா? பெரும்பாலும் சில குறிப்பிட்ட பயனர்களைத் தடுப்பதே போதுமானது. முழு களத்தையும் தடுத்தால், அதிலிருந்து வரும் எந்தப் பதிவையும் உங்களால் காண முடியாது, மேலும் அப்பதிவுகள் குறித்த அறிவிப்புகளும் உங்களுக்கு வராது. அந்தக் களத்தில் இருக்கும் பின்தொடர்பவர்கள் உங்கள் பக்கத்திலிருந்து நீக்கப்படுவார்கள்.", "confirmations.logout.confirm": "வெளியேறு", @@ -150,7 +150,7 @@ "embed.instructions": "இந்தப் பதிவை உங்கள் வலைதளத்தில் பொதிக்கக் கீழே உள்ள வரிகளை காப்பி செய்யவும்.", "embed.preview": "பார்க்க இப்படி இருக்கும்:", "emoji_button.activity": "செயல்பாடு", - "emoji_button.clear": "Clear", + "emoji_button.clear": "அழி", "emoji_button.custom": "தனிப்பயன்", "emoji_button.flags": "கொடிகள்", "emoji_button.food": "உணவு மற்றும் பானம்", @@ -164,13 +164,13 @@ "emoji_button.search_results": "தேடல் முடிவுகள்", "emoji_button.symbols": "குறியீடுகள்", "emoji_button.travel": "சுற்றுலா மற்றும் இடங்கள்", - "empty_column.account_suspended": "Account suspended", + "empty_column.account_suspended": "கணக்கு இடைநீக்கப்பட்டது", "empty_column.account_timeline": "டூட்டுகள் ஏதும் இல்லை!", "empty_column.account_unavailable": "சுயவிவரம் கிடைக்கவில்லை", "empty_column.blocks": "நீங்கள் இதுவரை எந்தப் பயனர்களையும் முடக்கியிருக்கவில்லை.", "empty_column.bookmarked_statuses": "உங்களிடம் அடையாளக்குறியிட்ட டூட்டுகள் எவையும் இல்லை. அடையாளக்குறியிட்ட பிறகு அவை இங்கே காட்டப்படும்.", "empty_column.community": "உங்கள் மாஸ்டடான் முச்சந்தியில் யாரும் இல்லை. எதையேனும் எழுதி ஆட்டத்தைத் துவக்குங்கள்!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "உங்களுக்குத் தனிப்பட்ட செய்திகள் ஏதும் இல்லை. செய்தியை நீங்கள் அனுப்பும்போதோ அல்லது பெறும்போதோ, அது இங்கே காண்பிக்கப்படும்.", "empty_column.domain_blocks": "தடுக்கப்பட்டக் களங்கள் இதுவரை இல்லை.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "உங்களுக்குப் பிடித்த டூட்டுகள் இதுவரை இல்லை. ஒரு டூட்டில் நீங்கள் விருப்பக்குறி இட்டால், அது இங்கே காண்பிக்கப்படும்.", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 38539d512..9fcb877d3 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -198,21 +198,21 @@ "explore.trending_statuses": "โพสต์", "explore.trending_tags": "แฮชแท็ก", "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.context_mismatch_title": "บริบทไม่ตรงกัน!", "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", "filter_modal.added.expired_title": "Expired filter!", "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", + "filter_modal.added.review_and_configure_title": "การตั้งค่าตัวกรอง", + "filter_modal.added.settings_link": "หน้าการตั้งค่า", "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.title": "เพิ่มตัวกรองแล้ว!", + "filter_modal.select_filter.context_mismatch": "ไม่นำไปใช้กับบริบทนี้", + "filter_modal.select_filter.expired": "หมดอายุแล้ว", + "filter_modal.select_filter.prompt_new": "หมวดหมู่ใหม่: {name}", + "filter_modal.select_filter.search": "ค้นหาหรือสร้าง", + "filter_modal.select_filter.subtitle": "ใช้หมวดหมู่ที่มีอยู่หรือสร้างหมวดหมู่ใหม่", + "filter_modal.select_filter.title": "กรองโพสต์นี้", + "filter_modal.title.status": "กรองโพสต์", "follow_recommendations.done": "เสร็จสิ้น", "follow_recommendations.heading": "ติดตามผู้คนที่คุณต้องการเห็นโพสต์! นี่คือข้อเสนอแนะบางส่วน", "follow_recommendations.lead": "โพสต์จากผู้คนที่คุณติดตามจะแสดงตามลำดับเวลาในฟีดหน้าแรกของคุณ อย่ากลัวที่จะทำผิดพลาด คุณสามารถเลิกติดตามผู้คนได้อย่างง่ายดายเมื่อใดก็ตาม!", @@ -487,7 +487,7 @@ "status.edited_x_times": "แก้ไข {count, plural, other {{count} ครั้ง}}", "status.embed": "ฝัง", "status.favourite": "ชื่นชอบ", - "status.filter": "Filter this post", + "status.filter": "กรองโพสต์นี้", "status.filtered": "กรองอยู่", "status.hide": "ซ่อนโพสต์", "status.history.created": "{name} ได้สร้างเมื่อ {date}", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 35c888e47..bb67ef2f6 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -197,22 +197,22 @@ "explore.trending_links": "Haberler", "explore.trending_statuses": "Gönderiler", "explore.trending_tags": "Etiketler", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Bu filtre kategorisi, bu gönderide eriştiğin bağlama uymuyor. Eğer gönderinin bu bağlamda da filtrelenmesini istiyorsanız, filtreyi düzenlemeniz gerekiyor.", + "filter_modal.added.context_mismatch_title": "Bağlam uyumsuzluğu!", + "filter_modal.added.expired_explanation": "Bu filtre kategorisinin süresi dolmuş, filtreyi uygulamak için bitiş tarihini değiştirmeniz gerekiyor.", + "filter_modal.added.expired_title": "Süresi dolmuş filtre!", + "filter_modal.added.review_and_configure": "Bu filtre kategorisini gözden geçirmek ve daha ayrıntılı bir şekilde yapılandırmak için {settings_link} adresine gidin.", + "filter_modal.added.review_and_configure_title": "Filtre ayarları", + "filter_modal.added.settings_link": "ayarlar sayfası", + "filter_modal.added.short_explanation": "Bu gönderi şu filtre kategorisine eklendi: {title}.", + "filter_modal.added.title": "Filtre eklendi!", + "filter_modal.select_filter.context_mismatch": "bu bağlama uymuyor", + "filter_modal.select_filter.expired": "süresi dolmuş", + "filter_modal.select_filter.prompt_new": "Yeni kategori: {name}", + "filter_modal.select_filter.search": "Ara veya oluştur", + "filter_modal.select_filter.subtitle": "Mevcut bir kategoriyi kullan veya yeni bir tane oluştur", + "filter_modal.select_filter.title": "Bu gönderiyi filtrele", + "filter_modal.title.status": "Bir gönderi filtrele", "follow_recommendations.done": "Tamam", "follow_recommendations.heading": "Gönderilerini görmek isteyeceğiniz kişileri takip edin! Burada bazı öneriler bulabilirsiniz.", "follow_recommendations.lead": "Takip ettiğiniz kişilerin gönderileri anasayfa akışınızda kronolojik sırada görünmeye devam edecek. Hata yapmaktan çekinmeyin, kişileri istediğiniz anda kolayca takipten çıkabilirsiniz!", @@ -487,7 +487,7 @@ "status.edited_x_times": "{count, plural, one {{count} kez} other {{count} kez}} düzenlendi", "status.embed": "Gömülü", "status.favourite": "Favorilerine ekle", - "status.filter": "Filter this post", + "status.filter": "Bu gönderiyi filtrele", "status.filtered": "Filtrelenmiş", "status.hide": "Gönderiyi sakla", "status.history.created": "{name} oluşturdu {date}", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index e1b10445d..a14e2125b 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -197,22 +197,22 @@ "explore.trending_links": "Новини", "explore.trending_statuses": "Дописи", "explore.trending_tags": "Хештеґи", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Ця категорія фільтра не застосовується до контексту, в якому ви отримали доступ до цього допису. Якщо ви хочете, щоб дописи також фільтрувалися за цим контекстом, вам доведеться редагувати фільтр.", + "filter_modal.added.context_mismatch_title": "Невідповідність контексту!", + "filter_modal.added.expired_explanation": "Категорія цього фільтра застаріла, Вам потрібно змінити дату закінчення терміну дії, щоб застосувати її.", + "filter_modal.added.expired_title": "Застарілий фільтр!", + "filter_modal.added.review_and_configure": "Щоб розглянути та далі налаштувати цю категорію фільтрів, перейдіть на {settings_link}.", + "filter_modal.added.review_and_configure_title": "Налаштування фільтра", + "filter_modal.added.settings_link": "сторінка налаштувань", + "filter_modal.added.short_explanation": "Цей допис було додано до такої категорії фільтра: {title}.", + "filter_modal.added.title": "Фільтр додано!", + "filter_modal.select_filter.context_mismatch": "не застосовується до цього контексту", + "filter_modal.select_filter.expired": "застарілий", + "filter_modal.select_filter.prompt_new": "Нова категорія: {name}", + "filter_modal.select_filter.search": "Пошук або створення", + "filter_modal.select_filter.subtitle": "Використати наявну категорію або створити нову", + "filter_modal.select_filter.title": "Фільтрувати цей допис", + "filter_modal.title.status": "Фільтрувати допис", "follow_recommendations.done": "Готово", "follow_recommendations.heading": "Підпишіться на людей, чиї дописи ви хочете бачити! Ось деякі пропозиції.", "follow_recommendations.lead": "Дописи від людей, за якими ви стежите, з'являться в хронологічному порядку у вашій домашній стрічці. Не бійся помилятися, ви можете відписатися від людей так само легко в будь-який час!", @@ -487,7 +487,7 @@ "status.edited_x_times": "Відредаговано {count, plural, one {{count} раз} few {{count} рази} many {{counter} разів} other {{counter} разів}}", "status.embed": "Вбудувати", "status.favourite": "Подобається", - "status.filter": "Filter this post", + "status.filter": "Фільтрувати цей допис", "status.filtered": "Відфільтровано", "status.hide": "Сховати дмух", "status.history.created": "{name} створює {date}", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 3dc6db112..d1b5684af 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -197,22 +197,22 @@ "explore.trending_links": "Tin tức", "explore.trending_statuses": "Tút", "explore.trending_tags": "Hashtag", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Danh mục bộ lọc này không áp dụng cho ngữ cảnh mà bạn đã truy cập tút này. Nếu bạn muốn tút cũng được lọc trong ngữ cảnh này, bạn sẽ phải chỉnh sửa bộ lọc.", + "filter_modal.added.context_mismatch_title": "Bối cảnh không phù hợp!", + "filter_modal.added.expired_explanation": "Danh mục bộ lọc này đã hết hạn, bạn sẽ cần thay đổi ngày hết hạn để áp dụng.", + "filter_modal.added.expired_title": "Bộ lọc đã hết hạn!", + "filter_modal.added.review_and_configure": "Để xem lại và định cấu hình thêm danh mục bộ lọc này, hãy xem {settings_link}.", + "filter_modal.added.review_and_configure_title": "Thiết lập bộ lọc", + "filter_modal.added.settings_link": "trang cài đặt", + "filter_modal.added.short_explanation": "Tút này đã được thêm vào danh mục bộ lọc sau: {title}.", + "filter_modal.added.title": "Đã thêm bộ lọc!", + "filter_modal.select_filter.context_mismatch": "không áp dụng cho bối cảnh này", + "filter_modal.select_filter.expired": "hết hạn", + "filter_modal.select_filter.prompt_new": "Danh mục mới: {name}", + "filter_modal.select_filter.search": "Tìm kiếm hoặc tạo mới", + "filter_modal.select_filter.subtitle": "Sử dụng một danh mục hiện có hoặc tạo một danh mục mới", + "filter_modal.select_filter.title": "Lọc tút này", + "filter_modal.title.status": "Lọc một tút", "follow_recommendations.done": "Xong", "follow_recommendations.heading": "Theo dõi những người bạn muốn đọc tút của họ! Dưới đây là vài gợi ý.", "follow_recommendations.lead": "Tút từ những người bạn theo dõi sẽ hiện theo thứ tự thời gian trên bảng tin. Đừng ngại, bạn có thể dễ dàng ngưng theo dõi họ bất cứ lúc nào!", @@ -487,7 +487,7 @@ "status.edited_x_times": "Đã sửa {count, plural, other {{count} lần}}", "status.embed": "Nhúng", "status.favourite": "Thích", - "status.filter": "Filter this post", + "status.filter": "Lọc tút này", "status.filtered": "Bộ lọc", "status.hide": "Ẩn tút", "status.history.created": "{name} tạo lúc {date}", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 9241eeec8..5d0dfa202 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -197,22 +197,22 @@ "explore.trending_links": "最新消息", "explore.trending_statuses": "嘟文", "explore.trending_tags": "话题标签", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "此过滤器分类不适用访问过嘟文的环境中。如果你想要在环境中过滤嘟文,你必须编辑此过滤器。", + "filter_modal.added.context_mismatch_title": "环境不匹配!", + "filter_modal.added.expired_explanation": "此过滤器分类已过期,你需要修改到期日期才能应用。", + "filter_modal.added.expired_title": "过滤器已过期!", + "filter_modal.added.review_and_configure": "要审核并进一步配置此过滤器分类,请前往{settings_link}。", + "filter_modal.added.review_and_configure_title": "过滤器设置", + "filter_modal.added.settings_link": "设置页面", + "filter_modal.added.short_explanation": "此嘟文已添加到以下过滤器分类:{title}。", + "filter_modal.added.title": "过滤器已添加 !", + "filter_modal.select_filter.context_mismatch": "不适用于此环境", + "filter_modal.select_filter.expired": "已过期", + "filter_modal.select_filter.prompt_new": "新分类:{name}", + "filter_modal.select_filter.search": "搜索或创建", + "filter_modal.select_filter.subtitle": "使用一个已存在分类,或创建一个新分类", + "filter_modal.select_filter.title": "过滤此嘟文", + "filter_modal.title.status": "过滤一条嘟文", "follow_recommendations.done": "完成", "follow_recommendations.heading": "关注你感兴趣的用户!这里有一些推荐。", "follow_recommendations.lead": "你关注的人的嘟文将按时间顺序在你的主页上显示。 别担心,你可以随时取消关注!", @@ -487,7 +487,7 @@ "status.edited_x_times": "共编辑 {count, plural, one {{count} 次} other {{count} 次}}", "status.embed": "嵌入", "status.favourite": "喜欢", - "status.filter": "Filter this post", + "status.filter": "过滤此嘟文", "status.filtered": "已过滤", "status.hide": "屏蔽嘟文", "status.history.created": "{name} 创建于 {date}", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 13eee62de..337cad60b 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -197,22 +197,22 @@ "explore.trending_links": "最新消息", "explore.trending_statuses": "嘟文", "explore.trending_tags": "主題標籤", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "此過濾器類別不是用您所存取嘟文的情境。若您想要此嘟文被於此情境被過濾,您必須編輯過濾器。", + "filter_modal.added.context_mismatch_title": "不符合情境!", + "filter_modal.added.expired_explanation": "此過濾器類別已失效,您需要更新過期日期以套用。", + "filter_modal.added.expired_title": "過期的過濾器!", + "filter_modal.added.review_and_configure": "若欲檢視和進一步設定此過濾器類別,請至 {settings_link}。", + "filter_modal.added.review_and_configure_title": "過濾器設定", + "filter_modal.added.settings_link": "設定頁面", + "filter_modal.added.short_explanation": "此嘟文已被新增至以下過濾器類別:{title}。", + "filter_modal.added.title": "已新增過濾器!", + "filter_modal.select_filter.context_mismatch": "不是用目前情境", + "filter_modal.select_filter.expired": "已過期", + "filter_modal.select_filter.prompt_new": "新類別:{name}", + "filter_modal.select_filter.search": "搜尋或新增", + "filter_modal.select_filter.subtitle": "使用既有的類別或是新增", + "filter_modal.select_filter.title": "過濾此嘟文", + "filter_modal.title.status": "過濾一則嘟文", "follow_recommendations.done": "完成", "follow_recommendations.heading": "跟隨您想檢視其嘟文的人!這裡有一些建議。", "follow_recommendations.lead": "來自您跟隨的人之嘟文將會按時間順序顯示在您的首頁時間軸上。不要害怕犯錯,您隨時都可以取消跟隨其他人!", @@ -487,7 +487,7 @@ "status.edited_x_times": "已編輯 {count, plural, one {{count} 次} other {{count} 次}}", "status.embed": "內嵌", "status.favourite": "最愛", - "status.filter": "Filter this post", + "status.filter": "過濾此嘟文", "status.filtered": "已過濾", "status.hide": "隱藏嘟文", "status.history.created": "{name} 於 {date} 建立", diff --git a/config/locales/activerecord.pt-BR.yml b/config/locales/activerecord.pt-BR.yml index ad034fdbc..105f5a550 100644 --- a/config/locales/activerecord.pt-BR.yml +++ b/config/locales/activerecord.pt-BR.yml @@ -38,3 +38,13 @@ pt-BR: email: blocked: usa provedor de e-mail não permitido unreachable: parece não existir + role_id: + elevated: não pode ser maior do que sua função atual + user_role: + attributes: + permissions_as_keys: + elevated: não pode incluir permissões que a sua função atual não possui + own_role: não pode ser alterado com sua função atual + position: + elevated: não pode ser maior do que sua função atual + own_role: não pode ser alterado com sua função atual diff --git a/config/locales/activerecord.ru.yml b/config/locales/activerecord.ru.yml index 2a267cfd2..fb8c6dde5 100644 --- a/config/locales/activerecord.ru.yml +++ b/config/locales/activerecord.ru.yml @@ -44,4 +44,8 @@ ru: attributes: permissions_as_keys: dangerous: включить разрешения, небезопасные для базовой роли + elevated: не может включать разрешения, которыми не обладает ваша текущая роль + own_role: невозможно изменить с вашей текущей ролью + position: + elevated: не может быть выше, чем ваша текущая роль own_role: невозможно изменить с вашей текущей ролью diff --git a/config/locales/ar.yml b/config/locales/ar.yml index bac1e661d..432c10ce0 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -299,7 +299,6 @@ ar: create_unavailable_domain_html: قام %{name} بتوقيف التوصيل للنطاق %{target} demote_user_html: قام %{name} بخفض الرتبة الوظيفية لـ%{target} destroy_announcement_html: قام %{name} بحذف الإعلان %{target} - destroy_custom_emoji_html: قام %{name} بحذف الإيموجي %{target} destroy_domain_allow_html: قام %{name} بمنع الاتحاد مع النطاق %{target} destroy_domain_block_html: قام %{name} برفع الحظر عن النطاق %{target} destroy_email_domain_block_html: قام %{name} برفع الحظر عن نطاق البريد الإلكتروني %{target} @@ -331,7 +330,6 @@ ar: update_custom_emoji_html: قام %{name} بتحديث الإيموجي %{target} update_domain_block_html: قام %{name} بتحديث كتلة النطاق %{target} update_status_html: قام %{name} بتحديث منشور من %{target} - deleted_status: "(منشور محذوف)" empty: لم يتم العثور على سجلات. filter_by_action: تصفية بحسب الإجراء filter_by_user: تصفية حسب المستخدم @@ -688,9 +686,6 @@ ar: desc_html: عرض الخيط العمومي على صفحة الاستقبال title: مُعاينة الخيط العام title: إعدادات الموقع - trendable_by_default: - desc_html: يؤثر على علامات الوسوم التي لم يكن مسموح بها مسبقاً - title: السماح للوسوم بالظهور على المتداوَلة بدون مراجعة مسبقة trends: desc_html: عرض علني للوسوم المستعرضة سابقاً التي هي رائجة الآن title: الوسوم المتداولة @@ -1144,18 +1139,6 @@ ar: admin: sign_up: subject: أنشأ %{name} حسابًا - digest: - action: معاينة كافة الإشعارات - body: هذا هو مُلَخَّص الرسائل التي فاتتك وذلك منذ آخر زيارة لك في %{since} - mention: "%{name} أشار إليك في:" - new_followers_summary: - few: رائع، لقد قام بمتابَعتك %{count} مُتابِعون جُدد أثناء فترة غيابك عن ماستدون! - many: رائع، لقد قام بمتابَعتك %{count} مُتابِعون جُدد أثناء فترة غيابك عن ماستدون! - one: و لقد تحصّلتَ كذلك على مُتابِع آخَر بينما كنتَ غائبًا! هذا شيء رائع! - other: رائع، لقد قام بمتابَعتك %{count} مُتابِعون جُدد أثناء فترة غيابك عن ماستدون! - two: رائع، لقد قام بمتابَعتك %{count} مُتابِعون جُدد أثناء فترة غيابك عن ماستدون! - zero: رائع، لقد قام بمتابَعتك %{count} مُتابِعون جُدد أثناء فترة غيابك عن ماستدون! - title: أثناء فترة غيابك... favourite: body: 'أُعجب %{name} بمنشورك:' subject: أُعجِب %{name} بمنشورك diff --git a/config/locales/ast.yml b/config/locales/ast.yml index f4765360e..2d175592b 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -314,9 +314,6 @@ ast: warning: followers: Esta aición va mover tolos siguidores de la cuenta actual a la nueva notification_mailer: - digest: - body: Equí hai un resume de los mensaxes que nun viesti dende la última visita'l %{since} - mention: "%{name} mentóte en:" favourite: title: Favoritu nuevu follow: diff --git a/config/locales/bg.yml b/config/locales/bg.yml index a7b8ffc23..43b8a13ba 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -230,12 +230,6 @@ bg: images_and_video: Не мога да прикача видеоклип към публикация, която вече съдържа изображения too_many: Не мога да прикача повече от 4 файла notification_mailer: - digest: - body: Ето кратко резюме на нещата, които се случиха от последното ти посещение на %{since} - mention: "%{name} те спомена в:" - new_followers_summary: - one: Имаш един нов последовател! Ура! - other: Имаш %{count} нови последователи! Изумително! favourite: body: 'Публикацията ти беше харесана от %{name}:' subject: "%{name} хареса твоята публикация" diff --git a/config/locales/br.yml b/config/locales/br.yml index 61e85d163..4d34f3388 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -89,7 +89,6 @@ br: action_logs: action_types: destroy_status: Dilemel ar statud - deleted_status: "(statud dilemet)" announcements: new: create: Sevel ur gemenn diff --git a/config/locales/ca.yml b/config/locales/ca.yml index dfc1c1e27..a03e37cc6 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -235,17 +235,21 @@ ca: approve_user: Aprova l'usuari assigned_to_self_report: Assigna l'informe change_email_user: Canvia l'adreça electrònica per l'usuari + change_role_user: Canvia el Rol del Usuari confirm_user: Confirma l'usuari create_account_warning: Crea un avís create_announcement: Crea un anunci + create_canonical_email_block: Crea un bloqueig de correu electrònic create_custom_emoji: Crea un emoji personalitzat create_domain_allow: Crea un domini permès create_domain_block: Crea un bloqueig de domini create_email_domain_block: Crea un bloqueig de domini d'adreça de correu create_ip_block: Crear regla IP create_unavailable_domain: Crea un domini no disponible + create_user_role: Crea Rol demote_user: Degrada l'usuari destroy_announcement: Esborra l'anunci + destroy_canonical_email_block: Esborra el bloqueig de correu electrònic destroy_custom_emoji: Esborra l'emoji personalitzat destroy_domain_allow: Esborra el domini permès destroy_domain_block: Esborra el bloqueig de domini @@ -254,6 +258,7 @@ ca: destroy_ip_block: Eliminar regla IP destroy_status: Esborrar la publicació destroy_unavailable_domain: Esborra domini no disponible + destroy_user_role: Destrueix Rol disable_2fa_user: Desactiva 2FA disable_custom_emoji: Desactiva l'emoji personalitzat disable_sign_in_token_auth_user: Desactivar l'autenticació de token per correu per l'usuari @@ -280,24 +285,30 @@ ca: update_announcement: Actualitza l'anunci update_custom_emoji: Actualitza l'emoji personalitzat update_domain_block: Actualitza el Bloqueig de Domini + update_ip_block: Actualitza norma IP update_status: Actualitza l'estat + update_user_role: Actualitza Rol actions: approve_appeal_html: "%{name} ha aprovat l'apel·lació a la decisió de moderació de %{target}" approve_user_html: "%{name} ha aprovat el registre de %{target}" assigned_to_self_report_html: "%{name} han assignat l'informe %{target} a ells mateixos" change_email_user_html: "%{name} ha canviat l'adreça de correu electrònic del usuari %{target}" + change_role_user_html: "%{name} ha canviat el rol de %{target}" confirm_user_html: "%{name} ha confirmat l'adreça de correu electrònic de l'usuari %{target}" create_account_warning_html: "%{name} ha enviat un avís a %{target}" create_announcement_html: "%{name} ha creat un nou anunci %{target}" + create_canonical_email_block_html: "%{name} ha bloquejat l'adreça de correu electrònic amb el hash %{target}" create_custom_emoji_html: "%{name} ha pujat un emoji nou %{target}" create_domain_allow_html: "%{name} ha permès la federació amb el domini %{target}" create_domain_block_html: "%{name} ha bloquejat el domini %{target}" create_email_domain_block_html: "%{name} ha bloquejat el domini de correu electrònic %{target}" create_ip_block_html: "%{name} ha creat una regla per a l'IP %{target}" create_unavailable_domain_html: "%{name} ha aturat el lliurament al domini %{target}" + create_user_role_html: "%{name} ha creat el rol %{target}" demote_user_html: "%{name} ha degradat l'usuari %{target}" destroy_announcement_html: "%{name} ha eliminat l'anunci %{target}" - destroy_custom_emoji_html: "%{name} ha destruït l'emoji %{target}" + destroy_canonical_email_block_html: "%{name} ha desbloquejat el correu electrònic amb el hash %{target}" + destroy_custom_emoji_html: "%{name} ha esborrat l'emoji %{target}" destroy_domain_allow_html: "%{name} no permet la federació amb el domini %{target}" destroy_domain_block_html: "%{name} ha desbloquejat el domini %{target}" destroy_email_domain_block_html: "%{name} ha desbloquejat el domini de correu electrònic %{target}" @@ -305,6 +316,7 @@ ca: destroy_ip_block_html: "%{name} ha esborrat la regla per a l'IP %{target}" destroy_status_html: "%{name} ha eliminat la publicació de %{target}" destroy_unavailable_domain_html: "%{name} ha représ el lliurament delivery al domini %{target}" + destroy_user_role_html: "%{name} ha esborrat el rol %{target}" disable_2fa_user_html: "%{name} ha desactivat el requisit de dos factors per a l'usuari %{target}" disable_custom_emoji_html: "%{name} ha desactivat l'emoji %{target}" disable_sign_in_token_auth_user_html: "%{name} ha desactivat l'autenticació de token per correu per a %{target}" @@ -331,8 +343,9 @@ ca: update_announcement_html: "%{name} ha actualitzat l'anunci %{target}" update_custom_emoji_html: "%{name} ha actualitzat l'emoji %{target}" update_domain_block_html: "%{name} ha actualitzat el bloqueig de domini per a %{target}" + update_ip_block_html: "%{name} ha canviat la norma per la IP %{target}" update_status_html: "%{name} ha actualitzat l'estat de %{target}" - deleted_status: "(publicació esborrada)" + update_user_role_html: "%{name} ha canviat el rol %{target}" empty: No s’han trobat registres. filter_by_action: Filtra per acció filter_by_user: Filtra per usuari @@ -795,8 +808,8 @@ ca: title: Permet l'accés no autenticat a la línia de temps pública title: Configuració del lloc trendable_by_default: - desc_html: Afecta a les etiquetes que no s'havien rebutjat prèviament - title: Permet que les etiquetes passin a la tendència sense revisió prèvia + desc_html: El contingut específic de la tendència encara pot explícitament no estar permès + title: Permet tendències sense revisió prèvia trends: desc_html: Mostra públicament les etiquetes revisades anteriorment que actualment estan en tendència title: Etiquetes tendència @@ -1181,6 +1194,8 @@ ca: edit: add_keyword: Afegeix paraula clau keywords: Paraules clau + statuses: Apunts individuals + statuses_hint_html: Aquest filtre aplica als apunts individuals seleccionats independentment de si coincideixen amb les paraules clau de sota. Revisa o elimina els apunts des d'el filtre. title: Editar filtre errors: deprecated_api_multiple_keywords: Aquests paràmetres no poden ser canviats des d'aquesta aplicació perquè apliquen a més d'un filtre per paraula clau. Utilitza una aplicació més recent o la interfície web. @@ -1194,10 +1209,23 @@ ca: keywords: one: "%{count} paraula clau" other: "%{count} paraules clau" + statuses: + one: "%{count} apunt" + other: "%{count} apunts" + statuses_long: + one: "%{count} apunt individual oculta" + other: "%{count} apunts individuals ocultats" title: Filtres new: save: Desa el nou filtre title: Afegir un nou filtre + statuses: + back_to_filter: Tornar al filtre + batch: + remove: Eliminar del filtre + index: + hint: Aquest filtre aplica als apunts seleccionats independentment d'altres criteris. Pots afegir més apunts a aquest filtre des de l'interfície Web. + title: Apunts filtrats footer: developers: Desenvolupadors more: Més… @@ -1205,12 +1233,22 @@ ca: trending_now: En tendència generic: all: Tot + all_items_on_page_selected_html: + one: "%{count} article d'aquesta s'ha seleccionat." + other: Tots %{count} articles d'aquesta pàgina estan seleccionats. + all_matching_items_selected_html: + one: "%{count} article coincident amb la teva cerca està seleccionat." + other: Tots %{count} articles coincidents amb la teva cerca estan seleccionats. changes_saved_msg: Els canvis s'han desat correctament! copy: Copiar delete: Esborra + deselect: Desfer selecció none: Cap order_by: Ordena per save_changes: Desa els canvis + select_all_matching_items: + one: Selecciona %{count} article coincident amb la teva cerca. + other: Selecciona tots %{count} articles coincidents amb la teva cerca. today: avui validation_errors: one: Alguna cosa no va bé! Si us plau, revisa l'error @@ -1319,17 +1357,6 @@ ca: subject: "%{name} ha presentat un informe" sign_up: subject: "%{name} s'ha registrat" - digest: - action: Mostra totes les notificacions - body: Un resum del que et vas perdre des de la darrera visita el %{since} - mention: "%{name} t'ha mencionat en:" - new_followers_summary: - one: A més, has adquirit un nou seguidor durant la teva absència! Visca! - other: A més, has adquirit %{count} nous seguidors mentre estaves fora! Increïble! - subject: - one: "1 notificació nova des de la teva darrera visita 🐘" - other: "%{count} notificacions noves des de la teva darrera visita 🐘" - title: Durant la teva absència… favourite: body: "%{name} ha marcat com a favorit el teu estat:" subject: "%{name} ha marcat com a favorit el teu estat" diff --git a/config/locales/ckb.yml b/config/locales/ckb.yml index 3e9f414df..6c91b571a 100644 --- a/config/locales/ckb.yml +++ b/config/locales/ckb.yml @@ -265,7 +265,6 @@ ckb: update_status: بەڕۆژکردنی دۆخ actions: update_status_html: "%{name} پۆستی نوێکراوە لەلایەن %{target}" - deleted_status: "(نووسراوە سڕاوە)" empty: هیچ لاگی کارنەدۆزرایەوە. filter_by_action: فلتەر کردن بە کردار filter_by_user: فلتەر کردن بە کردار @@ -643,9 +642,6 @@ ckb: desc_html: لینکەکە نیشان بدە بۆ هێڵی کاتی گشتی لەسەر پەڕەی نیشتنەوە و ڕێگە بە API بدە دەستگەیشتنی هەبێت بۆ هێڵی کاتی گشتی بەبێ سەلماندنی ڕەسەنایەتی title: ڕێگەبدە بە چوونە ژورەوەی نەسەلمێنراو بۆ هێڵی کاتی گشتی title: ڕێکخستنەکانی ماڵپەڕ - trendable_by_default: - desc_html: کاریگەری لەسەر هاشتاگی پێشوو کە پێشتر ڕێگە پێنەدراوە - title: ڕێگە بدە بە هاشتاگی بەرچاوکراوە بەبێ پێداچوونەوەی پێشوو trends: desc_html: بە ئاشکرا هاشتاگی پێداچوونەوەی پێشوو پیشان بدە کە ئێستا بەرچاوکراوەن title: هاشتاگی بەرچاوکراوە @@ -976,14 +972,6 @@ ckb: carry_mutes_over_text: ئەم بەکارهێنەرە گواسترایەوە بۆ %{acct}، تۆ بێدەنگت کردووە. copy_account_note_text: 'ئەم بەکارهێنەرە لە %{acct} ەوە گواستیەوە، تێبینیەکانی پێشووت دەربارەیان بوون:' notification_mailer: - digest: - action: پیشاندانی هەموو ئاگانامەکان - body: ئەمە کورتەی ئەو نامانەی لە دەستت دا لە دوا سەردانیت لە %{since} - mention: "%{name} ئاماژەی بە تۆ کرد لە:" - new_followers_summary: - one: لەکاتێک کە نەبوو ،شوێنکەوتوویێکی نوێت پەیداکرد،ئافەرم! - other: کاتیک کە نەبووی %{count} شوێنکەوتوویێکی نوێت پەیدا کرد! چ باشە! - title: لە غیابی تۆدا... favourite: body: 'دۆخت پەسەندکراوە لەلایەن %{name}:' subject: "%{name} دۆخی تۆی پەسەند کرد" diff --git a/config/locales/co.yml b/config/locales/co.yml index a71c187fc..9844cb8c1 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -269,7 +269,6 @@ co: create_unavailable_domain_html: "%{name} hà firmatu a distribuzione à u duminiu %{target}" demote_user_html: "%{name} hà ritrugradatu l’utilizatore %{target}" destroy_announcement_html: "%{name} hà sguassatu u novu annunziu %{target}" - destroy_custom_emoji_html: "%{name} hà sguassatu l'emoji %{target}" destroy_domain_allow_html: "%{name} hà sguassatu u duminiu %{target} da a lista bianca" destroy_domain_block_html: "%{name} hà sbluccatu u duminiu %{target}" destroy_email_domain_block_html: "%{name} hà messu u duminiu e-mail %{target} nant’a lista bianca" @@ -298,7 +297,6 @@ co: update_custom_emoji_html: "%{name} hà messu à ghjornu l’emoji %{target}" update_domain_block_html: "%{name} hà messu à ghjornu u blucchime di duminiu per %{target}" update_status_html: "%{name} hà cambiatu u statutu di %{target}" - deleted_status: "(statutu sguassatu)" empty: Nunda trovu. filter_by_action: Filtrà da azzione filter_by_user: Filtrà da utilizatore @@ -602,9 +600,6 @@ co: desc_html: Vede a linea pubblica nant’a pagina d’accolta title: Vista di e linee title: Parametri di u situ - trendable_by_default: - desc_html: Ùn affetta micca quelli chì sò digià stati ricusati - title: Auturizà l'hashtag à esse in tindenze senza verificazione trends: desc_html: Mustrà à u pubblicu i hashtag chì sò stati digià verificati è chì sò in e tendenze avà title: Tendenze di hashtag @@ -962,14 +957,6 @@ co: carry_mutes_over_text: St'utilizatore hà traslucatu dapoi %{acct}, ch'aviate piattatu. copy_account_note_text: 'St''utilizatore hà traslucatu dapoi %{acct}, eccu e vostr''anziane note nant''à ellu:' notification_mailer: - digest: - action: Vede tutte e nutificazione - body: Eccu cio ch’avete mancatu dapoi à a vostr’ultima visita u %{since} - mention: "%{name} v’hà mintuvatu·a in:" - new_followers_summary: - one: Avete ancu un’abbunatu novu! - other: Avete ancu %{count} abbunati novi! - title: Dapoi l’ultima volta… favourite: body: "%{name} hà aghjuntu u vostru statutu à i so favuriti :" subject: "%{name} hà messu u vostru post in i so favuriti" diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 3a58fd23b..b0ab498ea 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -111,6 +111,7 @@ cs: avatar: Avatar by_domain: Doména change_email: + changed_msg: E-mail úspěšně změněn! current_email: Současný e-mail label: Změnit e-mail new_email: Nový e-mail @@ -304,7 +305,6 @@ cs: create_unavailable_domain_html: "%{name} zastavil doručování na doménu %{target}" demote_user_html: Uživatel %{name} degradoval uživatele %{target} destroy_announcement_html: Uživatel %{name} odstranil oznámení %{target} - destroy_custom_emoji_html: Uživatel %{name} zničil emoji %{target} destroy_domain_allow_html: Uživatel %{name} zakázal federaci s doménou %{target} destroy_domain_block_html: Uživatel %{name} odblokoval doménu %{target} destroy_email_domain_block_html: Uživatel %{name} odblokoval e-mailovou doménu %{target} @@ -339,7 +339,6 @@ cs: update_custom_emoji_html: Uživatel %{name} aktualizoval emoji %{target} update_domain_block_html: "%{name} aktualizoval blokaci domény %{target}" update_status_html: Uživatel %{name} aktualizoval příspěvek uživatele %{target} - deleted_status: "(smazaný příspěvek)" empty: Nebyly nalezeny žádné záznamy. filter_by_action: Filtrovat podle akce filter_by_user: Filtrovat podle uživatele @@ -803,9 +802,6 @@ cs: desc_html: Zobrazit na hlavní stránce odkaz na veřejnou časovou osu a povolit přístup na veřejnou časovou osu pomocí API bez autentizace title: Povolit neautentizovaný přístup k časové ose title: Nastavení stránky - trendable_by_default: - desc_html: Ovlivňuje hashtagy, které nebyly dříve zakázány - title: Povolit zobrazení hashtagů mezi populárními i bez předchozího posouzení trends: desc_html: Veřejně zobrazit dříve schválený obsah, který je zrovna populární title: Trendy @@ -1196,14 +1192,26 @@ cs: public: Veřejné časové osy thread: Konverzace edit: + add_keyword: Přidat klíčové slovo + keywords: Klíčová slova title: Upravit filtr errors: + deprecated_api_multiple_keywords: Tyto parametry nelze změnit z této aplikace, protože se vztahují na více než jedno klíčové slovo filtru. Použijte novější aplikaci nebo webové rozhraní. invalid_context: Nebyl poskytnut žádný nebo jen neplatný kontext index: + contexts: Filtruje %{contexts} delete: Smazat empty: Nemáte žádný filtr. + expires_in: Vyprší za %{distance} + expires_on: Vyprší %{date} + keywords: + few: "%{count} klíčová slova" + many: "%{count} klíčových slov" + one: "%{count} klíčové slovo" + other: "%{count} klíčových slov" title: Filtry new: + save: Uložit nový filtr title: Přidat nový filtr footer: developers: Vývojáři @@ -1330,21 +1338,6 @@ cs: subject: Uživatel %{name} podal hlášení sign_up: subject: Uživatel %{name} se zaregistroval - digest: - action: Zobrazit všechna oznámení - body: Zde najdete stručný souhrn zpráv, které jste zmeškali od vaší poslední návštěvy %{since} - mention: 'Uživatel %{name} vás zmínil v:' - new_followers_summary: - few: Zatímco jste byli pryč jste navíc získali %{count} nové sledující! Skvělé! - many: Zatímco jste byli pryč jste navíc získali %{count} nových sledujících! Úžasné! - one: Zatímco jste byli pryč jste navíc získali jednoho nového sledujícího! Hurá! - other: Zatímco jste byli pryč jste navíc získali %{count} nových sledujících! Úžasné! - subject: - few: "%{count} nová oznámení od vaší poslední návštěvy 🐘" - many: "%{count} nových oznámení od vaší poslední návštěvy 🐘" - one: "1 nové oznámení od vaší poslední návštěvy 🐘" - other: "%{count} nových oznámení od vaší poslední návštěvy 🐘" - title: Ve vaší nepřítomnosti… favourite: body: 'Váš příspěvek si oblíbil uživatel %{name}:' subject: Uživatel %{name} si oblíbil váš příspěvek diff --git a/config/locales/cy.yml b/config/locales/cy.yml index a1e9835d6..7b6a0ef70 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -257,7 +257,6 @@ cy: update_status: Diweddaru Statws actions: memorialize_account_html: Newidodd %{name} gyfrif %{target} i dudalen goffa - deleted_status: "(statws wedi ei ddileu)" empty: Dim logiau ar gael. filter_by_action: Hidlo wrth weithred filter_by_user: Hidlo wrth ddefnyddiwr @@ -510,9 +509,6 @@ cy: desc_html: Dangos ffrwd gyhoeddus ar y dudalen lanio title: Rhagolwg o'r ffrwd title: Gosodiadau'r wefan - trendable_by_default: - desc_html: Yn ddylanwadu ar hashnodau sydd heb ei rhwystro yn y gorffenol - title: Gadael hashnodau i dueddu heb adolygiad cynt trends: desc_html: Arddangos hashnodau a adolygwyd yn gynt yn gyhoeddus sydd yn tueddu yn bresennol title: Hashnodau tueddig @@ -835,18 +831,6 @@ cy: carry_mutes_over_text: Wnaeth y defnyddiwr symud o %{acct}, a oeddech chi wedi'i dawelu. copy_account_note_text: 'Wnaeth y defnyddiwr symud o %{acct}, dyma oedd eich hen nodiadau amdanynt:' notification_mailer: - digest: - action: Gweld holl hysbysiadau - body: Dyma grynodeb byr o'r holl negeseuon golloch chi ers eich ymweliad diwethaf ar %{since} - mention: 'Soniodd %{name} amdanoch chi:' - new_followers_summary: - few: Hefyd, rydych wedi ennill %{count} dilynwr newydd tra eich bod i ffwrdd! Hwrê! - many: Hefyd, rydych wedi ennill %{count} dilynwr newydd tra eich bod i ffwrdd! Hwrê! - one: Yr ydych wedi ennill dilynwr newydd tra eich bod i ffwrdd! Hwrê! - other: Hefyd, rydych wedi ennill %{count} dilynwr newydd tra eich bod i ffwrdd! Hwrê! - two: Hefyd, rydych wedi ennill %{count} dilynwr newydd tra eich bod i ffwrdd! Hwrê! - zero: Hefyd, rydych wedi ennill %{count} dilynwr newydd tra eich bod i ffwrdd! Hwrê! - title: Yn eich absenoldeb... favourite: body: 'Cafodd eich statws ei hoffi gan %{name}:' subject: Hoffodd %{name} eich statws diff --git a/config/locales/da.yml b/config/locales/da.yml index 9538186c4..9b6250ad3 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -235,17 +235,21 @@ da: approve_user: Godkend bruger assigned_to_self_report: Tildel rapport change_email_user: Skift e-mail for bruger + change_role_user: Skift brugerrolle confirm_user: Bekræft bruger create_account_warning: Opret advarsel create_announcement: Opret bekendtgørelse + create_canonical_email_block: Opret e-mailblokering create_custom_emoji: Opret tilpasset emoji create_domain_allow: Opret domænetilladelse create_domain_block: Opret domæneblokering create_email_domain_block: Opret e-maildomæneblokering create_ip_block: Opret IP-regel create_unavailable_domain: Opret Utilgængeligt Domæne + create_user_role: Opret rolle demote_user: Degradér bruger destroy_announcement: Slet bekendtgørelse + destroy_canonical_email_block: Slet e-mailblokering destroy_custom_emoji: Slet tilpasset emoji destroy_domain_allow: Slet domænetilladelse destroy_domain_block: Slet domæneblokering @@ -254,6 +258,7 @@ da: destroy_ip_block: Slet IP-regel destroy_status: Slet indlæg destroy_unavailable_domain: Slet Utilgængeligt Domæne + destroy_user_role: Ødelæg rolle disable_2fa_user: Deaktivér 2FA disable_custom_emoji: Deaktivér tilpasset emoji disable_sign_in_token_auth_user: Deaktivér e-mailtoken godkendelse for bruger @@ -280,24 +285,30 @@ da: update_announcement: Opdatér bekendtgørelse update_custom_emoji: Opdatér tilpasset emoji update_domain_block: Opdatér domæneblokering + update_ip_block: Opdatér IP-regel update_status: Opdatér indlæg + update_user_role: Opdatér rolle actions: approve_appeal_html: "%{name} godkendte moderationsafgørelsesappellen fra %{target}" approve_user_html: "%{name} godkendte tilmeldingen fra %{target}" assigned_to_self_report_html: "%{name} tildelte sig selv anmeldelsen %{target}" change_email_user_html: "%{name} ændrede e-mailadressen for bruger %{target}" + change_role_user_html: "%{name} ændrede rollen for %{target}" confirm_user_html: "%{name} bekræftede e-mailadressen for bruger %{target}" create_account_warning_html: "%{name} sendte en advarsel til %{target}" create_announcement_html: "%{name} oprettede den nye bekendtgørelse %{target}" + create_canonical_email_block_html: "%{name} blokerede e-mailen med hash'et %{target}" create_custom_emoji_html: "%{name} uploadede den nye emoji %{target}" create_domain_allow_html: "%{name} tillod federering med domænet %{target}" create_domain_block_html: "%{name} blokerede domænet %{target}" create_email_domain_block_html: "%{name} blokerede e-maildomænet %{target}" create_ip_block_html: "%{name} oprettede en regel for IP %{target}" create_unavailable_domain_html: "%{name} stoppede levering til domænet %{target}" + create_user_role_html: "%{name} oprettede %{target}-rolle" demote_user_html: "%{name} degraderede brugeren %{target}" destroy_announcement_html: "%{name} slettede bekendtgørelsen %{target}" - destroy_custom_emoji_html: "%{name} fjernede emojien %{target}" + destroy_canonical_email_block_html: "%{name} afblokerede e-mailen med hash'et %{target}" + destroy_custom_emoji_html: "%{name} slettede emojien %{target}" destroy_domain_allow_html: "%{name} fjernede federeringstilladelsen med domænet %{target}" destroy_domain_block_html: "%{name} afblokerede domænet %{target}" destroy_email_domain_block_html: "%{name} afblokerede e-maildomænet %{target}" @@ -305,6 +316,7 @@ da: destroy_ip_block_html: "%{name} slettede en regel for IP %{target}" destroy_status_html: "%{name} fjernede indlægget fra %{target}" destroy_unavailable_domain_html: "%{name} genoptog levering til domænet %{target}" + destroy_user_role_html: "%{name} slettede %{target}-rolle" disable_2fa_user_html: "%{name} deaktiverede tofaktorkravet for brugeren %{target}" disable_custom_emoji_html: "%{name} deaktiverede emojien %{target}" disable_sign_in_token_auth_user_html: "%{name} deaktiverede e-mailtoken godkendelsen for %{target}" @@ -331,8 +343,9 @@ da: update_announcement_html: "%{name} opdaterede bekendtgørelsen %{target}" update_custom_emoji_html: "%{name} opdaterede emoji %{target}" update_domain_block_html: "%{name} opdaterede domæneblokeringen for %{target}" + update_ip_block_html: "%{name} ændrede reglen for IP'en %{target}" update_status_html: "%{name} opdaterede indlægget fra %{target}" - deleted_status: "(slettet indlæg)" + update_user_role_html: "%{name} ændrede %{target}-rolle" empty: Ingen logger fundet. filter_by_action: Filtrér efter handling filter_by_user: Filtrér efter bruger @@ -794,8 +807,8 @@ da: title: Tillad ikke-godkendt tilgang til offentlig tidslinje title: Webstedsindstillinger trendable_by_default: - desc_html: Påvirker hashtags, som ikke tidligere er blevet nægtet - title: Tillad hashtags at forme tendens uden forudgående revision + desc_html: Bestemt tendensindhold kan stadig udtrykkeligt forbydes + title: Tillad tendenser uden forudgående gennemsyn trends: desc_html: Vis offentligt tidligere reviderede hashtags, som pt. trender title: Populært @@ -1181,7 +1194,7 @@ da: add_keyword: Tilføj nøgleord keywords: Nøgleord statuses: Individuelle indlæg - statuses_hint_html: Dette filter gælder for udvalgte, individuelle indlæg, uanset om de matcher nøgleordene nedenfor. Disse indlæg kan gennemgås og fjernes fra filteret ved at klikke hér. + statuses_hint_html: Dette filter gælder for udvalgte, individuelle indlæg, uanset om de matcher nøgleordene nedenfor. Gennemgå eller fjern indlæg fra filteret. title: Redigere filter errors: deprecated_api_multiple_keywords: Disse parametre kan ikke ændres fra denne applikation, da de gælder for flere end ét filternøgleord. Brug en nyere applikation eller webgrænsefladen. @@ -1210,7 +1223,7 @@ da: batch: remove: Fjern fra filter index: - hint: Dette filter gælder for udvalgte, individuelle indlæg uanset andre kriterier. Flere indlæg kan føjes til filteret via webgrænsefladen. + hint: Dette filter gælder for udvalgte, individuelle indlæg uanset andre kriterier. Flere indlæg kan føjes til filteret via webfladen. title: Filtrerede indlæg footer: developers: Udviklere @@ -1219,12 +1232,22 @@ da: trending_now: Trender lige nu generic: all: Alle + all_items_on_page_selected_html: + one: "%{count} emne på denne side er valgt." + other: Alle %{count} emner på denne side er valgt. + all_matching_items_selected_html: + one: "%{count} emne, der matchede søgningen, er valgt." + other: Alle %{count} emner, som matchede søgningen, er valgt. changes_saved_msg: Ændringerne er gemt! copy: Kopier delete: Slet + deselect: Afmarkér alle none: Intet order_by: Sortér efter save_changes: Gem ændringer + select_all_matching_items: + one: Vælg %{count} emne, der matchede søgningen. + other: Vælg alle %{count} emner, som matchede søgningen. today: i dag validation_errors: one: Noget er ikke er helt i vinkel! Tjek fejlen nedenfor @@ -1333,17 +1356,6 @@ da: subject: "%{name} indsendte en anmeldelse" sign_up: subject: "%{name} tilmeldte sig" - digest: - action: Se alle notifikationer - body: Her er en kort oversigt over de beskeder, som er misset siden dit seneste besøg %{since} - mention: "%{name} nævnte dig i:" - new_followers_summary: - one: Under dit fravær har du har også fået en ny følger! Sådan! - other: Under dit fravær har du har også fået %{count} nye følgere! Sådan! - subject: - one: "1 ny notifikation siden senest besøg 🐘" - other: "%{count} nye notifikationer siden senest besøg 🐘" - title: I dit fravær... favourite: body: "%{name} favoritmarkerede dit indlæg:" subject: "%{name} favoritmarkerede dit indlæg" diff --git a/config/locales/de.yml b/config/locales/de.yml index 0ce9c3254..d411886bf 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -1,30 +1,30 @@ --- de: about: - about_hashtag_html: Das sind öffentliche Beiträge, die mit #%{hashtag} getaggt wurden. Wenn du irgendwo im Fediversum ein Konto besitzt, kannst du mit ihnen interagieren. - about_mastodon_html: Mastodon ist ein soziales Netzwerk. Es basiert auf offenen Web-Protokollen und freier, quelloffener Software. Es ist dezentral (so wie E-Mail!). + about_hashtag_html: Das sind öffentliche Beiträge, die mit #%{hashtag} getaggt wurden. Wenn du irgendwo im Födiversum ein Konto besitzt, kannst du mit ihnen interagieren. + about_mastodon_html: Mastodon ist ein soziales Netzwerk. Es basiert auf offenen Web-Protokollen und freier, quelloffener Software. Es ist dezentral – genau wie E-Mail! about_this: Über diesen Server active_count_after: aktiv - active_footnote: Monatlich Aktive User (MAU) + active_footnote: Monatlich aktive User (MAU) administered_by: 'Betrieben von:' api: API apps: Mobile Apps apps_platforms: Benutze Mastodon auf iOS, Android und anderen Plattformen browse_directory: Durchsuche das Profilverzeichnis und filtere nach Interessen - browse_local_posts: Durchsuche einen Live-Stream von öffentlichen Beiträgen von diesem Server + browse_local_posts: Durchsuche einen Live-Stream öffentlicher Beiträge dieses Servers browse_public_posts: Stöbere durch öffentliche Beiträge auf Mastodon contact: Kontakt contact_missing: Nicht angegeben contact_unavailable: Nicht verfügbar - continue_to_web: Weiter zur Web App + continue_to_web: Weiter zur Web-App discover_users: Benutzer entdecken documentation: Dokumentation - federation_hint_html: Mit einem Account auf %{instance} wirst du in der Lage sein Nutzern auf irgendeinem Mastodon-Server und darüber hinaus zu folgen. + federation_hint_html: Mit einem Account auf %{instance} wirst du in der Lage sein, Nutzern auf irgendeinem Mastodon-Server und darüber hinaus zu folgen. get_apps: Versuche eine mobile App hosted_on: Mastodon, gehostet auf %{domain} instance_actor_flash: | - Dieses Konto ist ein virtueller Akteur, der den Server selbst und nicht einen einzelnen Benutzer repräsentiert. - Dieser wird für Föderationszwecke verwendet und sollte nicht blockiert werden, es sei denn du möchtest die gesamte Instanz blockieren. + Dieses Konto ist ein virtueller Akteur, welcher den Server selbst – und nicht einen einzelnen Benutzer – repräsentiert. + Dieser wird für Föderationszwecke verwendet und sollte nicht blockiert werden, es sei denn, du möchtest die gesamte Instanz blockieren. learn_more: Mehr erfahren logged_in_as_html: Du bist derzeit als %{username} eingeloggt. logout_before_registering: Du bist bereits angemeldet. @@ -44,7 +44,7 @@ de: unavailable_content_description: domain: Server reason: 'Grund:' - rejecting_media: Mediendateien dieses Servers werden nicht verarbeitet und keine Thumbnails werden angezeigt, was manuelles anklicken auf den anderen Server erfordert. + rejecting_media: Mediendateien dieses Servers werden nicht verarbeitet und keine Thumbnails werden angezeigt, was manuelles Anklicken auf den anderen Server erfordert. rejecting_media_title: Gefilterte Medien silenced: Beiträge von diesem Server werden nirgends angezeigt, außer in deiner Startseite, wenn du der Person folgst, die den Beitrag verfasst hat. silenced_title: Stummgeschaltete Server @@ -96,9 +96,9 @@ de: created_msg: Moderationsnotiz erfolgreich erstellt! destroyed_msg: Moderationsnotiz erfolgreich gelöscht! accounts: - add_email_domain_block: E-Mail-Domain blacklisten + add_email_domain_block: E-Mail-Domain auf Blacklist setzen approve: Akzeptieren - approved_msg: "%{username}'s Anmeldeantrag erfolgreich genehmigt" + approved_msg: Anmeldeantrag von %{username} erfolgreich genehmigt are_you_sure: Bist du sicher? avatar: Profilbild by_domain: Domain @@ -121,7 +121,7 @@ de: delete: Daten löschen deleted: Gelöscht demote: Degradieren - destroyed_msg: "%{username}'s Daten wurden zum Löschen in die Warteschlange eingereiht" + destroyed_msg: Daten von %{username} wurden zum Löschen in die Warteschlange eingereiht disable: Ausschalten disable_sign_in_token_auth: Deaktiviere die Zwei-Faktor-Authentifizierung per E-Mail disable_two_factor_authentication: 2FA abschalten @@ -134,12 +134,12 @@ de: enable: Freischalten enable_sign_in_token_auth: Aktiviere die Zwei-Faktor-Authentifizierung per E-Mail enabled: Freigegeben - enabled_msg: "%{username}'s Konto erfolgreich freigegeben" + enabled_msg: Konto von %{username} erfolgreich freigegeben followers: Follower follows: Folgt header: Titelbild inbox_url: Posteingangs-URL - invite_request_text: Begründung für das beitreten + invite_request_text: Begründung für das Beitreten invited_by: Eingeladen von ip: IP-Adresse joined: Beigetreten @@ -152,7 +152,7 @@ de: media_attachments: Dateien memorialize: In Gedenkmal verwandeln memorialized: Memorialisiert - memorialized_msg: "%{username} wurde erfolgreich in ein memorialisiertes Konto umgewandelt" + memorialized_msg: "%{username} wurde erfolgreich in ein In-Memoriam-Konto umgewandelt" moderation: active: Aktiv all: Alle @@ -180,11 +180,11 @@ de: redownload: Profil neu laden redownloaded_msg: Profil von %{username} erfolgreich von Ursprung aktualisiert reject: Ablehnen - rejected_msg: "%{username}'s Anmeldeantrag erfolgreich abgelehnt" + rejected_msg: Anmeldeantrag von %{username} erfolgreich abgelehnt remove_avatar: Profilbild entfernen remove_header: Titelbild entfernen removed_avatar_msg: Profilbild von %{username} erfolgreich entfernt - removed_header_msg: "%{username}'s Titelbild wurde erfolgreich entfernt" + removed_header_msg: Titelbild von %{username} wurde erfolgreich entfernt resend_confirmation: already_confirmed: Diese_r Benutzer_in wurde bereits bestätigt send: Bestätigungs-E-Mail erneut senden @@ -195,7 +195,7 @@ de: role: Rolle search: Suche search_same_email_domain: Andere Benutzer mit der gleichen E-Mail-Domain - search_same_ip: Andere Benutzer mit derselben IP + search_same_ip: Andere Benutzer mit derselben IP-Adresse security_measures: only_password: Nur Passwort password_and_2fa: Passwort und 2FA @@ -212,7 +212,7 @@ de: subscribe: Abonnieren suspend: Suspendieren suspended: Verbannt - suspension_irreversible: Die Daten dieses Kontos wurden unwiderruflich gelöscht. Du kannst das Konto aufheben, um es brauchbar zu machen, aber es wird keine Daten wiederherstellen, die es davor schon hatte. + suspension_irreversible: Die Daten dieses Kontos wurden unwiderruflich gelöscht. Du kannst das Konto aufheben, um es wieder brauchbar zu machen, aber es wird keine Daten wiederherstellen, die es davor hatte. suspension_reversible_hint_html: Das Konto wurde gesperrt und die Daten werden am %{date} vollständig gelöscht. Bis dahin kann das Konto ohne irgendwelche negativen Auswirkungen wiederhergestellt werden. Wenn du alle Daten des Kontos sofort entfernen möchtest, kannst du dies nachfolgend tun. title: Konten unblock_email: E-Mail Adresse entsperren @@ -221,7 +221,7 @@ de: undo_sensitized: Nicht mehr als NSFW markieren undo_silenced: Stummschaltung aufheben undo_suspension: Verbannung aufheben - unsilenced_msg: "%{username}'s Konto erfolgreich freigegeben" + unsilenced_msg: Konto von %{username} erfolgreich freigegeben unsubscribe: Abbestellen unsuspended_msg: Konto von %{username} erfolgreich freigegeben username: Profilname @@ -235,18 +235,22 @@ de: approve_user: Benutzer genehmigen assigned_to_self_report: Bericht zuweisen change_email_user: E-Mail des Benutzers ändern + change_role_user: Rolle des Benutzers ändern confirm_user: Benutzer bestätigen create_account_warning: Warnung erstellen create_announcement: Ankündigung erstellen - create_custom_emoji: Eigene Emoji erstellen + create_canonical_email_block: E-Mail-Block erstellen + create_custom_emoji: Eigene Emojis erstellen create_domain_allow: Domain erlauben create_domain_block: Domain blockieren create_email_domain_block: E-Mail-Domain-Block erstellen create_ip_block: IP-Regel erstellen create_unavailable_domain: Nicht verfügbare Domain erstellen + create_user_role: Rolle erstellen demote_user: Benutzer degradieren destroy_announcement: Ankündigung löschen - destroy_custom_emoji: Eigene Emoji löschen + destroy_canonical_email_block: E-Mail-Blockade löschen + destroy_custom_emoji: Eigene Emojis löschen destroy_domain_allow: Erlaube das Löschen von Domains destroy_domain_block: Domain-Blockade löschen destroy_email_domain_block: E-Mail-Domain-Blockade löschen @@ -254,6 +258,7 @@ de: destroy_ip_block: IP-Regel löschen destroy_status: Beitrag löschen destroy_unavailable_domain: Nicht verfügbare Domain löschen + destroy_user_role: Rolle löschen disable_2fa_user: 2FA deaktivieren disable_custom_emoji: Benutzerdefiniertes Emoji deaktivieren disable_sign_in_token_auth_user: Zwei-Faktor-Authentifizierung per E-Mail für den Nutzer deaktiviert @@ -279,25 +284,31 @@ de: unsuspend_account: Konto nicht mehr sperren update_announcement: Ankündigung aktualisieren update_custom_emoji: Benutzerdefiniertes Emoji aktualisieren - update_domain_block: Domain Block aktualisieren + update_domain_block: Domain-Blockade aktualisieren + update_ip_block: IP-Regel aktualisieren update_status: Beitrag aktualisieren + update_user_role: Rolle aktualisieren actions: approve_appeal_html: "%{name} genehmigte die Moderationsbeschlüsse von %{target}" approve_user_html: "%{name} genehmigte die Anmeldung von %{target}" assigned_to_self_report_html: "%{name} hat sich die Meldung %{target} selbst zugewiesen" change_email_user_html: "%{name} hat die E-Mail-Adresse des Nutzers %{target} geändert" + change_role_user_html: "%{name} hat die Rolle von %{target} geändert" confirm_user_html: "%{name} hat die E-Mail-Adresse von %{target} bestätigt" create_account_warning_html: "%{name} hat eine Warnung an %{target} gesendet" create_announcement_html: "%{name} hat die neue Ankündigung %{target} erstellt" + create_canonical_email_block_html: "%{name} hat die E-Mail mit dem Hash %{target} blockiert" create_custom_emoji_html: "%{name} hat neues Emoji %{target} hochgeladen" create_domain_allow_html: "%{name} hat die Domain %{target} gewhitelistet" create_domain_block_html: "%{name} hat die Domain %{target} blockiert" create_email_domain_block_html: "%{name} hat die E-Mail-Domain %{target} geblacklistet" create_ip_block_html: "%{name} hat eine Regel für IP %{target} erstellt" create_unavailable_domain_html: "%{name} hat die Lieferung an die Domain %{target} eingestellt" + create_user_role_html: "%{name} hat die Rolle %{target} erstellt" demote_user_html: "%{name} stufte Benutzer_in %{target} herunter" destroy_announcement_html: "%{name} hat die neue Ankündigung %{target} gelöscht" - destroy_custom_emoji_html: "%{name} zerstörte Emoji %{target}" + destroy_canonical_email_block_html: "%{name} hat die E-Mail mit dem Hash %{target} freigegeben" + destroy_custom_emoji_html: "%{name} hat das %{target} Emoji gelöscht" destroy_domain_allow_html: "%{name} hat die Domain %{target} von der Whitelist entfernt" destroy_domain_block_html: "%{name} hat die Domain %{target} entblockt" destroy_email_domain_block_html: "%{name} hat die E-Mail-Domain %{target} gewhitelistet" @@ -305,12 +316,13 @@ de: destroy_ip_block_html: "%{name} hat eine Regel für IP %{target} gelöscht" destroy_status_html: "%{name} hat einen Beitrag von %{target} entfernt" destroy_unavailable_domain_html: "%{name} setzte die Lieferung an die Domain %{target} fort" + destroy_user_role_html: "%{name} hat die Rolle %{target} gelöscht" disable_2fa_user_html: "%{name} hat Zwei-Faktor-Anforderung für Benutzer_in %{target} deaktiviert" disable_custom_emoji_html: "%{name} hat das %{target} Emoji deaktiviert" disable_sign_in_token_auth_user_html: "%{name} hat die E-Mail-Token Authentifizierung für %{target} deaktiviert" disable_user_html: "%{name} hat Zugang von Benutzer_in %{target} deaktiviert" enable_custom_emoji_html: "%{name} hat das %{target} Emoji aktiviert" - enable_sign_in_token_auth_user_html: "%{name} hat die E-Mail-Token Authentifizierung für %{target} aktiviert" + enable_sign_in_token_auth_user_html: "%{name} hat die E-Mail-Token-Authentifizierung für %{target} aktiviert" enable_user_html: "%{name} hat Zugang von Benutzer_in %{target} aktiviert" memorialize_account_html: "%{name} hat das Konto von %{target} in eine Gedenkseite umgewandelt" promote_user_html: "%{name} hat %{target} befördert" @@ -320,19 +332,20 @@ de: reopen_report_html: "%{name} hat die Meldung %{target} wieder geöffnet" reset_password_user_html: "%{name} hat das Passwort von %{target} zurückgesetzt" resolve_report_html: "%{name} hat die Meldung %{target} bearbeitet" - sensitive_account_html: "%{name} markierte %{target}'s Medien als NSFW" + sensitive_account_html: "%{name} markierte die Medien von %{target} als NSFW" silence_account_html: "%{name} hat das Konto von %{target} stummgeschaltet" suspend_account_html: "%{name} hat das Konto von %{target} verbannt" unassigned_report_html: "%{name} hat die Zuweisung der Meldung %{target} entfernt" - unblock_email_account_html: "%{name} entsperrte %{target}'s E-Mail-Adresse" - unsensitive_account_html: "%{name} markierte %{target}'s Medien nicht als NSFW" + unblock_email_account_html: "%{name} entsperrte die E-Mail-Adresse von %{target}" + unsensitive_account_html: "%{name} markierte Medien von %{target} als nicht NSFW" unsilence_account_html: "%{name} hat die Stummschaltung von %{target} aufgehoben" unsuspend_account_html: "%{name} hat die Verbannung von %{target} aufgehoben" update_announcement_html: "%{name} aktualisierte Ankündigung %{target}" update_custom_emoji_html: "%{name} hat das %{target} Emoji geändert" update_domain_block_html: "%{name} hat den Domain-Block für %{target} aktualisiert" + update_ip_block_html: "%{name} hat die Regel für IP %{target} geändert" update_status_html: "%{name} hat einen Beitrag von %{target} aktualisiert" - deleted_status: "(gelöschter Beitrag)" + update_user_role_html: "%{name} hat die Rolle %{target} geändert" empty: Keine Protokolle gefunden. filter_by_action: Nach Aktion filtern filter_by_user: Nach Benutzer filtern @@ -467,11 +480,11 @@ de: resolve: Domain auflösen title: Neue E-Mail-Domain-Blockade no_email_domain_block_selected: Es wurden keine E-Mail-Domain-Blockierungen geändert, da keine ausgewählt wurden - resolved_dns_records_hint_html: Der Domain-Name wird an die folgenden MX-Domains aufgelöst, die letztendlich für die Annahme von E-Mails verantwortlich sind. Das Blockieren einer MX-Domain blockiert Anmeldungen von jeder E-Mail-Adresse, die dieselbe MX-Domain verwendet, auch wenn der sichtbare Domainname anders ist. Achte darauf große E-Mail-Anbieter nicht zu blockieren. + resolved_dns_records_hint_html: Der Domain-Name wird an die folgenden MX-Domains aufgelöst, die letztendlich für die Annahme von E-Mails verantwortlich sind. Das Blockieren einer MX-Domain blockiert Anmeldungen von jeder E-Mail-Adresse, welche dieselbe MX-Domain verwendet, auch wenn der sichtbare Domainname anders ist. Achte darauf, große E-Mail-Anbieter nicht zu blockieren. resolved_through_html: Durch %{domain} aufgelöst title: E-Mail-Domain-Blockade follow_recommendations: - description_html: "Folgeempfehlungen helfen neuen Nutzern dabei, schnell interessante Inhalte zu finden. Wenn ein Nutzer noch nicht genug mit anderen interagiert hat, um personalisierte Folgeempfehlungen zu erstellen, werden stattdessen diese Benutzerkonten verwendet. Sie werden täglich basiert auf einer Mischung aus am meisten interagierenden Benutzerkonten und solchen mit den meisten Folgenden für eine bestimmte Sprache neuberechnet." + description_html: "Folgeempfehlungen helfen neuen Nutzern dabei, schnell interessante Inhalte zu finden. Wenn ein Nutzer noch nicht genug mit anderen interagiert hat, um personalisierte Folgeempfehlungen zu erstellen, werden stattdessen diese Benutzerkonten verwendet. Sie werden täglich basierend auf einer Mischung aus am meisten interagierenden Benutzerkonten und jenen mit den meisten Folgenden für eine bestimmte Sprache neuberechnet." language: Für Sprache status: Status suppress: Folgeempfehlungen unterdrücken @@ -577,7 +590,7 @@ de: disable: Ausschalten disabled: Ausgeschaltet enable: Einschalten - enable_hint: Sobald aktiviert wird dein Server alle öffentlichen Beiträge dieses Relays abonnieren und wird alle öffentlichen Beiträge dieses Servers an es senden. + enable_hint: Sobald aktiviert, wird dein Server alle öffentlichen Beiträge dieses Relays abonnieren und alle öffentlichen Beiträge dieses Servers an dieses senden. enabled: Eingeschaltet inbox_url: Relay-URL pending: Warte auf Zustimmung des Relays @@ -599,12 +612,12 @@ de: action_taken_by: Maßnahme ergriffen durch actions: delete_description_html: Der gemeldete Beitrag wird gelöscht und ein Strike wird aufgezeichnet, um dir bei zukünftigen Verstößen des gleichen Accounts zu helfen. - mark_as_sensitive_description_html: The media in the reported posts will be marked as sensitive and a strike will be recorded to help you escalate on future infractions by the same account. - other_description_html: Weitere Optionen zur Kontrolle des Kontoverhaltens und zur Anpassung der Kommunikation an das gemeldete Konto. - resolve_description_html: Es wird keine Maßnahme gegen den gemeldeten Account ergriffen, es wird kein Strike verzeichnet und die Meldung wird geschlossen. - silence_description_html: Das Profil wird nur für diejenigen sichtbar sein, die es bereits verfolgen oder manuell nachschlagen und die Reichweite wird stark begrenzt. Kann immer rückgängig gemacht werden. + mark_as_sensitive_description_html: Die Medien in den gemeldeten Beiträgen werden als NSFW markiert und ein Strike wird notiert, um dir dabei zu helfen, härter auf zukünftige Zuwiderhandlungen desselben Kontos zu reagieren. + other_description_html: Weitere Optionen zur Kontrolle des Kontoverhaltens und zur Anpassung der Kommunikation mit dem gemeldeten Konto. + resolve_description_html: Es wird keine Maßnahme gegen das gemeldete Konto ergriffen, es wird kein Strike verzeichnet und die Meldung wird geschlossen. + silence_description_html: Das Profil wird nur für diejenigen sichtbar sein, die ihm bereits folgen oder es manuell nachschlagen, und die Reichweite wird stark begrenzt. Kann immer rückgängig gemacht werden. suspend_description_html: Das Profil und alle seine Inhalte werden unzugänglich werden, bis es schließlich gelöscht wird. Interaktion mit dem Konto wird unmöglich sein. Reversibel innerhalb von 30 Tagen. - actions_description_html: Entscheide, welche Maßnahmen zur Lösung dieses Berichts zu ergreifen sind. Wenn du eine Strafmaßnahme gegen das gemeldete Konto ergreifst, wird eine E-Mail-Benachrichtigung an diese gesendet außer wenn die Spam Kategorie ausgewählt ist. + actions_description_html: Entscheide, welche Maßnahmen zur Lösung dieses Berichts zu ergreifen sind. Wenn du eine Strafmaßnahme gegen das gemeldete Konto ergreifst, wird eine E-Mail-Benachrichtigung an diese gesendet, außer wenn die Spam-Kategorie ausgewählt ist. add_to_report: Mehr zur Meldung hinzufügen are_you_sure: Bist du dir sicher? assign_to_self: Mir zuweisen @@ -614,7 +627,7 @@ de: category_description_html: Der Grund, warum dieses Konto und/oder der Inhalt gemeldet wurden, wird in der Kommunikation mit dem gemeldeten Konto zitiert comment: none: Kein - comment_description_html: 'Um weitere Informationen bereitzustellen, schrieb %{name} folgendes:' + comment_description_html: 'Um weitere Informationen bereitzustellen, schrieb %{name} Folgendes:' created_at: Gemeldet delete_and_resolve: Beiträge löschen forwarded: Weitergeleitet @@ -661,10 +674,10 @@ de: moderation: Moderation special: Spezial delete: Löschen - description_html: Mit Benutzerrollenkönnen Sie die Funktionen und Bereiche von Mastodon anpassen, auf die Ihre Benutzer zugreifen können. + description_html: Mit Benutzerrollenkannst du die Funktionen und Bereiche von Mastodon anpassen, auf die deine Benutzer zugreifen können. edit: "'%{name}' Rolle bearbeiten" everyone: Standardberechtigungen - everyone_full_description_html: Das ist die -Basis-Rolle die jeden Benutzer betrifft, auch diejenigen ohne zugewiesene Rolle. Alle anderen Rollen erben Berechtigungen davon. + everyone_full_description_html: Das ist die -Basis-Rolle, die jeden Benutzer betrifft, auch diejenigen ohne zugewiesene Rolle. Alle anderen Rollen erben Berechtigungen davon. permissions_count: one: "%{count} Berechtigung" other: "%{count} Berechtigungen" @@ -674,46 +687,46 @@ de: delete_user_data: Benutzerdaten löschen delete_user_data_description: Erlaubt Benutzern, die Daten anderer Benutzer ohne Verzögerung zu löschen invite_users: Benutzer einladen - invite_users_description: Erlaubt Benutzern neue Leute zum Server einzuladen + invite_users_description: Erlaubt Benutzern, neue Leute zum Server einzuladen manage_announcements: Ankündigungen verwalten - manage_announcements_description: Erlaubt Benutzern Ankündigungen auf dem Server zu verwalten + manage_announcements_description: Erlaubt Benutzern, Ankündigungen auf dem Server zu verwalten manage_appeals: Anträge verwalten - manage_appeals_description: Erlaubt es Benutzer Anträge gegen Moderationsaktionen zu überprüfen + manage_appeals_description: Erlaubt es Benutzern, Anträge gegen Moderationsaktionen zu überprüfen manage_blocks: Geblocktes verwalten - manage_blocks_description: Erlaubt Benutzern E-Mail-Anbieter und IP-Adressen zu blockieren + manage_blocks_description: Erlaubt Benutzern, E-Mail-Anbieter und IP-Adressen zu blockieren manage_custom_emojis: Benutzerdefinierte Emojis verwalten - manage_custom_emojis_description: Erlaubt Benutzern benutzerdefinierte Emojis auf dem Server zu verwalten + manage_custom_emojis_description: Erlaubt es Benutzern, eigene Emojis auf dem Server zu verwalten manage_federation: Föderation verwalten - manage_federation_description: Erlaubt Benutzern, Föderation mit anderen Domänen zu blockieren oder zuzulassen und die Zustellbarkeit zu kontrollieren + manage_federation_description: Erlaubt es Benutzern, Föderation mit anderen Domains zu blockieren oder zuzulassen und die Zustellbarkeit zu kontrollieren manage_invites: Einladungen verwalten - manage_invites_description: Erlaubt Benutzern Einladungslinks zu durchsuchen und zu deaktivieren + manage_invites_description: Erlaubt es Benutzern, Einladungslinks zu durchsuchen und zu deaktivieren manage_reports: Meldungen verwalten - manage_reports_description: Erlaubt Benutzern Meldungen zu überprüfen und Moderationsaktionen gegen sie durchzuführen + manage_reports_description: Erlaubt es Benutzern, Meldungen zu überprüfen und Moderationsaktionen gegen sie durchzuführen manage_roles: Rollen verwalten - manage_roles_description: Erlaubt Benutzern Rollen unter ihren Rollen zu verwalten und zuzuweisen + manage_roles_description: Erlaubt es Benutzern, Rollen unter ihren Rollen zu verwalten und zuzuweisen manage_rules: Regeln verwalten - manage_rules_description: Erlaubt Benutzern Serverregeln zu ändern + manage_rules_description: Erlaubt es Benutzern, Serverregeln zu ändern manage_settings: Einstellungen verwalten - manage_settings_description: Erlaubt Benutzern Site-Einstellungen zu ändern + manage_settings_description: Erlaubt es Benutzern, Seiten-Einstellungen zu ändern manage_taxonomies: Taxonomien verwalten manage_taxonomies_description: Ermöglicht Benutzern die Überprüfung angesagter Inhalte und das Aktualisieren der Hashtag-Einstellungen manage_user_access: Benutzerzugriff verwalten - manage_user_access_description: Erlaubt Benutzern die Zwei-Faktor-Authentifizierung anderer Benutzer zu deaktivieren, ihre E-Mail-Adresse zu ändern und ihr Passwort zurückzusetzen + manage_user_access_description: Erlaubt es Benutzern, die Zwei-Faktor-Authentifizierung anderer Benutzer zu deaktivieren, ihre E-Mail-Adresse zu ändern und ihr Passwort zurückzusetzen manage_users: Benutzer verwalten - manage_users_description: Erlaubt Benutzern die Details anderer Benutzer anzuzeigen und Moderationsaktionen gegen sie auszuführen + manage_users_description: Erlaubt es Benutzern, die Details anderer Benutzer anzuzeigen und Moderationsaktionen gegen sie auszuführen manage_webhooks: Webhooks verwalten - manage_webhooks_description: Erlaubt Benutzern Webhooks für administrative Ereignisse einzurichten + manage_webhooks_description: Erlaubt es Benutzern, Webhooks für administrative Ereignisse einzurichten view_audit_log: Audit-Log anzeigen - view_audit_log_description: Erlaubt Benutzern den Verlauf von administrativen Aktionen auf dem Server zu sehen + view_audit_log_description: Erlaubt es Benutzern, den Verlauf von administrativen Aktionen auf dem Server zu sehen view_dashboard: Dashboard anzeigen - view_dashboard_description: Erlaubt Benutzern den Zugriff auf das Dashboard und verschiedene Metriken + view_dashboard_description: Gewährt Benutzern den Zugriff auf das Dashboard und verschiedene Metriken view_devops: DevOps - view_devops_description: Erlaubt Benutzern auf Sidekiq und pgHero Dashboards zuzugreifen + view_devops_description: Erlaubt es Benutzern, auf die Sidekiq- und pgHero-Dashboards zuzugreifen title: Rollen rules: add_new: Regel hinzufügen delete: Löschen - description_html: Während die meisten behaupten, die Nutzungsbedingungen gelesen und akzeptiert zu haben, lesen die Menschen sie in der Regel erst nach einem Problem. Vereinfache es, die Regeln deines Servers auf einen Blick zu sehen, indem du sie in einer einfachen Auflistung zur Verfügung stellst. Versuche die einzelnen Regeln kurz und einfach zu halten, aber versuche nicht, sie in viele verschiedene Elemente aufzuteilen. + description_html: Während die meisten behaupten, die Nutzungsbedingungen gelesen und akzeptiert zu haben, lesen die Menschen sie in der Regel erst nach einem Problem. Vereinfache es, die Regeln deines Servers auf einen Blick zu sehen, indem du sie in einer einfachen Auflistung zur Verfügung stellst. Versuche, die einzelnen Regeln kurz und einfach zu halten, aber versuche nicht, sie in viele verschiedene Elemente aufzuteilen. edit: Regel bearbeiten empty: Es wurden bis jetzt keine Server-Regeln definiert. title: Server-Regeln @@ -722,13 +735,13 @@ de: desc_html: Anzahl der lokal geposteten Beiträge, aktiven Nutzern und neuen Registrierungen in wöchentlichen Zusammenfassungen title: Veröffentliche gesamte Statistiken über Benutzeraktivitäten bootstrap_timeline_accounts: - desc_html: Mehrere Profilnamen durch Kommata trennen. Diese Accounts werden immer in den Folgemempfehlungen angezeigt - title: Konten, die Neu-Angemeldete empfohlen bekommen sollen + desc_html: Mehrere Profilnamen durch Kommata trennen. Diese Konten werden immer in den Folgemempfehlungen angezeigt + title: Konten, welche neuen Benutzern empfohlen werden sollen contact_information: email: Öffentliche E-Mail-Adresse username: Profilname für die Kontaktaufnahme custom_css: - desc_html: Verändere das Aussehen mit CSS, dass auf jeder Seite geladen wird + desc_html: Verändere das Aussehen mit CSS-Stilen, die auf jeder Seite geladen werden title: Benutzerdefiniertes CSS default_noindex: desc_html: Beeinflusst alle Benutzer, die diese Einstellung nicht selbst geändert haben @@ -744,7 +757,7 @@ de: desc_html: Wird auf der Startseite angezeigt. Mindestens 600x100px sind empfohlen. Wenn es nicht gesetzt wurde, wird das Server-Thumbnail dafür verwendet title: Bild für Einstiegsseite mascot: - desc_html: Angezeigt auf mehreren Seiten. Mehr als 293x205px empfohlen. Wenn es nicht gesetzt wurde wird es auf das Standard-Maskottchen zurückfallen + desc_html: Angezeigt auf mehreren Seiten. Mehr als 293x205px empfohlen. Wenn es nicht gesetzt wurde, wird stattdessen das Standard-Maskottchen genutzt werden. title: Maskottchen-Bild peers_api_enabled: desc_html: Domain-Namen, die der Server im Fediversum gefunden hat @@ -753,7 +766,7 @@ de: desc_html: Linkvorschauen auf anderen Webseiten werden ein Vorschaubild anzeigen, obwohl die Medien als NSFW markiert sind title: NSFW-Medien in OpenGraph-Vorschau anzeigen profile_directory: - desc_html: Erlaube Benutzer auffindbar zu sein + desc_html: Erlaube es Benutzern, auffindbar zu sein title: Aktiviere Profilverzeichnis registrations: closed_message: @@ -763,7 +776,7 @@ de: desc_html: Allen erlauben, ihr Konto eigenmächtig zu löschen title: Kontolöschung erlauben require_invite_text: - desc_html: Wenn eine Registrierung manuell genehmigt werden muss, mache den "Warum möchtest du beitreten?" Text eher obligatorisch als optional + desc_html: Wenn eine Registrierung manuell genehmigt werden muss, mache den „Warum möchtest du beitreten?“-Text obligatorisch statt optional title: Neue Benutzer müssen einen Einladungstext ausfüllen registrations_mode: modes: @@ -772,7 +785,7 @@ de: open: Jeder kann sich registrieren title: Registrierungsmodus show_known_fediverse_at_about_page: - desc_html: Wenn aktiviert, wird es alle Beiträge aus dem bereits bekannten Teil des Fediversums auf der Startseite anzeigen. Andernfalls werden lokale Beitrage des Servers angezeigt. + desc_html: Wenn aktiviert, wird es alle Beiträge aus dem bereits bekannten Teil des Födiversums auf der Startseite anzeigen. Andernfalls werden lokale Beitrage des Servers angezeigt. title: Zeige eine öffentliche Zeitleiste auf der Einstiegsseite site_description: desc_html: Einleitungsabschnitt auf der Frontseite. Beschreibe, was diesen Mastodon-Server ausmacht. Du kannst HTML-Tags benutzen, insbesondere <a> und <em>. @@ -781,7 +794,7 @@ de: desc_html: Bietet sich für Verhaltenskodizes, Regeln, Richtlinien und weiteres an, was deinen Server auszeichnet. Du kannst HTML-Tags benutzen title: Erweiterte Beschreibung des Servers site_short_description: - desc_html: Wird angezeigt in der Seitenleiste und in Meta-Tags. Beschreibe in einem einzigen Abschnitt, was Mastodon ist und was diesen Server von anderen unterscheidet. Falls leer, wird die Server-Beschreibung verwendet. + desc_html: Wird in der Seitenleiste und in Meta-Tags angezeigt. Beschreibe in einem einzigen Abschnitt, was Mastodon ist und was diesen Server von anderen unterscheidet. Falls leer, wird die Server-Beschreibung verwendet. title: Kurze Beschreibung des Servers site_terms: desc_html: Hier kannst du deine eigenen Geschäftsbedingungen, Datenschutzerklärung und anderes rechtlich Relevante eintragen. Du kannst HTML-Tags nutzen @@ -795,8 +808,8 @@ de: title: Zeitleisten-Vorschau title: Server-Einstellungen trendable_by_default: - desc_html: Betroffene Hashtags, die bisher nicht gesperrt wurden - title: Hashtags ohne vorherige Überprüfung erlauben zu trenden + desc_html: Bestimmte angesagte Inhalte können immer noch explizit deaktiviert werden + title: Trends ohne vorherige Überprüfung erlauben trends: desc_html: Zuvor überprüfte Hashtags öffentlich anzeigen, die derzeit angesagt sind title: Trendende Hashtags @@ -821,24 +834,24 @@ de: disable: "%{name} hat das Konto von %{target} eingefroren" mark_statuses_as_sensitive: "%{name} markierte %{target}'s Beiträge als NSFW" none: "%{name} hat eine Warnung an %{target} gesendet" - sensitive: "%{name} markierte %{target}'s Konto als NSFW" + sensitive: "%{name} markierte das Konto von %{target} als NSFW" silence: "%{name} hat das Konto von %{target} eingeschränkt" suspend: "%{name} hat das Konto von %{target} verbannt" appeal_approved: Einspruch angenommen appeal_pending: Einspruch ausstehend system_checks: database_schema_check: - message_html: Es gibt ausstehende Datenbankmigrationen. Bitte führen Sie sie aus, um sicherzustellen, dass sich die Anwendung wie erwartet verhält + message_html: Es gibt ausstehende Datenbankmigrationen. Bitte führe sie aus, um sicherzustellen, dass sich die Anwendung wie erwartet verhält elasticsearch_running_check: - message_html: Verbindung mit Elasticsearch konnte nicht hergestellt werden. Bitte prüfe ob Elasticsearch läuft oder deaktiviere die Volltextsuche + message_html: Verbindung mit Elasticsearch konnte nicht hergestellt werden. Bitte prüfe, ob Elasticsearch läuft, oder deaktiviere die Volltextsuche elasticsearch_version_check: message_html: 'Inkompatible Elasticsearch-Version: %{value}' version_comparison: Elasticsearch %{running_version} läuft, aber %{required_version} wird benötigt rules_check: action: Serverregeln verwalten - message_html: Sie haben keine Serverregeln definiert. + message_html: Du hast keine Serverregeln definiert. sidekiq_process_check: - message_html: Kein Sidekiq-Prozess läuft für die %{value} Warteschlange(n). Bitte überprüfen Sie Ihre Sidekiq-Konfiguration + message_html: Kein Sidekiq-Prozess läuft für die %{value} Warteschlange(n). Bitte überprüfe deine Sidekiq-Konfiguration tags: review: Prüfstatus updated_msg: Hashtageinstellungen wurden erfolgreich aktualisiert @@ -850,26 +863,26 @@ de: links: allow: Erlaube Link allow_provider: Erlaube Herausgeber - description_html: Dies sind Links, die derzeit von Konten geteilt werden, von denen dein Server Beiträge sieht. Es kann deinen Benutzern helfen, herauszufinden, was in der Welt vor sich geht. Es werden keine Links öffentlich angezeigt, bis du den Publisher genehmigst. Du kannst auch einzelne Links zulassen oder ablehnen. + description_html: Dies sind Links, die derzeit von Konten geteilt werden, von denen dein Server Beiträge sieht. Es kann deinen Benutzern helfen herauszufinden, was in der Welt vor sich geht. Es werden keine Links öffentlich angezeigt, bis du den Publisher genehmigst. Du kannst auch einzelne Links zulassen oder ablehnen. disallow: Verbiete Link disallow_provider: Verbiete Herausgeber shared_by_over_week: one: In der letzten Woche von einer Person geteilt other: In der letzten Woche von %{count} Personen geteilt title: Angesagte Links - usage_comparison: Heute %{today} mal geteilt, gestern %{yesterday} mal + usage_comparison: Heute %{today} Mal geteilt, gestern %{yesterday} Mal only_allowed: Nur Erlaubte pending_review: Überprüfung ausstehend preview_card_providers: allowed: Links von diesem Herausgeber können angesagt sein - description_html: Dies sind Domains, von denen Links oft auf deinem Server geteilt werden. Links werden sich nicht öffentlich trenden, es sei denn, die Domain des Links wird genehmigt. Deine Zustimmung (oder Ablehnung) erstreckt sich auf Subdomains. + description_html: Dies sind Domains, von denen Links oft auf deinem Server geteilt werden. Links werden nicht öffentlich trenden, es sei denn, die Domain des Links wird genehmigt. Deine Zustimmung (oder Ablehnung) erstreckt sich auf Subdomains. rejected: Links von diesem Herausgeber können nicht angesagt sein title: Herausgeber rejected: Abgelehnt statuses: allow: Beitrag erlauben allow_account: Autor erlauben - description_html: Dies sind Beiträge, von denen dein Server weiß, dass sie derzeit viel geteilt und favorisiert werden. Es kann deinen neuen und wiederkehrenden Benutzern helfen, weitere Personen zu finden. Es werden keine Beiträge öffentlich angezeigt, bis du den Autor genehmigst und der Autor es zulässt deren Konto anderen Benutzern zu zeigen. Du kannst auch einzelne Beiträge zulassen oder ablehnen. + description_html: Dies sind Beiträge, von denen dein Server weiß, dass sie derzeit viel geteilt und favorisiert werden. Es kann deinen neuen und wiederkehrenden Benutzern helfen, weitere Personen zu finden. Es werden keine Beiträge öffentlich angezeigt, bis du den Autor genehmigst und der Autor es zulässt, sein Konto anderen Benutzern zeigen zu lassen. Du kannst auch einzelne Beiträge zulassen oder ablehnen. disallow: Beitrag verbieten disallow_account: Autor verbieten not_discoverable: Der Autor hat sich nicht dafür entschieden, entdeckt zu werden @@ -895,7 +908,7 @@ de: trendable: Darf unter Trends erscheinen trending_rank: 'Trend #%{rank}' usable: Kann verwendet werden - usage_comparison: Heute %{today} mal genutzt, gestern %{yesterday} mal + usage_comparison: Heute %{today} Mal genutzt, gestern %{yesterday} Mal used_by_over_week: one: In der letzten Woche von einer Person genutzt other: In der letzten Woche von %{count} Personen genutzt @@ -937,9 +950,9 @@ de: sensitive: deren Konto als NSFW zu markieren silence: deren Konto zu beschränken suspend: deren Konto zu sperren - body: "%{target} hat was gegen eine Moderationsentscheidung von %{action_taken_by} von %{date}, die %{type} war. Die Person schrieb:" + body: "%{target} hat etwas gegen eine Moderationsentscheidung von %{action_taken_by} von %{date}, die %{type} war. Die Person schrieb:" next_steps: Du kannst dem Einspruch zustimmen und die Moderationsentscheidung rückgängig machen oder ignorieren. - subject: "%{username} hat Einspruch an einer Moderationsentscheidung von %{instance}" + subject: "%{username} hat Einspruch gegen eine Moderationsentscheidung von %{instance} eingelegt" new_pending_account: body: Die Details von diesem neuem Konto sind unten. Du kannst die Anfrage akzeptieren oder ablehnen. subject: Neues Konto zur Überprüfung auf %{instance} verfügbar (%{username}) @@ -965,13 +978,13 @@ de: aliases: add_new: Alias erstellen created_msg: Ein neuer Alias wurde erfolgreich erstellt. Du kannst nun den Wechsel vom alten Konto starten. - deleted_msg: Der Alias wurde erfolgreich entfernt. Aus diesem Konto zu diesem zu verschieben ist nicht mehr möglich. + deleted_msg: Der Alias wurde erfolgreich entfernt. Aus jenem Konto zu diesem zu verschieben, ist nicht mehr möglich. empty: Du hast keine Aliase. - hint_html: Wenn du von einem Konto zu einem anderem Konto wechseln möchtest, dann kannst du einen Alias erstellen, welcher benötigt wird bevor du deine Folgenden vom altem Account zu diesen migrierst. Die Aktion alleine ist harmlos und wi­der­ruf­lich. Die Kontenmigration wird vom altem Konto aus eingeleitet. + hint_html: Wenn du von einem Konto zu einem anderem Konto wechseln möchtest, dann kannst du einen Alias erstellen, welcher benötigt wird, bevor du deine Folgenden vom altem Account zu diesen migrierst. Die Aktion alleine ist harmlos und wi­der­ruf­lich. Die Kontenmigration wird vom altem Konto aus eingeleitet. remove: Alle Aliase aufheben appearance: advanced_web_interface: Fortgeschrittene Benutzeroberfläche - advanced_web_interface_hint: Wenn du mehr aus deiner Bildschirmbreite herausholen möchtest, erlaubt dir die fortgeschrittene Benutzeroberfläche viele unterschiedliche Spalten auf einmal zu sehen, wie z.B. deine Startseite, Benachrichtigungen, das gesamte bekannte Netz, deine Listen und beliebige Hashtags. + advanced_web_interface_hint: Wenn du mehr aus deiner Bildschirmbreite herausholen möchtest, erlaubt es dir die fortgeschrittene Benutzeroberfläche, viele unterschiedliche Spalten auf einmal zu sehen, wie z.B. deine Startseite, Benachrichtigungen, das gesamte bekannte Netz, deine Listen und beliebige Hashtags. animations_and_accessibility: Animationen und Barrierefreiheit confirmation_dialogs: Bestätigungsfenster discovery: Entdecken @@ -1038,7 +1051,7 @@ de: pending: Deine Bewerbung wird von unseren Mitarbeitern noch überprüft. Dies kann einige Zeit dauern. Du erhältst eine E-Mail, wenn deine Bewerbung genehmigt wurde. redirecting_to: Dein Konto ist inaktiv, da es derzeit zu %{acct} umgeleitet wird. view_strikes: Zeige frühere Streiks gegen dein Konto - too_fast: Formular zu schnell gesendet, versuchen Sie es erneut. + too_fast: Formular zu schnell gesendet, versuche es erneut. trouble_logging_in: Schwierigkeiten beim Anmelden? use_security_key: Sicherheitsschlüssel verwenden authorize_follow: @@ -1057,7 +1070,7 @@ de: confirm: Fortfahren hint_html: "Hinweis: Wir werden dich für die nächste Stunde nicht erneut nach deinem Passwort fragen." invalid_password: Ungültiges Passwort - prompt: Gib dein Passwort ein um fortzufahren + prompt: Gib dein Passwort ein, um fortzufahren crypto: errors: invalid_key: ist kein gültiger Ed25519- oder Curve25519-Schlüssel @@ -1087,7 +1100,7 @@ de: proceed: Konto löschen success_msg: Dein Konto wurde erfolgreich gelöscht warning: - before: 'Bevor du fortfährst, lese bitte diese Punkte sorgfältig durch:' + before: 'Bevor du fortfährst, lies bitte diese Punkte sorgfältig durch:' caches: Inhalte, die von anderen Servern zwischengespeichert wurden, können weiterhin bestehen data_removal: Deine Beiträge und andere Daten werden dauerhaft entfernt email_change_html: Du kannst deine E-Mail-Adresse ändern, ohne dein Konto zu löschen @@ -1136,15 +1149,15 @@ de: errors: '400': Die Anfrage, die du gesendet hast, war ungültig oder fehlerhaft. '403': Dir fehlt die Befugnis, diese Seite sehen zu können. - '404': Die Seite nach der du gesucht hast wurde nicht gefunden. + '404': Die Seite, nach der du gesucht hast, wurde nicht gefunden. '406': Diese Seite ist im gewünschten Format nicht verfügbar. - '410': Die Seite nach der du gesucht hast existiert hier nicht mehr. + '410': Die Seite, nach der du gesucht hast, existiert hier nicht mehr. '422': content: Sicherheitsüberprüfung fehlgeschlagen. Blockierst du Cookies? title: Sicherheitsüberprüfung fehlgeschlagen '429': Du wurdest gedrosselt '500': - content: Bitte verzeih, etwas ist bei uns schief gegangen. + content: Bitte verzeih', etwas ist bei uns schiefgegangen. title: Diese Seite ist kaputt '503': Die Seite konnte wegen eines temporären Serverfehlers nicht angezeigt werden. noscript_html: Bitte aktiviere JavaScript, um die Mastodon-Web-Anwendung zu verwenden. Alternativ kannst du auch eine der nativen Mastodon-Anwendungen für deine Plattform probieren. @@ -1155,7 +1168,7 @@ de: archive_takeout: date: Datum download: Dein Archiv herunterladen - hint_html: Du kannst ein Archiv deiner Beiträge und hochgeladenen Medien anfragen. Die exportierten Daten werden in dem ActivityPub-Format gespeichert, welches mit jeder Software lesbar ist die das Format unterstützt. Du kannst alle 7 Tage ein Archiv anfordern. + hint_html: Du kannst ein Archiv deiner Beiträge und hochgeladenen Medien anfragen. Die exportierten Daten werden in dem ActivityPub-Format gespeichert, welches mit jeder Software lesbar ist, die das Format unterstützt. Du kannst alle 7 Tage ein Archiv anfordern. in_progress: Stelle dein Archiv zusammen... request: Dein Archiv anfragen size: Größe @@ -1181,9 +1194,11 @@ de: edit: add_keyword: Stichwort hinzufügen keywords: Stichwörter + statuses: Individuelle Beiträge + statuses_hint_html: Dieser Filter gilt für die Auswahl einzelner Beiträge, unabhängig davon, ob sie mit den unten stehenden Schlüsselwörtern übereinstimmen. Beiträge im Filter ansehen oder entfernen.. title: Filter bearbeiten errors: - deprecated_api_multiple_keywords: Diese Parameter können von dieser Anwendung nicht geändert werden, da sie auf mehr als ein Filterschlüsselwort angewendet werden. Verwenden Sie eine neuere Anwendung oder die Web-Schnittstelle. + deprecated_api_multiple_keywords: Diese Parameter können von dieser Anwendung nicht geändert werden, da sie auf mehr als ein Filterschlüsselwort angewendet werden. Verwende eine neuere Anwendung oder die Web-Schnittstelle. invalid_context: Ungültiger oder fehlender Kontext übergeben index: contexts: Filter in %{contexts} @@ -1194,10 +1209,23 @@ de: keywords: one: "%{count} Stichwort" other: "%{count} Stichwörter" + statuses: + one: "%{count} Beitrag" + other: "%{count} Beiträge" + statuses_long: + one: "%{count} individueller Beitrag ausgeblendet" + other: "%{count} individuelle Beiträge ausgeblendet" title: Filter new: save: Neuen Filter speichern title: Neuen Filter hinzufügen + statuses: + back_to_filter: Zurück zum Filter + batch: + remove: Vom Filter entfernen + index: + hint: Dieser Filter wird verwendet, um einzelne Beiträge unabhängig von anderen Kriterien auszuwählen. Du kannst mehr Beiträge zu diesem Filter über die Webschnittstelle hinzufügen. + title: Gefilterte Beiträge footer: developers: Entwickler more: Mehr… @@ -1205,12 +1233,22 @@ de: trending_now: In den Trends generic: all: Alle + all_items_on_page_selected_html: + one: "%{count} Element auf dieser Seite ausgewählt." + other: Alle %{count} Elemente auf dieser Seite ausgewählt. + all_matching_items_selected_html: + one: "%{count} Element trifft auf ihre Suche zu." + other: Alle %{count} Elemente, die Ihrer Suche entsprechen, werden ausgewählt. changes_saved_msg: Änderungen gespeichert! copy: Kopieren delete: Löschen + deselect: Auswahl für alle aufheben none: Keine order_by: Sortieren nach save_changes: Änderungen speichern + select_all_matching_items: + one: Wähle %{count} Element, das deiner Suche entspricht. + other: Wählen Sie alle %{count} Elemente, die Ihrer Suche entsprechen. today: heute validation_errors: one: Etwas ist noch nicht ganz richtig! Bitte korrigiere den Fehler @@ -1252,7 +1290,7 @@ de: one: 1 mal verwendet other: "%{count} mal verwendet" max_uses_prompt: Kein Limit - prompt: Generiere und teile Links um Zugang zu diesem Server zu geben + prompt: Generiere und teile Links, um Zugang zu diesem Server zu erteilen table: expires_at: Läuft ab uses: Verwendungen @@ -1274,7 +1312,7 @@ de: media_attachments: validations: images_and_video: Es kann kein Video an einen Beitrag, der bereits Bilder enthält, angehängt werden - not_ready: Dateien die noch nicht bearbeitet wurden, können nicht angehängt werden. Versuche es gleich noch einmal! + not_ready: Dateien, die noch nicht bearbeitet wurden, können nicht angehängt werden. Versuche es gleich noch einmal! too_many: Es können nicht mehr als 4 Dateien angehängt werden migrations: acct: benutzername@domain des neuen Kontos @@ -1300,7 +1338,7 @@ de: set_redirect: Umleitung einrichten warning: backreference_required: Das neue Konto muss zuerst so konfiguriert werden, dass es auf das alte Konto referenziert - before: 'Bevor du fortfährst, lese bitte diese Hinweise sorgfältig durch:' + before: 'Bevor du fortfährst, lies bitte diese Hinweise sorgfältig durch:' cooldown: Nach dem Migrieren wird es eine Abklingzeit geben, in der du das Konto nicht noch einmal migrieren kannst disabled_account: Dein aktuelles Konto wird nachher nicht vollständig nutzbar sein. Du hast jedoch Zugriff auf den Datenexport sowie die Reaktivierung. followers: Diese Aktion wird alle Folgende vom aktuellen Konto auf das neue Konto verschieben @@ -1312,24 +1350,13 @@ de: move_handler: carry_blocks_over_text: Dieses Benutzerkonto ist von %{acct} umgezogen, welches du blockiert hast. carry_mutes_over_text: Dieses Benutzerkonto ist von %{acct} umgezogen, welches du stummgeschaltet hast. - copy_account_note_text: 'Dieser Benutzer ist von %{acct} umgezogen, hier waren deine letzten Notizen zu diesem Benutzer:' + copy_account_note_text: 'Dieser Benutzer ist von %{acct} umgezogen, hier sind deine letzten Notizen zu diesem Benutzer:' notification_mailer: admin: report: subject: "%{name} hat eine Meldung eingereicht" sign_up: subject: "%{name} registrierte sich" - digest: - action: Zeige alle Benachrichtigungen - body: Hier ist eine kurze Zusammenfassung der Nachrichten, die du seit deinem letzten Besuch am %{since} verpasst hast - mention: "%{name} hat dich erwähnt:" - new_followers_summary: - one: Außerdem ist dir seit du weg warst ein weiteres Konto gefolgt! Juhu! - other: Außerdem sind dir seit du weg warst %{count} weitere Konten gefolgt! Großartig! - subject: - one: "1 neue Mitteilung seit deinem letzten Besuch 🐘" - other: "%{count} neue Mitteilungen seit deinem letzten Besuch 🐘" - title: In deiner Abwesenheit... favourite: body: 'Dein Beitrag wurde von %{name} favorisiert:' subject: "%{name} hat deinen Beitrag favorisiert" @@ -1374,7 +1401,7 @@ de: trillion: T otp_authentication: code_hint: Gib den von deiner Authentifizierungs-App generierten Code ein, um deine Anmeldung zu bestätigen - description_html: Wenn du Zwei-Faktor-Authentifizierung mit einer Authentifizierungs-App aktivierst, musst du, um dich anzumelden, im Besitz deines Handys sein, dass Tokens für dein Konto generiert. + description_html: Wenn du Zwei-Faktor-Authentifizierung mit einer Authentifizierungs-App aktivierst, musst du, um dich anzumelden, im Besitz deines Smartphones sein, welches Tokens für dein Konto generiert. enable: Aktivieren instructions_html: "Scanne diesen QR-Code in Google Authenticator oder einer ähnlichen TOTP-App auf deinem Handy. Von nun an generiert diese App Tokens, die du beim Anmelden eingeben musst." manual_instructions: 'Wenn du den QR-Code nicht scannen kannst und ihn manuell eingeben musst, ist hier das Klartext-Geheimnis:' @@ -1393,7 +1420,7 @@ de: duration_too_long: ist zu weit in der Zukunft duration_too_short: ist zu früh expired: Die Umfrage ist bereits vorbei - invalid_choice: Die gewählte Stimmenoption existiert nicht + invalid_choice: Die gewählte Abstimmoption existiert nicht over_character_limit: kann nicht länger als jeweils %{max} Zeichen sein too_few_options: muss mindestens einen Eintrag haben too_many_options: kann nicht mehr als %{max} Einträge beinhalten @@ -1420,7 +1447,7 @@ de: relationship: Beziehung remove_selected_domains: Entferne alle Follower von den ausgewählten Domains remove_selected_followers: Entferne ausgewählte Follower - remove_selected_follows: Entfolge ausgewählte Benutzer + remove_selected_follows: Entfolge ausgewählten Benutzern status: Kontostatus remote_follow: acct: Profilname@Domain, von wo aus du dieser Person folgen möchtest @@ -1428,7 +1455,7 @@ de: no_account_html: Noch kein Konto? Du kannst dich hier anmelden proceed: Weiter prompt: 'Du wirst dieser Person folgen:' - reason_html: "Warum ist dieser Schritt erforderlich?%{instance} ist möglicherweise nicht der Server auf dem du registriert bist, also müssen wir dich erst auf deinen Heimserver weiterleiten." + reason_html: "Warum ist dieser Schritt erforderlich?%{instance} ist möglicherweise nicht der Server, auf dem du registriert bist, also müssen wir dich erst auf deinen Heimserver weiterleiten." remote_interaction: favourite: proceed: Fortfahren zum Favorisieren @@ -1448,8 +1475,8 @@ de: account: Öffentliche Beiträge von @%{acct} tag: 'Öffentliche Beiträge mit dem Tag #%{hashtag}' scheduled_statuses: - over_daily_limit: Du hast das Limit für geplante Beiträge, dass %{limit} beträgt, für heute erreicht - over_total_limit: Du hast das Limit für geplante Beiträge, dass %{limit} beträgt, erreicht + over_daily_limit: Du hast das Limit für geplante Beiträge, welches %{limit} beträgt, für heute erreicht + over_total_limit: Du hast das Limit für geplante Beiträge, welches %{limit} beträgt, erreicht too_soon: Das geplante Datum muss in der Zukunft liegen sessions: activity: Letzte Aktivität @@ -1570,7 +1597,7 @@ de: enabled: Automatisch alte Beiträge löschen enabled_hint: Löscht automatisch deine Beiträge, sobald sie einen bestimmten Altersgrenzwert erreicht haben, es sei denn, sie entsprechen einer der folgenden Ausnahmen exceptions: Ausnahmen - explanation: Damit Mastodon nicht durch das Löschen von Beiträgen ausgebremst wird, wartet der Server damit bis wenig los ist. Aus diesem Grund werden deine Beiträge ggf. erst einige Zeit nach Erreichen der Altersgrenze gelöscht. + explanation: Damit Mastodon nicht durch das Löschen von Beiträgen ausgebremst wird, wartet der Server damit, bis wenig los ist. Aus diesem Grund werden deine Beiträge ggf. erst einige Zeit nach Erreichen der Altersgrenze gelöscht. ignore_favs: Favoriten ignorieren ignore_reblogs: Boosts ignorieren interaction_exceptions: Ausnahmen basierend auf Interaktionen @@ -1578,15 +1605,15 @@ de: keep_direct: Direktnachrichten behalten keep_direct_hint: Löscht keine deiner Direktnachrichten keep_media: Beiträge mit Medienanhängen behalten - keep_media_hint: Löscht keine Ihrer Beiträge mit Medienanhängen + keep_media_hint: Löscht keinen deiner Beiträge mit Medienanhängen keep_pinned: Angeheftete Beiträge behalten - keep_pinned_hint: Löscht keine deiner angehefteten Beiträge + keep_pinned_hint: Löscht keinen deiner angehefteten Beiträge keep_polls: Umfragen behalten keep_polls_hint: Löscht keine deiner Umfragen keep_self_bookmark: Als Lesezeichen markierte Beiträge behalten - keep_self_bookmark_hint: Löscht nicht deine eigenen Beiträge, wenn du sie als Lesezeichen markiert hast + keep_self_bookmark_hint: Löscht deine eigenen Beiträge nicht, wenn du sie als Lesezeichen markiert hast keep_self_fav: Behalte die von dir favorisierten Beiträge - keep_self_fav_hint: Löscht nicht deine eigenen Beiträge, wenn du sie favorisiert hast + keep_self_fav_hint: Löscht deine eigenen Beiträge nicht, wenn du sie favorisiert hast min_age: '1209600': 2 Wochen '15778476': 6 Monate @@ -1615,10 +1642,10 @@ de:

    Datenschutzerklärung

    Welche Informationen sammeln wir?

      -
    • Grundlegende Kontoinformationen: Wenn du dich auf diesem Server registrierst, wirst du darum gebeten, einen Benutzernamen, eine E-Mail-Adresse und ein Passwort einzugeben. Du kannst auch zusätzliche Profilinformationen wie etwa einen Anzeigenamen oder eine Biografie eingeben und ein Profilbild oder ein Headerbild hochladen. Der Benutzername, der Anzeigename, die Biografie, das Profilbild und das Headerbild werden immer öffentlich angezeigt.
    • -
    • Beiträge, Folge- und andere öffentliche Informationen: Die Liste der Leute, denen du folgst, wird öffentlich gezeigt, das gleiche gilt für deine Folgenden (Follower). Sobald du eine Nachricht übermittelst, wird das Datum und die Uhrzeit gemeinsam mit der Information, welche Anwendung du dafür verwendet hast, gespeichert. Nachricht können Medienanhänge enthalten, etwa Bilder und Videos. Öffentliche und ungelistete Beiträge sind öffentlich verfügbar. Sobald du einen Beitrag auf deinem Profil anpinnst, sind dies auch öffentlich verfügbare Informationen. Deine Beiträge werden an deine Folgenden ausgeliefert, was in manchen Fällen bedeutet, dass sie an andere Server ausgeliefert werden und dort Kopien gespeichert werden. Sobald du Beiträge löschst, wird dies ebenso an deine Follower ausgeliefert. Die Handlungen des Teilens und Favorisieren eines anderen Beitrages ist immer öffentlich.
    • -
    • Direkte und "Nur Folgende"-Beiträge: Alle Beiträge werden auf dem Server gespeichert und verarbeitet. "Nur Folgende"-Beiträge werden an deine Folgenden und an Benutzer, die du in ihnen erwähnst, ausgeliefert, direkte Beiträge nur an in ihnen erwähnte Benutzer. In manchen Fällen bedeutet dass, dass sie an andere Server ausgeliefert werden und dort Kopien gespeichert werden. Wir bemühen uns nach bestem Wissen und Gewissen, den Zugriff auf diese Beiträge auf nur autorisierte Personen einzuschränken, jedoch könnten andere Server dabei scheitern. Deswegen ist es wichtig, die Server, zu denen deine Folgenden gehören, zu überprüfen. Du kannst eine Option in den Einstellungen umschalten, um neue Folgenden manuell anzunehmen oder abzuweisen. Bitte beachte, dass die Betreiber des Server und jedes empfangenden Servers solche Nachrichten anschauen könnten und dass Empfänger von diesen eine Bildschirmkopie erstellen könnten, sie kopieren oder anderweitig weiterverteilen könnten. Teile nicht irgendwelche sensiblen Informationen über Mastodon.
    • -
    • Internet Protocol-Adressen (IP-Adressen) und andere Metadaten: Sobald du dich anmeldest, erfassen wir sowohl die IP-Adresse, von der aus du dich anmeldest, als auch den Namen deine Browseranwendung. Alle angemeldeten Sitzungen (Sessions) sind für deine Überprüfung und Widerruf in den Einstellungen verfügbar. Die letzte verwendete IP-Adresse wird bis zu 12 Monate lang gespeichert. Wir könnten auch Serverprotokoll behalten, welche die IP-Adresse von jeder Anfrage an unseren Server enthalten.
    • +
    • Grundlegende Kontoinformationen: Wenn du dich auf diesem Server registrierst, wirst du darum gebeten, einen Benutzernamen, eine E-Mail-Adresse und ein Passwort einzugeben. Du kannst auch zusätzliche Profilinformationen, wie etwa einen Anzeigenamen oder eine Biografie, eingeben und ein Profilbild oder ein Headerbild hochladen. Der Benutzername, der Anzeigename, die Biografie, das Profilbild und das Headerbild werden immer öffentlich angezeigt.
    • +
    • Beiträge, Folge- und andere öffentliche Informationen: Die Liste der Leute, denen du folgst, wird öffentlich gezeigt; das gleiche gilt für deine Folgenden (Follower). Sobald du eine Nachricht übermittelst, wird das Datum und die Uhrzeit gemeinsam mit der Information, welche Anwendung du dafür verwendet hast, gespeichert. Nachricht können Medienanhänge enthalten, etwa Bilder und Videos. Öffentliche und ungelistete Beiträge sind öffentlich verfügbar. Sobald du einen Beitrag auf deinem Profil anpinnst, ist dies auch eine öffentlich verfügbare Information. Deine Beiträge werden an deine Folgenden ausgeliefert, was in manchen Fällen bedeutet, dass sie an andere Server ausgeliefert werden und dort Kopien gespeichert werden. Sobald du Beiträge löschst, wird dies ebenso an deine Follower ausgeliefert. Die Handlungen des Teilens und Favorisieren eines anderen Beitrages ist immer öffentlich.
    • +
    • Direkte und „Nur Folgende“-Beiträge: Alle Beiträge werden auf dem Server gespeichert und verarbeitet. „Nur Folgende“-Beiträge werden an deine Folgenden und an Benutzer, die du in ihnen erwähnst, ausgeliefert, direkte Beiträge nur an in ihnen erwähnte Benutzer. In manchen Fällen bedeutet das, dass sie an andere Server ausgeliefert und dort Kopien gespeichert werden. Wir bemühen uns nach bestem Wissen und Gewissen, den Zugriff auf diese Beiträge auf nur autorisierte Personen einzuschränken, jedoch könnten andere Server dabei scheitern. Deswegen ist es wichtig, die Server, zu denen deine Folgenden gehören, zu überprüfen. Du kannst eine Option in den Einstellungen umschalten, um neue Folgenden manuell anzunehmen oder abzuweisen. Bitte beachte, dass die Betreiber des Server und jedes empfangenden Servers solche Nachrichten anschauen könnten und dass Empfänger von diesen eine Bildschirmkopie erstellen, sie kopieren oder anderweitig weiterverteilen könnten. Teile keine sensiblen Informationen über Mastodon.
    • +
    • Internet-Protokoll-Adressen (IP-Adressen) und andere Metadaten: Sobald du dich anmeldest, erfassen wir sowohl die IP-Adresse, von der aus du dich anmeldest, als auch den Namen deine Browseranwendung. Alle angemeldeten Sitzungen (Sessions) sind für deine Überprüfung und Widerruf in den Einstellungen verfügbar. Die letzte verwendete IP-Adresse wird bis zu 12 Monate lang gespeichert. Wir könnten auch Serverprotokoll behalten, welche die IP-Adresse von jeder Anfrage an unseren Server enthalten.

    Für was verwenden wir deine Informationen?

    @@ -1678,7 +1705,7 @@ de: enabled: Zwei-Faktor-Authentisierung ist aktiviert enabled_success: Zwei-Faktor-Authentisierung erfolgreich aktiviert generate_recovery_codes: Wiederherstellungscodes generieren - lost_recovery_codes: Wiederherstellungscodes erlauben dir, wieder den Zugang zu deinem Konto zu erlangen, falls du dein Telefon verlieren solltest. Wenn du deine Wiederherstellungscodes verloren hast, kannst du sie hier neu generieren. Deine alten Wiederherstellungscodes werden damit ungültig gemacht. + lost_recovery_codes: Wiederherstellungscodes erlauben es dir, wieder Zugang zu deinem Konto zu erlangen, falls du dein Telefon verlieren solltest. Wenn du deine Wiederherstellungscodes verloren hast, kannst du sie hier neu generieren. Deine alten Wiederherstellungscodes werden damit ungültig gemacht. methods: Zwei-Faktor-Methoden otp: Authentifizierungs-App recovery_codes: Wiederherstellungs-Codes sichern @@ -1717,8 +1744,8 @@ de: disable: Du kannst dein Konto nicht mehr verwenden, aber dein Profil und andere Daten bleiben unversehrt. Du kannst ein Backup deiner Daten anfordern, die Kontoeinstellungen ändern oder dein Konto löschen. mark_statuses_as_sensitive: Einige deiner Beiträge wurden von den Moderator_innen von %{instance} als NSFW markiert. Das bedeutet, dass die Nutzer die Medien in den Beiträgen antippen müssen, bevor eine Vorschau angezeigt wird. Du kannst Medien in Zukunft als NSFW markieren, wenn du Beiträge verfasst. sensitive: Von nun an werden alle deine hochgeladenen Mediendateien als sensibel markiert und hinter einer Warnung versteckt. - silence: Solange dein Konto limitiert ist, können nur die Leute, die dir bereits folgen, deine Beiträge auf dem Server sehen und es könnte sein, dass du von verschiedenen öffentlichen Listungen ausgeschlossen wirst. Andererseits können andere dir manuell folgen. - suspend: Du kannst dein Konto nicht mehr verwenden und dein Profil und andere Daten sind nicht mehr verfügbar. Du kannst dich immer noch anmelden, um ein Backup deiner Daten anzufordern, bis die Daten innerhalb von 30 Tagen vollständig gelöscht wurden. Allerdings werden wir einige Daten speichern, um zu verhindern, dass du die Sperrung umgehst. + silence: Solange dein Konto limitiert ist, können nur die Leute, die dir bereits folgen, deine Beiträge auf dem Server sehen, und es könnte sein, dass du von verschiedenen öffentlichen Listungen ausgeschlossen wirst. Andererseits können andere dir manuell folgen. + suspend: Du kannst dein Konto nicht mehr verwenden, und dein Profil und andere Daten sind nicht mehr verfügbar. Du kannst dich immer noch anmelden, um ein Backup deiner Daten anzufordern, bis die Daten innerhalb von 30 Tagen vollständig gelöscht wurden. Allerdings werden wir einige Daten speichern, um zu verhindern, dass du die Sperrung umgehst. reason: 'Grund:' statuses: 'Zitierte Beiträge:' subject: @@ -1742,16 +1769,16 @@ de: edit_profile_step: Du kannst dein Profil anpassen, indem du einen Avatar oder ein Titelbild hochlädst oder deinen Anzeigenamen änderst und mehr. Wenn du deine Folgenden vorher überprüfen möchtest, bevor sie dir folgen können, dann kannst du dein Profil sperren. explanation: Hier sind ein paar Tipps, um loszulegen final_action: Fang an zu posten - final_step: 'Fang an zu posten! Selbst ohne Follower werden deine öffentlichen Beiträge von anderen gesehen, zum Beispiel auf der lokalen Zeitleiste oder in Hashtags. Vielleicht möchtest du dich vorstellen mit dem #introductions-Hashtag.' + final_step: 'Fang an zu posten! Selbst ohne Follower werden deine öffentlichen Beiträge von anderen gesehen, zum Beispiel auf der lokalen Zeitleiste oder in Hashtags. Vielleicht möchtest du dich mit dem #introductions-Hashtag vorstellen.' full_handle: Dein vollständiger Benutzername - full_handle_hint: Dies ist was du deinen Freunden sagen kannst, damit sie dich anschreiben oder von einem anderen Server folgen können. + full_handle_hint: Dies ist, was du deinen Freunden sagen kannst, damit sie dich anschreiben oder dir von einem anderen Server folgen können. review_preferences_action: Einstellungen ändern review_preferences_step: Stelle sicher, dass du deine Einstellungen einstellst, wie zum Beispiel welche E-Mails du gerne erhalten möchtest oder was für Privatsphäreneinstellungen voreingestellt werden sollten. Wenn dir beim Ansehen von GIFs nicht schwindelig wird, dann kannst du auch das automatische Abspielen dieser aktivieren. subject: Willkommen bei Mastodon tip_federated_timeline: Die föderierte Zeitleiste ist die sehr große Ansicht vom Mastodon-Netzwerk. Sie enthält aber auch nur Leute, denen du und deine Nachbarn folgen, sie ist also nicht komplett. tip_following: Du folgst standardmäßig deinen Server-Admin(s). Um mehr interessante Leute zu finden, kannst du die lokale oder öffentliche Zeitleiste durchsuchen. tip_local_timeline: Die lokale Zeitleiste ist eine Ansicht aller Leute auf %{instance}. Diese sind deine Nachbarn! - tip_mobile_webapp: Wenn dein mobiler Browser dir anbietet Mastodon zu deinem Startbildschirm hinzuzufügen, dann kannst du Benachrichtigungen erhalten. Es verhält sich wie eine native App in vielen Wegen! + tip_mobile_webapp: Wenn dein mobiler Browser dir anbietet, Mastodon zu deinem Startbildschirm hinzuzufügen, dann kannst du Benachrichtigungen erhalten. Es verhält sich wie eine native App in vielen Belangen! tips: Tipps title: Willkommen an Bord, %{name}! users: diff --git a/config/locales/devise.de.yml b/config/locales/devise.de.yml index 0512ca129..4cc829f3b 100644 --- a/config/locales/devise.de.yml +++ b/config/locales/devise.de.yml @@ -21,18 +21,18 @@ de: action: E-Mail-Adresse verifizieren action_with_app: Bestätigen und zu %{app} zurückkehren explanation: Du hast einen Account auf %{host} mit dieser E-Mail-Adresse erstellt. Du bist nur noch einen Klick weit von der Aktivierung entfernt. Wenn du das nicht warst, kannst du diese E-Mail ignorieren. - explanation_when_pending: Du hast dich für eine Einladung bei %{host} mit dieser E-Mailadresse beworben. Sobald du deine E-Mailadresse bestätigst werden wir deine Anfrage überprüfen. Du kannst dich in dieser Zeit nicht anmelden. Wenn deine Anfrage abgelehnt wird, werden deine Daten entfernt, also wird keine weitere Handlung benötigt. Wenn du das nicht warst kannst du diese E-Mail ignorieren. + explanation_when_pending: Du hast dich für eine Einladung bei %{host} mit dieser E-Mailadresse beworben. Sobald du deine E-Mailadresse bestätigst hast, werden wir deine Anfrage überprüfen. Du kannst dich in dieser Zeit nicht anmelden. Wenn deine Anfrage abgelehnt wird, werden deine Daten entfernt, also wird keine weitere Handlung benötigt. Wenn du das nicht warst, kannst du diese E-Mail ignorieren. extra_html: Bitte lies auch die Regeln des Servers und unsere Nutzungsbedingungen. subject: 'Mastodon: Bestätigung deines Kontos bei %{instance}' title: Verifiziere E-Mail-Adresse email_changed: explanation: 'Die E-Mail-Adresse deines Accounts wird geändert zu:' - extra: Wenn du deine E-Mail-Adresse nicht geändert hast, dann kann es vermutlich sein, dass jemand Zugriff zu deinem Account erhalten hat. Bitte ändere sofort dein Passwort oder kontaktiere den Administrator des Servers, wenn du dich ausgesperrt hast. + extra: Wenn du deine E-Mail-Adresse nicht geändert hast, dann wird es vermutlich so sein, dass jemand Zugriff zu deinem Account erhalten hat. Bitte ändere sofort dein Passwort oder kontaktiere den Administrator des Servers, wenn du dich ausgesperrt hast. subject: 'Mastodon: E-Mail-Adresse geändert' title: Neue E-Mail-Adresse password_change: explanation: Das Passwort für deinen Account wurde geändert. - extra: Wenn du dein Passwort nicht geändert hast, dann kann es vermutlich sein, dass jemand Zugriff zu deinem Account erhalten hat. Bitte ändere sofort dein Passwort oder kontaktiere den Administrator des Servers, wenn du dich ausgesperrt hast. + extra: Wenn du dein Passwort nicht geändert hast, dann wird es vermutlich so sein, dass jemand Zugriff auf deinem Account erlangt hat. Bitte ändere sofort dein Passwort oder kontaktiere den Administrator des Servers, wenn du dich ausgesperrt hast. subject: 'Mastodon: Passwort geändert' title: Passwort geändert reconfirmation_instructions: @@ -43,7 +43,7 @@ de: reset_password_instructions: action: Ändere Passwort explanation: Du hast ein neues Passwort für deinen Account angefragt. - extra: Wenn du diese Anfrage nicht gestellt hast, solltest du diese E-Mail ignorieren. Dein Passwort wird sich nicht ändern solange du den obigen Link anklickst und ein neues erstellst. + extra: Wenn du diese Anfrage nicht gestellt hast, solltest du diese E-Mail ignorieren. Dein Passwort wird sich nicht ändern, solange du den obigen Link anklickst und ein neues erstellst. subject: 'Mastodon: Passwort zurücksetzen' title: Passwort zurücksetzen two_factor_disabled: @@ -51,7 +51,7 @@ de: subject: 'Mastodon: Zwei‐Faktor‐Authentifizierung deaktiviert' title: 2FA deaktiviert two_factor_enabled: - explanation: Zwei-Faktor-Authentifizierung wurde für dein Konto aktiviert. Ein Token, der von der gepaarten TOTP-App generiert wird, wird für den Login benötigt. + explanation: Zwei-Faktor-Authentifizierung wurde für dein Konto aktiviert. Ein Token, das von der verbundenen TOTP-App generiert wird, wird für den Login benötigt. subject: 'Mastodon: Zwei‐Faktor‐Authentifizierung aktiviert' title: 2FA aktiviert two_factor_recovery_codes_changed: @@ -78,7 +78,7 @@ de: subject: 'Mastodon: Authentifizierung mit Sicherheitsschlüssel aktiviert' title: Sicherheitsschlüssel aktiviert omniauth_callbacks: - failure: Du konntest nicht mit deinem %{kind}-Konto angemeldet werden, weil »%{reason}«. + failure: Du konntest nicht mit deinem %{kind}-Konto angemeldet werden, weil „%{reason}“. success: Du hast dich erfolgreich mit deinem %{kind}-Konto angemeldet. passwords: no_token: Du kannst diese Seite nur über den Link aus der E-Mail zum Passwort-Zurücksetzen aufrufen. Wenn du einen solchen Link aufgerufen hast, stelle bitte sicher, dass du die vollständige Adresse aufrufst. @@ -91,8 +91,8 @@ de: signed_up: Willkommen! Du hast dich erfolgreich registriert. signed_up_but_inactive: Du hast dich erfolgreich registriert. Wir konnten dich noch nicht anmelden, da dein Konto inaktiv ist. signed_up_but_locked: Du hast dich erfolgreich registriert. Wir konnten dich noch nicht anmelden, da dein Konto gesperrt ist. - signed_up_but_pending: Eine Nachricht mit einem Bestätigungslink wurde an dich per E-Mail geschickt. Nachdem du diesen Link angeklickt hast werden wir deine Anfrage überprüfen. Du wirst benachrichtigt falls die Anfrage angenommen wurde. - signed_up_but_unconfirmed: Du hast dich erfolgreich registriert. Wir konnten dich noch nicht anmelden, da dein Konto noch nicht bestätigt ist. Du erhältst in Kürze eine E-Mail. Darin ist erklärt, wie du dein Konto freischalten kannst. + signed_up_but_pending: Eine Nachricht mit einem Bestätigungslink wurde an dich per E-Mail geschickt. Nachdem du diesen Link angeklickt hast, werden wir deine Anfrage überprüfen. Du wirst benachrichtigt werden, falls die Anfrage angenommen wurde. + signed_up_but_unconfirmed: Du hast dich erfolgreich registriert. Wir konnten dich noch nicht anmelden, da dein Konto noch nicht bestätigt ist. Du erhältst in Kürze eine E-Mail. Darin wird erklärt, wie du dein Konto freischalten kannst. update_needs_confirmation: Deine Daten wurden aktualisiert, aber du musst deine neue E-Mail-Adresse bestätigen. Du erhältst in wenigen Minuten eine E-Mail. Darin ist erklärt, wie du die Änderung deiner E-Mail-Adresse abschließen kannst. updated: Deine Daten wurden aktualisiert. sessions: @@ -112,4 +112,4 @@ de: not_locked: ist nicht gesperrt not_saved: one: '1 Fehler hat verhindert, dass %{resource} gespeichert wurde:' - other: "%{count} Fehler verhinderten, dass %{resource} gespeichert wurde:" + other: "%{count} Fehler haben verhindert, dass %{resource} gespeichert wurde:" diff --git a/config/locales/devise.hu.yml b/config/locales/devise.hu.yml index 24aa076ee..82520cef7 100644 --- a/config/locales/devise.hu.yml +++ b/config/locales/devise.hu.yml @@ -12,7 +12,7 @@ hu: last_attempt: Már csak egy próbálkozásod maradt, mielőtt a fiókodat zároljuk. locked: A fiókodat zároltuk. not_found_in_database: Helytelen %{authentication_keys} vagy jelszó. - pending: A fiókod felülvizsgálat alatt áll, még mielőtt használhatnád. + pending: A fiókod még engedélyezésre vár. timeout: A munkameneted lejárt. Kérjük, a folytatáshoz jelentkezz be újra. unauthenticated: A folytatás előtt be kell jelentkezned vagy regisztrálnod kell. unconfirmed: A folytatás előtt meg kell erősítened az e-mail címed. diff --git a/config/locales/doorkeeper.de.yml b/config/locales/doorkeeper.de.yml index 3f7e1b2d7..e4668a50f 100644 --- a/config/locales/doorkeeper.de.yml +++ b/config/locales/doorkeeper.de.yml @@ -72,7 +72,7 @@ de: revoke: Bist du sicher? index: authorized_at: Autorisiert am %{date} - description_html: Dies sind Anwendungen, die über die Programmierschnittstelle auf dein Konto zugreifen können. Wenn es Anwendungen gibt, die du hier nicht erkennst oder eine Anwendung sich falsch verhält, kannst du den Zugriff widerrufen. + description_html: Dies sind Anwendungen, die über die Programmierschnittstelle auf dein Konto zugreifen können. Wenn es Anwendungen gibt, die du hier nicht erkennst, oder wenn eine Anwendung sich falsch bzw. verdächtig verhält, kannst du den Zugriff widerrufen. last_used_at: Zuletzt verwendet am %{date} never_used: Nie verwendet scopes: Berechtigungen @@ -83,13 +83,13 @@ de: access_denied: Die Anfrage wurde durch Benutzer_in oder Autorisierungs-Server verweigert. credential_flow_not_configured: Das Konto konnte nicht gefunden werden, da Doorkeeper.configure.resource_owner_from_credentials nicht konfiguriert ist. invalid_client: 'Client-Authentifizierung ist fehlgeschlagen: Client unbekannt, keine Authentisierung mitgeliefert oder Authentisierungsmethode wird nicht unterstützt.' - invalid_grant: Die beigefügte Autorisierung ist ungültig, abgelaufen, wurde widerrufen, einem anderen Client ausgestellt oder der Weiterleitungs-URI stimmt nicht mit der Autorisierungs-Anfrage überein. + invalid_grant: Die beigefügte Autorisierung ist ungültig, abgelaufen, wurde widerrufen oder einem anderen Client ausgestellt, oder der Weiterleitungs-URI stimmt nicht mit der Autorisierungs-Anfrage überein. invalid_redirect_uri: Der beigefügte Weiterleitungs-URI ist ungültig. invalid_request: missing_param: 'Erforderlicher Parameter fehlt: %{value}.' request_not_authorized: Anfrage muss autorisiert werden. Benötigter Parameter für die Autorisierung der Anfrage fehlt oder ungültig. unknown: Der Anfrage fehlt ein benötigter Parameter, enthält einen nicht unterstützten Parameterwert oder ist anderweitig fehlerhaft. - invalid_resource_owner: Die angegebenen Zugangsdaten für das Konto sind ungültig oder das Konto kann nicht gefunden werden + invalid_resource_owner: Die angegebenen Zugangsdaten für das Konto sind ungültig, oder das Konto kann nicht gefunden werden invalid_scope: Die angeforderte Befugnis ist ungültig, unbekannt oder fehlerhaft. invalid_token: expired: Der Zugriffs-Token ist abgelaufen diff --git a/config/locales/doorkeeper.ru.yml b/config/locales/doorkeeper.ru.yml index 7f4cca82b..86883bf14 100644 --- a/config/locales/doorkeeper.ru.yml +++ b/config/locales/doorkeeper.ru.yml @@ -133,7 +133,7 @@ ru: follows: Подписки lists: Списки media: Медиафайлы - mutes: Без звука + mutes: Игнорирует notifications: Уведомления push: Push-уведомления reports: Обращения @@ -164,7 +164,7 @@ ru: read:filters: видеть ваши фильтры read:follows: видеть ваши подписки read:lists: видеть ваши списки - read:mutes: видеть список игнорируемых + read:mutes: смотреть список игнорируемых read:notifications: получать уведомления read:reports: видеть ваши жалобы read:search: использовать поиск @@ -173,12 +173,13 @@ ru: write:accounts: редактировать ваш профиль write:blocks: блокировать учётные записи и домены write:bookmarks: добавлять посты в закладки + write:conversations: игнорировать и удалить разговоры write:favourites: отмечать посты как избранные write:filters: создавать фильтры write:follows: подписываться на людей write:lists: создавать списки write:media: загружать медиафайлы - write:mutes: добавлять в игнорируемое людей и обсуждения + write:mutes: игнорировать людей и обсуждения write:notifications: очищать список уведомлений write:reports: отправлять жалобы на других write:statuses: публиковать посты diff --git a/config/locales/el.yml b/config/locales/el.yml index 8bbb02822..8c7c29ac2 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -265,7 +265,6 @@ el: destroy_instance_html: Ο/Η %{name} εκκαθάρισε τον τομέα %{target} reject_user_html: "%{name} απορρίφθηκε εγγραφή από %{target}" unblock_email_account_html: "%{name} ξεμπλόκαρε τη διεύθυνση ηλεκτρονικού ταχυδρομείου του %{target}" - deleted_status: "(διαγραμμένη δημοσίευση)" empty: Δεν βρέθηκαν αρχεία καταγραφής. filter_by_action: Φιλτράρισμα ανά ενέργεια filter_by_user: Φιλτράρισμα ανά χρήστη @@ -581,9 +580,6 @@ el: desc_html: Εμφάνισε τη δημόσια ροή στην αρχική σελίδα title: Προεπισκόπιση ροής title: Ρυθμίσεις ιστότοπου - trendable_by_default: - desc_html: Επηρεάζει όσες ετικέτες δεν είχαν απαγορευτεί νωρίτερα - title: Επέτρεψε στις ετικέτες να εμφανίζονται στις τάσεις χωρίς να χρειάζεται πρώτα έγκριση trends: desc_html: Δημόσια εμφάνιση ετικετών που έχουν ήδη εγκριθεί και είναι δημοφιλείς title: Δημοφιλείς ετικέτες @@ -946,17 +942,6 @@ el: subject: "%{name} υπέβαλε μια αναφορά" sign_up: subject: "%{name} έχει εγγραφεί" - digest: - action: Δες όλες τις ειδοποιήσεις - body: Μια σύνοψη των μηνυμάτων που έχασες από την τελευταία επίσκεψή σου στις %{since} - mention: 'Ο/Η %{name} σε ανέφερε στις:' - new_followers_summary: - one: Επίσης, απέκτησες έναν νέο ακόλουθο ενώ ήσουν μακριά! - other: Επίσης, απέκτησες %{count} νέους ακόλουθους ενώ ήσουν μακριά! Εκπληκτικό! - subject: - one: "1 νέα ειδοποίηση από την τελευταία επίσκεψή σου 🐘" - other: "%{count} νέες ειδοποιήσεις από την τελευταία επίσκεψή σου 🐘" - title: Ενώ έλειπες... favourite: body: 'Η κατάστασή σου αγαπήθηκε από τον/την %{name}:' subject: Ο/Η %{name} αγάπησε την κατάστασή σου diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 3eabb665a..cca9b0531 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -261,7 +261,6 @@ eo: create_ip_block_html: "%{name} kreis regulon por IP %{target}" demote_user_html: "%{name} degradis uzanton %{target}" destroy_announcement_html: "%{name} forigis anoncon %{target}" - destroy_custom_emoji_html: "%{name} neniigis la emoĝion %{target}" destroy_domain_allow_html: "%{name} forigis domajnon %{target} el la blanka listo" destroy_domain_block_html: "%{name} malblokis domajnon %{target}" destroy_email_domain_block_html: "%{name} malblokis retpoŝtan domajnon %{target}" @@ -280,7 +279,6 @@ eo: suspend_account_html: "%{name} suspendis la konton de %{target}" unsuspend_account_html: "%{name} reaktivigis la konton de %{target}" update_announcement_html: "%{name} ĝisdatigis anoncon %{target}" - deleted_status: "(forigita mesaĝo)" empty: Neniu protokolo trovita. filter_by_action: Filtri per ago filter_by_user: Filtri per uzanto @@ -969,17 +967,6 @@ eo: moderation: title: Moderigado notification_mailer: - digest: - action: Vidi ĉiujn sciigojn - body: Jen eta resumo de la mesaĝoj, kiujn vi mistrafis ekde via lasta vizito en %{since} - mention: "%{name} menciis vin en:" - new_followers_summary: - one: Ankaŭ, vi ekhavis novan sekvanton en via foresto! Jej! - other: Ankaŭ, vi ekhavis %{count} novajn sekvantojn en via foresto! Mirinde! - subject: - one: "1 nova sciigo ekde via lasta vizito 🐘" - other: "%{count} novaj sciigoj ekde via lasta vizito 🐘" - title: En via foresto… favourite: body: "%{name} stelumis vian mesaĝon:" subject: "%{name} stelumis vian mesaĝon" diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 72c2ad347..21c2dde6c 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -235,17 +235,21 @@ es-AR: approve_user: Aprobar usuario assigned_to_self_report: Asignar denuncia change_email_user: Cambiar correo electrónico del usuario + change_role_user: Cambiar rol del usuario confirm_user: Confirmar usuario create_account_warning: Crear advertencia create_announcement: Crear anuncio + create_canonical_email_block: Crear bloqueo de correo electrónico create_custom_emoji: Crear emoji personalizado create_domain_allow: Crear permiso de dominio create_domain_block: Crear bloqueo de dominio create_email_domain_block: Crear bloqueo de dominio de correo electrónico create_ip_block: Crear regla de dirección IP create_unavailable_domain: Crear dominio no disponible + create_user_role: Crear rol demote_user: Descender usuario destroy_announcement: Eliminar anuncio + destroy_canonical_email_block: Eliminar bloqueo de correo electrónico destroy_custom_emoji: Eliminar emoji personalizado destroy_domain_allow: Eliminar permiso de dominio destroy_domain_block: Eliminar bloqueo de dominio @@ -254,6 +258,7 @@ es-AR: destroy_ip_block: Eliminar regla de dirección IP destroy_status: Eliminar mensaje destroy_unavailable_domain: Eliminar dominio no disponible + destroy_user_role: Destruir rol disable_2fa_user: Deshabilitar 2FA disable_custom_emoji: Deshabilitar emoji personalizado disable_sign_in_token_auth_user: Deshabilitar autenticación de token por correo electrónico para el usuario @@ -280,24 +285,30 @@ es-AR: update_announcement: Actualizar anuncio update_custom_emoji: Actualizar emoji personalizado update_domain_block: Actualizar bloque de dominio + update_ip_block: Actualizar regla de dirección IP update_status: Actualizar mensaje + update_user_role: Actualizar rol actions: approve_appeal_html: "%{name} aprobó la solicitud de moderación de %{target}" approve_user_html: "%{name} aprobó el registro de %{target}" assigned_to_self_report_html: "%{name} se asignó la denuncia %{target} a sí" change_email_user_html: "%{name} cambió la dirección de correo electrónico del usuario %{target}" + change_role_user_html: "%{name} cambió el rol de %{target}" confirm_user_html: "%{name} confirmó la dirección de correo del usuario %{target}" create_account_warning_html: "%{name} envió una advertencia a %{target}" create_announcement_html: "%{name} creó el nuevo anuncio %{target}" + create_canonical_email_block_html: "%{name} bloqueó el correo electrónico con el hash %{target}" create_custom_emoji_html: "%{name} subió nuevo emoji %{target}" create_domain_allow_html: "%{name} permitió la federación con el dominio %{target}" create_domain_block_html: "%{name} bloqueó el dominio %{target}" create_email_domain_block_html: "%{name} bloqueó el dominio de correo electrónico %{target}" create_ip_block_html: "%{name} creó la regla para la dirección IP %{target}" create_unavailable_domain_html: "%{name} detuvo la entrega al dominio %{target}" + create_user_role_html: "%{name} creó el rol %{target}" demote_user_html: "%{name} bajó de nivel al usuario %{target}" destroy_announcement_html: "%{name} eliminó el anuncio %{target}" - destroy_custom_emoji_html: "%{name} destruyó el emoji %{target}" + destroy_canonical_email_block_html: "%{name} desbloqueó el correo electrónico con el hash %{target}" + destroy_custom_emoji_html: "%{name} eliminó el emoji %{target}" destroy_domain_allow_html: "%{name} no permitió la federación con el dominio %{target}" destroy_domain_block_html: "%{name} desbloqueó el dominio %{target}" destroy_email_domain_block_html: "%{name} desbloqueó el dominio de correo electrónico %{target}" @@ -305,6 +316,7 @@ es-AR: destroy_ip_block_html: "%{name} eliminó la regla para la dirección IP %{target}" destroy_status_html: "%{name} eliminó el mensaje de %{target}" destroy_unavailable_domain_html: "%{name} reanudó la entrega al dominio %{target}" + destroy_user_role_html: "%{name} eliminó el rol %{target}" disable_2fa_user_html: "%{name} deshabilitó el requerimiento de dos factores para el usuario %{target}" disable_custom_emoji_html: "%{name} deshabilitó el emoji %{target}" disable_sign_in_token_auth_user_html: "%{name} deshabilitó la autenticación de token por correo electrónico para %{target}" @@ -331,8 +343,9 @@ es-AR: update_announcement_html: "%{name} actualizó el anuncio %{target}" update_custom_emoji_html: "%{name} actualizó el emoji %{target}" update_domain_block_html: "%{name} actualizó el bloqueo de dominio para %{target}" + update_ip_block_html: "%{name} cambió la regla para la dirección IP %{target}" update_status_html: "%{name} actualizó el mensaje de %{target}" - deleted_status: "[mensaje eliminado]" + update_user_role_html: "%{name} cambió el rol %{target}" empty: No se encontraron registros. filter_by_action: Filtrar por acción filter_by_user: Filtrar por usuario @@ -795,8 +808,8 @@ es-AR: title: Permitir acceso no autorizado a la línea temporal pública title: Configuración del sitio trendable_by_default: - desc_html: Afecta a etiquetas que no fueron rechazadas previamente - title: Permitir que las etiquetas sean tendencia sin revisión previa + desc_html: El contenido de tendencias específicas todavía puede ser explícitamente desactivado + title: Permitir tendencias sin revisión previa trends: desc_html: Mostrar públicamente etiquetas previamente revisadas que son tendencia actualmente title: Tendencias @@ -1182,7 +1195,7 @@ es-AR: add_keyword: Agregar palabra clave keywords: Palabras clave statuses: Mensajes individuales - statuses_hint_html: Este filtro se aplica a los mensajes individuales seleccionados, independientemente de si coinciden con las palabras clave de abajo. Podés revisar estos mensajes y eliminarlos del filtro haciendo clic acá. + statuses_hint_html: Este filtro se aplica a la selección de mensajes individuales, independientemente de si coinciden con las palabras clave a continuación. Revisar o quitar mensajes del filtro. title: Editar filtro errors: deprecated_api_multiple_keywords: Estos parámetros no se pueden cambiar de esta aplicación porque se aplican a más de una palabra clave de filtro. Usá una aplicación más reciente o la interface web. @@ -1211,7 +1224,7 @@ es-AR: batch: remove: Quitar del filtro index: - hint: Este filtro se aplica a la selección de mensajes individuales independientemente de otros criterios. Podés agregar más mensajes a este filtro desde la interface web. + hint: Este filtro se aplica a la selección de mensajes individuales, independientemente de otros criterios. Podés agregar más mensajes a este filtro desde la interface web. title: Mensajes filtrados footer: developers: Desarrolladores @@ -1220,12 +1233,22 @@ es-AR: trending_now: Tendencia ahora generic: all: Todas + all_items_on_page_selected_html: + one: "%{count} elemento en esta página está seleccionado." + other: Todos los %{count} elementos en esta página están seleccionados. + all_matching_items_selected_html: + one: "%{count} elemento que coincide con tu búsqueda está seleccionado." + other: Todos los %{count} elementos que coinciden con tu búsqueda están seleccionados. changes_saved_msg: "¡Cambios guardados exitosamente!" copy: Copiar delete: Eliminar + deselect: Deseleccionar todo none: "[Ninguna]" order_by: Ordenar por save_changes: Guardar cambios + select_all_matching_items: + one: Seleccionar %{count} elemento que coincide con tu búsqueda. + other: Seleccionar todos los %{count} elementos que coinciden con tu búsqueda. today: hoy validation_errors: one: "¡Falta algo! Por favor, revisá el error abajo" @@ -1334,17 +1357,6 @@ es-AR: subject: "%{name} envió una denuncia" sign_up: subject: Se registró %{name} - digest: - action: Ver todas las notificaciones - body: Acá tenés un resumen de los mensajes que te perdiste desde tu última visita, el %{since} - mention: "%{name} te mencionó en:" - new_followers_summary: - one: Además, ¡ganaste un nuevo seguidor mientras estabas ausente! ¡Esa! - other: Además, ¡ganaste %{count} nuevos seguidores mientras estabas ausente! ¡Esssa! - subject: - one: "1 nueva notificación desde tu última visita 🐘" - other: "%{count} nuevas notificaciones desde tu última visita 🐘" - title: En tu ausencia... favourite: body: 'Tu mensaje fue marcado como favorito por %{name}:' subject: "%{name} marcó tu mensaje como favorito" diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 8faa88f56..4f387128c 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -235,6 +235,7 @@ es-MX: approve_user: Aprobar Usuario assigned_to_self_report: Asignar Reporte change_email_user: Cambiar Correo Electrónico del Usuario + change_role_user: Cambiar Rol de Usuario confirm_user: Confirmar Usuario create_account_warning: Crear Advertencia create_announcement: Crear Anuncio @@ -244,6 +245,7 @@ es-MX: create_email_domain_block: Crear Bloqueo de Dominio de Correo Electrónico create_ip_block: Crear regla IP create_unavailable_domain: Crear Dominio No Disponible + create_user_role: Crear Rol demote_user: Degradar Usuario destroy_announcement: Eliminar Anuncio destroy_custom_emoji: Eliminar Emoji Personalizado @@ -254,6 +256,7 @@ es-MX: destroy_ip_block: Eliminar regla IP destroy_status: Eliminar Estado destroy_unavailable_domain: Eliminar Dominio No Disponible + destroy_user_role: Destruir Rol disable_2fa_user: Deshabilitar 2FA disable_custom_emoji: Deshabilitar Emoji Personalizado disable_sign_in_token_auth_user: Deshabilitar la Autenticación por Token de Correo Electrónico para el Usuario @@ -281,11 +284,13 @@ es-MX: update_custom_emoji: Actualizar Emoji Personalizado update_domain_block: Actualizar el Bloqueo de Dominio update_status: Actualizar Estado + update_user_role: Actualizar Rol actions: approve_appeal_html: "%{name} aprobó la solicitud de moderación de %{target}" approve_user_html: "%{name} aprobó el registro de %{target}" assigned_to_self_report_html: "%{name} asignó el informe %{target} a sí mismo" change_email_user_html: "%{name} cambió la dirección de correo electrónico del usuario %{target}" + change_role_user_html: "%{name} cambió el rol de %{target}" confirm_user_html: "%{name} confirmó la dirección de correo electrónico del usuario %{target}" create_account_warning_html: "%{name} envió una advertencia a %{target}" create_announcement_html: "%{name} ha creado un nuevo anuncio %{target}" @@ -295,9 +300,10 @@ es-MX: create_email_domain_block_html: "%{name} bloqueó el dominio de correo electrónico %{target}" create_ip_block_html: "%{name} creó una regla para la IP %{target}" create_unavailable_domain_html: "%{name} detuvo las entregas al dominio %{target}" + create_user_role_html: "%{name} creó el rol %{target}" demote_user_html: "%{name} degradó al usuario %{target}" destroy_announcement_html: "%{name} eliminó el anuncio %{target}" - destroy_custom_emoji_html: "%{name} destruyó emoji %{target}" + destroy_custom_emoji_html: "%{name} eliminó el emoji %{target}" destroy_domain_allow_html: "%{name} bloqueó la federación con el dominio %{target}" destroy_domain_block_html: "%{name} desbloqueó el dominio %{target}" destroy_email_domain_block_html: "%{name} desbloqueó el dominio de correo electrónico %{target}" @@ -305,6 +311,7 @@ es-MX: destroy_ip_block_html: "%{name} eliminó una regla para la IP %{target}" destroy_status_html: "%{name} eliminó el estado por %{target}" destroy_unavailable_domain_html: "%{name} reanudó las entregas al dominio %{target}" + destroy_user_role_html: "%{name} eliminó el rol %{target}" disable_2fa_user_html: "%{name} desactivó el requisito de dos factores para el usuario %{target}" disable_custom_emoji_html: "%{name} desactivó el emoji %{target}" disable_sign_in_token_auth_user_html: "%{name} ha deshabilitado la autenticación por token de correo electrónico para %{target}" @@ -332,7 +339,7 @@ es-MX: update_custom_emoji_html: "%{name} actualizó el emoji %{target}" update_domain_block_html: "%{name} actualizó el bloqueo de dominio para %{target}" update_status_html: "%{name} actualizó el estado de %{target}" - deleted_status: "(estado borrado)" + update_user_role_html: "%{name} cambió el rol %{target}" empty: No se encontraron registros. filter_by_action: Filtrar por acción filter_by_user: Filtrar por usuario @@ -794,9 +801,6 @@ es-MX: desc_html: Mostrar línea de tiempo pública en la portada title: Previsualización title: Ajustes del sitio - trendable_by_default: - desc_html: Afecta a etiquetas que no han sido previamente rechazadas - title: Permitir que las etiquetas sean tendencia sin revisión previa trends: desc_html: Mostrar públicamente hashtags previamente revisados que son tendencia title: Hashtags de tendencia @@ -1181,6 +1185,8 @@ es-MX: edit: add_keyword: Añadir palabra clave keywords: Palabras clave + statuses: Publicaciones individuales + statuses_hint_html: Este filtro se aplica a la selección de publicaciones individuales independientemente de si coinciden con las palabras clave a continuación. Revise o elimine publicaciones del filtro. title: Editar filtro errors: deprecated_api_multiple_keywords: Estos parámetros no se pueden cambiar desde esta aplicación porque se aplican a más de una palabra clave de filtro. Utilice una aplicación más reciente o la interfaz web. @@ -1194,10 +1200,23 @@ es-MX: keywords: one: "%{count} palabra clave" other: "%{count} palabras clave" + statuses: + one: "%{count} publicación" + other: "%{count} publicaciones" + statuses_long: + one: "%{count} publicación individual oculta" + other: "%{count} publicaciones individuales ocultas" title: Filtros new: save: Guardar nuevo filtro title: Añadir un nuevo filtro + statuses: + back_to_filter: Volver a filtrar + batch: + remove: Eliminar del filtro + index: + hint: Este filtro se aplica a la selección de publicaciones individuales independientemente de otros criterios. Puede añadir más publicaciones a este filtro desde la interfaz web. + title: Publicaciones filtradas footer: developers: Desarrolladores more: Mas… @@ -1205,12 +1224,22 @@ es-MX: trending_now: Tendencia ahora generic: all: Todos + all_items_on_page_selected_html: + one: "%{count} elemento en esta página está seleccionado." + other: Todos los %{count} elementos en esta página están seleccionados. + all_matching_items_selected_html: + one: "%{count} elemento que coincide con su búsqueda está seleccionado." + other: Todos los %{count} elementos que coinciden con su búsqueda están seleccionados. changes_saved_msg: "¡Cambios guardados con éxito!" copy: Copiar delete: Eliminar + deselect: Deseleccionar todo none: Nada order_by: Ordenar por save_changes: Guardar cambios + select_all_matching_items: + one: Seleccionar %{count} elemento que coincide con tu búsqueda. + other: Seleccionar todos los %{count} elementos que coinciden con tu búsqueda. today: hoy validation_errors: one: "¡Algo no está bien! Por favor, revisa el error" @@ -1319,17 +1348,6 @@ es-MX: subject: "%{name} envió un informe" sign_up: subject: "%{name} se registró" - digest: - action: Ver todas las notificaciones - body: Un resumen de los mensajes que perdiste en desde tu última visita, el %{since} - mention: "%{name} te ha mencionado en:" - new_followers_summary: - one: "¡Ademas, has adquirido un nuevo seguidor mientras no estabas! ¡Hurra!" - other: "¡Ademas, has adquirido %{count} nuevos seguidores mientras no estabas! ¡Genial!" - subject: - one: "1 nueva notificación desde tu última visita 🐘" - other: "%{count} nuevas notificaciones desde tu última visita 🐘" - title: En tu ausencia… favourite: body: 'Tu estado fue marcado como favorito por %{name}:' subject: "%{name} marcó como favorito tu estado" diff --git a/config/locales/es.yml b/config/locales/es.yml index 8d2ed1a33..db4785d2c 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -235,17 +235,21 @@ es: approve_user: Aprobar Usuario assigned_to_self_report: Asignar Reporte change_email_user: Cambiar Correo Electrónico del Usuario + change_role_user: Cambiar Rol de Usuario confirm_user: Confirmar Usuario create_account_warning: Crear Advertencia create_announcement: Crear Anuncio + create_canonical_email_block: Crear Bloqueo de Correo Electrónico create_custom_emoji: Crear Emoji Personalizado create_domain_allow: Crear Permiso de Dominio create_domain_block: Crear Bloqueo de Dominio create_email_domain_block: Crear Bloqueo de Dominio de Correo Electrónico create_ip_block: Crear regla IP create_unavailable_domain: Crear Dominio No Disponible + create_user_role: Crear Rol demote_user: Degradar Usuario destroy_announcement: Eliminar Anuncio + destroy_canonical_email_block: Eliminar Bloqueo de Correo Electrónico destroy_custom_emoji: Eliminar Emoji Personalizado destroy_domain_allow: Eliminar Permiso de Dominio destroy_domain_block: Eliminar Bloqueo de Dominio @@ -254,6 +258,7 @@ es: destroy_ip_block: Eliminar regla IP destroy_status: Eliminar Estado destroy_unavailable_domain: Eliminar Dominio No Disponible + destroy_user_role: Destruir Rol disable_2fa_user: Deshabilitar 2FA disable_custom_emoji: Deshabilitar Emoji Personalizado disable_sign_in_token_auth_user: Deshabilitar la Autenticación por Token de Correo Electrónico para el Usuario @@ -280,24 +285,30 @@ es: update_announcement: Actualizar Anuncio update_custom_emoji: Actualizar Emoji Personalizado update_domain_block: Actualizar el Bloqueo de Dominio + update_ip_block: Actualizar regla IP update_status: Actualizar Estado + update_user_role: Actualizar Rol actions: approve_appeal_html: "%{name} aprobó la solicitud de moderación de %{target}" approve_user_html: "%{name} aprobó el registro de %{target}" assigned_to_self_report_html: "%{name} asignó el informe %{target} a sí mismo" change_email_user_html: "%{name} cambió la dirección de correo electrónico del usuario %{target}" + change_role_user_html: "%{name} cambió el rol de %{target}" confirm_user_html: "%{name} confirmó la dirección de correo electrónico del usuario %{target}" create_account_warning_html: "%{name} envió una advertencia a %{target}" create_announcement_html: "%{name} ha creado un nuevo anuncio %{target}" + create_canonical_email_block_html: "%{name} bloqueó el correo electrónico con el hash %{target}" create_custom_emoji_html: "%{name} subió un nuevo emoji %{target}" create_domain_allow_html: "%{name} permitió la federación con el dominio %{target}" create_domain_block_html: "%{name} bloqueó el dominio %{target}" create_email_domain_block_html: "%{name} bloqueó el dominio de correo electrónico %{target}" create_ip_block_html: "%{name} creó una regla para la IP %{target}" create_unavailable_domain_html: "%{name} detuvo las entregas al dominio %{target}" + create_user_role_html: "%{name} creó el rol %{target}" demote_user_html: "%{name} degradó al usuario %{target}" destroy_announcement_html: "%{name} eliminó el anuncio %{target}" - destroy_custom_emoji_html: "%{name} destruyó emoji %{target}" + destroy_canonical_email_block_html: "%{name} desbloqueó el correo electrónico con el hash %{target}" + destroy_custom_emoji_html: "%{name} eliminó el emoji %{target}" destroy_domain_allow_html: "%{name} bloqueó la federación con el dominio %{target}" destroy_domain_block_html: "%{name} desbloqueó el dominio %{target}" destroy_email_domain_block_html: "%{name} desbloqueó el dominio de correo electrónico %{target}" @@ -305,6 +316,7 @@ es: destroy_ip_block_html: "%{name} eliminó una regla para la IP %{target}" destroy_status_html: "%{name} eliminó el estado por %{target}" destroy_unavailable_domain_html: "%{name} reanudó las entregas al dominio %{target}" + destroy_user_role_html: "%{name} eliminó el rol %{target}" disable_2fa_user_html: "%{name} desactivó el requisito de dos factores para el usuario %{target}" disable_custom_emoji_html: "%{name} desactivó el emoji %{target}" disable_sign_in_token_auth_user_html: "%{name} ha deshabilitado la autenticación por token de correo electrónico para %{target}" @@ -331,8 +343,9 @@ es: update_announcement_html: "%{name} actualizó el anuncio %{target}" update_custom_emoji_html: "%{name} actualizó el emoji %{target}" update_domain_block_html: "%{name} actualizó el bloqueo de dominio para %{target}" + update_ip_block_html: "%{name} cambió la regla para la IP %{target}" update_status_html: "%{name} actualizó el estado de %{target}" - deleted_status: "(estado borrado)" + update_user_role_html: "%{name} cambió el rol %{target}" empty: No se encontraron registros. filter_by_action: Filtrar por acción filter_by_user: Filtrar por usuario @@ -795,8 +808,8 @@ es: title: Previsualización title: Ajustes del sitio trendable_by_default: - desc_html: Afecta a etiquetas que no han sido previamente rechazadas - title: Permitir que las etiquetas sean tendencia sin revisión previa + desc_html: El contenido específico de tendencias todavía puede ser explícitamente desactivado + title: Permitir tendencias sin revisión previa trends: desc_html: Mostrar públicamente hashtags previamente revisados que son tendencia title: Hashtags de tendencia @@ -1182,7 +1195,7 @@ es: add_keyword: Añadir palabra clave keywords: Palabras clave statuses: Publicaciones individuales - statuses_hint_html: Este filtro se aplica a las publicaciones individuales seleccionadas, independientemente de si coinciden con las palabras clave de abajo. Puedes revisar estos mensajes y eliminarlos del filtro pulsando aquí. + statuses_hint_html: Este filtro se aplica a la selección de publicaciones individuales independientemente de si coinciden con las palabras clave a continuación. Revise o elimine publicaciones del filtro. title: Editar filtro errors: deprecated_api_multiple_keywords: Estos parámetros no se pueden cambiar desde esta aplicación porque se aplican a más de una palabra clave de filtro. Utilice una aplicación más reciente o la interfaz web. @@ -1211,7 +1224,7 @@ es: batch: remove: Eliminar del filtro index: - hint: Este filtro se aplica a la selección de publicaciones individuales independientemente de otros criterios. Puede añadir más mensajes a este filtro desde la interfaz Web. + hint: Este filtro se aplica a la selección de publicaciones individuales independientemente de otros criterios. Puede añadir más publicaciones a este filtro desde la interfaz web. title: Publicaciones filtradas footer: developers: Desarrolladores @@ -1220,12 +1233,22 @@ es: trending_now: Tendencia ahora generic: all: Todos + all_items_on_page_selected_html: + one: "%{count} elemento en esta página está seleccionado." + other: Todos los %{count} elementos en esta página están seleccionados. + all_matching_items_selected_html: + one: "%{count} elemento que coincide con su búsqueda está seleccionado." + other: Todos los %{count} elementos que coinciden con su búsqueda están seleccionados. changes_saved_msg: "¡Cambios guardados con éxito!" copy: Copiar delete: Eliminar + deselect: Deseleccionar todo none: Nada order_by: Ordenar por save_changes: Guardar cambios + select_all_matching_items: + one: Seleccionar %{count} elemento que coincide con tu búsqueda. + other: Seleccionar todos los %{count} elementos que coinciden con tu búsqueda. today: hoy validation_errors: one: "¡Algo no está bien! Por favor, revisa el error" @@ -1334,17 +1357,6 @@ es: subject: "%{name} envió un informe" sign_up: subject: "%{name} se registró" - digest: - action: Ver todas las notificaciones - body: Un resumen de los mensajes que perdiste en desde tu última visita, el %{since} - mention: "%{name} te ha mencionado en:" - new_followers_summary: - one: "¡Ademas, has adquirido un nuevo seguidor mientras no estabas! ¡Hurra!" - other: "¡Ademas, has adquirido %{count} nuevos seguidores mientras no estabas! ¡Genial!" - subject: - one: "1 nueva notificación desde tu última visita 🐘" - other: "%{count} nuevas notificaciones desde tu última visita 🐘" - title: En tu ausencia… favourite: body: 'Tu estado fue marcado como favorito por %{name}:' subject: "%{name} marcó como favorito tu estado" diff --git a/config/locales/et.yml b/config/locales/et.yml index 6aab7a219..5b354afd9 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -215,7 +215,6 @@ et: update_announcement: Uuenda teadaannet update_custom_emoji: Uuendas kohandatud emotikoni update_status: Uuendas staatust - deleted_status: "(kustutatud staatus)" empty: Logisi ei leitud. filter_by_action: Filtreeri tegevuse järgi filter_by_user: Filtreeri kasutaja järgi @@ -463,9 +462,6 @@ et: desc_html: Kuva avalikku ajajoont esilehel title: Ajajoone eelvaade title: Lehe seaded - trendable_by_default: - desc_html: Puudutab silte, mis pole varem keelatud - title: Luba siltide trendimine ilma eelneva ülevaatuseta trends: desc_html: Kuva avalikult eelnevalt üle vaadatud sildid, mis on praegu trendikad title: Populaarsed sildid praegu @@ -770,14 +766,6 @@ et: moderation: title: Moderatsioon notification_mailer: - digest: - action: Vaata kõiki teateid - body: Siin on kiire ülevaade sellest, mis sõnumeid Te ei näinud pärast Teie viimast külastust %{since} - mention: "%{name} mainis Teid postituses:" - new_followers_summary: - one: Ja veel, Te saite ühe uue jälgija kui Te olite eemal! Jee! - other: Ja veel, Te saite %{count} uut jälgijat kui Te olite eemal! Hämmastav! - title: Teie puudumisel... favourite: body: "%{name} lisas Teie staatuse lemmikutesse:" subject: "%{name} märkis su staatuse lemmikuks" diff --git a/config/locales/eu.yml b/config/locales/eu.yml index 3202b9b9c..f0910aaba 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -285,7 +285,6 @@ eu: create_unavailable_domain_html: "%{name}(e)k %{target} domeinurako banaketa gelditu du" demote_user_html: "%{name} erabiltzaileak %{target} erabiltzailea mailaz jaitsi du" destroy_announcement_html: "%{name} erabiltzaileak %{target} iragarpena ezabatu du" - destroy_custom_emoji_html: "%{name} erabiltzaileak %{target} emojia suntsitu du" destroy_domain_allow_html: "%{name} erabiltzaileak %{target} domeinuarekin federatzea debekatu du" destroy_domain_block_html: "%{name} erabiltzaileak %{target} domeinua desblokeatu du" destroy_email_domain_block_html: "%{name} erabiltzaileak %{target} e-posta helbideen domeinua desblokeatu du" @@ -320,7 +319,6 @@ eu: update_custom_emoji_html: "%{name} erabiltzaileak %{target} emoji-a eguneratu du" update_domain_block_html: "%{name} erabiltzaileak %{target} domeinu-blokeoa eguneratu du" update_status_html: "%{name} erabiltzaileak %{target} erabiltzailearen bidalketa eguneratu du" - deleted_status: "(ezabatutako bidalketa)" empty: Ez da egunkaririk aurkitu. filter_by_action: Iragazi ekintzen arabera filter_by_user: Iragazi erabiltzaileen arabera @@ -697,9 +695,6 @@ eu: desc_html: Bistaratu denbora-lerro publikoa hasiera orrian title: Denbora-lerroaren aurrebista title: Gunearen ezarpenak - trendable_by_default: - desc_html: Aurretik debekatu ez diren traola guztiei eragiten dio - title: Baimendu traolak joera bihurtzea aurretik errebisatu gabe trends: desc_html: Erakutsi publikoki orain joeran dauden aurretik errebisatutako traolak title: Traolak joeran @@ -1127,14 +1122,6 @@ eu: carry_mutes_over_text: Erabiltzaile hau %{acct} kontutik dator, zeina isilarazita daukazun. copy_account_note_text: 'Erabiltzaile hau %{acct} kontutik dator, hemen berari buruzko zure aurreko oharrak:' notification_mailer: - digest: - action: Ikusi jakinarazpen guztiak - body: Hona zure %{since}(e)ko azken bisitatik galdu dituzun mezuen laburpen bat - mention: "%{name}(e)k aipatu zaitu:" - new_followers_summary: - one: Kanpoan zeundela jarraitzaile berri bat gehitu zaizu! - other: Kanpoan zeundela %{count} jarraitzaile berri bat gehitu zaizkizu! - title: Kanpoan zeundela... favourite: body: "%{name}(e)k zure bidalketa gogoko du:" subject: "%{name}(e)k zure bidalketa gogoko du" diff --git a/config/locales/fa.yml b/config/locales/fa.yml index d6acaf534..fa6448770 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -284,7 +284,6 @@ fa: create_unavailable_domain_html: "%{name} تحویل محتوا به دامنه %{target} را متوقف کرد" demote_user_html: "%{name} کاربر %{target} را تنزل داد" destroy_announcement_html: "%{name} اعلامیهٔ %{target} را حذف کرد" - destroy_custom_emoji_html: "%{name} اموجی %{target} را نابود کرد" destroy_domain_allow_html: "%{name} دامنهٔ %{target} را از فهرست مجاز برداشت" destroy_domain_block_html: "%{name} انسداد دامنهٔ %{target} را رفع کرد" destroy_email_domain_block_html: "%{name} انسداد دامنهٔ رایانامهٔ %{target} را برداشت" @@ -319,7 +318,6 @@ fa: update_custom_emoji_html: "%{name} شکلک %{target} را به‌روز کرد" update_domain_block_html: "%{name} مسدودسازی دامنه را برای %{target} به‌روزرسانی کرد" update_status_html: "%{name} نوشتهٔ %{target} را به‌روز کرد" - deleted_status: "(نوشتهٔ پاک‌شده)" empty: هیچ گزارشی پیدا نشد. filter_by_action: پالایش بر اساس کنش filter_by_user: پالایش بر اساس کاربر @@ -677,9 +675,6 @@ fa: desc_html: نوشته‌های عمومی این سرور را در صفحهٔ آغازین نشان دهید title: پیش‌نمایش نوشته‌ها title: تنظیمات سایت - trendable_by_default: - desc_html: روی برچسب‌هایی که پیش از این ممنوع نشده‌اند تأثیر می‌گذارد - title: بگذارید که برچسب‌های پرطرفدار بدون بازبینی قبلی نمایش داده شوند trends: desc_html: برچسب‌های عمومی که پیش‌تر بازبینی شده‌اند و هم‌اینک پرطرفدارند title: پرطرفدارها @@ -1093,14 +1088,6 @@ fa: admin: sign_up: subject: "%{name} ثبت نام کرد" - digest: - action: دیدن تمامی آگاهی‌ها - body: خلاصه‌ای از پیغام‌هایی که از زمان آخرین بازدید شما در %{since} فرستاده شد - mention: "%{name} این‌جا از شما نام برد:" - new_followers_summary: - one: در ضمن، وقتی که نبودید یک پیگیر تازه پیدا کردید! ای ول! - other: در ضمن، وقتی که نبودید %{count} پیگیر تازه پیدا کردید! چه عالی! - title: در مدتی که نبودید... favourite: body: "%{name} این نوشتهٔ شما را پسندید:" subject: "%{name} نوشتهٔ شما را پسندید" diff --git a/config/locales/fi.yml b/config/locales/fi.yml index b48d8ab9f..397a40e69 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -235,6 +235,7 @@ fi: approve_user: Hyväksy käyttäjä assigned_to_self_report: Määritä raportti change_email_user: Vaihda sähköposti käyttäjälle + change_role_user: Muuta käyttäjän roolia confirm_user: Vahvista käyttäjä create_account_warning: Luo varoitus create_announcement: Luo ilmoitus @@ -244,6 +245,7 @@ fi: create_email_domain_block: Estä sähköpostipalvelin create_ip_block: Luo IP-sääntö create_unavailable_domain: Luo ei-saatavilla oleva verkkotunnus + create_user_role: Luo rooli demote_user: Alenna käyttäjä destroy_announcement: Poista ilmoitus destroy_custom_emoji: Poista mukautettu emoji @@ -254,6 +256,7 @@ fi: destroy_ip_block: Poista IP-sääntö destroy_status: Poista julkaisu destroy_unavailable_domain: Poista ei-saatavilla oleva verkkotunnus + destroy_user_role: Hävitä rooli disable_2fa_user: Poista kaksivaiheinen tunnistautuminen käytöstä disable_custom_emoji: Estä mukautettu emoji disable_sign_in_token_auth_user: Estä käyttäjältä sähköpostitunnuksen todennus @@ -281,11 +284,13 @@ fi: update_custom_emoji: Päivitä muokattu emoji update_domain_block: Päivitä verkkotunnuksen esto update_status: Päivitä viesti + update_user_role: Päivitä rooli actions: approve_appeal_html: "%{name} hyväksyi moderointipäätöksen muutoksenhaun lähettäjältä %{target}" approve_user_html: "%{name} hyväksyi käyttäjän rekisteröitymisen kohteesta %{target}" assigned_to_self_report_html: "%{name} otti raportin %{target} tehtäväkseen" change_email_user_html: "%{name} vaihtoi käyttäjän %{target} sähköpostiosoitteen" + change_role_user_html: "%{name} muutti roolia %{target}" confirm_user_html: "%{name} vahvisti käyttäjän %{target} sähköpostiosoitteen" create_account_warning_html: "%{name} lähetti varoituksen henkilölle %{target}" create_announcement_html: "%{name} loi uuden ilmoituksen %{target}" @@ -295,6 +300,7 @@ fi: create_email_domain_block_html: "%{name} esti sähköpostin %{target}" create_ip_block_html: "%{name} luonut IP-säännön %{target}" create_unavailable_domain_html: "%{name} pysäytti toimituksen verkkotunnukseen %{target}" + create_user_role_html: "%{name} luonut %{target} roolin" demote_user_html: "%{name} alensi käyttäjän %{target}" destroy_announcement_html: "%{name} poisti ilmoituksen %{target}" destroy_custom_emoji_html: "%{name} poisti emojin %{target}" @@ -305,6 +311,7 @@ fi: destroy_ip_block_html: "%{name} poisti IP-säännön %{target}" destroy_status_html: "%{name} poisti viestin %{target}" destroy_unavailable_domain_html: "%{name} jatkoi toimitusta verkkotunnukseen %{target}" + destroy_user_role_html: "%{name} poisti %{target} roolin" disable_2fa_user_html: "%{name} poisti käyttäjältä %{target} vaatimuksen kaksivaiheisen todentamiseen" disable_custom_emoji_html: "%{name} poisti emojin %{target}" disable_sign_in_token_auth_user_html: "%{name} poisti sähköpostitunnuksen %{target} todennuksen käytöstä" @@ -332,7 +339,7 @@ fi: update_custom_emoji_html: "%{name} päivitti emojin %{target}" update_domain_block_html: "%{name} päivitti verkkotunnuksen %{target}" update_status_html: "%{name} päivitti viestin %{target}" - deleted_status: "(poistettu julkaisu)" + update_user_role_html: "%{name} muutti roolia %{target}" empty: Lokeja ei löytynyt. filter_by_action: Suodata tapahtuman mukaan filter_by_user: Suodata käyttäjän mukaan @@ -480,6 +487,9 @@ fi: unsuppress: Palauta seuraa suositus instances: availability: + description_html: + one: Jos toimitus verkkotunnukseen epäonnistuu %{count} päivä ilman onnistumista, uusia yrityksiä ei tehdä ennen kuin toimitus alkaen verkkotunnukselta on vastaanotettu. + other: Jos toimitus verkkotunnukselle, epäonnistuu %{count} eri päivänä ilman onnistumista, uusia yrityksiä ei tehdä ennen kuin toimitus alkaen verkkotunnuselta on vastaanotettu. failure_threshold_reached: Epäonnistumisen kynnys saavutettu %{date}. failures_recorded: one: Epäonnistuneita yrityksiä %{count} päivässä. @@ -660,6 +670,53 @@ fi: delete: Poista description_html: Käyttäjän roolit, voit muokata toimintoja ja alueita mitä sinun Mastodon käyttäjät voivat käyttää. edit: Muokkaa "%{name}" roolia + everyone: Oletus käyttöoikeudet + everyone_full_description_html: Tämä on perusrooli joka vaikuttaa kaikkiin käyttäjiin, jopa ilman määrättyä roolia. Kaikki muut roolit perivät sen käyttöoikeudet. + permissions_count: + one: "%{count} käyttöoikeus" + other: "%{count} käyttöoikeutta" + privileges: + administrator: Ylläpitäjä + administrator_description: Käyttäjät, joilla on tämä käyttöoikeus, ohittavat jokaisen käyttöoikeuden + delete_user_data: Poista käyttäjän tiedot + delete_user_data_description: Salli käyttäjien poistaa muiden käyttäjien tiedot viipymättä + invite_users: Kutsu käyttäjiä + invite_users_description: Sallii käyttäjien kutsua uusia ihmisiä palvelimelle + manage_announcements: Hallitse Ilmoituksia + manage_announcements_description: Salli käyttäjien hallita ilmoituksia palvelimella + manage_appeals: Hallitse valituksia + manage_appeals_description: Antaa käyttäjien tarkastella valvontatoimia koskevia valituksia + manage_blocks: Hallitse lohkoja + manage_blocks_description: Sallii käyttäjien estää sähköpostipalvelujen ja IP-osoitteiden käytön + manage_custom_emojis: Hallita mukautettuja hymiöitä + manage_custom_emojis_description: Salli käyttäjien hallita mukautettuja hymiöitä palvelimella + manage_federation: Hallita liitoksia + manage_federation_description: Sallii käyttäjien estää tai sallia liitoksen muiden verkkotunnusten kanssa ja hallita toimitusta + manage_invites: Hallita kutsuja + manage_invites_description: Sallii käyttäjien selata ja poistaa kutsulinkkejä käytöstä + manage_reports: Hallita raportteja + manage_reports_description: Sallii käyttäjien tarkastella raportteja ja suorittaa valvontatoimia niitä vastaan + manage_roles: Hallita rooleja + manage_roles_description: Sallii käyttäjien hallita ja määrittää rooleja heidän alapuolellaan + manage_rules: Hallita sääntöjä + manage_rules_description: Sallii käyttäjien vaihtaa palvelinsääntöjä + manage_settings: Hallita asetuksia + manage_settings_description: Salli käyttäjien muuttaa sivuston asetuksia + manage_taxonomies: Hallita luokittelua + manage_taxonomies_description: Sallii käyttäjien tarkistaa trendillisen sisällön ja päivittää hashtag-asetuksia + manage_user_access: Hallita käyttäjän oikeuksia + manage_user_access_description: Sallii käyttäjien poistaa käytöstä muiden käyttäjien kaksivaiheisen todennuksen, muuttaa heidän sähköpostiosoitettaan ja nollata heidän salasanansa + manage_users: Hallita käyttäjiä + manage_users_description: Sallii käyttäjien tarkastella muiden käyttäjien tietoja ja suorittaa valvontatoimia heitä vastaan + manage_webhooks: Hallita Webhookit + manage_webhooks_description: Sallii käyttäjien luoda webhookit hallinnollisiin tapahtumiin + view_audit_log: Katsoa valvontalokia + view_audit_log_description: Sallii käyttäjien nähdä palvelimen hallinnollisten toimien historian + view_dashboard: Näytä koontinäyttö + view_dashboard_description: Sallii käyttäjien käyttää kojelautaa ja erilaisia mittareita + view_devops: Operaattorit + view_devops_description: Sallii käyttäjille oikeuden käyttää Sidekiq ja pgHero dashboardeja + title: Roolit rules: add_new: Lisää sääntö delete: Poista @@ -744,9 +801,6 @@ fi: desc_html: Näytä julkinen aikajana aloitussivulla title: Aikajanan esikatselu title: Sivuston asetukset - trendable_by_default: - desc_html: Vaikuttaa hashtageihin, joita ei ole aiemmin poistettu käytöstä - title: Salli hashtagit ilman tarkistusta ennakkoon trends: desc_html: Näytä julkisesti aiemmin tarkistetut hashtagit, jotka ovat tällä hetkellä saatavilla title: Trendaavat aihetunnisteet @@ -779,6 +833,11 @@ fi: system_checks: database_schema_check: message_html: Tietokannan siirto on vireillä. Suorita ne varmistaaksesi, että sovellus toimii odotetulla tavalla + elasticsearch_running_check: + message_html: Ei saatu yhteyttä Elasticsearch. Tarkista, että se on käynnissä tai poista kokotekstihaku käytöstä + elasticsearch_version_check: + message_html: 'Yhteensopimaton Elasticsearch versio: %{value}' + version_comparison: Elasticsearch %{running_version} on käynnissä, kun %{required_version} vaaditaan rules_check: action: Hallinnoi palvelimen sääntöjä message_html: Et ole määrittänyt mitään palvelimen sääntöä. @@ -798,8 +857,12 @@ fi: description_html: Nämä ovat linkkejä, joita jaetaan tällä hetkellä paljon tileillä, joilta palvelimesi näkee viestejä. Se voi auttaa käyttäjiäsi saamaan selville, mitä maailmassa tapahtuu. Linkkejä ei näytetä julkisesti, ennen kuin hyväksyt julkaisijan. Voit myös sallia tai hylätä yksittäiset linkit. disallow: Hylkää linkki disallow_provider: Estä julkaisija + shared_by_over_week: + one: Yksi henkilö jakanut viimeisen viikon aikana + other: Jakanut %{count} henkilöä viimeisen viikon aikana title: Suositut linkit usage_comparison: Jaettu %{today} kertaa tänään verrattuna eilen %{yesterday} + only_allowed: Vain sallittu pending_review: Odottaa tarkistusta preview_card_providers: allowed: Tämän julkaisijan linkit voivat trendata @@ -851,6 +914,7 @@ fi: webhooks: add_new: Lisää päätepiste delete: Poista + description_html: A webhook mahdollistaa Mastodonin työntää reaaliaikaisia ilmoituksia valituista tapahtumista omaan sovellukseesi, joten sovelluksesi voi laukaista automaattisesti reaktioita. disable: Poista käytöstä disabled: Ei käytössä edit: Muokkaa päätepistettä @@ -1121,8 +1185,11 @@ fi: edit: add_keyword: Lisää avainsana keywords: Avainsanat + statuses: Yksittäiset postaukset + statuses_hint_html: Tämä suodatin koskee yksittäisten postausten valintaa riippumatta siitä, vastaavatko ne alla olevia avainsanoja. Tarkista tai poista viestit suodattimesta. title: Muokkaa suodatinta errors: + deprecated_api_multiple_keywords: Näitä parametreja ei voi muuttaa tästä sovelluksesta, koska ne koskevat useampaa kuin yhtä suodattimen avainsanaa. Käytä uudempaa sovellusta tai web-käyttöliittymää. invalid_context: Ei sisältöä tai se on virheellinen index: contexts: Suodattimet %{contexts} @@ -1133,10 +1200,23 @@ fi: keywords: one: "%{count} avainsana" other: "%{count} avainsanaa" + statuses: + one: "%{count} viesti" + other: "%{count} viestiä" + statuses_long: + one: "%{count} yksittäinen viesti piilotettu" + other: "%{count} yksittäistä viestiä piilotettu" title: Suodattimet new: save: Tallenna uusi suodatin title: Lisää uusi suodatin + statuses: + back_to_filter: Takaisin suodattimeen + batch: + remove: Poista suodattimista + index: + hint: Tämä suodatin koskee yksittäisten viestien valintaa muista kriteereistä riippumatta. Voit lisätä lisää viestejä tähän suodattimeen web-käyttöliittymästä. + title: Suodatetut viestit footer: developers: Kehittäjille more: Lisää… @@ -1258,17 +1338,6 @@ fi: subject: "%{name} lähetti raportin" sign_up: subject: "%{name} kirjautunut" - digest: - action: Näytä kaikki ilmoitukset - body: Tässä lyhyt yhteenveto viime käyntisi (%{since}) jälkeen tulleista viesteistä - mention: "%{name} mainitsi sinut:" - new_followers_summary: - one: Olet myös saanut yhden uuden seuraajan! Juhuu! - other: Olet myös saanut %{count} uutta seuraajaa! Aivan mahtavaa! - subject: - one: "1 uusi ilmoitus viime käyntisi jälkeen 🐘" - other: "%{count} uutta ilmoitusta viime käyntisi jälkeen 🐘" - title: Poissaollessasi… favourite: body: "%{name} tykkäsi tilastasi:" subject: "%{name} tykkäsi tilastasi" diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 018dea3af..a0409693c 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -297,7 +297,6 @@ fr: create_unavailable_domain_html: "%{name} a arrêté la livraison vers le domaine %{target}" demote_user_html: "%{name} a rétrogradé l'utilisateur·rice %{target}" destroy_announcement_html: "%{name} a supprimé l'annonce %{target}" - destroy_custom_emoji_html: "%{name} a détruit l'émoji %{target}" destroy_domain_allow_html: "%{name} a rejeté la fédération avec le domaine %{target}" destroy_domain_block_html: "%{name} a débloqué le domaine %{target}" destroy_email_domain_block_html: "%{name} a débloqué le domaine de courriel %{target}" @@ -332,7 +331,6 @@ fr: update_custom_emoji_html: "%{name} a mis à jour l'émoji %{target}" update_domain_block_html: "%{name} a mis à jour le blocage de domaine pour %{target}" update_status_html: "%{name} a mis à jour le message de %{target}" - deleted_status: "(message supprimé)" empty: Aucun journal trouvé. filter_by_action: Filtrer par action filter_by_user: Filtrer par utilisateur·ice @@ -794,9 +792,6 @@ fr: desc_html: Afficher un lien vers le fil public sur la page d’accueil et autoriser l'accès anonyme au fil public via l'API title: Autoriser la prévisualisation anonyme du fil global title: Paramètres du serveur - trendable_by_default: - desc_html: Affecte les hashtags qui n'ont pas été précédemment non autorisés - title: Autoriser les hashtags à apparaître dans les tendances sans approbation préalable trends: desc_html: Afficher publiquement les hashtags approuvés qui sont populaires en ce moment title: Hashtags populaires @@ -1319,17 +1314,6 @@ fr: subject: "%{name} a soumis un signalement" sign_up: subject: "%{name} s'est inscrit·e" - digest: - action: Voir toutes les notifications - body: Voici un bref résumé des messages que vous avez raté depuis votre dernière visite le %{since} - mention: "%{name} vous a mentionné⋅e dans :" - new_followers_summary: - one: De plus, vous avez un·e nouvel·le abonné·e ! Youpi ! - other: De plus, vous avez %{count} abonné·e·s de plus ! Incroyable ! - subject: - one: "Une nouvelle notification depuis votre dernière visite 🐘" - other: "%{count} nouvelles notifications depuis votre dernière visite 🐘" - title: Pendant votre absence… favourite: body: "%{name} a ajouté votre message à ses favoris :" subject: "%{name} a ajouté votre message à ses favoris" diff --git a/config/locales/fy.yml b/config/locales/fy.yml index fa727d6fe..02f77d7ea 100644 --- a/config/locales/fy.yml +++ b/config/locales/fy.yml @@ -37,8 +37,6 @@ fy: contexts: thread: Petearen notification_mailer: - digest: - mention: "%{name} hat jo fermeld yn:" mention: action: Beäntwurdzje body: 'Jo binne fermeld troch %{name} yn:' diff --git a/config/locales/gd.yml b/config/locales/gd.yml index c98235cff..7c8df8f6b 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -307,7 +307,6 @@ gd: create_unavailable_domain_html: Sguir %{name} ris an lìbhrigeadh dhan àrainn %{target} demote_user_html: Dh’ìslich %{name} an cleachdaiche %{target} destroy_announcement_html: Sguab %{name} às am brath-fios %{target} - destroy_custom_emoji_html: Mhill %{name} an Emoji %{target} destroy_domain_allow_html: Dì-cheadaich %{name} co-nasgadh leis an àrainn %{target} destroy_domain_block_html: Dì-bhac %{name} an àrainn %{target} destroy_email_domain_block_html: Dì-bhac %{name} an àrainn puist-d %{target} @@ -342,7 +341,6 @@ gd: update_custom_emoji_html: Dh’ùraich %{name} an Emoji %{target} update_domain_block_html: Dh’ùraich %{name} bacadh na h-àrainne %{target} update_status_html: Dh’ùraich %{name} post le %{target} - deleted_status: "(post air a sguabadh às)" empty: Cha deach loga a lorg. filter_by_action: Criathraich a-rèir gnìomha filter_by_user: Criathraich a-rèir cleachdaiche @@ -826,9 +824,6 @@ gd: desc_html: Seall ceangal dhan loidhne-ama phoblach air an duilleag-landaidh is ceadaich inntrigeadh gun ùghdarrachadh leis an API air an loidhne-ama phoblach title: Ceadaich inntrigeadh gun ùghdarrachadh air an loidhne-ama phoblach title: Roghainnean na làraich - trendable_by_default: - desc_html: Bheir seo buaidh air na tagaichean hais nach deach a dhì-cheadachadh roimhe - title: Leig le tagaichean hais treandadh às aonais lèirmheis ro làimh trends: desc_html: Seall susbaint gu poblach a chaidh lèirmheas a dhèanamh oirre roimhe ’s a tha a’ treandadh title: Treandaichean @@ -1091,7 +1086,7 @@ gd: post_follow: close: Air neo dùin an uinneag seo. return: Seall pròifil a’ chleachdaiche - web: Tadhail air an lìon + web: Tadhail air an duilleag-lìn title: Lean air %{acct} challenge: confirm: Lean air adhart @@ -1365,21 +1360,6 @@ gd: subject: Rinn %{name} gearan sign_up: subject: Chlàraich %{name} - digest: - action: Seall a h-uile brath - body: Seo geàrr-chunntas air na h-atharraichean nach fhaca thu on tadhal mu dheireadh agad %{since} - mention: 'Thug %{name} iomradh ort an-seo:' - new_followers_summary: - few: Cuideachd, bhuannaich thu %{count} luchd-leantainn ùr on àm a bha thu air falbh! Nach ma sin! - one: Cuideachd, bhuannaich thu %{count} neach-leantainn ùr on àm a bha thu air falbh! Nach ma sin! - other: Cuideachd, bhuannaich thu %{count} luchd-leantainn ùr on àm a bha thu air falbh! Nach ma sin! - two: Cuideachd, bhuannaich thu %{count} neach-leantainn ùr on àm a bha thu air falbh! Nach ma sin! - subject: - few: "%{count} brathan ùra on tadhal mu dheireadh agad 🐘" - one: "%{count} bhrath ùr on tadhal mu dheireadh agad 🐘" - other: "%{count} brath ùr on tadhal mu dheireadh agad 🐘" - two: "%{count} bhrath ùr on tadhal mu dheireadh agad 🐘" - title: Fhad ’s a bha thu air falbh… favourite: body: 'Is annsa le %{name} am post agad:' subject: Is annsa le %{name} am post agad diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 5610272b7..6c32fcaf3 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -235,17 +235,21 @@ gl: approve_user: Aprobar Usuaria assigned_to_self_report: Asignar denuncia change_email_user: Editar email da usuaria + change_role_user: Cambiar Rol da Usuaria confirm_user: Confirmar usuaria create_account_warning: Crear aviso create_announcement: Crear anuncio + create_canonical_email_block: Crear Bloqueo de email create_custom_emoji: Crear emoticonas personalizadas create_domain_allow: Crear Dominio Permitido create_domain_block: Crear bloquedo do Dominio create_email_domain_block: Crear bloqueo de dominio de correo electrónico create_ip_block: Crear regra IP create_unavailable_domain: Crear dominio Non dispoñible + create_user_role: Crear Rol demote_user: Degradar usuaria destroy_announcement: Eliminar anuncio + destroy_canonical_email_block: Eliminar Bloqueo de email destroy_custom_emoji: Eliminar emoticona personalizada destroy_domain_allow: Eliminar Dominio permitido destroy_domain_block: Eliminar bloqueo do Dominio @@ -254,6 +258,7 @@ gl: destroy_ip_block: Eliminar regra IP destroy_status: Eliminar publicación destroy_unavailable_domain: Eliminar dominio Non dispoñible + destroy_user_role: Eliminar Rol disable_2fa_user: Desactivar 2FA disable_custom_emoji: Desactivar emoticona personalizada disable_sign_in_token_auth_user: Desactivar Autenticación por token no email para Usuaria @@ -280,24 +285,30 @@ gl: update_announcement: Actualizar anuncio update_custom_emoji: Actualizar emoticona personalizada update_domain_block: Actualizar bloqueo do dominio + update_ip_block: Actualizar regra IP update_status: Actualizar publicación + update_user_role: Actualizar Rol actions: approve_appeal_html: "%{name} aprobou a apelación da decisión da moderación de %{target}" approve_user_html: "%{name} aprobou o rexistro de %{target}" assigned_to_self_report_html: "%{name} asignou a denuncia %{target} para si mesma" change_email_user_html: "%{name} cambiou o enderezo de email da usuaria %{target}" + change_role_user_html: "%{name} cambiou o rol de %{target}" confirm_user_html: "%{name} confirmou o enderezo de email da usuaria %{target}" create_account_warning_html: "%{name} envioulle unha advertencia a %{target}" create_announcement_html: "%{name} creou un novo anuncio %{target}" + create_canonical_email_block_html: "%{name} bloqueou o email con hash %{target}" create_custom_emoji_html: "%{name} subiu un novo emoji %{target}" create_domain_allow_html: "%{name} permitiu a federación co dominio %{target}" create_domain_block_html: "%{name} bloqueou o dominio %{target}" create_email_domain_block_html: "%{name} bloqueou o dominio de email %{target}" create_ip_block_html: "%{name} creou regra para o IP %{target}" create_unavailable_domain_html: "%{name} deixou de interactuar co dominio %{target}" + create_user_role_html: "%{name} creou o rol %{target}" demote_user_html: "%{name} degradou a usuaria %{target}" destroy_announcement_html: "%{name} eliminou o anuncio %{target}" - destroy_custom_emoji_html: "%{name} destruíu o emoji %{target}" + destroy_canonical_email_block_html: "%{name} desbloqueou o email con hash %{target}" + destroy_custom_emoji_html: "%{name} eliminou o emoji %{target}" destroy_domain_allow_html: "%{name} retirou a federación co dominio %{target}" destroy_domain_block_html: "%{name} desbloqueou o dominio %{target}" destroy_email_domain_block_html: "%{name} desbloqueou o dominio de email %{target}" @@ -305,6 +316,7 @@ gl: destroy_ip_block_html: "%{name} eliminou a regra para o IP %{target}" destroy_status_html: "%{name} eliminou a publicación de %{target}" destroy_unavailable_domain_html: "%{name} retomou a interacción co dominio %{target}" + destroy_user_role_html: "%{name} eliminou o rol %{target}" disable_2fa_user_html: "%{name} desactivou o requerimento do segundo factor para a usuaria %{target}" disable_custom_emoji_html: "%{name} desactivou o emoji %{target}" disable_sign_in_token_auth_user_html: "%{name} desactivou a autenticación por token no email para %{target}" @@ -331,8 +343,9 @@ gl: update_announcement_html: "%{name} actualizou o anuncio %{target}" update_custom_emoji_html: "%{name} actualizou o emoji %{target}" update_domain_block_html: "%{name} actualizou o bloqueo do dominio para %{target}" + update_ip_block_html: "%{name} cambiou a regra para IP %{target}" update_status_html: "%{name} actualizou a publicación de %{target}" - deleted_status: "(publicación eliminada)" + update_user_role_html: "%{name} cambiou o rol %{target}" empty: Non se atoparon rexistros. filter_by_action: Filtrar por acción filter_by_user: Filtrar por usuaria @@ -795,8 +808,8 @@ gl: title: Permitir acceso á cronoloxía pública sen autenticación title: Axustes do sitio trendable_by_default: - desc_html: Afecta ós cancelos que non foron rexeitados de xeito previo - title: Permite ós cancelos ser tendencia sen revisión previa + desc_html: Poderase prohibir igualmente contido en voga específico + title: Permitir tendencias sen aprobación previa trends: desc_html: Amosar de xeito público cancelos revisados previamente que actualmente son tendencia title: Cancelos en tendencia @@ -1182,7 +1195,7 @@ gl: add_keyword: Engadir palabra chave keywords: Palabras chave statuses: Publicacións individuais - statuses_hint_html: Este filtro aplícase para seleccionar publicacións individuais independentemente de se concordan coas palabras chave aquí indicadas. Podes revisar estas publicacións e eliminalas do filtro premendo aquí. + statuses_hint_html: O filtro aplícase para seleccionar publicacións individuais independentemente de se concorda coas palabras chave indicadas. Revisa ou elimina publicacións do filtro. title: Editar filtro errors: deprecated_api_multiple_keywords: Estes parámetros non se poden cambiar desde esta aplicación porque son de aplicación a máis dun filtro de palabras chave. Usa unha aplicación máis recente ou a interface web. @@ -1211,7 +1224,7 @@ gl: batch: remove: Eliminar do filtro index: - hint: Este filtro aplícase para seleccionar publicacións individuais independentemente de outros criterios. Podes engadir máis publicacións a este filtro desde a interface Web. + hint: Este filtro aplícase para seleccionar publicacións individuais independentemente de outros criterios. Podes engadir máis publicacións a este filtro desde a interface web. title: Publicacións filtradas footer: developers: Desenvolvedoras @@ -1220,12 +1233,22 @@ gl: trending_now: Tendencia agora generic: all: Todo + all_items_on_page_selected_html: + one: "%{count} elemento seleccionado nesta páxina." + other: Tódolos %{count} elementos desta páxina están seleccionados. + all_matching_items_selected_html: + one: "%{count} elemento coincidente coa busca está seleccionado." + other: Tódolos %{count} elementos coincidentes coa busca están seleccionados. changes_saved_msg: Cambios gardados correctamente!! copy: Copiar delete: Eliminar + deselect: Desmarcar todo none: Ningún order_by: Ordenar por save_changes: Gardar cambios + select_all_matching_items: + one: Seleccionar %{count} elemento coincidente coa busca. + other: Seleccionar tódolos %{count} elementos coincidentes coa busca. today: hoxe validation_errors: one: Algo non está ben de todo! Por favor revise abaixo o erro @@ -1334,17 +1357,6 @@ gl: subject: "%{name} enviou unha denuncia" sign_up: subject: "%{name} rexistrouse" - digest: - action: Ver todas as notificacións - body: Aquí ten un breve resumo das mensaxes publicadas desde a súa última visita en %{since} - mention: "%{name} mencionouna en:" - new_followers_summary: - one: Ademáis, ten unha nova seguidora desde entón! Ben! - other: Ademáis, obtivo %{count} novas seguidoras desde entón! Tremendo! - subject: - one: "1 nova notificación desde a última visita 🐘" - other: "%{count} novas notificacións desde a última visita 🐘" - title: Na súa ausencia... favourite: body: 'A túa publicación foi marcada como favorita por %{name}:' subject: "%{name} marcou como favorita a túa publicación" diff --git a/config/locales/he.yml b/config/locales/he.yml index 2106423bc..c340f6e6c 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -245,6 +245,7 @@ he: approve_user: אישור משתמש assigned_to_self_report: הקצאת דו"ח change_email_user: שינוי כתובת דוא"ל למשתמש + change_role_user: שינוי תפקיד למשתמש confirm_user: אשר משתמש create_account_warning: יצירת אזהרה create_announcement: יצירת הכרזה @@ -254,6 +255,7 @@ he: create_email_domain_block: יצירת חסימת דומיין דוא"ל create_ip_block: יצירת כלל IP create_unavailable_domain: יצירת דומיין בלתי זמין + create_user_role: יצירת תפקיד demote_user: הורדת משתמש בדרגה destroy_announcement: מחיקת הכרזה destroy_custom_emoji: מחיקת אמוג'י יחודי @@ -264,6 +266,7 @@ he: destroy_ip_block: מחיקת כלל IP destroy_status: מחיקת פוסט destroy_unavailable_domain: מחיקת דומיין בלתי זמין + destroy_user_role: מחיקת תפקיד disable_2fa_user: השעיית זיהוי דו-גורמי disable_custom_emoji: השעיית אמוג'י מיוחד disable_sign_in_token_auth_user: השעיית אסימון הזדהות בדוא"ל של משתמש @@ -291,11 +294,13 @@ he: update_custom_emoji: עדכון סמלון מותאם אישית update_domain_block: עדכון חסימת שם מתחם update_status: סטטוס עדכון + update_user_role: עדכון תפקיד actions: approve_appeal_html: "%{name} אישר/ה ערעור על החלטת מנהלי הקהילה מ-%{target}" approve_user_html: "%{name} אישר/ה הרשמה מ-%{target}" assigned_to_self_report_html: '%{name} הקצה/תה דו"ח %{target} לעצמם' change_email_user_html: '%{name} שינה/תה את כתובת הדוא"ל של המשתמש %{target}' + change_role_user_html: "%{name} שינה את התפקיד של %{target}" confirm_user_html: '%{name} אישר/ה את כותבת הדו"אל של המשתמש %{target}' create_account_warning_html: "%{name} שלח/ה אזהרה ל %{target}" create_announcement_html: "%{name} יצר/ה הכרזה חדשה %{target}" @@ -305,9 +310,10 @@ he: create_email_domain_block_html: '%{name} חסם/ה את דומיין הדוא"ל %{target}' create_ip_block_html: "%{name} יצר/ה כלל עבור IP %{target}" create_unavailable_domain_html: "%{name} הפסיק/ה משלוח לדומיין %{target}" + create_user_role_html: "%{name} יצר את התפקיד של %{target}" demote_user_html: "%{name} הוריד/ה בדרגה את המשתמש %{target}" destroy_announcement_html: "%{name} מחק/ה את ההכרזה %{target}" - destroy_custom_emoji_html: "%{name} השמיד/ה את האמוג'י %{target}" + destroy_custom_emoji_html: "%{name} מחק אמוג'י של %{target}" destroy_domain_allow_html: "%{name} לא התיר/ה פדרציה עם הדומיין %{target}" destroy_domain_block_html: "%{name} הסיר/ה חסימה מהדומיין %{target}" destroy_email_domain_block_html: '%{name} הסיר/ה חסימה מדומיין הדוא"ל %{target}' @@ -315,6 +321,7 @@ he: destroy_ip_block_html: "%{name} מחק/ה את הכלל עבור IP %{target}" destroy_status_html: "%{name} הסיר/ה פוסט מאת %{target}" destroy_unavailable_domain_html: "%{name} התחיל/ה מחדש משלוח לדומיין %{target}" + destroy_user_role_html: "%{name} ביטל את התפקיד של %{target}" disable_2fa_user_html: "%{name} ביטל/ה את הדרישה לאימות דו-גורמי למשתמש %{target}" disable_custom_emoji_html: "%{name} השבית/ה את האמוג'י %{target}" disable_sign_in_token_auth_user_html: '%{name} השבית/ה את האימות בעזרת אסימון דוא"ל עבור %{target}' @@ -342,7 +349,7 @@ he: update_custom_emoji_html: "%{name} עדכן/ה אמוג'י %{target}" update_domain_block_html: "%{name} עדכן/ה חסימת דומיין עבור %{target}" update_status_html: "%{name} עדכן/ה פוסט של %{target}" - deleted_status: "(פוסט נמחק)" + update_user_role_html: "%{name} שינה את התפקיד של %{target}" empty: לא נמצאו יומנים. filter_by_action: סינון לפי פעולה filter_by_user: סינון לפי משתמש @@ -826,9 +833,6 @@ he: desc_html: הצגת קישורית לפיד הפומבי מדף הנחיתה והרשאה לממשק לגשת לפיד הפומבי ללא אימות title: הרשאת גישה בלתי מאומתת לפיד הפומבי title: הגדרות אתר - trendable_by_default: - desc_html: משפיע על האשתגיות שלא נאסרו קודם לכן - title: הרשאה להאשתגיות להופיע בנושאים החמים ללא אישור מוקדם trends: desc_html: הצגה פומבית של תוכן שנסקר בעבר ומופיע כרגע בנושאים החמים title: נושאים חמים @@ -1220,6 +1224,7 @@ he: edit: add_keyword: הוספת מילת מפתח keywords: מילות מפתח + statuses: פוסטים יחידים title: ערוך מסנן errors: deprecated_api_multiple_keywords: לא ניתן לשנות פרמטרים אלו מהיישומון הזה בגלל שהם חלים על יותר ממילת מפתח אחת. ניתן להשתמש ביישומון מעודכן יותר או בממשק הוובי. @@ -1239,6 +1244,13 @@ he: new: save: שמירת מסנן חדש title: הוספת מסנן חדש + statuses: + back_to_filter: חזרה לפילטר + batch: + remove: הסרה מפילטר + index: + hint: פילטר זה חל באופן של בחירת פוסטים בודדים ללא תלות בקריטריונים אחרים. תוכלו להוסיף עוד פוסטים לפילטר זה ממשק הווב. + title: פוסטים שסוננו footer: developers: מפתחות more: עוד… @@ -1249,6 +1261,7 @@ he: changes_saved_msg: השינויים נשמרו בהצלחה! copy: להעתיק delete: למחוק + deselect: בטל בחירה של הכל none: כלום order_by: מיין לפי save_changes: שמור שינויים @@ -1364,21 +1377,6 @@ he: subject: '%{name} שלח/ה דו"ח' sign_up: subject: "%{name} נרשמו" - digest: - action: הצגת כל ההתראות - body: להלן סיכום זריז של הדברים שקרו על מאז ביקורך האחרון ב-%{since} - mention: "%{name} פנה אליך ב:" - new_followers_summary: - many: חוץ מזה, נוספו לך %{count} עוקבים חדשים בזמן שלא היית! מדהים! - one: חוץ מזה, נוסף לך עוקב חדש בזמן שלא היית! הידד! - other: חוץ מזה, נוספו לך %{count} עוקבים חדשים בזמן שלא היית! מדהים! - two: חוץ מזה, נוספו לך %{count} עוקבים חדשים בזמן שלא היית! מדהים! - subject: - many: "%{count} התראות חדשות מאז ביקורך האחרון 🐘" - one: "התראה חדשה אחת מאז ביקורך האחרון 🐘" - other: "%{count} התראות חדשות מאז ביקורך האחרון 🐘" - two: "%{count} התראות חדשות מאז ביקורך האחרון 🐘" - title: בהעדרך... favourite: body: 'חצרוצך חובב על ידי %{name}:' subject: חצרוצך חובב על ידי %{name} diff --git a/config/locales/hr.yml b/config/locales/hr.yml index 3a2af1662..6f2d41399 100644 --- a/config/locales/hr.yml +++ b/config/locales/hr.yml @@ -71,7 +71,6 @@ hr: moderation: all: Sve action_logs: - deleted_status: "(izbrisani status)" empty: Nema pronađenih izvješća. filter_by_action: Filtriraj prema radnji filter_by_user: Filtriraj prema korisniku @@ -162,9 +161,6 @@ hr: one: 1 korištenje other: "%{count} korištenja" notification_mailer: - digest: - body: Ovo je kratak sažetak propuštenih poruka od Vašeg prošlog posjeta %{since} - mention: "%{name} Vas je spomenuo/la:" favourite: body: "%{name} je označio/la Vaš status favoritom:" subject: "%{name} je označio/la Vaš status favoritom" diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 9a601c4ca..53e514f15 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -237,17 +237,21 @@ hu: approve_user: Felhasználó Jóváhagyása assigned_to_self_report: Jelentés hozzárendelése change_email_user: Felhasználó e-mail címének módosítása + change_role_user: Felhasználó szerepkörének módosítása confirm_user: Felhasználó megerősítése create_account_warning: Figyelmeztetés létrehozása create_announcement: Közlemény létrehozása + create_canonical_email_block: E-mail tiltás létrehozása create_custom_emoji: Egyéni emodzsi létrehozása create_domain_allow: Domain engedélyezés létrehozása create_domain_block: Domain tiltás létrehozása create_email_domain_block: E-mail domain tiltás létrehozása create_ip_block: IP szabály létrehozása create_unavailable_domain: Elérhetetlen domain létrehozása + create_user_role: Szerepkör létrehozása demote_user: Felhasználó lefokozása destroy_announcement: Közlemény törlése + destroy_canonical_email_block: E-mail tiltás törlése destroy_custom_emoji: Egyéni emodzsi törlése destroy_domain_allow: Domain engedélyezés törlése destroy_domain_block: Domain tiltás törlése @@ -256,6 +260,7 @@ hu: destroy_ip_block: IP szabály törlése destroy_status: Bejegyzés törlése destroy_unavailable_domain: Elérhetetlen domain törlése + destroy_user_role: Szerepkör eltávolítása disable_2fa_user: Kétlépcsős hitelesítés letiltása disable_custom_emoji: Egyéni emodzsi letiltása disable_sign_in_token_auth_user: A felhasználó tokenes e-mail hitelesítésének letiltása @@ -282,31 +287,38 @@ hu: update_announcement: Közlemény frissítése update_custom_emoji: Egyéni emodzsi frissítése update_domain_block: Domain tiltás frissítése + update_ip_block: IP-szabály frissítése update_status: Bejegyzés frissítése + update_user_role: Szerepkör frissítése actions: approve_appeal_html: "%{name} jóváhagyott egy fellebbezést %{target} moderátori döntéséről" approve_user_html: "%{name} jóváhagyta %{target} regisztrációját" assigned_to_self_report_html: "%{name} a %{target} bejelentést magához rendelte" change_email_user_html: "%{name} megváltoztatta %{target} felhasználó e-mail címét" + change_role_user_html: "%{name} módosította %{target} szerepkörét" confirm_user_html: "%{name} megerősítette %{target} e-mail-címét" create_account_warning_html: "%{name} figyelmeztetést küldött %{target} számára" create_announcement_html: "%{name} új közleményt hozott létre: %{target}" + create_canonical_email_block_html: "%{name} letiltotta a(z) %{target} hashű e-mailt" create_custom_emoji_html: "%{name} új emodzsit töltött fel: %{target}" create_domain_allow_html: "%{name} engedélyezte a föderációt %{target} domainnel" create_domain_block_html: "%{name} letiltotta a %{target} domaint" create_email_domain_block_html: "%{name} letiltotta a %{target} e-mail domaint" - create_ip_block_html: "%{name} létrehozott egy szabályt a %{target} IP-vel kapcsolatban" + create_ip_block_html: "%{name} létrehozta a(z) %{target} IP-címre vonatkozó szabályt" create_unavailable_domain_html: "%{name} leállította a kézbesítést a %{target} domainbe" + create_user_role_html: "%{name} létrehozta a(z) %{target} szerepkört" demote_user_html: "%{name} lefokozta %{target} felhasználót" destroy_announcement_html: "%{name} törölte a %{target} közleményt" - destroy_custom_emoji_html: "%{name} törölte az emodzsit: %{target}" + destroy_canonical_email_block_html: "%{name} engedélyezte a(z) %{target} hashű e-mailt" + destroy_custom_emoji_html: "%{name} törölte a(z) %{target} emodzsit" destroy_domain_allow_html: "%{name} letiltotta a föderációt a %{target} domainnel" destroy_domain_block_html: "%{name} engedélyezte a %{target} domaint" destroy_email_domain_block_html: "%{name} engedélyezte a %{target} e-mail domaint" destroy_instance_html: "%{name} véglegesen törölte a(z) %{target} domaint" - destroy_ip_block_html: "%{name} törölt egy szabályt a %{target} IP-vel kapcsolatban" + destroy_ip_block_html: "%{name} törölte a(z) %{target} IP-címre vonatkozó szabályt" destroy_status_html: "%{name} eltávolította %{target} felhasználó bejegyzését" destroy_unavailable_domain_html: "%{name} újraindította a kézbesítést a %{target} domainbe" + destroy_user_role_html: "%{name} törölte a(z) %{target} szerepkört" disable_2fa_user_html: "%{name} kikapcsolta a kétlépcsős azonosítást %{target} felhasználó fiókján" disable_custom_emoji_html: "%{name} letiltotta az emodzsit: %{target}" disable_sign_in_token_auth_user_html: "%{name} letiltotta a tokenes e-mail hitelesítést %{target} felhasználóra" @@ -333,8 +345,9 @@ hu: update_announcement_html: "%{name} frissítette a %{target} közleményt" update_custom_emoji_html: "%{name} frissítette az emodzsit: %{target}" update_domain_block_html: "%{name} frissítette a %{target} domain tiltását" + update_ip_block_html: "%{name} módosította a(z) %{target} IP-címre vonatkozó szabályt" update_status_html: "%{name} frissítette %{target} felhasználó bejegyzését" - deleted_status: "(törölt bejegyzés)" + update_user_role_html: "%{name} módosította a(z) %{target} szerepkört" empty: Nem található napló. filter_by_action: Szűrés művelet alapján filter_by_user: Szűrés felhasználó alapján @@ -698,7 +711,7 @@ hu: manage_settings: Beállítások kezelése manage_settings_description: Lehetővé teszi, hogy a felhasználó megváltoztassa az oldal beállításait manage_taxonomies: Taxonómiák kezelése - manage_taxonomies_description: Lehetővé teszi, hogy a felhasználó átnézze a népszerű tartalmakat és frissítse a hashtag-ek beállításait + manage_taxonomies_description: Lehetővé teszi, hogy a felhasználó átnézze a népszerű tartalmakat és frissítse a hashtagek beállításait manage_user_access: Felhasználói hozzáférések kezelése manage_user_access_description: Lehetővé teszi, hogy a felhasználó letiltsa mások kétlépcsős azonosítását, megváltoztassa az email címüket, és alaphelyzetbe állítsa a jelszavukat manage_users: Felhasználók kezelése @@ -794,11 +807,11 @@ hu: title: A szerver bélyegképe timeline_preview: desc_html: Nyilvános idővonal megjelenítése a főoldalon - title: Idővonal előnézete + title: A nyilvános idővonal hitelesítés nélküli elérésének engedélyezése title: Webhely beállításai trendable_by_default: - desc_html: Azokra a hashtagekere hat, melyet előzőleg nem tiltottak le - title: Felkapott hashtagek engedélyezése előzetes ellenőrzés nélkül + desc_html: Az egyes felkapott tartalmak továbbra is explicit módon tilthatók + title: Trendek engedélyezése előzetes ellenőrzés nélkül trends: desc_html: Előzetesen engedélyezett és most felkapott hashtagek nyilvános megjelenítése title: Felkapott hashtagek @@ -1183,6 +1196,8 @@ hu: edit: add_keyword: Kulcsszó hozzáadása keywords: Kulcsszavak + statuses: Egyedi bejegyzések + statuses_hint_html: Ez a szűrő egyedi bejegyzések kiválasztására vonatkozik, függetlenül attól, hogy megfelelnek-e a lenti kulcsszavaknak. Engedélyezze vagy távolítsa el a bejegyzéseket a szűrőből. title: Szűrő szerkesztése errors: deprecated_api_multiple_keywords: Ezek a paraméterek nem módosíthatóak az alkalmazásból, mert több mint egy szűrőkulcsszóra is hatással vannak. Használd az alkalmazás vagy a webes felület újabb verzióját. @@ -1196,10 +1211,23 @@ hu: keywords: one: "%{count} kulcsszó" other: "%{count} kulcsszó" + statuses: + one: "%{count} bejegyzés" + other: "%{count} bejegyzés" + statuses_long: + one: "%{count} egyedi bejegyzés elrejtve" + other: "%{count} egyedi bejegyzés elrejtve" title: Szűrők new: save: Új szűrő mentése title: Új szűrő hozzáadása + statuses: + back_to_filter: Vissza a szűrőhöz + batch: + remove: Eltávolítás a szűrőből + index: + hint: Ez a szűrő egyedi bejegyzések kiválasztására vonatkozik a megadott kritériumoktól függetlenül. Újabb bejegyzéseket adhatsz hozzá ehhez a szűrőhöz a webes felületen keresztül. + title: Megszűrt bejegyzések footer: developers: Fejlesztőknek more: Többet… @@ -1207,12 +1235,22 @@ hu: trending_now: Most felkapott generic: all: Mind + all_items_on_page_selected_html: + one: "%{count} elem kiválasztva ezen az oldalon." + other: Mind a(z) %{count} elem kiválasztva ezen az oldalon. + all_matching_items_selected_html: + one: "%{count}, a keresésnek megfelelő elem kiválasztva." + other: Mind a(z) %{count}, a keresésnek megfelelő elem kiválasztva. changes_saved_msg: A változásokat elmentettük! copy: Másolás delete: Törlés + deselect: Összes kiválasztás megszüntetése none: Nincs order_by: Rendezés save_changes: Változások mentése + select_all_matching_items: + one: "%{count}, a keresésnek megfelelő elem kiválasztása." + other: Mind a(z) %{count}, a keresésnek megfelelő elem kiválasztása. today: ma validation_errors: one: Valami nincs rendjén! Tekintsd meg a hibát lent @@ -1321,17 +1359,6 @@ hu: subject: "%{name} bejelentést küldött" sign_up: subject: "%{name} feliratkozott" - digest: - action: Összes értesítés megtekintése - body: Itt a legutóbbi látogatásod (%{since}) óta írott üzenetek rövid összefoglalása - mention: "%{name} megemlített itt:" - new_followers_summary: - one: Sőt, egy új követőd is lett, amióta nem jártál itt. Hurrá! - other: Sőt, %{count} új követőd is lett, amióta nem jártál itt. Hihetetlen! - subject: - one: "1 új értesítés az utolsó látogatásod óta 🐘" - other: "%{count} új értesítés az utolsó látogatásod óta 🐘" - title: Amíg távol voltál… favourite: body: 'A bejegyzésedet kedvencnek jelölte %{name}:' subject: "%{name} kedvencnek jelölte a bejegyzésedet" diff --git a/config/locales/hy.yml b/config/locales/hy.yml index e04f2088c..61b08d6e0 100644 --- a/config/locales/hy.yml +++ b/config/locales/hy.yml @@ -245,7 +245,6 @@ hy: update_custom_emoji: Թարմացնել սեփական էմոջիները update_domain_block: Թարմացնել տիրոյթի արգելափակումը update_status: Թարմացնել գրառումը - deleted_status: "(ջնջուած գրառում)" empty: Ոչ մի գրառում չկայ։ filter_by_action: Զտել ըստ գործողութեան filter_by_user: Զտել ըստ օգտատիրոջ @@ -733,10 +732,6 @@ hy: admin: sign_up: subject: "%{name}-ը գրանցուած է" - digest: - action: Դիտել բոլոր ծանուցումները - mention: "%{name} նշել է քեզ՝" - title: Երբ բացակայ էիր... favourite: body: Քո գրառումը հաւանել է %{name}-ը։ subject: "%{name} հաւանեց գրառումդ" diff --git a/config/locales/id.yml b/config/locales/id.yml index f14f4cf9f..a66b62d52 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -284,7 +284,6 @@ id: create_unavailable_domain_html: "%{name} menghentikan pengiriman ke domain %{target}" demote_user_html: "%{name} menurunkan pengguna %{target}" destroy_announcement_html: "%{name} menghapus pengumuman %{target}" - destroy_custom_emoji_html: "%{name} menghapus emoji %{target}" destroy_domain_allow_html: "%{name} membatalkan izin penggabungan dengan domain %{target}" destroy_domain_block_html: "%{name} membuka blokir domain %{target}" destroy_email_domain_block_html: "%{name} membuka blokir domain email %{target}" @@ -319,7 +318,6 @@ id: update_custom_emoji_html: "%{name} memperbarui emoji %{target}" update_domain_block_html: "%{name} memperbarui blokir domain untuk %{target}" update_status_html: "%{name} memperbarui status %{target}" - deleted_status: "(status dihapus)" empty: Log tidak ditemukan. filter_by_action: Filter berdasarkan tindakan filter_by_user: Filter berdasarkan pengguna @@ -713,9 +711,6 @@ id: desc_html: Tampilkan tautan ke linimasa publik pada halaman landas dan izinkan API mengakses linimasa publik tanpa autentifikasi title: Izinkan akses linimasa publik tanpa autentifikasi title: Pengaturan situs - trendable_by_default: - desc_html: Memengaruhi tagar yang belum pernah diizinkan - title: Izinkan tagar masuk tren tanpa peninjauan trends: desc_html: Tampilkan secara publik tagar tertinjau yang kini sedang tren title: Tagar sedang tren @@ -1216,15 +1211,6 @@ id: admin: sign_up: subject: "%{name} mendaftar" - digest: - action: Lihat semua notifikasi - body: Ini adalah ringkasan singkat yang anda lewatkan pada sejak kunjungan terakhir anda pada %{since} - mention: "%{name} menyebut anda di:" - new_followers_summary: - other: Anda mendapatkan %{count} pengikut baru! Luar biasa! - subject: - other: "%{count} notifikasi baru sejak kunjungan Anda terakhir 🐘" - title: Saat Anda tidak muncul... favourite: body: 'Status anda disukai oleh %{name}:' subject: "%{name} menyukai status anda" diff --git a/config/locales/io.yml b/config/locales/io.yml index f88ab4164..56258e646 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -235,17 +235,21 @@ io: approve_user: Aprobez uzanto assigned_to_self_report: Taskigez raporto change_email_user: Chanjez retposto por uzanto + change_role_user: Chanjez rolo di uzanto confirm_user: Konfirmez uzanto create_account_warning: Kreez averto create_announcement: Kreez anunco + create_canonical_email_block: Kreez domenobstrukto create_custom_emoji: Kreez kustumizita emocimajo create_domain_allow: Kreez domenpermiso create_domain_block: Kreez domenobstrukto create_email_domain_block: Kreez retpostodomenobstrukto create_ip_block: Kreez IP-regulo create_unavailable_domain: Kreez nedisponebla domeno + create_user_role: Kreez rolo demote_user: Despromocez uzanto destroy_announcement: Efacez anunco + destroy_canonical_email_block: Efacez domenobstrukto destroy_custom_emoji: Efacez kustumizita emocimajo destroy_domain_allow: Efacez domenpermiso destroy_domain_block: Efacez domenobstrukto @@ -254,6 +258,7 @@ io: destroy_ip_block: Efacez IP-regulo destroy_status: Efacez posto destroy_unavailable_domain: Efacez nedisponebla domeno + destroy_user_role: Destruktez rolo disable_2fa_user: Desaktivigez 2FA disable_custom_emoji: Desaktivigez kustumizita emocimajo disable_sign_in_token_auth_user: Desaktivigez retpostofichyurizo por uzanto @@ -280,24 +285,30 @@ io: update_announcement: Novigez anunco update_custom_emoji: Novigez kustumizita emocimajo update_domain_block: Novigez domenobstrukto + update_ip_block: Kreez IP-regulo update_status: Novigez posto + update_user_role: Novigez rolo actions: approve_appeal_html: "%{name} aprobis jerdecidapelo de %{target}" approve_user_html: "%{name} aprobis registro de %{target}" assigned_to_self_report_html: "%{name} taskigis raporto %{target} a su" change_email_user_html: "%{name} chanjis retpostoadreso di uzanto %{target}" + change_role_user_html: "%{name} chanjis rolo di %{target}" confirm_user_html: "%{name} konfirmis retpostoadreso di uzanto %{target}" create_account_warning_html: "%{name} sendis averto a %{target}" create_announcement_html: "%{name} kreis nova anunco %{target}" + create_canonical_email_block_html: "%{name} obstruktis retpostodomeno %{target}" create_custom_emoji_html: "%{name} adchargis nova emocimajo %{target}" create_domain_allow_html: "%{name} permisis federato kun domeno %{target}" create_domain_block_html: "%{name} obstruktis domeno %{target}" create_email_domain_block_html: "%{name} obstruktis retpostodomeno %{target}" create_ip_block_html: "%{name} kreis regulo por IP %{target}" create_unavailable_domain_html: "%{name} cesis sendo a domeno %{target}" + create_user_role_html: "%{name} kreis rolo di %{target}" demote_user_html: "%{name} despromocis uzanto %{target}" destroy_announcement_html: "%{name} efacis anunco %{target}" - destroy_custom_emoji_html: "%{name} destruktis emocimajo %{target}" + destroy_canonical_email_block_html: "%{name} obstruktis retpostodomeno %{target}" + destroy_custom_emoji_html: "%{name} efacis emocimajo %{target}" destroy_domain_allow_html: "%{name} despermisis federato kun domeno %{target}" destroy_domain_block_html: "%{name} deobstruktis domeno %{target}" destroy_email_domain_block_html: "%{name} deobstruktis retpostodomeno %{target}" @@ -305,6 +316,7 @@ io: destroy_ip_block_html: "%{name} efacis regulo por IP %{target}" destroy_status_html: "%{name} efacis posto da %{target}" destroy_unavailable_domain_html: "%{name} durigis sendo a domeno %{target}" + destroy_user_role_html: "%{name} efacis rolo di %{target}" disable_2fa_user_html: "%{name} desaktivigis 2-faktorbezono por uzanto %{target}" disable_custom_emoji_html: "%{name} desaktivigis emocimajo %{target}" disable_sign_in_token_auth_user_html: "%{name} desaktivigis retpostofichyurizo por %{target}" @@ -331,8 +343,9 @@ io: update_announcement_html: "%{name} novigis anunco %{target}" update_custom_emoji_html: "%{name} novigis emocimajo %{target}" update_domain_block_html: "%{name} novigis domenobstrukto por %{target}" + update_ip_block_html: "%{name} kreis regulo por IP %{target}" update_status_html: "%{name} novigis posto da %{target}" - deleted_status: "(efacita posto)" + update_user_role_html: "%{name} chanjis rolo di %{target}" empty: Nula logi. filter_by_action: Filtrez segun ago filter_by_user: Filtrez segun uzanto @@ -795,7 +808,7 @@ io: title: Permisez neyurizita aceso a publika tempolineo title: Site Settings trendable_by_default: - desc_html: Efektigas hashtagi quo ante nepermisesis + desc_html: Partikulara trendoza kontenajo povas ankore videbla nepermisesar title: Permisez hashtagi divenies tendencoza sen bezonata kontrolo trends: desc_html: Publika montrez antee kontrolita kontenajo quo nun esas tendencoza @@ -1181,6 +1194,8 @@ io: edit: add_keyword: Insertez klefvorto keywords: Klefvorti + statuses: Individuala posti + statuses_hint_html: Ca filtrilo aplikesas a selektita posti ne segun kad oli parigesas kun basa klefvorti. Kontrolez o efacez posti de la filtrilo. title: Modifikez filtrilo errors: deprecated_api_multiple_keywords: Ca parametri ne povas chanjesar per ca softwaro pro quo oli efektigas plu kam 1 filtrilklefvorto. Uzez plu recenta softwaro o interretintervizajo. @@ -1194,10 +1209,23 @@ io: keywords: one: "%{count} klefvorto" other: "%{count} klefvorti" + statuses: + one: "%{count} posto" + other: "%{count} posti" + statuses_long: + one: "%{count} posto celesas" + other: "%{count} posti celesas" title: Filtrili new: save: Salvez nova filtrilo title: Insertez nova filtrilo + statuses: + back_to_filter: Retrovenez a filtrilo + batch: + remove: Efacez de filtrilo + index: + hint: Ca filtrilo aplikesas a selektita posti ne segun altra kriterio. Vu povas pozar plu multa posti a ca filtrilo de retintervizajo. + title: Filtrita posti footer: developers: Developeri more: Pluse… @@ -1205,12 +1233,22 @@ io: trending_now: Nuna tendenco generic: all: Omna + all_items_on_page_selected_html: + one: "%{count} kozo sur ca sito selektesas." + other: Omna %{count} kozi sur ca sito selektesas. + all_matching_items_selected_html: + one: "%{count} kozo quo parigesas kun vua trovato selektesas." + other: Omna %{count} kozi quo parigesas kun vua trovato selektesas. changes_saved_msg: Chanji senprobleme konservita! copy: Kopiez delete: Efacez + deselect: Deselektez omno none: Nulo order_by: Asortez quale save_changes: Konservar la chanji + select_all_matching_items: + one: Selektez %{count} kozo quo parigesas kun vua trovato. + other: Selektez omna %{count} kozi quo parigesas kun vua trovato. today: hodie validation_errors: one: Ulo ne eventis senprobleme! Voluntez konsultar la suba eror-raporto @@ -1319,17 +1357,6 @@ io: subject: "%{name} sendis raporto" sign_up: subject: "%{name} registris" - digest: - action: Videz omna avizi - body: Yen mikra rezumo di to, depos ke tu laste vizitis en %{since} - mention: "%{name} mencionis tu en:" - new_followers_summary: - one: Tu obtenis nova sequanto! Yey! - other: Tu obtenis %{count} nova sequanti! Astonive! - subject: - one: "1 nova avizo de pos vua antea vizito 🐘" - other: "%{count} nova avizi de pos vua antea vizito 🐘" - title: Dum vua neprezenteso... favourite: body: "%{name} favoris tua mesajo:" subject: "%{name} favoris tua mesajo" diff --git a/config/locales/is.yml b/config/locales/is.yml index db856011b..841645c91 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -235,17 +235,21 @@ is: approve_user: Samþykkja notanda assigned_to_self_report: Úthluta kæru change_email_user: Skipta um tölvupóstfang notanda + change_role_user: Breyta hlutverki notanda confirm_user: Staðfesta notanda create_account_warning: Útbúa aðvörun create_announcement: Búa til tilkynningu + create_canonical_email_block: Búa til útilokunarblokk tölvupósts create_custom_emoji: Búa til sérsniðið tjáningartákn create_domain_allow: Búa til lén leyft create_domain_block: Búa til útilokun léns create_email_domain_block: Búa til útilokun tölvupóstléns create_ip_block: Búa til IP-reglu create_unavailable_domain: Útbúa lén sem ekki er tiltækt + create_user_role: Útbúa hlutverk demote_user: Lækka notanda í tign destroy_announcement: Eyða tilkynningu + destroy_canonical_email_block: Eyða útilokunarblokk tölvupósts destroy_custom_emoji: Eyða sérsniðnu tjáningartákni destroy_domain_allow: Eyða léni leyft destroy_domain_block: Eyða útilokun léns @@ -254,6 +258,7 @@ is: destroy_ip_block: Eyða IP-reglu destroy_status: Eyða færslu destroy_unavailable_domain: Eyða léni sem ekki er tiltækt + destroy_user_role: Eyða hlutverki disable_2fa_user: Gera tveggja-þátta auðkenningu óvirka disable_custom_emoji: Gera sérsniðið tjáningartákn óvirkt disable_sign_in_token_auth_user: Gera óvirka auðkenningu með teikni í tölvupósti fyrir notandann @@ -280,24 +285,30 @@ is: update_announcement: Uppfæra tilkynningu update_custom_emoji: Uppfæra sérsniðið tjáningartákn update_domain_block: Uppfæra útilokun léns + update_ip_block: Uppfæra reglu IP-vistfangs update_status: Uppfæra færslu + update_user_role: Uppfæra hlutverk actions: approve_appeal_html: "%{name} samþykkti áfrýjun á ákvörðun umsjónarmanns frá %{target}" approve_user_html: "%{name} samþykkti nýskráningu frá %{target}" assigned_to_self_report_html: "%{name} úthlutaði kæru %{target} til sín" change_email_user_html: "%{name} breytti tölvupóstfangi fyrir notandann %{target}" + change_role_user_html: "%{name} breytti hlutverki %{target}" confirm_user_html: "%{name} staðfesti tölvupóstfang fyrir notandann %{target}" create_account_warning_html: "%{name} sendi aðvörun til %{target}" create_announcement_html: "%{name} útbjó nýja tilkynningu %{target}" + create_canonical_email_block_html: "%{name} útilokaði tölvupóst með tætigildið %{target}" create_custom_emoji_html: "%{name} sendi inn nýtt tjáningartákn %{target}" create_domain_allow_html: "%{name} leyfði skýjasamband með léninu %{target}" create_domain_block_html: "%{name} útilokaði lénið %{target}" create_email_domain_block_html: "%{name} útilokaði póstlénið %{target}" create_ip_block_html: "%{name} útbjó reglu fyrir IP-vistfangið %{target}" create_unavailable_domain_html: "%{name} stöðvaði afhendingu til lénsins %{target}" + create_user_role_html: "%{name} útbjó %{target} hlutverk" demote_user_html: "%{name} lækkaði notandann %{target} í tign" destroy_announcement_html: "%{name} eyddi tilkynninguni %{target}" - destroy_custom_emoji_html: "%{name} henti út tjáningartákninu %{target}" + destroy_canonical_email_block_html: "%{name} tók af útilokun á tölvupósti með tætigildið %{target}" + destroy_custom_emoji_html: "%{name} eyddi emoji-tákni %{target}" destroy_domain_allow_html: "%{name} bannaði skýjasamband með léninu %{target}" destroy_domain_block_html: "%{name} aflétti útilokun af léninu %{target}" destroy_email_domain_block_html: "%{name} aflétti útilokun af póstléninu %{target}" @@ -305,6 +316,7 @@ is: destroy_ip_block_html: "%{name} eyddi reglu fyrir IP-vistfangið %{target}" destroy_status_html: "%{name} fjarlægði færslu frá %{target}" destroy_unavailable_domain_html: "%{name} hóf aftur afhendingu til lénsins %{target}" + destroy_user_role_html: "%{name} eyddi hlutverki %{target}" disable_2fa_user_html: "%{name} gerði kröfu um tveggja-þátta innskráningu óvirka fyrir notandann %{target}" disable_custom_emoji_html: "%{name} gerði tjáningartáknið %{target} óvirkt" disable_sign_in_token_auth_user_html: "%{name} gerði óvirka auðkenningu með teikni í tölvupósti fyrir %{target}" @@ -331,8 +343,9 @@ is: update_announcement_html: "%{name} uppfærði tilkynningu %{target}" update_custom_emoji_html: "%{name} uppfærði tjáningartáknið %{target}" update_domain_block_html: "%{name} uppfærði útilokun lénsins %{target}" + update_ip_block_html: "%{name} breytti reglu fyrir IP-vistfangið %{target}" update_status_html: "%{name} uppfærði færslu frá %{target}" - deleted_status: "(eydd færsla)" + update_user_role_html: "%{name} breytti hlutverki %{target}" empty: Engar atvikaskrár fundust. filter_by_action: Sía eftir aðgerð filter_by_user: Sía eftir notanda @@ -795,11 +808,11 @@ is: title: Leyfa óauðkenndan aðgang að opinberri tímalínu title: Stillingar vefsvæðis trendable_by_default: - desc_html: Hefur áhrif á myllumerki sem ekki hafa áður verið gerð óleyfileg - title: Leyfa myllumerkjum að fara í umræðuna án þess að þau séu fyrst yfirfarin + desc_html: Sérstakt vinsælt efni er eftir sem áður hægt að banna sérstaklega + title: Leyfa vinsælt efni án undanfarandi yfirferðar trends: desc_html: Birta opinberlega þau áður yfirförnu myllumerki sem eru núna í umræðunni - title: Myllumerki í umræðunni + title: Vinsælt site_uploads: delete: Eyða innsendri skrá destroyed_msg: Það tókst að eyða innsendingu á vefsvæði! @@ -1182,7 +1195,7 @@ is: add_keyword: Bæta við stikkorði keywords: Stikkorð statuses: Einstakar færslur - statuses_hint_html: Þessi sía virkar til að velja stakar færslur burtséð frá því hvort þær samsvari stikkorðunum hér fyrir neðan. Þú getur yfirfarið þessar færslur og fjarlægt þær úr síunni með því að smella hér. + statuses_hint_html: Þessi sía virkar til að velja stakar færslur án tillits til annarra skilyrða. Yfirfarðu eða fjarlægðu færslur úr síunni. title: Breyta síu errors: deprecated_api_multiple_keywords: Þessum viðföngum er ekki hægt að breyta úr þessu forriti, þar sem þau eiga við fleiri en eitt stikkorð síu. Notaðu nýrra forrit eða farðu í vefviðmótið. @@ -1220,12 +1233,22 @@ is: trending_now: Í umræðunni núna generic: all: Allt + all_items_on_page_selected_html: + one: "%{count} atriði á þessari síðu er valið." + other: Öll %{count} atriðin á þessari síðu eru valin. + all_matching_items_selected_html: + one: "%{count} atriði sem samsvarar leitinni þinni er valið." + other: Öll %{count} atriðin sem samsvara leitinni þinni eru valin. changes_saved_msg: Það tókst að vista breytingarnar! copy: Afrita delete: Eyða + deselect: Afvelja allt none: Ekkert order_by: Raða eftir save_changes: Vista breytingar + select_all_matching_items: + one: Veldu %{count} atriði sem samsvarar leitinni þinni. + other: Veldu öll %{count} atriðin sem samsvara leitinni þinni. today: í dag validation_errors: one: Ennþá er ekk alvegi allt í lagi! Skoðaðu vel villuna hér fyrir neðan @@ -1334,17 +1357,6 @@ is: subject: "%{name} sendi inn kæru" sign_up: subject: "%{name} nýskráði sig" - digest: - action: Skoða allar tilkynningar - body: Hér er stutt yfirlit yfir þau skilaboð sem þú gætir hafa misst af síðan þú leist inn síðast %{since} - mention: "%{name} minntist á þig í:" - new_followers_summary: - one: Að auki, þú hefur fengið einn nýjan fylgjanda á meðan þú varst fjarverandi! Húh! - other: Að auki, þú hefur fengið %{count} nýja fylgjendur á meðan þú varst fjarverandi! Frábært! - subject: - one: "1 ný tilkynning síðan þú leist inn síðast 🐘" - other: "%{count} nýjar tilkynningar síðan þú leist inn síðast 🐘" - title: Á meðan þú varst fjarverandi... favourite: body: 'Færslan þín var sett í eftirlæti af %{name}:' subject: "%{name} setti færsluna þína í eftirlæti" diff --git a/config/locales/it.yml b/config/locales/it.yml index f269cc542..ff3120f34 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -235,17 +235,21 @@ it: approve_user: Approva Utente assigned_to_self_report: Assegna report change_email_user: Cambia l'e-mail per l'utente + change_role_user: Cambia il Ruolo dell'Utente confirm_user: Conferma utente create_account_warning: Crea avviso create_announcement: Crea un annuncio + create_canonical_email_block: Crea Blocco E-mail create_custom_emoji: Crea emoji personalizzata create_domain_allow: Crea permesso di dominio create_domain_block: Crea blocco di dominio create_email_domain_block: Crea blocco dominio e-mail create_ip_block: Crea regola IP create_unavailable_domain: Crea dominio non disponibile + create_user_role: Crea Ruolo demote_user: Degrada l'utente destroy_announcement: Cancella annuncio + destroy_canonical_email_block: Elimina Blocco E-mail destroy_custom_emoji: Cancella emoji personalizzata destroy_domain_allow: Cancella permesso di dominio destroy_domain_block: Cancella blocco di dominio @@ -254,6 +258,7 @@ it: destroy_ip_block: Elimina regola IP destroy_status: Cancella stato destroy_unavailable_domain: Elimina dominio non disponibile + destroy_user_role: Distruggi Ruolo disable_2fa_user: Disabilita l'autenticazione a due fattori disable_custom_emoji: Disabilita emoji personalizzata disable_sign_in_token_auth_user: Disabilita autenticazione con codice via email per l'utente @@ -280,24 +285,30 @@ it: update_announcement: Aggiorna annuncio update_custom_emoji: Aggiorna emoji personalizzata update_domain_block: Aggiorna blocco di dominio + update_ip_block: Aggiorna regola IP update_status: Aggiorna stato + update_user_role: Aggiorna Ruolo actions: approve_appeal_html: "%{name} ha approvato il ricorso contro la decisione di moderazione da %{target}" approve_user_html: "%{name} ha approvato la registrazione da %{target}" assigned_to_self_report_html: "%{name} ha assegnato il rapporto %{target} a se stesso" change_email_user_html: "%{name} ha cambiato l'indirizzo e-mail dell'utente %{target}" + change_role_user_html: "%{name} ha cambiato il ruolo di %{target}" confirm_user_html: "%{name} ha confermato l'indirizzo e-mail dell'utente %{target}" create_account_warning_html: "%{name} ha inviato un avviso a %{target}" create_announcement_html: "%{name} ha creato un nuovo annuncio %{target}" + create_canonical_email_block_html: "%{name} ha bloccato l'e-mail con l'hash %{target}" create_custom_emoji_html: "%{name} ha caricato una nuova emoji %{target}" create_domain_allow_html: "%{name} ha consentito alla federazione col dominio %{target}" create_domain_block_html: "%{name} ha bloccato dominio %{target}" create_email_domain_block_html: "%{name} ha bloccato dominio e-mail %{target}" create_ip_block_html: "%{name} ha creato una regola per l'IP %{target}" create_unavailable_domain_html: "%{name} ha interrotto la consegna al dominio %{target}" + create_user_role_html: "%{name} ha creato il ruolo %{target}" demote_user_html: "%{name} ha retrocesso l'utente %{target}" destroy_announcement_html: "%{name} ha eliminato l'annuncio %{target}" - destroy_custom_emoji_html: "%{name} ha eliminato emoji %{target}" + destroy_canonical_email_block_html: "%{name} ha sbloccato l'email con l'hash %{target}" + destroy_custom_emoji_html: "%{name} ha eliminato l'emoji %{target}" destroy_domain_allow_html: "%{name} ha negato la federazione al dominio %{target}" destroy_domain_block_html: "%{name} ha sbloccato dominio %{target}" destroy_email_domain_block_html: "%{name} ha sbloccato il dominio e-mail %{target}" @@ -305,6 +316,7 @@ it: destroy_ip_block_html: "%{name} ha eliminato la regola per l'IP %{target}" destroy_status_html: "%{name} ha eliminato lo status di %{target}" destroy_unavailable_domain_html: "%{name} ha ripreso la consegna al dominio %{target}" + destroy_user_role_html: "%{name} ha eliminato il ruolo %{target}" disable_2fa_user_html: "%{name} ha disabilitato l'autenticazione a due fattori per l'utente %{target}" disable_custom_emoji_html: "%{name} ha disabilitato emoji %{target}" disable_sign_in_token_auth_user_html: "%{name} ha disabilitato l'autenticazione con codice via email per %{target}" @@ -331,8 +343,9 @@ it: update_announcement_html: "%{name} ha aggiornato l'annuncio %{target}" update_custom_emoji_html: "%{name} ha aggiornato emoji %{target}" update_domain_block_html: "%{name} ha aggiornato il blocco dominio per %{target}" + update_ip_block_html: "%{name} ha cambiato la regola per l'IP %{target}" update_status_html: "%{name} ha aggiornato lo status di %{target}" - deleted_status: "(stato cancellato)" + update_user_role_html: "%{name} ha modificato il ruolo %{target}" empty: Nessun log trovato. filter_by_action: Filtra per azione filter_by_user: Filtra per utente @@ -795,8 +808,8 @@ it: title: Anteprima timeline title: Impostazioni sito trendable_by_default: - desc_html: Interessa gli hashtag che non sono stati precedentemente disattivati - title: Permetti agli hashtag di comparire nei trend senza prima controllarli + desc_html: I contenuti di tendenza specifici possono ancora essere esplicitamente vietati + title: Consenti tendenze senza controllo preliminare trends: desc_html: Visualizza pubblicamente gli hashtag precedentemente esaminati che sono attualmente in tendenza title: Hashtag di tendenza @@ -1183,6 +1196,8 @@ it: edit: add_keyword: Aggiungi parola chiave keywords: Parole chiave + statuses: Post singoli + statuses_hint_html: Questo filtro si applica a singoli post indipendentemente dal fatto che corrispondano alle parole chiave qui sotto. Rivedi o rimuovi i post dal filtro. title: Modifica filtro errors: deprecated_api_multiple_keywords: Questi parametri non possono essere modificati da questa applicazione perché si applicano a più di una parola chiave che fa da filtro. Utilizzare un'applicazione più recente o l'interfaccia web. @@ -1196,10 +1211,23 @@ it: keywords: one: "%{count} parola chiave" other: "%{count} parole chiave" + statuses: + one: "%{count} post" + other: "%{count} post" + statuses_long: + one: "%{count} singolo post nascosto" + other: "%{count} singoli post nascosti" title: Filtri new: save: Salva nuovo filtro title: Aggiungi filtro + statuses: + back_to_filter: Torna al filtro + batch: + remove: Togli dal filtro + index: + hint: Questo filtro si applica a singoli post indipendentemente da altri criteri. Puoi aggiungere più post a questo filtro dall'interfaccia Web. + title: Post filtrati footer: developers: Sviluppatori more: Altro… @@ -1207,12 +1235,22 @@ it: trending_now: Di tendenza ora generic: all: Tutto + all_items_on_page_selected_html: + one: "%{count} elemento su questa pagina è selezionato." + other: Tutti i %{count} elementi su questa pagina sono selezionati. + all_matching_items_selected_html: + one: "%{count} elemento corrispondente alla tua ricerca è selezionato." + other: Tutti i %{count} elementi corrispondenti alla tua ricerca sono selezionati. changes_saved_msg: Modifiche effettuate con successo! copy: Copia delete: Cancella + deselect: Deseleziona tutto none: Nessuno order_by: Ordina per save_changes: Salva modifiche + select_all_matching_items: + one: Seleziona %{count} elemento corrispondente alla tua ricerca. + other: Seleziona tutti gli elementi %{count} corrispondenti alla tua ricerca. today: oggi validation_errors: one: Qualcosa ancora non va bene! Per favore, controlla l'errore qui sotto @@ -1321,17 +1359,6 @@ it: subject: "%{name} ha inviato una segnalazione" sign_up: subject: "%{name} si è iscritto" - digest: - action: Vedi tutte le notifiche - body: Ecco un breve riassunto di quello che ti sei perso dalla tua ultima visita del %{since} - mention: "%{name} ti ha menzionato:" - new_followers_summary: - one: E inoltre hai ricevuto un nuovo seguace mentre eri assente! Urrà! - other: Inoltre, hai acquisito %{count} nuovi seguaci mentre eri assente! Incredibile! - subject: - one: "1 nuova notifica dalla tua ultima visita 🐘" - other: "%{count} nuove notifiche dalla tua ultima visita 🐘" - title: In tua assenza… favourite: body: 'Il tuo status è stato apprezzato da %{name}:' subject: "%{name} ha apprezzato il tuo status" diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 5dccf1a43..133835b58 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -284,7 +284,6 @@ ja: create_unavailable_domain_html: "%{name}がドメイン %{target}への配送を停止しました" demote_user_html: "%{name}さんが%{target}さんを降格しました" destroy_announcement_html: "%{name}さんがお知らせ %{target}を削除しました" - destroy_custom_emoji_html: "%{name}さんがカスタム絵文字 %{target}を削除しました" destroy_domain_allow_html: "%{name}さんが%{target}の連合許可を外しました" destroy_domain_block_html: "%{name}さんがドメイン %{target}のブロックを外しました" destroy_email_domain_block_html: "%{name}さんが%{target}をメールドメインブロックから外しました" @@ -319,7 +318,6 @@ ja: update_custom_emoji_html: "%{name}さんがカスタム絵文字 %{target}を更新しました" update_domain_block_html: "%{name}さんが%{target}のドメインブロックを更新しました" update_status_html: "%{name}さんが%{target}さんの投稿を更新しました" - deleted_status: "(削除済)" empty: ログが見つかりませんでした filter_by_action: アクションでフィルター filter_by_user: ユーザーでフィルター @@ -761,9 +759,6 @@ ja: desc_html: ランディングページに公開タイムラインへのリンクを表示し、認証なしでの公開タイムラインへのAPIアクセスを許可します title: 公開タイムラインへの未認証のアクセスを許可する title: サイト設定 - trendable_by_default: - desc_html: 表示を拒否していないハッシュタグに影響します - title: 審査前のハッシュタグのトレンドへの表示を許可する trends: desc_html: 現在トレンドになっている承認済みのハッシュタグを公開します title: トレンドタグを有効にする @@ -1264,15 +1259,6 @@ ja: subject: "%{name} がレポートを送信しました" sign_up: subject: "%{name}さんがサインアップしました" - digest: - action: 全ての通知を表示 - body: '最後のログイン(%{since})からの出来事:' - mention: "%{name}さんがあなたに返信しました:" - new_followers_summary: - other: また、離れている間に%{count}人の新たなフォロワーを獲得しました! - subject: - other: "前回の訪問から%{count}件の新しい通知 🐘" - title: 不在の間に… favourite: body: "%{name}さんにお気に入り登録された、あなたの投稿があります:" subject: "%{name}さんにお気に入りに登録されました" diff --git a/config/locales/ka.yml b/config/locales/ka.yml index 9948ae493..288e50edd 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -115,7 +115,6 @@ ka: username: მომხმარებლის სახელი web: ვები action_logs: - deleted_status: "(გაუქმებული სტატუსი)" title: აუდიტის ლოგი custom_emojis: by_domain: დომენი @@ -438,14 +437,6 @@ ka: moderation: title: მოდერაცია notification_mailer: - digest: - action: ყველა შეტყობინების ჩვენება - body: 'აქ მოკლე შინაარსია წერილების, რომლებიც გამოგეპარათ წინა სტუმრობის შემდეგ: %{since}' - mention: "%{name}-მა დაგასახელათ:" - new_followers_summary: - one: ასევე, არყოფნისას შეგეძინათ ერთი ახალი მიმდევარი! იეი! - other: ასევე, არყოფნისას შეგეძინათ %{count} ახალი მიმდევარი! შესანიშნავია! - title: თქვენს არყოფნაში... favourite: body: 'თქვენი სტატუსი ფავორიტი გახადა %{name}-მა:' subject: "%{name}-მა თქვენი სტატუსი გახადა ფავორიტი" diff --git a/config/locales/kab.yml b/config/locales/kab.yml index 4fac9a796..8096b95f4 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -223,7 +223,6 @@ kab: create_unavailable_domain_html: "%{name} iseḥbes asiweḍ ɣer taɣult %{target}" demote_user_html: "%{name} iṣubb-d deg usellun aseqdac %{target}" destroy_announcement_html: "%{name} yekkes taselɣut %{target}" - destroy_custom_emoji_html: "%{name} ihudd imuji %{target}" destroy_domain_allow_html: "%{name} yekkes taɣult %{target} seg tebdart tamellalt" destroy_domain_block_html: "%{name} yekkes aseḥbes n taɣult %{target}" destroy_email_domain_block_html: "%{name} yekkes asewḥel i taɣult n imayl %{target}" @@ -247,7 +246,6 @@ kab: update_custom_emoji_html: "%{name} ileqqem imuji %{target}" update_domain_block_html: "%{name} ileqqem iḥder n taɣult i %{target}" update_status_html: "%{name} ileqqem tasufeɣt n %{target}" - deleted_status: "(tasuffeɣt tettwakkes)" empty: Ulac iɣmisen i yellan. filter_by_action: Fren s tigawt filter_by_user: Sizdeg s useqdac @@ -632,9 +630,6 @@ kab: incoming_migrations: Tusiḍ-d seg umiḍan nniḍen proceed_with_move: Awid imeḍfaṛen-ik notification_mailer: - digest: - action: Wali akk tilγa - mention: 'Yuder-ik-id %{name} deg:' favourite: subject: "%{name} yesmenyaf addad-ik·im" follow: diff --git a/config/locales/kk.yml b/config/locales/kk.yml index b12f79163..b1c92f7eb 100644 --- a/config/locales/kk.yml +++ b/config/locales/kk.yml @@ -175,7 +175,6 @@ kk: web: Веб whitelisted: Рұқсат тізімі action_logs: - deleted_status: "(өшірілген жазба)" title: Аудит логы announcements: destroyed_msg: Анонс сәтті өшірілді! @@ -405,9 +404,6 @@ kk: desc_html: Display public timeline on лендинг пейдж title: Таймлайн превьюі title: Сайт баптаулары - trendable_by_default: - desc_html: Бұрын тыйым салынбаған хэштегтерге әсер етеді - title: Хэштегтерге алдын-ала шолусыз тренд беруге рұқсат етіңіз trends: desc_html: Бұрын қарастырылған хэштегтерді қазіргі уақытта трендте көпшілікке көрсету title: Тренд хештегтер @@ -685,14 +681,6 @@ kk: moderation: title: Модерация notification_mailer: - digest: - action: Барлық ескертпелер - body: Міне, соңғы кірген уақыттан кейін келген хаттардың қысқаша мазмұны %{since} - mention: "%{name} сізді атап өтіпті:" - new_followers_summary: - one: Сондай-ақ, сіз бір жаңа оқырман таптыңыз! Алақай! - other: Сондай-ақ, сіз %{count} жаңа оқырман таптыңыз! Керемет! - title: Сіз жоқ кезде... favourite: body: 'Жазбаңызды ұнатып, таңдаулыға қосты %{name}:' subject: "%{name} жазбаңызды таңдаулыға қосты" diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 4788365c2..102d85393 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -230,17 +230,21 @@ ko: approve_user: 사용자 승인 assigned_to_self_report: 신고 맡기 change_email_user: 사용자의 이메일 변경 + change_role_user: 사용자 역할 변경 confirm_user: 사용자 확인 create_account_warning: 경고 생성 create_announcement: 공지사항 생성 + create_canonical_email_block: 이메일 차단 생성 create_custom_emoji: 커스텀 에모지 생성 create_domain_allow: 도메인 허용 생성 create_domain_block: 도메인 차단 추가 create_email_domain_block: 이메일 도메인 차단 생성 create_ip_block: IP 규칙 만들기 create_unavailable_domain: 사용 불가능한 도메인 생성 + create_user_role: 역할 생성 demote_user: 사용자 강등 destroy_announcement: 공지사항 삭제 + destroy_canonical_email_block: 이메일 차단 삭제 destroy_custom_emoji: 커스텀 에모지 삭제 destroy_domain_allow: 도메인 허용 삭제 destroy_domain_block: 도메인 차단 삭제 @@ -249,6 +253,7 @@ ko: destroy_ip_block: IP 규칙 삭제 destroy_status: 게시물 삭제 destroy_unavailable_domain: 사용 불가능한 도메인 제거 + destroy_user_role: 역할 삭제 disable_2fa_user: 2단계 인증 비활성화 disable_custom_emoji: 커스텀 에모지 비활성화 disable_sign_in_token_auth_user: 사용자에 대한 이메일 토큰 인증 비활성화 @@ -275,24 +280,30 @@ ko: update_announcement: 공지사항 업데이트 update_custom_emoji: 커스텀 에모지 업데이트 update_domain_block: 도메인 차단 갱신 + update_ip_block: IP 규칙 수정 update_status: 게시물 게시 + update_user_role: 역할 수정 actions: approve_appeal_html: "%{name} 님이 %{target}의 중재 결정에 대한 이의제기를 승인했습니다" approve_user_html: "%{name} 님이 %{target}의 가입을 승인했습니다" assigned_to_self_report_html: "%{name} 님이 신고 %{target}을 자신에게 할당했습니다" change_email_user_html: "%{name} 님이 사용자 %{target}의 이메일 주소를 변경했습니다" + change_role_user_html: "%{name} 님이 %{target} 님의 역할을 수정했습니다" confirm_user_html: "%{name} 님이 사용자 %{target}의 이메일 주소를 승인했습니다" create_account_warning_html: "%{name} 님이 %{target}에게 경고를 보냈습니다" create_announcement_html: "%{name} 님이 새 공지 %{target}을 만들었습니다" + create_canonical_email_block_html: "%{name} 님이 %{target} 해시를 가진 이메일을 차단했습니다" create_custom_emoji_html: "%{name} 님이 새로운 에모지 %{target}를 업로드 했습니다" create_domain_allow_html: "%{name} 님이 %{target} 도메인을 허용리스트에 넣었습니다" create_domain_block_html: "%{name} 님이 도메인 %{target}를 차단했습니다" create_email_domain_block_html: "%{name} 님이 이메일 도메인 %{target}를 차단했습니다" create_ip_block_html: "%{name} 님이 IP 규칙 %{target}을 만들었습니다" create_unavailable_domain_html: "%{name} 님이 도메인 %{target}에 대한 전달을 중지했습니다" + create_user_role_html: "%{name} 님이 %{target} 역할을 생성했습니다" demote_user_html: "%{name} 님이 사용자 %{target} 님을 강등했습니다" destroy_announcement_html: "%{name} 님이 공지 %{target}을 삭제했습니다" - destroy_custom_emoji_html: "%{name} 님이 %{target} 에모지를 삭제했습니다" + destroy_canonical_email_block_html: "%{name} 님이 %{target} 해시를 가진 이메일을 차단 해제했습니다" + destroy_custom_emoji_html: "%{name} 님이 에모지 %{target}를 삭제했습니다" destroy_domain_allow_html: "%{name} 님이 %{target} 도메인과의 연합을 금지했습니다" destroy_domain_block_html: "%{name} 님이 도메인 %{target}의 차단을 해제했습니다" destroy_email_domain_block_html: "%{name} 님이 이메일 도메인 %{target}을 차단 해제하였습니다" @@ -300,6 +311,7 @@ ko: destroy_ip_block_html: "%{name} 님이 IP 규칙 %{target}을 삭제하였습니다" destroy_status_html: "%{name} 님이 %{target}의 게시물을 삭제했습니다" destroy_unavailable_domain_html: "%{name} 님이 도메인 %{target}에 대한 전달을 재개" + destroy_user_role_html: "%{name} 님이 %{target} 역할을 삭제했습니다" disable_2fa_user_html: "%{name} 님이 사용자 %{target}의 2FA를 비활성화 했습니다" disable_custom_emoji_html: "%{name} 님이 에모지 %{target}를 비활성화 했습니다" disable_sign_in_token_auth_user_html: "%{name} 님이 %{target} 님의 이메일 토큰 인증을 비활성화 했습니다" @@ -326,8 +338,9 @@ ko: update_announcement_html: "%{name} 님이 공지사항 %{target}을 갱신했습니다" update_custom_emoji_html: "%{name} 님이 에모지 %{target}를 업데이트 했습니다" update_domain_block_html: "%{name} 님이 %{target}에 대한 도메인 차단을 갱신했습니다" + update_ip_block_html: "%{name} 님이 IP 규칙 %{target}을 수정했습니다" update_status_html: "%{name} 님이 %{target}의 게시물을 업데이트 했습니다" - deleted_status: "(삭제된 게시물)" + update_user_role_html: "%{name} 님이 %{target} 역할을 수정했습니다" empty: 로그를 찾을 수 없습니다 filter_by_action: 행동으로 거르기 filter_by_user: 사용자로 거르기 @@ -781,8 +794,8 @@ ko: title: 타임라인 프리뷰 title: 사이트 설정 trendable_by_default: - desc_html: 이전에 거부되지 않은 해시태그들에 영향을 미칩니다 - title: 해시태그가 사전 리뷰 없이 트렌드에 올라갈 수 있도록 허용 + desc_html: 특정 트렌드를 허용시키지 않는 것은 여전히 가능합니다 + title: 사전 리뷰 없이 트렌드에 오르는 것을 허용 trends: desc_html: 리뷰를 거친 해시태그를 유행하는 해시태그에 공개적으로 보여줍니다 title: 유행하는 해시태그 @@ -1164,7 +1177,7 @@ ko: add_keyword: 키워드 추가 keywords: 키워드 statuses: 개별 게시물 - statuses_hint_html: 이 필터는 아래 키워드들의 매치 여부와는 관계 없이 선택된 개별적인 게시물들에 적용됩니다. 다음 게시물들을 검토하고 여기를 클릭해 필터에서 제거할 수 있습니다. + statuses_hint_html: 이 필터는 아래의 키워드에 매칭되는지 여부와 관계 없이 몇몇개의 게시물들에 별개로 적용되었습니다. 검토하거나 필터에서 삭제하세요 title: 필터 편집 errors: deprecated_api_multiple_keywords: 이 파라미터들은 하나를 초과하는 필터 키워드에 적용되기 때문에 이 응용프로그램에서 수정될 수 없습니다. 더 최신의 응용프로그램이나 웹 인터페이스를 사용하세요. @@ -1199,12 +1212,19 @@ ko: trending_now: 지금 유행중 generic: all: 모두 + all_items_on_page_selected_html: + other: 현재 페이지에서 %{count} 개의 항목이 선택되었습니다 + all_matching_items_selected_html: + other: 검색에 잡히는 %{count} 개의 항목이 선택되었습니다 changes_saved_msg: 정상적으로 변경되었습니다! copy: 복사 delete: 삭제 + deselect: 전체 선택 해제 none: 없음 order_by: 순서 save_changes: 변경 사항을 저장 + select_all_matching_items: + other: 검색에 잡힌 %{count} 개의 항목을 모두 선택하기 today: 오늘 validation_errors: other: 오류가 발생했습니다. 아래 %{count}개 오류를 확인해 주십시오 @@ -1311,15 +1331,6 @@ ko: subject: "%{name} 님이 신고를 제출했습니다" sign_up: subject: "%{name} 님이 가입했습니다" - digest: - action: 모든 알림 보기 - body: 마지막 로그인(%{since}) 이후로 일어난 일들에 관한 요약 - mention: "%{name} 님이 나를 언급했습니다:" - new_followers_summary: - other: 게다가, 접속하지 않은 동안 %{count} 명의 팔로워가 생겼습니다! - subject: - other: 마지막 방문 이후로 %{count} 건의 새로운 알림 - title: 당신이 없는 동안에... favourite: body: '당신의 게시물을 %{name} 님이 마음에 들어했습니다:' subject: "%{name} 님이 내 게시물을 마음에 들어했습니다" diff --git a/config/locales/ku.yml b/config/locales/ku.yml index 497876c6c..b43e205d2 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -235,17 +235,21 @@ ku: approve_user: Bikarhêner bipejirîne assigned_to_self_report: Ragihandinê diyar bike change_email_user: E-nameya bikarhêner biguherîne + change_role_user: Rola bikarhêner biguherîne confirm_user: Bikarhêner bipejirîne create_account_warning: Hişyariyekê çê bike create_announcement: Daxûyaniyekê çê bike + create_canonical_email_block: Astengkirina e-nameyê biafirîne create_custom_emoji: Emojiyên kesanekirî çê bike create_domain_allow: Navpera ku destûr standiye peyda bike create_domain_block: Navpera ku asteng bûye ava bike create_email_domain_block: Navpera e-name yê de asteng kirinê peyda bike create_ip_block: Rêziknameya IPyê saz bike create_unavailable_domain: Navpera ku nayê bikaranîn pêk bîne + create_user_role: Rolê biafirîne demote_user: Bikarhênerê kaşê jêr bike destroy_announcement: Daxûyanîyê jê bibe + destroy_canonical_email_block: Astengkirina e-nameyê jê bibe destroy_custom_emoji: Emojîya kesanekirî jê bibe destroy_domain_allow: Navperên mafdayî jê bibe destroy_domain_block: Navperên astengkirî jê bibe @@ -254,6 +258,7 @@ ku: destroy_ip_block: Tomara IPyê jêbibe destroy_status: Şandiyê jê bibe destroy_unavailable_domain: Navperên tuneyî jê bibe + destroy_user_role: Rolê hilweşîne disable_2fa_user: 2FA neçalak bike disable_custom_emoji: Emojîya kesanekirî neçalak bike disable_sign_in_token_auth_user: Ji bo bikarhênerê piştrastkirina navnîşana e-name yê ya token neçalak bike @@ -280,24 +285,30 @@ ku: update_announcement: Daxûyaniyê rojane bike update_custom_emoji: Emojîya kesanekirî rojane bike update_domain_block: Navperên astengkirî rojane bike + update_ip_block: Rolê IP rojane bike update_status: Şandiyê rojane bike + update_user_role: Rolê rojane bike actions: approve_appeal_html: "%{name} îtiraza biryara çavdêriyê ji %{target} pejirand" approve_user_html: "%{name} tomarkirina ji %{target} pejirand" assigned_to_self_report_html: "%{name} ji xwe re ragihandinek %{target} hilda" change_email_user_html: "%{name} navnîşana e-nameya bikarhêner %{target} guherand" + change_role_user_html: "%{name} rolê %{target} guhert" confirm_user_html: "%{name} navnîşana e-nameya bikarhêner %{target} piştrast kir" create_account_warning_html: "%{name} ji bo %{target} hişyariyek şand" create_announcement_html: "%{name} agahdarkirineke nû çêkir %{target}" + create_canonical_email_block_html: "%{name} bi riya dabeşkirinê e-nameya %{target} asteng kir" create_custom_emoji_html: "%{name} emojîyeke nû ya %{target} bar kir" create_domain_allow_html: "%{name} bi navperê %{target} re maf da demnameya giştî" create_domain_block_html: "%{name} navpera %{target} asteng kir" create_email_domain_block_html: "%{name} e-nameya navperê %{target} asteng kir" create_ip_block_html: "%{name} ji bo IPya %{target} rêzikname saz kir" create_unavailable_domain_html: "%{name} bi navperê %{target} re gihandinê rawestand" + create_user_role_html: "%{name} rola %{target} afirand" demote_user_html: "%{name} bikarhênerê %{target} kaşê jêr kir" destroy_announcement_html: "%{name} daxûyaniyeke %{target} jê bir" - destroy_custom_emoji_html: "%{name} emojiya %{target} tune kir" + destroy_canonical_email_block_html: "%{name} bi riya dabeşkirinê astengiya li ser e-nameya %{target} rakir" + destroy_custom_emoji_html: "%{name} emojiya %{target} jê bir" destroy_domain_allow_html: "%{name} bi navperê %{target} re maf neda demnameya giştî" destroy_domain_block_html: "%{name} navpera %{target} asteng kir" destroy_email_domain_block_html: "%{name} astengiya li ser navpera e-nameyê %{target} rakir" @@ -305,6 +316,7 @@ ku: destroy_ip_block_html: "%{name}, ji bo IPya %{target} rêziknameyê jêbir" destroy_status_html: "%{name} ji alîyê %{target} ve şandiyê rakir" destroy_unavailable_domain_html: "%{name} bi navperê %{target} re gihandinê berdewam kir" + destroy_user_role_html: "%{name} rola %{target} jê bir" disable_2fa_user_html: "%{name} ji bo bikarhênerê %{target} du faktorî neçalak kir" disable_custom_emoji_html: "%{name} emojiya %{target} neçalak kir" disable_sign_in_token_auth_user_html: "%{name} ji bo %{target} nîşana mafdayîna e-nameya ne çalak kir" @@ -331,8 +343,9 @@ ku: update_announcement_html: "%{name} daxûyaniya %{target} rojane kir" update_custom_emoji_html: "%{name} emojiya %{target} rojane kir" update_domain_block_html: "%{name} ji bo navpera %{target} astengkirin rojane kir" + update_ip_block_html: "%{name} rolê %{target} guhert ji bo IP" update_status_html: "%{name} şandiya bikarhêner %{target} rojane kir" - deleted_status: "(şandiyeke jêbirî)" + update_user_role_html: "%{name} rola %{target} guherand" empty: Tomarkirin nehate dîtin. filter_by_action: Li gorî çalakiyê biparzinîne filter_by_user: Li gorî bikarhênerê biparzinîne @@ -797,8 +810,8 @@ ku: title: Mafê bide gihîştina ne naskirî bo demnameya gelemperî title: Sazkariyên malperê trendable_by_default: - desc_html: Hashtagên ku berê hatibûn qedexekirin bandor dike - title: Bihêle ku hashtag bêyî nirxandinek pêşîn bibe rojev + desc_html: Naveroka rojevê nîşankirî dikare were qedexekirin + title: Mafê bide rojevê bêyî ku were nirxandin trends: desc_html: Hashtagên ku berê hatibûn nirxandin ên ku niha rojev in bi gelemperî bide xuyakirin title: Hashtagên rojevê @@ -1183,6 +1196,8 @@ ku: edit: add_keyword: Kilîtpeyv tevî bike keywords: Peyvkilît + statuses: Şandiyên kesane + statuses_hint_html: Ev parzûn ji bo hibijartina şandiyên kesane tê sepandin bêyî ku ew bi peyvkilîtên jêrîn re lihevhatî bin. Şandiyan binirxîne an jî ji parzûnê rake. title: Parzûnê serrast bike errors: deprecated_api_multiple_keywords: Van parameteran ji vê sepanê nayên guhertin ji ber ku ew li ser bêtirî yek kilîtpeyvên parzûnkirî têne sepandin. Sepaneke nûtir an navrûya bikarhêneriyê ya malperê bi kar bîne. @@ -1196,10 +1211,23 @@ ku: keywords: one: "%{count} kilîtpeyv" other: "%{count} kilîtpeyv" + statuses: + one: "%{count} şandî" + other: "%{count} şandî" + statuses_long: + one: "%{count} şandiyê kesane yê veşartî" + other: "%{count} şandiyê kesane yê veşartî" title: Parzûn new: save: Parzûna nû tomar bike title: Parzûnek nû li zêde bike + statuses: + back_to_filter: Vegere bo parzûnê + batch: + remove: Ji parzûnê rake + index: + hint: Ev parzûn bêyî pîvanên din ji bo hilbijartina şandiyên kesane tê sepandin. Tu dikarî ji navrûya tevnê bêtir şandiyan tevlî vê parzûnê bikî. + title: Şandiyên parzûnkirî footer: developers: Pêşdebir more: Bêtir… @@ -1207,12 +1235,22 @@ ku: trending_now: Niha rojevê de generic: all: Hemû + all_items_on_page_selected_html: + one: Berhemê %{count} li ser vê rûpelê hatiye hilbijartin. + other: Hemû berhemên %{count} li ser vê rûpelê hatine hilbijartin. + all_matching_items_selected_html: + one: Berhemê %{count} ku bi lêgerîna te re lihevhatî ye hatiye hilbijartin. + other: Hemû berhemên %{count} ku bi lêgerîna te re lihevhatî ne hatine hilbijartin. changes_saved_msg: Guhertin bi serkeftî tomar bû! copy: Jê bigire delete: Jê bibe + deselect: Hemûyan hilnebijêre none: Ne yek order_by: Rêz bike bi save_changes: Guhertinan tomar bike + select_all_matching_items: + one: Berhemê %{count} ku bi lêgerîna te re lihevhatî ye hilbijêre. + other: Hemû berhemên %{count} ku bi lêgerîna te re lihevhatî ne hilbijêre. today: îro validation_errors: one: Tiştek hîn ne rast e! Ji kerema xwe çewtiya li jêr di ber çavan re derbas bike @@ -1321,17 +1359,6 @@ ku: subject: "%{name} ragihandinek şand" sign_up: subject: "%{name} tomar bû" - digest: - action: Hemû agahdariyan nîşan bide - body: Li vir kurteyeke peyamên ku li te derbasbûnd ji serdana te ya dawîn di %{since} de - mention: "%{name} behsa te kir:" - new_followers_summary: - one: Herwiha, dema tu dûr bûyî te şopînerek nû bi dest xist! Bijî! - other: Herwiha, dema tu dûr bûyî te %{count} şopînerek nû bi dest xist! Bijî! - subject: - one: "1 agahdarî ji serdana te ya herî dawî 🐘" - other: "%{count} agahdarî ji serdana te ya herî dawî 🐘" - title: Di tunebûna te de... favourite: body: 'Şandiya te hate bijartin ji alî %{name} ve:' subject: "%{name} şandiya te hez kir" diff --git a/config/locales/lt.yml b/config/locales/lt.yml index 96119216d..4e79ca188 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -127,7 +127,6 @@ lt: username: Slapyvardis warn: Įspėti action_logs: - deleted_status: "(panaikintas statusas)" title: Audito žurnalas custom_emojis: by_domain: Domenas @@ -493,11 +492,6 @@ lt: moderation: title: Moderacija notification_mailer: - digest: - action: Peržiurėti visus pranešimus - body: Čia yra trumpa santrauka žinutės, kurią jūs praleidote nuo jūsų paskutinio apsilankymo %{since} - mention: "%{name} paminėjo jus:" - title: Kol jūsų nebuvo... favourite: body: 'Jūsų statusą pamėgo %{name}:' subject: "%{name} pamėgo Jūsų statusą" diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 21da83077..ae2087390 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -45,8 +45,8 @@ lv: unavailable_content_description: domain: Serveris reason: Iemesls - rejecting_media: 's faili no šiem serveriem netiks apstrādāti vai saglabāti, un netiks parādīti sīktēli, kuriem nepieciešama manuāla noklikšķināšana uz sākotnējā faila:' - rejecting_media_title: Filtrēts saturs + rejecting_media: 'Multivides faili no šiem serveriem netiks apstrādāti vai saglabāti, un netiks parādīti sīktēli, kuriem nepieciešama manuāla noklikšķināšana uz sākotnējā faila:' + rejecting_media_title: Filtrēta multivide silenced: 'Ziņas no šiem serveriem tiks paslēptas publiskās ziņu lentās un sarunās, un no lietotāju mijiedarbības netiks ģenerēti paziņojumi, ja vien tu tiem nesekosi:' silenced_title: Ierobežoti serveri suspended: 'Nekādi dati no šiem serveriem netiks apstrādāti, uzglabāti vai apmainīti, padarot neiespējamu jebkādu mijiedarbību vai saziņu ar lietotājiem no šiem serveriem:' @@ -240,17 +240,21 @@ lv: approve_user: Apstiprināt lietotāju assigned_to_self_report: Piešķirt Pārskatu change_email_user: Mainīt e-pastu lietotājam + change_role_user: Mainīt lietotāja lomu confirm_user: Apstiprināt lietotāju create_account_warning: Izveidot Brīdinājumu create_announcement: Izveidot Paziņojumu + create_canonical_email_block: Izveidot E-pasta Bloku create_custom_emoji: Izveidot pielāgotu emocijzīmi create_domain_allow: Izveidot Domēna Atļauju create_domain_block: Izveidot Domēna Bloku create_email_domain_block: Izveidot E-pasta Domēna Bloku create_ip_block: Izveidot IP noteikumu create_unavailable_domain: Izveidot Nepieejamu Domēnu + create_user_role: Izveidot lomu demote_user: Pazemināt Lietotāju destroy_announcement: Dzēst Paziņojumu + destroy_canonical_email_block: Dzēst E-pasta Bloku destroy_custom_emoji: Dzēst pielāgoto emocijzīmi destroy_domain_allow: Dzēst Domēna Atļauju destroy_domain_block: Dzēst Domēna Bloku @@ -259,6 +263,7 @@ lv: destroy_ip_block: Dzēst IP noteikumu destroy_status: Izdzēst Rakstu destroy_unavailable_domain: Dzēst Nepieejamu Domēnu + destroy_user_role: Iznīcināt lomu disable_2fa_user: Atspējot 2FA disable_custom_emoji: Atspējot pielāgotu emocijzīmi disable_sign_in_token_auth_user: Atspējoja e-pasta marķiera autentifikāciju lietotājam @@ -285,24 +290,30 @@ lv: update_announcement: Atjaunināt Paziņojumu update_custom_emoji: Atjaunināt pielāgoto emocijzīmi update_domain_block: Atjaunināt Domēna Bloku + update_ip_block: Atjaunināt IP noteikumu update_status: Atjaunināt ziņu + update_user_role: Atjaunināt lomu actions: approve_appeal_html: "%{name} apstiprināja moderācijas lēmuma apelāciju no %{target}" approve_user_html: "%{name} apstiprināja reģistrēšanos no %{target}" assigned_to_self_report_html: "%{name} piešķīra pārskatu %{target} sev" change_email_user_html: "%{name} nomainīja e-pasta adresi lietotājam %{target}" + change_role_user_html: "%{name} nomainīja lomu uz %{target}" confirm_user_html: "%{name} apstiprināja e-pasta adresi lietotājam %{target}" create_account_warning_html: "%{name} nosūtīja brīdinājumu %{target}" create_announcement_html: "%{name} izveidoja jaunu paziņojumu %{target}" + create_canonical_email_block_html: "%{name} bloķēja e-pastu ar hešu %{target}" create_custom_emoji_html: "%{name} augšupielādēja jaunu emocijzīmi %{target}" create_domain_allow_html: "%{name} atļāva federāciju ar domēnu %{target}" create_domain_block_html: "%{name} bloķēja domēnu %{target}" create_email_domain_block_html: "%{name} bloķēja e-pasta domēnu %{target}" create_ip_block_html: "%{name} izveidoja nosacījumu priekš IP %{target}" create_unavailable_domain_html: "%{name} apturēja piegādi uz domēnu %{target}" + create_user_role_html: "%{name} nomainīja %{target} lomu" demote_user_html: "%{name} pazemināja lietotāju %{target}" destroy_announcement_html: "%{name} izdzēsa paziņojumu %{target}" - destroy_custom_emoji_html: "%{name} iznīcināja emocijzīmi %{target}" + destroy_canonical_email_block_html: "%{name} atbloķēja e-pastu ar hešu %{target}" + destroy_custom_emoji_html: "%{name} izdzēsa emocijzīmi %{target}" destroy_domain_allow_html: "%{name} neatļāva federāciju ar domēnu %{target}" destroy_domain_block_html: "%{name} atbloķēja domēnu %{target}" destroy_email_domain_block_html: "%{name} atbloķēja e-pasta domēnu %{target}" @@ -310,6 +321,7 @@ lv: destroy_ip_block_html: "%{name} izdzēsa nosacījumu priekš IP %{target}" destroy_status_html: "%{name} noņēma ziņu %{target}" destroy_unavailable_domain_html: "%{name} atjaunoja piegādi uz domēnu %{target}" + destroy_user_role_html: "%{name} izdzēsa %{target} lomu" disable_2fa_user_html: "%{name} atspējoja divfaktoru prasības lietotājam %{target}" disable_custom_emoji_html: "%{name} atspējoja emocijzīmi %{target}" disable_sign_in_token_auth_user_html: "%{name} atspējoja e-pasta marķiera autentifikāciju %{target}" @@ -336,8 +348,9 @@ lv: update_announcement_html: "%{name} atjaunināja paziņojumu %{target}" update_custom_emoji_html: "%{name} atjaunināja emocijzīmi %{target}" update_domain_block_html: "%{name} atjaunināja domēna bloku %{target}" + update_ip_block_html: "%{name} mainīja nosacījumu priekš IP %{target}" update_status_html: "%{name} atjaunināja ziņu %{target}" - deleted_status: "(dzēsta ziņa)" + update_user_role_html: "%{name} nomainīja %{target} lomu" empty: Žurnāli nav atrasti. filter_by_action: Filtrēt pēc darbības filter_by_user: Filtrēt pēc lietotāja @@ -811,8 +824,8 @@ lv: title: Atļaut neautentificētu piekļuvi publiskai ziņu lentai title: Vietnes iestatījumi trendable_by_default: - desc_html: Ietekmē tēmturus, kas iepriekš nav bijuši aizliegti - title: Ļaujiet tēmturiem mainīties bez iepriekšējas pārskatīšanas + desc_html: Konkrētais populārais saturs joprojām var būt nepārprotami aizliegts + title: Atļaut tendences bez iepriekšējas pārskatīšanas trends: desc_html: Publiski parādīt iepriekš pārskatītus tēmturus, kas pašlaik ir populāri title: Populārākie tēmturi @@ -1201,6 +1214,8 @@ lv: edit: add_keyword: Pievienot atslēgvārdu keywords: Atslēgvārdi + statuses: Individuālās ziņas + statuses_hint_html: Šis filtrs attiecas uz atsevišķām ziņām neatkarīgi no tā, vai tās atbilst tālāk norādītajiem atslēgvārdiem. Pārskatīt vai noņemt ziņas no filtra. title: Rediģēt filtru errors: deprecated_api_multiple_keywords: Šos parametrus šajā lietojumprogrammā nevar mainīt, jo tie attiecas uz vairāk nekā vienu filtra atslēgvārdu. Izmanto jaunāku lietojumprogrammu vai tīmekļa saskarni. @@ -1215,10 +1230,25 @@ lv: one: "%{count} atsēgvārds" other: "%{count} atslēgvārdi" zero: "%{count} atslēgvārdu" + statuses: + one: "%{count} ziņa" + other: "%{count} ziņas" + zero: "%{count} ziņu" + statuses_long: + one: paslēpta %{count} individuālā ziņa + other: slēptas %{count} individuālās ziņas + zero: "%{count} paslēptu ziņu" title: Filtri new: save: Saglabāt jauno filtru title: Pievienot jaunu filtru + statuses: + back_to_filter: Atpakaļ pie filtra + batch: + remove: Noņemt no filtra + index: + hint: Šis filtrs attiecas uz atsevišķu ziņu atlasi neatkarīgi no citiem kritērijiem. Šim filtram tu vari pievienot vairāk ziņu, izmantojot tīmekļa saskarni. + title: Filtrētās ziņas footer: developers: Izstrādātāji more: Vairāk… @@ -1226,12 +1256,25 @@ lv: trending_now: Šobrīd tendences generic: all: Visi + all_items_on_page_selected_html: + one: Šajā lapā ir atlasīts %{count} vienums. + other: Šajā lapā ir atlasīti %{count} vienumi. + zero: Šajā lapā ir atlasīts %{count} vienumu. + all_matching_items_selected_html: + one: Atlasīts %{count} vienums, kas atbilst tavam meklēšanas vaicājumam. + other: Atlasīti visi %{count} vienumi, kas atbilst tavam meklēšanas vaicājumam. + zero: Atlasīts %{count} vienumu, kas atbilst tavam meklēšanas vaicājumam. changes_saved_msg: Izmaiņas veiksmīgi saglabātas! copy: Kopēt delete: Dzēst + deselect: Atcelt visu atlasi none: Neviens order_by: Kārtot pēc save_changes: Saglabāt izmaiņas + select_all_matching_items: + one: Atlasi %{count} vienumu, kas atbilst tavam meklēšanas vaicājumam. + other: Atlasi visus %{count} vienumus, kas atbilst tavam meklēšanas vaicājumam. + zero: Atlasi %{count} vienumu, kas atbilst tavam meklēšanas vaicājumam. today: šodien validation_errors: one: Kaut kas vēl nav īsti kārtībā! Lūdzu, pārskati zemāk norādīto kļūdu @@ -1342,19 +1385,6 @@ lv: subject: "%{name} iesniedza ziņojumu" sign_up: subject: "%{name} ir pierakstījies" - digest: - action: Rādīt visus paziņojumus - body: Šeit ir īss kopsavilkums par ziņojumiem, kurus tu esi palaidis garām kopš pēdējā apmeklējuma %{since} - mention: "%{name} pieminēja tevi:" - new_followers_summary: - one: Tāpat, atrodoties prom, esi ieguvis vienu jaunu sekotāju! Jip! - other: Turklāt, atrodoties prom, esi ieguvis %{count} jaunus sekotājus! Apbrīnojami! - zero: "%{count} jaunu sekotāju!" - subject: - one: "1 jauns paziņojums kopš tava pēdējā apmeklējuma 🐘" - other: "%{count} jauni paziņojumi kopš tava pēdējā apmeklējuma 🐘" - zero: "%{count} jaunu paziņojumu kopš tava pēdējā apmeklējuma" - title: Tavas prombūtnes laikā... favourite: body: 'Tavu ziņu izlasei pievienoja %{name}:' subject: "%{name} pievienoja tavu ziņu izlasei" diff --git a/config/locales/ml.yml b/config/locales/ml.yml index 76a3ec07c..ea05859ac 100644 --- a/config/locales/ml.yml +++ b/config/locales/ml.yml @@ -127,8 +127,6 @@ ml: generic: all: എല്ലാം notification_mailer: - digest: - action: എല്ലാ അറിയിപ്പുകളും കാണിക്കുക follow: body: "%{name} ഇപ്പോൾ നിങ്ങളെ പിന്തുടരുന്നു!" subject: "%{name} ഇപ്പോൾ നിങ്ങളെ പിന്തുടരുന്നു" diff --git a/config/locales/ms.yml b/config/locales/ms.yml index 36aa351d9..b80a0d5c9 100644 --- a/config/locales/ms.yml +++ b/config/locales/ms.yml @@ -256,7 +256,6 @@ ms: create_unavailable_domain_html: "%{name} telah menghentikan penghantaran ke domain %{target}" demote_user_html: "%{name} telah menurunkan taraf pengguna %{target}" destroy_announcement_html: "%{name} telah memadamkan pengumuman %{target}" - destroy_custom_emoji_html: "%{name} telah memusnahkan emoji %{target}" destroy_domain_allow_html: "%{name} telah membuang kebenaran persekutuan dengan domain %{target}" destroy_domain_block_html: "%{name} telah menyahsekat domain %{target}" destroy_email_domain_block_html: "%{name} telah menyahsekat domain e-mel %{target}" @@ -285,7 +284,6 @@ ms: update_custom_emoji_html: "%{name} telah mengemaskini emoji %{target}" update_domain_block_html: "%{name} telah mengemaskini penyekatan domain untuk %{target}" update_status_html: "%{name} telah mengemaskini hantaran oleh %{target}" - deleted_status: "(hantaran telah dipadam)" empty: Tiada log dijumpai. filter_by_action: Tapis mengikut tindakan filter_by_user: Tapis mengikut pengguna @@ -542,8 +540,5 @@ ms: exports: archive_takeout: in_progress: Mengkompil arkib anda... - notification_mailer: - digest: - title: Ketika anda tiada di sini... users: follow_limit_reached: Anda tidak boleh mengikut lebih daripada %{limit} orang diff --git a/config/locales/nl.yml b/config/locales/nl.yml index e34092f8f..086568664 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -289,7 +289,6 @@ nl: create_unavailable_domain_html: "%{name} heeft de bezorging voor domein %{target} beëindigd" demote_user_html: Gebruiker %{target} is door %{name} gedegradeerd destroy_announcement_html: "%{name} heeft de mededeling %{target} verwijderd" - destroy_custom_emoji_html: "%{name} verwijderde emoji %{target}" destroy_domain_allow_html: "%{name} heeft de federatie met het domein %{target} afgekeurd" destroy_domain_block_html: Domein %{target} is door %{name} gedeblokkeerd destroy_email_domain_block_html: "%{name} heeft het e-maildomein %{target} gedeblokkeerd" @@ -320,7 +319,6 @@ nl: update_custom_emoji_html: Emoji %{target} is door %{name} bijgewerkt update_domain_block_html: "%{name} heeft de domeinblokkade bijgewerkt voor %{target}" update_status_html: "%{name} heeft de berichten van %{target} bijgewerkt" - deleted_status: "(verwijderd bericht}" empty: Geen logs gevonden. filter_by_action: Op actie filteren filter_by_user: Op gebruiker filteren @@ -670,9 +668,6 @@ nl: desc_html: Toon een link naar de openbare tijdlijnpagina op de voorpagina en geef de API zonder in te loggen toegang tot de openbare tijdlijn title: Toegang tot de openbare tijdlijn zonder in te loggen toestaan title: Server-instellingen - trendable_by_default: - desc_html: Heeft invloed op hashtags die nog niet eerder niet zijn toegestaan - title: Hashtags toestaan om trending te worden zonder voorafgaande beoordeling trends: desc_html: Eerder beoordeelde hashtags die op dit moment trending zijn openbaar tonen title: Trends @@ -1083,14 +1078,6 @@ nl: admin: report: subject: "%{name} heeft een rapportage ingediend" - digest: - action: Alle meldingen bekijken - body: Hier is een korte samenvatting van de berichten die je sinds jouw laatste bezoek op %{since} hebt gemist - mention: "%{name} vermeldde jou in:" - new_followers_summary: - one: Je hebt trouwens sinds je weg was er ook een nieuwe volger bijgekregen! Hoera! - other: Je hebt trouwens sinds je weg was er ook %{count} nieuwe volgers bijgekregen! Fantastisch! - title: Tijdens jouw afwezigheid... favourite: body: 'Jouw bericht werd door %{name} als favoriet gemarkeerd:' subject: "%{name} markeerde jouw bericht als favoriet" diff --git a/config/locales/nn.yml b/config/locales/nn.yml index 392b927e1..440259369 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -254,7 +254,6 @@ nn: create_ip_block_html: "%{name} opprettet regel for IP %{target}" reject_user_html: "%{name} avslo registrering fra %{target}" silence_account_html: "%{name} begrenset %{target} sin konto" - deleted_status: "(sletta status)" empty: Ingen loggar funne. filter_by_action: Sorter etter handling filter_by_user: Sorter etter brukar @@ -558,9 +557,6 @@ nn: desc_html: Vis offentlig tidslinje på landingssiden title: Tillat uautentisert tilgang til offentleg tidsline title: Sideinnstillingar - trendable_by_default: - desc_html: Påverkar emneknaggar som ikkje har vore tillatne tidlegare - title: Tillat emneknaggar å verta populære utan gjennomgang på førehand trends: title: Populære emneknaggar site_uploads: @@ -888,14 +884,6 @@ nn: carry_mutes_over_text: Denne brukeren flyttet fra %{acct}, som du hadde dempet. copy_account_note_text: 'Denne brukeren flyttet fra %{acct}, her var dine tidligere notater om dem:' notification_mailer: - digest: - action: Sjå alle varsel - body: Her er ei kort samanfatting av meldingane du gjekk glepp av sidan siste gong du var innom %{since} - mention: "%{name} nemnde deg i:" - new_followers_summary: - one: Du har forresten fått deg ein ny fylgjar mens du var borte! Hurra! - other: Du har forresten fått deg %{count} nye fylgjarar mens du var borte! Hurra! - title: Mens du var borte... favourite: body: 'Statusen din vart merkt som favoritt av %{name}:' subject: "%{name} merkte statusen din som favoritt" diff --git a/config/locales/no.yml b/config/locales/no.yml index 13f13d8bd..27b7be807 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -247,7 +247,6 @@ create_ip_block_html: "%{name} opprettet regel for IP %{target}" reject_user_html: "%{name} avslo registrering fra %{target}" silence_account_html: "%{name} begrenset %{target} sin konto" - deleted_status: "(statusen er slettet)" empty: Ingen loggføringer ble funnet. filter_by_action: Sorter etter handling filter_by_user: Sorter etter bruker @@ -551,9 +550,6 @@ desc_html: Vis offentlig tidslinje på landingssiden title: Forhandsvis tidslinjen title: Nettstedsinnstillinger - trendable_by_default: - desc_html: Påvirker hashtags som ikke har blitt nektet tidligere - title: Tillat hashtags for trend uten foregående vurdering trends: title: Trendende emneknagger site_uploads: @@ -868,14 +864,6 @@ carry_mutes_over_text: Denne brukeren flyttet fra %{acct}, som du hadde dempet. copy_account_note_text: 'Denne brukeren flyttet fra %{acct}, her var dine tidligere notater om dem:' notification_mailer: - digest: - action: Vis alle varslinger - body: Her er en kort oppsummering av hva du har gått glipp av siden du sist logget inn den %{since} - mention: "%{name} nevnte deg i:" - new_followers_summary: - one: I tillegg har du fått en ny følger mens du var borte. Hurra! - other: I tillegg har du har fått %{count} nye følgere mens du var borte! Imponerende! - title: I ditt fravær… favourite: body: 'Statusen din ble likt av %{name}:' subject: "%{name} likte statusen din" diff --git a/config/locales/oc.yml b/config/locales/oc.yml index 463940567..d8560fd1c 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -216,7 +216,6 @@ oc: update_announcement: Actualizar l’anóncia update_custom_emoji: Actualizar l’emoji personalizat update_status: Actualizar l’estatut - deleted_status: "(estatut suprimit)" empty: Cap de jornal pas trobat. filter_by_action: Filtrar per accion filter_by_user: Filtrar per utilizaire @@ -793,14 +792,6 @@ oc: moderation: title: Moderacion notification_mailer: - digest: - action: Veire totas las notificacions - body: Trobatz aquí un resumit dels messatges qu’avètz mancats dempuèi vòstra darrièra visita lo %{since} - mention: "%{name} vos a mencionat dins :" - new_followers_summary: - one: Avètz un nòu seguidor dempuèi vòstra darrièra visita ! Ouà ! - other: Avètz %{count} nòus seguidors dempuèi vòstra darrièra visita ! Qué crane ! - title: Pendent vòstra abséncia… favourite: body: "%{name} a mes vòstre estatut en favorit :" subject: "%{name} a mes vòstre estatut en favorit" diff --git a/config/locales/pl.yml b/config/locales/pl.yml index f51c231a6..99169454e 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -245,6 +245,7 @@ pl: approve_user: Zatwierdź użytkownika assigned_to_self_report: Przypisz zgłoszenie change_email_user: Zmień adres e-mail użytkownika + change_role_user: Zmień rolę użytkownika confirm_user: Potwierdź użytkownika create_account_warning: Utwórz ostrzeżenie create_announcement: Utwórz ogłoszenie @@ -254,6 +255,7 @@ pl: create_email_domain_block: Utwórz blokadę domeny e-mail create_ip_block: Utwórz regułę IP create_unavailable_domain: Utwórz niedostępną domenę + create_user_role: Utwórz rolę demote_user: Zdegraduj użytkownika destroy_announcement: Usuń ogłoszenie destroy_custom_emoji: Usuń niestandardowe emoji @@ -264,6 +266,7 @@ pl: destroy_ip_block: Usuń regułę IP destroy_status: Usuń wpis destroy_unavailable_domain: Usuń niedostępną domenę + destroy_user_role: Zlikwiduj rolę disable_2fa_user: Wyłącz 2FA disable_custom_emoji: Wyłącz niestandardowe emoji disable_sign_in_token_auth_user: Wyłącz uwierzytelnianie tokenu e-mail dla użytkownika @@ -290,12 +293,15 @@ pl: update_announcement: Aktualizuj ogłoszenie update_custom_emoji: Aktualizuj niestandardowe emoji update_domain_block: Zaktualizuj blokadę domeny + update_ip_block: Aktualizuj regułę IP update_status: Aktualizuj wpis + update_user_role: Aktualizuj rolę actions: approve_appeal_html: "%{name} zatwierdził(-a) odwołanie decyzji moderacyjnej od %{target}" approve_user_html: "%{name} zatwierdził rejestrację od %{target}" assigned_to_self_report_html: "%{name} przypisał(a) sobie zgłoszenie %{target}" change_email_user_html: "%{name} zmienił(a) adres e-mail użytkownika %{target}" + change_role_user_html: "%{name} zmienił rolę %{target}" confirm_user_html: "%{name} potwierdził(a) adres e-mail użytkownika %{target}" create_account_warning_html: "%{name} wysłał(a) ostrzeżenie do %{target}" create_announcement_html: "%{name} utworzył(a) nowe ogłoszenie %{target}" @@ -305,9 +311,10 @@ pl: create_email_domain_block_html: "%{name} dodał(a) domenę e-mail %{target} na czarną listę" create_ip_block_html: "%{name} stworzył(a) regułę dla IP %{target}" create_unavailable_domain_html: "%{name} przestał(a) doręczać na domenę %{target}" + create_user_role_html: "%{name} utworzył rolę %{target}" demote_user_html: "%{name} zdegradował(a) użytkownika %{target}" destroy_announcement_html: "%{name} usunął(-ęła) ogłoszenie %{target}" - destroy_custom_emoji_html: "%{name} usunął(-ęła) emoji %{target}" + destroy_custom_emoji_html: "%{name} usunął emoji %{target}" destroy_domain_allow_html: "%{name} usunął(-ęła) domenę %{target} z białej listy" destroy_domain_block_html: "%{name} odblokował(a) domenę %{target}" destroy_email_domain_block_html: "%{name} usunął(-ęła) domenę e-mail %{target} z czarnej listy" @@ -315,6 +322,7 @@ pl: destroy_ip_block_html: "%{name} usunął(-ęła) regułę dla IP %{target}" destroy_status_html: "%{name} usunął(-ęła) wpis użytkownika %{target}" destroy_unavailable_domain_html: "%{name} wznowił(a) doręczanie do domeny %{target}" + destroy_user_role_html: "%{name} usunął rolę %{target}" disable_2fa_user_html: "%{name} wyłączył(a) uwierzytelnianie dwustopniowe użytkownikowi %{target}" disable_custom_emoji_html: "%{name} wyłączył(a) emoji %{target}" disable_sign_in_token_auth_user_html: "%{name} wyłączył/a uwierzytelnianie tokenem e-mail dla %{target}" @@ -342,7 +350,7 @@ pl: update_custom_emoji_html: "%{name} zaktualizował(a) emoji %{target}" update_domain_block_html: "%{name} zaktualizował(a) blokadę domeny dla %{target}" update_status_html: "%{name} zaktualizował(a) wpis użytkownika %{target}" - deleted_status: "(usunięty wpis)" + update_user_role_html: "%{name} zmienił rolę %{target}" empty: Nie znaleziono aktywności w dzienniku. filter_by_action: Filtruj według działania filter_by_user: Filtruj według użytkownika @@ -827,8 +835,8 @@ pl: title: Podgląd osi czasu title: Ustawienia strony trendable_by_default: - desc_html: Wpływa na hashtagi, które nie były wcześniej niedozwolone - title: Hashtagi mogą pojawiać się w trendach bez wcześniejszego zatwierdzenia + desc_html: Pewne treści trendu nadal mogą być bezpośrednio zabronione + title: Zezwalaj na trendy bez ich uprzedniego przejrzenia trends: desc_html: Wyświetlaj publicznie wcześniej sprawdzone hashtagi, które są obecnie na czasie title: Popularne hashtagi @@ -1222,7 +1230,7 @@ pl: add_keyword: Dodaj słowo kluczowe keywords: Słowa kluczowe statuses: Pojedyncze wpisy - statuses_hint_html: Ten filtr ma zastosowanie do wybierania poszczególnych postów niezależnie od tego, czy pasują one do słów kluczowych poniżej. Możesz przejrzeć te posty i usunąć je z filtra klikając tutaj. + statuses_hint_html: Ten filtr ma zastosowanie do wybierania poszczególnych wpisów niezależnie od tego, czy pasują one do słów kluczowych poniżej. Przejrzyj lub usuń wpisy z filtra. title: Edytuj filtr errors: deprecated_api_multiple_keywords: Te parametry nie mogą zostać zmienione z tej aplikacji, ponieważ dotyczą więcej niż jednego słowa kluczowego. Użyj nowszej wersji aplikacji lub interfejsu internetowego. @@ -1247,7 +1255,7 @@ pl: batch: remove: Usuń z filtra index: - hint: Ten filtr ma zastosowanie do wybierania poszczególnych postów niezależnie od innych kryteriów. Możesz dodać więcej postów do tego filtra z interfejsu WWW. + hint: Ten filtr ma zastosowanie do wybierania poszczególnych wpisów niezależnie od pozostałych kryteriów. Możesz dodać więcej wpisów do tego filtra z interfejsu internetowego. title: Filtrowane posty footer: developers: Dla programistów @@ -1259,6 +1267,7 @@ pl: changes_saved_msg: Ustawienia zapisane! copy: Kopiuj delete: Usuń + deselect: Odznacz wszystkie none: Żaden order_by: Uporządkuj według save_changes: Zapisz zmiany @@ -1374,21 +1383,6 @@ pl: subject: "%{name} wysłał raport" sign_up: subject: "%{name} zarejestrował(-a) się" - digest: - action: Wyświetl wszystkie powiadomienia - body: Oto krótkie podsumowanie wiadomości, które ominęły Cię od Twojej ostatniej wizyty (%{since}) - mention: "%{name} wspomniał o Tobie w:" - new_followers_summary: - few: "(%{count}) nowe osoby śledzą Cię!" - many: "(%{count}) nowych osób Cię śledzi! Wspaniale!" - one: Dodatkowo, w czasie nieobecności zaczęła śledzić Cię jedna osoba Gratulacje! - other: Dodatkowo, zaczęło Cię śledzić %{count} nowych osób! Wspaniale! - subject: - few: "%{count} nowe powiadomienia od Twojej ostatniej wizyty 🐘" - many: "%{count} nowych powiadomień od Twojej ostatniej wizyty 🐘" - one: "1 nowe powiadomienie od Twojej ostatniej wizyty 🐘" - other: "%{count} nowych powiadomień od Twojej ostatniej wizyty 🐘" - title: W trakcie Twojej nieobecności… favourite: body: 'Twój wpis został polubiony przez %{name}:' subject: "%{name} lubi Twój wpis" diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 4a7800b60..9460d651f 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -103,11 +103,17 @@ pt-BR: avatar: Imagem de perfil by_domain: Domínio change_email: + changed_msg: E-mail alterado com sucesso! current_email: E-mail atual label: Alterar e-mail new_email: Novo e-mail submit: Alterar e-mail title: Alterar e-mail para %{username} + change_role: + changed_msg: Função alterada com sucesso! + label: Alterar função + no_role: Nenhuma função + title: Alterar função para %{username} confirm: Confirmar confirmed: Confirmado confirming: Confirmando @@ -151,6 +157,7 @@ pt-BR: active: Ativo all: Todos pending: Pendente + silenced: Limitado suspended: Banidos title: Moderação moderation_notes: Notas de moderação @@ -158,6 +165,7 @@ pt-BR: most_recent_ip: IP mais recente no_account_selected: Nenhuma conta foi alterada, pois nenhuma conta foi selecionada no_limits_imposed: Nenhum limite imposto + no_role_assigned: Nenhuma função atribuída not_subscribed: Não inscrito pending: Revisão pendente perform_full_suspension: Banir @@ -184,6 +192,7 @@ pt-BR: reset: Redefinir reset_password: Redefinir senha resubscribe: Reinscrever-se + role: Função search: Pesquisar search_same_email_domain: Outros usuários com o mesmo domínio de e-mail search_same_ip: Outros usuários com o mesmo IP @@ -226,6 +235,7 @@ pt-BR: approve_user: Aprovar Usuário assigned_to_self_report: Adicionar relatório change_email_user: Editar e-mail do usuário + change_role_user: Alteração de Função do Usuário confirm_user: Confirmar Usuário create_account_warning: Criar Aviso create_announcement: Criar Anúncio @@ -235,6 +245,7 @@ pt-BR: create_email_domain_block: Criar Bloqueio de Domínio de E-mail create_ip_block: Criar regra de IP create_unavailable_domain: Criar domínio indisponível + create_user_role: Criar Função demote_user: Rebaixar usuário destroy_announcement: Excluir anúncio destroy_custom_emoji: Excluir emoji personalizado @@ -245,6 +256,7 @@ pt-BR: destroy_ip_block: Excluir regra de IP destroy_status: Excluir Status destroy_unavailable_domain: Deletar domínio indisponível + destroy_user_role: Destruir Função disable_2fa_user: Desativar autenticação de dois fatores disable_custom_emoji: Desativar Emoji Personalizado disable_sign_in_token_auth_user: Desativar autenticação via token por email para Usuário @@ -272,11 +284,13 @@ pt-BR: update_custom_emoji: Editar Emoji Personalizado update_domain_block: Atualizar bloqueio de domínio update_status: Editar Status + update_user_role: Atualizar função actions: approve_appeal_html: "%{name} aprovou o recurso de decisão de moderação de %{target}" approve_user_html: "%{name} aprovado inscrição de %{target}" assigned_to_self_report_html: "%{name} atribuiu o relatório %{target} para si" change_email_user_html: "%{name} alterou o endereço de e-mail do usuário %{target}" + change_role_user_html: "%{name} alterou a função de %{target}" confirm_user_html: "%{name} confirmou o endereço de e-mail do usuário %{target}" create_account_warning_html: "%{name} enviou um aviso para %{target}" create_announcement_html: "%{name} criou o novo anúncio %{target}" @@ -286,9 +300,9 @@ pt-BR: create_email_domain_block_html: "%{name} bloqueou do domínio de e-mail %{target}" create_ip_block_html: "%{name} criou regra para o IP %{target}" create_unavailable_domain_html: "%{name} parou a entrega ao domínio %{target}" + create_user_role_html: "%{name} criou a função %{target}" demote_user_html: "%{name} rebaixou o usuário %{target}" destroy_announcement_html: "%{name} excluiu o anúncio %{target}" - destroy_custom_emoji_html: "%{name} excluiu emoji %{target}" destroy_domain_allow_html: "%{name} bloqueou federação com domínio %{target}" destroy_domain_block_html: "%{name} deixou de bloquear domínio %{target}" destroy_email_domain_block_html: "%{name} adicionou domínio de e-mail %{target} à lista branca" @@ -296,6 +310,7 @@ pt-BR: destroy_ip_block_html: "%{name} excluiu regra para o IP %{target}" destroy_status_html: "%{name} excluiu post de %{target}" destroy_unavailable_domain_html: "%{name} retomou a entrega ao domínio %{target}" + destroy_user_role_html: "%{name} excluiu a função %{target}" disable_2fa_user_html: "%{name} desativou a exigência de autenticação de dois fatores para o usuário %{target}" disable_custom_emoji_html: "%{name} desativou o emoji %{target}" disable_sign_in_token_auth_user_html: "%{name} desativou a autenticação via token por email para %{target}" @@ -323,7 +338,7 @@ pt-BR: update_custom_emoji_html: "%{name} atualizou o emoji %{target}" update_domain_block_html: "%{name} atualizou o bloqueio de domínio de %{target}" update_status_html: "%{name} atualizou a publicação de %{target}" - deleted_status: "(status excluído)" + update_user_role_html: "%{name} alterou a função %{target}" empty: Nenhum registro encontrado. filter_by_action: Filtrar por ação filter_by_user: Filtrar por usuário @@ -635,6 +650,54 @@ pt-BR: unresolved: Não resolvido updated_at: Atualizado view_profile: Ver perfil + roles: + add_new: Adicionar função + assigned_users: + one: "%{count} usuário" + other: "%{count} usuários" + categories: + administration: Administração + invites: Convites + moderation: Moderação + special: Especial + delete: Excluir + description_html: Com as funções de usuário, você pode personalizar quais funções e áreas do Mastodon seus usuários podem acessar. + edit: Editar função de '%{name}' + everyone: Permissões padrão + everyone_full_description_html: Esta é a função base que afeta todos os usuários, mesmo aqueles sem uma função atribuída. Todas as outras funções dela herdam as suas permissões. + privileges: + administrator: Administrador + administrator_description: Usuários com essa permissão irão ignorar todas as permissões + invite_users: Convidar Usuários + invite_users_description: Permite que os usuários convidem novas pessoas para o servidor + manage_announcements: Gerenciar Avisos + manage_announcements_description: Permite aos usuários gerenciar anúncios no servidor + manage_blocks_description: Permite aos usuários bloquear provedores de e-mail e endereços IP + manage_custom_emojis_description: Permite aos usuários gerenciar emojis personalizados no servidor + manage_federation: Gerenciar Federação + manage_federation_description: Permite aos usuários bloquear ou permitir federação com outros domínios e controlar a entregabilidade + manage_invites: Gerenciar convites + manage_invites_description: Permite que os usuários naveguem e desativem os links de convites + manage_reports: Gerenciar relatórios + manage_roles: Gerenciar Funções + manage_roles_description: Permitir que os usuários gerenciem e atribuam papéis abaixo deles + manage_rules: Gerenciar Regras + manage_rules_description: Permite que os usuários alterarem as regras do servidor + manage_settings: Gerenciar Configurações + manage_settings_description: Permite que os usuários alterem as configurações do site + manage_taxonomies: Gerenciar taxonomias + manage_taxonomies_description: Permite aos usuários rever o conteúdo em alta e atualizar as configurações de hashtag + manage_user_access: Gerenciar Acesso de Usuário + manage_user_access_description: Permite aos usuários desativar a autenticação de dois fatores de outros usuários, alterar seu endereço de e-mail e redefinir sua senha + manage_users: Gerenciar usuários + manage_users_description: Permite aos usuários ver os detalhes de outros usuários e executar ações de moderação contra eles + manage_webhooks: Gerenciar Webhooks + manage_webhooks_description: Permite aos usuários configurar webhooks para eventos administrativos + view_audit_log: Ver o registro de auditoria + view_audit_log_description: Permite aos usuários ver um histórico de ações administrativas no servidor + view_dashboard: Ver painel + view_dashboard_description: Permite que os usuários acessem o painel e várias métricas + title: Funções rules: add_new: Adicionar regra delete: Deletar @@ -719,9 +782,6 @@ pt-BR: desc_html: Mostra a linha do tempo pública na página inicial e permite acesso da API à mesma sem autenticação title: Permitir acesso não autenticado à linha pública title: Configurações do site - trendable_by_default: - desc_html: Afeta as hashtags que não foram reprovadas anteriormente - title: Permitir que hashtags fiquem em alta sem revisão prévia trends: desc_html: Mostrar publicamente hashtags previamente revisadas que estão em alta title: Hashtags em alta @@ -768,15 +828,18 @@ pt-BR: disallow_provider: Anular editor title: Em alta no momento usage_comparison: Compartilhado %{today} vezes hoje, em comparação com %{yesterday} de ontem + only_allowed: Somente permitido pending_review: Revisão pendente preview_card_providers: allowed: Links deste editor podem tender + description_html: Estes são domínios a partir dos quais links são comumente compartilhados em seu servidor. Links não tenderão publicamente a menos que o domínio do link seja aprovado. Sua aprovação (ou rejeição) estende-se aos subdomínios. rejected: Links deste editor não vão tender title: Editor rejected: Rejeitado statuses: allow: Permitir postagem allow_account: Permitir autor + description_html: Estes são posts que seu servidor sabe que estão sendo muito compartilhados e favorecidos no momento. Isso pode ajudar seus usuários, novos e retornantes, a encontrar mais pessoas para seguir. Nenhum post é exibido publicamente até que você aprove o autor e o autor permitir que sua conta seja sugerida a outros. Você também pode permitir ou rejeitar postagens individuais. title: Publicações em alta tags: current_score: Pontuação atual %{score} @@ -1051,6 +1114,7 @@ pt-BR: edit: add_keyword: Adicionar palavra-chave keywords: Palavras-chave + statuses: Postagens individuais title: Editar filtro errors: invalid_context: Contexto inválido ou nenhum contexto informado @@ -1182,17 +1246,6 @@ pt-BR: subject: "%{name} enviou uma denúncia" sign_up: subject: "%{name} se inscreveu" - digest: - action: Ver todas as notificações - body: Aqui está um breve resumo das mensagens que você perdeu desde o seu último acesso em %{since} - mention: "%{name} te mencionou em:" - new_followers_summary: - one: Você tem um novo seguidor! Uia! - other: Você tem %{count} novos seguidores! AÊÊÊ! - subject: - one: "Uma nova notificação desde o seu último acesso 🐘" - other: "%{count} novas notificações desde o seu último acesso 🐘" - title: Enquanto você estava ausente... favourite: body: "%{name} favoritou seu toot:" subject: "%{name} favoritou seu toot" diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index ac21c330e..fd151b73a 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -235,17 +235,21 @@ pt-PT: approve_user: Aprovar Utilizador assigned_to_self_report: Atribuir Denúncia change_email_user: Alterar E-mail do Utilizador + change_role_user: Alterar Função do Utilizador confirm_user: Confirmar Utilizador create_account_warning: Criar Aviso create_announcement: Criar Anúncio + create_canonical_email_block: Criar Bloqueio de E-mail create_custom_emoji: Criar Emoji Personalizado create_domain_allow: Criar Permissão de Domínio create_domain_block: Criar Bloqueio de Domínio create_email_domain_block: Criar Bloqueio de Domínio de E-mail create_ip_block: Criar regra de IP create_unavailable_domain: Criar Domínio Indisponível + create_user_role: Criar Função demote_user: Despromover Utilizador destroy_announcement: Eliminar Anúncio + destroy_canonical_email_block: Eliminar Bloqueio de E-mail destroy_custom_emoji: Eliminar Emoji Personalizado destroy_domain_allow: Eliminar Permissão de Domínio destroy_domain_block: Eliminar Bloqueio de Domínio @@ -254,6 +258,7 @@ pt-PT: destroy_ip_block: Eliminar regra de IP destroy_status: Eliminar Publicação destroy_unavailable_domain: Eliminar Domínio Indisponível + destroy_user_role: Eliminar Função disable_2fa_user: Desativar 2FA disable_custom_emoji: Desativar Emoji Personalizado disable_sign_in_token_auth_user: Desativar token de autenticação por e-mail para Utilizador @@ -280,24 +285,30 @@ pt-PT: update_announcement: Atualizar Anúncio update_custom_emoji: Atualizar Emoji Personalizado update_domain_block: Atualizar Bloqueio de Domínio + update_ip_block: Atualizar regra de IP update_status: Atualizar Estado + update_user_role: Atualizar Função actions: approve_appeal_html: "%{name} aprovou recurso da decisão de moderação de %{target}" approve_user_html: "%{name} aprovou a inscrição de %{target}" assigned_to_self_report_html: "%{name} atribuiu a denúncia %{target} a si próprio" change_email_user_html: "%{name} alterou o endereço de e-mail do utilizador %{target}" + change_role_user_html: "%{name} alterou a função de %{target}" confirm_user_html: "%{name} confirmou o endereço de e-mail do utilizador %{target}" create_account_warning_html: "%{name} enviou um aviso para %{target}" create_announcement_html: "%{name} criou o novo anúncio %{target}" + create_canonical_email_block_html: "%{name} bloqueou o e-mail com a hash %{target}" create_custom_emoji_html: "%{name} carregou o novo emoji %{target}" create_domain_allow_html: "%{name} habilitou a federação com o domínio %{target}" create_domain_block_html: "%{name} bloqueou o domínio %{target}" create_email_domain_block_html: "%{name} bloqueou o domínio de e-mail %{target}" create_ip_block_html: "%{name} criou regra para o IP %{target}" create_unavailable_domain_html: "%{name} parou a entrega ao domínio %{target}" + create_user_role_html: "%{name} criou a função %{target}" demote_user_html: "%{name} despromoveu o utilizador %{target}" destroy_announcement_html: "%{name} eliminou o anúncio %{target}" - destroy_custom_emoji_html: "%{name} destruiu o emoji %{target}" + destroy_canonical_email_block_html: "%{name} desbloqueou o e-mail com a hash %{target}" + destroy_custom_emoji_html: "%{name} eliminou o emoji %{target}" destroy_domain_allow_html: "%{name} desabilitou a federação com o domínio %{target}" destroy_domain_block_html: "%{name} desbloqueou o domínio %{target}" destroy_email_domain_block_html: "%{name} desbloqueou o domínio de e-mail %{target}" @@ -305,6 +316,7 @@ pt-PT: destroy_ip_block_html: "%{name} eliminou regra para o IP %{target}" destroy_status_html: "%{name} removeu a publicação de %{target}" destroy_unavailable_domain_html: "%{name} retomou a entrega ao domínio %{target}" + destroy_user_role_html: "%{name} eliminou a função %{target}" disable_2fa_user_html: "%{name} desativou o requerimento de autenticação em dois passos para o utilizador %{target}" disable_custom_emoji_html: "%{name} desabilitou o emoji %{target}" disable_sign_in_token_auth_user_html: "%{name} desativou token de autenticação por e-mail para %{target}" @@ -331,8 +343,9 @@ pt-PT: update_announcement_html: "%{name} atualizou o anúncio %{target}" update_custom_emoji_html: "%{name} atualizou o emoji %{target}" update_domain_block_html: "%{name} atualizou o bloqueio de domínio para %{target}" + update_ip_block_html: "%{name} alterou regra para IP %{target}" update_status_html: "%{name} atualizou o estado de %{target}" - deleted_status: "(publicação eliminada)" + update_user_role_html: "%{name} alterou a função %{target}" empty: Não foram encontrados registos. filter_by_action: Filtrar por ação filter_by_user: Filtrar por utilizador @@ -795,8 +808,8 @@ pt-PT: title: Visualização da linha temporal title: Configurações do site trendable_by_default: - desc_html: Afecta as hashtags que ainda não tenham sido proibidas - title: Permitir hashtags em tendência sem revisão prévia + desc_html: Conteúdo específico em tendência pode mesmo assim ser explicitamente rejeitado + title: Permitir tendências sem revisão prévia trends: desc_html: Exibir publicamente hashtags atualmente em destaque que já tenham sido revistas anteriormente title: Hashtags em destaque @@ -1181,6 +1194,8 @@ pt-PT: edit: add_keyword: Adicionar palavra-chave keywords: Palavras-chave + statuses: Publicações individuais + statuses_hint_html: Este filtro aplica-se a publicações individuais selecionadas independentemente de estas corresponderem às palavras-chave abaixo. Reveja ou remova publicações do filtro. title: Editar filtros errors: deprecated_api_multiple_keywords: Estes parâmetros não podem ser alterados a partir deste aplicativo porque se aplicam a mais de um filtro de palavra-chave. Use um aplicativo mais recente ou a interface web. @@ -1194,10 +1209,23 @@ pt-PT: keywords: one: "%{count} palavra-chave" other: "%{count} palavras-chaves" + statuses: + one: "%{count} publicação" + other: "%{count} publicações" + statuses_long: + one: "%{count} publicação individual ocultada" + other: "%{count} publicações individuais ocultadas" title: Filtros new: save: Salvar novo filtro title: Adicionar novo filtro + statuses: + back_to_filter: Voltar ao filtro + batch: + remove: Remover do filtro + index: + hint: Este filtro aplica-se a publicações individuais selecionadas independentemente de outros critérios. Pode adicionar mais publicações a este filtro através da interface web. + title: Publicações filtradas footer: developers: Responsáveis pelo desenvolvimento more: Mais… @@ -1205,12 +1233,22 @@ pt-PT: trending_now: Tendências atuais generic: all: Tudo + all_items_on_page_selected_html: + one: "%{count} item nesta página está selecionado." + other: Todo os %{count} items nesta página estão selecionados. + all_matching_items_selected_html: + one: "%{count} item que corresponde à sua pesquisa está selecionado." + other: Todos os %{count} items que correspondem à sua pesquisa estão selecionados. changes_saved_msg: Alterações guardadas! copy: Copiar delete: Eliminar + deselect: Desmarcar todos none: Nenhum order_by: Ordenar por save_changes: Guardar alterações + select_all_matching_items: + one: Selecione %{count} item que corresponde à sua pesquisa. + other: Selecione todos os %{count} items que correspondem à sua pesquisa. today: hoje validation_errors: one: Algo não está correcto. Por favor vê o erro abaixo @@ -1319,17 +1357,6 @@ pt-PT: subject: "%{name} submeteu uma denúncia" sign_up: subject: "%{name} inscreveu-se" - digest: - action: Ver todas as notificações - body: Aqui tens um breve resumo do que perdeste desde o último acesso a %{since} - mention: "%{name} mencionou-te em:" - new_followers_summary: - one: Tens um novo seguidor! Boa! - other: Tens %{count} novos seguidores! Fantástico! - subject: - one: "1 nova notificação desde o seu último acesso 🐘" - other: "%{count} novas notificações desde o seu último acesso 🐘" - title: Enquanto estiveste ausente… favourite: body: 'O teu post foi adicionado aos favoritos por %{name}:' subject: "%{name} adicionou o teu post aos favoritos" diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 90f2db0c4..b129c8901 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -245,17 +245,21 @@ ru: approve_user: Утвердить assigned_to_self_report: Присвоение жалоб change_email_user: Изменение эл. почты пользователя + change_role_user: Изменить роль пользователя confirm_user: Подтверждение пользователей create_account_warning: Выдача предупреждения create_announcement: Создание объявлений + create_canonical_email_block: Создать блокировку эл. почты create_custom_emoji: Добавление эмодзи create_domain_allow: Разрешение доменов create_domain_block: Блокировка доменов create_email_domain_block: Блокировка e-mail доменов create_ip_block: Создание правил для IP-адресов create_unavailable_domain: Добавление домена в список недоступных + create_user_role: Создать роль demote_user: Разжалование пользователей destroy_announcement: Удаление объявлений + destroy_canonical_email_block: Удалить блокировку эл. почты destroy_custom_emoji: Удаление эмодзи destroy_domain_allow: Отзыв разрешений для доменов destroy_domain_block: Разблокировка доменов @@ -264,6 +268,7 @@ ru: destroy_ip_block: Удаление правил для IP-адресов destroy_status: Удаление постов destroy_unavailable_domain: Исключение доменов из списка недоступных + destroy_user_role: Удалить роль disable_2fa_user: Отключение 2FA disable_custom_emoji: Отключение эмодзи disable_sign_in_token_auth_user: Отключение аутентификации по e-mail кодам у пользователей @@ -290,21 +295,26 @@ ru: update_announcement: Обновление объявлений update_custom_emoji: Обновление эмодзи update_domain_block: Изменение блокировки домена + update_ip_block: Обновить правило для IP-адреса update_status: Изменение постов + update_user_role: Обновить роль actions: approve_appeal_html: "%{name} одобрил апелляцию на умеренное решение от %{target}" approve_user_html: "%{name} утвердил(а) регистрацию %{target}" assigned_to_self_report_html: "%{name} назначил(а) себя для решения жалобы %{target}" change_email_user_html: "%{name} сменил(а) e-mail пользователя %{target}" + change_role_user_html: "%{name} изменил(а) роль %{target}" confirm_user_html: "%{name} подтвердил(а) e-mail адрес пользователя %{target}" create_account_warning_html: "%{name} выдал(а) предупреждение %{target}" create_announcement_html: "%{name} создал(а) новое объявление %{target}" + create_canonical_email_block_html: "%{name} заблокировал(а) эл. почту с хешем %{target}" create_custom_emoji_html: "%{name} загрузил(а) новый эмодзи %{target}" create_domain_allow_html: "%{name} разрешил(а) федерацию с доменом %{target}" create_domain_block_html: "%{name} заблокировал(а) домен %{target}" create_email_domain_block_html: "%{name} заблокировал(а) e-mail домен %{target}" create_ip_block_html: "%{name} создал(а) правило для IP %{target}" create_unavailable_domain_html: "%{name} приостановил доставку на узел %{target}" + create_user_role_html: "%{name} создал(а) роль %{target}" demote_user_html: "%{name} разжаловал(а) пользователя %{target}" destroy_announcement_html: "%{name} удалил(а) объявление %{target}" destroy_custom_emoji_html: "%{name} удалил(а) эмодзи %{target}" @@ -315,6 +325,7 @@ ru: destroy_ip_block_html: "%{name} удалил(а) правило для IP %{target}" destroy_status_html: "%{name} удалил(а) пост пользователя %{target}" destroy_unavailable_domain_html: "%{name} возобновил доставку на узел %{target}" + destroy_user_role_html: "%{name} удалил(а) роль %{target}" disable_2fa_user_html: "%{name} отключил(а) требование двухэтапной авторизации для пользователя %{target}" disable_custom_emoji_html: "%{name} отключил(а) эмодзи %{target}" disable_sign_in_token_auth_user_html: "%{name} отключил(а) аутентификацию по e-mail кодам для %{target}" @@ -342,7 +353,6 @@ ru: update_custom_emoji_html: "%{name} обновил(а) эмодзи %{target}" update_domain_block_html: "%{name} обновил(а) блокировку домена для %{target}" update_status_html: "%{name} изменил(а) пост пользователя %{target}" - deleted_status: "(удалённый пост)" empty: Журнал пуст. filter_by_action: Фильтр по действию filter_by_user: Фильтр по пользователю @@ -779,9 +789,6 @@ ru: desc_html: Показывать публичную ленту на приветственной странице title: Предпросмотр ленты title: Настройки сайта - trendable_by_default: - desc_html: Влияет на хэштеги, которые не были ранее запрещены - title: Разрешить добавление хештегов в список актульных без предварительной проверки trends: desc_html: Публично отобразить проверенные хэштеги, актуальные на данный момент title: Популярные хэштеги @@ -1139,7 +1146,7 @@ ru: csv: CSV domain_blocks: Доменные блокировки lists: Списки - mutes: Ваши игнорируемые + mutes: Ваши игнорируете storage: Ваши файлы featured_tags: add_new: Добавить @@ -1156,6 +1163,7 @@ ru: edit: add_keyword: Добавить ключевое слово keywords: Ключевые слова + statuses: Отдельные сообщения title: Изменить фильтр errors: deprecated_api_multiple_keywords: Эти параметры нельзя изменить из этого приложения, так как применяются к более чем одному ключевому слову фильтра. Используйте более последнее приложение или веб-интерфейс. @@ -1175,6 +1183,10 @@ ru: new: save: Сохранить новый фильтр title: Добавить фильтр + statuses: + back_to_filter: Вернуться к фильтру + batch: + remove: Удалить из фильтра footer: developers: Разработчикам more: Ещё… @@ -1292,7 +1304,7 @@ ru: title: Модерация move_handler: carry_blocks_over_text: Этот пользователь переехал с учётной записи %{acct}, которую вы заблокировали. - carry_mutes_over_text: Этот пользователь переехал с учётной записи %{acct}, которую вы добавили в список игнорирования. + carry_mutes_over_text: Этот пользователь перешёл с учётной записи %{acct}, которую вы игнорируете. copy_account_note_text: 'Этот пользователь переехал с %{acct}, вот ваша предыдущая заметка о нём:' notification_mailer: admin: @@ -1300,21 +1312,6 @@ ru: subject: "%{name} отправил жалобу" sign_up: subject: "%{name} зарегистрирован" - digest: - action: Просмотреть все уведомления - body: Вот краткая сводка сообщений, которые вы пропустили с последнего захода %{since} - mention: "%{name} упомянул(а) Вас в:" - new_followers_summary: - few: У вас появилось %{count} новых подписчика! Отлично! - many: У вас появилось %{count} новых подписчиков! Отлично! - one: Также, пока вас не было, у вас появился новый подписчик! Ура! - other: Также, пока вас не было, у вас появилось %{count} новых подписчиков! Отлично! - subject: - few: "%{count} новых уведомления с вашего последнего посещения 🐘" - many: "%{count} новых уведомлений с вашего последнего посещения 🐘" - one: "1 новое уведомление с вашего последнего посещения 🐘" - other: "%{count} новых уведомлений с вашего последнего посещения 🐘" - title: В ваше отсутствие… favourite: body: "%{name} добавил(а) ваш пост в избранное:" subject: "%{name} добавил(а) ваш пост в избранное" @@ -1568,7 +1565,7 @@ ru: enabled_hint: Автоматически удаляет ваши посты после того, как они достигли определённого возрастного порога, за некоторыми исключениями ниже. exceptions: Исключения explanation: Из-за того, что удаление постов — это ресурсоёмкий процесс, оно производится медленно со временем, когда сервер менее всего загружен. По этой причине, посты могут удаляться не сразу, а спустя определённое время, по достижению возрастного порога. - ignore_favs: Игнорировать отметки «избранного» + ignore_favs: Игнорировать избранное ignore_reblogs: Игнорировать продвижения interaction_exceptions: Исключения на основе взаимодействий interaction_exceptions_explanation: 'Обратите внимание: нет никаких гарантий, что посты будут удалены, после того, как они единожды перешли порог по отметкам «избранного» или продвижений.' diff --git a/config/locales/sc.yml b/config/locales/sc.yml index e6ee2bca9..60dcbbc9e 100644 --- a/config/locales/sc.yml +++ b/config/locales/sc.yml @@ -257,7 +257,6 @@ sc: create_ip_block_html: "%{name} at creadu una règula pro s'IP %{target}" demote_user_html: "%{name} at degradadu s'utente %{target}" destroy_announcement_html: "%{name} at cantzelladu s'annùntziu %{target}" - destroy_custom_emoji_html: "%{name} at cantzelladu s'emoji %{target}" destroy_domain_allow_html: "%{name} no at permìtidu sa federatzione cun su domìniu %{target}" destroy_domain_block_html: "%{name} at isblocadu su domìniu %{target}" destroy_email_domain_block_html: "%{name} at isblocadu su domìniu de posta eletrònica %{target}" @@ -285,7 +284,6 @@ sc: update_custom_emoji_html: "%{name} at atualizadu s'emoji %{target}" update_domain_block_html: "%{name} at atualizadu su blocu de domìniu pro %{target}" update_status_html: "%{name} at atualizadu sa publicatzione de %{target}" - deleted_status: "(istadu cantzelladu)" empty: Perunu registru agatadu. filter_by_action: Filtra pro atzione filter_by_user: Filtra pro utente @@ -571,9 +569,6 @@ sc: desc_html: Ammustra su ligàmene a sa lìnia de tempus pùblica in sa pàgina initziale e permite s'atzessu pro mèdiu de s'API a sa lìnia de tempus pùblica sena autenticatzione title: Permite s'atzessu no autenticadu a sa lìnia de tempus pùblica title: Cunfiguratzione de su logu - trendable_by_default: - desc_html: Tocat a is etichetas chi non siant istadas refudadas prima - title: Permite chi is etichetas divenant tendèntzia sena revisione pretzedente trends: desc_html: Ammustra in pùblicu is etichetas chi siant istadas revisionadas in passadu e chi oe siant in tendèntzia title: Etichetas de tendèntzia @@ -910,14 +905,6 @@ sc: carry_mutes_over_text: Custa persone s'est tramudada dae %{acct}, chi as postu a sa muda. copy_account_note_text: 'Custa persone s''est tramudada dae %{acct}, custas sunt is notas antepostas tuas chi ddi pertocant:' notification_mailer: - digest: - action: Ammustra totu is notìficas - body: Custu est unu resumu de su chi ti est sutzèdidu dae sa visita ùrtima tua su %{since} - mention: "%{name} t'at mentovadu in:" - new_followers_summary: - one: In prus, %{count} persone noa ti sighit dae cando fias assente. Incredìbile! - other: In prus, %{count} persones noas ti sighint dae cando fias assente. Incredìbile! - title: Durante s'ausèntzia tua... favourite: body: "%{name} at marcadu comente a preferidu s'istadu tuo:" subject: "%{name} at marcadu comente a preferidu s'istadu tuo" diff --git a/config/locales/si.yml b/config/locales/si.yml index 811cd7a47..fded19b17 100644 --- a/config/locales/si.yml +++ b/config/locales/si.yml @@ -288,7 +288,6 @@ si: create_unavailable_domain_html: "%{name} වසම %{target}වෙත බෙදා හැරීම නැවැත්වීය" demote_user_html: "%{name} පහත හෙලන ලද පරිශීලක %{target}" destroy_announcement_html: "%{name} මකා දැමූ නිවේදනය %{target}" - destroy_custom_emoji_html: "%{name} විනාශ වූ ඉමොජි %{target}" destroy_domain_allow_html: වසම %{target}සමඟ %{name} අවසර නොදුන් සම්මේලනය destroy_domain_block_html: "%{name} අවහිර නොකළ වසම %{target}" destroy_email_domain_block_html: "%{name} අවහිර නොකළ විද්‍යුත් තැපැල් වසම %{target}" @@ -323,7 +322,6 @@ si: update_custom_emoji_html: "%{name} යාවත්කාලීන කළ ඉමොජි %{target}" update_domain_block_html: "%{target}සඳහා %{name} යාවත්කාලීන කරන ලද වසම් වාරණ" update_status_html: "%{name} %{target}යාවත්කාලීන කරන ලද පළ කිරීම" - deleted_status: "(මකා දැමූ පළ කිරීම)" empty: ලඝු-සටහන් හමු නොවිණි. filter_by_action: ක්‍රියාව අනුව පෙරන්න filter_by_user: පරිශීලක අනුව පෙරන්න @@ -724,9 +722,6 @@ si: desc_html: ගොඩබෑමේ පිටුවේ පොදු කාලරාමුව වෙත සබැඳිය සංදර්ශනය කරන්න සහ සත්‍යාපනයකින් තොරව පොදු කාලරේඛාවට API ප්‍රවේශයට ඉඩ දෙන්න title: පොදු කාලරේඛාවට අනවසර පිවිසීමට ඉඩ දෙන්න title: අඩවියේ සැකසුම් - trendable_by_default: - desc_html: කලින් අවසර නොදුන් හැෂ් ටැග් වලට බලපායි - title: පෙර සමාලෝචනයකින් තොරව හැෂ් ටැග් වලට නැඹුරු වීමට ඉඩ දෙන්න trends: desc_html: දැනට ප්‍රවණතා ඇති කලින් සමාලෝචනය කළ අන්තර්ගතය ප්‍රසිද්ධියේ සංදර්ශන කරන්න title: ප්රවණතා @@ -1240,17 +1235,6 @@ si: subject: "%{name} වාර්තාවක් ඉදිරිපත් කළේය" sign_up: subject: "%{name} අත්සන් කර ඇත" - digest: - action: සියලුම දැනුම්දීම් බලන්න - body: "%{since}වෙනිදා ඔබගේ අවසන් සංචාරයේ සිට ඔබට මග හැරුණු පණිවිඩවල කෙටි සාරාංශයක් මෙන්න" - mention: "%{name} ඔබව සඳහන් කළේ:" - new_followers_summary: - one: එසේම, ඔබ බැහැරව සිටියදී එක් නව අනුගාමිකයෙකු ලබා ගෙන ඇත! Yay! - other: එසේම, ඔබ බැහැරව සිටියදී නව අනුගාමිකයින් %{count} ක් ලබාගෙන ඇත! අරුම පුදුම! - subject: - one: "ඔබගේ අවසන් සංචාරයේ සිට 1 නව දැනුම්දීමක් 🐘" - other: "ඔබගේ අවසන් සංචාරයේ සිට නව දැනුම්දීම් %{count} ක් 🐘" - title: ඔබ නොමැති විට... favourite: body: 'ඔබේ පළ කිරීම %{name}විසින් ප්‍රිය කරන ලදී:' subject: "%{name} ඔබගේ පළ කිරීම ප්‍රිය කරන ලදී" diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index cf450f825..559185c2c 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -253,6 +253,7 @@ ca: events: Esdeveniments activats url: URL del extrem 'no': 'No' + not_recommended: No recomanat recommended: Recomanat required: mark: "*" diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index bc84e0f39..61456e921 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -68,6 +68,11 @@ cs: with_dns_records: Dojde k pokusu o překlad DNS záznamů dané domény a výsledky budou rovněž zablokovány featured_tag: name: 'Nejspíš budete chtít použít jeden z těchto:' + filters: + action: Vyberte jakou akci provést, když příspěvek odpovídá filtru + actions: + hide: Úplně schovat filtrovaný obsah tak, jako by neexistoval + warn: Schovat filtrovaný obsah za varováním zmiňujicím název filtru form_challenge: current_password: Vstupujete do zabezpečeného prostoru imports: @@ -184,6 +189,7 @@ cs: setting_use_pending_items: Pomalý režim severity: Vážnost sign_in_token_attempt: Bezpečnostní kód + title: Název type: Typ importu username: Uživatelské jméno username_or_email: Uživatelské jméno nebo e-mail @@ -192,6 +198,10 @@ cs: with_dns_records: Zahrnout MX záznamy a IP adresy domény featured_tag: name: Hashtag + filters: + actions: + hide: Zcela skrýt + warn: Skrýt s varováním interactions: must_be_follower: Blokovat oznámení od lidí, kteří vás nesledují must_be_following: Blokovat oznámení od lidí, které nesledujete diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index 5077e16ff..5de688e12 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -253,6 +253,7 @@ da: events: Aktive begivenheder url: Endepunkts-URL 'no': Nej + not_recommended: Ikke anbefalet recommended: Anbefalet required: mark: "*" diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index bbeb610ec..0d712bf5f 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -22,9 +22,9 @@ de: suspend: Verhindert jegliche Interaktion von oder zu diesem Konto und löscht dessen Inhalt. Kann innerhalb von 30 Tagen rückgängig gemacht werden. warning_preset_id: Optional. Du kannst immer noch eigenen Text an das Ende der Vorlage hinzufügen announcement: - all_day: Wenn aktiviert werden nur die Daten des Zeitraums angezeigt + all_day: Wenn aktiviert, werden nur die Daten des Zeitraums angezeigt ends_at: Optional. Die Ankündigung wird zu diesem Zeitpunkt automatisch zurückgezogen - scheduled_at: Leer lassen um die Ankündigung sofort zu veröffentlichen + scheduled_at: Leer lassen, um die Ankündigung sofort zu veröffentlichen starts_at: Optional. Falls deine Ankündigung an einen bestimmten Zeitraum gebunden ist text: Du kannst die Toot-Syntax verwenden. Bitte beachte den Platz, den die Ankündigung auf dem Bildschirm des Benutzers einnehmen wird appeal: @@ -37,7 +37,7 @@ de: current_password: Aus Sicherheitsgründen gib bitte das Passwort des aktuellen Kontos ein current_username: Um das zu bestätigen, gib den Benutzernamen des aktuellen Kontos ein digest: Wenn du eine lange Zeit inaktiv bist, wird dir eine Zusammenfassung von Erwähnungen zugeschickt, die du in deiner Abwesenheit empfangen hast - discoverable: Erlaube deinem Konto durch Empfehlungen, Trends und andere Funktionen von Fremden entdeckt zu werden + discoverable: Erlaube deinem Konto, durch Empfehlungen, Trends und andere Funktionen von Fremden entdeckt zu werden email: Du wirst eine Bestätigungs-E-Mail erhalten fields: Du kannst bis zu 4 Elemente auf deinem Profil anzeigen lassen, die als Tabelle dargestellt werden header: PNG, GIF oder JPG. Maximal %{size}. Wird auf %{dimensions} px herunterskaliert @@ -58,14 +58,14 @@ de: setting_noindex: Betrifft dein öffentliches Profil und deine Beiträge setting_show_application: Die Anwendung die du nutzt wird in der detaillierten Ansicht deiner Beiträge angezeigt setting_use_blurhash: Die Farbverläufe basieren auf den Farben der versteckten Medien, aber verstecken jegliche Details - setting_use_pending_items: Neue Beiträge hinter einem Klick verstecken anstatt automatisch zu scrollen + setting_use_pending_items: Neue Beiträge hinter einem Klick verstecken, anstatt automatisch zu scrollen username: Dein Benutzername wird auf %{domain} einzigartig sein whole_word: Wenn das Schlagwort nur aus Buchstaben und Zahlen besteht, wird es nur angewendet, wenn es dem ganzen Wort entspricht domain_allow: - domain: Diese Domain kann Daten von diesem Server abrufen und eingehende Daten werden verarbeitet und gespeichert + domain: Diese Domain kann Daten von diesem Server abrufen, und eingehende Daten werden verarbeitet und gespeichert email_domain_block: domain: Dies kann der Domänenname sein, der in der E-Mail-Adresse oder dem von ihm verwendeten MX-Eintrag angezeigt wird. Er wird bei der Anmeldung überprüft. - with_dns_records: Ein Versuch die DNS-Einträge der Domain aufzulösen wurde unternommen und diese Ergebnisse werden unter anderem auch geblockt + with_dns_records: Ein Versuch, die DNS-Einträge der Domain aufzulösen, wurde unternommen, und diese Ergebnisse werden unter anderem auch blockiert featured_tag: name: 'Du möchtest vielleicht einen von diesen benutzen:' filters: @@ -82,7 +82,7 @@ de: ip_block: comment: Optional. Denke daran, warum du diese Regel hinzugefügt hast. expires_in: IP-Adressen sind eine endliche Ressource, sie werden manchmal geteilt und werden ab und zu ausgetauscht. Aus diesem Grund werden unbestimmte IP-Blöcke nicht empfohlen. - ip: Gebe eine IPv4- oder IPv6-Adresse an. Du kannst ganze Bereiche mit der CIDR-Syntax blockieren. Achte darauf, dass du dich nicht aussperrst! + ip: Gib eine IPv4- oder IPv6-Adresse an. Du kannst ganze Bereiche mit der CIDR-Syntax blockieren. Achte darauf, dass du dich nicht aussperrst! severities: no_access: Zugriff auf alle Ressourcen blockieren sign_up_block: Neue Anmeldungen werden nicht möglich sein @@ -185,7 +185,7 @@ de: setting_hide_network: Netzwerk ausblenden setting_noindex: Suchmaschinen-Indexierung verhindern setting_reduce_motion: Bewegung in Animationen verringern - setting_show_application: Anwendung preisgeben, die benutzt wurde um Beiträge zu versenden + setting_show_application: Anwendung preisgeben, die benutzt wurde, um Beiträge zu versenden setting_system_font_ui: Standardschriftart des Systems verwenden setting_theme: Theme setting_trends: Heutige Trends anzeigen @@ -200,7 +200,7 @@ de: username_or_email: Profilname oder E-Mail whole_word: Ganzes Wort email_domain_block: - with_dns_records: MX-Einträge und IPs der Domain einbeziehen + with_dns_records: MX-Einträge und IP-Adressen der Domain einbeziehen featured_tag: name: Hashtag filters: @@ -224,7 +224,7 @@ de: sign_up_requires_approval: Anmeldungen begrenzen severity: Regel notification_emails: - appeal: Jemand hat Einspruch an eine Moderatorentscheidung + appeal: Jemand hat Einspruch gegen eine Moderatorentscheidung eingelegt digest: Kurzfassungen über E-Mail senden favourite: E-Mail senden, wenn jemand meinen Beitrag favorisiert follow: E-Mail senden, wenn mir jemand folgt @@ -237,10 +237,10 @@ de: rule: text: Regel tag: - listable: Erlaube diesem Hashtag im Profilverzeichnis zu erscheinen + listable: Erlaube diesem Hashtag, im Profilverzeichnis zu erscheinen name: Hashtag - trendable: Erlaube es diesen Hashtag in den Trends erscheinen zu lassen - usable: Beiträge erlauben, diesen Hashtag zu verwenden + trendable: Erlaube es, diesen Hashtag in den Trends erscheinen zu lassen + usable: Beiträgen erlauben, diesen Hashtag zu verwenden user: role: Rolle user_role: @@ -253,11 +253,12 @@ de: events: Aktivierte Ereignisse url: Endpunkt-URL 'no': Nein + not_recommended: Nicht empfohlen recommended: Empfohlen required: mark: "*" text: Pflichtfeld title: sessions: - webauthn: Verwende einer deiner Sicherheitsschlüssel zum Anmelden + webauthn: Verwende einen deiner Sicherheitsschlüssel zum Anmelden 'yes': Ja diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml index 53b25da8e..e11692516 100644 --- a/config/locales/simple_form.es-AR.yml +++ b/config/locales/simple_form.es-AR.yml @@ -253,6 +253,7 @@ es-AR: events: Eventos habilitados url: Dirección web del punto final 'no': 'No' + not_recommended: No recomendado recommended: Opción recomendada required: mark: "*" diff --git a/config/locales/simple_form.es-MX.yml b/config/locales/simple_form.es-MX.yml index 3128209e8..327815927 100644 --- a/config/locales/simple_form.es-MX.yml +++ b/config/locales/simple_form.es-MX.yml @@ -85,6 +85,7 @@ es-MX: ip: Introduzca una dirección IPv4 o IPv6. Puede bloquear rangos completos usando la sintaxis CIDR. ¡Tenga cuidado de no quedarse fuera! severities: no_access: Bloquear acceso a todos los recursos + sign_up_block: Los nuevos registros se deshabilitarán sign_up_requires_approval: Nuevos registros requerirán su aprobación severity: Elegir lo que pasará con las peticiones desde esta IP rule: @@ -219,6 +220,7 @@ es-MX: ip: IP severities: no_access: Bloquear acceso + sign_up_block: Bloquear registros sign_up_requires_approval: Limitar registros severity: Regla notification_emails: diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index 25efe37cd..03357e44b 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -253,6 +253,7 @@ es: events: Eventos habilitados url: URL de Endpoint 'no': 'No' + not_recommended: No recomendado recommended: Recomendado required: mark: "*" diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index 189f51ab6..53e6a52b3 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -85,6 +85,7 @@ fi: ip: Kirjoita IPv4- tai IPv6-osoite. Voit estää kokonaisia alueita käyttämällä CIDR-syntaksia. Varo, että et lukitse itseäsi! severities: no_access: Estä pääsy kaikkiin resursseihin + sign_up_block: Uudet kirjautumiset eivät ole mahdollisia sign_up_requires_approval: Uudet rekisteröitymiset edellyttävät hyväksyntääsi severity: Valitse, mitä tapahtuu tämän IP-osoitteen pyynnöille rule: @@ -219,6 +220,7 @@ fi: ip: IP severities: no_access: Estä pääsy + sign_up_block: Estä kirjautumiset sign_up_requires_approval: Rajoita rekisteröitymisiä severity: Sääntö notification_emails: diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml index a9d801409..3b050eeee 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -253,6 +253,7 @@ gl: events: Eventos activados url: URL do extremo 'no': Non + not_recommended: Non é recomendable recommended: Recomendado required: mark: "*" diff --git a/config/locales/simple_form.he.yml b/config/locales/simple_form.he.yml index fe0ed1a77..22b5d8480 100644 --- a/config/locales/simple_form.he.yml +++ b/config/locales/simple_form.he.yml @@ -85,6 +85,7 @@ he: ip: נא להכניס כתובת IPv4 או IPv6. ניתן לחסום תחומים שלמים על ידי שימוש בתחביר CIDR. זהירות לא לנעול את עצמכם בחוץ! severities: no_access: חסימת גישה לכל המשאבים + sign_up_block: הרשמות חדשות לא יאופשרו sign_up_requires_approval: הרשמות חדשות ידרשו את אישורך severity: נא לבחור מה יקרה לבקשות מכתובת IP זו rule: @@ -219,6 +220,7 @@ he: ip: IP severities: no_access: חסימת גישה + sign_up_block: חסימת הרשמות sign_up_requires_approval: הגבלת הרשמות severity: כלל notification_emails: @@ -251,6 +253,7 @@ he: events: אירועים מאופשרים url: כתובת URL של נקודת הקצה 'no': לא + not_recommended: לא מומלצים recommended: מומלץ required: mark: "*" diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index df19f4aa7..16465ff79 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -80,7 +80,7 @@ hu: invite_request: text: Ez segít nekünk átnézni a jelentkezésedet ip_block: - comment: Opcionális. Emlékeztető, hogy miért is vetted fel ezt a szabályt. + comment: Nem kötelező. Emlékeztető, hogy miért is vetted fel ezt a szabályt. expires_in: Az IP címek korlátos erőforrások, ezért néha meg vannak osztva és gyakran gazdát is cserélnek. Ezért a korlátlan IP tiltások használatát nem javasoljuk. ip: Írj be egy IPv4 vagy IPv6 címet. A CIDR formátum használatával teljes tartományokat tilthatsz ki. Légy óvatos, hogy magadat véletlenül se zárd ki! severities: @@ -253,6 +253,7 @@ hu: events: Engedélyezett események url: Végponti URL 'no': Nem + not_recommended: Nem ajánlott recommended: Ajánlott required: mark: "*" diff --git a/config/locales/simple_form.io.yml b/config/locales/simple_form.io.yml index 743c8964a..bb5452471 100644 --- a/config/locales/simple_form.io.yml +++ b/config/locales/simple_form.io.yml @@ -85,6 +85,7 @@ io: ip: Tipez adreso di IPv4 o IPv6. Vu povas restrikar tota porteo per sintaxo CIDR. Sorgemez por ke vu ne klefklozas su! severities: no_access: Restriktez aceso a omna moyeni + sign_up_block: Nova registrago ne esos posibla sign_up_requires_approval: Nova registro bezonos vua aprobo severity: Selektez quo eventos kun demandi de ca IP rule: @@ -219,6 +220,7 @@ io: ip: IP severities: no_access: Depermisez aceso + sign_up_block: Obstruktez registragi sign_up_requires_approval: Limitigez registri severity: Regulo notification_emails: @@ -251,6 +253,7 @@ io: events: Aktivigita eventi url: URL di finpunto 'no': Ne + not_recommended: Ne rekomendesas recommended: Rekomendito required: mark: "*" diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml index 60cbb3341..bdc9c0380 100644 --- a/config/locales/simple_form.is.yml +++ b/config/locales/simple_form.is.yml @@ -233,13 +233,13 @@ is: pending_account: Nýr notandaaðgangur þarfnast yfirferðar reblog: Einhver endurbirti færsluna þína report: Ný kæra hefur verið send inn - trending_tag: Ný tilhneiging krefst yfirferðar + trending_tag: Nýtt vinsælt efni krefst yfirferðar rule: text: Regla tag: listable: Leyfa þessu myllumerki að birtast í leitum og í persónusniðamöppunni name: Myllumerki - trendable: Leyfa þessu myllumerki að birtast undir tilhneigingum + trendable: Leyfa þessu myllumerki að birtast undir vinsælu efni usable: Leyfa færslum að nota þetta myllumerki user: role: Hlutverk @@ -253,6 +253,7 @@ is: events: Virkjaðir atburðir url: Slóð á endapunkt 'no': Nei + not_recommended: Ekki mælt með þessu recommended: Mælt með required: mark: "*" diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml index 50a4caae9..aeabbcdfd 100644 --- a/config/locales/simple_form.it.yml +++ b/config/locales/simple_form.it.yml @@ -253,6 +253,7 @@ it: events: Eventi abilitati url: URL endpoint 'no': 'No' + not_recommended: Non consigliato recommended: Consigliato required: mark: "*" diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index 5469a7c04..fe8e010cf 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -253,6 +253,7 @@ ko: events: 활성화된 이벤트 url: 엔드포인트 URL 'no': 아니오 + not_recommended: 추천하지 않음 recommended: 추천함 required: mark: "*" diff --git a/config/locales/simple_form.ku.yml b/config/locales/simple_form.ku.yml index d08b4bf05..e4b0f0759 100644 --- a/config/locales/simple_form.ku.yml +++ b/config/locales/simple_form.ku.yml @@ -44,7 +44,7 @@ ku: inbox_url: URLyê di rûpela pêşî de guhêrkerê ku tu dixwazî bi kar bînî jê bigire irreversible: Şandiyên parzûnkirî êdî bê veger wenda bibe, heger parzûn paşê were rakirin jî nabe locale: Zimanê navrûyê bikarhêner, agahdarîyên e-name û pêl kirin - locked: Bi destan daxwazên şopê hilbijêrîne da ku kî bikaribe te bişopîne + locked: Bi pejirandina daxwazên şopandinê, kî dikare te bişopîne bi destan kontrol bike password: Herî kêm 8 tîpan bi kar bîne phrase: Ji rewşa nivîsê tîpên girdek/hûrdek an jî ji hişyariya naveroka ya şandiyê wek serbixwe wê were hevbeş kirin scopes: |- @@ -255,6 +255,7 @@ ku: events: Bûyerên çalakkirî url: Girêdana xala dawîbûnê 'no': Na + not_recommended: Nayê pêşniyarkirin recommended: Pêşniyarkirî required: mark: "*" diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml index d73da1c2a..cff70297e 100644 --- a/config/locales/simple_form.lv.yml +++ b/config/locales/simple_form.lv.yml @@ -253,6 +253,7 @@ lv: events: Iespējotie notikumi url: Galapunkta URL 'no': Nē + not_recommended: Nav ieteicams recommended: Ieteicams required: mark: "*" diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index 91a472b21..91ded57a6 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -85,6 +85,7 @@ pl: ip: Wprowadź adres IPv4 lub IPv6. Możesz zablokować całe zakresy za pomocą składni CIDR. Uważaj, aby się nie zablokować! severities: no_access: Zablokuj dostęp do wszystkich zasobów + sign_up_block: Nowe rejestracje nie będą możliwe sign_up_requires_approval: Nowe rejestracje będą wymagać twojej zgody severity: Wybierz co ma się stać z żadaniami z tego adresu IP rule: @@ -251,6 +252,7 @@ pl: events: Włączone zdarzenia url: Endpoint URL 'no': Nie + not_recommended: Niezalecane recommended: Polecane required: mark: "*" diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml index ab6c2e3ff..8c56bd2d2 100644 --- a/config/locales/simple_form.pt-PT.yml +++ b/config/locales/simple_form.pt-PT.yml @@ -253,6 +253,7 @@ pt-PT: events: Eventos ativados url: URL do Endpoint 'no': Não + not_recommended: Não recomendado recommended: Recomendado required: mark: "*" diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml index 8f897c917..a9042b25d 100644 --- a/config/locales/simple_form.ru.yml +++ b/config/locales/simple_form.ru.yml @@ -253,6 +253,7 @@ ru: events: Включенные события url: Endpoint URL 'no': Нет + not_recommended: Не рекомендуется recommended: Рекомендуем required: mark: "*" diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml index 854670fe5..2724b1727 100644 --- a/config/locales/simple_form.sl.yml +++ b/config/locales/simple_form.sl.yml @@ -253,6 +253,7 @@ sl: events: Omogočeni dogodki url: URL končne točke 'no': Ne + not_recommended: Ni priporočeno recommended: Priporočeno required: mark: "*" diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index 8a23d1f6b..27ad0abd5 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -253,6 +253,7 @@ th: events: เหตุการณ์ที่เปิดใช้งาน url: URL ปลายทาง 'no': ไม่ + not_recommended: ไม่แนะนำ recommended: แนะนำ required: mark: "*" diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml index f63ad13aa..20bb03cd4 100644 --- a/config/locales/simple_form.tr.yml +++ b/config/locales/simple_form.tr.yml @@ -253,6 +253,7 @@ tr: events: Etkin olaylar url: Uç nokta URL’si 'no': Hayır + not_recommended: Önerilmez recommended: Önerilen required: mark: "*" diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index df9f1fb4d..3f12b6d6e 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -253,6 +253,7 @@ uk: events: Увімкнені події url: URL кінцевої точки 'no': Ні + not_recommended: Не рекомендовано recommended: Рекомендовано required: mark: "*" diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml index 143064c5d..664974e4e 100644 --- a/config/locales/simple_form.vi.yml +++ b/config/locales/simple_form.vi.yml @@ -253,6 +253,7 @@ vi: events: Những sự kiện đã bật url: URL endpoint 'no': Tắt + not_recommended: Không đề xuất recommended: Đề xuất required: mark: "*" diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index 0c3c28c67..0239304b1 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -33,7 +33,7 @@ zh-CN: autofollow: 通过邀请链接注册的用户将会自动关注你 avatar: 文件大小限制 %{size},只支持 PNG、GIF 或 JPG 格式。图片分辨率将会压缩至 %{dimensions}px bot: 来自这个帐户的绝大多数操作都是自动进行的,并且可能无人监控 - context: 过滤器的应用场景 + context: 过滤器的应用环境 current_password: 为了安全起见,请输入当前账号的密码 current_username: 请输入当前账号的用户名以确认 digest: 仅在你长时间未登录,且收到了私信时发送 @@ -146,7 +146,7 @@ zh-CN: chosen_languages: 语言过滤 confirm_new_password: 确认新密码 confirm_password: 确认密码 - context: 过滤器场景 + context: 过滤器环境 current_password: 当前密码 data: 数据文件 discoverable: 在本站用户目录中收录此账号 diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index 3691af892..b5eb3e8c1 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -253,6 +253,7 @@ zh-TW: events: 已啟用的事件 url: 端點 URL 'no': 否 + not_recommended: 不建議 recommended: 建議 required: mark: "*" diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 7b02930c2..4ed611b18 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -255,7 +255,6 @@ sk: change_email_user_html: "%{name} zmenil/a emailovú adresu užívateľa %{target}" confirm_user_html: "%{name} potvrdil/a emailovú adresu používateľa %{target}" create_account_warning_html: "%{name} poslal/a upozornenie užívateľovi %{target}" - deleted_status: "(zmazaný príspevok)" filter_by_action: Filtruj podľa úkonu filter_by_user: Trieď podľa užívateľa title: Kontrólny záznam @@ -575,9 +574,6 @@ sk: desc_html: Zobraziť verejnú nástenku na hlavnej stránke title: Náhľad nástenky title: Nastavenia stránky - trendable_by_default: - desc_html: Ovplyvňuje haštagy ktoré predtým neboli zakázané - title: Dovoľ haštagom zobrazovať sa ako populárne, bez predchodzieho posudzovania trends: desc_html: Verejne zobraz už schválené haštagy, ktoré práve trendujú title: Populárne haštagy @@ -913,16 +909,6 @@ sk: carry_blocks_over_text: Tento užívateľ sa presunul z účtu %{acct}, ktorý si mal/a zablokovaný. carry_mutes_over_text: Tento užívateľ sa presunul z účtu %{acct}, ktorý si mal/a stíšený. notification_mailer: - digest: - action: Zobraziť všetky notifikácie - body: Tu nájdete krátky súhrn správ ktoré ste zmeškali od svojej poslednj návštevi od %{since} - mention: "%{name} ťa spomenul/a v:" - new_followers_summary: - few: A ešte, kým si bol/a preč, si získal/a %{count} nových následovateľov! Hurá! - many: A ešte, kým si bol/a preč, si získal/a %{count} nových následovateľov! Hurá! - one: A ešte, kým si bol/a preč, si získal/a jedného nového následovateľa! Hurá! - other: A ešte, kým si bol/a preč, si získal/a %{count} nových následovateľov! Hurá! - title: Zatiaľ čo si bol/a preč… favourite: body: 'Tvoj príspevok bol uložený medzi obľúbené užívateľa %{name}:' subject: "%{name} si obľúbil/a tvoj príspevok" diff --git a/config/locales/sl.yml b/config/locales/sl.yml index ea7b8e6ba..1b1aa1b6a 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -245,17 +245,21 @@ sl: approve_user: Odobri uporabnika assigned_to_self_report: Dodeli prijavo change_email_user: Spremeni e-poštni naslov uporabnika + change_role_user: Spremeni vlogo uporabnika confirm_user: Potrdi uporabnika create_account_warning: Ustvari opozorilo create_announcement: Ustvari obvestilo + create_canonical_email_block: Ustvari blokado e-pošte create_custom_emoji: Ustvari emodži po meri create_domain_allow: Ustvari odobritev domene create_domain_block: Ustvari blokado domene create_email_domain_block: Ustvari blokado domene e-pošte create_ip_block: Ustvari pravilo IP create_unavailable_domain: Ustvari domeno, ki ni na voljo + create_user_role: Ustvari vlogo demote_user: Ponižaj uporabnika destroy_announcement: Izbriši obvestilo + destroy_canonical_email_block: Izbriši blokado e-pošte destroy_custom_emoji: Izbriši emodži po meri destroy_domain_allow: Izbriši odobritev domene destroy_domain_block: Izbriši blokado domene @@ -264,6 +268,7 @@ sl: destroy_ip_block: Izbriši pravilo IP destroy_status: Izbriši objavo destroy_unavailable_domain: Izbriši domeno, ki ni na voljo + destroy_user_role: Uniči vlogo disable_2fa_user: Onemogoči disable_custom_emoji: Onemogoči emodži po meri disable_sign_in_token_auth_user: Onemogoči overjanje z žetonom po e-pošti za uporabnika @@ -290,24 +295,30 @@ sl: update_announcement: Posodobi objavo update_custom_emoji: Posodobi emodži po meri update_domain_block: Posodobi blokado domene + update_ip_block: Posodobi pravilo IP update_status: Posodobi objavo + update_user_role: Posodobi vlogo actions: approve_appeal_html: "%{name} je ugodil pritožbi uporabnika %{target} na moderatorsko odločitev" approve_user_html: "%{name} je odobril/a registracijo iz %{target}" assigned_to_self_report_html: "%{name} je dodelil/a prijavo %{target} sebi" change_email_user_html: "%{name} je spremenil/a naslov e-pošte uporabnika %{target}" + change_role_user_html: "%{name} je spremenil/a vlogo %{target}" confirm_user_html: "%{name} je potrdil/a naslov e-pošte uporabnika %{target}" create_account_warning_html: "%{name} je poslal/a opozorilo %{target}" create_announcement_html: "%{name} je ustvarila/a novo obvestilo %{target}" + create_canonical_email_block_html: "%{name} je dal/a na črni seznam e-pošto s ključnikom %{target}" create_custom_emoji_html: "%{name} je posodobil/a emotikone %{target}" create_domain_allow_html: "%{name} je dovolil/a federacijo z domeno %{target}" create_domain_block_html: "%{name} je blokiral/a domeno %{target}" create_email_domain_block_html: "%{name} je dal/a na črni seznam e-pošto domene %{target}" create_ip_block_html: "%{name} je ustvaril/a pravilo za IP %{target}" create_unavailable_domain_html: "%{name} je prekinil/a dostavo v domeno %{target}" + create_user_role_html: "%{name} je ustvaril/a vlogo %{target}" demote_user_html: "%{name} je ponižal/a uporabnika %{target}" destroy_announcement_html: "%{name} je izbrisal/a obvestilo %{target}" - destroy_custom_emoji_html: "%{name} je uničil/a emotikone %{target}" + destroy_canonical_email_block_html: "%{name} je odstranil/a s črnega seznama e-pošto s ključnikom %{target}" + destroy_custom_emoji_html: "%{name} je izbrisal/a emotikon %{target}" destroy_domain_allow_html: "%{name} ni dovolil/a federacije z domeno %{target}" destroy_domain_block_html: "%{name} je odblokiral/a domeno %{target}" destroy_email_domain_block_html: "%{name} je odblokiral/a e-pošto domene %{target}" @@ -315,6 +326,7 @@ sl: destroy_ip_block_html: "%{name} je izbrisal/a pravilo za IP %{target}" destroy_status_html: "%{name} je odstranil/a objavo uporabnika %{target}" destroy_unavailable_domain_html: "%{name} je nadaljeval/a dostav v domeno %{target}" + destroy_user_role_html: "%{name} je izbrisal/a vlogo %{target}" disable_2fa_user_html: "%{name} je onemogočil/a dvofaktorsko zahtevo za uporabnika %{target}" disable_custom_emoji_html: "%{name} je onemogočil/a emotikone %{target}" disable_sign_in_token_auth_user_html: "%{name} je onemogočil/a overjanje z žetonom po e-pošti za uporabnika %{target}" @@ -341,8 +353,9 @@ sl: update_announcement_html: "%{name} je posodobil/a objavo %{target}" update_custom_emoji_html: "%{name} je posodobil/a emotikone %{target}" update_domain_block_html: "%{name} je posodobil/a domenski blok za %{target}" + update_ip_block_html: "%{name} je spremenil/a pravilo za IP %{target}" update_status_html: "%{name} je posodobil/a objavo uporabnika %{target}" - deleted_status: "(izbrisana objava)" + update_user_role_html: "%{name} je spremenil/a vlogo %{target}" empty: Ni najdenih zapisnikov. filter_by_action: Filtriraj po dejanjih filter_by_user: Filtriraj po uporabnikih @@ -827,8 +840,8 @@ sl: title: Predogled časovnice title: Nastavitve strani trendable_by_default: - desc_html: Velja za ključnike, ki niso bili poprej onemogočeni - title: Dovoli, da so ključniki v trendu brez predhodnega pregleda + desc_html: Določeno vsebino v trendu je še vedno možno izrecno prepovedati + title: Dovoli trende brez predhodnega pregleda trends: desc_html: Javno prikaži poprej pregledano vsebino, ki je trenutno v trendu title: Trendi @@ -1222,7 +1235,7 @@ sl: add_keyword: Dodaj ključno besedo keywords: Ključne besede statuses: Posamezne objave - statuses_hint_html: Ta filter se nanaša na posamezne objave ne glede na to, ali se ujemajo s spodnjimi ključnimi besedami. Te objave lahko pregledate in jih odstranite iz filtra, če kliknete tukaj. + statuses_hint_html: Ta filter velja za izbrane posamezne objave, ne glede na to, ali se ujemajo s spodnjimi ključnimi besedami. Preglejte ali odstarnite objave iz filtra. title: Uredite filter errors: deprecated_api_multiple_keywords: Teh parametrov ni mogoče spremeniti iz tega programa, ker veljajo za več kot eno ključno besedo filtra. Uporabite novejšo izdaj programa ali spletni vmesnik. @@ -1266,12 +1279,28 @@ sl: trending_now: Zdaj v trendu generic: all: Vse + all_items_on_page_selected_html: + few: Na tej strani so izbrani %{count} elementi. + one: Na tej strani je izbran %{count} element. + other: Na tej strani je izbranih %{count} elementov. + two: Na tej strani sta izbrana %{count} elementa. + all_matching_items_selected_html: + few: Izbrani so %{count} elementi, ki ustrezajo vašemu iskanju. + one: Izbran je %{count} element, ki ustreza vašemu iskanju. + other: Izbranih je %{count} elementov, ki ustrezajo vašemu iskanju. + two: Izbrana sta %{count} elementa, ki ustrezata vašemu iskanju. changes_saved_msg: Spremembe so uspešno shranjene! copy: Kopiraj delete: Izbriši + deselect: Prekliči ves izbor none: Brez order_by: Razvrsti po save_changes: Shrani spremembe + select_all_matching_items: + few: Izberite %{count} elemente, ki ustrezajo vašemu iskanju. + one: Izberite %{count} element, ki ustreza vašemu iskanju. + other: Izberite %{count} elementov, ki ustrezajo vašemu iskanju. + two: Izberite %{count} elementa, ki ustrezata vašemu iskanju. today: danes validation_errors: few: Nekaj še ni čisto v redu! Spodaj si oglejte %{count} napake @@ -1384,21 +1413,6 @@ sl: subject: "%{name} je oddal/a prijavo" sign_up: subject: "%{name} se je vpisal/a" - digest: - action: Prikaži vsa obvestila - body: Tukaj je kratek povzetek sporočil, ki ste jih zamudili od vašega zadnjega obiska v %{since} - mention: "%{name} vas je omenil/a v:" - new_followers_summary: - few: Prav tako ste pridobili %{count} nove sledilce, ko ste bili odsotni! Juhu! - one: Prav tako ste pridobili enega novega sledilca, ko ste bili odsotni! Juhu! - other: Prav tako ste pridobili %{count} novih sledilcev, ko ste bili odsotni! Juhu! - two: Prav tako ste pridobili %{count} nova sledilca, ko ste bili odsotni! Juhu! - subject: - few: "%{count} nova obvestila od vašega zadnjega obiska 🐘" - one: "%{count} novo obvestilo od vašega zadnjega obiska 🐘" - other: "%{count} novih obvestil od vašega zadnjega obiska 🐘" - two: "%{count} novi obvestili od vašega zadnjega obiska 🐘" - title: V vaši odsotnosti... favourite: body: "%{name} je vzljubil/a vašo objavo:" subject: "%{name} je vzljubil/a vašo objavo" diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 8a91cc6f4..ef72bfbdf 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -297,7 +297,6 @@ sq: create_unavailable_domain_html: "%{name} ndali dërgimin drejt përkatësisë %{target}" demote_user_html: "%{name} zhgradoi përdoruesin %{target}" destroy_announcement_html: "%{name} fshiu lajmërimin për %{target}" - destroy_custom_emoji_html: "%{name} asgjësoi emoxhin %{target}" destroy_domain_allow_html: "%{name} hoqi lejimin për federim me %{target}" destroy_domain_block_html: "%{name} zhbllokoi përkatësinë %{target}" destroy_email_domain_block_html: "%{name} hoqi bllokimin për përkatësinë email %{target}" @@ -332,7 +331,6 @@ sq: update_custom_emoji_html: "%{name} përditësoi emoxhin %{target}" update_domain_block_html: "%{name} përditësoi bllokimin e përkatësish për %{target}" update_status_html: "%{name} përditësoi gjendjen me %{target}" - deleted_status: "(fshiu gjendjen)" empty: S’u gjetën regjistra. filter_by_action: Filtroji sipas veprimit filter_by_user: Filtroji sipas përdoruesit @@ -791,9 +789,6 @@ sq: desc_html: Shfaqni lidhje te rrjedhë kohore publike në faqen hyrëse dhe lejoni te rrjedhë kohore publike hyrje API pa mirëfilltësim title: Lejo në rrjedhë kohore publike hyrje pa mirëfilltësim title: Rregullime sajti - trendable_by_default: - desc_html: Prek hashtag-ë që nuk kanë qenë të palejuar më parë - title: Lejo hashtag-ë në prirje pa paraparje paraprake trends: desc_html: Shfaqni publikisht hashtag-ë të shqyrtuar më parë që janë popullorë tani title: Hashtag-ë popullorë tani @@ -1310,17 +1305,6 @@ sq: subject: "%{name} parashtroi një raportim" sign_up: subject: "%{name} u regjistrua" - digest: - action: Shihini krejt njoftimet - body: Ja një përmbledhje e shkurtër e mesazheve që keni humbur që nga vizita juaj e fundit më %{since} - mention: "%{name} ju ka përmendur te:" - new_followers_summary: - one: Veç kësaj, u bëtë me një ndjekës të ri, teksa s’ishit këtu! Ëhë! - other: Veç kësaj, u bëtë me %{count} ndjekës të rinj, teksa s’ishit këtu! Shkëlqyeshëm! - subject: - one: "1 njoftim i ri që nga vizita juaj e fundit 🐘" - other: "%{count} njoftime të reja që nga vizita juaj e fundit 🐘" - title: Gjatë mungesës tuaj… favourite: body: 'Gjendja juaj u parapëlqye nga %{name}:' subject: "%{name} parapëlqeu gjendjen tuaj" diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index a94893b9e..692db061a 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -315,13 +315,6 @@ sr-Latn: moderation: title: Moderacija notification_mailer: - digest: - body: Evo kratak pregled šta ste propustili od poslednje posete od %{since} - mention: "%{name} Vas je pomenuo u:" - new_followers_summary: - few: Dobili ste %{count} nova pratioca! Sjajno! - one: Dobili ste jednog novog pratioca! Jeee! - other: Dobili ste %{count} novih pratioca! Sjajno! favourite: body: "%{name} je postavio kao omiljen Vaš status:" subject: "%{name} je postavio kao omiljen Vaš status" diff --git a/config/locales/sr.yml b/config/locales/sr.yml index 2042fc440..e6cbb26d2 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -146,7 +146,6 @@ sr: warn: Упозори web: Веб action_logs: - deleted_status: "(обрисан статус)" title: Записник custom_emojis: by_domain: Домен @@ -504,15 +503,6 @@ sr: moderation: title: Модерација notification_mailer: - digest: - action: Погледајте сва обавештења - body: Ево кратак преглед порука које сте пропустили од последње посете од %{since} - mention: "%{name} Вас је поменуо у:" - new_followers_summary: - few: Добили сте %{count} нова пратиоца! Сјајно! - one: Добили сте једног новог пратиоца! Јеее! - other: Добили сте %{count} нових пратиоца! Сјајно! - title: Док нисте били ту... favourite: body: "%{name} је поставио као омиљен Ваш статус:" subject: "%{name} је поставио као омиљен Ваш статус" diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 1e238b196..77a44b75d 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -258,7 +258,6 @@ sv: create_domain_block_html: "%{name} blockerade domänen %{target}" create_email_domain_block_html: "%{name} svartlistade e-postdomän %{target}" create_ip_block_html: "%{name} skapade regel för IP %{target}" - destroy_custom_emoji_html: "%{name} förstörde emoji %{target}" destroy_domain_block_html: "%{name} avblockerade domänen %{target}" destroy_email_domain_block_html: "%{name} avblockerade e-postdomän %{target}" destroy_ip_block_html: "%{name} tog bort regel för IP %{target}" @@ -282,7 +281,6 @@ sv: update_custom_emoji_html: "%{name} uppdaterade emoji %{target}" update_domain_block_html: "%{name} uppdaterade domän-block för %{target}" update_status_html: "%{name} uppdaterade inlägget av %{target}" - deleted_status: "(raderad status)" empty: Inga loggar hittades. filter_by_action: Filtrera efter åtgärd filter_by_user: Filtrera efter användare @@ -912,14 +910,6 @@ sv: admin: sign_up: subject: "%{name} registrerade sig" - digest: - action: Visa alla aviseringar - body: Här är en kort sammanfattning av de meddelanden du missade sedan ditt senaste besök på %{since} - mention: "%{name} nämnde dig i:" - new_followers_summary: - one: Du har också förvärvat en ny följare! Jippie! - other: Du har också fått %{count} nya följare medans du var iväg! Otroligt! - title: I din frånvaro... favourite: body: 'Din status favoriserades av %{name}:' subject: "%{name} favoriserade din status" diff --git a/config/locales/th.yml b/config/locales/th.yml index 7f3c25ff1..125bb3062 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -230,17 +230,21 @@ th: approve_user: อนุมัติผู้ใช้ assigned_to_self_report: มอบหมายรายงาน change_email_user: เปลี่ยนอีเมลสำหรับผู้ใช้ + change_role_user: เปลี่ยนบทบาทของผู้ใช้ confirm_user: ยืนยันผู้ใช้ create_account_warning: สร้างคำเตือน create_announcement: สร้างประกาศ + create_canonical_email_block: สร้างการปิดกั้นอีเมล create_custom_emoji: สร้างอีโมจิที่กำหนดเอง create_domain_allow: สร้างการอนุญาตโดเมน create_domain_block: สร้างการปิดกั้นโดเมน create_email_domain_block: สร้างการปิดกั้นโดเมนอีเมล create_ip_block: สร้างกฎ IP create_unavailable_domain: สร้างโดเมนที่ไม่พร้อมใช้งาน + create_user_role: สร้างบทบาท demote_user: ลดขั้นผู้ใช้ destroy_announcement: ลบประกาศ + destroy_canonical_email_block: ลบการปิดกั้นอีเมล destroy_custom_emoji: ลบอีโมจิที่กำหนดเอง destroy_domain_allow: ลบการอนุญาตโดเมน destroy_domain_block: ลบการปิดกั้นโดเมน @@ -249,6 +253,7 @@ th: destroy_ip_block: ลบกฎ IP destroy_status: ลบโพสต์ destroy_unavailable_domain: ลบโดเมนที่ไม่พร้อมใช้งาน + destroy_user_role: ทำลายบทบาท disable_2fa_user: ปิดใช้งาน 2FA disable_custom_emoji: ปิดใช้งานอีโมจิที่กำหนดเอง disable_sign_in_token_auth_user: ปิดใช้งานการรับรองความถูกต้องด้วยโทเคนอีเมลสำหรับผู้ใช้ @@ -275,12 +280,15 @@ th: update_announcement: อัปเดตประกาศ update_custom_emoji: อัปเดตอีโมจิที่กำหนดเอง update_domain_block: อัปเดตการปิดกั้นโดเมน + update_ip_block: อัปเดตกฎ IP update_status: อัปเดตโพสต์ + update_user_role: อัปเดตบทบาท actions: approve_appeal_html: "%{name} ได้อนุมัติการอุทธรณ์การตัดสินใจในการควบคุมจาก %{target}" approve_user_html: "%{name} ได้อนุมัติการลงทะเบียนจาก %{target}" assigned_to_self_report_html: "%{name} ได้มอบหมายรายงาน %{target} ให้กับตนเอง" change_email_user_html: "%{name} ได้เปลี่ยนที่อยู่อีเมลของผู้ใช้ %{target}" + change_role_user_html: "%{name} ได้เปลี่ยนบทบาทของ %{target}" confirm_user_html: "%{name} ได้ยืนยันที่อยู่อีเมลของผู้ใช้ %{target}" create_account_warning_html: "%{name} ได้ส่งคำเตือนไปยัง %{target}" create_announcement_html: "%{name} ได้สร้างประกาศใหม่ %{target}" @@ -290,9 +298,10 @@ th: create_email_domain_block_html: "%{name} ได้ปิดกั้นโดเมนอีเมล %{target}" create_ip_block_html: "%{name} ได้สร้างกฎสำหรับ IP %{target}" create_unavailable_domain_html: "%{name} ได้หยุดการจัดส่งไปยังโดเมน %{target}" + create_user_role_html: "%{name} ได้สร้างบทบาท %{target}" demote_user_html: "%{name} ได้ลดขั้นผู้ใช้ %{target}" destroy_announcement_html: "%{name} ได้ลบประกาศ %{target}" - destroy_custom_emoji_html: "%{name} ได้ทำลายอีโมจิ %{target}" + destroy_custom_emoji_html: "%{name} ได้ลบอีโมจิ %{target}" destroy_domain_allow_html: "%{name} ได้ไม่อนุญาตการติดต่อกับภายนอกกับโดเมน %{target}" destroy_domain_block_html: "%{name} ได้เลิกปิดกั้นโดเมน %{target}" destroy_email_domain_block_html: "%{name} ได้เลิกปิดกั้นโดเมนอีเมล %{target}" @@ -300,6 +309,7 @@ th: destroy_ip_block_html: "%{name} ได้ลบกฎสำหรับ IP %{target}" destroy_status_html: "%{name} ได้เอาโพสต์โดย %{target} ออก" destroy_unavailable_domain_html: "%{name} ได้ทำการจัดส่งไปยังโดเมน %{target} ต่อ" + destroy_user_role_html: "%{name} ได้ลบบทบาท %{target}" disable_2fa_user_html: "%{name} ได้ปิดใช้งานความต้องการสองปัจจัยสำหรับผู้ใช้ %{target}" disable_custom_emoji_html: "%{name} ได้ปิดใช้งานอีโมจิ %{target}" disable_sign_in_token_auth_user_html: "%{name} ได้ปิดใช้งานการรับรองความถูกต้องด้วยโทเคนอีเมลสำหรับ %{target}" @@ -326,8 +336,9 @@ th: update_announcement_html: "%{name} ได้อัปเดตประกาศ %{target}" update_custom_emoji_html: "%{name} ได้อัปเดตอีโมจิ %{target}" update_domain_block_html: "%{name} ได้อัปเดตการปิดกั้นโดเมนสำหรับ %{target}" + update_ip_block_html: "%{name} ได้เปลี่ยนกฎสำหรับ IP %{target}" update_status_html: "%{name} ได้อัปเดตโพสต์โดย %{target}" - deleted_status: "(โพสต์ที่ลบแล้ว)" + update_user_role_html: "%{name} ได้เปลี่ยนบทบาท %{target}" empty: ไม่พบรายการบันทึก filter_by_action: กรองตามการกระทำ filter_by_user: กรองตามผู้ใช้ @@ -760,9 +771,6 @@ th: desc_html: แสดงลิงก์ไปยังเส้นเวลาสาธารณะในหน้าเริ่มต้นและอนุญาตการเข้าถึง API ไปยังเส้นเวลาสาธารณะโดยไม่มีการรับรองความถูกต้อง title: อนุญาตการเข้าถึงเส้นเวลาสาธารณะที่ไม่ได้รับรองความถูกต้อง title: การตั้งค่าไซต์ - trendable_by_default: - desc_html: มีผลต่อแฮชแท็กที่ไม่ได้ไม่อนุญาตก่อนหน้านี้ - title: อนุญาตให้แฮชแท็กขึ้นแนวโน้มโดยไม่มีการตรวจทานล่วงหน้า trends: desc_html: แสดงเนื้อหาที่ตรวจทานแล้วก่อนหน้านี้ที่กำลังนิยมในปัจจุบันเป็นสาธารณะ title: แนวโน้ม @@ -1125,10 +1133,18 @@ th: expires_on: หมดอายุเมื่อ %{date} keywords: other: "%{count} คำสำคัญ" + statuses: + other: "%{count} โพสต์" title: ตัวกรอง new: save: บันทึกตัวกรองใหม่ title: เพิ่มตัวกรองใหม่ + statuses: + back_to_filter: กลับไปที่ตัวกรอง + batch: + remove: เอาออกจากตัวกรอง + index: + title: โพสต์ที่กรองอยู่ footer: developers: นักพัฒนา more: เพิ่มเติม… @@ -1139,6 +1155,7 @@ th: changes_saved_msg: บันทึกการเปลี่ยนแปลงสำเร็จ! copy: คัดลอก delete: ลบ + deselect: ไม่เลือกทั้งหมด none: ไม่มี order_by: เรียงลำดับตาม save_changes: บันทึกการเปลี่ยนแปลง @@ -1238,14 +1255,6 @@ th: subject: "%{name} ได้ส่งรายงาน" sign_up: subject: "%{name} ได้ลงทะเบียน" - digest: - action: ดูการแจ้งเตือนทั้งหมด - mention: "%{name} ได้กล่าวถึงคุณใน:" - new_followers_summary: - other: นอกจากนี้คุณยังได้รับ %{count} ผู้ติดตามใหม่ขณะที่ไม่อยู่! มหัศจรรย์! - subject: - other: "%{count} การแจ้งเตือนใหม่นับตั้งแต่การเยี่ยมชมล่าสุดของคุณ 🐘" - title: เมื่อคุณไม่อยู่... favourite: body: 'โพสต์ของคุณได้รับการชื่นชอบโดย %{name}:' subject: "%{name} ได้ชื่นชอบโพสต์ของคุณ" diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 2706070a3..151cc57c8 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -235,17 +235,21 @@ tr: approve_user: Kullanıcıyı Onayla assigned_to_self_report: Raporu Ata change_email_user: Kullanıcı E-postasını Değiştir + change_role_user: Kullanıcının Rolünü Değiştir confirm_user: Kullanıcıyı Onayla create_account_warning: Uyarı Oluştur create_announcement: Duyuru Oluştur + create_canonical_email_block: E-posta Engeli Oluştur create_custom_emoji: Özel İfade Oluştur create_domain_allow: İzin Verilen Alan Adı Oluştur create_domain_block: Engellenen Alan Adı Oluştur create_email_domain_block: E-Posta Alan Adı Engeli Oluştur create_ip_block: IP kuralı oluştur create_unavailable_domain: Mevcut Olmayan Alan Adı Oluştur + create_user_role: Rol Oluştur demote_user: Kullanıcıyı Düşür destroy_announcement: Duyuru Sil + destroy_canonical_email_block: E-Posta Engelini Sil destroy_custom_emoji: Özel İfadeyi Sil destroy_domain_allow: İzin Verilen Alan Adını Sil destroy_domain_block: Engellenen Alan Adını Sil @@ -254,6 +258,7 @@ tr: destroy_ip_block: IP kuralını sil destroy_status: Durumu Sil destroy_unavailable_domain: Mevcut Olmayan Alan Adı Sil + destroy_user_role: Rolü Kaldır disable_2fa_user: 2AD Kapat disable_custom_emoji: Özel İfadeyi Devre Dışı Bırak disable_sign_in_token_auth_user: Kullanıcı için E-posta Token Doğrulamayı devre dışı bırak @@ -280,24 +285,30 @@ tr: update_announcement: Duyuruyu Güncelle update_custom_emoji: Özel İfadeyi Güncelle update_domain_block: Engellenen Alan Adını Güncelle + update_ip_block: IP kuralını güncelle update_status: Durumu Güncelle + update_user_role: Rolü Güncelle actions: approve_appeal_html: "%{name}, %{target} kullanıcısının yönetim kararına itirazını kabul etti" approve_user_html: "%{name}, %{target} konumundan kaydı onayladı" assigned_to_self_report_html: "%{name} kendilerine %{target} adlı raporu verdi" change_email_user_html: "%{name}, %{target} kullanıcısının e-posta adresini değiştirdi" + change_role_user_html: "%{name}, %{target} kişisinin rolünü değiştirdi" confirm_user_html: "%{name} %{target} kullanıcısının e-posta adresini onayladı" create_account_warning_html: "%{name} %{target} 'a bir uyarı gönderdi" create_announcement_html: "%{name}, yeni %{target} duyurusunu oluşturdu" + create_canonical_email_block_html: "%{name}, %{target} karmasıyla e-posta engelledi" create_custom_emoji_html: "%{name} yeni %{target} ifadesini yükledi" create_domain_allow_html: "%{name}, %{target} alan adıyla birliğe izin verdi" create_domain_block_html: "%{name}, %{target} alan adını engelledi" create_email_domain_block_html: "%{name}, %{target} e-posta alan adını engelledi" create_ip_block_html: "%{name}, %{target} IP adresi için kural oluşturdu" create_unavailable_domain_html: "%{name}, %{target} alan adına teslimatı durdurdu" + create_user_role_html: "%{name}, %{target} rolünü oluşturdu" demote_user_html: "%{name}, %{target} kullanıcısını düşürdü" destroy_announcement_html: "%{name}, %{target} duyurusunu sildi" - destroy_custom_emoji_html: "%{name}, %{target} emojisini yok etti" + destroy_canonical_email_block_html: "%{name}, %{target} karmasıyla e-posta engelini kaldırdı" + destroy_custom_emoji_html: "%{name}, %{target} ifadesini sildi" destroy_domain_allow_html: "%{name}, %{target} alan adıyla birlik iznini kaldırdı" destroy_domain_block_html: "%{name}, %{target} alan adı engelini kaldırdı" destroy_email_domain_block_html: "%{name}, %{target} e-posta alan adı engelini kaldırdı" @@ -305,6 +316,7 @@ tr: destroy_ip_block_html: "%{name}, %{target} IP adresi kuralını sildi" destroy_status_html: "%{name}, %{target} kullanıcısının gönderisini kaldırdı" destroy_unavailable_domain_html: "%{name}, %{target} alan adına teslimatı sürdürdü" + destroy_user_role_html: "%{name}, %{target} rolünü sildi" disable_2fa_user_html: "%{name}, %{target} kullanıcısının iki aşamalı doğrulama gereksinimini kapattı" disable_custom_emoji_html: "%{name}, %{target} emojisini devre dışı bıraktı" disable_sign_in_token_auth_user_html: "%{name}, %{target} için e-posta token doğrulamayı devre dışı bıraktı" @@ -331,8 +343,9 @@ tr: update_announcement_html: "%{name}, %{target} duyurusunu güncelledi" update_custom_emoji_html: "%{name}, %{target} emojisini güncelledi" update_domain_block_html: "%{name}, %{target} alan adının engelini güncelledi" + update_ip_block_html: "%{name}, %{target} IP adresi için kuralı güncelledi" update_status_html: "%{name}, %{target} kullanıcısının gönderisini güncelledi" - deleted_status: "(silinmiş durum)" + update_user_role_html: "%{name}, %{target} rolünü değiştirdi" empty: Kayıt bulunamadı. filter_by_action: Eyleme göre filtre filter_by_user: Kullanıcıya göre filtre @@ -795,8 +808,8 @@ tr: title: Zaman çizelgesi önizlemesi title: Site Ayarları trendable_by_default: - desc_html: Daha önce izin verilmeyen etiketleri etkiler - title: Ön inceleme yapmadan etiketlerin trend olmasına izin ver + desc_html: Belirli öne çıkan içeriğe yine de açıkça izin verilmeyebilir + title: Ön inceleme yapmadan öne çıkmalara izin ver trends: desc_html: Şu anda trend olan ve daha önce incelenen etiketleri herkese açık olarak göster title: Gündem etiketleri @@ -1182,7 +1195,7 @@ tr: add_keyword: Anahtar sözcük ekle keywords: Anahtar Sözcükler statuses: Tekil gönderiler - statuses_hint_html: Bu filtre aşağıdaki anahtar kelimelere eşlenip eşlenmediklerinden bağımsız olarak tekil gönderileri seçmek için uygulanıyor. Bu gönderileri gözden geçirip, buraya tıklayarak filtreden kaldırabilirsiniz. + statuses_hint_html: Bu filtre, aşağıdaki anahtar kelimelerle eşleşip eşleşmediklerinden bağımsız olarak tekil gönderileri seçmek için uygulanıyor. Filtredeki gönderileri inceleyin veya kaldırın. title: Filtreyi düzenle errors: deprecated_api_multiple_keywords: Bu parametreler, birden fazla filtre anahtar sözcüğü için geçerli olduğundan dolayı bu uygulama içerisinden değiştirilemezler. Daha yeni bir uygulama veya web arayüzünü kullanın. @@ -1220,12 +1233,22 @@ tr: trending_now: Şu an gündemde generic: all: Tümü + all_items_on_page_selected_html: + one: Bu sayfadaki %{count} öğe seçilmiş. + other: Bu sayfadaki tüm %{count} öğe seçilmiş. + all_matching_items_selected_html: + one: Aramanızla eşleşen %{count} öğe seçilmiş. + other: Aramanızla eşleşen tüm %{count} öğe seçilmiş. changes_saved_msg: Değişiklikler başarıyla kaydedildi! copy: Kopyala delete: Sil + deselect: Hiçbirini seçme none: Hiçbiri order_by: Sıralama ölçütü save_changes: Değişiklikleri kaydet + select_all_matching_items: + one: Aramanızla eşleşen %{count} öğeyi seç. + other: Aramanızla eşleşen tüm %{count} öğeyi seç. today: bugün validation_errors: one: Bir şeyler ters gitti! Lütfen aşağıdaki hatayı gözden geçiriniz @@ -1334,17 +1357,6 @@ tr: subject: "%{name} bir bildirim gönderdi" sign_up: subject: "%{name} kaydoldu" - digest: - action: Tüm bildirimleri görüntüle - body: Son ziyaretiniz olan %{since}'den beri'da kaçırdığınız şeylerin özeti - mention: "%{name} senden bahsetti:" - new_followers_summary: - one: Ayrıca, uzaktayken yeni bir takipçi kazandınız! Yaşasın! - other: Ayrıca, uzaktayken %{count} yeni takipçi kazandınız! İnanılmaz! - subject: - one: "Son ziyaretinizden bu yana 1 yeni bildirim 🐘" - other: "Son ziyaretinizden bu yana %{count} yeni bildirim 🐘" - title: Senin yokluğunda... favourite: body: "%{name} durumunu beğendi:" subject: "%{name} durumunu beğendi" diff --git a/config/locales/uk.yml b/config/locales/uk.yml index c1ca26c52..30e9f3e56 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -243,17 +243,21 @@ uk: approve_user: Затвердити користувачів assigned_to_self_report: Призначити звіт change_email_user: Змінити електронну пошту для користувача + change_role_user: Змінити роль користувача confirm_user: Підтвердити користувача create_account_warning: Створити попередження create_announcement: Створити оголошення + create_canonical_email_block: Створити блок електронної пошти create_custom_emoji: Створити користувацьке емодзі create_domain_allow: Створити дозвіл на домен create_domain_block: Створити блокування домену create_email_domain_block: Створити блокування поштового домену create_ip_block: Створити правило IP create_unavailable_domain: Створити недоступний домен + create_user_role: Створити роль demote_user: Понизити користувача destroy_announcement: Видалити оголошення + destroy_canonical_email_block: Видалити блок електронної пошти destroy_custom_emoji: Видалити користувацьке емодзі destroy_domain_allow: Видалити дозвіл на домен destroy_domain_block: Видалити блокування домену @@ -262,6 +266,7 @@ uk: destroy_ip_block: Видалити правило IP destroy_status: Видалити пост destroy_unavailable_domain: Видалити недоступний домен + destroy_user_role: Знищити роль disable_2fa_user: Вимкнути 2FA disable_custom_emoji: Вимкнути користувацькі емодзі disable_sign_in_token_auth_user: Вимкнути автентифікацію за допомогою е-пошти для користувача @@ -288,24 +293,30 @@ uk: update_announcement: Оновити оголошення update_custom_emoji: Оновити користувацькі емодзі update_domain_block: Оновити блокування домену + update_ip_block: Оновити правило IP update_status: Оновити статус + update_user_role: Оновити роль actions: approve_appeal_html: "%{name} затвердили звернення на оскарження рішення від %{target}" approve_user_html: "%{name} схвалює реєстрацію від %{target}" assigned_to_self_report_html: "%{name} створює скаргу %{target} на себе" change_email_user_html: "%{name} змінює поштову адресу користувача %{target}" + change_role_user_html: "%{name} змінює роль %{target}" confirm_user_html: "%{name} підтверджує стан поштової адреси користувача %{target}" create_account_warning_html: "%{name} надсилає попередження до %{target}" create_announcement_html: "%{name} створює нове оголошення %{target}" + create_canonical_email_block_html: "%{name} блокує електронну пошту з хешем %{target}" create_custom_emoji_html: "%{name} завантажує нові емодзі %{target}" create_domain_allow_html: "%{name} дозволяє федерацію з доменом %{target}" create_domain_block_html: "%{name} блокує домен %{target}" create_email_domain_block_html: "%{name} блокує домен електронної пошти %{target}" create_ip_block_html: "%{name} створює правило для IP %{target}" create_unavailable_domain_html: "%{name} зупиняє доставляння на домен %{target}" + create_user_role_html: "%{name} створює роль %{target}" demote_user_html: "%{name} понижує користувача %{target}" destroy_announcement_html: "%{name} видаляє оголошення %{target}" - destroy_custom_emoji_html: "%{name} знищує емодзі %{target}" + destroy_canonical_email_block_html: "%{name} розблоковує електронну пошту з хешем %{target}" + destroy_custom_emoji_html: "%{name} видаляє емоджі %{target}" destroy_domain_allow_html: "%{name} скасовує федерацію з доменом %{target}" destroy_domain_block_html: "%{name} розблокує домен %{target}" destroy_email_domain_block_html: "%{name} розблоковує домен електронної пошти %{target}" @@ -313,6 +324,7 @@ uk: destroy_ip_block_html: "%{name} видаляє правило для IP %{target}" destroy_status_html: "%{name} видаляє статус %{target}" destroy_unavailable_domain_html: "%{name} відновлює доставляння на домен %{target}" + destroy_user_role_html: "%{name} видаляє роль %{target}" disable_2fa_user_html: "%{name} вимикає двоетапну перевірку для користувача %{target}" disable_custom_emoji_html: "%{name} вимикає емодзі %{target}" disable_sign_in_token_auth_user_html: "%{name} вимикає автентифікацію через е-пошту для %{target}" @@ -339,8 +351,9 @@ uk: update_announcement_html: "%{name} оновлює оголошення %{target}" update_custom_emoji_html: "%{name} оновлює емодзі %{target}" update_domain_block_html: "%{name} оновлює блокування домену для %{target}" + update_ip_block_html: "%{name} змінює правило для IP %{target}" update_status_html: "%{name} змінює статус користувача %{target}" - deleted_status: "(видалений статус)" + update_user_role_html: "%{name} змінює роль %{target}" empty: Не знайдено жодного журналу. filter_by_action: Фільтрувати за дією filter_by_user: Фільтрувати за користувачем @@ -624,6 +637,7 @@ uk: resolve_description_html: Не буде застосовано жодних дій проти облікового запису, на який скаржилися, не буде записано попередження, а скаргу буде закрито. silence_description_html: Профіль буде видимий лише тим, хто вже стежить за ним або знайде його самостійно, сильно обмежуючи його знаходження. Можна потім скасувати. suspend_description_html: Профіль і весь його вміст буде недоступним, поки його не буде видалено. Взаємодія з обліковим записом буде неможливою. + actions_description_html: Визначте, які дії слід вжити для розв'язання цієї скарги. Якщо ви оберете каральні дії проти зареєстрованого облікового запису, про них буде надіслано сповіщення електронним листом, крім випадків, коли вибрано категорію Спам. add_to_report: Додати ще подробиць до скарги are_you_sure: Ви впевнені? assign_to_self: Призначити мені @@ -820,8 +834,8 @@ uk: title: Передпоказ фіду title: Налаштування сайту trendable_by_default: - desc_html: Впливає на хештеги, які не були заборонені раніше - title: Дозволити хештегам потрапляти в тренди без попереднього перегляду + desc_html: Конкретні популярні матеріали все одно можуть бути явно відхилені + title: Дозволити популярне без попереднього огляду trends: desc_html: Відображати розглянуті хештеґи, які популярні зараз title: Популярні хештеги @@ -1205,6 +1219,8 @@ uk: edit: add_keyword: Додати ключове слово keywords: Ключові слова + statuses: Окремі дописи + statuses_hint_html: Цей фільтр застосовується для вибору окремих дописів, незалежно від того, чи збігаються вони з ключовими словами нижче. Перегляд чи вилучення дописів з фільтра. title: Редагувати фільтр errors: deprecated_api_multiple_keywords: Ці параметри не можна змінити з цього застосунку, тому що вони застосовуються до більш ніж одного ключового слова. Використовуйте новішу версію застосунку або вебінтерфейс. @@ -1220,10 +1236,27 @@ uk: many: "%{count} ключових слів" one: "%{count} ключове слово" other: "%{count} ключових слів" + statuses: + few: "%{count} дописи" + many: "%{count} дописів" + one: "%{count} допис" + other: "%{count} дописа" + statuses_long: + few: Сховано %{count} окремі дописи + many: Сховано %{count} окремих дописів + one: Сховано %{count} окремий допис + other: Сховано %{count} окремі дописи title: Фільтри new: save: Зберегти новий фільтр title: Додати фільтр + statuses: + back_to_filter: Назад до фільтру + batch: + remove: Вилучити з фільтра + index: + hint: Цей фільтр застосовується для вибору окремих дописів, незалежно від інших критеріїв. Ви можете додавати більше дописів до цього фільтра з вебінтерфейсу. + title: Відфільтровані дописи footer: developers: Розробникам more: Більше… @@ -1231,12 +1264,28 @@ uk: trending_now: Актуальні generic: all: Усі + all_items_on_page_selected_html: + few: Усі %{count} елементи на цій сторінці вибрано. + many: Усі %{count} елементів на цій сторінці вибрано. + one: "%{count} елемент на цій сторінці вибрано." + other: "%{count} елементи на цій сторінці вибрано." + all_matching_items_selected_html: + few: Усі %{count} елементи, що збігаються з вашим пошуком вибрано. + many: Усі %{count} елементів, що збігаються з вашим пошуком вибрано. + one: "%{count} елемент, що збігається з вашим пошуком вибрано." + other: Усі %{count} елементи, що збігаються з вашим пошуком вибрано. changes_saved_msg: Зміни успішно збережені! copy: Копіювати delete: Видалити + deselect: Скасувати вибір none: Немає order_by: Сортувати за save_changes: Зберегти зміни + select_all_matching_items: + few: Вибрати всі %{count} елементи, що збігаються з вашим пошуком. + many: Вибрати всі %{count} елементів, що збігаються з вашим пошуком. + one: Вибрати %{count} елемент, що збігається з вашим пошуком. + other: Вибрати всі %{count} елементи, що збігаються з вашим пошуком. today: сьогодні validation_errors: few: Щось досі не гаразд! Перегляньте %{count} повідомлень про помилки @@ -1349,21 +1398,6 @@ uk: subject: "%{name} подає скаргу" sign_up: subject: "%{name} приєднується" - digest: - action: Показати усі сповіщення - body: Коротко про пропущене вами з Вашого останнього входу %{since} - mention: "%{name} згадав(-ла) Вас в:" - new_followers_summary: - few: У Вас з'явилось %{count} нових підписники! Чудово! - many: У Вас з'явилось %{count} нових підписників! Чудово! - one: Також, у Вас з'явився новий підписник, коли ви були відсутні! Ура! - other: Також, у Вас з'явилось %{count} нових підписників, поки ви були відсутні! Чудово! - subject: - few: "%{count} нові сповіщення з вашого останнього відвідування 🐘" - many: "%{count} нових сповіщень з вашого останнього відвідування 🐘" - one: "1 нове сповіщення з вашого останнього відвідування 🐘" - other: "%{count} нових сповіщень з вашого останнього відвідування 🐘" - title: Поки ви були відсутні... favourite: body: 'Ваш статус подобається %{name}:' subject: Ваш статус сподобався %{name} diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 625d3a07e..dfc7623dd 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -228,17 +228,21 @@ vi: approve_user: Chấp nhận người dùng assigned_to_self_report: Tự xử lý báo cáo change_email_user: Đổi email người dùng + change_role_user: Thay đổi vai trò confirm_user: Xác minh người dùng create_account_warning: Nhắc nhở người dùng create_announcement: Tạo thông báo mới + create_canonical_email_block: Tạo chặn tên miền email mới create_custom_emoji: Tạo emoji create_domain_allow: Cho phép máy chủ create_domain_block: Chặn máy chủ create_email_domain_block: Chặn tên miền email create_ip_block: Tạo chặn IP mới create_unavailable_domain: Máy chủ không khả dụng + create_user_role: Tạo vai trò demote_user: Xóa vai trò destroy_announcement: Xóa thông báo + destroy_canonical_email_block: Bỏ chặn tên miền email destroy_custom_emoji: Xóa emoji destroy_domain_allow: Bỏ cho phép máy chủ destroy_domain_block: Bỏ chặn máy chủ @@ -247,6 +251,7 @@ vi: destroy_ip_block: Xóa IP đã chặn destroy_status: Xóa tút destroy_unavailable_domain: Xóa máy chủ không khả dụng + destroy_user_role: Xóa vai trò disable_2fa_user: Vô hiệu hóa 2FA disable_custom_emoji: Vô hiệu hóa emoji disable_sign_in_token_auth_user: Vô hiệu hóa xác minh bằng email cho người dùng @@ -273,23 +278,29 @@ vi: update_announcement: Cập nhật thông báo update_custom_emoji: Cập nhật emoji update_domain_block: Cập nhật máy chủ chặn + update_ip_block: Cập nhật chặn IP update_status: Cập nhật tút + update_user_role: Cập nhật vai trò actions: approve_appeal_html: "%{name} đã chấp nhận kháng cáo của %{target}" approve_user_html: "%{name} đã chấp nhận đăng ký từ %{target}" assigned_to_self_report_html: "%{name} tự xử lý báo cáo %{target}" change_email_user_html: "%{name} đã thay đổi địa chỉ email của %{target}" + change_role_user_html: "%{name} đã thay đổi vai trò %{target}" confirm_user_html: "%{name} đã xác minh địa chỉ email của %{target}" create_account_warning_html: "%{name} đã nhắc nhở %{target}" create_announcement_html: "%{name} tạo thông báo mới %{target}" + create_canonical_email_block_html: "%{name} chặn email với hàm băm %{target}" create_custom_emoji_html: "%{name} đã tải lên biểu tượng cảm xúc mới %{target}" create_domain_allow_html: "%{name} kích hoạt liên hợp với %{target}" create_domain_block_html: "%{name} chặn máy chủ %{target}" create_email_domain_block_html: "%{name} chặn tên miền email %{target}" create_ip_block_html: "%{name} đã chặn IP %{target}" create_unavailable_domain_html: "%{name} ngưng phân phối với máy chủ %{target}" + create_user_role_html: "%{name} đã tạo vai trò %{target}" demote_user_html: "%{name} đã xóa vai trò của %{target}" destroy_announcement_html: "%{name} xóa thông báo %{target}" + destroy_canonical_email_block_html: "%{name} bỏ chặn email với hàm băm %{target}" destroy_custom_emoji_html: "%{name} đã xóa emoji %{target}" destroy_domain_allow_html: "%{name} đã ngừng liên hợp với %{target}" destroy_domain_block_html: "%{name} bỏ chặn máy chủ %{target}" @@ -298,6 +309,7 @@ vi: destroy_ip_block_html: "%{name} bỏ chặn IP %{target}" destroy_status_html: "%{name} đã xóa tút của %{target}" destroy_unavailable_domain_html: "%{name} tiếp tục phân phối với máy chủ %{target}" + destroy_user_role_html: "%{name} đã xóa vai trò %{target}" disable_2fa_user_html: "%{name} đã vô hiệu hóa xác minh hai bước của %{target}" disable_custom_emoji_html: "%{name} đã ẩn emoji %{target}" disable_sign_in_token_auth_user_html: "%{name} vô hiệu hóa xác minh email của %{target}" @@ -324,8 +336,9 @@ vi: update_announcement_html: "%{name} cập nhật thông báo %{target}" update_custom_emoji_html: "%{name} đã cập nhật emoji %{target}" update_domain_block_html: "%{name} cập nhật chặn máy chủ %{target}" + update_ip_block_html: "%{name} cập nhật chặn IP %{target}" update_status_html: "%{name} cập nhật tút của %{target}" - deleted_status: "(tút đã xóa)" + update_user_role_html: "%{name} đã thay đổi vai trò %{target}" empty: Không tìm thấy bản ghi. filter_by_action: Theo hành động filter_by_user: Theo người @@ -777,8 +790,8 @@ vi: title: Cho phép truy cập vào dòng thời gian công cộng không cần cho phép title: Cài đặt trang web trendable_by_default: - desc_html: Ảnh hưởng đến các hashtag chưa được cho phép trước đây - title: Cho phép hashtags theo xu hướng mà không cần xem xét trước + desc_html: Nội dung xu hướng cụ thể vẫn có thể bị cấm một cách rõ ràng + title: Cho phép xu hướng mà không cần xem xét trước trends: desc_html: Hiển thị công khai các hashtag được xem xét trước đây hiện đang là xu hướng title: Hashtag xu hướng @@ -1160,6 +1173,7 @@ vi: add_keyword: Thêm từ khoá keywords: Từ khóa statuses: Những tút riêng lẻ + statuses_hint_html: Bộ lọc này áp dụng cho các tút riêng lẻ được chọn bất kể chúng có khớp với các từ khóa bên dưới hay không. Xem lại hoặc xóa các tút từ bộ lọc. title: Chỉnh sửa bộ lọc errors: deprecated_api_multiple_keywords: Không thể thay đổi các tham số này từ ứng dụng này vì chúng áp dụng cho nhiều hơn một từ khóa bộ lọc. Sử dụng ứng dụng mới hơn hoặc giao diện web. @@ -1174,6 +1188,8 @@ vi: other: "%{count} từ khóa" statuses: other: "%{count} tút" + statuses_long: + other: "%{count} tút riêng lẻ đã ẩn" title: Bộ lọc new: save: Lưu thành bộ lọc mới @@ -1183,6 +1199,7 @@ vi: batch: remove: Xóa khỏi bộ lọc index: + hint: Bộ lọc này áp dụng để chọn các tút riêng lẻ bất kể các tiêu chí khác. Bạn có thể thêm các tút khác vào bộ lọc này từ giao diện web. title: Những tút đã lọc footer: developers: Phát triển @@ -1191,12 +1208,19 @@ vi: trending_now: Xu hướng generic: all: Tất cả + all_items_on_page_selected_html: + other: Toàn bộ %{count} mục trong trang này đã được chọn. + all_matching_items_selected_html: + other: Toàn bộ %{count} mục trùng khớp với tìm kiếm đã được chọn. changes_saved_msg: Đã lưu thay đổi! copy: Sao chép delete: Xóa + deselect: Bỏ chọn tất cả none: Trống order_by: Sắp xếp save_changes: Lưu thay đổi + select_all_matching_items: + other: Chọn tất cả%{count} mục trùng hợp với tìm kiếm của bạn. today: hôm nay validation_errors: other: Đã có %{count} lỗi xảy ra! Xem chi tiết bên dưới @@ -1303,15 +1327,6 @@ vi: subject: "%{name} đã gửi báo cáo" sign_up: subject: "%{name} đã được đăng ký" - digest: - action: Xem toàn bộ thông báo - body: Dưới đây là những tin nhắn bạn đã bỏ lỡ kể từ lần truy cập trước vào %{since} - mention: "%{name} nhắc đến bạn trong:" - new_followers_summary: - other: Ngoài ra, bạn đã có %{count} người theo dõi mới trong khi đi chơi! Ngạc nhiên chưa! - subject: - other: "%{count} thông báo mới kể từ lần đăng nhập cuối 🐘" - title: Khi bạn offline... favourite: body: Tút của bạn vừa được thích bởi %{name} subject: "%{name} vừa thích tút của bạn" diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 1a71554bb..e3eacca16 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -22,9 +22,9 @@ zh-CN: federation_hint_html: 在 %{instance} 上拥有账号后,你可以关注任何兼容 Mastodon 服务器上的人。 get_apps: 尝试移动应用 hosted_on: 运行在 %{domain} 上的 Mastodon 站点 - instance_actor_flash: '这个账号是个虚拟账号,不代表任何用户,只用来代表服务器本身。它用于和其它服务器互通,所以不应该被封禁,除非你想封禁整个实例。但是想封禁整个实例的时候,你应该用域名封禁。 - - ' + instance_actor_flash: | + 该账号用来代表虚拟角色,并不代表个人用户,仅代表服务器本身。 + 该账号用于达成互联之目的,除非你想要封禁整个实例,否则该账号不应该被封禁。在此种情况下,你应该使用域名封禁。 learn_more: 了解详情 logged_in_as_html: 您当前以 %{username} 登录。 logout_before_registering: 您已登录。 @@ -62,7 +62,7 @@ zh-CN: followers: other: 关注者 following: 正在关注 - instance_actor_flash: 这个账户是一个虚拟账户,用来代表服务器自身,不代表任何实际用户。它用于互通功能,不应该被封禁。 + instance_actor_flash: 该账号用来代表虚拟角色,并不代表个人用户,仅代表服务器本身。该账号用于达成互联之目的,不应该被停用。 joined: 加入于 %{date} last_active: 最近活动 link_verified_on: 此链接的所有权已在 %{date} 检查 @@ -230,6 +230,7 @@ zh-CN: approve_user: 批准用户 assigned_to_self_report: 指派举报 change_email_user: 为用户修改邮箱地址 + change_role_user: 更改用户角色 confirm_user: 确认用户 create_account_warning: 创建警告 create_announcement: 创建公告 @@ -239,6 +240,7 @@ zh-CN: create_email_domain_block: 封禁电子邮箱域名 create_ip_block: 新建 IP 规则 create_unavailable_domain: 创建不可用域名 + create_user_role: 创建角色 demote_user: 给用户降职 destroy_announcement: 删除公告 destroy_custom_emoji: 删除自定义表情符号 @@ -249,6 +251,7 @@ zh-CN: destroy_ip_block: 删除 IP 规则 destroy_status: 删除嘟文 destroy_unavailable_domain: 删除不可用域名 + destroy_user_role: 销毁角色 disable_2fa_user: 停用双重认证 disable_custom_emoji: 禁用自定义表情符号 disable_sign_in_token_auth_user: 为用户禁用电子邮件令牌认证 @@ -276,11 +279,13 @@ zh-CN: update_custom_emoji: 更新自定义表情符号 update_domain_block: 更新域名屏蔽 update_status: 更新嘟文 + update_user_role: 更新角色 actions: approve_appeal_html: "%{name} 批准了 %{target} 对审核结果的申诉" approve_user_html: "%{name} 批准了用户 %{target} 的注册" assigned_to_self_report_html: "%{name} 接管了举报 %{target}" change_email_user_html: "%{name} 更改了用户 %{target} 的电子邮件地址" + change_role_user_html: "%{name} 更改了 %{target} 的角色" confirm_user_html: "%{name} 确认了用户 %{target} 的电子邮件地址" create_account_warning_html: "%{name} 向 %{target} 发送了警告" create_announcement_html: "%{name} 创建了新公告 %{target}" @@ -290,9 +295,10 @@ zh-CN: create_email_domain_block_html: "%{name} 屏蔽了电子邮件域名 %{target}" create_ip_block_html: "%{name} 为 IP %{target} 创建了规则" create_unavailable_domain_html: "%{name} 停止了向域名 %{target} 的投递" + create_user_role_html: "%{name} 创建了 %{target} 角色" demote_user_html: "%{name} 对用户 %{target} 进行了降任操作" destroy_announcement_html: "%{name} 删除了公告 %{target}" - destroy_custom_emoji_html: "%{name} 销毁了自定义表情 %{target}" + destroy_custom_emoji_html: "%{name} 删除了自定义表情 %{target}" destroy_domain_allow_html: "%{name} 拒绝了和 %{target} 跨站交互" destroy_domain_block_html: "%{name} 解除了对域名 %{target} 的屏蔽" destroy_email_domain_block_html: "%{name} 解除了对电子邮件域名 %{target} 的屏蔽" @@ -300,6 +306,7 @@ zh-CN: destroy_ip_block_html: "%{name} 删除了 IP %{target} 的规则" destroy_status_html: "%{name} 删除了 %{target} 的嘟文" destroy_unavailable_domain_html: "%{name} 恢复了向域名 %{target} 的投递" + destroy_user_role_html: "%{name} 删除了 %{target} 角色" disable_2fa_user_html: "%{name} 停用了用户 %{target} 的双重认证" disable_custom_emoji_html: "%{name} 停用了自定义表情 %{target}" disable_sign_in_token_auth_user_html: "%{name} 已为 %{target} 禁用电子邮件令牌认证" @@ -327,7 +334,7 @@ zh-CN: update_custom_emoji_html: "%{name} 更新了自定义表情 %{target}" update_domain_block_html: "%{name} 更新了对 %{target} 的域名屏蔽" update_status_html: "%{name} 刷新了 %{target} 的嘟文" - deleted_status: "(嘟文已删除)" + update_user_role_html: "%{name} 更改了 %{target} 角色" empty: 没有找到日志 filter_by_action: 根据行为过滤 filter_by_user: 根据用户过滤 @@ -779,7 +786,6 @@ zh-CN: title: 时间轴预览 title: 网站设置 trendable_by_default: - desc_html: 影响以前未禁止的话题标签 title: 允许在未审查的情况下将话题置为热门 trends: desc_html: 公开显示先前已通过审核的当前热门话题 @@ -834,7 +840,7 @@ zh-CN: links: allow: 允许链接 allow_provider: 允许发布者 - description_html: 这些是当前此服务器可见账号的嘟文中被大量分享的链接。它可以帮助用户了解正在发生的事情。发布者获得批准前不会公开显示任何链接。你也可以批准或拒绝单个链接。 + description_html: 这些是当前此服务器可见账号的嘟文中被大量分享的链接。它可以帮助用户了解正在发生的事情。发布者获得批准前不会公开显示任何链接。你也可以批准或拒绝个别链接。 disallow: 不允许链接 disallow_provider: 不允许发布者 shared_by_over_week: @@ -852,7 +858,7 @@ zh-CN: statuses: allow: 允许嘟文 allow_account: 允许发布者 - description_html: 这些是当前此服务器可见的被大量分享和喜欢的嘟文。这些嘟文可以帮助新老用户找到更多可关注的账号。批准发布者且发布者允许将其账号推荐给其他用户前,不会公开显示任何嘟文。你也可以批准或拒绝单条嘟文。 + description_html: 这些是当前此服务器可见的被大量分享和喜欢的嘟文。这些嘟文可以帮助新老用户找到更多可关注的账号。批准发布者且发布者允许将其账号推荐给其他用户前,不会公开显示任何嘟文。你也可以批准或拒绝个别嘟文。 disallow: 禁止嘟文 disallow_account: 禁止发布者 not_discoverable: 发布者选择不被发现 @@ -1162,7 +1168,7 @@ zh-CN: add_keyword: 添加关键词 keywords: 关键词 statuses: 个别嘟文 - statuses_hint_html: 无论是否匹配下列关键词,此过滤器适用于选用个别嘟文。你可以点击此处来审核这些嘟文,并从过滤器中移除。 + statuses_hint_html: 无论是否匹配下列关键词,此过滤器适用于选用个别嘟文。从过滤器中审核嘟文或移除嘟文。 title: 编辑过滤器 errors: deprecated_api_multiple_keywords: 这些参数不能从此应用程序更改,因为它们应用于一个以上的过滤关键字。 使用较新的应用程序或网页界面。 @@ -1197,12 +1203,19 @@ zh-CN: trending_now: 现在流行 generic: all: 全部 + all_items_on_page_selected_html: + other: 此页面上的所有 %{count} 项目已被选中。 + all_matching_items_selected_html: + other: 所有 %{count} 匹配您搜索的项目都已被选中。 changes_saved_msg: 更改保存成功! copy: 复制 delete: 删除 + deselect: 取消全选 none: 无 order_by: 排序方式 save_changes: 保存更改 + select_all_matching_items: + other: 选择匹配您搜索的所有 %{count} 个项目。 today: 今天 validation_errors: other: 出错啦!检查一下下面 %{count} 处出错的地方吧 @@ -1309,15 +1322,6 @@ zh-CN: subject: "%{name} 提交了报告" sign_up: subject: "%{name} 注册了" - digest: - action: 查看所有通知 - body: 以下是自%{since}你最后一次登录以来错过的消息的摘要 - mention: "%{name} 在嘟文中提到了你:" - new_followers_summary: - other: 而且,你不在的时候,有 %{count} 个人关注了你!好棒! - subject: - other: "自上次访问以来,收到 %{count} 条新通知 🐘" - title: 在你不在的这段时间…… favourite: body: 你的嘟文被 %{name} 喜欢了: subject: "%{name} 喜欢了你的嘟文" diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index e375bb4c8..39dfc9356 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -263,7 +263,6 @@ zh-HK: create_unavailable_domain_html: "%{name} 停止了對網域 %{target} 的更新通知" demote_user_html: "%{name} 降權了 %{target}" destroy_announcement_html: "%{name} 刪除了公告 %{target}" - destroy_custom_emoji_html: "%{name} 刪除了 Emoji %{target}" destroy_domain_allow_html: "%{name} 禁止網域 %{target} 加入聯邦宇宙" destroy_domain_block_html: "%{name} 封鎖了網域 %{target}" destroy_email_domain_block_html: "%{name} 解除封鎖 e-mail 網域 %{target}" @@ -294,7 +293,6 @@ zh-HK: update_custom_emoji_html: "%{name} 更新了 Emoji 表情符號 %{target}" update_domain_block_html: "%{name} 更新了對 %{target} 的網域封鎖" update_status_html: "%{name} 更新了 %{target} 的嘟文" - deleted_status: "(已刪除文章)" empty: 找不到任何日誌。 filter_by_action: 按動作篩選 filter_by_user: 按帳號篩選 @@ -591,9 +589,6 @@ zh-HK: desc_html: 在主頁顯示本站時間軸 title: 時間軸預覽 title: 網站設定 - trendable_by_default: - desc_html: 影響之前並未禁止的標籤 - title: 容許標籤不需要審核來成為今期流行 trends: desc_html: 公開地顯示已審核的標籤為今期流行 title: 趨勢主題標籤 @@ -939,13 +934,6 @@ zh-HK: carry_mutes_over_text: 此用戶從%{acct} 轉移,該帳號已被你靜音。 copy_account_note_text: 此用戶從%{acct} 轉移,這是你之前在該帳號留下的備注: notification_mailer: - digest: - action: 查看所有通知 - body: 這是自從你在%{since}使用以後,你錯失了的訊息︰ - mention: "%{name} 在此提及了你︰" - new_followers_summary: - other: 你新獲得了 %{count} 位關注者了!好厲害! - title: 在你不在的這段時間…… favourite: body: 你的文章被 %{name} 喜愛: subject: "%{name} 喜歡你的文章" diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index c055ba69f..c59df907a 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -230,17 +230,21 @@ zh-TW: approve_user: 批准使用者 assigned_to_self_report: 指派回報 change_email_user: 變更使用者的電子信箱地址 + change_role_user: 變更使用者角色 confirm_user: 確認使用者 create_account_warning: 建立警告 create_announcement: 建立公告 + create_canonical_email_block: 新增 E-mail 封鎖 create_custom_emoji: 建立自訂顏文字 create_domain_allow: 建立允許網域 create_domain_block: 建立阻擋網域 create_email_domain_block: 封鎖電子郵件站台 create_ip_block: 新增IP規則 create_unavailable_domain: 新增無法存取的網域 + create_user_role: 建立角色 demote_user: 把用戶降級 destroy_announcement: 刪除公告 + destroy_canonical_email_block: 刪除 E-mail 封鎖 destroy_custom_emoji: 刪除自訂顏文字 destroy_domain_allow: 刪除允許網域 destroy_domain_block: 刪除阻擋網域 @@ -249,6 +253,7 @@ zh-TW: destroy_ip_block: 刪除 IP 規則 destroy_status: 刪除狀態 destroy_unavailable_domain: 刪除無法存取的網域 + destroy_user_role: 移除角色 disable_2fa_user: 停用兩階段認證 disable_custom_emoji: 停用自訂顏文字 disable_sign_in_token_auth_user: 停用使用者電子信箱 token 驗證 @@ -275,24 +280,30 @@ zh-TW: update_announcement: 更新公告 update_custom_emoji: 更新自訂顏文字 update_domain_block: 更新封鎖網域 + update_ip_block: 更新 IP 規則 update_status: 更新狀態 + update_user_role: 更新角色 actions: approve_appeal_html: "%{name} 批准了來自 %{target} 的審核決定申訴" approve_user_html: "%{name} 批准了從 %{target} 而來的註冊" assigned_to_self_report_html: "%{name} 將報告 %{target} 指派給自己" change_email_user_html: "%{name} 變更了使用者 %{target} 的電子信箱地址" + change_role_user_html: "%{name} 變更了 %{target} 的角色" confirm_user_html: "%{name} 確認了使用者 %{target} 的電子信箱位址" create_account_warning_html: "%{name} 已對 %{target} 送出警告" create_announcement_html: "%{name} 新增了公告 %{target}" + create_canonical_email_block_html: "%{name} 已封鎖了 hash 為 %{target} 之 e-mail" create_custom_emoji_html: "%{name} 上傳了新自訂表情符號 %{target}" create_domain_allow_html: "%{name} 允許 %{target} 網域加入聯邦宇宙" create_domain_block_html: "%{name} 封鎖了網域 %{target}" create_email_domain_block_html: "%{name} 封鎖了電子信箱網域 %{target}" create_ip_block_html: "%{name} 已經設定了IP %{target} 的規則" create_unavailable_domain_html: "%{name} 停止發送至網域 %{target}" + create_user_role_html: "%{name} 建立了 %{target} 角色" demote_user_html: "%{name} 將使用者 %{target} 降級" destroy_announcement_html: "%{name} 刪除了公告 %{target}" - destroy_custom_emoji_html: "%{name} 停用了自訂表情符號 %{target}" + destroy_canonical_email_block_html: "%{name} 取消了 hash 為 %{target} 之 e-mail 的封鎖" + destroy_custom_emoji_html: "%{name} 刪除了表情符號 %{target}" destroy_domain_allow_html: "%{name} 不允許與網域 %{target} 加入聯邦宇宙" destroy_domain_block_html: "%{name} 取消了對網域 %{target} 的封鎖" destroy_email_domain_block_html: "%{name} 取消了對電子信箱網域 %{target} 的封鎖" @@ -300,6 +311,7 @@ zh-TW: destroy_ip_block_html: "%{name} 刪除了 IP %{target} 的規則" destroy_status_html: "%{name} 刪除了 %{target} 的嘟文" destroy_unavailable_domain_html: "%{name} 恢復了對網域 %{target} 的發送" + destroy_user_role_html: "%{name} 刪除了 %{target} 角色" disable_2fa_user_html: "%{name} 停用了使用者 %{target} 的兩階段認證" disable_custom_emoji_html: "%{name} 停用了自訂表情符號 %{target}" disable_sign_in_token_auth_user_html: "%{name} 停用了 %{target} 之使用者電子信箱 token 驗證" @@ -326,8 +338,9 @@ zh-TW: update_announcement_html: "%{name} 更新了公告 %{target}" update_custom_emoji_html: "%{name} 更新了自訂表情符號 %{target}" update_domain_block_html: "%{name} 更新了 %{target} 之網域封鎖" + update_ip_block_html: "%{name} 已經更新了 IP %{target} 之規則" update_status_html: "%{name} 更新了 %{target} 的嘟文" - deleted_status: "(已刪除嘟文)" + update_user_role_html: "%{name} 變更了 %{target} 角色" empty: 找不到 log filter_by_action: 按動作篩選 filter_by_user: 按使用者篩選 @@ -781,8 +794,8 @@ zh-TW: title: 時間軸預覽 title: 網站設定 trendable_by_default: - desc_html: 影響此前並未被禁用的標籤 - title: 允許熱門的主題標籤直接顯示於趨勢區,不需經過審核 + desc_html: 特定的熱門內容仍可以被明確地禁止 + title: 允許熱門話題直接顯示,不需經過審核 trends: desc_html: 公開目前炎上的已審核標籤 title: 趨勢主題標籤 @@ -1164,7 +1177,7 @@ zh-TW: add_keyword: 新增關鍵字 keywords: 關鍵字 statuses: 各別嘟文 - statuses_hint_html: 此過濾器會套用至所選之各別嘟文,不管它們有無匹配到以下的關鍵字。您可以檢視這些嘟文而按此將它們從過濾器中移除。 + statuses_hint_html: 此過濾器會套用至所選之各別嘟文,無論其是否符合下列關鍵字。審閱或從過濾條件移除貼文。 title: 編輯篩選條件 errors: deprecated_api_multiple_keywords: 這些參數無法從此應用程式中更改,因為它們適用於一或多個過濾器關鍵字。請使用較新的應用程式或是網頁介面。 @@ -1199,12 +1212,19 @@ zh-TW: trending_now: 現正熱門 generic: all: 全部 + all_items_on_page_selected_html: + other: 已選取此頁面上 %{count} 個項目。 + all_matching_items_selected_html: + other: 已選取符合您搜尋的 %{count} 個項目。 changes_saved_msg: 已成功儲存修改! copy: 複製 delete: 刪除 + deselect: 取消選擇全部 none: 無 order_by: 排序 save_changes: 儲存修改 + select_all_matching_items: + other: 選取 %{count} 個符合您搜尋的項目。 today: 今天 validation_errors: other: 唔…這是什麼鳥?請檢查以下 %{count} 項錯誤 @@ -1311,15 +1331,6 @@ zh-TW: subject: "%{name} 送出了一則檢舉報告" sign_up: subject: "%{name} 已進行註冊" - digest: - action: 閱覽所有通知 - body: 以下是自 %{since} 您最後一次登入以來錯過的訊息摘要 - mention: "%{name} 在此提及了您:" - new_followers_summary: - other: 此外,您在離開時獲得了 %{count} 位新的追蹤者!超棒的! - subject: - other: "從您上次造訪以來有 %{count} 個新通知 🐘" - title: 您不在的時候... favourite: body: 您的嘟文被 %{name} 加入了最愛: subject: "%{name} 將您的嘟文加入了最愛" From 802fcd06dd4ab7f78d24d6eea0f1bb2172615280 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Sep 2022 22:20:36 +0900 Subject: [PATCH 383/652] Bump @babel/core from 7.18.13 to 7.19.0 (#19126) Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.18.13 to 7.19.0. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.19.0/packages/babel-core) --- updated-dependencies: - dependency-name: "@babel/core" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 190 ++++++++------------------------------------------- 2 files changed, 28 insertions(+), 164 deletions(-) diff --git a/package.json b/package.json index db0c0a05d..b0f8db84d 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ }, "private": true, "dependencies": { - "@babel/core": "^7.18.13", + "@babel/core": "^7.19.0", "@babel/plugin-proposal-decorators": "^7.19.0", "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.18.10", diff --git a/yarn.lock b/yarn.lock index d0e249e35..f9ab55856 100644 --- a/yarn.lock +++ b/yarn.lock @@ -30,7 +30,7 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.18.6": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== @@ -42,42 +42,21 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.0.tgz#2a592fd89bacb1fcde68de31bee4f2f2dacb0e86" integrity sha512-y5rqgTTPTmaF5e2nVhOxw+Ur9HDJLsWb6U/KpgUzRZEdPfE6VOubXBKLdbcUTijzRptednSBDQbYZBOSqJxpJw== -"@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.7.2": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.10.tgz#74ef0fbf56b7dfc3f198fc2d927f4f03e12f4b05" - integrity sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.10" - "@babel/helper-compilation-targets" "^7.17.10" - "@babel/helper-module-transforms" "^7.17.7" - "@babel/helpers" "^7.17.9" - "@babel/parser" "^7.17.10" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.10" - "@babel/types" "^7.17.10" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.1" - semver "^6.3.0" - -"@babel/core@^7.18.13": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.13.tgz#9be8c44512751b05094a4d3ab05fc53a47ce00ac" - integrity sha512-ZisbOvRRusFktksHSG6pjj1CSvkPkcZq/KHD45LAkVP/oiHJkNBZWfpvlLmX8OtHDG8IuzsFlVRWo08w7Qxn0A== +"@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.19.0", "@babel/core@^7.7.2": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.0.tgz#d2f5f4f2033c00de8096be3c9f45772563e150c3" + integrity sha512-reM4+U7B9ss148rh2n1Qs9ASS+w94irYXga7c2jaQv9RVzpS7Mv1a9rnYYwuDa45G+DkORt9g6An2k/V4d9LbQ== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.13" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-module-transforms" "^7.18.9" - "@babel/helpers" "^7.18.9" - "@babel/parser" "^7.18.13" + "@babel/generator" "^7.19.0" + "@babel/helper-compilation-targets" "^7.19.0" + "@babel/helper-module-transforms" "^7.19.0" + "@babel/helpers" "^7.19.0" + "@babel/parser" "^7.19.0" "@babel/template" "^7.18.10" - "@babel/traverse" "^7.18.13" - "@babel/types" "^7.18.13" + "@babel/traverse" "^7.19.0" + "@babel/types" "^7.19.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -93,25 +72,7 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.0" -"@babel/generator@^7.17.10", "@babel/generator@^7.7.2": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.6.tgz#9ab2d46d3cbf631f0e80f72e72874a04c3fc12a9" - integrity sha512-AIwwoOS8axIC5MZbhNHRLKi3D+DMpvDf9XUcu3pIVAfOHFT45f4AoDAltRbHIQomCipkCZxrNkfpOEHhJz/VKw== - dependencies: - "@babel/types" "^7.18.6" - "@jridgewell/gen-mapping" "^0.3.0" - jsesc "^2.5.1" - -"@babel/generator@^7.18.13", "@babel/generator@^7.18.6": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.13.tgz#59550cbb9ae79b8def15587bdfbaa388c4abf212" - integrity sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ== - dependencies: - "@babel/types" "^7.18.13" - "@jridgewell/gen-mapping" "^0.3.2" - jsesc "^2.5.1" - -"@babel/generator@^7.19.0": +"@babel/generator@^7.19.0", "@babel/generator@^7.7.2": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.0.tgz#785596c06425e59334df2ccee63ab166b738419a" integrity sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg== @@ -143,7 +104,7 @@ "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/helper-compilation-targets@^7.17.10", "@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.0": +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.0": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.0.tgz#537ec8339d53e806ed422f1e06c8f17d55b96bb0" integrity sha512-Ai5bNWXIvwDvWM7njqsG3feMlL9hCVQsPYXodsZyLwshYkZVJt59Gftau4VrE8S9IT9asd2uSP1hG6wCNw+sXA== @@ -263,35 +224,7 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-transforms@^7.17.7", "@babel/helper-module-transforms@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz#57e3ca669e273d55c3cda55e6ebf552f37f483c8" - integrity sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw== - dependencies: - "@babel/helper-environment-visitor" "^7.18.6" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.18.6" - "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.6" - "@babel/types" "^7.18.6" - -"@babel/helper-module-transforms@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz#5a1079c005135ed627442df31a42887e80fcb712" - integrity sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.18.6" - "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" - -"@babel/helper-module-transforms@^7.19.0": +"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.0": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz#309b230f04e22c58c6a2c0c0c7e50b216d350c30" integrity sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ== @@ -409,23 +342,14 @@ "@babel/traverse" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/helpers@^7.17.9": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.6.tgz#4c966140eaa1fcaa3d5a8c09d7db61077d4debfd" - integrity sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ== +"@babel/helpers@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.19.0.tgz#f30534657faf246ae96551d88dd31e9d1fa1fc18" + integrity sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg== dependencies: - "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.6" - "@babel/types" "^7.18.6" - -"@babel/helpers@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.9.tgz#4bef3b893f253a1eced04516824ede94dcfe7ff9" - integrity sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ== - dependencies: - "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.19.0" + "@babel/types" "^7.19.0" "@babel/highlight@^7.10.4": version "7.12.13" @@ -445,17 +369,7 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.17.10": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.6.tgz#845338edecad65ebffef058d3be851f1d28a63bc" - integrity sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw== - -"@babel/parser@^7.18.10", "@babel/parser@^7.18.13", "@babel/parser@^7.18.6": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.13.tgz#5b2dd21cae4a2c5145f1fbd8ca103f9313d3b7e4" - integrity sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg== - -"@babel/parser@^7.19.0": +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.19.0": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.0.tgz#497fcafb1d5b61376959c1c338745ef0577aa02c" integrity sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw== @@ -1195,16 +1109,7 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.16.7", "@babel/template@^7.18.6", "@babel/template@^7.3.3": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.6.tgz#1283f4993e00b929d6e2d3c72fdc9168a2977a31" - integrity sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.18.6" - "@babel/types" "^7.18.6" - -"@babel/template@^7.18.10": +"@babel/template@^7.18.10", "@babel/template@^7.18.6", "@babel/template@^7.3.3": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== @@ -1213,39 +1118,7 @@ "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/traverse@^7.17.10", "@babel/traverse@^7.18.6", "@babel/traverse@^7.7.2": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.6.tgz#a228562d2f46e89258efa4ddd0416942e2fd671d" - integrity sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.6" - "@babel/helper-function-name" "^7.18.6" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.18.6" - "@babel/types" "^7.18.6" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.13", "@babel/traverse@^7.18.9": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.13.tgz#5ab59ef51a997b3f10c4587d648b9696b6cb1a68" - integrity sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.13" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.18.13" - "@babel/types" "^7.18.13" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.19.0": +"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.6", "@babel/traverse@^7.18.9", "@babel/traverse@^7.19.0", "@babel/traverse@^7.7.2": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.0.tgz#eb9c561c7360005c592cc645abafe0c3c4548eed" integrity sha512-4pKpFRDh+utd2mbRC8JLnlsMUii3PMHjpL6a0SZ4NMZy7YFP9aXORxEhdMVOc9CpWtDF09IkciQLEhK7Ml7gRA== @@ -1261,16 +1134,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.7", "@babel/types@^7.17.10", "@babel/types@^7.18.10", "@babel/types@^7.18.13", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.0.tgz#75f21d73d73dc0351f3368d28db73465f4814600" - integrity sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA== - dependencies: - "@babel/helper-string-parser" "^7.18.10" - "@babel/helper-validator-identifier" "^7.18.6" - to-fast-properties "^2.0.0" - -"@babel/types@^7.19.0": +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.7", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.0.tgz#75f21d73d73dc0351f3368d28db73465f4814600" integrity sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA== @@ -1658,7 +1522,7 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": +"@jridgewell/gen-mapping@^0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== From f84adc2ccf462c61627d61fed4a6a1fcc1dfb8f3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Sep 2022 22:23:56 +0900 Subject: [PATCH 384/652] Bump doorkeeper from 5.5.4 to 5.6.0 (#19163) Bumps [doorkeeper](https://github.com/doorkeeper-gem/doorkeeper) from 5.5.4 to 5.6.0. - [Release notes](https://github.com/doorkeeper-gem/doorkeeper/releases) - [Changelog](https://github.com/doorkeeper-gem/doorkeeper/blob/main/CHANGELOG.md) - [Commits](https://github.com/doorkeeper-gem/doorkeeper/compare/v5.5.4...v5.6.0) --- updated-dependencies: - dependency-name: doorkeeper dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 92b69782e..baefffb2f 100644 --- a/Gemfile +++ b/Gemfile @@ -46,7 +46,7 @@ gem 'omniauth-rails_csrf_protection', '~> 0.1' gem 'color_diff', '~> 0.1' gem 'discard', '~> 1.2' -gem 'doorkeeper', '~> 5.5' +gem 'doorkeeper', '~> 5.6' gem 'ed25519', '~> 1.3' gem 'fast_blank', '~> 1.0' gem 'fastimage' diff --git a/Gemfile.lock b/Gemfile.lock index 0c6aea49b..2caa5f2e1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -207,7 +207,7 @@ GEM docile (1.3.4) domain_name (0.5.20190701) unf (>= 0.0.5, < 1.0.0) - doorkeeper (5.5.4) + doorkeeper (5.6.0) railties (>= 5) dotenv (2.8.1) dotenv-rails (2.8.1) @@ -761,7 +761,7 @@ DEPENDENCIES devise-two-factor (~> 4.0) devise_pam_authenticatable2 (~> 9.2) discard (~> 1.2) - doorkeeper (~> 5.5) + doorkeeper (~> 5.6) dotenv-rails (~> 2.8) ed25519 (~> 1.3) fabrication (~> 2.30) From 479395013618a4bacad2e90620086ec7ccb67344 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Sep 2022 23:11:10 +0900 Subject: [PATCH 385/652] Bump jest from 28.1.3 to 29.0.3 (#19162) * Bump babel-jest from 28.1.3 to 29.0.3 Bumps [babel-jest](https://github.com/facebook/jest/tree/HEAD/packages/babel-jest) from 28.1.3 to 29.0.3. - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v29.0.3/packages/babel-jest) --- updated-dependencies: - dependency-name: babel-jest dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Bump jest-environment-jsdom from 28.1.3 to 29.0.3 Bumps [jest-environment-jsdom](https://github.com/facebook/jest/tree/HEAD/packages/jest-environment-jsdom) from 28.1.3 to 29.0.3. - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v29.0.3/packages/jest-environment-jsdom) --- updated-dependencies: - dependency-name: jest-environment-jsdom dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Bump jest from 28.1.3 to 29.0.3 Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 28.1.3 to 29.0.3. - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v29.0.3/packages/jest) --- updated-dependencies: - dependency-name: jest dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../__snapshots__/avatar-test.js.snap | 4 +- .../__snapshots__/avatar_overlay-test.js.snap | 4 +- .../__snapshots__/display_name-test.js.snap | 2 +- package.json | 6 +- yarn.lock | 832 ++++++++---------- 5 files changed, 395 insertions(+), 453 deletions(-) diff --git a/app/javascript/mastodon/components/__tests__/__snapshots__/avatar-test.js.snap b/app/javascript/mastodon/components/__tests__/__snapshots__/avatar-test.js.snap index 76ab3374a..1c200b184 100644 --- a/app/javascript/mastodon/components/__tests__/__snapshots__/avatar-test.js.snap +++ b/app/javascript/mastodon/components/__tests__/__snapshots__/avatar-test.js.snap @@ -6,7 +6,7 @@ exports[` Autoplay renders a animated avatar 1`] = ` onMouseEnter={[Function]} onMouseLeave={[Function]} style={ - Object { + { "backgroundImage": "url(/animated/alice.gif)", "backgroundSize": "100px 100px", "height": "100px", @@ -22,7 +22,7 @@ exports[` Still renders a still avatar 1`] = ` onMouseEnter={[Function]} onMouseLeave={[Function]} style={ - Object { + { "backgroundImage": "url(/static/alice.jpg)", "backgroundSize": "100px 100px", "height": "100px", diff --git a/app/javascript/mastodon/components/__tests__/__snapshots__/avatar_overlay-test.js.snap b/app/javascript/mastodon/components/__tests__/__snapshots__/avatar_overlay-test.js.snap index d59fee42f..58f27a321 100644 --- a/app/javascript/mastodon/components/__tests__/__snapshots__/avatar_overlay-test.js.snap +++ b/app/javascript/mastodon/components/__tests__/__snapshots__/avatar_overlay-test.js.snap @@ -7,7 +7,7 @@ exports[` renders display name + account name 1`] = ` Foo

    ", } } diff --git a/package.json b/package.json index b0f8db84d..e177434b3 100644 --- a/package.json +++ b/package.json @@ -147,14 +147,14 @@ "@babel/eslint-parser": "^7.18.9", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^12.1.5", - "babel-jest": "^28.1.3", + "babel-jest": "^29.0.3", "eslint": "^7.32.0", "eslint-plugin-import": "~2.26.0", "eslint-plugin-jsx-a11y": "~6.6.1", "eslint-plugin-promise": "~6.0.1", "eslint-plugin-react": "~7.31.6", - "jest": "^28.1.3", - "jest-environment-jsdom": "^28.1.3", + "jest": "^29.0.3", + "jest-environment-jsdom": "^29.0.3", "postcss-scss": "^4.0.4", "prettier": "^2.7.1", "raf": "^3.4.1", diff --git a/yarn.lock b/yarn.lock index f9ab55856..c1ae9694a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -607,7 +607,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-syntax-jsx@^7.18.6": +"@babel/plugin-syntax-jsx@^7.18.6", "@babel/plugin-syntax-jsx@^7.7.2": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== @@ -1308,110 +1308,110 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@jest/console@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.3.tgz#2030606ec03a18c31803b8a36382762e447655df" - integrity sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw== +"@jest/console@^29.0.3": + version "29.0.3" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.0.3.tgz#a222ab87e399317a89db88a58eaec289519e807a" + integrity sha512-cGg0r+klVHSYnfE977S9wmpuQ9L+iYuYgL+5bPXiUlUynLLYunRxswEmhBzvrSKGof5AKiHuTTmUKAqRcDY9dg== dependencies: - "@jest/types" "^28.1.3" + "@jest/types" "^29.0.3" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^28.1.3" - jest-util "^28.1.3" + jest-message-util "^29.0.3" + jest-util "^29.0.3" slash "^3.0.0" -"@jest/core@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.1.3.tgz#0ebf2bd39840f1233cd5f2d1e6fc8b71bd5a1ac7" - integrity sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA== +"@jest/core@^29.0.3": + version "29.0.3" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.0.3.tgz#ba22a9cbd0c7ba36e04292e2093c547bf53ec1fd" + integrity sha512-1d0hLbOrM1qQE3eP3DtakeMbKTcXiXP3afWxqz103xPyddS2NhnNghS7MaXx1dcDt4/6p4nlhmeILo2ofgi8cQ== dependencies: - "@jest/console" "^28.1.3" - "@jest/reporters" "^28.1.3" - "@jest/test-result" "^28.1.3" - "@jest/transform" "^28.1.3" - "@jest/types" "^28.1.3" + "@jest/console" "^29.0.3" + "@jest/reporters" "^29.0.3" + "@jest/test-result" "^29.0.3" + "@jest/transform" "^29.0.3" + "@jest/types" "^29.0.3" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" ci-info "^3.2.0" exit "^0.1.2" graceful-fs "^4.2.9" - jest-changed-files "^28.1.3" - jest-config "^28.1.3" - jest-haste-map "^28.1.3" - jest-message-util "^28.1.3" - jest-regex-util "^28.0.2" - jest-resolve "^28.1.3" - jest-resolve-dependencies "^28.1.3" - jest-runner "^28.1.3" - jest-runtime "^28.1.3" - jest-snapshot "^28.1.3" - jest-util "^28.1.3" - jest-validate "^28.1.3" - jest-watcher "^28.1.3" + jest-changed-files "^29.0.0" + jest-config "^29.0.3" + jest-haste-map "^29.0.3" + jest-message-util "^29.0.3" + jest-regex-util "^29.0.0" + jest-resolve "^29.0.3" + jest-resolve-dependencies "^29.0.3" + jest-runner "^29.0.3" + jest-runtime "^29.0.3" + jest-snapshot "^29.0.3" + jest-util "^29.0.3" + jest-validate "^29.0.3" + jest-watcher "^29.0.3" micromatch "^4.0.4" - pretty-format "^28.1.3" - rimraf "^3.0.0" + pretty-format "^29.0.3" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.1.3.tgz#abed43a6b040a4c24fdcb69eab1f97589b2d663e" - integrity sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA== +"@jest/environment@^29.0.3": + version "29.0.3" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.0.3.tgz#7745ec30a954e828e8cc6df6a13280d3b51d8f35" + integrity sha512-iKl272NKxYNQNqXMQandAIwjhQaGw5uJfGXduu8dS9llHi8jV2ChWrtOAVPnMbaaoDhnI3wgUGNDvZgHeEJQCA== dependencies: - "@jest/fake-timers" "^28.1.3" - "@jest/types" "^28.1.3" + "@jest/fake-timers" "^29.0.3" + "@jest/types" "^29.0.3" "@types/node" "*" - jest-mock "^28.1.3" + jest-mock "^29.0.3" -"@jest/expect-utils@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.1.3.tgz#58561ce5db7cd253a7edddbc051fb39dda50f525" - integrity sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA== +"@jest/expect-utils@^29.0.3": + version "29.0.3" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.0.3.tgz#f5bb86f5565bf2dacfca31ccbd887684936045b2" + integrity sha512-i1xUkau7K/63MpdwiRqaxgZOjxYs4f0WMTGJnYwUKubsNRZSeQbLorS7+I4uXVF9KQ5r61BUPAUMZ7Lf66l64Q== dependencies: - jest-get-type "^28.0.2" + jest-get-type "^29.0.0" -"@jest/expect@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-28.1.3.tgz#9ac57e1d4491baca550f6bdbd232487177ad6a72" - integrity sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw== +"@jest/expect@^29.0.3": + version "29.0.3" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.0.3.tgz#9dc7c46354eeb7a348d73881fba6402f5fdb2c30" + integrity sha512-6W7K+fsI23FQ01H/BWccPyDZFrnU9QlzDcKOjrNVU5L8yUORFAJJIpmyxWPW70+X624KUNqzZwPThPMX28aXEQ== dependencies: - expect "^28.1.3" - jest-snapshot "^28.1.3" + expect "^29.0.3" + jest-snapshot "^29.0.3" -"@jest/fake-timers@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.1.3.tgz#230255b3ad0a3d4978f1d06f70685baea91c640e" - integrity sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw== +"@jest/fake-timers@^29.0.3": + version "29.0.3" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.0.3.tgz#ad5432639b715d45a86a75c47fd75019bc36b22c" + integrity sha512-tmbUIo03x0TdtcZCESQ0oQSakPCpo7+s6+9mU19dd71MptkP4zCwoeZqna23//pgbhtT1Wq02VmA9Z9cNtvtCQ== dependencies: - "@jest/types" "^28.1.3" + "@jest/types" "^29.0.3" "@sinonjs/fake-timers" "^9.1.2" "@types/node" "*" - jest-message-util "^28.1.3" - jest-mock "^28.1.3" - jest-util "^28.1.3" + jest-message-util "^29.0.3" + jest-mock "^29.0.3" + jest-util "^29.0.3" -"@jest/globals@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.1.3.tgz#a601d78ddc5fdef542728309894895b4a42dc333" - integrity sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA== +"@jest/globals@^29.0.3": + version "29.0.3" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.0.3.tgz#681950c430fdc13ff9aa89b2d8d572ac0e4a1bf5" + integrity sha512-YqGHT65rFY2siPIHHFjuCGUsbzRjdqkwbat+Of6DmYRg5shIXXrLdZoVE/+TJ9O1dsKsFmYhU58JvIbZRU1Z9w== dependencies: - "@jest/environment" "^28.1.3" - "@jest/expect" "^28.1.3" - "@jest/types" "^28.1.3" + "@jest/environment" "^29.0.3" + "@jest/expect" "^29.0.3" + "@jest/types" "^29.0.3" + jest-mock "^29.0.3" -"@jest/reporters@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.1.3.tgz#9adf6d265edafc5fc4a434cfb31e2df5a67a369a" - integrity sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg== +"@jest/reporters@^29.0.3": + version "29.0.3" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.0.3.tgz#735f110e08b44b38729d8dbbb74063bdf5aba8a5" + integrity sha512-3+QU3d4aiyOWfmk1obDerie4XNCaD5Xo1IlKNde2yGEi02WQD+ZQD0i5Hgqm1e73sMV7kw6pMlCnprtEwEVwxw== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^28.1.3" - "@jest/test-result" "^28.1.3" - "@jest/transform" "^28.1.3" - "@jest/types" "^28.1.3" - "@jridgewell/trace-mapping" "^0.3.13" + "@jest/console" "^29.0.3" + "@jest/test-result" "^29.0.3" + "@jest/transform" "^29.0.3" + "@jest/types" "^29.0.3" + "@jridgewell/trace-mapping" "^0.3.15" "@types/node" "*" chalk "^4.0.0" collect-v8-coverage "^1.0.0" @@ -1423,67 +1423,67 @@ istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.1.3" - jest-message-util "^28.1.3" - jest-util "^28.1.3" - jest-worker "^28.1.3" + jest-message-util "^29.0.3" + jest-util "^29.0.3" + jest-worker "^29.0.3" slash "^3.0.0" string-length "^4.0.1" strip-ansi "^6.0.0" terminal-link "^2.0.0" v8-to-istanbul "^9.0.1" -"@jest/schemas@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" - integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== +"@jest/schemas@^29.0.0": + version "29.0.0" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.0.0.tgz#5f47f5994dd4ef067fb7b4188ceac45f77fe952a" + integrity sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA== dependencies: "@sinclair/typebox" "^0.24.1" -"@jest/source-map@^28.1.2": - version "28.1.2" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-28.1.2.tgz#7fe832b172b497d6663cdff6c13b0a920e139e24" - integrity sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww== +"@jest/source-map@^29.0.0": + version "29.0.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.0.0.tgz#f8d1518298089f8ae624e442bbb6eb870ee7783c" + integrity sha512-nOr+0EM8GiHf34mq2GcJyz/gYFyLQ2INDhAylrZJ9mMWoW21mLBfZa0BUVPPMxVYrLjeiRe2Z7kWXOGnS0TFhQ== dependencies: - "@jridgewell/trace-mapping" "^0.3.13" + "@jridgewell/trace-mapping" "^0.3.15" callsites "^3.0.0" graceful-fs "^4.2.9" -"@jest/test-result@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.3.tgz#5eae945fd9f4b8fcfce74d239e6f725b6bf076c5" - integrity sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg== +"@jest/test-result@^29.0.3": + version "29.0.3" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.0.3.tgz#b03d8ef4c58be84cd5d5d3b24d4b4c8cabbf2746" + integrity sha512-vViVnQjCgTmbhDKEonKJPtcFe9G/CJO4/Np4XwYJah+lF2oI7KKeRp8t1dFvv44wN2NdbDb/qC6pi++Vpp0Dlg== dependencies: - "@jest/console" "^28.1.3" - "@jest/types" "^28.1.3" + "@jest/console" "^29.0.3" + "@jest/types" "^29.0.3" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz#9d0c283d906ac599c74bde464bc0d7e6a82886c3" - integrity sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw== +"@jest/test-sequencer@^29.0.3": + version "29.0.3" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.0.3.tgz#0681061ad21fb8e293b49c4fdf7e631ca79240ba" + integrity sha512-Hf4+xYSWZdxTNnhDykr8JBs0yBN/nxOXyUQWfotBUqqy0LF9vzcFB0jm/EDNZCx587znLWTIgxcokW7WeZMobQ== dependencies: - "@jest/test-result" "^28.1.3" + "@jest/test-result" "^29.0.3" graceful-fs "^4.2.9" - jest-haste-map "^28.1.3" + jest-haste-map "^29.0.3" slash "^3.0.0" -"@jest/transform@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.3.tgz#59d8098e50ab07950e0f2fc0fc7ec462371281b0" - integrity sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA== +"@jest/transform@^29.0.3": + version "29.0.3" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.0.3.tgz#9eb1fed2072a0354f190569807d1250572fb0970" + integrity sha512-C5ihFTRYaGDbi/xbRQRdbo5ddGtI4VSpmL6AIcZxdhwLbXMa7PcXxxqyI91vGOFHnn5aVM3WYnYKCHEqmLVGzg== dependencies: "@babel/core" "^7.11.6" - "@jest/types" "^28.1.3" - "@jridgewell/trace-mapping" "^0.3.13" + "@jest/types" "^29.0.3" + "@jridgewell/trace-mapping" "^0.3.15" babel-plugin-istanbul "^6.1.1" chalk "^4.0.0" convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" + fast-json-stable-stringify "^2.1.0" graceful-fs "^4.2.9" - jest-haste-map "^28.1.3" - jest-regex-util "^28.0.2" - jest-util "^28.1.3" + jest-haste-map "^29.0.3" + jest-regex-util "^29.0.0" + jest-util "^29.0.3" micromatch "^4.0.4" pirates "^4.0.4" slash "^3.0.0" @@ -1510,12 +1510,12 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" -"@jest/types@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" - integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== +"@jest/types@^29.0.3": + version "29.0.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.0.3.tgz#0be78fdddb1a35aeb2041074e55b860561c8ef63" + integrity sha512-coBJmOQvurXjN1Hh5PzF7cmsod0zLIOXpP8KD161mqNlroMhLcwpODiEzi7ZsRl5Z/AIuxpeNm8DCl43F4kz8A== dependencies: - "@jest/schemas" "^28.1.3" + "@jest/schemas" "^29.0.0" "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" @@ -1554,7 +1554,7 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.13": +"@jridgewell/trace-mapping@^0.3.12": version "0.3.14" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed" integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ== @@ -1562,6 +1562,14 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@jridgewell/trace-mapping@^0.3.15": + version "0.3.15" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz#aba35c48a38d3fd84b37e66c9c0423f9744f9774" + integrity sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping@^0.3.9": version "0.3.13" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" @@ -1864,14 +1872,14 @@ jest-diff "^25.2.1" pretty-format "^25.2.1" -"@types/jsdom@^16.2.4": - version "16.2.14" - resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-16.2.14.tgz#26fe9da6a8870715b154bb84cd3b2e53433d8720" - integrity sha512-6BAy1xXEmMuHeAJ4Fv4yXKwBDTGTOseExKE3OaHiNycdHdZw59KfYzrt0DkDluvwmik1HRt6QS7bImxUmpSy+w== +"@types/jsdom@^20.0.0": + version "20.0.0" + resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-20.0.0.tgz#4414fb629465167f8b7b3804b9e067bdd99f1791" + integrity sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA== dependencies: "@types/node" "*" - "@types/parse5" "*" "@types/tough-cookie" "*" + parse5 "^7.0.0" "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": version "7.0.6" @@ -1908,11 +1916,6 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== -"@types/parse5@*": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.3.tgz#705bb349e789efa06f43f128cef51240753424cb" - integrity sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g== - "@types/prettier@^2.1.5": version "2.2.3" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.2.3.tgz#ef65165aea2924c9359205bf748865b8881753c0" @@ -2190,7 +2193,7 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -abab@^2.0.5, abab@^2.0.6: +abab@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== @@ -2615,15 +2618,15 @@ axobject-query@^2.2.0: resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== -babel-jest@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.3.tgz#c1187258197c099072156a0a121c11ee1e3917d5" - integrity sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q== +babel-jest@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.0.3.tgz#64e156a47a77588db6a669a88dedff27ed6e260f" + integrity sha512-ApPyHSOhS/sVzwUOQIWJmdvDhBsMG01HX9z7ogtkp1TToHGGUWFlnXJUIzCgKPSfiYLn3ibipCYzsKSURHEwLg== dependencies: - "@jest/transform" "^28.1.3" + "@jest/transform" "^29.0.3" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^28.1.3" + babel-preset-jest "^29.0.2" chalk "^4.0.0" graceful-fs "^4.2.9" slash "^3.0.0" @@ -2656,10 +2659,10 @@ babel-plugin-istanbul@^6.1.1: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz#1952c4d0ea50f2d6d794353762278d1d8cca3fbe" - integrity sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q== +babel-plugin-jest-hoist@^29.0.2: + version "29.0.2" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.0.2.tgz#ae61483a829a021b146c016c6ad39b8bcc37c2c8" + integrity sha512-eBr2ynAEFjcebVvu8Ktx580BD1QKCrBG1XwEUTXJe285p9HA/4hOhfWCFRQhTKSyBV0VzjhG7H91Eifz9s29hg== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" @@ -2765,12 +2768,12 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz#5dfc20b99abed5db994406c2b9ab94c73aaa419d" - integrity sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A== +babel-preset-jest@^29.0.2: + version "29.0.2" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.0.2.tgz#e14a7124e22b161551818d89e5bdcfb3b2b0eac7" + integrity sha512-BeVXp7rH5TK96ofyEnHjznjLMQ2nAeDJ+QzxKnHAAMs0RgrQsCywjAN8m4mOm5Di0pxU//3AoEeJJrerMH5UeA== dependencies: - babel-plugin-jest-hoist "^28.1.3" + babel-plugin-jest-hoist "^29.0.2" babel-preset-current-node-syntax "^1.0.0" balanced-match@^1.0.0: @@ -3262,15 +3265,7 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0, chalk@^4.0.0, chalk@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.2: +chalk@^4.0, chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -4012,7 +4007,7 @@ damerau-levenshtein@^1.0.8: resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== -data-urls@^3.0.1, data-urls@^3.0.2: +data-urls@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143" integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== @@ -4208,10 +4203,10 @@ diff-sequences@^25.2.6: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== -diff-sequences@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.1.1.tgz#9989dc731266dc2903457a70e996f3a041913ac6" - integrity sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw== +diff-sequences@^29.0.0: + version "29.0.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.0.0.tgz#bae49972ef3933556bcb0800b72e8579d19d9e4f" + integrity sha512-7Qe/zd1wxSDL4D/X/FPjOMB+ZMDt71W94KYaq05I2l0oQqgXgs7s4ftYYmV38gBSrPz2vcygxfs1xn0FT+rKNA== diffie-hellman@^5.0.0: version "5.0.3" @@ -4912,16 +4907,16 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -expect@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/expect/-/expect-28.1.3.tgz#90a7c1a124f1824133dd4533cce2d2bdcb6603ec" - integrity sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g== +expect@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.0.3.tgz#6be65ddb945202f143c4e07c083f4f39f3bd326f" + integrity sha512-t8l5DTws3212VbmPL+tBFXhjRHLmctHB0oQbL8eUc6S7NzZtYUhycrFO9mkxA0ZUC6FAWdNi7JchJSkODtcu1Q== dependencies: - "@jest/expect-utils" "^28.1.3" - jest-get-type "^28.0.2" - jest-matcher-utils "^28.1.3" - jest-message-util "^28.1.3" - jest-util "^28.1.3" + "@jest/expect-utils" "^29.0.3" + jest-get-type "^29.0.0" + jest-matcher-utils "^29.0.3" + jest-message-util "^29.0.3" + jest-util "^29.0.3" express@^4.17.1, express@^4.18.1: version "4.18.1" @@ -5833,7 +5828,7 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= -https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: +https-proxy-agent@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== @@ -6556,82 +6551,82 @@ jake@^10.8.5: filelist "^1.0.1" minimatch "^3.0.4" -jest-changed-files@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-28.1.3.tgz#d9aeee6792be3686c47cb988a8eaf82ff4238831" - integrity sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA== +jest-changed-files@^29.0.0: + version "29.0.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.0.0.tgz#aa238eae42d9372a413dd9a8dadc91ca1806dce0" + integrity sha512-28/iDMDrUpGoCitTURuDqUzWQoWmOmOKOFST1mi2lwh62X4BFf6khgH3uSuo1e49X/UDjuApAj3w0wLOex4VPQ== dependencies: execa "^5.0.0" p-limit "^3.1.0" -jest-circus@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.1.3.tgz#d14bd11cf8ee1a03d69902dc47b6bd4634ee00e4" - integrity sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow== +jest-circus@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.0.3.tgz#90faebc90295291cfc636b27dbd82e3bfb9e7a48" + integrity sha512-QeGzagC6Hw5pP+df1+aoF8+FBSgkPmraC1UdkeunWh0jmrp7wC0Hr6umdUAOELBQmxtKAOMNC3KAdjmCds92Zg== dependencies: - "@jest/environment" "^28.1.3" - "@jest/expect" "^28.1.3" - "@jest/test-result" "^28.1.3" - "@jest/types" "^28.1.3" + "@jest/environment" "^29.0.3" + "@jest/expect" "^29.0.3" + "@jest/test-result" "^29.0.3" + "@jest/types" "^29.0.3" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" dedent "^0.7.0" is-generator-fn "^2.0.0" - jest-each "^28.1.3" - jest-matcher-utils "^28.1.3" - jest-message-util "^28.1.3" - jest-runtime "^28.1.3" - jest-snapshot "^28.1.3" - jest-util "^28.1.3" + jest-each "^29.0.3" + jest-matcher-utils "^29.0.3" + jest-message-util "^29.0.3" + jest-runtime "^29.0.3" + jest-snapshot "^29.0.3" + jest-util "^29.0.3" p-limit "^3.1.0" - pretty-format "^28.1.3" + pretty-format "^29.0.3" slash "^3.0.0" stack-utils "^2.0.3" -jest-cli@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.1.3.tgz#558b33c577d06de55087b8448d373b9f654e46b2" - integrity sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ== +jest-cli@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.0.3.tgz#fd8f0ef363a7a3d9c53ef62e0651f18eeffa77b9" + integrity sha512-aUy9Gd/Kut1z80eBzG10jAn6BgS3BoBbXyv+uXEqBJ8wnnuZ5RpNfARoskSrTIy1GY4a8f32YGuCMwibtkl9CQ== dependencies: - "@jest/core" "^28.1.3" - "@jest/test-result" "^28.1.3" - "@jest/types" "^28.1.3" + "@jest/core" "^29.0.3" + "@jest/test-result" "^29.0.3" + "@jest/types" "^29.0.3" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.9" import-local "^3.0.2" - jest-config "^28.1.3" - jest-util "^28.1.3" - jest-validate "^28.1.3" + jest-config "^29.0.3" + jest-util "^29.0.3" + jest-validate "^29.0.3" prompts "^2.0.1" yargs "^17.3.1" -jest-config@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-28.1.3.tgz#e315e1f73df3cac31447eed8b8740a477392ec60" - integrity sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ== +jest-config@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.0.3.tgz#c2e52a8f5adbd18de79f99532d8332a19e232f13" + integrity sha512-U5qkc82HHVYe3fNu2CRXLN4g761Na26rWKf7CjM8LlZB3In1jadEkZdMwsE37rd9RSPV0NfYaCjHdk/gu3v+Ew== dependencies: "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^28.1.3" - "@jest/types" "^28.1.3" - babel-jest "^28.1.3" + "@jest/test-sequencer" "^29.0.3" + "@jest/types" "^29.0.3" + babel-jest "^29.0.3" chalk "^4.0.0" ci-info "^3.2.0" deepmerge "^4.2.2" glob "^7.1.3" graceful-fs "^4.2.9" - jest-circus "^28.1.3" - jest-environment-node "^28.1.3" - jest-get-type "^28.0.2" - jest-regex-util "^28.0.2" - jest-resolve "^28.1.3" - jest-runner "^28.1.3" - jest-util "^28.1.3" - jest-validate "^28.1.3" + jest-circus "^29.0.3" + jest-environment-node "^29.0.3" + jest-get-type "^29.0.0" + jest-regex-util "^29.0.0" + jest-resolve "^29.0.3" + jest-runner "^29.0.3" + jest-util "^29.0.3" + jest-validate "^29.0.3" micromatch "^4.0.4" parse-json "^5.2.0" - pretty-format "^28.1.3" + pretty-format "^29.0.3" slash "^3.0.0" strip-json-comments "^3.1.1" @@ -6645,128 +6640,128 @@ jest-diff@^25.2.1: jest-get-type "^25.2.6" pretty-format "^25.5.0" -jest-diff@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.1.3.tgz#948a192d86f4e7a64c5264ad4da4877133d8792f" - integrity sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw== +jest-diff@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.0.3.tgz#41cc02409ad1458ae1bf7684129a3da2856341ac" + integrity sha512-+X/AIF5G/vX9fWK+Db9bi9BQas7M9oBME7egU7psbn4jlszLFCu0dW63UgeE6cs/GANq4fLaT+8sGHQQ0eCUfg== dependencies: chalk "^4.0.0" - diff-sequences "^28.1.1" - jest-get-type "^28.0.2" - pretty-format "^28.1.3" + diff-sequences "^29.0.0" + jest-get-type "^29.0.0" + pretty-format "^29.0.3" -jest-docblock@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-28.1.1.tgz#6f515c3bf841516d82ecd57a62eed9204c2f42a8" - integrity sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA== +jest-docblock@^29.0.0: + version "29.0.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.0.0.tgz#3151bcc45ed7f5a8af4884dcc049aee699b4ceae" + integrity sha512-s5Kpra/kLzbqu9dEjov30kj1n4tfu3e7Pl8v+f8jOkeWNqM6Ds8jRaJfZow3ducoQUrf2Z4rs2N5S3zXnb83gw== dependencies: detect-newline "^3.0.0" -jest-each@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-28.1.3.tgz#bdd1516edbe2b1f3569cfdad9acd543040028f81" - integrity sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g== +jest-each@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.0.3.tgz#7ef3157580b15a609d7ef663dd4fc9b07f4e1299" + integrity sha512-wILhZfESURHHBNvPMJ0lZlYZrvOQJxAo3wNHi+ycr90V7M+uGR9Gh4+4a/BmaZF0XTyZsk4OiYEf3GJN7Ltqzg== dependencies: - "@jest/types" "^28.1.3" + "@jest/types" "^29.0.3" chalk "^4.0.0" - jest-get-type "^28.0.2" - jest-util "^28.1.3" - pretty-format "^28.1.3" + jest-get-type "^29.0.0" + jest-util "^29.0.3" + pretty-format "^29.0.3" -jest-environment-jsdom@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-28.1.3.tgz#2d4e5d61b7f1d94c3bddfbb21f0308ee506c09fb" - integrity sha512-HnlGUmZRdxfCByd3GM2F100DgQOajUBzEitjGqIREcb45kGjZvRrKUdlaF6escXBdcXNl0OBh+1ZrfeZT3GnAg== +jest-environment-jsdom@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.0.3.tgz#0c6ee841133dd6acbe957bceaceea93b7ec60ca9" + integrity sha512-KIGvpm12c71hoYTjL4wC2c8K6KfhOHJqJtaHc1IApu5rG047YWZoEP13BlbucWfzGISBrmli8KFqdhdQEa8Wnw== dependencies: - "@jest/environment" "^28.1.3" - "@jest/fake-timers" "^28.1.3" - "@jest/types" "^28.1.3" - "@types/jsdom" "^16.2.4" + "@jest/environment" "^29.0.3" + "@jest/fake-timers" "^29.0.3" + "@jest/types" "^29.0.3" + "@types/jsdom" "^20.0.0" "@types/node" "*" - jest-mock "^28.1.3" - jest-util "^28.1.3" - jsdom "^19.0.0" + jest-mock "^29.0.3" + jest-util "^29.0.3" + jsdom "^20.0.0" -jest-environment-node@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.1.3.tgz#7e74fe40eb645b9d56c0c4b70ca4357faa349be5" - integrity sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A== +jest-environment-node@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.0.3.tgz#293804b1e0fa5f0e354dacbe510655caa478a3b2" + integrity sha512-cdZqRCnmIlTXC+9vtvmfiY/40Cj6s2T0czXuq1whvQdmpzAnj4sbqVYuZ4zFHk766xTTJ+Ij3uUqkk8KCfXoyg== dependencies: - "@jest/environment" "^28.1.3" - "@jest/fake-timers" "^28.1.3" - "@jest/types" "^28.1.3" + "@jest/environment" "^29.0.3" + "@jest/fake-timers" "^29.0.3" + "@jest/types" "^29.0.3" "@types/node" "*" - jest-mock "^28.1.3" - jest-util "^28.1.3" + jest-mock "^29.0.3" + jest-util "^29.0.3" jest-get-type@^25.2.6: version "25.2.6" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== -jest-get-type@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-28.0.2.tgz#34622e628e4fdcd793d46db8a242227901fcf203" - integrity sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA== +jest-get-type@^29.0.0: + version "29.0.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.0.0.tgz#843f6c50a1b778f7325df1129a0fd7aa713aef80" + integrity sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw== -jest-haste-map@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.1.3.tgz#abd5451129a38d9841049644f34b034308944e2b" - integrity sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA== +jest-haste-map@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.0.3.tgz#d7f3f7180f558d760eacc5184aac5a67f20ef939" + integrity sha512-uMqR99+GuBHo0RjRhOE4iA6LmsxEwRdgiIAQgMU/wdT2XebsLDz5obIwLZm/Psj+GwSEQhw9AfAVKGYbh2G55A== dependencies: - "@jest/types" "^28.1.3" + "@jest/types" "^29.0.3" "@types/graceful-fs" "^4.1.3" "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" graceful-fs "^4.2.9" - jest-regex-util "^28.0.2" - jest-util "^28.1.3" - jest-worker "^28.1.3" + jest-regex-util "^29.0.0" + jest-util "^29.0.3" + jest-worker "^29.0.3" micromatch "^4.0.4" walker "^1.0.8" optionalDependencies: fsevents "^2.3.2" -jest-leak-detector@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz#a6685d9b074be99e3adee816ce84fd30795e654d" - integrity sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA== +jest-leak-detector@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.0.3.tgz#e85cf3391106a7a250850b6766b508bfe9c7bc6f" + integrity sha512-YfW/G63dAuiuQ3QmQlh8hnqLDe25WFY3eQhuc/Ev1AGmkw5zREblTh7TCSKLoheyggu6G9gxO2hY8p9o6xbaRQ== dependencies: - jest-get-type "^28.0.2" - pretty-format "^28.1.3" + jest-get-type "^29.0.0" + pretty-format "^29.0.3" -jest-matcher-utils@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz#5a77f1c129dd5ba3b4d7fc20728806c78893146e" - integrity sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw== +jest-matcher-utils@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.0.3.tgz#b8305fd3f9e27cdbc210b21fc7dbba92d4e54560" + integrity sha512-RsR1+cZ6p1hDV4GSCQTg+9qjeotQCgkaleIKLK7dm+U4V/H2bWedU3RAtLm8+mANzZ7eDV33dMar4pejd7047w== dependencies: chalk "^4.0.0" - jest-diff "^28.1.3" - jest-get-type "^28.0.2" - pretty-format "^28.1.3" + jest-diff "^29.0.3" + jest-get-type "^29.0.0" + pretty-format "^29.0.3" -jest-message-util@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.3.tgz#232def7f2e333f1eecc90649b5b94b0055e7c43d" - integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g== +jest-message-util@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.0.3.tgz#f0254e1ffad21890c78355726202cc91d0a40ea8" + integrity sha512-7T8JiUTtDfppojosORAflABfLsLKMLkBHSWkjNQrjIltGoDzNGn7wEPOSfjqYAGTYME65esQzMJxGDjuLBKdOg== dependencies: "@babel/code-frame" "^7.12.13" - "@jest/types" "^28.1.3" + "@jest/types" "^29.0.3" "@types/stack-utils" "^2.0.0" chalk "^4.0.0" graceful-fs "^4.2.9" micromatch "^4.0.4" - pretty-format "^28.1.3" + pretty-format "^29.0.3" slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.1.3.tgz#d4e9b1fc838bea595c77ab73672ebf513ab249da" - integrity sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA== +jest-mock@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.0.3.tgz#4f0093f6a9cb2ffdb9c44a07a3912f0c098c8de9" + integrity sha512-ort9pYowltbcrCVR43wdlqfAiFJXBx8l4uJDsD8U72LgBcetvEp+Qxj1W9ZYgMRoeAo+ov5cnAGF2B6+Oth+ww== dependencies: - "@jest/types" "^28.1.3" + "@jest/types" "^29.0.3" "@types/node" "*" jest-pnp-resolver@^1.2.2: @@ -6774,154 +6769,155 @@ jest-pnp-resolver@^1.2.2: resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== -jest-regex-util@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" - integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== +jest-regex-util@^29.0.0: + version "29.0.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.0.0.tgz#b442987f688289df8eb6c16fa8df488b4cd007de" + integrity sha512-BV7VW7Sy0fInHWN93MMPtlClweYv2qrSCwfeFWmpribGZtQPWNvRSq9XOVgOEjU1iBGRKXUZil0o2AH7Iy9Lug== -jest-resolve-dependencies@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz#8c65d7583460df7275c6ea2791901fa975c1fe66" - integrity sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA== +jest-resolve-dependencies@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.0.3.tgz#f23a54295efc6374b86b198cf8efed5606d6b762" + integrity sha512-KzuBnXqNvbuCdoJpv8EanbIGObk7vUBNt/PwQPPx2aMhlv/jaXpUJsqWYRpP/0a50faMBY7WFFP8S3/CCzwfDw== dependencies: - jest-regex-util "^28.0.2" - jest-snapshot "^28.1.3" + jest-regex-util "^29.0.0" + jest-snapshot "^29.0.3" -jest-resolve@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-28.1.3.tgz#cfb36100341ddbb061ec781426b3c31eb51aa0a8" - integrity sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ== +jest-resolve@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.0.3.tgz#329a3431e3b9eb6629a2cd483e9bed95b26827b9" + integrity sha512-toVkia85Y/BPAjJasTC9zIPY6MmVXQPtrCk8SmiheC4MwVFE/CMFlOtMN6jrwPMC6TtNh8+sTMllasFeu1wMPg== dependencies: chalk "^4.0.0" graceful-fs "^4.2.9" - jest-haste-map "^28.1.3" + jest-haste-map "^29.0.3" jest-pnp-resolver "^1.2.2" - jest-util "^28.1.3" - jest-validate "^28.1.3" + jest-util "^29.0.3" + jest-validate "^29.0.3" resolve "^1.20.0" resolve.exports "^1.1.0" slash "^3.0.0" -jest-runner@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-28.1.3.tgz#5eee25febd730b4713a2cdfd76bdd5557840f9a1" - integrity sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA== +jest-runner@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.0.3.tgz#2e47fe1e8777aea9b8970f37e8f83630b508fb87" + integrity sha512-Usu6VlTOZlCZoNuh3b2Tv/yzDpKqtiNAetG9t3kJuHfUyVMNW7ipCCJOUojzKkjPoaN7Bl1f7Buu6PE0sGpQxw== dependencies: - "@jest/console" "^28.1.3" - "@jest/environment" "^28.1.3" - "@jest/test-result" "^28.1.3" - "@jest/transform" "^28.1.3" - "@jest/types" "^28.1.3" + "@jest/console" "^29.0.3" + "@jest/environment" "^29.0.3" + "@jest/test-result" "^29.0.3" + "@jest/transform" "^29.0.3" + "@jest/types" "^29.0.3" "@types/node" "*" chalk "^4.0.0" emittery "^0.10.2" graceful-fs "^4.2.9" - jest-docblock "^28.1.1" - jest-environment-node "^28.1.3" - jest-haste-map "^28.1.3" - jest-leak-detector "^28.1.3" - jest-message-util "^28.1.3" - jest-resolve "^28.1.3" - jest-runtime "^28.1.3" - jest-util "^28.1.3" - jest-watcher "^28.1.3" - jest-worker "^28.1.3" + jest-docblock "^29.0.0" + jest-environment-node "^29.0.3" + jest-haste-map "^29.0.3" + jest-leak-detector "^29.0.3" + jest-message-util "^29.0.3" + jest-resolve "^29.0.3" + jest-runtime "^29.0.3" + jest-util "^29.0.3" + jest-watcher "^29.0.3" + jest-worker "^29.0.3" p-limit "^3.1.0" source-map-support "0.5.13" -jest-runtime@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-28.1.3.tgz#a57643458235aa53e8ec7821949e728960d0605f" - integrity sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw== +jest-runtime@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.0.3.tgz#5a823ec5902257519556a4e5a71a868e8fd788aa" + integrity sha512-12gZXRQ7ozEeEHKTY45a+YLqzNDR/x4c//X6AqwKwKJPpWM8FY4vwn4VQJOcLRS3Nd1fWwgP7LU4SoynhuUMHQ== dependencies: - "@jest/environment" "^28.1.3" - "@jest/fake-timers" "^28.1.3" - "@jest/globals" "^28.1.3" - "@jest/source-map" "^28.1.2" - "@jest/test-result" "^28.1.3" - "@jest/transform" "^28.1.3" - "@jest/types" "^28.1.3" + "@jest/environment" "^29.0.3" + "@jest/fake-timers" "^29.0.3" + "@jest/globals" "^29.0.3" + "@jest/source-map" "^29.0.0" + "@jest/test-result" "^29.0.3" + "@jest/transform" "^29.0.3" + "@jest/types" "^29.0.3" + "@types/node" "*" chalk "^4.0.0" cjs-module-lexer "^1.0.0" collect-v8-coverage "^1.0.0" - execa "^5.0.0" glob "^7.1.3" graceful-fs "^4.2.9" - jest-haste-map "^28.1.3" - jest-message-util "^28.1.3" - jest-mock "^28.1.3" - jest-regex-util "^28.0.2" - jest-resolve "^28.1.3" - jest-snapshot "^28.1.3" - jest-util "^28.1.3" + jest-haste-map "^29.0.3" + jest-message-util "^29.0.3" + jest-mock "^29.0.3" + jest-regex-util "^29.0.0" + jest-resolve "^29.0.3" + jest-snapshot "^29.0.3" + jest-util "^29.0.3" slash "^3.0.0" strip-bom "^4.0.0" -jest-snapshot@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-28.1.3.tgz#17467b3ab8ddb81e2f605db05583d69388fc0668" - integrity sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg== +jest-snapshot@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.0.3.tgz#0a024706986a915a6eefae74d7343069d2fc8eef" + integrity sha512-52q6JChm04U3deq+mkQ7R/7uy7YyfVIrebMi6ZkBoDJ85yEjm/sJwdr1P0LOIEHmpyLlXrxy3QP0Zf5J2kj0ew== dependencies: "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" "@babel/plugin-syntax-typescript" "^7.7.2" "@babel/traverse" "^7.7.2" "@babel/types" "^7.3.3" - "@jest/expect-utils" "^28.1.3" - "@jest/transform" "^28.1.3" - "@jest/types" "^28.1.3" + "@jest/expect-utils" "^29.0.3" + "@jest/transform" "^29.0.3" + "@jest/types" "^29.0.3" "@types/babel__traverse" "^7.0.6" "@types/prettier" "^2.1.5" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^28.1.3" + expect "^29.0.3" graceful-fs "^4.2.9" - jest-diff "^28.1.3" - jest-get-type "^28.0.2" - jest-haste-map "^28.1.3" - jest-matcher-utils "^28.1.3" - jest-message-util "^28.1.3" - jest-util "^28.1.3" + jest-diff "^29.0.3" + jest-get-type "^29.0.0" + jest-haste-map "^29.0.3" + jest-matcher-utils "^29.0.3" + jest-message-util "^29.0.3" + jest-util "^29.0.3" natural-compare "^1.4.0" - pretty-format "^28.1.3" + pretty-format "^29.0.3" semver "^7.3.5" -jest-util@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" - integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== +jest-util@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.0.3.tgz#06d1d77f9a1bea380f121897d78695902959fbc0" + integrity sha512-Q0xaG3YRG8QiTC4R6fHjHQPaPpz9pJBEi0AeOE4mQh/FuWOijFjGXMMOfQEaU9i3z76cNR7FobZZUQnL6IyfdQ== dependencies: - "@jest/types" "^28.1.3" + "@jest/types" "^29.0.3" "@types/node" "*" chalk "^4.0.0" ci-info "^3.2.0" graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.1.3.tgz#e322267fd5e7c64cea4629612c357bbda96229df" - integrity sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA== +jest-validate@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.0.3.tgz#f9521581d7344685428afa0a4d110e9c519aeeb6" + integrity sha512-OebiqqT6lK8cbMPtrSoS3aZP4juID762lZvpf1u+smZnwTEBCBInan0GAIIhv36MxGaJvmq5uJm7dl5gVt+Zrw== dependencies: - "@jest/types" "^28.1.3" + "@jest/types" "^29.0.3" camelcase "^6.2.0" chalk "^4.0.0" - jest-get-type "^28.0.2" + jest-get-type "^29.0.0" leven "^3.1.0" - pretty-format "^28.1.3" + pretty-format "^29.0.3" -jest-watcher@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.3.tgz#c6023a59ba2255e3b4c57179fc94164b3e73abd4" - integrity sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g== +jest-watcher@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.0.3.tgz#8e220d1cc4f8029875e82015d084cab20f33d57f" + integrity sha512-tQX9lU91A+9tyUQKUMp0Ns8xAcdhC9fo73eqA3LFxP2bSgiF49TNcc+vf3qgGYYK9qRjFpXW9+4RgF/mbxyOOw== dependencies: - "@jest/test-result" "^28.1.3" - "@jest/types" "^28.1.3" + "@jest/test-result" "^29.0.3" + "@jest/types" "^29.0.3" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" emittery "^0.10.2" - jest-util "^28.1.3" + jest-util "^29.0.3" string-length "^4.0.1" jest-worker@^26.2.1: @@ -6942,24 +6938,24 @@ jest-worker@^26.5.0: merge-stream "^2.0.0" supports-color "^7.0.0" -jest-worker@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.3.tgz#7e3c4ce3fa23d1bb6accb169e7f396f98ed4bb98" - integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g== +jest-worker@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.0.3.tgz#c2ba0aa7e41eec9eb0be8e8a322ae6518df72647" + integrity sha512-Tl/YWUugQOjoTYwjKdfJWkSOfhufJHO5LhXTSZC3TRoQKO+fuXnZAdoXXBlpLXKGODBL3OvdUasfDD4PcMe6ng== dependencies: "@types/node" "*" merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest/-/jest-28.1.3.tgz#e9c6a7eecdebe3548ca2b18894a50f45b36dfc6b" - integrity sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA== +jest@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.0.3.tgz#5227a0596d30791b2649eea347e4aa97f734944d" + integrity sha512-ElgUtJBLgXM1E8L6K1RW1T96R897YY/3lRYqq9uVcPWtP2AAl/nQ16IYDh/FzQOOQ12VEuLdcPU83mbhG2C3PQ== dependencies: - "@jest/core" "^28.1.3" - "@jest/types" "^28.1.3" + "@jest/core" "^29.0.3" + "@jest/types" "^29.0.3" import-local "^3.0.2" - jest-cli "^28.1.3" + jest-cli "^29.0.3" js-base64@^2.1.9: version "2.6.4" @@ -6986,39 +6982,6 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" -jsdom@^19.0.0: - version "19.0.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-19.0.0.tgz#93e67c149fe26816d38a849ea30ac93677e16b6a" - integrity sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A== - dependencies: - abab "^2.0.5" - acorn "^8.5.0" - acorn-globals "^6.0.0" - cssom "^0.5.0" - cssstyle "^2.3.0" - data-urls "^3.0.1" - decimal.js "^10.3.1" - domexception "^4.0.0" - escodegen "^2.0.0" - form-data "^4.0.0" - html-encoding-sniffer "^3.0.0" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.0" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.0" - parse5 "6.0.1" - saxes "^5.0.1" - symbol-tree "^3.2.4" - tough-cookie "^4.0.0" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^3.0.0" - webidl-conversions "^7.0.0" - whatwg-encoding "^2.0.0" - whatwg-mimetype "^3.0.0" - whatwg-url "^10.0.0" - ws "^8.2.3" - xml-name-validator "^4.0.0" - jsdom@^20.0.0: version "20.0.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-20.0.0.tgz#882825ac9cc5e5bbee704ba16143e1fa78361ebf" @@ -8353,11 +8316,6 @@ parse-passwd@^1.0.0: resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= -parse5@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - parse5@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.0.0.tgz#51f74a5257f5fcc536389e8c2d0b3802e1bfa91a" @@ -9032,13 +8990,12 @@ pretty-format@^27.0.2: ansi-styles "^5.0.0" react-is "^17.0.1" -pretty-format@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5" - integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q== +pretty-format@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.0.3.tgz#23d5f8cabc9cbf209a77d49409d093d61166a811" + integrity sha512-cHudsvQr1K5vNVLbvYF/nv3Qy/F/BcEKxGuIeMiVMRHxPOO1RxXooP8g/ZrwAp7Dx+KdMZoOc7NxLHhMrP2f9Q== dependencies: - "@jest/schemas" "^28.1.3" - ansi-regex "^5.0.1" + "@jest/schemas" "^29.0.0" ansi-styles "^5.0.0" react-is "^18.0.0" @@ -9881,7 +9838,7 @@ rimraf@^2.5.4, rimraf@^2.6.3: dependencies: glob "^7.1.3" -rimraf@^3.0.0, rimraf@^3.0.2: +rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== @@ -9974,13 +9931,6 @@ sax@~1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== - dependencies: - xmlchars "^2.2.0" - saxes@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" @@ -11805,14 +11755,6 @@ whatwg-mimetype@^3.0.0: resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== -whatwg-url@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-10.0.0.tgz#37264f720b575b4a311bd4094ed8c760caaa05da" - integrity sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w== - dependencies: - tr46 "^3.0.0" - webidl-conversions "^7.0.0" - whatwg-url@^11.0.0: version "11.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" @@ -12109,7 +12051,7 @@ ws@^7.3.1: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== -ws@^8.2.3, ws@^8.8.0, ws@^8.8.1: +ws@^8.8.0, ws@^8.8.1: version "8.8.1" resolved "https://registry.yarnpkg.com/ws/-/ws-8.8.1.tgz#5dbad0feb7ade8ecc99b830c1d77c913d4955ff0" integrity sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA== From 0aacf00f5b77264537aa87fb8f78d7346feb1ec4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Sep 2022 23:12:25 +0900 Subject: [PATCH 386/652] Bump rails from 6.1.6.1 to 6.1.7 (#19164) Bumps [rails](https://github.com/rails/rails) from 6.1.6.1 to 6.1.7. - [Release notes](https://github.com/rails/rails/releases) - [Commits](https://github.com/rails/rails/compare/v6.1.6.1...v6.1.7) --- updated-dependencies: - dependency-name: rails dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 108 +++++++++++++++++++++++++-------------------------- 2 files changed, 55 insertions(+), 55 deletions(-) diff --git a/Gemfile b/Gemfile index baefffb2f..d90c17f14 100644 --- a/Gemfile +++ b/Gemfile @@ -7,7 +7,7 @@ gem 'pkg-config', '~> 1.4' gem 'rexml', '~> 3.2' gem 'puma', '~> 5.6' -gem 'rails', '~> 6.1.6' +gem 'rails', '~> 6.1.7' gem 'sprockets', '~> 3.7.2' gem 'thor', '~> 1.2' gem 'rack', '~> 2.2.4' diff --git a/Gemfile.lock b/Gemfile.lock index 2caa5f2e1..8b8a15623 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -10,40 +10,40 @@ GIT GEM remote: https://rubygems.org/ specs: - actioncable (6.1.6.1) - actionpack (= 6.1.6.1) - activesupport (= 6.1.6.1) + actioncable (6.1.7) + actionpack (= 6.1.7) + activesupport (= 6.1.7) nio4r (~> 2.0) websocket-driver (>= 0.6.1) - actionmailbox (6.1.6.1) - actionpack (= 6.1.6.1) - activejob (= 6.1.6.1) - activerecord (= 6.1.6.1) - activestorage (= 6.1.6.1) - activesupport (= 6.1.6.1) + actionmailbox (6.1.7) + actionpack (= 6.1.7) + activejob (= 6.1.7) + activerecord (= 6.1.7) + activestorage (= 6.1.7) + activesupport (= 6.1.7) mail (>= 2.7.1) - actionmailer (6.1.6.1) - actionpack (= 6.1.6.1) - actionview (= 6.1.6.1) - activejob (= 6.1.6.1) - activesupport (= 6.1.6.1) + actionmailer (6.1.7) + actionpack (= 6.1.7) + actionview (= 6.1.7) + activejob (= 6.1.7) + activesupport (= 6.1.7) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 2.0) - actionpack (6.1.6.1) - actionview (= 6.1.6.1) - activesupport (= 6.1.6.1) + actionpack (6.1.7) + actionview (= 6.1.7) + activesupport (= 6.1.7) rack (~> 2.0, >= 2.0.9) rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.2.0) - actiontext (6.1.6.1) - actionpack (= 6.1.6.1) - activerecord (= 6.1.6.1) - activestorage (= 6.1.6.1) - activesupport (= 6.1.6.1) + actiontext (6.1.7) + actionpack (= 6.1.7) + activerecord (= 6.1.7) + activestorage (= 6.1.7) + activesupport (= 6.1.7) nokogiri (>= 1.8.5) - actionview (6.1.6.1) - activesupport (= 6.1.6.1) + actionview (6.1.7) + activesupport (= 6.1.7) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) @@ -54,22 +54,22 @@ GEM case_transform (>= 0.2) jsonapi-renderer (>= 0.1.1.beta1, < 0.3) active_record_query_trace (1.8) - activejob (6.1.6.1) - activesupport (= 6.1.6.1) + activejob (6.1.7) + activesupport (= 6.1.7) globalid (>= 0.3.6) - activemodel (6.1.6.1) - activesupport (= 6.1.6.1) - activerecord (6.1.6.1) - activemodel (= 6.1.6.1) - activesupport (= 6.1.6.1) - activestorage (6.1.6.1) - actionpack (= 6.1.6.1) - activejob (= 6.1.6.1) - activerecord (= 6.1.6.1) - activesupport (= 6.1.6.1) + activemodel (6.1.7) + activesupport (= 6.1.7) + activerecord (6.1.7) + activemodel (= 6.1.7) + activesupport (= 6.1.7) + activestorage (6.1.7) + actionpack (= 6.1.7) + activejob (= 6.1.7) + activerecord (= 6.1.7) + activesupport (= 6.1.7) marcel (~> 1.0) mini_mime (>= 1.1.0) - activesupport (6.1.6.1) + activesupport (6.1.7) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) minitest (>= 5.1) @@ -500,20 +500,20 @@ GEM rack rack-test (2.0.2) rack (>= 1.3) - rails (6.1.6.1) - actioncable (= 6.1.6.1) - actionmailbox (= 6.1.6.1) - actionmailer (= 6.1.6.1) - actionpack (= 6.1.6.1) - actiontext (= 6.1.6.1) - actionview (= 6.1.6.1) - activejob (= 6.1.6.1) - activemodel (= 6.1.6.1) - activerecord (= 6.1.6.1) - activestorage (= 6.1.6.1) - activesupport (= 6.1.6.1) + rails (6.1.7) + actioncable (= 6.1.7) + actionmailbox (= 6.1.7) + actionmailer (= 6.1.7) + actionpack (= 6.1.7) + actiontext (= 6.1.7) + actionview (= 6.1.7) + activejob (= 6.1.7) + activemodel (= 6.1.7) + activerecord (= 6.1.7) + activestorage (= 6.1.7) + activesupport (= 6.1.7) bundler (>= 1.15.0) - railties (= 6.1.6.1) + railties (= 6.1.7) sprockets-rails (>= 2.0.0) rails-controller-testing (1.0.5) actionpack (>= 5.0.1.rc1) @@ -529,9 +529,9 @@ GEM railties (>= 6.0.0, < 7) rails-settings-cached (0.6.6) rails (>= 4.2.0) - railties (6.1.6.1) - actionpack (= 6.1.6.1) - activesupport (= 6.1.6.1) + railties (6.1.7) + actionpack (= 6.1.7) + activesupport (= 6.1.7) method_source rake (>= 12.2) thor (~> 1.0) @@ -816,7 +816,7 @@ DEPENDENCIES rack (~> 2.2.4) rack-attack (~> 6.6) rack-cors (~> 1.1) - rails (~> 6.1.6) + rails (~> 6.1.7) rails-controller-testing (~> 1.0) rails-i18n (~> 6.0) rails-settings-cached (~> 0.6) From 526b4b3677dfc5139289b405185024c85bba14dc Mon Sep 17 00:00:00 2001 From: trwnh Date: Thu, 15 Sep 2022 08:35:06 -0500 Subject: [PATCH 387/652] Fix breaking change in admin account API (#19176) * Fix breaking change in admin account API Ensure that `ip` is a String value and not returning a raw database entry * please rubocop --- app/serializers/rest/admin/account_serializer.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/serializers/rest/admin/account_serializer.rb b/app/serializers/rest/admin/account_serializer.rb index 3480e8c5a..2fbc7b1cb 100644 --- a/app/serializers/rest/admin/account_serializer.rb +++ b/app/serializers/rest/admin/account_serializer.rb @@ -77,6 +77,6 @@ class REST::Admin::AccountSerializer < ActiveModel::Serializer end def ip - ips&.first + ips&.first&.ip end end From 6307634db560e30c0f21f45c2a35a2a08bb3b778 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 17 Sep 2022 10:03:03 +0900 Subject: [PATCH 388/652] Bump eslint-plugin-react from 7.31.6 to 7.31.8 (#19169) Bumps [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) from 7.31.6 to 7.31.8. - [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases) - [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md) - [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.31.6...v7.31.8) --- updated-dependencies: - dependency-name: eslint-plugin-react dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index e177434b3..41a1fcbf0 100644 --- a/package.json +++ b/package.json @@ -152,7 +152,7 @@ "eslint-plugin-import": "~2.26.0", "eslint-plugin-jsx-a11y": "~6.6.1", "eslint-plugin-promise": "~6.0.1", - "eslint-plugin-react": "~7.31.6", + "eslint-plugin-react": "~7.31.8", "jest": "^29.0.3", "jest-environment-jsdom": "^29.0.3", "postcss-scss": "^4.0.4", diff --git a/yarn.lock b/yarn.lock index c1ae9694a..533e2932e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4672,10 +4672,10 @@ eslint-plugin-promise@~6.0.1: resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.0.1.tgz#a8cddf96a67c4059bdabf4d724a29572188ae423" integrity sha512-uM4Tgo5u3UWQiroOyDEsYcVMOo7re3zmno0IZmB5auxoaQNIceAbXEkSt8RNrKtaYehARHG06pYK6K1JhtP0Zw== -eslint-plugin-react@~7.31.6: - version "7.31.6" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.6.tgz#55ec176be94917ecde3f3ca0e1363073193e241a" - integrity sha512-CXu4eu28sb8Sd2+cyUYsJVyDvpTlaXPG+bOzzpS9IzZKtye96AYX3ZmHQ6ayn/OAIQ/ufDJP8ElPWd63Pepn9w== +eslint-plugin-react@~7.31.8: + version "7.31.8" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.8.tgz#3a4f80c10be1bcbc8197be9e8b641b2a3ef219bf" + integrity sha512-5lBTZmgQmARLLSYiwI71tiGVTLUuqXantZM6vlSY39OaDSV0M7+32K5DnLkmFrwTe+Ksz0ffuLUC91RUviVZfw== dependencies: array-includes "^3.1.5" array.prototype.flatmap "^1.3.0" From 2163cd333d1482fb6bf1d5bffc215a1e66030127 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 17 Sep 2022 10:03:19 +0900 Subject: [PATCH 389/652] Bump sass from 1.54.8 to 1.54.9 (#19170) Bumps [sass](https://github.com/sass/dart-sass) from 1.54.8 to 1.54.9. - [Release notes](https://github.com/sass/dart-sass/releases) - [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md) - [Commits](https://github.com/sass/dart-sass/compare/1.54.8...1.54.9) --- updated-dependencies: - dependency-name: sass dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 41a1fcbf0..18867a51f 100644 --- a/package.json +++ b/package.json @@ -118,7 +118,7 @@ "requestidlecallback": "^0.3.0", "reselect": "^4.1.6", "rimraf": "^3.0.2", - "sass": "^1.54.8", + "sass": "^1.54.9", "sass-loader": "^10.2.0", "stacktrace-js": "^2.0.2", "stringz": "^2.1.0", diff --git a/yarn.lock b/yarn.lock index 533e2932e..a7a5e3746 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9917,10 +9917,10 @@ sass-loader@^10.2.0: schema-utils "^3.0.0" semver "^7.3.2" -sass@^1.54.8: - version "1.54.8" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.8.tgz#4adef0dd86ea2b1e4074f551eeda4fc5f812a996" - integrity sha512-ib4JhLRRgbg6QVy6bsv5uJxnJMTS2soVcCp9Y88Extyy13A8vV0G1fAwujOzmNkFQbR3LvedudAMbtuNRPbQww== +sass@^1.54.9: + version "1.54.9" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.9.tgz#b05f14ed572869218d1a76961de60cd647221762" + integrity sha512-xb1hjASzEH+0L0WI9oFjqhRi51t/gagWnxLiwUNMltA0Ab6jIDkAacgKiGYKM9Jhy109osM7woEEai6SXeJo5Q== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" From 58d219621ef89d05c0dde8c6def2a58356d28b43 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 17 Sep 2022 10:03:46 +0900 Subject: [PATCH 390/652] Bump @rails/ujs from 6.1.6 to 6.1.7 (#19171) Bumps [@rails/ujs](https://github.com/rails/rails) from 6.1.6 to 6.1.7. - [Release notes](https://github.com/rails/rails/releases) - [Commits](https://github.com/rails/rails/compare/v6.1.6...v6.1.7) --- updated-dependencies: - dependency-name: "@rails/ujs" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 18867a51f..d2d2c89bd 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "@babel/runtime": "^7.19.0", "@gamestdio/websocket": "^0.3.2", "@github/webauthn-json": "^0.5.7", - "@rails/ujs": "^6.1.6", + "@rails/ujs": "^6.1.7", "array-includes": "^3.1.5", "arrow-key-navigation": "^1.2.0", "autoprefixer": "^9.8.8", diff --git a/yarn.lock b/yarn.lock index a7a5e3746..5da3452f2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1646,10 +1646,10 @@ resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.11.tgz#aeb16f50649a91af79dbe36574b66d0f9e4d9f71" integrity sha512-3NsZsJIA/22P3QUyrEDNA2D133H4j224twJrdipXN38dpnIOzAbUDtOwkcJ5pXmn75w7LSQDjA4tO9dm1XlqlA== -"@rails/ujs@^6.1.6": - version "6.1.6" - resolved "https://registry.yarnpkg.com/@rails/ujs/-/ujs-6.1.6.tgz#de486ae0a663e1bed637a012cbb2739bfcfa2031" - integrity sha512-2M4zlthYmOC6X/tcPcFd//sIL26a7JbCpGNl8uIrQf+pR1Z47uhYt9cOwVqJTJZPurdy2k+YY3Pn64pqruAPEA== +"@rails/ujs@^6.1.7": + version "6.1.7" + resolved "https://registry.yarnpkg.com/@rails/ujs/-/ujs-6.1.7.tgz#b09dc5b2105dd267e8374c47e4490240451dc7f6" + integrity sha512-0e7WQ4LE/+LEfW2zfAw9ppsB6A8RmxbdAUPAF++UT80epY+7emuQDkKXmaK0a9lp6An50RvzezI0cIQjp1A58w== "@rollup/plugin-babel@^5.2.0": version "5.3.1" From 14c7c9e40e72ac7ba2ba098b2c11d35ba463b56a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 18 Sep 2022 16:50:12 +0900 Subject: [PATCH 391/652] Bump blurhash from 1.1.5 to 2.0.0 (#19168) Bumps [blurhash](https://github.com/woltapp/blurhash) from 1.1.5 to 2.0.0. - [Release notes](https://github.com/woltapp/blurhash/releases) - [Commits](https://github.com/woltapp/blurhash/commits) --- updated-dependencies: - dependency-name: blurhash dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index d2d2c89bd..b57108c04 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "babel-plugin-preval": "^5.1.0", "babel-plugin-react-intl": "^6.2.0", "babel-plugin-transform-react-remove-prop-types": "^0.4.24", - "blurhash": "^1.1.5", + "blurhash": "^2.0.0", "classnames": "^2.3.1", "cocoon-js-vanilla": "^1.3.0", "color-blend": "^3.0.1", diff --git a/yarn.lock b/yarn.lock index 5da3452f2..04837a50c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2836,10 +2836,10 @@ bluebird@^3.5.5: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -blurhash@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/blurhash/-/blurhash-1.1.5.tgz#3034104cd5dce5a3e5caa871ae2f0f1f2d0ab566" - integrity sha512-a+LO3A2DfxTaTztsmkbLYmUzUeApi0LZuKalwbNmqAHR6HhJGMt1qSV/R3wc+w4DL28holjqO3Bg74aUGavGjg== +blurhash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/blurhash/-/blurhash-2.0.0.tgz#c2e6392043d5355241cf9ddaec9359023ea57a40" + integrity sha512-fdEZnyJZ5E5s9neCfZUMSMkKfMtdKz1fG53t/iYvMjUFUsDnyZ1YnRRayKBK/B8cilNwe5gaIrPF8QlLrukEZQ== bmp-js@^0.1.0: version "0.1.0" From 1145dbd327ae9b56357cc488801d723051f58e0b Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 20 Sep 2022 23:30:26 +0200 Subject: [PATCH 392/652] Improve error reporting and logging when processing remote accounts (#15605) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add a more descriptive PrivateNetworkAddressError exception class * Remove unnecessary exception class to rescue clause * Remove unnecessary include to JsonLdHelper * Give more neutral error message when too many webfinger redirects * Remove unnecessary guard condition * Rework how “ActivityPub::FetchRemoteAccountService” handles errors Add “suppress_errors” keyword argument to avoid raising errors in ActivityPub::FetchRemoteAccountService#call (default/previous behavior). * Rework how “ActivityPub::FetchRemoteKeyService” handles errors Add “suppress_errors” keyword argument to avoid raising errors in ActivityPub::FetchRemoteKeyService#call (default/previous behavior). * Fix Webfinger::RedirectError not being a subclass of Webfinger::Error * Add suppress_errors option to ResolveAccountService Defaults to true (to preserve previous behavior). If set to false, errors will be raised instead of caught, allowing the caller to be informed of what went wrong. * Return more precise error when failing to fetch account signing AP payloads * Add tests * Fixes * Refactor error handling a bit * Fix various issues * Add specific error when provided Digest is not 256 bits of base64-encoded data * Please CodeClimate * Improve webfinger error reporting --- .../concerns/signature_verification.rb | 46 ++++++++++++---- app/lib/request.rb | 6 +-- app/lib/webfinger.rb | 2 +- .../fetch_remote_account_service.rb | 38 +++++++++----- .../activitypub/fetch_remote_key_service.rb | 34 ++++++++---- .../activitypub/process_account_service.rb | 2 - app/services/resolve_account_service.rb | 12 ++--- lib/exceptions.rb | 9 ++++ .../fetch_remote_account_service_spec.rb | 52 +++++++++++++++++++ spec/services/resolve_account_service_spec.rb | 4 +- 10 files changed, 158 insertions(+), 47 deletions(-) diff --git a/app/controllers/concerns/signature_verification.rb b/app/controllers/concerns/signature_verification.rb index 4dd0cac55..89dc828f4 100644 --- a/app/controllers/concerns/signature_verification.rb +++ b/app/controllers/concerns/signature_verification.rb @@ -93,11 +93,15 @@ module SignatureVerification return account unless verify_signature(account, signature, compare_signed_string).nil? - @signature_verification_failure_reason = "Verification failed for #{account.username}@#{account.domain} #{account.uri} using rsa-sha256 (RSASSA-PKCS1-v1_5 with SHA-256)" - @signed_request_account = nil + fail_with! "Verification failed for #{account.username}@#{account.domain} #{account.uri} using rsa-sha256 (RSASSA-PKCS1-v1_5 with SHA-256)" rescue SignatureVerificationError => e - @signature_verification_failure_reason = e.message - @signed_request_account = nil + fail_with! e.message + rescue HTTP::Error, OpenSSL::SSL::SSLError => e + fail_with! "Failed to fetch remote data: #{e.message}" + rescue Mastodon::UnexptectedResponseError + fail_with! 'Failed to fetch remote data (got unexpected reply from server)' + rescue Stoplight::Error::RedLight + fail_with! 'Fetching attempt skipped because of recent connection failure' end def request_body @@ -106,6 +110,11 @@ module SignatureVerification private + def fail_with!(message) + @signature_verification_failure_reason = message + @signed_request_account = nil + end + def signature_params @signature_params ||= begin raw_signature = request.headers['Signature'] @@ -138,7 +147,17 @@ module SignatureVerification digests = request.headers['Digest'].split(',').map { |digest| digest.split('=', 2) }.map { |key, value| [key.downcase, value] } sha256 = digests.assoc('sha-256') raise SignatureVerificationError, "Mastodon only supports SHA-256 in Digest header. Offered algorithms: #{digests.map(&:first).join(', ')}" if sha256.nil? - raise SignatureVerificationError, "Invalid Digest value. Computed SHA-256 digest: #{body_digest}; given: #{sha256[1]}" if body_digest != sha256[1] + + return if body_digest == sha256[1] + + digest_size = begin + Base64.strict_decode64(sha256[1].strip).length + rescue ArgumentError + raise SignatureVerificationError, "Invalid Digest value. The provided Digest value is not a valid base64 string. Given digest: #{sha256[1]}" + end + + raise SignatureVerificationError, "Invalid Digest value. The provided Digest value is not a SHA-256 digest. Given digest: #{sha256[1]}" if digest_size != 32 + raise SignatureVerificationError, "Invalid Digest value. Computed SHA-256 digest: #{body_digest}; given: #{sha256[1]}" end def verify_signature(account, signature, compare_signed_string) @@ -216,19 +235,20 @@ module SignatureVerification end if key_id.start_with?('acct:') - stoplight_wrap_request { ResolveAccountService.new.call(key_id.gsub(/\Aacct:/, '')) } + stoplight_wrap_request { ResolveAccountService.new.call(key_id.gsub(/\Aacct:/, ''), suppress_errors: false) } elsif !ActivityPub::TagManager.instance.local_uri?(key_id) account = ActivityPub::TagManager.instance.uri_to_resource(key_id, Account) - account ||= stoplight_wrap_request { ActivityPub::FetchRemoteKeyService.new.call(key_id, id: false) } + account ||= stoplight_wrap_request { ActivityPub::FetchRemoteKeyService.new.call(key_id, id: false, suppress_errors: false) } account end - rescue Mastodon::HostValidationError - nil + rescue Mastodon::PrivateNetworkAddressError => e + raise SignatureVerificationError, "Requests to private network addresses are disallowed (tried to query #{e.host})" + rescue Mastodon::HostValidationError, ActivityPub::FetchRemoteAccountService::Error, ActivityPub::FetchRemoteKeyService::Error, Webfinger::Error => e + raise SignatureVerificationError, e.message end def stoplight_wrap_request(&block) Stoplight("source:#{request.remote_ip}", &block) - .with_fallback { nil } .with_threshold(1) .with_cool_off_time(5.minutes.seconds) .with_error_handler { |error, handle| error.is_a?(HTTP::Error) || error.is_a?(OpenSSL::SSL::SSLError) ? handle.call(error) : raise(error) } @@ -237,6 +257,10 @@ module SignatureVerification def account_refresh_key(account) return if account.local? || !account.activitypub? - ActivityPub::FetchRemoteAccountService.new.call(account.uri, only_key: true) + ActivityPub::FetchRemoteAccountService.new.call(account.uri, only_key: true, suppress_errors: false) + rescue Mastodon::PrivateNetworkAddressError => e + raise SignatureVerificationError, "Requests to private network addresses are disallowed (tried to query #{e.host})" + rescue Mastodon::HostValidationError, ActivityPub::FetchRemoteAccountService::Error, Webfinger::Error => e + raise SignatureVerificationError, e.message end end diff --git a/app/lib/request.rb b/app/lib/request.rb index f5123d776..eac04c798 100644 --- a/app/lib/request.rb +++ b/app/lib/request.rb @@ -208,7 +208,7 @@ class Request addresses.each do |address| begin - check_private_address(address) + check_private_address(address, host) sock = ::Socket.new(address.is_a?(Resolv::IPv6) ? ::Socket::AF_INET6 : ::Socket::AF_INET, ::Socket::SOCK_STREAM, 0) sockaddr = ::Socket.pack_sockaddr_in(port, address.to_s) @@ -264,10 +264,10 @@ class Request alias new open - def check_private_address(address) + def check_private_address(address, host) addr = IPAddr.new(address.to_s) return if private_address_exceptions.any? { |range| range.include?(addr) } - raise Mastodon::HostValidationError if PrivateAddressCheck.private_address?(addr) + raise Mastodon::PrivateNetworkAddressError, host if PrivateAddressCheck.private_address?(addr) end def private_address_exceptions diff --git a/app/lib/webfinger.rb b/app/lib/webfinger.rb index a681e0815..7c0c10c33 100644 --- a/app/lib/webfinger.rb +++ b/app/lib/webfinger.rb @@ -3,7 +3,7 @@ class Webfinger class Error < StandardError; end class GoneError < Error; end - class RedirectError < StandardError; end + class RedirectError < Error; end class Response attr_reader :uri diff --git a/app/services/activitypub/fetch_remote_account_service.rb b/app/services/activitypub/fetch_remote_account_service.rb index 9d01f5386..d7d739c59 100644 --- a/app/services/activitypub/fetch_remote_account_service.rb +++ b/app/services/activitypub/fetch_remote_account_service.rb @@ -5,10 +5,12 @@ class ActivityPub::FetchRemoteAccountService < BaseService include DomainControlHelper include WebfingerHelper + class Error < StandardError; end + SUPPORTED_TYPES = %w(Application Group Organization Person Service).freeze # Does a WebFinger roundtrip on each call, unless `only_key` is true - def call(uri, id: true, prefetched_body: nil, break_on_redirect: false, only_key: false) + def call(uri, id: true, prefetched_body: nil, break_on_redirect: false, only_key: false, suppress_errors: true) return if domain_not_allowed?(uri) return ActivityPub::TagManager.instance.uri_to_resource(uri, Account) if ActivityPub::TagManager.instance.local_uri?(uri) @@ -18,38 +20,50 @@ class ActivityPub::FetchRemoteAccountService < BaseService else body_to_json(prefetched_body, compare_id: id ? uri : nil) end + rescue Oj::ParseError + raise Error, "Error parsing JSON-LD document #{uri}" end - return if !supported_context? || !expected_type? || (break_on_redirect && @json['movedTo'].present?) + raise Error, "Error fetching actor JSON at #{uri}" if @json.nil? + raise Error, "Unsupported JSON-LD context for document #{uri}" unless supported_context? + raise Error, "Unexpected object type for actor #{uri} (expected any of: #{SUPPORTED_TYPES})" unless expected_type? + raise Error, "Actor #{uri} has moved to #{@json['movedTo']}" if break_on_redirect && @json['movedTo'].present? @uri = @json['id'] @username = @json['preferredUsername'] @domain = Addressable::URI.parse(@uri).normalized_host - return unless only_key || verified_webfinger? + check_webfinger! unless only_key ActivityPub::ProcessAccountService.new.call(@username, @domain, @json, only_key: only_key, verified_webfinger: !only_key) - rescue Oj::ParseError - nil + rescue Error => e + Rails.logger.debug "Fetching account #{uri} failed: #{e.message}" + raise unless suppress_errors end private - def verified_webfinger? + def check_webfinger! webfinger = webfinger!("acct:#{@username}@#{@domain}") confirmed_username, confirmed_domain = split_acct(webfinger.subject) - return webfinger.link('self', 'href') == @uri if @username.casecmp(confirmed_username).zero? && @domain.casecmp(confirmed_domain).zero? + if @username.casecmp(confirmed_username).zero? && @domain.casecmp(confirmed_domain).zero? + raise Error, "Webfinger response for #{@username}@#{@domain} does not loop back to #{@uri}" if webfinger.link('self', 'href') != @uri + return + end webfinger = webfinger!("acct:#{confirmed_username}@#{confirmed_domain}") @username, @domain = split_acct(webfinger.subject) - return false unless @username.casecmp(confirmed_username).zero? && @domain.casecmp(confirmed_domain).zero? - return false if webfinger.link('self', 'href') != @uri + unless confirmed_username.casecmp(@username).zero? && confirmed_domain.casecmp(@domain).zero? + raise Webfinger::RedirectError, "Too many webfinger redirects for URI #{uri} (stopped at #{@username}@#{@domain})" + end - true - rescue Webfinger::Error - false + raise Error, "Webfinger response for #{@username}@#{@domain} does not loop back to #{@uri}" if webfinger.link('self', 'href') != @uri + rescue Webfinger::RedirectError => e + raise Error, e.message + rescue Webfinger::Error => e + raise Error, "Webfinger error when resolving #{@username}@#{@domain}: #{e.message}" end def split_acct(acct) diff --git a/app/services/activitypub/fetch_remote_key_service.rb b/app/services/activitypub/fetch_remote_key_service.rb index c48288b3b..01008d883 100644 --- a/app/services/activitypub/fetch_remote_key_service.rb +++ b/app/services/activitypub/fetch_remote_key_service.rb @@ -3,9 +3,11 @@ class ActivityPub::FetchRemoteKeyService < BaseService include JsonLdHelper + class Error < StandardError; end + # Returns account that owns the key - def call(uri, id: true, prefetched_body: nil) - return if uri.blank? + def call(uri, id: true, prefetched_body: nil, suppress_errors: true) + raise Error, 'No key URI given' if uri.blank? if prefetched_body.nil? if id @@ -13,7 +15,7 @@ class ActivityPub::FetchRemoteKeyService < BaseService if person? @json = fetch_resource(@json['id'], true) elsif uri != @json['id'] - return + raise Error, "Fetched URI #{uri} has wrong id #{@json['id']}" end else @json = fetch_resource(uri, id) @@ -22,21 +24,29 @@ class ActivityPub::FetchRemoteKeyService < BaseService @json = body_to_json(prefetched_body, compare_id: id ? uri : nil) end - return unless supported_context?(@json) && expected_type? - return find_account(@json['id'], @json) if person? + raise Error, "Unable to fetch key JSON at #{uri}" if @json.nil? + raise Error, "Unsupported JSON-LD context for document #{uri}" unless supported_context?(@json) + raise Error, "Unexpected object type for key #{uri}" unless expected_type? + return find_account(@json['id'], @json, suppress_errors) if person? @owner = fetch_resource(owner_uri, true) - return unless supported_context?(@owner) && confirmed_owner? + raise Error, "Unable to fetch actor JSON #{owner_uri}" if @owner.nil? + raise Error, "Unsupported JSON-LD context for document #{owner_uri}" unless supported_context?(@owner) + raise Error, "Unexpected object type for actor #{owner_uri} (expected any of: #{SUPPORTED_TYPES})" unless expected_owner_type? + raise Error, "publicKey id for #{owner_uri} does not correspond to #{@json['id']}" unless confirmed_owner? - find_account(owner_uri, @owner) + find_account(owner_uri, @owner, suppress_errors) + rescue Error => e + Rails.logger.debug "Fetching key #{uri} failed: #{e.message}" + raise unless suppress_errors end private - def find_account(uri, prefetched_body) + def find_account(uri, prefetched_body, suppress_errors) account = ActivityPub::TagManager.instance.uri_to_resource(uri, Account) - account ||= ActivityPub::FetchRemoteAccountService.new.call(uri, prefetched_body: prefetched_body) + account ||= ActivityPub::FetchRemoteAccountService.new.call(uri, prefetched_body: prefetched_body, suppress_errors: suppress_errors) account end @@ -56,7 +66,11 @@ class ActivityPub::FetchRemoteKeyService < BaseService @owner_uri ||= value_or_id(@json['owner']) end + def expected_owner_type? + equals_or_includes_any?(@owner['type'], ActivityPub::FetchRemoteAccountService::SUPPORTED_TYPES) + end + def confirmed_owner? - equals_or_includes_any?(@owner['type'], ActivityPub::FetchRemoteAccountService::SUPPORTED_TYPES) && value_or_id(@owner['publicKey']) == @json['id'] + value_or_id(@owner['publicKey']) == @json['id'] end end diff --git a/app/services/activitypub/process_account_service.rb b/app/services/activitypub/process_account_service.rb index 34750dba6..456b3524b 100644 --- a/app/services/activitypub/process_account_service.rb +++ b/app/services/activitypub/process_account_service.rb @@ -32,8 +32,6 @@ class ActivityPub::ProcessAccountService < BaseService process_duplicate_accounts! if @options[:verified_webfinger] end - return if @account.nil? - after_protocol_change! if protocol_changed? after_key_change! if key_changed? && !@options[:signed_with_known_key] clear_tombstones! if key_changed? diff --git a/app/services/resolve_account_service.rb b/app/services/resolve_account_service.rb index b55e45409..e3b370968 100644 --- a/app/services/resolve_account_service.rb +++ b/app/services/resolve_account_service.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true class ResolveAccountService < BaseService - include JsonLdHelper include DomainControlHelper include WebfingerHelper include Redisable @@ -13,6 +12,7 @@ class ResolveAccountService < BaseService # @param [Hash] options # @option options [Boolean] :redirected Do not follow further Webfinger redirects # @option options [Boolean] :skip_webfinger Do not attempt any webfinger query or refreshing account data + # @option options [Boolean] :suppress_errors When failing, return nil instead of raising an error # @return [Account] def call(uri, options = {}) return if uri.blank? @@ -52,15 +52,15 @@ class ResolveAccountService < BaseService # either needs to be created, or updated from fresh data fetch_account! - rescue Webfinger::Error, Oj::ParseError => e + rescue Webfinger::Error => e Rails.logger.debug "Webfinger query for #{@uri} failed: #{e}" - nil + raise unless @options[:suppress_errors] end private def process_options!(uri, options) - @options = options + @options = { suppress_errors: true }.merge(options) if uri.is_a?(Account) @account = uri @@ -96,7 +96,7 @@ class ResolveAccountService < BaseService @username, @domain = split_acct(@webfinger.subject) unless confirmed_username.casecmp(@username).zero? && confirmed_domain.casecmp(@domain).zero? - raise Webfinger::RedirectError, "The URI #{uri} tries to hijack #{@username}@#{@domain}" + raise Webfinger::RedirectError, "Too many webfinger redirects for URI #{uri} (stopped at #{@username}@#{@domain})" end rescue Webfinger::GoneError @gone = true @@ -110,7 +110,7 @@ class ResolveAccountService < BaseService return unless activitypub_ready? with_lock("resolve:#{@username}@#{@domain}") do - @account = ActivityPub::FetchRemoteAccountService.new.call(actor_url) + @account = ActivityPub::FetchRemoteAccountService.new.call(actor_url, suppress_errors: @options[:suppress_errors]) end @account diff --git a/lib/exceptions.rb b/lib/exceptions.rb index 0c677b660..3c5ba226b 100644 --- a/lib/exceptions.rb +++ b/lib/exceptions.rb @@ -25,4 +25,13 @@ module Mastodon end end end + + class PrivateNetworkAddressError < HostValidationError + attr_reader :host + + def initialize(host) + @host = host + super() + end + end end diff --git a/spec/services/activitypub/fetch_remote_account_service_spec.rb b/spec/services/activitypub/fetch_remote_account_service_spec.rb index aa13f0a9b..ec6f1f41d 100644 --- a/spec/services/activitypub/fetch_remote_account_service_spec.rb +++ b/spec/services/activitypub/fetch_remote_account_service_spec.rb @@ -119,6 +119,58 @@ RSpec.describe ActivityPub::FetchRemoteAccountService, type: :service do include_examples 'sets profile data' end + context 'when WebFinger returns a different URI' do + let!(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/bob' }] } } + + before do + stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor)) + stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' }) + end + + it 'fetches resource' do + account + expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once + end + + it 'looks up webfinger' do + account + expect(a_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com')).to have_been_made.once + end + + it 'does not create account' do + expect(account).to be_nil + end + end + + context 'when WebFinger returns a different URI after a redirection' do + let!(:webfinger) { { subject: 'acct:alice@iscool.af', links: [{ rel: 'self', href: 'https://example.com/bob' }] } } + + before do + stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor)) + stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' }) + stub_request(:get, 'https://iscool.af/.well-known/webfinger?resource=acct:alice@iscool.af').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' }) + end + + it 'fetches resource' do + account + expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once + end + + it 'looks up webfinger' do + account + expect(a_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com')).to have_been_made.once + end + + it 'looks up "redirected" webfinger' do + account + expect(a_request(:get, 'https://iscool.af/.well-known/webfinger?resource=acct:alice@iscool.af')).to have_been_made.once + end + + it 'does not create account' do + expect(account).to be_nil + end + end + context 'with wrong id' do it 'does not create account' do expect(subject.call('https://fake.address/@foo', prefetched_body: Oj.dump(actor))).to be_nil diff --git a/spec/services/resolve_account_service_spec.rb b/spec/services/resolve_account_service_spec.rb index 8c302e1d8..654606bea 100644 --- a/spec/services/resolve_account_service_spec.rb +++ b/spec/services/resolve_account_service_spec.rb @@ -137,8 +137,8 @@ RSpec.describe ResolveAccountService, type: :service do stub_request(:get, 'https://evil.example.com/.well-known/webfinger?resource=acct:foo@evil.example.com').to_return(body: Oj.dump(webfinger2), headers: { 'Content-Type': 'application/jrd+json' }) end - it 'returns new remote account' do - expect { subject.call('Foo@redirected.example.com') }.to raise_error Webfinger::RedirectError + it 'does not return a new remote account' do + expect(subject.call('Foo@redirected.example.com')).to be_nil end end From 7b38cb88caa46a47eb7b18f2211ef768923568aa Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 20 Sep 2022 23:49:00 +0200 Subject: [PATCH 393/652] Fix ProcessMentionService swallowing unprocessed mentions to unconfirmed/unapproved users (#19191) --- app/services/process_mentions_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/process_mentions_service.rb b/app/services/process_mentions_service.rb index 8c63b611d..c9c158af1 100644 --- a/app/services/process_mentions_service.rb +++ b/app/services/process_mentions_service.rb @@ -38,7 +38,7 @@ class ProcessMentionsService < BaseService mentioned_account = Account.find_remote(username, domain) # Unapproved and unconfirmed accounts should not be mentionable - next if mentioned_account&.local? && !(mentioned_account.user_confirmed? && mentioned_account.user_approved?) + next match if mentioned_account&.local? && !(mentioned_account.user_confirmed? && mentioned_account.user_approved?) # If the account cannot be found or isn't the right protocol, # first try to resolve it From 882e54c78678bd4247d70fe5b04571543769bcee Mon Sep 17 00:00:00 2001 From: Jeong Arm Date: Wed, 21 Sep 2022 06:50:19 +0900 Subject: [PATCH 394/652] Fix Ambiguous SQL error on tootctl media refresh (#19206) --- lib/mastodon/media_cli.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mastodon/media_cli.rb b/lib/mastodon/media_cli.rb index 4904cc5eb..bba4a1bd7 100644 --- a/lib/mastodon/media_cli.rb +++ b/lib/mastodon/media_cli.rb @@ -234,7 +234,7 @@ module Mastodon end if options[:days].present? - scope = scope.where('id > ?', Mastodon::Snowflake.id_at(options[:days].days.ago, with_random: false)) + scope = scope.where('media_attachments.id > ?', Mastodon::Snowflake.id_at(options[:days].days.ago, with_random: false)) end processed, aggregate = parallelize_with_progress(scope) do |media_attachment| From 50948b46aabc0756d85bc6641f0bd3bcc09bf7d4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 20 Sep 2022 23:51:21 +0200 Subject: [PATCH 395/652] Add ability to filter followed accounts' posts by language (#19095) --- app/controllers/api/v1/accounts_controller.rb | 6 +- .../features/account/components/header.js | 5 + .../account_timeline/components/header.js | 6 + .../containers/header_container.js | 8 +- .../subscribed_languages_modal/index.js | 121 ++++++++++++++++++ .../features/ui/components/modal_root.js | 2 + .../mastodon/locales/defaultMessages.json | 25 ++++ app/javascript/mastodon/locales/en.json | 4 + app/lib/feed_manager.rb | 2 + app/models/concerns/account_interactions.rb | 23 ++-- app/models/export.rb | 4 +- app/models/follow.rb | 4 +- app/models/follow_request.rb | 4 +- .../rest/relationship_serializer.rb | 7 +- app/services/follow_service.rb | 13 +- app/services/import_service.rb | 2 +- app/validators/language_validator.rb | 21 +++ app/workers/refollow_worker.rb | 7 +- app/workers/unfollow_follow_worker.rb | 9 +- ...20220829192633_add_languages_to_follows.rb | 5 + ...192658_add_languages_to_follow_requests.rb | 5 + db/schema.rb | 4 +- .../api/v1/accounts_controller_spec.rb | 11 ++ .../following_accounts_controller_spec.rb | 2 +- spec/lib/feed_manager_spec.rb | 12 ++ .../concerns/account_interactions_spec.rb | 2 +- spec/models/export_spec.rb | 4 +- spec/models/follow_request_spec.rb | 2 +- spec/services/follow_service_spec.rb | 13 ++ spec/workers/refollow_worker_spec.rb | 4 +- 30 files changed, 298 insertions(+), 39 deletions(-) create mode 100644 app/javascript/mastodon/features/subscribed_languages_modal/index.js create mode 100644 app/validators/language_validator.rb create mode 100644 db/migrate/20220829192633_add_languages_to_follows.rb create mode 100644 db/migrate/20220829192658_add_languages_to_follow_requests.rb diff --git a/app/controllers/api/v1/accounts_controller.rb b/app/controllers/api/v1/accounts_controller.rb index 5537cc9b0..be84720aa 100644 --- a/app/controllers/api/v1/accounts_controller.rb +++ b/app/controllers/api/v1/accounts_controller.rb @@ -30,12 +30,12 @@ class Api::V1::AccountsController < Api::BaseController self.response_body = Oj.dump(response.body) self.status = response.status rescue ActiveRecord::RecordInvalid => e - render json: ValidationErrorFormatter.new(e, :'account.username' => :username, :'invite_request.text' => :reason).as_json, status: :unprocessable_entity + render json: ValidationErrorFormatter.new(e, 'account.username': :username, 'invite_request.text': :reason).as_json, status: :unprocessable_entity end def follow - follow = FollowService.new.call(current_user.account, @account, reblogs: params.key?(:reblogs) ? truthy_param?(:reblogs) : nil, notify: params.key?(:notify) ? truthy_param?(:notify) : nil, with_rate_limit: true) - options = @account.locked? || current_user.account.silenced? ? {} : { following_map: { @account.id => { reblogs: follow.show_reblogs?, notify: follow.notify? } }, requested_map: { @account.id => false } } + follow = FollowService.new.call(current_user.account, @account, reblogs: params.key?(:reblogs) ? truthy_param?(:reblogs) : nil, notify: params.key?(:notify) ? truthy_param?(:notify) : nil, languages: params.key?(:languages) ? params[:languages] : nil, with_rate_limit: true) + options = @account.locked? || current_user.account.silenced? ? {} : { following_map: { @account.id => { reblogs: follow.show_reblogs?, notify: follow.notify?, languages: follow.languages } }, requested_map: { @account.id => false } } render json: @account, serializer: REST::RelationshipSerializer, relationships: relationships(**options) end diff --git a/app/javascript/mastodon/features/account/components/header.js b/app/javascript/mastodon/features/account/components/header.js index 1ad9341c7..8f2753c35 100644 --- a/app/javascript/mastodon/features/account/components/header.js +++ b/app/javascript/mastodon/features/account/components/header.js @@ -51,6 +51,7 @@ const messages = defineMessages({ unendorse: { id: 'account.unendorse', defaultMessage: 'Don\'t feature on profile' }, add_or_remove_from_list: { id: 'account.add_or_remove_from_list', defaultMessage: 'Add or Remove from lists' }, admin_account: { id: 'status.admin_account', defaultMessage: 'Open moderation interface for @{name}' }, + languages: { id: 'account.languages', defaultMessage: 'Change subscribed languages' }, }); const dateFormatOptions = { @@ -85,6 +86,7 @@ class Header extends ImmutablePureComponent { onEndorseToggle: PropTypes.func.isRequired, onAddToList: PropTypes.func.isRequired, onEditAccountNote: PropTypes.func.isRequired, + onChangeLanguages: PropTypes.func.isRequired, intl: PropTypes.object.isRequired, domain: PropTypes.string.isRequired, hidden: PropTypes.bool, @@ -212,6 +214,9 @@ class Header extends ImmutablePureComponent { } else { menu.push({ text: intl.formatMessage(messages.showReblogs, { name: account.get('username') }), action: this.props.onReblogToggle }); } + + menu.push({ text: intl.formatMessage(messages.languages), action: this.props.onChangeLanguages }); + menu.push(null); } menu.push({ text: intl.formatMessage(account.getIn(['relationship', 'endorsed']) ? messages.unendorse : messages.endorse), action: this.props.onEndorseToggle }); diff --git a/app/javascript/mastodon/features/account_timeline/components/header.js b/app/javascript/mastodon/features/account_timeline/components/header.js index fab0bc597..f9838442f 100644 --- a/app/javascript/mastodon/features/account_timeline/components/header.js +++ b/app/javascript/mastodon/features/account_timeline/components/header.js @@ -22,6 +22,7 @@ export default class Header extends ImmutablePureComponent { onUnblockDomain: PropTypes.func.isRequired, onEndorseToggle: PropTypes.func.isRequired, onAddToList: PropTypes.func.isRequired, + onChangeLanguages: PropTypes.func.isRequired, hideTabs: PropTypes.bool, domain: PropTypes.string.isRequired, hidden: PropTypes.bool, @@ -91,6 +92,10 @@ export default class Header extends ImmutablePureComponent { this.props.onEditAccountNote(this.props.account); } + handleChangeLanguages = () => { + this.props.onChangeLanguages(this.props.account); + } + render () { const { account, hidden, hideTabs } = this.props; @@ -117,6 +122,7 @@ export default class Header extends ImmutablePureComponent { onEndorseToggle={this.handleEndorseToggle} onAddToList={this.handleAddToList} onEditAccountNote={this.handleEditAccountNote} + onChangeLanguages={this.handleChangeLanguages} domain={this.props.domain} hidden={hidden} /> diff --git a/app/javascript/mastodon/features/account_timeline/containers/header_container.js b/app/javascript/mastodon/features/account_timeline/containers/header_container.js index 371794dd7..3d6eb487d 100644 --- a/app/javascript/mastodon/features/account_timeline/containers/header_container.js +++ b/app/javascript/mastodon/features/account_timeline/containers/header_container.js @@ -121,12 +121,18 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ dispatch(unblockDomain(domain)); }, - onAddToList(account){ + onAddToList (account) { dispatch(openModal('LIST_ADDER', { accountId: account.get('id'), })); }, + onChangeLanguages (account) { + dispatch(openModal('SUBSCRIBED_LANGUAGES', { + accountId: account.get('id'), + })); + }, + }); export default injectIntl(connect(makeMapStateToProps, mapDispatchToProps)(Header)); diff --git a/app/javascript/mastodon/features/subscribed_languages_modal/index.js b/app/javascript/mastodon/features/subscribed_languages_modal/index.js new file mode 100644 index 000000000..6a1bb2c47 --- /dev/null +++ b/app/javascript/mastodon/features/subscribed_languages_modal/index.js @@ -0,0 +1,121 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import { connect } from 'react-redux'; +import { createSelector } from 'reselect'; +import { is, List as ImmutableList, Set as ImmutableSet } from 'immutable'; +import { languages as preloadedLanguages } from 'mastodon/initial_state'; +import Option from 'mastodon/features/report/components/option'; +import { defineMessages, FormattedMessage, injectIntl } from 'react-intl'; +import IconButton from 'mastodon/components/icon_button'; +import Button from 'mastodon/components/button'; +import { followAccount } from 'mastodon/actions/accounts'; + +const messages = defineMessages({ + close: { id: 'lightbox.close', defaultMessage: 'Close' }, +}); + +const getAccountLanguages = createSelector([ + (state, accountId) => state.getIn(['timelines', `account:${accountId}`, 'items'], ImmutableList()), + state => state.get('statuses'), +], (statusIds, statuses) => + new ImmutableSet(statusIds.map(statusId => statuses.get(statusId)).filter(status => !status.get('reblog')).map(status => status.get('language')))); + +const mapStateToProps = (state, { accountId }) => ({ + acct: state.getIn(['accounts', accountId, 'acct']), + availableLanguages: getAccountLanguages(state, accountId), + selectedLanguages: ImmutableSet(state.getIn(['relationships', accountId, 'languages']) || ImmutableList()), +}); + +const mapDispatchToProps = (dispatch, { accountId }) => ({ + + onSubmit (languages) { + dispatch(followAccount(accountId, { languages })); + }, + +}); + +export default @connect(mapStateToProps, mapDispatchToProps) +@injectIntl +class SubscribedLanguagesModal extends ImmutablePureComponent { + + static propTypes = { + accountId: PropTypes.string.isRequired, + acct: PropTypes.string.isRequired, + availableLanguages: ImmutablePropTypes.setOf(PropTypes.string), + selectedLanguages: ImmutablePropTypes.setOf(PropTypes.string), + onClose: PropTypes.func.isRequired, + languages: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string)), + intl: PropTypes.object.isRequired, + submit: PropTypes.func.isRequired, + }; + + static defaultProps = { + languages: preloadedLanguages, + }; + + state = { + selectedLanguages: this.props.selectedLanguages, + }; + + handleLanguageToggle = (value, checked) => { + const { selectedLanguages } = this.state; + + if (checked) { + this.setState({ selectedLanguages: selectedLanguages.add(value) }); + } else { + this.setState({ selectedLanguages: selectedLanguages.delete(value) }); + } + }; + + handleSubmit = () => { + this.props.onSubmit(this.state.selectedLanguages.toArray()); + this.props.onClose(); + } + + renderItem (value) { + const language = this.props.languages.find(language => language[0] === value); + const checked = this.state.selectedLanguages.includes(value); + + return ( +
    +
    + + {acct} }} /> +
    + +
    +

    + +
    + {availableLanguages.union(selectedLanguages).map(value => this.renderItem(value))} +
    + +
    + +
    + +
    +
    +
    + ); + } + +} diff --git a/app/javascript/mastodon/features/ui/components/modal_root.js b/app/javascript/mastodon/features/ui/components/modal_root.js index b2c30e079..dfa89f2ce 100644 --- a/app/javascript/mastodon/features/ui/components/modal_root.js +++ b/app/javascript/mastodon/features/ui/components/modal_root.js @@ -11,6 +11,7 @@ import VideoModal from './video_modal'; import BoostModal from './boost_modal'; import AudioModal from './audio_modal'; import ConfirmationModal from './confirmation_modal'; +import SubscribedLanguagesModal from 'mastodon/features/subscribed_languages_modal'; import FocalPointModal from './focal_point_modal'; import { MuteModal, @@ -39,6 +40,7 @@ const MODAL_COMPONENTS = { 'LIST_ADDER': ListAdder, 'COMPARE_HISTORY': CompareHistoryModal, 'FILTER': FilterModal, + 'SUBSCRIBED_LANGUAGES': () => Promise.resolve({ default: SubscribedLanguagesModal }), }; export default class ModalRoot extends React.PureComponent { diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 13ef56922..4c208c3cb 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -1030,6 +1030,10 @@ "defaultMessage": "Open moderation interface for @{name}", "id": "status.admin_account" }, + { + "defaultMessage": "Change subscribed languages", + "id": "account.languages" + }, { "defaultMessage": "Follows you", "id": "account.follows_you" @@ -3350,6 +3354,27 @@ ], "path": "app/javascript/mastodon/features/status/index.json" }, + { + "descriptors": [ + { + "defaultMessage": "Close", + "id": "lightbox.close" + }, + { + "defaultMessage": "Change subscribed languages for {target}", + "id": "subscribed_languages.target" + }, + { + "defaultMessage": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "id": "subscribed_languages.lead" + }, + { + "defaultMessage": "Save changes", + "id": "subscribed_languages.save" + } + ], + "path": "app/javascript/mastodon/features/subscribed_languages_modal/index.json" + }, { "descriptors": [ { diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 521bc4455..4f515b321 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -24,6 +24,7 @@ "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb index ccff2667b..f2d204a64 100644 --- a/app/lib/feed_manager.rb +++ b/app/lib/feed_manager.rb @@ -354,6 +354,7 @@ class FeedManager def filter_from_home?(status, receiver_id, crutches) return false if receiver_id == status.account_id return true if status.reply? && (status.in_reply_to_id.nil? || status.in_reply_to_account_id.nil?) + return true if crutches[:languages][status.account_id].present? && status.language.present? && !crutches[:languages][status.account_id].include?(status.language) check_for_blocks = crutches[:active_mentions][status.id] || [] check_for_blocks.concat([status.account_id]) @@ -542,6 +543,7 @@ class FeedManager end crutches[:following] = Follow.where(account_id: receiver_id, target_account_id: statuses.map(&:in_reply_to_account_id).compact).pluck(:target_account_id).index_with(true) + crutches[:languages] = Follow.where(account_id: receiver_id, target_account_id: statuses.map(&:account_id)).pluck(:target_account_id, :languages).to_h crutches[:hiding_reblogs] = Follow.where(account_id: receiver_id, target_account_id: statuses.map { |s| s.account_id if s.reblog? }.compact, show_reblogs: false).pluck(:target_account_id).index_with(true) crutches[:blocking] = Block.where(account_id: receiver_id, target_account_id: check_for_blocks).pluck(:target_account_id).index_with(true) crutches[:muting] = Mute.where(account_id: receiver_id, target_account_id: check_for_blocks).pluck(:target_account_id).index_with(true) diff --git a/app/models/concerns/account_interactions.rb b/app/models/concerns/account_interactions.rb index 9b358d338..15c49f2fe 100644 --- a/app/models/concerns/account_interactions.rb +++ b/app/models/concerns/account_interactions.rb @@ -9,6 +9,7 @@ module AccountInteractions mapping[follow.target_account_id] = { reblogs: follow.show_reblogs?, notify: follow.notify?, + languages: follow.languages, } end end @@ -38,6 +39,7 @@ module AccountInteractions mapping[follow_request.target_account_id] = { reblogs: follow_request.show_reblogs?, notify: follow_request.notify?, + languages: follow_request.languages, } end end @@ -100,12 +102,13 @@ module AccountInteractions has_many :announcement_mutes, dependent: :destroy end - def follow!(other_account, reblogs: nil, notify: nil, uri: nil, rate_limit: false, bypass_limit: false) - rel = active_relationships.create_with(show_reblogs: reblogs.nil? ? true : reblogs, notify: notify.nil? ? false : notify, uri: uri, rate_limit: rate_limit, bypass_follow_limit: bypass_limit) + def follow!(other_account, reblogs: nil, notify: nil, languages: nil, uri: nil, rate_limit: false, bypass_limit: false) + rel = active_relationships.create_with(show_reblogs: reblogs.nil? ? true : reblogs, notify: notify.nil? ? false : notify, languages: languages, uri: uri, rate_limit: rate_limit, bypass_follow_limit: bypass_limit) .find_or_create_by!(target_account: other_account) - rel.show_reblogs = reblogs unless reblogs.nil? - rel.notify = notify unless notify.nil? + rel.show_reblogs = reblogs unless reblogs.nil? + rel.notify = notify unless notify.nil? + rel.languages = languages unless languages.nil? rel.save! if rel.changed? @@ -114,12 +117,13 @@ module AccountInteractions rel end - def request_follow!(other_account, reblogs: nil, notify: nil, uri: nil, rate_limit: false, bypass_limit: false) - rel = follow_requests.create_with(show_reblogs: reblogs.nil? ? true : reblogs, notify: notify.nil? ? false : notify, uri: uri, rate_limit: rate_limit, bypass_follow_limit: bypass_limit) + def request_follow!(other_account, reblogs: nil, notify: nil, languages: nil, uri: nil, rate_limit: false, bypass_limit: false) + rel = follow_requests.create_with(show_reblogs: reblogs.nil? ? true : reblogs, notify: notify.nil? ? false : notify, uri: uri, languages: languages, rate_limit: rate_limit, bypass_follow_limit: bypass_limit) .find_or_create_by!(target_account: other_account) - rel.show_reblogs = reblogs unless reblogs.nil? - rel.notify = notify unless notify.nil? + rel.show_reblogs = reblogs unless reblogs.nil? + rel.notify = notify unless notify.nil? + rel.languages = languages unless languages.nil? rel.save! if rel.changed? @@ -288,8 +292,7 @@ module AccountInteractions private - def remove_potential_friendship(other_account, mutual = false) + def remove_potential_friendship(other_account) PotentialFriendshipTracker.remove(id, other_account.id) - PotentialFriendshipTracker.remove(other_account.id, id) if mutual end end diff --git a/app/models/export.rb b/app/models/export.rb index 5216eed5e..2457dcc15 100644 --- a/app/models/export.rb +++ b/app/models/export.rb @@ -30,9 +30,9 @@ class Export end def to_following_accounts_csv - CSV.generate(headers: ['Account address', 'Show boosts'], write_headers: true) do |csv| + CSV.generate(headers: ['Account address', 'Show boosts', 'Notify on new posts', 'Languages'], write_headers: true) do |csv| account.active_relationships.includes(:target_account).reorder(id: :desc).each do |follow| - csv << [acct(follow.target_account), follow.show_reblogs] + csv << [acct(follow.target_account), follow.show_reblogs, follow.notify, follow.languages&.join(', ')] end end end diff --git a/app/models/follow.rb b/app/models/follow.rb index a5e3fe809..e5cecbbc1 100644 --- a/app/models/follow.rb +++ b/app/models/follow.rb @@ -11,6 +11,7 @@ # show_reblogs :boolean default(TRUE), not null # uri :string # notify :boolean default(FALSE), not null +# languages :string is an Array # class Follow < ApplicationRecord @@ -27,6 +28,7 @@ class Follow < ApplicationRecord has_one :notification, as: :activity, dependent: :destroy validates :account_id, uniqueness: { scope: :target_account_id } + validates :languages, language: true scope :recent, -> { reorder(id: :desc) } @@ -35,7 +37,7 @@ class Follow < ApplicationRecord end def revoke_request! - FollowRequest.create!(account: account, target_account: target_account, show_reblogs: show_reblogs, notify: notify, uri: uri) + FollowRequest.create!(account: account, target_account: target_account, show_reblogs: show_reblogs, notify: notify, languages: languages, uri: uri) destroy! end diff --git a/app/models/follow_request.rb b/app/models/follow_request.rb index 0b6f7629a..9034250c0 100644 --- a/app/models/follow_request.rb +++ b/app/models/follow_request.rb @@ -11,6 +11,7 @@ # show_reblogs :boolean default(TRUE), not null # uri :string # notify :boolean default(FALSE), not null +# languages :string is an Array # class FollowRequest < ApplicationRecord @@ -27,9 +28,10 @@ class FollowRequest < ApplicationRecord has_one :notification, as: :activity, dependent: :destroy validates :account_id, uniqueness: { scope: :target_account_id } + validates :languages, language: true def authorize! - account.follow!(target_account, reblogs: show_reblogs, notify: notify, uri: uri, bypass_limit: true) + account.follow!(target_account, reblogs: show_reblogs, notify: notify, languages: languages, uri: uri, bypass_limit: true) MergeWorker.perform_async(target_account.id, account.id) if account.local? destroy! end diff --git a/app/serializers/rest/relationship_serializer.rb b/app/serializers/rest/relationship_serializer.rb index afd4cddf9..31fc60eb2 100644 --- a/app/serializers/rest/relationship_serializer.rb +++ b/app/serializers/rest/relationship_serializer.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class REST::RelationshipSerializer < ActiveModel::Serializer - attributes :id, :following, :showing_reblogs, :notifying, :followed_by, + attributes :id, :following, :showing_reblogs, :notifying, :languages, :followed_by, :blocking, :blocked_by, :muting, :muting_notifications, :requested, :domain_blocking, :endorsed, :note @@ -25,6 +25,11 @@ class REST::RelationshipSerializer < ActiveModel::Serializer false end + def languages + (instance_options[:relationships].following[object.id] || {})[:languages] || + (instance_options[:relationships].requested[object.id] || {})[:languages] + end + def followed_by instance_options[:relationships].followed_by[object.id] || false end diff --git a/app/services/follow_service.rb b/app/services/follow_service.rb index ed28e1371..feea40e3c 100644 --- a/app/services/follow_service.rb +++ b/app/services/follow_service.rb @@ -11,6 +11,7 @@ class FollowService < BaseService # @param [Hash] options # @option [Boolean] :reblogs Whether or not to show reblogs, defaults to true # @option [Boolean] :notify Whether to create notifications about new posts, defaults to false + # @option [Array] :languages Which languages to allow on the home feed from this account, defaults to all # @option [Boolean] :bypass_locked # @option [Boolean] :bypass_limit Allow following past the total follow number # @option [Boolean] :with_rate_limit @@ -57,15 +58,15 @@ class FollowService < BaseService end def change_follow_options! - @source_account.follow!(@target_account, reblogs: @options[:reblogs], notify: @options[:notify]) + @source_account.follow!(@target_account, **follow_options) end def change_follow_request_options! - @source_account.request_follow!(@target_account, reblogs: @options[:reblogs], notify: @options[:notify]) + @source_account.request_follow!(@target_account, **follow_options) end def request_follow! - follow_request = @source_account.request_follow!(@target_account, reblogs: @options[:reblogs], notify: @options[:notify], rate_limit: @options[:with_rate_limit], bypass_limit: @options[:bypass_limit]) + follow_request = @source_account.request_follow!(@target_account, **follow_options.merge(rate_limit: @options[:with_rate_limit], bypass_limit: @options[:bypass_limit])) if @target_account.local? LocalNotificationWorker.perform_async(@target_account.id, follow_request.id, follow_request.class.name, 'follow_request') @@ -77,7 +78,7 @@ class FollowService < BaseService end def direct_follow! - follow = @source_account.follow!(@target_account, reblogs: @options[:reblogs], notify: @options[:notify], rate_limit: @options[:with_rate_limit], bypass_limit: @options[:bypass_limit]) + follow = @source_account.follow!(@target_account, **follow_options.merge(rate_limit: @options[:with_rate_limit], bypass_limit: @options[:bypass_limit])) LocalNotificationWorker.perform_async(@target_account.id, follow.id, follow.class.name, 'follow') MergeWorker.perform_async(@target_account.id, @source_account.id) @@ -88,4 +89,8 @@ class FollowService < BaseService def build_json(follow_request) Oj.dump(serialize_payload(follow_request, ActivityPub::FollowSerializer)) end + + def follow_options + @options.slice(:reblogs, :notify, :languages) + end end diff --git a/app/services/import_service.rb b/app/services/import_service.rb index 8e6640b9d..676c37bde 100644 --- a/app/services/import_service.rb +++ b/app/services/import_service.rb @@ -27,7 +27,7 @@ class ImportService < BaseService def import_follows! parse_import_data!(['Account address']) - import_relationships!('follow', 'unfollow', @account.following, ROWS_PROCESSING_LIMIT, reblogs: { header: 'Show boosts', default: true }) + import_relationships!('follow', 'unfollow', @account.following, ROWS_PROCESSING_LIMIT, reblogs: { header: 'Show boosts', default: true }, notify: { header: 'Notify on new posts', default: false }, languages: { header: 'Languages', default: nil }) end def import_blocks! diff --git a/app/validators/language_validator.rb b/app/validators/language_validator.rb new file mode 100644 index 000000000..b723e1a40 --- /dev/null +++ b/app/validators/language_validator.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +class LanguageValidator < ActiveModel::EachValidator + include LanguagesHelper + + def validate_each(record, attribute, value) + record.errors.add(attribute, :invalid) unless valid?(value) + end + + private + + def valid?(str) + if str.nil? + true + elsif str.is_a?(Array) + str.all? { |x| valid_locale?(x) } + else + valid_locale?(str) + end + end +end diff --git a/app/workers/refollow_worker.rb b/app/workers/refollow_worker.rb index 319b00109..4b712d3aa 100644 --- a/app/workers/refollow_worker.rb +++ b/app/workers/refollow_worker.rb @@ -10,8 +10,9 @@ class RefollowWorker return unless target_account.activitypub? target_account.passive_relationships.where(account: Account.where(domain: nil)).includes(:account).reorder(nil).find_each do |follow| - reblogs = follow.show_reblogs? - notify = follow.notify? + reblogs = follow.show_reblogs? + notify = follow.notify? + languages = follow.languages # Locally unfollow remote account follower = follow.account @@ -19,7 +20,7 @@ class RefollowWorker # Schedule re-follow begin - FollowService.new.call(follower, target_account, reblogs: reblogs, notify: notify, bypass_limit: true) + FollowService.new.call(follower, target_account, reblogs: reblogs, notify: notify, languages: languages, bypass_limit: true) rescue Mastodon::NotPermittedError, ActiveRecord::RecordNotFound, Mastodon::UnexpectedResponseError, HTTP::Error, OpenSSL::SSL::SSLError next end diff --git a/app/workers/unfollow_follow_worker.rb b/app/workers/unfollow_follow_worker.rb index 0bd5ff472..7203b4888 100644 --- a/app/workers/unfollow_follow_worker.rb +++ b/app/workers/unfollow_follow_worker.rb @@ -10,11 +10,12 @@ class UnfollowFollowWorker old_target_account = Account.find(old_target_account_id) new_target_account = Account.find(new_target_account_id) - follow = follower_account.active_relationships.find_by(target_account: old_target_account) - reblogs = follow&.show_reblogs? - notify = follow&.notify? + follow = follower_account.active_relationships.find_by(target_account: old_target_account) + reblogs = follow&.show_reblogs? + notify = follow&.notify? + languages = follow&.languages - FollowService.new.call(follower_account, new_target_account, reblogs: reblogs, notify: notify, bypass_locked: bypass_locked, bypass_limit: true) + FollowService.new.call(follower_account, new_target_account, reblogs: reblogs, notify: notify, languages: languages, bypass_locked: bypass_locked, bypass_limit: true) UnfollowService.new.call(follower_account, old_target_account, skip_unmerge: true) rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError true diff --git a/db/migrate/20220829192633_add_languages_to_follows.rb b/db/migrate/20220829192633_add_languages_to_follows.rb new file mode 100644 index 000000000..f6cf48880 --- /dev/null +++ b/db/migrate/20220829192633_add_languages_to_follows.rb @@ -0,0 +1,5 @@ +class AddLanguagesToFollows < ActiveRecord::Migration[6.1] + def change + add_column :follows, :languages, :string, array: true + end +end diff --git a/db/migrate/20220829192658_add_languages_to_follow_requests.rb b/db/migrate/20220829192658_add_languages_to_follow_requests.rb new file mode 100644 index 000000000..f98fabb22 --- /dev/null +++ b/db/migrate/20220829192658_add_languages_to_follow_requests.rb @@ -0,0 +1,5 @@ +class AddLanguagesToFollowRequests < ActiveRecord::Migration[6.1] + def change + add_column :follow_requests, :languages, :string, array: true + end +end diff --git a/db/schema.rb b/db/schema.rb index db22f538a..1a98b22db 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2022_08_27_195229) do +ActiveRecord::Schema.define(version: 2022_08_29_192658) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -461,6 +461,7 @@ ActiveRecord::Schema.define(version: 2022_08_27_195229) do t.boolean "show_reblogs", default: true, null: false t.string "uri" t.boolean "notify", default: false, null: false + t.string "languages", array: true t.index ["account_id", "target_account_id"], name: "index_follow_requests_on_account_id_and_target_account_id", unique: true end @@ -472,6 +473,7 @@ ActiveRecord::Schema.define(version: 2022_08_27_195229) do t.boolean "show_reblogs", default: true, null: false t.string "uri" t.boolean "notify", default: false, null: false + t.string "languages", array: true t.index ["account_id", "target_account_id"], name: "index_follows_on_account_id_and_target_account_id", unique: true t.index ["target_account_id"], name: "index_follows_on_target_account_id" end diff --git a/spec/controllers/api/v1/accounts_controller_spec.rb b/spec/controllers/api/v1/accounts_controller_spec.rb index 5d5c245c5..d6bbcefd7 100644 --- a/spec/controllers/api/v1/accounts_controller_spec.rb +++ b/spec/controllers/api/v1/accounts_controller_spec.rb @@ -145,6 +145,17 @@ RSpec.describe Api::V1::AccountsController, type: :controller do expect(json[:showing_reblogs]).to be false expect(json[:notifying]).to be true end + + it 'changes languages option' do + post :follow, params: { id: other_account.id, languages: %w(en es) } + + json = body_as_json + + expect(json[:following]).to be true + expect(json[:showing_reblogs]).to be false + expect(json[:notifying]).to be false + expect(json[:languages]).to match_array %w(en es) + end end end diff --git a/spec/controllers/settings/exports/following_accounts_controller_spec.rb b/spec/controllers/settings/exports/following_accounts_controller_spec.rb index 78858e772..bfe010555 100644 --- a/spec/controllers/settings/exports/following_accounts_controller_spec.rb +++ b/spec/controllers/settings/exports/following_accounts_controller_spec.rb @@ -11,7 +11,7 @@ describe Settings::Exports::FollowingAccountsController do sign_in user, scope: :user get :index, format: :csv - expect(response.body).to eq "Account address,Show boosts\nusername@domain,true\n" + expect(response.body).to eq "Account address,Show boosts,Notify on new posts,Languages\nusername@domain,true,false,\n" end end end diff --git a/spec/lib/feed_manager_spec.rb b/spec/lib/feed_manager_spec.rb index 48c57b86e..0f3b05e5a 100644 --- a/spec/lib/feed_manager_spec.rb +++ b/spec/lib/feed_manager_spec.rb @@ -127,6 +127,18 @@ RSpec.describe FeedManager do reblog = Fabricate(:status, reblog: status, account: jeff) expect(FeedManager.instance.filter?(:home, reblog, alice)).to be true end + + it 'returns true for German post when follow is set to English only' do + alice.follow!(bob, languages: %w(en)) + status = Fabricate(:status, text: 'Hallo Welt', account: bob, language: 'de') + expect(FeedManager.instance.filter?(:home, status, alice)).to be true + end + + it 'returns false for German post when follow is set to German' do + alice.follow!(bob, languages: %w(de)) + status = Fabricate(:status, text: 'Hallo Welt', account: bob, language: 'de') + expect(FeedManager.instance.filter?(:home, status, alice)).to be false + end end context 'for mentions feed' do diff --git a/spec/models/concerns/account_interactions_spec.rb b/spec/models/concerns/account_interactions_spec.rb index 0369aff10..1d1898ab0 100644 --- a/spec/models/concerns/account_interactions_spec.rb +++ b/spec/models/concerns/account_interactions_spec.rb @@ -14,7 +14,7 @@ describe AccountInteractions do context 'account with Follow' do it 'returns { target_account_id => true }' do Fabricate(:follow, account: account, target_account: target_account) - is_expected.to eq(target_account_id => { reblogs: true, notify: false }) + is_expected.to eq(target_account_id => { reblogs: true, notify: false, languages: nil }) end end diff --git a/spec/models/export_spec.rb b/spec/models/export_spec.rb index 4e6b824bb..135d7a36b 100644 --- a/spec/models/export_spec.rb +++ b/spec/models/export_spec.rb @@ -35,8 +35,8 @@ describe Export do results = export.strip.split("\n") expect(results.size).to eq 3 - expect(results.first).to eq 'Account address,Show boosts' - expect(results.second).to eq 'one@local.host,true' + expect(results.first).to eq 'Account address,Show boosts,Notify on new posts,Languages' + expect(results.second).to eq 'one@local.host,true,false,' end end diff --git a/spec/models/follow_request_spec.rb b/spec/models/follow_request_spec.rb index 36ce8ee60..901eabc9d 100644 --- a/spec/models/follow_request_spec.rb +++ b/spec/models/follow_request_spec.rb @@ -7,7 +7,7 @@ RSpec.describe FollowRequest, type: :model do let(:target_account) { Fabricate(:account) } it 'calls Account#follow!, MergeWorker.perform_async, and #destroy!' do - expect(account).to receive(:follow!).with(target_account, reblogs: true, notify: false, uri: follow_request.uri, bypass_limit: true) + expect(account).to receive(:follow!).with(target_account, reblogs: true, notify: false, uri: follow_request.uri, languages: nil, bypass_limit: true) expect(MergeWorker).to receive(:perform_async).with(target_account.id, account.id) expect(follow_request).to receive(:destroy!) follow_request.authorize! diff --git a/spec/services/follow_service_spec.rb b/spec/services/follow_service_spec.rb index 02bc87c58..88346ec54 100644 --- a/spec/services/follow_service_spec.rb +++ b/spec/services/follow_service_spec.rb @@ -121,6 +121,19 @@ RSpec.describe FollowService, type: :service do expect(sender.muting_reblogs?(bob)).to be false end end + + describe 'already followed account, changing languages' do + let(:bob) { Fabricate(:account, username: 'bob') } + + before do + sender.follow!(bob) + subject.call(sender, bob, languages: %w(en es)) + end + + it 'changes languages' do + expect(Follow.find_by(account: sender, target_account: bob)&.languages).to match_array %w(en es) + end + end end context 'remote ActivityPub account' do diff --git a/spec/workers/refollow_worker_spec.rb b/spec/workers/refollow_worker_spec.rb index df6731b64..d9c2293b6 100644 --- a/spec/workers/refollow_worker_spec.rb +++ b/spec/workers/refollow_worker_spec.rb @@ -23,8 +23,8 @@ describe RefollowWorker do result = subject.perform(account.id) expect(result).to be_nil - expect(service).to have_received(:call).with(alice, account, reblogs: true, notify: false, bypass_limit: true) - expect(service).to have_received(:call).with(bob, account, reblogs: false, notify: false, bypass_limit: true) + expect(service).to have_received(:call).with(alice, account, reblogs: true, notify: false, languages: nil, bypass_limit: true) + expect(service).to have_received(:call).with(bob, account, reblogs: false, notify: false, languages: nil, bypass_limit: true) end end end From 8e25e6c3a8d91bd536a7442bdf93bb1dbf7025a7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Sep 2022 10:50:49 +0900 Subject: [PATCH 396/652] Bump @babel/core from 7.19.0 to 7.19.1 (#19199) Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.19.0 to 7.19.1. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.19.1/packages/babel-core) --- updated-dependencies: - dependency-name: "@babel/core" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 108 ++++++++++++++++++++++++++++----------------------- 2 files changed, 61 insertions(+), 49 deletions(-) diff --git a/package.json b/package.json index b57108c04..caea3454a 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ }, "private": true, "dependencies": { - "@babel/core": "^7.19.0", + "@babel/core": "^7.19.1", "@babel/plugin-proposal-decorators": "^7.19.0", "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.18.10", diff --git a/yarn.lock b/yarn.lock index 04837a50c..76a99d065 100644 --- a/yarn.lock +++ b/yarn.lock @@ -42,20 +42,25 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.0.tgz#2a592fd89bacb1fcde68de31bee4f2f2dacb0e86" integrity sha512-y5rqgTTPTmaF5e2nVhOxw+Ur9HDJLsWb6U/KpgUzRZEdPfE6VOubXBKLdbcUTijzRptednSBDQbYZBOSqJxpJw== -"@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.19.0", "@babel/core@^7.7.2": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.0.tgz#d2f5f4f2033c00de8096be3c9f45772563e150c3" - integrity sha512-reM4+U7B9ss148rh2n1Qs9ASS+w94irYXga7c2jaQv9RVzpS7Mv1a9rnYYwuDa45G+DkORt9g6An2k/V4d9LbQ== +"@babel/compat-data@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.1.tgz#72d647b4ff6a4f82878d184613353af1dd0290f9" + integrity sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg== + +"@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.19.1", "@babel/core@^7.7.2": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.1.tgz#c8fa615c5e88e272564ace3d42fbc8b17bfeb22b" + integrity sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" "@babel/generator" "^7.19.0" - "@babel/helper-compilation-targets" "^7.19.0" + "@babel/helper-compilation-targets" "^7.19.1" "@babel/helper-module-transforms" "^7.19.0" "@babel/helpers" "^7.19.0" - "@babel/parser" "^7.19.0" + "@babel/parser" "^7.19.1" "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.0" + "@babel/traverse" "^7.19.1" "@babel/types" "^7.19.0" convert-source-map "^1.7.0" debug "^4.1.0" @@ -104,14 +109,14 @@ "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.0.tgz#537ec8339d53e806ed422f1e06c8f17d55b96bb0" - integrity sha512-Ai5bNWXIvwDvWM7njqsG3feMlL9hCVQsPYXodsZyLwshYkZVJt59Gftau4VrE8S9IT9asd2uSP1hG6wCNw+sXA== +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.0", "@babel/helper-compilation-targets@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.1.tgz#7f630911d83b408b76fe584831c98e5395d7a17c" + integrity sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg== dependencies: - "@babel/compat-data" "^7.19.0" + "@babel/compat-data" "^7.19.1" "@babel/helper-validator-option" "^7.18.6" - browserslist "^4.20.2" + browserslist "^4.21.3" semver "^6.3.0" "@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.19.0": @@ -369,10 +374,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.0.tgz#497fcafb1d5b61376959c1c338745ef0577aa02c" - integrity sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.1.tgz#6f6d6c2e621aad19a92544cc217ed13f1aac5b4c" + integrity sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" @@ -1118,10 +1123,10 @@ "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.6", "@babel/traverse@^7.18.9", "@babel/traverse@^7.19.0", "@babel/traverse@^7.7.2": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.0.tgz#eb9c561c7360005c592cc645abafe0c3c4548eed" - integrity sha512-4pKpFRDh+utd2mbRC8JLnlsMUii3PMHjpL6a0SZ4NMZy7YFP9aXORxEhdMVOc9CpWtDF09IkciQLEhK7Ml7gRA== +"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.6", "@babel/traverse@^7.18.9", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.7.2": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.1.tgz#0fafe100a8c2a603b4718b1d9bf2568d1d193347" + integrity sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA== dependencies: "@babel/code-frame" "^7.18.6" "@babel/generator" "^7.19.0" @@ -1129,7 +1134,7 @@ "@babel/helper-function-name" "^7.19.0" "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.19.0" + "@babel/parser" "^7.19.1" "@babel/types" "^7.19.0" debug "^4.1.0" globals "^11.1.0" @@ -3018,17 +3023,6 @@ browserslist@^4.0.0, browserslist@^4.12.0: escalade "^3.1.1" node-releases "^1.1.71" -browserslist@^4.20.2: - version "4.20.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" - integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== - dependencies: - caniuse-lite "^1.0.30001332" - electron-to-chromium "^1.4.118" - escalade "^3.1.1" - node-releases "^2.0.3" - picocolors "^1.0.0" - browserslist@^4.21.0: version "4.21.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.0.tgz#7ab19572361a140ecd1e023e2c1ed95edda0cefe" @@ -3039,6 +3033,16 @@ browserslist@^4.21.0: node-releases "^2.0.5" update-browserslist-db "^1.0.0" +browserslist@^4.21.3: + version "4.21.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" + integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== + dependencies: + caniuse-lite "^1.0.30001400" + electron-to-chromium "^1.4.251" + node-releases "^2.0.6" + update-browserslist-db "^1.0.9" + bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -3227,16 +3231,16 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001219: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001310.tgz#da02cd07432c9eece6992689d1b84ca18139eea8" integrity sha512-cb9xTV8k9HTIUA3GnPUJCk0meUnrHL5gy5QePfDjxHyNBcnzPzrHFv5GqfP7ue5b1ZyzZL0RJboD6hQlPXjhjg== -caniuse-lite@^1.0.30001332: - version "1.0.30001335" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001335.tgz#899254a0b70579e5a957c32dced79f0727c61f2a" - integrity sha512-ddP1Tgm7z2iIxu6QTtbZUv6HJxSaV/PZeSrWFZtbY4JZ69tOeNhBCl3HyRQgeNZKE5AOn1kpV7fhljigy0Ty3w== - caniuse-lite@^1.0.30001358: version "1.0.30001359" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001359.tgz#a1c1cbe1c2da9e689638813618b4219acbd4925e" integrity sha512-Xln/BAsPzEuiVLgJ2/45IaqD9jShtk3Y33anKb4+yLwQzws3+v6odKfpgES/cDEaZMLzSChpIGdbOYtH9MyuHw== +caniuse-lite@^1.0.30001400: + version "1.0.30001406" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001406.tgz#d0146e7919635479f873b4507517b627f66ab269" + integrity sha512-bWTlaXUy/rq0BBtYShc/jArYfBPjEV95euvZ8JVtO43oQExEN/WquoqpufFjNu4kSpi5cy5kMbNvzztWDfv1Jg== + chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -4360,16 +4364,16 @@ electron-to-chromium@^1.3.723: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.736.tgz#f632d900a1f788dab22fec9c62ec5c9c8f0c4052" integrity sha512-DY8dA7gR51MSo66DqitEQoUMQ0Z+A2DSXFi7tK304bdTVqczCAfUuyQw6Wdg8hIoo5zIxkU1L24RQtUce1Ioig== -electron-to-chromium@^1.4.118: - version "1.4.129" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.129.tgz#c675793885721beefff99da50f57c6525c2cd238" - integrity sha512-GgtN6bsDtHdtXJtlMYZWGB/uOyjZWjmRDumXTas7dGBaB9zUyCjzHet1DY2KhyHN8R0GLbzZWqm4efeddqqyRQ== - electron-to-chromium@^1.4.164: version "1.4.170" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.170.tgz#0415fc489402e09bfbe1f0c99bbf4d73f31d48d4" integrity sha512-rZ8PZLhK4ORPjFqLp9aqC4/S1j4qWFsPPz13xmWdrbBkU/LlxMcok+f+6f8YnQ57MiZwKtOaW15biZZsY5Igvw== +electron-to-chromium@^1.4.251: + version "1.4.254" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.254.tgz#c6203583890abf88dfc0be046cd72d3b48f8beb6" + integrity sha512-Sh/7YsHqQYkA6ZHuHMy24e6TE4eX6KZVsZb9E/DvU1nQRIrH4BflO/4k+83tfdYvDl+MObvlqHPRICzEdC9c6Q== + elliptic@^6.5.3: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" @@ -7852,16 +7856,16 @@ node-releases@^1.1.71: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.72.tgz#14802ab6b1039a79a0c7d662b610a5bbd76eacbe" integrity sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw== -node-releases@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.4.tgz#f38252370c43854dc48aa431c766c6c398f40476" - integrity sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ== - node-releases@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== +node-releases@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" + integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== + normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -11347,6 +11351,14 @@ update-browserslist-db@^1.0.0: escalade "^3.1.1" picocolors "^1.0.0" +update-browserslist-db@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz#2924d3927367a38d5c555413a7ce138fc95fcb18" + integrity sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + uri-js@^4.2.2: version "4.4.0" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" From 665582d93e5b7b828c79c58e99e27d72155c99bd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Sep 2022 10:51:20 +0900 Subject: [PATCH 397/652] Bump @babel/eslint-parser from 7.18.9 to 7.19.1 (#19193) Bumps [@babel/eslint-parser](https://github.com/babel/babel/tree/HEAD/eslint/babel-eslint-parser) from 7.18.9 to 7.19.1. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.19.1/eslint/babel-eslint-parser) --- updated-dependencies: - dependency-name: "@babel/eslint-parser" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 33 ++++++++++++++++++++------------- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index caea3454a..058c24615 100644 --- a/package.json +++ b/package.json @@ -144,7 +144,7 @@ "ws": "^8.8.1" }, "devDependencies": { - "@babel/eslint-parser": "^7.18.9", + "@babel/eslint-parser": "^7.19.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^12.1.5", "babel-jest": "^29.0.3", diff --git a/yarn.lock b/yarn.lock index 76a99d065..c10e3ae51 100644 --- a/yarn.lock +++ b/yarn.lock @@ -68,12 +68,12 @@ json5 "^2.2.1" semver "^6.3.0" -"@babel/eslint-parser@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.18.9.tgz#255a63796819a97b7578751bb08ab9f2a375a031" - integrity sha512-KzSGpMBggz4fKbRbWLNyPVTuQr6cmCcBhOyXTw/fieOVaw5oYAwcAj4a7UKcDYCPxQq+CG1NCDZH9e2JTXquiQ== +"@babel/eslint-parser@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz#4f68f6b0825489e00a24b41b6a1ae35414ecd2f4" + integrity sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ== dependencies: - eslint-scope "^5.1.1" + "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" eslint-visitor-keys "^2.1.0" semver "^6.3.0" @@ -1583,6 +1583,13 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": + version "5.1.1-v1" + resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" + integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== + dependencies: + eslint-scope "5.1.1" + "@node-redis/bloom@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@node-redis/bloom/-/bloom-1.0.1.tgz#144474a0b7dc4a4b91badea2cfa9538ce0a1854e" @@ -4696,6 +4703,14 @@ eslint-plugin-react@~7.31.8: semver "^6.3.0" string.prototype.matchall "^4.0.7" +eslint-scope@5.1.1, eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + eslint-scope@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" @@ -4704,14 +4719,6 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - eslint-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" From 0f24ef4673eee301de6049704b4c42e751553b57 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Sep 2022 11:05:25 +0900 Subject: [PATCH 398/652] Bump @babel/plugin-transform-runtime from 7.18.10 to 7.19.1 (#19203) Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.18.10 to 7.19.1. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.19.1/packages/babel-plugin-transform-runtime) --- updated-dependencies: - dependency-name: "@babel/plugin-transform-runtime" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 76 +++++++++++++++++++++++++++++++++------------------- 2 files changed, 49 insertions(+), 29 deletions(-) diff --git a/package.json b/package.json index 058c24615..b215c860d 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "@babel/core": "^7.19.1", "@babel/plugin-proposal-decorators": "^7.19.0", "@babel/plugin-transform-react-inline-elements": "^7.18.6", - "@babel/plugin-transform-runtime": "^7.18.10", + "@babel/plugin-transform-runtime": "^7.19.1", "@babel/preset-env": "^7.19.0", "@babel/preset-react": "^7.18.6", "@babel/runtime": "^7.19.0", diff --git a/yarn.lock b/yarn.lock index c10e3ae51..f417354f4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -160,6 +160,18 @@ resolve "^1.14.2" semver "^6.1.2" +"@babel/helper-define-polyfill-provider@^0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" + integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== + dependencies: + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + "@babel/helper-environment-visitor@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz#b7eee2b5b9d70602e59d1a6cad7dd24de7ca6cd7" @@ -215,14 +227,7 @@ dependencies: "@babel/types" "^7.18.9" -"@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" - integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-module-imports@^7.18.6": +"@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== @@ -925,16 +930,16 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-runtime@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz#37d14d1fa810a368fd635d4d1476c0154144a96f" - integrity sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ== +"@babel/plugin-transform-runtime@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.1.tgz#a3df2d7312eea624c7889a2dcd37fd1dfd25b2c6" + integrity sha512-2nJjTUFIzBMP/f/miLxEK9vxwW/KUXsdvN4sR//TmuDhe6yU2h57WmIOE12Gng3MDP/xpjUV/ToZRdcf8Yj4fA== dependencies: "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.9" - babel-plugin-polyfill-corejs2 "^0.3.2" - babel-plugin-polyfill-corejs3 "^0.5.3" - babel-plugin-polyfill-regenerator "^0.4.0" + "@babel/helper-plugin-utils" "^7.19.0" + babel-plugin-polyfill-corejs2 "^0.3.3" + babel-plugin-polyfill-corejs3 "^0.6.0" + babel-plugin-polyfill-regenerator "^0.4.1" semver "^6.3.0" "@babel/plugin-transform-shorthand-properties@^7.18.6": @@ -1139,7 +1144,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.7", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.0.tgz#75f21d73d73dc0351f3368d28db73465f4814600" integrity sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA== @@ -2710,13 +2715,13 @@ babel-plugin-macros@^3.0.1: cosmiconfig "^7.0.0" resolve "^1.19.0" -babel-plugin-polyfill-corejs2@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz#e4c31d4c89b56f3cf85b92558954c66b54bd972d" - integrity sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q== +babel-plugin-polyfill-corejs2@^0.3.2, babel-plugin-polyfill-corejs2@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" + integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== dependencies: "@babel/compat-data" "^7.17.7" - "@babel/helper-define-polyfill-provider" "^0.3.2" + "@babel/helper-define-polyfill-provider" "^0.3.3" semver "^6.1.1" babel-plugin-polyfill-corejs3@^0.5.3: @@ -2727,12 +2732,20 @@ babel-plugin-polyfill-corejs3@^0.5.3: "@babel/helper-define-polyfill-provider" "^0.3.2" core-js-compat "^3.21.0" -babel-plugin-polyfill-regenerator@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz#8f51809b6d5883e07e71548d75966ff7635527fe" - integrity sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw== +babel-plugin-polyfill-corejs3@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" + integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA== dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.2" + "@babel/helper-define-polyfill-provider" "^0.3.3" + core-js-compat "^3.25.1" + +babel-plugin-polyfill-regenerator@^0.4.0, babel-plugin-polyfill-regenerator@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" + integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.3" babel-plugin-preval@^5.1.0: version "5.1.0" @@ -3040,7 +3053,7 @@ browserslist@^4.21.0: node-releases "^2.0.5" update-browserslist-db "^1.0.0" -browserslist@^4.21.3: +browserslist@^4.21.3, browserslist@^4.21.4: version "4.21.4" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== @@ -3654,6 +3667,13 @@ core-js-compat@^3.21.0, core-js-compat@^3.22.1: browserslist "^4.21.0" semver "7.0.0" +core-js-compat@^3.25.1: + version "3.25.2" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.25.2.tgz#7875573586809909c69e03ef310810c1969ee138" + integrity sha512-TxfyECD4smdn3/CjWxczVtJqVLEEC2up7/82t7vC0AzNogr+4nQ8vyF7abxAuTXWvjTClSbvGhU0RgqA4ToQaQ== + dependencies: + browserslist "^4.21.4" + core-js-pure@^3.0.0: version "3.6.5" resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" From 195087bee0aaf52e8c0ddf89dfa8269cf5057a74 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Sep 2022 11:05:44 +0900 Subject: [PATCH 399/652] Bump @babel/plugin-proposal-decorators from 7.19.0 to 7.19.1 (#19196) Bumps [@babel/plugin-proposal-decorators](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-proposal-decorators) from 7.19.0 to 7.19.1. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.19.1/packages/babel-plugin-proposal-decorators) --- updated-dependencies: - dependency-name: "@babel/plugin-proposal-decorators" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index b215c860d..5a603d723 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "private": true, "dependencies": { "@babel/core": "^7.19.1", - "@babel/plugin-proposal-decorators": "^7.19.0", + "@babel/plugin-proposal-decorators": "^7.19.1", "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.19.1", "@babel/preset-env": "^7.19.0", diff --git a/yarn.lock b/yarn.lock index f417354f4..e16166482 100644 --- a/yarn.lock +++ b/yarn.lock @@ -280,16 +280,16 @@ "@babel/helper-wrap-function" "^7.18.9" "@babel/types" "^7.18.9" -"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz#1092e002feca980fbbb0bd4d51b74a65c6a500e6" - integrity sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ== +"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9", "@babel/helper-replace-supers@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz#e1592a9b4b368aa6bdb8784a711e0bcbf0612b78" + integrity sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw== dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-member-expression-to-functions" "^7.18.9" "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" + "@babel/traverse" "^7.19.1" + "@babel/types" "^7.19.0" "@babel/helper-simple-access@^7.18.6": version "7.18.6" @@ -427,14 +427,14 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-proposal-decorators@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.19.0.tgz#5a3bc0699ee34117c73c960a5396ffce104c4eaa" - integrity sha512-Bo5nOSjiJccjv00+BrDkmfeBLBi2B0qe8ygj24KdL8VdwtZz+710NCwehF+x/Ng+0mkHx5za2eAofmvVFLF4Fg== +"@babel/plugin-proposal-decorators@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.19.1.tgz#4bab3e7afe894fdbf47ffa86701266104fcb6ecc" + integrity sha512-LfIKNBBY7Q1OX5C4xAgRQffOg2OnhAo9fnbcOHgOC9Yytm2Sw+4XqHufRYU86tHomzepxtvuVaNO+3EVKR4ivw== dependencies: "@babel/helper-create-class-features-plugin" "^7.19.0" "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-replace-supers" "^7.18.9" + "@babel/helper-replace-supers" "^7.19.1" "@babel/helper-split-export-declaration" "^7.18.6" "@babel/plugin-syntax-decorators" "^7.19.0" @@ -1128,7 +1128,7 @@ "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.6", "@babel/traverse@^7.18.9", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.7.2": +"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.6", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.7.2": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.1.tgz#0fafe100a8c2a603b4718b1d9bf2568d1d193347" integrity sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA== From 7191db0e434ba84edfa18de05b1133ac9e924ded Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 21 Sep 2022 04:10:02 +0200 Subject: [PATCH 400/652] New Crowdin updates (#19167) * New translations en.json (Esperanto) * New translations en.json (Esperanto) * New translations en.json (Czech) * New translations en.yml (Czech) * New translations en.json (Czech) * New translations en.yml (Spanish) * New translations en.yml (Turkish) * New translations en.json (Thai) * New translations en.json (Thai) * New translations en.json (Dutch) * New translations en.yml (Czech) * New translations simple_form.en.yml (Czech) * New translations activerecord.en.yml (Czech) * New translations en.json (Thai) * New translations en.yml (Czech) * New translations en.json (Albanian) * New translations en.yml (Albanian) * New translations simple_form.en.yml (Albanian) * New translations activerecord.en.yml (Albanian) * New translations devise.en.yml (Albanian) * New translations doorkeeper.en.yml (Albanian) * New translations en.json (Thai) * New translations en.yml (Thai) * New translations en.yml (Ukrainian) * New translations en.yml (Thai) * New translations en.json (Thai) * New translations en.yml (Thai) * New translations en.json (Bulgarian) * New translations en.json (Bulgarian) * New translations en.yml (Thai) * New translations en.json (Japanese) * New translations en.json (Indonesian) * New translations en.json (Sinhala) * New translations en.json (Sinhala) * New translations en.json (Sinhala) * New translations en.json (Sinhala) * New translations en.json (Sinhala) * New translations en.yml (Greek) * New translations en.yml (Afrikaans) * New translations en.json (Arabic) * New translations en.yml (Arabic) * New translations en.yml (Bulgarian) * New translations en.json (Catalan) * New translations en.yml (Catalan) * New translations en.yml (Danish) * New translations en.json (Greek) * New translations en.json (Frisian) * New translations en.yml (Frisian) * New translations en.json (Basque) * New translations en.yml (Basque) * New translations en.yml (Finnish) * New translations en.json (Irish) * New translations en.yml (Irish) * New translations en.yml (Hebrew) * New translations en.yml (Hungarian) * New translations en.json (Afrikaans) * New translations en.yml (French) * New translations en.json (Hebrew) * New translations en.json (French) * New translations en.yml (German) * New translations en.yml (Chinese Simplified) * New translations en.json (Tamil) * New translations en.json (Dutch) * New translations en.json (Romanian) * New translations en.yml (Romanian) * New translations en.json (Armenian) * New translations en.json (Ido) * New translations en.yml (Ido) * New translations en.yml (Armenian) * New translations en.json (Urdu (Pakistan)) * New translations en.json (Serbian (Cyrillic)) * New translations en.yml (Serbian (Cyrillic)) * New translations en.json (Swedish) * New translations en.yml (Swedish) * New translations en.yml (Chinese Traditional) * New translations en.yml (Urdu (Pakistan)) * New translations en.yml (Vietnamese) * New translations en.yml (Galician) * New translations en.yml (Icelandic) * New translations en.json (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Indonesian) * New translations en.json (Persian) * New translations en.yml (Slovenian) * New translations en.yml (Slovak) * New translations en.yml (Dutch) * New translations en.yml (Italian) * New translations en.yml (Japanese) * New translations en.json (Georgian) * New translations en.yml (Georgian) * New translations en.yml (Korean) * New translations en.json (Lithuanian) * New translations en.yml (Lithuanian) * New translations en.json (Macedonian) * New translations en.yml (Macedonian) * New translations simple_form.en.yml (Dutch) * New translations en.json (Slovak) * New translations en.json (Norwegian) * New translations en.yml (Norwegian) * New translations en.json (Punjabi) * New translations en.yml (Punjabi) * New translations en.yml (Polish) * New translations en.yml (Portuguese) * New translations en.yml (Russian) * New translations en.yml (Persian) * New translations en.yml (Tamil) * New translations en.json (Estonian) * New translations en.yml (English, United Kingdom) * New translations en.yml (Telugu) * New translations en.json (Telugu) * New translations en.yml (Malay) * New translations en.json (Malay) * New translations en.yml (Hindi) * New translations en.json (Hindi) * New translations en.yml (Latvian) * New translations en.yml (Estonian) * New translations en.json (English, United Kingdom) * New translations en.yml (Kazakh) * New translations en.yml (Bengali) * New translations en.json (Kazakh) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Spanish, Mexico) * New translations en.json (Bengali) * New translations en.json (Spanish, Mexico) * New translations en.json (Marathi) * New translations en.yml (Marathi) * New translations en.json (Croatian) * New translations en.yml (Croatian) * New translations en.json (Norwegian Nynorsk) * New translations en.yml (Norwegian Nynorsk) * New translations en.yml (Breton) * New translations en.yml (Asturian) * New translations en.json (Asturian) * New translations en.yml (Scottish Gaelic) * New translations en.json (Scottish Gaelic) * New translations en.yml (Kannada) * New translations en.json (Kannada) * New translations en.yml (Cornish) * New translations en.json (Cornish) * New translations en.yml (Sinhala) * New translations en.json (Chinese Traditional, Hong Kong) * New translations en.json (Breton) * New translations en.yml (Malayalam) * New translations en.json (Malayalam) * New translations en.yml (Tatar) * New translations en.json (Tatar) * New translations en.yml (Chinese Traditional, Hong Kong) * New translations en.yml (Uyghur) * New translations en.json (Uyghur) * New translations en.yml (Esperanto) * New translations en.yml (Welsh) * New translations en.json (Welsh) * New translations en.json (Occitan) * New translations en.yml (Occitan) * New translations en.json (Sanskrit) * New translations en.json (Standard Moroccan Tamazight) * New translations en.yml (Silesian) * New translations en.json (Silesian) * New translations en.yml (Taigi) * New translations en.json (Taigi) * New translations en.yml (Kabyle) * New translations en.json (Kabyle) * New translations en.yml (Sanskrit) * New translations en.yml (Sardinian) * New translations en.json (Serbian (Latin)) * New translations en.json (Sardinian) * New translations en.yml (Corsican) * New translations en.json (Corsican) * New translations en.yml (Sorani (Kurdish)) * New translations en.json (Sorani (Kurdish)) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.yml (Serbian (Latin)) * New translations en.yml (Standard Moroccan Tamazight) * New translations en.json (Dutch) * New translations en.json (Danish) * New translations en.json (Korean) * New translations en.yml (Dutch) * New translations en.json (Spanish, Argentina) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 4 + app/javascript/mastodon/locales/ar.json | 4 + app/javascript/mastodon/locales/ast.json | 4 + app/javascript/mastodon/locales/bg.json | 116 ++++---- app/javascript/mastodon/locales/bn.json | 4 + app/javascript/mastodon/locales/br.json | 4 + app/javascript/mastodon/locales/ca.json | 4 + app/javascript/mastodon/locales/ckb.json | 4 + app/javascript/mastodon/locales/co.json | 4 + app/javascript/mastodon/locales/cs.json | 44 +-- app/javascript/mastodon/locales/cy.json | 4 + app/javascript/mastodon/locales/da.json | 4 + app/javascript/mastodon/locales/de.json | 4 + app/javascript/mastodon/locales/el.json | 4 + app/javascript/mastodon/locales/en-GB.json | 4 + app/javascript/mastodon/locales/eo.json | 20 +- app/javascript/mastodon/locales/es-AR.json | 4 + app/javascript/mastodon/locales/es-MX.json | 38 +-- app/javascript/mastodon/locales/es.json | 4 + app/javascript/mastodon/locales/et.json | 4 + app/javascript/mastodon/locales/eu.json | 4 + app/javascript/mastodon/locales/fa.json | 4 + app/javascript/mastodon/locales/fi.json | 4 + app/javascript/mastodon/locales/fr.json | 4 + app/javascript/mastodon/locales/fy.json | 4 + app/javascript/mastodon/locales/ga.json | 4 + app/javascript/mastodon/locales/gd.json | 4 + app/javascript/mastodon/locales/gl.json | 4 + app/javascript/mastodon/locales/he.json | 4 + app/javascript/mastodon/locales/hi.json | 4 + app/javascript/mastodon/locales/hr.json | 4 + app/javascript/mastodon/locales/hu.json | 4 + app/javascript/mastodon/locales/hy.json | 4 + app/javascript/mastodon/locales/id.json | 8 +- app/javascript/mastodon/locales/io.json | 4 + app/javascript/mastodon/locales/is.json | 4 + app/javascript/mastodon/locales/it.json | 4 + app/javascript/mastodon/locales/ja.json | 26 +- app/javascript/mastodon/locales/ka.json | 4 + app/javascript/mastodon/locales/kab.json | 4 + app/javascript/mastodon/locales/kk.json | 4 + app/javascript/mastodon/locales/kn.json | 4 + app/javascript/mastodon/locales/ko.json | 4 + app/javascript/mastodon/locales/ku.json | 4 + app/javascript/mastodon/locales/kw.json | 4 + app/javascript/mastodon/locales/lt.json | 4 + app/javascript/mastodon/locales/lv.json | 4 + app/javascript/mastodon/locales/mk.json | 4 + app/javascript/mastodon/locales/ml.json | 4 + app/javascript/mastodon/locales/mr.json | 4 + app/javascript/mastodon/locales/ms.json | 4 + app/javascript/mastodon/locales/nl.json | 34 ++- app/javascript/mastodon/locales/nn.json | 4 + app/javascript/mastodon/locales/no.json | 4 + app/javascript/mastodon/locales/oc.json | 4 + app/javascript/mastodon/locales/pa.json | 4 + app/javascript/mastodon/locales/pl.json | 4 + app/javascript/mastodon/locales/pt-BR.json | 4 + app/javascript/mastodon/locales/pt-PT.json | 4 + app/javascript/mastodon/locales/ro.json | 4 + app/javascript/mastodon/locales/ru.json | 4 + app/javascript/mastodon/locales/sa.json | 4 + app/javascript/mastodon/locales/sc.json | 4 + app/javascript/mastodon/locales/si.json | 290 ++++++++++--------- app/javascript/mastodon/locales/sk.json | 4 + app/javascript/mastodon/locales/sl.json | 4 + app/javascript/mastodon/locales/sq.json | 38 +-- app/javascript/mastodon/locales/sr-Latn.json | 4 + app/javascript/mastodon/locales/sr.json | 4 + app/javascript/mastodon/locales/sv.json | 4 + app/javascript/mastodon/locales/szl.json | 4 + app/javascript/mastodon/locales/ta.json | 4 + app/javascript/mastodon/locales/tai.json | 4 + app/javascript/mastodon/locales/te.json | 4 + app/javascript/mastodon/locales/th.json | 12 +- app/javascript/mastodon/locales/tr.json | 4 + app/javascript/mastodon/locales/tt.json | 4 + app/javascript/mastodon/locales/ug.json | 4 + app/javascript/mastodon/locales/uk.json | 4 + app/javascript/mastodon/locales/ur.json | 4 + app/javascript/mastodon/locales/vi.json | 4 + app/javascript/mastodon/locales/zgh.json | 4 + app/javascript/mastodon/locales/zh-CN.json | 4 + app/javascript/mastodon/locales/zh-HK.json | 4 + app/javascript/mastodon/locales/zh-TW.json | 4 + config/locales/activerecord.cs.yml | 2 + config/locales/cs.yml | 24 ++ config/locales/es-MX.yml | 11 +- config/locales/es.yml | 2 +- config/locales/nl.yml | 91 ++++++ config/locales/simple_form.cs.yml | 4 + config/locales/simple_form.nl.yml | 4 + config/locales/simple_form.sq.yml | 3 + config/locales/sq.yml | 46 +++ config/locales/th.yml | 21 ++ config/locales/tr.yml | 2 +- config/locales/uk.yml | 1 + 97 files changed, 841 insertions(+), 296 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 86d590654..384e6feb2 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -24,6 +24,7 @@ "account.follows_you": "Volg jou", "account.hide_reblogs": "Versteek hupstoot vanaf @{name}", "account.joined": "{date} aangesluit", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Eienaarskap van die skakel was getoets op {date}", "account.locked_info": "Die rekening se privaatheidstatus is gesluit. Die eienaar hersien handmatig wie hom/haar kan volg.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 220aa14ee..65ec25be9 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -24,6 +24,7 @@ "account.follows_you": "يُتابِعُك", "account.hide_reblogs": "إخفاء مشاركات @{name}", "account.joined": "انضم في {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "تمَّ التَّحقق مِن مِلْكيّة هذا الرابط بتاريخ {date}", "account.locked_info": "تمَّ تعيين حالة خصوصية هذا الحساب إلى مُقفَل. يُراجع المالك يدويًا من يمكنه متابعته.", "account.media": "وسائط", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "غير متوفر", "status.unmute_conversation": "فك الكتم عن المحادثة", "status.unpin": "فك التدبيس من الصفحة التعريفية", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "إلغاء الاقتراح", "suggestions.header": "يمكن أن يهمك…", "tabs_bar.federated_timeline": "الموحَّد", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 50fc3f25c..547956317 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -24,6 +24,7 @@ "account.follows_you": "Síguete", "account.hide_reblogs": "Anubrir les comparticiones de @{name}", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "La propiedá d'esti enllaz foi comprobada'l {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Non disponible", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Desfixar del perfil", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "Quiciabes t'interese…", "tabs_bar.federated_timeline": "Fediversu", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index ebe795039..4135ff3cf 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -24,6 +24,7 @@ "account.follows_you": "Твой последовател", "account.hide_reblogs": "Скриване на споделяния от @{name}", "account.joined": "Присъединил се на {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Собствеността върху тази връзка е проверена на {date}", "account.locked_info": "Този акаунт е поверително заключен. Собственикът преглежда ръчно кой може да го следва.", "account.media": "Мултимедия", @@ -41,25 +42,25 @@ "account.statuses_counter": "{count, plural, one {{counter} Публикация} other {{counter} Публикации}}", "account.unblock": "Не блокирай", "account.unblock_domain": "Unhide {domain}", - "account.unblock_short": "Unblock", + "account.unblock_short": "Отблокирай", "account.unendorse": "Не включвайте в профила", "account.unfollow": "Не следвай", "account.unmute": "Раззаглушаване на @{name}", "account.unmute_notifications": "Раззаглушаване на известия от @{name}", "account.unmute_short": "Unmute", "account_note.placeholder": "Click to add a note", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Ниво на задържани на потребители след регистрация, в дни", + "admin.dashboard.monthly_retention": "Ниво на задържани на потребители след регистрация, в месеци", "admin.dashboard.retention.average": "Средно", - "admin.dashboard.retention.cohort": "Sign-up month", + "admin.dashboard.retention.cohort": "Месец на регистрацията", "admin.dashboard.retention.cohort_size": "Нови потребители", "alert.rate_limited.message": "Моля, опитайте отново след {retry_time, time, medium}.", "alert.rate_limited.title": "Скоростта е ограничена", "alert.unexpected.message": "Възникна неочаквана грешка.", "alert.unexpected.title": "Опаа!", "announcement.announcement": "Оповестяване", - "attachments_list.unprocessed": "(unprocessed)", - "audio.hide": "Hide audio", + "attachments_list.unprocessed": "(необработен)", + "audio.hide": "Скриване на видеото", "autosuggest_hashtag.per_week": "{count} на седмица", "boost_modal.combo": "Можете да натиснете {combo}, за да пропуснете това следващия път", "bundle_column_error.body": "Нещо се обърка при зареждането на този компонент.", @@ -93,10 +94,10 @@ "community.column_settings.local_only": "Само локално", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Само дистанционно", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "Смяна на езика", + "compose.language.search": "Търсене на езици...", "compose_form.direct_message_warning_learn_more": "Още информация", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "Поставете в Мастодон не са криптирани от край до край. Не споделяйте никаква чувствителна информация.", "compose_form.hashtag_warning": "Тази публикация няма да бъде изброена под нито един хаштаг, тъй като е скрита. Само публични публикации могат да се търсят по хаштаг.", "compose_form.lock_disclaimer": "Вашият акаунт не е {locked}. Всеки може да ви последва, за да прегледа вашите публикации само за последователи.", "compose_form.lock_disclaimer.lock": "заключено", @@ -107,9 +108,9 @@ "compose_form.poll.remove_option": "Премахване на този избор", "compose_form.poll.switch_to_multiple": "Промяна на анкетата, за да се позволят множество възможни избора", "compose_form.poll.switch_to_single": "Промяна на анкетата, за да се позволи един възможен избор", - "compose_form.publish": "Publish", + "compose_form.publish": "Публикувай", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Запази промените", "compose_form.sensitive.hide": "{count, plural, one {Маркиране на мултимедията като деликатна} other {Маркиране на мултимедиите като деликатни}}", "compose_form.sensitive.marked": "{count, plural, one {Мултимедията е маркирана като деликатна} other {Мултимедиите са маркирани като деликатни}}", "compose_form.sensitive.unmarked": "{count, plural, one {Мултимедията не е маркирана като деликатна} other {Мултимедиите не са маркирани като деликатни}}", @@ -179,7 +180,7 @@ "empty_column.follow_requests": "Все още нямате заявки за последване. Когато получите такава, тя ще се покаже тук.", "empty_column.hashtag": "В този хаштаг няма нищо все още.", "empty_column.home": "Вашата начална емисия е празна! Посетете {public} или използвайте търсене, за да започнете и да се запознаете с други потребители.", - "empty_column.home.suggestions": "See some suggestions", + "empty_column.home.suggestions": "Виж някои предложения", "empty_column.list": "There is nothing in this list yet.", "empty_column.lists": "Все още нямате списъци. Когато създадете такъв, той ще се покаже тук.", "empty_column.mutes": "Не сте заглушавали потребители все още.", @@ -189,7 +190,7 @@ "error.unexpected_crash.explanation_addons": "Тази страница не може да се покаже правилно. Тази грешка вероятно е причинена от добавка на браузъра или инструменти за автоматичен превод.", "error.unexpected_crash.next_steps": "Опитайте да опресните страницата. Ако това не помогне, все още можете да използвате Mastodon чрез различен браузър или приложение.", "error.unexpected_crash.next_steps_addons": "Опитайте да ги деактивирате и да опресните страницата. Ако това не помогне, може все още да използвате Mastodon чрез различен браузър или приложение.", - "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", + "errors.unexpected_crash.copy_stacktrace": "Копиране на stacktrace-а в клипборда", "errors.unexpected_crash.report_issue": "Сигнал за проблем", "explore.search_results": "Резултати от търсенето", "explore.suggested_follows": "За вас", @@ -198,21 +199,21 @@ "explore.trending_statuses": "Публикации", "explore.trending_tags": "Тагове", "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.context_mismatch_title": "Несъвпадение на контекста!", "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.expired_title": "Изтекал филтър!", "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", + "filter_modal.added.review_and_configure_title": "Настройки на филтър", + "filter_modal.added.settings_link": "страница с настройки", "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.title": "Филтърът е добавен!", + "filter_modal.select_filter.context_mismatch": "не е приложимо за този контекст", + "filter_modal.select_filter.expired": "изтекло", + "filter_modal.select_filter.prompt_new": "Нова категория: {name}", + "filter_modal.select_filter.search": "Търси или създай", + "filter_modal.select_filter.subtitle": "Изберете съществуваща категория или създайте нова", + "filter_modal.select_filter.title": "Филтриране на поста", + "filter_modal.title.status": "Филтрирай пост", "follow_recommendations.done": "Готово", "follow_recommendations.heading": "Следвайте хора, които харесвате, за да виждате техните съобщения! Ето някои предложения.", "follow_recommendations.lead": "Съобщения от хора, които следвате, ще се показват в хронологичен ред на вашата главна страница. Не се страхувайте, че ще сгрешите, по всяко време много лесно можете да спрете да ги следвате!", @@ -237,9 +238,9 @@ "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": "Follow hashtag", - "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.follow": "Следване на хаштаг", + "hashtag.total_volume": "Пълно количество в {days, plural,one {последния ден} other {последните {days} дни}}", + "hashtag.unfollow": "Спиране на следване на хаштаг", "home.column_settings.basic": "Основно", "home.column_settings.show_reblogs": "Показване на споделяния", "home.column_settings.show_replies": "Показване на отговори", @@ -287,8 +288,8 @@ "lightbox.expand": "Разгъване на полето за преглед на изображение", "lightbox.next": "Напред", "lightbox.previous": "Назад", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Покажи профила въпреки това", + "limited_account_hint.title": "Този профил е скрит от модераторите на сървъра Ви.", "lists.account.add": "Добавяне към списък", "lists.account.remove": "Премахване от списък", "lists.delete": "Изтриване на списък", @@ -315,11 +316,11 @@ "navigation_bar.bookmarks": "Отметки", "navigation_bar.community_timeline": "Локална емисия", "navigation_bar.compose": "Композиране на нова публикация", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Директни съобщения", "navigation_bar.discover": "Откриване", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Редактирай профил", - "navigation_bar.explore": "Explore", + "navigation_bar.explore": "Разглеждане", "navigation_bar.favourites": "Любими", "navigation_bar.filters": "Заглушени думи", "navigation_bar.follow_requests": "Заявки за последване", @@ -334,8 +335,8 @@ "navigation_bar.preferences": "Предпочитания", "navigation_bar.public_timeline": "Публичен канал", "navigation_bar.security": "Сигурност", - "notification.admin.report": "{name} reported {target}", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.report": "{name} докладва {target}", + "notification.admin.sign_up": "{name} се регистрира", "notification.favourite": "{name} хареса твоята публикация", "notification.follow": "{name} те последва", "notification.follow_request": "{name} поиска да ви последва", @@ -344,16 +345,16 @@ "notification.poll": "Анкета, в която сте гласували, приключи", "notification.reblog": "{name} сподели твоята публикация", "notification.status": "{name} току-що публикува", - "notification.update": "{name} edited a post", + "notification.update": "{name} промени публикация", "notifications.clear": "Изчистване на известия", "notifications.clear_confirmation": "Сигурни ли сте, че искате да изчистите окончателно всичките си известия?", - "notifications.column_settings.admin.report": "New reports:", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.report": "Нови доклади:", + "notifications.column_settings.admin.sign_up": "Нови регистрации:", "notifications.column_settings.alert": "Десктоп известия", "notifications.column_settings.favourite": "Предпочитани:", "notifications.column_settings.filter_bar.advanced": "Показване на всички категории", "notifications.column_settings.filter_bar.category": "Лента за бърз филтър", - "notifications.column_settings.filter_bar.show_bar": "Show filter bar", + "notifications.column_settings.filter_bar.show_bar": "Покажи лентата с филтри", "notifications.column_settings.follow": "Нови последователи:", "notifications.column_settings.follow_request": "Нови заявки за последване:", "notifications.column_settings.mention": "Споменавания:", @@ -363,9 +364,9 @@ "notifications.column_settings.show": "Покажи в колона", "notifications.column_settings.sound": "Пускане на звук", "notifications.column_settings.status": "Нови публикации:", - "notifications.column_settings.unread_notifications.category": "Unread notifications", - "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.unread_notifications.category": "Непрочетени известия", + "notifications.column_settings.unread_notifications.highlight": "Отбележи непрочетените уведомления", + "notifications.column_settings.update": "Редакции:", "notifications.filter.all": "Всичко", "notifications.filter.boosts": "Споделяния", "notifications.filter.favourites": "Любими", @@ -389,15 +390,15 @@ "poll.total_votes": "{count, plural, one {# глас} other {# гласа}}", "poll.vote": "Гласуване", "poll.voted": "Вие гласувахте за този отговор", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# глас} other {# гласа}}", "poll_button.add_poll": "Добавяне на анкета", "poll_button.remove_poll": "Премахване на анкета", "privacy.change": "Adjust status privacy", "privacy.direct.long": "Post to mentioned users only", - "privacy.direct.short": "Direct", + "privacy.direct.short": "Само споменатите хора", "privacy.private.long": "Post to followers only", - "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all", + "privacy.private.short": "Само последователи", + "privacy.public.long": "Видимо за всички", "privacy.public.short": "Публично", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Скрито", @@ -468,7 +469,7 @@ "search_results.accounts": "Хора", "search_results.all": "All", "search_results.hashtags": "Хаштагове", - "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.nothing_found": "Не е намерено нищо за това търсене", "search_results.statuses": "Публикации", "search_results.statuses_fts_disabled": "Търсенето на публикации по тяхното съдържание не е активирано за този Mastodon сървър.", "search_results.total": "{count, number} {count, plural, one {резултат} other {резултата}}", @@ -482,16 +483,16 @@ "status.delete": "Изтриване", "status.detailed_status": "Подробен изглед на разговор", "status.direct": "Директно съобщение към @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Редакция", + "status.edited": "Редактирано на {date}", + "status.edited_x_times": "Редактирано {count, plural,one {{count} път} other {{count} пъти}}", "status.embed": "Вграждане", "status.favourite": "Предпочитани", - "status.filter": "Filter this post", + "status.filter": "Филтриране на поста", "status.filtered": "Филтрирано", - "status.hide": "Hide toot", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.hide": "Скриване на поста", + "status.history.created": "{name} създаде {date}", + "status.history.edited": "{name} редактира {date}", "status.load_more": "Зареждане на още", "status.media_hidden": "Мултимедията е скрита", "status.mention": "Споменаване", @@ -513,7 +514,7 @@ "status.report": "Докладване на @{name}", "status.sensitive_warning": "Деликатно съдържание", "status.share": "Споделяне", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Покажи въпреки това", "status.show_less": "Покажи по-малко", "status.show_less_all": "Покажи по-малко за всички", "status.show_more": "Покажи повече", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Не е налично", "status.unmute_conversation": "Раззаглушаване на разговор", "status.unpin": "Разкачане от профил", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Отхвърляне на предложение", "suggestions.header": "Може да се интересувате от…", "tabs_bar.federated_timeline": "Обединен", @@ -550,14 +554,14 @@ "upload_error.poll": "Качването на файлове не е позволено с анкети.", "upload_form.audio_description": "Опишете за хора със загуба на слуха", "upload_form.description": "Опишете за хора със зрителни увреждания", - "upload_form.description_missing": "No description added", + "upload_form.description_missing": "Без добавено описание", "upload_form.edit": "Редакция", "upload_form.thumbnail": "Промяна на миниизображението", "upload_form.undo": "Отмяна", "upload_form.video_description": "Опишете за хора със загуба на слуха или зрително увреждане", "upload_modal.analyzing_picture": "Анализ на снимка…", "upload_modal.apply": "Прилагане", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Прилагане…", "upload_modal.choose_image": "Избор на изображение", "upload_modal.description_placeholder": "Ах, чудна българска земьо, полюшвай цъфтящи жита", "upload_modal.detect_text": "Откриване на текст от картина", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index 94b0477b5..dfa718ae0 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -24,6 +24,7 @@ "account.follows_you": "তোমাকে অনুসরণ করে", "account.hide_reblogs": "@{name}'র সমর্থনগুলি লুকিয়ে ফেলুন", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "এই লিংকের মালিকানা চেক করা হয়েছে {date} তারিখে", "account.locked_info": "এই নিবন্ধনের গোপনীয়তার ক্ষেত্র তালা দেওয়া আছে। নিবন্ধনকারী অনুসরণ করার অনুমতি যাদেরকে দেবেন, শুধু তারাই অনুসরণ করতে পারবেন।", "account.media": "মিডিয়া", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "পাওয়া যাচ্ছে না", "status.unmute_conversation": "আলোচনার প্রজ্ঞাপন চালু করতে", "status.unpin": "নিজের পাতা থেকে পিন করে রাখাটির পিন খুলতে", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "সাহায্যের পরামর্শগুলো সরাতে", "suggestions.header": "আপনি হয়তোবা এগুলোতে আগ্রহী হতে পারেন…", "tabs_bar.federated_timeline": "যুক্তবিশ্ব", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index 50837691f..f3d19f9a2 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -24,6 +24,7 @@ "account.follows_you": "Ho heul", "account.hide_reblogs": "Kuzh toudoù rannet gant @{name}", "account.joined": "Amañ abaoe {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Gwiriet eo bet perc'hennidigezh al liamm d'an deiziad-mañ : {date}", "account.locked_info": "Prennet eo ar gont-mañ. Dibab a ra ar perc'henn ar re a c'hall heuliañ anezhi pe anezhañ.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Dihegerz", "status.unmute_conversation": "Diguzhat ar gaozeadenn", "status.unpin": "Dispilhennañ eus ar profil", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dilezel damvenegoù", "suggestions.header": "Marteze e vefec'h dedenet gant…", "tabs_bar.federated_timeline": "Kevredet", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index c3fe88121..32faea99a 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -24,6 +24,7 @@ "account.follows_you": "Et segueix", "account.hide_reblogs": "Amaga els impulsos de @{name}", "account.joined": "Membre des de {date}", + "account.languages": "Canviar les llengües subscrits", "account.link_verified_on": "La propietat d'aquest enllaç es va verificar el dia {date}", "account.locked_info": "Aquest estat de privadesa del compte està definit com a bloquejat. El propietari revisa manualment qui pot seguir-lo.", "account.media": "Multimèdia", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "No està disponible", "status.unmute_conversation": "No silenciïs la conversa", "status.unpin": "No fixis al perfil", + "subscribed_languages.lead": "Només els apunts en les llengües seleccionades apareixeran en le teves línies de temps Inici i llista després del canvi. No en seleccionis cap per a rebre apunts en totes les llengües.", + "subscribed_languages.save": "Desa els canvis", + "subscribed_languages.target": "Canvia les llengües subscrites per a {target}", "suggestions.dismiss": "Ignora el suggeriment", "suggestions.header": "És possible que estiguis interessat en…", "tabs_bar.federated_timeline": "Federat", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 19d9550d0..1497e31a3 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -24,6 +24,7 @@ "account.follows_you": "شوێنکەوتووەکانت", "account.hide_reblogs": "داشاردنی بووستەکان لە @{name}", "account.joined": "بەشداری {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "خاوەنداریەتی ئەم لینکە لە {date} چێک کراوە", "account.locked_info": "تایبەتمەندی ئەم هەژمارەیە ڕیکخراوە بۆ قوفڵدراوە. خاوەنەکە بە دەستی پێداچوونەوە دەکات کە کێ دەتوانێت شوێنیان بکەوێت.", "account.media": "میدیا", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "بەردەست نیە", "status.unmute_conversation": "گفتوگۆی بێدەنگ", "status.unpin": "لە سەرەوە لایبە", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "ڕەتکردنەوەی پێشنیار", "suggestions.header": "لەوانەیە حەزت لەمەش بێت…", "tabs_bar.federated_timeline": "گشتی", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 5ca3f4a4b..efc584c66 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -24,6 +24,7 @@ "account.follows_you": "Vi seguita", "account.hide_reblogs": "Piattà spartere da @{name}", "account.joined": "Quì dapoi {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "A prupietà di stu ligame hè stata verificata u {date}", "account.locked_info": "U statutu di vita privata di u contu hè chjosu. U pruprietariu esamina manualmente e dumande d'abbunamentu.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Micca dispunibule", "status.unmute_conversation": "Ùn piattà più a cunversazione", "status.unpin": "Spuntarulà da u prufile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Righjittà a pruposta", "suggestions.header": "Site forse interessatu·a da…", "tabs_bar.federated_timeline": "Glubale", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index ef1a13d8f..a5c512c0f 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -24,6 +24,7 @@ "account.follows_you": "Sleduje vás", "account.hide_reblogs": "Skrýt boosty od @{name}", "account.joined": "Založen {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Vlastnictví tohoto odkazu bylo zkontrolováno {date}", "account.locked_info": "Stav soukromí tohoto účtu je nastaven na zamčeno. Jeho vlastník ručně posuzuje, kdo ho může sledovat.", "account.media": "Média", @@ -59,7 +60,7 @@ "alert.unexpected.title": "Jejda!", "announcement.announcement": "Oznámení", "attachments_list.unprocessed": "(nezpracováno)", - "audio.hide": "Hide audio", + "audio.hide": "Skrýt zvuk", "autosuggest_hashtag.per_week": "{count} za týden", "boost_modal.combo": "Příště můžete pro přeskočení stisknout {combo}", "bundle_column_error.body": "Při načítání této komponenty se něco pokazilo.", @@ -197,22 +198,22 @@ "explore.trending_links": "Zprávy", "explore.trending_statuses": "Příspěvky", "explore.trending_tags": "Hashtagy", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Tato kategorie filtru se nevztahuje na kontext, ve kterém jste tento příspěvek otevřeli. Pokud chcete, aby byl příspěvek filtrován i v tomto kontextu, budete muset filtr upravit.", + "filter_modal.added.context_mismatch_title": "Kontext se neshoduje!", + "filter_modal.added.expired_explanation": "Tato kategorie filtrů vypršela, budete muset změnit datum vypršení platnosti, aby mohla být použita.", + "filter_modal.added.expired_title": "Vypršel filtr!", + "filter_modal.added.review_and_configure": "Chcete-li zkontrolovat a dále konfigurovat tuto kategorii filtru, přejděte na {settings_link}.", + "filter_modal.added.review_and_configure_title": "Nastavení filtru", + "filter_modal.added.settings_link": "stránka nastavení", + "filter_modal.added.short_explanation": "Tento příspěvek byl přidán do následující kategorie filtrů: {title}.", + "filter_modal.added.title": "Filtr přidán!", + "filter_modal.select_filter.context_mismatch": "nevztahuje se na tento kontext", + "filter_modal.select_filter.expired": "vypršela platnost", + "filter_modal.select_filter.prompt_new": "Nová kategorie: {name}", + "filter_modal.select_filter.search": "Vyhledat nebo vytvořit", + "filter_modal.select_filter.subtitle": "Použít existující kategorii nebo vytvořit novou kategorii", + "filter_modal.select_filter.title": "Filtrovat tento příspěvek", + "filter_modal.title.status": "Filtrovat příspěvek", "follow_recommendations.done": "Hotovo", "follow_recommendations.heading": "Sledujte lidi, jejichž příspěvky chcete vidět! Tady jsou nějaké návrhy.", "follow_recommendations.lead": "Příspěvky od lidí, které sledujete, se budou objevovat v chronologickém pořadí ve vaší domovské ose. Nebojte se, že uděláte chybu, můžete lidi stejně snadno kdykoliv přestat sledovat!", @@ -237,9 +238,9 @@ "hashtag.column_settings.tag_mode.any": "Jakékoliv z těchto", "hashtag.column_settings.tag_mode.none": "Žádné z těchto", "hashtag.column_settings.tag_toggle": "Zahrnout v tomto sloupci dodatečné tagy", - "hashtag.follow": "Follow hashtag", + "hashtag.follow": "Sledovat hashtag", "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.unfollow": "Zrušit sledování hashtagu", "home.column_settings.basic": "Základní", "home.column_settings.show_reblogs": "Zobrazit boosty", "home.column_settings.show_replies": "Zobrazit odpovědi", @@ -487,7 +488,7 @@ "status.edited_x_times": "Upraven {count, plural, one {{count}krát} few {{count}krát} many {{count}krát} other {{count}krát}}", "status.embed": "Vložit na web", "status.favourite": "Oblíbit", - "status.filter": "Filter this post", + "status.filter": "Filtrovat tento příspěvek", "status.filtered": "Filtrováno", "status.hide": "Skrýt příspěvek", "status.history.created": "Uživatel {name} vytvořil {date}", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Nedostupné", "status.unmute_conversation": "Odkrýt konverzaci", "status.unpin": "Odepnout z profilu", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Odmítnout návrh", "suggestions.header": "Mohlo by vás zajímat…", "tabs_bar.federated_timeline": "Federovaná", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index cb1c90d69..de59b5ac5 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -24,6 +24,7 @@ "account.follows_you": "Yn eich dilyn chi", "account.hide_reblogs": "Cuddio bwstiau o @{name}", "account.joined": "Ymunodd {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Gwiriwyd perchnogaeth y ddolen yma ar {date}", "account.locked_info": "Mae'r statws preifatrwydd cyfrif hwn wedi'i osod i gloi. Mae'r perchennog yn adolygu'r sawl sy'n gallu eu dilyn.", "account.media": "Cyfryngau", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Dim ar gael", "status.unmute_conversation": "Dad-dawelu sgwrs", "status.unpin": "Dadbinio o'r proffil", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Diswyddo", "suggestions.header": "Efallai y bydd gennych ddiddordeb mewn…", "tabs_bar.federated_timeline": "Ffederasiwn", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 80cb8e6c6..ffa6fdd15 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -24,6 +24,7 @@ "account.follows_you": "Følger dig", "account.hide_reblogs": "Skjul boosts fra @{name}", "account.joined": "Tilmeldt {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ejerskab af dette link blev tjekket {date}", "account.locked_info": "Denne kontos fortrolighedsstatus er sat til låst. Ejeren bedømmer manuelt, hvem der kan følge vedkommende.", "account.media": "Medier", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Utilgængelig", "status.unmute_conversation": "Genaktivér samtale", "status.unpin": "Frigør fra profil", + "subscribed_languages.lead": "Kun indlæg på udvalgte sprog vil fremgå på Hjem og listetidslinjer efter ændringen. Vælg ingen for at modtage indlæg på alle sprog.", + "subscribed_languages.save": "Gem ændringer", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Afvis foreslag", "suggestions.header": "Du er måske interesseret i…", "tabs_bar.federated_timeline": "Fælles", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 9bed25526..a8b841a26 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -24,6 +24,7 @@ "account.follows_you": "Folgt dir", "account.hide_reblogs": "Geteilte Beiträge von @{name} verbergen", "account.joined": "Beigetreten am {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Diesem Profil folgt niemand", "account.locked_info": "Der Privatsphärenstatus dieses Accounts wurde auf „gesperrt“ gesetzt. Die Person bestimmt manuell, wer ihm/ihr folgen darf.", "account.media": "Medien", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Nicht verfügbar", "status.unmute_conversation": "Stummschaltung von Konversation aufheben", "status.unpin": "Vom Profil lösen", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Empfehlung ausblenden", "suggestions.header": "Du bist vielleicht interessiert an…", "tabs_bar.federated_timeline": "Föderation", diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 999f67c73..d90455b51 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -24,6 +24,7 @@ "account.follows_you": "Σε ακολουθεί", "account.hide_reblogs": "Απόκρυψη προωθήσεων από @{name}", "account.joined": "Μέλος από τις {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Η ιδιοκτησία αυτού του συνδέσμου ελέχθηκε την {date}", "account.locked_info": "Η κατάσταση απορρήτου αυτού του λογαριασμού είναι κλειδωμένη. Ο ιδιοκτήτης επιβεβαιώνει χειροκίνητα ποιος μπορεί να τον ακολουθήσει.", "account.media": "Πολυμέσα", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Μη διαθέσιμα", "status.unmute_conversation": "Διέκοψε την αποσιώπηση της συζήτησης", "status.unpin": "Ξεκαρφίτσωσε από το προφίλ", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Απόρριψη πρότασης", "suggestions.header": "Ίσως να ενδιαφέρεσαι για…", "tabs_bar.federated_timeline": "Ομοσπονδιακή", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 2287dcda5..eab3be805 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -24,6 +24,7 @@ "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 082c53de7..0363f6715 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -24,6 +24,7 @@ "account.follows_you": "Sekvas vin", "account.hide_reblogs": "Kaŝi la plusendojn de @{name}", "account.joined": "Kuniĝis {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "La posedanto de tiu ligilo estis kontrolita je {date}", "account.locked_info": "La privateco de tiu konto estas elektita kiel fermita. La posedanto povas mane akcepti tiun, kiu povas sekvi rin.", "account.media": "Aŭdovidaĵoj", @@ -59,7 +60,7 @@ "alert.unexpected.title": "Aj!", "announcement.announcement": "Anonco", "attachments_list.unprocessed": "(neprilaborita)", - "audio.hide": "Hide audio", + "audio.hide": "Kaŝi aŭdion", "autosuggest_hashtag.per_week": "{count} semajne", "boost_modal.combo": "Vi povas premi {combo} por preterpasi sekvafoje", "bundle_column_error.body": "Io misfunkciis en la ŝargado de ĉi tiu elemento.", @@ -202,16 +203,16 @@ "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", "filter_modal.added.expired_title": "Expired filter!", "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", + "filter_modal.added.review_and_configure_title": "Filtrilopcioj", + "filter_modal.added.settings_link": "opciopaĝo", "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", "filter_modal.added.title": "Filter added!", "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.expired": "eksvalidiĝinta", + "filter_modal.select_filter.prompt_new": "Nova klaso: {name}", + "filter_modal.select_filter.search": "Serĉi aŭ krei", "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", + "filter_modal.select_filter.title": "Filtri ĉi afiŝo", "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Farita", "follow_recommendations.heading": "Sekvi la personojn kies mesaĝojn vi volas vidi! Jen iom da sugestoj.", @@ -487,7 +488,7 @@ "status.edited_x_times": "Redactita {count, plural, one {{count} fojon} other {{count} fojojn}}", "status.embed": "Enkorpigi", "status.favourite": "Aldoni al viaj preferaĵoj", - "status.filter": "Filter this post", + "status.filter": "Filtri ĉi afiŝo", "status.filtered": "Filtrita", "status.hide": "Kaŝi la mesaĝon", "status.history.created": "{name} kreis {date}", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Nedisponebla", "status.unmute_conversation": "Malsilentigi la konversacion", "status.unpin": "Depingli de profilo", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Forigi la proponon", "suggestions.header": "Vi povus interesiĝi pri…", "tabs_bar.federated_timeline": "Fratara", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 27ebd749d..8a7335ac0 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -24,6 +24,7 @@ "account.follows_you": "Te sigue", "account.hide_reblogs": "Ocultar adhesiones de @{name}", "account.joined": "En este servidor desde {date}", + "account.languages": "Cambiar idiomas suscritos", "account.link_verified_on": "La propiedad de este enlace fue verificada el {date}", "account.locked_info": "Esta cuenta es privada. El propietario manualmente revisa quién puede seguirle.", "account.media": "Medios", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Descartar sugerencia", "suggestions.header": "Es posible que te interese…", "tabs_bar.federated_timeline": "Federada", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index bb03a2975..2bcc3a554 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -24,6 +24,7 @@ "account.follows_you": "Te sigue", "account.hide_reblogs": "Ocultar retoots de @{name}", "account.joined": "Se unió el {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "El proprietario de este link fue comprobado el {date}", "account.locked_info": "El estado de privacidad de esta cuenta està configurado como bloqueado. El proprietario debe revisar manualmente quien puede seguirle.", "account.media": "Multimedia", @@ -197,22 +198,22 @@ "explore.trending_links": "Noticias", "explore.trending_statuses": "Publicaciones", "explore.trending_tags": "Hashtags", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Esta categoría de filtro no se aplica al contexto en el que ha accedido a esta publlicación. Si quieres que la publicación sea filtrada también en este contexto, tendrás que editar el filtro.", + "filter_modal.added.context_mismatch_title": "¡El contexto no coincide!", + "filter_modal.added.expired_explanation": "Esta categoría de filtro ha caducado, necesitará cambiar la fecha de caducidad para que se aplique.", + "filter_modal.added.expired_title": "¡Filtro caducado!", + "filter_modal.added.review_and_configure": "Para revisar y configurar esta categoría de filtros, vaya a {settings_link}.", + "filter_modal.added.review_and_configure_title": "Ajustes de filtro", + "filter_modal.added.settings_link": "página de ajustes", + "filter_modal.added.short_explanation": "Esta publicación ha sido añadida a la siguiente categoría de filtros: {title}.", + "filter_modal.added.title": "¡Filtro añadido!", + "filter_modal.select_filter.context_mismatch": "no se aplica a este contexto", + "filter_modal.select_filter.expired": "expirado", + "filter_modal.select_filter.prompt_new": "Nueva categoría: {name}", + "filter_modal.select_filter.search": "Buscar o crear", + "filter_modal.select_filter.subtitle": "Usar una categoría existente o crear una nueva", + "filter_modal.select_filter.title": "Filtrar esta publicación", + "filter_modal.title.status": "Filtrar una publicación", "follow_recommendations.done": "Hecho", "follow_recommendations.heading": "¡Sigue a gente que publique cosas que te gusten! Aquí tienes algunas sugerencias.", "follow_recommendations.lead": "Las publicaciones de la gente a la que sigas aparecerán ordenadas cronológicamente en Inicio. No tengas miedo de cometer errores, ¡puedes dejarles de seguir en cualquier momento con la misma facilidad!", @@ -487,7 +488,7 @@ "status.edited_x_times": "Editado {count, plural, one {{count} time} other {{count} veces}}", "status.embed": "Incrustado", "status.favourite": "Favorito", - "status.filter": "Filter this post", + "status.filter": "Filtrar esta publicación", "status.filtered": "Filtrado", "status.hide": "Ocultar publicación", "status.history.created": "{name} creó {date}", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Descartar sugerencia", "suggestions.header": "Es posible que te interese…", "tabs_bar.federated_timeline": "Federado", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 7c9700ecb..ade9480d7 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -24,6 +24,7 @@ "account.follows_you": "Te sigue", "account.hide_reblogs": "Ocultar retoots de @{name}", "account.joined": "Se unió el {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "El proprietario de este link fue comprobado el {date}", "account.locked_info": "El estado de privacidad de esta cuenta està configurado como bloqueado. El proprietario debe revisar manualmente quien puede seguirle.", "account.media": "Multimedia", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Descartar sugerencia", "suggestions.header": "Es posible que te interese…", "tabs_bar.federated_timeline": "Federada", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 6737111fd..3eaaa12ec 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -24,6 +24,7 @@ "account.follows_you": "Jälgib Teid", "account.hide_reblogs": "Peida upitused kasutajalt @{name}", "account.joined": "Liitus {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Selle lingi autorsust kontrolliti {date}", "account.locked_info": "Selle konto privaatsussätteks on lukustatud. Omanik vaatab manuaalselt üle, kes teda jägida saab.", "account.media": "Meedia", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Pole saadaval", "status.unmute_conversation": "Ära vaigista vestlust", "status.unpin": "Kinnita profiililt lahti", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Eira soovitust", "suggestions.header": "Teid võib huvitada…", "tabs_bar.federated_timeline": "Föderatiivne", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index c8062f004..5b72eeb2d 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -24,6 +24,7 @@ "account.follows_you": "Jarraitzen dizu", "account.hide_reblogs": "Ezkutatu @{name}(r)en bultzadak", "account.joined": "{date}(e)an elkartua", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Esteka honen jabetzaren egiaztaketa data: {date}", "account.locked_info": "Kontu honen pribatutasun egoera blokeatuta gisa ezarri da. Jabeak eskuz erabakitzen du nork jarraitu diezaioken.", "account.media": "Multimedia", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Ez eskuragarri", "status.unmute_conversation": "Desmututu elkarrizketa", "status.unpin": "Desfinkatu profiletik", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Errefusatu proposamena", "suggestions.header": "Hau interesatu dakizuke…", "tabs_bar.federated_timeline": "Federatua", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 775f38475..f3e6fbc72 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -24,6 +24,7 @@ "account.follows_you": "پی می‌گیردتان", "account.hide_reblogs": "نهفتن تقویت‌های ‎@{name}", "account.joined": "پیوسته از {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "مالکیت این پیوند در {date} بررسی شد", "account.locked_info": "این حساب خصوصی است. صاحبش تصمیم می‌گیرد که چه کسی پی‌گیرش باشد.", "account.media": "رسانه", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "ناموجود", "status.unmute_conversation": "رفع خموشی گفت‌وگو", "status.unpin": "برداشتن سنجاق از نمایه", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "نادیده گرفتن پیشنهاد", "suggestions.header": "شاید این هم برایتان جالب باشد…", "tabs_bar.federated_timeline": "همگانی", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 52afeaa5d..6920093f4 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -24,6 +24,7 @@ "account.follows_you": "Seuraa sinua", "account.hide_reblogs": "Piilota buustaukset käyttäjältä @{name}", "account.joined": "Liittynyt {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Tämän linkin omistaja tarkistettiin {date}", "account.locked_info": "Tämän tilin yksityisyyden tila on asetettu lukituksi. Omistaja arvioi manuaalisesti, kuka voi seurata niitä.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Ei saatavilla", "status.unmute_conversation": "Poista keskustelun mykistys", "status.unpin": "Irrota profiilista", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Hylkää ehdotus", "suggestions.header": "Saatat olla kiinnostunut myös…", "tabs_bar.federated_timeline": "Yleinen", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index dcac5c880..9cbbc3c03 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -24,6 +24,7 @@ "account.follows_you": "Vous suit", "account.hide_reblogs": "Masquer les partages de @{name}", "account.joined": "Ici depuis {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "La propriété de ce lien a été vérifiée le {date}", "account.locked_info": "Ce compte est privé. Son ou sa propriétaire approuve manuellement qui peut le suivre.", "account.media": "Médias", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Indisponible", "status.unmute_conversation": "Ne plus masquer la conversation", "status.unpin": "Retirer du profil", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Rejeter la suggestion", "suggestions.header": "Vous pourriez être intéressé·e par…", "tabs_bar.federated_timeline": "Fil public global", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index a53a1cf52..1e49a7e17 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -24,6 +24,7 @@ "account.follows_you": "Folget dy", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Registrearre op {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Net beskikber", "status.unmute_conversation": "Petear net mear negearre", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index e05c4a41d..e9e1e96d4 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -24,6 +24,7 @@ "account.follows_you": "Do do leanúint", "account.hide_reblogs": "Folaigh athphostálacha ó @{name}", "account.joined": "Ina bhall ó {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "Tá an socrú príobháideachais don cuntas seo curtha go 'faoi ghlas'. Déanann an t-úinéir léirmheas ar cén daoine atá ceadaithe an cuntas leanúint.", "account.media": "Ábhair", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Díbhalbhaigh comhrá", "status.unpin": "Díphionnáil de do phróifíl", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index f874637fa..7f17df51e 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -24,6 +24,7 @@ "account.follows_you": "’Gad leantainn", "account.hide_reblogs": "Falaich na brosnachaidhean o @{name}", "account.joined": "Air ballrachd fhaighinn {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Chaidh dearbhadh cò leis a tha an ceangal seo {date}", "account.locked_info": "Tha prìobhaideachd ghlaiste aig a’ chunntais seo. Nì an sealbhadair lèirmheas a làimh air cò dh’fhaodas leantainn orra.", "account.media": "Meadhanan", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Chan eil seo ri fhaighinn", "status.unmute_conversation": "Dì-mhùch an còmhradh", "status.unpin": "Dì-phrìnich on phròifil", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Leig seachad am moladh", "suggestions.header": "Dh’fhaoidte gu bheil ùidh agad ann an…", "tabs_bar.federated_timeline": "Co-naisgte", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index c584dd551..215956d49 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -24,6 +24,7 @@ "account.follows_you": "Séguete", "account.hide_reblogs": "Agochar repeticións de @{name}", "account.joined": "Uníuse {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "A propiedade desta ligazón foi verificada o {date}", "account.locked_info": "Esta é unha conta privada. A propietaria revisa de xeito manual quen pode seguila.", "account.media": "Multimedia", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Non dispoñíbel", "status.unmute_conversation": "Deixar de silenciar conversa", "status.unpin": "Desafixar do perfil", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Rexeitar suxestión", "suggestions.header": "Poderíache interesar…", "tabs_bar.federated_timeline": "Federada", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 81253fd1f..9c60de8ca 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -24,6 +24,7 @@ "account.follows_you": "במעקב אחריך", "account.hide_reblogs": "להסתיר הידהודים מאת @{name}", "account.joined": "הצטרפו ב{date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "בעלות על הקישור הזה נבדקה לאחרונה ב{date}", "account.locked_info": "מצב הפרטיות של החשבון הנוכחי הוגדר כנעול. בעל החשבון קובע באופן פרטני מי יכול לעקוב אחריו.", "account.media": "מדיה", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "לא זמין", "status.unmute_conversation": "הסרת השתקת שיחה", "status.unpin": "לשחרר מקיבוע באודות", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "להתעלם מהצעה", "suggestions.header": "ייתכן שזה יעניין אותך…", "tabs_bar.federated_timeline": "פיד כללי (בין-קהילתי)", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index d2403c1f5..6fab737f9 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -24,6 +24,7 @@ "account.follows_you": "आपको फॉलो करता है", "account.hide_reblogs": "@{name} के बूस्ट छुपाएं", "account.joined": "शामिल हुये {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "इस लिंक का स्वामित्व {date} को चेक किया गया था", "account.locked_info": "यह खाता गोपनीयता स्थिति लॉक करने के लिए सेट है। मालिक मैन्युअल रूप से समीक्षा करता है कि कौन उनको फॉलो कर सकता है।", "account.media": "मीडिया", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "अनुपलब्ध", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "फ़ेडरेटेड", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index c66de9c0d..94ff9d3a3 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -24,6 +24,7 @@ "account.follows_you": "Prati te", "account.hide_reblogs": "Sakrij boostove od @{name}", "account.joined": "Pridružio se {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Vlasništvo ove poveznice provjereno je {date}", "account.locked_info": "Status privatnosti ovog računa postavljen je na zaključano. Vlasnik ručno pregledava tko ih može pratiti.", "account.media": "Medijski sadržaj", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Nije dostupno", "status.unmute_conversation": "Poništi utišavanje razgovora", "status.unpin": "Otkvači s profila", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Odbaci prijedlog", "suggestions.header": "Možda Vas zanima…", "tabs_bar.federated_timeline": "Federalno", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 08cb01dc3..cc3602956 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -24,6 +24,7 @@ "account.follows_you": "Követ téged", "account.hide_reblogs": "@{name} megtolásainak elrejtése", "account.joined": "Csatlakozott {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "A linket eredetiségét ebben az időpontban ellenőriztük: {date}", "account.locked_info": "Ennek a fióknak zárolt a láthatósága. A tulajdonos kézzel engedélyezi, hogy ki követheti őt.", "account.media": "Média", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Nem érhető el", "status.unmute_conversation": "Beszélgetés némításának feloldása", "status.unpin": "Kitűzés eltávolítása a profilodról", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Javaslat elvetése", "suggestions.header": "Esetleg érdekelhet…", "tabs_bar.federated_timeline": "Föderációs", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index 5a18eff04..dc1bec6e4 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -24,6 +24,7 @@ "account.follows_you": "Հետեւում է քեզ", "account.hide_reblogs": "Թաքցնել @{name}֊ի տարածածները", "account.joined": "Միացել է {date}-ից", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Սոյն յղման տիրապետումը ստուգուած է՝ {date}֊ին", "account.locked_info": "Սոյն հաշուի գաղտնիութեան մակարդակը նշուած է որպէս՝ փակ։ Հաշուի տէրն ընտրում է, թէ ով կարող է հետեւել իրեն։", "account.media": "Մեդիա", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Անհասանելի", "status.unmute_conversation": "Ապալռեցնել խօսակցութիւնը", "status.unpin": "Հանել անձնական էջից", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Անտեսել առաջարկը", "suggestions.header": "Միգուցէ քեզ հետաքրքրի…", "tabs_bar.federated_timeline": "Դաշնային", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 9c3879212..8b615038b 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -24,6 +24,7 @@ "account.follows_you": "Mengikuti anda", "account.hide_reblogs": "Sembunyikan boosts dari @{name}", "account.joined": "Bergabung {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Kepemilikan tautan ini telah dicek pada {date}", "account.locked_info": "Status privasi akun ini disetel untuk dikunci. Pemilik secara manual meninjau siapa yang dapat mengikutinya.", "account.media": "Media", @@ -59,7 +60,7 @@ "alert.unexpected.title": "Ups!", "announcement.announcement": "Pengumuman", "attachments_list.unprocessed": "(tidak diproses)", - "audio.hide": "Hide audio", + "audio.hide": "Indonesia", "autosuggest_hashtag.per_week": "{count} per minggu", "boost_modal.combo": "Anda dapat menekan {combo} untuk melewati ini", "bundle_column_error.body": "Kesalahan terjadi saat memuat komponen ini.", @@ -197,7 +198,7 @@ "explore.trending_links": "Berita", "explore.trending_statuses": "Postingan", "explore.trending_tags": "Tagar", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_explanation": "Indonesia Translate", "filter_modal.added.context_mismatch_title": "Context mismatch!", "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", "filter_modal.added.expired_title": "Expired filter!", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Tak tersedia", "status.unmute_conversation": "Bunyikan percakapan", "status.unpin": "Hapus sematan dari profil", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Hentikan saran", "suggestions.header": "Anda mungkin tertarik dg…", "tabs_bar.federated_timeline": "Gabungan", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 28edbc7a3..312ef70ae 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -24,6 +24,7 @@ "account.follows_you": "Sequas tu", "account.hide_reblogs": "Celez busti de @{name}", "account.joined": "Juntas ye {date}", + "account.languages": "Chanjez abonita lingui", "account.link_verified_on": "Proprieteso di ca ligilo kontrolesis ye {date}", "account.locked_info": "La privatesostaco di ca konto fixesas quale lokata. Proprietato manue kontrolas personi qui povas sequar.", "account.media": "Medio", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Nedisplonebla", "status.unmute_conversation": "Desilencigez konverso", "status.unpin": "Depinglagez de profilo", + "subscribed_languages.lead": "Nur posti en selektita lingui aparos en vua hemo e listotempolineo pos chanjo. Selektez nulo por ganar posti en omna lingui.", + "subscribed_languages.save": "Sparez chanji", + "subscribed_languages.target": "Chanjez abonita lingui por {target}", "suggestions.dismiss": "Desklozez sugestajo", "suggestions.header": "Vu forsan havas intereso pri…", "tabs_bar.federated_timeline": "Federata", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index e15656a50..aa46b748b 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -24,6 +24,7 @@ "account.follows_you": "Fylgir þér", "account.hide_reblogs": "Fela endurbirtingar fyrir @{name}", "account.joined": "Gerðist þátttakandi {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Eignarhald á þessum tengli var athugað þann {date}", "account.locked_info": "Staða gagnaleyndar á þessum aðgangi er stillt á læsingu. Eigandinn yfirfer handvirkt hverjir geti fylgst með honum.", "account.media": "Myndskrár", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Ekki tiltækt", "status.unmute_conversation": "Hætta að þagga niður í samtali", "status.unpin": "Losa af notandasniði", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Hafna tillögu", "suggestions.header": "Þú gætir haft áhuga á…", "tabs_bar.federated_timeline": "Sameiginlegt", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 3e59c2782..28e9902a8 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -24,6 +24,7 @@ "account.follows_you": "Ti segue", "account.hide_reblogs": "Nascondi condivisioni da @{name}", "account.joined": "Su questa istanza dal {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "La proprietà di questo link è stata controllata il {date}", "account.locked_info": "Questo è un account privato. Il proprietario approva manualmente chi può seguirlo.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Non disponibile", "status.unmute_conversation": "Annulla silenzia conversazione", "status.unpin": "Non fissare in cima al profilo", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Elimina suggerimento", "suggestions.header": "Ti potrebbe interessare…", "tabs_bar.federated_timeline": "Federazione", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 55cb2eb93..5de2a7abd 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -24,6 +24,7 @@ "account.follows_you": "フォローされています", "account.hide_reblogs": "@{name}さんからのブーストを非表示", "account.joined": "{date} に登録", + "account.languages": "Change subscribed languages", "account.link_verified_on": "このリンクの所有権は{date}に確認されました", "account.locked_info": "このアカウントは承認制アカウントです。相手が承認するまでフォローは完了しません。", "account.media": "メディア", @@ -200,19 +201,19 @@ "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", "filter_modal.added.context_mismatch_title": "Context mismatch!", "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", + "filter_modal.added.expired_title": "フィルターの有効期限が切れています!", + "filter_modal.added.review_and_configure": "このフィルターカテゴリーを確認して設定するには、{settings_link}に移動します。", + "filter_modal.added.review_and_configure_title": "フィルター設定", + "filter_modal.added.settings_link": "設定", "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", "filter_modal.added.title": "Filter added!", "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.select_filter.expired": "期限切れ", + "filter_modal.select_filter.prompt_new": "新しいカテゴリー: {name}", + "filter_modal.select_filter.search": "検索または新規作成", + "filter_modal.select_filter.subtitle": "既存のカテゴリーを使用するか新規作成します", + "filter_modal.select_filter.title": "この投稿をフィルターする", + "filter_modal.title.status": "投稿をフィルターする", "follow_recommendations.done": "完了", "follow_recommendations.heading": "投稿を見たい人をフォローしてください!ここにおすすめがあります。", "follow_recommendations.lead": "あなたがフォローしている人の投稿は、ホームフィードに時系列で表示されます。いつでも簡単に解除できるので、気軽にフォローしてみてください!", @@ -487,7 +488,7 @@ "status.edited_x_times": "{count}回編集", "status.embed": "埋め込み", "status.favourite": "お気に入り", - "status.filter": "Filter this post", + "status.filter": "この投稿をフィルターする", "status.filtered": "フィルターされました", "status.hide": "トゥートを非表示", "status.history.created": "{name}さんが{date}に作成", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "利用できません", "status.unmute_conversation": "会話のミュートを解除", "status.unpin": "プロフィールへの固定を解除", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "隠す", "suggestions.header": "興味あるかもしれません…", "tabs_bar.federated_timeline": "連合", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index c6c72b6ce..8021d8be2 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -24,6 +24,7 @@ "account.follows_you": "მოგყვებათ", "account.hide_reblogs": "დაიმალოს ბუსტები @{name}-სგან", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "მედია", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "საუბარზე გაჩუმების მოშორება", "status.unpin": "პროფილიდან პინის მოშორება", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "ფედერალური", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 035ec7c84..78f41c636 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -24,6 +24,7 @@ "account.follows_you": "Yeṭṭafaṛ-ik", "account.hide_reblogs": "Ffer ayen i ibeṭṭu @{name}", "account.joined": "Yerna-d {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Taɣara n useɣwen-a tettwasenqed ass n {date}", "account.locked_info": "Amiḍan-agi uslig isekweṛ. D bab-is kan i izemren ad yeǧǧ, s ufus-is, win ara t-iḍefṛen.", "account.media": "Amidya", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Ulac-it", "status.unmute_conversation": "Kkes asgugem n udiwenni", "status.unpin": "Kkes asenteḍ seg umaɣnu", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Sefsex asumer", "suggestions.header": "Ahat ad tcelgeḍ deg…", "tabs_bar.federated_timeline": "Amatu", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index edcf0650c..29b6aa16a 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -24,6 +24,7 @@ "account.follows_you": "Сізге жазылыпты", "account.hide_reblogs": "@{name} атты қолданушының әрекеттерін жасыру", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Сілтеме меншігі расталған күн {date}", "account.locked_info": "Бұл қолданушы өзі туралы мәліметтерді жасырған. Тек жазылғандар ғана көре алады.", "account.media": "Медиа", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Қолжетімді емес", "status.unmute_conversation": "Пікірталасты үнсіз қылмау", "status.unpin": "Профильден алып тастау", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Өткізіп жіберу", "suggestions.header": "Қызығуыңыз мүмкін…", "tabs_bar.federated_timeline": "Жаһандық", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index 3d2e0a68d..ed97bac69 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -24,6 +24,7 @@ "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 300b2d7c1..e17582189 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -24,6 +24,7 @@ "account.follows_you": "날 팔로우합니다", "account.hide_reblogs": "@{name}의 부스트를 숨기기", "account.joined": "{date}에 가입함", + "account.languages": "구독한 언어 변경", "account.link_verified_on": "{date}에 이 링크의 소유권이 확인 됨", "account.locked_info": "이 계정의 프라이버시 설정은 잠금으로 설정되어 있습니다. 계정 소유자가 수동으로 팔로워를 승인합니다.", "account.media": "미디어", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "사용할 수 없음", "status.unmute_conversation": "이 대화의 뮤트 해제하기", "status.unpin": "고정 해제", + "subscribed_languages.lead": "변경 후에는 선택한 언어들로 작성된 게시물들만 홈 타임라인과 리스트 타임라인에 나타나게 됩니다. 아무 것도 선택하지 않으면 모든 언어로 작성된 게시물을 받아봅니다.", + "subscribed_languages.save": "변경사항 저장", + "subscribed_languages.target": "{target}에 대한 구독 언어 변경", "suggestions.dismiss": "추천 지우기", "suggestions.header": "여기에 관심이 있을 것 같습니다…", "tabs_bar.federated_timeline": "연합", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 06c0e6f7a..105c45a2d 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -24,6 +24,7 @@ "account.follows_you": "Te dişopîne", "account.hide_reblogs": "Bilindkirinên ji @{name} veşêre", "account.joined": "Di {date} de tevlî bû", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Xwedaniya li vê girêdanê di {date} de hatiye kontrolkirin", "account.locked_info": "Rewşa vê ajimêrê wek kilît kirî hatiye saz kirin. Xwedî yê ajimêrê, kesên vê bişopîne bi dest vekolin dike.", "account.media": "Medya", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Tune ye", "status.unmute_conversation": "Axaftinê bêdeng neke", "status.unpin": "Şandiya derzîkirî ji profîlê rake", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Pêşniyarê paşguh bike", "suggestions.header": "Dibe ku bala te bikşîne…", "tabs_bar.federated_timeline": "Giştî", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index f6a85a932..6b901f70d 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -24,6 +24,7 @@ "account.follows_you": "Y'th hol", "account.hide_reblogs": "Kudha kenerthow a @{name}", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Perghenogeth an kolm ma a veu checkys dhe {date}", "account.locked_info": "Studh privetter an akont ma yw alhwedhys. An perghen a wra dasweles dre leuv piw a yll aga holya.", "account.media": "Myski", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Ankavadow", "status.unmute_conversation": "Antawhe kesklapp", "status.unpin": "Anfastya a brofil", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Gordhyllo profyans", "suggestions.header": "Martesen y fydh dhe les dhywgh…", "tabs_bar.federated_timeline": "Keffrysys", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 4e238273e..0be6c4e68 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -24,6 +24,7 @@ "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 33f6832bf..3b538799e 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -24,6 +24,7 @@ "account.follows_you": "Seko tev", "account.hide_reblogs": "Paslēpt paceltos ierakstus no lietotāja @{name}", "account.joined": "Pievienojās {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Šīs saites piederība ir pārbaudīta {date}", "account.locked_info": "Šī konta privātuma statuss ir slēgts. Īpašnieks izskatīs, kurš viņam drīkst sekot.", "account.media": "Multivide", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Nav pieejams", "status.unmute_conversation": "Atvērt sarunu", "status.unpin": "Noņemt no profila", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Noraidīt ieteikumu", "suggestions.header": "Jūs varētu interesēt arī…", "tabs_bar.federated_timeline": "Federētā", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index d782dff64..2c001c37c 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -24,6 +24,7 @@ "account.follows_you": "Те следи тебе", "account.hide_reblogs": "Сокриј буст од @{name}", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Сопстевноста на овај линк беше проверен на {date}", "account.locked_info": "Статусот на приватност на овај корисник е сетиран како заклучен. Корисникот одлучува кој можи да го следи него.", "account.media": "Медија", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index 37969475d..446901372 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -24,6 +24,7 @@ "account.follows_you": "നിങ്ങളെ പിന്തുടരുന്നു", "account.hide_reblogs": "@{name} ബൂസ്റ്റ് ചെയ്തവ മറയ്കുക", "account.joined": "{date} ൽ ചേർന്നു", + "account.languages": "Change subscribed languages", "account.link_verified_on": "ഈ ലിങ്കിന്റെ ഉടമസ്തത {date} ഇൽ ഉറപ്പാക്കിയതാണ്", "account.locked_info": "ഈ അംഗത്വത്തിന്റെ സ്വകാര്യതാ നിലപാട് അനുസരിച്ച് പിന്തുടരുന്നവരെ തിരഞ്ഞെടുക്കാനുള്ള വിവേചനാധികാരം ഉടമസ്ഥനിൽ നിഷിപ്തമായിരിക്കുന്നു.", "account.media": "മീഡിയ", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "ലഭ്യമല്ല", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "നിർദ്ദേശം ഒഴിവാക്കൂ", "suggestions.header": "നിങ്ങൾക്ക് താൽപ്പര്യമുണ്ടാകാം…", "tabs_bar.federated_timeline": "സംയുക്തമായ", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index 09eaea3f9..8c7f0ec11 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -24,6 +24,7 @@ "account.follows_you": "तुमचा अनुयायी आहे", "account.hide_reblogs": "@{name} पासून सर्व बूस्ट लपवा", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "दृक्‌‌श्राव्य मजकूर", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 6a1302329..4e50ef465 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -24,6 +24,7 @@ "account.follows_you": "Mengikuti anda", "account.hide_reblogs": "Sembunyikan galakan daripada @{name}", "account.joined": "Sertai pada {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Pemilikan pautan ini telah disemak pada {date}", "account.locked_info": "Status privasi akaun ini dikunci. Pemiliknya menyaring sendiri siapa yang boleh mengikutinya.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Tidak tersedia", "status.unmute_conversation": "Nyahbisukan perbualan", "status.unpin": "Nyahsemat daripada profil", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Batalkan cadangan", "suggestions.header": "Anda mungkin berminat dengan…", "tabs_bar.federated_timeline": "Bersekutu", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index b48ebbc16..7831310d8 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -24,6 +24,7 @@ "account.follows_you": "Volgt jou", "account.hide_reblogs": "Boosts van @{name} verbergen", "account.joined": "Geregistreerd op {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Eigendom van deze link is gecontroleerd op {date}", "account.locked_info": "De privacystatus van dit account is op besloten gezet. De eigenaar bepaalt handmatig wie diegene kan volgen.", "account.media": "Media", @@ -198,21 +199,21 @@ "explore.trending_statuses": "Berichten", "explore.trending_tags": "Hashtags", "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.context_mismatch_title": "Context komt niet overeen!", "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.expired_title": "Filter verlopen!", "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.review_and_configure_title": "Filterinstellingen", + "filter_modal.added.settings_link": "instellingspagina", + "filter_modal.added.short_explanation": "Dit bericht is toegevoegd aan de volgende filtercategorie: {title}.", + "filter_modal.added.title": "Filter toegevoegd!", + "filter_modal.select_filter.context_mismatch": "is niet van toepassing op deze context", + "filter_modal.select_filter.expired": "verlopen", + "filter_modal.select_filter.prompt_new": "Nieuwe categorie: {name}", + "filter_modal.select_filter.search": "Zoeken of toevoegen", + "filter_modal.select_filter.subtitle": "Gebruik een bestaande categorie of maak een nieuwe aan", + "filter_modal.select_filter.title": "Dit bericht filteren", + "filter_modal.title.status": "Een bericht filteren", "follow_recommendations.done": "Klaar", "follow_recommendations.heading": "Volg mensen waarvan je graag berichten wil zien! Hier zijn enkele aanbevelingen.", "follow_recommendations.lead": "Berichten van mensen die je volgt zullen in chronologische volgorde onder start verschijnen. Wees niet bang om hierin fouten te maken, want je kunt mensen op elk moment net zo eenvoudig ontvolgen!", @@ -238,7 +239,7 @@ "hashtag.column_settings.tag_mode.none": "Geen van deze", "hashtag.column_settings.tag_toggle": "Additionele tags aan deze kolom toevoegen", "hashtag.follow": "Hashtag volgen", - "hashtag.total_volume": "Total volume in the last {days, plural, one {day} other {{days} days}}", + "hashtag.total_volume": "Totale hoeveelheid in {days, plural, one {het afgelopen etmaal} other {de afgelopen {days} dagen}}", "hashtag.unfollow": "Hashtag ontvolgen", "home.column_settings.basic": "Algemeen", "home.column_settings.show_reblogs": "Boosts tonen", @@ -487,7 +488,7 @@ "status.edited_x_times": "{count, plural, one {{count} keer} other {{count} keer}} bewerkt", "status.embed": "Insluiten", "status.favourite": "Favoriet", - "status.filter": "Filter this post", + "status.filter": "Dit bericht filteren", "status.filtered": "Gefilterd", "status.hide": "Bericht verbergen", "status.history.created": "{name} plaatste dit {date}", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Niet beschikbaar", "status.unmute_conversation": "Gesprek niet langer negeren", "status.unpin": "Van profielpagina losmaken", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Wijzigingen opslaan", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Aanbeveling verwerpen", "suggestions.header": "Je bent waarschijnlijk ook geïnteresseerd in…", "tabs_bar.federated_timeline": "Globaal", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 33c06e11e..785662bb5 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -24,6 +24,7 @@ "account.follows_you": "Fylgjer deg", "account.hide_reblogs": "Gøym fremhevingar frå @{name}", "account.joined": "Vart med {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Eigarskap for denne lenkja vart sist sjekka {date}", "account.locked_info": "Denne kontoen er privat. Eigaren kan sjølv velja kven som kan fylgja han.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Ikkje tilgjengeleg", "status.unmute_conversation": "Opphev målbinding av samtalen", "status.unpin": "Løys frå profil", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Avslå framlegg", "suggestions.header": "Du er kanskje interessert i…", "tabs_bar.federated_timeline": "Føderert", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 6e2783713..29df0b2d4 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -24,6 +24,7 @@ "account.follows_you": "Følger deg", "account.hide_reblogs": "Skjul fremhevinger fra @{name}", "account.joined": "Ble med den {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Eierskap av denne lenken ble sjekket {date}", "account.locked_info": "Denne kontoens personvernstatus er satt til låst. Eieren vurderer manuelt hvem som kan følge dem.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Ikke tilgjengelig", "status.unmute_conversation": "Ikke demp samtale", "status.unpin": "Angre festing på profilen", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Utelukk forslaget", "suggestions.header": "Du er kanskje interessert i …", "tabs_bar.federated_timeline": "Felles", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index fa3ef3967..66ef6c76f 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -24,6 +24,7 @@ "account.follows_you": "Vos sèc", "account.hide_reblogs": "Rescondre los partatges de @{name}", "account.joined": "Arribèt en {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "La proprietat d’aqueste ligam foguèt verificada lo {date}", "account.locked_info": "L’estatut de privacitat del compte es configurat sus clavat. Lo proprietari causís qual pòt sègre son compte.", "account.media": "Mèdias", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Pas disponible", "status.unmute_conversation": "Tornar mostrar la conversacion", "status.unpin": "Tirar del perfil", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Regetar la suggestion", "suggestions.header": "Vos poiriá interessar…", "tabs_bar.federated_timeline": "Flux public global", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index c77444bff..bde5388c6 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -24,6 +24,7 @@ "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index e264f8055..d68c2aaa1 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -24,6 +24,7 @@ "account.follows_you": "Śledzi Cię", "account.hide_reblogs": "Ukryj podbicia od @{name}", "account.joined": "Dołączył(a) {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Własność tego odnośnika została potwierdzona {date}", "account.locked_info": "To konto jest prywatne. Właściciel ręcznie wybiera kto może go śledzić.", "account.media": "Zawartość multimedialna", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Niedostępne", "status.unmute_conversation": "Cofnij wyciszenie konwersacji", "status.unpin": "Odepnij z profilu", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Odrzuć sugestię", "suggestions.header": "Może Cię zainteresować…", "tabs_bar.federated_timeline": "Globalne", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index ab1443ece..ba349524e 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -24,6 +24,7 @@ "account.follows_you": "te segue", "account.hide_reblogs": "Ocultar boosts de @{name}", "account.joined": "Entrou em {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "link verificado em {date}", "account.locked_info": "Trancado. Seguir requer aprovação manual do perfil.", "account.media": "Mídia", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Não disponível", "status.unmute_conversation": "Dessilenciar conversa", "status.unpin": "Desafixar", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Ignorar sugestão", "suggestions.header": "Talvez seja do teu interesse…", "tabs_bar.federated_timeline": "Linha global", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 15fb991bd..d03e66572 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -24,6 +24,7 @@ "account.follows_you": "Segue-te", "account.hide_reblogs": "Esconder partilhas de @{name}", "account.joined": "Ingressou em {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "A posse deste link foi verificada em {date}", "account.locked_info": "Esta conta é privada. O proprietário revê manualmente quem a pode seguir.", "account.media": "Média", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Não disponível", "status.unmute_conversation": "Deixar de silenciar esta conversa", "status.unpin": "Não fixar no perfil", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dispensar a sugestão", "suggestions.header": "Tu podes estar interessado em…", "tabs_bar.federated_timeline": "Federada", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index ff5ec9b2a..626a8a1ed 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -24,6 +24,7 @@ "account.follows_you": "Este abonat la tine", "account.hide_reblogs": "Ascunde distribuirile de la @{name}", "account.joined": "S-a înscris în {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Proprietatea acestui link a fost verificată pe {date}", "account.locked_info": "Acest profil este privat. Această persoană aprobă manual conturile care se abonează la ea.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Indisponibil", "status.unmute_conversation": "Repornește conversația", "status.unpin": "Eliberează din profil", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Omite sugestia", "suggestions.header": "Ai putea fi interesat de…", "tabs_bar.federated_timeline": "Global", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 4c277544b..51e2d6159 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -24,6 +24,7 @@ "account.follows_you": "Подписан(а) на вас", "account.hide_reblogs": "Скрыть продвижения от @{name}", "account.joined": "Зарегистрирован(а) с {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Владение этой ссылкой было проверено {date}", "account.locked_info": "Это закрытый аккаунт. Его владелец вручную одобряет подписчиков.", "account.media": "Медиа", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Невозможно отобразить файл", "status.unmute_conversation": "Не игнорировать обсуждение", "status.unpin": "Открепить от профиля", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Удалить предложение", "suggestions.header": "Вам может быть интересно…", "tabs_bar.federated_timeline": "Глобальная", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index 2ebda63cd..e3037bde0 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -24,6 +24,7 @@ "account.follows_you": "त्वामनुसरति", "account.hide_reblogs": "@{name} मित्रस्य प्रकाशनानि छिद्यन्ताम्", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "अन्तर्जालस्थानस्यास्य स्वामित्वं परीक्षितमासीत् {date} दिने", "account.locked_info": "एतस्या लेखायाः गुह्यता \"निषिद्ध\"इति वर्तते । स्वामी स्वयञ्चिनोति कोऽनुसर्ता भवितुमर्हतीति ।", "account.media": "सामग्री", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 7482d15fe..4264eaacf 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -24,6 +24,7 @@ "account.follows_you": "Ti sighit", "account.hide_reblogs": "Cua is cumpartziduras de @{name}", "account.joined": "At aderidu su {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Sa propiedade de custu ligòngiu est istada controllada su {date}", "account.locked_info": "S'istadu de riservadesa de custu contu est istadu cunfiguradu comente blocadu. Sa persone chi tenet sa propiedade revisionat a manu chie dda podet sighire.", "account.media": "Cuntenutu multimediale", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "No est a disponimentu", "status.unmute_conversation": "Torra a ativare s'arresonada", "status.unpin": "Boga dae pitzu de su profilu", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Iscarta cussìgiu", "suggestions.header": "Est possìbile chi tèngias interessu in…", "tabs_bar.federated_timeline": "Federada", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 170c34b57..3a26e967a 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -24,7 +24,8 @@ "account.follows_you": "ඔබව අනුගමනය කරයි", "account.hide_reblogs": "@{name}සිට බූස්ට් සඟවන්න", "account.joined": "{date} එක් වී ඇත", - "account.link_verified_on": "මෙම සබැඳියේ හිමිකාරිත්වය {date} දින පරීක්ෂා කරන ලදී", + "account.languages": "Change subscribed languages", + "account.link_verified_on": "මෙම සබැඳියේ අයිතිය {date} දී පරීක්‍ෂා කෙරිණි", "account.locked_info": "මෙම ගිණුමේ රහස්‍යතා තත්ත්වය අගුලු දමා ඇත. හිමිකරු ඔවුන් අනුගමනය කළ හැක්කේ කාටදැයි හස්තීයව සමාලෝචනය කරයි.", "account.media": "මාධ්‍යය", "account.mention": "@{name} සැඳහුම", @@ -32,7 +33,7 @@ "account.mute": "@{name} නිහඬ කරන්න", "account.mute_notifications": "@{name}වෙතින් දැනුම්දීම් නිහඬ කරන්න", "account.muted": "නිහඬ කළා", - "account.posts": "ටූට්ස්", + "account.posts": "ලිපි", "account.posts_with_replies": "ටූට්ස් සහ පිළිතුරු", "account.report": "@{name} වාර්තා කරන්න", "account.requested": "අනුමැතිය බලාපොරොත්තුවෙන්", @@ -41,19 +42,19 @@ "account.statuses_counter": "{count, plural, one {{counter} ටූට්} other {{counter} ටූට්ස්}}", "account.unblock": "@{name} අනවහිර කරන්න", "account.unblock_domain": "{domain} වසම අනවහිර කරන්න", - "account.unblock_short": "අවහිර කිරීම ඉවත් කරන්න", + "account.unblock_short": "අනවහිර", "account.unendorse": "පැතිකඩෙහි විශේෂාංග නොකරන්න", "account.unfollow": "අනුගමනය නොකරන්න", "account.unmute": "@{name}නිහඬ නොකරන්න", "account.unmute_notifications": "@{name}වෙතින් දැනුම්දීම් නිහඬ නොකරන්න", - "account.unmute_short": "නිහඬ නොකරන්න", - "account_note.placeholder": "සටහන එකතු කිරීමට ක්ලික් කරන්න", + "account.unmute_short": "නොනිහඬ", + "account_note.placeholder": "සටහන යෙදීමට ඔබන්න", "admin.dashboard.daily_retention": "ලියාපදිංචි වීමෙන් පසු දිනකට පරිශීලක රඳවා ගැනීමේ අනුපාතය", "admin.dashboard.monthly_retention": "ලියාපදිංචි වීමෙන් පසු මාසය අනුව පරිශීලක රඳවා ගැනීමේ අනුපාතය", "admin.dashboard.retention.average": "සාමාන්යය", "admin.dashboard.retention.cohort": "ලියාපදිංචි වීමේ මාසය", "admin.dashboard.retention.cohort_size": "නව පරිශීලකයින්", - "alert.rate_limited.message": "කරුණාකර {retry_time, time, medium} ට පසු නැවත උත්සාහ කරන්න.", + "alert.rate_limited.message": "{retry_time, time, medium} කට පසුව උත්සාහ කරන්න.", "alert.rate_limited.title": "මිල සීමා සහිතයි", "alert.unexpected.message": "අනපේක්ෂිත දෝෂයක් ඇතිවුනා.", "alert.unexpected.title": "අපොයි!", @@ -77,23 +78,23 @@ "column.favourites": "ප්‍රියතමයන්", "column.follow_requests": "ඉල්ලීම් අනුගමනය කරන්න", "column.home": "මුල් පිටුව", - "column.lists": "ලැයිස්තුව", - "column.mutes": "සමඟ කළ පරිශීලකයන්", + "column.lists": "ලේඛන", + "column.mutes": "නිහඬ කළ අය", "column.notifications": "දැනුම්දීම්", - "column.pins": "පින් කළ දත", + "column.pins": "ඇමිණූ ලිපි", "column.public": "ෆෙඩරේටඩ් කාලරේඛාව", "column_back_button.label": "ආපසු", "column_header.hide_settings": "සැකසුම් සඟවන්න", "column_header.moveLeft_settings": "තීරුව වමට ගෙනයන්න", "column_header.moveRight_settings": "තීරුව දකුණට ගෙනයන්න", - "column_header.pin": "පින් කරන්න", + "column_header.pin": "අමුණන්න", "column_header.show_settings": "සැකසුම් පෙන්වන්න", - "column_header.unpin": "ඇමුණුම ඉවත් කරන්න", + "column_header.unpin": "ගළවන්න", "column_subheading.settings": "සැකසුම්", "community.column_settings.local_only": "ස්ථානීයව පමණයි", "community.column_settings.media_only": "මාධ්‍ය පමණයි", "community.column_settings.remote_only": "දුරස්ථව පමණයි", - "compose.language.change": "භාෂාව වෙනස් කරන්න", + "compose.language.change": "භාෂාව සංශෝධනය", "compose.language.search": "භාෂා සොයන්න...", "compose_form.direct_message_warning_learn_more": "තව දැනගන්න", "compose_form.encryption_warning": "Mastodon හි පළ කිරීම් අන්තයේ සිට අවසානය දක්වා සංකේතනය කර නොමැත. Mastodon හරහා කිසිදු සංවේදී තොරතුරක් බෙදා නොගන්න.", @@ -101,13 +102,13 @@ "compose_form.lock_disclaimer": "ඔබගේ ගිණුම {locked}නොවේ. ඔබගේ අනුගාමිකයින්ට පමණක් පළ කිරීම් බැලීමට ඕනෑම කෙනෙකුට ඔබව අනුගමනය කළ හැක.", "compose_form.lock_disclaimer.lock": "අගුළු දමා ඇත", "compose_form.placeholder": "ඔබගේ සිතුවිලි මොනවාද?", - "compose_form.poll.add_option": "තේරීමක් එකතු කරන්න", + "compose_form.poll.add_option": "තේරීමක් යොදන්න", "compose_form.poll.duration": "මත විමසීමේ කාලය", "compose_form.poll.option_placeholder": "තේරීම {number}", "compose_form.poll.remove_option": "මෙම ඉවත් කරන්න", "compose_form.poll.switch_to_multiple": "තේරීම් කිහිපයක් ඉඩ දීම සඳහා මත විමසුම වෙනස් කරන්න", "compose_form.poll.switch_to_single": "තනි තේරීමකට ඉඩ දීම සඳහා මත විමසුම වෙනස් කරන්න", - "compose_form.publish": "ප්‍රකාශ කරන්න", + "compose_form.publish": "ප්‍රකාශනය", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "වෙනස්කම් සුරකින්න", "compose_form.sensitive.hide": "{count, plural, one {මාධ්ය සංවේදී ලෙස සලකුණු කරන්න} other {මාධ්ය සංවේදී ලෙස සලකුණු කරන්න}}", @@ -115,11 +116,11 @@ "compose_form.sensitive.unmarked": "{count, plural, one {මාධ්‍ය සංවේදී ලෙස සලකුණු කර නැත} other {මාධ්‍ය සංවේදී ලෙස සලකුණු කර නැත}}", "compose_form.spoiler.marked": "අනතුරු ඇඟවීම පිටුපස පෙළ සඟවා ඇත", "compose_form.spoiler.unmarked": "ප්‍රයෝජනය සඟවා නැත", - "compose_form.spoiler_placeholder": "ඔබගේ අවවාදය මෙහි ලියන්න", + "compose_form.spoiler_placeholder": "අවවාදය මෙහි ලියන්න", "confirmation_modal.cancel": "අවලංගු", "confirmations.block.block_and_report": "අවහිර කර වාර්තා කරන්න", "confirmations.block.confirm": "අවහිර", - "confirmations.block.message": "ඔබට {name} අවහිර කිරීමට අවශ්‍ය බව ද?", + "confirmations.block.message": "ඔබට {name} අවහිර කිරීමට වුවමනා ද?", "confirmations.delete.confirm": "මකන්න", "confirmations.delete.message": "ඔබට මෙම තත්ත්වය මැකීමට අවශ්‍ය බව විශ්වාසද?", "confirmations.delete_list.confirm": "මකන්න", @@ -140,23 +141,23 @@ "confirmations.unfollow.confirm": "අනුගමනය නොකරන්න", "confirmations.unfollow.message": "ඔබට {name}අනුගමනය නොකිරීමට අවශ්‍ය බව විශ්වාසද?", "conversation.delete": "සංවාදය මකන්න", - "conversation.mark_as_read": "කියවූ ලෙස සලකුණු කරන්න", + "conversation.mark_as_read": "කියවූ බව යොදන්න", "conversation.open": "සංවාදය බලන්න", "conversation.with": "{names} සමඟ", "directory.federated": "දන්නා fediverse වලින්", - "directory.local": "{domain} පමණි", + "directory.local": "{domain} වෙතින් පමණි", "directory.new_arrivals": "නව පැමිණීම්", - "directory.recently_active": "මෑතකදී ක්රියාකාරී", + "directory.recently_active": "මෑත දී සක්‍රියයි", "embed.instructions": "පහත කේතය පිටපත් කිරීමෙන් මෙම තත්ත්වය ඔබේ වෙබ් අඩවියට ඇතුළත් කරන්න.", "embed.preview": "එය පෙනෙන්නේ කෙසේද යන්න මෙන්න:", "emoji_button.activity": "ක්‍රියාකාරකම", - "emoji_button.clear": "පැහැදිලිව", + "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.not_found": "ගැළපෙන ඉමෝජි හමු නොවිණි", "emoji_button.objects": "වස්තූන්", "emoji_button.people": "මිනිසුන්", "emoji_button.recent": "නිතර භාවිතා වූ", @@ -166,12 +167,12 @@ "emoji_button.travel": "චාරිකා සහ ස්ථාන", "empty_column.account_suspended": "ගිණුම අත්හිටුවා ඇත", "empty_column.account_timeline": "මෙහි දත් නැත!", - "empty_column.account_unavailable": "පැතිකඩ නොමැත", - "empty_column.blocks": "ඔබ තවමත් කිසිදු පරිශීලකයෙකු අවහිර කර නැත.", + "empty_column.account_unavailable": "පැතිකඩ නොතිබේ", + "empty_column.blocks": "කිසිදු පරිශීලකයෙකු අවහිර කර නැත.", "empty_column.bookmarked_statuses": "ඔබට තවමත් පිටු සලකුණු කළ මෙවලම් කිසිවක් නොමැත. ඔබ එකක් පිටු සලකුණු කළ විට, එය මෙහි පෙන්වනු ඇත.", "empty_column.community": "දේශීය කාලරේඛාව හිස් ය. පන්දුව පෙරළීමට ප්‍රසිද්ධියේ යමක් ලියන්න!", "empty_column.direct": "ඔබට තවමත් සෘජු පණිවිඩ කිසිවක් නොමැත. ඔබ එකක් යවන විට හෝ ලැබුණු විට, එය මෙහි පෙන්වනු ඇත.", - "empty_column.domain_blocks": "අවහිර කළ වසම් නොමැත.", + "empty_column.domain_blocks": "අවහිර කරන ලද වසම් නැත.", "empty_column.explore_statuses": "දැන් කිසිවක් නැඹුරු නොවේ. පසුව නැවත පරීක්ෂා කරන්න!", "empty_column.favourited_statuses": "ඔබට තවමත් ප්‍රියතම දත් කිසිවක් නැත. ඔබ කැමති එකක් වූ විට, එය මෙහි පෙන්වනු ඇත.", "empty_column.favourites": "කිසිවෙකු තවමත් මෙම මෙවලමට ප්‍රිය කර නැත. යමෙකු එසේ කළ විට, ඔවුන් මෙහි පෙන්වනු ඇත.", @@ -190,50 +191,50 @@ "error.unexpected_crash.next_steps": "පිටුව නැවුම් කිරීමට උත්සාහ කරන්න. එය උදව් නොකළහොත්, ඔබට තවමත් වෙනත් බ්‍රවුසරයක් හෝ ස්වදේශීය යෙදුමක් හරහා Mastodon භාවිත කිරීමට හැකි වේ.", "error.unexpected_crash.next_steps_addons": "ඒවා අක්‍රිය කර පිටුව නැවුම් කිරීමට උත්සාහ කරන්න. එය උදව් නොකළහොත්, ඔබට තවමත් වෙනත් බ්‍රවුසරයක් හෝ ස්වදේශීය යෙදුමක් හරහා Mastodon භාවිත කිරීමට හැකි වේ.", "errors.unexpected_crash.copy_stacktrace": "ස්ටැක්ට්රේස් පසුරු පුවරුවට පිටපත් කරන්න", - "errors.unexpected_crash.report_issue": "ගැටලුව වාර්තා කරන්න", + "errors.unexpected_crash.report_issue": "ගැටළුව වාර්තාව", "explore.search_results": "සෙවුම් ප්‍රතිඵල", - "explore.suggested_follows": "ඔයා වෙනුවෙන්", - "explore.title": "ගවේෂණය කරන්න", + "explore.suggested_follows": "ඔබට", + "explore.title": "ගවේශණය", "explore.trending_links": "පුවත්", - "explore.trending_statuses": "තනතුරු", + "explore.trending_statuses": "ලිපි", "explore.trending_tags": "හැෂ් ටැග්", "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", "filter_modal.added.context_mismatch_title": "Context mismatch!", "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.expired_title": "පෙරහන ඉකුත්ය!", "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", + "filter_modal.added.review_and_configure_title": "පෙරහන් සැකසුම්", + "filter_modal.added.settings_link": "සැකසුම් පිටුව", "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", "filter_modal.added.title": "Filter added!", "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.expired": "ඉකුත්ය", + "filter_modal.select_filter.prompt_new": "නව ප්‍රවර්ගය: {name}", + "filter_modal.select_filter.search": "සොයන්න හෝ සාදන්න", "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", "filter_modal.select_filter.title": "Filter this post", "filter_modal.title.status": "Filter a post", - "follow_recommendations.done": "කළා", + "follow_recommendations.done": "අහවරයි", "follow_recommendations.heading": "ඔබ පළ කිරීම් බැලීමට කැමති පුද්ගලයින් අනුගමනය කරන්න! මෙන්න යෝජනා කිහිපයක්.", "follow_recommendations.lead": "ඔබ අනුගමන කරන පුද්ගලයින්ගේ පළ කිරීම් ඔබගේ නිවසේ සංග්‍රහයේ කාලානුක්‍රමික අනුපිළිවෙලට පෙන්වනු ඇත. වැරදි කිරීමට බිය නොවන්න, ඔබට ඕනෑම වේලාවක පහසුවෙන් මිනිසුන් අනුගමනය කළ නොහැක!", "follow_request.authorize": "අවසරලත්", - "follow_request.reject": "ප්රතික්ෂේප", + "follow_request.reject": "ප්‍රතික්‍ෂේප", "follow_requests.unlocked_explanation": "ඔබගේ ගිණුම අගුලු දමා නොතිබුණද, {domain} කාර්ය මණ්ඩලය සිතුවේ ඔබට මෙම ගිණුම් වලින් ලැබෙන ඉල්ලීම් හස්තීයව සමාලෝචනය කිරීමට අවශ්‍ය විය හැකි බවයි.", "generic.saved": "සුරැකිණි", "getting_started.developers": "සංවර්ධකයින්", "getting_started.directory": "පැතිකඩ නාමාවලිය", "getting_started.documentation": "ප්‍රලේඛනය", "getting_started.heading": "ඇරඹේ", - "getting_started.invite": "මිනිසුන්ට ආරාධනා කරන්න", + "getting_started.invite": "මිනිසුන්ට ආරාධනය", "getting_started.open_source_notice": "Mastodon යනු විවෘත කේත මෘදුකාංගයකි. ඔබට GitHub හි {github}ට දායක වීමට හෝ ගැටළු වාර්තා කිරීමට හැකිය.", "getting_started.security": "ගිණුමේ සැකසුම්", "getting_started.terms": "සේවාවේ කොන්දේසි", "hashtag.column_header.tag_mode.all": "සහ {additional}", "hashtag.column_header.tag_mode.any": "හෝ {additional}", "hashtag.column_header.tag_mode.none": "{additional}නොමැතිව", - "hashtag.column_settings.select.no_options_message": "යෝජනා කිසිවක් හමු නොවිණි", + "hashtag.column_settings.select.no_options_message": "යෝජනා හමු නොවිණි", "hashtag.column_settings.select.placeholder": "හැෂ් ටැග්…ඇතුලත් කරන්න", - "hashtag.column_settings.tag_mode.all": "මේ වගේ", + "hashtag.column_settings.tag_mode.all": "මේ සියල්ලම", "hashtag.column_settings.tag_mode.any": "ඇතුළත් එකක්", "hashtag.column_settings.tag_mode.none": "මේ කිසිවක් නැත", "hashtag.column_settings.tag_toggle": "මෙම තීරුවේ අමතර ටැග් ඇතුළත් කරන්න", @@ -242,7 +243,7 @@ "hashtag.unfollow": "Unfollow hashtag", "home.column_settings.basic": "මූලික", "home.column_settings.show_reblogs": "බූස්ට් පෙන්වන්න", - "home.column_settings.show_replies": "ප්රතිචාර පෙන්වන්න", + "home.column_settings.show_replies": "පිළිතුරු පෙන්වන්න", "home.hide_announcements": "නිවේදන සඟවන්න", "home.show_announcements": "නිවේදන පෙන්වන්න", "intervals.full.days": "{number, plural, one {# දින} other {# දින}}", @@ -262,7 +263,7 @@ "keyboard_shortcuts.federated": "ෆෙඩරේටඩ් කාලරාමුව විවෘත කිරීමට", "keyboard_shortcuts.heading": "යතුරුපුවරු කෙටිමං", "keyboard_shortcuts.home": "නිවසේ කාලරේඛාව විවෘත කිරීමට", - "keyboard_shortcuts.hotkey": "උණුසුම් යතුර", + "keyboard_shortcuts.hotkey": "උණු යතුර", "keyboard_shortcuts.legend": "මෙම පුරාවෘත්තය ප්රදර්ශනය කිරීමට", "keyboard_shortcuts.local": "දේශීය කාලරේඛාව විවෘත කිරීමට", "keyboard_shortcuts.mention": "කතුවරයා සඳහන් කිරීමට", @@ -289,10 +290,10 @@ "lightbox.previous": "පෙර", "limited_account_hint.action": "කෙසේ හෝ පැතිකඩ පෙන්වන්න", "limited_account_hint.title": "මෙම පැතිකඩ ඔබගේ සේවාදායකයේ පරිපාලකයින් විසින් සඟවා ඇත.", - "lists.account.add": "ලැයිස්තුවට එකතු කරන්න", - "lists.account.remove": "ලැයිස්තුවෙන් ඉවත්", - "lists.delete": "ලැයිස්තුව මකන්න", - "lists.edit": "ලැයිස්තුව සංස්කරණය කරන්න", + "lists.account.add": "ලේඛනයට දමන්න", + "lists.account.remove": "ලේඛනයෙන් ඉවතලන්න", + "lists.delete": "ලේඛනය මකන්න", + "lists.edit": "ලේඛනය සංස්කරණය", "lists.edit.submit": "මාතෘකාව වෙනස් කරන්න", "lists.new.create": "ලැයිස්තුව එකතු කරන්න", "lists.new.title_placeholder": "නව ලැයිස්තු මාතෘකාව", @@ -301,37 +302,37 @@ "lists.replies_policy.none": "කිසිවෙක් නැත", "lists.replies_policy.title": "පිළිතුරු පෙන්වන්න:", "lists.search": "ඔබ අනුගමනය කරන පුද්ගලයින් අතර සොයන්න", - "lists.subheading": "ඔබේ ලැයිස්තු", + "lists.subheading": "ඔබගේ ලේඛන", "load_pending": "{count, plural, one {# නව අයිතමයක්} other {නව අයිතම #ක්}}", "loading_indicator.label": "පූරණය වෙමින්...", "media_gallery.toggle_visible": "{number, plural, one {රූපය සඟවන්න} other {පින්තූර සඟවන්න}}", - "missing_indicator.label": "හමු වුණේ නැහැ", - "missing_indicator.sublabel": "මෙම සම්පත සොයාගත නොහැකි විය", - "mute_modal.duration": "කාල සීමාව", + "missing_indicator.label": "හමු නොවිණි", + "missing_indicator.sublabel": "මෙම සම්පත හමු නොවිණි", + "mute_modal.duration": "පරාසය", "mute_modal.hide_notifications": "මෙම පරිශීලකයාගෙන් දැනුම්දීම් සඟවන්නද?", "mute_modal.indefinite": "අවිනිශ්චිත", "navigation_bar.apps": "ජංගම යෙදුම්", - "navigation_bar.blocks": "අවහිර කළ පරිශීලකයින්", - "navigation_bar.bookmarks": "පොත් යොමු කරන්න", + "navigation_bar.blocks": "අවහිර කළ අය", + "navigation_bar.bookmarks": "පොත්යොමු", "navigation_bar.community_timeline": "දේශීය කාලරේඛාව", "navigation_bar.compose": "නව ටූට් සාදන්න", "navigation_bar.direct": "සෘජු පණිවිඩ", "navigation_bar.discover": "සොයා ගන්න", - "navigation_bar.domain_blocks": "සැඟවුණු වසම්", + "navigation_bar.domain_blocks": "අවහිර කළ වසම්", "navigation_bar.edit_profile": "පැතිකඩ සංස්කරණය", "navigation_bar.explore": "ගවේෂණය කරන්න", "navigation_bar.favourites": "ප්‍රියතමයන්", - "navigation_bar.filters": "සමඟ කළ වචන", - "navigation_bar.follow_requests": "ඉල්ලීම් අනුගමනය කරන්න", - "navigation_bar.follows_and_followers": "අනුගාමිකයින් සහ අනුගාමිකයින්", - "navigation_bar.info": "මෙම සේවාදායකය පිළිබඳව", - "navigation_bar.keyboard_shortcuts": "උණුසුම් යතුරු", - "navigation_bar.lists": "ලැයිස්තු", + "navigation_bar.filters": "නිහඬ කළ වචන", + "navigation_bar.follow_requests": "අනුගමන ඉල්ලීම්", + "navigation_bar.follows_and_followers": "අනුගමනය හා අනුගාමිකයින්", + "navigation_bar.info": "මෙම සේවාදායකය ගැන", + "navigation_bar.keyboard_shortcuts": "උණු යතුරු", + "navigation_bar.lists": "ලේඛන", "navigation_bar.logout": "නික්මෙන්න", - "navigation_bar.mutes": "නිශ්ශබ්ද පරිශීලකයන්", + "navigation_bar.mutes": "නිහඬ කළ අය", "navigation_bar.personal": "පුද්ගලික", - "navigation_bar.pins": "ඇලවූ දත්", - "navigation_bar.preferences": "මනාප", + "navigation_bar.pins": "ඇමිණූ ලිපි", + "navigation_bar.preferences": "අභිප්‍රේත", "navigation_bar.public_timeline": "ෆෙඩරේටඩ් කාලරේඛාව", "navigation_bar.security": "ආරක්ෂාව", "notification.admin.report": "{name} වාර්තා {target}", @@ -340,46 +341,46 @@ "notification.follow": "{name} ඔබව අනුගමනය කළා", "notification.follow_request": "{name} ඔබව අනුගමනය කිරීමට ඉල්ලා ඇත", "notification.mention": "{name} ඔබව සඳහන් කර ඇත", - "notification.own_poll": "ඔබේ මත විමසුම අවසන් වී ඇත", - "notification.poll": "ඔබ ඡන්දය දුන් මත විමසුමක් අවසන් වී ඇත", + "notification.own_poll": "ඔබගේ මත විමසුම නිමයි", + "notification.poll": "ඔබ ඡන්දය දුන් මත විමසුමක් නිමයි", "notification.reblog": "{name} ඔබේ තත්ත්වය ඉහළ නැංවීය", "notification.status": "{name} දැන් පළ කළා", "notification.update": "{name} පළ කිරීමක් සංස්කරණය කළා", - "notifications.clear": "දැනුම්දීම් හිස්කරන්න", + "notifications.clear": "දැනුම්දීම් මකන්න", "notifications.clear_confirmation": "ඔබට ඔබගේ සියලු දැනුම්දීම් ස්ථිරවම හිස් කිරීමට අවශ්‍ය බව විශ්වාසද?", "notifications.column_settings.admin.report": "නව වාර්තා:", - "notifications.column_settings.admin.sign_up": "නව ලියාපදිංචි කිරීම්:", - "notifications.column_settings.alert": "ඩෙස්ක්ටොප් දැනුම්දීම්", + "notifications.column_settings.admin.sign_up": "නව ලියාපදිංචි:", + "notifications.column_settings.alert": "වැඩතල දැනුම්දීම්", "notifications.column_settings.favourite": "ප්‍රියතමයන්:", - "notifications.column_settings.filter_bar.advanced": "සියලුම කාණ්ඩ පෙන්වන්න", + "notifications.column_settings.filter_bar.advanced": "සියළු ප්‍රවර්ග පෙන්වන්න", "notifications.column_settings.filter_bar.category": "ඉක්මන් පෙරහන් තීරුව", "notifications.column_settings.filter_bar.show_bar": "පෙරහන් තීරුව පෙන්වන්න", "notifications.column_settings.follow": "නව අනුගාමිකයින්:", - "notifications.column_settings.follow_request": "නව පහත ඉල්ලීම්:", + "notifications.column_settings.follow_request": "නව අනුගමන ඉල්ලීම්:", "notifications.column_settings.mention": "සැඳහුම්:", "notifications.column_settings.poll": "ඡන්ද ප්‍රතිඵල:", "notifications.column_settings.push": "තල්ලු දැනුම්දීම්", "notifications.column_settings.reblog": "තල්ලු කිරීම්:", "notifications.column_settings.show": "තීරුවෙහි පෙන්වන්න", - "notifications.column_settings.sound": "ශබ්දය සිදු කරන ලදී", - "notifications.column_settings.status": "නව දත්:", + "notifications.column_settings.sound": "ශබ්දය වාදනය", + "notifications.column_settings.status": "නව ලිපි:", "notifications.column_settings.unread_notifications.category": "නොකියවූ දැනුම්දීම්", "notifications.column_settings.unread_notifications.highlight": "නොකියවූ දැනුම්දීම් ඉස්මතු කරන්න", - "notifications.column_settings.update": "සංස්කරණ:", + "notifications.column_settings.update": "සංශෝධන:", "notifications.filter.all": "සියල්ල", "notifications.filter.boosts": "බූස්ට් කරයි", "notifications.filter.favourites": "ප්‍රියතමයන්", - "notifications.filter.follows": "පහත සඳහන්", + "notifications.filter.follows": "අනුගමනය", "notifications.filter.mentions": "සැඳහුම්", "notifications.filter.polls": "ඡන්ද ප්‍රතිඵල", "notifications.filter.statuses": "ඔබ අනුගමනය කරන පුද්ගලයින්ගෙන් යාවත්කාලීන", "notifications.grant_permission": "අවසර දෙන්න.", "notifications.group": "දැනුම්දීම් {count}", - "notifications.mark_as_read": "දැනුම්දීමක්ම කියවූ ලෙස සලකුණු කරන්න", + "notifications.mark_as_read": "සියළු දැනුම්දීම් කියවූ බව යොදන්න", "notifications.permission_denied": "කලින් ප්‍රතික්ෂේප කළ බ්‍රවුසර අවසර ඉල්ලීම හේතුවෙන් ඩෙස්ක්ටොප් දැනුම්දීම් නොමැත", "notifications.permission_denied_alert": "බ්‍රවුසර අවසරය පෙර ප්‍රතික්ෂේප කර ඇති බැවින්, ඩෙස්ක්ටොප් දැනුම්දීම් සබල කළ නොහැක", "notifications.permission_required": "අවශ්‍ය අවසරය ලබා දී නොමැති නිසා ඩෙස්ක්ටොප් දැනුම්දීම් නොමැත.", - "notifications_permission_banner.enable": "ඩෙස්ක්ටොප් දැනුම්දීම් සබල කරන්න", + "notifications_permission_banner.enable": "වැඩතල දැනුම්දීම් සබල කරන්න", "notifications_permission_banner.how_to_control": "Mastodon විවෘතව නොමැති විට දැනුම්දීම් ලබා ගැනීමට, ඩෙස්ක්ටොප් දැනුම්දීම් සබල කරන්න. ඔබට ඒවා සක්‍රිය කළ පසු ඉහත {icon} බොත්තම හරහා ඩෙස්ක්ටොප් දැනුම්දීම් ජනනය කරන්නේ කුමන ආකාරයේ අන්තර්ක්‍රියාද යන්න නිවැරදිව පාලනය කළ හැක.", "notifications_permission_banner.title": "කිසිම දෙයක් අතපසු කරන්න එපා", "picture_in_picture.restore": "ආපහු දාන්න", @@ -387,59 +388,59 @@ "poll.refresh": "නැවුම් කරන්න", "poll.total_people": "{count, plural, one {# පුද්ගලයා} other {# මහජන}}", "poll.total_votes": "{count, plural, one {# ඡන්දය} other {ඡන්ද #}}", - "poll.vote": "මනාපය", + "poll.vote": "ඡන්දය", "poll.voted": "ඔබ මෙම පිළිතුරට ඡන්දය දුන්නා", "poll.votes": "{votes, plural, one {# ඡන්දය} other {ඡන්ද #}}", - "poll_button.add_poll": "මත විමසුමක් එක් කරන්න", - "poll_button.remove_poll": "ඡන්ද විමසීම ඉවත් කරන්න", - "privacy.change": "තත්ත්‍වයේ පෞද්ගලිකත්වය සීරුමාරු කරන්න", - "privacy.direct.long": "සඳහන් කළ පරිශීලකයින් සඳහා පමණක් දෘශ්‍යමාන වේ", - "privacy.direct.short": "සඳහන් කළ පුද්ගලයන් පමණි", - "privacy.private.long": "අනුගාමිකයින් සඳහා පමණක් දෘශ්‍යමාන වේ", + "poll_button.add_poll": "මත විමසුමක් යොදන්න", + "poll_button.remove_poll": "මත විමසුම ඉවතලන්න", + "privacy.change": "ලිපියේ රහස්‍යතාව සංශෝධනය", + "privacy.direct.long": "සඳහන් කළ අයට දිස්වෙයි", + "privacy.direct.short": "සඳහන් කළ අයට පමණි", + "privacy.private.long": "අනුගාමිකයින්ට දිස්වේ", "privacy.private.short": "අනුගාමිකයින් පමණි", - "privacy.public.long": "සැමට දෘශ්‍යමානයි", - "privacy.public.short": "ප්රසිද්ධ", + "privacy.public.long": "සැමට දිස්වෙයි", + "privacy.public.short": "ප්‍රසිද්ධ", "privacy.unlisted.long": "සැමට දෘශ්‍යමාන, නමුත් සොයාගැනීමේ විශේෂාංග වලින් ඉවත් විය", "privacy.unlisted.short": "ලැයිස්තුගත නොකළ", "refresh": "නැවුම් කරන්න", "regeneration_indicator.label": "පූරණය වෙමින්…", "regeneration_indicator.sublabel": "ඔබේ නිවසේ පෝෂණය සූදානම් වෙමින් පවතී!", - "relative_time.days": "{number}d", + "relative_time.days": "ද. {number}", "relative_time.full.days": "{number, plural, one {# දින} other {# දින}} පෙර", - "relative_time.full.hours": "{number, plural, one {# පැය} other {# පැය}} පෙර", + "relative_time.full.hours": "{number, plural, one {පැය #} other {පැය #}} කට පෙර", "relative_time.full.just_now": "මේ දැන්", - "relative_time.full.minutes": "{number, plural, one {විනාඩි #} other {# මිනිත්තු}} පෙර", - "relative_time.full.seconds": "{number, plural, one {# දෙවැනි} other {# තත්පර}} පෙර", + "relative_time.full.minutes": "{number, plural, one {විනාඩි #} other {විනාඩි #}} කට පෙර", + "relative_time.full.seconds": "{number, plural, one {තත්පර #} other {තත්පර #}} කට පෙර", "relative_time.hours": "පැය {number}", "relative_time.just_now": "දැන්", - "relative_time.minutes": "මීටර් {number}", - "relative_time.seconds": "{number}තත්", + "relative_time.minutes": "වි. {number}", + "relative_time.seconds": "තත්. {number}", "relative_time.today": "අද", "reply_indicator.cancel": "අවලංගු කරන්න", - "report.block": "අවහිර කරන්න", + "report.block": "අවහිර", "report.block_explanation": "ඔබට ඔවුන්ගේ පෝස්ට් නොපෙනේ. ඔවුන්ට ඔබේ පළ කිරීම් බැලීමට හෝ ඔබව අනුගමනය කිරීමට නොහැකි වනු ඇත. ඔවුන් අවහිර කර ඇති බව ඔවුන්ට පැවසිය හැකිය.", "report.categories.other": "වෙනත්", - "report.categories.spam": "ආයාචිත තැපැල්", + "report.categories.spam": "ආයාචිත", "report.categories.violation": "අන්තර්ගතය සේවාදායක නීති එකක් හෝ කිහිපයක් උල්ලංඝනය කරයි", "report.category.subtitle": "හොඳම ගැලපීම තෝරන්න", "report.category.title": "මෙම {type}සමඟ සිදුවන්නේ කුමක්දැයි අපට කියන්න", "report.category.title_account": "පැතිකඩ", "report.category.title_status": "තැපැල්", - "report.close": "කළා", + "report.close": "අහවරයි", "report.comment.title": "අප දැනගත යුතු යැයි ඔබ සිතන තවත් යමක් තිබේද?", "report.forward": "{target}වෙත යොමු කරන්න", "report.forward_hint": "ගිණුම වෙනත් සේවාදායකයකින්. වාර්තාවේ නිර්නාමික පිටපතක් එතනටත් එවන්න?", - "report.mute": "නිහඬ කරන්න", + "report.mute": "නිහඬ", "report.mute_explanation": "ඔබට ඔවුන්ගේ පෝස්ට් නොපෙනේ. ඔවුන්ට තවමත් ඔබව අනුගමනය කිරීමට සහ ඔබේ පළ කිරීම් දැකීමට හැකි අතර ඒවා නිශ්ශබ්ද කර ඇති බව නොදැනේ.", "report.next": "ඊළඟ", "report.placeholder": "අමතර අදහස්", - "report.reasons.dislike": "මම ඒකට කැමති නැහැ", + "report.reasons.dislike": "මම එයට අකැමතියි", "report.reasons.dislike_description": "ඒක බලන්න ඕන දෙයක් නෙවෙයි", "report.reasons.other": "ඒක වෙන දෙයක්", "report.reasons.other_description": "ගැටළුව වෙනත් වර්ග වලට නොගැලපේ", - "report.reasons.spam": "එය අයාචිත තැපැල් ය", + "report.reasons.spam": "එය අයාචිතයි", "report.reasons.spam_description": "අනිෂ්ට සබැඳි, ව්‍යාජ නියැලීම, හෝ පුනරාවර්තන පිළිතුරු", - "report.reasons.violation": "එය සේවාදායක නීති උල්ලංඝනය කරයි", + "report.reasons.violation": "එය සේවාදායකයේ නීති කඩ කරයි", "report.reasons.violation_description": "එය නිශ්චිත නීති කඩ කරන බව ඔබ දන්නවා", "report.rules.subtitle": "අදාළ සියල්ල තෝරන්න", "report.rules.title": "කුමන නීති උල්ලංඝනය කරන්නේද?", @@ -449,14 +450,14 @@ "report.target": "වාර්තාව {target}", "report.thanks.take_action": "Mastodon හි ඔබ දකින දේ පාලනය කිරීම සඳහා ඔබේ විකල්ප මෙන්න:", "report.thanks.take_action_actionable": "අපි මෙය සමාලෝචනය කරන අතරතුර, ඔබට @{name}ට එරෙහිව පියවර ගත හැක:", - "report.thanks.title": "මේක බලන්න ඕන නැද්ද?", + "report.thanks.title": "මෙය නොපෙන්විය යුතුද?", "report.thanks.title_actionable": "වාර්තා කිරීමට ස්තූතියි, අපි මේ ගැන සොයා බලමු.", "report.unfollow": "@{name}අනුගමනය නොකරන්න", "report.unfollow_explanation": "ඔබ මෙම ගිණුම අනුගමනය කරයි. ඔබේ නිවසේ සංග්‍රහයේ ඔවුන්ගේ පළ කිරීම් තවදුරටත් නොදැකීමට, ඒවා අනුගමනය නොකරන්න.", "report_notification.attached_statuses": "{count, plural, one {{count} තැපැල්} other {{count} තනතුරු}} අමුණා ඇත", "report_notification.categories.other": "වෙනත්", - "report_notification.categories.spam": "ආයාචිත තැපැල්", - "report_notification.categories.violation": "රීති උල්ලංඝනය කිරීම", + "report_notification.categories.spam": "ආයාචිත", + "report_notification.categories.violation": "නීතිය කඩ කිරීම", "report_notification.open": "විවෘත වාර්තාව", "search.placeholder": "සොයන්න", "search_popout.search_format": "උසස් සෙවුම් ආකෘතිය", @@ -466,63 +467,66 @@ "search_popout.tips.text": "සරල පෙළ ගැළපෙන සංදර්ශක නම්, පරිශීලක නාම සහ හැෂ් ටැග් ලබා දෙයි", "search_popout.tips.user": "පරිශීලක", "search_results.accounts": "මිනිසුන්", - "search_results.all": "සියලුම", + "search_results.all": "සියල්ල", "search_results.hashtags": "හැෂ් ටැග්", "search_results.nothing_found": "මෙම සෙවුම් පද සඳහා කිසිවක් සොයාගත නොහැකි විය", - "search_results.statuses": "ටූට්ස්", + "search_results.statuses": "ලිපි", "search_results.statuses_fts_disabled": "මෙම Mastodon සේවාදායකයේ ඒවායේ අන්තර්ගතය අනුව මෙවලම් සෙවීම සබල නොවේ.", "search_results.total": "{count, number} {count, plural, one {ප්රතිඵලය} other {ප්රතිපල}}", "status.admin_account": "@{name}සඳහා මධ්‍යස්ථ අතුරුමුහුණත විවෘත කරන්න", "status.admin_status": "මධ්‍යස්ථ අතුරුමුහුණතෙහි මෙම තත්ත්වය විවෘත කරන්න", - "status.block": "@{name} අවහිර කරන්න", - "status.bookmark": "පොත් යොමුව", + "status.block": "@{name} අවහිර", + "status.bookmark": "පොත්යොමුවක්", "status.cancel_reblog_private": "Unboost", "status.cannot_reblog": "මෙම තනතුර වැඩි කළ නොහැක", "status.copy": "තත්වයට සබැඳිය පිටපත් කරන්න", "status.delete": "මකන්න", - "status.detailed_status": "සවිස්තරාත්මක සංවාද දසුන", - "status.direct": "@{name} සෘජු පණිවිඩය", - "status.edit": "සංස්කරණය කරන්න", - "status.edited": "සංස්කරණය {date}", - "status.edited_x_times": "සංස්කරණය කළා {count, plural, one {{count} කාලය} other {{count} වාර}}", - "status.embed": "එබ්බවූ", + "status.detailed_status": "විස්තරාත්මක සංවාද දැක්ම", + "status.direct": "@{name} සෘජු පණිවිඩයක්", + "status.edit": "සංස්කරණය", + "status.edited": "සංශෝධිතයි {date}", + "status.edited_x_times": "සංශෝධිතයි {count, plural, one {වාර {count}} other {වාර {count}}}", + "status.embed": "කාවැද්දූ", "status.favourite": "ප්‍රියතම", "status.filter": "Filter this post", "status.filtered": "පෙරන ලද", "status.hide": "Hide toot", "status.history.created": "{name} නිර්මාණය {date}", "status.history.edited": "{name} සංස්කරණය {date}", - "status.load_more": "තව පූරණය කරන්න", - "status.media_hidden": "මාධ්‍ය සංගුවා ඇත", + "status.load_more": "තව පූරණය", + "status.media_hidden": "මාධ්‍ය සඟවා ඇත", "status.mention": "@{name} සැඳහුම", "status.more": "තව", - "status.mute": "@{name} කරන්න", - "status.mute_conversation": "සංවාදයෙන් කරන්න", - "status.open": "මෙම තත්ත්වය පුළුල් කරන්න", - "status.pin": "පැතිකඩ මත අමුණන්න", - "status.pinned": "පින් කළ දත", + "status.mute": "@{name} නිහඬව", + "status.mute_conversation": "සංවාදය නිහඬව", + "status.open": "මෙම ලිපිය විහිදන්න", + "status.pin": "පැතිකඩට අමුණන්න", + "status.pinned": "ඇමිණූ ලිපියකි", "status.read_more": "තව කියවන්න", "status.reblog": "බූස්ට් කරන්න", "status.reblog_private": "මුල් දෘශ්‍යතාව සමඟ වැඩි කරන්න", "status.reblogged_by": "{name} වැඩි කරන ලදී", "status.reblogs.empty": "තාම කවුරුත් මේ toot එක boost කරලා නැහැ. යමෙකු එසේ කළ විට, ඔවුන් මෙහි පෙන්වනු ඇත.", "status.redraft": "මකන්න සහ නැවත කෙටුම්පත", - "status.remove_bookmark": "පොත්යොමුව ඉවත් කරන්න", + "status.remove_bookmark": "පොත්යොමුව ඉවතලන්න", "status.reply": "පිළිතුරු", "status.replyAll": "ත්‍රෙඩ් එකට පිළිතුරු දෙන්න", - "status.report": "@{name} වාර්තා කරන්න", + "status.report": "@{name} වාර්තාව", "status.sensitive_warning": "සංවේදී අන්තර්ගතයකි", "status.share": "බෙදාගන්න", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "කෙසේ වුවද පෙන්වන්න", "status.show_less": "අඩුවෙන් පෙන්වන්න", - "status.show_less_all": "සියල්ලටම අඩුවෙන් පෙන්වන්න", - "status.show_more": "තව පෙන්වන්න", - "status.show_more_all": "සියල්ල සඳහා තවත් පෙන්වන්න", + "status.show_less_all": "සියල්ල අඩුවෙන් පෙන්වන්න", + "status.show_more": "තවත් පෙන්වන්න", + "status.show_more_all": "සියල්ල වැඩියෙන් පෙන්වන්න", "status.show_thread": "නූල් පෙන්වන්න", - "status.uncached_media_warning": "ලද නොහැක", - "status.unmute_conversation": "සංවාදය නිහඬ නොකරන්න", - "status.unpin": "පැතිකඩෙන් ඉවත් කරන්න", - "suggestions.dismiss": "යෝජනාව ඉවත ලන්න", + "status.uncached_media_warning": "නොතිබේ", + "status.unmute_conversation": "සංවාදය නොනිහඬ", + "status.unpin": "පැතිකඩෙන් ගළවන්න", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", + "suggestions.dismiss": "යෝජනාව ඉවතලන්න", "suggestions.header": "ඔබ…ගැන උනන්දු විය හැකිය", "tabs_bar.federated_timeline": "ෆෙඩරල්", "tabs_bar.home": "මුල් පිටුව", @@ -536,19 +540,19 @@ "time_remaining.seconds": "{number, plural, one {# දෙවැනි} other {# තත්පර}} අත්හැරියා", "timeline_hint.remote_resource_not_displayed": "වෙනත් සේවාදායකයන්ගෙන් {resource} දර්ශනය නොවේ.", "timeline_hint.resources.followers": "අනුගාමිකයින්", - "timeline_hint.resources.follows": "පහත සඳහන්", - "timeline_hint.resources.statuses": "පැරණි දත්", + "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} days}}", "trends.trending_now": "දැන් ප්‍රවණතාවය", "ui.beforeunload": "ඔබ Mastodon හැර ගියහොත් ඔබේ කෙටුම්පත නැති වනු ඇත.", "units.short.billion": "{count}බී", "units.short.million": "{count}එම්", "units.short.thousand": "{count}කි", - "upload_area.title": "උඩුගත කිරීමට ඇද දමන්න", - "upload_button.label": "පින්තූර, වීඩියෝවක් හෝ ශ්‍රව්‍ය ගොනුවක් එක් කරන්න", - "upload_error.limit": "ගොනුව උඩුගත කළ හැකි සීමාවන් ඇත.", - "upload_error.poll": "ඡන්ද විමසීම් සමඟ ගොනු උඩුගත කිරීමට අවසර නැත.", - "upload_form.audio_description": "ශ්‍රවණාබාධ ඇති පුද්ගලයන් සඳහා විස්තර කරන්න", + "upload_area.title": "උඩුගතයට ඇද දමන්න", + "upload_button.label": "රූප, දෘශ්‍යක හෝ හඬපට යොදන්න", + "upload_error.limit": "සීමාව ඉක්මවා ඇත.", + "upload_error.poll": "මත විමසුම් සමඟ ගොනු යෙදීමට ඉඩ නොදේ.", + "upload_form.audio_description": "නොඇසෙන අය සඳහා විස්තර කරන්න", "upload_form.description": "දෘශ්‍යාබාධිතයන් සඳහා විස්තර කරන්න", "upload_form.description_missing": "විස්තරයක් එක් කර නැත", "upload_form.edit": "සංස්කරණය", @@ -557,23 +561,23 @@ "upload_form.video_description": "ශ්‍රවණාබාධ හෝ දෘශ්‍යාබාධිත පුද්ගලයන් සඳහා විස්තර කරන්න", "upload_modal.analyzing_picture": "පින්තූරය විශ්ලේෂණය කරමින්…", "upload_modal.apply": "යොදන්න", - "upload_modal.applying": "…යෙදීම", - "upload_modal.choose_image": "පින්තුරයක් තෝරාගන්න", - "upload_modal.description_placeholder": "කඩිසර හා හිවලෙක් කම්මැලි බල්ලා මතින් පනී", - "upload_modal.detect_text": "පින්තූරයෙන් හඳුනාගන්න", + "upload_modal.applying": "යොදමින්…", + "upload_modal.choose_image": "රූපයක් තෝරන්න", + "upload_modal.description_placeholder": "කඩිසර දුඹුරු හිවලෙක් කම්මැලි බල්ලා මතින් පනී", + "upload_modal.detect_text": "රූපයෙහි පෙළ අනාවරණය", "upload_modal.edit_media": "මාධ්‍ය සංස්කරණය", "upload_modal.hint": "සියලුම සිඟිති රූ මත සැම විටම දර්ශනය වන නාභි ලක්ෂ්‍යය තේරීමට පෙරදසුනෙහි රවුම ක්ලික් කරන්න හෝ අදින්න.", "upload_modal.preparing_ocr": "OCR…සූදානම් කරමින්", "upload_modal.preview_label": "පෙරදසුන ({ratio})", "upload_progress.label": "උඩුගත වෙමින්...", - "video.close": "දෘශ්‍යයක් වසන්න", + "video.close": "දෘශ්‍යකය වසන්න", "video.download": "ගොනුව බාගන්න", "video.exit_fullscreen": "පූර්ණ තිරයෙන් පිටවන්න", - "video.expand": "වීඩියෝව දිග හරින්න", + "video.expand": "දෘශ්‍යකය විහිදන්න", "video.fullscreen": "පූර්ණ තිරය", - "video.hide": "දෘශ්‍ය‍ය සඟවන්න", - "video.mute": "ශබ්දය නිශ්ශබ්ද කරන්න", + "video.hide": "දෘශ්‍යකය සඟවන්න", + "video.mute": "ශබ්දය නිහඬ", "video.pause": "විරාමය", "video.play": "ධාවනය", - "video.unmute": "ශබ්දය නිශ්ශබ්ද කරන්න" + "video.unmute": "ශබ්දය නොනිහඬ" } diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 128858646..629c93ca9 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -24,6 +24,7 @@ "account.follows_you": "Nasleduje ťa", "account.hide_reblogs": "Skry vyzdvihnutia od @{name}", "account.joined": "Pridal/a sa v {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Vlastníctvo tohto odkazu bolo skontrolované {date}", "account.locked_info": "Stav súkromia pre tento účet je nastavený na zamknutý. Jeho vlastník sám prehodnocuje, kto ho môže sledovať.", "account.media": "Médiá", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Nedostupný/é", "status.unmute_conversation": "Prestaň si nevšímať konverzáciu", "status.unpin": "Odopni z profilu", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Zavrhni návrh", "suggestions.header": "Mohlo by ťa zaujímať…", "tabs_bar.federated_timeline": "Federovaná", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 89894acf8..1f1f0370f 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -24,6 +24,7 @@ "account.follows_you": "Vam sledi", "account.hide_reblogs": "Skrij izpostavitve od @{name}", "account.joined": "Pridružen/a {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Lastništvo te povezave je bilo preverjeno {date}", "account.locked_info": "Stanje zasebnosti računa je nastavljeno na zaklenjeno. Lastnik ročno pregleda, kdo ga lahko spremlja.", "account.media": "Mediji", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Ni na voljo", "status.unmute_conversation": "Odtišaj pogovor", "status.unpin": "Odpni iz profila", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Zavrni predlog", "suggestions.header": "Morda bi vas zanimalo…", "tabs_bar.federated_timeline": "Združeno", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 0b7fabb45..0a485aaae 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -24,6 +24,7 @@ "account.follows_you": "Ju ndjek", "account.hide_reblogs": "Fshih përforcime nga @{name}", "account.joined": "U bë pjesë më {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Pronësia e kësaj lidhjeje qe kontrolluar më {date}", "account.locked_info": "Gjendja e privatësisë së kësaj llogarie është caktuar si e kyçur. I zoti merr dorazi në shqyrtim cilët mund ta ndjekin.", "account.media": "Media", @@ -197,22 +198,22 @@ "explore.trending_links": "Lajme", "explore.trending_statuses": "Postime", "explore.trending_tags": "Hashtagë", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Kjo kategori filtrash nuk aplikohet për kontekstin nën të cilin po merreni me këtë postim. Nëse doni që postimi të filtrohet edhe në këtë kontekst, do t’ju duhet të përpunoni filtrin.", + "filter_modal.added.context_mismatch_title": "Mospërputhje kontekstesh!", + "filter_modal.added.expired_explanation": "Kjo kategori filtrash ka skaduar, do t’ju duhet të ndryshoni datën e skadimit për të, pa të aplikohet.", + "filter_modal.added.expired_title": "Filtër i skaduar!", + "filter_modal.added.review_and_configure": "Që të shqyrtoni dhe formësoni më tej këtë kategori filtrash, kaloni te {settings_link}.", + "filter_modal.added.review_and_configure_title": "Rregullime filtrash", + "filter_modal.added.settings_link": "faqe rregullimesh", + "filter_modal.added.short_explanation": "Ky postim është shtuar te kategoria vijuese e filtrave: {title}.", + "filter_modal.added.title": "U shtua filtër!", + "filter_modal.select_filter.context_mismatch": "mos e apliko mbi këtë kontekst", + "filter_modal.select_filter.expired": "ka skaduar", + "filter_modal.select_filter.prompt_new": "Kategori e re: {name}", + "filter_modal.select_filter.search": "Kërkoni, ose krijoni", + "filter_modal.select_filter.subtitle": "Përdorni një kategori ekzistuese, ose krijoni një të re", + "filter_modal.select_filter.title": "Filtroje këtë postim", + "filter_modal.title.status": "Filtroni një postim", "follow_recommendations.done": "U bë", "follow_recommendations.heading": "Ndiqni persona prej të cilëve doni të shihni postime! Ja ca sugjerime.", "follow_recommendations.lead": "Postimet prej personash që ndiqni do të shfaqen në rend kohor te prurja juaj kryesore. Mos kini frikë të bëni gabime, mund të ndalni po aq kollaj ndjekjen e dikujt, në çfarëdo kohe!", @@ -487,7 +488,7 @@ "status.edited_x_times": "Përpunuar {count, plural, one {{count} herë} other {{count} herë}}", "status.embed": "Trupëzim", "status.favourite": "I parapëlqyer", - "status.filter": "Filter this post", + "status.filter": "Filtroje këtë postim", "status.filtered": "I filtruar", "status.hide": "Fshihe mesazhin", "status.history.created": "{name} u krijua më {date}", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Jo e passhme", "status.unmute_conversation": "Ktheji zërin bisedës", "status.unpin": "Shfiksoje nga profili", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Mos e merr parasysh sugjerimin", "suggestions.header": "Mund t’ju interesonte…", "tabs_bar.federated_timeline": "E federuar", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 8e955727d..2487c27f9 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -24,6 +24,7 @@ "account.follows_you": "Prati Vas", "account.hide_reblogs": "Sakrij podrške koje daje korisnika @{name}", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Mediji", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Uključi prepisku", "status.unpin": "Otkači sa profila", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federisano", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 442e7ee3d..9683cafff 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -24,6 +24,7 @@ "account.follows_you": "Прати Вас", "account.hide_reblogs": "Сакриј подршке које даје корисника @{name}", "account.joined": "Придружио/ла се {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Власништво над овом везом је проверено {date}", "account.locked_info": "Статус приватности овог налога је подешен на закључано. Власник ручно прегледа ко га може пратити.", "account.media": "Медији", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Није доступно", "status.unmute_conversation": "Укључи преписку", "status.unpin": "Откачи са налога", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Федерисано", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index a150deadb..c9ae1b08c 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -24,6 +24,7 @@ "account.follows_you": "Följer dig", "account.hide_reblogs": "Dölj knuffar från @{name}", "account.joined": "Gick med {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ägarskap för detta konto kontrollerades den {date}", "account.locked_info": "Detta konto har låst integritetsstatus. Ägaren väljer manuellt vem som kan följa.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Ej tillgängligt", "status.unmute_conversation": "Öppna konversation", "status.unpin": "Ångra fäst i profil", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Avfärda förslag", "suggestions.header": "Du kanske är intresserad av…", "tabs_bar.federated_timeline": "Federerad", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index c77444bff..bde5388c6 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -24,6 +24,7 @@ "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 6c9529a32..1d4531d89 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -24,6 +24,7 @@ "account.follows_you": "உங்களைப் பின்தொடர்கிறார்", "account.hide_reblogs": "இருந்து ஊக்கியாக மறை @{name}", "account.joined": "சேர்ந்த நாள் {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "இந்த இணைப்பை உரிமையாளர் சரிபார்க்கப்பட்டது {date}", "account.locked_info": "இந்தக் கணக்கு தனியுரிமை நிலை பூட்டப்பட்டுள்ளது. அவர்களைப் பின்தொடர்பவர் யார் என்பதை உரிமையாளர் கைமுறையாக மதிப்பாய்வு செய்கிறார்.", "account.media": "ஊடகங்கள்", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "கிடைக்கவில்லை", "status.unmute_conversation": "ஊமையாக உரையாடல் இல்லை", "status.unpin": "சுயவிவரத்திலிருந்து நீக்கவும்", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "பரிந்துரை விலக்க", "suggestions.header": "நீங்கள் ஆர்வமாக இருக்கலாம் …", "tabs_bar.federated_timeline": "கூட்டமைந்த", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index beba8e333..1e5f0ed34 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -24,6 +24,7 @@ "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Mûi-thé", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index d5cc02b10..265a3b484 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -24,6 +24,7 @@ "account.follows_you": "మిమ్మల్ని అనుసరిస్తున్నారు", "account.hide_reblogs": "@{name} నుంచి బూస్ట్ లను దాచిపెట్టు", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "ఈ లంకె యొక్క యాజమాన్యం {date}న పరీక్షించబడింది", "account.locked_info": "ఈ ఖాతా యొక్క గోప్యత స్థితి లాక్ చేయబడి వుంది. ఈ ఖాతాను ఎవరు అనుసరించవచ్చో యజమానే నిర్ణయం తీసుకుంటారు.", "account.media": "మీడియా", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "సంభాషణను అన్మ్యూట్ చేయి", "status.unpin": "ప్రొఫైల్ నుండి పీకివేయు", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "సూచనను రద్దు చేయి", "suggestions.header": "మీకు వీటి మీద ఆసక్తి ఉండవచ్చు…", "tabs_bar.federated_timeline": "సమాఖ్య", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 9fcb877d3..1c25ac049 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -24,6 +24,7 @@ "account.follows_you": "ติดตามคุณ", "account.hide_reblogs": "ซ่อนการดันจาก @{name}", "account.joined": "เข้าร่วมเมื่อ {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "ตรวจสอบความเป็นเจ้าของของลิงก์นี้เมื่อ {date}", "account.locked_info": "มีการตั้งสถานะความเป็นส่วนตัวของบัญชีนี้เป็นล็อคอยู่ เจ้าของตรวจทานผู้ที่สามารถติดตามเขาด้วยตนเอง", "account.media": "สื่อ", @@ -199,12 +200,12 @@ "explore.trending_tags": "แฮชแท็ก", "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", "filter_modal.added.context_mismatch_title": "บริบทไม่ตรงกัน!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.expired_explanation": "หมวดหมู่ตัวกรองนี้หมดอายุแล้ว คุณจะต้องเปลี่ยนวันหมดอายุสำหรับหมวดหมู่เพื่อนำไปใช้", + "filter_modal.added.expired_title": "ตัวกรองหมดอายุแล้ว!", + "filter_modal.added.review_and_configure": "เพื่อตรวจทานและกำหนดค่าหมวดหมู่ตัวกรองนี้เพิ่มเติม ไปยัง {settings_link}", "filter_modal.added.review_and_configure_title": "การตั้งค่าตัวกรอง", "filter_modal.added.settings_link": "หน้าการตั้งค่า", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.short_explanation": "เพิ่มโพสต์นี้ไปยังหมวดหมู่ตัวกรองดังต่อไปนี้แล้ว: {title}", "filter_modal.added.title": "เพิ่มตัวกรองแล้ว!", "filter_modal.select_filter.context_mismatch": "ไม่นำไปใช้กับบริบทนี้", "filter_modal.select_filter.expired": "หมดอายุแล้ว", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "ไม่พร้อมใช้งาน", "status.unmute_conversation": "เลิกซ่อนการสนทนา", "status.unpin": "ถอนหมุดจากโปรไฟล์", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "ปิดข้อเสนอแนะ", "suggestions.header": "คุณอาจสนใจ…", "tabs_bar.federated_timeline": "ที่ติดต่อกับภายนอก", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index bb67ef2f6..0d8b0e46f 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -24,6 +24,7 @@ "account.follows_you": "Seni takip ediyor", "account.hide_reblogs": "@{name} kişisinin boostlarını gizle", "account.joined": "{date} tarihinde katıldı", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Bu bağlantının sahipliği {date} tarihinde kontrol edildi", "account.locked_info": "Bu hesabın gizlilik durumu gizli olarak ayarlanmış. Sahibi, onu kimin takip edebileceğini manuel olarak onaylıyor.", "account.media": "Medya", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Mevcut değil", "status.unmute_conversation": "Sohbet sesini aç", "status.unpin": "Profilden sabitlemeyi kaldır", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Öneriyi görmezden gel", "suggestions.header": "Şuna ilgi duyuyor olabilirsiniz…", "tabs_bar.federated_timeline": "Federe", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index c2739e181..71e68e3c4 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -24,6 +24,7 @@ "account.follows_you": "Сезгә язылган", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "{date} көнендә теркәлде", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "Бу - ябык аккаунт. Аны язылучылар гына күрә ала.", "account.media": "Медиа", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index c77444bff..bde5388c6 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -24,6 +24,7 @@ "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index a14e2125b..271a6f330 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -24,6 +24,7 @@ "account.follows_you": "Підписані на вас", "account.hide_reblogs": "Сховати поширення від @{name}", "account.joined": "Долучилися {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Права власності на це посилання були перевірені {date}", "account.locked_info": "Це закритий обліковий запис. Власник вручну обирає, хто може на нього підписуватися.", "account.media": "Медіа", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Недоступно", "status.unmute_conversation": "Не ігнорувати діалог", "status.unpin": "Відкріпити від профілю", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Відхилити пропозицію", "suggestions.header": "Вас може зацікавити…", "tabs_bar.federated_timeline": "Глобальна", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index 19cee9c2a..a9ee2e877 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -24,6 +24,7 @@ "account.follows_you": "آپ کا پیروکار ہے", "account.hide_reblogs": "@{name} سے فروغ چھپائیں", "account.joined": "{date} شامل ہوئے", + "account.languages": "Change subscribed languages", "account.link_verified_on": "اس لنک کی ملکیت کی توثیق {date} پر کی گئی تھی", "account.locked_info": "اس اکاونٹ کا اخفائی ضابطہ مقفل ہے۔ صارف کی پیروی کون کر سکتا ہے اس کا جائزہ وہ خود لیتا ہے.", "account.media": "وسائل", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index d1b5684af..ff2ba7e85 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -24,6 +24,7 @@ "account.follows_you": "Đang theo dõi bạn", "account.hide_reblogs": "Ẩn tút @{name} đăng lại", "account.joined": "Đã tham gia {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Liên kết này đã được xác minh vào {date}", "account.locked_info": "Đây là tài khoản riêng tư. Họ sẽ tự mình xét duyệt các yêu cầu theo dõi.", "account.media": "Media", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Uncached", "status.unmute_conversation": "Quan tâm", "status.unpin": "Bỏ ghim trên hồ sơ", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Tắt đề xuất", "suggestions.header": "Có thể bạn quan tâm…", "tabs_bar.federated_timeline": "Thế giới", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index 92201375d..4983489ab 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -24,6 +24,7 @@ "account.follows_you": "ⴹⴼⵕⵏ ⴽⵯⵏ", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "ⴰⵙⵏⵖⵎⵉⵙ", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 5d0dfa202..243d127f4 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -24,6 +24,7 @@ "account.follows_you": "关注了你", "account.hide_reblogs": "隐藏来自 @{name} 的转贴", "account.joined": "加入于 {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "此链接的所有权已在 {date} 检查", "account.locked_info": "此账户已锁嘟。账户所有者会手动审核关注者。", "account.media": "媒体", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "暂不可用", "status.unmute_conversation": "恢复此对话的通知提醒", "status.unpin": "在个人资料页面取消置顶", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "关闭建议", "suggestions.header": "你可能会感兴趣…", "tabs_bar.federated_timeline": "跨站", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index fdc206800..3b2dde692 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -24,6 +24,7 @@ "account.follows_you": "關注你", "account.hide_reblogs": "隱藏 @{name} 的轉推", "account.joined": "於 {date} 加入", + "account.languages": "Change subscribed languages", "account.link_verified_on": "此連結的所有權已在 {date} 檢查過", "account.locked_info": "這位使用者將私隱設定為「不公開」,會手動審批誰能關注他/她。", "account.media": "媒體", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "無法使用", "status.unmute_conversation": "對話解除靜音", "status.unpin": "解除置頂", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "關閉建議", "suggestions.header": "你可能對這些感興趣…", "tabs_bar.federated_timeline": "跨站", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 337cad60b..62facfca2 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -24,6 +24,7 @@ "account.follows_you": "跟隨了您", "account.hide_reblogs": "隱藏來自 @{name} 的轉嘟", "account.joined": "加入於 {date}", + "account.languages": "Change subscribed languages", "account.link_verified_on": "已在 {date} 檢查此連結的擁有者權限", "account.locked_info": "此帳戶的隱私狀態被設為鎖定。該擁有者會手動審核能跟隨此帳號的人。", "account.media": "媒體", @@ -522,6 +523,9 @@ "status.uncached_media_warning": "無法使用", "status.unmute_conversation": "解除此對話的靜音", "status.unpin": "從個人檔案頁面解除釘選", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "關閉建議", "suggestions.header": "您可能對這些東西有興趣…", "tabs_bar.federated_timeline": "聯邦宇宙", diff --git a/config/locales/activerecord.cs.yml b/config/locales/activerecord.cs.yml index d306fe627..50c4fc8c3 100644 --- a/config/locales/activerecord.cs.yml +++ b/config/locales/activerecord.cs.yml @@ -38,3 +38,5 @@ cs: email: blocked: používá zakázanou e-mailovou službu unreachable: pravděpodobně neexistuje + role_id: + elevated: nemůže být vyšší než vaše aktuální role diff --git a/config/locales/cs.yml b/config/locales/cs.yml index b0ab498ea..4478d2420 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -165,6 +165,7 @@ cs: active: Aktivní all: Vše pending: Čekající + silenced: Omezeno suspended: Pozastavené title: Moderování moderation_notes: Moderátorské poznámky @@ -172,6 +173,7 @@ cs: most_recent_ip: Nejnovější IP adresa no_account_selected: Nebyl změněn žádný účet, neboť žádný nebyl zvolen no_limits_imposed: Nejsou nastavena žádná omezení + no_role_assigned: Nebyla přiřazena žádná role not_subscribed: Neodebírá pending: Čeká na posouzení perform_full_suspension: Pozastavit @@ -243,6 +245,7 @@ cs: approve_user: Schválit uživatele assigned_to_self_report: Přiřadit hlášení change_email_user: Změnit uživateli e-mailovou adresu + change_role_user: Změnit roli uživatele confirm_user: Potvrdit uživatele create_account_warning: Vytvořit varování create_announcement: Nové oznámení @@ -252,6 +255,7 @@ cs: create_email_domain_block: Zablokovat e-mailovou doménu create_ip_block: Vytvořit IP pravidlo create_unavailable_domain: Vytvořit nedostupnou doménu + create_user_role: Vytvořit roli demote_user: Snížit roli uživatele destroy_announcement: Odstranit oznámení destroy_custom_emoji: Odstranit vlastní emoji @@ -262,6 +266,7 @@ cs: destroy_ip_block: Smazat IP pravidlo destroy_status: Odstranit Příspěvek destroy_unavailable_domain: Smazat nedostupnou doménu + destroy_user_role: Zničit roli disable_2fa_user: Vypnout 2FA disable_custom_emoji: Zakázat vlastní emoji disable_sign_in_token_auth_user: Zrušit uživatelovo ověřování e-mailovým tokenem @@ -288,15 +293,19 @@ cs: update_announcement: Aktualizovat oznámení update_custom_emoji: Aktualizovat vlastní emoji update_domain_block: Změnit blokaci domény + update_ip_block: Aktualizovat pravidlo IP update_status: Aktualizovat Příspěvek + update_user_role: Aktualizovat roli actions: approve_appeal_html: Uživatel %{name} schválil odvolání proti rozhodnutí moderátora %{target} approve_user_html: "%{name} schválil registraci od %{target}" assigned_to_self_report_html: Uživatel %{name} si přidělil hlášení %{target} change_email_user_html: Uživatel %{name} změnil e-mailovou adresu uživatele %{target} + change_role_user_html: "%{name} změnil roli %{target}" confirm_user_html: Uživatel %{name} potvrdil e-mailovou adresu uživatele %{target} create_account_warning_html: Uživatel %{name} poslal %{target} varování create_announcement_html: Uživatel %{name} vytvořil nové oznámení %{target} + create_canonical_email_block_html: "%{name} zablokoval e-mail s hash %{target}" create_custom_emoji_html: Uživatel %{name} nahrál nové emoji %{target} create_domain_allow_html: Uživatel %{name} povolil federaci s doménou %{target} create_domain_block_html: Uživatel %{name} zablokoval doménu %{target} @@ -711,12 +720,16 @@ cs: manage_roles: Spravovat role manage_rules: Spravovat pravidla manage_settings: Spravovat nastavení + manage_taxonomies: Správa taxonomií manage_user_access: Spravovat uživatelské přístupy manage_user_access_description: Umožňuje uživatelům rušit jiným uživatelům dvoufázové ověřování, měnit jejich e-mailovou adresu a obnovovat jim hesla manage_users: Spravovat uživatele manage_webhooks: Spravovat webhooky view_audit_log: Zobrazovat protokol auditu + view_dashboard: Zobrazit ovládací panel + view_dashboard_description: Umožňuje uživatelům přístup k ovládacímu panelu a různým metrikám view_devops: Devops + view_devops_description: Umožňuje uživatelům přístup k ovládacím panelům Sidekiq a pgHero title: Role rules: add_new: Přidat pravidlo @@ -802,6 +815,9 @@ cs: desc_html: Zobrazit na hlavní stránce odkaz na veřejnou časovou osu a povolit přístup na veřejnou časovou osu pomocí API bez autentizace title: Povolit neautentizovaný přístup k časové ose title: Nastavení stránky + trendable_by_default: + desc_html: Specifický populární obsah může být i nadále výslovně zakázán + title: Povolit trendy bez předchozí revize trends: desc_html: Veřejně zobrazit dříve schválený obsah, který je zrovna populární title: Trendy @@ -1194,6 +1210,7 @@ cs: edit: add_keyword: Přidat klíčové slovo keywords: Klíčová slova + statuses: Individuální příspěvky title: Upravit filtr errors: deprecated_api_multiple_keywords: Tyto parametry nelze změnit z této aplikace, protože se vztahují na více než jedno klíčové slovo filtru. Použijte novější aplikaci nebo webové rozhraní. @@ -1213,6 +1230,12 @@ cs: new: save: Uložit nový filtr title: Přidat nový filtr + statuses: + back_to_filter: Zpět na filtr + batch: + remove: Odstranit z filtru + index: + title: Filtrované příspěvky footer: developers: Vývojáři more: Více… @@ -1223,6 +1246,7 @@ cs: changes_saved_msg: Změny byly úspěšně uloženy! copy: Kopírovat delete: Smazat + deselect: Zrušit výběr všeho none: Žádné order_by: Seřadit podle save_changes: Uložit změny diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 4f387128c..31e10c6fa 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -239,6 +239,7 @@ es-MX: confirm_user: Confirmar Usuario create_account_warning: Crear Advertencia create_announcement: Crear Anuncio + create_canonical_email_block: Crear Bloqueo de Correo Electrónico create_custom_emoji: Crear Emoji Personalizado create_domain_allow: Crear Permiso de Dominio create_domain_block: Crear Bloqueo de Dominio @@ -248,6 +249,7 @@ es-MX: create_user_role: Crear Rol demote_user: Degradar Usuario destroy_announcement: Eliminar Anuncio + destroy_canonical_email_block: Eliminar Bloqueo de Correo Electrónico destroy_custom_emoji: Eliminar Emoji Personalizado destroy_domain_allow: Eliminar Permiso de Dominio destroy_domain_block: Eliminar Bloqueo de Dominio @@ -283,6 +285,7 @@ es-MX: update_announcement: Actualizar Anuncio update_custom_emoji: Actualizar Emoji Personalizado update_domain_block: Actualizar el Bloqueo de Dominio + update_ip_block: Actualizar regla IP update_status: Actualizar Estado update_user_role: Actualizar Rol actions: @@ -294,6 +297,7 @@ es-MX: confirm_user_html: "%{name} confirmó la dirección de correo electrónico del usuario %{target}" create_account_warning_html: "%{name} envió una advertencia a %{target}" create_announcement_html: "%{name} ha creado un nuevo anuncio %{target}" + create_canonical_email_block_html: "%{name} bloqueó el correo electrónico con el hash %{target}" create_custom_emoji_html: "%{name} subió un nuevo emoji %{target}" create_domain_allow_html: "%{name} permitió la federación con el dominio %{target}" create_domain_block_html: "%{name} bloqueó el dominio %{target}" @@ -303,6 +307,7 @@ es-MX: create_user_role_html: "%{name} creó el rol %{target}" demote_user_html: "%{name} degradó al usuario %{target}" destroy_announcement_html: "%{name} eliminó el anuncio %{target}" + destroy_canonical_email_block_html: "%{name} desbloqueó el correo electrónico con el hash %{target}" destroy_custom_emoji_html: "%{name} eliminó el emoji %{target}" destroy_domain_allow_html: "%{name} bloqueó la federación con el dominio %{target}" destroy_domain_block_html: "%{name} desbloqueó el dominio %{target}" @@ -338,6 +343,7 @@ es-MX: update_announcement_html: "%{name} actualizó el anuncio %{target}" update_custom_emoji_html: "%{name} actualizó el emoji %{target}" update_domain_block_html: "%{name} actualizó el bloqueo de dominio para %{target}" + update_ip_block_html: "%{name} cambió la regla para la IP %{target}" update_status_html: "%{name} actualizó el estado de %{target}" update_user_role_html: "%{name} cambió el rol %{target}" empty: No se encontraron registros. @@ -801,6 +807,9 @@ es-MX: desc_html: Mostrar línea de tiempo pública en la portada title: Previsualización title: Ajustes del sitio + trendable_by_default: + desc_html: El contenido específico de tendencias todavía puede ser explícitamente desactivado + title: Permitir tendencias sin revisión previa trends: desc_html: Mostrar públicamente hashtags previamente revisados que son tendencia title: Hashtags de tendencia @@ -1720,7 +1729,7 @@ es-MX: change_password: cambies tu contraseña details: 'Aquí están los detalles del inicio de sesión:' explanation: Hemos detectado un inicio de sesión en tu cuenta desde una nueva dirección IP. - further_actions_html: Si fuiste tú, te recomendamos que %{action} inmediatamente y habilites la autenticación de dos factores para mantener tu cuenta segura. + further_actions_html: Si no fuiste tú, te recomendamos que %{action} inmediatamente y habilites la autenticación de dos factores para mantener tu cuenta segura. subject: Tu cuenta ha sido accedida desde una nueva dirección IP title: Un nuevo inicio de sesión warning: diff --git a/config/locales/es.yml b/config/locales/es.yml index db4785d2c..8d9c2bbb3 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -1729,7 +1729,7 @@ es: change_password: cambies tu contraseña details: 'Aquí están los detalles del inicio de sesión:' explanation: Hemos detectado un inicio de sesión en tu cuenta desde una nueva dirección IP. - further_actions_html: Si fuiste tú, te recomendamos que %{action} inmediatamente y habilites la autenticación de dos factores para mantener tu cuenta segura. + further_actions_html: Si no fuiste tú, te recomendamos que %{action} inmediatamente y habilites la autenticación de dos factores para mantener tu cuenta segura. subject: Tu cuenta ha sido accedida desde una nueva dirección IP title: Un nuevo inicio de sesión warning: diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 086568664..4dabcf789 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -212,6 +212,7 @@ nl: suspension_reversible_hint_html: Dit account is opgeschort en de gegevens worden volledig verwijderd op %{date}. Tot die tijd kan dit account worden hersteld zonder nadelige gevolgen. Wanneer je alle gegevens van dit account onmiddellijk wilt verwijderen, kun je dit hieronder doen. title: Accounts unblock_email: E-mailadres deblokkeren + unblocked_email_msg: Het e-mailadres van %{username} is gedeblokkeerd unconfirmed_email: Onbevestigd e-mailadres undo_sensitized: Niet meer als gevoelig forceren undo_silenced: Niet langer beperken @@ -230,6 +231,7 @@ nl: approve_user: Gebruiker goedkeuren assigned_to_self_report: Rapportage toewijzen change_email_user: E-mailadres van gebruiker wijzigen + change_role_user: Wijzig rol van gebruiker confirm_user: Gebruiker bevestigen create_account_warning: Waarschuwing aanmaken create_announcement: Mededeling aanmaken @@ -241,6 +243,7 @@ nl: create_unavailable_domain: Niet beschikbaar domein aanmaken demote_user: Gebruiker degraderen destroy_announcement: Mededeling verwijderen + destroy_canonical_email_block: Verwijder e-mailblokkade destroy_custom_emoji: Lokale emoji verwijderen destroy_domain_allow: Domeingoedkeuring verwijderen destroy_domain_block: Domeinblokkade verwijderen @@ -381,6 +384,15 @@ nl: pending_appeals_html: one: "%{count} bezwaar te beoordelen" other: "%{count} bezwaren te beoordelen" + pending_reports_html: + one: "%{count} openstaande rapportage" + other: "%{count} openstaande rapportages" + pending_tags_html: + one: "%{count} hashtag te beoordelen" + other: "%{count} hashtags te beoordelen" + pending_users_html: + one: "%{count} nieuwe gebruiker te beoordelen" + other: "%{count} nieuwe gebruikers te beoordelen" resolved_reports: opgeloste rapportages software: Software sources: Locatie van registratie @@ -485,6 +497,9 @@ nl: delivery_error_days: Dagen met bezorgfouten delivery_error_hint: Wanneer de bezorging voor %{count} dagen niet mogelijk is, wordt de bezorging automatisch als niet beschikbaar gemarkeerd. empty: Geen domeinen gevonden. + known_accounts: + one: "%{count} bekend account" + other: "%{count} bekende accounts" moderation: all: Alles limited: Beperkt @@ -575,7 +590,9 @@ nl: reported_by: Gerapporteerd door resolved: Opgelost resolved_msg: Rapportage succesvol opgelost! + skip_to_actions: Ga direct naar de acties status: Rapportages + statuses: Gerapporteerde inhoud target_origin: Herkomst van de gerapporteerde accounts title: Rapportages unassign: Niet langer toewijzen @@ -584,6 +601,38 @@ nl: view_profile: Profiel bekijken roles: add_new: Rol toevoegen + assigned_users: + one: "%{count} gebruiker" + other: "%{count} gebruikers" + categories: + administration: Beheer + devops: Devops + invites: Uitnodigingen + moderation: Moderatie + special: Speciaal + delete: Verwijderen + privileges: + administrator: Beheerder + delete_user_data: Gebruikersgegevens verwijderen + invite_users: Gebruikers uitnodigen + manage_announcements: Aankondigingen beheren + manage_appeals: Bezwaren afhandelen + manage_blocks: Blokkades beheren + manage_custom_emojis: Lokale emoji's beheren + manage_federation: Federatie beheren + manage_invites: Uitnodigingen beheren + manage_reports: Rapportages afhandelen + manage_roles: Rollen beheren + manage_rules: Serverregels wijzigen + manage_settings: Server-instellingen wijzigen + manage_taxonomies: Trends en hashtags beheren + manage_user_access: Gebruikerstoegang beheren + manage_users: Gebruikers beheren + manage_webhooks: Webhooks beheren + view_audit_log: Auditlog bekijken + view_dashboard: Dashboard bekijken + view_devops: Devops + title: Rollen rules: add_new: Regel toevoegen delete: Verwijderen @@ -668,6 +717,8 @@ nl: desc_html: Toon een link naar de openbare tijdlijnpagina op de voorpagina en geef de API zonder in te loggen toegang tot de openbare tijdlijn title: Toegang tot de openbare tijdlijn zonder in te loggen toestaan title: Server-instellingen + trendable_by_default: + title: Trends toestaan zonder voorafgaande beoordeling trends: desc_html: Eerder beoordeelde hashtags die op dit moment trending zijn openbaar tonen title: Trends @@ -685,6 +736,9 @@ nl: title: Berichten van account with_media: Met media strikes: + actions: + silence: "%{name} beperkte het account %{target}" + suspend: "%{name} schortte het account %{target} op" appeal_approved: Bezwaar ingediend appeal_pending: Bezwaar in behandeling system_checks: @@ -701,18 +755,32 @@ nl: title: Beheer trends: allow: Toestaan + approved: Toegestaan disallow: Weigeren links: allow: Link toestaan allow_provider: Uitgever toestaan + disallow: Link toestaan + disallow_provider: Website toestaan title: Trending links only_allowed: Alleen toegestaan pending_review: In afwachting van beoordeling preview_card_providers: + allowed: Links van deze website kunnen trending worden + rejected: Links van deze website kunnen niet trending worden title: Uitgevers rejected: Afgewezen statuses: allow: Bericht toestaan + allow_account: Gebruiker toestaan + disallow: Bericht niet toestaan + disallow_account: Gebruiker niet toestaan + not_discoverable: Gebruiker heeft geen toestemming gegeven om vindbaar te zijn + title: Trending berichten + tags: + dashboard: + tag_languages_dimension: Populaire talen + tag_servers_dimension: Populaire servers warning_presets: add_new: Nieuwe toevoegen delete: Verwijderen @@ -789,6 +857,7 @@ nl: invalid_reset_password_token: De code om jouw wachtwoord opnieuw in te stellen is verlopen. Vraag een nieuwe aan. link_to_otp: Voer een tweestapsverificatiecode van je telefoon of een herstelcode in link_to_webauth: Jouw apparaat met de authenticatie-app gebruiken + log_in_with: Inloggen met login: Inloggen logout: Uitloggen migrate_account: Naar een ander account verhuizen @@ -810,6 +879,7 @@ nl: status: account_status: Accountstatus confirming: Aan het wachten totdat de e-mail is bevestigd. + functional: Jouw account kan in diens geheel gebruikt worden. pending: Jouw aanvraag moet nog worden beoordeeld door een van onze medewerkers. Dit kan misschien eventjes duren. Je ontvangt een e-mail wanneer jouw aanvraag is goedgekeurd. redirecting_to: Jouw account is inactief omdat het momenteel wordt doorverwezen naar %{acct}. too_fast: Formulier is te snel ingediend. Probeer het nogmaals. @@ -947,6 +1017,7 @@ nl: edit: add_keyword: Trefwoord toevoegen keywords: Trefwoorden + statuses: Individuele berichten title: Filter bewerken errors: deprecated_api_multiple_keywords: Deze instellingen kunnen niet via deze applicatie worden veranderd, omdat er meer dan één trefwoord wordt gebruikt. Gebruik een meer recente applicatie of de webomgeving. @@ -960,10 +1031,22 @@ nl: keywords: one: "%{count} trefwoord" other: "%{count} trefwoorden" + statuses: + one: "%{count} bericht" + other: "%{count} berichten" + statuses_long: + one: "%{count} individueel bericht verborgen" + other: "%{count} individuele berichten verborgen" title: Filters new: save: Nieuwe filter opslaan title: Nieuw filter toevoegen + statuses: + back_to_filter: Terug naar het filter + batch: + remove: Uit het filter verwijderen + index: + title: Gefilterde berichten footer: developers: Ontwikkelaars more: Meer… @@ -974,6 +1057,7 @@ nl: changes_saved_msg: Wijzigingen succesvol opgeslagen! copy: Kopiëren delete: Verwijderen + deselect: Alles deselecteren none: Geen order_by: Sorteer op save_changes: Wijzigingen opslaan @@ -1302,6 +1386,11 @@ nl: unlisted: Minder openbaar unlisted_long: Aan iedereen tonen, maar niet op openbare tijdlijnen statuses_cleanup: + ignore_favs: Favorieten negeren + ignore_reblogs: Boosts negeren + keep_direct: Directe berichten behouden + keep_media: Berichten met mediabijlagen behouden + keep_pinned: Vastgemaakte berichten behouden min_age: '1209600': 2 weken '15778476': 6 maanden @@ -1458,8 +1547,10 @@ nl: silence: Jouw account %{acct} is nu beperkt suspend: Jouw account %{acct} is opgeschort title: + delete_statuses: Berichten verwijderd disable: Account bevroren none: Waarschuwing + sensitive: Account is als gevoelig gemarkeerd silence: Account beperkt suspend: Account opgeschort welcome: diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index 61456e921..bd7039399 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -85,6 +85,7 @@ cs: ip: Zadejte IPv4 nebo IPv6 adresu. Můžete blokovat celé rozsahy použitím CIDR notace. Dejte pozor, ať neodříznete přístup sami sobě! severities: no_access: Blokovat přístup ke všem zdrojům + sign_up_block: Nové přihlášení nebude možné sign_up_requires_approval: Nové registrace budou vyžadovat schválení severity: Zvolte, jak naložit s požadavky z dané IP rule: @@ -96,7 +97,9 @@ cs: name: Můžete měnit pouze velikost písmen, například kvůli lepší čitelnosti user: chosen_languages: Po zaškrtnutí budou ve veřejných časových osách zobrazeny pouze příspěvky ve zvolených jazycích + role: Role určuje, která oprávnění má uživatel user_role: + color: Barva, která má být použita pro roli v celém UI, jako RGB v hex formátu highlighted: Toto roli učiní veřejně viditelnou permissions_as_keys: Uživatelé s touto rolí budou moci... webhook: @@ -247,6 +250,7 @@ cs: events: Zapnuté události url: URL koncového bodu 'no': Ne + not_recommended: Nedoporučuje se recommended: Doporučeno required: mark: "*" diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index cd9811f3c..0da328b82 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -37,6 +37,7 @@ nl: current_password: Voer voor veiligheidsredenen het wachtwoord van je huidige account in current_username: Voer ter bevestiging de gebruikersnaam van je huidige account in digest: Wordt alleen na een lange periode van inactiviteit verzonden en alleen wanneer je tijdens jouw afwezigheid persoonlijke berichten hebt ontvangen + discoverable: Toestaan dat jouw account vindbaar is voor onbekenden, via aanbevelingen, trends en op andere manieren email: Je krijgt een bevestigingsmail fields: Je kan maximaal 4 items als een tabel op je profiel weergeven header: PNG, GIF of JPG. Maximaal %{size}. Wordt teruggeschaald naar %{dimensions}px @@ -82,6 +83,7 @@ nl: ip: Voer een IPv4- of IPv6-adres in. Je kunt hele reeksen blokkeren met de CIDR-methode. Pas op dat je jezelf niet buitensluit! severities: no_access: Toegang tot de hele server blokkeren + sign_up_block: Nieuwe registraties zijn niet mogelijk sign_up_requires_approval: Nieuwe registraties vereisen jouw goedkeuring severity: Kies wat er moet gebeuren met aanvragen van dit IP-adres rule: @@ -206,6 +208,7 @@ nl: ip: IP severities: no_access: Toegang blokkeren + sign_up_block: Registraties blokkeren sign_up_requires_approval: Registraties beperken severity: Regel notification_emails: @@ -236,6 +239,7 @@ nl: webhook: url: Eindpunt URL 'no': Nee + not_recommended: Niet aanbevolen recommended: Aanbevolen required: mark: "*" diff --git a/config/locales/simple_form.sq.yml b/config/locales/simple_form.sq.yml index fd17afb0e..0c0cd4998 100644 --- a/config/locales/simple_form.sq.yml +++ b/config/locales/simple_form.sq.yml @@ -85,6 +85,7 @@ sq: ip: Jepni një adresë IPv4 ose IPv6. Duke përdorur sintaksën CIDR, mund të bllokoni intervale të tëra. Hapni sytë mos lini veten jashtë! severities: no_access: Blloko hyrje në krejt burimet + sign_up_block: S’do të jenë të mundur regjistrime të reja sign_up_requires_approval: Regjistrime të reja do të duan miratimin tuaj severity: Zgjidhni ç’do të ndodhë me kërkesa nga kjo IP rule: @@ -219,6 +220,7 @@ sq: ip: IP severities: no_access: Bllokoji hyrjen + sign_up_block: Blloko regjistrime sign_up_requires_approval: Kufizo regjistrime severity: Rregull notification_emails: @@ -251,6 +253,7 @@ sq: events: Akte të aktivizuar url: URL pikëmbarimi 'no': Jo + not_recommended: Jo e këshilluar recommended: E rekomanduar required: mark: "*" diff --git a/config/locales/sq.yml b/config/locales/sq.yml index ef72bfbdf..3beca5f53 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -235,17 +235,21 @@ sq: approve_user: Miratoje Përdoruesin assigned_to_self_report: Caktoji Raportim change_email_user: Ndrysho Email për Përdoruesin + change_role_user: Ndryshoni Rol Përdoruesi confirm_user: Ripohoje Përdoruesin create_account_warning: Krijo Sinjalizim create_announcement: Krijoni Lajmërim + create_canonical_email_block: Krijoni Bllokim Email-esh create_custom_emoji: Krijo Emotikon Vetjak create_domain_allow: Krijo Lejim Përkatësie create_domain_block: Krijo Bllokim Përkatësie create_email_domain_block: Krijo Bllokim Përkatësie Email-esh create_ip_block: Krijoni Rregull IP create_unavailable_domain: Krijo Përkatësi të Papërdorshme + create_user_role: Krijoni Rol demote_user: Zhgradoje Përdoruesin destroy_announcement: Fshije Lajmërimin + destroy_canonical_email_block: Fshi Bllokim El-esh destroy_custom_emoji: Fshi Emotikon Vetjak destroy_domain_allow: Fshi Lejim Përkatësie destroy_domain_block: Fshi Bllokim Përkatësie @@ -254,6 +258,7 @@ sq: destroy_ip_block: Fshini Rregull IP destroy_status: Fshi Gjendje destroy_unavailable_domain: Fshi Përkatësi të Papërdorshme + destroy_user_role: Asgjësoje Rolin disable_2fa_user: Çaktivizo 2FA-në disable_custom_emoji: Çaktivizo Emotikon Vetjak disable_sign_in_token_auth_user: Çaktivizo Mirëfilltësim me Token Email-i për Përdoruesin @@ -280,23 +285,30 @@ sq: update_announcement: Përditëso Lajmërimin update_custom_emoji: Përditëso Emoxhi Vetjake update_domain_block: Përditëso Bllok Përkatësish + update_ip_block: Përditësoni rregull IP update_status: Përditëso Gjendjen + update_user_role: Përditësoni Rol actions: approve_appeal_html: "%{name} miratoi apelim vendimi moderimi nga %{target}" approve_user_html: "%{name} miratoi regjistrim nga %{target}" assigned_to_self_report_html: "%{name} ia kaloi raportimin %{target} në ngarkim vetvetes" change_email_user_html: "%{name} ndryshoi adresën email të përdoruesit %{target}" + change_role_user_html: "%{name} ndryshoi rolin e %{target}" confirm_user_html: "%{name} ripohoi adresën email të përdoruesit %{target}" create_account_warning_html: "%{name} dërgoi një sinjalizim për %{target}" create_announcement_html: "%{name} krijoi lajmërim të ri për %{target}" + create_canonical_email_block_html: "%{name} bllokoi email-in me hashin %{target}" create_custom_emoji_html: "%{name} ngarkoi emoxhi të ri %{target}" create_domain_allow_html: "%{name} lejoi federim me përkatësinë %{target}" create_domain_block_html: "%{name} bllokoi përkatësinë %{target}" create_email_domain_block_html: "%{name} bllokoi përkatësinë email %{target}" create_ip_block_html: "%{name} krijoi rregull për IP-në %{target}" create_unavailable_domain_html: "%{name} ndali dërgimin drejt përkatësisë %{target}" + create_user_role_html: "%{name} krijoi rolin %{target}" demote_user_html: "%{name} zhgradoi përdoruesin %{target}" destroy_announcement_html: "%{name} fshiu lajmërimin për %{target}" + destroy_canonical_email_block_html: "%{name} zhbllokoi email-n me hashin %{target}" + destroy_custom_emoji_html: "%{name} fshiu emoji-n %{target}" destroy_domain_allow_html: "%{name} hoqi lejimin për federim me %{target}" destroy_domain_block_html: "%{name} zhbllokoi përkatësinë %{target}" destroy_email_domain_block_html: "%{name} hoqi bllokimin për përkatësinë email %{target}" @@ -304,6 +316,7 @@ sq: destroy_ip_block_html: "%{name} fshiu rregull për IP-në %{target}" destroy_status_html: "%{name} hoqi gjendje nga %{target}" destroy_unavailable_domain_html: "%{name} rinisi dërgimin drejt përkatësisë %{target}" + destroy_user_role_html: "%{name} fshiu rolin %{target}" disable_2fa_user_html: "%{name} çaktivizoi domosdoshmërinë për dyfaktorësh për përdoruesin %{target}" disable_custom_emoji_html: "%{name} çaktivizoi emoxhin %{target}" disable_sign_in_token_auth_user_html: "%{name} çaktivizo mirëfilltësim me token email-i për %{target}" @@ -330,7 +343,9 @@ sq: update_announcement_html: "%{name} përditësoi lajmërimin %{target}" update_custom_emoji_html: "%{name} përditësoi emoxhin %{target}" update_domain_block_html: "%{name} përditësoi bllokimin e përkatësish për %{target}" + update_ip_block_html: "%{name} ndryshoi rregull për IP-në %{target}" update_status_html: "%{name} përditësoi gjendjen me %{target}" + update_user_role_html: "%{name} ndryshoi rolin për %{target}" empty: S’u gjetën regjistra. filter_by_action: Filtroji sipas veprimit filter_by_user: Filtroji sipas përdoruesit @@ -789,6 +804,9 @@ sq: desc_html: Shfaqni lidhje te rrjedhë kohore publike në faqen hyrëse dhe lejoni te rrjedhë kohore publike hyrje API pa mirëfilltësim title: Lejo në rrjedhë kohore publike hyrje pa mirëfilltësim title: Rregullime sajti + trendable_by_default: + desc_html: Lënda specifike në modë prapë mund të ndalohet shprehimisht + title: Lejoni prirje pa shqyrtim paraprak trends: desc_html: Shfaqni publikisht hashtag-ë të shqyrtuar më parë që janë popullorë tani title: Hashtag-ë popullorë tani @@ -850,6 +868,7 @@ sq: other: Ndarë me të tjerë nga %{count} vetë gjatë javës së kaluar title: Lidhje në modë usage_comparison: Ndarë %{today} herë sot, kundrejt %{yesterday} dje + only_allowed: Lejuar vetëm pending_review: Në pritje të shqyrtimit preview_card_providers: allowed: Lidhje prej këtij botuesi mund të përdoren @@ -869,6 +888,7 @@ sq: other: Ndarë me të tjerë, ose shënuar si e parapëlqyer %{friendly_count} herë title: Postime në modë tags: + current_score: Vlera aktuale %{score} dashboard: tag_accounts_measure: përdorime unike tag_languages_dimension: Gjuhë kryesuese @@ -940,6 +960,7 @@ sq: body: 'Gjërat vijuese lypin një shqyrtim, përpara se të mund të shfaqen publikisht:' new_trending_links: no_approved_links: Aktualisht s’ka lidhje në modë të miratuara. + requirements: 'Cilido prej këtyre kandidatëve mund të kalojë lidhjen e miratuar për në modë #%{rank}, që aktualisht është “%{lowest_link_title}” me pikë %{lowest_link_score}.' title: Lidhje në modë new_trending_statuses: no_approved_statuses: Aktualisht s’ka postime në modë të miratuar. @@ -1167,6 +1188,8 @@ sq: edit: add_keyword: Shtoni fjalëkyç keywords: Fjalëkyçe + statuses: Postime individuale + statuses_hint_html: Ky filtër aplikohet për të përzgjedhur postime individuale, pavarësish se kanë apo jo përkim me fjalëkyçat më poshtë. Shqyrtoni, ose hiqni postime prej filtrit. title: Përpunoni filtër errors: deprecated_api_multiple_keywords: Këta parametra s’mund të ndryshohen nga ky aplikacion, ngaqë aplikohen mbi më shumë se një fjalëkyç filtri. Përdorni një aplikacion më të ri, ose ndërfaqen web. @@ -1180,10 +1203,23 @@ sq: keywords: one: "%{count} fjalëkyç" other: "%{count} fjalëkyçe" + statuses: + one: "%{count} postim" + other: "%{count} postime" + statuses_long: + one: "%{count} postim individual i fshehur" + other: "%{count} postime individuale të fshehur" title: Filtra new: save: Ruani filtër të ri title: Shtoni filtër të ri + statuses: + back_to_filter: Mbrapsht te filtri + batch: + remove: Hiqe prej filtri + index: + hint: Ky filtër aplikohet për të përzgjedhur postime individuale, pavarësisht kriteresh të tjera. Që nga ndërfaqja web mund të shtoni më tepër postime te ky filtër. + title: Postime të filtruar footer: developers: Zhvillues more: Më tepër… @@ -1191,12 +1227,22 @@ sq: trending_now: Prirjet e tashme generic: all: Krejt + all_items_on_page_selected_html: + one: Në këtë faqe është i përzgjedhur %{count} objekt. + other: Në këtë faqe janë përzgjedhur krejt %{count} objektet. + all_matching_items_selected_html: + one: Është përzgjedhur %{count} objekt me përkim me kërkimin tuaj. + other: Janë përzgjedhur krejt %{count} objektet me përkim me kërkimin tuaj. changes_saved_msg: Ndryshimet u ruajtën me sukses! copy: Kopjoje delete: Fshije + deselect: Shpërzgjidhi krejt none: Asnjë order_by: Renditi sipas save_changes: Ruaji ndryshimet + select_all_matching_items: + one: Përzgjidhni %{count} objekt me përkim me kërkimin tuaj. + other: Përzgjidhni krejt %{count} objektet me përkim me kërkimin tuaj. today: sot validation_errors: one: Diçka s’është ende si duhet! Ju lutemi, shqyrtoni gabimin më poshtë diff --git a/config/locales/th.yml b/config/locales/th.yml index 125bb3062..b5dd9bc36 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -292,6 +292,7 @@ th: confirm_user_html: "%{name} ได้ยืนยันที่อยู่อีเมลของผู้ใช้ %{target}" create_account_warning_html: "%{name} ได้ส่งคำเตือนไปยัง %{target}" create_announcement_html: "%{name} ได้สร้างประกาศใหม่ %{target}" + create_canonical_email_block_html: "%{name} ได้ปิดกั้นอีเมลที่มีแฮช %{target}" create_custom_emoji_html: "%{name} ได้อัปโหลดอีโมจิใหม่ %{target}" create_domain_allow_html: "%{name} ได้อนุญาตการติดต่อกับภายนอกกับโดเมน %{target}" create_domain_block_html: "%{name} ได้ปิดกั้นโดเมน %{target}" @@ -301,6 +302,7 @@ th: create_user_role_html: "%{name} ได้สร้างบทบาท %{target}" demote_user_html: "%{name} ได้ลดขั้นผู้ใช้ %{target}" destroy_announcement_html: "%{name} ได้ลบประกาศ %{target}" + destroy_canonical_email_block_html: "%{name} ได้เลิกปิดกั้นอีเมลที่มีแฮช %{target}" destroy_custom_emoji_html: "%{name} ได้ลบอีโมจิ %{target}" destroy_domain_allow_html: "%{name} ได้ไม่อนุญาตการติดต่อกับภายนอกกับโดเมน %{target}" destroy_domain_block_html: "%{name} ได้เลิกปิดกั้นโดเมน %{target}" @@ -658,7 +660,9 @@ th: other: "%{count} สิทธิอนุญาต" privileges: administrator: ผู้ดูแล + administrator_description: ผู้ใช้ที่มีสิทธิอนุญาตนี้จะข้ามทุกสิทธิอนุญาต delete_user_data: ลบข้อมูลผู้ใช้ + delete_user_data_description: อนุญาตให้ผู้ใช้ลบข้อมูลของผู้ใช้อื่น ๆ โดยทันที invite_users: เชิญผู้ใช้ invite_users_description: อนุญาตให้ผู้ใช้เชิญผู้คนใหม่ไปยังเซิร์ฟเวอร์ manage_announcements: จัดการประกาศ @@ -683,6 +687,8 @@ th: manage_taxonomies_description: อนุญาตให้ผู้ใช้ตรวจทานเนื้อหาที่กำลังนิยมและอัปเดตการตั้งค่าแฮชแท็ก manage_user_access: จัดการการเข้าถึงของผู้ใช้ manage_users: จัดการผู้ใช้ + manage_webhooks: จัดการเว็บฮุค + manage_webhooks_description: อนุญาตให้ผู้ใช้ตั้งค่าเว็บฮุคสำหรับเหตุการณ์การดูแล view_audit_log: ดูรายการบันทึกการตรวจสอบ view_audit_log_description: อนุญาตให้ผู้ใช้ดูประวัติการกระทำการดูแลในเซิร์ฟเวอร์ view_dashboard: ดูแดชบอร์ด @@ -771,6 +777,8 @@ th: desc_html: แสดงลิงก์ไปยังเส้นเวลาสาธารณะในหน้าเริ่มต้นและอนุญาตการเข้าถึง API ไปยังเส้นเวลาสาธารณะโดยไม่มีการรับรองความถูกต้อง title: อนุญาตการเข้าถึงเส้นเวลาสาธารณะที่ไม่ได้รับรองความถูกต้อง title: การตั้งค่าไซต์ + trendable_by_default: + title: อนุญาตแนวโน้มโดยไม่มีการตรวจทานล่วงหน้า trends: desc_html: แสดงเนื้อหาที่ตรวจทานแล้วก่อนหน้านี้ที่กำลังนิยมในปัจจุบันเป็นสาธารณะ title: แนวโน้ม @@ -800,8 +808,11 @@ th: suspend: "%{name} ได้ระงับบัญชีของ %{target}" appeal_approved: อุทธรณ์แล้ว system_checks: + elasticsearch_running_check: + message_html: ไม่สามารถเชื่อมต่อกับ Elasticsearch โปรดตรวจสอบว่าซอฟต์แวร์กำลังทำงาน หรือปิดใช้งานการค้นหาข้อความแบบเต็ม elasticsearch_version_check: message_html: 'รุ่น Elasticsearch ที่เข้ากันไม่ได้: %{value}' + version_comparison: Elasticsearch %{running_version} กำลังทำงานขณะที่ต้องการ %{required_version} rules_check: action: จัดการกฎของเซิร์ฟเวอร์ message_html: คุณไม่ได้กำหนดกฎของเซิร์ฟเวอร์ใด ๆ @@ -879,7 +890,10 @@ th: enabled_events: other: "%{count} เหตุการณ์ที่เปิดใช้งาน" events: เหตุการณ์ + new: เว็บฮุคใหม่ status: สถานะ + title: เว็บฮุค + webhook: เว็บฮุค admin_mailer: new_appeal: actions: @@ -978,6 +992,7 @@ th: setup: email_below_hint_html: หากที่อยู่อีเมลด้านล่างไม่ถูกต้อง คุณสามารถเปลี่ยนที่อยู่อีเมลที่นี่และรับอีเมลยืนยันใหม่ email_settings_hint_html: ส่งอีเมลยืนยันไปยัง %{email} แล้ว หากที่อยู่อีเมลนั้นไม่ถูกต้อง คุณสามารถเปลี่ยนที่อยู่อีเมลได้ในการตั้งค่าบัญชี + title: การตั้งค่า status: account_status: สถานะบัญชี confirming: กำลังรอการยืนยันอีเมลให้เสร็จสมบูรณ์ @@ -1152,6 +1167,10 @@ th: trending_now: กำลังนิยม generic: all: ทั้งหมด + all_items_on_page_selected_html: + other: เลือกอยู่ทั้งหมด %{count} รายการในหน้านี้ + all_matching_items_selected_html: + other: เลือกอยู่ทั้งหมด %{count} รายการที่ตรงกับการค้นหาของคุณ changes_saved_msg: บันทึกการเปลี่ยนแปลงสำเร็จ! copy: คัดลอก delete: ลบ @@ -1159,6 +1178,8 @@ th: none: ไม่มี order_by: เรียงลำดับตาม save_changes: บันทึกการเปลี่ยนแปลง + select_all_matching_items: + other: เลือกทั้งหมด %{count} รายการที่ตรงกับการค้นหาของคุณ today: วันนี้ validation_errors: other: ยังมีบางอย่างไม่ถูกต้อง! โปรดตรวจทาน %{count} ข้อผิดพลาดด้านล่าง diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 151cc57c8..82a00b7fc 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -1,7 +1,7 @@ --- tr: about: - about_hashtag_html: Bunlar #%{hashtag} ile etiketlenen genel tootlar. Fediverse içinde herhangi bir yerde bir hesabınız varsa, onlarla etkileşime geçebilirsiniz. + about_hashtag_html: Bunlar #%{hashtag} ile etiketlenen genel gönderiler. Fediverse içinde herhangi bir yerde bir hesabınız varsa, onlarla etkileşime geçebilirsiniz. about_mastodon_html: Mastodon ücretsiz ve açık kaynaklı bir sosyal ağdır. Merkezileştirilmemiş yapısı sayesinde diğer ticari sosyal platformların aksine iletişimininizin tek bir firmada tutulmasının/yönetilmesinin önüne geçer. Güvendiğiniz bir sunucuyu seçerek oradaki kişilerle etkileşimde bulunabilirsiniz. Herkes kendi Mastodon sunucusunu kurabilir ve sorunsuz bir şekilde Mastodon sosyal ağına dahil edebilir. about_this: Hakkında active_count_after: etkin diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 30e9f3e56..18b09369c 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -920,6 +920,7 @@ uk: tag_servers_dimension: Найуживаніші сервери tag_servers_measure: різні сервери tag_uses_measure: всього використань + description_html: Ці хештеґи, які бачить ваш сервер, в даний час з’являються у багатьох дописах. Це може допомогти вашим користувачам дізнатися про що люди в даний момент найбільше говорять. Жодні хештеґи публічно не відображаються, допоки ви їх не затвердите. listable: Може бути запропоновано not_listable: Не буде запропоновано not_trendable: Не показуватиметься серед популярних From 9ec25fd8dc3a9304930b9a79e92e0a0d20815ba4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Sep 2022 11:15:25 +0900 Subject: [PATCH 401/652] Bump @babel/preset-env from 7.19.0 to 7.19.1 (#19200) Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.19.0 to 7.19.1. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.19.1/packages/babel-preset-env) --- updated-dependencies: - dependency-name: "@babel/preset-env" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 117 ++++++++++----------------------------------------- 2 files changed, 24 insertions(+), 95 deletions(-) diff --git a/package.json b/package.json index 5a603d723..9d6d9e1f7 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "@babel/plugin-proposal-decorators": "^7.19.1", "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.19.1", - "@babel/preset-env": "^7.19.0", + "@babel/preset-env": "^7.19.1", "@babel/preset-react": "^7.18.6", "@babel/runtime": "^7.19.0", "@gamestdio/websocket": "^0.3.2", diff --git a/yarn.lock b/yarn.lock index e16166482..9d4c1f606 100644 --- a/yarn.lock +++ b/yarn.lock @@ -37,12 +37,7 @@ dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8", "@babel/compat-data@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.0.tgz#2a592fd89bacb1fcde68de31bee4f2f2dacb0e86" - integrity sha512-y5rqgTTPTmaF5e2nVhOxw+Ur9HDJLsWb6U/KpgUzRZEdPfE6VOubXBKLdbcUTijzRptednSBDQbYZBOSqJxpJw== - -"@babel/compat-data@^7.19.1": +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8", "@babel/compat-data@^7.19.1": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.1.tgz#72d647b4ff6a4f82878d184613353af1dd0290f9" integrity sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg== @@ -148,18 +143,6 @@ "@babel/helper-annotate-as-pure" "^7.18.6" regexpu-core "^5.1.0" -"@babel/helper-define-polyfill-provider@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz#bd10d0aca18e8ce012755395b05a79f45eca5073" - integrity sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg== - dependencies: - "@babel/helper-compilation-targets" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - "@babel/helper-define-polyfill-provider@^0.3.3": version "0.3.3" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" @@ -400,10 +383,10 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-proposal-optional-chaining" "^7.18.9" -"@babel/plugin-proposal-async-generator-functions@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.0.tgz#cf5740194f170467df20581712400487efc79ff1" - integrity sha512-nhEByMUTx3uZueJ/QkJuSlCfN4FGg+xy+vRsfGQGzSauq5ks2Deid2+05Q3KhfaUjvec1IGhw/Zm3cFm8JigTQ== +"@babel/plugin-proposal-async-generator-functions@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz#34f6f5174b688529342288cd264f80c9ea9fb4a7" + integrity sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q== dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-plugin-utils" "^7.19.0" @@ -837,10 +820,10 @@ "@babel/helper-module-transforms" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-named-capturing-groups-regex@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.0.tgz#58c52422e4f91a381727faed7d513c89d7f41ada" - integrity sha512-HDSuqOQzkU//kfGdiHBt71/hkDTApw4U/cMVgKgX7PqfB3LOaK+2GtCEsBu1dL9CkswDm0Gwehht1dCr421ULQ== +"@babel/plugin-transform-named-capturing-groups-regex@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz#ec7455bab6cd8fb05c525a94876f435a48128888" + integrity sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.19.0" "@babel/helper-plugin-utils" "^7.19.0" @@ -993,18 +976,18 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.19.0.tgz#fd18caf499a67d6411b9ded68dc70d01ed1e5da7" - integrity sha512-1YUju1TAFuzjIQqNM9WsF4U6VbD/8t3wEAlw3LFYuuEr+ywqLRcSXxFKz4DCEj+sN94l/XTDiUXYRrsvMpz9WQ== +"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.19.1.tgz#9f04c916f9c0205a48ebe5cc1be7768eb1983f67" + integrity sha512-c8B2c6D16Lp+Nt6HcD+nHl0VbPKVnNPTpszahuxJJnurfMtKeZ80A+qUv48Y7wqvS+dTFuLuaM9oYxyNHbCLWA== dependencies: - "@babel/compat-data" "^7.19.0" - "@babel/helper-compilation-targets" "^7.19.0" + "@babel/compat-data" "^7.19.1" + "@babel/helper-compilation-targets" "^7.19.1" "@babel/helper-plugin-utils" "^7.19.0" "@babel/helper-validator-option" "^7.18.6" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-async-generator-functions" "^7.19.0" + "@babel/plugin-proposal-async-generator-functions" "^7.19.1" "@babel/plugin-proposal-class-properties" "^7.18.6" "@babel/plugin-proposal-class-static-block" "^7.18.6" "@babel/plugin-proposal-dynamic-import" "^7.18.6" @@ -1052,7 +1035,7 @@ "@babel/plugin-transform-modules-commonjs" "^7.18.6" "@babel/plugin-transform-modules-systemjs" "^7.19.0" "@babel/plugin-transform-modules-umd" "^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.1" "@babel/plugin-transform-new-target" "^7.18.6" "@babel/plugin-transform-object-super" "^7.18.6" "@babel/plugin-transform-parameters" "^7.18.8" @@ -1068,10 +1051,10 @@ "@babel/plugin-transform-unicode-regex" "^7.18.6" "@babel/preset-modules" "^0.1.5" "@babel/types" "^7.19.0" - babel-plugin-polyfill-corejs2 "^0.3.2" - babel-plugin-polyfill-corejs3 "^0.5.3" - babel-plugin-polyfill-regenerator "^0.4.0" - core-js-compat "^3.22.1" + babel-plugin-polyfill-corejs2 "^0.3.3" + babel-plugin-polyfill-corejs3 "^0.6.0" + babel-plugin-polyfill-regenerator "^0.4.1" + core-js-compat "^3.25.1" semver "^6.3.0" "@babel/preset-modules@^0.1.5": @@ -2715,7 +2698,7 @@ babel-plugin-macros@^3.0.1: cosmiconfig "^7.0.0" resolve "^1.19.0" -babel-plugin-polyfill-corejs2@^0.3.2, babel-plugin-polyfill-corejs2@^0.3.3: +babel-plugin-polyfill-corejs2@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== @@ -2724,14 +2707,6 @@ babel-plugin-polyfill-corejs2@^0.3.2, babel-plugin-polyfill-corejs2@^0.3.3: "@babel/helper-define-polyfill-provider" "^0.3.3" semver "^6.1.1" -babel-plugin-polyfill-corejs3@^0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz#d7e09c9a899079d71a8b670c6181af56ec19c5c7" - integrity sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.2" - core-js-compat "^3.21.0" - babel-plugin-polyfill-corejs3@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" @@ -2740,7 +2715,7 @@ babel-plugin-polyfill-corejs3@^0.6.0: "@babel/helper-define-polyfill-provider" "^0.3.3" core-js-compat "^3.25.1" -babel-plugin-polyfill-regenerator@^0.4.0, babel-plugin-polyfill-regenerator@^0.4.1: +babel-plugin-polyfill-regenerator@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== @@ -3043,16 +3018,6 @@ browserslist@^4.0.0, browserslist@^4.12.0: escalade "^3.1.1" node-releases "^1.1.71" -browserslist@^4.21.0: - version "4.21.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.0.tgz#7ab19572361a140ecd1e023e2c1ed95edda0cefe" - integrity sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA== - dependencies: - caniuse-lite "^1.0.30001358" - electron-to-chromium "^1.4.164" - node-releases "^2.0.5" - update-browserslist-db "^1.0.0" - browserslist@^4.21.3, browserslist@^4.21.4: version "4.21.4" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" @@ -3251,11 +3216,6 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001219: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001310.tgz#da02cd07432c9eece6992689d1b84ca18139eea8" integrity sha512-cb9xTV8k9HTIUA3GnPUJCk0meUnrHL5gy5QePfDjxHyNBcnzPzrHFv5GqfP7ue5b1ZyzZL0RJboD6hQlPXjhjg== -caniuse-lite@^1.0.30001358: - version "1.0.30001359" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001359.tgz#a1c1cbe1c2da9e689638813618b4219acbd4925e" - integrity sha512-Xln/BAsPzEuiVLgJ2/45IaqD9jShtk3Y33anKb4+yLwQzws3+v6odKfpgES/cDEaZMLzSChpIGdbOYtH9MyuHw== - caniuse-lite@^1.0.30001400: version "1.0.30001406" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001406.tgz#d0146e7919635479f873b4507517b627f66ab269" @@ -3659,14 +3619,6 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js-compat@^3.21.0, core-js-compat@^3.22.1: - version "3.23.3" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.23.3.tgz#7d8503185be76bb6d8d592c291a4457a8e440aa9" - integrity sha512-WSzUs2h2vvmKsacLHNTdpyOC9k43AEhcGoFlVgCY4L7aw98oSBKtPL6vD0/TqZjRWRQYdDSLkzZIni4Crbbiqw== - dependencies: - browserslist "^4.21.0" - semver "7.0.0" - core-js-compat@^3.25.1: version "3.25.2" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.25.2.tgz#7875573586809909c69e03ef310810c1969ee138" @@ -4391,11 +4343,6 @@ electron-to-chromium@^1.3.723: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.736.tgz#f632d900a1f788dab22fec9c62ec5c9c8f0c4052" integrity sha512-DY8dA7gR51MSo66DqitEQoUMQ0Z+A2DSXFi7tK304bdTVqczCAfUuyQw6Wdg8hIoo5zIxkU1L24RQtUce1Ioig== -electron-to-chromium@^1.4.164: - version "1.4.170" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.170.tgz#0415fc489402e09bfbe1f0c99bbf4d73f31d48d4" - integrity sha512-rZ8PZLhK4ORPjFqLp9aqC4/S1j4qWFsPPz13xmWdrbBkU/LlxMcok+f+6f8YnQ57MiZwKtOaW15biZZsY5Igvw== - electron-to-chromium@^1.4.251: version "1.4.254" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.254.tgz#c6203583890abf88dfc0be046cd72d3b48f8beb6" @@ -7883,11 +7830,6 @@ node-releases@^1.1.71: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.72.tgz#14802ab6b1039a79a0c7d662b610a5bbd76eacbe" integrity sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw== -node-releases@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" - integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== - node-releases@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" @@ -10029,11 +9971,6 @@ selfsigned@^1.10.8: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" @@ -11370,14 +11307,6 @@ upath@^1.1.1, upath@^1.2.0: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -update-browserslist-db@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz#dbfc5a789caa26b1db8990796c2c8ebbce304824" - integrity sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - update-browserslist-db@^1.0.9: version "1.0.9" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz#2924d3927367a38d5c555413a7ce138fc95fcb18" From 04cd244a9a84e3c62cf3b4fa4c389db239ddfb0d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Sep 2022 11:21:51 +0900 Subject: [PATCH 402/652] Bump postcss-scss from 4.0.4 to 4.0.5 (#19198) Bumps [postcss-scss](https://github.com/postcss/postcss-scss) from 4.0.4 to 4.0.5. - [Release notes](https://github.com/postcss/postcss-scss/releases) - [Changelog](https://github.com/postcss/postcss-scss/blob/main/CHANGELOG.md) - [Commits](https://github.com/postcss/postcss-scss/compare/4.0.4...4.0.5) --- updated-dependencies: - dependency-name: postcss-scss dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 9d6d9e1f7..2b8b20307 100644 --- a/package.json +++ b/package.json @@ -155,7 +155,7 @@ "eslint-plugin-react": "~7.31.8", "jest": "^29.0.3", "jest-environment-jsdom": "^29.0.3", - "postcss-scss": "^4.0.4", + "postcss-scss": "^4.0.5", "prettier": "^2.7.1", "raf": "^3.4.1", "react-intl-translations-manager": "^5.0.3", diff --git a/yarn.lock b/yarn.lock index 9d4c1f606..25c820d13 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8823,10 +8823,10 @@ postcss-safe-parser@^6.0.0: resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz#bb4c29894171a94bc5c996b9a30317ef402adaa1" integrity sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ== -postcss-scss@^4.0.2, postcss-scss@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-4.0.4.tgz#aa8f60e19ee18259bc193db9e4b96edfce3f3b1f" - integrity sha512-aBBbVyzA8b3hUL0MGrpydxxXKXFZc5Eqva0Q3V9qsBOLEMsjb6w49WfpsoWzpEgcqJGW4t7Rio8WXVU9Gd8vWg== +postcss-scss@^4.0.2, postcss-scss@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-4.0.5.tgz#8ee33c1dda8d9d4753b565ec79014803dc6edabf" + integrity sha512-F7xpB6TrXyqUh3GKdyB4Gkp3QL3DDW1+uI+gxx/oJnUt/qXI4trj5OGlp9rOKdoABGULuqtqeG+3HEVQk4DjmA== postcss-selector-parser@^3.0.0: version "3.1.2" From 0b5e8ae2684673127ad2ff08ab54a66f176f5f61 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Sep 2022 11:22:49 +0900 Subject: [PATCH 403/652] Bump stylelint from 14.11.0 to 14.12.0 (#19194) Bumps [stylelint](https://github.com/stylelint/stylelint) from 14.11.0 to 14.12.0. - [Release notes](https://github.com/stylelint/stylelint/releases) - [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md) - [Commits](https://github.com/stylelint/stylelint/compare/14.11.0...14.12.0) --- updated-dependencies: - dependency-name: stylelint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 28 ++++++++++++++-------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 2b8b20307..8f61c70f5 100644 --- a/package.json +++ b/package.json @@ -160,7 +160,7 @@ "raf": "^3.4.1", "react-intl-translations-manager": "^5.0.3", "react-test-renderer": "^16.14.0", - "stylelint": "^14.11.0", + "stylelint": "^14.12.0", "stylelint-config-standard-scss": "^5.0.0", "webpack-dev-server": "^3.11.3", "yargs": "^17.5.1" diff --git a/yarn.lock b/yarn.lock index 25c820d13..3c85d1580 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4974,10 +4974,10 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.2.11, fast-glob@^3.2.9: - version "3.2.11" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" - integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== +fast-glob@^3.2.12, fast-glob@^3.2.9: + version "3.2.12" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -10670,10 +10670,10 @@ stylelint-scss@^4.0.0: postcss-selector-parser "^6.0.6" postcss-value-parser "^4.1.0" -stylelint@^14.11.0: - version "14.11.0" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.11.0.tgz#e2ecb28bbacab05e1fbeb84cbba23883b27499cc" - integrity sha512-OTLjLPxpvGtojEfpESWM8Ir64Z01E89xsisaBMUP/ngOx1+4VG2DPRcUyCCiin9Rd3kPXPsh/uwHd9eqnvhsYA== +stylelint@^14.12.0: + version "14.12.0" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.12.0.tgz#86d5b60d0f30a6bd0b59e1d4c85a267f0caef97e" + integrity sha512-9Sa+IsT31PN9zf9q5ZVZNvhT6jMVu6YhpI38g3Akn7vONipGL0GNd9QCblwtJ3ysaoM80P/+9mOcFB1xnytiQQ== dependencies: "@csstools/selector-specificity" "^2.0.2" balanced-match "^2.0.0" @@ -10681,7 +10681,7 @@ stylelint@^14.11.0: cosmiconfig "^7.0.1" css-functions-list "^3.1.0" debug "^4.3.4" - fast-glob "^3.2.11" + fast-glob "^3.2.12" fastest-levenshtein "^1.0.16" file-entry-cache "^6.0.1" global-modules "^2.0.0" @@ -10708,7 +10708,7 @@ stylelint@^14.11.0: string-width "^4.2.3" strip-ansi "^6.0.1" style-search "^0.1.0" - supports-hyperlinks "^2.2.0" + supports-hyperlinks "^2.3.0" svg-tags "^1.0.0" table "^6.8.0" v8-compile-cache "^2.3.0" @@ -10764,10 +10764,10 @@ supports-color@^8.0.0: dependencies: has-flag "^4.0.0" -supports-hyperlinks@^2.0.0, supports-hyperlinks@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" - integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== +supports-hyperlinks@^2.0.0, supports-hyperlinks@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" + integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== dependencies: has-flag "^4.0.0" supports-color "^7.0.0" From 303221db24d492e8ddd63c386f3ff43965ac7727 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Sep 2022 20:24:22 +0900 Subject: [PATCH 404/652] Bump classnames from 2.3.1 to 2.3.2 (#19197) Bumps [classnames](https://github.com/JedWatson/classnames) from 2.3.1 to 2.3.2. - [Release notes](https://github.com/JedWatson/classnames/releases) - [Changelog](https://github.com/JedWatson/classnames/blob/main/HISTORY.md) - [Commits](https://github.com/JedWatson/classnames/compare/v2.3.1...v2.3.2) --- updated-dependencies: - dependency-name: classnames dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 8f61c70f5..5472a41d8 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "babel-plugin-react-intl": "^6.2.0", "babel-plugin-transform-react-remove-prop-types": "^0.4.24", "blurhash": "^2.0.0", - "classnames": "^2.3.1", + "classnames": "^2.3.2", "cocoon-js-vanilla": "^1.3.0", "color-blend": "^3.0.1", "compression-webpack-plugin": "^6.1.1", diff --git a/yarn.lock b/yarn.lock index 3c85d1580..a6a897626 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3341,10 +3341,10 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -classnames@^2.2.5, classnames@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" - integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== +classnames@^2.2.5, classnames@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" + integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== clean-stack@^2.0.0: version "2.2.0" From 1cc32dd50c88934b086ca20c36318b937d5ece04 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Sep 2022 20:24:53 +0900 Subject: [PATCH 405/652] Bump i18n-tasks from 1.0.11 to 1.0.12 (#19195) Bumps [i18n-tasks](https://github.com/glebm/i18n-tasks) from 1.0.11 to 1.0.12. - [Release notes](https://github.com/glebm/i18n-tasks/releases) - [Changelog](https://github.com/glebm/i18n-tasks/blob/main/CHANGES.md) - [Commits](https://github.com/glebm/i18n-tasks/compare/v1.0.11...v1.0.12) --- updated-dependencies: - dependency-name: i18n-tasks dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 8b8a15623..ae43ce254 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -110,12 +110,11 @@ GEM coderay (>= 1.0.0) erubi (>= 1.0.0) rack (>= 0.9.0) - better_html (1.0.16) - actionview (>= 4.0) - activesupport (>= 4.0) + better_html (2.0.1) + actionview (>= 6.0) + activesupport (>= 6.0) ast (~> 2.0) erubi (~> 1.4) - html_tokenizer (~> 0.0.6) parser (>= 2.4) smart_properties bindata (2.4.10) @@ -299,7 +298,6 @@ GEM highline (2.0.3) hiredis (0.6.3) hkdf (0.3.0) - html_tokenizer (0.0.7) htmlentities (4.3.4) http (5.1.0) addressable (~> 2.8) @@ -316,10 +314,10 @@ GEM rainbow (>= 2.0.0) i18n (1.12.0) concurrent-ruby (~> 1.0) - i18n-tasks (1.0.11) + i18n-tasks (1.0.12) activesupport (>= 4.0.2) ast (>= 2.1.0) - better_html (~> 1.0) + better_html (>= 1.0, < 3.0) erubi highline (>= 2.0.0) i18n @@ -384,7 +382,7 @@ GEM activesupport (>= 4) railties (>= 4) request_store (~> 1.0) - loofah (2.18.0) + loofah (2.19.0) crass (~> 1.0.2) nokogiri (>= 1.5.9) mail (2.7.1) @@ -452,7 +450,7 @@ GEM orm_adapter (0.5.0) ox (2.14.11) parallel (1.22.1) - parser (3.1.2.0) + parser (3.1.2.1) ast (~> 2.4.1) parslet (2.0.0) pastel (0.8.0) @@ -688,7 +686,7 @@ GEM unf (0.1.4) unf_ext unf_ext (0.0.8.2) - unicode-display_width (2.1.0) + unicode-display_width (2.3.0) uniform_notifier (1.16.0) validate_email (0.1.6) activemodel (>= 3.0) From 84aff598ea0b5670ef2a0d1009bca9c9136c2d50 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 21 Sep 2022 14:48:35 +0200 Subject: [PATCH 406/652] Fix typo in SignatureVerification (#19209) Fix regression from #15605 --- app/controllers/concerns/signature_verification.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/concerns/signature_verification.rb b/app/controllers/concerns/signature_verification.rb index 89dc828f4..4da068aed 100644 --- a/app/controllers/concerns/signature_verification.rb +++ b/app/controllers/concerns/signature_verification.rb @@ -98,7 +98,7 @@ module SignatureVerification fail_with! e.message rescue HTTP::Error, OpenSSL::SSL::SSLError => e fail_with! "Failed to fetch remote data: #{e.message}" - rescue Mastodon::UnexptectedResponseError + rescue Mastodon::UnexpectedResponseError fail_with! 'Failed to fetch remote data (got unexpected reply from server)' rescue Stoplight::Error::RedLight fail_with! 'Fetching attempt skipped because of recent connection failure' From 8cf7006d4efbcfdd4a4ab688db1bcc73a2915a47 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 21 Sep 2022 22:45:57 +0200 Subject: [PATCH 407/652] Refactor ActivityPub handling to prepare for non-Account actors (#19212) * Move ActivityPub::FetchRemoteAccountService to ActivityPub::FetchRemoteActorService ActivityPub::FetchRemoteAccountService is kept as a wrapper for when the actor is specifically required to be an Account * Refactor SignatureVerification to allow non-Account actors * fixup! Move ActivityPub::FetchRemoteAccountService to ActivityPub::FetchRemoteActorService * Refactor ActivityPub::FetchRemoteKeyService to potentially return non-Account actors * Refactor inbound ActivityPub payload processing to accept non-Account actors * Refactor inbound ActivityPub processing to accept activities relayed through non-Account * Refactor how Account key URIs are built * Refactor Request and drop unused key_id_format parameter * Rename ActivityPub::Dereferencer `signature_account` to `signature_actor` --- app/controllers/accounts_controller.rb | 2 +- .../activitypub/claims_controller.rb | 2 +- .../activitypub/collections_controller.rb | 2 +- .../followers_synchronizations_controller.rb | 2 +- .../activitypub/inboxes_controller.rb | 10 +- .../activitypub/outboxes_controller.rb | 2 +- .../activitypub/replies_controller.rb | 2 +- .../concerns/signature_verification.rb | 52 +++-- .../follower_accounts_controller.rb | 2 +- .../following_accounts_controller.rb | 2 +- app/controllers/statuses_controller.rb | 2 +- app/controllers/tags_controller.rb | 2 +- app/lib/activitypub/activity.rb | 10 +- app/lib/activitypub/dereferencer.rb | 6 +- app/lib/activitypub/linked_data_signature.rb | 6 +- app/lib/activitypub/tag_manager.rb | 8 + app/lib/request.rb | 18 +- .../activitypub/public_key_serializer.rb | 2 +- .../fetch_remote_account_service.rb | 78 +------- .../activitypub/fetch_remote_actor_service.rb | 80 ++++++++ .../activitypub/fetch_remote_key_service.rb | 22 +-- .../activitypub/process_collection_service.rb | 11 +- app/services/fetch_resource_service.rb | 2 +- app/services/keys/claim_service.rb | 2 +- app/services/resolve_url_service.rb | 4 +- app/workers/activitypub/delivery_worker.rb | 2 +- app/workers/activitypub/processing_worker.rb | 12 +- spec/controllers/accounts_controller_spec.rb | 2 +- .../collections_controller_spec.rb | 2 +- ...lowers_synchronizations_controller_spec.rb | 2 +- .../activitypub/inboxes_controller_spec.rb | 2 +- .../activitypub/outboxes_controller_spec.rb | 2 +- .../activitypub/replies_controller_spec.rb | 2 +- .../concerns/signature_verification_spec.rb | 45 +++++ spec/controllers/statuses_controller_spec.rb | 2 +- .../lib/activitypub/activity/announce_spec.rb | 2 +- spec/lib/activitypub/dereferencer_spec.rb | 8 +- .../activitypub/linked_data_signature_spec.rb | 14 +- .../fetch_remote_actor_service_spec.rb | 180 ++++++++++++++++++ .../process_collection_service_spec.rb | 6 +- spec/services/fetch_resource_service_spec.rb | 2 +- 41 files changed, 436 insertions(+), 180 deletions(-) create mode 100644 app/services/activitypub/fetch_remote_actor_service.rb create mode 100644 spec/services/activitypub/fetch_remote_actor_service_spec.rb diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb index fe7d934dc..d92f91b30 100644 --- a/app/controllers/accounts_controller.rb +++ b/app/controllers/accounts_controller.rb @@ -7,7 +7,7 @@ class AccountsController < ApplicationController include AccountControllerConcern include SignatureAuthentication - before_action :require_signature!, if: -> { request.format == :json && authorized_fetch_mode? } + before_action :require_account_signature!, if: -> { request.format == :json && authorized_fetch_mode? } before_action :set_cache_headers before_action :set_body_classes diff --git a/app/controllers/activitypub/claims_controller.rb b/app/controllers/activitypub/claims_controller.rb index 08ad952df..339333e46 100644 --- a/app/controllers/activitypub/claims_controller.rb +++ b/app/controllers/activitypub/claims_controller.rb @@ -6,7 +6,7 @@ class ActivityPub::ClaimsController < ActivityPub::BaseController skip_before_action :authenticate_user! - before_action :require_signature! + before_action :require_account_signature! before_action :set_claim_result def create diff --git a/app/controllers/activitypub/collections_controller.rb b/app/controllers/activitypub/collections_controller.rb index e4e994a98..d94a285ea 100644 --- a/app/controllers/activitypub/collections_controller.rb +++ b/app/controllers/activitypub/collections_controller.rb @@ -4,7 +4,7 @@ class ActivityPub::CollectionsController < ActivityPub::BaseController include SignatureVerification include AccountOwnedConcern - before_action :require_signature!, if: :authorized_fetch_mode? + before_action :require_account_signature!, if: :authorized_fetch_mode? before_action :set_items before_action :set_size before_action :set_type diff --git a/app/controllers/activitypub/followers_synchronizations_controller.rb b/app/controllers/activitypub/followers_synchronizations_controller.rb index 940b77cf0..4e445bcb1 100644 --- a/app/controllers/activitypub/followers_synchronizations_controller.rb +++ b/app/controllers/activitypub/followers_synchronizations_controller.rb @@ -4,7 +4,7 @@ class ActivityPub::FollowersSynchronizationsController < ActivityPub::BaseContro include SignatureVerification include AccountOwnedConcern - before_action :require_signature! + before_action :require_account_signature! before_action :set_items before_action :set_cache_headers diff --git a/app/controllers/activitypub/inboxes_controller.rb b/app/controllers/activitypub/inboxes_controller.rb index 92dcb5ac7..5ee85474e 100644 --- a/app/controllers/activitypub/inboxes_controller.rb +++ b/app/controllers/activitypub/inboxes_controller.rb @@ -6,7 +6,7 @@ class ActivityPub::InboxesController < ActivityPub::BaseController include AccountOwnedConcern before_action :skip_unknown_actor_activity - before_action :require_signature! + before_action :require_actor_signature! skip_before_action :authenticate_user! def create @@ -49,17 +49,17 @@ class ActivityPub::InboxesController < ActivityPub::BaseController end def upgrade_account - if signed_request_account.ostatus? + if signed_request_account&.ostatus? signed_request_account.update(last_webfingered_at: nil) ResolveAccountWorker.perform_async(signed_request_account.acct) end - DeliveryFailureTracker.reset!(signed_request_account.inbox_url) + DeliveryFailureTracker.reset!(signed_request_actor.inbox_url) end def process_collection_synchronization raw_params = request.headers['Collection-Synchronization'] - return if raw_params.blank? || ENV['DISABLE_FOLLOWERS_SYNCHRONIZATION'] == 'true' + return if raw_params.blank? || ENV['DISABLE_FOLLOWERS_SYNCHRONIZATION'] == 'true' || signed_request_account.nil? # Re-using the syntax for signature parameters tree = SignatureParamsParser.new.parse(raw_params) @@ -71,6 +71,6 @@ class ActivityPub::InboxesController < ActivityPub::BaseController end def process_payload - ActivityPub::ProcessingWorker.perform_async(signed_request_account.id, body, @account&.id) + ActivityPub::ProcessingWorker.perform_async(signed_request_actor.id, body, @account&.id, signed_request_actor.class.name) end end diff --git a/app/controllers/activitypub/outboxes_controller.rb b/app/controllers/activitypub/outboxes_controller.rb index cd3992502..60d201f76 100644 --- a/app/controllers/activitypub/outboxes_controller.rb +++ b/app/controllers/activitypub/outboxes_controller.rb @@ -6,7 +6,7 @@ class ActivityPub::OutboxesController < ActivityPub::BaseController include SignatureVerification include AccountOwnedConcern - before_action :require_signature!, if: :authorized_fetch_mode? + before_action :require_account_signature!, if: :authorized_fetch_mode? before_action :set_statuses before_action :set_cache_headers diff --git a/app/controllers/activitypub/replies_controller.rb b/app/controllers/activitypub/replies_controller.rb index 4ff7cfa08..8e0f9de2e 100644 --- a/app/controllers/activitypub/replies_controller.rb +++ b/app/controllers/activitypub/replies_controller.rb @@ -7,7 +7,7 @@ class ActivityPub::RepliesController < ActivityPub::BaseController DESCENDANTS_LIMIT = 60 - before_action :require_signature!, if: :authorized_fetch_mode? + before_action :require_account_signature!, if: :authorized_fetch_mode? before_action :set_status before_action :set_cache_headers before_action :set_replies diff --git a/app/controllers/concerns/signature_verification.rb b/app/controllers/concerns/signature_verification.rb index 4da068aed..2394574b3 100644 --- a/app/controllers/concerns/signature_verification.rb +++ b/app/controllers/concerns/signature_verification.rb @@ -45,10 +45,14 @@ module SignatureVerification end end - def require_signature! + def require_account_signature! render plain: signature_verification_failure_reason, status: signature_verification_failure_code unless signed_request_account end + def require_actor_signature! + render plain: signature_verification_failure_reason, status: signature_verification_failure_code unless signed_request_actor + end + def signed_request? request.headers['Signature'].present? end @@ -68,7 +72,11 @@ module SignatureVerification end def signed_request_account - return @signed_request_account if defined?(@signed_request_account) + signed_request_actor.is_a?(Account) ? signed_request_actor : nil + end + + def signed_request_actor + return @signed_request_actor if defined?(@signed_request_actor) raise SignatureVerificationError, 'Request not signed' unless signed_request? raise SignatureVerificationError, 'Incompatible request signature. keyId and signature are required' if missing_required_signature_parameters? @@ -78,22 +86,22 @@ module SignatureVerification verify_signature_strength! verify_body_digest! - account = account_from_key_id(signature_params['keyId']) + actor = actor_from_key_id(signature_params['keyId']) - raise SignatureVerificationError, "Public key not found for key #{signature_params['keyId']}" if account.nil? + raise SignatureVerificationError, "Public key not found for key #{signature_params['keyId']}" if actor.nil? signature = Base64.decode64(signature_params['signature']) compare_signed_string = build_signed_string - return account unless verify_signature(account, signature, compare_signed_string).nil? + return actor unless verify_signature(actor, signature, compare_signed_string).nil? - account = stoplight_wrap_request { account.possibly_stale? ? account.refresh! : account_refresh_key(account) } + actor = stoplight_wrap_request { actor_refresh_key!(actor) } - raise SignatureVerificationError, "Public key not found for key #{signature_params['keyId']}" if account.nil? + raise SignatureVerificationError, "Public key not found for key #{signature_params['keyId']}" if actor.nil? - return account unless verify_signature(account, signature, compare_signed_string).nil? + return actor unless verify_signature(actor, signature, compare_signed_string).nil? - fail_with! "Verification failed for #{account.username}@#{account.domain} #{account.uri} using rsa-sha256 (RSASSA-PKCS1-v1_5 with SHA-256)" + fail_with! "Verification failed for #{actor.to_log_human_identifier} #{actor.uri} using rsa-sha256 (RSASSA-PKCS1-v1_5 with SHA-256)" rescue SignatureVerificationError => e fail_with! e.message rescue HTTP::Error, OpenSSL::SSL::SSLError => e @@ -112,7 +120,7 @@ module SignatureVerification def fail_with!(message) @signature_verification_failure_reason = message - @signed_request_account = nil + @signed_request_actor = nil end def signature_params @@ -160,10 +168,10 @@ module SignatureVerification raise SignatureVerificationError, "Invalid Digest value. Computed SHA-256 digest: #{body_digest}; given: #{sha256[1]}" end - def verify_signature(account, signature, compare_signed_string) - if account.keypair.public_key.verify(OpenSSL::Digest.new('SHA256'), signature, compare_signed_string) - @signed_request_account = account - @signed_request_account + def verify_signature(actor, signature, compare_signed_string) + if actor.keypair.public_key.verify(OpenSSL::Digest.new('SHA256'), signature, compare_signed_string) + @signed_request_actor = actor + @signed_request_actor end rescue OpenSSL::PKey::RSAError nil @@ -226,7 +234,7 @@ module SignatureVerification signature_params['keyId'].blank? || signature_params['signature'].blank? end - def account_from_key_id(key_id) + def actor_from_key_id(key_id) domain = key_id.start_with?('acct:') ? key_id.split('@').last : key_id if domain_not_allowed?(domain) @@ -237,13 +245,13 @@ module SignatureVerification if key_id.start_with?('acct:') stoplight_wrap_request { ResolveAccountService.new.call(key_id.gsub(/\Aacct:/, ''), suppress_errors: false) } elsif !ActivityPub::TagManager.instance.local_uri?(key_id) - account = ActivityPub::TagManager.instance.uri_to_resource(key_id, Account) + account = ActivityPub::TagManager.instance.uri_to_actor(key_id) account ||= stoplight_wrap_request { ActivityPub::FetchRemoteKeyService.new.call(key_id, id: false, suppress_errors: false) } account end rescue Mastodon::PrivateNetworkAddressError => e raise SignatureVerificationError, "Requests to private network addresses are disallowed (tried to query #{e.host})" - rescue Mastodon::HostValidationError, ActivityPub::FetchRemoteAccountService::Error, ActivityPub::FetchRemoteKeyService::Error, Webfinger::Error => e + rescue Mastodon::HostValidationError, ActivityPub::FetchRemoteActorService::Error, ActivityPub::FetchRemoteKeyService::Error, Webfinger::Error => e raise SignatureVerificationError, e.message end @@ -255,12 +263,14 @@ module SignatureVerification .run end - def account_refresh_key(account) - return if account.local? || !account.activitypub? - ActivityPub::FetchRemoteAccountService.new.call(account.uri, only_key: true, suppress_errors: false) + def actor_refresh_key!(actor) + return if actor.local? || !actor.activitypub? + return actor.refresh! if actor.respond_to?(:refresh!) && actor.possibly_stale? + + ActivityPub::FetchRemoteActorService.new.call(actor.uri, only_key: true, suppress_errors: false) rescue Mastodon::PrivateNetworkAddressError => e raise SignatureVerificationError, "Requests to private network addresses are disallowed (tried to query #{e.host})" - rescue Mastodon::HostValidationError, ActivityPub::FetchRemoteAccountService::Error, Webfinger::Error => e + rescue Mastodon::HostValidationError, ActivityPub::FetchRemoteActorService::Error, Webfinger::Error => e raise SignatureVerificationError, e.message end end diff --git a/app/controllers/follower_accounts_controller.rb b/app/controllers/follower_accounts_controller.rb index f3f8336c9..da7bb4ed2 100644 --- a/app/controllers/follower_accounts_controller.rb +++ b/app/controllers/follower_accounts_controller.rb @@ -4,7 +4,7 @@ class FollowerAccountsController < ApplicationController include AccountControllerConcern include SignatureVerification - before_action :require_signature!, if: -> { request.format == :json && authorized_fetch_mode? } + before_action :require_account_signature!, if: -> { request.format == :json && authorized_fetch_mode? } before_action :set_cache_headers skip_around_action :set_locale, if: -> { request.format == :json } diff --git a/app/controllers/following_accounts_controller.rb b/app/controllers/following_accounts_controller.rb index 69f0321f8..c37e3b68c 100644 --- a/app/controllers/following_accounts_controller.rb +++ b/app/controllers/following_accounts_controller.rb @@ -4,7 +4,7 @@ class FollowingAccountsController < ApplicationController include AccountControllerConcern include SignatureVerification - before_action :require_signature!, if: -> { request.format == :json && authorized_fetch_mode? } + before_action :require_account_signature!, if: -> { request.format == :json && authorized_fetch_mode? } before_action :set_cache_headers skip_around_action :set_locale, if: -> { request.format == :json } diff --git a/app/controllers/statuses_controller.rb b/app/controllers/statuses_controller.rb index c52170d08..7d9db4d5b 100644 --- a/app/controllers/statuses_controller.rb +++ b/app/controllers/statuses_controller.rb @@ -8,7 +8,7 @@ class StatusesController < ApplicationController layout 'public' - before_action :require_signature!, only: [:show, :activity], if: -> { request.format == :json && authorized_fetch_mode? } + before_action :require_account_signature!, only: [:show, :activity], if: -> { request.format == :json && authorized_fetch_mode? } before_action :set_status before_action :set_instance_presenter before_action :set_link_headers diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb index b82da8f0c..6dbc2667a 100644 --- a/app/controllers/tags_controller.rb +++ b/app/controllers/tags_controller.rb @@ -8,7 +8,7 @@ class TagsController < ApplicationController layout 'public' - before_action :require_signature!, if: -> { request.format == :json && authorized_fetch_mode? } + before_action :require_account_signature!, if: -> { request.format == :json && authorized_fetch_mode? } before_action :authenticate_user!, if: :whitelist_mode? before_action :set_local before_action :set_tag diff --git a/app/lib/activitypub/activity.rb b/app/lib/activitypub/activity.rb index 7ff06ea39..f4c67cccd 100644 --- a/app/lib/activitypub/activity.rb +++ b/app/lib/activitypub/activity.rb @@ -116,12 +116,12 @@ class ActivityPub::Activity def dereference_object! return unless @object.is_a?(String) - dereferencer = ActivityPub::Dereferencer.new(@object, permitted_origin: @account.uri, signature_account: signed_fetch_account) + dereferencer = ActivityPub::Dereferencer.new(@object, permitted_origin: @account.uri, signature_actor: signed_fetch_actor) @object = dereferencer.object unless dereferencer.object.nil? end - def signed_fetch_account + def signed_fetch_actor return Account.find(@options[:delivered_to_account_id]) if @options[:delivered_to_account_id].present? first_mentioned_local_account || first_local_follower @@ -163,15 +163,15 @@ class ActivityPub::Activity end def followed_by_local_accounts? - @account.passive_relationships.exists? || @options[:relayed_through_account]&.passive_relationships&.exists? + @account.passive_relationships.exists? || (@options[:relayed_through_actor].is_a?(Account) && @options[:relayed_through_actor].passive_relationships&.exists?) end def requested_through_relay? - @options[:relayed_through_account] && Relay.find_by(inbox_url: @options[:relayed_through_account].inbox_url)&.enabled? + @options[:relayed_through_actor] && Relay.find_by(inbox_url: @options[:relayed_through_actor].inbox_url)&.enabled? end def reject_payload! - Rails.logger.info("Rejected #{@json['type']} activity #{@json['id']} from #{@account.uri}#{@options[:relayed_through_account] && "via #{@options[:relayed_through_account].uri}"}") + Rails.logger.info("Rejected #{@json['type']} activity #{@json['id']} from #{@account.uri}#{@options[:relayed_through_actor] && "via #{@options[:relayed_through_actor].uri}"}") nil end end diff --git a/app/lib/activitypub/dereferencer.rb b/app/lib/activitypub/dereferencer.rb index bea69608f..4d7756d71 100644 --- a/app/lib/activitypub/dereferencer.rb +++ b/app/lib/activitypub/dereferencer.rb @@ -3,10 +3,10 @@ class ActivityPub::Dereferencer include JsonLdHelper - def initialize(uri, permitted_origin: nil, signature_account: nil) + def initialize(uri, permitted_origin: nil, signature_actor: nil) @uri = uri @permitted_origin = permitted_origin - @signature_account = signature_account + @signature_actor = signature_actor end def object @@ -46,7 +46,7 @@ class ActivityPub::Dereferencer req.add_headers('Accept' => 'application/activity+json, application/ld+json') req.add_headers(headers) if headers - req.on_behalf_of(@signature_account) if @signature_account + req.on_behalf_of(@signature_actor) if @signature_actor req.perform do |res| if res.code == 200 diff --git a/app/lib/activitypub/linked_data_signature.rb b/app/lib/activitypub/linked_data_signature.rb index e853a970e..f90adaf6c 100644 --- a/app/lib/activitypub/linked_data_signature.rb +++ b/app/lib/activitypub/linked_data_signature.rb @@ -9,7 +9,7 @@ class ActivityPub::LinkedDataSignature @json = json.with_indifferent_access end - def verify_account! + def verify_actor! return unless @json['signature'].is_a?(Hash) type = @json['signature']['type'] @@ -18,7 +18,7 @@ class ActivityPub::LinkedDataSignature return unless type == 'RsaSignature2017' - creator = ActivityPub::TagManager.instance.uri_to_resource(creator_uri, Account) + creator = ActivityPub::TagManager.instance.uri_to_actor(creator_uri) creator ||= ActivityPub::FetchRemoteKeyService.new.call(creator_uri, id: false) return if creator.nil? @@ -35,7 +35,7 @@ class ActivityPub::LinkedDataSignature def sign!(creator, sign_with: nil) options = { 'type' => 'RsaSignature2017', - 'creator' => [ActivityPub::TagManager.instance.uri_for(creator), '#main-key'].join, + 'creator' => ActivityPub::TagManager.instance.key_uri_for(creator), 'created' => Time.now.utc.iso8601, } diff --git a/app/lib/activitypub/tag_manager.rb b/app/lib/activitypub/tag_manager.rb index f6b9741fa..3d6b28ef5 100644 --- a/app/lib/activitypub/tag_manager.rb +++ b/app/lib/activitypub/tag_manager.rb @@ -44,6 +44,10 @@ class ActivityPub::TagManager end end + def key_uri_for(target) + [uri_for(target), '#main-key'].join + end + def uri_for_username(username) account_url(username: username) end @@ -155,6 +159,10 @@ class ActivityPub::TagManager path_params[param] end + def uri_to_actor(uri) + uri_to_resource(uri, Account) + end + def uri_to_resource(uri, klass) return if uri.nil? diff --git a/app/lib/request.rb b/app/lib/request.rb index eac04c798..648aa3085 100644 --- a/app/lib/request.rb +++ b/app/lib/request.rb @@ -40,12 +40,11 @@ class Request set_digest! if options.key?(:body) end - def on_behalf_of(account, key_id_format = :uri, sign_with: nil) - raise ArgumentError, 'account must not be nil' if account.nil? + def on_behalf_of(actor, sign_with: nil) + raise ArgumentError, 'actor must not be nil' if actor.nil? - @account = account - @keypair = sign_with.present? ? OpenSSL::PKey::RSA.new(sign_with) : @account.keypair - @key_id_format = key_id_format + @actor = actor + @keypair = sign_with.present? ? OpenSSL::PKey::RSA.new(sign_with) : @actor.keypair self end @@ -79,7 +78,7 @@ class Request end def headers - (@account ? @headers.merge('Signature' => signature) : @headers).without(REQUEST_TARGET) + (@actor ? @headers.merge('Signature' => signature) : @headers).without(REQUEST_TARGET) end class << self @@ -128,12 +127,7 @@ class Request end def key_id - case @key_id_format - when :acct - @account.to_webfinger_s - when :uri - [ActivityPub::TagManager.instance.uri_for(@account), '#main-key'].join - end + ActivityPub::TagManager.instance.key_uri_for(@actor) end def http_client diff --git a/app/serializers/activitypub/public_key_serializer.rb b/app/serializers/activitypub/public_key_serializer.rb index 62ed49e81..8621517e7 100644 --- a/app/serializers/activitypub/public_key_serializer.rb +++ b/app/serializers/activitypub/public_key_serializer.rb @@ -6,7 +6,7 @@ class ActivityPub::PublicKeySerializer < ActivityPub::Serializer attributes :id, :owner, :public_key_pem def id - [ActivityPub::TagManager.instance.uri_for(object), '#main-key'].join + ActivityPub::TagManager.instance.key_uri_for(object) end def owner diff --git a/app/services/activitypub/fetch_remote_account_service.rb b/app/services/activitypub/fetch_remote_account_service.rb index d7d739c59..ca7a8c6ca 100644 --- a/app/services/activitypub/fetch_remote_account_service.rb +++ b/app/services/activitypub/fetch_remote_account_service.rb @@ -1,80 +1,12 @@ # frozen_string_literal: true -class ActivityPub::FetchRemoteAccountService < BaseService - include JsonLdHelper - include DomainControlHelper - include WebfingerHelper - - class Error < StandardError; end - - SUPPORTED_TYPES = %w(Application Group Organization Person Service).freeze - +class ActivityPub::FetchRemoteAccountService < ActivityPub::FetchRemoteActorService # Does a WebFinger roundtrip on each call, unless `only_key` is true def call(uri, id: true, prefetched_body: nil, break_on_redirect: false, only_key: false, suppress_errors: true) - return if domain_not_allowed?(uri) - return ActivityPub::TagManager.instance.uri_to_resource(uri, Account) if ActivityPub::TagManager.instance.local_uri?(uri) + actor = super + return actor if actor.nil? || actor.is_a?(Account) - @json = begin - if prefetched_body.nil? - fetch_resource(uri, id) - else - body_to_json(prefetched_body, compare_id: id ? uri : nil) - end - rescue Oj::ParseError - raise Error, "Error parsing JSON-LD document #{uri}" - end - - raise Error, "Error fetching actor JSON at #{uri}" if @json.nil? - raise Error, "Unsupported JSON-LD context for document #{uri}" unless supported_context? - raise Error, "Unexpected object type for actor #{uri} (expected any of: #{SUPPORTED_TYPES})" unless expected_type? - raise Error, "Actor #{uri} has moved to #{@json['movedTo']}" if break_on_redirect && @json['movedTo'].present? - - @uri = @json['id'] - @username = @json['preferredUsername'] - @domain = Addressable::URI.parse(@uri).normalized_host - - check_webfinger! unless only_key - - ActivityPub::ProcessAccountService.new.call(@username, @domain, @json, only_key: only_key, verified_webfinger: !only_key) - rescue Error => e - Rails.logger.debug "Fetching account #{uri} failed: #{e.message}" - raise unless suppress_errors - end - - private - - def check_webfinger! - webfinger = webfinger!("acct:#{@username}@#{@domain}") - confirmed_username, confirmed_domain = split_acct(webfinger.subject) - - if @username.casecmp(confirmed_username).zero? && @domain.casecmp(confirmed_domain).zero? - raise Error, "Webfinger response for #{@username}@#{@domain} does not loop back to #{@uri}" if webfinger.link('self', 'href') != @uri - return - end - - webfinger = webfinger!("acct:#{confirmed_username}@#{confirmed_domain}") - @username, @domain = split_acct(webfinger.subject) - - unless confirmed_username.casecmp(@username).zero? && confirmed_domain.casecmp(@domain).zero? - raise Webfinger::RedirectError, "Too many webfinger redirects for URI #{uri} (stopped at #{@username}@#{@domain})" - end - - raise Error, "Webfinger response for #{@username}@#{@domain} does not loop back to #{@uri}" if webfinger.link('self', 'href') != @uri - rescue Webfinger::RedirectError => e - raise Error, e.message - rescue Webfinger::Error => e - raise Error, "Webfinger error when resolving #{@username}@#{@domain}: #{e.message}" - end - - def split_acct(acct) - acct.gsub(/\Aacct:/, '').split('@') - end - - def supported_context? - super(@json) - end - - def expected_type? - equals_or_includes_any?(@json['type'], SUPPORTED_TYPES) + Rails.logger.debug "Fetching account #{uri} failed: Expected Account, got #{actor.class.name}" + raise Error, "Expected Account, got #{actor.class.name}" unless suppress_errors end end diff --git a/app/services/activitypub/fetch_remote_actor_service.rb b/app/services/activitypub/fetch_remote_actor_service.rb new file mode 100644 index 000000000..17bf2f287 --- /dev/null +++ b/app/services/activitypub/fetch_remote_actor_service.rb @@ -0,0 +1,80 @@ +# frozen_string_literal: true + +class ActivityPub::FetchRemoteActorService < BaseService + include JsonLdHelper + include DomainControlHelper + include WebfingerHelper + + class Error < StandardError; end + + SUPPORTED_TYPES = %w(Application Group Organization Person Service).freeze + + # Does a WebFinger roundtrip on each call, unless `only_key` is true + def call(uri, id: true, prefetched_body: nil, break_on_redirect: false, only_key: false, suppress_errors: true) + return if domain_not_allowed?(uri) + return ActivityPub::TagManager.instance.uri_to_actor(uri) if ActivityPub::TagManager.instance.local_uri?(uri) + + @json = begin + if prefetched_body.nil? + fetch_resource(uri, id) + else + body_to_json(prefetched_body, compare_id: id ? uri : nil) + end + rescue Oj::ParseError + raise Error, "Error parsing JSON-LD document #{uri}" + end + + raise Error, "Error fetching actor JSON at #{uri}" if @json.nil? + raise Error, "Unsupported JSON-LD context for document #{uri}" unless supported_context? + raise Error, "Unexpected object type for actor #{uri} (expected any of: #{SUPPORTED_TYPES})" unless expected_type? + raise Error, "Actor #{uri} has moved to #{@json['movedTo']}" if break_on_redirect && @json['movedTo'].present? + + @uri = @json['id'] + @username = @json['preferredUsername'] + @domain = Addressable::URI.parse(@uri).normalized_host + + check_webfinger! unless only_key + + ActivityPub::ProcessAccountService.new.call(@username, @domain, @json, only_key: only_key, verified_webfinger: !only_key) + rescue Error => e + Rails.logger.debug "Fetching actor #{uri} failed: #{e.message}" + raise unless suppress_errors + end + + private + + def check_webfinger! + webfinger = webfinger!("acct:#{@username}@#{@domain}") + confirmed_username, confirmed_domain = split_acct(webfinger.subject) + + if @username.casecmp(confirmed_username).zero? && @domain.casecmp(confirmed_domain).zero? + raise Error, "Webfinger response for #{@username}@#{@domain} does not loop back to #{@uri}" if webfinger.link('self', 'href') != @uri + return + end + + webfinger = webfinger!("acct:#{confirmed_username}@#{confirmed_domain}") + @username, @domain = split_acct(webfinger.subject) + + unless confirmed_username.casecmp(@username).zero? && confirmed_domain.casecmp(@domain).zero? + raise Webfinger::RedirectError, "Too many webfinger redirects for URI #{uri} (stopped at #{@username}@#{@domain})" + end + + raise Error, "Webfinger response for #{@username}@#{@domain} does not loop back to #{@uri}" if webfinger.link('self', 'href') != @uri + rescue Webfinger::RedirectError => e + raise Error, e.message + rescue Webfinger::Error => e + raise Error, "Webfinger error when resolving #{@username}@#{@domain}: #{e.message}" + end + + def split_acct(acct) + acct.gsub(/\Aacct:/, '').split('@') + end + + def supported_context? + super(@json) + end + + def expected_type? + equals_or_includes_any?(@json['type'], SUPPORTED_TYPES) + end +end diff --git a/app/services/activitypub/fetch_remote_key_service.rb b/app/services/activitypub/fetch_remote_key_service.rb index 01008d883..fe8f60b55 100644 --- a/app/services/activitypub/fetch_remote_key_service.rb +++ b/app/services/activitypub/fetch_remote_key_service.rb @@ -5,7 +5,7 @@ class ActivityPub::FetchRemoteKeyService < BaseService class Error < StandardError; end - # Returns account that owns the key + # Returns actor that owns the key def call(uri, id: true, prefetched_body: nil, suppress_errors: true) raise Error, 'No key URI given' if uri.blank? @@ -27,7 +27,7 @@ class ActivityPub::FetchRemoteKeyService < BaseService raise Error, "Unable to fetch key JSON at #{uri}" if @json.nil? raise Error, "Unsupported JSON-LD context for document #{uri}" unless supported_context?(@json) raise Error, "Unexpected object type for key #{uri}" unless expected_type? - return find_account(@json['id'], @json, suppress_errors) if person? + return find_actor(@json['id'], @json, suppress_errors) if person? @owner = fetch_resource(owner_uri, true) @@ -36,7 +36,7 @@ class ActivityPub::FetchRemoteKeyService < BaseService raise Error, "Unexpected object type for actor #{owner_uri} (expected any of: #{SUPPORTED_TYPES})" unless expected_owner_type? raise Error, "publicKey id for #{owner_uri} does not correspond to #{@json['id']}" unless confirmed_owner? - find_account(owner_uri, @owner, suppress_errors) + find_actor(owner_uri, @owner, suppress_errors) rescue Error => e Rails.logger.debug "Fetching key #{uri} failed: #{e.message}" raise unless suppress_errors @@ -44,18 +44,18 @@ class ActivityPub::FetchRemoteKeyService < BaseService private - def find_account(uri, prefetched_body, suppress_errors) - account = ActivityPub::TagManager.instance.uri_to_resource(uri, Account) - account ||= ActivityPub::FetchRemoteAccountService.new.call(uri, prefetched_body: prefetched_body, suppress_errors: suppress_errors) - account + def find_actor(uri, prefetched_body, suppress_errors) + actor = ActivityPub::TagManager.instance.uri_to_actor(uri) + actor ||= ActivityPub::FetchRemoteActorService.new.call(uri, prefetched_body: prefetched_body, suppress_errors: suppress_errors) + actor end def expected_type? - person? || public_key? + actor? || public_key? end - def person? - equals_or_includes_any?(@json['type'], ActivityPub::FetchRemoteAccountService::SUPPORTED_TYPES) + def actor? + equals_or_includes_any?(@json['type'], ActivityPub::FetchRemoteActorService::SUPPORTED_TYPES) end def public_key? @@ -67,7 +67,7 @@ class ActivityPub::FetchRemoteKeyService < BaseService end def expected_owner_type? - equals_or_includes_any?(@owner['type'], ActivityPub::FetchRemoteAccountService::SUPPORTED_TYPES) + equals_or_includes_any?(@owner['type'], ActivityPub::FetchRemoteActorService::SUPPORTED_TYPES) end def confirmed_owner? diff --git a/app/services/activitypub/process_collection_service.rb b/app/services/activitypub/process_collection_service.rb index eb008c40a..fffe30195 100644 --- a/app/services/activitypub/process_collection_service.rb +++ b/app/services/activitypub/process_collection_service.rb @@ -3,8 +3,8 @@ class ActivityPub::ProcessCollectionService < BaseService include JsonLdHelper - def call(body, account, **options) - @account = account + def call(body, actor, **options) + @account = actor @json = original_json = Oj.load(body, mode: :strict) @options = options @@ -16,6 +16,7 @@ class ActivityPub::ProcessCollectionService < BaseService end return if !supported_context? || (different_actor? && verify_account!.nil?) || suspended_actor? || @account.local? + return unless @account.is_a?(Account) if @json['signature'].present? # We have verified the signature, but in the compaction step above, might @@ -66,8 +67,10 @@ class ActivityPub::ProcessCollectionService < BaseService end def verify_account! - @options[:relayed_through_account] = @account - @account = ActivityPub::LinkedDataSignature.new(@json).verify_account! + @options[:relayed_through_actor] = @account + @account = ActivityPub::LinkedDataSignature.new(@json).verify_actor! + @account = nil unless @account.is_a?(Account) + @account rescue JSON::LD::JsonLdError => e Rails.logger.debug "Could not verify LD-Signature for #{value_or_id(@json['actor'])}: #{e.message}" nil diff --git a/app/services/fetch_resource_service.rb b/app/services/fetch_resource_service.rb index 6c0093cd4..73204e55d 100644 --- a/app/services/fetch_resource_service.rb +++ b/app/services/fetch_resource_service.rb @@ -47,7 +47,7 @@ class FetchResourceService < BaseService body = response.body_with_limit json = body_to_json(body) - [json['id'], { prefetched_body: body, id: true }] if supported_context?(json) && (equals_or_includes_any?(json['type'], ActivityPub::FetchRemoteAccountService::SUPPORTED_TYPES) || expected_type?(json)) + [json['id'], { prefetched_body: body, id: true }] if supported_context?(json) && (equals_or_includes_any?(json['type'], ActivityPub::FetchRemoteActorService::SUPPORTED_TYPES) || expected_type?(json)) elsif !terminal link_header = response['Link'] && parse_link_header(response) diff --git a/app/services/keys/claim_service.rb b/app/services/keys/claim_service.rb index 69568a0d1..ae9e24a24 100644 --- a/app/services/keys/claim_service.rb +++ b/app/services/keys/claim_service.rb @@ -72,7 +72,7 @@ class Keys::ClaimService < BaseService def build_post_request(uri) Request.new(:post, uri).tap do |request| - request.on_behalf_of(@source_account, :uri) + request.on_behalf_of(@source_account) request.add_headers(HEADERS) end end diff --git a/app/services/resolve_url_service.rb b/app/services/resolve_url_service.rb index e2c745673..37c856cf8 100644 --- a/app/services/resolve_url_service.rb +++ b/app/services/resolve_url_service.rb @@ -20,8 +20,8 @@ class ResolveURLService < BaseService private def process_url - if equals_or_includes_any?(type, ActivityPub::FetchRemoteAccountService::SUPPORTED_TYPES) - ActivityPub::FetchRemoteAccountService.new.call(resource_url, prefetched_body: body) + if equals_or_includes_any?(type, ActivityPub::FetchRemoteActorService::SUPPORTED_TYPES) + ActivityPub::FetchRemoteActorService.new.call(resource_url, prefetched_body: body) elsif equals_or_includes_any?(type, ActivityPub::Activity::Create::SUPPORTED_TYPES + ActivityPub::Activity::Create::CONVERTED_TYPES) status = FetchRemoteStatusService.new.call(resource_url, body) authorize_with @on_behalf_of, status, :show? unless status.nil? diff --git a/app/workers/activitypub/delivery_worker.rb b/app/workers/activitypub/delivery_worker.rb index 788f2cf80..d9153132b 100644 --- a/app/workers/activitypub/delivery_worker.rb +++ b/app/workers/activitypub/delivery_worker.rb @@ -37,7 +37,7 @@ class ActivityPub::DeliveryWorker def build_request(http_client) Request.new(:post, @inbox_url, body: @json, http_client: http_client).tap do |request| - request.on_behalf_of(@source_account, :uri, sign_with: @options[:sign_with]) + request.on_behalf_of(@source_account, sign_with: @options[:sign_with]) request.add_headers(HEADERS) request.add_headers({ 'Collection-Synchronization' => synchronization_header }) if ENV['DISABLE_FOLLOWERS_SYNCHRONIZATION'] != 'true' && @options[:synchronize_followers] end diff --git a/app/workers/activitypub/processing_worker.rb b/app/workers/activitypub/processing_worker.rb index 37e316354..4d06ad079 100644 --- a/app/workers/activitypub/processing_worker.rb +++ b/app/workers/activitypub/processing_worker.rb @@ -5,11 +5,15 @@ class ActivityPub::ProcessingWorker sidekiq_options backtrace: true, retry: 8 - def perform(account_id, body, delivered_to_account_id = nil) - account = Account.find_by(id: account_id) - return if account.nil? + def perform(actor_id, body, delivered_to_account_id = nil, actor_type = 'Account') + case actor_type + when 'Account' + actor = Account.find_by(id: actor_id) + end - ActivityPub::ProcessCollectionService.new.call(body, account, override_timestamps: true, delivered_to_account_id: delivered_to_account_id, delivery: true) + return if actor.nil? + + ActivityPub::ProcessCollectionService.new.call(body, actor, override_timestamps: true, delivered_to_account_id: delivered_to_account_id, delivery: true) rescue ActiveRecord::RecordInvalid => e Rails.logger.debug "Error processing incoming ActivityPub object: #{e}" end diff --git a/spec/controllers/accounts_controller_spec.rb b/spec/controllers/accounts_controller_spec.rb index 662a89927..12266c800 100644 --- a/spec/controllers/accounts_controller_spec.rb +++ b/spec/controllers/accounts_controller_spec.rb @@ -420,7 +420,7 @@ RSpec.describe AccountsController, type: :controller do let(:remote_account) { Fabricate(:account, domain: 'example.com') } before do - allow(controller).to receive(:signed_request_account).and_return(remote_account) + allow(controller).to receive(:signed_request_actor).and_return(remote_account) get :show, params: { username: account.username, format: format } end diff --git a/spec/controllers/activitypub/collections_controller_spec.rb b/spec/controllers/activitypub/collections_controller_spec.rb index 4d87f80ce..f78d9abbf 100644 --- a/spec/controllers/activitypub/collections_controller_spec.rb +++ b/spec/controllers/activitypub/collections_controller_spec.rb @@ -24,7 +24,7 @@ RSpec.describe ActivityPub::CollectionsController, type: :controller do end before do - allow(controller).to receive(:signed_request_account).and_return(remote_account) + allow(controller).to receive(:signed_request_actor).and_return(remote_account) Fabricate(:status_pin, account: account) Fabricate(:status_pin, account: account) diff --git a/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb b/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb index e233bd560..c19bb8cae 100644 --- a/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb +++ b/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb @@ -15,7 +15,7 @@ RSpec.describe ActivityPub::FollowersSynchronizationsController, type: :controll end before do - allow(controller).to receive(:signed_request_account).and_return(remote_account) + allow(controller).to receive(:signed_request_actor).and_return(remote_account) end describe 'GET #show' do diff --git a/spec/controllers/activitypub/inboxes_controller_spec.rb b/spec/controllers/activitypub/inboxes_controller_spec.rb index 973ad83bb..2f023197b 100644 --- a/spec/controllers/activitypub/inboxes_controller_spec.rb +++ b/spec/controllers/activitypub/inboxes_controller_spec.rb @@ -6,7 +6,7 @@ RSpec.describe ActivityPub::InboxesController, type: :controller do let(:remote_account) { nil } before do - allow(controller).to receive(:signed_request_account).and_return(remote_account) + allow(controller).to receive(:signed_request_actor).and_return(remote_account) end describe 'POST #create' do diff --git a/spec/controllers/activitypub/outboxes_controller_spec.rb b/spec/controllers/activitypub/outboxes_controller_spec.rb index 04f036447..74bf46a5e 100644 --- a/spec/controllers/activitypub/outboxes_controller_spec.rb +++ b/spec/controllers/activitypub/outboxes_controller_spec.rb @@ -28,7 +28,7 @@ RSpec.describe ActivityPub::OutboxesController, type: :controller do end before do - allow(controller).to receive(:signed_request_account).and_return(remote_account) + allow(controller).to receive(:signed_request_actor).and_return(remote_account) end describe 'GET #show' do diff --git a/spec/controllers/activitypub/replies_controller_spec.rb b/spec/controllers/activitypub/replies_controller_spec.rb index a35957f24..aee1a8b1a 100644 --- a/spec/controllers/activitypub/replies_controller_spec.rb +++ b/spec/controllers/activitypub/replies_controller_spec.rb @@ -168,7 +168,7 @@ RSpec.describe ActivityPub::RepliesController, type: :controller do before do stub_const 'ActivityPub::RepliesController::DESCENDANTS_LIMIT', 5 - allow(controller).to receive(:signed_request_account).and_return(remote_querier) + allow(controller).to receive(:signed_request_actor).and_return(remote_querier) Fabricate(:status, thread: status, visibility: :public) Fabricate(:status, thread: status, visibility: :public) diff --git a/spec/controllers/concerns/signature_verification_spec.rb b/spec/controllers/concerns/signature_verification_spec.rb index 05fb1445b..6e73643b4 100644 --- a/spec/controllers/concerns/signature_verification_spec.rb +++ b/spec/controllers/concerns/signature_verification_spec.rb @@ -3,6 +3,16 @@ require 'rails_helper' describe ApplicationController, type: :controller do + class WrappedActor + attr_reader :wrapped_account + + def initialize(wrapped_account) + @wrapped_account = wrapped_account + end + + delegate :uri, :keypair, to: :wrapped_account + end + controller do include SignatureVerification @@ -73,6 +83,41 @@ describe ApplicationController, type: :controller do end end + context 'with a valid actor that is not an Account' do + let(:actor) { WrappedActor.new(author) } + + before do + get :success + + fake_request = Request.new(:get, request.url) + fake_request.on_behalf_of(author) + + request.headers.merge!(fake_request.headers) + + allow(ActivityPub::TagManager.instance).to receive(:uri_to_actor).with(anything) do + actor + end + end + + describe '#signed_request?' do + it 'returns true' do + expect(controller.signed_request?).to be true + end + end + + describe '#signed_request_account' do + it 'returns nil' do + expect(controller.signed_request_account).to be_nil + end + end + + describe '#signed_request_actor' do + it 'returns the expected actor' do + expect(controller.signed_request_actor).to eq actor + end + end + end + context 'with request older than a day' do before do get :success diff --git a/spec/controllers/statuses_controller_spec.rb b/spec/controllers/statuses_controller_spec.rb index 05fae67fa..6ed5d4bbb 100644 --- a/spec/controllers/statuses_controller_spec.rb +++ b/spec/controllers/statuses_controller_spec.rb @@ -426,7 +426,7 @@ describe StatusesController do let(:remote_account) { Fabricate(:account, domain: 'example.com') } before do - allow(controller).to receive(:signed_request_account).and_return(remote_account) + allow(controller).to receive(:signed_request_actor).and_return(remote_account) end context 'when account blocks account' do diff --git a/spec/lib/activitypub/activity/announce_spec.rb b/spec/lib/activitypub/activity/announce_spec.rb index 41806b258..e9cd6c68c 100644 --- a/spec/lib/activitypub/activity/announce_spec.rb +++ b/spec/lib/activitypub/activity/announce_spec.rb @@ -115,7 +115,7 @@ RSpec.describe ActivityPub::Activity::Announce do let(:object_json) { 'https://example.com/actor/hello-world' } - subject { described_class.new(json, sender, relayed_through_account: relay_account) } + subject { described_class.new(json, sender, relayed_through_actor: relay_account) } before do stub_request(:get, 'https://example.com/actor/hello-world').to_return(body: Oj.dump(unknown_object_json)) diff --git a/spec/lib/activitypub/dereferencer_spec.rb b/spec/lib/activitypub/dereferencer_spec.rb index ce30513d7..e50b497c7 100644 --- a/spec/lib/activitypub/dereferencer_spec.rb +++ b/spec/lib/activitypub/dereferencer_spec.rb @@ -4,10 +4,10 @@ RSpec.describe ActivityPub::Dereferencer do describe '#object' do let(:object) { { '@context': 'https://www.w3.org/ns/activitystreams', id: 'https://example.com/foo', type: 'Note', content: 'Hoge' } } let(:permitted_origin) { 'https://example.com' } - let(:signature_account) { nil } + let(:signature_actor) { nil } let(:uri) { nil } - subject { described_class.new(uri, permitted_origin: permitted_origin, signature_account: signature_account).object } + subject { described_class.new(uri, permitted_origin: permitted_origin, signature_actor: signature_actor).object } before do stub_request(:get, 'https://example.com/foo').to_return(body: Oj.dump(object), headers: { 'Content-Type' => 'application/activity+json' }) @@ -21,7 +21,7 @@ RSpec.describe ActivityPub::Dereferencer do end context 'with signature account' do - let(:signature_account) { Fabricate(:account) } + let(:signature_actor) { Fabricate(:account) } it 'makes signed request' do subject @@ -52,7 +52,7 @@ RSpec.describe ActivityPub::Dereferencer do end context 'with signature account' do - let(:signature_account) { Fabricate(:account) } + let(:signature_actor) { Fabricate(:account) } it 'makes signed request' do subject diff --git a/spec/lib/activitypub/linked_data_signature_spec.rb b/spec/lib/activitypub/linked_data_signature_spec.rb index 2222c46fb..d55a7c7fa 100644 --- a/spec/lib/activitypub/linked_data_signature_spec.rb +++ b/spec/lib/activitypub/linked_data_signature_spec.rb @@ -20,7 +20,7 @@ RSpec.describe ActivityPub::LinkedDataSignature do stub_jsonld_contexts! end - describe '#verify_account!' do + describe '#verify_actor!' do context 'when signature matches' do let(:raw_signature) do { @@ -32,7 +32,7 @@ RSpec.describe ActivityPub::LinkedDataSignature do let(:signature) { raw_signature.merge('type' => 'RsaSignature2017', 'signatureValue' => sign(sender, raw_signature, raw_json)) } it 'returns creator' do - expect(subject.verify_account!).to eq sender + expect(subject.verify_actor!).to eq sender end end @@ -40,7 +40,7 @@ RSpec.describe ActivityPub::LinkedDataSignature do let(:signature) { nil } it 'returns nil' do - expect(subject.verify_account!).to be_nil + expect(subject.verify_actor!).to be_nil end end @@ -55,7 +55,7 @@ RSpec.describe ActivityPub::LinkedDataSignature do let(:signature) { raw_signature.merge('type' => 'RsaSignature2017', 'signatureValue' => 's69F3mfddd99dGjmvjdjjs81e12jn121Gkm1') } it 'returns nil' do - expect(subject.verify_account!).to be_nil + expect(subject.verify_actor!).to be_nil end end end @@ -73,14 +73,14 @@ RSpec.describe ActivityPub::LinkedDataSignature do end it 'can be verified again' do - expect(described_class.new(subject).verify_account!).to eq sender + expect(described_class.new(subject).verify_actor!).to eq sender end end - def sign(from_account, options, document) + def sign(from_actor, options, document) options_hash = Digest::SHA256.hexdigest(canonicalize(options.merge('@context' => ActivityPub::LinkedDataSignature::CONTEXT))) document_hash = Digest::SHA256.hexdigest(canonicalize(document)) to_be_verified = options_hash + document_hash - Base64.strict_encode64(from_account.keypair.sign(OpenSSL::Digest.new('SHA256'), to_be_verified)) + Base64.strict_encode64(from_actor.keypair.sign(OpenSSL::Digest.new('SHA256'), to_be_verified)) end end diff --git a/spec/services/activitypub/fetch_remote_actor_service_spec.rb b/spec/services/activitypub/fetch_remote_actor_service_spec.rb new file mode 100644 index 000000000..20117c66d --- /dev/null +++ b/spec/services/activitypub/fetch_remote_actor_service_spec.rb @@ -0,0 +1,180 @@ +require 'rails_helper' + +RSpec.describe ActivityPub::FetchRemoteActorService, type: :service do + subject { ActivityPub::FetchRemoteActorService.new } + + let!(:actor) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + id: 'https://example.com/alice', + type: 'Person', + preferredUsername: 'alice', + name: 'Alice', + summary: 'Foo bar', + inbox: 'http://example.com/alice/inbox', + } + end + + describe '#call' do + let(:account) { subject.call('https://example.com/alice', id: true) } + + shared_examples 'sets profile data' do + it 'returns an account' do + expect(account).to be_an Account + end + + it 'sets display name' do + expect(account.display_name).to eq 'Alice' + end + + it 'sets note' do + expect(account.note).to eq 'Foo bar' + end + + it 'sets URL' do + expect(account.url).to eq 'https://example.com/alice' + end + end + + context 'when the account does not have a inbox' do + let!(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/alice' }] } } + + before do + actor[:inbox] = nil + + stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor)) + stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' }) + end + + it 'fetches resource' do + account + expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once + end + + it 'looks up webfinger' do + account + expect(a_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com')).to have_been_made.once + end + + it 'returns nil' do + expect(account).to be_nil + end + end + + context 'when URI and WebFinger share the same host' do + let!(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/alice' }] } } + + before do + stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor)) + stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' }) + end + + it 'fetches resource' do + account + expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once + end + + it 'looks up webfinger' do + account + expect(a_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com')).to have_been_made.once + end + + it 'sets username and domain from webfinger' do + expect(account.username).to eq 'alice' + expect(account.domain).to eq 'example.com' + end + + include_examples 'sets profile data' + end + + context 'when WebFinger presents different domain than URI' do + let!(:webfinger) { { subject: 'acct:alice@iscool.af', links: [{ rel: 'self', href: 'https://example.com/alice' }] } } + + before do + stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor)) + stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' }) + stub_request(:get, 'https://iscool.af/.well-known/webfinger?resource=acct:alice@iscool.af').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' }) + end + + it 'fetches resource' do + account + expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once + end + + it 'looks up webfinger' do + account + expect(a_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com')).to have_been_made.once + end + + it 'looks up "redirected" webfinger' do + account + expect(a_request(:get, 'https://iscool.af/.well-known/webfinger?resource=acct:alice@iscool.af')).to have_been_made.once + end + + it 'sets username and domain from final webfinger' do + expect(account.username).to eq 'alice' + expect(account.domain).to eq 'iscool.af' + end + + include_examples 'sets profile data' + end + + context 'when WebFinger returns a different URI' do + let!(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/bob' }] } } + + before do + stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor)) + stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' }) + end + + it 'fetches resource' do + account + expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once + end + + it 'looks up webfinger' do + account + expect(a_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com')).to have_been_made.once + end + + it 'does not create account' do + expect(account).to be_nil + end + end + + context 'when WebFinger returns a different URI after a redirection' do + let!(:webfinger) { { subject: 'acct:alice@iscool.af', links: [{ rel: 'self', href: 'https://example.com/bob' }] } } + + before do + stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor)) + stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' }) + stub_request(:get, 'https://iscool.af/.well-known/webfinger?resource=acct:alice@iscool.af').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' }) + end + + it 'fetches resource' do + account + expect(a_request(:get, 'https://example.com/alice')).to have_been_made.once + end + + it 'looks up webfinger' do + account + expect(a_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com')).to have_been_made.once + end + + it 'looks up "redirected" webfinger' do + account + expect(a_request(:get, 'https://iscool.af/.well-known/webfinger?resource=acct:alice@iscool.af')).to have_been_made.once + end + + it 'does not create account' do + expect(account).to be_nil + end + end + + context 'with wrong id' do + it 'does not create account' do + expect(subject.call('https://fake.address/@foo', prefetched_body: Oj.dump(actor))).to be_nil + end + end + end +end diff --git a/spec/services/activitypub/process_collection_service_spec.rb b/spec/services/activitypub/process_collection_service_spec.rb index 3eccaab5b..093a188a2 100644 --- a/spec/services/activitypub/process_collection_service_spec.rb +++ b/spec/services/activitypub/process_collection_service_spec.rb @@ -68,7 +68,7 @@ RSpec.describe ActivityPub::ProcessCollectionService, type: :service do let(:forwarder) { Fabricate(:account, domain: 'example.com', uri: 'http://example.com/other_account') } it 'does not process payload if no signature exists' do - expect_any_instance_of(ActivityPub::LinkedDataSignature).to receive(:verify_account!).and_return(nil) + expect_any_instance_of(ActivityPub::LinkedDataSignature).to receive(:verify_actor!).and_return(nil) expect(ActivityPub::Activity).not_to receive(:factory) subject.call(json, forwarder) @@ -77,7 +77,7 @@ RSpec.describe ActivityPub::ProcessCollectionService, type: :service do it 'processes payload with actor if valid signature exists' do payload['signature'] = { 'type' => 'RsaSignature2017' } - expect_any_instance_of(ActivityPub::LinkedDataSignature).to receive(:verify_account!).and_return(actor) + expect_any_instance_of(ActivityPub::LinkedDataSignature).to receive(:verify_actor!).and_return(actor) expect(ActivityPub::Activity).to receive(:factory).with(instance_of(Hash), actor, instance_of(Hash)) subject.call(json, forwarder) @@ -86,7 +86,7 @@ RSpec.describe ActivityPub::ProcessCollectionService, type: :service do it 'does not process payload if invalid signature exists' do payload['signature'] = { 'type' => 'RsaSignature2017' } - expect_any_instance_of(ActivityPub::LinkedDataSignature).to receive(:verify_account!).and_return(nil) + expect_any_instance_of(ActivityPub::LinkedDataSignature).to receive(:verify_actor!).and_return(nil) expect(ActivityPub::Activity).not_to receive(:factory) subject.call(json, forwarder) diff --git a/spec/services/fetch_resource_service_spec.rb b/spec/services/fetch_resource_service_spec.rb index ded05ffbc..c0c96ab69 100644 --- a/spec/services/fetch_resource_service_spec.rb +++ b/spec/services/fetch_resource_service_spec.rb @@ -66,7 +66,7 @@ RSpec.describe FetchResourceService, type: :service do it 'signs request' do subject - expect(a_request(:get, url).with(headers: { 'Signature' => /keyId="#{Regexp.escape(ActivityPub::TagManager.instance.uri_for(Account.representative) + '#main-key')}"/ })).to have_been_made + expect(a_request(:get, url).with(headers: { 'Signature' => /keyId="#{Regexp.escape(ActivityPub::TagManager.instance.key_uri_for(Account.representative))}"/ })).to have_been_made end context 'when content type is application/atom+xml' do From 26c51cfa07952b39802ce6de4c952c6adf56b748 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 21 Sep 2022 22:46:35 +0200 Subject: [PATCH 408/652] Fix various rspec warnings in ReportService tests (#19189) * Fix various rspec warnings in ReportService tests * Add tests to ReportService --- spec/services/report_service_spec.rb | 37 +++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/spec/services/report_service_spec.rb b/spec/services/report_service_spec.rb index ea68b3344..02bc42ac1 100644 --- a/spec/services/report_service_spec.rb +++ b/spec/services/report_service_spec.rb @@ -42,13 +42,44 @@ RSpec.describe ReportService, type: :service do end it 'creates a report' do - is_expected.to change { target_account.targeted_reports.count }.from(0).to(1) + expect { subject.call }.to change { target_account.targeted_reports.count }.from(0).to(1) + end + + it 'attaches the DM to the report' do + subject.call + expect(target_account.targeted_reports.pluck(:status_ids)).to eq [[status.id]] end end context 'when it is not addressed to the reporter' do it 'errors out' do - is_expected.to raise_error + expect { subject.call }.to raise_error(ActiveRecord::RecordNotFound) + end + end + + context 'when the reporter is remote' do + let(:source_account) { Fabricate(:account, domain: 'example.com', uri: 'https://example.com/users/1') } + + context 'when it is addressed to the reporter' do + before do + status.mentions.create(account: source_account) + end + + it 'creates a report' do + expect { subject.call }.to change { target_account.targeted_reports.count }.from(0).to(1) + end + + it 'attaches the DM to the report' do + subject.call + expect(target_account.targeted_reports.pluck(:status_ids)).to eq [[status.id]] + end + end + + context 'when it is not addressed to the reporter' do + it 'does not add the DM to the report' do + subject.call + expect(target_account.targeted_reports.pluck(:status_ids)).to eq [[]] + end end end end @@ -67,7 +98,7 @@ RSpec.describe ReportService, type: :service do end it 'does not send an e-mail' do - is_expected.to_not change(ActionMailer::Base.deliveries, :count).from(0) + expect { subject.call }.to_not change(ActionMailer::Base.deliveries, :count).from(0) end end end From d2f7e30a283a1dca1f7974884ac0c237b93903ad Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 21 Sep 2022 22:46:57 +0200 Subject: [PATCH 409/652] Add privacy icons to report modal (#19190) --- .../report/components/status_check_box.js | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/app/javascript/mastodon/features/report/components/status_check_box.js b/app/javascript/mastodon/features/report/components/status_check_box.js index 373c60e21..5366da90b 100644 --- a/app/javascript/mastodon/features/report/components/status_check_box.js +++ b/app/javascript/mastodon/features/report/components/status_check_box.js @@ -7,14 +7,25 @@ import DisplayName from 'mastodon/components/display_name'; import RelativeTimestamp from 'mastodon/components/relative_timestamp'; import Option from './option'; import MediaAttachments from 'mastodon/components/media_attachments'; +import { injectIntl, defineMessages } from 'react-intl'; +import Icon from 'mastodon/components/icon'; -export default class StatusCheckBox extends React.PureComponent { +const messages = defineMessages({ + public_short: { id: 'privacy.public.short', defaultMessage: 'Public' }, + unlisted_short: { id: 'privacy.unlisted.short', defaultMessage: 'Unlisted' }, + private_short: { id: 'privacy.private.short', defaultMessage: 'Followers-only' }, + direct_short: { id: 'privacy.direct.short', defaultMessage: 'Mentioned people only' }, +}); + +export default @injectIntl +class StatusCheckBox extends React.PureComponent { static propTypes = { id: PropTypes.string.isRequired, status: ImmutablePropTypes.map.isRequired, checked: PropTypes.bool, onToggle: PropTypes.func.isRequired, + intl: PropTypes.object.isRequired, }; handleStatusesToggle = (value, checked) => { @@ -23,12 +34,21 @@ export default class StatusCheckBox extends React.PureComponent { }; render () { - const { status, checked } = this.props; + const { status, checked, intl } = this.props; if (status.get('reblog')) { return null; } + const visibilityIconInfo = { + 'public': { icon: 'globe', text: intl.formatMessage(messages.public_short) }, + 'unlisted': { icon: 'unlock', text: intl.formatMessage(messages.unlisted_short) }, + 'private': { icon: 'lock', text: intl.formatMessage(messages.private_short) }, + 'direct': { icon: 'at', text: intl.formatMessage(messages.direct_short) }, + }; + + const visibilityIcon = visibilityIconInfo[status.get('visibility')]; + const labelComponent = (
    @@ -37,7 +57,7 @@ export default class StatusCheckBox extends React.PureComponent {
    - · + ·
    From 0d6b878808a02aa4a544e894f06419c0f612c163 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 23 Sep 2022 23:00:12 +0200 Subject: [PATCH 410/652] Add user content translations with configurable backends (#19218) --- .../v1/statuses/translations_controller.rb | 29 ++++++++++ app/javascript/mastodon/actions/statuses.js | 39 +++++++++++++- app/javascript/mastodon/components/status.js | 16 +++++- .../mastodon/components/status_content.js | 31 ++++++++--- .../mastodon/containers/status_container.js | 10 ++++ .../status/components/detailed_status.js | 13 ++++- .../mastodon/features/status/index.js | 13 +++++ app/javascript/mastodon/reducers/statuses.js | 6 +++ app/lib/translation_service.rb | 23 ++++++++ app/lib/translation_service/deepl.rb | 53 +++++++++++++++++++ .../translation_service/libre_translate.rb | 43 +++++++++++++++ app/lib/translation_service/translation.rb | 5 ++ .../rest/translation_serializer.rb | 9 ++++ app/services/translate_status_service.rb | 24 +++++++++ config/initializers/inflections.rb | 1 + config/routes.rb | 2 + 16 files changed, 306 insertions(+), 11 deletions(-) create mode 100644 app/controllers/api/v1/statuses/translations_controller.rb create mode 100644 app/lib/translation_service.rb create mode 100644 app/lib/translation_service/deepl.rb create mode 100644 app/lib/translation_service/libre_translate.rb create mode 100644 app/lib/translation_service/translation.rb create mode 100644 app/serializers/rest/translation_serializer.rb create mode 100644 app/services/translate_status_service.rb diff --git a/app/controllers/api/v1/statuses/translations_controller.rb b/app/controllers/api/v1/statuses/translations_controller.rb new file mode 100644 index 000000000..540b17d00 --- /dev/null +++ b/app/controllers/api/v1/statuses/translations_controller.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +class Api::V1::Statuses::TranslationsController < Api::BaseController + include Authorization + + before_action -> { doorkeeper_authorize! :read, :'read:statuses' } + before_action :set_status + before_action :set_translation + + rescue_from TranslationService::NotConfiguredError, with: :not_found + rescue_from TranslationService::UnexpectedResponseError, TranslationService::QuotaExceededError, TranslationService::TooManyRequestsError, with: :service_unavailable + + def create + render json: @translation, serializer: REST::TranslationSerializer + end + + private + + def set_status + @status = Status.find(params[:status_id]) + authorize @status, :show? + rescue Mastodon::NotPermittedError + not_found + end + + def set_translation + @translation = TranslateStatusService.new.call(@status, content_locale) + end +end diff --git a/app/javascript/mastodon/actions/statuses.js b/app/javascript/mastodon/actions/statuses.js index 32a4f1f85..4ae1b21e0 100644 --- a/app/javascript/mastodon/actions/statuses.js +++ b/app/javascript/mastodon/actions/statuses.js @@ -34,6 +34,11 @@ export const STATUS_FETCH_SOURCE_REQUEST = 'STATUS_FETCH_SOURCE_REQUEST'; export const STATUS_FETCH_SOURCE_SUCCESS = 'STATUS_FETCH_SOURCE_SUCCESS'; export const STATUS_FETCH_SOURCE_FAIL = 'STATUS_FETCH_SOURCE_FAIL'; +export const STATUS_TRANSLATE_REQUEST = 'STATUS_TRANSLATE_REQUEST'; +export const STATUS_TRANSLATE_SUCCESS = 'STATUS_TRANSLATE_SUCCESS'; +export const STATUS_TRANSLATE_FAIL = 'STATUS_TRANSLATE_FAIL'; +export const STATUS_TRANSLATE_UNDO = 'STATUS_TRANSLATE_UNDO'; + export function fetchStatusRequest(id, skipLoading) { return { type: STATUS_FETCH_REQUEST, @@ -309,4 +314,36 @@ export function toggleStatusCollapse(id, isCollapsed) { id, isCollapsed, }; -} +}; + +export const translateStatus = id => (dispatch, getState) => { + dispatch(translateStatusRequest(id)); + + api(getState).post(`/api/v1/statuses/${id}/translate`).then(response => { + dispatch(translateStatusSuccess(id, response.data)); + }).catch(error => { + dispatch(translateStatusFail(id, error)); + }); +}; + +export const translateStatusRequest = id => ({ + type: STATUS_TRANSLATE_REQUEST, + id, +}); + +export const translateStatusSuccess = (id, translation) => ({ + type: STATUS_TRANSLATE_SUCCESS, + id, + translation, +}); + +export const translateStatusFail = (id, error) => ({ + type: STATUS_TRANSLATE_FAIL, + id, + error, +}); + +export const undoStatusTranslation = id => ({ + type: STATUS_TRANSLATE_UNDO, + id, +}); diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js index 6fc132bf5..0d3b51f07 100644 --- a/app/javascript/mastodon/components/status.js +++ b/app/javascript/mastodon/components/status.js @@ -85,6 +85,7 @@ class Status extends ImmutablePureComponent { onHeightChange: PropTypes.func, onToggleHidden: PropTypes.func, onToggleCollapsed: PropTypes.func, + onTranslate: PropTypes.func, muted: PropTypes.bool, hidden: PropTypes.bool, unread: PropTypes.bool, @@ -171,6 +172,10 @@ class Status extends ImmutablePureComponent { this.props.onToggleCollapsed(this._properStatus(), isCollapsed); } + handleTranslate = () => { + this.props.onTranslate(this._properStatus()); + } + renderLoadingMediaGallery () { return
    ; } @@ -512,7 +517,16 @@ class Status extends ImmutablePureComponent {
    - + {media} diff --git a/app/javascript/mastodon/components/status_content.js b/app/javascript/mastodon/components/status_content.js index 724165ada..c8f7bc095 100644 --- a/app/javascript/mastodon/components/status_content.js +++ b/app/javascript/mastodon/components/status_content.js @@ -1,7 +1,7 @@ import React from 'react'; import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; -import { FormattedMessage } from 'react-intl'; +import { FormattedMessage, injectIntl } from 'react-intl'; import Permalink from './permalink'; import classnames from 'classnames'; import PollContainer from 'mastodon/containers/poll_container'; @@ -10,7 +10,8 @@ import { autoPlayGif } from 'mastodon/initial_state'; const MAX_HEIGHT = 642; // 20px * 32 (+ 2px padding at the top) -export default class StatusContent extends React.PureComponent { +export default @injectIntl +class StatusContent extends React.PureComponent { static contextTypes = { router: PropTypes.object, @@ -21,9 +22,11 @@ export default class StatusContent extends React.PureComponent { expanded: PropTypes.bool, showThread: PropTypes.bool, onExpandedToggle: PropTypes.func, + onTranslate: PropTypes.func, onClick: PropTypes.func, collapsable: PropTypes.bool, onCollapsedToggle: PropTypes.func, + intl: PropTypes.object, }; state = { @@ -163,20 +166,26 @@ export default class StatusContent extends React.PureComponent { } } + handleTranslate = () => { + this.props.onTranslate(); + } + setRef = (c) => { this.node = c; } render () { - const { status } = this.props; + const { status, intl } = this.props; const hidden = this.props.onExpandedToggle ? !this.props.expanded : this.state.hidden; const renderReadMore = this.props.onClick && status.get('collapsed'); const renderViewThread = this.props.showThread && status.get('in_reply_to_id') && status.get('in_reply_to_account_id') === status.getIn(['account', 'id']); + const renderTranslate = this.props.onTranslate && ['public', 'unlisted'].includes(status.get('visibility')) && intl.locale !== status.get('language'); + const languageNames = new Intl.DisplayNames([intl.locale], { type: 'language' }); - const content = { __html: status.get('contentHtml') }; + const content = { __html: status.get('translation') ? status.getIn(['translation', 'content']) : status.get('contentHtml') }; const spoilerContent = { __html: status.get('spoilerHtml') }; - const lang = status.get('language'); + const lang = status.get('translation') ? intl.locale : status.get('language'); const classNames = classnames('status__content', { 'status__content--with-action': this.props.onClick && this.context.router, 'status__content--with-spoiler': status.get('spoiler_text').length > 0, @@ -195,6 +204,12 @@ export default class StatusContent extends React.PureComponent { ); + const translateButton = ( + + ); + if (status.get('spoiler_text').length > 0) { let mentionsPlaceholder = ''; @@ -223,7 +238,7 @@ export default class StatusContent extends React.PureComponent {
    {!hidden && !!status.get('poll') && } - + {!hidden && renderTranslate && translateButton} {renderViewThread && showThreadButton}
    ); @@ -233,7 +248,7 @@ export default class StatusContent extends React.PureComponent {
    {!!status.get('poll') && } - + {renderTranslate && translateButton} {renderViewThread && showThreadButton}
    , ]; @@ -249,7 +264,7 @@ export default class StatusContent extends React.PureComponent {
    {!!status.get('poll') && } - + {renderTranslate && translateButton} {renderViewThread && showThreadButton}
    ); diff --git a/app/javascript/mastodon/containers/status_container.js b/app/javascript/mastodon/containers/status_container.js index 28698b082..9280a6ee3 100644 --- a/app/javascript/mastodon/containers/status_container.js +++ b/app/javascript/mastodon/containers/status_container.js @@ -25,6 +25,8 @@ import { revealStatus, toggleStatusCollapse, editStatus, + translateStatus, + undoStatusTranslation, } from '../actions/statuses'; import { unmuteAccount, @@ -150,6 +152,14 @@ const mapDispatchToProps = (dispatch, { intl, contextType }) => ({ dispatch(editStatus(status.get('id'), history)); }, + onTranslate (status) { + if (status.get('translation')) { + dispatch(undoStatusTranslation(status.get('id'))); + } else { + dispatch(translateStatus(status.get('id'))); + } + }, + onDirect (account, router) { dispatch(directCompose(account, router)); }, diff --git a/app/javascript/mastodon/features/status/components/detailed_status.js b/app/javascript/mastodon/features/status/components/detailed_status.js index 5c43c2038..320a847f7 100644 --- a/app/javascript/mastodon/features/status/components/detailed_status.js +++ b/app/javascript/mastodon/features/status/components/detailed_status.js @@ -37,6 +37,7 @@ class DetailedStatus extends ImmutablePureComponent { onOpenMedia: PropTypes.func.isRequired, onOpenVideo: PropTypes.func.isRequired, onToggleHidden: PropTypes.func.isRequired, + onTranslate: PropTypes.func.isRequired, measureHeight: PropTypes.bool, onHeightChange: PropTypes.func, domain: PropTypes.string.isRequired, @@ -103,6 +104,11 @@ class DetailedStatus extends ImmutablePureComponent { window.open(href, 'mastodon-intent', 'width=445,height=600,resizable=no,menubar=no,status=no,scrollbars=yes'); } + handleTranslate = () => { + const { onTranslate, status } = this.props; + onTranslate(status); + } + render () { const status = (this.props.status && this.props.status.get('reblog')) ? this.props.status.get('reblog') : this.props.status; const outerStyle = { boxSizing: 'border-box' }; @@ -260,7 +266,12 @@ class DetailedStatus extends ImmutablePureComponent { - + {media} diff --git a/app/javascript/mastodon/features/status/index.js b/app/javascript/mastodon/features/status/index.js index 4d7f24834..5ff7e060e 100644 --- a/app/javascript/mastodon/features/status/index.js +++ b/app/javascript/mastodon/features/status/index.js @@ -32,6 +32,8 @@ import { editStatus, hideStatus, revealStatus, + translateStatus, + undoStatusTranslation, } from '../../actions/statuses'; import { unblockAccount, @@ -339,6 +341,16 @@ class Status extends ImmutablePureComponent { } } + handleTranslate = status => { + const { dispatch } = this.props; + + if (status.get('translation')) { + dispatch(undoStatusTranslation(status.get('id'))); + } else { + dispatch(translateStatus(status.get('id'))); + } + } + handleBlockClick = (status) => { const { dispatch } = this.props; const account = status.get('account'); @@ -558,6 +570,7 @@ class Status extends ImmutablePureComponent { onOpenVideo={this.handleOpenVideo} onOpenMedia={this.handleOpenMedia} onToggleHidden={this.handleToggleHidden} + onTranslate={this.handleTranslate} domain={domain} showMedia={this.state.showMedia} onToggleMediaVisibility={this.handleToggleMediaVisibility} diff --git a/app/javascript/mastodon/reducers/statuses.js b/app/javascript/mastodon/reducers/statuses.js index 53dec9585..7efb49d85 100644 --- a/app/javascript/mastodon/reducers/statuses.js +++ b/app/javascript/mastodon/reducers/statuses.js @@ -13,6 +13,8 @@ import { STATUS_REVEAL, STATUS_HIDE, STATUS_COLLAPSE, + STATUS_TRANSLATE_SUCCESS, + STATUS_TRANSLATE_UNDO, } from '../actions/statuses'; import { TIMELINE_DELETE } from '../actions/timelines'; import { STATUS_IMPORT, STATUSES_IMPORT } from '../actions/importer'; @@ -77,6 +79,10 @@ export default function statuses(state = initialState, action) { return state.setIn([action.id, 'collapsed'], action.isCollapsed); case TIMELINE_DELETE: return deleteStatus(state, action.id, action.references); + case STATUS_TRANSLATE_SUCCESS: + return state.setIn([action.id, 'translation'], fromJS(action.translation)); + case STATUS_TRANSLATE_UNDO: + return state.deleteIn([action.id, 'translation']); default: return state; } diff --git a/app/lib/translation_service.rb b/app/lib/translation_service.rb new file mode 100644 index 000000000..526e26ae5 --- /dev/null +++ b/app/lib/translation_service.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +class TranslationService + class Error < StandardError; end + class NotConfiguredError < Error; end + class TooManyRequestsError < Error; end + class QuotaExceededError < Error; end + class UnexpectedResponseError < Error; end + + def self.configured + if ENV['DEEPL_API_KEY'].present? + TranslationService::DeepL.new(ENV.fetch('DEEPL_PLAN', 'free'), ENV['DEEPL_API_KEY']) + elsif ENV['LIBRE_TRANSLATE_ENDPOINT'].present? + TranslationService::LibreTranslate.new(ENV['LIBRE_TRANSLATE_ENDPOINT'], ENV['LIBRE_TRANSLATE_API_KEY']) + else + raise NotConfiguredError + end + end + + def translate(_text, _source_language, _target_language) + raise NotImplementedError + end +end diff --git a/app/lib/translation_service/deepl.rb b/app/lib/translation_service/deepl.rb new file mode 100644 index 000000000..89ccf01e5 --- /dev/null +++ b/app/lib/translation_service/deepl.rb @@ -0,0 +1,53 @@ +# frozen_string_literal: true + +class TranslationService::DeepL < TranslationService + include JsonLdHelper + + def initialize(plan, api_key) + super() + + @plan = plan + @api_key = api_key + end + + def translate(text, source_language, target_language) + request(text, source_language, target_language).perform do |res| + case res.code + when 429 + raise TooManyRequestsError + when 456 + raise QuotaExceededError + when 200...300 + transform_response(res.body_with_limit) + else + raise UnexpectedResponseError + end + end + end + + private + + def request(text, source_language, target_language) + req = Request.new(:post, endpoint_url, form: { text: text, source_lang: source_language.upcase, target_lang: target_language, tag_handling: 'html' }) + req.add_headers('Authorization': "DeepL-Auth-Key #{@api_key}") + req + end + + def endpoint_url + if @plan == 'free' + 'https://api-free.deepl.com/v2/translate' + else + 'https://api.deepl.com/v2/translate' + end + end + + def transform_response(str) + json = Oj.load(str, mode: :strict) + + raise UnexpectedResponseError unless json.is_a?(Hash) + + Translation.new(text: json.dig('translations', 0, 'text'), detected_source_language: json.dig('translations', 0, 'detected_source_language')&.downcase) + rescue Oj::ParseError + raise UnexpectedResponseError + end +end diff --git a/app/lib/translation_service/libre_translate.rb b/app/lib/translation_service/libre_translate.rb new file mode 100644 index 000000000..66acdeed7 --- /dev/null +++ b/app/lib/translation_service/libre_translate.rb @@ -0,0 +1,43 @@ +# frozen_string_literal: true + +class TranslationService::LibreTranslate < TranslationService + def initialize(base_url, api_key) + super() + + @base_url = base_url + @api_key = api_key + end + + def translate(text, source_language, target_language) + request(text, source_language, target_language).perform do |res| + case res.code + when 429 + raise TooManyRequestsError + when 403 + raise QuotaExceededError + when 200...300 + transform_response(res.body_with_limit, source_language) + else + raise UnexpectedResponseError + end + end + end + + private + + def request(text, source_language, target_language) + req = Request.new(:post, "#{@base_url}/translate", body: Oj.dump(q: text, source: source_language, target: target_language, format: 'html', api_key: @api_key)) + req.add_headers('Content-Type': 'application/json') + req + end + + def transform_response(str, source_language) + json = Oj.load(str, mode: :strict) + + raise UnexpectedResponseError unless json.is_a?(Hash) + + Translation.new(text: json['translatedText'], detected_source_language: source_language) + rescue Oj::ParseError + raise UnexpectedResponseError + end +end diff --git a/app/lib/translation_service/translation.rb b/app/lib/translation_service/translation.rb new file mode 100644 index 000000000..a55b82574 --- /dev/null +++ b/app/lib/translation_service/translation.rb @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +class TranslationService::Translation < ActiveModelSerializers::Model + attributes :text, :detected_source_language +end diff --git a/app/serializers/rest/translation_serializer.rb b/app/serializers/rest/translation_serializer.rb new file mode 100644 index 000000000..a06f23f32 --- /dev/null +++ b/app/serializers/rest/translation_serializer.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class REST::TranslationSerializer < ActiveModel::Serializer + attributes :content, :detected_source_language + + def content + object.text + end +end diff --git a/app/services/translate_status_service.rb b/app/services/translate_status_service.rb new file mode 100644 index 000000000..b375226be --- /dev/null +++ b/app/services/translate_status_service.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +class TranslateStatusService < BaseService + CACHE_TTL = 1.day.freeze + + def call(status, target_language) + raise Mastodon::NotPermittedError unless status.public_visibility? || status.unlisted_visibility? + + @status = status + @target_language = target_language + + Rails.cache.fetch("translations/#{@status.language}/#{@target_language}/#{content_hash}", expires_in: CACHE_TTL) { translation_backend.translate(@status.text, @status.language, @target_language) } + end + + private + + def translation_backend + TranslationService.configured + end + + def content_hash + Digest::SHA256.base64digest(@status.text) + end +end diff --git a/config/initializers/inflections.rb b/config/initializers/inflections.rb index 3e5a55617..a361cb0ec 100644 --- a/config/initializers/inflections.rb +++ b/config/initializers/inflections.rb @@ -25,6 +25,7 @@ ActiveSupport::Inflector.inflections(:en) do |inflect| inflect.acronym 'REST' inflect.acronym 'URL' inflect.acronym 'ASCII' + inflect.acronym 'DeepL' inflect.singular 'data', 'data' end diff --git a/config/routes.rb b/config/routes.rb index 13a4a1618..9491c5177 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -393,6 +393,8 @@ Rails.application.routes.draw do resource :history, only: :show resource :source, only: :show + + post :translate, to: 'translations#create' end member do From 0c99c6c3df7882e4a5f6df5ad17e2823211158c0 Mon Sep 17 00:00:00 2001 From: Daniel Jakots Date: Fri, 23 Sep 2022 18:11:34 -0400 Subject: [PATCH 411/652] Update Node to 16.17.1 (#19224) See https://nodejs.org/en/blog/vulnerability/september-2022-security-releases/ for the details. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 7757bd0e4..42869d5de 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ SHELL ["/bin/bash", "-c"] RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections # Install Node v16 (LTS) -ENV NODE_VER="16.16.0" +ENV NODE_VER="16.17.1" RUN ARCH= && \ dpkgArch="$(dpkg --print-architecture)" && \ case "${dpkgArch##*-}" in \ From 85890bc80fe622744f838b8f1ebdfa9278cb3d2b Mon Sep 17 00:00:00 2001 From: Claire Date: Sat, 24 Sep 2022 07:41:01 +0200 Subject: [PATCH 412/652] Fix crash in FetchRemoteKeyService (#19225) Fix regression from #19212 --- app/services/activitypub/fetch_remote_key_service.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/services/activitypub/fetch_remote_key_service.rb b/app/services/activitypub/fetch_remote_key_service.rb index fe8f60b55..32e82b47a 100644 --- a/app/services/activitypub/fetch_remote_key_service.rb +++ b/app/services/activitypub/fetch_remote_key_service.rb @@ -12,7 +12,7 @@ class ActivityPub::FetchRemoteKeyService < BaseService if prefetched_body.nil? if id @json = fetch_resource_without_id_validation(uri) - if person? + if actor_type? @json = fetch_resource(@json['id'], true) elsif uri != @json['id'] raise Error, "Fetched URI #{uri} has wrong id #{@json['id']}" @@ -27,7 +27,7 @@ class ActivityPub::FetchRemoteKeyService < BaseService raise Error, "Unable to fetch key JSON at #{uri}" if @json.nil? raise Error, "Unsupported JSON-LD context for document #{uri}" unless supported_context?(@json) raise Error, "Unexpected object type for key #{uri}" unless expected_type? - return find_actor(@json['id'], @json, suppress_errors) if person? + return find_actor(@json['id'], @json, suppress_errors) if actor_type? @owner = fetch_resource(owner_uri, true) @@ -51,10 +51,10 @@ class ActivityPub::FetchRemoteKeyService < BaseService end def expected_type? - actor? || public_key? + actor_type? || public_key? end - def actor? + def actor_type? equals_or_includes_any?(@json['type'], ActivityPub::FetchRemoteActorService::SUPPORTED_TYPES) end From 7165e89362167eea79f3ab0d0251d56b300dd150 Mon Sep 17 00:00:00 2001 From: Claire Date: Sat, 24 Sep 2022 08:33:27 +0200 Subject: [PATCH 413/652] Add tests to ActivityPub::FetchRemoteKeyService (#19226) --- .../fetch_remote_key_service_spec.rb | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 spec/services/activitypub/fetch_remote_key_service_spec.rb diff --git a/spec/services/activitypub/fetch_remote_key_service_spec.rb b/spec/services/activitypub/fetch_remote_key_service_spec.rb new file mode 100644 index 000000000..3186c4270 --- /dev/null +++ b/spec/services/activitypub/fetch_remote_key_service_spec.rb @@ -0,0 +1,83 @@ +require 'rails_helper' + +RSpec.describe ActivityPub::FetchRemoteKeyService, type: :service do + subject { ActivityPub::FetchRemoteKeyService.new } + + let(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/alice' }] } } + + let(:public_key_pem) do + "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu3L4vnpNLzVH31MeWI39\n4F0wKeJFsLDAsNXGeOu0QF2x+h1zLWZw/agqD2R3JPU9/kaDJGPIV2Sn5zLyUA9S\n6swCCMOtn7BBR9g9sucgXJmUFB0tACH2QSgHywMAybGfmSb3LsEMNKsGJ9VsvYoh\n8lDET6X4Pyw+ZJU0/OLo/41q9w+OrGtlsTm/PuPIeXnxa6BLqnDaxC+4IcjG/FiP\nahNCTINl/1F/TgSSDZ4Taf4U9XFEIFw8wmgploELozzIzKq+t8nhQYkgAkt64euW\npva3qL5KD1mTIZQEP+LZvh3s2WHrLi3fhbdRuwQ2c0KkJA2oSTFPDpqqbPGZ3Qvu\nHQIDAQAB\n-----END PUBLIC KEY-----\n" + end + + let(:public_key_id) { 'https://example.com/alice#main-key' } + + let(:key_json) do + { + id: public_key_id, + owner: 'https://example.com/alice', + publicKeyPem: public_key_pem, + } + end + + let(:actor_public_key) { key_json } + + let(:actor) do + { + '@context': [ + 'https://www.w3.org/ns/activitystreams', + 'https://w3id.org/security/v1', + ], + id: 'https://example.com/alice', + type: 'Person', + preferredUsername: 'alice', + name: 'Alice', + summary: 'Foo bar', + inbox: 'http://example.com/alice/inbox', + publicKey: actor_public_key, + } + end + + before do + stub_request(:get, 'https://example.com/alice').to_return(body: Oj.dump(actor)) + stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' }) + end + + describe '#call' do + let(:account) { subject.call(public_key_id, id: false) } + + context 'when the key is a sub-object from the actor' do + before do + stub_request(:get, public_key_id).to_return(body: Oj.dump(actor)) + end + + it 'returns the expected account' do + expect(account.uri).to eq 'https://example.com/alice' + end + end + + context 'when the key is a separate document' do + let(:public_key_id) { 'https://example.com/alice-public-key.json' } + + before do + stub_request(:get, public_key_id).to_return(body: Oj.dump(key_json.merge({ '@context': ['https://www.w3.org/ns/activitystreams', 'https://w3id.org/security/v1'] }))) + end + + it 'returns the expected account' do + expect(account.uri).to eq 'https://example.com/alice' + end + end + + context 'when the key and owner do not match' do + let(:public_key_id) { 'https://example.com/fake-public-key.json' } + let(:actor_public_key) { 'https://example.com/alice-public-key.json' } + + before do + stub_request(:get, public_key_id).to_return(body: Oj.dump(key_json.merge({ '@context': ['https://www.w3.org/ns/activitystreams', 'https://w3id.org/security/v1'] }))) + end + + it 'returns the nil' do + expect(account).to be_nil + end + end + end +end From be05e6a37d2cfdeb8434ec2f2a0ed4526f3142ef Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 24 Sep 2022 19:37:14 +0900 Subject: [PATCH 414/652] Bump sidekiq from 6.5.6 to 6.5.7 (#19210) Bumps [sidekiq](https://github.com/mperham/sidekiq) from 6.5.6 to 6.5.7. - [Release notes](https://github.com/mperham/sidekiq/releases) - [Changelog](https://github.com/mperham/sidekiq/blob/main/Changes.md) - [Commits](https://github.com/mperham/sidekiq/compare/v6.5.6...v6.5.7) --- updated-dependencies: - dependency-name: sidekiq dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index ae43ce254..ff9db24d1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -608,7 +608,7 @@ GEM activerecord (>= 4.0.0) railties (>= 4.0.0) semantic_range (3.0.0) - sidekiq (6.5.6) + sidekiq (6.5.7) connection_pool (>= 2.2.5) rack (~> 2.0) redis (>= 4.5.0, < 5) From bec214d090719ef98639072967ea6a22829c8eae Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 24 Sep 2022 19:38:46 +0900 Subject: [PATCH 415/652] Bump httplog from 1.5.0 to 1.6.0 (#19192) Bumps [httplog](https://github.com/trusche/httplog) from 1.5.0 to 1.6.0. - [Release notes](https://github.com/trusche/httplog/releases) - [Changelog](https://github.com/trusche/httplog/blob/master/CHANGELOG.md) - [Commits](https://github.com/trusche/httplog/commits) --- updated-dependencies: - dependency-name: httplog dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index d90c17f14..c18118916 100644 --- a/Gemfile +++ b/Gemfile @@ -55,7 +55,7 @@ gem 'redis-namespace', '~> 1.9' gem 'htmlentities', '~> 4.3' gem 'http', '~> 5.1' gem 'http_accept_language', '~> 2.1' -gem 'httplog', '~> 1.5.0' +gem 'httplog', '~> 1.6.0' gem 'idn-ruby', require: 'idn' gem 'kaminari', '~> 1.2' gem 'link_header', '~> 0.0' diff --git a/Gemfile.lock b/Gemfile.lock index ff9db24d1..aa41bea0b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -309,8 +309,8 @@ GEM http-form_data (2.3.0) http_accept_language (2.1.1) httpclient (2.8.3) - httplog (1.5.0) - rack (>= 1.0) + httplog (1.6.0) + rack (>= 2.0) rainbow (>= 2.0.0) i18n (1.12.0) concurrent-ruby (~> 1.0) @@ -775,7 +775,7 @@ DEPENDENCIES htmlentities (~> 4.3) http (~> 5.1) http_accept_language (~> 2.1) - httplog (~> 1.5.0) + httplog (~> 1.6.0) i18n-tasks (~> 1.0) idn-ruby json-ld From 911951e776beb951512d7ea282e369dc342f2ff2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 24 Sep 2022 19:55:44 +0900 Subject: [PATCH 416/652] Bump connection_pool from 2.2.5 to 2.3.0 (#19202) Bumps [connection_pool](https://github.com/mperham/connection_pool) from 2.2.5 to 2.3.0. - [Release notes](https://github.com/mperham/connection_pool/releases) - [Changelog](https://github.com/mperham/connection_pool/blob/main/Changes.md) - [Commits](https://github.com/mperham/connection_pool/compare/v2.2.5...v2.3.0) --- updated-dependencies: - dependency-name: connection_pool dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index aa41bea0b..425970a52 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -175,7 +175,7 @@ GEM coderay (1.1.3) color_diff (0.1) concurrent-ruby (1.1.10) - connection_pool (2.2.5) + connection_pool (2.3.0) cose (1.2.1) cbor (~> 0.5.9) openssl-signature_algorithm (~> 1.0) From 3e0999cd1139d638332d62129dbf0b37263802fd Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 24 Sep 2022 17:28:54 +0200 Subject: [PATCH 417/652] New Crowdin updates (#19208) * New translations en.json (Chinese Traditional) * New translations en.json (Spanish, Argentina) * New translations en.json (Galician) * New translations en.json (Ukrainian) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Spanish) * New translations en.json (Arabic) * New translations en.json (Greek) * New translations en.json (Italian) * New translations en.json (Portuguese) * New translations en.json (Hungarian) * New translations en.json (Polish) * New translations en.json (Portuguese) * New translations en.json (Icelandic) * New translations en.json (Albanian) * New translations en.json (Ukrainian) * New translations en.json (Russian) * New translations en.json (Spanish) * New translations en.json (Slovenian) * New translations en.json (Turkish) * New translations en.json (Latvian) * New translations en.json (Thai) * New translations en.json (Czech) * New translations en.json (Czech) * New translations en.yml (Ukrainian) * New translations en.json (Sinhala) * New translations en.yml (Sinhala) * New translations simple_form.en.yml (Sinhala) * New translations en.json (Vietnamese) * New translations en.json (German) * New translations activerecord.en.yml (Galician) * New translations en.json (Thai) * New translations en.yml (Thai) * New translations en.json (Vietnamese) * New translations en.yml (Vietnamese) * New translations en.json (Sinhala) * New translations en.json (Kurmanji (Kurdish)) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` * New translations en.yml (Polish) * New translations simple_form.en.yml (Polish) * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 3 ++ app/javascript/mastodon/locales/ar.json | 19 ++++++----- app/javascript/mastodon/locales/ast.json | 3 ++ app/javascript/mastodon/locales/bg.json | 3 ++ app/javascript/mastodon/locales/bn.json | 3 ++ app/javascript/mastodon/locales/br.json | 3 ++ app/javascript/mastodon/locales/ca.json | 3 ++ app/javascript/mastodon/locales/ckb.json | 3 ++ app/javascript/mastodon/locales/co.json | 3 ++ app/javascript/mastodon/locales/cs.json | 11 ++++--- app/javascript/mastodon/locales/cy.json | 3 ++ app/javascript/mastodon/locales/da.json | 3 ++ app/javascript/mastodon/locales/de.json | 11 ++++--- .../mastodon/locales/defaultMessages.json | 33 +++++++++++++++++++ app/javascript/mastodon/locales/el.json | 5 ++- app/javascript/mastodon/locales/en-GB.json | 3 ++ app/javascript/mastodon/locales/en.json | 3 ++ app/javascript/mastodon/locales/eo.json | 3 ++ app/javascript/mastodon/locales/es-AR.json | 9 +++-- app/javascript/mastodon/locales/es-MX.json | 3 ++ app/javascript/mastodon/locales/es.json | 11 ++++--- app/javascript/mastodon/locales/et.json | 3 ++ app/javascript/mastodon/locales/eu.json | 3 ++ app/javascript/mastodon/locales/fa.json | 3 ++ app/javascript/mastodon/locales/fi.json | 3 ++ app/javascript/mastodon/locales/fr.json | 3 ++ app/javascript/mastodon/locales/fy.json | 3 ++ app/javascript/mastodon/locales/ga.json | 3 ++ app/javascript/mastodon/locales/gd.json | 3 ++ app/javascript/mastodon/locales/gl.json | 11 ++++--- app/javascript/mastodon/locales/he.json | 3 ++ app/javascript/mastodon/locales/hi.json | 3 ++ app/javascript/mastodon/locales/hr.json | 3 ++ app/javascript/mastodon/locales/hu.json | 11 ++++--- app/javascript/mastodon/locales/hy.json | 3 ++ app/javascript/mastodon/locales/id.json | 3 ++ app/javascript/mastodon/locales/io.json | 3 ++ app/javascript/mastodon/locales/is.json | 11 ++++--- app/javascript/mastodon/locales/it.json | 11 ++++--- app/javascript/mastodon/locales/ja.json | 3 ++ app/javascript/mastodon/locales/ka.json | 3 ++ app/javascript/mastodon/locales/kab.json | 3 ++ app/javascript/mastodon/locales/kk.json | 3 ++ app/javascript/mastodon/locales/kn.json | 3 ++ app/javascript/mastodon/locales/ko.json | 3 ++ app/javascript/mastodon/locales/ku.json | 13 +++++--- app/javascript/mastodon/locales/kw.json | 3 ++ app/javascript/mastodon/locales/lt.json | 3 ++ app/javascript/mastodon/locales/lv.json | 11 ++++--- app/javascript/mastodon/locales/mk.json | 3 ++ app/javascript/mastodon/locales/ml.json | 3 ++ app/javascript/mastodon/locales/mr.json | 3 ++ app/javascript/mastodon/locales/ms.json | 3 ++ app/javascript/mastodon/locales/nl.json | 3 ++ app/javascript/mastodon/locales/nn.json | 3 ++ app/javascript/mastodon/locales/no.json | 3 ++ app/javascript/mastodon/locales/oc.json | 3 ++ app/javascript/mastodon/locales/pa.json | 3 ++ app/javascript/mastodon/locales/pl.json | 11 ++++--- app/javascript/mastodon/locales/pt-BR.json | 3 ++ app/javascript/mastodon/locales/pt-PT.json | 11 ++++--- app/javascript/mastodon/locales/ro.json | 3 ++ app/javascript/mastodon/locales/ru.json | 11 ++++--- app/javascript/mastodon/locales/sa.json | 3 ++ app/javascript/mastodon/locales/sc.json | 3 ++ app/javascript/mastodon/locales/si.json | 29 ++++++++-------- app/javascript/mastodon/locales/sk.json | 3 ++ app/javascript/mastodon/locales/sl.json | 11 ++++--- app/javascript/mastodon/locales/sq.json | 11 ++++--- app/javascript/mastodon/locales/sr-Latn.json | 3 ++ app/javascript/mastodon/locales/sr.json | 3 ++ app/javascript/mastodon/locales/sv.json | 3 ++ app/javascript/mastodon/locales/szl.json | 3 ++ app/javascript/mastodon/locales/ta.json | 3 ++ app/javascript/mastodon/locales/tai.json | 3 ++ app/javascript/mastodon/locales/te.json | 3 ++ app/javascript/mastodon/locales/th.json | 11 ++++--- app/javascript/mastodon/locales/tr.json | 11 ++++--- app/javascript/mastodon/locales/tt.json | 3 ++ app/javascript/mastodon/locales/ug.json | 3 ++ app/javascript/mastodon/locales/uk.json | 11 ++++--- app/javascript/mastodon/locales/ur.json | 3 ++ app/javascript/mastodon/locales/vi.json | 13 +++++--- app/javascript/mastodon/locales/zgh.json | 3 ++ app/javascript/mastodon/locales/zh-CN.json | 3 ++ app/javascript/mastodon/locales/zh-HK.json | 3 ++ app/javascript/mastodon/locales/zh-TW.json | 11 ++++--- config/locales/pl.yml | 10 ++++++ config/locales/si.yml | 8 ++--- config/locales/simple_form.pl.yml | 1 + config/locales/simple_form.si.yml | 2 +- config/locales/th.yml | 2 ++ config/locales/uk.yml | 7 +++- config/locales/vi.yml | 2 +- 94 files changed, 419 insertions(+), 110 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 384e6feb2..8e2361941 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Show more", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 65ec25be9..81c1f8104 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -60,7 +60,7 @@ "alert.unexpected.title": "المعذرة!", "announcement.announcement": "إعلان", "attachments_list.unprocessed": "(غير معالَج)", - "audio.hide": "Hide audio", + "audio.hide": "إخفاء المقطع الصوتي", "autosuggest_hashtag.per_week": "{count} في الأسبوع", "boost_modal.combo": "يُمكنك الضّغط على {combo} لتخطي هذا في المرة المُقبلة", "bundle_column_error.body": "لقد حدث خطأ ما أثناء تحميل هذا العنصر.", @@ -204,7 +204,7 @@ "filter_modal.added.expired_title": "Expired filter!", "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", + "filter_modal.added.settings_link": "صفحة الإعدادات", "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", "filter_modal.added.title": "Filter added!", "filter_modal.select_filter.context_mismatch": "does not apply to this context", @@ -348,7 +348,7 @@ "notification.update": "عدّلَ {name} منشورًا", "notifications.clear": "امسح الإخطارات", "notifications.clear_confirmation": "أمتأكد من أنك تود مسح جل الإخطارات الخاصة بك و المتلقاة إلى حد الآن ؟", - "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.report": "التقارير الجديدة:", "notifications.column_settings.admin.sign_up": "التسجيلات الجديدة:", "notifications.column_settings.alert": "إشعارات سطح المكتب", "notifications.column_settings.favourite": "المُفَضَّلة:", @@ -455,8 +455,8 @@ "report.unfollow": "إلغاء متابعة @{name}", "report.unfollow_explanation": "أنت تتابع هذا الحساب، لإزالة مَنشوراته من تغذيَتِكَ الرئيسة ألغ متابعته.", "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", - "report_notification.categories.spam": "Spam", + "report_notification.categories.other": "آخر", + "report_notification.categories.spam": "مزعج", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "ابحث", @@ -490,7 +490,7 @@ "status.favourite": "أضف إلى المفضلة", "status.filter": "Filter this post", "status.filtered": "مُصفّى", - "status.hide": "Hide toot", + "status.hide": "اخف التبويق", "status.history.created": "أنشأه {name} {date}", "status.history.edited": "عدله {name} {date}", "status.load_more": "حمّل المزيد", @@ -514,17 +514,20 @@ "status.report": "ابلِغ عن @{name}", "status.sensitive_warning": "محتوى حساس", "status.share": "مشاركة", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "إظهار على أي حال", "status.show_less": "اعرض أقلّ", "status.show_less_all": "طي الكل", "status.show_more": "أظهر المزيد", "status.show_more_all": "توسيع الكل", + "status.show_original": "Show original", "status.show_thread": "الكشف عن المحادثة", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "غير متوفر", "status.unmute_conversation": "فك الكتم عن المحادثة", "status.unpin": "فك التدبيس من الصفحة التعريفية", "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", + "subscribed_languages.save": "حفظ التغييرات", "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "إلغاء الاقتراح", "suggestions.header": "يمكن أن يهمك…", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 547956317..5c128ef20 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -519,7 +519,10 @@ "status.show_less_all": "Amosar menos en too", "status.show_more": "Amosar más", "status.show_more_all": "Amosar más en too", + "status.show_original": "Show original", "status.show_thread": "Amosar el filu", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Non disponible", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Desfixar del perfil", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 4135ff3cf..84007763c 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -519,7 +519,10 @@ "status.show_less_all": "Покажи по-малко за всички", "status.show_more": "Покажи повече", "status.show_more_all": "Покажи повече за всички", + "status.show_original": "Show original", "status.show_thread": "Показване на тема", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Не е налично", "status.unmute_conversation": "Раззаглушаване на разговор", "status.unpin": "Разкачане от профил", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index dfa718ae0..388b2a814 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -519,7 +519,10 @@ "status.show_less_all": "সবগুলোতে কম দেখতে", "status.show_more": "আরো দেখাতে", "status.show_more_all": "সবগুলোতে আরো দেখতে", + "status.show_original": "Show original", "status.show_thread": "আলোচনা দেখতে", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "পাওয়া যাচ্ছে না", "status.unmute_conversation": "আলোচনার প্রজ্ঞাপন চালু করতে", "status.unpin": "নিজের পাতা থেকে পিন করে রাখাটির পিন খুলতে", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index f3d19f9a2..a1f703cb2 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -519,7 +519,10 @@ "status.show_less_all": "Diskouez nebeutoc'h evit an holl", "status.show_more": "Diskouez muioc'h", "status.show_more_all": "Diskouez miuoc'h evit an holl", + "status.show_original": "Show original", "status.show_thread": "Diskouez ar gaozeadenn", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Dihegerz", "status.unmute_conversation": "Diguzhat ar gaozeadenn", "status.unpin": "Dispilhennañ eus ar profil", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 32faea99a..81a69c4b0 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -519,7 +519,10 @@ "status.show_less_all": "Mostrar-ne menys per a tot", "status.show_more": "Mostrar-ne més", "status.show_more_all": "Mostrar-ne més per a tot", + "status.show_original": "Show original", "status.show_thread": "Mostra el fil", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "No està disponible", "status.unmute_conversation": "No silenciïs la conversa", "status.unpin": "No fixis al perfil", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 1497e31a3..638a58a12 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -519,7 +519,10 @@ "status.show_less_all": "هەمووی بچووک بکەوە", "status.show_more": "زیاتر نیشان بدە", "status.show_more_all": "زیاتر نیشان بدە بۆ هەمووی", + "status.show_original": "Show original", "status.show_thread": "نیشاندانی گفتوگۆ", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "بەردەست نیە", "status.unmute_conversation": "گفتوگۆی بێدەنگ", "status.unpin": "لە سەرەوە لایبە", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index efc584c66..7075784bc 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -519,7 +519,10 @@ "status.show_less_all": "Ripiegà tuttu", "status.show_more": "Slibrà", "status.show_more_all": "Slibrà tuttu", + "status.show_original": "Show original", "status.show_thread": "Vede u filu", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Micca dispunibule", "status.unmute_conversation": "Ùn piattà più a cunversazione", "status.unpin": "Spuntarulà da u prufile", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index a5c512c0f..e3d2f30e8 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -24,7 +24,7 @@ "account.follows_you": "Sleduje vás", "account.hide_reblogs": "Skrýt boosty od @{name}", "account.joined": "Založen {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Změnit odebírané jazyky", "account.link_verified_on": "Vlastnictví tohoto odkazu bylo zkontrolováno {date}", "account.locked_info": "Stav soukromí tohoto účtu je nastaven na zamčeno. Jeho vlastník ručně posuzuje, kdo ho může sledovat.", "account.media": "Média", @@ -519,13 +519,16 @@ "status.show_less_all": "Zobrazit méně pro všechny", "status.show_more": "Zobrazit více", "status.show_more_all": "Zobrazit více pro všechny", + "status.show_original": "Show original", "status.show_thread": "Zobrazit vlákno", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Nedostupné", "status.unmute_conversation": "Odkrýt konverzaci", "status.unpin": "Odepnout z profilu", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Po změně se objeví pouze příspěvky ve vybraných jazycích na vašem domě a zobrazí se seznam časových os. Pro příjem příspěvků ve všech jazycích nevyber žádnou.", + "subscribed_languages.save": "Uložit změny", + "subscribed_languages.target": "Změnit odebírané jazyky na {target}", "suggestions.dismiss": "Odmítnout návrh", "suggestions.header": "Mohlo by vás zajímat…", "tabs_bar.federated_timeline": "Federovaná", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index de59b5ac5..c777dcd6a 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -519,7 +519,10 @@ "status.show_less_all": "Dangos llai i bawb", "status.show_more": "Dangos mwy", "status.show_more_all": "Dangos mwy i bawb", + "status.show_original": "Show original", "status.show_thread": "Dangos edefyn", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Dim ar gael", "status.unmute_conversation": "Dad-dawelu sgwrs", "status.unpin": "Dadbinio o'r proffil", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index ffa6fdd15..92dddbfe2 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -519,7 +519,10 @@ "status.show_less_all": "Vis mindre for alle", "status.show_more": "Vis mere", "status.show_more_all": "Vis mere for alle", + "status.show_original": "Show original", "status.show_thread": "Vis tråd", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Utilgængelig", "status.unmute_conversation": "Genaktivér samtale", "status.unpin": "Frigør fra profil", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index a8b841a26..b0a4ca5fa 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -24,7 +24,7 @@ "account.follows_you": "Folgt dir", "account.hide_reblogs": "Geteilte Beiträge von @{name} verbergen", "account.joined": "Beigetreten am {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Abonnierte Sprachen ändern", "account.link_verified_on": "Diesem Profil folgt niemand", "account.locked_info": "Der Privatsphärenstatus dieses Accounts wurde auf „gesperrt“ gesetzt. Die Person bestimmt manuell, wer ihm/ihr folgen darf.", "account.media": "Medien", @@ -519,13 +519,16 @@ "status.show_less_all": "Alle Inhaltswarnungen zuklappen", "status.show_more": "Mehr anzeigen", "status.show_more_all": "Alle Inhaltswarnungen aufklappen", + "status.show_original": "Show original", "status.show_thread": "Zeige Konversation", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Nicht verfügbar", "status.unmute_conversation": "Stummschaltung von Konversation aufheben", "status.unpin": "Vom Profil lösen", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Nur Beiträge in ausgewählten Sprachen werden nach der Änderung auf deiner Startseite und den Listen angezeigt. Wähle keine aus, um Beiträge in allen Sprachen zu erhalten.", + "subscribed_languages.save": "Änderungen speichern", + "subscribed_languages.target": "Abonnierte Sprachen für {target} ändern", "suggestions.dismiss": "Empfehlung ausblenden", "suggestions.header": "Du bist vielleicht interessiert an…", "tabs_bar.federated_timeline": "Föderation", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 4c208c3cb..6b27f7877 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -653,6 +653,18 @@ "defaultMessage": "Read more", "id": "status.read_more" }, + { + "defaultMessage": "Translated from {lang}", + "id": "status.translated_from" + }, + { + "defaultMessage": "Show original", + "id": "status.show_original" + }, + { + "defaultMessage": "Translate", + "id": "status.translate" + }, { "defaultMessage": "Show more", "id": "status.show_more" @@ -3022,6 +3034,27 @@ ], "path": "app/javascript/mastodon/features/report/comment.json" }, + { + "descriptors": [ + { + "defaultMessage": "Public", + "id": "privacy.public.short" + }, + { + "defaultMessage": "Unlisted", + "id": "privacy.unlisted.short" + }, + { + "defaultMessage": "Followers-only", + "id": "privacy.private.short" + }, + { + "defaultMessage": "Mentioned people only", + "id": "privacy.direct.short" + } + ], + "path": "app/javascript/mastodon/features/report/components/status_check_box.json" + }, { "descriptors": [ { diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index d90455b51..2a32dbcc6 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -519,12 +519,15 @@ "status.show_less_all": "Δείξε λιγότερα για όλα", "status.show_more": "Δείξε περισσότερα", "status.show_more_all": "Δείξε περισσότερα για όλα", + "status.show_original": "Show original", "status.show_thread": "Εμφάνιση νήματος", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Μη διαθέσιμα", "status.unmute_conversation": "Διέκοψε την αποσιώπηση της συζήτησης", "status.unpin": "Ξεκαρφίτσωσε από το προφίλ", "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", + "subscribed_languages.save": "Αποθήκευση αλλαγών", "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Απόρριψη πρότασης", "suggestions.header": "Ίσως να ενδιαφέρεσαι για…", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index eab3be805..7dc245a38 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Show more", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 4f515b321..c7b31e6f4 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Show more", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 0363f6715..bb770767c 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -519,7 +519,10 @@ "status.show_less_all": "Montri malpli ĉiun", "status.show_more": "Montri pli", "status.show_more_all": "Montri pli ĉiun", + "status.show_original": "Show original", "status.show_thread": "Montri la mesaĝaron", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Nedisponebla", "status.unmute_conversation": "Malsilentigi la konversacion", "status.unpin": "Depingli de profilo", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 8a7335ac0..6246462bb 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -519,13 +519,16 @@ "status.show_less_all": "Mostrar menos para todo", "status.show_more": "Mostrar más", "status.show_more_all": "Mostrar más para todo", + "status.show_original": "Show original", "status.show_thread": "Mostrar hilo", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Después del cambio, sólo los mensajes en los idiomas seleccionados aparecerán en tu línea temporal Principal y en las líneas de tiempo de lista. No seleccionés ningún idioma para poder recibir mensajes en todos los idiomas.", + "subscribed_languages.save": "Guardar cambios", + "subscribed_languages.target": "Cambiar idiomas suscritos para {target}", "suggestions.dismiss": "Descartar sugerencia", "suggestions.header": "Es posible que te interese…", "tabs_bar.federated_timeline": "Federada", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 2bcc3a554..f9823a8a4 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -519,7 +519,10 @@ "status.show_less_all": "Mostrar menos para todo", "status.show_more": "Mostrar más", "status.show_more_all": "Mostrar más para todo", + "status.show_original": "Show original", "status.show_thread": "Mostrar hilo", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index ade9480d7..68cd972ab 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -24,7 +24,7 @@ "account.follows_you": "Te sigue", "account.hide_reblogs": "Ocultar retoots de @{name}", "account.joined": "Se unió el {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Cambiar idiomas suscritos", "account.link_verified_on": "El proprietario de este link fue comprobado el {date}", "account.locked_info": "El estado de privacidad de esta cuenta està configurado como bloqueado. El proprietario debe revisar manualmente quien puede seguirle.", "account.media": "Multimedia", @@ -519,13 +519,16 @@ "status.show_less_all": "Mostrar menos para todo", "status.show_more": "Mostrar más", "status.show_more_all": "Mostrar más para todo", + "status.show_original": "Show original", "status.show_thread": "Mostrar hilo", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Sólo los mensajes en los idiomas seleccionados aparecerán en su inicio y otras líneas de tiempo después del cambio. Seleccione ninguno para recibir mensajes en todos los idiomas.", + "subscribed_languages.save": "Guardar cambios", + "subscribed_languages.target": "Cambiar idiomas suscritos para {target}", "suggestions.dismiss": "Descartar sugerencia", "suggestions.header": "Es posible que te interese…", "tabs_bar.federated_timeline": "Federada", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 3eaaa12ec..86dc95495 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -519,7 +519,10 @@ "status.show_less_all": "Näita vähem kõigile", "status.show_more": "Näita veel", "status.show_more_all": "Näita enam kõigile", + "status.show_original": "Show original", "status.show_thread": "Kuva lõim", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Pole saadaval", "status.unmute_conversation": "Ära vaigista vestlust", "status.unpin": "Kinnita profiililt lahti", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 5b72eeb2d..77259248c 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -519,7 +519,10 @@ "status.show_less_all": "Erakutsi denetarik gutxiago", "status.show_more": "Erakutsi gehiago", "status.show_more_all": "Erakutsi denetarik gehiago", + "status.show_original": "Show original", "status.show_thread": "Erakutsi haria", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Ez eskuragarri", "status.unmute_conversation": "Desmututu elkarrizketa", "status.unpin": "Desfinkatu profiletik", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index f3e6fbc72..7046b9a14 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -519,7 +519,10 @@ "status.show_less_all": "نمایش کمتر همه", "status.show_more": "نمایش بیشتر", "status.show_more_all": "نمایش بیشتر همه", + "status.show_original": "Show original", "status.show_thread": "نمایش رشته", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "ناموجود", "status.unmute_conversation": "رفع خموشی گفت‌وگو", "status.unpin": "برداشتن سنجاق از نمایه", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 6920093f4..1cbea9808 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -519,7 +519,10 @@ "status.show_less_all": "Näytä vähemmän kaikista", "status.show_more": "Näytä lisää", "status.show_more_all": "Näytä lisää kaikista", + "status.show_original": "Show original", "status.show_thread": "Näytä ketju", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Ei saatavilla", "status.unmute_conversation": "Poista keskustelun mykistys", "status.unpin": "Irrota profiilista", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 9cbbc3c03..3172f6c72 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -519,7 +519,10 @@ "status.show_less_all": "Tout replier", "status.show_more": "Déplier", "status.show_more_all": "Tout déplier", + "status.show_original": "Show original", "status.show_thread": "Montrer le fil", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Indisponible", "status.unmute_conversation": "Ne plus masquer la conversation", "status.unpin": "Retirer du profil", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index 1e49a7e17..b47dc584c 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -519,7 +519,10 @@ "status.show_less_all": "Foar alles minder sjen litte", "status.show_more": "Mear sjen litte", "status.show_more_all": "Foar alles mear sjen litte", + "status.show_original": "Show original", "status.show_thread": "Petear sjen litte", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Net beskikber", "status.unmute_conversation": "Petear net mear negearre", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index e9e1e96d4..91f802f70 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Show more", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Díbhalbhaigh comhrá", "status.unpin": "Díphionnáil de do phróifíl", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 7f17df51e..93a53f960 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -519,7 +519,10 @@ "status.show_less_all": "Seall nas lugha dhen a h-uile", "status.show_more": "Seall barrachd dheth", "status.show_more_all": "Seall barrachd dhen a h-uile", + "status.show_original": "Show original", "status.show_thread": "Seall an snàithlean", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Chan eil seo ri fhaighinn", "status.unmute_conversation": "Dì-mhùch an còmhradh", "status.unpin": "Dì-phrìnich on phròifil", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 215956d49..6b7cf5bed 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -24,7 +24,7 @@ "account.follows_you": "Séguete", "account.hide_reblogs": "Agochar repeticións de @{name}", "account.joined": "Uníuse {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Modificar os idiomas subscritos", "account.link_verified_on": "A propiedade desta ligazón foi verificada o {date}", "account.locked_info": "Esta é unha conta privada. A propietaria revisa de xeito manual quen pode seguila.", "account.media": "Multimedia", @@ -519,13 +519,16 @@ "status.show_less_all": "Amosar menos para todos", "status.show_more": "Amosar máis", "status.show_more_all": "Amosar máis para todos", + "status.show_original": "Show original", "status.show_thread": "Amosar fío", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Non dispoñíbel", "status.unmute_conversation": "Deixar de silenciar conversa", "status.unpin": "Desafixar do perfil", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Ao facer cambios só as publicacións nos idiomas seleccionados aparecerán nas túas cronoloxías. Non elixas ningún para poder ver publicacións en tódolos idiomas.", + "subscribed_languages.save": "Gardar cambios", + "subscribed_languages.target": "Cambiar a subscrición a idiomas para {target}", "suggestions.dismiss": "Rexeitar suxestión", "suggestions.header": "Poderíache interesar…", "tabs_bar.federated_timeline": "Federada", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 9c60de8ca..a27e0e827 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -519,7 +519,10 @@ "status.show_less_all": "להציג פחות מהכל", "status.show_more": "הראה יותר", "status.show_more_all": "להציג יותר מהכל", + "status.show_original": "Show original", "status.show_thread": "הצג כחלק מפתיל", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "לא זמין", "status.unmute_conversation": "הסרת השתקת שיחה", "status.unpin": "לשחרר מקיבוע באודות", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index 6fab737f9..9c2b9e618 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "और दिखाएँ", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "अनुपलब्ध", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index 94ff9d3a3..ebb102b44 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Pokaži više", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Prikaži nit", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Nije dostupno", "status.unmute_conversation": "Poništi utišavanje razgovora", "status.unpin": "Otkvači s profila", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index cc3602956..c2679b35a 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -24,7 +24,7 @@ "account.follows_you": "Követ téged", "account.hide_reblogs": "@{name} megtolásainak elrejtése", "account.joined": "Csatlakozott {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Feliratkozott nyelvek módosítása", "account.link_verified_on": "A linket eredetiségét ebben az időpontban ellenőriztük: {date}", "account.locked_info": "Ennek a fióknak zárolt a láthatósága. A tulajdonos kézzel engedélyezi, hogy ki követheti őt.", "account.media": "Média", @@ -519,13 +519,16 @@ "status.show_less_all": "Kevesebbet mindenhol", "status.show_more": "Többet", "status.show_more_all": "Többet mindenhol", + "status.show_original": "Show original", "status.show_thread": "Szál mutatása", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Nem érhető el", "status.unmute_conversation": "Beszélgetés némításának feloldása", "status.unpin": "Kitűzés eltávolítása a profilodról", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "A változtatás után csak a kiválasztott nyelvű bejegyzések fognak megjelenni a kezdőlapon és az idővonalakon. Ha egy sincs kiválasztva, akkor minden nyelven megjelennek a bejegyzések.", + "subscribed_languages.save": "Változások mentése", + "subscribed_languages.target": "Feliratkozott nyelvek módosítása a következőnél: {target}", "suggestions.dismiss": "Javaslat elvetése", "suggestions.header": "Esetleg érdekelhet…", "tabs_bar.federated_timeline": "Föderációs", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index dc1bec6e4..44fd15696 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -519,7 +519,10 @@ "status.show_less_all": "Թաքցնել բոլոր նախազգուշացնումները", "status.show_more": "Աւելին", "status.show_more_all": "Ցուցադրել բոլոր նախազգուշացնումները", + "status.show_original": "Show original", "status.show_thread": "Բացել շղթան", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Անհասանելի", "status.unmute_conversation": "Ապալռեցնել խօսակցութիւնը", "status.unpin": "Հանել անձնական էջից", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 8b615038b..986e06c24 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -519,7 +519,10 @@ "status.show_less_all": "Tampilkan lebih sedikit", "status.show_more": "Tampilkan semua", "status.show_more_all": "Tampilkan lebih banyak", + "status.show_original": "Show original", "status.show_thread": "Tampilkan utas", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Tak tersedia", "status.unmute_conversation": "Bunyikan percakapan", "status.unpin": "Hapus sematan dari profil", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 312ef70ae..8fe2f7c8c 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -519,7 +519,10 @@ "status.show_less_all": "Montrez min por omno", "status.show_more": "Montrar plue", "status.show_more_all": "Montrez pluse por omno", + "status.show_original": "Show original", "status.show_thread": "Montrez postaro", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Nedisplonebla", "status.unmute_conversation": "Desilencigez konverso", "status.unpin": "Depinglagez de profilo", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index aa46b748b..73eafad06 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -24,7 +24,7 @@ "account.follows_you": "Fylgir þér", "account.hide_reblogs": "Fela endurbirtingar fyrir @{name}", "account.joined": "Gerðist þátttakandi {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Breyta tungumálum í áskrift", "account.link_verified_on": "Eignarhald á þessum tengli var athugað þann {date}", "account.locked_info": "Staða gagnaleyndar á þessum aðgangi er stillt á læsingu. Eigandinn yfirfer handvirkt hverjir geti fylgst með honum.", "account.media": "Myndskrár", @@ -519,13 +519,16 @@ "status.show_less_all": "Sýna minna fyrir allt", "status.show_more": "Sýna meira", "status.show_more_all": "Sýna meira fyrir allt", + "status.show_original": "Show original", "status.show_thread": "Birta þráð", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Ekki tiltækt", "status.unmute_conversation": "Hætta að þagga niður í samtali", "status.unpin": "Losa af notandasniði", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Einungis færslur á völdum tungumálum munu birtast á upphafssíðu og tímalínum þínum eftir þessa breytingu. Veldu ekkert til að sjá færslur á öllum tungumálum.", + "subscribed_languages.save": "Vista breytingar", + "subscribed_languages.target": "Breyta tungumálum í áskrift fyrir {target}", "suggestions.dismiss": "Hafna tillögu", "suggestions.header": "Þú gætir haft áhuga á…", "tabs_bar.federated_timeline": "Sameiginlegt", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 28e9902a8..92fe389e4 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -24,7 +24,7 @@ "account.follows_you": "Ti segue", "account.hide_reblogs": "Nascondi condivisioni da @{name}", "account.joined": "Su questa istanza dal {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Cambia le lingue di cui ricevere i post", "account.link_verified_on": "La proprietà di questo link è stata controllata il {date}", "account.locked_info": "Questo è un account privato. Il proprietario approva manualmente chi può seguirlo.", "account.media": "Media", @@ -519,13 +519,16 @@ "status.show_less_all": "Mostra meno per tutti", "status.show_more": "Mostra di più", "status.show_more_all": "Mostra di più per tutti", + "status.show_original": "Show original", "status.show_thread": "Mostra conversazione", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Non disponibile", "status.unmute_conversation": "Annulla silenzia conversazione", "status.unpin": "Non fissare in cima al profilo", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Solo i messaggi nelle lingue selezionate appariranno nella tua home e nelle timeline dopo il cambiamento. Seleziona nessuno per ricevere messaggi in tutte le lingue.", + "subscribed_languages.save": "Salva modifiche", + "subscribed_languages.target": "Cambia le lingue di cui ricevere i post per {target}", "suggestions.dismiss": "Elimina suggerimento", "suggestions.header": "Ti potrebbe interessare…", "tabs_bar.federated_timeline": "Federazione", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 5de2a7abd..1e49517f9 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -519,7 +519,10 @@ "status.show_less_all": "全て隠す", "status.show_more": "もっと見る", "status.show_more_all": "全て見る", + "status.show_original": "Show original", "status.show_thread": "スレッドを表示", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "利用できません", "status.unmute_conversation": "会話のミュートを解除", "status.unpin": "プロフィールへの固定を解除", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index 8021d8be2..f10c97e1c 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -519,7 +519,10 @@ "status.show_less_all": "აჩვენე ნაკლები ყველაზე", "status.show_more": "აჩვენე მეტი", "status.show_more_all": "აჩვენე მეტი ყველაზე", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "საუბარზე გაჩუმების მოშორება", "status.unpin": "პროფილიდან პინის მოშორება", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 78f41c636..644dff4b5 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -519,7 +519,10 @@ "status.show_less_all": "Semẓi akk tisuffγin", "status.show_more": "Ssken-d ugar", "status.show_more_all": "Ẓerr ugar lebda", + "status.show_original": "Show original", "status.show_thread": "Ssken-d lxiḍ", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Ulac-it", "status.unmute_conversation": "Kkes asgugem n udiwenni", "status.unpin": "Kkes asenteḍ seg umaɣnu", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index 29b6aa16a..5e77a5959 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -519,7 +519,10 @@ "status.show_less_all": "Бәрін аздап көрсет", "status.show_more": "Толығырақ", "status.show_more_all": "Бәрін толығымен", + "status.show_original": "Show original", "status.show_thread": "Желіні көрсет", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Қолжетімді емес", "status.unmute_conversation": "Пікірталасты үнсіз қылмау", "status.unpin": "Профильден алып тастау", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index ed97bac69..15cafe8f9 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Show more", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index e17582189..8dc82a3a8 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -519,7 +519,10 @@ "status.show_less_all": "모두 접기", "status.show_more": "더 보기", "status.show_more_all": "모두 펼치기", + "status.show_original": "Show original", "status.show_thread": "글타래 보기", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "사용할 수 없음", "status.unmute_conversation": "이 대화의 뮤트 해제하기", "status.unpin": "고정 해제", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 105c45a2d..6b5128f4d 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -24,9 +24,9 @@ "account.follows_you": "Te dişopîne", "account.hide_reblogs": "Bilindkirinên ji @{name} veşêre", "account.joined": "Di {date} de tevlî bû", - "account.languages": "Change subscribed languages", + "account.languages": "Zimanên beşdarbûyî biguherîne", "account.link_verified_on": "Xwedaniya li vê girêdanê di {date} de hatiye kontrolkirin", - "account.locked_info": "Rewşa vê ajimêrê wek kilît kirî hatiye saz kirin. Xwedî yê ajimêrê, kesên vê bişopîne bi dest vekolin dike.", + "account.locked_info": "Rewşa vê ajimêrê wek kilîtkirî hatiye sazkirin. Xwediyê ajimêrê, bi destan dinirxîne şopandinê dinirxîne.", "account.media": "Medya", "account.mention": "Qal @{name} bike", "account.moved_to": "{name} hate livandin bo:", @@ -519,13 +519,16 @@ "status.show_less_all": "Ji bo hemîyan kêmtir nîşan bide", "status.show_more": "Bêtir nîşan bide", "status.show_more_all": "Bêtir nîşan bide bo hemûyan", + "status.show_original": "Show original", "status.show_thread": "Mijarê nîşan bide", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Tune ye", "status.unmute_conversation": "Axaftinê bêdeng neke", "status.unpin": "Şandiya derzîkirî ji profîlê rake", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Tenê şandiyên bi zimanên hilbijartî wê di rojev û demnameya te de wê xuya bibe û piştî guhertinê. Ji bo wergirtina şandiyan di hemû zimanan de ne yek hilbijêre.", + "subscribed_languages.save": "Guhertinan tomar bike", + "subscribed_languages.target": "Zimanên beşdarbûyî biguherîne ji bo {target}", "suggestions.dismiss": "Pêşniyarê paşguh bike", "suggestions.header": "Dibe ku bala te bikşîne…", "tabs_bar.federated_timeline": "Giştî", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index 6b901f70d..34f72a365 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -519,7 +519,10 @@ "status.show_less_all": "Diskwedhes le rag puptra", "status.show_more": "Diskwedhes moy", "status.show_more_all": "Diskwedhes moy rag puptra", + "status.show_original": "Show original", "status.show_thread": "Diskwedhes neusen", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Ankavadow", "status.unmute_conversation": "Antawhe kesklapp", "status.unpin": "Anfastya a brofil", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 0be6c4e68..e01e35714 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Show more", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 3b538799e..b018c8d49 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -24,7 +24,7 @@ "account.follows_you": "Seko tev", "account.hide_reblogs": "Paslēpt paceltos ierakstus no lietotāja @{name}", "account.joined": "Pievienojās {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Mainīt abonētās valodas", "account.link_verified_on": "Šīs saites piederība ir pārbaudīta {date}", "account.locked_info": "Šī konta privātuma statuss ir slēgts. Īpašnieks izskatīs, kurš viņam drīkst sekot.", "account.media": "Multivide", @@ -519,13 +519,16 @@ "status.show_less_all": "Rādīt mazāk visiem", "status.show_more": "Rādīt vairāk", "status.show_more_all": "Rādīt vairāk visiem", + "status.show_original": "Show original", "status.show_thread": "Rādīt tematu", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Nav pieejams", "status.unmute_conversation": "Atvērt sarunu", "status.unpin": "Noņemt no profila", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Pēc izmaiņu veikšanas tavā mājas lapā un saraksta laika skalās tiks rādītas tikai ziņas atlasītajās valodās. Neatlasi nevienu, lai saņemtu ziņas visās valodās.", + "subscribed_languages.save": "Saglabāt izmaiņas", + "subscribed_languages.target": "Mainīt abonētās valodas priekš {target}", "suggestions.dismiss": "Noraidīt ieteikumu", "suggestions.header": "Jūs varētu interesēt arī…", "tabs_bar.federated_timeline": "Federētā", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index 2c001c37c..916a8e98a 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Show more", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index 446901372..12196c123 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "കൂടുതകൽ കാണിക്കുക", "status.show_more_all": "എല്ലാവർക്കുമായി കൂടുതൽ കാണിക്കുക", + "status.show_original": "Show original", "status.show_thread": "ത്രെഡ് കാണിക്കുക", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "ലഭ്യമല്ല", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index 8c7f0ec11..6f120c6fb 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Show more", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 4e50ef465..4dd6ddb40 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -519,7 +519,10 @@ "status.show_less_all": "Tunjukkan kurang untuk semua", "status.show_more": "Tunjukkan lebih", "status.show_more_all": "Tunjukkan lebih untuk semua", + "status.show_original": "Show original", "status.show_thread": "Tunjuk bebenang", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Tidak tersedia", "status.unmute_conversation": "Nyahbisukan perbualan", "status.unpin": "Nyahsemat daripada profil", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 7831310d8..eab9adbc7 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -519,7 +519,10 @@ "status.show_less_all": "Alles minder tonen", "status.show_more": "Meer tonen", "status.show_more_all": "Alles meer tonen", + "status.show_original": "Show original", "status.show_thread": "Gesprek tonen", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Niet beschikbaar", "status.unmute_conversation": "Gesprek niet langer negeren", "status.unpin": "Van profielpagina losmaken", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 785662bb5..810f23be6 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -519,7 +519,10 @@ "status.show_less_all": "Vis mindre for alle", "status.show_more": "Vis meir", "status.show_more_all": "Vis meir for alle", + "status.show_original": "Show original", "status.show_thread": "Vis tråd", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Ikkje tilgjengeleg", "status.unmute_conversation": "Opphev målbinding av samtalen", "status.unpin": "Løys frå profil", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 29df0b2d4..7d00b48a7 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -519,7 +519,10 @@ "status.show_less_all": "Vis mindre for alle", "status.show_more": "Vis mer", "status.show_more_all": "Vis mer for alle", + "status.show_original": "Show original", "status.show_thread": "Vis tråden", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Ikke tilgjengelig", "status.unmute_conversation": "Ikke demp samtale", "status.unpin": "Angre festing på profilen", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 66ef6c76f..9ae4445fd 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -519,7 +519,10 @@ "status.show_less_all": "Los tornar plegar totes", "status.show_more": "Desplegar", "status.show_more_all": "Los desplegar totes", + "status.show_original": "Show original", "status.show_thread": "Mostrar lo fil", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Pas disponible", "status.unmute_conversation": "Tornar mostrar la conversacion", "status.unpin": "Tirar del perfil", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index bde5388c6..f8e7597e5 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Show more", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index d68c2aaa1..617c81a68 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -24,7 +24,7 @@ "account.follows_you": "Śledzi Cię", "account.hide_reblogs": "Ukryj podbicia od @{name}", "account.joined": "Dołączył(a) {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Zmień subskrybowane języki", "account.link_verified_on": "Własność tego odnośnika została potwierdzona {date}", "account.locked_info": "To konto jest prywatne. Właściciel ręcznie wybiera kto może go śledzić.", "account.media": "Zawartość multimedialna", @@ -519,13 +519,16 @@ "status.show_less_all": "Zwiń wszystkie", "status.show_more": "Rozwiń", "status.show_more_all": "Rozwiń wszystkie", + "status.show_original": "Show original", "status.show_thread": "Pokaż wątek", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Niedostępne", "status.unmute_conversation": "Cofnij wyciszenie konwersacji", "status.unpin": "Odepnij z profilu", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Tylko posty w wybranych językach pojawią się na Twojej osi czasu po zmianie. Nie wybieraj żadnego języka aby otrzymywać posty we wszystkich językach.", + "subscribed_languages.save": "Zapisz zmiany", + "subscribed_languages.target": "Zmień subskrybowane języki dla {target}", "suggestions.dismiss": "Odrzuć sugestię", "suggestions.header": "Może Cię zainteresować…", "tabs_bar.federated_timeline": "Globalne", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index ba349524e..5e0f9058f 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -519,7 +519,10 @@ "status.show_less_all": "Mostrar menos em tudo", "status.show_more": "Mostrar mais", "status.show_more_all": "Mostrar mais em tudo", + "status.show_original": "Show original", "status.show_thread": "Mostrar conversa", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Não disponível", "status.unmute_conversation": "Dessilenciar conversa", "status.unpin": "Desafixar", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index d03e66572..7f3058165 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -24,7 +24,7 @@ "account.follows_you": "Segue-te", "account.hide_reblogs": "Esconder partilhas de @{name}", "account.joined": "Ingressou em {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Alterar idiomas subscritos", "account.link_verified_on": "A posse deste link foi verificada em {date}", "account.locked_info": "Esta conta é privada. O proprietário revê manualmente quem a pode seguir.", "account.media": "Média", @@ -519,13 +519,16 @@ "status.show_less_all": "Mostrar menos para todas", "status.show_more": "Mostrar mais", "status.show_more_all": "Mostrar mais para todas", + "status.show_original": "Show original", "status.show_thread": "Mostrar conversa", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Não disponível", "status.unmute_conversation": "Deixar de silenciar esta conversa", "status.unpin": "Não fixar no perfil", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Após a alteração, apenas as publicações nos idiomas selecionados aparecerão na sua página inicial e listas. Não selecione nenhuma para receber publicações de todos os idiomas.", + "subscribed_languages.save": "Guardar alterações", + "subscribed_languages.target": "Alterar idiomas subscritos para {target}", "suggestions.dismiss": "Dispensar a sugestão", "suggestions.header": "Tu podes estar interessado em…", "tabs_bar.federated_timeline": "Federada", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 626a8a1ed..9ef230567 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -519,7 +519,10 @@ "status.show_less_all": "Arată mai puțin pentru toți", "status.show_more": "Arată mai mult", "status.show_more_all": "Arată mai mult pentru toți", + "status.show_original": "Show original", "status.show_thread": "Arată discuția", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Indisponibil", "status.unmute_conversation": "Repornește conversația", "status.unpin": "Eliberează din profil", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 51e2d6159..957f64b85 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -24,7 +24,7 @@ "account.follows_you": "Подписан(а) на вас", "account.hide_reblogs": "Скрыть продвижения от @{name}", "account.joined": "Зарегистрирован(а) с {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Изменить языки подписки", "account.link_verified_on": "Владение этой ссылкой было проверено {date}", "account.locked_info": "Это закрытый аккаунт. Его владелец вручную одобряет подписчиков.", "account.media": "Медиа", @@ -519,13 +519,16 @@ "status.show_less_all": "Свернуть все спойлеры в ветке", "status.show_more": "Развернуть", "status.show_more_all": "Развернуть все спойлеры в ветке", + "status.show_original": "Show original", "status.show_thread": "Показать обсуждение", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Невозможно отобразить файл", "status.unmute_conversation": "Не игнорировать обсуждение", "status.unpin": "Открепить от профиля", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Посты только на выбранных языках будут отображаться на вашей домашней странице и в списке лент после изменения. Выберите «Нет», чтобы получать посты на всех языках.", + "subscribed_languages.save": "Сохранить изменения", + "subscribed_languages.target": "Изменить языки подписки для {target}", "suggestions.dismiss": "Удалить предложение", "suggestions.header": "Вам может быть интересно…", "tabs_bar.federated_timeline": "Глобальная", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index e3037bde0..11d2b9e2f 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Show more", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 4264eaacf..1623bacdc 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -519,7 +519,10 @@ "status.show_less_all": "Ammustra·nde prus pagu pro totus", "status.show_more": "Ammustra·nde prus", "status.show_more_all": "Ammustra·nde prus pro totus", + "status.show_original": "Show original", "status.show_thread": "Ammustra su tema", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "No est a disponimentu", "status.unmute_conversation": "Torra a ativare s'arresonada", "status.unpin": "Boga dae pitzu de su profilu", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 3a26e967a..a1205e3b4 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -60,7 +60,7 @@ "alert.unexpected.title": "අපොයි!", "announcement.announcement": "නිවේදනය", "attachments_list.unprocessed": "(සැකසුම් නොකළ)", - "audio.hide": "Hide audio", + "audio.hide": "හඬපටය සඟවන්න", "autosuggest_hashtag.per_week": "සතියකට {count}", "boost_modal.combo": "ඊළඟ වතාවේ මෙය මඟ හැරීමට ඔබට {combo} එබිය හැක", "bundle_column_error.body": "මෙම සංරචකය පූරණය කිරීමේදී යම් දෙයක් වැරදී ඇත.", @@ -224,11 +224,11 @@ "getting_started.developers": "සංවර්ධකයින්", "getting_started.directory": "පැතිකඩ නාමාවලිය", "getting_started.documentation": "ප්‍රලේඛනය", - "getting_started.heading": "ඇරඹේ", + "getting_started.heading": "පටන් ගන්න", "getting_started.invite": "මිනිසුන්ට ආරාධනය", "getting_started.open_source_notice": "Mastodon යනු විවෘත කේත මෘදුකාංගයකි. ඔබට GitHub හි {github}ට දායක වීමට හෝ ගැටළු වාර්තා කිරීමට හැකිය.", "getting_started.security": "ගිණුමේ සැකසුම්", - "getting_started.terms": "සේවාවේ කොන්දේසි", + "getting_started.terms": "සේවාවේ නියම", "hashtag.column_header.tag_mode.all": "සහ {additional}", "hashtag.column_header.tag_mode.any": "හෝ {additional}", "hashtag.column_header.tag_mode.none": "{additional}නොමැතිව", @@ -249,7 +249,7 @@ "intervals.full.days": "{number, plural, one {# දින} other {# දින}}", "intervals.full.hours": "{number, plural, one {# පැය} other {# පැය}}", "intervals.full.minutes": "{number, plural, one {විනාඩි #} other {# මිනිත්තු}}", - "keyboard_shortcuts.back": "ආපසු සැරිසැරීමට", + "keyboard_shortcuts.back": "ආපසු යාත්‍රණය", "keyboard_shortcuts.blocked": "අවහිර කළ පරිශීලක ලැයිස්තුව විවෘත කිරීමට", "keyboard_shortcuts.boost": "වැඩි කිරීමට", "keyboard_shortcuts.column": "එක් තීරුවක තත්ත්වය නාභිගත කිරීමට", @@ -268,18 +268,18 @@ "keyboard_shortcuts.local": "දේශීය කාලරේඛාව විවෘත කිරීමට", "keyboard_shortcuts.mention": "කතුවරයා සඳහන් කිරීමට", "keyboard_shortcuts.muted": "නිශ්ශබ්ද පරිශීලක ලැයිස්තුව විවෘත කිරීමට", - "keyboard_shortcuts.my_profile": "ඔබගේ පැතිකඩ විවෘත කිරීමට", + "keyboard_shortcuts.my_profile": "ඔබගේ පැතිකඩ අරින්න", "keyboard_shortcuts.notifications": "දැනුම්දීම් තීරුව විවෘත කිරීමට", - "keyboard_shortcuts.open_media": "මාධ්‍ය විවෘත කිරීමට", + "keyboard_shortcuts.open_media": "මාධ්‍ය අරින්න", "keyboard_shortcuts.pinned": "පින් කළ මෙවලම් ලැයිස්තුව විවෘත කිරීමට", - "keyboard_shortcuts.profile": "කර්තෘගේ පැතිකඩ විවෘත කිරීමට", + "keyboard_shortcuts.profile": "කතෘගේ පැතිකඩ අරින්න", "keyboard_shortcuts.reply": "පිළිතුරු දීමට", "keyboard_shortcuts.requests": "පහත ඉල්ලීම් ලැයිස්තුව විවෘත කිරීමට", "keyboard_shortcuts.search": "සෙවුම් අවධානය යොමු කිරීමට", "keyboard_shortcuts.spoilers": "CW ක්ෂේත්‍රය පෙන්වීමට/සැඟවීමට", - "keyboard_shortcuts.start": "\"ආරම්භ කරන්න\" තීරුව විවෘත කිරීමට", + "keyboard_shortcuts.start": "\"පටන් ගන්න\" තීරුව අරින්න", "keyboard_shortcuts.toggle_hidden": "CW පිටුපස පෙළ පෙන්වීමට/සැඟවීමට", - "keyboard_shortcuts.toggle_sensitivity": "මාධ්‍ය පෙන්වීමට/සැඟවීමට", + "keyboard_shortcuts.toggle_sensitivity": "මාධ්‍ය පෙන්වන්න/සඟවන්න", "keyboard_shortcuts.toot": "අලුත්ම ටූට් එකක් පටන් ගන්න", "keyboard_shortcuts.unfocus": "අවධානය යොමු නොකිරීමට textarea/search රචනා කරන්න", "keyboard_shortcuts.up": "ලැයිස්තුවේ ඉහළට යාමට", @@ -428,7 +428,7 @@ "report.category.title_status": "තැපැල්", "report.close": "අහවරයි", "report.comment.title": "අප දැනගත යුතු යැයි ඔබ සිතන තවත් යමක් තිබේද?", - "report.forward": "{target}වෙත යොමු කරන්න", + "report.forward": "{target} වෙත හරවන්න", "report.forward_hint": "ගිණුම වෙනත් සේවාදායකයකින්. වාර්තාවේ නිර්නාමික පිටපතක් එතනටත් එවන්න?", "report.mute": "නිහඬ", "report.mute_explanation": "ඔබට ඔවුන්ගේ පෝස්ට් නොපෙනේ. ඔවුන්ට තවමත් ඔබව අනුගමනය කිරීමට සහ ඔබේ පළ කිරීම් දැකීමට හැකි අතර ඒවා නිශ්ශබ්ද කර ඇති බව නොදැනේ.", @@ -519,12 +519,15 @@ "status.show_less_all": "සියල්ල අඩුවෙන් පෙන්වන්න", "status.show_more": "තවත් පෙන්වන්න", "status.show_more_all": "සියල්ල වැඩියෙන් පෙන්වන්න", + "status.show_original": "Show original", "status.show_thread": "නූල් පෙන්වන්න", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "නොතිබේ", "status.unmute_conversation": "සංවාදය නොනිහඬ", "status.unpin": "පැතිකඩෙන් ගළවන්න", "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", + "subscribed_languages.save": "වෙනස්කම් සුරකින්න", "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "යෝජනාව ඉවතලන්න", "suggestions.header": "ඔබ…ගැන උනන්දු විය හැකිය", @@ -544,7 +547,7 @@ "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} days}}", "trends.trending_now": "දැන් ප්‍රවණතාවය", - "ui.beforeunload": "ඔබ Mastodon හැර ගියහොත් ඔබේ කෙටුම්පත නැති වනු ඇත.", + "ui.beforeunload": "ඔබ මාස්ටඩන් හැර ගියහොත් කටුපිටපත අහිමි වේ.", "units.short.billion": "{count}බී", "units.short.million": "{count}එම්", "units.short.thousand": "{count}කි", @@ -554,7 +557,7 @@ "upload_error.poll": "මත විමසුම් සමඟ ගොනු යෙදීමට ඉඩ නොදේ.", "upload_form.audio_description": "නොඇසෙන අය සඳහා විස්තර කරන්න", "upload_form.description": "දෘශ්‍යාබාධිතයන් සඳහා විස්තර කරන්න", - "upload_form.description_missing": "විස්තරයක් එක් කර නැත", + "upload_form.description_missing": "සවිස්තරයක් නැත", "upload_form.edit": "සංස්කරණය", "upload_form.thumbnail": "සිඟිති රුව වෙනස් කරන්න", "upload_form.undo": "මකන්න", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 629c93ca9..620b8dfc1 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -519,7 +519,10 @@ "status.show_less_all": "Všetkým ukáž menej", "status.show_more": "Ukáž viac", "status.show_more_all": "Všetkým ukáž viac", + "status.show_original": "Show original", "status.show_thread": "Ukáž diskusné vlákno", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Nedostupný/é", "status.unmute_conversation": "Prestaň si nevšímať konverzáciu", "status.unpin": "Odopni z profilu", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 1f1f0370f..c4ce59e45 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -24,7 +24,7 @@ "account.follows_you": "Vam sledi", "account.hide_reblogs": "Skrij izpostavitve od @{name}", "account.joined": "Pridružen/a {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Spremeni naročene jezike", "account.link_verified_on": "Lastništvo te povezave je bilo preverjeno {date}", "account.locked_info": "Stanje zasebnosti računa je nastavljeno na zaklenjeno. Lastnik ročno pregleda, kdo ga lahko spremlja.", "account.media": "Mediji", @@ -519,13 +519,16 @@ "status.show_less_all": "Prikaži manj za vse", "status.show_more": "Prikaži več", "status.show_more_all": "Prikaži več za vse", + "status.show_original": "Show original", "status.show_thread": "Prikaži objavo", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Ni na voljo", "status.unmute_conversation": "Odtišaj pogovor", "status.unpin": "Odpni iz profila", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Po spremembi bodo na vaši domači in seznamski časovnici prikazane objave samo v izbranih jezikih.", + "subscribed_languages.save": "Shrani spremembe", + "subscribed_languages.target": "Spremeni naročene jezike za {target}", "suggestions.dismiss": "Zavrni predlog", "suggestions.header": "Morda bi vas zanimalo…", "tabs_bar.federated_timeline": "Združeno", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 0a485aaae..4be47edc6 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -24,7 +24,7 @@ "account.follows_you": "Ju ndjek", "account.hide_reblogs": "Fshih përforcime nga @{name}", "account.joined": "U bë pjesë më {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Ndryshoni gjuhë pajtimesh", "account.link_verified_on": "Pronësia e kësaj lidhjeje qe kontrolluar më {date}", "account.locked_info": "Gjendja e privatësisë së kësaj llogarie është caktuar si e kyçur. I zoti merr dorazi në shqyrtim cilët mund ta ndjekin.", "account.media": "Media", @@ -519,13 +519,16 @@ "status.show_less_all": "Shfaq më pak për të tërë", "status.show_more": "Shfaq më tepër", "status.show_more_all": "Shfaq më tepër për të tërë", + "status.show_original": "Show original", "status.show_thread": "Shfaq rrjedhën", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Jo e passhme", "status.unmute_conversation": "Ktheji zërin bisedës", "status.unpin": "Shfiksoje nga profili", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Pas ndryshimit, te kreu juaj dhe te rrjedha kohore liste do të shfaqen vetëm postime në gjuhët e përzgjedhura. Që të merrni postime në krejt gjuhë, mos përzgjidhni gjë.", + "subscribed_languages.save": "Ruaji ndryshimet", + "subscribed_languages.target": "Ndryshoni gjuhë pajtimesh për {target}", "suggestions.dismiss": "Mos e merr parasysh sugjerimin", "suggestions.header": "Mund t’ju interesonte…", "tabs_bar.federated_timeline": "E federuar", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 2487c27f9..1bb6218a3 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Prikaži više", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Uključi prepisku", "status.unpin": "Otkači sa profila", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 9683cafff..5fa8b1b89 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -519,7 +519,10 @@ "status.show_less_all": "Прикажи мање за све", "status.show_more": "Прикажи више", "status.show_more_all": "Прикажи више за све", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Није доступно", "status.unmute_conversation": "Укључи преписку", "status.unpin": "Откачи са налога", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index c9ae1b08c..78ff55ceb 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -519,7 +519,10 @@ "status.show_less_all": "Visa mindre för alla", "status.show_more": "Visa mer", "status.show_more_all": "Visa mer för alla", + "status.show_original": "Show original", "status.show_thread": "Visa tråd", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Ej tillgängligt", "status.unmute_conversation": "Öppna konversation", "status.unpin": "Ångra fäst i profil", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index bde5388c6..f8e7597e5 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Show more", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 1d4531d89..54ada2e22 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -519,7 +519,10 @@ "status.show_less_all": "அனைத்தையும் குறைவாக காட்டு", "status.show_more": "மேலும் காட்ட", "status.show_more_all": "அனைவருக்கும் மேலும் காட்டு", + "status.show_original": "Show original", "status.show_thread": "நூல் காட்டு", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "கிடைக்கவில்லை", "status.unmute_conversation": "ஊமையாக உரையாடல் இல்லை", "status.unpin": "சுயவிவரத்திலிருந்து நீக்கவும்", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 1e5f0ed34..0ffc9e198 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Show more", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index 265a3b484..2ee3052c7 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -519,7 +519,10 @@ "status.show_less_all": "అన్నిటికీ తక్కువ చూపించు", "status.show_more": "ఇంకా చూపించు", "status.show_more_all": "అన్నిటికీ ఇంకా చూపించు", + "status.show_original": "Show original", "status.show_thread": "గొలుసును చూపించు", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "సంభాషణను అన్మ్యూట్ చేయి", "status.unpin": "ప్రొఫైల్ నుండి పీకివేయు", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 1c25ac049..5ee8a8e3a 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -24,7 +24,7 @@ "account.follows_you": "ติดตามคุณ", "account.hide_reblogs": "ซ่อนการดันจาก @{name}", "account.joined": "เข้าร่วมเมื่อ {date}", - "account.languages": "Change subscribed languages", + "account.languages": "เปลี่ยนภาษาที่บอกรับ", "account.link_verified_on": "ตรวจสอบความเป็นเจ้าของของลิงก์นี้เมื่อ {date}", "account.locked_info": "มีการตั้งสถานะความเป็นส่วนตัวของบัญชีนี้เป็นล็อคอยู่ เจ้าของตรวจทานผู้ที่สามารถติดตามเขาด้วยตนเอง", "account.media": "สื่อ", @@ -519,13 +519,16 @@ "status.show_less_all": "แสดงน้อยลงทั้งหมด", "status.show_more": "แสดงเพิ่มเติม", "status.show_more_all": "แสดงเพิ่มเติมทั้งหมด", + "status.show_original": "Show original", "status.show_thread": "แสดงกระทู้", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "ไม่พร้อมใช้งาน", "status.unmute_conversation": "เลิกซ่อนการสนทนา", "status.unpin": "ถอนหมุดจากโปรไฟล์", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "เฉพาะโพสต์ในภาษาที่เลือกเท่านั้นที่จะปรากฏในเส้นเวลาหน้าแรกและรายการหลังจากการเปลี่ยนแปลง เลือก ไม่มี เพื่อรับโพสต์ในภาษาทั้งหมด", + "subscribed_languages.save": "บันทึกการเปลี่ยนแปลง", + "subscribed_languages.target": "เปลี่ยนภาษาที่บอกรับสำหรับ {target}", "suggestions.dismiss": "ปิดข้อเสนอแนะ", "suggestions.header": "คุณอาจสนใจ…", "tabs_bar.federated_timeline": "ที่ติดต่อกับภายนอก", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 0d8b0e46f..9f581a9f1 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -24,7 +24,7 @@ "account.follows_you": "Seni takip ediyor", "account.hide_reblogs": "@{name} kişisinin boostlarını gizle", "account.joined": "{date} tarihinde katıldı", - "account.languages": "Change subscribed languages", + "account.languages": "Abone olunan dilleri değiştir", "account.link_verified_on": "Bu bağlantının sahipliği {date} tarihinde kontrol edildi", "account.locked_info": "Bu hesabın gizlilik durumu gizli olarak ayarlanmış. Sahibi, onu kimin takip edebileceğini manuel olarak onaylıyor.", "account.media": "Medya", @@ -519,13 +519,16 @@ "status.show_less_all": "Hepsi için daha az göster", "status.show_more": "Daha fazlasını göster", "status.show_more_all": "Hepsi için daha fazla göster", + "status.show_original": "Show original", "status.show_thread": "Konuyu göster", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Mevcut değil", "status.unmute_conversation": "Sohbet sesini aç", "status.unpin": "Profilden sabitlemeyi kaldır", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Değişiklikten sonra ana akışınızda sadece seçili dillerdeki gönderiler görüntülenecek ve zaman akışları listelenecektir. Tüm dillerde gönderiler için hiçbirini seçin.", + "subscribed_languages.save": "Değişiklikleri kaydet", + "subscribed_languages.target": "{target} abone olduğu dilleri değiştir", "suggestions.dismiss": "Öneriyi görmezden gel", "suggestions.header": "Şuna ilgi duyuyor olabilirsiniz…", "tabs_bar.federated_timeline": "Federe", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index 71e68e3c4..7bfa44882 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Күбрәк күрсәтү", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index bde5388c6..f8e7597e5 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Show more", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 271a6f330..5fb6030d5 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -24,7 +24,7 @@ "account.follows_you": "Підписані на вас", "account.hide_reblogs": "Сховати поширення від @{name}", "account.joined": "Долучилися {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Змінити підписані мови", "account.link_verified_on": "Права власності на це посилання були перевірені {date}", "account.locked_info": "Це закритий обліковий запис. Власник вручну обирає, хто може на нього підписуватися.", "account.media": "Медіа", @@ -519,13 +519,16 @@ "status.show_less_all": "Показувати менше для всіх", "status.show_more": "Розгорнути", "status.show_more_all": "Показувати більше для всіх", + "status.show_original": "Show original", "status.show_thread": "Показати ланцюжок", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Недоступно", "status.unmute_conversation": "Не ігнорувати діалог", "status.unpin": "Відкріпити від профілю", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Лише дописи вибраними мовами з'являтимуться на вашій домівці та у списку стрічок після змін. Виберіть «none», щоб отримувати повідомлення всіма мовами.", + "subscribed_languages.save": "Зберегти зміни", + "subscribed_languages.target": "Змінити підписані мови для {target}", "suggestions.dismiss": "Відхилити пропозицію", "suggestions.header": "Вас може зацікавити…", "tabs_bar.federated_timeline": "Глобальна", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index a9ee2e877..2460e36a0 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -519,7 +519,10 @@ "status.show_less_all": "Show less for all", "status.show_more": "Show more", "status.show_more_all": "Show more for all", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index ff2ba7e85..707a4a285 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -24,7 +24,7 @@ "account.follows_you": "Đang theo dõi bạn", "account.hide_reblogs": "Ẩn tút @{name} đăng lại", "account.joined": "Đã tham gia {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Đổi ngôn ngữ mong muốn", "account.link_verified_on": "Liên kết này đã được xác minh vào {date}", "account.locked_info": "Đây là tài khoản riêng tư. Họ sẽ tự mình xét duyệt các yêu cầu theo dõi.", "account.media": "Media", @@ -423,7 +423,7 @@ "report.categories.spam": "Spam", "report.categories.violation": "Vi phạm quy tắc máy chủ", "report.category.subtitle": "Chọn mục gần khớp nhất", - "report.category.title": "Nói với họ chuyện gì xảy ra với {type}", + "report.category.title": "Có vấn đề gì với {type}", "report.category.title_account": "người dùng", "report.category.title_status": "tút", "report.close": "Xong", @@ -519,13 +519,16 @@ "status.show_less_all": "Thu gọn toàn bộ", "status.show_more": "Xem thêm", "status.show_more_all": "Hiển thị tất cả", + "status.show_original": "Show original", "status.show_thread": "Xem chuỗi tút này", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Uncached", "status.unmute_conversation": "Quan tâm", "status.unpin": "Bỏ ghim trên hồ sơ", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Chỉ các tút đăng bằng các ngôn ngữ đã chọn mới được xuất hiện trên bảng tin của bạn. Không chọn gì cả để đọc tút đăng bằng mọi ngôn ngữ.", + "subscribed_languages.save": "Lưu thay đổi", + "subscribed_languages.target": "Đổi ngôn ngữ mong muốn cho {target}", "suggestions.dismiss": "Tắt đề xuất", "suggestions.header": "Có thể bạn quan tâm…", "tabs_bar.federated_timeline": "Thế giới", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index 4983489ab..b83ef1786 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -519,7 +519,10 @@ "status.show_less_all": "ⵙⵎⴰⵍ ⴷⵔⵓⵙ ⵉ ⵎⴰⵕⵕⴰ", "status.show_more": "ⵙⵎⴰⵍ ⵓⴳⴳⴰⵔ", "status.show_more_all": "ⵙⵎⴰⵍ ⵓⴳⴳⴰⵔ ⵉ ⵎⴰⵕⵕⴰ", + "status.show_original": "Show original", "status.show_thread": "Show thread", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 243d127f4..9be030663 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -519,7 +519,10 @@ "status.show_less_all": "隐藏全部内容", "status.show_more": "显示更多", "status.show_more_all": "显示全部内容", + "status.show_original": "Show original", "status.show_thread": "显示全部对话", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "暂不可用", "status.unmute_conversation": "恢复此对话的通知提醒", "status.unpin": "在个人资料页面取消置顶", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 3b2dde692..47b21d523 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -519,7 +519,10 @@ "status.show_less_all": "全部收起", "status.show_more": "展開", "status.show_more_all": "全部展開", + "status.show_original": "Show original", "status.show_thread": "顯示討論串", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "無法使用", "status.unmute_conversation": "對話解除靜音", "status.unpin": "解除置頂", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 62facfca2..200f31f66 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -24,7 +24,7 @@ "account.follows_you": "跟隨了您", "account.hide_reblogs": "隱藏來自 @{name} 的轉嘟", "account.joined": "加入於 {date}", - "account.languages": "Change subscribed languages", + "account.languages": "變更訂閱的語言", "account.link_verified_on": "已在 {date} 檢查此連結的擁有者權限", "account.locked_info": "此帳戶的隱私狀態被設為鎖定。該擁有者會手動審核能跟隨此帳號的人。", "account.media": "媒體", @@ -519,13 +519,16 @@ "status.show_less_all": "減少顯示這類嘟文", "status.show_more": "顯示更多", "status.show_more_all": "顯示更多這類嘟文", + "status.show_original": "Show original", "status.show_thread": "顯示討論串", + "status.translate": "Translate", + "status.translated_from": "Translated from {lang}", "status.uncached_media_warning": "無法使用", "status.unmute_conversation": "解除此對話的靜音", "status.unpin": "從個人檔案頁面解除釘選", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "僅選定語言的嘟文才會出現在您的首頁上,並在變更後列出時間軸。選取「無」以接收所有語言的嘟文。", + "subscribed_languages.save": "儲存變更", + "subscribed_languages.target": "變更 {target} 的訂閱語言", "suggestions.dismiss": "關閉建議", "suggestions.header": "您可能對這些東西有興趣…", "tabs_bar.federated_timeline": "聯邦宇宙", diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 99169454e..4251f5510 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -1246,6 +1246,16 @@ pl: many: "%{count} słów kluczowych" one: "%{count} słowo kluczowe" other: "%{count} słów kluczowych" + statuses: + few: "%{count} posty" + many: "%{count} postów" + one: "%{count} post" + other: "%{count} postów" + statuses_long: + few: "%{count} ukryte posty" + many: "%{count} ukrytych postów" + one: "%{count} ukryty post" + other: "%{count} postów ukrytych" title: Filtry new: save: Zapisz jako nowy filtr diff --git a/config/locales/si.yml b/config/locales/si.yml index fded19b17..40909ab12 100644 --- a/config/locales/si.yml +++ b/config/locales/si.yml @@ -39,7 +39,7 @@ si: other: තත්ත්වයන් status_count_before: කවුද පළ කළේ tagline: විමධ්‍යගත සමාජ ජාලය - terms: සේවාවේ කොන්දේසි + terms: සේවාවේ නියම unavailable_content: මධ්‍යස්ථ සේවාදායකයන් unavailable_content_description: domain: සේවාදායකය @@ -1156,9 +1156,9 @@ si: expired: කල් ඉකුත් වී ඇත expires_in: '1800': විනාඩි 30 - '21600': හෝරා 6 - '3600': හෝරා 1 - '43200': හෝරා 12 + '21600': පැය 6 + '3600': පැය 1 + '43200': පැය 12 '604800': සති 1 '86400': දවස් 1 expires_in_prompt: කවදාවත් නැහැ diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index 91ded57a6..665ac6af1 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -220,6 +220,7 @@ pl: ip: Adres IP severities: no_access: Zablokuj dostęp + sign_up_block: Zablokuj nowe rejestracje sign_up_requires_approval: Ogranicz rejestracje severity: Reguła notification_emails: diff --git a/config/locales/simple_form.si.yml b/config/locales/simple_form.si.yml index aa51438a9..4df9f619b 100644 --- a/config/locales/simple_form.si.yml +++ b/config/locales/simple_form.si.yml @@ -102,7 +102,7 @@ si: labels: account: fields: - name: ලේබලය + name: නම්පත value: අන්තර්ගතය account_alias: acct: පැරණි ගිණුමේ හැසිරවීම diff --git a/config/locales/th.yml b/config/locales/th.yml index b5dd9bc36..be3c24482 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -678,6 +678,7 @@ th: manage_invites: จัดการคำเชิญ manage_invites_description: อนุญาตให้ผู้ใช้เรียกดูและปิดใช้งานลิงก์เชิญ manage_reports: จัดการรายงาน + manage_reports_description: อนุญาตให้ผู้ใช้ตรวจทานรายงานและทำการกระทำการควบคุมกับรายงาน manage_roles: จัดการบทบาท manage_rules: จัดการกฎ manage_rules_description: อนุญาตให้ผู้ใช้เปลี่ยนกฎของเซิร์ฟเวอร์ @@ -687,6 +688,7 @@ th: manage_taxonomies_description: อนุญาตให้ผู้ใช้ตรวจทานเนื้อหาที่กำลังนิยมและอัปเดตการตั้งค่าแฮชแท็ก manage_user_access: จัดการการเข้าถึงของผู้ใช้ manage_users: จัดการผู้ใช้ + manage_users_description: อนุญาตให้ผู้ใช้ดูรายละเอียดของผู้ใช้อื่น ๆ และทำการกระทำการควบคุมกับผู้ใช้ manage_webhooks: จัดการเว็บฮุค manage_webhooks_description: อนุญาตให้ผู้ใช้ตั้งค่าเว็บฮุคสำหรับเหตุการณ์การดูแล view_audit_log: ดูรายการบันทึกการตรวจสอบ diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 18b09369c..d423850c3 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -911,6 +911,11 @@ uk: disallow: Заборонити допис disallow_account: Заборонити автора not_discoverable: Автор не вирішив бути видимим + shared_by: + few: Поділитись або додати в улюблені %{friendly_count} рази + many: Поділитись або додати в улюблені %{friendly_count} разів + one: Поділитись або додати в улюблені один раз + other: Поділитись або додати в улюблені %{friendly_count} рази title: Популярні дописи tags: current_score: Поточний результат %{score} @@ -920,7 +925,7 @@ uk: tag_servers_dimension: Найуживаніші сервери tag_servers_measure: різні сервери tag_uses_measure: всього використань - description_html: Ці хештеґи, які бачить ваш сервер, в даний час з’являються у багатьох дописах. Це може допомогти вашим користувачам дізнатися про що люди в даний момент найбільше говорять. Жодні хештеґи публічно не відображаються, допоки ви їх не затвердите. + description_html: Ці хештеґи, які бачить ваш сервер, в цей час з’являються у багатьох дописах. Це може допомогти вашим користувачам дізнатися про що люди наразі найбільше говорять. Жодні хештеґи публічно не показуються, доки ви їх не затвердите. listable: Може бути запропоновано not_listable: Не буде запропоновано not_trendable: Не показуватиметься серед популярних diff --git a/config/locales/vi.yml b/config/locales/vi.yml index dfc7623dd..f5fe23795 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -5,7 +5,7 @@ vi: about_mastodon_html: 'Mạng xã hội của tương lai: Không quảng cáo, không bán thông tin người dùng và phi tập trung! Làm chủ dữ liệu của bạn với Mastodon!' about_this: Giới thiệu active_count_after: hoạt động - active_footnote: Người dùng hoạt động hàng tháng (MAU) + active_footnote: Người dùng hàng tháng (MAU) administered_by: 'Quản trị viên:' api: API apps: Apps From 5c9abdeff1d0cf3e14d84c5ae298e6a5beccaf18 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 27 Sep 2022 03:08:19 +0200 Subject: [PATCH 418/652] Add retention policy for cached content and media (#19232) --- app/lib/redis_configuration.rb | 6 +- app/lib/vacuum.rb | 3 + .../vacuum/access_tokens_vacuum.rb} | 17 ++++-- app/lib/vacuum/backups_vacuum.rb | 25 +++++++++ app/lib/vacuum/feeds_vacuum.rb | 34 +++++++++++ app/lib/vacuum/media_attachments_vacuum.rb | 40 +++++++++++++ app/lib/vacuum/preview_cards_vacuum.rb | 39 +++++++++++++ app/lib/vacuum/statuses_vacuum.rb | 54 ++++++++++++++++++ app/lib/vacuum/system_keys_vacuum.rb | 13 +++++ app/models/content_retention_policy.rb | 25 +++++++++ app/models/form/admin_settings.rb | 4 ++ app/views/admin/settings/edit.html.haml | 8 ++- .../scheduler/backup_cleanup_scheduler.rb | 17 ------ .../scheduler/feed_cleanup_scheduler.rb | 35 ------------ .../scheduler/media_cleanup_scheduler.rb | 17 ------ app/workers/scheduler/vacuum_scheduler.rb | 56 +++++++++++++++++++ config/locales/simple_form.en.yml | 8 +++ config/settings.yml | 1 + config/sidekiq.yml | 16 +----- spec/fabricators/access_grant_fabricator.rb | 6 ++ spec/fabricators/preview_card_fabricator.rb | 1 + spec/lib/vacuum/access_tokens_vacuum_spec.rb | 33 +++++++++++ spec/lib/vacuum/backups_vacuum_spec.rb | 24 ++++++++ spec/lib/vacuum/feeds_vacuum_spec.rb | 30 ++++++++++ .../vacuum/media_attachments_vacuum_spec.rb | 47 ++++++++++++++++ spec/lib/vacuum/preview_cards_vacuum_spec.rb | 36 ++++++++++++ spec/lib/vacuum/statuses_vacuum_spec.rb | 36 ++++++++++++ spec/lib/vacuum/system_keys_vacuum_spec.rb | 22 ++++++++ .../scheduler/feed_cleanup_scheduler_spec.rb | 26 --------- .../scheduler/media_cleanup_scheduler_spec.rb | 15 ----- 30 files changed, 559 insertions(+), 135 deletions(-) create mode 100644 app/lib/vacuum.rb rename app/{workers/scheduler/doorkeeper_cleanup_scheduler.rb => lib/vacuum/access_tokens_vacuum.rb} (56%) create mode 100644 app/lib/vacuum/backups_vacuum.rb create mode 100644 app/lib/vacuum/feeds_vacuum.rb create mode 100644 app/lib/vacuum/media_attachments_vacuum.rb create mode 100644 app/lib/vacuum/preview_cards_vacuum.rb create mode 100644 app/lib/vacuum/statuses_vacuum.rb create mode 100644 app/lib/vacuum/system_keys_vacuum.rb create mode 100644 app/models/content_retention_policy.rb delete mode 100644 app/workers/scheduler/backup_cleanup_scheduler.rb delete mode 100644 app/workers/scheduler/feed_cleanup_scheduler.rb delete mode 100644 app/workers/scheduler/media_cleanup_scheduler.rb create mode 100644 app/workers/scheduler/vacuum_scheduler.rb create mode 100644 spec/fabricators/access_grant_fabricator.rb create mode 100644 spec/lib/vacuum/access_tokens_vacuum_spec.rb create mode 100644 spec/lib/vacuum/backups_vacuum_spec.rb create mode 100644 spec/lib/vacuum/feeds_vacuum_spec.rb create mode 100644 spec/lib/vacuum/media_attachments_vacuum_spec.rb create mode 100644 spec/lib/vacuum/preview_cards_vacuum_spec.rb create mode 100644 spec/lib/vacuum/statuses_vacuum_spec.rb create mode 100644 spec/lib/vacuum/system_keys_vacuum_spec.rb delete mode 100644 spec/workers/scheduler/feed_cleanup_scheduler_spec.rb delete mode 100644 spec/workers/scheduler/media_cleanup_scheduler_spec.rb diff --git a/app/lib/redis_configuration.rb b/app/lib/redis_configuration.rb index e14d6c8b6..f0e86d985 100644 --- a/app/lib/redis_configuration.rb +++ b/app/lib/redis_configuration.rb @@ -7,9 +7,7 @@ class RedisConfiguration @pool = ConnectionPool.new(size: new_pool_size) { new.connection } end - def with - pool.with { |redis| yield redis } - end + delegate :with, to: :pool def pool @pool ||= establish_pool(pool_size) @@ -17,7 +15,7 @@ class RedisConfiguration def pool_size if Sidekiq.server? - Sidekiq.options[:concurrency] + Sidekiq[:concurrency] else ENV['MAX_THREADS'] || 5 end diff --git a/app/lib/vacuum.rb b/app/lib/vacuum.rb new file mode 100644 index 000000000..9db1ec90b --- /dev/null +++ b/app/lib/vacuum.rb @@ -0,0 +1,3 @@ +# frozen_string_literal: true + +module Vacuum; end diff --git a/app/workers/scheduler/doorkeeper_cleanup_scheduler.rb b/app/lib/vacuum/access_tokens_vacuum.rb similarity index 56% rename from app/workers/scheduler/doorkeeper_cleanup_scheduler.rb rename to app/lib/vacuum/access_tokens_vacuum.rb index 9303a352f..4f3878027 100644 --- a/app/workers/scheduler/doorkeeper_cleanup_scheduler.rb +++ b/app/lib/vacuum/access_tokens_vacuum.rb @@ -1,13 +1,18 @@ # frozen_string_literal: true -class Scheduler::DoorkeeperCleanupScheduler - include Sidekiq::Worker - - sidekiq_options retry: 0 - +class Vacuum::AccessTokensVacuum def perform + vacuum_revoked_access_tokens! + vacuum_revoked_access_grants! + end + + private + + def vacuum_revoked_access_tokens! Doorkeeper::AccessToken.where('revoked_at IS NOT NULL').where('revoked_at < NOW()').delete_all + end + + def vacuum_revoked_access_grants! Doorkeeper::AccessGrant.where('revoked_at IS NOT NULL').where('revoked_at < NOW()').delete_all - SystemKey.expired.delete_all end end diff --git a/app/lib/vacuum/backups_vacuum.rb b/app/lib/vacuum/backups_vacuum.rb new file mode 100644 index 000000000..3b83072f3 --- /dev/null +++ b/app/lib/vacuum/backups_vacuum.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +class Vacuum::BackupsVacuum + def initialize(retention_period) + @retention_period = retention_period + end + + def perform + vacuum_expired_backups! if retention_period? + end + + private + + def vacuum_expired_backups! + backups_past_retention_period.in_batches.destroy_all + end + + def backups_past_retention_period + Backup.unscoped.where(Backup.arel_table[:created_at].lt(@retention_period.ago)) + end + + def retention_period? + @retention_period.present? + end +end diff --git a/app/lib/vacuum/feeds_vacuum.rb b/app/lib/vacuum/feeds_vacuum.rb new file mode 100644 index 000000000..f46bcf75f --- /dev/null +++ b/app/lib/vacuum/feeds_vacuum.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +class Vacuum::FeedsVacuum + def perform + vacuum_inactive_home_feeds! + vacuum_inactive_list_feeds! + end + + private + + def vacuum_inactive_home_feeds! + inactive_users.select(:id, :account_id).find_in_batches do |users| + feed_manager.clean_feeds!(:home, users.map(&:account_id)) + end + end + + def vacuum_inactive_list_feeds! + inactive_users_lists.select(:id).find_in_batches do |lists| + feed_manager.clean_feeds!(:list, lists.map(&:id)) + end + end + + def inactive_users + User.confirmed.inactive + end + + def inactive_users_lists + List.where(account_id: inactive_users.select(:account_id)) + end + + def feed_manager + FeedManager.instance + end +end diff --git a/app/lib/vacuum/media_attachments_vacuum.rb b/app/lib/vacuum/media_attachments_vacuum.rb new file mode 100644 index 000000000..7fb347ce4 --- /dev/null +++ b/app/lib/vacuum/media_attachments_vacuum.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +class Vacuum::MediaAttachmentsVacuum + TTL = 1.day.freeze + + def initialize(retention_period) + @retention_period = retention_period + end + + def perform + vacuum_cached_files! if retention_period? + vacuum_orphaned_records! + end + + private + + def vacuum_cached_files! + media_attachments_past_retention_period.find_each do |media_attachment| + media_attachment.file.destroy + media_attachment.thumbnail.destroy + media_attachment.save + end + end + + def vacuum_orphaned_records! + orphaned_media_attachments.in_batches.destroy_all + end + + def media_attachments_past_retention_period + MediaAttachment.unscoped.remote.cached.where(MediaAttachment.arel_table[:created_at].lt(@retention_period.ago)).where(MediaAttachment.arel_table[:updated_at].lt(@retention_period.ago)) + end + + def orphaned_media_attachments + MediaAttachment.unscoped.unattached.where(MediaAttachment.arel_table[:created_at].lt(TTL.ago)) + end + + def retention_period? + @retention_period.present? + end +end diff --git a/app/lib/vacuum/preview_cards_vacuum.rb b/app/lib/vacuum/preview_cards_vacuum.rb new file mode 100644 index 000000000..84ef100ed --- /dev/null +++ b/app/lib/vacuum/preview_cards_vacuum.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +class Vacuum::PreviewCardsVacuum + TTL = 1.day.freeze + + def initialize(retention_period) + @retention_period = retention_period + end + + def perform + vacuum_cached_images! if retention_period? + vacuum_orphaned_records! + end + + private + + def vacuum_cached_images! + preview_cards_past_retention_period.find_each do |preview_card| + preview_card.image.destroy + preview_card.save + end + end + + def vacuum_orphaned_records! + orphaned_preview_cards.in_batches.destroy_all + end + + def preview_cards_past_retention_period + PreviewCard.cached.where(PreviewCard.arel_table[:updated_at].lt(@retention_period.ago)) + end + + def orphaned_preview_cards + PreviewCard.where('NOT EXISTS (SELECT 1 FROM preview_cards_statuses WHERE preview_cards_statuses.preview_card_id = preview_cards.id)').where(PreviewCard.arel_table[:created_at].lt(TTL.ago)) + end + + def retention_period? + @retention_period.present? + end +end diff --git a/app/lib/vacuum/statuses_vacuum.rb b/app/lib/vacuum/statuses_vacuum.rb new file mode 100644 index 000000000..41d6ba270 --- /dev/null +++ b/app/lib/vacuum/statuses_vacuum.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +class Vacuum::StatusesVacuum + include Redisable + + def initialize(retention_period) + @retention_period = retention_period + end + + def perform + vacuum_statuses! if retention_period? + end + + private + + def vacuum_statuses! + statuses_scope.find_in_batches do |statuses| + # Side-effects not covered by foreign keys, such + # as the search index, must be handled first. + + remove_from_account_conversations(statuses) + remove_from_search_index(statuses) + + # Foreign keys take care of most associated records + # for us. Media attachments will be orphaned. + + Status.where(id: statuses.map(&:id)).delete_all + end + end + + def statuses_scope + Status.unscoped.kept.where(account: Account.remote).where(Status.arel_table[:id].lt(retention_period_as_id)).select(:id, :visibility) + end + + def retention_period_as_id + Mastodon::Snowflake.id_at(@retention_period.ago, with_random: false) + end + + def analyze_statuses! + ActiveRecord::Base.connection.execute('ANALYZE statuses') + end + + def remove_from_account_conversations(statuses) + Status.where(id: statuses.select(&:direct_visibility?).map(&:id)).includes(:account, mentions: :account).each(&:unlink_from_conversations) + end + + def remove_from_search_index(statuses) + with_redis { |redis| redis.sadd('chewy:queue:StatusesIndex', statuses.map(&:id)) } if Chewy.enabled? + end + + def retention_period? + @retention_period.present? + end +end diff --git a/app/lib/vacuum/system_keys_vacuum.rb b/app/lib/vacuum/system_keys_vacuum.rb new file mode 100644 index 000000000..ceee2fd16 --- /dev/null +++ b/app/lib/vacuum/system_keys_vacuum.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class Vacuum::SystemKeysVacuum + def perform + vacuum_expired_system_keys! + end + + private + + def vacuum_expired_system_keys! + SystemKey.expired.delete_all + end +end diff --git a/app/models/content_retention_policy.rb b/app/models/content_retention_policy.rb new file mode 100644 index 000000000..b5e922c8c --- /dev/null +++ b/app/models/content_retention_policy.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +class ContentRetentionPolicy + def self.current + new + end + + def media_cache_retention_period + retention_period Setting.media_cache_retention_period + end + + def content_cache_retention_period + retention_period Setting.content_cache_retention_period + end + + def backups_retention_period + retention_period Setting.backups_retention_period + end + + private + + def retention_period(value) + value.days if value.is_a?(Integer) && value.positive? + end +end diff --git a/app/models/form/admin_settings.rb b/app/models/form/admin_settings.rb index 97fabc6ac..3a7150916 100644 --- a/app/models/form/admin_settings.rb +++ b/app/models/form/admin_settings.rb @@ -32,6 +32,9 @@ class Form::AdminSettings show_domain_blocks_rationale noindex require_invite_text + media_cache_retention_period + content_cache_retention_period + backups_retention_period ).freeze BOOLEAN_KEYS = %i( @@ -64,6 +67,7 @@ class Form::AdminSettings validates :bootstrap_timeline_accounts, existing_username: { multiple: true } validates :show_domain_blocks, inclusion: { in: %w(disabled users all) } validates :show_domain_blocks_rationale, inclusion: { in: %w(disabled users all) } + validates :media_cache_retention_period, :content_cache_retention_period, :backups_retention_period, numericality: { only_integer: true } def initialize(_attributes = {}) super diff --git a/app/views/admin/settings/edit.html.haml b/app/views/admin/settings/edit.html.haml index 64687b7a6..1dfd21643 100644 --- a/app/views/admin/settings/edit.html.haml +++ b/app/views/admin/settings/edit.html.haml @@ -45,7 +45,6 @@ .fields-group = f.input :require_invite_text, as: :boolean, wrapper: :with_label, label: t('admin.settings.registrations.require_invite_text.title'), hint: t('admin.settings.registrations.require_invite_text.desc_html'), disabled: !approved_registrations? - .fields-group %hr.spacer/ @@ -100,5 +99,12 @@ = f.input :site_terms, wrapper: :with_block_label, as: :text, label: t('admin.settings.site_terms.title'), hint: t('admin.settings.site_terms.desc_html'), input_html: { rows: 8 } = f.input :custom_css, wrapper: :with_block_label, as: :text, input_html: { rows: 8 }, label: t('admin.settings.custom_css.title'), hint: t('admin.settings.custom_css.desc_html') + %hr.spacer/ + + .fields-group + = f.input :media_cache_retention_period, wrapper: :with_block_label, input_html: { pattern: '[0-9]+' } + = f.input :content_cache_retention_period, wrapper: :with_block_label, input_html: { pattern: '[0-9]+' } + = f.input :backups_retention_period, wrapper: :with_block_label, input_html: { pattern: '[0-9]+' } + .actions = f.button :button, t('generic.save_changes'), type: :submit diff --git a/app/workers/scheduler/backup_cleanup_scheduler.rb b/app/workers/scheduler/backup_cleanup_scheduler.rb deleted file mode 100644 index 85d5312c0..000000000 --- a/app/workers/scheduler/backup_cleanup_scheduler.rb +++ /dev/null @@ -1,17 +0,0 @@ -# frozen_string_literal: true - -class Scheduler::BackupCleanupScheduler - include Sidekiq::Worker - - sidekiq_options retry: 0 - - def perform - old_backups.reorder(nil).find_each(&:destroy!) - end - - private - - def old_backups - Backup.where('created_at < ?', 7.days.ago) - end -end diff --git a/app/workers/scheduler/feed_cleanup_scheduler.rb b/app/workers/scheduler/feed_cleanup_scheduler.rb deleted file mode 100644 index aa0cc8b8d..000000000 --- a/app/workers/scheduler/feed_cleanup_scheduler.rb +++ /dev/null @@ -1,35 +0,0 @@ -# frozen_string_literal: true - -class Scheduler::FeedCleanupScheduler - include Sidekiq::Worker - include Redisable - - sidekiq_options retry: 0 - - def perform - clean_home_feeds! - clean_list_feeds! - end - - private - - def clean_home_feeds! - feed_manager.clean_feeds!(:home, inactive_account_ids) - end - - def clean_list_feeds! - feed_manager.clean_feeds!(:list, inactive_list_ids) - end - - def inactive_account_ids - @inactive_account_ids ||= User.confirmed.inactive.pluck(:account_id) - end - - def inactive_list_ids - List.where(account_id: inactive_account_ids).pluck(:id) - end - - def feed_manager - FeedManager.instance - end -end diff --git a/app/workers/scheduler/media_cleanup_scheduler.rb b/app/workers/scheduler/media_cleanup_scheduler.rb deleted file mode 100644 index 24d30a6be..000000000 --- a/app/workers/scheduler/media_cleanup_scheduler.rb +++ /dev/null @@ -1,17 +0,0 @@ -# frozen_string_literal: true - -class Scheduler::MediaCleanupScheduler - include Sidekiq::Worker - - sidekiq_options retry: 0 - - def perform - unattached_media.find_each(&:destroy) - end - - private - - def unattached_media - MediaAttachment.reorder(nil).unattached.where('created_at < ?', 1.day.ago) - end -end diff --git a/app/workers/scheduler/vacuum_scheduler.rb b/app/workers/scheduler/vacuum_scheduler.rb new file mode 100644 index 000000000..ce88ff204 --- /dev/null +++ b/app/workers/scheduler/vacuum_scheduler.rb @@ -0,0 +1,56 @@ +# frozen_string_literal: true + +class Scheduler::VacuumScheduler + include Sidekiq::Worker + + sidekiq_options retry: 0 + + def perform + vacuum_operations.each do |operation| + operation.perform + rescue => e + Rails.logger.error("Error while running #{operation.class.name}: #{e}") + end + end + + private + + def vacuum_operations + [ + statuses_vacuum, + media_attachments_vacuum, + preview_cards_vacuum, + backups_vacuum, + access_tokens_vacuum, + feeds_vacuum, + ] + end + + def statuses_vacuum + Vacuum::StatusesVacuum.new(content_retention_policy.content_cache_retention_period) + end + + def media_attachments_vacuum + Vacuum::MediaAttachmentsVacuum.new(content_retention_policy.media_cache_retention_period) + end + + def preview_cards_vacuum + Vacuum::PreviewCardsVacuum.new(content_retention_policy.media_cache_retention_period) + end + + def backups_vacuum + Vacuum::BackupsVacuum.new(content_retention_policy.backups_retention_period) + end + + def access_tokens_vacuum + Vacuum::AccessTokensVacuum.new + end + + def feeds_vacuum + Vacuum::FeedsVacuum.new + end + + def content_retention_policy + ContentRetentionPolicy.current + end +end diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index ddc83e896..db5b45e41 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -73,6 +73,10 @@ en: actions: hide: Completely hide the filtered content, behaving as if it did not exist warn: Hide the filtered content behind a warning mentioning the filter's title + form_admin_settings: + backups_retention_period: Keep generated user archives for the specified number of days. + content_cache_retention_period: Posts from other servers will be deleted after the specified number of days when set to a positive value. This may be irreversible. + media_cache_retention_period: Downloaded media files will be deleted after the specified number of days when set to a positive value, and re-downloaded on demand. form_challenge: current_password: You are entering a secure area imports: @@ -207,6 +211,10 @@ en: actions: hide: Hide completely warn: Hide with a warning + form_admin_settings: + backups_retention_period: User archive retention period + content_cache_retention_period: Content cache retention period + media_cache_retention_period: Media cache retention period interactions: must_be_follower: Block notifications from non-followers must_be_following: Block notifications from people you don't follow diff --git a/config/settings.yml b/config/settings.yml index eaa05071e..41742118b 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -70,6 +70,7 @@ defaults: &defaults show_domain_blocks: 'disabled' show_domain_blocks_rationale: 'disabled' require_invite_text: false + backups_retention_period: 7 development: <<: *defaults diff --git a/config/sidekiq.yml b/config/sidekiq.yml index 9ec6eb5ec..e3156aa34 100644 --- a/config/sidekiq.yml +++ b/config/sidekiq.yml @@ -25,22 +25,14 @@ every: '5m' class: Scheduler::IndexingScheduler queue: scheduler - media_cleanup_scheduler: + vacuum_scheduler: cron: '<%= Random.rand(0..59) %> <%= Random.rand(3..5) %> * * *' - class: Scheduler::MediaCleanupScheduler - queue: scheduler - feed_cleanup_scheduler: - cron: '<%= Random.rand(0..59) %> <%= Random.rand(0..2) %> * * *' - class: Scheduler::FeedCleanupScheduler + class: Scheduler::VacuumScheduler queue: scheduler follow_recommendations_scheduler: cron: '<%= Random.rand(0..59) %> <%= Random.rand(6..9) %> * * *' class: Scheduler::FollowRecommendationsScheduler queue: scheduler - doorkeeper_cleanup_scheduler: - cron: '<%= Random.rand(0..59) %> <%= Random.rand(0..2) %> * * 0' - class: Scheduler::DoorkeeperCleanupScheduler - queue: scheduler user_cleanup_scheduler: cron: '<%= Random.rand(0..59) %> <%= Random.rand(4..6) %> * * *' class: Scheduler::UserCleanupScheduler @@ -49,10 +41,6 @@ cron: '<%= Random.rand(0..59) %> <%= Random.rand(3..5) %> * * *' class: Scheduler::IpCleanupScheduler queue: scheduler - backup_cleanup_scheduler: - cron: '<%= Random.rand(0..59) %> <%= Random.rand(3..5) %> * * *' - class: Scheduler::BackupCleanupScheduler - queue: scheduler pghero_scheduler: cron: '0 0 * * *' class: Scheduler::PgheroScheduler diff --git a/spec/fabricators/access_grant_fabricator.rb b/spec/fabricators/access_grant_fabricator.rb new file mode 100644 index 000000000..ae1945f2b --- /dev/null +++ b/spec/fabricators/access_grant_fabricator.rb @@ -0,0 +1,6 @@ +Fabricator :access_grant, from: 'Doorkeeper::AccessGrant' do + application + resource_owner_id { Fabricate(:user).id } + expires_in 3_600 + redirect_uri { Doorkeeper.configuration.native_redirect_uri } +end diff --git a/spec/fabricators/preview_card_fabricator.rb b/spec/fabricators/preview_card_fabricator.rb index f119c117d..99b5edc43 100644 --- a/spec/fabricators/preview_card_fabricator.rb +++ b/spec/fabricators/preview_card_fabricator.rb @@ -3,4 +3,5 @@ Fabricator(:preview_card) do title { Faker::Lorem.sentence } description { Faker::Lorem.paragraph } type 'link' + image { attachment_fixture('attachment.jpg') } end diff --git a/spec/lib/vacuum/access_tokens_vacuum_spec.rb b/spec/lib/vacuum/access_tokens_vacuum_spec.rb new file mode 100644 index 000000000..0244c3449 --- /dev/null +++ b/spec/lib/vacuum/access_tokens_vacuum_spec.rb @@ -0,0 +1,33 @@ +require 'rails_helper' + +RSpec.describe Vacuum::AccessTokensVacuum do + subject { described_class.new } + + describe '#perform' do + let!(:revoked_access_token) { Fabricate(:access_token, revoked_at: 1.minute.ago) } + let!(:active_access_token) { Fabricate(:access_token) } + + let!(:revoked_access_grant) { Fabricate(:access_grant, revoked_at: 1.minute.ago) } + let!(:active_access_grant) { Fabricate(:access_grant) } + + before do + subject.perform + end + + it 'deletes revoked access tokens' do + expect { revoked_access_token.reload }.to raise_error ActiveRecord::RecordNotFound + end + + it 'deletes revoked access grants' do + expect { revoked_access_grant.reload }.to raise_error ActiveRecord::RecordNotFound + end + + it 'does not delete active access tokens' do + expect { active_access_token.reload }.to_not raise_error + end + + it 'does not delete active access grants' do + expect { active_access_grant.reload }.to_not raise_error + end + end +end diff --git a/spec/lib/vacuum/backups_vacuum_spec.rb b/spec/lib/vacuum/backups_vacuum_spec.rb new file mode 100644 index 000000000..4e2de083f --- /dev/null +++ b/spec/lib/vacuum/backups_vacuum_spec.rb @@ -0,0 +1,24 @@ +require 'rails_helper' + +RSpec.describe Vacuum::BackupsVacuum do + let(:retention_period) { 7.days } + + subject { described_class.new(retention_period) } + + describe '#perform' do + let!(:expired_backup) { Fabricate(:backup, created_at: (retention_period + 1.day).ago) } + let!(:current_backup) { Fabricate(:backup) } + + before do + subject.perform + end + + it 'deletes backups past the retention period' do + expect { expired_backup.reload }.to raise_error ActiveRecord::RecordNotFound + end + + it 'does not delete backups within the retention period' do + expect { current_backup.reload }.to_not raise_error + end + end +end diff --git a/spec/lib/vacuum/feeds_vacuum_spec.rb b/spec/lib/vacuum/feeds_vacuum_spec.rb new file mode 100644 index 000000000..0aec26740 --- /dev/null +++ b/spec/lib/vacuum/feeds_vacuum_spec.rb @@ -0,0 +1,30 @@ +require 'rails_helper' + +RSpec.describe Vacuum::FeedsVacuum do + subject { described_class.new } + + describe '#perform' do + let!(:active_user) { Fabricate(:user, current_sign_in_at: 2.days.ago) } + let!(:inactive_user) { Fabricate(:user, current_sign_in_at: 22.days.ago) } + + before do + redis.zadd(feed_key_for(inactive_user), 1, 1) + redis.zadd(feed_key_for(active_user), 1, 1) + redis.zadd(feed_key_for(inactive_user, 'reblogs'), 2, 2) + redis.sadd(feed_key_for(inactive_user, 'reblogs:2'), 3) + + subject.perform + end + + it 'clears feeds of inactive users and lists' do + expect(redis.zcard(feed_key_for(inactive_user))).to eq 0 + expect(redis.zcard(feed_key_for(active_user))).to eq 1 + expect(redis.exists?(feed_key_for(inactive_user, 'reblogs'))).to be false + expect(redis.exists?(feed_key_for(inactive_user, 'reblogs:2'))).to be false + end + end + + def feed_key_for(user, subtype = nil) + FeedManager.instance.key(:home, user.account_id, subtype) + end +end diff --git a/spec/lib/vacuum/media_attachments_vacuum_spec.rb b/spec/lib/vacuum/media_attachments_vacuum_spec.rb new file mode 100644 index 000000000..be8458d9b --- /dev/null +++ b/spec/lib/vacuum/media_attachments_vacuum_spec.rb @@ -0,0 +1,47 @@ +require 'rails_helper' + +RSpec.describe Vacuum::MediaAttachmentsVacuum do + let(:retention_period) { 7.days } + + subject { described_class.new(retention_period) } + + let(:remote_status) { Fabricate(:status, account: Fabricate(:account, domain: 'example.com')) } + let(:local_status) { Fabricate(:status) } + + describe '#perform' do + let!(:old_remote_media) { Fabricate(:media_attachment, remote_url: 'https://example.com/foo.png', status: remote_status, created_at: (retention_period + 1.day).ago, updated_at: (retention_period + 1.day).ago) } + let!(:old_local_media) { Fabricate(:media_attachment, status: local_status, created_at: (retention_period + 1.day).ago, updated_at: (retention_period + 1.day).ago) } + let!(:new_remote_media) { Fabricate(:media_attachment, remote_url: 'https://example.com/foo.png', status: remote_status) } + let!(:new_local_media) { Fabricate(:media_attachment, status: local_status) } + let!(:old_unattached_media) { Fabricate(:media_attachment, account_id: nil, created_at: 10.days.ago) } + let!(:new_unattached_media) { Fabricate(:media_attachment, account_id: nil, created_at: 1.hour.ago) } + + before do + subject.perform + end + + it 'deletes cache of remote media attachments past the retention period' do + expect(old_remote_media.reload.file).to be_blank + end + + it 'does not touch local media attachments past the retention period' do + expect(old_local_media.reload.file).to_not be_blank + end + + it 'does not delete cache of remote media attachments within the retention period' do + expect(new_remote_media.reload.file).to_not be_blank + end + + it 'does not touch local media attachments within the retention period' do + expect(new_local_media.reload.file).to_not be_blank + end + + it 'deletes unattached media attachments past TTL' do + expect { old_unattached_media.reload }.to raise_error(ActiveRecord::RecordNotFound) + end + + it 'does not delete unattached media attachments within TTL' do + expect(new_unattached_media.reload).to be_persisted + end + end +end diff --git a/spec/lib/vacuum/preview_cards_vacuum_spec.rb b/spec/lib/vacuum/preview_cards_vacuum_spec.rb new file mode 100644 index 000000000..4a4a599fa --- /dev/null +++ b/spec/lib/vacuum/preview_cards_vacuum_spec.rb @@ -0,0 +1,36 @@ +require 'rails_helper' + +RSpec.describe Vacuum::PreviewCardsVacuum do + let(:retention_period) { 7.days } + + subject { described_class.new(retention_period) } + + describe '#perform' do + let!(:orphaned_preview_card) { Fabricate(:preview_card, created_at: 2.days.ago) } + let!(:old_preview_card) { Fabricate(:preview_card, updated_at: (retention_period + 1.day).ago) } + let!(:new_preview_card) { Fabricate(:preview_card) } + + before do + old_preview_card.statuses << Fabricate(:status) + new_preview_card.statuses << Fabricate(:status) + + subject.perform + end + + it 'deletes cache of preview cards last updated before the retention period' do + expect(old_preview_card.reload.image).to be_blank + end + + it 'does not delete cache of preview cards last updated within the retention period' do + expect(new_preview_card.reload.image).to_not be_blank + end + + it 'does not delete attached preview cards' do + expect(new_preview_card.reload).to be_persisted + end + + it 'deletes preview cards not attached to any status' do + expect { orphaned_preview_card.reload }.to raise_error ActiveRecord::RecordNotFound + end + end +end diff --git a/spec/lib/vacuum/statuses_vacuum_spec.rb b/spec/lib/vacuum/statuses_vacuum_spec.rb new file mode 100644 index 000000000..83f3c5c9f --- /dev/null +++ b/spec/lib/vacuum/statuses_vacuum_spec.rb @@ -0,0 +1,36 @@ +require 'rails_helper' + +RSpec.describe Vacuum::StatusesVacuum do + let(:retention_period) { 7.days } + + let(:remote_account) { Fabricate(:account, domain: 'example.com') } + + subject { described_class.new(retention_period) } + + describe '#perform' do + let!(:remote_status_old) { Fabricate(:status, account: remote_account, created_at: (retention_period + 2.days).ago) } + let!(:remote_status_recent) { Fabricate(:status, account: remote_account, created_at: (retention_period - 2.days).ago) } + let!(:local_status_old) { Fabricate(:status, created_at: (retention_period + 2.days).ago) } + let!(:local_status_recent) { Fabricate(:status, created_at: (retention_period - 2.days).ago) } + + before do + subject.perform + end + + it 'deletes remote statuses past the retention period' do + expect { remote_status_old.reload }.to raise_error ActiveRecord::RecordNotFound + end + + it 'does not delete local statuses past the retention period' do + expect { local_status_old.reload }.to_not raise_error + end + + it 'does not delete remote statuses within the retention period' do + expect { remote_status_recent.reload }.to_not raise_error + end + + it 'does not delete local statuses within the retention period' do + expect { local_status_recent.reload }.to_not raise_error + end + end +end diff --git a/spec/lib/vacuum/system_keys_vacuum_spec.rb b/spec/lib/vacuum/system_keys_vacuum_spec.rb new file mode 100644 index 000000000..565892f02 --- /dev/null +++ b/spec/lib/vacuum/system_keys_vacuum_spec.rb @@ -0,0 +1,22 @@ +require 'rails_helper' + +RSpec.describe Vacuum::SystemKeysVacuum do + subject { described_class.new } + + describe '#perform' do + let!(:expired_system_key) { Fabricate(:system_key, created_at: (SystemKey::ROTATION_PERIOD * 4).ago) } + let!(:current_system_key) { Fabricate(:system_key) } + + before do + subject.perform + end + + it 'deletes the expired key' do + expect { expired_system_key.reload }.to raise_error ActiveRecord::RecordNotFound + end + + it 'does not delete the current key' do + expect { current_system_key.reload }.to_not raise_error + end + end +end diff --git a/spec/workers/scheduler/feed_cleanup_scheduler_spec.rb b/spec/workers/scheduler/feed_cleanup_scheduler_spec.rb deleted file mode 100644 index 82d794594..000000000 --- a/spec/workers/scheduler/feed_cleanup_scheduler_spec.rb +++ /dev/null @@ -1,26 +0,0 @@ -require 'rails_helper' - -describe Scheduler::FeedCleanupScheduler do - subject { described_class.new } - - let!(:active_user) { Fabricate(:user, current_sign_in_at: 2.days.ago) } - let!(:inactive_user) { Fabricate(:user, current_sign_in_at: 22.days.ago) } - - it 'clears feeds of inactives' do - redis.zadd(feed_key_for(inactive_user), 1, 1) - redis.zadd(feed_key_for(active_user), 1, 1) - redis.zadd(feed_key_for(inactive_user, 'reblogs'), 2, 2) - redis.sadd(feed_key_for(inactive_user, 'reblogs:2'), 3) - - subject.perform - - expect(redis.zcard(feed_key_for(inactive_user))).to eq 0 - expect(redis.zcard(feed_key_for(active_user))).to eq 1 - expect(redis.exists?(feed_key_for(inactive_user, 'reblogs'))).to be false - expect(redis.exists?(feed_key_for(inactive_user, 'reblogs:2'))).to be false - end - - def feed_key_for(user, subtype = nil) - FeedManager.instance.key(:home, user.account_id, subtype) - end -end diff --git a/spec/workers/scheduler/media_cleanup_scheduler_spec.rb b/spec/workers/scheduler/media_cleanup_scheduler_spec.rb deleted file mode 100644 index 8a0da67e1..000000000 --- a/spec/workers/scheduler/media_cleanup_scheduler_spec.rb +++ /dev/null @@ -1,15 +0,0 @@ -require 'rails_helper' - -describe Scheduler::MediaCleanupScheduler do - subject { described_class.new } - - let!(:old_media) { Fabricate(:media_attachment, account_id: nil, created_at: 10.days.ago) } - let!(:new_media) { Fabricate(:media_attachment, account_id: nil, created_at: 1.hour.ago) } - - it 'removes old media records' do - subject.perform - - expect { old_media.reload }.to raise_error(ActiveRecord::RecordNotFound) - expect(new_media.reload).to be_persisted - end -end From 1d5196918ae8803cfb07903aff8cd5cfa0b979be Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 28 Sep 2022 02:31:33 +0900 Subject: [PATCH 419/652] Bump tzinfo-data from 1.2022.3 to 1.2022.4 (#19238) Bumps [tzinfo-data](https://github.com/tzinfo/tzinfo-data) from 1.2022.3 to 1.2022.4. - [Release notes](https://github.com/tzinfo/tzinfo-data/releases) - [Commits](https://github.com/tzinfo/tzinfo-data/compare/v1.2022.3...v1.2022.4) --- updated-dependencies: - dependency-name: tzinfo-data dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 425970a52..21579f1f1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -681,7 +681,7 @@ GEM unf (~> 0.1.0) tzinfo (2.0.5) concurrent-ruby (~> 1.0) - tzinfo-data (1.2022.3) + tzinfo-data (1.2022.4) tzinfo (>= 1.0.0) unf (0.1.4) unf_ext From 97d34c51177c0c8a1b6bdb804cb371a79d45d6c5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 28 Sep 2022 02:31:46 +0900 Subject: [PATCH 420/652] Bump sass from 1.54.9 to 1.55.0 (#19239) Bumps [sass](https://github.com/sass/dart-sass) from 1.54.9 to 1.55.0. - [Release notes](https://github.com/sass/dart-sass/releases) - [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md) - [Commits](https://github.com/sass/dart-sass/compare/1.54.9...1.55.0) --- updated-dependencies: - dependency-name: sass dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 5472a41d8..224fbd409 100644 --- a/package.json +++ b/package.json @@ -118,7 +118,7 @@ "requestidlecallback": "^0.3.0", "reselect": "^4.1.6", "rimraf": "^3.0.2", - "sass": "^1.54.9", + "sass": "^1.55.0", "sass-loader": "^10.2.0", "stacktrace-js": "^2.0.2", "stringz": "^2.1.0", diff --git a/yarn.lock b/yarn.lock index a6a897626..e351f6b7e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9890,10 +9890,10 @@ sass-loader@^10.2.0: schema-utils "^3.0.0" semver "^7.3.2" -sass@^1.54.9: - version "1.54.9" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.9.tgz#b05f14ed572869218d1a76961de60cd647221762" - integrity sha512-xb1hjASzEH+0L0WI9oFjqhRi51t/gagWnxLiwUNMltA0Ab6jIDkAacgKiGYKM9Jhy109osM7woEEai6SXeJo5Q== +sass@^1.55.0: + version "1.55.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.55.0.tgz#0c4d3c293cfe8f8a2e8d3b666e1cf1bff8065d1c" + integrity sha512-Pk+PMy7OGLs9WaxZGJMn7S96dvlyVBwwtToX895WmCpAOr5YiJYEUJfiJidMuKb613z2xNWcXCHEuOvjZbqC6A== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" From 950900b9689437a5eeb6b92f32c538a68b8dbdc9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 28 Sep 2022 02:32:25 +0900 Subject: [PATCH 421/652] Bump ws from 8.8.1 to 8.9.0 (#19240) Bumps [ws](https://github.com/websockets/ws) from 8.8.1 to 8.9.0. - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/8.8.1...8.9.0) --- updated-dependencies: - dependency-name: ws dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 224fbd409..967833a95 100644 --- a/package.json +++ b/package.json @@ -141,7 +141,7 @@ "workbox-strategies": "^6.5.4", "workbox-webpack-plugin": "^6.5.4", "workbox-window": "^6.5.4", - "ws": "^8.8.1" + "ws": "^8.9.0" }, "devDependencies": { "@babel/eslint-parser": "^7.19.1", diff --git a/yarn.lock b/yarn.lock index e351f6b7e..90f0e233b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12019,10 +12019,10 @@ ws@^7.3.1: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== -ws@^8.8.0, ws@^8.8.1: - version "8.8.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.8.1.tgz#5dbad0feb7ade8ecc99b830c1d77c913d4955ff0" - integrity sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA== +ws@^8.8.0, ws@^8.9.0: + version "8.9.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.9.0.tgz#2a994bb67144be1b53fe2d23c53c028adeb7f45e" + integrity sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg== xml-name-validator@^4.0.0: version "4.0.0" From 88b3a0681c059d98e89c8bf8e1dcb47039d0742c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 28 Sep 2022 02:33:59 +0900 Subject: [PATCH 422/652] Bump stylelint from 14.12.0 to 14.12.1 (#19241) Bumps [stylelint](https://github.com/stylelint/stylelint) from 14.12.0 to 14.12.1. - [Release notes](https://github.com/stylelint/stylelint/releases) - [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md) - [Commits](https://github.com/stylelint/stylelint/compare/14.12.0...14.12.1) --- updated-dependencies: - dependency-name: stylelint dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 967833a95..30eaf9430 100644 --- a/package.json +++ b/package.json @@ -160,7 +160,7 @@ "raf": "^3.4.1", "react-intl-translations-manager": "^5.0.3", "react-test-renderer": "^16.14.0", - "stylelint": "^14.12.0", + "stylelint": "^14.12.1", "stylelint-config-standard-scss": "^5.0.0", "webpack-dev-server": "^3.11.3", "yargs": "^17.5.1" diff --git a/yarn.lock b/yarn.lock index 90f0e233b..ebd66fca0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10670,10 +10670,10 @@ stylelint-scss@^4.0.0: postcss-selector-parser "^6.0.6" postcss-value-parser "^4.1.0" -stylelint@^14.12.0: - version "14.12.0" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.12.0.tgz#86d5b60d0f30a6bd0b59e1d4c85a267f0caef97e" - integrity sha512-9Sa+IsT31PN9zf9q5ZVZNvhT6jMVu6YhpI38g3Akn7vONipGL0GNd9QCblwtJ3ysaoM80P/+9mOcFB1xnytiQQ== +stylelint@^14.12.1: + version "14.12.1" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.12.1.tgz#7fac1578662ca12330c32a61c8583be7fad4a530" + integrity sha512-ZEM4TuksChMBfuPadQsHUkbOoRySAT9QMfDvvYxdAchOJl0p+csTMBXOu6ORAAxKhwBmxqJiep8V88bXfNs3EQ== dependencies: "@csstools/selector-specificity" "^2.0.2" balanced-match "^2.0.0" From 2635c8dc5c19ea976b9fc787169244d7e8cec90a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 28 Sep 2022 02:34:29 +0900 Subject: [PATCH 423/652] Bump react-redux from 7.2.8 to 7.2.9 (#19242) Bumps [react-redux](https://github.com/reduxjs/react-redux) from 7.2.8 to 7.2.9. - [Release notes](https://github.com/reduxjs/react-redux/releases) - [Changelog](https://github.com/reduxjs/react-redux/blob/master/CHANGELOG.md) - [Commits](https://github.com/reduxjs/react-redux/compare/v7.2.8...v7.2.9) --- updated-dependencies: - dependency-name: react-redux dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 30eaf9430..ca1786038 100644 --- a/package.json +++ b/package.json @@ -100,7 +100,7 @@ "react-motion": "^0.5.2", "react-notification": "^6.8.5", "react-overlays": "^0.9.3", - "react-redux": "^7.2.8", + "react-redux": "^7.2.9", "react-redux-loading-bar": "^5.0.4", "react-router-dom": "^4.1.1", "react-router-scroll-4": "^1.0.0-beta.1", diff --git a/yarn.lock b/yarn.lock index ebd66fca0..90302b284 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9310,10 +9310,10 @@ react-redux-loading-bar@^5.0.4: prop-types "^15.7.2" react-lifecycles-compat "^3.0.4" -react-redux@^7.2.8: - version "7.2.8" - resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.8.tgz#a894068315e65de5b1b68899f9c6ee0923dd28de" - integrity sha512-6+uDjhs3PSIclqoCk0kd6iX74gzrGc3W5zcAjbrFgEdIjRSQObdIwfx80unTkVUYvbQ95Y8Av3OvFHq1w5EOUw== +react-redux@^7.2.9: + version "7.2.9" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.9.tgz#09488fbb9416a4efe3735b7235055442b042481d" + integrity sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ== dependencies: "@babel/runtime" "^7.15.4" "@types/react-redux" "^7.1.20" From d86dd067ceb1dc05e67417fa1d7f1e84519b2fca Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Wed, 28 Sep 2022 06:33:56 +0900 Subject: [PATCH 424/652] Fix auto detect language for translate service (#19244) --- .devcontainer/devcontainer.json | 2 +- .devcontainer/docker-compose.yml | 7 +++++++ app/lib/translation_service/deepl.rb | 2 +- app/lib/translation_service/libre_translate.rb | 3 ++- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 9d9e54d4f..47497794f 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -20,7 +20,7 @@ "forwardPorts": [3000, 4000], // Use 'postCreateCommand' to run commands after the container is created. - "postCreateCommand": "bundle install --path vendor/bundle && yarn install && ./bin/rails db:setup", + "postCreateCommand": "bundle install --path vendor/bundle && yarn install && git checkout -- Gemfile.lock && ./bin/rails db:setup", // Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. "remoteUser": "vscode" diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml index 538f6cccd..46f42c454 100644 --- a/.devcontainer/docker-compose.yml +++ b/.devcontainer/docker-compose.yml @@ -27,6 +27,7 @@ services: ES_ENABLED: 'true' ES_HOST: es ES_PORT: '9200' + LIBRE_TRANSLATE_ENDPOINT: http://libretranslate:5000 # Overrides default command so things don't shut down after the process ends. command: sleep infinity networks: @@ -72,6 +73,12 @@ services: soft: -1 hard: -1 + libretranslate: + image: libretranslate/libretranslate:v1.2.9 + restart: unless-stopped + networks: + - internal_network + volumes: postgres-data: redis-data: diff --git a/app/lib/translation_service/deepl.rb b/app/lib/translation_service/deepl.rb index 89ccf01e5..b75b604a8 100644 --- a/app/lib/translation_service/deepl.rb +++ b/app/lib/translation_service/deepl.rb @@ -28,7 +28,7 @@ class TranslationService::DeepL < TranslationService private def request(text, source_language, target_language) - req = Request.new(:post, endpoint_url, form: { text: text, source_lang: source_language.upcase, target_lang: target_language, tag_handling: 'html' }) + req = Request.new(:post, endpoint_url, form: { text: text, source_lang: source_language&.upcase, target_lang: target_language, tag_handling: 'html' }) req.add_headers('Authorization': "DeepL-Auth-Key #{@api_key}") req end diff --git a/app/lib/translation_service/libre_translate.rb b/app/lib/translation_service/libre_translate.rb index 66acdeed7..8cf26f868 100644 --- a/app/lib/translation_service/libre_translate.rb +++ b/app/lib/translation_service/libre_translate.rb @@ -26,7 +26,8 @@ class TranslationService::LibreTranslate < TranslationService private def request(text, source_language, target_language) - req = Request.new(:post, "#{@base_url}/translate", body: Oj.dump(q: text, source: source_language, target: target_language, format: 'html', api_key: @api_key)) + body = Oj.dump(q: text, source: source_language.presence || 'auto', target: target_language, format: 'html', api_key: @api_key) + req = Request.new(:post, "#{@base_url}/translate", body: body) req.add_headers('Content-Type': 'application/json') req end From 55a2e9b5beb1fc923c42257edee3df738e208b38 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 28 Sep 2022 01:02:01 +0200 Subject: [PATCH 425/652] Fix translations not being formatted, other issues in web UI (#19245) Fix #19237 --- app/javascript/mastodon/components/status_content.js | 9 +++++---- app/services/translate_status_service.rb | 7 +++++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/javascript/mastodon/components/status_content.js b/app/javascript/mastodon/components/status_content.js index c8f7bc095..43e938d4e 100644 --- a/app/javascript/mastodon/components/status_content.js +++ b/app/javascript/mastodon/components/status_content.js @@ -6,7 +6,7 @@ import Permalink from './permalink'; import classnames from 'classnames'; import PollContainer from 'mastodon/containers/poll_container'; import Icon from 'mastodon/components/icon'; -import { autoPlayGif } from 'mastodon/initial_state'; +import { autoPlayGif, languages as preloadedLanguages } from 'mastodon/initial_state'; const MAX_HEIGHT = 642; // 20px * 32 (+ 2px padding at the top) @@ -180,8 +180,9 @@ class StatusContent extends React.PureComponent { const hidden = this.props.onExpandedToggle ? !this.props.expanded : this.state.hidden; const renderReadMore = this.props.onClick && status.get('collapsed'); const renderViewThread = this.props.showThread && status.get('in_reply_to_id') && status.get('in_reply_to_account_id') === status.getIn(['account', 'id']); - const renderTranslate = this.props.onTranslate && ['public', 'unlisted'].includes(status.get('visibility')) && intl.locale !== status.get('language'); - const languageNames = new Intl.DisplayNames([intl.locale], { type: 'language' }); + const renderTranslate = this.props.onTranslate && ['public', 'unlisted'].includes(status.get('visibility')) && status.get('contentHtml').length > 0 && intl.locale !== status.get('language'); + const language = preloadedLanguages.find(lang => lang[0] === status.get('language')); + const languageName = language ? language[2] : status.get('language'); const content = { __html: status.get('translation') ? status.getIn(['translation', 'content']) : status.get('contentHtml') }; const spoilerContent = { __html: status.get('spoilerHtml') }; @@ -206,7 +207,7 @@ class StatusContent extends React.PureComponent { const translateButton = ( ); diff --git a/app/services/translate_status_service.rb b/app/services/translate_status_service.rb index b375226be..539a0d9db 100644 --- a/app/services/translate_status_service.rb +++ b/app/services/translate_status_service.rb @@ -3,13 +3,16 @@ class TranslateStatusService < BaseService CACHE_TTL = 1.day.freeze + include FormattingHelper + def call(status, target_language) raise Mastodon::NotPermittedError unless status.public_visibility? || status.unlisted_visibility? @status = status + @content = status_content_format(@status) @target_language = target_language - Rails.cache.fetch("translations/#{@status.language}/#{@target_language}/#{content_hash}", expires_in: CACHE_TTL) { translation_backend.translate(@status.text, @status.language, @target_language) } + Rails.cache.fetch("translations/#{@status.language}/#{@target_language}/#{content_hash}", expires_in: CACHE_TTL) { translation_backend.translate(@content, @status.language, @target_language) } end private @@ -19,6 +22,6 @@ class TranslateStatusService < BaseService end def content_hash - Digest::SHA256.base64digest(@status.text) + Digest::SHA256.base64digest(@content) end end From 0d0f3c15d3b510b7e6bd975f3725aaf63b52d971 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 28 Sep 2022 01:02:15 +0200 Subject: [PATCH 426/652] Fix language dropdown sometimes not appearing in web UI (#19246) When user has no locale preference saved (such as never changing it from the default), the preferred posting language is nil, and the dropdown is not visible --- app/models/user.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 342f5e6cc..4767189a0 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -282,7 +282,7 @@ class User < ApplicationRecord end def preferred_posting_language - valid_locale_cascade(settings.default_language, locale) + valid_locale_cascade(settings.default_language, locale, I18n.locale) end def setting_default_privacy From ce5d092a86997194db3eaeecc12aa4aba185b231 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 28 Sep 2022 17:22:49 +0200 Subject: [PATCH 427/652] New Crowdin updates (#19229) * New translations en.json (Romanian) * New translations en.json (French) * New translations en.json (Afrikaans) * New translations en.json (Spanish) * New translations en.json (Korean) * New translations en.json (Lithuanian) * New translations en.json (Macedonian) * New translations en.json (Norwegian) * New translations en.json (Punjabi) * New translations en.json (Polish) * New translations en.json (Portuguese) * New translations en.json (Russian) * New translations en.json (Hebrew) * New translations en.json (Italian) * New translations en.json (Slovak) * New translations en.json (Slovenian) * New translations en.json (Serbian (Cyrillic)) * New translations en.json (Swedish) * New translations en.json (Turkish) * New translations en.json (Ukrainian) * New translations en.json (Chinese Simplified) * New translations en.json (Chinese Traditional) * New translations en.json (Urdu (Pakistan)) * New translations en.json (Vietnamese) * New translations en.json (Galician) * New translations en.json (Georgian) * New translations en.json (Irish) * New translations en.json (Armenian) * New translations en.json (Indonesian) * New translations en.json (Bulgarian) * New translations en.json (Ido) * New translations en.json (German) * New translations en.json (Tamil) * New translations en.json (Esperanto) * New translations en.json (Czech) * New translations en.json (Dutch) * New translations en.json (Albanian) * New translations en.json (Japanese) * New translations en.json (Sinhala) * New translations en.json (Hungarian) * New translations en.json (Arabic) * New translations en.json (Catalan) * New translations en.yml (Catalan) * New translations en.json (Danish) * New translations en.json (Greek) * New translations en.json (Frisian) * New translations en.json (Basque) * New translations en.json (Finnish) * New translations en.json (Thai) * New translations en.json (Icelandic) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Cornish) * New translations en.json (Kannada) * New translations en.json (Scottish Gaelic) * New translations en.json (Asturian) * New translations en.json (Occitan) * New translations en.json (Serbian (Latin)) * New translations en.json (Sorani (Kurdish)) * New translations en.json (Malayalam) * New translations en.json (Corsican) * New translations en.json (Sardinian) * New translations en.json (Sanskrit) * New translations en.json (Kabyle) * New translations en.json (Taigi) * New translations en.json (Silesian) * New translations en.json (Breton) * New translations en.json (Tatar) * New translations en.json (Persian) * New translations en.json (Kazakh) * New translations en.json (Spanish, Argentina) * New translations en.json (Spanish, Mexico) * New translations en.json (Bengali) * New translations en.json (Marathi) * New translations en.json (Croatian) * New translations en.json (Norwegian Nynorsk) * New translations en.json (Estonian) * New translations en.json (Chinese Traditional, Hong Kong) * New translations en.json (Latvian) * New translations en.json (Hindi) * New translations en.json (Malay) * New translations en.json (Telugu) * New translations en.json (English, United Kingdom) * New translations en.json (Welsh) * New translations en.json (Uyghur) * New translations en.json (Standard Moroccan Tamazight) * New translations en.json (Greek) * New translations en.json (Portuguese) * New translations en.json (Kurmanji (Kurdish)) * New translations en.yml (Chinese Simplified) * New translations en.yml (Ukrainian) * New translations en.json (Spanish) * New translations en.json (Korean) * New translations en.json (Ukrainian) * New translations en.json (Chinese Simplified) * New translations simple_form.en.yml (Chinese Simplified) * New translations en.json (Danish) * New translations en.json (Italian) * New translations en.json (Russian) * New translations en.json (Chinese Traditional) * New translations en.json (Czech) * New translations en.json (Hungarian) * New translations en.json (Latvian) * New translations en.json (Turkish) * New translations en.json (Albanian) * New translations en.json (German) * New translations en.json (Polish) * New translations en.json (Slovenian) * New translations en.json (Vietnamese) * New translations en.json (Ido) * New translations en.json (French) * New translations en.json (Icelandic) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/ca.json | 6 +++--- app/javascript/mastodon/locales/cs.json | 6 +++--- app/javascript/mastodon/locales/da.json | 6 +++--- app/javascript/mastodon/locales/de.json | 6 +++--- app/javascript/mastodon/locales/el.json | 6 +++--- app/javascript/mastodon/locales/es-AR.json | 6 +++--- app/javascript/mastodon/locales/es-MX.json | 14 +++++++------- app/javascript/mastodon/locales/es.json | 6 +++--- app/javascript/mastodon/locales/fr.json | 12 ++++++------ app/javascript/mastodon/locales/hu.json | 6 +++--- app/javascript/mastodon/locales/io.json | 6 +++--- app/javascript/mastodon/locales/is.json | 6 +++--- app/javascript/mastodon/locales/it.json | 6 +++--- app/javascript/mastodon/locales/ja.json | 8 ++++---- app/javascript/mastodon/locales/ko.json | 6 +++--- app/javascript/mastodon/locales/ku.json | 6 +++--- app/javascript/mastodon/locales/lv.json | 6 +++--- app/javascript/mastodon/locales/pl.json | 6 +++--- app/javascript/mastodon/locales/pt-PT.json | 6 +++--- app/javascript/mastodon/locales/ru.json | 6 +++--- app/javascript/mastodon/locales/sl.json | 6 +++--- app/javascript/mastodon/locales/sq.json | 6 +++--- app/javascript/mastodon/locales/tr.json | 6 +++--- app/javascript/mastodon/locales/uk.json | 6 +++--- app/javascript/mastodon/locales/vi.json | 6 +++--- app/javascript/mastodon/locales/zh-CN.json | 14 +++++++------- app/javascript/mastodon/locales/zh-TW.json | 6 +++--- config/locales/ca.yml | 2 +- config/locales/simple_form.zh-CN.yml | 1 + config/locales/uk.yml | 4 ++++ config/locales/zh-CN.yml | 7 +++++++ 31 files changed, 106 insertions(+), 94 deletions(-) diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 81a69c4b0..5dbad8d94 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -519,10 +519,10 @@ "status.show_less_all": "Mostrar-ne menys per a tot", "status.show_more": "Mostrar-ne més", "status.show_more_all": "Mostrar-ne més per a tot", - "status.show_original": "Show original", + "status.show_original": "Mostra l'original", "status.show_thread": "Mostra el fil", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Tradueix", + "status.translated_from": "Traduït del: {lang}", "status.uncached_media_warning": "No està disponible", "status.unmute_conversation": "No silenciïs la conversa", "status.unpin": "No fixis al perfil", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index e3d2f30e8..ccadcec26 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -519,10 +519,10 @@ "status.show_less_all": "Zobrazit méně pro všechny", "status.show_more": "Zobrazit více", "status.show_more_all": "Zobrazit více pro všechny", - "status.show_original": "Show original", + "status.show_original": "Zobrazit původní", "status.show_thread": "Zobrazit vlákno", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Přeložit", + "status.translated_from": "Přeloženo z {lang}", "status.uncached_media_warning": "Nedostupné", "status.unmute_conversation": "Odkrýt konverzaci", "status.unpin": "Odepnout z profilu", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 92dddbfe2..e57b301dc 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -519,10 +519,10 @@ "status.show_less_all": "Vis mindre for alle", "status.show_more": "Vis mere", "status.show_more_all": "Vis mere for alle", - "status.show_original": "Show original", + "status.show_original": "Vis original", "status.show_thread": "Vis tråd", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Oversæt", + "status.translated_from": "Oversat fra {lang}", "status.uncached_media_warning": "Utilgængelig", "status.unmute_conversation": "Genaktivér samtale", "status.unpin": "Frigør fra profil", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index b0a4ca5fa..a2f8f087d 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -519,10 +519,10 @@ "status.show_less_all": "Alle Inhaltswarnungen zuklappen", "status.show_more": "Mehr anzeigen", "status.show_more_all": "Alle Inhaltswarnungen aufklappen", - "status.show_original": "Show original", + "status.show_original": "Original anzeigen", "status.show_thread": "Zeige Konversation", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Übersetzen", + "status.translated_from": "Aus {lang} übersetzt", "status.uncached_media_warning": "Nicht verfügbar", "status.unmute_conversation": "Stummschaltung von Konversation aufheben", "status.unpin": "Vom Profil lösen", diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 2a32dbcc6..02f071ede 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -519,10 +519,10 @@ "status.show_less_all": "Δείξε λιγότερα για όλα", "status.show_more": "Δείξε περισσότερα", "status.show_more_all": "Δείξε περισσότερα για όλα", - "status.show_original": "Show original", + "status.show_original": "Εμφάνιση αρχικού", "status.show_thread": "Εμφάνιση νήματος", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Μετάφραση", + "status.translated_from": "Μεταφράστηκε από {lang}", "status.uncached_media_warning": "Μη διαθέσιμα", "status.unmute_conversation": "Διέκοψε την αποσιώπηση της συζήτησης", "status.unpin": "Ξεκαρφίτσωσε από το προφίλ", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 6246462bb..bbaa3591e 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -519,10 +519,10 @@ "status.show_less_all": "Mostrar menos para todo", "status.show_more": "Mostrar más", "status.show_more_all": "Mostrar más para todo", - "status.show_original": "Show original", + "status.show_original": "Mostrar original", "status.show_thread": "Mostrar hilo", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Traducir", + "status.translated_from": "Traducido desde el {lang}", "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index f9823a8a4..36ac226b5 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -24,7 +24,7 @@ "account.follows_you": "Te sigue", "account.hide_reblogs": "Ocultar retoots de @{name}", "account.joined": "Se unió el {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Cambiar idiomas suscritos", "account.link_verified_on": "El proprietario de este link fue comprobado el {date}", "account.locked_info": "El estado de privacidad de esta cuenta està configurado como bloqueado. El proprietario debe revisar manualmente quien puede seguirle.", "account.media": "Multimedia", @@ -519,16 +519,16 @@ "status.show_less_all": "Mostrar menos para todo", "status.show_more": "Mostrar más", "status.show_more_all": "Mostrar más para todo", - "status.show_original": "Show original", + "status.show_original": "Mostrar original", "status.show_thread": "Mostrar hilo", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Traducir", + "status.translated_from": "Traducido de {lang}", "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Sólo los mensajes en los idiomas seleccionados aparecerán en su inicio y otras líneas de tiempo después del cambio. Seleccione ninguno para recibir mensajes en todos los idiomas.", + "subscribed_languages.save": "Guardar cambios", + "subscribed_languages.target": "Cambiar idiomas suscritos para {target}", "suggestions.dismiss": "Descartar sugerencia", "suggestions.header": "Es posible que te interese…", "tabs_bar.federated_timeline": "Federado", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 68cd972ab..af6a2ba97 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -519,10 +519,10 @@ "status.show_less_all": "Mostrar menos para todo", "status.show_more": "Mostrar más", "status.show_more_all": "Mostrar más para todo", - "status.show_original": "Show original", + "status.show_original": "Mostrar original", "status.show_thread": "Mostrar hilo", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Traducir", + "status.translated_from": "Traducido del {lang}", "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 3172f6c72..5c615041f 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -24,7 +24,7 @@ "account.follows_you": "Vous suit", "account.hide_reblogs": "Masquer les partages de @{name}", "account.joined": "Ici depuis {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Changer les langues abonnées", "account.link_verified_on": "La propriété de ce lien a été vérifiée le {date}", "account.locked_info": "Ce compte est privé. Son ou sa propriétaire approuve manuellement qui peut le suivre.", "account.media": "Médias", @@ -60,7 +60,7 @@ "alert.unexpected.title": "Oups !", "announcement.announcement": "Annonce", "attachments_list.unprocessed": "(non traité)", - "audio.hide": "Hide audio", + "audio.hide": "Masquer l'audio", "autosuggest_hashtag.per_week": "{count} par semaine", "boost_modal.combo": "Vous pouvez appuyer sur {combo} pour passer ceci la prochaine fois", "bundle_column_error.body": "Une erreur s’est produite lors du chargement de ce composant.", @@ -198,10 +198,10 @@ "explore.trending_links": "Actualité", "explore.trending_statuses": "Messages", "explore.trending_tags": "Hashtags", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.context_mismatch_explanation": "Cette catégorie de filtre ne s'applique pas au contexte dans lequel vous avez accédé à ce message. Si vous voulez que le message soit filtré dans ce contexte également, vous devrez modifier le filtre.", + "filter_modal.added.context_mismatch_title": "Incompatibilité du contexte !", + "filter_modal.added.expired_explanation": "Cette catégorie de filtre a expiré, vous devrez modifier la date d'expiration pour qu'elle soit appliquée.", + "filter_modal.added.expired_title": "Filtre expiré !", "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", "filter_modal.added.review_and_configure_title": "Filter settings", "filter_modal.added.settings_link": "settings page", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index c2679b35a..08df3cbc9 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -519,10 +519,10 @@ "status.show_less_all": "Kevesebbet mindenhol", "status.show_more": "Többet", "status.show_more_all": "Többet mindenhol", - "status.show_original": "Show original", + "status.show_original": "Eredeti mutatása", "status.show_thread": "Szál mutatása", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Fordítás", + "status.translated_from": "{lang} nyelvből fordítva", "status.uncached_media_warning": "Nem érhető el", "status.unmute_conversation": "Beszélgetés némításának feloldása", "status.unpin": "Kitűzés eltávolítása a profilodról", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 8fe2f7c8c..485b35f1b 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -519,10 +519,10 @@ "status.show_less_all": "Montrez min por omno", "status.show_more": "Montrar plue", "status.show_more_all": "Montrez pluse por omno", - "status.show_original": "Show original", + "status.show_original": "Montrez originalo", "status.show_thread": "Montrez postaro", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Tradukez", + "status.translated_from": "Tradukesis de {lang}", "status.uncached_media_warning": "Nedisplonebla", "status.unmute_conversation": "Desilencigez konverso", "status.unpin": "Depinglagez de profilo", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 73eafad06..c58085f1e 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -519,10 +519,10 @@ "status.show_less_all": "Sýna minna fyrir allt", "status.show_more": "Sýna meira", "status.show_more_all": "Sýna meira fyrir allt", - "status.show_original": "Show original", + "status.show_original": "Sýna upprunalega", "status.show_thread": "Birta þráð", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Þýða", + "status.translated_from": "Þýtt úr {lang}", "status.uncached_media_warning": "Ekki tiltækt", "status.unmute_conversation": "Hætta að þagga niður í samtali", "status.unpin": "Losa af notandasniði", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 92fe389e4..4376c0cff 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -519,10 +519,10 @@ "status.show_less_all": "Mostra meno per tutti", "status.show_more": "Mostra di più", "status.show_more_all": "Mostra di più per tutti", - "status.show_original": "Show original", + "status.show_original": "Mostra originale", "status.show_thread": "Mostra conversazione", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Traduci", + "status.translated_from": "Tradotto da {lang}", "status.uncached_media_warning": "Non disponibile", "status.unmute_conversation": "Annulla silenzia conversazione", "status.unpin": "Non fissare in cima al profilo", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 1e49517f9..9fcd80947 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -519,15 +519,15 @@ "status.show_less_all": "全て隠す", "status.show_more": "もっと見る", "status.show_more_all": "全て見る", - "status.show_original": "Show original", + "status.show_original": "原文を表示", "status.show_thread": "スレッドを表示", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "翻訳", + "status.translated_from": "{lang}からの翻訳", "status.uncached_media_warning": "利用できません", "status.unmute_conversation": "会話のミュートを解除", "status.unpin": "プロフィールへの固定を解除", "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", + "subscribed_languages.save": "変更を保存", "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "隠す", "suggestions.header": "興味あるかもしれません…", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 8dc82a3a8..4d2d5e449 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -519,10 +519,10 @@ "status.show_less_all": "모두 접기", "status.show_more": "더 보기", "status.show_more_all": "모두 펼치기", - "status.show_original": "Show original", + "status.show_original": "원본 보기", "status.show_thread": "글타래 보기", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "번역", + "status.translated_from": "{lang}에서 번역됨", "status.uncached_media_warning": "사용할 수 없음", "status.unmute_conversation": "이 대화의 뮤트 해제하기", "status.unpin": "고정 해제", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 6b5128f4d..41e512432 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -519,10 +519,10 @@ "status.show_less_all": "Ji bo hemîyan kêmtir nîşan bide", "status.show_more": "Bêtir nîşan bide", "status.show_more_all": "Bêtir nîşan bide bo hemûyan", - "status.show_original": "Show original", + "status.show_original": "A resen nîşan bide", "status.show_thread": "Mijarê nîşan bide", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Wergerîne", + "status.translated_from": "Ji {lang} hate wergerandin", "status.uncached_media_warning": "Tune ye", "status.unmute_conversation": "Axaftinê bêdeng neke", "status.unpin": "Şandiya derzîkirî ji profîlê rake", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index b018c8d49..83d30aa0f 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -519,10 +519,10 @@ "status.show_less_all": "Rādīt mazāk visiem", "status.show_more": "Rādīt vairāk", "status.show_more_all": "Rādīt vairāk visiem", - "status.show_original": "Show original", + "status.show_original": "Rādīt oriģinālu", "status.show_thread": "Rādīt tematu", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Tulkot", + "status.translated_from": "Tulkot no {lang}", "status.uncached_media_warning": "Nav pieejams", "status.unmute_conversation": "Atvērt sarunu", "status.unpin": "Noņemt no profila", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 617c81a68..71ae209f3 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -519,10 +519,10 @@ "status.show_less_all": "Zwiń wszystkie", "status.show_more": "Rozwiń", "status.show_more_all": "Rozwiń wszystkie", - "status.show_original": "Show original", + "status.show_original": "Pokaż oryginał", "status.show_thread": "Pokaż wątek", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Przetłumacz", + "status.translated_from": "Przetłumaczone z {lang}", "status.uncached_media_warning": "Niedostępne", "status.unmute_conversation": "Cofnij wyciszenie konwersacji", "status.unpin": "Odepnij z profilu", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 7f3058165..7c9936c6d 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -519,10 +519,10 @@ "status.show_less_all": "Mostrar menos para todas", "status.show_more": "Mostrar mais", "status.show_more_all": "Mostrar mais para todas", - "status.show_original": "Show original", + "status.show_original": "Mostrar original", "status.show_thread": "Mostrar conversa", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Traduzir", + "status.translated_from": "Traduzido de {lang}", "status.uncached_media_warning": "Não disponível", "status.unmute_conversation": "Deixar de silenciar esta conversa", "status.unpin": "Não fixar no perfil", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 957f64b85..47a0a7953 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -519,10 +519,10 @@ "status.show_less_all": "Свернуть все спойлеры в ветке", "status.show_more": "Развернуть", "status.show_more_all": "Развернуть все спойлеры в ветке", - "status.show_original": "Show original", + "status.show_original": "Показать оригинал", "status.show_thread": "Показать обсуждение", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Перевод", + "status.translated_from": "Переведено с {lang}", "status.uncached_media_warning": "Невозможно отобразить файл", "status.unmute_conversation": "Не игнорировать обсуждение", "status.unpin": "Открепить от профиля", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index c4ce59e45..d2e2fdbab 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -519,10 +519,10 @@ "status.show_less_all": "Prikaži manj za vse", "status.show_more": "Prikaži več", "status.show_more_all": "Prikaži več za vse", - "status.show_original": "Show original", + "status.show_original": "Pokaži izvirnik", "status.show_thread": "Prikaži objavo", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Prevedi", + "status.translated_from": "Prevedeno iz jezika: {lang}", "status.uncached_media_warning": "Ni na voljo", "status.unmute_conversation": "Odtišaj pogovor", "status.unpin": "Odpni iz profila", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 4be47edc6..5e971ce6e 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -519,10 +519,10 @@ "status.show_less_all": "Shfaq më pak për të tërë", "status.show_more": "Shfaq më tepër", "status.show_more_all": "Shfaq më tepër për të tërë", - "status.show_original": "Show original", + "status.show_original": "Shfaq origjinalin", "status.show_thread": "Shfaq rrjedhën", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Përktheje", + "status.translated_from": "Përkthyer nga {lang}", "status.uncached_media_warning": "Jo e passhme", "status.unmute_conversation": "Ktheji zërin bisedës", "status.unpin": "Shfiksoje nga profili", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 9f581a9f1..4ddcef55a 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -519,10 +519,10 @@ "status.show_less_all": "Hepsi için daha az göster", "status.show_more": "Daha fazlasını göster", "status.show_more_all": "Hepsi için daha fazla göster", - "status.show_original": "Show original", + "status.show_original": "Orijinali göster", "status.show_thread": "Konuyu göster", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Çevir", + "status.translated_from": "{lang} dilinden çevrildi", "status.uncached_media_warning": "Mevcut değil", "status.unmute_conversation": "Sohbet sesini aç", "status.unpin": "Profilden sabitlemeyi kaldır", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 5fb6030d5..a81cefe32 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -519,10 +519,10 @@ "status.show_less_all": "Показувати менше для всіх", "status.show_more": "Розгорнути", "status.show_more_all": "Показувати більше для всіх", - "status.show_original": "Show original", + "status.show_original": "Показати оригінал", "status.show_thread": "Показати ланцюжок", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Перекласти", + "status.translated_from": "Перекладено з {lang}", "status.uncached_media_warning": "Недоступно", "status.unmute_conversation": "Не ігнорувати діалог", "status.unpin": "Відкріпити від профілю", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 707a4a285..a69a1830f 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -519,10 +519,10 @@ "status.show_less_all": "Thu gọn toàn bộ", "status.show_more": "Xem thêm", "status.show_more_all": "Hiển thị tất cả", - "status.show_original": "Show original", + "status.show_original": "Bản gốc", "status.show_thread": "Xem chuỗi tút này", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Dịch", + "status.translated_from": "Dịch từ {lang}", "status.uncached_media_warning": "Uncached", "status.unmute_conversation": "Quan tâm", "status.unpin": "Bỏ ghim trên hồ sơ", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 9be030663..40d9168a9 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -24,7 +24,7 @@ "account.follows_you": "关注了你", "account.hide_reblogs": "隐藏来自 @{name} 的转贴", "account.joined": "加入于 {date}", - "account.languages": "Change subscribed languages", + "account.languages": "更改订阅语言", "account.link_verified_on": "此链接的所有权已在 {date} 检查", "account.locked_info": "此账户已锁嘟。账户所有者会手动审核关注者。", "account.media": "媒体", @@ -519,16 +519,16 @@ "status.show_less_all": "隐藏全部内容", "status.show_more": "显示更多", "status.show_more_all": "显示全部内容", - "status.show_original": "Show original", + "status.show_original": "显示原文", "status.show_thread": "显示全部对话", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "翻译", + "status.translated_from": "翻译自 {lang}", "status.uncached_media_warning": "暂不可用", "status.unmute_conversation": "恢复此对话的通知提醒", "status.unpin": "在个人资料页面取消置顶", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "更改此选择后,仅选定语言的嘟文会出现在您的主页和列表时间轴上。选择「无」将接收所有语言的嘟文。", + "subscribed_languages.save": "保存更改", + "subscribed_languages.target": "为 {target} 更改订阅语言", "suggestions.dismiss": "关闭建议", "suggestions.header": "你可能会感兴趣…", "tabs_bar.federated_timeline": "跨站", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 200f31f66..8189e896c 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -519,10 +519,10 @@ "status.show_less_all": "減少顯示這類嘟文", "status.show_more": "顯示更多", "status.show_more_all": "顯示更多這類嘟文", - "status.show_original": "Show original", + "status.show_original": "顯示原文", "status.show_thread": "顯示討論串", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "翻譯", + "status.translated_from": "翻譯自 {lang}", "status.uncached_media_warning": "無法使用", "status.unmute_conversation": "解除此對話的靜音", "status.unpin": "從個人檔案頁面解除釘選", diff --git a/config/locales/ca.yml b/config/locales/ca.yml index a03e37cc6..43d77f636 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -1754,7 +1754,7 @@ ca: details: 'Aquí estan els detalls del inici de sessió:' explanation: Hem detectat un inici de sessió del teu compte des d'una nova adreça IP. further_actions_html: Si no has estat tu, recomanem que tu %{action} immediatament i activis l'autenticació de dos-factors per a mantenir el teu compte segur. - subject: El teu compte ha estat accedit des d'una nova adreça IP + subject: S'ha accedit al teu compte des d'una adreça IP nova title: Un nou inici de sessió warning: appeal: Envia una apel·lació diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index 0239304b1..e8bddf332 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -253,6 +253,7 @@ zh-CN: events: 已启用事件 url: 端点网址 'no': 否 + not_recommended: 不推荐 recommended: 推荐 required: mark: "*" diff --git a/config/locales/uk.yml b/config/locales/uk.yml index d423850c3..58abba1bd 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -498,6 +498,7 @@ uk: resolve: Розв'язати домен title: Нове блокування поштового домену no_email_domain_block_selected: Жодні налаштування блокування доменів електронної пошти не було змінено, оскільки жоден з них не було обрано + resolved_dns_records_hint_html: Ім'я домену резолвиться в наступні домени MX, які в кінцевому рахунку відповідають за прийняття електронної пошти. Блокування домену MX заблокує реєстрацію з будь-якої e-mail адреси, яка використовує однаковий домен MX, навіть якщо доменне ім'я буде інакше. Будьте обережні, щоб не блокувати великих поштових провайдерів. resolved_through_html: Розв'язано через %{domain} title: Чорний список поштових доменів follow_recommendations: @@ -889,6 +890,7 @@ uk: links: allow: Дозволити посилання allow_provider: Дозволити публікатора + description_html: Це посилання, з яких наразі багаторазово поширюються записи, з яких Ваш сервер бачить пости. Це може допомогти вашим користувачам дізнатися, що відбувається в світі. Посилання не відображається публічно, поки ви не затверджуєте його публікацію. Ви також можете дозволити або відхилити окремі посилання. disallow: Заборонити посилання disallow_provider: Заборонити публікатора shared_by_over_week: @@ -902,12 +904,14 @@ uk: pending_review: Очікує перевірки preview_card_providers: allowed: Посилання цього публікатора можуть бути популярними + description_html: Це домени, з яких часто передаються посилання на вашому сервері. Посилання не будуть публічно приходити, якщо домен посилання не буде затверджено. Ваше затвердження (або відхилення) поширюється на піддомени. rejected: Посилання цього публікатора можуть не будуть популярними title: Публікатори rejected: Відхилено statuses: allow: Дозволити оприлюднення allow_account: Дозволити автора + description_html: Це дописи, про які ваш сервер знає як такі, що в даний час є спільні і навіть ті, які зараз є дуже популярними. Це може допомогти вашим новим та старим користувачам, щоб знайти більше людей для слідування. Жоден запис не відображається публічно, поки ви не затверджуєте автора, і автор дозволяє іншим користувачам підписатися на це. Ви також можете дозволити або відхилити окремі повідомлення. disallow: Заборонити допис disallow_account: Заборонити автора not_discoverable: Автор не вирішив бути видимим diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index e3eacca16..ceffecd27 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -234,6 +234,7 @@ zh-CN: confirm_user: 确认用户 create_account_warning: 创建警告 create_announcement: 创建公告 + create_canonical_email_block: 新增 E-mail 屏蔽 create_custom_emoji: 创建自定义表情符号 create_domain_allow: 允许新域名 create_domain_block: 封禁新域名 @@ -243,6 +244,7 @@ zh-CN: create_user_role: 创建角色 demote_user: 给用户降职 destroy_announcement: 删除公告 + destroy_canonical_email_block: 删除 E-mail 封禁 destroy_custom_emoji: 删除自定义表情符号 destroy_domain_allow: 解除域名允许 destroy_domain_block: 解除域名封禁 @@ -278,6 +280,7 @@ zh-CN: update_announcement: 更新公告 update_custom_emoji: 更新自定义表情符号 update_domain_block: 更新域名屏蔽 + update_ip_block: 编辑 IP 封禁规则 update_status: 更新嘟文 update_user_role: 更新角色 actions: @@ -289,6 +292,7 @@ zh-CN: confirm_user_html: "%{name} 确认了用户 %{target} 的电子邮件地址" create_account_warning_html: "%{name} 向 %{target} 发送了警告" create_announcement_html: "%{name} 创建了新公告 %{target}" + create_canonical_email_block_html: "%{name} 屏蔽了 hash 为 %{target} 的电子邮箱" create_custom_emoji_html: "%{name} 添加了新的自定义表情 %{target}" create_domain_allow_html: "%{name} 允许了和域名 %{target} 的跨站交互" create_domain_block_html: "%{name} 屏蔽了域名 %{target}" @@ -298,6 +302,7 @@ zh-CN: create_user_role_html: "%{name} 创建了 %{target} 角色" demote_user_html: "%{name} 对用户 %{target} 进行了降任操作" destroy_announcement_html: "%{name} 删除了公告 %{target}" + destroy_canonical_email_block_html: "%{name} 解除屏蔽了 hash 为 %{target} 的电子邮箱" destroy_custom_emoji_html: "%{name} 删除了自定义表情 %{target}" destroy_domain_allow_html: "%{name} 拒绝了和 %{target} 跨站交互" destroy_domain_block_html: "%{name} 解除了对域名 %{target} 的屏蔽" @@ -333,6 +338,7 @@ zh-CN: update_announcement_html: "%{name} 更新了公告 %{target}" update_custom_emoji_html: "%{name} 更新了自定义表情 %{target}" update_domain_block_html: "%{name} 更新了对 %{target} 的域名屏蔽" + update_ip_block_html: "%{name} 修改了对 IP %{target} 的规则" update_status_html: "%{name} 刷新了 %{target} 的嘟文" update_user_role_html: "%{name} 更改了 %{target} 角色" empty: 没有找到日志 @@ -786,6 +792,7 @@ zh-CN: title: 时间轴预览 title: 网站设置 trendable_by_default: + desc_html: 特定的热门内容仍可以被明确地禁止 title: 允许在未审查的情况下将话题置为热门 trends: desc_html: 公开显示先前已通过审核的当前热门话题 From 1a5150e9c364635b989cd0983dac259f94dbbea9 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 29 Sep 2022 01:15:09 +0200 Subject: [PATCH 428/652] Fix content retention policy settings not accepting a blank value (#19248) --- app/models/form/admin_settings.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/form/admin_settings.rb b/app/models/form/admin_settings.rb index 3a7150916..1e6061277 100644 --- a/app/models/form/admin_settings.rb +++ b/app/models/form/admin_settings.rb @@ -67,7 +67,7 @@ class Form::AdminSettings validates :bootstrap_timeline_accounts, existing_username: { multiple: true } validates :show_domain_blocks, inclusion: { in: %w(disabled users all) } validates :show_domain_blocks_rationale, inclusion: { in: %w(disabled users all) } - validates :media_cache_retention_period, :content_cache_retention_period, :backups_retention_period, numericality: { only_integer: true } + validates :media_cache_retention_period, :content_cache_retention_period, :backups_retention_period, numericality: { only_integer: true }, allow_blank: true def initialize(_attributes = {}) super From 43b5d5e38d2b8ad8f1d1ad0911c3c1718159c912 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 29 Sep 2022 04:39:33 +0200 Subject: [PATCH 429/652] Add logged-out access to the web UI (#18961) --- app/controllers/home_controller.rb | 18 ++-- app/javascript/mastodon/actions/accounts.js | 6 +- app/javascript/mastodon/actions/markers.js | 10 ++- app/javascript/mastodon/components/logo.js | 4 +- .../mastodon/containers/mastodon.js | 2 +- .../features/account/components/header.js | 30 +++++-- .../features/community_timeline/index.js | 6 ++ .../mastodon/features/directory/index.js | 6 ++ .../mastodon/features/explore/index.js | 6 ++ .../mastodon/features/explore/links.js | 11 +++ .../mastodon/features/explore/results.js | 18 +++- .../mastodon/features/explore/suggestions.js | 11 +++ .../mastodon/features/explore/tags.js | 11 +++ .../features/hashtag_timeline/index.js | 18 +++- .../features/public_timeline/index.js | 6 ++ .../mastodon/features/status/index.js | 24 +++++- .../features/ui/components/columns_area.js | 4 +- .../features/ui/components/compose_panel.js | 22 ++++- .../features/ui/components/document_title.js | 41 --------- .../features/ui/components/link_footer.js | 46 +++++++--- .../ui/components/navigation_panel.js | 83 ++++++++++++++----- .../features/ui/components/sign_in_banner.js | 11 +++ app/javascript/mastodon/features/ui/index.js | 43 ++++++++-- app/javascript/mastodon/initial_state.js | 2 + app/javascript/styles/mastodon/_mixins.scss | 1 + .../styles/mastodon/components.scss | 56 ++++++++++++- app/lib/permalink_redirector.rb | 4 - app/serializers/initial_state_serializer.rb | 11 ++- app/views/home/index.html.haml | 12 ++- package.json | 1 + spec/controllers/home_controller_spec.rb | 20 ++--- spec/lib/permalink_redirector_spec.rb | 4 +- yarn.lock | 20 +++++ 33 files changed, 423 insertions(+), 145 deletions(-) delete mode 100644 app/javascript/mastodon/features/ui/components/document_title.js create mode 100644 app/javascript/mastodon/features/ui/components/sign_in_banner.js diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb index 7e443eb9e..29478209d 100644 --- a/app/controllers/home_controller.rb +++ b/app/controllers/home_controller.rb @@ -2,8 +2,8 @@ class HomeController < ApplicationController before_action :redirect_unauthenticated_to_permalinks! - before_action :authenticate_user! before_action :set_referrer_policy_header + before_action :set_instance_presenter def index @body_classes = 'app-body' @@ -14,20 +14,16 @@ class HomeController < ApplicationController def redirect_unauthenticated_to_permalinks! return if user_signed_in? - redirect_to(PermalinkRedirector.new(request.path).redirect_path || default_redirect_path) - end + redirect_path = PermalinkRedirector.new(request.path).redirect_path - def default_redirect_path - if request.path.start_with?('/web') || whitelist_mode? - new_user_session_path - elsif single_user_mode? - short_account_path(Account.local.without_suspended.where('id > 0').first) - else - about_path - end + redirect_to(redirect_path) if redirect_path.present? end def set_referrer_policy_header response.headers['Referrer-Policy'] = 'origin' end + + def set_instance_presenter + @instance_presenter = InstancePresenter.new + end end diff --git a/app/javascript/mastodon/actions/accounts.js b/app/javascript/mastodon/actions/accounts.js index eedf61dc9..f61f06e40 100644 --- a/app/javascript/mastodon/actions/accounts.js +++ b/app/javascript/mastodon/actions/accounts.js @@ -536,10 +536,12 @@ export function expandFollowingFail(id, error) { export function fetchRelationships(accountIds) { return (dispatch, getState) => { - const loadedRelationships = getState().get('relationships'); + const state = getState(); + const loadedRelationships = state.get('relationships'); const newAccountIds = accountIds.filter(id => loadedRelationships.get(id, null) === null); + const signedIn = !!state.getIn(['meta', 'me']); - if (newAccountIds.length === 0) { + if (!signedIn || newAccountIds.length === 0) { return; } diff --git a/app/javascript/mastodon/actions/markers.js b/app/javascript/mastodon/actions/markers.js index 16a3df8f6..b7f406cb8 100644 --- a/app/javascript/mastodon/actions/markers.js +++ b/app/javascript/mastodon/actions/markers.js @@ -1,6 +1,7 @@ import api from '../api'; import { debounce } from 'lodash'; import compareId from '../compare_id'; +import { List as ImmutableList } from 'immutable'; export const MARKERS_FETCH_REQUEST = 'MARKERS_FETCH_REQUEST'; export const MARKERS_FETCH_SUCCESS = 'MARKERS_FETCH_SUCCESS'; @@ -11,7 +12,7 @@ export const synchronouslySubmitMarkers = () => (dispatch, getState) => { const accessToken = getState().getIn(['meta', 'access_token'], ''); const params = _buildParams(getState()); - if (Object.keys(params).length === 0) { + if (Object.keys(params).length === 0 || accessToken === '') { return; } @@ -63,7 +64,7 @@ export const synchronouslySubmitMarkers = () => (dispatch, getState) => { const _buildParams = (state) => { const params = {}; - const lastHomeId = state.getIn(['timelines', 'home', 'items']).find(item => item !== null); + const lastHomeId = state.getIn(['timelines', 'home', 'items'], ImmutableList()).find(item => item !== null); const lastNotificationId = state.getIn(['notifications', 'lastReadId']); if (lastHomeId && compareId(lastHomeId, state.getIn(['markers', 'home'])) > 0) { @@ -82,9 +83,10 @@ const _buildParams = (state) => { }; const debouncedSubmitMarkers = debounce((dispatch, getState) => { - const params = _buildParams(getState()); + const accessToken = getState().getIn(['meta', 'access_token'], ''); + const params = _buildParams(getState()); - if (Object.keys(params).length === 0) { + if (Object.keys(params).length === 0 || accessToken === '') { return; } diff --git a/app/javascript/mastodon/components/logo.js b/app/javascript/mastodon/components/logo.js index d1c7f08a9..3570b3644 100644 --- a/app/javascript/mastodon/components/logo.js +++ b/app/javascript/mastodon/components/logo.js @@ -1,8 +1,8 @@ import React from 'react'; const Logo = () => ( - - + + ); diff --git a/app/javascript/mastodon/containers/mastodon.js b/app/javascript/mastodon/containers/mastodon.js index f4bef4686..08241522c 100644 --- a/app/javascript/mastodon/containers/mastodon.js +++ b/app/javascript/mastodon/containers/mastodon.js @@ -26,7 +26,7 @@ const createIdentityContext = state => ({ signedIn: !!state.meta.me, accountId: state.meta.me, accessToken: state.meta.access_token, - permissions: state.role.permissions, + permissions: state.role ? state.role.permissions : 0, }); export default class Mastodon extends React.PureComponent { diff --git a/app/javascript/mastodon/features/account/components/header.js b/app/javascript/mastodon/features/account/components/header.js index 8f2753c35..e407a0d55 100644 --- a/app/javascript/mastodon/features/account/components/header.js +++ b/app/javascript/mastodon/features/account/components/header.js @@ -4,7 +4,7 @@ import PropTypes from 'prop-types'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import Button from 'mastodon/components/button'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { autoPlayGif, me } from 'mastodon/initial_state'; +import { autoPlayGif, me, title, domain } from 'mastodon/initial_state'; import classNames from 'classnames'; import Icon from 'mastodon/components/icon'; import IconButton from 'mastodon/components/icon_button'; @@ -15,6 +15,7 @@ import { NavLink } from 'react-router-dom'; import DropdownMenuContainer from 'mastodon/containers/dropdown_menu_container'; import AccountNoteContainer from '../containers/account_note_container'; import { PERMISSION_MANAGE_USERS } from 'mastodon/permissions'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' }, @@ -54,6 +55,14 @@ const messages = defineMessages({ languages: { id: 'account.languages', defaultMessage: 'Change subscribed languages' }, }); +const titleFromAccount = account => { + const displayName = account.get('display_name'); + const acct = account.get('acct') === account.get('username') ? `${account.get('username')}@${domain}` : account.get('acct'); + const prefix = displayName.trim().length === 0 ? account.get('username') : displayName; + + return `${prefix} (@${acct})`; +}; + const dateFormatOptions = { month: 'short', day: 'numeric', @@ -132,6 +141,7 @@ class Header extends ImmutablePureComponent { render () { const { account, hidden, intl, domain } = this.props; + const { signedIn } = this.context.identity; if (!account) { return null; @@ -162,12 +172,12 @@ class Header extends ImmutablePureComponent { } if (me !== account.get('id')) { - if (!account.get('relationship')) { // Wait until the relationship is loaded + if (signedIn && !account.get('relationship')) { // Wait until the relationship is loaded actionBtn = ''; } else if (account.getIn(['relationship', 'requested'])) { actionBtn = ; } else if (!account.getIn(['relationship', 'blocking'])) { - actionBtn = ; + actionBtn = ; } else if (account.getIn(['relationship', 'blocking'])) { actionBtn = ; } @@ -183,7 +193,7 @@ class Header extends ImmutablePureComponent { lockedIcon = ; } - if (account.get('id') !== me) { + if (signedIn && account.get('id') !== me) { menu.push({ text: intl.formatMessage(messages.mention, { name: account.get('username') }), action: this.props.onMention }); menu.push({ text: intl.formatMessage(messages.direct, { name: account.get('username') }), action: this.props.onDirect }); menu.push(null); @@ -206,7 +216,7 @@ class Header extends ImmutablePureComponent { menu.push({ text: intl.formatMessage(messages.mutes), to: '/mutes' }); menu.push({ text: intl.formatMessage(messages.blocks), to: '/blocks' }); menu.push({ text: intl.formatMessage(messages.domain_blocks), to: '/domain_blocks' }); - } else { + } else if (signedIn) { if (account.getIn(['relationship', 'following'])) { if (!account.getIn(['relationship', 'muting'])) { if (account.getIn(['relationship', 'showing_reblogs'])) { @@ -239,7 +249,7 @@ class Header extends ImmutablePureComponent { menu.push({ text: intl.formatMessage(messages.report, { name: account.get('username') }), action: this.props.onReport }); } - if (account.get('acct') !== account.get('username')) { + if (signedIn && account.get('acct') !== account.get('username')) { const domain = account.get('acct').split('@')[1]; menu.push(null); @@ -298,7 +308,7 @@ class Header extends ImmutablePureComponent { )} - +
    )}
    @@ -327,7 +337,7 @@ class Header extends ImmutablePureComponent {
    )} - {account.get('id') !== me && } + {(account.get('id') !== me && signedIn) && } {account.get('note').length > 0 && account.get('note') !== '

    ' &&
    } @@ -359,6 +369,10 @@ class Header extends ImmutablePureComponent {
    )}
    + + + {titleFromAccount(account)} - {title} +
diff --git a/app/javascript/mastodon/features/explore/links.js b/app/javascript/mastodon/features/explore/links.js index 6649fb6e4..d3aaa9cdd 100644 --- a/app/javascript/mastodon/features/explore/links.js +++ b/app/javascript/mastodon/features/explore/links.js @@ -5,6 +5,7 @@ import Story from './components/story'; import LoadingIndicator from 'mastodon/components/loading_indicator'; import { connect } from 'react-redux'; import { fetchTrendingLinks } from 'mastodon/actions/trends'; +import { FormattedMessage } from 'react-intl'; const mapStateToProps = state => ({ links: state.getIn(['trends', 'links', 'items']), @@ -28,6 +29,16 @@ class Links extends React.PureComponent { render () { const { isLoading, links } = this.props; + if (!isLoading && links.isEmpty()) { + return ( +
+
+ +
+
+ ); + } + return (
{isLoading ? () : links.map(link => ( diff --git a/app/javascript/mastodon/features/explore/results.js b/app/javascript/mastodon/features/explore/results.js index 1286020f5..0dc108918 100644 --- a/app/javascript/mastodon/features/explore/results.js +++ b/app/javascript/mastodon/features/explore/results.js @@ -1,7 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import { FormattedMessage } from 'react-intl'; +import { injectIntl, defineMessages, FormattedMessage } from 'react-intl'; import { connect } from 'react-redux'; import { expandSearch } from 'mastodon/actions/search'; import Account from 'mastodon/containers/account_container'; @@ -10,10 +10,17 @@ import { ImmutableHashtag as Hashtag } from 'mastodon/components/hashtag'; import { List as ImmutableList } from 'immutable'; import LoadMore from 'mastodon/components/load_more'; import LoadingIndicator from 'mastodon/components/loading_indicator'; +import { title } from 'mastodon/initial_state'; +import { Helmet } from 'react-helmet'; + +const messages = defineMessages({ + title: { id: 'search_results.title', defaultMessage: 'Search for {q}' }, +}); const mapStateToProps = state => ({ isLoading: state.getIn(['search', 'isLoading']), results: state.getIn(['search', 'results']), + q: state.getIn(['search', 'searchTerm']), }); const appendLoadMore = (id, list, onLoadMore) => { @@ -37,6 +44,7 @@ const renderStatuses = (results, onLoadMore) => appendLoadMore('statuses', resul )), onLoadMore); export default @connect(mapStateToProps) +@injectIntl class Results extends React.PureComponent { static propTypes = { @@ -44,6 +52,8 @@ class Results extends React.PureComponent { isLoading: PropTypes.bool, multiColumn: PropTypes.bool, dispatch: PropTypes.func.isRequired, + q: PropTypes.string, + intl: PropTypes.object, }; state = { @@ -64,7 +74,7 @@ class Results extends React.PureComponent { } render () { - const { isLoading, results } = this.props; + const { intl, isLoading, q, results } = this.props; const { type } = this.state; let filteredResults = ImmutableList(); @@ -106,6 +116,10 @@ class Results extends React.PureComponent {
{isLoading ? : filteredResults}
+ + + {intl.formatMessage(messages.title, { q })} - {title} + ); } diff --git a/app/javascript/mastodon/features/explore/suggestions.js b/app/javascript/mastodon/features/explore/suggestions.js index 0c6a7ef8a..e6ad09974 100644 --- a/app/javascript/mastodon/features/explore/suggestions.js +++ b/app/javascript/mastodon/features/explore/suggestions.js @@ -5,6 +5,7 @@ import AccountCard from 'mastodon/features/directory/components/account_card'; import LoadingIndicator from 'mastodon/components/loading_indicator'; import { connect } from 'react-redux'; import { fetchSuggestions } from 'mastodon/actions/suggestions'; +import { FormattedMessage } from 'react-intl'; const mapStateToProps = state => ({ suggestions: state.getIn(['suggestions', 'items']), @@ -28,6 +29,16 @@ class Suggestions extends React.PureComponent { render () { const { isLoading, suggestions } = this.props; + if (!isLoading && suggestions.isEmpty()) { + return ( +
+
+ +
+
+ ); + } + return (
{isLoading ? : suggestions.map(suggestion => ( diff --git a/app/javascript/mastodon/features/explore/tags.js b/app/javascript/mastodon/features/explore/tags.js index c0ad9fc6e..6cd3a6fb1 100644 --- a/app/javascript/mastodon/features/explore/tags.js +++ b/app/javascript/mastodon/features/explore/tags.js @@ -5,6 +5,7 @@ import { ImmutableHashtag as Hashtag } from 'mastodon/components/hashtag'; import LoadingIndicator from 'mastodon/components/loading_indicator'; import { connect } from 'react-redux'; import { fetchTrendingHashtags } from 'mastodon/actions/trends'; +import { FormattedMessage } from 'react-intl'; const mapStateToProps = state => ({ hashtags: state.getIn(['trends', 'tags', 'items']), @@ -28,6 +29,16 @@ class Tags extends React.PureComponent { render () { const { isLoading, hashtags } = this.props; + if (!isLoading && hashtags.isEmpty()) { + return ( +
+
+ +
+
+ ); + } + return (
{isLoading ? () : hashtags.map(hashtag => ( diff --git a/app/javascript/mastodon/features/hashtag_timeline/index.js b/app/javascript/mastodon/features/hashtag_timeline/index.js index dc8a61640..7069e0341 100644 --- a/app/javascript/mastodon/features/hashtag_timeline/index.js +++ b/app/javascript/mastodon/features/hashtag_timeline/index.js @@ -14,6 +14,8 @@ import { isEqual } from 'lodash'; import { fetchHashtag, followHashtag, unfollowHashtag } from 'mastodon/actions/tags'; import Icon from 'mastodon/components/icon'; import classNames from 'classnames'; +import { title } from 'mastodon/initial_state'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ followHashtag: { id: 'hashtag.follow', defaultMessage: 'Follow hashtag' }, @@ -31,6 +33,10 @@ class HashtagTimeline extends React.PureComponent { disconnects = []; + static contextTypes = { + identity: PropTypes.object, + }; + static propTypes = { params: PropTypes.object.isRequired, columnId: PropTypes.string, @@ -158,6 +164,11 @@ class HashtagTimeline extends React.PureComponent { handleFollow = () => { const { dispatch, params, tag } = this.props; const { id } = params; + const { signedIn } = this.context.identity; + + if (!signedIn) { + return; + } if (tag.get('following')) { dispatch(unfollowHashtag(id)); @@ -170,6 +181,7 @@ class HashtagTimeline extends React.PureComponent { const { hasUnread, columnId, multiColumn, tag, intl } = this.props; const { id, local } = this.props.params; const pinned = !!columnId; + const { signedIn } = this.context.identity; let followButton; @@ -177,7 +189,7 @@ class HashtagTimeline extends React.PureComponent { const following = tag.get('following'); followButton = ( - ); @@ -208,6 +220,10 @@ class HashtagTimeline extends React.PureComponent { emptyMessage={} bindToDocument={!multiColumn} /> + + + {`#${id}`} - {title} + ); } diff --git a/app/javascript/mastodon/features/public_timeline/index.js b/app/javascript/mastodon/features/public_timeline/index.js index b1d5518af..2f926678c 100644 --- a/app/javascript/mastodon/features/public_timeline/index.js +++ b/app/javascript/mastodon/features/public_timeline/index.js @@ -9,6 +9,8 @@ import { expandPublicTimeline } from '../../actions/timelines'; import { addColumn, removeColumn, moveColumn } from '../../actions/columns'; import ColumnSettingsContainer from './containers/column_settings_container'; import { connectPublicStream } from '../../actions/streaming'; +import { Helmet } from 'react-helmet'; +import { title } from 'mastodon/initial_state'; const messages = defineMessages({ title: { id: 'column.public', defaultMessage: 'Federated timeline' }, @@ -131,6 +133,10 @@ class PublicTimeline extends React.PureComponent { emptyMessage={} bindToDocument={!multiColumn} /> + + + {intl.formatMessage(messages.title)} - {title} + ); } diff --git a/app/javascript/mastodon/features/status/index.js b/app/javascript/mastodon/features/status/index.js index 5ff7e060e..748dc7a92 100644 --- a/app/javascript/mastodon/features/status/index.js +++ b/app/javascript/mastodon/features/status/index.js @@ -56,10 +56,11 @@ import { openModal } from '../../actions/modal'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { HotKeys } from 'react-hotkeys'; -import { boostModal, deleteModal } from '../../initial_state'; +import { boostModal, deleteModal, title } from '../../initial_state'; import { attachFullscreenListener, detachFullscreenListener, isFullscreen } from '../ui/util/fullscreen'; import { textForScreenReader, defaultMediaVisibility } from '../../components/status'; import Icon from 'mastodon/components/icon'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ deleteConfirm: { id: 'confirmations.delete.confirm', defaultMessage: 'Delete' }, @@ -156,6 +157,23 @@ const makeMapStateToProps = () => { return mapStateToProps; }; +const truncate = (str, num) => { + if (str.length > num) { + return str.slice(0, num) + '…'; + } else { + return str; + } +}; + +const titleFromStatus = status => { + const displayName = status.getIn(['account', 'display_name']); + const username = status.getIn(['account', 'username']); + const prefix = displayName.trim().length === 0 ? username : displayName; + const text = status.get('search_index'); + + return `${prefix}: "${truncate(text, 30)}"`; +}; + export default @injectIntl @connect(makeMapStateToProps) class Status extends ImmutablePureComponent { @@ -605,6 +623,10 @@ class Status extends ImmutablePureComponent { {descendants}
+ + + {titleFromStatus(status)} - {title} + ); } diff --git a/app/javascript/mastodon/features/ui/components/columns_area.js b/app/javascript/mastodon/features/ui/components/columns_area.js index 68017a5f1..83e10e003 100644 --- a/app/javascript/mastodon/features/ui/components/columns_area.js +++ b/app/javascript/mastodon/features/ui/components/columns_area.js @@ -60,6 +60,7 @@ class ColumnsArea extends ImmutablePureComponent { static contextTypes = { router: PropTypes.object.isRequired, + identity: PropTypes.object.isRequired, }; static propTypes = { @@ -212,11 +213,12 @@ class ColumnsArea extends ImmutablePureComponent { render () { const { columns, children, singleColumn, isModalOpen, intl } = this.props; const { shouldAnimate, renderComposePanel } = this.state; + const { signedIn } = this.context.identity; const columnIndex = getIndex(this.context.router.history.location.pathname); if (singleColumn) { - const floatingActionButton = shouldHideFAB(this.context.router.history.location.pathname) ? null : ; + const floatingActionButton = (!signedIn || shouldHideFAB(this.context.router.history.location.pathname)) ? null : ; const content = columnIndex !== -1 ? ( diff --git a/app/javascript/mastodon/features/ui/components/compose_panel.js b/app/javascript/mastodon/features/ui/components/compose_panel.js index 3d0c48c7a..1c128188f 100644 --- a/app/javascript/mastodon/features/ui/components/compose_panel.js +++ b/app/javascript/mastodon/features/ui/components/compose_panel.js @@ -10,6 +10,10 @@ import { changeComposing } from 'mastodon/actions/compose'; export default @connect() class ComposePanel extends React.PureComponent { + static contextTypes = { + identity: PropTypes.object.isRequired, + }; + static propTypes = { dispatch: PropTypes.func.isRequired, }; @@ -23,11 +27,25 @@ class ComposePanel extends React.PureComponent { } render() { + const { signedIn } = this.context.identity; + return (
- - + + {!signedIn && ( + +
+ + )} + + {signedIn && ( + + + + + )} +
); diff --git a/app/javascript/mastodon/features/ui/components/document_title.js b/app/javascript/mastodon/features/ui/components/document_title.js deleted file mode 100644 index cd081b20c..000000000 --- a/app/javascript/mastodon/features/ui/components/document_title.js +++ /dev/null @@ -1,41 +0,0 @@ -import { PureComponent } from 'react'; -import { connect } from 'react-redux'; -import PropTypes from 'prop-types'; -import { title } from 'mastodon/initial_state'; - -const mapStateToProps = state => ({ - unread: state.getIn(['missed_updates', 'unread']), -}); - -export default @connect(mapStateToProps) -class DocumentTitle extends PureComponent { - - static propTypes = { - unread: PropTypes.number.isRequired, - }; - - componentDidMount () { - this._sideEffects(); - } - - componentDidUpdate() { - this._sideEffects(); - } - - _sideEffects () { - const { unread } = this.props; - - if (unread > 99) { - document.title = `(*) ${title}`; - } else if (unread > 0) { - document.title = `(${unread}) ${title}`; - } else { - document.title = title; - } - } - - render () { - return null; - } - -} diff --git a/app/javascript/mastodon/features/ui/components/link_footer.js b/app/javascript/mastodon/features/ui/components/link_footer.js index bbb9b122a..95cd6cf8e 100644 --- a/app/javascript/mastodon/features/ui/components/link_footer.js +++ b/app/javascript/mastodon/features/ui/components/link_footer.js @@ -49,20 +49,46 @@ class LinkFooter extends React.PureComponent { render () { const { withHotkeys } = this.props; + const { signedIn, permissions } = this.context.identity; + const items = []; + + if ((permissions & PERMISSION_INVITE_USERS) === PERMISSION_INVITE_USERS) { + items.push(); + } + + if (withHotkeys) { + items.push(); + } + + if (signedIn) { + items.push(); + } + + if (!limitedFederationMode) { + items.push(); + } + + if (profileDirectory) { + items.push(); + } + + items.push(); + items.push(); + + if (signedIn) { + items.push(); + } + + items.push(); + + if (signedIn) { + items.push(); + } return (
    - {((this.context.identity.permissions & PERMISSION_INVITE_USERS) === PERMISSION_INVITE_USERS) &&
  • ·
  • } - {withHotkeys &&
  • ·
  • } -
  • ·
  • - {!limitedFederationMode &&
  • ·
  • } - {profileDirectory &&
  • ·
  • } -
  • ·
  • -
  • ·
  • -
  • ·
  • -
  • ·
  • -
  • +
  • {items.reduce((prev, curr) => [prev, ' · ', curr])}

diff --git a/app/javascript/mastodon/features/ui/components/navigation_panel.js b/app/javascript/mastodon/features/ui/components/navigation_panel.js index fe4ed5d77..00ae04761 100644 --- a/app/javascript/mastodon/features/ui/components/navigation_panel.js +++ b/app/javascript/mastodon/features/ui/components/navigation_panel.js @@ -1,5 +1,6 @@ import React from 'react'; -import { NavLink, withRouter } from 'react-router-dom'; +import PropTypes from 'prop-types'; +import { NavLink, Link } from 'react-router-dom'; import { FormattedMessage } from 'react-intl'; import Icon from 'mastodon/components/icon'; import { showTrends } from 'mastodon/initial_state'; @@ -7,30 +8,68 @@ import NotificationsCounterIcon from './notifications_counter_icon'; import FollowRequestsNavLink from './follow_requests_nav_link'; import ListPanel from './list_panel'; import TrendsContainer from 'mastodon/features/getting_started/containers/trends_container'; +import Logo from 'mastodon/components/logo'; +import SignInBanner from './sign_in_banner'; -const NavigationPanel = () => ( -

- - - - - - - - - - +export default class NavigationPanel extends React.Component { - + static contextTypes = { + router: PropTypes.object.isRequired, + identity: PropTypes.object.isRequired, + }; -
+ render () { + const { signedIn } = this.context.identity; - - + return ( +
+ - {showTrends &&
} - {showTrends && } -
-); +
-export default withRouter(NavigationPanel); + {signedIn && ( + + + + + + )} + + + + + + {!signedIn && ( + +
+ +
+ )} + + {signedIn && ( + + + + + + + + +
+ + + +
+ )} + + {showTrends && ( + +
+ + + )} +
+ ); + } + +} diff --git a/app/javascript/mastodon/features/ui/components/sign_in_banner.js b/app/javascript/mastodon/features/ui/components/sign_in_banner.js new file mode 100644 index 000000000..c8403a8ad --- /dev/null +++ b/app/javascript/mastodon/features/ui/components/sign_in_banner.js @@ -0,0 +1,11 @@ +import React from 'react'; +import { FormattedMessage } from 'react-intl'; + +const SignInBanner = () => ( +
+

+ +
+); + +export default SignInBanner; diff --git a/app/javascript/mastodon/features/ui/index.js b/app/javascript/mastodon/features/ui/index.js index 9a901f12a..5825db1e4 100644 --- a/app/javascript/mastodon/features/ui/index.js +++ b/app/javascript/mastodon/features/ui/index.js @@ -20,7 +20,6 @@ import { synchronouslySubmitMarkers, submitMarkers, fetchMarkers } from 'mastodo import { WrappedSwitch, WrappedRoute } from './util/react_router_helpers'; import UploadArea from './components/upload_area'; import ColumnsAreaContainer from './containers/columns_area_container'; -import DocumentTitle from './components/document_title'; import PictureInPicture from 'mastodon/features/picture_in_picture'; import { Compose, @@ -53,8 +52,9 @@ import { Explore, FollowRecommendations, } from './util/async-components'; -import { me } from '../../initial_state'; +import { me, title } from '../../initial_state'; import { closeOnboarding, INTRODUCTION_VERSION } from 'mastodon/actions/onboarding'; +import { Helmet } from 'react-helmet'; // Dummy import, to make sure that ends up in the application bundle. // Without this it ends up in ~8 very commonly used bundles. @@ -110,6 +110,10 @@ const keyMap = { class SwitchingColumnsArea extends React.PureComponent { + static contextTypes = { + identity: PropTypes.object, + }; + static propTypes = { children: PropTypes.node, location: PropTypes.object, @@ -145,12 +149,25 @@ class SwitchingColumnsArea extends React.PureComponent { render () { const { children, mobile } = this.props; - const redirect = mobile ? : ; + const { signedIn } = this.context.identity; + + let redirect; + + if (signedIn) { + if (mobile) { + redirect = ; + } else { + redirect = ; + } + } else { + redirect = ; + } return ( {redirect} + @@ -208,6 +225,7 @@ class UI extends React.PureComponent { static contextTypes = { router: PropTypes.object.isRequired, + identity: PropTypes.object.isRequired, }; static propTypes = { @@ -343,6 +361,8 @@ class UI extends React.PureComponent { } componentDidMount () { + const { signedIn } = this.context.identity; + window.addEventListener('focus', this.handleWindowFocus, false); window.addEventListener('blur', this.handleWindowBlur, false); window.addEventListener('beforeunload', this.handleBeforeUnload, false); @@ -359,16 +379,18 @@ class UI extends React.PureComponent { } // On first launch, redirect to the follow recommendations page - if (this.props.firstLaunch) { + if (signedIn && this.props.firstLaunch) { this.context.router.history.replace('/start'); this.props.dispatch(closeOnboarding()); } - this.props.dispatch(fetchMarkers()); - this.props.dispatch(expandHomeTimeline()); - this.props.dispatch(expandNotifications()); + if (signedIn) { + this.props.dispatch(fetchMarkers()); + this.props.dispatch(expandHomeTimeline()); + this.props.dispatch(expandNotifications()); - setTimeout(() => this.props.dispatch(fetchRules()), 3000); + setTimeout(() => this.props.dispatch(fetchRules()), 3000); + } this.hotkeys.__mousetrap__.stopCallback = (e, element) => { return ['TEXTAREA', 'SELECT', 'INPUT'].includes(element.tagName); @@ -546,7 +568,10 @@ class UI extends React.PureComponent { - + + + {title} +
); diff --git a/app/javascript/mastodon/initial_state.js b/app/javascript/mastodon/initial_state.js index 709975270..9cc75b6cb 100644 --- a/app/javascript/mastodon/initial_state.js +++ b/app/javascript/mastodon/initial_state.js @@ -3,6 +3,7 @@ const initialState = element && JSON.parse(element.textContent); const getMeta = (prop) => initialState && initialState.meta && initialState.meta[prop]; +export const domain = getMeta('domain'); export const reduceMotion = getMeta('reduce_motion'); export const autoPlayGif = getMeta('auto_play_gif'); export const displayMedia = getMeta('display_media'); @@ -26,5 +27,6 @@ export const title = getMeta('title'); export const cropImages = getMeta('crop_images'); export const disableSwiping = getMeta('disable_swiping'); export const languages = initialState && initialState.languages; +export const server = initialState && initialState.server; export default initialState; diff --git a/app/javascript/styles/mastodon/_mixins.scss b/app/javascript/styles/mastodon/_mixins.scss index 68cad0fde..dcfab6bd0 100644 --- a/app/javascript/styles/mastodon/_mixins.scss +++ b/app/javascript/styles/mastodon/_mixins.scss @@ -20,6 +20,7 @@ font-family: inherit; background: $ui-base-color; color: $darker-text-color; + border-radius: 4px; font-size: 14px; margin: 0; } diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index f5377a858..1f1a5a5ca 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -126,6 +126,7 @@ &:hover { border-color: lighten($ui-primary-color, 4%); color: lighten($darker-text-color, 4%); + text-decoration: none; } &:disabled { @@ -700,6 +701,15 @@ transition: height 0.4s ease, opacity 0.4s ease; } +.sign-in-banner { + padding: 10px; + + p { + color: $darker-text-color; + margin-bottom: 20px; + } +} + .emojione { font-size: inherit; vertical-align: middle; @@ -2214,6 +2224,7 @@ a.account__display-name { > .scrollable { background: $ui-base-color; + border-radius: 0 0 4px 4px; } } @@ -2660,6 +2671,26 @@ a.account__display-name { height: calc(100% - 10px); overflow-y: hidden; + .hero-widget { + box-shadow: none; + + &__text, + &__img, + &__img img { + border-radius: 0; + } + + &__text { + padding: 15px; + color: $secondary-text-color; + + strong { + font-weight: 700; + color: $primary-text-color; + } + } + } + .navigation-bar { padding-top: 20px; padding-bottom: 20px; @@ -2667,10 +2698,6 @@ a.account__display-name { min-height: 20px; } - .flex-spacer { - background: transparent; - } - .compose-form { flex: 1; overflow-y: hidden; @@ -2709,6 +2736,14 @@ a.account__display-name { flex: 0 0 auto; } + .logo { + height: 30px; + width: auto; + } +} + +.navigation-panel, +.compose-panel { hr { flex: 0 0 auto; border: 0; @@ -2836,6 +2871,7 @@ a.account__display-name { box-sizing: border-box; width: 100%; background: lighten($ui-base-color, 4%); + border-radius: 4px 4px 0 0; color: $highlight-text-color; cursor: pointer; flex: 0 0 auto; @@ -3031,6 +3067,17 @@ a.account__display-name { color: $highlight-text-color; } } + + &--logo { + background: transparent; + padding: 10px; + + &:hover, + &:focus, + &:active { + background: transparent; + } + } } .column-link__icon { @@ -3551,6 +3598,7 @@ a.status-card.compact:hover { display: flex; font-size: 16px; background: lighten($ui-base-color, 4%); + border-radius: 4px 4px 0 0; flex: 0 0 auto; cursor: pointer; position: relative; diff --git a/app/lib/permalink_redirector.rb b/app/lib/permalink_redirector.rb index e48bce060..6d15f3963 100644 --- a/app/lib/permalink_redirector.rb +++ b/app/lib/permalink_redirector.rb @@ -17,10 +17,6 @@ class PermalinkRedirector find_status_url_by_id(path_segments[2]) elsif path_segments[1] == 'accounts' && path_segments[2] =~ /\d/ find_account_url_by_id(path_segments[2]) - elsif path_segments[1] == 'timelines' && path_segments[2] == 'tag' && path_segments[3].present? - find_tag_url_by_name(path_segments[3]) - elsif path_segments[1] == 'tags' && path_segments[2].present? - find_tag_url_by_name(path_segments[2]) end end end diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb index 5eda87757..df076ffc6 100644 --- a/app/serializers/initial_state_serializer.rb +++ b/app/serializers/initial_state_serializer.rb @@ -1,9 +1,11 @@ # frozen_string_literal: true class InitialStateSerializer < ActiveModel::Serializer + include RoutingHelper + attributes :meta, :compose, :accounts, :media_attachments, :settings, - :languages + :languages, :server has_one :push_subscription, serializer: REST::WebPushSubscriptionSerializer has_one :role, serializer: REST::RoleSerializer @@ -82,6 +84,13 @@ class InitialStateSerializer < ActiveModel::Serializer LanguagesHelper::SUPPORTED_LOCALES.map { |(key, value)| [key, value[0], value[1]] } end + def server + { + hero: instance_presenter.hero&.file&.url || instance_presenter.thumbnail&.file&.url || asset_pack_path('media/images/preview.png'), + description: instance_presenter.site_short_description.presence || I18n.t('about.about_mastodon_html'), + } + end + private def instance_presenter diff --git a/app/views/home/index.html.haml b/app/views/home/index.html.haml index 3d6283fba..19c5191d8 100644 --- a/app/views/home/index.html.haml +++ b/app/views/home/index.html.haml @@ -1,10 +1,14 @@ - content_for :header_tags do - = preload_pack_asset 'features/getting_started.js', crossorigin: 'anonymous' - = preload_pack_asset 'features/compose.js', crossorigin: 'anonymous' - = preload_pack_asset 'features/home_timeline.js', crossorigin: 'anonymous' - = preload_pack_asset 'features/notifications.js', crossorigin: 'anonymous' + - if user_signed_in? + = preload_pack_asset 'features/getting_started.js', crossorigin: 'anonymous' + = preload_pack_asset 'features/compose.js', crossorigin: 'anonymous' + = preload_pack_asset 'features/home_timeline.js', crossorigin: 'anonymous' + = preload_pack_asset 'features/notifications.js', crossorigin: 'anonymous' + + = render partial: 'shared/og' %meta{name: 'applicationServerKey', content: Rails.configuration.x.vapid_public_key} + = render_initial_state = javascript_pack_tag 'application', crossorigin: 'anonymous' diff --git a/package.json b/package.json index ca1786038..bef027d26 100644 --- a/package.json +++ b/package.json @@ -92,6 +92,7 @@ "punycode": "^2.1.0", "react": "^16.14.0", "react-dom": "^16.14.0", + "react-helmet": "^6.1.0", "react-hotkeys": "^1.1.4", "react-immutable-proptypes": "^2.2.0", "react-immutable-pure-component": "^2.2.2", diff --git a/spec/controllers/home_controller_spec.rb b/spec/controllers/home_controller_spec.rb index 70c5c42c5..d845ae01d 100644 --- a/spec/controllers/home_controller_spec.rb +++ b/spec/controllers/home_controller_spec.rb @@ -7,27 +7,21 @@ RSpec.describe HomeController, type: :controller do subject { get :index } context 'when not signed in' do - context 'when requested path is tag timeline' do - it 'redirects to the tag\'s permalink' do - @request.path = '/web/timelines/tag/name' - is_expected.to redirect_to '/tags/name' - end - end - - it 'redirects to about page' do + it 'returns http success' do @request.path = '/' - is_expected.to redirect_to(about_path) + is_expected.to have_http_status(:success) end end context 'when signed in' do let(:user) { Fabricate(:user) } - before { sign_in(user) } + before do + sign_in(user) + end - it 'assigns @body_classes' do - subject - expect(assigns(:body_classes)).to eq 'app-body' + it 'returns http success' do + is_expected.to have_http_status(:success) end end end diff --git a/spec/lib/permalink_redirector_spec.rb b/spec/lib/permalink_redirector_spec.rb index b916b33b2..abda57da4 100644 --- a/spec/lib/permalink_redirector_spec.rb +++ b/spec/lib/permalink_redirector_spec.rb @@ -21,7 +21,7 @@ describe PermalinkRedirector do it 'returns path for legacy tag links' do redirector = described_class.new('web/timelines/tag/hoge') - expect(redirector.redirect_path).to eq '/tags/hoge' + expect(redirector.redirect_path).to be_nil end it 'returns path for pretty account links' do @@ -36,7 +36,7 @@ describe PermalinkRedirector do it 'returns path for pretty tag links' do redirector = described_class.new('web/tags/hoge') - expect(redirector.redirect_path).to eq '/tags/hoge' + expect(redirector.redirect_path).to be_nil end end end diff --git a/yarn.lock b/yarn.lock index 90302b284..3628dd560 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9194,6 +9194,21 @@ react-event-listener@^0.6.0: prop-types "^15.6.0" warning "^4.0.1" +react-fast-compare@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" + integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== + +react-helmet@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/react-helmet/-/react-helmet-6.1.0.tgz#a750d5165cb13cf213e44747502652e794468726" + integrity sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw== + dependencies: + object-assign "^4.1.1" + prop-types "^15.7.2" + react-fast-compare "^3.1.1" + react-side-effect "^2.1.0" + react-hotkeys@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/react-hotkeys/-/react-hotkeys-1.1.4.tgz#a0712aa2e0c03a759fd7885808598497a4dace72" @@ -9368,6 +9383,11 @@ react-select@^5.4.0: prop-types "^15.6.0" react-transition-group "^4.3.0" +react-side-effect@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/react-side-effect/-/react-side-effect-2.1.2.tgz#dc6345b9e8f9906dc2eeb68700b615e0b4fe752a" + integrity sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw== + react-sparklines@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/react-sparklines/-/react-sparklines-1.7.0.tgz#9b1d97e8c8610095eeb2ad658d2e1fcf91f91a60" From e623c302d5d4dfc05689eb8fb8e051e30fc38ec8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 29 Sep 2022 06:21:51 +0200 Subject: [PATCH 430/652] Add sign-up button to logged-out web UI (#19250) --- .../mastodon/components/column_header.js | 3 +- app/javascript/mastodon/components/poll.js | 6 +++- .../mastodon/components/status_content.js | 3 +- .../features/ui/components/link_footer.js | 2 +- .../features/ui/components/sign_in_banner.js | 2 ++ app/javascript/mastodon/initial_state.js | 1 + .../styles/mastodon/components.scss | 29 +++++++++++++++++++ app/serializers/initial_state_serializer.rb | 1 + 8 files changed, 43 insertions(+), 4 deletions(-) diff --git a/app/javascript/mastodon/components/column_header.js b/app/javascript/mastodon/components/column_header.js index cbbc490a8..5b2e16627 100644 --- a/app/javascript/mastodon/components/column_header.js +++ b/app/javascript/mastodon/components/column_header.js @@ -17,6 +17,7 @@ class ColumnHeader extends React.PureComponent { static contextTypes = { router: PropTypes.object, + identity: PropTypes.object, }; static propTypes = { @@ -145,7 +146,7 @@ class ColumnHeader extends React.PureComponent { collapsedContent.push(moveButtons); } - if (children || (multiColumn && this.props.onPin)) { + if (this.context.identity.signedIn && (children || (multiColumn && this.props.onPin))) { collapseButton = ( } + {!showResults && } {showResults && !this.props.disabled && · } {votesCount} {poll.get('expires_at') && · {timeRemaining}} diff --git a/app/javascript/mastodon/components/status_content.js b/app/javascript/mastodon/components/status_content.js index 43e938d4e..a88c5f084 100644 --- a/app/javascript/mastodon/components/status_content.js +++ b/app/javascript/mastodon/components/status_content.js @@ -15,6 +15,7 @@ class StatusContent extends React.PureComponent { static contextTypes = { router: PropTypes.object, + identity: PropTypes.object, }; static propTypes = { @@ -180,7 +181,7 @@ class StatusContent extends React.PureComponent { const hidden = this.props.onExpandedToggle ? !this.props.expanded : this.state.hidden; const renderReadMore = this.props.onClick && status.get('collapsed'); const renderViewThread = this.props.showThread && status.get('in_reply_to_id') && status.get('in_reply_to_account_id') === status.getIn(['account', 'id']); - const renderTranslate = this.props.onTranslate && ['public', 'unlisted'].includes(status.get('visibility')) && status.get('contentHtml').length > 0 && intl.locale !== status.get('language'); + const renderTranslate = this.context.identity.signedIn && this.props.onTranslate && ['public', 'unlisted'].includes(status.get('visibility')) && status.get('contentHtml').length > 0 && intl.locale !== status.get('language'); const language = preloadedLanguages.find(lang => lang[0] === status.get('language')); const languageName = language ? language[2] : status.get('language'); diff --git a/app/javascript/mastodon/features/ui/components/link_footer.js b/app/javascript/mastodon/features/ui/components/link_footer.js index 95cd6cf8e..8817bb6c1 100644 --- a/app/javascript/mastodon/features/ui/components/link_footer.js +++ b/app/javascript/mastodon/features/ui/components/link_footer.js @@ -56,7 +56,7 @@ class LinkFooter extends React.PureComponent { items.push(); } - if (withHotkeys) { + if (signedIn && withHotkeys) { items.push(); } diff --git a/app/javascript/mastodon/features/ui/components/sign_in_banner.js b/app/javascript/mastodon/features/ui/components/sign_in_banner.js index c8403a8ad..5ff4ee2a8 100644 --- a/app/javascript/mastodon/features/ui/components/sign_in_banner.js +++ b/app/javascript/mastodon/features/ui/components/sign_in_banner.js @@ -1,10 +1,12 @@ import React from 'react'; import { FormattedMessage } from 'react-intl'; +import { registrationsOpen } from 'mastodon/initial_state'; const SignInBanner = () => (

+
); diff --git a/app/javascript/mastodon/initial_state.js b/app/javascript/mastodon/initial_state.js index 9cc75b6cb..81607a03b 100644 --- a/app/javascript/mastodon/initial_state.js +++ b/app/javascript/mastodon/initial_state.js @@ -14,6 +14,7 @@ export const deleteModal = getMeta('delete_modal'); export const me = getMeta('me'); export const searchEnabled = getMeta('search_enabled'); export const limitedFederationMode = getMeta('limited_federation_mode'); +export const registrationsOpen = getMeta('registrations_open'); export const repository = getMeta('repository'); export const source_url = getMeta('source_url'); export const version = getMeta('version'); diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 1f1a5a5ca..87ec6bb8a 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -134,6 +134,26 @@ } } + &.button-tertiary { + background: transparent; + padding: 6px 17px; + color: $highlight-text-color; + border: 1px solid $highlight-text-color; + + &:active, + &:focus, + &:hover { + background: $ui-highlight-color; + color: $primary-text-color; + border: 0; + padding: 7px 18px; + } + + &:disabled { + opacity: 0.5; + } + } + &.button--block { display: block; width: 100%; @@ -708,6 +728,10 @@ color: $darker-text-color; margin-bottom: 20px; } + + .button { + margin-bottom: 10px; + } } .emojione { @@ -3671,6 +3695,11 @@ a.status-card.compact:hover { background: lighten($ui-base-color, 8%); } } + + &:disabled { + color: $dark-text-color; + cursor: default; + } } .column-header__collapsible { diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb index df076ffc6..87f4db83d 100644 --- a/app/serializers/initial_state_serializer.rb +++ b/app/serializers/initial_state_serializer.rb @@ -26,6 +26,7 @@ class InitialStateSerializer < ActiveModel::Serializer mascot: instance_presenter.mascot&.file&.url, profile_directory: Setting.profile_directory, trends: Setting.trends, + registrations_open: Setting.registrations_mode != 'none' && !Rails.configuration.x.single_user_mode, } if object.current_account From 36f4c32a38ed85e5e658b34d36eac40a6147bc0c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 29 Sep 2022 06:22:12 +0200 Subject: [PATCH 431/652] Change path of privacy policy page (#19249) --- app/controllers/about_controller.rb | 6 ++--- app/controllers/privacy_controller.rb | 22 +++++++++++++++++++ .../features/ui/components/link_footer.js | 2 +- app/views/layouts/public.html.haml | 5 ++--- .../show.html.haml} | 0 app/views/settings/deletes/show.html.haml | 2 +- .../confirmation_instructions.html.haml | 2 +- .../confirmation_instructions.text.erb | 4 ++-- config/locales/en.yml | 9 ++++---- config/routes.rb | 4 +++- spec/controllers/about_controller_spec.rb | 10 --------- 11 files changed, 38 insertions(+), 28 deletions(-) create mode 100644 app/controllers/privacy_controller.rb rename app/views/{about/terms.html.haml => privacy/show.html.haml} (100%) diff --git a/app/controllers/about_controller.rb b/app/controllers/about_controller.rb index d7e78d6b9..4fc2fbe34 100644 --- a/app/controllers/about_controller.rb +++ b/app/controllers/about_controller.rb @@ -8,10 +8,10 @@ class AboutController < ApplicationController before_action :require_open_federation!, only: [:show, :more] before_action :set_body_classes, only: :show before_action :set_instance_presenter - before_action :set_expires_in, only: [:more, :terms] + before_action :set_expires_in, only: [:more] before_action :set_registration_form_time, only: :show - skip_before_action :require_functional!, only: [:more, :terms] + skip_before_action :require_functional!, only: [:more] def show; end @@ -26,8 +26,6 @@ class AboutController < ApplicationController @blocks = DomainBlock.with_user_facing_limitations.by_severity if display_blocks? end - def terms; end - helper_method :display_blocks? helper_method :display_blocks_rationale? helper_method :public_fetch_mode? diff --git a/app/controllers/privacy_controller.rb b/app/controllers/privacy_controller.rb new file mode 100644 index 000000000..ced84dbe5 --- /dev/null +++ b/app/controllers/privacy_controller.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +class PrivacyController < ApplicationController + layout 'public' + + before_action :set_instance_presenter + before_action :set_expires_in + + skip_before_action :require_functional! + + def show; end + + private + + def set_instance_presenter + @instance_presenter = InstancePresenter.new + end + + def set_expires_in + expires_in 0, public: true + end +end diff --git a/app/javascript/mastodon/features/ui/components/link_footer.js b/app/javascript/mastodon/features/ui/components/link_footer.js index 8817bb6c1..dd05d03dd 100644 --- a/app/javascript/mastodon/features/ui/components/link_footer.js +++ b/app/javascript/mastodon/features/ui/components/link_footer.js @@ -73,7 +73,7 @@ class LinkFooter extends React.PureComponent { } items.push(); - items.push(); + items.push(); if (signedIn) { items.push(); diff --git a/app/views/layouts/public.html.haml b/app/views/layouts/public.html.haml index 83640de1a..14f86c970 100644 --- a/app/views/layouts/public.html.haml +++ b/app/views/layouts/public.html.haml @@ -33,8 +33,7 @@ .column-0 %h4= t 'footer.resources' %ul - %li= link_to t('about.terms'), terms_path - %li= link_to t('about.privacy_policy'), terms_path + %li= link_to t('about.privacy_policy'), privacy_policy_path .column-1 %h4= t 'footer.developers' %ul @@ -57,6 +56,6 @@ .legal-xs = link_to "v#{Mastodon::Version.to_s}", Mastodon::Version.source_url · - = link_to t('about.privacy_policy'), terms_path + = link_to t('about.privacy_policy'), privacy_policy_path = render template: 'layouts/application' diff --git a/app/views/about/terms.html.haml b/app/views/privacy/show.html.haml similarity index 100% rename from app/views/about/terms.html.haml rename to app/views/privacy/show.html.haml diff --git a/app/views/settings/deletes/show.html.haml b/app/views/settings/deletes/show.html.haml index 08792e0af..ddf090879 100644 --- a/app/views/settings/deletes/show.html.haml +++ b/app/views/settings/deletes/show.html.haml @@ -16,7 +16,7 @@ %li.positive-hint= t('deletes.warning.email_contact_html', email: Setting.site_contact_email) %li.positive-hint= t('deletes.warning.username_available') - %p.hint= t('deletes.warning.more_details_html', terms_path: terms_path) + %p.hint= t('deletes.warning.more_details_html', terms_path: privacy_policy_path) %hr.spacer/ diff --git a/app/views/user_mailer/confirmation_instructions.html.haml b/app/views/user_mailer/confirmation_instructions.html.haml index 39a83faff..447e689b4 100644 --- a/app/views/user_mailer/confirmation_instructions.html.haml +++ b/app/views/user_mailer/confirmation_instructions.html.haml @@ -77,4 +77,4 @@ %tbody %tr %td.column-cell.text-center - %p= t 'devise.mailer.confirmation_instructions.extra_html', terms_path: about_more_url, policy_path: terms_url + %p= t 'devise.mailer.confirmation_instructions.extra_html', terms_path: about_more_url, policy_path: privacy_policy_url diff --git a/app/views/user_mailer/confirmation_instructions.text.erb b/app/views/user_mailer/confirmation_instructions.text.erb index aad91cd9d..a1b2ba7d2 100644 --- a/app/views/user_mailer/confirmation_instructions.text.erb +++ b/app/views/user_mailer/confirmation_instructions.text.erb @@ -6,7 +6,7 @@ => <%= confirmation_url(@resource, confirmation_token: @token, redirect_to_app: @resource.created_by_application ? 'true' : nil) %> -<%= strip_tags(t('devise.mailer.confirmation_instructions.extra_html', terms_path: about_more_url, policy_path: terms_url)) %> +<%= strip_tags(t('devise.mailer.confirmation_instructions.extra_html', terms_path: about_more_url, policy_path: privacy_policy_url)) %> => <%= about_more_url %> -=> <%= terms_url %> +=> <%= privacy_policy_url %> diff --git a/config/locales/en.yml b/config/locales/en.yml index 9f047f523..dd341e0c8 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -28,7 +28,7 @@ en: learn_more: Learn more logged_in_as_html: You are currently logged in as %{username}. logout_before_registering: You are already logged in. - privacy_policy: Privacy policy + privacy_policy: Privacy Policy rules: Server rules rules_html: 'Below is a summary of rules you need to follow if you want to have an account on this server of Mastodon:' see_whats_happening: See what's happening @@ -39,7 +39,6 @@ en: other: posts status_count_before: Who published tagline: Decentralized social network - terms: Terms of service unavailable_content: Moderated servers unavailable_content_description: domain: Server @@ -797,8 +796,8 @@ en: desc_html: Displayed in sidebar and meta tags. Describe what Mastodon is and what makes this server special in a single paragraph. title: Short server description site_terms: - desc_html: You can write your own privacy policy, terms of service or other legalese. You can use HTML tags - title: Custom terms of service + desc_html: You can write your own privacy policy. You can use HTML tags + title: Custom privacy policy site_title: Server name thumbnail: desc_html: Used for previews via OpenGraph and API. 1200x630px recommended @@ -1720,7 +1719,7 @@ en:

This document is CC-BY-SA. It was last updated May 26, 2022.

Originally adapted from the Discourse privacy policy.

- title: "%{instance} Terms of Service and Privacy Policy" + title: "%{instance} Privacy Policy" themes: contrast: Mastodon (High contrast) default: Mastodon (Dark) diff --git a/config/routes.rb b/config/routes.rb index 9491c5177..5d0b3004b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -640,7 +640,9 @@ Rails.application.routes.draw do get '/about', to: 'about#show' get '/about/more', to: 'about#more' - get '/terms', to: 'about#terms' + + get '/privacy-policy', to: 'privacy#show', as: :privacy_policy + get '/terms', to: redirect('/privacy-policy') match '/', via: [:post, :put, :patch, :delete], to: 'application#raise_not_found', format: false match '*unmatched_route', via: :all, to: 'application#raise_not_found', format: false diff --git a/spec/controllers/about_controller_spec.rb b/spec/controllers/about_controller_spec.rb index 03dddd8c1..40e395a64 100644 --- a/spec/controllers/about_controller_spec.rb +++ b/spec/controllers/about_controller_spec.rb @@ -31,16 +31,6 @@ RSpec.describe AboutController, type: :controller do end end - describe 'GET #terms' do - before do - get :terms - end - - it 'returns http success' do - expect(response).to have_http_status(200) - end - end - describe 'helper_method :new_user' do it 'returns a new User' do user = @controller.view_context.new_user From c8245e64c5173f34401c562fe32551dcab8e68b7 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 29 Sep 2022 08:55:14 +0200 Subject: [PATCH 432/652] Fix wrong logo on start screen in web UI (#19254) --- .../mastodon/features/follow_recommendations/index.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/features/follow_recommendations/index.js b/app/javascript/mastodon/features/follow_recommendations/index.js index b5a71aef5..32b55eeb3 100644 --- a/app/javascript/mastodon/features/follow_recommendations/index.js +++ b/app/javascript/mastodon/features/follow_recommendations/index.js @@ -10,7 +10,6 @@ import { requestBrowserPermission } from 'mastodon/actions/notifications'; import { markAsPartial } from 'mastodon/actions/timelines'; import Column from 'mastodon/features/ui/components/column'; import Account from './components/account'; -import Logo from 'mastodon/components/logo'; import imageGreeting from 'mastodon/../images/elephant_ui_greeting.svg'; import Button from 'mastodon/components/button'; @@ -78,7 +77,10 @@ class FollowRecommendations extends ImmutablePureComponent {
- + + + +

From cf5d27c3b72742b0e59b0a45d0c088d37a9db051 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 29 Sep 2022 16:27:50 +0200 Subject: [PATCH 433/652] New Crowdin updates (#19252) * New translations en.yml (Thai) * New translations en.yml (Greek) * New translations en.yml (Afrikaans) * New translations en.json (Arabic) * New translations en.yml (Arabic) * New translations en.yml (Bulgarian) * New translations en.yml (Catalan) * New translations en.json (Danish) * New translations en.yml (Danish) * New translations en.json (Greek) * New translations en.json (Frisian) * New translations en.yml (Frisian) * New translations en.json (Basque) * New translations en.yml (Basque) * New translations en.json (Finnish) * New translations en.yml (Finnish) * New translations en.json (Irish) * New translations en.yml (Irish) * New translations en.yml (Hebrew) * New translations en.yml (Hungarian) * New translations en.json (Afrikaans) * New translations en.yml (French) * New translations en.json (Hebrew) * New translations en.json (Czech) * New translations en.json (Thai) * New translations en.yml (German) * New translations en.yml (Czech) * New translations en.yml (Chinese Simplified) * New translations en.yml (Ido) * New translations en.json (Bulgarian) * New translations en.json (Tamil) * New translations en.json (Esperanto) * New translations en.yml (Spanish) * New translations en.json (French) * New translations en.yml (Turkish) * New translations en.json (Dutch) * New translations en.yml (Albanian) * New translations en.yml (Ukrainian) * New translations en.json (Japanese) * New translations en.json (Indonesian) * New translations en.json (Sinhala) * New translations en.json (Romanian) * New translations en.yml (Romanian) * New translations en.json (Armenian) * New translations en.yml (Armenian) * New translations en.yml (Urdu (Pakistan)) * New translations en.yml (Serbian (Cyrillic)) * New translations en.json (Swedish) * New translations en.yml (Swedish) * New translations en.yml (Chinese Traditional) * New translations en.json (Urdu (Pakistan)) * New translations en.yml (Slovenian) * New translations en.yml (Vietnamese) * New translations en.json (Galician) * New translations en.yml (Galician) * New translations en.yml (Icelandic) * New translations en.json (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Indonesian) * New translations en.json (Persian) * New translations en.yml (Persian) * New translations en.json (Serbian (Cyrillic)) * New translations en.yml (Dutch) * New translations en.yml (Italian) * New translations en.yml (Japanese) * New translations en.json (Georgian) * New translations en.yml (Georgian) * New translations en.yml (Korean) * New translations en.json (Lithuanian) * New translations en.yml (Lithuanian) * New translations en.json (Macedonian) * New translations en.yml (Macedonian) * New translations en.json (Norwegian) * New translations en.yml (Slovak) * New translations en.yml (Norwegian) * New translations en.json (Punjabi) * New translations en.yml (Punjabi) * New translations en.yml (Polish) * New translations en.yml (Portuguese) * New translations en.yml (Russian) * New translations en.json (Slovak) * New translations en.yml (Tamil) * New translations en.json (Breton) * New translations en.yml (Esperanto) * New translations en.json (Uyghur) * New translations en.yml (Uyghur) * New translations en.json (Chinese Traditional, Hong Kong) * New translations en.yml (Chinese Traditional, Hong Kong) * New translations en.json (Tatar) * New translations en.yml (Tatar) * New translations en.json (Malayalam) * New translations en.yml (Malayalam) * New translations en.yml (Breton) * New translations en.json (Welsh) * New translations en.yml (Sinhala) * New translations en.json (Cornish) * New translations en.yml (Cornish) * New translations en.json (Kannada) * New translations en.yml (Kannada) * New translations en.json (Scottish Gaelic) * New translations en.yml (Scottish Gaelic) * New translations en.json (Asturian) * New translations en.yml (Asturian) * New translations en.json (Occitan) * New translations en.yml (Welsh) * New translations en.yml (English, United Kingdom) * New translations en.yml (Spanish, Argentina) * New translations en.json (Kazakh) * New translations en.json (Spanish, Mexico) * New translations en.yml (Spanish, Mexico) * New translations en.json (Bengali) * New translations en.yml (Bengali) * New translations en.json (Marathi) * New translations en.yml (Marathi) * New translations en.json (Croatian) * New translations en.yml (Croatian) * New translations en.json (Norwegian Nynorsk) * New translations en.yml (Norwegian Nynorsk) * New translations en.yml (Kazakh) * New translations en.json (English, United Kingdom) * New translations en.json (Estonian) * New translations en.yml (Estonian) * New translations en.yml (Latvian) * New translations en.json (Hindi) * New translations en.yml (Hindi) * New translations en.json (Malay) * New translations en.yml (Malay) * New translations en.json (Telugu) * New translations en.yml (Telugu) * New translations en.yml (Occitan) * New translations en.json (Serbian (Latin)) * New translations en.json (Sardinian) * New translations en.yml (Kabyle) * New translations en.json (Kabyle) * New translations en.yml (Sanskrit) * New translations en.yml (Serbian (Latin)) * New translations en.yml (Sardinian) * New translations en.json (Sanskrit) * New translations en.yml (Corsican) * New translations en.json (Corsican) * New translations en.yml (Sorani (Kurdish)) * New translations en.json (Sorani (Kurdish)) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.json (Taigi) * New translations en.yml (Taigi) * New translations en.json (Silesian) * New translations en.yml (Silesian) * New translations en.json (Standard Moroccan Tamazight) * New translations en.yml (Standard Moroccan Tamazight) * New translations en.yml (Ido) * New translations en.yml (Ukrainian) * New translations en.yml (Chinese Traditional) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Catalan) * New translations en.yml (Greek) * New translations en.yml (Korean) * New translations en.json (Galician) * New translations en.yml (Galician) * New translations en.yml (Italian) * New translations en.yml (Chinese Simplified) * New translations en.yml (Albanian) * New translations en.yml (Russian) * New translations en.yml (Slovenian) * New translations en.yml (Polish) * New translations en.yml (Vietnamese) * New translations en.yml (Icelandic) * New translations en.yml (Latvian) * New translations en.yml (Czech) * New translations simple_form.en.yml (Czech) * New translations activerecord.en.yml (Czech) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.yml (Turkish) * New translations en.yml (Danish) * New translations en.yml (Japanese) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 6 ++- app/javascript/mastodon/locales/ar.json | 6 ++- app/javascript/mastodon/locales/ast.json | 6 ++- app/javascript/mastodon/locales/bg.json | 6 ++- app/javascript/mastodon/locales/bn.json | 6 ++- app/javascript/mastodon/locales/br.json | 6 ++- app/javascript/mastodon/locales/ca.json | 6 ++- app/javascript/mastodon/locales/ckb.json | 6 ++- app/javascript/mastodon/locales/co.json | 6 ++- app/javascript/mastodon/locales/cs.json | 6 ++- app/javascript/mastodon/locales/cy.json | 6 ++- app/javascript/mastodon/locales/da.json | 6 ++- app/javascript/mastodon/locales/de.json | 6 ++- .../mastodon/locales/defaultMessages.json | 52 ++++++++++++++++++- app/javascript/mastodon/locales/el.json | 6 ++- app/javascript/mastodon/locales/en-GB.json | 6 ++- app/javascript/mastodon/locales/en.json | 6 ++- app/javascript/mastodon/locales/eo.json | 6 ++- app/javascript/mastodon/locales/es-AR.json | 6 ++- app/javascript/mastodon/locales/es-MX.json | 8 ++- app/javascript/mastodon/locales/es.json | 6 ++- app/javascript/mastodon/locales/et.json | 6 ++- app/javascript/mastodon/locales/eu.json | 6 ++- app/javascript/mastodon/locales/fa.json | 6 ++- app/javascript/mastodon/locales/fi.json | 6 ++- app/javascript/mastodon/locales/fr.json | 6 ++- app/javascript/mastodon/locales/fy.json | 6 ++- app/javascript/mastodon/locales/ga.json | 6 ++- app/javascript/mastodon/locales/gd.json | 6 ++- app/javascript/mastodon/locales/gl.json | 12 +++-- app/javascript/mastodon/locales/he.json | 6 ++- app/javascript/mastodon/locales/hi.json | 6 ++- app/javascript/mastodon/locales/hr.json | 6 ++- app/javascript/mastodon/locales/hu.json | 6 ++- app/javascript/mastodon/locales/hy.json | 6 ++- app/javascript/mastodon/locales/id.json | 6 ++- app/javascript/mastodon/locales/io.json | 6 ++- app/javascript/mastodon/locales/is.json | 6 ++- app/javascript/mastodon/locales/it.json | 6 ++- app/javascript/mastodon/locales/ja.json | 6 ++- app/javascript/mastodon/locales/ka.json | 6 ++- app/javascript/mastodon/locales/kab.json | 6 ++- app/javascript/mastodon/locales/kk.json | 6 ++- app/javascript/mastodon/locales/kn.json | 6 ++- app/javascript/mastodon/locales/ko.json | 6 ++- app/javascript/mastodon/locales/ku.json | 6 ++- app/javascript/mastodon/locales/kw.json | 6 ++- app/javascript/mastodon/locales/lt.json | 6 ++- app/javascript/mastodon/locales/lv.json | 6 ++- app/javascript/mastodon/locales/mk.json | 6 ++- app/javascript/mastodon/locales/ml.json | 6 ++- app/javascript/mastodon/locales/mr.json | 6 ++- app/javascript/mastodon/locales/ms.json | 6 ++- app/javascript/mastodon/locales/nl.json | 6 ++- app/javascript/mastodon/locales/nn.json | 6 ++- app/javascript/mastodon/locales/no.json | 6 ++- app/javascript/mastodon/locales/oc.json | 6 ++- app/javascript/mastodon/locales/pa.json | 6 ++- app/javascript/mastodon/locales/pl.json | 6 ++- app/javascript/mastodon/locales/pt-BR.json | 6 ++- app/javascript/mastodon/locales/pt-PT.json | 6 ++- app/javascript/mastodon/locales/ro.json | 6 ++- app/javascript/mastodon/locales/ru.json | 6 ++- app/javascript/mastodon/locales/sa.json | 6 ++- app/javascript/mastodon/locales/sc.json | 6 ++- app/javascript/mastodon/locales/si.json | 6 ++- app/javascript/mastodon/locales/sk.json | 6 ++- app/javascript/mastodon/locales/sl.json | 6 ++- app/javascript/mastodon/locales/sq.json | 6 ++- app/javascript/mastodon/locales/sr-Latn.json | 6 ++- app/javascript/mastodon/locales/sr.json | 6 ++- app/javascript/mastodon/locales/sv.json | 6 ++- app/javascript/mastodon/locales/szl.json | 6 ++- app/javascript/mastodon/locales/ta.json | 6 ++- app/javascript/mastodon/locales/tai.json | 6 ++- app/javascript/mastodon/locales/te.json | 6 ++- app/javascript/mastodon/locales/th.json | 6 ++- app/javascript/mastodon/locales/tr.json | 6 ++- app/javascript/mastodon/locales/tt.json | 6 ++- app/javascript/mastodon/locales/ug.json | 6 ++- app/javascript/mastodon/locales/uk.json | 6 ++- app/javascript/mastodon/locales/ur.json | 6 ++- app/javascript/mastodon/locales/vi.json | 6 ++- app/javascript/mastodon/locales/zgh.json | 6 ++- app/javascript/mastodon/locales/zh-CN.json | 6 ++- app/javascript/mastodon/locales/zh-HK.json | 6 ++- app/javascript/mastodon/locales/zh-TW.json | 6 ++- config/locales/activerecord.cs.yml | 9 ++++ config/locales/ar.yml | 7 --- config/locales/ast.yml | 2 - config/locales/bg.yml | 2 - config/locales/bn.yml | 2 - config/locales/br.yml | 2 - config/locales/ca.yml | 9 ++-- config/locales/ckb.yml | 7 --- config/locales/co.yml | 7 --- config/locales/cs.yml | 32 ++++++++++-- config/locales/cy.yml | 7 --- config/locales/da.yml | 7 ++- config/locales/de.yml | 6 --- config/locales/el.yml | 9 ++-- config/locales/eo.yml | 7 --- config/locales/es-AR.yml | 7 ++- config/locales/es-MX.yml | 6 --- config/locales/es.yml | 6 --- config/locales/et.yml | 7 --- config/locales/eu.yml | 7 --- config/locales/fa.yml | 7 --- config/locales/fi.yml | 7 --- config/locales/fr.yml | 6 --- config/locales/ga.yml | 1 - config/locales/gd.yml | 6 --- config/locales/gl.yml | 9 ++-- config/locales/he.yml | 6 --- config/locales/hi.yml | 1 - config/locales/hr.yml | 2 - config/locales/hu.yml | 6 --- config/locales/hy.yml | 5 -- config/locales/id.yml | 7 --- config/locales/io.yml | 7 ++- config/locales/is.yml | 7 ++- config/locales/it.yml | 9 ++-- config/locales/ja.yml | 49 ++++++++++------- config/locales/ka.yml | 7 --- config/locales/kab.yml | 4 -- config/locales/kk.yml | 7 --- config/locales/ko.yml | 9 ++-- config/locales/ku.yml | 9 ++-- config/locales/lt.yml | 7 --- config/locales/lv.yml | 9 ++-- config/locales/ml.yml | 2 - config/locales/ms.yml | 2 - config/locales/nl.yml | 6 --- config/locales/nn.yml | 7 --- config/locales/no.yml | 7 --- config/locales/oc.yml | 7 --- config/locales/pl.yml | 7 ++- config/locales/pt-BR.yml | 7 --- config/locales/pt-PT.yml | 6 --- config/locales/ro.yml | 4 -- config/locales/ru.yml | 7 ++- config/locales/sc.yml | 7 --- config/locales/si.yml | 7 --- config/locales/simple_form.cs.yml | 2 + config/locales/sk.yml | 7 --- config/locales/sl.yml | 7 ++- config/locales/sq.yml | 9 ++-- config/locales/sr-Latn.yml | 5 -- config/locales/sr.yml | 7 --- config/locales/sv.yml | 7 --- config/locales/ta.yml | 2 - config/locales/te.yml | 2 - config/locales/th.yml | 7 --- config/locales/tr.yml | 9 ++-- config/locales/tt.yml | 1 - config/locales/uk.yml | 11 ++-- config/locales/vi.yml | 7 ++- config/locales/zh-CN.yml | 7 ++- config/locales/zh-HK.yml | 7 --- config/locales/zh-TW.yml | 7 ++- 160 files changed, 623 insertions(+), 468 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 8e2361941..54780cc9f 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -227,8 +227,8 @@ "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 81c1f8104..d2709c957 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -227,8 +227,8 @@ "getting_started.heading": "استعدّ للبدء", "getting_started.invite": "دعوة أشخاص", "getting_started.open_source_notice": "ماستدون برنامج مفتوح المصدر. يمكنك المساهمة، أو الإبلاغ عن تقارير الأخطاء، على جيت هب {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "الأمان", - "getting_started.terms": "شروط الخدمة", "hashtag.column_header.tag_mode.all": "و {additional}", "hashtag.column_header.tag_mode.any": "أو {additional}", "hashtag.column_header.tag_mode.none": "بدون {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "تعذر العثور على نتائج تتضمن هذه المصطلحات", "search_results.statuses": "المنشورات", "search_results.statuses_fts_disabled": "البحث عن المنشورات عن طريق المحتوى ليس مفعل في خادم ماستدون هذا.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, zero {} one {نتيجة} two {نتيجتين} few {نتائج} many {نتائج} other {نتائج}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "افتح الواجهة الإدارية لـ @{name}", "status.admin_status": "افتح هذا المنشور على واجهة الإشراف", "status.block": "احجب @{name}", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 5c128ef20..acf1495b4 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -227,8 +227,8 @@ "getting_started.heading": "Entamu", "getting_started.invite": "Convidar a persones", "getting_started.open_source_notice": "Mastodon ye software de códigu abiertu. Pues collaborar o informar de fallos en GitHub: {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Axustes de la cuenta", - "getting_started.terms": "Términos del serviciu", "hashtag.column_header.tag_mode.all": "y {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "ensin {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Nun se pudo atopar nada con esos términos de busca", "search_results.statuses": "Barritos", "search_results.statuses_fts_disabled": "Esti sirvidor de Mastodon tien activada la gueta de barritos pol so conteníu.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resultáu} other {resultaos}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Bloquiar a @{name}", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 84007763c..992d906d3 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -227,8 +227,8 @@ "getting_started.heading": "Първи стъпки", "getting_started.invite": "Поканване на хора", "getting_started.open_source_notice": "Mastodon е софтуер с отворен код. Можеш да помогнеш или да докладваш за проблеми в Github: {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", - "getting_started.terms": "Условия за ползване", "hashtag.column_header.tag_mode.all": "и {additional}", "hashtag.column_header.tag_mode.any": "или {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Не е намерено нищо за това търсене", "search_results.statuses": "Публикации", "search_results.statuses_fts_disabled": "Търсенето на публикации по тяхното съдържание не е активирано за този Mastodon сървър.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {резултат} other {резултата}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Отваряне на интерфейс за модериране за @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Блокиране на @{name}", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index 388b2a814..6157928e2 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -227,8 +227,8 @@ "getting_started.heading": "শুরু করা", "getting_started.invite": "অন্যদের আমন্ত্রণ করুন", "getting_started.open_source_notice": "মাস্টাডন একটি মুক্ত সফটওয়্যার। তৈরিতে সাহায্য করতে বা কোনো সমস্যা সম্পর্কে জানাতে আমাদের গিটহাবে যেতে পারেন {github}।", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "নিরাপত্তা", - "getting_started.terms": "ব্যবহারের নিয়মাবলী", "hashtag.column_header.tag_mode.all": "এবং {additional}", "hashtag.column_header.tag_mode.any": "অথবা {additional}", "hashtag.column_header.tag_mode.none": "বাদ দিয়ে {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "টুট", "search_results.statuses_fts_disabled": "তাদের সামগ্রী দ্বারা টুটগুলি অনুসন্ধান এই মস্তোডন সার্ভারে সক্ষম নয়।", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {ফলাফল} other {ফলাফল}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "@{name} র জন্য পরিচালনার ইন্টারফেসে ঢুকুন", "status.admin_status": "যায় লেখাটি পরিচালনার ইন্টারফেসে খুলুন", "status.block": "@{name} কে ব্লক করুন", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index a1f703cb2..4d5a943e3 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -227,8 +227,8 @@ "getting_started.heading": "Loc'hañ", "getting_started.invite": "Pediñ tud", "getting_started.open_source_notice": "Mastodoñ zo ur meziant digor e darzh. Gallout a rit kenoberzhiañ dezhañ pe danevellañ kudennoù war GitHub e {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Arventennoù ar gont", - "getting_started.terms": "Divizoù gwerzhañ hollek", "hashtag.column_header.tag_mode.all": "ha {additional}", "hashtag.column_header.tag_mode.any": "pe {additional}", "hashtag.column_header.tag_mode.none": "hep {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "a doudoù", "search_results.statuses_fts_disabled": "Klask toudoù dre oc'h endalc'h n'eo ket aotreet war ar servijer-mañ.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {disoc'h} other {a zisoc'h}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Digeriñ etrefas evezherezh evit @{name}", "status.admin_status": "Digeriñ an toud e-barzh an etrefas evezherezh", "status.block": "Berzañ @{name}", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 5dbad8d94..2a218ea84 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -227,8 +227,8 @@ "getting_started.heading": "Primers passos", "getting_started.invite": "Convidar gent", "getting_started.open_source_notice": "Mastodon és un programari de codi obert. Pots contribuir-hi o informar de problemes a GitHub a {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Configuració del compte", - "getting_started.terms": "Condicions de servei", "hashtag.column_header.tag_mode.all": "i {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sense {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "No s'ha pogut trobar res per a aquests termes de cerca", "search_results.statuses": "Publicacions", "search_results.statuses_fts_disabled": "La cerca de publicacions pel seu contingut no està habilitada en aquest servidor Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resultat} other {resultats}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Obre l'interfície de moderació per a @{name}", "status.admin_status": "Obrir aquesta publicació a la interfície de moderació", "status.block": "Bloqueja @{name}", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 638a58a12..0eca1dab4 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -227,8 +227,8 @@ "getting_started.heading": "دەست پێکردن", "getting_started.invite": "بانگهێشتکردنی خەڵک", "getting_started.open_source_notice": "ماستۆدۆن نەرمەکالایەکی سەرچاوەی کراوەیە. دەتوانیت بەشداری بکەیت یان گوزارشت بکەیت لەسەر کێشەکانی لە پەڕەی گیتهاب {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "ڕێکخستنەکانی هەژمارە", - "getting_started.terms": "مەرجەکانی خزمەتگوزاری", "hashtag.column_header.tag_mode.all": "و {additional}", "hashtag.column_header.tag_mode.any": "یا {additional}", "hashtag.column_header.tag_mode.none": "بەبێ {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "توتەکان", "search_results.statuses_fts_disabled": "گەڕانی توتەکان بە ناوەڕۆکیان لەسەر ئەم ڕاژەی ماستۆدۆن چالاک نەکراوە.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {دەرئەنجام} other {دەرئەنجام}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "کردنەوەی میانڕەوی بەڕێوەبەر بۆ @{name}", "status.admin_status": "ئەم توتە بکەوە لە ناو ڕووکاری بەڕیوەبەر", "status.block": "@{name} ئاستەنگ بکە", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 7075784bc..8b6592401 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -227,8 +227,8 @@ "getting_started.heading": "Per principià", "getting_started.invite": "Invità ghjente", "getting_started.open_source_notice": "Mastodon ghjè un lugiziale liberu. Pudete cuntribuisce à u codice o a traduzione, o palisà un bug, nant'à GitHub: {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Sicurità", - "getting_started.terms": "Cundizione di u serviziu", "hashtag.column_header.tag_mode.all": "è {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "senza {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Statuti", "search_results.statuses_fts_disabled": "A ricerca di i cuntinuti di i statuti ùn hè micca attivata nant'à stu servore Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {risultatu} other {risultati}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Apre l'interfaccia di muderazione per @{name}", "status.admin_status": "Apre stu statutu in l'interfaccia di muderazione", "status.block": "Bluccà @{name}", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index ccadcec26..c83e0b5b5 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -227,8 +227,8 @@ "getting_started.heading": "Začínáme", "getting_started.invite": "Pozvat lidi", "getting_started.open_source_notice": "Mastodon je otevřený software. Přispět do jeho vývoje nebo hlásit chyby můžete na GitHubu {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Nastavení účtu", - "getting_started.terms": "Podmínky používání", "hashtag.column_header.tag_mode.all": "a {additional}", "hashtag.column_header.tag_mode.any": "nebo {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Pro tyto hledané výrazy nebylo nic nenalezeno", "search_results.statuses": "Příspěvky", "search_results.statuses_fts_disabled": "Vyhledávání příspěvků podle jejich obsahu není na tomto Mastodon serveru povoleno.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {výsledek} few {výsledky} many {výsledků} other {výsledků}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Otevřít moderátorské rozhraní pro @{name}", "status.admin_status": "Otevřít tento příspěvek v moderátorském rozhraní", "status.block": "Zablokovat @{name}", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index c777dcd6a..f73b8cb48 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -227,8 +227,8 @@ "getting_started.heading": "Dechrau", "getting_started.invite": "Gwahodd pobl", "getting_started.open_source_notice": "Mae Mastodon yn feddalwedd côd agored. Mae modd cyfrannu neu adrodd materion ar GitHUb ar {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Diogelwch", - "getting_started.terms": "Telerau Gwasanaeth", "hashtag.column_header.tag_mode.all": "a {additional}", "hashtag.column_header.tag_mode.any": "neu {additional}", "hashtag.column_header.tag_mode.none": "heb {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Methu dod o hyd i unrhyw beth ar gyfer y termau chwilio hyn", "search_results.statuses": "Postiadau", "search_results.statuses_fts_disabled": "Nid yw chwilio postiadau yn ôl eu cynnwys wedi'i alluogi ar y gweinydd Mastodon hwn.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, zero {canlyniad} one {canlyniad} two {ganlyniad} other {o ganlyniadau}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Agor rhyngwyneb goruwchwylio ar gyfer @{name}", "status.admin_status": "Agor y post hwn yn y rhyngwyneb goruwchwylio", "status.block": "Blocio @{name}", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index e57b301dc..5ae3983a3 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -227,8 +227,8 @@ "getting_started.heading": "Startmenu", "getting_started.invite": "Invitér folk", "getting_started.open_source_notice": "Mastodon er open-source software. Du kan bidrage eller anmelde fejl via GitHub {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Kontoindstillinger", - "getting_started.terms": "Tjenestevilkår", "hashtag.column_header.tag_mode.all": "og {additional}", "hashtag.column_header.tag_mode.any": "eller {additional}", "hashtag.column_header.tag_mode.none": "uden {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Ingen resultater for disse søgeord", "search_results.statuses": "Indlæg", "search_results.statuses_fts_disabled": "Søgning på indlæg efter deres indhold ikke aktiveret på denne Mastodon-server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resultat} other {resultater}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Åbn modereringsbrugerflade for @{name}", "status.admin_status": "Åbn dette indlæg i modereringsbrugerfladen", "status.block": "Blokér @{name}", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index a2f8f087d..6c72c3afc 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -227,8 +227,8 @@ "getting_started.heading": "Erste Schritte", "getting_started.invite": "Leute einladen", "getting_started.open_source_notice": "Mastodon ist quelloffene Software. Du kannst auf GitHub unter {github} dazu beitragen oder Probleme melden.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Konto & Sicherheit", - "getting_started.terms": "Nutzungsbedingungen", "hashtag.column_header.tag_mode.all": "und {additional}", "hashtag.column_header.tag_mode.any": "oder {additional}", "hashtag.column_header.tag_mode.none": "ohne {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Nichts für diese Suchbegriffe gefunden", "search_results.statuses": "Beiträge", "search_results.statuses_fts_disabled": "Die Suche für Beiträge nach ihrem Inhalt ist auf diesem Mastodon-Server deaktiviert.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {Ergebnis} other {Ergebnisse}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Öffne Moderationsoberfläche für @{name}", "status.admin_status": "Öffne Beitrag in der Moderationsoberfläche", "status.block": "Blockiere @{name}", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 6b27f7877..eba878bbd 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -1842,6 +1842,19 @@ }, { "descriptors": [ + { + "defaultMessage": "Nothing is trending right now. Check back later!", + "id": "empty_column.explore_statuses" + } + ], + "path": "app/javascript/mastodon/features/explore/links.json" + }, + { + "descriptors": [ + { + "defaultMessage": "Search for {q}", + "id": "search_results.title" + }, { "defaultMessage": "Could not find anything for these search terms", "id": "search_results.nothing_found" @@ -1874,6 +1887,24 @@ ], "path": "app/javascript/mastodon/features/explore/statuses.json" }, + { + "descriptors": [ + { + "defaultMessage": "Nothing is trending right now. Check back later!", + "id": "empty_column.explore_statuses" + } + ], + "path": "app/javascript/mastodon/features/explore/suggestions.json" + }, + { + "descriptors": [ + { + "defaultMessage": "Nothing is trending right now. Check back later!", + "id": "empty_column.explore_statuses" + } + ], + "path": "app/javascript/mastodon/features/explore/tags.json" + }, { "descriptors": [ { @@ -3678,8 +3709,8 @@ "id": "navigation_bar.apps" }, { - "defaultMessage": "Terms of service", - "id": "getting_started.terms" + "defaultMessage": "Privacy Policy", + "id": "getting_started.privacy_policy" }, { "defaultMessage": "Developers", @@ -3824,6 +3855,23 @@ ], "path": "app/javascript/mastodon/features/ui/components/report_modal.json" }, + { + "descriptors": [ + { + "defaultMessage": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "id": "sign_in_banner.text" + }, + { + "defaultMessage": "Sign in", + "id": "sign_in_banner.sign_in" + }, + { + "defaultMessage": "Create account", + "id": "sign_in_banner.create_account" + } + ], + "path": "app/javascript/mastodon/features/ui/components/sign_in_banner.json" + }, { "descriptors": [ { diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 02f071ede..c03a93076 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -227,8 +227,8 @@ "getting_started.heading": "Αφετηρία", "getting_started.invite": "Προσκάλεσε κόσμο", "getting_started.open_source_notice": "Το Mastodon είναι ελεύθερο λογισμικό. Μπορείς να συνεισφέρεις ή να αναφέρεις ζητήματα στο GitHub στο {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Ασφάλεια", - "getting_started.terms": "Όροι χρήσης", "hashtag.column_header.tag_mode.all": "και {additional}", "hashtag.column_header.tag_mode.any": "ή {additional}", "hashtag.column_header.tag_mode.none": "χωρίς {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Τουτ", "search_results.statuses_fts_disabled": "Η αναζήτηση τουτ βάσει του περιεχόμενού τους δεν είναι ενεργοποιημένη σε αυτό τον κόμβο.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, zero {αποτελέσματα} one {αποτέλεσμα} other {αποτελέσματα}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Άνοιγμα λειτουργίας διαμεσολάβησης για τον/την @{name}", "status.admin_status": "Άνοιγμα αυτής της δημοσίευσης στη λειτουργία διαμεσολάβησης", "status.block": "Αποκλεισμός @{name}", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 7dc245a38..3e418b9d3 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -227,8 +227,8 @@ "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Posts", "search_results.statuses_fts_disabled": "Searching posts by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index c7b31e6f4..b4bba1863 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -227,8 +227,8 @@ "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Account settings", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Posts", "search_results.statuses_fts_disabled": "Searching posts by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this post in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index bb770767c..b86fcb703 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -227,8 +227,8 @@ "getting_started.heading": "Por komenci", "getting_started.invite": "Inviti homojn", "getting_started.open_source_notice": "Mastodon estas malfermitkoda programo. Vi povas kontribui aŭ raporti problemojn en GitHub je {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Sekureco", - "getting_started.terms": "Kondiĉoj de la servo", "hashtag.column_header.tag_mode.all": "kaj {additional}", "hashtag.column_header.tag_mode.any": "aŭ {additional}", "hashtag.column_header.tag_mode.none": "sen {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Povis trovi nenion por ĉi tiuj serĉaj terminoj", "search_results.statuses": "Mesaĝoj", "search_results.statuses_fts_disabled": "Serĉi mesaĝojn laŭ enhavo ne estas ebligita en ĉi tiu Mastodon-servilo.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {rezulto} other {rezultoj}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Malfermi la kontrolan interfacon por @{name}", "status.admin_status": "Malfermi ĉi tiun mesaĝon en la kontrola interfaco", "status.block": "Bloki @{name}", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index bbaa3591e..9d1477d86 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -227,8 +227,8 @@ "getting_started.heading": "Introducción", "getting_started.invite": "Invitar gente", "getting_started.open_source_notice": "Mastodon es software libre. Podés contribuir o informar errores en {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Configuración de la cuenta", - "getting_started.terms": "Términos del servicio", "hashtag.column_header.tag_mode.all": "y {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sin {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "No se pudo encontrar nada para estos términos de búsqueda", "search_results.statuses": "Mensajes", "search_results.statuses_fts_disabled": "No se pueden buscar mensajes por contenido en este servidor de Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Abrir interface de moderación para @{name}", "status.admin_status": "Abrir este mensaje en la interface de moderación", "status.block": "Bloquear a @{name}", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 36ac226b5..48424f74e 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -227,8 +227,8 @@ "getting_started.heading": "Primeros pasos", "getting_started.invite": "Invitar usuarios", "getting_started.open_source_notice": "Mastodon es software libre. Puedes contribuir o reportar errores en {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Seguridad", - "getting_started.terms": "Términos de servicio", "hashtag.column_header.tag_mode.all": "y {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sin {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "No se pudo encontrar nada para estos términos de busqueda", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Buscar toots por su contenido no está disponible en este servidor de Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Abrir interfaz de moderación para @{name}", "status.admin_status": "Abrir este estado en la interfaz de moderación", "status.block": "Bloquear a @{name}", @@ -522,7 +526,7 @@ "status.show_original": "Mostrar original", "status.show_thread": "Mostrar hilo", "status.translate": "Traducir", - "status.translated_from": "Traducido de {lang}", + "status.translated_from": "Traducido del {lang}", "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index af6a2ba97..b65dbbbd8 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -227,8 +227,8 @@ "getting_started.heading": "Primeros pasos", "getting_started.invite": "Invitar usuarios", "getting_started.open_source_notice": "Mastodon es software libre. Puedes contribuir o reportar errores en {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Seguridad", - "getting_started.terms": "Términos de servicio", "hashtag.column_header.tag_mode.all": "y {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sin {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "No se pudo encontrar nada para estos términos de búsqueda", "search_results.statuses": "Publicaciones", "search_results.statuses_fts_disabled": "Buscar publicaciones por su contenido no está disponible en este servidor de Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Abrir interfaz de moderación para @{name}", "status.admin_status": "Abrir este estado en la interfaz de moderación", "status.block": "Bloquear a @{name}", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 86dc95495..11c932346 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -227,8 +227,8 @@ "getting_started.heading": "Alustamine", "getting_started.invite": "Kutsu inimesi", "getting_started.open_source_notice": "Mastodon on avatud lähtekoodiga tarkvara. Saate panustada või teatada probleemidest GitHubis {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Turvalisus", - "getting_started.terms": "Kasutustingimused", "hashtag.column_header.tag_mode.all": "ja {additional}", "hashtag.column_header.tag_mode.any": "või {additional}", "hashtag.column_header.tag_mode.none": "ilma {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Tuudid", "search_results.statuses_fts_disabled": "Tuutsude otsimine nende sisu järgi ei ole sellel Mastodoni serveril sisse lülitatud.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {tulemus} other {tulemust}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Ava moderaatoriliides kasutajale @{name}", "status.admin_status": "Ava see staatus moderaatoriliites", "status.block": "Blokeeri @{name}", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 77259248c..e4ffd2234 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -227,8 +227,8 @@ "getting_started.heading": "Menua", "getting_started.invite": "Gonbidatu jendea", "getting_started.open_source_notice": "Mastodon software librea da. Ekarpenak egin ditzakezu edo akatsen berri eman GitHub bidez: {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Segurtasuna", - "getting_started.terms": "Erabilera baldintzak", "hashtag.column_header.tag_mode.all": "eta {osagarria}", "hashtag.column_header.tag_mode.any": "edo {osagarria}", "hashtag.column_header.tag_mode.none": "gabe {osagarria}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Ez da emaitzarik aurkitu bilaketa-termino horientzat", "search_results.statuses": "Bidalketak", "search_results.statuses_fts_disabled": "Mastodon zerbitzari honek ez du bidalketen edukiaren bilaketa gaitu.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {emaitza} other {emaitza}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Ireki @{name} erabiltzailearen moderazio interfazea", "status.admin_status": "Ireki bidalketa hau moderazio interfazean", "status.block": "Blokeatu @{name}", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 7046b9a14..25b2fb3b4 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -227,8 +227,8 @@ "getting_started.heading": "آغاز کنید", "getting_started.invite": "دعوت از دیگران", "getting_started.open_source_notice": "ماستودون نرم‌افزاری آزاد است. می‌توانید روی {github} در آن مشارکت کرده یا مشکلاتش را گزارش دهید.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "تنظیمات حساب", - "getting_started.terms": "شرایط خدمات", "hashtag.column_header.tag_mode.all": "و {additional}", "hashtag.column_header.tag_mode.any": "یا {additional}", "hashtag.column_header.tag_mode.none": "بدون {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "چیزی برای این عبارت جست‌وجو یافت نشد", "search_results.statuses": "فرسته‌ها", "search_results.statuses_fts_disabled": "جست‌وجوی محتوای فرسته‌ها در این کارساز ماستودون به کار انداخته نشده است.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {نتیجه} other {نتیجه}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "گشودن واسط مدیریت برای ‎@{name}", "status.admin_status": "گشودن این فرسته در واسط مدیریت", "status.block": "مسدود کردن ‎@{name}", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 1cbea9808..d3829ae91 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -227,8 +227,8 @@ "getting_started.heading": "Näin pääset alkuun", "getting_started.invite": "Kutsu ihmisiä", "getting_started.open_source_notice": "Mastodon on avoimen lähdekoodin ohjelma. Voit avustaa tai raportoida ongelmia GitHubissa: {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Tiliasetukset", - "getting_started.terms": "Käyttöehdot", "hashtag.column_header.tag_mode.all": "ja {additional}", "hashtag.column_header.tag_mode.any": "tai {additional}", "hashtag.column_header.tag_mode.none": "ilman {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Näille hakusanoille ei löytynyt mitään", "search_results.statuses": "Viestit", "search_results.statuses_fts_disabled": "Viestien haku sisällön perusteella ei ole käytössä tällä Mastodon-palvelimella.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {tulos} other {tulokset}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Avaa moderaattorinäkymä tilistä @{name}", "status.admin_status": "Avaa julkaisu moderointinäkymässä", "status.block": "Estä @{name}", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 5c615041f..2befc94cb 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -227,8 +227,8 @@ "getting_started.heading": "Pour commencer", "getting_started.invite": "Inviter des gens", "getting_started.open_source_notice": "Mastodon est un logiciel libre. Vous pouvez contribuer ou faire des rapports de bogues via {github} sur GitHub.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Sécurité", - "getting_started.terms": "Conditions d’utilisation", "hashtag.column_header.tag_mode.all": "et {additional}", "hashtag.column_header.tag_mode.any": "ou {additional}", "hashtag.column_header.tag_mode.none": "sans {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Aucun résultat avec ces mots-clefs", "search_results.statuses": "Messages", "search_results.statuses_fts_disabled": "La recherche de messages par leur contenu n'est pas activée sur ce serveur Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {résultat} other {résultats}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Ouvrir l’interface de modération pour @{name}", "status.admin_status": "Ouvrir ce message dans l’interface de modération", "status.block": "Bloquer @{name}", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index b47dc584c..2c740bf85 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -227,8 +227,8 @@ "getting_started.heading": "Utein sette", "getting_started.invite": "Minsken útnûgje", "getting_started.open_source_notice": "Mastodon is iepen boarne software. Jo kinne sels bydrage of problemen oanjaan troch GitHub op {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Account ynstellings", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "en {additional}", "hashtag.column_header.tag_mode.any": "of {additional}", "hashtag.column_header.tag_mode.none": "sûnder {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Posts", "search_results.statuses_fts_disabled": "Searching posts by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 91f802f70..9e8011971 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -227,8 +227,8 @@ "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Postálacha", "search_results.statuses_fts_disabled": "Searching posts by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 93a53f960..70ec2cbb0 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -227,8 +227,8 @@ "getting_started.heading": "Toiseach", "getting_started.invite": "Thoir cuireadh do dhaoine", "getting_started.open_source_notice": "’S e bathar-bog le bun-tùs fosgailte a th’ ann am Mastodon. ’S urrainn dhut cuideachadh leis no aithris a dhèanamh air duilgheadasan air GitHub fo {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Roghainnean a’ chunntais", - "getting_started.terms": "Teirmichean na seirbheise", "hashtag.column_header.tag_mode.all": "agus {additional}", "hashtag.column_header.tag_mode.any": "no {additional}", "hashtag.column_header.tag_mode.none": "às aonais {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Cha do lorg sinn dad dha na h-abairtean-luirg seo", "search_results.statuses": "Postaichean", "search_results.statuses_fts_disabled": "Chan eil lorg phostaichean a-rèir an susbaint an comas air an fhrithealaiche Mastodon seo.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {toradh} two {thoradh} few {toraidhean} other {toradh}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Fosgail eadar-aghaidh na maorsainneachd dha @{name}", "status.admin_status": "Fosgail am post seo ann an eadar-aghaidh na maorsainneachd", "status.block": "Bac @{name}", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 6b7cf5bed..9ed8c2872 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -227,8 +227,8 @@ "getting_started.heading": "Primeiros pasos", "getting_started.invite": "Convidar persoas", "getting_started.open_source_notice": "Mastodon é software de código aberto. Podes contribuír ou informar de fallos en GitHub en {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Seguranza", - "getting_started.terms": "Termos do servizo", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "ou {additional}", "hashtag.column_header.tag_mode.none": "sen {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Non atopamos nada con estos termos de busca", "search_results.statuses": "Publicacións", "search_results.statuses_fts_disabled": "Procurar publicacións polo seu contido non está activado neste servidor do Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Abrir interface de moderación para @{name}", "status.admin_status": "Abrir esta publicación na interface de moderación", "status.block": "Bloquear a @{name}", @@ -519,10 +523,10 @@ "status.show_less_all": "Amosar menos para todos", "status.show_more": "Amosar máis", "status.show_more_all": "Amosar máis para todos", - "status.show_original": "Show original", + "status.show_original": "Mostrar o orixinal", "status.show_thread": "Amosar fío", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Traducir", + "status.translated_from": "Traducido do {lang}", "status.uncached_media_warning": "Non dispoñíbel", "status.unmute_conversation": "Deixar de silenciar conversa", "status.unpin": "Desafixar do perfil", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index a27e0e827..5e0323585 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -227,8 +227,8 @@ "getting_started.heading": "בואו נתחיל", "getting_started.invite": "להזמין אנשים", "getting_started.open_source_notice": "מסטודון היא תוכנה חופשית (בקוד פתוח). ניתן לתרום או לדווח על בעיות בגיטהאב: {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "הגדרות חשבון", - "getting_started.terms": "תנאי שימוש", "hashtag.column_header.tag_mode.all": "ו- {additional}", "hashtag.column_header.tag_mode.any": "או {additional}", "hashtag.column_header.tag_mode.none": "ללא {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "לא נמצא דבר עבור תנאי חיפוש אלה", "search_results.statuses": "פוסטים", "search_results.statuses_fts_disabled": "חיפוש פוסטים לפי תוכן לא מאופשר בשרת מסטודון זה.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {תוצאה} other {תוצאות}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "פתח/י ממשק ניהול עבור @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "חסימת @{name}", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index 9c2b9e618..2d222d4cb 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -227,8 +227,8 @@ "getting_started.heading": "पहले कदम रखें", "getting_started.invite": "दोस्तों को आमंत्रित करें", "getting_started.open_source_notice": "मास्टोडॉन एक मुक्त स्रोत सॉफ्टवेयर है. आप गिटहब {github} पर इस सॉफ्टवेयर में योगदान या किसी भी समस्या को सूचित कर सकते है.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "अकाउंट सेटिंग्स", - "getting_started.terms": "सेवा की शर्तें", "hashtag.column_header.tag_mode.all": "और {additional}", "hashtag.column_header.tag_mode.any": "या {additional}", "hashtag.column_header.tag_mode.none": "बिना {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index ebb102b44..4356fd297 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -227,8 +227,8 @@ "getting_started.heading": "Počnimo", "getting_started.invite": "Pozovi ljude", "getting_started.open_source_notice": "Mastodon je softver otvorenog kôda. Možete pridonijeti ili prijaviti probleme na GitHubu na {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Postavke računa", - "getting_started.terms": "Uvjeti pružanja usluga", "hashtag.column_header.tag_mode.all": "i {additional}", "hashtag.column_header.tag_mode.any": "ili {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 08df3cbc9..3a183f304 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -227,8 +227,8 @@ "getting_started.heading": "Első lépések", "getting_started.invite": "Mások meghívása", "getting_started.open_source_notice": "A Mastodon nyílt forráskódú szoftver. Közreműködhetsz vagy problémákat jelenthetsz a GitHubon: {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Fiókbeállítások", - "getting_started.terms": "Felhasználási feltételek", "hashtag.column_header.tag_mode.all": "és {additional}", "hashtag.column_header.tag_mode.any": "vagy {additional}", "hashtag.column_header.tag_mode.none": "{additional} nélkül", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Nincs találat ezekre a keresési kifejezésekre", "search_results.statuses": "Bejegyzések", "search_results.statuses_fts_disabled": "Ezen a Mastodon szerveren nem engedélyezett a bejegyzések tartalom szerinti keresése.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {találat} other {találat}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Moderációs felület megnyitása @{name} fiókhoz", "status.admin_status": "Bejegyzés megnyitása a moderációs felületen", "status.block": "@{name} letiltása", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index 44fd15696..48e5bc53f 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -227,8 +227,8 @@ "getting_started.heading": "Ինչպէս սկսել", "getting_started.invite": "Հրաւիրել մարդկանց", "getting_started.open_source_notice": "Մաստոդոնը բաց ելատեքստով ծրագրակազմ է։ Կարող ես ներդրում անել կամ վրէպներ զեկուցել ԳիթՀաբում՝ {github}։", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Հաշուի կարգաւորումներ", - "getting_started.terms": "Ծառայութեան պայմանները", "hashtag.column_header.tag_mode.all": "եւ {additional}", "hashtag.column_header.tag_mode.any": "կամ {additional}", "hashtag.column_header.tag_mode.none": "առանց {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Գրառումներ", "search_results.statuses_fts_disabled": "Այս հանգոյցում միացուած չէ ըստ բովանդակութեան գրառում փնտրելու հնարաւորութիւնը։", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {արդիւնք} other {արդիւնք}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Բացել @{name} օգտատիրոջ մոդերացիայի դիմերէսը։", "status.admin_status": "Բացել այս գրառումը մոդերատորի դիմերէսի մէջ", "status.block": "Արգելափակել @{name}֊ին", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 986e06c24..f81b7d9ad 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -227,8 +227,8 @@ "getting_started.heading": "Mulai", "getting_started.invite": "Undang orang", "getting_started.open_source_notice": "Mastodon adalah perangkat lunak yang bersifat terbuka. Anda dapat berkontribusi atau melaporkan permasalahan/bug di Github {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Keamanan", - "getting_started.terms": "Ketentuan layanan", "hashtag.column_header.tag_mode.all": "dan {additional}", "hashtag.column_header.tag_mode.any": "atau {additional}", "hashtag.column_header.tag_mode.none": "tanpa {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Tidak dapat menemukan apapun untuk istilah-istilah pencarian ini", "search_results.statuses": "Toot", "search_results.statuses_fts_disabled": "Pencarian toot berdasarkan konten tidak diaktifkan di server Mastadon ini.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {hasil} other {hasil}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Buka antar muka moderasi untuk @{name}", "status.admin_status": "Buka status ini dalam antar muka moderasi", "status.block": "Blokir @{name}", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 485b35f1b..9f61d8297 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -227,8 +227,8 @@ "getting_started.heading": "Debuto", "getting_started.invite": "Invitez personi", "getting_started.open_source_notice": "Mastodon esas programaro kun apertita kodexo. Tu povas kontributar o signalar problemi en GitHub ye {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Kontoopcioni", - "getting_started.terms": "Servkondicioni", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sen {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Ne povas ganar irgo per ca trovvorti", "search_results.statuses": "Posti", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {rezulto} other {rezulti}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Apertez jerintervizajo por @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Restriktez @{name}", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index c58085f1e..d5ed6300d 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -227,8 +227,8 @@ "getting_started.heading": "Komast í gang", "getting_started.invite": "Bjóða fólki", "getting_started.open_source_notice": "Mastodon er opinn og frjáls hugbúnaður. Þú getur lagt þitt af mörkum eða tilkynnt um vandamál á GitHub á slóðinni {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Stillingar notandaaðgangs", - "getting_started.terms": "Þjónustuskilmálar", "hashtag.column_header.tag_mode.all": "og {additional}", "hashtag.column_header.tag_mode.any": "eða {additional}", "hashtag.column_header.tag_mode.none": "án {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Gat ekki fundið neitt sem samsvarar þessum leitarorðum", "search_results.statuses": "Færslur", "search_results.statuses_fts_disabled": "Að leita í efni færslna er ekki virkt á þessum Mastodon-þjóni.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {niðurstaða} other {niðurstöður}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Opna umsjónarviðmót fyrir @{name}", "status.admin_status": "Opna þessa færslu í umsjónarviðmótinu", "status.block": "Útiloka @{name}", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 4376c0cff..6e2b97463 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -227,8 +227,8 @@ "getting_started.heading": "Come iniziare", "getting_started.invite": "Invita qualcuno", "getting_started.open_source_notice": "Mastodon è un software open source. Puoi contribuire o segnalare errori su GitHub all'indirizzo {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Sicurezza", - "getting_started.terms": "Condizioni del servizio", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "senza {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Impossibile trovare qualcosa per questi termini di ricerca", "search_results.statuses": "Post", "search_results.statuses_fts_disabled": "La ricerca di post per il loro contenuto non è abilitata su questo server Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count} {count, plural, one {risultato} other {risultati}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Apri interfaccia di moderazione per @{name}", "status.admin_status": "Apri questo post nell'interfaccia di moderazione", "status.block": "Blocca @{name}", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 9fcd80947..06f0e320e 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -227,8 +227,8 @@ "getting_started.heading": "スタート", "getting_started.invite": "招待", "getting_started.open_source_notice": "Mastodonはオープンソースソフトウェアです。誰でもGitHub ({github}) から開発に参加したり、問題を報告したりできます。", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "アカウント設定", - "getting_started.terms": "プライバシーポリシー", "hashtag.column_header.tag_mode.all": "と{additional}", "hashtag.column_header.tag_mode.any": "か{additional}", "hashtag.column_header.tag_mode.none": "({additional} を除く)", @@ -472,7 +472,11 @@ "search_results.nothing_found": "この検索条件では何も見つかりませんでした", "search_results.statuses": "投稿", "search_results.statuses_fts_disabled": "このサーバーでは投稿本文の検索は利用できません。", + "search_results.title": "Search for {q}", "search_results.total": "{count, number}件の結果", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "@{name}さんのモデレーション画面を開く", "status.admin_status": "この投稿をモデレーション画面で開く", "status.block": "@{name}さんをブロック", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index f10c97e1c..941c2e832 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -227,8 +227,8 @@ "getting_started.heading": "დაწყება", "getting_started.invite": "ხალხის მოწვევა", "getting_started.open_source_notice": "მასტოდონი ღია პროგრამაა. შეგიძლიათ შეუწყოთ ხელი ან შექმნათ პრობემის რეპორტი {github}-ზე.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "უსაფრთხოება", - "getting_started.terms": "მომსახურების პირობები", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "ტუტები", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "დაბლოკე @{name}", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 644dff4b5..11603156c 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -227,8 +227,8 @@ "getting_started.heading": "Bdu", "getting_started.invite": "Snebgi-d imdanen", "getting_started.open_source_notice": "Maṣṭudun d aseɣzan s uɣbalu yeldin. Tzemreḍ ad tɛiwneḍ neɣ ad temmleḍ uguren deg GitHub {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Iɣewwaṛen n umiḍan", - "getting_started.terms": "Tiwetlin n useqdec", "hashtag.column_header.tag_mode.all": "d {additional}", "hashtag.column_header.tag_mode.any": "neɣ {additional}", "hashtag.column_header.tag_mode.none": "war {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Tibeṛṛaniyin", "search_results.statuses_fts_disabled": "Anadi ɣef tjewwiqin s ugbur-nsent ur yermid ara deg uqeddac-agi n Maṣṭudun.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {n ugemmuḍ} other {n yigemmuḍen}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Seḥbes @{name}", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index 5e77a5959..d7d63fae7 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -227,8 +227,8 @@ "getting_started.heading": "Желіде", "getting_started.invite": "Адам шақыру", "getting_started.open_source_notice": "Mastodon - ашық кодты құрылым. Түзету енгізу немесе ұсыныстарды GitHub арқылы жасаңыз {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Қауіпсіздік", - "getting_started.terms": "Қызмет көрсету шарттары", "hashtag.column_header.tag_mode.all": "және {additional}", "hashtag.column_header.tag_mode.any": "немесе {additional}", "hashtag.column_header.tag_mode.none": "{additional} болмай", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Жазбалар", "search_results.statuses_fts_disabled": "Mastodon серверінде постты толық мәтінмен іздей алмайсыз.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {нәтиже} other {нәтиже}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "@{name} үшін модерация интерфейсін аш", "status.admin_status": "Бұл жазбаны модерация интерфейсінде аш", "status.block": "Бұғаттау @{name}", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index 15cafe8f9..c91aac867 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -227,8 +227,8 @@ "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 4d2d5e449..4910b9a88 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -227,8 +227,8 @@ "getting_started.heading": "시작", "getting_started.invite": "초대", "getting_started.open_source_notice": "Mastodon은 오픈 소스 소프트웨어입니다. 누구나 GitHub({github})에서 개발에 참여하거나, 문제를 보고할 수 있습니다.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "계정 설정", - "getting_started.terms": "이용 약관", "hashtag.column_header.tag_mode.all": "그리고 {additional}", "hashtag.column_header.tag_mode.any": "또는 {additional}", "hashtag.column_header.tag_mode.none": "{additional}를 제외하고", @@ -472,7 +472,11 @@ "search_results.nothing_found": "검색어에 대한 결과를 찾을 수 없습니다", "search_results.statuses": "게시물", "search_results.statuses_fts_disabled": "이 마스토돈 서버에선 게시물의 내용을 통한 검색이 활성화 되어 있지 않습니다.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number}건의 결과", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "@{name}에 대한 중재 화면 열기", "status.admin_status": "중재 화면에서 이 게시물 열기", "status.block": "@{name} 차단", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 41e512432..19d960a0a 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -227,8 +227,8 @@ "getting_started.heading": "Destpêkirin", "getting_started.invite": "Kesan vexwîne", "getting_started.open_source_notice": "Mastodon nermalava çavkaniya vekirî ye. Tu dikarî pirsgirêkan li ser GitHub-ê ragihînî di {github} de an jî dikarî tevkariyê bikî.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Sazkariyên ajimêr", - "getting_started.terms": "Mercên karûberan", "hashtag.column_header.tag_mode.all": "û {additional}", "hashtag.column_header.tag_mode.any": "an {additional}", "hashtag.column_header.tag_mode.none": "bêyî {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Ji bo van peyvên lêgerînê tiştek nehate dîtin", "search_results.statuses": "Şandî", "search_results.statuses_fts_disabled": "Di vê rajekara Mastodonê da lêgerîna şandîyên li gorî naveroka wan ne çalak e.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {encam} other {encam}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Ji bo @{name} navrûya venihêrtinê veke", "status.admin_status": "Vê şandîyê di navrûya venihêrtinê de veke", "status.block": "@{name} asteng bike", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index 34f72a365..b63008eaa 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -227,8 +227,8 @@ "getting_started.heading": "Dhe dhalleth", "getting_started.invite": "Gelwel tus", "getting_started.open_source_notice": "Mastodon yw medhelweyth a fenten ygor. Hwi a yll kevri po reportya kudynnow dre GitHub dhe {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Dewisyow akont", - "getting_started.terms": "Ambosow an gonis", "hashtag.column_header.tag_mode.all": "ha(g) {additional}", "hashtag.column_header.tag_mode.any": "po {additional}", "hashtag.column_header.tag_mode.none": "heb {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Postow", "search_results.statuses_fts_disabled": "Nyns yw hwilas postow der aga dalgh gweythresys y'n leuren Mastodon ma.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {sewyans} other {sewyans}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Ygeri ynterfas koswa rag @{name}", "status.admin_status": "Ygeri an post ma y'n ynterfas koswa", "status.block": "Lettya @{name}", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index e01e35714..2c8bf82a5 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -227,8 +227,8 @@ "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 83d30aa0f..d2fe1b745 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -227,8 +227,8 @@ "getting_started.heading": "Darba sākšana", "getting_started.invite": "Uzaicini cilvēkus", "getting_started.open_source_notice": "Mastodon ir atvērtā koda programmatūra. Tu vari dot savu ieguldījumu vai arī ziņot par problēmām {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Konta iestatījumi", - "getting_started.terms": "Pakalpojuma noteikumi", "hashtag.column_header.tag_mode.all": "un {additional}", "hashtag.column_header.tag_mode.any": "vai {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Nevarēja atrast neko šiem meklēšanas vienumiem", "search_results.statuses": "Ziņas", "search_results.statuses_fts_disabled": "Šajā Mastodon serverī nav iespējota ziņu meklēšana pēc to satura.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {rezultāts} other {rezultāti}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Atvērt @{name} moderēšanas saskarni", "status.admin_status": "Atvērt šo ziņu moderācijas saskarnē", "status.block": "Bloķēt @{name}", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index 916a8e98a..829251daa 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -227,8 +227,8 @@ "getting_started.heading": "Започни", "getting_started.invite": "Покани луѓе", "getting_started.open_source_notice": "Мастодон е софтвер со отворен код. Можете да придонесувате или пријавувате проблеми во GitHub на {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Поставки на сметката", - "getting_started.terms": "Услови на користење", "hashtag.column_header.tag_mode.all": "и {additional}", "hashtag.column_header.tag_mode.any": "или {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index 12196c123..d8bfee5d2 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -227,8 +227,8 @@ "getting_started.heading": "തുടക്കം കുറിക്കുക", "getting_started.invite": "ആളുകളെ ക്ഷണിക്കുക", "getting_started.open_source_notice": "മാസ്റ്റഡോൺ ഒരു സ്വതന്ത്ര സോഫ്ട്‍വെയർ ആണ്. നിങ്ങൾക്ക് {github} GitHub ൽ സംഭാവന ചെയ്യുകയോ പ്രശ്നങ്ങൾ അറിയിക്കുകയോ ചെയ്യാം.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "അംഗത്വ ക്രമീകരണങ്ങൾ", - "getting_started.terms": "സേവന വ്യവസ്ഥകൾ", "hashtag.column_header.tag_mode.all": "{additional} ഉം കൂടെ", "hashtag.column_header.tag_mode.any": "അല്ലെങ്കിൽ {additional}", "hashtag.column_header.tag_mode.none": "{additional} ഇല്ലാതെ", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "ടൂട്ടുകൾ", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "@{name} -നെ തടയുക", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index 6f120c6fb..4e44813b2 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -227,8 +227,8 @@ "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 4dd6ddb40..8457b4dc7 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -227,8 +227,8 @@ "getting_started.heading": "Mari bermula", "getting_started.invite": "Undang orang", "getting_started.open_source_notice": "Mastodon itu perisian bersumber terbuka. Anda boleh menyumbang atau melaporkan masalah di GitHub menerusi {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Tetapan akaun", - "getting_started.terms": "Terma perkhidmatan", "hashtag.column_header.tag_mode.all": "dan {additional}", "hashtag.column_header.tag_mode.any": "atau {additional}", "hashtag.column_header.tag_mode.none": "tanpa {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Hantaran", "search_results.statuses_fts_disabled": "Menggelintar hantaran menggunakan kandungannya tidak didayakan di pelayan Mastodon ini.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, other {hasil}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Buka antara muka penyederhanaan untuk @{name}", "status.admin_status": "Buka hantaran ini dalam antara muka penyederhanaan", "status.block": "Sekat @{name}", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index eab9adbc7..db8c6957a 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -227,8 +227,8 @@ "getting_started.heading": "Aan de slag", "getting_started.invite": "Mensen uitnodigen", "getting_started.open_source_notice": "Mastodon is vrije software. Je kunt bijdragen of problemen melden op GitHub via {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Accountinstellingen", - "getting_started.terms": "Voorwaarden", "hashtag.column_header.tag_mode.all": "en {additional}", "hashtag.column_header.tag_mode.any": "of {additional}", "hashtag.column_header.tag_mode.none": "zonder {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Deze zoektermen leveren geen resultaat op", "search_results.statuses": "Berichten", "search_results.statuses_fts_disabled": "Het zoeken in berichten is op deze Mastodon-server niet ingeschakeld.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resultaat} other {resultaten}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Moderatie-omgeving van @{name} openen", "status.admin_status": "Dit bericht in de moderatie-omgeving openen", "status.block": "@{name} blokkeren", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 810f23be6..03db34b65 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -227,8 +227,8 @@ "getting_started.heading": "Kom i gang", "getting_started.invite": "Byd folk inn", "getting_started.open_source_notice": "Mastodon er fri programvare. Du kan bidraga eller rapportera problem med GitHub på {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Kontoinnstillingar", - "getting_started.terms": "Brukarvilkår", "hashtag.column_header.tag_mode.all": "og {additional}", "hashtag.column_header.tag_mode.any": "eller {additional}", "hashtag.column_header.tag_mode.none": "utan {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Kunne ikkje finne noko for desse søkeorda", "search_results.statuses": "Tut", "search_results.statuses_fts_disabled": "På denne Matsodon-tenaren kan du ikkje søkja på tut etter innhaldet deira.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {treff} other {treff}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Opne moderasjonsgrensesnitt for @{name}", "status.admin_status": "Opne denne statusen i moderasjonsgrensesnittet", "status.block": "Blokker @{name}", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 7d00b48a7..640a34f9e 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -227,8 +227,8 @@ "getting_started.heading": "Kom i gang", "getting_started.invite": "Inviter folk", "getting_started.open_source_notice": "Mastodon er fri programvare. Du kan bidra eller rapportere problemer på GitHub på {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Kontoinnstillinger", - "getting_started.terms": "Bruksvilkår", "hashtag.column_header.tag_mode.all": "og {additional}", "hashtag.column_header.tag_mode.any": "eller {additional}", "hashtag.column_header.tag_mode.none": "uten {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Tuter", "search_results.statuses_fts_disabled": "Å søke i tuter etter innhold er ikke skrudd på i denne Mastodon-tjeneren.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resultat} other {resultater}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Åpne moderatorgrensesnittet for @{name}", "status.admin_status": "Åpne denne statusen i moderatorgrensesnittet", "status.block": "Blokkér @{name}", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 9ae4445fd..28e8228b1 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -227,8 +227,8 @@ "getting_started.heading": "Per començar", "getting_started.invite": "Convidar de mond", "getting_started.open_source_notice": "Mastodon es un logicial liure. Podètz contribuir e mandar vòstres comentaris e rapòrt de bug via {github} sus GitHub.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Seguretat", - "getting_started.terms": "Condicions d’utilizacion", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sens {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Tuts", "search_results.statuses_fts_disabled": "La recèrca de tuts per lor contengut es pas activada sus aqueste servidor Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resultat} other {resultats}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Dobrir l’interfàcia de moderacion per @{name}", "status.admin_status": "Dobrir aqueste estatut dins l’interfàcia de moderacion", "status.block": "Blocar @{name}", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index f8e7597e5..7e3bba2df 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -227,8 +227,8 @@ "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 71ae209f3..3748053f4 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -227,8 +227,8 @@ "getting_started.heading": "Rozpocznij", "getting_started.invite": "Zaproś znajomych", "getting_started.open_source_notice": "Mastodon jest oprogramowaniem o otwartym źródle. Możesz pomóc w rozwoju lub zgłaszać błędy na GitHubie tutaj: {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Bezpieczeństwo", - "getting_started.terms": "Zasady użytkowania", "hashtag.column_header.tag_mode.all": "i {additional}", "hashtag.column_header.tag_mode.any": "lub {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Nie znaleziono innych wyników dla tego wyszukania", "search_results.statuses": "Wpisy", "search_results.statuses_fts_disabled": "Szukanie wpisów przy pomocy ich zawartości nie jest włączone na tym serwerze Mastodona.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {wynik} few {wyniki} many {wyników} other {wyników}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Otwórz interfejs moderacyjny dla @{name}", "status.admin_status": "Otwórz ten wpis w interfejsie moderacyjnym", "status.block": "Zablokuj @{name}", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 5e0f9058f..f6442086e 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -227,8 +227,8 @@ "getting_started.heading": "Primeiros passos", "getting_started.invite": "Convidar pessoas", "getting_started.open_source_notice": "Mastodon é um software de código aberto. Você pode contribuir ou reportar problemas na página do projeto no GitHub em {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Configurações da conta", - "getting_started.terms": "Termos de serviço", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "ou {additional}", "hashtag.column_header.tag_mode.none": "sem {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Não foi possível encontrar nada para estes termos de busca", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Pesquisar toots por seu conteúdo não está ativado nesta instância Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Abrir interface de moderação para @{name}", "status.admin_status": "Abrir este toot na interface de moderação", "status.block": "Bloquear @{name}", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 7c9936c6d..56a08516c 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -227,8 +227,8 @@ "getting_started.heading": "Primeiros passos", "getting_started.invite": "Convidar pessoas", "getting_started.open_source_notice": "Mastodon é um software de código aberto. Podes contribuir ou reportar problemas no GitHub do projeto: {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Segurança", - "getting_started.terms": "Termos de serviço", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "ou {additional}", "hashtag.column_header.tag_mode.none": "sem {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Não foi possível encontrar resultados para as expressões pesquisadas", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "A pesquisa de toots pelo seu conteúdo não está disponível nesta instância Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Abrir a interface de moderação para @{name}", "status.admin_status": "Abrir esta publicação na interface de moderação", "status.block": "Bloquear @{name}", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 9ef230567..a301aeade 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -227,8 +227,8 @@ "getting_started.heading": "Primii pași", "getting_started.invite": "Invită persoane", "getting_started.open_source_notice": "Mastodon este un software cu sursă deschisă (open source). Poți contribui la dezvoltarea lui sau raporta probleme pe GitHub la {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Setări cont", - "getting_started.terms": "Termeni și condiții", "hashtag.column_header.tag_mode.all": "și {additional}", "hashtag.column_header.tag_mode.any": "sau {additional}", "hashtag.column_header.tag_mode.none": "fără {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Postări", "search_results.statuses_fts_disabled": "Căutarea de postări după conținutul lor nu este activată pe acest server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {rezultat} other {rezultate}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Deschide interfața de moderare pentru @{name}", "status.admin_status": "Deschide această stare în interfața de moderare", "status.block": "Blochează pe @{name}", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 47a0a7953..e8e7c4d3e 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -227,8 +227,8 @@ "getting_started.heading": "Начать", "getting_started.invite": "Пригласить людей", "getting_started.open_source_notice": "Mastodon — сервис с открытым исходным кодом. Вы можете внести вклад или сообщить о проблемах на GitHub: {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Настройки учётной записи", - "getting_started.terms": "Условия использования", "hashtag.column_header.tag_mode.all": "и {additional}", "hashtag.column_header.tag_mode.any": "или {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Ничего не найдено по этому запросу", "search_results.statuses": "Посты", "search_results.statuses_fts_disabled": "Поиск постов по их содержанию не поддерживается данным сервером Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {результат} few {результата} many {результатов} other {результатов}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Открыть интерфейс модератора для @{name}", "status.admin_status": "Открыть этот пост в интерфейсе модератора", "status.block": "Заблокировать @{name}", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index 11d2b9e2f..062aa51e8 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -227,8 +227,8 @@ "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 1623bacdc..30e66f396 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -227,8 +227,8 @@ "getting_started.heading": "Comente cumintzare", "getting_started.invite": "Invita gente", "getting_started.open_source_notice": "Mastodon est de còdighe abertu. Bi podes contribuire o sinnalare faddinas in {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Cunfiguratziones de su contu", - "getting_started.terms": "Cunditziones de su servìtziu", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sena {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Publicatziones", "search_results.statuses_fts_disabled": "Sa chirca de publicatziones pro su cuntenutu issoro no est abilitada in custu serbidore de Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resurtadu} other {resurtados}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Aberi s'interfache de moderatzione pro @{name}", "status.admin_status": "Aberi custa publicatzione in s'interfache de moderatzione", "status.block": "Bloca a @{name}", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index a1205e3b4..28738ccb5 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -227,8 +227,8 @@ "getting_started.heading": "පටන් ගන්න", "getting_started.invite": "මිනිසුන්ට ආරාධනය", "getting_started.open_source_notice": "Mastodon යනු විවෘත කේත මෘදුකාංගයකි. ඔබට GitHub හි {github}ට දායක වීමට හෝ ගැටළු වාර්තා කිරීමට හැකිය.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "ගිණුමේ සැකසුම්", - "getting_started.terms": "සේවාවේ නියම", "hashtag.column_header.tag_mode.all": "සහ {additional}", "hashtag.column_header.tag_mode.any": "හෝ {additional}", "hashtag.column_header.tag_mode.none": "{additional}නොමැතිව", @@ -472,7 +472,11 @@ "search_results.nothing_found": "මෙම සෙවුම් පද සඳහා කිසිවක් සොයාගත නොහැකි විය", "search_results.statuses": "ලිපි", "search_results.statuses_fts_disabled": "මෙම Mastodon සේවාදායකයේ ඒවායේ අන්තර්ගතය අනුව මෙවලම් සෙවීම සබල නොවේ.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {ප්රතිඵලය} other {ප්රතිපල}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "@{name}සඳහා මධ්‍යස්ථ අතුරුමුහුණත විවෘත කරන්න", "status.admin_status": "මධ්‍යස්ථ අතුරුමුහුණතෙහි මෙම තත්ත්වය විවෘත කරන්න", "status.block": "@{name} අවහිර", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 620b8dfc1..f44495a82 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -227,8 +227,8 @@ "getting_started.heading": "Začni tu", "getting_started.invite": "Pozvi ľudí", "getting_started.open_source_notice": "Mastodon je softvér s otvoreným kódom. Nahlásiť chyby, alebo prispievať môžeš na GitHube v {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Zabezpečenie", - "getting_started.terms": "Podmienky prevozu", "hashtag.column_header.tag_mode.all": "a {additional}", "hashtag.column_header.tag_mode.any": "alebo {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Príspevky", "search_results.statuses_fts_disabled": "Vyhľadávanie v obsahu príspevkov nieje na tomto Mastodon serveri povolené.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {výsledok} many {výsledkov} other {výsledky}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Otvor moderovacie rozhranie užívateľa @{name}", "status.admin_status": "Otvor tento príspevok v moderovacom rozhraní", "status.block": "Blokuj @{name}", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index d2e2fdbab..a33fb8b89 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -227,8 +227,8 @@ "getting_started.heading": "Kako začeti", "getting_started.invite": "Povabite osebe", "getting_started.open_source_notice": "Mastodon je odprtokodna programska oprema. Na GitHubu na {github} lahko prispevate ali poročate o napakah.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Varnost", - "getting_started.terms": "Pogoji uporabe", "hashtag.column_header.tag_mode.all": "in {additional}", "hashtag.column_header.tag_mode.any": "ali {additional}", "hashtag.column_header.tag_mode.none": "brez {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Za ta iskalni niz ni zadetkov", "search_results.statuses": "Objave", "search_results.statuses_fts_disabled": "Iskanje objav po njihovi vsebini ni omogočeno na tem strežniku Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {rezultat} other {rezultatov}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Odpri vmesnik za moderiranje za @{name}", "status.admin_status": "Odpri status v vmesniku za moderiranje", "status.block": "Blokiraj @{name}", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 5e971ce6e..344d76344 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -227,8 +227,8 @@ "getting_started.heading": "Si t’ia fillohet", "getting_started.invite": "Ftoni njerëz", "getting_started.open_source_notice": "Mastodon-i është software me burim të hapur. Mund të jepni ndihmesë ose të njoftoni probleme në GitHub, te {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Rregullime llogarie", - "getting_started.terms": "Kushte shërbimi", "hashtag.column_header.tag_mode.all": "dhe {additional}", "hashtag.column_header.tag_mode.any": "ose {additional}", "hashtag.column_header.tag_mode.none": "pa {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "S’u gjet gjë për këto terma kërkimi", "search_results.statuses": "Mesazhe", "search_results.statuses_fts_disabled": "Kërkimi i mesazheve sipas lëndës së tyre s’është i aktivizuar në këtë shërbyes Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {përfundim} other {përfundime}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Hap ndërfaqe moderimi për @{name}", "status.admin_status": "Hape këtë mesazh te ndërfaqja e moderimit", "status.block": "Blloko @{name}", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 1bb6218a3..d5aa11511 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -227,8 +227,8 @@ "getting_started.heading": "Da počnete", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodont je softver otvorenog koda. Možete mu doprineti ili prijaviti probleme preko GitHub-a na {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {rezultat} few {rezultata} other {rezultata}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 5fa8b1b89..19c79920d 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -227,8 +227,8 @@ "getting_started.heading": "Да почнете", "getting_started.invite": "Позовите људе", "getting_started.open_source_notice": "Мастoдон је софтвер отвореног кода. Можете му допринети или пријавити проблеме преко ГитХаба на {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Безбедност", - "getting_started.terms": "Услови коришћења", "hashtag.column_header.tag_mode.all": "и {additional}", "hashtag.column_header.tag_mode.any": "или {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Трубе", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {резултат} few {резултата} other {резултата}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Отвори модераторски интерфејс за @{name}", "status.admin_status": "Отвори овај статус у модераторском интерфејсу", "status.block": "Блокирај @{name}", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 78ff55ceb..ea98863e7 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -227,8 +227,8 @@ "getting_started.heading": "Kom igång", "getting_started.invite": "Skicka inbjudningar", "getting_started.open_source_notice": "Mastodon är programvara med öppen källkod. Du kan bidra eller rapportera problem via GitHub på {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Kontoinställningar", - "getting_started.terms": "Användarvillkor", "hashtag.column_header.tag_mode.all": "och {additional}", "hashtag.column_header.tag_mode.any": "eller {additional}", "hashtag.column_header.tag_mode.none": "utan {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Kunde inte hitta något för dessa sökord", "search_results.statuses": "Inlägg", "search_results.statuses_fts_disabled": "Att söka toots med deras innehåll är inte möjligt på denna Mastodon-server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Öppet modereringsgränssnitt för @{name}", "status.admin_status": "Öppna denna status i modereringsgränssnittet", "status.block": "Blockera @{name}", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index f8e7597e5..7e3bba2df 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -227,8 +227,8 @@ "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 54ada2e22..4d12bb1cc 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -227,8 +227,8 @@ "getting_started.heading": "முதன்மைப் பக்கம்", "getting_started.invite": "நண்பர்களை அழைக்க", "getting_started.open_source_notice": "மாஸ்டடான் ஒரு open source மென்பொருள் ஆகும். {github} -இன் மூலம் உங்களால் இதில் பங்களிக்கவோ, சிக்கல்களைத் தெரியப்படுத்தவோ முடியும்.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "கணக்கு அமைப்புகள்", - "getting_started.terms": "சேவை விதிமுறைகள்", "hashtag.column_header.tag_mode.all": "மற்றும் {additional}", "hashtag.column_header.tag_mode.any": "அல்லது {additional}", "hashtag.column_header.tag_mode.none": "{additional} தவிர்த்து", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "டூட்டுகள்", "search_results.statuses_fts_disabled": "டூட்டுகளின் வார்த்தைகளைக்கொண்டு தேடுவது இந்த மச்டோடன் வழங்கியில் இயல்விக்கப்படவில்லை.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} மற்ற {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "மிதமான இடைமுகத்தை திறக்க @{name}", "status.admin_status": "மிதமான இடைமுகத்தில் இந்த நிலையை திறக்கவும்", "status.block": "@{name} -ஐத் தடு", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 0ffc9e198..79ed59434 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -227,8 +227,8 @@ "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index 2ee3052c7..e327c3859 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -227,8 +227,8 @@ "getting_started.heading": "మొదలుపెడదాం", "getting_started.invite": "వ్యక్తులను ఆహ్వానించండి", "getting_started.open_source_notice": "మాస్టొడొన్ ఓపెన్ సోర్స్ సాఫ్ట్వేర్. మీరు {github} వద్ద GitHub పై సమస్యలను నివేదించవచ్చు లేదా తోడ్పడచ్చు.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "భద్రత", - "getting_started.terms": "సేవా నిబంధనలు", "hashtag.column_header.tag_mode.all": "మరియు {additional}", "hashtag.column_header.tag_mode.any": "లేదా {additional}", "hashtag.column_header.tag_mode.none": "{additional} లేకుండా", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "టూట్లు", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "@{name} కొరకు సమన్వయ వినిమయసీమను తెరువు", "status.admin_status": "సమన్వయ వినిమయసీమలో ఈ స్టేటస్ ను తెరవండి", "status.block": "@{name} ను బ్లాక్ చేయి", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 5ee8a8e3a..287448bf4 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -227,8 +227,8 @@ "getting_started.heading": "เริ่มต้นใช้งาน", "getting_started.invite": "เชิญผู้คน", "getting_started.open_source_notice": "Mastodon เป็นซอฟต์แวร์โอเพนซอร์ส คุณสามารถมีส่วนร่วมหรือรายงานปัญหาได้ใน GitHub ที่ {github}", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "การตั้งค่าบัญชี", - "getting_started.terms": "เงื่อนไขการให้บริการ", "hashtag.column_header.tag_mode.all": "และ {additional}", "hashtag.column_header.tag_mode.any": "หรือ {additional}", "hashtag.column_header.tag_mode.none": "โดยไม่มี {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "ไม่พบสิ่งใดสำหรับคำค้นหาเหล่านี้", "search_results.statuses": "โพสต์", "search_results.statuses_fts_disabled": "ไม่มีการเปิดใช้งานการค้นหาโพสต์โดยเนื้อหาของโพสต์ในเซิร์ฟเวอร์ Mastodon นี้", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, other {ผลลัพธ์}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "เปิดส่วนติดต่อการควบคุมสำหรับ @{name}", "status.admin_status": "เปิดโพสต์นี้ในส่วนติดต่อการควบคุม", "status.block": "ปิดกั้น @{name}", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 4ddcef55a..b3b539f68 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -227,8 +227,8 @@ "getting_started.heading": "Başlarken", "getting_started.invite": "İnsanları davet et", "getting_started.open_source_notice": "Mastodon açık kaynaklı bir yazılımdır. GitHub'taki {github} üzerinden katkıda bulunabilir veya sorunları bildirebilirsiniz.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Hesap ayarları", - "getting_started.terms": "Kullanım şartları", "hashtag.column_header.tag_mode.all": "ve {additional}", "hashtag.column_header.tag_mode.any": "ya da {additional}", "hashtag.column_header.tag_mode.none": "{additional} olmadan", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Bu arama seçenekleriyle bir sonuç bulunamadı", "search_results.statuses": "Gönderiler", "search_results.statuses_fts_disabled": "Bu Mastodon sunucusunda gönderi içeriğine göre arama etkin değil.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {sonuç} other {sonuç}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "@{name} için denetim arayüzünü açın", "status.admin_status": "Denetim arayüzünde bu gönderiyi açın", "status.block": "@{name} adlı kişiyi engelle", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index 7bfa44882..0bc6dee62 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -227,8 +227,8 @@ "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "@{name} блоклау", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index f8e7597e5..7e3bba2df 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -227,8 +227,8 @@ "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index a81cefe32..1001222c2 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -227,8 +227,8 @@ "getting_started.heading": "Розпочати", "getting_started.invite": "Запросити людей", "getting_started.open_source_notice": "Mastodon — програма з відкритим сирцевим кодом. Ви можете допомогти проєкту, або повідомити про проблеми на GitHub: {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Налаштування облікового запису", - "getting_started.terms": "Умови використання", "hashtag.column_header.tag_mode.all": "та {additional}", "hashtag.column_header.tag_mode.any": "або {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Нічого не вдалося знайти за цими пошуковими термінами", "search_results.statuses": "Дмухів", "search_results.statuses_fts_disabled": "Пошук дописів за вмістом недоступний на даному сервері Mastodon.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {результат} few {результати} many {результатів} other {результатів}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Відкрити інтерфейс модерації для @{name}", "status.admin_status": "Відкрити цей статус в інтерфейсі модерації", "status.block": "Заблокувати @{name}", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index 2460e36a0..b79391be0 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -227,8 +227,8 @@ "getting_started.heading": "آغاز کریں", "getting_started.invite": "دوستوں کو دعوت دیں", "getting_started.open_source_notice": "ماسٹوڈون آزاد منبع سوفٹویر ہے. آپ {github} گِٹ ہب پر مسائل میں معاونت یا مشکلات کی اطلاع دے سکتے ہیں.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "ترتیباتِ اکاؤنٹ", - "getting_started.terms": "شرائط خدمات", "hashtag.column_header.tag_mode.all": "اور {additional}", "hashtag.column_header.tag_mode.any": "یا {additional}", "hashtag.column_header.tag_mode.none": "بغیر {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index a69a1830f..c349fcf8c 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -227,8 +227,8 @@ "getting_started.heading": "Quản lý", "getting_started.invite": "Mời bạn bè", "getting_started.open_source_notice": "Mastodon là phần mềm mã nguồn mở. Bạn có thể đóng góp hoặc báo lỗi trên GitHub tại {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Bảo mật", - "getting_started.terms": "Điều khoản dịch vụ", "hashtag.column_header.tag_mode.all": "và {additional}", "hashtag.column_header.tag_mode.any": "hoặc {additional}", "hashtag.column_header.tag_mode.none": "mà không {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Không tìm thấy kết quả trùng khớp", "search_results.statuses": "Tút", "search_results.statuses_fts_disabled": "Máy chủ của bạn không bật tính năng tìm kiếm tút.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {kết quả} other {kết quả}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Mở giao diện quản trị @{name}", "status.admin_status": "Mở tút này trong giao diện quản trị", "status.block": "Chặn @{name}", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index b83ef1786..9d551e30a 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -227,8 +227,8 @@ "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "ⵜⵉⵙⵖⴰⵍ ⵏ ⵓⵎⵉⴹⴰⵏ", - "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "ⴷ {additional}", "hashtag.column_header.tag_mode.any": "ⵏⵖ {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "ⴳⴷⵍ @{name}", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 40d9168a9..dfddf0a66 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -227,8 +227,8 @@ "getting_started.heading": "开始使用", "getting_started.invite": "邀请用户", "getting_started.open_source_notice": "Mastodon 是开源软件。欢迎前往 GitHub({github})贡献代码或反馈问题。", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "账号设置", - "getting_started.terms": "使用条款", "hashtag.column_header.tag_mode.all": "以及 {additional}", "hashtag.column_header.tag_mode.any": "或是 {additional}", "hashtag.column_header.tag_mode.none": "而不用 {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "无法找到符合这些搜索词的任何内容", "search_results.statuses": "嘟文", "search_results.statuses_fts_disabled": "此 Mastodon 服务器未启用帖子内容搜索。", + "search_results.title": "Search for {q}", "search_results.total": "共 {count, number} 个结果", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "打开 @{name} 的管理界面", "status.admin_status": "打开此帖的管理界面", "status.block": "屏蔽 @{name}", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 47b21d523..65c366a01 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -227,8 +227,8 @@ "getting_started.heading": "開始使用", "getting_started.invite": "邀請使用者", "getting_started.open_source_notice": "Mastodon(萬象)是一個開放源碼的軟件。你可以在官方 GitHub {github} 貢獻或者回報問題。", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "帳戶設定", - "getting_started.terms": "服務條款", "hashtag.column_header.tag_mode.all": "以及{additional}", "hashtag.column_header.tag_mode.any": "或是{additional}", "hashtag.column_header.tag_mode.none": "而無需{additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "文章", "search_results.statuses_fts_disabled": "此 Mastodon 伺服器並未啟用「搜尋文章內章」功能。", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} 項結果", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "開啟 @{name} 的管理介面", "status.admin_status": "在管理介面開啟這篇文章", "status.block": "封鎖 @{name}", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 8189e896c..42ee65281 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -227,8 +227,8 @@ "getting_started.heading": "開始使用", "getting_started.invite": "邀請使用者", "getting_started.open_source_notice": "Mastodon 是開源軟體。您可以在 GitHub {github} 上貢獻或是回報問題。", + "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "帳號安全性設定", - "getting_started.terms": "服務條款", "hashtag.column_header.tag_mode.all": "以及 {additional}", "hashtag.column_header.tag_mode.any": "或是 {additional}", "hashtag.column_header.tag_mode.none": "而無需 {additional}", @@ -472,7 +472,11 @@ "search_results.nothing_found": "無法找到符合搜尋條件之結果", "search_results.statuses": "嘟文", "search_results.statuses_fts_disabled": "「依內容搜尋嘟文」未在此 Mastodon 伺服器啟用。", + "search_results.title": "Search for {q}", "search_results.total": "{count, number} 項結果", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "開啟 @{name} 的管理介面", "status.admin_status": "在管理介面開啟此嘟文", "status.block": "封鎖 @{name}", diff --git a/config/locales/activerecord.cs.yml b/config/locales/activerecord.cs.yml index 50c4fc8c3..5505254e5 100644 --- a/config/locales/activerecord.cs.yml +++ b/config/locales/activerecord.cs.yml @@ -40,3 +40,12 @@ cs: unreachable: pravděpodobně neexistuje role_id: elevated: nemůže být vyšší než vaše aktuální role + user_role: + attributes: + permissions_as_keys: + dangerous: obsahuje oprávnění, která nejsou bezpečná pro základní roli + elevated: nemůže obsahovat oprávnění, která vaše aktuální role nemá + own_role: nelze změnit s vaší aktuální rolí + position: + elevated: nemůže být vyšší než vaše aktuální role + own_role: nelze změnit s vaší aktuální rolí diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 432c10ce0..691cc8689 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -28,7 +28,6 @@ ar: learn_more: تعلم المزيد logged_in_as_html: أنت متصل حالياً كـ %{username}. logout_before_registering: أنت متصل سلفًا. - privacy_policy: سياسة الخصوصية rules: قوانين الخادم rules_html: 'فيما يلي ملخص للقوانين التي تحتاج إلى اتباعها إذا كنت تريد أن يكون لديك حساب على هذا الخادم من ماستدون:' see_whats_happening: اطّلع على ما يجري @@ -42,7 +41,6 @@ ar: two: منشورات zero: منشورات status_count_before: نشروا - terms: شروط الخدمة unavailable_content: محتوى غير متوفر unavailable_content_description: domain: الخادم @@ -675,9 +673,6 @@ ar: site_short_description: desc_html: يتم عرضه في لوحة جانبية و في البيانات الوصفية. قم بوصف ماستدون و ما يميز هذا السيرفر عن الآخرين في فقرة موجزة. إن تركت الحقل فارغا فسوف يتم عرض الوصف الافتراضي لمثيل الخادوم. title: مقدمة وصفية قصيرة عن مثيل الخادوم - site_terms: - desc_html: يمكنك كتابة سياسة الخصوصية الخاصة بك ، شروط الخدمة أو غيرها من القوانين. يمكنك استخدام علامات HTML - title: شروط الخدمة المخصصة site_title: اسم مثيل الخادم thumbnail: desc_html: يستخدم للعروض السابقة عبر Open Graph و API. 1200x630px موصى به @@ -1436,8 +1431,6 @@ ar: sensitive_content: محتوى حساس tags: does_not_match_previous_name: لا يطابق الإسم السابق - terms: - title: شروط الخدمة وسياسة الخصوصية على %{instance} themes: contrast: ماستدون (تباين عالٍ) default: ماستدون (داكن) diff --git a/config/locales/ast.yml b/config/locales/ast.yml index 2d175592b..2ab79c6fc 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -17,14 +17,12 @@ ast: get_apps: En preseos móviles hosted_on: Mastodon ta agospiáu en %{domain} learn_more: Saber más - privacy_policy: Política de privacidá server_stats: 'Estadístiques del sirvidor:' source_code: Códigu fonte status_count_after: one: artículu other: artículos status_count_before: Que crearon - terms: Términos del serviciu unavailable_content_description: domain: Sirvidor reason: Motivu diff --git a/config/locales/bg.yml b/config/locales/bg.yml index 43b8a13ba..23c11e543 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -21,7 +21,6 @@ bg: get_apps: Опитайте мобилно приложение hosted_on: Mastodon е хостван на %{domain} learn_more: Още информация - privacy_policy: Политика за поверителност see_whats_happening: Вижте какво се случва server_stats: 'Сървърна статистика:' source_code: Програмен код @@ -29,7 +28,6 @@ bg: one: състояние other: състояния status_count_before: Написали - terms: Условия за ползване unavailable_content: Модерирани сървъри unavailable_content_description: domain: Сървър diff --git a/config/locales/bn.yml b/config/locales/bn.yml index bbeab8655..a30d933e5 100644 --- a/config/locales/bn.yml +++ b/config/locales/bn.yml @@ -23,7 +23,6 @@ bn: hosted_on: এই মাস্টাডনটি আছে %{domain} এ instance_actor_flash: "এই অ্যাকাউন্টটি ভার্চুয়াল এক্টর যা নিজে কোনও সার্ভারের প্রতিনিধিত্ব করতে ব্যবহৃত হয় এবং কোনও পৃথক ব্যবহারকারী নয়। এটি ফেডারেশনের উদ্দেশ্যে ব্যবহৃত হয় এবং আপনি যদি পুরো ইনস্ট্যান্স ব্লক করতে না চান তবে অবরুদ্ধ করা উচিত নয়, সেক্ষেত্রে আপনার ডোমেন ব্লক ব্যবহার করা উচিত। \n" learn_more: বিস্তারিত জানুন - privacy_policy: গোপনীয়তা নীতি see_whats_happening: কী কী হচ্ছে দেখুন server_stats: 'সার্ভারের অবস্থা:' source_code: আসল তৈরীপত্র @@ -31,7 +30,6 @@ bn: one: অবস্থা other: স্থিতিগুলি status_count_before: কে লিখেছে - terms: ব্যবহারের শর্তাবলী unavailable_content: অনুপলব্ধ সামগ্রী unavailable_content_description: domain: সার্ভার diff --git a/config/locales/br.yml b/config/locales/br.yml index 4d34f3388..0e9b9d1ee 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -9,7 +9,6 @@ br: contact: Darempred discover_users: Dizoleiñ implijer·ien·ezed learn_more: Gouzout hiroc'h - privacy_policy: Reolennoù prevezded rules: Reolennoù ar servijer server_stats: 'Stadegoù ar servijer:' source_code: Boneg tarzh @@ -19,7 +18,6 @@ br: one: toud other: toud two: toud - terms: Divizoù gwerzhañ hollek unavailable_content_description: domain: Dafariad user_count_after: diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 43d77f636..3f381d76c 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -28,7 +28,7 @@ ca: learn_more: Aprèn més logged_in_as_html: Actualment has iniciat sessió com a %{username}. logout_before_registering: Ja has iniciat sessió. - privacy_policy: Política de privadesa + privacy_policy: Política de Privacitat rules: Normes del servidor rules_html: 'A continuació, es mostra un resum de les normes que has de seguir si vols tenir un compte en aquest servidor de Mastodon:' see_whats_happening: Mira què està passant @@ -39,7 +39,6 @@ ca: other: publicacions status_count_before: Qui ha publicat tagline: Xarxa social descentralitzada - terms: Condicions de servei unavailable_content: Servidors moderats unavailable_content_description: domain: Servidor @@ -797,8 +796,8 @@ ca: desc_html: Es mostra a la barra lateral i a metaetiquetes. Descriu en un únic paràgraf què és Mastodon i què fa que aquest servidor sigui especial. title: Descripció curta del servidor site_terms: - desc_html: Pots escriure la teva pròpia política de privadesa, els termes del servei o d'altres normes legals. Pots utilitzar etiquetes HTML - title: Termes del servei personalitzats + desc_html: Pots escriure la teva pròpia política de privacitat. Pots fer servir etiquetes HTML + title: Política de privacitat personalitzada site_title: Nom del servidor thumbnail: desc_html: S'utilitza per obtenir visualitzacions prèvies a través d'OpenGraph i API. Es recomana 1200x630px @@ -1710,7 +1709,7 @@ ca:

Atribució

This text is free to be adapted and remixed under the terms of the CC-BY (Attribution 4.0 International) license. - title: "%{instance} Condicions del servei i política de privadesa" + title: Política de Privacitat de %{instance} themes: contrast: Mastodon (alt contrast) default: Mastodon (fosc) diff --git a/config/locales/ckb.yml b/config/locales/ckb.yml index 6c91b571a..fe2dffcc1 100644 --- a/config/locales/ckb.yml +++ b/config/locales/ckb.yml @@ -27,7 +27,6 @@ ckb: learn_more: زیاتر فێربه logged_in_as_html: لە ئێستادا تۆ وەک %{username} چوویتە ژوورەوە. logout_before_registering: تۆ پێشتر چوویتە ژوورەوە. - privacy_policy: ڕامیاری تایبەتێتی rules: یاساکانی سێرڤەر rules_html: 'لە خوارەوە کورتەیەک لەو یاسایانە دەخەینەڕوو کە پێویستە پەیڕەوی لێبکەیت ئەگەر بتەوێت ئەکاونتێکت هەبێت لەسەر ئەم سێرڤەرەی ماستۆدۆن:' see_whats_happening: بزانە چی ڕوودەدات @@ -37,7 +36,6 @@ ckb: one: دۆخ other: پۆست status_count_before: لە لایەن یەکەوە - terms: مەرجەکانی خزمەتگوزاری unavailable_content: ڕاژەی چاودێریکراو unavailable_content_description: domain: ڕاژەکار @@ -631,9 +629,6 @@ ckb: site_short_description: desc_html: نیشان لە شریتی لاتەنیشت و مێتا تاگەکان. لە پەرەگرافێک دا وەسفی بکە کە ماستۆدۆن چیە و چی وا لە ڕاژە کە دەکات تایبەت بێت. title: دەربارەی ئەم ڕاژە - site_terms: - desc_html: دەتوانیت سیاسەتی تایبەتیێتی خۆت بنووسیت، مەرجەکانی خزمەتگوزاری یان یاسایی تر. دەتوانیت تاگەکانی HTML بەکاربێنیت - title: مەرجەکانی خزمەتگوزاری ئاسایی site_title: ناوی ڕاژە thumbnail: desc_html: بۆ پێشبینین بەکارهاتووە لە ڕێگەی OpenGraph وە API. ڕووناکی بینین ١٢٠٠x٦٣٠پیکسێڵ پێشنیارکراوە @@ -1177,8 +1172,6 @@ ckb: sensitive_content: ناوەڕۆکی هەستیار tags: does_not_match_previous_name: لەگەڵ ناوی پێشوو یەک ناگرێتەوە - terms: - title: "%{instance} مەرجەکانی خزمەتگوزاری و سیاسەتی تایبەتیێتی" themes: contrast: ماستۆدۆن (کۆنتراستی بەرز) default: ماستۆدۆن (ڕەش) diff --git a/config/locales/co.yml b/config/locales/co.yml index 9844cb8c1..bb0339440 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -25,7 +25,6 @@ co: Stu contu ghjè un'attore virtuale chì ghjove à riprisentà u servore sanu è micca un veru utilizatore. Hè utilizatu da a federazione è ùn deve micca esse bluccatu eccettu s'e voi vulete bluccà tuttu u servore, in quellu casu duvereste utilizà un blucchime di duminiu. learn_more: Amparà di più - privacy_policy: Pulitica di vita privata rules: Regule di u servore rules_html: 'Eccu un riassuntu di e regule da siguità s''e voi vulete creà un contu nant''à quessu servore di Mastodon:' see_whats_happening: Vede cio chì si passa @@ -35,7 +34,6 @@ co: one: statutu other: statuti status_count_before: Chì anu pubblicatu - terms: Cundizione di u serviziu unavailable_content: Cuntinutu micca dispunibule unavailable_content_description: domain: Servore @@ -589,9 +587,6 @@ co: site_short_description: desc_html: Mustratu indè a barra laterala è i tag meta. Spiegate quale hè Mastodon è ciò chì rende u vostru servore speciale in un paragrafu. S'ella hè lasciata viota, a discrizzione di u servore sarà utilizata. title: Descrizzione corta di u servore - site_terms: - desc_html: Quì pudete scrive e vostre regule di cunfidenzialità, cundizione d’usu o altre menzione legale. Pudete fà usu di marchi HTML - title: Termini persunalizati site_title: Nome di u servore thumbnail: desc_html: Utilizatu per viste cù OpenGraph è l’API. Ricumandemu 1200x630px @@ -1211,8 +1206,6 @@ co: sensitive_content: Cuntenutu sensibile tags: does_not_match_previous_name: ùn currisponde micca à l'anzianu nome - terms: - title: Termini d’usu è di cunfidenzialità per %{instance} themes: contrast: Mastodon (Cuntrastu altu) default: Mastodon (Scuru) diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 4478d2420..fbde9e051 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -28,7 +28,7 @@ cs: learn_more: Zjistit více logged_in_as_html: Aktuálně jste přihlášeni jako %{username}. logout_before_registering: Již jste přihlášeni. - privacy_policy: Zásady ochrany osobních údajů + privacy_policy: Ochrana osobních údajů rules: Pravidla serveru rules_html: 'Níže je shrnutí pravidel, která musíte dodržovat, pokud chcete mít účet na tomto Mastodon serveru:' see_whats_happening: Podívejte se, co se děje @@ -41,7 +41,6 @@ cs: other: příspěvků status_count_before: Kteří napsali tagline: Decentralizovaná sociální síť - terms: Podmínky používání unavailable_content: Moderované servery unavailable_content_description: domain: Server @@ -696,8 +695,10 @@ cs: moderation: Moderování special: Speciální delete: Smazat + description_html: Pomocí uživatelských rolímůžete upravit, ke kterým funkcím a oblastem mají přístup uživatelé Mastodon. edit: Upravit roli „%{name}“ everyone: Výchozí oprávnění + everyone_full_description_html: Toto je základní role ovlivňující všechny uživatele, a to i bez přiřazené role. Všechny ostatní role od ní dědí oprávnění. permissions_count: few: "%{count} oprávnění" many: "%{count} oprávnění" @@ -705,27 +706,41 @@ cs: other: "%{count} oprávnění" privileges: administrator: Správce + administrator_description: Uživatelé s tímto oprávněním obejdou všechna oprávnění delete_user_data: Mazat uživatelská data delete_user_data_description: Umožňuje uživatelům bezodkladně mazat data jiných uživatelů invite_users: Zvát uživatele invite_users_description: Umožňuje uživatelům zvát na server nové lidi manage_announcements: Spravovat oznámení + manage_announcements_description: Umožňuje uživatelům spravovat oznámení na serveru manage_appeals: Spravovat odvolání manage_appeals_description: Umožňuje uživatelům posuzovat odvolání proti moderátorským zásahům manage_blocks: Spravovat blokace + manage_blocks_description: Umožňuje uživatelům blokovat poskytovatele e-mailů a IP adresy manage_custom_emojis: Spravovat vlastní emoji manage_custom_emojis_description: Umožňuje uživatelům spravovat vlastní emoji na serveru + manage_federation: Spravovat federaci + manage_federation_description: Umožňuje uživatelům blokovat nebo povolit federaci s jinými doménami a ovládat doručování manage_invites: Spravovat pozvánky + manage_invites_description: Umožňuje uživatelům procházet a deaktivovat pozvánky manage_reports: Spravovat hlášení + manage_reports_description: Umožňuje uživatelům kontrolovat přehledy a provádět moderovací akce proti nim manage_roles: Spravovat role + manage_roles_description: Umožňuje uživatelům spravovat a přiřazovat role pod nimi manage_rules: Spravovat pravidla + manage_rules_description: Umožňuje uživatelům změnit pravidla serveru manage_settings: Spravovat nastavení + manage_settings_description: Umožňuje uživatelům změnit nastavení webu manage_taxonomies: Správa taxonomií + manage_taxonomies_description: Umožňuje uživatelům zkontrolovat populární obsah a aktualizovat nastavení hashtag manage_user_access: Spravovat uživatelské přístupy manage_user_access_description: Umožňuje uživatelům rušit jiným uživatelům dvoufázové ověřování, měnit jejich e-mailovou adresu a obnovovat jim hesla manage_users: Spravovat uživatele + manage_users_description: Umožňuje uživatelům zobrazit podrobnosti ostatních uživatelů a provádět moderování proti nim manage_webhooks: Spravovat webhooky + manage_webhooks_description: Umožňuje uživatelům nastavit webhooky pro administrativní události view_audit_log: Zobrazovat protokol auditu + view_audit_log_description: Umožňuje uživatelům vidět historii administrativních akcí na serveru view_dashboard: Zobrazit ovládací panel view_dashboard_description: Umožňuje uživatelům přístup k ovládacímu panelu a různým metrikám view_devops: Devops @@ -805,8 +820,8 @@ cs: desc_html: Zobrazeno v postranním panelu a meta značkách. V jednom odstavci popište, co je Mastodon a čím se tento server odlišuje od ostatních. title: Krátký popis serveru site_terms: - desc_html: Můžete si napsat vlastní zásady ochrany osobních údajů, podmínky používání či jiné právní dokumenty. Můžete použít HTML značky - title: Vlastní podmínky používání + desc_html: Můžete napsat své vlastní zásady ochrany osobních údajů. HTML tagy můžete použít + title: Vlastní zásady ochrany osobních údajů site_title: Název serveru thumbnail: desc_html: Používáno pro náhledy přes OpenGraph a API. Doporučujeme rozlišení 1200x630px @@ -1211,6 +1226,7 @@ cs: add_keyword: Přidat klíčové slovo keywords: Klíčová slova statuses: Individuální příspěvky + statuses_hint_html: Tento filtr platí pro výběr jednotlivých příspěvků bez ohledu na to, zda odpovídají klíčovým slovům níže. Zkontrolujte nebo odeberte příspěvky z filtru. title: Upravit filtr errors: deprecated_api_multiple_keywords: Tyto parametry nelze změnit z této aplikace, protože se vztahují na více než jedno klíčové slovo filtru. Použijte novější aplikaci nebo webové rozhraní. @@ -1226,6 +1242,11 @@ cs: many: "%{count} klíčových slov" one: "%{count} klíčové slovo" other: "%{count} klíčových slov" + statuses: + few: "%{count} příspěvků" + many: "%{count} příspěvků" + one: "%{count} příspěvek" + other: "%{count} příspěvků" title: Filtry new: save: Uložit nový filtr @@ -1235,6 +1256,7 @@ cs: batch: remove: Odstranit z filtru index: + hint: Tento filtr se vztahuje na výběr jednotlivých příspěvků bez ohledu na jiná kritéria. Do tohoto filtru můžete přidat více příspěvků z webového rozhraní. title: Filtrované příspěvky footer: developers: Vývojáři @@ -1736,7 +1758,7 @@ cs:

Tento dokument je dostupný pod licencí CC-BY-SA. Byl naposledy aktualizován 26. května 2022.

Původně adaptováno ze zásad ochrany osobních údajů projektu Discourse.

- title: Podmínky používání a zásady ochrany osobních údajů na serveru %{instance} + title: Zásady ochrany osobních údajů %{instance} themes: contrast: Mastodon (vysoký kontrast) default: Mastodon (tmavý) diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 7b6a0ef70..86a134a26 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -28,7 +28,6 @@ cy: learn_more: Dysgu mwy logged_in_as_html: Rydych chi wedi mewngofnodi fel %{username}. logout_before_registering: Rydych chi eisoes wedi mewngofnodi. - privacy_policy: Polisi preifatrwydd rules: Rheolau gweinydd rules_html: 'Isod mae crynodeb o''r rheolau y mae angen i chi eu dilyn os ydych chi am gael cyfrif ar y gweinydd hwn o Mastodon:' see_whats_happening: Gweld beth sy'n digwydd @@ -42,7 +41,6 @@ cy: two: statwsau zero: statwsau status_count_before: Ysgrifennwyd gan - terms: Telerau gwasanaeth unavailable_content: Cynnwys nad yw ar gael unavailable_content_description: domain: Gweinydd @@ -498,9 +496,6 @@ cy: site_short_description: desc_html: Yn cael ei ddangos yn bar ar yr ochr a tagiau meto. Digrifiwch beth yw Mastodon a beth sy'n gwneud y gweinydd hwn mewn un paragraff. Os yn wag, wedi ei ragosod i ddangos i disgrifiad yr achos. title: Disgrifiad byr o'r achos - site_terms: - desc_html: Mae modd i chi ysgrifennu polisi preifatrwydd, termau gwasanaeth a cyfreitheg arall eich hun. Mae modd defnyddio tagiau HTML - title: Termau gwasanaeth wedi eu haddasu site_title: Enw'r achos thumbnail: desc_html: Ceith ei ddefnyddio ar gyfer rhagolygon drwy OpenGraph a'r API. Argymhellir 1200x630px @@ -1047,8 +1042,6 @@ cy: too_late: Mae'n rhy hwyr i apelio yn erbyn y rhybudd hwn tags: does_not_match_previous_name: ddim yn cyfateb i'r enw blaenorol - terms: - title: "%{instance} Termau Gwasanaeth a Polisi Preifatrwydd" themes: contrast: Mastodon (Cyferbyniad uchel) default: Mastodon (Tywyll) diff --git a/config/locales/da.yml b/config/locales/da.yml index 9b6250ad3..3379b82c3 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -39,7 +39,6 @@ da: other: indlæg status_count_before: Som har postet tagline: Decentraliseret socialt netværk - terms: Tjenestevilkår unavailable_content: Modererede servere unavailable_content_description: domain: Server @@ -796,8 +795,8 @@ da: desc_html: Vises på sidebjælke og metatags. Beskriv i et enkelt afsnit, hvad Mastodon er, og hvad der gør denne server speciel. title: Kort serverbeskrivelse site_terms: - desc_html: Der kan angives egen fortrolighedspolitik, tjenestevilkår el.lign. HTML-tags kan bruges - title: Tilpassede tjenestevilkår + desc_html: Man kan skrive sin egen fortrolighedspolitik. HTML-tags understøttes + title: Tilpasset fortrolighedspolitik site_title: Servernavn thumbnail: desc_html: Bruges til forhåndsvisninger via OpenGraph og API. 1200x630px anbefales @@ -1717,7 +1716,7 @@ da:

Dette dokument er CC-BY-SA. Det er senest opdateret 26. maj 2022.

Oprindeligt tilpasset fra Discourse-fortrolighedspolitik.

- title: Tjenestevilkår og Fortrolighedspolitik for %{instance} + title: "%{instance}-fortrolighedspolitik" themes: contrast: Mastodon (høj kontrast) default: Mastodont (mørkt) diff --git a/config/locales/de.yml b/config/locales/de.yml index d411886bf..b84604a68 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -28,7 +28,6 @@ de: learn_more: Mehr erfahren logged_in_as_html: Du bist derzeit als %{username} eingeloggt. logout_before_registering: Du bist bereits angemeldet. - privacy_policy: Datenschutzerklärung rules: Server-Regeln rules_html: 'Unten ist eine Zusammenfassung der Regeln, denen du folgen musst, wenn du ein Konto auf diesem Mastodon-Server haben möchtest:' see_whats_happening: Finde heraus, was gerade in der Welt los ist @@ -39,7 +38,6 @@ de: other: Beiträge status_count_before: mit tagline: Dezentrales soziales Netzwerk - terms: Nutzungsbedingungen unavailable_content: Nicht verfügbarer Inhalt unavailable_content_description: domain: Server @@ -796,9 +794,6 @@ de: site_short_description: desc_html: Wird in der Seitenleiste und in Meta-Tags angezeigt. Beschreibe in einem einzigen Abschnitt, was Mastodon ist und was diesen Server von anderen unterscheidet. Falls leer, wird die Server-Beschreibung verwendet. title: Kurze Beschreibung des Servers - site_terms: - desc_html: Hier kannst du deine eigenen Geschäftsbedingungen, Datenschutzerklärung und anderes rechtlich Relevante eintragen. Du kannst HTML-Tags nutzen - title: Benutzerdefinierte Geschäftsbedingungen site_title: Name des Servers thumbnail: desc_html: Wird für die Vorschau via OpenGraph und API verwendet. 1200×630 px wird empfohlen @@ -1687,7 +1682,6 @@ de:

Dies ist eine Übersetzung, Irrtümer und Übersetzungsfehler vorbehalten. Im Zweifelsfall gilt die englische Originalversion.

Dieses Dokument ist CC-BY-SA. Es wurde zuletzt aktualisiert am 26. Mai 2022.

Ursprünglich übernommen von der Discourse-Datenschutzerklärung.

- title: "%{instance} Nutzungsbedingungen und Datenschutzerklärung" themes: contrast: Mastodon (Hoher Kontrast) default: Mastodon (Dunkel) diff --git a/config/locales/el.yml b/config/locales/el.yml index 8c7c29ac2..7b23b5f9f 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -26,7 +26,7 @@ el: Χρησιμεύει στη λειτουργία της ομοσπονδίας και δε θα πρέπει να αποκλειστεί, εκτός κι αν είναι επιθυμητός ο αποκλεισμός ολόκληρου του κόμβου. Σε αυτή την περίπτωση θα πρέπει να χρησιμοποιηθεί η λειτουργία αποκλεισμού τομέα. learn_more: Μάθε περισσότερα logout_before_registering: Είστε ήδη συνδεδεμένοι. - privacy_policy: Πολιτική απορρήτου + privacy_policy: Πολιτική Απορρήτου rules: Κανόνες διακομιστή rules_html: 'Παρακάτω είναι μια σύνοψη των κανόνων που πρέπει να ακολουθήσετε αν θέλετε να έχετε ένα λογαριασμό σε αυτόν τον διακομιστή Mastodon:' see_whats_happening: Μάθε τι συμβαίνει @@ -37,7 +37,6 @@ el: other: δημοσιεύσεις status_count_before: Που έγραψαν tagline: Αποκεντρωμένο κοινωνικό δίκτυο - terms: Όροι χρήσης unavailable_content: Μη διαθέσιμο unavailable_content_description: domain: Διακομιστής @@ -570,8 +569,8 @@ el: desc_html: Εμφανίζεται στην πλαϊνή μπάρα και στα meta tags. Περιέγραψε τι είναι το Mastodon και τι κάνει αυτό τον διακομιστή ιδιαίτερο σε μια παράγραφο. Αν μείνει κενό, θα χρησιμοποιήσει την προκαθορισμένη περιγραφή του κόμβου. title: Σύντομη περιγραφή του κόμβου site_terms: - desc_html: Μπορείς να γράψεις τη δική σου πολιτική απορρήτου, όρους χρήσης ή άλλους νομικούς όρους. Μπορείς να χρησιμοποιήσεις HTML tags - title: Προσαρμοσμένοι όροι χρήσης της υπηρεσίας + desc_html: Μπορείτε να γράψετε τη δική σας πολιτική απορρήτου. Μπορείτε να χρησιμοποιήσετε ετικέτες HTML + title: Προσαρμοσμένη πολιτική απορρήτου site_title: Όνομα κόμβου thumbnail: desc_html: Χρησιμοποιείται για προεπισκοπήσεις μέσω του OpenGraph και του API. Συστήνεται 1200x630px @@ -1152,7 +1151,7 @@ el: tags: does_not_match_previous_name: δεν ταιριάζει με το προηγούμενο όνομα terms: - title: Όροι Χρήσης και Πολιτική Απορρήτου του κόμβου %{instance} + title: "%{instance} Πολιτική Απορρήτου" themes: contrast: Mastodon (Υψηλή αντίθεση) default: Mastodon (Σκοτεινό) diff --git a/config/locales/eo.yml b/config/locales/eo.yml index cca9b0531..c8a7534ac 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -28,7 +28,6 @@ eo: learn_more: Lerni pli logged_in_as_html: Vi nun salutis kiel %{username}. logout_before_registering: Vi jam salutis. - privacy_policy: Politiko de privateco rules: Reguloj de la servilo see_whats_happening: Vidi kio okazas server_stats: 'Statistikoj de la servilo:' @@ -38,7 +37,6 @@ eo: other: mesaĝoj status_count_before: Kie skribiĝis tagline: Malcentrigita socia retejo - terms: Kondiĉoj de la servo unavailable_content: Moderigitaj serviloj unavailable_content_description: domain: Servilo @@ -587,9 +585,6 @@ eo: site_short_description: desc_html: Afiŝita en la flankpanelo kaj metadatumaj etikedoj. Priskribu kio estas Mastodon, kaj kio specialas en ĉi tiu nodo, per unu alineo. Se malplena, la priskribo de la servilo estos uzata. title: Mallonga priskribo de la servilo - site_terms: - desc_html: Vi povas skribi vian propran privatecan politikon, viajn uzkondiĉojn aŭ aliajn leĝaĵojn. Vi povas uzi HTML-etikedojn - title: Propraj kondiĉoj de la servo site_title: Nomo de la servilo thumbnail: desc_html: Uzata por antaŭvidoj per OpenGraph kaj per API. 1200x630px rekomendita @@ -1212,8 +1207,6 @@ eo: sensitive_content: Tikla enhavo tags: does_not_match_previous_name: ne kongruas kun la antaŭa nomo - terms: - title: Uzkondiĉoj kaj privateca politiko de %{instance} themes: contrast: Mastodon (Forta kontrasto) default: Mastodon (Malluma) diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 21c2dde6c..469ca27d9 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -39,7 +39,6 @@ es-AR: other: mensajes status_count_before: Que enviaron tagline: Red social descentralizada - terms: Términos del servicio unavailable_content: Servidores moderados unavailable_content_description: domain: Servidor @@ -797,8 +796,8 @@ es-AR: desc_html: Mostrado en la barra lateral y las etiquetas de metadatos. Describe qué es Mastodon y qué hace especial a este servidor en un solo párrafo. title: Descripción corta del servidor site_terms: - desc_html: Podés escribir tus propias políticas de privacidad, términos del servicio u otras cuestiones legales. Podés usar etiquetas HTML - title: Términos del servicio personalizados + desc_html: Podés escribir tu propia política de privacidad. Podés usar etiquetas HTML + title: Política de privacidad personalizada site_title: Nombre del servidor thumbnail: desc_html: Usado para previsualizaciones vía OpenGraph y APIs. Se recomienda 1200x630 píxeles @@ -1719,7 +1718,7 @@ es-AR:

Este documento se publica bajo la licencia CC-BY-SA (Creative Commons - Atribución - CompartirIgual) y fue actualizado por última vez el 26 de mayo de 2022.

Originalmente adaptado de la Política de privacidad de Discourse.

- title: Términos del servicio y Políticas de privacidad de %{instance} + title: Política de privacidad de %{instance} themes: contrast: Alto contraste default: Oscuro diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 31e10c6fa..92de8c872 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -28,7 +28,6 @@ es-MX: learn_more: Aprende más logged_in_as_html: Actualmente estás conectado como %{username}. logout_before_registering: Actualmente ya has iniciado sesión. - privacy_policy: Política de privacidad rules: Normas del servidor rules_html: 'A continuación hay un resumen de las normas que debes seguir si quieres tener una cuenta en este servidor de Mastodon:' see_whats_happening: Ver lo que está pasando @@ -39,7 +38,6 @@ es-MX: other: estados status_count_before: Qué han escrito tagline: Red social descentralizada - terms: Condiciones de servicio unavailable_content: Contenido no disponible unavailable_content_description: domain: Servidor @@ -796,9 +794,6 @@ es-MX: site_short_description: desc_html: Mostrado en la barra lateral y las etiquetas de metadatos. Describe lo que es Mastodon y qué hace especial a este servidor en un solo párrafo. si está vacío, pone por defecto la descripción de la instancia. title: Descripción corta de la instancia - site_terms: - desc_html: Puedes escribir tus propias políticas de privacidad, términos de servicio u otras legalidades. Puedes usar tags HTML - title: Términos de servicio personalizados site_title: Nombre de instancia thumbnail: desc_html: Se usa para muestras con OpenGraph y APIs. Se recomienda 1200x630px @@ -1686,7 +1681,6 @@ es-MX:

Si decidimos cambiar nuestra política de privacidad, publicaremos esos cambios en esta página.

Este documento es CC-BY-SA. Fue actualizado por última vez el 26 de mayo de 2022.

Adaptado originalmente desde la política de privacidad de Discourse.

- title: Términos del Servicio y Políticas de Privacidad de %{instance} themes: contrast: Alto contraste default: Mastodon diff --git a/config/locales/es.yml b/config/locales/es.yml index 8d9c2bbb3..14e9cc665 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -28,7 +28,6 @@ es: learn_more: Aprende más logged_in_as_html: Actualmente has iniciado sesión como %{username}. logout_before_registering: Ya has iniciado sesión. - privacy_policy: Política de privacidad rules: Normas del servidor rules_html: 'A continuación hay un resumen de las normas que debes seguir si quieres tener una cuenta en este servidor de Mastodon:' see_whats_happening: Ver lo que está pasando @@ -39,7 +38,6 @@ es: other: estados status_count_before: Qué han escrito tagline: Red social descentralizada - terms: Condiciones de servicio unavailable_content: Contenido no disponible unavailable_content_description: domain: Servidor @@ -796,9 +794,6 @@ es: site_short_description: desc_html: Mostrado en la barra lateral y las etiquetas de metadatos. Describe lo que es Mastodon y qué hace especial a este servidor en un solo párrafo. si está vacío, pone por defecto la descripción de la instancia. title: Descripción corta de la instancia - site_terms: - desc_html: Puedes escribir tus propias políticas de privacidad, términos de servicio u otras legalidades. Puedes usar tags HTML - title: Términos de servicio personalizados site_title: Nombre de instancia thumbnail: desc_html: Se usa para muestras con OpenGraph y APIs. Se recomienda 1200x630px @@ -1686,7 +1681,6 @@ es:

Si decidimos cambiar nuestra política de privacidad, publicaremos esos cambios en esta página.

Este documento es CC-BY-SA. Fue actualizado por última vez el 26 de mayo de 2022.

Adaptado originalmente desde la política de privacidad de Discourse.

- title: Términos del Servicio y Políticas de Privacidad de %{instance} themes: contrast: Alto contraste default: Mastodon diff --git a/config/locales/et.yml b/config/locales/et.yml index 5b354afd9..f6df72ee0 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -25,7 +25,6 @@ et: See konto on virtuaalne näitleja, mis esindab tervet serverit ning mitte ühtegi kindlat isikut. Seda kasutatakse föderatiivsetel põhjustel ning seda ei tohiks blokeerida, välja arvatud juhul, kui soovite blokeerida tervet serverit, kuid sellel juhul soovitame hoopis kasutada domeeni blokeerimist. learn_more: Lisateave - privacy_policy: Privaatsuspoliitika rules: Serveri reeglid rules_html: 'Järgneb kokkuvõte reeglitest, mida pead järgima, kui lood endale siin Mastodoni serveris konto:' see_whats_happening: Vaata, mis toimub @@ -35,7 +34,6 @@ et: one: postitust other: staatuseid status_count_before: Kes on avaldanud - terms: Kasutustingimused unavailable_content: Sisu pole saadaval unavailable_content_description: reason: Põhjus @@ -451,9 +449,6 @@ et: site_short_description: desc_html: Kuvatud küljeribal ja metasiltides. Kirjelda, mis on Mastodon ja mis on selles serveris erilist ühes lõigus. title: Serveri lühikirjeldus - site_terms: - desc_html: Te saate kirjutada oma privaatsuspoliitika, kasutustingimused jm seaduslikku infot. Te saate kasutada HTMLi silte - title: Kasutustingimused site_title: Serveri nimi thumbnail: desc_html: Kasutatud OpenGraph ja API eelvaadeteks. 1200x630px soovitatud @@ -938,8 +933,6 @@ et: sensitive_content: Tundlik sisu tags: does_not_match_previous_name: ei ühti eelmise nimega - terms: - title: "%{instance} Kasutustingimused ja Privaatsuspoliitika" themes: contrast: Mastodon (Kõrge kontrast) default: Mastodon (Tume) diff --git a/config/locales/eu.yml b/config/locales/eu.yml index f0910aaba..9d783724c 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -26,7 +26,6 @@ eu: learn_more: Ikasi gehiago logged_in_as_html: "%{username} bezala saioa hasita zaude." logout_before_registering: Saioa hasi duzu jada. - privacy_policy: Pribatutasun politika rules: Zerbitzariaren arauak rules_html: 'Behean Mastodon zerbitzari honetan kontua eduki nahi baduzu jarraitu beharreko arauen laburpena daukazu:' see_whats_happening: Ikusi zer gertatzen ari den @@ -36,7 +35,6 @@ eu: one: bidalketa other: bidalketa status_count_before: Hauek - terms: Erabilera baldintzak unavailable_content: Eduki eskuraezina unavailable_content_description: domain: Zerbitzaria @@ -684,9 +682,6 @@ eu: site_short_description: desc_html: Albo-barra eta meta etiketetan bistaratua. Deskribatu zerk egiten duen Mastodon zerbitzari hau berezia paragrafo batean. Hutsik lagatzekotan lehenetsitako deskripzioa agertuko da. title: Zerbitzariaren deskripzio laburra - site_terms: - desc_html: Zure pribatutasun politika, erabilera baldintzak eta bestelako testu legalak idatzi ditzakezu. HTML etiketak erabili ditzakezu - title: Erabilera baldintza pertsonalizatuak site_title: Zerbitzariaren izena thumbnail: desc_html: Aurrebistetarako erabilia OpenGraph eta API bidez. 1200x630px aholkatzen da @@ -1385,8 +1380,6 @@ eu: sensitive_content: 'Kontuz: Eduki hunkigarria' tags: does_not_match_previous_name: ez dator aurreko izenarekin bat - terms: - title: "%{instance} instantziaren erabilera baldintzak eta pribatutasun politika" themes: contrast: Mastodon (Kontraste altua) default: Mastodon (Iluna) diff --git a/config/locales/fa.yml b/config/locales/fa.yml index fa6448770..39424f3d6 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -28,7 +28,6 @@ fa: learn_more: بیشتر بدانید logged_in_as_html: شما هم‌اکنون به عنوان %{username} وارد شده‌اید. logout_before_registering: شما هم‌اکنون وارد شده‌اید. - privacy_policy: سیاست رازداری rules: قوانین کارساز rules_html: 'در زیر خلاصه‌ای از قوانینی که در صورت علاقه به داشتن حسابی روی این کارساز ماستودون، باید رعایت کنید آمده است:' see_whats_happening: ببینید چه خبر است @@ -38,7 +37,6 @@ fa: one: چیز نوشته‌اند other: چیز نوشته‌اند status_count_before: که در کنار هم - terms: شرایط خدمت unavailable_content: محتوای ناموجود unavailable_content_description: domain: کارساز @@ -664,9 +662,6 @@ fa: site_short_description: desc_html: روی نوار کناری و همچنین به عنوان فرادادهٔ صفحه‌ها نمایش می‌یابد. در یک بند توضیح دهید که ماستودون چیست و چرا این کارساز با بقیه فرق دارد. title: توضیح کوتاه دربارهٔ سرور - site_terms: - desc_html: می‌توانید سیاست رازداری، شرایط استفاده، یا سایر مسائل قانونی را به دلخواه خود بنویسید. تگ‌های HTML هم مجاز است - title: شرایط استفادهٔ سفارشی site_title: نام سرور thumbnail: desc_html: برای دیدن با OpenGraph و رابط برنامه‌نویسی. وضوح پیشنهادی ۱۲۰۰×۶۳۰ پیکسل @@ -1352,8 +1347,6 @@ fa: sensitive_content: محتوای حساس tags: does_not_match_previous_name: با نام پیشین مطابق نیست - terms: - title: شرایط استفاده و سیاست رازداری %{instance} themes: contrast: ماستودون (سایه‌روشن بالا) default: ماستودون (تیره) diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 397a40e69..1416c1250 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -28,7 +28,6 @@ fi: learn_more: Lisätietoja logged_in_as_html: Olet kirjautunut sisään nimellä %{username}. logout_before_registering: Olet jo kirjautunut sisään. - privacy_policy: Tietosuojakäytäntö rules: Palvelimen säännöt rules_html: 'Alla on yhteenveto säännöistä, joita sinun on noudatettava, jos haluat olla tili tällä Mastodonin palvelimella:' see_whats_happening: Näe mitä tapahtuu @@ -39,7 +38,6 @@ fi: other: julkaisua status_count_before: Julkaistu tagline: Hajautettu sosiaalinen verkosto - terms: Käyttöehdot unavailable_content: Moderoidut palvelimet unavailable_content_description: domain: Palvelin @@ -790,9 +788,6 @@ fi: site_short_description: desc_html: Näytetään sivupalkissa ja kuvauksessa. Kerro yhdessä kappaleessa, mitä Mastodon on ja mikä tekee palvelimesta erityisen. title: Lyhyt instanssin kuvaus - site_terms: - desc_html: Tähän voit kirjoittaa tietosuojakäytännöistä, käyttöehdoista ja sen sellaisista asioista. Voit käyttää HTML-tageja - title: Omavalintaiset käyttöehdot site_title: Instanssin nimi thumbnail: desc_html: Käytetään esikatseluissa OpenGraphin ja API:n kautta. Suosituskoko 1200x630 pikseliä @@ -1618,8 +1613,6 @@ fi: too_late: On liian myöhäistä vedota tähän varoitukseen tags: does_not_match_previous_name: ei vastaa edellistä nimeä - terms: - title: "%{instance}, käyttöehdot ja tietosuojakäytäntö" themes: contrast: Mastodon (Korkea kontrasti) default: Mastodon (Tumma) diff --git a/config/locales/fr.yml b/config/locales/fr.yml index a0409693c..ff10ff636 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -28,7 +28,6 @@ fr: learn_more: En savoir plus logged_in_as_html: Vous êtes actuellement connecté·e en tant que %{username}. logout_before_registering: Vous êtes déjà connecté·e. - privacy_policy: Politique de confidentialité rules: Règles du serveur rules_html: 'Voici un résumé des règles que vous devez suivre si vous voulez avoir un compte sur ce serveur de Mastodon :' see_whats_happening: Quoi de neuf @@ -39,7 +38,6 @@ fr: other: messages status_count_before: Ayant publié tagline: Réseau social décentralisé - terms: Conditions d’utilisation unavailable_content: Serveurs modérés unavailable_content_description: domain: Serveur @@ -781,9 +779,6 @@ fr: site_short_description: desc_html: Affichée dans la barre latérale et dans les méta-tags. Décrivez ce qui rend spécifique ce serveur Mastodon en un seul paragraphe. Si laissée vide, la description du serveur sera affiché par défaut. title: Description courte du serveur - site_terms: - desc_html: Vous pouvez écrire votre propre politique de confidentialité, conditions d’utilisation ou autre jargon juridique. Vous pouvez utiliser des balises HTML - title: Politique de confidentialité site_title: Nom du serveur thumbnail: desc_html: Utilisée pour les prévisualisations via OpenGraph et l’API. 1200x630px recommandé @@ -1676,7 +1671,6 @@ fr:

Ce document est publié sous licence CC-BY-SA. Il a été mis à jour pour la dernière fois le 26 mai 2022.

Initialement adapté de la politique de confidentialité de Discourse.

- title: Conditions d’utilisation et politique de confidentialité de %{instance} themes: contrast: Mastodon (Contraste élevé) default: Mastodon (Sombre) diff --git a/config/locales/ga.yml b/config/locales/ga.yml index 19a67a8ec..4656b83db 100644 --- a/config/locales/ga.yml +++ b/config/locales/ga.yml @@ -2,7 +2,6 @@ ga: about: api: API - privacy_policy: Polasaí príobháideachais unavailable_content_description: domain: Freastalaí reason: Fáth diff --git a/config/locales/gd.yml b/config/locales/gd.yml index 7c8df8f6b..2f0639990 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -28,7 +28,6 @@ gd: learn_more: Barrachd fiosrachaidh logged_in_as_html: Tha thu air do chlàradh a-steach an-dràsta mar %{username}. logout_before_registering: Tha thu air clàradh a-steach mu thràth. - privacy_policy: Poileasaidh prìobhaideachd rules: Riaghailtean an fhrithealaiche rules_html: 'Tha geàrr-chunntas air na riaghailtean a dh’fheumas tu gèilleadh riutha ma tha thu airson cunntas fhaighinn air an fhrithealaiche Mastodon seo gu h-ìosal:' see_whats_happening: Faic dè tha dol @@ -41,7 +40,6 @@ gd: two: phost status_count_before: A dh’fhoillsich tagline: Lìonra sòisealta sgaoilte - terms: Teirmichean na seirbheise unavailable_content: Frithealaichean fo mhaorsainneachd unavailable_content_description: domain: Frithealaiche @@ -813,9 +811,6 @@ gd: site_short_description: desc_html: Nochdaidh seo air a’ bhàr-taoibh agus sna meata-thagaichean. Mìnich dè th’ ann am Mastodon agus dè tha sònraichte mun fhrithealaiche agad ann an aon earrann a-mhàin. title: Tuairisgeul goirid an fhrithealaiche - site_terms: - desc_html: "’S urrainn dhut am poileasaidh prìobhaideachd no teirmichean na seirbheise agad fhèin no fiosrachadh laghail sa bith eile a sgrìobhadh. ‘S urrainn dhut tagaichean HTML a chleachdadh" - title: Teirmichean gnàthaichte na seirbheise site_title: Ainm an fhrithealaiche thumbnail: desc_html: Thèid seo a chleachdadh airson ro-sheallaidhean slighe OpenGraph no API. Mholamaid 1200x630px @@ -1748,7 +1743,6 @@ gd:

Tha an sgrìobhainn seo fo cheadachas CC-BY-SA. Chaidh ùrachadh an turas mu dheireadh an t-26mh dhen Chèitean 2022.

Chaidh a fhreagarrachadh o thùs o phoileasaidh prìobhaideachd Discourse.

- title: Teirmichean na seirbheise ⁊ poileasaidh prìobhaideachd %{instance} themes: contrast: Mastodon (iomsgaradh àrd) default: Mastodon (dorcha) diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 6c32fcaf3..23b3d52ae 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -28,7 +28,7 @@ gl: learn_more: Saber máis logged_in_as_html: Entraches como %{username}. logout_before_registering: Xa iniciaches sesión. - privacy_policy: Política de privacidade + privacy_policy: Política de Privacidade rules: Regras do servidor rules_html: 'Aquí tes un resumo das regras que debes seguir se queres ter unha conta neste servidor de Mastodon:' see_whats_happening: Mira o que acontece @@ -39,7 +39,6 @@ gl: other: publicacións status_count_before: Que publicaron tagline: Rede social descentralizada - terms: Termos do servizo unavailable_content: Contido non dispoñíbel unavailable_content_description: domain: Servidor @@ -797,8 +796,8 @@ gl: desc_html: Amosado na barra lateral e nos cancelos meta. Describe o que é Mastodon e que fai especial a este servidor nun só parágrafo. Se está baleiro, amosará a descrición do servidor. title: Descrición curta do servidor site_terms: - desc_html: Podes escribir a túa propia política de privacidade, termos de servizo ou aclaracións legais. Podes empregar cancelos HTML - title: Termos de servizo personalizados + desc_html: Podes escribir a túa propia Política de Privacidade e usar etiquetas HTML + title: Política de Privacidade propia site_title: Nome do servidor thumbnail: desc_html: Utilizado para vistas previsas vía OpenGraph e API. Recoméndase 1200x630px @@ -1686,7 +1685,7 @@ gl:

Se decidimos cambiar a nosa política de privacidade publicaremos os cambios nesta páxina.

Este documento ten licenza CC-BY-SA. Actualizouse o 26 de maio de 2022.

Adaptado do orixinal política de privacidade de Discourse.

- title: "%{instance} Termos do Servizo e Política de Intimidade" + title: Política de Privacidade de %{instance} themes: contrast: Mastodon (Alto contraste) default: Mastodon (Escuro) diff --git a/config/locales/he.yml b/config/locales/he.yml index c340f6e6c..3ec99349a 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -28,7 +28,6 @@ he: learn_more: מידע נוסף logged_in_as_html: הנך מחובר/ת כרגע כ-%{username}. logout_before_registering: חשבון זה כבר מחובר. - privacy_policy: מדיניות פרטיות rules: כללי השרת rules_html: 'להלן סיכום הכללים שעליך לעקוב אחריהם על מנת להשתמש בחשבון בשרת מסטודון זה:' see_whats_happening: מה קורה כעת @@ -41,7 +40,6 @@ he: two: פוסטים status_count_before: שכתבו tagline: רשת חברתית מבוזרת - terms: תנאי שימוש unavailable_content: שרתים מוגבלים unavailable_content_description: domain: שרת @@ -822,9 +820,6 @@ he: site_short_description: desc_html: מוצג בעמודה הצידית ובמטא תגים. מתאר מהו מסטודון ומה מיחד שרת זה בפסקה בודדת. title: תאור שרת קצר - site_terms: - desc_html: ניתן לכתוב מדיניות פרטיות, תנאי שירות ושאר מסמכים חוקיים בעצמך. ניתן להשתמש בתגי HTML - title: תנאי שירות יחודיים site_title: כותרת האתר thumbnail: desc_html: משמש לתצוגה מקדימה דרך OpenGraph והממשק. מומלץ 1200x630px @@ -1751,7 +1746,6 @@ he:

This document is CC-BY-SA. It was last updated May 26, 2022.

Originally adapted from the Discourse privacy policy.

- title: תנאי שימוש ומדיניות פרטיות ב-%{instance} themes: contrast: מסטודון (ניגודיות גבוהה) default: מסטודון (כהה) diff --git a/config/locales/hi.yml b/config/locales/hi.yml index d0b1082fc..9a9e3aa7b 100644 --- a/config/locales/hi.yml +++ b/config/locales/hi.yml @@ -5,7 +5,6 @@ hi: active_count_after: सक्रिय contact: संपर्क learn_more: अधिक जानें - privacy_policy: गोपनीयता नीति status_count_after: one: स्थिति other: स्थितियां diff --git a/config/locales/hr.yml b/config/locales/hr.yml index 6f2d41399..89ce1b625 100644 --- a/config/locales/hr.yml +++ b/config/locales/hr.yml @@ -14,11 +14,9 @@ hr: documentation: Dokumentacija get_apps: Isprobajte mobilnu aplikaciju learn_more: Saznajte više - privacy_policy: Politika privatnosti server_stats: 'Statistika poslužitelja:' source_code: Izvorni kôd status_count_before: Koji su objavili - terms: Uvjeti pružanja usluga unavailable_content: Moderirani poslužitelji accounts: follow: Prati diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 53e514f15..582eb7d82 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -28,7 +28,6 @@ hu: learn_more: Tudj meg többet logged_in_as_html: Belépve, mint %{username}. logout_before_registering: Már be vagy jelentkezve. - privacy_policy: Adatvédelmi szabályzat rules: Szerverünk szabályai rules_html: 'Alább látod azon követendő szabályok összefoglalóját, melyet be kell tartanod, ha szeretnél fiókot ezen a szerveren:' see_whats_happening: Nézd, mi történik @@ -39,7 +38,6 @@ hu: other: bejegyzést írt status_count_before: Eddig tagline: Decentralizált szociális hálózat - terms: Felhasználási feltételek unavailable_content: Kimoderált szerverek unavailable_content_description: domain: Szerver @@ -798,9 +796,6 @@ hu: site_short_description: desc_html: Oldalsávban és meta tag-ekben jelenik meg. Írd le, mi teszi ezt a szervert különlegessé egyetlen bekezdésben. title: Rövid leírás - site_terms: - desc_html: Megírhatod saját adatkezelési szabályzatodat, felhasználási feltételeidet vagy más hasonló jellegű dokumentumodat. HTML-tageket is használhatsz - title: Egyéni felhasználási feltételek site_title: A szerver neve thumbnail: desc_html: Az OpenGraph-on és API-n keresztüli előnézetekhez használatos. Ajánlott mérete 1200×630 képpont. @@ -1721,7 +1716,6 @@ hu:

Ez a dokumentum CC-BY-SA. Utoljára 2022.05.26-án frissült.

Eredetileg innen adaptálva Discourse privacy policy.

- title: "%{instance} Felhasználási feltételek és Adatkezelési nyilatkozat" themes: contrast: Mastodon (Nagy kontrasztú) default: Mastodon (Sötét) diff --git a/config/locales/hy.yml b/config/locales/hy.yml index 61b08d6e0..164bafbbe 100644 --- a/config/locales/hy.yml +++ b/config/locales/hy.yml @@ -23,7 +23,6 @@ hy: hosted_on: Մաստոդոնը տեղակայուած է %{domain}ում instance_actor_flash: "Այս հաշիւ վիրտուալ դերասան է, օգտագործուում է սպասարկիչը, այլ ոչ անհատ օգտատիրոջը ներկայացնելու, համար։ Օգտագործուում է ֆեդերացիայի նպատակով, ու չպէտք է արգելափակուի, եթէ չէք ցանկանում արգելափակել ողջ հանգոյցը, որի դէպքում պէտք է օգտագործէք տիրոյթի արգելափակումը։ \n" learn_more: Իմանալ ավելին - privacy_policy: Գաղտնիության քաղաքականություն rules: Սերուերի կանոնները rules_html: Այս սերուերում հաշիւ ունենալու համար անհրաժեշտ է պահպանել ստորեւ նշուած կանոնները։ see_whats_happening: Տես ինչ կը կատարուի @@ -33,7 +32,6 @@ hy: one: գրառում other: ստատուս status_count_before: Որոնք արել են՝ - terms: Ծառայութեան պայմանները unavailable_content: Մոդերացուող սպասարկիչներ unavailable_content_description: domain: Սպասարկիչ @@ -466,9 +464,6 @@ hy: title: Կայքի նկարագրութիւն site_short_description: title: Կայքի հակիրճ նկարագրութիւն - site_terms: - desc_html: Դու կարող ես գրել քո սեփական գաղտնիութեան քաղաքականութիւնը, օգտագործման պայմանները եւ այլ կանոններ։ Կարող ես օգտագործել HTML թեգեր - title: Սեփական օգտագործման կանոնները site_title: Սպասարկչի անուն thumbnail: title: Հանգոյցի նկարը diff --git a/config/locales/id.yml b/config/locales/id.yml index a66b62d52..516ba321a 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -26,7 +26,6 @@ id: learn_more: Pelajari selengkapnya logged_in_as_html: Anda sedang masuk sebagai %{username}. logout_before_registering: Anda sudah masuk. - privacy_policy: Kebijakan Privasi rules: Aturan server rules_html: 'Di bawah ini adalah ringkasan aturan yang perlu Anda ikuti jika Anda ingin memiliki akun di server Mastodon ini:' see_whats_happening: Lihat apa yang sedang terjadi @@ -36,7 +35,6 @@ id: other: status status_count_before: Yang telah menulis tagline: Jejaring sosial terdesentralisasi - terms: Kebijakan layanan unavailable_content: Konten tak tersedia unavailable_content_description: domain: Server @@ -700,9 +698,6 @@ id: site_short_description: desc_html: Ditampilkan pada bilah samping dan tag meta. Jelaskan apa itu Mastodon dan yang membuat server ini spesial dalam satu paragraf. title: Deskripsi server pendek - site_terms: - desc_html: Anda dapat menulis kebijakan privasi, ketentuan layanan, atau hal legal lainnya sendiri. Anda dapat menggunakan tag HTML - title: Ketentuan layanan kustom site_title: Judul Situs thumbnail: desc_html: Dipakai sebagai pratinjau via OpenGraph dan API. Direkomendasikan 1200x630px @@ -1485,8 +1480,6 @@ id: too_late: Terlambat untuk mengajukan banding hukuman ini tags: does_not_match_previous_name: tidak cocok dengan nama sebelumnya - terms: - title: "%{instance} Ketentuan Layanan dan Kebijakan Privasi" themes: contrast: Mastodon (Kontras tinggi) default: Mastodon (Gelap) diff --git a/config/locales/io.yml b/config/locales/io.yml index 56258e646..6cb06d249 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -39,7 +39,6 @@ io: other: posti status_count_before: Qua publikigis tagline: Necentralizita sociala reto - terms: Serveskondicioni unavailable_content: Jerata servili unavailable_content_description: domain: Servilo @@ -797,8 +796,8 @@ io: desc_html: Montresas en flankobaro e metatagi. Deskriptez Mastodon e por quo ca servilo esas specala per 1 paragrafo. title: Kurta servildeskripto site_terms: - desc_html: Vu povas skribar sua privatesguidilo, serveskondicioni e altra legi. Vu povas uzar HTML-tagi - title: Kustumizita serveskondicioni + desc_html: Vu povas adjuntar sua privatesguidilo. Vu povas uzar tagi di HTML + title: Kustumizita privatesguidilo site_title: Site title thumbnail: desc_html: Uzesis por previdi tra OpenGraph e API. 1200x630px rekomendesas @@ -1720,7 +1719,7 @@ io:

Ca dokumento esas CC-BY-SA.

Tradukesis e modifikesis de Angla de Discourse privacy policy.

- title: Serveskondiconi e Privatesguidilo di %{instance} + title: Privatesguidilo di %{instance} themes: contrast: Mastodon (Alta kontrasteso) default: Mastodon (Obskura) diff --git a/config/locales/is.yml b/config/locales/is.yml index 841645c91..2448647fa 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -39,7 +39,6 @@ is: other: færslur status_count_before: Sem stóðu fyrir tagline: Dreift samfélagsnet - terms: Þjónustuskilmálar unavailable_content: Ekki tiltækt efni unavailable_content_description: domain: Vefþjónn @@ -797,8 +796,8 @@ is: desc_html: Birt á hliðarspjaldi og í lýsigögnum. Lýstu því hvað Mastodon gerir og hvað það er sem geri þennan vefþjón sérstakan, í einni málsgrein. title: Stutt lýsing á netþjóninum site_terms: - desc_html: Þú getur skrifað þína eigin persónuverndarstefnu, þjónustuskilmála eða annað lagatæknilegt. Þú getur notað HTML-einindi - title: Sérsniðnir þjónustuskilmálar + desc_html: Þú getur skrifað þína eigin persónuverndarstefnu. Nota má HTML-einindi + title: Sérsniðin persónuverndarstefna site_title: Heiti vefþjóns thumbnail: desc_html: Notað við forskoðun í gegnum OpenGraph og API-kerfisviðmót. Mælt með 1200×630 mynddílum @@ -1719,7 +1718,7 @@ is:

Þetta skjal er CC-BY-SA nptkunarleyfi. Það var síðast uppfært 26. maí 2022.

Upphaflega aðlagað frá persónuverndarstefnu Discourse.

- title: "%{instance} - Þjónustuskilmálar og persónuverndarstefna" + title: Persónuverndarstefna á %{instance} themes: contrast: Mastodon (mikil birtuskil) default: Mastodon (dökkt) diff --git a/config/locales/it.yml b/config/locales/it.yml index ff3120f34..5e670cb07 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -28,7 +28,7 @@ it: learn_more: Scopri altro logged_in_as_html: Sei correntemente connesso come %{username}. logout_before_registering: Hai già effettuato l'accesso. - privacy_policy: Politica della privacy + privacy_policy: Politica sulla Privacy rules: Regole del server rules_html: 'Di seguito è riportato un riassunto delle regole che devi seguire se vuoi avere un account su questo server di Mastodon:' see_whats_happening: Guarda cosa succede @@ -39,7 +39,6 @@ it: other: stati status_count_before: Che hanno pubblicato tagline: Social network decentralizzato - terms: Termini di Servizio unavailable_content: Server moderati unavailable_content_description: domain: Server @@ -797,8 +796,8 @@ it: desc_html: Mostrato nella barra laterale e nei tag meta. Descrive in un paragrafo che cos'è Mastodon e che cosa rende questo server speciale. Se vuoto, sarà usata la descrizione predefinita del server. title: Breve descrizione del server site_terms: - desc_html: Potete scrivere la vostra politica sulla privacy, condizioni del servizio o altre informazioni legali. Potete usare tag HTML - title: Termini di servizio personalizzati + desc_html: Puoi scrivere la tua politica sulla privacy. Puoi usare i tag HTML + title: Politica sulla privacy personalizzata site_title: Nome del server thumbnail: desc_html: Usato per anteprime tramite OpenGraph e API. 1200x630px consigliati @@ -1721,7 +1720,7 @@ it:

Questo documento è CC-BY-SA. L'ultimo aggiornamento è del 26 maggio 2022.

Adattato originalmente dal Discorso Politica della Privacy.

- title: "%{instance} Termini di servizio e politica della privacy" + title: Politica sulla privacy di %{instance} themes: contrast: Mastodon (contrasto elevato) default: Mastodon (scuro) diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 133835b58..ae71d9924 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -36,7 +36,6 @@ ja: other: 投稿 status_count_before: 投稿数 tagline: 分散型ソーシャルネットワーク - terms: 利用規約 unavailable_content: 制限中のサーバー unavailable_content_description: domain: サーバー @@ -97,11 +96,17 @@ ja: avatar: アイコン by_domain: ドメイン change_email: + changed_msg: メールアドレスを変更しました! current_email: 現在のメールアドレス label: メールアドレスを変更 new_email: 新しいメールアドレス submit: メールアドレスの変更 title: "%{username}さんのメールアドレスを変更" + change_role: + changed_msg: ロールを変更しました! + label: ロールを変更 + no_role: ロールがありません + title: "%{username}さんのロールを変更" confirm: 確認 confirmed: 確認済み confirming: 確認中 @@ -179,7 +184,7 @@ ja: reset: リセット reset_password: パスワード再設定 resubscribe: 再講読 - role: 役割 + role: ロール search: 検索 search_same_email_domain: 同じドメインのメールアドレスを使用しているユーザー search_same_ip: 同じIPのユーザーを検索 @@ -222,17 +227,21 @@ ja: approve_user: ユーザーの承認 assigned_to_self_report: 通報の担当者に設定 change_email_user: ユーザーのメールアドレスを変更 + change_role_user: ユーザーのロールを変更 confirm_user: ユーザーの確認 create_account_warning: 警告を作成 create_announcement: お知らせを作成 + create_canonical_email_block: メールブロックを作成 create_custom_emoji: カスタム絵文字を作成 create_domain_allow: 連合を許可 create_domain_block: ドメインブロックを作成 create_email_domain_block: メールドメインブロックを作成 create_ip_block: IPルールを作成 create_unavailable_domain: 配送できないドメインを作成 + create_user_role: ロールを作成 demote_user: ユーザーを降格 destroy_announcement: お知らせを削除 + destroy_canonical_email_block: メールブロックを削除 destroy_custom_emoji: カスタム絵文字を削除 destroy_domain_allow: 連合許可を外す destroy_domain_block: ドメインブロックを削除 @@ -241,6 +250,7 @@ ja: destroy_ip_block: IPルールを削除 destroy_status: 投稿を削除 destroy_unavailable_domain: 配送できないドメインを削除 + destroy_user_role: ロールを削除 disable_2fa_user: 二要素認証を無効化 disable_custom_emoji: カスタム絵文字を無効化 disable_sign_in_token_auth_user: ユーザーのメールトークン認証を無効にする @@ -267,7 +277,9 @@ ja: update_announcement: お知らせを更新 update_custom_emoji: カスタム絵文字を更新 update_domain_block: ドメインブロックを更新 + update_ip_block: IPルールを更新 update_status: 投稿を更新 + update_user_role: ロールを更新 actions: approve_appeal_html: "%{name}さんが%{target}さんからの抗議を承認しました" approve_user_html: "%{target}から登録された%{name}さんを承認しました" @@ -622,9 +634,9 @@ ja: updated_at: 更新日時 view_profile: プロフィールを表示 roles: - add_new: 役割を追加 + add_new: ロールを追加 assigned_users: - other: "%{count} 人" + other: "%{count}人" categories: administration: 管理 devops: 開発者 @@ -632,24 +644,24 @@ ja: moderation: モデレーション delete: 削除 description_html: "ユーザー ロールを使用すると、ユーザーがアクセスできる Mastodon の機能や領域をカスタマイズできます。" - edit: "'%{name}' の役割を編集" + edit: "『%{name}』のロールを編集" everyone: デフォルトの権限 everyone_full_description_html: これは、割り当てられたロールを持っていないものであっても、 すべてのユーザー に影響を与える 基本ロールです。 他のすべてのロールは、そこから権限を継承します。 permissions_count: - other: "%{count} つの権限" + other: "%{count}件の権限" privileges: administrator: 管理者 administrator_description: この権限を持つユーザーはすべての権限をバイパスします delete_user_data: ユーザーデータの削除 delete_user_data_description: ユーザーは、遅滞なく他のユーザーのデータを削除することができます invite_users: ユーザーを招待 - invite_users_description: ユーザーがサーバーに新しい人を招待できるようにします + invite_users_description: ユーザーが新しい人を招待できるようにします manage_announcements: お知らせの管理 - manage_announcements_description: ユーザーがサーバー上のアナウンスを管理できるようにします + manage_announcements_description: ユーザーがアナウンスを管理できるようにします manage_appeals: 抗議の管理 manage_appeals_description: ユーザーはモデレーションアクションに対する抗議を確認できます manage_blocks: ブロックの管理 - manage_blocks_description: ユーザーが電子メールプロバイダとIPアドレスをブロックできるようにします + manage_blocks_description: ユーザーがメールプロバイダとIPアドレスをブロックできるようにします manage_custom_emojis: カスタム絵文字を管理 manage_custom_emojis_description: ユーザーがサーバー上のカスタム絵文字を管理できるようにします manage_federation: 連合の管理 @@ -657,7 +669,7 @@ ja: manage_invites: 招待を管理 manage_reports: レポートの管理 manage_reports_description: ユーザーがレポートを確認したり、モデレーションアクションを実行したりできます。 - manage_roles: 役職の管理 + manage_roles: ロールの管理 manage_rules: ルールの管理 manage_rules_description: ユーザーがサーバールールを変更できるようにします manage_settings: 設定の管理 @@ -666,7 +678,7 @@ ja: manage_user_access: アクセス権を管理 manage_user_access_description: 他のユーザーの2段階認証を無効にしたり、メールアドレスを変更したり、パスワードをリセットしたりすることができます。 manage_users: ユーザーの管理 - manage_webhooks: Webhook の管理 + manage_webhooks: Webhookの管理 manage_webhooks_description: 管理者イベントのWebhookを設定できます。 view_audit_log: 監査ログの表示 view_audit_log_description: ユーザーがサーバー上で管理アクションの履歴を表示できるようにします @@ -674,7 +686,7 @@ ja: view_dashboard_description: ユーザーがダッシュボードやさまざまなメトリクスにアクセスできるようにします view_devops: 開発者 view_devops_description: Sidekiq と pgHero ダッシュボードにアクセスできるようにします - title: 権限 + title: ロール rules: add_new: ルールを追加 delete: 削除 @@ -749,8 +761,7 @@ ja: desc_html: サイドバーとmetaタグに表示されます。Mastodonとは何か、そしてこのサーバーの特別な何かを1段落で記述してください。空欄の場合、サーバーの説明が使用されます。 title: 短いサーバーの説明 site_terms: - desc_html: 独自のプライバシーポリシーや利用規約、その他の法的根拠を記述できます。HTMLタグが使えます - title: カスタム利用規約 + title: カスタムプライバシーポリシー site_title: サーバーの名前 thumbnail: desc_html: OpenGraphとAPIによるプレビューに使用されます。サイズは1200×630px推奨です @@ -1129,13 +1140,15 @@ ja: errors: invalid_context: 対象がないか無効です index: - contexts: "%{contexts} のフィルター" + contexts: "%{contexts}のフィルター" delete: 削除 empty: フィルターはありません。 - expires_in: "%{distance} で期限切れ" + expires_in: "%{distance}で期限切れ" expires_on: 有効期限 %{date} keywords: other: "%{count}件のキーワード" + statuses: + other: "%{count}件の投稿" title: フィルター new: save: 新規フィルターを保存 @@ -1256,7 +1269,7 @@ ja: notification_mailer: admin: report: - subject: "%{name} がレポートを送信しました" + subject: "%{name}さんがレポートを送信しました" sign_up: subject: "%{name}さんがサインアップしました" favourite: @@ -1612,7 +1625,7 @@ ja:

この文章のライセンスはCC-BY-SAです。最終更新日は2021年6月1日です。

オリジナルの出典: Discourse privacy policy

- title: "%{instance} 利用規約・プライバシーポリシー" + title: "%{instance}のプライバシーポリシー" themes: contrast: Mastodon (ハイコントラスト) default: Mastodon (ダーク) diff --git a/config/locales/ka.yml b/config/locales/ka.yml index 288e50edd..64b0419ed 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -13,10 +13,8 @@ ka: documentation: დოკუმენტაცია hosted_on: მასტოდონს მასპინძლობს %{domain} learn_more: გაიგე მეტი - privacy_policy: კონფიდენციალურობის პოლიტიკა source_code: კოდი status_count_before: ვინც უავტორა - terms: მომსახურების პირობები user_count_before: სახლი what_is_mastodon: რა არის მასტოდონი? accounts: @@ -256,9 +254,6 @@ ka: site_short_description: desc_html: გამოჩნდება გვერდით ბარში და მეტა ტეგებში. აღწერეთ თუ რა არის მასტოდონი და რა ხდის ამ სერვერს უნიკალურს ერთ პარაგრაფში. თუ ცარიელია, გამოჩნდება ინსტანციის აღწერილობა. title: აჩვენეთ ინსტანციის აღწერილობა - site_terms: - desc_html: შეგიძლიათ დაწეროთ საკუთარი კონფიდენციალურობის პოლიტიკა, მომსახურების პირობები ან სხვა იურიდიული დოკუმენტი. შეგიძლიათ გამოიყენოთ ჰტმლ ტეგები - title: პერსონალიზირებული მომსახურების პირობები site_title: ინსტანციის სახელი thumbnail: desc_html: გამოიყენება პრევიუებისთვის ოუფენ-გრეფში და აპი-ში. 1200/630პიქს. რეკომენდირებული @@ -567,8 +562,6 @@ ka: pinned: აპინული ტუტი reblogged: გაზრდილი sensitive_content: მგრძნობიარე კონტენტი - terms: - title: "%{instance} მომსახურების პირობები და კონფიდენციალურობის პოლიტიკა" themes: contrast: მაღალი კონტრასტი default: მასტოდონი diff --git a/config/locales/kab.yml b/config/locales/kab.yml index 8096b95f4..cda77cb6e 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -20,7 +20,6 @@ kab: get_apps: Ɛreḍ asnas aziraz hosted_on: Maṣṭudun yersen deg %{domain} learn_more: Issin ugar - privacy_policy: Tasertit tabaḍnit rules: Ilugan n uqeddac see_whats_happening: Ẓer d acu i iḍerrun server_stats: 'Tidaddanin n uqeddac:' @@ -29,7 +28,6 @@ kab: one: n tsuffeɣt other: n tsuffiɣin status_count_before: I d-yessuffɣen - terms: Tiwetlin n useqdec unavailable_content: Ulac agbur unavailable_content_description: domain: Aqeddac @@ -789,8 +787,6 @@ kab: stream_entries: pinned: Tijewwiqt yettwasentḍen sensitive_content: Agbur amḥulfu - terms: - title: Tiwtilin n useqdec akked tsertit tabaḍnit n %{instance} themes: contrast: Maṣṭudun (agnil awriran) default: Maṣṭudun (Aberkan) diff --git a/config/locales/kk.yml b/config/locales/kk.yml index b1c92f7eb..939e3c520 100644 --- a/config/locales/kk.yml +++ b/config/locales/kk.yml @@ -24,7 +24,6 @@ kk: Бұл аккаунт кез-келген жеке пайдаланушыны емес, сервердің өзін көрсету үшін қолданылатын виртуалды актер. Ол федерация мақсаттарында қолданылады және сіз барлығын бұғаттағыңыз келмейінше, бұғатталмауы керек, бұл жағдайда сіз домен блогын қолданған жөн. learn_more: Көбірек білу - privacy_policy: Құпиялылық саясаты see_whats_happening: Не болып жатқанын қараңыз server_stats: 'Сервер статистикасы:' source_code: Ашық коды @@ -32,7 +31,6 @@ kk: one: жазба other: жазба status_count_before: Барлығы - terms: Қолдану шарттары unavailable_content: Қолжетімсіз контент unavailable_content_description: domain: Сервер @@ -393,9 +391,6 @@ kk: site_short_description: desc_html: Displayed in sidebar and meta tags. Describe what Mastodon is and what makes this server special in a single paragraph. If empty, defaults to сервер description. title: Short сервер description - site_terms: - desc_html: You can write your own privacy policy, terms of service or other legalese. You can use HTML тег - title: Қолдану шарттары мен ережелер site_title: Сервер аты thumbnail: desc_html: Used for previews via OpenGraph and API. 1200x630px рекоменделеді @@ -880,8 +875,6 @@ kk: sensitive_content: Нәзік мазмұн tags: does_not_match_previous_name: алдыңғы атқа сәйкес келмейді - terms: - title: "%{instance} Қызмет көрсету шарттары және Құпиялылық саясаты" themes: contrast: Mastodon (Жоғары контраст) default: Mastodon (Қою) diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 102d85393..946784a03 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -28,7 +28,7 @@ ko: learn_more: 자세히 logged_in_as_html: 현재 %{username}으로 로그인 했습니다. logout_before_registering: 이미 로그인 했습니다. - privacy_policy: 개인정보 정책 + privacy_policy: 개인정보 처리방침 rules: 서버 규칙 rules_html: '아래의 글은 이 마스토돈 서버에 계정이 있다면 따라야 할 규칙의 요약입니다:' see_whats_happening: 무슨 일이 일어나는 지 보기 @@ -38,7 +38,6 @@ ko: other: 개 status_count_before: 게시물 수 tagline: 분산화된 소셜 네트워크 - terms: 이용약관 unavailable_content: 이용 불가능한 컨텐츠 unavailable_content_description: domain: 서버 @@ -783,8 +782,8 @@ ko: desc_html: 사이드바와 메타 태그에 나타납니다. 마스토돈이 무엇이고 이 서버의 특징은 무엇인지 한 문장으로 설명하세요. title: 짧은 서버 설명 site_terms: - desc_html: 당신은 독자적인 개인정보 취급 방침이나 이용약관, 그 외의 법적 근거를 작성할 수 있습니다. HTML태그를 사용할 수 있습니다 - title: 커스텀 서비스 이용 약관 + desc_html: 자신만의 개인정보 처리방침을 작성할 수 있습니다. HTML 태그를 사용할 수 있습니다 + title: 사용자 지정 개인정보 처리방침 site_title: 서버 이름 thumbnail: desc_html: OpenGraph와 API의 미리보기로 사용 됩니다. 1200x630px을 권장합니다 @@ -1687,7 +1686,7 @@ ko:

이 문서는 CC-BY-SA 라이센스입니다. 마지막 업데이트는 2012년 5월 26일입니다.

Originally adapted from the Discourse privacy policy.

- title: "%{instance} 이용약관과 개인정보 취급 방침" + title: "%{instance} 개인정보 처리방침" themes: contrast: 마스토돈 (고대비) default: 마스토돈 (어두움) diff --git a/config/locales/ku.yml b/config/locales/ku.yml index b43e205d2..2dcba64dd 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -28,7 +28,7 @@ ku: learn_more: Bêtir fêr bibe logged_in_as_html: Tu niha wekî %{username} têketî ye. logout_before_registering: Jixwe te berê têketin kiriye. - privacy_policy: Polîtikaya nihêniyê + privacy_policy: Politîka taybetiyê rules: Rêbazên rajekar rules_html: 'Heger tu bixwazî ajimêrekî li ser rajekarê mastodon vebikî, li jêrê de kurtasî ya qaîdeyên ku tu guh bidî heye:' see_whats_happening: Binêre ka çi diqewime @@ -39,7 +39,6 @@ ku: other: şandî status_count_before: Hatin weşan tagline: Tora civakî ya nenavendî - terms: Peyama mercan unavailable_content: Rajekarên li hev kirî unavailable_content_description: domain: Rajekar @@ -799,8 +798,8 @@ ku: desc_html: Ew di alavdanka kêlekê û tagên meta de tên xuyakirin. Di yek paragrafê de rave bike ka Mastodon çi ye û ya ku ev rajekar taybetî dike. title: Danasîna rajekarê kurt site_terms: - desc_html: Tu dikarî polîtika nihêniyê xwe, mercên karûbar an nameyên din binvisîne. Tu dikarî nîşanên HTML-ê bi kar bîne - title: Mercên bikaranîn a kesanekirî + desc_html: Tu dikarî politîkaya taybetiyê ya xwe binivîsînî. Tu dikarî tagên HTML bi kar bînî + title: Politîka taybetiyê ya kesane site_title: Navê rajekar thumbnail: desc_html: Ji bo pêşdîtinên bi riya OpenGraph û API-yê têne bikaranîn. 1200x630px tê pêşniyar kirin @@ -1721,7 +1720,7 @@ ku:

This document is CC-BY-SA. It was last updated May 26, 2022.

Originally adapted from the Discourse privacy policy.

- title: "%{instance} mercên bikaranîn û politîkayên nehêniyê" + title: Politîka taybetiyê ya %{instance} themes: contrast: Mastodon (Dijberiya bilind) default: Mastodon (Tarî) diff --git a/config/locales/lt.yml b/config/locales/lt.yml index 4e79ca188..56bcccf67 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -11,10 +11,8 @@ lt: documentation: Dokumentacija hosted_on: Mastodon palaikomas naudojantis %{domain} talpinimu learn_more: Daugiau - privacy_policy: Privatumo Politika source_code: Šaltinio kodas status_count_before: Autorius - terms: Naudojimo sąlygos user_count_before: Namai what_is_mastodon: Kas tai, Mastodon? accounts: @@ -299,9 +297,6 @@ lt: site_short_description: desc_html: Rodoma šoniniame meniu ir meta žymėse. Apibūdink kas yra Mastodon, ir kas daro šį serverį išskirtiniu, vienu paragrafu. Jeigu tuščias, naudojamas numatytasis tekstas. title: Trumpas serverio apibūdinimas - site_terms: - desc_html: Jūs galite parašyti savo pačio privatumo politika, naudojimo sąlygas ar kita informacija. Galite naudoti HTML žymes - title: Išskirtinės naudojimosi taisyklės site_title: Serverio pavadinimas thumbnail: desc_html: Naudojama OpenGraph peržiūroms ir API. Rekomenduojama 1200x630px @@ -592,8 +587,6 @@ lt: pinned: Prisegtas toot'as reblogged: pakeltas sensitive_content: Jautrus turinys - terms: - title: "%{instance} Naudojimosi Sąlygos ir Privatumo Politika" themes: contrast: Mastodon (Didelio Kontrasto) default: Mastodon (Tamsus) diff --git a/config/locales/lv.yml b/config/locales/lv.yml index ae2087390..c645539c8 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -28,7 +28,7 @@ lv: learn_more: Uzzināt vairāk logged_in_as_html: Tu pašlaik esi pieteicies kā %{username}. logout_before_registering: Tu jau esi pieteicies. - privacy_policy: Privātuma politika + privacy_policy: Privātuma Politika rules: Servera noteikumi rules_html: 'Tālāk ir sniegts noteikumu kopsavilkums, kas jāievēro, ja vēlies izveidot kontu šajā Mastodon serverī:' see_whats_happening: Redzēt, kas notiek @@ -40,7 +40,6 @@ lv: zero: nav status_count_before: Kurš publicējis tagline: Decentralizēts sociālais tīkls - terms: Pakalpojuma noteikumi unavailable_content: Moderētie serveri unavailable_content_description: domain: Serveris @@ -813,8 +812,8 @@ lv: desc_html: Tiek parādīts sānjoslā un metatagos. Vienā rindkopā apraksti, kas ir Mastodon un ar ko šis serveris ir īpašs. title: Īss servera apraksts site_terms: - desc_html: Tu vari uzrakstīt savu privātuma politiku, pakalpojumu sniegšanas noteikumus vai citu likumīgu. Tu vari izmantot HTML tagus - title: Pielāgoti pakalpojuma sniegšanas noteikumi + desc_html: Tu vari uzrakstīt pats savu privātuma politiku. Vari izmantot HTML tagus + title: Pielāgot privātuma politiku site_title: Servera nosaukums thumbnail: desc_html: Izmanto priekšskatījumiem, izmantojot OpenGraph un API. Ieteicams 1200x630 pikseļi @@ -1753,7 +1752,7 @@ lv:

Šis dokuments ir CC-BY-SA. Pēdējo reizi tas tika atjaunināts 2022. gada 26. maijā.

Sākotnēji adaptēts no Discourse konfidencialitātes politikas.

- title: "%{instance} Pakalpojuma Noteikumi un Privātuma Politika" + title: "%{instance} Privātuma Politika" themes: contrast: Mastodon (Augsts kontrasts) default: Mastodon (Tumšs) diff --git a/config/locales/ml.yml b/config/locales/ml.yml index ea05859ac..df5be9c1e 100644 --- a/config/locales/ml.yml +++ b/config/locales/ml.yml @@ -11,11 +11,9 @@ ml: documentation: വിവരണം get_apps: മൊബൈൽ ആപ്പ് പരീക്ഷിക്കുക learn_more: കൂടുതൽ പഠിക്കുക - privacy_policy: സ്വകാര്യതാ നയം see_whats_happening: എന്തൊക്കെ സംഭവിക്കുന്നു എന്ന് കാണുക source_code: സോഴ്സ് കോഡ് status_count_before: ആരാൽ എഴുതപ്പെട്ടു - terms: സേവന വ്യവസ്ഥകൾ unavailable_content: ലഭ്യമല്ലാത്ത ഉള്ളടക്കം unavailable_content_description: domain: സെർവർ diff --git a/config/locales/ms.yml b/config/locales/ms.yml index b80a0d5c9..7f090b00d 100644 --- a/config/locales/ms.yml +++ b/config/locales/ms.yml @@ -25,7 +25,6 @@ ms: Akaun ini ialah pelaku maya yang digunakan untuk mewakili pelayan itu sendiri dan bukannya mana-mana pengguna individu. Ia digunakan untuk tujuan persekutuan dan tidak patut disekat melainkan anda ingin menyekat keseluruhan tika, yang mana anda sepatutnya gunakan sekatan domain. learn_more: Ketahui lebih lanjut - privacy_policy: Polisi privasi rules: Peraturan pelayan rules_html: 'Di bawah ini ringkasan peraturan yang anda perlu ikuti jika anda ingin mempunyai akaun di pelayan Mastodon yang ini:' see_whats_happening: Lihat apa yang sedang berlaku @@ -34,7 +33,6 @@ ms: status_count_after: other: hantaran status_count_before: Siapa terbitkan - terms: Terma perkhidmatan unavailable_content: Pelayan disederhanakan unavailable_content_description: domain: Pelayan diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 4dabcf789..fed0785c8 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -26,7 +26,6 @@ nl: learn_more: Meer leren logged_in_as_html: Je bent momenteel ingelogd als %{username}. logout_before_registering: Je bent al ingelogd. - privacy_policy: Privacybeleid rules: Serverregels rules_html: 'Hieronder vind je een samenvatting van de regels die je op deze Mastodon-server moet opvolgen:' see_whats_happening: Kijk wat er aan de hand is @@ -37,7 +36,6 @@ nl: other: berichten status_count_before: Zij schreven tagline: Decentraal sociaal netwerk - terms: Gebruiksvoorwaarden unavailable_content: Gemodereerde servers unavailable_content_description: domain: Server @@ -706,9 +704,6 @@ nl: site_short_description: desc_html: Dit wordt gebruikt op de voorpagina, in de zijbalk op profielpagina's en als metatag in de paginabron. Beschrijf in één alinea wat Mastodon is en wat deze server speciaal maakt. title: Omschrijving Mastodonserver (website) - site_terms: - desc_html: Je kan hier jouw eigen privacybeleid, gebruiksvoorwaarden en ander juridisch jargon kwijt. Je kan HTML gebruiken - title: Aangepaste gebruiksvoorwaarden site_title: Naam Mastodonserver thumbnail: desc_html: Gebruikt als voorvertoning voor OpenGraph en de API. 1200x630px aanbevolen @@ -1491,7 +1486,6 @@ nl:

This document is CC-BY-SA. It was last updated May 26, 2022.

Originally adapted from the Discourse privacy policy.

- title: Gebruiksvoorwaarden en privacybeleid van %{instance} themes: contrast: Mastodon (hoog contrast) default: Mastodon (donker) diff --git a/config/locales/nn.yml b/config/locales/nn.yml index 440259369..baf20ad72 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -24,7 +24,6 @@ nn: instance_actor_flash: "Denne brukeren er en virtuell aktør brukt til å representere selve serveren og ingen individuell bruker. Det brukes til foreningsformål og bør ikke blokkeres med mindre du vil blokkere hele instansen, hvor domeneblokkering bør brukes i stedet. \n" learn_more: Lær meir logout_before_registering: Du er allereie logga inn. - privacy_policy: Personvernsreglar rules: Tenarreglar rules_html: 'Nedanfor er eit samandrag av reglar du må fylgje dersom du vil ha ein konto på denne Mastodontenaren:' see_whats_happening: Sjå kva som skjer @@ -32,7 +31,6 @@ nn: source_code: Kjeldekode status_count_before: Som skreiv tagline: Desentralisert sosialt nettverk - terms: Brukarvilkår unavailable_content: Utilgjengeleg innhald unavailable_content_description: domain: Sørvar @@ -546,9 +544,6 @@ nn: site_short_description: desc_html: Vist i sidelinjen og i metastempler. Beskriv hva Mastodon er og hva som gjør denne tjeneren spesiell i én enkelt paragraf. title: Stutt om tenaren - site_terms: - desc_html: Du kan skrive din egen personverns-strategi, bruksviklår og andre regler. Du kan bruke HTML tagger - title: Eigne brukarvilkår site_title: Tenarnamn thumbnail: desc_html: Brukes ved forhandsvisning via OpenGraph og API. 1200x630px anbefales @@ -1104,8 +1099,6 @@ nn: sensitive_content: Følsomt innhold tags: does_not_match_previous_name: stemmar ikkje med det førre namnet - terms: - title: Tenestevilkår og personvernsvilkår for %{instance} themes: contrast: Mastodon (Høg kontrast) default: Mastodon (Mørkt) diff --git a/config/locales/no.yml b/config/locales/no.yml index 27b7be807..b93bd0a2c 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -23,7 +23,6 @@ hosted_on: Mastodon driftet på %{domain} instance_actor_flash: "Denne brukeren er en virtuell aktør brukt til å representere selve serveren og ingen individuell bruker. Det brukes til foreningsformål og bør ikke blokkeres med mindre du vil blokkere hele instansen, hvor domeneblokkering bør brukes i stedet. \n" learn_more: Lær mer - privacy_policy: Privatlivsretningslinjer rules: Server regler rules_html: 'Nedenfor er et sammendrag av reglene du må følge om du vil ha en konto på denne serveren av Mastodon:' see_whats_happening: Se hva som skjer @@ -33,7 +32,6 @@ one: innlegg other: statuser status_count_before: Som skrev - terms: Bruksvilkår unavailable_content: Utilgjengelig innhold unavailable_content_description: domain: Tjener @@ -539,9 +537,6 @@ site_short_description: desc_html: Vist i sidelinjen og i metastempler. Beskriv hva Mastodon er og hva som gjør denne tjeneren spesiell i én enkelt paragraf. title: Kort tjenerbeskrivelse - site_terms: - desc_html: Du kan skrive din egen personverns-strategi, bruksviklår og andre regler. Du kan bruke HTML tagger - title: Skreddersydde bruksvilkår site_title: Nettstedstittel thumbnail: desc_html: Brukes ved forhandsvisning via OpenGraph og API. 1200x630px anbefales @@ -1087,8 +1082,6 @@ sensitive_content: Følsomt innhold tags: does_not_match_previous_name: samsvarer ikke med det forrige navnet - terms: - title: "%{instance} Personvern og villkår for bruk av nettstedet" themes: contrast: Mastodon (Høykontrast) default: Mastodon diff --git a/config/locales/oc.yml b/config/locales/oc.yml index d8560fd1c..6fbe1c9c3 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -22,7 +22,6 @@ oc: get_apps: Ensajatz una aplicacion mobil hosted_on: Mastodon albergat sus %{domain} learn_more: Ne saber mai - privacy_policy: Politica de confidencialitat rules: Règlas del servidor see_whats_happening: Agachatz çò qu’arriba server_stats: 'Estatisticas del servidor :' @@ -31,7 +30,6 @@ oc: one: estatut other: estatuts status_count_before: qu’an escrich - terms: Condicions d’utilizacion unavailable_content: Contengut pas disponible unavailable_content_description: domain: Servidor @@ -483,9 +481,6 @@ oc: site_short_description: desc_html: Mostrat dins la barra laterala e dins las meta balisas. Explica çò qu’es Mastodon e perque aqueste servidor es especial en un solet paragraf. S’es void, serà garnit amb la descripcion del servidor. title: Descripcion corta del servidor - site_terms: - desc_html: Afichada sus la pagina de las condicions d’utilizacion
Podètz utilizar de balisas HTML - title: Politica de confidencialitat del site site_title: Títol del servidor thumbnail: desc_html: Servís pels apercebuts via OpenGraph e las API. Talha de 1200x630px recomandada @@ -1014,8 +1009,6 @@ oc: sensitive_content: Contengut sensible tags: does_not_match_previous_name: correspond pas al nom precedent - terms: - title: Condicions d’utilizacion e politica de confidencialitat de %{instance} themes: contrast: Mastodon (Fòrt contrast) default: Mastodon (Escur) diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 4251f5510..3f53575df 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -41,7 +41,6 @@ pl: other: wpisów status_count_before: Są autorami tagline: Zdecentralizowana sieć społecznościowa - terms: Zasady użytkowania unavailable_content: Niedostępne treści unavailable_content_description: domain: Serwer @@ -824,8 +823,8 @@ pl: desc_html: Wyświetlany na pasku bocznym i w znacznikach meta. Opisz w jednym akapicie, czym jest Mastodon i czym wyróżnia się ten serwer. Jeżeli pusty, zostanie użyty opis serwera. title: Krótki opis serwera site_terms: - desc_html: Miejsce na własną politykę prywatności, zasady użytkowania i inne unormowania prawne. Możesz korzystać ze znaczników HTML - title: Niestandardowe zasady użytkowania + desc_html: Możesz stworzyć własną politykę prywatności. Możesz używać tagów HTML + title: Własna polityka prywatności site_title: Nazwa serwera thumbnail: desc_html: 'Używana w podglądzie przez OpenGraph i API. Zalecany rozmiar: 1200x630 pikseli' @@ -1766,7 +1765,7 @@ pl:

Ten dokument jest CC-BY-SA. Data ostatniej aktualizacji: 26 maja 2022.

Oryginalnie zaadaptowany z Discourse privacy policy.

- title: Zasady korzystania i polityka prywatności %{instance} + title: Polityka prywatności %{instance} themes: contrast: Mastodon (Wysoki kontrast) default: Mastodon (Ciemny) diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 9460d651f..b6da1a3ff 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -28,7 +28,6 @@ pt-BR: learn_more: Saiba mais logged_in_as_html: Você está atualmente logado como %{username}. logout_before_registering: Já está logado. - privacy_policy: Política de Privacidade rules: Regras do servidor rules_html: 'Abaixo está um resumo das regras que você precisa seguir se você quer ter uma conta neste servidor do Mastodon:' see_whats_happening: Veja o que está acontecendo @@ -39,7 +38,6 @@ pt-BR: other: toots status_count_before: Autores de tagline: Rede social descentralizada - terms: Termos de serviço unavailable_content: Conteúdo indisponível unavailable_content_description: domain: Instância @@ -771,9 +769,6 @@ pt-BR: site_short_description: desc_html: Mostrada na barra lateral e em etiquetas de metadados. Descreve o que é o Mastodon e o que torna esta instância especial num único parágrafo. Se deixada em branco, é substituído pela descrição da instância. title: Descrição curta da instância - site_terms: - desc_html: Você pode escrever a sua própria Política de Privacidade, Termos de Serviço, entre outras coisas. Você pode usar tags HTML - title: Termos de serviço personalizados site_title: Nome da instância thumbnail: desc_html: Usada para prévias via OpenGraph e API. Recomenda-se 1200x630px @@ -1520,8 +1515,6 @@ pt-BR: sensitive_content: Conteúdo sensível tags: does_not_match_previous_name: não corresponde ao nome anterior - terms: - title: Termos de Serviço e Política de Privacidade de %{instance} themes: contrast: Mastodon (Alto contraste) default: Mastodon (Noturno) diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index fd151b73a..dc518a2f6 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -28,7 +28,6 @@ pt-PT: learn_more: Saber mais logged_in_as_html: Está de momento ligado como %{username}. logout_before_registering: Já tem sessão iniciada. - privacy_policy: Política de privacidade rules: Regras da instância rules_html: 'Abaixo está um resumo das regras que precisa seguir se pretender ter uma conta nesta instância do Mastodon:' see_whats_happening: Veja o que está a acontecer @@ -39,7 +38,6 @@ pt-PT: other: publicações status_count_before: Que fizeram tagline: Rede social descentralizada - terms: Termos de serviço unavailable_content: Conteúdo indisponível unavailable_content_description: domain: Instância @@ -796,9 +794,6 @@ pt-PT: site_short_description: desc_html: Mostrada na barra lateral e em etiquetas de metadados. Descreve o que o Mastodon é e o que torna esta instância especial num único parágrafo. Se deixada em branco, remete para a descrição da instância. title: Breve descrição da instância - site_terms: - desc_html: Podes escrever a sua própria política de privacidade, termos de serviço, entre outras coisas. Pode utilizar etiquetas HTML - title: Termos de serviço personalizados site_title: Título do site thumbnail: desc_html: Usada para visualizações via OpenGraph e API. Recomenda-se 1200x630px @@ -1719,7 +1714,6 @@ pt-PT:

Este documento é CC-BY-SA. Ele foi actualizado pela última vez em 26 de Maio 2022.

Originalmente adaptado de Discourse privacy policy.

- title: "%{instance} Termos de Serviço e Política de Privacidade" themes: contrast: Mastodon (Elevado contraste) default: Mastodon diff --git a/config/locales/ro.yml b/config/locales/ro.yml index 8ed812e5b..8f7d42fd4 100644 --- a/config/locales/ro.yml +++ b/config/locales/ro.yml @@ -25,7 +25,6 @@ ro: Acest cont este un actor virtual folosit pentru a reprezenta serverul în sine și nu un utilizator individual. Acesta este folosit în scopuri de federație și nu ar trebui blocat decât dacă doriți să blocați întreaga instanță, în ce caz trebuie să utilizaţi un bloc de domeniu. learn_more: Află mai multe - privacy_policy: Politica de confidenţialitate rules: Regulile serverului rules_html: 'Mai jos este un rezumat al regulilor pe care trebuie să le urmezi dacă vrei să ai un cont pe acest server de Mastodon:' see_whats_happening: Vezi ce se întâmplă @@ -36,7 +35,6 @@ ro: one: stare other: de stări status_count_before: Care au postat - terms: Termeni de serviciu unavailable_content: Conținut indisponibil unavailable_content_description: domain: Server @@ -592,8 +590,6 @@ ro: sensitive_content: Conținut sensibil tags: does_not_match_previous_name: nu se potrivește cu numele anterior - terms: - title: "%{instance} Termeni de utilizare și Politica de confidențialitate" themes: contrast: Mastodon (contrast mare) default: Mastodon (Întunecat) diff --git a/config/locales/ru.yml b/config/locales/ru.yml index b129c8901..4d5c6dfe8 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -41,7 +41,6 @@ ru: other: поста status_count_before: И опубликовано tagline: Децентрализованная социальная сеть - terms: Условия использования unavailable_content: Недоступный контент unavailable_content_description: domain: Сервер @@ -779,8 +778,8 @@ ru: desc_html: Отображается в боковой панели и в тегах. Опишите, что такое Mastodon и что делает именно этот узел особенным. Если пусто, используется описание узла по умолчанию. title: Краткое описание узла site_terms: - desc_html: Вы можете добавить сюда собственную политику конфиденциальности, пользовательское соглашение и другие документы. Можно использовать теги HTML - title: Условия использования + desc_html: Вы можете написать собственную политику конфиденциальности. Вы можете использовать теги HTML + title: Собственная политика конфиденциальности site_title: Название сайта thumbnail: desc_html: Используется для предпросмотра с помощью OpenGraph и API. Рекомендуется разрешение 1200x630px @@ -1605,7 +1604,7 @@ ru: tags: does_not_match_previous_name: не совпадает с предыдущим именем terms: - title: Условия обслуживания и политика конфиденциальности %{instance} + title: Политика конфиденциальности %{instance} themes: contrast: Mastodon (высококонтрастная) default: Mastodon (тёмная) diff --git a/config/locales/sc.yml b/config/locales/sc.yml index 60dcbbc9e..a031b27ad 100644 --- a/config/locales/sc.yml +++ b/config/locales/sc.yml @@ -25,7 +25,6 @@ sc: ' learn_more: Àteras informatziones - privacy_policy: Polìtica de riservadesa rules: Règulas de su serbidore rules_html: 'Depes sighire is règulas imbenientes si boles tènnere unu contu in custu serbidore de Mastodon:' see_whats_happening: Càstia su chi est acontessende @@ -35,7 +34,6 @@ sc: one: istadu other: istados status_count_before: Atributzione de - terms: Cunditziones de su servìtziu unavailable_content: Serbidores moderados unavailable_content_description: domain: Serbidore @@ -558,9 +556,6 @@ sc: site_short_description: desc_html: Ammustradu in sa barra laterale e in is meta-etichetas. Descrie ite est Mastodon e pro ite custu serbidore est ispetziale in unu paràgrafu. title: Descritzione curtza de su serbidore - site_terms: - desc_html: Podes iscrìere sa normativa de riservadesa tua, cunditziones de servìtziu e àteras normas legales. Podes impreare etichetas HTML - title: Cunditziones de su servìtziu personalizadas site_title: Nòmine de su serbidore thumbnail: desc_html: Impreadu pro otènnere pre-visualizatziones pro mèdiu de OpenGraph e API. Cussigiadu 1200x630px @@ -1141,8 +1136,6 @@ sc: sensitive_content: Cuntenutu sensìbile tags: does_not_match_previous_name: non cointzidet cun su nòmine anteriore - terms: - title: "%{instance} Cunditziones de su servìtziu e polìtica de riservadesa" themes: contrast: Mastodon (cuntrastu artu) default: Mastodon (iscuru) diff --git a/config/locales/si.yml b/config/locales/si.yml index 40909ab12..1806801eb 100644 --- a/config/locales/si.yml +++ b/config/locales/si.yml @@ -28,7 +28,6 @@ si: learn_more: තව දැනගන්න logged_in_as_html: ඔබ දැනට %{username}ලෙස පුරනය වී ඇත. logout_before_registering: ඔබ දැනටමත් පුරනය වී ඇත. - privacy_policy: රහස්‍යතා ප්‍රතිපත්තිය rules: සේවාදායකයේ නීති rules_html: 'ඔබට Mastodon හි මෙම සේවාදායකයේ ගිණුමක් ඇති කර ගැනීමට අවශ්‍ය නම් ඔබ අනුගමනය කළ යුතු නීති වල සාරාංශයක් පහත දැක්වේ:' see_whats_happening: මොකද වෙන්නේ කියලා බලන්න @@ -39,7 +38,6 @@ si: other: තත්ත්වයන් status_count_before: කවුද පළ කළේ tagline: විමධ්‍යගත සමාජ ජාලය - terms: සේවාවේ නියම unavailable_content: මධ්‍යස්ථ සේවාදායකයන් unavailable_content_description: domain: සේවාදායකය @@ -711,9 +709,6 @@ si: site_short_description: desc_html: පැති තීරුවේ සහ මෙටා ටැග්වල පෙන්වයි. Mastodon යනු කුමක්ද සහ මෙම සේවාදායකය විශේෂ වන්නේ කුමක්ද යන්න තනි ඡේදයකින් විස්තර කරන්න. title: සේවාදායකයේ කෙටි සවිස්තරය - site_terms: - desc_html: ඔබට ඔබේම රහස්‍යතා ප්‍රතිපත්තියක්, සේවා කොන්දේසි හෝ වෙනත් නීත්‍යානුකූල භාවයක් ලිවිය හැක. ඔබට HTML ටැග් භාවිතා කළ හැකිය - title: අභිරුචි සේවා කොන්දේසි site_title: සේවාදායකයේ නම thumbnail: desc_html: OpenGraph සහ API හරහා පෙරදසුන් සඳහා භාවිතා වේ. 1200x630px නිර්දේශිතයි @@ -1514,8 +1509,6 @@ si: too_late: මෙම වර්ජනයට අභියාචනයක් ඉදිරිපත් කිරීමට ප්‍රමාද වැඩියි tags: does_not_match_previous_name: පෙර නමට නොගැලපේ - terms: - title: "%{instance} සේවා නියම සහ රහස්‍යතා ප්‍රතිපත්තිය" themes: contrast: Mastodon (ඉහළ වෙනස) default: මැස්ටෝඩන් (අඳුරු) diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index bd7039399..e90d9a093 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -101,7 +101,9 @@ cs: user_role: color: Barva, která má být použita pro roli v celém UI, jako RGB v hex formátu highlighted: Toto roli učiní veřejně viditelnou + name: Veřejný název role, pokud má být role zobrazena jako odznak permissions_as_keys: Uživatelé s touto rolí budou moci... + position: Vyšší role rozhoduje o řešení konfliktů v určitých situacích. Některé akce lze provádět pouze na rolích s nižší prioritou webhook: events: Zvolte odesílané události url: Kam budou události odesílány diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 4ed611b18..6c12a07f4 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -27,7 +27,6 @@ sk: learn_more: Zisti viac logged_in_as_html: Práve si prihlásený/á ako %{username}. logout_before_registering: Už si prihlásený/á. - privacy_policy: Zásady súkromia rules: Serverové pravidlá see_whats_happening: Pozoruj, čo sa deje server_stats: 'Serverové štatistiky:' @@ -39,7 +38,6 @@ sk: other: príspevky status_count_before: Ktorí napísali tagline: Decentralizovaná sociálna sieť - terms: Podmienky užitia unavailable_content: Nedostupný obsah unavailable_content_description: reason: 'Dôvod:' @@ -563,9 +561,6 @@ sk: site_short_description: desc_html: Zobrazené na bočnom paneli a pri meta tagoch. Popíš čo je Mastodon, a čo robí tento server iným, v jednom paragrafe. Pokiaľ toto necháš prázdne, bude tu zobrazený základný popis servera. title: Krátky popis serveru - site_terms: - desc_html: Môžeš si napísať svoje vlastné pravidla o súkromí, prevádzke, alebo aj iné legality. Môžeš tu používať HTML kód - title: Vlastné pravidlá prevádzky site_title: Názov servera thumbnail: desc_html: Používané pre náhľady cez OpenGraph a API. Doporučuje sa rozlišenie 1200x630px @@ -1104,8 +1099,6 @@ sk: sensitive_content: Senzitívny obsah tags: does_not_match_previous_name: nezhoduje sa s predošlým názvom - terms: - title: Podmienky užívania, a pravidlá súkromia pre %{instance} themes: contrast: Mastodon (vysoký kontrast) default: Mastodon (tmavý) diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 1b1aa1b6a..2c1f11afa 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -41,7 +41,6 @@ sl: two: stanja status_count_before: Ki so avtorji tagline: Decentralizirano družbeno omrežje - terms: Pogoji storitve unavailable_content: Moderirani strežniki unavailable_content_description: domain: Strežnik @@ -829,8 +828,8 @@ sl: desc_html: Prikazano v stranski vrstici in metaoznakah. V enem odstavku opišite, kaj je Mastodon in kaj naredi ta strežnik poseben. title: Kratek opis strežnika site_terms: - desc_html: Lahko napišete svojo pravilnik o zasebnosti, pogoje storitve ali druge pravne dokumente. Lahko uporabite oznake HTML - title: Pogoji storitve po meri + desc_html: Napišete lahko svoj pravilnik o zasebnosti. Uporabite lahko značke HTML. + title: Pravilnik o zasebnosti po meri site_title: Ime strežnika thumbnail: desc_html: Uporablja se za predogled prek OpenGrapha in API-ja. Priporočamo 1200x630px @@ -1787,7 +1786,7 @@ sl:

Ta dokument je CC-BY-SA. Zadnja posodobitev je bila 7. marca 2018.

Prvotno je bila prilagojena v skladu s politiko zasebnost Discourse.

- title: "%{instance} Pogoji storitve in pravilnik o zasebnosti" + title: Pravilnik o zasebnosti %{instance} themes: contrast: Mastodon (Visok kontrast) default: Mastodon (Temna) diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 3beca5f53..e90449495 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -28,7 +28,7 @@ sq: learn_more: Mësoni më tepër logged_in_as_html: Aktualisht jeni i futur si %{username}. logout_before_registering: Jeni i futur tashmë. - privacy_policy: Rregulla privatësie + privacy_policy: Rregulla Privatësie rules: Rregulla shërbyesi rules_html: 'Më poshtë keni një përmbledhje të rregullave që duhet të ndiqni, nëse doni të keni një llogari në këtë shërbyes Mastodon:' see_whats_happening: Shihni ç'ndodh @@ -39,7 +39,6 @@ sq: other: mesazhe status_count_before: Që kanë krijuar tagline: Rrjet shoqëror i decentralizuar - terms: Kushte shërbimi unavailable_content: Shërbyes të moderuar unavailable_content_description: domain: Shërbyes @@ -794,8 +793,8 @@ sq: desc_html: E shfaqur në anështyllë dhe etiketa meta. Përshkruani në një paragraf të vetëm ç’është Mastodon-i dhe ç’e bën special këtë shërbyes. Në u lëntë i zbrazët, për shërbyesin do të përdoret përshkrimi parazgjedhje. title: Përshkrim i shkurtër shërbyesi site_terms: - desc_html: Mund të shkruani rregullat tuaja të privatësisë, kushtet e shërbimit ose gjëra të tjera ligjore. Mund të përdorni etiketa HTML - title: Kushte vetjake shërbimi + desc_html: Mund të shkruani rregullat tuaja të privatësisë. Mundeni të përdorni etiketa HTML + title: Rregulla vetjake privatësie site_title: Emër shërbyesi thumbnail: desc_html: I përdorur për paraparje përmes OpenGraph-it dhe API-t. Këshillohet 1200x630px @@ -1713,7 +1712,7 @@ sq:

Ky dokument licencohet sipas CC-BY-SA. Qe përditësuar së fundi më 26 maj 2022.

Përshtatur fillimisht prej rregulave të privatësisë së Discourse-it.

- title: Kushte Shërbimi dhe Rregulla Privatësie te %{instance} + title: Rregulla Privatësie të %{instance} themes: contrast: Mastodon (Me shumë kontrast) default: Mastodon (I errët) diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index 692db061a..0596d4b68 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -179,9 +179,6 @@ sr-Latn: site_description_extended: desc_html: Dobro mesto za vaš kod ponašanja, pravila, smernice i druge stvari po kojima se Vaša instanca razlikuje. Možete koristiti HTML tagove title: Proizvoljne dodatne informacije - site_terms: - desc_html: Možete pisati Vašu politiku privatnosti, uslove korišćenja i ostale legalne stvari. Možete koristiti HTML tagove - title: Proizvoljni uslovi korišćenja site_title: Ime instance thumbnail: desc_html: Koristi se za preglede kroz OpenGraph i API. Preporučuje se 1200x630px @@ -396,8 +393,6 @@ sr-Latn: pinned: Prikačeni tut reblogged: podržano sensitive_content: Osetljiv sadržaj - terms: - title: Uslovi korišćenja i politika privatnosti instance %{instance} themes: default: Mastodont two_factor_authentication: diff --git a/config/locales/sr.yml b/config/locales/sr.yml index e6cbb26d2..fb2c86cff 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -12,14 +12,12 @@ sr: documentation: Документација hosted_on: Мастодонт хостован на %{domain} learn_more: Сазнајте више - privacy_policy: Полиса приватности source_code: Изворни код status_count_after: few: статуси one: статус other: статуса status_count_before: Који су написали - terms: Услови коришћења user_count_after: few: корисници one: корисник @@ -314,9 +312,6 @@ sr: site_short_description: desc_html: Приказано у изборнику са стране и у мета ознакама. Опиши шта је Мастодон и шта чини овај сервер посебним у једном пасусу. Ако остане празно, вратиће се првобитни опис инстанце. title: Кратак опис инстанце - site_terms: - desc_html: Можете писати Вашу политику приватности, услове коришћења и остале легалне ствари. Можете користити HTML тагове - title: Произвољни услови коришћења site_title: Име инстанце thumbnail: desc_html: Користи се за прегледе кроз OpenGraph и API. Препоручује се 1200x630px @@ -642,8 +637,6 @@ sr: pinned: Прикачена труба reblogged: подржано sensitive_content: Осетљив садржај - terms: - title: Услови коришћења и политика приватности инстанце %{instance} themes: contrast: Велики контраст default: Мастодон diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 77a44b75d..6ea6bbfb7 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -26,7 +26,6 @@ sv: learn_more: Lär dig mer logged_in_as_html: Inloggad som %{username}. logout_before_registering: Du är redan inloggad. - privacy_policy: Integritetspolicy rules: Serverns regler rules_html: 'Nedan en sammanfattning av kontoreglerna för denna Mastodonserver:' see_whats_happening: Se vad som händer @@ -36,7 +35,6 @@ sv: one: status other: statusar status_count_before: Som skapat - terms: Användarvillkor unavailable_content: Otillgängligt innehåll unavailable_content_description: domain: Server @@ -574,9 +572,6 @@ sv: title: Egentillverkad utökad information site_short_description: title: Kort beskrivning av servern - site_terms: - desc_html: Du kan skriva din egen integritetspolicy, användarvillkor eller andra regler. Du kan använda HTML-taggar - title: Egentillverkad villkor för tjänster site_title: Namn på instans thumbnail: desc_html: Används för förhandsgranskningar via OpenGraph och API. 1200x630px rekommenderas @@ -1155,8 +1150,6 @@ sv: too_late: Det är för sent att överklaga denna strejk tags: does_not_match_previous_name: matchar inte det föregående namnet - terms: - title: "%{instance} Användarvillkor och Sekretesspolicy" themes: contrast: Hög kontrast default: Mastodon diff --git a/config/locales/ta.yml b/config/locales/ta.yml index d2b753cf3..ea1788302 100644 --- a/config/locales/ta.yml +++ b/config/locales/ta.yml @@ -20,7 +20,6 @@ ta: get_apps: கைப்பேசி செயலியை முயற்சி செய்யவும் hosted_on: மாஸ்டோடாண் %{domain} இனையத்தில் இயங்குகிறது learn_more: மேலும் அறிய - privacy_policy: தனியுரிமை கொள்கை see_whats_happening: என்ன நடக்கிறது என்று பார்க்க server_stats: 'வழங்கியின் புள்ளிவிவரங்கள்:' source_code: நிரல் மூலம் @@ -28,7 +27,6 @@ ta: one: பதிவு other: பதிவுகள் status_count_before: எழுதிய - terms: சேவை விதிமுறைகள் unavailable_content: விசயங்கள் இல்லை unavailable_content_description: domain: வழங்கி diff --git a/config/locales/te.yml b/config/locales/te.yml index fe39bb752..3f0c80980 100644 --- a/config/locales/te.yml +++ b/config/locales/te.yml @@ -12,13 +12,11 @@ te: documentation: పత్రీకరణ hosted_on: మాస్టొడాన్ %{domain} లో హోస్టు చేయబడింది learn_more: మరింత తెలుసుకోండి - privacy_policy: గోప్యత విధానము source_code: సోర్సు కోడ్ status_count_after: one: స్థితి other: స్థితులు status_count_before: ఎవరు రాశారు - terms: సేవా నిబంధనలు user_count_after: one: వినియోగదారు other: వినియోగదారులు diff --git a/config/locales/th.yml b/config/locales/th.yml index be3c24482..dd04aefa1 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -28,7 +28,6 @@ th: learn_more: เรียนรู้เพิ่มเติม logged_in_as_html: คุณกำลังเข้าสู่ระบบเป็น %{username} ในปัจจุบัน logout_before_registering: คุณได้เข้าสู่ระบบอยู่แล้ว - privacy_policy: นโยบายความเป็นส่วนตัว rules: กฎของเซิร์ฟเวอร์ rules_html: 'ด้านล่างคือข้อมูลสรุปของกฎที่คุณจำเป็นต้องปฏิบัติตามหากคุณต้องการมีบัญชีในเซิร์ฟเวอร์ Mastodon นี้:' see_whats_happening: ดูสิ่งที่กำลังเกิดขึ้น @@ -38,7 +37,6 @@ th: other: โพสต์ status_count_before: ผู้เผยแพร่ tagline: เครือข่ายสังคมแบบกระจายศูนย์ - terms: เงื่อนไขการให้บริการ unavailable_content: เซิร์ฟเวอร์ที่มีการควบคุม unavailable_content_description: domain: เซิร์ฟเวอร์ @@ -768,9 +766,6 @@ th: site_short_description: desc_html: แสดงในแถบข้างและแท็กเมตา อธิบายว่า Mastodon คืออะไรและสิ่งที่ทำให้เซิร์ฟเวอร์นี้พิเศษในย่อหน้าเดียว title: คำอธิบายเซิร์ฟเวอร์แบบสั้น - site_terms: - desc_html: คุณสามารถเขียนนโยบายความเป็นส่วนตัว, เงื่อนไขการให้บริการ หรือภาษากฎหมายอื่น ๆ ของคุณเอง คุณสามารถใช้แท็ก HTML - title: เงื่อนไขการให้บริการที่กำหนดเอง site_title: ชื่อเซิร์ฟเวอร์ thumbnail: desc_html: ใช้สำหรับการแสดงตัวอย่างผ่าน OpenGraph และ API 1200x630px ที่แนะนำ @@ -1536,8 +1531,6 @@ th: sensitive_content: เนื้อหาที่ละเอียดอ่อน tags: does_not_match_previous_name: ไม่ตรงกับชื่อก่อนหน้านี้ - terms: - title: เงื่อนไขการให้บริการและนโยบายความเป็นส่วนตัวของ %{instance} themes: contrast: Mastodon (ความคมชัดสูง) default: Mastodon (มืด) diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 82a00b7fc..74fbf4be2 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -28,7 +28,7 @@ tr: learn_more: Daha fazla bilgi edinin logged_in_as_html: Şu an %{username} olarak oturum açmışsınız. logout_before_registering: Zaten oturumunuz açık. - privacy_policy: Gizlilik politikası + privacy_policy: Gizlilik Politikası rules: Sunucu kuralları rules_html: 'Aşağıda, bu Mastodon sunucusu üzerinde bir hesap açmak istiyorsanız uymanız gereken kuralların bir özeti var:' see_whats_happening: Neler olduğunu görün @@ -39,7 +39,6 @@ tr: other: durum yazıldı status_count_before: Şu ana kadar tagline: Merkezi olmayan sosyal ağ - terms: Kullanım şartları unavailable_content: Denetlenen sunucular unavailable_content_description: domain: Sunucu @@ -797,8 +796,8 @@ tr: desc_html: Kenar çubuğunda ve meta etiketlerinde görüntülenir. Mastodon'un ne olduğunu ve bu sunucuyu özel kılan şeyleri tek bir paragrafta açıklayın. title: Kısa sunucu açıklaması site_terms: - desc_html: Kendi gizlilik politikanızı, hizmet şartlarınızı ya da diğer hukuki metinlerinizi yazabilirsiniz. HTML etiketleri kullanabilirsiniz - title: Özel hizmet şartları + desc_html: Kendi gizlilik politikanızı yazabilirsiniz. HTML etiketlerini kullanabilirsiniz + title: Özel gizlilik politikası site_title: Site başlığı thumbnail: desc_html: OpenGraph ve API ile ön izlemeler için kullanılır. 1200x630px tavsiye edilir @@ -1718,7 +1717,7 @@ tr:

Bu belge CC-BY-SA altında lisanslanmıştır. En son 26 Mayıs 2022 tarihinde güncellenmiştir.

Discourse gizlilik politikasından uyarlanmıştır.

- title: "%{instance} Hizmet Şartları ve Gizlilik Politikası" + title: "%{instance} Gizlilik Politikası" themes: contrast: Mastodon (Yüksek karşıtlık) default: Mastodon (Karanlık) diff --git a/config/locales/tt.yml b/config/locales/tt.yml index a520e4d2b..f762424e5 100644 --- a/config/locales/tt.yml +++ b/config/locales/tt.yml @@ -4,7 +4,6 @@ tt: about_this: Хакында api: API contact_unavailable: Юк - privacy_policy: Хосусыйлык сәясәте unavailable_content_description: domain: Сервер user_count_after: diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 58abba1bd..6d411bf8d 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -26,7 +26,7 @@ uk: learn_more: Дізнатися більше logged_in_as_html: Зараз ви увійшли як %{username}. logout_before_registering: Ви вже увійшли. - privacy_policy: Політика приватності + privacy_policy: Політика конфіденційності rules: Правила сервера rules_html: 'Внизу наведено підсумок правил, яких ви повинні дотримуватися, якщо хочете мати обліковий запис на цьому сервері Mastodon:' see_whats_happening: Погляньте, що відбувається @@ -39,7 +39,6 @@ uk: other: статуси status_count_before: Опубліковано tagline: Децентралізована соціальна мережа - terms: Правила використання unavailable_content: Недоступний вміст unavailable_content_description: domain: Сервер @@ -822,10 +821,8 @@ uk: desc_html: Відображається в бічній панелі та мета-тегах. Опишіть, що таке Mastodon і що робить цей сервер особливим, в одному абзаці. title: Короткий опис сервера site_terms: - desc_html: |- - Ви можене написати власну політику приватності, умови використанні та інші законні штуки
- Можете використовувати HTML теги - title: Особливі умови використання + desc_html: Ви можете писати власну політику конфіденційності самостійно. Ви можете використовувати HTML-теги + title: Особлива політика конфіденційності site_title: Назва сайту thumbnail: desc_html: Використовується для передпоказів через OpenGraph та API. Бажано розміром 1200х640 пікселів @@ -1701,7 +1698,7 @@ uk: tags: does_not_match_previous_name: не збігається з попереднім ім'ям terms: - title: Умови використання та Політика приватності %{instance} + title: "%{instance} Політика конфіденційності" themes: contrast: Висока контрасність default: Mastodon diff --git a/config/locales/vi.yml b/config/locales/vi.yml index f5fe23795..1e4b9e0b8 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -36,7 +36,6 @@ vi: other: tút status_count_before: Nơi lưu giữ tagline: Mạng xã hội liên hợp - terms: Điều khoản dịch vụ unavailable_content: Giới hạn chung unavailable_content_description: domain: Máy chủ @@ -779,8 +778,8 @@ vi: desc_html: Hiển thị trong thanh bên và thẻ meta. Mô tả Mastodon là gì và điều gì làm cho máy chủ này trở nên đặc biệt trong một đoạn văn duy nhất. title: Mô tả máy chủ ngắn site_terms: - desc_html: Bạn có thể viết điều khoản dịch vụ, quyền riêng tư hoặc các vấn đề pháp lý khác. Dùng thẻ HTML - title: Điều khoản dịch vụ tùy chỉnh + desc_html: Bạn có thể tự soạn chính sách bảo mật của riêng bạn. Sử dụng HTML + title: Sửa chính sách bảo mật site_title: Tên máy chủ thumbnail: desc_html: Bản xem trước thông qua OpenGraph và API. Khuyến nghị 1200x630px @@ -1649,7 +1648,7 @@ vi:

Nếu có thay đổi chính sách bảo mật, chúng tôi sẽ đăng những thay đổi đó ở mục này.

Tài liệu này phát hành dưới giấy phép CC-BY-SA và được cập nhật lần cuối vào ngày 26 tháng 5 năm 2022.

Chỉnh sửa và hoàn thiện từ Discourse.

- title: Quy tắc của %{instance} + title: Chính sách bảo mật %{instance} themes: contrast: Mastodon (Độ tương phản cao) default: Mastodon (Tối) diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index ceffecd27..e0f968db8 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -38,7 +38,6 @@ zh-CN: other: 条嘟文 status_count_before: 他们共嘟出了 tagline: 分布式社交网络 - terms: 使用条款 unavailable_content: 被限制的服务器 unavailable_content_description: domain: 服务器 @@ -781,8 +780,8 @@ zh-CN: desc_html: 会在在侧栏和元数据标签中显示。可以用一小段话描述 Mastodon 是什么,以及本服务器的特点。 title: 服务器一句话介绍 site_terms: - desc_html: 可以填写自己的隐私权政策、使用条款或其他法律文本。可以使用 HTML 标签 - title: 自定义使用条款 + desc_html: 您可以写自己的隐私政策。您可以使用 HTML 标签 + title: 自定义隐私政策 site_title: 本站名称 thumbnail: desc_html: 用于在 OpenGraph 和 API 中显示预览图。推荐分辨率 1200×630px @@ -1685,7 +1684,7 @@ zh-CN:

此文件以 CC-BY-SA 授权。最后更新时间为 2022 年 5 月 26 日。

最初改编自 Discourse 隐私政策.

- title: "%{instance} 使用条款和隐私权政策" + title: "%{instance} 的隐私政策" themes: contrast: Mastodon(高对比度) default: Mastodon(暗色主题) diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index 39dfc9356..8696b40d2 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -25,7 +25,6 @@ zh-HK: 這個帳戶是代表伺服器,而非代表任何個人用戶的虛擬帳號。 此帳戶是為聯盟協定而設。除非你想封鎖整個伺服器的話,否則請不要封鎖這個帳戶。如果你想封鎖伺服器,請使用網域封鎖以達到相同效果。 learn_more: 了解更多 - privacy_policy: 隱私權政策 rules: 系統規則 rules_html: 如果你想要在本站開一個新帳戶,以下是你需要遵守的規則: see_whats_happening: 看看發生什麼事 @@ -34,7 +33,6 @@ zh-HK: status_count_after: other: 篇文章 status_count_before: 共發佈了 - terms: 使用條款 unavailable_content: 受限制的伺服器 unavailable_content_description: domain: 伺服器 @@ -578,9 +576,6 @@ zh-HK: site_short_description: desc_html: "顯示在側邊欄和網頁標籤(meta tags)。以一句話描述Mastodon是甚麼,有甚麼令這個伺服器脫𩓙而出。" title: 伺服器短描述 - site_terms: - desc_html: 可以填寫自己的隱私權政策、使用條款或其他法律文本。可以使用 HTML 標籤 - title: 自訂使用條款 site_title: 本站名稱 thumbnail: desc_html: 用於在 OpenGraph 和 API 中顯示預覽圖。推薦大小 1200×630px @@ -1191,8 +1186,6 @@ zh-HK: sensitive_content: 敏感內容 tags: does_not_match_previous_name: 和舊有名稱並不符合 - terms: - title: "%{instance} 使用條款和隱私權政策" themes: contrast: 高對比 default: 萬象 diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index c59df907a..29af27c66 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -38,7 +38,6 @@ zh-TW: other: 條嘟文 status_count_before: 他們共嘟出了 tagline: 去中心化社群網路 - terms: 使用條款 unavailable_content: 無法取得的內容 unavailable_content_description: domain: 伺服器 @@ -783,8 +782,8 @@ zh-TW: desc_html: 顯示在側邊欄和網頁標籤 (meta tags)。以一段話描述 Mastodon 是甚麼,以及這個伺服器的特色。 title: 伺服器短描述 site_terms: - desc_html: 可以填寫自己的隱私權政策、使用條款或其他法律文本。可以使用 HTML 標籤 - title: 自訂使用條款 + desc_html: 您可以撰寫自己的隱私權政策。您可以使用 HTML 標籤。 + title: 客製的隱私權政策 site_title: 伺服器名稱 thumbnail: desc_html: 用於在 OpenGraph 和 API 中顯示預覽圖。推薦大小 1200×630px @@ -1690,7 +1689,7 @@ zh-TW:

此文件以 CC-BY-SA 授權。最後更新時間為 2022 年 5 月 26 日。

最初改編自 Discourse 隱私權政策.

- title: "%{instance} 使用條款和隱私權政策" + title: "%{instance} 隱私權政策" themes: contrast: Mastodon(高對比) default: Mastodon(深色) From 5cf056fdb0b16c3d8e093c28c3bcd8e54dc544ae Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Thu, 29 Sep 2022 23:36:14 +0900 Subject: [PATCH 434/652] Install python3 when building with Docker (#18072) --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 42869d5de..cf311fef2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,7 @@ RUN ARCH= && \ esac && \ echo "Etc/UTC" > /etc/localtime && \ apt-get update && \ - apt-get install -y --no-install-recommends ca-certificates wget python apt-utils && \ + apt-get install -y --no-install-recommends ca-certificates wget python3 apt-utils && \ cd ~ && \ wget -q https://nodejs.org/download/release/v$NODE_VER/node-v$NODE_VER-linux-$ARCH.tar.gz && \ tar xf node-v$NODE_VER-linux-$ARCH.tar.gz && \ From c55219efa811b3c6347774bec1b174d325e5f300 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 30 Sep 2022 01:14:37 +0200 Subject: [PATCH 435/652] Remove volume number from hashtags in web UI (#19253) --- app/javascript/mastodon/components/hashtag.js | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/app/javascript/mastodon/components/hashtag.js b/app/javascript/mastodon/components/hashtag.js index 4e9cd3569..4a5a4bb57 100644 --- a/app/javascript/mastodon/components/hashtag.js +++ b/app/javascript/mastodon/components/hashtag.js @@ -1,7 +1,7 @@ // @ts-check import React from 'react'; import { Sparklines, SparklinesCurve } from 'react-sparklines'; -import { FormattedMessage, injectIntl, defineMessages } from 'react-intl'; +import { FormattedMessage } from 'react-intl'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import Permalink from './permalink'; @@ -9,10 +9,6 @@ import ShortNumber from 'mastodon/components/short_number'; import Skeleton from 'mastodon/components/skeleton'; import classNames from 'classnames'; -const messages = defineMessages({ - totalVolume: { id: 'hashtag.total_volume', defaultMessage: 'Total volume in the last {days, plural, one {day} other {{days} days}}' }, -}); - class SilentErrorBoundary extends React.Component { static propTypes = { @@ -69,7 +65,7 @@ ImmutableHashtag.propTypes = { hashtag: ImmutablePropTypes.map.isRequired, }; -const Hashtag = injectIntl(({ name, href, to, people, uses, history, className, intl }) => ( +const Hashtag = ({ name, href, to, people, history, className }) => (
@@ -79,11 +75,6 @@ const Hashtag = injectIntl(({ name, href, to, people, uses, history, className, {typeof people !== 'undefined' ? : }
- - {typeof uses !== 'undefined' ? : } - * - -
0)}> @@ -92,7 +83,7 @@ const Hashtag = injectIntl(({ name, href, to, people, uses, history, className,
-)); +); Hashtag.propTypes = { name: PropTypes.string, From 37eaa7fc01d8e9cbd06a62cc9ac4b3bd4d835240 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 3 Oct 2022 02:56:12 +0200 Subject: [PATCH 436/652] =?UTF-8?q?Fix=20=E2=80=9CChange=20subscribed=20la?= =?UTF-8?q?nguages=E2=80=9D=20crashing=20in=20some=20situations=20(#19268)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mastodon/features/subscribed_languages_modal/index.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/javascript/mastodon/features/subscribed_languages_modal/index.js b/app/javascript/mastodon/features/subscribed_languages_modal/index.js index 6a1bb2c47..a519ceabc 100644 --- a/app/javascript/mastodon/features/subscribed_languages_modal/index.js +++ b/app/javascript/mastodon/features/subscribed_languages_modal/index.js @@ -78,6 +78,10 @@ class SubscribedLanguagesModal extends ImmutablePureComponent { const language = this.props.languages.find(language => language[0] === value); const checked = this.state.selectedLanguages.includes(value); + if (!language) { + return null; + } + return (
+ + + +
); } diff --git a/app/javascript/mastodon/features/list_timeline/index.js b/app/javascript/mastodon/features/list_timeline/index.js index f0a7a0c7f..fd9d33df7 100644 --- a/app/javascript/mastodon/features/list_timeline/index.js +++ b/app/javascript/mastodon/features/list_timeline/index.js @@ -212,6 +212,7 @@ class ListTimeline extends React.PureComponent { {title} + ); diff --git a/app/javascript/mastodon/features/lists/index.js b/app/javascript/mastodon/features/lists/index.js index 389a0c5c8..017595ba0 100644 --- a/app/javascript/mastodon/features/lists/index.js +++ b/app/javascript/mastodon/features/lists/index.js @@ -80,6 +80,7 @@ class Lists extends ImmutablePureComponent { {intl.formatMessage(messages.heading)} + ); diff --git a/app/javascript/mastodon/features/mutes/index.js b/app/javascript/mastodon/features/mutes/index.js index c21433cc4..65df6149f 100644 --- a/app/javascript/mastodon/features/mutes/index.js +++ b/app/javascript/mastodon/features/mutes/index.js @@ -11,6 +11,7 @@ import ColumnBackButtonSlim from '../../components/column_back_button_slim'; import AccountContainer from '../../containers/account_container'; import { fetchMutes, expandMutes } from '../../actions/mutes'; import ScrollableList from '../../components/scrollable_list'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ heading: { id: 'column.mutes', defaultMessage: 'Muted users' }, @@ -72,6 +73,10 @@ class Mutes extends ImmutablePureComponent { , )} + + + + ); } diff --git a/app/javascript/mastodon/features/notifications/index.js b/app/javascript/mastodon/features/notifications/index.js index 4577bcb2d..f1bc5f160 100644 --- a/app/javascript/mastodon/features/notifications/index.js +++ b/app/javascript/mastodon/features/notifications/index.js @@ -281,6 +281,7 @@ class Notifications extends React.PureComponent { {intl.formatMessage(messages.title)} + ); diff --git a/app/javascript/mastodon/features/pinned_statuses/index.js b/app/javascript/mastodon/features/pinned_statuses/index.js index 67b13f10a..c6790ea06 100644 --- a/app/javascript/mastodon/features/pinned_statuses/index.js +++ b/app/javascript/mastodon/features/pinned_statuses/index.js @@ -8,6 +8,7 @@ import ColumnBackButtonSlim from '../../components/column_back_button_slim'; import StatusList from '../../components/status_list'; import { defineMessages, injectIntl } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ heading: { id: 'column.pins', defaultMessage: 'Pinned post' }, @@ -54,6 +55,9 @@ class PinnedStatuses extends ImmutablePureComponent { hasMore={hasMore} bindToDocument={!multiColumn} /> + + + ); } diff --git a/app/javascript/mastodon/features/privacy_policy/index.js b/app/javascript/mastodon/features/privacy_policy/index.js index eee4255f4..3df487e8f 100644 --- a/app/javascript/mastodon/features/privacy_policy/index.js +++ b/app/javascript/mastodon/features/privacy_policy/index.js @@ -15,6 +15,7 @@ class PrivacyPolicy extends React.PureComponent { static propTypes = { intl: PropTypes.object, + multiColumn: PropTypes.bool, }; state = { @@ -32,11 +33,11 @@ class PrivacyPolicy extends React.PureComponent { } render () { - const { intl } = this.props; + const { intl, multiColumn } = this.props; const { isLoading, content, lastUpdated } = this.state; return ( - +

@@ -51,6 +52,7 @@ class PrivacyPolicy extends React.PureComponent { {intl.formatMessage(messages.title)} + ); diff --git a/app/javascript/mastodon/features/public_timeline/index.js b/app/javascript/mastodon/features/public_timeline/index.js index 8dbef98c0..a41be07e1 100644 --- a/app/javascript/mastodon/features/public_timeline/index.js +++ b/app/javascript/mastodon/features/public_timeline/index.js @@ -153,6 +153,7 @@ class PublicTimeline extends React.PureComponent { {intl.formatMessage(messages.title)} + ); diff --git a/app/javascript/mastodon/features/reblogs/index.js b/app/javascript/mastodon/features/reblogs/index.js index 7704a049f..70d338ef1 100644 --- a/app/javascript/mastodon/features/reblogs/index.js +++ b/app/javascript/mastodon/features/reblogs/index.js @@ -11,6 +11,7 @@ import Column from '../ui/components/column'; import ScrollableList from '../../components/scrollable_list'; import Icon from 'mastodon/components/icon'; import ColumnHeader from '../../components/column_header'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ refresh: { id: 'refresh', defaultMessage: 'Refresh' }, @@ -80,6 +81,10 @@ class Reblogs extends ImmutablePureComponent { , )} + + + + ); } diff --git a/app/javascript/mastodon/features/status/index.js b/app/javascript/mastodon/features/status/index.js index f9a97c9b5..02f390c6a 100644 --- a/app/javascript/mastodon/features/status/index.js +++ b/app/javascript/mastodon/features/status/index.js @@ -7,6 +7,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import { createSelector } from 'reselect'; import { fetchStatus } from '../../actions/statuses'; import MissingIndicator from '../../components/missing_indicator'; +import LoadingIndicator from 'mastodon/components/loading_indicator'; import DetailedStatus from './components/detailed_status'; import ActionBar from './components/action_bar'; import Column from '../ui/components/column'; @@ -145,6 +146,7 @@ const makeMapStateToProps = () => { } return { + isLoading: state.getIn(['statuses', props.params.statusId, 'isLoading']), status, ancestorsIds, descendantsIds, @@ -187,6 +189,7 @@ class Status extends ImmutablePureComponent { params: PropTypes.object.isRequired, dispatch: PropTypes.func.isRequired, status: ImmutablePropTypes.map, + isLoading: PropTypes.bool, ancestorsIds: ImmutablePropTypes.list, descendantsIds: ImmutablePropTypes.list, intl: PropTypes.object.isRequired, @@ -566,9 +569,17 @@ class Status extends ImmutablePureComponent { render () { let ancestors, descendants; - const { status, ancestorsIds, descendantsIds, intl, domain, multiColumn, pictureInPicture } = this.props; + const { isLoading, status, ancestorsIds, descendantsIds, intl, domain, multiColumn, pictureInPicture } = this.props; const { fullscreen } = this.state; + if (isLoading) { + return ( + + + + ); + } + if (status === null) { return ( @@ -586,6 +597,9 @@ class Status extends ImmutablePureComponent { descendants =
{this.renderChildren(descendantsIds)}
; } + const isLocal = status.getIn(['account', 'acct'], '').indexOf('@') === -1; + const isIndexable = !status.getIn(['account', 'noindex']); + const handlers = { moveUp: this.handleHotkeyMoveUp, moveDown: this.handleHotkeyMoveDown, @@ -659,6 +673,7 @@ class Status extends ImmutablePureComponent { {titleFromStatus(status)} +
); diff --git a/app/javascript/mastodon/features/ui/components/bundle_column_error.js b/app/javascript/mastodon/features/ui/components/bundle_column_error.js index f39ebd900..ab6d4aa44 100644 --- a/app/javascript/mastodon/features/ui/components/bundle_column_error.js +++ b/app/javascript/mastodon/features/ui/components/bundle_column_error.js @@ -1,11 +1,10 @@ import React from 'react'; import PropTypes from 'prop-types'; import { defineMessages, injectIntl } from 'react-intl'; - -import Column from './column'; -import ColumnHeader from './column_header'; -import ColumnBackButtonSlim from '../../../components/column_back_button_slim'; -import IconButton from '../../../components/icon_button'; +import Column from 'mastodon/components/column'; +import ColumnHeader from 'mastodon/components/column_header'; +import IconButton from 'mastodon/components/icon_button'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ title: { id: 'bundle_column_error.title', defaultMessage: 'Network error' }, @@ -18,6 +17,7 @@ class BundleColumnError extends React.PureComponent { static propTypes = { onRetry: PropTypes.func.isRequired, intl: PropTypes.object.isRequired, + multiColumn: PropTypes.bool, } handleRetry = () => { @@ -25,16 +25,25 @@ class BundleColumnError extends React.PureComponent { } render () { - const { intl: { formatMessage } } = this.props; + const { multiColumn, intl: { formatMessage } } = this.props; return ( - - - + + +
{formatMessage(messages.body)}
+ + + +
); } diff --git a/app/javascript/mastodon/features/ui/components/column_loading.js b/app/javascript/mastodon/features/ui/components/column_loading.js index 0cdfd05d8..e5ed22584 100644 --- a/app/javascript/mastodon/features/ui/components/column_loading.js +++ b/app/javascript/mastodon/features/ui/components/column_loading.js @@ -10,6 +10,7 @@ export default class ColumnLoading extends ImmutablePureComponent { static propTypes = { title: PropTypes.oneOfType([PropTypes.node, PropTypes.string]), icon: PropTypes.string, + multiColumn: PropTypes.bool, }; static defaultProps = { @@ -18,10 +19,11 @@ export default class ColumnLoading extends ImmutablePureComponent { }; render() { - let { title, icon } = this.props; + let { title, icon, multiColumn } = this.props; + return ( - +
); diff --git a/app/javascript/mastodon/features/ui/components/columns_area.js b/app/javascript/mastodon/features/ui/components/columns_area.js index cc1bc83e0..9ee6fca43 100644 --- a/app/javascript/mastodon/features/ui/components/columns_area.js +++ b/app/javascript/mastodon/features/ui/components/columns_area.js @@ -139,11 +139,11 @@ class ColumnsArea extends ImmutablePureComponent { } renderLoading = columnId => () => { - return columnId === 'COMPOSE' ? : ; + return columnId === 'COMPOSE' ? : ; } renderError = (props) => { - return ; + return ; } render () { diff --git a/app/javascript/mastodon/features/ui/components/modal_root.js b/app/javascript/mastodon/features/ui/components/modal_root.js index 5c273ffa4..2224a8207 100644 --- a/app/javascript/mastodon/features/ui/components/modal_root.js +++ b/app/javascript/mastodon/features/ui/components/modal_root.js @@ -11,9 +11,7 @@ import VideoModal from './video_modal'; import BoostModal from './boost_modal'; import AudioModal from './audio_modal'; import ConfirmationModal from './confirmation_modal'; -import SubscribedLanguagesModal from 'mastodon/features/subscribed_languages_modal'; import FocalPointModal from './focal_point_modal'; -import InteractionModal from 'mastodon/features/interaction_modal'; import { MuteModal, BlockModal, @@ -23,7 +21,10 @@ import { ListAdder, CompareHistoryModal, FilterModal, + InteractionModal, + SubscribedLanguagesModal, } from 'mastodon/features/ui/util/async-components'; +import { Helmet } from 'react-helmet'; const MODAL_COMPONENTS = { 'MEDIA': () => Promise.resolve({ default: MediaModal }), @@ -41,8 +42,8 @@ const MODAL_COMPONENTS = { 'LIST_ADDER': ListAdder, 'COMPARE_HISTORY': CompareHistoryModal, 'FILTER': FilterModal, - 'SUBSCRIBED_LANGUAGES': () => Promise.resolve({ default: SubscribedLanguagesModal }), - 'INTERACTION': () => Promise.resolve({ default: InteractionModal }), + 'SUBSCRIBED_LANGUAGES': SubscribedLanguagesModal, + 'INTERACTION': InteractionModal, }; export default class ModalRoot extends React.PureComponent { @@ -111,9 +112,15 @@ export default class ModalRoot extends React.PureComponent { return ( {visible && ( - - {(SpecificComponent) => } - + <> + + {(SpecificComponent) => } + + + + + + )} ); diff --git a/app/javascript/mastodon/features/ui/index.js b/app/javascript/mastodon/features/ui/index.js index 8f9f38036..003991857 100644 --- a/app/javascript/mastodon/features/ui/index.js +++ b/app/javascript/mastodon/features/ui/index.js @@ -197,8 +197,8 @@ class SwitchingColumnsArea extends React.PureComponent { - - + + diff --git a/app/javascript/mastodon/features/ui/util/async-components.js b/app/javascript/mastodon/features/ui/util/async-components.js index c79dc014c..7686a69ea 100644 --- a/app/javascript/mastodon/features/ui/util/async-components.js +++ b/app/javascript/mastodon/features/ui/util/async-components.js @@ -166,6 +166,14 @@ export function FilterModal () { return import(/*webpackChunkName: "modals/filter_modal" */'../components/filter_modal'); } +export function InteractionModal () { + return import(/*webpackChunkName: "modals/interaction_modal" */'../../interaction_modal'); +} + +export function SubscribedLanguagesModal () { + return import(/*webpackChunkName: "modals/subscribed_languages_modal" */'../../subscribed_languages_modal'); +} + export function About () { return import(/*webpackChunkName: "features/about" */'../../about'); } diff --git a/app/javascript/mastodon/features/ui/util/react_router_helpers.js b/app/javascript/mastodon/features/ui/util/react_router_helpers.js index d452b871f..a65d79def 100644 --- a/app/javascript/mastodon/features/ui/util/react_router_helpers.js +++ b/app/javascript/mastodon/features/ui/util/react_router_helpers.js @@ -53,7 +53,9 @@ export class WrappedRoute extends React.Component { } renderLoading = () => { - return ; + const { multiColumn } = this.props; + + return ; } renderError = (props) => { diff --git a/app/javascript/mastodon/main.js b/app/javascript/mastodon/main.js index f33375b50..d0337ce0c 100644 --- a/app/javascript/mastodon/main.js +++ b/app/javascript/mastodon/main.js @@ -12,14 +12,6 @@ const perf = require('mastodon/performance'); function main() { perf.start('main()'); - if (window.history && history.replaceState) { - const { pathname, search, hash } = window.location; - const path = pathname + search + hash; - if (!(/^\/web($|\/)/).test(path)) { - history.replaceState(null, document.title, `/web${path}`); - } - } - return ready(async () => { const mountNode = document.getElementById('mastodon'); const props = JSON.parse(mountNode.getAttribute('data-props')); diff --git a/app/javascript/mastodon/reducers/statuses.js b/app/javascript/mastodon/reducers/statuses.js index 7efb49d85..c30c1e2cc 100644 --- a/app/javascript/mastodon/reducers/statuses.js +++ b/app/javascript/mastodon/reducers/statuses.js @@ -15,6 +15,8 @@ import { STATUS_COLLAPSE, STATUS_TRANSLATE_SUCCESS, STATUS_TRANSLATE_UNDO, + STATUS_FETCH_REQUEST, + STATUS_FETCH_FAIL, } from '../actions/statuses'; import { TIMELINE_DELETE } from '../actions/timelines'; import { STATUS_IMPORT, STATUSES_IMPORT } from '../actions/importer'; @@ -37,6 +39,10 @@ const initialState = ImmutableMap(); export default function statuses(state = initialState, action) { switch(action.type) { + case STATUS_FETCH_REQUEST: + return state.setIn([action.id, 'isLoading'], true); + case STATUS_FETCH_FAIL: + return state.delete(action.id); case STATUS_IMPORT: return importStatus(state, action.status); case STATUSES_IMPORT: diff --git a/app/javascript/mastodon/selectors/index.js b/app/javascript/mastodon/selectors/index.js index 3dd7f4897..bf46c810e 100644 --- a/app/javascript/mastodon/selectors/index.js +++ b/app/javascript/mastodon/selectors/index.js @@ -41,7 +41,7 @@ export const makeGetStatus = () => { ], (statusBase, statusReblog, accountBase, accountReblog, filters) => { - if (!statusBase) { + if (!statusBase || statusBase.get('isLoading')) { return null; } diff --git a/app/javascript/mastodon/service_worker/web_push_notifications.js b/app/javascript/mastodon/service_worker/web_push_notifications.js index 9b75e9b9d..f12595777 100644 --- a/app/javascript/mastodon/service_worker/web_push_notifications.js +++ b/app/javascript/mastodon/service_worker/web_push_notifications.js @@ -15,7 +15,7 @@ const notify = options => icon: '/android-chrome-192x192.png', tag: GROUP_TAG, data: { - url: (new URL('/web/notifications', self.location)).href, + url: (new URL('/notifications', self.location)).href, count: notifications.length + 1, preferred_locale: options.data.preferred_locale, }, @@ -90,7 +90,7 @@ export const handlePush = (event) => { options.tag = notification.id; options.badge = '/badge.png'; options.image = notification.status && notification.status.media_attachments.length > 0 && notification.status.media_attachments[0].preview_url || undefined; - options.data = { access_token, preferred_locale, id: notification.status ? notification.status.id : notification.account.id, url: notification.status ? `/web/@${notification.account.acct}/${notification.status.id}` : `/web/@${notification.account.acct}` }; + options.data = { access_token, preferred_locale, id: notification.status ? notification.status.id : notification.account.id, url: notification.status ? `/@${notification.account.acct}/${notification.status.id}` : `/@${notification.account.acct}` }; if (notification.status && notification.status.spoiler_text || notification.status.sensitive) { options.data.hiddenBody = htmlToPlainText(notification.status.content); @@ -115,7 +115,7 @@ export const handlePush = (event) => { tag: notification_id, timestamp: new Date(), badge: '/badge.png', - data: { access_token, preferred_locale, url: '/web/notifications' }, + data: { access_token, preferred_locale, url: '/notifications' }, }); }), ); @@ -166,24 +166,10 @@ const removeActionFromNotification = (notification, action) => { const openUrl = url => self.clients.matchAll({ type: 'window' }).then(clientList => { - if (clientList.length !== 0) { - const webClients = clientList.filter(client => /\/web\//.test(client.url)); + if (clientList.length !== 0 && 'navigate' in clientList[0]) { // Chrome 42-48 does not support navigate + const client = findBestClient(clientList); - if (webClients.length !== 0) { - const client = findBestClient(webClients); - const { pathname } = new URL(url, self.location); - - if (pathname.startsWith('/web/')) { - return client.focus().then(client => client.postMessage({ - type: 'navigate', - path: pathname.slice('/web/'.length - 1), - })); - } - } else if ('navigate' in clientList[0]) { // Chrome 42-48 does not support navigate - const client = findBestClient(clientList); - - return client.navigate(url).then(client => client.focus()); - } + return client.navigate(url).then(client => client.focus()); } return self.clients.openWindow(url); diff --git a/app/javascript/packs/public.js b/app/javascript/packs/public.js index e42468e0c..5ff45fa55 100644 --- a/app/javascript/packs/public.js +++ b/app/javascript/packs/public.js @@ -33,7 +33,6 @@ function main() { const { messages } = getLocale(); const React = require('react'); const ReactDOM = require('react-dom'); - const Rellax = require('rellax'); const { createBrowserHistory } = require('history'); const scrollToDetailedStatus = () => { @@ -112,12 +111,6 @@ function main() { scrollToDetailedStatus(); } - const parallaxComponents = document.querySelectorAll('.parallax'); - - if (parallaxComponents.length > 0 ) { - new Rellax('.parallax', { speed: -1 }); - } - delegate(document, '#registration_user_password_confirmation,#registration_user_password', 'input', () => { const password = document.getElementById('registration_user_password'); const confirmation = document.getElementById('registration_user_password_confirmation'); @@ -168,28 +161,6 @@ function main() { }); }); - delegate(document, '.webapp-btn', 'click', ({ target, button }) => { - if (button !== 0) { - return true; - } - window.location.href = target.href; - return false; - }); - - delegate(document, '.modal-button', 'click', e => { - e.preventDefault(); - - let href; - - if (e.target.nodeName !== 'A') { - href = e.target.parentNode.href; - } else { - href = e.target.href; - } - - window.open(href, 'mastodon-intent', 'width=445,height=600,resizable=no,menubar=no,status=no,scrollbars=yes'); - }); - delegate(document, '#account_display_name', 'input', ({ target }) => { const name = document.querySelector('.card .display-name strong'); if (name) { diff --git a/app/javascript/styles/application.scss b/app/javascript/styles/application.scss index e9f596e2f..81a040108 100644 --- a/app/javascript/styles/application.scss +++ b/app/javascript/styles/application.scss @@ -8,7 +8,6 @@ @import 'mastodon/branding'; @import 'mastodon/containers'; @import 'mastodon/lists'; -@import 'mastodon/footer'; @import 'mastodon/widgets'; @import 'mastodon/forms'; @import 'mastodon/accounts'; diff --git a/app/javascript/styles/contrast/diff.scss b/app/javascript/styles/contrast/diff.scss index 22f5bcc94..27eb837df 100644 --- a/app/javascript/styles/contrast/diff.scss +++ b/app/javascript/styles/contrast/diff.scss @@ -68,10 +68,6 @@ color: $darker-text-color; } -.public-layout .public-account-header__tabs__tabs .counter.active::after { - border-bottom: 4px solid $ui-highlight-color; -} - .compose-form .autosuggest-textarea__textarea::placeholder, .compose-form .spoiler-input__input::placeholder { color: $inverted-text-color; diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss index 4b27e6b4f..20e973b8b 100644 --- a/app/javascript/styles/mastodon-light/diff.scss +++ b/app/javascript/styles/mastodon-light/diff.scss @@ -655,95 +655,6 @@ html { } } -.public-layout { - .account__section-headline { - border: 1px solid lighten($ui-base-color, 8%); - - @media screen and (max-width: $no-gap-breakpoint) { - border-top: 0; - } - } - - .header, - .public-account-header, - .public-account-bio { - box-shadow: none; - } - - .public-account-bio, - .hero-widget__text { - background: $account-background-color; - } - - .header { - background: $ui-base-color; - border: 1px solid lighten($ui-base-color, 8%); - - @media screen and (max-width: $no-gap-breakpoint) { - border: 0; - } - - .brand { - &:hover, - &:focus, - &:active { - background: lighten($ui-base-color, 4%); - } - } - } - - .public-account-header { - &__image { - background: lighten($ui-base-color, 12%); - - &::after { - box-shadow: none; - } - } - - &__bar { - &::before { - background: $account-background-color; - border: 1px solid lighten($ui-base-color, 8%); - border-top: 0; - } - - .avatar img { - border-color: $account-background-color; - } - - @media screen and (max-width: $no-columns-breakpoint) { - background: $account-background-color; - border: 1px solid lighten($ui-base-color, 8%); - border-top: 0; - } - } - - &__tabs { - &__name { - h1, - h1 small { - color: $white; - - @media screen and (max-width: $no-columns-breakpoint) { - color: $primary-text-color; - } - } - } - } - - &__extra { - .public-account-bio { - border: 0; - } - - .public-account-bio .account__header__fields { - border-color: lighten($ui-base-color, 8%); - } - } - } -} - .notification__filter-bar button.active::after, .account__section-headline a.active::after { border-color: transparent transparent $white; diff --git a/app/javascript/styles/mastodon/containers.scss b/app/javascript/styles/mastodon/containers.scss index 8e5ed03f0..b49b93984 100644 --- a/app/javascript/styles/mastodon/containers.scss +++ b/app/javascript/styles/mastodon/containers.scss @@ -104,785 +104,3 @@ margin-left: 10px; } } - -.grid-3 { - display: grid; - grid-gap: 10px; - grid-template-columns: 3fr 1fr; - grid-auto-columns: 25%; - grid-auto-rows: max-content; - - .column-0 { - grid-column: 1 / 3; - grid-row: 1; - } - - .column-1 { - grid-column: 1; - grid-row: 2; - } - - .column-2 { - grid-column: 2; - grid-row: 2; - } - - .column-3 { - grid-column: 1 / 3; - grid-row: 3; - } - - @media screen and (max-width: $no-gap-breakpoint) { - grid-gap: 0; - grid-template-columns: minmax(0, 100%); - - .column-0 { - grid-column: 1; - } - - .column-1 { - grid-column: 1; - grid-row: 3; - } - - .column-2 { - grid-column: 1; - grid-row: 2; - } - - .column-3 { - grid-column: 1; - grid-row: 4; - } - } -} - -.grid-4 { - display: grid; - grid-gap: 10px; - grid-template-columns: repeat(4, minmax(0, 1fr)); - grid-auto-columns: 25%; - grid-auto-rows: max-content; - - .column-0 { - grid-column: 1 / 5; - grid-row: 1; - } - - .column-1 { - grid-column: 1 / 4; - grid-row: 2; - } - - .column-2 { - grid-column: 4; - grid-row: 2; - } - - .column-3 { - grid-column: 2 / 5; - grid-row: 3; - } - - .column-4 { - grid-column: 1; - grid-row: 3; - } - - .landing-page__call-to-action { - min-height: 100%; - } - - .flash-message { - margin-bottom: 10px; - } - - @media screen and (max-width: 738px) { - grid-template-columns: minmax(0, 50%) minmax(0, 50%); - - .landing-page__call-to-action { - padding: 20px; - display: flex; - align-items: center; - justify-content: center; - } - - .row__information-board { - width: 100%; - justify-content: center; - align-items: center; - } - - .row__mascot { - display: none; - } - } - - @media screen and (max-width: $no-gap-breakpoint) { - grid-gap: 0; - grid-template-columns: minmax(0, 100%); - - .column-0 { - grid-column: 1; - } - - .column-1 { - grid-column: 1; - grid-row: 3; - } - - .column-2 { - grid-column: 1; - grid-row: 2; - } - - .column-3 { - grid-column: 1; - grid-row: 5; - } - - .column-4 { - grid-column: 1; - grid-row: 4; - } - } -} - -.public-layout { - @media screen and (max-width: $no-gap-breakpoint) { - padding-top: 48px; - } - - .container { - max-width: 960px; - - @media screen and (max-width: $no-gap-breakpoint) { - padding: 0; - } - } - - .header { - background: lighten($ui-base-color, 8%); - box-shadow: 0 0 15px rgba($base-shadow-color, 0.2); - border-radius: 4px; - height: 48px; - margin: 10px 0; - display: flex; - align-items: stretch; - justify-content: center; - flex-wrap: nowrap; - overflow: hidden; - - @media screen and (max-width: $no-gap-breakpoint) { - position: fixed; - width: 100%; - top: 0; - left: 0; - margin: 0; - border-radius: 0; - box-shadow: none; - z-index: 110; - } - - & > div { - flex: 1 1 33.3%; - min-height: 1px; - } - - .nav-left { - display: flex; - align-items: stretch; - justify-content: flex-start; - flex-wrap: nowrap; - } - - .nav-center { - display: flex; - align-items: stretch; - justify-content: center; - flex-wrap: nowrap; - } - - .nav-right { - display: flex; - align-items: stretch; - justify-content: flex-end; - flex-wrap: nowrap; - } - - .brand { - display: block; - padding: 15px; - - .logo { - display: block; - height: 18px; - width: auto; - position: relative; - bottom: -2px; - fill: $primary-text-color; - - @media screen and (max-width: $no-gap-breakpoint) { - height: 20px; - } - } - - &:hover, - &:focus, - &:active { - background: lighten($ui-base-color, 12%); - } - } - - .nav-link { - display: flex; - align-items: center; - padding: 0 1rem; - font-size: 12px; - font-weight: 500; - text-decoration: none; - color: $darker-text-color; - white-space: nowrap; - text-align: center; - - &:hover, - &:focus, - &:active { - text-decoration: underline; - color: $primary-text-color; - } - - @media screen and (max-width: 550px) { - &.optional { - display: none; - } - } - } - - .nav-button { - background: lighten($ui-base-color, 16%); - margin: 8px; - margin-left: 0; - border-radius: 4px; - - &:hover, - &:focus, - &:active { - text-decoration: none; - background: lighten($ui-base-color, 20%); - } - } - } - - $no-columns-breakpoint: 600px; - - .grid { - display: grid; - grid-gap: 10px; - grid-template-columns: minmax(300px, 3fr) minmax(298px, 1fr); - grid-auto-columns: 25%; - grid-auto-rows: max-content; - - .column-0 { - grid-row: 1; - grid-column: 1; - } - - .column-1 { - grid-row: 1; - grid-column: 2; - } - - @media screen and (max-width: $no-columns-breakpoint) { - grid-template-columns: 100%; - grid-gap: 0; - - .column-1 { - display: none; - } - } - } - - .page-header { - @media screen and (max-width: $no-gap-breakpoint) { - border-bottom: 0; - } - } - - .public-account-header { - overflow: hidden; - margin-bottom: 10px; - box-shadow: 0 0 15px rgba($base-shadow-color, 0.2); - - &.inactive { - opacity: 0.5; - - .public-account-header__image, - .avatar { - filter: grayscale(100%); - } - - .logo-button { - background-color: $secondary-text-color; - } - } - - .logo-button { - padding: 3px 15px; - } - - &__image { - border-radius: 4px 4px 0 0; - overflow: hidden; - height: 300px; - position: relative; - background: darken($ui-base-color, 12%); - - &::after { - content: ""; - display: block; - position: absolute; - width: 100%; - height: 100%; - box-shadow: inset 0 -1px 1px 1px rgba($base-shadow-color, 0.15); - top: 0; - left: 0; - } - - img { - object-fit: cover; - display: block; - width: 100%; - height: 100%; - margin: 0; - border-radius: 4px 4px 0 0; - } - - @media screen and (max-width: 600px) { - height: 200px; - } - } - - &--no-bar { - margin-bottom: 0; - - .public-account-header__image, - .public-account-header__image img { - border-radius: 4px; - - @media screen and (max-width: $no-gap-breakpoint) { - border-radius: 0; - } - } - } - - @media screen and (max-width: $no-gap-breakpoint) { - margin-bottom: 0; - box-shadow: none; - - &__image::after { - display: none; - } - - &__image, - &__image img { - border-radius: 0; - } - } - - &__bar { - position: relative; - margin-top: -80px; - display: flex; - justify-content: flex-start; - - &::before { - content: ""; - display: block; - background: lighten($ui-base-color, 4%); - position: absolute; - bottom: 0; - left: 0; - right: 0; - height: 60px; - border-radius: 0 0 4px 4px; - z-index: -1; - } - - .avatar { - display: block; - width: 120px; - height: 120px; - padding-left: 20px - 4px; - flex: 0 0 auto; - - img { - display: block; - width: 100%; - height: 100%; - margin: 0; - border-radius: 50%; - border: 4px solid lighten($ui-base-color, 4%); - background: darken($ui-base-color, 8%); - } - } - - @media screen and (max-width: 600px) { - margin-top: 0; - background: lighten($ui-base-color, 4%); - border-radius: 0 0 4px 4px; - padding: 5px; - - &::before { - display: none; - } - - .avatar { - width: 48px; - height: 48px; - padding: 7px 0; - padding-left: 10px; - - img { - border: 0; - border-radius: 4px; - } - - @media screen and (max-width: 360px) { - display: none; - } - } - } - - @media screen and (max-width: $no-gap-breakpoint) { - border-radius: 0; - } - - @media screen and (max-width: $no-columns-breakpoint) { - flex-wrap: wrap; - } - } - - &__tabs { - flex: 1 1 auto; - margin-left: 20px; - - &__name { - padding-top: 20px; - padding-bottom: 8px; - - h1 { - font-size: 20px; - line-height: 18px * 1.5; - color: $primary-text-color; - font-weight: 500; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - text-shadow: 1px 1px 1px $base-shadow-color; - - small { - display: block; - font-size: 14px; - color: $primary-text-color; - font-weight: 400; - overflow: hidden; - text-overflow: ellipsis; - } - } - } - - @media screen and (max-width: 600px) { - margin-left: 15px; - display: flex; - justify-content: space-between; - align-items: center; - - &__name { - padding-top: 0; - padding-bottom: 0; - - h1 { - font-size: 16px; - line-height: 24px; - text-shadow: none; - - small { - color: $darker-text-color; - } - } - } - } - - &__tabs { - display: flex; - justify-content: flex-start; - align-items: stretch; - height: 58px; - - .details-counters { - display: flex; - flex-direction: row; - min-width: 300px; - } - - @media screen and (max-width: $no-columns-breakpoint) { - .details-counters { - display: none; - } - } - - .counter { - min-width: 33.3%; - box-sizing: border-box; - flex: 0 0 auto; - color: $darker-text-color; - padding: 10px; - border-right: 1px solid lighten($ui-base-color, 4%); - cursor: default; - text-align: center; - position: relative; - - a { - display: block; - } - - &:last-child { - border-right: 0; - } - - &::after { - display: block; - content: ""; - position: absolute; - bottom: 0; - left: 0; - width: 100%; - border-bottom: 4px solid $ui-primary-color; - opacity: 0.5; - transition: all 400ms ease; - } - - &.active { - &::after { - border-bottom: 4px solid $highlight-text-color; - opacity: 1; - } - - &.inactive::after { - border-bottom-color: $secondary-text-color; - } - } - - &:hover { - &::after { - opacity: 1; - transition-duration: 100ms; - } - } - - a { - text-decoration: none; - color: inherit; - } - - .counter-label { - font-size: 12px; - display: block; - } - - .counter-number { - font-weight: 500; - font-size: 18px; - margin-bottom: 5px; - color: $primary-text-color; - font-family: $font-display, sans-serif; - } - } - - .spacer { - flex: 1 1 auto; - height: 1px; - } - - &__buttons { - padding: 7px 8px; - } - } - } - - &__extra { - display: none; - margin-top: 4px; - - .public-account-bio { - border-radius: 0; - box-shadow: none; - background: transparent; - margin: 0 -5px; - - .account__header__fields { - border-top: 1px solid lighten($ui-base-color, 12%); - } - - .roles { - display: none; - } - } - - &__links { - margin-top: -15px; - font-size: 14px; - color: $darker-text-color; - - a { - display: inline-block; - color: $darker-text-color; - text-decoration: none; - padding: 15px; - font-weight: 500; - - strong { - font-weight: 700; - color: $primary-text-color; - } - } - } - - @media screen and (max-width: $no-columns-breakpoint) { - display: block; - flex: 100%; - } - } - } - - .account__section-headline { - border-radius: 4px 4px 0 0; - - @media screen and (max-width: $no-gap-breakpoint) { - border-radius: 0; - } - } - - .detailed-status__meta { - margin-top: 25px; - } - - .public-account-bio { - background: lighten($ui-base-color, 8%); - box-shadow: 0 0 15px rgba($base-shadow-color, 0.2); - border-radius: 4px; - overflow: hidden; - margin-bottom: 10px; - - @media screen and (max-width: $no-gap-breakpoint) { - box-shadow: none; - margin-bottom: 0; - border-radius: 0; - } - - .account__header__fields { - margin: 0; - border-top: 0; - - a { - color: $highlight-text-color; - } - - dl:first-child .verified { - border-radius: 0 4px 0 0; - } - - .verified a { - color: $valid-value-color; - } - } - - .account__header__content { - padding: 20px; - padding-bottom: 0; - color: $primary-text-color; - } - - &__extra, - .roles { - padding: 20px; - font-size: 14px; - color: $darker-text-color; - } - - .roles { - padding-bottom: 0; - } - } - - .directory__list { - display: grid; - grid-gap: 10px; - grid-template-columns: minmax(0, 50%) minmax(0, 50%); - - .account-card { - display: flex; - flex-direction: column; - } - - @media screen and (max-width: $no-gap-breakpoint) { - display: block; - - .account-card { - margin-bottom: 10px; - display: block; - } - } - } - - .card-grid { - display: flex; - flex-wrap: wrap; - min-width: 100%; - margin: 0 -5px; - - & > div { - box-sizing: border-box; - flex: 1 0 auto; - width: 300px; - padding: 0 5px; - margin-bottom: 10px; - max-width: 33.333%; - - @media screen and (max-width: 900px) { - max-width: 50%; - } - - @media screen and (max-width: 600px) { - max-width: 100%; - } - } - - @media screen and (max-width: $no-gap-breakpoint) { - margin: 0; - border-top: 1px solid lighten($ui-base-color, 8%); - - & > div { - width: 100%; - padding: 0; - margin-bottom: 0; - border-bottom: 1px solid lighten($ui-base-color, 8%); - - &:last-child { - border-bottom: 0; - } - - .card__bar { - background: $ui-base-color; - - &:hover, - &:active, - &:focus { - background: lighten($ui-base-color, 4%); - } - } - } - } - } -} diff --git a/app/javascript/styles/mastodon/footer.scss b/app/javascript/styles/mastodon/footer.scss deleted file mode 100644 index 0c3e42033..000000000 --- a/app/javascript/styles/mastodon/footer.scss +++ /dev/null @@ -1,152 +0,0 @@ -.public-layout { - .footer { - text-align: left; - padding-top: 20px; - padding-bottom: 60px; - font-size: 12px; - color: lighten($ui-base-color, 34%); - - @media screen and (max-width: $no-gap-breakpoint) { - padding-left: 20px; - padding-right: 20px; - } - - .grid { - display: grid; - grid-gap: 10px; - grid-template-columns: 1fr 1fr 2fr 1fr 1fr; - - .column-0 { - grid-column: 1; - grid-row: 1; - min-width: 0; - } - - .column-1 { - grid-column: 2; - grid-row: 1; - min-width: 0; - } - - .column-2 { - grid-column: 3; - grid-row: 1; - min-width: 0; - text-align: center; - - h4 a { - color: lighten($ui-base-color, 34%); - } - } - - .column-3 { - grid-column: 4; - grid-row: 1; - min-width: 0; - } - - .column-4 { - grid-column: 5; - grid-row: 1; - min-width: 0; - } - - @media screen and (max-width: 690px) { - grid-template-columns: 1fr 2fr 1fr; - - .column-0, - .column-1 { - grid-column: 1; - } - - .column-1 { - grid-row: 2; - } - - .column-2 { - grid-column: 2; - } - - .column-3, - .column-4 { - grid-column: 3; - } - - .column-4 { - grid-row: 2; - } - } - - @media screen and (max-width: 600px) { - .column-1 { - display: block; - } - } - - @media screen and (max-width: $no-gap-breakpoint) { - .column-0, - .column-1, - .column-3, - .column-4 { - display: none; - } - - .column-2 h4 { - display: none; - } - } - } - - .legal-xs { - display: none; - text-align: center; - padding-top: 20px; - - @media screen and (max-width: $no-gap-breakpoint) { - display: block; - } - } - - h4 { - text-transform: uppercase; - font-weight: 700; - margin-bottom: 8px; - color: $darker-text-color; - - a { - color: inherit; - text-decoration: none; - } - } - - ul a, - .legal-xs a { - text-decoration: none; - color: lighten($ui-base-color, 34%); - - &:hover, - &:active, - &:focus { - text-decoration: underline; - } - } - - .brand { - .logo { - display: block; - height: 36px; - width: auto; - margin: 0 auto; - color: lighten($ui-base-color, 34%); - } - - &:hover, - &:focus, - &:active { - .logo { - color: lighten($ui-base-color, 38%); - } - } - } - } -} diff --git a/app/javascript/styles/mastodon/rtl.scss b/app/javascript/styles/mastodon/rtl.scss index 98eb1511c..ccec8e95e 100644 --- a/app/javascript/styles/mastodon/rtl.scss +++ b/app/javascript/styles/mastodon/rtl.scss @@ -53,16 +53,6 @@ body.rtl { right: -26px; } - .landing-page__logo { - margin-right: 0; - margin-left: 20px; - } - - .landing-page .features-list .features-list__row .visual { - margin-left: 0; - margin-right: 15px; - } - .column-link__icon, .column-header__icon { margin-right: 0; @@ -350,44 +340,6 @@ body.rtl { margin-left: 45px; } - .landing-page .header-wrapper .mascot { - right: 60px; - left: auto; - } - - .landing-page__call-to-action .row__information-board { - direction: rtl; - } - - .landing-page .header .hero .floats .float-1 { - left: -120px; - right: auto; - } - - .landing-page .header .hero .floats .float-2 { - left: 210px; - right: auto; - } - - .landing-page .header .hero .floats .float-3 { - left: 110px; - right: auto; - } - - .landing-page .header .links .brand img { - left: 0; - } - - .landing-page .fa-external-link { - padding-right: 5px; - padding-left: 0 !important; - } - - .landing-page .features #mastodon-timeline { - margin-right: 0; - margin-left: 30px; - } - @media screen and (min-width: 631px) { .column, .drawer { @@ -415,32 +367,6 @@ body.rtl { padding-right: 0; } - .public-layout { - .header { - .nav-button { - margin-left: 8px; - margin-right: 0; - } - } - - .public-account-header__tabs { - margin-left: 0; - margin-right: 20px; - } - } - - .landing-page__information { - .account__display-name { - margin-right: 0; - margin-left: 5px; - } - - .account__avatar-wrapper { - margin-left: 12px; - margin-right: 0; - } - } - .card__bar .display-name { margin-left: 0; margin-right: 15px; diff --git a/app/javascript/styles/mastodon/statuses.scss b/app/javascript/styles/mastodon/statuses.scss index a3237a630..ce71d11e4 100644 --- a/app/javascript/styles/mastodon/statuses.scss +++ b/app/javascript/styles/mastodon/statuses.scss @@ -137,8 +137,7 @@ a.button.logo-button { justify-content: center; } -.embed, -.public-layout { +.embed { .status__content[data-spoiler="folded"] { .e-content { display: none; diff --git a/app/lib/permalink_redirector.rb b/app/lib/permalink_redirector.rb index 6d15f3963..cf1a37625 100644 --- a/app/lib/permalink_redirector.rb +++ b/app/lib/permalink_redirector.rb @@ -8,16 +8,14 @@ class PermalinkRedirector end def redirect_path - if path_segments[0] == 'web' - if path_segments[1].present? && path_segments[1].start_with?('@') && path_segments[2] =~ /\d/ - find_status_url_by_id(path_segments[2]) - elsif path_segments[1].present? && path_segments[1].start_with?('@') - find_account_url_by_name(path_segments[1]) - elsif path_segments[1] == 'statuses' && path_segments[2] =~ /\d/ - find_status_url_by_id(path_segments[2]) - elsif path_segments[1] == 'accounts' && path_segments[2] =~ /\d/ - find_account_url_by_id(path_segments[2]) - end + if path_segments[0].present? && path_segments[0].start_with?('@') && path_segments[1] =~ /\d/ + find_status_url_by_id(path_segments[1]) + elsif path_segments[0].present? && path_segments[0].start_with?('@') + find_account_url_by_name(path_segments[0]) + elsif path_segments[0] == 'statuses' && path_segments[1] =~ /\d/ + find_status_url_by_id(path_segments[1]) + elsif path_segments[0] == 'accounts' && path_segments[1] =~ /\d/ + find_account_url_by_id(path_segments[1]) end end @@ -29,18 +27,12 @@ class PermalinkRedirector def find_status_url_by_id(id) status = Status.find_by(id: id) - - return unless status&.distributable? - - ActivityPub::TagManager.instance.url_for(status) + ActivityPub::TagManager.instance.url_for(status) if status&.distributable? && !status.account.local? end def find_account_url_by_id(id) account = Account.find_by(id: id) - - return unless account - - ActivityPub::TagManager.instance.url_for(account) + ActivityPub::TagManager.instance.url_for(account) if account.present? && !account.local? end def find_account_url_by_name(name) @@ -48,12 +40,6 @@ class PermalinkRedirector domain = nil if TagManager.instance.local_domain?(domain) account = Account.find_remote(username, domain) - return unless account - - ActivityPub::TagManager.instance.url_for(account) - end - - def find_tag_url_by_name(name) - tag_path(CGI.unescape(name)) + ActivityPub::TagManager.instance.url_for(account) if account.present? && !account.local? end end diff --git a/app/models/account.rb b/app/models/account.rb index 1be7b4d12..df7fa8d50 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -134,6 +134,7 @@ class Account < ApplicationRecord :role, :locale, :shows_application?, + :prefers_noindex?, to: :user, prefix: true, allow_nil: true diff --git a/app/models/user.rb b/app/models/user.rb index 4767189a0..6d566b1c2 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -281,6 +281,10 @@ class User < ApplicationRecord save! end + def prefers_noindex? + setting_noindex + end + def preferred_posting_language valid_locale_cascade(settings.default_language, locale, I18n.locale) end diff --git a/app/serializers/rest/account_serializer.rb b/app/serializers/rest/account_serializer.rb index c52a89d87..e521dacaa 100644 --- a/app/serializers/rest/account_serializer.rb +++ b/app/serializers/rest/account_serializer.rb @@ -14,6 +14,7 @@ class REST::AccountSerializer < ActiveModel::Serializer attribute :suspended, if: :suspended? attribute :silenced, key: :limited, if: :silenced? + attribute :noindex, if: :local? class FieldSerializer < ActiveModel::Serializer include FormattingHelper @@ -103,7 +104,11 @@ class REST::AccountSerializer < ActiveModel::Serializer object.silenced? end - delegate :suspended?, :silenced?, to: :object + def noindex + object.user_prefers_noindex? + end + + delegate :suspended?, :silenced?, :local?, to: :object def moved_and_not_nested? object.moved? && object.moved_to_account.moved_to_account_id.nil? diff --git a/app/views/about/show.html.haml b/app/views/about/show.html.haml index aff28b9a9..05d8989ad 100644 --- a/app/views/about/show.html.haml +++ b/app/views/about/show.html.haml @@ -1,4 +1,7 @@ - content_for :page_title do = t('about.title') +- content_for :header_tags do + = render partial: 'shared/og' + = render partial: 'shared/web_app' diff --git a/app/views/accounts/_bio.html.haml b/app/views/accounts/_bio.html.haml deleted file mode 100644 index e2539b1d4..000000000 --- a/app/views/accounts/_bio.html.haml +++ /dev/null @@ -1,21 +0,0 @@ -- fields = account.fields - -.public-account-bio - - unless fields.empty? - .account__header__fields - - fields.each do |field| - %dl - %dt.emojify{ title: field.name }= prerender_custom_emojis(h(field.name), account.emojis) - %dd{ title: field.value, class: custom_field_classes(field) } - - if field.verified? - %span.verified__mark{ title: t('accounts.link_verified_on', date: l(field.verified_at)) } - = fa_icon 'check' - = prerender_custom_emojis(account_field_value_format(field), account.emojis) - - = account_badge(account) - - - if account.note.present? - .account__header__content.emojify= prerender_custom_emojis(account_bio_format(account), account.emojis) - - .public-account-bio__extra - = t 'accounts.joined', date: l(account.created_at, format: :month) diff --git a/app/views/accounts/_header.html.haml b/app/views/accounts/_header.html.haml deleted file mode 100644 index d9966723a..000000000 --- a/app/views/accounts/_header.html.haml +++ /dev/null @@ -1,43 +0,0 @@ -.public-account-header{:class => ("inactive" if account.moved?)} - .public-account-header__image - = image_tag (prefers_autoplay? ? account.header_original_url : account.header_static_url), class: 'parallax' - .public-account-header__bar - = link_to short_account_url(account), class: 'avatar' do - = image_tag (prefers_autoplay? ? account.avatar_original_url : account.avatar_static_url), id: 'profile_page_avatar', data: { original: full_asset_url(account.avatar_original_url), static: full_asset_url(account.avatar_static_url), autoplay: prefers_autoplay? } - .public-account-header__tabs - .public-account-header__tabs__name - %h1 - = display_name(account, custom_emojify: true) - %small - = acct(account) - = fa_icon('lock') if account.locked? - .public-account-header__tabs__tabs - .details-counters - .counter{ class: active_nav_class(short_account_url(account), short_account_with_replies_url(account), short_account_media_url(account)) } - = link_to short_account_url(account), class: 'u-url u-uid', title: number_with_delimiter(account.statuses_count) do - %span.counter-number= friendly_number_to_human account.statuses_count - %span.counter-label= t('accounts.posts', count: account.statuses_count) - - .counter{ class: active_nav_class(account_following_index_url(account)) } - = link_to account_following_index_url(account), title: number_with_delimiter(account.following_count) do - %span.counter-number= friendly_number_to_human account.following_count - %span.counter-label= t('accounts.following', count: account.following_count) - - .counter{ class: active_nav_class(account_followers_url(account)) } - = link_to account_followers_url(account), title: number_with_delimiter(account.followers_count) do - %span.counter-number= friendly_number_to_human account.followers_count - %span.counter-label= t('accounts.followers', count: account.followers_count) - .spacer - .public-account-header__tabs__tabs__buttons - = account_action_button(account) - - .public-account-header__extra - = render 'accounts/bio', account: account - - .public-account-header__extra__links - = link_to account_following_index_url(account) do - %strong= friendly_number_to_human account.following_count - = t('accounts.following', count: account.following_count) - = link_to account_followers_url(account) do - %strong= friendly_number_to_human account.followers_count - = t('accounts.followers', count: account.followers_count) diff --git a/app/views/accounts/_moved.html.haml b/app/views/accounts/_moved.html.haml deleted file mode 100644 index 2f46e0dd0..000000000 --- a/app/views/accounts/_moved.html.haml +++ /dev/null @@ -1,20 +0,0 @@ -- moved_to_account = account.moved_to_account - -.moved-account-widget - .moved-account-widget__message - = fa_icon 'suitcase' - = t('accounts.moved_html', name: content_tag(:bdi, content_tag(:strong, display_name(account, custom_emojify: true), class: :emojify)), new_profile_link: link_to(content_tag(:strong, safe_join(['@', content_tag(:span, moved_to_account.pretty_acct)])), ActivityPub::TagManager.instance.url_for(moved_to_account), class: 'mention')) - - .moved-account-widget__card - = link_to ActivityPub::TagManager.instance.url_for(moved_to_account), class: 'detailed-status__display-name p-author h-card', target: '_blank', rel: 'me noopener noreferrer' do - .detailed-status__display-avatar - .account__avatar-overlay - .account__avatar-overlay-base - = image_tag moved_to_account.avatar_static_url - .account__avatar-overlay-overlay - = image_tag account.avatar_static_url - - %span.display-name - %bdi - %strong.emojify= display_name(moved_to_account, custom_emojify: true) - %span @#{moved_to_account.pretty_acct} diff --git a/app/views/accounts/show.html.haml b/app/views/accounts/show.html.haml index 7fa688bd3..a51dcd7be 100644 --- a/app/views/accounts/show.html.haml +++ b/app/views/accounts/show.html.haml @@ -2,85 +2,13 @@ = "#{display_name(@account)} (#{acct(@account)})" - content_for :header_tags do - - if @account.user&.setting_noindex + - if @account.user_prefers_noindex? %meta{ name: 'robots', content: 'noindex, noarchive' }/ %link{ rel: 'alternate', type: 'application/rss+xml', href: @rss_url }/ %link{ rel: 'alternate', type: 'application/activity+json', href: ActivityPub::TagManager.instance.uri_for(@account) }/ - - if @older_url - %link{ rel: 'next', href: @older_url }/ - - if @newer_url - %link{ rel: 'prev', href: @newer_url }/ - = opengraph 'og:type', 'profile' = render 'og', account: @account, url: short_account_url(@account, only_path: false) - -= render 'header', account: @account, with_bio: true - -.grid - .column-0 - .h-feed - %data.p-name{ value: "#{@account.username} on #{site_hostname}" }/ - - .account__section-headline - = active_link_to t('accounts.posts_tab_heading'), short_account_url(@account) - = active_link_to t('accounts.posts_with_replies'), short_account_with_replies_url(@account) - = active_link_to t('accounts.media'), short_account_media_url(@account) - - - if user_signed_in? && @account.blocking?(current_account) - .nothing-here.nothing-here--under-tabs= t('accounts.unavailable') - - elsif @statuses.empty? - = nothing_here 'nothing-here--under-tabs' - - else - .activity-stream.activity-stream--under-tabs - - if params[:page].to_i.zero? - = render partial: 'statuses/status', collection: @pinned_statuses, as: :status, locals: { pinned: true } - - - if @newer_url - .entry= link_to_newer @newer_url - - = render partial: 'statuses/status', collection: @statuses, as: :status - - - if @older_url - .entry= link_to_older @older_url - - .column-1 - - if @account.memorial? - .memoriam-widget= t('in_memoriam_html') - - elsif @account.moved? - = render 'moved', account: @account - - = render 'bio', account: @account - - - if @endorsed_accounts.empty? && @account.id == current_account&.id - .placeholder-widget= t('accounts.endorsements_hint') - - elsif !@endorsed_accounts.empty? - .endorsements-widget - %h4= t 'accounts.choices_html', name: content_tag(:bdi, display_name(@account, custom_emojify: true)) - - - @endorsed_accounts.each do |account| - = account_link_to account - - - if @featured_hashtags.empty? && @account.id == current_account&.id - .placeholder-widget - = t('accounts.featured_tags_hint') - = link_to settings_featured_tags_path do - = t('featured_tags.add_new') - = fa_icon 'chevron-right fw' - - else - - @featured_hashtags.each do |featured_tag| - .directory__tag{ class: params[:tag] == featured_tag.name ? 'active' : nil } - = link_to short_account_tag_path(@account, featured_tag.tag) do - %h4 - = fa_icon 'hashtag' - = featured_tag.display_name - %small - - if featured_tag.last_status_at.nil? - = t('accounts.nothing_here') - - else - %time.formatted{ datetime: featured_tag.last_status_at.iso8601, title: l(featured_tag.last_status_at) }= l featured_tag.last_status_at - .trends__item__current= friendly_number_to_human featured_tag.statuses_count - - = render 'application/sidebar' += render partial: 'shared/web_app' diff --git a/app/views/follower_accounts/index.html.haml b/app/views/follower_accounts/index.html.haml index 92de35a9f..d93540c02 100644 --- a/app/views/follower_accounts/index.html.haml +++ b/app/views/follower_accounts/index.html.haml @@ -1,20 +1,6 @@ -- content_for :page_title do - = t('accounts.people_who_follow', name: display_name(@account)) - - content_for :header_tags do %meta{ name: 'robots', content: 'noindex' }/ + = render 'accounts/og', account: @account, url: account_followers_url(@account, only_path: false) -= render 'accounts/header', account: @account - -- if @account.hide_collections? - .nothing-here= t('accounts.network_hidden') -- elsif user_signed_in? && @account.blocking?(current_account) - .nothing-here= t('accounts.unavailable') -- elsif @follows.empty? - = nothing_here -- else - .card-grid - = render partial: 'application/card', collection: @follows.map(&:account), as: :account - - = paginate @follows += render 'shared/web_app' diff --git a/app/views/following_accounts/index.html.haml b/app/views/following_accounts/index.html.haml index 9bb1a9edd..d93540c02 100644 --- a/app/views/following_accounts/index.html.haml +++ b/app/views/following_accounts/index.html.haml @@ -1,20 +1,6 @@ -- content_for :page_title do - = t('accounts.people_followed_by', name: display_name(@account)) - - content_for :header_tags do %meta{ name: 'robots', content: 'noindex' }/ + = render 'accounts/og', account: @account, url: account_followers_url(@account, only_path: false) -= render 'accounts/header', account: @account - -- if @account.hide_collections? - .nothing-here= t('accounts.network_hidden') -- elsif user_signed_in? && @account.blocking?(current_account) - .nothing-here= t('accounts.unavailable') -- elsif @follows.empty? - = nothing_here -- else - .card-grid - = render partial: 'application/card', collection: @follows.map(&:target_account), as: :account - - = paginate @follows += render 'shared/web_app' diff --git a/app/views/home/index.html.haml b/app/views/home/index.html.haml index 76a02e0f0..45990cd10 100644 --- a/app/views/home/index.html.haml +++ b/app/views/home/index.html.haml @@ -1,4 +1,7 @@ - content_for :header_tags do + - unless request.path == '/' + %meta{ name: 'robots', content: 'noindex' }/ + = render partial: 'shared/og' = render 'shared/web_app' diff --git a/app/views/layouts/public.html.haml b/app/views/layouts/public.html.haml deleted file mode 100644 index 9b9e725e9..000000000 --- a/app/views/layouts/public.html.haml +++ /dev/null @@ -1,60 +0,0 @@ -- content_for :header_tags do - = render_initial_state - = javascript_pack_tag 'public', crossorigin: 'anonymous' - -- content_for :content do - .public-layout - - unless @hide_navbar - .container - %nav.header - .nav-left - = link_to root_url, class: 'brand' do - = logo_as_symbol(:wordmark) - - - unless whitelist_mode? - = link_to t('about.about_this'), about_more_path, class: 'nav-link optional' - = link_to t('about.apps'), 'https://joinmastodon.org/apps', class: 'nav-link optional' - - .nav-center - - .nav-right - - if user_signed_in? - = link_to t('settings.back'), root_url, class: 'nav-link nav-button webapp-btn' - - else - = link_to_login t('auth.login'), class: 'webapp-btn nav-link nav-button' - = link_to t('auth.register'), available_sign_up_path, class: 'webapp-btn nav-link nav-button' - - .container= yield - - .container - .footer - .grid - .column-0 - %h4= t 'footer.resources' - %ul - %li= link_to t('about.privacy_policy'), privacy_policy_path - .column-1 - %h4= t 'footer.developers' - %ul - %li= link_to t('about.documentation'), 'https://docs.joinmastodon.org/' - %li= link_to t('about.api'), 'https://docs.joinmastodon.org/client/intro/' - .column-2 - %h4= link_to t('about.what_is_mastodon'), 'https://joinmastodon.org/' - = link_to logo_as_symbol, root_url, class: 'brand' - .column-3 - %h4= site_hostname - %ul - - unless whitelist_mode? - %li= link_to t('about.about_this'), about_more_path - %li= "v#{Mastodon::Version.to_s}" - .column-4 - %h4= t 'footer.more' - %ul - %li= link_to t('about.source_code'), Mastodon::Version.source_url - %li= link_to t('about.apps'), 'https://joinmastodon.org/apps' - .legal-xs - = link_to "v#{Mastodon::Version.to_s}", Mastodon::Version.source_url - · - = link_to t('about.privacy_policy'), privacy_policy_path - -= render template: 'layouts/application' diff --git a/app/views/privacy/show.html.haml b/app/views/privacy/show.html.haml index cfc285925..95e506641 100644 --- a/app/views/privacy/show.html.haml +++ b/app/views/privacy/show.html.haml @@ -1,4 +1,7 @@ - content_for :page_title do = t('privacy_policy.title') +- content_for :header_tags do + = render partial: 'shared/og' + = render 'shared/web_app' diff --git a/app/views/remote_follow/new.html.haml b/app/views/remote_follow/new.html.haml deleted file mode 100644 index 4e9601f6a..000000000 --- a/app/views/remote_follow/new.html.haml +++ /dev/null @@ -1,20 +0,0 @@ -- content_for :header_tags do - %meta{ name: 'robots', content: 'noindex' }/ - -.form-container - .follow-prompt - %h2= t('remote_follow.prompt') - - = render partial: 'application/card', locals: { account: @account } - - = simple_form_for @remote_follow, as: :remote_follow, url: account_remote_follow_path(@account) do |f| - = render 'shared/error_messages', object: @remote_follow - - = f.input :acct, placeholder: t('remote_follow.acct'), input_html: { autocapitalize: 'none', autocorrect: 'off' } - - .actions - = f.button :button, t('remote_follow.proceed'), type: :submit - - %p.hint.subtle-hint - = t('remote_follow.reason_html', instance: site_hostname) - = t('remote_follow.no_account_html', sign_up_path: available_sign_up_path) diff --git a/app/views/remote_interaction/new.html.haml b/app/views/remote_interaction/new.html.haml deleted file mode 100644 index 2cc0fcb93..000000000 --- a/app/views/remote_interaction/new.html.haml +++ /dev/null @@ -1,24 +0,0 @@ -- content_for :header_tags do - %meta{ name: 'robots', content: 'noindex' }/ - -.form-container - .follow-prompt - %h2= t("remote_interaction.#{@interaction_type}.prompt") - - .public-layout - .activity-stream.activity-stream--highlighted - = render 'statuses/status', status: @status - - = simple_form_for @remote_follow, as: :remote_follow, url: remote_interaction_path(@status) do |f| - = render 'shared/error_messages', object: @remote_follow - - = hidden_field_tag :type, @interaction_type - - = f.input :acct, placeholder: t('remote_follow.acct'), input_html: { autocapitalize: 'none', autocorrect: 'off' } - - .actions - = f.button :button, t("remote_interaction.#{@interaction_type}.proceed"), type: :submit - - %p.hint.subtle-hint - = t('remote_follow.reason_html', instance: site_hostname) - = t('remote_follow.no_account_html', sign_up_path: available_sign_up_path) diff --git a/app/views/statuses/_detailed_status.html.haml b/app/views/statuses/_detailed_status.html.haml index c67f0e4d9..37001b022 100644 --- a/app/views/statuses/_detailed_status.html.haml +++ b/app/views/statuses/_detailed_status.html.haml @@ -56,7 +56,7 @@ - else = link_to status.application.name, status.application.website, class: 'detailed-status__application', target: '_blank', rel: 'noopener noreferrer' · - = link_to remote_interaction_path(status, type: :reply), class: 'modal-button detailed-status__link' do + %span.detailed-status__link - if status.in_reply_to_id.nil? = fa_icon('reply') - else @@ -65,12 +65,12 @@ = " " · - if status.public_visibility? || status.unlisted_visibility? - = link_to remote_interaction_path(status, type: :reblog), class: 'modal-button detailed-status__link' do + %span.detailed-status__link = fa_icon('retweet') %span.detailed-status__reblogs>= friendly_number_to_human status.reblogs_count = " " · - = link_to remote_interaction_path(status, type: :favourite), class: 'modal-button detailed-status__link' do + %span.detailed-status__link = fa_icon('star') %span.detailed-status__favorites>= friendly_number_to_human status.favourites_count = " " diff --git a/app/views/statuses/_simple_status.html.haml b/app/views/statuses/_simple_status.html.haml index f16d2c186..bfde3a260 100644 --- a/app/views/statuses/_simple_status.html.haml +++ b/app/views/statuses/_simple_status.html.haml @@ -53,18 +53,18 @@ = t 'statuses.show_thread' .status__action-bar - = link_to remote_interaction_path(status, type: :reply), class: 'status__action-bar-button icon-button icon-button--with-counter modal-button' do + %span.status__action-bar-button.icon-button.icon-button--with-counter - if status.in_reply_to_id.nil? = fa_icon 'reply fw' - else = fa_icon 'reply-all fw' %span.icon-button__counter= obscured_counter status.replies_count - = link_to remote_interaction_path(status, type: :reblog), class: 'status__action-bar-button icon-button modal-button' do + %span.status__action-bar-button.icon-button - if status.distributable? = fa_icon 'retweet fw' - elsif status.private_visibility? || status.limited_visibility? = fa_icon 'lock fw' - else = fa_icon 'at fw' - = link_to remote_interaction_path(status, type: :favourite), class: 'status__action-bar-button icon-button modal-button' do + %span.status__action-bar-button.icon-button = fa_icon 'star fw' diff --git a/app/views/statuses/show.html.haml b/app/views/statuses/show.html.haml index 5a3c94b84..106c41725 100644 --- a/app/views/statuses/show.html.haml +++ b/app/views/statuses/show.html.haml @@ -2,7 +2,7 @@ = t('statuses.title', name: display_name(@account), quote: truncate(@status.spoiler_text.presence || @status.text, length: 50, omission: '…', escape: false)) - content_for :header_tags do - - if @account.user&.setting_noindex + - if @account.user_prefers_noindex? %meta{ name: 'robots', content: 'noindex, noarchive' }/ %link{ rel: 'alternate', type: 'application/json+oembed', href: api_oembed_url(url: short_account_status_url(@account, @status), format: 'json') }/ diff --git a/app/views/tags/show.html.haml b/app/views/tags/show.html.haml new file mode 100644 index 000000000..4b4967a8f --- /dev/null +++ b/app/views/tags/show.html.haml @@ -0,0 +1,5 @@ +- content_for :header_tags do + %meta{ name: 'robots', content: 'noindex' }/ + = render partial: 'shared/og' + += render partial: 'shared/web_app' diff --git a/config/locales/en.yml b/config/locales/en.yml index 504f1b364..412178ca3 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2,47 +2,26 @@ en: about: about_mastodon_html: 'The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!' - api: API - apps: Mobile apps contact_missing: Not set contact_unavailable: N/A - documentation: Documentation hosted_on: Mastodon hosted on %{domain} - privacy_policy: Privacy Policy - source_code: Source code title: About - what_is_mastodon: What is Mastodon? accounts: - choices_html: "%{name}'s choices:" - endorsements_hint: You can endorse people you follow from the web interface, and they will show up here. - featured_tags_hint: You can feature specific hashtags that will be displayed here. follow: Follow followers: one: Follower other: Followers following: Following instance_actor_flash: This account is a virtual actor used to represent the server itself and not any individual user. It is used for federation purposes and should not be suspended. - joined: Joined %{date} last_active: last active link_verified_on: Ownership of this link was checked on %{date} - media: Media - moved_html: "%{name} has moved to %{new_profile_link}:" - network_hidden: This information is not available nothing_here: There is nothing here! - people_followed_by: People whom %{name} follows - people_who_follow: People who follow %{name} pin_errors: following: You must be already following the person you want to endorse posts: one: Post other: Posts posts_tab_heading: Posts - posts_with_replies: Posts and replies - roles: - bot: Bot - group: Group - unavailable: Profile unavailable - unfollow: Unfollow admin: account_actions: action: Perform action @@ -1176,9 +1155,6 @@ en: hint: This filter applies to select individual posts regardless of other criteria. You can add more posts to this filter from the web interface. title: Filtered posts footer: - developers: Developers - more: More… - resources: Resources trending_now: Trending now generic: all: All @@ -1221,7 +1197,6 @@ en: following: Following list muting: Muting list upload: Upload - in_memoriam_html: In Memoriam. invites: delete: Deactivate expired: Expired @@ -1402,22 +1377,7 @@ en: remove_selected_follows: Unfollow selected users status: Account status remote_follow: - acct: Enter your username@domain you want to act from missing_resource: Could not find the required redirect URL for your account - no_account_html: Don't have an account? You can sign up here - proceed: Proceed to follow - prompt: 'You are going to follow:' - reason_html: "Why is this step necessary? %{instance} might not be the server where you are registered, so we need to redirect you to your home server first." - remote_interaction: - favourite: - proceed: Proceed to favourite - prompt: 'You want to favourite this post:' - reblog: - proceed: Proceed to boost - prompt: 'You want to boost this post:' - reply: - proceed: Proceed to reply - prompt: 'You want to reply to this post:' reports: errors: invalid_rules: does not reference valid rules diff --git a/config/routes.rb b/config/routes.rb index 29ec0f8a5..1ed585f19 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -3,6 +3,31 @@ require 'sidekiq_unique_jobs/web' require 'sidekiq-scheduler/web' +# Paths of routes on the web app that to not require to be indexed or +# have alternative format representations requiring separate controllers +WEB_APP_PATHS = %w( + /getting-started + /keyboard-shortcuts + /home + /public + /public/local + /conversations + /lists/(*any) + /notifications + /favourites + /bookmarks + /pinned + /start + /directory + /explore/(*any) + /search + /publish + /follow_requests + /blocks + /domain_blocks + /mutes +).freeze + Rails.application.routes.draw do root 'home#index' @@ -59,9 +84,6 @@ Rails.application.routes.draw do get '/authorize_follow', to: redirect { |_, request| "/authorize_interaction?#{request.params.to_query}" } resources :accounts, path: 'users', only: [:show], param: :username do - get :remote_follow, to: 'remote_follow#new' - post :remote_follow, to: 'remote_follow#create' - resources :statuses, only: [:show] do member do get :activity @@ -85,16 +107,21 @@ Rails.application.routes.draw do resource :inbox, only: [:create], module: :activitypub - get '/@:username', to: 'accounts#show', as: :short_account - get '/@:username/with_replies', to: 'accounts#show', as: :short_account_with_replies - get '/@:username/media', to: 'accounts#show', as: :short_account_media - get '/@:username/tagged/:tag', to: 'accounts#show', as: :short_account_tag - get '/@:account_username/:id', to: 'statuses#show', as: :short_account_status - get '/@:account_username/:id/embed', to: 'statuses#embed', as: :embed_short_account_status + constraints(username: /[^@\/.]+/) do + get '/@:username', to: 'accounts#show', as: :short_account + get '/@:username/with_replies', to: 'accounts#show', as: :short_account_with_replies + get '/@:username/media', to: 'accounts#show', as: :short_account_media + get '/@:username/tagged/:tag', to: 'accounts#show', as: :short_account_tag + end - get '/interact/:id', to: 'remote_interaction#new', as: :remote_interaction - post '/interact/:id', to: 'remote_interaction#create' + constraints(account_username: /[^@\/.]+/) do + get '/@:account_username/following', to: 'following_accounts#index' + get '/@:account_username/followers', to: 'follower_accounts#index' + get '/@:account_username/:id', to: 'statuses#show', as: :short_account_status + get '/@:account_username/:id/embed', to: 'statuses#embed', as: :embed_short_account_status + end + get '/@:username_with_domain/(*any)', to: 'home#index', constraints: { username_with_domain: /([^\/])+?/ }, format: false get '/settings', to: redirect('/settings/profile') namespace :settings do @@ -187,9 +214,6 @@ Rails.application.routes.draw do resource :relationships, only: [:show, :update] resource :statuses_cleanup, controller: :statuses_cleanup, only: [:show, :update] - get '/explore', to: redirect('/web/explore') - get '/public', to: redirect('/web/public') - get '/public/local', to: redirect('/web/public/local') get '/media_proxy/:id/(*any)', to: 'media_proxy#show', as: :media_proxy resource :authorize_interaction, only: [:show, :create] @@ -642,8 +666,11 @@ Rails.application.routes.draw do end end - get '/web/(*any)', to: 'home#index', as: :web + WEB_APP_PATHS.each do |path| + get path, to: 'home#index' + end + get '/web/(*any)', to: redirect('/%{any}', status: 302), as: :web get '/about', to: 'about#show' get '/about/more', to: redirect('/about') diff --git a/package.json b/package.json index 5d8f20abf..0a57336d6 100644 --- a/package.json +++ b/package.json @@ -115,7 +115,6 @@ "redux-immutable": "^4.0.0", "redux-thunk": "^2.4.1", "regenerator-runtime": "^0.13.9", - "rellax": "^1.12.1", "requestidlecallback": "^0.3.0", "reselect": "^4.1.6", "rimraf": "^3.0.2", diff --git a/spec/controllers/account_follow_controller_spec.rb b/spec/controllers/account_follow_controller_spec.rb deleted file mode 100644 index d33cd0499..000000000 --- a/spec/controllers/account_follow_controller_spec.rb +++ /dev/null @@ -1,64 +0,0 @@ -require 'rails_helper' - -describe AccountFollowController do - render_views - - let(:user) { Fabricate(:user) } - let(:alice) { Fabricate(:account, username: 'alice') } - - describe 'POST #create' do - let(:service) { double } - - subject { post :create, params: { account_username: alice.username } } - - before do - allow(FollowService).to receive(:new).and_return(service) - allow(service).to receive(:call) - end - - context 'when account is permanently suspended' do - before do - alice.suspend! - alice.deletion_request.destroy - subject - end - - it 'returns http gone' do - expect(response).to have_http_status(410) - end - end - - context 'when account is temporarily suspended' do - before do - alice.suspend! - subject - end - - it 'returns http forbidden' do - expect(response).to have_http_status(403) - end - end - - context 'when signed out' do - before do - subject - end - - it 'does not follow' do - expect(FollowService).not_to receive(:new) - end - end - - context 'when signed in' do - before do - sign_in(user) - subject - end - - it 'redirects to account path' do - expect(service).to have_received(:call).with(user.account, alice, with_rate_limit: true) - expect(response).to redirect_to(account_path(alice)) - end - end - end -end diff --git a/spec/controllers/account_unfollow_controller_spec.rb b/spec/controllers/account_unfollow_controller_spec.rb deleted file mode 100644 index a11f7aa68..000000000 --- a/spec/controllers/account_unfollow_controller_spec.rb +++ /dev/null @@ -1,64 +0,0 @@ -require 'rails_helper' - -describe AccountUnfollowController do - render_views - - let(:user) { Fabricate(:user) } - let(:alice) { Fabricate(:account, username: 'alice') } - - describe 'POST #create' do - let(:service) { double } - - subject { post :create, params: { account_username: alice.username } } - - before do - allow(UnfollowService).to receive(:new).and_return(service) - allow(service).to receive(:call) - end - - context 'when account is permanently suspended' do - before do - alice.suspend! - alice.deletion_request.destroy - subject - end - - it 'returns http gone' do - expect(response).to have_http_status(410) - end - end - - context 'when account is temporarily suspended' do - before do - alice.suspend! - subject - end - - it 'returns http forbidden' do - expect(response).to have_http_status(403) - end - end - - context 'when signed out' do - before do - subject - end - - it 'does not unfollow' do - expect(UnfollowService).not_to receive(:new) - end - end - - context 'when signed in' do - before do - sign_in(user) - subject - end - - it 'redirects to account path' do - expect(service).to have_received(:call).with(user.account, alice) - expect(response).to redirect_to(account_path(alice)) - end - end - end -end diff --git a/spec/controllers/accounts_controller_spec.rb b/spec/controllers/accounts_controller_spec.rb index 12266c800..defa8b2d3 100644 --- a/spec/controllers/accounts_controller_spec.rb +++ b/spec/controllers/accounts_controller_spec.rb @@ -99,100 +99,6 @@ RSpec.describe AccountsController, type: :controller do end it_behaves_like 'common response characteristics' - - it 'renders public status' do - expect(response.body).to include(ActivityPub::TagManager.instance.url_for(status)) - end - - it 'renders self-reply' do - expect(response.body).to include(ActivityPub::TagManager.instance.url_for(status_self_reply)) - end - - it 'renders status with media' do - expect(response.body).to include(ActivityPub::TagManager.instance.url_for(status_media)) - end - - it 'renders reblog' do - expect(response.body).to include(ActivityPub::TagManager.instance.url_for(status_reblog.reblog)) - end - - it 'renders pinned status' do - expect(response.body).to include(I18n.t('stream_entries.pinned')) - end - - it 'does not render private status' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_private)) - end - - it 'does not render direct status' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_direct)) - end - - it 'does not render reply to someone else' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_reply)) - end - end - - context 'when signed-in' do - let(:user) { Fabricate(:user) } - - before do - sign_in(user) - end - - context 'when user follows account' do - before do - user.account.follow!(account) - get :show, params: { username: account.username, format: format } - end - - it 'does not render private status' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_private)) - end - end - - context 'when user is blocked' do - before do - account.block!(user.account) - get :show, params: { username: account.username, format: format } - end - - it 'renders unavailable message' do - expect(response.body).to include(I18n.t('accounts.unavailable')) - end - - it 'does not render public status' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status)) - end - - it 'does not render self-reply' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_self_reply)) - end - - it 'does not render status with media' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_media)) - end - - it 'does not render reblog' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_reblog.reblog)) - end - - it 'does not render pinned status' do - expect(response.body).to_not include(I18n.t('stream_entries.pinned')) - end - - it 'does not render private status' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_private)) - end - - it 'does not render direct status' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_direct)) - end - - it 'does not render reply to someone else' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_reply)) - end - end end context 'with replies' do @@ -202,38 +108,6 @@ RSpec.describe AccountsController, type: :controller do end it_behaves_like 'common response characteristics' - - it 'renders public status' do - expect(response.body).to include(ActivityPub::TagManager.instance.url_for(status)) - end - - it 'renders self-reply' do - expect(response.body).to include(ActivityPub::TagManager.instance.url_for(status_self_reply)) - end - - it 'renders status with media' do - expect(response.body).to include(ActivityPub::TagManager.instance.url_for(status_media)) - end - - it 'renders reblog' do - expect(response.body).to include(ActivityPub::TagManager.instance.url_for(status_reblog.reblog)) - end - - it 'does not render pinned status' do - expect(response.body).to_not include(I18n.t('stream_entries.pinned')) - end - - it 'does not render private status' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_private)) - end - - it 'does not render direct status' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_direct)) - end - - it 'renders reply to someone else' do - expect(response.body).to include(ActivityPub::TagManager.instance.url_for(status_reply)) - end end context 'with media' do @@ -243,38 +117,6 @@ RSpec.describe AccountsController, type: :controller do end it_behaves_like 'common response characteristics' - - it 'does not render public status' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status)) - end - - it 'does not render self-reply' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_self_reply)) - end - - it 'renders status with media' do - expect(response.body).to include(ActivityPub::TagManager.instance.url_for(status_media)) - end - - it 'does not render reblog' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_reblog.reblog)) - end - - it 'does not render pinned status' do - expect(response.body).to_not include(I18n.t('stream_entries.pinned')) - end - - it 'does not render private status' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_private)) - end - - it 'does not render direct status' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_direct)) - end - - it 'does not render reply to someone else' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_reply)) - end end context 'with tag' do @@ -289,42 +131,6 @@ RSpec.describe AccountsController, type: :controller do end it_behaves_like 'common response characteristics' - - it 'does not render public status' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status)) - end - - it 'does not render self-reply' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_self_reply)) - end - - it 'does not render status with media' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_media)) - end - - it 'does not render reblog' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_reblog.reblog)) - end - - it 'does not render pinned status' do - expect(response.body).to_not include(I18n.t('stream_entries.pinned')) - end - - it 'does not render private status' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_private)) - end - - it 'does not render direct status' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_direct)) - end - - it 'does not render reply to someone else' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_reply)) - end - - it 'renders status with tag' do - expect(response.body).to include(ActivityPub::TagManager.instance.url_for(status_tag)) - end end end diff --git a/spec/controllers/authorize_interactions_controller_spec.rb b/spec/controllers/authorize_interactions_controller_spec.rb index 99f3f6ffc..44f52df69 100644 --- a/spec/controllers/authorize_interactions_controller_spec.rb +++ b/spec/controllers/authorize_interactions_controller_spec.rb @@ -39,7 +39,7 @@ describe AuthorizeInteractionsController do end it 'sets resource from url' do - account = Account.new + account = Fabricate(:account) service = double allow(ResolveURLService).to receive(:new).and_return(service) allow(service).to receive(:call).with('http://example.com').and_return(account) @@ -51,7 +51,7 @@ describe AuthorizeInteractionsController do end it 'sets resource from acct uri' do - account = Account.new + account = Fabricate(:account) service = double allow(ResolveAccountService).to receive(:new).and_return(service) allow(service).to receive(:call).with('found@hostname').and_return(account) diff --git a/spec/controllers/follower_accounts_controller_spec.rb b/spec/controllers/follower_accounts_controller_spec.rb index 4d2a6e01a..ab2e82e85 100644 --- a/spec/controllers/follower_accounts_controller_spec.rb +++ b/spec/controllers/follower_accounts_controller_spec.rb @@ -34,27 +34,6 @@ describe FollowerAccountsController do expect(response).to have_http_status(403) end end - - it 'assigns follows' do - expect(response).to have_http_status(200) - - assigned = assigns(:follows).to_a - expect(assigned.size).to eq 2 - expect(assigned[0]).to eq follow1 - expect(assigned[1]).to eq follow0 - end - - it 'does not assign blocked users' do - user = Fabricate(:user) - user.account.block!(follower0) - sign_in(user) - - expect(response).to have_http_status(200) - - assigned = assigns(:follows).to_a - expect(assigned.size).to eq 1 - expect(assigned[0]).to eq follow1 - end end context 'when format is json' do diff --git a/spec/controllers/following_accounts_controller_spec.rb b/spec/controllers/following_accounts_controller_spec.rb index bb6d221ca..e43dbf882 100644 --- a/spec/controllers/following_accounts_controller_spec.rb +++ b/spec/controllers/following_accounts_controller_spec.rb @@ -34,27 +34,6 @@ describe FollowingAccountsController do expect(response).to have_http_status(403) end end - - it 'assigns follows' do - expect(response).to have_http_status(200) - - assigned = assigns(:follows).to_a - expect(assigned.size).to eq 2 - expect(assigned[0]).to eq follow1 - expect(assigned[1]).to eq follow0 - end - - it 'does not assign blocked users' do - user = Fabricate(:user) - user.account.block!(followee0) - sign_in(user) - - expect(response).to have_http_status(200) - - assigned = assigns(:follows).to_a - expect(assigned.size).to eq 1 - expect(assigned[0]).to eq follow1 - end end context 'when format is json' do diff --git a/spec/controllers/remote_follow_controller_spec.rb b/spec/controllers/remote_follow_controller_spec.rb deleted file mode 100644 index 01d43f48c..000000000 --- a/spec/controllers/remote_follow_controller_spec.rb +++ /dev/null @@ -1,135 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -describe RemoteFollowController do - render_views - - describe '#new' do - it 'returns success when session is empty' do - account = Fabricate(:account) - get :new, params: { account_username: account.to_param } - - expect(response).to have_http_status(200) - expect(response).to render_template(:new) - expect(assigns(:remote_follow).acct).to be_nil - end - - it 'populates the remote follow with session data when session exists' do - session[:remote_follow] = 'user@example.com' - account = Fabricate(:account) - get :new, params: { account_username: account.to_param } - - expect(response).to have_http_status(200) - expect(response).to render_template(:new) - expect(assigns(:remote_follow).acct).to eq 'user@example.com' - end - end - - describe '#create' do - before do - @account = Fabricate(:account, username: 'test_user') - end - - context 'with a valid acct' do - context 'when webfinger values are wrong' do - it 'renders new when redirect url is nil' do - resource_with_nil_link = double(link: nil) - allow_any_instance_of(WebfingerHelper).to receive(:webfinger!).with('acct:user@example.com').and_return(resource_with_nil_link) - post :create, params: { account_username: @account.to_param, remote_follow: { acct: 'user@example.com' } } - - expect(response).to render_template(:new) - expect(response.body).to include(I18n.t('remote_follow.missing_resource')) - end - - it 'renders new when template is nil' do - resource_with_link = double(link: nil) - allow_any_instance_of(WebfingerHelper).to receive(:webfinger!).with('acct:user@example.com').and_return(resource_with_link) - post :create, params: { account_username: @account.to_param, remote_follow: { acct: 'user@example.com' } } - - expect(response).to render_template(:new) - expect(response.body).to include(I18n.t('remote_follow.missing_resource')) - end - end - - context 'when webfinger values are good' do - before do - resource_with_link = double(link: 'http://example.com/follow_me?acct={uri}') - allow_any_instance_of(WebfingerHelper).to receive(:webfinger!).with('acct:user@example.com').and_return(resource_with_link) - post :create, params: { account_username: @account.to_param, remote_follow: { acct: 'user@example.com' } } - end - - it 'saves the session' do - expect(session[:remote_follow]).to eq 'user@example.com' - end - - it 'redirects to the remote location' do - expect(response).to redirect_to("http://example.com/follow_me?acct=https%3A%2F%2F#{Rails.configuration.x.local_domain}%2Fusers%2Ftest_user") - end - end - end - - context 'with an invalid acct' do - it 'renders new when acct is missing' do - post :create, params: { account_username: @account.to_param, remote_follow: { acct: '' } } - - expect(response).to render_template(:new) - end - - it 'renders new with error when webfinger fails' do - allow_any_instance_of(WebfingerHelper).to receive(:webfinger!).with('acct:user@example.com').and_raise(Webfinger::Error) - post :create, params: { account_username: @account.to_param, remote_follow: { acct: 'user@example.com' } } - - expect(response).to render_template(:new) - expect(response.body).to include(I18n.t('remote_follow.missing_resource')) - end - - it 'renders new when occur HTTP::ConnectionError' do - allow_any_instance_of(WebfingerHelper).to receive(:webfinger!).with('acct:user@unknown').and_raise(HTTP::ConnectionError) - post :create, params: { account_username: @account.to_param, remote_follow: { acct: 'user@unknown' } } - - expect(response).to render_template(:new) - expect(response.body).to include(I18n.t('remote_follow.missing_resource')) - end - end - end - - context 'with a permanently suspended account' do - before do - @account = Fabricate(:account) - @account.suspend! - @account.deletion_request.destroy - end - - it 'returns http gone on GET to #new' do - get :new, params: { account_username: @account.to_param } - - expect(response).to have_http_status(410) - end - - it 'returns http gone on POST to #create' do - post :create, params: { account_username: @account.to_param } - - expect(response).to have_http_status(410) - end - end - - context 'with a temporarily suspended account' do - before do - @account = Fabricate(:account) - @account.suspend! - end - - it 'returns http forbidden on GET to #new' do - get :new, params: { account_username: @account.to_param } - - expect(response).to have_http_status(403) - end - - it 'returns http forbidden on POST to #create' do - post :create, params: { account_username: @account.to_param } - - expect(response).to have_http_status(403) - end - end -end diff --git a/spec/controllers/remote_interaction_controller_spec.rb b/spec/controllers/remote_interaction_controller_spec.rb deleted file mode 100644 index bb0074b11..000000000 --- a/spec/controllers/remote_interaction_controller_spec.rb +++ /dev/null @@ -1,39 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -describe RemoteInteractionController, type: :controller do - render_views - - let(:status) { Fabricate(:status) } - - describe 'GET #new' do - it 'returns 200' do - get :new, params: { id: status.id } - expect(response).to have_http_status(200) - end - end - - describe 'POST #create' do - context '@remote_follow is valid' do - it 'returns 302' do - allow_any_instance_of(RemoteFollow).to receive(:valid?) { true } - allow_any_instance_of(RemoteFollow).to receive(:addressable_template) do - Addressable::Template.new('https://hoge.com') - end - - post :create, params: { id: status.id, remote_follow: { acct: '@hoge' } } - expect(response).to have_http_status(302) - end - end - - context '@remote_follow is invalid' do - it 'returns 200' do - allow_any_instance_of(RemoteFollow).to receive(:valid?) { false } - post :create, params: { id: status.id, remote_follow: { acct: '@hoge' } } - - expect(response).to have_http_status(200) - end - end - end -end diff --git a/spec/controllers/tags_controller_spec.rb b/spec/controllers/tags_controller_spec.rb index 1fd8494d6..547bcfb39 100644 --- a/spec/controllers/tags_controller_spec.rb +++ b/spec/controllers/tags_controller_spec.rb @@ -10,16 +10,15 @@ RSpec.describe TagsController, type: :controller do let!(:late) { Fabricate(:status, tags: [tag], text: 'late #test') } context 'when tag exists' do - it 'redirects to web version' do + it 'returns http success' do get :show, params: { id: 'test', max_id: late.id } - expect(response).to redirect_to('/web/tags/test') + expect(response).to have_http_status(200) end end context 'when tag does not exist' do - it 'returns http missing for non-existent tag' do + it 'returns http not found' do get :show, params: { id: 'none' } - expect(response).to have_http_status(404) end end diff --git a/spec/features/profile_spec.rb b/spec/features/profile_spec.rb index b6de3e9d1..ec4f9a53f 100644 --- a/spec/features/profile_spec.rb +++ b/spec/features/profile_spec.rb @@ -18,36 +18,16 @@ feature 'Profile' do visit account_path('alice') is_expected.to have_title("alice (@alice@#{local_domain})") - - within('.public-account-header h1') do - is_expected.to have_content("alice @alice@#{local_domain}") - end - - bio_elem = first('.public-account-bio') - expect(bio_elem).to have_content(alice_bio) - # The bio has hashtags made clickable - expect(bio_elem).to have_link('cryptology') - expect(bio_elem).to have_link('science') - # Nicknames are make clickable - expect(bio_elem).to have_link('@alice') - expect(bio_elem).to have_link('@bob') - # Nicknames not on server are not clickable - expect(bio_elem).not_to have_link('@pepe') end scenario 'I can change my account' do visit settings_profile_path + fill_in 'Display name', with: 'Bob' fill_in 'Bio', with: 'Bob is silent' - first('.btn[type=submit]').click + + first('button[type=submit]').click + is_expected.to have_content 'Changes successfully saved!' - - # View my own public profile and see the changes - click_link "Bob @bob@#{local_domain}" - - within('.public-account-header h1') do - is_expected.to have_content("Bob @bob@#{local_domain}") - end - expect(first('.public-account-bio')).to have_content('Bob is silent') end end diff --git a/spec/lib/permalink_redirector_spec.rb b/spec/lib/permalink_redirector_spec.rb index abda57da4..a00913656 100644 --- a/spec/lib/permalink_redirector_spec.rb +++ b/spec/lib/permalink_redirector_spec.rb @@ -3,40 +3,31 @@ require 'rails_helper' describe PermalinkRedirector do + let(:remote_account) { Fabricate(:account, username: 'alice', domain: 'example.com', url: 'https://example.com/@alice', id: 2) } + describe '#redirect_url' do before do - account = Fabricate(:account, username: 'alice', id: 1) - Fabricate(:status, account: account, id: 123) + Fabricate(:status, account: remote_account, id: 123, url: 'https://example.com/status-123') end it 'returns path for legacy account links' do - redirector = described_class.new('web/accounts/1') - expect(redirector.redirect_path).to eq 'https://cb6e6126.ngrok.io/@alice' + redirector = described_class.new('accounts/2') + expect(redirector.redirect_path).to eq 'https://example.com/@alice' end it 'returns path for legacy status links' do - redirector = described_class.new('web/statuses/123') - expect(redirector.redirect_path).to eq 'https://cb6e6126.ngrok.io/@alice/123' - end - - it 'returns path for legacy tag links' do - redirector = described_class.new('web/timelines/tag/hoge') - expect(redirector.redirect_path).to be_nil + redirector = described_class.new('statuses/123') + expect(redirector.redirect_path).to eq 'https://example.com/status-123' end it 'returns path for pretty account links' do - redirector = described_class.new('web/@alice') - expect(redirector.redirect_path).to eq 'https://cb6e6126.ngrok.io/@alice' + redirector = described_class.new('@alice@example.com') + expect(redirector.redirect_path).to eq 'https://example.com/@alice' end it 'returns path for pretty status links' do - redirector = described_class.new('web/@alice/123') - expect(redirector.redirect_path).to eq 'https://cb6e6126.ngrok.io/@alice/123' - end - - it 'returns path for pretty tag links' do - redirector = described_class.new('web/tags/hoge') - expect(redirector.redirect_path).to be_nil + redirector = described_class.new('@alice/123') + expect(redirector.redirect_path).to eq 'https://example.com/status-123' end end end diff --git a/spec/requests/account_show_page_spec.rb b/spec/requests/account_show_page_spec.rb index 4e51cf7ef..e84c46c47 100644 --- a/spec/requests/account_show_page_spec.rb +++ b/spec/requests/account_show_page_spec.rb @@ -3,17 +3,6 @@ require 'rails_helper' describe 'The account show page' do - it 'Has an h-feed with correct number of h-entry objects in it' do - alice = Fabricate(:account, username: 'alice', display_name: 'Alice') - _status = Fabricate(:status, account: alice, text: 'Hello World') - _status2 = Fabricate(:status, account: alice, text: 'Hello World Again') - _status3 = Fabricate(:status, account: alice, text: 'Are You Still There World?') - - get '/@alice' - - expect(h_feed_entries.size).to eq(3) - end - it 'has valid opengraph tags' do alice = Fabricate(:account, username: 'alice', display_name: 'Alice') _status = Fabricate(:status, account: alice, text: 'Hello World') @@ -33,8 +22,4 @@ describe 'The account show page' do def head_section Nokogiri::Slop(response.body).html.head end - - def h_feed_entries - Nokogiri::HTML(response.body).search('.h-feed .h-entry') - end end diff --git a/spec/routing/accounts_routing_spec.rb b/spec/routing/accounts_routing_spec.rb index d04cb27f0..3f0e9b3e9 100644 --- a/spec/routing/accounts_routing_spec.rb +++ b/spec/routing/accounts_routing_spec.rb @@ -1,31 +1,83 @@ require 'rails_helper' describe 'Routes under accounts/' do - describe 'the route for accounts who are followers of an account' do - it 'routes to the followers action with the right username' do - expect(get('/users/name/followers')). - to route_to('follower_accounts#index', account_username: 'name') + context 'with local username' do + let(:username) { 'alice' } + + it 'routes /@:username' do + expect(get("/@#{username}")).to route_to('accounts#show', username: username) + end + + it 'routes /@:username.json' do + expect(get("/@#{username}.json")).to route_to('accounts#show', username: username, format: 'json') + end + + it 'routes /@:username.rss' do + expect(get("/@#{username}.rss")).to route_to('accounts#show', username: username, format: 'rss') + end + + it 'routes /@:username/:id' do + expect(get("/@#{username}/123")).to route_to('statuses#show', account_username: username, id: '123') + end + + it 'routes /@:username/:id/embed' do + expect(get("/@#{username}/123/embed")).to route_to('statuses#embed', account_username: username, id: '123') + end + + it 'routes /@:username/following' do + expect(get("/@#{username}/following")).to route_to('following_accounts#index', account_username: username) + end + + it 'routes /@:username/followers' do + expect(get("/@#{username}/followers")).to route_to('follower_accounts#index', account_username: username) + end + + it 'routes /@:username/with_replies' do + expect(get("/@#{username}/with_replies")).to route_to('accounts#show', username: username) + end + + it 'routes /@:username/media' do + expect(get("/@#{username}/media")).to route_to('accounts#show', username: username) + end + + it 'routes /@:username/tagged/:tag' do + expect(get("/@#{username}/tagged/foo")).to route_to('accounts#show', username: username, tag: 'foo') end end - describe 'the route for accounts who are followed by an account' do - it 'routes to the following action with the right username' do - expect(get('/users/name/following')). - to route_to('following_accounts#index', account_username: 'name') - end - end + context 'with remote username' do + let(:username) { 'alice@example.com' } - describe 'the route for following an account' do - it 'routes to the follow create action with the right username' do - expect(post('/users/name/follow')). - to route_to('account_follow#create', account_username: 'name') + it 'routes /@:username' do + expect(get("/@#{username}")).to route_to('home#index', username_with_domain: username) end - end - describe 'the route for unfollowing an account' do - it 'routes to the unfollow create action with the right username' do - expect(post('/users/name/unfollow')). - to route_to('account_unfollow#create', account_username: 'name') + it 'routes /@:username/:id' do + expect(get("/@#{username}/123")).to route_to('home#index', username_with_domain: username, any: '123') + end + + it 'routes /@:username/:id/embed' do + expect(get("/@#{username}/123/embed")).to route_to('home#index', username_with_domain: username, any: '123/embed') + end + + it 'routes /@:username/following' do + expect(get("/@#{username}/following")).to route_to('home#index', username_with_domain: username, any: 'following') + end + + it 'routes /@:username/followers' do + expect(get("/@#{username}/followers")).to route_to('home#index', username_with_domain: username, any: 'followers') + end + + it 'routes /@:username/with_replies' do + expect(get("/@#{username}/with_replies")).to route_to('home#index', username_with_domain: username, any: 'with_replies') + end + + it 'routes /@:username/media' do + expect(get("/@#{username}/media")).to route_to('home#index', username_with_domain: username, any: 'media') + end + + it 'routes /@:username/tagged/:tag' do + expect(get("/@#{username}/tagged/foo")).to route_to('home#index', username_with_domain: username, any: 'tagged/foo') end end end diff --git a/yarn.lock b/yarn.lock index 6ae965464..98666f23d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9663,11 +9663,6 @@ regjsparser@^0.8.2: dependencies: jsesc "~0.5.0" -rellax@^1.12.1: - version "1.12.1" - resolved "https://registry.yarnpkg.com/rellax/-/rellax-1.12.1.tgz#1b433ef7ac4aa3573449a33efab391c112f6b34d" - integrity sha512-XBIi0CDpW5FLTujYjYBn1CIbK2CJL6TsAg/w409KghP2LucjjzBjsujXDAjyBLWgsfupfUcL5WzdnIPcGfK7XA== - remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" From 74738b49933eeadb6e837711ef1a1d0718829b6c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 20 Oct 2022 14:47:42 +0200 Subject: [PATCH 513/652] Fix error on profile in web UI (#19396) --- app/javascript/mastodon/features/account_timeline/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/app/javascript/mastodon/features/account_timeline/index.js b/app/javascript/mastodon/features/account_timeline/index.js index 437cee95c..bfb5f7c80 100644 --- a/app/javascript/mastodon/features/account_timeline/index.js +++ b/app/javascript/mastodon/features/account_timeline/index.js @@ -28,6 +28,7 @@ const mapStateToProps = (state, { params: { acct, id, tagged }, withReplies = fa if (!accountId) { return { isLoading: true, + statusIds: emptyList, }; } From 21af674fb2ce94cbf4d240ece508531f46581297 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Oct 2022 09:16:33 +0900 Subject: [PATCH 514/652] Bump axios from 1.1.2 to 1.1.3 (#19372) Bumps [axios](https://github.com/axios/axios) from 1.1.2 to 1.1.3. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v1.1.2...v1.1.3) --- updated-dependencies: - dependency-name: axios dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 0a57336d6..9f80959c5 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "array-includes": "^3.1.5", "arrow-key-navigation": "^1.2.0", "autoprefixer": "^9.8.8", - "axios": "^1.1.2", + "axios": "^1.1.3", "babel-loader": "^8.2.5", "babel-plugin-lodash": "^3.3.4", "babel-plugin-preval": "^5.1.0", diff --git a/yarn.lock b/yarn.lock index 98666f23d..d9cf69ba2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2627,10 +2627,10 @@ axe-core@^4.4.3: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.3.tgz#11c74d23d5013c0fa5d183796729bc3482bd2f6f" integrity sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w== -axios@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.1.2.tgz#8b6f6c540abf44ab98d9904e8daf55351ca4a331" - integrity sha512-bznQyETwElsXl2RK7HLLwb5GPpOLlycxHCtrpDR/4RqqBzjARaOTo3jz4IgtntWUYee7Ne4S8UHd92VCuzPaWA== +axios@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.1.3.tgz#8274250dada2edf53814ed7db644b9c2866c1e35" + integrity sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA== dependencies: follow-redirects "^1.15.0" form-data "^4.0.0" From 9215ad5f198787188632a06e199d702f8ac9e642 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Oct 2022 09:17:03 +0900 Subject: [PATCH 515/652] Bump postcss from 8.4.17 to 8.4.18 (#19375) Bumps [postcss](https://github.com/postcss/postcss) from 8.4.17 to 8.4.18. - [Release notes](https://github.com/postcss/postcss/releases) - [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/postcss/postcss/compare/8.4.17...8.4.18) --- updated-dependencies: - dependency-name: postcss dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 9f80959c5..a7141c7a7 100644 --- a/package.json +++ b/package.json @@ -85,7 +85,7 @@ "object.values": "^1.1.5", "path-complete-extname": "^1.0.0", "pg": "^8.5.0", - "postcss": "^8.4.17", + "postcss": "^8.4.18", "postcss-loader": "^3.0.0", "postcss-object-fit-images": "^1.1.2", "promise.prototype.finally": "^3.1.3", diff --git a/yarn.lock b/yarn.lock index d9cf69ba2..843764c55 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8894,10 +8894,10 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.27, postcss@^7.0.32: source-map "^0.6.1" supports-color "^6.1.0" -postcss@^8.2.15, postcss@^8.4.17: - version "8.4.17" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.17.tgz#f87863ec7cd353f81f7ab2dec5d67d861bbb1be5" - integrity sha512-UNxNOLQydcOFi41yHNMcKRZ39NeXlr8AxGuZJsdub8vIb12fHzcq37DTU/QtbI6WLxNg2gF9Z+8qtRwTj1UI1Q== +postcss@^8.2.15, postcss@^8.4.17, postcss@^8.4.18: + version "8.4.18" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.18.tgz#6d50046ea7d3d66a85e0e782074e7203bc7fbca2" + integrity sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA== dependencies: nanoid "^3.3.4" picocolors "^1.0.0" From 23d367f544485eaeed888c707012a8282bbb5806 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 21 Oct 2022 10:05:50 +0200 Subject: [PATCH 516/652] Fix too many featured tags causing navigation panel scroll in web UI (#19398) --- .../mastodon/features/account/components/featured_tags.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/features/account/components/featured_tags.js b/app/javascript/mastodon/features/account/components/featured_tags.js index 5837f6e6d..51be9a609 100644 --- a/app/javascript/mastodon/features/account/components/featured_tags.js +++ b/app/javascript/mastodon/features/account/components/featured_tags.js @@ -35,7 +35,7 @@ class FeaturedTags extends ImmutablePureComponent {

}} />

- {featuredTags.map(featuredTag => ( + {featuredTags.take(3).map(featuredTag => ( Date: Fri, 21 Oct 2022 10:06:03 +0200 Subject: [PATCH 517/652] Fix case-sensitive look-up for profiles in web UI (#19397) --- app/javascript/mastodon/features/account_timeline/index.js | 3 ++- app/javascript/mastodon/reducers/accounts_map.js | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/javascript/mastodon/features/account_timeline/index.js b/app/javascript/mastodon/features/account_timeline/index.js index bfb5f7c80..525837c72 100644 --- a/app/javascript/mastodon/features/account_timeline/index.js +++ b/app/javascript/mastodon/features/account_timeline/index.js @@ -19,11 +19,12 @@ import { connectTimeline, disconnectTimeline } from 'mastodon/actions/timelines' import LimitedAccountHint from './components/limited_account_hint'; import { getAccountHidden } from 'mastodon/selectors'; import { fetchFeaturedTags } from '../../actions/featured_tags'; +import { normalizeForLookup } from 'mastodon/reducers/accounts_map'; const emptyList = ImmutableList(); const mapStateToProps = (state, { params: { acct, id, tagged }, withReplies = false }) => { - const accountId = id || state.getIn(['accounts_map', acct]); + const accountId = id || state.getIn(['accounts_map', normalizeForLookup(acct)]); if (!accountId) { return { diff --git a/app/javascript/mastodon/reducers/accounts_map.js b/app/javascript/mastodon/reducers/accounts_map.js index e0d42e9cd..53e08c8fb 100644 --- a/app/javascript/mastodon/reducers/accounts_map.js +++ b/app/javascript/mastodon/reducers/accounts_map.js @@ -1,14 +1,16 @@ import { ACCOUNT_IMPORT, ACCOUNTS_IMPORT } from '../actions/importer'; import { Map as ImmutableMap } from 'immutable'; +export const normalizeForLookup = str => str.toLowerCase(); + const initialState = ImmutableMap(); export default function accountsMap(state = initialState, action) { switch(action.type) { case ACCOUNT_IMPORT: - return state.set(action.account.acct, action.account.id); + return state.set(normalizeForLookup(action.account.acct), action.account.id); case ACCOUNTS_IMPORT: - return state.withMutations(map => action.accounts.forEach(account => map.set(account.acct, account.id))); + return state.withMutations(map => action.accounts.forEach(account => map.set(normalizeForLookup(account.acct), account.id))); default: return state; } From 94feb2b93ff1f381f8dba1ad361a2afd134f02a8 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Fri, 21 Oct 2022 18:48:22 +0900 Subject: [PATCH 518/652] Fix `FetchFeaturedCollectionService` spec (#19401) Regression from #19380 --- app/services/activitypub/fetch_featured_collection_service.rb | 3 +-- .../activitypub/fetch_featured_collection_service_spec.rb | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/services/activitypub/fetch_featured_collection_service.rb b/app/services/activitypub/fetch_featured_collection_service.rb index 026fe24c5..50a187ad9 100644 --- a/app/services/activitypub/fetch_featured_collection_service.rb +++ b/app/services/activitypub/fetch_featured_collection_service.rb @@ -43,8 +43,7 @@ class ActivityPub::FetchFeaturedCollectionService < BaseService def process_note_items(items) status_ids = items.filter_map do |item| - type = item['type'] - next unless type == 'Note' + next unless item.is_a?(String) || item['type'] == 'Note' uri = value_or_id(item) next if ActivityPub::TagManager.instance.local_uri?(uri) diff --git a/spec/services/activitypub/fetch_featured_collection_service_spec.rb b/spec/services/activitypub/fetch_featured_collection_service_spec.rb index f552b9dc0..e6336dc1b 100644 --- a/spec/services/activitypub/fetch_featured_collection_service_spec.rb +++ b/spec/services/activitypub/fetch_featured_collection_service_spec.rb @@ -65,7 +65,7 @@ RSpec.describe ActivityPub::FetchFeaturedCollectionService, type: :service do stub_request(:get, 'https://example.com/account/pinned/3').to_return(status: 404) stub_request(:get, 'https://example.com/account/pinned/4').to_return(status: 200, body: Oj.dump(status_json_4)) - subject.call(actor) + subject.call(actor, note: true, hashtag: false) end it 'sets expected posts as pinned posts' do From 6e1be17b6125635a463dff4a96e76490096cb297 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Oct 2022 19:17:18 +0900 Subject: [PATCH 519/652] Bump stackprof from 0.2.21 to 0.2.22 (#19367) Bumps [stackprof](https://github.com/tmm1/stackprof) from 0.2.21 to 0.2.22. - [Release notes](https://github.com/tmm1/stackprof/releases) - [Changelog](https://github.com/tmm1/stackprof/blob/master/CHANGELOG.md) - [Commits](https://github.com/tmm1/stackprof/compare/v0.2.21...v0.2.22) --- updated-dependencies: - dependency-name: stackprof dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 81cd3dadb..28c6e7348 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -647,7 +647,7 @@ GEM sshkit (1.21.2) net-scp (>= 1.1.2) net-ssh (>= 2.8.0) - stackprof (0.2.21) + stackprof (0.2.22) statsd-ruby (1.5.0) stoplight (3.0.0) strong_migrations (0.7.9) From 6faa51edc77073c73873daf1ca43a91366543b38 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Oct 2022 20:09:17 +0900 Subject: [PATCH 520/652] Bump regenerator-runtime from 0.13.9 to 0.13.10 (#19371) Bumps [regenerator-runtime](https://github.com/facebook/regenerator) from 0.13.9 to 0.13.10. - [Release notes](https://github.com/facebook/regenerator/releases) - [Commits](https://github.com/facebook/regenerator/compare/regenerator-runtime@0.13.9...regenerator-runtime@0.13.10) --- updated-dependencies: - dependency-name: regenerator-runtime dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index a7141c7a7..b1f3054ce 100644 --- a/package.json +++ b/package.json @@ -114,7 +114,7 @@ "redux": "^4.2.0", "redux-immutable": "^4.0.0", "redux-thunk": "^2.4.1", - "regenerator-runtime": "^0.13.9", + "regenerator-runtime": "^0.13.10", "requestidlecallback": "^0.3.0", "reselect": "^4.1.6", "rimraf": "^3.0.2", diff --git a/yarn.lock b/yarn.lock index 843764c55..5711902e4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9597,10 +9597,10 @@ regenerator-runtime@^0.12.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== -regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.9: - version "0.13.9" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" - integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== +regenerator-runtime@^0.13.10, regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4: + version "0.13.10" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz#ed07b19616bcbec5da6274ebc75ae95634bfc2ee" + integrity sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw== regenerator-transform@^0.15.0: version "0.15.0" From 7777524145884a311439dd3fc3b55f8e0a247e34 Mon Sep 17 00:00:00 2001 From: Takeshi Umeda Date: Fri, 21 Oct 2022 20:22:02 +0900 Subject: [PATCH 521/652] Fix featured tag display name in setting (#19404) --- app/views/settings/featured_tags/index.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/settings/featured_tags/index.html.haml b/app/views/settings/featured_tags/index.html.haml index 5d87e2862..595094fc7 100644 --- a/app/views/settings/featured_tags/index.html.haml +++ b/app/views/settings/featured_tags/index.html.haml @@ -21,7 +21,7 @@ %div %h4 = fa_icon 'hashtag' - = featured_tag.name + = featured_tag.display_name %small - if featured_tag.last_status_at.nil? = t('accounts.nothing_here') From e623c07372a1f3e3b4e5e8c48683f9aefe7c79f7 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 21 Oct 2022 13:47:56 +0200 Subject: [PATCH 522/652] New Crowdin updates (#19350) * New translations en.yml (Danish) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Icelandic) * New translations en.yml (Czech) * New translations en.json (Czech) * New translations en.yml (Latvian) * New translations en.yml (Polish) * New translations en.json (Thai) * New translations simple_form.en.yml (Thai) * New translations en.yml (Galician) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.yml (Thai) * New translations en.json (Korean) * New translations en.yml (German) * New translations en.yml (Turkish) * New translations en.yml (Polish) * New translations en.yml (Scottish Gaelic) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.json (Kabyle) * New translations en.json (Kabyle) * New translations en.yml (Kabyle) * New translations doorkeeper.en.yml (Kabyle) * New translations en.json (Scottish Gaelic) * New translations en.json (Spanish, Mexico) * New translations en.json (Greek) * New translations en.json (Chinese Traditional) * New translations en.json (Kabyle) * New translations en.json (Czech) * New translations en.json (Catalan) * New translations en.json (Korean) * New translations en.json (Ukrainian) * New translations en.yml (Spanish) * New translations en.json (Albanian) * New translations en.yml (Albanian) * New translations en.json (Spanish) * New translations en.json (Polish) * New translations en.json (Icelandic) * New translations en.json (Scottish Gaelic) * New translations en.json (Italian) * New translations en.json (Danish) * New translations en.json (Russian) * New translations en.json (Slovenian) * New translations en.yml (Slovenian) * New translations en.json (Spanish, Argentina) * New translations en.json (Latvian) * New translations en.json (German) * New translations en.json (Dutch) * New translations en.yml (Dutch) * New translations en.json (Dutch) * New translations en.yml (Dutch) * New translations simple_form.en.yml (Dutch) * New translations en.json (Dutch) * New translations en.yml (Dutch) * New translations simple_form.en.yml (Dutch) * New translations en.json (Dutch) * New translations en.yml (Dutch) * New translations simple_form.en.yml (Dutch) * New translations en.yml (Ido) * New translations en.json (Turkish) * New translations simple_form.en.yml (Ido) * New translations en.json (Galician) * New translations en.json (Portuguese) * New translations en.yml (Portuguese) * New translations en.json (Portuguese) * New translations en.yml (Portuguese) * New translations en.json (Vietnamese) * New translations en.yml (Vietnamese) * New translations en.yml (Vietnamese) * New translations en.json (Hebrew) * New translations en.json (Slovak) * New translations en.json (Korean) * New translations en.json (Macedonian) * New translations en.json (Norwegian) * New translations en.json (Polish) * New translations en.json (Portuguese) * New translations en.json (Russian) * New translations en.json (Slovenian) * New translations en.json (Armenian) * New translations en.json (Serbian (Cyrillic)) * New translations en.json (Swedish) * New translations en.json (Turkish) * New translations en.json (Ukrainian) * New translations en.json (Chinese Simplified) * New translations en.json (Chinese Traditional) * New translations en.json (Urdu (Pakistan)) * New translations en.json (Vietnamese) * New translations en.json (Galician) * New translations en.json (Icelandic) * New translations en.json (Italian) * New translations en.json (Hungarian) * New translations en.json (Thai) * New translations en.json (Sinhala) * New translations en.json (Bulgarian) * New translations en.json (Ido) * New translations en.json (German) * New translations en.json (Tamil) * New translations en.json (Esperanto) * New translations en.json (Czech) * New translations en.json (Dutch) * New translations en.json (Albanian) * New translations en.json (Japanese) * New translations en.json (Indonesian) * New translations en.json (Romanian) * New translations en.json (Irish) * New translations en.json (French) * New translations en.json (Spanish) * New translations en.json (Afrikaans) * New translations en.json (Arabic) * New translations en.json (Catalan) * New translations en.json (Danish) * New translations en.json (Greek) * New translations en.json (Basque) * New translations en.json (Finnish) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Persian) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Cornish) * New translations en.json (Scottish Gaelic) * New translations en.json (Asturian) * New translations en.json (Occitan) * New translations en.json (Sorani (Kurdish)) * New translations en.json (Malayalam) * New translations en.json (Corsican) * New translations en.json (Sardinian) * New translations en.json (Sanskrit) * New translations en.json (Kabyle) * New translations en.json (Breton) * New translations en.json (Tatar) * New translations en.json (Spanish, Argentina) * New translations en.json (Estonian) * New translations en.json (Spanish, Mexico) * New translations en.json (Bengali) * New translations en.json (Marathi) * New translations en.json (Croatian) * New translations en.json (Norwegian Nynorsk) * New translations en.json (Kazakh) * New translations en.json (Latvian) * New translations en.json (Chinese Traditional, Hong Kong) * New translations en.json (Hindi) * New translations en.json (Malay) * New translations en.json (Welsh) * New translations en.json (Standard Moroccan Tamazight) * New translations en.json (Catalan) * New translations en.json (Danish) * New translations en.json (Ido) * New translations en.json (Korean) * New translations en.json (Chinese Traditional) * New translations en.json (Spanish, Argentina) * New translations en.json (Ido) * New translations en.json (Galician) * New translations en.json (Greek) * New translations en.json (Polish) * New translations en.json (Ukrainian) * New translations en.json (Italian) * New translations en.json (Icelandic) * New translations en.json (Turkish) * New translations en.json (Ido) * New translations en.json (Hungarian) * New translations en.yml (Hungarian) * New translations en.json (Russian) * New translations en.yml (Russian) * New translations en.json (Vietnamese) * New translations simple_form.en.yml (Hungarian) * New translations simple_form.en.yml (Russian) * New translations en.json (Portuguese) * New translations en.json (Latvian) * New translations en.json (Portuguese) * New translations en.json (Ukrainian) * New translations en.yml (Galician) * New translations en.yml (Greek) * New translations en.yml (Afrikaans) * New translations en.yml (Arabic) * New translations en.yml (Bulgarian) * New translations en.yml (Catalan) * New translations en.yml (Danish) * New translations en.yml (Basque) * New translations en.yml (Finnish) * New translations en.yml (Irish) * New translations en.yml (Hebrew) * New translations en.yml (Hungarian) * New translations en.yml (French) * New translations en.yml (Turkish) * New translations en.yml (German) * New translations en.yml (Czech) * New translations en.yml (Chinese Simplified) * New translations en.yml (Spanish) * New translations en.yml (Albanian) * New translations en.yml (Ukrainian) * New translations en.yml (Romanian) * New translations en.yml (Ido) * New translations en.yml (Thai) * New translations en.yml (Armenian) * New translations en.yml (Russian) * New translations en.yml (Slovak) * New translations en.yml (Slovenian) * New translations en.yml (Serbian (Cyrillic)) * New translations en.yml (Swedish) * New translations en.yml (Chinese Traditional) * New translations en.yml (Portuguese) * New translations en.yml (Polish) * New translations en.yml (Italian) * New translations en.yml (Georgian) * New translations en.yml (Korean) * New translations en.yml (Japanese) * New translations en.yml (Lithuanian) * New translations en.yml (Dutch) * New translations en.yml (Norwegian) * New translations en.yml (Icelandic) * New translations en.yml (Persian) * New translations en.yml (Indonesian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Vietnamese) * New translations en.yml (Galician) * New translations en.yml (Tamil) * New translations en.yml (Esperanto) * New translations en.yml (Chinese Traditional, Hong Kong) * New translations en.yml (Tatar) * New translations en.yml (Malayalam) * New translations en.yml (Breton) * New translations en.yml (Sinhala) * New translations en.yml (Cornish) * New translations en.yml (Scottish Gaelic) * New translations en.yml (Asturian) * New translations en.yml (Welsh) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Spanish, Mexico) * New translations en.yml (Bengali) * New translations en.yml (Croatian) * New translations en.yml (Norwegian Nynorsk) * New translations en.yml (Kazakh) * New translations en.yml (Estonian) * New translations en.yml (Latvian) * New translations en.yml (Malay) * New translations en.yml (Telugu) * New translations en.yml (Occitan) * New translations en.yml (Taigi) * New translations en.yml (Kabyle) * New translations en.yml (Serbian (Latin)) * New translations en.yml (Sardinian) * New translations en.yml (Corsican) * New translations en.yml (Sorani (Kurdish)) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.yml (Standard Moroccan Tamazight) * New translations en.json (Kurmanji (Kurdish)) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` * New translations en.json (Spanish) * Run `yarn manage:translations` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 7 +- app/javascript/mastodon/locales/ar.json | 7 +- app/javascript/mastodon/locales/ast.json | 7 +- app/javascript/mastodon/locales/bg.json | 7 +- app/javascript/mastodon/locales/bn.json | 7 +- app/javascript/mastodon/locales/br.json | 7 +- app/javascript/mastodon/locales/ca.json | 33 +++-- app/javascript/mastodon/locales/ckb.json | 7 +- app/javascript/mastodon/locales/co.json | 7 +- app/javascript/mastodon/locales/cs.json | 33 +++-- app/javascript/mastodon/locales/cy.json | 7 +- app/javascript/mastodon/locales/da.json | 41 +++--- app/javascript/mastodon/locales/de.json | 31 +++-- .../mastodon/locales/defaultMessages.json | 29 ++++- app/javascript/mastodon/locales/el.json | 13 +- app/javascript/mastodon/locales/en-GB.json | 7 +- app/javascript/mastodon/locales/en.json | 10 +- app/javascript/mastodon/locales/eo.json | 7 +- app/javascript/mastodon/locales/es-AR.json | 33 +++-- app/javascript/mastodon/locales/es-MX.json | 33 +++-- app/javascript/mastodon/locales/es.json | 33 +++-- app/javascript/mastodon/locales/et.json | 7 +- app/javascript/mastodon/locales/eu.json | 7 +- app/javascript/mastodon/locales/fa.json | 7 +- app/javascript/mastodon/locales/fi.json | 7 +- app/javascript/mastodon/locales/fr.json | 7 +- app/javascript/mastodon/locales/fy.json | 7 +- app/javascript/mastodon/locales/ga.json | 7 +- app/javascript/mastodon/locales/gd.json | 13 +- app/javascript/mastodon/locales/gl.json | 33 +++-- app/javascript/mastodon/locales/he.json | 7 +- app/javascript/mastodon/locales/hi.json | 7 +- app/javascript/mastodon/locales/hr.json | 7 +- app/javascript/mastodon/locales/hu.json | 33 +++-- app/javascript/mastodon/locales/hy.json | 7 +- app/javascript/mastodon/locales/id.json | 7 +- app/javascript/mastodon/locales/io.json | 77 +++++------ app/javascript/mastodon/locales/is.json | 33 +++-- app/javascript/mastodon/locales/it.json | 33 +++-- app/javascript/mastodon/locales/ja.json | 35 ++--- app/javascript/mastodon/locales/ka.json | 7 +- app/javascript/mastodon/locales/kab.json | 49 +++---- app/javascript/mastodon/locales/kk.json | 7 +- app/javascript/mastodon/locales/kn.json | 7 +- app/javascript/mastodon/locales/ko.json | 23 ++-- app/javascript/mastodon/locales/ku.json | 33 +++-- app/javascript/mastodon/locales/kw.json | 7 +- app/javascript/mastodon/locales/lt.json | 7 +- app/javascript/mastodon/locales/lv.json | 33 +++-- app/javascript/mastodon/locales/mk.json | 7 +- app/javascript/mastodon/locales/ml.json | 7 +- app/javascript/mastodon/locales/mr.json | 7 +- app/javascript/mastodon/locales/ms.json | 7 +- app/javascript/mastodon/locales/nl.json | 45 ++++--- app/javascript/mastodon/locales/nn.json | 7 +- app/javascript/mastodon/locales/no.json | 7 +- app/javascript/mastodon/locales/oc.json | 7 +- app/javascript/mastodon/locales/pa.json | 7 +- app/javascript/mastodon/locales/pl.json | 33 +++-- app/javascript/mastodon/locales/pt-BR.json | 7 +- app/javascript/mastodon/locales/pt-PT.json | 33 +++-- app/javascript/mastodon/locales/ro.json | 7 +- app/javascript/mastodon/locales/ru.json | 27 ++-- app/javascript/mastodon/locales/sa.json | 7 +- app/javascript/mastodon/locales/sc.json | 7 +- app/javascript/mastodon/locales/si.json | 7 +- app/javascript/mastodon/locales/sk.json | 7 +- app/javascript/mastodon/locales/sl.json | 33 +++-- app/javascript/mastodon/locales/sq.json | 33 +++-- app/javascript/mastodon/locales/sr-Latn.json | 7 +- app/javascript/mastodon/locales/sr.json | 7 +- app/javascript/mastodon/locales/sv.json | 7 +- app/javascript/mastodon/locales/szl.json | 7 +- app/javascript/mastodon/locales/ta.json | 7 +- app/javascript/mastodon/locales/tai.json | 7 +- app/javascript/mastodon/locales/te.json | 7 +- app/javascript/mastodon/locales/th.json | 37 +++--- app/javascript/mastodon/locales/tr.json | 33 +++-- app/javascript/mastodon/locales/tt.json | 7 +- app/javascript/mastodon/locales/ug.json | 7 +- app/javascript/mastodon/locales/uk.json | 33 +++-- app/javascript/mastodon/locales/ur.json | 7 +- app/javascript/mastodon/locales/vi.json | 33 +++-- app/javascript/mastodon/locales/zgh.json | 7 +- app/javascript/mastodon/locales/zh-CN.json | 7 +- app/javascript/mastodon/locales/zh-HK.json | 7 +- app/javascript/mastodon/locales/zh-TW.json | 33 +++-- config/locales/af.yml | 1 - config/locales/ar.yml | 39 ------ config/locales/ast.yml | 36 ------ config/locales/bg.yml | 23 ---- config/locales/bn.yml | 20 --- config/locales/br.yml | 15 --- config/locales/ca.yml | 47 +------ config/locales/ckb.yml | 39 ------ config/locales/co.yml | 39 ------ config/locales/cs.yml | 48 ++----- config/locales/cy.yml | 41 ------ config/locales/da.yml | 49 ++----- config/locales/de.yml | 47 +------ config/locales/doorkeeper.kab.yml | 13 ++ config/locales/el.yml | 41 +----- config/locales/eo.yml | 37 ------ config/locales/es-AR.yml | 47 +------ config/locales/es-MX.yml | 47 +------ config/locales/es.yml | 47 +------ config/locales/et.yml | 41 ------ config/locales/eu.yml | 39 ------ config/locales/fa.yml | 39 ------ config/locales/fi.yml | 39 ------ config/locales/fr.yml | 40 ------ config/locales/ga.yml | 6 - config/locales/gd.yml | 43 +----- config/locales/gl.yml | 49 ++----- config/locales/he.yml | 39 ------ config/locales/hr.yml | 17 --- config/locales/hu.yml | 51 ++------ config/locales/hy.yml | 26 ---- config/locales/id.yml | 39 ------ config/locales/io.yml | 59 +++------ config/locales/is.yml | 47 +------ config/locales/it.yml | 47 +------ config/locales/ja.yml | 41 +----- config/locales/ka.yml | 25 ---- config/locales/kab.yml | 43 ++---- config/locales/kk.yml | 38 ------ config/locales/ko.yml | 41 +----- config/locales/ku.yml | 47 +------ config/locales/kw.yml | 3 - config/locales/lt.yml | 35 ----- config/locales/lv.yml | 47 +------ config/locales/ml.yml | 14 -- config/locales/ms.yml | 20 --- config/locales/nl.yml | 122 +++++++++++------- config/locales/nn.yml | 39 ------ config/locales/no.yml | 39 ------ config/locales/oc.yml | 39 ------ config/locales/pl.yml | 47 +------ config/locales/pt-BR.yml | 39 ------ config/locales/pt-PT.yml | 47 +------ config/locales/ro.yml | 36 ------ config/locales/ru.yml | 43 +----- config/locales/sc.yml | 39 ------ config/locales/si.yml | 39 ------ config/locales/simple_form.hu.yml | 4 + config/locales/simple_form.io.yml | 8 ++ config/locales/simple_form.nl.yml | 11 ++ config/locales/simple_form.ru.yml | 4 + config/locales/simple_form.th.yml | 4 + config/locales/sk.yml | 37 ------ config/locales/sl.yml | 61 ++------- config/locales/sq.yml | 47 +------ config/locales/sr-Latn.yml | 11 -- config/locales/sr.yml | 32 ----- config/locales/sv.yml | 36 ------ config/locales/ta.yml | 19 --- config/locales/tai.yml | 2 - config/locales/te.yml | 15 --- config/locales/th.yml | 46 +------ config/locales/tr.yml | 47 +------ config/locales/tt.yml | 8 -- config/locales/uk.yml | 47 +------ config/locales/vi.yml | 47 +------ config/locales/zgh.yml | 9 -- config/locales/zh-CN.yml | 40 ------ config/locales/zh-HK.yml | 39 ------ config/locales/zh-TW.yml | 49 ++----- 167 files changed, 1271 insertions(+), 2974 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 3519563d5..fafa60920 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -20,13 +20,16 @@ "account.block_domain": "Blokeer alles van {domain}", "account.blocked": "Geblok", "account.browse_more_on_origin_server": "Snuffel rond op oorspronklike profiel", - "account.cancel_follow_request": "Kanselleer volgversoek", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Stuur direkte boodskap aan @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain blocked", "account.edit_profile": "Redigeer profiel", "account.enable_notifications": "Stel my in kennis wanneer @{name} plasings maak", "account.endorse": "Beklemtoon op profiel", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Volg", "account.followers": "Volgelinge", "account.followers.empty": "Niemand volg tans hierdie gebruiker nie.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "Block", "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Delete", "confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete_list.confirm": "Delete", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index c6b10bbec..07b786ca0 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -20,13 +20,16 @@ "account.block_domain": "حظر اسم النِّطاق {domain}", "account.blocked": "محظور", "account.browse_more_on_origin_server": "تصفح المزيد في الملف الشخصي الأصلي", - "account.cancel_follow_request": "إلغاء طلب المتابَعة", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "مراسلة @{name} بشكل مباشر", "account.disable_notifications": "توقف عن إشعاري عندما ينشر @{name}", "account.domain_blocked": "اسم النِّطاق محظور", "account.edit_profile": "تعديل الملف الشخصي", "account.enable_notifications": "أشعرني عندما ينشر @{name}", "account.endorse": "أوصِ به على صفحتك الشخصية", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "متابعة", "account.followers": "مُتابِعون", "account.followers.empty": "لا أحدَ يُتابع هذا المُستخدم إلى حد الآن.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "حظره والإبلاغ عنه", "confirmations.block.confirm": "حظر", "confirmations.block.message": "هل أنتَ مُتأكدٌ أنكَ تُريدُ حَظرَ {name}؟", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "حذف", "confirmations.delete.message": "هل أنتَ مُتأكدٌ أنك تُريدُ حَذفَ هذا المنشور؟", "confirmations.delete_list.confirm": "حذف", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 4dff9d616..325b2e3e5 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -20,13 +20,16 @@ "account.block_domain": "Anubrir tolo de {domain}", "account.blocked": "Bloquiada", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Encaboxar la solicitú de siguimientu", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Unviar un mensaxe direutu a @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Dominiu anubríu", "account.edit_profile": "Editar el perfil", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Destacar nel perfil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Siguir", "account.followers": "Siguidores", "account.followers.empty": "Naide sigue a esti usuariu entá.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Bloquiar ya informar", "confirmations.block.confirm": "Bloquiar", "confirmations.block.message": "¿De xuru que quies bloquiar a {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Desaniciar", "confirmations.delete.message": "¿De xuru que quies desaniciar esti estáu?", "confirmations.delete_list.confirm": "Desaniciar", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 8cb4f993a..7c5bde927 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -20,13 +20,16 @@ "account.block_domain": "скрий всичко от (домейн)", "account.blocked": "Блокирани", "account.browse_more_on_origin_server": "Разгледайте повече в оригиналния профил", - "account.cancel_follow_request": "Откажи искането за следване", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Direct Message @{name}", "account.disable_notifications": "Спрете да ме уведомявате, когато @{name} публикува", "account.domain_blocked": "Скрит домейн", "account.edit_profile": "Редактирай профила", "account.enable_notifications": "Уведомявайте ме, когато @{name} публикува", "account.endorse": "Характеристика на профила", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Последвай", "account.followers": "Последователи", "account.followers.empty": "Все още никой не следва този потребител.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Блокиране и докладване", "confirmations.block.confirm": "Блокиране", "confirmations.block.message": "Сигурни ли сте, че искате да блокирате {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Изтриване", "confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete_list.confirm": "Изтриване", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index b80a943c5..fef216cde 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -20,13 +20,16 @@ "account.block_domain": "{domain} থেকে সব লুকাও", "account.blocked": "অবরুদ্ধ", "account.browse_more_on_origin_server": "মূল প্রোফাইলটিতে আরও ব্রাউজ করুন", - "account.cancel_follow_request": "অনুসরণ অনুরোধ বাতিল করো", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "@{name} কে সরাসরি বার্তা", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "ডোমেন গোপন করুন", "account.edit_profile": "প্রোফাইল পরিবর্তন করুন", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "নিজের পাতায় দেখান", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "অনুসরণ", "account.followers": "অনুসরণকারী", "account.followers.empty": "এই ব্যক্তিকে এখনো কেউ অনুসরণ করে না।", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "ব্লক করুন এবং রিপোর্ট করুন", "confirmations.block.confirm": "ব্লক করুন", "confirmations.block.message": "আপনি কি নিশ্চিত {name} কে ব্লক করতে চান?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "মুছে ফেলুন", "confirmations.delete.message": "আপনি কি নিশ্চিত যে এই লেখাটি মুছে ফেলতে চান ?", "confirmations.delete_list.confirm": "মুছে ফেলুন", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index 47ba11965..bedf197d7 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -20,13 +20,16 @@ "account.block_domain": "Berzañ pep tra eus {domain}", "account.blocked": "Stanket", "account.browse_more_on_origin_server": "Furchal muioc'h war ar profil kentañ", - "account.cancel_follow_request": "Nullañ ar bedadenn heuliañ", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Kas ur gemennadenn prevez da @{name}", "account.disable_notifications": "Paouez d'am c'hemenn pa vez toudet gant @{name}", "account.domain_blocked": "Domani berzet", "account.edit_profile": "Aozañ ar profil", "account.enable_notifications": "Ma c'hemenn pa vez toudet gant @{name}", "account.endorse": "Lakaat war-wel war ar profil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Heuliañ", "account.followers": "Heulier·ezed·ien", "account.followers.empty": "Den na heul an implijer-mañ c'hoazh.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Berzañ ha Disklêriañ", "confirmations.block.confirm": "Stankañ", "confirmations.block.message": "Ha sur oc'h e fell deoc'h stankañ {name} ?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Dilemel", "confirmations.delete.message": "Ha sur oc'h e fell deoc'h dilemel an toud-mañ ?", "confirmations.delete_list.confirm": "Dilemel", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index f6a5996d9..f6e229201 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Servidors moderats", + "about.contact": "Contacte:", + "about.domain_blocks.comment": "Motiu", + "about.domain_blocks.domain": "Domini", + "about.domain_blocks.preamble": "En general, Mastodon et permet veure el contingut i interaccionar amb els usuaris de qualsevol altre servidor del fedivers. Aquestes són les excepcions que s'han fet en aquest servidor particular.", + "about.domain_blocks.severity": "Severitat", + "about.domain_blocks.silenced.explanation": "Generalment no veuràs perfils ni contingut d'aquest servidor, a menys que el cerquis explícitament o optis per ell seguint-lo.", + "about.domain_blocks.silenced.title": "Limitat", + "about.domain_blocks.suspended.explanation": "No es processaran, emmagatzemaran ni s'intercanviaran dades d'aquest servidor, fent impossible qualsevol interacció o comunicació amb els usuaris d'aquest servidor.", + "about.domain_blocks.suspended.title": "Suspès", + "about.not_available": "Aquesta informació no s'ha fet disponible en aquest servidor.", + "about.powered_by": "Xarxa social descentralitzada impulsada per {mastodon}", + "about.rules": "Normes del servidor", "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Afegeix o elimina de les llistes", "account.badges.bot": "Bot", @@ -20,13 +20,16 @@ "account.block_domain": "Bloqueja el domini {domain}", "account.blocked": "Bloquejat", "account.browse_more_on_origin_server": "Navega més en el perfil original", - "account.cancel_follow_request": "Anul·la la sol·licitud de seguiment", + "account.cancel_follow_request": "Retirar la sol·licitud de seguiment", "account.direct": "Envia missatge directe a @{name}", "account.disable_notifications": "No em notifiquis les publicacions de @{name}", "account.domain_blocked": "Domini bloquejat", "account.edit_profile": "Edita el perfil", "account.enable_notifications": "Notifica’m les publicacions de @{name}", "account.endorse": "Recomana en el teu perfil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Segueix", "account.followers": "Seguidors", "account.followers.empty": "Ningú segueix aquest usuari encara.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Bloqueja i informa", "confirmations.block.confirm": "Bloqueja", "confirmations.block.message": "Segur que vols bloquejar a {name}?", + "confirmations.cancel_follow_request.confirm": "Retirar sol·licitud", + "confirmations.cancel_follow_request.message": "Estàs segur que vols retirar la teva sol·licitud de seguiment de {name}?", "confirmations.delete.confirm": "Suprimeix", "confirmations.delete.message": "Segur que vols eliminar la publicació?", "confirmations.delete_list.confirm": "Suprimeix", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 6b887adde..edd324037 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -20,13 +20,16 @@ "account.block_domain": "بلۆکی هەموو شتێک لە {domain}", "account.blocked": "بلۆککرا", "account.browse_more_on_origin_server": "گەڕانی فرەتر لە سەر پرۆفایلی سەرەکی", - "account.cancel_follow_request": "بەتاڵکردنی داوای شوێنکەوتن", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "پەیامی تایبەت بە @{name}", "account.disable_notifications": "ئاگانامە مەنێرە بۆم کاتێک @{name} پۆست دەکرێت", "account.domain_blocked": "دۆمەین قەپاتکرا", "account.edit_profile": "دەستکاری پرۆفایل", "account.enable_notifications": "ئاگادارم بکەوە کاتێک @{name} بابەتەکان", "account.endorse": "ناساندن لە پرۆفایل", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "شوێنکەوتن", "account.followers": "شوێنکەوتووان", "account.followers.empty": "کەسێک شوێن ئەم بەکارهێنەرە نەکەوتووە", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "بلۆک & گوزارشت", "confirmations.block.confirm": "بلۆک", "confirmations.block.message": "ئایا دڵنیایت لەوەی دەتەوێت {name} بلۆک بکەیت?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "سڕینەوە", "confirmations.delete.message": "ئایا دڵنیایت لەوەی دەتەوێت ئەم توتە بسڕیتەوە?", "confirmations.delete_list.confirm": "سڕینەوە", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index bf79a5b12..e1681bc8a 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -20,13 +20,16 @@ "account.block_domain": "Piattà u duminiu {domain}", "account.blocked": "Bluccatu", "account.browse_more_on_origin_server": "Vede di più nant'à u prufile uriginale", - "account.cancel_follow_request": "Annullà a dumanda d'abbunamentu", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Missaghju direttu @{name}", "account.disable_notifications": "Ùn mi nutificate più quandu @{name} pubblica qualcosa", "account.domain_blocked": "Duminiu piattatu", "account.edit_profile": "Mudificà u prufile", "account.enable_notifications": "Nutificate mi quandu @{name} pubblica qualcosa", "account.endorse": "Fà figurà nant'à u prufilu", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Siguità", "account.followers": "Abbunati", "account.followers.empty": "Nisunu hè abbunatu à st'utilizatore.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Bluccà è signalà", "confirmations.block.confirm": "Bluccà", "confirmations.block.message": "Site sicuru·a che vulete bluccà @{name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Toglie", "confirmations.delete.message": "Site sicuru·a che vulete sguassà stu statutu?", "confirmations.delete_list.confirm": "Toglie", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index f56fb8d7d..40cbbba3c 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Moderované servery", + "about.contact": "Kontakt:", + "about.domain_blocks.comment": "Důvod", + "about.domain_blocks.domain": "Doména", + "about.domain_blocks.preamble": "Mastodon vám obecně umožňuje prohlížet obsah a komunikovat s uživateli z jakéhokoliv jiného serveru ve fediveru. Toto jsou výjimky, které byly uděleny na tomto konkrétním serveru.", + "about.domain_blocks.severity": "Závažnost", + "about.domain_blocks.silenced.explanation": "Z tohoto serveru obecně neuvidíte profily a obsah, pokud se na něj výslovně nepodíváte, nebo se k němu připojíte sledováním.", + "about.domain_blocks.silenced.title": "Omezeno", + "about.domain_blocks.suspended.explanation": "Žádná data z tohoto serveru nebudou zpracovávána, uložena ani vyměňována, což znemožňuje jakoukoli interakci nebo komunikaci s uživateli z tohoto serveru.", + "about.domain_blocks.suspended.title": "Pozastaveno", + "about.not_available": "Tato informace nebyla zpřístupněna na tomto serveru.", + "about.powered_by": "Decentralizovaná sociální média poháněná {mastodon}", + "about.rules": "Pravidla serveru", "account.account_note_header": "Poznámka", "account.add_or_remove_from_list": "Přidat nebo odstranit ze seznamů", "account.badges.bot": "Robot", @@ -20,13 +20,16 @@ "account.block_domain": "Blokovat doménu {domain}", "account.blocked": "Blokován", "account.browse_more_on_origin_server": "Více na původním profilu", - "account.cancel_follow_request": "Zrušit žádost o sledování", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Poslat @{name} přímou zprávu", "account.disable_notifications": "Zrušit upozorňování na příspěvky @{name}", "account.domain_blocked": "Doména blokována", "account.edit_profile": "Upravit profil", "account.enable_notifications": "Oznamovat mi příspěvky @{name}", "account.endorse": "Zvýraznit na profilu", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Sledovat", "account.followers": "Sledující", "account.followers.empty": "Tohoto uživatele ještě nikdo nesleduje.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blokovat a nahlásit", "confirmations.block.confirm": "Blokovat", "confirmations.block.message": "Opravdu chcete zablokovat {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Smazat", "confirmations.delete.message": "Opravdu chcete smazat tento příspěvek?", "confirmations.delete_list.confirm": "Smazat", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index b25834c36..967bb6aea 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -20,13 +20,16 @@ "account.block_domain": "Blocio parth {domain}", "account.blocked": "Blociwyd", "account.browse_more_on_origin_server": "Pori mwy ar y proffil gwreiddiol", - "account.cancel_follow_request": "Canslo cais dilyn", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Neges breifat @{name}", "account.disable_notifications": "Stopiwch fy hysbysu pan fydd @{name} yn postio", "account.domain_blocked": "Parth wedi ei flocio", "account.edit_profile": "Golygu proffil", "account.enable_notifications": "Rhowch wybod i fi pan fydd @{name} yn postio", "account.endorse": "Arddangos ar fy mhroffil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Dilyn", "account.followers": "Dilynwyr", "account.followers.empty": "Does neb yn dilyn y defnyddiwr hwn eto.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Rhwystro ac Adrodd", "confirmations.block.confirm": "Blocio", "confirmations.block.message": "Ydych chi'n sicr eich bod eisiau blocio {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Dileu", "confirmations.delete.message": "Ydych chi'n sicr eich bod eisiau dileu y post hwn?", "confirmations.delete_list.confirm": "Dileu", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 922314e30..97e5eeb5a 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Modererede servere", + "about.contact": "Kontakt:", + "about.domain_blocks.comment": "Årsag", + "about.domain_blocks.domain": "Domæne", + "about.domain_blocks.preamble": "Mastodon tillader generelt, at man ser indhold og interagere med brugere fra enhver anden server i fediverset. Disse er undtagelserne, som er implementeret på netop denne server.", + "about.domain_blocks.severity": "Alvorlighed", + "about.domain_blocks.silenced.explanation": "Man vil generelt ikke se profiler og indhold fra denne server, medmindre man udtrykkeligt slå den op eller vælger den ved at følge.", + "about.domain_blocks.silenced.title": "Begrænset", + "about.domain_blocks.suspended.explanation": "Data fra denne server hverken behandles, gemmes eller udveksles, hvilket umuliggør interaktion eller kommunikation med brugere fra denne server.", + "about.domain_blocks.suspended.title": "Udelukket", + "about.not_available": "Denne information er ikke blevet gjort tilgængelig på denne server.", + "about.powered_by": "Decentraliserede sociale medier drevet af {mastodon}", + "about.rules": "Serverregler", "account.account_note_header": "Notat", "account.add_or_remove_from_list": "Tilføj eller fjern fra lister", "account.badges.bot": "Bot", @@ -20,13 +20,16 @@ "account.block_domain": "Blokér domænet {domain}", "account.blocked": "Blokeret", "account.browse_more_on_origin_server": "Tjek mere ud på den oprindelige profil", - "account.cancel_follow_request": "Annullér følgeanmodning", + "account.cancel_follow_request": "Annullér følg-anmodning", "account.direct": "Direkte besked til @{name}", "account.disable_notifications": "Advisér mig ikke længere, når @{name} poster", "account.domain_blocked": "Domæne blokeret", "account.edit_profile": "Redigér profil", "account.enable_notifications": "Advisér mig, når @{name} poster", "account.endorse": "Fremhæv på profil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Følg", "account.followers": "Følgere", "account.followers.empty": "Ingen følger denne bruger endnu.", @@ -37,7 +40,7 @@ "account.follows_you": "Følger dig", "account.hide_reblogs": "Skjul boosts fra @{name}", "account.joined": "Tilmeldt {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Skift abonnementssprog", "account.link_verified_on": "Ejerskab af dette link blev tjekket {date}", "account.locked_info": "Denne kontos fortrolighedsstatus er sat til låst. Ejeren bedømmer manuelt, hvem der kan følge vedkommende.", "account.media": "Medier", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blokér og Anmeld", "confirmations.block.confirm": "Blokér", "confirmations.block.message": "Sikker på, at du vil blokere {name}?", + "confirmations.cancel_follow_request.confirm": "Annullér anmodning", + "confirmations.cancel_follow_request.message": "Sikker på, at anmodningen om at følge {name} skal annulleres?", "confirmations.delete.confirm": "Slet", "confirmations.delete.message": "Sikker på, at du vil slette dette indlæg?", "confirmations.delete_list.confirm": "Slet", @@ -164,12 +169,12 @@ "directory.local": "Kun fra {domain}", "directory.new_arrivals": "Nye ankomster", "directory.recently_active": "Nyligt aktive", - "dismissable_banner.community_timeline": "Dette er de seneste offentlige indlæg fra personer, hvis konti hostes af {domain}.", + "dismissable_banner.community_timeline": "Disse er de seneste offentlige indlæg fra personer med konti hostes af {domain}.", "dismissable_banner.dismiss": "Afvis", "dismissable_banner.explore_links": "Der tales lige nu om disse nyhedshistorier af folk på denne og andre servere i det decentraliserede netværk.", "dismissable_banner.explore_statuses": "Disse indlæg vinder lige nu fodfæste på denne og andre servere i det decentraliserede netværk.", "dismissable_banner.explore_tags": "Disse hashtages vinder lige nu fodfæste blandt folk på denne og andre servere i det decentraliserede netværk.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.public_timeline": "Disse er de seneste offentlige indlæg fra folk på denne og andre servere i det decentraliserede netværk, som denne server kender.", "embed.instructions": "Indlejr dette indlæg på dit websted ved at kopiere nedenstående kode.", "embed.preview": "Sådan kommer det til at se ud:", "emoji_button.activity": "Aktivitet", @@ -575,7 +580,7 @@ "status.unpin": "Frigør fra profil", "subscribed_languages.lead": "Kun indlæg på udvalgte sprog vil fremgå på Hjem og listetidslinjer efter ændringen. Vælg ingen for at modtage indlæg på alle sprog.", "subscribed_languages.save": "Gem ændringer", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.target": "Skift abonnementssprog for {target}", "suggestions.dismiss": "Afvis foreslag", "suggestions.header": "Du er måske interesseret i…", "tabs_bar.federated_timeline": "Fælles", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 14b825bee..a1b799300 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", + "about.blocks": "Moderierte Server", + "about.contact": "Kontakt:", + "about.domain_blocks.comment": "Begründung", "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.domain_blocks.preamble": "Mastodon erlaubt es dir generell, mit Inhalten zu interagieren, diese anzuzeigen und mit anderen Nutzern im Fediversum über Server hinweg zu interagieren. Dies sind die Ausnahmen, die auf diesem bestimmten Server gemacht wurden.", + "about.domain_blocks.severity": "Schweregrad", + "about.domain_blocks.silenced.explanation": "In der Regel werden Sie keine Profile und Inhalte von diesem Server sehen, es sei denn, Sie suchen explizit danach oder entscheiden sich für diesen Server, indem Sie ihm folgen.", + "about.domain_blocks.silenced.title": "Limitiert", + "about.domain_blocks.suspended.explanation": "Es werden keine Daten von diesem Server verarbeitet, gespeichert oder ausgetauscht, so dass eine Interaktion oder Kommunikation mit Nutzern dieses Servers nicht möglich ist.", + "about.domain_blocks.suspended.title": "Gesperrt", + "about.not_available": "Diese Informationen sind auf diesem Server nicht verfügbar.", + "about.powered_by": "Dezentrale soziale Medien betrieben von {mastodon}", + "about.rules": "Serverregeln", "account.account_note_header": "Notiz", "account.add_or_remove_from_list": "Hinzufügen oder Entfernen von Listen", "account.badges.bot": "Bot", @@ -20,13 +20,16 @@ "account.block_domain": "Alles von {domain} verstecken", "account.blocked": "Blockiert", "account.browse_more_on_origin_server": "Mehr auf dem Originalprofil durchsuchen", - "account.cancel_follow_request": "Folgeanfrage abbrechen", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Direktnachricht an @{name}", "account.disable_notifications": "Höre auf mich zu benachrichtigen wenn @{name} etwas postet", "account.domain_blocked": "Domain versteckt", "account.edit_profile": "Profil bearbeiten", "account.enable_notifications": "Benachrichtige mich wenn @{name} etwas postet", "account.endorse": "Auf Profil hervorheben", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Folgen", "account.followers": "Follower", "account.followers.empty": "Diesem Profil folgt noch niemand.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blockieren und melden", "confirmations.block.confirm": "Blockieren", "confirmations.block.message": "Bist du dir sicher, dass du {name} blockieren möchtest?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Löschen", "confirmations.delete.message": "Bist du dir sicher, dass du diesen Beitrag löschen möchtest?", "confirmations.delete_list.confirm": "Löschen", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index ee8d96052..3b4cd8adb 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -955,6 +955,10 @@ }, { "descriptors": [ + { + "defaultMessage": "Withdraw request", + "id": "confirmations.cancel_follow_request.confirm" + }, { "defaultMessage": "Unfollow", "id": "confirmations.unfollow.confirm" @@ -967,6 +971,10 @@ "defaultMessage": "Are you sure you want to unfollow {name}?", "id": "confirmations.unfollow.message" }, + { + "defaultMessage": "Are you sure you want to withdraw your request to follow {name}?", + "id": "confirmations.cancel_follow_request.message" + }, { "defaultMessage": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", "id": "confirmations.domain_block.message" @@ -1012,6 +1020,23 @@ ], "path": "app/javascript/mastodon/features/account/components/account_note.json" }, + { + "descriptors": [ + { + "defaultMessage": "Last post on {date}", + "id": "account.featured_tags.last_status_at" + }, + { + "defaultMessage": "No posts", + "id": "account.featured_tags.last_status_never" + }, + { + "defaultMessage": "{name}'s featured hashtags", + "id": "account.featured_tags.title" + } + ], + "path": "app/javascript/mastodon/features/account/components/featured_tags.json" + }, { "descriptors": [ { @@ -1023,7 +1048,7 @@ "id": "account.follow" }, { - "defaultMessage": "Cancel follow request", + "defaultMessage": "Withdraw follow request", "id": "account.cancel_follow_request" }, { @@ -1839,7 +1864,7 @@ "id": "account.follow" }, { - "defaultMessage": "Cancel follow request", + "defaultMessage": "Withdraw follow request", "id": "account.cancel_follow_request" }, { diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 4bc1351ef..072ef0fe2 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -1,10 +1,10 @@ { "about.blocks": "Moderated servers", - "about.contact": "Contact:", + "about.contact": "Επικοινωνία:", "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.domain": "Τομέας (Domain)", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", + "about.domain_blocks.severity": "Σοβαρότητα", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -20,13 +20,16 @@ "account.block_domain": "Αποκλεισμός {domain}", "account.blocked": "Αποκλεισμένος/η", "account.browse_more_on_origin_server": "Δες περισσότερα στο αρχικό προφίλ", - "account.cancel_follow_request": "Ακύρωση αιτήματος ακολούθησης", + "account.cancel_follow_request": "Απόσυρση αιτήματος παρακολούθησης", "account.direct": "Άμεσο μήνυμα προς @{name}", "account.disable_notifications": "Διακοπή ειδοποιήσεων για τις δημοσιεύσεις του/της @{name}", "account.domain_blocked": "Ο τομέας αποκλείστηκε", "account.edit_profile": "Επεξεργασία προφίλ", "account.enable_notifications": "Έναρξη ειδοποιήσεων για τις δημοσιεύσεις του/της @{name}", "account.endorse": "Προβολή στο προφίλ", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Ακολούθησε", "account.followers": "Ακόλουθοι", "account.followers.empty": "Κανείς δεν ακολουθεί αυτό τον χρήστη ακόμα.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Αποκλεισμός & Καταγγελία", "confirmations.block.confirm": "Απόκλεισε", "confirmations.block.message": "Σίγουρα θες να αποκλείσεις {name};", + "confirmations.cancel_follow_request.confirm": "Απόσυρση αιτήματος", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Διέγραψε", "confirmations.delete.message": "Σίγουρα θες να διαγράψεις αυτή τη δημοσίευση;", "confirmations.delete_list.confirm": "Διέγραψε", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 5745b5304..1cbed4526 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -20,13 +20,16 @@ "account.block_domain": "Block domain {domain}", "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Direct message @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain blocked", "account.edit_profile": "Edit profile", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Feature on profile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Follow", "account.followers": "Followers", "account.followers.empty": "No one follows this user yet.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "Block", "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Delete", "confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete_list.confirm": "Delete", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index f827032ae..83a2d206a 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -27,6 +27,9 @@ "account.edit_profile": "Edit profile", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Feature on profile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Follow", "account.followers": "Followers", "account.followers.empty": "No one follows this user yet.", @@ -35,9 +38,6 @@ "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", - "account.hashtag_all": "All", - "account.hashtag_all_description": "All posts (deselect hashtags)", - "account.hashtag_select_description": "Select hashtag #{name}", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", "account.languages": "Change subscribed languages", @@ -138,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "Block", "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Delete", "confirmations.delete.message": "Are you sure you want to delete this post?", "confirmations.delete_list.confirm": "Delete", @@ -146,8 +148,6 @@ "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "confirmations.domain_block.confirm": "Block entire domain", "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.logout.confirm": "Log out", "confirmations.logout.message": "Are you sure you want to log out?", "confirmations.mute.confirm": "Mute", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 087bcbb5b..708a07169 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -20,13 +20,16 @@ "account.block_domain": "Bloki la domajnon {domain}", "account.blocked": "Blokita", "account.browse_more_on_origin_server": "Foliumi pli ĉe la originala profilo", - "account.cancel_follow_request": "Nuligi la demandon de sekvado", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Rekte mesaĝi @{name}", "account.disable_notifications": "Ne plu sciigi min kiam @{name} mesaĝas", "account.domain_blocked": "Domajno blokita", "account.edit_profile": "Redakti la profilon", "account.enable_notifications": "Sciigi min kiam @{name} mesaĝas", "account.endorse": "Rekomendi ĉe via profilo", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Sekvi", "account.followers": "Sekvantoj", "account.followers.empty": "Ankoraŭ neniu sekvas tiun uzanton.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Bloki kaj raporti", "confirmations.block.confirm": "Bloki", "confirmations.block.message": "Ĉu vi certas, ke vi volas bloki {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Forigi", "confirmations.delete.message": "Ĉu vi certas, ke vi volas forigi ĉi tiun mesaĝon?", "confirmations.delete_list.confirm": "Forigi", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index cff937c4e..87a1f332d 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Servidores moderados", + "about.contact": "Contacto:", + "about.domain_blocks.comment": "Motivo", + "about.domain_blocks.domain": "Dominio", + "about.domain_blocks.preamble": "Mastodon normalmente te permite ver el contenido e interactuar con los usuarios de cualquier otro servidor en el fediverso. Estas son las excepciones que se han hecho en este servidor en particular.", + "about.domain_blocks.severity": "Gravedad", + "about.domain_blocks.silenced.explanation": "Normalmente no verás perfiles y contenido de este servidor, a menos que lo busqués explícitamente o sigás alguna cuenta.", + "about.domain_blocks.silenced.title": "Limitados", + "about.domain_blocks.suspended.explanation": "Ningún dato de este servidor será procesado, almacenado o intercambiado, haciendo imposible cualquier interacción o comunicación con los usuarios de este servidor.", + "about.domain_blocks.suspended.title": "Suspendidos", + "about.not_available": "Esta información no está disponible en este servidor.", + "about.powered_by": "Redes sociales descentralizadas con tecnología de {mastodon}", + "about.rules": "Reglas del servidor", "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Agregar o quitar de las listas", "account.badges.bot": "Bot", @@ -20,13 +20,16 @@ "account.block_domain": "Bloquear dominio {domain}", "account.blocked": "Bloqueado", "account.browse_more_on_origin_server": "Explorar más en el perfil original", - "account.cancel_follow_request": "Cancelar la solicitud de seguimiento", + "account.cancel_follow_request": "Retirar la solicitud de seguimiento", "account.direct": "Mensaje directo a @{name}", "account.disable_notifications": "Dejar de notificarme cuando @{name} envíe mensajes", "account.domain_blocked": "Dominio bloqueado", "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificarme cuando @{name} envíe mensajes", "account.endorse": "Destacar en el perfil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Seguir", "account.followers": "Seguidores", "account.followers.empty": "Todavía nadie sigue a este usuario.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Bloquear y denunciar", "confirmations.block.confirm": "Bloquear", "confirmations.block.message": "¿Estás seguro que querés bloquear a {name}?", + "confirmations.cancel_follow_request.confirm": "Retirar solicitud", + "confirmations.cancel_follow_request.message": "¿Estás seguro que querés retirar tu solicitud para seguir a {name}?", "confirmations.delete.confirm": "Eliminar", "confirmations.delete.message": "¿Estás seguro que querés eliminar este mensaje?", "confirmations.delete_list.confirm": "Eliminar", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 793c65a3c..06b03b1b3 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Servidores moderados", + "about.contact": "Contacto:", + "about.domain_blocks.comment": "Razón", + "about.domain_blocks.domain": "Dominio", + "about.domain_blocks.preamble": "Mastodon normalmente te permite ver el contenido e interactuar con los usuarios de cualquier otro servidor en el fediverso. Estas son las excepciones que se han hecho en este servidor en particular.", + "about.domain_blocks.severity": "Gravedad", + "about.domain_blocks.silenced.explanation": "Normalmente no verás perfiles y contenido de este servidor, a menos que lo busques explícitamente o sigas alguna cuenta.", + "about.domain_blocks.silenced.title": "Limitado", + "about.domain_blocks.suspended.explanation": "Ningún dato de este servidor será procesado, almacenado o intercambiado, haciendo imposible cualquier interacción o comunicación con los usuarios de este servidor.", + "about.domain_blocks.suspended.title": "Suspendido", + "about.not_available": "Esta información no está disponible en este servidor.", + "about.powered_by": "Redes sociales descentralizadas con tecnología de {mastodon}", + "about.rules": "Reglas del servidor", "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Agregar o eliminar de las listas", "account.badges.bot": "Bot", @@ -20,13 +20,16 @@ "account.block_domain": "Bloquear dominio {domain}", "account.blocked": "Bloqueado", "account.browse_more_on_origin_server": "Ver más en el perfil original", - "account.cancel_follow_request": "Cancelar la solicitud de seguimiento", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Mensaje directo a @{name}", "account.disable_notifications": "Dejar de notificarme cuando @{name} publique algo", "account.domain_blocked": "Dominio oculto", "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificarme cuando @{name} publique algo", "account.endorse": "Destacar en mi perfil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Seguir", "account.followers": "Seguidores", "account.followers.empty": "Todavía nadie sigue a este usuario.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Bloquear y Reportar", "confirmations.block.confirm": "Bloquear", "confirmations.block.message": "¿Estás seguro de que quieres bloquear a {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Eliminar", "confirmations.delete.message": "¿Estás seguro de que quieres borrar este toot?", "confirmations.delete_list.confirm": "Eliminar", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 561fc84e6..53661edb1 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Servidores moderados", + "about.contact": "Contacto:", + "about.domain_blocks.comment": "Razón", + "about.domain_blocks.domain": "Dominio", + "about.domain_blocks.preamble": "Mastodon normalmente te permite ver el contenido e interactuar con los usuarios de cualquier otro servidor en el fediverso. Estas son las excepciones que se han hecho en este servidor en particular.", + "about.domain_blocks.severity": "Gravedad", + "about.domain_blocks.silenced.explanation": "Normalmente no verás perfiles y contenido de este servidor, a menos que lo busques explícitamente o sigas alguna cuenta.", + "about.domain_blocks.silenced.title": "Limitado", + "about.domain_blocks.suspended.explanation": "Ningún dato de este servidor será procesado, almacenado o intercambiado, haciendo imposible cualquier interacción o comunicación con los usuarios de este servidor.", + "about.domain_blocks.suspended.title": "Suspendido", + "about.not_available": "Esta información no está disponible en este servidor.", + "about.powered_by": "Redes sociales descentralizadas con tecnología de {mastodon}", + "about.rules": "Reglas del servidor", "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Agregar o eliminar de listas", "account.badges.bot": "Bot", @@ -20,13 +20,16 @@ "account.block_domain": "Bloquear dominio {domain}", "account.blocked": "Bloqueado", "account.browse_more_on_origin_server": "Ver más en el perfil original", - "account.cancel_follow_request": "Cancelar la solicitud de seguimiento", + "account.cancel_follow_request": "Retirar solicitud de seguimiento", "account.direct": "Mensaje directo a @{name}", "account.disable_notifications": "Dejar de notificarme cuando @{name} publique algo", "account.domain_blocked": "Dominio oculto", "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificarme cuando @{name} publique algo", "account.endorse": "Mostrar en perfil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Seguir", "account.followers": "Seguidores", "account.followers.empty": "Todavía nadie sigue a este usuario.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Bloquear y Reportar", "confirmations.block.confirm": "Bloquear", "confirmations.block.message": "¿Estás seguro de que quieres bloquear a {name}?", + "confirmations.cancel_follow_request.confirm": "Retirar solicitud", + "confirmations.cancel_follow_request.message": "¿Estás seguro de que deseas retirar tu solicitud para seguir a {name}?", "confirmations.delete.confirm": "Eliminar", "confirmations.delete.message": "¿Estás seguro de que quieres borrar esta publicación?", "confirmations.delete_list.confirm": "Eliminar", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 380868da9..94a42a6b0 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -20,13 +20,16 @@ "account.block_domain": "Peida kõik domeenist {domain}", "account.blocked": "Blokeeritud", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Tühista jälgimistaotlus", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Saada otsesõnum @{name}'ile", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domeen peidetud", "account.edit_profile": "Muuda profiili", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Too profiilil esile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Jälgi", "account.followers": "Jälgijad", "account.followers.empty": "Keegi ei jälgi seda kasutajat veel.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blokeeri & Teata", "confirmations.block.confirm": "Blokeeri", "confirmations.block.message": "Olete kindel, et soovite blokeerida {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Kustuta", "confirmations.delete.message": "Olete kindel, et soovite selle staatuse kustutada?", "confirmations.delete_list.confirm": "Kustuta", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 46f7d082d..a65470eb2 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -20,13 +20,16 @@ "account.block_domain": "Ezkutatu {domain} domeinuko guztia", "account.blocked": "Blokeatuta", "account.browse_more_on_origin_server": "Arakatu gehiago jatorrizko profilean", - "account.cancel_follow_request": "Ezeztatu jarraitzeko eskaria", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Mezu zuzena @{name}(r)i", "account.disable_notifications": "Utzi jakinarazteari @{name} erabiltzailearen bidalketetan", "account.domain_blocked": "Ezkutatutako domeinua", "account.edit_profile": "Aldatu profila", "account.enable_notifications": "Jakinarazi @{name} erabiltzaileak bidalketak egitean", "account.endorse": "Nabarmendu profilean", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Jarraitu", "account.followers": "Jarraitzaileak", "account.followers.empty": "Ez du inork erabiltzaile hau jarraitzen oraindik.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blokeatu eta salatu", "confirmations.block.confirm": "Blokeatu", "confirmations.block.message": "Ziur {name} blokeatu nahi duzula?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Ezabatu", "confirmations.delete.message": "Ziur bidalketa hau ezabatu nahi duzula?", "confirmations.delete_list.confirm": "Ezabatu", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 9d6bb5792..29fc0776e 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -20,13 +20,16 @@ "account.block_domain": "مسدود کردن دامنهٔ {domain}", "account.blocked": "مسدود", "account.browse_more_on_origin_server": "مرور بیش‌تر روی نمایهٔ اصلی", - "account.cancel_follow_request": "لغو درخواست پی‌گیری", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "پیام مستقیم به ‎@{name}", "account.disable_notifications": "آگاه کردن من هنگام فرسته‌های ‎@{name} را متوقّف کن", "account.domain_blocked": "دامنه مسدود شد", "account.edit_profile": "ویرایش نمایه", "account.enable_notifications": "هنگام فرسته‌های ‎@{name} مرا آگاه کن", "account.endorse": "معرّفی در نمایه", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "پی‌گیری", "account.followers": "پی‌گیرندگان", "account.followers.empty": "هنوز کسی این کاربر را پی‌گیری نمی‌کند.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "مسدود کردن و گزارش", "confirmations.block.confirm": "مسدود کردن", "confirmations.block.message": "مطمئنید که می‌خواهید {name} را مسدود کنید؟", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "حذف", "confirmations.delete.message": "آیا مطمئنید که می‌خواهید این فرسته را حذف کنید؟", "confirmations.delete_list.confirm": "حذف", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 6335c5ee3..adeb4c005 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -20,13 +20,16 @@ "account.block_domain": "Piilota kaikki sisältö verkkotunnuksesta {domain}", "account.blocked": "Estetty", "account.browse_more_on_origin_server": "Selaile lisää alkuperäisellä palvelimella", - "account.cancel_follow_request": "Peruuta seurauspyyntö", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Pikaviesti käyttäjälle @{name}", "account.disable_notifications": "Lopeta @{name}:n julkaisuista ilmoittaminen", "account.domain_blocked": "Verkko-osoite piilotettu", "account.edit_profile": "Muokkaa profiilia", "account.enable_notifications": "Ilmoita @{name}:n julkaisuista", "account.endorse": "Suosittele profiilissasi", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Seuraa", "account.followers": "Seuraajat", "account.followers.empty": "Kukaan ei seuraa tätä käyttäjää vielä.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Estä ja raportoi", "confirmations.block.confirm": "Estä", "confirmations.block.message": "Haluatko varmasti estää käyttäjän {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Poista", "confirmations.delete.message": "Haluatko varmasti poistaa tämän julkaisun?", "confirmations.delete_list.confirm": "Poista", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 754cf1021..90033e096 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -20,13 +20,16 @@ "account.block_domain": "Bloquer le domaine {domain}", "account.blocked": "Bloqué·e", "account.browse_more_on_origin_server": "Parcourir davantage sur le profil original", - "account.cancel_follow_request": "Annuler la demande de suivi", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Envoyer un message direct à @{name}", "account.disable_notifications": "Ne plus me notifier quand @{name} publie quelque chose", "account.domain_blocked": "Domaine bloqué", "account.edit_profile": "Modifier le profil", "account.enable_notifications": "Me notifier quand @{name} publie quelque chose", "account.endorse": "Recommander sur votre profil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Suivre", "account.followers": "Abonné·e·s", "account.followers.empty": "Personne ne suit cet·te utilisateur·rice pour l’instant.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Bloquer et signaler", "confirmations.block.confirm": "Bloquer", "confirmations.block.message": "Voulez-vous vraiment bloquer {name} ?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Supprimer", "confirmations.delete.message": "Voulez-vous vraiment supprimer ce message ?", "confirmations.delete_list.confirm": "Supprimer", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index 2fc9d1c15..2837dd89c 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -20,13 +20,16 @@ "account.block_domain": "Block domain {domain}", "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Direct message @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domein blokkearre", "account.edit_profile": "Profyl oanpasse", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Feature on profile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Folgje", "account.followers": "Folgers", "account.followers.empty": "No one follows this user yet.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blokkearre & Oanjaan", "confirmations.block.confirm": "Blokkearre", "confirmations.block.message": "Wolle jo {name} werklik blokkearre?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Fuortsmite", "confirmations.delete.message": "Wolle jo dit berjocht werklik fuortsmite?", "confirmations.delete_list.confirm": "Fuortsmite", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index ca82660b1..b91daf814 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -20,13 +20,16 @@ "account.block_domain": "Bac ainm fearainn {domain}", "account.blocked": "Bactha", "account.browse_more_on_origin_server": "Brabhsáil níos mó ar an phróifíl bhunaidh", - "account.cancel_follow_request": "Cealaigh iarratas leanúnaí", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Seol teachtaireacht dhíreach chuig @{name}", "account.disable_notifications": "Éirigh as ag cuir mé in eol nuair bpostálann @{name}", "account.domain_blocked": "Ainm fearainn bactha", "account.edit_profile": "Cuir an phróifíl in eagar", "account.enable_notifications": "Cuir mé in eol nuair bpostálann @{name}", "account.endorse": "Cuir ar an phróifíl mar ghné", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Lean", "account.followers": "Leantóirí", "account.followers.empty": "Ní leanann éinne an t-úsáideoir seo fós.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "Block", "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Delete", "confirmations.delete.message": "An bhfuil tú cinnte gur mhaith leat an phostáil seo a scriosadh?", "confirmations.delete_list.confirm": "Delete", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 06cb820ce..92b8424fb 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -20,13 +20,16 @@ "account.block_domain": "Bac an àrainn {domain}", "account.blocked": "’Ga bhacadh", "account.browse_more_on_origin_server": "Rùraich barrachd dheth air a’ phròifil thùsail", - "account.cancel_follow_request": "Sguir dhen iarrtas leantainn", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Cuir teachdaireachd dhìreach gu @{name}", "account.disable_notifications": "Na cuir brath thugam tuilleadh nuair a chuireas @{name} post ris", "account.domain_blocked": "Chaidh an àrainn a bhacadh", "account.edit_profile": "Deasaich a’ phròifil", "account.enable_notifications": "Cuir brath thugam nuair a chuireas @{name} post ris", "account.endorse": "Brosnaich air a’ phròifil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Lean air", "account.followers": "Luchd-leantainn", "account.followers.empty": "Chan eil neach sam bith a’ leantainn air a’ chleachdaiche seo fhathast.", @@ -64,7 +67,7 @@ "account_note.placeholder": "Briog airson nòta a chur ris", "admin.dashboard.daily_retention": "Reat glèidheadh nan cleachdaichean às dèidh an clàradh a-rèir latha", "admin.dashboard.monthly_retention": "Reat glèidheadh nan cleachdaichean às dèidh an clàradh a-rèir mìos", - "admin.dashboard.retention.average": "Średnia", + "admin.dashboard.retention.average": "Cuibheasach", "admin.dashboard.retention.cohort": "Mìos a’ chlàraidh", "admin.dashboard.retention.cohort_size": "Cleachdaichean ùra", "alert.rate_limited.message": "Feuch ris a-rithist às dèidh {retry_time, time, medium}.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Bac ⁊ dèan gearan", "confirmations.block.confirm": "Bac", "confirmations.block.message": "A bheil thu cinnteach gu bheil thu airson {name} a bhacadh?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Sguab às", "confirmations.delete.message": "A bheil thu cinnteach gu bheil thu airson am post seo a sguabadh às?", "confirmations.delete_list.confirm": "Sguab às", @@ -157,7 +162,7 @@ "conversation.delete": "Sguab às an còmhradh", "conversation.mark_as_read": "Cuir comharra gun deach a leughadh", "conversation.open": "Seall an còmhradh", - "conversation.with": "Le {names}", + "conversation.with": "Còmhla ri {names}", "copypaste.copied": "Copied", "copypaste.copy": "Copy", "directory.federated": "On cho-shaoghal aithnichte", @@ -526,7 +531,7 @@ "status.bookmark": "Cuir ris na comharran-lìn", "status.cancel_reblog_private": "Na brosnaich tuilleadh", "status.cannot_reblog": "Cha ghabh am post seo brosnachadh", - "status.copy": "Dèan lethbhreac dhen cheangal air a’ phost", + "status.copy": "Dèan lethbhreac dhen cheangal dhan phost", "status.delete": "Sguab às", "status.detailed_status": "Mion-shealladh a’ chòmhraidh", "status.direct": "Cuir teachdaireachd dhìreach gu @{name}", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 877a1dda5..00e6ce9c0 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Servidores moderados", + "about.contact": "Contacto:", + "about.domain_blocks.comment": "Razón", + "about.domain_blocks.domain": "Dominio", + "about.domain_blocks.preamble": "Mastodon de xeito xeral permíteche ver contidos doutros servidores do fediverso e interactuar coas súas usuarias. Estas son as excepcións que se estabeleceron neste servidor en particular.", + "about.domain_blocks.severity": "Rigurosidade", + "about.domain_blocks.silenced.explanation": "Por defecto non verás perfís e contido desde este servidor, a menos que mires de xeito explícito ou optes por seguir ese contido ou usuaria.", + "about.domain_blocks.silenced.title": "Limitada", + "about.domain_blocks.suspended.explanation": "Non se procesarán, almacenarán nin intercambiarán datos con este servidor, o que fai imposible calquera interacción ou comunicación coas usuarias deste servidor.", + "about.domain_blocks.suspended.title": "Suspendida", + "about.not_available": "Esta información non está dispoñible neste servidor.", + "about.powered_by": "Comunicación social descentralizada grazas a {mastodon}", + "about.rules": "Regras do servidor", "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Engadir ou eliminar das listaxes", "account.badges.bot": "Bot", @@ -20,13 +20,16 @@ "account.block_domain": "Agochar todo de {domain}", "account.blocked": "Bloqueada", "account.browse_more_on_origin_server": "Busca máis no perfil orixinal", - "account.cancel_follow_request": "Desbotar solicitude de seguimento", + "account.cancel_follow_request": "Retirar solicitude de seguimento", "account.direct": "Mensaxe directa a @{name}", "account.disable_notifications": "Deixar de notificarme cando @{name} publica", "account.domain_blocked": "Dominio agochado", "account.edit_profile": "Editar perfil", "account.enable_notifications": "Noficarme cando @{name} publique", "account.endorse": "Amosar no perfil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Seguir", "account.followers": "Seguidoras", "account.followers.empty": "Aínda ninguén segue esta usuaria.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Bloquear e denunciar", "confirmations.block.confirm": "Bloquear", "confirmations.block.message": "Tes a certeza de querer bloquear a {name}?", + "confirmations.cancel_follow_request.confirm": "Retirar solicitude", + "confirmations.cancel_follow_request.message": "Tes a certeza de querer retirar a solicitude para seguir a {name}?", "confirmations.delete.confirm": "Eliminar", "confirmations.delete.message": "Tes a certeza de querer eliminar esta publicación?", "confirmations.delete_list.confirm": "Eliminar", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 6aeb0a47d..dfbf30a45 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -20,13 +20,16 @@ "account.block_domain": "חסמו את קהילת {domain}", "account.blocked": "לחסום", "account.browse_more_on_origin_server": "ראה יותר בפרופיל המקורי", - "account.cancel_follow_request": "בטל בקשת מעקב", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "הודעה ישירה ל@{name}", "account.disable_notifications": "הפסק לשלוח לי התראות כש@{name} מפרסמים", "account.domain_blocked": "הדומיין חסום", "account.edit_profile": "עריכת פרופיל", "account.enable_notifications": "שלח לי התראות כש@{name} מפרסם", "account.endorse": "קדם את החשבון בפרופיל", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "עקוב", "account.followers": "עוקבים", "account.followers.empty": "אף אחד לא עוקב אחר המשתמש הזה עדיין.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "לחסום ולדווח", "confirmations.block.confirm": "לחסום", "confirmations.block.message": "האם את/ה בטוח/ה שברצונך למחוק את \"{name}\"?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "למחוק", "confirmations.delete.message": "בטוח/ה שאת/ה רוצה למחוק את ההודעה?", "confirmations.delete_list.confirm": "למחוק", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index 083162876..a60aa04d9 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -20,13 +20,16 @@ "account.block_domain": "{domain} के सारी चीज़े छुपाएं", "account.blocked": "ब्लॉक", "account.browse_more_on_origin_server": "मूल प्रोफ़ाइल पर अधिक ब्राउज़ करें", - "account.cancel_follow_request": "फ़ॉलो रिक्वेस्ट रद्द करें", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "प्रत्यक्ष संदेश @{name}", "account.disable_notifications": "@{name} पोस्ट के लिए मुझे सूचित मत करो", "account.domain_blocked": "छिपा हुआ डोमेन", "account.edit_profile": "प्रोफ़ाइल संपादित करें", "account.enable_notifications": "जब @{name} पोस्ट मौजूद हो सूचित करें", "account.endorse": "प्रोफ़ाइल पर दिखाए", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "फॉलो करें", "account.followers": "फॉलोवर", "account.followers.empty": "कोई भी इस यूज़र् को फ़ॉलो नहीं करता है", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "ब्लॉक एवं रिपोर्ट", "confirmations.block.confirm": "ब्लॉक", "confirmations.block.message": "क्या आप वाकई {name} को ब्लॉक करना चाहते हैं?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "मिटाए", "confirmations.delete.message": "क्या आप वाकई इस स्टेटस को हटाना चाहते हैं?", "confirmations.delete_list.confirm": "मिटाए", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index 95d38e7b1..86f9cd0de 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -20,13 +20,16 @@ "account.block_domain": "Blokiraj domenu {domain}", "account.blocked": "Blokirano", "account.browse_more_on_origin_server": "Pogledajte više na izvornom profilu", - "account.cancel_follow_request": "Otkaži zahtjev za praćenje", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Pošalji poruku @{name}", "account.disable_notifications": "Nemoj me obavjestiti kada @{name} napravi objavu", "account.domain_blocked": "Domena je blokirana", "account.edit_profile": "Uredi profil", "account.enable_notifications": "Obavjesti me kada @{name} napravi objavu", "account.endorse": "Istakni na profilu", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Prati", "account.followers": "Pratitelji", "account.followers.empty": "Nitko još ne prati korisnika/cu.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blokiraj i prijavi", "confirmations.block.confirm": "Blokiraj", "confirmations.block.message": "Sigurno želite blokirati {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Obriši", "confirmations.delete.message": "Stvarno želite obrisati ovaj toot?", "confirmations.delete_list.confirm": "Obriši", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index cb554133c..aa5660ff8 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", + "about.blocks": "Moderált kiszolgálók", + "about.contact": "Kapcsolat:", + "about.domain_blocks.comment": "Indoklás", "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.domain_blocks.preamble": "A Mastodon általában mindenféle tartalomcserét és interakciót lehetővé tesz bármelyik másik kiszolgálóval a födiverzumban. Ezek azok a kivételek, amelyek a mi kiszolgálónkon érvényben vannak.", + "about.domain_blocks.severity": "Súlyosság", + "about.domain_blocks.silenced.explanation": "Általában nem fogsz profilokat és tartalmat látni erről a kiszolgálóról, hacsak közvetlenül fel nem keresed vagy követed.", + "about.domain_blocks.silenced.title": "Korlátozott", + "about.domain_blocks.suspended.explanation": "A kiszolgáló adatai nem lesznek feldolgozva, tárolva vagy megosztva, lehetetlenné téve mindennemű interakciót és kommunikációt a kiszolgáló felhasználóival.", + "about.domain_blocks.suspended.title": "Felfüggesztett", + "about.not_available": "Ez az információ nem lett közzétéve ezen a kiszolgálón.", + "about.powered_by": "Decentralizált közösségi média a {mastodon} segítségével", + "about.rules": "Kiszolgáló szabályai", "account.account_note_header": "Jegyzet", "account.add_or_remove_from_list": "Hozzáadás vagy eltávolítás a listákról", "account.badges.bot": "Bot", @@ -20,13 +20,16 @@ "account.block_domain": "Domain blokkolása: {domain}", "account.blocked": "Letiltva", "account.browse_more_on_origin_server": "Böngéssz tovább az eredeti profilon", - "account.cancel_follow_request": "Követési kérelem visszavonása", + "account.cancel_follow_request": "Követési kérés visszavonása", "account.direct": "Közvetlen üzenet @{name} számára", "account.disable_notifications": "Ne figyelmeztessen, ha @{name} bejegyzést tesz közzé", "account.domain_blocked": "Letiltott domain", "account.edit_profile": "Profil szerkesztése", "account.enable_notifications": "Figyelmeztessen, ha @{name} bejegyzést tesz közzé", "account.endorse": "Kiemelés a profilodon", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Követés", "account.followers": "Követő", "account.followers.empty": "Ezt a felhasználót még senki sem követi.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Letiltás és jelentés", "confirmations.block.confirm": "Letiltás", "confirmations.block.message": "Biztos, hogy letiltod: {name}?", + "confirmations.cancel_follow_request.confirm": "Kérés visszavonása", + "confirmations.cancel_follow_request.message": "Biztos, hogy visszavonod a(z) {name} felhasználóra vonatkozó követési kérésedet?", "confirmations.delete.confirm": "Törlés", "confirmations.delete.message": "Biztos, hogy törölni szeretnéd ezt a bejegyzést?", "confirmations.delete_list.confirm": "Törlés", @@ -169,7 +174,7 @@ "dismissable_banner.explore_links": "Jelenleg ezekről a hírekről beszélgetnek az ezen és a decentralizált hálózat többi kiszolgálóján lévő emberek.", "dismissable_banner.explore_statuses": "Jelenleg ezek a bejegyzések hódítanak teret ezen és a decentralizált hálózat egyéb kiszolgálóin.", "dismissable_banner.explore_tags": "Jelenleg ezek a hashtagek hódítanak teret ezen és a decentralizált hálózat többi kiszolgálóján lévő emberek körében.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.public_timeline": "Ezek a legfrissebb bejegyzések azoktól, akik a decentralizált hálózat más kiszolgálóin vannak, és ez a kiszolgáló tud róluk.", "embed.instructions": "Ágyazd be ezt a bejegyzést a weboldaladba az alábbi kód kimásolásával.", "embed.preview": "Így fog kinézni:", "emoji_button.activity": "Tevékenység", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index f97c5296b..69749098a 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -20,13 +20,16 @@ "account.block_domain": "Թաքցնել ամէնը հետեւեալ տիրոյթից՝ {domain}", "account.blocked": "Արգելափակուած է", "account.browse_more_on_origin_server": "Դիտել աւելին իրական պրոֆիլում", - "account.cancel_follow_request": "չեղարկել հետեւելու հայցը", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Նամակ գրել @{name} -ին", "account.disable_notifications": "Ծանուցումները անջատել @{name} գրառումների համար", "account.domain_blocked": "Տիրոյթը արգելափակուած է", "account.edit_profile": "Խմբագրել անձնական էջը", "account.enable_notifications": "Ծանուցել ինձ @{name} գրառումների մասին", "account.endorse": "Ցուցադրել անձնական էջում", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Հետեւել", "account.followers": "Հետեւողներ", "account.followers.empty": "Այս օգտատիրոջը դեռ ոչ մէկ չի հետեւում։", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Արգելափակել եւ բողոքել", "confirmations.block.confirm": "Արգելափակել", "confirmations.block.message": "Վստա՞հ ես, որ ուզում ես արգելափակել {name}֊ին։", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Ջնջել", "confirmations.delete.message": "Վստա՞հ ես, որ ուզում ես ջնջել այս գրառումը։", "confirmations.delete_list.confirm": "Ջնջել", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 23d80823a..195dc793e 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -20,13 +20,16 @@ "account.block_domain": "Blokir domain {domain}", "account.blocked": "Terblokir", "account.browse_more_on_origin_server": "Lihat lebih lanjut diprofil asli", - "account.cancel_follow_request": "Batalkan permintaan ikuti", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Pesan Langsung @{name}", "account.disable_notifications": "Berhenti memberitahu saya ketika @{name} memposting", "account.domain_blocked": "Domain diblokir", "account.edit_profile": "Ubah profil", "account.enable_notifications": "Beritahu saya saat @{name} memposting", "account.endorse": "Tampilkan di profil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Ikuti", "account.followers": "Pengikut", "account.followers.empty": "Pengguna ini belum ada pengikut.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blokir & Laporkan", "confirmations.block.confirm": "Blokir", "confirmations.block.message": "Apa anda yakin ingin memblokir {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Hapus", "confirmations.delete.message": "Apa anda yakin untuk menghapus status ini?", "confirmations.delete_list.confirm": "Hapus", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index ec0a99584..b0f379898 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Jerata servili", + "about.contact": "Kontaktajo:", + "about.domain_blocks.comment": "Motivo", + "about.domain_blocks.domain": "Domeno", + "about.domain_blocks.preamble": "Mastodon generale permisas on vidar kontenajo e interagar kun uzanti de irga altra servilo en fediverso. Existas eceptioni quo facesis che ca partikulara servilo.", + "about.domain_blocks.severity": "Severeso", + "about.domain_blocks.silenced.explanation": "On generale ne vidar profili e kontenajo de ca servilo, se on ne reale trovar o voluntale juntar per sequar.", + "about.domain_blocks.silenced.title": "Limitizita", + "about.domain_blocks.suspended.explanation": "Nula informi de ca servili procedagesos o retenesos o interchanjesos, do irga interago o komuniko kun uzanti de ca servili esas neposibla.", + "about.domain_blocks.suspended.title": "Restriktita", + "about.not_available": "Ca informo ne igesis che ca servilo.", + "about.powered_by": "Necentraligita sociala ret quo povigesas da {mastodon}", + "about.rules": "Servilreguli", "account.account_note_header": "Noto", "account.add_or_remove_from_list": "Insertez o removez de listi", "account.badges.bot": "Boto", @@ -20,13 +20,16 @@ "account.block_domain": "Hide everything from {domain}", "account.blocked": "Restriktita", "account.browse_more_on_origin_server": "Videz pluse che originala profilo", - "account.cancel_follow_request": "Removez sequodemando", + "account.cancel_follow_request": "Desendez sequodemando", "account.direct": "Direct Message @{name}", "account.disable_notifications": "Cesez avizar me kande @{name} postas", "account.domain_blocked": "Domain hidden", "account.edit_profile": "Modifikar profilo", "account.enable_notifications": "Avizez me kande @{name} postas", "account.endorse": "Traito di profilo", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Sequar", "account.followers": "Sequanti", "account.followers.empty": "Nulu sequas ca uzanto til nun.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Restriktez e Raportizez", "confirmations.block.confirm": "Restriktez", "confirmations.block.message": "Ka vu certe volas restrikar {name}?", + "confirmations.cancel_follow_request.confirm": "Desendez demando", + "confirmations.cancel_follow_request.message": "Ka vu certe volas desendar vua demando di sequar {name}?", "confirmations.delete.confirm": "Efacez", "confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete_list.confirm": "Efacez", @@ -158,18 +163,18 @@ "conversation.mark_as_read": "Markizez quale lektita", "conversation.open": "Videz konverso", "conversation.with": "Kun {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Kopiesis", + "copypaste.copy": "Kopiez", "directory.federated": "De savita fediverso", "directory.local": "De {domain} nur", "directory.new_arrivals": "Nova venanti", "directory.recently_active": "Recenta aktivo", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "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_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "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": "Ca posti de ca e altra servili en la necentraligita situo bezonas plu famoza che ca servilo nun.", + "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": "Co esas maxim recenta publika posti de personi en ca e altra servili di la necentraligita situo quo savesas da ca servilo.", "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Co esas quon ol semblos tale:", "emoji_button.activity": "Ago", @@ -267,18 +272,18 @@ "home.column_settings.show_replies": "Montrar respondi", "home.hide_announcements": "Celez anunci", "home.show_announcements": "Montrez anunci", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Per konto che Mastodon, vu povas favorizar ca posto por savigar postero ke vu gratitudizar lu e retenar por la futuro.", + "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.reply": "Per konto che Mastodon, vu povas respondar ca posto.", + "interaction_modal.on_another_server": "Che diferanta servilo", + "interaction_modal.on_this_server": "Che ca servilo", + "interaction_modal.other_server_instructions": "Jus kopiez e glutinar ca URL a trovbuxo di vua favorata softwaro o retintervizajo en vua ekirsituo.", + "interaction_modal.preamble": "Pro ke Mastodon esas necentraligita, on povas uzar vua havata konto quo hostigesas altra servilo di Mastodon o konciliebla metodo se on ne havas konto hike.", + "interaction_modal.title.favourite": "Favorata posto di {name}", + "interaction_modal.title.follow": "Sequez {name}", + "interaction_modal.title.reblog": "Bustizez 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}}", @@ -437,8 +442,8 @@ "privacy.public.short": "Publike", "privacy.unlisted.long": "Videbla da omnu ma voluntala ne inkluzas deskovrotraiti", "privacy.unlisted.short": "Ne enlistigota", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Antea novajo ye {date}", + "privacy_policy.title": "Privatesguidilo", "refresh": "Rifreshez", "regeneration_indicator.label": "Chargas…", "regeneration_indicator.sublabel": "Vua hemniuzeto preparesas!", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index c79d3d67e..0db7690dd 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Netþjónar með efnisumsjón", + "about.contact": "Hafa samband:", + "about.domain_blocks.comment": "Ástæða", + "about.domain_blocks.domain": "Lén", + "about.domain_blocks.preamble": "Mastodon leyfir þér almennt að skoða og eiga við efni frá notendum frá hvaða vefþjóni sem er í vefþjónasambandinu. Þetta eru þær undantekningar sem hafa verið gerðar á þessum tiltekna vefþjóni.", + "about.domain_blocks.severity": "Mikilvægi", + "about.domain_blocks.silenced.explanation": "Þú munt almennt ekki sjá notandasnið og efni af þessum netþjóni nema þú flettir því upp sérstaklega eða veljir að fylgjast með því.", + "about.domain_blocks.silenced.title": "Takmarkað", + "about.domain_blocks.suspended.explanation": "Engin gögn frá þessum vefþjóni verða unnin, geymd eða skipst á, sem gerir samskipti við notendur frá þessum vefþjóni ómöguleg.", + "about.domain_blocks.suspended.title": "Í bið", + "about.not_available": "Þessar upplýsingar hafa ekki verið gerðar aðgengilegar á þessum netþjóni.", + "about.powered_by": "Dreihýstur samskiptamiðill keyrður með {mastodon}", + "about.rules": "Reglur netþjónsins", "account.account_note_header": "Minnispunktur", "account.add_or_remove_from_list": "Bæta við eða fjarlægja af listum", "account.badges.bot": "Vélmenni", @@ -20,13 +20,16 @@ "account.block_domain": "Útiloka lénið {domain}", "account.blocked": "Útilokaður", "account.browse_more_on_origin_server": "Skoða nánari upplýsingar á notandasniðinu", - "account.cancel_follow_request": "Hætta við beiðni um að fylgjas", + "account.cancel_follow_request": "Taka fylgjendabeiðni til baka", "account.direct": "Bein skilaboð til @{name}", "account.disable_notifications": "Hætta að láta mig vita þegar @{name} sendir inn", "account.domain_blocked": "Lén útilokað", "account.edit_profile": "Breyta notandasniði", "account.enable_notifications": "Láta mig vita þegar @{name} sendir inn", "account.endorse": "Birta á notandasniði", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Fylgjast með", "account.followers": "Fylgjendur", "account.followers.empty": "Ennþá fylgist enginn með þessum notanda.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Útiloka og kæra", "confirmations.block.confirm": "Útiloka", "confirmations.block.message": "Ertu viss um að þú viljir loka á {name}?", + "confirmations.cancel_follow_request.confirm": "Taka beiðni til baka", + "confirmations.cancel_follow_request.message": "Ertu viss um að þú viljir taka til baka beiðnina um að fylgjast með {name}?", "confirmations.delete.confirm": "Eyða", "confirmations.delete.message": "Ertu viss um að þú viljir eyða þessari færslu?", "confirmations.delete_list.confirm": "Eyða", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 44542415e..ccaa7d3e6 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Server moderati", + "about.contact": "Contatto:", + "about.domain_blocks.comment": "Motivo", + "about.domain_blocks.domain": "Dominio", + "about.domain_blocks.preamble": "Mastodon, generalmente, ti consente di visualizzare i contenuti e interagire con gli utenti da qualsiasi altro server nel fediverso. Queste sono le eccezioni che sono state fatte su questo particolare server.", + "about.domain_blocks.severity": "Gravità", + "about.domain_blocks.silenced.explanation": "Generalmente non vedrai i profili e i contenuti di questo server, a meno che tu non lo cerchi esplicitamente o che tu scelga di seguirlo.", + "about.domain_blocks.silenced.title": "Silenziato", + "about.domain_blocks.suspended.explanation": "Nessun dato proveniente da questo server verrà elaborato, conservato o scambiato, rendendo impossibile qualsiasi interazione o comunicazione con gli utenti da questo server.", + "about.domain_blocks.suspended.title": "Sospeso", + "about.not_available": "Queste informazioni non sono state rese disponibili su questo server.", + "about.powered_by": "Social media decentralizzati alimentati da {mastodon}", + "about.rules": "Regole del server", "account.account_note_header": "Le tue note sull'utente", "account.add_or_remove_from_list": "Aggiungi o togli dalle liste", "account.badges.bot": "Bot", @@ -20,13 +20,16 @@ "account.block_domain": "Blocca dominio {domain}", "account.blocked": "Bloccato", "account.browse_more_on_origin_server": "Sfoglia di più sul profilo originale", - "account.cancel_follow_request": "Annulla richiesta di seguire", + "account.cancel_follow_request": "Annulla la richiesta di seguire", "account.direct": "Messaggio diretto a @{name}", "account.disable_notifications": "Smetti di avvisarmi quando @{name} pubblica un post", "account.domain_blocked": "Dominio bloccato", "account.edit_profile": "Modifica profilo", "account.enable_notifications": "Avvisami quando @{name} pubblica un post", "account.endorse": "Metti in evidenza sul profilo", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Segui", "account.followers": "Follower", "account.followers.empty": "Nessuno segue ancora questo utente.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blocca & Segnala", "confirmations.block.confirm": "Blocca", "confirmations.block.message": "Sei sicuro di voler bloccare {name}?", + "confirmations.cancel_follow_request.confirm": "Annulla la richiesta", + "confirmations.cancel_follow_request.message": "Sei sicuro di voler annullare la tua richiesta per seguire {name}?", "confirmations.delete.confirm": "Cancella", "confirmations.delete.message": "Sei sicuro di voler cancellare questo post?", "confirmations.delete_list.confirm": "Cancella", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index d2745aa5b..f48f29551 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", + "about.blocks": "制限中のサーバー", + "about.contact": "連絡先", + "about.domain_blocks.comment": "制限理由", + "about.domain_blocks.domain": "ドメイン", + "about.domain_blocks.preamble": "Mastodonでは連合先のどのようなサーバーのユーザーとも交流できます。ただし次のサーバーには例外が設定されています。", + "about.domain_blocks.severity": "重大性", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.domain_blocks.silenced.title": "制限", + "about.domain_blocks.suspended.explanation": "これらのサーバーからのデータは処理されず、保存や変換もされません。該当するユーザーとの交流もできません。", + "about.domain_blocks.suspended.title": "停止済み", + "about.not_available": "この情報はこのサーバーでは利用できません。", + "about.powered_by": "{mastodon}による分散型ソーシャルメディア", + "about.rules": "サーバーのルール", "account.account_note_header": "メモ", "account.add_or_remove_from_list": "リストから追加または外す", "account.badges.bot": "Bot", @@ -20,13 +20,16 @@ "account.block_domain": "{domain}全体をブロック", "account.blocked": "ブロック済み", "account.browse_more_on_origin_server": "リモートで表示", - "account.cancel_follow_request": "フォローリクエストを取り消す", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "@{name}さんにダイレクトメッセージ", "account.disable_notifications": "@{name}さんの投稿時の通知を停止", "account.domain_blocked": "ドメインブロック中", "account.edit_profile": "プロフィール編集", "account.enable_notifications": "@{name}さんの投稿時に通知", "account.endorse": "プロフィールで紹介する", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "フォロー", "account.followers": "フォロワー", "account.followers.empty": "まだ誰もフォローしていません。", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "ブロックし通報", "confirmations.block.confirm": "ブロック", "confirmations.block.message": "本当に{name}さんをブロックしますか?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "削除", "confirmations.delete.message": "本当に削除しますか?", "confirmations.delete_list.confirm": "削除", @@ -167,7 +172,7 @@ "dismissable_banner.community_timeline": "これらは{domain}がホストしている人たちの最新の公開投稿です。", "dismissable_banner.dismiss": "閉じる", "dismissable_banner.explore_links": "これらのニュース記事は現在分散型ネットワークの他のサーバーの人たちに話されています。", - "dismissable_banner.explore_statuses": "分散化ネットワーク内の他のサーバーのこれらの投稿は現在このサーバー上で注目されています。", + "dismissable_banner.explore_statuses": "分散型ネットワーク内の他のサーバーのこれらの投稿は現在このサーバー上で注目されています。", "dismissable_banner.explore_tags": "これらのハッシュタグは現在分散型ネットワークの他のサーバーの人たちに話されています。", "dismissable_banner.public_timeline": "これらの投稿はこのサーバーが知っている分散型ネットワークの他のサーバーの人たちの最新の公開投稿です。", "embed.instructions": "下記のコードをコピーしてウェブサイトに埋め込みます。", @@ -591,7 +596,7 @@ "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} days}}", + "trends.counter_by_accounts": "過去{days, plural, one {{days}日} other {{days}日}}に{count, plural, one {{counter}人} other {{counter} 人}}", "trends.trending_now": "トレンドタグ", "ui.beforeunload": "Mastodonから離れると送信前の投稿は失われます。", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index b33ed4fc5..a66d93f00 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -20,13 +20,16 @@ "account.block_domain": "დაიმალოს ყველაფერი დომენიდან {domain}", "account.blocked": "დაიბლოკა", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "პირდაპირი წერილი @{name}-ს", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "დომენი დამალულია", "account.edit_profile": "პროფილის ცვლილება", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "გამორჩევა პროფილზე", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "გაყოლა", "account.followers": "მიმდევრები", "account.followers.empty": "No one follows this user yet.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "ბლოკი", "confirmations.block.message": "დარწმუნებული ხართ, გსურთ დაბლოკოთ {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "გაუქმება", "confirmations.delete.message": "დარწმუნებული ხართ, გსურთ გააუქმოთ ეს სტატუსი?", "confirmations.delete_list.confirm": "გაუქმება", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 09b6333cd..b5b8cb3c6 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -20,13 +20,16 @@ "account.block_domain": "Ffer kra i d-yekkan seg {domain}", "account.blocked": "Yettusewḥel", "account.browse_more_on_origin_server": "Snirem ugar deg umeɣnu aneẓli", - "account.cancel_follow_request": "Sefsex asuter n uḍfar", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Izen usrid i @{name}", "account.disable_notifications": "Ḥbes ur iyi-d-ttazen ara ilɣa mi ara d-isuffeɣ @{name}", "account.domain_blocked": "Taɣult yeffren", "account.edit_profile": "Ẓreg amaɣnu", "account.enable_notifications": "Azen-iyi-d ilɣa mi ara d-isuffeɣ @{name}", "account.endorse": "Welleh fell-as deg umaɣnu-inek", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Ḍfer", "account.followers": "Imeḍfaren", "account.followers.empty": "Ar tura, ulac yiwen i yeṭṭafaṛen amseqdac-agi.", @@ -46,13 +49,13 @@ "account.mute": "Sgugem @{name}", "account.mute_notifications": "Sgugem tilɣa sγur @{name}", "account.muted": "Yettwasgugem", - "account.posts": "Tijewwaqin", - "account.posts_with_replies": "Tijewwaqin akked tririyin", + "account.posts": "Tisuffaɣ", + "account.posts_with_replies": "Tisuffaɣ d tririyin", "account.report": "Cetki ɣef @{name}", "account.requested": "Di laɛḍil ad yettwaqbel. Ssit i wakken ad yefsex usuter n uḍfar", "account.share": "Bḍu amaɣnu n @{name}", "account.show_reblogs": "Ssken-d inebḍa n @{name}", - "account.statuses_counter": "{count, plural, one {{counter} ajewwaq} other {{counter} ijewwaqen}}", + "account.statuses_counter": "{count, plural, one {{counter} n tsuffeɣt} other {{counter} n tsuffaɣ}}", "account.unblock": "Serreḥ i @{name}", "account.unblock_domain": "Ssken-d {domain}", "account.unblock_short": "Unblock", @@ -82,11 +85,11 @@ "bundle_modal_error.close": "Mdel", "bundle_modal_error.message": "Tella-d kra n tuccḍa mi d-yettali ugbur-agi.", "bundle_modal_error.retry": "Ɛreḍ tikelt-nniḍen", - "column.about": "About", + "column.about": "Γef", "column.blocks": "Imiḍanen yettusḥebsen", "column.bookmarks": "Ticraḍ", "column.community": "Tasuddemt tadigant", - "column.direct": "Direct messages", + "column.direct": "Iznan usriden", "column.directory": "Inig deg imaɣnuten", "column.domain_blocks": "Taɣulin yeffren", "column.favourites": "Ismenyifen", @@ -108,8 +111,8 @@ "community.column_settings.local_only": "Adigan kan", "community.column_settings.media_only": "Allal n teywalt kan", "community.column_settings.remote_only": "Anmeggag kan", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "Beddel tutlayt", + "compose.language.search": "Nadi tutlayin …", "compose_form.direct_message_warning_learn_more": "Issin ugar", "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 toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", @@ -127,14 +130,16 @@ "compose_form.save_changes": "Sekles ibeddilen", "compose_form.sensitive.hide": "Creḍ allal n teywalt d anafri", "compose_form.sensitive.marked": "Allal n teywalt yettwacreḍ d anafri", - "compose_form.sensitive.unmarked": "Allal n teywalt ur yettwacreḍ ara d anafri", - "compose_form.spoiler.marked": "Aḍris yeffer deffir n walɣu", - "compose_form.spoiler.unmarked": "Aḍris ur yettwaffer ara", - "compose_form.spoiler_placeholder": "Aru alɣu-inek da", + "compose_form.sensitive.unmarked": "{count, plural, one {Amidya ur yettwacreḍ ara d anafri} other {Imidyaten ur ttwacreḍen ara d inafriyen}}", + "compose_form.spoiler.marked": "Kkes aḍris yettwaffren deffir n walɣu", + "compose_form.spoiler.unmarked": "Rnu aḍris yettwaffren deffir n walɣu", + "compose_form.spoiler_placeholder": "Aru alɣu-inek·inem da", "confirmation_modal.cancel": "Sefsex", "confirmations.block.block_and_report": "Sewḥel & sewɛed", "confirmations.block.confirm": "Sewḥel", "confirmations.block.message": "Tebγiḍ s tidet ad tesḥebseḍ {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Kkes", "confirmations.delete.message": "Tebɣiḍ s tidet ad tekkseḍ tasuffeɣt-agi?", "confirmations.delete_list.confirm": "Kkes", @@ -159,7 +164,7 @@ "conversation.open": "Ssken adiwenni", "conversation.with": "Akked {names}", "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copy": "Nγel", "directory.federated": "Deg fedivers yettwasnen", "directory.local": "Seg {domain} kan", "directory.new_arrivals": "Imaynuten id yewḍen", @@ -216,7 +221,7 @@ "errors.unexpected_crash.report_issue": "Mmel ugur", "explore.search_results": "Search results", "explore.suggested_follows": "I kečč·kem", - "explore.title": "Explore", + "explore.title": "Snirem", "explore.trending_links": "News", "explore.trending_statuses": "Tisuffaɣ", "explore.trending_tags": "Ihacṭagen", @@ -344,13 +349,13 @@ "mute_modal.duration": "Tanzagt", "mute_modal.hide_notifications": "Tebɣiḍ ad teffreḍ talɣutin n umseqdac-a?", "mute_modal.indefinite": "Ur yettwasbadu ara", - "navigation_bar.about": "About", + "navigation_bar.about": "Γef", "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Imseqdacen yettusḥebsen", "navigation_bar.bookmarks": "Ticraḍ", "navigation_bar.community_timeline": "Tasuddemt tadigant", "navigation_bar.compose": "Aru tajewwiqt tamaynut", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Iznan usridden", "navigation_bar.discover": "Ẓer", "navigation_bar.domain_blocks": "Tiɣula yeffren", "navigation_bar.edit_profile": "Ẓreg amaɣnu", @@ -359,7 +364,7 @@ "navigation_bar.filters": "Awalen i yettwasgugmen", "navigation_bar.follow_requests": "Isuturen n teḍfeṛt", "navigation_bar.follows_and_followers": "Imeḍfaṛen akked wid i teṭṭafaṛeḍ", - "navigation_bar.info": "About", + "navigation_bar.info": "Γef", "navigation_bar.keyboard_shortcuts": "Inegzumen n unasiw", "navigation_bar.lists": "Tibdarin", "navigation_bar.logout": "Ffeɣ", @@ -515,7 +520,7 @@ "server_banner.active_users": "active users", "server_banner.administered_by": "Administered by:", "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", + "server_banner.learn_more": "Issin ugar", "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", @@ -532,7 +537,7 @@ "status.direct": "Izen usrid i @{name}", "status.edit": "Ẓreg", "status.edited": "Tettwaẓreg deg {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edited_x_times": "Tettwaẓreg {count, plural, one {{count} n tikkelt} other {{count} n tikkal}}", "status.embed": "Seddu", "status.favourite": "Rnu ɣer yismenyifen", "status.filter": "Filter this post", @@ -568,13 +573,13 @@ "status.show_more_all": "Ẓerr ugar lebda", "status.show_original": "Show original", "status.show_thread": "Ssken-d lxiḍ", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Suqel", + "status.translated_from": "Yettwasuqel seg {lang}", "status.uncached_media_warning": "Ulac-it", "status.unmute_conversation": "Kkes asgugem n udiwenni", "status.unpin": "Kkes asenteḍ seg umaɣnu", "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", + "subscribed_languages.save": "Sekles ibeddilen", "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Sefsex asumer", "suggestions.header": "Ahat ad tcelgeḍ deg…", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index 9d086ef2c..7017467b3 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -20,13 +20,16 @@ "account.block_domain": "Домендегі барлығын бұғатта {domain}", "account.blocked": "Бұғатталды", "account.browse_more_on_origin_server": "Толығырақ оригинал профилінде қара", - "account.cancel_follow_request": "Жазылуға сұранымды қайтару", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Жеке хат @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Домен жабық", "account.edit_profile": "Профильді өңдеу", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Профильде рекомендеу", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Жазылу", "account.followers": "Оқырмандар", "account.followers.empty": "Әлі ешкім жазылмаған.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Блок және Шағым", "confirmations.block.confirm": "Бұғаттау", "confirmations.block.message": "{name} атты қолданушыны бұғаттайтыныңызға сенімдісіз бе?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Өшіру", "confirmations.delete.message": "Бұл жазбаны өшіресіз бе?", "confirmations.delete_list.confirm": "Өшіру", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index 2856c9ffe..d266d3492 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -20,13 +20,16 @@ "account.block_domain": "Hide everything from {domain}", "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Direct message @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain hidden", "account.edit_profile": "Edit profile", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Feature on profile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "ಹಿಂಬಾಲಿಸಿ", "account.followers": "ಹಿಂಬಾಲಕರು", "account.followers.empty": "No one follows this user yet.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "Block", "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Delete", "confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete_list.confirm": "Delete", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index ab5d538ab..34c86130f 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -1,17 +1,17 @@ { "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.contact": "연락처:", + "about.domain_blocks.comment": "사유", + "about.domain_blocks.domain": "도메인", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", + "about.domain_blocks.severity": "심각도", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", + "about.domain_blocks.silenced.title": "제한됨", + "about.domain_blocks.suspended.explanation": "이 서버의 어떤 데이터도 처리되거나, 저장 되거나 공유되지 않고, 이 서버의 어떤 유저와도 상호작용 하거나 대화할 수 없습니다.", + "about.domain_blocks.suspended.title": "정지됨", "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.powered_by": "{mastodon}에 의해 구동되는 분산화된 소셜 미디어", + "about.rules": "서버 규칙", "account.account_note_header": "노트", "account.add_or_remove_from_list": "리스트에 추가 혹은 삭제", "account.badges.bot": "봇", @@ -27,6 +27,9 @@ "account.edit_profile": "프로필 편집", "account.enable_notifications": "@{name} 의 게시물 알림 켜기", "account.endorse": "프로필에 추천하기", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "팔로우", "account.followers": "팔로워", "account.followers.empty": "아직 아무도 이 사용자를 팔로우하고 있지 않습니다.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "차단하고 신고하기", "confirmations.block.confirm": "차단", "confirmations.block.message": "정말로 {name}를 차단하시겠습니까?", + "confirmations.cancel_follow_request.confirm": "요청 무시", + "confirmations.cancel_follow_request.message": "정말 {name}님에 대한 팔로우 요청을 취소하시겠습니까?", "confirmations.delete.confirm": "삭제", "confirmations.delete.message": "정말로 이 게시물을 삭제하시겠습니까?", "confirmations.delete_list.confirm": "삭제", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index d0359f877..c6ecd3c95 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Rajekarên çavdêrkirî", + "about.contact": "Têkilî:", + "about.domain_blocks.comment": "Sedem", + "about.domain_blocks.domain": "Navper", + "about.domain_blocks.preamble": "Mastodon bi gelemperî dihêle ku tu naverokê bibînî û bi bikarhênerên ji rajekareke din a li fendiverse re têkilî dayne. Ev awaretyên ku li ser vê rajekara taybetî hatine çêkirin ev in.", + "about.domain_blocks.severity": "Asta girîngiyê", + "about.domain_blocks.silenced.explanation": "Heye ku tu bi awayekî vekirî lê negerî an jî bi şopandinê hilnebijêrî, tu yêbi giştî profîl û naverok ji vê rajekarê nebînî.", + "about.domain_blocks.silenced.title": "Sînorkirî", + "about.domain_blocks.suspended.explanation": "Dê tu daneya ji van rajekaran neyê berhev kirin, tomarkirin an jî guhertin, ku têkilî an danûstendinek bi bikarhênerên van rajekaran re tune dike.", + "about.domain_blocks.suspended.title": "Hatiye rawestandin", + "about.not_available": "Ev zanyarî li ser vê rajekarê nehatine peydakirin.", + "about.powered_by": "Medyaya civakî ya nenavendî bi hêzdariya {mastodon}", + "about.rules": "Rêbazên rajekar", "account.account_note_header": "Nîşe", "account.add_or_remove_from_list": "Tevlî bike an rake ji rêzokê", "account.badges.bot": "Bot", @@ -20,13 +20,16 @@ "account.block_domain": "{domain} navpar asteng bike", "account.blocked": "Astengkirî", "account.browse_more_on_origin_server": "Li pelên resen bêhtir bigere", - "account.cancel_follow_request": "Daxwaza şopandinê rake", + "account.cancel_follow_request": "Daxwaza şopandinê vekişîne", "account.direct": "Peyamekê bişîne @{name}", "account.disable_notifications": "Êdî min agahdar neke gava @{name} diweşîne", "account.domain_blocked": "Navper hate astengkirin", "account.edit_profile": "Profîlê serrast bike", "account.enable_notifications": "Min agahdar bike gava @{name} diweşîne", "account.endorse": "Taybetiyên li ser profîl", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Bişopîne", "account.followers": "Şopîner", "account.followers.empty": "Kesekî hin ev bikarhêner neşopandiye.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Asteng bike & ragihîne", "confirmations.block.confirm": "Asteng bike", "confirmations.block.message": "Ma tu dixwazî ku {name} asteng bikî?", + "confirmations.cancel_follow_request.confirm": "Daxwazê vekişîne", + "confirmations.cancel_follow_request.message": "Tu dixwazî ​​daxwaza xwe ya şopandina {name} vekşînî?", "confirmations.delete.confirm": "Jê bibe", "confirmations.delete.message": "Ma tu dixwazî vê şandiyê jê bibî?", "confirmations.delete_list.confirm": "Jê bibe", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index 1049c1c94..a1c19b183 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -20,13 +20,16 @@ "account.block_domain": "Lettya gorfarth {domain}", "account.blocked": "Lettys", "account.browse_more_on_origin_server": "Peuri moy y'n profil derowel", - "account.cancel_follow_request": "Dilea govyn holya", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Messach didro dhe @{name}", "account.disable_notifications": "Hedhi ow gwarnya pan wra @{name} postya", "account.domain_blocked": "Gorfarth lettys", "account.edit_profile": "Golegi profil", "account.enable_notifications": "Gwra ow gwarnya pan wra @{name} postya", "account.endorse": "Diskwedhes yn profil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Holya", "account.followers": "Holyoryon", "account.followers.empty": "Ny wra nagonan holya'n devnydhyer ma hwath.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Lettya & Reportya", "confirmations.block.confirm": "Lettya", "confirmations.block.message": "Owgh hwi sur a vynnes lettya {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Dilea", "confirmations.delete.message": "Owgh hwi sur a vynnes dilea'n post ma?", "confirmations.delete_list.confirm": "Dilea", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 54530b85b..bdb5b43d5 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -20,13 +20,16 @@ "account.block_domain": "Hide everything from {domain}", "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Direct message @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain hidden", "account.edit_profile": "Edit profile", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Feature on profile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Sekti", "account.followers": "Followers", "account.followers.empty": "No one follows this user yet.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "Block", "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Delete", "confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete_list.confirm": "Delete", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 8bf21b1cc..acf4911b5 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Moderētie serveri", + "about.contact": "Kontakts:", + "about.domain_blocks.comment": "Iemesls", + "about.domain_blocks.domain": "Domēns", + "about.domain_blocks.preamble": "Mastodon parasti ļauj apskatīt saturu un mijiedarboties ar lietotājiem no jebkura cita federācijas servera. Šie ir izņēmumi, kas veikti šajā konkrētajā serverī.", + "about.domain_blocks.severity": "Nozīmīgums", + "about.domain_blocks.silenced.explanation": "Parasti tu neredzēsi profilus un saturu no šī servera, ja vien tu nepārprotami izvēlēsies to pārskatīt vai sekot.", + "about.domain_blocks.silenced.title": "Ierobežotās", + "about.domain_blocks.suspended.explanation": "Nekādi dati no šī servera netiks apstrādāti, uzglabāti vai apmainīti, padarot neiespējamu mijiedarbību vai saziņu ar lietotājiem no šī servera.", + "about.domain_blocks.suspended.title": "Apturētie", + "about.not_available": "Šī informācija šajā serverī nav bijusi pieejama.", + "about.powered_by": "Decentralizētu sociālo multividi nodrošina {mastodon}", + "about.rules": "Servera noteikumi", "account.account_note_header": "Piezīme", "account.add_or_remove_from_list": "Pievienot vai noņemt no saraksta", "account.badges.bot": "Bots", @@ -20,13 +20,16 @@ "account.block_domain": "Bloķēt domēnu {domain}", "account.blocked": "Bloķēts", "account.browse_more_on_origin_server": "Pārlūkot vairāk sākotnējā profilā", - "account.cancel_follow_request": "Atcelt sekošanas pieprasījumu", + "account.cancel_follow_request": "Atsaukt sekošanas pieprasījumu", "account.direct": "Privāta ziņa @{name}", "account.disable_notifications": "Pārtraukt man paziņot, kad @{name} publicē ierakstu", "account.domain_blocked": "Domēns ir bloķēts", "account.edit_profile": "Rediģēt profilu", "account.enable_notifications": "Man paziņot, kad @{name} publicē ierakstu", "account.endorse": "Izcelts profilā", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Sekot", "account.followers": "Sekotāji", "account.followers.empty": "Šim lietotājam patreiz nav sekotāju.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Bloķēt un ziņot", "confirmations.block.confirm": "Bloķēt", "confirmations.block.message": "Vai tiešām vēlies bloķēt lietotāju {name}?", + "confirmations.cancel_follow_request.confirm": "Atsaukt pieprasījumu", + "confirmations.cancel_follow_request.message": "Vai tiešām vēlies atsaukt pieprasījumu sekot {name}?", "confirmations.delete.confirm": "Dzēst", "confirmations.delete.message": "Vai tiešām vēlaties dzēst šo ziņu?", "confirmations.delete_list.confirm": "Dzēst", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index a5081c82b..dde2f6d58 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -20,13 +20,16 @@ "account.block_domain": "Сокријај се од {domain}", "account.blocked": "Блокиран", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Одкажи барање за следење", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Директна порана @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Скриен домен", "account.edit_profile": "Измени профил", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Карактеристики на профилот", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Следи", "account.followers": "Следбеници", "account.followers.empty": "Никој не го следи овој корисник сеуште.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Блокирај и Пријави", "confirmations.block.confirm": "Блокирај", "confirmations.block.message": "Сигурни сте дека дека го блокирате {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Избриши", "confirmations.delete.message": "Сигурни сте дека го бришите статусот?", "confirmations.delete_list.confirm": "Избриши", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index 977cd8c5b..b19475c4b 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -20,13 +20,16 @@ "account.block_domain": "{domain} എന്ന മേഖല തടയുക", "account.blocked": "തടഞ്ഞു", "account.browse_more_on_origin_server": "യഥാർത്ഥ പ്രൊഫൈലിലേക്ക് പോവുക", - "account.cancel_follow_request": "പിന്തുടരാനുള്ള അപേക്ഷ നിരസിക്കുക", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "@{name}-ന്(ക്ക്) നേരിട്ട് സന്ദേശം അയക്കുക", "account.disable_notifications": "@{name} പോസ്റ്റുചെയ്യുന്നത് എന്നെ അറിയിക്കുന്നത് നിർത്തുക", "account.domain_blocked": "മേഖല തടഞ്ഞു", "account.edit_profile": "പ്രൊഫൈൽ തിരുത്തുക", "account.enable_notifications": "@{name} പോസ്റ്റ് ചെയ്യുമ്പോൾ എന്നെ അറിയിക്കുക", "account.endorse": "പ്രൊഫൈലിൽ പ്രകടമാക്കുക", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "പിന്തുടരുക", "account.followers": "പിന്തുടരുന്നവർ", "account.followers.empty": "ഈ ഉപയോക്താവിനെ ആരും ഇതുവരെ പിന്തുടരുന്നില്ല.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "തടയുകയും റിപ്പോർട്ടും ചെയ്യുക", "confirmations.block.confirm": "തടയുക", "confirmations.block.message": "{name} തടയാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "മായ്ക്കുക", "confirmations.delete.message": "ഈ ടൂട്ട് ഇല്ലാതാക്കണം എന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?", "confirmations.delete_list.confirm": "മായ്ക്കുക", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index 7c129ddb6..4d62bf0d4 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -20,13 +20,16 @@ "account.block_domain": "{domain} पासून सर्व लपवा", "account.blocked": "ब्लॉक केले आहे", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "अनुयायी होण्याची विनंती रद्द करा", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "थेट संदेश @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain hidden", "account.edit_profile": "प्रोफाइल एडिट करा", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Feature on profile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "अनुयायी व्हा", "account.followers": "अनुयायी", "account.followers.empty": "ह्या वापरकर्त्याचा आतापर्यंत कोणी अनुयायी नाही.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "Block", "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "हटवा", "confirmations.delete.message": "हे स्टेटस तुम्हाला नक्की हटवायचंय?", "confirmations.delete_list.confirm": "हटवा", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 4cedca54b..0615b64dc 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -20,13 +20,16 @@ "account.block_domain": "Sekat domain {domain}", "account.blocked": "Disekat", "account.browse_more_on_origin_server": "Layari selebihnya di profil asal", - "account.cancel_follow_request": "Batalkan permintaan ikutan", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Mesej terus @{name}", "account.disable_notifications": "Berhenti memaklumi saya apabila @{name} mengirim hantaran", "account.domain_blocked": "Domain disekat", "account.edit_profile": "Sunting profil", "account.enable_notifications": "Maklumi saya apabila @{name} mengirim hantaran", "account.endorse": "Tampilkan di profil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Ikuti", "account.followers": "Pengikut", "account.followers.empty": "Belum ada yang mengikuti pengguna ini.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Sekat & Lapor", "confirmations.block.confirm": "Sekat", "confirmations.block.message": "Adakah anda pasti anda ingin menyekat {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Padam", "confirmations.delete.message": "Adakah anda pasti anda ingin memadam hantaran ini?", "confirmations.delete_list.confirm": "Padam", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index f922463b8..77fe2703c 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", + "about.blocks": "Gemodereerde servers", "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.domain_blocks.comment": "Reden", + "about.domain_blocks.domain": "Domein", + "about.domain_blocks.preamble": "In het algemeen kun je met Mastodon berichten ontvangen van, en interactie hebben met gebruikers van elke server in de fediverse. Dit zijn de uitzonderingen die op deze specifieke server gelden.", + "about.domain_blocks.severity": "Zwaarte", + "about.domain_blocks.silenced.explanation": "In het algemeen zie je geen berichten en accounts van deze server, tenzij je berichten expliciet opzoekt of ervoor kiest om een account van deze server te volgen.", + "about.domain_blocks.silenced.title": "Beperkt", + "about.domain_blocks.suspended.explanation": "Er worden geen gegevens van deze server verwerkt, opgeslagen of uitgewisseld, wat interactie of communicatie met gebruikers van deze server onmogelijk maakt.", + "about.domain_blocks.suspended.title": "Opgeschort", + "about.not_available": "Deze informatie is door deze server niet openbaar gemaakt.", + "about.powered_by": "Gedecentraliseerde sociale media, mogelijk gemaakt door {mastodon}", + "about.rules": "Serverregels", "account.account_note_header": "Opmerking", "account.add_or_remove_from_list": "Toevoegen of verwijderen vanuit lijsten", "account.badges.bot": "Bot", @@ -20,13 +20,16 @@ "account.block_domain": "Alles van {domain} verbergen", "account.blocked": "Geblokkeerd", "account.browse_more_on_origin_server": "Meer op het originele profiel bekijken", - "account.cancel_follow_request": "Volgverzoek annuleren", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "@{name} een direct bericht sturen", "account.disable_notifications": "Geef geen melding meer wanneer @{name} een bericht plaatst", "account.domain_blocked": "Domein geblokkeerd", "account.edit_profile": "Profiel bewerken", "account.enable_notifications": "Geef een melding wanneer @{name} een bericht plaatst", "account.endorse": "Op profiel weergeven", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Volgen", "account.followers": "Volgers", "account.followers.empty": "Niemand volgt nog deze gebruiker.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blokkeren en rapporteren", "confirmations.block.confirm": "Blokkeren", "confirmations.block.message": "Weet je het zeker dat je {name} wilt blokkeren?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Verwijderen", "confirmations.delete.message": "Weet je het zeker dat je dit bericht wilt verwijderen?", "confirmations.delete_list.confirm": "Verwijderen", @@ -164,12 +169,12 @@ "directory.local": "Alleen {domain}", "directory.new_arrivals": "Nieuwe accounts", "directory.recently_active": "Onlangs actief", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "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_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "Dit zijn de meest recente openbare berichten van accounts op {domain}. Je kunt onder 'instellingen > voorkeuren > overig' kiezen welke talen je wilt zien.", + "dismissable_banner.dismiss": "Sluiten", + "dismissable_banner.explore_links": "Deze nieuwsberichten winnen aan populariteit op deze en andere servers binnen het decentrale netwerk.", + "dismissable_banner.explore_statuses": "Deze berichten winnen aan populariteit op deze en andere servers binnen het decentrale netwerk.", + "dismissable_banner.explore_tags": "Deze hashtags winnen aan populariteit op deze en andere servers binnen het decentrale netwerk.", + "dismissable_banner.public_timeline": "Dit zijn de meest recente openbare berichten van accounts op deze en andere servers binnen het decentrale netwerk. Je kunt onder 'instellingen > voorkeuren > overig' kiezen welke talen je wilt zien.", "embed.instructions": "Embed dit bericht op jouw website door de onderstaande code te kopiëren.", "embed.preview": "Zo komt het eruit te zien:", "emoji_button.activity": "Activiteiten", @@ -591,7 +596,7 @@ "timeline_hint.resources.followers": "Volgers", "timeline_hint.resources.follows": "Volgend", "timeline_hint.resources.statuses": "Oudere berichten", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} persoon} other {{counter} mensen}} {days, plural, one {in het afgelopen etmaal} other {in de afgelopen {days} dagen}}", "trends.trending_now": "Huidige trends", "ui.beforeunload": "Je concept gaat verloren wanneer je Mastodon verlaat.", "units.short.billion": "{count} mrd.", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index c366b9a5e..1c6a2f535 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -20,13 +20,16 @@ "account.block_domain": "Skjul alt frå {domain}", "account.blocked": "Blokkert", "account.browse_more_on_origin_server": "Sjå gjennom meir på den opphavlege profilen", - "account.cancel_follow_request": "Fjern fylgjeførespurnad", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Send melding til @{name}", "account.disable_notifications": "Slutt å varsle meg når @{name} legger ut innlegg", "account.domain_blocked": "Domenet er gøymt", "account.edit_profile": "Rediger profil", "account.enable_notifications": "Varsle meg når @{name} legger ut innlegg", "account.endorse": "Framhev på profil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Fylg", "account.followers": "Fylgjarar", "account.followers.empty": "Ingen fylgjer denne brukaren enno.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blokker & rapporter", "confirmations.block.confirm": "Blokker", "confirmations.block.message": "Er du sikker på at du vil blokkera {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Slett", "confirmations.delete.message": "Er du sikker på at du vil sletta denne statusen?", "confirmations.delete_list.confirm": "Slett", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 322b023a9..936e8d5b4 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -20,13 +20,16 @@ "account.block_domain": "Skjul alt fra {domain}", "account.blocked": "Blokkert", "account.browse_more_on_origin_server": "Bla mer på den opprinnelige profilen", - "account.cancel_follow_request": "Avbryt følge forespørsel", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Direct Message @{name}", "account.disable_notifications": "Slutt å varsle meg når @{name} legger ut innlegg", "account.domain_blocked": "Domenet skjult", "account.edit_profile": "Rediger profil", "account.enable_notifications": "Varsle meg når @{name} legger ut innlegg", "account.endorse": "Vis frem på profilen", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Følg", "account.followers": "Følgere", "account.followers.empty": "Ingen følger denne brukeren ennå.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blokker og rapporter", "confirmations.block.confirm": "Blokkèr", "confirmations.block.message": "Er du sikker på at du vil blokkere {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Slett", "confirmations.delete.message": "Er du sikker på at du vil slette denne statusen?", "confirmations.delete_list.confirm": "Slett", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index a30a6e9e9..f5cbc468e 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -20,13 +20,16 @@ "account.block_domain": "Tot amagar del domeni {domain}", "account.blocked": "Blocat", "account.browse_more_on_origin_server": "Navigar sul perfil original", - "account.cancel_follow_request": "Anullar la demanda de seguiment", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Escriure un MP a @{name}", "account.disable_notifications": "Quitar de m’avisar quand @{name} publica quicòm", "account.domain_blocked": "Domeni amagat", "account.edit_profile": "Modificar lo perfil", "account.enable_notifications": "M’avisar quand @{name} publica quicòm", "account.endorse": "Mostrar pel perfil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Sègre", "account.followers": "Seguidors", "account.followers.empty": "Degun sèc pas aqueste utilizaire pel moment.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blocar e senhalar", "confirmations.block.confirm": "Blocar", "confirmations.block.message": "Volètz vertadièrament blocar {name} ?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Escafar", "confirmations.delete.message": "Volètz vertadièrament escafar l’estatut ?", "confirmations.delete_list.confirm": "Suprimir", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index 12134bbd1..ed1f9c3ae 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -20,13 +20,16 @@ "account.block_domain": "Block domain {domain}", "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Direct message @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain blocked", "account.edit_profile": "Edit profile", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Feature on profile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Follow", "account.followers": "Followers", "account.followers.empty": "No one follows this user yet.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "Block", "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Delete", "confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete_list.confirm": "Delete", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 2f3ed70d1..51a69b2c5 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Serwery moderowane", + "about.contact": "Kontakt:", + "about.domain_blocks.comment": "Powód", + "about.domain_blocks.domain": "Domena", + "about.domain_blocks.preamble": "Normalnie Mastodon pozwala ci przeglądać i reagować na treści od innych użytkowników z jakiegokolwiek serwera w fediwersum. To są wyjątki, które zostały stworzone na tym konkretnym serwerze.", + "about.domain_blocks.severity": "Priorytet", + "about.domain_blocks.silenced.explanation": "Zazwyczaj nie zobaczysz profili i treści z tego serwera, chyba że wyraźnie go poszukasz lub zdecydujesz się go obserwować.", + "about.domain_blocks.silenced.title": "Ograniczone", + "about.domain_blocks.suspended.explanation": "Żadne dane z tego serwera nie będą przetwarzane, przechowywane lub wymieniane, co uniemożliwia jakąkolwiek interakcję lub komunikację z użytkownikami z tego serwera.", + "about.domain_blocks.suspended.title": "Zawieszono", + "about.not_available": "Ta informacja nie została udostępniona na tym serwerze.", + "about.powered_by": "Zdecentralizowane media społecznościowe w technologii {mastodon}", + "about.rules": "Regulamin serwera", "account.account_note_header": "Notatka", "account.add_or_remove_from_list": "Dodaj lub usuń z list", "account.badges.bot": "Bot", @@ -20,13 +20,16 @@ "account.block_domain": "Blokuj wszystko z {domain}", "account.blocked": "Zablokowany(-a)", "account.browse_more_on_origin_server": "Zobacz więcej na oryginalnym profilu", - "account.cancel_follow_request": "Zrezygnuj z prośby o możliwość śledzenia", + "account.cancel_follow_request": "Wycofaj żądanie obserwowania", "account.direct": "Wyślij wiadomość bezpośrednią do @{name}", "account.disable_notifications": "Przestań powiadamiać mnie o wpisach @{name}", "account.domain_blocked": "Ukryto domenę", "account.edit_profile": "Edytuj profil", "account.enable_notifications": "Powiadamiaj mnie o wpisach @{name}", "account.endorse": "Wyróżnij na profilu", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Śledź", "account.followers": "Śledzący", "account.followers.empty": "Nikt jeszcze nie śledzi tego użytkownika.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Zablokuj i zgłoś", "confirmations.block.confirm": "Zablokuj", "confirmations.block.message": "Czy na pewno chcesz zablokować {name}?", + "confirmations.cancel_follow_request.confirm": "Wycofaj żądanie", + "confirmations.cancel_follow_request.message": "Czy na pewno chcesz wycofać zgłoszenie śledzenia {name}?", "confirmations.delete.confirm": "Usuń", "confirmations.delete.message": "Czy na pewno chcesz usunąć ten wpis?", "confirmations.delete_list.confirm": "Usuń", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index b7b30e7c4..72cfa4ffa 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -20,13 +20,16 @@ "account.block_domain": "Bloquear domínio {domain}", "account.blocked": "Bloqueado", "account.browse_more_on_origin_server": "Veja mais no perfil original", - "account.cancel_follow_request": "Cancelar solicitação", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Enviar toot direto para @{name}", "account.disable_notifications": "Cancelar notificações de @{name}", "account.domain_blocked": "Domínio bloqueado", "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificar novos toots de @{name}", "account.endorse": "Recomendar", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Seguir", "account.followers": "Seguidores", "account.followers.empty": "Nada aqui.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Bloquear e denunciar", "confirmations.block.confirm": "Bloquear", "confirmations.block.message": "Você tem certeza de que deseja bloquear {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Excluir", "confirmations.delete.message": "Você tem certeza de que deseja excluir este toot?", "confirmations.delete_list.confirm": "Excluir", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 8a2228259..1fd0a9258 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Servidores moderados", + "about.contact": "Contacto:", + "about.domain_blocks.comment": "Motivo", + "about.domain_blocks.domain": "Domínio", + "about.domain_blocks.preamble": "Mastodon geralmente permite que veja e interaja com o conteúdo de utilizadores de qualquer outra instância no fediverso. Estas são as exceções desta instância em específico.", + "about.domain_blocks.severity": "Severidade", + "about.domain_blocks.silenced.explanation": "Geralmente não verá perfis e conteúdo deste servidor, a menos que os procure explicitamente ou opte por os seguir.", + "about.domain_blocks.silenced.title": "Limitados", + "about.domain_blocks.suspended.explanation": "Nenhum dado dessas instâncias será processado, armazenado ou trocado, tornando qualquer interação ou comunicação com os utilizadores dessas instâncias impossível.", + "about.domain_blocks.suspended.title": "Supensos", + "about.not_available": "Esta informação não foi disponibilizada neste servidor.", + "about.powered_by": "Rede social descentralizada baseada no {mastodon}", + "about.rules": "Regras da instância", "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Adicionar ou remover das listas", "account.badges.bot": "Robô", @@ -20,13 +20,16 @@ "account.block_domain": "Esconder tudo do domínio {domain}", "account.blocked": "Bloqueado(a)", "account.browse_more_on_origin_server": "Encontrar mais no perfil original", - "account.cancel_follow_request": "Cancelar pedido para seguir", + "account.cancel_follow_request": "Retirar pedido para seguir", "account.direct": "Enviar mensagem direta para @{name}", "account.disable_notifications": "Parar de me notificar das publicações de @{name}", "account.domain_blocked": "Domínio bloqueado", "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificar-me das publicações de @{name}", "account.endorse": "Destacar no perfil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Seguir", "account.followers": "Seguidores", "account.followers.empty": "Ainda ninguém segue este utilizador.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Bloquear e Denunciar", "confirmations.block.confirm": "Bloquear", "confirmations.block.message": "De certeza que queres bloquear {name}?", + "confirmations.cancel_follow_request.confirm": "Retirar pedido", + "confirmations.cancel_follow_request.message": "Tem a certeza que pretende retirar o pedido para seguir {name}?", "confirmations.delete.confirm": "Eliminar", "confirmations.delete.message": "De certeza que quer eliminar esta publicação?", "confirmations.delete_list.confirm": "Eliminar", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index bf52a776f..a3be7fb59 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -20,13 +20,16 @@ "account.block_domain": "Blochează domeniul {domain}", "account.blocked": "Blocat", "account.browse_more_on_origin_server": "Vezi mai multe pe profilul original", - "account.cancel_follow_request": "Anulează cererea de abonare", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Trimite-i un mesaj direct lui @{name}", "account.disable_notifications": "Nu îmi mai trimite notificări când postează @{name}", "account.domain_blocked": "Domeniu blocat", "account.edit_profile": "Modifică profilul", "account.enable_notifications": "Trimite-mi o notificare când postează @{name}", "account.endorse": "Promovează pe profil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Abonează-te", "account.followers": "Abonați", "account.followers.empty": "Acest utilizator încă nu are abonați.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blochează și raportează", "confirmations.block.confirm": "Blochează", "confirmations.block.message": "Ești sigur că vrei să blochezi pe {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Elimină", "confirmations.delete.message": "Ești sigur că vrei să elimini această postare?", "confirmations.delete_list.confirm": "Elimină", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 582d1c1fd..db6a26611 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.blocks": "Модерируемые серверы", + "about.contact": "Контакты:", + "about.domain_blocks.comment": "Причина", + "about.domain_blocks.domain": "Домен", + "about.domain_blocks.preamble": "Mastodon обычно позволяет просматривать содержимое и взаимодействовать с другими пользователями любых серверов в Федиверсе. Вот исключения, сделанные конкретно для этого сервера.", "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", "about.domain_blocks.suspended.title": "Suspended", "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.powered_by": "Децентрализованные социальные сети на базе {mastodon}", + "about.rules": "Правила сервера", "account.account_note_header": "Заметка", "account.add_or_remove_from_list": "Управление списками", "account.badges.bot": "Бот", @@ -20,13 +20,16 @@ "account.block_domain": "Заблокировать {domain}", "account.blocked": "Заблокирован(а)", "account.browse_more_on_origin_server": "Посмотреть в оригинальном профиле", - "account.cancel_follow_request": "Отменить подписку", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Написать @{name}", "account.disable_notifications": "Не уведомлять о постах от @{name}", "account.domain_blocked": "Домен заблокирован", "account.edit_profile": "Редактировать профиль", "account.enable_notifications": "Уведомлять о постах от @{name}", "account.endorse": "Рекомендовать в профиле", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Подписаться", "account.followers": "Подписчики", "account.followers.empty": "На этого пользователя пока никто не подписан.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Заблокировать и пожаловаться", "confirmations.block.confirm": "Заблокировать", "confirmations.block.message": "Вы уверены, что хотите заблокировать {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Удалить", "confirmations.delete.message": "Вы уверены, что хотите удалить этот пост?", "confirmations.delete_list.confirm": "Удалить", @@ -164,11 +169,11 @@ "directory.local": "Только с {domain}", "directory.new_arrivals": "Новички", "directory.recently_active": "Недавно активные", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.community_timeline": "Это самые последние публичные сообщения от людей, чьи учетные записи размещены в {domain}.", "dismissable_banner.dismiss": "Dismiss", "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_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_tags": "Эти хэштеги привлекают людей на этом и других серверах децентрализованной сети прямо сейчас.", "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Встройте этот пост на свой сайт, скопировав следующий код:", "embed.preview": "Так это будет выглядеть:", @@ -512,7 +517,7 @@ "search_results.title": "Поиск {q}", "search_results.total": "{count, number} {count, plural, one {результат} few {результата} many {результатов} other {результатов}}", "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", + "server_banner.active_users": "активные пользователи", "server_banner.administered_by": "Управляется:", "server_banner.introduction": "{domain} является частью децентрализованной социальной сети, основанной на {mastodon}.", "server_banner.learn_more": "Узнать больше", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index 2295d51a2..db7613b27 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -20,13 +20,16 @@ "account.block_domain": "अवरुध्यतां प्रदेशः {domain}", "account.blocked": "अवरुद्धम्", "account.browse_more_on_origin_server": "अधिकं मूलव्यक्तिगतविवरणे दृश्यताम्", - "account.cancel_follow_request": "अनुसरणानुरोधो नश्यताम्", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "प्रत्यक्षसन्देशः @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "प्रदेशो निषिद्धः", "account.edit_profile": "सम्पाद्यताम्", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "व्यक्तिगतविवरणे वैशिष्ट्यम्", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "अनुस्रियताम्", "account.followers": "अनुसर्तारः", "account.followers.empty": "नाऽनुसर्तारो वर्तन्ते", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "अवरुध्य आविद्यताम्", "confirmations.block.confirm": "निषेधः", "confirmations.block.message": "निश्चयेनाऽवरोधो विधेयः {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "नश्यताम्", "confirmations.delete.message": "निश्चयेन दौत्यमिदं नश्यताम्?", "confirmations.delete_list.confirm": "नश्यताम्", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index b31cd2809..7a534f689 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -20,13 +20,16 @@ "account.block_domain": "Bloca su domìniu {domain}", "account.blocked": "Blocadu", "account.browse_more_on_origin_server": "Esplora de prus in su profilu originale", - "account.cancel_follow_request": "Annulla rechesta de sighidura", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Messàgiu deretu a @{name}", "account.disable_notifications": "Non mi notìfiches prus cando @{name} pùblichet messàgios", "account.domain_blocked": "Domìniu blocadu", "account.edit_profile": "Modìfica profilu", "account.enable_notifications": "Notìfica·mi cando @{name} pùblicat messàgios", "account.endorse": "Cussìgia in su profilu tuo", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Sighi", "account.followers": "Sighiduras", "account.followers.empty": "Nemos sighit ancora custa persone.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Bloca e signala", "confirmations.block.confirm": "Bloca", "confirmations.block.message": "Seguru chi boles blocare {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Cantzella", "confirmations.delete.message": "Seguru chi boles cantzellare custa publicatzione?", "confirmations.delete_list.confirm": "Cantzella", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 1010dc6af..e18b0abe4 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -20,13 +20,16 @@ "account.block_domain": "{domain} වසම අවහිර කරන්න", "account.blocked": "අවහිර කර ඇත", "account.browse_more_on_origin_server": "මුල් පැතිකඩෙහි තවත් පිරික්සන්න", - "account.cancel_follow_request": "අනුගමන ඉල්ලීම ඉවතලන්න", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "@{name} සෘජු පණිවිඩය", "account.disable_notifications": "@{name} පළ කරන විට මට දැනුම් නොදෙන්න", "account.domain_blocked": "වසම අවහිර කර ඇත", "account.edit_profile": "පැතිකඩ සංස්කරණය", "account.enable_notifications": "@{name} පළ කරන විට මට දැනුම් දෙන්න", "account.endorse": "පැතිකඩෙහි විශේෂාංගය", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "අනුගමනය", "account.followers": "අනුගාමිකයින්", "account.followers.empty": "කිසිවෙක් අනුගමනය කර නැත.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "අවහිර කර වාර්තා කරන්න", "confirmations.block.confirm": "අවහිර", "confirmations.block.message": "ඔබට {name} අවහිර කිරීමට වුවමනා ද?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "මකන්න", "confirmations.delete.message": "ඔබට මෙම තත්ත්වය මැකීමට අවශ්‍ය බව විශ්වාසද?", "confirmations.delete_list.confirm": "මකන්න", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index bd71ec54d..199bce691 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -20,13 +20,16 @@ "account.block_domain": "Ukry všetko z {domain}", "account.blocked": "Blokovaný/á", "account.browse_more_on_origin_server": "Prehľadávaj viac na pôvodnom profile", - "account.cancel_follow_request": "Zruš žiadosť o sledovanie", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Priama správa pre @{name}", "account.disable_notifications": "Prestaň oznamovať, keď má príspevky @{name}", "account.domain_blocked": "Doména ukrytá", "account.edit_profile": "Uprav profil", "account.enable_notifications": "Oboznamuj ma, keď má @{name} príspevky", "account.endorse": "Zobrazuj na profile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Nasleduj", "account.followers": "Sledujúci", "account.followers.empty": "Tohto používateľa ešte nikto nenásleduje.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Zablokuj a nahlás", "confirmations.block.confirm": "Blokuj", "confirmations.block.message": "Si si istý/á, že chceš blokovať {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Vymaž", "confirmations.delete.message": "Si si istý/á, že chceš vymazať túto správu?", "confirmations.delete_list.confirm": "Vymaž", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 7006bfb6f..98e113ea1 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Moderirani strežniki", + "about.contact": "Stik:", + "about.domain_blocks.comment": "Razlog", + "about.domain_blocks.domain": "Domena", + "about.domain_blocks.preamble": "Mastodon vam splošno omogoča ogled vsebin in interakcijo z uporabniki iz vseh drugih strežnikov v fediverzumu. To so izjeme, opravljene na tem strežniku.", + "about.domain_blocks.severity": "Resnost", + "about.domain_blocks.silenced.explanation": "V splošnem ne boste videli profilov in vsebin s tega strežnika, če jih eksplicino ne poiščete ali nanje naročite s sledenjem.", + "about.domain_blocks.silenced.title": "Omejeno", + "about.domain_blocks.suspended.explanation": "Nobeni podatki s tega strežnika ne bodo obdelani, shranjeni ali izmenjani, zaradi česar je nemogoča kakršna koli interakcija ali komunikacija z uporabniki s tega strežnika.", + "about.domain_blocks.suspended.title": "Suspendiran", + "about.not_available": "Ti podatki še niso na voljo na tem strežniku.", + "about.powered_by": "Decentraliziran družabni medij, ki ga poganja {mastodon}", + "about.rules": "Pravila strežnika", "account.account_note_header": "Opombe", "account.add_or_remove_from_list": "Dodaj ali odstrani s seznamov", "account.badges.bot": "Robot", @@ -20,13 +20,16 @@ "account.block_domain": "Blokiraj domeno {domain}", "account.blocked": "Blokirano", "account.browse_more_on_origin_server": "Brskaj več po izvirnem profilu", - "account.cancel_follow_request": "Prekliči prošnjo za sledenje", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Neposredno sporočilo @{name}", "account.disable_notifications": "Ne obveščaj me več, ko ima @{name} novo objavo", "account.domain_blocked": "Blokirana domena", "account.edit_profile": "Uredi profil", "account.enable_notifications": "Obvesti me, ko ima @{name} novo objavo", "account.endorse": "Izpostavi v profilu", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Sledi", "account.followers": "Sledilci", "account.followers.empty": "Nihče ne sledi temu uporabniku.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blokiraj in Prijavi", "confirmations.block.confirm": "Blokiraj", "confirmations.block.message": "Ali ste prepričani, da želite blokirati {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Izbriši", "confirmations.delete.message": "Ali ste prepričani, da želite izbrisati to objavo?", "confirmations.delete_list.confirm": "Izbriši", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 608fc54db..1bb0b16ac 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Shërbyes të moderuar", + "about.contact": "Kontakt:", + "about.domain_blocks.comment": "Arsye", + "about.domain_blocks.domain": "Përkatësi", + "about.domain_blocks.preamble": "Mastodon-i ju lë përgjithësisht të shihni lëndë prej përdoruesish dhe të ndërveproni me ta nga cilido shërbyes tjetër qofshin në fedivers. Ka përjashtime që janë bërë në këtë shërbyes të dhënë.", + "about.domain_blocks.severity": "Rëndësi", + "about.domain_blocks.silenced.explanation": "Përgjithësisht s’do të shihni profile dhe lëndë nga ky shërbyes, veç në i kërkofshi shprehimisht apo zgjidhni të bëhet kjo, duke i ndjekur.", + "about.domain_blocks.silenced.title": "E kufizuar", + "about.domain_blocks.suspended.explanation": "S’do të përpunohen, depozitohen apo shkëmbehen të dhëna të këtij shërbyesi, duke e bërë të pamundur çfarëdo ndërveprimi apo komunikimi me përdorues nga ky shërbyes.", + "about.domain_blocks.suspended.title": "E pezulluar", + "about.not_available": "Ky informacion nuk jepet në këtë shërbyes.", + "about.powered_by": "Media shoqërore e decentralizuar, bazuar në {mastodon}", + "about.rules": "Rregulla shërbyesi", "account.account_note_header": "Shënim", "account.add_or_remove_from_list": "Shtoni ose Hiqni prej listash", "account.badges.bot": "Robot", @@ -20,13 +20,16 @@ "account.block_domain": "Blloko përkatësinë {domain}", "account.blocked": "E bllokuar", "account.browse_more_on_origin_server": "Shfletoni më tepër rreth profilit origjinal", - "account.cancel_follow_request": "Anulo kërkesë ndjekjeje", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Mesazh i drejtpërdrejtë për @{name}", "account.disable_notifications": "Resht së njoftuari mua, kur poston @{name}", "account.domain_blocked": "Përkatësia u bllokua", "account.edit_profile": "Përpunoni profilin", "account.enable_notifications": "Njoftomë, kur poston @{name}", "account.endorse": "Pasqyrojeni në profil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Ndiqeni", "account.followers": "Ndjekës", "account.followers.empty": "Këtë përdorues ende s’e ndjek kush.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Bllokojeni & Raportojeni", "confirmations.block.confirm": "Bllokoje", "confirmations.block.message": "Jeni i sigurt se doni të bllokohet {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Fshije", "confirmations.delete.message": "Jeni i sigurt se doni të fshihet kjo gjendje?", "confirmations.delete_list.confirm": "Fshije", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 838e543d1..7a0138320 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -20,13 +20,16 @@ "account.block_domain": "Sakrij sve sa domena {domain}", "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Direct Message @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain hidden", "account.edit_profile": "Izmeni profil", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Feature on profile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Zaprati", "account.followers": "Pratioca", "account.followers.empty": "No one follows this user yet.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "Blokiraj", "confirmations.block.message": "Da li ste sigurni da želite da blokirate korisnika {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Obriši", "confirmations.delete.message": "Da li ste sigurni da želite obrišete ovaj status?", "confirmations.delete_list.confirm": "Obriši", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 5cfa1aa5a..6140f5a5a 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -20,13 +20,16 @@ "account.block_domain": "Сакриј све са домена {domain}", "account.blocked": "Блокиран", "account.browse_more_on_origin_server": "Погледајте још на оригиналном налогу", - "account.cancel_follow_request": "Поништи захтеве за праћење", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Директна порука @{name}", "account.disable_notifications": "Прекини обавештавање за објаве корисника @{name}", "account.domain_blocked": "Домен сакривен", "account.edit_profile": "Уреди налог", "account.enable_notifications": "Обавести ме када @{name} објави", "account.endorse": "Истакнуто на налогу", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Запрати", "account.followers": "Пратиоци", "account.followers.empty": "Тренутно нико не прати овог корисника.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Блокирај и Пријави", "confirmations.block.confirm": "Блокирај", "confirmations.block.message": "Да ли сте сигурни да желите да блокирате корисника {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Обриши", "confirmations.delete.message": "Да ли сте сигурни да желите обришете овај статус?", "confirmations.delete_list.confirm": "Обриши", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 47f8b90cb..5e054b1f2 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -20,13 +20,16 @@ "account.block_domain": "Dölj allt från {domain}", "account.blocked": "Blockerad", "account.browse_more_on_origin_server": "Läs mer på original profilen", - "account.cancel_follow_request": "Avbryt följarförfrågan", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Skicka ett direktmeddelande till @{name}", "account.disable_notifications": "Sluta meddela mig när @{name} tutar", "account.domain_blocked": "Domän dold", "account.edit_profile": "Redigera profil", "account.enable_notifications": "Meddela mig när @{name} tutar", "account.endorse": "Visa på profil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Följ", "account.followers": "Följare", "account.followers.empty": "Ingen följer denna användare än.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blockera & rapportera", "confirmations.block.confirm": "Blockera", "confirmations.block.message": "Är du säker på att du vill blockera {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Radera", "confirmations.delete.message": "Är du säker på att du vill radera denna status?", "confirmations.delete_list.confirm": "Radera", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index 12134bbd1..ed1f9c3ae 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -20,13 +20,16 @@ "account.block_domain": "Block domain {domain}", "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Direct message @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain blocked", "account.edit_profile": "Edit profile", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Feature on profile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Follow", "account.followers": "Followers", "account.followers.empty": "No one follows this user yet.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "Block", "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Delete", "confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete_list.confirm": "Delete", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 859d22627..99d97fef6 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -20,13 +20,16 @@ "account.block_domain": "{domain} யில் இருந்து வரும் எல்லாவற்றையும் மறை", "account.blocked": "முடக்கப்பட்டது", "account.browse_more_on_origin_server": "மேலும் உலாவ சுயவிவரத்திற்குச் செல்க", - "account.cancel_follow_request": "பின்தொடரும் கோரிக்கையை நிராகரி", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "நேரடி செய்தி @{name}", "account.disable_notifications": "@{name} பதிவிட்டல் எனக்கு தெரியபடுத்த வேண்டாம்", "account.domain_blocked": "மறைக்கப்பட்டத் தளங்கள்", "account.edit_profile": "சுயவிவரத்தை மாற்று", "account.enable_notifications": "@{name} பதிவிட்டல் எனக்குத் தெரியப்படுத்தவும்", "account.endorse": "சுயவிவரத்தில் வெளிப்படுத்து", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "பின்தொடர்", "account.followers": "பின்தொடர்பவர்கள்", "account.followers.empty": "இதுவரை யாரும் இந்த பயனரைப் பின்தொடரவில்லை.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "தடுத்துப் புகாரளி", "confirmations.block.confirm": "தடு", "confirmations.block.message": "{name}-ஐ நிச்சயமாகத் தடுக்க விரும்புகிறீர்களா?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "நீக்கு", "confirmations.delete.message": "இப்பதிவை நிச்சயமாக நீக்க விரும்புகிறீர்களா?", "confirmations.delete_list.confirm": "நீக்கு", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 30489828e..94fc0f72e 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -20,13 +20,16 @@ "account.block_domain": "Block domain {domain}", "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Direct message @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain blocked", "account.edit_profile": "Edit profile", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Feature on profile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Follow", "account.followers": "Followers", "account.followers.empty": "No one follows this user yet.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "Block", "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Delete", "confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete_list.confirm": "Delete", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index f50ffc9d4..5b1c22f92 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -20,13 +20,16 @@ "account.block_domain": "{domain} నుంచి అన్నీ దాచిపెట్టు", "account.blocked": "బ్లాక్ అయినవి", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "@{name}కు నేరుగా సందేశం పంపు", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "డొమైన్ దాచిపెట్టబడినది", "account.edit_profile": "ప్రొఫైల్ని సవరించండి", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "ప్రొఫైల్లో చూపించు", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "అనుసరించు", "account.followers": "అనుచరులు", "account.followers.empty": "ఈ వినియోగదారుడిని ఇంకా ఎవరూ అనుసరించడంలేదు.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "బ్లాక్ చేయి", "confirmations.block.message": "మీరు ఖచ్చితంగా {name}ని బ్లాక్ చేయాలనుకుంటున్నారా?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "తొలగించు", "confirmations.delete.message": "మీరు ఖచ్చితంగా ఈ స్టేటస్ ని తొలగించాలనుకుంటున్నారా?", "confirmations.delete_list.confirm": "తొలగించు", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index a99156dcd..aba6b2c00 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", + "about.blocks": "เซิร์ฟเวอร์ที่มีการควบคุม", + "about.contact": "ติดต่อ:", + "about.domain_blocks.comment": "เหตุผล", + "about.domain_blocks.domain": "โดเมน", + "about.domain_blocks.preamble": "โดยทั่วไป Mastodon อนุญาตให้คุณดูเนื้อหาจากและโต้ตอบกับผู้ใช้จากเซิร์ฟเวอร์อื่นใดในจักรวาลสหพันธ์ นี่คือข้อยกเว้นที่ทำขึ้นในเซิร์ฟเวอร์นี้โดยเฉพาะ", + "about.domain_blocks.severity": "ความรุนแรง", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", + "about.domain_blocks.silenced.title": "จำกัดอยู่", + "about.domain_blocks.suspended.explanation": "จะไม่ประมวลผล จัดเก็บ หรือแลกเปลี่ยนข้อมูลจากเซิร์ฟเวอร์นี้ ทำให้การโต้ตอบหรือการสื่อสารใด ๆ กับผู้ใช้จากเซิร์ฟเวอร์นี้เป็นไปไม่ได้", + "about.domain_blocks.suspended.title": "ระงับอยู่", "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.powered_by": "สื่อสังคมแบบกระจายศูนย์ที่ขับเคลื่อนโดย {mastodon}", + "about.rules": "กฎของเซิร์ฟเวอร์", "account.account_note_header": "หมายเหตุ", "account.add_or_remove_from_list": "เพิ่มหรือเอาออกจากรายการ", "account.badges.bot": "บอต", @@ -20,13 +20,16 @@ "account.block_domain": "ปิดกั้นโดเมน {domain}", "account.blocked": "ปิดกั้นอยู่", "account.browse_more_on_origin_server": "เรียกดูเพิ่มเติมในโปรไฟล์ดั้งเดิม", - "account.cancel_follow_request": "ยกเลิกคำขอติดตาม", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "ส่งข้อความโดยตรงถึง @{name}", "account.disable_notifications": "หยุดแจ้งเตือนฉันเมื่อ @{name} โพสต์", "account.domain_blocked": "ปิดกั้นโดเมนอยู่", "account.edit_profile": "แก้ไขโปรไฟล์", "account.enable_notifications": "แจ้งเตือนฉันเมื่อ @{name} โพสต์", "account.endorse": "แนะนำในโปรไฟล์", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "ติดตาม", "account.followers": "ผู้ติดตาม", "account.followers.empty": "ยังไม่มีใครติดตามผู้ใช้นี้", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "ปิดกั้นแล้วรายงาน", "confirmations.block.confirm": "ปิดกั้น", "confirmations.block.message": "คุณแน่ใจหรือไม่ว่าต้องการปิดกั้น {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "ลบ", "confirmations.delete.message": "คุณแน่ใจหรือไม่ว่าต้องการลบโพสต์นี้?", "confirmations.delete_list.confirm": "ลบ", @@ -245,7 +250,7 @@ "generic.saved": "บันทึกแล้ว", "getting_started.directory": "ไดเรกทอรี", "getting_started.documentation": "เอกสารประกอบ", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "Mastodon เป็นซอฟต์แวร์เสรีและโอเพนซอร์ส คุณสามารถดูโค้ดต้นฉบับ มีส่วนร่วม หรือรายงานปัญหาได้ที่ {repository}", "getting_started.heading": "เริ่มต้นใช้งาน", "getting_started.invite": "เชิญผู้คน", "getting_started.privacy_policy": "นโยบายความเป็นส่วนตัว", @@ -369,7 +374,7 @@ "navigation_bar.preferences": "การกำหนดลักษณะ", "navigation_bar.public_timeline": "เส้นเวลาที่ติดต่อกับภายนอก", "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.admin.report": "{name} ได้รายงาน {target}", "notification.admin.sign_up": "{name} ได้ลงทะเบียน", "notification.favourite": "{name} ได้ชื่นชอบโพสต์ของคุณ", @@ -437,7 +442,7 @@ "privacy.public.short": "สาธารณะ", "privacy.unlisted.long": "ปรากฏแก่ทั้งหมด แต่เลือกไม่รับคุณลักษณะการค้นพบ", "privacy.unlisted.short": "ไม่อยู่ในรายการ", - "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.last_updated": "อัปเดตล่าสุดเมื่อ {date}", "privacy_policy.title": "นโยบายความเป็นส่วนตัว", "refresh": "รีเฟรช", "regeneration_indicator.label": "กำลังโหลด…", @@ -514,7 +519,7 @@ "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", "server_banner.active_users": "ผู้ใช้ที่ใช้งานอยู่", "server_banner.administered_by": "ดูแลโดย:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.introduction": "{domain} เป็นส่วนหนึ่งของเครือข่ายสังคมแบบกระจายศูนย์ที่ขับเคลื่อนโดย {mastodon}", "server_banner.learn_more": "เรียนรู้เพิ่มเติม", "server_banner.server_stats": "สถิติเซิร์ฟเวอร์:", "sign_in_banner.create_account": "สร้างบัญชี", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index a13bb945d..a00d05b2e 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Denetlenen sunucular", + "about.contact": "İletişim:", + "about.domain_blocks.comment": "Gerekçe", + "about.domain_blocks.domain": "Alan adı", + "about.domain_blocks.preamble": "Mastodon, genel olarak fediverse'teki herhangi bir sunucudan içerik görüntülemenize ve kullanıcılarıyla etkileşim kurmanıza izin verir. Bunlar, bu sunucuda yapılmış olan istisnalardır.", + "about.domain_blocks.severity": "Önem derecesi", + "about.domain_blocks.silenced.explanation": "Açık bir şekilde aramadığınız veya takip ederek abone olmadığınız sürece, bu sunucudaki profilleri veya içerikleri genelde göremeyeceksiniz.", + "about.domain_blocks.silenced.title": "Sınırlı", + "about.domain_blocks.suspended.explanation": "Bu sunucudaki hiçbir veri işlenmeyecek, saklanmayacak veya değiş tokuş edilmeyecektir, dolayısıyla bu sunucudaki kullanıcılarla herhangi bir etkileşim veya iletişim imkansız olacaktır.", + "about.domain_blocks.suspended.title": "Askıya alındı", + "about.not_available": "Bu sunucuda bu bilgi kullanıma sunulmadı.", + "about.powered_by": "{mastodon} destekli ademi merkeziyetçi sosyal medya", + "about.rules": "Sunucu kuralları", "account.account_note_header": "Not", "account.add_or_remove_from_list": "Listelere ekle veya kaldır", "account.badges.bot": "Bot", @@ -20,13 +20,16 @@ "account.block_domain": "{domain} alan adını engelle", "account.blocked": "Engellendi", "account.browse_more_on_origin_server": "Orijinal profilde daha fazlasına göz atın", - "account.cancel_follow_request": "Takip isteğini iptal et", + "account.cancel_follow_request": "Takip isteğini geri çek", "account.direct": "@{name} adlı kişiye mesaj gönder", "account.disable_notifications": "@{name} kişisinin gönderi bildirimlerini kapat", "account.domain_blocked": "Alan adı engellendi", "account.edit_profile": "Profili düzenle", "account.enable_notifications": "@{name}'in gönderilerini bana bildir", "account.endorse": "Profilimde öne çıkar", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Takip et", "account.followers": "Takipçi", "account.followers.empty": "Henüz kimse bu kullanıcıyı takip etmiyor.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Engelle ve Bildir", "confirmations.block.confirm": "Engelle", "confirmations.block.message": "{name} adlı kullanıcıyı engellemek istediğinden emin misin?", + "confirmations.cancel_follow_request.confirm": "İsteği geri çek", + "confirmations.cancel_follow_request.message": "{name} kişisini takip etme isteğini geri çekmek istediğinden emin misin?", "confirmations.delete.confirm": "Sil", "confirmations.delete.message": "Bu tootu silmek istediğinden emin misin?", "confirmations.delete_list.confirm": "Sil", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index bca39d2b6..4ca7e4ad4 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -20,13 +20,16 @@ "account.block_domain": "{domain} доменын блоклау", "account.blocked": "Блокланган", "account.browse_more_on_origin_server": "Тулырак оригинал профилендә карап була", - "account.cancel_follow_request": "Язылуга сорауны бетерү", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "@{name} өчен яңа хат", "account.disable_notifications": "@{name} язулары өчен белдерүләр сүндерү", "account.domain_blocked": "Домен блокланган", "account.edit_profile": "Профильны үзгәртү", "account.enable_notifications": "@{name} язулары өчен белдерүләр яндыру", "account.endorse": "Профильдә рекомендацияләү", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Языл", "account.followers": "Язылучылар", "account.followers.empty": "Әле беркем дә язылмаган.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "Блоклау", "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Бетерү", "confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete_list.confirm": "Бетерү", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index 12134bbd1..ed1f9c3ae 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -20,13 +20,16 @@ "account.block_domain": "Block domain {domain}", "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Direct message @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain blocked", "account.edit_profile": "Edit profile", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Feature on profile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Follow", "account.followers": "Followers", "account.followers.empty": "No one follows this user yet.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "Block", "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Delete", "confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete_list.confirm": "Delete", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 62f03a8a0..db900b002 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Модеровані сервери", + "about.contact": "Kонтакти:", + "about.domain_blocks.comment": "Причина", + "about.domain_blocks.domain": "Домен", + "about.domain_blocks.preamble": "Mastodon зазвичай дозволяє вам взаємодіяти з користувачами будь-яких серверів у Федіверсі та переглядати їх вміст. Ось винятки, які було зроблено на цьому конкретному сервері.", + "about.domain_blocks.severity": "Важливість", + "about.domain_blocks.silenced.explanation": "Ви загалом не побачите профілі та вміст цього сервера, якщо тільки Ви не обрали його явним або не обрали його наступним чином.", + "about.domain_blocks.silenced.title": "Обмежені", + "about.domain_blocks.suspended.explanation": "Дані з цього сервера не обробляться, зберігаються чи обмінюються, взаємодію чи спілкування з користувачами цього сервера неможливі.", + "about.domain_blocks.suspended.title": "Призупинено", + "about.not_available": "Ця інформація не доступна на цьому сервері.", + "about.powered_by": "Децентралізовані соціальні мережі від {mastodon}", + "about.rules": "Правила сервера", "account.account_note_header": "Примітка", "account.add_or_remove_from_list": "Додати або видалити зі списків", "account.badges.bot": "Бот", @@ -20,13 +20,16 @@ "account.block_domain": "Заблокувати домен {domain}", "account.blocked": "Заблоковані", "account.browse_more_on_origin_server": "Переглянути більше в оригінальному профілі", - "account.cancel_follow_request": "Скасувати запит на підписку", + "account.cancel_follow_request": "Відкликати запит на стеження", "account.direct": "Надіслати пряме повідомлення @{name}", "account.disable_notifications": "Не повідомляти мене про дописи @{name}", "account.domain_blocked": "Домен заблоковано", "account.edit_profile": "Редагувати профіль", "account.enable_notifications": "Повідомляти мене про дописи @{name}", "account.endorse": "Рекомендувати у профілі", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Підписатися", "account.followers": "Підписники", "account.followers.empty": "Ніхто ще не підписаний на цього користувача.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Заблокувати та поскаржитися", "confirmations.block.confirm": "Заблокувати", "confirmations.block.message": "Ви впевнені, що хочете заблокувати {name}?", + "confirmations.cancel_follow_request.confirm": "Відкликати запит", + "confirmations.cancel_follow_request.message": "Ви дійсно бажаєте відкликати запит на стеження за {name}?", "confirmations.delete.confirm": "Видалити", "confirmations.delete.message": "Ви впевнені, що хочете видалити цей допис?", "confirmations.delete_list.confirm": "Видалити", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index 60b34b792..8be3a12a3 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -20,13 +20,16 @@ "account.block_domain": "{domain} سے سب چھپائیں", "account.blocked": "مسدود کردہ", "account.browse_more_on_origin_server": "اصل پروفائل پر مزید براؤز کریں", - "account.cancel_follow_request": "درخواستِ پیروی منسوخ کریں", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "راست پیغام @{name}", "account.disable_notifications": "جب @{name} پوسٹ کرے تو مجھ مطلع نہ کریں", "account.domain_blocked": "پوشیدہ ڈومین", "account.edit_profile": "مشخص ترمیم کریں", "account.enable_notifications": "جب @{name} پوسٹ کرے تو مجھ مطلع کریں", "account.endorse": "مشکص پر نمایاں کریں", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "پیروی کریں", "account.followers": "پیروکار", "account.followers.empty": "\"ہنوز اس صارف کی کوئی پیروی نہیں کرتا\".", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "شکایت کریں اور بلاک کریں", "confirmations.block.confirm": "بلاک", "confirmations.block.message": "کیا واقعی آپ {name} کو بلاک کرنا چاہتے ہیں؟", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "ڈیلیٹ", "confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete_list.confirm": "ڈیلیٹ", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index d3068b6c9..79f68b9e4 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Giới hạn chung", + "about.contact": "Liên lạc:", + "about.domain_blocks.comment": "Lý do", + "about.domain_blocks.domain": "Máy chủ", + "about.domain_blocks.preamble": "Mastodon cho phép bạn tương tác nội dung và giao tiếp với người dùng từ bất kỳ máy chủ nào khác trong mạng liên hợp. Còn máy chủ này có những ngoại lệ riêng.", + "about.domain_blocks.severity": "Mức độ", + "about.domain_blocks.silenced.explanation": "Nói chung, bạn sẽ không thấy người dùng và nội dung từ máy chủ này, trừ khi bạn tự tìm kiếm hoặc tự theo dõi.", + "about.domain_blocks.silenced.title": "Hạn chế", + "about.domain_blocks.suspended.explanation": "Dữ liệu từ máy chủ này sẽ không được xử lý, lưu trữ hoặc trao đổi. Mọi tương tác hoặc giao tiếp với người dùng từ máy chủ này đều bị cấm.", + "about.domain_blocks.suspended.title": "Vô hiệu hóa", + "about.not_available": "Máy chủ này chưa cung cấp thông tin.", + "about.powered_by": "Mạng xã hội liên hợp {mastodon}", + "about.rules": "Quy tắc máy chủ", "account.account_note_header": "Ghi chú", "account.add_or_remove_from_list": "Thêm hoặc Xóa khỏi danh sách", "account.badges.bot": "Bot", @@ -20,13 +20,16 @@ "account.block_domain": "Ẩn mọi thứ từ {domain}", "account.blocked": "Đã chặn", "account.browse_more_on_origin_server": "Truy cập trang của người này", - "account.cancel_follow_request": "Hủy yêu cầu theo dõi", + "account.cancel_follow_request": "Thu hồi yêu cầu theo dõi", "account.direct": "Nhắn riêng @{name}", "account.disable_notifications": "Tắt thông báo khi @{name} đăng tút", "account.domain_blocked": "Người đã chặn", "account.edit_profile": "Sửa hồ sơ", "account.enable_notifications": "Nhận thông báo khi @{name} đăng tút", "account.endorse": "Tôn vinh người này", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Theo dõi", "account.followers": "Người theo dõi", "account.followers.empty": "Chưa có người theo dõi nào.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Chặn & Báo cáo", "confirmations.block.confirm": "Chặn", "confirmations.block.message": "Bạn có thật sự muốn chặn {name}?", + "confirmations.cancel_follow_request.confirm": "Thu hồi yêu cầu", + "confirmations.cancel_follow_request.message": "Bạn có chắc muốn thu hồi yêu cầu theo dõi của bạn với {name}?", "confirmations.delete.confirm": "Xóa bỏ", "confirmations.delete.message": "Bạn thật sự muốn xóa tút này?", "confirmations.delete_list.confirm": "Xóa bỏ", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index 305f21b0d..629f1b269 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -20,13 +20,16 @@ "account.block_domain": "ⴳⴷⵍ ⵉⴳⵔ {domain}", "account.blocked": "ⵉⵜⵜⵓⴳⴷⵍ", "account.browse_more_on_origin_server": "ⵙⵜⴰⵔⴰ ⵓⴳⴳⴰⵔ ⴳ ⵉⴼⵔⵙ ⴰⵏⵚⵍⵉ", - "account.cancel_follow_request": "ⵙⵔ ⵜⵓⵜⵔⴰ ⵏ ⵓⴹⴼⵕ", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "ⵜⵓⵣⵉⵏⵜ ⵜⵓⵙⵔⵉⴷⵜ @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "ⵉⵜⵜⵓⴳⴷⵍ ⵉⴳⵔ", "account.edit_profile": "ⵙⵏⴼⵍ ⵉⴼⵔⵙ", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Feature on profile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "ⴹⴼⵕ", "account.followers": "ⵉⵎⴹⴼⴰⵕⵏ", "account.followers.empty": "No one follows this user yet.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "ⴳⴷⵍ", "confirmations.block.message": "ⵉⵙ ⵏⵉⵜ ⵜⵅⵙⴷ ⴰⴷ ⵜⴳⴷⵍⴷ {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "ⴽⴽⵙ", "confirmations.delete.message": "ⵉⵙ ⵏⵉⵜ ⵜⵅⵙⴷ ⴰⴷ ⵜⴽⴽⵙⴷ ⵜⴰⵥⵕⵉⴳⵜ ⴰ?", "confirmations.delete_list.confirm": "ⴽⴽⵙ", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 97d097c4c..b63b1e0fc 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -20,13 +20,16 @@ "account.block_domain": "屏蔽 {domain} 实例", "account.blocked": "已屏蔽", "account.browse_more_on_origin_server": "在原始个人资料页面上浏览详情", - "account.cancel_follow_request": "取消关注请求", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "发送私信给 @{name}", "account.disable_notifications": "当 @{name} 发嘟时不要通知我", "account.domain_blocked": "域名已屏蔽", "account.edit_profile": "修改个人资料", "account.enable_notifications": "当 @{name} 发嘟时通知我", "account.endorse": "在个人资料中推荐此用户", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "关注", "account.followers": "关注者", "account.followers.empty": "目前无人关注此用户。", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "屏蔽与举报", "confirmations.block.confirm": "屏蔽", "confirmations.block.message": "你确定要屏蔽 {name} 吗?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "删除", "confirmations.delete.message": "你确定要删除这条嘟文吗?", "confirmations.delete_list.confirm": "删除", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index f02fc9074..3575d876b 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -20,13 +20,16 @@ "account.block_domain": "封鎖來自 {domain} 的一切文章", "account.blocked": "已封鎖", "account.browse_more_on_origin_server": "瀏覽原服務站上的個人資料頁", - "account.cancel_follow_request": "取消關注請求", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "私訊 @{name}", "account.disable_notifications": "如果 @{name} 發文請不要再通知我", "account.domain_blocked": "服務站被封鎖", "account.edit_profile": "修改個人資料", "account.enable_notifications": "如果 @{name} 發文請通知我", "account.endorse": "在個人資料頁推薦對方", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "關注", "account.followers": "關注者", "account.followers.empty": "尚未有人關注這位使用者。", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "封鎖並檢舉", "confirmations.block.confirm": "封鎖", "confirmations.block.message": "你確定要封鎖{name}嗎?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "刪除", "confirmations.delete.message": "你確定要刪除這文章嗎?", "confirmations.delete_list.confirm": "刪除", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 69725fe25..8161aa013 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "受管制的伺服器", + "about.contact": "聯絡我們:", + "about.domain_blocks.comment": "原因", + "about.domain_blocks.domain": "網域", + "about.domain_blocks.preamble": "Mastodon 一般來說允許您閱讀並和聯邦宇宙上任何伺服器的使用者互動。這些伺服器是這個站台設下的例外。", + "about.domain_blocks.severity": "嚴重性", + "about.domain_blocks.silenced.explanation": "一般來說您不會看到來自這個伺服器的個人檔案和內容,除非您明確地打開或著跟隨此個人檔案。", + "about.domain_blocks.silenced.title": "受限的", + "about.domain_blocks.suspended.explanation": "來自此伺服器的資料都不會被處理、儲存或交換,也無法和此伺服器上的使用者互動與溝通。", + "about.domain_blocks.suspended.title": "已停權", + "about.not_available": "這個資料於此伺服器上不可存取。", + "about.powered_by": "由 {mastodon} 提供之去中心化社群媒體", + "about.rules": "伺服器規則", "account.account_note_header": "備註", "account.add_or_remove_from_list": "從列表中新增或移除", "account.badges.bot": "機器人", @@ -20,13 +20,16 @@ "account.block_domain": "封鎖來自 {domain} 網域的所有內容", "account.blocked": "已封鎖", "account.browse_more_on_origin_server": "於該伺服器的個人檔案頁上瀏覽更多", - "account.cancel_follow_request": "取消跟隨請求", + "account.cancel_follow_request": "收回跟隨請求", "account.direct": "傳私訊給 @{name}", "account.disable_notifications": "取消來自 @{name} 嘟文的通知", "account.domain_blocked": "已封鎖網域", "account.edit_profile": "編輯個人檔案", "account.enable_notifications": "當 @{name} 嘟文時通知我", "account.endorse": "在個人檔案推薦對方", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "跟隨", "account.followers": "跟隨者", "account.followers.empty": "尚未有人跟隨這位使用者。", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "封鎖並檢舉", "confirmations.block.confirm": "封鎖", "confirmations.block.message": "您確定要封鎖 {name} ?", + "confirmations.cancel_follow_request.confirm": "收回請求", + "confirmations.cancel_follow_request.message": "您確定要收回跟隨 {name} 的請求嗎?", "confirmations.delete.confirm": "刪除", "confirmations.delete.message": "您確定要刪除這則嘟文?", "confirmations.delete_list.confirm": "刪除", diff --git a/config/locales/af.yml b/config/locales/af.yml index cb8c4cf18..de85a6951 100644 --- a/config/locales/af.yml +++ b/config/locales/af.yml @@ -2,7 +2,6 @@ af: about: contact_unavailable: NVT - documentation: Dokumentasie hosted_on: Mastodon gehuisves op %{domain} admin: domain_blocks: diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 0caa22ebe..bb98ccb08 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -2,18 +2,10 @@ ar: about: about_mastodon_html: 'شبكة التواصل الإجتماعية المستقبَليّة: مِن دون إعلانات ، غير خاضعة لرقابة الشركات ، تصميم أخلاقي ولامركزية! بياناتكم مِلك لكم مع ماستدون!' - api: واجهة برمجة التطبيقات - apps: تطبيقات الأجهزة المحمولة contact_missing: لم يتم تعيينه contact_unavailable: غير متوفر - documentation: الدليل hosted_on: ماستدون مُستضاف على %{domain} - source_code: الشفرة المصدرية - what_is_mastodon: ما هو ماستدون ؟ accounts: - choices_html: 'توصيات %{name}:' - endorsements_hint: يمكنك التوصية بالأشخاص الذين تتابعهم من واجهة الويب، وسيظهرون هنا. - featured_tags_hint: يمكنك عرض وسوم محددة سيتم عرضها هنا. follow: اتبع followers: few: متابِعون @@ -24,15 +16,9 @@ ar: zero: متابِعون following: مُتابَع instance_actor_flash: هذا الحساب هو ممثل افتراضي يُستخدم لتمثيل الخادم نفسه ولا يمثل أي مستخدم فردي، يُستخدم لأغراض الاتحاد ولا ينبغي حظره. - joined: انضم·ت في %{date} last_active: آخر نشاط link_verified_on: تم التحقق مِن مالك هذا الرابط بتاريخ %{date} - media: الوسائط - moved_html: "%{name} إنتقلَ إلى %{new_profile_link}:" - network_hidden: إنّ المعطيات غير متوفرة nothing_here: لا يوجد أي شيء هنا! - people_followed_by: الأشخاص الذين يتبعهم %{name} - people_who_follow: الأشخاص الذين يتبعون %{name} pin_errors: following: يجب أن تكون مِن متابعي حساب الشخص الذي تريد إبرازه posts: @@ -43,12 +29,6 @@ ar: two: منشورَيْن zero: منشور posts_tab_heading: المنشورات - posts_with_replies: المنشورات والردود - roles: - bot: روبوت - group: فريق - unavailable: الصفحة التعريفية غير متوفرة - unfollow: إلغاء المتابعة admin: account_actions: action: تنفيذ الإجراء @@ -940,9 +920,6 @@ ar: new: title: إضافة عامل تصفية جديد footer: - developers: المطورون - more: المزيد… - resources: الموارد trending_now: المتداولة الآن generic: all: الكل @@ -979,7 +956,6 @@ ar: following: قائمة المستخدمين المتبوعين muting: قائمة الكتم upload: تحميل - in_memoriam_html: في ذكرى. invites: delete: تعطيل expired: انتهت صلاحيتها @@ -1159,22 +1135,7 @@ ar: remove_selected_follows: الغي متابعة المستخدمين الذين اخترتهم status: حالة الحساب remote_follow: - acct: قم بإدخال عنوان حسابك username@domain الذي من خلاله تود النشاط missing_resource: تعذر العثور على رابط التحويل المطلوب الخاص بحسابك - no_account_html: أليس عندك حساب بعدُ ؟ يُمْكنك التسجيل مِن هنا - proceed: أكمل المتابعة - prompt: 'إنك بصدد متابعة:' - reason_html: "لماذا هذه الخطوة ضرورية؟ %{instance} قد لا يكون هذا الخادم هو الذي سجلت فيه حيابك، لذا نحن بحاجة إلى إعادة توجيهك إلى خادمك الرئيسي أولاً." - remote_interaction: - favourite: - proceed: المواصلة إلى المفضلة - prompt: 'ترغب في إضافة هذا المنشور إلى مفضلتك:' - reblog: - proceed: المواصلة إلى الترقية - prompt: 'ترغب في مشاركة هذا المنشور:' - reply: - proceed: المواصلة إلى الرد - prompt: 'ترغب في الرد على هذا المنشور:' rss: content_warning: 'تحذير عن المحتوى:' descriptions: diff --git a/config/locales/ast.yml b/config/locales/ast.yml index b3916dba0..965a16aeb 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -2,33 +2,18 @@ ast: about: about_mastodon_html: 'La rede social del futuru: ¡ensin anuncios nin vixilancia, con un diseñu éticu y descentralizáu! Controla los tos datos con Mastodon.' - api: API - apps: Aplicaciones pa móviles contact_missing: Nun s'afitó contact_unavailable: N/D - documentation: Documentación hosted_on: Mastodon ta agospiáu en %{domain} - privacy_policy: Política de privacidá - source_code: Códigu fonte - what_is_mastodon: "¿Qué ye Mastodon?" accounts: - featured_tags_hint: Pues destacar etiquetes específiques que van amosase equí. followers: one: Siguidor other: Siguidores - joined: Xunióse en %{date} - moved_html: "%{name} mudóse a %{new_profile_link}:" - network_hidden: Esta información nun ta disponible nothing_here: "¡Equí nun hai nada!" - people_followed_by: Persones a les que sigue %{name} - people_who_follow: Persones que siguen a %{name} posts: one: Artículu other: Artículos posts_tab_heading: Artículos - posts_with_replies: Barritos y rempuestes - roles: - bot: Robó admin: accounts: are_you_sure: "¿De xuru?" @@ -229,10 +214,6 @@ ast: title: Peñeres new: title: Amestar una peñera nueva - footer: - developers: Desendolcadores - more: Más… - resources: Recursos generic: all: Too changes_saved_msg: "¡Los cambeos guardáronse correutamente!" @@ -252,7 +233,6 @@ ast: following: Llista de siguidores muting: Llista de xente silenciao upload: Xubir - in_memoriam_html: N'alcordanza. invites: delete: Desactivar expired: Caducó @@ -325,22 +305,6 @@ ast: relationship: Rellación remove_selected_follows: Dexar de siguir a los usuarios seleicionaos status: Estáu - remote_follow: - acct: Introduz el nome_usuariu@dominiu dende'l que lo quies facer - no_account_html: "¿Nun tienes una cuenta? Pues rexistrate equí" - proceed: Siguir - prompt: 'Vas siguir a:' - reason_html: "¿Por qué esti pasu ye precisu? %{instance} seique nun seya'l sirvidor onde tas rexistráu, polo que precisamos redirixite primero al de to." - remote_interaction: - favourite: - proceed: Siguir - prompt: 'Quies marcar esti barritu como favoritu:' - reblog: - proceed: Siguir - prompt: 'Quies compartir esti barritu:' - reply: - proceed: Siguir - prompt: 'Quies responder a esti barritu:' sessions: browser: Restolador browsers: diff --git a/config/locales/bg.yml b/config/locales/bg.yml index 8fc126ec1..83a5df302 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -2,44 +2,24 @@ bg: about: about_mastodon_html: Mastodon е безплатен сървър с отворен код за социални мрежи. Като децентрализирана алтернатива на комерсиалните платформи, той позволява избягването на риска от монополизация на твоята комуникация от единични компании. Изберете си сървър, на който се доверявате, и ще можете да контактувате с всички останали. Всеки може да пусне Mastodon и лесно да вземе участие в социалната мрежа. - api: API - apps: Мобилни приложения contact_missing: Не е зададено contact_unavailable: Не е приложимо - documentation: Документация hosted_on: Mastodon е хостван на %{domain} - source_code: Програмен код - what_is_mastodon: Какво е Mastodon? accounts: - choices_html: 'Избори на %{name}:' - endorsements_hint: Можете да подкрепите хората, които следите, от уеб интерфейса и те ще се покажат тук. - featured_tags_hint: Можете да представите конкретни хаштагове, които ще се показват тук. follow: Последвай followers: one: Последовател other: Последователи following: Следва - joined: Присъединил се на %{date} last_active: последна дейност link_verified_on: Собствеността върху тази връзка е проверена на %{date} - media: Мултимедия - moved_html: "%{name} се премести в %{new_profile_link}:" - network_hidden: Тази информация не е налична nothing_here: Тук няма никого! - people_followed_by: Хора, които %{name} следва - people_who_follow: Хора, които следват %{name} pin_errors: following: Трябва вече да следвате човека, когото искате да подкрепите posts: one: Публикация other: Публикации posts_tab_heading: Публикации - posts_with_replies: Публикации и отговори - roles: - bot: Бот - group: Група - unavailable: Профилът не е наличен - unfollow: Не следвай admin: account_actions: action: Изпълняване на действие @@ -214,10 +194,7 @@ bg: next: Напред prev: Назад remote_follow: - acct: Въведи потребителско_име@домейн, от които искаш да следваш missing_resource: Неуспешно търсене на нужния URL за пренасочване за твоя акаунт - proceed: Започни следване - prompt: 'Ще последваш:' settings: authorized_apps: Упълномощени приложения back: Обратно към Mastodon diff --git a/config/locales/bn.yml b/config/locales/bn.yml index 4b05ae50c..5a40fad8f 100644 --- a/config/locales/bn.yml +++ b/config/locales/bn.yml @@ -2,44 +2,24 @@ bn: about: about_mastodon_html: মাস্টাডন উন্মুক্ত ইন্টারনেটজালের নিয়ম এবং স্বাধীন ও মুক্ত উৎসের সফটওয়্যারের ভিত্তিতে তৈরী একটি সামাজিক যোগাযোগ মাধ্যম। এটি ইমেইলের মত বিকেন্দ্রীভূত। - api: সফটওয়্যার তৈরীর নিয়ম (API) - apps: মোবাইল অ্যাপ contact_missing: নেই contact_unavailable: প্রযোজ্য নয় - documentation: ব্যবহারবিলি hosted_on: এই মাস্টাডনটি আছে %{domain} এ - source_code: আসল তৈরীপত্র - what_is_mastodon: মাস্টাডনটি কি ? accounts: - choices_html: "%{name} বাছাই:" - endorsements_hint: আপনি ওয়েব ইন্টারফেস থেকে অনুসরণ করা লোকেদের প্রচার করতে পারেন এবং তারা এখানে প্রদর্শিত হবে। - featured_tags_hint: আপনি এখানে নির্দিষ্ট হ্যাশট্যাগগুলি বৈশিষ্ট্যযুক্ত করতে পারেন যেটা এখানে প্রদর্শিত হবে। follow: যুক্ত followers: one: যুক্ত আছে other: যারা যুক্ত হয়েছে following: যুক্ত করা - joined: যোগদান হয় %{date} last_active: শেষ সক্রিয় ছিল link_verified_on: এই লিংকের মালিকানা শেষ চেক করা হয় %{date} তারিখে - media: ছবি বা ভিডিও - moved_html: "%{name} চলে গেছে %{new_profile_link} তে:" - network_hidden: এই তথ্যটি নেই nothing_here: এখানে কিছুই নেই! - people_followed_by: "%{name} যাদেরকে অনুসরণ করে" - people_who_follow: যারা %{name} কে অনুসরণ করে pin_errors: following: সমর্থন করতে অনুসরণ থাকা লাগবে posts: one: লেখা other: লেখাগুলো posts_tab_heading: লেখাগুলো - posts_with_replies: লেখা এবং মতামত - roles: - bot: রোবট - group: গোষ্ঠী - unavailable: প্রোফাইল অনুপলব্ধ - unfollow: অনুসরণ বাদ admin: account_actions: action: করা diff --git a/config/locales/br.yml b/config/locales/br.yml index 773fd559e..afb102dc7 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -1,10 +1,5 @@ --- br: - about: - api: API - apps: Arloadoù pellgomz - source_code: Boneg tarzh - what_is_mastodon: Petra eo Mastodon? accounts: follow: Heuliañ followers: @@ -14,7 +9,6 @@ br: other: Heulier·ez two: Heulier·ez following: O heuliañ - media: Media posts: few: Toud many: Toud @@ -22,12 +16,6 @@ br: other: Toud two: Toud posts_tab_heading: Toudoù - posts_with_replies: Toudoù ha respontoù - roles: - bot: Robot - group: Strollad - unavailable: Profil dihegerz - unfollow: Diheuliañ admin: accounts: avatar: Avatar @@ -193,9 +181,6 @@ br: index: delete: Dilemel title: Siloù - footer: - developers: Diorroerien - more: Muioc'h… generic: all: Pep tra copy: Eilañ diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 51c8d0ebc..c5f21b0cb 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -2,46 +2,26 @@ ca: about: about_mastodon_html: 'La xarxa social del futur: sense anuncis, sense vigilància corporativa, disseny ètic i descentralització. Tingues el control de les teves dades amb Mastodon!' - api: API - apps: Aplicacions mòbils contact_missing: No configurat contact_unavailable: N/D - documentation: Documentació hosted_on: Mastodon allotjat a %{domain} - privacy_policy: Política de Privacitat - source_code: Codi font - what_is_mastodon: Què és Mastodon? + title: Quant a accounts: - choices_html: 'Eleccions de %{name}:' - endorsements_hint: Pots recomanar persones que segueixes des de la interfície de web i apareixeran aquí. - featured_tags_hint: Pots presentar etiquetes específiques que seràn mostrades aquí. follow: Segueix followers: one: Seguidor other: Seguidors following: Seguint instance_actor_flash: Aquest compte és un actor virtual usat per a representar el mateix servidor i no cap usuari individual. Es fa servir per a federar i no s'hauria d'esborrar. - joined: Unit des de %{date} last_active: última activitat link_verified_on: La propietat d'aquest enllaç s'ha verificat el %{date} - media: Mèdia - moved_html: "%{name} s'ha mogut a %{new_profile_link}:" - network_hidden: Aquesta informació no està disponible nothing_here: No hi ha res aquí! - people_followed_by: Persones seguides per %{name} - people_who_follow: Usuaris que segueixen %{name} pin_errors: following: Has d'estar seguint la persona que vulguis avalar posts: one: Publicació other: Publicacions posts_tab_heading: Publicacions - posts_with_replies: Publicacions i respostes - roles: - bot: Bot - group: Grup - unavailable: Perfil inaccessible - unfollow: Deixa de seguir admin: account_actions: action: Realitzar acció @@ -344,6 +324,7 @@ ca: listed: Enumerat new: title: Afegeix emoji personalitzat nou + no_emoji_selected: No s'ha canviat cap emoji perquè cap ha estat seleccionat not_permitted: No tens permís per a realitzar aquesta acció overwrite: Sobreescriure shortcode: Codi curt @@ -812,6 +793,9 @@ ca: description_html: Aquests son enllaços que ara mateix s'estan compartint molt per els comptes que el teu servidor en veu les publicacions. Poden ajudar als teus usuaris a trobar què està passant en el món. Cap dels enllaços es mostra publicament fins que no aprovis el mitjà. També pots aceptar o rebutjar enllaços individuals. disallow: No permetre l'enllaç disallow_provider: No permetre el mitjà + no_link_selected: No s'ha canviat cap enllaç perquè cap ha estat seleccionat + publishers: + no_publisher_selected: No s'ha canviat cap editor perquè cap ha estat seleccionat shared_by_over_week: one: Compartit per una persona en la darrera setmana other: Compartit per %{count} persones en la darrera setmana @@ -831,6 +815,7 @@ ca: description_html: Aquestes son publicacions que el teu servidor veu i que ara mateix s'estan compartint i afavorint molt. Poden ajudar als teus nous usuaris i als que retornen a trobar més gent a qui seguir. Cap publicació es mostra publicament fins que no aprovis l'autor i l'autor permeti que el seu compte sigui sugerit a altres. També pots aceptar o rebutjar publicacions individuals. disallow: Rebutja publicació disallow_account: Rebutja autor + no_status_selected: No s'ha canviat els apunts en tendència perquè cap ha estat seleccionat not_discoverable: L'autor no ha activat poder ser detectable shared_by: one: Compartit o afavorit una vegada @@ -846,6 +831,7 @@ ca: tag_uses_measure: total usos description_html: Aquestes son etiquetes que ara mateix estan apareixen en moltes publicacions que el teu servidor veu. Poden ajudar als teus usuaris a trobar de què està parlant majoritariament la gent en aquest moment. Cap etiqueta es mostra publicament fins que no l'aprovis. listable: Es pot suggerir + no_tag_selected: No s'ha canviat cap etiqueta perquè cap ha estat seleccionada not_listable: No es pot suggerir not_trendable: No apareixeran en les tendències not_usable: No pot ser emprat @@ -1169,9 +1155,6 @@ ca: hint: Aquest filtre aplica als apunts seleccionats independentment d'altres criteris. Pots afegir més apunts a aquest filtre des de l'interfície Web. title: Apunts filtrats footer: - developers: Desenvolupadors - more: Més… - resources: Recursos trending_now: En tendència generic: all: Tot @@ -1214,7 +1197,6 @@ ca: following: Llista de seguits muting: Llista de silenciats upload: Carrega - in_memoriam_html: En Memòria. invites: delete: Desactiva expired: Caducat @@ -1394,22 +1376,7 @@ ca: remove_selected_follows: Deixa de seguir als usuaris seleccionats status: Estat del compte remote_follow: - acct: Escriu el teu usuari@domini des del qual vols seguir missing_resource: No s'ha pogut trobar la URL de redirecció necessària per al compte - no_account_html: No tens cap compte? Pots registrar-te aquí - proceed: Comença a seguir - prompt: 'Seguiràs a:' - reason_html: "Per què és necessari aquest pas? %{instance} pot ser que no sigui el servidor on estàs registrat per tant primer hem de redirigir-te al teu servidor." - remote_interaction: - favourite: - proceed: Procedir a afavorir - prompt: 'Vols marcar com a favorit aquesta publicació:' - reblog: - proceed: Procedir a impulsar - prompt: 'Vols impulsar aquesta publicació:' - reply: - proceed: Procedir a respondre - prompt: 'Vols respondre a aquesta publicació:' reports: errors: invalid_rules: no fa referència a normes vàlides diff --git a/config/locales/ckb.yml b/config/locales/ckb.yml index 0f2d8b580..56f34d50f 100644 --- a/config/locales/ckb.yml +++ b/config/locales/ckb.yml @@ -2,45 +2,25 @@ ckb: about: about_mastodon_html: 'تۆڕی کۆمەڵایەتی داهاتوو: هیچ ڕیکلامێک ، هیچ چاودێرییەکی کۆمپانیا ، دیزاینی ئەخلاقی و لامەرکەزی! خاوەنی داتاکانت نابێ لە ماستۆدۆن!' - api: API - apps: ئەپەکانی مۆبایل contact_missing: سازنەکراوە contact_unavailable: بوونی نییە - documentation: بەڵگەکان hosted_on: مەستودۆن میوانداری کراوە لە %{domain} - source_code: کۆدی سەرچاوە - what_is_mastodon: ماستۆدۆن چییە? accounts: - choices_html: 'هەڵبژاردنەکانی %{name}:' - endorsements_hint: دەتوانیت ئەو کەسانە پەسەند بکەیت کە پەیڕەویان دەکەیت لە ڕووکاری وێب، و ئەوان لێرە دەردەکەون. - featured_tags_hint: دەتوانیت هاشتاگی تایبەت پێشکەش بکەیت کە لێرە پیشان دەدرێت. follow: شوێن کەوە followers: one: شوێنکەوتوو other: شوێن‌کەوتووان following: شوێن‌کەوتووی instance_actor_flash: ئەم ئەکاونتە ئەکتەرێکی مەجازییە کە بەکاردێت بۆ نوێنەرایەتیکردنی خودی سێرڤەرەکە نەک هیچ بەکارهێنەرێکی تاکەکەسی. بۆ مەبەستی فیدراسیۆن بەکاردێت و نابێت ڕابگیرێت. - joined: بەشداری %{date} last_active: دوا چالاکی link_verified_on: خاوەنداریەتی ئەم لینکە لە %{date} چێک کراوە - media: میدیا - moved_html: "%{name} گواستراوەتەوە بۆ %{new_profile_link}:" - network_hidden: ئەم زانیاریە بەردەست نیە nothing_here: لێرە هیچ نییە! - people_followed_by: ئەو کەسانەی کە %{name} بەدوایدا دەکەون - people_who_follow: ئەو کەسانەی کە بەدوای %{name} دا دەکەون pin_errors: following: تۆ دەبێت هەر ئێستا بە دوای ئەو کەسەدا بیت کە دەتەوێت پەسەندی بکەیت posts: one: توت other: تووتەکان posts_tab_heading: تووتەکان - posts_with_replies: تووتەکان و وڵامەکان - roles: - bot: بۆت - group: گرووپ - unavailable: پرۆفایل بەردەست نیە - unfollow: بەدوادانەچو admin: account_actions: action: ئەنجامدانی کردار @@ -808,9 +788,6 @@ ckb: new: title: زیادکردنی فلتەری نوێ footer: - developers: پەرەپێدەران - more: زیاتر… - resources: سەرچاوەکان trending_now: هەوادارانی ئێستا generic: all: هەموو @@ -839,7 +816,6 @@ ckb: following: لیستی خوارەوە muting: لیستی کپکردنەوە upload: بارکردن - in_memoriam_html: لەیادبوون. invites: delete: لەکارخستن expired: بەسەرچووە @@ -984,22 +960,7 @@ ckb: remove_selected_follows: کۆتایی بە بەدوادانەچوی بەکارهێنەرە دیاریکراوەکان بدە status: دۆخی هەژمارە remote_follow: - acct: ناونیشانی هەژمارەی username@domainخۆت لێرە بنووسە missing_resource: نەیتوانی URLی ئاراستەکردنەوەی پێویست بدۆزێتەوە بۆ ئەژمێرەکەت - no_account_html: هێشتا نەبووی بە ئەندام؟ لێرە دەتوانی هەژمارەیەک دروست بکەی - proceed: بەردەوام بە بۆ بەدواداچوون - prompt: 'تۆ بەدوای دا دەچیت:' - reason_html: " بۆچی ئەم هەنگاوە پێویستە؟ %{instance} لەوانەیە ئەو ڕاژەیە نەبێت کە تۆ تۆمارت کردووە، بۆیە پێویستە سەرەتا دووبارە ئاڕاستەت بکەین بۆ ڕاژەکاری ماڵەوەت." - remote_interaction: - favourite: - proceed: بۆ دڵخوازکردنی ئەم توتە - prompt: 'دەتەوێت ئەم تووتە تپەسەند بکەیت؛:' - reblog: - proceed: بەردەوام بە بۆ دووبارە توتاندن - prompt: 'دەتەوێت ئەم تووتە دووبارە بکەیتەوە:' - reply: - proceed: بۆ وەڵامدانەوە - prompt: 'دەتەوێت ئەم تووتە وڵام بدەیتەوە:' scheduled_statuses: over_daily_limit: ئێوە لە سنووری ڕیپێدراوی %{limit} توتی ئەو رۆژە،خۆرتر ڕۆیشتوویت over_total_limit: تۆ سنووری خشتەکراوی %{limit} ت بەزاندووە diff --git a/config/locales/co.yml b/config/locales/co.yml index 55e03d15a..48909a4b5 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -2,45 +2,25 @@ co: about: about_mastodon_html: 'A rete suciale di u futuru: micca pubblicità, micca surveglianza, cuncezzione etica, è dicentralizazione! Firmate in cuntrollu di i vostri dati cù Mastodon!' - api: API - apps: Applicazione per u telefuninu contact_missing: Mancante contact_unavailable: Micca dispunibule - documentation: Ducumentazione hosted_on: Mastodon allughjatu nant’à %{domain} - source_code: Codice di fonte - what_is_mastodon: Quale hè Mastodon? accounts: - choices_html: "%{name} ricumanda:" - endorsements_hint: Pudete appughjà i conti chì siguitate dapoi l'interfaccia web, è saranu mustrati quì. - featured_tags_hint: Pudete mette in mostra qualchì hashtag chì saranu affissati quì. follow: Siguità followers: one: Abbunatu·a other: Abbunati following: Abbunamenti instance_actor_flash: Stu contu virtuale riprisenta u servore stessu, micca un'utilizatore individuale. Hè utilizatu per scopi di federazione è ùn duveria mai esse suspesu. - joined: Quì dapoi %{date} last_active: ultima attività link_verified_on: A pruprietà d'issu ligame hè stata verificata u %{date} - media: Media - moved_html: "%{name} hà cambiatu di contu, avà hè nant’à %{new_profile_link}:" - network_hidden: St'infurmazione ùn hè micca dispunibule nothing_here: Ùn c’hè nunda quì! - people_followed_by: Seguitati da %{name} - people_who_follow: Seguitanu %{name} pin_errors: following: Duvete digià siguità a persona che vulete ricumandà posts: one: Statutu other: Statuti posts_tab_heading: Statuti - posts_with_replies: Statuti è risposte - roles: - bot: Bot - group: Gruppu - unavailable: Prufile micca dispunibule - unfollow: Ùn siguità più admin: account_actions: action: Realizà un'azzione @@ -787,9 +767,6 @@ co: new: title: Aghjunghje un novu filtru footer: - developers: Sviluppatori - more: Di più… - resources: Risorse trending_now: Tindenze d'avà generic: all: Tuttu @@ -820,7 +797,6 @@ co: following: Persone chì seguitate muting: Persone chì piattate upload: Impurtà - in_memoriam_html: In mimoria. invites: delete: Disattivà expired: Spirata @@ -986,22 +962,7 @@ co: remove_selected_follows: Ùn siguità più l'utilizatori selezziunati status: Statutu di u contu remote_follow: - acct: Entrate u vostru cugnome@istanza da induve vulete siguità stu contu missing_resource: Ùn avemu pussutu à truvà l’indirizzu di ridirezzione - no_account_html: Ùn avete micca un contu? Pudete arregistravi quì - proceed: Cuntinuà per siguità - prompt: 'Avete da siguità:' - reason_html: "Perchè hè necessaria sta tappa? %{instance} ùn hè forse micca u servore induve site arregistratu·a, allora primu duvemu riindirizzavi à u vostru servore." - remote_interaction: - favourite: - proceed: Cuntinuà per favurisce - prompt: 'Vulete aghjunghje stu statutu à i vostri favuriti:' - reblog: - proceed: Cuntinuà per sparte - prompt: 'Vulete sparte stu statutu:' - reply: - proceed: Cuntinuà per risponde - prompt: 'Vulete risponde à stu statutu:' scheduled_statuses: over_daily_limit: Avete trapassatu a limita di %{limit} statuti pianificati per stu ghjornu over_total_limit: Avete trapassatu a limita di %{limit} statuti pianificati diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 8b6b266e9..08e9e187b 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -2,19 +2,11 @@ cs: about: about_mastodon_html: 'Sociální síť budoucnosti: žádné reklamy, žádné korporátní sledování, etický design a decentralizace! S Mastodonem vlastníte svoje data!' - api: API - apps: Mobilní aplikace contact_missing: Nenastaveno contact_unavailable: Neuvedeno - documentation: Dokumentace hosted_on: Mastodon na doméně %{domain} - privacy_policy: Ochrana osobních údajů - source_code: Zdrojový kód - what_is_mastodon: Co je Mastodon? + title: O aplikaci accounts: - choices_html: 'Volby %{name}:' - endorsements_hint: Z webového rozhraní můžete podpořit lidi, které sledujete. Ti se poté zobrazí zde. - featured_tags_hint: Můžete vybrat konkrétní hashtagy, které se zobrazí zde. follow: Sledovat followers: few: Sledující @@ -23,15 +15,9 @@ cs: other: Sledujících following: Sledovaných instance_actor_flash: Tento účet je virtuální aktér, který představuje server samotný, nikoliv jednotlivého uživatele. Používá se pro účely federace a neměl by být pozastaven. - joined: Uživatelem od %{date} last_active: naposledy aktivní link_verified_on: Vlastnictví tohoto odkazu bylo zkontrolováno %{date} - media: Média - moved_html: 'Uživatel %{name} se přesunul na %{new_profile_link}:' - network_hidden: Tato informace není k dispozici nothing_here: Nic tu není! - people_followed_by: Lidé, které sleduje %{name} - people_who_follow: Lidé, kteří sledují %{name} pin_errors: following: Osobu, kterou chcete podpořit, už musíte sledovat posts: @@ -40,12 +26,6 @@ cs: one: Příspěvek other: Příspěvků posts_tab_heading: Příspěvky - posts_with_replies: Příspěvky a odpovědi - roles: - bot: Robot - group: Skupina - unavailable: Profil není dostupný - unfollow: Přestat sledovat admin: account_actions: action: Vykonat akci @@ -342,6 +322,7 @@ cs: listed: Uvedeno new: title: Přidat nové vlastní emoji + no_emoji_selected: Žádné emoji nebyly změněny, protože nikdo nebyl vybrán not_permitted: K provedené této akce nemáte dostatečná oprávnění overwrite: Přepsat shortcode: Zkratka @@ -832,6 +813,9 @@ cs: description_html: Toto jsou odkazy, které jsou momentálně hojně sdíleny účty, jejichž příspěvky váš server vidí. To může pomoct vašim uživatelům zjistit, co se děje ve světě. Žádné odkazy se nezobrazují veřejně, dokud neschválíte vydavatele. Můžete také povolit nebo zamítnout jednotlivé odkazy. disallow: Zakázat odkaz disallow_provider: Zakázat vydavatele + no_link_selected: Nebyly změněny žádné odkazy, protože nebyl vybrán žádný + publishers: + no_publisher_selected: Nebyly změněny žádní publikující, protože nikdo nebyl vybrán shared_by_over_week: few: Sdílený %{count} lidmi za poslední týden many: Sdílený %{count} lidmi za poslední týden @@ -853,6 +837,7 @@ cs: description_html: Toto jsou příspěvky, o kterých váš server ví, že jsou momentálně hodně sdíleny a oblibovány. To může pomoci vašim novým i vracejícím se uživatelům najít další lidi ke sledování. Žádné příspěvky se nezobrazují veřejně, dokud neschválíte autora a tento autor nepovolí navrhování svého účtu ostatním. Můžete také povolit či zamítnout jednotlivé příspěvky. disallow: Zakázat příspěvek disallow_account: Zakázat autora + no_status_selected: Nebyly změněny žádné populární příspěvky, protože nikdo nebyl vybrán not_discoverable: Autor nepovolil navrhování svého účtu ostatním shared_by: few: "%{friendly_count} sdílení nebo oblíbení" @@ -870,6 +855,7 @@ cs: tag_uses_measure: použití celkem description_html: Toto jsou hashtagy, které se momentálně objevují v mnoha příspěvcích, které váš server vidí. To může pomoci vašim uživatelům zjistit, o čem lidé zrovna nejvíce mluví. Žádné hashtagy se nezobrazují veřejně, dokud je neschválíte. listable: Může být navrhován + no_tag_selected: Nebyly změněny žádné štítky, protože nikdo nebyl vybrán not_listable: Nebude navrhován not_trendable: Neobjeví se mezi populárními not_usable: Nemůže být používán @@ -979,6 +965,7 @@ cs: warning: Zacházejte s těmito daty opatrně. Nikdy je s nikým nesdílejte! your_token: Váš přístupový token auth: + apply_for_account: Přejít na čekací frontu change_password: Heslo delete_account: Odstranit účet delete_account_html: Chcete-li odstranit svůj účet, pokračujte zde. Budete požádáni o potvrzení. @@ -1196,9 +1183,6 @@ cs: hint: Tento filtr se vztahuje na výběr jednotlivých příspěvků bez ohledu na jiná kritéria. Do tohoto filtru můžete přidat více příspěvků z webového rozhraní. title: Filtrované příspěvky footer: - developers: Vývojáři - more: Více… - resources: Zdroje trending_now: Právě populární generic: all: Všechny @@ -1234,7 +1218,6 @@ cs: following: Seznam sledovaných muting: Seznam ignorovaných upload: Nahrát - in_memoriam_html: In Memoriam. invites: delete: Deaktivovat expired: Expirováno @@ -1416,22 +1399,7 @@ cs: remove_selected_follows: Přestat sledovat vybrané uživatele status: Stav účtu remote_follow: - acct: Napište svou přezdívku@doménu, ze které chcete jednat missing_resource: Nemůžeme najít požadovanou přesměrovávací URL adresu pro váš účet - no_account_html: Ještě nemáte účet? Tady se můžete zaregistrovat - proceed: Pokračovat ke sledování - prompt: 'Budete sledovat:' - reason_html: "Proč je tento krok nutný? %{instance} nemusí být serverem, na kterém jste registrováni, a proto vás musíme nejdříve přesměrovat na váš domovský server." - remote_interaction: - favourite: - proceed: Pokračovat k oblíbení - prompt: 'Chcete si oblíbit tento příspěvek:' - reblog: - proceed: Pokračovat k boostnutí - prompt: 'Chcete boostnout tento příspěvek:' - reply: - proceed: Pokračovat k odpovědi - prompt: 'Chcete odpovědět na tento příspěvek:' reports: errors: invalid_rules: neodkazuje na platná pravidla diff --git a/config/locales/cy.yml b/config/locales/cy.yml index adcff7da7..756bcea87 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -2,18 +2,10 @@ cy: about: about_mastodon_html: Mae Mastodon yn rwydwaith cymdeithasol sy'n seiliedig ar brotocolau gwe a meddalwedd cod agored rhad ac am ddim. Yn debyg i e-bost mae'n ddatganoledig. - api: API - apps: Apiau symudol contact_missing: Heb ei osod contact_unavailable: Ddim yn berthnasol - documentation: Dogfennaeth hosted_on: Mastodon wedi ei weinyddu ar %{domain} - source_code: Cod ffynhonnell - what_is_mastodon: Beth yw Mastodon? accounts: - choices_html: 'Dewisiadau %{name}:' - endorsements_hint: Gallwch gymeradwyo pobl rydych chi'n eu dilyn o'r rhyngwyneb gwe, a byddan nhw'n ymddangos yma. - featured_tags_hint: Gallwch ychwanegu hashnodau penodol a fydd yn cael eu harddangos yma. follow: Dilynwch followers: few: Dilynwyr @@ -24,15 +16,9 @@ cy: zero: Dilynwyr following: Yn dilyn instance_actor_flash: Mae'r cyfrif hwn yn actor rhithwir a ddefnyddir i gynrychioli'r gweinydd ei hun ac nid unrhyw ddefnyddiwr unigol. Fe'i defnyddir at ddibenion ffederasiwn ac ni ddylid ei atal. - joined: Ymunodd %{date} last_active: diweddaraf link_verified_on: Gwiriwyd perchnogaeth y ddolen yma ar %{date} - media: Cyfryngau - moved_html: 'Mae %{name} wedi symud i %{new_profile_link}:' - network_hidden: Nid yw'r wybodaeth hyn ar gael nothing_here: Does dim byd yma! - people_followed_by: Pobl y mae %{name} yn ei ddilyn - people_who_follow: Pobl sy'n dilyn %{name} pin_errors: following: Rhaid i ti fod yn dilyn y person yr ydych am ei gymeradwyo yn barod posts: @@ -43,12 +29,6 @@ cy: two: Tŵtiau zero: Tŵtiau posts_tab_heading: Postiadau - posts_with_replies: Postiadau ac atebion - roles: - bot: Bot - group: Grŵp - unavailable: Proffil ddim ar gael - unfollow: Dad-ddilyn admin: account_actions: action: Cyflawni gweithred @@ -651,9 +631,6 @@ cy: new: title: Ychwanegu hidlydd newydd footer: - developers: Datblygwyr - more: Mwy… - resources: Adnoddau trending_now: Yn tueddu nawr generic: all: Popeth @@ -685,7 +662,6 @@ cy: following: Rhestr dilyn muting: Rhestr tawelu upload: Uwchlwytho - in_memoriam_html: Er cof. invites: delete: Dadactifadu expired: Wedi darfod @@ -836,24 +812,7 @@ cy: remove_selected_follows: Dad-ddilyn y defnyddwyr dewisiedig status: Statws cyfrif remote_follow: - acct: Mewnbynnwch eich enwdefnyddiwr@parth yr ydych eisiau gweithredu ohonno missing_resource: Ni ellir canfod yr URL ailgyferio angenrheidiol i'ch cyfrif - no_account_html: Heb gyfrif? Mae modd i chi gofrestru yma - proceed: Ymlaen i ddilyn - prompt: 'Yr ydych am ddilyn:' - reason_html: |- - Pam yw'r cam hyn yn angenrheidiol? - Efallai nid yw %{instance} yn gweinydd ble wnaethoch gofrestru, felly mae'n rhaid i ni ailarweinio chi at eich gweinydd catref yn gyntaf. - remote_interaction: - favourite: - proceed: Ymlaen i hoffi - prompt: 'Hoffech hoffi''r tŵt hon:' - reblog: - proceed: Ymlaen i fŵstio - prompt: 'Hoffech fŵstio''r tŵt hon:' - reply: - proceed: Ymlaen i ateb - prompt: 'Hoffech ateb y tŵt hon:' scheduled_statuses: over_daily_limit: Rydych wedi rhagori'r cyfwng o %{limit} o dŵtiau rhestredig ar y dydd hynny over_total_limit: Rydych wedi rhagori'r cyfwng o %{limit} o dŵtiau rhestredig diff --git a/config/locales/da.yml b/config/locales/da.yml index 2758fa2af..f3b030cc0 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -2,46 +2,26 @@ da: about: about_mastodon_html: 'Fremtidens sociale netværk: Ingen annoncer, ingen virksomhedsovervågning, etisk design og decentralisering! Vær ejer af egne data med Mastodon!' - api: API - apps: Mobil-apps contact_missing: Ikke angivet contact_unavailable: Utilgængelig - documentation: Dokumentation hosted_on: Mostodon hostet på %{domain} - privacy_policy: Fortrolighedspolitik - source_code: Kildekode - what_is_mastodon: Hvad er Mastodon? + title: Om accounts: - choices_html: "%{name}s valg:" - endorsements_hint: Man kan støtte personer, man følger, fra webgrænsefladen, som så vil fremgå hér. - featured_tags_hint: Man kan fremhæve bestemte hashtags, som så vil fremgå hér. follow: Følg followers: one: Følger other: Følgere following: Følger instance_actor_flash: Denne konto er en virtuel aktør repræsenterende selve serveren og ikke en individuel bruger. Den anvendes til fællesformål og bør ikke suspenderes. - joined: Tilmeldt %{date} last_active: senest aktiv link_verified_on: Ejerskab af dette link blev tjekket %{date} - media: Medier - moved_html: "%{name} er flyttet til %{new_profile_link}:" - network_hidden: Denne information er utilgængelig nothing_here: Der er intet hér! - people_followed_by: Personer, som %{name} følger - people_who_follow: Personer, som følger %{name} pin_errors: following: Man skal allerede følge den person, man ønsker at støtte posts: one: Indlæg other: Indlæg posts_tab_heading: Indlæg - posts_with_replies: Indlæg og svar - roles: - bot: Bot - group: Gruppe - unavailable: Profil utilgængelig - unfollow: Følg ikke længere admin: account_actions: action: Udfør handling @@ -344,6 +324,7 @@ da: listed: Oplistet new: title: Tilføj ny tilpasset emoji + no_emoji_selected: Ingen emoji ændret (da ingen var valgt) not_permitted: Ingen tilladelse til at udføre denne handling overwrite: Overskriv shortcode: Kortkode @@ -640,6 +621,7 @@ da: administrator: Administrator administrator_description: Brugere med denne rolle kan omgå alle tilladelser delete_user_data: Slet brugerdata + delete_user_data_description: Tillader brugere at slette andre brugeres data straks invite_users: Invitere brugere invite_users_description: Tillader brugere at invitere nye personer til serveren manage_announcements: Håndtere bekendtgørelser @@ -811,6 +793,9 @@ da: description_html: Disse er links, som pt. deles meget af konti, som serveren ser indlæg fra. Det kan hjælpe ens brugere med at finde ud af, hvad der sker i verden. Ingen links vises offentligt, før man godkender udgiveren. Man kan også tillade/afvise individuelle links. disallow: Tillad ikke link disallow_provider: Tillad ikke udgiver + no_link_selected: Intet link ændret (da intet var valgt) + publishers: + no_publisher_selected: Ingen udgiver ændret (da ingen var valgt) shared_by_over_week: one: Delt af én person den seneste uge other: Delt af %{count} personer den seneste uge @@ -830,6 +815,7 @@ da: description_html: Disse er indlæg, serveren kender til, som pt. deles og favoritmarkeres meget. Det kan hjælpe nye og tilbagevendende brugere til at finde flere personer at følge. Ingen indlæg vises offentligt, før man godkender forfatteren, samt denne tillader sin konto at blive foreslået andre. Man kan også tillade/afvise individuelle indlæg. disallow: Tillad ikke indlæg disallow_account: Tillad ikke forfatter + no_status_selected: Intet tendensindlæg ændret (da intet var valgt) not_discoverable: Forfatteren har ikke valgt at kunne findes shared_by: one: Delt eller favoritmarkeret én gang @@ -845,6 +831,7 @@ da: tag_uses_measure: anvendelser i alt description_html: Disse er hashtags, som pt. vises i en masse indlæg, som serveren ser. Det kan hjælpe brugerne til at finde ud af, hvad folk taler mest om pt. Ingen hashtags vises offentligt, før man godkender dem. listable: Kan foreslås + no_tag_selected: Intet tag ændret (da intet var valgt) not_listable: Foreslås ikke not_trendable: Vises ikke under tendenser not_usable: Kan ikke anvendes @@ -1168,9 +1155,6 @@ da: hint: Dette filter gælder for udvalgte, individuelle indlæg uanset andre kriterier. Flere indlæg kan føjes til filteret via webfladen. title: Filtrerede indlæg footer: - developers: Udviklere - more: Mere… - resources: Ressourcer trending_now: Trender lige nu generic: all: Alle @@ -1213,7 +1197,6 @@ da: following: Følgningsliste muting: Tavsgørelsesliste upload: Upload - in_memoriam_html: Til minde om. invites: delete: Deaktivér expired: Udløbet @@ -1393,22 +1376,7 @@ da: remove_selected_follows: Følg ikke længere valgte brugere status: Kontostatus remote_follow: - acct: Angiv det brugernavn@domæne, hvorfra du vil ageres missing_resource: Nødvendige omdirigerings-URL til kontoen ikke fundet - no_account_html: Har ingen konto? Der kan oprettes én hér - proceed: Fortsæt for at følge - prompt: 'Du er ved at følge:' - reason_html: "Hvorfor er dette trin nødvendigt? %{instance} er måske ikke den server, hvorpå man er registreret, så man skal først omdirigeres til sin hjemmeserver." - remote_interaction: - favourite: - proceed: Fortsæt for at favoritmarkere - prompt: 'Favoritmarkere dette indlæg:' - reblog: - proceed: Fortsæt for at booste - prompt: 'Booste dette indlæg:' - reply: - proceed: Fortsæt for at besvare - prompt: 'Besvare dette indlæg:' reports: errors: invalid_rules: refererer ikke til gyldige regler @@ -1661,6 +1629,7 @@ da: edit_profile_step: Man kan tilpasse sin profil ved at uploade profilfoto, overskrift, ændre visningsnavn mv. Ønskes nye følgere vurderet, før de må følge dig, kan kontoen låses. explanation: Her er nogle råd for at få dig i gang final_action: Begynd at poste + final_step: 'Begynd at poste! Selv uden følgere vil offentlige indlæg kunne ses af andre f.eks. på den lokale tidslinje og i hashtags. Man kan introducere sig selv via hastagget #introductions.' full_handle: Dit fulde brugernavn full_handle_hint: Dette er, hvad du oplyser til dine venner, så de kan sende dig beskeder eller følge dig fra andre server. subject: Velkommen til Mastodon diff --git a/config/locales/de.yml b/config/locales/de.yml index a30c6ad29..e1e298ef0 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -2,46 +2,26 @@ de: about: about_mastodon_html: Mastodon ist ein soziales Netzwerk. Es basiert auf offenen Web-Protokollen und freier, quelloffener Software. Es ist dezentral – genau wie E-Mail! - api: API - apps: Mobile Apps contact_missing: Nicht angegeben contact_unavailable: Nicht verfügbar - documentation: Dokumentation hosted_on: Mastodon, gehostet auf %{domain} - privacy_policy: Datenschutzerklärung - source_code: Quellcode - what_is_mastodon: Was ist Mastodon? + title: Über accounts: - choices_html: "%{name} empfiehlt:" - endorsements_hint: Du kannst Personen, denen du über die Weboberfläche folgst, auswählen, und sie werden hier angezeigt. - featured_tags_hint: Du kannst spezifische Hashtags, die hier angezeigt werden, angeben. follow: Folgen followers: one: Folgender other: Folgende following: Folgt instance_actor_flash: Dieses Konto ist ein virtueller Akteur, der den Server selbst repräsentiert und nicht ein einzelner Benutzer. Es wird für Föderationszwecke verwendet und sollte nicht gesperrt werden. - joined: Beigetreten am %{date} last_active: zuletzt aktiv link_verified_on: Besitz des Links wurde überprüft am %{date} - media: Medien - moved_html: "%{name} ist auf %{new_profile_link} umgezogen:" - network_hidden: Diese Informationen sind nicht verfügbar nothing_here: Hier gibt es nichts! - people_followed_by: Profile, denen %{name} folgt - people_who_follow: Profile, die %{name} folgen pin_errors: following: Du musst dieser Person bereits folgen, um sie empfehlen zu können posts: one: Beitrag other: Beiträge posts_tab_heading: Beiträge - posts_with_replies: Beiträge mit Antworten - roles: - bot: Bot - group: Gruppe - unavailable: Profil nicht verfügbar - unfollow: Entfolgen admin: account_actions: action: Aktion ausführen @@ -344,6 +324,7 @@ de: listed: Gelistet new: title: Eigenes Emoji hinzufügen + no_emoji_selected: Keine Emojis wurden geändert, da keine ausgewählt wurden not_permitted: Du bist für die Durchführung dieses Vorgangs nicht berechtigt overwrite: Überschreiben shortcode: Kürzel @@ -812,6 +793,9 @@ de: description_html: Dies sind Links, die derzeit von Konten geteilt werden, von denen dein Server Beiträge sieht. Es kann deinen Benutzern helfen herauszufinden, was in der Welt vor sich geht. Es werden keine Links öffentlich angezeigt, bis du den Publisher genehmigst. Du kannst auch einzelne Links zulassen oder ablehnen. disallow: Verbiete Link disallow_provider: Verbiete Herausgeber + no_link_selected: Keine Links wurden geändert, da keine ausgewählt wurden + publishers: + no_publisher_selected: Es wurden keine Herausgeber geändert, da keine ausgewählt wurden shared_by_over_week: one: In der letzten Woche von einer Person geteilt other: In der letzten Woche von %{count} Personen geteilt @@ -831,6 +815,7 @@ de: description_html: Dies sind Beiträge, von denen dein Server weiß, dass sie derzeit viel geteilt und favorisiert werden. Es kann deinen neuen und wiederkehrenden Benutzern helfen, weitere Personen zu finden. Es werden keine Beiträge öffentlich angezeigt, bis du den Autor genehmigst und der Autor es zulässt, sein Konto anderen Benutzern zeigen zu lassen. Du kannst auch einzelne Beiträge zulassen oder ablehnen. disallow: Beitrag verbieten disallow_account: Autor verbieten + no_status_selected: Keine angesagten Beiträge wurden geändert, da keine ausgewählt wurden not_discoverable: Der Autor hat sich nicht dafür entschieden, entdeckt zu werden shared_by: one: Einmal geteilt oder favorisiert @@ -846,6 +831,7 @@ de: tag_uses_measure: Gesamtnutzungen description_html: Dies sind Hashtags, die derzeit in vielen Beiträgen erscheinen, die dein Server sieht. Es kann deinen Benutzern helfen, herauszufinden, worüber die Menschen im Moment am meisten reden. Es werden keine Hashtags öffentlich angezeigt, bis du sie genehmigst. listable: Kann vorgeschlagen werden + no_tag_selected: Keine Tags wurden geändert, da keine ausgewählt wurden not_listable: Wird nicht vorgeschlagen not_trendable: Wird nicht unter Trends angezeigt not_usable: Kann nicht verwendet werden @@ -1169,9 +1155,6 @@ de: hint: Dieser Filter wird verwendet, um einzelne Beiträge unabhängig von anderen Kriterien auszuwählen. Du kannst mehr Beiträge zu diesem Filter über die Webschnittstelle hinzufügen. title: Gefilterte Beiträge footer: - developers: Entwickler - more: Mehr… - resources: Ressourcen trending_now: In den Trends generic: all: Alle @@ -1214,7 +1197,6 @@ de: following: Folgeliste muting: Stummschaltungsliste upload: Hochladen - in_memoriam_html: In Gedenken. invites: delete: Deaktivieren expired: Abgelaufen @@ -1394,22 +1376,7 @@ de: remove_selected_follows: Entfolge ausgewählten Benutzern status: Kontostatus remote_follow: - acct: Profilname@Domain, von wo aus du dieser Person folgen möchtest missing_resource: Die erforderliche Weiterleitungs-URL für dein Konto konnte nicht gefunden werden - no_account_html: Noch kein Konto? Du kannst dich hier anmelden - proceed: Weiter - prompt: 'Du wirst dieser Person folgen:' - reason_html: "Warum ist dieser Schritt erforderlich?%{instance} ist möglicherweise nicht der Server, auf dem du registriert bist, also müssen wir dich erst auf deinen Heimserver weiterleiten." - remote_interaction: - favourite: - proceed: Fortfahren zum Favorisieren - prompt: 'Du möchtest diesen Beitrag favorisieren:' - reblog: - proceed: Fortfahren zum Teilen - prompt: 'Du möchtest diesen Beitrag teilen:' - reply: - proceed: Fortfahren zum Antworten - prompt: 'Du möchtest auf diesen Beitrag antworten:' reports: errors: invalid_rules: verweist nicht auf gültige Regeln diff --git a/config/locales/doorkeeper.kab.yml b/config/locales/doorkeeper.kab.yml index d17979302..ba1d7057a 100644 --- a/config/locales/doorkeeper.kab.yml +++ b/config/locales/doorkeeper.kab.yml @@ -79,6 +79,19 @@ kab: authorized_applications: destroy: notice: Yettwaḥwi wesnas. + grouped_scopes: + title: + accounts: Imiḍanen + admin/accounts: Tadbelt n imiḍan + crypto: Awgelhen seg yixef ɣer yixef + favourites: Ismenyifen + filters: Imzizdigen + lists: Tibdarin + notifications: Tilɣa + push: Tilɣa yettudemmren + reports: Ineqqisen + search: Nadi + statuses: Tisuffaɣ layouts: admin: nav: diff --git a/config/locales/el.yml b/config/locales/el.yml index 0ed598027..baafb1a61 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -2,45 +2,25 @@ el: about: about_mastodon_html: 'Το κοινωνικό δίκτυο του μέλλοντος: Χωρίς διαφημίσεις, χωρίς εταιρίες να σε κατασκοπεύουν, ηθικά σχεδιασμένο και αποκεντρωμένο! Με το Mastodon τα δεδομένα σου είναι πραγματικά δικά σου!' - api: API - apps: Εφαρμογές κινητών contact_missing: Δεν έχει οριστεί contact_unavailable: Μη διαθέσιμο - documentation: Τεκμηρίωση hosted_on: Το Mastodon φιλοξενείται στο %{domain} - privacy_policy: Πολιτική Απορρήτου - source_code: Πηγαίος κώδικας - what_is_mastodon: Τι είναι το Mastodon; + title: Σχετικά με accounts: - choices_html: 'Επιλογές από %{name}:' - endorsements_hint: Μπορεις να εγκρίνεις ανθρώπους που ακολουθείς μέσω της δικτυακής εφαρμογής και αυτοί θα εμφανίζονται εδώ. - featured_tags_hint: Μπορείς να επιλέξεις συγκεκριμένες ετικέτες που θα εμφανίζονται εδώ. follow: Ακολούθησε followers: one: Ακόλουθος other: Ακόλουθοι following: Ακολουθεί - joined: Εγγράφηκε στις %{date} last_active: τελευταία ενεργός/ή link_verified_on: Η κυριότητα αυτού του συνδέσμου ελέγχθηκε στις %{date} - media: Πολυμέσα - moved_html: 'Ο/Η %{name} μετακόμισε στο %{new_profile_link}:' - network_hidden: Αυτή η πληροφορία δεν είναι διαθέσιμη nothing_here: Δεν υπάρχει τίποτα εδώ! - people_followed_by: Χρήστες που ακολουθεί ο/η %{name} - people_who_follow: Χρήστες που ακολουθούν τον/την %{name} pin_errors: following: Πρέπει ήδη να ακολουθείς το άτομο που θέλεις να επιδοκιμάσεις posts: one: Τουτ other: Τουτ posts_tab_heading: Τουτ - posts_with_replies: Τουτ και απαντήσεις - roles: - bot: Μποτ (αυτόματος λογαριασμός) - group: Ομάδα - unavailable: Το προφίλ δεν είναι διαθέσιμο - unfollow: Διακοπή παρακολούθησης admin: account_actions: action: Εκτέλεση ενέργειας @@ -778,9 +758,6 @@ el: save: Αποθήκευση νέου φίλτρου title: Πρόσθεσε νέο φίλτρο footer: - developers: Ανάπτυξη - more: Περισσότερα… - resources: Πόροι trending_now: Τάσεις generic: all: Όλα @@ -812,7 +789,6 @@ el: following: Λίστα ακολούθων muting: Λίστα αποσιωπήσεων upload: Ανέβασμα - in_memoriam_html: Εις μνήμην. invites: delete: Απενεργοποίησε expired: Ληγμένη @@ -974,22 +950,7 @@ el: remove_selected_follows: Διακοπή παρακολούθησης επιλεγμένων χρηστών status: Κατάσταση λογαριασμού remote_follow: - acct: Γράψε το ΌνομαΧρήστη@τομέα από όπου θέλεις να εκτελέσεις την ενέργεια αυτή missing_resource: Δεν βρέθηκε το απαιτούμενο URL ανακατεύθυνσης για το λογαριασμό σου - no_account_html: Δεν έχεις λογαριασμό; Μπορείς να γραφτείς εδώ - proceed: Συνέχισε για να ακολουθήσεις - prompt: 'Ετοιμάζεσαι να ακολουθήσεις:' - reason_html: "Γιατί χρειάζεται αυτό το βήμα; Το %{instance} μπορεί να μην είναι ο κόμβος που έχεις γραφτεί, έτσι πρέπει να σε ανακατευθύνουμε στο δικό σου." - remote_interaction: - favourite: - proceed: Συνέχισε για σημείωση ως αγαπημένου - prompt: 'Θέλεις να σημειώσεις ως αγαπημένο αυτό το τουτ:' - reblog: - proceed: Συνέχισε για προώθηση - prompt: 'Θέλεις να προωθήσεις αυτό το τουτ:' - reply: - proceed: Συνέχισε για να απαντήσεις - prompt: 'Θέλεις να απαντήσεις σε αυτό το τουτ:' reports: errors: invalid_rules: δεν παραπέμπει σε έγκυρους κανόνες diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 35e29ef3d..c62c02eef 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -2,43 +2,25 @@ eo: about: about_mastodon_html: 'Mastodon estas socia retejo de la estonteco: sen reklamo, sen kompania gvato, etika dezajno kaj malcentraligo! Vi regu viajn datumojn kun Mastodon!' - api: API - apps: Poŝtelefonaj aplikaĵoj contact_missing: Ne ŝargita contact_unavailable: Ne disponebla - documentation: Dokumentado hosted_on: "%{domain} estas nodo de Mastodon" - source_code: Fontkodo - what_is_mastodon: Kio estas Mastodon? accounts: - choices_html: 'Proponoj de %{name}:' follow: Sekvi followers: one: Sekvanto other: Sekvantoj following: Sekvatoj instance_actor_flash: Ĉi tiu konto estas virtuala agento uzata por reprezenti la servilon mem kaj neniu individua uzanto. Ĝi estas uzata por celoj de la federaĵo kaj devas ne esti suspendita. - joined: Aliĝis je %{date} last_active: laste aktiva link_verified_on: Proprieto de ĉi tiu ligilo estis kontrolita je %{date} - media: Aŭdovidaĵoj - moved_html: "%{name} moviĝis al %{new_profile_link}:" - network_hidden: Tiu informo ne estas disponebla nothing_here: Estas nenio ĉi tie! - people_followed_by: Sekvatoj de %{name} - people_who_follow: Sekvantoj de %{name} pin_errors: following: Vi devas sekvi la homon, kiun vi volas proponi posts: one: Mesaĝo other: Mesaĝoj posts_tab_heading: Mesaĝoj - posts_with_replies: Mesaĝoj kaj respondoj - roles: - bot: Roboto - group: Grupo - unavailable: Profilo ne disponebla - unfollow: Ne plu sekvi admin: account_actions: action: Plenumi agon @@ -810,9 +792,6 @@ eo: save: Konservi novan filtrilon title: Aldoni novan filtrilon footer: - developers: Programistoj - more: Pli… - resources: Rimedoj trending_now: Nunaj furoraĵoj generic: all: Ĉio @@ -843,7 +822,6 @@ eo: following: Listo de sekvatoj muting: Listo de silentigitoj upload: Alŝuti - in_memoriam_html: Memore invites: delete: Malaktivigi expired: Eksvalida @@ -993,22 +971,7 @@ eo: remove_selected_follows: Ne plu sekvi elektitajn uzantojn status: Statuso de la konto remote_follow: - acct: Enmetu vian uzantnomo@domajno de kie vi volas agi missing_resource: La bezonata URL de plusendado por via konto ne estis trovita - no_account_html: Ĉu vi ne havas konton? Vi povas registriĝi tie - proceed: Daŭrigi por eksekvi - prompt: 'Vi eksekvos:' - reason_html: "Kial necesas ĉi tiu paŝo?%{instance} povus ne esti la servilo, kie vi registriĝis, do ni unue bezonas alidirekti vin al via hejma servilo." - remote_interaction: - favourite: - proceed: Konfirmi la stelumon - prompt: 'Vi volas aldoni ĉi tiun mesaĝon al viaj preferaĵoj:' - reblog: - proceed: Procedi pri la suprenigo - prompt: 'Vi deziras suprenigi ĉi tiun mesaĝon:' - reply: - proceed: Konfirmi la respondon - prompt: 'Vi volas respondi al ĉi tiu mesaĝo:' rss: content_warning: 'Averto pri enhavo:' scheduled_statuses: diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index d6de0f1d9..111567766 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -2,46 +2,26 @@ es-AR: about: about_mastodon_html: 'La red social del futuro: ¡sin publicidad, sin vigilancia corporativa, con diseño ético y descentralización! ¡Con Mastodon vos sos el dueño de tus datos!' - api: API - apps: Aplicaciones móviles contact_missing: No establecido contact_unavailable: No disponible - documentation: Documentación hosted_on: Mastodon alojado en %{domain} - privacy_policy: Política de privacidad - source_code: Código fuente - what_is_mastodon: "¿Qué es Mastodon?" + title: Información accounts: - choices_html: 'Recomendados de %{name}:' - endorsements_hint: Podés recomendar, desde la interface web, a cuentas que seguís, y van a aparecer acá. - featured_tags_hint: Podés destacar etiquetas específicas que se mostrarán acá. follow: Seguir followers: one: Seguidor other: Seguidores following: Siguiendo instance_actor_flash: Esta cuenta es un actor virtual usado para representar al servidor en sí mismo y no a ningún usuario individual. Se usa para propósitos de la federación y no debe ser suspendido. - joined: En este servidor desde %{date} last_active: última actividad link_verified_on: La propiedad de este enlace fue verificada el %{date} - media: Medios - moved_html: "%{name} se mudó a %{new_profile_link}:" - network_hidden: Esta información no está disponible nothing_here: "¡No hay nada acá!" - people_followed_by: "%{name} sigue a estas personas" - people_who_follow: Estas personas siguen a %{name} pin_errors: following: Ya tenés que estar siguiendo a la cuenta que querés recomendar posts: one: Mensaje other: Mensajes posts_tab_heading: Mensajes - posts_with_replies: Mensajes y respuestas - roles: - bot: Bot - group: Grupo - unavailable: Perfil no disponible - unfollow: Dejar de seguir admin: account_actions: action: Ejecutar acción @@ -344,6 +324,7 @@ es-AR: listed: Listados new: title: Agregar nuevo emoji personalizado + no_emoji_selected: No se cambió ningún emoji, ya que ninguno fue seleccionado not_permitted: No tenés permiso para realizar esta acción overwrite: Sobreescribir shortcode: Código corto @@ -812,6 +793,9 @@ es-AR: description_html: Estos son enlaces que actualmente están siendo muy compartidos por cuentas desde las que tu servidor ve los mensajes. Esto puede ayudar a tus usuarios a averiguar qué está pasando en el mundo. No hay enlaces que se muestren públicamente hasta que autoricés al publicador. También podés permitir o rechazar enlaces individuales. disallow: Rechazar enlace disallow_provider: Rechazar medio + no_link_selected: No se cambió ningún enlace, ya que ninguno fue seleccionado + publishers: + no_publisher_selected: No se cambió ningún medio, ya que ninguno fue seleccionado shared_by_over_week: one: Compartido por una persona durante la última semana other: Compartido por %{count} personas durante la última semana @@ -831,6 +815,7 @@ es-AR: description_html: Estos son mensajes que tu servidor detecta que están siendo compartidos y marcados como favoritos muchas veces en este momento. Esto puede ayudar a tus usuarios nuevos y retornantes a encontrar más cuentas para seguir. No hay mensajes que se muestren públicamente hasta que aprobés al autor, y el autor permita que su cuenta sea sugerida a otros. También podés permitir o rechazar mensajes individuales. disallow: Rechazar mensaje disallow_account: Rechazar autor + no_status_selected: No se cambió ningún mensaje en tendencia, ya que ninguno fue seleccionado not_discoverable: El autor optó ser detectable shared_by: one: Compartido o marcado como favorito una vez @@ -846,6 +831,7 @@ es-AR: tag_uses_measure: usos totales description_html: Estas son etiquetas que están apareciendo en muchos mensajes que tu servidor ve. Esto puede ayudar a tus usuarios a averiguar de qué habla la gente en estos momentos. No hay etiquetas que se muestren públicamente hasta que las aprobés. listable: Pueden ser recomendadas + no_tag_selected: No se cambió ninguna etiqueta, ya que ninguna fue seleccionada not_listable: No serán recomendadas not_trendable: No aparecerán en tendencias not_usable: No podrán ser usadas @@ -1169,9 +1155,6 @@ es-AR: hint: Este filtro se aplica a la selección de mensajes individuales, independientemente de otros criterios. Podés agregar más mensajes a este filtro desde la interface web. title: Mensajes filtrados footer: - developers: Desarrolladores - more: Más… - resources: Recursos trending_now: Tendencia ahora generic: all: Todas @@ -1214,7 +1197,6 @@ es-AR: following: Lista de seguidos muting: Lista de silenciados upload: Subir - in_memoriam_html: Cuenta conmemorativa. invites: delete: Desactivar expired: Vencidas @@ -1394,22 +1376,7 @@ es-AR: remove_selected_follows: Dejar de seguir a los usuarios seleccionados status: Estado de la cuenta remote_follow: - acct: Ingresá tu usuario@dominio desde el que querés continuar missing_resource: No se pudo encontrar la dirección web de redireccionamiento requerida para tu cuenta - no_account_html: "¿No tenés cuenta? Podés registrarte acá" - proceed: Proceder para seguir - prompt: 'Vas a seguir a:' - reason_html: "¿Por qué es necesario este paso? %{instance} puede que no sea el servidor donde estás registrado, así que necesitamos redirigirte primero a tu servidor de origen." - remote_interaction: - favourite: - proceed: Proceder para marcar como favorito - prompt: 'Vas a marcar este mensaje como favorito:' - reblog: - proceed: Proceder para adherir - prompt: 'Vas a adherir a este mensaje:' - reply: - proceed: Proceder para responder - prompt: 'Vas a responder a este mensaje:' reports: errors: invalid_rules: no hace referencia a reglas válidas diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index fcaa0b6fa..45ca39d1b 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -2,46 +2,26 @@ es-MX: about: about_mastodon_html: 'La red social del futuro: ¡Sin anuncios, sin vigilancia corporativa, diseño ético, y descentralización! ¡Sé dueño de tu información con Mastodon!' - api: API - apps: Aplicaciones móviles contact_missing: No especificado contact_unavailable: No disponible - documentation: Documentación hosted_on: Mastodon hosteado en %{domain} - privacy_policy: Política de Privacidad - source_code: Código fuente - what_is_mastodon: "¿Qué es Mastodon?" + title: Acerca de accounts: - choices_html: 'Elecciones de %{name}:' - endorsements_hint: Puedes recomendar a gente que sigues desde la interfaz web, y aparecerán allí. - featured_tags_hint: Puede presentar hashtags específicos que se mostrarán aquí. follow: Seguir followers: one: Seguidor other: Seguidores following: Siguiendo instance_actor_flash: Esta cuenta es un actor virtual utilizado para representar al servidor en sí mismo y no a ningún usuario individual. Se utiliza para propósitos de la federación y no se debe suspender. - joined: Se unió el %{date} last_active: última conexión link_verified_on: La propiedad de este vínculo fue verificada el %{date} - media: Multimedia - moved_html: "%{name} se ha trasladado a %{new_profile_link}:" - network_hidden: Esta información no está disponible nothing_here: "¡No hay nada aquí!" - people_followed_by: Usuarios a quien %{name} sigue - people_who_follow: Usuarios que siguen a %{name} pin_errors: following: Debes estar siguiendo a la persona a la que quieres aprobar posts: one: Toot other: Toots posts_tab_heading: Toots - posts_with_replies: Toots con respuestas - roles: - bot: Bot - group: Grupo - unavailable: Perfil no disponible - unfollow: Dejar de seguir admin: account_actions: action: Realizar acción @@ -344,6 +324,7 @@ es-MX: listed: Listados new: title: Añadir nuevo emoji personalizado + no_emoji_selected: No se cambió ningún emoji ya que no se seleccionó ninguno not_permitted: No tienes permiso para realizar esta acción overwrite: Sobrescribir shortcode: Código de atajo @@ -812,6 +793,9 @@ es-MX: description_html: Estos son enlaces que actualmente están siendo compartidos mucho por las cuentas desde las que tu servidor ve los mensajes. Pueden ayudar a tus usuarios a averiguar qué está pasando en el mundo. Ningún enlace se muestren públicamente hasta que autorice al dominio. También puede permitir o rechazar enlaces individuales. disallow: Rechazar enlace disallow_provider: Rechazar editor + no_link_selected: No se cambió ningún enlace ya que no se seleccionó ninguno + publishers: + no_publisher_selected: No se cambió ningún editor ya que no se seleccionó ninguno shared_by_over_week: one: Compartido por una persona durante la última semana other: Compartido por %{count} personas durante la última semana @@ -831,6 +815,7 @@ es-MX: description_html: Estos son publicaciones que su servidor conoce que están siendo compartidas y marcadas como favoritas mucho en este momento. Pueden ayudar a tus usuarios nuevos y retornantes a encontrar más gente a la que seguir. No hay mensajes que se muestren públicamente hasta que apruebes el autor y el autor permita que su cuenta sea sugerida a otros. También puedes permitir o rechazar mensajes individuales. disallow: Rechazar publicación disallow_account: No permitir autor + no_status_selected: No se cambió ninguna publicación en tendencia ya que no se seleccionó ninguna not_discoverable: El autor no ha optado por ser detectable shared_by: one: Compartido o marcado como favorito una vez @@ -846,6 +831,7 @@ es-MX: tag_uses_measure: usuarios totales description_html: Estos son etiquetas que están apareciendo en muchos posts que tu servidor ve. Pueden ayudar a tus usuarios a averiguar de qué habla más gente en estos momentos. No hay hashtags que se muestren públicamente hasta que los apruebes. listable: Pueden ser recomendadas + no_tag_selected: No se cambió ninguna etiqueta ya que no se seleccionó ninguna not_listable: No serán recomendadas not_trendable: No aparecerán en tendencias not_usable: No pueden ser usadas @@ -1169,9 +1155,6 @@ es-MX: hint: Este filtro se aplica a la selección de publicaciones individuales independientemente de otros criterios. Puede añadir más publicaciones a este filtro desde la interfaz web. title: Publicaciones filtradas footer: - developers: Desarrolladores - more: Mas… - resources: Recursos trending_now: Tendencia ahora generic: all: Todos @@ -1214,7 +1197,6 @@ es-MX: following: Lista de seguidos muting: Lista de silenciados upload: Cargar - in_memoriam_html: En memoria. invites: delete: Desactivar expired: Expiradas @@ -1394,22 +1376,7 @@ es-MX: remove_selected_follows: Dejar de seguir a los usuarios seleccionados status: Estado de la cuenta remote_follow: - acct: Ingresa tu usuario@dominio desde el que quieres seguir missing_resource: No se pudo encontrar la URL de redirección requerida para tu cuenta - no_account_html: "¿No tienes una cuenta? Puedes registrarte aqui" - proceed: Proceder a seguir - prompt: 'Vas a seguir a:' - reason_html: "¿Por qué es necesario este paso? %{instance} puede que no sea el servidor donde estás registrado, así que necesitamos redirigirte primero a tu servidor de origen." - remote_interaction: - favourite: - proceed: Proceder a marcar como favorito - prompt: 'Quieres marcar como favorito este toot:' - reblog: - proceed: Proceder a retootear - prompt: 'Quieres retootear este toot:' - reply: - proceed: Proceder a responder - prompt: 'Quieres responder a este toot:' reports: errors: invalid_rules: no hace referencia a reglas válidas diff --git a/config/locales/es.yml b/config/locales/es.yml index 46866fdd8..2be153de0 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -2,46 +2,26 @@ es: about: about_mastodon_html: 'La red social del futuro: ¡Sin anuncios, sin vigilancia corporativa, diseño ético, y descentralización! ¡Sé dueño de tu información con Mastodon!' - api: API - apps: Aplicaciones móviles contact_missing: No especificado contact_unavailable: No disponible - documentation: Documentación hosted_on: Mastodon alojado en %{domain} - privacy_policy: Política de Privacidad - source_code: Código fuente - what_is_mastodon: "¿Qué es Mastodon?" + title: Acerca de accounts: - choices_html: 'Elecciones de %{name}:' - endorsements_hint: Puedes recomendar a gente que sigues desde la interfaz web, y aparecerán allí. - featured_tags_hint: Puede presentar hashtags específicos que se mostrarán aquí. follow: Seguir followers: one: Seguidor other: Seguidores following: Siguiendo instance_actor_flash: Esta cuenta es un actor virtual utilizado para representar al servidor en sí mismo y no a ningún usuario individual. Se utiliza para propósitos de la federación y no se debe suspender. - joined: Se unió el %{date} last_active: última conexión link_verified_on: La propiedad de este vínculo fue verificada el %{date} - media: Multimedia - moved_html: "%{name} se ha trasladado a %{new_profile_link}:" - network_hidden: Esta información no está disponible nothing_here: "¡No hay nada aquí!" - people_followed_by: Usuarios a quien %{name} sigue - people_who_follow: Usuarios que siguen a %{name} pin_errors: following: Debes estar siguiendo a la persona a la que quieres aprobar posts: one: Publicación other: Publicaciones posts_tab_heading: Publicaciones - posts_with_replies: Publicaciones y respuestas - roles: - bot: Bot - group: Grupo - unavailable: Perfil no disponible - unfollow: Dejar de seguir admin: account_actions: action: Realizar acción @@ -344,6 +324,7 @@ es: listed: Listados new: title: Añadir nuevo emoji personalizado + no_emoji_selected: No se cambió ningún emoji ya que no se seleccionó ninguno not_permitted: No tienes permiso para realizar esta acción overwrite: Sobrescribir shortcode: Código de atajo @@ -812,6 +793,9 @@ es: description_html: Estos son enlaces que actualmente están siendo compartidos mucho por las cuentas desde las que tu servidor ve los mensajes. Pueden ayudar a tus usuarios a averiguar qué está pasando en el mundo. Ningún enlace se muestren públicamente hasta que autorice al dominio. También puede permitir o rechazar enlaces individuales. disallow: Rechazar enlace disallow_provider: Rechazar medio + no_link_selected: No se cambió ningún enlace ya que no se seleccionó ninguno + publishers: + no_publisher_selected: No se cambió ningún editor ya que no se seleccionó ninguno shared_by_over_week: one: Compartido por una persona durante la última semana other: Compartido por %{count} personas durante la última semana @@ -831,6 +815,7 @@ es: description_html: Estos son publicaciones que su servidor conoce que están siendo compartidas y marcadas como favoritas mucho en este momento. Pueden ayudar a tus usuarios nuevos y retornantes a encontrar más gente a la que seguir. No hay mensajes que se muestren públicamente hasta que apruebes el autor y el autor permita que su cuenta sea sugerida a otros. También puedes permitir o rechazar mensajes individuales. disallow: No permitir publicación disallow_account: No permitir autor + no_status_selected: No se cambió ninguna publicación en tendencia ya que no se seleccionó ninguna not_discoverable: El autor no ha optado por ser detectable shared_by: one: Compartido o marcado como favorito una vez @@ -846,6 +831,7 @@ es: tag_uses_measure: usos totales description_html: Estos son etiquetas que están apareciendo en muchos posts que tu servidor ve. Pueden ayudar a tus usuarios a averiguar de qué habla más gente en estos momentos. No hay hashtags que se muestren públicamente hasta que los apruebes. listable: Pueden ser recomendadas + no_tag_selected: No se cambió ninguna etiqueta ya que no se seleccionó ninguna not_listable: No serán recomendadas not_trendable: No aparecerán en tendencias not_usable: No pueden ser usadas @@ -1169,9 +1155,6 @@ es: hint: Este filtro se aplica a la selección de publicaciones individuales independientemente de otros criterios. Puede añadir más publicaciones a este filtro desde la interfaz web. title: Publicaciones filtradas footer: - developers: Desarrolladores - more: Mas… - resources: Recursos trending_now: Tendencia ahora generic: all: Todos @@ -1214,7 +1197,6 @@ es: following: Lista de seguidos muting: Lista de silenciados upload: Cargar - in_memoriam_html: En memoria. invites: delete: Desactivar expired: Expiradas @@ -1394,22 +1376,7 @@ es: remove_selected_follows: Dejar de seguir a los usuarios seleccionados status: Estado de la cuenta remote_follow: - acct: Ingresa tu usuario@dominio desde el que quieres seguir missing_resource: No se pudo encontrar la URL de redirección requerida para tu cuenta - no_account_html: "¿No tienes una cuenta? Puedes registrarte aqui" - proceed: Proceder a seguir - prompt: 'Vas a seguir a:' - reason_html: "¿Por qué es necesario este paso? %{instance} puede que no sea el servidor donde estás registrado, así que necesitamos redirigirte primero a tu servidor de origen." - remote_interaction: - favourite: - proceed: Proceder a marcar como favorito - prompt: 'Quieres marcar como favorita esta publicación:' - reblog: - proceed: Proceder a retootear - prompt: 'Quieres retootear esta publicación:' - reply: - proceed: Proceder a responder - prompt: 'Quieres responder a esta publicación:' reports: errors: invalid_rules: no hace referencia a reglas válidas diff --git a/config/locales/et.yml b/config/locales/et.yml index 65c74774e..2135b7bfb 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -2,44 +2,24 @@ et: about: about_mastodon_html: 'Tuleviku sotsiaalvõrgustik: Reklaamivaba, korporatiivse järelvalveta, eetiline kujundus ning detsentraliseeritus! Oma enda andmeid Mastodonis!' - api: API - apps: Mobiilirakendused contact_missing: Määramata contact_unavailable: Pole saadaval - documentation: Dokumentatsioon hosted_on: Mastodon majutatud %{domain}-is - source_code: Lähtekood - what_is_mastodon: Mis on Mastodon? accounts: - choices_html: "%{name}-i valikud:" - endorsements_hint: Te saate heaks kiita inimesi, keda jälgite, veebiliidesest ning neid kuvatakse siin. - featured_tags_hint: Te saate valida kindlaid silte, mida kuvatakse siin. follow: Jälgi followers: one: Jälgija other: Jälgijaid following: Jälgib - joined: Liitus %{date} last_active: viimati aktiivne link_verified_on: Selle lingi autorsust kontrolliti %{date} - media: Meedia - moved_html: "%{name} kolis %{new_profile_link}:" - network_hidden: Neid andmeid pole saadaval nothing_here: Siin pole midagi! - people_followed_by: Inimesed, keda %{name} jälgib - people_who_follow: Inimesed, kes jälgivad kasutajat %{name} pin_errors: following: Te peate juba olema selle kasutaja jälgija, keda te heaks kiidate posts: one: Postitus other: Postitused posts_tab_heading: Postitused - posts_with_replies: Postitused ja vastused - roles: - bot: Robot - group: Grupp - unavailable: Profiil pole saadaval - unfollow: Lõpeta jälgimine admin: account_actions: action: Täida tegevus @@ -612,9 +592,6 @@ et: new: title: Lisa uus filter footer: - developers: Arendajad - more: Rohkem… - resources: Materjalid trending_now: Praegu trendikad generic: all: Kõik @@ -642,7 +619,6 @@ et: following: Jälgimiste nimekiri muting: Vaigistuse nimekiri upload: Lae üles - in_memoriam_html: Mälestamaks. invites: delete: Peata expired: Aegunud @@ -780,24 +756,7 @@ et: remove_selected_follows: Lõpeta valitud kasutajate jälgimine status: Konto olek remote_follow: - acct: Sisestage oma kasutajanimi@domeen, kust te soovite jälgida missing_resource: Ei suutnud leida vajalikku suunamise URLi Teie konto jaoks - no_account_html: Teil pole veel kontot? Saate luua ühe siit - proceed: Jätka jälgimiseks - prompt: 'Te hakkate jälgima:' - reason_html: |- - Miks on see samm vajalik? - %{instance} ei pruugi olla server, kus asub Teie konto, nii et me peame Teid suunama oma kodu serverile. - remote_interaction: - favourite: - proceed: Jätka lemmikuks lisamiseks - prompt: 'Te soovite lisada seda tuututust lemmikutesse:' - reblog: - proceed: Jätka upitamiseks - prompt: 'Te soovite seda tuututust upitada:' - reply: - proceed: Jätka vastamiseks - prompt: 'Te soovite vastata sellele tuututusele:' scheduled_statuses: over_daily_limit: Te olete jõudnud maksimum lubatud ajastatud tuututuste arvuni %{limit} selle päeva kohta over_total_limit: Te olete jõudnud maksimum lubatud ajastatud tuututuste arvuni %{limit} diff --git a/config/locales/eu.yml b/config/locales/eu.yml index 21bdf5c98..edfaffc37 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -2,45 +2,25 @@ eu: about: about_mastodon_html: 'Etorkizuneko sare soziala: ez iragarkirik eta ez zelatatze korporatiborik, diseinu etikoa eta deszentralizazioa! Izan zure datuen jabea Mastodonekin!' - api: APIa - apps: Aplikazio mugikorrak contact_missing: Ezarri gabe contact_unavailable: E/E - documentation: Dokumentazioa hosted_on: Mastodon %{domain} domeinuan ostatatua - source_code: Iturburu kodea - what_is_mastodon: Zer da Mastodon? accounts: - choices_html: "%{name}(r)en aukerak:" - endorsements_hint: Jarraitzen duzun jendea sustatu dezakezu web interfazearen bidez, eta hemen agertuko da. - featured_tags_hint: Hemen agertuko diren traolak nabarmendu ditzakezu. follow: Jarraitu followers: one: Jarraitzaile other: jarraitzaile following: Jarraitzen instance_actor_flash: Kontu hau zerbitzaria adierazten duen aktore birtual bat da eta ez banako erabiltzaile bat. Federatzeko helburuarekin erabiltzen da eta ez da kanporatu behar. - joined: "%{date}(e)an elkartua" last_active: azkenekoz aktiboa link_verified_on: 'Esteka honen jabetzaren egiaztaketa data: %{date}' - media: Multimedia - moved_html: "%{name} hona migratu da %{new_profile_link}:" - network_hidden: Informazio hau ez dago eskuragarri nothing_here: Ez dago ezer hemen! - people_followed_by: "%{name}(e)k jarraitzen dituenak" - people_who_follow: "%{name} jarraitzen dutenak" pin_errors: following: Onetsi nahi duzun pertsona aurretik jarraitu behar duzu posts: one: Bidalketa other: Bidalketa posts_tab_heading: Bidalketa - posts_with_replies: Bidalketak eta erantzunak - roles: - bot: Bot-a - group: Taldea - unavailable: Profila ez dago eskuragarri - unfollow: Utzi jarraitzeari admin: account_actions: action: Burutu ekintza @@ -944,9 +924,6 @@ eu: new: title: Gehitu iragazki berria footer: - developers: Garatzaileak - more: Gehiago… - resources: Baliabideak trending_now: Joera orain generic: all: Denak @@ -979,7 +956,6 @@ eu: following: Jarraitutakoen zerrenda muting: Mutututakoen zerrenda upload: Igo - in_memoriam_html: Memoriala. invites: delete: Desaktibatu expired: Iraungitua @@ -1150,22 +1126,7 @@ eu: remove_selected_follows: Utzi hautatutako erabiltzaileak jarraitzeari status: Kontuaren egoera remote_follow: - acct: Sartu jarraitzeko erabili nahi duzun erabiltzaile@domeinua missing_resource: Ezin izan da zure konturako behar den birbideratze URL-a - no_account_html: Ez duzu konturik? Izena eman dezakezu - proceed: Ekin jarraitzeari - prompt: 'Hau jarraituko duzu:' - reason_html: "Zergaitik eman behar da urrats hau?%{instance} agian ez da izena eman duzun zerbitzaria, eta zure hasiera-zerbitzarira eraman behar zaitugu aurretik." - remote_interaction: - favourite: - proceed: Bihurtu gogoko - prompt: 'Bidalketa hau gogoko bihurtu nahi duzu:' - reblog: - proceed: Eman bultzada - prompt: 'Bidalketa honi bultzada eman nahi diozu:' - reply: - proceed: Ekin erantzuteari - prompt: 'Bidalketa honi erantzun nahi diozu:' scheduled_statuses: over_daily_limit: 'Egun horretarako programatutako bidalketa kopuruaren muga gainditu duzu: %{limit}' over_total_limit: 'Programatutako bidalketa kopuruaren muga gainditu duzu: %{limit}' diff --git a/config/locales/fa.yml b/config/locales/fa.yml index a280fef51..c1979a1a6 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -2,45 +2,25 @@ fa: about: about_mastodon_html: 'شبکهٔ اجتماعی آینده: بدون تبلیغات، بدون شنود از طرف شرکت‌ها، طراحی اخلاق‌مدار، و معماری غیرمتمرکز! با ماستودون صاحب داده‌های خودتان باشید!' - api: رابط برنامه‌نویسی کاربردی - apps: اپ‌های موبایل contact_missing: تنظیم نشده contact_unavailable: موجود نیست - documentation: مستندات hosted_on: ماستودون، میزبانی‌شده روی %{domain} - source_code: کدهای منبع - what_is_mastodon: ماستودون چیست؟ accounts: - choices_html: 'انتخاب‌های %{name}:' - endorsements_hint: شما می‌توانید از محیط وب ماستودون، کسانی را که پی می‌گیرید به دیگران هم پیشنهاد دهید تا این‌جا نشان داده شوند. - featured_tags_hint: می‌توانید برچسب‌های خاصی را مشخّص کنید تا این‌جا دیده شوند. follow: پیگیری followers: one: پیگیر other: پیگیر following: پی می‌گیرد instance_actor_flash: این حساب یک عامل مجازی است که به نمایندگی از خود کارساز استفاده می‌شود و نه هیچ یکی از کاربران. این حساب به منظور اتصال به فدراسیون استفاده می‌شود و نباید معلق شود. - joined: پیوسته از %{date} last_active: آخرین فعالیت link_verified_on: مالکیت این پیوند در %{date} بررسی شد - media: عکس و ویدیو - moved_html: "%{name} حساب خود را به %{new_profile_link} منتقل کرده است:" - network_hidden: این اطلاعات در دسترس نیست nothing_here: این‌جا چیزی نیست! - people_followed_by: کسانی که %{name} پی می‌گیرد - people_who_follow: کسانی که %{name} را پی می‌گیرند pin_errors: following: باید کاربری که می‌خواهید پیشنهاد دهید را دنبال کرده باشید posts: one: فرسته other: فرسته‌ها posts_tab_heading: فرسته‌ها - posts_with_replies: فرسته‌ها و پاسخ‌ها - roles: - bot: ربات - group: گروه - unavailable: نمایهٔ ناموجود - unfollow: پایان پیگیری admin: account_actions: action: انجامِ کنش @@ -904,9 +884,6 @@ fa: new: title: افزودن پالایهٔ جدید footer: - developers: برنامه‌نویسان - more: بیشتر… - resources: منابع trending_now: پرطرفدار generic: all: همه @@ -939,7 +916,6 @@ fa: following: سیاههٔ پی‌گیری muting: سیاههٔ خموشی upload: بارگذاری - in_memoriam_html: به یادبود. invites: delete: غیرفعال‌سازی expired: منقضی‌شده @@ -1113,22 +1089,7 @@ fa: remove_selected_follows: به پیگیری از کاربران انتخاب‌شده پایان بده status: وضعیت حساب remote_follow: - acct: نشانی حساب username@domain خود را این‌جا بنویسید missing_resource: نشانی اینترنتی برای رسیدن به حساب شما پیدا نشد - no_account_html: هنوز عضو نیستید؟ این‌جا می‌توانید حساب باز کنید - proceed: درخواست پیگیری - prompt: 'شما قرار است این حساب را پیگیری کنید:' - reason_html: "چرا این گام ضروریست؟ ممکن است %{instance} کارسازی نباشد که شما رویش حساب دارید؛ پس لازم است پیش از هرچیز، به کارساز خودتان هدایتتان کنیم." - remote_interaction: - favourite: - proceed: به سمت پسندیدن - prompt: 'شما می‌خواهید این فرسته را بپسندید:' - reblog: - proceed: به سمت تقویت - prompt: 'شما می‌خواهید این فرسته را تقویت کنید:' - reply: - proceed: به سمت پاسخ‌دادن - prompt: 'شما می‌خواهید به این فرسته پاسخ دهید:' scheduled_statuses: over_daily_limit: شما از حد مجاز %{limit} فرسته زمان‌بندی‌شده در آن روز فراتر رفته‌اید over_total_limit: شما از حد مجاز %{limit} فرسته زمان‌بندی‌شده فراتر رفته‌اید diff --git a/config/locales/fi.yml b/config/locales/fi.yml index f3c4db991..fe8d77158 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -2,45 +2,25 @@ fi: about: about_mastodon_html: 'Tulevaisuuden sosiaalinen verkosto: Ei mainoksia, ei valvontaa, toteutettu avoimilla protokollilla ja hajautettu! Pidä tietosi ominasi Mastodonilla!' - api: Rajapinta - apps: Mobiilisovellukset contact_missing: Ei asetettu contact_unavailable: Ei saatavilla - documentation: Dokumentaatio hosted_on: Mastodon palvelimella %{domain} - source_code: Lähdekoodi - what_is_mastodon: Mikä on Mastodon? accounts: - choices_html: "%{name} valinnat:" - endorsements_hint: Voit suositella seuraamiasi henkilöitä web käyttöliittymän kautta, ne tulevat näkymään tähän. - featured_tags_hint: Voit käyttää tiettyjä aihesanoja, jotka näytetään täällä. follow: Seuraa followers: one: Seuraaja other: Seuraajat following: Seuratut instance_actor_flash: Tämä on virtuaalitili, jota käytetään edustamaan itse palvelinta eikä yksittäistä käyttäjää. Sitä käytetään yhdistämistarkoituksiin, eikä sitä tule keskeyttää. - joined: Liittynyt %{date} last_active: viimeksi aktiivinen link_verified_on: Tämän linkin omistus on tarkastettu %{date} - media: Media - moved_html: "%{name} on muuttanut osoitteeseen %{new_profile_link}:" - network_hidden: Nämä tiedot eivät ole käytettävissä nothing_here: Täällä ei ole mitään! - people_followed_by: Henkilöt, joita %{name} seuraa - people_who_follow: Käyttäjän %{name} seuraajat pin_errors: following: Sinun täytyy seurata henkilöä jota haluat tukea posts: one: Julkaisu other: Julkaisut posts_tab_heading: Julkaisut - posts_with_replies: Julkaisut ja vastaukset - roles: - bot: Botti - group: Ryhmä - unavailable: Profiili ei saatavilla - unfollow: Lopeta seuraaminen admin: account_actions: action: Suorita toimenpide @@ -1148,9 +1128,6 @@ fi: hint: Tämä suodatin koskee yksittäisten viestien valintaa muista kriteereistä riippumatta. Voit lisätä lisää viestejä tähän suodattimeen web-käyttöliittymästä. title: Suodatetut viestit footer: - developers: Kehittäjille - more: Lisää… - resources: Resurssit trending_now: Suosittua nyt generic: all: Kaikki @@ -1183,7 +1160,6 @@ fi: following: Seurattujen lista muting: Mykistettyjen lista upload: Lähetä - in_memoriam_html: Muistoissamme. invites: delete: Poista käytöstä expired: Vanhentunut @@ -1361,22 +1337,7 @@ fi: remove_selected_follows: Lopeta valittujen käyttäjien seuraaminen status: Tilin tila remote_follow: - acct: Syötä se käyttäjätunnus@verkkotunnus, josta haluat seurata missing_resource: Vaadittavaa uudelleenohjaus-URL:ää tiliisi ei löytynyt - no_account_html: Eikö sinulla ole tiliä? Voit rekisteröityä täällä - proceed: Siirry seuraamaan - prompt: 'Olet aikeissa seurata:' - reason_html: "Miksi tämä vaihe on tarpeen? %{instance} ei ehkä ole se palvelin, jolle olet rekisteröitynyt, joten meidän täytyy ensin ohjata sinut kotipalvelimellesi." - remote_interaction: - favourite: - proceed: Jatka suosikiksi lisäämiseen - prompt: 'Haluat lisätä suosikiksi julkaisun:' - reblog: - proceed: Jatka buustaamiseen - prompt: 'Haluat buustata julkaisun:' - reply: - proceed: Jatka vastaamiseen - prompt: 'Haluat vastata julkaisuun:' reports: errors: invalid_rules: ei viittaa voimassa oleviin sääntöihin diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 064037d80..4b3c53db3 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -2,46 +2,25 @@ fr: about: about_mastodon_html: 'Le réseau social de l''avenir : pas de publicité, pas de surveillance institutionnelle, conception éthique et décentralisation ! Gardez le contrôle de vos données avec Mastodon !' - api: API - apps: Applications mobiles contact_missing: Non défini contact_unavailable: Non disponible - documentation: Documentation hosted_on: Serveur Mastodon hébergé sur %{domain} - privacy_policy: Politique de confidentialité - source_code: Code source - what_is_mastodon: Qu’est-ce que Mastodon ? accounts: - choices_html: "%{name} recommande :" - endorsements_hint: Vous pouvez recommander des personnes que vous suivez depuis l’interface web, et elles apparaîtront ici. - featured_tags_hint: Vous pouvez mettre en avant certains hashtags qui seront affichés ici. follow: Suivre followers: one: Abonné·e other: Abonné·e·s following: Abonnements instance_actor_flash: Ce compte est un acteur virtuel utilisé pour représenter le serveur lui-même et non un utilisateur individuel. Il est utilisé à des fins de fédération et ne doit pas être suspendu. - joined: Inscrit·e en %{date} last_active: dernière activité link_verified_on: La propriété de ce lien a été vérifiée le %{date} - media: Médias - moved_html: "%{name} a changé de compte pour %{new_profile_link} :" - network_hidden: Cette information n’est pas disponible nothing_here: Rien à voir ici ! - people_followed_by: Personnes suivies par %{name} - people_who_follow: Personnes qui suivent %{name} pin_errors: following: Vous devez être déjà abonné·e à la personne que vous désirez recommander posts: one: Message other: Messages posts_tab_heading: Messages - posts_with_replies: Messages et réponses - roles: - bot: Robot - group: Groupe - unavailable: Profil non disponible - unfollow: Ne plus suivre admin: account_actions: action: Effectuer l'action @@ -1156,9 +1135,6 @@ fr: index: title: Messages filtrés footer: - developers: Développeurs - more: Davantage… - resources: Ressources trending_now: Tendance en ce moment generic: all: Tous @@ -1192,7 +1168,6 @@ fr: following: Liste d’utilisateur·rice·s suivi·e·s muting: Liste d’utilisateur·rice·s que vous masquez upload: Importer - in_memoriam_html: En mémoire de. invites: delete: Désactiver expired: Expiré @@ -1372,22 +1347,7 @@ fr: remove_selected_follows: Ne plus suivre les comptes sélectionnés status: État du compte remote_follow: - acct: Entrez l’adresse profil@serveur depuis laquelle vous voulez effectuer cette action missing_resource: L’URL de redirection requise pour votre compte n’a pas pu être trouvée - no_account_html: Vous n’avez pas de compte ? Vous pouvez vous inscrire ici - proceed: Confirmer l’abonnement - prompt: 'Vous allez suivre :' - reason_html: "Pourquoi cette étape est-elle nécessaire? %{instance} pourrait ne pas être le serveur sur lequel vous vous êtes inscrit·e, et nous devons donc vous rediriger vers votre serveur de base en premier." - remote_interaction: - favourite: - proceed: Confirmer l’ajout aux favoris - prompt: 'Vous souhaitez ajouter ce message à vos favoris :' - reblog: - proceed: Confirmer le partage - prompt: 'Vous souhaitez partager ce message :' - reply: - proceed: Confirmer la réponse - prompt: 'Vous souhaitez répondre à ce message :' reports: errors: invalid_rules: ne fait pas référence à des règles valides diff --git a/config/locales/ga.yml b/config/locales/ga.yml index 8542761c5..14936b4ba 100644 --- a/config/locales/ga.yml +++ b/config/locales/ga.yml @@ -1,13 +1,7 @@ --- ga: - about: - api: API accounts: posts_tab_heading: Postálacha - roles: - bot: Róbat - group: Grúpa - unfollow: Ná lean admin: accounts: are_you_sure: An bhfuil tú cinnte? diff --git a/config/locales/gd.yml b/config/locales/gd.yml index 9ce456ae4..0e50fe542 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -2,18 +2,10 @@ gd: about: about_mastodon_html: 'An lìonra sòisealta dhan àm ri teachd: Gun sanasachd, gun chaithris corporra, dealbhadh beusail agus dì-mheadhanachadh! Gabh sealbh air an dàta agad fhèin le Mastodon!' - api: API - apps: Aplacaidean mobile contact_missing: Cha deach a shuidheachadh contact_unavailable: Chan eil seo iomchaidh - documentation: Docamaideadh hosted_on: Mastodon ’ga òstadh air %{domain} - source_code: Bun-tùs - what_is_mastodon: Dè th’ ann am Mastodon? accounts: - choices_html: 'Roghadh is taghadh %{name}:' - endorsements_hint: "’S urrainn dhut daoine air a leanas tu a bhrosnachadh on eadar-aghaidh-lìn agus nochdaidh iad an-seo." - featured_tags_hint: "’S urrainn dhut tagaichean hais sònraichte a bhrosnachadh a thèid a shealltainn an-seo." follow: Lean air followers: few: Luchd-leantainn @@ -22,15 +14,9 @@ gd: two: Luchd-leantainn following: A’ leantainn instance_actor_flash: "’S e actar biortail a tha sa chunntas seo a riochdaicheas am frithealaiche fhèin seach cleachdaiche sònraichte. Tha e ’ga chleachdadh a chùm co-nasgaidh agus cha bu chòir dhut a chur à rèim." - joined: Air ballrachd fhaighinn %{date} last_active: an gnìomh mu dheireadh link_verified_on: Chaidh dearbhadh cò leis a tha an ceangal seo %{date} - media: Meadhanan - moved_html: 'Chaidh %{name} imrich gu %{new_profile_link}:' - network_hidden: Chan eil am fiosrachadh seo ri fhaighinn nothing_here: Chan eil dad an-seo! - people_followed_by: Daoine air a leanas %{name} - people_who_follow: Daoine a tha a’ leantainn air %{name} pin_errors: following: Feumaidh tu leantainn air neach mus urrainn dhut a bhrosnachadh posts: @@ -39,12 +25,6 @@ gd: other: Postaichean two: Postaichean posts_tab_heading: Postaichean - posts_with_replies: Postaichean ’s freagairtean - roles: - bot: Bot - group: Buidheann - unavailable: Chan eil a’ phròifil ri làimh - unfollow: Na lean tuilleadh admin: account_actions: action: Gabh an gnìomh @@ -407,7 +387,7 @@ gd: title: Bacadh àrainne ùr obfuscate: Doilleirich ainm na h-àrainne obfuscate_hint: Doilleirich pàirt de dh’ainm na h-àrainne air an liosta ma tha foillseachadh liosta nan cuingeachaidhean àrainne an comas - private_comment: Beachd prìobhaideachd + private_comment: Beachd prìobhaideach private_comment_hint: Beachd mu chuingeachadh na h-àrainne seo nach cleachd ach na maoir. public_comment: Beachd poblach public_comment_hint: Beachd poblach mu chuingeachadh na h-àrainne seo ma tha foillseachadh liosta nan cuingeachaidhean àrainne an comas. @@ -508,7 +488,7 @@ gd: all: Na h-uile limited: Cuingichte title: Maorsainneachd - private_comment: Beachd prìobhaideachd + private_comment: Beachd prìobhaideach public_comment: Beachd poblach purge: Purgaidich purge_description_html: Ma tha thu dhen bheachd gu bheil an àrainn seo far loidhne gu buan, ’s urrainn dhut a h-uile clàr cunntais ’s an dàta co-cheangailte on àrainn ud a sguabadh às san stòras agad. Dh’fhaoidte gun doir sin greis mhath. @@ -1162,9 +1142,6 @@ gd: save: Sàbhail a’ chriathrag ùr title: Cuir criathrag ùr ris footer: - developers: Luchd-leasachaidh - more: Barrachd… - resources: Goireasan trending_now: A’ treandadh an-dràsta generic: all: Na h-uile @@ -1199,7 +1176,6 @@ gd: following: Liosta dhen fheadhainn air a leanas tu muting: Liosta a’ mhùchaidh upload: Luchdaich suas - in_memoriam_html: Mar chuimhneachan. invites: delete: Cuir à gnìomh expired: Dh’fhalbh an ùine air @@ -1379,22 +1355,7 @@ gd: remove_selected_follows: Na lean air na cleachdaichean a thagh thu tuilleadh status: Staid a’ chunntais remote_follow: - acct: Cuir a-steach ainm-cleachdaiche@àrainn airson a chur ort missing_resource: Cha do lorg sinn URL ath-stiùiridh riatanach a’ chunntais agad - no_account_html: Nach eil cunntas agad? ’S urrainn dhut clàradh leinn an-seo - proceed: Lean air adhart gus leantainn air - prompt: 'Bidh thu a’ leantainn air:' - reason_html: "Carson a tha feum air a’ cheum seo? Dh’fhaoidte nach e %{instance} am frithealaiche far an do rinn thu clàradh agus feumaidh sinn d’ ath-stiùireadh dhan fhrithealaiche dachaigh agad an toiseach." - remote_interaction: - favourite: - proceed: Lean air adhart gus a chur ris na h-annsachdan - prompt: 'Tha thu airson am post seo a chur ris na h-annsachdan:' - reblog: - proceed: Lean air adhart gus a bhrosnachadh - prompt: 'Tha thu airson am post seo a bhrosnachadh:' - reply: - proceed: Lean air adhart gus freagairt - prompt: 'Tha thu airson freagairt dhan phost seo:' reports: errors: invalid_rules: gun iomradh air riaghailtean dligheach diff --git a/config/locales/gl.yml b/config/locales/gl.yml index f9b6a11dc..ec4346c7f 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -2,46 +2,26 @@ gl: about: about_mastodon_html: 'A rede social do futuro: Sen publicidade, sen seguimento por empresas, deseño ético e descentralización! En Mastodon ti posúes os teus datos!' - api: API - apps: Aplicacións móbiles contact_missing: Non establecido contact_unavailable: Non dispoñíbel - documentation: Documentación hosted_on: Mastodon aloxado en %{domain} - privacy_policy: Política de Privacidade - source_code: Código fonte - what_is_mastodon: Qué é Mastodon? + title: Acerca de accounts: - choices_html: 'Escollas de %{name}:' - endorsements_hint: Podes suxerir a persoas que segues dende a interface web, e amosaranse aquí. - featured_tags_hint: Podes destacar determinados cancelos que se amosarán aquí. follow: Seguir followers: one: Seguidora other: Seguidoras following: Seguindo instance_actor_flash: Esta conta é un actor virtual utilizado para representar ó servidor mesmo e non a unha usuaria individual. Utilízase por motivos de federación e non debería estar suspendida. - joined: Uniuse en %{date} last_active: última actividade link_verified_on: A propiedade desta ligazón foi verificada en %{date} - media: Multimedia - moved_html: "%{name} mudouse a %{new_profile_link}:" - network_hidden: Esta información non está dispoñíbel nothing_here: Non hai nada aquí! - people_followed_by: Persoas que segue %{name} - people_who_follow: Persoas que seguen a %{name} pin_errors: following: Tes que seguir á persoa que queres engadir posts: one: Publicación other: Publicacións posts_tab_heading: Publicacións - posts_with_replies: Publicacións e respostas - roles: - bot: Bot - group: Grupo - unavailable: Perfil non dispoñíbel - unfollow: Deixar de seguir admin: account_actions: action: Executar acción @@ -344,6 +324,7 @@ gl: listed: Listado new: title: Engadir nova emoticona personalizado + no_emoji_selected: Non se cambiou ningún emoji xa que ningún foi seleccionado not_permitted: Non podes realizar esta acción overwrite: Sobrescribir shortcode: Código curto @@ -812,6 +793,9 @@ gl: description_html: Estas son ligazóns que actualmente están sendo compartidas por moitas contas das que o teu servidor recibe publicación. Pode ser de utilidade para as túas usuarias para saber o que acontece polo mundo. Non se mostran ligazóns de xeito público a non ser que autorices a quen as publica. Tamén podes permitir ou rexeitar ligazóns de xeito individual. disallow: Denegar ligazón disallow_provider: Denegar orixe + no_link_selected: Non se cambiou ningunha ligazón xa que non había ningunha seleccionada + publishers: + no_publisher_selected: Non se cambiou ningún autor xa que ningún foi seleccionado shared_by_over_week: one: Compartido por unha persoa na última semana other: Compartido por %{count} persoas na última semana @@ -831,6 +815,7 @@ gl: description_html: Estas son publicacións que o teu servidor coñece que están sendo compartidas e favorecidas en gran número neste intre. Pode ser útil para as persoas recén chegadas e as que retornan para que atopen persoas a quen seguir. Non se mostran publicamente a menos que aprobes a autora, e a autora permita que a súa conta sexa suxerida a outras. Tamén podes rexeitar ou aprobar publicacións individuais. disallow: Rexeitar publicación disallow_account: Rexeitar autora + no_status_selected: Non se cambiou ningunha publicación en voga xa que non había ningunha seleccionada not_discoverable: A autora non elexiu poder ser atopada shared_by: one: Compartida ou favorecida unha vez @@ -846,6 +831,7 @@ gl: tag_uses_measure: total de usos description_html: Estes son cancelos que actualmente están presentes en moitas publicacións que o teu servidor recibe. Pode ser útil para que as túas usuarias atopen a outras persoas a través do máis comentado neste intre. Non se mostran cancelos públicamente que non fosen aprobados por ti. listable: Pode ser suxerida + no_tag_selected: Non se cambiaron cancelos porque ningún foi seleccionado not_listable: Non vai ser suxerida not_trendable: Non aparecerá en tendencias not_usable: Non pode ser usado @@ -926,7 +912,7 @@ gl: remove: Desligar alcume appearance: advanced_web_interface: Interface web avanzada - advanced_web_interface_hint: Se queres empregar todo o ancho da túa pantalla, a interface web avanzada permíteche configurar diferentes columnas para ver tanta información como desexe. Inicio, notificacións, cronoloxía federada, calquera número de listaxes e cancelos. + advanced_web_interface_hint: Se queres empregar todo o ancho da pantalla, a interface web avanzada permíteche configurar diferentes columnas para ver tanta información como queiras. Inicio, notificacións, cronoloxía federada, varias listaxes e cancelos. animations_and_accessibility: Animacións e accesibilidade confirmation_dialogs: Diálogos de confirmación discovery: Descubrir @@ -1169,9 +1155,6 @@ gl: hint: Este filtro aplícase para seleccionar publicacións individuais independentemente de outros criterios. Podes engadir máis publicacións a este filtro desde a interface web. title: Publicacións filtradas footer: - developers: Desenvolvedoras - more: Máis… - resources: Recursos trending_now: Tendencia agora generic: all: Todo @@ -1214,7 +1197,6 @@ gl: following: Lista de seguimento muting: Lista de usuarias acaladas upload: Subir - in_memoriam_html: Lembranzas. invites: delete: Desactivar expired: Caducou @@ -1394,22 +1376,7 @@ gl: remove_selected_follows: Deixar de seguir as usuarias escollidas status: Estado da conta remote_follow: - acct: Introduza o seu usuaria@servidor desde onde quere interactuar missing_resource: Non se puido atopar o URL de redirecionamento requerido para a súa conta - no_account_html: Non ten unha conta? Pode rexistrarse aquí - proceed: Proceda para seguir - prompt: 'Vas seguir a:' - reason_html: "Por que é necesario este paso?%{instance} podería non ser o servidor onde se rexistrou, así que precisamo redirixila primeiro ao seu servidor de orixe." - remote_interaction: - favourite: - proceed: Darlle a favorito - prompt: 'Vas marcar favorita esta publicación:' - reblog: - proceed: Darlle a promocionar - prompt: 'Vas promover esta publicación:' - reply: - proceed: Responde - prompt: 'Vas responder a esta publicación:' reports: errors: invalid_rules: non fai referencia a regras válidas diff --git a/config/locales/he.yml b/config/locales/he.yml index 980684910..95dadd06d 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -2,18 +2,10 @@ he: about: about_mastodon_html: מסטודון היא רשת חברתית חופשית, מבוססת תוכנה חופשית ("קוד פתוח"). כאלטרנטיבה בלתי ריכוזית לפלטפרומות המסחריות, מסטודון מאפשרת להמנע מהסיכונים הנלווים להפקדת התקשורת שלך בידי חברה יחידה. שמת את מבטחך בשרת אחד — לא משנה במי בחרת, תמיד אפשר לדבר עם כל שאר המשתמשים. לכל מי שרוצה יש את האפשרות להקים שרת מסטודון עצמאי, ולהשתתף ברשת החברתית באופן חלק. - api: ממשק - apps: יישומונים לנייד contact_missing: ללא הגדרה contact_unavailable: לא רלוונטי/חסר - documentation: תיעוד hosted_on: מסטודון שיושב בכתובת %{domain} - source_code: קוד מקור - what_is_mastodon: מה זה מסטודון? accounts: - choices_html: 'בחירותיו/ה של %{name}:' - endorsements_hint: תוכל/י להמליץ על אנשים לעקוב אחריהם דרך ממשק הווב, והם יופיעו כאן. - featured_tags_hint: תוכל/י להציג האשתגיות ספציפיות והן תופענה כאן. follow: לעקוב followers: many: עוקבים @@ -22,15 +14,9 @@ he: two: עוקבים following: נעקבים instance_actor_flash: חשבון זה הינו פועל וירטואלי המשמש לייצוג השרת עצמו ולא אף משתמש ספציפי. הוא משמש למטרות פדרציה ואין להשעותו. - joined: הצטרף/ה ב-%{date} last_active: פעילות אחרונה link_verified_on: בעלות על קישורית זו נבדקה לאחרונה ב-%{date} - media: מדיה - moved_html: "%{name} עבר(ה) אל %{new_profile_link}:" - network_hidden: מידע זה אינו זמין nothing_here: אין פה שום דבר! - people_followed_by: הנעקבים של %{name} - people_who_follow: העוקבים של %{name} pin_errors: following: עליך לעקוב אחרי חשבון לפני שניתן יהיה להמליץ עליו posts: @@ -39,12 +25,6 @@ he: other: פוסטים two: פוסטים posts_tab_heading: חצרוצים - posts_with_replies: חצרוצים ותגובות - roles: - bot: בוט - group: קבוצה - unavailable: פרופיל לא זמין - unfollow: הפסקת מעקב admin: account_actions: action: בצע/י פעולה @@ -1178,9 +1158,6 @@ he: hint: פילטר זה חל באופן של בחירת פוסטים בודדים ללא תלות בקריטריונים אחרים. תוכלו להוסיף עוד פוסטים לפילטר זה ממשק הווב. title: פוסטים שסוננו footer: - developers: מפתחות - more: עוד… - resources: משאבים trending_now: נושאים חמים generic: all: הכל @@ -1216,7 +1193,6 @@ he: following: רשימת נעקבים muting: רשימת השתקות upload: יבוא - in_memoriam_html: לזכר. invites: delete: ביטול הפעלה expired: פג תוקף @@ -1396,22 +1372,7 @@ he: remove_selected_follows: בטל מעקב אחר המשתמשים שסומנו status: מצב חשבון remote_follow: - acct: נא להקליד שם_משתמש@קהילה מהם ברצונך לעקוב missing_resource: לא ניתן למצוא קישורית להפניה לחשבונך - no_account_html: אין לך חשבון? ניתן להרשם כאן - proceed: להמשיך ולעקוב - prompt: 'לעקוב אחרי:' - reason_html: "למה שלב זה הכרחי? %{instance} עשוי לא להיות השרת בו את/ה רשום/ה, כך שנצטרך קודם כל להעביר אותך לשרת הבית." - remote_interaction: - favourite: - proceed: המשך לחיבוב - prompt: 'ברצונך לחבב פוסט זה:' - reblog: - proceed: המשיכו להדהוד - prompt: 'ברצונך להדהד פוסט זה:' - reply: - proceed: המשיבו לתגובה - prompt: 'ברצונך להשיב לפוסט זה:' reports: errors: invalid_rules: לא מתייחס לכללים קבילים diff --git a/config/locales/hr.yml b/config/locales/hr.yml index c05b3dcd6..7a9ee2dc3 100644 --- a/config/locales/hr.yml +++ b/config/locales/hr.yml @@ -2,24 +2,13 @@ hr: about: about_mastodon_html: 'Društvena mreža budućnosti: bez oglasa, bez korporativnog nadzora, etički dizajn i decentralizacija! Budite u vlasništvu svojih podataka pomoću Mastodona!' - apps: Mobilne aplikacije contact_missing: Nije postavljeno - documentation: Dokumentacija - source_code: Izvorni kôd accounts: follow: Prati following: Praćenih last_active: posljednja aktivnost - media: Medijski sadržaj nothing_here: Ovdje nema ničeg! - people_followed_by: Ljudi koje %{name} prati - people_who_follow: Ljudi koji prate %{name} posts_tab_heading: Tootovi - posts_with_replies: Tootovi i odgovori - roles: - group: Grupa - unavailable: Profil nije dostupan - unfollow: Prestani pratiti admin: account_actions: action: Izvrši radnju @@ -113,9 +102,6 @@ hr: new: title: Dodaj novi filter footer: - developers: Razvijatelji - more: Više… - resources: Resursi trending_now: Popularno generic: all: Sve @@ -181,10 +167,7 @@ hr: errors: already_voted: Već ste glasali u ovoj anketi remote_follow: - acct: Unesite Vaše KorisničkoIme@domena s kojim želite izvršiti radnju missing_resource: Nije moguće pronaći traženi URL preusmjeravanja za Vaš račun - proceed: Dalje - prompt: 'Pratit ćete:' sessions: platforms: other: nepoznata platforma diff --git a/config/locales/hu.yml b/config/locales/hu.yml index c0607183d..bbd0abd04 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -2,19 +2,11 @@ hu: about: about_mastodon_html: 'A jövő közösségi hálózata: Hirdetések és céges megfigyelés nélkül, etikus dizájnnal és decentralizációval! Legyél a saját adataid ura a Mastodonnal!' - api: API - apps: Mobil appok contact_missing: Nincs megadva contact_unavailable: N/A - documentation: Dokumentáció hosted_on: "%{domain} Mastodon szerver" - privacy_policy: Adatvédelmi szabályzat - source_code: Forráskód - what_is_mastodon: Mi a Mastodon? + title: Névjegy accounts: - choices_html: "%{name} választásai:" - endorsements_hint: A webes felületen promózhatsz általad követett embereket, akik itt fognak megjelenni. - featured_tags_hint: Szerepeltethetsz bizonyos hashtageket, melyek itt jelennek majd meg. follow: Követés followers: one: Követő @@ -23,27 +15,15 @@ hu: instance_actor_flash: |- Ez a fiók virtuális, magát a szervert reprezentálja, nem pedig konkrét felhasználót. Föderációs célokra szolgál, nem szabad tehát felfüggeszteni. - joined: Csatlakozott %{date} last_active: utoljára aktív link_verified_on: 'A hivatkozás tulajdonosa ekkor volt ellenőrizve: %{date}' - media: Média - moved_html: "%{name} ide költözött: %{new_profile_link}" - network_hidden: Ez az információ nem elérhető nothing_here: Nincs itt semmi! - people_followed_by: "%{name} követettjei" - people_who_follow: "%{name} követői" pin_errors: following: Ehhez szükséges, hogy kövesd már a felhasználót posts: one: Bejegyzés other: Bejegyzés posts_tab_heading: Bejegyzés - posts_with_replies: Bejegyzés válaszokkal - roles: - bot: Bot - group: Csoport - unavailable: Nincs ilyen profil - unfollow: Követés vége admin: account_actions: action: Művelet végrehajtása @@ -346,6 +326,7 @@ hu: listed: Felsorolva new: title: Új egyéni emodzsi hozzáadása + no_emoji_selected: Nem változott meg egy emodzsi sem, mert semmi sem volt kiválasztva not_permitted: Nem vagy jogosult a művelet végrehajtására overwrite: Felülírás shortcode: Rövidítés @@ -436,7 +417,7 @@ hu: create: Domain hozzáadása resolve: Domain feloldása title: Új e-mail domain tiltása - no_email_domain_block_selected: Nem változott meg egyetlen e-mail domain tiltás sem, mert nem volt egy sem kiválasztva + no_email_domain_block_selected: Nem változott meg egy domain tiltás sem, mert semmi sem volt kiválasztva resolved_dns_records_hint_html: A domain név a következő MX domain-ekre oldódik fel, melyek valójában fogadják az e-mailt. Az MX domain letiltása minden olyan feliratkozást tiltani fog, melyben az e-mailcím ugyanazt az MX domaint használja, még akkor is, ha a látható domain név más. Légy óvatos, hogy ne tilts le nagy e-mail szolgáltatókat. resolved_through_html: Feloldva %{domain}-n keresztül title: Tiltott e-mail domainek @@ -536,7 +517,7 @@ hu: '94670856': 3 év new: title: Új IP szabály létrehozása - no_ip_block_selected: Nem változtattunk egy IP szabályon sem, mivel egy sem volt kiválasztva + no_ip_block_selected: Nem változott meg egy IP-szabály sem, mert semmi sem volt kiválasztva title: IP szabály relationships: title: "%{acct} kapcsolatai" @@ -814,6 +795,9 @@ hu: description_html: Ezek olyan hivatkozások, melyeket a szervered által látott fiókok mostanában sokat osztanak meg. Ez segíthet a felhasználóidnak rátalálni arra, hogy mi történik a világban. Egy hivatkozást sem mutatunk meg nyilvánosan, amíg a közzétevőt jóvá nem hagytad. A hivatkozásokat külön is engedélyezheted vagy visszautasíthatod. disallow: Hivatkozás letiltása disallow_provider: Közzétevő letiltása + no_link_selected: Nem változott meg egy hivatkozás sem, mert semmi sem volt kiválasztva + publishers: + no_publisher_selected: Nem változott meg egy közzétevő sem, mert semmi sem volt kiválasztva shared_by_over_week: one: Egy ember osztotta meg a múlt héten other: "%{count} ember osztotta meg a múlt héten" @@ -833,6 +817,7 @@ hu: description_html: Ezek olyan, a szervered által ismert bejegyzések, melyeket mostanság gyakran osztanak meg vagy jelölnek kedvencnek. Ez segíthet az új vagy visszatérő felhasználóidnak, hogy több követhető személyt találjanak Egyetlen bejegyzést sem mutatunk meg nyilvánosan, amíg ennek szerzőjét nem hagytad jóvá és ő nem járult hozzá, hogy őt másoknak ajánlják. Bejegyzéseket egyenként is engedélyezhetsz vagy visszautasíthatsz. disallow: Bejegyzés tiltása disallow_account: Szerző tiltása + no_status_selected: Nem változott meg egy felkapott bejegyzés sem, mert semmi sem volt kiválasztva not_discoverable: A szerző nem járult hozzá, hogy mások rátalálhassanak shared_by: one: Megosztva vagy kedvencnek jelölve egy alkalommal @@ -848,6 +833,7 @@ hu: tag_uses_measure: összes használat description_html: Ezek olyan hashtag-ek, melyek mostanság nagyon sok bejegyzésben jelennek meg, melyet a szervered lát. Ez segíthet a felhasználóidnak abban, hogy megtudják, miről beszélnek legtöbbet az emberek az adott pillanatban. Egyetlen hashtag-et sem mutatunk meg nyilvánosan, amíg azt nem hagytad jóvá. listable: Javasolható + no_tag_selected: Nem változott meg egy címke sem, mert semmi sem volt kiválasztva not_listable: Nem lesz javasolva not_trendable: Nem fog megjelenni a trendek alatt not_usable: Nem használható @@ -1171,9 +1157,6 @@ hu: hint: Ez a szűrő egyedi bejegyzések kiválasztására vonatkozik a megadott kritériumoktól függetlenül. Újabb bejegyzéseket adhatsz hozzá ehhez a szűrőhöz a webes felületen keresztül. title: Megszűrt bejegyzések footer: - developers: Fejlesztőknek - more: Többet… - resources: Segédanyagok trending_now: Most felkapott generic: all: Mind @@ -1216,7 +1199,6 @@ hu: following: Követettjeid listája muting: Némított felhasználók listája upload: Feltöltés - in_memoriam_html: Emlékünkben. invites: delete: Visszavonás expired: Lejárt @@ -1396,22 +1378,7 @@ hu: remove_selected_follows: Kiválasztottak követésének abbahagyása status: Fiók állapota remote_follow: - acct: Írd be a felhasználódat, amelyről követni szeretnéd felhasznalonev@domain formátumban missing_resource: A fiókodnál nem található a szükséges átirányítási URL - no_account_html: Nincs fiókod? Regisztrálj itt - proceed: Tovább a követéshez - prompt: 'Őt tervezed követni:' - reason_html: "Miért van erre szükség? %{instance} nem feltétlenül az a szerver, ahol regisztrálva vagy, ezért először a saját szerveredre irányítunk." - remote_interaction: - favourite: - proceed: Jelöljük kedvencnek - prompt: 'Ezt a bejegyzést szeretnéd kedvencnek jelölni:' - reblog: - proceed: Tovább a megtoláshoz - prompt: 'Ezt a bejegyzést szeretnéd megtolni:' - reply: - proceed: Válaszadás - prompt: 'Erre a bejegyzésre szeretnél válaszolni:' reports: errors: invalid_rules: nem hivatkozik érvényes szabályra diff --git a/config/locales/hy.yml b/config/locales/hy.yml index 1c1bd5bbd..7ba00a847 100644 --- a/config/locales/hy.yml +++ b/config/locales/hy.yml @@ -2,45 +2,25 @@ hy: about: about_mastodon_html: Ապագայի սոցցանցը։ Ոչ մի գովազդ, ոչ մի կորպորատիվ վերահսկողութիւն, էթիկական դիզայն, եւ ապակենտրոնացում։ Մաստադոնում դու ես քո տուեալների տէրը։ - api: API - apps: Բջջային յաւելուածներ contact_missing: Սահմանված չէ contact_unavailable: Ոչինչ չկա - documentation: Փաստաթղթեր hosted_on: Մաստոդոնը տեղակայուած է %{domain}ում - source_code: Ելատեքստ - what_is_mastodon: Ի՞նչ է Մաստոդոնը accounts: - choices_html: "%{name}-ի ընտրանի՝" - endorsements_hint: Վէբ ինտերֆէյսից կարող ես ցուցադրել մարդկանց, որոնց հետեւում ես, եւ նրանք կը ցուցադրուեն այստեղ։ - featured_tags_hint: Դու կարող ես ցուցադրել յատուկ պիտակներ, որոնք կը ցուցադրուեն այստեղ։ follow: Հետևել followers: one: Հետեւորդ other: Հետևորդներ following: Հետեւած instance_actor_flash: Այս հաշիւը վիրտուալ դերասան է, որը ներկայացնում է հանգոյցը, եւ ոչ որեւէ անհատ օգտատիրոջ։ Այն օգտագործուում է ֆեդերացիայի նպատակներով եւ չպէտք է կասեցուի։ - joined: Միացել են %{date} last_active: վերջին այցը link_verified_on: Սոյն յղման տիրապետումը ստուգուած է՝ %{date}֊ին - media: Մեդիա - moved_html: "%{name} տեղափոխուել է %{new_profile_link}" - network_hidden: Այս տուեալը հասանելի չէ nothing_here: Այստեղ բան չկայ - people_followed_by: Մարդիկ, որոնց %{name}ը հետեւում է - people_who_follow: Մարդիկ, որոնք հետեւում են %{name}ին pin_errors: following: Դու պէտք է հետեւես մարդուն, որին ցանկանում ես խրախուսել posts: one: Գրառում other: Գրառումներ posts_tab_heading: Գրառումներ - posts_with_replies: Գրառումներ եւ պատասխաններ - roles: - bot: Բոտ - group: Խումբ - unavailable: Պրոֆիլը հասանելի չի - unfollow: Չհետևել admin: account_actions: action: Կատարել գործողութիւն @@ -602,9 +582,6 @@ hy: new: title: Ավելացնել ֆիլտր footer: - developers: Մշակողներ - more: Ավելին… - resources: Ռեսուրսներ trending_now: Այժմ արդիական generic: all: Բոլորը @@ -756,9 +733,6 @@ hy: remove_selected_followers: Հեռացնել նշուած հետեւորդներին remove_selected_follows: Ապահետեւել նշուած օգտատէրերին status: Հաշուի կարգավիճակ - remote_follow: - acct: Մուտքագրիր քո օգտանուն@տիրոյթ, որի անունից ցանկանում ես գործել - prompt: Դու պատրաստուում ես հետևել՝ scheduled_statuses: too_soon: Նախադրուած ամսաթիւը պէտք է լինի ապագայում sessions: diff --git a/config/locales/id.yml b/config/locales/id.yml index 58a78594d..026081e84 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -2,43 +2,23 @@ id: about: about_mastodon_html: Mastodon adalah sebuah jejaring sosial terbuka, open-sourcedesentralisasi dari platform komersial, menjauhkan anda resiko dari sebuah perusahaan yang memonopoli komunikasi anda. Pilih server yang anda percayai — apapun yang anda pilih, anda tetap dapat berinteraksi dengan semua orang. Semua orang dapat menjalankan server Mastodon sendiri dan berpartisipasi dalam jejaring sosial dengan mudah. - api: API - apps: Aplikasi mobile contact_missing: Belum diset contact_unavailable: Tidak Tersedia - documentation: Dokumentasi hosted_on: Mastodon dihosting di %{domain} - source_code: Kode sumber - what_is_mastodon: Apa itu Mastodon? accounts: - choices_html: 'Pilihan %{name}:' - endorsements_hint: Anda dapat mempromosikan orang yang Anda ikuti lewat antar muka web, dan mereka akan muncul di sini. - featured_tags_hint: Anda dapat mengunggulkan tagar tertentu yang akan ditampilkan di sini. follow: Ikuti followers: other: Pengikut following: Mengikuti instance_actor_flash: Akun ini adalah aktor virtual yang merepresentasikan server itu sendiri dan bukan pengguna individu. Ini dipakai untuk tujuan gabungan dan seharusnya tidak ditangguhkan. - joined: Bergabung pada %{date} last_active: terakhir aktif link_verified_on: Kepemilikan tautan ini telah dicek pada %{date} - media: Media - moved_html: "%{name} telah pindah ke %{new_profile_link}:" - network_hidden: Informasi ini tidak tersedia nothing_here: Tidak ada apapun disini! - people_followed_by: Orang yang diikuti %{name} - people_who_follow: Orang-orang yang mengikuti %{name} pin_errors: following: Anda harus mengikuti orang yang ingin anda endorse posts: other: Toot posts_tab_heading: Toot - posts_with_replies: Toot dan balasan - roles: - bot: Bot - group: Grup - unavailable: Profil tidak tersedia - unfollow: Berhenti mengikuti admin: account_actions: action: Lakukan aksi @@ -1029,9 +1009,6 @@ id: new: title: Tambah saringan baru footer: - developers: Pengembang - more: Lainnya… - resources: Sumber daya trending_now: Sedang tren generic: all: Semua @@ -1063,7 +1040,6 @@ id: following: Daftar diikuti muting: Daftar didiamkan upload: Unggah - in_memoriam_html: Dalam memori. invites: delete: Nonaktifkan expired: Kedaluwarsa @@ -1238,22 +1214,7 @@ id: remove_selected_follows: Batal ikuti pengguna terpilih status: Status akun remote_follow: - acct: Masukkan namapengguna@domain yang akan anda ikuti missing_resource: Tidak dapat menemukan URL redirect dari akun anda - no_account_html: Tidak memiliki akun? Anda dapat mendaftar di sini - proceed: Lanjutkan untuk mengikuti - prompt: 'Anda akan mengikuti:' - reason_html: "Mengapa langkah ini penting? %{instance} mungkin saja bukan tempat Anda mendaftar, sehingga kami perlu mengalihkan Anda ke server beranda lebih dahulu." - remote_interaction: - favourite: - proceed: Lanjutkan ke favorit - prompt: 'Anda ingin memfavoritkan toot ini:' - reblog: - proceed: Lanjutkan ke boost - prompt: 'Anda ingin mem-boost toot ini:' - reply: - proceed: Lanjutkan ke balasan - prompt: 'Anda ingin membalas toot ini:' reports: errors: invalid_rules: tidak mereferensikan aturan yang valid diff --git a/config/locales/io.yml b/config/locales/io.yml index 17b4e2801..4d515ce6b 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -2,46 +2,26 @@ io: about: about_mastodon_html: Mastodon esas gratuita, apertitkodexa sociala reto. Ol esas sencentra altra alternativo a komercala servadi. Ol evitigas, ke sola firmo guvernez tua tota komunikadol. Selektez servero, quan tu fidas. Irge qua esas tua selekto, tu povas komunikar kun omna altra uzeri. Irgu povas krear sua propra instaluro di Mastodon en sua servero, e partoprenar en la sociala reto tote glate. - api: API - apps: Smartfonsoftwari contact_missing: Ne fixigita contact_unavailable: Nula - documentation: Dokumentajo hosted_on: Mastodon hostigesas che %{domain} - privacy_policy: Privatesguidilo - source_code: Fontkodexo - what_is_mastodon: Quo esas Mastodon? + title: Pri co accounts: - choices_html: 'Selektaji di %{name}:' - endorsements_hint: Vu povas rekomendar personi quon vu sequas de retintervizajo, e oli montresos hike. - featured_tags_hint: Vu povas estalar partikulara hashtagi quo montresos hike. follow: Sequar followers: one: Sequanto other: Sequanti following: Sequati instance_actor_flash: Ca konto esas virtuala aganto quo uzesas por reprezentar la servilo e ne irga individuala uzanto. Ol uzesas por federskopo e ne debas restriktesar. - joined: Juntis ye %{date} last_active: lasta aktiva tempo link_verified_on: Proprieteso di ca ligilo kontrolesis ye %{date} - media: Medii - moved_html: "%{name} transferesis a %{new_profile_link}:" - network_hidden: Ca informi ne esas disponebla nothing_here: Esas nulo hike! - people_followed_by: Sequati da %{name} - people_who_follow: Sequanti di %{name} pin_errors: following: Vu mustas ja sequar persono quon vu volas estalar posts: one: Posto other: Posti posts_tab_heading: Posti - posts_with_replies: Posti e respondi - roles: - bot: Boto - group: Grupo - unavailable: Profilo esas nedisponebla - unfollow: Dessequar admin: account_actions: action: Agez @@ -344,6 +324,7 @@ io: listed: Listita new: title: Insertez nova kustumizita emocimajo + no_emoji_selected: Nula emocimaji chanjesis pro ke nulo selektesis not_permitted: Vu ne permisesis agar co overwrite: Remplasez shortcode: Kurtkodexo @@ -812,6 +793,9 @@ io: description_html: Co esas ligili quo nun multe partigesas da konti kun posti quon vua servilo vidas. Ol povas helpar vua uzanti lernar quo eventas en mondo. Ligili ne publike montresas til vu aprobar publikiganto. Vu povas anke permisar o refuzar individuala ligili. disallow: Despermisez ligilo disallow_provider: Despermisez publikiganto + no_link_selected: Nula ligili chanjesis pro ke nulo selektesis + publishers: + no_publisher_selected: Nula publikiganti chanjesis pro ke nulo selektesis shared_by_over_week: one: Partigesis da 1 persono de pos antea semano other: Partigesis da %{count} personi de pos antea semano @@ -831,6 +815,7 @@ io: description_html: Co esas posti quon vua servilo savas quale nun partigesas e favorizesas multe nun. Ol povas helpar vua nova e retrovenanta uzanti trovar plu multa personi por sequar. Posti ne publike montresas til vu aprobar la skribanto, e la skribanto permisas sua konto sugestesas a altra personi. Vu povas anke permisar o refuzar individuala posti. disallow: Despermisez posto disallow_account: Despermisez skribanto + no_status_selected: Nula tendencoza posti chanjesis pro ke nulo selektesis not_discoverable: Skribanto ne konsentis pri esar deskovrebla shared_by: one: Partigesis o favorizesis 1 foye @@ -846,6 +831,7 @@ io: tag_uses_measure: uzsumo description_html: Co esas hashtagi quo nun aparas en multa posti quon vua servilo vidas. Ol povas helpar vua uzanti lernar quon personi parolas frequente nun. Hashtagi ne montresas publike til vu aprobar. listable: Povas sugestesar + no_tag_selected: Nula tagi chanjesis pro ke nulo selektesis not_listable: Ne sugestesar not_trendable: Ne aparas che tendenci not_usable: Ne povas uzesar @@ -951,6 +937,7 @@ io: warning: Sorgemez per ca informi. Ne partigez kun irgu! your_token: Vua acesficho auth: + apply_for_account: Esez sur vartlisto change_password: Pasvorto delete_account: Efacez konto delete_account_html: Se vu volas efacar vua konto, vu povas irar hike. Vu demandesos konfirmar. @@ -970,6 +957,7 @@ io: migrate_account: Transferez a diferanta konto migrate_account_html: Se vu volas ridirektar ca konto a diferanto, vu povas ajustar hike. or_log_in_with: O eniras per + privacy_policy_agreement_html: Me lektis e konsentis privatesguidilo providers: cas: CAS saml: SAML @@ -977,12 +965,18 @@ io: registration_closed: "%{instance} ne aceptas nova membri" resend_confirmation: Risendar la instrucioni por konfirmar reset_password: Chanjar la pasvorto + rules: + preamble: Co igesas e exekutesas da jereri di %{domain}. + title: Kelka bazala reguli. security: Chanjar pasvorto set_new_password: Selektar nova pasvorto setup: email_below_hint_html: Se suba retpostoadreso esas nekorekta, vu povas chanjar hike e ganar nova konfirmretposto. email_settings_hint_html: Konfirmretposto sendesis a %{email}. Se ta retpostoadreso ne esas korekta, vu povas chanjar en kontoopcioni. title: Komencoprocedo + sign_up: + 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: account_status: Kontostando confirming: Vartas retpostokonfirmo finar. @@ -1161,9 +1155,6 @@ io: hint: Ca filtrilo aplikesas a selektita posti ne segun altra kriterio. Vu povas pozar plu multa posti a ca filtrilo de retintervizajo. title: Filtrita posti footer: - developers: Developeri - more: Pluse… - resources: Moyeni trending_now: Nuna tendenco generic: all: Omna @@ -1206,7 +1197,6 @@ io: following: Listo de sequati muting: Silenciglisto upload: Kargar - in_memoriam_html: Memorialo. invites: delete: Deaktivigez expired: Expiris @@ -1362,6 +1352,8 @@ io: other: Altra posting_defaults: Originala postoopcioni public_timelines: Publika tempolinei + privacy_policy: + title: Privatesguidilo reactions: errors: limit_reached: Limito di diferanta reakto atingesis @@ -1384,22 +1376,7 @@ io: remove_selected_follows: Desequez selektita uzanti status: Kontostando remote_follow: - acct: Enpozez tua uzernomo@instaluro de ube tu volas sequar ta uzero missing_resource: La URL di plussendado ne povis esar trovita - no_account_html: Ka vu ne havas konto? Vu povas registrar hike - proceed: Durar por plussendar - prompt: 'Tu sequeskos:' - reason_html: "Por quo ca demarsho bezonesas? %{instance} forsan ne esas servilo ube vu registris, do ni bezonas ridirektar vu a vua hemservilo unesme." - remote_interaction: - favourite: - proceed: Durez favorizar - prompt: 'Vu povas favorizar ca posto:' - reblog: - proceed: Durez bustar - prompt: 'Vu volas bustar ca posto:' - reply: - proceed: Durez respondar - prompt: 'Vu volas respondar ca posto:' reports: errors: invalid_rules: ne refera valida reguli @@ -1649,8 +1626,10 @@ io: suspend: Konto restriktigesis welcome: edit_profile_action: Facez profilo + edit_profile_step: Vu povas kustumizar vua profilo per adchargar profilimajo, chanjesar vua montronomo e plue. Vu povas selektas kontrolar nova sequanti ante oli permisesas sequar vu. explanation: Subo esas guidilo por helpar vu komencar final_action: Komencez postigar + final_step: 'Jus postigez! Mem sen sequanti, vua publika posti povas videsar da altra personi, exemplo es en lokala tempolineo e en hashtagi. Vu povas anke introduktar su en #introductions hashtagi.' full_handle: Vua kompleta profilnomo full_handle_hint: Co esas quon vu dicos a amiki por ke oli povas mesajigar o sequar vu de altra servilo. subject: Bonveno a Mastodon diff --git a/config/locales/is.yml b/config/locales/is.yml index f7e420843..aa8f55804 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -2,46 +2,26 @@ is: about: about_mastodon_html: 'Samfélagsnet framtíðarinnar: Engar auglýsingar, ekkert eftirlit stórfyrirtækja, siðleg hönnun og engin miðstýring! Þú átt þín eigin gögn í Mastodon!' - api: API-kerfisviðmót - apps: Farsímaforrit contact_missing: Ekki skilgreint contact_unavailable: Ekki til staðar - documentation: Hjálparskjöl hosted_on: Mastodon hýst á %{domain} - privacy_policy: Persónuverndarstefna - source_code: Grunnkóði - what_is_mastodon: Hvað er Mastodon? + title: Um hugbúnaðinn accounts: - choices_html: "%{name} hefur valið:" - endorsements_hint: Þú getur auglýst efni frá fólki sem þú fylgir í vefviðmótinu og mun það birtast hér. - featured_tags_hint: Þú getur gefið sérstökum myllumerkjum aukið vægi og birtast þau þá hér. follow: Fylgjast með followers: one: fylgjandi other: fylgjendur following: Fylgist með instance_actor_flash: Þessi notandaaðgangur er sýndarnotandi sem stendur fyrir sjálfan netþjóninn en ekki neinn einstakling. Hann er notaður við skýjasambandsmiðlun og ætti ekki að setja hann í bið eða banna. - joined: Gerðist þátttakandi %{date} last_active: síðasta virkni link_verified_on: Eignarhald á þessum tengli var athugað þann %{date} - media: Myndefni - moved_html: "%{name} hefur verið færður í %{new_profile_link}:" - network_hidden: Þessar upplýsingar ekki tiltækar nothing_here: Það er ekkert hér! - people_followed_by: Fólk sem %{name} fylgist með - people_who_follow: Fólk sem fylgist með %{name} pin_errors: following: Þú þarft að vera þegar að fylgjast með þeim sem þú ætlar að mæla með posts: one: Færsla other: Færslur posts_tab_heading: Færslur - posts_with_replies: Færslur og svör - roles: - bot: Róbót - group: Hópur - unavailable: Notandasnið ekki tiltækt - unfollow: Hætta að fylgja admin: account_actions: action: Framkvæma aðgerð @@ -344,6 +324,7 @@ is: listed: Skráð new: title: Bæta við nýju sérsniðnu tjáningartákni + no_emoji_selected: Engum táknum var breytt þar sem engin voru valin not_permitted: Þú hefur ekki réttindi til að framkvæma þessa aðgerð overwrite: Skrifa yfir shortcode: Stuttkóði @@ -812,6 +793,9 @@ is: description_html: Þetta eru tenglar/slóðir sem mikið er deilt af notendum sem netþjónninn þinn sér færslur frá. Þeir geta hjálpað notendunum þínu við að finna út hvað sé í gangi í heiminum. Engir tenglar birtast opinberlega fyrr en þú hefur samþykkt útgefanda þeirra. Þú getur líka leyft eða hafnað eintökum tenglum. disallow: Ekki leyfa tengil disallow_provider: Ekki leyfa útgefanda + no_link_selected: Engum tenglum var breytt þar sem engir voru valdir + publishers: + no_publisher_selected: Engum útgefendum var breytt þar sem engir voru valdir shared_by_over_week: one: Deilt af einum aðila síðustu vikuna other: Deilt af %{count} aðilum síðustu vikuna @@ -831,6 +815,7 @@ is: description_html: Þetta eru færslur sem netþjónninn þinn veit að er víða deilt eða eru mikið sett í eftirlæti þessa stundina. Þær geta hjálpað nýjum sem eldri notendum þínum við að finna fleira fólk til að fylgjast með. Engar færslur birtast opinberlega fyrr en þú hefur samþykkt höfund þeirra og að viðkomandi höfundur leyfi að efni frá þeim sé notað í tillögur til annarra. Þú getur líka leyft eða hafnað eintökum færslum. disallow: Ekki leyfa færslu disallow_account: Ekki leyfa höfund + no_status_selected: Engum vinsælum færslum var breytt þar sem engar voru valdar not_discoverable: Höfundur hefur ekki beðið um að vera finnanlegur shared_by: one: ShaDeilt eða gert að eftirlæti einu sinni @@ -846,6 +831,7 @@ is: tag_uses_measure: tilvik alls description_html: Þetta eru myllumerki sem birtast núna í mjög mörgum færslum sem netþjónninn þinn sér. Þau geta hjálpað notendunum þínu við að finna út hvað sé mest í umræðunni hjá öðru fólki. Engin myllumerki birtast opinberlega fyrr en þú hefur samþykkt þau. listable: Má stinga uppá + no_tag_selected: Engum merkjum var breytt þar sem engin voru valin not_listable: Mun ekki vera stungið uppá not_trendable: Mun ekki birtast í vinsældum not_usable: Má ekki nota @@ -1169,9 +1155,6 @@ is: hint: Þessi sía virkar til að velja stakar færslur án tillits til annarra skilyrða. Þú getur bætt fleiri færslum í þessa síu í vefviðmótinu. title: Síaðar færslur footer: - developers: Forritarar - more: Meira… - resources: Tilföng trending_now: Í umræðunni núna generic: all: Allt @@ -1214,7 +1197,6 @@ is: following: Listi yfir þá sem fylgst er með muting: Listi yfir þagganir upload: Senda inn - in_memoriam_html: Minning. invites: delete: Gera óvirkt expired: Útrunnið @@ -1394,22 +1376,7 @@ is: remove_selected_follows: Hætta að fylgjast með völdum notendum status: Staða aðgangs remote_follow: - acct: Settu inn notandanafn@lén þaðan sem þú vilt vera virk/ur missing_resource: Gat ekki fundið endurbeiningarslóðina fyrir notandaaðganginn þinn - no_account_html: Ertu ekki með aðgang? Þú getur nýskráð þig hér - proceed: Halda áfram í að fylgjast með - prompt: 'Þú ætlar að fara að fylgjast með:' - reason_html: "Hvers vegna er þetta skref nauðsynlegt? %{instance} er ekki endilega netþjónninn þar sem þú ert skráð/ur, þannig að við verðum að endurbeina þér á heimaþjóninn þinn fyrst." - remote_interaction: - favourite: - proceed: Halda áfram í að setja í eftirlæti - prompt: 'Þú ætlar að setja þessa færslu í eftirlæti:' - reblog: - proceed: Halda áfram í endurbirtingu - prompt: 'Þú ætlar að endurbirta þessa færslu:' - reply: - proceed: Halda áfram í að svara - prompt: 'Þú ætlar að svara þessari færslu:' reports: errors: invalid_rules: vísar ekki til gildra reglna diff --git a/config/locales/it.yml b/config/locales/it.yml index 42581d8b3..a1aa2ee66 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -2,46 +2,26 @@ it: about: about_mastodon_html: 'Il social network del futuro: niente pubblicità, niente controllo da parte di qualche azienda privata, design etico e decentralizzazione! Con Mastodon il proprietario dei tuoi dati sei tu!' - api: API - apps: Applicazioni per dispositivi mobili contact_missing: Non impostato contact_unavailable: N/D - documentation: Documentazione hosted_on: Mastodon ospitato su %{domain} - privacy_policy: Politica sulla Privacy - source_code: Codice sorgente - what_is_mastodon: Che cos'è Mastodon? + title: Info accounts: - choices_html: 'Suggerimenti da %{name}:' - endorsements_hint: 'Puoi segnalare persone che segui e che apprezzi dall''interfaccia web: saranno mostrate qui.' - featured_tags_hint: Puoi mettere in evidenza determinati hashtag che verranno visualizzati qui. follow: Segui followers: one: Seguace other: Seguaci following: Segui instance_actor_flash: Questo account è un attore virtuale usato per rappresentare il server stesso e non un singolo utente. Viene utilizzato per scopi federativi e non dovrebbe essere sospeso. - joined: Dal %{date} last_active: ultima attività link_verified_on: La proprietà di questo link è stata controllata il %{date} - media: Media - moved_html: "%{name} si è spostato su %{new_profile_link}:" - network_hidden: Questa informazione non e' disponibile nothing_here: Qui non c'è nulla! - people_followed_by: Persone seguite da %{name} - people_who_follow: Persone che seguono %{name} pin_errors: following: Devi gia seguire la persona che vuoi promuovere posts: one: Toot other: Toot posts_tab_heading: Toot - posts_with_replies: Toot e risposte - roles: - bot: Bot - group: Gruppo - unavailable: Profilo non disponibile - unfollow: Non seguire più admin: account_actions: action: Esegui azione @@ -344,6 +324,7 @@ it: listed: Elencato new: title: Aggiungi nuovo emoji personalizzato + no_emoji_selected: Nessuna emoji è stata cambiata in quanto nessuna è stata selezionata not_permitted: Non hai il permesso di eseguire questa azione overwrite: Sovrascrivi shortcode: Scorciatoia @@ -812,6 +793,9 @@ it: description_html: Questi sono collegamenti che attualmente vengono molto condivisi dagli account di cui il server vede i post. Può aiutare i tuoi utenti a scoprire cosa sta succedendo nel mondo. Nessun link viene visualizzato pubblicamente finché non si approva chi lo pubblica. È anche possibile permettere o rifiutare i singoli collegamenti. disallow: Non consentire link disallow_provider: Non consentire editore + no_link_selected: Nessun collegamento è stato modificato in quanto nessuno è stato selezionato + publishers: + no_publisher_selected: Nessun editore è stato modificato in quanto nessuno è stato selezionato shared_by_over_week: one: Condiviso da una persona nell'ultima settimana other: Condiviso da %{count} persone nell'ultima settimana @@ -831,6 +815,7 @@ it: description_html: Questi sono post noti al tuo server che sono attualmente molto condivisi e preferiti. Può aiutare i tuoi utenti (nuovi e non) a trovare più persone da seguire. Nessun post viene visualizzato pubblicamente fino a quando si approva l'autore, e l'autore permette che il suo account sia suggerito ad altri. È anche possibile permettere o rifiutare singoli post. disallow: Non consentire post disallow_account: Non consentire autore + no_status_selected: Nessun post di tendenza è stato modificato in quanto nessuno è stato selezionato not_discoverable: L'autore non ha optato di essere scopribile shared_by: one: Condiviso o preferito una volta @@ -846,6 +831,7 @@ it: tag_uses_measure: usi totali description_html: Questi sono hashtag che attualmente compaiono in molti post che il tuo server vede. Può aiutare i tuoi utenti a scoprire di cosa le persone stanno parlando di più al momento. Nessun hashtag viene visualizzato pubblicamente finché non lo approvi. listable: Suggeribile + no_tag_selected: Nessun tag è stato modificato in quanto nessuno è stato selezionato not_listable: Non sarà suggerito not_trendable: Non apparirà nelle tendenze not_usable: Inutilizzabile @@ -1171,9 +1157,6 @@ it: hint: Questo filtro si applica a singoli post indipendentemente da altri criteri. Puoi aggiungere più post a questo filtro dall'interfaccia Web. title: Post filtrati footer: - developers: Sviluppatori - more: Altro… - resources: Risorse trending_now: Di tendenza ora generic: all: Tutto @@ -1216,7 +1199,6 @@ it: following: Lista dei seguiti muting: Lista dei silenziati upload: Carica - in_memoriam_html: In Memoriam. invites: delete: Disattiva expired: Scaduto @@ -1396,22 +1378,7 @@ it: remove_selected_follows: Smetti di seguire gli utenti selezionati status: Stato dell'account remote_follow: - acct: Inserisci il tuo username@dominio da cui vuoi seguire questo utente missing_resource: Impossibile trovare l'URL di reindirizzamento richiesto per il tuo account - no_account_html: Non hai un account? Puoi iscriverti qui - proceed: Conferma - prompt: 'Stai per seguire:' - reason_html: "Perchè questo passo è necessario? %{instance} potrebbe non essere il server nel quale tu sei registrato, quindi dobbiamo reindirizzarti prima al tuo server." - remote_interaction: - favourite: - proceed: Continua per segnare come apprezzato - prompt: 'Vuoi segnare questo post come apprezzato:' - reblog: - proceed: Continua per condividere - prompt: 'Vuoi condividere questo post:' - reply: - proceed: Continua per rispondere - prompt: 'Vuoi rispondere a questo post:' reports: errors: invalid_rules: non fa riferimento a regole valide diff --git a/config/locales/ja.yml b/config/locales/ja.yml index d12895f06..2bcfcfdf1 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -2,44 +2,24 @@ ja: about: about_mastodon_html: Mastodonは、オープンなウェブプロトコルを採用した、自由でオープンソースなソーシャルネットワークです。電子メールのような分散型の仕組みを採っています。 - api: API - apps: アプリ contact_missing: 未設定 contact_unavailable: N/A - documentation: ドキュメント hosted_on: Mastodon hosted on %{domain} - privacy_policy: プライバシーポリシー - source_code: ソースコード - what_is_mastodon: Mastodonとは? + title: About accounts: - choices_html: "%{name}によるおすすめ:" - endorsements_hint: あなたがフォローしている中でおすすめしたい人をここで紹介できます。 - featured_tags_hint: 特定のハッシュタグをここに表示できます。 follow: フォロー followers: other: フォロワー following: フォロー中 instance_actor_flash: このアカウントは、個々のユーザーではなく、サーバー自体を表すために使用される仮想のユーザーです。 連合のために使用されるため、停止しないで下さい。 - joined: "%{date}に登録" last_active: 最後の活動 link_verified_on: このリンクの所有権は%{date}に確認されました - media: メディア - moved_html: "%{name}さんは%{new_profile_link}に引っ越しました:" - network_hidden: この情報は利用できません nothing_here: 何もありません! - people_followed_by: "%{name}さんがフォロー中のアカウント" - people_who_follow: "%{name}さんをフォロー中のアカウント" pin_errors: following: おすすめしたい人はあなたが既にフォローしている必要があります posts: other: 投稿 posts_tab_heading: 投稿 - posts_with_replies: 投稿と返信 - roles: - bot: Bot - group: Group - unavailable: プロフィールは利用できません - unfollow: フォロー解除 admin: account_actions: action: アクションを実行 @@ -1114,9 +1094,6 @@ ja: index: title: フィルターされた投稿 footer: - developers: 開発者向け - more: さらに… - resources: リソース trending_now: トレンドタグ generic: all: すべて @@ -1149,7 +1126,6 @@ ja: following: フォロー中のアカウントリスト muting: ミュートしたアカウントリスト upload: アップロード - in_memoriam_html: 故人を偲んで。 invites: delete: 無効化 expired: 期限切れ @@ -1328,22 +1304,7 @@ ja: remove_selected_follows: 選択したユーザーをフォロー解除 status: 状態 remote_follow: - acct: あなたの ユーザー名@ドメイン を入力してください missing_resource: リダイレクト先が見つかりませんでした - no_account_html: アカウントをお持ちではないですか?こちらからサインアップできます - proceed: フォローする - prompt: 'フォローしようとしています:' - reason_html: "なぜこの手順が必要でしょうか? %{instance}はあなたが登録されているサーバーではないかもしれないので、まずあなたのサーバーに転送する必要があります。" - remote_interaction: - favourite: - proceed: お気に入り登録する - prompt: 'お気に入り登録しようとしています:' - reblog: - proceed: ブーストする - prompt: 'ブーストしようとしています:' - reply: - proceed: 返信する - prompt: '返信しようとしています:' reports: errors: invalid_rules: 有効なルールを参照していません diff --git a/config/locales/ka.yml b/config/locales/ka.yml index f7e820600..c3ea20326 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -2,31 +2,15 @@ ka: about: about_mastodon_html: მასტოდონი ღია ვებ პროტოკოლებზე და უფასო, ღია პროგრამებზე დაფუძნებული სოციალური ქსელია. ის ისეთი დეცენტრალიზებულია როგორც ელ-ფოსტა. - api: აპი - apps: მობილური აპლიკაციები contact_missing: არაა დაყენებული contact_unavailable: მიუწ. - documentation: დოკუმენტაცია hosted_on: მასტოდონს მასპინძლობს %{domain} - source_code: კოდი - what_is_mastodon: რა არის მასტოდონი? accounts: - choices_html: "%{name}-ის არჩევნები:" follow: გაყევი following: მიჰყვება - joined: გაწევრიანდა %{date} - media: მედია - moved_html: "%{name} გადავიდა %{new_profile_link}:" - network_hidden: ეს ინფორმაცია ხელმიუწვდომელია nothing_here: აქ არაფერია! - people_followed_by: ხალხი ვისაც %{name} მიჰყვება - people_who_follow: ხალხი ვინც მიჰყვება %{name}-ს pin_errors: following: იმ ადამიანს, ვინც მოგწონთ, უკვე უნდა მიჰყვებოდეთ - posts_with_replies: ტუტები და პასუხები - roles: - bot: ბოტი - unfollow: ნუღარ მიჰყვები admin: account_moderation_notes: create: დატოვეთ ჩანაწერი @@ -363,10 +347,6 @@ ka: title: ფილტრები new: title: ახალი ფილტრის დამატება - footer: - developers: დეველოპერები - more: მეტი… - resources: რესურსები generic: changes_saved_msg: ცვლილებები წარმატებით დამახსოვრდა! save_changes: ცვლილებების შენახვა @@ -381,7 +361,6 @@ ka: following: დადევნების სია muting: გაჩუმების სია upload: ატვირთვა - in_memoriam_html: მემორანდუმში. invites: delete: დეაქტივაცია expired: ვადა გაუვიდა @@ -455,11 +434,7 @@ ka: preferences: other: სხვა remote_follow: - acct: შეიყვანეთ თქვენი username@domain საიდანაც გსურთ გაჰყვეთ missing_resource: საჭირო გადამისამართების ურლ თქვენი ანგარიშისთვის ვერ მოიძებნა - no_account_html: არ გაქვთ ანგარიში? შეგიძლიათ დარეგისტრირდეთ აქ - proceed: გააგრძელეთ გასაყოლად - prompt: 'თქვენ გაჰყვებით:' sessions: activity: ბოლო აქტივობა browser: ბრაუზერი diff --git a/config/locales/kab.yml b/config/locales/kab.yml index 1389426eb..7c14000e6 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -2,39 +2,22 @@ kab: about: about_mastodon_html: 'Azeṭṭa ametti n uzekka: Ulac deg-s asussen, ulac taɛessast n tsuddiwin fell-ak, yebna ɣef leqder d ttrebga, daɣen d akeslemmas! Akked Maṣṭudun, isefka-inek ad qimen inek!' - api: API - apps: Isnasen izirazen contact_missing: Ur yettusbadu ara contact_unavailable: Wlac - documentation: Amnir hosted_on: Maṣṭudun yersen deg %{domain} - source_code: Tangalt Taɣbalut - what_is_mastodon: D acu-t Maṣṭudun? + title: Γef accounts: - choices_html: 'Afranen n %{name}:' follow: Ḍfeṛ followers: one: Umeḍfaṛ other: Imeḍfaṛen following: Yeṭafaṛ - joined: Ikcemed deg %{date} last_active: armud aneggaru - media: Taɣwalt - moved_html: 'ibeddel %{name} amiḍan ɣer %{new_profile_link}:' - network_hidden: Ulac isalli-agi nothing_here: Ulac kra da! - people_followed_by: Imdanen i yeṭṭafaṛ %{name} - people_who_follow: Imdanen yeṭṭafaṛen %{name} posts: one: Tajewwiqt other: Tijewwiqin posts_tab_heading: Tijewwiqin - posts_with_replies: Tijewwaqin akked tririyin - roles: - bot: Aṛubut - group: Agraw - unavailable: Ur nufi ara amaɣnu-a - unfollow: Ur ṭṭafaṛ ara admin: account_actions: action: Eg tigawt @@ -387,6 +370,11 @@ kab: unresolved: Ur yefra ara updated_at: Yettwaleqqem view_profile: Wali amaɣnu + roles: + categories: + administration: Tadbelt + privileges: + administrator: Anedbal rules: add_new: Rnu alugen delete: Kkes @@ -541,9 +529,7 @@ kab: new: title: Rnu yiwen umzizdig amaynut footer: - developers: Ineflayen - more: Ugar… - resources: Iɣbula + trending_now: Ayen mucaɛen tura generic: all: Akk changes_saved_msg: Ttwaskelsen ibelliden-ik·im akken ilaq! @@ -637,16 +623,6 @@ kab: primary: Agejdan relationship: Assaɣ status: Addad n umiḍan - remote_follow: - no_account_html: Ur tesɛid ara amiḍan? Tzmreḍ ad jerdeḍ da - proceed: Kemmel taḍfart - remote_interaction: - favourite: - proceed: Kemmel asmenyef - reblog: - proceed: Sentem beṭṭu - reply: - proceed: Kemmel tiririt sessions: activity: Armud aneggaru browser: Iminig @@ -716,6 +692,7 @@ kab: video: one: "%{count} n tbidyutt" other: "%{count} n tbidyutin" + edited_at_html: Tettwaẓreg %{date} open_in_web: Ldi deg Web poll: total_people: @@ -744,7 +721,7 @@ kab: '2629746': 1 n wayyur '31556952': 1 n useggas '5259492': 2 n wayyuren - '604800': 1 week + '604800': 1 umalas '63113904': 2 n yiseggasen '7889238': 3 n wayyuren stream_entries: @@ -768,6 +745,8 @@ kab: otp: Asnas n usesteb webauthn: Tisura n teɣlist user_mailer: + appeal_approved: + action: Ddu ɣer umiḍan-ik·im warning: categories: spam: Aspam diff --git a/config/locales/kk.yml b/config/locales/kk.yml index 090a1ae08..cc17ed911 100644 --- a/config/locales/kk.yml +++ b/config/locales/kk.yml @@ -2,43 +2,24 @@ kk: about: about_mastodon_html: Mastodon - әлеуметтік желіге негізделген, тегін және веб протоколды, ашық кодты бағдарлама. Ол email сияқты орталығы жоқ құрылым. - apps: Мобиль қосымшалар contact_missing: Бапталмаған contact_unavailable: Белгісіз - documentation: Құжаттама hosted_on: Mastodon орнатылған %{domain} доменінде - source_code: Ашық коды - what_is_mastodon: Mastodon деген не? accounts: - choices_html: "%{name} таңдаулары:" - endorsements_hint: Сіз веб-интерфейстен адамдарға қолдау көрсете аласыз және олар осында көрсетіледі. - featured_tags_hint: Мұнда көрсетілетін нақты хэштегтерді ұсына аласыз. follow: Жазылу followers: one: Оқырман other: Оқырман following: Жазылғандары - joined: Тіркелген күні %{date} last_active: соңғы әрекеті link_verified_on: Сілтеме меншігі расталған күн %{date} - media: Медиа - moved_html: "%{name} мына жерге көшті %{new_profile_link}:" - network_hidden: Бұл ақпарат қолжетімді емес nothing_here: Бұл жерде ештеңе жоқ! - people_followed_by: "%{name} жазылған адамдар" - people_who_follow: "%{name} атты қолданушының оқырмандары" pin_errors: following: Оқығыңыз келген адамға жазылуыңыз керек posts: one: Жазба other: Жазба posts_tab_heading: Жазба - posts_with_replies: Жазбалар және жауаптар - roles: - bot: Бот - group: Топ - unavailable: Профиль қолжетімді емес - unfollow: Оқымау admin: account_actions: action: Әрекетті орындаңыз @@ -549,9 +530,6 @@ kk: new: title: Жаңа фильтр қосу footer: - developers: Жасаушылар - more: Тағы… - resources: Ресурстар trending_now: Бүгінгі трендтер generic: all: Барлығы @@ -578,7 +556,6 @@ kk: following: Жазылғандар тізімі muting: Үнсіздер тізімі upload: Жүктеу - in_memoriam_html: Естеліктерде. invites: delete: Ажырату expired: Мерзімі өткен @@ -698,22 +675,7 @@ kk: remove_selected_follows: Таңдалған қолданушыларды оқымау status: Аккаунт статусы remote_follow: - acct: Өзіңіздің username@domain теріңіз missing_resource: Аккаунтыңызға байланған URL табылмады - no_account_html: Әлі тіркелмегенсіз бе? Мына жерден тіркеліп алыңыз - proceed: Жазылу - prompt: 'Жазылғыңыз келеді:' - reason_html: "Неліктен бұл қадам қажет? %{instance} тіркелгіңіз келген сервер болмауы мүмкін, сондықтан сізді алдымен ішкі серверіңізге қайта бағыттау қажет." - remote_interaction: - favourite: - proceed: Таңдаулыға қосу - prompt: 'Мына жазбаны таңдаулыға қосасыз:' - reblog: - proceed: Жазба бөлісу - prompt: 'Сіз мына жазбаны бөлісесіз:' - reply: - proceed: Жауап жазу - prompt: 'Сіз мына жазбаға жауап жазасыз:' scheduled_statuses: over_daily_limit: Сіз бір күндік %{limit} жазба лимитін тауыстыңыз over_total_limit: Сіз %{limit} жазба лимитін тауыстыңыз diff --git a/config/locales/ko.yml b/config/locales/ko.yml index b07f1c41c..3149be458 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -2,44 +2,24 @@ ko: about: about_mastodon_html: 마스토돈은 오픈 소스 기반의 소셜 네트워크 서비스 입니다. 상용 플랫폼의 대체로서 분산형 구조를 채택해, 여러분의 대화가 한 회사에 독점되는 것을 방지합니다. 신뢰할 수 있는 인스턴스를 선택하세요 — 어떤 인스턴스를 고르더라도, 누구와도 대화할 수 있습니다. 누구나 자신만의 마스토돈 인스턴스를 만들 수 있으며, 아주 매끄럽게 소셜 네트워크에 참가할 수 있습니다. - api: API - apps: 모바일 앱 contact_missing: 미설정 contact_unavailable: 없음 - documentation: 문서 hosted_on: "%{domain}에서 호스팅 되는 마스토돈" - privacy_policy: 개인정보 처리방침 - source_code: 소스 코드 - what_is_mastodon: 마스토돈이란? + title: 정보 accounts: - choices_html: "%{name}의 추천:" - endorsements_hint: 내가 팔로우 하고 있는 사람들을 여기에 추천 할 수 있습니다. - featured_tags_hint: 특정한 해시태그들을 여기에 표시되도록 할 수 있습니다. follow: 팔로우 followers: other: 팔로워 following: 팔로잉 instance_actor_flash: 이 계정은 서버 자신을 나타내기 위한 가상의 계정이며 개인 사용자가 아닙니다. 이 계정은 연합을 위해 사용되며 정지되지 않아야 합니다. - joined: "%{date}에 가입함" last_active: 최근 활동 link_verified_on: "%{date}에 이 링크의 소유가 확인되었습니다" - media: 미디어 - moved_html: "%{name}은 %{new_profile_link}으로 이동되었습니다:" - network_hidden: 이 정보는 사용할 수 없습니다 nothing_here: 아무 것도 없습니다! - people_followed_by: "%{name} 님이 팔로우 중인 계정" - people_who_follow: "%{name} 님을 팔로우 중인 계정" pin_errors: following: 추천하려는 사람을 팔로우 하고 있어야 합니다 posts: other: 게시물 posts_tab_heading: 게시물 - posts_with_replies: 게시물과 답장 - roles: - bot: 봇 - group: 그룹 - unavailable: 프로필 사용 불가 - unfollow: 팔로우 해제 admin: account_actions: action: 조치 취하기 @@ -1150,9 +1130,6 @@ ko: hint: 이 필터는 다른 기준에 관계 없이 선택된 개별적인 게시물들에 적용됩니다. 웹 인터페이스에서 더 많은 게시물들을 이 필터에 추가할 수 있습니다. title: 필터링된 게시물 footer: - developers: 개발자 - more: 더 보기… - resources: 리소스 trending_now: 지금 유행중 generic: all: 모두 @@ -1191,7 +1168,6 @@ ko: following: 팔로우 중인 계정 목록 muting: 뮤트 중인 계정 목록 upload: 업로드 - in_memoriam_html: 고인의 계정입니다. invites: delete: 비활성화 expired: 만료됨 @@ -1370,22 +1346,7 @@ ko: remove_selected_follows: 선택한 사용자들을 팔로우 해제 status: 계정 상태 remote_follow: - acct: 당신이 사용하는 아이디@도메인을 입력해 주십시오 missing_resource: 리디렉션 대상을 찾을 수 없습니다 - no_account_html: 계정이 없나요? 여기에서 가입 할 수 있습니다 - proceed: 팔로우 하기 - prompt: '팔로우 하려 하고 있습니다:' - reason_html: "왜 이 과정이 필요하죠?%{instance}는 당신이 가입한 서버가 아닐 것입니다, 당신의 홈 서버로 먼저 가야 합니다." - remote_interaction: - favourite: - proceed: 좋아요 진행 - prompt: '이 게시물을 좋아요 하려고 합니다:' - reblog: - proceed: 부스트 진행 - prompt: '이 게시물을 부스트 하려 합니다:' - reply: - proceed: 답장 진행 - prompt: '이 게시물에 답장을 하려 합니다:' reports: errors: invalid_rules: 올바른 규칙을 포함하지 않습니다 diff --git a/config/locales/ku.yml b/config/locales/ku.yml index df2b7e65d..b2914fef0 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -2,46 +2,26 @@ ku: about: about_mastodon_html: 'Tora civakî ya pêşerojê: Ne reklam, ne çavdêriya pargîdanî, sêwirana exlaqî, û desentralîzasyon! Bi Mastodon re bibe xwediyê daneyên xwe!' - api: API - apps: Sepana mobîl contact_missing: Nehate sazkirin contact_unavailable: N/A - documentation: Pelbend hosted_on: Mastodon li ser %{domain} tê pêşkêşkirin - privacy_policy: Politîka taybetiyê - source_code: Çavkaniya Kodî - what_is_mastodon: Mastodon çi ye? + title: Derbar accounts: - choices_html: 'Hilbijartina %{name}:' - endorsements_hint: Tu dikarî kesên ku di navrûya tevnê de dişopînî bipejirînî û ew ê li vir were nîşankirin. - featured_tags_hint: Tu dikarî hashtagên taybet ên ku wê li vir werin nîşandan bibînî. follow: Bişopîne followers: one: Şopîner other: Şopîner following: Dişopîne instance_actor_flash: Ev ajimêr listikvaneke rastkî ye ku ji bo wek nûnerê rajekar bixwe tê bikaranîn û ne bikarhênerek kesane. Ew ji bo mebestên giştî tê bikaranîn û divê neyê rawestandin. - joined: Di %{date} de tevlî bû last_active: çalakiya dawî link_verified_on: Xwedaniya li vê girêdanê di %{date} de hatiye kontrolkirin - media: Medya - moved_html: "%{name} bar kire %{new_profile_link}:" - network_hidden: Ev zanyarî berdest nîne nothing_here: Li vir tiştek tune ye! - people_followed_by: Kesên ku %{name} wan dişopîne - people_who_follow: Kesên%{name} dişopîne pin_errors: following: Kesê ku tu dixwazî bipejirînî jixwe tu vê dişopînî posts: one: Şandî other: Şandî posts_tab_heading: Şandî - posts_with_replies: Şandî û bersiv - roles: - bot: Bot - group: Kom - unavailable: Profîl nay bikaranîn - unfollow: Neşopîne admin: account_actions: action: Çalakî yê bike @@ -344,6 +324,7 @@ ku: listed: Rêzokkirî new: title: Hestokên kesane yên nû lê zêde bike + no_emoji_selected: Tu emojî nehatin hilbijartin ji ber vê tu şandî jî nehatin guhertin not_permitted: Mafê te tune ku tu vê çalakiyê bikî overwrite: Bi ser de binivsîne shortcode: Kurtekod @@ -814,6 +795,9 @@ ku: description_html: Van girêdanên ku niha ji hêla ajimêrên ku rajekarê te ji wan peyaman dibîne pir têne parvekirin. Ew dikare ji bikarhênerên te re bibe alîkar ku fêr bibin ka li cîhanê çi diqewime. Heya ku tu weşanger nepejirînin, ti girêdan bi gelemperî nayê xuyangkirin. Her weha tu dikarî mafê bidî girêdanên kesane an jî nedî. disallow: Mafê nede girêdanê disallow_provider: Mafê nede weşanger + no_link_selected: Tu girêdan nehatin hilbijartin ji ber vê tu girêdan jî nehatin guhertin + publishers: + no_publisher_selected: Tu weşan nehatin hilbijartin ji ber vê tu weşan jî nehatin guhertin shared_by_over_week: one: Di nava hefteya dawî de ji aliyê keskekî ve hate parvekirin other: Di nava hefteya dawî de ji aliyê %{count} ve hate parvekirin @@ -833,6 +817,7 @@ ku: description_html: Van şandiyên ku rajekarê te pê dizane ku niha pir têne parvekirin û bijartekirin. Ew dikare ji bikarhênerên te yên nû û yên vedigerin re bibe alîkar ku bêtir mirovên ku bişopînin bibînin. Heya ku tu nivîskar nepejirînî, tu şandî bi gelemperî nayên xuyangkirin, û nivîskar mafê dide ku ajimêrê xwe ji kesên din re were pêşniyarkirin. Her weha tu dikarî mafê bidî şandiyên kesane an jî nedî. disallow: Mafê nede şandiyê disallow_account: Mafê nede nivîskar + no_status_selected: Tu şandiyên rojevê nehatin hilbijartin ji ber vê tu şandî jî nehatin guhertin not_discoverable: Nivîskar nejilbijartiye ji bo ku were kifşkirin shared_by: one: Yek carî parvekirî an bijartî @@ -848,6 +833,7 @@ ku: tag_uses_measure: bikaranîna giştî description_html: Ev hashtag in ku niha di gelek şandiyên ku rajekarê te dibîne de xuya dibin. Ew dikare ji bikarhênerên te re bibe alîkar ku fêr bibin ka mirov di vê demê de herî pir li ser çi diaxive. Heya ku tu wan nepejirînî, tu hashtag bi gelemperî nayê xuyangkirin. listable: Dikare were pêşniyarkirin + no_tag_selected: Tu hashtag nehatin hilbijartin ji ber vê tu hashtag jî nehatin guhertin not_listable: Nikare wer pêşniyarkirin not_trendable: Wê di bin rojevan de xuya neke not_usable: Nikare were bikaranîn @@ -1171,9 +1157,6 @@ ku: hint: Ev parzûn bêyî pîvanên din ji bo hilbijartina şandiyên kesane tê sepandin. Tu dikarî ji navrûya tevnê bêtir şandiyan tevlî vê parzûnê bikî. title: Şandiyên parzûnkirî footer: - developers: Pêşdebir - more: Bêtir… - resources: Çavkanî trending_now: Niha rojevê de generic: all: Hemû @@ -1216,7 +1199,6 @@ ku: following: Rêzoka yên dişopînin muting: Rêzoka bêdengiyê upload: Bar bike - in_memoriam_html: Di bîranînê de. invites: delete: Neçalak bike expired: Dema wê qediya @@ -1396,22 +1378,7 @@ ku: remove_selected_follows: Bikarhênerên hilbijartî neşopîne status: Rewşa ajimêr remote_follow: - acct: Navnîşana ajimêra xwe username@domain yê ku tu yê jê çalakî bikî binvsîne missing_resource: Ji bona ajimêra te pêwistiya beralîkirina URLyê nehate dîtin - no_account_html: Ajimêra te tune? Tu dikarîli vir tomar bibe - proceed: Şopandinê bidomîne - prompt: 'Tu yê bişopînî:' - reason_html: "Ev gav ji bona çi pêwîst e?%{instance}rajekerên ku tu tomarkiriyî dibe ku tunebe, ji bona vê divê pêşî te beralîyê rajekera te bi xwe bikin." - remote_interaction: - favourite: - proceed: Ber bi bijarteyê ve biçe - prompt: 'Tu dixwazî vê şandiyê bibijêrî:' - reblog: - proceed: Bo bilindkirinê bidomîne - prompt: 'Tu dixwazî vê şandî ye bilind bikî:' - reply: - proceed: Bersivandinê bidomîne - prompt: 'Tu dixwazî bersiva vê şandiyê bidî:' reports: errors: invalid_rules: rêbazên derbasdar nîşan nadê diff --git a/config/locales/kw.yml b/config/locales/kw.yml index 4be328237..7683e3042 100644 --- a/config/locales/kw.yml +++ b/config/locales/kw.yml @@ -1,8 +1,5 @@ --- kw: - accounts: - roles: - group: Bagas admin: accounts: email: Ebost diff --git a/config/locales/lt.yml b/config/locales/lt.yml index 235059a23..c160f4c97 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -2,32 +2,17 @@ lt: about: about_mastodon_html: Mastodon, tai socialinis tinklas pagrįstas atviro kodo programavimu, ir atvirais web protokolais. Visiškai nemokamas. Ši sistema decantrilizuota kaip jūsų elektroninis paštas. - apps: Mobilioji Aplikacija contact_missing: Nenustatyta - documentation: Dokumentacija hosted_on: Mastodon palaikomas naudojantis %{domain} talpinimu - source_code: Šaltinio kodas - what_is_mastodon: Kas tai, Mastodon? accounts: - choices_html: "%{name} pasirinkimai:" follow: Sekti following: Sekami - joined: Prisijungiai %{date} last_active: paskutinį kartą aktyvus link_verified_on: Nuorodos nuosavybė paskutinį kartą tikrinta %{date} - media: Medija - moved_html: "%{name} persikėlė į %{new_profile_link}:" - network_hidden: Ši informacija neprieinama nothing_here: Čia nieko nėra! - people_followed_by: Žmonės, kuriuos %{name} seka - people_who_follow: Žmonės kurie seka %{name} pin_errors: following: Privalai sekti žmogų kurį nori pagerbti posts_tab_heading: Tootai - posts_with_replies: Tootai ir atsakymai - roles: - bot: Bot'as - unfollow: Nesekti admin: account_actions: action: Veiksmas @@ -413,10 +398,6 @@ lt: title: Filtrai new: title: Pridėti naują filtrą - footer: - developers: Programuotojai - more: Daugiau… - resources: Resursai generic: changes_saved_msg: Pakeitimai sėkmingai išsaugoti! copy: Kopijuoti @@ -435,7 +416,6 @@ lt: following: Sekėju sąrašas muting: Tildomų sąrašas upload: Įkelti - in_memoriam_html: Atminimui. invites: delete: Deaktyvuoti expired: Pasibaigęs @@ -497,22 +477,7 @@ lt: preferences: other: Kita remote_follow: - acct: Įveskite Jūsų slapyvardį@domenas kurį norite naudoti missing_resource: Jūsų paskyros nukreipimo URL nerasta - no_account_html: Neturite paskyros? Jūs galite užsiregistruoti čia - proceed: Sekti - prompt: 'Jūs seksite:' - reason_html: "Kodėl šis žingsnis svarbus?%{instance} gali būti serveris, kuriame jūs nesate užsiregistravęs, todėl mes turime jus nukreipti į Jūsų namų serveri." - remote_interaction: - favourite: - proceed: Pamėgti - prompt: 'Jūs norite pamėgti šį toot''ą:' - reblog: - proceed: Pakelti - prompt: 'Jūs norite pakelti šį toot''ą:' - reply: - proceed: Atsakyti - prompt: 'Jūs norite atsakyti šiam toot''ui:' scheduled_statuses: over_daily_limit: Jūs pasieketė limitą (%{limit}) galimų toot'ų per dieną over_total_limit: Jūs pasieketė %{limit} limitą galimų toot'ų diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 507e906a7..aca42fe58 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -2,19 +2,11 @@ lv: about: about_mastodon_html: 'Nākotnes sociālais tīkls: bez reklāmām, bez korporatīvās uzraudzības, ētisks dizains un decentralizācija! Pārvaldi savus datus ar Mastodon!' - api: API - apps: Mobilās lietotnes contact_missing: Nav uzstādīts contact_unavailable: N/A - documentation: Dokumentācija hosted_on: Mastodon mitināts %{domain} - privacy_policy: Privātuma Politika - source_code: Pirmkods - what_is_mastodon: Kas ir Mastodon? + title: Par accounts: - choices_html: "%{name} izvēles:" - endorsements_hint: Jūs varat apstiprināt cilvēkus, kuriem sekojat no tīmekļa saskarnes, un viņi tiks parādīti šeit. - featured_tags_hint: Šeit vari norādīt īpašus tēmturus, kuri tiks parādīti šeit. follow: Sekot followers: one: Sekotājs @@ -22,15 +14,9 @@ lv: zero: Sekotāju following: Seko instance_actor_flash: Šis konts ir virtuāls aktieris, ko izmanto, lai pārstāvētu pašu serveri, nevis atsevišķu lietotāju. To izmanto federācijas nolūkos, un to nevajadzētu apturēt. - joined: Pievienojās %{date} last_active: pēdējā aktivitāte link_verified_on: Šīs saites piederība tika pārbaudīta %{date} - media: Multivide - moved_html: "%{name} ir pārcēlies uz %{new_profile_link}:" - network_hidden: Šāda informācija nav pieejama nothing_here: Te nekā nav! - people_followed_by: Cilvēki, kuriem %{name} seko - people_who_follow: Cilvēki, kuri seko %{name} pin_errors: following: Tev jau ir jāseko personai, kuru vēlies apstiprināt posts: @@ -38,12 +24,6 @@ lv: other: Ziņas zero: Ziņu posts_tab_heading: Ziņas - posts_with_replies: Ziņas un atbildes - roles: - bot: Bots - group: Grupa - unavailable: Profils nav pieejams - unfollow: Pārstāt sekot admin: account_actions: action: Veikt darbību @@ -347,6 +327,7 @@ lv: listed: Uzrakstītas new: title: Pievienojiet jaunas pielāgotās emocijzīmes + no_emoji_selected: Neviena emocijzīme netika mainīta, jo neviena netika atlasīta not_permitted: Tev nav atļauts veikt šo darbību overwrite: Pārrakstīt shortcode: Īskods @@ -826,6 +807,9 @@ lv: description_html: Šīs ir saites, kuras pašlaik bieži koplieto konti, no kuriem tavs serveris redz ziņas. Tas var palīdzēt taviem lietotājiem uzzināt, kas notiek pasaulē. Kamēr tu neapstiprini izdevēju, neviena saite netiek rādīta publiski. Vari arī atļaut vai noraidīt atsevišķas saites. disallow: Neatļaut saiti disallow_provider: Neatļaut publicētāju + no_link_selected: Neviena saite netika mainīta, jo neviena netika atlasīta + publishers: + no_publisher_selected: Neviens publicētājs netika mainīts, jo neviens netika atlasīts shared_by_over_week: one: Pēdējās nedēļas laikā kopīgoja viena persona other: Pēdējās nedēļas laikā kopīgoja %{count} personas @@ -846,6 +830,7 @@ lv: description_html: Šīs ir ziņas, par kurām tavs serveris zina un kuras pašlaik tiek koplietotas un pašlaik ir daudz izlasē. Tas var palīdzēt taviem jaunajiem un atkārtotiem lietotājiem atrast vairāk cilvēku, kam sekot. Neviena ziņa netiek publiski rādīta, kamēr neesi apstiprinājis autoru un autors atļauj savu kontu ieteikt citiem. Vari arī atļaut vai noraidīt atsevišķas ziņas. disallow: Neatļaut publicēt disallow_account: Neatļaut autoru + no_status_selected: Neviena populāra ziņa netika mainīta, jo neviena netika atlasīta not_discoverable: Autors nav izvēlējies būt atklājams shared_by: one: Vienreiz kopīgots vai pievienots izlasei @@ -862,6 +847,7 @@ lv: tag_uses_measure: lietojumi pavisam description_html: Šīs ir atsauces, kas pašlaik tiek rādītas daudzās ziņās, kuras redz tavs serveris. Tas var palīdzēt taviem lietotājiem uzzināt, par ko cilvēki šobrīd runā visvairāk. Neviena atsauce netiek rādīta publiski, kamēr tu neesi tās apstiprinājis. listable: Var tikt ieteikts + no_tag_selected: Neviena atzīme netika mainīta, jo neviena netika atlasīta not_listable: Nevar tikt ieteikts not_trendable: Neparādīsies pie tendencēm not_usable: Nevar tikt lietots @@ -1190,9 +1176,6 @@ lv: hint: Šis filtrs attiecas uz atsevišķu ziņu atlasi neatkarīgi no citiem kritērijiem. Šim filtram tu vari pievienot vairāk ziņu, izmantojot tīmekļa saskarni. title: Filtrētās ziņas footer: - developers: Izstrādātāji - more: Vairāk… - resources: Resursi trending_now: Šobrīd tendences generic: all: Visi @@ -1239,7 +1222,6 @@ lv: following: Šāds saraksts muting: Izslēgšanas saraksts upload: Augšupielādēt - in_memoriam_html: Piemiņai. invites: delete: Deaktivizēt expired: Beigušies @@ -1420,22 +1402,7 @@ lv: remove_selected_follows: Pārtraukt sekošanu atlasītajiem lietotājiem status: Konta statuss remote_follow: - acct: Ievadi savu lietotajvards@domens, no kura vēlies darboties missing_resource: Nevarēja atrast tavam kontam nepieciešamo novirzīšanas URL - no_account_html: Vai tev nav konta? Tu vari piereģistrēties šeit - proceed: Turpini lai sekotu - prompt: 'Tu gatavojies sekot:' - reason_html: " Kāpēc šis solis ir nepieciešams? %{instance}, iespējams, nav serveris, kurā esi reģistrēts, tāpēc mums vispirms ir jānovirza tevi uz tavu mājas serveri." - remote_interaction: - favourite: - proceed: Pārej uz izlasi - prompt: 'Tu vēlies pievienot izlasei šo ziņu:' - reblog: - proceed: Turpini paaugstināt - prompt: 'Tu vēlies paugstināt šo ziņu:' - reply: - proceed: Turpini lai atbildētu - prompt: 'Tu vēlies atbildēt uz šo ziņu:' reports: errors: invalid_rules: neatsaucas uz derīgiem noteikumiem diff --git a/config/locales/ml.yml b/config/locales/ml.yml index db09164f6..d5442c96c 100644 --- a/config/locales/ml.yml +++ b/config/locales/ml.yml @@ -1,29 +1,15 @@ --- ml: about: - api: എപിഐ - apps: മൊബൈൽ ആപ്പുകൾ contact_missing: സജ്ജമാക്കിയിട്ടില്ല contact_unavailable: ലഭ്യമല്ല - documentation: വിവരണം - source_code: സോഴ്സ് കോഡ് - what_is_mastodon: എന്താണ് മാസ്റ്റഡോൺ? accounts: follow: പിന്തുടരുക following: പിന്തുടരുന്നു - joined: "%{date} ൽ ചേർന്നു" last_active: അവസാനം സജീവമായിരുന്നത് link_verified_on: സന്ധിയുടെ ഉടമസ്ഥാവസ്‌കാശം %{date} ൽ പരിശോധിക്കപ്പെട്ടു - media: മാധ്യമങ്ങൾ - moved_html: "%{name}, %{new_profile_link} ലേക്ക് നീങ്ങിയിരിക്കുന്നു:" - network_hidden: ഈ വിവരം ലഭ്യമല്ല nothing_here: ഇവിടെ ഒന്നുമില്ല! posts_tab_heading: ടൂട്ടുകൾ - posts_with_replies: ടൂട്ടുകളും മറുപടികളും - roles: - bot: ബോട്ട് - group: ഗ്രൂപ്പ് - unavailable: പ്രൊഫൈൽ ലഭ്യമല്ല admin: accounts: add_email_domain_block: ഇ-മെയിൽ ഡൊമെയ്ൻ തടയുക diff --git a/config/locales/ms.yml b/config/locales/ms.yml index 5b32aa09d..ecd641493 100644 --- a/config/locales/ms.yml +++ b/config/locales/ms.yml @@ -2,43 +2,23 @@ ms: about: about_mastodon_html: 'Rangkaian sosial masa hadapan: Tiada iklan, tiada pengawasan korporat, reka bentuk beretika, dan desentralisasi! Miliki data anda dengan Mastodon!' - api: API - apps: Aplikasi mudah alih contact_missing: Tidak ditetapkan contact_unavailable: Tidak tersedia - documentation: Pendokumenan hosted_on: Mastodon dihoskan di %{domain} - source_code: Kod sumber - what_is_mastodon: Apakah itu Mastodon? accounts: - choices_html: 'Pilihan %{name}:' - endorsements_hint: Anda boleh syorkan orang yang anda ikuti menggunakan antara muka sesawang, dan mereka akan ditunjukkan di sini. - featured_tags_hint: Anda boleh mempromosikan tanda pagar khusus yang akan dipaparkan di sini. follow: Ikut followers: other: Pengikut following: Mengikuti instance_actor_flash: Akaun ini ialah pelaku maya yang digunakan untuk mewakili pelayan itu sendiri dan bukan mana-mana pengguna individu. Ia digunakan untuk tujuan persekutuan dan tidak patut digantung. - joined: Sertai pada %{date} last_active: aktif terakhir link_verified_on: Pemilikan pautan ini diperiksa pada %{date} - media: Media - moved_html: "%{name} telah berpindah ke %{new_profile_link}:" - network_hidden: Maklumat ini tidak tersedia nothing_here: Tiada apa-apa di sini! - people_followed_by: Orang yang %{name} ikuti - people_who_follow: Orang yang mengikut %{name} pin_errors: following: Anda mestilah sudah mengikuti orang yang anda ingin syorkan posts: other: Hantaran posts_tab_heading: Hantaran - posts_with_replies: Hantaran dan balasan - roles: - bot: Bot - group: Kumpulan - unavailable: Profil tidak tersedia - unfollow: Nyahikut admin: account_actions: action: Ambil tindakan diff --git a/config/locales/nl.yml b/config/locales/nl.yml index b61cae251..37db2a188 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -2,46 +2,26 @@ nl: about: about_mastodon_html: Mastodon is een sociaal netwerk dat gebruikt maakt van open webprotocollen en vrije software. Het is net zoals e-mail gedecentraliseerd. - api: API - apps: Mobiele apps contact_missing: Niet ingesteld contact_unavailable: n.v.t - documentation: Documentatie hosted_on: Mastodon op %{domain} - privacy_policy: Privacybeleid - source_code: Broncode - what_is_mastodon: Wat is Mastodon? + title: Over accounts: - choices_html: 'Aanbevelingen van %{name}:' - endorsements_hint: Je kunt mensen die je volgt in de webomgeving aanbevelen, waarna ze dan hier zullen verschijnen. - featured_tags_hint: Je kunt specifieke hashtags uitlichten, waarna ze dan hier zullen verschijnen. follow: Volgen followers: one: Volger other: Volgers following: Volgend instance_actor_flash: Dit account is een 'virtual actor' waarmee de server zichzelf vertegenwoordigd en is dus geen individuele gebruiker. Het wordt voor federatiedoeleinden gebruikt en moet niet worden opgeschort. - joined: Geregistreerd in %{date} last_active: laatst actief link_verified_on: Eigendom van deze link is gecontroleerd op %{date} - media: Media - moved_html: "%{name} is verhuisd naar %{new_profile_link}:" - network_hidden: Deze informatie is niet beschikbaar nothing_here: Hier is niets! - people_followed_by: Mensen die %{name} volgen - people_who_follow: Mensen die %{name} volgen pin_errors: following: Je moet dit account wel al volgen, alvorens je het kan aanbevelen posts: one: Toot other: Berichten posts_tab_heading: Berichten - posts_with_replies: Berichten en reacties - roles: - bot: Bot - group: Groep - unavailable: Profiel niet beschikbaar - unfollow: Ontvolgen admin: account_actions: action: Actie uitvoeren @@ -124,8 +104,8 @@ nl: perform_full_suspension: Opschorten previous_strikes: Eerdere overtredingen previous_strikes_description_html: - one: Dit account heeft één overtreding. - other: Dit account heeft %{count} overtredingen. + one: Dit account heeft één overtreding gemaakt. + other: Dit account heeft %{count} overtredingen gemaakt. promote: Promoveren protocol: Protocol public: Openbaar @@ -337,6 +317,7 @@ nl: listed: Weergegeven new: title: Lokale emoji toevoegen + no_emoji_selected: Er werden geen emoji's gewijzigd, omdat er geen enkele werd geselecteerd not_permitted: Het hebt geen rechten om deze actie uit te voeren overwrite: Overschrijven shortcode: Verkorte code @@ -421,6 +402,7 @@ nl: domain: Domein new: create: Blokkeren + resolve: Domein opzoeken title: Nieuw e-maildomein blokkeren title: Geblokkeerde e-maildomeinen follow_recommendations: @@ -433,6 +415,7 @@ nl: unsuppress: Account weer aanbevelen instances: availability: + no_failures_recorded: Geen storingen bekend. title: Beschikbaarheid warning: De laatste poging om met deze server te verbinden was onsuccesvol back_to_all: Alles @@ -538,6 +521,7 @@ nl: other: "%{count} opmerkingen" action_log: Auditlog action_taken_by: Actie uitgevoerd door + add_to_report: Meer aan de rapportage toevoegen are_you_sure: Weet je het zeker? assign_to_self: Aan mij toewijzen assigned: Toegewezen moderator @@ -587,6 +571,7 @@ nl: moderation: Moderatie special: Speciaal delete: Verwijderen + edit: Rol '%{name}' bewerken everyone: Standaardrechten everyone_full_description_html: Dit is de basisrol die van toepassing is op alle gebruikers, zelfs voor diegenen zonder toegewezen rol. Alle andere rollen hebben de rechten van deze rol als minimum. permissions_count: @@ -700,7 +685,9 @@ nl: destroyed_msg: Verwijderen website-upload geslaagd! statuses: back_to_account: Terug naar accountpagina + back_to_report: Terug naar de rapportage batch: + remove_from_report: Uit de rapportage verwijderen report: Rapportage deleted: Verwijderd media: @@ -732,34 +719,70 @@ nl: disallow: Weigeren links: allow: Link toestaan - allow_provider: Uitgever toestaan + allow_provider: Website goedkeuren + description_html: Dit zijn links die momenteel veel worden gedeeld door accounts waar jouw server berichten van ontvangt. Hierdoor kunnen jouw gebruikers zien wat er in de wereld aan de hand is. Er worden geen links weergeven totdat je de website hebt goedgekeurd. Je kunt ook individuele links goed- of afkeuren. disallow: Link toestaan - disallow_provider: Website toestaan + disallow_provider: Website afkeuren + no_link_selected: Er werden geen links gewijzigd, omdat er geen enkele werd geselecteerd + publishers: + no_publisher_selected: Er werden geen websites gewijzigd, omdat er geen enkele werd geselecteerd title: Trending links only_allowed: Alleen toegestaan pending_review: In afwachting van beoordeling preview_card_providers: allowed: Links van deze website kunnen trending worden - rejected: Links van deze website kunnen niet trending worden - title: Uitgevers + rejected: Links naar deze nieuwssite kunnen niet trending worden + title: Websites rejected: Afgewezen statuses: allow: Bericht toestaan allow_account: Gebruiker toestaan disallow: Bericht niet toestaan disallow_account: Gebruiker niet toestaan + no_status_selected: Er werden geen trending berichten gewijzigd, omdat er geen enkele werd geselecteerd not_discoverable: Gebruiker heeft geen toestemming gegeven om vindbaar te zijn title: Trending berichten tags: + current_score: Huidige score is %{score} dashboard: + tag_accounts_measure: aantal unieke keren gebruikt tag_languages_dimension: Populaire talen tag_servers_dimension: Populaire servers + tag_servers_measure: verschillende servers + tag_uses_measure: totaal aantal keer gebruikt + listable: Kan worden aanbevolen + no_tag_selected: Er werden geen hashtags gewijzigd, omdat er geen enkele werd geselecteerd + not_listable: Wordt niet aanbevolen + not_usable: Kan niet worden gebruikt + title: Trending hashtags + trending_rank: 'Trending #%{rank}' + usable: Kan worden gebruikt + title: Trends + trending: Trending warning_presets: add_new: Nieuwe toevoegen delete: Verwijderen edit_preset: Preset voor waarschuwing bewerken empty: Je hebt nog geen presets voor waarschuwingen toegevoegd. title: Presets voor waarschuwingen beheren + webhooks: + add_new: Eindpunt toevoegen + delete: Verwijderen + disable: Uitschakelen + disabled: Uitgeschakeld + edit: Eindpunt bewerken + enable: Inschakelen + enabled: Ingeschakeld + enabled_events: + one: 1 ingeschakelde gebeurtenis + other: "%{count} ingeschakelde gebeurtenissen" + events: Gebeurtenissen + new: Nieuwe webhook + rotate_secret: Secret opnieuw genereren + secret: Signing secret + status: Status + title: Webhooks + webhook: Webhook admin_mailer: new_appeal: actions: @@ -780,6 +803,13 @@ nl: body: "%{reporter} heeft %{target} gerapporteerd" body_remote: Iemand van %{domain} heeft %{target} gerapporteerd subject: Nieuwe rapportage op %{instance} (#%{id}) + new_trends: + new_trending_links: + title: Trending links + new_trending_statuses: + title: Trending berichten + new_trending_tags: + title: Trending hashtags aliases: add_new: Alias aanmaken created_msg: Succesvol een nieuwe alias aangemaakt. Je kunt nu met de verhuizing vanaf het oude account beginnen. @@ -860,6 +890,7 @@ nl: functional: Jouw account kan in diens geheel gebruikt worden. pending: Jouw aanvraag moet nog worden beoordeeld door een van onze medewerkers. Dit kan misschien eventjes duren. Je ontvangt een e-mail wanneer jouw aanvraag is goedgekeurd. redirecting_to: Jouw account is inactief omdat het momenteel wordt doorverwezen naar %{acct}. + view_strikes: Bekijk de eerder door moderatoren vastgestelde overtredingen die je hebt gemaakt too_fast: Formulier is te snel ingediend. Probeer het nogmaals. use_security_key: Beveiligingssleutel gebruiken authorize_follow: @@ -920,6 +951,7 @@ nl: username_unavailable: Jouw gebruikersnaam zal onbeschikbaar blijven disputes: strikes: + action_taken: Genomen maatregel appeal: Bezwaar appeal_approved: Het ingediende bezwaar is goedgekeurd en de eerder vastgestelde overtreding is niet langer geldig appeal_rejected: Het ingediende bezwaar is afgewezen @@ -928,7 +960,12 @@ nl: appeals: submit: Bezwaar indienen approve_appeal: Bezwaar goedkeuren + associated_report: Bijbehorende rapportage + created_at: Datum en tijd + recipient: Geadresseerd aan reject_appeal: Bezwaar afgewezen + status: 'Bericht #%{id}' + title: "%{action} van %{date}" title_actions: delete_statuses: Verwijdering bericht disable: Bevriezen van account @@ -1021,9 +1058,6 @@ nl: index: title: Gefilterde berichten footer: - developers: Ontwikkelaars - more: Meer… - resources: Hulpmiddelen trending_now: Trends generic: all: Alles @@ -1066,7 +1100,6 @@ nl: following: Volglijst muting: Negeerlijst upload: Uploaden - in_memoriam_html: In memoriam. invites: delete: Deactiveren expired: Verlopen @@ -1098,6 +1131,7 @@ nl: password: wachtwoord sign_in_token: beveiligingscode via e-mail webauthn: beveiligingssleutels + title: Inloggeschiedenis media_attachments: validations: images_and_video: Een video kan niet aan een bericht met afbeeldingen worden gekoppeld @@ -1144,6 +1178,8 @@ nl: admin: report: subject: "%{name} heeft een rapportage ingediend" + sign_up: + subject: "%{name} heeft zich geregistreerd" favourite: body: 'Jouw bericht werd door %{name} als favoriet gemarkeerd:' subject: "%{name} markeerde jouw bericht als favoriet" @@ -1239,22 +1275,9 @@ nl: remove_selected_follows: Geselecteerde gebruikers ontvolgen status: Accountstatus remote_follow: - acct: Geef jouw account@domein op die je wilt gebruiken missing_resource: Kon vereiste doorverwijzings-URL voor jouw account niet vinden - no_account_html: Heb je geen account? Je kunt er hier een registreren - proceed: Ga verder om te volgen - prompt: 'Jij gaat volgen:' - reason_html: " Waarom is deze extra stap nodig? %{instance} is wellicht niet de server waarop jij je geregistreerd hebt. We verwijzen je eerst door naar jouw eigen server." - remote_interaction: - favourite: - proceed: Doorgaan met het markeren als favoriet - prompt: 'Je wilt het volgende bericht als favoriet markeren:' - reblog: - proceed: Doorgaan met boosten - prompt: 'Je wilt het volgende bericht boosten:' - reply: - proceed: Doorgaan met reageren - prompt: 'Je wilt op het volgende bericht reageren:' + rss: + content_warning: 'Inhoudswaarschuwing:' scheduled_statuses: over_daily_limit: Je hebt de limiet van %{limit} in te plannen berichten voor vandaag overschreden over_total_limit: Je hebt de limiet van %{limit} in te plannen berichten overschreden @@ -1319,6 +1342,8 @@ nl: preferences: Voorkeuren profile: Profiel relationships: Volgers en gevolgden + statuses_cleanup: Automatisch berichten verwijderen + strikes: Vastgestelde overtredingen two_factor_authentication: Tweestapsverificatie webauthn_authentication: Beveiligingssleutels statuses: @@ -1370,6 +1395,7 @@ nl: unlisted: Minder openbaar unlisted_long: Aan iedereen tonen, maar niet op openbare tijdlijnen statuses_cleanup: + exceptions: Uitzonderingen ignore_favs: Favorieten negeren ignore_reblogs: Boosts negeren keep_direct: Directe berichten behouden @@ -1398,7 +1424,7 @@ nl: sensitive_content: Gevoelige inhoud strikes: errors: - too_late: De periode dat je bezwaar kon maken is verstreken + too_late: De periode dat je bezwaar kunt maken tegen deze overtreding is verstreken tags: does_not_match_previous_name: komt niet overeen met de vorige naam themes: @@ -1409,6 +1435,7 @@ nl: formats: default: "%d %B %Y om %H:%M" month: "%b %Y" + time: "%H:%M" two_factor_authentication: add: Toevoegen disable: Tweestapsverificatie uitschakelen @@ -1439,6 +1466,7 @@ nl: subject: Jouw archief staat klaar om te worden gedownload title: Archief ophalen suspicious_sign_in: + change_password: jouw wachtwoord wijzigen title: Een nieuwe registratie warning: appeal: Bezwaar indienen diff --git a/config/locales/nn.yml b/config/locales/nn.yml index 620d87deb..c0a40c41c 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -2,45 +2,25 @@ nn: about: about_mastodon_html: 'Framtidas sosiale nettverk: Ingen annonsar, ingen verksemder som overvaker deg, etisk design og desentralisering! Eig idéane dine med Mastodon!' - api: API - apps: Mobilappar contact_missing: Ikkje sett contact_unavailable: I/T - documentation: Dokumentasjon hosted_on: "%{domain} er vert for Mastodon" - source_code: Kjeldekode - what_is_mastodon: Kva er Mastodon? accounts: - choices_html: "%{name} sine val:" - endorsements_hint: Du kan fremja folk dy fylgjer frå grensesnittet på nettet, og då visast dei her. - featured_tags_hint: Du kan velja emneknaggar som skal visast her. follow: Fylg followers: one: Fylgjar other: Fylgjarar following: Fylgjer instance_actor_flash: Denne kontoen er en virtuell figur som brukes til å representere selve serveren og ikke noen individuell bruker. Den brukes til forbundsformål og bør ikke oppheves. - joined: Vart med %{date} last_active: sist aktiv link_verified_on: Eigarskap for denne lenkja vart sist sjekka %{date} - media: Media - moved_html: "%{name} har flytta til %{new_profile_link}:" - network_hidden: Denne informasjonen er ikkje tilgjengeleg nothing_here: Her er det ingenting! - people_followed_by: Folk som %{name} fylgjer - people_who_follow: Folk som fylgjer %{name} pin_errors: following: Du må allereie fylgja personen du vil fremja posts: one: Tut other: Tut posts_tab_heading: Tut - posts_with_replies: Tut og svar - roles: - bot: Robot - group: Gruppe - unavailable: Profil ikkje tilgjengeleg - unfollow: Slutt å fylgja admin: account_actions: action: Utfør @@ -723,9 +703,6 @@ nn: new: title: Legg til nytt filter footer: - developers: Utviklarar - more: Meir… - resources: Ressursar trending_now: Populært no generic: all: Alle @@ -754,7 +731,6 @@ nn: following: Fylgjeliste muting: Dempeliste upload: Last opp - in_memoriam_html: Til minne. invites: delete: Slå av expired: Utgått @@ -915,22 +891,7 @@ nn: remove_selected_follows: Slutt å fylgja desse brukarane status: Kontostatus remote_follow: - acct: Tast inn brukernavn@domene som du vil følge fra missing_resource: Kunne ikke finne URLen for din konto - no_account_html: Har du ikkje konto? Du kan melda deg inn her - proceed: Hald fram med å fylgja - prompt: 'Du kjem til å fylgja:' - reason_html: "Hvorfor dette trinnet er nødvendig?%{instance} er kanskje ikke tjeneren som du er registrert på, så vi må omdirigere deg til hjemmetjeneren din først." - remote_interaction: - favourite: - proceed: Merk som favoritt - prompt: 'Du vil merkja dette tutet som favoritt:' - reblog: - proceed: Framhev - prompt: 'Du vil framheva dette tutet:' - reply: - proceed: Svar - prompt: 'Du vil svara på dette tutet:' scheduled_statuses: over_daily_limit: Du har overskredet grensen på %{limit} planlagte tuter for den dagen over_total_limit: Du har overskredet grensen på %{limit} planlagte tuter diff --git a/config/locales/no.yml b/config/locales/no.yml index f0871ac37..550868ba3 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -2,45 +2,25 @@ 'no': about: about_mastodon_html: Mastodon er et sosialt nettverk laget med fri programvare. Et desentralisert alternativ til kommersielle plattformer. Slik kan det unngå risikoene ved å ha et enkelt selskap som monopoliserer din kommunikasjon. Velg en tjener du stoler på — uansett hvilken du velger så kan du kommunisere med alle andre. Alle kan kjøre sin egen Mastodon og delta sømløst i det sosiale nettverket. - api: API - apps: Mobilapper contact_missing: Ikke innstilt contact_unavailable: Ikke tilgjengelig - documentation: Dokumentasjon hosted_on: Mastodon driftet på %{domain} - source_code: Kildekode - what_is_mastodon: Hva er Mastodon? accounts: - choices_html: "%{name} sine anbefalte:" - endorsements_hint: Du kan fremheve personer du følger fra nettgrensesnittet som deretter vil bli vist her. - featured_tags_hint: Du kan fremheve spesifikke emneknagger som vil bli vist her. follow: Følg followers: one: Følger other: Følgere following: Følger instance_actor_flash: Denne kontoen er en virtuell figur som brukes til å representere selve serveren og ikke noen individuell bruker. Den brukes til forbundsformål og bør ikke oppheves. - joined: Ble med den %{date} last_active: sist aktiv link_verified_on: Eierskap av denne lenken ble sjekket %{date} - media: Media - moved_html: "%{name} har flyttet til %{new_profile_link}:" - network_hidden: Denne informasjonen er ikke tilgjengelig nothing_here: Det er ingenting her! - people_followed_by: Folk som %{name} følger - people_who_follow: Folk som følger %{name} pin_errors: following: Du må allerede følge personen du vil fremheve posts: one: Tut other: Tuter posts_tab_heading: Tuter - posts_with_replies: Tuter med svar - roles: - bot: Bot - group: Gruppe - unavailable: Profilen er utilgjengelig - unfollow: Slutt å følge admin: account_actions: action: Utfør handling @@ -705,9 +685,6 @@ new: title: Legg til nytt filter footer: - developers: Utviklere - more: Mer… - resources: Ressurser trending_now: Trender nå generic: all: Alle @@ -733,7 +710,6 @@ following: Følgeliste muting: Dempeliste upload: Opplastning - in_memoriam_html: Til minne. invites: delete: Deaktiver expired: Utløpt @@ -894,22 +870,7 @@ remove_selected_follows: Avfølg de valgte brukerne status: Kontostatus remote_follow: - acct: Tast inn brukernavn@domene som du vil følge fra missing_resource: Kunne ikke finne URLen for din konto - no_account_html: Har du ikke en konto? Da kan du lage en konto her - proceed: Fortsett med følging - prompt: 'Du vil følge:' - reason_html: "Hvorfor dette trinnet er nødvendig?%{instance} er kanskje ikke tjeneren som du er registrert på, så vi må omdirigere deg til hjemmetjeneren din først." - remote_interaction: - favourite: - proceed: Fortsett til likingen - prompt: 'Du ønsker å like denne tuten:' - reblog: - proceed: Fortsett til fremhevingen - prompt: 'Du ønsker å fremheve denne tuten:' - reply: - proceed: Fortsett til svaret - prompt: 'Du ønsker å svare på denne tuten:' scheduled_statuses: over_daily_limit: Du har overskredet grensen på %{limit} planlagte tuter for den dagen over_total_limit: Du har overskredet grensen på %{limit} planlagte tuter diff --git a/config/locales/oc.yml b/config/locales/oc.yml index b310f02eb..1d2fdbe4e 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -2,44 +2,24 @@ oc: about: about_mastodon_html: Mastodon es un malhum social bastit amb de protocòls liures e gratuits. Es descentralizat coma los corrièls. - api: API - apps: Aplicacions per mobil contact_missing: Pas parametrat contact_unavailable: Pas disponible - documentation: Documentacion hosted_on: Mastodon albergat sus %{domain} - source_code: Còdi font - what_is_mastodon: Qu’es Mastodon ? accounts: - choices_html: 'Recomandacions de %{name} :' - endorsements_hint: Podètz recomandar personas que seguètz a partir de l’interfàcia web, apreissaràn aquí. - featured_tags_hint: Podètz indicar d’etiquetas que mostrarem aquí. follow: Sègre followers: one: Seguidor other: Seguidors following: Abonaments - joined: Arribèt en %{date} last_active: darrièra activitat link_verified_on: La proprietat d’aqueste ligam foguèt verificada lo %{date} - media: Mèdias - moved_html: "%{name} a mudat a %{new_profile_link} :" - network_hidden: Aquesta informacion es pas disponibla nothing_here: I a pas res aquí ! - people_followed_by: Lo monde que %{name} sèc - people_who_follow: Lo monde que sègon %{name} pin_errors: following: Vos cal d’en primièr sègre las personas que volètz promòure posts: one: Tut other: Tuts posts_tab_heading: Tuts - posts_with_replies: Tuts e responsas - roles: - bot: Robòt - group: Grop - unavailable: Perfil indisponible - unfollow: Quitar de sègre admin: account_actions: action: Realizar una accion @@ -647,9 +627,6 @@ oc: new: title: Ajustar un nòu filtre footer: - developers: Desvolopaires - more: Mai… - resources: Ressorsas trending_now: Tendéncia del moment generic: all: Tot @@ -679,7 +656,6 @@ oc: following: Lista de monde que seguètz muting: Lista de monde que volètz pas legir upload: Importar - in_memoriam_html: En Memòria. invites: delete: Desactivar expired: Expirat @@ -813,22 +789,7 @@ oc: remove_selected_follows: Quitar de sègre las personas seleccionadas status: Estat del compte remote_follow: - acct: Picatz vòstre utilizaire@domeni que que volètz utilizar per sègre aqueste utilizaire missing_resource: URL de redireccion pas trobada - no_account_html: Avètz pas cap de compte ? Podètz vos marcar aquí - proceed: Clicatz per sègre - prompt: 'Sètz per sègre :' - reason_html: "Perque aquesta etapa es necessària ?%{instance} es benlèu pas lo servidor ont vos marquèretz, doncas nos cal vos redirigir cap a vòstre prim servidor per començar." - remote_interaction: - favourite: - proceed: Contunhar per metre en favorit - prompt: 'Volètz metre en favorit aqueste tut :' - reblog: - proceed: Contunhar per repartejar - prompt: 'Volètz repartejar aqueste tut :' - reply: - proceed: Contunhar per respondre - prompt: 'Volètz respondre a aqueste tut :' scheduled_statuses: over_daily_limit: Avètz passat la limita de %{limit} tuts programats per aquel jorn over_total_limit: Avètz passat la limita de %{limit} tuts programats diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 88e664400..c7c19b0ae 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -2,19 +2,11 @@ pl: about: about_mastodon_html: Mastodon jest wolną i otwartą siecią społecznościową, zdecentralizowaną alternatywą dla zamkniętych, komercyjnych platform. - api: API - apps: Aplikacje contact_missing: Nie ustawiono contact_unavailable: Nie dotyczy - documentation: Dokumentacja hosted_on: Mastodon uruchomiony na %{domain} - privacy_policy: Polityka prywatności - source_code: Kod źródłowy - what_is_mastodon: Czym jest Mastodon? + title: O nas accounts: - choices_html: 'Polecani przez %{name}:' - endorsements_hint: Możesz promować ludzi, których obserwujesz, z poziomu interfejsu webowego - wtedy oni pojawią się w tym miejscu. - featured_tags_hint: Możesz przedstawić w tym miejscu kilka wybranych hasztagów. follow: Śledź followers: few: śledzących @@ -23,15 +15,9 @@ pl: other: Śledzących following: śledzonych instance_actor_flash: To konto jest wirtualnym profilem używanym do reprezentowania samego serwera, a nie żadnego indywidualnego użytkownika. Jest ono stosowane do celów federacji i nie powinien być zawieszany. - joined: Dołączył(a) %{date} last_active: ostatnio aktywny(-a) link_verified_on: Własność tego odnośnika została sprawdzona %{date} - media: Zawartość multimedialna - moved_html: "%{name} korzysta teraz z konta %{new_profile_link}:" - network_hidden: Ta informacja nie jest dostępna nothing_here: Niczego tu nie ma! - people_followed_by: Konta śledzone przez %{name} - people_who_follow: Osoby, które śledzą konto %{name} pin_errors: following: Musisz śledzić osobę, którą chcesz polecać posts: @@ -40,12 +26,6 @@ pl: one: wpis other: Wpisów posts_tab_heading: Wpisy - posts_with_replies: Wpisy z odpowiedziami - roles: - bot: Bot - group: Grupa - unavailable: Profil niedostępny - unfollow: Przestań śledzić admin: account_actions: action: Wykonaj działanie @@ -350,6 +330,7 @@ pl: listed: Widoczne new: title: Dodaj nowe niestandardowe emoji + no_emoji_selected: Żadne emoji nie zostały zmienione, ponieważ żadnych nie wybrano not_permitted: Nie masz uprawnień do wykonania tego działania overwrite: Zastąp shortcode: Krótki kod @@ -840,6 +821,9 @@ pl: description_html: Są to linki, które są obecnie często udostępniane przez konta, z których Twój serwer widzi posty. Może to pomóc Twoim użytkownikom dowiedzieć się, co dzieje się na świecie. Żadne linki nie są wyświetlane publicznie dopóki nie zaakceptujesz wydawcy. Możesz również zezwolić lub odrzucić indywidualne linki. disallow: Nie zezwalaj na link disallow_provider: Nie zezwalaj na wydawcę + no_link_selected: Żadne linki nie zostały zmienione, ponieważ żadnych nie wybrano + publishers: + no_publisher_selected: Żadni publikujcy nie zostali zmienieni, ponieważ żadnych nie wybrano shared_by_over_week: few: Udostępnione przez %{count} osoby w ciągu ostatniego tygodnia many: Udostępnione przez %{count} osób w ciągu ostatniego tygodnia @@ -861,6 +845,7 @@ pl: description_html: Są to wpisy, o których Twój serwer wie i które są obecnie często udostępniane i dodawane do ulubionych. Może to pomóc nowym i powracającym użytkownikom znaleźć więcej osób do śledzenia. Żadne posty nie są wyświetlane publicznie, dopóki nie zatwierdzisz autora, a autor ustawi zezwolenie na wyświetlanie się w katalogu. Możesz również zezwolić lub odrzucić poszczególne posty. disallow: Nie zezwalaj na post disallow_account: Nie zezwalaj na autora + no_status_selected: Żadne popularne wpisy nie zostały zmienione, ponieważ żadnych nie wybrano not_discoverable: Autor nie włączył opcji, by być wyświetlany w katalogu shared_by: few: Udostępnione i dodane do ulubionych %{friendly_count} razy @@ -878,6 +863,7 @@ pl: tag_uses_measure: użyć łącznie description_html: To są hasztagi, które obecnie pojawiają się w wielu wpisach, które widzisz na serwerze. Może to pomóc Twoim użytkownikom dowiedzieć się, o czym obecnie ludzie najchętniej rozmawiają. Żadne hasztagi nie są wyświetlane publicznie, dopóki ich nie zaakceptujesz. listable: Można zasugerować + no_tag_selected: Żadne tagi nie zostały zmienione, ponieważ żadnych nie wybrano not_listable: Nie można zasugerować not_trendable: Nie pojawia się pod trendami not_usable: Nie mogą zostać użyte @@ -1211,9 +1197,6 @@ pl: hint: Ten filtr ma zastosowanie do wybierania poszczególnych wpisów niezależnie od pozostałych kryteriów. Możesz dodać więcej wpisów do tego filtra z interfejsu internetowego. title: Filtrowane posty footer: - developers: Dla programistów - more: Więcej… - resources: Zasoby trending_now: Obecnie na czasie generic: all: Wszystkie @@ -1264,7 +1247,6 @@ pl: following: Lista śledzonych muting: Lista wyciszonych upload: Załaduj - in_memoriam_html: Ku pamięci. invites: delete: Wygaś expired: Wygasły @@ -1446,22 +1428,7 @@ pl: remove_selected_follows: Przestań śledzić zaznaczonych użytkowników status: Stan konta remote_follow: - acct: Podaj swój adres (nazwa@domena), z którego chcesz wykonać działanie missing_resource: Nie udało się znaleźć adresu przekierowania z Twojej domeny - no_account_html: Nie masz konta? Możesz zarejestrować się tutaj - proceed: Śledź - prompt: 'Zamierzasz śledzić:' - reason_html: "Dlaczego ten krok jest konieczny? %{instance} może nie być serwerem na którym jesteś zarejestrowany(-a), więc musisz zostać przekierowany(-a) na swój serwer." - remote_interaction: - favourite: - proceed: Przejdź do dodania do ulubionych - prompt: 'Chcesz dodać ten wpis do ulubionych:' - reblog: - proceed: Przejdź do podbicia - prompt: 'Chcesz podbić ten wpis:' - reply: - proceed: Przejdź do dodawania odpowiedzi - prompt: 'Chcesz odpowiedzieć na ten wpis:' reports: errors: invalid_rules: nie odwołuje się do prawidłowych reguł diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 6f789bc4e..00d7ce9a5 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -2,45 +2,25 @@ pt-BR: about: about_mastodon_html: 'A rede social do futuro: Sem anúncios, sem vigilância corporativa, com design ético e muita descentralização! Possua seus próprios dados com o Mastodon!' - api: API - apps: Aplicativos contact_missing: Não definido contact_unavailable: Não disponível - documentation: Documentação hosted_on: Instância Mastodon em %{domain} - source_code: Código-fonte - what_is_mastodon: O que é Mastodon? accounts: - choices_html: 'Sugestões de %{name}:' - endorsements_hint: Você pode sugerir pessoas que você segue, elas aparecerão aqui. - featured_tags_hint: Você pode destacar hashtags específicas, elas aparecerão aqui. follow: Seguir followers: one: Seguidor other: Seguidores following: Seguindo instance_actor_flash: Esta conta é um ator virtual usado para representar o próprio servidor e não um usuário individual. É utilizada para fins de federação e não deve ser suspensa. - joined: Entrou em %{date} last_active: última atividade link_verified_on: O link foi verificado em %{date} - media: Mídia - moved_html: "%{name} se mudou para %{new_profile_link}:" - network_hidden: Informação indisponível nothing_here: Nada aqui! - people_followed_by: Pessoas que %{name} segue - people_who_follow: Pessoas que seguem %{name} pin_errors: following: Você deve estar seguindo a pessoa que você deseja sugerir posts: one: Toot other: Toots posts_tab_heading: Toots - posts_with_replies: Toots e respostas - roles: - bot: Robô - group: Grupo - unavailable: Perfil indisponível - unfollow: Deixar de seguir admin: account_actions: action: Tomar uma atitude @@ -1060,9 +1040,6 @@ pt-BR: save: Salvar novo filtro title: Adicionar filtro footer: - developers: Desenvolvedores - more: Mais… - resources: Recursos trending_now: Em alta no momento generic: all: Tudo @@ -1095,7 +1072,6 @@ pt-BR: following: Pessoas que você segue muting: Lista de silenciados upload: Enviar - in_memoriam_html: Em memória. invites: delete: Desativar expired: Expirados @@ -1273,22 +1249,7 @@ pt-BR: remove_selected_follows: Deixar de seguir usuários selecionados status: Status da conta remote_follow: - acct: Digite o seu usuário@domínio para continuar missing_resource: Não foi possível encontrar o link de redirecionamento para sua conta - no_account_html: Não tem uma conta? Você pode criar uma aqui - proceed: Continue para seguir - prompt: 'Você seguirá:' - reason_html: "Por que esse passo é necessário? %{instance} pode não ser a instância onde você se hospedou, então precisamos redirecionar você para a sua instância primeiro." - remote_interaction: - favourite: - proceed: Continue para favoritar - prompt: 'Você favoritará este toot:' - reblog: - proceed: Continue para dar boost - prompt: 'Você dará boost neste toot:' - reply: - proceed: Continue para responder - prompt: 'Você responderá este toot:' reports: errors: invalid_rules: não faz referência a regras válidas diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 199570231..4e0d2f9cc 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -2,46 +2,26 @@ pt-PT: about: about_mastodon_html: Mastodon é uma rede social baseada em protocolos abertos da web e software livre e gratuito. É descentralizado como e-mail. - api: API - apps: Aplicações móveis contact_missing: Não configurado contact_unavailable: n.d. - documentation: Documentação hosted_on: Mastodon em %{domain} - privacy_policy: Política de Privacidade - source_code: Código fonte - what_is_mastodon: O que é o Mastodon? + title: Sobre accounts: - choices_html: 'escolhas de %{name}:' - endorsements_hint: Você pode, através da interface web, escolher endossar pessoas que segue, e elas aparecerão aqui. - featured_tags_hint: Você pode destacar hashtags específicas que serão exibidas aqui. follow: Seguir followers: one: Seguidor other: Seguidores following: A seguir instance_actor_flash: Esta conta é um actor virtual usado para representar a própria instância e não um utilizador individual. É usada para motivos de federação e não deve ser suspenso. - joined: Aderiu %{date} last_active: última vez activo link_verified_on: A posse deste link foi verificada em %{date} - media: Media - moved_html: "%{name} mudou-se para %{new_profile_link}:" - network_hidden: Esta informação não está disponível nothing_here: Não há nada aqui! - people_followed_by: Pessoas seguidas por %{name} - people_who_follow: Pessoas que seguem %{name} pin_errors: following: Tu tens de estar a seguir a pessoa que pretendes apoiar posts: one: Publicação other: Publicações posts_tab_heading: Publicações - posts_with_replies: Posts e Respostas - roles: - bot: Robô - group: Grupo - unavailable: Perfil indisponível - unfollow: Deixar de seguir admin: account_actions: action: Executar acção @@ -344,6 +324,7 @@ pt-PT: listed: Listado new: title: Adicionar novo emoji customizado + no_emoji_selected: Nenhum emojis foi alterado, pois nenhum foi selecionado not_permitted: Não está autorizado a executar esta ação overwrite: Sobrescrever shortcode: Código de atalho @@ -812,6 +793,9 @@ pt-PT: description_html: Estes são links que atualmente estão a ser frequentemente partilhados por contas visiveis pelo seu servidor. Eles podem ajudar os seus utilizador a descobrir o que está a acontecer no mundo. Nenhum link é exibido publicamente até que aprove o editor. Também pode permitir ou rejeitar links individualmente. disallow: Não permitir link disallow_provider: Não permitir editor + no_link_selected: Nenhum link foi alterado, pois nenhum foi selecionado + publishers: + no_publisher_selected: Nenhum editor foi alterado, pois nenhum foi selecionado shared_by_over_week: one: Partilhado por uma pessoa na última semana other: Partilhado por %{count} pessoas na última semana @@ -831,6 +815,7 @@ pt-PT: description_html: Estas são publicações que o seu servidor conhece e que atualmente estão a ser frequentemente partilhadas e adicionadas aos favoritos. Isto pode ajudar os seus utilizadores, novos e retornados, a encontrar mais pessoas para seguir. Nenhuma publicação será exibida publicamente até que aprove o autor, e o autor permita que a sua conta seja sugerida a outros. Você também pode permitir ou rejeitar publicações individualmente. disallow: Não permitir publicação disallow_account: Não permitir autor + no_status_selected: Nenhuma publicação em tendência foi alterada, pois nenhuma foi selecionada not_discoverable: O autor optou por não permitir que a sua conta seja sugerida a outros shared_by: one: Partilhado ou adicionado aos favoritos uma vez @@ -846,6 +831,7 @@ pt-PT: tag_uses_measure: utilizações totais description_html: Estas são hashtags que aparecem atualmente com frequência em publicações visíveis pelo seu servidor. Isto pode ajudar os seus utilizadores a descobrir o que está ser mais falado no momento. Nenhuma hashtag é exibida publicamente até que a aprove. listable: Pode ser sugerida + no_tag_selected: Nenhuma etiqueta foi alterada, pois nenhuma foi selecionada not_listable: Não será sugerida not_trendable: Não aparecerá nas tendências not_usable: Não pode ser utilizada @@ -1169,9 +1155,6 @@ pt-PT: hint: Este filtro aplica-se a publicações individuais selecionadas independentemente de outros critérios. Pode adicionar mais publicações a este filtro através da interface web. title: Publicações filtradas footer: - developers: Responsáveis pelo desenvolvimento - more: Mais… - resources: Recursos trending_now: Tendências atuais generic: all: Tudo @@ -1214,7 +1197,6 @@ pt-PT: following: Lista de pessoas que estás a seguir muting: Lista de utilizadores silenciados upload: Enviar - in_memoriam_html: Em memória. invites: delete: Desativar expired: Expirados @@ -1394,22 +1376,7 @@ pt-PT: remove_selected_follows: Deixar de seguir os utilizadores selecionados status: Estado da conta remote_follow: - acct: Introduza o seu utilizador@domínio do qual quer seguir missing_resource: Não foi possível achar a URL de redirecionamento para sua conta - no_account_html: Não tens uma conta? Tu podes aderir aqui - proceed: Prossiga para seguir - prompt: 'Você vai seguir:' - reason_html: " Porque é este passo necessário? %{instance} pode não ser a instância onde você está registado. Por isso, precisamos de o redirecionar para a sua instância de origem em primeiro lugar." - remote_interaction: - favourite: - proceed: Prosseguir para os favoritos - prompt: 'Queres favoritar esta publicação:' - reblog: - proceed: Prosseguir com partilha - prompt: 'Queres partilhar esta publicação:' - reply: - proceed: Prosseguir com resposta - prompt: 'Queres responder a esta publicação:' reports: errors: invalid_rules: não faz referência a regras válidas diff --git a/config/locales/ro.yml b/config/locales/ro.yml index bcd385b6b..b96d22dd5 100644 --- a/config/locales/ro.yml +++ b/config/locales/ro.yml @@ -2,18 +2,10 @@ ro: about: about_mastodon_html: 'Rețeaua socială a viitorului: Fără reclame, fără supraveghere corporativă, design etic și descentralizare! Dețineți-vă datele cu Mastodon!' - api: API - apps: Aplicații mobile contact_missing: Nesetat contact_unavailable: Indisponibil - documentation: Documentație hosted_on: Mastodon găzduit de %{domain} - source_code: Cod sursă - what_is_mastodon: Ce este Mastodon? accounts: - choices_html: 'Alegerile lui %{name}:' - endorsements_hint: Poți promova oameni pe care îi urmărești din interfața web, și ei vor apărea aici. - featured_tags_hint: Puteți promova anumite hashtag-uri care vor fi afișate aici. follow: Urmărește followers: few: Urmăritori @@ -21,15 +13,9 @@ ro: other: De Urmăritori following: Urmăriți instance_actor_flash: Acest cont este un actor virtual folosit pentru a reprezenta serverul în sine și nu un utilizator individual. Acesta este utilizat în scopuri federative şi nu trebuie suspendat. - joined: Înscris %{date} last_active: ultima activitate link_verified_on: Proprietatea acestui link a fost verificată la %{date} - media: Media - moved_html: "%{name} s-a mutat la %{new_profile_link}:" - network_hidden: Aceste informaţii nu sunt disponibile nothing_here: Nu există nimic aici! - people_followed_by: Persoane pe care %{name} le urmărește - people_who_follow: Persoane care urmăresc pe %{name} pin_errors: following: Trebuie să urmăriți deja persoana pe care doriți să o aprobați posts: @@ -37,12 +23,6 @@ ro: one: Postare other: De Postări posts_tab_heading: Postări - posts_with_replies: Postări și răspunsuri - roles: - bot: Robot - group: Grup - unavailable: Profil indisponibil - unfollow: Nu mai urmării admin: account_actions: action: Efectuează acțiunea @@ -374,7 +354,6 @@ ro: following: Lista de urmărire muting: Lista de ignorare upload: Încarcă - in_memoriam_html: În Memoria. invites: delete: Dezactivați expired: Expirat @@ -464,22 +443,7 @@ ro: remove_selected_follows: Anulează urmărirea utilizatorilor selectați status: Starea contului remote_follow: - acct: Introduceți numele@domeniu din care doriți să acționați missing_resource: Nu s-a putut găsi URL-ul de redirecționare necesar pentru contul dvs - no_account_html: Nu ai un cont? Poți să te înregistrezi aici - proceed: Continuă să urmărești - prompt: 'Vei urmării pe:' - reason_html: "De ce este necesar acest pas? %{instance} ar putea să nu fie serverul în care sunteți înregistrat, așa că trebuie să te redirecționăm către serverul tău de acasă." - remote_interaction: - favourite: - proceed: Continuă să favorizezi - prompt: 'Vrei să favorizezi această postare:' - reblog: - proceed: Continuă să dai impuls - prompt: 'Vrei să impulsionezi această postare:' - reply: - proceed: Continuă să răspunzi - prompt: 'Vrei să răspunzi la această postare:' scheduled_statuses: over_daily_limit: Ai depășit limita de %{limit} postări programate pentru acea zi over_total_limit: Ai depășit limita de %{limit} postări programate diff --git a/config/locales/ru.yml b/config/locales/ru.yml index ec600f8d8..fc84808f9 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -2,19 +2,10 @@ ru: about: about_mastodon_html: 'Социальная сеть будущего: никакой рекламы, слежки корпорациями, этичный дизайн и децентрализация! С Mastodon ваши данные под вашим контролем.' - api: API - apps: Приложения contact_missing: не указан contact_unavailable: неизв. - documentation: Документация hosted_on: Вы получили это сообщение, так как зарегистрированы на %{domain} - privacy_policy: Политика конфиденциальности - source_code: Исходный код - what_is_mastodon: Что такое Mastodon? accounts: - choices_html: "%{name} рекомендует:" - endorsements_hint: Вы можете рекомендовать людей, которые вы отслеживаете из веб-интерфейса, и они будут показаны здесь. - featured_tags_hint: Вы можете указать конкретные хэштеги, которые будут отображаться здесь. follow: Подписаться followers: few: подписчика @@ -23,15 +14,9 @@ ru: other: подписчиков following: подписки instance_actor_flash: Эта учетная запись - виртуальный пользователь, используемый для представления самого сервера, а не отдельного пользователя. Она используется для организационных целей и не может быть заморожена. - joined: 'Дата регистрации: %{date}' last_active: последняя активность link_verified_on: Владение этой ссылкой было проверено %{date} - media: Медиафайлы - moved_html: "%{name} переехал(а) на %{new_profile_link}:" - network_hidden: Эта информация недоступна nothing_here: Здесь ничего нет! - people_followed_by: Люди, на которых подписан(а) %{name} - people_who_follow: Подписчики %{name} pin_errors: following: Чтобы порекомендовать кого-то, надо сначала на них подписаться posts: @@ -40,12 +25,6 @@ ru: one: Пост other: статусов posts_tab_heading: Посты - posts_with_replies: Посты с ответами - roles: - bot: Бот - group: Группа - unavailable: Профиль недоступен - unfollow: Отписаться admin: account_actions: action: Выполнить действие @@ -349,6 +328,7 @@ ru: listed: В списке new: title: Добавить новый эмодзи + no_emoji_selected: Не было изменено ни одного эмодзи not_permitted: У вас нет прав для совершения данного действия overwrite: Заменить shortcode: Краткий код @@ -789,6 +769,7 @@ ru: allow_provider: Разрешить издание disallow: Запретить ссылку disallow_provider: Отклонить издание + no_link_selected: Ссылки не были изменены, так как не были выбраны ни один shared_by_over_week: few: Поделилось %{count} человека за последнюю неделю many: Поделилось %{count} человек за последнюю неделю @@ -964,6 +945,7 @@ ru: title: Установка sign_up: preamble: С учётной записью на этом сервере Mastodon вы сможете следить за любым другим пользователем в сети, независимо от того, где размещён их аккаунт. + title: Зарегистрируйтесь в %{domain}. status: account_status: Статус учётной записи confirming: Ожидание подтверждения e-mail. @@ -1133,9 +1115,6 @@ ru: batch: remove: Удалить из фильтра footer: - developers: Разработчикам - more: Ещё… - resources: Ссылки trending_now: Актуально сейчас generic: all: Любой @@ -1170,7 +1149,6 @@ ru: following: Подписки muting: Список глушения upload: Загрузить - in_memoriam_html: В память о пользователе. invites: delete: Удалить expired: Истекло @@ -1352,22 +1330,7 @@ ru: remove_selected_follows: Отписаться от выбранных пользователей status: Статус учётной записи remote_follow: - acct: Введите свой username@domain для продолжения missing_resource: Поиск требуемого перенаправления URL для Вашей учётной записи завершился неудачей - no_account_html: Нет учётной записи? Вы можете зарегистрироваться здесь - proceed: Продолжить подписку - prompt: 'Вы хотите подписаться на:' - reason_html: "Почему это необходимо? Возможно, %{instance} не является узлом, на котором вы зарегистрированы, поэтому нам сперва нужно перенаправить вас на домашний узел." - remote_interaction: - favourite: - proceed: Добавить в избранное - prompt: 'Вы собираетесь добавить в избранное следующий пост:' - reblog: - proceed: Продвинуть пост - prompt: 'Вы хотите продвинуть этот пост:' - reply: - proceed: Ответить - prompt: 'Вы собираетесь ответить на этот пост:' reports: errors: invalid_rules: не ссылается на действительные правила diff --git a/config/locales/sc.yml b/config/locales/sc.yml index 231057e12..664cdb857 100644 --- a/config/locales/sc.yml +++ b/config/locales/sc.yml @@ -2,45 +2,25 @@ sc: about: about_mastodon_html: 'Sa rete sotziale de su benidore: sena publitzidade, sena vigilàntzia corporativa, disinnu èticu e detzentralizatzione! Sias mere de is datos tuos cun Mastodon!' - api: API - apps: Aplicatziones mòbiles contact_missing: No cunfiguradu contact_unavailable: No a disponimentu - documentation: Documentatzione hosted_on: Mastodon allogiadu in %{domain} - source_code: Còdighe de orìgine - what_is_mastodon: Ite est Mastodon? accounts: - choices_html: 'Sèberos de %{name}:' - endorsements_hint: Podes cussigiare gente chi sighis dae s'interfache web, e at a aparèssere inoghe. - featured_tags_hint: Podes evidentziare etichetas ispetzìficas chi ant a èssere ammustradas inoghe. follow: Sighi followers: one: Sighidura other: Sighiduras following: Sighende instance_actor_flash: Custu contu est un'atore virtuale chi costumaiat a rapresentare su serbidore etotu e nono unu cale si siat utente individuale. Est impreadu pro finalidades de sa federatzione e non si depet suspèndere. - joined: At aderidu su %{date} last_active: ùrtima atividade link_verified_on: Sa propiedade de custu ligàmene est istada controllada su %{date} - media: Elementos multimediales - moved_html: "%{name} est istadu trasferidu a %{new_profile_link}:" - network_hidden: Custa informatzione no est a disponimentu nothing_here: Nudda inoghe. - people_followed_by: Gente sighida dae %{name} - people_who_follow: Gente chi sighit a %{name} pin_errors: following: Depes sighire sa persone chi boles promòvere posts: one: Tut other: Tuts posts_tab_heading: Tuts - posts_with_replies: Tuts e rispostas - roles: - bot: Bot - group: Grupu - unavailable: Su profilu no est a disponimentu - unfollow: Non sigas prus admin: account_actions: action: Faghe un'atzione @@ -741,9 +721,6 @@ sc: new: title: Agiunghe unu filtru nou footer: - developers: Iscuadra de isvilupu - more: Àteru… - resources: Resursas trending_now: Est tendèntzia immoe generic: all: Totus @@ -774,7 +751,6 @@ sc: following: Lista de sighiduras muting: Lista gente a sa muda upload: Càrriga - in_memoriam_html: In memoriam. invites: delete: Disativa expired: Iscadidu @@ -934,22 +910,7 @@ sc: remove_selected_follows: Non sigas prus is persones seletzionadas status: Istadu de su contu remote_follow: - acct: Inserta·nche s'utente@domìniu tuo dae su chi boles sighire custa persone missing_resource: Impossìbile agatare sa rechesta de indiritzamentu URL pro su contu tuo - no_account_html: Non tenes ancora unu contu? Ti podes registrare inoghe - proceed: Cumintza a sighire - prompt: 'As a sighire a:' - reason_html: "Pro ite serbit custu? Podet èssere chi %{instance} non siat su serbidore aunde ses registradu, pro custu tenimus bisòngiu de ti torrare a indiritzare prima a su serbidore tuo." - remote_interaction: - favourite: - proceed: Sighi pro marcare che a preferidu - prompt: 'Boles marcare comente a preferidu custu tut:' - reblog: - proceed: Sighi pro cumpartzire - prompt: 'Boles cumpartzire custu tut:' - reply: - proceed: Sighi pro rispòndere - prompt: 'Boles rispòndere a custu tut:' scheduled_statuses: over_daily_limit: As superadu su lìmite de %{limit} tuts programmados pro cudda die over_total_limit: As superadu su lìmite de %{limit} tuts programmados diff --git a/config/locales/si.yml b/config/locales/si.yml index 41999e6a2..54127c254 100644 --- a/config/locales/si.yml +++ b/config/locales/si.yml @@ -2,45 +2,25 @@ si: about: about_mastodon_html: 'අනාගත සමාජ ජාලය: දැන්වීම් නැත, ආයතනික නිරීක්ෂණ නැත, සදාචාරාත්මක සැලසුම් සහ විමධ්‍යගත කිරීම! Mastodon සමඟ ඔබේ දත්ත අයිති කරගන්න!' - api: යෙ.ක්‍ර. මු. (API) - apps: ජංගම යෙදුම් contact_missing: සකස් කර නැත contact_unavailable: අ/නොවේ - documentation: ප්‍රලේඛනය hosted_on: Mastodon %{domain}හි සත්කාරකත්වය දරයි - source_code: මූල කේතය - what_is_mastodon: මාස්ටඩන් යනු කුමක්ද? accounts: - choices_html: "%{name}හි තේරීම්:" - endorsements_hint: ඔබට වෙබ් අතුරු මුහුණතෙන් ඔබ අනුගමනය කරන පුද්ගලයින් අනුමත කළ හැකි අතර, ඔවුන් මෙහි පෙන්වනු ඇත. - featured_tags_hint: ඔබට මෙහි සංදර්ශන කෙරෙන විශේෂිත හැෂ් ටැග් විශේෂාංගගත කළ හැක. follow: අනුගමනය followers: one: අනුගාමිකයා other: අනුගාමිකයින් following: අනුගමනය instance_actor_flash: මෙම ගිණුම සේවාදායකයම නියෝජනය කිරීමට භාවිතා කරන අතථ්‍ය නළුවෙකු වන අතර කිසිදු තනි පරිශීලකයෙකු නොවේ. එය ෆෙඩරේෂන් අරමුණු සඳහා භාවිතා කරන අතර අත්හිටුවිය යුතු නොවේ. - joined: "%{date} එක් වී ඇත" last_active: අවසාන ක්රියාකාරී link_verified_on: මෙම සබැඳියේ හිමිකාරිත්වය %{date}හි පරීක්ෂා කරන ලදී - media: මාධ්‍යය - moved_html: "%{name} %{new_profile_link}මාරු වී ඇත:" - network_hidden: මෙම තොරතුරු ලබා ගත නොහැක nothing_here: මෙහි කිසිත් නැත! - people_followed_by: "%{name} අනුගමනය කරන පුද්ගලයින්" - people_who_follow: "%{name}අනුගමනය කරන පුද්ගලයින්" pin_errors: following: ඔබට අනුමත කිරීමට අවශ්‍ය පුද්ගලයා ඔබ දැනටමත් අනුගමනය කරමින් සිටිය යුතුය posts: one: ලිපිය other: ලිපි posts_tab_heading: ලිපි - posts_with_replies: පළ කිරීම් හා පිළිතුරු - roles: - bot: ස්වයං ක්‍රමලේඛය - group: සමූහය - unavailable: පැතිකඩ නොමැත - unfollow: අනුගමනය නොකරන්න admin: account_actions: action: ක්‍රියාව සිදු කරන්න @@ -1045,9 +1025,6 @@ si: save: නව පෙරහන සුරකින්න title: නව පෙරහනක් එකතු කරන්න footer: - developers: සංවර්ධකයින් - more: තව… - resources: සම්පත් trending_now: දැන් ප්‍රවණතාවය generic: all: සියල්ල @@ -1080,7 +1057,6 @@ si: following: පහත ලැයිස්තුව muting: නිහඬ කිරීමේ ලැයිස්තුව upload: උඩුගත කරන්න - in_memoriam_html: මතකය තුළ. invites: delete: අක්රිය කරන්න expired: කල් ඉකුත් වී ඇත @@ -1258,22 +1234,7 @@ si: remove_selected_follows: තෝරාගත් පරිශීලකයින් අනුගමනය නොකරන්න status: ගිණුමේ තත්‍වය remote_follow: - acct: ඔබට ක්‍රියා කිරීමට අවශ්‍ය ඔබගේ username@domain ඇතුලත් කරන්න missing_resource: ඔබගේ ගිණුම සඳහා අවශ්‍ය යළි-යොමුවීම් URL එක සොයා ගැනීමට නොහැකි විය - no_account_html: ගිණුමක් නැද්ද? ඔබට මෙහි ලියාපදිංචි විය හැක - proceed: අනුගමනය කිරීමට ඉදිරියට යන්න - prompt: 'ඔබ අනුගමනය කිරීමට යන්නේ:' - reason_html: "මෙම පියවර අවශ්ය වන්නේ ඇයි? %{instance} ඔබ ලියාපදිංචි වී ඇති සේවාදායකය නොවිය හැක, එබැවින් අපට පළමුව ඔබව ඔබගේ නිවසේ සේවාදායකය වෙත හරවා යැවිය යුතුය." - remote_interaction: - favourite: - proceed: ප්රියතම වෙත ඉදිරියට යන්න - prompt: 'ඔබට මෙම පෝස්ටය ප්‍රියතම කිරීමට අවශ්‍යයි:' - reblog: - proceed: වැඩි කිරීමට ඉදිරියට යන්න - prompt: 'ඔබට මෙම පළ කිරීම වැඩි කිරීමට අවශ්‍යයි:' - reply: - proceed: පිළිතුරු දීමට ඉදිරියට යන්න - prompt: 'ඔබට මෙම පළ කිරීමට පිළිතුරු දීමට අවශ්‍යයි:' reports: errors: invalid_rules: වලංගු නීති සඳහන් නොකරයි diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index 050533ace..e2dd896d1 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -73,6 +73,10 @@ hu: actions: hide: A szűrt tartalom teljes elrejtése, mintha nem is létezne warn: A szűrt tartalom a szűrő címét említő figyelmeztetés mögé rejtése + form_admin_settings: + backups_retention_period: Az előállított felhasználói archívumok megtartása a megadott napokig. + content_cache_retention_period: A más kiszolgálókról származó bejegyzések megadott számú nap után törölve lesznek, ha pozitív értékre van állítva. Ez lehet, hogy nem fordítható vissza. + media_cache_retention_period: A letöltött médiafájlok megadott számú nap után törölve lesznek, ha pozitív értékre van állítva, és igény szerint újból le lesznek töltve. form_challenge: current_password: Beléptél egy biztonsági térben imports: diff --git a/config/locales/simple_form.io.yml b/config/locales/simple_form.io.yml index bb5452471..b32d8eb1e 100644 --- a/config/locales/simple_form.io.yml +++ b/config/locales/simple_form.io.yml @@ -73,6 +73,10 @@ io: actions: hide: Komplete celez filtrita kontenajo quale ol ne existas warn: Celez filtrita kontenajo dop avert quo montras titulo di filtrilo + form_admin_settings: + backups_retention_period: Retenez igita uzantoarkivi por la diiquanto. + content_cache_retention_period: Posti de altra servili efacesos pos la diiquanto kande fixesas a positiva nombro. Co darfas desagesar. + media_cache_retention_period: Deschargita mediifaili efacesos pos la diiquanto kande fixesas a positiva nombro, e rideschargesas irgatempe. form_challenge: current_password: Vu eniras sekura areo imports: @@ -207,6 +211,10 @@ io: actions: hide: Tote celez warn: Celez kun averto + form_admin_settings: + backups_retention_period: Uzantoarkivretendurtempo + content_cache_retention_period: Kontenajmemorajretendurtempo + media_cache_retention_period: Mediimemorajretendurtempo 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 diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index 0beed9173..115c7894d 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -71,6 +71,10 @@ nl: actions: hide: Verberg de gefilterde inhoud volledig, alsof het niet bestaat warn: Verberg de gefilterde inhoud achter een waarschuwing, met de titel van het filter als waarschuwingstekst + form_admin_settings: + backups_retention_period: De aangemaakte gebruikersarchieven voor het opgegeven aantal dagen behouden. + content_cache_retention_period: 'Berichten van andere servers worden na het opgegeven aantal dagen verwijderd. Let op: Dit is onomkeerbaar.' + media_cache_retention_period: Mediabestanden die van andere servers zijn gedownload worden na het opgegeven aantal dagen verwijderd en worden op verzoek opnieuw gedownload. form_challenge: current_password: Je betreedt een veilige omgeving imports: @@ -98,6 +102,8 @@ nl: role: De rol bepaalt welke rechten een gebruiker heeft user_role: permissions_as_keys: Gebruikers met deze rol hebben toegang tot... + webhook: + events: Selecteer de te verzenden gebeurtenissen labels: account: fields: @@ -198,6 +204,10 @@ nl: actions: hide: Volledig verbergen warn: Met een waarschuwing verbergen + form_admin_settings: + backups_retention_period: Bewaartermijn gebruikersarchief + content_cache_retention_period: Bewaartermijn berichtencache + media_cache_retention_period: Bewaartermijn mediacache interactions: must_be_follower: Meldingen van mensen die jou niet volgen blokkeren must_be_following: Meldingen van mensen die jij niet volgt blokkeren @@ -240,6 +250,7 @@ nl: permissions_as_keys: Rechten position: Prioriteit webhook: + events: Ingeschakelde gebeurtenissen url: Eindpunt URL 'no': Nee not_recommended: Niet aanbevolen diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml index a9042b25d..bb304a9e4 100644 --- a/config/locales/simple_form.ru.yml +++ b/config/locales/simple_form.ru.yml @@ -73,6 +73,10 @@ ru: actions: hide: Полностью скрыть отфильтрованный контент так, как будто его не существует warn: Скрыть отфильтрованный контент за предупреждением с указанием названия фильтра + form_admin_settings: + backups_retention_period: Сохранять сгенерированные пользовательские архивы для указанного количества дней. + content_cache_retention_period: Записи с других серверов будут удалены после указанного количества дней, когда установлено положительное значение. Это может быть необратимо. + media_cache_retention_period: Скачанные медиа-файлы будут удалены после указанного количества дней, когда установлено положительное значение и повторно загружены по требованию. form_challenge: current_password: Вы переходите к настройкам безопасности imports: diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index 27ad0abd5..e67464115 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -207,6 +207,10 @@ th: actions: hide: ซ่อนอย่างสมบูรณ์ warn: ซ่อนด้วยคำเตือน + form_admin_settings: + backups_retention_period: ระยะเวลาการเก็บรักษาการเก็บถาวรผู้ใช้ + content_cache_retention_period: ระยะเวลาการเก็บรักษาแคชเนื้อหา + media_cache_retention_period: ระยะเวลาการเก็บรักษาแคชสื่อ interactions: must_be_follower: ปิดกั้นการแจ้งเตือนจากผู้ที่ไม่ใช่ผู้ติดตาม must_be_following: ปิดกั้นการแจ้งเตือนจากผู้คนที่คุณไม่ได้ติดตาม diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 4b06fdd1e..9b7fc25d6 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -2,17 +2,10 @@ sk: about: about_mastodon_html: Mastodon je sociálna sieť založená na otvorených webových protokoloch a na slobodnom softvéri. Je decentralizovaná, podobne ako email. - apps: Aplikácie contact_missing: Nezadaný contact_unavailable: Neuvedený/á - documentation: Dokumentácia hosted_on: Mastodon hostovaný na %{domain} - source_code: Zdrojový kód - what_is_mastodon: Čo je Mastodon? accounts: - choices_html: "%{name}vé voľby:" - endorsements_hint: Môžeš ukázať sledovaných užívateľov, s ktorými si spriaznený/á cez webové rozhranie, a tí tu budú zobrazení. - featured_tags_hint: Môžeš zvýrazniť určité haštagy, ktoré tu budú zobrazené. follow: Následuj followers: few: Sledovateľov @@ -20,15 +13,9 @@ sk: one: Sledujúci other: Sledovatelia following: Následujem - joined: Pridal/a sa v %{date} last_active: naposledy aktívny link_verified_on: Vlastníctvo tohto odkazu bolo skontrolované %{date} - media: Médiá - moved_html: "%{name} účet bol presunutý na %{new_profile_link}:" - network_hidden: Táto informácia nieje k dispozícii nothing_here: Nič tu nie je! - people_followed_by: Ľudia, ktorých %{name} sleduje - people_who_follow: Ľudia sledujúci %{name} pin_errors: following: Musíš už následovať toho človeka, ktorého si praješ zviditeľniť posts: @@ -37,11 +24,6 @@ sk: one: Príspevok other: Príspevkov posts_tab_heading: Príspevky - posts_with_replies: Príspevky s odpoveďami - roles: - group: Skupina - unavailable: Profil nieje dostupný - unfollow: Prestaň sledovať admin: account_actions: action: Vykonaj @@ -731,9 +713,6 @@ sk: new: title: Pridaj nové triedenie footer: - developers: Vývojári - more: Viac… - resources: Podklady trending_now: Teraz populárne generic: all: Všetko @@ -766,7 +745,6 @@ sk: following: Zoznam sledovaných muting: Zoznam ignorovaných upload: Nahraj - in_memoriam_html: V pamäti. invites: delete: Deaktivuj expired: Neplatné @@ -913,22 +891,7 @@ sk: remove_selected_follows: Prestaň sledovať vybraných užívateľov status: Stav účtu remote_follow: - acct: Napíš svoju prezývku@doménu z ktorej chceš následovať missing_resource: Nemožno nájsť potrebnú presmerovaciu adresu k tvojmu účtu - no_account_html: Nemáš účet? Môžeš sa zaregistrovať tu - proceed: Začni následovať - prompt: 'Budeš sledovať:' - reason_html: "Načo je tento krok potrebný? %{instance} nemusí byť práve tým serverom na ktorom si zaregistrovaný/á, takže je ťa najprv potrebné presmerovať na tvoj domáci server." - remote_interaction: - favourite: - proceed: Pokračuj k obľúbeniu - prompt: 'Chceš si obľúbiť tento príspevok:' - reblog: - proceed: Pokračuj k vyzdvihnutiu - prompt: 'Chceš vyzdvihnúť tento príspevok:' - reply: - proceed: Pokračuj odpovedaním - prompt: 'Chceš odpovedať na tento príspevok:' scheduled_statuses: over_daily_limit: Prekročil/a si denný limit %{limit} predplánovaných príspevkov over_total_limit: Prekročil/a si limit %{limit} predplánovaných príspevkov diff --git a/config/locales/sl.yml b/config/locales/sl.yml index aacfd4c39..7b160ae51 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -2,19 +2,11 @@ sl: about: about_mastodon_html: Mastodon je socialno omrežje, ki temelji na odprtih spletnih protokolih in prosti ter odprtokodni programski opremi. Je decentraliziran, kot e-pošta. - api: API (programerski vmesnik aplikacije) - apps: Mobilne aplikacije contact_missing: Ni nastavljeno contact_unavailable: Ni na voljo - documentation: Dokumentacija hosted_on: Mastodon gostuje na %{domain} - privacy_policy: Pravilnik o zasebnosti - source_code: Izvorna koda - what_is_mastodon: Kaj je Mastodon? + title: O programu accounts: - choices_html: "%{name} izbire:" - endorsements_hint: Osebe, ki jim sledite, lahko podprete prek spletnega vmesnika in prikazane bodo tukaj. - featured_tags_hint: Izpostavite lahko določene ključnike, ki bodo prikazani na tem mestu. follow: Sledi followers: few: Sledilci @@ -23,15 +15,9 @@ sl: two: Sledilca following: Sledim instance_actor_flash: Ta račun je navidezni akter, ki se uporablja za predstavljanje strežnika samega in ne posameznega uporabnika. Uporablja se za namene federacije in se ne sme začasno ustaviti. - joined: Se je pridružil na %{date} last_active: zadnja dejavnost link_verified_on: Lastništvo te povezave je bilo preverjeno na %{date} - media: Mediji - moved_html: "%{name} se je prestavil na %{new_profile_link}:" - network_hidden: Ta informacija ni na voljo nothing_here: Tukaj ni ničesar! - people_followed_by: Ljudje, ki jim sledi %{name} - people_who_follow: Ljudje, ki sledijo %{name} pin_errors: following: Verjetno že sledite osebi, ki jo želite potrditi posts: @@ -40,12 +26,6 @@ sl: other: Objav two: Tuta posts_tab_heading: Objave - posts_with_replies: Objave in odgovori - roles: - bot: Robot - group: Skupina - unavailable: Profil ni na voljo - unfollow: Prenehaj slediti admin: account_actions: action: Izvedi dejanje @@ -201,7 +181,7 @@ sl: create_account_warning: Ustvari opozorilo create_announcement: Ustvari obvestilo create_canonical_email_block: Ustvari blokado e-pošte - create_custom_emoji: Ustvari emodži po meri + create_custom_emoji: Ustvari emotikon po meri create_domain_allow: Ustvari odobritev domene create_domain_block: Ustvari blokado domene create_email_domain_block: Ustvari blokado domene e-pošte @@ -211,7 +191,7 @@ sl: demote_user: Ponižaj uporabnika destroy_announcement: Izbriši obvestilo destroy_canonical_email_block: Izbriši blokado e-pošte - destroy_custom_emoji: Izbriši emodži po meri + destroy_custom_emoji: Izbriši emotikon po meri destroy_domain_allow: Izbriši odobritev domene destroy_domain_block: Izbriši blokado domene destroy_email_domain_block: Izbriši blokado domene e-pošte @@ -221,10 +201,10 @@ sl: destroy_unavailable_domain: Izbriši domeno, ki ni na voljo destroy_user_role: Uniči vlogo disable_2fa_user: Onemogoči - disable_custom_emoji: Onemogoči emodži po meri + disable_custom_emoji: Onemogoči emotikon po meri disable_sign_in_token_auth_user: Onemogoči overjanje z žetonom po e-pošti za uporabnika disable_user: Onemogoči uporabnika - enable_custom_emoji: Omogoči emodži po meri + enable_custom_emoji: Omogoči emotikon po meri enable_sign_in_token_auth_user: Omogoči overjanje z žetonom po e-pošti za uporabnika enable_user: Omogoči uporabnika memorialize_account: Spomenificiraj račun @@ -244,7 +224,7 @@ sl: unsilence_account: Razveljavi omejitev računa unsuspend_account: Prekliči začasno prekinitev računa update_announcement: Posodobi objavo - update_custom_emoji: Posodobi emodži po meri + update_custom_emoji: Posodobi emotikon po meri update_domain_block: Posodobi blokado domene update_ip_block: Posodobi pravilo IP update_status: Posodobi objavo @@ -350,6 +330,7 @@ sl: listed: Navedeno new: title: Dodaj nove emotikone + no_emoji_selected: Noben emotikon ni bil spremenjen, ker noben ni bil izbran not_permitted: Nimate pravic za izvedbo tega dejanja. overwrite: Prepiši shortcode: Kratka koda @@ -677,8 +658,8 @@ sl: manage_appeals_description: Omogoča uporabnikom, da pregledajo pritožbe glede dejanj moderiranja manage_blocks: Upravljaj blokirano manage_blocks_description: Omogoča uporabnikom, da blokirajo ponudnike e-pošte in naslove IP - manage_custom_emojis: Upravljaj emodžije po meri - manage_custom_emojis_description: Omogoča uporabnikom, da upravljajo emodžije po meri na strežniku + manage_custom_emojis: Upravljaj emotikone po meri + manage_custom_emojis_description: Omogoča uporabnikom, da upravljajo emotikone po meri na strežniku manage_federation: Upravljaj beli seznam manage_federation_description: Omogoča uporabnikom blokirati ali dovoljevati vstop na beli seznam z druimi domenami ter nadzirati dostavljivost manage_invites: Upravljaj vabila @@ -840,6 +821,9 @@ sl: description_html: To so povezave, ki jih trenutno veliko delijo računi, iz katerih vaš strežnik vidi objave. Vašim uporabnikom lahko pomaga izvedeti, kaj se dogaja po svetu. Nobene povezave niso javno prikazane, dokler ne odobrite izdajatelja. Posamezne povezave lahko tudi dovolite ali zavrnete. disallow: Ne dovoli povezave disallow_provider: Ne dovoli izdajatelja + no_link_selected: Nobena povezava ni bila spremenjena, ker nobena ni bila izbrana + publishers: + no_publisher_selected: Noben izdajatelj ni bil spremenjen, ker noben ni bila izbran shared_by_over_week: few: Delile %{count} osebe v zadnjem tednu one: Delila %{count} oseba v zadnjem tednu @@ -861,6 +845,7 @@ sl: description_html: To so objave, za katere vaš strežnik ve, da so trenutno v skupni rabi in med priljubljenimi. Vašim novim uporabnikom in uporabnikom, ki se vračajo, lahko pomaga najti več oseb, ki jim bodo sledili. Nobena objava ni javno prikazana, dokler avtorja ne odobrite in avtor ne dovoli, da se njegov račun predlaga drugim. Posamezne objave lahko tudi dovolite ali zavrnete. disallow: Ne dovoli objave disallow_account: Ne dovoli avtorja + no_status_selected: Nobena trendna objava ni bila spremenjena, ker ni bila nobena izbrana not_discoverable: Avtor ni dovolil, da bi ga bilo moč odkriti shared_by: few: Deljeno ali priljubljeno %{friendly_count}-krat @@ -878,6 +863,7 @@ sl: tag_uses_measure: uporab skupaj description_html: To so ključniki, ki se trenutno pojavljajo v številnih objavah, ki jih vidi vaš strežnik. Uporabnikom lahko pomaga ugotoviti, o čem ljudje trenutno največ govorijo. Noben ključnik ni javno prikazan, dokler ga ne odobrite. listable: Je moč predlagati + no_tag_selected: Nobena značka ni bila spremenjena, ker nobena ni bila izbrana not_listable: Ne bo predlagano not_trendable: Se ne bo pojavilo med trendi not_usable: Ni mogoče uporabiti @@ -1211,9 +1197,6 @@ sl: hint: Ta filter se nanaša na posamezne objave ne glede na druge pogoje. Filtru lahko dodate več objav prek spletnega vmesnika. title: Filtrirane objave footer: - developers: Razvijalci - more: Več… - resources: Viri trending_now: Zdaj v trendu generic: all: Vse @@ -1264,7 +1247,6 @@ sl: following: Seznam uporabnikov, katerim sledite muting: Seznam utišanih upload: Pošlji - in_memoriam_html: V spomin. invites: delete: Onemogoči expired: Poteklo @@ -1446,22 +1428,7 @@ sl: remove_selected_follows: Prenehaj slediti izbranim uporabnikom status: Stanje računa remote_follow: - acct: Vnesite uporabniško_ime@domena, iz katerega želite delovati missing_resource: Za vaš račun ni bilo mogoče najti zahtevanega URL-ja za preusmeritev - no_account_html: Še nimate računa? Tukaj se lahko prijavite - proceed: Nadaljujte - prompt: 'Sledili boste:' - reason_html: "Zakaj je ta korak potreben? %{instance} morda ni strežnik, kjer ste registrirani, zato vas moramo najprej preusmeriti na domači strežnik." - remote_interaction: - favourite: - proceed: Nadaljuj s priljubljenim - prompt: 'Želite vzljubiti to objavo:' - reblog: - proceed: Nadaljuj s izpostavljanjem - prompt: 'Želite izpostaviti to objavo:' - reply: - proceed: Nadaljuj z odgovorom - prompt: 'Želite odgovoriti na to objavo:' reports: errors: invalid_rules: se ne sklicuje na veljavna pravila diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 2ea9fb8f7..eea76f259 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -2,46 +2,26 @@ sq: about: about_mastodon_html: 'Rrjeti shoqëror i së ardhmes: Pa reklama, pa survejim nga korporata, konceptim etik dhe decentralizim! Jini zot i të dhënave tuaja, me Mastodon-in!' - api: API - apps: Aplikacione për celular contact_missing: I parregulluar contact_unavailable: N/A - documentation: Dokumentim hosted_on: Mastodon i strehuar në %{domain} - privacy_policy: Rregulla Privatësie - source_code: Kod burim - what_is_mastodon: Ç’është Mastodon-i? + title: Mbi accounts: - choices_html: 'Zgjedhje të %{name}:' - endorsements_hint: Mund t’i mbështesni personat që nga ndërfaqja web, dhe do të shfaqen këtu. - featured_tags_hint: Mund të zgjidhni hashtag-ë të veçantë që do të shfaqen këtu. follow: Ndiqeni followers: one: Ndjekës other: Ndjekës following: Ndjekje instance_actor_flash: Kjo llogari është një aktor virtual, i përdorur për të përfaqësuar vetë shërbyesin dhe jo ndonjë përdorues individual. Përdoret për qëllime federimi dhe s’duhet pezulluar. - joined: U bë pjesë më %{date} last_active: aktiv së fundi link_verified_on: Pronësia e kësaj lidhjeje qe kontrolluar më %{date} - media: Media - moved_html: "%{name} ka kaluar te %{new_profile_link}:" - network_hidden: Këto të dhëna s’janë të passhme nothing_here: S’ka gjë këtu! - people_followed_by: Persona të ndjekur nga %{name} - people_who_follow: Persona që ndjekin %{name} pin_errors: following: Personin që doni të pasqyroni, duhet ta keni ndjekur tashmë posts: one: Mesazh other: Mesazhe posts_tab_heading: Mesazhe - posts_with_replies: Mesazhe dhe përgjigje - roles: - bot: Robot - group: Grup - unavailable: Profil jashtë funksionimi - unfollow: Resht së ndjekuri admin: account_actions: action: Kryeje veprimin @@ -344,6 +324,7 @@ sq: listed: Në listë new: title: Shtoni emoxhi të ri vetjak + no_emoji_selected: S’u ndryshuan emoxhi, ngaqë s’qe përzgjedhur i tillë not_permitted: S’keni leje të kryeni këtë veprim overwrite: Mbishkruaje shortcode: Kod i shkurtër @@ -809,6 +790,9 @@ sq: description_html: Këto janë lidhje që ndahen aktualisht shumë me llogari prej të cilave shërbyesi juaj sheh postime. Mund të ndihmojë përdoruesit tuaj të gjejnë se ç’po ndodh në botë. S’shfaqen lidhje publikisht, deri sa të miratoni botuesin. Mundeni edhe të lejoni ose hidhni poshtë lidhje individuale. disallow: Hiq lejimin e lidhjes disallow_provider: Mos e lejo botuesin + no_link_selected: S’u ndryshuan lidhje, ngaqë s’qe përzgjedhur e tillë + publishers: + no_publisher_selected: S’u ndryshuan botues, ngaqë s’qe përzgjedhur i tillë shared_by_over_week: one: Ndarë me të tjerë nga një person gjatë javës së kaluar other: Ndarë me të tjerë nga %{count} vetë gjatë javës së kaluar @@ -828,6 +812,7 @@ sq: description_html: Këto janë postime të cilat shërbyesi juaj di se po ndahen shumë dhe po zgjidhen si të parapëlqyera për çastin. Mund të ndihmojnë përdoruesit tuaj të rinj dhe të riardhur të gjejnë më tepër vetë për të ndjekur. S’shfaqen postime publikisht, pa miratuar ju autorin dhe autori lejon që llogaria e tij t’u sugjerohet të tjerëve. Mundeni edhe të lejoni, ose hidhni, poshtë postime individuale. disallow: Mos lejo postim disallow_account: Mos lejo autor + no_status_selected: S’u ndryshuan postime në modë, ngaqë s’qe përzgjedhur i tillë not_discoverable: Autori s’ka zgjedhur të jetë i zbulueshëm shared_by: one: Ndarë me të tjerë, ose shënuar si e parapëlqyer një herë @@ -843,6 +828,7 @@ sq: tag_uses_measure: përdorime gjithsej description_html: Këta hashtag-ë aktualisht po shfaqen në një numër të madh postimesh që sheh shërbyesi juaj. Kjo mund të ndihmojë përdoruesit tuaj të gjejnë se për çfarë po flasin më shumë njerëzit aktualisht. Pa i miratuar ju, nuk shfaqen publikisht hashtag-ë. listable: Mund të sugjerohet + no_tag_selected: S’u ndryshuan etiketa, ngaqë s’qe përzgjedhur e tillë not_listable: S’do të sugjerohet not_trendable: S’do të shfaqet nën të modës not_usable: S’mund të përdoret @@ -1164,9 +1150,6 @@ sq: hint: Ky filtër aplikohet për të përzgjedhur postime individuale, pavarësisht kriteresh të tjera. Që nga ndërfaqja web mund të shtoni më tepër postime te ky filtër. title: Postime të filtruar footer: - developers: Zhvillues - more: Më tepër… - resources: Burime trending_now: Prirjet e tashme generic: all: Krejt @@ -1209,7 +1192,6 @@ sq: following: Listë ndjekjesh muting: Listë heshtimesh upload: Ngarkoje - in_memoriam_html: In Memoriam. invites: delete: Çaktivizoje expired: Ka skaduar @@ -1389,22 +1371,7 @@ sq: remove_selected_follows: Hiqe ndjekjen e përdoruesve të përzgjedhur status: Gjendje llogarie remote_follow: - acct: Jepni çiftin tuaj emërpërdoruesi@përkatësi prej të cilit doni që të veprohet missing_resource: S’u gjet dot URL-ja e domosdoshme e ridrejtimit për llogarinë tuaj - no_account_html: S’keni llogari? Mund të regjistroheni këtu - proceed: Ripohoni ndjekjen - prompt: 'Do të ndiqni:' - reason_html: "Pse është i domosdoshëm ky hap? %{instance} mund të mos jetë shërbyesi ku jeni regjistruar, ndaj na duhet t’ju ridrejtojmë së pari te shërbyesi juaj Home." - remote_interaction: - favourite: - proceed: Ripohoni parapëlqimin - prompt: 'Doni të parapëlqeni këtë mesazh:' - reblog: - proceed: Ripohoni përforcimin - prompt: 'Doni të përforconi këtë mesazh:' - reply: - proceed: Ripohoni përgjigjen - prompt: 'Doni t’i përgjigjeni këtij mesazhi:' reports: errors: invalid_rules: s’i referohet ndonjë rregulli të vlefshëm diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index 0d9f14a96..7506c4d4d 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -4,16 +4,8 @@ sr-Latn: about_mastodon_html: Mastodont je društvena mreža bazirana na otvorenim protokolima i slobodnom softveru otvorenog koda. Decentralizovana je kao što je decentralizovana e-pošta. contact_missing: Nije postavljeno hosted_on: Mastodont hostovan na %{domain} - source_code: Izvorni kod - what_is_mastodon: Šta je Mastodont? accounts: - media: Multimedija - moved_html: "%{name} je pomeren na %{new_profile_link}:" nothing_here: Ovde nema ništa! - people_followed_by: Ljudi koje %{name} prati - people_who_follow: Ljudi koji prate %{name} - posts_with_replies: Tutovi i odgovori - unfollow: Otprati admin: account_moderation_notes: create: Napravi @@ -324,10 +316,7 @@ sr-Latn: preferences: other: Ostali remote_follow: - acct: Unesite Vaš korisnik@domen sa koga želite da pratite missing_resource: Ne mogu da nađem zahtevanu adresu preusmeravanja za Vaš nalog - proceed: Nastavite da zapratite - prompt: 'Zapratite će:' sessions: activity: Poslednja aktivnost browser: Veb čitač diff --git a/config/locales/sr.yml b/config/locales/sr.yml index 683afafcb..89f8bc631 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -2,29 +2,18 @@ sr: about: about_mastodon_html: Мастодон је друштвена мрежа базирана на отвореним протоколима и слободном софтверу отвореног кода. Децентрализована је као што је децентрализована е-пошта. - apps: Мобилне апликације contact_missing: Није постављено - documentation: Документација hosted_on: Мастодонт хостован на %{domain} - source_code: Изворни код - what_is_mastodon: Шта је Мастодон? accounts: - choices_html: "%{name}'s избори:" follow: Запрати followers: few: Пратиоци one: Пратиоц other: Пратиоци following: Пратим - joined: Придружио/ла се %{date} last_active: последњи пут активни link_verified_on: Власништво над овом везом је проверено %{date} - media: Медији - moved_html: "%{name} је прешао на %{new_profile_link}:" - network_hidden: Ова информација није доступна nothing_here: Овде нема ништа! - people_followed_by: Људи које %{name} прати - people_who_follow: Људи који прате %{name} pin_errors: following: Морате пратити ову особу ако хоћете да потврдите posts: @@ -32,11 +21,6 @@ sr: one: Труба other: Трубе posts_tab_heading: Трубе - posts_with_replies: Трубе и одговори - roles: - bot: Бот - unavailable: Налог је недоступан - unfollow: Отпрати admin: account_actions: action: Извршите радњу @@ -414,10 +398,6 @@ sr: title: Филтери new: title: Додај нови филтер - footer: - developers: Програмери - more: Више… - resources: Ресурси generic: changes_saved_msg: Измене успешно сачуване! copy: Копирај @@ -501,19 +481,7 @@ sr: preferences: other: Остало remote_follow: - acct: Унесите Ваш корисник@домен са кога желите да пратите missing_resource: Не могу да нађем захтевану адресу преусмеравања за Ваш налог - no_account_html: Немате налог? Можете се пријавити овде - proceed: Наставите да би сте запратили - prompt: 'Запратићете:' - reason_html: "Зашто је овај корак неопходан?%{instance} можда није сервер на којем сте регистровани, тако да прво морамо да вас преусмеримо на ваш сервер." - remote_interaction: - reblog: - proceed: Наставите да бисте поделили - prompt: 'Желите да делите ову трубу:' - reply: - proceed: Наставите да бисте одговорили - prompt: 'Желите да одговорите на ову трубу:' scheduled_statuses: over_daily_limit: Прекорачили сте границу од %{limit} планираних труба за тај дан over_total_limit: Прекорачили сте границу од %{limit} планираних труба diff --git a/config/locales/sv.yml b/config/locales/sv.yml index aad17e680..806625211 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -2,45 +2,25 @@ sv: about: about_mastodon_html: Mastodon är ett socialt nätverk baserat på öppna webbprotokoll och gratis, öppen källkodsprogramvara. Det är decentraliserat som e-post. - api: API - apps: Mobilappar contact_missing: Inte inställd contact_unavailable: Ej tillämplig - documentation: Dokumentation hosted_on: Mastodon-värd på %{domain} - source_code: Källkod - what_is_mastodon: Vad är Mastodon? accounts: - choices_html: "%{name}s val:" - endorsements_hint: Från webbgränssnittet kan du rekommendera följare, som sedan visas här. - featured_tags_hint: Du kan använda fyrkanter som visas här. follow: Följa followers: one: Följare other: Följare following: Följer instance_actor_flash: Detta konto är en virtuell aktör som används för att representera servern själv och inte någon enskild användare. Den används för federationsändamål och bör inte upphävas. - joined: Gick med %{date} last_active: senast aktiv link_verified_on: Ägarskap för denna länk kontrollerades den %{date} - media: Media - moved_html: "%{name} har flyttat till %{new_profile_link}:" - network_hidden: Denna information är inte tillgänglig nothing_here: Det finns inget här! - people_followed_by: Personer som %{name} följer - people_who_follow: Personer som följer %{name} pin_errors: following: Du måste vara följare av den person du vill godkänna posts: one: Tuta other: Tutor posts_tab_heading: Tutor - posts_with_replies: Toots med svar - roles: - bot: Robot - group: Grupp - unavailable: Profilen är inte tillgänglig - unfollow: Sluta följa admin: account_actions: action: Utför åtgärd @@ -745,9 +725,6 @@ sv: new: title: Lägg till nytt filter footer: - developers: Utvecklare - more: Mer… - resources: Resurser trending_now: Trendar nu generic: all: Alla @@ -776,7 +753,6 @@ sv: following: Lista av följare muting: Lista av nertystade upload: Ladda upp - in_memoriam_html: Till minne av. invites: delete: Avaktivera expired: Utgånget @@ -937,19 +913,7 @@ sv: remove_selected_follows: Sluta följ valda användare status: Kontostatus remote_follow: - acct: Ange ditt användarnamn@domän du vill följa från missing_resource: Det gick inte att hitta den begärda omdirigeringsadressen för ditt konto - no_account_html: Har du inget konto? Du kan registrera dig här - proceed: Fortsätt för att följa - prompt: 'Du kommer att följa:' - reason_html: "Varför är det här steget nödvändigt? %{instance} är kanske inte den server du är registrerad vid, så vi behöver dirigera dig till din hemserver först." - remote_interaction: - favourite: - proceed: Fortsätt till favorit - prompt: 'Du vill favorit-markera det här inlägget:' - reply: - proceed: Fortsätt till svar - prompt: 'Du vill svara på det här inlägget:' sessions: activity: Senaste aktivitet browser: Webbläsare diff --git a/config/locales/ta.yml b/config/locales/ta.yml index 638ab1f47..d691c0ec8 100644 --- a/config/locales/ta.yml +++ b/config/locales/ta.yml @@ -2,39 +2,20 @@ ta: about: about_mastodon_html: 'எதிர்காலத்தின் சமூகப் பிணையம்: விளம்பரம் இல்லை, பொதுநிறுவனக் கண்காணிப்பு இல்லை, நெறிக்குட்பட்ட வரைவுத்திட்டம், மற்றும் பகிர்ந்தாளுதல்! மஸ்டோடோனுடன் உங்கள் தரவுகள் உங்களுக்கே சொந்தம்!' - api: செயலிக்கான மென்பொருள் இடைமுகம் API - apps: கைப்பேசி செயலிகள் contact_missing: நிறுவப்படவில்லை contact_unavailable: பொ/இ - documentation: ஆவணச்சான்று hosted_on: மாஸ்டோடாண் %{domain} இனையத்தில் இயங்குகிறது - source_code: நிரல் மூலம் - what_is_mastodon: மச்டொடன் என்றால் என்ன? accounts: - choices_html: "%{name}-இன் தேர்வுகள்:" - featured_tags_hint: குறிப்பிட்ட சிட்டைகளை இங்கு நீங்கள் காட்சிப்படுத்தலாம். follow: பின்தொடர் followers: one: பின்தொடர்பவர் other: பின்தொடர்பவர்கள் following: பின்தொடரும் - joined: "%{date} அன்று இனைந்தார்" last_active: கடைசியாக பார்த்தது - media: படங்கள் - moved_html: "%{name} %{new_profile_link}க்கு மாறியுள்ளது:" - network_hidden: இத்தகவல் கிடைக்கவில்லை nothing_here: இங்கு எதுவும் இல்லை! - people_followed_by: "%{name} பின்தொடரும் நபர்கள்" - people_who_follow: "%{name}ஐ பின்தொடரும் நபர்கள்" pin_errors: following: தாங்கள் அங்கீகரிக்க விரும்பும் நபரை தாங்கள் ஏற்கனவே பின்தொடரந்து கொண்டு இருக்க வேண்டும் posts_tab_heading: பிளிறல்கள் - posts_with_replies: பிளிறல்கள் மற்றும் மறுமொழிகள் - roles: - bot: பொறி - group: குழு - unavailable: சுயவிவரம் கிடைக்கவில்லை - unfollow: பின்தொடராதே admin: account_actions: action: நடவடிக்கை எடு diff --git a/config/locales/tai.yml b/config/locales/tai.yml index decc28717..3b22e9999 100644 --- a/config/locales/tai.yml +++ b/config/locales/tai.yml @@ -1,7 +1,5 @@ --- tai: - about: - what_is_mastodon: Siáⁿ-mih sī Mastodon? errors: '400': The request you submitted was invalid or malformed. '403': You don't have permission to view this page. diff --git a/config/locales/te.yml b/config/locales/te.yml index 8a1e2e0bb..d325d0fba 100644 --- a/config/locales/te.yml +++ b/config/locales/te.yml @@ -2,39 +2,24 @@ te: about: about_mastodon_html: మాస్టొడాన్ అనేది ఒక సామాజిక మాధ్యమం. ఇది పూర్తిగా ఉచితం మరియు స్వేచ్ఛా సాఫ్టువేరు. ఈమెయిల్ లాగానే ఇది వికేంద్రీకరించబడినది. - apps: మొబైల్ యాప్స్ contact_missing: ఇంకా సెట్ చేయలేదు contact_unavailable: వర్తించదు - documentation: పత్రీకరణ hosted_on: మాస్టొడాన్ %{domain} లో హోస్టు చేయబడింది - source_code: సోర్సు కోడ్ - what_is_mastodon: మాస్టొడాన్ అంటే ఏమిటి? accounts: - choices_html: "%{name}'s ఎంపికలు:" follow: అనుసరించు followers: one: అనుచరి other: అనుచరులు following: అనుసరిస్తున్నారు - joined: "%{date}న చేరారు" last_active: చివరిగా క్రియాశీలకంగా వుంది link_verified_on: ఈ లంకె యొక్క యాజమాన్యాన్ని చివరిగా పరిశీలించింది %{date}న - media: మీడియా - moved_html: "%{name} ఈ %{new_profile_link}కు మారారు:" - network_hidden: ఈ సమాచారం అందుబాటులో లేదు nothing_here: ఇక్కడ ఏమీ లేదు! - people_followed_by: "%{name} అనుసరించే వ్యక్తులు" - people_who_follow: "%{name}ను అనుసరించే వ్యక్తులు" pin_errors: following: మీరు ధృవీకరించాలనుకుంటున్న వ్యక్తిని మీరిప్పటికే అనుసరిస్తూ వుండాలి posts: one: టూటు other: టూట్లు posts_tab_heading: టూట్లు - posts_with_replies: టూట్లు మరియు ప్రత్యుత్తరాలు - roles: - bot: బోట్ - unfollow: అనుసరించవద్దు admin: account_actions: action: చర్య తీసుకో diff --git a/config/locales/th.yml b/config/locales/th.yml index d2a27cb30..123d2c342 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -2,44 +2,24 @@ th: about: about_mastodon_html: 'เครือข่ายสังคมแห่งอนาคต: ไม่มีโฆษณา ไม่มีการสอดแนมโดยองค์กร การออกแบบตามหลักจริยธรรม และการกระจายศูนย์! เป็นเจ้าของข้อมูลของคุณด้วย Mastodon!' - api: API - apps: แอปมือถือ contact_missing: ไม่ได้ตั้ง contact_unavailable: ไม่มี - documentation: เอกสารประกอบ hosted_on: Mastodon ที่โฮสต์ที่ %{domain} - privacy_policy: นโยบายความเป็นส่วนตัว - source_code: โค้ดต้นฉบับ - what_is_mastodon: Mastodon คืออะไร? + title: เกี่ยวกับ accounts: - choices_html: 'ตัวเลือกของ %{name}:' - endorsements_hint: คุณสามารถแนะนำผู้คนที่คุณติดตามจากส่วนติดต่อเว็บ และเขาจะปรากฏที่นี่ - featured_tags_hint: คุณสามารถแนะนำแฮชแท็กที่เฉพาะเจาะจงที่จะแสดงที่นี่ follow: ติดตาม followers: other: ผู้ติดตาม following: กำลังติดตาม instance_actor_flash: บัญชีนี้เป็นตัวดำเนินการเสมือนที่ใช้เพื่อเป็นตัวแทนของเซิร์ฟเวอร์เองและไม่ใช่ผู้ใช้รายบุคคลใด ๆ บัญชีใช้สำหรับวัตถุประสงค์ในการติดต่อกับภายนอกและไม่ควรได้รับการระงับ - joined: เข้าร่วมเมื่อ %{date} last_active: ใช้งานล่าสุด link_verified_on: ตรวจสอบความเป็นเจ้าของของลิงก์นี้เมื่อ %{date} - media: สื่อ - moved_html: "%{name} ได้ย้ายไปยัง %{new_profile_link}:" - network_hidden: ไม่มีข้อมูลนี้ nothing_here: ไม่มีสิ่งใดที่นี่! - people_followed_by: ผู้คนที่ %{name} ติดตาม - people_who_follow: ผู้คนที่ติดตาม %{name} pin_errors: following: คุณต้องกำลังติดตามบุคคลที่คุณต้องการแนะนำอยู่แล้ว posts: other: โพสต์ posts_tab_heading: โพสต์ - posts_with_replies: โพสต์และการตอบกลับ - roles: - bot: บอต - group: กลุ่ม - unavailable: โปรไฟล์ไม่พร้อมใช้งาน - unfollow: เลิกติดตาม admin: account_actions: action: ทำการกระทำ @@ -906,6 +886,7 @@ th: warning: ระวังเป็นอย่างสูงกับข้อมูลนี้ อย่าแบ่งปันข้อมูลกับใครก็ตาม! your_token: โทเคนการเข้าถึงของคุณ auth: + apply_for_account: เข้ารายชื่อผู้รอ change_password: รหัสผ่าน delete_account: ลบบัญชี delete_account_html: หากคุณต้องการลบบัญชีของคุณ คุณสามารถ ดำเนินการต่อที่นี่ คุณจะได้รับการถามเพื่อการยืนยัน @@ -925,6 +906,7 @@ th: migrate_account: ย้ายไปยังบัญชีอื่น migrate_account_html: หากคุณต้องการเปลี่ยนเส้นทางบัญชีนี้ไปยังบัญชีอื่น คุณสามารถ กำหนดค่าบัญชีที่นี่ or_log_in_with: หรือเข้าสู่ระบบด้วย + privacy_policy_agreement_html: ฉันได้อ่านและเห็นด้วยกับ นโยบายความเป็นส่วนตัว providers: cas: CAS saml: SAML @@ -940,6 +922,8 @@ th: email_below_hint_html: หากที่อยู่อีเมลด้านล่างไม่ถูกต้อง คุณสามารถเปลี่ยนที่อยู่อีเมลที่นี่และรับอีเมลยืนยันใหม่ email_settings_hint_html: ส่งอีเมลยืนยันไปยัง %{email} แล้ว หากที่อยู่อีเมลนั้นไม่ถูกต้อง คุณสามารถเปลี่ยนที่อยู่อีเมลได้ในการตั้งค่าบัญชี title: การตั้งค่า + sign_up: + title: มาตั้งค่าของคุณใน %{domain} กันเลย status: account_status: สถานะบัญชี confirming: กำลังรอการยืนยันอีเมลให้เสร็จสมบูรณ์ @@ -1103,9 +1087,6 @@ th: index: title: โพสต์ที่กรองอยู่ footer: - developers: นักพัฒนา - more: เพิ่มเติม… - resources: ทรัพยากร trending_now: กำลังนิยม generic: all: ทั้งหมด @@ -1144,7 +1125,6 @@ th: following: รายการติดตาม muting: รายการซ่อน upload: อัปโหลด - in_memoriam_html: เพื่อระลึกถึง invites: delete: ปิดใช้งาน expired: หมดอายุแล้ว @@ -1196,6 +1176,8 @@ th: followers_count: ผู้ติดตาม ณ เวลาที่ย้าย incoming_migrations: การย้ายจากบัญชีอื่น incoming_migrations_html: เพื่อย้ายจากบัญชีอื่นไปยังบัญชีนี้ ก่อนอื่นคุณจำเป็นต้อง สร้างนามแฝงบัญชี + moved_msg: ตอนนี้กำลังเปลี่ยนเส้นทางบัญชีของคุณไปยัง %{acct} และกำลังย้ายผู้ติดตามของคุณไป + not_redirecting: บัญชีของคุณไม่ได้กำลังเปลี่ยนเส้นทางไปยังบัญชีอื่นใดในปัจจุบัน on_cooldown: คุณเพิ่งโยกย้ายบัญชีของคุณ ฟังก์ชันนี้จะพร้อมใช้งานอีกครั้งในอีก %{count} วัน past_migrations: การโยกย้ายที่ผ่านมา proceed_with_move: ย้ายผู้ติดตาม @@ -1310,21 +1292,7 @@ th: remove_selected_follows: เลิกติดตามผู้ใช้ที่เลือก status: สถานะบัญชี remote_follow: - acct: ป้อน username@domain ของคุณที่คุณต้องการกระทำจาก missing_resource: ไม่พบ URL การเปลี่ยนเส้นทางที่จำเป็นสำหรับบัญชีของคุณ - no_account_html: ไม่มีบัญชี? คุณสามารถ ลงทะเบียนที่นี่ - proceed: ดำเนินการต่อเพื่อติดตาม - prompt: 'คุณกำลังจะติดตาม:' - remote_interaction: - favourite: - proceed: ดำเนินการต่อเพื่อชื่นชอบ - prompt: 'คุณต้องการชื่นชอบโพสต์นี้:' - reblog: - proceed: ดำเนินการต่อเพื่อดัน - prompt: 'คุณต้องการดันโพสต์นี้:' - reply: - proceed: ดำเนินการต่อเพื่อตอบกลับ - prompt: 'คุณต้องการตอบกลับโพสต์นี้:' reports: errors: invalid_rules: ไม่ได้อ้างอิงกฎที่ถูกต้อง diff --git a/config/locales/tr.yml b/config/locales/tr.yml index c10aa6c6a..f18ccd234 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -2,46 +2,26 @@ tr: about: about_mastodon_html: Mastodon ücretsiz ve açık kaynaklı bir sosyal ağdır. Merkezileştirilmemiş yapısı sayesinde diğer ticari sosyal platformların aksine iletişimininizin tek bir firmada tutulmasının/yönetilmesinin önüne geçer. Güvendiğiniz bir sunucuyu seçerek oradaki kişilerle etkileşimde bulunabilirsiniz. Herkes kendi Mastodon sunucusunu kurabilir ve sorunsuz bir şekilde Mastodon sosyal ağına dahil edebilir. - api: API - apps: Mobil uygulamalar contact_missing: Ayarlanmadı contact_unavailable: Yok - documentation: Belgeler hosted_on: Mastodon %{domain} üzerinde barındırılıyor - privacy_policy: Gizlilik Politikası - source_code: Kaynak kodu - what_is_mastodon: Mastodon nedir? + title: Hakkında accounts: - choices_html: "%{name} kişisinin seçimleri:" - endorsements_hint: Takip ettiğiniz kişileri web arayüzünden onaylayabilirsiniz, burada görünecekler. - featured_tags_hint: Burada görüntülenecek belirli etiketlere sahip olabilirsiniz. follow: Takip et followers: one: Takipçi other: Takipçi following: Takip edilenler instance_actor_flash: Bu hesap, herhangi bir bireysel kullanıcı değil, sunucunun kendisini temsil etmek için kullanılan sanal bir aktördür. Birleştirme amacıyla kullanılmaktadır ve askıya alınmamalıdır. - joined: "%{date} tarihinde katıldı" last_active: son etkinlik link_verified_on: Bu bağlantının mülkiyeti %{date} tarihinde kontrol edildi - media: Medya - moved_html: "%{name}, %{new_profile_link} adresine taşındı:" - network_hidden: Bu bilgi mevcut değil nothing_here: Burada henüz hiçbir gönderi yok! - people_followed_by: Kullanıcı %{name}'in takip ettikleri - people_who_follow: Kullanıcı %{name}'i takip edenler pin_errors: following: Onaylamak istediğiniz kişiyi zaten takip ediyor olmalısınız posts: one: Gönderi other: Gönderiler posts_tab_heading: Gönderiler - posts_with_replies: Gönderiler ve yanıtlar - roles: - bot: Bot - group: Grup - unavailable: Profil kullanılamıyor - unfollow: Takibi bırak admin: account_actions: action: Eylemi gerçekleştir @@ -344,6 +324,7 @@ tr: listed: Listelenen new: title: Yeni özel emoji ekle + no_emoji_selected: Hiçbiri seçilmediğinden hiçbir emoji değiştirilmedi not_permitted: Bu işlemi gerçekleştirme izniniz yok overwrite: Üzerine yaz shortcode: Kısa kod @@ -812,6 +793,9 @@ tr: description_html: Bu bağlantılar şu anda sunucunuzun gönderilerini gördüğü hesaplarca bolca paylaşılıyor. Kullanıcılarınızın dünyada neler olduğunu görmesine yardımcı olabilir. Yayıncıyı onaylamadığınız sürece hiçbir bağlantı herkese açık yayınlanmaz. Tekil bağlantıları onaylayabilir veya reddedebilirsiniz. disallow: Bağlantıya izin verme disallow_provider: Yayıncıya izin verme + no_link_selected: Hiçbiri seçilmediğinden hiçbir bağlantı değiştirilmedi + publishers: + no_publisher_selected: Hiçbiri seçilmediğinden hiçbir yayıncı değiştirilmedi shared_by_over_week: one: Geçen hafta bir kişi paylaştı other: Geçen hafta %{count} kişi paylaştı @@ -831,6 +815,7 @@ tr: description_html: Bunlar, sunucunuzca bilinen, şu an sıklıkla paylaşılan ve beğenilen gönderilerdir. Yeni ve geri dönen kullanıcılarınızın takip etmesi için daha fazla kullanıcı bulmasına yararlar. Siz yazarı onaylamadığınız ve yazar hesabının başkalarına önerilmesine izin vermediği sürece gönderileri herkese açık olarak gösterilmez. Tekil gönderileri de onaylayabilir veya reddedebilirsiniz. disallow: Gönderi iznini kaldır disallow_account: Yazar iznini kaldır + no_status_selected: Hiçbiri seçilmediğinden hiçbir öne çıkan gönderi değiştirilmedi not_discoverable: Yazar keşfedilebilir olmamayı seçiyor shared_by: one: Bir defa paylaşıldı veya favorilendi @@ -846,6 +831,7 @@ tr: tag_uses_measure: toplam kullanım description_html: Bunlar sunucunuzun gördüğü gönderilerde sıklıkla gözüken etiketlerdir. Kullanıcılarınızın, şu an en çok ne hakkında konuşulduğunu görmesine yardımcı olurlar. Onaylamadığınız sürece etiketler herkese açık görünmez. listable: Önerilebilir + no_tag_selected: Hiçbiri seçilmediğinden hiçbir etiket değiştirilmedi not_listable: Önerilmeyecek not_trendable: Öne çıkanlar altında görünmeyecek not_usable: Kullanılamaz @@ -1169,9 +1155,6 @@ tr: hint: Bu filtre diğer ölçütlerden bağımsız olarak tekil gönderileri seçmek için uygulanıyor. Web arayüzünü kullanarak bu filtreye daha fazla gönderi ekleyebilirsiniz. title: Filtrelenmiş gönderiler footer: - developers: Geliştiriciler - more: Daha Fazla… - resources: Kaynaklar trending_now: Şu an gündemde generic: all: Tümü @@ -1214,7 +1197,6 @@ tr: following: Takip edilenler listesi muting: Susturulanlar listesi upload: Yükle - in_memoriam_html: Hatırada. invites: delete: Devre dışı bırak expired: Süresi dolmuş @@ -1394,22 +1376,7 @@ tr: remove_selected_follows: Seçili kullanıcıları takip etmeyi bırak status: Hesap durumu remote_follow: - acct: İşlem yapmak istediğiniz kullaniciadi@alanadini girin missing_resource: Hesabınız için gerekli yönlendirme URL'si bulunamadı - no_account_html: Hesabınız yok mu? Buradan kaydolabilirsiniz - proceed: Takip etmek için devam edin - prompt: Bu kullanıcıyı takip etmek istediğinize emin misiniz? - reason_html: "Bu adım neden gerekli?%{instance} kayıtlı olduğunuz sunucu olmayabilir, bu yüzden önce sizi kendi sunucunuza yönlendirmemiz gerekmektedir." - remote_interaction: - favourite: - proceed: Favorilere eklemek için devam edin - prompt: 'Bu gönderiyi favorilerinize eklemek istiyorsunuz:' - reblog: - proceed: Boostlamak için devam edin - prompt: 'Bu gönderiyi teşvik etmek istiyorsunuz:' - reply: - proceed: Yanıtlamak için devam edin - prompt: 'Bu gönderiyi yanıtlamak istiyorsunuz:' reports: errors: invalid_rules: geçerli kurallara işaret etmez diff --git a/config/locales/tt.yml b/config/locales/tt.yml index fe3c74ccd..40a0207e5 100644 --- a/config/locales/tt.yml +++ b/config/locales/tt.yml @@ -1,16 +1,10 @@ --- tt: about: - api: API contact_unavailable: Юк accounts: follow: Языл following: Язылгансыз - media: Медиа - roles: - bot: Бот - group: Törkem - unfollow: Язылынмау admin: accounts: avatar: Аватар @@ -158,8 +152,6 @@ tt: index: delete: Бетерү title: Сөзгечләр - footer: - more: Тагы… generic: all: Бөтенесе copy: Күчереп алу diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 67aff52c5..93c4724b4 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -2,19 +2,11 @@ uk: about: about_mastodon_html: 'Соціальна мережа майбутнього: жодної реклами, жодного корпоративного нагляду, етичний дизайн та децентралізація! З Mastodon ваші дані під вашим контролем!' - api: API - apps: Мобільні застосунки contact_missing: Не зазначено contact_unavailable: Недоступно - documentation: Документація hosted_on: Mastodon розміщено на %{domain} - privacy_policy: Політика конфіденційності - source_code: Вихідний код - what_is_mastodon: Що таке Mastodon? + title: Про програму accounts: - choices_html: 'Вподобання %{name}:' - endorsements_hint: У веб-інтерфейсі ви можете рекомендувати людей, на яких підписані, і вони з'являться тут. - featured_tags_hint: Ви можете вказати хештеги, які будуть відображатись тут. follow: Підписатися followers: few: Підписника @@ -23,15 +15,9 @@ uk: other: Підписників following: Підписаний(-а) instance_actor_flash: Цей обліковий запис є віртуальним персонажем, який використовується для показу самого сервера, а не будь-якого окремого користувача. Він використовується з метою федералізації і не повинен бути зупинений. - joined: Приєднався %{date} last_active: остання активність link_verified_on: Права власності на це посилання були перевірені %{date} - media: Медіа - moved_html: "%{name} переїхав до %{new_profile_link}:" - network_hidden: Ця інформація недоступна nothing_here: Тут нічого немає! - people_followed_by: Люди, на яких підписаний(-а) %{name} - people_who_follow: Підписники %{name} pin_errors: following: Ви повинні бути підписаним на людину, яку бажаєте схвалити posts: @@ -40,12 +26,6 @@ uk: one: Дмух other: Дмухів posts_tab_heading: Дмухи - posts_with_replies: Дмухи та відповіді - roles: - bot: Бот - group: Група - unavailable: Профіль недоступний - unfollow: Відписатися admin: account_actions: action: Виконати дію @@ -350,6 +330,7 @@ uk: listed: У списку new: title: Додати новий емодзі + no_emoji_selected: Жоден емоджі не було змінено, оскільки жоден не було вибрано not_permitted: Вам не дозволено виконувати цю дію overwrite: Переписати shortcode: Шорткод @@ -840,6 +821,9 @@ uk: description_html: Це посилання, з яких наразі багаторазово поширюються записи, з яких Ваш сервер бачить пости. Це може допомогти вашим користувачам дізнатися, що відбувається в світі. Посилання не відображається публічно, поки ви не затверджуєте його публікацію. Ви також можете дозволити або відхилити окремі посилання. disallow: Заборонити посилання disallow_provider: Заборонити публікатора + no_link_selected: Жодне посилання не було змінено, оскільки жодне не було вибрано + publishers: + no_publisher_selected: Жодного видавця не було змінено, оскільки жодного не було вибрано shared_by_over_week: few: Поширили %{count} людини за останній тиждень many: Поширили %{count} людей за останній тиждень @@ -861,6 +845,7 @@ uk: description_html: Це дописи, про які ваш сервер знає як такі, що в даний час є спільні і навіть ті, які зараз є дуже популярними. Це може допомогти вашим новим та старим користувачам, щоб знайти більше людей для слідування. Жоден запис не відображається публічно, поки ви не затверджуєте автора, і автор дозволяє іншим користувачам підписатися на це. Ви також можете дозволити або відхилити окремі повідомлення. disallow: Заборонити допис disallow_account: Заборонити автора + no_status_selected: Жодного популярного допису не було змінено, оскільки жодного не було вибрано not_discoverable: Автор не вирішив бути видимим shared_by: few: Поділитись або додати в улюблені %{friendly_count} рази @@ -878,6 +863,7 @@ uk: tag_uses_measure: всього використань description_html: Ці хештеґи, які бачить ваш сервер, в цей час з’являються у багатьох дописах. Це може допомогти вашим користувачам дізнатися про що люди наразі найбільше говорять. Жодні хештеґи публічно не показуються, доки ви їх не затвердите. listable: Може бути запропоновано + no_tag_selected: Жоден теґ не було змінено, оскільки жоден не було вибрано not_listable: Не буде запропоновано not_trendable: Не показуватиметься серед популярних not_usable: Неможливо використати @@ -1211,9 +1197,6 @@ uk: hint: Цей фільтр застосовується для вибору окремих дописів, незалежно від інших критеріїв. Ви можете додавати більше дописів до цього фільтра з вебінтерфейсу. title: Відфільтровані дописи footer: - developers: Розробникам - more: Більше… - resources: Ресурси trending_now: Актуальні generic: all: Усі @@ -1264,7 +1247,6 @@ uk: following: Підписки muting: Список глушення upload: Завантажити - in_memoriam_html: Пам'ятник. invites: delete: Деактивувати expired: Вийшов @@ -1446,22 +1428,7 @@ uk: remove_selected_follows: Не стежити за обраними користувачами status: Статус облікового запису remote_follow: - acct: Введіть username@domain, яким ви хочете підписатися missing_resource: Не вдалося знайти необхідний URL переадресації для вашого облікового запису - no_account_html: Не маєте облікового запису? Ви можете зареєструватися тут - proceed: Перейти до підписки - prompt: 'Ви хочете підписатися на:' - reason_html: "Чому це необхідно? %{instance} можливо, не є сервером, на якому ви зареєстровані, тому ми маємо спрямувати вас до вашого домашнього сервера." - remote_interaction: - favourite: - proceed: Перейти до додавання в улюблені - prompt: 'Ви хочете зробити улюбленим цей дмух:' - reblog: - proceed: Перейти до передмухування - prompt: 'Ви хочете передмухнути цей дмух:' - reply: - proceed: Перейти до відповіді - prompt: 'Ви хочете відповісти на цей дмух:' reports: errors: invalid_rules: не посилається на чинні правила diff --git a/config/locales/vi.yml b/config/locales/vi.yml index cac29b2a3..3252840ca 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -2,44 +2,24 @@ vi: about: about_mastodon_html: 'Mạng xã hội của tương lai: Không quảng cáo, không bán thông tin người dùng và phi tập trung! Làm chủ dữ liệu của bạn với Mastodon!' - api: API - apps: Apps contact_missing: Chưa thiết lập contact_unavailable: N/A - documentation: Tài liệu hosted_on: "%{domain} vận hành nhờ Mastodon" - privacy_policy: Chính sách bảo mật - source_code: Mã nguồn - what_is_mastodon: Mastodon là gì? + title: Giới thiệu accounts: - choices_html: "%{name} tôn vinh:" - endorsements_hint: Bạn có thể tôn vinh những người bạn theo dõi và họ sẽ hiển thị ở giao diện web. - featured_tags_hint: Bạn có thể cho biết những hashtag thường dùng ở đây. follow: Theo dõi followers: other: Người theo dõi following: Theo dõi instance_actor_flash: Tài khoản này được dùng để đại diện cho máy chủ và không phải là người thật. Đừng bao giờ vô hiệu hóa tài khoản này. - joined: Đã tham gia %{date} last_active: online link_verified_on: Liên kết này đã được xác minh quyền sở hữu vào %{date} - media: Media - moved_html: "%{name} đã chuyển sang %{new_profile_link}:" - network_hidden: Dữ liệu đã bị ẩn nothing_here: Trống trơn! - people_followed_by: Những người %{name} theo dõi - people_who_follow: Những người theo dõi %{name} pin_errors: following: Để tôn vinh người nào đó, bạn phải theo dõi họ trước posts: other: Tút posts_tab_heading: Tút - posts_with_replies: Trả lời - roles: - bot: Tài khoản Bot - group: Nhóm - unavailable: Tài khoản bị đình chỉ - unfollow: Ngưng theo dõi admin: account_actions: action: Thực hiện hành động @@ -341,6 +321,7 @@ vi: listed: Liệt kê new: title: Thêm Emoji mới + no_emoji_selected: Không có emoji nào thay đổi vì không có emoji nào được chọn not_permitted: Bạn không có quyền thực hiện việc này overwrite: Ghi đè shortcode: Viết tắt @@ -798,6 +779,9 @@ vi: description_html: Đây là những liên kết được chia sẻ nhiều trên máy chủ của bạn. Nó có thể giúp người dùng tìm hiểu những gì đang xảy ra trên thế giới. Không có liên kết nào được hiển thị công khai cho đến khi bạn duyệt nguồn đăng. Bạn cũng có thể cho phép hoặc từ chối từng liên kết riêng. disallow: Cấm liên kết disallow_provider: Cấm nguồn đăng + no_link_selected: Không có liên kết nào thay đổi vì không có liên kết nào được chọn + publishers: + no_publisher_selected: Không có nguồn đăng nào thay đổi vì không có nguồn đăng nào được chọn shared_by_over_week: other: "%{count} người chia sẻ tuần rồi" title: Liên kết xu hướng @@ -816,6 +800,7 @@ vi: description_html: Đây là những tút đang được đăng lại và yêu thích rất nhiều trên máy chủ của bạn. Nó có thể giúp người dùng mới và người dùng cũ tìm thấy nhiều người hơn để theo dõi. Không có tút nào được hiển thị công khai cho đến khi bạn cho phép người đăng và người cho phép đề xuất tài khoản của họ cho người khác. Bạn cũng có thể cho phép hoặc từ chối từng tút riêng. disallow: Cấm tút disallow_account: Cấm người đăng + no_status_selected: Không có tút thịnh hành nào thay đổi vì không có tút nào được chọn not_discoverable: Tác giả đã chọn không tham gia mục khám phá shared_by: other: Được thích và đăng lại %{friendly_count} lần @@ -830,6 +815,7 @@ vi: tag_uses_measure: tổng người dùng description_html: Đây là những hashtag đang xuất hiện trong rất nhiều tút trên máy chủ của bạn. Nó có thể giúp người dùng của bạn tìm ra những gì mọi người đang quan tâm nhiều nhất vào lúc này. Không có hashtag nào được hiển thị công khai cho đến khi bạn cho phép chúng. listable: Có thể đề xuất + no_tag_selected: Không có hashtag thịnh hành nào thay đổi vì không có hashtag nào được chọn not_listable: Không thể đề xuất not_trendable: Không xuất hiện xu hướng not_usable: Không được phép dùng @@ -1148,9 +1134,6 @@ vi: hint: Bộ lọc này áp dụng để chọn các tút riêng lẻ bất kể các tiêu chí khác. Bạn có thể thêm các tút khác vào bộ lọc này từ giao diện web. title: Những tút đã lọc footer: - developers: Phát triển - more: Nhiều hơn - resources: Quy tắc trending_now: Xu hướng generic: all: Tất cả @@ -1189,7 +1172,6 @@ vi: following: Danh sách người theo dõi muting: Danh sách người đã ẩn upload: Tải lên - in_memoriam_html: Tưởng Niệm invites: delete: Vô hiệu hóa expired: Hết hạn @@ -1368,22 +1350,7 @@ vi: remove_selected_follows: Ngưng theo dõi những người đã chọn status: Trạng thái của họ remote_follow: - acct: Nhập địa chỉ Mastodon của bạn (tên@máy chủ) missing_resource: Không tìm thấy URL chuyển hướng cho tài khoản của bạn - no_account_html: Nếu chưa có tài khoản, hãy đăng ký - proceed: Theo dõi - prompt: 'Bạn vừa yêu cầu theo dõi:' - reason_html: "Tại sao bước này là cần thiết? %{instance} có thể không phải là máy chủ nơi bạn đã đăng ký, vì vậy chúng tôi cần chuyển hướng bạn đến máy chủ của bạn trước." - remote_interaction: - favourite: - proceed: Thích tút - prompt: 'Bạn muốn thích tút này:' - reblog: - proceed: Tiếp tục đăng lại - prompt: Bạn có muốn đăng lại tút này? - reply: - proceed: Tiếp tục trả lời - prompt: Bạn có muốn trả lời tút này? reports: errors: invalid_rules: không đúng với quy tắc diff --git a/config/locales/zgh.yml b/config/locales/zgh.yml index fd5592c23..2da3b538c 100644 --- a/config/locales/zgh.yml +++ b/config/locales/zgh.yml @@ -1,17 +1,10 @@ --- zgh: - about: - what_is_mastodon: ⵎⴰ'ⵢⴷ ⵉⴳⴰⵏ ⵎⴰⵙⵜⵔⴷⵓⵎ? accounts: follow: ⴹⴼⵕ followers: one: ⴰⵎⴹⴼⴰⵕ other: ⵉⵎⴹⴼⴰⵕⵏ - media: ⵉⵙⵏⵖⵎⵉⵙⵏ - roles: - bot: ⴰⴱⵓⵜ - group: ⵜⴰⵔⴰⴱⴱⵓⵜ - unfollow: ⴽⴽⵙ ⴰⴹⴼⴼⵓⵕ admin: accounts: change_email: @@ -109,8 +102,6 @@ zgh: filters: index: delete: ⴽⴽⵙ - footer: - more: ⵓⴳⴳⴰⵔ… generic: all: ⵎⴰⵕⵕⴰ copy: ⵙⵏⵖⵍ diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 3ad48e4da..fd6925a9f 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -2,44 +2,23 @@ zh-CN: about: about_mastodon_html: Mastodon 是一个建立在开放式网络协议和自由、开源软件之上的社交网络,有着类似于电子邮件的分布式设计。 - api: API - apps: 移动应用 contact_missing: 未设定 contact_unavailable: 未公开 - documentation: 文档 hosted_on: 运行在 %{domain} 上的 Mastodon 站点 - privacy_policy: 隐私政策 - source_code: 源码 - what_is_mastodon: Mastodon 是什么? accounts: - choices_html: "%{name} 的推荐:" - endorsements_hint: 你可以在 web 界面上推荐你关注的人,他们会显示在这里。 - featured_tags_hint: 你可以精选一些话题标签展示在这里。 follow: 关注 followers: other: 关注者 following: 正在关注 instance_actor_flash: 该账号用来代表虚拟角色,并不代表个人用户,仅代表服务器本身。该账号用于达成互联之目的,不应该被停用。 - joined: 加入于 %{date} last_active: 最近活动 link_verified_on: 此链接的所有权已在 %{date} 检查 - media: 媒体 - moved_html: "%{name} 已经迁移到 %{new_profile_link}:" - network_hidden: 此信息不可用 nothing_here: 这里什么都没有! - people_followed_by: "%{name} 关注的人" - people_who_follow: 关注 %{name} 的人 pin_errors: following: 你必须关注你要推荐的人 posts: other: 嘟文 posts_tab_heading: 嘟文 - posts_with_replies: 嘟文和回复 - roles: - bot: 机器人 - group: 群组 - unavailable: 个人资料不可用 - unfollow: 取消关注 admin: account_actions: action: 执行操作 @@ -1148,9 +1127,6 @@ zh-CN: hint: 无论其他条件如何,此过滤器适用于选用个别嘟文。你可以从网页界面中向此过滤器加入更多嘟文。 title: 过滤的嘟文 footer: - developers: 开发者 - more: 更多… - resources: 资源 trending_now: 现在流行 generic: all: 全部 @@ -1189,7 +1165,6 @@ zh-CN: following: 关注列表 muting: 隐藏列表 upload: 上传 - in_memoriam_html: 谨此悼念。 invites: delete: 停用 expired: 已失效 @@ -1366,22 +1341,7 @@ zh-CN: remove_selected_follows: 取消关注所选用户 status: 帐户状态 remote_follow: - acct: 请输入你的“用户名@实例域名” missing_resource: 无法确定你的帐户的跳转 URL - no_account_html: 还没有账号?你可以注册一个 - proceed: 确认关注 - prompt: 你正准备关注: - reason_html: "为什么需要这个步骤? %{instance} 可能不是你所注册的服务器,所以我们需要先跳转到你所在的服务器。" - remote_interaction: - favourite: - proceed: 确认标记为喜欢 - prompt: 你想要标记此嘟文为喜欢: - reblog: - proceed: 确认转嘟 - prompt: 你想要转嘟此条: - reply: - proceed: 确认回复 - prompt: 你想要回复此嘟文: reports: errors: invalid_rules: 没有引用有效的规则 diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index 257537460..3724c4f4c 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -2,43 +2,23 @@ zh-HK: about: about_mastodon_html: Mastodon(萬象)是屬於未來的社交網路︰無廣告煩擾、無企業監控、設計講道義、分散無大台!立即重奪個人資料的控制權,使用 Mastodon 吧! - api: API - apps: 手機 App contact_missing: 未設定 contact_unavailable: 不適用 - documentation: 說明文件 hosted_on: 在 %{domain} 運作的 Mastodon 伺服器 - source_code: 源代碼 - what_is_mastodon: Mastodon (萬象)是甚麼? accounts: - choices_html: "%{name} 的選擇:" - endorsements_hint: 你可以推薦正在關注的人,他們會被顯示在你的個人頁面。 - featured_tags_hint: 你可以推薦不同標籤,它們也會在此處出現。 follow: 關注 followers: other: 關注者 following: 正在關注 instance_actor_flash: 這個帳戶是結盟用的本伺服器的虛擬象徵,並不代表任何個別用戶。請不要把帳號停權。 - joined: 於 %{date} 加入 last_active: 上次活躍時間 link_verified_on: 此連結的所有權已在 %{date} 檢查過 - media: 媒體 - moved_html: "%{name} 已經轉移到 %{new_profile_link}:" - network_hidden: 此信息不可用 nothing_here: 暫時未有內容可以顯示! - people_followed_by: "%{name} 關注的人" - people_who_follow: 關注 %{name} 的人 pin_errors: following: 你只能推薦你正在關注的使用者。 posts: other: 文章 posts_tab_heading: 文章 - posts_with_replies: 包含回覆的文章 - roles: - bot: 機械人 - group: 群組 - unavailable: 無法取得個人檔案 - unfollow: 取消關注 admin: account_actions: action: 執行動作 @@ -763,9 +743,6 @@ zh-HK: new: title: 新增篩選器 footer: - developers: 開發者 - more: 更多...... - resources: 項目 trending_now: 今期流行 generic: all: 全部 @@ -795,7 +772,6 @@ zh-HK: following: 你所關注的用戶名單 muting: 靜音名單 upload: 上載 - in_memoriam_html: 謹此悼念。 invites: delete: 停用 expired: 已失效 @@ -965,22 +941,7 @@ zh-HK: remove_selected_follows: 取消關注所選用戶 status: 帳戶帖文 remote_follow: - acct: 請輸入你想使用的「使用者名稱@域名」身份 missing_resource: 無法找到你用戶的轉接網址 - no_account_html: 沒有帳號?你可以在這裏註冊 - proceed: 下一步 - prompt: 你希望關注︰ - reason_html: "為甚麼有必要做這個步驟?因為%{instance}未必是你註冊的伺服器,所以我們首先需要將你帶回你的伺服器。" - remote_interaction: - favourite: - proceed: 下一步 - prompt: 你要求把這篇文章加入最愛: - reblog: - proceed: 繼續轉嘟 - prompt: 你想轉推: - reply: - proceed: 下一步 - prompt: 你想回覆: scheduled_statuses: over_daily_limit: 你已經超越了當天排定發文的限額 (%{limit}) over_total_limit: 你已經超越了排定發文的限額 (%{limit}) diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 7f9fbbea1..a469b9369 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -2,44 +2,24 @@ zh-TW: about: about_mastodon_html: Mastodon (長毛象)是一個自由、開放原始碼的社群網站。它是一個分散式的服務,避免您的通訊被單一商業機構壟斷操控。請您選擇一家您信任的 Mastodon 站點,在上面建立帳號,然後您就可以和任一 Mastodon 站點上的使用者互通,享受無縫的社群網路交流。 - api: API - apps: 行動應用程式 contact_missing: 未設定 contact_unavailable: 未公開 - documentation: 文件 hosted_on: 在 %{domain} 運作的 Mastodon 站點 - privacy_policy: 隱私權政策 - source_code: 原始碼 - what_is_mastodon: 什麼是 Mastodon? + title: 關於本站 accounts: - choices_html: "%{name} 的選擇:" - endorsements_hint: 推薦您已經跟隨的人,將他們釘選在您的個人頁面。 - featured_tags_hint: 您可以推薦不同主題標籤,它們也會在此處出現。 follow: 跟隨 followers: other: 跟隨者 following: 正在跟隨 instance_actor_flash: 這個帳號是一個用來代表此伺服器的虛擬執行者,而非真實使用者。它用途為聯邦宇宙且不應被停權。 - joined: 加入於 %{date} last_active: 上次活躍時間 link_verified_on: 此連結的所有權已在 %{date} 檢查過 - media: 媒體 - moved_html: "%{name} 已經搬遷到 %{new_profile_link}:" - network_hidden: 此訊息不可用 nothing_here: 暫時沒有內容可供顯示! - people_followed_by: "%{name} 跟隨的人" - people_who_follow: 跟隨 %{name} 的人 pin_errors: following: 您只能推薦您正在跟隨的使用者。 posts: other: 嘟文 posts_tab_heading: 嘟文 - posts_with_replies: 嘟文與回覆 - roles: - bot: 機器人 - group: 群組 - unavailable: 無法取得個人檔案 - unfollow: 取消跟隨 admin: account_actions: action: 執行動作 @@ -341,6 +321,7 @@ zh-TW: listed: 已顯示 new: title: 加入新的自訂表情符號 + no_emoji_selected: 未選取任何 emoji,因此未變更 not_permitted: 您無權執行此操作 overwrite: 覆蓋 shortcode: 短代碼 @@ -797,9 +778,12 @@ zh-TW: links: allow: 允許連結 allow_provider: 允許發行者 - description_html: 這些連結是正在被您伺服器上看到該嘟文之帳號大量分享。這些連結可以幫助您的使用者探索現在世界上正在發生的事情。除非您核准該發佈者,連結將不被公開展示。您也可以核准或駁回個別連結。 + description_html: 這些連結是正在被您伺服器上看到該嘟文之帳號大量分享。這些連結可以幫助您的使用者探索現在世界上正在發生的事情。除非您核准該發行者,連結將不被公開展示。您也可以核准或駁回個別連結。 disallow: 不允許連結 disallow_provider: 不允許發行者 + no_link_selected: 未選取任何鏈結,因此未變更 + publishers: + no_publisher_selected: 未選取任何發行者,因此未變更 shared_by_over_week: other: 上週被 %{count} 名使用者分享 title: 熱門連結 @@ -818,6 +802,7 @@ zh-TW: description_html: 這些是您伺服器上已知被正在大量分享及加入最愛之嘟文。這些嘟文能幫助您伺服器上舊雨新知發現更多帳號來跟隨。除非您核准該作者且作者允許他們的帳號被推薦至其他人,嘟文將不被公開展示。您可以核准或駁回個別嘟文。 disallow: 不允許嘟文 disallow_account: 不允許作者 + no_status_selected: 未選取任何熱門嘟文,因此未變更 not_discoverable: 嘟文作者選擇不被發現 shared_by: other: 分享過或/及收藏過 %{friendly_count} 次 @@ -832,6 +817,7 @@ zh-TW: tag_uses_measure: 總使用次數 description_html: 這些主題標籤正在您的伺服器上大量嘟文中出現。這些主題標籤能幫助您的使用者發現人們正集中討論的內容。除非您核准,主題標籤將不被公開展示。 listable: 能被建議 + no_tag_selected: 未選取任何主題標籤,因此未變更 not_listable: 不能被建議 not_trendable: 不會登上熱門 not_usable: 不可被使用 @@ -1150,9 +1136,6 @@ zh-TW: hint: 此過濾器會套用至所選之各別嘟文,不管它們有無符合其他條件。您可以從網頁介面中將更多嘟文加入至此過濾器。 title: 已過濾之嘟文 footer: - developers: 開發者 - more: 更多...... - resources: 資源 trending_now: 現正熱門 generic: all: 全部 @@ -1191,7 +1174,6 @@ zh-TW: following: 您關注的使用者名單 muting: 您靜音的使用者名單 upload: 上傳 - in_memoriam_html: 謹此悼念。 invites: delete: 停用 expired: 已失效 @@ -1370,22 +1352,7 @@ zh-TW: remove_selected_follows: 取消跟隨所選使用者 status: 帳號狀態 remote_follow: - acct: 請輸入您的使用者名稱@站點網域 missing_resource: 無法找到資源 - no_account_html: 還沒有帳號?您可以於這裡註冊 - proceed: 下一步 - prompt: 您希望跟隨: - reason_html: "為什麼要經過這個步驟?因為%{instance}未必是您註冊的伺服器,我們需要先將您帶回您駐在的伺服器。" - remote_interaction: - favourite: - proceed: 加入到最愛 - prompt: 您欲將此嘟文加入最愛 - reblog: - proceed: 確認轉嘟 - prompt: 您想轉嘟此嘟文: - reply: - proceed: 確認回覆 - prompt: 您想回覆此嘟文 reports: errors: invalid_rules: 未引用有效規則 From c60f9cb86568f65d8e743b41c482163ef1ceaf99 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Oct 2022 20:48:29 +0900 Subject: [PATCH 523/652] Bump npmlog from 6.0.2 to 7.0.0 (#19376) Bumps [npmlog](https://github.com/npm/npmlog) from 6.0.2 to 7.0.0. - [Release notes](https://github.com/npm/npmlog/releases) - [Changelog](https://github.com/npm/npmlog/blob/main/CHANGELOG.md) - [Commits](https://github.com/npm/npmlog/compare/v6.0.2...v7.0.0) --- updated-dependencies: - dependency-name: npmlog dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 75 +++++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 61 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index b1f3054ce..fc84309e1 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,7 @@ "marky": "^1.2.5", "mini-css-extract-plugin": "^1.6.2", "mkdirp": "^1.0.4", - "npmlog": "^6.0.2", + "npmlog": "^7.0.0", "object-assign": "^4.1.1", "object-fit-images": "^3.2.3", "object.values": "^1.1.5", diff --git a/yarn.lock b/yarn.lock index 5711902e4..7ec3b2846 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2215,6 +2215,13 @@ abab@^2.0.6: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + abortcontroller-polyfill@^1.7.5: version "1.7.5" resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz#6738495f4e901fbb57b6c0611d0c75f76c485bed" @@ -2419,13 +2426,13 @@ aproba@^1.1.1: resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -are-we-there-yet@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz#ba20bd6b553e31d62fc8c31bd23d22b95734390d" - integrity sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw== +are-we-there-yet@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-4.0.0.tgz#3ff397dc14f08b52dd8b2a64d3cee154ab8760d2" + integrity sha512-nSXlV+u3vtVjRgihdTzbfWYzxPWGo424zPgQbHD0ZqIla3jqYAewDcvee0Ua2hjS5IfTAmjGlx1Jf0PKwjZDEw== dependencies: delegates "^1.0.0" - readable-stream "^3.6.0" + readable-stream "^4.1.0" argparse@^1.0.7: version "1.0.10" @@ -2814,6 +2821,11 @@ base64-js@^1.0.2: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -3075,6 +3087,14 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + bufferutil@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.6.tgz#ebd6c67c7922a0e902f053e5d8be5ec850e48433" @@ -4808,6 +4828,11 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + eventemitter3@^4.0.0: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" @@ -4818,6 +4843,11 @@ events@^3.0.0: resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== +events@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + eventsource@^1.0.7: version "1.1.1" resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.1.tgz#4544a35a57d7120fba4fa4c86cb4023b2c09df2f" @@ -5303,10 +5333,10 @@ fuzzysort@^1.9.0: resolved "https://registry.yarnpkg.com/fuzzysort/-/fuzzysort-1.9.0.tgz#d36d27949eae22340bb6f7ba30ea6751b92a181c" integrity sha512-MOxCT0qLTwLqmEwc7UtU045RKef7mc8Qz8eR4r2bLNEq9dy/c3ZKMEFp6IEst69otkQdFZ4FfgH2dmZD+ddX1g== -gauge@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" - integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== +gauge@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-5.0.0.tgz#e270ca9d97dae84abf64e5277ef1ebddc7dd1e2f" + integrity sha512-0s5T5eciEG7Q3ugkxAkFtaDhrrhXsCRivA5y8C9WMHWuI8UlMOJg7+Iwf7Mccii+Dfs3H5jHepU0joPVyQU0Lw== dependencies: aproba "^1.0.3 || ^2.0.0" color-support "^1.1.3" @@ -5859,6 +5889,11 @@ ieee754@^1.1.4: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== +ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + iferr@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" @@ -7893,14 +7928,14 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -npmlog@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" - integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== +npmlog@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-7.0.0.tgz#09731bbb33019813704d6635b55f35a1b1784b34" + integrity sha512-p+OVCIQx1Rehplt2DNgBERrKtE5Ej0/rqdcNz5PbohpKHDPprGAl142qQuozmzWUM9uNjvstEO+A92CwytJPcQ== dependencies: - are-we-there-yet "^3.0.0" + are-we-there-yet "^4.0.0" console-control-strings "^1.1.0" - gauge "^4.0.3" + gauge "^5.0.0" set-blocking "^2.0.0" nth-check@^1.0.2: @@ -9515,6 +9550,16 @@ readable-stream@^3.0.0, readable-stream@^3.0.6, readable-stream@^3.6.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.2.0.tgz#a7ef523d3b39e4962b0db1a1af22777b10eeca46" + integrity sha512-gJrBHsaI3lgBoGMW/jHZsQ/o/TIWiu5ENCJG1BB7fuCKzpFM8GaS2UoBVt9NO+oI+3FcrBNbUkl3ilDe09aY4A== + dependencies: + abort-controller "^3.0.0" + buffer "^6.0.3" + events "^3.3.0" + process "^0.11.10" + readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" From abf6c87ee8b57e09dca5f5b1fe1839a314e1aa46 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 21 Oct 2022 14:07:02 +0200 Subject: [PATCH 524/652] Fix remote account in contact account setting not being used (#19351) --- app/presenters/instance_presenter.rb | 4 +++- app/validators/existing_username_validator.rb | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/app/presenters/instance_presenter.rb b/app/presenters/instance_presenter.rb index 43594a280..fba3cc734 100644 --- a/app/presenters/instance_presenter.rb +++ b/app/presenters/instance_presenter.rb @@ -12,7 +12,9 @@ class InstancePresenter < ActiveModelSerializers::Model end def account - Account.find_local(Setting.site_contact_username.strip.gsub(/\A@/, '')) + username, domain = Setting.site_contact_username.strip.gsub(/\A@/, '').split('@', 2) + domain = nil if TagManager.instance.local_domain?(domain) + Account.find_remote(username, domain) if username.present? end end diff --git a/app/validators/existing_username_validator.rb b/app/validators/existing_username_validator.rb index 8f7d96b8e..1c5596821 100644 --- a/app/validators/existing_username_validator.rb +++ b/app/validators/existing_username_validator.rb @@ -6,7 +6,7 @@ class ExistingUsernameValidator < ActiveModel::EachValidator usernames_and_domains = begin value.split(',').map do |str| - username, domain = str.strip.gsub(/\A@/, '').split('@') + username, domain = str.strip.gsub(/\A@/, '').split('@', 2) domain = nil if TagManager.instance.local_domain?(domain) next if username.blank? @@ -21,8 +21,8 @@ class ExistingUsernameValidator < ActiveModel::EachValidator if options[:multiple] record.errors.add(attribute, I18n.t('existing_username_validator.not_found_multiple', usernames: usernames_with_no_accounts.join(', '))) if usernames_with_no_accounts.any? - else - record.errors.add(attribute, I18n.t('existing_username_validator.not_found')) if usernames_with_no_accounts.any? || usernames_and_domains.size > 1 + elsif usernames_with_no_accounts.any? || usernames_and_domains.size > 1 + record.errors.add(attribute, I18n.t('existing_username_validator.not_found')) end end end From 7c152acb2cc545a87610de349a94e14f45fbed5d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 22 Oct 2022 11:44:41 +0200 Subject: [PATCH 525/652] Change settings area to be separated into categories in admin UI (#19407) And update all descriptions --- .../admin/settings/about_controller.rb | 9 ++ .../admin/settings/appearance_controller.rb | 9 ++ .../admin/settings/branding_controller.rb | 9 ++ .../settings/content_retention_controller.rb | 9 ++ .../admin/settings/discovery_controller.rb | 9 ++ .../settings/registrations_controller.rb | 9 ++ app/controllers/admin/settings_controller.rb | 10 +- .../admin/site_uploads_controller.rb | 2 +- app/helpers/admin/settings_helper.rb | 7 -- app/javascript/styles/mastodon/admin.scss | 82 +++++++++++--- .../styles/mastodon/components.scss | 5 + app/javascript/styles/mastodon/forms.scss | 16 ++- app/models/form/admin_settings.rb | 57 +++++----- .../rest/extended_description_serializer.rb | 12 ++- app/views/admin/settings/about/show.html.haml | 33 ++++++ .../admin/settings/appearance/show.html.haml | 34 ++++++ .../admin/settings/branding/show.html.haml | 39 +++++++ .../settings/content_retention/show.html.haml | 22 ++++ .../admin/settings/discovery/show.html.haml | 40 +++++++ app/views/admin/settings/edit.html.haml | 102 ------------------ .../settings/registrations/show.html.haml | 27 +++++ .../admin/settings/shared/_links.html.haml | 8 ++ app/views/layouts/admin.html.haml | 11 +- config/locales/en.yml | 87 +++++---------- config/locales/simple_form.en.yml | 37 +++++++ config/navigation.rb | 2 +- config/routes.rb | 13 ++- .../settings/branding_controller_spec.rb | 53 +++++++++ .../admin/settings_controller_spec.rb | 71 ------------ 29 files changed, 528 insertions(+), 296 deletions(-) create mode 100644 app/controllers/admin/settings/about_controller.rb create mode 100644 app/controllers/admin/settings/appearance_controller.rb create mode 100644 app/controllers/admin/settings/branding_controller.rb create mode 100644 app/controllers/admin/settings/content_retention_controller.rb create mode 100644 app/controllers/admin/settings/discovery_controller.rb create mode 100644 app/controllers/admin/settings/registrations_controller.rb create mode 100644 app/views/admin/settings/about/show.html.haml create mode 100644 app/views/admin/settings/appearance/show.html.haml create mode 100644 app/views/admin/settings/branding/show.html.haml create mode 100644 app/views/admin/settings/content_retention/show.html.haml create mode 100644 app/views/admin/settings/discovery/show.html.haml delete mode 100644 app/views/admin/settings/edit.html.haml create mode 100644 app/views/admin/settings/registrations/show.html.haml create mode 100644 app/views/admin/settings/shared/_links.html.haml create mode 100644 spec/controllers/admin/settings/branding_controller_spec.rb delete mode 100644 spec/controllers/admin/settings_controller_spec.rb diff --git a/app/controllers/admin/settings/about_controller.rb b/app/controllers/admin/settings/about_controller.rb new file mode 100644 index 000000000..86327fe39 --- /dev/null +++ b/app/controllers/admin/settings/about_controller.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class Admin::Settings::AboutController < Admin::SettingsController + private + + def after_update_redirect_path + admin_settings_about_path + end +end diff --git a/app/controllers/admin/settings/appearance_controller.rb b/app/controllers/admin/settings/appearance_controller.rb new file mode 100644 index 000000000..39b2448d8 --- /dev/null +++ b/app/controllers/admin/settings/appearance_controller.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class Admin::Settings::AppearanceController < Admin::SettingsController + private + + def after_update_redirect_path + admin_settings_appearance_path + end +end diff --git a/app/controllers/admin/settings/branding_controller.rb b/app/controllers/admin/settings/branding_controller.rb new file mode 100644 index 000000000..4a4d76f49 --- /dev/null +++ b/app/controllers/admin/settings/branding_controller.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class Admin::Settings::BrandingController < Admin::SettingsController + private + + def after_update_redirect_path + admin_settings_branding_path + end +end diff --git a/app/controllers/admin/settings/content_retention_controller.rb b/app/controllers/admin/settings/content_retention_controller.rb new file mode 100644 index 000000000..b88336a2c --- /dev/null +++ b/app/controllers/admin/settings/content_retention_controller.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class Admin::Settings::ContentRetentionController < Admin::SettingsController + private + + def after_update_redirect_path + admin_settings_content_retention_path + end +end diff --git a/app/controllers/admin/settings/discovery_controller.rb b/app/controllers/admin/settings/discovery_controller.rb new file mode 100644 index 000000000..be4b57f79 --- /dev/null +++ b/app/controllers/admin/settings/discovery_controller.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class Admin::Settings::DiscoveryController < Admin::SettingsController + private + + def after_update_redirect_path + admin_settings_discovery_path + end +end diff --git a/app/controllers/admin/settings/registrations_controller.rb b/app/controllers/admin/settings/registrations_controller.rb new file mode 100644 index 000000000..b4a74349c --- /dev/null +++ b/app/controllers/admin/settings/registrations_controller.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class Admin::Settings::RegistrationsController < Admin::SettingsController + private + + def after_update_redirect_path + admin_settings_registrations_path + end +end diff --git a/app/controllers/admin/settings_controller.rb b/app/controllers/admin/settings_controller.rb index dc1c79b7f..338a3638c 100644 --- a/app/controllers/admin/settings_controller.rb +++ b/app/controllers/admin/settings_controller.rb @@ -2,7 +2,7 @@ module Admin class SettingsController < BaseController - def edit + def show authorize :settings, :show? @admin_settings = Form::AdminSettings.new @@ -15,14 +15,18 @@ module Admin if @admin_settings.save flash[:notice] = I18n.t('generic.changes_saved_msg') - redirect_to edit_admin_settings_path + redirect_to after_update_redirect_path else - render :edit + render :show end end private + def after_update_redirect_path + raise NotImplementedError + end + def settings_params params.require(:form_admin_settings).permit(*Form::AdminSettings::KEYS) end diff --git a/app/controllers/admin/site_uploads_controller.rb b/app/controllers/admin/site_uploads_controller.rb index cacecedb0..a5d2cf41c 100644 --- a/app/controllers/admin/site_uploads_controller.rb +++ b/app/controllers/admin/site_uploads_controller.rb @@ -9,7 +9,7 @@ module Admin @site_upload.destroy! - redirect_to edit_admin_settings_path, notice: I18n.t('admin.site_uploads.destroyed_msg') + redirect_to admin_settings_path, notice: I18n.t('admin.site_uploads.destroyed_msg') end private diff --git a/app/helpers/admin/settings_helper.rb b/app/helpers/admin/settings_helper.rb index baf14ab25..a133b4e7d 100644 --- a/app/helpers/admin/settings_helper.rb +++ b/app/helpers/admin/settings_helper.rb @@ -1,11 +1,4 @@ # frozen_string_literal: true module Admin::SettingsHelper - def site_upload_delete_hint(hint, var) - upload = SiteUpload.find_by(var: var.to_s) - return hint unless upload - - link = link_to t('admin.site_uploads.delete'), admin_site_upload_path(upload), data: { method: :delete } - safe_join([hint, link], '
'.html_safe) - end end diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index 1c5494cde..affe1c79c 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -188,21 +188,70 @@ $content-width: 840px; padding-top: 30px; } - &-heading { - display: flex; + &__heading { padding-bottom: 36px; border-bottom: 1px solid lighten($ui-base-color, 8%); - margin: -15px -15px 40px 0; - flex-wrap: wrap; - align-items: center; - justify-content: space-between; + margin-bottom: 40px; - & > * { - margin-top: 15px; - margin-right: 15px; + &__row { + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + margin: -15px -15px 0 0; + + & > * { + margin-top: 15px; + margin-right: 15px; + } } - &-actions { + &__tabs { + margin-top: 30px; + margin-bottom: -31px; + + & > div { + display: flex; + gap: 10px; + } + + a { + font-size: 14px; + display: inline-flex; + align-items: center; + padding: 7px 15px; + border-radius: 4px; + color: $darker-text-color; + text-decoration: none; + position: relative; + font-weight: 500; + gap: 5px; + white-space: nowrap; + + &.selected { + font-weight: 700; + color: $primary-text-color; + + &::after { + content: ""; + display: block; + width: 100%; + border-bottom: 1px solid $ui-highlight-color; + position: absolute; + bottom: -5px; + left: 0; + } + } + + &:hover, + &:focus, + &:active { + background: lighten($ui-base-color, 4%); + } + } + } + + &__actions { display: inline-flex; & > :not(:first-child) { @@ -228,11 +277,7 @@ $content-width: 840px; color: $secondary-text-color; font-size: 24px; line-height: 36px; - font-weight: 400; - - @media screen and (max-width: $no-columns-breakpoint) { - font-weight: 700; - } + font-weight: 700; } h3 { @@ -437,6 +482,11 @@ body, } } + & > div { + display: flex; + gap: 5px; + } + strong { font-weight: 500; text-transform: uppercase; @@ -1143,7 +1193,7 @@ a.name-tag, path:first-child { fill: rgba($highlight-text-color, 0.25) !important; - fill-opacity: 1 !important; + fill-opacity: 100% !important; } path:last-child { diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 587eba663..5d0ff8536 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -29,6 +29,11 @@ background: transparent; padding: 0; cursor: pointer; + text-decoration: none; + + &--destructive { + color: $error-value-color; + } &:hover, &:active { diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss index 69a0b22d6..25c9c9fe5 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -254,7 +254,7 @@ code { & > label { font-family: inherit; - font-size: 16px; + font-size: 14px; color: $primary-text-color; display: block; font-weight: 500; @@ -291,6 +291,20 @@ code { .input:last-child { margin-bottom: 0; } + + &__thumbnail { + display: block; + margin: 0; + margin-bottom: 10px; + max-width: 100%; + height: auto; + border-radius: 4px; + background: url("images/void.png"); + + &:last-child { + margin-bottom: 0; + } + } } .fields-row { diff --git a/app/models/form/admin_settings.rb b/app/models/form/admin_settings.rb index b6bb3d795..957a32b7c 100644 --- a/app/models/form/admin_settings.rb +++ b/app/models/form/admin_settings.rb @@ -8,7 +8,6 @@ class Form::AdminSettings site_contact_email site_title site_short_description - site_description site_extended_description site_terms registrations_mode @@ -53,45 +52,55 @@ class Form::AdminSettings attr_accessor(*KEYS) - validates :site_short_description, :site_description, html: { wrap_with: :p } - validates :site_extended_description, :site_terms, :closed_registrations_message, html: true - validates :registrations_mode, inclusion: { in: %w(open approved none) } - validates :site_contact_email, :site_contact_username, presence: true - validates :site_contact_username, existing_username: true - validates :bootstrap_timeline_accounts, existing_username: { multiple: true } - validates :show_domain_blocks, inclusion: { in: %w(disabled users all) } - validates :show_domain_blocks_rationale, inclusion: { in: %w(disabled users all) } - validates :media_cache_retention_period, :content_cache_retention_period, :backups_retention_period, numericality: { only_integer: true }, allow_blank: true + validates :registrations_mode, inclusion: { in: %w(open approved none) }, if: -> { defined?(@registrations_mode) } + validates :site_contact_email, :site_contact_username, presence: true, if: -> { defined?(@site_contact_username) || defined?(@site_contact_email) } + validates :site_contact_username, existing_username: true, if: -> { defined?(@site_contact_username) } + validates :bootstrap_timeline_accounts, existing_username: { multiple: true }, if: -> { defined?(@bootstrap_timeline_accounts) } + validates :show_domain_blocks, inclusion: { in: %w(disabled users all) }, if: -> { defined?(@show_domain_blocks) } + validates :show_domain_blocks_rationale, inclusion: { in: %w(disabled users all) }, if: -> { defined?(@show_domain_blocks_rationale) } + validates :media_cache_retention_period, :content_cache_retention_period, :backups_retention_period, numericality: { only_integer: true }, allow_blank: true, if: -> { defined?(@media_cache_retention_period) || defined?(@content_cache_retention_period) || defined?(@backups_retention_period) } + validates :site_short_description, length: { maximum: 200 }, if: -> { defined?(@site_short_description) } - def initialize(_attributes = {}) - super - initialize_attributes + KEYS.each do |key| + define_method(key) do + return instance_variable_get("@#{key}") if instance_variable_defined?("@#{key}") + + stored_value = begin + if UPLOAD_KEYS.include?(key) + SiteUpload.where(var: key).first_or_initialize(var: key) + else + Setting.public_send(key) + end + end + + instance_variable_set("@#{key}", stored_value) + end + end + + UPLOAD_KEYS.each do |key| + define_method("#{key}=") do |file| + value = public_send(key) + value.file = file + end end def save return false unless valid? KEYS.each do |key| - value = instance_variable_get("@#{key}") + next unless instance_variable_defined?("@#{key}") - if UPLOAD_KEYS.include?(key) && !value.nil? - upload = SiteUpload.where(var: key).first_or_initialize(var: key) - upload.update(file: value) + if UPLOAD_KEYS.include?(key) + public_send(key).save else setting = Setting.where(var: key).first_or_initialize(var: key) - setting.update(value: typecast_value(key, value)) + setting.update(value: typecast_value(key, instance_variable_get("@#{key}"))) end end end private - def initialize_attributes - KEYS.each do |key| - instance_variable_set("@#{key}", Setting.public_send(key)) if instance_variable_get("@#{key}").nil? - end - end - def typecast_value(key, value) if BOOLEAN_KEYS.include?(key) value == '1' diff --git a/app/serializers/rest/extended_description_serializer.rb b/app/serializers/rest/extended_description_serializer.rb index 0c3649033..c0fa3450d 100644 --- a/app/serializers/rest/extended_description_serializer.rb +++ b/app/serializers/rest/extended_description_serializer.rb @@ -8,6 +8,16 @@ class REST::ExtendedDescriptionSerializer < ActiveModel::Serializer end def content - object.text + if object.text.present? + markdown.render(object.text) + else + '' + end + end + + private + + def markdown + @markdown ||= Redcarpet::Markdown.new(Redcarpet::Render::HTML) end end diff --git a/app/views/admin/settings/about/show.html.haml b/app/views/admin/settings/about/show.html.haml new file mode 100644 index 000000000..366d213f6 --- /dev/null +++ b/app/views/admin/settings/about/show.html.haml @@ -0,0 +1,33 @@ +- content_for :header_tags do + = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' + +- content_for :page_title do + = t('admin.settings.about.title') + +- content_for :heading do + %h2= t('admin.settings.title') + = render partial: 'admin/settings/shared/links' + += simple_form_for @admin_settings, url: admin_settings_about_path, html: { method: :patch } do |f| + = render 'shared/error_messages', object: @admin_settings + + %p.lead= t('admin.settings.about.preamble') + + .fields-group + = f.input :site_extended_description, wrapper: :with_block_label, as: :text, input_html: { rows: 8 } + + %p.hint + = t 'admin.settings.about.rules_hint' + = link_to t('admin.settings.about.manage_rules'), admin_rules_path + + .fields-row + .fields-row__column.fields-row__column-6.fields-group + = f.input :show_domain_blocks, wrapper: :with_label, collection: %i(disabled users all), label_method: lambda { |value| t("admin.settings.domain_blocks.#{value}") }, include_blank: false, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li' + .fields-row__column.fields-row__column-6.fields-group + = f.input :show_domain_blocks_rationale, wrapper: :with_label, collection: %i(disabled users all), label_method: lambda { |value| t("admin.settings.domain_blocks.#{value}") }, include_blank: false, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li' + + .fields-group + = f.input :site_terms, wrapper: :with_block_label, as: :text, input_html: { rows: 8 } + + .actions + = f.button :button, t('generic.save_changes'), type: :submit diff --git a/app/views/admin/settings/appearance/show.html.haml b/app/views/admin/settings/appearance/show.html.haml new file mode 100644 index 000000000..d321c4b04 --- /dev/null +++ b/app/views/admin/settings/appearance/show.html.haml @@ -0,0 +1,34 @@ +- content_for :header_tags do + = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' + +- content_for :page_title do + = t('admin.settings.appearance.title') + +- content_for :heading do + %h2= t('admin.settings.title') + = render partial: 'admin/settings/shared/links' + += simple_form_for @admin_settings, url: admin_settings_appearance_path, html: { method: :patch } do |f| + = render 'shared/error_messages', object: @admin_settings + + %p.lead= t('admin.settings.appearance.preamble') + + .fields-group + = f.input :theme, collection: Themes.instance.names, label_method: lambda { |theme| I18n.t("themes.#{theme}", default: theme) }, wrapper: :with_label, include_blank: false + + .fields-group + = f.input :custom_css, wrapper: :with_block_label, as: :text, input_html: { rows: 8 } + + .fields-row + .fields-row__column.fields-row__column-6.fields-group + = f.input :mascot, as: :file, wrapper: :with_block_label + + .fields-row__column.fields-row__column-6.fields-group + - if @admin_settings.mascot.persisted? + = image_tag @admin_settings.mascot.file.url, class: 'fields-group__thumbnail' + = link_to admin_site_upload_path(@admin_settings.mascot), data: { method: :delete }, class: 'link-button link-button--destructive' do + = fa_icon 'trash fw' + = t('admin.site_uploads.delete') + + .actions + = f.button :button, t('generic.save_changes'), type: :submit diff --git a/app/views/admin/settings/branding/show.html.haml b/app/views/admin/settings/branding/show.html.haml new file mode 100644 index 000000000..74a6fadf9 --- /dev/null +++ b/app/views/admin/settings/branding/show.html.haml @@ -0,0 +1,39 @@ +- content_for :header_tags do + = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' + +- content_for :page_title do + = t('admin.settings.branding.title') + +- content_for :heading do + %h2= t('admin.settings.title') + = render partial: 'admin/settings/shared/links' + += simple_form_for @admin_settings, url: admin_settings_branding_path, html: { method: :patch } do |f| + = render 'shared/error_messages', object: @admin_settings + + %p.lead= t('admin.settings.branding.preamble') + + .fields-group + = f.input :site_title, wrapper: :with_label + + .fields-row + .fields-row__column.fields-row__column-6.fields-group + = f.input :site_contact_username, wrapper: :with_label + .fields-row__column.fields-row__column-6.fields-group + = f.input :site_contact_email, wrapper: :with_label + + .fields-group + = f.input :site_short_description, wrapper: :with_block_label, as: :text, input_html: { rows: 2, maxlength: 200 } + + .fields-row + .fields-row__column.fields-row__column-6.fields-group + = f.input :thumbnail, as: :file, wrapper: :with_block_label + .fields-row__column.fields-row__column-6.fields-group + - if @admin_settings.thumbnail.persisted? + = image_tag @admin_settings.thumbnail.file.url(:'@1x'), class: 'fields-group__thumbnail' + = link_to admin_site_upload_path(@admin_settings.thumbnail), data: { method: :delete }, class: 'link-button link-button--destructive' do + = fa_icon 'trash fw' + = t('admin.site_uploads.delete') + + .actions + = f.button :button, t('generic.save_changes'), type: :submit diff --git a/app/views/admin/settings/content_retention/show.html.haml b/app/views/admin/settings/content_retention/show.html.haml new file mode 100644 index 000000000..36856127f --- /dev/null +++ b/app/views/admin/settings/content_retention/show.html.haml @@ -0,0 +1,22 @@ +- content_for :header_tags do + = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' + +- content_for :page_title do + = t('admin.settings.content_retention.title') + +- content_for :heading do + %h2= t('admin.settings.title') + = render partial: 'admin/settings/shared/links' + += simple_form_for @admin_settings, url: admin_settings_content_retention_path, html: { method: :patch } do |f| + = render 'shared/error_messages', object: @admin_settings + + %p.lead= t('admin.settings.content_retention.preamble') + + .fields-group + = f.input :media_cache_retention_period, wrapper: :with_block_label, input_html: { pattern: '[0-9]+' } + = f.input :content_cache_retention_period, wrapper: :with_block_label, input_html: { pattern: '[0-9]+' } + = f.input :backups_retention_period, wrapper: :with_block_label, input_html: { pattern: '[0-9]+' } + + .actions + = f.button :button, t('generic.save_changes'), type: :submit diff --git a/app/views/admin/settings/discovery/show.html.haml b/app/views/admin/settings/discovery/show.html.haml new file mode 100644 index 000000000..e63c853fb --- /dev/null +++ b/app/views/admin/settings/discovery/show.html.haml @@ -0,0 +1,40 @@ +- content_for :header_tags do + = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' + +- content_for :page_title do + = t('admin.settings.discovery.title') + +- content_for :heading do + %h2= t('admin.settings.title') + = render partial: 'admin/settings/shared/links' + += simple_form_for @admin_settings, url: admin_settings_discovery_path, html: { method: :patch } do |f| + = render 'shared/error_messages', object: @admin_settings + + %p.lead= t('admin.settings.discovery.preamble') + + %h4= t('admin.settings.discovery.trends') + + .fields-group + = f.input :trends, as: :boolean, wrapper: :with_label + + .fields-group + = f.input :trendable_by_default, as: :boolean, wrapper: :with_label + + %h4= t('admin.settings.discovery.public_timelines') + + .fields-group + = f.input :timeline_preview, as: :boolean, wrapper: :with_label + + %h4= t('admin.settings.discovery.follow_recommendations') + + .fields-group + = f.input :bootstrap_timeline_accounts, wrapper: :with_block_label + + %h4= t('admin.settings.discovery.profile_directory') + + .fields-group + = f.input :profile_directory, as: :boolean, wrapper: :with_label + + .actions + = f.button :button, t('generic.save_changes'), type: :submit diff --git a/app/views/admin/settings/edit.html.haml b/app/views/admin/settings/edit.html.haml deleted file mode 100644 index 15b1a2498..000000000 --- a/app/views/admin/settings/edit.html.haml +++ /dev/null @@ -1,102 +0,0 @@ -- content_for :header_tags do - = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' - -- content_for :page_title do - = t('admin.settings.title') - - - content_for :heading_actions do - = button_tag t('generic.save_changes'), class: 'button', form: 'edit_admin' - -= simple_form_for @admin_settings, url: admin_settings_path, html: { method: :patch, id: 'edit_admin' } do |f| - = render 'shared/error_messages', object: @admin_settings - - .fields-group - = f.input :site_title, wrapper: :with_label, label: t('admin.settings.site_title') - - .fields-row - .fields-row__column.fields-row__column-6.fields-group - = f.input :theme, collection: Themes.instance.names, label: t('simple_form.labels.defaults.setting_theme'), label_method: lambda { |theme| I18n.t("themes.#{theme}", default: theme) }, wrapper: :with_label, include_blank: false - .fields-row__column.fields-row__column-6.fields-group - = f.input :registrations_mode, collection: %w(open approved none), wrapper: :with_label, label: t('admin.settings.registrations_mode.title'), include_blank: false, label_method: lambda { |mode| I18n.t("admin.settings.registrations_mode.modes.#{mode}") } - - .fields-row - .fields-row__column.fields-row__column-6.fields-group - = f.input :site_contact_username, wrapper: :with_label, label: t('admin.settings.contact_information.username') - .fields-row__column.fields-row__column-6.fields-group - = f.input :site_contact_email, wrapper: :with_label, label: t('admin.settings.contact_information.email') - - .fields-group - = f.input :site_short_description, wrapper: :with_block_label, as: :text, label: t('admin.settings.site_short_description.title'), hint: t('admin.settings.site_short_description.desc_html'), input_html: { rows: 2 } - - .fields-group - = f.input :site_description, wrapper: :with_block_label, as: :text, label: t('admin.settings.site_description.title'), hint: t('admin.settings.site_description.desc_html'), input_html: { rows: 2 } - - .fields-row - .fields-row__column.fields-row__column-6.fields-group - = f.input :thumbnail, as: :file, wrapper: :with_block_label, label: t('admin.settings.thumbnail.title'), hint: site_upload_delete_hint(t('admin.settings.thumbnail.desc_html'), :thumbnail) - - .fields-row - .fields-row__column.fields-row__column-6.fields-group - = f.input :mascot, as: :file, wrapper: :with_block_label, label: t('admin.settings.mascot.title'), hint: site_upload_delete_hint(t('admin.settings.mascot.desc_html'), :mascot) - - %hr.spacer/ - - .fields-group - = f.input :require_invite_text, as: :boolean, wrapper: :with_label, label: t('admin.settings.registrations.require_invite_text.title'), hint: t('admin.settings.registrations.require_invite_text.desc_html'), disabled: !approved_registrations? - - %hr.spacer/ - - .fields-group - = f.input :bootstrap_timeline_accounts, wrapper: :with_block_label, label: t('admin.settings.bootstrap_timeline_accounts.title'), hint: t('admin.settings.bootstrap_timeline_accounts.desc_html') - - %hr.spacer/ - - - unless whitelist_mode? - .fields-group - = f.input :timeline_preview, as: :boolean, wrapper: :with_label, label: t('admin.settings.timeline_preview.title'), hint: t('admin.settings.timeline_preview.desc_html') - - - unless whitelist_mode? - .fields-group - = f.input :activity_api_enabled, as: :boolean, wrapper: :with_label, label: t('admin.settings.activity_api_enabled.title'), hint: t('admin.settings.activity_api_enabled.desc_html'), recommended: true - - .fields-group - = f.input :peers_api_enabled, as: :boolean, wrapper: :with_label, label: t('admin.settings.peers_api_enabled.title'), hint: t('admin.settings.peers_api_enabled.desc_html'), recommended: true - - .fields-group - = f.input :preview_sensitive_media, as: :boolean, wrapper: :with_label, label: t('admin.settings.preview_sensitive_media.title'), hint: t('admin.settings.preview_sensitive_media.desc_html') - - .fields-group - = f.input :profile_directory, as: :boolean, wrapper: :with_label, label: t('admin.settings.profile_directory.title'), hint: t('admin.settings.profile_directory.desc_html') - - .fields-group - = f.input :trends, as: :boolean, wrapper: :with_label, label: t('admin.settings.trends.title'), hint: t('admin.settings.trends.desc_html') - - .fields-group - = f.input :trendable_by_default, as: :boolean, wrapper: :with_label, label: t('admin.settings.trendable_by_default.title'), hint: t('admin.settings.trendable_by_default.desc_html'), recommended: :not_recommended - - .fields-group - = f.input :noindex, as: :boolean, wrapper: :with_label, label: t('admin.settings.default_noindex.title'), hint: t('admin.settings.default_noindex.desc_html') - - %hr.spacer/ - - .fields-row - .fields-row__column.fields-row__column-6.fields-group - = f.input :show_domain_blocks, wrapper: :with_label, collection: %i(disabled users all), label: t('admin.settings.domain_blocks.title'), label_method: lambda { |value| t("admin.settings.domain_blocks.#{value}") }, include_blank: false, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li' - .fields-row__column.fields-row__column-6.fields-group - = f.input :show_domain_blocks_rationale, wrapper: :with_label, collection: %i(disabled users all), label: t('admin.settings.domain_blocks_rationale.title'), label_method: lambda { |value| t("admin.settings.domain_blocks.#{value}") }, include_blank: false, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li' - - .fields-group - = f.input :site_extended_description, wrapper: :with_block_label, as: :text, label: t('admin.settings.site_description_extended.title'), hint: t('admin.settings.site_description_extended.desc_html'), input_html: { rows: 8 } unless whitelist_mode? - = f.input :closed_registrations_message, as: :text, wrapper: :with_block_label, label: t('admin.settings.registrations.closed_message.title'), hint: t('admin.settings.registrations.closed_message.desc_html'), input_html: { rows: 8 } - = f.input :site_terms, wrapper: :with_block_label, as: :text, label: t('admin.settings.site_terms.title'), hint: t('admin.settings.site_terms.desc_html'), input_html: { rows: 8 } - = f.input :custom_css, wrapper: :with_block_label, as: :text, input_html: { rows: 8 }, label: t('admin.settings.custom_css.title'), hint: t('admin.settings.custom_css.desc_html') - - %hr.spacer/ - - .fields-group - = f.input :media_cache_retention_period, wrapper: :with_block_label, input_html: { pattern: '[0-9]+' } - = f.input :content_cache_retention_period, wrapper: :with_block_label, input_html: { pattern: '[0-9]+' } - = f.input :backups_retention_period, wrapper: :with_block_label, input_html: { pattern: '[0-9]+' } - - .actions - = f.button :button, t('generic.save_changes'), type: :submit diff --git a/app/views/admin/settings/registrations/show.html.haml b/app/views/admin/settings/registrations/show.html.haml new file mode 100644 index 000000000..0129332d7 --- /dev/null +++ b/app/views/admin/settings/registrations/show.html.haml @@ -0,0 +1,27 @@ +- content_for :header_tags do + = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' + +- content_for :page_title do + = t('admin.settings.registrations.title') + +- content_for :heading do + %h2= t('admin.settings.title') + = render partial: 'admin/settings/shared/links' + += simple_form_for @admin_settings, url: admin_settings_branding_path, html: { method: :patch } do |f| + = render 'shared/error_messages', object: @admin_settings + + %p.lead= t('admin.settings.registrations.preamble') + + .fields-row + .fields-row__column.fields-row__column-6.fields-group + = f.input :registrations_mode, collection: %w(open approved none), wrapper: :with_label, include_blank: false, label_method: lambda { |mode| I18n.t("admin.settings.registrations_mode.modes.#{mode}") } + + .fields-row__column.fields-row__column-6.fields-group + = f.input :require_invite_text, as: :boolean, wrapper: :with_label, disabled: !approved_registrations? + + .fields-group + = f.input :closed_registrations_message, as: :text, wrapper: :with_block_label, input_html: { rows: 2 } + + .actions + = f.button :button, t('generic.save_changes'), type: :submit diff --git a/app/views/admin/settings/shared/_links.html.haml b/app/views/admin/settings/shared/_links.html.haml new file mode 100644 index 000000000..1294c26ce --- /dev/null +++ b/app/views/admin/settings/shared/_links.html.haml @@ -0,0 +1,8 @@ +.content__heading__tabs + = render_navigation renderer: :links do |primary| + - primary.item :branding, safe_join([fa_icon('pencil fw'), t('admin.settings.branding.title')]), admin_settings_branding_path + - primary.item :about, safe_join([fa_icon('file-text fw'), t('admin.settings.about.title')]), admin_settings_about_path + - primary.item :registrations, safe_join([fa_icon('users fw'), t('admin.settings.registrations.title')]), admin_settings_registrations_path + - primary.item :discovery, safe_join([fa_icon('search fw'), t('admin.settings.discovery.title')]), admin_settings_discovery_path + - primary.item :content_retention, safe_join([fa_icon('history fw'), t('admin.settings.content_retention.title')]), admin_settings_content_retention_path + - primary.item :appearance, safe_join([fa_icon('desktop fw'), t('admin.settings.appearance.title')]), admin_settings_appearance_path diff --git a/app/views/layouts/admin.html.haml b/app/views/layouts/admin.html.haml index e577b9803..59021ad88 100644 --- a/app/views/layouts/admin.html.haml +++ b/app/views/layouts/admin.html.haml @@ -22,15 +22,16 @@ .content-wrapper .content - .content-heading + .content__heading - if content_for?(:heading) = yield :heading - else - %h2= yield :page_title + .content__heading__row + %h2= yield :page_title - - if :heading_actions - .content-heading-actions - = yield :heading_actions + - if content_for?(:heading_actions) + .content__heading__actions + = yield :heading_actions = render 'application/flashes' diff --git a/config/locales/en.yml b/config/locales/en.yml index 412178ca3..70850d478 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -667,79 +667,40 @@ en: empty: No server rules have been defined yet. title: Server rules settings: - activity_api_enabled: - desc_html: Counts of locally published posts, active users, and new registrations in weekly buckets - title: Publish aggregate statistics about user activity in the API - bootstrap_timeline_accounts: - desc_html: Separate multiple usernames by comma. These accounts will be guaranteed to be shown in follow recommendations - title: Recommend these accounts to new users - contact_information: - email: Business e-mail - username: Contact username - custom_css: - desc_html: Modify the look with CSS loaded on every page - title: Custom CSS - default_noindex: - desc_html: Affects all users who have not changed this setting themselves - title: Opt users out of search engine indexing by default + about: + manage_rules: Manage server rules + preamble: Provide in-depth information about how the server is operated, moderated, funded. + rules_hint: There is a dedicated area for rules that your users are expected to adhere to. + title: About + appearance: + preamble: Customize Mastodon's web interface. + title: Appearance + branding: + preamble: Your server's branding differentiates it from other servers in the network. This information may be displayed across a variety of environments, such as Mastodon's web interface, native applications, in link previews on other websites and within messaging apps, and so on. For this reason, it is best to keep this information clear, short and concise. + title: Branding + content_retention: + preamble: Control how user-generated content is stored in Mastodon. + title: Content retention + discovery: + follow_recommendations: Follow recommendations + preamble: Surfacing interesting content is instrumental in onboarding new users who may not know anyone Mastodon. Control how various discovery features work on your server. + profile_directory: Profile directory + public_timelines: Public timelines + title: Discovery + trends: Trends domain_blocks: all: To everyone disabled: To no one - title: Show domain blocks users: To logged-in local users - domain_blocks_rationale: - title: Show rationale - mascot: - desc_html: Displayed on multiple pages. At least 293×205px recommended. When not set, falls back to default mascot - title: Mascot image - peers_api_enabled: - desc_html: Domain names this server has encountered in the fediverse - title: Publish list of discovered servers in the API - preview_sensitive_media: - desc_html: Link previews on other websites will display a thumbnail even if the media is marked as sensitive - title: Show sensitive media in OpenGraph previews - profile_directory: - desc_html: Allow users to be discoverable - title: Enable profile directory registrations: - closed_message: - desc_html: Displayed on frontpage when registrations are closed. You can use HTML tags - title: Closed registration message - require_invite_text: - desc_html: When registrations require manual approval, make the “Why do you want to join?” text input mandatory rather than optional - title: Require new users to enter a reason to join + preamble: Control who can create an account on your server. + title: Registrations registrations_mode: modes: approved: Approval required for sign up none: Nobody can sign up open: Anyone can sign up - title: Registrations mode - site_description: - desc_html: Introductory paragraph on the API. Describe what makes this Mastodon server special and anything else important. You can use HTML tags, in particular <a> and <em>. - title: Server description - site_description_extended: - desc_html: A good place for your code of conduct, rules, guidelines and other things that set your server apart. You can use HTML tags - title: Custom extended information - site_short_description: - desc_html: Displayed in sidebar and meta tags. Describe what Mastodon is and what makes this server special in a single paragraph. - title: Short server description - site_terms: - desc_html: You can write your own privacy policy. You can use HTML tags - title: Custom privacy policy - site_title: Server name - thumbnail: - desc_html: Used for previews via OpenGraph and API. 1200x630px recommended - title: Server thumbnail - timeline_preview: - desc_html: Display link to public timeline on landing page and allow API access to the public timeline without authentication - title: Allow unauthenticated access to public timeline - title: Site settings - trendable_by_default: - desc_html: Specific trending content can still be explicitly disallowed - title: Allow trends without prior review - trends: - desc_html: Publicly display previously reviewed content that is currently trending - title: Trends + title: Server Settings site_uploads: delete: Delete uploaded file destroyed_msg: Site upload successfully deleted! diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index db5b45e41..64281d7b7 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -75,8 +75,25 @@ en: warn: Hide the filtered content behind a warning mentioning the filter's title form_admin_settings: backups_retention_period: Keep generated user archives for the specified number of days. + bootstrap_timeline_accounts: These accounts will be pinned to the top of new users' follow recommendations. + closed_registrations_message: Displayed when sign-ups are closed content_cache_retention_period: Posts from other servers will be deleted after the specified number of days when set to a positive value. This may be irreversible. + custom_css: You can apply custom styles on the web version of Mastodon. + mascot: Overrides the illustration in the advanced web interface. media_cache_retention_period: Downloaded media files will be deleted after the specified number of days when set to a positive value, and re-downloaded on demand. + profile_directory: The profile directory lists all users who have opted-in to be discoverable. + require_invite_text: When sign-ups require manual approval, make the “Why do you want to join?” text input mandatory rather than optional + site_contact_email: How people can reach you for legal or support inquiries. + site_contact_username: How people can reach you on Mastodon. + site_extended_description: Any additional information that may be useful to visitors and your users. Can be structured with Markdown syntax. + site_short_description: A short description to help uniquely identify your server. Who is running it, who is it for? + site_terms: Use your own privacy policy or leave blank to use the default. Can be structured with Markdown syntax. + site_title: How people may refer to your server besides its domain name. + theme: Theme that logged out visitors and new users see. + thumbnail: A roughly 2:1 image displayed alongside your server information. + timeline_preview: Logged out visitors will be able to browse the most recent public posts available on the server. + trendable_by_default: Skip manual review of trending content. Individual items can still be removed from trends after the fact. + trends: Trends show which posts, hashtags and news stories are gaining traction on your server. form_challenge: current_password: You are entering a secure area imports: @@ -213,8 +230,28 @@ en: warn: Hide with a warning form_admin_settings: backups_retention_period: User archive retention period + bootstrap_timeline_accounts: Always recommend these accounts to new users + closed_registrations_message: Custom message when sign-ups are not available content_cache_retention_period: Content cache retention period + custom_css: Custom CSS + mascot: Custom mascot (legacy) media_cache_retention_period: Media cache retention period + profile_directory: Enable profile directory + registrations_mode: Who can sign-up + require_invite_text: Require a reason to join + show_domain_blocks: Show domain blocks + show_domain_blocks_rationale: Show why domains were blocked + site_contact_email: Contact e-mail + site_contact_username: Contact username + site_extended_description: Extended description + site_short_description: Server description + site_terms: Privacy Policy + site_title: Server name + theme: Default theme + thumbnail: Server thumbnail + timeline_preview: Allow unauthenticated access to public timelines + trendable_by_default: Allow trends without prior review + trends: Enable trends interactions: must_be_follower: Block notifications from non-followers must_be_following: Block notifications from people you don't follow diff --git a/config/navigation.rb b/config/navigation.rb index 706de0471..e901fb932 100644 --- a/config/navigation.rb +++ b/config/navigation.rb @@ -52,7 +52,7 @@ SimpleNavigation::Configuration.run do |navigation| n.item :admin, safe_join([fa_icon('cogs fw'), t('admin.title')]), nil, if: -> { current_user.can?(:view_dashboard, :manage_settings, :manage_rules, :manage_announcements, :manage_custom_emojis, :manage_webhooks, :manage_federation) } do |s| s.item :dashboard, safe_join([fa_icon('tachometer fw'), t('admin.dashboard.title')]), admin_dashboard_path, if: -> { current_user.can?(:view_dashboard) } - s.item :settings, safe_join([fa_icon('cogs fw'), t('admin.settings.title')]), edit_admin_settings_path, if: -> { current_user.can?(:manage_settings) }, highlights_on: %r{/admin/settings} + s.item :settings, safe_join([fa_icon('cogs fw'), t('admin.settings.title')]), admin_settings_path, if: -> { current_user.can?(:manage_settings) }, highlights_on: %r{/admin/settings} s.item :rules, safe_join([fa_icon('gavel fw'), t('admin.rules.title')]), admin_rules_path, highlights_on: %r{/admin/rules}, if: -> { current_user.can?(:manage_rules) } s.item :roles, safe_join([fa_icon('vcard fw'), t('admin.roles.title')]), admin_roles_path, highlights_on: %r{/admin/roles}, if: -> { current_user.can?(:manage_roles) } s.item :announcements, safe_join([fa_icon('bullhorn fw'), t('admin.announcements.title')]), admin_announcements_path, highlights_on: %r{/admin/announcements}, if: -> { current_user.can?(:manage_announcements) } diff --git a/config/routes.rb b/config/routes.rb index 1ed585f19..b44479e77 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -241,7 +241,18 @@ Rails.application.routes.draw do end end - resource :settings, only: [:edit, :update] + get '/settings', to: redirect('/admin/settings/branding') + get '/settings/edit', to: redirect('/admin/settings/branding') + + namespace :settings do + resource :branding, only: [:show, :update], controller: 'branding' + resource :registrations, only: [:show, :update], controller: 'registrations' + resource :content_retention, only: [:show, :update], controller: 'content_retention' + resource :about, only: [:show, :update], controller: 'about' + resource :appearance, only: [:show, :update], controller: 'appearance' + resource :discovery, only: [:show, :update], controller: 'discovery' + end + resources :site_uploads, only: [:destroy] resources :invites, only: [:index, :create, :destroy] do diff --git a/spec/controllers/admin/settings/branding_controller_spec.rb b/spec/controllers/admin/settings/branding_controller_spec.rb new file mode 100644 index 000000000..ee1c441bc --- /dev/null +++ b/spec/controllers/admin/settings/branding_controller_spec.rb @@ -0,0 +1,53 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe Admin::Settings::BrandingController, type: :controller do + render_views + + describe 'When signed in as an admin' do + before do + sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user + end + + describe 'GET #show' do + it 'returns http success' do + get :show + + expect(response).to have_http_status(200) + end + end + + describe 'PUT #update' do + before do + allow_any_instance_of(Form::AdminSettings).to receive(:valid?).and_return(true) + end + + around do |example| + before = Setting.site_short_description + Setting.site_short_description = nil + example.run + Setting.site_short_description = before + Setting.new_setting_key = nil + end + + it 'cannot create a setting value for a non-admin key' do + expect(Setting.new_setting_key).to be_blank + + patch :update, params: { form_admin_settings: { new_setting_key: 'New key value' } } + + expect(response).to redirect_to(admin_settings_branding_path) + expect(Setting.new_setting_key).to be_nil + end + + it 'creates a settings value that didnt exist before for eligible key' do + expect(Setting.site_short_description).to be_blank + + patch :update, params: { form_admin_settings: { site_short_description: 'New key value' } } + + expect(response).to redirect_to(admin_settings_branding_path) + expect(Setting.site_short_description).to eq 'New key value' + end + end + end +end diff --git a/spec/controllers/admin/settings_controller_spec.rb b/spec/controllers/admin/settings_controller_spec.rb deleted file mode 100644 index 46749f76c..000000000 --- a/spec/controllers/admin/settings_controller_spec.rb +++ /dev/null @@ -1,71 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -RSpec.describe Admin::SettingsController, type: :controller do - render_views - - describe 'When signed in as an admin' do - before do - sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user - end - - describe 'GET #edit' do - it 'returns http success' do - get :edit - - expect(response).to have_http_status(200) - end - end - - describe 'PUT #update' do - before do - allow_any_instance_of(Form::AdminSettings).to receive(:valid?).and_return(true) - end - - describe 'for a record that doesnt exist' do - around do |example| - before = Setting.site_extended_description - Setting.site_extended_description = nil - example.run - Setting.site_extended_description = before - Setting.new_setting_key = nil - end - - it 'cannot create a setting value for a non-admin key' do - expect(Setting.new_setting_key).to be_blank - - patch :update, params: { form_admin_settings: { new_setting_key: 'New key value' } } - - expect(response).to redirect_to(edit_admin_settings_path) - expect(Setting.new_setting_key).to be_nil - end - - it 'creates a settings value that didnt exist before for eligible key' do - expect(Setting.site_extended_description).to be_blank - - patch :update, params: { form_admin_settings: { site_extended_description: 'New key value' } } - - expect(response).to redirect_to(edit_admin_settings_path) - expect(Setting.site_extended_description).to eq 'New key value' - end - end - - context do - around do |example| - site_title = Setting.site_title - example.run - Setting.site_title = site_title - end - - it 'updates a settings value' do - Setting.site_title = 'Original' - patch :update, params: { form_admin_settings: { site_title: 'New title' } } - - expect(response).to redirect_to(edit_admin_settings_path) - expect(Setting.site_title).to eq 'New title' - end - end - end - end -end From 1d34eff63f65dd0809af172cf3b1ed5e24c62eaf Mon Sep 17 00:00:00 2001 From: Takeshi Umeda Date: Sat, 22 Oct 2022 18:49:41 +0900 Subject: [PATCH 526/652] Add featured tag add/remove activity handler (#19408) --- app/lib/activitypub/activity/add.rb | 22 +++++++++++++++++++++- app/lib/activitypub/activity/remove.rb | 25 ++++++++++++++++++++++++- app/models/featured_tag.rb | 2 ++ 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/app/lib/activitypub/activity/add.rb b/app/lib/activitypub/activity/add.rb index 845eeaef7..9e2483983 100644 --- a/app/lib/activitypub/activity/add.rb +++ b/app/lib/activitypub/activity/add.rb @@ -2,12 +2,32 @@ class ActivityPub::Activity::Add < ActivityPub::Activity def perform - return unless @json['target'].present? && value_or_id(@json['target']) == @account.featured_collection_url + return if @json['target'].blank? + case value_or_id(@json['target']) + when @account.featured_collection_url + case @object['type'] + when 'Hashtag' + add_featured_tags + else + add_featured + end + end + end + + private + + def add_featured status = status_from_object return unless !status.nil? && status.account_id == @account.id && !@account.pinned?(status) StatusPin.create!(account: @account, status: status) end + + def add_featured_tags + name = @object['name']&.delete_prefix('#') + + FeaturedTag.create!(account: @account, name: name) if name.present? + end end diff --git a/app/lib/activitypub/activity/remove.rb b/app/lib/activitypub/activity/remove.rb index f523ead9f..f5cbef675 100644 --- a/app/lib/activitypub/activity/remove.rb +++ b/app/lib/activitypub/activity/remove.rb @@ -2,8 +2,22 @@ class ActivityPub::Activity::Remove < ActivityPub::Activity def perform - return unless @json['target'].present? && value_or_id(@json['target']) == @account.featured_collection_url + return if @json['target'].blank? + case value_or_id(@json['target']) + when @account.featured_collection_url + case @object['type'] + when 'Hashtag' + remove_featured_tags + else + remove_featured + end + end + end + + private + + def remove_featured status = status_from_uri(object_uri) return unless !status.nil? && status.account_id == @account.id @@ -11,4 +25,13 @@ class ActivityPub::Activity::Remove < ActivityPub::Activity pin = StatusPin.find_by(account: @account, status: status) pin&.destroy! end + + def remove_featured_tags + name = @object['name']&.delete_prefix('#') + + return if name.blank? + + featured_tag = FeaturedTag.by_name(name).find_by(account: @account) + featured_tag&.destroy! + end end diff --git a/app/models/featured_tag.rb b/app/models/featured_tag.rb index b16c79ac7..4a8d7224a 100644 --- a/app/models/featured_tag.rb +++ b/app/models/featured_tag.rb @@ -22,6 +22,8 @@ class FeaturedTag < ApplicationRecord before_create :set_tag before_create :reset_data + scope :by_name, ->(name) { joins(:tag).where(tag: { name: HashtagNormalizer.new.normalize(name) }) } + delegate :display_name, to: :tag attr_writer :name From 53e86747e49dea5e4314bc3fedef4d69ba8f338e Mon Sep 17 00:00:00 2001 From: Takeshi Umeda Date: Sat, 22 Oct 2022 21:30:59 +0900 Subject: [PATCH 527/652] Fix duplicate featured tags (#19403) * Fix duplicate featured tags * Add unique tag name validator * Fix error message --- app/models/featured_tag.rb | 1 + ..._featured_tags_on_account_id_and_tag_id.rb | 19 +++++++++++++++++++ db/schema.rb | 4 ++-- 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20221021055441_add_index_featured_tags_on_account_id_and_tag_id.rb diff --git a/app/models/featured_tag.rb b/app/models/featured_tag.rb index 4a8d7224a..ec234a6fd 100644 --- a/app/models/featured_tag.rb +++ b/app/models/featured_tag.rb @@ -60,5 +60,6 @@ class FeaturedTag < ApplicationRecord def validate_tag_name errors.add(:name, :blank) if @name.blank? errors.add(:name, :invalid) unless @name.match?(/\A(#{Tag::HASHTAG_NAME_RE})\z/i) + errors.add(:name, :taken) if FeaturedTag.by_name(@name).where(account_id: account_id).exists? end end diff --git a/db/migrate/20221021055441_add_index_featured_tags_on_account_id_and_tag_id.rb b/db/migrate/20221021055441_add_index_featured_tags_on_account_id_and_tag_id.rb new file mode 100644 index 000000000..74d7673f7 --- /dev/null +++ b/db/migrate/20221021055441_add_index_featured_tags_on_account_id_and_tag_id.rb @@ -0,0 +1,19 @@ +class AddIndexFeaturedTagsOnAccountIdAndTagId < ActiveRecord::Migration[6.1] + disable_ddl_transaction! + + def up + duplicates = FeaturedTag.connection.select_all('SELECT string_agg(id::text, \',\') AS ids FROM featured_tags GROUP BY account_id, tag_id HAVING count(*) > 1').to_ary + + duplicates.each do |row| + FeaturedTag.where(id: row['ids'].split(',')[0...-1]).destroy_all + end + + add_index :featured_tags, [:account_id, :tag_id], unique: true, algorithm: :concurrently + remove_index :featured_tags, [:account_id], algorithm: :concurrently + end + + def down + add_index :featured_tags, [:account_id], algorithm: :concurrently + remove_index :featured_tags, [:account_id, :tag_id], unique: true, algorithm: :concurrently + end +end diff --git a/db/schema.rb b/db/schema.rb index 3972f777a..ed00d9e74 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2022_10_12_181003) do +ActiveRecord::Schema.define(version: 2022_10_21_055441) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -442,7 +442,7 @@ ActiveRecord::Schema.define(version: 2022_10_12_181003) do t.datetime "last_status_at" t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.index ["account_id"], name: "index_featured_tags_on_account_id" + t.index ["account_id", "tag_id"], name: "index_featured_tags_on_account_id_and_tag_id", unique: true t.index ["tag_id"], name: "index_featured_tags_on_tag_id" end From 062b3c9090c6935d4bf754e7aeb37793a2aa7b68 Mon Sep 17 00:00:00 2001 From: Claire Date: Sat, 22 Oct 2022 18:09:51 +0200 Subject: [PATCH 528/652] Change landing page to be /about instead of /explore when trends are disabled (#19414) --- app/javascript/mastodon/features/ui/index.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/features/ui/index.js b/app/javascript/mastodon/features/ui/index.js index 003991857..531747cae 100644 --- a/app/javascript/mastodon/features/ui/index.js +++ b/app/javascript/mastodon/features/ui/index.js @@ -54,7 +54,7 @@ import { About, PrivacyPolicy, } from './util/async-components'; -import initialState, { me, owner, singleUserMode } from '../../initial_state'; +import initialState, { me, owner, singleUserMode, showTrends } from '../../initial_state'; import { closeOnboarding, INTRODUCTION_VERSION } from 'mastodon/actions/onboarding'; import Header from './components/header'; @@ -163,8 +163,10 @@ class SwitchingColumnsArea extends React.PureComponent { } } else if (singleUserMode && owner && initialState?.accounts[owner]) { redirect = ; - } else { + } else if (showTrends) { redirect = ; + } else { + redirect = ; } return ( From 73a48318a19a207c63f6d03ecea8ce35b7e2364a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 22 Oct 2022 18:30:20 +0200 Subject: [PATCH 529/652] Fix error when rendering limited account in web UI (#19413) --- app/javascript/mastodon/components/avatar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/components/avatar.js b/app/javascript/mastodon/components/avatar.js index 976d85cdb..dd3932ae6 100644 --- a/app/javascript/mastodon/components/avatar.js +++ b/app/javascript/mastodon/components/avatar.js @@ -64,7 +64,7 @@ export default class Avatar extends React.PureComponent { onMouseLeave={this.handleMouseLeave} style={style} role='img' - aria-label={account.get('acct')} + aria-label={account?.get('acct')} /> ); } From 74ead7d10698c7f18ca22c07d2f04ff81f419097 Mon Sep 17 00:00:00 2001 From: Takeshi Umeda Date: Sun, 23 Oct 2022 01:30:55 +0900 Subject: [PATCH 530/652] Change featured tag updates to add/remove activity (#19409) * Change featured tag updates to add/remove activity * Fix to check for the existence of feature tag * Rename service and worker * Merge AddHashtagSerializer with AddSerializer * Undo removal of sidekiq_options --- .../api/v1/featured_tags_controller.rb | 8 +++---- .../settings/featured_tags_controller.rb | 13 ++++++----- app/models/featured_tag.rb | 4 ++++ app/serializers/activitypub/add_serializer.rb | 23 +++++++++++++++++-- .../activitypub/hashtag_serializer.rb | 2 ++ .../activitypub/remove_serializer.rb | 23 +++++++++++++++++-- app/services/create_featured_tag_service.rb | 21 +++++++++++++++++ app/services/remove_featured_tag_service.rb | 18 +++++++++++++++ .../account_raw_distribution_worker.rb | 9 ++++++++ app/workers/remove_featured_tag_worker.rb | 11 +++++++++ 10 files changed, 117 insertions(+), 15 deletions(-) create mode 100644 app/services/create_featured_tag_service.rb create mode 100644 app/services/remove_featured_tag_service.rb create mode 100644 app/workers/activitypub/account_raw_distribution_worker.rb create mode 100644 app/workers/remove_featured_tag_worker.rb diff --git a/app/controllers/api/v1/featured_tags_controller.rb b/app/controllers/api/v1/featured_tags_controller.rb index a67db7040..edb42a94e 100644 --- a/app/controllers/api/v1/featured_tags_controller.rb +++ b/app/controllers/api/v1/featured_tags_controller.rb @@ -13,14 +13,12 @@ class Api::V1::FeaturedTagsController < Api::BaseController end def create - @featured_tag = current_account.featured_tags.create!(featured_tag_params) - ActivityPub::UpdateDistributionWorker.perform_in(3.minutes, current_account.id) - render json: @featured_tag, serializer: REST::FeaturedTagSerializer + featured_tag = CreateFeaturedTagService.new.call(current_account, featured_tag_params[:name]) + render json: featured_tag, serializer: REST::FeaturedTagSerializer end def destroy - @featured_tag.destroy! - ActivityPub::UpdateDistributionWorker.perform_in(3.minutes, current_account.id) + RemoveFeaturedTagWorker.perform_async(current_account.id, @featured_tag.id) render_empty end diff --git a/app/controllers/settings/featured_tags_controller.rb b/app/controllers/settings/featured_tags_controller.rb index ae714e912..cc6ec0843 100644 --- a/app/controllers/settings/featured_tags_controller.rb +++ b/app/controllers/settings/featured_tags_controller.rb @@ -10,10 +10,8 @@ class Settings::FeaturedTagsController < Settings::BaseController end def create - @featured_tag = current_account.featured_tags.new(featured_tag_params) - - if @featured_tag.save - ActivityPub::UpdateDistributionWorker.perform_in(3.minutes, current_account.id) + if !featured_tag_exists? + CreateFeaturedTagService.new.call(current_account, featured_tag_params[:name]) redirect_to settings_featured_tags_path else set_featured_tags @@ -24,13 +22,16 @@ class Settings::FeaturedTagsController < Settings::BaseController end def destroy - @featured_tag.destroy! - ActivityPub::UpdateDistributionWorker.perform_in(3.minutes, current_account.id) + RemoveFeaturedTagWorker.perform_async(current_account.id, @featured_tag.id) redirect_to settings_featured_tags_path end private + def featured_tag_exists? + current_account.featured_tags.by_name(featured_tag_params[:name]).exists? + end + def set_featured_tag @featured_tag = current_account.featured_tags.find(params[:id]) end diff --git a/app/models/featured_tag.rb b/app/models/featured_tag.rb index ec234a6fd..3f5cddce6 100644 --- a/app/models/featured_tag.rb +++ b/app/models/featured_tag.rb @@ -30,6 +30,10 @@ class FeaturedTag < ApplicationRecord LIMIT = 10 + def sign? + true + end + def name tag_id.present? ? tag.name : @name end diff --git a/app/serializers/activitypub/add_serializer.rb b/app/serializers/activitypub/add_serializer.rb index 6f5aab17f..436b05086 100644 --- a/app/serializers/activitypub/add_serializer.rb +++ b/app/serializers/activitypub/add_serializer.rb @@ -1,10 +1,29 @@ # frozen_string_literal: true class ActivityPub::AddSerializer < ActivityPub::Serializer + class UriSerializer < ActiveModel::Serializer + include RoutingHelper + + def serializable_hash(*_args) + ActivityPub::TagManager.instance.uri_for(object) + end + end + + def self.serializer_for(model, options) + case model.class.name + when 'Status' + UriSerializer + when 'FeaturedTag' + ActivityPub::HashtagSerializer + else + super + end + end + include RoutingHelper attributes :type, :actor, :target - attribute :proper_object, key: :object + has_one :proper_object, key: :object def type 'Add' @@ -15,7 +34,7 @@ class ActivityPub::AddSerializer < ActivityPub::Serializer end def proper_object - ActivityPub::TagManager.instance.uri_for(object) + object end def target diff --git a/app/serializers/activitypub/hashtag_serializer.rb b/app/serializers/activitypub/hashtag_serializer.rb index 90929c57f..2b24eb8cc 100644 --- a/app/serializers/activitypub/hashtag_serializer.rb +++ b/app/serializers/activitypub/hashtag_serializer.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class ActivityPub::HashtagSerializer < ActivityPub::Serializer + context_extensions :hashtag + include RoutingHelper attributes :type, :href, :name diff --git a/app/serializers/activitypub/remove_serializer.rb b/app/serializers/activitypub/remove_serializer.rb index 7fefda59d..fb224f8a9 100644 --- a/app/serializers/activitypub/remove_serializer.rb +++ b/app/serializers/activitypub/remove_serializer.rb @@ -1,10 +1,29 @@ # frozen_string_literal: true class ActivityPub::RemoveSerializer < ActivityPub::Serializer + class UriSerializer < ActiveModel::Serializer + include RoutingHelper + + def serializable_hash(*_args) + ActivityPub::TagManager.instance.uri_for(object) + end + end + + def self.serializer_for(model, options) + case model.class.name + when 'Status' + UriSerializer + when 'FeaturedTag' + ActivityPub::HashtagSerializer + else + super + end + end + include RoutingHelper attributes :type, :actor, :target - attribute :proper_object, key: :object + has_one :proper_object, key: :object def type 'Remove' @@ -15,7 +34,7 @@ class ActivityPub::RemoveSerializer < ActivityPub::Serializer end def proper_object - ActivityPub::TagManager.instance.uri_for(object) + object end def target diff --git a/app/services/create_featured_tag_service.rb b/app/services/create_featured_tag_service.rb new file mode 100644 index 000000000..c99d16113 --- /dev/null +++ b/app/services/create_featured_tag_service.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +class CreateFeaturedTagService < BaseService + include Payloadable + + def call(account, name) + @account = account + + FeaturedTag.create!(account: account, name: name).tap do |featured_tag| + ActivityPub::AccountRawDistributionWorker.perform_async(build_json(featured_tag), account.id) if @account.local? + end + rescue ActiveRecord::RecordNotUnique + FeaturedTag.by_name(name).find_by!(account: account) + end + + private + + def build_json(featured_tag) + Oj.dump(serialize_payload(featured_tag, ActivityPub::AddSerializer, signer: @account)) + end +end diff --git a/app/services/remove_featured_tag_service.rb b/app/services/remove_featured_tag_service.rb new file mode 100644 index 000000000..2aa70e8fc --- /dev/null +++ b/app/services/remove_featured_tag_service.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class RemoveFeaturedTagService < BaseService + include Payloadable + + def call(account, featured_tag) + @account = account + + featured_tag.destroy! + ActivityPub::AccountRawDistributionWorker.perform_async(build_json(featured_tag), account.id) if @account.local? + end + + private + + def build_json(featured_tag) + Oj.dump(serialize_payload(featured_tag, ActivityPub::RemoveSerializer, signer: @account)) + end +end diff --git a/app/workers/activitypub/account_raw_distribution_worker.rb b/app/workers/activitypub/account_raw_distribution_worker.rb new file mode 100644 index 000000000..a84c7d214 --- /dev/null +++ b/app/workers/activitypub/account_raw_distribution_worker.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class ActivityPub::AccountRawDistributionWorker < ActivityPub::RawDistributionWorker + protected + + def inboxes + @inboxes ||= AccountReachFinder.new(@account).inboxes + end +end diff --git a/app/workers/remove_featured_tag_worker.rb b/app/workers/remove_featured_tag_worker.rb new file mode 100644 index 000000000..065ec79d8 --- /dev/null +++ b/app/workers/remove_featured_tag_worker.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class RemoveFeaturedTagWorker + include Sidekiq::Worker + + def perform(account_id, featured_tag_id) + RemoveFeaturedTagService.new.call(Account.find(account_id), FeaturedTag.find(featured_tag_id)) + rescue ActiveRecord::RecordNotFound + true + end +end From 45d3b324883c1e72ad5f9820d3c23f7f779f28db Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Sun, 23 Oct 2022 06:14:58 +0900 Subject: [PATCH 531/652] Fix `Settings::FeaturedTagsController` (#19418) Regression from #19409 --- app/controllers/settings/featured_tags_controller.rb | 9 +++------ app/services/create_featured_tag_service.rb | 10 +++++++--- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/app/controllers/settings/featured_tags_controller.rb b/app/controllers/settings/featured_tags_controller.rb index cc6ec0843..b3db04a42 100644 --- a/app/controllers/settings/featured_tags_controller.rb +++ b/app/controllers/settings/featured_tags_controller.rb @@ -10,8 +10,9 @@ class Settings::FeaturedTagsController < Settings::BaseController end def create - if !featured_tag_exists? - CreateFeaturedTagService.new.call(current_account, featured_tag_params[:name]) + @featured_tag = CreateFeaturedTagService.new.call(current_account, featured_tag_params[:name], force: false) + + if @featured_tag.valid? redirect_to settings_featured_tags_path else set_featured_tags @@ -28,10 +29,6 @@ class Settings::FeaturedTagsController < Settings::BaseController private - def featured_tag_exists? - current_account.featured_tags.by_name(featured_tag_params[:name]).exists? - end - def set_featured_tag @featured_tag = current_account.featured_tags.find(params[:id]) end diff --git a/app/services/create_featured_tag_service.rb b/app/services/create_featured_tag_service.rb index c99d16113..3cc59156d 100644 --- a/app/services/create_featured_tag_service.rb +++ b/app/services/create_featured_tag_service.rb @@ -3,14 +3,18 @@ class CreateFeaturedTagService < BaseService include Payloadable - def call(account, name) + def call(account, name, force: true) @account = account FeaturedTag.create!(account: account, name: name).tap do |featured_tag| ActivityPub::AccountRawDistributionWorker.perform_async(build_json(featured_tag), account.id) if @account.local? end - rescue ActiveRecord::RecordNotUnique - FeaturedTag.by_name(name).find_by!(account: account) + rescue ActiveRecord::RecordNotUnique, ActiveRecord::RecordInvalid => e + if force && e.is_a(ActiveRecord::RecordNotUnique) + FeaturedTag.by_name(name).find_by!(account: account) + else + account.featured_tags.new(name: name) + end end private From 56efa8d22f041ca87efdfb2e95e80d213e72dde9 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 22 Oct 2022 23:15:14 +0200 Subject: [PATCH 532/652] Fix reply not opening compose page on certain screen sizes in web UI (#19417) Fix ellipsis next to icons on navigation panel on some browsers --- app/javascript/mastodon/actions/compose.js | 4 +--- app/javascript/styles/mastodon/components.scss | 1 - 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/app/javascript/mastodon/actions/compose.js b/app/javascript/mastodon/actions/compose.js index 0cfc1868e..42d4ad8df 100644 --- a/app/javascript/mastodon/actions/compose.js +++ b/app/javascript/mastodon/actions/compose.js @@ -79,10 +79,8 @@ const messages = defineMessages({ uploadErrorPoll: { id: 'upload_error.poll', defaultMessage: 'File upload not allowed with polls.' }, }); -const COMPOSE_PANEL_BREAKPOINT = 600 + (285 * 1) + (10 * 1); - export const ensureComposeIsVisible = (getState, routerHistory) => { - if (!getState().getIn(['compose', 'mounted']) && window.innerWidth < COMPOSE_PANEL_BREAKPOINT) { + if (!getState().getIn(['compose', 'mounted'])) { routerHistory.push('/publish'); } }; diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 5d0ff8536..107a4e586 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -3176,7 +3176,6 @@ $ui-header-height: 55px; padding: 15px; text-decoration: none; overflow: hidden; - text-overflow: ellipsis; white-space: nowrap; &:hover, From a43a8237681187f6e56524aa3effcfc998a877de Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 22 Oct 2022 23:18:32 +0200 Subject: [PATCH 533/652] Add error boundary around routes in web UI (#19412) * Add error boundary around routes in web UI * Update app/javascript/mastodon/features/ui/util/react_router_helpers.js Co-authored-by: Yamagishi Kazutoshi * Update app/javascript/mastodon/features/ui/util/react_router_helpers.js Co-authored-by: Yamagishi Kazutoshi * Update app/javascript/mastodon/features/ui/components/bundle_column_error.js Co-authored-by: Yamagishi Kazutoshi Co-authored-by: Yamagishi Kazutoshi --- .../ui/components/bundle_column_error.js | 163 +++++++++++++++--- app/javascript/mastodon/features/ui/index.js | 6 +- .../features/ui/util/react_router_helpers.js | 34 +++- .../styles/mastodon/components.scss | 53 +++++- 4 files changed, 222 insertions(+), 34 deletions(-) diff --git a/app/javascript/mastodon/features/ui/components/bundle_column_error.js b/app/javascript/mastodon/features/ui/components/bundle_column_error.js index ab6d4aa44..dfe970ad0 100644 --- a/app/javascript/mastodon/features/ui/components/bundle_column_error.js +++ b/app/javascript/mastodon/features/ui/components/bundle_column_error.js @@ -1,44 +1,155 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { defineMessages, injectIntl } from 'react-intl'; +import { injectIntl, FormattedMessage } from 'react-intl'; import Column from 'mastodon/components/column'; -import ColumnHeader from 'mastodon/components/column_header'; -import IconButton from 'mastodon/components/icon_button'; +import Button from 'mastodon/components/button'; import { Helmet } from 'react-helmet'; +import { Link } from 'react-router-dom'; +import classNames from 'classnames'; +import { autoPlayGif } from 'mastodon/initial_state'; -const messages = defineMessages({ - title: { id: 'bundle_column_error.title', defaultMessage: 'Network error' }, - body: { id: 'bundle_column_error.body', defaultMessage: 'Something went wrong while loading this component.' }, - retry: { id: 'bundle_column_error.retry', defaultMessage: 'Try again' }, -}); - -class BundleColumnError extends React.PureComponent { +class GIF extends React.PureComponent { static propTypes = { - onRetry: PropTypes.func.isRequired, - intl: PropTypes.object.isRequired, - multiColumn: PropTypes.bool, + src: PropTypes.string.isRequired, + staticSrc: PropTypes.string.isRequired, + className: PropTypes.string, + animate: PropTypes.bool, + }; + + static defaultProps = { + animate: autoPlayGif, + }; + + state = { + hovering: false, + }; + + handleMouseEnter = () => { + const { animate } = this.props; + + if (!animate) { + this.setState({ hovering: true }); + } } - handleRetry = () => { - this.props.onRetry(); + handleMouseLeave = () => { + const { animate } = this.props; + + if (!animate) { + this.setState({ hovering: false }); + } } render () { - const { multiColumn, intl: { formatMessage } } = this.props; + const { src, staticSrc, className, animate } = this.props; + const { hovering } = this.state; return ( - - + + ); + } +} + +class CopyButton extends React.PureComponent { + + static propTypes = { + children: PropTypes.node.isRequired, + value: PropTypes.string.isRequired, + }; + + state = { + copied: false, + }; + + handleClick = () => { + const { value } = this.props; + navigator.clipboard.writeText(value); + this.setState({ copied: true }); + this.timeout = setTimeout(() => this.setState({ copied: false }), 700); + } + + componentWillUnmount () { + if (this.timeout) clearTimeout(this.timeout); + } + + render () { + const { children } = this.props; + const { copied } = this.state; + + return ( + + ); + } + +} + +export default @injectIntl +class BundleColumnError extends React.PureComponent { + + static propTypes = { + errorType: PropTypes.oneOf(['routing', 'network', 'error']), + onRetry: PropTypes.func, + intl: PropTypes.object.isRequired, + multiColumn: PropTypes.bool, + stacktrace: PropTypes.string, + }; + + static defaultProps = { + errorType: 'routing', + }; + + handleRetry = () => { + const { onRetry } = this.props; + + if (onRetry) { + onRetry(); + } + } + + render () { + const { errorType, multiColumn, stacktrace } = this.props; + + let title, body; + + switch(errorType) { + case 'routing': + title = ; + body = ; + break; + case 'network': + title = ; + body = ; + break; + case 'error': + title = ; + body = ; + break; + } + + return ( +
- - {formatMessage(messages.body)} + + +
+

{title}

+

{body}

+ +
+ {errorType === 'network' && } + {errorType === 'error' && } + +
+
@@ -49,5 +160,3 @@ class BundleColumnError extends React.PureComponent { } } - -export default injectIntl(BundleColumnError); diff --git a/app/javascript/mastodon/features/ui/index.js b/app/javascript/mastodon/features/ui/index.js index 531747cae..7cda5e106 100644 --- a/app/javascript/mastodon/features/ui/index.js +++ b/app/javascript/mastodon/features/ui/index.js @@ -3,7 +3,7 @@ import React from 'react'; import { HotKeys } from 'react-hotkeys'; import { defineMessages, injectIntl } from 'react-intl'; import { connect } from 'react-redux'; -import { Redirect, withRouter } from 'react-router-dom'; +import { Redirect, Route, withRouter } from 'react-router-dom'; import PropTypes from 'prop-types'; import NotificationsContainer from './containers/notifications_container'; import LoadingBarContainer from './containers/loading_bar_container'; @@ -18,6 +18,7 @@ import { clearHeight } from '../../actions/height_cache'; import { focusApp, unfocusApp, changeLayout } from 'mastodon/actions/app'; import { synchronouslySubmitMarkers, submitMarkers, fetchMarkers } from 'mastodon/actions/markers'; import { WrappedSwitch, WrappedRoute } from './util/react_router_helpers'; +import BundleColumnError from './components/bundle_column_error'; import UploadArea from './components/upload_area'; import ColumnsAreaContainer from './containers/columns_area_container'; import PictureInPicture from 'mastodon/features/picture_in_picture'; @@ -39,7 +40,6 @@ import { HashtagTimeline, Notifications, FollowRequests, - GenericNotFound, FavouritedStatuses, BookmarkedStatuses, ListTimeline, @@ -219,7 +219,7 @@ class SwitchingColumnsArea extends React.PureComponent { - + ); diff --git a/app/javascript/mastodon/features/ui/util/react_router_helpers.js b/app/javascript/mastodon/features/ui/util/react_router_helpers.js index a65d79def..2ee06c3ff 100644 --- a/app/javascript/mastodon/features/ui/util/react_router_helpers.js +++ b/app/javascript/mastodon/features/ui/util/react_router_helpers.js @@ -1,7 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import { Switch, Route } from 'react-router-dom'; - +import StackTrace from 'stacktrace-js'; import ColumnLoading from '../components/column_loading'; import BundleColumnError from '../components/bundle_column_error'; import BundleContainer from '../containers/bundle_container'; @@ -42,8 +42,38 @@ export class WrappedRoute extends React.Component { componentParams: {}, }; + static getDerivedStateFromError () { + return { + hasError: true, + }; + }; + + state = { + hasError: false, + stacktrace: '', + }; + + componentDidCatch (error) { + StackTrace.fromError(error).then(stackframes => { + this.setState({ stacktrace: error.toString() + '\n' + stackframes.map(frame => frame.toString()).join('\n') }); + }).catch(err => { + console.error(err); + }); + } + renderComponent = ({ match }) => { const { component, content, multiColumn, componentParams } = this.props; + const { hasError, stacktrace } = this.state; + + if (hasError) { + return ( + + ); + } return ( @@ -59,7 +89,7 @@ export class WrappedRoute extends React.Component { } renderError = (props) => { - return ; + return ; } render () { diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 107a4e586..afe9f9da9 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -89,6 +89,15 @@ cursor: default; } + &.copyable { + transition: background 300ms linear; + } + + &.copied { + background: $valid-value-color; + transition: none; + } + &::-moz-focus-inner { border: 0; } @@ -2656,7 +2665,8 @@ $ui-header-height: 55px; .column-header, .column-back-button, - .scrollable { + .scrollable, + .error-column { border-radius: 0 !important; } } @@ -4292,7 +4302,6 @@ a.status-card.compact:hover { } .empty-column-indicator, -.error-column, .follow_requests-unlocked_explanation { color: $dark-text-color; background: $ui-base-color; @@ -4330,7 +4339,47 @@ a.status-card.compact:hover { } .error-column { + padding: 20px; + background: $ui-base-color; + border-radius: 4px; + display: flex; + flex: 1 1 auto; + align-items: center; + justify-content: center; flex-direction: column; + cursor: default; + + &__image { + max-width: 350px; + margin-top: -50px; + } + + &__message { + text-align: center; + color: $darker-text-color; + font-size: 15px; + line-height: 22px; + + h1 { + font-size: 28px; + line-height: 33px; + font-weight: 700; + margin-bottom: 15px; + color: $primary-text-color; + } + + p { + max-width: 48ch; + } + + &__actions { + margin-top: 30px; + display: flex; + gap: 10px; + align-items: center; + justify-content: center; + } + } } @keyframes heartbeat { From c2c14331b2c04293d8c3f94950027cf9633fd18a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 23 Oct 2022 14:05:18 +0200 Subject: [PATCH 534/652] Fix PWA manifest using `/web` paths (#19421) --- app/javascript/mastodon/service_worker/entry.js | 15 +++------------ app/serializers/manifest_serializer.rb | 6 +++--- 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/app/javascript/mastodon/service_worker/entry.js b/app/javascript/mastodon/service_worker/entry.js index e4c66cc00..4ec16d8e2 100644 --- a/app/javascript/mastodon/service_worker/entry.js +++ b/app/javascript/mastodon/service_worker/entry.js @@ -60,24 +60,15 @@ registerRoute( self.addEventListener('install', function(event) { event.waitUntil(Promise.all([openWebCache(), fetchRoot()]).then(([cache, root]) => cache.put('/', root))); }); + self.addEventListener('activate', function(event) { event.waitUntil(self.clients.claim()); }); + self.addEventListener('fetch', function(event) { const url = new URL(event.request.url); - if (url.pathname.startsWith('/web/')) { - const asyncResponse = fetchRoot(); - const asyncCache = openWebCache(); - - event.respondWith(asyncResponse.then( - response => { - const clonedResponse = response.clone(); - asyncCache.then(cache => cache.put('/', clonedResponse)).catch(); - return response; - }, - () => asyncCache.then(cache => cache.match('/')))); - } else if (url.pathname === '/auth/sign_out') { + if (url.pathname === '/auth/sign_out') { const asyncResponse = fetch(event.request); const asyncCache = openWebCache(); diff --git a/app/serializers/manifest_serializer.rb b/app/serializers/manifest_serializer.rb index 6b5296480..fb7ab563c 100644 --- a/app/serializers/manifest_serializer.rb +++ b/app/serializers/manifest_serializer.rb @@ -52,7 +52,7 @@ class ManifestSerializer < ActiveModel::Serializer end def start_url - '/web/home' + '/home' end def scope @@ -77,11 +77,11 @@ class ManifestSerializer < ActiveModel::Serializer [ { name: 'Compose new post', - url: '/web/publish', + url: '/publish', }, { name: 'Notifications', - url: '/web/notifications', + url: '/notifications', }, ] end From 1fd6460b02d2e73c94e7c6b1fa8fdc4d2ae36241 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 23 Oct 2022 15:58:24 +0200 Subject: [PATCH 535/652] Change floating action button to be a button in header in web UI (#19422) - Fix theme color - Fix elephant being too big on error page on small screens - Remove "Follows and Followers" link from navigation panel --- .../features/ui/components/columns_area.js | 26 ++----------- .../mastodon/features/ui/components/header.js | 21 +++++++--- .../ui/components/navigation_panel.js | 1 - app/javascript/mastodon/features/ui/index.js | 2 +- .../styles/mastodon/components.scss | 39 +------------------ app/serializers/manifest_serializer.rb | 2 +- app/views/layouts/application.html.haml | 2 +- 7 files changed, 25 insertions(+), 68 deletions(-) diff --git a/app/javascript/mastodon/features/ui/components/columns_area.js b/app/javascript/mastodon/features/ui/components/columns_area.js index 9ee6fca43..f4824f045 100644 --- a/app/javascript/mastodon/features/ui/components/columns_area.js +++ b/app/javascript/mastodon/features/ui/components/columns_area.js @@ -1,9 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { defineMessages, injectIntl } from 'react-intl'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { Link } from 'react-router-dom'; import BundleContainer from '../containers/bundle_container'; import ColumnLoading from './column_loading'; import DrawerLoading from './drawer_loading'; @@ -21,10 +19,8 @@ import { ListTimeline, Directory, } from '../../ui/util/async-components'; -import Icon from 'mastodon/components/icon'; import ComposePanel from './compose_panel'; import NavigationPanel from './navigation_panel'; - import { supportsPassiveEvents } from 'detect-passive-events'; import { scrollRight } from '../../../scroll'; @@ -43,22 +39,13 @@ const componentMap = { 'DIRECTORY': Directory, }; -const messages = defineMessages({ - publish: { id: 'compose_form.publish', defaultMessage: 'Publish' }, -}); - -const shouldHideFAB = path => path.match(/^\/statuses\/|^\/@[^/]+\/\d+|^\/publish|^\/explore|^\/getting-started|^\/start/); - -export default @(component => injectIntl(component, { withRef: true })) -class ColumnsArea extends ImmutablePureComponent { +export default class ColumnsArea extends ImmutablePureComponent { static contextTypes = { router: PropTypes.object.isRequired, - identity: PropTypes.object.isRequired, }; static propTypes = { - intl: PropTypes.object.isRequired, columns: ImmutablePropTypes.list.isRequired, isModalOpen: PropTypes.bool.isRequired, singleColumn: PropTypes.bool, @@ -143,17 +130,14 @@ class ColumnsArea extends ImmutablePureComponent { } renderError = (props) => { - return ; + return ; } render () { - const { columns, children, singleColumn, isModalOpen, intl } = this.props; + const { columns, children, singleColumn, isModalOpen } = this.props; const { renderComposePanel } = this.state; - const { signedIn } = this.context.identity; if (singleColumn) { - const floatingActionButton = (!signedIn || shouldHideFAB(this.context.router.history.location.pathname)) ? null : ; - return (
@@ -162,7 +146,7 @@ class ColumnsArea extends ImmutablePureComponent {
-
+
{children}
@@ -172,8 +156,6 @@ class ColumnsArea extends ImmutablePureComponent {
- - {floatingActionButton}
); } diff --git a/app/javascript/mastodon/features/ui/components/header.js b/app/javascript/mastodon/features/ui/components/header.js index c49f48cc9..a1c281315 100644 --- a/app/javascript/mastodon/features/ui/components/header.js +++ b/app/javascript/mastodon/features/ui/components/header.js @@ -1,6 +1,6 @@ import React from 'react'; import Logo from 'mastodon/components/logo'; -import { Link } from 'react-router-dom'; +import { Link, withRouter } from 'react-router-dom'; import { FormattedMessage } from 'react-intl'; import { registrationsOpen, me } from 'mastodon/initial_state'; import Avatar from 'mastodon/components/avatar'; @@ -16,25 +16,36 @@ const Account = connect(state => ({ )); -export default class Header extends React.PureComponent { +export default @withRouter +class Header extends React.PureComponent { static contextTypes = { identity: PropTypes.object, }; + static propTypes = { + location: PropTypes.object, + }; + render () { const { signedIn } = this.context.identity; + const { location } = this.props; let content; if (signedIn) { - content = ; + content = ( + <> + {location.pathname !== '/publish' && } + + + ); } else { content = ( - + <> - + ); } diff --git a/app/javascript/mastodon/features/ui/components/navigation_panel.js b/app/javascript/mastodon/features/ui/components/navigation_panel.js index 757ef54ae..10678f7d8 100644 --- a/app/javascript/mastodon/features/ui/components/navigation_panel.js +++ b/app/javascript/mastodon/features/ui/components/navigation_panel.js @@ -84,7 +84,6 @@ class NavigationPanel extends React.Component {
- )} diff --git a/app/javascript/mastodon/features/ui/index.js b/app/javascript/mastodon/features/ui/index.js index 7cda5e106..298f2111d 100644 --- a/app/javascript/mastodon/features/ui/index.js +++ b/app/javascript/mastodon/features/ui/index.js @@ -145,7 +145,7 @@ class SwitchingColumnsArea extends React.PureComponent { setRef = c => { if (c) { - this.node = c.getWrappedInstance(); + this.node = c; } } diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index afe9f9da9..cca29161a 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -2565,30 +2565,6 @@ $ui-header-height: 55px; } } -.floating-action-button { - position: fixed; - display: flex; - justify-content: center; - align-items: center; - width: 3.9375rem; - height: 3.9375rem; - bottom: 1.3125rem; - right: 1.3125rem; - background: darken($ui-highlight-color, 2%); - color: $white; - border-radius: 50%; - font-size: 21px; - line-height: 21px; - text-decoration: none; - box-shadow: 2px 3px 9px rgba($base-shadow-color, 0.4); - - &:hover, - &:focus, - &:active { - background: $ui-highlight-color; - } -} - @media screen and (min-width: $no-gap-breakpoint) { .tabs-bar { width: 100%; @@ -2603,7 +2579,6 @@ $ui-header-height: 55px; margin-bottom: 10px; } - .floating-action-button, .tabs-bar__link.optional { display: none; } @@ -2620,10 +2595,6 @@ $ui-header-height: 55px; @media screen and (max-width: $no-gap-breakpoint - 1px) { $sidebar-width: 285px; - .with-fab .scrollable .item-list:last-child { - padding-bottom: 5.25rem; - } - .columns-area__panels__main { width: calc(100% - $sidebar-width); } @@ -4350,6 +4321,7 @@ a.status-card.compact:hover { cursor: default; &__image { + width: 70%; max-width: 350px; margin-top: -50px; } @@ -7270,6 +7242,7 @@ noscript { &__buttons { display: flex; align-items: center; + gap: 8px; padding-top: 55px; overflow: hidden; @@ -7279,14 +7252,6 @@ noscript { box-sizing: content-box; padding: 2px; } - - & > .icon-button { - margin-right: 8px; - } - - .button { - margin: 0 8px; - } } &__name { diff --git a/app/serializers/manifest_serializer.rb b/app/serializers/manifest_serializer.rb index fb7ab563c..5604325be 100644 --- a/app/serializers/manifest_serializer.rb +++ b/app/serializers/manifest_serializer.rb @@ -40,7 +40,7 @@ class ManifestSerializer < ActiveModel::Serializer end def theme_color - '#6364FF' + '#191b22' end def background_color diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 3e50de3fb..52cdce7c6 100755 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -21,7 +21,7 @@ %link{ rel: 'mask-icon', href: asset_pack_path('media/images/logo-symbol-icon.svg'), color: '#6364FF' }/ %link{ rel: 'manifest', href: manifest_path(format: :json) }/ - %meta{ name: 'theme-color', content: '#6364FF' }/ + %meta{ name: 'theme-color', content: '#191b22' }/ %meta{ name: 'apple-mobile-web-app-capable', content: 'yes' }/ %meta{ name: 'apple-itunes-app', content: 'app-id=1571998974' }/ From 3124f946ee734f59bfd6a96609f1003d29413e8e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 23 Oct 2022 17:46:35 +0200 Subject: [PATCH 536/652] New Crowdin updates (#19405) * New translations en.yml (Kazakh) * New translations en.json (English, United Kingdom) * New translations en.json (Estonian) * New translations en.yml (Estonian) * New translations en.json (Latvian) * New translations en.yml (Latvian) * New translations en.json (Hindi) * New translations en.yml (Hindi) * New translations en.json (Malay) * New translations en.yml (Malay) * New translations en.json (Telugu) * New translations en.yml (Telugu) * New translations en.yml (Occitan) * New translations en.json (Serbian (Latin)) * New translations en.yml (Sanskrit) * New translations en.json (Standard Moroccan Tamazight) * New translations en.yml (Silesian) * New translations en.json (Silesian) * New translations en.yml (Taigi) * New translations en.json (Taigi) * New translations en.yml (Kabyle) * New translations en.json (Kabyle) * New translations en.json (Sanskrit) * New translations en.yml (Serbian (Latin)) * New translations en.yml (Sardinian) * New translations en.json (Sardinian) * New translations en.yml (Corsican) * New translations en.json (Corsican) * New translations en.yml (Sorani (Kurdish)) * New translations en.json (Sorani (Kurdish)) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.json (Kurmanji (Kurdish)) * New translations en.yml (Standard Moroccan Tamazight) * New translations en.json (Catalan) * New translations en.json (Polish) * New translations en.json (Slovenian) * New translations en.json (Ukrainian) * New translations en.json (Latvian) * New translations en.json (Portuguese) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Hungarian) * New translations en.json (Italian) * New translations en.json (Greek) * New translations en.json (Ukrainian) * New translations en.json (Spanish, Argentina) * New translations en.json (Ido) * New translations en.json (Chinese Traditional) * New translations en.json (Danish) * New translations en.json (Japanese) * New translations en.json (Japanese) * New translations en.json (Galician) * New translations en.yml (Hungarian) * New translations en.yml (Arabic) * New translations en.yml (Catalan) * New translations en.yml (Danish) * New translations en.yml (Greek) * New translations en.yml (French) * New translations en.yml (Basque) * New translations en.yml (Finnish) * New translations en.yml (Hebrew) * New translations simple_form.en.yml (Czech) * New translations en.yml (German) * New translations en.yml (Czech) * New translations en.yml (Spanish) * New translations en.yml (Turkish) * New translations en.yml (Albanian) * New translations en.yml (Ukrainian) * New translations en.yml (Ido) * New translations en.yml (Chinese Simplified) * New translations en.yml (Thai) * New translations en.yml (Italian) * New translations en.yml (Japanese) * New translations en.yml (Georgian) * New translations en.yml (Armenian) * New translations en.yml (Swedish) * New translations en.yml (Chinese Traditional) * New translations en.yml (Vietnamese) * New translations en.yml (Galician) * New translations en.yml (Icelandic) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Indonesian) * New translations en.yml (Serbian (Cyrillic)) * New translations en.yml (Slovenian) * New translations en.yml (Norwegian) * New translations en.yml (Korean) * New translations en.yml (Lithuanian) * New translations en.yml (Dutch) * New translations simple_form.en.yml (Dutch) * New translations en.yml (Polish) * New translations en.yml (Portuguese) * New translations en.yml (Russian) * New translations en.yml (Slovak) * New translations en.yml (Persian) * New translations en.yml (Welsh) * New translations en.yml (Esperanto) * New translations en.yml (Chinese Traditional, Hong Kong) * New translations en.yml (Breton) * New translations en.yml (Sinhala) * New translations en.yml (Scottish Gaelic) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Spanish, Mexico) * New translations en.yml (Norwegian Nynorsk) * New translations en.yml (Kazakh) * New translations en.yml (Estonian) * New translations en.yml (Latvian) * New translations en.yml (Malay) * New translations en.yml (Asturian) * New translations simple_form.en.yml (French) * New translations simple_form.en.yml (Basque) * New translations simple_form.en.yml (Spanish) * New translations simple_form.en.yml (Afrikaans) * New translations simple_form.en.yml (Arabic) * New translations simple_form.en.yml (Bulgarian) * New translations simple_form.en.yml (Catalan) * New translations simple_form.en.yml (Danish) * New translations simple_form.en.yml (German) * New translations simple_form.en.yml (Greek) * New translations simple_form.en.yml (Frisian) * New translations simple_form.en.yml (Finnish) * New translations simple_form.en.yml (Romanian) * New translations simple_form.en.yml (Hebrew) * New translations simple_form.en.yml (Hungarian) * New translations simple_form.en.yml (Armenian) * New translations simple_form.en.yml (Italian) * New translations simple_form.en.yml (Japanese) * New translations simple_form.en.yml (Georgian) * New translations simple_form.en.yml (Korean) * New translations simple_form.en.yml (Vietnamese) * New translations en.yml (Occitan) * New translations en.yml (Serbian (Latin)) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.yml (Sorani (Kurdish)) * New translations en.yml (Corsican) * New translations en.yml (Sardinian) * New translations simple_form.en.yml (Chinese Simplified) * New translations en.yml (Kabyle) * New translations en.yml (Standard Moroccan Tamazight) * New translations simple_form.en.yml (Sinhala) * New translations simple_form.en.yml (Polish) * New translations simple_form.en.yml (Norwegian) * New translations simple_form.en.yml (Malayalam) * New translations simple_form.en.yml (Welsh) * New translations simple_form.en.yml (Esperanto) * New translations simple_form.en.yml (Chinese Traditional, Hong Kong) * New translations simple_form.en.yml (Tatar) * New translations simple_form.en.yml (Breton) * New translations simple_form.en.yml (Estonian) * New translations simple_form.en.yml (Scottish Gaelic) * New translations simple_form.en.yml (Asturian) * New translations simple_form.en.yml (Occitan) * New translations simple_form.en.yml (Serbian (Latin)) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Sorani (Kurdish)) * New translations simple_form.en.yml (Corsican) * New translations simple_form.en.yml (Sardinian) * New translations simple_form.en.yml (Latvian) * New translations simple_form.en.yml (Kazakh) * New translations simple_form.en.yml (Portuguese) * New translations simple_form.en.yml (Galician) * New translations simple_form.en.yml (Russian) * New translations simple_form.en.yml (Slovak) * New translations simple_form.en.yml (Slovenian) * New translations simple_form.en.yml (Albanian) * New translations simple_form.en.yml (Serbian (Cyrillic)) * New translations simple_form.en.yml (Swedish) * New translations simple_form.en.yml (Turkish) * New translations simple_form.en.yml (Ukrainian) * New translations simple_form.en.yml (Chinese Traditional) * New translations simple_form.en.yml (Icelandic) * New translations simple_form.en.yml (Norwegian Nynorsk) * New translations simple_form.en.yml (Portuguese, Brazilian) * New translations simple_form.en.yml (Indonesian) * New translations simple_form.en.yml (Persian) * New translations simple_form.en.yml (Tamil) * New translations simple_form.en.yml (Spanish, Argentina) * New translations simple_form.en.yml (Spanish, Mexico) * New translations simple_form.en.yml (Bengali) * New translations simple_form.en.yml (Thai) * New translations simple_form.en.yml (Croatian) * New translations simple_form.en.yml (Kabyle) * New translations simple_form.en.yml (Ido) * New translations simple_form.en.yml (Standard Moroccan Tamazight) * New translations en.yml (Catalan) * New translations en.yml (Greek) * New translations en.yml (Italian) * New translations en.yml (Polish) * New translations simple_form.en.yml (Polish) * New translations simple_form.en.yml (Greek) * New translations simple_form.en.yml (Italian) * New translations en.yml (Czech) * New translations en.yml (Spanish) * New translations simple_form.en.yml (Czech) * New translations en.json (Spanish) * New translations en.yml (Catalan) * New translations simple_form.en.yml (Polish) * New translations simple_form.en.yml (Spanish) * New translations simple_form.en.yml (Catalan) * New translations simple_form.en.yml (Italian) * New translations en.yml (Portuguese) * New translations en.yml (Latvian) * New translations simple_form.en.yml (Portuguese) * New translations en.json (Czech) * New translations simple_form.en.yml (Czech) * New translations en.yml (Portuguese) * New translations en.yml (Latvian) * New translations simple_form.en.yml (Polish) * New translations simple_form.en.yml (Portuguese) * New translations simple_form.en.yml (Latvian) * New translations en.yml (Korean) * New translations en.yml (Chinese Traditional) * New translations simple_form.en.yml (Hungarian) * New translations simple_form.en.yml (Chinese Traditional) * New translations en.yml (Ukrainian) * New translations en.yml (Danish) * New translations en.json (Hungarian) * New translations en.yml (Hungarian) * New translations en.yml (Chinese Traditional) * New translations en.yml (Spanish, Argentina) * New translations simple_form.en.yml (Hungarian) * New translations devise.en.yml (Hungarian) * New translations doorkeeper.en.yml (Hungarian) * New translations simple_form.en.yml (Ukrainian) * New translations simple_form.en.yml (Chinese Traditional) * New translations simple_form.en.yml (Spanish, Argentina) * New translations en.yml (Ukrainian) * New translations en.yml (Danish) * New translations en.yml (Hungarian) * New translations en.yml (Japanese) * New translations simple_form.en.yml (Danish) * New translations simple_form.en.yml (Hungarian) * New translations simple_form.en.yml (Ukrainian) * New translations en.yml (Hungarian) * New translations en.yml (Japanese) * New translations simple_form.en.yml (Ukrainian) * New translations en.yml (Thai) * New translations en.json (Thai) * New translations simple_form.en.yml (Thai) * New translations en.yml (Ido) * New translations simple_form.en.yml (Ido) * New translations en.yml (Ido) * New translations simple_form.en.yml (Ido) * New translations en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations en.json (Vietnamese) * New translations en.yml (Slovenian) * New translations simple_form.en.yml (Slovenian) * New translations en.json (Irish) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 10 +- app/javascript/mastodon/locales/ar.json | 10 +- app/javascript/mastodon/locales/ast.json | 10 +- app/javascript/mastodon/locales/bg.json | 10 +- app/javascript/mastodon/locales/bn.json | 10 +- app/javascript/mastodon/locales/br.json | 10 +- app/javascript/mastodon/locales/ca.json | 16 ++- app/javascript/mastodon/locales/ckb.json | 10 +- app/javascript/mastodon/locales/co.json | 10 +- app/javascript/mastodon/locales/cs.json | 16 ++- app/javascript/mastodon/locales/cy.json | 10 +- app/javascript/mastodon/locales/da.json | 16 ++- app/javascript/mastodon/locales/de.json | 10 +- .../mastodon/locales/defaultMessages.json | 49 +++++-- app/javascript/mastodon/locales/el.json | 16 ++- app/javascript/mastodon/locales/en-GB.json | 10 +- app/javascript/mastodon/locales/en.json | 10 +- app/javascript/mastodon/locales/eo.json | 10 +- app/javascript/mastodon/locales/es-AR.json | 16 ++- app/javascript/mastodon/locales/es-MX.json | 16 ++- app/javascript/mastodon/locales/es.json | 16 ++- app/javascript/mastodon/locales/et.json | 10 +- app/javascript/mastodon/locales/eu.json | 10 +- app/javascript/mastodon/locales/fa.json | 10 +- app/javascript/mastodon/locales/fi.json | 10 +- app/javascript/mastodon/locales/fr.json | 10 +- app/javascript/mastodon/locales/fy.json | 10 +- app/javascript/mastodon/locales/ga.json | 40 +++--- app/javascript/mastodon/locales/gd.json | 10 +- app/javascript/mastodon/locales/gl.json | 16 ++- app/javascript/mastodon/locales/he.json | 10 +- app/javascript/mastodon/locales/hi.json | 10 +- app/javascript/mastodon/locales/hr.json | 10 +- app/javascript/mastodon/locales/hu.json | 26 ++-- app/javascript/mastodon/locales/hy.json | 10 +- app/javascript/mastodon/locales/id.json | 10 +- app/javascript/mastodon/locales/io.json | 16 ++- app/javascript/mastodon/locales/is.json | 10 +- app/javascript/mastodon/locales/it.json | 16 ++- app/javascript/mastodon/locales/ja.json | 22 +-- app/javascript/mastodon/locales/ka.json | 10 +- app/javascript/mastodon/locales/kab.json | 10 +- app/javascript/mastodon/locales/kk.json | 10 +- app/javascript/mastodon/locales/kn.json | 10 +- app/javascript/mastodon/locales/ko.json | 10 +- app/javascript/mastodon/locales/ku.json | 16 ++- app/javascript/mastodon/locales/kw.json | 10 +- app/javascript/mastodon/locales/lt.json | 10 +- app/javascript/mastodon/locales/lv.json | 16 ++- app/javascript/mastodon/locales/mk.json | 10 +- app/javascript/mastodon/locales/ml.json | 10 +- app/javascript/mastodon/locales/mr.json | 10 +- app/javascript/mastodon/locales/ms.json | 10 +- app/javascript/mastodon/locales/nl.json | 10 +- app/javascript/mastodon/locales/nn.json | 10 +- app/javascript/mastodon/locales/no.json | 10 +- app/javascript/mastodon/locales/oc.json | 10 +- app/javascript/mastodon/locales/pa.json | 10 +- app/javascript/mastodon/locales/pl.json | 16 ++- app/javascript/mastodon/locales/pt-BR.json | 10 +- app/javascript/mastodon/locales/pt-PT.json | 16 ++- app/javascript/mastodon/locales/ro.json | 10 +- app/javascript/mastodon/locales/ru.json | 10 +- app/javascript/mastodon/locales/sa.json | 10 +- app/javascript/mastodon/locales/sc.json | 10 +- app/javascript/mastodon/locales/si.json | 10 +- app/javascript/mastodon/locales/sk.json | 10 +- app/javascript/mastodon/locales/sl.json | 22 +-- app/javascript/mastodon/locales/sq.json | 10 +- app/javascript/mastodon/locales/sr-Latn.json | 10 +- app/javascript/mastodon/locales/sr.json | 10 +- app/javascript/mastodon/locales/sv.json | 10 +- app/javascript/mastodon/locales/szl.json | 10 +- app/javascript/mastodon/locales/ta.json | 10 +- app/javascript/mastodon/locales/tai.json | 10 +- app/javascript/mastodon/locales/te.json | 10 +- app/javascript/mastodon/locales/th.json | 26 ++-- app/javascript/mastodon/locales/tr.json | 10 +- app/javascript/mastodon/locales/tt.json | 10 +- app/javascript/mastodon/locales/ug.json | 10 +- app/javascript/mastodon/locales/uk.json | 16 ++- app/javascript/mastodon/locales/ur.json | 10 +- app/javascript/mastodon/locales/vi.json | 16 ++- app/javascript/mastodon/locales/zgh.json | 10 +- app/javascript/mastodon/locales/zh-CN.json | 10 +- app/javascript/mastodon/locales/zh-HK.json | 10 +- app/javascript/mastodon/locales/zh-TW.json | 16 ++- config/locales/ar.yml | 58 -------- config/locales/ast.yml | 8 -- config/locales/br.yml | 2 - config/locales/ca.yml | 87 ++++-------- config/locales/ckb.yml | 57 -------- config/locales/co.yml | 58 -------- config/locales/cs.yml | 86 ++++-------- config/locales/cy.yml | 55 -------- config/locales/da.yml | 87 ++++-------- config/locales/de.yml | 64 --------- config/locales/devise.hu.yml | 4 +- config/locales/doorkeeper.hu.yml | 14 +- config/locales/el.yml | 70 ++-------- config/locales/eo.yml | 52 -------- config/locales/es-AR.yml | 87 ++++-------- config/locales/es-MX.yml | 64 --------- config/locales/es.yml | 87 ++++-------- config/locales/et.yml | 55 -------- config/locales/eu.yml | 58 -------- config/locales/fa.yml | 58 -------- config/locales/fi.yml | 58 -------- config/locales/fr.yml | 63 --------- config/locales/gd.yml | 58 -------- config/locales/gl.yml | 64 --------- config/locales/he.yml | 58 -------- config/locales/hu.yml | 125 ++++++------------ config/locales/hy.yml | 24 ---- config/locales/id.yml | 58 -------- config/locales/io.yml | 87 ++++-------- config/locales/is.yml | 64 --------- config/locales/it.yml | 87 ++++-------- config/locales/ja.yml | 78 +++-------- config/locales/ka.yml | 37 ------ config/locales/kab.yml | 9 -- config/locales/kk.yml | 55 -------- config/locales/ko.yml | 66 +-------- config/locales/ku.yml | 69 +--------- config/locales/lt.yml | 46 ------- config/locales/lv.yml | 87 ++++-------- config/locales/ms.yml | 16 --- config/locales/nl.yml | 64 --------- config/locales/nn.yml | 57 -------- config/locales/no.yml | 57 -------- config/locales/oc.yml | 53 -------- config/locales/pl.yml | 87 ++++-------- config/locales/pt-BR.yml | 58 -------- config/locales/pt-PT.yml | 82 +++--------- config/locales/ru.yml | 61 --------- config/locales/sc.yml | 58 -------- config/locales/si.yml | 58 -------- config/locales/simple_form.ca.yml | 31 +++++ config/locales/simple_form.cs.yml | 23 ++++ config/locales/simple_form.da.yml | 36 +++++ config/locales/simple_form.el.yml | 5 + config/locales/simple_form.es-AR.yml | 37 ++++++ config/locales/simple_form.es.yml | 37 ++++++ config/locales/simple_form.hu.yml | 29 +++- config/locales/simple_form.io.yml | 37 ++++++ config/locales/simple_form.it.yml | 37 ++++++ config/locales/simple_form.ku.yml | 2 + config/locales/simple_form.lv.yml | 37 ++++++ config/locales/simple_form.pl.yml | 37 ++++++ config/locales/simple_form.pt-PT.yml | 20 +++ config/locales/simple_form.sl.yml | 29 ++++ config/locales/simple_form.th.yml | 16 +++ config/locales/simple_form.uk.yml | 37 ++++++ config/locales/simple_form.zh-TW.yml | 37 ++++++ config/locales/sk.yml | 55 -------- config/locales/sl.yml | 86 ++++-------- config/locales/sq.yml | 64 --------- config/locales/sr-Latn.yml | 25 ---- config/locales/sr.yml | 46 ------- config/locales/sv.yml | 54 -------- config/locales/th.yml | 81 +++--------- config/locales/tr.yml | 64 --------- config/locales/uk.yml | 87 ++++-------- config/locales/vi.yml | 64 --------- config/locales/zgh.yml | 3 - config/locales/zh-CN.yml | 64 --------- config/locales/zh-HK.yml | 58 -------- config/locales/zh-TW.yml | 87 ++++-------- 168 files changed, 1713 insertions(+), 3664 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index fafa60920..96cd5bfe9 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", - "bundle_column_error.body": "Something went wrong while loading this component.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Probeer weer", - "bundle_column_error.title": "Netwerk fout", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Iets het verkeerd gegaan terwyl hierdie komponent besig was om te laai.", "bundle_modal_error.retry": "Probeer weer", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 07b786ca0..f85d15a56 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -79,9 +79,15 @@ "audio.hide": "إخفاء المقطع الصوتي", "autosuggest_hashtag.per_week": "{count} في الأسبوع", "boost_modal.combo": "يُمكنك الضّغط على {combo} لتخطي هذا في المرة المُقبلة", - "bundle_column_error.body": "لقد حدث خطأ ما أثناء تحميل هذا العنصر.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "إعادة المُحاولة", - "bundle_column_error.title": "خطأ في الشبكة", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "إغلاق", "bundle_modal_error.message": "لقد حدث خطأ ما أثناء تحميل هذا العنصر.", "bundle_modal_error.retry": "إعادة المُحاولة", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 325b2e3e5..94eaac85e 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per selmana", "boost_modal.combo": "Pues primir {combo} pa saltar esto la próxima vegada", - "bundle_column_error.body": "Asocedió daqué malo mentanto se cargaba esti componente.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Try again", - "bundle_column_error.title": "Network error", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Asocedió daqué malo mentanto se cargaba esti componente.", "bundle_modal_error.retry": "Try again", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 7c5bde927..8f1b4c770 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -79,9 +79,15 @@ "audio.hide": "Скриване на видеото", "autosuggest_hashtag.per_week": "{count} на седмица", "boost_modal.combo": "Можете да натиснете {combo}, за да пропуснете това следващия път", - "bundle_column_error.body": "Нещо се обърка при зареждането на този компонент.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Опитай отново", - "bundle_column_error.title": "Мрежова грешка", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Затваряне", "bundle_modal_error.message": "Нещо се обърка при зареждането на този компонент.", "bundle_modal_error.retry": "Опитайте отново", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index fef216cde..f0852da21 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "প্রতি সপ্তাহে {count}", "boost_modal.combo": "পরেরবার আপনি {combo} টিপলে এটি আর আসবে না", - "bundle_column_error.body": "এই অংশটি দেখতে যেয়ে কোনো সমস্যা হয়েছে।.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "আবার চেষ্টা করুন", - "bundle_column_error.title": "নেটওয়ার্কের সমস্যা", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "বন্ধ করুন", "bundle_modal_error.message": "এই অংশটি দেখাতে যেয়ে কোনো সমস্যা হয়েছে।.", "bundle_modal_error.retry": "আবার চেষ্টা করুন", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index bedf197d7..9ed8c1236 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} bep sizhun", "boost_modal.combo": "Ar wezh kentañ e c'halliot gwaskañ war {combo} evit tremen hebiou", - "bundle_column_error.body": "Degouezhet ez eus bet ur fazi en ur gargañ an elfenn-mañ.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Klask en-dro", - "bundle_column_error.title": "Fazi rouedad", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Serriñ", "bundle_modal_error.message": "Degouezhet ez eus bet ur fazi en ur gargañ an elfenn-mañ.", "bundle_modal_error.retry": "Klask en-dro", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index f6e229201..c6575e85a 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -27,9 +27,9 @@ "account.edit_profile": "Edita el perfil", "account.enable_notifications": "Notifica’m les publicacions de @{name}", "account.endorse": "Recomana en el teu perfil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Darrer apunt el {date}", + "account.featured_tags.last_status_never": "Sense apunts", + "account.featured_tags.title": "etiquetes destacades de {name}", "account.follow": "Segueix", "account.followers": "Seguidors", "account.followers.empty": "Ningú segueix aquest usuari encara.", @@ -79,9 +79,15 @@ "audio.hide": "Amaga l'àudio", "autosuggest_hashtag.per_week": "{count} per setmana", "boost_modal.combo": "Pots prémer {combo} per evitar-ho el pròxim cop", - "bundle_column_error.body": "S'ha produït un error en carregar aquest component.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Tornar-ho a provar", - "bundle_column_error.title": "Error de connexió", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Tanca", "bundle_modal_error.message": "S'ha produït un error en carregar aquest component.", "bundle_modal_error.retry": "Tornar-ho a provar", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index edd324037..d4fe8637b 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} هەرهەفتە", "boost_modal.combo": "دەتوانیت دەست بنێی بە سەر {combo} بۆ بازدان لە جاری داهاتوو", - "bundle_column_error.body": "هەڵەیەک ڕوویدا لەکاتی بارکردنی ئەم پێکهاتەیە.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "دووبارە هەوڵبدە", - "bundle_column_error.title": "هەڵيی تۆڕ", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "داخستن", "bundle_modal_error.message": "هەڵەیەک ڕوویدا لەکاتی بارکردنی ئەم پێکهاتەیە.", "bundle_modal_error.retry": "دووبارە تاقی بکەوە", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index e1681bc8a..1794cfd95 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per settimana", "boost_modal.combo": "Pudete appughjà nant'à {combo} per saltà quessa a prussima volta", - "bundle_column_error.body": "C'hè statu un prublemu caricandu st'elementu.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Pruvà torna", - "bundle_column_error.title": "Errore di cunnessione", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Chjudà", "bundle_modal_error.message": "C'hè statu un prublemu caricandu st'elementu.", "bundle_modal_error.retry": "Pruvà torna", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 40cbbba3c..c0dabc26b 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -28,8 +28,8 @@ "account.enable_notifications": "Oznamovat mi příspěvky @{name}", "account.endorse": "Zvýraznit na profilu", "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_never": "Žádné příspěvky", + "account.featured_tags.title": "Hlavní hashtagy {name}", "account.follow": "Sledovat", "account.followers": "Sledující", "account.followers.empty": "Tohoto uživatele ještě nikdo nesleduje.", @@ -79,9 +79,15 @@ "audio.hide": "Skrýt zvuk", "autosuggest_hashtag.per_week": "{count} za týden", "boost_modal.combo": "Příště můžete pro přeskočení stisknout {combo}", - "bundle_column_error.body": "Při načítání této komponenty se něco pokazilo.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Zkuste to znovu", - "bundle_column_error.title": "Chyba sítě", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Zavřít", "bundle_modal_error.message": "Při načítání této komponenty se něco pokazilo.", "bundle_modal_error.retry": "Zkusit znovu", @@ -282,7 +288,7 @@ "interaction_modal.preamble": "Protože je Mastodon decentralizovaný, pokud nemáte účet na tomto serveru, můžete použít svůj existující účet hostovaný jiným Mastodon serverem nebo kompatibilní platformou.", "interaction_modal.title.favourite": "Oblíbený příspěvek {name}", "interaction_modal.title.follow": "Sledovat {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reblog": "Zvýšit příspěvek uživatele {name}", "interaction_modal.title.reply": "Odpovědět na příspěvek uživatele {name}", "intervals.full.days": "{number, plural, one {# den} few {# dny} many {# dní} other {# dní}}", "intervals.full.hours": "{number, plural, one {# hodina} few {# hodiny} many {# hodin} other {# hodin}}", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 967bb6aea..b6ef7cb04 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} yr wythnos", "boost_modal.combo": "Mae modd gwasgu {combo} er mwyn sgipio hyn tro nesa", - "bundle_column_error.body": "Aeth rhywbeth o'i le tra'n llwytho'r elfen hon.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Ceisiwch eto", - "bundle_column_error.title": "Gwall rhwydwaith", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Cau", "bundle_modal_error.message": "Aeth rhywbeth o'i le tra'n llwytho'r elfen hon.", "bundle_modal_error.retry": "Ceiswich eto", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 97e5eeb5a..25bc52289 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -27,9 +27,9 @@ "account.edit_profile": "Redigér profil", "account.enable_notifications": "Advisér mig, når @{name} poster", "account.endorse": "Fremhæv på profil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Seneste indlæg {date}", + "account.featured_tags.last_status_never": "Ingen indlæg", + "account.featured_tags.title": "{name}s fremhævede hashtags", "account.follow": "Følg", "account.followers": "Følgere", "account.followers.empty": "Ingen følger denne bruger endnu.", @@ -79,9 +79,15 @@ "audio.hide": "Skjul lyd", "autosuggest_hashtag.per_week": "{count} pr. uge", "boost_modal.combo": "Du kan trykke på {combo} for at overspringe dette næste gang", - "bundle_column_error.body": "Noget gik galt under indlæsningen af denne komponent.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Forsøg igen", - "bundle_column_error.title": "Netværksfejl", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Luk", "bundle_modal_error.message": "Noget gik galt under indlæsningen af denne komponent.", "bundle_modal_error.retry": "Forsøg igen", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index a1b799300..78d43a448 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -79,9 +79,15 @@ "audio.hide": "Audio stummschalten", "autosuggest_hashtag.per_week": "{count} pro Woche", "boost_modal.combo": "Drücke {combo}, um dieses Fenster zu überspringen", - "bundle_column_error.body": "Etwas ist beim Laden schiefgelaufen.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Erneut versuchen", - "bundle_column_error.title": "Netzwerkfehler", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Schließen", "bundle_modal_error.message": "Etwas ist beim Laden schiefgelaufen.", "bundle_modal_error.retry": "Erneut versuchen", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 3b4cd8adb..9e5462f7f 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -3702,16 +3702,44 @@ { "descriptors": [ { - "defaultMessage": "Network error", - "id": "bundle_column_error.title" + "defaultMessage": "Copied", + "id": "copypaste.copied" }, { - "defaultMessage": "Something went wrong while loading this component.", - "id": "bundle_column_error.body" + "defaultMessage": "404", + "id": "bundle_column_error.routing.title" + }, + { + "defaultMessage": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "id": "bundle_column_error.routing.body" + }, + { + "defaultMessage": "Network error", + "id": "bundle_column_error.network.title" + }, + { + "defaultMessage": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "id": "bundle_column_error.network.body" + }, + { + "defaultMessage": "Oh, no!", + "id": "bundle_column_error.error.title" + }, + { + "defaultMessage": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "id": "bundle_column_error.error.body" }, { "defaultMessage": "Try again", "id": "bundle_column_error.retry" + }, + { + "defaultMessage": "Copy error report", + "id": "bundle_column_error.copy_stacktrace" + }, + { + "defaultMessage": "Go back home", + "id": "bundle_column_error.return" } ], "path": "app/javascript/mastodon/features/ui/components/bundle_column_error.json" @@ -3733,15 +3761,6 @@ ], "path": "app/javascript/mastodon/features/ui/components/bundle_modal_error.json" }, - { - "descriptors": [ - { - "defaultMessage": "Publish", - "id": "compose_form.publish" - } - ], - "path": "app/javascript/mastodon/features/ui/components/columns_area.json" - }, { "descriptors": [ { @@ -3882,6 +3901,10 @@ }, { "descriptors": [ + { + "defaultMessage": "Publish", + "id": "compose_form.publish" + }, { "defaultMessage": "Sign in", "id": "sign_in_banner.sign_in" diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 072ef0fe2..476250b37 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -27,9 +27,9 @@ "account.edit_profile": "Επεξεργασία προφίλ", "account.enable_notifications": "Έναρξη ειδοποιήσεων για τις δημοσιεύσεις του/της @{name}", "account.endorse": "Προβολή στο προφίλ", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Τελευταία δημοσίευση στις {date}", + "account.featured_tags.last_status_never": "Καμία Ανάρτηση", + "account.featured_tags.title": "προβεβλημένα hashtags του/της {name}", "account.follow": "Ακολούθησε", "account.followers": "Ακόλουθοι", "account.followers.empty": "Κανείς δεν ακολουθεί αυτό τον χρήστη ακόμα.", @@ -79,9 +79,15 @@ "audio.hide": "Απόκρυψη αρχείου ήχου", "autosuggest_hashtag.per_week": "{count} ανα εβδομάδα", "boost_modal.combo": "Μπορείς να πατήσεις {combo} για να το προσπεράσεις αυτό την επόμενη φορά", - "bundle_column_error.body": "Κάτι πήγε στραβά ενώ φορτωνόταν αυτό το στοιχείο.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Δοκίμασε ξανά", - "bundle_column_error.title": "Σφάλμα δικτύου", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Κλείσιμο", "bundle_modal_error.message": "Κάτι πήγε στραβά κατά τη φόρτωση του στοιχείου.", "bundle_modal_error.retry": "Δοκίμασε ξανά", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 1cbed4526..b6f1e0d58 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", - "bundle_column_error.body": "Something went wrong while loading this component.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Try again", - "bundle_column_error.title": "Network error", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 83a2d206a..10fe869c6 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", - "bundle_column_error.body": "Something went wrong while loading this component.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Try again", - "bundle_column_error.title": "Network error", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 708a07169..a6a80bc02 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -79,9 +79,15 @@ "audio.hide": "Kaŝi aŭdion", "autosuggest_hashtag.per_week": "{count} semajne", "boost_modal.combo": "Vi povas premi {combo} por preterpasi sekvafoje", - "bundle_column_error.body": "Io misfunkciis en la ŝargado de ĉi tiu elemento.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Provu refoje", - "bundle_column_error.title": "Eraro de reto", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Fermi", "bundle_modal_error.message": "Io misfunkciis en la ŝargado de ĉi tiu elemento.", "bundle_modal_error.retry": "Provu refoje", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 87a1f332d..c2ac35492 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -27,9 +27,9 @@ "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificarme cuando @{name} envíe mensajes", "account.endorse": "Destacar en el perfil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Último mensaje: {date}", + "account.featured_tags.last_status_never": "Sin mensajes", + "account.featured_tags.title": "Etiquetas destacadas de {name}", "account.follow": "Seguir", "account.followers": "Seguidores", "account.followers.empty": "Todavía nadie sigue a este usuario.", @@ -79,9 +79,15 @@ "audio.hide": "Ocultar audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Podés hacer clic en {combo} para saltar esto la próxima vez", - "bundle_column_error.body": "Algo salió mal al cargar este componente.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Intentá de nuevo", - "bundle_column_error.title": "Error de red", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Cerrar", "bundle_modal_error.message": "Algo salió mal al cargar este componente.", "bundle_modal_error.retry": "Intentá de nuevo", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 06b03b1b3..a667c6803 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -20,7 +20,7 @@ "account.block_domain": "Bloquear dominio {domain}", "account.blocked": "Bloqueado", "account.browse_more_on_origin_server": "Ver más en el perfil original", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Retirar solicitud de seguimiento", "account.direct": "Mensaje directo a @{name}", "account.disable_notifications": "Dejar de notificarme cuando @{name} publique algo", "account.domain_blocked": "Dominio oculto", @@ -79,9 +79,15 @@ "audio.hide": "Ocultar audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Puedes hacer clic en {combo} para saltar este aviso la próxima vez", - "bundle_column_error.body": "Algo salió mal al cargar este componente.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Inténtalo de nuevo", - "bundle_column_error.title": "Error de red", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Cerrar", "bundle_modal_error.message": "Algo salió mal al cargar este componente.", "bundle_modal_error.retry": "Inténtalo de nuevo", @@ -138,8 +144,8 @@ "confirmations.block.block_and_report": "Bloquear y Reportar", "confirmations.block.confirm": "Bloquear", "confirmations.block.message": "¿Estás seguro de que quieres bloquear a {name}?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "Retirar solicitud", + "confirmations.cancel_follow_request.message": "¿Estás seguro de que deseas retirar tu solicitud para seguir a {name}?", "confirmations.delete.confirm": "Eliminar", "confirmations.delete.message": "¿Estás seguro de que quieres borrar este toot?", "confirmations.delete_list.confirm": "Eliminar", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 53661edb1..8a8462fac 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -27,9 +27,9 @@ "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificarme cuando @{name} publique algo", "account.endorse": "Mostrar en perfil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Última publicación el {date}", + "account.featured_tags.last_status_never": "Sin publicaciones", + "account.featured_tags.title": "Etiquetas destacadas de {name}", "account.follow": "Seguir", "account.followers": "Seguidores", "account.followers.empty": "Todavía nadie sigue a este usuario.", @@ -79,9 +79,15 @@ "audio.hide": "Ocultar audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Puedes hacer clic en {combo} para saltar este aviso la próxima vez", - "bundle_column_error.body": "Algo salió mal al cargar este componente.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Inténtalo de nuevo", - "bundle_column_error.title": "Error de red", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Cerrar", "bundle_modal_error.message": "Algo salió mal al cargar este componente.", "bundle_modal_error.retry": "Inténtalo de nuevo", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 94a42a6b0..a660a9f95 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} nädalas", "boost_modal.combo": "Võite vajutada {combo}, et see järgmine kord vahele jätta", - "bundle_column_error.body": "Midagi läks valesti selle komponendi laadimisel.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Proovi uuesti", - "bundle_column_error.title": "Võrgu viga", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Sulge", "bundle_modal_error.message": "Selle komponendi laadimisel läks midagi viltu.", "bundle_modal_error.retry": "Proovi uuesti", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index a65470eb2..f8ddbd689 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} asteko", "boost_modal.combo": "{combo} sakatu dezakezu hurrengoan hau saltatzeko", - "bundle_column_error.body": "Zerbait okerra gertatu da osagai hau kargatzean.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Saiatu berriro", - "bundle_column_error.title": "Sareko errorea", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Itxi", "bundle_modal_error.message": "Zerbait okerra gertatu da osagai hau kargatzean.", "bundle_modal_error.retry": "Saiatu berriro", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 29fc0776e..f4a4d5efa 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} در هفته", "boost_modal.combo": "دکمهٔ {combo} را بزنید تا دیگر این را نبینید", - "bundle_column_error.body": "هنگام بار کردن این مولفه، اشتباهی رخ داد.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "تلاش دوباره", - "bundle_column_error.title": "خطای شبکه", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "بستن", "bundle_modal_error.message": "هنگام بار کردن این مولفه، اشتباهی رخ داد.", "bundle_modal_error.retry": "تلاش دوباره", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index adeb4c005..c0ff844cc 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -79,9 +79,15 @@ "audio.hide": "Piilota ääni", "autosuggest_hashtag.per_week": "{count} viikossa", "boost_modal.combo": "Ensi kerralla voit ohittaa tämän painamalla {combo}", - "bundle_column_error.body": "Jokin meni vikaan komponenttia ladattaessa.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Yritä uudestaan", - "bundle_column_error.title": "Verkkovirhe", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Sulje", "bundle_modal_error.message": "Jokin meni vikaan komponenttia ladattaessa.", "bundle_modal_error.retry": "Yritä uudelleen", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 90033e096..aee14a62b 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -79,9 +79,15 @@ "audio.hide": "Masquer l'audio", "autosuggest_hashtag.per_week": "{count} par semaine", "boost_modal.combo": "Vous pouvez appuyer sur {combo} pour passer ceci la prochaine fois", - "bundle_column_error.body": "Une erreur s’est produite lors du chargement de ce composant.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Réessayer", - "bundle_column_error.title": "Erreur réseau", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Fermer", "bundle_modal_error.message": "Une erreur s’est produite lors du chargement de ce composant.", "bundle_modal_error.retry": "Réessayer", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index 2837dd89c..ab1f1c23d 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", - "bundle_column_error.body": "Something went wrong while loading this component.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Try again", - "bundle_column_error.title": "Network error", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Slute", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Opnij probearje", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index b91daf814..004f1ce67 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -1,8 +1,8 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.blocks": "Freastalaithe faoi stiúir", + "about.contact": "Teagmháil:", + "about.domain_blocks.comment": "Fáth", + "about.domain_blocks.domain": "Fearann", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", @@ -11,7 +11,7 @@ "about.domain_blocks.suspended.title": "Suspended", "about.not_available": "This information has not been made available on this server.", "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.rules": "Rialacha an fhreastalaí", "account.account_note_header": "Nóta", "account.add_or_remove_from_list": "Cuir Le nó Bain De na liostaí", "account.badges.bot": "Bota", @@ -79,16 +79,22 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "Is féidir leat brúigh {combo} chun é seo a scipeáil an chéad uair eile", - "bundle_column_error.body": "Something went wrong while loading this component.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Bain triail as arís", - "bundle_column_error.title": "Network error", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Dún", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Bain triail as arís", "column.about": "About", "column.blocks": "Cuntais choiscthe", "column.bookmarks": "Leabharmharcanna", - "column.community": "Local timeline", + "column.community": "Amlíne áitiúil", "column.direct": "Direct messages", "column.directory": "Brabhsáil próifílí", "column.domain_blocks": "Blocked domains", @@ -97,7 +103,7 @@ "column.home": "Baile", "column.lists": "Liostaí", "column.mutes": "Úsáideoirí balbhaithe", - "column.notifications": "Notifications", + "column.notifications": "Fógraí", "column.pins": "Pinned post", "column.public": "Federated timeline", "column_back_button.label": "Siar", @@ -108,7 +114,7 @@ "column_header.show_settings": "Show settings", "column_header.unpin": "Díghreamaigh", "column_subheading.settings": "Socruithe", - "community.column_settings.local_only": "Local only", + "community.column_settings.local_only": "Áitiúil amháin", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Remote only", "compose.language.change": "Change language", @@ -134,15 +140,15 @@ "compose_form.spoiler.marked": "Text is hidden behind warning", "compose_form.spoiler.unmarked": "Text is not hidden", "compose_form.spoiler_placeholder": "Write your warning here", - "confirmation_modal.cancel": "Cancel", + "confirmation_modal.cancel": "Cealaigh", "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "Block", "confirmations.block.message": "Are you sure you want to block {name}?", "confirmations.cancel_follow_request.confirm": "Withdraw request", "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", - "confirmations.delete.confirm": "Delete", + "confirmations.delete.confirm": "Scrios", "confirmations.delete.message": "An bhfuil tú cinnte gur mhaith leat an phostáil seo a scriosadh?", - "confirmations.delete_list.confirm": "Delete", + "confirmations.delete_list.confirm": "Scrios", "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", "confirmations.discard_edit_media.confirm": "Faigh réidh de", "confirmations.discard_edit_media.message": "Tá athruithe neamhshlánaithe don tuarascáil gné nó réamhamharc agat, faigh réidh dóibh ar aon nós?", @@ -166,7 +172,7 @@ "copypaste.copied": "Copied", "copypaste.copy": "Copy", "directory.federated": "From known fediverse", - "directory.local": "From {domain} only", + "directory.local": "Ó {domain} amháin", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", @@ -303,7 +309,7 @@ "keyboard_shortcuts.home": "to open home timeline", "keyboard_shortcuts.hotkey": "Hotkey", "keyboard_shortcuts.legend": "to display this legend", - "keyboard_shortcuts.local": "to open local timeline", + "keyboard_shortcuts.local": "Oscail an amlíne áitiúil", "keyboard_shortcuts.mention": "to mention author", "keyboard_shortcuts.muted": "Oscail liosta na n-úsáideoirí balbhaithe", "keyboard_shortcuts.my_profile": "Oscail do phróifíl", @@ -353,7 +359,7 @@ "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", - "navigation_bar.community_timeline": "Local timeline", + "navigation_bar.community_timeline": "Amlíne áitiúil", "navigation_bar.compose": "Cum postáil nua", "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", @@ -585,7 +591,7 @@ "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", "tabs_bar.home": "Baile", - "tabs_bar.local_timeline": "Local", + "tabs_bar.local_timeline": "Áitiúil", "tabs_bar.notifications": "Notifications", "time_remaining.days": "{number, plural, one {# day} other {# days}} left", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 92b8424fb..90efdf86b 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -79,9 +79,15 @@ "audio.hide": "Falaich an fhuaim", "autosuggest_hashtag.per_week": "{count} san t-seachdain", "boost_modal.combo": "Brùth air {combo} nam b’ fheàrr leat leum a ghearradh thar seo an ath-thuras", - "bundle_column_error.body": "Chaidh rudeigin cearr nuair a dh’fheuch sinn ris a’ cho-phàirt seo a luchdadh.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Feuch ris a-rithist", - "bundle_column_error.title": "Mearachd lìonraidh", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Dùin", "bundle_modal_error.message": "Chaidh rudeigin cearr nuair a dh’fheuch sinn ris a’ cho-phàirt seo a luchdadh.", "bundle_modal_error.retry": "Feuch ris a-rithist", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 00e6ce9c0..649ed031e 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -27,9 +27,9 @@ "account.edit_profile": "Editar perfil", "account.enable_notifications": "Noficarme cando @{name} publique", "account.endorse": "Amosar no perfil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Última publicación o {date}", + "account.featured_tags.last_status_never": "Sen publicacións", + "account.featured_tags.title": "Cancelos destacados de {name}", "account.follow": "Seguir", "account.followers": "Seguidoras", "account.followers.empty": "Aínda ninguén segue esta usuaria.", @@ -79,9 +79,15 @@ "audio.hide": "Agochar audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Preme {combo} para ignorar isto na seguinte vez", - "bundle_column_error.body": "Ocorreu un erro ó cargar este compoñente.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Téntao de novo", - "bundle_column_error.title": "Fallo na rede", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Pechar", "bundle_modal_error.message": "Ocorreu un erro ó cargar este compoñente.", "bundle_modal_error.retry": "Téntao de novo", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index dfbf30a45..1d360abc4 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -79,9 +79,15 @@ "audio.hide": "השתק", "autosuggest_hashtag.per_week": "{count} לשבוע", "boost_modal.combo": "ניתן להקיש {combo} כדי לדלג בפעם הבאה", - "bundle_column_error.body": "משהו השתבש בעת טעינת הרכיב הזה.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "לנסות שוב", - "bundle_column_error.title": "שגיאת רשת", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "לסגור", "bundle_modal_error.message": "משהו השתבש בעת טעינת הרכיב הזה.", "bundle_modal_error.retry": "לנסות שוב", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index a60aa04d9..4592d65ff 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} हर सप्ताह", "boost_modal.combo": "अगली बार स्किप करने के लिए आप {combo} दबा सकते है", - "bundle_column_error.body": "इस कॉम्पोनेन्ट को लोड करते वक्त कुछ गलत हो गया", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "दुबारा कोशिश करें", - "bundle_column_error.title": "नेटवर्क त्रुटि", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "बंद", "bundle_modal_error.message": "इस कॉम्पोनेन्ट को लोड करते वक्त कुछ गलत हो गया", "bundle_modal_error.retry": "दुबारा कोशिश करें", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index 86f9cd0de..8bcad0408 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} tjedno", "boost_modal.combo": "Možete pritisnuti {combo} kako biste preskočili ovo sljedeći put", - "bundle_column_error.body": "Nešto je pošlo po zlu tijekom učitavanja ove komponente.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Pokušajte ponovno", - "bundle_column_error.title": "Greška mreže", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Zatvori", "bundle_modal_error.message": "Nešto je pošlo po zlu tijekom učitavanja ove komponente.", "bundle_modal_error.retry": "Pokušajte ponovno", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index aa5660ff8..dcf2044ed 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -27,9 +27,9 @@ "account.edit_profile": "Profil szerkesztése", "account.enable_notifications": "Figyelmeztessen, ha @{name} bejegyzést tesz közzé", "account.endorse": "Kiemelés a profilodon", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Legutolsó bejegyzés ideje: {date}", + "account.featured_tags.last_status_never": "Nincs bejegyzés", + "account.featured_tags.title": "{name} kiemelt hashtagjei", "account.follow": "Követés", "account.followers": "Követő", "account.followers.empty": "Ezt a felhasználót még senki sem követi.", @@ -79,9 +79,15 @@ "audio.hide": "Hang elrejtése", "autosuggest_hashtag.per_week": "{count} hetente", "boost_modal.combo": "Hogy átugord ezt következő alkalommal, használd {combo}", - "bundle_column_error.body": "Valami hiba történt a komponens betöltése közben.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Próbáld újra", - "bundle_column_error.title": "Hálózati hiba", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Bezárás", "bundle_modal_error.message": "Hiba történt a komponens betöltésekor.", "bundle_modal_error.retry": "Próbáld újra", @@ -212,7 +218,7 @@ "empty_column.lists": "Még nem hoztál létre listát. Ha csinálsz egyet, itt látszik majd.", "empty_column.mutes": "Még egy felhasználót sem némítottál le.", "empty_column.notifications": "Jelenleg nincsenek értesítéseid. Lépj kapcsolatba másokkal, hogy elindítsd a beszélgetést.", - "empty_column.public": "Jelenleg itt nincs semmi! Írj valamit nyilvánosan vagy kövess más szervereken levő felhasználókat, hogy megtöltsd", + "empty_column.public": "Jelenleg itt nincs semmi! Írj valamit nyilvánosan vagy kövess más kiszolgálón levő felhasználókat, hogy megtöltsd.", "error.unexpected_crash.explanation": "Egy hiba vagy böngésző inkompatibilitás miatt ez az oldal nem jeleníthető meg rendesen.", "error.unexpected_crash.explanation_addons": "Ezt az oldalt nem lehet helyesen megjeleníteni. Ezt a hibát valószínűleg egy böngésző beépülő vagy egy automatikus fordító okozza.", "error.unexpected_crash.next_steps": "Próbáld frissíteni az oldalt. Ha ez nem segít, egy másik böngészőn vagy appon keresztül még mindig használhatod a Mastodont.", @@ -516,15 +522,15 @@ "search_results.statuses_fts_disabled": "Ezen a Mastodon szerveren nem engedélyezett a bejegyzések tartalom szerinti keresése.", "search_results.title": "Keresés erre: {q}", "search_results.total": "{count, number} {count, plural, one {találat} other {találat}}", - "server_banner.about_active_users": "Az elmúlt 30 napban ezt a szervert használók száma (Havi Aktív Felhasználók)", + "server_banner.about_active_users": "Az elmúlt 30 napban ezt a kiszolgálót használók száma (Havi aktív felhasználók)", "server_banner.active_users": "aktív felhasználó", "server_banner.administered_by": "Adminisztrátor:", "server_banner.introduction": "{domain} része egy decentralizált közösségi hálónak, melyet a {mastodon} hajt meg.", "server_banner.learn_more": "Tudj meg többet", - "server_banner.server_stats": "Szerverstatisztika:", + "server_banner.server_stats": "Kiszolgálóstatisztika:", "sign_in_banner.create_account": "Fiók létrehozása", "sign_in_banner.sign_in": "Bejelentkezés", - "sign_in_banner.text": "Jelentkezz be profilok vagy hashtagek követéséhez, bejegyzések megosztásához, megválaszolásához, vagy kommunikálj a fiókodból más szerverekkel.", + "sign_in_banner.text": "Jelentkezz be profilok vagy hashtagek követéséhez, bejegyzések megosztásához, megválaszolásához, vagy kommunikálj a fiókodból más kiszolgálókkal.", "status.admin_account": "Moderációs felület megnyitása @{name} fiókhoz", "status.admin_status": "Bejegyzés megnyitása a moderációs felületen", "status.block": "@{name} letiltása", @@ -592,7 +598,7 @@ "time_remaining.minutes": "{number, plural, one {# perc} other {# perc}} van hátra", "time_remaining.moments": "Pillanatok vannak hátra", "time_remaining.seconds": "{number, plural, one {# másodperc} other {# másodperc}} van hátra", - "timeline_hint.remote_resource_not_displayed": "más szerverekről származó {resource} tartalmakat nem mutatjuk.", + "timeline_hint.remote_resource_not_displayed": "a más kiszolgálókról származó {resource} tartalmak nem jelennek meg.", "timeline_hint.resources.followers": "Követő", "timeline_hint.resources.follows": "Követett", "timeline_hint.resources.statuses": "Régi bejegyzések", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index 69749098a..5eae2c368 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "շաբաթը՝ {count}", "boost_modal.combo": "Կարող ես սեղմել {combo}՝ սա յաջորդ անգամ բաց թողնելու համար", - "bundle_column_error.body": "Այս բաղադրիչը բեռնելու ընթացքում ինչ֊որ բան խափանուեց։", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Կրկին փորձել", - "bundle_column_error.title": "Ցանցային սխալ", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Փակել", "bundle_modal_error.message": "Այս բաղադրիչը բեռնելու ընթացքում ինչ֊որ բան խափանուեց։", "bundle_modal_error.retry": "Կրկին փորձել", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 195dc793e..fd5aa3ed4 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -79,9 +79,15 @@ "audio.hide": "Indonesia", "autosuggest_hashtag.per_week": "{count} per minggu", "boost_modal.combo": "Anda dapat menekan {combo} untuk melewati ini", - "bundle_column_error.body": "Kesalahan terjadi saat memuat komponen ini.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Coba lagi", - "bundle_column_error.title": "Kesalahan jaringan", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Tutup", "bundle_modal_error.message": "Kesalahan terjadi saat memuat komponen ini.", "bundle_modal_error.retry": "Coba lagi", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index b0f379898..e2d0ac35a 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -27,9 +27,9 @@ "account.edit_profile": "Modifikar profilo", "account.enable_notifications": "Avizez me kande @{name} postas", "account.endorse": "Traito di profilo", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Antea posto ye {date}", + "account.featured_tags.last_status_never": "Nula posti", + "account.featured_tags.title": "Estalita hashtagi di {name}", "account.follow": "Sequar", "account.followers": "Sequanti", "account.followers.empty": "Nulu sequas ca uzanto til nun.", @@ -79,9 +79,15 @@ "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", - "bundle_column_error.body": "Nulo ne functionis dum chargar ca kompozaj.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Probez itere", - "bundle_column_error.title": "Rederor", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Klozez", "bundle_modal_error.message": "Nulo ne functionis dum chargar ca kompozaj.", "bundle_modal_error.retry": "Probez itere", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 0db7690dd..e5fead8e1 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -79,9 +79,15 @@ "audio.hide": "Fela hljóð", "autosuggest_hashtag.per_week": "{count} á viku", "boost_modal.combo": "Þú getur ýtt á {combo} til að sleppa þessu næst", - "bundle_column_error.body": "Eitthvað fór úrskeiðis við að hlaða inn þessari einingu.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Reyndu aftur", - "bundle_column_error.title": "Villa í netkerfi", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Loka", "bundle_modal_error.message": "Eitthvað fór úrskeiðis við að hlaða inn þessari einingu.", "bundle_modal_error.retry": "Reyndu aftur", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index ccaa7d3e6..8651746e7 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -27,9 +27,9 @@ "account.edit_profile": "Modifica profilo", "account.enable_notifications": "Avvisami quando @{name} pubblica un post", "account.endorse": "Metti in evidenza sul profilo", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Ultimo post il {date}", + "account.featured_tags.last_status_never": "Nessun post", + "account.featured_tags.title": "Hashtag in evidenza di {name}", "account.follow": "Segui", "account.followers": "Follower", "account.followers.empty": "Nessuno segue ancora questo utente.", @@ -79,9 +79,15 @@ "audio.hide": "Nascondi audio", "autosuggest_hashtag.per_week": "{count} per settimana", "boost_modal.combo": "Puoi premere {combo} per saltare questo passaggio la prossima volta", - "bundle_column_error.body": "E' avvenuto un errore durante il caricamento di questo componente.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Riprova", - "bundle_column_error.title": "Errore di rete", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Chiudi", "bundle_modal_error.message": "Qualcosa è andato storto durante il caricamento di questo componente.", "bundle_modal_error.retry": "Riprova", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index f48f29551..e85d743d3 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -20,16 +20,16 @@ "account.block_domain": "{domain}全体をブロック", "account.blocked": "ブロック済み", "account.browse_more_on_origin_server": "リモートで表示", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "フォローリクエストの取り消し", "account.direct": "@{name}さんにダイレクトメッセージ", "account.disable_notifications": "@{name}さんの投稿時の通知を停止", "account.domain_blocked": "ドメインブロック中", "account.edit_profile": "プロフィール編集", "account.enable_notifications": "@{name}さんの投稿時に通知", "account.endorse": "プロフィールで紹介する", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "最終投稿 {date}", + "account.featured_tags.last_status_never": "投稿がありません", + "account.featured_tags.title": "{name}の注目ハッシュタグ", "account.follow": "フォロー", "account.followers": "フォロワー", "account.followers.empty": "まだ誰もフォローしていません。", @@ -79,9 +79,15 @@ "audio.hide": "音声を閉じる", "autosuggest_hashtag.per_week": "{count} 回 / 週", "boost_modal.combo": "次からは{combo}を押せばスキップできます", - "bundle_column_error.body": "コンポーネントの読み込み中に問題が発生しました。", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "再試行", - "bundle_column_error.title": "ネットワークエラー", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "閉じる", "bundle_modal_error.message": "コンポーネントの読み込み中に問題が発生しました。", "bundle_modal_error.retry": "再試行", @@ -138,8 +144,8 @@ "confirmations.block.block_and_report": "ブロックし通報", "confirmations.block.confirm": "ブロック", "confirmations.block.message": "本当に{name}さんをブロックしますか?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "フォローリクエストを取り消す", + "confirmations.cancel_follow_request.message": "{name}に対するフォローリクエストを取り消しますか?", "confirmations.delete.confirm": "削除", "confirmations.delete.message": "本当に削除しますか?", "confirmations.delete_list.confirm": "削除", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index a66d93f00..a45a27b02 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "კვირაში {count}", "boost_modal.combo": "შეგიძლიათ დააჭიროთ {combo}-ს რათა შემდეგ ჯერზე გამოტოვოთ ეს", - "bundle_column_error.body": "ამ კომპონენტის ჩატვირთვისას რაღაც აირია.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "სცადეთ კიდევ ერთხელ", - "bundle_column_error.title": "ქსელის შეცდომა", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "დახურვა", "bundle_modal_error.message": "ამ კომპონენტის ჩატვირთვისას რაღაც აირია.", "bundle_modal_error.retry": "სცადეთ კიდევ ერთხელ", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index b5b8cb3c6..781095c9f 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} i yimalas", "boost_modal.combo": "Tzemreḍ ad tetekkiḍ ɣef {combo} akken ad tessurfeḍ aya tikelt-nniḍen", - "bundle_column_error.body": "Tella-d kra n tuccḍa mi d-yettali ugbur-agi.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Ɛreḍ tikelt-nniḍen", - "bundle_column_error.title": "Tuccḍa deg uẓeṭṭa", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Mdel", "bundle_modal_error.message": "Tella-d kra n tuccḍa mi d-yettali ugbur-agi.", "bundle_modal_error.retry": "Ɛreḍ tikelt-nniḍen", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index 7017467b3..790b6adb2 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} аптасына", "boost_modal.combo": "Келесіде өткізіп жіберу үшін басыңыз {combo}", - "bundle_column_error.body": "Бұл компонентті жүктеген кезде бір қате пайда болды.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Қайтадан көріңіз", - "bundle_column_error.title": "Желі қатесі", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Жабу", "bundle_modal_error.message": "Бұл компонентті жүктеген кезде бір қате пайда болды.", "bundle_modal_error.retry": "Қайтадан көріңіз", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index d266d3492..b3697b1b6 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", - "bundle_column_error.body": "Something went wrong while loading this component.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "ಮರಳಿ ಪ್ರಯತ್ನಿಸಿ", - "bundle_column_error.title": "Network error", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 34c86130f..d8d4b687f 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -79,9 +79,15 @@ "audio.hide": "소리 숨기기", "autosuggest_hashtag.per_week": "주간 {count}회", "boost_modal.combo": "다음엔 {combo}를 눌러서 이 과정을 건너뛸 수 있습니다", - "bundle_column_error.body": "컴포넌트를 불러오는 과정에서 문제가 발생했습니다.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "다시 시도", - "bundle_column_error.title": "네트워크 에러", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "닫기", "bundle_modal_error.message": "컴포넌트를 불러오는 과정에서 문제가 발생했습니다.", "bundle_modal_error.retry": "다시 시도", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index c6ecd3c95..b2ce6ba11 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -27,9 +27,9 @@ "account.edit_profile": "Profîlê serrast bike", "account.enable_notifications": "Min agahdar bike gava @{name} diweşîne", "account.endorse": "Taybetiyên li ser profîl", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Şandiya dawî di {date} de", + "account.featured_tags.last_status_never": "Şandî tune ne", + "account.featured_tags.title": "{name}'s hashtagên taybet", "account.follow": "Bişopîne", "account.followers": "Şopîner", "account.followers.empty": "Kesekî hin ev bikarhêner neşopandiye.", @@ -79,9 +79,15 @@ "audio.hide": "Dengê veşêre", "autosuggest_hashtag.per_week": "Her hefte {count}", "boost_modal.combo": "Ji bo derbas bî carekî din de pêlê {combo} bike", - "bundle_column_error.body": "Di dema barkirina vê hêmanê de tiştek çewt çê bû.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Dîsa biceribîne", - "bundle_column_error.title": "Çewtiya torê", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Bigire", "bundle_modal_error.message": "Di dema barkirina vê hêmanê de tiştek çewt çê bû.", "bundle_modal_error.retry": "Dîsa bicerbîne", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index a1c19b183..8e0b43104 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} an seythen", "boost_modal.combo": "Hwi a yll gwaska {combo} dhe woheles hemma an nessa tro", - "bundle_column_error.body": "Neppyth eth yn kamm ow karga'n elven ma.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Assayewgh arta", - "bundle_column_error.title": "Gwall ròsweyth", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Degea", "bundle_modal_error.message": "Neppyth eth yn kamm ow karga'n elven ma.", "bundle_modal_error.retry": "Assayewgh arta", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index bdb5b43d5..813eaf197 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", - "bundle_column_error.body": "Something went wrong while loading this component.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Try again", - "bundle_column_error.title": "Tinklo klaida", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index acf4911b5..08fe1ae5e 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -27,9 +27,9 @@ "account.edit_profile": "Rediģēt profilu", "account.enable_notifications": "Man paziņot, kad @{name} publicē ierakstu", "account.endorse": "Izcelts profilā", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Beidzamā ziņa {date}", + "account.featured_tags.last_status_never": "Publikāciju nav", + "account.featured_tags.title": "{name} piedāvātie haštagi", "account.follow": "Sekot", "account.followers": "Sekotāji", "account.followers.empty": "Šim lietotājam patreiz nav sekotāju.", @@ -79,9 +79,15 @@ "audio.hide": "Slēpt audio", "autosuggest_hashtag.per_week": "{count} nedēļā", "boost_modal.combo": "Nospied {combo} lai izlaistu šo nākamreiz", - "bundle_column_error.body": "Kaut kas nogāja greizi ielādējot šo komponenti.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Mēģini vēlreiz", - "bundle_column_error.title": "Tīkla kļūda", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Aizvērt", "bundle_modal_error.message": "Kaut kas nogāja greizi ielādējot šo komponenti.", "bundle_modal_error.retry": "Mēģini vēlreiz", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index dde2f6d58..b3135c9c9 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} неделно", "boost_modal.combo": "Кликни {combo} за да го прескокниш ова нареден пат", - "bundle_column_error.body": "Се случи проблем при вчитувањето.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Обидете се повторно", - "bundle_column_error.title": "Мрежна грешка", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Затвори", "bundle_modal_error.message": "Настана грешка при прикажувањето на оваа веб-страница.", "bundle_modal_error.retry": "Обидете се повторно", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index b19475c4b..a8c7ef61e 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "ആഴ്ച തോറും {count}", "boost_modal.combo": "അടുത്ത തവണ ഇത് ഒഴിവാക്കുവാൻ {combo} ഞെക്കാവുന്നതാണ്", - "bundle_column_error.body": "ഈ ഘടകം പ്രദശിപ്പിക്കുമ്പോൾ എന്തോ കുഴപ്പം സംഭവിച്ചു.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "വീണ്ടും ശ്രമിക്കുക", - "bundle_column_error.title": "ശൃംഖലയിലെ പിഴവ്", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "അടയ്ക്കുക", "bundle_modal_error.message": "ഈ വെബ്പേജ് പ്രദർശിപ്പിക്കുമ്പോൾ എന്തോ കുഴപ്പം സംഭവിച്ചു.", "bundle_modal_error.retry": "വീണ്ടും ശ്രമിക്കുക", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index 4d62bf0d4..b2d32cc4e 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} प्रतिसप्ताह", "boost_modal.combo": "You can press {combo} to skip this next time", - "bundle_column_error.body": "हा घटक लोड करतांना काहीतरी चुकले आहे.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "पुन्हा प्रयत्न करा", - "bundle_column_error.title": "नेटवर्क त्रुटी", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "बंद करा", "bundle_modal_error.message": "हा घटक लोड करतांना काहीतरी चुकले आहे.", "bundle_modal_error.retry": "पुन्हा प्रयत्न करा", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 0615b64dc..341bca041 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} seminggu", "boost_modal.combo": "Anda boleh tekan {combo} untuk melangkauinya pada waktu lain", - "bundle_column_error.body": "Terdapat kesilapan ketika memuatkan komponen ini.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Cuba lagi", - "bundle_column_error.title": "Ralat rangkaian", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Tutup", "bundle_modal_error.message": "Ada yang tidak kena semasa memuatkan komponen ini.", "bundle_modal_error.retry": "Cuba lagi", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 77fe2703c..51a66f356 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -79,9 +79,15 @@ "audio.hide": "Audio verbergen", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "Je kunt {combo} klikken om dit de volgende keer over te slaan", - "bundle_column_error.body": "Tijdens het laden van dit onderdeel is er iets fout gegaan.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Opnieuw proberen", - "bundle_column_error.title": "Netwerkfout", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Sluiten", "bundle_modal_error.message": "Tijdens het laden van dit onderdeel is er iets fout gegaan.", "bundle_modal_error.retry": "Opnieuw proberen", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 1c6a2f535..f62b1a832 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per veke", "boost_modal.combo": "Du kan trykkja {combo} for å hoppa over dette neste gong", - "bundle_column_error.body": "Noko gjekk gale mens denne komponenten vart lasta ned.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Prøv igjen", - "bundle_column_error.title": "Nettverksfeil", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Lat att", "bundle_modal_error.message": "Noko gjekk gale under lastinga av denne komponenten.", "bundle_modal_error.retry": "Prøv igjen", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 936e8d5b4..a3614fc33 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per uke", "boost_modal.combo": "You kan trykke {combo} for å hoppe over dette neste gang", - "bundle_column_error.body": "Noe gikk galt mens denne komponenten lastet.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Prøv igjen", - "bundle_column_error.title": "Nettverksfeil", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Lukk", "bundle_modal_error.message": "Noe gikk galt da denne komponenten lastet.", "bundle_modal_error.retry": "Prøv igjen", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index f5cbc468e..176ca5dcc 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per setmana", "boost_modal.combo": "Podètz botar {combo} per passar aquò lo còp que ven", - "bundle_column_error.body": "Quicòm a fach mèuca pendent lo cargament d’aqueste compausant.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Tornar ensajar", - "bundle_column_error.title": "Error de ret", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Tampar", "bundle_modal_error.message": "Quicòm a fach mèuca pendent lo cargament d’aqueste compausant.", "bundle_modal_error.retry": "Tornar ensajar", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index ed1f9c3ae..e00874966 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", - "bundle_column_error.body": "Something went wrong while loading this component.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Try again", - "bundle_column_error.title": "Network error", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 51a69b2c5..a0642273a 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -27,9 +27,9 @@ "account.edit_profile": "Edytuj profil", "account.enable_notifications": "Powiadamiaj mnie o wpisach @{name}", "account.endorse": "Wyróżnij na profilu", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Ostatni post {date}", + "account.featured_tags.last_status_never": "Brak postów", + "account.featured_tags.title": "Polecane hasztagi {name}", "account.follow": "Śledź", "account.followers": "Śledzący", "account.followers.empty": "Nikt jeszcze nie śledzi tego użytkownika.", @@ -79,9 +79,15 @@ "audio.hide": "Ukryj dźwięk", "autosuggest_hashtag.per_week": "{count} co tydzień", "boost_modal.combo": "Naciśnij {combo}, aby pominąć to następnym razem", - "bundle_column_error.body": "Coś poszło nie tak podczas ładowania tego składnika.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Spróbuj ponownie", - "bundle_column_error.title": "Błąd sieci", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Zamknij", "bundle_modal_error.message": "Coś poszło nie tak podczas ładowania tego składnika.", "bundle_modal_error.retry": "Spróbuj ponownie", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 72cfa4ffa..713a2da2d 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Pressione {combo} para pular isso na próxima vez", - "bundle_column_error.body": "Erro ao carregar este componente.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Tente novamente", - "bundle_column_error.title": "Erro de rede", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Fechar", "bundle_modal_error.message": "Erro ao carregar este componente.", "bundle_modal_error.retry": "Tente novamente", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 1fd0a9258..a3beb8d26 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -27,9 +27,9 @@ "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificar-me das publicações de @{name}", "account.endorse": "Destacar no perfil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Última publicação em {date}", + "account.featured_tags.last_status_never": "Sem publicações", + "account.featured_tags.title": "Hashtags destacadas por {name}", "account.follow": "Seguir", "account.followers": "Seguidores", "account.followers.empty": "Ainda ninguém segue este utilizador.", @@ -79,9 +79,15 @@ "audio.hide": "Ocultar áudio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Pode clicar {combo} para não voltar a ver", - "bundle_column_error.body": "Algo de errado aconteceu enquanto este componente era carregado.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Tente de novo", - "bundle_column_error.title": "Erro de rede", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Fechar", "bundle_modal_error.message": "Algo de errado aconteceu enquanto este componente era carregado.", "bundle_modal_error.retry": "Tente de novo", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index a3be7fb59..04af08661 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} pe săptămână", "boost_modal.combo": "Poți apăsa {combo} pentru a sări peste asta data viitoare", - "bundle_column_error.body": "A apărut o eroare la încărcarea acestui element.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Încearcă din nou", - "bundle_column_error.title": "Eroare de rețea", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Închide", "bundle_modal_error.message": "A apărut o eroare la încărcarea acestui element.", "bundle_modal_error.retry": "Încearcă din nou", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index db6a26611..92612af24 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -79,9 +79,15 @@ "audio.hide": "Скрыть аудио", "autosuggest_hashtag.per_week": "{count} / неделю", "boost_modal.combo": "{combo}, чтобы пропустить это в следующий раз", - "bundle_column_error.body": "Что-то пошло не так при загрузке этого компонента.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Попробовать снова", - "bundle_column_error.title": "Ошибка сети", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Закрыть", "bundle_modal_error.message": "Что-то пошло не так при загрузке этого компонента.", "bundle_modal_error.retry": "Попробовать снова", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index db7613b27..d18bc78b3 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} प्रतिसप्ताहे", "boost_modal.combo": "{combo} अत्र स्प्रष्टुं शक्यते, त्यक्तुमेतमन्यस्मिन् समये", - "bundle_column_error.body": "विषयस्याऽऽरोपणे कश्चिद्दोषो जातः", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "पुनः यतताम्", - "bundle_column_error.title": "जाले दोषः", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "पिधीयताम्", "bundle_modal_error.message": "आरोपणे कश्चन दोषो जातः", "bundle_modal_error.retry": "पुनः यतताम्", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 7a534f689..54a23cffa 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} a sa chida", "boost_modal.combo": "Podes incarcare {combo} pro brincare custu sa borta chi benit", - "bundle_column_error.body": "Faddina in su carrigamentu de custu cumponente.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Torra·bi a proare", - "bundle_column_error.title": "Faddina de connessione", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Serra", "bundle_modal_error.message": "Faddina in su carrigamentu de custu cumponente.", "bundle_modal_error.retry": "Torra·bi a proare", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index e18b0abe4..0ab05ed58 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -79,9 +79,15 @@ "audio.hide": "හඬපටය සඟවන්න", "autosuggest_hashtag.per_week": "සතියකට {count}", "boost_modal.combo": "ඊළඟ වතාවේ මෙය මඟ හැරීමට ඔබට {combo} එබිය හැක", - "bundle_column_error.body": "මෙම සංරචකය පූරණය කිරීමේදී යම් දෙයක් වැරදී ඇත.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "නැවත උත්සාහ කරන්න", - "bundle_column_error.title": "ජාලයේ දෝෂයකි", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "වසන්න", "bundle_modal_error.message": "මෙම සංරචකය පූරණය කිරීමේදී යම් දෙයක් වැරදී ඇත.", "bundle_modal_error.retry": "නැවත උත්සාහ කරන්න", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 199bce691..21bf1b699 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -79,9 +79,15 @@ "audio.hide": "Skry zvuk", "autosuggest_hashtag.per_week": "{count} týždenne", "boost_modal.combo": "Nabudúce môžeš kliknúť {combo} pre preskočenie", - "bundle_column_error.body": "Pri načítaní tohto prvku nastala nejaká chyba.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Skús to znova", - "bundle_column_error.title": "Chyba siete", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Zatvor", "bundle_modal_error.message": "Nastala chyba pri načítaní tohto komponentu.", "bundle_modal_error.retry": "Skúsiť znova", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 98e113ea1..571042e2e 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -20,16 +20,16 @@ "account.block_domain": "Blokiraj domeno {domain}", "account.blocked": "Blokirano", "account.browse_more_on_origin_server": "Brskaj več po izvirnem profilu", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Umakni zahtevo za sledenje", "account.direct": "Neposredno sporočilo @{name}", "account.disable_notifications": "Ne obveščaj me več, ko ima @{name} novo objavo", "account.domain_blocked": "Blokirana domena", "account.edit_profile": "Uredi profil", "account.enable_notifications": "Obvesti me, ko ima @{name} novo objavo", "account.endorse": "Izpostavi v profilu", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Zadnja objava {date}", + "account.featured_tags.last_status_never": "Ni objav", + "account.featured_tags.title": "Izpostavljeni ključniki {name}", "account.follow": "Sledi", "account.followers": "Sledilci", "account.followers.empty": "Nihče ne sledi temu uporabniku.", @@ -79,9 +79,15 @@ "audio.hide": "Skrij zvok", "autosuggest_hashtag.per_week": "{count} na teden", "boost_modal.combo": "Če želite preskočiti to, lahko pritisnete {combo}", - "bundle_column_error.body": "Med nalaganjem te komponente je prišlo do napake.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Poskusi ponovno", - "bundle_column_error.title": "Napaka omrežja", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Zapri", "bundle_modal_error.message": "Med nalaganjem te komponente je prišlo do napake.", "bundle_modal_error.retry": "Poskusi ponovno", @@ -138,8 +144,8 @@ "confirmations.block.block_and_report": "Blokiraj in Prijavi", "confirmations.block.confirm": "Blokiraj", "confirmations.block.message": "Ali ste prepričani, da želite blokirati {name}?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "Umakni zahtevo", + "confirmations.cancel_follow_request.message": "Ali ste prepričani, da želite umakniti svojo zahtevo, da bi sledili {name}?", "confirmations.delete.confirm": "Izbriši", "confirmations.delete.message": "Ali ste prepričani, da želite izbrisati to objavo?", "confirmations.delete_list.confirm": "Izbriši", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 1bb0b16ac..f30d920f8 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -79,9 +79,15 @@ "audio.hide": "Fshihe audion", "autosuggest_hashtag.per_week": "{count} për javë", "boost_modal.combo": "Që kjo të anashkalohet herës tjetër, mund të shtypni {combo}", - "bundle_column_error.body": "Diç shkoi ters teksa ngarkohej ky përbërës.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Riprovoni", - "bundle_column_error.title": "Gabim rrjeti", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Mbylle", "bundle_modal_error.message": "Diç shkoi ters teksa ngarkohej ky përbërës.", "bundle_modal_error.retry": "Riprovoni", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 7a0138320..92f1bee4c 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "Možete pritisnuti {combo} da preskočite ovo sledeći put", - "bundle_column_error.body": "Nešto je pošlo po zlu prilikom učitavanja ove komponente.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Pokušajte ponovo", - "bundle_column_error.title": "Mrežna greška", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Zatvori", "bundle_modal_error.message": "Nešto nije bilo u redu pri učitavanju ove komponente.", "bundle_modal_error.retry": "Pokušajte ponovo", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 6140f5a5a..9faac37bb 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} недељно", "boost_modal.combo": "Можете притиснути {combo} да прескочите ово следећи пут", - "bundle_column_error.body": "Нешто је пошло по злу приликом учитавања ове компоненте.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Покушајте поново", - "bundle_column_error.title": "Мрежна грешка", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Затвори", "bundle_modal_error.message": "Нешто није било у реду при учитавању ове компоненте.", "bundle_modal_error.retry": "Покушајте поново", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 5e054b1f2..32a405b9a 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -79,9 +79,15 @@ "audio.hide": "Dölj audio", "autosuggest_hashtag.per_week": "{count} per vecka", "boost_modal.combo": "Du kan trycka {combo} för att slippa detta nästa gång", - "bundle_column_error.body": "Något gick fel medan denna komponent laddades.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Försök igen", - "bundle_column_error.title": "Nätverksfel", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Stäng", "bundle_modal_error.message": "Något gick fel när denna komponent laddades.", "bundle_modal_error.retry": "Försök igen", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index ed1f9c3ae..e00874966 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", - "bundle_column_error.body": "Something went wrong while loading this component.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Try again", - "bundle_column_error.title": "Network error", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 99d97fef6..7f88275e4 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -79,9 +79,15 @@ "audio.hide": "ஆடியோவை மறை", "autosuggest_hashtag.per_week": "ஒவ்வொரு வாரம் {count}", "boost_modal.combo": "நீங்கள் இதை அடுத்தமுறை தவிர்க்க {combo} வை அழுத்தவும்", - "bundle_column_error.body": "இக்கூற்றை ஏற்றம் செய்யும்பொழுது ஏதோ தவறு ஏற்பட்டுள்ளது.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "மீண்டும் முயற்சிக்கவும்", - "bundle_column_error.title": "பிணையப் பிழை", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "மூடுக", "bundle_modal_error.message": "இக்கூற்றை ஏற்றம் செய்யும்பொழுது ஏதோ தவறு ஏற்பட்டுள்ளது.", "bundle_modal_error.retry": "மீண்டும் முயற்சி செய்", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 94fc0f72e..c70f45cdb 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", - "bundle_column_error.body": "Something went wrong while loading this component.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Try again", - "bundle_column_error.title": "Network error", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index 5b1c22f92..75fd5644c 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "మీరు తదుపరిసారి దీనిని దాటవేయడానికి {combo} నొక్కవచ్చు", - "bundle_column_error.body": "ఈ భాగం లోడ్ అవుతున్నప్పుడు ఏదో తప్పు జరిగింది.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "మళ్ళీ ప్రయత్నించండి", - "bundle_column_error.title": "నెట్వర్క్ లోపం", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "మూసివేయు", "bundle_modal_error.message": "ఈ భాగం లోడ్ అవుతున్నప్పుడు ఏదో తప్పు జరిగింది.", "bundle_modal_error.retry": "మళ్ళీ ప్రయత్నించండి", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index aba6b2c00..d16f2c1ea 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -20,16 +20,16 @@ "account.block_domain": "ปิดกั้นโดเมน {domain}", "account.blocked": "ปิดกั้นอยู่", "account.browse_more_on_origin_server": "เรียกดูเพิ่มเติมในโปรไฟล์ดั้งเดิม", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "ถอนคำขอติดตาม", "account.direct": "ส่งข้อความโดยตรงถึง @{name}", "account.disable_notifications": "หยุดแจ้งเตือนฉันเมื่อ @{name} โพสต์", "account.domain_blocked": "ปิดกั้นโดเมนอยู่", "account.edit_profile": "แก้ไขโปรไฟล์", "account.enable_notifications": "แจ้งเตือนฉันเมื่อ @{name} โพสต์", "account.endorse": "แนะนำในโปรไฟล์", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "โพสต์ล่าสุดเมื่อ {date}", + "account.featured_tags.last_status_never": "ไม่มีโพสต์", + "account.featured_tags.title": "แฮชแท็กที่แนะนำของ {name}", "account.follow": "ติดตาม", "account.followers": "ผู้ติดตาม", "account.followers.empty": "ยังไม่มีใครติดตามผู้ใช้นี้", @@ -65,8 +65,8 @@ "account.unmute_notifications": "เลิกซ่อนการแจ้งเตือนจาก @{name}", "account.unmute_short": "เลิกซ่อน", "account_note.placeholder": "คลิกเพื่อเพิ่มหมายเหตุ", - "admin.dashboard.daily_retention": "อัตราการรักษาผู้ใช้ตามวันหลังจากลงทะเบียน", - "admin.dashboard.monthly_retention": "อัตราการรักษาผู้ใช้ตามเดือนหลังจากลงทะเบียน", + "admin.dashboard.daily_retention": "อัตราการเก็บรักษาผู้ใช้ตามวันหลังจากลงทะเบียน", + "admin.dashboard.monthly_retention": "อัตราการเก็บรักษาผู้ใช้ตามเดือนหลังจากลงทะเบียน", "admin.dashboard.retention.average": "ค่าเฉลี่ย", "admin.dashboard.retention.cohort": "เดือนที่ลงทะเบียน", "admin.dashboard.retention.cohort_size": "ผู้ใช้ใหม่", @@ -79,9 +79,15 @@ "audio.hide": "ซ่อนเสียง", "autosuggest_hashtag.per_week": "{count} ต่อสัปดาห์", "boost_modal.combo": "คุณสามารถกด {combo} เพื่อข้ามสิ่งนี้ในครั้งถัดไป", - "bundle_column_error.body": "มีบางอย่างผิดพลาดขณะโหลดส่วนประกอบนี้", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "ลองอีกครั้ง", - "bundle_column_error.title": "ข้อผิดพลาดเครือข่าย", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "ปิด", "bundle_modal_error.message": "มีบางอย่างผิดพลาดขณะโหลดส่วนประกอบนี้", "bundle_modal_error.retry": "ลองอีกครั้ง", @@ -138,8 +144,8 @@ "confirmations.block.block_and_report": "ปิดกั้นแล้วรายงาน", "confirmations.block.confirm": "ปิดกั้น", "confirmations.block.message": "คุณแน่ใจหรือไม่ว่าต้องการปิดกั้น {name}?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "ถอนคำขอ", + "confirmations.cancel_follow_request.message": "คุณแน่ใจหรือไม่ว่าต้องการถอนคำขอเพื่อติดตาม {name} ของคุณ?", "confirmations.delete.confirm": "ลบ", "confirmations.delete.message": "คุณแน่ใจหรือไม่ว่าต้องการลบโพสต์นี้?", "confirmations.delete_list.confirm": "ลบ", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index a00d05b2e..6806aa199 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -79,9 +79,15 @@ "audio.hide": "Sesi gizle", "autosuggest_hashtag.per_week": "Haftada {count}", "boost_modal.combo": "Bir daha ki sefere {combo} tuşuna basabilirsin", - "bundle_column_error.body": "Bu bileşen yüklenirken bir şeyler ters gitti.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Tekrar deneyin", - "bundle_column_error.title": "Ağ hatası", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Kapat", "bundle_modal_error.message": "Bu bileşen yüklenirken bir şeyler ters gitti.", "bundle_modal_error.retry": "Tekrar deneyin", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index 4ca7e4ad4..cd87bd7a6 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", - "bundle_column_error.body": "Something went wrong while loading this component.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Try again", - "bundle_column_error.title": "Network error", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Ябу", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index ed1f9c3ae..e00874966 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", - "bundle_column_error.body": "Something went wrong while loading this component.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Try again", - "bundle_column_error.title": "Network error", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index db900b002..dd5a396d8 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -27,9 +27,9 @@ "account.edit_profile": "Редагувати профіль", "account.enable_notifications": "Повідомляти мене про дописи @{name}", "account.endorse": "Рекомендувати у профілі", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Останній допис {date}", + "account.featured_tags.last_status_never": "Немає дописів", + "account.featured_tags.title": "{name} виділяє хештеґи", "account.follow": "Підписатися", "account.followers": "Підписники", "account.followers.empty": "Ніхто ще не підписаний на цього користувача.", @@ -79,9 +79,15 @@ "audio.hide": "Сховати аудіо", "autosuggest_hashtag.per_week": "{count} в тиждень", "boost_modal.combo": "Ви можете натиснути {combo}, щоб пропустити це наступного разу", - "bundle_column_error.body": "Щось пішло не так під час завантаження цього компоненту.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Спробуйте ще раз", - "bundle_column_error.title": "Помилка мережі", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Закрити", "bundle_modal_error.message": "Щось пішло не так під час завантаження цього компоненту.", "bundle_modal_error.retry": "Спробувати ще раз", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index 8be3a12a3..f68c829bb 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} فی ہفتہ", "boost_modal.combo": "آئیندہ یہ نہ دیکھنے کیلئے آپ {combo} دبا سکتے ہیں", - "bundle_column_error.body": "اس عنصر کو برآمد کرتے وقت کچھ خرابی پیش آئی ہے.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "دوبارہ کوشش کریں", - "bundle_column_error.title": "نیٹ ورک کی خرابی", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "بند کریں", "bundle_modal_error.message": "اس عنصر کو برآمد کرتے وقت کچھ خرابی پیش آئی ہے.", "bundle_modal_error.retry": "دوبارہ کوشش کریں", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 79f68b9e4..1ef82dffd 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -27,9 +27,9 @@ "account.edit_profile": "Sửa hồ sơ", "account.enable_notifications": "Nhận thông báo khi @{name} đăng tút", "account.endorse": "Tôn vinh người này", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Tút gần nhất {date}", + "account.featured_tags.last_status_never": "Chưa có tút", + "account.featured_tags.title": "Hashtag {name} thường dùng", "account.follow": "Theo dõi", "account.followers": "Người theo dõi", "account.followers.empty": "Chưa có người theo dõi nào.", @@ -79,9 +79,15 @@ "audio.hide": "Ẩn âm thanh", "autosuggest_hashtag.per_week": "{count} mỗi tuần", "boost_modal.combo": "Nhấn {combo} để bỏ qua bước này", - "bundle_column_error.body": "Đã có lỗi xảy ra trong khi tải nội dung này.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Thử lại", - "bundle_column_error.title": "Không có kết nối internet", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Đóng", "bundle_modal_error.message": "Đã có lỗi xảy ra trong khi tải nội dung này.", "bundle_modal_error.retry": "Thử lại", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index 629f1b269..41fe0786a 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} ⵙ ⵉⵎⴰⵍⴰⵙⵙ", "boost_modal.combo": "You can press {combo} to skip this next time", - "bundle_column_error.body": "Something went wrong while loading this component.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "ⴰⵍⵙ ⴰⵔⵎ", - "bundle_column_error.title": "ⴰⵣⴳⴰⵍ ⵏ ⵓⵥⵟⵟⴰ", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "ⵔⴳⵍ", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "ⴰⵍⵙ ⴰⵔⵎ", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index b63b1e0fc..9a2c4a03d 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -79,9 +79,15 @@ "audio.hide": "隐藏音频", "autosuggest_hashtag.per_week": "每星期 {count} 条", "boost_modal.combo": "下次按住 {combo} 即可跳过此提示", - "bundle_column_error.body": "载入这个组件时发生了错误。", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "重试", - "bundle_column_error.title": "网络错误", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "关闭", "bundle_modal_error.message": "载入这个组件时发生了错误。", "bundle_modal_error.retry": "重试", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 3575d876b..abc6d98d8 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} / 週", "boost_modal.combo": "如你想在下次路過這顯示,請按{combo},", - "bundle_column_error.body": "加載本組件出錯。", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "重試", - "bundle_column_error.title": "網絡錯誤", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "關閉", "bundle_modal_error.message": "加載本組件出錯。", "bundle_modal_error.retry": "重試", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 8161aa013..7d76a8cd0 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -27,9 +27,9 @@ "account.edit_profile": "編輯個人檔案", "account.enable_notifications": "當 @{name} 嘟文時通知我", "account.endorse": "在個人檔案推薦對方", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "上次嘟文於 {date}", + "account.featured_tags.last_status_never": "沒有嘟文", + "account.featured_tags.title": "{name} 的特色主題標籤", "account.follow": "跟隨", "account.followers": "跟隨者", "account.followers.empty": "尚未有人跟隨這位使用者。", @@ -79,9 +79,15 @@ "audio.hide": "隱藏音訊", "autosuggest_hashtag.per_week": "{count} / 週", "boost_modal.combo": "下次您可以按 {combo} 跳過", - "bundle_column_error.body": "載入此元件時發生錯誤。", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "重試", - "bundle_column_error.title": "網路錯誤", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "關閉", "bundle_modal_error.message": "載入此元件時發生錯誤。", "bundle_modal_error.retry": "重試", diff --git a/config/locales/ar.yml b/config/locales/ar.yml index bb98ccb08..a4a0aec5c 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -537,73 +537,15 @@ ar: empty: لم يتم تحديد قواعد الخادم بعد. title: قوانين الخادم settings: - activity_api_enabled: - desc_html: عدد المنشورات المحلية و المستخدمين الناشطين و التسجيلات الأسبوعية الجديدة - title: نشر مُجمل الإحصائيات عن نشاط المستخدمين - bootstrap_timeline_accounts: - desc_html: افصل بين أسماء المستخدمين المتعددة بواسطة الفاصلة. استعمل الحسابات المحلية والمفتوحة فقط. الافتراضي عندما تكون فارغة كل المسؤولين المحليين. - title: الاشتراكات الافتراضية للمستخدمين الجدد - contact_information: - email: البريد الإلكتروني المهني - username: الاتصال بالمستخدِم - custom_css: - desc_html: يقوم بتغيير المظهر بواسطة سي أس أس يُحمَّل على كافة الصفحات - title: سي أس أس مخصص - default_noindex: - desc_html: يؤثر على جميع المستخدمين الذين لم يغيروا هذا الإعداد بأنفسهم - title: عدم السماح مبدئيا لمحركات البحث بفهرسة الملفات التعريفية للمستخدمين domain_blocks: all: للجميع disabled: لا أحد - title: اظهر خاصية حجب النطاقات users: للمستخدمين المتصلين محليا - domain_blocks_rationale: - title: اظهر السبب - mascot: - desc_html: معروض على عدة صفحات، يوصى بِعلى الأقل 293x205 بكسل، عند عدم التعيين، تعود الصورة إلى التميمة الافتراضية - title: صورة الماسكوت - peers_api_enabled: - desc_html: أسماء النطاقات التي التقى بها مثيل الخادوم على البيئة الموحَّدة فديفرس - title: نشر عدد مثيلات الخوادم التي تم مصادفتها - preview_sensitive_media: - desc_html: روابط المُعَاينة على مواقع الويب الأخرى ستقوم بعرض صُوَر مصغّرة حتى و إن كانت الوسائط حساسة - title: إظهار الصور الحساسة في مُعاينات أوبن غراف - profile_directory: - desc_html: السماح للمستخدمين الكشف عن حساباتهم - title: تفعيل دليل الصفحات التعريفية - registrations: - closed_message: - desc_html: يتم عرضه على الصفحة الرئيسية عندما يتم غلق تسجيل الحسابات الجديدة. يمكنكم إستخدام علامات الأيتش تي أم أل HTML - title: رسالة التسجيلات المقفلة - require_invite_text: - desc_html: عندما تتطلب التسجيلات الموافقة اليدوية، جعل إدخال نص لسؤال "لماذا تريد أن تنضم؟" إلزاميا بدلاً من اختياري - title: الطلب من المستخدمين الجدد إدخال سبب للتسجيل registrations_mode: modes: approved: طلب الموافقة لازم عند إنشاء حساب none: لا أحد يمكنه إنشاء حساب open: يمكن للجميع إنشاء حساب - title: طريقة إنشاء الحسابات - site_description: - desc_html: فقرة تمهيدية على الصفحة الأولى. صف ميزات خادوم ماستدون هذا و ما يميّزه عن الآخرين. يمكنك استخدام علامات HTML ، ولا سيما <a> و <em>. - title: وصف مثيل الخادوم - site_description_extended: - desc_html: مكان جيد لمدونة قواعد السلوك والقواعد والإرشادات وغيرها من الأمور التي تحدد حالتك. يمكنك استخدام علامات HTML - title: الوصف المُفصّل للموقع - site_short_description: - desc_html: يتم عرضه في لوحة جانبية و في البيانات الوصفية. قم بوصف ماستدون و ما يميز هذا السيرفر عن الآخرين في فقرة موجزة. إن تركت الحقل فارغا فسوف يتم عرض الوصف الافتراضي لمثيل الخادوم. - title: مقدمة وصفية قصيرة عن مثيل الخادوم - site_title: اسم مثيل الخادم - thumbnail: - desc_html: يستخدم للعروض السابقة عبر Open Graph و API. 1200x630px موصى به - title: الصورة الرمزية المصغرة لمثيل الخادوم - timeline_preview: - desc_html: عرض الخيط العمومي على صفحة الاستقبال - title: مُعاينة الخيط العام - title: إعدادات الموقع - trends: - desc_html: عرض علني للوسوم المستعرضة سابقاً التي هي رائجة الآن - title: الوسوم المتداولة site_uploads: delete: احذف الملف الذي تم تحميله destroyed_msg: تم حذف التحميل مِن الموقع بنجاح! diff --git a/config/locales/ast.yml b/config/locales/ast.yml index 965a16aeb..30bb52c5a 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -97,14 +97,6 @@ ast: permissions_count: one: "%{count} permisu" other: "%{count} permisos" - settings: - site_description: - title: Descripción del sirvidor - site_terms: - desc_html: Pues escribir la to política de privacidá. Tamién pues usar etiquetes HTML - title: Política de privacidá personalizada - site_title: Nome del sirvidor - title: Axustes del sitiu title: Alministración webhooks: events: Eventos diff --git a/config/locales/br.yml b/config/locales/br.yml index afb102dc7..b9bf38886 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -116,8 +116,6 @@ br: settings: domain_blocks: all: D'an holl dud - site_title: Anv ar servijer - title: Arventennoù al lec'hienn statuses: deleted: Dilamet warning_presets: diff --git a/config/locales/ca.yml b/config/locales/ca.yml index c5f21b0cb..5b0913293 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -667,79 +667,40 @@ ca: empty: Encara no s'han definit les normes del servidor. title: Normes del servidor settings: - activity_api_enabled: - desc_html: Nombre de publicacions publicades localment, usuaris actius i registres nous en períodes setmanals - title: Publica estadístiques agregades sobre l'activitat de l'usuari - bootstrap_timeline_accounts: - desc_html: Separa diversos noms d'usuari amb comes. Només funcionaran els comptes locals i desblocats. El valor predeterminat quan està buit és tots els administradors locals. - title: El seguiment per defecte per als usuaris nous - contact_information: - email: Adreça electrònica d'empresa - username: Nom d'usuari del contacte - custom_css: - desc_html: Modifica l'aspecte amb CSS carregat a cada pàgina - title: CSS personalitzat - default_noindex: - desc_html: Afecta a tots els usuaris que no han canviat aquest ajustament ells mateixos - title: Configura per defecte als usuaris fora de la indexació del motor de cerca + about: + manage_rules: Gestiona les normes del servidor + preamble: Proporciona informació detallada sobre com funciona, com es modera i com es financia el servidor. + rules_hint: Hi ha un àrea dedicada a les normes a les que s'espera que els teus usuaris s'hi adhereixin. + title: Quant a + appearance: + preamble: Personalitza l'interfície web de Mastodon. + title: Aparença + branding: + preamble: La marca del teu servidor el diferència dels demés servidors de la xarxa. Aquesta informació es pot mostrar en diversos entorns com ara en l'interfície web, en les aplicacions natives, en les previsualitzacions dels enllaços en altres webs, dins les aplicacions de missatgeria i d'altres. Per aquesta raó, és millor mantenir aquesta informació clara, breu i precisa. + title: Marca + content_retention: + preamble: Controla com es desa a Mastodon el contingut generat per l'usuari. + title: Retenció de contingut + discovery: + follow_recommendations: Seguir les recomanacions + preamble: L'aparició de contingut interessant és fonamental per atraure els nous usuaris que podrien no saber res de Mastodon. Controla com funcionen diverses opcions de descobriment en el teu servidor. + profile_directory: Directori de perfils + public_timelines: Línies de temps públiques + title: Descobriment + trends: Tendències domain_blocks: all: Per a tothom disabled: Per a ningú - title: Mostra els bloquejos de domini users: Per als usuaris locals en línia - domain_blocks_rationale: - title: Mostra el raonament - mascot: - desc_html: Es mostra a diverses pàgines. Es recomana com a mínim 293 × 205px. Si no està configurat, torna a la mascota predeterminada - title: Imatge de la mascota - peers_api_enabled: - desc_html: Els noms de domini que aquest servidor ha trobat al fedivers - title: Publica la llista de servidors descoberts - preview_sensitive_media: - desc_html: Les visualitzacions prèvies d'enllaços d'altres llocs web mostraran una miniatura encara que els mitjans de comunicació estiguin marcats com a sensibles - title: Mostra els mitjans sensibles a les previsualitzacions d'OpenGraph - profile_directory: - desc_html: Permet als usuaris ser descoberts - title: Habilita el directori de perfils registrations: - closed_message: - desc_html: Apareix en la primera pàgina quan es tanquen els registres. Pots utilitzar etiquetes HTML - title: Missatge de registre tancat - require_invite_text: - desc_html: Quan el registre requereix aprovació manual, fer que sigui obligatori enlloc d'opcions l escriure el text de la solicitud d'invitació "Perquè vols unirte?" - title: Requerir als nous usuaris omplir el text de la solicitud d'invitació + preamble: Controla qui pot crear un compte en el teu servidor. + title: Registres registrations_mode: modes: approved: Es requereix l’aprovació per registrar-se none: Ningú no pot registrar-se open: Qualsevol pot registrar-se - title: Mode de registres - site_description: - desc_html: Paràgraf introductori a la pàgina principal i en etiquetes meta. Pots utilitzar etiquetes HTML, en particular <a> i <em>. - title: Descripció del servidor - site_description_extended: - desc_html: Un bon lloc per al codi de conducta, regles, directrius i altres coses que distingeixen el teu servidor. Pots utilitzar etiquetes HTML - title: Descripció ampliada del lloc - site_short_description: - desc_html: Es mostra a la barra lateral i a metaetiquetes. Descriu en un únic paràgraf què és Mastodon i què fa que aquest servidor sigui especial. - title: Descripció curta del servidor - site_terms: - desc_html: Pots escriure la teva pròpia política de privacitat. Pots fer servir etiquetes HTML - title: Política de privacitat personalitzada - site_title: Nom del servidor - thumbnail: - desc_html: S'utilitza per obtenir visualitzacions prèvies a través d'OpenGraph i API. Es recomana 1200x630px - title: Miniatura del servidor - timeline_preview: - desc_html: Mostra l'enllaç a la línia de temps pública a la pàgina inicial i permet l'accés a l'API a la línia de temps pública sense autenticació - title: Permet l'accés no autenticat a la línia de temps pública - title: Configuració del lloc - trendable_by_default: - desc_html: El contingut específic de la tendència encara pot explícitament no estar permès - title: Permet tendències sense revisió prèvia - trends: - desc_html: Mostra públicament les etiquetes revisades anteriorment que actualment estan en tendència - title: Etiquetes tendència + title: Paràmetres del servidor site_uploads: delete: Esborra el fitxer pujat destroyed_msg: La càrrega al lloc s'ha suprimit correctament! diff --git a/config/locales/ckb.yml b/config/locales/ckb.yml index 56f34d50f..562c6b00a 100644 --- a/config/locales/ckb.yml +++ b/config/locales/ckb.yml @@ -503,72 +503,15 @@ ckb: empty: هێشتا هیچ یاسایەکی سێرڤەر پێناسە نەکراوە. title: یاساکانی سێرڤەر settings: - activity_api_enabled: - desc_html: ژماردنی دۆخی بڵاوکراوە ی ناوخۆیی و بەکارهێنەرە چالاکەکان و تۆماری نوێ لە سەتڵی هەفتانە - title: بڵاوکردنەوەی ئاماری کۆ دەربارەی چالاکی بەکارهێنەر - bootstrap_timeline_accounts: - desc_html: چەند ناوی بەکارهێنەرێک جیابکە بە بۆر، تەنها هەژمارەی بلۆککراوەکان و ناوخۆیی کاردەکەن. بنەڕەت کاتێک بەتاڵ بوو هەموو بەڕێوەبەرە خۆجێیەکانن. - title: بەدواداچوەکانی گریمانەیی بۆ بەکارهێنەرە نوێکان - contact_information: - email: ئیمەیلی بازرگانی - username: ناوی بەکارهێنەر - custom_css: - desc_html: دەستکاری کردنی شێوەی CSS بارکراو لەسەر هەموو لاپەڕەکان - title: CSSی تایبەتمەند - default_noindex: - desc_html: کاردەکاتە سەر هەموو بەکارهێنەرەکان کە ئەم ڕێکخستنە خۆیان نەگۆڕاون - title: بەکارهێنەران لە پێڕستکردنی بزوێنەری گەڕان بە گریمانەیی هەڵبژێن domain_blocks: all: بۆ هەموو کەسێک disabled: بۆ هیچ کەسێک - title: بلۆکەکانی دۆمەین پیشان بدە users: بۆ چوونە ژوورەوەی بەکارهێنەرانی ناوخۆ - domain_blocks_rationale: - title: پیشاندانی ڕێژەیی - mascot: - desc_html: نیشان دراوە لە چەند لاپەڕەیەک. بەلایەنی کەمەوە 293× 205px پێشنیارکراوە. کاتێک دیاری ناکرێت، دەگەڕێتەوە بۆ بەختبەختێکی ئاسایی - title: وێنەی ماسکۆت - peers_api_enabled: - desc_html: ناوی دۆمەینەکانێک کە ئەم ڕاژە پەیوەندی پێوەگرتووە - title: بڵاوکردنەوەی لیستی راژەکانی دۆزراوە - preview_sensitive_media: - desc_html: بینینی لینک لە وێب سایتەکانی تر وێنۆچکەیەک پیشان دەدات تەنانەت ئەگەر میدیاکە بە هەستیاری نیشان کرابێت - title: پیشاندانی میدیای هەستیار لە پێشبینیەکانی OpenGraph - profile_directory: - desc_html: ڕێگەدان بە بەکارهێنەران بۆ دۆزینەوەیان - title: چالاککردنی ڕێنیشاندەرێکی پرۆفایل - registrations: - closed_message: - desc_html: لە پەڕەی پێشەوە پیشان دەدرێت کاتێک تۆمارەکان داخراون. دەتوانیت تاگەکانی HTML بەکاربێنیت - title: نامەی تۆمارکردن داخراو - require_invite_text: - desc_html: کاتێک تۆمارکردنەکان پێویستیان بە ڕەزامەندی دەستی هەیە، "بۆچی دەتەوێت بەشداری بکەیت؟" نووسینی دەق ئیجبارییە نەک ئیختیاری registrations_mode: modes: approved: پەسەندکردنی داواکراو بۆ ناوتۆمارکردن none: کەس ناتوانێت خۆی تۆمار بکات open: هەر کەسێک دەتوانێت خۆی تۆمار بکات - title: مەرجی تۆمارکردن - site_description: - desc_html: کورتە باسیک دەربارەی API، دەربارەی ئەوە چ شتێک دەربارەی ئەم ڕاژەی ماستۆدۆن تایبەتە یان هەر شتێکی گرینگی دیکە. دەتوانن HTML بنووسن، بەتایبەت <a> وە <em>. - title: دەربارەی ئەم ڕاژە - site_description_extended: - desc_html: شوێنیکی باشە بۆ نووسینی سیاسەتی ئیس، یاسا و ڕێسا ، ڕێنمایی و هەر شتیک کە تایبەت بەم ڕاژیە، تاگەکانی HTMLــلیش ڕێگەی پێدراوە - title: زانیاری تەواوکەری تایبەتمەندی - site_short_description: - desc_html: نیشان لە شریتی لاتەنیشت و مێتا تاگەکان. لە پەرەگرافێک دا وەسفی بکە کە ماستۆدۆن چیە و چی وا لە ڕاژە کە دەکات تایبەت بێت. - title: دەربارەی ئەم ڕاژە - site_title: ناوی ڕاژە - thumbnail: - desc_html: بۆ پێشبینین بەکارهاتووە لە ڕێگەی OpenGraph وە API. ڕووناکی بینین ١٢٠٠x٦٣٠پیکسێڵ پێشنیارکراوە - title: وێنەی بچکۆلەی ڕاژە - timeline_preview: - desc_html: لینکەکە نیشان بدە بۆ هێڵی کاتی گشتی لەسەر پەڕەی نیشتنەوە و ڕێگە بە API بدە دەستگەیشتنی هەبێت بۆ هێڵی کاتی گشتی بەبێ سەلماندنی ڕەسەنایەتی - title: ڕێگەبدە بە چوونە ژورەوەی نەسەلمێنراو بۆ هێڵی کاتی گشتی - title: ڕێکخستنەکانی ماڵپەڕ - trends: - desc_html: بە ئاشکرا هاشتاگی پێداچوونەوەی پێشوو پیشان بدە کە ئێستا بەرچاوکراوەن - title: هاشتاگی بەرچاوکراوە site_uploads: delete: سڕینەوەی فایلی بارکراو destroyed_msg: بارکردنی ماڵپەڕ بە سەرکەوتوویی سڕدراوەتەوە! diff --git a/config/locales/co.yml b/config/locales/co.yml index 48909a4b5..6e2066acc 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -462,73 +462,15 @@ co: edit: Mudificà regula title: Regule di u servore settings: - activity_api_enabled: - desc_html: Numeri di statuti creati quì, utilizatori attivi, è arregistramenti novi tutte e settimane - title: Pubblicà statistiche nant’à l’attività di l’utilizatori - bootstrap_timeline_accounts: - desc_html: Cugnomi separati cù virgule. Solu pussibule cù conti lucali è pubblichi. Quandu a lista hè viota, tutti l’amministratori lucali saranu selezziunati. - title: Abbunamenti predefiniti per l’utilizatori novi - contact_information: - email: E-mail prufissiunale - username: Identificatore di cuntattu - custom_css: - desc_html: Mudificà l'apparenza cù CSS caricatu nant'à ogni pagina - title: CSS persunalizatu - default_noindex: - desc_html: Tocca tutti quelli ch'ùn anu micca cambiatu stu parametru - title: Ritirà l'utilizatori di l'indicazione nant'à i mutori di ricerca domain_blocks: all: À tutti disabled: À nimu - title: Mustrà blucchime di duminiu users: À l'utilizatori lucali cunnettati - domain_blocks_rationale: - title: Vede ragiò - mascot: - desc_html: Affissata nant'à parechje pagine. Almenu 293x205px ricumandatu. S'ella hè lasciata viota, a mascotta predefinita sarà utilizata - title: Ritrattu di a mascotta - peers_api_enabled: - desc_html: Indirizzi web stu servore hà vistu indè u fediversu - title: Pubblicà a lista di servori cunnisciuti - preview_sensitive_media: - desc_html: E priviste di i ligami nant'à l'altri siti mustreranu una vignetta ancu s'ellu hè marcatu cum'è sensibile u media - title: Vede media sensibili in e viste OpenGraph - profile_directory: - desc_html: Auturizà a scuperta di l'utilizatori - title: Attivà l'annuariu di i prufili - registrations: - closed_message: - desc_html: Affissatu nant’a pagina d’accolta quandu l’arregistramenti sò chjosi. Pudete fà usu di u furmattu HTML - title: Missaghju per l’arregistramenti chjosi - require_invite_text: - desc_html: Quandu l'arregistramenti necessitanu un'apprubazione manuale, fà chì u testu "Perchè vulete ghjunghje?" sia ubligatoriu invece d'esse facultativu - title: Richiede chì i novi utilizatori empiinu una dumanda d'invitazione registrations_mode: modes: approved: Apprubazione necessaria per arregistrassi none: Nimu ùn pò arregistrassi open: Tutt'ognunu pò arregistrassi - title: Modu d'arregistramenti - site_description: - desc_html: Paragrafu di prisentazione nant’a pagina d’accolta. Parlate di cio chì rende stu servore speziale, o d'altre cose impurtante. Pudete fà usu di marchi HTML, in particulare <a> è <em>. - title: Discrizzione di u servore - site_description_extended: - desc_html: Una bona piazza per e regule, infurmazione è altre cose chì l’utilizatori duverìanu sapè. Pudete fà usu di marchi HTML - title: Discrizzione stesa di u situ - site_short_description: - desc_html: Mustratu indè a barra laterala è i tag meta. Spiegate quale hè Mastodon è ciò chì rende u vostru servore speciale in un paragrafu. S'ella hè lasciata viota, a discrizzione di u servore sarà utilizata. - title: Descrizzione corta di u servore - site_title: Nome di u servore - thumbnail: - desc_html: Utilizatu per viste cù OpenGraph è l’API. Ricumandemu 1200x630px - title: Vignetta di u servore - timeline_preview: - desc_html: Vede a linea pubblica nant’a pagina d’accolta - title: Vista di e linee - title: Parametri di u situ - trends: - desc_html: Mustrà à u pubblicu i hashtag chì sò stati digià verificati è chì sò in e tendenze avà - title: Tendenze di hashtag site_uploads: delete: Sguassà u fugliale caricatu destroyed_msg: Fugliale sguassatu da u situ! diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 08e9e187b..64224e8d5 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -687,79 +687,39 @@ cs: empty: Zatím nebyla definována žádná pravidla serveru. title: Pravidla serveru settings: - activity_api_enabled: - desc_html: Počty lokálně publikovaných příspěvků, aktivních uživatelů a nových registrací, v týdenních intervalech - title: Publikovat hromadné statistiky o uživatelské aktivitě v API - bootstrap_timeline_accounts: - desc_html: Více uživatelských jmen oddělte čárkou. U těchto účtů bude zaručeno, že budou vždy zobrazeny mezi doporučenými sledováními - title: Doporučit tyto účty novým uživatelům - contact_information: - email: Pracovní e-mail - username: Uživatelské jméno pro kontaktování - custom_css: - desc_html: Pozměnit vzhled pomocí CSS šablony načítané na každé stránce - title: Vlastní CSS - default_noindex: - desc_html: Ovlivňuje všechny uživatele, kteří toto nastavení sami nezměnili - title: Ve výchozím stavu odhlásit uživatele z indexování vyhledávači + about: + manage_rules: Spravovat pravidla serveru + preamble: Uveďte podrobné informace o tom, jak je server provozován, moderován, financován. + rules_hint: Existuje vyhrazená oblast pro pravidla, u nichž se očekává, že je budou uživatelé dodržovat. + title: O aplikaci + appearance: + preamble: Přizpůsobte si webové rozhraní Mastodon. + title: Vzhled + branding: + title: Značka + content_retention: + preamble: Určuje, jak je obsah generovaný uživatelem uložen v Mastodonu. + title: Uchovávání obsahu + discovery: + follow_recommendations: Doporučená sledování + preamble: Povrchový zajímavý obsah je užitečný pro zapojení nových uživatelů, kteří možná neznají žádného Mastodona. Mějte pod kontrolou, jak různé objevovací funkce fungují na vašem serveru. + profile_directory: Adresář profilů + public_timelines: Veřejné časové osy + title: Objevujte + trends: Trendy domain_blocks: all: Všem disabled: Nikomu - title: Zobrazit blokace domén users: Přihlášeným místním uživatelům - domain_blocks_rationale: - title: Zobrazit odůvodnění - mascot: - desc_html: Zobrazuje se na několika stránkách. Doporučujeme rozlišení alespoň 293x205 px. Pokud toto není nastaveno, bude zobrazen výchozí maskot - title: Obrázek maskota - peers_api_enabled: - desc_html: Domény, na které tento server narazil ve fedivesmíru - title: Zveřejnit seznam objevených serverů v API - preview_sensitive_media: - desc_html: Náhledy odkazů na jiných stránkách budou zobrazeny i pokud jsou media označena jako citlivá - title: Zobrazovat v náhledech OpenGraph i citlivá média - profile_directory: - desc_html: Dovolit uživatelům být objevitelní - title: Povolit adresář profilů registrations: - closed_message: - desc_html: Zobrazí se na hlavní stránce, jsou-li registrace uzavřeny. Můžete použít i HTML značky - title: Zpráva o uzavřených registracích - require_invite_text: - desc_html: Když jsou registrace schvalovány ručně, udělat odpověď na otázku "Proč se chcete připojit?" povinnou - title: Požadovat od nových uživatelů zdůvodnění založení + preamble: Mějte pod kontrolou, kdo může vytvořit účet na vašem serveru. + title: Registrace registrations_mode: modes: approved: Pro registraci je vyžadováno schválení none: Nikdo se nemůže registrovat open: Kdokoliv se může registrovat - title: Režim registrací - site_description: - desc_html: Úvodní odstavec v API. Popište, čím se tento server Mastodon odlišuje od ostatních, a cokoliv jiného, co je důležité. Můžete zde používat HTML značky, hlavně <a> a <em>. - title: Popis serveru - site_description_extended: - desc_html: Dobré místo pro vaše pravidla, pokyny a jiné věci, které váš server odlišují od ostatních. Lze použít HTML značky - title: Vlastní rozšířené informace - site_short_description: - desc_html: Zobrazeno v postranním panelu a meta značkách. V jednom odstavci popište, co je Mastodon a čím se tento server odlišuje od ostatních. - title: Krátký popis serveru - site_terms: - desc_html: Můžete napsat své vlastní zásady ochrany osobních údajů. HTML tagy můžete použít - title: Vlastní zásady ochrany osobních údajů - site_title: Název serveru - thumbnail: - desc_html: Používáno pro náhledy přes OpenGraph a API. Doporučujeme rozlišení 1200x630px - title: Miniatura serveru - timeline_preview: - desc_html: Zobrazit na hlavní stránce odkaz na veřejnou časovou osu a povolit přístup na veřejnou časovou osu pomocí API bez autentizace - title: Povolit neautentizovaný přístup k časové ose - title: Nastavení stránky - trendable_by_default: - desc_html: Specifický populární obsah může být i nadále výslovně zakázán - title: Povolit trendy bez předchozí revize - trends: - desc_html: Veřejně zobrazit dříve schválený obsah, který je zrovna populární - title: Trendy + title: Nastavení serveru site_uploads: delete: Odstranit nahraný soubor destroyed_msg: Upload stránky byl úspěšně smazán! diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 756bcea87..88edb06d1 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -363,70 +363,15 @@ cy: unresolved: Heb ei ddatrys updated_at: Diweddarwyd settings: - activity_api_enabled: - desc_html: Niferoedd o statysau wedi eu postio'n lleol, defnyddwyr gweithredol, a cofrestradau newydd mewn bwcedi wythnosol - title: Cyhoeddi ystatedgau cyfangronedig am weithgaredd defnyddwyr - bootstrap_timeline_accounts: - desc_html: Gwahanu sawl enw defnyddiwr a coma. Dim ond cyfrifoedd lleol a cyfrifoedd heb eu cloi fydd yn gweithio. Tra bod yn aros yn wag yr hyn sy'n rhagosodedig yw'r holl weinyddwyr lleol. - title: Dilyn diofyn i ddefnyddwyr newydd - contact_information: - email: E-bost busnes - username: Enw defnyddiwr cyswllt - custom_css: - desc_html: Addasu gwedd gyda CSS wedi lwytho ar bob tudalen - title: CSS wedi'i addasu - default_noindex: - desc_html: Yn effeithio pob defnyddwr sydd heb newid y gosodiad ei hun - title: Eithrio defnyddwyr o fynegai peiriannau chwilio yn rhagosodiedig domain_blocks: all: I bawb disabled: I neb - title: Dangos rhwystriadau parth users: I ddefnyddwyr lleol mewngofnodadwy - domain_blocks_rationale: - title: Dangos rhesymwaith - mascot: - desc_html: I'w arddangos ar nifer o dudalennau. Awgrymir 293x205px o leiaf. Pan nad yw wedi ei osod, cwympo nôl i'r mascot rhagosodedig - title: Llun mascot - peers_api_enabled: - desc_html: Enwau parth y mae'r achos hwn wedi dod ar ei draws yn y ffedysawd - title: Cyhoeddi rhestr o achosion dargynfyddiedig - preview_sensitive_media: - desc_html: Bydd rhagolygon ar wefannau eraill yn dangos ciplun hyd yn oed os oes na gyfryngau wedi eu marcio'n sensitif - title: Dangos cyfryngau sensitif mewn rhagolygon OpenGraph - profile_directory: - desc_html: Caniatáu i ddefnyddwyr gael eu gweld - title: Galluogi cyfeiriadur proffil - registrations: - closed_message: - desc_html: I'w arddangos ar y dudalen flaen wedi i gofrestru cau. Mae modd defnyddio tagiau HTML - title: Neges gofrestru caeëdig registrations_mode: modes: approved: Mae angen cymeradwyaeth ar gyfer cofrestru none: Ni all unrhyw un cofrestru open: Gall unrhyw un cofrestru - title: Modd cofrestriadau - site_description: - desc_html: Paragraff agoriadol ar y dudalen flaen. Disgrifiwch yr hyn sy'n arbennig am y gweinydd Mastodon hwn ac unrhywbeth arall o bwys. Mae modd defnyddio tagiau HTML <a> a <em>. - title: Disgrifiad achos - site_description_extended: - desc_html: Lle da ar gyfer eich cod ymddygiad, rheolau, canllawiau a phethau eraill sy'n gwneud eich achos yn whanol. Mae modd i chi ddefnyddio tagiau HTML - title: Gwybodaeth bellach wedi ei addasu - site_short_description: - desc_html: Yn cael ei ddangos yn bar ar yr ochr a tagiau meto. Digrifiwch beth yw Mastodon a beth sy'n gwneud y gweinydd hwn mewn un paragraff. Os yn wag, wedi ei ragosod i ddangos i disgrifiad yr achos. - title: Disgrifiad byr o'r achos - site_title: Enw'r achos - thumbnail: - desc_html: Ceith ei ddefnyddio ar gyfer rhagolygon drwy OpenGraph a'r API. Argymhellir 1200x630px - title: Mân-lun yr achos - timeline_preview: - desc_html: Dangos ffrwd gyhoeddus ar y dudalen lanio - title: Rhagolwg o'r ffrwd - title: Gosodiadau'r wefan - trends: - desc_html: Arddangos hashnodau a adolygwyd yn gynt yn gyhoeddus sydd yn tueddu yn bresennol - title: Hashnodau tueddig site_uploads: delete: Dileu ffeil sydd wedi'i uwchlwytho destroyed_msg: Uwchlwythiad wefan wedi'i ddileu yn lwyddianus! diff --git a/config/locales/da.yml b/config/locales/da.yml index f3b030cc0..5128e87f3 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -667,79 +667,40 @@ da: empty: Ingen serverregler defineret endnu. title: Serverregler settings: - activity_api_enabled: - desc_html: Antal lokalt opslåede indlæg, aktive brugere samt nye tilmeldinger i ugentlige opdelinger - title: Offentliggør samlede statistikker vedr. brugeraktivitet i API'en - bootstrap_timeline_accounts: - desc_html: Adskil flere brugernavne med kommaer. Disse konti vil være garanteret visning i følg-anbefalinger - title: Anbefal disse konti til nye brugere - contact_information: - email: Forretningse-mail - username: Kontaktbrugernavn - custom_css: - desc_html: Ændre udseendet med CSS indlæst på hver side - title: Tilpasset CSS - default_noindex: - desc_html: Påvirker alle brugere, som ikke selv har ændret denne indstilling - title: Fravælg som standard søgemaskineindekseringer for brugere + about: + manage_rules: Håndtér serverregler + preamble: Giv dybdegående oplysninger om, hvordan serveren opereres, modereres, finansieres. + rules_hint: Der er et dedikeret område for regler, som forventes overholdt af brugerne. + title: Om + appearance: + preamble: Tilpas Mastodon-webgrænsefladen. + title: Udseende + branding: + preamble: Serverens branding adskiller den fra andres i netværket. Oplysningerne kan vises på tværs af div. miljøer, såsom Mastodon-webgrænsefladen, dedikerede applikationer, i-link forhåndsvisninger på andre websteder og i besked-apps mv. Oplysningerne bør derfor være klare og detaljerede, men samtidig kortfattede. + title: Branding + content_retention: + preamble: Styr, hvordan Mastodon gemmer brugergenereret indhold. + title: Indholdsopbevaring + discovery: + follow_recommendations: Følg-anbefalinger + preamble: At vise interessant indhold er vital ifm. at få nye brugere om bord, som måske ikke kender nogen på Mastodon. Styr, hvordan forskellige opdagelsesfunktioner fungerer på serveren. + profile_directory: Profilmappe + public_timelines: Offentlige tidslinjer + title: Opdagelse + trends: Trends domain_blocks: all: Til alle disabled: Til ingen - title: Vis domæneblokeringer users: Til indloggede lokale brugere - domain_blocks_rationale: - title: Vis begrundelse - mascot: - desc_html: Vises på flere sider. Mindst 293x205px anbefales. Hvis ikke opsat, benyttes standardmaskot - title: Maskotbillede - peers_api_enabled: - desc_html: Domænenavne, denne server er stødt på i fediverset - title: Udgiv liste over fundne server i API'en - preview_sensitive_media: - desc_html: Linkforhåndsvisninger på andre websteder vil vise et miniaturebillede, selv hvis mediet er markeret som sensitivt - title: Vis sensitive medier i OpenGraph-forhåndsvisninger - profile_directory: - desc_html: Tillad brugere at blive fundet - title: Aktivér profilmappe registrations: - closed_message: - desc_html: Vises på forside, når tilmeldingsmuligheder er lukket. HTML-tags kan bruges - title: Lukket tilmelding-besked - require_invite_text: - desc_html: Når tilmelding kræver manuel godkendelse, så gør “Hvorfor ønsker du at deltage?” tekstinput obligatorisk i stedet for valgfrit - title: Nye brugere afkræves tilmeldingsbegrundelse + preamble: Styr, hvem der kan oprette en konto på serveren. + title: Registreringer registrations_mode: modes: approved: Tilmeldingsgodkendelse kræves none: Ingen kan tilmelde sig open: Alle kan tilmelde sig - title: Tilmeldingstilstand - site_description: - desc_html: Introduktionsafsnit på API'en. Beskriv, hvad der gør denne Mastodonserver speciel samt alt andet vigtigt. HTML-tags kan bruges, især <a> og <em>. - title: Serverbeskrivelse - site_description_extended: - desc_html: Et god placering til adfærdskodes, regler, retningslinjer mv., som gør denne server unik. HTML-tags kan bruges - title: Tilpasset udvidet information - site_short_description: - desc_html: Vises på sidebjælke og metatags. Beskriv i et enkelt afsnit, hvad Mastodon er, og hvad der gør denne server speciel. - title: Kort serverbeskrivelse - site_terms: - desc_html: Man kan skrive sin egen fortrolighedspolitik. HTML-tags understøttes - title: Tilpasset fortrolighedspolitik - site_title: Servernavn - thumbnail: - desc_html: Bruges til forhåndsvisninger via OpenGraph og API. 1200x630px anbefales - title: Serverminiaturebillede - timeline_preview: - desc_html: Vis link til offentlig tidslinje på indgangssiden og lad API'en tilgå den offentlige tidslinje uden godkendelse - title: Tillad ikke-godkendt tilgang til offentlig tidslinje - title: Webstedsindstillinger - trendable_by_default: - desc_html: Bestemt tendensindhold kan stadig udtrykkeligt forbydes - title: Tillad tendenser uden forudgående gennemsyn - trends: - desc_html: Vis offentligt tidligere reviderede hashtags, som pt. trender - title: Populært + title: Serverindstillinger site_uploads: delete: Slet uploadet fil destroyed_msg: Websteds-upload blev slettet! diff --git a/config/locales/de.yml b/config/locales/de.yml index e1e298ef0..272765431 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -667,79 +667,15 @@ de: empty: Es wurden bis jetzt keine Server-Regeln definiert. title: Server-Regeln settings: - activity_api_enabled: - desc_html: Anzahl der lokal geposteten Beiträge, aktiven Nutzern und neuen Registrierungen in wöchentlichen Zusammenfassungen - title: Veröffentliche gesamte Statistiken über Benutzeraktivitäten - bootstrap_timeline_accounts: - desc_html: Mehrere Profilnamen durch Kommata trennen. Diese Konten werden immer in den Folgemempfehlungen angezeigt - title: Konten, welche neuen Benutzern empfohlen werden sollen - contact_information: - email: Öffentliche E-Mail-Adresse - username: Profilname für die Kontaktaufnahme - custom_css: - desc_html: Verändere das Aussehen mit CSS-Stilen, die auf jeder Seite geladen werden - title: Benutzerdefiniertes CSS - default_noindex: - desc_html: Beeinflusst alle Benutzer, die diese Einstellung nicht selbst geändert haben - title: Benutzer aus Suchmaschinen-Indizierung standardmäßig herausnehmen domain_blocks: all: An alle disabled: An niemanden - title: Zeige Domain-Blockaden users: Für angemeldete lokale Benutzer - domain_blocks_rationale: - title: Rationale anzeigen - mascot: - desc_html: Angezeigt auf mehreren Seiten. Mehr als 293x205px empfohlen. Wenn es nicht gesetzt wurde, wird stattdessen das Standard-Maskottchen genutzt werden. - title: Maskottchen-Bild - peers_api_enabled: - desc_html: Domain-Namen, die der Server im Fediversum gefunden hat - title: Veröffentliche entdeckte Server durch die API - preview_sensitive_media: - desc_html: Linkvorschauen auf anderen Webseiten werden ein Vorschaubild anzeigen, obwohl die Medien als NSFW markiert sind - title: NSFW-Medien in OpenGraph-Vorschau anzeigen - profile_directory: - desc_html: Erlaube es Benutzern, auffindbar zu sein - title: Aktiviere Profilverzeichnis - registrations: - closed_message: - desc_html: Wird auf der Einstiegsseite gezeigt, wenn die Anmeldung geschlossen ist. Du kannst HTML-Tags nutzen - title: Nachricht über geschlossene Registrierung - require_invite_text: - desc_html: Wenn eine Registrierung manuell genehmigt werden muss, mache den „Warum möchtest du beitreten?“-Text obligatorisch statt optional - title: Neue Benutzer müssen einen Einladungstext ausfüllen registrations_mode: modes: approved: Zustimmung benötigt zur Registrierung none: Niemand kann sich registrieren open: Jeder kann sich registrieren - title: Registrierungsmodus - site_description: - desc_html: Einleitungsabschnitt auf der Frontseite. Beschreibe, was diesen Mastodon-Server ausmacht. Du kannst HTML-Tags benutzen, insbesondere <a> und <em>. - title: Beschreibung des Servers - site_description_extended: - desc_html: Bietet sich für Verhaltenskodizes, Regeln, Richtlinien und weiteres an, was deinen Server auszeichnet. Du kannst HTML-Tags benutzen - title: Erweiterte Beschreibung des Servers - site_short_description: - desc_html: Wird in der Seitenleiste und in Meta-Tags angezeigt. Beschreibe in einem einzigen Abschnitt, was Mastodon ist und was diesen Server von anderen unterscheidet. Falls leer, wird die Server-Beschreibung verwendet. - title: Kurze Beschreibung des Servers - site_terms: - desc_html: Sie können Ihre eigenen Datenschutzrichtlinien schreiben. Sie können HTML-Tags verwenden - title: Benutzerdefinierte Datenschutzerklärung - site_title: Name des Servers - thumbnail: - desc_html: Wird für die Vorschau via OpenGraph und API verwendet. 1200×630 px wird empfohlen - title: Vorschaubild des Servers - timeline_preview: - desc_html: Auf der Einstiegsseite die öffentliche Zeitleiste anzeigen - title: Zeitleisten-Vorschau - title: Server-Einstellungen - trendable_by_default: - desc_html: Bestimmte angesagte Inhalte können immer noch explizit deaktiviert werden - title: Trends ohne vorherige Überprüfung erlauben - trends: - desc_html: Zuvor überprüfte Hashtags öffentlich anzeigen, die derzeit angesagt sind - title: Trendende Hashtags site_uploads: delete: Hochgeladene Datei löschen destroyed_msg: Upload erfolgreich gelöscht! diff --git a/config/locales/devise.hu.yml b/config/locales/devise.hu.yml index 82520cef7..ddadd1789 100644 --- a/config/locales/devise.hu.yml +++ b/config/locales/devise.hu.yml @@ -22,7 +22,7 @@ hu: action_with_app: Megerősítés majd vissza ide %{app} explanation: Ezzel az e-mail címmel kezdeményeztek regisztrációt a(z) %{host} oldalon. Csak egy kattintás, és a felhasználói fiókodat aktiváljuk. Ha a regisztrációt nem te kezdeményezted, kérjük tekintsd ezt az e-mailt tárgytalannak. explanation_when_pending: Ezzel az e-mail címmel meghívást kértél a(z) %{host} oldalon. Ahogy megerősíted az e-mail címed, átnézzük a jelentkezésedet. Ennek ideje alatt nem tudsz belépni. Ha a jelentkezésed elutasítjuk, az adataidat töröljük, más teendőd nincs. Ha a kérelmet nem te kezdeményezted, kérjük tekintsd ezt az e-mailt tárgytalannak. - extra_html: Kérjük tekintsd át a a szerver szabályzatát és a felhasználási feltételeket. + extra_html: Tekintsd át a a kiszolgáló szabályait és a felhasználási feltételeket. subject: 'Mastodon: Megerősítési lépések ehhez az instancehez: %{instance}' title: E-mail cím megerősítése email_changed: @@ -32,7 +32,7 @@ hu: title: Új e-mail cím password_change: explanation: A fiókodhoz tartozó jelszót megváltoztattuk. - extra: Ha nem te kezdeményezted a fiókodhoz tartozó jelszó módosítását, valaki hozzáférhetett a fiókodhoz. Legjobb, ha azonnal megváltoztatod a jelszavadat; ha nem férsz hozzá a fiókodhoz, vedd fel a kapcsolatot a szervered adminisztrátorával. + extra: Ha nem te kérted a fiókod jelszavának módosítását, akkor valaki hozzáférhetett a fiókodhoz. Legjobb, ha azonnal megváltoztatod a jelszavadat; ha nem férsz hozzá a fiókodhoz, vedd fel a kapcsolatot a kiszolgálód adminisztrátorával. subject: 'Mastodon: Jelszavad megváltoztattuk' title: Sikeres jelszómódosítás reconfirmation_instructions: diff --git a/config/locales/doorkeeper.hu.yml b/config/locales/doorkeeper.hu.yml index d8959bfa2..b394098a4 100644 --- a/config/locales/doorkeeper.hu.yml +++ b/config/locales/doorkeeper.hu.yml @@ -80,7 +80,7 @@ hu: title: Engedélyezett alkalmazásaid errors: messages: - access_denied: Az erőforrás tulajdonosa vagy hitelesítő kiszolgálója megtagadta a kérést. + access_denied: Az erőforrás tulajdonosa vagy az engedélyező kiszolgáló elutasította a kérést. credential_flow_not_configured: Az erőforrás tulajdonos jelszóadatainak átadása megszakadt, mert a Doorkeeper.configure.resource_owner_from_credentials beállítatlan. invalid_client: A kliens hitelesítése megszakadt, mert ismeretlen a kliens, a kliens nem küldött hitelesítést, vagy a hitelesítés módja nem támogatott. invalid_grant: A biztosított hitelesítés érvénytelen, lejárt, visszavont, vagy nem egyezik a hitelesítési kérésben használt URI-val, vagy más kliensnek címezték. @@ -96,11 +96,11 @@ hu: revoked: Hozzáférési kulcsot visszavonták unknown: Hozzáférési kulcs érvénytelen resource_owner_authenticator_not_configured: Erőforrás tulajdonos keresés megszakadt, ugyanis a Doorkeeper.configure.resource_owner_authenticator beállítatlan. - server_error: Hitelesítő szervert váratlan esemény érte, mely meggátolta a kérés teljesítését. - temporarily_unavailable: A hitelesítő szerver jelenleg nem tudja teljesíteni a kérést átmeneti túlterheltség vagy a kiszolgáló karbantartása miatt. + server_error: Az engedélyező kiszolgáló váratlan körülménybe ütközött, ami megakadályozta, hogy teljesítse a kérést. + temporarily_unavailable: Az engedélyezési kiszolgáló jelenleg nem tudja kezelni a kérelmet a kiszolgáló ideiglenes túlterhelése vagy karbantartása miatt. unauthorized_client: A kliens nincs feljogosítva erre a kérésre. - unsupported_grant_type: A hitelesítés módja nem támogatott a hitelesítő kiszolgálón. - unsupported_response_type: A hitelesítő kiszolgáló nem támogatja ezt a választ. + unsupported_grant_type: Az engedélyezés megadási típusát nem támogatja az engedélyezési kiszolgáló. + unsupported_response_type: Az engedélyezési kiszolgáló nem támogatja ezt a választípust. flash: applications: create: @@ -147,10 +147,10 @@ hu: application: title: OAuth engedély szükséges scopes: - admin:read: szerver minden adatának olvasása + admin:read: a kiszolgáló összes adatának olvasása admin:read:accounts: minden kényes fiókadat olvasása admin:read:reports: minden bejelentés és bejelentett fiók kényes adatainak olvasása - admin:write: szerver minden adatának változtatása + admin:write: a kiszolgáló összes adatának módosítása admin:write:accounts: moderációs műveletek végzése fiókokon admin:write:reports: moderációs műveletek végzése bejelentéseken crypto: végpontok közti titkosítás használata diff --git a/config/locales/el.yml b/config/locales/el.yml index baafb1a61..b33a275cf 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -444,73 +444,29 @@ el: empty: Δεν έχουν οριστεί ακόμα κανόνες διακομιστή. title: Κανόνες διακομιστή settings: - activity_api_enabled: - desc_html: Καταμέτρηση τοπικών δημοσιεύσεων, ενεργών χρηστών και νέων εγγραφών σε εβδομαδιαίες ομαδοποιήσεις - title: Δημοσίευση συγκεντρωτικών στατιστικών για τη δραστηριότητα χρηστών - bootstrap_timeline_accounts: - desc_html: Διαχωρίστε πολλαπλά ονόματα χρηστών με κόμματα. Λειτουργεί μόνο με τοπικούς και ανοιχτούς λογαριασμούς. Αν είναι κενό, περιλαμβάνει όλους τους τοπικούς διαχειριστές. - title: Προεπιλεγμένοι λογαριασμοί για παρακολούθηση από τους νέους χρήστες - contact_information: - email: Επαγγελματικό email - username: Όνομα χρήστη επικοινωνίας - custom_css: - desc_html: Τροποποίηση της εμφάνισης μέσω CSS που φορτώνεται σε κάθε σελίδα - title: Προσαρμοσμένο CSS - default_noindex: - desc_html: Επηρεάζει όσους χρήστες δεν έχουν αλλάξει αυτή τη ρύθμιση - title: Εξαίρεση χρηστών από τις μηχανές αναζήτησης + about: + manage_rules: Διαχείριση κανόνων διακομιστή + title: Σχετικά με + appearance: + title: Εμφάνιση + content_retention: + title: Διατήρηση περιεχομένου + discovery: + profile_directory: Κατάλογος προφίλ + public_timelines: Δημόσιες ροές + trends: Τάσεις domain_blocks: all: Για όλους disabled: Για κανέναν - title: Εμφάνιση αποκλεισμένων τομέων users: Προς συνδεδεμένους τοπικούς χρήστες - domain_blocks_rationale: - title: Εμφάνιση σκεπτικού - mascot: - desc_html: Εμφάνιση σε πολλαπλές σελίδες. Προτεινόμενο 293x205px τουλάχιστον. Αν δεν έχει οριστεί, χρησιμοποιεί την προεπιλεγμένη μασκότ - title: Εικόνα μασκότ - peers_api_enabled: - desc_html: Ονόματα τομέων που αυτός ο κόμβος έχει ήδη συναντήσει στο fediverse - title: Δημοσίευση λίστας κόμβων που έχουν ανακαλυφθεί - preview_sensitive_media: - desc_html: Οι προεπισκοπήσεις συνδέσμων σε τρίτους ιστότοπους θα είναι ορατές ακόμα κι όταν το πολυμέσο έχει σημειωθεί ως ευαίσθητο - title: Εμφάνιση ευαίσθητων πολυμέσων στις προεπισκοπήσεις OpenGraph - profile_directory: - desc_html: Να επιτρέπεται η ανακάλυψη χρηστών - title: Ενεργοποίηση του καταλόγου χρηστών registrations: - closed_message: - desc_html: Εμφανίζεται στην εισαγωγική σελίδα όταν οι εγγραφές είναι κλειστές. Μπορείς να χρησιμοποιήσεις HTML tags - title: Μήνυμα κλεισμένων εγγραφών + title: Εγγραφές registrations_mode: modes: approved: Απαιτείται έγκριση για εγγραφή none: Δεν μπορεί να εγγραφεί κανείς open: Μπορεί να εγγραφεί ο οποιοσδήποτε - title: Μέθοδος εγγραφής - site_description: - desc_html: Εισαγωγική παράγραφος στην αρχική σελίδα. Περιέγραψε τι κάνει αυτό τον διακομιστή Mastodon διαφορετικό και ό,τι άλλο ενδιαφέρον. Μπορείς να χρησιμοποιήσεις HTML tags, συγκεκριμένα < a> και < em>. - title: Περιγραφή κόμβου - site_description_extended: - desc_html: Ένα καλό μέρος για τον κώδικα δεοντολογίας, τους κανόνες, τις οδηγίες και ό,τι άλλο διαφοροποιεί τον κόμβο σου. Μπορείς να χρησιμοποιήσεις και κώδικα HTML - title: Προσαρμοσμένες εκτεταμένες πληροφορίες - site_short_description: - desc_html: Εμφανίζεται στην πλαϊνή μπάρα και στα meta tags. Περιέγραψε τι είναι το Mastodon και τι κάνει αυτό τον διακομιστή ιδιαίτερο σε μια παράγραφο. Αν μείνει κενό, θα χρησιμοποιήσει την προκαθορισμένη περιγραφή του κόμβου. - title: Σύντομη περιγραφή του κόμβου - site_terms: - desc_html: Μπορείτε να γράψετε τη δική σας πολιτική απορρήτου. Μπορείτε να χρησιμοποιήσετε ετικέτες HTML - title: Προσαρμοσμένη πολιτική απορρήτου - site_title: Όνομα κόμβου - thumbnail: - desc_html: Χρησιμοποιείται για προεπισκοπήσεις μέσω του OpenGraph και του API. Συστήνεται 1200x630px - title: Μικρογραφία κόμβου - timeline_preview: - desc_html: Εμφάνισε τη δημόσια ροή στην αρχική σελίδα - title: Προεπισκόπιση ροής - title: Ρυθμίσεις ιστότοπου - trends: - desc_html: Δημόσια εμφάνιση ετικετών που έχουν ήδη εγκριθεί και είναι δημοφιλείς - title: Δημοφιλείς ετικέτες + title: Ρυθμίσεις διακομιστή site_uploads: delete: Διαγραφή μεταφορτωμένου αρχείου destroyed_msg: Η μεταφόρτωση ιστότοπου διαγράφηκε επιτυχώς! diff --git a/config/locales/eo.yml b/config/locales/eo.yml index c62c02eef..f4f4d4819 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -466,67 +466,15 @@ eo: edit: Redakti la regulon title: Reguloj de la servilo settings: - activity_api_enabled: - desc_html: Sumo de lokaj mesaĝoj, aktivaj uzantoj, kaj novaj registriĝoj laŭsemajne - title: Publikigi kunmetitajn statistikojn pri la uzanta agado - bootstrap_timeline_accounts: - desc_html: Disigi plurajn uzantnomojn per komo. Funkcios nur por lokaj neŝlositaj kontoj. Kiam malplena, la dekomenca valoro estas ĉiuj lokaj administrantoj. - title: Dekomencaj sekvadoj por novaj uzantoj - contact_information: - email: Publika retadreso - username: Kontakta uzantnomo - custom_css: - desc_html: Ŝanĝi la aspekton per CSS ŝargita en ĉiu pago - title: Propra CSS domain_blocks: all: Al ciuj disabled: Al neniu - title: Vidi domajna blokado users: Al salutintaj lokaj uzantoj - domain_blocks_rationale: - title: Montri la kialon - mascot: - desc_html: Montrata en pluraj paĝoj. Rekomendataj estas almenaŭ 293x205px. Se ĉi tio ne estas agordita, la defaŭlta maskoto uziĝas - title: Maskota bildo - peers_api_enabled: - desc_html: Nomoj de domajnoj, kiujn ĉi tiu servilo renkontis en la federauniverso - title: Publikigi liston de malkovritaj serviloj - preview_sensitive_media: - desc_html: La antaŭmontroj de ligilo al la aliaj retejoj montros bildeton eĉ se la aŭdovidaĵo estas markita kiel tikla - title: Montri tiklajn aŭdovidaĵojn en la antaŭvidoj de OpenGraph - profile_directory: - desc_html: Permesi al uzantoj esti troveblaj - title: Ebligi la profilujon - registrations: - closed_message: - desc_html: Montrita sur la hejma paĝo kiam registriĝoj estas fermitaj. Vi povas uzi HTML-etikedojn - title: Mesaĝo pri fermitaj registriĝoj registrations_mode: modes: approved: Bezonas aprobi por aliĝi none: Neniu povas aliĝi open: Iu povas aliĝi - title: Reĝimo de registriĝo - site_description: - desc_html: Enkonduka alineo en la ĉefpaĝo. Priskribu la unikaĵojn de ĉi tiu nodo de Mastodon, kaj ĉiujn aliajn gravaĵojn. Vi povas uzi HTML-etikedojn, kiel <a> kaj <em>. - title: Priskribo de la servilo - site_description_extended: - desc_html: Bona loko por viaj sintenaj reguloj, aliaj reguloj, gvidlinioj kaj aliaj aferoj, kiuj apartigas vian serilon. Vi povas uzi HTML-etikedojn - title: Propraj detalaj informoj - site_short_description: - desc_html: Afiŝita en la flankpanelo kaj metadatumaj etikedoj. Priskribu kio estas Mastodon, kaj kio specialas en ĉi tiu nodo, per unu alineo. Se malplena, la priskribo de la servilo estos uzata. - title: Mallonga priskribo de la servilo - site_title: Nomo de la servilo - thumbnail: - desc_html: Uzata por antaŭvidoj per OpenGraph kaj per API. 1200x630px rekomendita - title: Bildeto de la servilo - timeline_preview: - desc_html: Montri publikan templinion en komenca paĝo - title: Permesi la neaŭtentigitan aliron al la publika templinio - title: Retejaj agordoj - trends: - desc_html: Publike montri antaŭe kontrolitajn kradvortojn, kiuj nune furoras - title: Furoraj kradvortoj site_uploads: delete: Forigi elŝutitan dosieron destroyed_msg: Reteja alŝuto sukcese forigita! diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 111567766..f88cd29bf 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -667,79 +667,40 @@ es-AR: empty: Aún no se han definido las reglas del servidor. title: Reglas del servidor settings: - activity_api_enabled: - desc_html: Conteos de mensajes publicados localmente, usuarios activos y nuevos registros en tandas semanales - title: Publicar estadísticas agregadas sobre la actividad del usuario en la API - bootstrap_timeline_accounts: - desc_html: Separar múltiples nombres de usuario con coma. Sólo funcionarán las cuentas locales y desbloqueadas. Predeterminadamente, cuando está vacío se trata de todos los administradores locales. - title: Recomendar estas cuentas a usuarios nuevos - contact_information: - email: Correo electrónico de negocios - username: Nombre de usuario de contacto - custom_css: - desc_html: Modificá la apariencia con CSS cargado en cada página - title: CSS personalizado - default_noindex: - desc_html: Afecta a todos los usuarios que no cambiaron esta configuración por sí mismos - title: Quitar predeterminadamente a los usuarios de la indexación de los motores de búsqueda + about: + manage_rules: Administrar reglas del servidor + preamble: Proveé información en profundidad sobre cómo el servidor es operado, moderado y financiado. + rules_hint: Hay un área dedicada para las reglas a las que se espera que tus usuarios se adhieran. + title: Información + appearance: + preamble: Personalizá la interface web de Mastodon. + title: Apariencia + branding: + preamble: La marca de tu servidor lo diferencia de otros servidores de la red. Esta información puede mostrarse a través de una variedad de entornos, como en la interface web de Mastodon, en aplicaciones nativas, en previsualizaciones de enlaces en otros sitios web y en aplicaciones de mensajería, etc. Por esta razón, es mejor mantener esta información clara, breve y concisa. + title: Marca + content_retention: + preamble: Controlá cómo el contenido generado por el usuario se almacena en Mastodon. + title: Retención de contenido + discovery: + follow_recommendations: Recom. de cuentas a seguir + preamble: Exponer contenido interesante a la superficie es fundamental para incorporar nuevos usuarios que pueden no conocer a nadie Mastodon. Controlá cómo funcionan varias opciones de descubrimiento en tu servidor. + profile_directory: Directorio de perfiles + public_timelines: Líneas temporales públicas + title: Descubrí + trends: Tendencias domain_blocks: all: A todos disabled: A nadie - title: Mostrar dominios bloqueados users: A usuarios locales con sesiones abiertas - domain_blocks_rationale: - title: Mostrar razonamiento - mascot: - desc_html: Mostrado en múltiples páginas. Se recomienda un tamaño mínimo de 293x205 píxeles. Cuando no se especifica, se muestra la mascota predeterminada - title: Imagen de la mascota - peers_api_enabled: - desc_html: Nombres de dominio que este servidor encontró en el fediverso - title: Publicar lista de servidores descubiertos en la API - preview_sensitive_media: - desc_html: Las previsualizaciones de enlaces en otros sitios web mostrarán una miniatura incluso si el medio está marcado como contenido sensible - title: Mostrar medios sensibles en previsualizaciones de OpenGraph - profile_directory: - desc_html: Permitir que los usuarios puedan ser descubiertos - title: Habilitar directorio de perfiles registrations: - closed_message: - desc_html: Mostrado en la página principal cuando los registros de nuevas cuentas están cerrados. Podés usar etiquetas HTML - title: Mensaje de registro de nuevas cuentas cerrado - require_invite_text: - desc_html: Cuando los registros requieran aprobación manual, hacé que la solicitud de invitación "¿Por qué querés unirte?" sea obligatoria, en vez de opcional - title: Requerir que los nuevos usuarios llenen un texto de solicitud de invitación + preamble: Controlá quién puede crear una cuenta en tu servidor. + title: Registros registrations_mode: modes: approved: Se requiere aprobación para registrarse none: Nadie puede registrarse open: Cualquiera puede registrarse - title: Modo de registros - site_description: - desc_html: Párrafo introductorio en la API. Describe qué hace especial a este servidor de Mastodon y todo lo demás que sea importante. Podés usar etiquetas HTML, en particular <a> y <em>. - title: Descripción del servidor - site_description_extended: - desc_html: Un buen lugar para tu código de conducta, reglas, directrices y otras cosas que definen tu servidor. Podés usar etiquets HTML - title: Información extendida personalizada - site_short_description: - desc_html: Mostrado en la barra lateral y las etiquetas de metadatos. Describe qué es Mastodon y qué hace especial a este servidor en un solo párrafo. - title: Descripción corta del servidor - site_terms: - desc_html: Podés escribir tu propia política de privacidad. Podés usar etiquetas HTML - title: Política de privacidad personalizada - site_title: Nombre del servidor - thumbnail: - desc_html: Usado para previsualizaciones vía OpenGraph y APIs. Se recomienda 1200x630 píxeles - title: Miniatura del servidor - timeline_preview: - desc_html: Mostrar enlace a la línea temporal pública en la página de inicio y permitir el acceso a la API a la línea temporal pública sin autenticación - title: Permitir acceso no autorizado a la línea temporal pública - title: Configuración del sitio - trendable_by_default: - desc_html: El contenido de tendencias específicas todavía puede ser explícitamente desactivado - title: Permitir tendencias sin revisión previa - trends: - desc_html: Mostrar públicamente etiquetas previamente revisadas que son tendencia actualmente - title: Tendencias + title: Configuraciones del servidor site_uploads: delete: Eliminar archivo subido destroyed_msg: "¡Subida al sitio eliminada exitosamente!" diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 45ca39d1b..889c0232d 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -667,79 +667,15 @@ es-MX: empty: Aún no se han definido las normas del servidor. title: Normas del servidor settings: - activity_api_enabled: - desc_html: Conteo de estados publicados localmente, usuarios activos, y nuevos registros en periodos semanales - title: Publicar estadísticas locales acerca de actividad de usuario - bootstrap_timeline_accounts: - desc_html: Separa con comas los nombres de usuario. Solo funcionará para cuentas locales desbloqueadas. Si se deja vacío, se tomará como valor por defecto a todos los administradores locales. - title: Seguimientos predeterminados para usuarios nuevos - contact_information: - email: Correo de trabajo - username: Nombre de usuario - custom_css: - desc_html: Modificar el aspecto con CSS cargado en cada página - title: CSS personalizado - default_noindex: - desc_html: Afecta a todos los usuarios que no han cambiado esta configuración por sí mismos - title: Optar por los usuarios fuera de la indexación en los motores de búsqueda por defecto domain_blocks: all: A todos disabled: A nadie - title: Mostrar dominios bloqueados users: Para los usuarios locales que han iniciado sesión - domain_blocks_rationale: - title: Mostrar la razón de ser - mascot: - desc_html: Mostrado en múltiples páginas. Se recomienda un tamaño mínimo de 293x205px. Cuando no se especifica, se muestra la mascota por defecto - title: Imagen de la mascota - peers_api_enabled: - desc_html: Nombres de dominio que esta instancia ha encontrado en el fediverso - title: Publicar lista de instancias descubiertas - preview_sensitive_media: - desc_html: Los enlaces de vistas previas en otras web mostrarán una miniatura incluso si el medio está marcado como contenido sensible - title: Mostrar contenido sensible en previews de OpenGraph - profile_directory: - desc_html: Permitir que los usuarios puedan ser descubiertos - title: Habilitar directorio de perfiles - registrations: - closed_message: - desc_html: Se muestra en la portada cuando los registros están cerrados. Puedes usar tags HTML - title: Mensaje de registro cerrado - require_invite_text: - desc_html: Cuando los registros requieren aprobación manual, haga obligatorio en la invitaciones el campo "¿Por qué quieres unirte?" en lugar de opcional - title: Requiere a los nuevos usuarios rellenar un texto de solicitud de invitación registrations_mode: modes: approved: Se requiere aprobación para registrarse none: Nadie puede registrarse open: Cualquiera puede registrarse - title: Modo de registros - site_description: - desc_html: Párrafo introductorio en la portada y en meta tags. Puedes usar tags HTML, en particular <a> y <em>. - title: Descripción de instancia - site_description_extended: - desc_html: Un buen lugar para tu código de conducta, reglas, guías y otras cosas que estén impuestas aparte en tu instancia. Puedes usar tags HTML - title: Información extendida personalizada - site_short_description: - desc_html: Mostrado en la barra lateral y las etiquetas de metadatos. Describe lo que es Mastodon y qué hace especial a este servidor en un solo párrafo. si está vacío, pone por defecto la descripción de la instancia. - title: Descripción corta de la instancia - site_terms: - desc_html: Puedes escribir tu propia política de privacidad. Puedes usar etiquetas HTML - title: Política de privacidad personalizada - site_title: Nombre de instancia - thumbnail: - desc_html: Se usa para muestras con OpenGraph y APIs. Se recomienda 1200x630px - title: Portada de instancia - timeline_preview: - desc_html: Mostrar línea de tiempo pública en la portada - title: Previsualización - title: Ajustes del sitio - trendable_by_default: - desc_html: El contenido específico de tendencias todavía puede ser explícitamente desactivado - title: Permitir tendencias sin revisión previa - trends: - desc_html: Mostrar públicamente hashtags previamente revisados que son tendencia - title: Hashtags de tendencia site_uploads: delete: Eliminar archivo subido destroyed_msg: "¡Carga del sitio eliminada con éxito!" diff --git a/config/locales/es.yml b/config/locales/es.yml index 2be153de0..d0a2d970c 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -667,79 +667,40 @@ es: empty: Aún no se han definido las normas del servidor. title: Normas del servidor settings: - activity_api_enabled: - desc_html: Conteo de estados publicados localmente, usuarios activos, y nuevos registros en periodos semanales - title: Publicar estadísticas locales acerca de actividad de usuario - bootstrap_timeline_accounts: - desc_html: Separa con comas los nombres de usuario. Solo funcionará para cuentas locales desbloqueadas. Si se deja vacío, se tomará como valor por defecto a todos los administradores locales. - title: Seguimientos predeterminados para usuarios nuevos - contact_information: - email: Correo de trabajo - username: Nombre de usuario - custom_css: - desc_html: Modificar el aspecto con CSS cargado en cada página - title: CSS personalizado - default_noindex: - desc_html: Afecta a todos los usuarios que no han cambiado esta configuración por sí mismos - title: Optar por los usuarios fuera de la indexación en los motores de búsqueda por defecto + about: + manage_rules: Administrar reglas del servidor + preamble: Proporciona información detallada sobre cómo el servidor es operado, moderado y financiado. + rules_hint: Hay un área dedicada para las reglas a las que se espera que tus usuarios se adhieran. + title: Acerca de + appearance: + preamble: Personalizar la interfaz web de Mastodon. + title: Apariencia + branding: + preamble: La marca de tu servidor lo diferencia de otros servidores de la red. Esta información puede mostrarse a través de una variedad de entornos, como en la interfaz web de Mastodon, en aplicaciones nativas, en previsualizaciones de enlaces en otros sitios web y en aplicaciones de mensajería, etc. Por esta razón, es mejor mantener esta información clara, breve y concisa. + title: Marca + content_retention: + preamble: Controlar cómo el contenido generado por el usuario se almacena en Mastodon. + title: Retención de contenido + discovery: + follow_recommendations: Recomendaciones de cuentas + preamble: Exponer contenido interesante a la superficie es fundamental para incorporar nuevos usuarios que pueden no conocer a nadie Mastodon. Controla cómo funcionan varias opciones de descubrimiento en tu servidor. + profile_directory: Directorio de perfiles + public_timelines: Lineas de tiempo públicas + title: Descubrimiento + trends: Tendencias domain_blocks: all: A todos disabled: A nadie - title: Mostrar dominios bloqueados users: Para los usuarios locales que han iniciado sesión - domain_blocks_rationale: - title: Mostrar la razón de ser - mascot: - desc_html: Mostrado en múltiples páginas. Se recomienda un tamaño mínimo de 293x205px. Cuando no se especifica, se muestra la mascota por defecto - title: Imagen de la mascota - peers_api_enabled: - desc_html: Nombres de dominio que esta instancia ha encontrado en el fediverso - title: Publicar lista de instancias descubiertas - preview_sensitive_media: - desc_html: Los enlaces de vistas previas en otras web mostrarán una miniatura incluso si el medio está marcado como contenido sensible - title: Mostrar contenido sensible en previews de OpenGraph - profile_directory: - desc_html: Permitir que los usuarios puedan ser descubiertos - title: Habilitar directorio de perfiles registrations: - closed_message: - desc_html: Se muestra en la portada cuando los registros están cerrados. Puedes usar tags HTML - title: Mensaje de registro cerrado - require_invite_text: - desc_html: Cuando los registros requieren aprobación manual, haga obligatorio en la invitaciones el campo "¿Por qué quieres unirte?" en lugar de opcional - title: Requiere a los nuevos usuarios rellenar un texto de solicitud de invitación + preamble: Controla quién puede crear una cuenta en tu servidor. + title: Registros registrations_mode: modes: approved: Se requiere aprobación para registrarse none: Nadie puede registrarse open: Cualquiera puede registrarse - title: Modo de registros - site_description: - desc_html: Párrafo introductorio en la portada y en meta tags. Puedes usar tags HTML, en particular <a> y <em>. - title: Descripción de instancia - site_description_extended: - desc_html: Un buen lugar para tu código de conducta, reglas, guías y otras cosas que estén impuestas aparte en tu instancia. Puedes usar tags HTML - title: Información extendida personalizada - site_short_description: - desc_html: Mostrado en la barra lateral y las etiquetas de metadatos. Describe lo que es Mastodon y qué hace especial a este servidor en un solo párrafo. si está vacío, pone por defecto la descripción de la instancia. - title: Descripción corta de la instancia - site_terms: - desc_html: Puedes escribir tu propia política de privacidad. Puedes usar etiquetas HTML - title: Política de privacidad personalizada - site_title: Nombre de instancia - thumbnail: - desc_html: Se usa para muestras con OpenGraph y APIs. Se recomienda 1200x630px - title: Portada de instancia - timeline_preview: - desc_html: Mostrar línea de tiempo pública en la portada - title: Previsualización - title: Ajustes del sitio - trendable_by_default: - desc_html: El contenido específico de tendencias todavía puede ser explícitamente desactivado - title: Permitir tendencias sin revisión previa - trends: - desc_html: Mostrar públicamente hashtags previamente revisados que son tendencia - title: Hashtags de tendencia + title: Ajustes del Servidor site_uploads: delete: Eliminar archivo subido destroyed_msg: "¡Carga del sitio eliminada con éxito!" diff --git a/config/locales/et.yml b/config/locales/et.yml index 2135b7bfb..10f7b67ca 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -330,70 +330,15 @@ et: unresolved: Lahendamata updated_at: Uuendatud settings: - activity_api_enabled: - desc_html: Kohalike postituste, aktiivsete kasutajate ja uute registreerimiste numbrid iganädalaste "ämbritena" - title: Avalda koondstatistikat selle kasutaja aktiivsusest - bootstrap_timeline_accounts: - desc_html: Eralda mitut kasutajanime komadega. Ainult kohalikud ja lukustamata kasutajate nimed töötavad. Kui tühi, on vaikesätteks kõik kohalikud administraatorid. - title: Vaikimisi jälgimised uutele kasutajatele - contact_information: - email: Äri e-post - username: Kontakt kasutajanimi - custom_css: - desc_html: Muuda kujundust CSSi abil, mis laetakse igal lehel - title: Kohandatud CSS - default_noindex: - desc_html: Mõjutab kõiki kasutajaid, kes pole seda sätet ise muutnud - title: Loobu kasutajate otsingumootoritesse indekseerimisest vaikimisi domain_blocks: all: Kõigile disabled: Mitte kellelegi - title: Näita domeeniblokeeringuid users: Sisseloginud kohalikele kasutajatele - domain_blocks_rationale: - title: Näita põhjendust - mascot: - desc_html: Kuvatakse mitmel lehel. Vähemalt 293x205px soovitatud. Kui pole seadistatud, kuvatakse vaikimisi maskott - title: Maskotipilt - peers_api_enabled: - desc_html: Domeenid, mida see server on kohanud fediversumis - title: Avalda nimekiri avastatud serveritest - preview_sensitive_media: - desc_html: Lingi eelvaated teistel veebisaitidel kuvab pisipilti, isegi kui meedia on märgitud tundlikuks - title: Kuva tundlikku meediat OpenGraphi eelvaadetes - profile_directory: - desc_html: Luba kasutajate avastamine - title: Luba profiilikataloog - registrations: - closed_message: - desc_html: Kuvatud esilehel kui registreerimised on suletud. Te võite kasutada HTMLi silte - title: Suletud registreerimiste sõnum registrations_mode: modes: approved: Kinnitus vajalik konto loomisel none: Keegi ei saa kontoid luua open: Kõik võivad kontoid luua - title: Registreerimisrežiim - site_description: - desc_html: Sissejuhatuslik lõik API kohta. Kirjelda, mis teeb selle Mastodoni serveri eriliseks ja ka muud tähtsat. Te saate kasutada HTMLi silte, peamiselt <a> ja <em>. - title: Serveri kirjeldus - site_description_extended: - desc_html: Hea koht käitumisreegliteks, reegliteks, suunisteks ja muuks, mis teevad Teie serveri eriliseks. Te saate kasutada HTML silte - title: Lisa informatsioon - site_short_description: - desc_html: Kuvatud küljeribal ja metasiltides. Kirjelda, mis on Mastodon ja mis on selles serveris erilist ühes lõigus. - title: Serveri lühikirjeldus - site_title: Serveri nimi - thumbnail: - desc_html: Kasutatud OpenGraph ja API eelvaadeteks. 1200x630px soovitatud - title: Serveri pisipilt - timeline_preview: - desc_html: Kuva avalikku ajajoont esilehel - title: Ajajoone eelvaade - title: Lehe seaded - trends: - desc_html: Kuva avalikult eelnevalt üle vaadatud sildid, mis on praegu trendikad - title: Populaarsed sildid praegu site_uploads: delete: Kustuta üleslaetud fail destroyed_msg: Üleslaetud fail edukalt kustutatud! diff --git a/config/locales/eu.yml b/config/locales/eu.yml index edfaffc37..d71a10dfa 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -556,73 +556,15 @@ eu: empty: Ez da zerbitzariko araurik definitu oraindik. title: Zerbitzariaren arauak settings: - activity_api_enabled: - desc_html: Lokalki argitaratutako bidalketa kopurua, erabiltzaile aktiboak, eta izen emate berriak asteko - title: Argitaratu erabiltzaile-jardueraren estatistikak - bootstrap_timeline_accounts: - desc_html: Banandu erabiltzaile-izenak koma bitartez. Giltzapetu gabeko kontu lokalekin dabil bakarrik. Hutsik dagoenean lehenetsitakoa admin lokal guztiak da. - title: Lehenetsitako jarraipena erabiltzaile berrientzat - contact_information: - email: Laneko e-mail helbidea - username: Kontaktuaren erabiltzaile-izena - custom_css: - desc_html: Aldatu itxura orri bakoitzean kargatutako CSS bidez - title: CSS pertsonala - default_noindex: - desc_html: Ezarpen hau berez aldatu ez duten erabiltzaile guztiei eragiten die - title: Utzi erabiltzaileak bilatzailearen indexaziotik kanpo lehenetsita domain_blocks: all: Guztiei disabled: Inori ez - title: Erakutsi domeinu-blokeoak users: Saioa hasita duten erabiltzaile lokalei - domain_blocks_rationale: - title: Erakutsi arrazoia - mascot: - desc_html: Hainbat orritan bistaratua. Gutxienez 293x205px aholkatzen da. Ezarri ezean lehenetsitako maskota erakutsiko da - title: Maskotaren irudia - peers_api_enabled: - desc_html: Zerbitzari honek fedibertsoan aurkitutako domeinu-izenak - title: Argitaratu aurkitutako zerbitzarien zerrenda - preview_sensitive_media: - desc_html: Beste webguneetako esteken aurrebistak iruditxoa izango du multimedia hunkigarri gisa markatzen bada ere - title: Erakutsi multimedia hunkigarria OpenGraph aurrebistetan - profile_directory: - desc_html: Baimendu erabiltzaileak aurkigarriak izatea - title: Gaitu profil-direktorioa - registrations: - closed_message: - desc_html: Azaleko orrian bistaratua izen ematea ixten denean. HTML etiketak erabili ditzakezu - title: Izen emate itxiaren mezua - require_invite_text: - desc_html: Izen emateak eskuz onartu behar direnean, "Zergatik elkartu nahi duzu?" testu sarrera derrigorrezko bezala ezarri, ez hautazko - title: Eskatu erabiltzaile berriei bat egiteko arrazoia sartzeko registrations_mode: modes: approved: Izena emateko onarpena behar da none: Ezin du inork izena eman open: Edonork eman dezake izena - title: Erregistratzeko modua - site_description: - desc_html: Azaleko orrian agertuko den sarrera paragrafoa. Azaldu zerk egiten duen berezi Mastodon zerbitzari hau eta garrantzizko beste edozer. HTML etiketak erabili ditzakezu, zehazki <a> eta <em>. - title: Zerbitzariaren deskripzioa - site_description_extended: - desc_html: Zure jokabide-koderako toki on bat, arauak, gidalerroak eta zure zerbitzari desberdin egiten duten bestelakoak. HTML etiketak erabili ditzakezu - title: Informazio hedatu pertsonalizatua - site_short_description: - desc_html: Albo-barra eta meta etiketetan bistaratua. Deskribatu zerk egiten duen Mastodon zerbitzari hau berezia paragrafo batean. Hutsik lagatzekotan lehenetsitako deskripzioa agertuko da. - title: Zerbitzariaren deskripzio laburra - site_title: Zerbitzariaren izena - thumbnail: - desc_html: Aurrebistetarako erabilia OpenGraph eta API bidez. 1200x630px aholkatzen da - title: Zerbitzariaren iruditxoa - timeline_preview: - desc_html: Bistaratu denbora-lerro publikoa hasiera orrian - title: Denbora-lerroaren aurrebista - title: Gunearen ezarpenak - trends: - desc_html: Erakutsi publikoki orain joeran dauden aurretik errebisatutako traolak - title: Traolak joeran site_uploads: delete: Ezabatu igotako fitxategia destroyed_msg: Guneko igoera ongi ezabatu da! diff --git a/config/locales/fa.yml b/config/locales/fa.yml index c1979a1a6..7dc4dae0a 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -534,73 +534,15 @@ fa: empty: هنوز هیچ قانونی برای کارساز تعریف نشده. title: قوانین کارساز settings: - activity_api_enabled: - desc_html: تعداد فرسته‌های محلی، کاربران فعال، و کاربران تازه در هر هفته - title: انتشار آمار تجمیعی دربارهٔ فعالیت کاربران - bootstrap_timeline_accounts: - desc_html: نام‌های کاربری را با ویرگول از هم جدا کنید. این حساب‌ها تضمین می‌شوند که در پیشنهادهای پی‌گیری نشان داده شوند - title: پیگیری‌های پیش‌فرض برای کاربران تازه - contact_information: - email: رایانامهٔ تجاری - username: نام کاربری - custom_css: - desc_html: ظاهر ماستودون را با CSS-ای که در همهٔ صفحه‌ها جاسازی می‌شود تغییر دهید - title: سبک CSS سفارشی - default_noindex: - desc_html: روی همهٔ کاربرانی که این تنظیم را خودشان تغییر نداده‌اند تأثیر می‌گذارد - title: درخواست پیش‌فرض از طرف کاربران برای ظاهر نشدن در نتایج موتورهای جستجوگر domain_blocks: all: برای همه disabled: برای هیچ‌کدام - title: نمایش دامنه‌های مسدود شده users: برای کاربران محلی واردشده - domain_blocks_rationale: - title: دیدن دلیل - mascot: - desc_html: در صفحه‌های گوناگونی نمایش می‌یابد. دست‌کم ۲۹۳×۲۰۵ پیکسل. اگر تعیین نشود، با تصویر پیش‌فرض جایگزین خواهد شد - title: تصویر نماد - peers_api_enabled: - desc_html: دامین‌هایی که این سرور به آن‌ها برخورده است - title: انتشار سیاههٔ کارسازهای کشف شده در API - preview_sensitive_media: - desc_html: پیوند به سایت‌های دیگر پیش‌نمایشی خواهد داشت که یک تصویر کوچک را نشان می‌دهد، حتی اگر نوشته به عنوان حساس علامت‌گذاری شده باشد - title: نمایش تصاویر حساسیت‌برانگیز در پیش‌نمایش‌های OpenGraph - profile_directory: - desc_html: اجازه به کاربران برای قابل کشف بودن - title: به کار انداختن شاخهٔ نمایه - registrations: - closed_message: - desc_html: وقتی امکان ثبت نام روی سرور فعال نباشد در صفحهٔ اصلی نمایش می‌یابد
می‌توانید HTML بنویسید - title: پیغام برای فعال‌نبودن ثبت نام - require_invite_text: - desc_html: زمانی که نام‌نویسی نیازمند تایید دستی است، متن «چرا می‌خواهید عضو شود؟» بخش درخواست دعوت را به جای اختیاری، اجباری کنید - title: نیازمند پر کردن متن درخواست دعوت توسط کاربران جدید registrations_mode: modes: approved: ثبت نام نیازمند تأیید مدیران است none: کسی نمی‌تواند ثبت نام کند open: همه می‌توانند ثبت نام کنند - title: شرایط ثبت نام - site_description: - desc_html: معرفی کوتاهی دربارهٔ رابط برنامه‌نویسی کاربردی. دربارهٔ این که چه چیزی دربارهٔ این کارساز ماستودون ویژه است یا هر چیز مهم دیگری بنویسید. می‌توانید HTML بنویسید، به‌ویژه <a> و <em>. - title: دربارهٔ این سرور - site_description_extended: - desc_html: جای خوبی برای نوشتن سیاست‌های کاربری، قانون‌ها، راهنماها، و هر چیزی که ویژهٔ این سرور است. تگ‌های HTML هم مجاز است - title: اطلاعات تکمیلی سفارشی - site_short_description: - desc_html: روی نوار کناری و همچنین به عنوان فرادادهٔ صفحه‌ها نمایش می‌یابد. در یک بند توضیح دهید که ماستودون چیست و چرا این کارساز با بقیه فرق دارد. - title: توضیح کوتاه دربارهٔ سرور - site_title: نام سرور - thumbnail: - desc_html: برای دیدن با OpenGraph و رابط برنامه‌نویسی. وضوح پیشنهادی ۱۲۰۰×۶۳۰ پیکسل - title: تصویر کوچک سرور - timeline_preview: - desc_html: نوشته‌های عمومی این سرور را در صفحهٔ آغازین نشان دهید - title: پیش‌نمایش نوشته‌ها - title: تنظیمات سایت - trends: - desc_html: برچسب‌های عمومی که پیش‌تر بازبینی شده‌اند و هم‌اینک پرطرفدارند - title: پرطرفدارها site_uploads: delete: پرونده بارگذاری شده را پاک کنید destroyed_msg: بارگذاری پایگاه با موفقیت حذف شد! diff --git a/config/locales/fi.yml b/config/locales/fi.yml index fe8d77158..22e0147e6 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -659,73 +659,15 @@ fi: empty: Palvelimen sääntöjä ei ole vielä määritelty. title: Palvelimen säännöt settings: - activity_api_enabled: - desc_html: Paikallisesti julkaistujen tilojen, aktiivisten käyttäjien ja uusien rekisteröintien määrät viikoittain - title: Julkaise koostetilastoja käyttäjien aktiivisuudesta - bootstrap_timeline_accounts: - desc_html: Erota käyttäjänimet pilkulla. Vain paikalliset ja lukitsemattomat tilit toimivat. Jos kenttä jätetään tyhjäksi, oletusarvona ovat kaikki paikalliset ylläpitäjät. - title: Uudet käyttäjät seuraavat oletuksena seuraavia tilejä - contact_information: - email: Työsähköposti - username: Yhteyshenkilön käyttäjänimi - custom_css: - desc_html: Muokkaa ulkoasua CSS:llä, joka on ladattu jokaiselle sivulle - title: Mukautettu CSS - default_noindex: - desc_html: Vaikuttaa kaikkiin käyttäjiin, jotka eivät ole muuttaneet tätä asetusta itse - title: Valitse oletuksena käyttäjät hakukoneiden indeksoinnin ulkopuolelle domain_blocks: all: Kaikille disabled: Ei kenellekkään - title: Näytä domainestot users: Kirjautuneille paikallisille käyttäjille - domain_blocks_rationale: - title: Näytä syy - mascot: - desc_html: Näytetään useilla sivuilla. Suositus vähintään 293×205px. Kun ei ole asetettu, käytetään oletuskuvaa - title: Maskottikuva - peers_api_enabled: - desc_html: Verkkotunnukset, jotka tämä instanssi on kohdannut fediversumissa - title: Julkaise löydettyjen instanssien luettelo - preview_sensitive_media: - desc_html: Linkin esikatselu muilla sivustoilla näyttää pikkukuvan vaikka media on merkitty arkaluonteiseksi - title: Näytä arkaluontoiset mediat OpenGraph esikatselussa - profile_directory: - desc_html: Salli käyttäjien olla löydettävissä - title: Ota profiilihakemisto käyttöön - registrations: - closed_message: - desc_html: Näytetään etusivulla, kun rekisteröinti on suljettu. HTML-tagit käytössä - title: Viesti, kun rekisteröinti on suljettu - require_invite_text: - desc_html: Kun rekisteröinnit edellyttävät manuaalista hyväksyntää, tee “Miksi haluat liittyä?” teksti pakolliseksi eikä valinnaiseksi - title: Vaadi uusia käyttäjiä antamaan liittymisen syy registrations_mode: modes: approved: Rekisteröinti vaatii hyväksynnän none: Kukaan ei voi rekisteröityä open: Kaikki voivat rekisteröityä - title: Rekisteröintitapa - site_description: - desc_html: Esittelykappale etusivulla ja metatunnisteissa. HTML-tagit käytössä, tärkeimmät ovat <a> ja <em>. - title: Instanssin kuvaus - site_description_extended: - desc_html: Hyvä paikka käytösohjeille, säännöille, ohjeistuksille ja muille instanssin muista erottaville asioille. HTML-tagit käytössä - title: Omavalintaiset laajat tiedot - site_short_description: - desc_html: Näytetään sivupalkissa ja kuvauksessa. Kerro yhdessä kappaleessa, mitä Mastodon on ja mikä tekee palvelimesta erityisen. - title: Lyhyt instanssin kuvaus - site_title: Instanssin nimi - thumbnail: - desc_html: Käytetään esikatseluissa OpenGraphin ja API:n kautta. Suosituskoko 1200x630 pikseliä - title: Instanssin pikkukuva - timeline_preview: - desc_html: Näytä julkinen aikajana aloitussivulla - title: Aikajanan esikatselu - title: Sivuston asetukset - trends: - desc_html: Näytä julkisesti aiemmin tarkistetut hashtagit, jotka ovat tällä hetkellä saatavilla - title: Trendaavat aihetunnisteet site_uploads: delete: Poista ladattu tiedosto destroyed_msg: Sivuston lataus onnistuneesti poistettu! diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 4b3c53db3..2c34543ad 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -659,78 +659,15 @@ fr: empty: Aucune règle de serveur n'a été définie pour l'instant. title: Règles du serveur settings: - activity_api_enabled: - desc_html: Nombre de messages publiés localement, de comptes actifs et de nouvelles inscriptions regroupés par semaine - title: Publier des statistiques agrégées sur l’activité des utilisateur·rice·s - bootstrap_timeline_accounts: - desc_html: Séparez les noms d'utilisateur·rice·s par des virgules. Ces comptes seront affichés dans les recommendations d'abonnement - title: Recommender ces comptes aux nouveaux·elles utilisateur·rice·s - contact_information: - email: Entrez une adresse courriel publique - username: Entrez un nom d’utilisateur·ice - custom_css: - desc_html: Modifier l’apparence avec une CSS chargée sur chaque page - title: CSS personnalisé - default_noindex: - desc_html: Affecte tous les utilisateurs qui n'ont pas changé eux-mêmes ce paramètre - title: Opter pour le retrait de l'indexation des moteurs de recherche par défaut domain_blocks: all: À tout le monde disabled: À personne - title: Afficher le blocage de domaines users: Aux utilisateur·rice·s connecté·e·s localement - domain_blocks_rationale: - title: Montrer la raison - mascot: - desc_html: Affiché sur plusieurs pages. Au moins 293×205px recommandé. Lorsqu’il n’est pas défini, retombe à la mascotte par défaut - title: Image de la mascotte - peers_api_enabled: - desc_html: Noms des domaines que ce serveur a découvert dans le fédiverse - title: Publier la liste des serveurs découverts dans l’API - preview_sensitive_media: - desc_html: Les aperçus de lien sur les autres sites web afficheront une vignette même si les médias sont marqués comme sensibles - title: Montrer les médias sensibles dans les prévisualisations OpenGraph - profile_directory: - desc_html: Permettre aux utilisateur·ice·s d’être découvert·e·s - title: Activer l’annuaire des profils - registrations: - closed_message: - desc_html: Affiché sur la page d’accueil lorsque les inscriptions sont fermées. Vous pouvez utiliser des balises HTML - title: Message de fermeture des inscriptions - require_invite_text: - desc_html: Lorsque les enregistrements nécessitent une approbation manuelle, rendre le texte de l’invitation "Pourquoi voulez-vous vous inscrire ?" obligatoire plutôt que facultatif - title: Exiger que les nouveaux utilisateurs remplissent un texte de demande d’invitation registrations_mode: modes: approved: Approbation requise pour s’inscrire none: Personne ne peut s’inscrire open: N’importe qui peut s’inscrire - title: Mode d’enregistrement - site_description: - desc_html: Paragraphe introductif sur l'API. Décrivez les particularités de ce serveur Mastodon et précisez toute autre chose qui vous semble importante. Vous pouvez utiliser des balises HTML, en particulier <a> et <em>. - title: Description du serveur - site_description_extended: - desc_html: L’endroit idéal pour afficher votre code de conduite, les règles, les guides et autres choses qui rendent votre serveur différent. Vous pouvez utiliser des balises HTML - title: Description étendue du serveur - site_short_description: - desc_html: Affichée dans la barre latérale et dans les méta-tags. Décrivez ce qui rend spécifique ce serveur Mastodon en un seul paragraphe. Si laissée vide, la description du serveur sera affiché par défaut. - title: Description courte du serveur - site_terms: - desc_html: Vous pouvez écrire votre propre politique de confidentialité. Vous pouvez utiliser des balises HTML - title: Politique de confidentialité personnalisée - site_title: Nom du serveur - thumbnail: - desc_html: Utilisée pour les prévisualisations via OpenGraph et l’API. 1200x630px recommandé - title: Vignette du serveur - timeline_preview: - desc_html: Afficher un lien vers le fil public sur la page d’accueil et autoriser l'accès anonyme au fil public via l'API - title: Autoriser la prévisualisation anonyme du fil global - title: Paramètres du serveur - trendable_by_default: - title: Autoriser les tendances sans révision préalable - trends: - desc_html: Afficher publiquement les hashtags approuvés qui sont populaires en ce moment - title: Hashtags populaires site_uploads: delete: Supprimer le fichier téléversé destroyed_msg: Téléversement sur le site supprimé avec succès ! diff --git a/config/locales/gd.yml b/config/locales/gd.yml index 0e50fe542..fc9a2334e 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -678,73 +678,15 @@ gd: empty: Cha deach riaghailtean an fhrithealaiche a mhìneachadh fhathast. title: Riaghailtean an fhrithealaiche settings: - activity_api_enabled: - desc_html: Cunntasan nam postaichean a chaidh fhoillseachadh gu h-ionadail, nan cleachdaichean gnìomhach ’s nan clàraidhean ùra an am bucaidean seachdaineil - title: Foillsich agragaid dhen stadastaireachd mu ghnìomhachd nan cleachdaichean san API - bootstrap_timeline_accounts: - desc_html: Sgar iomadh ainm cleachdaiche le cromag. Cuiridh sinn geall gun nochd na cunntasan seo am measg nam molaidhean leantainn - title: Mol na cunntasan seo do chleachdaichean ùra - contact_information: - email: Post-d gnìomhachais - username: Ainm cleachdaiche a’ chonaltraidh - custom_css: - desc_html: Atharraich an coltas le CSS a thèid a luchdadh le gach duilleag - title: CSS gnàthaichte - default_noindex: - desc_html: Bidh buaidh air a h-uile cleachdaiche nach do dh’atharraich an roghainn seo dhaibh fhèin - title: Thoir air falbh ro-aonta nan cleachdaichean air inneacsadh le einnseanan-luirg mar a’ bhun-roghainn domain_blocks: all: Dhan a h-uile duine disabled: Na seall idir - title: Seall bacaidhean àrainne users: Dhan luchd-chleachdaidh a clàraich a-steach gu h-ionadail - domain_blocks_rationale: - title: Seall an t-adhbhar - mascot: - desc_html: Thèid seo a shealltainn air iomadh duilleag. Mholamaid 293×205px air a char as lugha. Mura dèid seo a shuidheachadh, thèid an suaichnean a shealltainn ’na àite - title: Dealbh suaichnein - peers_api_enabled: - desc_html: Ainmean àrainne air an do thachair am frithealaiche seo sa cho-shaoghal - title: Foillsich liosta nam frithealaichean a chaidh a rùrachadh san API - preview_sensitive_media: - desc_html: Ro-sheallaidh ceanglaichean dealbhag fhiù ’s ma chaidh comharradh gu bheil am meadhan frionasach - title: Seall meadhanan frionasach ann an ro-sheallaidhean OpenGraph - profile_directory: - desc_html: Suidhich gun gabh cleachdaichean a rùrachadh - title: Cuir eòlaire nam pròifil an comas - registrations: - closed_message: - desc_html: Thèid seo a shealltainn air an duilleag-dhachaigh nuair a bhios an clàradh dùinte. ’S urrainn dhut tagaichean HTML a chleachdadh - title: Teachdaireachd a’ chlàraidh dhùinte - require_invite_text: - desc_html: Nuair a bhios aontachadh a làimh riatanach dhan chlàradh, dèan an raon teacsa “Carson a bu mhiann leat ballrachd fhaighinn?” riatanach seach roghainneil - title: Iarr air cleachdaichean ùra gun innis iad carson a tha iad ag iarraidh ballrachd registrations_mode: modes: approved: Tha aontachadh riatanach airson clàradh none: Chan fhaod neach sam bith clàradh open: "’S urrainn do neach sam bith clàradh" - title: Modh a’ chlàraidh - site_description: - desc_html: Earrann tuairisgeil air an API. Mìnich dè tha sònraichte mun fhrithealaiche Mastodon seo agus rud sa bith eile a tha cudromach. ’S urrainn dhut tagaichean HTML a chleachdadh agus <a> ’s <em> gu sònraichte. - title: Tuairisgeul an fhrithealaiche - site_description_extended: - desc_html: Seo deagh àite airson an còd-giùlain, na riaghailtean ’s na comharran-treòrachaidh agad agus do nithean eile a tha sònraichte mun fhrithealaiche agad. ‘S urrainn dhut tagaichean HTML a chleachdadh - title: Fiosrachadh leudaichte gnàthaichte - site_short_description: - desc_html: Nochdaidh seo air a’ bhàr-taoibh agus sna meata-thagaichean. Mìnich dè th’ ann am Mastodon agus dè tha sònraichte mun fhrithealaiche agad ann an aon earrann a-mhàin. - title: Tuairisgeul goirid an fhrithealaiche - site_title: Ainm an fhrithealaiche - thumbnail: - desc_html: Thèid seo a chleachdadh airson ro-sheallaidhean slighe OpenGraph no API. Mholamaid 1200x630px - title: Dealbhag an fhrithealaiche - timeline_preview: - desc_html: Seall ceangal dhan loidhne-ama phoblach air an duilleag-landaidh is ceadaich inntrigeadh gun ùghdarrachadh leis an API air an loidhne-ama phoblach - title: Ceadaich inntrigeadh gun ùghdarrachadh air an loidhne-ama phoblach - title: Roghainnean na làraich - trends: - desc_html: Seall susbaint gu poblach a chaidh lèirmheas a dhèanamh oirre roimhe ’s a tha a’ treandadh - title: Treandaichean site_uploads: delete: Sguab às am faidhle a chaidh a luchdadh suas destroyed_msg: Chaidh an luchdadh suas dhan làrach a sguabadh às! diff --git a/config/locales/gl.yml b/config/locales/gl.yml index ec4346c7f..4e6e73a32 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -667,79 +667,15 @@ gl: empty: Aínda non se definiron as regras do servidor. title: Regras do servidor settings: - activity_api_enabled: - desc_html: Conta de estados publicados de xeito local, usuarias activas, e novos rexistros en períodos semanais - title: Publicar na API estatísticas acumuladas sobre a actividade da usuaria - bootstrap_timeline_accounts: - desc_html: Separar os múltiples nomes de usuaria con vírgulas. Estas contas teñen garantido aparecer nas recomendacións de seguimento - title: Recoméndalle estas contas ás novas usuarias - contact_information: - email: Email de negocios - username: Nome de usuaria de contacto - custom_css: - desc_html: Modificar a aparencia con CSS cargado en cada páxina - title: CSS personalizado - default_noindex: - desc_html: Aféctalle a todas as usuarias que non cambiaron os axustes elas mesmas - title: Por omisión exclúe as usuarias do indexado por servidores de busca domain_blocks: all: Para todos disabled: Para ninguén - title: Amosar dominios bloqueados users: Para usuarias locais conectadas - domain_blocks_rationale: - title: Amosar motivo - mascot: - desc_html: Amosado en varias páxinas. Polo menos 293x205px recomendados. Se non está definido, estará a mascota por defecto - title: Imaxe da mascota - peers_api_enabled: - desc_html: Nomes de dominio que este servidor atopou no fediverso - title: Publicar na API listaxe de servidores descobertos - preview_sensitive_media: - desc_html: A vista previa de ligazóns de outros sitios web mostrará unha imaxe incluso si os medios están marcados como sensibles - title: Mostrar medios sensibles con vista previa OpenGraph - profile_directory: - desc_html: Permitir que as usuarias poidan ser descubertas - title: Activar o directorio de perfil - registrations: - closed_message: - desc_html: Mostrado na páxina de portada cando o rexistro está pechado. Pode utilizar cancelos HTML - title: Mensaxe de rexistro pechado - require_invite_text: - desc_html: Cando os rexistros requiren aprobación manual, facer que o texto "Por que te queres rexistrar?" do convite sexa obrigatorio en lugar de optativo - title: Require que as novas usuarias completen solicitude de texto do convite registrations_mode: modes: approved: Precisa aprobación para rexistrarse none: Rexistro pechado open: Rexistro aberto - title: Estado do rexistro - site_description: - desc_html: Parágrafo de presentación na páxina principal. Describe o que fai especial a este servidor Mastodon e calquera outra ouca importante. Pode utilizar cancelos HTML, en particular <a> e <em>. - title: Descrición do servidor - site_description_extended: - desc_html: Un bo lugar para o teu código de conduta, regras, guías e outras cousas para diferenciar o teu servidor. Podes empregar cancelos HTML - title: Información extendida da personalización - site_short_description: - desc_html: Amosado na barra lateral e nos cancelos meta. Describe o que é Mastodon e que fai especial a este servidor nun só parágrafo. Se está baleiro, amosará a descrición do servidor. - title: Descrición curta do servidor - site_terms: - desc_html: Podes escribir a túa propia Política de Privacidade e usar etiquetas HTML - title: Política de Privacidade propia - site_title: Nome do servidor - thumbnail: - desc_html: Utilizado para vistas previsas vía OpenGraph e API. Recoméndase 1200x630px - title: Icona do servidor - timeline_preview: - desc_html: Mostrar ligazón á cronoloxía pública na páxina de benvida e permitir o acceso API á cronoloxía pública sen ter autenticación - title: Permitir acceso á cronoloxía pública sen autenticación - title: Axustes do sitio - trendable_by_default: - desc_html: Poderase prohibir igualmente contido en voga específico - title: Permitir tendencias sen aprobación previa - trends: - desc_html: Amosar de xeito público cancelos revisados previamente que actualmente son tendencia - title: Cancelos en tendencia site_uploads: delete: Eliminar o ficheiro subido destroyed_msg: Eliminado correctamente o subido! diff --git a/config/locales/he.yml b/config/locales/he.yml index 95dadd06d..46fd07d30 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -687,73 +687,15 @@ he: empty: שום כללי שרת לא הוגדרו עדיין. title: כללי שרת settings: - activity_api_enabled: - desc_html: מספר החצרוצים שפורסמו מקומית, משתמשים פעילים, והרשמות חדשות בדליים שבועיים - title: פרסום סטטיסטיקות מקובצות עבור פעילות משתמשים בממשק - bootstrap_timeline_accounts: - desc_html: הפרדת משתמשים מרובים בפסיק. למשתמשים אלה מובטח שהם יכללו בהמלצות המעקב - title: המלצה על חשבונות אלה למשתמשים חדשים - contact_information: - email: נא להקליד כתובת דוא"ל פומבית - username: נא להכניס שם משתמש - custom_css: - desc_html: שינוי המראה בעזרת CSS הנטען בכל דף - title: CSS יחודי - default_noindex: - desc_html: משפיע על כל המשתמשים שלא שינו את ההגדרה בעצמם - title: לא לכלול משתמשים במנוע החיפוש כברירת מחדל domain_blocks: all: לכולם disabled: לאף אחד - title: צפיה בחסימת דומיינים users: למשתמשים מקומיים מחוברים - domain_blocks_rationale: - title: הצגת רציונל - mascot: - desc_html: מוצגת בכל מיני דפים. מומלץ לפחות 293×205px. אם לא נבחר, מוצג במקום קמע ברירת המחדל - title: תמונת קמע - peers_api_enabled: - desc_html: שמות דומיינים ששרת זה נתקל בהם ברחבי הפדרציה - title: פרסם רשימה של שרתים שנתגלו דרך הממשק - preview_sensitive_media: - desc_html: תצוגה מקדימה של קישוריות לאתרים אחרים יוצגו כתמונה מוקטנת אפילו אם המדיה מסומנת כרגישה - title: הצגת מדיה רגישה בתצוגה מקדימה של OpenGraph - profile_directory: - desc_html: הרשאה למשתמשים להתגלות - title: הרשאה לספריית פרופילים - registrations: - closed_message: - desc_html: מוצג על הדף הראשי כאשר ההרשמות סגורות. ניתן להשתמש בתגיות HTML - title: מסר סגירת הרשמות - require_invite_text: - desc_html: כאשר הרשמות דורשות אישור ידני, הפיכת טקסט ה"מדוע את/ה רוצה להצטרף" להכרחי במקום אופציונלי - title: אלץ משתמשים חדשים למלא סיבת הצטרפות registrations_mode: modes: approved: נדרש אישור הרשמה none: אף אחד לא יכול להרשם open: כל אחד יכול להרשם - title: מצב הרשמות - site_description: - desc_html: מוצג כפסקה על הדף הראשי ומשמש כתגית מטא. ניתן להשתמש בתגיות HTML, ובמיוחד ב־ < a> ו־ < em> . - title: תיאור האתר - site_description_extended: - desc_html: מקום טוב להצגת כללים, הנחיות, ודברים אחרים שמבדלים אותך ממופעים אחרים. ניתן להשתמש בתגיות HTML - title: תיאור אתר מורחב - site_short_description: - desc_html: מוצג בעמודה הצידית ובמטא תגים. מתאר מהו מסטודון ומה מיחד שרת זה בפסקה בודדת. - title: תאור שרת קצר - site_title: כותרת האתר - thumbnail: - desc_html: משמש לתצוגה מקדימה דרך OpenGraph והממשק. מומלץ 1200x630px - title: תמונה ממוזערת מהשרת - timeline_preview: - desc_html: הצגת קישורית לפיד הפומבי מדף הנחיתה והרשאה לממשק לגשת לפיד הפומבי ללא אימות - title: הרשאת גישה בלתי מאומתת לפיד הפומבי - title: הגדרות אתר - trends: - desc_html: הצגה פומבית של תוכן שנסקר בעבר ומופיע כרגע בנושאים החמים - title: נושאים חמים site_uploads: delete: מחיקת קובץ שהועלה destroyed_msg: העלאת אתר נמחקה בהצלחה! diff --git a/config/locales/hu.yml b/config/locales/hu.yml index bbd0abd04..e982f00c1 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -12,9 +12,7 @@ hu: one: Követő other: Követő following: Követett - instance_actor_flash: |- - Ez a fiók virtuális, magát a szervert reprezentálja, nem pedig konkrét - felhasználót. Föderációs célokra szolgál, nem szabad tehát felfüggeszteni. + instance_actor_flash: Ez a fiók virtuális, magát a kiszolgálót reprezentálja, nem pedig konkrét felhasználót. Föderációs célokra szolgál, nem szabad tehát felfüggeszteni. last_active: utoljára aktív link_verified_on: 'A hivatkozás tulajdonosa ekkor volt ellenőrizve: %{date}' nothing_here: Nincs itt semmi! @@ -362,7 +360,7 @@ hu: space: Tárhely használat title: Műszerfal top_languages: Legaktívabb nyelvek - top_servers: Legaktívabb szerverek + top_servers: Legaktívabb kiszolgálók website: Weboldal disputes: appeals: @@ -440,7 +438,7 @@ hu: other: Sikertelen próbálkozás %{count} különböző napon. no_failures_recorded: Nem rögzítettünk hibát. title: Elérhetőség - warning: Sikertelen volt az utolsó csatlakozási próbálkozás ehhez a szerverhez + warning: Az utolsó csatlakozási próbálkozás ehhez a kiszolgálóhoz sikertelen volt back_to_all: Mind back_to_limited: Korlátozott back_to_warning: Figyelmeztetés @@ -633,7 +631,7 @@ hu: manage_blocks: Letiltások kezelése manage_blocks_description: Lehetővé teszi, hogy a felhasználó letiltson email szolgáltatókat és IP címeket manage_custom_emojis: Egyedi emodzsik kezelése - manage_custom_emojis_description: Lehetővé teszi a felhasználó számára, hogy a kiszolgáló egyedi emodzsiait kezelje + manage_custom_emojis_description: Lehetővé teszi a felhasználó számára, hogy a kiszolgáló egyéni emodzsiait kezelje manage_federation: Föderáció kezelése manage_federation_description: Lehetővé teszi a felhasználó számára, hogy más domainnekkel való föderációt engedélyezzen vagy letiltson, illetve szabályozza a kézbesítést manage_invites: Meghívások kezelése @@ -647,7 +645,7 @@ hu: manage_settings: Beállítások kezelése manage_settings_description: Lehetővé teszi, hogy a felhasználó megváltoztassa az oldal beállításait manage_taxonomies: Taxonómiák kezelése - manage_taxonomies_description: Lehetővé teszi, hogy a felhasználó átnézze a népszerű tartalmakat és frissítse a hashtagek beállításait + manage_taxonomies_description: Lehetővé teszi, hogy a felhasználó átnézze a felkapott tartalmakat és frissítse a hashtagek beállításait manage_user_access: Felhasználói hozzáférések kezelése manage_user_access_description: Lehetővé teszi, hogy a felhasználó letiltsa mások kétlépcsős azonosítását, megváltoztassa az email címüket, és alaphelyzetbe állítsa a jelszavukat manage_users: Felhasználók kezelése @@ -664,84 +662,41 @@ hu: rules: add_new: Szabály hozzáadása delete: Törlés - description_html: Bár a többség azt állítja, hogy elolvasták és egyetértenek a felhasználói feltételekkel, általában ez nem teljesül, amíg egy probléma elő nem jön. Tedd könnyebbé a szervered szabályainak áttekintését azzal, hogy pontokba foglalod azt egy listába. Próbáld meg a különálló szabályokat megtartani rövidnek, egyszerűnek. Próbáld meg azt is, hogy nem darabolod fel őket sok különálló kis pontra. + description_html: Bár a többség azt állítja, hogy elolvasták és egyetértenek a felhasználói feltételekkel, általában ez nem teljesül, amíg egy probléma elő nem jön. Tedd könnyebbé a kiszolgálód szabályainak áttekintését azzal, hogy pontokba foglalod azt egy listában. Az egyes szabályok legyenek rövidek és egyszerűek. Próbáld meg nem túl sok önálló pontra darabolni őket. edit: Szabály szerkesztése - empty: Nincsenek még szerver szabályok definiálva. - title: Szerverszabályzat + empty: Még nincsenek meghatározva a kiszolgáló szabályai. + title: Kiszolgáló szabályai settings: - activity_api_enabled: - desc_html: Helyi bejegyzések, aktív felhasználók és új regisztrációk száma heti bontásban - title: Felhasználói aktivitás összesített statisztikájának publikussá tétele - bootstrap_timeline_accounts: - desc_html: Az egyes felhasználóneveket vesszővel válaszd el! Csak helyi és aktivált fiókok esetében működik. Üresen (alapértelmezettként) minden helyi adminisztrátorra érvényes. - title: Alapértelmezett követések új felhasználók esetében - contact_information: - email: Kapcsolattartói e-mail cím - username: Kapcsolattartó felhasználóneve - custom_css: - desc_html: Változtasd meg a kinézetet ebben a CSS-ben, mely minden oldalon be fog töltődni - title: Egyéni CSS - default_noindex: - desc_html: Olyan felhasználókat érinti, akik nem módosították ezt a beállítást - title: Alapértelmezésként ne indexeljék a keresők a felhasználóinkat + about: + manage_rules: Kiszolgáló szabályainak kezelése + preamble: Adj meg részletes információkat arról, hogy a kiszolgáló hogyan működik, miként moderálják és finanszírozzák. + title: Névjegy + appearance: + title: Megjelenés + branding: + preamble: A kiszolgáló márkajelzése különbözteti meg a hálózat többi kiszolgálójától. Ez az információ számos környezetben megjelenhet, például a Mastodon webes felületén, natív alkalmazásokban, más weboldalakon és üzenetküldő alkalmazásokban megjelenő hivatkozások előnézetben stb. Ezért a legjobb, ha ez az információ világos, rövid és tömör. + content_retention: + title: Tartalom megtartása + discovery: + follow_recommendations: Ajánlottak követése + preamble: Az érdekes tartalmak felszínre hozása fontos szerepet játszik az új felhasználók bevonásában, akik esetleg nem ismerik a Mastodont. Szabályozd, hogy a különböző felfedezési funkciók hogyan működjenek a kiszolgálón. + profile_directory: Profiladatbázis + public_timelines: Nyilvános idővonalak + title: Felfedezés + trends: Trendek domain_blocks: all: Mindenkinek disabled: Senkinek - title: Domain tiltások megjelenitése users: Bejelentkezett helyi felhasználóknak - domain_blocks_rationale: - title: Mutasd meg az indokolást - mascot: - desc_html: Több oldalon is látszik. Legalább 293×205px méret javasolt. Ha nincs beállítva, az alapértelmezett kabalát használjuk - title: Kabala kép - peers_api_enabled: - desc_html: Domainek, amelyekkel ez a szerver kapcsolatban áll - title: Szerverek listájának közzététele, melyekkel ez a szerver kapcsolatban áll - preview_sensitive_media: - desc_html: Más weboldalakon linkelt tartalmaink előnézetében mindenképp benne lesz egy bélyegkép még akkor is, ha a médiát kényesnek jelölték meg - title: Kényes média mutatása OpenGraph előnézetben - profile_directory: - desc_html: Lehetővé teszi, hogy a felhasználóinkat megtalálják - title: Profil adatbázis engedélyezése registrations: - closed_message: - desc_html: Ez az üzenet jelenik meg a főoldalon, ha a regisztráció nem engedélyezett. HTML-tageket is használhatsz - title: Üzenet, ha a regisztráció nem engedélyezett - require_invite_text: - desc_html: Ha a regisztrációhoz kézi jóváhagyásra van szükség, akkor a „Miért akarsz csatlakozni?” válasz kitöltése legyen kötelező, és ne opcionális - title: Az új felhasználóktól legyen megkövetelve a meghívási kérés szövegének kitöltése + preamble: Szabályozd, hogy ki hozhat létre fiókot a kiszolgálón. + title: Regisztrációk registrations_mode: modes: approved: A regisztráció engedélyhez kötött none: Senki sem regisztrálhat open: Bárki regisztrálhat - title: Regisztrációs mód - site_description: - desc_html: Rövid bemutatkozás a főoldalon és a meta fejlécekben. Írd le, mi teszi ezt a szervert különlegessé! Használhatod a <a> és <em> HTML tageket. - title: Kiszolgáló leírása - site_description_extended: - desc_html: Ide teheted például a közösségi és egyéb szabályzatot, útmutatókat és mindent, ami egyedivé teszi szerveredet. HTML-tageket is használhatsz - title: További egyéni információk - site_short_description: - desc_html: Oldalsávban és meta tag-ekben jelenik meg. Írd le, mi teszi ezt a szervert különlegessé egyetlen bekezdésben. - title: Rövid leírás - site_terms: - desc_html: Megírhatod a saját adatvédelmi szabályzatodat. Használhatsz HTML címkéket. - title: Egyéni adatvédelmi szabályzat - site_title: A szerver neve - thumbnail: - desc_html: Az OpenGraph-on és API-n keresztüli előnézetekhez használatos. Ajánlott mérete 1200×630 képpont. - title: A szerver bélyegképe - timeline_preview: - desc_html: Nyilvános idővonal megjelenítése a főoldalon - title: A nyilvános idővonal hitelesítés nélküli elérésének engedélyezése - title: Webhely beállításai - trendable_by_default: - desc_html: Az egyes felkapott tartalmak továbbra is explicit módon tilthatók - title: Trendek engedélyezése előzetes ellenőrzés nélkül - trends: - desc_html: Előzetesen engedélyezett és most felkapott hashtagek nyilvános megjelenítése - title: Felkapott hashtagek + title: Kiszolgálóbeállítások site_uploads: delete: Feltöltött fájl törlése destroyed_msg: Sikeresen töröltük a site feltöltését! @@ -777,7 +732,7 @@ hu: message_html: 'Nem kompatibilis Elasticsearch verzió: %{value}' version_comparison: Az Elasticsearch %{running_version} fut, de %{required_version} szükséges rules_check: - action: Szerver szabályok menedzselése + action: Kiszolgáló szabályainak kezelése message_html: Még nem definiáltál egy szerver szabályt sem. sidekiq_process_check: message_html: Nincs Sidekiq folyamat, mely a %{value} sorhoz van rendelve. Kérlek, nézd át a Sidekiq beállításait @@ -792,7 +747,7 @@ hu: links: allow: Hivatkozás engedélyezése allow_provider: Közzétevő engedélyezése - description_html: Ezek olyan hivatkozások, melyeket a szervered által látott fiókok mostanában sokat osztanak meg. Ez segíthet a felhasználóidnak rátalálni arra, hogy mi történik a világban. Egy hivatkozást sem mutatunk meg nyilvánosan, amíg a közzétevőt jóvá nem hagytad. A hivatkozásokat külön is engedélyezheted vagy visszautasíthatod. + description_html: Ezek olyan hivatkozások, melyeket a kiszolgálód által látott fiókok mostanában sokat osztanak meg. Ez segíthet a felhasználóidnak rátalálni arra, hogy mi történik a világban. Egy hivatkozást sem jelenik meg nyilvánosan, amíg a közzétevőt jóvá nem hagytad. A hivatkozásokat külön is engedélyezheted vagy elutasíthatod. disallow: Hivatkozás letiltása disallow_provider: Közzétevő letiltása no_link_selected: Nem változott meg egy hivatkozás sem, mert semmi sem volt kiválasztva @@ -807,14 +762,14 @@ hu: pending_review: Áttekintésre vár preview_card_providers: allowed: A közzétevő hivatkozásai felkapottak lehetnek - description_html: Ezek olyan domainek, melyekre vonatkozó hivatkozásokat gyakran osztanak meg a szervereden. A hivatkozások nem lesznek nyilvánosan trendik, amíg a hivatkozás domainjét jóvá nem hagytad. A jóváhagyásod (vagy visszautasításod) az aldomainekre is vonatkozik. + description_html: Ezek olyan domainek, melyekre vonatkozó hivatkozásokat gyakran osztanak meg a kiszolgálódon. A hivatkozások nem lesznek nyilvánosan felkapottak, amíg a hivatkozás domainjét jóvá nem hagytad. A jóváhagyásod (vagy elutasításod) az aldomainekre is vonatkozik. rejected: A közzétevő hivatkozásai nem lesznek felkapottak title: Közzétévők rejected: Elutasított statuses: allow: Bejegyzés engedélyezése allow_account: Szerző engedélyezése - description_html: Ezek olyan, a szervered által ismert bejegyzések, melyeket mostanság gyakran osztanak meg vagy jelölnek kedvencnek. Ez segíthet az új vagy visszatérő felhasználóidnak, hogy több követhető személyt találjanak Egyetlen bejegyzést sem mutatunk meg nyilvánosan, amíg ennek szerzőjét nem hagytad jóvá és ő nem járult hozzá, hogy őt másoknak ajánlják. Bejegyzéseket egyenként is engedélyezhetsz vagy visszautasíthatsz. + description_html: Ezek olyan, a szervered által ismert bejegyzések, melyeket mostanság gyakran osztanak meg vagy jelölnek kedvencnek. Ez segíthet az új vagy visszatérő felhasználóidnak, hogy több követhető személyt találjanak. Egyetlen bejegyzés sem jelenik meg nyilvánosan, amíg ennek szerzőjét nem hagytad jóvá és ő nem járult hozzá, hogy őt másoknak ajánlják. Bejegyzéseket egyenként is engedélyezhetsz vagy visszautasíthatsz. disallow: Bejegyzés tiltása disallow_account: Szerző tiltása no_status_selected: Nem változott meg egy felkapott bejegyzés sem, mert semmi sem volt kiválasztva @@ -831,7 +786,7 @@ hu: tag_servers_dimension: Legnépszerűbb kiszolgálók tag_servers_measure: különböző kiszolgáló tag_uses_measure: összes használat - description_html: Ezek olyan hashtag-ek, melyek mostanság nagyon sok bejegyzésben jelennek meg, melyet a szervered lát. Ez segíthet a felhasználóidnak abban, hogy megtudják, miről beszélnek legtöbbet az emberek az adott pillanatban. Egyetlen hashtag-et sem mutatunk meg nyilvánosan, amíg azt nem hagytad jóvá. + description_html: Ezek olyan hashtagek, melyek mostanság nagyon sok bejegyzésben jelennek meg, melyet a szervered lát. Ez segíthet a felhasználóidnak abban, hogy megtudják, miről beszélnek legtöbbet az emberek az adott pillanatban. Egyetlen hashtaget sem jelenik meg nyilvánosan, amíg azt nem hagytad jóvá. listable: Javasolható no_tag_selected: Nem változott meg egy címke sem, mert semmi sem volt kiválasztva not_listable: Nem lesz javasolva @@ -944,7 +899,7 @@ hu: delete_account: Felhasználói fiók törlése delete_account_html: Felhasználói fiókod törléséhez kattints ide. A rendszer újbóli megerősítést fog kérni. description: - prefix_invited_by_user: "@%{name} meghív téged, hogy csatlakozz erre a Mastodon szerverre!" + prefix_invited_by_user: "@%{name} meghív téged, hogy csatlakozz ehhez a Mastodon kiszolgálóhoz." prefix_sign_up: Regisztrláj még ma a Mastodonra! suffix: Egy fiókkal követhetsz másokat, bejegyzéseket tehetsz közzé, eszmét cserélhetsz más Mastodon szerverek felhasználóival! didnt_get_confirmation: Nem kaptad meg a megerősítési lépéseket? @@ -1089,7 +1044,7 @@ hu: '500': content: Sajnáljuk, valami hiba történt a mi oldalunkon. title: Az oldal nem megfelelő - '503': Az oldalt nem tudjuk megmutatni átmeneti szerverprobléma miatt. + '503': Az oldalt átmeneti kiszolgálóprobléma miatt nem lehet kiszolgálni. noscript_html: A Mastodon webalkalmazás használatához engedélyezned kell a JavaScriptet. A másik megoldás, hogy kipróbálsz egy platformodnak megfelelő alkalmazást. existing_username_validator: not_found: ezzel a névvel nem találtunk helyi felhasználót @@ -1190,7 +1145,7 @@ hu: merge_long: Megtartjuk a meglévő bejegyzéseket és hozzávesszük az újakat overwrite: Felülírás overwrite_long: Lecseréljük újakkal a jelenlegi bejegyzéseket - preface: Itt importálhatod egy másik szerverről lementett adataidat, például követettjeid és letiltott felhasználóid listáját. + preface: Itt importálhatod egy másik kiszolgálóról lementett adataidat, például követettjeid és letiltott felhasználóid listáját. success: Adataidat sikeresen feltöltöttük és feldolgozásukat megkezdtük types: blocking: Letiltottak listája @@ -1216,7 +1171,7 @@ hu: one: 1 használat other: "%{count} használat" max_uses_prompt: Nincs korlát - prompt: Az itt generált linkek megosztásával hívhatod meg ismerőseidet erre a szerverre + prompt: Az itt előállított hivatkozások megosztásával hívhatod meg ismerőseidet erre a kiszolgálóra table: expires_at: Lejárat uses: Használat @@ -1332,7 +1287,7 @@ hu: instructions_html: "Olvasd be ezt a QR-kódot a telefonodon futó Google Authenticator vagy egyéb TOTP alkalmazással. A jövőben ez az alkalmazás fog számodra hozzáférési kódot generálni a belépéshez." manual_instructions: 'Ha nem sikerült a QR-kód beolvasása, itt a szöveges kulcs, amelyet manuálisan kell begépelned:' setup: Beállítás - wrong_code: A beírt kód nem érvényes! A szerver órája és az eszközöd órája szinkronban jár? + wrong_code: A beírt kód nem érvényes. A kiszolgáló órája és az eszközöd órája szinkronban jár? pagination: newer: Újabb next: Következő @@ -1510,7 +1465,7 @@ hu: enabled: Régi bejegyzések automatikus törlése enabled_hint: Automatikusan törli a bejegyzéseidet, ahogy azok elérik a megadott korhatárt, kivéve azokat, melyek illeszkednek valamely alábbi kivételre exceptions: Kivételek - explanation: Mivel a bejegyzések törlése drága művelet, ezt időben elnyújtva tesszük meg, amikor a szerver éppen nem elfoglalt. Ezért lehetséges, hogy a bejegyzéseidet valamivel később töröljük, mint ahogy azok elérik a korhatárukat. + explanation: Mivel a bejegyzések törlése drága művelet, ezért ez időben elnyújtva történik, amikor a kiszolgáló épp nem elfoglalt. Ezért lehetséges, hogy a bejegyzéseid valamivel később lesznek törölve, mint ahogy azok elérik a korhatárukat. ignore_favs: Kedvencek kihagyása ignore_reblogs: Megtolások kihagyása interaction_exceptions: Interakció alapú kivételek @@ -1606,7 +1561,7 @@ hu: disable: Nem használhatod tovább a fiókodat, bár a profil- és egyéb adataid érintetlenül maradnak. Kérhetsz mentést az adataidról, megváltoztathatod a beállításaidat vagy törölheted a fiókodat. mark_statuses_as_sensitive: Néhány bejegyzésedet a %{instance} moderátorai érzékenynek jelölték. Ez azt jelenti, hogy az embereknek először rá kell nyomni a bejegyzés médiatartalmára, mielőtt egy előnézet megjelenne. A jövőben te is megjelölheted bejegyzés írása közben a médiatartalmat érzékenyként. sensitive: Mostantól minden feltöltött médiaállományodat érzékeny tartalomként jelölünk meg és kattintásos figyelmeztetés mögé rejtjük. - silence: A fiókodat most is használhatod, de ezen a kiszolgálón csak olyanok láthatják a bejegyzéseidet, akik már eddig is a követőid voltak, valamint kihagyunk különböző felfedezésre használható funkciókból. Ettől még mások továbbra is manuálisan be tudnak követni. + silence: A fiókodat most is használhatod, de ezen a kiszolgálón csak olyanok láthatják a bejegyzéseidet, akik már eddig is a követőid voltak, valamint kimaradhatsz a különböző felfedezési funkciókból. Viszont mások kézileg továbbra is be tudnak követni. suspend: Többé nem használhatod a fiókodat, a profilod és más adataid többé nem elérhetőek. Még be tudsz jelentkezni, hogy mentést kérj az adataidról addig, amíg kb. 30 nap múlva teljesen le nem töröljük őket. Néhány alapadatot megtartunk, hogy el tudjuk kerülni, hogy megkerüld a felfüggesztést. reason: 'Indok:' statuses: 'Bejegyzések idézve:' diff --git a/config/locales/hy.yml b/config/locales/hy.yml index 7ba00a847..5094ca898 100644 --- a/config/locales/hy.yml +++ b/config/locales/hy.yml @@ -375,38 +375,14 @@ hy: empty: Սերուերի կանոնները դեռեւս սահմանուած չեն։ title: Սերուերի կանոնները settings: - contact_information: - email: Գործնական էլփոստ - username: Կոնտակտի ծածկանուն - custom_css: - title: Սեփական CSS domain_blocks: all: Բոլորին disabled: Ոչ մէկին - title: Ցուցադրել տիրոյթը արգելափակումները - profile_directory: - desc_html: Թոյլատրել օգտատէրերին բացայայտուել - title: Միացնել հաշուի մատեանը - registrations: - closed_message: - desc_html: Ցուցադրուում է արտաքին էջում, երբ գրանցումները փակ են։ Կարող ես օգտագործել նաեւ HTML թէգեր - title: Փակ գրանցման հաղորդագրութիւն registrations_mode: modes: approved: Գրանցման համար անհրաժեշտ է հաստատում none: Ոչ ոք չի կարող գրանցուել open: Բոլորը կարող են գրանցուել - title: Գրանցումային ռեժիմ - site_description: - title: Կայքի նկարագրութիւն - site_short_description: - title: Կայքի հակիրճ նկարագրութիւն - site_title: Սպասարկչի անուն - thumbnail: - title: Հանգոյցի նկարը - title: Կայքի կարգաւորումներ - trends: - title: Թրենդային պիտակներ site_uploads: delete: Ջնջել վերբեռնուած ֆայլը destroyed_msg: Կայքի վերբեռնումը բարեյաջող ջնջուեց diff --git a/config/locales/id.yml b/config/locales/id.yml index 026081e84..9248eab30 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -573,73 +573,15 @@ id: empty: Belum ada aturan server yang didefinisikan. title: Aturan server settings: - activity_api_enabled: - desc_html: Hitung status yang dipos scr lokal, pengguna aktif, dan registrasi baru dlm keranjang bulanan - title: Terbitkan statistik keseluruhan tentang aktivitas pengguna - bootstrap_timeline_accounts: - desc_html: Pisahkan nama pengguna dengan koma. Hanya akun lokal dan tak terkunci yang akan bekerja. Isi bawaan jika kosong adalah semua admin lokal. - title: Ikuti scr bawaan untuk pengguna baru - contact_information: - email: Masukkan alamat email - username: Masukkan nama pengguna - custom_css: - desc_html: Ubah tampilan dengan CSS yang dimuat di setiap halaman - title: CSS Kustom - default_noindex: - desc_html: Memengaruhi semua pengguna yang tidak mengubah setelan ini sendiri - title: Singkirkan pengguna dari pengindeksan mesin pencari scr bawaan domain_blocks: all: Kepada semua orang disabled: Tidak kepada siapa pun - title: Lihat blokir domain users: Ke pengguna lokal yang sudah login - domain_blocks_rationale: - title: Tampilkan alasan - mascot: - desc_html: Ditampilkan di banyak halaman. Direkomendasikan minimal 293x205px. Jika tidak diatur, kembali ke maskot bawaan - title: Gambar maskot - peers_api_enabled: - desc_html: Nama domain server ini dijumpai di fediverse - title: Terbitkan daftar server yang ditemukan - preview_sensitive_media: - desc_html: Pratinjau tautan pada situsweb lain akan menampilkan gambar kecil meski media ditandai sebagai sensitif - title: Tampilkan media sensitif di pratinjau OpenGraph - profile_directory: - desc_html: Izinkan pengguna untuk ditemukan - title: Aktifkan direktori profil - registrations: - closed_message: - desc_html: Ditampilkan pada halaman depan saat pendaftaran ditutup
Anda bisa menggunakan tag HTML - title: Pesan penutupan pendaftaran - require_invite_text: - desc_html: Saat pendaftaran harus disetujui manual, buat input teks "Mengapa Anda ingin bergabung?" sebagai hal wajib bukan opsional - title: Pengguna baru harus memasukkan alasan bergabung registrations_mode: modes: approved: Persetujuan diperlukan untuk mendaftar none: Tidak ada yang dapat mendaftar open: Siapa pun dapat mendaftar - title: Mode registrasi - site_description: - desc_html: Ditampilkan sebagai sebuah paragraf di halaman depan dan digunakan sebagai tag meta.
Anda bisa menggunakan tag HTML, khususnya <a> dan <em>. - title: Deskripsi situs - site_description_extended: - desc_html: Ditampilkan pada halaman informasi tambahan
Anda bisa menggunakan tag HTML - title: Deskripsi situs tambahan - site_short_description: - desc_html: Ditampilkan pada bilah samping dan tag meta. Jelaskan apa itu Mastodon dan yang membuat server ini spesial dalam satu paragraf. - title: Deskripsi server pendek - site_title: Judul Situs - thumbnail: - desc_html: Dipakai sebagai pratinjau via OpenGraph dan API. Direkomendasikan 1200x630px - title: Server gambar kecil - timeline_preview: - desc_html: Tampilkan tautan ke linimasa publik pada halaman landas dan izinkan API mengakses linimasa publik tanpa autentifikasi - title: Izinkan akses linimasa publik tanpa autentifikasi - title: Pengaturan situs - trends: - desc_html: Tampilkan secara publik tagar tertinjau yang kini sedang tren - title: Tagar sedang tren site_uploads: delete: Hapus berkas yang diunggah destroyed_msg: Situs yang diunggah berhasil dihapus! diff --git a/config/locales/io.yml b/config/locales/io.yml index 4d515ce6b..5a513f4f7 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -667,79 +667,40 @@ io: empty: Nula servilreguli fixesis til nun. title: Servilreguli settings: - activity_api_enabled: - desc_html: Quanto de lokale publikigita posti, aktiva uzanti e nova registri quale semane faski - title: Publikigez rezumstatistiko pri uzantoaktiveso en API - bootstrap_timeline_accounts: - desc_html: Separez multopla uzantonomi kun komo. Ca konti garantiesos montresar en sequorekomendi - title: Rekomendez ca konti a nova uzanti - contact_information: - email: Enter a public e-mail address - username: Enter a username - custom_css: - desc_html: Modifikez aspekto kun CSS chargasas che singla pagino - title: Kustumizita CSS - default_noindex: - desc_html: Efektigar omna uzanti quo ne chanjis ca opciono per su - title: Despartoprenigez uzanti de trovmotorindexo quale originala stando + about: + manage_rules: Jerez servilreguli + preamble: Donez detaloza informi pri quale la servilo funcionar, jeresar e moyenigesar. + rules_hint: Havas partikulara areo por reguli quo uzanti expektesar sequar. + title: Pri co + appearance: + preamble: Kustumizitez retintervizajo di Mastodon. + title: Aspekto + 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 + content_retention: + preamble: Dominacez quale uzantigita kontenajo retenesar en Mastodon. + title: Kontenajreteneso + 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 + title: Deskovro + trends: Tendenci domain_blocks: all: A omnu disabled: A nulu - title: Montrez domenobstrukti users: A enirinta lokala uzanti - domain_blocks_rationale: - title: Montrez motivo - mascot: - desc_html: Montresas che multa chefpagino. Minime 293x205px rekomendesas. Se ne fixesis, ol retrouzas reprezentanto - title: Reprezenterimajo - peers_api_enabled: - desc_html: Domennomo quon ca servilo renkontris en fediverso - title: Publikigez listo di deskovrita servili en API - preview_sensitive_media: - desc_html: Ligilprevidi che altra retsiti montros imajeto mem se medii markizesas quale sentoza - title: Montrez sentoza medii e OpenGraph previdi - profile_directory: - desc_html: Permisez uzanti deskovresar - title: Aktivigez profilcheflisto registrations: - closed_message: - desc_html: Displayed on frontpage when registrations are closed
You can use HTML tags - title: Mesajo di klozita registro - require_invite_text: - desc_html: Se registri bezonas manuala aprobo, kauzigar "Por quo vu volas juntar?" textoenpoz divenar obligata - title: Bezonez nova uzanti insertar motivo por juntar + preamble: Dominacez qua povas krear konto en ca servilo. + title: Registragi registrations_mode: modes: approved: Aprobo bezonesas por registro none: Nulu povas registrar open: Irgu povas registrar - title: Registromodo - site_description: - desc_html: Displayed as a paragraph on the frontpage and used as a meta tag.
You can use HTML tags, in particular <a> and <em>. - title: Site description - site_description_extended: - desc_html: Displayed on extended information page
You can use HTML tags - title: Extended site description - site_short_description: - desc_html: Montresas en flankobaro e metatagi. Deskriptez Mastodon e por quo ca servilo esas specala per 1 paragrafo. - title: Kurta servildeskripto - site_terms: - desc_html: Vu povas adjuntar sua privatesguidilo. Vu povas uzar tagi di HTML - title: Kustumizita privatesguidilo - site_title: Site title - thumbnail: - desc_html: Uzesis por previdi tra OpenGraph e API. 1200x630px rekomendesas - title: Servilimajeto - timeline_preview: - desc_html: Montrez ligilo e publika tempolineo che atingopagino e permisez API acesar publika tempolineo sen yurizo - title: Permisez neyurizita aceso a publika tempolineo - title: Site Settings - trendable_by_default: - desc_html: Partikulara trendoza kontenajo povas ankore videbla nepermisesar - title: Permisez hashtagi divenies tendencoza sen bezonata kontrolo - trends: - desc_html: Publika montrez antee kontrolita kontenajo quo nun esas tendencoza - title: Tendenci + title: Servilopcioni site_uploads: delete: Efacez adchargita failo destroyed_msg: Sitadchargito sucesoze efacesis! diff --git a/config/locales/is.yml b/config/locales/is.yml index aa8f55804..0785b209a 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -667,79 +667,15 @@ is: empty: Engar reglur fyrir netþjón hafa ennþá verið skilgreindar. title: Reglur netþjónsins settings: - activity_api_enabled: - desc_html: Fjöldi staðvært birtra færslna, virkra notenda og nýskráninga í vikulegum skömmtum - title: Birta samantektartölfræði um virkni notanda - bootstrap_timeline_accounts: - desc_html: Aðskildu mörg notendanöfn með kommum. Einungis staðværir og ólæstir aðgangar virka. Þegar þetta er autt er sjálgefið miðað við alla staðværa stjórnendur. - title: Sjálfgefnar fylgnistillingar fyrir nýja notendur - contact_information: - email: Fyrirtækistölvupóstur - username: Notandanafn tengiliðar - custom_css: - desc_html: Breyttu útlitinu með CSS-skilgreiningum sem hlaðið er inn á hverri síðu - title: Sérsniðið CSS - default_noindex: - desc_html: Hefur áhrif á alla þá notendur sem ekki hafa breytt þessum stillingum sjálfir - title: Sjálfgefið láta notendur afþakka atriðaskráningu í leitarvélum domain_blocks: all: Til allra disabled: Til engra - title: Birta útilokanir á lénum users: Til innskráðra staðværra notenda - domain_blocks_rationale: - title: Birta röksemdafærslu - mascot: - desc_html: Birt á ýmsum síðum. Mælt með að hún sé a.m.k. 293×205 mynddílar. Þegar þetta er ekki stillt, er notuð smámynd netþjónsins - title: Mynd af lukkudýri - peers_api_enabled: - desc_html: Lénaheiti sem þessi netþjónn hefur rekist á í skýjasambandinu (samtengdum vefþjónum - fediverse) - title: Birta lista yfir uppgötvaða netþjóna - preview_sensitive_media: - desc_html: Forskoðun tengla á önnur vefsvæði mun birta smámynd jafnvel þótt myndefnið sé merkt sem viðkvæmt - title: Birta viðkvæmt myndefni í OpenGraph-forskoðun - profile_directory: - desc_html: Leyfa að hægt sé að finna notendur - title: Virkja notandasniðamöppu - registrations: - closed_message: - desc_html: Birt á forsíðu þegar lokað er fyrir nýskráningar. Þú getur notað HTML-einindi - title: Skilaboð vegna lokunar á nýskráningu - require_invite_text: - desc_html: Þegar nýskráningar krefjast handvirks samþykkis, skal gera "Hvers vegna viltu taka þátt?" boðstexta að skyldu fremur en valkvæðan - title: Krefja nýja notendur um að fylla út boðstexta registrations_mode: modes: approved: Krafist er samþykkt nýskráningar none: Enginn getur nýskráð sig open: Allir geta nýskráð sig - title: Nýskráningarhamur - site_description: - desc_html: Kynningarmálsgrein í API. Lýstu því hvað það er sem geri þennan Mastodon-þjón sérstakan, auk annarra mikilvægra upplýsinga. Þú getur notað HTML-einindi, sér í lagi <a> og <em>. - title: Lýsing á vefþjóni - site_description_extended: - desc_html: Góður staður fyrir siðareglur, almennt regluverk, leiðbeiningar og annað sem gerir netþjóninni þinn sérstakann. Þú getur notað HTML-einindi - title: Sérsniðnar ítarlegar upplýsingar - site_short_description: - desc_html: Birt á hliðarspjaldi og í lýsigögnum. Lýstu því hvað Mastodon gerir og hvað það er sem geri þennan vefþjón sérstakan, í einni málsgrein. - title: Stutt lýsing á netþjóninum - site_terms: - desc_html: Þú getur skrifað þína eigin persónuverndarstefnu. Nota má HTML-einindi - title: Sérsniðin persónuverndarstefna - site_title: Heiti vefþjóns - thumbnail: - desc_html: Notað við forskoðun í gegnum OpenGraph og API-kerfisviðmót. Mælt með 1200×630 mynddílum - title: Smámynd vefþjóns - timeline_preview: - desc_html: Birta tengil í opinbera tímalínu á upphafssíðu og leyfa aðgang API-kerfisviðmóts að opinberri tímalínu án auðkenningar - title: Leyfa óauðkenndan aðgang að opinberri tímalínu - title: Stillingar vefsvæðis - trendable_by_default: - desc_html: Sérstakt vinsælt efni er eftir sem áður hægt að banna sérstaklega - title: Leyfa vinsælt efni án undanfarandi yfirferðar - trends: - desc_html: Birta opinberlega þau áður yfirförnu myllumerki sem eru núna í umræðunni - title: Vinsælt site_uploads: delete: Eyða innsendri skrá destroyed_msg: Það tókst að eyða innsendingu á vefsvæði! diff --git a/config/locales/it.yml b/config/locales/it.yml index a1aa2ee66..8fe430c96 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -667,79 +667,40 @@ it: empty: Non sono ancora state definite regole del server. title: Regole del server settings: - activity_api_enabled: - desc_html: Conteggi degli status pubblicati localmente, degli utenti attivi e delle nuove registrazioni in gruppi settimanali - title: Pubblica statistiche aggregate circa l'attività dell'utente - bootstrap_timeline_accounts: - desc_html: Separa i nomi utente con virgola. Funziona solo con account locali e non bloccati. Quando vuoto, valido per tutti gli amministratori locali. - title: Seguiti predefiniti per i nuovi utenti - contact_information: - email: E-mail di lavoro - username: Nome utente del contatto - custom_css: - desc_html: Modifica l'aspetto con il CSS caricato in ogni pagina - title: CSS personalizzato - default_noindex: - desc_html: Influisce su tutti gli utenti che non hanno cambiato questa impostazione - title: Esclude gli utenti dall'indicizzazione dei motori di ricerca per impostazione predefinita + about: + manage_rules: Gestisci le regole del server + preamble: Fornire informazioni approfondite su come, il server, venga gestito, moderato e finanziato. + rules_hint: C'è un'area dedicata per le regole che i tuoi utenti dovrebbero rispettare. + title: Info + appearance: + preamble: Personalizza l'interfaccia web di Mastodon. + title: Aspetto + branding: + preamble: 'Il marchio del tuo server lo differenzia dagli altri server nella rete. Queste informazioni possono essere visualizzate in una varietà di ambienti, come: l''interfaccia web di Mastodon, le applicazioni native, nelle anteprime dei collegamenti su altri siti Web e all''interno delle app di messaggistica e così via. Per questo motivo, è meglio mantenere queste informazioni chiare, brevi e concise.' + title: Marchio + content_retention: + preamble: Controlla come vengono memorizzati i contenuti generati dall'utente in Mastodon. + title: Conservazione dei contenuti + discovery: + follow_recommendations: Segui le raccomandazioni + preamble: La comparsa di contenuti interessanti è determinante per l'arrivo di nuovi utenti che potrebbero non conoscere nessuno su Mastodon. Controlla in che modo varie funzionalità di scoperta funzionano sul tuo server. + profile_directory: Directory del profilo + public_timelines: Timeline pubbliche + title: Scopri + trends: Tendenze domain_blocks: all: A tutti disabled: A nessuno - title: Mostra blocchi di dominio users: Agli utenti locali connessi - domain_blocks_rationale: - title: Mostra motivazione - mascot: - desc_html: Mostrata su più pagine. Almeno 293×205px consigliati. Se non impostata, sarò usata la mascotte predefinita - title: Immagine della mascotte - peers_api_enabled: - desc_html: Nomi di dominio che questo server ha incontrato nel fediverse - title: Pubblica elenco dei server scoperti - preview_sensitive_media: - desc_html: Le anteprime dei link su altri siti mostreranno un thumbnail anche se il media è segnato come sensibile - title: Mostra media sensibili nella anteprime OpenGraph - profile_directory: - desc_html: Permetti agli utenti di essere trovati - title: Attiva directory dei profili registrations: - closed_message: - desc_html: Mostrato nella pagina iniziale quando le registrazioni sono chiuse. Puoi usare tag HTML - title: Messaggio per registrazioni chiuse - require_invite_text: - desc_html: Quando le iscrizioni richiedono l'approvazione manuale, rendere la richiesta “Perché si desidera iscriversi?” obbligatoria invece che opzionale - title: Richiedi ai nuovi utenti di rispondere alla richiesta di motivazione per l'iscrizione + preamble: Controlla chi può creare un account sul tuo server. + title: Registrazioni registrations_mode: modes: approved: Approvazione richiesta per le iscrizioni none: Nessuno può iscriversi open: Chiunque può iscriversi - title: Modalità di registrazione - site_description: - desc_html: Paragrafo introduttivo nella pagina iniziale. Descrive ciò che rende speciale questo server Mastodon e qualunque altra cosa sia importante dire. Potete usare marcatori HTML, in particolare <a> e <em>. - title: Descrizione del server - site_description_extended: - desc_html: Un posto adatto le regole di comportamento, linee guida e altre cose specifiche del vostro server. Potete usare marcatori HTML - title: Informazioni estese personalizzate - site_short_description: - desc_html: Mostrato nella barra laterale e nei tag meta. Descrive in un paragrafo che cos'è Mastodon e che cosa rende questo server speciale. Se vuoto, sarà usata la descrizione predefinita del server. - title: Breve descrizione del server - site_terms: - desc_html: Puoi scrivere la tua politica sulla privacy. Puoi usare i tag HTML - title: Politica sulla privacy personalizzata - site_title: Nome del server - thumbnail: - desc_html: Usato per anteprime tramite OpenGraph e API. 1200x630px consigliati - title: Thumbnail del server - timeline_preview: - desc_html: Mostra la timeline pubblica sulla pagina iniziale - title: Anteprima timeline - title: Impostazioni sito - trendable_by_default: - desc_html: I contenuti di tendenza specifici possono ancora essere esplicitamente vietati - title: Consenti tendenze senza controllo preliminare - trends: - desc_html: Visualizza pubblicamente gli hashtag precedentemente esaminati che sono attualmente in tendenza - title: Hashtag di tendenza + title: Impostazioni del server site_uploads: delete: Cancella il file caricato destroyed_msg: Caricamento sito eliminato! diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 2bcfcfdf1..bea0677ad 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -621,6 +621,7 @@ ja: manage_rules_description: ユーザーがサーバールールを変更できるようにします manage_settings: 設定の管理 manage_settings_description: ユーザーがサイト設定を変更できるようにします + manage_taxonomies: 分類の管理 manage_taxonomies_description: トレンドコンテンツの確認とハッシュタグの設定の更新 manage_user_access: アクセス権を管理 manage_user_access_description: 他のユーザーの2段階認証を無効にしたり、メールアドレスを変更したり、パスワードをリセットしたりすることができます。 @@ -642,75 +643,34 @@ ja: empty: サーバーのルールが定義されていません。 title: サーバーのルール settings: - activity_api_enabled: - desc_html: 週ごとのローカルに投稿された投稿数、アクティブなユーザー数、新規登録者数 - title: ユーザーアクティビティに関する統計を公開する - bootstrap_timeline_accounts: - desc_html: 複数のユーザー名を指定する場合コンマで区切ります。おすすめに表示されます。 - title: 新規ユーザーにおすすめするアカウント - contact_information: - email: ビジネスメールアドレス - username: 連絡先ユーザー名 - custom_css: - desc_html: 全ページに適用されるCSSの編集 - title: カスタムCSS - default_noindex: - desc_html: この設定を変更していない全ユーザーに影響します - title: デフォルトで検索エンジンによるインデックスを拒否する + about: + manage_rules: サーバーのルールを管理 + title: About + appearance: + preamble: ウェブインターフェースをカスタマイズします。 + title: 外観 + branding: + title: ブランディング + content_retention: + title: コンテンツの保持 + discovery: + follow_recommendations: おすすめフォロー + profile_directory: ディレクトリ + public_timelines: 公開タイムライン + trends: トレンド domain_blocks: all: 誰にでも許可 disabled: 誰にも許可しない - title: ドメインブロックを表示 users: ログイン済みローカルユーザーのみ許可 - domain_blocks_rationale: - title: コメントを表示 - mascot: - desc_html: 複数のページに表示されます。サイズは293x205px以上推奨です。未設定の場合、標準のマスコットが使用されます - title: マスコットイメージ - peers_api_enabled: - desc_html: 連合内でこのサーバーが遭遇したドメインの名前 - title: 接続しているサーバーのリストを公開する - preview_sensitive_media: - desc_html: 他のウェブサイトにリンクを貼った際、メディアが閲覧注意としてマークされていてもサムネイルが表示されます - title: OpenGraphによるプレビューで閲覧注意のメディアも表示する - profile_directory: - desc_html: ユーザーが見つかりやすくできるようになります - title: ディレクトリを有効にする registrations: - closed_message: - desc_html: 新規登録を停止しているときにフロントページに表示されます。HTMLタグが使えます - title: 新規登録停止時のメッセージ - require_invite_text: - desc_html: アカウント登録が承認制の場合、「意気込みをお聞かせください」のテキストを必須入力にする - title: 新規ユーザー登録時の理由を必須入力にする + preamble: あなたのサーバー上でアカウントを作成できるユーザーを制御します。 + title: 登録 registrations_mode: modes: approved: 登録には承認が必要 none: 誰にも許可しない open: 誰でも登録可 - title: 新規登録 - site_description: - desc_html: フロントページへの表示に使用される紹介文です。このMastodonサーバーを特徴付けることやその他重要なことを記述してください。HTMLタグ、特に<a><em>が使えます。 - title: サーバーの説明 - site_description_extended: - desc_html: あなたのサーバーにおける行動規範やルール、ガイドライン、そのほかの記述をする際に最適な場所です。HTMLタグが使えます - title: カスタム詳細説明 - site_short_description: - desc_html: サイドバーとmetaタグに表示されます。Mastodonとは何か、そしてこのサーバーの特別な何かを1段落で記述してください。空欄の場合、サーバーの説明が使用されます。 - title: 短いサーバーの説明 - site_terms: - title: カスタムプライバシーポリシー - site_title: サーバーの名前 - thumbnail: - desc_html: OpenGraphとAPIによるプレビューに使用されます。サイズは1200×630px推奨です - title: サーバーのサムネイル - timeline_preview: - desc_html: ランディングページに公開タイムラインへのリンクを表示し、認証なしでの公開タイムラインへのAPIアクセスを許可します - title: 公開タイムラインへの未認証のアクセスを許可する - title: サイト設定 - trends: - desc_html: 現在トレンドになっている承認済みのハッシュタグを公開します - title: トレンドタグを有効にする + title: サーバー設定 site_uploads: delete: ファイルを削除 destroyed_msg: ファイルを削除しました! diff --git a/config/locales/ka.yml b/config/locales/ka.yml index c3ea20326..5a2fb56a7 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -193,43 +193,6 @@ ka: unassign: გადაყენება unresolved: გადაუწყვეტელი updated_at: განახების დრო - settings: - activity_api_enabled: - desc_html: ლოკალურად გამოქვეყნებული სტატუსების, აქტიური მომხმარებლების და ყოველკვირეული რეგისტრაციების მთვლელი - title: გამოაქვეყნე აგრეგატი სტატისტიკები მომხმარებლის აქტივობაზე - bootstrap_timeline_accounts: - desc_html: გამოჰყავი მომხმარებლები მძიმით. იმუშავებს მხოლოდ ლოკალური და "ბლოკ-მოხსნილ" ანგარიშები. საწყისი როდესაც ცარიელია ყველა ლოკალური ადმინი. - title: საწყისი მიდევნებები ახლა მომხმარებლებზე - contact_information: - email: ბიზნეს ელ-ფოსტა - username: საკონტაქტო მომხმარებლის სახელი - peers_api_enabled: - desc_html: დომენების სახელები რომლებსაც შეხვდა ეს ინსტანცია ფედივერსში - title: გამოაქვეყნე აღმოჩენილი ინსტანციების სია - preview_sensitive_media: - desc_html: ბმულის პრევიუები სხვა ვებ-საიტებზე გამოაჩენენ პიქტოგრამას, მაშინაც კი თუ მედია მონიშნულია მგრძნობიარედ - title: გამოაჩინე მგრძნობიარე მედია ოუფენ-გრეფ პრევიუებში - registrations: - closed_message: - desc_html: გამოჩნდება წინა გვერდზე, როდესაც რეგისტრაციები დახურულია. შეგიძლიათ გამოიყენოთ ჰტმლ ტეგები - title: დახურული რეგისტრაციის წერილი - site_description: - desc_html: საშესავლო პარაგრაფი წინა გვერდზე. აღწერეთ თუ რა ხდის ამ მასტოდონის სერვერს განსაკუთრებულს და სხვა მნიშვნელოვანი. შეგიძლიათ გამოიყენოთ ჰტმლ ტეგები, კერძოდ <a> და <em>. - title: ინსტანციის აღწერილობა - site_description_extended: - desc_html: კარგი ადგილი მოქცევის კოდექსისთვის, წესები, სახელმძღვანელოები და სხვა რაც გამოარჩევს თქვენს ინსტანციას. შეგიძლიათ გამოიყენოთ ჰტმლ ტეგები - title: პერსონალიზირებული განვრცობილი ინფორმაცია - site_short_description: - desc_html: გამოჩნდება გვერდით ბარში და მეტა ტეგებში. აღწერეთ თუ რა არის მასტოდონი და რა ხდის ამ სერვერს უნიკალურს ერთ პარაგრაფში. თუ ცარიელია, გამოჩნდება ინსტანციის აღწერილობა. - title: აჩვენეთ ინსტანციის აღწერილობა - site_title: ინსტანციის სახელი - thumbnail: - desc_html: გამოიყენება პრევიუებისთვის ოუფენ-გრეფში და აპი-ში. 1200/630პიქს. რეკომენდირებული - title: ინსტანციის პიქტოგრამა - timeline_preview: - desc_html: აჩვენეთ საჯარო თაიმლაინი ლენდინგ გვერდზე - title: თაიმლაინ პრევიუ - title: საიტის პარამეტრები statuses: back_to_account: უკან ანგარიშის გვერდისკენ media: diff --git a/config/locales/kab.yml b/config/locales/kab.yml index 7c14000e6..a4ea1f211 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -382,23 +382,14 @@ kab: empty: Mazal ur ttwasbadun ara yilugan n uqeddac. title: Ilugan n uqeddac settings: - custom_css: - desc_html: Beddel aγan s CSS ara d-yettwasalayen deg yal asebter - title: CSS udmawan domain_blocks: all: I medden akk disabled: Γef ula yiwen users: Γef yimseqdacen idiganen i yeqqnen - profile_directory: - title: Rmed akaram n imaγnuten registrations_mode: modes: none: Yiwen·t ur yzmir ad izeddi open: Zemren akk ad jerden - site_description: - title: Aglam n uqeddac - site_title: Isem n uqeddac - title: Iγewwaṛen n usmel site_uploads: delete: Kkes afaylu yulin statuses: diff --git a/config/locales/kk.yml b/config/locales/kk.yml index cc17ed911..1ac423e99 100644 --- a/config/locales/kk.yml +++ b/config/locales/kk.yml @@ -275,70 +275,15 @@ kk: unresolved: Шешілмеген updated_at: Жаңартылды settings: - activity_api_enabled: - desc_html: Соңғы аптада жазылған жазбалар, белсенді қолданушылар, жаңа тіркелімдер - title: Пайдаланушы әрекеті туралы жиынтық статистиканы жариялау - bootstrap_timeline_accounts: - desc_html: Бірнеше пайдаланушы атын үтірмен бөліңіз. Тек жергілікті және бұғатталмаған аккаунттар. Барлық жергілікті админдер бос болғанда. - title: Жаңа қолданушыларға жазылғандар - contact_information: - email: Бизнес e-mail - username: Қолданушымен байланыс - custom_css: - desc_html: Әр беттегі өзгерістерді CSS жаңаруымен қарау - title: Жеке CSS - default_noindex: - desc_html: Бұл параметрді өзгертпеген барлық пайдаланушыларға әсер етеді - title: Әдепкі бойынша іздеу жүйелерін индекстеуден бас тарту domain_blocks: all: Бәріне disabled: Ешкімге - title: Домен блоктарын көрсету users: Жергілікті қолданушыларға - domain_blocks_rationale: - title: Дәлелді көрсету - mascot: - desc_html: Displayed on multiple pages. Кем дегенде 293×205px рекоменделеді. When not set, falls back to default mascot - title: Маскот суреті - peers_api_enabled: - desc_html: Домен names this server has encountered in the fediverse - title: Publish list of discovered серверлер - preview_sensitive_media: - desc_html: Link previews on other websites will display a thumbnail even if the media is marked as сезімтал - title: Show sensitive media in OpenGraph превью - profile_directory: - desc_html: Рұқсат users to be discoverable - title: Enable профиль directory - registrations: - closed_message: - desc_html: Displayed on frontpage when registrations are closed. You can use HTML тег - title: Closed registration мессадж registrations_mode: modes: approved: Тіркелу үшін мақұлдау қажет none: Ешкім тіркеле алмайды open: Бәрі тіркеле алады - title: Тіркелулер - site_description: - desc_html: Introductory paragraph on the басты бет. Describe what makes this Mastodon server special and anything else important. You can use HTML tags, in particular <a> and <em>. - title: Сервер туралы - site_description_extended: - desc_html: A good place for your code of conduct, rules, guidelines and other things that set your server apart. You can use HTML тег - title: Custom extended ақпарат - site_short_description: - desc_html: Displayed in sidebar and meta tags. Describe what Mastodon is and what makes this server special in a single paragraph. If empty, defaults to сервер description. - title: Short сервер description - site_title: Сервер аты - thumbnail: - desc_html: Used for previews via OpenGraph and API. 1200x630px рекоменделеді - title: Сервер суреті - timeline_preview: - desc_html: Display public timeline on лендинг пейдж - title: Таймлайн превьюі - title: Сайт баптаулары - trends: - desc_html: Бұрын қарастырылған хэштегтерді қазіргі уақытта трендте көпшілікке көрсету - title: Тренд хештегтер site_uploads: delete: Жүктелген файлды өшір destroyed_msg: Жүктелген файл сәтті өшірілді! diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 3149be458..814196db0 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -654,79 +654,17 @@ ko: empty: 아직 정의된 서버 규칙이 없습니다. title: 서버 규칙 settings: - activity_api_enabled: - desc_html: 주별 로컬에 게시 된 글, 활성 사용자 및 새로운 가입자 수 - title: 사용자 활동에 대한 통계 발행 - bootstrap_timeline_accounts: - desc_html: 콤마로 여러 사용자명을 구분. 이 계정들은 팔로우 추천에 반드시 나타나게 됩니다 - title: 새로운 사용자들에게 추천할 계정들 - contact_information: - email: 공개할 메일 주소를 입력 - username: 연락 받을 관리자 사용자명 - custom_css: - desc_html: 모든 페이지에 적용할 CSS - title: 커스텀 CSS - default_noindex: - desc_html: 이 설정을 바꾸지 않은 모든 사용자들에게 적용 됩니다 - title: 사용자들이 기본적으로 검색엔진에 인덱싱 되지 않도록 합니다 + about: + manage_rules: 서버 규칙 관리 domain_blocks: all: 모두에게 disabled: 아무에게도 안 함 - title: 도메인 차단 보여주기 users: 로그인 한 사용자에게 - domain_blocks_rationale: - title: 사유 보여주기 - mascot: - desc_html: 여러 페이지에서 보여집니다. 최소 293x205px을 추천합니다. 설정 되지 않은 경우, 기본 마스코트가 사용 됩니다 - title: 마스코트 이미지 - peers_api_enabled: - desc_html: 이 서버가 페디버스에서 만났던 도메인 네임들 - title: 발견 된 서버들의 리스트 발행 - preview_sensitive_media: - desc_html: 민감한 미디어로 설정되었더라도 다른 웹사이트에서 링크 미리보기에 썸네일을 보여줍니다 - title: 민감한 미디어를 오픈그래프 미리보기에 보여주기 - profile_directory: - desc_html: 사용자들이 발견 될 수 있도록 허용 - title: 프로필 책자 활성화 - registrations: - closed_message: - desc_html: 신규 등록을 받지 않을 때 프론트 페이지에 표시됩니다. HTML 태그를 사용할 수 있습니다 - title: 신규 등록 정지 시 메시지 - require_invite_text: - desc_html: 가입이 수동 승인을 필요로 할 때, "왜 가입하려고 하나요?" 항목을 선택사항으로 두는 것보다는 필수로 두는 것이 낫습니다 - title: 새 사용자가 초대 요청 글을 작성해야 하도록 registrations_mode: modes: approved: 가입하려면 승인이 필요함 none: 아무도 가입 할 수 없음 open: 누구나 가입 할 수 있음 - title: 가입 모드 - site_description: - desc_html: API의 소개문에 사용 됩니다.이 마스토돈 서버의 특별한 점 등을 설명하세요. HTML 태그, 주로 <a>, <em> 같은 것을 사용 가능합니다. - title: 서버 설명 - site_description_extended: - desc_html: 규칙, 가이드라인 등을 작성하기 좋은 곳입니다. HTML 태그를 사용할 수 있습니다 - title: 사이트 상세 설명 - site_short_description: - desc_html: 사이드바와 메타 태그에 나타납니다. 마스토돈이 무엇이고 이 서버의 특징은 무엇인지 한 문장으로 설명하세요. - title: 짧은 서버 설명 - site_terms: - desc_html: 자신만의 개인정보 처리방침을 작성할 수 있습니다. HTML 태그를 사용할 수 있습니다 - title: 사용자 지정 개인정보 처리방침 - site_title: 서버 이름 - thumbnail: - desc_html: OpenGraph와 API의 미리보기로 사용 됩니다. 1200x630px을 권장합니다 - title: 서버 썸네일 - timeline_preview: - desc_html: 랜딩 페이지에 공개 타임라인을 표시합니다 - title: 타임라인 프리뷰 - title: 사이트 설정 - trendable_by_default: - desc_html: 특정 트렌드를 허용시키지 않는 것은 여전히 가능합니다 - title: 사전 리뷰 없이 트렌드에 오르는 것을 허용 - trends: - desc_html: 리뷰를 거친 해시태그를 유행하는 해시태그에 공개적으로 보여줍니다 - title: 유행하는 해시태그 site_uploads: delete: 업로드한 파일 삭제 destroyed_msg: 사이트 업로드를 성공적으로 삭제했습니다! diff --git a/config/locales/ku.yml b/config/locales/ku.yml index b2914fef0..d1703d58e 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -669,79 +669,20 @@ ku: empty: Tu rêbazên rajekar hê nehatine dîyarkirin. title: Rêbazên rajekar settings: - activity_api_enabled: - desc_html: Hejmara şandiyên weşandî yên herêmî, bikarhênerên çalak, û tomarkirin ên nû heftane - title: Tevahî amarên ên di derbarê çalakiya bikarhêneran de biweşîne - bootstrap_timeline_accounts: - desc_html: Navên bikarhênerên pir bi xalîçê veqetîne. Dê van ajimêran di pêşnîyarên jêrîn de werin xuyakirin - title: Van ajimêran ji bikarhênerên nû re pêşniyar bike - contact_information: - email: E-nameya karsazî - username: Bi bikarhêner re têkeve têkiliyê - custom_css: - desc_html: Bi CSS a ku li her rûpelê hatiye barkirin, awayê dîmenê biguherîne - title: CSS a kesanekirî - default_noindex: - desc_html: Hemû bikarhênerên ku ev sazkarî bi xwe neguhertiye bandor dike - title: Pêlrêçkirna bikarhêneran ji motorê lêgerînê dûr bixe + about: + manage_rules: Rêzikên rajekaran bi rê ve bibe + title: Derbar + discovery: + trends: Rojev domain_blocks: all: Bo herkesî disabled: Bo tu kesî - title: Astengkirinên navperê nîşan bide users: Ji bo bikarhênerên herêmî yên xwe tomar kirine - domain_blocks_rationale: - title: Sedemê nîşan bike - mascot: - desc_html: Li ser rûpela pêşîn tê xuyakirin. Bi kêmanî 293×205px tê pêşniyarkirin. Dema ku neyê sazkirin, vedigere ser dîmena wêneya piçûk a maskot ya heyî - title: Wêneya maskot - peers_api_enabled: - desc_html: Navê navperên ku ev rajekar di fendiverse de rastî wan hatiye - title: Rêzoka rajekarên hatiye dîtin di API-yê de biweşîne - preview_sensitive_media: - desc_html: Pêşdîtinên girêdanê yên li ser malperên din tevlî ku medya wekî hestyar hatiye nîşandan wê wekî wêneyekî piçûk nîşan bide - title: Medyayê hestyar nîşan bide di pêşdîtinên OpenGraph de - profile_directory: - desc_html: Mafê bide bikarhêneran ku bêne vedîtin - title: Pelrêçên profilê çalak bike - registrations: - closed_message: - desc_html: Gava ku tomarkirin têne girtin li ser rûpelê pêşîn têne xuyang kirin. Tu dikarî nîşanên HTML-ê bi kar bîne - title: Tomarkirinê girtî ya peyaman - require_invite_text: - desc_html: Gava ku tomarkirin pêdiviya pejirandina destan dike, Têketina nivîsê "Tu çima dixwazî beşdar bibî?" Bibe sereke ji devla vebijêrkî be - title: Ji bo bikarhênerên nû divê ku sedemek tevlêbûnê binivîsinin registrations_mode: modes: approved: Ji bo têketinê erêkirin pêwîste none: Kesek nikare tomar bibe open: Herkes dikare tomar bibe - title: Awayê tomarkirinê - site_description: - desc_html: Paragrafa destpêkê li ser API. Dide nasîn ka çi ev rajekarê Mastodon taybet dike û tiştên din ên girîn. Tu dikarî hashtagên HTML-ê, bi kar bîne di <a> û <em> de. - title: Danasîna rajekar - site_description_extended: - desc_html: Ji bo kodê perwerdetî, rêzik, rêbername û tiştên din ên ku rajekara te ji hev cihê dike cîhekî baş e. Tu dikarî hashtagên HTML-ê bi kar bîne - title: Zanyarên berfirehkirî ya rajekar - site_short_description: - desc_html: Ew di alavdanka kêlekê û tagên meta de tên xuyakirin. Di yek paragrafê de rave bike ka Mastodon çi ye û ya ku ev rajekar taybetî dike. - title: Danasîna rajekarê kurt - site_terms: - desc_html: Tu dikarî politîkaya taybetiyê ya xwe binivîsînî. Tu dikarî tagên HTML bi kar bînî - title: Politîka taybetiyê ya kesane - site_title: Navê rajekar - thumbnail: - desc_html: Ji bo pêşdîtinên bi riya OpenGraph û API-yê têne bikaranîn. 1200x630px tê pêşniyar kirin - title: Wêneya piçûk a rajekar - timeline_preview: - desc_html: Girêdana demnameya gelemperî li ser rûpela daxistinê nîşan bide û mafê bide ku API bêyî rastandinê bigihîje damnameya gelemperî - title: Mafê bide gihîştina ne naskirî bo demnameya gelemperî - title: Sazkariyên malperê - trendable_by_default: - desc_html: Naveroka rojevê nîşankirî dikare were qedexekirin - title: Mafê bide rojevê bêyî ku were nirxandin - trends: - desc_html: Hashtagên ku berê hatibûn nirxandin ên ku niha rojev in bi gelemperî bide xuyakirin - title: Hashtagên rojevê site_uploads: delete: Pela barkirî jê bibe destroyed_msg: Barkirina malperê bi serkeftî hate jêbirin! diff --git a/config/locales/lt.yml b/config/locales/lt.yml index c160f4c97..d0d8bb4b8 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -228,52 +228,6 @@ lt: unassign: Nepriskirti unresolved: Neišspręsti updated_at: Atnaujinti - settings: - activity_api_enabled: - desc_html: Skaičiai lokaliai įkeltų statusų, aktyvių vartotojų ir naujų registracijų, kas savaitiniuose atnaujinimuose - title: Paskelbti agreguotą statistiką apie vartotojo veiklą - bootstrap_timeline_accounts: - desc_html: Atskirti vartotojų vardus naudojant kablelį (,). Tik lokalios ir neužblokuotos paskyros veiks. Pradinis kai tuščia, visi lokalūs administratoriai. - title: Numatyti sekimai naujiems vartotojams - contact_information: - email: Verslo el paštas - username: Kontaktinis slapyvardis - custom_css: - desc_html: Pakeisk išvaizdą su CSS užkraunamu kiekviename puslapyje - title: Asmeninis CSS - mascot: - desc_html: Rodoma keleta puslapių. Bent 293×205px rekomenduoja. Kai nenustatyą, renkamasi numatytą varianta - title: Talismano nuotrauka - peers_api_enabled: - desc_html: Domeno vardai, kuriuos šis serveris sutiko fedi-visatoje - title: Paskelbti sąrašą atrastų serveriu - preview_sensitive_media: - desc_html: Nuorodų peržiūros kituose tinklalapiuose bus rodomos su maža nuotrauka, net jeigu failas parinktas kaip "jautraus turinio" - title: Rodyti jautrią informaciją OpenGraph peržiūrose - profile_directory: - desc_html: Leisti vartotojams būti atrastiems - title: Įjungti profilio direktorija - registrations: - closed_message: - desc_html: Rodoma pagrindiniame puslapyje, kuomet registracijos uždarytos. Jūs galite naudoti HTML - title: Uždarytos registracijos žinutė - site_description: - desc_html: Introdukcinis paragrafas pagrindiniame puslapyje. Apibūdink, kas padaro šį Mastodon serverį išskirtiniu ir visa kita, kas svarbu. Nebijok naudoti HTML žymes, pavyzdžiui < a > bei <em>. - title: Serverio apibūdinimas - site_description_extended: - desc_html: Gera vieta Jūsų elgesio kodeksui, taisyklėms, nuorodms ir kitokiai informacijai, kuri yra išskirtinė Jūsų serveriui. Galite naudoti HTML žymes - title: Išsamesnė išskirtine informacija - site_short_description: - desc_html: Rodoma šoniniame meniu ir meta žymėse. Apibūdink kas yra Mastodon, ir kas daro šį serverį išskirtiniu, vienu paragrafu. Jeigu tuščias, naudojamas numatytasis tekstas. - title: Trumpas serverio apibūdinimas - site_title: Serverio pavadinimas - thumbnail: - desc_html: Naudojama OpenGraph peržiūroms ir API. Rekomenduojama 1200x630px - title: Serverio miniatūra - timeline_preview: - desc_html: Rodyti viešą laiko juostą apsilankymo puslapyje - title: Laiko juostos peržiūra - title: Tinklalapio nustatymai statuses: back_to_account: Atgal į paskyros puslapį media: diff --git a/config/locales/lv.yml b/config/locales/lv.yml index aca42fe58..72692cd15 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -681,79 +681,40 @@ lv: empty: Servera noteikumi vēl nav definēti. title: Servera noteikumi settings: - activity_api_enabled: - desc_html: Vietēji publicēto ziņu, aktīvo lietotāju un jauno reģistrāciju skaits nedēļas kopās - title: Publicējiet apkopotu statistiku par lietotāju darbībām API - bootstrap_timeline_accounts: - desc_html: Atdaliet vairākus lietotājvārdus ar komatu. Tiks garantēts, ka šie konti tiks parādīti ieteikumos - title: Iesaki šos kontus jaunajiem lietotājiem - contact_information: - email: Lietišķais e-pasts - username: Saziņas lietotājvārds - custom_css: - desc_html: Maini izskatu, izmantojot CSS, kas ielādēta katrā lapā - title: Pielāgota CSS - default_noindex: - desc_html: Ietekmē visus lietotājus, kuri paši nav mainījuši šo iestatījumu - title: Pēc noklusējuma lietotāji būs atteikušies no meklētājprogrammu indeksēšanas + about: + manage_rules: Pārvaldīt servera nosacījumus + preamble: Sniedz padziļinātu informāciju par to, kā serveris tiek darbināts, moderēts un finansēts. + rules_hint: Noteikumiem, kas taviem lietotājiem ir jāievēro, ir īpaša sadaļa. + title: Par + appearance: + preamble: Pielāgo Mastodon tīmekļa saskarni. + title: Izskats + branding: + preamble: Tava servera zīmols to atšķir no citiem tīkla serveriem. Šī informācija var tikt parādīta dažādās vidēs, piemēram, Mastodon tīmekļa saskarnē, vietējās lietojumprogrammās, saišu priekšskatījumos citās vietnēs un ziņojumapmaiņas lietotnēs un tā tālāk. Šī iemesla dēļ vislabāk ir saglabāt šo informāciju skaidru, īsu un kodolīgu. + title: Zīmola veidošana + content_retention: + preamble: Kontrolē, kā Mastodon tiek glabāts lietotāju ģenerēts saturs. + title: Satura saglabāšana + discovery: + follow_recommendations: Sekotšanas rekomendācijas + preamble: Interesanta satura parādīšana palīdz piesaistīt jaunus lietotājus, kuri, iespējams, nepazīst nevienu Mastodon. Kontrolē, kā tavā serverī darbojas dažādi atklāšanas līdzekļi. + profile_directory: Profila direktorija + public_timelines: Publiskās ziņu lentas + title: Atklāt + trends: Tendences domain_blocks: all: Visiem disabled: Nevienam - title: Rādīt domēnu bloķēšanas users: Vietējiem reģistrētiem lietotājiem - domain_blocks_rationale: - title: Rādīt pamatojumus - mascot: - desc_html: Parādīts vairākās lapās. Ieteicams vismaz 293 × 205 pikseļi. Ja tas nav iestatīts, tiek atgriezts noklusējuma talismans - title: Talismana attēls - peers_api_enabled: - desc_html: Domēna vārdi, ar kuriem šis serveris ir saskāries fediversā - title: Publicēt API atklāto serveru sarakstu - preview_sensitive_media: - desc_html: Saites priekšskatījumus citās vietnēs parādīs kā sīktēlu pat tad, ja medijs ir atzīmēts kā sensitīvs - title: Parādīt sensitīvos medijus OpenGraph priekšskatījumos - profile_directory: - desc_html: Atļaut lietotājiem būt atklājamiem - title: Iespējot profila direktoriju registrations: - closed_message: - desc_html: Tiek parādīts sākumlapā, kad reģistrācija ir slēgta. Tu vari izmantot HTML tagus - title: Paziņojums par slēgtu reģistrāciju - require_invite_text: - desc_html: 'Ja reģistrācijai nepieciešama manuāla apstiprināšana, izdari, lai teksta: “Kāpēc vēlaties pievienoties?” ievade ir obligāta, nevis neobligāts' - title: Pieprasīt jauniem lietotājiem ievadīt pievienošanās iemeslu + preamble: Kontrolē, kurš var izveidot kontu tavā serverī. + title: Reģistrācijas registrations_mode: modes: approved: Reģistrācijai nepieciešams apstiprinājums none: Neviens nevar reģistrēties open: Jebkurš var reģistrēties - title: Reģistrācijas režīms - site_description: - desc_html: Ievadpunkts par API. Apraksti, kas padara šo Mastodon serveri īpašu, un jebko citu svarīgu. Vari izmantot HTML tagus, jo īpaši <a> un <em>. - title: Servera apraksts - site_description_extended: - desc_html: Laba vieta tavam rīcības kodeksam, noteikumiem, vadlīnijām un citām lietām, kas atšķir tavu serveri. Tu vari izmantot HTML tagus - title: Pielāgota paplašināta informācija - site_short_description: - desc_html: Tiek parādīts sānjoslā un metatagos. Vienā rindkopā apraksti, kas ir Mastodon un ar ko šis serveris ir īpašs. - title: Īss servera apraksts - site_terms: - desc_html: Tu vari uzrakstīt pats savu privātuma politiku. Vari izmantot HTML tagus - title: Pielāgot privātuma politiku - site_title: Servera nosaukums - thumbnail: - desc_html: Izmanto priekšskatījumiem, izmantojot OpenGraph un API. Ieteicams 1200x630 pikseļi - title: Servera sīkbilde - timeline_preview: - desc_html: Galvenajā lapā parādi saiti uz publisku laika skalu un ļauj API piekļūt publiskai ziņu lentai bez autentifikācijas - title: Atļaut neautentificētu piekļuvi publiskai ziņu lentai - title: Vietnes iestatījumi - trendable_by_default: - desc_html: Konkrētais populārais saturs joprojām var būt nepārprotami aizliegts - title: Atļaut tendences bez iepriekšējas pārskatīšanas - trends: - desc_html: Publiski parādīt iepriekš pārskatītus tēmturus, kas pašlaik ir populāri - title: Populārākie tēmturi + title: Servera Iestatījumi site_uploads: delete: Dzēst augšupielādēto failu destroyed_msg: Vietnes augšupielāde ir veiksmīgi izdzēsta! diff --git a/config/locales/ms.yml b/config/locales/ms.yml index ecd641493..1fc61b462 100644 --- a/config/locales/ms.yml +++ b/config/locales/ms.yml @@ -443,27 +443,11 @@ ms: empty: Masih belum ada peraturan pelayan yang ditakrifkan. title: Peraturan pelayan settings: - peers_api_enabled: - title: Terbitkan senarai pelayan ditemukan dalam aplikasi - preview_sensitive_media: - desc_html: Pratonton laman sesawang daripada pautan akan terpapar di gambar kecil meski jika media itu ditanda sebagai sensitif - title: Papar media sensitif di pratonton OpenGraph - profile_directory: - desc_html: Benarkan pengguna untuk ditemukan - title: Benarkan direktori profil - registrations: - closed_message: - desc_html: Dipaparkan di muka depan apabil pendaftaran ditutup. Anda boleh menggunakan penanda HTML - title: Mesej pendaftaran telah ditutup - require_invite_text: - desc_html: Apabila pendaftaran memerlukan kelulusan manual, tandakan input teks "Kenapa anda mahu menyertai?" sebagai wajib, bukan pilihan - title: Memerlukan alasan bagi pengguna baru untuk menyertai registrations_mode: modes: approved: Kelulusan diperlukan untuk pendaftaran none: Tiada siapa boleh mendaftar open: Sesiapapun boleh mendaftar - title: Mod pendaftaran errors: '400': The request you submitted was invalid or malformed. '403': You don't have permission to view this page. diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 37db2a188..4caee1a47 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -607,79 +607,15 @@ nl: empty: Voor deze server zijn nog geen regels opgesteld. title: Serverregels settings: - activity_api_enabled: - desc_html: Wekelijks overzicht van de hoeveelheid lokale berichten, actieve gebruikers en nieuwe registraties - title: Statistieken over gebruikersactiviteit via de API publiceren - bootstrap_timeline_accounts: - desc_html: Meerdere gebruikersnamen met komma's scheiden. Deze accounts worden in ieder geval aan nieuwe gebruikers aanbevolen - title: Aanbevolen accounts voor nieuwe gebruikers - contact_information: - email: Vul een openbaar gebruikt e-mailadres in - username: Vul een gebruikersnaam in - custom_css: - desc_html: Het uiterlijk van deze server met CSS aanpassen - title: Aangepaste CSS - default_noindex: - desc_html: Heeft invloed op alle gebruikers die deze instelling niet zelf hebben veranderd - title: Berichten van gebruikers standaard niet door zoekmachines laten indexeren domain_blocks: all: Aan iedereen disabled: Aan niemand - title: Domeinblokkades tonen users: Aan ingelogde lokale gebruikers - domain_blocks_rationale: - title: Motivering tonen - mascot: - desc_html: Wordt op meerdere pagina's weergegeven. Tenminste 293×205px aanbevolen. Wanneer dit niet is ingesteld wordt de standaardmascotte getoond - title: Mascotte-afbeelding - peers_api_enabled: - desc_html: Domeinnamen die deze server in de fediverse is tegengekomen - title: Lijst van bekende servers via de API publiceren - preview_sensitive_media: - desc_html: Linkvoorvertoningen op andere websites hebben een thumbnail, zelfs als een afbeelding of video als gevoelig is gemarkeerd - title: Gevoelige afbeeldingen en video's in OpenGraph-voorvertoningen tonen - profile_directory: - desc_html: Gebruikers toestaan om vindbaar te zijn - title: Gebruikersgids inschakelen - registrations: - closed_message: - desc_html: Wordt op de voorpagina weergegeven wanneer registratie van nieuwe accounts is uitgeschakeld
En ook hier kan je HTML gebruiken - title: Bericht wanneer registratie is uitgeschakeld - require_invite_text: - desc_html: Maak het invullen van "Waarom wil je je hier registreren?" verplicht in plaats van optioneel, wanneer registraties handmatig moeten worden goedgekeurd - title: Nieuwe gebruikers moeten een reden invullen waarom ze zich willen registreren registrations_mode: modes: approved: Goedkeuring vereist om te kunnen registreren none: Niemand kan zich registreren open: Iedereen kan zich registreren - title: Registratiemodus - site_description: - desc_html: Introductie-alinea voor de API. Beschrijf wat er speciaal is aan deze server en andere zaken die van belang zijn. Je kunt HTML gebruiken, zoals <a> en <em>. - title: Omschrijving Mastodonserver (API) - site_description_extended: - desc_html: Een goede plek voor je gedragscode, regels, richtlijnen en andere zaken die jouw server uniek maken. Je kunt ook hier HTML gebruiken - title: Uitgebreide omschrijving Mastodonserver - site_short_description: - desc_html: Dit wordt gebruikt op de voorpagina, in de zijbalk op profielpagina's en als metatag in de paginabron. Beschrijf in één alinea wat Mastodon is en wat deze server speciaal maakt. - title: Omschrijving Mastodonserver (website) - site_terms: - desc_html: Je kunt jouw eigen privacybeleid hier kwijt. Je kunt HTML gebruiken - title: Aangepast privacybeleid - site_title: Naam Mastodonserver - thumbnail: - desc_html: Gebruikt als voorvertoning voor OpenGraph en de API. 1200x630px aanbevolen - title: Thumbnail Mastodonserver - timeline_preview: - desc_html: Toon een link naar de openbare tijdlijnpagina op de voorpagina en geef de API zonder in te loggen toegang tot de openbare tijdlijn - title: Toegang tot de openbare tijdlijn zonder in te loggen toestaan - title: Server-instellingen - trendable_by_default: - desc_html: Specifieke trends kunnen nog steeds expliciet worden afgekeurd - title: Trends toestaan zonder voorafgaande beoordeling - trends: - desc_html: Eerder beoordeelde hashtags die op dit moment trending zijn openbaar tonen - title: Trends site_uploads: delete: Geüpload bestand verwijderen destroyed_msg: Verwijderen website-upload geslaagd! diff --git a/config/locales/nn.yml b/config/locales/nn.yml index c0a40c41c..b989db081 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -423,72 +423,15 @@ nn: empty: Ingen serverregler har blitt definert ennå. title: Server regler settings: - activity_api_enabled: - desc_html: Antall lokale statusposter, aktive brukere og nye registreringer i ukentlige oppdelinger - title: Publiser samlet statistikk om brukeraktiviteter - bootstrap_timeline_accounts: - desc_html: Separer flere brukernavn med komma. Kun lokale og ulåste kontoer vil kunne brukes. Dersom tomt er standarden alle lokale administratorer. - title: Standard fylgjer for nye brukarar - contact_information: - email: Offentleg e-postadresse - username: Brukarnamn for kontakt - custom_css: - desc_html: Modifiser utseendet med CSS lastet på hver side - title: Eigen CSS - default_noindex: - desc_html: Påverkar alle brukarar som ikkje har justert denne innstillinga sjølve - title: Velg brukere som er ute av søkemotoren indeksering som standard domain_blocks: all: Til alle disabled: Til ingen - title: Vis domeneblokkeringer users: Til lokale brukarar som er logga inn - domain_blocks_rationale: - title: Vis kvifor - mascot: - desc_html: Vist på flere sider. Minst 293×205px er anbefalt. Dersom det ikke er valgt, faller det tilbake til standardmaskoten - title: Maskotbilete - peers_api_enabled: - desc_html: Domenenavn denne instansen har truffet på i fediverset - title: Publiser liste over oppdaga tenarar - preview_sensitive_media: - desc_html: Lenkeforhåndsvisninger på andre nettsteder vil vise et miniatyrbilde selv dersom mediet er merket som sensitivt - title: Vis sensitive medier i OpenGraph-forhåndsvisninger - profile_directory: - desc_html: Gjer at brukarar kan oppdagast - title: Skru på profilmappen - registrations: - closed_message: - desc_html: Vises på forsiden når registreringer er lukket
Du kan bruke HTML-tagger - title: Melding for lukket registrering - require_invite_text: - desc_html: Når registreringer krever manuell godkjenning, må du føye «Hvorfor vil du bli med?» tekstinput obligatoriske i stedet for valgfritt - title: Krev nye brukere for å oppgi en grunn for å delta registrations_mode: modes: approved: Godkjenning kreves for påmelding none: Ingen kan melda seg inn open: Kven som helst kan melda seg inn - title: Registreringsmodus - site_description: - desc_html: Vises som et avsnitt på forsiden og brukes som en meta-tagg. Du kan bruke HTML-tagger, spesielt <a> og <em>. - title: Tenarskilding - site_description_extended: - desc_html: Ein god stad å setja reglar for åtferdskode, reglar, rettningsliner og andre ting som skil din tenar frå andre. Du kan nytta HTML-taggar - title: Utvidet nettstedsinformasjon - site_short_description: - desc_html: Vist i sidelinjen og i metastempler. Beskriv hva Mastodon er og hva som gjør denne tjeneren spesiell i én enkelt paragraf. - title: Stutt om tenaren - site_title: Tenarnamn - thumbnail: - desc_html: Brukes ved forhandsvisning via OpenGraph og API. 1200x630px anbefales - title: Småbilete for tenaren - timeline_preview: - desc_html: Vis offentlig tidslinje på landingssiden - title: Tillat uautentisert tilgang til offentleg tidsline - title: Sideinnstillingar - trends: - title: Populære emneknaggar site_uploads: delete: Slett opplasta fil destroyed_msg: Vellukka sletting av sideopplasting! diff --git a/config/locales/no.yml b/config/locales/no.yml index 550868ba3..09dcc93c7 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -415,72 +415,15 @@ empty: Ingen serverregler har blitt definert ennå. title: Server regler settings: - activity_api_enabled: - desc_html: Antall lokale statusposter, aktive brukere og nye registreringer i ukentlige oppdelinger - title: Publiser samlet statistikk om brukeraktiviteter - bootstrap_timeline_accounts: - desc_html: Separer flere brukernavn med komma. Kun lokale og ulåste kontoer vil kunne brukes. Dersom tomt er standarden alle lokale administratorer. - title: Standard følgere for nye brukere - contact_information: - email: Skriv en offentlig e-postadresse - username: Skriv brukernavn - custom_css: - desc_html: Modifiser utseendet med CSS lastet på hver side - title: Egendefinert CSS - default_noindex: - desc_html: Påvirker alle brukerne som ikke har justert denne innstillingen selv - title: Velg brukere som er ute av søkemotoren indeksering som standard domain_blocks: all: Til alle disabled: Til ingen - title: Vis domeneblokkeringer users: Til lokale brukere som er logget inn - domain_blocks_rationale: - title: Vis grunnlaget - mascot: - desc_html: Vist på flere sider. Minst 293×205px er anbefalt. Dersom det ikke er valgt, faller det tilbake til standardmaskoten - title: Maskotbilde - peers_api_enabled: - desc_html: Domenenavn denne instansen har truffet på i fediverset - title: Publiser liste over oppdagede instanser - preview_sensitive_media: - desc_html: Lenkeforhåndsvisninger på andre nettsteder vil vise et miniatyrbilde selv dersom mediet er merket som sensitivt - title: Vis sensitive medier i OpenGraph-forhåndsvisninger - profile_directory: - desc_html: Tillat brukere å bli oppdagelige - title: Skru på profilmappen - registrations: - closed_message: - desc_html: Vises på forsiden når registreringer er lukket
Du kan bruke HTML-tagger - title: Melding for lukket registrering - require_invite_text: - desc_html: Når registreringer krever manuell godkjenning, må du føye «Hvorfor vil du bli med?» tekstinput obligatoriske i stedet for valgfritt - title: Krev nye brukere for å oppgi en grunn for å delta registrations_mode: modes: approved: Godkjenning kreves for påmelding none: Ingen kan melde seg inn open: Hvem som helst kan melde seg inn - title: Registreringsmodus - site_description: - desc_html: Vises som et avsnitt på forsiden og brukes som en meta-tagg. Du kan bruke HTML-tagger, spesielt <a> og <em>. - title: Nettstedsbeskrivelse - site_description_extended: - desc_html: Vises på side for utvidet informasjon.
Du kan bruke HTML-tagger - title: Utvidet nettstedsinformasjon - site_short_description: - desc_html: Vist i sidelinjen og i metastempler. Beskriv hva Mastodon er og hva som gjør denne tjeneren spesiell i én enkelt paragraf. - title: Kort tjenerbeskrivelse - site_title: Nettstedstittel - thumbnail: - desc_html: Brukes ved forhandsvisning via OpenGraph og API. 1200x630px anbefales - title: Miniatyrbilde for instans - timeline_preview: - desc_html: Vis offentlig tidslinje på landingssiden - title: Forhandsvis tidslinjen - title: Nettstedsinnstillinger - trends: - title: Trendende emneknagger site_uploads: delete: Slett den opplastede filen destroyed_msg: Vellykket sletting av sideopplasting! diff --git a/config/locales/oc.yml b/config/locales/oc.yml index 1d2fdbe4e..2c625f46b 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -367,68 +367,15 @@ oc: rules: title: Règlas del servidor settings: - activity_api_enabled: - desc_html: Nombre d’estatuts publicats, d’utilizaires actius e de novèlas inscripcions en rapòrt setmanièr - title: Publicar las estatisticas totalas de l’activitat dels utilizaires - bootstrap_timeline_accounts: - desc_html: Separatz los noms d’utilizaire amb de virgula. Pas que los comptes locals e pas clavats foncionaràn. Se lo camp es void los admins seràn selecionats. - title: Per defaut los nòuvenguts sègon - contact_information: - email: Picatz una adreça de corrièl - username: Picatz un nom d’utilizaire - custom_css: - desc_html: Modificar l’estil amb una fuèlha CSS cargada sus cada pagina - title: CSS personalizada - default_noindex: - desc_html: Tòca totes los utilizaires qu’an pas cambiat lo paramètre domain_blocks: all: A tot lo monde disabled: A degun - title: Mostrar los blocatges de domeni users: Als utilizaires locals connectats - domain_blocks_rationale: - title: Mostrar lo rasonament - mascot: - desc_html: Mostrat sus mantun pagina. Almens 293×205px recomandat. S’es pas configurat, mostrarem la mascòta per defaut - title: Imatge de la mascòta - peers_api_enabled: - desc_html: Noms de domeni qu’aqueste servidor a trobats pel fediverse - title: Publicar la lista dels servidors coneguts - preview_sensitive_media: - desc_html: Los apercebuts dels ligams sus los autres sites mostraràn una vinheta encara que lo mèdia siá marcat coma sensible - title: Mostrar los mèdias sensibles dins los apercebuts OpenGraph - profile_directory: - desc_html: Permet als utilizaires d’èsser trobats - title: Activar l’annuari de perfils - registrations: - closed_message: - desc_html: Mostrat sus las pagina d’acuèlh quand las inscripcions son tampadas.
Podètz utilizar de balisas HTML - title: Messatge de barradura de las inscripcions registrations_mode: modes: approved: Validacion necessària per s’inscriure none: Degun pòt pas se marcar open: Tot lo monde se pòt marcar - title: Mòdes d’inscripcion - site_description: - desc_html: Paragraf d’introduccion sus la pagina d’acuèlh. Explicatz çò que fa diferent aqueste servidor Mastodon e tot çò qu’es important de dire. Podètz utilizare de balises HTML, en particular <a> e<em>. - title: Descripcion del servidor - site_description_extended: - desc_html: Un bon lòc per las règles de compòrtament e d’autras causas que fan venir vòstre servidor diferent. Podètz utilizar de balisas HTML - title: Descripcion espandida del site - site_short_description: - desc_html: Mostrat dins la barra laterala e dins las meta balisas. Explica çò qu’es Mastodon e perque aqueste servidor es especial en un solet paragraf. S’es void, serà garnit amb la descripcion del servidor. - title: Descripcion corta del servidor - site_title: Títol del servidor - thumbnail: - desc_html: Servís pels apercebuts via OpenGraph e las API. Talha de 1200x630px recomandada - title: Miniatura del servidor - timeline_preview: - desc_html: Mostrar lo flux public sus la pagina d’acuèlh - title: Apercebut flux public - title: Paramètres del site - trends: - title: Etiquetas tendéncia site_uploads: delete: Suprimir lo fichièr enviat statuses: diff --git a/config/locales/pl.yml b/config/locales/pl.yml index c7c19b0ae..27d3240c8 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -695,79 +695,40 @@ pl: empty: Jeszcze nie zdefiniowano zasad serwera. title: Regulamin serwera settings: - activity_api_enabled: - desc_html: Liczy publikowane lokalnie wpisy, aktywnych użytkowników i nowe rejestracje w ciągu danego tygodnia - title: Publikuj zbiorowe statystyki o aktywności użytkowników - bootstrap_timeline_accounts: - desc_html: Oddzielaj nazwy użytkowników przecinkami. Działa tylko dla niezablokowanych kont w obrębie instancji. Jeżeli puste, zostaną użyte konta administratorów instancji. - title: Domyślnie obserwowani użytkownicy - contact_information: - email: Służbowy adres e-mail - username: Nazwa użytkownika do kontaktu - custom_css: - desc_html: Modyfikuj wygląd pliku CSS ładowanego na każdej stronie - title: Niestandardowy CSS - default_noindex: - desc_html: Wpływa na wszystkich użytkowników, którzy nie zmienili tego ustawienia - title: Domyślnie żądaj nieindeksowania użytkowników w wyszukiwarkach + about: + manage_rules: Zarządzaj regułami serwera + preamble: Podaj szczegółowe informacje na temat sposobu działania, moderacji i finansowania serwera. + rules_hint: Istnieje dedykowany obszar dla reguł, których twoi użytkownicy mają przestrzegać. + title: O... + appearance: + preamble: Dostosuj interfejs www Mastodon. + title: Wygląd + branding: + preamble: Marka Twojego serwera odróżnia go od innych serwerów w sieci. Informacje te mogą być wyświetlane w różnych środowiskach, takich jak interfejs internetowy Mastodon, aplikacje natywne, w podglądzie linków na innych stronach internetowych i w aplikacjach do wysyłania wiadomości itd. Z tego względu najlepiej zachować jasną, krótką i zwięzłą informację. + title: Marka + content_retention: + preamble: Kontroluj, jak treści generowane przez użytkownika są przechowywane w Mastodon. + title: Retencja treści + discovery: + follow_recommendations: Postępuj zgodnie z zaleceniami + preamble: Prezentowanie interesujących treści ma kluczowe znaczenie dla nowych użytkowników, którzy mogą nie znać nikogo z Mastodona. Kontroluj, jak różne funkcje odkrywania działają na Twoim serwerze. + profile_directory: Katalog profilów + public_timelines: Publiczne osie czasu + title: Odkrywanie + trends: Trendy domain_blocks: all: Każdemu disabled: Nikomu - title: Pokazuj zablokowane domeny users: Zalogowanym lokalnym użytkownikom - domain_blocks_rationale: - title: Pokaż uzasadnienia - mascot: - desc_html: Wyświetlany na wielu stronach. Zalecany jest rozmiar przynajmniej 293px × 205px. Jeżeli nie ustawiono, zostanie użyta domyślna - title: Obraz maskotki - peers_api_enabled: - desc_html: Nazwy domen, z którymi ten serwer wchodził w interakcje - title: Publikuj listę znanych serwerów - preview_sensitive_media: - desc_html: Podgląd odnośników na innych instancjach będzie wyświetlał miniaturę nawet jeśli zawartość multimedialna zostanie oznaczona jako wrażliwa - title: Wyświetlaj zawartość wrażliwą w podglądzie OpenGraph - profile_directory: - desc_html: Pozwalaj na poznawanie użytkowników - title: Włącz katalog profilów registrations: - closed_message: - desc_html: Wyświetlana na stronie głównej, gdy możliwość otwarej rejestracji nie jest dostępna. Możesz korzystać z tagów HTML - title: Wiadomość o nieaktywnej rejestracji - require_invite_text: - desc_html: Kiedy rejestracje wymagają ręcznego zatwierdzenia, ustaw pole "Dlaczego chcesz dołączyć?" jako obowiązkowe, a nie opcjonalne - title: Wymagaj od nowych użytkowników wypełnienia tekstu prośby o zaproszenie + preamble: Kontroluj, kto może utworzyć konto na Twoim serwerze. + title: Rejestracje registrations_mode: modes: approved: Przyjęcie jest wymagane do rejestracji none: Nikt nie może się zarejestrować open: Każdy może się zarejestrować - title: Tryb rejestracji - site_description: - desc_html: Akapit wprowadzający, widoczny na stronie głównej. Opisz, co czyni tę instancję wyjątkową. Możesz korzystać ze znaczników HTML, w szczególności <a> i <em>. - title: Opis serwera - site_description_extended: - desc_html: Dobre miejsce na zasady użytkowania, wprowadzenie i inne rzeczy, które wyróżniają ten serwer. Możesz korzystać ze znaczników HTML - title: Niestandardowy opis strony - site_short_description: - desc_html: Wyświetlany na pasku bocznym i w znacznikach meta. Opisz w jednym akapicie, czym jest Mastodon i czym wyróżnia się ten serwer. Jeżeli pusty, zostanie użyty opis serwera. - title: Krótki opis serwera - site_terms: - desc_html: Możesz stworzyć własną politykę prywatności. Możesz używać tagów HTML - title: Własna polityka prywatności - site_title: Nazwa serwera - thumbnail: - desc_html: 'Używana w podglądzie przez OpenGraph i API. Zalecany rozmiar: 1200x630 pikseli' - title: Miniatura serwera - timeline_preview: - desc_html: Wyświetlaj publiczną oś czasu na stronie widocznej dla niezalogowanych - title: Podgląd osi czasu - title: Ustawienia strony - trendable_by_default: - desc_html: Pewne treści trendu nadal mogą być bezpośrednio zabronione - title: Zezwalaj na trendy bez ich uprzedniego przejrzenia - trends: - desc_html: Wyświetlaj publicznie wcześniej sprawdzone hashtagi, które są obecnie na czasie - title: Popularne hashtagi + title: Ustawienia serwera site_uploads: delete: Usuń przesłany plik destroyed_msg: Pomyślnie usunięto przesłany plik! diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 00d7ce9a5..8ac53680d 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -640,73 +640,15 @@ pt-BR: empty: Nenhuma regra do servidor foi definida. title: Regras do servidor settings: - activity_api_enabled: - desc_html: Contagem de toots locais, usuários ativos e novos usuários semanalmente - title: Publicar estatísticas agregadas sobre atividade de usuários - bootstrap_timeline_accounts: - desc_html: Separe nomes de usuário através de vírgulas. Funciona apenas com contas locais e destrancadas. O padrão quando vazio são todos os administradores locais. - title: Usuários a serem seguidos por padrão por novas contas - contact_information: - email: E-mail - username: Usuário de contato - custom_css: - desc_html: Alterar o visual com CSS carregado em todas as páginas - title: CSS personalizado - default_noindex: - desc_html: Afeta qualquer usuário que não tenha alterado esta configuração manualmente - title: Optar por excluir usuários da indexação de mecanismos de pesquisa por padrão domain_blocks: all: Para todos disabled: Para ninguém - title: Mostrar domínios bloqueados users: Para usuários locais logados - domain_blocks_rationale: - title: Mostrar motivo - mascot: - desc_html: Mostrado em diversas páginas. Recomendado ao menos 293×205px. Quando não está definido, o mascote padrão é mostrado - title: Imagem do mascote - peers_api_enabled: - desc_html: Nomes de domínio que essa instância encontrou no fediverso - title: Publicar lista de instâncias descobertas - preview_sensitive_media: - desc_html: A prévia do link em outros sites vai incluir uma miniatura mesmo se a mídia estiver marcada como sensível - title: Mostrar mídia sensível em prévias OpenGraph - profile_directory: - desc_html: Permitir que usuários possam ser descobertos - title: Ativar diretório de perfis - registrations: - closed_message: - desc_html: Mostrado na página inicial quando a instância está fechada. Você pode usar tags HTML - title: Mensagem de instância fechada - require_invite_text: - desc_html: Quando o cadastro de novas contas exigir aprovação manual, tornar obrigatório, ao invés de opcional, o texto de solicitação de convite em "Por que você deseja criar uma conta aqui?" - title: Exigir que novos usuários preencham um texto de solicitação de convite registrations_mode: modes: approved: Aprovação necessária para criar conta none: Ninguém pode criar conta open: Qualquer um pode criar conta - title: Modo de novos usuários - site_description: - desc_html: Parágrafo introdutório na página inicial. Descreva o que faz esse servidor especial, e qualquer outra coisa de importante. Você pode usar tags HTML, em especial <a> e <em>. - title: Descrição da instância - site_description_extended: - desc_html: Um ótimo lugar para seu código de conduta, regras, diretrizes e outras coisas para diferenciar a sua instância. Você pode usar tags HTML - title: Informação estendida personalizada - site_short_description: - desc_html: Mostrada na barra lateral e em etiquetas de metadados. Descreve o que é o Mastodon e o que torna esta instância especial num único parágrafo. Se deixada em branco, é substituído pela descrição da instância. - title: Descrição curta da instância - site_title: Nome da instância - thumbnail: - desc_html: Usada para prévias via OpenGraph e API. Recomenda-se 1200x630px - title: Miniatura da instância - timeline_preview: - desc_html: Mostra a linha do tempo pública na página inicial e permite acesso da API à mesma sem autenticação - title: Permitir acesso não autenticado à linha pública - title: Configurações do site - trends: - desc_html: Mostrar publicamente hashtags previamente revisadas que estão em alta - title: Hashtags em alta site_uploads: delete: Excluir arquivo enviado destroyed_msg: Upload do site excluído com sucesso! diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 4e0d2f9cc..6e2ac523b 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -667,79 +667,35 @@ pt-PT: empty: Nenhuma regra de instância foi ainda definida. title: Regras da instância settings: - activity_api_enabled: - desc_html: Contagem semanais de publicações locais, utilizadores activos e novos registos - title: Publicar estatísticas agregadas sobre atividade dos utilizadores - bootstrap_timeline_accounts: - desc_html: Separa os nomes de utilizadores por vírgulas. Funciona apenas com contas locais e desbloqueadas. O padrão quando vazio são todos os administradores locais. - title: Seguidores predefinidos para novas contas - contact_information: - email: Inserir um endereço de e-mail para tornar público - username: Insira um nome de utilizador - custom_css: - desc_html: Modificar a aparência com CSS carregado em cada página - title: CSS personalizado - default_noindex: - desc_html: Afeta todos os utilizadores que não alteraram esta configuração - title: Desativar, por omissão, a indexação de utilizadores por parte dos motores de pesquisa + about: + manage_rules: Gerir regras do servidor + preamble: Forneça informações aprofundadas sobre como o servidor é operado, moderado, financiado. + rules_hint: Existe uma área dedicada às regras a que os seus utilizadores devem aderir. + title: Sobre + appearance: + preamble: Personalize a interface web do Mastodon. + title: Aspeto + content_retention: + title: Retenção de conteúdo + discovery: + follow_recommendations: Recomendações para seguir + profile_directory: Diretório de perfis + public_timelines: Cronologias públicas + title: Descobrir + trends: Tendências domain_blocks: all: Para toda a gente disabled: Para ninguém - title: Mostrar domínios bloqueados users: Para utilizadores locais que se encontrem autenticados - domain_blocks_rationale: - title: Mostrar motivo - mascot: - desc_html: Apresentada em múltiplas páginas. Pelo menos 293x205px recomendados. Quando não é definida, é apresentada a mascote predefinida - title: Imagem da mascote - peers_api_enabled: - desc_html: Nomes de domínio que esta instância encontrou no fediverso - title: Publicar lista de instâncias descobertas - preview_sensitive_media: - desc_html: A pre-visualização de links noutros sites irá apresentar uma miniatura, mesmo que a media seja marcada como sensível - title: Mostrar media sensível em pre-visualizações OpenGraph - profile_directory: - desc_html: Permite aos utilizadores serem descobertos - title: Ativar directório do perfil registrations: - closed_message: - desc_html: Mostrar na página inicial quando registos estão encerrados
Podes usar tags HTML - title: Mensagem de registos encerrados - require_invite_text: - desc_html: Quando os registos exigirem aprovação manual, faça o texto "Porque se quer juntar a nós?" da solicitação de convite obrigatório, em vez de opcional - title: Exigir que novos utilizadores preencham um texto de solicitação de convite + preamble: Controle quem pode criar uma conta no seu servidor. + title: Inscrições registrations_mode: modes: approved: Registo sujeito a aprovação none: Ninguém se pode registar open: Qualquer pessoa se pode registar - title: Modo de registo - site_description: - desc_html: Mostrar como parágrafo na página inicial e usado como meta tag.Podes usar tags HTML, em particular <a> e <em>. - title: Descrição do site - site_description_extended: - desc_html: Mostrar na página de mais informações
Podes usar tags HTML - title: Página de mais informações - site_short_description: - desc_html: Mostrada na barra lateral e em etiquetas de metadados. Descreve o que o Mastodon é e o que torna esta instância especial num único parágrafo. Se deixada em branco, remete para a descrição da instância. - title: Breve descrição da instância - site_terms: - desc_html: Pode escrever a sua própria política de privacidade. Pode utilizar código HTML - title: Política de privacidade personalizada - site_title: Título do site - thumbnail: - desc_html: Usada para visualizações via OpenGraph e API. Recomenda-se 1200x630px - title: Miniatura da instância - timeline_preview: - desc_html: Exibir a linha temporal pública na página inicial - title: Visualização da linha temporal - title: Configurações do site - trendable_by_default: - desc_html: Conteúdo específico em tendência pode mesmo assim ser explicitamente rejeitado - title: Permitir tendências sem revisão prévia - trends: - desc_html: Exibir publicamente hashtags atualmente em destaque que já tenham sido revistas anteriormente - title: Hashtags em destaque + title: Definições do Servidor site_uploads: delete: Eliminar arquivo carregado destroyed_msg: Upload do site eliminado com sucesso! diff --git a/config/locales/ru.yml b/config/locales/ru.yml index fc84808f9..bf7bb9db4 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -648,76 +648,15 @@ ru: empty: Правила сервера еще не определены. title: Правила сервера settings: - activity_api_enabled: - desc_html: Подсчёт количества локальных постов, активных пользователей и новых регистраций на еженедельной основе - title: Публикация агрегированной статистики активности пользователей - bootstrap_timeline_accounts: - desc_html: Разделяйте имена пользователей запятыми. Сработает только для локальных незакрытых учётных записей. По умолчанию включены все локальные администраторы. - title: Подписки по умолчанию для новых пользователей - contact_information: - email: Введите публичный e-mail - username: Введите имя пользователя - custom_css: - desc_html: Измените внешний вид с CSS, загружаемым на каждой странице - title: Особый CSS - default_noindex: - desc_html: Влияет на всех пользователей, которые не изменили эти настройки сами - title: Исключить пользователей из индексации поисковиками по умолчанию domain_blocks: all: Всем disabled: Никому - title: Доменные блокировки users: Залогиненным локальным пользователям - domain_blocks_rationale: - title: Показать обоснование - mascot: - desc_html: Отображается на различных страницах. Рекомендуется размер не менее 293×205px. Если ничего не выбрано, используется персонаж по умолчанию - title: Персонаж сервера - peers_api_enabled: - desc_html: Домены, которые были замечены этим узлом среди всей федерации - title: Публикация списка обнаруженных узлов - preview_sensitive_media: - desc_html: Предпросмотр для ссылок будет показывать миниатюры даже для содержимого, помеченного как «деликатного характера» - title: Показывать медиафайлы «деликатного характера» в превью OpenGraph - profile_directory: - desc_html: Позволять находить пользователей - title: Включить каталог профилей - registrations: - closed_message: - desc_html: Отображается на титульной странице, когда закрыта регистрация
Можно использовать HTML-теги - title: Сообщение о закрытой регистрации - require_invite_text: - desc_html: Когда регистрация требует ручного подтверждения, сделать ответ на вопрос "Почему вы хотите присоединиться?" обязательным, а не опциональным - title: Обязать новых пользователей заполнять текст запроса на приглашение registrations_mode: modes: approved: Для регистрации требуется подтверждение none: Никто не может регистрироваться open: Все могут регистрироваться - title: Режим регистраций - site_description: - desc_html: Отображается в качестве параграфа на титульной странице и используется в качестве мета-тега.
Можно использовать HTML-теги, в особенности <a> и <em>. - title: Описание сайта - site_description_extended: - desc_html: Отображается на странице дополнительной информации
Можно использовать HTML-теги - title: Расширенное описание узла - site_short_description: - desc_html: Отображается в боковой панели и в тегах. Опишите, что такое Mastodon и что делает именно этот узел особенным. Если пусто, используется описание узла по умолчанию. - title: Краткое описание узла - site_terms: - desc_html: Вы можете написать собственную политику конфиденциальности. Вы можете использовать теги HTML - title: Собственная политика конфиденциальности - site_title: Название сайта - thumbnail: - desc_html: Используется для предпросмотра с помощью OpenGraph и API. Рекомендуется разрешение 1200x630px - title: Картинка узла - timeline_preview: - desc_html: Показывать публичную ленту на приветственной странице - title: Предпросмотр ленты - title: Настройки сайта - trends: - desc_html: Публично отобразить проверенные хэштеги, актуальные на данный момент - title: Популярные хэштеги site_uploads: delete: Удалить загруженный файл destroyed_msg: Файл успешно удалён. diff --git a/config/locales/sc.yml b/config/locales/sc.yml index 664cdb857..bf24b2686 100644 --- a/config/locales/sc.yml +++ b/config/locales/sc.yml @@ -431,73 +431,15 @@ sc: empty: Peruna règula de serbidore definida ancora. title: Règulas de su serbidore settings: - activity_api_enabled: - desc_html: Nùmeru de tuts publicados in locale, utentes ativos e registros noos in perìodos chidajolos - title: Pùblica istatìsticas agregadas subra s'atividade de s'utente - bootstrap_timeline_accounts: - desc_html: Imprea vìrgulas intre is nòmines de utente. Isceti is contos locales e isblocados ant a funtzionare. Su valore predefinidu cando est bòidu est totu is admins locales - title: Cussìgia custos contos a is persones noas - contact_information: - email: Indiritzu eletrònicu de impresa - username: Nòmine de utente de su cuntatu - custom_css: - desc_html: Modìfica s'aspetu cun CSS carrigadu in cada pàgina - title: CSS personalizadu - default_noindex: - desc_html: Ìmplicat a totu is utentes chi no apant modificadu custa cunfiguratzione - title: Esclude in manera predefinida is utentes dae s'inditzamentu de is motores de chirca domain_blocks: all: Pro totus disabled: Pro nemos - title: Ammustra blocos de domìniu users: Pro utentes locales in lìnia - domain_blocks_rationale: - title: Ammustra sa resone - mascot: - desc_html: Ammustrada in vàrias pàginas. Cussigiadu a su mancu 293x205px. Si no est cunfiguradu, torra a su personàgiu predefinidu - title: Immàgine de su personàgiu - peers_api_enabled: - desc_html: Is nòmines de domìniu chi custu serbidore at agatadu in su fediversu - title: Pùblica sa lista de serbidores iscobertos in s'API - preview_sensitive_media: - desc_html: Is previsualizatziones de ligòngios de àteros sitos web ant a ammustrare una miniadura fintzas cando is elementos multimediales siant marcados comente a sensìbiles - title: Ammustra elementos multimediales sensìbiles in is previsualizatziones de OpenGraph - profile_directory: - desc_html: Permite a is persones de èssere iscobertas - title: Ativa diretòriu de profilos - registrations: - closed_message: - desc_html: Ammustradu in sa prima pàgina cando is registratziones sunt serradas. Podes impreare etichetas HTML - title: Messàgiu de registru serradu - require_invite_text: - desc_html: Cando is registratziones rechedent s'aprovatzione manuale, faghe chi a incarcare su butone "Pro ite ti boles iscrìere?" siat obligatòriu e no a praghere - title: Rechede a is persones noas chi iscriant una resone prima de aderire registrations_mode: modes: approved: Aprovatzione rechesta pro si registrare none: Nemos si podet registrare open: Chie si siat si podet registrare - title: Modu de registratzione - site_description: - desc_html: Paràgrafu de introdutzione a s'API. Descrie pro ite custu serbidore de Mastodon siat ispetziale e cale si siat àtera cosa de importu. Podes impreare etichetas HTML, mescamente <a> e <em>. - title: Descritzione de su serbidore - site_description_extended: - desc_html: Unu logu adatu pro publicare su còdighe de cumportamentu, règulas, diretivas e àteras caraterìsticas ispetzìficas de su serbidore tuo. Podes impreare etichetas HTML - title: Descritzione estèndida de su logu - site_short_description: - desc_html: Ammustradu in sa barra laterale e in is meta-etichetas. Descrie ite est Mastodon e pro ite custu serbidore est ispetziale in unu paràgrafu. - title: Descritzione curtza de su serbidore - site_title: Nòmine de su serbidore - thumbnail: - desc_html: Impreadu pro otènnere pre-visualizatziones pro mèdiu de OpenGraph e API. Cussigiadu 1200x630px - title: Miniadura de su serbidore - timeline_preview: - desc_html: Ammustra su ligàmene a sa lìnia de tempus pùblica in sa pàgina initziale e permite s'atzessu pro mèdiu de s'API a sa lìnia de tempus pùblica sena autenticatzione - title: Permite s'atzessu no autenticadu a sa lìnia de tempus pùblica - title: Cunfiguratzione de su logu - trends: - desc_html: Ammustra in pùblicu is etichetas chi siant istadas revisionadas in passadu e chi oe siant in tendèntzia - title: Etichetas de tendèntzia site_uploads: delete: Cantzella s'archìviu carrigadu destroyed_msg: Càrriga de su situ cantzellada. diff --git a/config/locales/si.yml b/config/locales/si.yml index 54127c254..2c41e40b8 100644 --- a/config/locales/si.yml +++ b/config/locales/si.yml @@ -580,73 +580,15 @@ si: empty: තවමත් සේවාදායක රීති නිර්වචනය කර නොමැත. title: සේවාදායකයේ නීති settings: - activity_api_enabled: - desc_html: සතිපතා බාල්දිවල දේශීයව ප්‍රකාශිත පළ කිරීම්, ක්‍රියාකාරී පරිශීලකයින් සහ නව ලියාපදිංචි කිරීම් ගණන - title: API හි පරිශීලක ක්‍රියාකාරකම් පිළිබඳ සමස්ත සංඛ්‍යාලේඛන ප්‍රකාශයට පත් කරන්න - bootstrap_timeline_accounts: - desc_html: බහු පරිශීලක නාම කොමාවෙන් වෙන් කරන්න. මෙම ගිණුම් පහත සඳහන් නිර්දේශවල පෙන්වීමට සහතික වනු ඇත - title: නව පරිශීලකයින්ට මෙම ගිණුම් නිර්දේශ කරන්න - contact_information: - email: ව්‍යාපාරික වි-තැපෑල - username: පරිශීලක නාමය අමතන්න - custom_css: - desc_html: සෑම පිටුවකම පටවා ඇති CSS සමඟ පෙනුම වෙනස් කරන්න - title: අභිරුචි CSS - default_noindex: - desc_html: මෙම සැකසුම තමන් විසින්ම වෙනස් කර නොමැති සියලුම පරිශීලකයින්ට බලපායි - title: පෙරනිමියෙන් සෙවුම් යන්ත්‍ර සුචිගත කිරීමෙන් පරිශීලකයින් ඉවත් කරන්න domain_blocks: all: හැමෝටම disabled: කාටවත් නෑ - title: වසම් වාරණ පෙන්වන්න users: පුරනය වී ඇති දේශීය පරිශීලකයින් වෙත - domain_blocks_rationale: - title: තාර්කිකත්වය පෙන්වන්න - mascot: - desc_html: පිටු කිහිපයක ප්‍රදර්ශනය කෙරේ. අවම වශයෙන් 293×205px නිර්දේශිතයි. සකසා නොමැති විට, පෙරනිමි මැස්කොට් වෙත ආපසු වැටේ - title: මැස්කොට් රූපය - peers_api_enabled: - desc_html: මෙම සේවාදායකය fediverse තුළ හමු වූ වසම් නම් - title: API හි සොයාගත් සේවාදායක ලැයිස්තුවක් ප්‍රකාශයට පත් කරන්න - preview_sensitive_media: - desc_html: මාධ්‍ය සංවේදී ලෙස සලකුණු කළත් වෙනත් වෙබ් අඩවිවල සබැඳි පෙරදසුන් සිඟිති රූපයක් පෙන්වයි - title: OpenGraph පෙරදසුන් තුළ සංවේදී මාධ්‍ය පෙන්වන්න - profile_directory: - desc_html: පරිශීලකයින්ට සොයාගත හැකි වීමට ඉඩ දෙන්න - title: පැතිකඩ නාමාවලිය සබල කරන්න - registrations: - closed_message: - desc_html: ලියාපදිංචිය වසා ඇති විට මුල් පිටුවේ ප්‍රදර්ශනය කෙරේ. ඔබට HTML ටැග් භාවිතා කළ හැකිය - title: සංවෘත ලියාපදිංචි පණිවිඩය - require_invite_text: - desc_html: ලියාපදිංචිය සඳහා අතින් අනුමැතිය අවශ්‍ය වූ විට, "ඔබට සම්බන්ධ වීමට අවශ්‍ය වන්නේ ඇයි?" විකල්ප වෙනුවට පෙළ ආදානය අනිවාර්ය වේ - title: සම්බන්ධ වීමට හේතුවක් ඇතුළත් කිරීමට නව පරිශීලකයින්ට අවශ්‍ය වේ registrations_mode: modes: approved: ලියාපදිංචි වීමට අනුමැතිය අවශ්‍යයි none: කිසිවෙකුට ලියාපදිංචි විය නොහැක open: ඕනෑම කෙනෙකුට ලියාපදිංචි විය හැක - title: ලියාපදිංචි කිරීමේ මාදිලිය - site_description: - desc_html: API හි හඳුන්වාදීමේ ඡේදය. මෙම Mastodon සේවාදායකය විශේෂ වන්නේ කුමක්ද සහ වෙනත් වැදගත් දෙයක් විස්තර කරන්න. ඔබට HTML ටැග් භාවිතා කළ හැකිය, විශේෂයෙන් <a> සහ <em>. - title: සේවාදායකයේ සවිස්තරය - site_description_extended: - desc_html: ඔබේ චර්යාධර්ම සංග්‍රහය, රීති, මාර්ගෝපදේශ සහ ඔබේ සේවාදායකය වෙන් කරන වෙනත් දේවල් සඳහා හොඳ තැනක්. ඔබට HTML ටැග් භාවිතා කළ හැකිය - title: අභිරුචි දීර්ඝ තොරතුරු - site_short_description: - desc_html: පැති තීරුවේ සහ මෙටා ටැග්වල පෙන්වයි. Mastodon යනු කුමක්ද සහ මෙම සේවාදායකය විශේෂ වන්නේ කුමක්ද යන්න තනි ඡේදයකින් විස්තර කරන්න. - title: සේවාදායකයේ කෙටි සවිස්තරය - site_title: සේවාදායකයේ නම - thumbnail: - desc_html: OpenGraph සහ API හරහා පෙරදසුන් සඳහා භාවිතා වේ. 1200x630px නිර්දේශිතයි - title: සේවාදායක සිඟිති රුව - timeline_preview: - desc_html: ගොඩබෑමේ පිටුවේ පොදු කාලරාමුව වෙත සබැඳිය සංදර්ශනය කරන්න සහ සත්‍යාපනයකින් තොරව පොදු කාලරේඛාවට API ප්‍රවේශයට ඉඩ දෙන්න - title: පොදු කාලරේඛාවට අනවසර පිවිසීමට ඉඩ දෙන්න - title: අඩවියේ සැකසුම් - trends: - desc_html: දැනට ප්‍රවණතා ඇති කලින් සමාලෝචනය කළ අන්තර්ගතය ප්‍රසිද්ධියේ සංදර්ශන කරන්න - title: ප්රවණතා site_uploads: delete: උඩුගත කළ ගොනුව මකන්න destroyed_msg: අඩවිය උඩුගත කිරීම සාර්ථකව මකා ඇත! diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index 787739d7a..a21fd78cd 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -75,8 +75,25 @@ ca: warn: Oculta el contingut filtrat rera un avís mencionant el títol del filtre form_admin_settings: backups_retention_period: Mantenir els arxius d'usuari generats durant el número de dies especificats. + bootstrap_timeline_accounts: Aquests comptes es fixaran en la part superior de les recomanacions de seguiment dels nous usuaris. + closed_registrations_message: Mostrat quan el registres estan tancats content_cache_retention_period: Els apunts des d'altres servidors s'esborraran després del número de dies especificat quan es configura un valor positiu. Això pot ser irreversible. + custom_css: Pots aplicar estils personalitzats en la versió web de Mastodon. + mascot: Anul·la l'ilustració en l'interfície web avançada. media_cache_retention_period: Els fitxers multimèdia descarregats s'esborraran després del número de dies especificat quan el valor configurat és positiu, i tornats a descarregats sota demanda. + profile_directory: El directori de perfils llista tots els usuaris que tenen activat ser descoberts. + require_invite_text: Quan el registre requereix aprovació manual, fer que sigui obligatori enlloc d'opcional escriure el text de la solicitud d'invitació "Perquè vols unirte?" + site_contact_email: Com pot la gent comunicar amb tu per a consultes legals o de recolzament. + site_contact_username: Com pot la gent trobar-te a Mastodon. + site_extended_description: Qualsevol informació adicional que pot ser útil per els visitants i els teus usuaris. Pot ser estructurat amb format Markdown. + site_short_description: Una descripció curta per ajudar a identificar de manera única el teu servidor. Qui el fa anar, per a qui és? + site_terms: Usa la teva pròpia política de privacitat o deixa-ho en blanc per a usar la per defecte. Pot ser estructurat amb format Markdown. + site_title: Com pot la gent referir-se al teu servidor a part del seu nom de domini. + theme: El tema que els visitants i els nous usuaris veuen. + thumbnail: Una imatge d'aproximadament 2:1 mostrada junt l'informació del teu servidor. + timeline_preview: Els visitants amb sessió no iniciada seran capaços de navegar per els apunts públics més recents en el teu servidor. + trendable_by_default: Omet la revisió manual del contingut en tendència. Els articles individuals poden encara ser eliminats després del fet. + trends: Les tendències mostres els apunts, les etiquetes i les noves històries que estan guanyant atenció en el teu servidor. form_challenge: current_password: Estàs entrant en una àrea segura imports: @@ -213,8 +230,22 @@ ca: warn: Oculta amb un avís form_admin_settings: backups_retention_period: Període de retenció del arxiu d'usuari + bootstrap_timeline_accounts: Recomana sempre aquests comptes als nous usuaris + closed_registrations_message: Missatge personalitzat quan el registre està tancat content_cache_retention_period: Periode de retenció de la memòria cau de contingut + custom_css: CSS personalitzat + mascot: Mascota personalitzada (llegat) media_cache_retention_period: Període de retenció del cau multimèdia + profile_directory: Habilita el directori de perfils + registrations_mode: Qui es pot registrar + require_invite_text: Requereix un motiu per el registre + show_domain_blocks: Mostra els bloquejos de domini + show_domain_blocks_rationale: Mostra perquè estan bloquejats els dominis + site_contact_email: E-mail de contacte + site_contact_username: Nom d'usuari del contacte + site_extended_description: Descripció ampliada + site_short_description: Descripció del servidor + site_terms: Política de Privacitat interactions: must_be_follower: Bloqueja les notificacions de persones que no em segueixen must_be_following: Bloqueja les notificacions de persones no seguides diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index b5b788bd5..19b524af7 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -75,8 +75,12 @@ cs: warn: Schovat filtrovaný obsah za varováním zmiňujicím název filtru form_admin_settings: backups_retention_period: Zachovat generované uživatelské archivy pro zadaný počet dní. + bootstrap_timeline_accounts: Tyto účty budou připnuty na vrchol nových uživatelů podle doporučení. + closed_registrations_message: Zobrazeno při zavření registrace content_cache_retention_period: Příspěvky z jiných serverů budou odstraněny po zadaném počtu dní, pokud je nastavena kladná hodnota. To může být nevratné. media_cache_retention_period: Stažené mediální soubory budou po zadaném počtu dní odstraněny, pokud je nastavena kladná hodnota, a na požádání znovu staženy. + site_contact_username: Jak vás lidé mohou oslovit na Mastodon. + site_terms: Použijte vlastní zásady ochrany osobních údajů nebo ponechte prázdné pro použití výchozího nastavení. Může být strukturováno pomocí Markdown syntaxe. form_challenge: current_password: Vstupujete do zabezpečeného prostoru imports: @@ -213,8 +217,27 @@ cs: warn: Skrýt s varováním form_admin_settings: backups_retention_period: Doba uchovávání archivu uživatelů + bootstrap_timeline_accounts: Vždy doporučovat tyto účty novým uživatelům content_cache_retention_period: Doba uchování mezipaměti obsahu + custom_css: Vlastní CSS + mascot: Vlastní maskot (zastaralé) media_cache_retention_period: Doba uchovávání mezipaměti médií + profile_directory: Povolit adresář profilů + registrations_mode: Kdo se může přihlásit + require_invite_text: Požadovat důvod pro připojení + show_domain_blocks: Zobrazit blokace domén + show_domain_blocks_rationale: Zobrazit proč byly blokovány domény + site_contact_email: Kontaktní e-mail + site_contact_username: Jméno kontaktu + site_extended_description: Rozšířený popis + site_short_description: Popis serveru + site_terms: Ochrana osobních údajů + site_title: Název serveru + theme: Výchozí motiv + thumbnail: Miniatura serveru + timeline_preview: Povolit neověřený přístup k veřejným časovým osám + trendable_by_default: Povolit trendy bez předchozí revize + trends: Povolit trendy interactions: must_be_follower: Blokovat oznámení od lidí, kteří vás nesledují must_be_following: Blokovat oznámení od lidí, které nesledujete diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index 37ecad9c8..3f65cb527 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -75,8 +75,24 @@ da: warn: Skjul filtreret indhold bag en advarsel, der nævner filterets titel form_admin_settings: backups_retention_period: Behold genererede brugerarkiver i det angivne antal dage. + bootstrap_timeline_accounts: Disse konti fastgøres øverst på nye brugeres følg-anbefalinger. + closed_registrations_message: Vises, når tilmeldinger er lukket content_cache_retention_period: Indlæg fra andre servere slettes efter det angivne antal dage, når sat til en positiv værdi. Dette kan være irreversibelt. + custom_css: Man kan anvende tilpassede stilarter på Mastodon-webversionen. + mascot: Tilsidesætter illustrationen i den avancerede webgrænseflade. media_cache_retention_period: Downloadede mediefiler slettes efter det angivne antal dage, når sat til en positiv værdi, og gendownloades på forlangende. + profile_directory: Profilmappen oplister alle brugere, som har valgt at kunne opdages. + require_invite_text: Når tilmelding kræver manuel godkendelse, så gør “Hvorfor ønsker du at deltage?” tekstinput obligatorisk i stedet for valgfrit + site_contact_email: Hvordan folk kan opnå kontakt ifm. juridiske eller supportforespørgsler. + site_contact_username: Hvordan folk kan kontakte dig på Mastodon. + site_extended_description: Evt. yderligere oplysninger, som kan være nyttige for både besøgende og brugere. Kan struktureres vha. Markdown-syntaks. + site_short_description: En kort beskrivelse mhp. entydigt at kunne identificere denne server. Hvem kører den, hvem er den for? + site_terms: Brug egen fortrolighedspolitik eller lad stå tomt for standardpolitikken. Kan struktureres med Markdown-syntaks. + site_title: Hvordan folk kan henvise til serveren udover domænenavnet. + theme: Tema, som udloggede besøgende og nye brugere ser. + thumbnail: Et ca. 2:1 billede vist sammen med serveroplysningerne. + timeline_preview: Udloggede besøgende kan gennemse serverens seneste offentlige indlæg. + trends: Tendenser viser, hvilke indlæg, hashtags og nyheder opnår momentum på serveren. form_challenge: current_password: Du bevæger dig ind på et sikkert område imports: @@ -213,8 +229,28 @@ da: warn: Skjul bag en advarsel form_admin_settings: backups_retention_period: Brugerarkivs opbevaringsperiode + bootstrap_timeline_accounts: Anbefal altid disse konti til nye brugere + closed_registrations_message: Tilpasset besked, når tilmelding er utilgængelig content_cache_retention_period: Indholds-cache opbevaringsperiode + custom_css: Tilpasset CSS + mascot: Tilpasset maskot (ældre funktion) media_cache_retention_period: Media-cache opbevaringsperiode + profile_directory: Aktivér profilmappe + registrations_mode: Hvem, der kan tilmelde sig + require_invite_text: Kræv tilmeldingsbegrundelse + show_domain_blocks: Vis domæneblokeringer + show_domain_blocks_rationale: Vis, hvorfor domæner blev blokeret + site_contact_email: Kontakt e-mail + site_contact_username: Kontakt brugernavn + site_extended_description: Udvidet beskrivelse + site_short_description: Serverbeskrivelse + site_terms: Fortrolighedspolitik + site_title: Servernavn + theme: Standardtema + thumbnail: Serverminiaturebillede + timeline_preview: Tillad ikke-godkendt adgang til offentlige tidslinjer + trendable_by_default: Tillad ikke-reviderede tendenser + trends: Aktivér trends interactions: must_be_follower: Blokér notifikationer fra ikke-følgere must_be_following: Blokér notifikationer fra folk, som ikke følges diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml index 9e1464a4f..9ef776059 100644 --- a/config/locales/simple_form.el.yml +++ b/config/locales/simple_form.el.yml @@ -186,6 +186,11 @@ el: actions: hide: Πλήρης απόκρυψη warn: Απόκρυψη με προειδοποίηση + form_admin_settings: + custom_css: Προσαρμοσμένο CSS + registrations_mode: Ποιος μπορεί να εγγραφεί + site_contact_email: E-mail επικοινωνίας + site_contact_username: Όνομα χρήστη επικοινωνίας interactions: must_be_follower: Μπλόκαρε τις ειδοποιήσεις από όσους δεν σε ακολουθούν must_be_following: Μπλόκαρε τις ειδοποιήσεις από όσους δεν ακολουθείς diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml index e479970b2..49b09ace4 100644 --- a/config/locales/simple_form.es-AR.yml +++ b/config/locales/simple_form.es-AR.yml @@ -75,8 +75,25 @@ es-AR: warn: Ocultar el contenido filtrado detrás de una advertencia mencionando el título del filtro form_admin_settings: backups_retention_period: Conservar los archivos historiales generados por el usuario durante el número de días especificado. + bootstrap_timeline_accounts: Estas cuentas serán fijadas a la parte superior de las recomendaciones de cuentas a seguir para nuevos usuarios. + closed_registrations_message: Mostrado cuando los registros están cerrados content_cache_retention_period: Los mensajes de otros servidores se eliminarán después del número especificado de días cuando se establezca un valor positivo. Esto puede ser irreversible. + custom_css: Podés aplicar estilos personalizados a la versión web de Mastodon. + mascot: Reemplaza la ilustración en la interface web avanzada. media_cache_retention_period: Los archivos de medios descargados se eliminarán después del número especificado de días cuando se establezca un valor positivo, y se volverán a descargar a pedido. + profile_directory: El directorio de perfiles lista a todos los usuarios que han optado a que su cuenta pueda ser descubierta. + require_invite_text: Cuando registros aprobación manual, hacé que la solicitud de invitación "¿Por qué querés unirte?" sea obligatoria, en vez de opcional + site_contact_email: Cómo la gente puede estar en contacto con vos para consultas legales o de ayuda. + site_contact_username: Cómo la gente puede estar en contacto con vos en Mastodon. + site_extended_description: Cualquier información adicional que pueda ser útil para los visitantes y tus usuarios. Se puede estructurar con sintaxis Markdown. + site_short_description: Una breve descripción para ayudar a identificar individualmente a tu servidor. ¿Quién lo administra, a quién va dirigido? + site_terms: Usá tu propia política de privacidad o dejala en blanco para usar la predeterminada. Puede estructurarse con sintaxis Markdown. + site_title: Cómo la gente puede referirse a tu servidor además de su nombre de dominio. + theme: El tema que los visitantes no registrados y los nuevos usuarios ven. + thumbnail: Una imagen de aproximadamente 2:1 se muestra junto a la información de tu servidor. + timeline_preview: Los visitantes no registrados podrán navegar por los mensajes públicos más recientes disponibles en el servidor. + trendable_by_default: Omití la revisión manual del contenido en tendencia. Los elementos individuales aún podrán eliminarse de las tendencias. + trends: Las tendencias muestran qué mensajes, etiquetas y noticias están ganando tracción en tu servidor. form_challenge: current_password: Estás ingresando en un área segura imports: @@ -213,8 +230,28 @@ es-AR: warn: Ocultar con una advertencia form_admin_settings: backups_retention_period: Período de retención del archivo historial del usuario + bootstrap_timeline_accounts: Siempre recomendar estas cuentas a usuarios nuevos + closed_registrations_message: Mensaje personalizado cuando los registros no están disponibles content_cache_retention_period: Período de retención de la caché de contenido + custom_css: CSS personalizado + mascot: Mascota personalizada (legado) media_cache_retention_period: Período de retención de la caché de medios + profile_directory: Habilitar directorio de perfiles + registrations_mode: Quién puede registrarse + require_invite_text: Requerir un motivo para unirse + show_domain_blocks: Mostrar dominios bloqueados + show_domain_blocks_rationale: Mostrar por qué se bloquearon los dominios + site_contact_email: Dirección de correo electrónico de contacto + site_contact_username: Nombre de usuario de contacto + site_extended_description: Descripción extendida + site_short_description: Descripción del servidor + site_terms: Política de privacidad + site_title: Nombre del servidor + theme: Tema predeterminado + thumbnail: Miniatura del servidor + timeline_preview: Permitir el acceso no autenticado a las líneas temporales públicas + trendable_by_default: Permitir tendencias sin revisión previa + trends: Habilitar tendencias interactions: must_be_follower: Bloquear notificaciones de cuentas que no te siguen must_be_following: Bloquear notificaciones de cuentas que no seguís diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index fef4595d4..3b97e4df6 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -75,8 +75,25 @@ es: warn: Ocultar el contenido filtrado detrás de una advertencia mencionando el título del filtro form_admin_settings: backups_retention_period: Mantener los archivos de usuario generados durante el número de días especificado. + bootstrap_timeline_accounts: Estas cuentas aparecerán en la parte superior de las recomendaciones de los nuevos usuarios. + closed_registrations_message: Mostrado cuando los registros están cerrados content_cache_retention_period: Las publicaciones de otros servidores se eliminarán después del número especificado de días cuando se establezca un valor positivo. Esto puede ser irreversible. + custom_css: Puedes aplicar estilos personalizados a la versión web de Mastodon. + mascot: Reemplaza la ilustración en la interfaz web avanzada. media_cache_retention_period: Los archivos multimedia descargados se eliminarán después del número especificado de días cuando se establezca un valor positivo, y se redescargarán bajo demanda. + profile_directory: El directorio de perfiles lista a todos los usuarios que han optado por que su cuenta pueda ser descubierta. + require_invite_text: Cuando los registros requieren aprobación manual, hace obligatoria la entrada de texto "¿Por qué quieres unirte?" en lugar de opcional + site_contact_email: Cómo la gente puede ponerse en contacto contigo para consultas legales o de ayuda. + site_contact_username: Cómo puede contactarte la gente en Mastodon. + site_extended_description: Cualquier información adicional que pueda ser útil para los visitantes y sus usuarios. Se puede estructurar con formato Markdown. + site_short_description: Una breve descripción para ayudar a identificar su servidor de forma única. ¿Quién lo administra, a quién va dirigido? + site_terms: Utiliza tu propia política de privacidad o déjala en blanco para usar la predeterminada Puede estructurarse con formato Markdown. + site_title: Cómo puede referirse la gente a tu servidor además de por el nombre de dominio. + theme: El tema que los visitantes no registrados y los nuevos usuarios ven. + thumbnail: Una imagen de aproximadamente 2:1 se muestra junto a la información de tu servidor. + timeline_preview: Los visitantes no registrados podrán navegar por los mensajes públicos más recientes disponibles en el servidor. + trendable_by_default: Omitir la revisión manual del contenido en tendencia. Los elementos individuales aún podrán eliminarse de las tendencias. + trends: Las tendencias muestran qué mensajes, etiquetas y noticias están ganando tracción en tu servidor. form_challenge: current_password: Estás entrando en un área segura imports: @@ -213,8 +230,28 @@ es: warn: Ocultar con una advertencia form_admin_settings: backups_retention_period: Período de retención del archivo de usuario + bootstrap_timeline_accounts: Recomendar siempre estas cuentas a nuevos usuarios + closed_registrations_message: Mensaje personalizado cuando los registros no están disponibles content_cache_retention_period: Período de retención de caché de contenido + custom_css: CSS personalizado + mascot: Mascota personalizada (legado) media_cache_retention_period: Período de retención de caché multimedia + profile_directory: Habilitar directorio de perfiles + registrations_mode: Quién puede registrarse + require_invite_text: Requerir una razón para unirse + show_domain_blocks: Mostrar dominios bloqueados + show_domain_blocks_rationale: Mostrar por qué se bloquearon los dominios + site_contact_email: Dirección de correo electrónico de contacto + site_contact_username: Nombre de usuario de contacto + site_extended_description: Descripción extendida + site_short_description: Descripción del servidor + site_terms: Política de Privacidad + site_title: Nombre del servidor + theme: Tema por defecto + thumbnail: Miniatura del servidor + timeline_preview: Permitir el acceso no autenticado a las líneas de tiempo públicas + trendable_by_default: Permitir tendencias sin revisión previa + trends: Habilitar tendencias interactions: must_be_follower: Bloquear notificaciones de personas que no te siguen must_be_following: Bloquear notificaciones de personas que no sigues diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index e2dd896d1..0f943f0a2 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -37,7 +37,7 @@ hu: current_password: Biztonsági okok miatt kérlek, írd be a jelenlegi fiók jelszavát current_username: A jóváhagyáshoz írd be a jelenlegi fiók felhasználói nevét digest: Csak hosszú távollét esetén küldődik és csak ha személyes üzenetet kaptál távollétedben - discoverable: Engedélyezzük, hogy a fiókod idegenek által megtalálható legyen javaslatokon, trendeken és más funkciókon keresztül + discoverable: Engedélyezés, hogy a fiókod idegenek által megtalálható legyen javaslatokon, trendeken és más funkciókon keresztül email: Kapsz egy megerősítő e-mailt fields: A profilodon legfeljebb 4 bejegyzés szerepelhet táblázatos formában header: PNG, GIF vagy JPG. Maximum %{size}. Átméretezzük %{dimensions} pixelre @@ -62,7 +62,7 @@ hu: username: A felhasználói neved egyedi lesz a %{domain} domainen whole_word: Ha a kulcsszó alfanumerikus, csak akkor minősül majd találatnak, ha teljes szóra illeszkedik domain_allow: - domain: Ez a domain adatot kérhet le a szerverünkről és az ettől érkező adatokat feldolgozzuk és mentjük + domain: Ez a domain adatokat kérhet le erről a kiszolgálóról, és a bejövő adatok fel lesznek dolgozva és tárolva lesznek email_domain_block: domain: Ez lehet az e-mail címben szereplő domain név vagy az MX rekord, melyet ez használ. Ezeket feliratkozáskor ellenőrizzük. with_dns_records: Megpróbáljuk a megadott domain DNS rekordjait lekérni, és az eredményeket hozzáadjuk a tiltólistához @@ -77,10 +77,16 @@ hu: backups_retention_period: Az előállított felhasználói archívumok megtartása a megadott napokig. content_cache_retention_period: A más kiszolgálókról származó bejegyzések megadott számú nap után törölve lesznek, ha pozitív értékre van állítva. Ez lehet, hogy nem fordítható vissza. media_cache_retention_period: A letöltött médiafájlok megadott számú nap után törölve lesznek, ha pozitív értékre van állítva, és igény szerint újból le lesznek töltve. + site_short_description: Rövid leírás, amely segíthet a kiszolgálód egyedi azonosításában. Ki futtatja, kinek készült? + site_title: Hogyan hivatkozhatnak mások a kiszolgálódra a domain nevén kívül. + thumbnail: Egy durván 2:1 arányú kép, amely a kiszolgálóinformációk mellett jelenik meg. + timeline_preview: A kijelentkezett látogatók továbbra is böngészhetik a kiszolgáló legfrissebb nyilvános bejegyzéseit. + trendable_by_default: Kézi felülvizsgálat kihagyása a felkapott tartalmaknál. Az egyes elemek utólag távolíthatók el a trendek közül. + trends: A trendek azt mondják meg, hogy mely bejegyzések, hashtagek és hírbejegyzések felkapottak a kiszolgálódon. form_challenge: current_password: Beléptél egy biztonsági térben imports: - data: Egy másik Mastodon szerverről exportált CSV fájl + data: Egy másik Mastodon kiszolgálóról exportált CSV-fájl invite_request: text: Ez segít nekünk átnézni a jelentkezésedet ip_block: @@ -93,7 +99,7 @@ hu: sign_up_requires_approval: Új regisztrációk csak a jóváhagyásoddal történhetnek majd meg severity: Válaszd ki, mi történjen a kérésekkel erről az IP-ről rule: - text: Írd le, mi a szabály vagy elvárás ezen a szerveren a felhasználók felé. Próbálj röviden, egyszerűen fogalmazni + text: Írd le, mi a szabály vagy elvárás ezen a kiszolgálón a felhasználók felé. Próbálj röviden, egyszerűen fogalmazni. sessions: otp: 'Add meg a telefonodon generált kétlépcsős azonosító kódodat vagy használd az egyik tartalék bejelentkező kódot:' webauthn: Ha ez egy USB kulcs, ellenőrizd, hogy csatlakoztattad és ha szükséges, aktiváltad is. @@ -214,7 +220,22 @@ hu: form_admin_settings: backups_retention_period: Felhasználói archívum megtartási időszaka content_cache_retention_period: Tartalom-gyorsítótár megtartási időszaka + custom_css: Egyéni CSS + mascot: Egyéni kabala (örökölt) media_cache_retention_period: Média-gyorsítótár megtartási időszaka + profile_directory: Profiladatbázis engedélyezése + registrations_mode: Ki regisztrálhat + require_invite_text: Indok megkövetelése a csatlakozáshoz + show_domain_blocks: Domain tiltások megjelenitése + site_extended_description: Bővített leírás + site_short_description: Kiszolgáló leírása + site_terms: Adatvédelmi szabályzat + site_title: Kiszolgáló neve + theme: Alapértelmezett téma + thumbnail: Kiszolgáló bélyegképe + timeline_preview: A nyilvános idővonalak hitelesítés nélküli elérésének engedélyezése + trendable_by_default: Trendek engedélyezése előzetes ellenőrzés nélkül + trends: Trendek engedélyezése interactions: must_be_follower: Nem követőidtől érkező értesítések tiltása must_be_following: Nem követettjeidtől érkező értesítések tiltása diff --git a/config/locales/simple_form.io.yml b/config/locales/simple_form.io.yml index b32d8eb1e..7cde207ac 100644 --- a/config/locales/simple_form.io.yml +++ b/config/locales/simple_form.io.yml @@ -75,8 +75,25 @@ io: warn: Celez filtrita kontenajo dop avert quo montras titulo di filtrilo form_admin_settings: 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. + 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. + 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. + site_contact_username: Quale personi povas kontaktar vu en Mastodon. + site_extended_description: Irga plusa informi quo forsan esar utila por vizitanti e uzanti. Povas strukturigesar per sintaxo di Markdown. + 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. + 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. form_challenge: current_password: Vu eniras sekura areo imports: @@ -213,8 +230,28 @@ io: warn: Celez kun averto form_admin_settings: backups_retention_period: Uzantoarkivretendurtempo + bootstrap_timeline_accounts: Sempre rekomendez ca konti a nova uzanti + closed_registrations_message: Kustumizita mesajo kande registradi ne esas disponebla content_cache_retention_period: Kontenajmemorajretendurtempo + custom_css: Kustumizita CSS + mascot: Kustumizita reprezentimajo (oldo) media_cache_retention_period: Mediimemorajretendurtempo + profile_directory: Aktivigez profilcheflisto + registrations_mode: Qua povas registragar + require_invite_text: Mustez pozar motivo por juntar + show_domain_blocks: Montrez domenobstrukti + show_domain_blocks_rationale: Montrez por quo domeni obstruktesir + site_contact_email: Kontaktoretposto + site_contact_username: Kontaktouzantonomo + site_extended_description: Longa deskripto + site_short_description: Servildeskripto + site_terms: Privatesguidilo + site_title: Servilnomo + theme: Originala temo + thumbnail: Servilimajeto + timeline_preview: Permisez neyurizita aceso a publika tempolineo + trendable_by_default: Permisez tendenci sen bezonar kontrolo + trends: Aktivigez tendenci 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 diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml index 8cb8d7b85..408eeedd2 100644 --- a/config/locales/simple_form.it.yml +++ b/config/locales/simple_form.it.yml @@ -75,8 +75,25 @@ it: warn: Nascondi il contenuto filtrato e mostra invece un avviso, citando il titolo del filtro form_admin_settings: backups_retention_period: Conserva gli archivi utente generati per il numero di giorni specificato. + bootstrap_timeline_accounts: Questi account verranno aggiunti in cima ai consigli da seguire dei nuovi utenti. + closed_registrations_message: Visualizzato alla chiusura delle iscrizioni content_cache_retention_period: I post da altri server verranno eliminati dopo il numero di giorni specificato se impostato su un valore positivo. Questo potrebbe essere irreversibile. + custom_css: È possibile applicare stili personalizzati sulla versione web di Mastodon. + mascot: Sostituisce l'illustrazione nell'interfaccia web avanzata. media_cache_retention_period: I file multimediali scaricati verranno eliminati dopo il numero di giorni specificato se impostati su un valore positivo e scaricati nuovamente su richiesta. + profile_directory: La directory del profilo elenca tutti gli utenti che hanno acconsentito ad essere individuabili. + require_invite_text: 'Quando le iscrizioni richiedono l''approvazione manuale, rendi la domanda: "Perché vuoi unirti?" obbligatoria anziché facoltativa' + site_contact_email: In che modo le persone possono contattarti per richieste legali o di supporto. + site_contact_username: In che modo le persone possono raggiungerti su Mastodon. + site_extended_description: Qualsiasi informazione aggiuntiva che possa essere utile ai visitatori e ai tuoi utenti. Può essere strutturata con la sintassi Markdown. + site_short_description: Una breve descrizione per aiutare a identificare in modo univoco il tuo server. Chi lo gestisce, a chi è rivolto? + site_terms: Usa la tua politica sulla privacy o lascia vuoto per usare l'impostazione predefinita. Può essere strutturata con la sintassi Markdown. + site_title: In che modo le persone possono fare riferimento al tuo server oltre al suo nome di dominio. + theme: Tema visualizzato dai visitatori e dai nuovi utenti disconnessi. + thumbnail: Un'immagine approssimativamente 2:1 visualizzata insieme alle informazioni del tuo server. + timeline_preview: I visitatori disconnessi potranno sfogliare i post pubblici più recenti disponibili sul server. + trendable_by_default: Salta la revisione manuale dei contenuti di tendenza. I singoli elementi possono ancora essere rimossi dalle tendenze dopo il fatto. + trends: Le tendenze mostrano quali post, hashtag e notizie stanno guadagnando popolarità sul tuo server. form_challenge: current_password: Stai entrando in un'area sicura imports: @@ -213,8 +230,28 @@ it: warn: Nascondi con avviso form_admin_settings: backups_retention_period: Periodo di conservazione dell'archivio utente + bootstrap_timeline_accounts: Consiglia sempre questi account ai nuovi utenti + closed_registrations_message: Messaggio personalizzato quando le iscrizioni non sono disponibili content_cache_retention_period: Periodo di conservazione della cache dei contenuti + custom_css: Personalizza CSS + mascot: Personalizza mascotte (legacy) media_cache_retention_period: Periodo di conservazione della cache multimediale + profile_directory: Abilita directory del profilo + registrations_mode: Chi può iscriversi + require_invite_text: Richiedi un motivo per unirsi + show_domain_blocks: Mostra i blocchi di dominio + show_domain_blocks_rationale: Mostra perché i domini sono stati bloccati + site_contact_email: Contatto email + site_contact_username: Nome utente di contatto + site_extended_description: Descrizione estesa + site_short_description: Descrizione del server + site_terms: Politica sulla privacy + site_title: Nome del server + theme: Tema predefinito + thumbnail: Miniatura del server + timeline_preview: Consenti l'accesso non autenticato alle timeline pubbliche + trendable_by_default: Consenti le tendenze senza revisione preventiva + trends: Abilita le tendenze interactions: must_be_follower: Blocca notifiche da chi non ti segue must_be_following: Blocca notifiche dalle persone che non segui diff --git a/config/locales/simple_form.ku.yml b/config/locales/simple_form.ku.yml index 65cb504ed..a62e8eb40 100644 --- a/config/locales/simple_form.ku.yml +++ b/config/locales/simple_form.ku.yml @@ -217,6 +217,8 @@ ku: backups_retention_period: Serdema tomarkirina arşîva bikarhêner content_cache_retention_period: Serdema tomarkirina bîrdanka naverokê media_cache_retention_period: Serdema tomarkirina bîrdanka medyayê + site_terms: Politîka taybetiyê + trendable_by_default: Mafê bide rojevê bêyî ku were nirxandin interactions: must_be_follower: Danezanên ji kesên ku ne şopînerên min tên asteng bike must_be_following: Agahdariyan asteng bike ji kesên ku tu wan naşopînî diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml index 899392b10..4529d2c5d 100644 --- a/config/locales/simple_form.lv.yml +++ b/config/locales/simple_form.lv.yml @@ -75,8 +75,25 @@ lv: warn: Paslēp filtrēto saturu aiz brīdinājuma, kurā minēts filtra nosaukums form_admin_settings: backups_retention_period: Saglabā ģenerētos lietotāju arhīvus norādīto dienu skaitā. + bootstrap_timeline_accounts: Šie konti tiks piesprausti jauno lietotāju ieteikumu augšdaļā. + closed_registrations_message: Tiek rādīts, kad reģistrēšanās ir slēgta content_cache_retention_period: Ziņas no citiem serveriem tiks dzēstas pēc norādītā dienu skaita, ja ir iestatīta pozitīva vērtība. Tas var būt neatgriezeniski. + custom_css: Vari lietot pielāgotus stilus Mastodon tīmekļa versijā. + mascot: Ignorē ilustrāciju uzlabotajā tīmekļa saskarnē. media_cache_retention_period: Lejupielādētie multivides faili tiks dzēsti pēc norādītā dienu skaita, kad tie būs iestatīti uz pozitīvu vērtību, un pēc pieprasījuma tiks lejupielādēti atkārtoti. + profile_directory: Profilu direktorijā ir uzskaitīti visi lietotāji, kuri ir izvēlējušies būt atklājami. + require_invite_text: 'Ja pierakstīšanai nepieciešama manuāla apstiprināšana, izdari tā, lai teksta: “Kāpēc vēlaties pievienoties?” ievade ir obligāta, nevis opcionāla' + site_contact_email: Kā cilvēki var sazināties ar tevi par juridiskiem vai atbalsta jautājumiem. + site_contact_username: Tagad cilvēki var tevi sasniegt Mastodon. + site_extended_description: Jebkura papildu informācija, kas var būt noderīga apmeklētājiem un lietotājiem. Var strukturēt ar Markdown sintaksi. + site_short_description: Īss apraksts, kas palīdzēs unikāli identificēt tavu serveri. Kurš to darbina, kam tas paredzēts? + site_terms: Izmanto pats savu konfidencialitātes politiku vai atstāj tukšu, lai izmantotu noklusējuma iestatījumu. Var strukturēt ar Markdown sintaksi. + site_title: Kā cilvēki var atsaukties uz tavu serveri, izņemot tā domēna nosaukumu. + theme: Tēma, kuru redz apmeklētāji, kuri ir atteikušies, un jaunie lietotāji. + thumbnail: Aptuveni 2:1 attēls, kas tiek parādīts kopā ar tava servera informāciju. + timeline_preview: Atteikušies apmeklētāji varēs pārlūkot jaunākās serverī pieejamās publiskās ziņas. + trendable_by_default: Izlaist aktuālā satura manuālu pārskatīšanu. Atsevišķas preces joprojām var noņemt no tendencēm pēc fakta. + trends: Tendences parāda, kuras ziņas, atsauces un ziņu stāsti gūst panākumus tavā serverī. form_challenge: current_password: Tu ieej drošā zonā imports: @@ -213,8 +230,28 @@ lv: warn: Paslēpt ar brīdinājumu form_admin_settings: backups_retention_period: Lietotāja arhīva glabāšanas periods + bootstrap_timeline_accounts: Vienmēr iesaki šos kontus jaunajiem lietotājiem + closed_registrations_message: Pielāgots ziņojums, ja reģistrēšanās nav pieejama content_cache_retention_period: Satura arhīva glabāšanas periods + custom_css: Pielāgots CSS + mascot: Pielāgots talismans (mantots) media_cache_retention_period: Multivides kešatmiņas saglabāšanas periods + profile_directory: Iespējot profila direktoriju + registrations_mode: Kurš drīkst pieteikties + require_invite_text: Pieprasīt pievienošanās iemeslu + show_domain_blocks: Rādīt domēnu bloķēšanas + show_domain_blocks_rationale: Rādīt, kāpēc domēni tika bloķēti + site_contact_email: E-pasts saziņai + site_contact_username: Lietotājvārds saziņai + site_extended_description: Paplašināts apraksts + site_short_description: Servera apraksts + site_terms: Privātuma Politika + site_title: Servera nosaukums + theme: Noklusētā tēma + thumbnail: Servera sīkbilde + timeline_preview: Atļaut neautentificētu piekļuvi publiskajām ziņu lentām + trendable_by_default: Atļaut tendences bez iepriekšējas pārskatīšanas + trends: Iespējot tendences interactions: must_be_follower: Bloķēt paziņojumus no ne-sekotājiem must_be_following: Bloķēt paziņojumus no cilvēkiem, kuriem tu neseko diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index aae28cb20..4d44bbe64 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -75,8 +75,25 @@ pl: warn: Ukryj filtrowaną zawartość za ostrzeżeniem wskazującym tytuł filtra form_admin_settings: backups_retention_period: Zachowaj wygenerowane archiwa użytkownika przez określoną liczbę dni. + bootstrap_timeline_accounts: Te konta zostaną przypięte na górze rekomendacji śledzenia nowych użytkowników. + closed_registrations_message: Wyświetlane po zamknięciu rejestracji content_cache_retention_period: Posty z innych serwerów zostaną usunięte po określonej liczbie dni, kiedy liczba jest ustawiona na wartość dodatnią. Może to być nieodwracalne. + custom_css: Możesz zastosować niestandardowe style w internetowej wersji Mastodon. + mascot: Nadpisuje ilustrację w zaawansowanym interfejsie internetowym. media_cache_retention_period: Pobrane pliki multimedialne zostaną usunięte po określonej liczbie dni po ustawieniu na wartość dodatnią i ponownie pobrane na żądanie. + profile_directory: Katalog profili zawiera listę wszystkich użytkowników, którzy zgodzili się na bycie znalezionymi. + require_invite_text: Kiedy rejestracje wymagają ręcznego zatwierdzenia, ustaw pole "Dlaczego chcesz dołączyć?" jako obowiązkowe, a nie opcjonalne + site_contact_email: Jak ludzie mogą się z Tobą skontaktować w celu uzyskania odpowiedzi na zapytania prawne lub wsparcie. + site_contact_username: Jak ludzie mogą do Ciebie dotrzeć na Mastodon. + site_extended_description: Wszelkie dodatkowe informacje, które mogą być przydatne dla odwiedzających i użytkowników. Można je formatować używając składni Markdown. + site_short_description: Krótki opis, który pomoże w unikalnym zidentyfikowaniu Twojego serwera. Kto go obsługuje, do kogo jest skierowany? + site_terms: Użyj własnej polityki prywatności lub zostaw puste, aby użyć domyślnej. Może być sformatowana za pomocą składni Markdown. + site_title: Jak ludzie mogą odwoływać się do Twojego serwera inaczej niże przez nazwę jego domeny. + theme: Motyw, który widzą wylogowani i nowi użytkownicy. + thumbnail: Obraz o proporcjach mniej więcej 2:1 wyświetlany obok informacji o serwerze. + timeline_preview: Wylogowani użytkownicy będą mogli przeglądać najnowsze publiczne wpisy dostępne na serwerze. + trendable_by_default: Pomiń ręczny przegląd treści trendów. Pojedyncze elementy nadal mogą być usuwane z trendów po fakcie. + trends: Tendencje pokazują, które posty, hasztagi i newsy zyskują popularność na Twoim serwerze. form_challenge: current_password: Wchodzisz w strefę bezpieczną imports: @@ -213,8 +230,28 @@ pl: warn: Ukryj z ostrzeżeniem form_admin_settings: backups_retention_period: Okres przechowywania archiwum użytkownika + bootstrap_timeline_accounts: Zawsze rekomenduj te konta nowym użytkownikom + closed_registrations_message: Niestandardowa wiadomość, gdy rejestracje nie są dostępne content_cache_retention_period: Okres przechowywania pamięci podręcznej + custom_css: Niestandardowy CSS + mascot: Własna ikona media_cache_retention_period: Okres przechowywania pamięci podręcznej + profile_directory: Włącz katalog profilów + registrations_mode: Kto może się zarejestrować + require_invite_text: Wymagaj powodu, aby dołączyć + show_domain_blocks: Pokazuj zablokowane domeny + show_domain_blocks_rationale: Pokaż dlaczego domeny zostały zablokowane + site_contact_email: E-mail kontaktowy + site_contact_username: Nazwa użytkownika do kontaktu + site_extended_description: Rozszerzony opis + site_short_description: Opis serwera + site_terms: Polityka prywatności + site_title: Nazwa serwera + theme: Domyślny motyw + thumbnail: Miniaturka serwera + timeline_preview: Zezwalaj na nieuwierzytelniony dostęp do publicznych osi czasu + trendable_by_default: Zezwalaj na trendy bez wcześniejszego przeglądu + trends: Włącz trendy interactions: must_be_follower: Nie wyświetlaj powiadomień od osób, które Cię nie śledzą must_be_following: Nie wyświetlaj powiadomień od osób, których nie śledzisz diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml index bf10ee095..62d9bf582 100644 --- a/config/locales/simple_form.pt-PT.yml +++ b/config/locales/simple_form.pt-PT.yml @@ -213,8 +213,28 @@ pt-PT: warn: Ocultar com um aviso form_admin_settings: backups_retention_period: Período de retenção de arquivos de utilizador + bootstrap_timeline_accounts: Sempre recomendar essas contas para novos utilizadores + closed_registrations_message: Mensagem personalizada quando as inscrições não estão disponíveis content_cache_retention_period: Período de retenção de conteúdo em cache + custom_css: CSS Personalizado + mascot: Mascote personalizada (legado) media_cache_retention_period: Período de retenção de ficheiros de media em cache + profile_directory: Habilitar diretório de perfis + registrations_mode: Quem pode inscrever-se + require_invite_text: Requerer uma razão para entrar + show_domain_blocks: Mostrar domínios bloqueados + show_domain_blocks_rationale: Mostrar porque os domínios foram bloqueados + site_contact_email: E-mail de contacto + site_contact_username: Nome de utilizador do contacto + site_extended_description: Descrição estendida + site_short_description: Descrição do servidor + site_terms: Política de Privacidade + site_title: Nome do servidor + theme: Tema predefinido + thumbnail: Miniatura do servidor + timeline_preview: Permitir acesso não autenticado às cronologias públicas + trendable_by_default: Permitir tendências sem revisão prévia + trends: Habilitar tendências interactions: must_be_follower: Bloquear notificações de não-seguidores must_be_following: Bloquear notificações de pessoas que não segues diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml index 1826801b8..c0ecab1ae 100644 --- a/config/locales/simple_form.sl.yml +++ b/config/locales/simple_form.sl.yml @@ -75,8 +75,17 @@ sl: warn: Skrij filtrirano vsebino za opozorilom, ki pomenja naslov filtra form_admin_settings: backups_retention_period: Hani tvorjene arhive uporabnikov navedeno število dni. + closed_registrations_message: Prikazano, ko so registracije zaprte content_cache_retention_period: Objave z drugih strežnikov bodo izbrisane po navedenem številu dni, če je vrednost pozitivna. Ta dejanja lahko nepovratna. + custom_css: Spletni različici Mastodona lahko uveljavite sloge po meri. + mascot: Preglasi ilustracijo v naprednem spletnem vmesniku. media_cache_retention_period: Prenesene predstavnostne datoteke bodo izbrisane po navedenem številu dni, če je vrednost pozitivna, in ponovno prenesene na zahtevo. + profile_directory: Imenik profilov izpiše vse uporabnike, ki so dovolili, da so v njem navedeni. + site_contact_username: Kako vas lahko kontaktirajo na Mastodonu. + site_title: Kako naj imenujejo vaš strežnik poleg njegovega domenskega imena. + theme: Tema, ki jo vidijo odjavljeni obiskovalci in novi uporabniki. + timeline_preview: Odjavljeni obiskovalci bodo lahko brskali po najnovejših javnih objavah, ki so na voljo na strežniku. + trends: Trendi prikažejo, katere objave, ključniki in novice privlačijo zanimanje na vašem strežniku. form_challenge: current_password: Vstopate v varovano območje imports: @@ -213,8 +222,28 @@ sl: warn: Skrij z opozorilom form_admin_settings: backups_retention_period: Obdobje hrambe arhivov uporabnikov + bootstrap_timeline_accounts: Vedno priporočaj te račune novim uporabnikom + closed_registrations_message: Sporočilo po meri, ko registracije niso na voljo content_cache_retention_period: Obdobje hrambe predpomnilnika vsebine + custom_css: CSS po meri + mascot: Maskota po meri (opuščeno) media_cache_retention_period: Obdobje hrambe predpomnilnika predstavnosti + profile_directory: Omogoči imenik profilov + registrations_mode: Kdo se lahko registrira + require_invite_text: Zahtevaj razlog za pridružitev + show_domain_blocks: Pokaži blokade domen + show_domain_blocks_rationale: Pokaži, zakaj so bile domene blokirane + site_contact_email: E-naslov za stik + site_contact_username: Uporabniško ime stika + site_extended_description: Razširjeni opis + site_short_description: Opis strežnika + site_terms: Pravilnik o zasebnosti + site_title: Ime strežnika + theme: Privzeta tema + thumbnail: Sličica strežnika + timeline_preview: Omogoči neoverjen dostop do javnih časovnic + trendable_by_default: Dovoli trende brez predhodnega pregleda + trends: Omogoči trende interactions: must_be_follower: Blokiraj obvestila nesledilcev must_be_following: Blokiraj obvestila oseb, ki jim ne sledite diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index e67464115..8134be462 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -210,7 +210,23 @@ th: form_admin_settings: backups_retention_period: ระยะเวลาการเก็บรักษาการเก็บถาวรผู้ใช้ content_cache_retention_period: ระยะเวลาการเก็บรักษาแคชเนื้อหา + custom_css: CSS ที่กำหนดเอง + mascot: มาสคอตที่กำหนดเอง (ดั้งเดิม) media_cache_retention_period: ระยะเวลาการเก็บรักษาแคชสื่อ + profile_directory: เปิดใช้งานไดเรกทอรีโปรไฟล์ + registrations_mode: ผู้ที่สามารถลงทะเบียน + require_invite_text: ต้องมีเหตุผลที่จะเข้าร่วม + show_domain_blocks: แสดงการปิดกั้นโดเมน + site_contact_email: อีเมลสำหรับติดต่อ + site_contact_username: ชื่อผู้ใช้สำหรับติดต่อ + site_extended_description: คำอธิบายแบบขยาย + site_short_description: คำอธิบายเซิร์ฟเวอร์ + site_terms: นโยบายความเป็นส่วนตัว + site_title: ชื่อเซิร์ฟเวอร์ + theme: ชุดรูปแบบเริ่มต้น + thumbnail: ภาพขนาดย่อเซิร์ฟเวอร์ + trendable_by_default: อนุญาตแนวโน้มโดยไม่มีการตรวจทานล่วงหน้า + trends: เปิดใช้งานแนวโน้ม interactions: must_be_follower: ปิดกั้นการแจ้งเตือนจากผู้ที่ไม่ใช่ผู้ติดตาม must_be_following: ปิดกั้นการแจ้งเตือนจากผู้คนที่คุณไม่ได้ติดตาม diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index 3576d8eef..c401a821d 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -75,8 +75,25 @@ uk: warn: Сховати відфільтрований вміст за попередженням, у якому вказано заголовок фільтра form_admin_settings: backups_retention_period: Зберігати створені архіви користувача вказану кількість днів. + bootstrap_timeline_accounts: Ці облікові записи будуть закріплені в топі пропозицій для нових користувачів. + closed_registrations_message: Показується, коли реєстрація закрита content_cache_retention_period: Матеріали з інших серверів будуть видалені після вказаної кількості днів, коли встановлено позитивне значення. Ця дія може бути незворотна. + custom_css: Ви можете застосувати користувацькі стилі у вебверсії Mastodon. + mascot: Змінює ілюстрацію в розширеному вебінтерфейсі. media_cache_retention_period: Завантажені медіафайли будуть видалені після вказаної кількості днів після встановлення додатного значення та повторного завантаження за запитом. + profile_directory: У каталозі профілів перераховані всі користувачі, які погодились бути видимими. + require_invite_text: Якщо реєстрація вимагає власноручного затвердження, зробіть текстове поле «Чому ви хочете приєднатися?» обов'язковим, а не додатковим + site_contact_email: Як люди можуть зв'язатися з вами для отримання правової допомоги або підтримки. + site_contact_username: Як люди можуть зв'язатися з вами у Mastodon. + site_extended_description: Будь-яка додаткова інформація, яка може бути корисною для відвідувачів і ваших користувачів. Може бути структурована за допомогою синтаксису Markdown. + site_short_description: Короткий опис, щоб допомогти однозначно ідентифікувати ваш сервер. Хто ним керує, для кого він потрібен? + site_terms: Використовуйте власну політику приватності або залиште поле порожнім, щоб використовувати усталене значення. Може бути структуровано за допомогою синтаксису Markdown. + site_title: Як люди можуть посилатися на ваш сервер, окрім його доменного імені. + theme: Тема, яку бачать відвідувачі, що вийшли з системи, та нові користувачі. + thumbnail: Зображення приблизно 2:1, що показується поряд з відомостями про ваш сервер. + timeline_preview: Зареєстровані відвідувачі зможуть переглядати останні публічні дописи, доступні на сервері. + trendable_by_default: Пропустити ручний огляд популярних матеріалів. Індивідуальні елементи все ще можна вилучити з популярних постфактум. + trends: Популярні показують, які дописи, хештеґи та новини набувають популярності на вашому сервері. form_challenge: current_password: Ви входите до безпечної зони imports: @@ -213,8 +230,28 @@ uk: warn: Сховати за попередженням form_admin_settings: backups_retention_period: Період утримання архіву користувача + bootstrap_timeline_accounts: Завжди рекомендувати новим користувачам ці облікові записи + closed_registrations_message: Показуване повідомлення, якщо реєстрація недоступна content_cache_retention_period: Час зберігання кешу контенту + custom_css: Користувацький CSS + mascot: Користувацький символ (застарілий) media_cache_retention_period: Період збереження кешу медіа + profile_directory: Увімкнути каталог профілів + registrations_mode: Хто може зареєструватися + require_invite_text: Для того, щоб приєднатися потрібна причина + show_domain_blocks: Показати заблоковані домени + show_domain_blocks_rationale: Показати чому домени були заблоковані + site_contact_email: Контактна адреса електронної пошти + site_contact_username: Ім'я контакта + site_extended_description: Розширений опис + site_short_description: Опис сервера + site_terms: Політика приватності + site_title: Назва сервера + theme: Стандартна тема + thumbnail: Мініатюра сервера + timeline_preview: Дозволити неавтентифікований доступ до публічних стрічок + trendable_by_default: Дозволити популярне без попереднього огляду + trends: Увімкнути популярні interactions: must_be_follower: Блокувати сповіщення від непідписаних людей must_be_following: Блокувати сповіщення від людей, на яких ви не підписані diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index 5b3b4fcce..004e5dfde 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -75,8 +75,25 @@ zh-TW: warn: 隱藏過濾內容於過濾器標題之警告後 form_admin_settings: backups_retention_period: 將已產生的使用者封存資料保存特定天數。 + bootstrap_timeline_accounts: 這些帳號將被釘選於新帳號跟隨推薦之上。 + closed_registrations_message: 於註冊關閉時顯示 content_cache_retention_period: 當設定成正值時,從其他伺服器而來的嘟文會於指定天數後被刪除。這項操作可能是不可逆的。 + custom_css: 您於 Mastodon 網頁版本中能套用客製化風格。 + mascot: 覆寫進階網頁介面中的圖例。 media_cache_retention_period: 當設定成正值時,已下載的多媒體檔案會於指定天數後被刪除,並且視需要重新下載。 + profile_directory: 個人資料目錄將會列出那些有選擇被發現的使用者。 + require_invite_text: 如果已設定為手動審核註冊,請將「加入原因」設定為必填項目。 + site_contact_email: 其他人如何聯繫您關於法律或支援之諮詢。 + site_contact_username: 其他人如何於 Mastodon 上聯繫您。 + site_extended_description: 任何其他可能對訪客或使用者有用的額外資訊。可由 Markdown 語法撰寫。 + site_short_description: 一段有助於辨別您伺服器的簡短說明。例如:誰運行該伺服器、該伺服器是提供給哪些人群? + site_terms: 使用您自己的隱私權政策,或者保留空白以使用預設值。可由 Markdown 語法撰寫。 + site_title: 除了網域外,其他人該如何指稱您的伺服器。 + theme: 未登入之訪客或新使用者所見之佈景主題。 + thumbnail: 大約 2:1 圖片會顯示於您伺服器資訊之旁。 + timeline_preview: 未登入之訪客能夠瀏覽此伺服器上最新的公開嘟文。 + trendable_by_default: 跳過手動審核熱門內容。仍能在登上熱門趨勢後移除個別內容。 + trends: 熱門趨勢將顯示於您伺服器上正在吸引大量注意力的嘟文、主題標籤、或者新聞。 form_challenge: current_password: 您正要進入安全區域 imports: @@ -213,8 +230,28 @@ zh-TW: warn: 隱藏於警告之後 form_admin_settings: backups_retention_period: 使用者封存資料保留期間 + bootstrap_timeline_accounts: 永遠推薦這些帳號給新使用者 + closed_registrations_message: 當註冊關閉時的客製化訊息 content_cache_retention_period: 內容快取資料保留期間 + custom_css: 自訂 CSS + mascot: 自訂吉祥物 (legacy) media_cache_retention_period: 多媒體快取資料保留期間 + profile_directory: 啟用個人資料目錄 + registrations_mode: 誰能註冊 + require_invite_text: 要求「加入原因」 + show_domain_blocks: 顯示封鎖的網域 + show_domain_blocks_rationale: 顯示網域被封鎖之原因 + site_contact_email: 聯絡 e-mail + site_contact_username: 聯絡人帳號 + site_extended_description: 進階描述 + site_short_description: 伺服器描述 + site_terms: 隱私權政策 + site_title: 伺服器名稱 + theme: 預設佈景主題 + thumbnail: 伺服器縮圖 + timeline_preview: 允許未登入使用者瀏覽公開時間軸 + trendable_by_default: 允許熱門趨勢直接顯示,不需經過審核 + trends: 啟用熱門趨勢 interactions: must_be_follower: 封鎖非跟隨者的通知 must_be_following: 封鎖您未跟隨之使用者的通知 diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 9b7fc25d6..e1b2ae99a 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -435,70 +435,15 @@ sk: empty: Žiadne pravidlá servera ešte neboli určené. title: Serverové pravidlá settings: - activity_api_enabled: - desc_html: Sčítanie miestne uverejnených príspevkov, aktívnych užívateľov, a nových registrácii, v týždenných intervaloch - title: Vydať hromadné štatistiky o užívateľskej aktivite - bootstrap_timeline_accounts: - desc_html: Ak je prezývok viacero, každú oddeľ čiarkou. Tieto účty budú zobrazené v odporúčaniach na sledovanie - title: Štandardní následovníci nových užívateľov - contact_information: - email: Pracovný email - username: Kontaktné užívateľské meno - custom_css: - desc_html: Uprav vzhľad pomocou CSS, ktoré je načítané na každej stránke - title: Vlastné CSS - default_noindex: - desc_html: Ovplyvňuje všetkých užívateľov, ktorí si toto nasavenie nezmenili sami - title: Vyraď užívateľov z indexovania vyhľadávačmi, ako východzie nastavenie domain_blocks: all: Všetkým disabled: Nikomu - title: Ukáž blokované domény users: Prihláseným, miestnym užívateľom - domain_blocks_rationale: - title: Ukáž zdôvodnenie - mascot: - desc_html: Zobrazované na viacerých stránkach. Odporúčaná veľkosť aspoň 293×205px. Pokiaľ nieje nahraté, bude zobrazený základný maskot. - title: Obrázok maskota - peers_api_enabled: - desc_html: Domény, na ktoré tento server už v rámci fediversa natrafil - title: Zverejni zoznam objavených serverov - preview_sensitive_media: - desc_html: Náhľad odkazov z iných serverov, bude zobrazený aj vtedy, keď sú médiá označené ako chúlostivé - title: Ukazuj aj chúlostivé médiá v náhľadoch OpenGraph - profile_directory: - desc_html: Povoľ užívateľom, aby mohli byť nájdení - title: Zapni profilový katalóg - registrations: - closed_message: - desc_html: Toto sa zobrazí na hlavnej stránke v prípade, že sú registrácie uzavreté. Možno tu použiť aj HTML kód - title: Správa o uzavretých registráciách registrations_mode: modes: approved: Pre registráciu je nutné povolenie none: Nikto sa nemôže registrovať open: Ktokoľvek sa môže zaregistrovať - title: Režím registrácií - site_description: - desc_html: Oboznamujúci paragraf na hlavnej stránke a pri meta tagoch. Opíš, čo robí tento Mastodon server špecifickým, a ďalej hocičo iné, čo považuješ za dôležité. Môžeš použiť HTML kód, hlavne <a> a <em>. - title: Popis servera - site_description_extended: - desc_html: Toto je vhodné miesto pre tvoje pravidlá o prevádzke, pokyny, podmienky a iné veci, ktorými je tvoj server špecifický. Je možné tu používať HTML tagy - title: Vlastné doplňujúce informácie - site_short_description: - desc_html: Zobrazené na bočnom paneli a pri meta tagoch. Popíš čo je Mastodon, a čo robí tento server iným, v jednom paragrafe. Pokiaľ toto necháš prázdne, bude tu zobrazený základný popis servera. - title: Krátky popis serveru - site_title: Názov servera - thumbnail: - desc_html: Používané pre náhľady cez OpenGraph a API. Doporučuje sa rozlišenie 1200x630px - title: Miniatúra servera - timeline_preview: - desc_html: Zobraziť verejnú nástenku na hlavnej stránke - title: Náhľad nástenky - title: Nastavenia stránky - trends: - desc_html: Verejne zobraz už schválené haštagy, ktoré práve trendujú - title: Populárne haštagy site_uploads: delete: Vymaž nahratý súbor destroyed_msg: Nahratie bolo zo stránky úspešne vymazané! diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 7b160ae51..12a263d92 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -695,79 +695,39 @@ sl: empty: Zaenkrat še ni opredeljenih pravil. title: Pravila strežnika settings: - activity_api_enabled: - desc_html: Številke lokalno objavljenih objav, aktivnih uporabnikov in novih registracij na tedenskih seznamih - title: Objavi združeno statistiko o dejavnosti uporabnikov - bootstrap_timeline_accounts: - desc_html: Več uporabniških imen ločite z vejico. Deluje samo na lokalnih in odklenjenih računih. Privzeto, ko je prazno, je pri vseh lokalnih skrbnikih. - title: Privzeta sledenja za nove uporabnike - contact_information: - email: Poslovna e-pošta - username: Uporabniško ime stika - custom_css: - desc_html: Spremeni videz z naloženim CSS na vsaki strani - title: CSS po meri - default_noindex: - desc_html: Vpliva na vse uporabnike, ki niso sami spremenili te nastavitve - title: Privzeto izvzemi uporabnike iz indeksiranja iskalnika + about: + manage_rules: Upravljaj pravila strežnika + preamble: Podrobneje opišite, kako upravljate, moderirate in financirate strežnik. + rules_hint: Na voljo je poseben prostor za pravila, ki jih naj spoštujejo vaši uporabniki. + title: O programu + appearance: + preamble: Prilagodite spletni vmesnik Mastodona. + title: Videz + branding: + title: Blagovne znamke + content_retention: + preamble: Nazdor nad hrambo vsebine uporabnikov v Mastodonu. + title: Hramba vsebin + discovery: + follow_recommendations: Sledi priporočilom + preamble: Izpostavljanje zanimivih vsebin je ključno za pridobivanje novih uporabnikov, ki morda ne poznajo nikogar na Mastodonu. Nadzirajte, kako različne funkcionalnosti razkritja delujejo na vašem strežniku. + profile_directory: Imenik profilov + public_timelines: Javne časovnice + title: Razkrivanje + trends: Trendi domain_blocks: all: Vsem disabled: Nikomur - title: Domenske bloke pokaži users: Prijavljenim krajevnim uporabnikom - domain_blocks_rationale: - title: Pokaži razlago - mascot: - desc_html: Prikazano na več straneh. Priporočena je najmanj 293 × 205 px. Ko ni nastavljen, se vrne na privzeto maskoto - title: Slika maskote - peers_api_enabled: - desc_html: Domene, na katere je ta strežnik naletel na fediverse-u - title: Objavi seznam odkritih strežnikov - preview_sensitive_media: - desc_html: Predogledi povezav na drugih spletiščih bodo prikazali sličico, tudi če je medij označen kot občutljiv - title: Prikaži občutljive medije v predogledih OpenGraph - profile_directory: - desc_html: Dovoli uporabnikom, da jih lahko odkrijejo - title: Omogoči imenik profilov registrations: - closed_message: - desc_html: Prikazano na prvi strani, ko so registracije zaprte. Lahko uporabite oznake HTML - title: Sporočilo o zaprti registraciji - require_invite_text: - desc_html: Če registracije zahtevajo ročno potrditev, nastavite vnos besedila pod »Zakaj se želite pridružiti?« za obveznega - title: Zahteva, da novi uprorabniki navedejo razlog, zakaj se želijo registrirati + preamble: Nadzirajte, kdo lahko ustvari račun na vašem strežniku. + title: Registracije registrations_mode: modes: approved: Potrebna je odobritev za prijavo none: Nihče se ne more prijaviti open: Vsakdo se lahko prijavi - title: Način registracije - site_description: - desc_html: Uvodni odstavek na API-ju. Opišite, zakaj je ta Mastodon strežnik poseben in karkoli pomembnega. Lahko uporabite HTML oznake, zlasti <a> in <em>. - title: Opis strežnika - site_description_extended: - desc_html: Dober kraj za vaš kodeks ravnanja, pravila, smernice in druge stvari, ki ločujejo vaš strežnik. Lahko uporabite oznake HTML - title: Razširjene informacije po meri - site_short_description: - desc_html: Prikazano v stranski vrstici in metaoznakah. V enem odstavku opišite, kaj je Mastodon in kaj naredi ta strežnik poseben. - title: Kratek opis strežnika - site_terms: - desc_html: Napišete lahko svoj pravilnik o zasebnosti. Uporabite lahko značke HTML. - title: Pravilnik o zasebnosti po meri - site_title: Ime strežnika - thumbnail: - desc_html: Uporablja se za predogled prek OpenGrapha in API-ja. Priporočamo 1200x630px - title: Sličica strežnika - timeline_preview: - desc_html: Prikaži javno časovnico na ciljni strani - title: Predogled časovnice - title: Nastavitve strani - trendable_by_default: - desc_html: Določeno vsebino v trendu je še vedno možno izrecno prepovedati - title: Dovoli trende brez predhodnega pregleda - trends: - desc_html: Javno prikaži poprej pregledano vsebino, ki je trenutno v trendu - title: Trendi + title: Nastavitve strežnika site_uploads: delete: Izbriši naloženo datoteko destroyed_msg: Prenos na strežnik uspešno izbrisan! diff --git a/config/locales/sq.yml b/config/locales/sq.yml index eea76f259..8010f4930 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -664,79 +664,15 @@ sq: empty: S’janë përcaktuar ende rregulla shërbyesi. title: Rregulla shërbyesi settings: - activity_api_enabled: - desc_html: Numër postimesh të postuara lokalisht, përdorues aktivë, dhe regjistrime të reja në kosha javorë - title: Botoni statistika përmbledhëse mbi veprimtarinë e përdoruesve te API - bootstrap_timeline_accounts: - desc_html: Emrat e përdoruesve ndajini prej njëri-tjetrit me presje. Për këto llogari do të garantohet shfaqja te rekomandime ndjekjeje - title: Rekomandoji këto llogari për përdorues të rinj - contact_information: - email: Email biznesi - username: Emër përdoruesi kontakti - custom_css: - desc_html: Ndryshojeni pamjen me CSS të ngarkuar në çdo faqe - title: CSS Vetjake - default_noindex: - desc_html: Prek krejt përdoruesi që s’e kanë ndryshuar vetë këtë rregullim - title: Lejo, si parazgjedhje, lënien e përdoruesve jashtë indeksimi nga motorë kërkimesh domain_blocks: all: Për këdo disabled: Për askënd - title: Shfaq bllokime përkatësish users: Për përdorues vendorë që kanë bërë hyrjen - domain_blocks_rationale: - title: Shfaq arsye - mascot: - desc_html: E shfaqur në faqe të shumta. Këshillohet të paktën 293x205. Kur nuk caktohet gjë, përdoret simboli parazgjedhje - title: Figurë simboli - peers_api_enabled: - desc_html: Emra përkatësish që ka hasur në fedivers ky shërbyes - title: Boto listë shërbyesish të gjetur - preview_sensitive_media: - desc_html: Në sajte të tjera, paraparjet e lidhjeve do të shfaqin një miniaturë, edhe pse medias i është vënë shenjë si rezervat - title: Shfaq në paraparje OpenGraph media me shenjën rezervat - profile_directory: - desc_html: Lejoju përdoruesve të jenë të zbulueshëm - title: Aktivizo drejtori profilesh - registrations: - closed_message: - desc_html: E shfaqur në faqen ballore, kur regjistrimet janë të mbyllura. Mund të përdorni etiketa HTML - title: Mesazh mbylljeje regjistrimesh - require_invite_text: - desc_html: Kur regjistrimet lypin miratim dorazi, tekstin e kërkesës për ftesë “Pse doni të merrni pjesë?” bëje të detyrueshëm, në vend se opsional - title: Kërkoju përdoruesve të rinj të plotësojnë doemos një tekst kërkese për ftesë registrations_mode: modes: approved: Për regjistrim, lypset miratimi none: S’mund të regjistrohet ndokush open: Mund të regjistrohet gjithkush - title: Mënyrë regjistrimi - site_description: - desc_html: Paragraf hyrës te faqja ballore. Përshkruani ç’e bën special këtë shërbyes Mastodon dhe çfarëdo gjëje tjetër të rëndësishme. Mund të përdorni etiketa HTML, veçanërisht <a> dhe <em>. - title: Përshkrim shërbyesi - site_description_extended: - desc_html: Një vend i mirë për kodin e sjelljes në shërbyesin tuaj, rregulla, udhëzime dhe gjëra të tjera që e bëjnë të veçantë këtë shërbyes. Mund të përdorni etiketa HTML - title: Informacion i zgjeruar vetjak - site_short_description: - desc_html: E shfaqur në anështyllë dhe etiketa meta. Përshkruani në një paragraf të vetëm ç’është Mastodon-i dhe ç’e bën special këtë shërbyes. Në u lëntë i zbrazët, për shërbyesin do të përdoret përshkrimi parazgjedhje. - title: Përshkrim i shkurtër shërbyesi - site_terms: - desc_html: Mund të shkruani rregullat tuaja të privatësisë. Mundeni të përdorni etiketa HTML - title: Rregulla vetjake privatësie - site_title: Emër shërbyesi - thumbnail: - desc_html: I përdorur për paraparje përmes OpenGraph-it dhe API-t. Këshillohet 1200x630px - title: Miniaturë shërbyesi - timeline_preview: - desc_html: Shfaqni lidhje te rrjedhë kohore publike në faqen hyrëse dhe lejoni te rrjedhë kohore publike hyrje API pa mirëfilltësim - title: Lejo në rrjedhë kohore publike hyrje pa mirëfilltësim - title: Rregullime sajti - trendable_by_default: - desc_html: Lënda specifike në modë prapë mund të ndalohet shprehimisht - title: Lejoni prirje pa shqyrtim paraprak - trends: - desc_html: Shfaqni publikisht hashtag-ë të shqyrtuar më parë që janë popullorë tani - title: Hashtag-ë popullorë tani site_uploads: delete: Fshi kartelën e ngarkuar destroyed_msg: Ngarkimi në sajt u fshi me sukses! diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index 7506c4d4d..0d4b6581d 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -145,31 +145,6 @@ sr-Latn: resolved: Rešeni title: Prijave unresolved: Nerešeni - settings: - bootstrap_timeline_accounts: - desc_html: Odvojite više korisničkih imena zarezom. Radi samo za lokalne i otključane naloge. Ako je prazno, onda se odnosi na sve lokalne administratore. - title: Nalozi za automatsko zapraćivanje za nove korisnike - contact_information: - email: Poslovna e-pošta - username: Kontakt korisničko ime - registrations: - closed_message: - desc_html: Prikazuje se na glavnoj strani kada je instanca zatvorena za registracije. Možete koristiti HTML tagove - title: Poruka o zatvorenoj registraciji - site_description: - desc_html: Uvodni pasus na naslovnoj strani i u meta HTML tagovima. Možete koristiti HTML tagove, konkretno <a> i <em>. - title: Opis instance - site_description_extended: - desc_html: Dobro mesto za vaš kod ponašanja, pravila, smernice i druge stvari po kojima se Vaša instanca razlikuje. Možete koristiti HTML tagove - title: Proizvoljne dodatne informacije - site_title: Ime instance - thumbnail: - desc_html: Koristi se za preglede kroz OpenGraph i API. Preporučuje se 1200x630px - title: Sličica instance - timeline_preview: - desc_html: Prikaži javnu lajnu na početnoj strani - title: Pregled lajne - title: Postavke sajta statuses: back_to_account: Nazad na stranu naloga media: diff --git a/config/locales/sr.yml b/config/locales/sr.yml index 89f8bc631..36bd3ebf4 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -233,52 +233,6 @@ sr: unassign: Уклони доделу unresolved: Нерешене updated_at: Ажурирана - settings: - activity_api_enabled: - desc_html: Бројеви локално објављених статуса, активних корисника и нових регистрација по недељама - title: Објављуј агрегиране статистике о корисничким активностима - bootstrap_timeline_accounts: - desc_html: Одвојите више корисничких имена зарезом. Ради само за локалне и откључане налоге. Ако је празно, онда се односи на све локалне администраторе. - title: Налози за аутоматско запраћивање за нове кориснике - contact_information: - email: Пословна е-пошта - username: Контакт корисничко име - custom_css: - desc_html: Промени изглед на свакој страни када се CSS учита - title: Произвољни CSS - mascot: - desc_html: Приказано на више страна. Препоручено је бар 293×205px. Када није постављена, користи се подразумевана маскота - title: Слика маскоте - peers_api_enabled: - desc_html: Имена домена које је ова инстанца срела у федиверсу - title: Објављуј списак откривених инстанци - preview_sensitive_media: - desc_html: Преглед веза на другим веб страницама ће приказати иконицу чак и ако је медиј означен као осетљиво - title: Покажи осетљив медиј у ОпенГраф прегледу - profile_directory: - desc_html: Дозволи корисницима да буду откривени - title: Омогући директоријум налога - registrations: - closed_message: - desc_html: Приказује се на главној страни када је инстанца затворена за регистрације. Можете користити HTML тагове - title: Порука о затвореној регистрацији - site_description: - desc_html: Уводни пасус на насловној страни и у meta HTML таговима. Можете користити HTML тагове, конкретно <a> и <em>. - title: Опис инстанце - site_description_extended: - desc_html: Добро место за ваш код понашања, правила, смернице и друге ствари по којима се Ваша инстанца разликује. Можете користити HTML тагове - title: Произвољне додатне информације - site_short_description: - desc_html: Приказано у изборнику са стране и у мета ознакама. Опиши шта је Мастодон и шта чини овај сервер посебним у једном пасусу. Ако остане празно, вратиће се првобитни опис инстанце. - title: Кратак опис инстанце - site_title: Име инстанце - thumbnail: - desc_html: Користи се за прегледе кроз OpenGraph и API. Препоручује се 1200x630px - title: Сличица инстанце - timeline_preview: - desc_html: Прикажи јавну лајну на почетној страни - title: Преглед лајне - title: Поставке сајта statuses: back_to_account: Назад на страну налога media: diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 806625211..485fab59c 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -449,69 +449,15 @@ sv: edit: Ändra regel title: Serverns regler settings: - activity_api_enabled: - desc_html: Räkning av lokalt postade statusar, aktiva användare och nyregistreringar per vecka - title: Publicera uppsamlad statistik om användaraktivitet - bootstrap_timeline_accounts: - desc_html: Separera flera användarnamn med kommatecken. Endast lokala och olåsta konton kommer att fungera. Standard när det är tomt och alla är lokala administratörer. - title: Standard att följa för nya användare - contact_information: - email: Företag E-post - username: Användarnamn för kontakt - custom_css: - desc_html: Ändra utseendet genom CSS laddat på varje sida - title: Anpassad CSS - default_noindex: - desc_html: Påverkar alla användare som inte har ändrat denna inställning själva - title: Undantag användare från sökmotorindexering som standard domain_blocks: all: Till alla disabled: För ingen - title: Visa domän-blockeringar users: För inloggade lokala användare - domain_blocks_rationale: - title: Visa motiv - mascot: - title: Maskot bild - peers_api_enabled: - desc_html: Domännamn denna instans har påträffat i fediverse - title: Publicera lista över upptäckta instanser - preview_sensitive_media: - title: Visa känsligt media i OpenGraph-förhandsvisningar - profile_directory: - desc_html: Tillåt användare att upptäckas - title: Aktivera profil-mapp - registrations: - closed_message: - desc_html: Visas på framsidan när registreringen är stängd. Du kan använda HTML-taggar - title: Stängt registreringsmeddelande - require_invite_text: - desc_html: När nyregistrering kräver manuellt godkännande, gör det obligatoriskt att fylla i text i fältet "Varför vill du gå med?" - title: Kräv att nya användare fyller i en inbjudningsförfrågan registrations_mode: modes: approved: Godkännande krävs för registrering none: Ingen kan registrera open: Alla kan registrera - title: Registreringsläge - site_description: - desc_html: Inledande stycke på framsidan och i metataggar. Du kan använda HTML-taggar, i synnerhet <a> och <em>. - title: Instansbeskrivning - site_description_extended: - desc_html: Ett bra ställe för din uppförandekod, regler, riktlinjer och andra saker som stämmer med din instans. Du kan använda HTML-taggar - title: Egentillverkad utökad information - site_short_description: - title: Kort beskrivning av servern - site_title: Namn på instans - thumbnail: - desc_html: Används för förhandsgranskningar via OpenGraph och API. 1200x630px rekommenderas - title: Instans tumnagelbild - timeline_preview: - desc_html: Visa offentlig tidslinje på landingsidan - title: Förhandsgranska tidslinje - title: Sidans inställningar - trends: - title: Trendande hashtaggar site_uploads: delete: Radera uppladdad fil statuses: diff --git a/config/locales/th.yml b/config/locales/th.yml index 123d2c342..c4a83a048 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -641,77 +641,34 @@ th: empty: ยังไม่ได้กำหนดกฎของเซิร์ฟเวอร์ title: กฎของเซิร์ฟเวอร์ settings: - activity_api_enabled: - desc_html: จำนวนโพสต์ที่เผยแพร่ในเซิร์ฟเวอร์, ผู้ใช้ที่ใช้งานอยู่ และการลงทะเบียนใหม่ในบักเก็ตรายสัปดาห์ - title: เผยแพร่สถิติรวมเกี่ยวกับกิจกรรมผู้ใช้ใน API - bootstrap_timeline_accounts: - desc_html: แยกหลายชื่อผู้ใช้ด้วยจุลภาค จะรับประกันว่าจะแสดงบัญชีเหล่านี้ในคำแนะนำการติดตาม - title: แนะนำบัญชีเหล่านี้ให้กับผู้ใช้ใหม่ - contact_information: - email: อีเมลธุรกิจ - username: ชื่อผู้ใช้ในการติดต่อ - custom_css: - desc_html: ปรับเปลี่ยนรูปลักษณ์ด้วย CSS ที่โหลดในทุกหน้า - title: CSS ที่กำหนดเอง - default_noindex: - desc_html: มีผลต่อผู้ใช้ทั้งหมดที่ไม่ได้เปลี่ยนการตั้งค่านี้ด้วยตนเอง - title: เลือกให้ผู้ใช้ไม่รับการทำดัชนีโดยเครื่องมือค้นหาเป็นค่าเริ่มต้น + about: + manage_rules: จัดการกฎของเซิร์ฟเวอร์ + title: เกี่ยวกับ + appearance: + preamble: ปรับแต่งส่วนติดต่อเว็บของ Mastodon + title: ลักษณะที่ปรากฏ + branding: + title: ตราสินค้า + content_retention: + title: การเก็บรักษาเนื้อหา + discovery: + follow_recommendations: คำแนะนำการติดตาม + profile_directory: ไดเรกทอรีโปรไฟล์ + public_timelines: เส้นเวลาสาธารณะ + title: การค้นพบ + trends: แนวโน้ม domain_blocks: all: ให้กับทุกคน disabled: ให้กับไม่มีใคร - title: แสดงการปิดกั้นโดเมน users: ให้กับผู้ใช้ในเซิร์ฟเวอร์ที่เข้าสู่ระบบ - domain_blocks_rationale: - title: แสดงคำชี้แจงเหตุผล - mascot: - desc_html: แสดงในหลายหน้า อย่างน้อย 293×205px ที่แนะนำ เมื่อไม่ได้ตั้ง กลับไปใช้มาสคอตเริ่มต้น - title: ภาพมาสคอต - peers_api_enabled: - desc_html: ชื่อโดเมนที่เซิร์ฟเวอร์นี้ได้พบในจักรวาลสหพันธ์ - title: เผยแพร่รายการเซิร์ฟเวอร์ที่ค้นพบใน API - preview_sensitive_media: - desc_html: การแสดงตัวอย่างลิงก์ในเว็บไซต์อื่น ๆ จะแสดงภาพขนาดย่อแม้ว่าจะมีการทำเครื่องหมายสื่อว่าละเอียดอ่อน - title: แสดงสื่อที่ละเอียดอ่อนในการแสดงตัวอย่าง OpenGraph - profile_directory: - desc_html: อนุญาตให้ผู้ใช้สามารถค้นพบได้ - title: เปิดใช้งานไดเรกทอรีโปรไฟล์ registrations: - closed_message: - desc_html: แสดงในหน้าแรกเมื่อปิดการลงทะเบียน คุณสามารถใช้แท็ก HTML - title: ข้อความการปิดการลงทะเบียน - require_invite_text: - title: ต้องให้ผู้ใช้ใหม่ป้อนเหตุผลที่จะเข้าร่วม + title: การลงทะเบียน registrations_mode: modes: approved: ต้องการการอนุมัติสำหรับการลงทะเบียน none: ไม่มีใครสามารถลงทะเบียน open: ใครก็ตามสามารถลงทะเบียน - title: โหมดการลงทะเบียน - site_description: - desc_html: ย่อหน้าเกริ่นนำใน API อธิบายถึงสิ่งที่ทำให้เซิร์ฟเวอร์ Mastodon นี้พิเศษและสิ่งอื่นใดที่สำคัญ คุณสามารถใช้แท็ก HTML โดยเฉพาะอย่างยิ่ง <a> และ <em> - title: คำอธิบายเซิร์ฟเวอร์ - site_description_extended: - desc_html: สถานที่ที่ดีสำหรับแนวทางปฏิบัติ, กฎ, หลักเกณฑ์ และสิ่งอื่น ๆ ของคุณที่ทำให้เซิร์ฟเวอร์ของคุณแตกต่าง คุณสามารถใช้แท็ก HTML - title: ข้อมูลแบบขยายที่กำหนดเอง - site_short_description: - desc_html: แสดงในแถบข้างและแท็กเมตา อธิบายว่า Mastodon คืออะไรและสิ่งที่ทำให้เซิร์ฟเวอร์นี้พิเศษในย่อหน้าเดียว - title: คำอธิบายเซิร์ฟเวอร์แบบสั้น - site_terms: - desc_html: คุณสามารถเขียนนโยบายความเป็นส่วนตัวของคุณเอง คุณสามารถใช้แท็ก HTML - title: นโยบายความเป็นส่วนตัวที่กำหนดเอง - site_title: ชื่อเซิร์ฟเวอร์ - thumbnail: - desc_html: ใช้สำหรับการแสดงตัวอย่างผ่าน OpenGraph และ API 1200x630px ที่แนะนำ - title: ภาพขนาดย่อเซิร์ฟเวอร์ - timeline_preview: - desc_html: แสดงลิงก์ไปยังเส้นเวลาสาธารณะในหน้าเริ่มต้นและอนุญาตการเข้าถึง API ไปยังเส้นเวลาสาธารณะโดยไม่มีการรับรองความถูกต้อง - title: อนุญาตการเข้าถึงเส้นเวลาสาธารณะที่ไม่ได้รับรองความถูกต้อง - title: การตั้งค่าไซต์ - trendable_by_default: - title: อนุญาตแนวโน้มโดยไม่มีการตรวจทานล่วงหน้า - trends: - desc_html: แสดงเนื้อหาที่ตรวจทานแล้วก่อนหน้านี้ที่กำลังนิยมในปัจจุบันเป็นสาธารณะ - title: แนวโน้ม + title: การตั้งค่าเซิร์ฟเวอร์ site_uploads: delete: ลบไฟล์ที่อัปโหลด destroyed_msg: ลบการอัปโหลดไซต์สำเร็จ! @@ -864,7 +821,7 @@ th: advanced_web_interface: ส่วนติดต่อเว็บขั้นสูง animations_and_accessibility: ภาพเคลื่อนไหวและการช่วยการเข้าถึง confirmation_dialogs: กล่องโต้ตอบการยืนยัน - discovery: ค้นพบ + discovery: การค้นพบ localization: body: Mastodon ได้รับการแปลโดยอาสาสมัคร guide_link: https://crowdin.com/project/mastodon/th diff --git a/config/locales/tr.yml b/config/locales/tr.yml index f18ccd234..5035c6ae6 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -667,79 +667,15 @@ tr: empty: Henüz bir sunucu kuralı tanımlanmadı. title: Sunucu kuralları settings: - activity_api_enabled: - desc_html: Yerel olarak yayınlanan durumların, aktif kullanıcıların, ve haftalık kovalardaki yeni kayıtların sayısı - title: Kullanıcı etkinliği hakkında toplu istatistikler yayınlayın - bootstrap_timeline_accounts: - desc_html: Birden fazla kullanıcı adını virgülle ayırın. Yalnızca yerel ve kilitlenmemiş hesaplar geçerlidir. Boş olduğunda varsayılan tüm yerel yöneticilerdir. - title: Yeni kullanıcılar için varsayılan takipler - contact_information: - email: Herkese açık e-posta adresiniz - username: Bir kullanıcı adı giriniz - custom_css: - desc_html: Görünümü her sayfada yüklenecek CSS ile değiştirin - title: Özel CSS - default_noindex: - desc_html: Bu ayarı kendileri değiştirmeyen tüm kullanıcıları etkiler - title: Varsayılan olarak kullanıcıları arama motoru indekslemesinin dışında tut domain_blocks: all: Herkes için disabled: Hiç kimseye - title: Engellenen alan adlarını göster users: Oturum açan yerel kullanıcılara - domain_blocks_rationale: - title: Gerekçeyi göster - mascot: - desc_html: Birden fazla sayfada görüntülenir. En az 293x205px önerilir. Ayarlanmadığında, varsayılan maskot kullanılır - title: Maskot görseli - peers_api_enabled: - desc_html: Bu sunucunun fediverse'te karşılaştığı alan adları - title: Keşfedilen sunucuların listesini yayınla - preview_sensitive_media: - desc_html: Medya duyarlı olarak işaretlenmiş olsa bile, diğer web sitelerindeki bağlantı ön izlemeleri küçük resim gösterecektir - title: OpenGraph ön izlemelerinde hassas medyayı göster - profile_directory: - desc_html: Kullanıcıların keşfedilebilir olmasına izin ver - title: Profil dizinini etkinleştir - registrations: - closed_message: - desc_html: Kayıt alımları kapatıldığında ana sayfada görüntülenecek mesajdır.
HTML etiketleri kullanabilirsiniz - title: Kayıt alımları kapatılma mesajı - require_invite_text: - desc_html: Kayıtlar elle doğrulama gerektiriyorsa, "Neden katılmak istiyorsunuz?" metin girdisini isteğe bağlı yerine zorunlu yapın - title: Yeni kullanıcıların katılmak için bir gerekçe sunmasını gerektir registrations_mode: modes: approved: Kayıt için onay gerekli none: Hiç kimse kayıt olamaz open: Herkes kaydolabilir - title: Kayıt modu - site_description: - desc_html: Ana sayfada paragraf olarak görüntülenecek bilgidir.
Özellikle <a> ve <em> olmak suretiyle HTML etiketlerini kullanabilirsiniz. - title: Site açıklaması - site_description_extended: - desc_html: Harici bilgi sayfasında gösterilir.
HTML etiketleri girebilirsiniz - title: Sunucu hakkında detaylı bilgi - site_short_description: - desc_html: Kenar çubuğunda ve meta etiketlerinde görüntülenir. Mastodon'un ne olduğunu ve bu sunucuyu özel kılan şeyleri tek bir paragrafta açıklayın. - title: Kısa sunucu açıklaması - site_terms: - desc_html: Kendi gizlilik politikanızı yazabilirsiniz. HTML etiketlerini kullanabilirsiniz - title: Özel gizlilik politikası - site_title: Site başlığı - thumbnail: - desc_html: OpenGraph ve API ile ön izlemeler için kullanılır. 1200x630px tavsiye edilir - title: Sunucu küçük resmi - timeline_preview: - desc_html: Açılış sayfasında genel zaman çizelgesini görüntüle - title: Zaman çizelgesi önizlemesi - title: Site Ayarları - trendable_by_default: - desc_html: Belirli öne çıkan içeriğe yine de açıkça izin verilmeyebilir - title: Ön inceleme yapmadan öne çıkmalara izin ver - trends: - desc_html: Şu anda trend olan ve daha önce incelenen etiketleri herkese açık olarak göster - title: Gündem etiketleri site_uploads: delete: Yüklenen dosyayı sil destroyed_msg: Site yüklemesi başarıyla silindi! diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 93c4724b4..0b7679eb1 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -695,79 +695,40 @@ uk: empty: Жодних правил сервера ще не визначено. title: Правила сервера settings: - activity_api_enabled: - desc_html: Кількість локальних постів, активних та нових користувачів у тижневих розрізах - title: Публікація агрегованої статистики про активність користувачів - bootstrap_timeline_accounts: - desc_html: Розділяйте імена користувачів комами. Працюватимуть тільки локальні і розблоковані облікові записи. Якщо порожньо, то типово це всі локальні адміністратори. - title: Типові підписки для нових користувачів - contact_information: - email: Введіть публічний email - username: Введіть ім'я користувача - custom_css: - desc_html: Відобразити вигляд, коли CSS завантажено для кожної сторінки - title: Користувацький CSS - default_noindex: - desc_html: Впливає на усіх користувачів, які не змінили це настроювання самостійно - title: Виключити користувачів з індексації пошуковими системами за замовчуванням + about: + manage_rules: Керувати правилами сервера + preamble: Надати детальну інформацію про те, як працює сервер, модерується та фінансується. + rules_hint: Виділена ділянка для правил, яких повинні дотримуватись ваші користувачі. + title: Про застосунок + appearance: + preamble: Налаштування вебінтерфейсу Mastodon. + title: Вигляд + branding: + preamble: Брендинг вашого сервера відрізняє його від інших серверів в мережі. Ця інформація може показуватися в різних середовищах, таких як вебінтерфейс Mastodon, застосунки, у попередньому перегляді посилань на інші вебсайти та в застосунках обміну повідомленнями. Тому краще, щоб ця інформація була чіткою, короткою та лаконічною. + title: Брендинг + content_retention: + preamble: Контролюйте, як зберігаються користувацькі матеріали в Mastodon. + title: Зберігання вмісту + discovery: + follow_recommendations: Поради щодо підписок + preamble: Показ цікавих матеріалів відіграє важливу роль у залученні нових користувачів, які, можливо, не знають нікого з Mastodon. Контролюйте роботу різних функцій виявлення на вашому сервері. + profile_directory: Каталог профілів + public_timelines: Публічна стрічка + title: Виявлення + trends: Популярні domain_blocks: all: Всi disabled: Нікого - title: Показати, які домени заблоковані users: Для авторизованих локальних користувачів - domain_blocks_rationale: - title: Обґрунтування - mascot: - desc_html: Зображується на декількох сторінках. Щонайменше 293×205 пікселів рекомендовано. Якщо не вказано, буде використано персонаж за замовчуванням - title: Талісман - peers_api_enabled: - desc_html: Доменні ім'я, які сервер знайшов у федесвіті - title: Опублікувати список знайдених серверів в API - preview_sensitive_media: - desc_html: Передпоказ посилання на інших сайтах буде відображати мініатюру навіть якщо медіа відмічене як дражливе - title: Показувати дражливе медіа у передпоказах OpenGraph - profile_directory: - desc_html: Дозволити користувачам бути видимими - title: Увімкнути каталог профілів registrations: - closed_message: - desc_html: Відображається на титульній сторінці, коли реєстрація закрита
Можна використовувати HTML-теги - title: Повідомлення про закриту реєстрацію - require_invite_text: - desc_html: Якщо реєстрація вимагає власноручного затвердження, зробіть текстове поле «Чому ви хочете приєднатися?» обов'язковим, а не додатковим - title: Вимагати повідомлення причини приєднання від нових користувачів + preamble: Контролюйте, хто може створити обліковий запис на вашому сервері. + title: Реєстрації registrations_mode: modes: approved: Для входу потрібне схвалення none: Ніхто не може увійти open: Будь-хто може увійти - title: Режим реєстрації - site_description: - desc_html: Відображається у якості параграфа на титульній сторінці та використовується у якості мета-тега.
Можна використовувати HTML-теги, особливо <a> і <em>. - title: Опис сервера - site_description_extended: - desc_html: Відображається на сторінці додаткової информації
Можна використовувати HTML-теги - title: Розширений опис сайту - site_short_description: - desc_html: Відображається в бічній панелі та мета-тегах. Опишіть, що таке Mastodon і що робить цей сервер особливим, в одному абзаці. - title: Короткий опис сервера - site_terms: - desc_html: Ви можете писати власну політику конфіденційності самостійно. Ви можете використовувати HTML-теги - title: Особлива політика конфіденційності - site_title: Назва сайту - thumbnail: - desc_html: Використовується для передпоказів через OpenGraph та API. Бажано розміром 1200х640 пікселів - title: Мініатюра сервера - timeline_preview: - desc_html: Показувати публічну стрічку на головній сторінці - title: Передпоказ фіду - title: Налаштування сайту - trendable_by_default: - desc_html: Конкретні популярні матеріали все одно можуть бути явно відхилені - title: Дозволити популярне без попереднього огляду - trends: - desc_html: Відображати розглянуті хештеґи, які популярні зараз - title: Популярні хештеги + title: Налаштування сервера site_uploads: delete: Видалити завантажений файл destroyed_msg: Завантаження сайту успішно видалено! diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 3252840ca..50e5e5f35 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -653,79 +653,15 @@ vi: empty: Chưa có quy tắc máy chủ. title: Quy tắc máy chủ settings: - activity_api_enabled: - desc_html: Thu thập số lượng tút được đăng, người dùng hoạt động và người dùng đăng ký mới hàng tuần - title: Công khai số liệu thống kê về hoạt động người dùng trong API - bootstrap_timeline_accounts: - desc_html: Tách tên người dùng bằng dấu phẩy. Những người dùng này sẽ xuất hiện trong mục gợi ý theo dõi - title: Gợi ý theo dõi cho người dùng mới - contact_information: - email: Email liên hệ - username: Tên tài khoản liên hệ - custom_css: - desc_html: Sửa đổi giao diện với CSS trên mỗi trang - title: Tùy chỉnh CSS - default_noindex: - desc_html: Ảnh hưởng đến tất cả người dùng không tự thay đổi cài đặt này - title: Mặc định người dùng không xuất hiện trong công cụ tìm kiếm domain_blocks: all: Tới mọi người disabled: Không ai - title: Hiển thị khối miền users: Để đăng nhập người dùng cục bộ - domain_blocks_rationale: - title: Hiển thị lý do - mascot: - desc_html: Hiển thị trên nhiều trang. Kích cỡ tối thiểu 293 × 205px. Mặc định dùng linh vật Mastodon - title: Logo máy chủ - peers_api_enabled: - desc_html: Tên miền mà máy chủ này đã kết giao trong mạng liên hợp - title: Công khai danh sách những máy chủ đã khám phá trong API - preview_sensitive_media: - desc_html: Liên kết xem trước trên các trang web khác sẽ hiển thị hình thu nhỏ ngay cả khi phương tiện được đánh dấu là nhạy cảm - title: Hiển thị phương tiện nhạy cảm trong bản xem trước OpenGraph - profile_directory: - desc_html: Cho phép tìm kiếm người dùng - title: Cho phép hiện danh sách thành viên - registrations: - closed_message: - desc_html: Hiển thị trên trang chủ khi đăng ký được đóng lại. Bạn có thể viết bằng thẻ HTML - title: Thông điệp báo máy chủ đã ngừng đăng ký - require_invite_text: - desc_html: Khi chọn phê duyệt người dùng thủ công, hiện “Tại sao bạn muốn đăng ký?” thay cho tùy chọn nhập - title: Người đăng ký mới phải nhập mã mời tham gia registrations_mode: modes: approved: Yêu cầu phê duyệt để đăng ký none: Không ai có thể đăng ký open: Bất cứ ai cũng có thể đăng ký - title: Chế độ đăng ký - site_description: - desc_html: Nội dung giới thiệu về máy chủ. Mô tả những gì làm cho máy chủ Mastodon này đặc biệt và bất cứ điều gì quan trọng khác. Bạn có thể dùng các thẻ HTML, đặc biệt là <a><em>. - title: Mô tả máy chủ - site_description_extended: - desc_html: Bạn có thể tạo thêm các mục như quy định chung, hướng dẫn và những thứ khác liên quan tới máy chủ của bạn. Dùng thẻ HTML - title: Thông tin bổ sung - site_short_description: - desc_html: Hiển thị trong thanh bên và thẻ meta. Mô tả Mastodon là gì và điều gì làm cho máy chủ này trở nên đặc biệt trong một đoạn văn duy nhất. - title: Mô tả máy chủ ngắn - site_terms: - desc_html: Bạn có thể tự soạn chính sách bảo mật của riêng bạn. Sử dụng HTML - title: Sửa chính sách bảo mật - site_title: Tên máy chủ - thumbnail: - desc_html: Bản xem trước thông qua OpenGraph và API. Khuyến nghị 1200x630px - title: Hình thu nhỏ của máy chủ - timeline_preview: - desc_html: Hiển thị dòng thời gian công khai trên trang đích và cho phép API truy cập vào dòng thời gian công khai mà không cần cho phép - title: Cho phép truy cập vào dòng thời gian công cộng không cần cho phép - title: Cài đặt trang web - trendable_by_default: - desc_html: Nội dung xu hướng cụ thể vẫn có thể bị cấm một cách rõ ràng - title: Cho phép xu hướng mà không cần xem xét trước - trends: - desc_html: Hiển thị công khai các hashtag được xem xét trước đây hiện đang là xu hướng - title: Hashtag xu hướng site_uploads: delete: Xóa tập tin đã tải lên destroyed_msg: Đã xóa tập tin tải lên thành công! diff --git a/config/locales/zgh.yml b/config/locales/zgh.yml index 2da3b538c..d29daf18c 100644 --- a/config/locales/zgh.yml +++ b/config/locales/zgh.yml @@ -61,9 +61,6 @@ zgh: notes: delete: ⴽⴽⵙ status: ⴰⴷⴷⴰⴷ - settings: - site_title: ⵉⵙⵎ ⵏ ⵓⵎⴰⴽⴽⴰⵢ - title: ⵜⵉⵙⵖⴰⵍ ⵏ ⵡⴰⵙⵉⵜ statuses: media: title: ⵉⵙⵏⵖⵎⵉⵙⵏ diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index fd6925a9f..14c69415e 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -651,79 +651,15 @@ zh-CN: empty: 尚未定义服务器规则。 title: 实例规则 settings: - activity_api_enabled: - desc_html: 本站一周内的嘟文数、活跃用户数以及新用户数 - title: 公开用户活跃度的统计数据 - bootstrap_timeline_accounts: - desc_html: 用半角逗号分隔多个用户名。这些账户一定会在推荐关注中展示。 - title: 新用户推荐关注 - contact_information: - email: 用于联系的公开电子邮件地址 - username: 用于联系的公开用户名 - custom_css: - desc_html: 通过 CSS 代码调整所有页面的显示效果 - title: 自定义 CSS - default_noindex: - desc_html: 影响所有尚未更改此设置的用户 - title: 默认不让用户被搜索引擎索引 domain_blocks: all: 对所有人 disabled: 不对任何人 - title: 查看域名屏蔽 users: 对本地已登录用户 - domain_blocks_rationale: - title: 显示理由 - mascot: - desc_html: 用于在首页展示。推荐分辨率 293×205px 以上。未指定的情况下将使用默认吉祥物。 - title: 吉祥物图像 - peers_api_enabled: - desc_html: 截至目前本服务器在联邦宇宙中已发现的域名 - title: 公开已知实例的列表 - preview_sensitive_media: - desc_html: 无论媒体文件是否标记为敏感内容,站外链接预览始终呈现为缩略图。 - title: 在 OpenGraph 预览中显示敏感媒体内容 - profile_directory: - desc_html: 允许用户被发现 - title: 启用用户目录 - registrations: - closed_message: - desc_html: 本站关闭注册期间的提示信息。可以使用 HTML 标签 - title: 关闭注册时的提示信息 - require_invite_text: - desc_html: 当注册需要手动批准时,将“你为什么想要加入?”设为必填项 - title: 要求新用户填写申请注册的原因 registrations_mode: modes: approved: 注册时需要批准 none: 关闭注册 open: 开放注册 - title: 注册模式 - site_description: - desc_html: 首页上的介绍文字。 描述一下本 Mastodon 实例的特殊之处以及其他重要信息。可以使用 HTML 标签,包括 <a><em> 。 - title: 本站简介 - site_description_extended: - desc_html: 可以填写行为守则、规定、指南或其他本站特有的内容。可以使用 HTML 标签 - title: 本站详细介绍 - site_short_description: - desc_html: 会在在侧栏和元数据标签中显示。可以用一小段话描述 Mastodon 是什么,以及本服务器的特点。 - title: 服务器一句话介绍 - site_terms: - desc_html: 您可以写自己的隐私政策。您可以使用 HTML 标签 - title: 自定义隐私政策 - site_title: 本站名称 - thumbnail: - desc_html: 用于在 OpenGraph 和 API 中显示预览图。推荐分辨率 1200×630px - title: 本站缩略图 - timeline_preview: - desc_html: 在主页显示公共时间轴 - title: 时间轴预览 - title: 网站设置 - trendable_by_default: - desc_html: 特定的热门内容仍可以被明确地禁止 - title: 允许在未审查的情况下将话题置为热门 - trends: - desc_html: 公开显示先前已通过审核的当前热门话题 - title: 热门标签 site_uploads: delete: 删除已上传的文件 destroyed_msg: 站点上传的文件已经成功删除! diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index 3724c4f4c..acc6de3ad 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -453,73 +453,15 @@ zh-HK: empty: 尚未定義伺服器規則 title: 伺服器守則 settings: - activity_api_enabled: - desc_html: 本站的文章數量、活躍使用者數量、及每週新註冊使用者數量 - title: 公佈使用者活躍度的統計數據 - bootstrap_timeline_accounts: - desc_html: 以半形逗號分隔多個使用者名稱。只能加入來自本站且未開啟保護的帳號。如果留空,則默認關注本站所有管理員。 - title: 新使用者預設關注的對像 - contact_information: - email: 輸入一個公開的電郵地址 - username: 輸入使用者名稱 - custom_css: - desc_html: 透過 CSS 自訂每一頁的外觀 - title: 自訂 CSS - default_noindex: - desc_html: 影響所有未自行設定的帳號 - title: 預設帳號不在搜尋引擎索引之內 domain_blocks: all: 給任何人 disabled: 給沒有人 - title: 顯示封鎖的網域 users: 所有已登入的帳號 - domain_blocks_rationale: - title: 顯示原因予 - mascot: - desc_html: 在不同頁面顯示。推薦最小 293×205px。如果留空,就會默認為伺服器縮圖。 - title: 縮圖 - peers_api_enabled: - desc_html: 現時本服務站在網絡中已發現的域名 - title: 公開已知服務站的列表 - preview_sensitive_media: - desc_html: 在其他頁面預覽的連結將會在敏感媒體的情況下顯示縮圖 - title: 在 OpenGraph 預覽中顯示敏感媒體 - profile_directory: - desc_html: 允許使用者被搜尋 - title: 啟用個人資料目錄 - registrations: - closed_message: - desc_html: 當本站暫停接受註冊時,會顯示這個訊息。
可使用 HTML - title: 暫停註冊訊息 - require_invite_text: - desc_html: 如果已設定為手動審核注冊,請把「加入的原因」設定為必填項目。 - title: 要求新用戶填寫注冊申請 registrations_mode: modes: approved: 註冊需要核准 none: 沒有人可註冊 open: 任何人皆能註冊 - title: 註冊模式 - site_description: - desc_html: 在首頁顯示,及在 meta 標籤使用作網站介紹。
你可以在此使用 <a><em> 等 HTML 標籤。 - title: 本站介紹 - site_description_extended: - desc_html: 本站詳細資訊頁的內文
你可以在此使用 HTML - title: 本站詳細資訊 - site_short_description: - desc_html: "顯示在側邊欄和網頁標籤(meta tags)。以一句話描述Mastodon是甚麼,有甚麼令這個伺服器脫𩓙而出。" - title: 伺服器短描述 - site_title: 本站名稱 - thumbnail: - desc_html: 用於在 OpenGraph 和 API 中顯示預覽圖。推薦大小 1200×630px - title: 本站縮圖 - timeline_preview: - desc_html: 在主頁顯示本站時間軸 - title: 時間軸預覽 - title: 網站設定 - trends: - desc_html: 公開地顯示已審核的標籤為今期流行 - title: 趨勢主題標籤 site_uploads: delete: 刪除上傳的檔案 destroyed_msg: 成功刪除站台的上傳項目! diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index a469b9369..88fea4b76 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -655,79 +655,40 @@ zh-TW: empty: 未曾定義任何伺服器規則 title: 伺服器規則 settings: - activity_api_enabled: - desc_html: 本站使用者發佈的嘟文數量,以及本站的活躍使用者與一週內新使用者數量 - title: 公開使用者活躍度的統計數據 - bootstrap_timeline_accounts: - desc_html: 以半形逗號分隔多個使用者名稱。只能加入來自本站且未開啟保護的帳號。如果留空,則預設跟隨本站所有管理員。 - title: 新使用者預設跟隨 - contact_information: - email: 用於聯絡的公開電子信箱地址 - username: 請輸入使用者名稱 - custom_css: - desc_html: 透過於每個頁面都載入的 CSS 調整外觀 - title: 自訂 CSS - default_noindex: - desc_html: 影響所有沒有變更此設定的使用者 - title: 預設將使用者退出搜尋引擎索引 + about: + manage_rules: 管理伺服器規則 + preamble: 提供關於此伺服器如何運作、管理、及金援之供詳細資訊。 + rules_hint: 這是關於您的使用者應遵循規則之專有區域。 + title: 關於 + appearance: + preamble: 客製化 Mastodon 網頁介面。 + title: 外觀設定 + branding: + preamble: 您的伺服器品牌使之從聯邦宇宙網路中其他伺服器間凸顯自己。此資訊可能於各種不同的環境中顯示,例如 Mastodon 網頁介面、原生應用程式、其他網頁上的連結預覽或是其他通訊應用程式等等。因此,請盡可能保持此資訊簡潔明朗。 + title: 品牌化 + content_retention: + preamble: 控制使用者產生內容如何儲存於 Mastodon 上。 + title: 內容保留期間 + discovery: + follow_recommendations: 跟隨建議 + preamble: 呈現有趣的內容有助於 Mastodon 上一人不識的新手上路。控制各種不同的分類在您伺服器上如何被探索到。 + profile_directory: 個人檔案目錄 + public_timelines: 公開時間軸 + title: 探索 + trends: 熱門趨勢 domain_blocks: all: 給任何人 disabled: 給沒有人 - title: 顯示封鎖的網域 users: 套用至所有登入的本機使用者 - domain_blocks_rationale: - title: 顯示解釋原因 - mascot: - desc_html: 在許多頁面都會顯示。推薦最小 293x205px。如果留空,將採用預設的吉祥物 - title: 吉祥物圖片 - peers_api_enabled: - desc_html: 本伺服器在聯邦中發現的站點 - title: 發布已知伺服器的列表 - preview_sensitive_media: - desc_html: 連結來自其他網站的預覽將顯示於縮圖,即使這些媒體被標記為敏感 - title: 在 OpenGraph 預覽中顯示敏感媒體 - profile_directory: - desc_html: 允許能探索使用者 - title: 啟用個人資料目錄 registrations: - closed_message: - desc_html: 關閉註冊時顯示在首頁的內容,可使用 HTML 標籤 - title: 關閉註冊訊息 - require_invite_text: - desc_html: 如果已設定為手動審核註冊,請將「加入原因」設定為必填項目。 - title: 要求新使用者填申請書以索取邀請 + preamble: 控制誰能於您伺服器上建立帳號。 + title: 註冊 registrations_mode: modes: approved: 註冊需要核准 none: 沒有人可註冊 open: 任何人皆能註冊 - title: 註冊模式 - site_description: - desc_html: 首頁上的介紹文字,描述此 Mastodon 伺服器的特別之處和其他重要資訊。可使用 HTML 標籤,包括 <a><em>。 - title: 伺服器描述 - site_description_extended: - desc_html: 可放置行為準則、規定以及其他此伺服器特有的內容。可使用 HTML 標籤 - title: 本站詳細資訊 - site_short_description: - desc_html: 顯示在側邊欄和網頁標籤 (meta tags)。以一段話描述 Mastodon 是甚麼,以及這個伺服器的特色。 - title: 伺服器短描述 - site_terms: - desc_html: 您可以撰寫自己的隱私權政策。您可以使用 HTML 標籤。 - title: 客製的隱私權政策 - site_title: 伺服器名稱 - thumbnail: - desc_html: 用於在 OpenGraph 和 API 中顯示預覽圖。推薦大小 1200×630px - title: 伺服器縮圖 - timeline_preview: - desc_html: 在主頁顯示本站時間軸 - title: 時間軸預覽 - title: 網站設定 - trendable_by_default: - desc_html: 特定的熱門內容仍可以被明確地禁止 - title: 允許熱門話題直接顯示,不需經過審核 - trends: - desc_html: 公開目前炎上的已審核標籤 - title: 趨勢主題標籤 + title: 伺服器設定 site_uploads: delete: 刪除上傳的檔案 destroyed_msg: 成功刪除站台的上傳項目! From 5452af2188ba65c9f934280b65a2040c8cc9e718 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 23 Oct 2022 23:37:58 +0200 Subject: [PATCH 537/652] Fix redirecting to `/publish` when compose form is visible in web UI (#19427) --- .../mastodon/features/compose/index.js | 30 +++++++------------ .../features/ui/components/compose_panel.js | 18 +++++++++-- 2 files changed, 26 insertions(+), 22 deletions(-) diff --git a/app/javascript/mastodon/features/compose/index.js b/app/javascript/mastodon/features/compose/index.js index 763c715de..f744fc611 100644 --- a/app/javascript/mastodon/features/compose/index.js +++ b/app/javascript/mastodon/features/compose/index.js @@ -4,14 +4,13 @@ import NavigationContainer from './containers/navigation_container'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { connect } from 'react-redux'; -import { mountCompose, unmountCompose } from '../../actions/compose'; +import { changeComposing, mountCompose, unmountCompose } from '../../actions/compose'; import { Link } from 'react-router-dom'; import { injectIntl, defineMessages } from 'react-intl'; import SearchContainer from './containers/search_container'; import Motion from '../ui/util/optional_motion'; import spring from 'react-motion/lib/spring'; import SearchResultsContainer from './containers/search_results_container'; -import { changeComposing } from '../../actions/compose'; import { openModal } from 'mastodon/actions/modal'; import elephantUIPlane from '../../../images/elephant_ui_plane.svg'; import { mascot } from '../../initial_state'; @@ -35,7 +34,7 @@ const messages = defineMessages({ const mapStateToProps = (state, ownProps) => ({ columns: state.getIn(['settings', 'columns']), - showSearch: ownProps.multiColumn ? state.getIn(['search', 'submitted']) && !state.getIn(['search', 'hidden']) : ownProps.isSearchPage, + showSearch: ownProps.multiColumn ? state.getIn(['search', 'submitted']) && !state.getIn(['search', 'hidden']) : false, }); export default @connect(mapStateToProps) @@ -47,24 +46,17 @@ class Compose extends React.PureComponent { columns: ImmutablePropTypes.list.isRequired, multiColumn: PropTypes.bool, showSearch: PropTypes.bool, - isSearchPage: PropTypes.bool, intl: PropTypes.object.isRequired, }; componentDidMount () { - const { isSearchPage } = this.props; - - if (!isSearchPage) { - this.props.dispatch(mountCompose()); - } + const { dispatch } = this.props; + dispatch(mountCompose()); } componentWillUnmount () { - const { isSearchPage } = this.props; - - if (!isSearchPage) { - this.props.dispatch(unmountCompose()); - } + const { dispatch } = this.props; + dispatch(unmountCompose()); } handleLogoutClick = e => { @@ -92,7 +84,7 @@ class Compose extends React.PureComponent { } render () { - const { multiColumn, showSearch, isSearchPage, intl } = this.props; + const { multiColumn, showSearch, intl } = this.props; if (multiColumn) { const { columns } = this.props; @@ -117,10 +109,10 @@ class Compose extends React.PureComponent { - {(multiColumn || isSearchPage) && } + {multiColumn && }
- {!isSearchPage &&
+
@@ -128,9 +120,9 @@ class Compose extends React.PureComponent {
-
} +
- + {({ x }) => (
diff --git a/app/javascript/mastodon/features/ui/components/compose_panel.js b/app/javascript/mastodon/features/ui/components/compose_panel.js index 1d481eab5..92d16b5b3 100644 --- a/app/javascript/mastodon/features/ui/components/compose_panel.js +++ b/app/javascript/mastodon/features/ui/components/compose_panel.js @@ -6,7 +6,7 @@ import ComposeFormContainer from 'mastodon/features/compose/containers/compose_f import NavigationContainer from 'mastodon/features/compose/containers/navigation_container'; import LinkFooter from './link_footer'; import ServerBanner from 'mastodon/components/server_banner'; -import { changeComposing } from 'mastodon/actions/compose'; +import { changeComposing, mountCompose, unmountCompose } from 'mastodon/actions/compose'; export default @connect() class ComposePanel extends React.PureComponent { @@ -20,11 +20,23 @@ class ComposePanel extends React.PureComponent { }; onFocus = () => { - this.props.dispatch(changeComposing(true)); + const { dispatch } = this.props; + dispatch(changeComposing(true)); } onBlur = () => { - this.props.dispatch(changeComposing(false)); + const { dispatch } = this.props; + dispatch(changeComposing(false)); + } + + componentDidMount () { + const { dispatch } = this.props; + dispatch(mountCompose()); + } + + componentWillUnmount () { + const { dispatch } = this.props; + dispatch(unmountCompose()); } render() { From 73de39e6323460792ef8982555e5cfdaefb5a29b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 23 Oct 2022 23:38:08 +0200 Subject: [PATCH 538/652] Fix media, following and followers tabs in web UI (#19426) --- app/javascript/mastodon/features/account/navigation.js | 3 ++- app/javascript/mastodon/features/account_gallery/index.js | 3 ++- app/javascript/mastodon/features/followers/index.js | 3 ++- app/javascript/mastodon/features/following/index.js | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/javascript/mastodon/features/account/navigation.js b/app/javascript/mastodon/features/account/navigation.js index 122674139..eb9ff9a95 100644 --- a/app/javascript/mastodon/features/account/navigation.js +++ b/app/javascript/mastodon/features/account/navigation.js @@ -2,9 +2,10 @@ import React from 'react'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import FeaturedTags from 'mastodon/features/account/containers/featured_tags_container'; +import { normalizeForLookup } from 'mastodon/reducers/accounts_map'; const mapStateToProps = (state, { match: { params: { acct } } }) => { - const accountId = state.getIn(['accounts_map', acct]); + const accountId = state.getIn(['accounts_map', normalizeForLookup(acct)]); if (!accountId) { return { diff --git a/app/javascript/mastodon/features/account_gallery/index.js b/app/javascript/mastodon/features/account_gallery/index.js index cc0bfa9ba..dc7556a9a 100644 --- a/app/javascript/mastodon/features/account_gallery/index.js +++ b/app/javascript/mastodon/features/account_gallery/index.js @@ -16,9 +16,10 @@ import LoadMore from 'mastodon/components/load_more'; import MissingIndicator from 'mastodon/components/missing_indicator'; import { openModal } from 'mastodon/actions/modal'; import { FormattedMessage } from 'react-intl'; +import { normalizeForLookup } from 'mastodon/reducers/accounts_map'; const mapStateToProps = (state, { params: { acct, id } }) => { - const accountId = id || state.getIn(['accounts_map', acct]); + const accountId = id || state.getIn(['accounts_map', normalizeForLookup(acct)]); if (!accountId) { return { diff --git a/app/javascript/mastodon/features/followers/index.js b/app/javascript/mastodon/features/followers/index.js index 5b7f402f8..277eb702f 100644 --- a/app/javascript/mastodon/features/followers/index.js +++ b/app/javascript/mastodon/features/followers/index.js @@ -21,9 +21,10 @@ import MissingIndicator from 'mastodon/components/missing_indicator'; import TimelineHint from 'mastodon/components/timeline_hint'; import LimitedAccountHint from '../account_timeline/components/limited_account_hint'; import { getAccountHidden } from 'mastodon/selectors'; +import { normalizeForLookup } from 'mastodon/reducers/accounts_map'; const mapStateToProps = (state, { params: { acct, id } }) => { - const accountId = id || state.getIn(['accounts_map', acct]); + const accountId = id || state.getIn(['accounts_map', normalizeForLookup(acct)]); if (!accountId) { return { diff --git a/app/javascript/mastodon/features/following/index.js b/app/javascript/mastodon/features/following/index.js index 143082d76..e23d9b35c 100644 --- a/app/javascript/mastodon/features/following/index.js +++ b/app/javascript/mastodon/features/following/index.js @@ -21,9 +21,10 @@ import MissingIndicator from 'mastodon/components/missing_indicator'; import TimelineHint from 'mastodon/components/timeline_hint'; import LimitedAccountHint from '../account_timeline/components/limited_account_hint'; import { getAccountHidden } from 'mastodon/selectors'; +import { normalizeForLookup } from 'mastodon/reducers/accounts_map'; const mapStateToProps = (state, { params: { acct, id } }) => { - const accountId = id || state.getIn(['accounts_map', acct]); + const accountId = id || state.getIn(['accounts_map', normalizeForLookup(acct)]); if (!accountId) { return { From 3ad0a2ae3dcd36e4a9e0be5f72273f9c30df7548 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 23 Oct 2022 23:38:20 +0200 Subject: [PATCH 539/652] Fix language dropdown causing zoom on mobile devices in web UI (#19428) --- app/javascript/styles/mastodon/components.scss | 4 ---- app/javascript/styles/mastodon/emoji_picker.scss | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index cca29161a..f6b34b5f3 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -4810,10 +4810,6 @@ a.status-card.compact:hover { &:focus { background: lighten($ui-base-color, 4%); } - - @media screen and (max-width: 600px) { - font-size: 16px; - } } .search__icon { diff --git a/app/javascript/styles/mastodon/emoji_picker.scss b/app/javascript/styles/mastodon/emoji_picker.scss index 24061d2ca..e4ec96d89 100644 --- a/app/javascript/styles/mastodon/emoji_picker.scss +++ b/app/javascript/styles/mastodon/emoji_picker.scss @@ -111,7 +111,7 @@ position: relative; input { - font-size: 14px; + font-size: 16px; font-weight: 400; padding: 7px 9px; padding-right: 25px; From dd76bbf8b7aef3aed6bb27a5c093211eebcdb24b Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 24 Oct 2022 17:37:46 +0200 Subject: [PATCH 540/652] Fix WebUI notification settings for new user and new report notifications (#19436) Due to an error in operator priority, those settings would only show up if the user role included the all-encompassing `administrator` permission and would display `0` otherwise. --- .../features/notifications/components/column_settings.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/features/notifications/components/column_settings.js b/app/javascript/mastodon/features/notifications/components/column_settings.js index b1618c1b4..d75fa8a02 100644 --- a/app/javascript/mastodon/features/notifications/components/column_settings.js +++ b/app/javascript/mastodon/features/notifications/components/column_settings.js @@ -170,7 +170,7 @@ export default class ColumnSettings extends React.PureComponent {
- {(this.context.identity.permissions & PERMISSION_MANAGE_USERS === PERMISSION_MANAGE_USERS) && ( + {((this.context.identity.permissions & PERMISSION_MANAGE_USERS) === PERMISSION_MANAGE_USERS) && (
@@ -183,7 +183,7 @@ export default class ColumnSettings extends React.PureComponent {
)} - {(this.context.identity.permissions & PERMISSION_MANAGE_REPORTS === PERMISSION_MANAGE_REPORTS) && ( + {((this.context.identity.permissions & PERMISSION_MANAGE_REPORTS) === PERMISSION_MANAGE_REPORTS) && (
From 8046cf34d68209b39845e07a9d2db40926cc5512 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 24 Oct 2022 18:30:58 +0200 Subject: [PATCH 541/652] =?UTF-8?q?Change=20=E2=80=9CTranslate=E2=80=9D=20?= =?UTF-8?q?button=20to=20only=20show=20up=20when=20a=20translation=20backe?= =?UTF-8?q?nd=20is=20configured=20(#19434)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Change “Translate” button to only show up when a translation backend is configured Fixes #19346 * Add `translation` attribute to /api/v2/instance to expose whether the translation feature is enabled Fixes #19328 --- app/javascript/mastodon/components/status_content.js | 4 ++-- app/javascript/mastodon/initial_state.js | 2 ++ app/lib/translation_service.rb | 4 ++++ app/serializers/initial_state_serializer.rb | 1 + app/serializers/rest/instance_serializer.rb | 4 ++++ 5 files changed, 13 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/components/status_content.js b/app/javascript/mastodon/components/status_content.js index 6ad3e018a..0ed79e658 100644 --- a/app/javascript/mastodon/components/status_content.js +++ b/app/javascript/mastodon/components/status_content.js @@ -6,7 +6,7 @@ import Permalink from './permalink'; import classnames from 'classnames'; import PollContainer from 'mastodon/containers/poll_container'; import Icon from 'mastodon/components/icon'; -import { autoPlayGif, languages as preloadedLanguages } from 'mastodon/initial_state'; +import { autoPlayGif, languages as preloadedLanguages, translationEnabled } from 'mastodon/initial_state'; const MAX_HEIGHT = 642; // 20px * 32 (+ 2px padding at the top) @@ -181,7 +181,7 @@ class StatusContent extends React.PureComponent { const hidden = this.props.onExpandedToggle ? !this.props.expanded : this.state.hidden; const renderReadMore = this.props.onClick && status.get('collapsed'); const renderViewThread = this.props.showThread && status.get('in_reply_to_id') && status.get('in_reply_to_account_id') === status.getIn(['account', 'id']); - const renderTranslate = this.context.identity.signedIn && this.props.onTranslate && ['public', 'unlisted'].includes(status.get('visibility')) && status.get('contentHtml').length > 0 && status.get('language') !== null && intl.locale !== status.get('language'); + const renderTranslate = translationEnabled && this.context.identity.signedIn && this.props.onTranslate && ['public', 'unlisted'].includes(status.get('visibility')) && status.get('contentHtml').length > 0 && status.get('language') !== null && intl.locale !== status.get('language'); const language = preloadedLanguages.find(lang => lang[0] === status.get('language')); const languageName = language ? language[2] : status.get('language'); diff --git a/app/javascript/mastodon/initial_state.js b/app/javascript/mastodon/initial_state.js index f9843f7f8..bb05dafdf 100644 --- a/app/javascript/mastodon/initial_state.js +++ b/app/javascript/mastodon/initial_state.js @@ -77,6 +77,7 @@ * @property {boolean} use_blurhash * @property {boolean=} use_pending_items * @property {string} version + * @property {boolean} translation_enabled */ /** @@ -125,6 +126,7 @@ export const unfollowModal = getMeta('unfollow_modal'); export const useBlurhash = getMeta('use_blurhash'); export const usePendingItems = getMeta('use_pending_items'); export const version = getMeta('version'); +export const translationEnabled = getMeta('translation_enabled'); export const languages = initialState?.languages; export default initialState; diff --git a/app/lib/translation_service.rb b/app/lib/translation_service.rb index 526e26ae5..285f30939 100644 --- a/app/lib/translation_service.rb +++ b/app/lib/translation_service.rb @@ -17,6 +17,10 @@ class TranslationService end end + def self.configured? + ENV['DEEPL_API_KEY'].present? || ENV['LIBRE_TRANSLATE_ENDPOINT'].present? + end + def translate(_text, _source_language, _target_language) raise NotImplementedError end diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb index ba446854c..02e45a92e 100644 --- a/app/serializers/initial_state_serializer.rb +++ b/app/serializers/initial_state_serializer.rb @@ -31,6 +31,7 @@ class InitialStateSerializer < ActiveModel::Serializer timeline_preview: Setting.timeline_preview, activity_api_enabled: Setting.activity_api_enabled, single_user_mode: Rails.configuration.x.single_user_mode, + translation_enabled: TranslationService.configured?, } if object.current_account diff --git a/app/serializers/rest/instance_serializer.rb b/app/serializers/rest/instance_serializer.rb index 7d00b20ba..606e7d831 100644 --- a/app/serializers/rest/instance_serializer.rb +++ b/app/serializers/rest/instance_serializer.rb @@ -72,6 +72,10 @@ class REST::InstanceSerializer < ActiveModel::Serializer min_expiration: PollValidator::MIN_EXPIRATION, max_expiration: PollValidator::MAX_EXPIRATION, }, + + translation: { + enabled: TranslationService.configured?, + }, } end From 30453fab80d55fc10766f0e067c31d96753ccfda Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 24 Oct 2022 18:37:57 +0200 Subject: [PATCH 542/652] Add mention of the translation provider when translating a post (#19433) --- app/javascript/mastodon/components/status_content.js | 2 +- app/lib/translation_service/deepl.rb | 2 +- app/lib/translation_service/libre_translate.rb | 2 +- app/lib/translation_service/translation.rb | 2 +- app/serializers/rest/translation_serializer.rb | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/javascript/mastodon/components/status_content.js b/app/javascript/mastodon/components/status_content.js index 0ed79e658..56e8432b6 100644 --- a/app/javascript/mastodon/components/status_content.js +++ b/app/javascript/mastodon/components/status_content.js @@ -208,7 +208,7 @@ class StatusContent extends React.PureComponent { const translateButton = ( ); diff --git a/app/lib/translation_service/deepl.rb b/app/lib/translation_service/deepl.rb index b75b604a8..537fd24c0 100644 --- a/app/lib/translation_service/deepl.rb +++ b/app/lib/translation_service/deepl.rb @@ -46,7 +46,7 @@ class TranslationService::DeepL < TranslationService raise UnexpectedResponseError unless json.is_a?(Hash) - Translation.new(text: json.dig('translations', 0, 'text'), detected_source_language: json.dig('translations', 0, 'detected_source_language')&.downcase) + Translation.new(text: json.dig('translations', 0, 'text'), detected_source_language: json.dig('translations', 0, 'detected_source_language')&.downcase, provider: 'DeepL.com') rescue Oj::ParseError raise UnexpectedResponseError end diff --git a/app/lib/translation_service/libre_translate.rb b/app/lib/translation_service/libre_translate.rb index 8cf26f868..43576e306 100644 --- a/app/lib/translation_service/libre_translate.rb +++ b/app/lib/translation_service/libre_translate.rb @@ -37,7 +37,7 @@ class TranslationService::LibreTranslate < TranslationService raise UnexpectedResponseError unless json.is_a?(Hash) - Translation.new(text: json['translatedText'], detected_source_language: source_language) + Translation.new(text: json['translatedText'], detected_source_language: source_language, provider: 'LibreTranslate') rescue Oj::ParseError raise UnexpectedResponseError end diff --git a/app/lib/translation_service/translation.rb b/app/lib/translation_service/translation.rb index a55b82574..19318c7e9 100644 --- a/app/lib/translation_service/translation.rb +++ b/app/lib/translation_service/translation.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true class TranslationService::Translation < ActiveModelSerializers::Model - attributes :text, :detected_source_language + attributes :text, :detected_source_language, :provider end diff --git a/app/serializers/rest/translation_serializer.rb b/app/serializers/rest/translation_serializer.rb index a06f23f32..05ededc95 100644 --- a/app/serializers/rest/translation_serializer.rb +++ b/app/serializers/rest/translation_serializer.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class REST::TranslationSerializer < ActiveModel::Serializer - attributes :content, :detected_source_language + attributes :content, :detected_source_language, :provider def content object.text From 9757c917da1753a706c4cd9e191e77059620b022 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 25 Oct 2022 18:47:04 +0200 Subject: [PATCH 543/652] Fix `nofollow` rel being removed in web UI (#19455) --- app/javascript/mastodon/components/status_content.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/javascript/mastodon/components/status_content.js b/app/javascript/mastodon/components/status_content.js index 56e8432b6..ff539268c 100644 --- a/app/javascript/mastodon/components/status_content.js +++ b/app/javascript/mastodon/components/status_content.js @@ -61,9 +61,6 @@ class StatusContent extends React.PureComponent { link.setAttribute('title', link.href); link.classList.add('unhandled-link'); } - - link.setAttribute('target', '_blank'); - link.setAttribute('rel', 'noopener noreferrer'); } if (this.props.status.get('collapsed', null) === null) { From fcca781aae609067bc9e43ad4a466ef6d2074bbb Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 25 Oct 2022 18:47:21 +0200 Subject: [PATCH 544/652] Change design of translations in web UI (#19453) --- .../mastodon/components/status_content.js | 89 +++++++++++++------ .../styles/mastodon/components.scss | 12 ++- 2 files changed, 67 insertions(+), 34 deletions(-) diff --git a/app/javascript/mastodon/components/status_content.js b/app/javascript/mastodon/components/status_content.js index ff539268c..5e66c6fb3 100644 --- a/app/javascript/mastodon/components/status_content.js +++ b/app/javascript/mastodon/components/status_content.js @@ -10,6 +10,43 @@ import { autoPlayGif, languages as preloadedLanguages, translationEnabled } from const MAX_HEIGHT = 642; // 20px * 32 (+ 2px padding at the top) +class TranslateButton extends React.PureComponent { + + static propTypes = { + translation: ImmutablePropTypes.map, + onClick: PropTypes.func, + }; + + render () { + const { translation, onClick } = this.props; + + if (translation) { + const language = preloadedLanguages.find(lang => lang[0] === translation.get('detected_source_language')); + const languageName = language ? language[2] : translation.get('detected_source_language'); + const provider = translation.get('provider'); + + return ( +
+
+ +
+ + +
+ ); + } + + return ( + + ); + } + +} + export default @injectIntl class StatusContent extends React.PureComponent { @@ -179,8 +216,6 @@ class StatusContent extends React.PureComponent { const renderReadMore = this.props.onClick && status.get('collapsed'); const renderViewThread = this.props.showThread && status.get('in_reply_to_id') && status.get('in_reply_to_account_id') === status.getIn(['account', 'id']); const renderTranslate = translationEnabled && this.context.identity.signedIn && this.props.onTranslate && ['public', 'unlisted'].includes(status.get('visibility')) && status.get('contentHtml').length > 0 && status.get('language') !== null && intl.locale !== status.get('language'); - const language = preloadedLanguages.find(lang => lang[0] === status.get('language')); - const languageName = language ? language[2] : status.get('language'); const content = { __html: status.get('translation') ? status.getIn(['translation', 'content']) : status.get('contentHtml') }; const spoilerContent = { __html: status.get('spoilerHtml') }; @@ -191,22 +226,24 @@ class StatusContent extends React.PureComponent { 'status__content--collapsed': renderReadMore, }); - const showThreadButton = ( + const showThreadButton = renderViewThread && ( ); - const readMoreButton = ( + const readMoreButton = renderReadMore && ( ); - const translateButton = ( - + const translateButton = renderTranslate && ( + + ); + + const poll = !!status.get('poll') && ( + ); if (status.get('spoiler_text').length > 0) { @@ -236,35 +273,33 @@ class StatusContent extends React.PureComponent {
- {!hidden && !!status.get('poll') && } - {!hidden && renderTranslate && translateButton} - {renderViewThread && showThreadButton} + {!hidden && poll} + {!hidden && translateButton} + {showThreadButton}
); } else if (this.props.onClick) { - const output = [ -
-
+ return ( + <> +
+
- {!!status.get('poll') && } - {renderTranslate && translateButton} - {renderViewThread && showThreadButton} -
, - ]; + {poll} + {translateButton} + {showThreadButton} +
- if (renderReadMore) { - output.push(readMoreButton); - } - - return output; + {readMoreButton} + + ); } else { return (
- {!!status.get('poll') && } - {renderTranslate && translateButton} - {renderViewThread && showThreadButton} + {poll} + {translateButton} + {showThreadButton}
); } diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index f6b34b5f3..15351d850 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -24,7 +24,7 @@ display: block; font-size: 15px; line-height: 20px; - color: $ui-highlight-color; + color: $highlight-text-color; border: 0; background: transparent; padding: 0; @@ -969,15 +969,13 @@ } } -.status__content__edited-label { - display: block; - cursor: default; +.translate-button { + margin-top: 16px; font-size: 15px; line-height: 20px; - padding: 0; - padding-top: 8px; + display: flex; + justify-content: space-between; color: $dark-text-color; - font-weight: 500; } .status__content__spoiler-link { From 0ca29eaa3f762219cacce46059acfa71393533ad Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 25 Oct 2022 19:02:21 +0200 Subject: [PATCH 545/652] Change layout of posts in web UI (#19423) --- app/javascript/mastodon/components/account.js | 2 +- app/javascript/mastodon/components/status.js | 14 +- .../mastodon/components/status_action_bar.js | 16 +- .../mastodon/components/status_content.js | 11 - .../account/components/featured_tags.js | 2 +- .../features/account/components/header.js | 31 +- .../features/compose/components/action_bar.js | 2 +- .../compose/components/navigation_bar.js | 2 +- .../features/status/components/action_bar.js | 3 +- .../status/components/detailed_status.js | 2 +- .../features/ui/components/actions_modal.js | 28 -- .../features/ui/components/boost_modal.js | 11 +- .../styles/mastodon/components.scss | 428 ++++++------------ 13 files changed, 195 insertions(+), 357 deletions(-) diff --git a/app/javascript/mastodon/components/account.js b/app/javascript/mastodon/components/account.js index 36429e647..92d14da8b 100644 --- a/app/javascript/mastodon/components/account.js +++ b/app/javascript/mastodon/components/account.js @@ -136,7 +136,7 @@ class Account extends ImmutablePureComponent {
-
+
{mute_expires_at}
diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js index 381088be7..3106a3ecd 100644 --- a/app/javascript/mastodon/components/status.js +++ b/app/javascript/mastodon/components/status.js @@ -386,6 +386,15 @@ class Status extends ImmutablePureComponent { account = status.get('account'); status = status.get('reblog'); + } else if (showThread && status.get('in_reply_to_id') && status.get('in_reply_to_account_id') === status.getIn(['account', 'id'])) { + const display_name_html = { __html: status.getIn(['account', 'display_name_html']) }; + + prepend = ( +
+
+ }} /> +
+ ); } if (pictureInPicture.get('inUse')) { @@ -481,7 +490,7 @@ class Status extends ImmutablePureComponent { } if (account === undefined || account === null) { - statusAvatar = ; + statusAvatar = ; } else { statusAvatar = ; } @@ -501,8 +510,6 @@ class Status extends ImmutablePureComponent { {prepend}
-
-
@@ -522,7 +529,6 @@ class Status extends ImmutablePureComponent { status={status} onClick={this.handleClick} expanded={!status.get('hidden')} - showThread={showThread} onExpandedToggle={this.handleExpandedToggle} onTranslate={this.handleTranslate} collapsable diff --git a/app/javascript/mastodon/components/status_action_bar.js b/app/javascript/mastodon/components/status_action_bar.js index 9e8cadce2..17150524e 100644 --- a/app/javascript/mastodon/components/status_action_bar.js +++ b/app/javascript/mastodon/components/status_action_bar.js @@ -246,8 +246,9 @@ class StatusActionBar extends ImmutablePureComponent { render () { const { status, relationship, intl, withDismiss, withCounters, scrollKey } = this.props; + const { signedIn } = this.context.identity; - const anonymousAccess = !me; + const anonymousAccess = !signedIn; const publicStatus = ['public', 'unlisted'].includes(status.get('visibility')); const pinnableStatus = ['public', 'unlisted', 'private'].includes(status.get('visibility')); const mutingConversation = status.get('muted'); @@ -350,24 +351,25 @@ class StatusActionBar extends ImmutablePureComponent { } const shareButton = ('share' in navigator) && publicStatus && ( - + ); const filterButton = this.props.onFilter && ( - + ); return (
- - - + + + + {shareButton} {filterButton} -
+
); } else if (this.props.onClick) { @@ -286,7 +277,6 @@ class StatusContent extends React.PureComponent { {poll} {translateButton} - {showThreadButton}
{readMoreButton} @@ -299,7 +289,6 @@ class StatusContent extends React.PureComponent { {poll} {translateButton} - {showThreadButton}
); } diff --git a/app/javascript/mastodon/features/account/components/featured_tags.js b/app/javascript/mastodon/features/account/components/featured_tags.js index 51be9a609..8194c063a 100644 --- a/app/javascript/mastodon/features/account/components/featured_tags.js +++ b/app/javascript/mastodon/features/account/components/featured_tags.js @@ -41,7 +41,7 @@ class FeaturedTags extends ImmutablePureComponent { name={featuredTag.get('name')} href={featuredTag.get('url')} to={`/@${account.get('acct')}/tagged/${featuredTag.get('name')}`} - uses={featuredTag.get('statuses_count')} + uses={featuredTag.get('statuses_count') * 1} withGraph={false} description={((featuredTag.get('statuses_count') * 1) > 0) ? intl.formatMessage(messages.lastStatusAt, { date: intl.formatDate(featuredTag.get('last_status_at'), { month: 'short', day: '2-digit' }) }) : intl.formatMessage(messages.empty)} /> diff --git a/app/javascript/mastodon/features/account/components/header.js b/app/javascript/mastodon/features/account/components/header.js index 954cb0ee7..e39f0158e 100644 --- a/app/javascript/mastodon/features/account/components/header.js +++ b/app/javascript/mastodon/features/account/components/header.js @@ -326,25 +326,26 @@ class Header extends ImmutablePureComponent { {!(suspended || hidden) && (
- {fields.size > 0 && ( -
- {fields.map((pair, i) => ( -
-
- -
- {pair.get('verified_at') && } -
-
- ))} -
- )} - {(account.get('id') !== me && signedIn) && } {account.get('note').length > 0 && account.get('note') !== '

' &&
} -
+
+
+
+
{intl.formatDate(account.get('created_at'), { year: 'numeric', month: 'short', day: '2-digit' })}
+
+ + {fields.map((pair, i) => ( +
+
+ +
+ {pair.get('verified_at') && } +
+
+ ))} +
diff --git a/app/javascript/mastodon/features/compose/components/action_bar.js b/app/javascript/mastodon/features/compose/components/action_bar.js index 4ff0b7b94..ceed928bf 100644 --- a/app/javascript/mastodon/features/compose/components/action_bar.js +++ b/app/javascript/mastodon/features/compose/components/action_bar.js @@ -56,7 +56,7 @@ class ActionBar extends React.PureComponent { return (
- +
); diff --git a/app/javascript/mastodon/features/compose/components/navigation_bar.js b/app/javascript/mastodon/features/compose/components/navigation_bar.js index e6ba7d8b7..372765ca4 100644 --- a/app/javascript/mastodon/features/compose/components/navigation_bar.js +++ b/app/javascript/mastodon/features/compose/components/navigation_bar.js @@ -21,7 +21,7 @@ export default class NavigationBar extends ImmutablePureComponent {
{this.props.account.get('acct')} - +
diff --git a/app/javascript/mastodon/features/status/components/action_bar.js b/app/javascript/mastodon/features/status/components/action_bar.js index 2e240c414..a0a6a7894 100644 --- a/app/javascript/mastodon/features/status/components/action_bar.js +++ b/app/javascript/mastodon/features/status/components/action_bar.js @@ -287,9 +287,10 @@ class ActionBar extends React.PureComponent {
- {shareButton}
+ {shareButton} +
diff --git a/app/javascript/mastodon/features/status/components/detailed_status.js b/app/javascript/mastodon/features/status/components/detailed_status.js index 320a847f7..1a2aab819 100644 --- a/app/javascript/mastodon/features/status/components/detailed_status.js +++ b/app/javascript/mastodon/features/status/components/detailed_status.js @@ -262,7 +262,7 @@ class DetailedStatus extends ImmutablePureComponent {
-
+
diff --git a/app/javascript/mastodon/features/ui/components/actions_modal.js b/app/javascript/mastodon/features/ui/components/actions_modal.js index 875b2b75d..67be69d43 100644 --- a/app/javascript/mastodon/features/ui/components/actions_modal.js +++ b/app/javascript/mastodon/features/ui/components/actions_modal.js @@ -2,10 +2,6 @@ import React from 'react'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import StatusContent from '../../../components/status_content'; -import Avatar from '../../../components/avatar'; -import RelativeTimestamp from '../../../components/relative_timestamp'; -import DisplayName from '../../../components/display_name'; import IconButton from '../../../components/icon_button'; import classNames from 'classnames'; @@ -38,32 +34,8 @@ export default class ActionsModal extends ImmutablePureComponent { } render () { - const status = this.props.status && ( -
- - - -
- ); - return (
- {status} -
    {this.props.actions.map(this.renderAction)}
diff --git a/app/javascript/mastodon/features/ui/components/boost_modal.js b/app/javascript/mastodon/features/ui/components/boost_modal.js index ab87ee427..d7a6d711e 100644 --- a/app/javascript/mastodon/features/ui/components/boost_modal.js +++ b/app/javascript/mastodon/features/ui/components/boost_modal.js @@ -97,12 +97,11 @@ class BoostModal extends ImmutablePureComponent {
-
-
- - - -
+
+ + + +
diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 15351d850..633b9ed70 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -367,7 +367,7 @@ } .compose-form { - padding: 10px; + padding: 15px; &__sensitive-button { padding: 10px; @@ -714,7 +714,7 @@ .compose-form__publish-button-wrapper { overflow: hidden; - padding-top: 10px; + padding-top: 15px; } } } @@ -808,7 +808,7 @@ .reply-indicator__content { position: relative; font-size: 15px; - line-height: 20px; + line-height: 22px; word-wrap: break-word; font-weight: 400; overflow: hidden; @@ -955,12 +955,12 @@ .status__content__read-more-button { display: block; font-size: 15px; - line-height: 20px; + line-height: 22px; color: $highlight-text-color; border: 0; background: transparent; padding: 0; - padding-top: 8px; + padding-top: 16px; text-decoration: none; &:hover, @@ -972,7 +972,7 @@ .translate-button { margin-top: 16px; font-size: 15px; - line-height: 20px; + line-height: 22px; display: flex; justify-content: space-between; color: $dark-text-color; @@ -1022,11 +1022,6 @@ } } -.status__prepend-icon-wrapper { - left: -26px; - position: absolute; -} - .focusable { &:focus { outline: 0; @@ -1040,19 +1035,11 @@ } .status { - padding: 8px 10px; - padding-left: 68px; - position: relative; + padding: 16px; min-height: 54px; border-bottom: 1px solid lighten($ui-base-color, 8%); cursor: auto; - @supports (-ms-overflow-style: -ms-autohiding-scrollbar) { - // Add margin to avoid Edge auto-hiding scrollbar appearing over content. - // On Edge 16 this is 16px and Edge <=15 it's 12px, so aim for 16px. - padding-right: 26px; // 10px + 16px - } - @keyframes fade { 0% { opacity: 0; } 100% { opacity: 1; } @@ -1061,9 +1048,11 @@ opacity: 1; animation: fade 150ms linear; + .media-gallery, .video-player, - .audio-player { - margin-top: 8px; + .audio-player, + .attachment-list { + margin-top: 16px; } &.light { @@ -1091,7 +1080,7 @@ color: $highlight-text-color; } - a.status__content__spoiler-link { + &__spoiler-link { color: $primary-text-color; background: $ui-primary-color; @@ -1104,7 +1093,16 @@ } } -.status__relative-time, +.status__relative-time { + display: block; + font-size: 15px; + line-height: 22px; + height: 40px; + order: 2; + flex: 0 0 auto; + color: $dark-text-color; +} + .notification__relative_time { color: $dark-text-color; float: right; @@ -1121,13 +1119,36 @@ } .status__info .status__display-name { - display: block; max-width: 100%; - padding-right: 25px; + display: flex; + font-size: 15px; + line-height: 22px; + align-items: center; + gap: 10px; + overflow: hidden; + + .display-name { + bdi { + overflow: hidden; + text-overflow: ellipsis; + } + + &__account { + white-space: nowrap; + display: block; + overflow: hidden; + text-overflow: ellipsis; + } + } } .status__info { font-size: 15px; + margin-bottom: 10px; + display: flex; + align-items: center; + justify-content: space-between; + gap: 10px; } .status-check-box__status { @@ -1166,12 +1187,14 @@ } .status__prepend { - margin-left: 68px; + padding: 16px; + padding-bottom: 0; + display: flex; + gap: 10px; + font-size: 15px; + line-height: 22px; + font-weight: 500; color: $dark-text-color; - padding: 8px 0; - padding-bottom: 2px; - font-size: 14px; - position: relative; .status__display-name strong { color: $dark-text-color; @@ -1185,22 +1208,11 @@ } .status__action-bar { - align-items: center; display: flex; - margin-top: 8px; -} - -.status__action-bar-button { - margin-right: 18px; - - &.icon-button--with-counter { - margin-right: 14px; - } -} - -.status__action-bar-dropdown { - height: 23.15px; - width: 23.15px; + justify-content: space-between; + align-items: center; + gap: 18px; + margin-top: 16px; } .detailed-status__action-bar-dropdown { @@ -1213,7 +1225,7 @@ .detailed-status { background: lighten($ui-base-color, 4%); - padding: 14px 10px; + padding: 16px; &--flex { display: flex; @@ -1243,14 +1255,15 @@ } } + .media-gallery, .video-player, .audio-player { - margin-top: 8px; + margin-top: 16px; } } .detailed-status__meta { - margin-top: 15px; + margin-top: 16px; color: $dark-text-color; font-size: 14px; line-height: 18px; @@ -1312,7 +1325,7 @@ } .account { - padding: 10px; + padding: 16px; border-bottom: 1px solid lighten($ui-base-color, 8%); &.compact { @@ -1326,7 +1339,9 @@ .account__display-name { flex: 1 1 auto; - display: block; + display: flex; + align-items: center; + gap: 10px; color: $darker-text-color; overflow: hidden; text-decoration: none; @@ -1359,12 +1374,7 @@ .account__wrapper { display: flex; -} - -.account__avatar-wrapper { - float: left; - margin-left: 12px; - margin-right: 12px; + gap: 10px; } .account__avatar { @@ -1372,9 +1382,6 @@ display: block; position: relative; - width: 36px; - height: 36px; - background-size: 36px 36px; &-inline { display: inline-block; @@ -1414,7 +1421,7 @@ a .account__avatar { } .account__avatar-overlay { - @include avatar-size(48px); + @include avatar-size(46px); position: relative; @@ -1615,10 +1622,13 @@ a.account__display-name { } .detailed-status__display-name { - color: $secondary-text-color; - display: block; - line-height: 24px; - margin-bottom: 15px; + color: $darker-text-color; + display: flex; + align-items: center; + gap: 10px; + font-size: 15px; + line-height: 22px; + margin-bottom: 16px; overflow: hidden; strong, @@ -1629,31 +1639,13 @@ a.account__display-name { } strong { - font-size: 16px; color: $primary-text-color; } } -.detailed-status__display-avatar { - float: left; - margin-right: 10px; -} - .status__avatar { - height: 48px; - left: 10px; - position: absolute; - top: 10px; - width: 48px; -} - -.status__expand { - width: 68px; - position: absolute; - left: 0; - top: 0; - height: 100%; - cursor: pointer; + width: 46px; + height: 46px; } .muted { @@ -1684,40 +1676,52 @@ a.account__display-name { } .notification__report { - padding: 8px 10px; - padding-left: 68px; - position: relative; + padding: 16px; border-bottom: 1px solid lighten($ui-base-color, 8%); - min-height: 54px; + display: flex; + gap: 10px; + + &__avatar { + flex: 0 0 auto; + } &__details { + flex: 1 1 auto; display: flex; justify-content: space-between; align-items: center; color: $darker-text-color; + gap: 10px; font-size: 15px; line-height: 22px; + white-space: nowrap; + overflow: hidden; + + & > div { + overflow: hidden; + text-overflow: ellipsis; + } strong { font-weight: 500; } } - &__avatar { - position: absolute; - left: 10px; - top: 10px; + &__actions { + flex: 0 0 auto; } } .notification__message { - margin: 0 10px 0 68px; - padding: 8px 0 0; + padding: 16px; + padding-bottom: 0; cursor: default; color: $darker-text-color; font-size: 15px; line-height: 22px; - position: relative; + font-weight: 500; + display: flex; + gap: 10px; .fa { color: $highlight-text-color; @@ -1731,9 +1735,6 @@ a.account__display-name { } .notification__favourite-icon-wrapper { - left: -26px; - position: absolute; - .star-icon { color: $gold-star; } @@ -1767,15 +1768,10 @@ a.account__display-name { text-decoration: none; &:hover { - color: $primary-text-color; text-decoration: underline; } } -.notification__relative_time { - float: right; -} - .display-name { display: block; max-width: 100%; @@ -1788,10 +1784,6 @@ a.account__display-name { font-weight: 500; } -.display-name__account { - font-size: 14px; -} - .status__relative-time, .detailed-status__datetime { &:hover { @@ -1860,11 +1852,12 @@ a.account__display-name { } .navigation-bar { - padding: 10px; + padding: 15px; display: flex; align-items: center; flex-shrink: 0; cursor: default; + gap: 10px; color: $darker-text-color; strong { @@ -1899,9 +1892,7 @@ a.account__display-name { .navigation-bar__profile { flex: 1 1 auto; - margin-left: 8px; line-height: 20px; - margin-top: -1px; overflow: hidden; } @@ -2466,101 +2457,6 @@ $ui-header-height: 55px; padding: 10px 0; padding-top: 0; } - - .detailed-status { - padding: 15px; - - .media-gallery, - .video-player, - .audio-player { - margin-top: 15px; - } - } - - .account__header__bar { - padding: 5px 10px; - } - - .navigation-bar, - .compose-form { - padding: 15px; - } - - .compose-form .compose-form__publish .compose-form__publish-button-wrapper { - padding-top: 15px; - } - - .notification__report { - padding: 15px 15px 15px (48px + 15px * 2); - min-height: 48px + 2px; - - &__avatar { - left: 15px; - top: 17px; - } - } - - .status { - padding: 15px 15px 15px (48px + 15px * 2); - min-height: 48px + 2px; - - &__avatar { - left: 15px; - top: 17px; - } - - &__content { - padding-top: 5px; - } - - &__prepend { - margin-left: 48px + 15px * 2; - padding-top: 15px; - } - - &__prepend-icon-wrapper { - left: -32px; - } - - .media-gallery, - &__action-bar, - .video-player, - .audio-player { - margin-top: 10px; - } - } - - .account { - padding: 15px 10px; - - &__header__bio { - margin: 0 -10px; - } - } - - .notification { - &__message { - margin-left: 48px + 15px * 2; - padding-top: 15px; - } - - &__favourite-icon-wrapper { - left: -32px; - } - - .status { - padding-top: 8px; - } - - .account { - padding-top: 8px; - } - - .account__avatar-wrapper { - margin-left: 17px; - margin-right: 15px; - } - } } @media screen and (min-width: $no-gap-breakpoint) { @@ -2805,10 +2701,7 @@ $ui-header-height: 55px; } .navigation-bar { - padding-top: 20px; - padding-bottom: 20px; flex: 0 1 48px; - min-height: 20px; } .compose-form { @@ -5303,24 +5196,6 @@ a.status-card.compact:hover { width: 480px; position: relative; flex-direction: column; - - .status__display-name { - display: block; - max-width: 100%; - padding-right: 25px; - } - - .status__avatar { - height: 28px; - left: 10px; - position: absolute; - top: 10px; - width: 48px; - } - - .status__content__spoiler-link { - color: lighten($secondary-text-color, 8%); - } } .actions-modal { @@ -5352,9 +5227,9 @@ a.status-card.compact:hover { .block-modal__action-bar { display: flex; justify-content: space-between; + align-items: center; background: $ui-secondary-color; - padding: 10px; - line-height: 36px; + padding: 15px; & > div { flex: 1 1 auto; @@ -5368,15 +5243,6 @@ a.status-card.compact:hover { } } -.boost-modal__status-header { - font-size: 15px; -} - -.boost-modal__status-time { - float: right; - font-size: 14px; -} - .mute-modal, .block-modal { line-height: 24px; @@ -5988,7 +5854,7 @@ a.status-card.compact:hover { font-size: 14px; border: 1px solid lighten($ui-base-color, 8%); border-radius: 4px; - margin-top: 14px; + margin-top: 16px; overflow: hidden; &__icon { @@ -6034,7 +5900,6 @@ a.status-card.compact:hover { &.compact { border: 0; - margin-top: 4px; .attachment-list__list { padding: 0; @@ -7177,6 +7042,7 @@ noscript { .account__header { overflow: hidden; + background: lighten($ui-base-color, 4%); &.inactive { opacity: 0.5; @@ -7210,8 +7076,7 @@ noscript { &__bar { position: relative; - background: lighten($ui-base-color, 4%); - padding: 5px; + padding: 0 20px; border-bottom: 1px solid lighten($ui-base-color, 12%); .avatar { @@ -7230,8 +7095,8 @@ noscript { &__tabs { display: flex; align-items: flex-start; - padding: 7px 10px; margin-top: -55px; + padding-top: 10px; &__buttons { display: flex; @@ -7249,7 +7114,8 @@ noscript { } &__name { - padding: 5px 10px; + margin-top: 16px; + margin-bottom: 16px; .account-role { vertical-align: top; @@ -7261,17 +7127,17 @@ noscript { } h1 { - font-size: 16px; - line-height: 24px; + font-size: 17px; + line-height: 22px; color: $primary-text-color; - font-weight: 500; + font-weight: 700; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; small { display: block; - font-size: 14px; + font-size: 15px; color: $darker-text-color; font-weight: 400; overflow: hidden; @@ -7286,34 +7152,41 @@ noscript { } &__bio { - overflow: hidden; - margin: 0 -5px; - .account__header__content { - padding: 20px 15px; - padding-bottom: 5px; color: $primary-text-color; - - .columns-area--mobile & { - padding-left: 20px; - padding-right: 20px; - } - } - - .account__header__joined { - font-size: 14px; - padding: 5px 15px; - color: $darker-text-color; - - .columns-area--mobile & { - padding-left: 20px; - padding-right: 20px; - } } .account__header__fields { margin: 0; - border-top: 1px solid lighten($ui-base-color, 12%); + margin-top: 16px; + border-radius: 4px; + background: darken($ui-base-color, 4%); + border: 0; + + dl { + display: block; + padding: 11px 16px; + border-bottom-color: lighten($ui-base-color, 4%); + } + + dd, + dt { + font-size: 13px; + line-height: 18px; + padding: 0; + text-align: initial; + } + + dt { + width: auto; + background: transparent; + text-transform: uppercase; + color: $dark-text-color; + } + + dd { + color: $darker-text-color; + } a { color: lighten($ui-highlight-color, 8%); @@ -7330,12 +7203,14 @@ noscript { } &__extra { - margin-top: 4px; + margin-top: 16px; &__links { font-size: 14px; color: $darker-text-color; - padding: 10px 0; + margin: 0 -10px; + padding-top: 16px; + padding-bottom: 10px; a { display: inline-block; @@ -7353,17 +7228,10 @@ noscript { } &__account-note { - padding: 15px; - padding-bottom: 10px; color: $primary-text-color; font-size: 14px; font-weight: 400; - border-bottom: 1px solid lighten($ui-base-color, 12%); - - .columns-area--mobile & { - padding-left: 20px; - padding-right: 20px; - } + margin-bottom: 10px; label { display: block; From 267978d4fe0eaee92f64d505df2a4a07d22f582c Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 25 Oct 2022 19:03:16 +0200 Subject: [PATCH 546/652] Remove navigation links to /explore when trends are disabled (#19415) * Remove navigation links to /explore when trends are disabled * Do not display trends interface when trends are disabled --- app/javascript/mastodon/features/explore/index.js | 3 ++- .../mastodon/features/getting_started/index.js | 10 +++++++++- .../features/ui/components/navigation_panel.js | 10 ++++++++-- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/app/javascript/mastodon/features/explore/index.js b/app/javascript/mastodon/features/explore/index.js index 1c7049e97..552def142 100644 --- a/app/javascript/mastodon/features/explore/index.js +++ b/app/javascript/mastodon/features/explore/index.js @@ -12,6 +12,7 @@ import Suggestions from './suggestions'; import Search from 'mastodon/features/compose/containers/search_container'; import SearchResults from './results'; import { Helmet } from 'react-helmet'; +import { showTrends } from 'mastodon/initial_state'; const messages = defineMessages({ title: { id: 'explore.title', defaultMessage: 'Explore' }, @@ -20,7 +21,7 @@ const messages = defineMessages({ const mapStateToProps = state => ({ layout: state.getIn(['meta', 'layout']), - isSearching: state.getIn(['search', 'submitted']), + isSearching: state.getIn(['search', 'submitted']) || !showTrends, }); export default @connect(mapStateToProps) diff --git a/app/javascript/mastodon/features/getting_started/index.js b/app/javascript/mastodon/features/getting_started/index.js index f002ffc77..fc91070d1 100644 --- a/app/javascript/mastodon/features/getting_started/index.js +++ b/app/javascript/mastodon/features/getting_started/index.js @@ -95,7 +95,15 @@ class GettingStarted extends ImmutablePureComponent { navItems.push( , - , + ); + + if (showTrends) { + navItems.push( + , + ); + } + + navItems.push( , , ); diff --git a/app/javascript/mastodon/features/ui/components/navigation_panel.js b/app/javascript/mastodon/features/ui/components/navigation_panel.js index 10678f7d8..4e9e39e2f 100644 --- a/app/javascript/mastodon/features/ui/components/navigation_panel.js +++ b/app/javascript/mastodon/features/ui/components/navigation_panel.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types'; import { defineMessages, injectIntl } from 'react-intl'; import { Link } from 'react-router-dom'; import Logo from 'mastodon/components/logo'; -import { timelinePreview } from 'mastodon/initial_state'; +import { timelinePreview, showTrends } from 'mastodon/initial_state'; import ColumnLink from './column_link'; import FollowRequestsColumnLink from './follow_requests_column_link'; import ListPanel from './list_panel'; @@ -24,6 +24,7 @@ const messages = defineMessages({ preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' }, followsAndFollowers: { id: 'navigation_bar.follows_and_followers', defaultMessage: 'Follows and followers' }, about: { id: 'navigation_bar.about', defaultMessage: 'About' }, + search: { id: 'navigation_bar.search', defaultMessage: 'Search' }, }); export default @injectIntl @@ -57,7 +58,12 @@ class NavigationPanel extends React.Component { )} - + {showTrends ? ( + + ) : ( + + )} + {(signedIn || timelinePreview) && ( <> From 6f01111863bfb15b3574c95c8d60d59ae1d79772 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 25 Oct 2022 21:43:33 +0200 Subject: [PATCH 547/652] Fix wrong size of avatars in admin UI (#19457) --- app/helpers/home_helper.rb | 2 +- app/javascript/styles/mastodon/widgets.scss | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/helpers/home_helper.rb b/app/helpers/home_helper.rb index 4da68500a..f41104709 100644 --- a/app/helpers/home_helper.rb +++ b/app/helpers/home_helper.rb @@ -23,7 +23,7 @@ module HomeHelper else link_to(path || ActivityPub::TagManager.instance.url_for(account), class: 'account__display-name') do content_tag(:div, class: 'account__avatar-wrapper') do - image_tag(full_asset_url(current_account&.user&.setting_auto_play_gif ? account.avatar_original_url : account.avatar_static_url), class: 'account__avatar') + image_tag(full_asset_url(current_account&.user&.setting_auto_play_gif ? account.avatar_original_url : account.avatar_static_url), class: 'account__avatar', width: 46, height: 46) end + content_tag(:span, class: 'display-name') do content_tag(:bdi) do diff --git a/app/javascript/styles/mastodon/widgets.scss b/app/javascript/styles/mastodon/widgets.scss index 260a97c6d..0e39dc87b 100644 --- a/app/javascript/styles/mastodon/widgets.scss +++ b/app/javascript/styles/mastodon/widgets.scss @@ -359,8 +359,9 @@ vertical-align: initial !important; } - &__interrelationships { + tbody td.accounts-table__interrelationships { width: 21px; + padding-right: 16px; } .fa { From 487d81fb92350974e20ee220553a10b5229f0880 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 25 Oct 2022 21:43:44 +0200 Subject: [PATCH 548/652] Fix IP blocks not having a unique index (#19456) --- app/controllers/admin/ip_blocks_controller.rb | 2 +- app/models/ip_block.rb | 1 + .../20221025171544_add_index_ip_blocks_on_ip.rb | 17 +++++++++++++++++ db/schema.rb | 3 ++- 4 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20221025171544_add_index_ip_blocks_on_ip.rb diff --git a/app/controllers/admin/ip_blocks_controller.rb b/app/controllers/admin/ip_blocks_controller.rb index a87520f4e..1bd7ec805 100644 --- a/app/controllers/admin/ip_blocks_controller.rb +++ b/app/controllers/admin/ip_blocks_controller.rb @@ -5,7 +5,7 @@ module Admin def index authorize :ip_block, :index? - @ip_blocks = IpBlock.page(params[:page]) + @ip_blocks = IpBlock.order(ip: :asc).page(params[:page]) @form = Form::IpBlockBatch.new end diff --git a/app/models/ip_block.rb b/app/models/ip_block.rb index 8666f4248..31343f0e1 100644 --- a/app/models/ip_block.rb +++ b/app/models/ip_block.rb @@ -25,6 +25,7 @@ class IpBlock < ApplicationRecord } validates :ip, :severity, presence: true + validates :ip, uniqueness: true after_commit :reset_cache diff --git a/db/migrate/20221025171544_add_index_ip_blocks_on_ip.rb b/db/migrate/20221025171544_add_index_ip_blocks_on_ip.rb new file mode 100644 index 000000000..0221369b7 --- /dev/null +++ b/db/migrate/20221025171544_add_index_ip_blocks_on_ip.rb @@ -0,0 +1,17 @@ +class AddIndexIpBlocksOnIp < ActiveRecord::Migration[6.1] + disable_ddl_transaction! + + def up + duplicates = IpBlock.connection.select_all('SELECT string_agg(id::text, \',\') AS ids FROM ip_blocks GROUP BY ip HAVING count(*) > 1').to_ary + + duplicates.each do |row| + IpBlock.where(id: row['ids'].split(',')[0...-1]).destroy_all + end + + add_index :ip_blocks, :ip, unique: true, algorithm: :concurrently + end + + def down + remove_index :ip_blocks, :ip, unique: true + end +end diff --git a/db/schema.rb b/db/schema.rb index ed00d9e74..d7e40b133 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2022_10_21_055441) do +ActiveRecord::Schema.define(version: 2022_10_25_171544) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -521,6 +521,7 @@ ActiveRecord::Schema.define(version: 2022_10_21_055441) do t.inet "ip", default: "0.0.0.0", null: false t.integer "severity", default: 0, null: false t.text "comment", default: "", null: false + t.index ["ip"], name: "index_ip_blocks_on_ip", unique: true end create_table "list_accounts", force: :cascade do |t| From 8f073818568b78b4adb858feb928b0da237d066a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 26 Oct 2022 09:10:18 +0200 Subject: [PATCH 549/652] Revert "Remove preference to aggregate reblogs in home/list feeds (#18112)" (#19463) This reverts commit af396fa35f589e1f759c7a3a0dad7932f1862309. --- app/lib/feed_manager.rb | 18 +++++++++--------- .../settings/preferences/other/show.html.haml | 3 +++ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb index f2d204a64..657e56ca6 100644 --- a/app/lib/feed_manager.rb +++ b/app/lib/feed_manager.rb @@ -58,7 +58,7 @@ class FeedManager # @param [Boolean] update # @return [Boolean] def push_to_home(account, status, update: false) - return false unless add_to_feed(:home, account.id, status, aggregate_reblogs: true) + return false unless add_to_feed(:home, account.id, status, aggregate_reblogs: account.user&.aggregates_reblogs?) trim(:home, account.id) PushUpdateWorker.perform_async(account.id, status.id, "timeline:#{account.id}", { 'update' => update }) if push_update_required?("timeline:#{account.id}") @@ -71,7 +71,7 @@ class FeedManager # @param [Boolean] update # @return [Boolean] def unpush_from_home(account, status, update: false) - return false unless remove_from_feed(:home, account.id, status, aggregate_reblogs: true) + return false unless remove_from_feed(:home, account.id, status, aggregate_reblogs: account.user&.aggregates_reblogs?) redis.publish("timeline:#{account.id}", Oj.dump(event: :delete, payload: status.id.to_s)) unless update true @@ -83,7 +83,7 @@ class FeedManager # @param [Boolean] update # @return [Boolean] def push_to_list(list, status, update: false) - return false if filter_from_list?(status, list) || !add_to_feed(:list, list.id, status, aggregate_reblogs: true) + return false if filter_from_list?(status, list) || !add_to_feed(:list, list.id, status, aggregate_reblogs: list.account.user&.aggregates_reblogs?) trim(:list, list.id) PushUpdateWorker.perform_async(list.account_id, status.id, "timeline:list:#{list.id}", { 'update' => update }) if push_update_required?("timeline:list:#{list.id}") @@ -96,7 +96,7 @@ class FeedManager # @param [Boolean] update # @return [Boolean] def unpush_from_list(list, status, update: false) - return false unless remove_from_feed(:list, list.id, status, aggregate_reblogs: true) + return false unless remove_from_feed(:list, list.id, status, aggregate_reblogs: list.account.user&.aggregates_reblogs?) redis.publish("timeline:list:#{list.id}", Oj.dump(event: :delete, payload: status.id.to_s)) unless update true @@ -108,7 +108,7 @@ class FeedManager # @return [void] def merge_into_home(from_account, into_account) timeline_key = key(:home, into_account.id) - aggregate = true + aggregate = into_account.user&.aggregates_reblogs? query = from_account.statuses.where(visibility: [:public, :unlisted, :private]).includes(:preloadable_poll, :media_attachments, reblog: :account).limit(FeedManager::MAX_ITEMS / 4) if redis.zcard(timeline_key) >= FeedManager::MAX_ITEMS / 4 @@ -134,7 +134,7 @@ class FeedManager # @return [void] def merge_into_list(from_account, list) timeline_key = key(:list, list.id) - aggregate = true + aggregate = list.account.user&.aggregates_reblogs? query = from_account.statuses.where(visibility: [:public, :unlisted, :private]).includes(:preloadable_poll, :media_attachments, reblog: :account).limit(FeedManager::MAX_ITEMS / 4) if redis.zcard(timeline_key) >= FeedManager::MAX_ITEMS / 4 @@ -163,7 +163,7 @@ class FeedManager timeline_status_ids = redis.zrange(timeline_key, 0, -1) from_account.statuses.select('id, reblog_of_id').where(id: timeline_status_ids).reorder(nil).find_each do |status| - remove_from_feed(:home, into_account.id, status, aggregate_reblogs: true) + remove_from_feed(:home, into_account.id, status, aggregate_reblogs: into_account.user&.aggregates_reblogs?) end end @@ -176,7 +176,7 @@ class FeedManager timeline_status_ids = redis.zrange(timeline_key, 0, -1) from_account.statuses.select('id, reblog_of_id').where(id: timeline_status_ids).reorder(nil).find_each do |status| - remove_from_feed(:list, list.id, status, aggregate_reblogs: true) + remove_from_feed(:list, list.id, status, aggregate_reblogs: list.account.user&.aggregates_reblogs?) end end @@ -235,7 +235,7 @@ class FeedManager # @return [void] def populate_home(account) limit = FeedManager::MAX_ITEMS / 2 - aggregate = true + aggregate = account.user&.aggregates_reblogs? timeline_key = key(:home, account.id) account.statuses.limit(limit).each do |status| diff --git a/app/views/settings/preferences/other/show.html.haml b/app/views/settings/preferences/other/show.html.haml index 379678703..44f4af2eb 100644 --- a/app/views/settings/preferences/other/show.html.haml +++ b/app/views/settings/preferences/other/show.html.haml @@ -10,6 +10,9 @@ .fields-group = f.input :setting_noindex, as: :boolean, wrapper: :with_label + .fields-group + = f.input :setting_aggregate_reblogs, as: :boolean, wrapper: :with_label, recommended: true + %h4= t 'preferences.posting_defaults' .fields-row From 1ae508bf2faae016b88d15e273b0dc01de4fd7af Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 26 Oct 2022 12:10:02 +0200 Subject: [PATCH 550/652] Change unauthenticated search to not support pagination in REST API (#19326) - Only exact search matches for queries with < 5 characters - Do not support queries with `offset` (pagination) - Return HTTP 401 on truthy `resolve` instead of overriding to false --- app/controllers/api/v2/search_controller.rb | 13 +++- app/services/account_search_service.rb | 5 ++ .../api/v2/search_controller_spec.rb | 62 ++++++++++++++++--- 3 files changed, 71 insertions(+), 9 deletions(-) diff --git a/app/controllers/api/v2/search_controller.rb b/app/controllers/api/v2/search_controller.rb index e384ecbaf..4d20aeb10 100644 --- a/app/controllers/api/v2/search_controller.rb +++ b/app/controllers/api/v2/search_controller.rb @@ -6,6 +6,7 @@ class Api::V2::SearchController < Api::BaseController RESULTS_LIMIT = 20 before_action -> { authorize_if_got_token! :read, :'read:search' } + before_action :validate_search_params! def index @search = Search.new(search_results) @@ -18,12 +19,22 @@ class Api::V2::SearchController < Api::BaseController private + def validate_search_params! + params.require(:q) + + return if user_signed_in? + + return render json: { error: 'Search queries pagination is not supported without authentication' }, status: 401 if params[:offset].present? + + render json: { error: 'Search queries that resolve remote resources are not supported without authentication' }, status: 401 if truthy_param?(:resolve) + end + def search_results SearchService.new.call( params[:q], current_account, limit_param(RESULTS_LIMIT), - search_params.merge(resolve: user_signed_in? ? truthy_param?(:resolve) : false, exclude_unreviewed: truthy_param?(:exclude_unreviewed)) + search_params.merge(resolve: truthy_param?(:resolve), exclude_unreviewed: truthy_param?(:exclude_unreviewed)) ) end diff --git a/app/services/account_search_service.rb b/app/services/account_search_service.rb index 4dcae20eb..35b2e05f5 100644 --- a/app/services/account_search_service.rb +++ b/app/services/account_search_service.rb @@ -3,6 +3,9 @@ class AccountSearchService < BaseService attr_reader :query, :limit, :offset, :options, :account + # Min. number of characters to look for non-exact matches + MIN_QUERY_LENGTH = 5 + def call(query, account = nil, options = {}) @acct_hint = query&.start_with?('@') @query = query&.strip&.gsub(/\A@/, '') @@ -135,6 +138,8 @@ class AccountSearchService < BaseService end def limit_for_non_exact_results + return 0 if @account.nil? && query.size < MIN_QUERY_LENGTH + if exact_match? limit - 1 else diff --git a/spec/controllers/api/v2/search_controller_spec.rb b/spec/controllers/api/v2/search_controller_spec.rb index fa20e1e51..d417ea58c 100644 --- a/spec/controllers/api/v2/search_controller_spec.rb +++ b/spec/controllers/api/v2/search_controller_spec.rb @@ -5,18 +5,64 @@ require 'rails_helper' RSpec.describe Api::V2::SearchController, type: :controller do render_views - let(:user) { Fabricate(:user) } - let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:search') } + context 'with token' do + let(:user) { Fabricate(:user) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:search') } - before do - allow(controller).to receive(:doorkeeper_token) { token } + before do + allow(controller).to receive(:doorkeeper_token) { token } + end + + describe 'GET #index' do + before do + get :index, params: { q: 'test' } + end + + it 'returns http success' do + expect(response).to have_http_status(200) + end + end end - describe 'GET #index' do - it 'returns http success' do - get :index, params: { q: 'test' } + context 'without token' do + describe 'GET #index' do + let(:search_params) {} - expect(response).to have_http_status(200) + before do + get :index, params: search_params + end + + context 'with a `q` shorter than 5 characters' do + let(:search_params) { { q: 'test' } } + + it 'returns http success' do + expect(response).to have_http_status(200) + end + end + + context 'with a `q` equal to or longer than 5 characters' do + let(:search_params) { { q: 'test1' } } + + it 'returns http success' do + expect(response).to have_http_status(200) + end + + context 'with truthy `resolve`' do + let(:search_params) { { q: 'test1', resolve: '1' } } + + it 'returns http unauthorized' do + expect(response).to have_http_status(401) + end + end + + context 'with `offset`' do + let(:search_params) { { q: 'test1', offset: 1 } } + + it 'returns http unauthorized' do + expect(response).to have_http_status(401) + end + end + end end end end From bf0ab3e0fac54515c13beef4ec09b0455f1bce67 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 26 Oct 2022 12:10:48 +0200 Subject: [PATCH 551/652] Fix vacuum scheduler missing lock, locks never expiring (#19458) Remove vacuuming of orphaned preview cards --- app/lib/vacuum/media_attachments_vacuum.rb | 2 +- app/lib/vacuum/preview_cards_vacuum.rb | 9 --------- app/workers/scheduler/vacuum_scheduler.rb | 2 +- config/initializers/sidekiq.rb | 1 + spec/lib/vacuum/preview_cards_vacuum_spec.rb | 4 ---- 5 files changed, 3 insertions(+), 15 deletions(-) diff --git a/app/lib/vacuum/media_attachments_vacuum.rb b/app/lib/vacuum/media_attachments_vacuum.rb index 7fb347ce4..7c0a85a9d 100644 --- a/app/lib/vacuum/media_attachments_vacuum.rb +++ b/app/lib/vacuum/media_attachments_vacuum.rb @@ -8,8 +8,8 @@ class Vacuum::MediaAttachmentsVacuum end def perform - vacuum_cached_files! if retention_period? vacuum_orphaned_records! + vacuum_cached_files! if retention_period? end private diff --git a/app/lib/vacuum/preview_cards_vacuum.rb b/app/lib/vacuum/preview_cards_vacuum.rb index 84ef100ed..14fdeda1c 100644 --- a/app/lib/vacuum/preview_cards_vacuum.rb +++ b/app/lib/vacuum/preview_cards_vacuum.rb @@ -9,7 +9,6 @@ class Vacuum::PreviewCardsVacuum def perform vacuum_cached_images! if retention_period? - vacuum_orphaned_records! end private @@ -21,18 +20,10 @@ class Vacuum::PreviewCardsVacuum end end - def vacuum_orphaned_records! - orphaned_preview_cards.in_batches.destroy_all - end - def preview_cards_past_retention_period PreviewCard.cached.where(PreviewCard.arel_table[:updated_at].lt(@retention_period.ago)) end - def orphaned_preview_cards - PreviewCard.where('NOT EXISTS (SELECT 1 FROM preview_cards_statuses WHERE preview_cards_statuses.preview_card_id = preview_cards.id)').where(PreviewCard.arel_table[:created_at].lt(TTL.ago)) - end - def retention_period? @retention_period.present? end diff --git a/app/workers/scheduler/vacuum_scheduler.rb b/app/workers/scheduler/vacuum_scheduler.rb index ce88ff204..9544f808b 100644 --- a/app/workers/scheduler/vacuum_scheduler.rb +++ b/app/workers/scheduler/vacuum_scheduler.rb @@ -3,7 +3,7 @@ class Scheduler::VacuumScheduler include Sidekiq::Worker - sidekiq_options retry: 0 + sidekiq_options retry: 0, lock: :until_executed def perform vacuum_operations.each do |operation| diff --git a/config/initializers/sidekiq.rb b/config/initializers/sidekiq.rb index c1327053d..9d2abf074 100644 --- a/config/initializers/sidekiq.rb +++ b/config/initializers/sidekiq.rb @@ -35,4 +35,5 @@ SidekiqUniqueJobs.configure do |config| config.reaper_count = 1000 config.reaper_interval = 600 config.reaper_timeout = 150 + config.lock_ttl = 50.days.to_i end diff --git a/spec/lib/vacuum/preview_cards_vacuum_spec.rb b/spec/lib/vacuum/preview_cards_vacuum_spec.rb index 4a4a599fa..275f9ba92 100644 --- a/spec/lib/vacuum/preview_cards_vacuum_spec.rb +++ b/spec/lib/vacuum/preview_cards_vacuum_spec.rb @@ -28,9 +28,5 @@ RSpec.describe Vacuum::PreviewCardsVacuum do it 'does not delete attached preview cards' do expect(new_preview_card.reload).to be_persisted end - - it 'deletes preview cards not attached to any status' do - expect { orphaned_preview_card.reload }.to raise_error ActiveRecord::RecordNotFound - end end end From 7d25f72b9fb5f2940b998579da00a11f8a65fb40 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 26 Oct 2022 13:00:43 +0200 Subject: [PATCH 552/652] Fix negatives values in search index causing queries to fail (#19464) --- app/services/account_search_service.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/services/account_search_service.rb b/app/services/account_search_service.rb index 35b2e05f5..de1dc7b8e 100644 --- a/app/services/account_search_service.rb +++ b/app/services/account_search_service.rb @@ -105,7 +105,7 @@ class AccountSearchService < BaseService { script_score: { script: { - source: "(doc['followers_count'].value + 0.0) / (doc['followers_count'].value + doc['following_count'].value + 1)", + source: "(Math.max(doc['followers_count'].value, 0) + 0.0) / (Math.max(doc['followers_count'].value, 0) + Math.max(doc['following_count'].value, 0) + 1)", }, }, } @@ -113,10 +113,10 @@ class AccountSearchService < BaseService def followers_score_function { - field_value_factor: { - field: 'followers_count', - modifier: 'log2p', - missing: 0, + script_score: { + script: { + source: "log2p(Math.max(doc['followers_count'].value, 0))", + }, }, } end From 54189e9fc49b496da7a4aac6276131d28bac79dd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 20:11:05 +0900 Subject: [PATCH 553/652] Bump bufferutil from 4.0.6 to 4.0.7 (#19442) Bumps [bufferutil](https://github.com/websockets/bufferutil) from 4.0.6 to 4.0.7. - [Release notes](https://github.com/websockets/bufferutil/releases) - [Commits](https://github.com/websockets/bufferutil/compare/v4.0.6...v4.0.7) --- updated-dependencies: - dependency-name: bufferutil dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index fc84309e1..f1ada9d5f 100644 --- a/package.json +++ b/package.json @@ -169,7 +169,7 @@ "kind-of": "^6.0.3" }, "optionalDependencies": { - "bufferutil": "^4.0.6", + "bufferutil": "^4.0.7", "utf-8-validate": "^5.0.9" } } diff --git a/yarn.lock b/yarn.lock index 7ec3b2846..5ea8315e6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3095,10 +3095,10 @@ buffer@^6.0.3: base64-js "^1.3.1" ieee754 "^1.2.1" -bufferutil@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.6.tgz#ebd6c67c7922a0e902f053e5d8be5ec850e48433" - integrity sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw== +bufferutil@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.7.tgz#60c0d19ba2c992dd8273d3f73772ffc894c153ad" + integrity sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw== dependencies: node-gyp-build "^4.3.0" From 0f02e97c011b7a94994ebcf0447f7c97e3c1f989 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 20:11:55 +0900 Subject: [PATCH 554/652] Bump @babel/core from 7.19.3 to 7.19.6 (#19448) Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.19.3 to 7.19.6. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.19.6/packages/babel-core) --- updated-dependencies: - dependency-name: "@babel/core" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 89 ++++++++++++++++++++++++++++------------------------ 2 files changed, 49 insertions(+), 42 deletions(-) diff --git a/package.json b/package.json index f1ada9d5f..befb31217 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ }, "private": true, "dependencies": { - "@babel/core": "^7.19.3", + "@babel/core": "^7.19.6", "@babel/plugin-proposal-decorators": "^7.19.3", "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.19.1", diff --git a/yarn.lock b/yarn.lock index 5ea8315e6..a3a5d9702 100644 --- a/yarn.lock +++ b/yarn.lock @@ -42,21 +42,21 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.4.tgz#95c86de137bf0317f3a570e1b6e996b427299747" integrity sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw== -"@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.19.3", "@babel/core@^7.7.2": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.3.tgz#2519f62a51458f43b682d61583c3810e7dcee64c" - integrity sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ== +"@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.19.6", "@babel/core@^7.7.2": + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.6.tgz#7122ae4f5c5a37c0946c066149abd8e75f81540f" + integrity sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.3" + "@babel/generator" "^7.19.6" "@babel/helper-compilation-targets" "^7.19.3" - "@babel/helper-module-transforms" "^7.19.0" - "@babel/helpers" "^7.19.0" - "@babel/parser" "^7.19.3" + "@babel/helper-module-transforms" "^7.19.6" + "@babel/helpers" "^7.19.4" + "@babel/parser" "^7.19.6" "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.3" - "@babel/types" "^7.19.3" + "@babel/traverse" "^7.19.6" + "@babel/types" "^7.19.4" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -72,12 +72,12 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.0" -"@babel/generator@^7.19.3", "@babel/generator@^7.7.2": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.3.tgz#d7f4d1300485b4547cb6f94b27d10d237b42bf59" - integrity sha512-fqVZnmp1ncvZU757UzDheKZpfPgatqY59XtW2/j/18H7u76akb8xqvjw82f+i2UKd/ksYsSick/BCLQUUtJ/qQ== +"@babel/generator@^7.19.6", "@babel/generator@^7.7.2": + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.6.tgz#9e481a3fe9ca6261c972645ae3904ec0f9b34a1d" + integrity sha512-oHGRUQeoX1QrKeJIKVe0hwjGqNnVYsM5Nep5zo0uE0m42sLH+Fsd2pStJ5sRM1bNyTUUoz0pe2lTeMJrb/taTA== dependencies: - "@babel/types" "^7.19.3" + "@babel/types" "^7.19.4" "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" @@ -217,19 +217,19 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz#309b230f04e22c58c6a2c0c0c7e50b216d350c30" - integrity sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ== +"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.0", "@babel/helper-module-transforms@^7.19.6": + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.19.6.tgz#6c52cc3ac63b70952d33ee987cbee1c9368b533f" + integrity sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw== dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" + "@babel/helper-simple-access" "^7.19.4" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.0" - "@babel/types" "^7.19.0" + "@babel/traverse" "^7.19.6" + "@babel/types" "^7.19.4" "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" @@ -281,6 +281,13 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-simple-access@^7.19.4": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz#be553f4951ac6352df2567f7daa19a0ee15668e7" + integrity sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg== + dependencies: + "@babel/types" "^7.19.4" + "@babel/helper-skip-transparent-expression-wrappers@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz#778d87b3a758d90b471e7b9918f34a9a02eb5818" @@ -340,14 +347,14 @@ "@babel/traverse" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/helpers@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.19.0.tgz#f30534657faf246ae96551d88dd31e9d1fa1fc18" - integrity sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg== +"@babel/helpers@^7.19.4": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.19.4.tgz#42154945f87b8148df7203a25c31ba9a73be46c5" + integrity sha512-G+z3aOx2nfDHwX/kyVii5fJq+bgscg89/dJNWpYeKeBv3v9xX8EIabmx1k6u9LS04H7nROFVRVK+e3k0VHp+sw== dependencies: "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.0" - "@babel/types" "^7.19.0" + "@babel/traverse" "^7.19.4" + "@babel/types" "^7.19.4" "@babel/highlight@^7.10.4": version "7.12.13" @@ -367,10 +374,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.19.3": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.3.tgz#8dd36d17c53ff347f9e55c328710321b49479a9a" - integrity sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.19.6": + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.6.tgz#b923430cb94f58a7eae8facbffa9efd19130e7f8" + integrity sha512-h1IUp81s2JYJ3mRkdxJgs4UvmSsRvDrx5ICSJbPvtWYv5i1nTBGcBpnog+89rAFMwvvru6E5NUHdBe01UeSzYA== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" @@ -1116,23 +1123,23 @@ "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.6", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.19.3", "@babel/traverse@^7.7.2": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.3.tgz#3a3c5348d4988ba60884e8494b0592b2f15a04b4" - integrity sha512-qh5yf6149zhq2sgIXmwjnsvmnNQC2iw70UFjp4olxucKrWd/dvlUsBI88VSLUsnMNF7/vnOiA+nk1+yLoCqROQ== +"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.6", "@babel/traverse@^7.19.1", "@babel/traverse@^7.19.4", "@babel/traverse@^7.19.6", "@babel/traverse@^7.7.2": + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.6.tgz#7b4c865611df6d99cb131eec2e8ac71656a490dc" + integrity sha512-6l5HrUCzFM04mfbG09AagtYyR2P0B71B1wN7PfSPiksDPz2k5H9CBC1tcZpz2M8OxbKTPccByoOJ22rUKbpmQQ== dependencies: "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.3" + "@babel/generator" "^7.19.6" "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-function-name" "^7.19.0" "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.19.3" - "@babel/types" "^7.19.3" + "@babel/parser" "^7.19.6" + "@babel/types" "^7.19.4" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.19.3", "@babel/types@^7.19.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.19.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.19.4" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.4.tgz#0dd5c91c573a202d600490a35b33246fed8a41c7" integrity sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw== From 89fbdcdf30015a99df7e42c4a4ed9395789b4d60 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 20:12:38 +0900 Subject: [PATCH 555/652] Bump @babel/plugin-transform-runtime from 7.19.1 to 7.19.6 (#19446) Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.19.1 to 7.19.6. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.19.6/packages/babel-plugin-transform-runtime) --- updated-dependencies: - dependency-name: "@babel/plugin-transform-runtime" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index befb31217..8cf85905c 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "@babel/core": "^7.19.6", "@babel/plugin-proposal-decorators": "^7.19.3", "@babel/plugin-transform-react-inline-elements": "^7.18.6", - "@babel/plugin-transform-runtime": "^7.19.1", + "@babel/plugin-transform-runtime": "^7.19.6", "@babel/preset-env": "^7.19.4", "@babel/preset-react": "^7.18.6", "@babel/runtime": "^7.19.4", diff --git a/yarn.lock b/yarn.lock index a3a5d9702..186f4bb10 100644 --- a/yarn.lock +++ b/yarn.lock @@ -925,10 +925,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-runtime@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.1.tgz#a3df2d7312eea624c7889a2dcd37fd1dfd25b2c6" - integrity sha512-2nJjTUFIzBMP/f/miLxEK9vxwW/KUXsdvN4sR//TmuDhe6yU2h57WmIOE12Gng3MDP/xpjUV/ToZRdcf8Yj4fA== +"@babel/plugin-transform-runtime@^7.19.6": + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz#9d2a9dbf4e12644d6f46e5e75bfbf02b5d6e9194" + integrity sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw== dependencies: "@babel/helper-module-imports" "^7.18.6" "@babel/helper-plugin-utils" "^7.19.0" From 1a05258cd1b2fef3327f8c407c083434f5dd3c56 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 20:13:05 +0900 Subject: [PATCH 556/652] Bump eslint-plugin-promise from 6.1.0 to 6.1.1 (#19443) Bumps [eslint-plugin-promise](https://github.com/eslint-community/eslint-plugin-promise) from 6.1.0 to 6.1.1. - [Release notes](https://github.com/eslint-community/eslint-plugin-promise/releases) - [Changelog](https://github.com/eslint-community/eslint-plugin-promise/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint-community/eslint-plugin-promise/compare/v6.1.0...v6.1.1) --- updated-dependencies: - dependency-name: eslint-plugin-promise dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 8cf85905c..c0961e195 100644 --- a/package.json +++ b/package.json @@ -151,7 +151,7 @@ "eslint": "^7.32.0", "eslint-plugin-import": "~2.26.0", "eslint-plugin-jsx-a11y": "~6.6.1", - "eslint-plugin-promise": "~6.1.0", + "eslint-plugin-promise": "~6.1.1", "eslint-plugin-react": "~7.31.10", "jest": "^29.1.2", "jest-environment-jsdom": "^29.1.2", diff --git a/yarn.lock b/yarn.lock index 186f4bb10..96d56b525 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4678,10 +4678,10 @@ eslint-plugin-jsx-a11y@~6.6.1: minimatch "^3.1.2" semver "^6.3.0" -eslint-plugin-promise@~6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.1.0.tgz#99e54d07272df5a6440209cb36d0d692be0610dd" - integrity sha512-NYCfDZF/KHt27p06nFAttgWuFyIDSUMnNaJBIY1FY9GpBFhdT2vMG64HlFguSgcJeyM5by6Yr5csSOuJm60eXQ== +eslint-plugin-promise@~6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz#269a3e2772f62875661220631bd4dafcb4083816" + integrity sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig== eslint-plugin-react@~7.31.10: version "7.31.10" From 2015e6b331c5026b88cc744c834c781f08df18d4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 20:13:37 +0900 Subject: [PATCH 557/652] Bump react-select from 5.5.1 to 5.5.4 (#19451) Bumps [react-select](https://github.com/JedWatson/react-select) from 5.5.1 to 5.5.4. - [Release notes](https://github.com/JedWatson/react-select/releases) - [Changelog](https://github.com/JedWatson/react-select/blob/master/docs/CHANGELOG.md) - [Commits](https://github.com/JedWatson/react-select/compare/react-select@5.5.1...react-select@5.5.4) --- updated-dependencies: - dependency-name: react-select dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index c0961e195..c5db01d35 100644 --- a/package.json +++ b/package.json @@ -105,7 +105,7 @@ "react-redux-loading-bar": "^5.0.4", "react-router-dom": "^4.1.1", "react-router-scroll-4": "^1.0.0-beta.1", - "react-select": "^5.5.1", + "react-select": "^5.5.4", "react-sparklines": "^1.7.0", "react-swipeable-views": "^0.14.0", "react-textarea-autosize": "^8.3.4", diff --git a/yarn.lock b/yarn.lock index 96d56b525..edc0e3ee5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7447,10 +7447,10 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -memoize-one@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.1.1.tgz#047b6e3199b508eaec03504de71229b8eb1d75c0" - integrity sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA== +memoize-one@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-6.0.0.tgz#b2591b871ed82948aee4727dc6abceeeac8c1045" + integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw== memory-fs@^0.4.1: version "0.4.1" @@ -9403,17 +9403,17 @@ react-router@^4.3.1: prop-types "^15.6.1" warning "^4.0.1" -react-select@^5.5.1: - version "5.5.1" - resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.5.1.tgz#60cc6767e77396cdf1d6f49a10555b80d27e749a" - integrity sha512-zOXIKvNqrnBn030Goi7pRHfLJHnvjPweA4uDyj9me8YPqgkaJp+vX3eNGHOzTlI442rbfPUMGrEZQnymJn/XUg== +react-select@^5.5.4: + version "5.5.4" + resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.5.4.tgz#da05b8b66d33f6fc1f92fdccd0fa50d7f4418554" + integrity sha512-lyr19joBUm/CNJgjZMBSnFvJ/MeHCmBYvQ050qYAP3EPa7Oenlnx9guhU+SW0goYgxLQyqwRvkFllQpFAp8tmQ== dependencies: "@babel/runtime" "^7.12.0" "@emotion/cache" "^11.4.0" "@emotion/react" "^11.8.1" "@floating-ui/dom" "^1.0.1" "@types/react-transition-group" "^4.4.0" - memoize-one "^5.0.0" + memoize-one "^6.0.0" prop-types "^15.6.0" react-transition-group "^4.3.0" use-isomorphic-layout-effect "^1.1.2" From 945f44fb6e48eb31cb71e3cd2d253ea8d0e5de9c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 20:14:33 +0900 Subject: [PATCH 558/652] Bump npmlog from 7.0.0 to 7.0.1 (#19447) Bumps [npmlog](https://github.com/npm/npmlog) from 7.0.0 to 7.0.1. - [Release notes](https://github.com/npm/npmlog/releases) - [Changelog](https://github.com/npm/npmlog/blob/main/CHANGELOG.md) - [Commits](https://github.com/npm/npmlog/compare/v7.0.0...v7.0.1) --- updated-dependencies: - dependency-name: npmlog dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index c5db01d35..85f489196 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,7 @@ "marky": "^1.2.5", "mini-css-extract-plugin": "^1.6.2", "mkdirp": "^1.0.4", - "npmlog": "^7.0.0", + "npmlog": "^7.0.1", "object-assign": "^4.1.1", "object-fit-images": "^3.2.3", "object.values": "^1.1.5", diff --git a/yarn.lock b/yarn.lock index edc0e3ee5..fc9a69a93 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7935,10 +7935,10 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -npmlog@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-7.0.0.tgz#09731bbb33019813704d6635b55f35a1b1784b34" - integrity sha512-p+OVCIQx1Rehplt2DNgBERrKtE5Ej0/rqdcNz5PbohpKHDPprGAl142qQuozmzWUM9uNjvstEO+A92CwytJPcQ== +npmlog@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-7.0.1.tgz#7372151a01ccb095c47d8bf1d0771a4ff1f53ac8" + integrity sha512-uJ0YFk/mCQpLBt+bxN88AKd+gyqZvZDbtiNxk6Waqcj2aPRyfVx8ITawkyQynxUagInjdYT1+qj4NfA5KJJUxg== dependencies: are-we-there-yet "^4.0.0" console-control-strings "^1.1.0" From 940e80a81b8d3c08526cde67cacf5653b2ffb4da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 20:15:38 +0900 Subject: [PATCH 559/652] Bump ws from 8.9.0 to 8.10.0 (#19450) Bumps [ws](https://github.com/websockets/ws) from 8.9.0 to 8.10.0. - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/8.9.0...8.10.0) --- updated-dependencies: - dependency-name: ws dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 85f489196..a28a73dbe 100644 --- a/package.json +++ b/package.json @@ -141,7 +141,7 @@ "workbox-strategies": "^6.5.4", "workbox-webpack-plugin": "^6.5.4", "workbox-window": "^6.5.4", - "ws": "^8.9.0" + "ws": "^8.10.0" }, "devDependencies": { "@babel/eslint-parser": "^7.19.1", diff --git a/yarn.lock b/yarn.lock index fc9a69a93..246e55afe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12078,10 +12078,10 @@ ws@^7.3.1: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== -ws@^8.9.0: - version "8.9.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.9.0.tgz#2a994bb67144be1b53fe2d23c53c028adeb7f45e" - integrity sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg== +ws@^8.10.0, ws@^8.9.0: + version "8.10.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.10.0.tgz#00a28c09dfb76eae4eb45c3b565f771d6951aa51" + integrity sha512-+s49uSmZpvtAsd2h37vIPy1RBusaLawVe8of+GyEPsaJTCMpj/2v8NpeK1SHXjBlQ95lQTmQofOJnFiLoaN3yw== xml-name-validator@^4.0.0: version "4.0.0" From 3de6c9c02dbc8ef535aeca825b16e698ba939b18 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 20:16:26 +0900 Subject: [PATCH 560/652] Bump babel-jest from 29.1.2 to 29.2.1 (#19444) Bumps [babel-jest](https://github.com/facebook/jest/tree/HEAD/packages/babel-jest) from 29.1.2 to 29.2.1. - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v29.2.1/packages/babel-jest) --- updated-dependencies: - dependency-name: babel-jest dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 104 +++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 82 insertions(+), 24 deletions(-) diff --git a/package.json b/package.json index a28a73dbe..5fe00c552 100644 --- a/package.json +++ b/package.json @@ -147,7 +147,7 @@ "@babel/eslint-parser": "^7.19.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^12.1.5", - "babel-jest": "^29.1.2", + "babel-jest": "^29.2.1", "eslint": "^7.32.0", "eslint-plugin-import": "~2.26.0", "eslint-plugin-jsx-a11y": "~6.6.1", diff --git a/yarn.lock b/yarn.lock index 246e55afe..98f83b323 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1485,22 +1485,22 @@ jest-haste-map "^29.1.2" slash "^3.0.0" -"@jest/transform@^29.1.2": - version "29.1.2" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.1.2.tgz#20f814696e04f090421f6d505c14bbfe0157062a" - integrity sha512-2uaUuVHTitmkx1tHF+eBjb4p7UuzBG7SXIaA/hNIkaMP6K+gXYGxP38ZcrofzqN0HeZ7A90oqsOa97WU7WZkSw== +"@jest/transform@^29.1.2", "@jest/transform@^29.2.1": + version "29.2.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.2.1.tgz#f3d8154edd19cdbcaf1d6646bd8f4ff7812318a2" + integrity sha512-xup+iEuaIRSQabQaeqxaQyN0vg1Dctrp9oTObQsNf3sZEowTIa5cANYuoyi8Tqhg4GCqEVLTf18KW7ii0UeFVA== dependencies: "@babel/core" "^7.11.6" - "@jest/types" "^29.1.2" + "@jest/types" "^29.2.1" "@jridgewell/trace-mapping" "^0.3.15" babel-plugin-istanbul "^6.1.1" chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.1.0" graceful-fs "^4.2.9" - jest-haste-map "^29.1.2" - jest-regex-util "^29.0.0" - jest-util "^29.1.2" + jest-haste-map "^29.2.1" + jest-regex-util "^29.2.0" + jest-util "^29.2.1" micromatch "^4.0.4" pirates "^4.0.4" slash "^3.0.0" @@ -1539,6 +1539,18 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" +"@jest/types@^29.2.1": + version "29.2.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.2.1.tgz#ec9c683094d4eb754e41e2119d8bdaef01cf6da0" + integrity sha512-O/QNDQODLnINEPAI0cl9U6zUIDXEWXt6IC1o2N2QENuos7hlGUIthlKyV4p6ki3TvXFX071blj8HUhgLGquPjw== + dependencies: + "@jest/schemas" "^29.0.0" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + "@jridgewell/gen-mapping@^0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" @@ -2655,15 +2667,15 @@ axobject-query@^2.2.0: resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== -babel-jest@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.1.2.tgz#540d3241925c55240fb0c742e3ffc5f33a501978" - integrity sha512-IuG+F3HTHryJb7gacC7SQ59A9kO56BctUsT67uJHp1mMCHUOMXpDwOHWGifWqdWVknN2WNkCVQELPjXx0aLJ9Q== +babel-jest@^29.1.2, babel-jest@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.2.1.tgz#213c47e28072de11bdb98c9d29b89f2ab99664f1" + integrity sha512-gQJwArok0mqoREiCYhXKWOgUhElJj9DpnssW6GL8dG7ARYqHEhrM9fmPHTjdqEGRVXZAd6+imo3/Vwa8TjLcsw== dependencies: - "@jest/transform" "^29.1.2" + "@jest/transform" "^29.2.1" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^29.0.2" + babel-preset-jest "^29.2.0" chalk "^4.0.0" graceful-fs "^4.2.9" slash "^3.0.0" @@ -2696,10 +2708,10 @@ babel-plugin-istanbul@^6.1.1: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^29.0.2: - version "29.0.2" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.0.2.tgz#ae61483a829a021b146c016c6ad39b8bcc37c2c8" - integrity sha512-eBr2ynAEFjcebVvu8Ktx580BD1QKCrBG1XwEUTXJe285p9HA/4hOhfWCFRQhTKSyBV0VzjhG7H91Eifz9s29hg== +babel-plugin-jest-hoist@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.2.0.tgz#23ee99c37390a98cfddf3ef4a78674180d823094" + integrity sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" @@ -2805,12 +2817,12 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^29.0.2: - version "29.0.2" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.0.2.tgz#e14a7124e22b161551818d89e5bdcfb3b2b0eac7" - integrity sha512-BeVXp7rH5TK96ofyEnHjznjLMQ2nAeDJ+QzxKnHAAMs0RgrQsCywjAN8m4mOm5Di0pxU//3AoEeJJrerMH5UeA== +babel-preset-jest@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.2.0.tgz#3048bea3a1af222e3505e4a767a974c95a7620dc" + integrity sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA== dependencies: - babel-plugin-jest-hoist "^29.0.2" + babel-plugin-jest-hoist "^29.2.0" babel-preset-current-node-syntax "^1.0.0" balanced-match@^1.0.0: @@ -6749,6 +6761,25 @@ jest-haste-map@^29.1.2: optionalDependencies: fsevents "^2.3.2" +jest-haste-map@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.2.1.tgz#f803fec57f8075e6c55fb5cd551f99a72471c699" + integrity sha512-wF460rAFmYc6ARcCFNw4MbGYQjYkvjovb9GBT+W10Um8q5nHq98jD6fHZMDMO3tA56S8XnmNkM8GcA8diSZfnA== + dependencies: + "@jest/types" "^29.2.1" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.2.0" + jest-util "^29.2.1" + jest-worker "^29.2.1" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + jest-leak-detector@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.1.2.tgz#4c846db14c58219430ccbc4f01a1ec52ebee4fc2" @@ -6801,6 +6832,11 @@ jest-regex-util@^29.0.0: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.0.0.tgz#b442987f688289df8eb6c16fa8df488b4cd007de" integrity sha512-BV7VW7Sy0fInHWN93MMPtlClweYv2qrSCwfeFWmpribGZtQPWNvRSq9XOVgOEjU1iBGRKXUZil0o2AH7Iy9Lug== +jest-regex-util@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.2.0.tgz#82ef3b587e8c303357728d0322d48bbfd2971f7b" + integrity sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA== + jest-resolve-dependencies@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.1.2.tgz#a6919e58a0c7465582cb8ec2d745b4e64ae8647f" @@ -6921,6 +6957,18 @@ jest-util@^29.1.2: graceful-fs "^4.2.9" picomatch "^2.2.3" +jest-util@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.2.1.tgz#f26872ba0dc8cbefaba32c34f98935f6cf5fc747" + integrity sha512-P5VWDj25r7kj7kl4pN2rG/RN2c1TLfYYYZYULnS/35nFDjBai+hBeo3MDrYZS7p6IoY3YHZnt2vq4L6mKnLk0g== + dependencies: + "@jest/types" "^29.2.1" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + jest-validate@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.1.2.tgz#83a728b8f6354da2e52346878c8bc7383516ca51" @@ -6975,6 +7023,16 @@ jest-worker@^29.1.2: merge-stream "^2.0.0" supports-color "^8.0.0" +jest-worker@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.2.1.tgz#8ba68255438252e1674f990f0180c54dfa26a3b1" + integrity sha512-ROHTZ+oj7sBrgtv46zZ84uWky71AoYi0vEV9CdEtc1FQunsoAGe5HbQmW76nI5QWdvECVPrSi1MCVUmizSavMg== + dependencies: + "@types/node" "*" + jest-util "^29.2.1" + merge-stream "^2.0.0" + supports-color "^8.0.0" + jest@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/jest/-/jest-29.1.2.tgz#f821a1695ffd6cd0efc3b59d2dfcc70a98582499" From dee69be60ef72f714ca3cbbd47e83f1015332f06 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 20:16:50 +0900 Subject: [PATCH 561/652] Bump jest-environment-jsdom from 29.1.2 to 29.2.1 (#19393) Bumps [jest-environment-jsdom](https://github.com/facebook/jest/tree/HEAD/packages/jest-environment-jsdom) from 29.1.2 to 29.2.1. - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v29.2.1/packages/jest-environment-jsdom) --- updated-dependencies: - dependency-name: jest-environment-jsdom dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 102 +++++++++++++++++++++++++++++++-------------------- 2 files changed, 64 insertions(+), 40 deletions(-) diff --git a/package.json b/package.json index 5fe00c552..c8b9aa152 100644 --- a/package.json +++ b/package.json @@ -154,7 +154,7 @@ "eslint-plugin-promise": "~6.1.1", "eslint-plugin-react": "~7.31.10", "jest": "^29.1.2", - "jest-environment-jsdom": "^29.1.2", + "jest-environment-jsdom": "^29.2.1", "postcss-scss": "^4.0.5", "prettier": "^2.7.1", "raf": "^3.4.1", diff --git a/yarn.lock b/yarn.lock index 98f83b323..772d8a6c8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1371,15 +1371,15 @@ slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^29.1.2": - version "29.1.2" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.1.2.tgz#bb51a43fce9f960ba9a48f0b5b556f30618ebc0a" - integrity sha512-rG7xZ2UeOfvOVzoLIJ0ZmvPl4tBEQ2n73CZJSlzUjPw4or1oSWC0s0Rk0ZX+pIBJ04aVr6hLWFn1DFtrnf8MhQ== +"@jest/environment@^29.1.2", "@jest/environment@^29.2.1": + version "29.2.1" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.2.1.tgz#acb1994fbd5ad02819a1a34a923c531e6923b665" + integrity sha512-EutqA7T/X6zFjw6mAWRHND+ZkTPklmIEWCNbmwX6uCmOrFrWaLbDZjA+gePHJx6fFMMRvNfjXcvzXEtz54KPlg== dependencies: - "@jest/fake-timers" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/fake-timers" "^29.2.1" + "@jest/types" "^29.2.1" "@types/node" "*" - jest-mock "^29.1.2" + jest-mock "^29.2.1" "@jest/expect-utils@^29.1.2": version "29.1.2" @@ -1396,17 +1396,17 @@ expect "^29.1.2" jest-snapshot "^29.1.2" -"@jest/fake-timers@^29.1.2": - version "29.1.2" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.1.2.tgz#f157cdf23b4da48ce46cb00fea28ed1b57fc271a" - integrity sha512-GppaEqS+QQYegedxVMpCe2xCXxxeYwQ7RsNx55zc8f+1q1qevkZGKequfTASI7ejmg9WwI+SJCrHe9X11bLL9Q== +"@jest/fake-timers@^29.1.2", "@jest/fake-timers@^29.2.1": + version "29.2.1" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.2.1.tgz#786d60e8cb60ca70c9f913cb49fcc77610c072bb" + integrity sha512-KWil+8fef7Uj/P/PTZlPKk1Pw117wAmr71VWFV8ZDtRtkwmTG8oY4IRf0Ss44J2y5CYRy8d/zLOhxyoGRENjvA== dependencies: - "@jest/types" "^29.1.2" + "@jest/types" "^29.2.1" "@sinonjs/fake-timers" "^9.1.2" "@types/node" "*" - jest-message-util "^29.1.2" - jest-mock "^29.1.2" - jest-util "^29.1.2" + jest-message-util "^29.2.1" + jest-mock "^29.2.1" + jest-util "^29.2.1" "@jest/globals@^29.1.2": version "29.1.2" @@ -1527,10 +1527,10 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" -"@jest/types@^29.1.2": - version "29.1.2" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.1.2.tgz#7442d32b16bcd7592d9614173078b8c334ec730a" - integrity sha512-DcXGtoTykQB5jiwCmVr8H4vdg2OJhQex3qPkG+ISyDO7xQXbt/4R6dowcRyPemRnkH7JoHvZuxPBdlq+9JxFCg== +"@jest/types@^29.1.2", "@jest/types@^29.2.1": + version "29.2.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.2.1.tgz#ec9c683094d4eb754e41e2119d8bdaef01cf6da0" + integrity sha512-O/QNDQODLnINEPAI0cl9U6zUIDXEWXt6IC1o2N2QENuos7hlGUIthlKyV4p6ki3TvXFX071blj8HUhgLGquPjw== dependencies: "@jest/schemas" "^29.0.0" "@types/istanbul-lib-coverage" "^2.0.0" @@ -6706,18 +6706,18 @@ jest-each@^29.1.2: jest-util "^29.1.2" pretty-format "^29.1.2" -jest-environment-jsdom@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.1.2.tgz#59c5d7c53c999e1518cc2f1cd4ee19ab4b68eb68" - integrity sha512-D+XNIKia5+uDjSMwL/G1l6N9MCb7LymKI8FpcLo7kkISjc/Sa9w+dXXEa7u1Wijo3f8sVLqfxdGqYtRhmca+Xw== +jest-environment-jsdom@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.2.1.tgz#5bfbbc52a74b333c7e69ff3a4f540af850a7a718" + integrity sha512-MipBdmrjgzEdQMkK7b7wBShOfv1VqO6FVwa9S43bZwKYLC4dlWnPiCgNpZX3ypNEpJO8EMpMhg4HrUkWUZXGiw== dependencies: - "@jest/environment" "^29.1.2" - "@jest/fake-timers" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/environment" "^29.2.1" + "@jest/fake-timers" "^29.2.1" + "@jest/types" "^29.2.1" "@types/jsdom" "^20.0.0" "@types/node" "*" - jest-mock "^29.1.2" - jest-util "^29.1.2" + jest-mock "^29.2.1" + jest-util "^29.2.1" jsdom "^20.0.0" jest-environment-node@^29.1.2: @@ -6813,14 +6813,29 @@ jest-message-util@^29.1.2: slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.1.2.tgz#de47807edbb9d4abf8423f1d8d308d670105678c" - integrity sha512-PFDAdjjWbjPUtQPkQufvniXIS3N9Tv7tbibePEjIIprzjgo0qQlyUiVMrT4vL8FaSJo1QXifQUOuPH3HQC/aMA== +jest-message-util@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.2.1.tgz#3a51357fbbe0cc34236f17a90d772746cf8d9193" + integrity sha512-Dx5nEjw9V8C1/Yj10S/8ivA8F439VS8vTq1L7hEgwHFn9ovSKNpYW/kwNh7UglaEgXO42XxzKJB+2x0nSglFVw== dependencies: - "@jest/types" "^29.1.2" + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.2.1" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.2.1" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^29.1.2, jest-mock@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.2.1.tgz#a0d361cffcb28184fa9c5443adbf591fa5759775" + integrity sha512-NDphaY/GqyQpTfnTZiTqqpMaw4Z0I7XnB7yBgrT6IwYrLGxpOhrejYr4ANY4YvO2sEGdd8Tx/6D0+WLQy7/qDA== + dependencies: + "@jest/types" "^29.2.1" "@types/node" "*" - jest-util "^29.1.2" + jest-util "^29.2.1" jest-pnp-resolver@^1.2.2: version "1.2.2" @@ -6945,12 +6960,12 @@ jest-snapshot@^29.1.2: pretty-format "^29.1.2" semver "^7.3.5" -jest-util@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.1.2.tgz#ac5798e93cb6a6703084e194cfa0898d66126df1" - integrity sha512-vPCk9F353i0Ymx3WQq3+a4lZ07NXu9Ca8wya6o4Fe4/aO1e1awMMprZ3woPFpKwghEOW+UXgd15vVotuNN9ONQ== +jest-util@^29.1.2, jest-util@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.2.1.tgz#f26872ba0dc8cbefaba32c34f98935f6cf5fc747" + integrity sha512-P5VWDj25r7kj7kl4pN2rG/RN2c1TLfYYYZYULnS/35nFDjBai+hBeo3MDrYZS7p6IoY3YHZnt2vq4L6mKnLk0g== dependencies: - "@jest/types" "^29.1.2" + "@jest/types" "^29.2.1" "@types/node" "*" chalk "^4.0.0" ci-info "^3.2.0" @@ -9074,6 +9089,15 @@ pretty-format@^29.1.2: ansi-styles "^5.0.0" react-is "^18.0.0" +pretty-format@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.2.1.tgz#86e7748fe8bbc96a6a4e04fa99172630907a9611" + integrity sha512-Y41Sa4aLCtKAXvwuIpTvcFBkyeYp2gdFWzXGA+ZNES3VwURIB165XO/z7CjETwzCCS53MjW/rLMyyqEnTtaOfA== + dependencies: + "@jest/schemas" "^29.0.0" + ansi-styles "^5.0.0" + react-is "^18.0.0" + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" From f8ca3bb2a1dd648f41e8fea5b5eb87b53bc8d521 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 26 Oct 2022 13:42:29 +0200 Subject: [PATCH 562/652] Add ability to view previous edits of a status in admin UI (#19462) * Add ability to view previous edits of a status in admin UI * Change moderator access to posts to be controlled by a separate policy --- app/controllers/admin/statuses_controller.rb | 16 ++++- .../admin/trends/statuses_controller.rb | 4 +- .../mastodon/components/status_action_bar.js | 2 +- .../features/status/components/action_bar.js | 2 +- app/javascript/styles/mastodon/admin.scss | 64 +++++++++++++++++++ app/models/admin/status_filter.rb | 5 +- app/models/status_edit.rb | 13 +++- app/policies/admin/status_policy.rb | 29 +++++++++ app/policies/status_policy.rb | 12 +--- .../reports/_media_attachments.html.haml | 8 +++ app/views/admin/reports/_status.html.haml | 11 +--- .../admin/status_edits/_status_edit.html.haml | 20 ++++++ app/views/admin/statuses/show.html.haml | 64 +++++++++++++++++++ config/locales/en.yml | 13 ++++ config/routes.rb | 2 +- spec/policies/status_policy_spec.rb | 22 ------- 16 files changed, 232 insertions(+), 55 deletions(-) create mode 100644 app/policies/admin/status_policy.rb create mode 100644 app/views/admin/reports/_media_attachments.html.haml create mode 100644 app/views/admin/status_edits/_status_edit.html.haml create mode 100644 app/views/admin/statuses/show.html.haml diff --git a/app/controllers/admin/statuses_controller.rb b/app/controllers/admin/statuses_controller.rb index 084921ceb..b80cd20f5 100644 --- a/app/controllers/admin/statuses_controller.rb +++ b/app/controllers/admin/statuses_controller.rb @@ -3,18 +3,23 @@ module Admin class StatusesController < BaseController before_action :set_account - before_action :set_statuses + before_action :set_statuses, except: :show + before_action :set_status, only: :show PER_PAGE = 20 def index - authorize :status, :index? + authorize [:admin, :status], :index? @status_batch_action = Admin::StatusBatchAction.new end + def show + authorize [:admin, @status], :show? + end + def batch - authorize :status, :index? + authorize [:admin, :status], :index? @status_batch_action = Admin::StatusBatchAction.new(admin_status_batch_action_params.merge(current_account: current_account, report_id: params[:report_id], type: action_from_button)) @status_batch_action.save! @@ -32,6 +37,7 @@ module Admin def after_create_redirect_path report_id = @status_batch_action&.report_id || params[:report_id] + if report_id.present? admin_report_path(report_id) else @@ -43,6 +49,10 @@ module Admin @account = Account.find(params[:account_id]) end + def set_status + @status = @account.statuses.find(params[:id]) + end + def set_statuses @statuses = Admin::StatusFilter.new(@account, filter_params).results.preload(:application, :preloadable_poll, :media_attachments, active_mentions: :account, reblog: [:account, :application, :preloadable_poll, :media_attachments, active_mentions: :account]).page(params[:page]).per(PER_PAGE) end diff --git a/app/controllers/admin/trends/statuses_controller.rb b/app/controllers/admin/trends/statuses_controller.rb index 004f42b0c..3d8b53ea8 100644 --- a/app/controllers/admin/trends/statuses_controller.rb +++ b/app/controllers/admin/trends/statuses_controller.rb @@ -2,7 +2,7 @@ class Admin::Trends::StatusesController < Admin::BaseController def index - authorize :status, :review? + authorize [:admin, :status], :review? @locales = StatusTrend.pluck('distinct language') @statuses = filtered_statuses.page(params[:page]) @@ -10,7 +10,7 @@ class Admin::Trends::StatusesController < Admin::BaseController end def batch - authorize :status, :review? + authorize [:admin, :status], :review? @form = Trends::StatusBatch.new(trends_status_batch_params.merge(current_account: current_account, action: action_from_button)) @form.save diff --git a/app/javascript/mastodon/components/status_action_bar.js b/app/javascript/mastodon/components/status_action_bar.js index 17150524e..fe8ece0f9 100644 --- a/app/javascript/mastodon/components/status_action_bar.js +++ b/app/javascript/mastodon/components/status_action_bar.js @@ -323,7 +323,7 @@ class StatusActionBar extends ImmutablePureComponent { if ((this.context.identity.permissions & PERMISSION_MANAGE_USERS) === PERMISSION_MANAGE_USERS) { menu.push(null); menu.push({ text: intl.formatMessage(messages.admin_account, { name: account.get('username') }), href: `/admin/accounts/${status.getIn(['account', 'id'])}` }); - menu.push({ text: intl.formatMessage(messages.admin_status), href: `/admin/accounts/${status.getIn(['account', 'id'])}/statuses?id=${status.get('id')}` }); + menu.push({ text: intl.formatMessage(messages.admin_status), href: `/admin/accounts/${status.getIn(['account', 'id'])}/statuses/${status.get('id')}` }); } } diff --git a/app/javascript/mastodon/features/status/components/action_bar.js b/app/javascript/mastodon/features/status/components/action_bar.js index a0a6a7894..4bd419ca4 100644 --- a/app/javascript/mastodon/features/status/components/action_bar.js +++ b/app/javascript/mastodon/features/status/components/action_bar.js @@ -254,7 +254,7 @@ class ActionBar extends React.PureComponent { if ((permissions & PERMISSION_MANAGE_USERS) === PERMISSION_MANAGE_USERS) { menu.push(null); menu.push({ text: intl.formatMessage(messages.admin_account, { name: status.getIn(['account', 'username']) }), href: `/admin/accounts/${status.getIn(['account', 'id'])}` }); - menu.push({ text: intl.formatMessage(messages.admin_status), href: `/admin/accounts/${status.getIn(['account', 'id'])}/statuses?id=${status.get('id')}` }); + menu.push({ text: intl.formatMessage(messages.admin_status), href: `/admin/accounts/${status.getIn(['account', 'id'])}/statuses/${status.get('id')}` }); } } diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index affe1c79c..f86778399 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -1752,3 +1752,67 @@ a.sparkline { } } } + +.history { + counter-reset: step 0; + font-size: 15px; + line-height: 22px; + + li { + counter-increment: step 1; + padding-left: 2.5rem; + padding-bottom: 8px; + position: relative; + margin-bottom: 8px; + + &::before { + position: absolute; + content: counter(step); + font-size: 0.625rem; + font-weight: 500; + left: 0; + display: flex; + justify-content: center; + align-items: center; + width: calc(1.375rem + 1px); + height: calc(1.375rem + 1px); + background: $ui-base-color; + border: 1px solid $highlight-text-color; + color: $highlight-text-color; + border-radius: 8px; + } + + &::after { + position: absolute; + content: ""; + width: 1px; + background: $highlight-text-color; + bottom: 0; + top: calc(1.875rem + 1px); + left: 0.6875rem; + } + + &:last-child { + margin-bottom: 0; + + &::after { + display: none; + } + } + } + + &__entry { + h5 { + font-weight: 500; + color: $primary-text-color; + line-height: 25px; + margin-bottom: 16px; + } + + .status { + border: 1px solid lighten($ui-base-color, 4%); + background: $ui-base-color; + border-radius: 4px; + } + } +} diff --git a/app/models/admin/status_filter.rb b/app/models/admin/status_filter.rb index 4fba612a6..d7a16f760 100644 --- a/app/models/admin/status_filter.rb +++ b/app/models/admin/status_filter.rb @@ -3,7 +3,6 @@ class Admin::StatusFilter KEYS = %i( media - id report_id ).freeze @@ -28,12 +27,10 @@ class Admin::StatusFilter private - def scope_for(key, value) + def scope_for(key, _value) case key.to_s when 'media' Status.joins(:media_attachments).merge(@account.media_attachments.reorder(nil)).group(:id).reorder('statuses.id desc') - when 'id' - Status.where(id: value) else raise "Unknown filter: #{key}" end diff --git a/app/models/status_edit.rb b/app/models/status_edit.rb index e9c8fbe98..e33470226 100644 --- a/app/models/status_edit.rb +++ b/app/models/status_edit.rb @@ -30,7 +30,7 @@ class StatusEdit < ApplicationRecord :preview_remote_url, :text_url, :meta, :blurhash, :not_processed?, :needs_redownload?, :local?, :file, :thumbnail, :thumbnail_remote_url, - :shortcode, to: :media_attachment + :shortcode, :video?, :audio?, to: :media_attachment end rate_limit by: :account, family: :statuses @@ -40,7 +40,8 @@ class StatusEdit < ApplicationRecord default_scope { order(id: :asc) } - delegate :local?, to: :status + delegate :local?, :application, :edited?, :edited_at, + :discarded?, :visibility, to: :status def emojis return @emojis if defined?(@emojis) @@ -59,4 +60,12 @@ class StatusEdit < ApplicationRecord end end end + + def proper + self + end + + def reblog? + false + end end diff --git a/app/policies/admin/status_policy.rb b/app/policies/admin/status_policy.rb new file mode 100644 index 000000000..ffaa30f13 --- /dev/null +++ b/app/policies/admin/status_policy.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +class Admin::StatusPolicy < ApplicationPolicy + def initialize(current_account, record, preloaded_relations = {}) + super(current_account, record) + + @preloaded_relations = preloaded_relations + end + + def index? + role.can?(:manage_reports, :manage_users) + end + + def show? + role.can?(:manage_reports, :manage_users) && (record.public_visibility? || record.unlisted_visibility? || record.reported?) + end + + def destroy? + role.can?(:manage_reports) + end + + def update? + role.can?(:manage_reports) + end + + def review? + role.can?(:manage_taxonomies) + end +end diff --git a/app/policies/status_policy.rb b/app/policies/status_policy.rb index 2f48b5d70..f3d0ffdba 100644 --- a/app/policies/status_policy.rb +++ b/app/policies/status_policy.rb @@ -7,10 +7,6 @@ class StatusPolicy < ApplicationPolicy @preloaded_relations = preloaded_relations end - def index? - role.can?(:manage_reports, :manage_users) - end - def show? return false if author.suspended? @@ -32,17 +28,13 @@ class StatusPolicy < ApplicationPolicy end def destroy? - role.can?(:manage_reports) || owned? + owned? end alias unreblog? destroy? def update? - role.can?(:manage_reports) || owned? - end - - def review? - role.can?(:manage_taxonomies) + owned? end private diff --git a/app/views/admin/reports/_media_attachments.html.haml b/app/views/admin/reports/_media_attachments.html.haml new file mode 100644 index 000000000..d0b7d52c3 --- /dev/null +++ b/app/views/admin/reports/_media_attachments.html.haml @@ -0,0 +1,8 @@ +- if status.ordered_media_attachments.first.video? + - video = status.ordered_media_attachments.first + = react_component :video, src: video.file.url(:original), preview: video.file.url(:small), frameRate: video.file.meta.dig('original', 'frame_rate'), blurhash: video.blurhash, sensitive: status.sensitive?, visible: false, width: 610, height: 343, inline: true, alt: video.description, media: [ActiveModelSerializers::SerializableResource.new(video, serializer: REST::MediaAttachmentSerializer)].as_json +- elsif status.ordered_media_attachments.first.audio? + - audio = status.ordered_media_attachments.first + = react_component :audio, src: audio.file.url(:original), height: 110, alt: audio.description, duration: audio.file.meta.dig(:original, :duration) +- else + = react_component :media_gallery, height: 343, sensitive: status.sensitive?, visible: false, media: status.ordered_media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json } diff --git a/app/views/admin/reports/_status.html.haml b/app/views/admin/reports/_status.html.haml index 392fc8f81..b2982a42b 100644 --- a/app/views/admin/reports/_status.html.haml +++ b/app/views/admin/reports/_status.html.haml @@ -12,14 +12,7 @@ = prerender_custom_emojis(status_content_format(status.proper), status.proper.emojis) - unless status.proper.ordered_media_attachments.empty? - - if status.proper.ordered_media_attachments.first.video? - - video = status.proper.ordered_media_attachments.first - = react_component :video, src: video.file.url(:original), preview: video.file.url(:small), frameRate: video.file.meta.dig('original', 'frame_rate'), blurhash: video.blurhash, sensitive: status.proper.sensitive?, visible: false, width: 610, height: 343, inline: true, alt: video.description, media: [ActiveModelSerializers::SerializableResource.new(video, serializer: REST::MediaAttachmentSerializer)].as_json - - elsif status.proper.ordered_media_attachments.first.audio? - - audio = status.proper.ordered_media_attachments.first - = react_component :audio, src: audio.file.url(:original), height: 110, alt: audio.description, duration: audio.file.meta.dig(:original, :duration) - - else - = react_component :media_gallery, height: 343, sensitive: status.proper.sensitive?, visible: false, media: status.proper.ordered_media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json } + = render partial: 'admin/reports/media_attachments', locals: { status: status.proper } .detailed-status__meta - if status.application @@ -29,7 +22,7 @@ %time.formatted{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at) - if status.edited? · - = t('statuses.edited_at_html', date: content_tag(:time, l(status.edited_at), datetime: status.edited_at.iso8601, title: l(status.edited_at), class: 'formatted')) + = link_to t('statuses.edited_at_html', date: content_tag(:time, l(status.edited_at), datetime: status.edited_at.iso8601, title: l(status.edited_at), class: 'formatted')), admin_account_status_path(status.account_id, status), class: 'detailed-status__datetime' - if status.discarded? · %span.negative-hint= t('admin.statuses.deleted') diff --git a/app/views/admin/status_edits/_status_edit.html.haml b/app/views/admin/status_edits/_status_edit.html.haml new file mode 100644 index 000000000..19a0e063d --- /dev/null +++ b/app/views/admin/status_edits/_status_edit.html.haml @@ -0,0 +1,20 @@ +.status + .status__content>< + - if status_edit.spoiler_text.blank? + = prerender_custom_emojis(status_content_format(status_edit), status_edit.emojis) + - else + %details< + %summary>< + %strong> Content warning: #{prerender_custom_emojis(h(status_edit.spoiler_text), status_edit.emojis)} + = prerender_custom_emojis(status_content_format(status_edit), status_edit.emojis) + + - unless status_edit.ordered_media_attachments.empty? + = render partial: 'admin/reports/media_attachments', locals: { status: status_edit } + + .detailed-status__meta + %time.formatted{ datetime: status_edit.created_at.iso8601, title: l(status_edit.created_at) }= l(status_edit.created_at) + + - if status_edit.sensitive? + · + = fa_icon('eye-slash fw') + = t('stream_entries.sensitive_content') diff --git a/app/views/admin/statuses/show.html.haml b/app/views/admin/statuses/show.html.haml new file mode 100644 index 000000000..62b49de8c --- /dev/null +++ b/app/views/admin/statuses/show.html.haml @@ -0,0 +1,64 @@ +- content_for :header_tags do + = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' + +- content_for :page_title do + = t('statuses.title', name: display_name(@account), quote: truncate(@status.spoiler_text.presence || @status.text, length: 50, omission: '…', escape: false)) + +- content_for :heading_actions do + = link_to t('admin.statuses.open'), ActivityPub::TagManager.instance.url_for(@status), class: 'button', target: '_blank' + +%h3= t('admin.statuses.metadata') + +.table-wrapper + %table.table.horizontal-table + %tbody + %tr + %th= t('admin.statuses.account') + %td= admin_account_link_to @status.account + - if @status.reply? + %tr + %th= t('admin.statuses.in_reply_to') + %td= admin_account_link_to @status.in_reply_to_account, path: admin_account_status_path(@status.thread.account_id, @status.in_reply_to_id) + %tr + %th= t('admin.statuses.application') + %td= @status.application&.name + %tr + %th= t('admin.statuses.language') + %td= standard_locale_name(@status.language) + %tr + %th= t('admin.statuses.visibility') + %td= t("statuses.visibilities.#{@status.visibility}") + - if @status.trend + %tr + %th= t('admin.statuses.trending') + %td + - if @status.trend.allowed? + %abbr{ title: t('admin.trends.tags.current_score', score: @status.trend.score) }= t('admin.trends.tags.trending_rank', rank: @status.trend.rank) + - elsif @status.trend.requires_review? + = t('admin.trends.pending_review') + - else + = t('admin.trends.not_allowed_to_trend') + %tr + %th= t('admin.statuses.reblogs') + %td= friendly_number_to_human @status.reblogs_count + %tr + %th= t('admin.statuses.favourites') + %td= friendly_number_to_human @status.favourites_count + +%hr.spacer/ + +%h3= t('admin.statuses.history') + +%ol.history + - @status.edits.includes(:account, status: [:account]).each.with_index do |status_edit, i| + %li + .history__entry + %h5 + - if i.zero? + = t('admin.statuses.original_status') + - else + = t('admin.statuses.status_changed') + · + %time.formatted{ datetime: status_edit.created_at.iso8601, title: l(status_edit.created_at) }= l(status_edit.created_at) + + = render status_edit diff --git a/config/locales/en.yml b/config/locales/en.yml index 70850d478..fd845c3c2 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -705,16 +705,29 @@ en: delete: Delete uploaded file destroyed_msg: Site upload successfully deleted! statuses: + account: Author + application: Application back_to_account: Back to account page back_to_report: Back to report page batch: remove_from_report: Remove from report report: Report deleted: Deleted + favourites: Favourites + history: Version history + in_reply_to: Replying to + language: Language media: title: Media + metadata: Metadata no_status_selected: No posts were changed as none were selected + open: Open post + original_status: Original post + reblogs: Reblogs + status_changed: Post changed title: Account posts + trending: Trending + visibility: Visibility with_media: With media strikes: actions: diff --git a/config/routes.rb b/config/routes.rb index b44479e77..12726a677 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -325,7 +325,7 @@ Rails.application.routes.draw do resource :reset, only: [:create] resource :action, only: [:new, :create], controller: 'account_actions' - resources :statuses, only: [:index] do + resources :statuses, only: [:index, :show] do collection do post :batch end diff --git a/spec/policies/status_policy_spec.rb b/spec/policies/status_policy_spec.rb index 205ecd720..b88521708 100644 --- a/spec/policies/status_policy_spec.rb +++ b/spec/policies/status_policy_spec.rb @@ -96,10 +96,6 @@ RSpec.describe StatusPolicy, type: :model do expect(subject).to permit(status.account, status) end - it 'grants access when account is admin' do - expect(subject).to permit(admin.account, status) - end - it 'denies access when account is not deleter' do expect(subject).to_not permit(bob, status) end @@ -125,27 +121,9 @@ RSpec.describe StatusPolicy, type: :model do end end - permissions :index? do - it 'grants access if staff' do - expect(subject).to permit(admin.account) - end - - it 'denies access unless staff' do - expect(subject).to_not permit(alice) - end - end - permissions :update? do - it 'grants access if staff' do - expect(subject).to permit(admin.account, status) - end - it 'grants access if owner' do expect(subject).to permit(status.account, status) end - - it 'denies access unless staff' do - expect(subject).to_not permit(bob, status) - end end end From 1ce17cf316c3d4021f60998981e542a20a7038bb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 20:52:01 +0900 Subject: [PATCH 563/652] Bump jest from 29.1.2 to 29.2.2 (#19467) Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 29.1.2 to 29.2.2. - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v29.2.2/packages/jest) --- updated-dependencies: - dependency-name: jest dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 710 +++++++++++++++++++++++++-------------------------- 2 files changed, 343 insertions(+), 369 deletions(-) diff --git a/package.json b/package.json index c8b9aa152..94b8dd7ed 100644 --- a/package.json +++ b/package.json @@ -153,7 +153,7 @@ "eslint-plugin-jsx-a11y": "~6.6.1", "eslint-plugin-promise": "~6.1.1", "eslint-plugin-react": "~7.31.10", - "jest": "^29.1.2", + "jest": "^29.2.2", "jest-environment-jsdom": "^29.2.1", "postcss-scss": "^4.0.5", "prettier": "^2.7.1", diff --git a/yarn.lock b/yarn.lock index 772d8a6c8..0a14b966a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1325,53 +1325,53 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@jest/console@^29.1.2": - version "29.1.2" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.1.2.tgz#0ae975a70004696f8320490fcaa1a4152f7b62e4" - integrity sha512-ujEBCcYs82BTmRxqfHMQggSlkUZP63AE5YEaTPj7eFyJOzukkTorstOUC7L6nE3w5SYadGVAnTsQ/ZjTGL0qYQ== +"@jest/console@^29.2.1": + version "29.2.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.2.1.tgz#5f2c62dcdd5ce66e94b6d6729e021758bceea090" + integrity sha512-MF8Adcw+WPLZGBiNxn76DOuczG3BhODTcMlDCA4+cFi41OkaY/lyI0XUUhi73F88Y+7IHoGmD80pN5CtxQUdSw== dependencies: - "@jest/types" "^29.1.2" + "@jest/types" "^29.2.1" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^29.1.2" - jest-util "^29.1.2" + jest-message-util "^29.2.1" + jest-util "^29.2.1" slash "^3.0.0" -"@jest/core@^29.1.2": - version "29.1.2" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.1.2.tgz#e5ce7a71e7da45156a96fb5eeed11d18b67bd112" - integrity sha512-sCO2Va1gikvQU2ynDN8V4+6wB7iVrD2CvT0zaRst4rglf56yLly0NQ9nuRRAWFeimRf+tCdFsb1Vk1N9LrrMPA== +"@jest/core@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.2.2.tgz#207aa8973d9de8769f9518732bc5f781efc3ffa7" + integrity sha512-susVl8o2KYLcZhhkvSB+b7xX575CX3TmSvxfeDjpRko7KmT89rHkXj6XkDkNpSeFMBzIENw5qIchO9HC9Sem+A== dependencies: - "@jest/console" "^29.1.2" - "@jest/reporters" "^29.1.2" - "@jest/test-result" "^29.1.2" - "@jest/transform" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/console" "^29.2.1" + "@jest/reporters" "^29.2.2" + "@jest/test-result" "^29.2.1" + "@jest/transform" "^29.2.2" + "@jest/types" "^29.2.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" ci-info "^3.2.0" exit "^0.1.2" graceful-fs "^4.2.9" - jest-changed-files "^29.0.0" - jest-config "^29.1.2" - jest-haste-map "^29.1.2" - jest-message-util "^29.1.2" - jest-regex-util "^29.0.0" - jest-resolve "^29.1.2" - jest-resolve-dependencies "^29.1.2" - jest-runner "^29.1.2" - jest-runtime "^29.1.2" - jest-snapshot "^29.1.2" - jest-util "^29.1.2" - jest-validate "^29.1.2" - jest-watcher "^29.1.2" + jest-changed-files "^29.2.0" + jest-config "^29.2.2" + jest-haste-map "^29.2.1" + jest-message-util "^29.2.1" + jest-regex-util "^29.2.0" + jest-resolve "^29.2.2" + jest-resolve-dependencies "^29.2.2" + jest-runner "^29.2.2" + jest-runtime "^29.2.2" + jest-snapshot "^29.2.2" + jest-util "^29.2.1" + jest-validate "^29.2.2" + jest-watcher "^29.2.2" micromatch "^4.0.4" - pretty-format "^29.1.2" + pretty-format "^29.2.1" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^29.1.2", "@jest/environment@^29.2.1": +"@jest/environment@^29.2.1": version "29.2.1" resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.2.1.tgz#acb1994fbd5ad02819a1a34a923c531e6923b665" integrity sha512-EutqA7T/X6zFjw6mAWRHND+ZkTPklmIEWCNbmwX6uCmOrFrWaLbDZjA+gePHJx6fFMMRvNfjXcvzXEtz54KPlg== @@ -1381,22 +1381,32 @@ "@types/node" "*" jest-mock "^29.2.1" -"@jest/expect-utils@^29.1.2": - version "29.1.2" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.1.2.tgz#66dbb514d38f7d21456bc774419c9ae5cca3f88d" - integrity sha512-4a48bhKfGj/KAH39u0ppzNTABXQ8QPccWAFUFobWBaEMSMp+sB31Z2fK/l47c4a/Mu1po2ffmfAIPxXbVTXdtg== +"@jest/environment@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.2.2.tgz#481e729048d42e87d04842c38aa4d09c507f53b0" + integrity sha512-OWn+Vhu0I1yxuGBJEFFekMYc8aGBGrY4rt47SOh/IFaI+D7ZHCk7pKRiSoZ2/Ml7b0Ony3ydmEHRx/tEOC7H1A== dependencies: - jest-get-type "^29.0.0" + "@jest/fake-timers" "^29.2.2" + "@jest/types" "^29.2.1" + "@types/node" "*" + jest-mock "^29.2.2" -"@jest/expect@^29.1.2": - version "29.1.2" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.1.2.tgz#334a86395f621f1ab63ad95b06a588b9114d7b7a" - integrity sha512-FXw/UmaZsyfRyvZw3M6POgSNqwmuOXJuzdNiMWW9LCYo0GRoRDhg+R5iq5higmRTHQY7hx32+j7WHwinRmoILQ== +"@jest/expect-utils@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.2.2.tgz#460a5b5a3caf84d4feb2668677393dd66ff98665" + integrity sha512-vwnVmrVhTmGgQzyvcpze08br91OL61t9O0lJMDyb6Y/D8EKQ9V7rGUb/p7PDt0GPzK0zFYqXWFo4EO2legXmkg== dependencies: - expect "^29.1.2" - jest-snapshot "^29.1.2" + jest-get-type "^29.2.0" -"@jest/fake-timers@^29.1.2", "@jest/fake-timers@^29.2.1": +"@jest/expect@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.2.2.tgz#81edbd33afbde7795ca07ff6b4753d15205032e4" + integrity sha512-zwblIZnrIVt8z/SiEeJ7Q9wKKuB+/GS4yZe9zw7gMqfGf4C5hBLGrVyxu1SzDbVSqyMSlprKl3WL1r80cBNkgg== + dependencies: + expect "^29.2.2" + jest-snapshot "^29.2.2" + +"@jest/fake-timers@^29.2.1": version "29.2.1" resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.2.1.tgz#786d60e8cb60ca70c9f913cb49fcc77610c072bb" integrity sha512-KWil+8fef7Uj/P/PTZlPKk1Pw117wAmr71VWFV8ZDtRtkwmTG8oY4IRf0Ss44J2y5CYRy8d/zLOhxyoGRENjvA== @@ -1408,26 +1418,38 @@ jest-mock "^29.2.1" jest-util "^29.2.1" -"@jest/globals@^29.1.2": - version "29.1.2" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.1.2.tgz#826ede84bc280ae7f789cb72d325c48cd048b9d3" - integrity sha512-uMgfERpJYoQmykAd0ffyMq8wignN4SvLUG6orJQRe9WAlTRc9cdpCaE/29qurXixYJVZWUqIBXhSk8v5xN1V9g== +"@jest/fake-timers@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.2.2.tgz#d8332e6e3cfa99cde4bc87d04a17d6b699deb340" + integrity sha512-nqaW3y2aSyZDl7zQ7t1XogsxeavNpH6kkdq+EpXncIDvAkjvFD7hmhcIs1nWloengEWUoWqkqSA6MSbf9w6DgA== dependencies: - "@jest/environment" "^29.1.2" - "@jest/expect" "^29.1.2" - "@jest/types" "^29.1.2" - jest-mock "^29.1.2" + "@jest/types" "^29.2.1" + "@sinonjs/fake-timers" "^9.1.2" + "@types/node" "*" + jest-message-util "^29.2.1" + jest-mock "^29.2.2" + jest-util "^29.2.1" -"@jest/reporters@^29.1.2": - version "29.1.2" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.1.2.tgz#5520898ed0a4ecf69d8b671e1dc8465d0acdfa6e" - integrity sha512-X4fiwwyxy9mnfpxL0g9DD0KcTmEIqP0jUdnc2cfa9riHy+I6Gwwp5vOZiwyg0vZxfSDxrOlK9S4+340W4d+DAA== +"@jest/globals@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.2.2.tgz#205ff1e795aa774301c2c0ba0be182558471b845" + integrity sha512-/nt+5YMh65kYcfBhj38B3Hm0Trk4IsuMXNDGKE/swp36yydBWfz3OXkLqkSvoAtPW8IJMSJDFCbTM2oj5SNprw== + dependencies: + "@jest/environment" "^29.2.2" + "@jest/expect" "^29.2.2" + "@jest/types" "^29.2.1" + jest-mock "^29.2.2" + +"@jest/reporters@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.2.2.tgz#69b395f79c3a97ce969ce05ccf1a482e5d6de290" + integrity sha512-AzjL2rl2zJC0njIzcooBvjA4sJjvdoq98sDuuNs4aNugtLPSQ+91nysGKRF0uY1to5k0MdGMdOBggUsPqvBcpA== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.1.2" - "@jest/test-result" "^29.1.2" - "@jest/transform" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/console" "^29.2.1" + "@jest/test-result" "^29.2.1" + "@jest/transform" "^29.2.2" + "@jest/types" "^29.2.1" "@jridgewell/trace-mapping" "^0.3.15" "@types/node" "*" chalk "^4.0.0" @@ -1440,13 +1462,12 @@ istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.1.3" - jest-message-util "^29.1.2" - jest-util "^29.1.2" - jest-worker "^29.1.2" + jest-message-util "^29.2.1" + jest-util "^29.2.1" + jest-worker "^29.2.1" slash "^3.0.0" string-length "^4.0.1" strip-ansi "^6.0.0" - terminal-link "^2.0.0" v8-to-istanbul "^9.0.1" "@jest/schemas@^29.0.0": @@ -1456,36 +1477,36 @@ dependencies: "@sinclair/typebox" "^0.24.1" -"@jest/source-map@^29.0.0": - version "29.0.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.0.0.tgz#f8d1518298089f8ae624e442bbb6eb870ee7783c" - integrity sha512-nOr+0EM8GiHf34mq2GcJyz/gYFyLQ2INDhAylrZJ9mMWoW21mLBfZa0BUVPPMxVYrLjeiRe2Z7kWXOGnS0TFhQ== +"@jest/source-map@^29.2.0": + version "29.2.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.2.0.tgz#ab3420c46d42508dcc3dc1c6deee0b613c235744" + integrity sha512-1NX9/7zzI0nqa6+kgpSdKPK+WU1p+SJk3TloWZf5MzPbxri9UEeXX5bWZAPCzbQcyuAzubcdUHA7hcNznmRqWQ== dependencies: "@jridgewell/trace-mapping" "^0.3.15" callsites "^3.0.0" graceful-fs "^4.2.9" -"@jest/test-result@^29.1.2": - version "29.1.2" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.1.2.tgz#6a8d006eb2b31ce0287d1fc10d12b8ff8504f3c8" - integrity sha512-jjYYjjumCJjH9hHCoMhA8PCl1OxNeGgAoZ7yuGYILRJX9NjgzTN0pCT5qAoYR4jfOP8htIByvAlz9vfNSSBoVg== +"@jest/test-result@^29.2.1": + version "29.2.1" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.2.1.tgz#f42dbf7b9ae465d0a93eee6131473b8bb3bd2edb" + integrity sha512-lS4+H+VkhbX6z64tZP7PAUwPqhwj3kbuEHcaLuaBuB+riyaX7oa1txe0tXgrFj5hRWvZKvqO7LZDlNWeJ7VTPA== dependencies: - "@jest/console" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/console" "^29.2.1" + "@jest/types" "^29.2.1" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^29.1.2": - version "29.1.2" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.1.2.tgz#10bfd89c08bfdba382eb05cc79c1d23a01238a93" - integrity sha512-fU6dsUqqm8sA+cd85BmeF7Gu9DsXVWFdGn9taxM6xN1cKdcP/ivSgXh5QucFRFz1oZxKv3/9DYYbq0ULly3P/Q== +"@jest/test-sequencer@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.2.2.tgz#4ac7487b237e517a1f55e7866fb5553f6e0168b9" + integrity sha512-Cuc1znc1pl4v9REgmmLf0jBd3Y65UXJpioGYtMr/JNpQEIGEzkmHhy6W6DLbSsXeUA13TDzymPv0ZGZ9jH3eIw== dependencies: - "@jest/test-result" "^29.1.2" + "@jest/test-result" "^29.2.1" graceful-fs "^4.2.9" - jest-haste-map "^29.1.2" + jest-haste-map "^29.2.1" slash "^3.0.0" -"@jest/transform@^29.1.2", "@jest/transform@^29.2.1": +"@jest/transform@^29.2.1": version "29.2.1" resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.2.1.tgz#f3d8154edd19cdbcaf1d6646bd8f4ff7812318a2" integrity sha512-xup+iEuaIRSQabQaeqxaQyN0vg1Dctrp9oTObQsNf3sZEowTIa5cANYuoyi8Tqhg4GCqEVLTf18KW7ii0UeFVA== @@ -1506,6 +1527,27 @@ slash "^3.0.0" write-file-atomic "^4.0.1" +"@jest/transform@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.2.2.tgz#dfc03fc092b31ffea0c55917728e75bfcf8b5de6" + integrity sha512-aPe6rrletyuEIt2axxgdtxljmzH8O/nrov4byy6pDw9S8inIrTV+2PnjyP/oFHMSynzGxJ2s6OHowBNMXp/Jzg== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.2.1" + "@jridgewell/trace-mapping" "^0.3.15" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.2.1" + jest-regex-util "^29.2.0" + jest-util "^29.2.1" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.1" + "@jest/types@^25.5.0": version "25.5.0" resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" @@ -1527,18 +1569,6 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" -"@jest/types@^29.1.2", "@jest/types@^29.2.1": - version "29.2.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.2.1.tgz#ec9c683094d4eb754e41e2119d8bdaef01cf6da0" - integrity sha512-O/QNDQODLnINEPAI0cl9U6zUIDXEWXt6IC1o2N2QENuos7hlGUIthlKyV4p6ki3TvXFX071blj8HUhgLGquPjw== - dependencies: - "@jest/schemas" "^29.0.0" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - "@jest/types@^29.2.1": version "29.2.1" resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.2.1.tgz#ec9c683094d4eb754e41e2119d8bdaef01cf6da0" @@ -2667,7 +2697,7 @@ axobject-query@^2.2.0: resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== -babel-jest@^29.1.2, babel-jest@^29.2.1: +babel-jest@^29.2.1: version "29.2.1" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.2.1.tgz#213c47e28072de11bdb98c9d29b89f2ab99664f1" integrity sha512-gQJwArok0mqoREiCYhXKWOgUhElJj9DpnssW6GL8dG7ARYqHEhrM9fmPHTjdqEGRVXZAd6+imo3/Vwa8TjLcsw== @@ -2680,6 +2710,19 @@ babel-jest@^29.1.2, babel-jest@^29.2.1: graceful-fs "^4.2.9" slash "^3.0.0" +babel-jest@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.2.2.tgz#2c15abd8c2081293c9c3f4f80a4ed1d51542fee5" + integrity sha512-kkq2QSDIuvpgfoac3WZ1OOcHsQQDU5xYk2Ql7tLdJ8BVAYbefEXal+NfS45Y5LVZA7cxC8KYcQMObpCt1J025w== + dependencies: + "@jest/transform" "^29.2.2" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.2.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + babel-loader@^8.2.5: version "8.2.5" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.5.tgz#d45f585e654d5a5d90f5350a779d7647c5ed512e" @@ -4231,10 +4274,10 @@ diff-sequences@^25.2.6: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== -diff-sequences@^29.0.0: - version "29.0.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.0.0.tgz#bae49972ef3933556bcb0800b72e8579d19d9e4f" - integrity sha512-7Qe/zd1wxSDL4D/X/FPjOMB+ZMDt71W94KYaq05I2l0oQqgXgs7s4ftYYmV38gBSrPz2vcygxfs1xn0FT+rKNA== +diff-sequences@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.2.0.tgz#4c55b5b40706c7b5d2c5c75999a50c56d214e8f6" + integrity sha512-413SY5JpYeSBZxmenGEmCVQ8mCgtFJF0w9PROdaS6z987XC2Pd2GOKqOITLtMftmyFZqgtCOb/QA7/Z3ZXfzIw== diffie-hellman@^5.0.0: version "5.0.3" @@ -4406,10 +4449,10 @@ elliptic@^6.5.3: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" -emittery@^0.10.2: - version "0.10.2" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" - integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== "emoji-mart@npm:emoji-mart-lazyload": version "3.0.1-j" @@ -4940,16 +4983,16 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -expect@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/expect/-/expect-29.1.2.tgz#82f8f28d7d408c7c68da3a386a490ee683e1eced" - integrity sha512-AuAGn1uxva5YBbBlXb+2JPxJRuemZsmlGcapPXWNSBNsQtAULfjioREGBWuI0EOvYUKjDnrCy8PW5Zlr1md5mw== +expect@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.2.2.tgz#ba2dd0d7e818727710324a6e7f13dd0e6d086106" + integrity sha512-hE09QerxZ5wXiOhqkXy5d2G9ar+EqOyifnCXCpMNu+vZ6DG9TJ6CO2c2kPDSLqERTTWrO7OZj8EkYHQqSd78Yw== dependencies: - "@jest/expect-utils" "^29.1.2" - jest-get-type "^29.0.0" - jest-matcher-utils "^29.1.2" - jest-message-util "^29.1.2" - jest-util "^29.1.2" + "@jest/expect-utils" "^29.2.2" + jest-get-type "^29.2.0" + jest-matcher-utils "^29.2.2" + jest-message-util "^29.2.1" + jest-util "^29.2.1" express@^4.17.1, express@^4.18.2: version "4.18.2" @@ -6589,82 +6632,82 @@ jake@^10.8.5: filelist "^1.0.1" minimatch "^3.0.4" -jest-changed-files@^29.0.0: - version "29.0.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.0.0.tgz#aa238eae42d9372a413dd9a8dadc91ca1806dce0" - integrity sha512-28/iDMDrUpGoCitTURuDqUzWQoWmOmOKOFST1mi2lwh62X4BFf6khgH3uSuo1e49X/UDjuApAj3w0wLOex4VPQ== +jest-changed-files@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.2.0.tgz#b6598daa9803ea6a4dce7968e20ab380ddbee289" + integrity sha512-qPVmLLyBmvF5HJrY7krDisx6Voi8DmlV3GZYX0aFNbaQsZeoz1hfxcCMbqDGuQCxU1dJy9eYc2xscE8QrCCYaA== dependencies: execa "^5.0.0" p-limit "^3.1.0" -jest-circus@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.1.2.tgz#4551068e432f169a53167fe1aef420cf51c8a735" - integrity sha512-ajQOdxY6mT9GtnfJRZBRYS7toNIJayiiyjDyoZcnvPRUPwJ58JX0ci0PKAKUo2C1RyzlHw0jabjLGKksO42JGA== +jest-circus@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.2.2.tgz#1dc4d35fd49bf5e64d3cc505fb2db396237a6dfa" + integrity sha512-upSdWxx+Mh4DV7oueuZndJ1NVdgtTsqM4YgywHEx05UMH5nxxA2Qu9T9T9XVuR021XxqSoaKvSmmpAbjwwwxMw== dependencies: - "@jest/environment" "^29.1.2" - "@jest/expect" "^29.1.2" - "@jest/test-result" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/environment" "^29.2.2" + "@jest/expect" "^29.2.2" + "@jest/test-result" "^29.2.1" + "@jest/types" "^29.2.1" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" dedent "^0.7.0" is-generator-fn "^2.0.0" - jest-each "^29.1.2" - jest-matcher-utils "^29.1.2" - jest-message-util "^29.1.2" - jest-runtime "^29.1.2" - jest-snapshot "^29.1.2" - jest-util "^29.1.2" + jest-each "^29.2.1" + jest-matcher-utils "^29.2.2" + jest-message-util "^29.2.1" + jest-runtime "^29.2.2" + jest-snapshot "^29.2.2" + jest-util "^29.2.1" p-limit "^3.1.0" - pretty-format "^29.1.2" + pretty-format "^29.2.1" slash "^3.0.0" stack-utils "^2.0.3" -jest-cli@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.1.2.tgz#423b9c5d3ea20a50b1354b8bf3f2a20e72110e89" - integrity sha512-vsvBfQ7oS2o4MJdAH+4u9z76Vw5Q8WBQF5MchDbkylNknZdrPTX1Ix7YRJyTlOWqRaS7ue/cEAn+E4V1MWyMzw== +jest-cli@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.2.2.tgz#feaf0aa57d327e80d4f2f18d5f8cd2e77cac5371" + integrity sha512-R45ygnnb2CQOfd8rTPFR+/fls0d+1zXS6JPYTBBrnLPrhr58SSuPTiA5Tplv8/PXpz4zXR/AYNxmwIj6J6nrvg== dependencies: - "@jest/core" "^29.1.2" - "@jest/test-result" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/core" "^29.2.2" + "@jest/test-result" "^29.2.1" + "@jest/types" "^29.2.1" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.9" import-local "^3.0.2" - jest-config "^29.1.2" - jest-util "^29.1.2" - jest-validate "^29.1.2" + jest-config "^29.2.2" + jest-util "^29.2.1" + jest-validate "^29.2.2" prompts "^2.0.1" yargs "^17.3.1" -jest-config@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.1.2.tgz#7d004345ca4c09f5d8f802355f54494e90842f4d" - integrity sha512-EC3Zi86HJUOz+2YWQcJYQXlf0zuBhJoeyxLM6vb6qJsVmpP7KcCP1JnyF0iaqTaXdBP8Rlwsvs7hnKWQWWLwwA== +jest-config@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.2.2.tgz#bf98623a46454d644630c1f0de8bba3f495c2d59" + integrity sha512-Q0JX54a5g1lP63keRfKR8EuC7n7wwny2HoTRDb8cx78IwQOiaYUVZAdjViY3WcTxpR02rPUpvNVmZ1fkIlZPcw== dependencies: "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.1.2" - "@jest/types" "^29.1.2" - babel-jest "^29.1.2" + "@jest/test-sequencer" "^29.2.2" + "@jest/types" "^29.2.1" + babel-jest "^29.2.2" chalk "^4.0.0" ci-info "^3.2.0" deepmerge "^4.2.2" glob "^7.1.3" graceful-fs "^4.2.9" - jest-circus "^29.1.2" - jest-environment-node "^29.1.2" - jest-get-type "^29.0.0" - jest-regex-util "^29.0.0" - jest-resolve "^29.1.2" - jest-runner "^29.1.2" - jest-util "^29.1.2" - jest-validate "^29.1.2" + jest-circus "^29.2.2" + jest-environment-node "^29.2.2" + jest-get-type "^29.2.0" + jest-regex-util "^29.2.0" + jest-resolve "^29.2.2" + jest-runner "^29.2.2" + jest-util "^29.2.1" + jest-validate "^29.2.2" micromatch "^4.0.4" parse-json "^5.2.0" - pretty-format "^29.1.2" + pretty-format "^29.2.1" slash "^3.0.0" strip-json-comments "^3.1.1" @@ -6678,33 +6721,33 @@ jest-diff@^25.2.1: jest-get-type "^25.2.6" pretty-format "^25.5.0" -jest-diff@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.1.2.tgz#bb7aaf5353227d6f4f96c5e7e8713ce576a607dc" - integrity sha512-4GQts0aUopVvecIT4IwD/7xsBaMhKTYoM4/njE/aVw9wpw+pIUVp8Vab/KnSzSilr84GnLBkaP3JLDnQYCKqVQ== +jest-diff@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.2.1.tgz#027e42f5a18b693fb2e88f81b0ccab533c08faee" + integrity sha512-gfh/SMNlQmP3MOUgdzxPOd4XETDJifADpT937fN1iUGz+9DgOu2eUPHH25JDkLVcLwwqxv3GzVyK4VBUr9fjfA== dependencies: chalk "^4.0.0" - diff-sequences "^29.0.0" - jest-get-type "^29.0.0" - pretty-format "^29.1.2" + diff-sequences "^29.2.0" + jest-get-type "^29.2.0" + pretty-format "^29.2.1" -jest-docblock@^29.0.0: - version "29.0.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.0.0.tgz#3151bcc45ed7f5a8af4884dcc049aee699b4ceae" - integrity sha512-s5Kpra/kLzbqu9dEjov30kj1n4tfu3e7Pl8v+f8jOkeWNqM6Ds8jRaJfZow3ducoQUrf2Z4rs2N5S3zXnb83gw== +jest-docblock@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.2.0.tgz#307203e20b637d97cee04809efc1d43afc641e82" + integrity sha512-bkxUsxTgWQGbXV5IENmfiIuqZhJcyvF7tU4zJ/7ioTutdz4ToB5Yx6JOFBpgI+TphRY4lhOyCWGNH/QFQh5T6A== dependencies: detect-newline "^3.0.0" -jest-each@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.1.2.tgz#d4c8532c07a846e79f194f7007ce7cb1987d1cd0" - integrity sha512-AmTQp9b2etNeEwMyr4jc0Ql/LIX/dhbgP21gHAizya2X6rUspHn2gysMXaj6iwWuOJ2sYRgP8c1P4cXswgvS1A== +jest-each@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.2.1.tgz#6b0a88ee85c2ba27b571a6010c2e0c674f5c9b29" + integrity sha512-sGP86H/CpWHMyK3qGIGFCgP6mt+o5tu9qG4+tobl0LNdgny0aitLXs9/EBacLy3Bwqy+v4uXClqJgASJWcruYw== dependencies: - "@jest/types" "^29.1.2" + "@jest/types" "^29.2.1" chalk "^4.0.0" - jest-get-type "^29.0.0" - jest-util "^29.1.2" - pretty-format "^29.1.2" + jest-get-type "^29.2.0" + jest-util "^29.2.1" + pretty-format "^29.2.1" jest-environment-jsdom@^29.2.1: version "29.2.1" @@ -6720,46 +6763,27 @@ jest-environment-jsdom@^29.2.1: jest-util "^29.2.1" jsdom "^20.0.0" -jest-environment-node@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.1.2.tgz#005e05cc6ea4b9b5ba55906ab1ce53c82f6907a7" - integrity sha512-C59yVbdpY8682u6k/lh8SUMDJPbOyCHOTgLVVi1USWFxtNV+J8fyIwzkg+RJIVI30EKhKiAGNxYaFr3z6eyNhQ== +jest-environment-node@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.2.2.tgz#a64b272773870c3a947cd338c25fd34938390bc2" + integrity sha512-B7qDxQjkIakQf+YyrqV5dICNs7tlCO55WJ4OMSXsqz1lpI/0PmeuXdx2F7eU8rnPbRkUR/fItSSUh0jvE2y/tw== dependencies: - "@jest/environment" "^29.1.2" - "@jest/fake-timers" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/environment" "^29.2.2" + "@jest/fake-timers" "^29.2.2" + "@jest/types" "^29.2.1" "@types/node" "*" - jest-mock "^29.1.2" - jest-util "^29.1.2" + jest-mock "^29.2.2" + jest-util "^29.2.1" jest-get-type@^25.2.6: version "25.2.6" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== -jest-get-type@^29.0.0: - version "29.0.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.0.0.tgz#843f6c50a1b778f7325df1129a0fd7aa713aef80" - integrity sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw== - -jest-haste-map@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.1.2.tgz#93f3634aa921b6b654e7c94137b24e02e7ca6ac9" - integrity sha512-xSjbY8/BF11Jh3hGSPfYTa/qBFrm3TPM7WU8pU93m2gqzORVLkHFWvuZmFsTEBPRKndfewXhMOuzJNHyJIZGsw== - dependencies: - "@jest/types" "^29.1.2" - "@types/graceful-fs" "^4.1.3" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^29.0.0" - jest-util "^29.1.2" - jest-worker "^29.1.2" - micromatch "^4.0.4" - walker "^1.0.8" - optionalDependencies: - fsevents "^2.3.2" +jest-get-type@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.2.0.tgz#726646f927ef61d583a3b3adb1ab13f3a5036408" + integrity sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA== jest-haste-map@^29.2.1: version "29.2.1" @@ -6780,38 +6804,23 @@ jest-haste-map@^29.2.1: optionalDependencies: fsevents "^2.3.2" -jest-leak-detector@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.1.2.tgz#4c846db14c58219430ccbc4f01a1ec52ebee4fc2" - integrity sha512-TG5gAZJpgmZtjb6oWxBLf2N6CfQ73iwCe6cofu/Uqv9iiAm6g502CAnGtxQaTfpHECBdVEMRBhomSXeLnoKjiQ== +jest-leak-detector@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.2.1.tgz#ec551686b7d512ec875616c2c3534298b1ffe2fc" + integrity sha512-1YvSqYoiurxKOJtySc+CGVmw/e1v4yNY27BjWTVzp0aTduQeA7pdieLiW05wTYG/twlKOp2xS/pWuikQEmklug== dependencies: - jest-get-type "^29.0.0" - pretty-format "^29.1.2" + jest-get-type "^29.2.0" + pretty-format "^29.2.1" -jest-matcher-utils@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.1.2.tgz#e68c4bcc0266e70aa1a5c13fb7b8cd4695e318a1" - integrity sha512-MV5XrD3qYSW2zZSHRRceFzqJ39B2z11Qv0KPyZYxnzDHFeYZGJlgGi0SW+IXSJfOewgJp/Km/7lpcFT+cgZypw== +jest-matcher-utils@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.2.2.tgz#9202f8e8d3a54733266784ce7763e9a08688269c" + integrity sha512-4DkJ1sDPT+UX2MR7Y3od6KtvRi9Im1ZGLGgdLFLm4lPexbTaCgJW5NN3IOXlQHF7NSHY/VHhflQ+WoKtD/vyCw== dependencies: chalk "^4.0.0" - jest-diff "^29.1.2" - jest-get-type "^29.0.0" - pretty-format "^29.1.2" - -jest-message-util@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.1.2.tgz#c21a33c25f9dc1ebfcd0f921d89438847a09a501" - integrity sha512-9oJ2Os+Qh6IlxLpmvshVbGUiSkZVc2FK+uGOm6tghafnB2RyjKAxMZhtxThRMxfX1J1SOMhTn9oK3/MutRWQJQ== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.1.2" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^29.1.2" - slash "^3.0.0" - stack-utils "^2.0.3" + jest-diff "^29.2.1" + jest-get-type "^29.2.0" + pretty-format "^29.2.1" jest-message-util@^29.2.1: version "29.2.1" @@ -6828,7 +6837,7 @@ jest-message-util@^29.2.1: slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^29.1.2, jest-mock@^29.2.1: +jest-mock@^29.2.1: version "29.2.1" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.2.1.tgz#a0d361cffcb28184fa9c5443adbf591fa5759775" integrity sha512-NDphaY/GqyQpTfnTZiTqqpMaw4Z0I7XnB7yBgrT6IwYrLGxpOhrejYr4ANY4YvO2sEGdd8Tx/6D0+WLQy7/qDA== @@ -6837,103 +6846,107 @@ jest-mock@^29.1.2, jest-mock@^29.2.1: "@types/node" "*" jest-util "^29.2.1" +jest-mock@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.2.2.tgz#9045618b3f9d27074bbcf2d55bdca6a5e2e8bca7" + integrity sha512-1leySQxNAnivvbcx0sCB37itu8f4OX2S/+gxLAV4Z62shT4r4dTG9tACDywUAEZoLSr36aYUTsVp3WKwWt4PMQ== + dependencies: + "@jest/types" "^29.2.1" + "@types/node" "*" + jest-util "^29.2.1" + jest-pnp-resolver@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== -jest-regex-util@^29.0.0: - version "29.0.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.0.0.tgz#b442987f688289df8eb6c16fa8df488b4cd007de" - integrity sha512-BV7VW7Sy0fInHWN93MMPtlClweYv2qrSCwfeFWmpribGZtQPWNvRSq9XOVgOEjU1iBGRKXUZil0o2AH7Iy9Lug== - jest-regex-util@^29.2.0: version "29.2.0" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.2.0.tgz#82ef3b587e8c303357728d0322d48bbfd2971f7b" integrity sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA== -jest-resolve-dependencies@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.1.2.tgz#a6919e58a0c7465582cb8ec2d745b4e64ae8647f" - integrity sha512-44yYi+yHqNmH3OoWZvPgmeeiwKxhKV/0CfrzaKLSkZG9gT973PX8i+m8j6pDrTYhhHoiKfF3YUFg/6AeuHw4HQ== +jest-resolve-dependencies@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.2.2.tgz#1f444766f37a25f1490b5137408b6ff746a05d64" + integrity sha512-wWOmgbkbIC2NmFsq8Lb+3EkHuW5oZfctffTGvwsA4JcJ1IRk8b2tg+hz44f0lngvRTeHvp3Kyix9ACgudHH9aQ== dependencies: - jest-regex-util "^29.0.0" - jest-snapshot "^29.1.2" + jest-regex-util "^29.2.0" + jest-snapshot "^29.2.2" -jest-resolve@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.1.2.tgz#9dd8c2fc83e59ee7d676b14bd45a5f89e877741d" - integrity sha512-7fcOr+k7UYSVRJYhSmJHIid3AnDBcLQX3VmT9OSbPWsWz1MfT7bcoerMhADKGvKCoMpOHUQaDHtQoNp/P9JMGg== +jest-resolve@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.2.2.tgz#ad6436053b0638b41e12bbddde2b66e1397b35b5" + integrity sha512-3gaLpiC3kr14rJR3w7vWh0CBX2QAhfpfiQTwrFPvVrcHe5VUBtIXaR004aWE/X9B2CFrITOQAp5gxLONGrk6GA== dependencies: chalk "^4.0.0" graceful-fs "^4.2.9" - jest-haste-map "^29.1.2" + jest-haste-map "^29.2.1" jest-pnp-resolver "^1.2.2" - jest-util "^29.1.2" - jest-validate "^29.1.2" + jest-util "^29.2.1" + jest-validate "^29.2.2" resolve "^1.20.0" resolve.exports "^1.1.0" slash "^3.0.0" -jest-runner@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.1.2.tgz#f18b2b86101341e047de8c2f51a5fdc4e97d053a" - integrity sha512-yy3LEWw8KuBCmg7sCGDIqKwJlULBuNIQa2eFSVgVASWdXbMYZ9H/X0tnXt70XFoGf92W2sOQDOIFAA6f2BG04Q== +jest-runner@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.2.2.tgz#6b5302ed15eba8bf05e6b14d40f1e8d469564da3" + integrity sha512-1CpUxXDrbsfy9Hr9/1zCUUhT813kGGK//58HeIw/t8fa/DmkecEwZSWlb1N/xDKXg3uCFHQp1GCvlSClfImMxg== dependencies: - "@jest/console" "^29.1.2" - "@jest/environment" "^29.1.2" - "@jest/test-result" "^29.1.2" - "@jest/transform" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/console" "^29.2.1" + "@jest/environment" "^29.2.2" + "@jest/test-result" "^29.2.1" + "@jest/transform" "^29.2.2" + "@jest/types" "^29.2.1" "@types/node" "*" chalk "^4.0.0" - emittery "^0.10.2" + emittery "^0.13.1" graceful-fs "^4.2.9" - jest-docblock "^29.0.0" - jest-environment-node "^29.1.2" - jest-haste-map "^29.1.2" - jest-leak-detector "^29.1.2" - jest-message-util "^29.1.2" - jest-resolve "^29.1.2" - jest-runtime "^29.1.2" - jest-util "^29.1.2" - jest-watcher "^29.1.2" - jest-worker "^29.1.2" + jest-docblock "^29.2.0" + jest-environment-node "^29.2.2" + jest-haste-map "^29.2.1" + jest-leak-detector "^29.2.1" + jest-message-util "^29.2.1" + jest-resolve "^29.2.2" + jest-runtime "^29.2.2" + jest-util "^29.2.1" + jest-watcher "^29.2.2" + jest-worker "^29.2.1" p-limit "^3.1.0" source-map-support "0.5.13" -jest-runtime@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.1.2.tgz#dbcd57103d61115479108d5864bdcd661d9c6783" - integrity sha512-jr8VJLIf+cYc+8hbrpt412n5jX3tiXmpPSYTGnwcvNemY+EOuLNiYnHJ3Kp25rkaAcTWOEI4ZdOIQcwYcXIAZw== +jest-runtime@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.2.2.tgz#4068ee82423769a481460efd21d45a8efaa5c179" + integrity sha512-TpR1V6zRdLynckKDIQaY41od4o0xWL+KOPUCZvJK2bu5P1UXhjobt5nJ2ICNeIxgyj9NGkO0aWgDqYPVhDNKjA== dependencies: - "@jest/environment" "^29.1.2" - "@jest/fake-timers" "^29.1.2" - "@jest/globals" "^29.1.2" - "@jest/source-map" "^29.0.0" - "@jest/test-result" "^29.1.2" - "@jest/transform" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/environment" "^29.2.2" + "@jest/fake-timers" "^29.2.2" + "@jest/globals" "^29.2.2" + "@jest/source-map" "^29.2.0" + "@jest/test-result" "^29.2.1" + "@jest/transform" "^29.2.2" + "@jest/types" "^29.2.1" "@types/node" "*" chalk "^4.0.0" cjs-module-lexer "^1.0.0" collect-v8-coverage "^1.0.0" glob "^7.1.3" graceful-fs "^4.2.9" - jest-haste-map "^29.1.2" - jest-message-util "^29.1.2" - jest-mock "^29.1.2" - jest-regex-util "^29.0.0" - jest-resolve "^29.1.2" - jest-snapshot "^29.1.2" - jest-util "^29.1.2" + jest-haste-map "^29.2.1" + jest-message-util "^29.2.1" + jest-mock "^29.2.2" + jest-regex-util "^29.2.0" + jest-resolve "^29.2.2" + jest-snapshot "^29.2.2" + jest-util "^29.2.1" slash "^3.0.0" strip-bom "^4.0.0" -jest-snapshot@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.1.2.tgz#7dd277e88c45f2d2ff5888de1612e63c7ceb575b" - integrity sha512-rYFomGpVMdBlfwTYxkUp3sjD6usptvZcONFYNqVlaz4EpHPnDvlWjvmOQ9OCSNKqYZqLM2aS3wq01tWujLg7gg== +jest-snapshot@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.2.2.tgz#1016ce60297b77382386bad561107174604690c2" + integrity sha512-GfKJrpZ5SMqhli3NJ+mOspDqtZfJBryGA8RIBxF+G+WbDoC7HCqKaeAss4Z/Sab6bAW11ffasx8/vGsj83jyjA== dependencies: "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" @@ -6941,37 +6954,25 @@ jest-snapshot@^29.1.2: "@babel/plugin-syntax-typescript" "^7.7.2" "@babel/traverse" "^7.7.2" "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.1.2" - "@jest/transform" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/expect-utils" "^29.2.2" + "@jest/transform" "^29.2.2" + "@jest/types" "^29.2.1" "@types/babel__traverse" "^7.0.6" "@types/prettier" "^2.1.5" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^29.1.2" + expect "^29.2.2" graceful-fs "^4.2.9" - jest-diff "^29.1.2" - jest-get-type "^29.0.0" - jest-haste-map "^29.1.2" - jest-matcher-utils "^29.1.2" - jest-message-util "^29.1.2" - jest-util "^29.1.2" + jest-diff "^29.2.1" + jest-get-type "^29.2.0" + jest-haste-map "^29.2.1" + jest-matcher-utils "^29.2.2" + jest-message-util "^29.2.1" + jest-util "^29.2.1" natural-compare "^1.4.0" - pretty-format "^29.1.2" + pretty-format "^29.2.1" semver "^7.3.5" -jest-util@^29.1.2, jest-util@^29.2.1: - version "29.2.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.2.1.tgz#f26872ba0dc8cbefaba32c34f98935f6cf5fc747" - integrity sha512-P5VWDj25r7kj7kl4pN2rG/RN2c1TLfYYYZYULnS/35nFDjBai+hBeo3MDrYZS7p6IoY3YHZnt2vq4L6mKnLk0g== - dependencies: - "@jest/types" "^29.2.1" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - jest-util@^29.2.1: version "29.2.1" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.2.1.tgz#f26872ba0dc8cbefaba32c34f98935f6cf5fc747" @@ -6984,30 +6985,30 @@ jest-util@^29.2.1: graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.1.2.tgz#83a728b8f6354da2e52346878c8bc7383516ca51" - integrity sha512-k71pOslNlV8fVyI+mEySy2pq9KdXdgZtm7NHrBX8LghJayc3wWZH0Yr0mtYNGaCU4F1OLPXRkwZR0dBm/ClshA== +jest-validate@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.2.2.tgz#e43ce1931292dfc052562a11bc681af3805eadce" + integrity sha512-eJXATaKaSnOuxNfs8CLHgdABFgUrd0TtWS8QckiJ4L/QVDF4KVbZFBBOwCBZHOS0Rc5fOxqngXeGXE3nGQkpQA== dependencies: - "@jest/types" "^29.1.2" + "@jest/types" "^29.2.1" camelcase "^6.2.0" chalk "^4.0.0" - jest-get-type "^29.0.0" + jest-get-type "^29.2.0" leven "^3.1.0" - pretty-format "^29.1.2" + pretty-format "^29.2.1" -jest-watcher@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.1.2.tgz#de21439b7d889e2fcf62cc2a4779ef1a3f1f3c62" - integrity sha512-6JUIUKVdAvcxC6bM8/dMgqY2N4lbT+jZVsxh0hCJRbwkIEnbr/aPjMQ28fNDI5lB51Klh00MWZZeVf27KBUj5w== +jest-watcher@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.2.2.tgz#7093d4ea8177e0a0da87681a9e7b09a258b9daf7" + integrity sha512-j2otfqh7mOvMgN2WlJ0n7gIx9XCMWntheYGlBK7+5g3b1Su13/UAK7pdKGyd4kDlrLwtH2QPvRv5oNIxWvsJ1w== dependencies: - "@jest/test-result" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/test-result" "^29.2.1" + "@jest/types" "^29.2.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - emittery "^0.10.2" - jest-util "^29.1.2" + emittery "^0.13.1" + jest-util "^29.2.1" string-length "^4.0.1" jest-worker@^26.2.1: @@ -7028,16 +7029,6 @@ jest-worker@^26.5.0: merge-stream "^2.0.0" supports-color "^7.0.0" -jest-worker@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.1.2.tgz#a68302af61bce82b42a9a57285ca7499d29b2afc" - integrity sha512-AdTZJxKjTSPHbXT/AIOjQVmoFx0LHFcVabWu0sxI7PAy7rFf8c0upyvgBKgguVXdM4vY74JdwkyD4hSmpTW8jA== - dependencies: - "@types/node" "*" - jest-util "^29.1.2" - merge-stream "^2.0.0" - supports-color "^8.0.0" - jest-worker@^29.2.1: version "29.2.1" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.2.1.tgz#8ba68255438252e1674f990f0180c54dfa26a3b1" @@ -7048,15 +7039,15 @@ jest-worker@^29.2.1: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest/-/jest-29.1.2.tgz#f821a1695ffd6cd0efc3b59d2dfcc70a98582499" - integrity sha512-5wEIPpCezgORnqf+rCaYD1SK+mNN7NsstWzIsuvsnrhR/hSxXWd82oI7DkrbJ+XTD28/eG8SmxdGvukrGGK6Tw== +jest@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.2.2.tgz#24da83cbbce514718acd698926b7679109630476" + integrity sha512-r+0zCN9kUqoON6IjDdjbrsWobXM/09Nd45kIPRD8kloaRh1z5ZCMdVsgLXGxmlL7UpAJsvCYOQNO+NjvG/gqiQ== dependencies: - "@jest/core" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/core" "^29.2.2" + "@jest/types" "^29.2.1" import-local "^3.0.2" - jest-cli "^29.1.2" + jest-cli "^29.2.2" js-base64@^2.1.9: version "2.6.4" @@ -9080,15 +9071,6 @@ pretty-format@^27.0.2: ansi-styles "^5.0.0" react-is "^17.0.1" -pretty-format@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.1.2.tgz#b1f6b75be7d699be1a051f5da36e8ae9e76a8e6a" - integrity sha512-CGJ6VVGXVRP2o2Dorl4mAwwvDWT25luIsYhkyVQW32E4nL+TgW939J7LlKT/npq5Cpq6j3s+sy+13yk7xYpBmg== - dependencies: - "@jest/schemas" "^29.0.0" - ansi-styles "^5.0.0" - react-is "^18.0.0" - pretty-format@^29.2.1: version "29.2.1" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.2.1.tgz#86e7748fe8bbc96a6a4e04fa99172630907a9611" @@ -10906,7 +10888,7 @@ supports-color@^8.0.0: dependencies: has-flag "^4.0.0" -supports-hyperlinks@^2.0.0, supports-hyperlinks@^2.3.0: +supports-hyperlinks@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== @@ -10996,14 +10978,6 @@ tempy@^0.6.0: type-fest "^0.16.0" unique-string "^2.0.0" -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - terser-webpack-plugin@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" From ca6e92fdb83ca00fe0c5c632ab81f9eaf47cafd2 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 26 Oct 2022 14:01:02 +0200 Subject: [PATCH 564/652] Fix warning about constants in routes (#19466) --- config/routes.rb | 52 ++++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/config/routes.rb b/config/routes.rb index 12726a677..fd0cbab2b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -3,32 +3,32 @@ require 'sidekiq_unique_jobs/web' require 'sidekiq-scheduler/web' -# Paths of routes on the web app that to not require to be indexed or -# have alternative format representations requiring separate controllers -WEB_APP_PATHS = %w( - /getting-started - /keyboard-shortcuts - /home - /public - /public/local - /conversations - /lists/(*any) - /notifications - /favourites - /bookmarks - /pinned - /start - /directory - /explore/(*any) - /search - /publish - /follow_requests - /blocks - /domain_blocks - /mutes -).freeze - Rails.application.routes.draw do + # Paths of routes on the web app that to not require to be indexed or + # have alternative format representations requiring separate controllers + web_app_paths = %w( + /getting-started + /keyboard-shortcuts + /home + /public + /public/local + /conversations + /lists/(*any) + /notifications + /favourites + /bookmarks + /pinned + /start + /directory + /explore/(*any) + /search + /publish + /follow_requests + /blocks + /domain_blocks + /mutes + ).freeze + root 'home#index' mount LetterOpenerWeb::Engine, at: 'letter_opener' if Rails.env.development? @@ -677,7 +677,7 @@ Rails.application.routes.draw do end end - WEB_APP_PATHS.each do |path| + web_app_paths.each do |path| get path, to: 'home#index' end From 1f986d2e525e349620d5b983b489f0b3089621ac Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 21:07:47 +0900 Subject: [PATCH 565/652] Bump @babel/plugin-proposal-decorators from 7.19.3 to 7.19.6 (#19445) Bumps [@babel/plugin-proposal-decorators](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-proposal-decorators) from 7.19.3 to 7.19.6. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.19.6/packages/babel-plugin-proposal-decorators) --- updated-dependencies: - dependency-name: "@babel/plugin-proposal-decorators" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 94b8dd7ed..4ae554194 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "private": true, "dependencies": { "@babel/core": "^7.19.6", - "@babel/plugin-proposal-decorators": "^7.19.3", + "@babel/plugin-proposal-decorators": "^7.19.6", "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.19.6", "@babel/preset-env": "^7.19.4", diff --git a/yarn.lock b/yarn.lock index 0a14b966a..0ffe39894 100644 --- a/yarn.lock +++ b/yarn.lock @@ -422,10 +422,10 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-proposal-decorators@^7.19.3": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.19.3.tgz#c1977e4902a18cdf9051bf7bf08d97db2fd8b110" - integrity sha512-MbgXtNXqo7RTKYIXVchVJGPvaVufQH3pxvQyfbGvNw1DObIhph+PesYXJTcd8J4DdWibvf6Z2eanOyItX8WnJg== +"@babel/plugin-proposal-decorators@^7.19.6": + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.19.6.tgz#0f1af5c21957e9a438cc1d08d2a6a6858af127b7" + integrity sha512-PKWforYpkVkogpOW0RaPuh7eQ7AoFgBJP+d87tQCRY2LVbvyGtfRM7RtrhCBsNgZb+2EY28SeWB6p2xe1Z5oAw== dependencies: "@babel/helper-create-class-features-plugin" "^7.19.0" "@babel/helper-plugin-utils" "^7.19.0" From d96fac8b934fb638e3b047ca7aed63974855bdc1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 21:08:16 +0900 Subject: [PATCH 566/652] Bump utf-8-validate from 5.0.9 to 5.0.10 (#19449) Bumps [utf-8-validate](https://github.com/websockets/utf-8-validate) from 5.0.9 to 5.0.10. - [Release notes](https://github.com/websockets/utf-8-validate/releases) - [Commits](https://github.com/websockets/utf-8-validate/compare/v5.0.9...v5.0.10) --- updated-dependencies: - dependency-name: utf-8-validate dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 4ae554194..9ba819964 100644 --- a/package.json +++ b/package.json @@ -170,6 +170,6 @@ }, "optionalDependencies": { "bufferutil": "^4.0.7", - "utf-8-validate": "^5.0.9" + "utf-8-validate": "^5.0.10" } } diff --git a/yarn.lock b/yarn.lock index 0ffe39894..7005028af 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11487,10 +11487,10 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -utf-8-validate@^5.0.9: - version "5.0.9" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.9.tgz#ba16a822fbeedff1a58918f2a6a6b36387493ea3" - integrity sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q== +utf-8-validate@^5.0.10: + version "5.0.10" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" + integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== dependencies: node-gyp-build "^4.3.0" From 8ebff0efcb91e8b2a0805ebd4583a274ad5f1a69 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 26 Oct 2022 15:23:00 +0200 Subject: [PATCH 567/652] Change post editing to be enabled in web UI (#19103) --- app/javascript/mastodon/components/status_action_bar.js | 2 +- .../mastodon/features/status/components/action_bar.js | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/javascript/mastodon/components/status_action_bar.js b/app/javascript/mastodon/components/status_action_bar.js index fe8ece0f9..2e0c5e081 100644 --- a/app/javascript/mastodon/components/status_action_bar.js +++ b/app/javascript/mastodon/components/status_action_bar.js @@ -280,7 +280,7 @@ class StatusActionBar extends ImmutablePureComponent { } if (writtenByMe) { - // menu.push({ text: intl.formatMessage(messages.edit), action: this.handleEditClick }); + menu.push({ text: intl.formatMessage(messages.edit), action: this.handleEditClick }); menu.push({ text: intl.formatMessage(messages.delete), action: this.handleDeleteClick }); menu.push({ text: intl.formatMessage(messages.redraft), action: this.handleRedraftClick }); } else { diff --git a/app/javascript/mastodon/features/status/components/action_bar.js b/app/javascript/mastodon/features/status/components/action_bar.js index 4bd419ca4..1f8181f84 100644 --- a/app/javascript/mastodon/features/status/components/action_bar.js +++ b/app/javascript/mastodon/features/status/components/action_bar.js @@ -218,9 +218,8 @@ class ActionBar extends React.PureComponent { menu.push({ text: intl.formatMessage(mutingConversation ? messages.unmuteConversation : messages.muteConversation), action: this.handleConversationMuteClick }); menu.push(null); - // menu.push({ text: intl.formatMessage(messages.edit), action: this.handleEditClick }); + menu.push({ text: intl.formatMessage(messages.edit), action: this.handleEditClick }); menu.push({ text: intl.formatMessage(messages.delete), action: this.handleDeleteClick }); - menu.push({ text: intl.formatMessage(messages.redraft), action: this.handleRedraftClick }); } else { menu.push({ text: intl.formatMessage(messages.mention, { name: status.getIn(['account', 'username']) }), action: this.handleMentionClick }); menu.push(null); From 31e23269f9c35667faa655f0b86bd6eed702ccd1 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Wed, 26 Oct 2022 23:56:37 +0900 Subject: [PATCH 568/652] Fix `/web` prefix (#19468) --- config/routes.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config/routes.rb b/config/routes.rb index fd0cbab2b..f24d539ba 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -681,9 +681,9 @@ Rails.application.routes.draw do get path, to: 'home#index' end - get '/web/(*any)', to: redirect('/%{any}', status: 302), as: :web - get '/about', to: 'about#show' - get '/about/more', to: redirect('/about') + get '/web/(*any)', to: redirect('/%{any}', status: 302), as: :web, defaults: { any: '' } + get '/about', to: 'about#show' + get '/about/more', to: redirect('/about') get '/privacy-policy', to: 'privacy#show', as: :privacy_policy get '/terms', to: redirect('/privacy-policy') From eebbc5439a4bfa41d6318b0bc5db0f496018fea0 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Thu, 27 Oct 2022 01:21:36 +0900 Subject: [PATCH 569/652] Disable media cache on service worker (#19471) --- app/javascript/mastodon/service_worker/entry.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/service_worker/entry.js b/app/javascript/mastodon/service_worker/entry.js index 4ec16d8e2..9026012fe 100644 --- a/app/javascript/mastodon/service_worker/entry.js +++ b/app/javascript/mastodon/service_worker/entry.js @@ -43,7 +43,7 @@ registerRoute( ); registerRoute( - ({ request }) => ['audio', 'image', 'track', 'video'].includes(request.destination), + ({ request }) => request.destination === 'image', new CacheFirst({ cacheName: `m${CACHE_NAME_PREFIX}media`, plugins: [ From aafbc82d88d54ad9c70c6fca0186fb48b423f338 Mon Sep 17 00:00:00 2001 From: prplecake Date: Wed, 26 Oct 2022 12:23:16 -0500 Subject: [PATCH 570/652] Add "unsafe-eval" to script-src CSP (#18817) --- config/initializers/content_security_policy.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/initializers/content_security_policy.rb b/config/initializers/content_security_policy.rb index c113b0f8b..be4ef50fc 100644 --- a/config/initializers/content_security_policy.rb +++ b/config/initializers/content_security_policy.rb @@ -36,7 +36,7 @@ Rails.application.config.content_security_policy do |p| p.worker_src :self, :blob, assets_host else p.connect_src :self, :data, :blob, assets_host, media_host, Rails.configuration.x.streaming_api_base_url - p.script_src :self, assets_host + p.script_src :self, assets_host, :unsafe_eval p.child_src :self, :blob, assets_host p.worker_src :self, :blob, assets_host end From 2277913f3f01d3bdb9a1661f019221b1cb185fbb Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 26 Oct 2022 19:35:55 +0200 Subject: [PATCH 571/652] Add closed registrations modal (#19437) --- .../closed_registrations_modal/index.js | 75 +++++++++++++++++++ .../features/interaction_modal/index.js | 33 +++++++- .../features/ui/components/modal_root.js | 2 + .../features/ui/components/sign_in_banner.js | 43 +++++++++-- .../features/ui/util/async-components.js | 4 + app/serializers/rest/instance_serializer.rb | 9 ++- 6 files changed, 155 insertions(+), 11 deletions(-) create mode 100644 app/javascript/mastodon/features/closed_registrations_modal/index.js diff --git a/app/javascript/mastodon/features/closed_registrations_modal/index.js b/app/javascript/mastodon/features/closed_registrations_modal/index.js new file mode 100644 index 000000000..062045b83 --- /dev/null +++ b/app/javascript/mastodon/features/closed_registrations_modal/index.js @@ -0,0 +1,75 @@ +import React from 'react'; +import { connect } from 'react-redux'; +import { FormattedMessage } from 'react-intl'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { domain } from 'mastodon/initial_state'; +import { fetchServer } from 'mastodon/actions/server'; + +const mapStateToProps = state => ({ + closed_registrations_message: state.getIn(['server', 'server', 'registrations', 'closed_registrations_message']), +}); + +export default @connect(mapStateToProps) +class ClosedRegistrationsModal extends ImmutablePureComponent { + + componentDidMount () { + const { dispatch } = this.props; + dispatch(fetchServer()); + } + + render () { + let closedRegistrationsMessage; + + if (this.props.closed_registrations_message) { + closedRegistrationsMessage = ( +

+ ); + } else { + closedRegistrationsMessage = ( +

+ {domain} }} + /> +

+ ); + } + + return ( +
+ ); + } + +}; diff --git a/app/javascript/mastodon/features/interaction_modal/index.js b/app/javascript/mastodon/features/interaction_modal/index.js index 6a7aa9c1c..9f7747903 100644 --- a/app/javascript/mastodon/features/interaction_modal/index.js +++ b/app/javascript/mastodon/features/interaction_modal/index.js @@ -5,11 +5,19 @@ import { registrationsOpen } from 'mastodon/initial_state'; import { connect } from 'react-redux'; import Icon from 'mastodon/components/icon'; import classNames from 'classnames'; +import { openModal, closeModal } from 'mastodon/actions/modal'; const mapStateToProps = (state, { accountId }) => ({ displayNameHtml: state.getIn(['accounts', accountId, 'display_name_html']), }); +const mapDispatchToProps = (dispatch) => ({ + onSignupClick() { + dispatch(closeModal()); + dispatch(openModal('CLOSED_REGISTRATIONS')); + }, +}); + class Copypaste extends React.PureComponent { static propTypes = { @@ -66,15 +74,20 @@ class Copypaste extends React.PureComponent { } -export default @connect(mapStateToProps) +export default @connect(mapStateToProps, mapDispatchToProps) class InteractionModal extends React.PureComponent { static propTypes = { displayNameHtml: PropTypes.string, url: PropTypes.string, type: PropTypes.oneOf(['reply', 'reblog', 'favourite', 'follow']), + onSignupClick: PropTypes.func.isRequired, }; + handleSignupClick = () => { + this.props.onSignupClick(); + } + render () { const { url, type, displayNameHtml } = this.props; @@ -105,6 +118,22 @@ class InteractionModal extends React.PureComponent { break; } + let signupButton; + + if (registrationsOpen) { + signupButton = ( + + + + ); + } else { + signupButton = ( + + ); + } + return (
@@ -116,7 +145,7 @@ class InteractionModal extends React.PureComponent {

- + {signupButton}
diff --git a/app/javascript/mastodon/features/ui/components/modal_root.js b/app/javascript/mastodon/features/ui/components/modal_root.js index 2224a8207..484ebbd8b 100644 --- a/app/javascript/mastodon/features/ui/components/modal_root.js +++ b/app/javascript/mastodon/features/ui/components/modal_root.js @@ -23,6 +23,7 @@ import { FilterModal, InteractionModal, SubscribedLanguagesModal, + ClosedRegistrationsModal, } from 'mastodon/features/ui/util/async-components'; import { Helmet } from 'react-helmet'; @@ -44,6 +45,7 @@ const MODAL_COMPONENTS = { 'FILTER': FilterModal, 'SUBSCRIBED_LANGUAGES': SubscribedLanguagesModal, 'INTERACTION': InteractionModal, + 'CLOSED_REGISTRATIONS': ClosedRegistrationsModal, }; export default class ModalRoot extends React.PureComponent { diff --git a/app/javascript/mastodon/features/ui/components/sign_in_banner.js b/app/javascript/mastodon/features/ui/components/sign_in_banner.js index 5ff4ee2a8..8bd32edf9 100644 --- a/app/javascript/mastodon/features/ui/components/sign_in_banner.js +++ b/app/javascript/mastodon/features/ui/components/sign_in_banner.js @@ -1,13 +1,40 @@ -import React from 'react'; +import React, { useCallback } from 'react'; import { FormattedMessage } from 'react-intl'; +import { useDispatch } from 'react-redux'; import { registrationsOpen } from 'mastodon/initial_state'; +import { openModal } from 'mastodon/actions/modal'; -const SignInBanner = () => ( -
-

- - -
-); +const SignInBanner = () => { + const dispatch = useDispatch(); + + const openClosedRegistrationsModal = useCallback( + () => dispatch(openModal('CLOSED_REGISTRATIONS')), + [dispatch], + ); + + let signupButton; + + if (registrationsOpen) { + signupButton = ( + + + + ); + } else { + signupButton = ( + + ); + } + + return ( +
+

+ + {signupButton} +
+ ); +}; export default SignInBanner; diff --git a/app/javascript/mastodon/features/ui/util/async-components.js b/app/javascript/mastodon/features/ui/util/async-components.js index 7686a69ea..6046578de 100644 --- a/app/javascript/mastodon/features/ui/util/async-components.js +++ b/app/javascript/mastodon/features/ui/util/async-components.js @@ -174,6 +174,10 @@ export function SubscribedLanguagesModal () { return import(/*webpackChunkName: "modals/subscribed_languages_modal" */'../../subscribed_languages_modal'); } +export function ClosedRegistrationsModal () { + return import(/*webpackChunkName: "modals/closed_registrations_modal" */'../../closed_registrations_modal'); +} + export function About () { return import(/*webpackChunkName: "features/about" */'../../about'); } diff --git a/app/serializers/rest/instance_serializer.rb b/app/serializers/rest/instance_serializer.rb index 606e7d831..2a4da8c3b 100644 --- a/app/serializers/rest/instance_serializer.rb +++ b/app/serializers/rest/instance_serializer.rb @@ -81,8 +81,15 @@ class REST::InstanceSerializer < ActiveModel::Serializer def registrations { - enabled: Setting.registrations_mode != 'none' && !Rails.configuration.x.single_user_mode, + enabled: registrations_enabled?, approval_required: Setting.registrations_mode == 'approved', + closed_registrations_message: registrations_enabled? ? nil : Setting.closed_registrations_message, } end + + private + + def registrations_enabled? + Setting.registrations_mode != 'none' && !Rails.configuration.x.single_user_mode + end end From 1546538de9f9ab3781d7cee3e07880646124df11 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 26 Oct 2022 20:40:56 +0200 Subject: [PATCH 572/652] Fix improperly checking for blocked domain on followed hashtags (#19472) Fix #19469 --- app/lib/feed_manager.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb index 657e56ca6..510667558 100644 --- a/app/lib/feed_manager.rb +++ b/app/lib/feed_manager.rb @@ -253,7 +253,7 @@ class FeedManager next if last_status_score < oldest_home_score end - statuses = target_account.statuses.where(visibility: [:public, :unlisted, :private]).includes(:preloadable_poll, :media_attachments, reblog: :account).limit(limit) + statuses = target_account.statuses.where(visibility: [:public, :unlisted, :private]).includes(:preloadable_poll, :media_attachments, :account, reblog: :account).limit(limit) crutches = build_crutches(account.id, statuses) statuses.each do |status| @@ -426,7 +426,7 @@ class FeedManager # @param [Hash] crutches # @return [Boolean] def filter_from_tags?(status, receiver_id, crutches) - receiver_id != status.account_id && (((crutches[:active_mentions][status.id] || []) + [status.account_id]).any? { |target_account_id| crutches[:blocking][target_account_id] || crutches[:muting][target_account_id] } || crutches[:blocked_by][status.account_id] || crutches[:domain_blocking][status.account.domain]) + receiver_id == status.account_id || ((crutches[:active_mentions][status.id] || []) + [status.account_id]).any? { |target_account_id| crutches[:blocking][target_account_id] || crutches[:muting][target_account_id] } || crutches[:blocked_by][status.account_id] || crutches[:domain_blocking][status.account.domain] end # Adds a status to an account's feed, returning true if a status was @@ -547,7 +547,7 @@ class FeedManager crutches[:hiding_reblogs] = Follow.where(account_id: receiver_id, target_account_id: statuses.map { |s| s.account_id if s.reblog? }.compact, show_reblogs: false).pluck(:target_account_id).index_with(true) crutches[:blocking] = Block.where(account_id: receiver_id, target_account_id: check_for_blocks).pluck(:target_account_id).index_with(true) crutches[:muting] = Mute.where(account_id: receiver_id, target_account_id: check_for_blocks).pluck(:target_account_id).index_with(true) - crutches[:domain_blocking] = AccountDomainBlock.where(account_id: receiver_id, domain: statuses.map { |s| s.reblog&.account&.domain }.compact).pluck(:domain).index_with(true) + crutches[:domain_blocking] = AccountDomainBlock.where(account_id: receiver_id, domain: statuses.flat_map { |s| [s.account.domain, s.reblog&.account&.domain] }.compact).pluck(:domain).index_with(true) crutches[:blocked_by] = Block.where(target_account_id: receiver_id, account_id: statuses.map { |s| s.reblog&.account_id }.compact).pluck(:account_id).index_with(true) crutches From 52ebfb7792c29eba1472ec358c2420ba443ba24d Mon Sep 17 00:00:00 2001 From: zunda Date: Wed, 26 Oct 2022 20:14:07 +0000 Subject: [PATCH 573/652] Store integer settings as integer (#19478) --- app/models/form/admin_settings.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/models/form/admin_settings.rb b/app/models/form/admin_settings.rb index 957a32b7c..431d33bcd 100644 --- a/app/models/form/admin_settings.rb +++ b/app/models/form/admin_settings.rb @@ -33,6 +33,12 @@ class Form::AdminSettings backups_retention_period ).freeze + INTEGER_KEYS = %i( + media_cache_retention_period + content_cache_retention_period + backups_retention_period + ).freeze + BOOLEAN_KEYS = %i( timeline_preview activity_api_enabled @@ -104,6 +110,8 @@ class Form::AdminSettings def typecast_value(key, value) if BOOLEAN_KEYS.include?(key) value == '1' + elsif INTEGER_KEYS.include?(key) + value.blank? ? value : Integer(value) else value end From f6bcf86caf6a88b020c435bfab4c1ba8d70dd6db Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 27 Oct 2022 02:10:38 +0200 Subject: [PATCH 574/652] Fix wrong math function used in search query (#19481) --- app/services/account_search_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/account_search_service.rb b/app/services/account_search_service.rb index de1dc7b8e..9f2330a94 100644 --- a/app/services/account_search_service.rb +++ b/app/services/account_search_service.rb @@ -115,7 +115,7 @@ class AccountSearchService < BaseService { script_score: { script: { - source: "log2p(Math.max(doc['followers_count'].value, 0))", + source: "Math.log10(Math.max(doc['followers_count'].value, 0) + 2)", }, }, } From d2eb726962187226c85ef7f2ee1886cb0767bbd1 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 27 Oct 2022 02:10:54 +0200 Subject: [PATCH 575/652] Fix notifications about deleted reports not being also deleted (#19475) * Fix notifications about deleted reports not being also deleted * Fix notification with empty report crashing web UI Fix #18909 --- .../features/notifications/components/notification.js | 4 ++++ app/models/report.rb | 1 + 2 files changed, 5 insertions(+) diff --git a/app/javascript/mastodon/features/notifications/components/notification.js b/app/javascript/mastodon/features/notifications/components/notification.js index 0af71418c..5974e378e 100644 --- a/app/javascript/mastodon/features/notifications/components/notification.js +++ b/app/javascript/mastodon/features/notifications/components/notification.js @@ -372,6 +372,10 @@ class Notification extends ImmutablePureComponent { renderAdminReport (notification, account, link) { const { intl, unread, report } = this.props; + if (!report) { + return null; + } + const targetAccount = report.get('target_account'); const targetDisplayNameHtml = { __html: targetAccount.get('display_name_html') }; const targetLink = ; diff --git a/app/models/report.rb b/app/models/report.rb index 42c869dd4..525d22ad5 100644 --- a/app/models/report.rb +++ b/app/models/report.rb @@ -33,6 +33,7 @@ class Report < ApplicationRecord belongs_to :assigned_account, class_name: 'Account', optional: true has_many :notes, class_name: 'ReportNote', foreign_key: :report_id, inverse_of: :report, dependent: :destroy + has_many :notifications, as: :activity, dependent: :destroy scope :unresolved, -> { where(action_taken_at: nil) } scope :resolved, -> { where.not(action_taken_at: nil) } From 3e18e05330ac8c1101845db650d7cd62b0fa8260 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 27 Oct 2022 14:30:52 +0200 Subject: [PATCH 576/652] Fix uncaught error when invalid date is supplied to API (#19480) Fix #19213 --- app/controllers/api/base_controller.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/controllers/api/base_controller.rb b/app/controllers/api/base_controller.rb index 7ce6599c5..c46fde65b 100644 --- a/app/controllers/api/base_controller.rb +++ b/app/controllers/api/base_controller.rb @@ -24,6 +24,10 @@ class Api::BaseController < ApplicationController render json: { error: 'Duplicate record' }, status: 422 end + rescue_from Date::Error do + render json: { error: 'Invalid date supplied' }, status: 422 + end + rescue_from ActiveRecord::RecordNotFound do render json: { error: 'Record not found' }, status: 404 end From d7595adbf4bc1677aee555baca46902f4dee1ae4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 27 Oct 2022 14:31:10 +0200 Subject: [PATCH 577/652] Add `--remove-role` option to `tootctl accounts modify` (#19477) Fix #19152 --- lib/mastodon/accounts_cli.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/mastodon/accounts_cli.rb b/lib/mastodon/accounts_cli.rb index 558f4d3c4..c8a8448ed 100644 --- a/lib/mastodon/accounts_cli.rb +++ b/lib/mastodon/accounts_cli.rb @@ -126,6 +126,7 @@ module Mastodon end option :role + option :remove_role, type: :boolean option :email option :confirm, type: :boolean option :enable, type: :boolean @@ -137,7 +138,8 @@ module Mastodon long_desc <<-LONG_DESC Modify a user account. - With the --role option, update the user's role. + With the --role option, update the user's role. To remove the user's + role, i.e. demote to normal user, use --remove-role. With the --email option, update the user's e-mail address. With the --confirm option, mark the user's e-mail as confirmed. @@ -171,6 +173,8 @@ module Mastodon end user.role_id = role.id + elsif options[:remove_role] + user.role_id = nil end password = SecureRandom.hex if options[:reset_password] From c7bab3318e8cde0e088f8af7ec765cf6d29fe49d Mon Sep 17 00:00:00 2001 From: Shlee Date: Thu, 27 Oct 2022 14:58:49 +0000 Subject: [PATCH 578/652] Remove duplicate HSTS headers from nginx.conf (#19018) * Update nginx.conf * Update nginx.conf * Update nginx.conf --- dist/nginx.conf | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/dist/nginx.conf b/dist/nginx.conf index 7e0334368..f28d7c6a8 100644 --- a/dist/nginx.conf +++ b/dist/nginx.conf @@ -52,21 +52,19 @@ server { gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml image/x-icon; - add_header Strict-Transport-Security "max-age=31536000" always; - location / { try_files $uri @proxy; } location ~ ^/(emoji|packs|system/accounts/avatars|system/media_attachments/files) { add_header Cache-Control "public, max-age=31536000, immutable"; - add_header Strict-Transport-Security "max-age=31536000" always; + add_header Strict-Transport-Security "max-age=63072000; includeSubDomains"; try_files $uri @proxy; } location /sw.js { add_header Cache-Control "public, max-age=0"; - add_header Strict-Transport-Security "max-age=31536000" always; + add_header Strict-Transport-Security "max-age=63072000; includeSubDomains"; try_files $uri @proxy; } @@ -90,7 +88,6 @@ server { proxy_cache_valid 410 24h; proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504; add_header X-Cached $upstream_cache_status; - add_header Strict-Transport-Security "max-age=31536000" always; tcp_nodelay on; } From 371d96940342b616723df36d54e6c2d1ab3ca827 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 27 Oct 2022 19:17:15 +0200 Subject: [PATCH 579/652] Fix missing delete and redraft link in web UI (#19485) --- app/javascript/mastodon/features/status/components/action_bar.js | 1 + 1 file changed, 1 insertion(+) diff --git a/app/javascript/mastodon/features/status/components/action_bar.js b/app/javascript/mastodon/features/status/components/action_bar.js index 1f8181f84..fc82aa9c2 100644 --- a/app/javascript/mastodon/features/status/components/action_bar.js +++ b/app/javascript/mastodon/features/status/components/action_bar.js @@ -220,6 +220,7 @@ class ActionBar extends React.PureComponent { menu.push(null); menu.push({ text: intl.formatMessage(messages.edit), action: this.handleEditClick }); menu.push({ text: intl.formatMessage(messages.delete), action: this.handleDeleteClick }); + menu.push({ text: intl.formatMessage(messages.redraft), action: this.handleRedraftClick }); } else { menu.push({ text: intl.formatMessage(messages.mention, { name: status.getIn(['account', 'username']) }), action: this.handleMentionClick }); menu.push(null); From 09f04d710d2b3acbd604ca1678c59c4bd5edfa78 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 27 Oct 2022 19:17:48 +0200 Subject: [PATCH 580/652] Change `closed_registrations_message` to `message` and add Markdown (#19486) --- app/serializers/rest/instance_serializer.rb | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/app/serializers/rest/instance_serializer.rb b/app/serializers/rest/instance_serializer.rb index 2a4da8c3b..5ae1099d0 100644 --- a/app/serializers/rest/instance_serializer.rb +++ b/app/serializers/rest/instance_serializer.rb @@ -83,7 +83,7 @@ class REST::InstanceSerializer < ActiveModel::Serializer { enabled: registrations_enabled?, approval_required: Setting.registrations_mode == 'approved', - closed_registrations_message: registrations_enabled? ? nil : Setting.closed_registrations_message, + message: registrations_enabled? ? nil : registrations_message, } end @@ -92,4 +92,16 @@ class REST::InstanceSerializer < ActiveModel::Serializer def registrations_enabled? Setting.registrations_mode != 'none' && !Rails.configuration.x.single_user_mode end + + def registrations_message + if Setting.closed_registrations_message.present? + markdown.render(Setting.closed_registrations_message) + else + nil + end + end + + def markdown + @markdown ||= Redcarpet::Markdown.new(Redcarpet::Render::HTML, no_images: true) + end end From 5f733ad83aebbf52361c97059ac95b13d9a7f897 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 27 Oct 2022 19:30:08 +0200 Subject: [PATCH 581/652] Remove unused method `searchable?` on accounts (#19489) It called the wrong methods, but nothing uses it --- app/models/account.rb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/models/account.rb b/app/models/account.rb index df7fa8d50..3da289fc0 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -191,10 +191,6 @@ class Account < ApplicationRecord "acct:#{local_username_and_domain}" end - def searchable? - !(suspended? || moved?) && (!local? || (approved? && confirmed?)) - end - def possibly_stale? last_webfingered_at.nil? || last_webfingered_at <= 1.day.ago end From 8ae0936ddd92eadb519c0440aae3961fcd820106 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 28 Oct 2022 00:26:02 +0200 Subject: [PATCH 582/652] Bump version to 4.0.0rc1 (#19473) --- CHANGELOG.md | 128 +++++++++++++++++++++++++++++++++++++++- lib/mastodon/version.rb | 8 +-- 2 files changed, 131 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ed4cdd881..c161d95de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,132 @@ Changelog All notable changes to this project will be documented in this file. +## [Unreleased] + +Some of the features in this release have been funded through the [NGI0 Discovery](https://nlnet.nl/discovery) Fund, a fund established by [NLnet](https://nlnet.nl/) with financial support from the European Commission's [Next Generation Internet](https://ngi.eu/) programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 825322. + +### Added + +- Add ability to filter followed accounts' posts by language ([Gargron](https://github.com/mastodon/mastodon/pull/19095), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19268)) +- **Add ability to follow hashtags** ([Gargron](https://github.com/mastodon/mastodon/pull/18809), [Gargron](https://github.com/mastodon/mastodon/pull/18862), [Gargron](https://github.com/mastodon/mastodon/pull/19472), [noellabo](https://github.com/mastodon/mastodon/pull/18924)) +- Add ability to filter individual posts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18945)) +- **Add ability to translate posts** ([Gargron](https://github.com/mastodon/mastodon/pull/19218), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19433), [Gargron](https://github.com/mastodon/mastodon/pull/19453), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19434), [Gargron](https://github.com/mastodon/mastodon/pull/19388), [ykzts](https://github.com/mastodon/mastodon/pull/19244), [Gargron](https://github.com/mastodon/mastodon/pull/19245)) +- Add featured tags to web UI ([noellabo](https://github.com/mastodon/mastodon/pull/19408), [noellabo](https://github.com/mastodon/mastodon/pull/19380), [noellabo](https://github.com/mastodon/mastodon/pull/19358), [noellabo](https://github.com/mastodon/mastodon/pull/19409), [Gargron](https://github.com/mastodon/mastodon/pull/19382), [ykzts](https://github.com/mastodon/mastodon/pull/19418), [noellabo](https://github.com/mastodon/mastodon/pull/19403), [noellabo](https://github.com/mastodon/mastodon/pull/19404), [Gargron](https://github.com/mastodon/mastodon/pull/19398)) +- **Add support for language preferences for trending statuses and links** ([Gargron](https://github.com/mastodon/mastodon/pull/18288), [Gargron](https://github.com/mastodon/mastodon/pull/19349), [ykzts](https://github.com/mastodon/mastodon/pull/19335)) + - Previously, you could only see trends in your current language + - For less popular languages, that meant empty trends + - Now, trends in your preferred languages' are shown on top, with others beneath +- Add server rules to sign-up flow ([Gargron](https://github.com/mastodon/mastodon/pull/19296)) +- Add privacy icons to report modal in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19190)) +- Add `noopener` to links to remote profiles in web UI ([shleeable](https://github.com/mastodon/mastodon/pull/19014)) +- Add warning for sensitive audio posts in web UI ([rgroothuijsen](https://github.com/mastodon/mastodon/pull/17885)) +- Add language attribute to posts in web UI ([tribela](https://github.com/mastodon/mastodon/pull/18544)) +- Add meta tag for official iOS app ([Gargron](https://github.com/mastodon/mastodon/pull/16599)) +- Add support for uploading WebP files ([Saiv46](https://github.com/mastodon/mastodon/pull/18506)) +- Add support for uploading `audio/vnd.wave` files ([tribela](https://github.com/mastodon/mastodon/pull/18737)) +- Add more debug information when processing remote accounts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/15605), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19209)) +- **Add retention policy for cached content and media** ([Gargron](https://github.com/mastodon/mastodon/pull/19232), [zunda](https://github.com/mastodon/mastodon/pull/19478), [Gargron](https://github.com/mastodon/mastodon/pull/19458), [Gargron](https://github.com/mastodon/mastodon/pull/19248)) + - Set for how long remote posts or media should be cached on your server + - Hands-off alternative to `tootctl` commands +- **Add customizable user roles** ([Gargron](https://github.com/mastodon/mastodon/pull/18641), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18812), [Gargron](https://github.com/mastodon/mastodon/pull/19040), [tribela](https://github.com/mastodon/mastodon/pull/18825), [tribela](https://github.com/mastodon/mastodon/pull/18826), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18776), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18777), [unextro](https://github.com/mastodon/mastodon/pull/18786), [tribela](https://github.com/mastodon/mastodon/pull/18824), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19436)) + - Previously, there were 3 hard-coded roles, user, moderator, and admin + - Create your own roles and decide which permissions they should have +- Add notifications for new reports ([Gargron](https://github.com/mastodon/mastodon/pull/18697), [Gargron](https://github.com/mastodon/mastodon/pull/19475)) +- Add ability to select all accounts matching search for batch actions in admin UI ([Gargron](https://github.com/mastodon/mastodon/pull/19053), [Gargron](https://github.com/mastodon/mastodon/pull/19054)) +- Add ability to view previous edits of a status in admin UI ([Gargron](https://github.com/mastodon/mastodon/pull/19462)) +- Add ability to block sign-ups from IP ([Gargron](https://github.com/mastodon/mastodon/pull/19037)) +- **Add webhooks to admin UI** ([Gargron](https://github.com/mastodon/mastodon/pull/18510)) +- Add admin API for managing domain allows ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18668)) +- Add admin API for managing domain blocks ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18247)) +- Add admin API for managing e-mail domain blocks ([Gargron](https://github.com/mastodon/mastodon/pull/19066)) +- Add admin API for managing canonical e-mail blocks ([Gargron](https://github.com/mastodon/mastodon/pull/19067)) +- Add admin API for managing IP blocks ([Gargron](https://github.com/mastodon/mastodon/pull/19065)) +- Add `services` and `metadata` to the NodeInfo endpoint ([MFTabriz](https://github.com/mastodon/mastodon/pull/18563)) +- Add `--remove-role` option to `tootctl accounts modify` ([Gargron](https://github.com/mastodon/mastodon/pull/19477)) +- Add `--days` option to `tootctl media refresh` ([tribela](https://github.com/mastodon/mastodon/pull/18425)) +- Add `EMAIL_DOMAIN_LISTS_APPLY_AFTER_CONFIRMATION` environment variable ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18642)) +- Add `IP_RETENTION_PERIOD` and `SESSION_RETENTION_PERIOD` environment variables ([kescherCode](https://github.com/mastodon/mastodon/pull/18757)) +- Add `http_hidden_proxy` environment variable ([tribela](https://github.com/mastodon/mastodon/pull/18427)) + +### Changed + +- **Change brand color and logotypes** ([Gargron](https://github.com/mastodon/mastodon/pull/18592), [Gargron](https://github.com/mastodon/mastodon/pull/18639), [Gargron](https://github.com/mastodon/mastodon/pull/18691), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18634), [Gargron](https://github.com/mastodon/mastodon/pull/19254), [mayaeh](https://github.com/mastodon/mastodon/pull/18710)) +- **Change post editing to be enabled in web UI** ([Gargron](https://github.com/mastodon/mastodon/pull/19103)) +- **Change web UI to work for logged-out users** ([Gargron](https://github.com/mastodon/mastodon/pull/18961), [Gargron](https://github.com/mastodon/mastodon/pull/19250), [Gargron](https://github.com/mastodon/mastodon/pull/19294), [Gargron](https://github.com/mastodon/mastodon/pull/19306), [Gargron](https://github.com/mastodon/mastodon/pull/19315), [ykzts](https://github.com/mastodon/mastodon/pull/19322), [Gargron](https://github.com/mastodon/mastodon/pull/19412), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19437), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19415), [Gargron](https://github.com/mastodon/mastodon/pull/19348), [Gargron](https://github.com/mastodon/mastodon/pull/19295), [Gargron](https://github.com/mastodon/mastodon/pull/19422), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19414), [Gargron](https://github.com/mastodon/mastodon/pull/19319), [Gargron](https://github.com/mastodon/mastodon/pull/19345), [Gargron](https://github.com/mastodon/mastodon/pull/19310), [Gargron](https://github.com/mastodon/mastodon/pull/19301), [Gargron](https://github.com/mastodon/mastodon/pull/19423), [ykzts](https://github.com/mastodon/mastodon/pull/19471), [ykzts](https://github.com/mastodon/mastodon/pull/19333), [ykzts](https://github.com/mastodon/mastodon/pull/19337), [ykzts](https://github.com/mastodon/mastodon/pull/19272), [ykzts](https://github.com/mastodon/mastodon/pull/19468), [Gargron](https://github.com/mastodon/mastodon/pull/19466), [Gargron](https://github.com/mastodon/mastodon/pull/19457), [Gargron](https://github.com/mastodon/mastodon/pull/19426), [Gargron](https://github.com/mastodon/mastodon/pull/19427), [Gargron](https://github.com/mastodon/mastodon/pull/19421), [Gargron](https://github.com/mastodon/mastodon/pull/19417), [Gargron](https://github.com/mastodon/mastodon/pull/19413), [Gargron](https://github.com/mastodon/mastodon/pull/19397), [Gargron](https://github.com/mastodon/mastodon/pull/19387), [Gargron](https://github.com/mastodon/mastodon/pull/19396), [Gargron](https://github.com/mastodon/mastodon/pull/19385), [ykzts](https://github.com/mastodon/mastodon/pull/19334), [ykzts](https://github.com/mastodon/mastodon/pull/19329), [Gargron](https://github.com/mastodon/mastodon/pull/19324), [Gargron](https://github.com/mastodon/mastodon/pull/19318), [Gargron](https://github.com/mastodon/mastodon/pull/19316), [Gargron](https://github.com/mastodon/mastodon/pull/19263), [trwnh](https://github.com/mastodon/mastodon/pull/19305), [ykzts](https://github.com/mastodon/mastodon/pull/19273)) + - The web app can now be accessed without being logged in + - No more `/web` prefix on web app paths + - Profiles, posts, and other public pages now use the same interface for logged in and logged out users + - The web app displays a server information banner + - Pop-up windows for remote interaction have been replaced with a modal window + - No need to type in your username for remote interaction, copy-paste-to-search method explained + - Various hints throughout the app explain what the different timelines are + - New about page design + - New privacy policy page design shows when the policy was last updated + - All sections of the web app now have appropriate window titles + - The layout of the interface has been streamlined between different screen sizes + - Posts now use more horizontal space +- Change label of publish button to be "Publish" again in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/18583)) +- Change language to be carried over on reply in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18557)) +- Change "Unfollow" to "Cancel follow request" when request still pending in web UI ([prplecake](https://github.com/mastodon/mastodon/pull/19363)) +- **Change post filtering system** ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18058), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19050), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18894), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19051), [noellabo](https://github.com/mastodon/mastodon/pull/18923), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18956), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18744)) + - Filtered keywords and phrases can now be grouped into named categories + - Filtered posts show which exact filter was hit + - Individual posts can be added to a filter + - You can peek inside filtered posts anyway +- Change path of privacy policy page from `/terms` to `/privacy-policy` ([Gargron](https://github.com/mastodon/mastodon/pull/19249)) +- Change how hashtags are normalized ([Gargron](https://github.com/mastodon/mastodon/pull/18795), [Gargron](https://github.com/mastodon/mastodon/pull/18863), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18854)) +- Change public timelines to be filtered by current locale by default ([Gargron](https://github.com/mastodon/mastodon/pull/19291)) +- Change settings area to be separated into categories in admin UI ([Gargron](https://github.com/mastodon/mastodon/pull/19407)) +- Change "No accounts selected" errors to use the appropriate noun in admin UI ([prplecake](https://github.com/mastodon/mastodon/pull/19356)) +- Change e-mail domain blocks to match subdomains of blocked domains ([Gargron](https://github.com/mastodon/mastodon/pull/18979)) +- Change custom emoji file size limit from 50 KB to 256 KB ([Gargron](https://github.com/mastodon/mastodon/pull/18788)) +- Change "Allow trends without prior review" setting to also work for trending posts ([Gargron](https://github.com/mastodon/mastodon/pull/17977)) +- Change search API to be accessible without being logged in ([Gargron](https://github.com/mastodon/mastodon/pull/18963), [Gargron](https://github.com/mastodon/mastodon/pull/19326)) +- Change following and followers API to be accessible without being logged in ([Gargron](https://github.com/mastodon/mastodon/pull/18964)) +- Change Helm configuration ([deepy](https://github.com/mastodon/mastodon/pull/18997), [jgsmith](https://github.com/mastodon/mastodon/pull/18415), [deepy](https://github.com/mastodon/mastodon/pull/18941)) + +### Removed + +- Remove setting that disables account deletes ([Gargron](https://github.com/mastodon/mastodon/pull/17683)) +- Remove digest e-mails ([Gargron](https://github.com/mastodon/mastodon/pull/17985)) +- Remove unnecessary sections from welcome e-mail ([Gargron](https://github.com/mastodon/mastodon/pull/19299)) +- Remove item titles from RSS feeds ([Gargron](https://github.com/mastodon/mastodon/pull/18640)) +- Remove volume number from hashtags in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/19253)) +- Remove Nanobox configuration ([tonyjiang](https://github.com/mastodon/mastodon/pull/17881)) + +### Fixed + +- Fix OCR not working due to Content Security Policy in web UI ([prplecake](https://github.com/mastodon/mastodon/pull/18817)) +- Fix `nofollow` rel being removed in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/19455)) +- Fix language dropdown causing zoom on mobile devices in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/19428)) +- Fix button to dismiss suggestions not showing up in search results in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19325)) +- Fix language dropdown sometimes not appearing in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/19246)) +- Fix quickly switching notification filters resulting in empty or incorrect list in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19052), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18960)) +- Fix media modal link button in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18877)) +- Fix error upon successful account migration ([Gargron](https://github.com/mastodon/mastodon/pull/19386)) +- Fix negatives values in search index causing queries to fail ([Gargron](https://github.com/mastodon/mastodon/pull/19464), [Gargron](https://github.com/mastodon/mastodon/pull/19481)) +- Fix error when searching for invalid URL ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18580)) +- Fix IP blocks not having a unique index ([Gargron](https://github.com/mastodon/mastodon/pull/19456)) +- Fix remote account in contact account setting not being used ([Gargron](https://github.com/mastodon/mastodon/pull/19351)) +- Fix swallowing mentions of unconfirmed/unapproved users ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19191)) +- Fix incorrect and slow cache invalidation when blocking domain and removing media attachments ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19062)) +- Fix HTTPs redirect behaviour when running as I2P service ([gi-yt](https://github.com/mastodon/mastodon/pull/18929)) +- Fix deleted pinned posts potentially counting towards the pinned posts limit ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19005)) +- Fix compatibility with OpenSSL 3.0 ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18449)) +- Fix error when a remote report includes a private post the server has no access to ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18760)) +- Fix suspicious sign-in mails never being sent ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18599)) +- Fix fallback locale when somehow user's locale is an empty string ([tribela](https://github.com/mastodon/mastodon/pull/18543)) +- Fix avatar/header not being deleted locally when deleted on remote account ([tribela](https://github.com/mastodon/mastodon/pull/18973)) +- Fix missing `,` in Blurhash validation ([noellabo](https://github.com/mastodon/mastodon/pull/18660)) +- Fix order by most recent not working for relationships page in admin UI ([tribela](https://github.com/mastodon/mastodon/pull/18996)) +- Fix uncaught error when invalid date is supplied to API ([Gargron](https://github.com/mastodon/mastodon/pull/19480)) +- Fix REST API sometimes returning HTML on error ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19135)) +- Fix ambiguous column names in `tootctl media refresh` ([tribela](https://github.com/mastodon/mastodon/pull/19206)) +- Fix ambiguous column names in `tootctl search deploy` ([mashirozx](https://github.com/mastodon/mastodon/pull/18993)) +- Fix `CDN_HOST` not being used in some asset URLs ([tribela](https://github.com/mastodon/mastodon/pull/18662)) +- Fix `CAS_DISPLAY_NAME`, `SAML_DISPLAY_NAME` and `OIDC_DISPLAY_NAME` being ignored ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18568)) +- Fix various typos in comments throughout the codebase ([luzpaz](https://github.com/mastodon/mastodon/pull/18604)) + ## [3.5.3] - 2022-05-26 ### Added @@ -75,7 +201,7 @@ All notable changes to this project will be documented in this file. - Remove IP matching from e-mail domain blocks ([Gargron](https://github.com/mastodon/mastodon/pull/18190)) - The IPs of the blocked e-mail domain or its MX records are no longer checked - Previously it was too easy to block e-mail providers by mistake - + ## Fixed - Fix compatibility with Friendica's pinned posts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18254), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18260)) diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index 8ed955aa0..179490098 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -5,19 +5,19 @@ module Mastodon module_function def major - 3 + 4 end def minor - 5 + 0 end def patch - 3 + 0 end def flags - '' + 'rc1' end def suffix From 07cc201accd4a04c8c11cda21eecded4e7875d55 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 28 Oct 2022 00:48:30 +0200 Subject: [PATCH 583/652] Fix using wrong policy on status-related actions in admin UI (#19490) --- app/models/admin/status_batch_action.rb | 4 ++-- app/models/trends/status_batch.rb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/models/admin/status_batch_action.rb b/app/models/admin/status_batch_action.rb index 7bf6fa6da..0ec4fef82 100644 --- a/app/models/admin/status_batch_action.rb +++ b/app/models/admin/status_batch_action.rb @@ -40,7 +40,7 @@ class Admin::StatusBatchAction end def handle_delete! - statuses.each { |status| authorize(status, :destroy?) } + statuses.each { |status| authorize([:admin, status], :destroy?) } ApplicationRecord.transaction do statuses.each do |status| @@ -75,7 +75,7 @@ class Admin::StatusBatchAction statuses.includes(:media_attachments, :preview_cards).find_each do |status| next unless status.with_media? || status.with_preview_card? - authorize(status, :update?) + authorize([:admin, status], :update?) if target_account.local? UpdateStatusService.new.call(status, representative_account.id, sensitive: true) diff --git a/app/models/trends/status_batch.rb b/app/models/trends/status_batch.rb index 78d93bed4..f9b97b224 100644 --- a/app/models/trends/status_batch.rb +++ b/app/models/trends/status_batch.rb @@ -30,7 +30,7 @@ class Trends::StatusBatch end def approve! - statuses.each { |status| authorize(status, :review?) } + statuses.each { |status| authorize([:admin, status], :review?) } statuses.update_all(trendable: true) end @@ -45,7 +45,7 @@ class Trends::StatusBatch end def reject! - statuses.each { |status| authorize(status, :review?) } + statuses.each { |status| authorize([:admin, status], :review?) } statuses.update_all(trendable: false) end From 8dfe5179ee7186e549dbe1186a151ffa848fe8ab Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 28 Oct 2022 00:48:45 +0200 Subject: [PATCH 584/652] Fix avatars not using image tags in web UI (#19488) Fix #19483 --- .../__snapshots__/avatar-test.js.snap | 22 ++++---- .../__snapshots__/avatar_overlay-test.js.snap | 50 +++++++++++++++---- app/javascript/mastodon/components/avatar.js | 26 +++------- .../mastodon/components/avatar_composite.js | 7 +-- .../mastodon/components/avatar_overlay.js | 38 +++++++++----- .../styles/mastodon/components.scss | 39 +++++---------- 6 files changed, 103 insertions(+), 79 deletions(-) diff --git a/app/javascript/mastodon/components/__tests__/__snapshots__/avatar-test.js.snap b/app/javascript/mastodon/components/__tests__/__snapshots__/avatar-test.js.snap index f5c10aa37..7fbdedeb2 100644 --- a/app/javascript/mastodon/components/__tests__/__snapshots__/avatar-test.js.snap +++ b/app/javascript/mastodon/components/__tests__/__snapshots__/avatar-test.js.snap @@ -2,36 +2,38 @@ exports[` Autoplay renders a animated avatar 1`] = `
+> + alice +
`; exports[` Still renders a still avatar 1`] = `
+> + alice +
`; diff --git a/app/javascript/mastodon/components/__tests__/__snapshots__/avatar_overlay-test.js.snap b/app/javascript/mastodon/components/__tests__/__snapshots__/avatar_overlay-test.js.snap index 58f27a321..f8385357a 100644 --- a/app/javascript/mastodon/components/__tests__/__snapshots__/avatar_overlay-test.js.snap +++ b/app/javascript/mastodon/components/__tests__/__snapshots__/avatar_overlay-test.js.snap @@ -3,22 +3,52 @@ exports[`
+
+ > + alice +
+
+
+ > + eve@blackhat.lair +
+
`; diff --git a/app/javascript/mastodon/components/avatar.js b/app/javascript/mastodon/components/avatar.js index dd3932ae6..207b26691 100644 --- a/app/javascript/mastodon/components/avatar.js +++ b/app/javascript/mastodon/components/avatar.js @@ -42,30 +42,20 @@ export default class Avatar extends React.PureComponent { ...this.props.style, width: `${size}px`, height: `${size}px`, - backgroundSize: `${size}px ${size}px`, }; - if (account) { - const src = account.get('avatar'); - const staticSrc = account.get('avatar_static'); + let src; - if (hovering || animate) { - style.backgroundImage = `url(${src})`; - } else { - style.backgroundImage = `url(${staticSrc})`; - } + if (hovering || animate) { + src = account?.get('avatar'); + } else { + src = account?.get('avatar_static'); } - return ( -
+
+ {account?.get('acct')} +
); } diff --git a/app/javascript/mastodon/components/avatar_composite.js b/app/javascript/mastodon/components/avatar_composite.js index 5d5b89749..220bf5b4f 100644 --- a/app/javascript/mastodon/components/avatar_composite.js +++ b/app/javascript/mastodon/components/avatar_composite.js @@ -2,6 +2,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { autoPlayGif } from '../initial_state'; +import Avatar from './avatar'; export default class AvatarComposite extends React.PureComponent { @@ -74,12 +75,12 @@ export default class AvatarComposite extends React.PureComponent { bottom: bottom, width: `${width}%`, height: `${height}%`, - backgroundSize: 'cover', - backgroundImage: `url(${account.get(animate ? 'avatar' : 'avatar_static')})`, }; return ( -
+
+ +
); } diff --git a/app/javascript/mastodon/components/avatar_overlay.js b/app/javascript/mastodon/components/avatar_overlay.js index 3ec1d7730..8d5d44ea5 100644 --- a/app/javascript/mastodon/components/avatar_overlay.js +++ b/app/javascript/mastodon/components/avatar_overlay.js @@ -2,6 +2,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { autoPlayGif } from '../initial_state'; +import Avatar from './avatar'; export default class AvatarOverlay extends React.PureComponent { @@ -9,27 +10,40 @@ export default class AvatarOverlay extends React.PureComponent { account: ImmutablePropTypes.map.isRequired, friend: ImmutablePropTypes.map.isRequired, animate: PropTypes.bool, + size: PropTypes.number, + baseSize: PropTypes.number, + overlaySize: PropTypes.number, }; static defaultProps = { animate: autoPlayGif, + size: 46, + baseSize: 36, + overlaySize: 24, }; + state = { + hovering: false, + }; + + handleMouseEnter = () => { + if (this.props.animate) return; + this.setState({ hovering: true }); + } + + handleMouseLeave = () => { + if (this.props.animate) return; + this.setState({ hovering: false }); + } + render() { - const { account, friend, animate } = this.props; - - const baseStyle = { - backgroundImage: `url(${account.get(animate ? 'avatar' : 'avatar_static')})`, - }; - - const overlayStyle = { - backgroundImage: `url(${friend.get(animate ? 'avatar' : 'avatar_static')})`, - }; + const { account, friend, animate, size, baseSize, overlaySize } = this.props; + const { hovering } = this.state; return ( -
-
-
+
+
+
); } diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 633b9ed70..69301fb05 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -1382,6 +1382,14 @@ display: block; position: relative; + overflow: hidden; + + img { + display: block; + width: 100%; + height: 100%; + object-fit: cover; + } &-inline { display: inline-block; @@ -1390,8 +1398,6 @@ } &-composite { - @include avatar-radius; - border-radius: 50%; overflow: hidden; position: relative; @@ -1402,6 +1408,11 @@ box-sizing: border-box; } + .account__avatar { + width: 100% !important; + height: 100% !important; + } + &__label { display: block; position: absolute; @@ -1421,37 +1432,13 @@ a .account__avatar { } .account__avatar-overlay { - @include avatar-size(46px); - position: relative; - &-base { - @include avatar-radius; - @include avatar-size(36px); - - img { - @include avatar-radius; - - width: 100%; - height: 100%; - } - } - &-overlay { - @include avatar-radius; - @include avatar-size(24px); - position: absolute; bottom: 0; right: 0; z-index: 1; - - img { - @include avatar-radius; - - width: 100%; - height: 100%; - } } } From 10922294ffd2c83e155f020896318d16f3764e8d Mon Sep 17 00:00:00 2001 From: Robert Laurenz <8169746+laurenzcodes@users.noreply.github.com> Date: Fri, 28 Oct 2022 12:46:41 +0200 Subject: [PATCH 585/652] fix(component): adjust style of counter button to fix overflow issue (#19494) --- app/javascript/styles/mastodon/components.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 69301fb05..73f00e4c5 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -279,11 +279,12 @@ display: inline-flex; align-items: center; width: auto !important; + padding: 0 4px 0 2px; } &__counter { display: inline-block; - width: 14px; + width: auto; margin-left: 4px; font-size: 12px; font-weight: 500; From d9d722d74b2cb9bf30fa4cc98af6ddbeca003ebc Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 28 Oct 2022 12:56:32 +0200 Subject: [PATCH 586/652] Change admin announcement edition interface to use datetime-local (#18321) * Change admin announcement edition interface to use datetime-local * Dynamically set announcement stop date as required if start date is set, set minimum date for stop date * Change `all_day` to not be bound to presence of time-range * Add pattern and placeholder as minimal fallback for browsers not supporting datetime-local * Display datetime-local inputs as local time Co-authored-by: Eugen Rochko --- app/javascript/packs/admin.js | 54 ++++++++++++++++++++ app/javascript/styles/mastodon/forms.scss | 5 +- app/models/announcement.rb | 5 -- app/views/admin/announcements/edit.html.haml | 7 ++- app/views/admin/announcements/new.html.haml | 9 ++-- 5 files changed, 69 insertions(+), 11 deletions(-) diff --git a/app/javascript/packs/admin.js b/app/javascript/packs/admin.js index b733d6b18..de86e0e11 100644 --- a/app/javascript/packs/admin.js +++ b/app/javascript/packs/admin.js @@ -2,6 +2,24 @@ import './public-path'; import { delegate } from '@rails/ujs'; import ready from '../mastodon/ready'; +const setAnnouncementEndsAttributes = (target) => { + const valid = target?.value && target?.validity?.valid; + const element = document.querySelector('input[type="datetime-local"]#announcement_ends_at'); + if (valid) { + element.classList.remove('optional'); + element.required = true; + element.min = target.value; + } else { + element.classList.add('optional'); + element.removeAttribute('required'); + element.removeAttribute('min'); + } +}; + +delegate(document, 'input[type="datetime-local"]#announcement_starts_at', 'change', ({ target }) => { + setAnnouncementEndsAttributes(target); +}); + const batchCheckboxClassName = '.batch-checkbox input[type="checkbox"]'; const showSelectAll = () => { @@ -141,6 +159,20 @@ const onChangeRegistrationMode = (target) => { }); }; +const convertUTCDateTimeToLocal = (value) => { + const date = new Date(value + 'Z'); + const twoChars = (x) => (x.toString().padStart(2, '0')); + return `${date.getFullYear()}-${twoChars(date.getMonth()+1)}-${twoChars(date.getDate())}T${twoChars(date.getHours())}:${twoChars(date.getMinutes())}`; +}; + +const convertLocalDatetimeToUTC = (value) => { + const re = /^([0-9]{4,})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2})/; + const match = re.exec(value); + const date = new Date(match[1], match[2] - 1, match[3], match[4], match[5]); + const fullISO8601 = date.toISOString(); + return fullISO8601.slice(0, fullISO8601.indexOf('T') + 6); +}; + delegate(document, '#form_admin_settings_registrations_mode', 'change', ({ target }) => onChangeRegistrationMode(target)); ready(() => { @@ -163,6 +195,28 @@ ready(() => { } }); + [].forEach.call(document.querySelectorAll('input[type="datetime-local"]'), element => { + if (element.value) { + element.value = convertUTCDateTimeToLocal(element.value); + } + if (element.placeholder) { + element.placeholder = convertUTCDateTimeToLocal(element.placeholder); + } + }); + + delegate(document, 'form', 'submit', ({ target }) => { + [].forEach.call(target.querySelectorAll('input[type="datetime-local"]'), element => { + if (element.value && element.validity.valid) { + element.value = convertLocalDatetimeToUTC(element.value); + } + }); + }); + + const announcementStartsAt = document.querySelector('input[type="datetime-local"]#announcement_starts_at'); + if (announcementStartsAt) { + setAnnouncementEndsAttributes(announcementStartsAt); + } + const React = require('react'); const ReactDOM = require('react-dom'); diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss index 25c9c9fe5..a3ddc7636 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -405,6 +405,7 @@ code { input[type="email"], input[type="password"], input[type="url"], + input[type="datetime-local"], textarea { box-sizing: border-box; font-size: 16px; @@ -445,7 +446,8 @@ code { input[type="text"], input[type="number"], input[type="email"], - input[type="password"] { + input[type="password"], + input[type="datetime-local"] { &:focus:invalid:not(:placeholder-shown), &:required:invalid:not(:placeholder-shown) { border-color: lighten($error-red, 12%); @@ -461,6 +463,7 @@ code { input[type="number"], input[type="email"], input[type="password"], + input[type="datetime-local"], textarea, select { border-color: lighten($error-red, 12%); diff --git a/app/models/announcement.rb b/app/models/announcement.rb index bedced9de..4b2cb4c6d 100644 --- a/app/models/announcement.rb +++ b/app/models/announcement.rb @@ -31,7 +31,6 @@ class Announcement < ApplicationRecord validates :starts_at, presence: true, if: -> { ends_at.present? } validates :ends_at, presence: true, if: -> { starts_at.present? } - before_validation :set_all_day before_validation :set_published, on: :create def to_log_human_identifier @@ -89,10 +88,6 @@ class Announcement < ApplicationRecord private - def set_all_day - self.all_day = false if starts_at.blank? || ends_at.blank? - end - def set_published return unless scheduled_at.blank? || scheduled_at.past? diff --git a/app/views/admin/announcements/edit.html.haml b/app/views/admin/announcements/edit.html.haml index 5f56db5e7..e20a839b9 100644 --- a/app/views/admin/announcements/edit.html.haml +++ b/app/views/admin/announcements/edit.html.haml @@ -1,12 +1,15 @@ - content_for :page_title do = t('.title') +- content_for :header_tags do + = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' + = simple_form_for @announcement, url: admin_announcement_path(@announcement) do |f| = render 'shared/error_messages', object: @announcement .fields-group - = f.input :starts_at, include_blank: true, wrapper: :with_block_label - = f.input :ends_at, include_blank: true, wrapper: :with_block_label + = f.input :starts_at, include_blank: true, wrapper: :with_block_label, html5: true, input_html: { pattern: '[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}(:[0-9]{2}){1,2}', placeholder: Time.now.strftime('%FT%R') } + = f.input :ends_at, include_blank: true, wrapper: :with_block_label, html5: true, input_html: { pattern: '[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}(:[0-9]{2}){1,2}', placeholder: Time.now.strftime('%FT%R') } .fields-group = f.input :all_day, as: :boolean, wrapper: :with_label diff --git a/app/views/admin/announcements/new.html.haml b/app/views/admin/announcements/new.html.haml index a5298c5f6..d5881b7aa 100644 --- a/app/views/admin/announcements/new.html.haml +++ b/app/views/admin/announcements/new.html.haml @@ -1,12 +1,15 @@ - content_for :page_title do = t('.title') +- content_for :header_tags do + = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' + = simple_form_for @announcement, url: admin_announcements_path do |f| = render 'shared/error_messages', object: @announcement .fields-group - = f.input :starts_at, include_blank: true, wrapper: :with_block_label - = f.input :ends_at, include_blank: true, wrapper: :with_block_label + = f.input :starts_at, include_blank: true, wrapper: :with_block_label, html5: true, input_html: { pattern: '[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}(:[0-9]{2}){1,2}', placeholder: Time.now.strftime('%FT%R') } + = f.input :ends_at, include_blank: true, wrapper: :with_block_label, html5: true, input_html: { pattern: '[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}(:[0-9]{2}){1,2}', placeholder: Time.now.strftime('%FT%R') } .fields-group = f.input :all_day, as: :boolean, wrapper: :with_label @@ -15,7 +18,7 @@ = f.input :text, wrapper: :with_block_label .fields-group - = f.input :scheduled_at, include_blank: true, wrapper: :with_block_label + = f.input :scheduled_at, include_blank: true, wrapper: :with_block_label, html5: true, input_html: { pattern: '[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}(:[0-9]{2}){1,2}', placeholder: Time.now.strftime('%FT%R') } .actions = f.button :button, t('.create'), type: :submit From 923f06a07c851b25b989412f341f87f8b8fff42f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 28 Oct 2022 12:56:51 +0200 Subject: [PATCH 587/652] Fix number of uses being shown again on trending hashtags in web UI (#19484) --- app/javascript/mastodon/components/hashtag.js | 1 - app/javascript/styles/mastodon/components.scss | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/app/javascript/mastodon/components/hashtag.js b/app/javascript/mastodon/components/hashtag.js index 8dd27290a..75220211e 100644 --- a/app/javascript/mastodon/components/hashtag.js +++ b/app/javascript/mastodon/components/hashtag.js @@ -56,7 +56,6 @@ export const ImmutableHashtag = ({ hashtag }) => ( href={hashtag.get('url')} to={`/tags/${hashtag.get('name')}`} people={hashtag.getIn(['history', 0, 'accounts']) * 1 + hashtag.getIn(['history', 1, 'accounts']) * 1} - uses={hashtag.getIn(['history', 0, 'uses']) * 1 + hashtag.getIn(['history', 1, 'uses']) * 1} history={hashtag.get('history').reverse().map((day) => day.get('uses')).toArray()} /> ); diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 73f00e4c5..ded5634d6 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -7278,6 +7278,7 @@ noscript { align-items: center; padding: 15px; border-bottom: 1px solid lighten($ui-base-color, 8%); + gap: 15px; &:last-child { border-bottom: 0; @@ -7319,8 +7320,6 @@ noscript { font-size: 24px; font-weight: 500; text-align: right; - padding-right: 15px; - margin-left: 5px; color: $secondary-text-color; text-decoration: none; } From 9bf6a8af82391fa8b32112deb4a36a0cfc68143e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kangwook=20Lee=20=28=EC=9D=B4=EA=B0=95=EC=9A=B1=29?= Date: Fri, 28 Oct 2022 23:21:58 +0900 Subject: [PATCH 588/652] Fix PostgreSQL password reference (#19502) --- chart/templates/deployment-sidekiq.yaml | 2 +- chart/templates/deployment-streaming.yaml | 2 +- chart/templates/deployment-web.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/chart/templates/deployment-sidekiq.yaml b/chart/templates/deployment-sidekiq.yaml index f1809bd85..44d3b8203 100644 --- a/chart/templates/deployment-sidekiq.yaml +++ b/chart/templates/deployment-sidekiq.yaml @@ -76,7 +76,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: password + key: postgresql-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/deployment-streaming.yaml b/chart/templates/deployment-streaming.yaml index 12203a530..6b7c3cdd9 100644 --- a/chart/templates/deployment-streaming.yaml +++ b/chart/templates/deployment-streaming.yaml @@ -44,7 +44,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: password + key: postgresql-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/deployment-web.yaml b/chart/templates/deployment-web.yaml index ab722c77b..c5d177e51 100644 --- a/chart/templates/deployment-web.yaml +++ b/chart/templates/deployment-web.yaml @@ -62,7 +62,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: password + key: postgresql-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: From 223e152312c9661532d846b7580d95819a0af5a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kangwook=20Lee=20=28=EC=9D=B4=EA=B0=95=EC=9A=B1=29?= Date: Fri, 28 Oct 2022 23:29:00 +0900 Subject: [PATCH 589/652] Add option to enable single user mode (#19503) --- chart/templates/configmap-env.yaml | 3 +++ chart/values.yaml | 2 ++ 2 files changed, 5 insertions(+) diff --git a/chart/templates/configmap-env.yaml b/chart/templates/configmap-env.yaml index f988477d9..12da91cf9 100644 --- a/chart/templates/configmap-env.yaml +++ b/chart/templates/configmap-env.yaml @@ -24,6 +24,9 @@ data: {{- if .Values.mastodon.web_domain }} WEB_DOMAIN: {{ .Values.mastodon.web_domain }} {{- end }} + {{- if .Values.mastodon.singleUserMode }} + SINGLE_USER_MODE: "true" + {{- end }} # https://devcenter.heroku.com/articles/tuning-glibc-memory-behavior MALLOC_ARENA_MAX: "2" NODE_ENV: "production" diff --git a/chart/values.yaml b/chart/values.yaml index 48554412f..9125d1a16 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -30,6 +30,8 @@ mastodon: # Use of WEB_DOMAIN requires careful consideration: https://docs.joinmastodon.org/admin/config/#federation # You must redirect the path LOCAL_DOMAIN/.well-known/ to WEB_DOMAIN/.well-known/ as described # web_domain: mastodon.example.com + # If set to true, the frontpage of your Mastodon server will always redirect to the first profile in the database and registrations will be disabled. + singleUserMode: false persistence: assets: # ReadWriteOnce is more widely supported than ReadWriteMany, but limits From dae954ef111b8e0ab17812d156f6c955b77d9859 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kangwook=20Lee=20=28=EC=9D=B4=EA=B0=95=EC=9A=B1=29?= Date: Fri, 28 Oct 2022 23:40:47 +0900 Subject: [PATCH 590/652] Fix PostgreSQL password reference for jobs (#19504) --- chart/templates/cronjob-media-remove.yaml | 2 +- chart/templates/job-assets-precompile.yaml | 2 +- chart/templates/job-chewy-upgrade.yaml | 2 +- chart/templates/job-create-admin.yaml | 2 +- chart/templates/job-db-migrate.yaml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/chart/templates/cronjob-media-remove.yaml b/chart/templates/cronjob-media-remove.yaml index 160aee204..4ca45804a 100644 --- a/chart/templates/cronjob-media-remove.yaml +++ b/chart/templates/cronjob-media-remove.yaml @@ -59,7 +59,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: password + key: postgresql-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/job-assets-precompile.yaml b/chart/templates/job-assets-precompile.yaml index faa51a20d..c20b4a370 100644 --- a/chart/templates/job-assets-precompile.yaml +++ b/chart/templates/job-assets-precompile.yaml @@ -60,7 +60,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: password + key: postgresql-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/job-chewy-upgrade.yaml b/chart/templates/job-chewy-upgrade.yaml index ae6fb38e1..cf7b59b58 100644 --- a/chart/templates/job-chewy-upgrade.yaml +++ b/chart/templates/job-chewy-upgrade.yaml @@ -61,7 +61,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: password + key: postgresql-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/job-create-admin.yaml b/chart/templates/job-create-admin.yaml index 659c00671..bb9094cda 100644 --- a/chart/templates/job-create-admin.yaml +++ b/chart/templates/job-create-admin.yaml @@ -66,7 +66,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: password + key: postgresql-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/job-db-migrate.yaml b/chart/templates/job-db-migrate.yaml index 8e4f70dfb..0b386c087 100644 --- a/chart/templates/job-db-migrate.yaml +++ b/chart/templates/job-db-migrate.yaml @@ -60,7 +60,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: password + key: postgresql-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: From 5fa340931e2bd39a4bcccc9a97ad58e13a2d56ab Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 28 Oct 2022 19:34:22 +0200 Subject: [PATCH 591/652] Fix closed registrations message not appearing in web UI (#19508) Regression from #19486 --- .../mastodon/features/closed_registrations_modal/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/javascript/mastodon/features/closed_registrations_modal/index.js b/app/javascript/mastodon/features/closed_registrations_modal/index.js index 062045b83..275bd50aa 100644 --- a/app/javascript/mastodon/features/closed_registrations_modal/index.js +++ b/app/javascript/mastodon/features/closed_registrations_modal/index.js @@ -6,7 +6,7 @@ import { domain } from 'mastodon/initial_state'; import { fetchServer } from 'mastodon/actions/server'; const mapStateToProps = state => ({ - closed_registrations_message: state.getIn(['server', 'server', 'registrations', 'closed_registrations_message']), + message: state.getIn(['server', 'server', 'registrations', 'message']), }); export default @connect(mapStateToProps) @@ -20,11 +20,11 @@ class ClosedRegistrationsModal extends ImmutablePureComponent { render () { let closedRegistrationsMessage; - if (this.props.closed_registrations_message) { + if (this.props.message) { closedRegistrationsMessage = (

); } else { From 317ec06dc791bfbd9eb86177b3027ca92d683b8b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 28 Oct 2022 23:30:44 +0200 Subject: [PATCH 592/652] Fix error when uploading malformed CSV import (#19509) --- app/validators/import_validator.rb | 2 ++ config/locales/activerecord.en.yml | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/app/validators/import_validator.rb b/app/validators/import_validator.rb index 9f19aee2a..cbad56df6 100644 --- a/app/validators/import_validator.rb +++ b/app/validators/import_validator.rb @@ -26,6 +26,8 @@ class ImportValidator < ActiveModel::Validator when 'following' validate_following_import(import, row_count) end + rescue CSV::MalformedCSVError + import.errors.add(:data, :malformed) end private diff --git a/config/locales/activerecord.en.yml b/config/locales/activerecord.en.yml index 2dfa3b955..8aee15659 100644 --- a/config/locales/activerecord.en.yml +++ b/config/locales/activerecord.en.yml @@ -29,6 +29,10 @@ en: attributes: website: invalid: is not a valid URL + import: + attributes: + data: + malformed: is malformed status: attributes: reblog: From dc5c86add78e03c7c53cf89d084c5e40f533cbc4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 29 Oct 2022 01:31:45 +0200 Subject: [PATCH 593/652] Fix account migration form ever using outdated account data (#18429) --- app/models/form/redirect.rb | 2 +- app/services/resolve_account_service.rb | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/models/form/redirect.rb b/app/models/form/redirect.rb index 19ee9faed..795fdd057 100644 --- a/app/models/form/redirect.rb +++ b/app/models/form/redirect.rb @@ -31,7 +31,7 @@ class Form::Redirect private def set_target_account - @target_account = ResolveAccountService.new.call(acct) + @target_account = ResolveAccountService.new.call(acct, skip_cache: true) rescue Webfinger::Error, HTTP::Error, OpenSSL::SSL::SSLError, Mastodon::Error # Validation will take care of it end diff --git a/app/services/resolve_account_service.rb b/app/services/resolve_account_service.rb index e3b370968..d8b81a7b9 100644 --- a/app/services/resolve_account_service.rb +++ b/app/services/resolve_account_service.rb @@ -12,6 +12,7 @@ class ResolveAccountService < BaseService # @param [Hash] options # @option options [Boolean] :redirected Do not follow further Webfinger redirects # @option options [Boolean] :skip_webfinger Do not attempt any webfinger query or refreshing account data + # @option options [Boolean] :skip_cache Get the latest data from origin even if cache is not due to update yet # @option options [Boolean] :suppress_errors When failing, return nil instead of raising an error # @return [Account] def call(uri, options = {}) @@ -120,7 +121,7 @@ class ResolveAccountService < BaseService return false if @options[:check_delivery_availability] && !DeliveryFailureTracker.available?(@domain) return false if @options[:skip_webfinger] - @account.nil? || @account.possibly_stale? + @options[:skip_cache] || @account.nil? || @account.possibly_stale? end def activitypub_ready? From e6d415bb1f76a9ead4bb759c71e8c4efaeea7801 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 29 Oct 2022 07:35:49 +0200 Subject: [PATCH 594/652] New Crowdin updates (#19425) * New translations en.yml (Occitan) * New translations doorkeeper.en.yml (Armenian) * New translations doorkeeper.en.yml (Danish) * New translations doorkeeper.en.yml (German) * New translations doorkeeper.en.yml (Greek) * New translations doorkeeper.en.yml (Frisian) * New translations doorkeeper.en.yml (Basque) * New translations doorkeeper.en.yml (Finnish) * New translations doorkeeper.en.yml (Hebrew) * New translations doorkeeper.en.yml (Hungarian) * New translations doorkeeper.en.yml (Italian) * New translations doorkeeper.en.yml (Catalan) * New translations doorkeeper.en.yml (Japanese) * New translations doorkeeper.en.yml (Georgian) * New translations doorkeeper.en.yml (Korean) * New translations doorkeeper.en.yml (Dutch) * New translations doorkeeper.en.yml (Norwegian) * New translations doorkeeper.en.yml (Polish) * New translations doorkeeper.en.yml (Portuguese) * New translations doorkeeper.en.yml (Czech) * New translations doorkeeper.en.yml (Bulgarian) * New translations en.yml (Serbian (Latin)) * New translations en.yml (Sorani (Kurdish)) * New translations en.yml (Corsican) * New translations en.yml (Sardinian) * New translations en.yml (Sanskrit) * New translations en.yml (Kabyle) * New translations doorkeeper.en.yml (Arabic) * New translations en.yml (Taigi) * New translations en.yml (Silesian) * New translations en.yml (Standard Moroccan Tamazight) * New translations doorkeeper.en.yml (Romanian) * New translations doorkeeper.en.yml (French) * New translations doorkeeper.en.yml (Spanish) * New translations doorkeeper.en.yml (Afrikaans) * New translations doorkeeper.en.yml (Russian) * New translations doorkeeper.en.yml (Slovak) * New translations doorkeeper.en.yml (Breton) * New translations doorkeeper.en.yml (Welsh) * New translations doorkeeper.en.yml (Esperanto) * New translations doorkeeper.en.yml (Chinese Traditional, Hong Kong) * New translations doorkeeper.en.yml (Tatar) * New translations doorkeeper.en.yml (Malayalam) * New translations doorkeeper.en.yml (Sinhala) * New translations doorkeeper.en.yml (Latvian) * New translations doorkeeper.en.yml (Scottish Gaelic) * New translations doorkeeper.en.yml (Asturian) * New translations doorkeeper.en.yml (Occitan) * New translations doorkeeper.en.yml (Serbian (Latin)) * New translations doorkeeper.en.yml (Kurmanji (Kurdish)) * New translations doorkeeper.en.yml (Sorani (Kurdish)) * New translations doorkeeper.en.yml (Corsican) * New translations doorkeeper.en.yml (Sardinian) * New translations doorkeeper.en.yml (Hindi) * New translations doorkeeper.en.yml (Estonian) * New translations doorkeeper.en.yml (Slovenian) * New translations doorkeeper.en.yml (Icelandic) * New translations doorkeeper.en.yml (Albanian) * New translations doorkeeper.en.yml (Serbian (Cyrillic)) * New translations doorkeeper.en.yml (Swedish) * New translations doorkeeper.en.yml (Turkish) * New translations doorkeeper.en.yml (Ukrainian) * New translations doorkeeper.en.yml (Chinese Simplified) * New translations doorkeeper.en.yml (Chinese Traditional) * New translations doorkeeper.en.yml (Vietnamese) * New translations doorkeeper.en.yml (Galician) * New translations doorkeeper.en.yml (Portuguese, Brazilian) * New translations doorkeeper.en.yml (Kazakh) * New translations doorkeeper.en.yml (Indonesian) * New translations doorkeeper.en.yml (Persian) * New translations doorkeeper.en.yml (Tamil) * New translations doorkeeper.en.yml (Spanish, Argentina) * New translations doorkeeper.en.yml (Spanish, Mexico) * New translations doorkeeper.en.yml (Marathi) * New translations doorkeeper.en.yml (Thai) * New translations doorkeeper.en.yml (Croatian) * New translations doorkeeper.en.yml (Norwegian Nynorsk) * New translations doorkeeper.en.yml (Kabyle) * New translations doorkeeper.en.yml (Ido) * New translations doorkeeper.en.yml (Standard Moroccan Tamazight) * New translations en.yml (Czech) * New translations en.json (Czech) * New translations simple_form.en.yml (Czech) * New translations en.yml (Danish) * New translations en.yml (Hungarian) * New translations en.yml (Polish) * New translations en.json (Icelandic) * New translations en.yml (Icelandic) * New translations simple_form.en.yml (Icelandic) * New translations activerecord.en.yml (Icelandic) * New translations devise.en.yml (Icelandic) * New translations en.yml (Polish) * New translations en.json (Russian) * New translations en.yml (Russian) * New translations en.json (Icelandic) * New translations en.yml (Icelandic) * New translations en.json (Latvian) * New translations en.yml (Latvian) * New translations simple_form.en.yml (Icelandic) * New translations en.json (Finnish) * New translations en.yml (Finnish) * New translations en.yml (Vietnamese) * New translations en.yml (Finnish) * New translations en.yml (Chinese Traditional) * New translations simple_form.en.yml (Finnish) * New translations en.yml (Turkish) * New translations en.json (Finnish) * New translations en.yml (Finnish) * New translations simple_form.en.yml (Finnish) * New translations simple_form.en.yml (Turkish) * New translations en.json (Dutch) * New translations en.yml (Catalan) * New translations en.yml (Dutch) * New translations simple_form.en.yml (Dutch) * New translations en.json (Scottish Gaelic) * New translations en.yml (Scottish Gaelic) * New translations simple_form.en.yml (Scottish Gaelic) * New translations activerecord.en.yml (Scottish Gaelic) * New translations devise.en.yml (Scottish Gaelic) * New translations en.yml (Greek) * New translations en.yml (Italian) * New translations en.yml (Dutch) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Dutch) * New translations en.yml (Slovenian) * New translations en.yml (Ukrainian) * New translations en.yml (Galician) * New translations en.yml (Chinese Simplified) * New translations en.json (Chinese Simplified) * New translations en.yml (Galician) * New translations simple_form.en.yml (Chinese Simplified) * New translations en.yml (Chinese Simplified) * New translations simple_form.en.yml (Chinese Simplified) * New translations en.json (French) * New translations en.yml (Thai) * New translations simple_form.en.yml (Thai) * New translations en.yml (Thai) * New translations en.json (Thai) * New translations simple_form.en.yml (Spanish) * New translations en.json (French) * New translations en.yml (French) * New translations simple_form.en.yml (French) * New translations en.json (Dutch) * New translations en.yml (Dutch) * New translations en.yml (Portuguese) * New translations simple_form.en.yml (Portuguese) * New translations en.yml (Dutch) * New translations en.json (Dutch) * New translations en.json (Arabic) * New translations en.yml (Arabic) * New translations en.json (Breton) * New translations en.json (Scottish Gaelic) * New translations en.yml (Scottish Gaelic) * New translations simple_form.en.yml (Arabic) * New translations simple_form.en.yml (Scottish Gaelic) * New translations en.yml (German) * New translations en.yml (Scottish Gaelic) * New translations simple_form.en.yml (Scottish Gaelic) * New translations en.yml (German) * New translations activerecord.en.yml (Turkish) * New translations activerecord.en.yml (Polish) * New translations activerecord.en.yml (Portuguese) * New translations activerecord.en.yml (Russian) * New translations activerecord.en.yml (Slovak) * New translations activerecord.en.yml (Slovenian) * New translations activerecord.en.yml (Albanian) * New translations activerecord.en.yml (Serbian (Cyrillic)) * New translations activerecord.en.yml (Swedish) * New translations activerecord.en.yml (Ukrainian) * New translations activerecord.en.yml (Dutch) * New translations activerecord.en.yml (Chinese Simplified) * New translations activerecord.en.yml (Chinese Traditional) * New translations activerecord.en.yml (Vietnamese) * New translations activerecord.en.yml (Galician) * New translations activerecord.en.yml (Portuguese, Brazilian) * New translations activerecord.en.yml (Indonesian) * New translations activerecord.en.yml (Persian) * New translations activerecord.en.yml (Tamil) * New translations activerecord.en.yml (Spanish, Argentina) * New translations activerecord.en.yml (Norwegian) * New translations activerecord.en.yml (Greek) * New translations activerecord.en.yml (Romanian) * New translations activerecord.en.yml (French) * New translations activerecord.en.yml (Spanish) * New translations activerecord.en.yml (Afrikaans) * New translations activerecord.en.yml (Arabic) * New translations activerecord.en.yml (Bulgarian) * New translations activerecord.en.yml (Catalan) * New translations activerecord.en.yml (Czech) * New translations activerecord.en.yml (Danish) * New translations activerecord.en.yml (German) * New translations activerecord.en.yml (Frisian) * New translations activerecord.en.yml (Basque) * New translations activerecord.en.yml (Finnish) * New translations activerecord.en.yml (Hebrew) * New translations activerecord.en.yml (Hungarian) * New translations activerecord.en.yml (Armenian) * New translations activerecord.en.yml (Italian) * New translations activerecord.en.yml (Japanese) * New translations activerecord.en.yml (Georgian) * New translations activerecord.en.yml (Korean) * New translations activerecord.en.yml (Spanish, Mexico) * New translations activerecord.en.yml (Bengali) * New translations activerecord.en.yml (Sorani (Kurdish)) * New translations activerecord.en.yml (Asturian) * New translations activerecord.en.yml (Occitan) * New translations activerecord.en.yml (Serbian (Latin)) * New translations activerecord.en.yml (Kurmanji (Kurdish)) * New translations activerecord.en.yml (Corsican) * New translations activerecord.en.yml (Breton) * New translations activerecord.en.yml (Sardinian) * New translations activerecord.en.yml (Kabyle) * New translations activerecord.en.yml (Ido) * New translations activerecord.en.yml (Sinhala) * New translations activerecord.en.yml (Malayalam) * New translations activerecord.en.yml (Marathi) * New translations activerecord.en.yml (Hindi) * New translations activerecord.en.yml (Thai) * New translations activerecord.en.yml (Croatian) * New translations activerecord.en.yml (Norwegian Nynorsk) * New translations activerecord.en.yml (Kazakh) * New translations activerecord.en.yml (Estonian) * New translations activerecord.en.yml (Latvian) * New translations activerecord.en.yml (Tatar) * New translations activerecord.en.yml (Welsh) * New translations activerecord.en.yml (Esperanto) * New translations activerecord.en.yml (Chinese Traditional, Hong Kong) * New translations activerecord.en.yml (Standard Moroccan Tamazight) * New translations activerecord.en.yml (Catalan) * New translations activerecord.en.yml (Italian) * New translations activerecord.en.yml (Dutch) * New translations activerecord.en.yml (Swedish) * New translations activerecord.en.yml (Ukrainian) * New translations activerecord.en.yml (Latvian) * New translations activerecord.en.yml (Icelandic) * New translations activerecord.en.yml (Chinese Traditional) * New translations activerecord.en.yml (Vietnamese) * New translations activerecord.en.yml (Spanish, Argentina) * New translations en.json (Korean) * New translations en.yml (Korean) * New translations simple_form.en.yml (Korean) * New translations activerecord.en.yml (Korean) * New translations activerecord.en.yml (Portuguese) * New translations en.yml (Korean) * New translations en.json (Galician) * New translations en.yml (Galician) * New translations activerecord.en.yml (Galician) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 12 +- app/javascript/mastodon/locales/ar.json | 72 ++++--- app/javascript/mastodon/locales/ast.json | 12 +- app/javascript/mastodon/locales/bg.json | 12 +- app/javascript/mastodon/locales/bn.json | 12 +- app/javascript/mastodon/locales/br.json | 172 ++++++++-------- app/javascript/mastodon/locales/ca.json | 24 ++- app/javascript/mastodon/locales/ckb.json | 12 +- app/javascript/mastodon/locales/co.json | 12 +- app/javascript/mastodon/locales/cs.json | 30 +-- app/javascript/mastodon/locales/cy.json | 12 +- app/javascript/mastodon/locales/da.json | 26 ++- app/javascript/mastodon/locales/de.json | 28 ++- .../mastodon/locales/defaultMessages.json | 77 +++++-- app/javascript/mastodon/locales/el.json | 24 ++- app/javascript/mastodon/locales/en-GB.json | 12 +- app/javascript/mastodon/locales/en.json | 12 +- app/javascript/mastodon/locales/eo.json | 12 +- app/javascript/mastodon/locales/es-AR.json | 26 ++- app/javascript/mastodon/locales/es-MX.json | 18 +- app/javascript/mastodon/locales/es.json | 12 +- app/javascript/mastodon/locales/et.json | 12 +- app/javascript/mastodon/locales/eu.json | 12 +- app/javascript/mastodon/locales/fa.json | 12 +- app/javascript/mastodon/locales/fi.json | 158 +++++++------- app/javascript/mastodon/locales/fr.json | 44 ++-- app/javascript/mastodon/locales/fy.json | 12 +- app/javascript/mastodon/locales/ga.json | 12 +- app/javascript/mastodon/locales/gd.json | 192 +++++++++--------- app/javascript/mastodon/locales/gl.json | 34 ++-- app/javascript/mastodon/locales/he.json | 12 +- app/javascript/mastodon/locales/hi.json | 12 +- app/javascript/mastodon/locales/hr.json | 12 +- app/javascript/mastodon/locales/hu.json | 26 ++- app/javascript/mastodon/locales/hy.json | 12 +- app/javascript/mastodon/locales/id.json | 12 +- app/javascript/mastodon/locales/io.json | 28 ++- app/javascript/mastodon/locales/is.json | 34 ++-- app/javascript/mastodon/locales/it.json | 24 ++- app/javascript/mastodon/locales/ja.json | 12 +- app/javascript/mastodon/locales/ka.json | 12 +- app/javascript/mastodon/locales/kab.json | 12 +- app/javascript/mastodon/locales/kk.json | 12 +- app/javascript/mastodon/locales/kn.json | 12 +- app/javascript/mastodon/locales/ko.json | 40 ++-- app/javascript/mastodon/locales/ku.json | 26 ++- app/javascript/mastodon/locales/kw.json | 12 +- app/javascript/mastodon/locales/lt.json | 12 +- app/javascript/mastodon/locales/lv.json | 28 ++- app/javascript/mastodon/locales/mk.json | 12 +- app/javascript/mastodon/locales/ml.json | 12 +- app/javascript/mastodon/locales/mr.json | 12 +- app/javascript/mastodon/locales/ms.json | 12 +- app/javascript/mastodon/locales/nl.json | 50 +++-- app/javascript/mastodon/locales/nn.json | 12 +- app/javascript/mastodon/locales/no.json | 12 +- app/javascript/mastodon/locales/oc.json | 12 +- app/javascript/mastodon/locales/pa.json | 12 +- app/javascript/mastodon/locales/pl.json | 26 ++- app/javascript/mastodon/locales/pt-BR.json | 12 +- app/javascript/mastodon/locales/pt-PT.json | 26 ++- app/javascript/mastodon/locales/ro.json | 12 +- app/javascript/mastodon/locales/ru.json | 24 ++- app/javascript/mastodon/locales/sa.json | 12 +- app/javascript/mastodon/locales/sc.json | 12 +- app/javascript/mastodon/locales/si.json | 12 +- app/javascript/mastodon/locales/sk.json | 12 +- app/javascript/mastodon/locales/sl.json | 26 ++- app/javascript/mastodon/locales/sq.json | 12 +- app/javascript/mastodon/locales/sr-Latn.json | 12 +- app/javascript/mastodon/locales/sr.json | 12 +- app/javascript/mastodon/locales/sv.json | 12 +- app/javascript/mastodon/locales/szl.json | 12 +- app/javascript/mastodon/locales/ta.json | 12 +- app/javascript/mastodon/locales/tai.json | 12 +- app/javascript/mastodon/locales/te.json | 12 +- app/javascript/mastodon/locales/th.json | 20 +- app/javascript/mastodon/locales/tr.json | 32 +-- app/javascript/mastodon/locales/tt.json | 12 +- app/javascript/mastodon/locales/ug.json | 12 +- app/javascript/mastodon/locales/uk.json | 26 ++- app/javascript/mastodon/locales/ur.json | 12 +- app/javascript/mastodon/locales/vi.json | 26 ++- app/javascript/mastodon/locales/zgh.json | 12 +- app/javascript/mastodon/locales/zh-CN.json | 108 +++++----- app/javascript/mastodon/locales/zh-HK.json | 12 +- app/javascript/mastodon/locales/zh-TW.json | 26 ++- config/locales/activerecord.ca.yml | 4 + config/locales/activerecord.es-AR.yml | 4 + config/locales/activerecord.gl.yml | 4 + config/locales/activerecord.is.yml | 4 + config/locales/activerecord.it.yml | 4 + config/locales/activerecord.ko.yml | 4 + config/locales/activerecord.lv.yml | 4 + config/locales/activerecord.nl.yml | 4 + config/locales/activerecord.pt-PT.yml | 4 + config/locales/activerecord.sv.yml | 4 + config/locales/activerecord.uk.yml | 4 + config/locales/activerecord.vi.yml | 8 +- config/locales/activerecord.zh-TW.yml | 4 + config/locales/ar.yml | 57 ++++++ config/locales/ca.yml | 13 ++ config/locales/cs.yml | 13 ++ config/locales/da.yml | 15 +- config/locales/de.yml | 19 +- config/locales/el.yml | 12 ++ config/locales/es-AR.yml | 13 ++ config/locales/es-MX.yml | 25 +++ config/locales/fi.yml | 73 +++++++ config/locales/fr.yml | 17 ++ config/locales/gd.yml | 107 ++++++++++ config/locales/gl.yml | 40 +++- config/locales/hu.yml | 14 ++ config/locales/is.yml | 38 ++++ config/locales/it.yml | 13 ++ config/locales/ko.yml | 40 +++- config/locales/ku.yml | 8 + config/locales/lv.yml | 13 ++ config/locales/nl.yml | 118 +++++++++-- config/locales/pl.yml | 13 ++ config/locales/pt-PT.yml | 18 ++ config/locales/ru.yml | 9 + config/locales/simple_form.ar.yml | 10 + config/locales/simple_form.cs.yml | 4 + config/locales/simple_form.da.yml | 2 +- config/locales/simple_form.de.yml | 9 + config/locales/simple_form.es.yml | 2 +- config/locales/simple_form.fi.yml | 46 +++++ config/locales/simple_form.fr.yml | 12 ++ config/locales/simple_form.gd.yml | 48 +++++ config/locales/simple_form.gl.yml | 37 ++++ config/locales/simple_form.hu.yml | 2 + config/locales/simple_form.is.yml | 37 ++++ config/locales/simple_form.ko.yml | 26 +++ config/locales/simple_form.ku.yml | 9 + config/locales/simple_form.nl.yml | 34 +++- config/locales/simple_form.pt-PT.yml | 17 ++ config/locales/simple_form.sl.yml | 8 + config/locales/simple_form.sv.yml | 2 + config/locales/simple_form.th.yml | 2 +- config/locales/simple_form.tr.yml | 37 ++++ config/locales/simple_form.vi.yml | 39 +++- config/locales/simple_form.zh-CN.yml | 45 ++++ config/locales/sl.yml | 13 ++ config/locales/sv.yml | 3 + config/locales/th.yml | 12 ++ config/locales/tr.yml | 38 ++++ config/locales/uk.yml | 13 ++ config/locales/vi.yml | 38 ++++ config/locales/zh-CN.yml | 47 +++++ config/locales/zh-TW.yml | 13 ++ 151 files changed, 2690 insertions(+), 840 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 96cd5bfe9..364fa5505 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -39,7 +39,7 @@ "account.follows.empty": "Die gebruiker volg nie tans iemand nie.", "account.follows_you": "Volg jou", "account.hide_reblogs": "Versteek hupstoot vanaf @{name}", - "account.joined": "{date} aangesluit", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Eienaarskap van die skakel was getoets op {date}", "account.locked_info": "Die rekening se privaatheidstatus is gesluit. Die eienaar hersien handmatig wie hom/haar kan volg.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Iets het verkeerd gegaan terwyl hierdie komponent besig was om te laai.", "bundle_modal_error.retry": "Probeer weer", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blocked users", "column.bookmarks": "Boekmerke", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index f85d15a56..d8113d439 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -1,8 +1,8 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.blocks": "خوادم تحت الإشراف", + "about.contact": "اتصل بـ:", + "about.domain_blocks.comment": "السبب", + "about.domain_blocks.domain": "النطاق", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", @@ -11,7 +11,7 @@ "about.domain_blocks.suspended.title": "Suspended", "about.not_available": "This information has not been made available on this server.", "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.rules": "قواعد الخادم", "account.account_note_header": "مُلاحظة", "account.add_or_remove_from_list": "الإضافة أو الإزالة من القائمة", "account.badges.bot": "روبوت", @@ -39,7 +39,7 @@ "account.follows.empty": "لا يُتابع هذا المُستخدمُ أيَّ أحدٍ حتى الآن.", "account.follows_you": "يُتابِعُك", "account.hide_reblogs": "إخفاء مشاركات @{name}", - "account.joined": "انضم في {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "تمَّ التَّحقق مِن مِلْكيّة هذا الرابط بتاريخ {date}", "account.locked_info": "تمَّ تعيين حالة خصوصية هذا الحساب إلى مُقفَل. يُراجع المالك يدويًا من يمكنه متابعته.", @@ -81,9 +81,9 @@ "boost_modal.combo": "يُمكنك الضّغط على {combo} لتخطي هذا في المرة المُقبلة", "bundle_column_error.copy_stacktrace": "Copy error report", "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.error.title": "أوه لا!", "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.network.title": "خطأ في الشبكة", "bundle_column_error.retry": "إعادة المُحاولة", "bundle_column_error.return": "Go back home", "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", @@ -91,7 +91,12 @@ "bundle_modal_error.close": "إغلاق", "bundle_modal_error.message": "لقد حدث خطأ ما أثناء تحميل هذا العنصر.", "bundle_modal_error.retry": "إعادة المُحاولة", - "column.about": "About", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", + "column.about": "عن", "column.blocks": "المُستَخدِمون المَحظورون", "column.bookmarks": "الفواصل المرجعية", "column.community": "الخيط الزمني المحلي", @@ -169,8 +174,8 @@ "conversation.mark_as_read": "اعتبرها كمقروءة", "conversation.open": "اعرض المحادثة", "conversation.with": "بـ {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "تم نسخه", + "copypaste.copy": "انسخ", "directory.federated": "مِن الفديفرس المعروف", "directory.local": "مِن {domain} فقط", "directory.new_arrivals": "الوافدون الجُدد", @@ -242,7 +247,7 @@ "filter_modal.added.title": "Filter added!", "filter_modal.select_filter.context_mismatch": "does not apply to this context", "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.prompt_new": "فئة جديدة: {name}", "filter_modal.select_filter.search": "Search or create", "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", "filter_modal.select_filter.title": "Filter this post", @@ -254,14 +259,14 @@ "follow_request.reject": "رفض", "follow_requests.unlocked_explanation": "على الرغم من أن حسابك غير مقفل، فإن موظفين الـ{domain} ظنوا أنك قد ترغب في مراجعة طلبات المتابعة من هذه الحسابات يدوياً.", "generic.saved": "تم الحفظ", - "getting_started.directory": "Directory", + "getting_started.directory": "الدليل", "getting_started.documentation": "الدليل", "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "استعدّ للبدء", "getting_started.invite": "دعوة أشخاص", - "getting_started.privacy_policy": "Privacy Policy", + "getting_started.privacy_policy": "سياسة الخصوصية", "getting_started.security": "الأمان", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "عن ماستدون", "hashtag.column_header.tag_mode.all": "و {additional}", "hashtag.column_header.tag_mode.any": "أو {additional}", "hashtag.column_header.tag_mode.none": "بدون {additional}", @@ -271,8 +276,8 @@ "hashtag.column_settings.tag_mode.any": "أي كان مِن هذه", "hashtag.column_settings.tag_mode.none": "لا شيء مِن هذه", "hashtag.column_settings.tag_toggle": "إدراج الوسوم الإضافية لهذا العمود", - "hashtag.follow": "Follow hashtag", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.follow": "اتبع وسم الهاشج", + "hashtag.unfollow": "ألغِ متابعة الوسم", "home.column_settings.basic": "الأساسية", "home.column_settings.show_reblogs": "اعرض الترقيات", "home.column_settings.show_replies": "اعرض الردود", @@ -283,11 +288,11 @@ "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", + "interaction_modal.on_this_server": "على هذا الخادم", "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.follow": "اتبع {name}", "interaction_modal.title.reblog": "Boost {name}'s post", "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# يوم} other {# أيام}}", @@ -355,8 +360,8 @@ "mute_modal.duration": "المدة", "mute_modal.hide_notifications": "هل تود إخفاء الإخطارات القادمة من هذا المستخدم ؟", "mute_modal.indefinite": "إلى أجل غير مسمى", - "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", + "navigation_bar.about": "عن", + "navigation_bar.apps": "احصل على التطبيق", "navigation_bar.blocks": "الحسابات المحجوبة", "navigation_bar.bookmarks": "الفواصل المرجعية", "navigation_bar.community_timeline": "الخيط المحلي", @@ -370,7 +375,7 @@ "navigation_bar.filters": "الكلمات المكتومة", "navigation_bar.follow_requests": "طلبات المتابعة", "navigation_bar.follows_and_followers": "المتابِعين والمتابَعون", - "navigation_bar.info": "About", + "navigation_bar.info": "عن", "navigation_bar.keyboard_shortcuts": "اختصارات لوحة المفاتيح", "navigation_bar.lists": "القوائم", "navigation_bar.logout": "خروج", @@ -379,6 +384,7 @@ "navigation_bar.pins": "المنشورات المُثَبَّتَة", "navigation_bar.preferences": "التفضيلات", "navigation_bar.public_timeline": "الخيط العام الموحد", + "navigation_bar.search": "Search", "navigation_bar.security": "الأمان", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -449,7 +455,7 @@ "privacy.unlisted.long": "مرئي للجميع، ولكن مِن دون ميزات الاكتشاف", "privacy.unlisted.short": "غير مدرج", "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.title": "سياسة الخصوصية", "refresh": "أنعِش", "regeneration_indicator.label": "جارٍ التحميل…", "regeneration_indicator.sublabel": "جارٍ تجهيز تغذية صفحتك الرئيسية!", @@ -523,13 +529,13 @@ "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, zero {} one {نتيجة} two {نتيجتين} few {نتائج} many {نتائج} other {نتائج}}", "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", + "server_banner.active_users": "مستخدم نشط", + "server_banner.administered_by": "يُديره:", "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", - "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", + "server_banner.learn_more": "تعلم المزيد", + "server_banner.server_stats": "إحصائيات الخادم:", + "sign_in_banner.create_account": "أنشئ حسابًا", + "sign_in_banner.sign_in": "لِج", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "افتح الواجهة الإدارية لـ @{name}", "status.admin_status": "افتح هذا المنشور على واجهة الإشراف", @@ -567,6 +573,7 @@ "status.reblogs.empty": "لم يقم أي أحد بمشاركة هذا المنشور بعد. عندما يقوم أحدهم بذلك سوف يظهر هنا.", "status.redraft": "إزالة و إعادة الصياغة", "status.remove_bookmark": "احذفه مِن الفواصل المرجعية", + "status.replied_to": "Replied to {name}", "status.reply": "ردّ", "status.replyAll": "رُد على الخيط", "status.report": "ابلِغ عن @{name}", @@ -577,10 +584,9 @@ "status.show_less_all": "طي الكل", "status.show_more": "أظهر المزيد", "status.show_more_all": "توسيع الكل", - "status.show_original": "Show original", - "status.show_thread": "الكشف عن المحادثة", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.show_original": "إظهار الأصل", + "status.translate": "ترجم", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "غير متوفر", "status.unmute_conversation": "فك الكتم عن المحادثة", "status.unpin": "فك التدبيس من الصفحة التعريفية", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 94eaac85e..60d2008b5 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -39,7 +39,7 @@ "account.follows.empty": "Esti usuariu entá nun sigue a naide.", "account.follows_you": "Síguete", "account.hide_reblogs": "Anubrir les comparticiones de @{name}", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "La propiedá d'esti enllaz foi comprobada'l {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Asocedió daqué malo mentanto se cargaba esti componente.", "bundle_modal_error.retry": "Try again", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Usuarios bloquiaos", "column.bookmarks": "Marcadores", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Barritos fixaos", "navigation_bar.preferences": "Preferencies", "navigation_bar.public_timeline": "Llinia temporal federada", + "navigation_bar.search": "Search", "navigation_bar.security": "Seguranza", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Naide nun compartió esti barritu entá. Cuando daquién lo faiga, va amosase equí.", "status.redraft": "Desaniciar y reeditar", "status.remove_bookmark": "Desaniciar de Marcadores", + "status.replied_to": "Replied to {name}", "status.reply": "Responder", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Amosar más", "status.show_more_all": "Amosar más en too", "status.show_original": "Show original", - "status.show_thread": "Amosar el filu", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Non disponible", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Desfixar del perfil", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 8f1b4c770..aa67edfd2 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -39,7 +39,7 @@ "account.follows.empty": "Този потребител все още не следва никого.", "account.follows_you": "Твой последовател", "account.hide_reblogs": "Скриване на споделяния от @{name}", - "account.joined": "Присъединил се на {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Собствеността върху тази връзка е проверена на {date}", "account.locked_info": "Този акаунт е поверително заключен. Собственикът преглежда ръчно кой може да го следва.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Затваряне", "bundle_modal_error.message": "Нещо се обърка при зареждането на този компонент.", "bundle_modal_error.retry": "Опитайте отново", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Блокирани потребители", "column.bookmarks": "Отметки", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Закачени публикации", "navigation_bar.preferences": "Предпочитания", "navigation_bar.public_timeline": "Публичен канал", + "navigation_bar.search": "Search", "navigation_bar.security": "Сигурност", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} докладва {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Все още никой не е споделил тази публикация. Когато някой го направи, ще се покаже тук.", "status.redraft": "Изтриване и преработване", "status.remove_bookmark": "Премахване на отметка", + "status.replied_to": "Replied to {name}", "status.reply": "Отговор", "status.replyAll": "Отговор на тема", "status.report": "Докладване на @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Покажи повече", "status.show_more_all": "Покажи повече за всички", "status.show_original": "Show original", - "status.show_thread": "Показване на тема", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Не е налично", "status.unmute_conversation": "Раззаглушаване на разговор", "status.unpin": "Разкачане от профил", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index f0852da21..c793cac6f 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -39,7 +39,7 @@ "account.follows.empty": "এই সদস্য কাওকে এখনো অনুসরণ করেন না.", "account.follows_you": "তোমাকে অনুসরণ করে", "account.hide_reblogs": "@{name}'র সমর্থনগুলি লুকিয়ে ফেলুন", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "এই লিংকের মালিকানা চেক করা হয়েছে {date} তারিখে", "account.locked_info": "এই নিবন্ধনের গোপনীয়তার ক্ষেত্র তালা দেওয়া আছে। নিবন্ধনকারী অনুসরণ করার অনুমতি যাদেরকে দেবেন, শুধু তারাই অনুসরণ করতে পারবেন।", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "বন্ধ করুন", "bundle_modal_error.message": "এই অংশটি দেখাতে যেয়ে কোনো সমস্যা হয়েছে।.", "bundle_modal_error.retry": "আবার চেষ্টা করুন", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "যাদের ব্লক করা হয়েছে", "column.bookmarks": "বুকমার্ক", @@ -379,6 +384,7 @@ "navigation_bar.pins": "পিন দেওয়া টুট", "navigation_bar.preferences": "পছন্দসমূহ", "navigation_bar.public_timeline": "যুক্তবিশ্বের সময়রেখা", + "navigation_bar.search": "Search", "navigation_bar.security": "নিরাপত্তা", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "এখনো কেও এটাতে সমর্থন দেয়নি। যখন কেও দেয়, সেটা তখন এখানে দেখা যাবে।", "status.redraft": "মুছে আবার নতুন করে লিখতে", "status.remove_bookmark": "বুকমার্ক সরান", + "status.replied_to": "Replied to {name}", "status.reply": "মতামত জানাতে", "status.replyAll": "লেখাযুক্ত সবার কাছে মতামত জানাতে", "status.report": "@{name} কে রিপোর্ট করতে", @@ -578,9 +585,8 @@ "status.show_more": "আরো দেখাতে", "status.show_more_all": "সবগুলোতে আরো দেখতে", "status.show_original": "Show original", - "status.show_thread": "আলোচনা দেখতে", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "পাওয়া যাচ্ছে না", "status.unmute_conversation": "আলোচনার প্রজ্ঞাপন চালু করতে", "status.unpin": "নিজের পাতা থেকে পিন করে রাখাটির পিন খুলতে", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index 9ed8c1236..237f44329 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -1,70 +1,70 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.blocks": "Servijerioù habaskaet", + "about.contact": "Darempred :", + "about.domain_blocks.comment": "Abeg", + "about.domain_blocks.domain": "Domani", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.severity": "Strizhder", + "about.domain_blocks.silenced.explanation": "Ne vo ket gwelet profiloù eus ar servijer-mañ ganeoc'h peurliesañ, nemet ma vefec'h o klask war o lec'h pe choazfec'h o heuliañ.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", "about.domain_blocks.suspended.title": "Suspended", "about.not_available": "This information has not been made available on this server.", "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.rules": "Reolennoù ar servijer", "account.account_note_header": "Notenn", "account.add_or_remove_from_list": "Ouzhpenn pe dilemel eus al listennadoù", "account.badges.bot": "Robot", "account.badges.group": "Strollad", - "account.block": "Berzañ @{name}", - "account.block_domain": "Berzañ pep tra eus {domain}", + "account.block": "Stankañ @{name}", + "account.block_domain": "Stankañ an domani {domain}", "account.blocked": "Stanket", - "account.browse_more_on_origin_server": "Furchal muioc'h war ar profil kentañ", + "account.browse_more_on_origin_server": "Furchal pelloc'h war ar profil orin", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "Kas ur gemennadenn prevez da @{name}", - "account.disable_notifications": "Paouez d'am c'hemenn pa vez toudet gant @{name}", - "account.domain_blocked": "Domani berzet", - "account.edit_profile": "Aozañ ar profil", - "account.enable_notifications": "Ma c'hemenn pa vez toudet gant @{name}", + "account.direct": "Kas ur c'hemennad eeun da @{name}", + "account.disable_notifications": "Paouez d'am c'hemenn pa vez embannet traoù gant @{name}", + "account.domain_blocked": "Domani stanket", + "account.edit_profile": "Kemmañ ar profil", + "account.enable_notifications": "Ma c'hemenn pa vez embannet traoù gant @{name}", "account.endorse": "Lakaat war-wel war ar profil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.last_status_at": "Kemennad diwezhañ : {date}", + "account.featured_tags.last_status_never": "Kemennad ebet", "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Heuliañ", "account.followers": "Heulier·ezed·ien", - "account.followers.empty": "Den na heul an implijer-mañ c'hoazh.", - "account.followers_counter": "{count, plural, other{{counter} Heulier}}", - "account.following": "O heuliañ", - "account.following_counter": "{count, plural, other {{counter} Heuliañ}}", + "account.followers.empty": "Den na heul an implijer·ez-mañ c'hoazh.", + "account.followers_counter": "{count, plural, other{{counter} Heulier·ez}}", + "account.following": "Koumanantoù", + "account.following_counter": "{count, plural, one{{counter} C'houmanant} two{{counter} Goumanant} other {{counter} a Goumanant}}", "account.follows.empty": "An implijer·ez-mañ na heul den ebet.", - "account.follows_you": "Ho heul", - "account.hide_reblogs": "Kuzh toudoù rannet gant @{name}", - "account.joined": "Amañ abaoe {date}", + "account.follows_you": "Ho heuilh", + "account.hide_reblogs": "Kuzh skignadennoù gant @{name}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Gwiriet eo bet perc'hennidigezh al liamm d'an deiziad-mañ : {date}", - "account.locked_info": "Prennet eo ar gont-mañ. Dibab a ra ar perc'henn ar re a c'hall heuliañ anezhi pe anezhañ.", + "account.locked_info": "Prennet eo ar gont-mañ. Gant ar perc'henn e vez dibabet piv a c'hall heuliañ anezhi pe anezhañ.", "account.media": "Media", "account.mention": "Menegiñ @{name}", "account.moved_to": "Dilojet en·he deus {name} da :", "account.mute": "Kuzhat @{name}", - "account.mute_notifications": "Kuzh kemennoù eus @{name}", + "account.mute_notifications": "Kuzh kemennoù a-berzh @{name}", "account.muted": "Kuzhet", - "account.posts": "a doudoù", - "account.posts_with_replies": "Toudoù ha respontoù", + "account.posts": "Kemennadoù", + "account.posts_with_replies": "Kemennadoù ha respontoù", "account.report": "Disklêriañ @{name}", "account.requested": "O c'hortoz an asant. Klikit evit nullañ ar goulenn heuliañ", "account.share": "Skignañ profil @{name}", "account.show_reblogs": "Diskouez skignadennoù @{name}", - "account.statuses_counter": "{count, plural, one {{counter} Toud} other {{counter} Toud}}", + "account.statuses_counter": "{count, plural, one {{counter} C'hemennad} two {{counter} Gemennad} other {{counter} a Gemennad}}", "account.unblock": "Diverzañ @{name}", "account.unblock_domain": "Diverzañ an domani {domain}", "account.unblock_short": "Distankañ", "account.unendorse": "Paouez da lakaat war-wel war ar profil", "account.unfollow": "Diheuliañ", "account.unmute": "Diguzhat @{name}", - "account.unmute_notifications": "Diguzhat kemennoù a @{name}", - "account.unmute_short": "Unmute", - "account_note.placeholder": "Klikit evit ouzhpenniñ un notenn", + "account.unmute_notifications": "Diguzhat kemennoù a-berzh @{name}", + "account.unmute_short": "Diguzhat", + "account_note.placeholder": "Klikit evit ouzhpennañ un notenn", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Keidenn", @@ -73,7 +73,7 @@ "alert.rate_limited.message": "Klaskit en-dro a-benn {retry_time, time, medium}.", "alert.rate_limited.title": "Feur bevennet", "alert.unexpected.message": "Ur fazi dic'hortozet zo degouezhet.", - "alert.unexpected.title": "Hopala!", + "alert.unexpected.title": "Hopala !", "announcement.announcement": "Kemenn", "attachments_list.unprocessed": "(ket meret)", "audio.hide": "Hide audio", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Serriñ", "bundle_modal_error.message": "Degouezhet ez eus bet ur fazi en ur gargañ an elfenn-mañ.", "bundle_modal_error.retry": "Klask en-dro", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Implijer·ezed·ien berzet", "column.bookmarks": "Sinedoù", @@ -104,7 +109,7 @@ "column.lists": "Listennoù", "column.mutes": "Implijer·ion·ezed kuzhet", "column.notifications": "Kemennoù", - "column.pins": "Toudoù spilhennet", + "column.pins": "Kemennadoù spilhennet", "column.public": "Red-amzer kevreet", "column_back_button.label": "Distro", "column_header.hide_settings": "Kuzhat an arventennoù", @@ -120,11 +125,11 @@ "compose.language.change": "Cheñch yezh", "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Gouzout hiroc'h", - "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": "Ne vo ket lakaet an toud-mañ er rolloù gerioù-klik dre mard eo anlistennet. N'eus nemet an toudoù foran a c'hall bezañ klasket dre c'her-klik.", - "compose_form.lock_disclaimer": "N'eo ket {locked} ho kont. An holl a c'hal heuliañ ac'hanoc'h evit gwelout ho toudoù prevez.", + "compose_form.encryption_warning": "Kemennadoù war Mastodon na vezont ket sifret penn-da-benn. Na rannit ket titouroù kizidik dre Mastodon.", + "compose_form.hashtag_warning": "Ne vo ket listennet ar c'hemennad-mañ dindan gerioù-klik ebet dre m'eo anlistennet. N'eus nemet ar c'hemennadoù foran a c'hall bezañ klasket dre c'her-klik.", + "compose_form.lock_disclaimer": "N'eo ket {locked} ho kont. An holl a c'hal ho heuliañ evit gwelet ho kemennadoù prevez.", "compose_form.lock_disclaimer.lock": "prennet", - "compose_form.placeholder": "Petra eh oc'h é soñjal a-barzh ?", + "compose_form.placeholder": "Petra emaoc'h o soñjal e-barzh ?", "compose_form.poll.add_option": "Ouzhpenniñ un dibab", "compose_form.poll.duration": "Pad ar sontadeg", "compose_form.poll.option_placeholder": "Dibab {number}", @@ -147,7 +152,7 @@ "confirmations.cancel_follow_request.confirm": "Withdraw request", "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Dilemel", - "confirmations.delete.message": "Ha sur oc'h e fell deoc'h dilemel an toud-mañ ?", + "confirmations.delete.message": "Ha sur oc'h e fell deoc'h dilemel ar c'hemennad-mañ ?", "confirmations.delete_list.confirm": "Dilemel", "confirmations.delete_list.message": "Ha sur eo hoc'h eus c'hoant da zilemel ar roll-mañ da vat ?", "confirmations.discard_edit_media.confirm": "Nac'hañ", @@ -157,10 +162,10 @@ "confirmations.logout.confirm": "Digevreañ", "confirmations.logout.message": "Ha sur oc'h e fell deoc'h digevreañ ?", "confirmations.mute.confirm": "Kuzhat", - "confirmations.mute.explanation": "Kuzhat a raio an toudoù skrivet gantañ·i hag ar re a veneg anezhañ·i, met aotren a raio anezhañ·i da welet ho todoù ha a heuliañ ac'hanoc'h.", + "confirmations.mute.explanation": "Kement-se a guzho ar c'hemennadoù skrivet gantañ·i hag ar re a veneg anezhañ·i, met ne viro ket outañ·i a welet ho kemennadoù nag a heuliañ ac'hanoc'h.", "confirmations.mute.message": "Ha sur oc'h e fell deoc'h kuzhaat {name} ?", "confirmations.redraft.confirm": "Diverkañ ha skrivañ en-dro", - "confirmations.redraft.message": "Ha sur oc'h e fell deoc'h dilemel ar statud-mañ hag adlakaat anezhañ er bouilhoñs? Kollet e vo ar merkoù muiañ-karet hag ar skignadennoù hag emzivat e vo ar respontoù d'an toud orin.", + "confirmations.redraft.message": "Ha sur oc'h e fell deoc'h dilemel ar c'hemennad-mañ hag e adskrivañ ? Kollet e vo ar merkoù « muiañ-karet » hag ar skignadennoù, hag emzivat e vo ar respontoù d'ar c'hemennad orin.", "confirmations.reply.confirm": "Respont", "confirmations.reply.message": "Respont bremañ a zilamo ar gemennadenn emaoc'h o skrivañ. Sur e oc'h e fell deoc'h kenderc'hel ganti?", "confirmations.unfollow.confirm": "Diheuliañ", @@ -171,18 +176,18 @@ "conversation.with": "Gant {names}", "copypaste.copied": "Copied", "copypaste.copy": "Copy", - "directory.federated": "Eus ar c'hevrebed anavezet", + "directory.federated": "Eus ar fedibed anavezet", "directory.local": "Eus {domain} hepken", "directory.new_arrivals": "Degouezhet a-nevez", "directory.recently_active": "Oberiant nevez zo", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.community_timeline": "Setu kemennadoù foran nevesañ an dud a zo herberc’hiet o c'hontoù gant {domain}.", "dismissable_banner.dismiss": "Dismiss", "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_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", - "embed.instructions": "Enkorfit ar statud war ho lec'hienn en ur eilañ ar c'hod dindan.", - "embed.preview": "Setu penaos e vo diskouezet:", + "embed.instructions": "Enframmit ar c'hemennad-mañ en ho lec'hienn en ur eilañ ar c'hod amañ-dindan.", + "embed.preview": "Setu penaos e teuio war wel :", "emoji_button.activity": "Obererezh", "emoji_button.clear": "Diverkañ", "emoji_button.custom": "Kempennet", @@ -199,22 +204,22 @@ "emoji_button.symbols": "Arouezioù", "emoji_button.travel": "Lec'hioù ha Beajoù", "empty_column.account_suspended": "Kont ehanet", - "empty_column.account_timeline": "Toud ebet amañ!", + "empty_column.account_timeline": "Kemennad ebet amañ !", "empty_column.account_unavailable": "Profil dihegerz", "empty_column.blocks": "N'eus ket bet berzet implijer·ez ganeoc'h c'hoazh.", - "empty_column.bookmarked_statuses": "N'ho peus toud ebet enrollet en ho sinedoù c'hoazh. Pa vo ouzhpennet unan ganeoc'h e teuio war wel amañ.", + "empty_column.bookmarked_statuses": "N'ho peus kemennad ebet enrollet en ho sinedoù c'hoazh. Pa vo ouzhpennet unan e teuio war wel amañ.", "empty_column.community": "Goulo eo ar red-amzer lec'hel. Skrivit'ta un dra evit lakaat tan dezhi !", "empty_column.direct": "N'ho peus kemennad prevez ebet c'hoazh. Pa vo resevet pe kaset unan ganeoc'h e teuio war wel amañ.", "empty_column.domain_blocks": "N'eus domani kuzh ebet c'hoazh.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", - "empty_column.favourited_statuses": "N'ho peus toud muiañ-karet ebet c'hoazh. Pa vo lakaet unan ganeoc'h e vo diskouezet amañ.", - "empty_column.favourites": "Den ebet n'eus lakaet an toud-mañ en e reoù muiañ-karet. Pa vo graet gant unan bennak e vo diskouezet amañ.", + "empty_column.favourited_statuses": "N'ho peus kemennad muiañ-karet ebet c'hoazh. Pa vo ouzhpennet unan e teuio war wel amañ.", + "empty_column.favourites": "Den ebet n'eus lakaet ar c'hemennad-mañ en e reoù muiañ-karet c'hoazh. Pa vo graet gant unan bennak e teuio war wel amañ.", "empty_column.follow_recommendations": "Seblant a ra ne vez ket genelet damvenegoù evidoc'h. Gallout a rit implijout un enklask evit klask tud hag a vefe anavezet ganeoc'h pe ergerzhout gerioù-klik diouzh ar c'hiz.", "empty_column.follow_requests": "N'ho peus goulenn heuliañ ebet c'hoazh. Pa resevot reoù e vo diskouezet amañ.", "empty_column.hashtag": "N'eus netra er ger-klik-mañ c'hoazh.", "empty_column.home": "Goullo eo ho red-amzer degemer! Kit da weladenniñ {public} pe implijit ar c'hlask evit kregiñ ganti ha kejañ gant implijer·ien·ezed all.", "empty_column.home.suggestions": "Gwellout damvenegoù", - "empty_column.list": "Goullo eo ar roll-mañ evit ar poent. Pa vo toudet gant e izili e vo diskouezet amañ.", + "empty_column.list": "Goullo eo ar roll-mañ evit c'hoazh. Pa vo embannet kemennadoù nevez gant e izili e teuint war wel amañ.", "empty_column.lists": "N'ho peus roll ebet c'hoazh. Pa vo krouet unan ganeoc'h e vo diskouezet amañ.", "empty_column.mutes": "N'ho peus kuzhet implijer ebet c'hoazh.", "empty_column.notifications": "N'ho peus kemenn ebet c'hoazh. Grit gant implijer·ezed·ien all evit loc'hañ ar gomz.", @@ -229,7 +234,7 @@ "explore.suggested_follows": "Evidoc'h", "explore.title": "Ergerzhit", "explore.trending_links": "Keleier", - "explore.trending_statuses": "Posts", + "explore.trending_statuses": "Kemennadoù", "explore.trending_tags": "Gerioù-klik", "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", "filter_modal.added.context_mismatch_title": "Context mismatch!", @@ -238,18 +243,18 @@ "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", "filter_modal.added.review_and_configure_title": "Filter settings", "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.short_explanation": "Ar c'hemennad-mañ zo bet ouzhpennet d'ar rummad sil-mañ : {title}.", "filter_modal.added.title": "Filter added!", "filter_modal.select_filter.context_mismatch": "does not apply to this context", "filter_modal.select_filter.expired": "expired", "filter_modal.select_filter.prompt_new": "New category: {name}", "filter_modal.select_filter.search": "Search or create", "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.select_filter.title": "Silañ ar c'hemennad-mañ", + "filter_modal.title.status": "Silañ ur c'hemennad", "follow_recommendations.done": "Graet", - "follow_recommendations.heading": "Heuliit tud e plijfe deoc'h lenn toudoù! Setu un tamm alioù.", - "follow_recommendations.lead": "Toudoù eus tud heuliet ganeoc'h a zeuio war wel en un urzh amzeroniezhel war ho red degemer. N'ho peus ket aon ober fazioù, gallout a rit paouez heuliañ tud ken aes n'eus forzh pegoulz!", + "follow_recommendations.heading": "Heuilhit tud a blijfe deoc'h lenn o c'hemennadoù ! Setu un nebeud erbedadennoù.", + "follow_recommendations.lead": "Kemennadoù gant tud a vez heuliet ganeoc'h a zeuio war wel en urzh kronologel war ho red degemer. Arabat kaout aon ober fazioù, diheuliañ tud a c'hellit ober aes ha forzh pegoulz !", "follow_request.authorize": "Aotren", "follow_request.reject": "Nac'hañ", "follow_requests.unlocked_explanation": "Daoust ma n'eo ket ho kont prennet, skipailh {domain} a soñj e fellfe deoc'h gwiriekaat pedadennoù heuliañ deus ar c'hontoù-se diwar-zorn.", @@ -278,31 +283,31 @@ "home.column_settings.show_replies": "Diskouez ar respontoù", "home.hide_announcements": "Kuzhat ar c'hemennoù", "home.show_announcements": "Diskouez ar c'hemennoù", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.description.favourite": "Gant ur gont Mastodon e c'hellit ouzhpennañ ar c'hemennad-mañ d'ho re vuiañ-karet evit lakaat an den en deus eñ skrivet da c'houzout e plij deoc'h hag e enrollañ evit diwezhatoc'h.", + "interaction_modal.description.follow": "Gant ur gont Mastodon e c'hellit heuliañ {name} evit resev h·e gemennadoù war ho red degemer.", + "interaction_modal.description.reblog": "Gant ur gont Mastodon e c'hellit skignañ ar c'hemennad-mañ evit rannañ anezhañ gant ho heulierien·ezed.", + "interaction_modal.description.reply": "Gant ur gont Mastodon e c'hellit respont d'ar c'hemennad-mañ.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.favourite": "Ouzhpennañ kemennad {name} d'ar re vuiañ-karet", "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.title.reblog": "Skignañ kemennad {name}", + "interaction_modal.title.reply": "Respont da gemennad {name}", "intervals.full.days": "{number, plural, one {# devezh} other{# a zevezhioù}}", "intervals.full.hours": "{number, plural, one {# eurvezh} other{# eurvezh}}", "intervals.full.minutes": "{number, plural, one {# munut} other{# a vunutoù}}", "keyboard_shortcuts.back": "Distreiñ", "keyboard_shortcuts.blocked": "Digeriñ roll an implijer.ezed.rien stanket", - "keyboard_shortcuts.boost": "da skignañ", + "keyboard_shortcuts.boost": "Skignañ ar c'hemennad", "keyboard_shortcuts.column": "Fokus ar bann", "keyboard_shortcuts.compose": "Fokus an takad testenn", "keyboard_shortcuts.description": "Deskrivadur", "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "Diskennañ er roll", - "keyboard_shortcuts.enter": "evit digeriñ un toud", - "keyboard_shortcuts.favourite": "Lakaat an toud evel muiañ-karet", + "keyboard_shortcuts.enter": "Digeriñ ar c'hemennad", + "keyboard_shortcuts.favourite": "Ouzhpennañ ar c'hemennad d'ar re vuiañ-karet", "keyboard_shortcuts.favourites": "Digeriñ roll an toudoù muiañ-karet", "keyboard_shortcuts.federated": "Digeriñ ar red-amzer kevreet", "keyboard_shortcuts.heading": "Berradennoù klavier", @@ -315,16 +320,16 @@ "keyboard_shortcuts.my_profile": "Digeriñ ho profil", "keyboard_shortcuts.notifications": "Digeriñ bann kemennoù", "keyboard_shortcuts.open_media": "Digeriñ ar media", - "keyboard_shortcuts.pinned": "Digeriñ roll an toudoù spilhennet", + "keyboard_shortcuts.pinned": "Digeriñ roll ar c'hemennadoù spilhennet", "keyboard_shortcuts.profile": "Digeriñ profil an aozer.ez", - "keyboard_shortcuts.reply": "da respont", + "keyboard_shortcuts.reply": "Respont d'ar c'hemennad", "keyboard_shortcuts.requests": "Digeriñ roll goulennoù heuliañ", "keyboard_shortcuts.search": "Fokus barenn klask", "keyboard_shortcuts.spoilers": "da guzhat/ziguzhat tachenn CW", "keyboard_shortcuts.start": "Digeriñ bann \"Kregiñ\"", "keyboard_shortcuts.toggle_hidden": "da guzhat/ziguzhat an desten a-dreñv CW", "keyboard_shortcuts.toggle_sensitivity": "da guzhat/ziguzhat ur media", - "keyboard_shortcuts.toot": "da gregiñ gant un toud nevez-flamm", + "keyboard_shortcuts.toot": "Kregiñ gant ur c'hemennad nevez", "keyboard_shortcuts.unfocus": "Difokus an dachenn testenn/klask", "keyboard_shortcuts.up": "Pignat er roll", "lightbox.close": "Serriñ", @@ -360,7 +365,7 @@ "navigation_bar.blocks": "Implijer·ezed·ien berzet", "navigation_bar.bookmarks": "Sinedoù", "navigation_bar.community_timeline": "Red-amzer lec'hel", - "navigation_bar.compose": "Skrivañ un toud nevez", + "navigation_bar.compose": "Skrivañ ur c'hemennad nevez", "navigation_bar.direct": "Kemennadoù prevez", "navigation_bar.discover": "Dizoleiñ", "navigation_bar.domain_blocks": "Domanioù kuzhet", @@ -376,22 +381,23 @@ "navigation_bar.logout": "Digennaskañ", "navigation_bar.mutes": "Implijer·ion·ezed kuzhet", "navigation_bar.personal": "Personel", - "navigation_bar.pins": "Toudoù spilhennet", + "navigation_bar.pins": "Kemennadoù spilhennet", "navigation_bar.preferences": "Gwellvezioù", "navigation_bar.public_timeline": "Red-amzer kevreet", + "navigation_bar.search": "Search", "navigation_bar.security": "Diogelroez", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "Disklêriet eo bet {target} gant {name}", "notification.admin.sign_up": "{name} en·he deus lakaet e·hec'h anv", - "notification.favourite": "{name} en/he deus lakaet ho toud en e/he muiañ-karet", + "notification.favourite": "{name} en·he deus ouzhpennet ho kemennad d'h·e re vuiañ-karet", "notification.follow": "heuliañ a ra {name} ac'hanoc'h", "notification.follow_request": "{name} en/he deus goulennet da heuliañ ac'hanoc'h", "notification.mention": "{name} en/he deus meneget ac'hanoc'h", "notification.own_poll": "Echu eo ho sontadeg", "notification.poll": "Ur sontadeg ho deus mouezhet warnañ a zo echuet", - "notification.reblog": "{name} skignet ho toud", - "notification.status": "{name} en/he deus toudet", - "notification.update": "{name} edited a post", + "notification.reblog": "{name} en·he deus skignet ho kemennad", + "notification.status": "{name} en·he deus embannet", + "notification.update": "{name} en·he deus kemmet ur c'hemennad", "notifications.clear": "Skarzhañ ar c'hemennoù", "notifications.clear_confirmation": "Ha sur oc'h e fell deoc'h skarzhañ ho kemennoù penn-da-benn?", "notifications.column_settings.admin.report": "New reports:", @@ -409,7 +415,7 @@ "notifications.column_settings.reblog": "Skignadennoù:", "notifications.column_settings.show": "Diskouez er bann", "notifications.column_settings.sound": "Seniñ", - "notifications.column_settings.status": "Toudoù nevez:", + "notifications.column_settings.status": "Kemennadoù nevez :", "notifications.column_settings.unread_notifications.category": "Kemennoù n'int ket lennet", "notifications.column_settings.unread_notifications.highlight": "Usskediñ kemennoù nevez", "notifications.column_settings.update": "Edits:", @@ -439,7 +445,7 @@ "poll.votes": "{votes, plural,one {#votadenn} other {# votadenn}}", "poll_button.add_poll": "Ouzhpennañ ur sontadeg", "poll_button.remove_poll": "Dilemel ar sontadeg", - "privacy.change": "Kemmañ gwelidigezh ar statud", + "privacy.change": "Cheñch prevezded ar c'hemennad", "privacy.direct.long": "Embann evit an implijer·ezed·ien meneget hepken", "privacy.direct.short": "Direct", "privacy.private.long": "Embann evit ar re a heuilh ac'hanon hepken", @@ -466,20 +472,20 @@ "relative_time.today": "hiziv", "reply_indicator.cancel": "Nullañ", "report.block": "Stankañ", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.block_explanation": "Ne vo ket gwelet h·e gemennadoù ken. Ne welo ket ho kemennadoù ha ne c'hello ket ho heuliañ ken. Gouzout a raio eo bet stanket ganeoc'h.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", "report.category.subtitle": "Choose the best match", - "report.category.title": "Tell us what's going on with this {type}", + "report.category.title": "Lârit deomp petra c'hoarvez gant {type}", "report.category.title_account": "profil", - "report.category.title_status": "post", + "report.category.title_status": "ar c'hemennad-mañ", "report.close": "Graet", "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Treuzkas da: {target}", "report.forward_hint": "War ur servijer all emañ ar c'hont-se. Kas dezhañ un adskrid disanv eus an danevell ivez?", "report.mute": "Mute", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.mute_explanation": "Ne vo ket gwelet h·e gemennadoù ken. Gwelet ho kemennadoù ha ho heuliañ a c'hello ha ne ouezo ket eo bet kuzhet ganeoc'h.", "report.next": "Next", "report.placeholder": "Askelennoù ouzhpenn", "report.reasons.dislike": "I don't like it", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Den ebet n'eus skignet an toud-mañ c'hoazh. Pa vo graet gant unan bennak e vo diskouezet amañ.", "status.redraft": "Diverkañ ha skrivañ en-dro", "status.remove_bookmark": "Dilemel ar sined", + "status.replied_to": "Replied to {name}", "status.reply": "Respont", "status.replyAll": "Respont d'ar gaozeadenn", "status.report": "Disklêriañ @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Diskouez muioc'h", "status.show_more_all": "Diskouez miuoc'h evit an holl", "status.show_original": "Show original", - "status.show_thread": "Diskouez ar gaozeadenn", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Dihegerz", "status.unmute_conversation": "Diguzhat ar gaozeadenn", "status.unpin": "Dispilhennañ eus ar profil", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index c6575e85a..c21e2c84d 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -39,7 +39,7 @@ "account.follows.empty": "Aquest usuari encara no segueix ningú.", "account.follows_you": "Et segueix", "account.hide_reblogs": "Amaga els impulsos de @{name}", - "account.joined": "Membre des de {date}", + "account.joined_short": "Joined", "account.languages": "Canviar les llengües subscrits", "account.link_verified_on": "La propietat d'aquest enllaç es va verificar el dia {date}", "account.locked_info": "Aquest estat de privadesa del compte està definit com a bloquejat. El propietari revisa manualment qui pot seguir-lo.", @@ -79,18 +79,23 @@ "audio.hide": "Amaga l'àudio", "autosuggest_hashtag.per_week": "{count} per setmana", "boost_modal.combo": "Pots prémer {combo} per evitar-ho el pròxim cop", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.copy_stacktrace": "Copiar l'informe d'error", + "bundle_column_error.error.body": "No s'ha pogut renderitzar la pàgina sol·licitada. Podría ser degut a un error en el nostre codi o un problema de compatibilitat del navegador.", "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.network.body": "Hi ha hagut un error al intentar carregar aquesta pàgina. Això podria ser degut a un problem temporal amb la teva connexió a internet o amb aquest servidor.", + "bundle_column_error.network.title": "Error de xarxa", "bundle_column_error.retry": "Tornar-ho a provar", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Torna a Inici", + "bundle_column_error.routing.body": "No es pot trobar la pàgina sol·licitada. Estàs segur que la URL de la barra d'adreces és correcte?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Tanca", "bundle_modal_error.message": "S'ha produït un error en carregar aquest component.", "bundle_modal_error.retry": "Tornar-ho a provar", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Quant a", "column.blocks": "Usuaris bloquejats", "column.bookmarks": "Marcadors", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Publicacions fixades", "navigation_bar.preferences": "Preferències", "navigation_bar.public_timeline": "Línia de temps federada", + "navigation_bar.search": "Search", "navigation_bar.security": "Seguretat", "not_signed_in_indicator.not_signed_in": "Necessites registrar-te per a accedir aquest recurs.", "notification.admin.report": "{name} ha reportat {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Encara ningú no ha impulsat aquesta publicació. Quan algú ho faci, apareixeran aquí.", "status.redraft": "Esborra-la i reescriure-la", "status.remove_bookmark": "Suprimeix el marcador", + "status.replied_to": "Replied to {name}", "status.reply": "Respon", "status.replyAll": "Respon al fil", "status.report": "Denuncia @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Mostrar-ne més", "status.show_more_all": "Mostrar-ne més per a tot", "status.show_original": "Mostra l'original", - "status.show_thread": "Mostra el fil", "status.translate": "Tradueix", - "status.translated_from": "Traduït del: {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "No està disponible", "status.unmute_conversation": "No silenciïs la conversa", "status.unpin": "No fixis al perfil", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index d4fe8637b..06664597e 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -39,7 +39,7 @@ "account.follows.empty": "ئەم بەکارهێنەرە تا ئێستا شوێن کەس نەکەوتووە.", "account.follows_you": "شوێنکەوتووەکانت", "account.hide_reblogs": "داشاردنی بووستەکان لە @{name}", - "account.joined": "بەشداری {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "خاوەنداریەتی ئەم لینکە لە {date} چێک کراوە", "account.locked_info": "تایبەتمەندی ئەم هەژمارەیە ڕیکخراوە بۆ قوفڵدراوە. خاوەنەکە بە دەستی پێداچوونەوە دەکات کە کێ دەتوانێت شوێنیان بکەوێت.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "داخستن", "bundle_modal_error.message": "هەڵەیەک ڕوویدا لەکاتی بارکردنی ئەم پێکهاتەیە.", "bundle_modal_error.retry": "دووبارە تاقی بکەوە", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "بەکارهێنەرە بلۆککراوەکان", "column.bookmarks": "نیشانەکان", @@ -379,6 +384,7 @@ "navigation_bar.pins": "توتی چەسپاو", "navigation_bar.preferences": "پەسەندەکان", "navigation_bar.public_timeline": "نووسراوەکانی هەمووشوێنێک", + "navigation_bar.search": "Search", "navigation_bar.security": "ئاسایش", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "کەس ئەم توتەی دووبارە نەتوتاندوە ،کاتێک کەسێک وا بکات، لێرە دەرئەکەون.", "status.redraft": "سڕینەوەی و دووبارە ڕەشنووس", "status.remove_bookmark": "لابردنی نیشانه", + "status.replied_to": "Replied to {name}", "status.reply": "وەڵام", "status.replyAll": "بە نووسراوە وەڵام بدەوە", "status.report": "گوزارشت @{name}", @@ -578,9 +585,8 @@ "status.show_more": "زیاتر نیشان بدە", "status.show_more_all": "زیاتر نیشان بدە بۆ هەمووی", "status.show_original": "Show original", - "status.show_thread": "نیشاندانی گفتوگۆ", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "بەردەست نیە", "status.unmute_conversation": "گفتوگۆی بێدەنگ", "status.unpin": "لە سەرەوە لایبە", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 1794cfd95..4be800665 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -39,7 +39,7 @@ "account.follows.empty": "St'utilizatore ùn seguita nisunu.", "account.follows_you": "Vi seguita", "account.hide_reblogs": "Piattà spartere da @{name}", - "account.joined": "Quì dapoi {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "A prupietà di stu ligame hè stata verificata u {date}", "account.locked_info": "U statutu di vita privata di u contu hè chjosu. U pruprietariu esamina manualmente e dumande d'abbunamentu.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Chjudà", "bundle_modal_error.message": "C'hè statu un prublemu caricandu st'elementu.", "bundle_modal_error.retry": "Pruvà torna", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Utilizatori bluccati", "column.bookmarks": "Segnalibri", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Statuti puntarulati", "navigation_bar.preferences": "Preferenze", "navigation_bar.public_timeline": "Linea pubblica glubale", + "navigation_bar.search": "Search", "navigation_bar.security": "Sicurità", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Per avà nisunu hà spartutu u statutu. Quandu qualch'unu u sparterà, u so contu sarà mustratu quì.", "status.redraft": "Sguassà è riscrive", "status.remove_bookmark": "Toglie segnalibru", + "status.replied_to": "Replied to {name}", "status.reply": "Risponde", "status.replyAll": "Risponde à tutti", "status.report": "Palisà @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Slibrà", "status.show_more_all": "Slibrà tuttu", "status.show_original": "Show original", - "status.show_thread": "Vede u filu", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Micca dispunibule", "status.unmute_conversation": "Ùn piattà più a cunversazione", "status.unpin": "Spuntarulà da u prufile", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index c0dabc26b..5ccbf73dc 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -20,14 +20,14 @@ "account.block_domain": "Blokovat doménu {domain}", "account.blocked": "Blokován", "account.browse_more_on_origin_server": "Více na původním profilu", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Vybrat žádost o následování", "account.direct": "Poslat @{name} přímou zprávu", "account.disable_notifications": "Zrušit upozorňování na příspěvky @{name}", "account.domain_blocked": "Doména blokována", "account.edit_profile": "Upravit profil", "account.enable_notifications": "Oznamovat mi příspěvky @{name}", "account.endorse": "Zvýraznit na profilu", - "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_at": "Poslední příspěvek na {date}", "account.featured_tags.last_status_never": "Žádné příspěvky", "account.featured_tags.title": "Hlavní hashtagy {name}", "account.follow": "Sledovat", @@ -39,7 +39,7 @@ "account.follows.empty": "Tento uživatel ještě nikoho nesleduje.", "account.follows_you": "Sleduje vás", "account.hide_reblogs": "Skrýt boosty od @{name}", - "account.joined": "Založen {date}", + "account.joined_short": "Joined", "account.languages": "Změnit odebírané jazyky", "account.link_verified_on": "Vlastnictví tohoto odkazu bylo zkontrolováno {date}", "account.locked_info": "Stav soukromí tohoto účtu je nastaven na zamčeno. Jeho vlastník ručně posuzuje, kdo ho může sledovat.", @@ -79,18 +79,23 @@ "audio.hide": "Skrýt zvuk", "autosuggest_hashtag.per_week": "{count} za týden", "boost_modal.combo": "Příště můžete pro přeskočení stisknout {combo}", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Kopírovat zprávu o chybě", + "bundle_column_error.error.body": "Požadovanou stránku nelze vykreslit. Může to být způsobeno chybou v našem kódu nebo problémem s kompatibilitou prohlížeče.", + "bundle_column_error.error.title": "Ale ne!", + "bundle_column_error.network.body": "Při pokusu o načtení této stránky došlo k chybě. To může být způsobeno dočasným problémem s připojením k Internetu nebo k tomuto serveru.", + "bundle_column_error.network.title": "Chyba sítě", "bundle_column_error.retry": "Zkuste to znovu", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Zpět na domovskou stránku", + "bundle_column_error.routing.body": "Požadovaná stránka nebyla nalezena. Opravdu je adresa správná?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Zavřít", "bundle_modal_error.message": "Při načítání této komponenty se něco pokazilo.", "bundle_modal_error.retry": "Zkusit znovu", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "O aplikaci", "column.blocks": "Blokovaní uživatelé", "column.bookmarks": "Záložky", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Připnuté příspěvky", "navigation_bar.preferences": "Předvolby", "navigation_bar.public_timeline": "Federovaná časová osa", + "navigation_bar.search": "Search", "navigation_bar.security": "Zabezpečení", "not_signed_in_indicator.not_signed_in": "Pro přístup k tomuto zdroji se musíte přihlásit.", "notification.admin.report": "Uživatel {name} nahlásil {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Tento příspěvek ještě nikdo neboostnul. Pokud to někdo udělá, zobrazí se zde.", "status.redraft": "Smazat a přepsat", "status.remove_bookmark": "Odstranit ze záložek", + "status.replied_to": "Replied to {name}", "status.reply": "Odpovědět", "status.replyAll": "Odpovědět na vlákno", "status.report": "Nahlásit @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Zobrazit více", "status.show_more_all": "Zobrazit více pro všechny", "status.show_original": "Zobrazit původní", - "status.show_thread": "Zobrazit vlákno", "status.translate": "Přeložit", - "status.translated_from": "Přeloženo z {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Nedostupné", "status.unmute_conversation": "Odkrýt konverzaci", "status.unpin": "Odepnout z profilu", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index b6ef7cb04..7b5387fa1 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -39,7 +39,7 @@ "account.follows.empty": "Nid yw'r defnyddiwr hwn yn dilyn unrhyw un eto.", "account.follows_you": "Yn eich dilyn chi", "account.hide_reblogs": "Cuddio bwstiau o @{name}", - "account.joined": "Ymunodd {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Gwiriwyd perchnogaeth y ddolen yma ar {date}", "account.locked_info": "Mae'r statws preifatrwydd cyfrif hwn wedi'i osod i gloi. Mae'r perchennog yn adolygu'r sawl sy'n gallu eu dilyn.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Cau", "bundle_modal_error.message": "Aeth rhywbeth o'i le tra'n llwytho'r elfen hon.", "bundle_modal_error.retry": "Ceiswich eto", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Defnyddwyr a flociwyd", "column.bookmarks": "Tudalnodau", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Postiadau wedi eu pinio", "navigation_bar.preferences": "Dewisiadau", "navigation_bar.public_timeline": "Ffrwd y ffederasiwn", + "navigation_bar.search": "Search", "navigation_bar.security": "Diogelwch", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Does neb wedi hybio'r post yma eto. Pan y bydd rhywun yn gwneud, byddent yn ymddangos yma.", "status.redraft": "Dileu & ailddrafftio", "status.remove_bookmark": "Tynnu'r tudalnod", + "status.replied_to": "Replied to {name}", "status.reply": "Ateb", "status.replyAll": "Ateb i edefyn", "status.report": "Adrodd @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Dangos mwy", "status.show_more_all": "Dangos mwy i bawb", "status.show_original": "Show original", - "status.show_thread": "Dangos edefyn", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Dim ar gael", "status.unmute_conversation": "Dad-dawelu sgwrs", "status.unpin": "Dadbinio o'r proffil", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 25bc52289..b62d99297 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -39,7 +39,7 @@ "account.follows.empty": "Denne bruger følger ikke nogen endnu.", "account.follows_you": "Følger dig", "account.hide_reblogs": "Skjul boosts fra @{name}", - "account.joined": "Tilmeldt {date}", + "account.joined_short": "Joined", "account.languages": "Skift abonnementssprog", "account.link_verified_on": "Ejerskab af dette link blev tjekket {date}", "account.locked_info": "Denne kontos fortrolighedsstatus er sat til låst. Ejeren bedømmer manuelt, hvem der kan følge vedkommende.", @@ -79,18 +79,23 @@ "audio.hide": "Skjul lyd", "autosuggest_hashtag.per_week": "{count} pr. uge", "boost_modal.combo": "Du kan trykke på {combo} for at overspringe dette næste gang", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Kopiér fejlrapport", + "bundle_column_error.error.body": "Den anmodede side kunne ikke gengives. Dette kan skyldes flere typer fejl.", + "bundle_column_error.error.title": "Åh nej!", + "bundle_column_error.network.body": "En fejl opstod under forsøget på at indlæse denne side. Dette kan skyldes flere typer af fejl.", + "bundle_column_error.network.title": "Netværksfejl", "bundle_column_error.retry": "Forsøg igen", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Retur til hjem", + "bundle_column_error.routing.body": "Den anmodede side kunne ikke findes. Sikker på, at URL'en er korrekt?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Luk", "bundle_modal_error.message": "Noget gik galt under indlæsningen af denne komponent.", "bundle_modal_error.retry": "Forsøg igen", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Om", "column.blocks": "Blokerede brugere", "column.bookmarks": "Bogmærker", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Fastgjorte indlæg", "navigation_bar.preferences": "Præferencer", "navigation_bar.public_timeline": "Fælles tidslinje", + "navigation_bar.search": "Search", "navigation_bar.security": "Sikkerhed", "not_signed_in_indicator.not_signed_in": "Man skal logge ind for at tilgå denne ressource.", "notification.admin.report": "{name} anmeldte {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Ingen har endnu boostet dette indlæg. Når nogen gør, vil det fremgå hér.", "status.redraft": "Slet og omformulér", "status.remove_bookmark": "Fjern bogmærke", + "status.replied_to": "Replied to {name}", "status.reply": "Besvar", "status.replyAll": "Besvar alle", "status.report": "Anmeld @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Vis mere", "status.show_more_all": "Vis mere for alle", "status.show_original": "Vis original", - "status.show_thread": "Vis tråd", "status.translate": "Oversæt", - "status.translated_from": "Oversat fra {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Utilgængelig", "status.unmute_conversation": "Genaktivér samtale", "status.unpin": "Frigør fra profil", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 78d43a448..c0f385b66 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -27,9 +27,9 @@ "account.edit_profile": "Profil bearbeiten", "account.enable_notifications": "Benachrichtige mich wenn @{name} etwas postet", "account.endorse": "Auf Profil hervorheben", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Letzter Beitrag am {date}", + "account.featured_tags.last_status_never": "Keine Beiträge", + "account.featured_tags.title": "{name}'s vorgestellte Hashtags", "account.follow": "Folgen", "account.followers": "Follower", "account.followers.empty": "Diesem Profil folgt noch niemand.", @@ -39,7 +39,7 @@ "account.follows.empty": "Diesem Profil folgt niemand", "account.follows_you": "Folgt dir", "account.hide_reblogs": "Geteilte Beiträge von @{name} verbergen", - "account.joined": "Beigetreten am {date}", + "account.joined_short": "Joined", "account.languages": "Abonnierte Sprachen ändern", "account.link_verified_on": "Diesem Profil folgt niemand", "account.locked_info": "Der Privatsphärenstatus dieses Accounts wurde auf „gesperrt“ gesetzt. Die Person bestimmt manuell, wer ihm/ihr folgen darf.", @@ -79,18 +79,23 @@ "audio.hide": "Audio stummschalten", "autosuggest_hashtag.per_week": "{count} pro Woche", "boost_modal.combo": "Drücke {combo}, um dieses Fenster zu überspringen", - "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.copy_stacktrace": "Fehlerbericht kopieren", "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.error.title": "Oh nein!", "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.network.title": "Netzwerkfehler", "bundle_column_error.retry": "Erneut versuchen", - "bundle_column_error.return": "Go back home", + "bundle_column_error.return": "Zurück zur Startseite", "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Schließen", "bundle_modal_error.message": "Etwas ist beim Laden schiefgelaufen.", "bundle_modal_error.retry": "Erneut versuchen", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Über", "column.blocks": "Blockierte Profile", "column.bookmarks": "Lesezeichen", @@ -144,7 +149,7 @@ "confirmations.block.block_and_report": "Blockieren und melden", "confirmations.block.confirm": "Blockieren", "confirmations.block.message": "Bist du dir sicher, dass du {name} blockieren möchtest?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.confirm": "Anfrage zurückziehen", "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Löschen", "confirmations.delete.message": "Bist du dir sicher, dass du diesen Beitrag löschen möchtest?", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Angeheftete Beiträge", "navigation_bar.preferences": "Einstellungen", "navigation_bar.public_timeline": "Föderierte Zeitleiste", + "navigation_bar.search": "Search", "navigation_bar.security": "Sicherheit", "not_signed_in_indicator.not_signed_in": "Sie müssen sich anmelden, um diese Funktion zu nutzen.", "notification.admin.report": "{target} wurde von {name} gemeldet", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Diesen Beitrag hat noch niemand geteilt. Sobald es jemand tut, wird diese Person hier angezeigt.", "status.redraft": "Löschen und neu erstellen", "status.remove_bookmark": "Lesezeichen entfernen", + "status.replied_to": "Replied to {name}", "status.reply": "Antworten", "status.replyAll": "Allen antworten", "status.report": "@{name} melden", @@ -578,9 +585,8 @@ "status.show_more": "Mehr anzeigen", "status.show_more_all": "Alle Inhaltswarnungen aufklappen", "status.show_original": "Original anzeigen", - "status.show_thread": "Zeige Konversation", "status.translate": "Übersetzen", - "status.translated_from": "Aus {lang} übersetzt", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Nicht verfügbar", "status.unmute_conversation": "Stummschaltung von Konversation aufheben", "status.unpin": "Vom Profil lösen", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 9e5462f7f..9cca24d19 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -689,16 +689,8 @@ { "descriptors": [ { - "defaultMessage": "Show thread", - "id": "status.show_thread" - }, - { - "defaultMessage": "Read more", - "id": "status.read_more" - }, - { - "defaultMessage": "Translated from {lang}", - "id": "status.translated_from" + "defaultMessage": "Translated from {lang} using {provider}", + "id": "status.translated_from_with" }, { "defaultMessage": "Show original", @@ -708,6 +700,10 @@ "defaultMessage": "Translate", "id": "status.translate" }, + { + "defaultMessage": "Read more", + "id": "status.read_more" + }, { "defaultMessage": "Show more", "id": "status.show_more" @@ -756,6 +752,10 @@ { "defaultMessage": "{name} boosted", "id": "status.reblogged_by" + }, + { + "defaultMessage": "Replied to {name}", + "id": "status.replied_to" } ], "path": "app/javascript/mastodon/components/status.json" @@ -1204,8 +1204,8 @@ "id": "account.badges.group" }, { - "defaultMessage": "Joined {date}", - "id": "account.joined" + "defaultMessage": "Joined", + "id": "account.joined_short" } ], "path": "app/javascript/mastodon/features/account/components/header.json" @@ -1273,6 +1273,39 @@ ], "path": "app/javascript/mastodon/features/bookmarked_statuses/index.json" }, + { + "descriptors": [ + { + "defaultMessage": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "id": "closed_registrations_modal.description" + }, + { + "defaultMessage": "Signing up on Mastodon", + "id": "closed_registrations_modal.title" + }, + { + "defaultMessage": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "id": "closed_registrations_modal.preamble" + }, + { + "defaultMessage": "On this server", + "id": "interaction_modal.on_this_server" + }, + { + "defaultMessage": "On a different server", + "id": "interaction_modal.on_another_server" + }, + { + "defaultMessage": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "id": "closed_registrations.other_server_instructions" + }, + { + "defaultMessage": "Find another server", + "id": "closed_registrations_modal.find_another_server" + } + ], + "path": "app/javascript/mastodon/features/closed_registrations_modal/index.json" + }, { "descriptors": [ { @@ -2525,6 +2558,10 @@ "defaultMessage": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", "id": "interaction_modal.description.follow" }, + { + "defaultMessage": "Create account", + "id": "sign_in_banner.create_account" + }, { "defaultMessage": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "id": "interaction_modal.preamble" @@ -2537,10 +2574,6 @@ "defaultMessage": "Sign in", "id": "sign_in_banner.sign_in" }, - { - "defaultMessage": "Create account", - "id": "sign_in_banner.create_account" - }, { "defaultMessage": "On a different server", "id": "interaction_modal.on_another_server" @@ -4084,6 +4117,10 @@ { "defaultMessage": "About", "id": "navigation_bar.about" + }, + { + "defaultMessage": "Search", + "id": "navigation_bar.search" } ], "path": "app/javascript/mastodon/features/ui/components/navigation_panel.json" @@ -4103,6 +4140,10 @@ }, { "descriptors": [ + { + "defaultMessage": "Create account", + "id": "sign_in_banner.create_account" + }, { "defaultMessage": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "id": "sign_in_banner.text" @@ -4110,10 +4151,6 @@ { "defaultMessage": "Sign in", "id": "sign_in_banner.sign_in" - }, - { - "defaultMessage": "Create account", - "id": "sign_in_banner.create_account" } ], "path": "app/javascript/mastodon/features/ui/components/sign_in_banner.json" diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 476250b37..6bf6cabaa 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -39,7 +39,7 @@ "account.follows.empty": "Αυτός ο χρήστης δεν ακολουθεί κανέναν ακόμα.", "account.follows_you": "Σε ακολουθεί", "account.hide_reblogs": "Απόκρυψη προωθήσεων από @{name}", - "account.joined": "Μέλος από τις {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Η ιδιοκτησία αυτού του συνδέσμου ελέχθηκε την {date}", "account.locked_info": "Η κατάσταση απορρήτου αυτού του λογαριασμού είναι κλειδωμένη. Ο ιδιοκτήτης επιβεβαιώνει χειροκίνητα ποιος μπορεί να τον ακολουθήσει.", @@ -79,18 +79,23 @@ "audio.hide": "Απόκρυψη αρχείου ήχου", "autosuggest_hashtag.per_week": "{count} ανα εβδομάδα", "boost_modal.combo": "Μπορείς να πατήσεις {combo} για να το προσπεράσεις αυτό την επόμενη φορά", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Αντιγραφή αναφοράς σφάλματος", + "bundle_column_error.error.body": "Δεν ήταν δυνατή η απόδοση της σελίδας που ζητήσατε. Μπορεί να οφείλεται σε σφάλμα στον κώδικά μας ή σε πρόβλημα συμβατότητας του προγράμματος περιήγησης.", + "bundle_column_error.error.title": "Ωχ όχι!", + "bundle_column_error.network.body": "Παρουσιάστηκε σφάλμα κατά την προσπάθεια φόρτωσης αυτής της σελίδας. Αυτό θα μπορούσε να οφείλεται σε ένα προσωρινό πρόβλημα με τη σύνδεσή σας στο διαδίκτυο ή σε αυτόν τον διακομιστή.", + "bundle_column_error.network.title": "Σφάλμα δικτύου", "bundle_column_error.retry": "Δοκίμασε ξανά", - "bundle_column_error.return": "Go back home", + "bundle_column_error.return": "Μετάβαση πίσω στην αρχική σελίδα", "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Κλείσιμο", "bundle_modal_error.message": "Κάτι πήγε στραβά κατά τη φόρτωση του στοιχείου.", "bundle_modal_error.retry": "Δοκίμασε ξανά", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Σχετικά με", "column.blocks": "Αποκλεισμένοι χρήστες", "column.bookmarks": "Σελιδοδείκτες", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Καρφιτσωμένα τουτ", "navigation_bar.preferences": "Προτιμήσεις", "navigation_bar.public_timeline": "Ομοσπονδιακή ροή", + "navigation_bar.search": "Search", "navigation_bar.security": "Ασφάλεια", "not_signed_in_indicator.not_signed_in": "Πρέπει να συνδεθείτε για να αποκτήσετε πρόσβαση σε αυτόν τον πόρο.", "notification.admin.report": "{name} ανέφερε {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Κανείς δεν προώθησε αυτό το τουτ ακόμα. Μόλις το κάνει κάποια, θα εμφανιστούν εδώ.", "status.redraft": "Σβήσε & ξαναγράψε", "status.remove_bookmark": "Αφαίρεση σελιδοδείκτη", + "status.replied_to": "Replied to {name}", "status.reply": "Απάντησε", "status.replyAll": "Απάντησε στην συζήτηση", "status.report": "Κατάγγειλε @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Δείξε περισσότερα", "status.show_more_all": "Δείξε περισσότερα για όλα", "status.show_original": "Εμφάνιση αρχικού", - "status.show_thread": "Εμφάνιση νήματος", "status.translate": "Μετάφραση", - "status.translated_from": "Μεταφράστηκε από {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Μη διαθέσιμα", "status.unmute_conversation": "Διέκοψε την αποσιώπηση της συζήτησης", "status.unpin": "Ξεκαρφίτσωσε από το προφίλ", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index b6f1e0d58..c4bfc40b1 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -39,7 +39,7 @@ "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned posts", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this post yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 10fe869c6..29b63ff0b 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -39,7 +39,7 @@ "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned posts", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this post yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index a6a80bc02..cf66a5af3 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -39,7 +39,7 @@ "account.follows.empty": "La uzanto ankoraŭ ne sekvas iun ajn.", "account.follows_you": "Sekvas vin", "account.hide_reblogs": "Kaŝi la plusendojn de @{name}", - "account.joined": "Kuniĝis {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "La posedanto de tiu ligilo estis kontrolita je {date}", "account.locked_info": "La privateco de tiu konto estas elektita kiel fermita. La posedanto povas mane akcepti tiun, kiu povas sekvi rin.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Fermi", "bundle_modal_error.message": "Io misfunkciis en la ŝargado de ĉi tiu elemento.", "bundle_modal_error.retry": "Provu refoje", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blokitaj uzantoj", "column.bookmarks": "Legosignoj", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Alpinglitaj mesaĝoj", "navigation_bar.preferences": "Preferoj", "navigation_bar.public_timeline": "Fratara templinio", + "navigation_bar.search": "Search", "navigation_bar.security": "Sekureco", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} raportis {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Ankoraŭ neniu plusendis la mesaĝon. Kiam iu faras tion, ili aperos ĉi tie.", "status.redraft": "Forigi kaj reskribi", "status.remove_bookmark": "Forigi legosignon", + "status.replied_to": "Replied to {name}", "status.reply": "Respondi", "status.replyAll": "Respondi al la fadeno", "status.report": "Raporti @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Montri pli", "status.show_more_all": "Montri pli ĉiun", "status.show_original": "Show original", - "status.show_thread": "Montri la mesaĝaron", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Nedisponebla", "status.unmute_conversation": "Malsilentigi la konversacion", "status.unpin": "Depingli de profilo", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index c2ac35492..f157022b8 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -39,7 +39,7 @@ "account.follows.empty": "Todavía este usuario no sigue a nadie.", "account.follows_you": "Te sigue", "account.hide_reblogs": "Ocultar adhesiones de @{name}", - "account.joined": "En este servidor desde {date}", + "account.joined_short": "Joined", "account.languages": "Cambiar idiomas suscritos", "account.link_verified_on": "La propiedad de este enlace fue verificada el {date}", "account.locked_info": "Esta cuenta es privada. El propietario manualmente revisa quién puede seguirle.", @@ -79,18 +79,23 @@ "audio.hide": "Ocultar audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Podés hacer clic en {combo} para saltar esto la próxima vez", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Copiar informe de error", + "bundle_column_error.error.body": "La página solicitada no pudo ser cargada. Podría deberse a un error de programación en nuestro código o a un problema de compatibilidad con el navegador web.", + "bundle_column_error.error.title": "¡Epa!", + "bundle_column_error.network.body": "Se produjo un error al intentar cargar esta página. Esto puede deberse a un problema temporal con tu conexión a internet o a este servidor.", + "bundle_column_error.network.title": "Error de red", "bundle_column_error.retry": "Intentá de nuevo", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Volver al inicio", + "bundle_column_error.routing.body": "No se pudo encontrar la página solicitada. ¿Estás seguro que la dirección web es correcta?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Cerrar", "bundle_modal_error.message": "Algo salió mal al cargar este componente.", "bundle_modal_error.retry": "Intentá de nuevo", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Información", "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Mensajes fijados", "navigation_bar.preferences": "Configuración", "navigation_bar.public_timeline": "Línea temporal federada", + "navigation_bar.search": "Search", "navigation_bar.security": "Seguridad", "not_signed_in_indicator.not_signed_in": "Necesitas iniciar sesión para acceder a este recurso.", "notification.admin.report": "{name} denunció a {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Todavía nadie adhirió a este mensaje. Cuando alguien lo haga, se mostrará acá.", "status.redraft": "Eliminar mensaje original y editarlo", "status.remove_bookmark": "Quitar marcador", + "status.replied_to": "Replied to {name}", "status.reply": "Responder", "status.replyAll": "Responder al hilo", "status.report": "Denunciar a @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Mostrar más", "status.show_more_all": "Mostrar más para todo", "status.show_original": "Mostrar original", - "status.show_thread": "Mostrar hilo", "status.translate": "Traducir", - "status.translated_from": "Traducido desde el {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index a667c6803..6f69cbabc 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -27,9 +27,9 @@ "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificarme cuando @{name} publique algo", "account.endorse": "Destacar en mi perfil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Última publicación el {date}", + "account.featured_tags.last_status_never": "Sin publicaciones", + "account.featured_tags.title": "Etiquetas destacadas de {name}", "account.follow": "Seguir", "account.followers": "Seguidores", "account.followers.empty": "Todavía nadie sigue a este usuario.", @@ -39,7 +39,7 @@ "account.follows.empty": "Este usuario todavía no sigue a nadie.", "account.follows_you": "Te sigue", "account.hide_reblogs": "Ocultar retoots de @{name}", - "account.joined": "Se unió el {date}", + "account.joined_short": "Joined", "account.languages": "Cambiar idiomas suscritos", "account.link_verified_on": "El proprietario de este link fue comprobado el {date}", "account.locked_info": "El estado de privacidad de esta cuenta està configurado como bloqueado. El proprietario debe revisar manualmente quien puede seguirle.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Cerrar", "bundle_modal_error.message": "Algo salió mal al cargar este componente.", "bundle_modal_error.retry": "Inténtalo de nuevo", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Acerca de", "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Toots fijados", "navigation_bar.preferences": "Preferencias", "navigation_bar.public_timeline": "Historia federada", + "navigation_bar.search": "Search", "navigation_bar.security": "Seguridad", "not_signed_in_indicator.not_signed_in": "Necesitas iniciar sesión para acceder a este recurso.", "notification.admin.report": "{name} informó {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Nadie retooteó este toot todavía. Cuando alguien lo haga, aparecerá aquí.", "status.redraft": "Borrar y volver a borrador", "status.remove_bookmark": "Eliminar marcador", + "status.replied_to": "Replied to {name}", "status.reply": "Responder", "status.replyAll": "Responder al hilo", "status.report": "Reportar", @@ -578,9 +585,8 @@ "status.show_more": "Mostrar más", "status.show_more_all": "Mostrar más para todo", "status.show_original": "Mostrar original", - "status.show_thread": "Mostrar hilo", "status.translate": "Traducir", - "status.translated_from": "Traducido del {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 8a8462fac..ec299cf1e 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -39,7 +39,7 @@ "account.follows.empty": "Este usuario todavía no sigue a nadie.", "account.follows_you": "Te sigue", "account.hide_reblogs": "Ocultar retoots de @{name}", - "account.joined": "Se unió el {date}", + "account.joined_short": "Joined", "account.languages": "Cambiar idiomas suscritos", "account.link_verified_on": "El proprietario de este link fue comprobado el {date}", "account.locked_info": "El estado de privacidad de esta cuenta està configurado como bloqueado. El proprietario debe revisar manualmente quien puede seguirle.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Cerrar", "bundle_modal_error.message": "Algo salió mal al cargar este componente.", "bundle_modal_error.retry": "Inténtalo de nuevo", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Acerca de", "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Publicaciones fijadas", "navigation_bar.preferences": "Preferencias", "navigation_bar.public_timeline": "Línea de tiempo federada", + "navigation_bar.search": "Search", "navigation_bar.security": "Seguridad", "not_signed_in_indicator.not_signed_in": "Necesitas iniciar sesión para acceder a este recurso.", "notification.admin.report": "{name} informó {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Nadie retooteó este toot todavía. Cuando alguien lo haga, aparecerá aquí.", "status.redraft": "Borrar y volver a borrador", "status.remove_bookmark": "Eliminar marcador", + "status.replied_to": "Replied to {name}", "status.reply": "Responder", "status.replyAll": "Responder al hilo", "status.report": "Reportar", @@ -578,9 +585,8 @@ "status.show_more": "Mostrar más", "status.show_more_all": "Mostrar más para todo", "status.show_original": "Mostrar original", - "status.show_thread": "Mostrar hilo", "status.translate": "Traducir", - "status.translated_from": "Traducido del {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index a660a9f95..b483b61a8 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -39,7 +39,7 @@ "account.follows.empty": "See kasutaja ei jälgi veel kedagi.", "account.follows_you": "Jälgib Teid", "account.hide_reblogs": "Peida upitused kasutajalt @{name}", - "account.joined": "Liitus {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Selle lingi autorsust kontrolliti {date}", "account.locked_info": "Selle konto privaatsussätteks on lukustatud. Omanik vaatab manuaalselt üle, kes teda jägida saab.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Sulge", "bundle_modal_error.message": "Selle komponendi laadimisel läks midagi viltu.", "bundle_modal_error.retry": "Proovi uuesti", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blokeeritud kasutajad", "column.bookmarks": "Järjehoidjad", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Kinnitatud tuutid", "navigation_bar.preferences": "Eelistused", "navigation_bar.public_timeline": "Föderatiivne ajajoon", + "navigation_bar.search": "Search", "navigation_bar.security": "Turvalisus", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Keegi pole seda tuuti veel upitanud. Kui keegi upitab, näed seda siin.", "status.redraft": "Kustuta & alga uuesti", "status.remove_bookmark": "Eemalda järjehoidja", + "status.replied_to": "Replied to {name}", "status.reply": "Vasta", "status.replyAll": "Vasta lõimele", "status.report": "Raporteeri @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Näita veel", "status.show_more_all": "Näita enam kõigile", "status.show_original": "Show original", - "status.show_thread": "Kuva lõim", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Pole saadaval", "status.unmute_conversation": "Ära vaigista vestlust", "status.unpin": "Kinnita profiililt lahti", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index f8ddbd689..08263367c 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -39,7 +39,7 @@ "account.follows.empty": "Erabiltzaile honek ez du inor jarraitzen oraindik.", "account.follows_you": "Jarraitzen dizu", "account.hide_reblogs": "Ezkutatu @{name}(r)en bultzadak", - "account.joined": "{date}(e)an elkartua", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Esteka honen jabetzaren egiaztaketa data: {date}", "account.locked_info": "Kontu honen pribatutasun egoera blokeatuta gisa ezarri da. Jabeak eskuz erabakitzen du nork jarraitu diezaioken.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Itxi", "bundle_modal_error.message": "Zerbait okerra gertatu da osagai hau kargatzean.", "bundle_modal_error.retry": "Saiatu berriro", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blokeatutako erabiltzaileak", "column.bookmarks": "Laster-markak", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Finkatutako bidalketak", "navigation_bar.preferences": "Hobespenak", "navigation_bar.public_timeline": "Federatutako denbora-lerroa", + "navigation_bar.search": "Search", "navigation_bar.security": "Segurtasuna", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Inork ez dio bultzada eman bidalketa honi oraindik. Inork egiten badu, hemen agertuko da.", "status.redraft": "Ezabatu eta berridatzi", "status.remove_bookmark": "Kendu laster-marka", + "status.replied_to": "Replied to {name}", "status.reply": "Erantzun", "status.replyAll": "Erantzun harian", "status.report": "Salatu @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Erakutsi gehiago", "status.show_more_all": "Erakutsi denetarik gehiago", "status.show_original": "Show original", - "status.show_thread": "Erakutsi haria", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Ez eskuragarri", "status.unmute_conversation": "Desmututu elkarrizketa", "status.unpin": "Desfinkatu profiletik", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index f4a4d5efa..9788de690 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -39,7 +39,7 @@ "account.follows.empty": "این کاربر هنوز پی‌گیر کسی نیست.", "account.follows_you": "پی می‌گیردتان", "account.hide_reblogs": "نهفتن تقویت‌های ‎@{name}", - "account.joined": "پیوسته از {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "مالکیت این پیوند در {date} بررسی شد", "account.locked_info": "این حساب خصوصی است. صاحبش تصمیم می‌گیرد که چه کسی پی‌گیرش باشد.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "بستن", "bundle_modal_error.message": "هنگام بار کردن این مولفه، اشتباهی رخ داد.", "bundle_modal_error.retry": "تلاش دوباره", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "کاربران مسدود شده", "column.bookmarks": "نشانک‌ها", @@ -379,6 +384,7 @@ "navigation_bar.pins": "فرسته‌های سنجاق شده", "navigation_bar.preferences": "ترجیحات", "navigation_bar.public_timeline": "خط زمانی همگانی", + "navigation_bar.search": "Search", "navigation_bar.security": "امنیت", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "هنوز هیچ کسی این فرسته را تقویت نکرده است. وقتی کسی چنین کاری کند، این‌جا نمایش داده خواهد شد.", "status.redraft": "حذف و بازنویسی", "status.remove_bookmark": "برداشتن نشانک", + "status.replied_to": "Replied to {name}", "status.reply": "پاسخ", "status.replyAll": "پاسخ به رشته", "status.report": "گزارش ‎@{name}", @@ -578,9 +585,8 @@ "status.show_more": "نمایش بیشتر", "status.show_more_all": "نمایش بیشتر همه", "status.show_original": "Show original", - "status.show_thread": "نمایش رشته", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "ناموجود", "status.unmute_conversation": "رفع خموشی گفت‌وگو", "status.unpin": "برداشتن سنجاق از نمایه", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index c0ff844cc..bd7b7f8ac 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Moderoidut palvelimet", + "about.contact": "Yhteystiedot:", + "about.domain_blocks.comment": "Syy", + "about.domain_blocks.domain": "Verkkotunnus", + "about.domain_blocks.preamble": "Mastodonin avulla voit yleensä tarkastella sisältöä ja olla vuorovaikutuksessa käyttäjien kanssa millä tahansa muulla palvelimella fediversessä. Nämä ovat poikkeuksia, jotka on tehty tälle palvelimelle.", + "about.domain_blocks.severity": "Vakavuus", + "about.domain_blocks.silenced.explanation": "Et yleensä näe profiileja ja sisältöä tältä palvelimelta, ellet nimenomaisesti etsi tai valitse sitä seuraamalla.", + "about.domain_blocks.silenced.title": "Rajoitettu", + "about.domain_blocks.suspended.explanation": "Tämän palvelimen tietoja ei käsitellä, tallenneta tai vaihdeta, mikä tekee käyttäjän kanssa vuorovaikutuksen tai yhteydenpidon mahdottomaksi tällä palvelimella.", + "about.domain_blocks.suspended.title": "Keskeytetty", + "about.not_available": "Näitä tietoja ei ole julkaistu tällä palvelimella.", + "about.powered_by": "Hajautettu sosiaalinen media, tarjoaa {mastodon}", + "about.rules": "Palvelimen säännöt", "account.account_note_header": "Muistiinpano", "account.add_or_remove_from_list": "Lisää tai poista listoilta", "account.badges.bot": "Botti", @@ -20,16 +20,16 @@ "account.block_domain": "Piilota kaikki sisältö verkkotunnuksesta {domain}", "account.blocked": "Estetty", "account.browse_more_on_origin_server": "Selaile lisää alkuperäisellä palvelimella", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Peruuta seurantapyyntö", "account.direct": "Pikaviesti käyttäjälle @{name}", "account.disable_notifications": "Lopeta @{name}:n julkaisuista ilmoittaminen", "account.domain_blocked": "Verkko-osoite piilotettu", "account.edit_profile": "Muokkaa profiilia", "account.enable_notifications": "Ilmoita @{name}:n julkaisuista", "account.endorse": "Suosittele profiilissasi", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Viimeisin viesti {date}", + "account.featured_tags.last_status_never": "Ei viestejä", + "account.featured_tags.title": "{name} esillä olevat hashtagit", "account.follow": "Seuraa", "account.followers": "Seuraajat", "account.followers.empty": "Kukaan ei seuraa tätä käyttäjää vielä.", @@ -39,8 +39,8 @@ "account.follows.empty": "Tämä käyttäjä ei vielä seuraa ketään.", "account.follows_you": "Seuraa sinua", "account.hide_reblogs": "Piilota buustaukset käyttäjältä @{name}", - "account.joined": "Liittynyt {date}", - "account.languages": "Change subscribed languages", + "account.joined_short": "Joined", + "account.languages": "Vaihda tilattuja kieliä", "account.link_verified_on": "Tämän linkin omistaja tarkistettiin {date}", "account.locked_info": "Tämän tilin yksityisyyden tila on asetettu lukituksi. Omistaja arvioi manuaalisesti, kuka voi seurata niitä.", "account.media": "Media", @@ -79,19 +79,24 @@ "audio.hide": "Piilota ääni", "autosuggest_hashtag.per_week": "{count} viikossa", "boost_modal.combo": "Ensi kerralla voit ohittaa tämän painamalla {combo}", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Kopioi virheraportti", + "bundle_column_error.error.body": "Pyydettyä sivua ei voitu hahmontaa. Se voi johtua virheestä koodissamme tai selaimen yhteensopivuudessa.", + "bundle_column_error.error.title": "Voi ei!", + "bundle_column_error.network.body": "Sivun lataamisessa tapahtui virhe. Tämä voi johtua tilapäisestä Internet-yhteyden tai tämän palvelimen ongelmasta.", + "bundle_column_error.network.title": "Verkkovirhe", "bundle_column_error.retry": "Yritä uudestaan", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Palaa takaisin kotiin", + "bundle_column_error.routing.body": "Pyydettyä sivua ei löytynyt. Oletko varma, että osoitepalkin URL-osoite on oikein?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Sulje", "bundle_modal_error.message": "Jokin meni vikaan komponenttia ladattaessa.", "bundle_modal_error.retry": "Yritä uudelleen", - "column.about": "About", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", + "column.about": "Tietoja", "column.blocks": "Estetyt käyttäjät", "column.bookmarks": "Kirjanmerkit", "column.community": "Paikallinen aikajana", @@ -144,8 +149,8 @@ "confirmations.block.block_and_report": "Estä ja raportoi", "confirmations.block.confirm": "Estä", "confirmations.block.message": "Haluatko varmasti estää käyttäjän {name}?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "Peruuta pyyntö", + "confirmations.cancel_follow_request.message": "Haluatko varmasti peruuttaa pyyntösi seurata käyttäjää {name}?", "confirmations.delete.confirm": "Poista", "confirmations.delete.message": "Haluatko varmasti poistaa tämän julkaisun?", "confirmations.delete_list.confirm": "Poista", @@ -169,18 +174,18 @@ "conversation.mark_as_read": "Merkitse luetuksi", "conversation.open": "Näytä keskustelu", "conversation.with": "{names} kanssa", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Kopioitu", + "copypaste.copy": "Kopioi", "directory.federated": "Koko tunnettu fediverse", "directory.local": "Vain palvelimelta {domain}", "directory.new_arrivals": "Äskettäin saapuneet", "directory.recently_active": "Hiljattain aktiiviset", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "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_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "Nämä ovat uusimmat julkiset viestit ihmisiltä, joiden tilejä isännöi {domain}.", + "dismissable_banner.dismiss": "Hylkää", + "dismissable_banner.explore_links": "Näistä uutisista puhuvat ihmiset juuri nyt tällä ja muilla hajautetun verkon palvelimilla.", + "dismissable_banner.explore_statuses": "Nämä viestit juuri nyt tältä ja muilta hajautetun verkon palvelimilta ovat saamassa vetoa tältä palvelimelta.", + "dismissable_banner.explore_tags": "Nämä hashtagit juuri nyt ovat saamassa vetovoimaa tällä ja muilla hajautetun verkon palvelimilla olevien ihmisten keskuudessa.", + "dismissable_banner.public_timeline": "Nämä ovat viimeisimpiä julkisia viestejä ihmisiltä, jotka ovat tällä ja muilla hajautetun verkon palvelimilla, joista tämä palvelin tietää.", "embed.instructions": "Upota julkaisu verkkosivullesi kopioimalla alla oleva koodi.", "embed.preview": "Se tulee näyttämään tältä:", "emoji_button.activity": "Aktiviteetit", @@ -254,14 +259,14 @@ "follow_request.reject": "Hylkää", "follow_requests.unlocked_explanation": "Vaikka tiliäsi ei ole lukittu, {domain}:n ylläpitäjien mielestä saatat haluta tarkistaa nämä seurauspyynnöt manuaalisesti.", "generic.saved": "Tallennettu", - "getting_started.directory": "Directory", + "getting_started.directory": "Hakemisto", "getting_started.documentation": "Käyttöohjeet", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "Mastodon on ilmainen, avoimen lähdekoodin ohjelmisto. Voit tarkastella lähdekoodia, osallistua tai raportoida ongelmista osoitteessa {repository}.", "getting_started.heading": "Näin pääset alkuun", "getting_started.invite": "Kutsu ihmisiä", - "getting_started.privacy_policy": "Privacy Policy", + "getting_started.privacy_policy": "Tietosuojakäytäntö", "getting_started.security": "Tiliasetukset", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "Tietoja Mastodonista", "hashtag.column_header.tag_mode.all": "ja {additional}", "hashtag.column_header.tag_mode.any": "tai {additional}", "hashtag.column_header.tag_mode.none": "ilman {additional}", @@ -278,18 +283,18 @@ "home.column_settings.show_replies": "Näytä vastaukset", "home.hide_announcements": "Piilota ilmoitukset", "home.show_announcements": "Näytä ilmoitukset", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Kun sinulla on tili Mastodonissa, voit lisätä tämän viestin suosikkeihin ja tallentaa sen myöhempää käyttöä varten.", + "interaction_modal.description.follow": "Kun sinulla on tili Mastodonissa, voit seurata {name} saadaksesi hänen viestejä sinun kotisyötteeseen.", + "interaction_modal.description.reblog": "Kun sinulla on tili Mastodonissa, voit tehostaa viestiä ja jakaa sen omien seuraajiesi kanssa.", + "interaction_modal.description.reply": "Kun sinulla on tili Mastodonissa, voit vastata tähän viestiin.", + "interaction_modal.on_another_server": "Toisella palvelimella", + "interaction_modal.on_this_server": "Tällä palvelimella", + "interaction_modal.other_server_instructions": "Yksinkertaisesti kopioi ja liitä tämä URL-osoite suosikki sovelluksen tai web-käyttöliittymän hakupalkkiin, jossa olet kirjautunut sisään.", + "interaction_modal.preamble": "Koska Mastodon on hajautettu, voit käyttää toisen Mastodon-palvelimen tai yhteensopivan alustan ylläpitämää tiliäsi, jos sinulla ei ole tiliä tällä palvelimella.", + "interaction_modal.title.favourite": "Suosikin {name} viesti", + "interaction_modal.title.follow": "Seuraa {name}", + "interaction_modal.title.reblog": "Tehosta {name} viestiä", + "interaction_modal.title.reply": "Vastaa {name} viestiin", "intervals.full.days": "{number, plural, one {# päivä} other {# päivää}}", "intervals.full.hours": "{number, plural, one {# tunti} other {# tuntia}}", "intervals.full.minutes": "{number, plural, one {# minuutti} other {# minuuttia}}", @@ -355,8 +360,8 @@ "mute_modal.duration": "Kesto", "mute_modal.hide_notifications": "Piilota tältä käyttäjältä tulevat ilmoitukset?", "mute_modal.indefinite": "Ikuisesti", - "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", + "navigation_bar.about": "Tietoja", + "navigation_bar.apps": "Hanki sovellus", "navigation_bar.blocks": "Estetyt käyttäjät", "navigation_bar.bookmarks": "Kirjanmerkit", "navigation_bar.community_timeline": "Paikallinen aikajana", @@ -370,7 +375,7 @@ "navigation_bar.filters": "Mykistetyt sanat", "navigation_bar.follow_requests": "Seuraamispyynnöt", "navigation_bar.follows_and_followers": "Seurattavat ja seuraajat", - "navigation_bar.info": "About", + "navigation_bar.info": "Tietoja", "navigation_bar.keyboard_shortcuts": "Pikanäppäimet", "navigation_bar.lists": "Listat", "navigation_bar.logout": "Kirjaudu ulos", @@ -379,8 +384,9 @@ "navigation_bar.pins": "Kiinnitetyt viestit", "navigation_bar.preferences": "Asetukset", "navigation_bar.public_timeline": "Yleinen aikajana", + "navigation_bar.search": "Search", "navigation_bar.security": "Turvallisuus", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Sinun täytyy kirjautua sisään päästäksesi käsiksi tähän resurssiin.", "notification.admin.report": "{name} ilmoitti {target}", "notification.admin.sign_up": "{name} rekisteröitynyt", "notification.favourite": "{name} tykkäsi viestistäsi", @@ -448,8 +454,8 @@ "privacy.public.short": "Julkinen", "privacy.unlisted.long": "Näkyvissä kaikille, mutta jättäen pois hakemisen mahdollisuus", "privacy.unlisted.short": "Listaamaton julkinen", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Viimeksi päivitetty {date}", + "privacy_policy.title": "Tietosuojakäytäntö", "refresh": "Päivitä", "regeneration_indicator.label": "Ladataan…", "regeneration_indicator.sublabel": "Kotinäkymääsi valmistellaan!", @@ -520,17 +526,17 @@ "search_results.nothing_found": "Näille hakusanoille ei löytynyt mitään", "search_results.statuses": "Viestit", "search_results.statuses_fts_disabled": "Viestien haku sisällön perusteella ei ole käytössä tällä Mastodon-palvelimella.", - "search_results.title": "Search for {q}", + "search_results.title": "Etsi {q}", "search_results.total": "{count, number} {count, plural, one {tulos} other {tulokset}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", - "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "server_banner.about_active_users": "Palvelinta käyttäneet ihmiset viimeisen 30 päivän aikana (kuukauden aktiiviset käyttäjät)", + "server_banner.active_users": "aktiiviset käyttäjät", + "server_banner.administered_by": "Ylläpitäjä:", + "server_banner.introduction": "{domain} on osa hajautettua sosiaalista verkostoa, jonka tarjoaa {mastodon}.", + "server_banner.learn_more": "Lue lisää", + "server_banner.server_stats": "Palvelimen tilastot:", + "sign_in_banner.create_account": "Luo tili", + "sign_in_banner.sign_in": "Kirjaudu sisään", + "sign_in_banner.text": "Kirjaudu sisään seurataksesi profiileja tai hashtageja, lisätäksesi suosikkeihin, jakaaksesi viestejä ja vastataksesi niihin tai ollaksesi vuorovaikutuksessa tililläsi toisella palvelimella.", "status.admin_account": "Avaa moderaattorinäkymä tilistä @{name}", "status.admin_status": "Avaa julkaisu moderointinäkymässä", "status.block": "Estä @{name}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Kukaan ei ole vielä buustannut tätä viestiä. Kun joku tekee niin, näkyy kyseinen henkilö tässä.", "status.redraft": "Poista ja palauta muokattavaksi", "status.remove_bookmark": "Poista kirjanmerkki", + "status.replied_to": "Replied to {name}", "status.reply": "Vastaa", "status.replyAll": "Vastaa ketjuun", "status.report": "Raportoi @{name}", @@ -577,16 +584,15 @@ "status.show_less_all": "Näytä vähemmän kaikista", "status.show_more": "Näytä lisää", "status.show_more_all": "Näytä lisää kaikista", - "status.show_original": "Show original", - "status.show_thread": "Näytä ketju", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.show_original": "Näytä alkuperäinen", + "status.translate": "Käännä", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Ei saatavilla", "status.unmute_conversation": "Poista keskustelun mykistys", "status.unpin": "Irrota profiilista", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Vain valituilla kielillä julkaistut viestit näkyvät etusivullasi ja aikajanalla muutoksen jälkeen. Valitse ei mitään, jos haluat vastaanottaa viestejä kaikilla kielillä.", + "subscribed_languages.save": "Tallenna muutokset", + "subscribed_languages.target": "Vaihda tilatut kielet {target}", "suggestions.dismiss": "Hylkää ehdotus", "suggestions.header": "Saatat olla kiinnostunut myös…", "tabs_bar.federated_timeline": "Yleinen", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index aee14a62b..d6de0df73 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.blocks": "Serveurs modérés", + "about.contact": "Contact :", + "about.domain_blocks.comment": "Motif :", + "about.domain_blocks.domain": "Domaine", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", + "about.domain_blocks.suspended.title": "Suspendu", "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.powered_by": "Réseau social décentralisé propulsé par {mastodon}", + "about.rules": "Règles du serveur", "account.account_note_header": "Note", "account.add_or_remove_from_list": "Ajouter ou retirer des listes", "account.badges.bot": "Bot", @@ -20,16 +20,16 @@ "account.block_domain": "Bloquer le domaine {domain}", "account.blocked": "Bloqué·e", "account.browse_more_on_origin_server": "Parcourir davantage sur le profil original", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Retirer la demande d’abonnement", "account.direct": "Envoyer un message direct à @{name}", "account.disable_notifications": "Ne plus me notifier quand @{name} publie quelque chose", "account.domain_blocked": "Domaine bloqué", "account.edit_profile": "Modifier le profil", "account.enable_notifications": "Me notifier quand @{name} publie quelque chose", "account.endorse": "Recommander sur votre profil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Dernier message le {date}", + "account.featured_tags.last_status_never": "Aucun message", + "account.featured_tags.title": "Les hashtags en vedette de {name}", "account.follow": "Suivre", "account.followers": "Abonné·e·s", "account.followers.empty": "Personne ne suit cet·te utilisateur·rice pour l’instant.", @@ -39,7 +39,7 @@ "account.follows.empty": "Cet·te utilisateur·rice ne suit personne pour l’instant.", "account.follows_you": "Vous suit", "account.hide_reblogs": "Masquer les partages de @{name}", - "account.joined": "Ici depuis {date}", + "account.joined_short": "Joined", "account.languages": "Changer les langues abonnées", "account.link_verified_on": "La propriété de ce lien a été vérifiée le {date}", "account.locked_info": "Ce compte est privé. Son ou sa propriétaire approuve manuellement qui peut le suivre.", @@ -81,16 +81,21 @@ "boost_modal.combo": "Vous pouvez appuyer sur {combo} pour passer ceci la prochaine fois", "bundle_column_error.copy_stacktrace": "Copy error report", "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.error.title": "Oh non !", "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.network.title": "Erreur réseau", "bundle_column_error.retry": "Réessayer", "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.body": "La page demandée est introuvable. Êtes-vous sûr que l’URL dans la barre d’adresse est correcte ?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Fermer", "bundle_modal_error.message": "Une erreur s’est produite lors du chargement de ce composant.", "bundle_modal_error.retry": "Réessayer", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "À propos", "column.blocks": "Comptes bloqués", "column.bookmarks": "Marque-pages", @@ -280,8 +285,8 @@ "home.show_announcements": "Afficher les annonces", "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.description.reblog": "Avec un compte sur Mastodon, vous pouvez booster ce message pour le partager avec vos propres abonné·e·s.", + "interaction_modal.description.reply": "Avec un compte sur Mastodon, vous pouvez répondre à ce message.", "interaction_modal.on_another_server": "Sur un autre serveur", "interaction_modal.on_this_server": "Sur ce serveur", "interaction_modal.other_server_instructions": "Copiez et collez simplement cette URL dans la barre de recherche de votre application préférée ou dans l’interface web où vous êtes connecté.", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Messages épinglés", "navigation_bar.preferences": "Préférences", "navigation_bar.public_timeline": "Fil public global", + "navigation_bar.search": "Search", "navigation_bar.security": "Sécurité", "not_signed_in_indicator.not_signed_in": "Vous devez vous connecter pour accéder à cette ressource.", "notification.admin.report": "{name} a signalé {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Personne n’a encore partagé ce message. Lorsque quelqu’un le fera, il apparaîtra ici.", "status.redraft": "Supprimer et réécrire", "status.remove_bookmark": "Retirer des marque-pages", + "status.replied_to": "Replied to {name}", "status.reply": "Répondre", "status.replyAll": "Répondre au fil", "status.report": "Signaler @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Déplier", "status.show_more_all": "Tout déplier", "status.show_original": "Afficher l’original", - "status.show_thread": "Montrer le fil", "status.translate": "Traduire", - "status.translated_from": "Traduit depuis {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Indisponible", "status.unmute_conversation": "Ne plus masquer la conversation", "status.unpin": "Retirer du profil", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index ab1f1c23d..84fe8f1c9 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -39,7 +39,7 @@ "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Folget dy", "account.hide_reblogs": "Hide boosts from @{name}", - "account.joined": "Registrearre op {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Slute", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Opnij probearje", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blokkearre brûkers", "column.bookmarks": "Blêdwizers", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Fêstsette berjochten", "navigation_bar.preferences": "Foarkarren", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this post yet. When someone does, they will show up here.", "status.redraft": "Fuortsmite en opnij opstelle", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reagearre", "status.replyAll": "Op elkenien reagearre", "status.report": "Jou @{name} oan", @@ -578,9 +585,8 @@ "status.show_more": "Mear sjen litte", "status.show_more_all": "Foar alles mear sjen litte", "status.show_original": "Show original", - "status.show_thread": "Petear sjen litte", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Net beskikber", "status.unmute_conversation": "Petear net mear negearre", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 004f1ce67..9cc62ddd0 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -39,7 +39,7 @@ "account.follows.empty": "Ní leanann an t-úsáideoir seo duine ar bith fós.", "account.follows_you": "Do do leanúint", "account.hide_reblogs": "Folaigh athphostálacha ó @{name}", - "account.joined": "Ina bhall ó {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "Tá an socrú príobháideachais don cuntas seo curtha go 'faoi ghlas'. Déanann an t-úinéir léirmheas ar cén daoine atá ceadaithe an cuntas leanúint.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Dún", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Bain triail as arís", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Cuntais choiscthe", "column.bookmarks": "Leabharmharcanna", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned posts", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Níor threisigh éinne an phostáil seo fós. Nuair a threisigh duine éigin, beidh siad le feiceáil anseo.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Díbhalbhaigh comhrá", "status.unpin": "Díphionnáil de do phróifíl", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 90efdf86b..32030374f 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Frithealaichean fo mhaorsainneachd", + "about.contact": "Fios thugainn:", + "about.domain_blocks.comment": "Adhbhar", + "about.domain_blocks.domain": "Àrainn", + "about.domain_blocks.preamble": "San fharsaingeachd, leigidh Mastodon leat susbaint o fhrithealaiche sam bith sa cho-shaoghal a shealltainn agus eadar-ghìomh a ghabhail leis na cleachdaichean uapa-san. Seo na h-easgaidhean a tha an sàs air an fhrithealaiche shònraichte seo.", + "about.domain_blocks.severity": "Donad", + "about.domain_blocks.silenced.explanation": "Chan fharsaingeachd, chan fhaic thu pròifilean agus susbaint an fhrithealaiche seo ach ma nì thu lorg no ma leanas tu air.", + "about.domain_blocks.silenced.title": "Cuingichte", + "about.domain_blocks.suspended.explanation": "Cha dèid dàta sam bith on fhrithealaiche seo a phròiseasadh, a stòradh no iomlaid agus chan urrainn do na cleachdaichean on fhrithealaiche sin conaltradh no eadar-ghnìomh a ghabhail an-seo.", + "about.domain_blocks.suspended.title": "’Na dhàil", + "about.not_available": "Cha deach am fiosrachadh seo a sholar air an fhrithealaiche seo.", + "about.powered_by": "Lìonra sòisealta sgaoilte le cumhachd {mastodon}", + "about.rules": "Riaghailtean an fhrithealaiche", "account.account_note_header": "Nòta", "account.add_or_remove_from_list": "Cuir ris no thoir air falbh o na liostaichean", "account.badges.bot": "Bot", @@ -20,16 +20,16 @@ "account.block_domain": "Bac an àrainn {domain}", "account.blocked": "’Ga bhacadh", "account.browse_more_on_origin_server": "Rùraich barrachd dheth air a’ phròifil thùsail", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Cuir d’ iarrtas leantainn dhan dàrna taobh", "account.direct": "Cuir teachdaireachd dhìreach gu @{name}", "account.disable_notifications": "Na cuir brath thugam tuilleadh nuair a chuireas @{name} post ris", "account.domain_blocked": "Chaidh an àrainn a bhacadh", "account.edit_profile": "Deasaich a’ phròifil", "account.enable_notifications": "Cuir brath thugam nuair a chuireas @{name} post ris", "account.endorse": "Brosnaich air a’ phròifil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Am post mu dheireadh {date}", + "account.featured_tags.last_status_never": "Gun phost", + "account.featured_tags.title": "Na tagaichean hais brosnaichte aig {name}", "account.follow": "Lean air", "account.followers": "Luchd-leantainn", "account.followers.empty": "Chan eil neach sam bith a’ leantainn air a’ chleachdaiche seo fhathast.", @@ -39,8 +39,8 @@ "account.follows.empty": "Chan eil an cleachdaiche seo a’ leantainn air neach sam bith fhathast.", "account.follows_you": "’Gad leantainn", "account.hide_reblogs": "Falaich na brosnachaidhean o @{name}", - "account.joined": "Air ballrachd fhaighinn {date}", - "account.languages": "Change subscribed languages", + "account.joined_short": "Joined", + "account.languages": "Atharraich fo-sgrìobhadh nan cànan", "account.link_verified_on": "Chaidh dearbhadh cò leis a tha an ceangal seo {date}", "account.locked_info": "Tha prìobhaideachd ghlaiste aig a’ chunntais seo. Nì an sealbhadair lèirmheas a làimh air cò dh’fhaodas leantainn orra.", "account.media": "Meadhanan", @@ -79,19 +79,24 @@ "audio.hide": "Falaich an fhuaim", "autosuggest_hashtag.per_week": "{count} san t-seachdain", "boost_modal.combo": "Brùth air {combo} nam b’ fheàrr leat leum a ghearradh thar seo an ath-thuras", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Dèan lethbhreac de aithris na mearachd", + "bundle_column_error.error.body": "Cha b’ urrainn dhuinn an duilleag a dh’iarr thu a reandaradh. Dh’fhaoidte gu bheil buga sa chòd againn no duilgheadas co-chòrdalachd leis a’ bhrabhsair.", + "bundle_column_error.error.title": "Ìoc!", + "bundle_column_error.network.body": "Thachair mearachd nuair a dh’fheuch sinn ris an duilleag seo a luchdadh. Dh’fhaoidte gu bheil duilgheadas sealach leis a’ cheangal agad ris an eadar-lìon no leis an fhrithealaiche seo.", + "bundle_column_error.network.title": "Mearachd lìonraidh", "bundle_column_error.retry": "Feuch ris a-rithist", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Dhachaigh", + "bundle_column_error.routing.body": "Cha do lorg sinn an duilleag a dh’iarr thu. A bheil thu cinnteach gu bheil an t-URL ann am bàr an t-seòlaidh mar bu chòir?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Dùin", "bundle_modal_error.message": "Chaidh rudeigin cearr nuair a dh’fheuch sinn ris a’ cho-phàirt seo a luchdadh.", "bundle_modal_error.retry": "Feuch ris a-rithist", - "column.about": "About", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", + "column.about": "Mu dhèidhinn", "column.blocks": "Cleachdaichean bacte", "column.bookmarks": "Comharran-lìn", "column.community": "Loidhne-ama ionadail", @@ -144,8 +149,8 @@ "confirmations.block.block_and_report": "Bac ⁊ dèan gearan", "confirmations.block.confirm": "Bac", "confirmations.block.message": "A bheil thu cinnteach gu bheil thu airson {name} a bhacadh?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "Cuir d’ iarrtas dhan dàrna taobh", + "confirmations.cancel_follow_request.message": "A bheil thu cinnteach gu bheil thu airson d’ iarrtas leantainn air {name} a chur dhan dàrna taobh?", "confirmations.delete.confirm": "Sguab às", "confirmations.delete.message": "A bheil thu cinnteach gu bheil thu airson am post seo a sguabadh às?", "confirmations.delete_list.confirm": "Sguab às", @@ -169,18 +174,18 @@ "conversation.mark_as_read": "Cuir comharra gun deach a leughadh", "conversation.open": "Seall an còmhradh", "conversation.with": "Còmhla ri {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Chaidh lethbhreac dheth a dhèanamh", + "copypaste.copy": "Dèan lethbhreac", "directory.federated": "On cho-shaoghal aithnichte", "directory.local": "O {domain} a-mhàin", "directory.new_arrivals": "Feadhainn ùra", "directory.recently_active": "Gnìomhach o chionn goirid", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "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_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "Seo na postaichean poblach as ùire o dhaoine aig a bheil cunntas air {domain}.", + "dismissable_banner.dismiss": "Leig seachad", + "dismissable_banner.explore_links": "Seo na naidheachdan air a bhithear a’ bruidhinn an-dràsta fhèin air an fhrithealaiche seo is frithealaichean eile dhen lìonra sgaoilte.", + "dismissable_banner.explore_statuses": "Tha fèill air na postaichean seo on fhrithealaiche seo is frithealaichean eile dhen lìonra sgaoilte a’ fàs air an fhrithealaich seo an-dràsta fhèin.", + "dismissable_banner.explore_tags": "Tha fèill air na tagaichean hais seo a’ fàs an-dràsta fhèin air an fhrithealaich seo is frithealaichean eile dhen lìonra sgaoilte.", + "dismissable_banner.public_timeline": "Seo na postaichean poblach as ùire o dhaoine air an fhrithealaich seo is frithealaichean eile dhen lìonra sgaoilte air a bheil am frithealaiche seo eòlach.", "embed.instructions": "Leabaich am post seo san làrach-lìn agad is tu a’ dèanamh lethbhreac dhen chòd gu h-ìosal.", "embed.preview": "Seo an coltas a bhios air:", "emoji_button.activity": "Gnìomhachd", @@ -231,22 +236,22 @@ "explore.trending_links": "Naidheachdan", "explore.trending_statuses": "Postaichean", "explore.trending_tags": "Tagaichean hais", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Chan eil an roinn-seòrsa criathraidh iom seo chaidh dhan cho-theacs san do dh’inntrig thu am post seo. Ma tha thu airson am post a chriathradh sa cho-theacs seo cuideachd, feumaidh tu a’ chriathrag a dheasachadh.", + "filter_modal.added.context_mismatch_title": "Co-theacsa neo-iomchaidh!", + "filter_modal.added.expired_explanation": "Dh’fhalbh an ùine air an roinn-seòrsa criathraidh seo agus feumaidh tu an ceann-là crìochnachaidh atharrachadh mus cuir thu an sàs i.", + "filter_modal.added.expired_title": "Dh’fhalbh an ùine air a’ chriathrag!", + "filter_modal.added.review_and_configure": "Airson an roinn-seòrsa criathraidh seo a sgrùdadh ’s a rèiteachadh, tadhail air {settings_link}.", + "filter_modal.added.review_and_configure_title": "Roghainnean na criathraige", + "filter_modal.added.settings_link": "duilleag nan roghainnean", + "filter_modal.added.short_explanation": "Chaidh am post seo a chur ris an roinn-seòrsa criathraidh seo: {title}.", + "filter_modal.added.title": "Chaidh a’ chriathrag a chur ris!", + "filter_modal.select_filter.context_mismatch": "chan eil e iomchaidh dhan cho-theacs seo", + "filter_modal.select_filter.expired": "dh’fhalbh an ùine air", + "filter_modal.select_filter.prompt_new": "Roinn-seòrsa ùr: {name}", + "filter_modal.select_filter.search": "Lorg no cruthaich", + "filter_modal.select_filter.subtitle": "Cleachd roinn-seòrsa a tha ann no cruthaich tè ùr", + "filter_modal.select_filter.title": "Criathraich am post seo", + "filter_modal.title.status": "Criathraich post", "follow_recommendations.done": "Deiseil", "follow_recommendations.heading": "Lean air daoine ma tha thu airson nam postaichean aca fhaicinn! Seo moladh no dà dhut.", "follow_recommendations.lead": "Nochdaidh na postaichean aig na daoine air a leanas tu a-rèir an ama air inbhir na dachaighe agad. Bi dàna on as urrainn dhut sgur de leantainn air daoine cuideachd uair sam bith!", @@ -254,14 +259,14 @@ "follow_request.reject": "Diùlt", "follow_requests.unlocked_explanation": "Ged nach eil an cunntas agad glaiste, tha sgioba {domain} dhen bheachd gum b’ fheàirrde thu lèirmheas a dhèanamh air na h-iarrtasan leantainn o na cunntasan seo a làimh.", "generic.saved": "Chaidh a shàbhaladh", - "getting_started.directory": "Directory", + "getting_started.directory": "Eòlaire", "getting_started.documentation": "Docamaideadh", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "’S e bathar-bog saor le bun-tùs fosgailte a th’ ann am Mastodon. Chì thu am bun-tùs agus ’s urrainn dhut cuideachadh leis no aithris a dhèanamh air duilgheadasan air {repository}.", "getting_started.heading": "Toiseach", "getting_started.invite": "Thoir cuireadh do dhaoine", - "getting_started.privacy_policy": "Privacy Policy", + "getting_started.privacy_policy": "Poileasaidh prìobhaideachd", "getting_started.security": "Roghainnean a’ chunntais", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "Mu Mhastodon", "hashtag.column_header.tag_mode.all": "agus {additional}", "hashtag.column_header.tag_mode.any": "no {additional}", "hashtag.column_header.tag_mode.none": "às aonais {additional}", @@ -278,18 +283,18 @@ "home.column_settings.show_replies": "Seall na freagairtean", "home.hide_announcements": "Falaich na brathan-fios", "home.show_announcements": "Seall na brathan-fios", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Le cunntas air Mastodon, ’s urrainn dhut am post seo a chur ris na h-annsachdan airson innse dhan ùghdar gu bheil e a’ còrdadh dhut ’s a shàbhaladh do uaireigin eile.", + "interaction_modal.description.follow": "Le cunntas air Mastodon, ’s urrainn dhut leantainn air {name} ach am faigh thu na postaichean aca air inbhir na dachaigh agad.", + "interaction_modal.description.reblog": "Le cunntas air Mastodon, ’s urrainn dhut am post seo a bhrosnachadh gus a cho-roinneadh leis an luchd-leantainn agad fhèin.", + "interaction_modal.description.reply": "Le cunntas air Mastodon, ’s urrainn dhut freagairt a chur dhan phost seo.", + "interaction_modal.on_another_server": "Air frithealaiche eile", + "interaction_modal.on_this_server": "Air an frithealaiche seo", + "interaction_modal.other_server_instructions": "Dèan lethbhreac dhen URL seo is cuir ann am bàr nan lorg e san aplacaid as fheàrr leat no san eadar-aghaidh-lìn far a bheil thu air do chlàradh a-steach.", + "interaction_modal.preamble": "Air sgàth ’s gu bheil Mastodon sgaoilte, ’s urrainn dhut cunntas a chleachdadh a tha ’ga òstadh le frithealaiche Mastodon no le ùrlar co-chòrdail eile mur eil cunntas agad air an fhear seo.", + "interaction_modal.title.favourite": "Cuir am post aig {name} ris na h-annsachdan", + "interaction_modal.title.follow": "Lean air {name}", + "interaction_modal.title.reblog": "Brosnaich am post aig {name}", + "interaction_modal.title.reply": "Freagair dhan phost aig {name}", "intervals.full.days": "{number, plural, one {# latha} two {# latha} few {# làithean} other {# latha}}", "intervals.full.hours": "{number, plural, one {# uair a thìde} two {# uair a thìde} few {# uairean a thìde} other {# uair a thìde}}", "intervals.full.minutes": "{number, plural, one {# mhionaid} two {# mhionaid} few {# mionaidean} other {# mionaid}}", @@ -355,8 +360,8 @@ "mute_modal.duration": "Faide", "mute_modal.hide_notifications": "A bheil thu airson na brathan fhalach on chleachdaiche seo?", "mute_modal.indefinite": "Gun chrìoch", - "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", + "navigation_bar.about": "Mu dhèidhinn", + "navigation_bar.apps": "Faigh an aplacaid", "navigation_bar.blocks": "Cleachdaichean bacte", "navigation_bar.bookmarks": "Comharran-lìn", "navigation_bar.community_timeline": "Loidhne-ama ionadail", @@ -370,7 +375,7 @@ "navigation_bar.filters": "Faclan mùchte", "navigation_bar.follow_requests": "Iarrtasan leantainn", "navigation_bar.follows_and_followers": "Dàimhean leantainn", - "navigation_bar.info": "About", + "navigation_bar.info": "Mu dhèidhinn", "navigation_bar.keyboard_shortcuts": "Grad-iuchraichean", "navigation_bar.lists": "Liostaichean", "navigation_bar.logout": "Clàraich a-mach", @@ -379,8 +384,9 @@ "navigation_bar.pins": "Postaichean prìnichte", "navigation_bar.preferences": "Roghainnean", "navigation_bar.public_timeline": "Loidhne-ama cho-naisgte", + "navigation_bar.search": "Search", "navigation_bar.security": "Tèarainteachd", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Feumaidh tu clàradh a-steach mus fhaigh thu cothrom air a’ ghoireas seo.", "notification.admin.report": "Rinn {name} mu {target}", "notification.admin.sign_up": "Chlàraich {name}", "notification.favourite": "Is annsa le {name} am post agad", @@ -448,8 +454,8 @@ "privacy.public.short": "Poblach", "privacy.unlisted.long": "Chì a h-uile duine e ach cha nochd e ann an gleusan rùrachaidh", "privacy.unlisted.short": "Falaichte o liostaichean", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "An t-ùrachadh mu dheireadh {date}", + "privacy_policy.title": "Poileasaidh prìobhaideachd", "refresh": "Ath-nuadhaich", "regeneration_indicator.label": "’Ga luchdadh…", "regeneration_indicator.sublabel": "Tha inbhir na dachaigh agad ’ga ullachadh!", @@ -520,17 +526,17 @@ "search_results.nothing_found": "Cha do lorg sinn dad dha na h-abairtean-luirg seo", "search_results.statuses": "Postaichean", "search_results.statuses_fts_disabled": "Chan eil lorg phostaichean a-rèir an susbaint an comas air an fhrithealaiche Mastodon seo.", - "search_results.title": "Search for {q}", + "search_results.title": "Lorg {q}", "search_results.total": "{count, number} {count, plural, one {toradh} two {thoradh} few {toraidhean} other {toradh}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", - "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "server_banner.about_active_users": "Daoine a chleachd am frithealaiche seo rè an 30 latha mu dheireadh (Cleachdaichean gnìomhach gach mìos)", + "server_banner.active_users": "cleachdaichean gnìomhach", + "server_banner.administered_by": "Rianachd le:", + "server_banner.introduction": "Tha {domain} am measg an lìonraidh shòisealta sgaoilte le cumhachd {mastodon}.", + "server_banner.learn_more": "Barrachd fiosrachaidh", + "server_banner.server_stats": "Stadastaireachd an fhrithealaiche:", + "sign_in_banner.create_account": "Cruthaich cunntas", + "sign_in_banner.sign_in": "Clàraich a-steach", + "sign_in_banner.text": "Clàraich a-steach a leantainn air pròifilean no tagaichean hais, a’ cur postaichean ris na h-annsachdan ’s ’gan co-roinneadh is freagairt dhaibh no gabh gnìomh le cunntas o fhrithealaiche eile.", "status.admin_account": "Fosgail eadar-aghaidh na maorsainneachd dha @{name}", "status.admin_status": "Fosgail am post seo ann an eadar-aghaidh na maorsainneachd", "status.block": "Bac @{name}", @@ -546,7 +552,7 @@ "status.edited_x_times": "Chaidh a dheasachadh {count, plural, one {{counter} turas} two {{counter} thuras} few {{counter} tursan} other {{counter} turas}}", "status.embed": "Leabaich", "status.favourite": "Cuir ris na h-annsachdan", - "status.filter": "Filter this post", + "status.filter": "Criathraich am post seo", "status.filtered": "Criathraichte", "status.hide": "Falaich am post", "status.history.created": "Chruthaich {name} {date} e", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Chan deach am post seo a bhrosnachadh le duine sam bith fhathast. Nuair a bhrosnaicheas cuideigin e, nochdaidh iad an-seo.", "status.redraft": "Sguab às ⁊ dèan dreachd ùr", "status.remove_bookmark": "Thoir an comharra-lìn air falbh", + "status.replied_to": "Replied to {name}", "status.reply": "Freagair", "status.replyAll": "Freagair dhan t-snàithlean", "status.report": "Dèan gearan mu @{name}", @@ -577,16 +584,15 @@ "status.show_less_all": "Seall nas lugha dhen a h-uile", "status.show_more": "Seall barrachd dheth", "status.show_more_all": "Seall barrachd dhen a h-uile", - "status.show_original": "Show original", - "status.show_thread": "Seall an snàithlean", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.show_original": "Seall an tionndadh tùsail", + "status.translate": "Eadar-theangaich", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Chan eil seo ri fhaighinn", "status.unmute_conversation": "Dì-mhùch an còmhradh", "status.unpin": "Dì-phrìnich on phròifil", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Cha nochd ach na postaichean sna cànanan a thagh thu air loidhnichean-ama na dachaigh ’s nan liostaichean às dèidh an atharrachaidh seo. Na tagh gin ma tha thu airson na postaichean uile fhaighinn ge b’ e dè an cànan.", + "subscribed_languages.save": "Sàbhail na h-atharraichean", + "subscribed_languages.target": "Atharraich fo-sgrìobhadh nan cànan airson {target}", "suggestions.dismiss": "Leig seachad am moladh", "suggestions.header": "Dh’fhaoidte gu bheil ùidh agad ann an…", "tabs_bar.federated_timeline": "Co-naisgte", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 649ed031e..5a97a82d1 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -39,7 +39,7 @@ "account.follows.empty": "Esta usuaria aínda non segue a ninguén.", "account.follows_you": "Séguete", "account.hide_reblogs": "Agochar repeticións de @{name}", - "account.joined": "Uníuse {date}", + "account.joined_short": "Joined", "account.languages": "Modificar os idiomas subscritos", "account.link_verified_on": "A propiedade desta ligazón foi verificada o {date}", "account.locked_info": "Esta é unha conta privada. A propietaria revisa de xeito manual quen pode seguila.", @@ -79,18 +79,23 @@ "audio.hide": "Agochar audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Preme {combo} para ignorar isto na seguinte vez", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Copiar informe do erro", + "bundle_column_error.error.body": "Non se puido mostrar a páxina solicitada. Podería deberse a un problema no código, ou incompatiblidade co navegador.", + "bundle_column_error.error.title": "Vaites!", + "bundle_column_error.network.body": "Algo fallou ao intentar cargar esta páxina. Podería ser un problema temporal da conexión a internet ao intentar comunicarte este servidor.", + "bundle_column_error.network.title": "Fallo na rede", "bundle_column_error.retry": "Téntao de novo", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Volver ao Inicio", + "bundle_column_error.routing.body": "Non atopamos a páxina solicitada. Tes a certeza de que o URL na barra de enderezos é correcto?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Pechar", "bundle_modal_error.message": "Ocorreu un erro ó cargar este compoñente.", "bundle_modal_error.retry": "Téntao de novo", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Acerca de", "column.blocks": "Usuarias bloqueadas", "column.bookmarks": "Marcadores", @@ -221,7 +226,7 @@ "empty_column.public": "Nada por aquí! Escribe algo de xeito público, ou segue de xeito manual usuarias doutros servidores para ir enchéndoo", "error.unexpected_crash.explanation": "Debido a un erro no noso código ou a unha compatilidade co teu navegador, esta páxina non pode ser amosada correctamente.", "error.unexpected_crash.explanation_addons": "Non se puido mostrar correctamente a páxina. Habitualmente este erro está causado por algún engadido do navegador ou ferramentas de tradución automática.", - "error.unexpected_crash.next_steps": "Tenta actualizar a páxina. Se esto non axuda podes tamén empregar Mastodon noutro navegador ou aplicación nativa.", + "error.unexpected_crash.next_steps": "Tenta actualizar a páxina. Se isto non axuda podes tamén empregar Mastodon noutro navegador ou aplicación nativa.", "error.unexpected_crash.next_steps_addons": "Intenta desactivalas e actualiza a páxina. Se isto non funciona, podes seguir usando Mastodon nun navegador diferente ou aplicación nativa.", "errors.unexpected_crash.copy_stacktrace": "Copiar trazas (stacktrace) ó portapapeis", "errors.unexpected_crash.report_issue": "Informar sobre un problema", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Publicacións fixadas", "navigation_bar.preferences": "Preferencias", "navigation_bar.public_timeline": "Cronoloxía federada", + "navigation_bar.search": "Search", "navigation_bar.security": "Seguranza", "not_signed_in_indicator.not_signed_in": "Debes acceder para ver este recurso.", "notification.admin.report": "{name} denunciou a {target}", @@ -497,8 +503,8 @@ "report.submit": "Enviar", "report.target": "Denunciar a {target}", "report.thanks.take_action": "Aquí tes unhas opcións para controlar o que ves en Mastodon:", - "report.thanks.take_action_actionable": "Mentras revisamos esto, podes tomar accións contra @{name}:", - "report.thanks.title": "Non queres ver esto?", + "report.thanks.take_action_actionable": "Mentras revisamos isto, podes tomar accións contra @{name}:", + "report.thanks.title": "Non queres ver isto?", "report.thanks.title_actionable": "Grazas pola denuncia, investigarémola.", "report.unfollow": "Non seguir a @{name}", "report.unfollow_explanation": "Estás a seguir esta conta. Deixar de ver as súas publicacións na túa cronoloxía, non seguila.", @@ -517,7 +523,7 @@ "search_results.accounts": "Persoas", "search_results.all": "Todo", "search_results.hashtags": "Cancelos", - "search_results.nothing_found": "Non atopamos nada con estos termos de busca", + "search_results.nothing_found": "Non atopamos nada con estes termos de busca", "search_results.statuses": "Publicacións", "search_results.statuses_fts_disabled": "Procurar publicacións polo seu contido non está activado neste servidor do Mastodon.", "search_results.title": "Resultados para {q}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Aínda ninguén promoveu esta publicación. Cando alguén o faga, amosarase aquí.", "status.redraft": "Eliminar e reescribir", "status.remove_bookmark": "Eliminar marcador", + "status.replied_to": "Replied to {name}", "status.reply": "Responder", "status.replyAll": "Responder ao tema", "status.report": "Denunciar @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Amosar máis", "status.show_more_all": "Amosar máis para todos", "status.show_original": "Mostrar o orixinal", - "status.show_thread": "Amosar fío", "status.translate": "Traducir", - "status.translated_from": "Traducido do {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Non dispoñíbel", "status.unmute_conversation": "Deixar de silenciar conversa", "status.unpin": "Desafixar do perfil", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 1d360abc4..59a3462ab 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -39,7 +39,7 @@ "account.follows.empty": "משתמש זה לא עוקב אחר אף אחד עדיין.", "account.follows_you": "במעקב אחריך", "account.hide_reblogs": "להסתיר הידהודים מאת @{name}", - "account.joined": "הצטרפו ב{date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "בעלות על הקישור הזה נבדקה לאחרונה ב{date}", "account.locked_info": "מצב הפרטיות של החשבון הנוכחי הוגדר כנעול. בעל החשבון קובע באופן פרטני מי יכול לעקוב אחריו.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "לסגור", "bundle_modal_error.message": "משהו השתבש בעת טעינת הרכיב הזה.", "bundle_modal_error.retry": "לנסות שוב", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "משתמשים חסומים", "column.bookmarks": "סימניות", @@ -379,6 +384,7 @@ "navigation_bar.pins": "פוסטים נעוצים", "navigation_bar.preferences": "העדפות", "navigation_bar.public_timeline": "פיד כללי (כל השרתים)", + "navigation_bar.search": "Search", "navigation_bar.security": "אבטחה", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} דיווח.ה על {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "עוד לא הידהדו את הפוסט הזה. כאשר זה יקרה, ההדהודים יופיעו כאן.", "status.redraft": "מחיקה ועריכה מחדש", "status.remove_bookmark": "הסרת סימניה", + "status.replied_to": "Replied to {name}", "status.reply": "תגובה", "status.replyAll": "תגובה לפתיל", "status.report": "דיווח על @{name}", @@ -578,9 +585,8 @@ "status.show_more": "הראה יותר", "status.show_more_all": "להציג יותר מהכל", "status.show_original": "Show original", - "status.show_thread": "הצג כחלק מפתיל", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "לא זמין", "status.unmute_conversation": "הסרת השתקת שיחה", "status.unpin": "לשחרר מקיבוע באודות", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index 4592d65ff..591cff025 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -39,7 +39,7 @@ "account.follows.empty": "यह यूज़र् अभी तक किसी को फॉलो नहीं करता है।", "account.follows_you": "आपको फॉलो करता है", "account.hide_reblogs": "@{name} के बूस्ट छुपाएं", - "account.joined": "शामिल हुये {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "इस लिंक का स्वामित्व {date} को चेक किया गया था", "account.locked_info": "यह खाता गोपनीयता स्थिति लॉक करने के लिए सेट है। मालिक मैन्युअल रूप से समीक्षा करता है कि कौन उनको फॉलो कर सकता है।", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "बंद", "bundle_modal_error.message": "इस कॉम्पोनेन्ट को लोड करते वक्त कुछ गलत हो गया", "bundle_modal_error.retry": "दुबारा कोशिश करें", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "ब्लॉक्ड यूज़र्स", "column.bookmarks": "पुस्तकचिह्न:", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "जवाब", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "और दिखाएँ", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "अनुपलब्ध", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index 8bcad0408..252d08286 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -39,7 +39,7 @@ "account.follows.empty": "Korisnik/ca još ne prati nikoga.", "account.follows_you": "Prati te", "account.hide_reblogs": "Sakrij boostove od @{name}", - "account.joined": "Pridružio se {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Vlasništvo ove poveznice provjereno je {date}", "account.locked_info": "Status privatnosti ovog računa postavljen je na zaključano. Vlasnik ručno pregledava tko ih može pratiti.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Zatvori", "bundle_modal_error.message": "Nešto je pošlo po zlu tijekom učitavanja ove komponente.", "bundle_modal_error.retry": "Pokušajte ponovno", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blokirani korisnici", "column.bookmarks": "Knjižne oznake", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Prikvačeni tootovi", "navigation_bar.preferences": "Postavke", "navigation_bar.public_timeline": "Federalna vremenska crta", + "navigation_bar.search": "Search", "navigation_bar.security": "Sigurnost", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Nitko još nije boostao ovaj toot. Kada netko to učini, ovdje će biti prikazani.", "status.redraft": "Izbriši i ponovno uredi", "status.remove_bookmark": "Ukloni knjižnu oznaku", + "status.replied_to": "Replied to {name}", "status.reply": "Odgovori", "status.replyAll": "Odgovori na niz", "status.report": "Prijavi @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Pokaži više", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Prikaži nit", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Nije dostupno", "status.unmute_conversation": "Poništi utišavanje razgovora", "status.unpin": "Otkvači s profila", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index dcf2044ed..a3f391bb6 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -39,7 +39,7 @@ "account.follows.empty": "Ez a felhasználó még senkit sem követ.", "account.follows_you": "Követ téged", "account.hide_reblogs": "@{name} megtolásainak elrejtése", - "account.joined": "Csatlakozott {date}", + "account.joined_short": "Joined", "account.languages": "Feliratkozott nyelvek módosítása", "account.link_verified_on": "A linket eredetiségét ebben az időpontban ellenőriztük: {date}", "account.locked_info": "Ennek a fióknak zárolt a láthatósága. A tulajdonos kézzel engedélyezi, hogy ki követheti őt.", @@ -79,18 +79,23 @@ "audio.hide": "Hang elrejtése", "autosuggest_hashtag.per_week": "{count} hetente", "boost_modal.combo": "Hogy átugord ezt következő alkalommal, használd {combo}", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Hibajelentés másolása", + "bundle_column_error.error.body": "A kért lap nem jeleníthető meg. Ez lehet, hogy kódhiba, vagy böngészőkompatibitási hiba.", + "bundle_column_error.error.title": "Jaj ne!", + "bundle_column_error.network.body": "Hiba történt az oldal betöltése során. Ezt az internetkapcsolat ideiglenes problémája vagy kiszolgálóhiba is okozhatja.", + "bundle_column_error.network.title": "Hálózati hiba", "bundle_column_error.retry": "Próbáld újra", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Vissza a kezdőlapra", + "bundle_column_error.routing.body": "A kért oldal nem található. Biztos, hogy a címsávban lévő webcím helyes?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Bezárás", "bundle_modal_error.message": "Hiba történt a komponens betöltésekor.", "bundle_modal_error.retry": "Próbáld újra", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Névjegy", "column.blocks": "Letiltott felhasználók", "column.bookmarks": "Könyvjelzők", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Kitűzött bejegyzések", "navigation_bar.preferences": "Beállítások", "navigation_bar.public_timeline": "Föderációs idővonal", + "navigation_bar.search": "Search", "navigation_bar.security": "Biztonság", "not_signed_in_indicator.not_signed_in": "Az erőforrás eléréséhez be kell jelentkezned.", "notification.admin.report": "{name} jelentette: {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Senki sem tolta még meg ezt a bejegyzést. Ha valaki megteszi, itt fog megjelenni.", "status.redraft": "Törlés és újraírás", "status.remove_bookmark": "Könyvjelző eltávolítása", + "status.replied_to": "Replied to {name}", "status.reply": "Válasz", "status.replyAll": "Válasz a beszélgetésre", "status.report": "@{name} bejelentése", @@ -578,9 +585,8 @@ "status.show_more": "Többet", "status.show_more_all": "Többet mindenhol", "status.show_original": "Eredeti mutatása", - "status.show_thread": "Szál mutatása", "status.translate": "Fordítás", - "status.translated_from": "{lang} nyelvből fordítva", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Nem érhető el", "status.unmute_conversation": "Beszélgetés némításának feloldása", "status.unpin": "Kitűzés eltávolítása a profilodról", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index 5eae2c368..cd68f74d2 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -39,7 +39,7 @@ "account.follows.empty": "Այս օգտատէրը դեռ ոչ մէկի չի հետեւում։", "account.follows_you": "Հետեւում է քեզ", "account.hide_reblogs": "Թաքցնել @{name}֊ի տարածածները", - "account.joined": "Միացել է {date}-ից", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Սոյն յղման տիրապետումը ստուգուած է՝ {date}֊ին", "account.locked_info": "Սոյն հաշուի գաղտնիութեան մակարդակը նշուած է որպէս՝ փակ։ Հաշուի տէրն ընտրում է, թէ ով կարող է հետեւել իրեն։", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Փակել", "bundle_modal_error.message": "Այս բաղադրիչը բեռնելու ընթացքում ինչ֊որ բան խափանուեց։", "bundle_modal_error.retry": "Կրկին փորձել", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Արգելափակուած օգտատէրեր", "column.bookmarks": "Էջանիշեր", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Ամրացուած գրառումներ", "navigation_bar.preferences": "Նախապատուութիւններ", "navigation_bar.public_timeline": "Դաշնային հոսք", + "navigation_bar.search": "Search", "navigation_bar.security": "Անվտանգութիւն", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Այս գրառումը ոչ մէկ դեռ չի տարածել։ Տարածողները կերեւան այստեղ, երբ տարածեն։", "status.redraft": "Ջնջել եւ վերակազմել", "status.remove_bookmark": "Հեռացնել էջանիշերից", + "status.replied_to": "Replied to {name}", "status.reply": "Պատասխանել", "status.replyAll": "Պատասխանել շղթային", "status.report": "Բողոքել @{name}֊ից", @@ -578,9 +585,8 @@ "status.show_more": "Աւելին", "status.show_more_all": "Ցուցադրել բոլոր նախազգուշացնումները", "status.show_original": "Show original", - "status.show_thread": "Բացել շղթան", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Անհասանելի", "status.unmute_conversation": "Ապալռեցնել խօսակցութիւնը", "status.unpin": "Հանել անձնական էջից", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index fd5aa3ed4..fb86fda37 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -39,7 +39,7 @@ "account.follows.empty": "Pengguna ini belum mengikuti siapapun.", "account.follows_you": "Mengikuti anda", "account.hide_reblogs": "Sembunyikan boosts dari @{name}", - "account.joined": "Bergabung {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Kepemilikan tautan ini telah dicek pada {date}", "account.locked_info": "Status privasi akun ini disetel untuk dikunci. Pemilik secara manual meninjau siapa yang dapat mengikutinya.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Tutup", "bundle_modal_error.message": "Kesalahan terjadi saat memuat komponen ini.", "bundle_modal_error.retry": "Coba lagi", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Pengguna yang diblokir", "column.bookmarks": "Markah", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Toot tersemat", "navigation_bar.preferences": "Pengaturan", "navigation_bar.public_timeline": "Linimasa gabungan", + "navigation_bar.search": "Search", "navigation_bar.security": "Keamanan", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} melaporkan {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Belum ada yang mem-boost toot ini. Ketika seseorang melakukannya, maka akan muncul di sini.", "status.redraft": "Hapus & redraf", "status.remove_bookmark": "Hapus markah", + "status.replied_to": "Replied to {name}", "status.reply": "Balas", "status.replyAll": "Balas ke semua", "status.report": "Laporkan @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Tampilkan semua", "status.show_more_all": "Tampilkan lebih banyak", "status.show_original": "Show original", - "status.show_thread": "Tampilkan utas", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Tak tersedia", "status.unmute_conversation": "Bunyikan percakapan", "status.unpin": "Hapus sematan dari profil", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index e2d0ac35a..0d6e6365b 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -39,7 +39,7 @@ "account.follows.empty": "Ca uzanto ne sequa irgu til nun.", "account.follows_you": "Sequas tu", "account.hide_reblogs": "Celez busti de @{name}", - "account.joined": "Juntas ye {date}", + "account.joined_short": "Joined", "account.languages": "Chanjez abonita lingui", "account.link_verified_on": "Proprieteso di ca ligilo kontrolesis ye {date}", "account.locked_info": "La privatesostaco di ca konto fixesas quale lokata. Proprietato manue kontrolas personi qui povas sequar.", @@ -79,18 +79,23 @@ "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", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "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!", + "bundle_column_error.network.body": "Havas eroro kande probar montrar ca pagino. Forsan ol esas tempala problemo kun vua retkonekteso o ca servilo.", + "bundle_column_error.network.title": "Reteroro", "bundle_column_error.retry": "Probez itere", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", - "bundle_column_error.routing.title": "404", + "bundle_column_error.return": "Irez a hemo", + "bundle_column_error.routing.body": "Demandita pagino ne povas trovesar. Ka vu certe ke URL en situobuxo esar korekta?", + "bundle_column_error.routing.title": "Eroro di 404", "bundle_modal_error.close": "Klozez", "bundle_modal_error.message": "Nulo ne functionis dum chargar ca kompozaj.", "bundle_modal_error.retry": "Probez itere", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Pri co", "column.blocks": "Blokusita uzeri", "column.bookmarks": "Libromarki", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Preferi", "navigation_bar.public_timeline": "Federata tempolineo", + "navigation_bar.search": "Search", "navigation_bar.security": "Sekureso", "not_signed_in_indicator.not_signed_in": "Vu mustas enirar por acesar ca moyeno.", "notification.admin.report": "{name} raportizis {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Efacez e riskisigez", "status.remove_bookmark": "Efacez libromarko", + "status.replied_to": "Replied to {name}", "status.reply": "Respondar", "status.replyAll": "Respondar a filo", "status.report": "Denuncar @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Montrar plue", "status.show_more_all": "Montrez pluse por omno", "status.show_original": "Montrez originalo", - "status.show_thread": "Montrez postaro", "status.translate": "Tradukez", - "status.translated_from": "Tradukesis de {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Nedisplonebla", "status.unmute_conversation": "Desilencigez konverso", "status.unpin": "Depinglagez de profilo", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index e5fead8e1..e37c18b00 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -27,9 +27,9 @@ "account.edit_profile": "Breyta notandasniði", "account.enable_notifications": "Láta mig vita þegar @{name} sendir inn", "account.endorse": "Birta á notandasniði", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Síðasta færsla þann {date}", + "account.featured_tags.last_status_never": "Engar færslur", + "account.featured_tags.title": "Myllumerki hjá {name} með aukið vægi", "account.follow": "Fylgjast með", "account.followers": "Fylgjendur", "account.followers.empty": "Ennþá fylgist enginn með þessum notanda.", @@ -39,7 +39,7 @@ "account.follows.empty": "Þessi notandi fylgist ennþá ekki með neinum.", "account.follows_you": "Fylgir þér", "account.hide_reblogs": "Fela endurbirtingar fyrir @{name}", - "account.joined": "Gerðist þátttakandi {date}", + "account.joined_short": "Joined", "account.languages": "Breyta tungumálum í áskrift", "account.link_verified_on": "Eignarhald á þessum tengli var athugað þann {date}", "account.locked_info": "Staða gagnaleyndar á þessum aðgangi er stillt á læsingu. Eigandinn yfirfer handvirkt hverjir geti fylgst með honum.", @@ -79,18 +79,23 @@ "audio.hide": "Fela hljóð", "autosuggest_hashtag.per_week": "{count} á viku", "boost_modal.combo": "Þú getur ýtt á {combo} til að sleppa þessu næst", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", - "bundle_column_error.retry": "Reyndu aftur", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.copy_stacktrace": "Afrita villuskýrslu", + "bundle_column_error.error.body": "Umbeðna síðau var ekki hægt að myndgera. Það gæti verið vegna villu í kóðanum okkar eða vandamáls með samhæfni vafra.", + "bundle_column_error.error.title": "Ó-nei!", + "bundle_column_error.network.body": "Villa kom upp við að hlaða inn þessari síðu. Þetta gæti stafað af tímabundnum vandamálum með internettenginguna þína eða þennan netþjón.", + "bundle_column_error.network.title": "Villa í netkerfi", + "bundle_column_error.retry": "Reyna aftur", + "bundle_column_error.return": "Fara til baka á upphafssíðu", + "bundle_column_error.routing.body": "Umbeðin síða fannst ekki. Ertu viss um að slóðin í vistfangastikunni sé rétt?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Loka", "bundle_modal_error.message": "Eitthvað fór úrskeiðis við að hlaða inn þessari einingu.", "bundle_modal_error.retry": "Reyndu aftur", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Um hugbúnaðinn", "column.blocks": "Útilokaðir notendur", "column.bookmarks": "Bókamerki", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Festar færslur", "navigation_bar.preferences": "Kjörstillingar", "navigation_bar.public_timeline": "Sameiginleg tímalína", + "navigation_bar.search": "Search", "navigation_bar.security": "Öryggi", "not_signed_in_indicator.not_signed_in": "Þú þarft að skrá þig inn til að nota þetta tilfang.", "notification.admin.report": "{name} kærði {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Enginn hefur ennþá endurbirt þessa færslu. Þegar einhver gerir það, mun það birtast hér.", "status.redraft": "Eyða og endurvinna drög", "status.remove_bookmark": "Fjarlægja bókamerki", + "status.replied_to": "Replied to {name}", "status.reply": "Svara", "status.replyAll": "Svara þræði", "status.report": "Kæra @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Sýna meira", "status.show_more_all": "Sýna meira fyrir allt", "status.show_original": "Sýna upprunalega", - "status.show_thread": "Birta þráð", "status.translate": "Þýða", - "status.translated_from": "Þýtt úr {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Ekki tiltækt", "status.unmute_conversation": "Hætta að þagga niður í samtali", "status.unpin": "Losa af notandasniði", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 8651746e7..52ac4693d 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -39,7 +39,7 @@ "account.follows.empty": "Questo utente non segue nessuno ancora.", "account.follows_you": "Ti segue", "account.hide_reblogs": "Nascondi condivisioni da @{name}", - "account.joined": "Su questa istanza dal {date}", + "account.joined_short": "Joined", "account.languages": "Cambia le lingue di cui ricevere i post", "account.link_verified_on": "La proprietà di questo link è stata controllata il {date}", "account.locked_info": "Questo è un account privato. Il proprietario approva manualmente chi può seguirlo.", @@ -79,18 +79,23 @@ "audio.hide": "Nascondi audio", "autosuggest_hashtag.per_week": "{count} per settimana", "boost_modal.combo": "Puoi premere {combo} per saltare questo passaggio la prossima volta", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.copy_stacktrace": "Copia rapporto di errore", + "bundle_column_error.error.body": "La pagina richiesta non può essere visualizzata. Potrebbe essere a causa di un bug nel nostro codice o di un problema di compatibilità del browser.", "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.network.body": "C'è stato un errore durante il caricamento di questa pagina. Potrebbe essere dovuto a un problema temporaneo con la tua connessione internet o a questo server.", + "bundle_column_error.network.title": "Errore di rete", "bundle_column_error.retry": "Riprova", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Torna alla pagina home", + "bundle_column_error.routing.body": "La pagina richiesta non è stata trovata. Sei sicuro che l'URL nella barra degli indirizzi è corretta?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Chiudi", "bundle_modal_error.message": "Qualcosa è andato storto durante il caricamento di questo componente.", "bundle_modal_error.retry": "Riprova", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Informazioni su", "column.blocks": "Utenti bloccati", "column.bookmarks": "Segnalibri", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Post fissati in cima", "navigation_bar.preferences": "Impostazioni", "navigation_bar.public_timeline": "Timeline federata", + "navigation_bar.search": "Search", "navigation_bar.security": "Sicurezza", "not_signed_in_indicator.not_signed_in": "Devi effetturare il login per accedere a questa funzione.", "notification.admin.report": "{name} ha segnalato {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Nessuno ha ancora condiviso questo post. Quando qualcuno lo farà, comparirà qui.", "status.redraft": "Cancella e riscrivi", "status.remove_bookmark": "Elimina segnalibro", + "status.replied_to": "Replied to {name}", "status.reply": "Rispondi", "status.replyAll": "Rispondi alla conversazione", "status.report": "Segnala @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Mostra di più", "status.show_more_all": "Mostra di più per tutti", "status.show_original": "Mostra originale", - "status.show_thread": "Mostra conversazione", "status.translate": "Traduci", - "status.translated_from": "Tradotto da {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Non disponibile", "status.unmute_conversation": "Annulla silenzia conversazione", "status.unpin": "Non fissare in cima al profilo", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index e85d743d3..8af35c7ac 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -39,7 +39,7 @@ "account.follows.empty": "まだ誰もフォローしていません。", "account.follows_you": "フォローされています", "account.hide_reblogs": "@{name}さんからのブーストを非表示", - "account.joined": "{date} に登録", + "account.joined_short": "Joined", "account.languages": "購読言語の変更", "account.link_verified_on": "このリンクの所有権は{date}に確認されました", "account.locked_info": "このアカウントは承認制アカウントです。相手が承認するまでフォローは完了しません。", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "閉じる", "bundle_modal_error.message": "コンポーネントの読み込み中に問題が発生しました。", "bundle_modal_error.retry": "再試行", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "ブロックしたユーザー", "column.bookmarks": "ブックマーク", @@ -379,6 +384,7 @@ "navigation_bar.pins": "固定した投稿", "navigation_bar.preferences": "ユーザー設定", "navigation_bar.public_timeline": "連合タイムライン", + "navigation_bar.search": "Search", "navigation_bar.security": "セキュリティ", "not_signed_in_indicator.not_signed_in": "この機能を使うにはログインする必要があります。", "notification.admin.report": "{name}さんが{target}さんを通報しました", @@ -567,6 +573,7 @@ "status.reblogs.empty": "まだ誰もブーストしていません。ブーストされるとここに表示されます。", "status.redraft": "削除して下書きに戻す", "status.remove_bookmark": "ブックマークを削除", + "status.replied_to": "Replied to {name}", "status.reply": "返信", "status.replyAll": "全員に返信", "status.report": "@{name}さんを通報", @@ -578,9 +585,8 @@ "status.show_more": "もっと見る", "status.show_more_all": "全て見る", "status.show_original": "原文を表示", - "status.show_thread": "スレッドを表示", "status.translate": "翻訳", - "status.translated_from": "{lang}からの翻訳", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "利用できません", "status.unmute_conversation": "会話のミュートを解除", "status.unpin": "プロフィールへの固定を解除", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index a45a27b02..be6709e0b 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -39,7 +39,7 @@ "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "მოგყვებათ", "account.hide_reblogs": "დაიმალოს ბუსტები @{name}-სგან", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "დახურვა", "bundle_modal_error.message": "ამ კომპონენტის ჩატვირთვისას რაღაც აირია.", "bundle_modal_error.retry": "სცადეთ კიდევ ერთხელ", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "დაბლოკილი მომხმარებლები", "column.bookmarks": "Bookmarks", @@ -379,6 +384,7 @@ "navigation_bar.pins": "აპინული ტუტები", "navigation_bar.preferences": "პრეფერენსიები", "navigation_bar.public_timeline": "ფედერალური თაიმლაინი", + "navigation_bar.search": "Search", "navigation_bar.security": "უსაფრთხოება", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "გაუქმდეს და გადანაწილდეს", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "პასუხი", "status.replyAll": "უპასუხე თემას", "status.report": "დაარეპორტე @{name}", @@ -578,9 +585,8 @@ "status.show_more": "აჩვენე მეტი", "status.show_more_all": "აჩვენე მეტი ყველაზე", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "საუბარზე გაჩუმების მოშორება", "status.unpin": "პროფილიდან პინის მოშორება", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 781095c9f..d693216af 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -39,7 +39,7 @@ "account.follows.empty": "Ar tura, amseqdac-agi ur yeṭṭafaṛ yiwen.", "account.follows_you": "Yeṭṭafaṛ-ik", "account.hide_reblogs": "Ffer ayen i ibeṭṭu @{name}", - "account.joined": "Yerna-d {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Taɣara n useɣwen-a tettwasenqed ass n {date}", "account.locked_info": "Amiḍan-agi uslig isekweṛ. D bab-is kan i izemren ad yeǧǧ, s ufus-is, win ara t-iḍefṛen.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Mdel", "bundle_modal_error.message": "Tella-d kra n tuccḍa mi d-yettali ugbur-agi.", "bundle_modal_error.retry": "Ɛreḍ tikelt-nniḍen", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Γef", "column.blocks": "Imiḍanen yettusḥebsen", "column.bookmarks": "Ticraḍ", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Tijewwiqin yettwasentḍen", "navigation_bar.preferences": "Imenyafen", "navigation_bar.public_timeline": "Tasuddemt tazayezt tamatut", + "navigation_bar.search": "Search", "navigation_bar.security": "Taɣellist", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Ula yiwen ur yebḍi tajewwiqt-agi ar tura. Ticki yebḍa-tt yiwen, ad d-iban da.", "status.redraft": "Kkes tɛiwdeḍ tira", "status.remove_bookmark": "Kkes tacreḍt", + "status.replied_to": "Replied to {name}", "status.reply": "Err", "status.replyAll": "Err i lxiḍ", "status.report": "Cetki ɣef @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Ssken-d ugar", "status.show_more_all": "Ẓerr ugar lebda", "status.show_original": "Show original", - "status.show_thread": "Ssken-d lxiḍ", "status.translate": "Suqel", - "status.translated_from": "Yettwasuqel seg {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Ulac-it", "status.unmute_conversation": "Kkes asgugem n udiwenni", "status.unpin": "Kkes asenteḍ seg umaɣnu", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index 790b6adb2..157ca66da 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -39,7 +39,7 @@ "account.follows.empty": "Ешкімге жазылмапты.", "account.follows_you": "Сізге жазылыпты", "account.hide_reblogs": "@{name} атты қолданушының әрекеттерін жасыру", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Сілтеме меншігі расталған күн {date}", "account.locked_info": "Бұл қолданушы өзі туралы мәліметтерді жасырған. Тек жазылғандар ғана көре алады.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Жабу", "bundle_modal_error.message": "Бұл компонентті жүктеген кезде бір қате пайда болды.", "bundle_modal_error.retry": "Қайтадан көріңіз", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Бұғатталғандар", "column.bookmarks": "Бетбелгілер", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Жабыстырылғандар", "navigation_bar.preferences": "Басымдықтар", "navigation_bar.public_timeline": "Жаһандық желі", + "navigation_bar.search": "Search", "navigation_bar.security": "Қауіпсіздік", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Бұл жазбаны әлі ешкім бөліспеді. Біреу бөліскен кезде осында көрінеді.", "status.redraft": "Өшіру & қайта қарастыру", "status.remove_bookmark": "Бетбелгілерден алып тастау", + "status.replied_to": "Replied to {name}", "status.reply": "Жауап", "status.replyAll": "Тақырыпқа жауап", "status.report": "Шағым @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Толығырақ", "status.show_more_all": "Бәрін толығымен", "status.show_original": "Show original", - "status.show_thread": "Желіні көрсет", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Қолжетімді емес", "status.unmute_conversation": "Пікірталасты үнсіз қылмау", "status.unpin": "Профильден алып тастау", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index b3697b1b6..3e2baf887 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -39,7 +39,7 @@ "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index d8d4b687f..af818e304 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -1,15 +1,15 @@ { - "about.blocks": "Moderated servers", + "about.blocks": "제한된 서버들", "about.contact": "연락처:", "about.domain_blocks.comment": "사유", "about.domain_blocks.domain": "도메인", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.preamble": "마스토돈은 일반적으로 연합우주에 있는 어떤 서버의 사용자와도 게시물을 보고 응답을 할 수 있도록 허용합니다. 다음 항목들은 특정한 서버에 대해 만들어 진 예외사항입니다.", "about.domain_blocks.severity": "심각도", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.explanation": "명시적으로 찾아보거나 팔로우를 하기 전까지는, 이 서버에 있는 프로필이나 게시물 등을 일반적으로 볼 수 없습니다.", "about.domain_blocks.silenced.title": "제한됨", "about.domain_blocks.suspended.explanation": "이 서버의 어떤 데이터도 처리되거나, 저장 되거나 공유되지 않고, 이 서버의 어떤 유저와도 상호작용 하거나 대화할 수 없습니다.", "about.domain_blocks.suspended.title": "정지됨", - "about.not_available": "This information has not been made available on this server.", + "about.not_available": "이 정보는 이 서버에서 사용할 수 없습니다.", "about.powered_by": "{mastodon}에 의해 구동되는 분산화된 소셜 미디어", "about.rules": "서버 규칙", "account.account_note_header": "노트", @@ -27,9 +27,9 @@ "account.edit_profile": "프로필 편집", "account.enable_notifications": "@{name} 의 게시물 알림 켜기", "account.endorse": "프로필에 추천하기", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "{date}에 마지막으로 게시", + "account.featured_tags.last_status_never": "게시물 없음", + "account.featured_tags.title": "{name} 님의 추천 해시태그", "account.follow": "팔로우", "account.followers": "팔로워", "account.followers.empty": "아직 아무도 이 사용자를 팔로우하고 있지 않습니다.", @@ -39,7 +39,7 @@ "account.follows.empty": "이 사용자는 아직 아무도 팔로우하고 있지 않습니다.", "account.follows_you": "날 팔로우합니다", "account.hide_reblogs": "@{name}의 부스트를 숨기기", - "account.joined": "{date}에 가입함", + "account.joined_short": "Joined", "account.languages": "구독한 언어 변경", "account.link_verified_on": "{date}에 이 링크의 소유권이 확인 됨", "account.locked_info": "이 계정의 프라이버시 설정은 잠금으로 설정되어 있습니다. 계정 소유자가 수동으로 팔로워를 승인합니다.", @@ -79,18 +79,23 @@ "audio.hide": "소리 숨기기", "autosuggest_hashtag.per_week": "주간 {count}회", "boost_modal.combo": "다음엔 {combo}를 눌러서 이 과정을 건너뛸 수 있습니다", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "에러 리포트 복사하기", + "bundle_column_error.error.body": "요청한 페이지를 렌더링 할 수 없습니다. 저희의 코드에 버그가 있거나, 브라우저 호환성 문제일 수 있습니다.", + "bundle_column_error.error.title": "으악, 안돼!", + "bundle_column_error.network.body": "이 페이지를 불러오는 중 오류가 발생했습니다. 일시적으로 서버와의 연결이 불안정한 문제일 수도 있습니다.", + "bundle_column_error.network.title": "네트워크 오류", "bundle_column_error.retry": "다시 시도", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "홈으로 돌아가기", + "bundle_column_error.routing.body": "요청하신 페이지를 찾을 수 없습니다. 주소창에 적힌 URL이 확실히 맞나요?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "닫기", "bundle_modal_error.message": "컴포넌트를 불러오는 과정에서 문제가 발생했습니다.", "bundle_modal_error.retry": "다시 시도", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "정보", "column.blocks": "차단한 사용자", "column.bookmarks": "보관함", @@ -379,6 +384,7 @@ "navigation_bar.pins": "고정된 게시물", "navigation_bar.preferences": "사용자 설정", "navigation_bar.public_timeline": "연합 타임라인", + "navigation_bar.search": "Search", "navigation_bar.security": "보안", "not_signed_in_indicator.not_signed_in": "이 정보에 접근하려면 로그인을 해야 합니다.", "notification.admin.report": "{name} 님이 {target}를 신고했습니다", @@ -567,6 +573,7 @@ "status.reblogs.empty": "아직 아무도 이 게시물을 부스트하지 않았습니다. 부스트 한 사람들이 여기에 표시 됩니다.", "status.redraft": "지우고 다시 쓰기", "status.remove_bookmark": "보관한 게시물 삭제", + "status.replied_to": "Replied to {name}", "status.reply": "답장", "status.replyAll": "글타래에 답장", "status.report": "신고", @@ -578,9 +585,8 @@ "status.show_more": "더 보기", "status.show_more_all": "모두 펼치기", "status.show_original": "원본 보기", - "status.show_thread": "글타래 보기", "status.translate": "번역", - "status.translated_from": "{lang}에서 번역됨", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "사용할 수 없음", "status.unmute_conversation": "이 대화의 뮤트 해제하기", "status.unpin": "고정 해제", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index b2ce6ba11..246b46407 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -39,7 +39,7 @@ "account.follows.empty": "Ev bikarhêner hin kesekî heya niha neşopandiye.", "account.follows_you": "Te dişopîne", "account.hide_reblogs": "Bilindkirinên ji @{name} veşêre", - "account.joined": "Di {date} de tevlî bû", + "account.joined_short": "Joined", "account.languages": "Zimanên beşdarbûyî biguherîne", "account.link_verified_on": "Xwedaniya li vê girêdanê di {date} de hatiye kontrolkirin", "account.locked_info": "Rewşa vê ajimêrê wek kilîtkirî hatiye sazkirin. Xwediyê ajimêrê, bi destan dinirxîne şopandinê dinirxîne.", @@ -79,18 +79,23 @@ "audio.hide": "Dengê veşêre", "autosuggest_hashtag.per_week": "Her hefte {count}", "boost_modal.combo": "Ji bo derbas bî carekî din de pêlê {combo} bike", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Rapora çewtiyê jê bigire", + "bundle_column_error.error.body": "Rûpela xwestî nehate pêşkêşkirin. Dibe ku ew ji ber şaşetiyeke koda me, an jî pirsgirêkeke lihevhatina gerokê be.", + "bundle_column_error.error.title": "Ax, na!", + "bundle_column_error.network.body": "Di dema hewldana barkirina vê rûpelê de çewtiyek derket. Ev dibe ku ji ber pirsgirêkeke demkî ya girêdana înternetê te be an jî ev rajekar be.", + "bundle_column_error.network.title": "Çewtiya torê", "bundle_column_error.retry": "Dîsa biceribîne", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Vegere rûpela sereke", + "bundle_column_error.routing.body": "Rûpela xwestî nehate dîtin. Tu bawerî ku girêdana di kodika lêgerînê de rast e?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Bigire", "bundle_modal_error.message": "Di dema barkirina vê hêmanê de tiştek çewt çê bû.", "bundle_modal_error.retry": "Dîsa bicerbîne", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Derbar", "column.blocks": "Bikarhênerên astengkirî", "column.bookmarks": "Şûnpel", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Şandiya derzîkirî", "navigation_bar.preferences": "Sazkarî", "navigation_bar.public_timeline": "Demnameya giştî", + "navigation_bar.search": "Search", "navigation_bar.security": "Ewlehî", "not_signed_in_indicator.not_signed_in": "Divê tu têketinê bikî da ku tu bigihîjî vê çavkaniyê.", "notification.admin.report": "{name} hate ragihandin {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Kesekî hin ev şandî bilind nekiriye. Gava kesek bilind bike, ew ên li vir werin xuyakirin.", "status.redraft": "Jê bibe & ji nû ve reşnivîs bike", "status.remove_bookmark": "Şûnpêlê jê rake", + "status.replied_to": "Replied to {name}", "status.reply": "Bersivê bide", "status.replyAll": "Mijarê bibersivîne", "status.report": "@{name} ragihîne", @@ -578,9 +585,8 @@ "status.show_more": "Bêtir nîşan bide", "status.show_more_all": "Bêtir nîşan bide bo hemûyan", "status.show_original": "A resen nîşan bide", - "status.show_thread": "Mijarê nîşan bide", "status.translate": "Wergerîne", - "status.translated_from": "Ji {lang} hate wergerandin", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Tune ye", "status.unmute_conversation": "Axaftinê bêdeng neke", "status.unpin": "Şandiya derzîkirî ji profîlê rake", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index 8e0b43104..8ace3826a 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -39,7 +39,7 @@ "account.follows.empty": "Ny wra'n devnydhyer ma holya nagonan hwath.", "account.follows_you": "Y'th hol", "account.hide_reblogs": "Kudha kenerthow a @{name}", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Perghenogeth an kolm ma a veu checkys dhe {date}", "account.locked_info": "Studh privetter an akont ma yw alhwedhys. An perghen a wra dasweles dre leuv piw a yll aga holya.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Degea", "bundle_modal_error.message": "Neppyth eth yn kamm ow karga'n elven ma.", "bundle_modal_error.retry": "Assayewgh arta", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Devnydhyoryon lettys", "column.bookmarks": "Folennosow", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Postow fastys", "navigation_bar.preferences": "Erviransow", "navigation_bar.public_timeline": "Amserlin geffrysys", + "navigation_bar.search": "Search", "navigation_bar.security": "Diogeledh", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Ny wrug nagonan kenertha'n post ma hwath. Pan wra, hynn a wra omdhiskwedhes omma.", "status.redraft": "Dilea ha daskynskrifa", "status.remove_bookmark": "Dilea folennos", + "status.replied_to": "Replied to {name}", "status.reply": "Gorthebi", "status.replyAll": "Gorthebi orth neusen", "status.report": "Reportya @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Diskwedhes moy", "status.show_more_all": "Diskwedhes moy rag puptra", "status.show_original": "Show original", - "status.show_thread": "Diskwedhes neusen", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Ankavadow", "status.unmute_conversation": "Antawhe kesklapp", "status.unpin": "Anfastya a brofil", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 813eaf197..be61374e9 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -39,7 +39,7 @@ "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 08fe1ae5e..cd1c486cc 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -39,7 +39,7 @@ "account.follows.empty": "Šis lietotājs pagaidām nevienam neseko.", "account.follows_you": "Seko tev", "account.hide_reblogs": "Paslēpt paceltos ierakstus no lietotāja @{name}", - "account.joined": "Pievienojās {date}", + "account.joined_short": "Joined", "account.languages": "Mainīt abonētās valodas", "account.link_verified_on": "Šīs saites piederība ir pārbaudīta {date}", "account.locked_info": "Šī konta privātuma statuss ir slēgts. Īpašnieks izskatīs, kurš viņam drīkst sekot.", @@ -48,7 +48,7 @@ "account.moved_to": "{name} ir pārcelts uz:", "account.mute": "Apklusināt @{name}", "account.mute_notifications": "Nerādīt paziņojumus no @{name}", - "account.muted": "Apklusināts", + "account.muted": "Noklusināts", "account.posts": "Ziņas", "account.posts_with_replies": "Ziņas un atbildes", "account.report": "Ziņot par lietotāju @{name}", @@ -79,18 +79,23 @@ "audio.hide": "Slēpt audio", "autosuggest_hashtag.per_week": "{count} nedēļā", "boost_modal.combo": "Nospied {combo} lai izlaistu šo nākamreiz", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Kopēt kļūdu ziņojumu", + "bundle_column_error.error.body": "Pieprasīto lapu nevarēja atveidot. Tas varētu būt saistīts ar kļūdu mūsu kodā vai pārlūkprogrammas saderības problēma.", + "bundle_column_error.error.title": "Ak, nē!", + "bundle_column_error.network.body": "Mēģinot ielādēt šo lapu, radās kļūda. Tas varētu būt saistīts ar īslaicīgu interneta savienojuma vai šī servera problēmu.", + "bundle_column_error.network.title": "Tīkla kļūda", "bundle_column_error.retry": "Mēģini vēlreiz", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Atgriezties", + "bundle_column_error.routing.body": "Pieprasīto lapu nevarēja atrast. Vai esi pārliecināts, ka URL adreses joslā ir pareizs?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Aizvērt", "bundle_modal_error.message": "Kaut kas nogāja greizi ielādējot šo komponenti.", "bundle_modal_error.retry": "Mēģini vēlreiz", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Par", "column.blocks": "Bloķētie lietotāji", "column.bookmarks": "Grāmatzīmes", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Piespraustās ziņas", "navigation_bar.preferences": "Iestatījumi", "navigation_bar.public_timeline": "Apvienotā ziņu lenta", + "navigation_bar.search": "Search", "navigation_bar.security": "Drošība", "not_signed_in_indicator.not_signed_in": "Lai piekļūtu šim resursam, tev ir jāpierakstās.", "notification.admin.report": "{name} ziņoja par {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Neviens šo ziņojumu vel nav paaugstinājis. Kad būs, tie parādīsies šeit.", "status.redraft": "Dzēst un pārrakstīt", "status.remove_bookmark": "Noņemt grāmatzīmi", + "status.replied_to": "Replied to {name}", "status.reply": "Atbildēt", "status.replyAll": "Atbildēt uz tematu", "status.report": "Ziņot par @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Rādīt vairāk", "status.show_more_all": "Rādīt vairāk visiem", "status.show_original": "Rādīt oriģinālu", - "status.show_thread": "Rādīt tematu", "status.translate": "Tulkot", - "status.translated_from": "Tulkot no {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Nav pieejams", "status.unmute_conversation": "Atvērt sarunu", "status.unpin": "Noņemt no profila", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index b3135c9c9..2cbe5a50e 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -39,7 +39,7 @@ "account.follows.empty": "Корисникот не следи никој сеуште.", "account.follows_you": "Те следи тебе", "account.hide_reblogs": "Сокриј буст од @{name}", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Сопстевноста на овај линк беше проверен на {date}", "account.locked_info": "Статусот на приватност на овај корисник е сетиран како заклучен. Корисникот одлучува кој можи да го следи него.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Затвори", "bundle_modal_error.message": "Настана грешка при прикажувањето на оваа веб-страница.", "bundle_modal_error.retry": "Обидете се повторно", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Блокирани корисници", "column.bookmarks": "Bookmarks", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Федеративен времеплов", + "navigation_bar.search": "Search", "navigation_bar.security": "Безбедност", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index a8c7ef61e..b7f92c715 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -39,7 +39,7 @@ "account.follows.empty": "ഈ ഉപയോക്താവ് ആരേയും ഇതുവരെ പിന്തുടരുന്നില്ല.", "account.follows_you": "നിങ്ങളെ പിന്തുടരുന്നു", "account.hide_reblogs": "@{name} ബൂസ്റ്റ് ചെയ്തവ മറയ്കുക", - "account.joined": "{date} ൽ ചേർന്നു", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "ഈ ലിങ്കിന്റെ ഉടമസ്തത {date} ഇൽ ഉറപ്പാക്കിയതാണ്", "account.locked_info": "ഈ അംഗത്വത്തിന്റെ സ്വകാര്യതാ നിലപാട് അനുസരിച്ച് പിന്തുടരുന്നവരെ തിരഞ്ഞെടുക്കാനുള്ള വിവേചനാധികാരം ഉടമസ്ഥനിൽ നിഷിപ്തമായിരിക്കുന്നു.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "അടയ്ക്കുക", "bundle_modal_error.message": "ഈ വെബ്പേജ് പ്രദർശിപ്പിക്കുമ്പോൾ എന്തോ കുഴപ്പം സംഭവിച്ചു.", "bundle_modal_error.retry": "വീണ്ടും ശ്രമിക്കുക", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "തടയപ്പെട്ട ഉപയോക്താക്കൾ", "column.bookmarks": "ബുക്ക്മാർക്കുകൾ", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "ക്രമീകരണങ്ങൾ", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "സുരക്ഷ", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "ഇല്ലാതാക്കുക & വീണ്ടും ഡ്രാഫ്റ്റ് ചെയ്യുക", "status.remove_bookmark": "ബുക്ക്മാർക്ക് നീക്കംചെയ്യുക", + "status.replied_to": "Replied to {name}", "status.reply": "മറുപടി", "status.replyAll": "Reply to thread", "status.report": "@{name}--നെ റിപ്പോർട്ട് ചെയ്യുക", @@ -578,9 +585,8 @@ "status.show_more": "കൂടുതകൽ കാണിക്കുക", "status.show_more_all": "എല്ലാവർക്കുമായി കൂടുതൽ കാണിക്കുക", "status.show_original": "Show original", - "status.show_thread": "ത്രെഡ് കാണിക്കുക", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "ലഭ്യമല്ല", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index b2d32cc4e..ea2345ecf 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -39,7 +39,7 @@ "account.follows.empty": "हा वापरकर्ता अजूनपर्यंत कोणाचा अनुयायी नाही.", "account.follows_you": "तुमचा अनुयायी आहे", "account.hide_reblogs": "@{name} पासून सर्व बूस्ट लपवा", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "बंद करा", "bundle_modal_error.message": "हा घटक लोड करतांना काहीतरी चुकले आहे.", "bundle_modal_error.retry": "पुन्हा प्रयत्न करा", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "ब्लॉक केलेले खातेधारक", "column.bookmarks": "Bookmarks", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 341bca041..de0c50480 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -39,7 +39,7 @@ "account.follows.empty": "Pengguna ini belum mengikuti sesiapa.", "account.follows_you": "Mengikuti anda", "account.hide_reblogs": "Sembunyikan galakan daripada @{name}", - "account.joined": "Sertai pada {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Pemilikan pautan ini telah disemak pada {date}", "account.locked_info": "Status privasi akaun ini dikunci. Pemiliknya menyaring sendiri siapa yang boleh mengikutinya.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Tutup", "bundle_modal_error.message": "Ada yang tidak kena semasa memuatkan komponen ini.", "bundle_modal_error.retry": "Cuba lagi", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Pengguna yang disekat", "column.bookmarks": "Tanda buku", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Hantaran disemat", "navigation_bar.preferences": "Keutamaan", "navigation_bar.public_timeline": "Garis masa bersekutu", + "navigation_bar.search": "Search", "navigation_bar.security": "Keselamatan", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Tiada sesiapa yang menggalak hantaran ini. Apabila ada yang menggalak, ia akan muncul di sini.", "status.redraft": "Padam & rangka semula", "status.remove_bookmark": "Buang tanda buku", + "status.replied_to": "Replied to {name}", "status.reply": "Balas", "status.replyAll": "Balas ke bebenang", "status.report": "Laporkan @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Tunjukkan lebih", "status.show_more_all": "Tunjukkan lebih untuk semua", "status.show_original": "Show original", - "status.show_thread": "Tunjuk bebenang", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Tidak tersedia", "status.unmute_conversation": "Nyahbisukan perbualan", "status.unpin": "Nyahsemat daripada profil", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 51a66f356..253d5ec02 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -20,16 +20,16 @@ "account.block_domain": "Alles van {domain} verbergen", "account.blocked": "Geblokkeerd", "account.browse_more_on_origin_server": "Meer op het originele profiel bekijken", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Volgverzoek annuleren", "account.direct": "@{name} een direct bericht sturen", "account.disable_notifications": "Geef geen melding meer wanneer @{name} een bericht plaatst", "account.domain_blocked": "Domein geblokkeerd", "account.edit_profile": "Profiel bewerken", "account.enable_notifications": "Geef een melding wanneer @{name} een bericht plaatst", "account.endorse": "Op profiel weergeven", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Laatste bericht op {date}", + "account.featured_tags.last_status_never": "Geen berichten", + "account.featured_tags.title": "Uitgelichte hashtags van {name}", "account.follow": "Volgen", "account.followers": "Volgers", "account.followers.empty": "Niemand volgt nog deze gebruiker.", @@ -39,7 +39,7 @@ "account.follows.empty": "Deze gebruiker volgt nog niemand.", "account.follows_you": "Volgt jou", "account.hide_reblogs": "Boosts van @{name} verbergen", - "account.joined": "Geregistreerd op {date}", + "account.joined_short": "Joined", "account.languages": "Getoonde talen wijzigen", "account.link_verified_on": "Eigendom van deze link is gecontroleerd op {date}", "account.locked_info": "De privacystatus van dit account is op besloten gezet. De eigenaar bepaalt handmatig wie diegene kan volgen.", @@ -79,18 +79,23 @@ "audio.hide": "Audio verbergen", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "Je kunt {combo} klikken om dit de volgende keer over te slaan", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Foutrapportage kopiëren", + "bundle_column_error.error.body": "De opgevraagde pagina kon niet worden aangemaakt. Dit kan het gevolg zijn van onze broncode of van een verouderde webbrowser.", + "bundle_column_error.error.title": "Oh nee!", + "bundle_column_error.network.body": "Er is een fout opgetreden tijdens het laden van deze pagina. Dit kan veroorzaakt zijn door een tijdelijk probleem met je internetverbinding of met deze server.", + "bundle_column_error.network.title": "Netwerkfout", "bundle_column_error.retry": "Opnieuw proberen", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Terug naar start", + "bundle_column_error.routing.body": "De opgevraagde pagina kon niet worden gevonden. Weet je zeker dat de URL in de adresbalk de juiste is?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Sluiten", "bundle_modal_error.message": "Tijdens het laden van dit onderdeel is er iets fout gegaan.", "bundle_modal_error.retry": "Opnieuw proberen", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Over", "column.blocks": "Geblokkeerde gebruikers", "column.bookmarks": "Bladwijzers", @@ -144,8 +149,8 @@ "confirmations.block.block_and_report": "Blokkeren en rapporteren", "confirmations.block.confirm": "Blokkeren", "confirmations.block.message": "Weet je het zeker dat je {name} wilt blokkeren?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "Verzoek annuleren", + "confirmations.cancel_follow_request.message": "Weet je zeker dat je jouw verzoek om {name} te volgen wilt annuleren?", "confirmations.delete.confirm": "Verwijderen", "confirmations.delete.message": "Weet je het zeker dat je dit bericht wilt verwijderen?", "confirmations.delete_list.confirm": "Verwijderen", @@ -231,11 +236,11 @@ "explore.trending_links": "Nieuws", "explore.trending_statuses": "Berichten", "explore.trending_tags": "Hashtags", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_explanation": "Deze filtercategorie is niet van toepassing op de context waarin je dit bericht hebt benaderd. Als je wilt dat het bericht ook in deze context wordt gefilterd, moet je het filter bewerken.", "filter_modal.added.context_mismatch_title": "Context komt niet overeen!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_explanation": "Deze filtercategorie is verlopen. Je moet de vervaldatum wijzigen om de categorie toe te kunnen passen.", "filter_modal.added.expired_title": "Filter verlopen!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure": "Ga naar {settings_link} om deze filtercategorie opnieuw te bekijken en verder te configureren.", "filter_modal.added.review_and_configure_title": "Filterinstellingen", "filter_modal.added.settings_link": "instellingspagina", "filter_modal.added.short_explanation": "Dit bericht is toegevoegd aan de volgende filtercategorie: {title}.", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Vastgemaakte berichten", "navigation_bar.preferences": "Instellingen", "navigation_bar.public_timeline": "Globale tijdlijn", + "navigation_bar.search": "Search", "navigation_bar.security": "Beveiliging", "not_signed_in_indicator.not_signed_in": "Je moet inloggen om toegang tot deze informatie te krijgen.", "notification.admin.report": "{name} heeft {target} geapporteerd", @@ -528,11 +534,11 @@ "server_banner.introduction": "{domain} is onderdeel van het gedecentraliseerde sociale netwerk {mastodon}.", "server_banner.learn_more": "Meer leren", "server_banner.server_stats": "Serverstats:", - "sign_in_banner.create_account": "Account registreren", + "sign_in_banner.create_account": "Registreren", "sign_in_banner.sign_in": "Inloggen", "sign_in_banner.text": "Inloggen om accounts of hashtags te volgen, op berichten te reageren, berichten te delen, of om interactie te hebben met jouw account op een andere server.", "status.admin_account": "Moderatie-omgeving van @{name} openen", - "status.admin_status": "Dit bericht in de moderatie-omgeving openen", + "status.admin_status": "Dit bericht in de moderatie-omgeving tonen", "status.block": "@{name} blokkeren", "status.bookmark": "Bladwijzer toevoegen", "status.cancel_reblog_private": "Niet langer boosten", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Niemand heeft dit bericht nog geboost. Wanneer iemand dit doet, valt dat hier te zien.", "status.redraft": "Verwijderen en herschrijven", "status.remove_bookmark": "Bladwijzer verwijderen", + "status.replied_to": "Replied to {name}", "status.reply": "Reageren", "status.replyAll": "Reageer op iedereen", "status.report": "@{name} rapporteren", @@ -578,9 +585,8 @@ "status.show_more": "Meer tonen", "status.show_more_all": "Alles meer tonen", "status.show_original": "Origineel bekijken", - "status.show_thread": "Gesprek tonen", "status.translate": "Vertalen", - "status.translated_from": "Vertaald uit het {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Niet beschikbaar", "status.unmute_conversation": "Gesprek niet langer negeren", "status.unpin": "Van profielpagina losmaken", @@ -626,7 +632,7 @@ "upload_modal.description_placeholder": "Pa's wijze lynx bezag vroom het fikse aquaduct", "upload_modal.detect_text": "Tekst in een afbeelding detecteren", "upload_modal.edit_media": "Media bewerken", - "upload_modal.hint": "Klik of sleep de cirkel in de voorvertoning naar een centraal punt dat op elke thumbnail zichtbaar moet blijven.", + "upload_modal.hint": "Klik of sleep de cirkel in de voorvertoning naar een centraal focuspunt dat op elke thumbnail zichtbaar moet blijven.", "upload_modal.preparing_ocr": "OCR voorbereiden…", "upload_modal.preview_label": "Voorvertoning ({ratio})", "upload_progress.label": "Uploaden...", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index f62b1a832..6d08e430a 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -39,7 +39,7 @@ "account.follows.empty": "Denne brukaren fylgjer ikkje nokon enno.", "account.follows_you": "Fylgjer deg", "account.hide_reblogs": "Gøym fremhevingar frå @{name}", - "account.joined": "Vart med {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Eigarskap for denne lenkja vart sist sjekka {date}", "account.locked_info": "Denne kontoen er privat. Eigaren kan sjølv velja kven som kan fylgja han.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Lat att", "bundle_modal_error.message": "Noko gjekk gale under lastinga av denne komponenten.", "bundle_modal_error.retry": "Prøv igjen", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blokkerte brukarar", "column.bookmarks": "Bokmerke", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Festa tut", "navigation_bar.preferences": "Innstillingar", "navigation_bar.public_timeline": "Føderert tidsline", + "navigation_bar.search": "Search", "navigation_bar.security": "Tryggleik", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} rapporterte {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Ingen har framheva dette tutet enno. Om nokon gjer, så dukkar det opp her.", "status.redraft": "Slett & skriv på nytt", "status.remove_bookmark": "Fjern bokmerke", + "status.replied_to": "Replied to {name}", "status.reply": "Svar", "status.replyAll": "Svar til tråd", "status.report": "Rapporter @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Vis meir", "status.show_more_all": "Vis meir for alle", "status.show_original": "Show original", - "status.show_thread": "Vis tråd", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Ikkje tilgjengeleg", "status.unmute_conversation": "Opphev målbinding av samtalen", "status.unpin": "Løys frå profil", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index a3614fc33..f408fad68 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -39,7 +39,7 @@ "account.follows.empty": "Denne brukeren følger ikke noen enda.", "account.follows_you": "Følger deg", "account.hide_reblogs": "Skjul fremhevinger fra @{name}", - "account.joined": "Ble med den {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Eierskap av denne lenken ble sjekket {date}", "account.locked_info": "Denne kontoens personvernstatus er satt til låst. Eieren vurderer manuelt hvem som kan følge dem.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Lukk", "bundle_modal_error.message": "Noe gikk galt da denne komponenten lastet.", "bundle_modal_error.retry": "Prøv igjen", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blokkerte brukere", "column.bookmarks": "Bokmerker", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Festa tuter", "navigation_bar.preferences": "Innstillinger", "navigation_bar.public_timeline": "Felles tidslinje", + "navigation_bar.search": "Search", "navigation_bar.security": "Sikkerhet", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Ingen har fremhevet denne tuten enda. Når noen gjør det, vil de dukke opp her.", "status.redraft": "Slett og drøft på nytt", "status.remove_bookmark": "Fjern bokmerke", + "status.replied_to": "Replied to {name}", "status.reply": "Svar", "status.replyAll": "Svar til samtale", "status.report": "Rapporter @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Vis mer", "status.show_more_all": "Vis mer for alle", "status.show_original": "Show original", - "status.show_thread": "Vis tråden", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Ikke tilgjengelig", "status.unmute_conversation": "Ikke demp samtale", "status.unpin": "Angre festing på profilen", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 176ca5dcc..754f38f21 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -39,7 +39,7 @@ "account.follows.empty": "Aqueste utilizaire sèc pas degun pel moment.", "account.follows_you": "Vos sèc", "account.hide_reblogs": "Rescondre los partatges de @{name}", - "account.joined": "Arribèt en {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "La proprietat d’aqueste ligam foguèt verificada lo {date}", "account.locked_info": "L’estatut de privacitat del compte es configurat sus clavat. Lo proprietari causís qual pòt sègre son compte.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Tampar", "bundle_modal_error.message": "Quicòm a fach mèuca pendent lo cargament d’aqueste compausant.", "bundle_modal_error.retry": "Tornar ensajar", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Personas blocadas", "column.bookmarks": "Marcadors", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Tuts penjats", "navigation_bar.preferences": "Preferéncias", "navigation_bar.public_timeline": "Flux public global", + "navigation_bar.search": "Search", "navigation_bar.security": "Seguretat", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Degun a pas encara partejat aqueste tut. Quand qualqu’un o farà, apareisserà aquí.", "status.redraft": "Escafar e tornar formular", "status.remove_bookmark": "Suprimir lo marcador", + "status.replied_to": "Replied to {name}", "status.reply": "Respondre", "status.replyAll": "Respondre a la conversacion", "status.report": "Senhalar @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Desplegar", "status.show_more_all": "Los desplegar totes", "status.show_original": "Show original", - "status.show_thread": "Mostrar lo fil", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Pas disponible", "status.unmute_conversation": "Tornar mostrar la conversacion", "status.unpin": "Tirar del perfil", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index e00874966..cc0fa7069 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -39,7 +39,7 @@ "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index a0642273a..f8a9c856d 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -39,7 +39,7 @@ "account.follows.empty": "Ten użytkownik nie śledzi jeszcze nikogo.", "account.follows_you": "Śledzi Cię", "account.hide_reblogs": "Ukryj podbicia od @{name}", - "account.joined": "Dołączył(a) {date}", + "account.joined_short": "Joined", "account.languages": "Zmień subskrybowane języki", "account.link_verified_on": "Własność tego odnośnika została potwierdzona {date}", "account.locked_info": "To konto jest prywatne. Właściciel ręcznie wybiera kto może go śledzić.", @@ -79,18 +79,23 @@ "audio.hide": "Ukryj dźwięk", "autosuggest_hashtag.per_week": "{count} co tydzień", "boost_modal.combo": "Naciśnij {combo}, aby pominąć to następnym razem", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Skopiuj raport o błędzie", + "bundle_column_error.error.body": "Nie można zrenderować żądanej strony. Może to być spowodowane błędem w naszym kodzie lub problemami z kompatybilnością przeglądarki.", + "bundle_column_error.error.title": "O nie!", + "bundle_column_error.network.body": "Wystąpił błąd podczas próby załadowania tej strony. Może to być spowodowane tymczasowym problemem z połączeniem z internetem lub serwerem.", + "bundle_column_error.network.title": "Błąd sieci", "bundle_column_error.retry": "Spróbuj ponownie", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Wróć do strony głównej", + "bundle_column_error.routing.body": "Żądana strona nie została znaleziona. Czy na pewno adres URL w pasku adresu jest poprawny?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Zamknij", "bundle_modal_error.message": "Coś poszło nie tak podczas ładowania tego składnika.", "bundle_modal_error.retry": "Spróbuj ponownie", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "O...", "column.blocks": "Zablokowani użytkownicy", "column.bookmarks": "Zakładki", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Przypięte wpisy", "navigation_bar.preferences": "Preferencje", "navigation_bar.public_timeline": "Globalna oś czasu", + "navigation_bar.search": "Search", "navigation_bar.security": "Bezpieczeństwo", "not_signed_in_indicator.not_signed_in": "Musisz się zalogować, aby otrzymać dostęp do tego zasobu.", "notification.admin.report": "{name} zgłosił {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Nikt nie podbił jeszcze tego wpisu. Gdy ktoś to zrobi, pojawi się tutaj.", "status.redraft": "Usuń i przeredaguj", "status.remove_bookmark": "Usuń zakładkę", + "status.replied_to": "Replied to {name}", "status.reply": "Odpowiedz", "status.replyAll": "Odpowiedz na wątek", "status.report": "Zgłoś @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Rozwiń", "status.show_more_all": "Rozwiń wszystkie", "status.show_original": "Pokaż oryginał", - "status.show_thread": "Pokaż wątek", "status.translate": "Przetłumacz", - "status.translated_from": "Przetłumaczone z {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Niedostępne", "status.unmute_conversation": "Cofnij wyciszenie konwersacji", "status.unpin": "Odepnij z profilu", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 713a2da2d..a4d7701ff 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -39,7 +39,7 @@ "account.follows.empty": "Nada aqui.", "account.follows_you": "te segue", "account.hide_reblogs": "Ocultar boosts de @{name}", - "account.joined": "Entrou em {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "link verificado em {date}", "account.locked_info": "Trancado. Seguir requer aprovação manual do perfil.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Fechar", "bundle_modal_error.message": "Erro ao carregar este componente.", "bundle_modal_error.retry": "Tente novamente", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Usuários bloqueados", "column.bookmarks": "Salvos", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Toots fixados", "navigation_bar.preferences": "Preferências", "navigation_bar.public_timeline": "Linha global", + "navigation_bar.search": "Search", "navigation_bar.security": "Segurança", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} denunciou {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Nada aqui. Quando alguém der boost, o usuário aparecerá aqui.", "status.redraft": "Excluir e rascunhar", "status.remove_bookmark": "Remover do Salvos", + "status.replied_to": "Replied to {name}", "status.reply": "Responder", "status.replyAll": "Responder a conversa", "status.report": "Denunciar @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Mostrar mais", "status.show_more_all": "Mostrar mais em tudo", "status.show_original": "Show original", - "status.show_thread": "Mostrar conversa", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Não disponível", "status.unmute_conversation": "Dessilenciar conversa", "status.unpin": "Desafixar", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index a3beb8d26..ef8f4f086 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -39,7 +39,7 @@ "account.follows.empty": "Este utilizador ainda não segue ninguém.", "account.follows_you": "Segue-te", "account.hide_reblogs": "Esconder partilhas de @{name}", - "account.joined": "Ingressou em {date}", + "account.joined_short": "Joined", "account.languages": "Alterar idiomas subscritos", "account.link_verified_on": "A posse deste link foi verificada em {date}", "account.locked_info": "Esta conta é privada. O proprietário revê manualmente quem a pode seguir.", @@ -79,18 +79,23 @@ "audio.hide": "Ocultar áudio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Pode clicar {combo} para não voltar a ver", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Copiar relatório de erros", + "bundle_column_error.error.body": "A página solicitada não pôde ser renderizada. Isto pode ser devido a uma falha no nosso código ou a um problema de compatibilidade com o navegador.", + "bundle_column_error.error.title": "Oh, não!", + "bundle_column_error.network.body": "Houve um erro ao tentar carregar esta página. Isto pode ocorrer devido a um problema temporário com a sua conexão à internet ou a este servidor.", + "bundle_column_error.network.title": "Erro de rede", "bundle_column_error.retry": "Tente de novo", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Voltar à página inicial", + "bundle_column_error.routing.body": "A página solicitada não foi encontrada. Tem a certeza que o URL na barra de endereços está correto?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Fechar", "bundle_modal_error.message": "Algo de errado aconteceu enquanto este componente era carregado.", "bundle_modal_error.retry": "Tente de novo", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Sobre", "column.blocks": "Utilizadores Bloqueados", "column.bookmarks": "Itens salvos", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Toots afixados", "navigation_bar.preferences": "Preferências", "navigation_bar.public_timeline": "Cronologia federada", + "navigation_bar.search": "Search", "navigation_bar.security": "Segurança", "not_signed_in_indicator.not_signed_in": "Necessita de iniciar sessão para utilizar esta funcionalidade.", "notification.admin.report": "{name} denunciou {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Ainda ninguém fez boost a este toot. Quando alguém o fizer, ele irá aparecer aqui.", "status.redraft": "Apagar & reescrever", "status.remove_bookmark": "Remover dos itens salvos", + "status.replied_to": "Replied to {name}", "status.reply": "Responder", "status.replyAll": "Responder à conversa", "status.report": "Denunciar @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Mostrar mais", "status.show_more_all": "Mostrar mais para todas", "status.show_original": "Mostrar original", - "status.show_thread": "Mostrar conversa", "status.translate": "Traduzir", - "status.translated_from": "Traduzido de {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Não disponível", "status.unmute_conversation": "Deixar de silenciar esta conversa", "status.unpin": "Não fixar no perfil", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 04af08661..06f28fb49 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -39,7 +39,7 @@ "account.follows.empty": "Momentan acest utilizator nu are niciun abonament.", "account.follows_you": "Este abonat la tine", "account.hide_reblogs": "Ascunde distribuirile de la @{name}", - "account.joined": "S-a înscris în {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Proprietatea acestui link a fost verificată pe {date}", "account.locked_info": "Acest profil este privat. Această persoană aprobă manual conturile care se abonează la ea.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Închide", "bundle_modal_error.message": "A apărut o eroare la încărcarea acestui element.", "bundle_modal_error.retry": "Încearcă din nou", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Utilizatori blocați", "column.bookmarks": "Marcaje", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Postări fixate", "navigation_bar.preferences": "Preferințe", "navigation_bar.public_timeline": "Cronologie globală", + "navigation_bar.search": "Search", "navigation_bar.security": "Securitate", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Nimeni nu a impulsionat această postare până acum. Când cineva o va face, va apărea aici.", "status.redraft": "Șterge și adaugă la ciorne", "status.remove_bookmark": "Îndepărtează marcajul", + "status.replied_to": "Replied to {name}", "status.reply": "Răspunde", "status.replyAll": "Răspunde la discuție", "status.report": "Raportează pe @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Arată mai mult", "status.show_more_all": "Arată mai mult pentru toți", "status.show_original": "Show original", - "status.show_thread": "Arată discuția", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Indisponibil", "status.unmute_conversation": "Repornește conversația", "status.unpin": "Eliberează din profil", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 92612af24..2ed3d7b45 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -39,7 +39,7 @@ "account.follows.empty": "Этот пользователь пока ни на кого не подписался.", "account.follows_you": "Подписан(а) на вас", "account.hide_reblogs": "Скрыть продвижения от @{name}", - "account.joined": "Зарегистрирован(а) с {date}", + "account.joined_short": "Joined", "account.languages": "Изменить языки подписки", "account.link_verified_on": "Владение этой ссылкой было проверено {date}", "account.locked_info": "Это закрытый аккаунт. Его владелец вручную одобряет подписчиков.", @@ -79,18 +79,23 @@ "audio.hide": "Скрыть аудио", "autosuggest_hashtag.per_week": "{count} / неделю", "boost_modal.combo": "{combo}, чтобы пропустить это в следующий раз", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.copy_stacktrace": "Скопировать отчет об ошибке", + "bundle_column_error.error.body": "Запрошенная страница не может быть отображена. Это может быть вызвано ошибкой в нашем коде или проблемой совместимости браузера.", + "bundle_column_error.error.title": "О нет!", "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.network.title": "Ошибка сети", "bundle_column_error.retry": "Попробовать снова", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Вернуться на главную", + "bundle_column_error.routing.body": "Запрошенная страница не найдена. Вы уверены, что URL в адресной строке правильный?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Закрыть", "bundle_modal_error.message": "Что-то пошло не так при загрузке этого компонента.", "bundle_modal_error.retry": "Попробовать снова", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Заблокированные пользователи", "column.bookmarks": "Закладки", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Закреплённые посты", "navigation_bar.preferences": "Настройки", "navigation_bar.public_timeline": "Глобальная лента", + "navigation_bar.search": "Search", "navigation_bar.security": "Безопасность", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} сообщил о {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Никто ещё не продвинул этот пост. Как только кто-то это сделает, они появятся здесь.", "status.redraft": "Удалить и исправить", "status.remove_bookmark": "Убрать из закладок", + "status.replied_to": "Replied to {name}", "status.reply": "Ответить", "status.replyAll": "Ответить всем", "status.report": "Пожаловаться", @@ -578,9 +585,8 @@ "status.show_more": "Развернуть", "status.show_more_all": "Развернуть все спойлеры в ветке", "status.show_original": "Показать оригинал", - "status.show_thread": "Показать обсуждение", "status.translate": "Перевод", - "status.translated_from": "Переведено с {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Невозможно отобразить файл", "status.unmute_conversation": "Не игнорировать обсуждение", "status.unpin": "Открепить от профиля", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index d18bc78b3..691011e7e 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -39,7 +39,7 @@ "account.follows.empty": "न कोऽप्यनुसृतो वर्तते", "account.follows_you": "त्वामनुसरति", "account.hide_reblogs": "@{name} मित्रस्य प्रकाशनानि छिद्यन्ताम्", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "अन्तर्जालस्थानस्यास्य स्वामित्वं परीक्षितमासीत् {date} दिने", "account.locked_info": "एतस्या लेखायाः गुह्यता \"निषिद्ध\"इति वर्तते । स्वामी स्वयञ्चिनोति कोऽनुसर्ता भवितुमर्हतीति ।", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "पिधीयताम्", "bundle_modal_error.message": "आरोपणे कश्चन दोषो जातः", "bundle_modal_error.retry": "पुनः यतताम्", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "निषिद्धभोक्तारः", "column.bookmarks": "पुटचिह्नानि", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 54a23cffa..393d7144c 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -39,7 +39,7 @@ "account.follows.empty": "Custa persone non sighit ancora a nemos.", "account.follows_you": "Ti sighit", "account.hide_reblogs": "Cua is cumpartziduras de @{name}", - "account.joined": "At aderidu su {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Sa propiedade de custu ligòngiu est istada controllada su {date}", "account.locked_info": "S'istadu de riservadesa de custu contu est istadu cunfiguradu comente blocadu. Sa persone chi tenet sa propiedade revisionat a manu chie dda podet sighire.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Serra", "bundle_modal_error.message": "Faddina in su carrigamentu de custu cumponente.", "bundle_modal_error.retry": "Torra·bi a proare", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Persones blocadas", "column.bookmarks": "Sinnalibros", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Publicatziones apicadas", "navigation_bar.preferences": "Preferèntzias", "navigation_bar.public_timeline": "Lìnia de tempus federada", + "navigation_bar.search": "Search", "navigation_bar.security": "Seguresa", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Nemos at ancora cumpartzidu custa publicatzione. Cando calicunu dd'at a fàghere, at a èssere ammustrada inoghe.", "status.redraft": "Cantzella e torra a iscrìere", "status.remove_bookmark": "Boga su sinnalibru", + "status.replied_to": "Replied to {name}", "status.reply": "Risponde", "status.replyAll": "Risponde a su tema", "status.report": "Sinnala @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Ammustra·nde prus", "status.show_more_all": "Ammustra·nde prus pro totus", "status.show_original": "Show original", - "status.show_thread": "Ammustra su tema", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "No est a disponimentu", "status.unmute_conversation": "Torra a ativare s'arresonada", "status.unpin": "Boga dae pitzu de su profilu", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 0ab05ed58..56ee9c17a 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -39,7 +39,7 @@ "account.follows.empty": "තවමත් කිසිවෙක් අනුගමනය නොකරයි.", "account.follows_you": "ඔබව අනුගමනය කරයි", "account.hide_reblogs": "@{name}සිට බූස්ට් සඟවන්න", - "account.joined": "{date} එක් වී ඇත", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "මෙම සබැඳියේ අයිතිය {date} දී පරීක්‍ෂා කෙරිණි", "account.locked_info": "මෙම ගිණුමේ රහස්‍යතා තත්ත්වය අගුලු දමා ඇත. හිමිකරු ඔවුන් අනුගමනය කළ හැක්කේ කාටදැයි හස්තීයව සමාලෝචනය කරයි.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "වසන්න", "bundle_modal_error.message": "මෙම සංරචකය පූරණය කිරීමේදී යම් දෙයක් වැරදී ඇත.", "bundle_modal_error.retry": "නැවත උත්සාහ කරන්න", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "පිලිබඳව", "column.blocks": "අවහිර කළ අය", "column.bookmarks": "පොත් යොමු", @@ -379,6 +384,7 @@ "navigation_bar.pins": "ඇමිණූ ලිපි", "navigation_bar.preferences": "අභිප්‍රේත", "navigation_bar.public_timeline": "ෆෙඩරේටඩ් කාලරේඛාව", + "navigation_bar.search": "Search", "navigation_bar.security": "ආරක්ෂාව", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} වාර්තා {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "තාම කවුරුත් මේ toot එක boost කරලා නැහැ. යමෙකු එසේ කළ විට, ඔවුන් මෙහි පෙන්වනු ඇත.", "status.redraft": "මකන්න සහ නැවත කෙටුම්පත", "status.remove_bookmark": "පොත්යොමුව ඉවතලන්න", + "status.replied_to": "Replied to {name}", "status.reply": "පිළිතුරු", "status.replyAll": "ත්‍රෙඩ් එකට පිළිතුරු දෙන්න", "status.report": "@{name} වාර්තාව", @@ -578,9 +585,8 @@ "status.show_more": "තවත් පෙන්වන්න", "status.show_more_all": "සියල්ල වැඩියෙන් පෙන්වන්න", "status.show_original": "Show original", - "status.show_thread": "නූල් පෙන්වන්න", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "නොතිබේ", "status.unmute_conversation": "සංවාදය නොනිහඬ", "status.unpin": "පැතිකඩෙන් ගළවන්න", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 21bf1b699..1a9692954 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -39,7 +39,7 @@ "account.follows.empty": "Tento používateľ ešte nikoho nenasleduje.", "account.follows_you": "Nasleduje ťa", "account.hide_reblogs": "Skry vyzdvihnutia od @{name}", - "account.joined": "Pridal/a sa v {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Vlastníctvo tohto odkazu bolo skontrolované {date}", "account.locked_info": "Stav súkromia pre tento účet je nastavený na zamknutý. Jeho vlastník sám prehodnocuje, kto ho môže sledovať.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Zatvor", "bundle_modal_error.message": "Nastala chyba pri načítaní tohto komponentu.", "bundle_modal_error.retry": "Skúsiť znova", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blokovaní užívatelia", "column.bookmarks": "Záložky", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pripnuté príspevky", "navigation_bar.preferences": "Nastavenia", "navigation_bar.public_timeline": "Federovaná časová os", + "navigation_bar.search": "Search", "navigation_bar.security": "Zabezbečenie", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} nahlásil/a {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Nikto ešte nevyzdvihol tento príspevok. Keď tak niekto urobí, bude to zobrazené práve tu.", "status.redraft": "Vymaž a prepíš", "status.remove_bookmark": "Odstráň záložku", + "status.replied_to": "Replied to {name}", "status.reply": "Odpovedať", "status.replyAll": "Odpovedz na diskusiu", "status.report": "Nahlás @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Ukáž viac", "status.show_more_all": "Všetkým ukáž viac", "status.show_original": "Show original", - "status.show_thread": "Ukáž diskusné vlákno", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Nedostupný/é", "status.unmute_conversation": "Prestaň si nevšímať konverzáciu", "status.unpin": "Odopni z profilu", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 571042e2e..2b8ed7626 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -39,7 +39,7 @@ "account.follows.empty": "Ta uporabnik še ne sledi nikomur.", "account.follows_you": "Vam sledi", "account.hide_reblogs": "Skrij izpostavitve od @{name}", - "account.joined": "Pridružen/a {date}", + "account.joined_short": "Joined", "account.languages": "Spremeni naročene jezike", "account.link_verified_on": "Lastništvo te povezave je bilo preverjeno {date}", "account.locked_info": "Stanje zasebnosti računa je nastavljeno na zaklenjeno. Lastnik ročno pregleda, kdo ga lahko spremlja.", @@ -79,18 +79,23 @@ "audio.hide": "Skrij zvok", "autosuggest_hashtag.per_week": "{count} na teden", "boost_modal.combo": "Če želite preskočiti to, lahko pritisnete {combo}", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Kopiraj poročilo o napaki", + "bundle_column_error.error.body": "Zahtevane strani ni mogoče upodobiti. Vzrok težave je morda hrošč v naši kodi ali pa nezdružljivost z brskalnikom.", + "bundle_column_error.error.title": "Oh, ne!", + "bundle_column_error.network.body": "Pri poskusu nalaganja te strani je prišlo do napake. Vzrok je lahko začasna težava z vašo internetno povezavo ali s tem strežnikom.", + "bundle_column_error.network.title": "Napaka omrežja", "bundle_column_error.retry": "Poskusi ponovno", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Nazaj domov", + "bundle_column_error.routing.body": "Zahtevane strani ni mogoče najti. Ali ste prepričani, da je naslov URL v naslovni vrstici pravilen?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Zapri", "bundle_modal_error.message": "Med nalaganjem te komponente je prišlo do napake.", "bundle_modal_error.retry": "Poskusi ponovno", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "O programu", "column.blocks": "Blokirani uporabniki", "column.bookmarks": "Zaznamki", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pripete objave", "navigation_bar.preferences": "Nastavitve", "navigation_bar.public_timeline": "Združena časovnica", + "navigation_bar.search": "Search", "navigation_bar.security": "Varnost", "not_signed_in_indicator.not_signed_in": "Za dostop do tega vira se morate prijaviti.", "notification.admin.report": "{name} je prijavil/a {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Nihče še ni izpostavil te objave. Ko se bo to zgodilo, se bodo pojavile tukaj.", "status.redraft": "Izbriši in preoblikuj", "status.remove_bookmark": "Odstrani zaznamek", + "status.replied_to": "Replied to {name}", "status.reply": "Odgovori", "status.replyAll": "Odgovori na objavo", "status.report": "Prijavi @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Prikaži več", "status.show_more_all": "Prikaži več za vse", "status.show_original": "Pokaži izvirnik", - "status.show_thread": "Prikaži objavo", "status.translate": "Prevedi", - "status.translated_from": "Prevedeno iz jezika: {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Ni na voljo", "status.unmute_conversation": "Odtišaj pogovor", "status.unpin": "Odpni iz profila", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index f30d920f8..3239d7cf4 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -39,7 +39,7 @@ "account.follows.empty": "Ky përdorues ende s’ndjek kënd.", "account.follows_you": "Ju ndjek", "account.hide_reblogs": "Fshih përforcime nga @{name}", - "account.joined": "U bë pjesë më {date}", + "account.joined_short": "Joined", "account.languages": "Ndryshoni gjuhë pajtimesh", "account.link_verified_on": "Pronësia e kësaj lidhjeje qe kontrolluar më {date}", "account.locked_info": "Gjendja e privatësisë së kësaj llogarie është caktuar si e kyçur. I zoti merr dorazi në shqyrtim cilët mund ta ndjekin.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Mbylle", "bundle_modal_error.message": "Diç shkoi ters teksa ngarkohej ky përbërës.", "bundle_modal_error.retry": "Riprovoni", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Mbi", "column.blocks": "Përdorues të bllokuar", "column.bookmarks": "Faqerojtës", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Mesazhe të fiksuar", "navigation_bar.preferences": "Parapëlqime", "navigation_bar.public_timeline": "Rrjedhë kohore të federuarish", + "navigation_bar.search": "Search", "navigation_bar.security": "Siguri", "not_signed_in_indicator.not_signed_in": "Që të përdorni këtë burim, lypset të bëni hyrjen.", "notification.admin.report": "{name} raportoi {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Këtë mesazh s’e ka përforcuar njeri deri tani. Kur ta bëjë dikush, kjo do të duket këtu.", "status.redraft": "Fshijeni & rihartojeni", "status.remove_bookmark": "Hiqe faqerojtësin", + "status.replied_to": "Replied to {name}", "status.reply": "Përgjigjuni", "status.replyAll": "Përgjigjuni rrjedhës", "status.report": "Raportojeni @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Shfaq më tepër", "status.show_more_all": "Shfaq më tepër për të tërë", "status.show_original": "Shfaq origjinalin", - "status.show_thread": "Shfaq rrjedhën", "status.translate": "Përktheje", - "status.translated_from": "Përkthyer nga {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Jo e passhme", "status.unmute_conversation": "Ktheji zërin bisedës", "status.unpin": "Shfiksoje nga profili", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 92f1bee4c..843fbcb11 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -39,7 +39,7 @@ "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Prati Vas", "account.hide_reblogs": "Sakrij podrške koje daje korisnika @{name}", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Zatvori", "bundle_modal_error.message": "Nešto nije bilo u redu pri učitavanju ove komponente.", "bundle_modal_error.retry": "Pokušajte ponovo", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blokirani korisnici", "column.bookmarks": "Bookmarks", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Prikačeni tutovi", "navigation_bar.preferences": "Podešavanja", "navigation_bar.public_timeline": "Federisana lajna", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Odgovori", "status.replyAll": "Odgovori na diskusiju", "status.report": "Prijavi korisnika @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Prikaži više", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Uključi prepisku", "status.unpin": "Otkači sa profila", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 9faac37bb..4c775626a 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -39,7 +39,7 @@ "account.follows.empty": "Корисник тренутно не прати никога.", "account.follows_you": "Прати Вас", "account.hide_reblogs": "Сакриј подршке које даје корисника @{name}", - "account.joined": "Придружио/ла се {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Власништво над овом везом је проверено {date}", "account.locked_info": "Статус приватности овог налога је подешен на закључано. Власник ручно прегледа ко га може пратити.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Затвори", "bundle_modal_error.message": "Нешто није било у реду при учитавању ове компоненте.", "bundle_modal_error.retry": "Покушајте поново", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Блокирани корисници", "column.bookmarks": "Обележивачи", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Прикачене трубе", "navigation_bar.preferences": "Подешавања", "navigation_bar.public_timeline": "Здружена временска линија", + "navigation_bar.search": "Search", "navigation_bar.security": "Безбедност", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Још увек нико није подржао ову трубу. Када буде подржана, појавиће се овде.", "status.redraft": "Избриши и преправи", "status.remove_bookmark": "Уклони обележивач", + "status.replied_to": "Replied to {name}", "status.reply": "Одговори", "status.replyAll": "Одговори на дискусију", "status.report": "Пријави корисника @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Прикажи више", "status.show_more_all": "Прикажи више за све", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Није доступно", "status.unmute_conversation": "Укључи преписку", "status.unpin": "Откачи са налога", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 32a405b9a..48c2a48ad 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -39,7 +39,7 @@ "account.follows.empty": "Denna användare följer inte någon än.", "account.follows_you": "Följer dig", "account.hide_reblogs": "Dölj knuffar från @{name}", - "account.joined": "Gick med {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ägarskap för detta konto kontrollerades den {date}", "account.locked_info": "Detta konto har låst integritetsstatus. Ägaren väljer manuellt vem som kan följa.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Stäng", "bundle_modal_error.message": "Något gick fel när denna komponent laddades.", "bundle_modal_error.retry": "Försök igen", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blockerade användare", "column.bookmarks": "Bokmärken", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Nålade inlägg (toots)", "navigation_bar.preferences": "Inställningar", "navigation_bar.public_timeline": "Federerad tidslinje", + "navigation_bar.search": "Search", "navigation_bar.security": "Säkerhet", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Ingen har favoriserat den här tutningen än. När någon gör det kommer den att synas här.", "status.redraft": "Radera & gör om", "status.remove_bookmark": "Ta bort bokmärke", + "status.replied_to": "Replied to {name}", "status.reply": "Svara", "status.replyAll": "Svara på tråden", "status.report": "Rapportera @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Visa mer", "status.show_more_all": "Visa mer för alla", "status.show_original": "Show original", - "status.show_thread": "Visa tråd", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Ej tillgängligt", "status.unmute_conversation": "Öppna konversation", "status.unpin": "Ångra fäst i profil", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index e00874966..cc0fa7069 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -39,7 +39,7 @@ "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 7f88275e4..8155200bb 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -39,7 +39,7 @@ "account.follows.empty": "இந்த பயனர் இதுவரை யாரையும் பின்தொடரவில்லை.", "account.follows_you": "உங்களைப் பின்தொடர்கிறார்", "account.hide_reblogs": "இருந்து ஊக்கியாக மறை @{name}", - "account.joined": "சேர்ந்த நாள் {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "இந்த இணைப்பை உரிமையாளர் சரிபார்க்கப்பட்டது {date}", "account.locked_info": "இந்தக் கணக்கு தனியுரிமை நிலை பூட்டப்பட்டுள்ளது. அவர்களைப் பின்தொடர்பவர் யார் என்பதை உரிமையாளர் கைமுறையாக மதிப்பாய்வு செய்கிறார்.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "மூடுக", "bundle_modal_error.message": "இக்கூற்றை ஏற்றம் செய்யும்பொழுது ஏதோ தவறு ஏற்பட்டுள்ளது.", "bundle_modal_error.retry": "மீண்டும் முயற்சி செய்", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "தடுக்கப்பட்ட பயனர்கள்", "column.bookmarks": "அடையாளக்குறிகள்", @@ -379,6 +384,7 @@ "navigation_bar.pins": "பொருத்தப்பட்டன toots", "navigation_bar.preferences": "விருப்பங்கள்", "navigation_bar.public_timeline": "கூட்டாட்சி காலக்கெடு", + "navigation_bar.search": "Search", "navigation_bar.security": "பத்திரம்", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "இதுவரை யாரும் இந்த மோதலை அதிகரிக்கவில்லை. யாராவது செய்தால், அவர்கள் இங்கே காண்பார்கள்.", "status.redraft": "நீக்கு மற்றும் மீண்டும் வரைவு", "status.remove_bookmark": "அடையாளம் நீக்கு", + "status.replied_to": "Replied to {name}", "status.reply": "பதில்", "status.replyAll": "நூலுக்கு பதிலளிக்கவும்", "status.report": "@{name} மீது புகாரளி", @@ -578,9 +585,8 @@ "status.show_more": "மேலும் காட்ட", "status.show_more_all": "அனைவருக்கும் மேலும் காட்டு", "status.show_original": "Show original", - "status.show_thread": "நூல் காட்டு", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "கிடைக்கவில்லை", "status.unmute_conversation": "ஊமையாக உரையாடல் இல்லை", "status.unpin": "சுயவிவரத்திலிருந்து நீக்கவும்", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index c70f45cdb..99d998ef6 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -39,7 +39,7 @@ "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index 75fd5644c..1815d4e3e 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -39,7 +39,7 @@ "account.follows.empty": "ఈ వినియోగదారి ఇంకా ఎవరినీ అనుసరించడంలేదు.", "account.follows_you": "మిమ్మల్ని అనుసరిస్తున్నారు", "account.hide_reblogs": "@{name} నుంచి బూస్ట్ లను దాచిపెట్టు", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "ఈ లంకె యొక్క యాజమాన్యం {date}న పరీక్షించబడింది", "account.locked_info": "ఈ ఖాతా యొక్క గోప్యత స్థితి లాక్ చేయబడి వుంది. ఈ ఖాతాను ఎవరు అనుసరించవచ్చో యజమానే నిర్ణయం తీసుకుంటారు.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "మూసివేయు", "bundle_modal_error.message": "ఈ భాగం లోడ్ అవుతున్నప్పుడు ఏదో తప్పు జరిగింది.", "bundle_modal_error.retry": "మళ్ళీ ప్రయత్నించండి", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "బ్లాక్ చేయబడిన వినియోగదారులు", "column.bookmarks": "Bookmarks", @@ -379,6 +384,7 @@ "navigation_bar.pins": "అతికించిన టూట్లు", "navigation_bar.preferences": "ప్రాధాన్యతలు", "navigation_bar.public_timeline": "సమాఖ్య కాలక్రమం", + "navigation_bar.search": "Search", "navigation_bar.security": "భద్రత", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "ఈ టూట్ను ఇంకా ఎవరూ బూస్ట్ చేయలేదు. ఎవరైనా చేసినప్పుడు, అవి ఇక్కడ కనబడతాయి.", "status.redraft": "తొలగించు & తిరగరాయు", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "ప్రత్యుత్తరం", "status.replyAll": "సంభాషణకు ప్రత్యుత్తరం ఇవ్వండి", "status.report": "@{name}పై ఫిర్యాదుచేయు", @@ -578,9 +585,8 @@ "status.show_more": "ఇంకా చూపించు", "status.show_more_all": "అన్నిటికీ ఇంకా చూపించు", "status.show_original": "Show original", - "status.show_thread": "గొలుసును చూపించు", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "సంభాషణను అన్మ్యూట్ చేయి", "status.unpin": "ప్రొఫైల్ నుండి పీకివేయు", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index d16f2c1ea..66f58d6ed 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -39,7 +39,7 @@ "account.follows.empty": "ผู้ใช้นี้ยังไม่ได้ติดตามใคร", "account.follows_you": "ติดตามคุณ", "account.hide_reblogs": "ซ่อนการดันจาก @{name}", - "account.joined": "เข้าร่วมเมื่อ {date}", + "account.joined_short": "Joined", "account.languages": "เปลี่ยนภาษาที่บอกรับ", "account.link_verified_on": "ตรวจสอบความเป็นเจ้าของของลิงก์นี้เมื่อ {date}", "account.locked_info": "มีการตั้งสถานะความเป็นส่วนตัวของบัญชีนี้เป็นล็อคอยู่ เจ้าของตรวจทานผู้ที่สามารถติดตามเขาด้วยตนเอง", @@ -79,18 +79,23 @@ "audio.hide": "ซ่อนเสียง", "autosuggest_hashtag.per_week": "{count} ต่อสัปดาห์", "boost_modal.combo": "คุณสามารถกด {combo} เพื่อข้ามสิ่งนี้ในครั้งถัดไป", - "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.copy_stacktrace": "คัดลอกรายงานข้อผิดพลาด", "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", "bundle_column_error.error.title": "Oh, no!", "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.network.title": "ข้อผิดพลาดเครือข่าย", "bundle_column_error.retry": "ลองอีกครั้ง", - "bundle_column_error.return": "Go back home", + "bundle_column_error.return": "กลับไปที่หน้าแรก", "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "ปิด", "bundle_modal_error.message": "มีบางอย่างผิดพลาดขณะโหลดส่วนประกอบนี้", "bundle_modal_error.retry": "ลองอีกครั้ง", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "เกี่ยวกับ", "column.blocks": "ผู้ใช้ที่ปิดกั้นอยู่", "column.bookmarks": "ที่คั่นหน้า", @@ -379,6 +384,7 @@ "navigation_bar.pins": "โพสต์ที่ปักหมุด", "navigation_bar.preferences": "การกำหนดลักษณะ", "navigation_bar.public_timeline": "เส้นเวลาที่ติดต่อกับภายนอก", + "navigation_bar.search": "Search", "navigation_bar.security": "ความปลอดภัย", "not_signed_in_indicator.not_signed_in": "คุณจำเป็นต้องลงชื่อเข้าเพื่อเข้าถึงทรัพยากรนี้", "notification.admin.report": "{name} ได้รายงาน {target}", @@ -530,7 +536,7 @@ "server_banner.server_stats": "สถิติเซิร์ฟเวอร์:", "sign_in_banner.create_account": "สร้างบัญชี", "sign_in_banner.sign_in": "ลงชื่อเข้า", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "sign_in_banner.text": "ลงชื่อเข้าเพื่อติดตามโปรไฟล์หรือแฮชแท็ก ชื่นชอบ แบ่งปัน และตอบกลับโพสต์ หรือโต้ตอบจากบัญชีของคุณในเซิร์ฟเวอร์อื่น", "status.admin_account": "เปิดส่วนติดต่อการควบคุมสำหรับ @{name}", "status.admin_status": "เปิดโพสต์นี้ในส่วนติดต่อการควบคุม", "status.block": "ปิดกั้น @{name}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "ยังไม่มีใครดันโพสต์นี้ เมื่อใครสักคนดัน เขาจะปรากฏที่นี่", "status.redraft": "ลบแล้วร่างใหม่", "status.remove_bookmark": "เอาที่คั่นหน้าออก", + "status.replied_to": "Replied to {name}", "status.reply": "ตอบกลับ", "status.replyAll": "ตอบกลับกระทู้", "status.report": "รายงาน @{name}", @@ -578,9 +585,8 @@ "status.show_more": "แสดงเพิ่มเติม", "status.show_more_all": "แสดงเพิ่มเติมทั้งหมด", "status.show_original": "แสดงดั้งเดิม", - "status.show_thread": "แสดงกระทู้", "status.translate": "แปล", - "status.translated_from": "แปลจาก {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "ไม่พร้อมใช้งาน", "status.unmute_conversation": "เลิกซ่อนการสนทนา", "status.unpin": "ถอนหมุดจากโปรไฟล์", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 6806aa199..4c1e7c066 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -27,9 +27,9 @@ "account.edit_profile": "Profili düzenle", "account.enable_notifications": "@{name}'in gönderilerini bana bildir", "account.endorse": "Profilimde öne çıkar", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Son gönderinin tarihi {date}", + "account.featured_tags.last_status_never": "Gönderi yok", + "account.featured_tags.title": "{name} kişisinin öne çıkan etiketleri", "account.follow": "Takip et", "account.followers": "Takipçi", "account.followers.empty": "Henüz kimse bu kullanıcıyı takip etmiyor.", @@ -39,7 +39,7 @@ "account.follows.empty": "Bu kullanıcı henüz hiçkimseyi takip etmiyor.", "account.follows_you": "Seni takip ediyor", "account.hide_reblogs": "@{name} kişisinin boostlarını gizle", - "account.joined": "{date} tarihinde katıldı", + "account.joined_short": "Joined", "account.languages": "Abone olunan dilleri değiştir", "account.link_verified_on": "Bu bağlantının sahipliği {date} tarihinde kontrol edildi", "account.locked_info": "Bu hesabın gizlilik durumu gizli olarak ayarlanmış. Sahibi, onu kimin takip edebileceğini manuel olarak onaylıyor.", @@ -79,18 +79,23 @@ "audio.hide": "Sesi gizle", "autosuggest_hashtag.per_week": "Haftada {count}", "boost_modal.combo": "Bir daha ki sefere {combo} tuşuna basabilirsin", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Hata raporunu kopyala", + "bundle_column_error.error.body": "İstenen sayfa gösterilemiyor. Bu durum kodumuzdaki bir hatadan veya tarayıcı uyum sorunundan kaynaklanıyor olabilir.", + "bundle_column_error.error.title": "Ah, hayır!", + "bundle_column_error.network.body": "Sayfayı yüklemeye çalışırken bir hata oluştu. Bu durum internet bağlantınızdaki veya bu sunucudaki geçici bir sorundan kaynaklanıyor olabilir.", + "bundle_column_error.network.title": "Ağ hatası", "bundle_column_error.retry": "Tekrar deneyin", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Anasayfaya geri dön", + "bundle_column_error.routing.body": "İstenen sayfa bulunamadı. Adres çubuğundaki URL'nin doğru olduğundan emin misiniz?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Kapat", "bundle_modal_error.message": "Bu bileşen yüklenirken bir şeyler ters gitti.", "bundle_modal_error.retry": "Tekrar deneyin", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Hakkında", "column.blocks": "Engellenen kullanıcılar", "column.bookmarks": "Yer İmleri", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Sabitlenmiş gönderiler", "navigation_bar.preferences": "Tercihler", "navigation_bar.public_timeline": "Federe zaman tüneli", + "navigation_bar.search": "Search", "navigation_bar.security": "Güvenlik", "not_signed_in_indicator.not_signed_in": "Bu kaynağa erişmek için oturum açmanız gerekir.", "notification.admin.report": "{name}, {target} kişisini bildirdi", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Henüz kimse bu gönderiyi teşvik etmedi. Biri yaptığında burada görünecek.", "status.redraft": "Sil ve yeniden taslak yap", "status.remove_bookmark": "Yer imini kaldır", + "status.replied_to": "Replied to {name}", "status.reply": "Yanıtla", "status.replyAll": "Konuyu yanıtla", "status.report": "@{name} adlı kişiyi bildir", @@ -578,9 +585,8 @@ "status.show_more": "Daha fazlasını göster", "status.show_more_all": "Hepsi için daha fazla göster", "status.show_original": "Orijinali göster", - "status.show_thread": "Konuyu göster", "status.translate": "Çevir", - "status.translated_from": "{lang} dilinden çevrildi", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Mevcut değil", "status.unmute_conversation": "Sohbet sesini aç", "status.unpin": "Profilden sabitlemeyi kaldır", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index cd87bd7a6..eba18f8fc 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -39,7 +39,7 @@ "account.follows.empty": "Беркемгә дә язылмаган әле.", "account.follows_you": "Сезгә язылган", "account.hide_reblogs": "Hide boosts from @{name}", - "account.joined": "{date} көнендә теркәлде", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "Бу - ябык аккаунт. Аны язылучылар гына күрә ала.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Ябу", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blocked users", "column.bookmarks": "Кыстыргычлар", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Caylaw", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Хәвефсезлек", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Күбрәк күрсәтү", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index e00874966..cc0fa7069 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -39,7 +39,7 @@ "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index dd5a396d8..995d2afcc 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -39,7 +39,7 @@ "account.follows.empty": "Цей користувач ще ні на кого не підписався.", "account.follows_you": "Підписані на вас", "account.hide_reblogs": "Сховати поширення від @{name}", - "account.joined": "Долучилися {date}", + "account.joined_short": "Joined", "account.languages": "Змінити підписані мови", "account.link_verified_on": "Права власності на це посилання були перевірені {date}", "account.locked_info": "Це закритий обліковий запис. Власник вручну обирає, хто може на нього підписуватися.", @@ -79,18 +79,23 @@ "audio.hide": "Сховати аудіо", "autosuggest_hashtag.per_week": "{count} в тиждень", "boost_modal.combo": "Ви можете натиснути {combo}, щоб пропустити це наступного разу", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Копіювати звіт про помилку", + "bundle_column_error.error.body": "Неможливо показати запитану сторінку. Це може бути спричинено помилкою у нашому коді, або через проблему сумісності з браузером.", + "bundle_column_error.error.title": "О, ні!", + "bundle_column_error.network.body": "Під час завантаження цієї сторінки сталася помилка. Це могло статися через тимчасову проблему з вашим інтернетом чи цим сервером.", + "bundle_column_error.network.title": "Помилка мережі", "bundle_column_error.retry": "Спробуйте ще раз", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "На головну", + "bundle_column_error.routing.body": "Запитувана сторінка не знайдена. Ви впевнені, що URL-адреса у панелі адрес правильна?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Закрити", "bundle_modal_error.message": "Щось пішло не так під час завантаження цього компоненту.", "bundle_modal_error.retry": "Спробувати ще раз", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Про застосунок", "column.blocks": "Заблоковані користувачі", "column.bookmarks": "Закладки", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Закріплені дописи", "navigation_bar.preferences": "Налаштування", "navigation_bar.public_timeline": "Глобальна стрічка", + "navigation_bar.search": "Search", "navigation_bar.security": "Безпека", "not_signed_in_indicator.not_signed_in": "Для доступу до цього ресурсу вам потрібно увійти.", "notification.admin.report": "Скарга від {name} на {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Ніхто ще не передмухнув цього дмуху. Коли якісь користувачі це зроблять, вони будуть відображені тут.", "status.redraft": "Видалити та перестворити", "status.remove_bookmark": "Видалити закладку", + "status.replied_to": "Replied to {name}", "status.reply": "Відповісти", "status.replyAll": "Відповісти на ланцюжок", "status.report": "Поскаржитися на @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Розгорнути", "status.show_more_all": "Показувати більше для всіх", "status.show_original": "Показати оригінал", - "status.show_thread": "Показати ланцюжок", "status.translate": "Перекласти", - "status.translated_from": "Перекладено з {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Недоступно", "status.unmute_conversation": "Не ігнорувати діалог", "status.unpin": "Відкріпити від профілю", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index f68c829bb..03b648fe9 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -39,7 +39,7 @@ "account.follows.empty": "\"یہ صارف ہنوز کسی کی پیروی نہیں کرتا ہے\".", "account.follows_you": "آپ کا پیروکار ہے", "account.hide_reblogs": "@{name} سے فروغ چھپائیں", - "account.joined": "{date} شامل ہوئے", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "اس لنک کی ملکیت کی توثیق {date} پر کی گئی تھی", "account.locked_info": "اس اکاونٹ کا اخفائی ضابطہ مقفل ہے۔ صارف کی پیروی کون کر سکتا ہے اس کا جائزہ وہ خود لیتا ہے.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "بند کریں", "bundle_modal_error.message": "اس عنصر کو برآمد کرتے وقت کچھ خرابی پیش آئی ہے.", "bundle_modal_error.retry": "دوبارہ کوشش کریں", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "مسدود صارفین", "column.bookmarks": "بُک مارکس", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "ترجیحات", "navigation_bar.public_timeline": "وفاقی ٹائم لائن", + "navigation_bar.search": "Search", "navigation_bar.security": "سیکورٹی", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 1ef82dffd..b05bed774 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -39,7 +39,7 @@ "account.follows.empty": "Người này chưa theo dõi ai.", "account.follows_you": "Đang theo dõi bạn", "account.hide_reblogs": "Ẩn tút @{name} đăng lại", - "account.joined": "Đã tham gia {date}", + "account.joined_short": "Joined", "account.languages": "Đổi ngôn ngữ mong muốn", "account.link_verified_on": "Liên kết này đã được xác minh vào {date}", "account.locked_info": "Đây là tài khoản riêng tư. Chủ tài khoản tự mình xét duyệt các yêu cầu theo dõi.", @@ -79,18 +79,23 @@ "audio.hide": "Ẩn âm thanh", "autosuggest_hashtag.per_week": "{count} mỗi tuần", "boost_modal.combo": "Nhấn {combo} để bỏ qua bước này", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Sao chép báo lỗi", + "bundle_column_error.error.body": "Không thể hiện trang này. Đây có thể là một lỗi trong mã lập trình của chúng tôi, hoặc là vấn đề tương thích của trình duyệt.", + "bundle_column_error.error.title": "Ôi không!", + "bundle_column_error.network.body": "Đã xảy ra lỗi khi tải trang này. Đây có thể là vấn đề tạm thời rớt mạng của bạn hoặc máy chủ này.", + "bundle_column_error.network.title": "Lỗi mạng", "bundle_column_error.retry": "Thử lại", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Quay lại trang chủ", + "bundle_column_error.routing.body": "Không thể tìm thấy trang cần tìm. Bạn có chắc URL trong thanh địa chỉ là chính xác?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Đóng", "bundle_modal_error.message": "Đã có lỗi xảy ra trong khi tải nội dung này.", "bundle_modal_error.retry": "Thử lại", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Giới thiệu", "column.blocks": "Người đã chặn", "column.bookmarks": "Đã lưu", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Tút ghim", "navigation_bar.preferences": "Cài đặt", "navigation_bar.public_timeline": "Thế giới", + "navigation_bar.search": "Search", "navigation_bar.security": "Bảo mật", "not_signed_in_indicator.not_signed_in": "Bạn cần đăng nhập để truy cập mục này.", "notification.admin.report": "{name} đã báo cáo {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Tút này chưa có ai đăng lại. Nếu có, nó sẽ hiển thị ở đây.", "status.redraft": "Xóa và viết lại", "status.remove_bookmark": "Bỏ lưu", + "status.replied_to": "Replied to {name}", "status.reply": "Trả lời", "status.replyAll": "Trả lời người đăng tút", "status.report": "Báo cáo @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Xem thêm", "status.show_more_all": "Hiển thị tất cả", "status.show_original": "Bản gốc", - "status.show_thread": "Trích nguyên văn", "status.translate": "Dịch", - "status.translated_from": "Dịch từ {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Uncached", "status.unmute_conversation": "Quan tâm", "status.unpin": "Bỏ ghim trên hồ sơ", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index 41fe0786a..681667a2f 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -39,7 +39,7 @@ "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "ⴹⴼⵕⵏ ⴽⵯⵏ", "account.hide_reblogs": "Hide boosts from @{name}", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "ⵔⴳⵍ", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "ⴰⵍⵙ ⴰⵔⵎ", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "ⵉⵏⵙⵙⵎⵔⵙⵏ ⵜⵜⵓⴳⴷⵍⵏⵉⵏ", "column.bookmarks": "Bookmarks", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "ⵔⴰⵔ", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "ⵙⵎⴰⵍ ⵓⴳⴳⴰⵔ", "status.show_more_all": "ⵙⵎⴰⵍ ⵓⴳⴳⴰⵔ ⵉ ⵎⴰⵕⵕⴰ", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 9a2c4a03d..bbc124907 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "被限制的服务器", + "about.contact": "联系方式:", + "about.domain_blocks.comment": "原因", + "about.domain_blocks.domain": "域名", + "about.domain_blocks.preamble": "通常来说,在 Mastodon 上,你可以浏览联邦宇宙中任何一台服务器上的内容,并且和上面的用户互动。但其中一些在本服务器上被设置为例外。", + "about.domain_blocks.severity": "级别", + "about.domain_blocks.silenced.explanation": "除非明确地搜索并关注对方,否则你不会看到来自此服务器的用户信息与内容。", + "about.domain_blocks.silenced.title": "已隐藏", + "about.domain_blocks.suspended.explanation": "此服务器的数据将不会被处理、存储或者交换,本站也将无法和来自此服务器的用户互动或者交流。", + "about.domain_blocks.suspended.title": "已封禁", + "about.not_available": "此信息在当前服务器尚不可用。", + "about.powered_by": "由 {mastodon} 驱动的分布式社交媒体", + "about.rules": "站点规则", "account.account_note_header": "备注", "account.add_or_remove_from_list": "从列表中添加或移除", "account.badges.bot": "机器人", @@ -20,16 +20,16 @@ "account.block_domain": "屏蔽 {domain} 实例", "account.blocked": "已屏蔽", "account.browse_more_on_origin_server": "在原始个人资料页面上浏览详情", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "撤回关注请求", "account.direct": "发送私信给 @{name}", "account.disable_notifications": "当 @{name} 发嘟时不要通知我", "account.domain_blocked": "域名已屏蔽", "account.edit_profile": "修改个人资料", "account.enable_notifications": "当 @{name} 发嘟时通知我", "account.endorse": "在个人资料中推荐此用户", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "最近发言于 {date}", + "account.featured_tags.last_status_never": "暂无嘟文", + "account.featured_tags.title": "{name} 的精选标签", "account.follow": "关注", "account.followers": "关注者", "account.followers.empty": "目前无人关注此用户。", @@ -39,7 +39,7 @@ "account.follows.empty": "此用户目前尚未关注任何人。", "account.follows_you": "关注了你", "account.hide_reblogs": "隐藏来自 @{name} 的转贴", - "account.joined": "加入于 {date}", + "account.joined_short": "Joined", "account.languages": "更改订阅语言", "account.link_verified_on": "此链接的所有权已在 {date} 检查", "account.locked_info": "此账户已锁嘟。账户所有者会手动审核关注者。", @@ -79,18 +79,23 @@ "audio.hide": "隐藏音频", "autosuggest_hashtag.per_week": "每星期 {count} 条", "boost_modal.combo": "下次按住 {combo} 即可跳过此提示", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "复制错误报告", + "bundle_column_error.error.body": "请求的页面无法渲染。这可能是由于代码错误或浏览器兼容性等问题造成。", + "bundle_column_error.error.title": "糟糕!", + "bundle_column_error.network.body": "尝试加载此页面时出错。这可能是由于你到此服务器的网络连接存在问题。", + "bundle_column_error.network.title": "网络错误", "bundle_column_error.retry": "重试", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "返回首页", + "bundle_column_error.routing.body": "找不到请求的页面。你确定地址栏中的 URL 正确吗?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "关闭", "bundle_modal_error.message": "载入这个组件时发生了错误。", "bundle_modal_error.retry": "重试", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "关于", "column.blocks": "已屏蔽的用户", "column.bookmarks": "书签", @@ -144,8 +149,8 @@ "confirmations.block.block_and_report": "屏蔽与举报", "confirmations.block.confirm": "屏蔽", "confirmations.block.message": "你确定要屏蔽 {name} 吗?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "撤回请求", + "confirmations.cancel_follow_request.message": "确定要撤回对 {name} 的关注请求吗?", "confirmations.delete.confirm": "删除", "confirmations.delete.message": "你确定要删除这条嘟文吗?", "confirmations.delete_list.confirm": "删除", @@ -169,18 +174,18 @@ "conversation.mark_as_read": "标记为已读", "conversation.open": "查看对话", "conversation.with": "与 {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "已复制", + "copypaste.copy": "复制", "directory.federated": "来自已知联邦宇宙", "directory.local": "仅来自 {domain}", "directory.new_arrivals": "新来者", "directory.recently_active": "最近活跃", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "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_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "这些是来自 {domain} 用户的最新公共嘟文。", + "dismissable_banner.dismiss": "忽略", + "dismissable_banner.explore_links": "这些新闻故事正被本站和分布式网络上其他站点的用户谈论。", + "dismissable_banner.explore_statuses": "来自本站和分布式网络上其他站点的这些嘟文正在本站引起关注。", + "dismissable_banner.explore_tags": "这些标签正在本站和分布式网络上其他站点的用户中引起关注。", + "dismissable_banner.public_timeline": "这些是来自本站和分布式网络上其他已知站点用户的最新公共嘟文。", "embed.instructions": "复制下列代码以在你的网站中嵌入此嘟文。", "embed.preview": "它会像这样显示出来:", "emoji_button.activity": "活动", @@ -278,18 +283,18 @@ "home.column_settings.show_replies": "显示回复", "home.hide_announcements": "隐藏公告", "home.show_announcements": "显示公告", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "拥有一个 Mastodon 账号,你可以对此嘟文点赞及收藏,并让其作者收到你的赞赏。", + "interaction_modal.description.follow": "拥有一个 Mastodon 账号,你可以关注 {name} 并在自己的首页上接收对方的新嘟文。", + "interaction_modal.description.reblog": "拥有一个 Mastodon 账号,你可以向自己的关注者们转发此嘟文。", + "interaction_modal.description.reply": "拥有一个 Mastodon 账号,你可以回复此嘟文。", + "interaction_modal.on_another_server": "在另一服务器", + "interaction_modal.on_this_server": "在此服务器", + "interaction_modal.other_server_instructions": "只需复制此 URL 并将其粘贴在搜索栏中,使用你喜欢的应用或网页界面均可。", + "interaction_modal.preamble": "由于 Mastodon 是去中心化的,如果你在本站没有账号,也可以使用在另一 Mastodon 服务器或其他兼容平台上的已有账号。", + "interaction_modal.title.favourite": "喜欢 {name} 的嘟文", + "interaction_modal.title.follow": "关注 {name}", + "interaction_modal.title.reblog": "转发 {name} 的嘟文", + "interaction_modal.title.reply": "回复 {name} 的嘟文", "intervals.full.days": "{number} 天", "intervals.full.hours": "{number} 小时", "intervals.full.minutes": "{number} 分钟", @@ -379,6 +384,7 @@ "navigation_bar.pins": "置顶嘟文", "navigation_bar.preferences": "首选项", "navigation_bar.public_timeline": "跨站公共时间轴", + "navigation_bar.search": "Search", "navigation_bar.security": "安全", "not_signed_in_indicator.not_signed_in": "您需要登录才能访问此资源。", "notification.admin.report": "{name} 已报告 {target}", @@ -448,8 +454,8 @@ "privacy.public.short": "公开", "privacy.unlisted.long": "对所有人可见,但不加入探索功能", "privacy.unlisted.short": "不公开", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "最近更新于 {date}", + "privacy_policy.title": "隐私政策", "refresh": "刷新", "regeneration_indicator.label": "加载中……", "regeneration_indicator.sublabel": "你的主页动态正在准备中!", @@ -567,6 +573,7 @@ "status.reblogs.empty": "没有人转嘟过此条嘟文。如果有人转嘟了,就会显示在这里。", "status.redraft": "删除并重新编辑", "status.remove_bookmark": "移除书签", + "status.replied_to": "Replied to {name}", "status.reply": "回复", "status.replyAll": "回复所有人", "status.report": "举报 @{name}", @@ -578,9 +585,8 @@ "status.show_more": "显示更多", "status.show_more_all": "显示全部内容", "status.show_original": "显示原文", - "status.show_thread": "显示全部对话", "status.translate": "翻译", - "status.translated_from": "翻译自 {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "暂不可用", "status.unmute_conversation": "恢复此对话的通知提醒", "status.unpin": "在个人资料页面取消置顶", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index abc6d98d8..7fd51bfa7 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -39,7 +39,7 @@ "account.follows.empty": "這位使用者尚未關注任何人。", "account.follows_you": "關注你", "account.hide_reblogs": "隱藏 @{name} 的轉推", - "account.joined": "於 {date} 加入", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "此連結的所有權已在 {date} 檢查過", "account.locked_info": "這位使用者將私隱設定為「不公開」,會手動審批誰能關注他/她。", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "關閉", "bundle_modal_error.message": "加載本組件出錯。", "bundle_modal_error.retry": "重試", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "封鎖名單", "column.bookmarks": "書籤", @@ -379,6 +384,7 @@ "navigation_bar.pins": "置頂文章", "navigation_bar.preferences": "偏好設定", "navigation_bar.public_timeline": "跨站時間軸", + "navigation_bar.search": "Search", "navigation_bar.security": "安全", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "還未有人轉推。有的話會顯示在這裡。", "status.redraft": "刪除並編輯", "status.remove_bookmark": "移除書籤", + "status.replied_to": "Replied to {name}", "status.reply": "回應", "status.replyAll": "回應所有人", "status.report": "舉報 @{name}", @@ -578,9 +585,8 @@ "status.show_more": "展開", "status.show_more_all": "全部展開", "status.show_original": "Show original", - "status.show_thread": "顯示討論串", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "無法使用", "status.unmute_conversation": "對話解除靜音", "status.unpin": "解除置頂", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 7d76a8cd0..d75a57e32 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -39,7 +39,7 @@ "account.follows.empty": "這位使用者尚未跟隨任何人。", "account.follows_you": "跟隨了您", "account.hide_reblogs": "隱藏來自 @{name} 的轉嘟", - "account.joined": "加入於 {date}", + "account.joined_short": "Joined", "account.languages": "變更訂閱的語言", "account.link_verified_on": "已在 {date} 檢查此連結的擁有者權限", "account.locked_info": "此帳戶的隱私狀態被設為鎖定。該擁有者會手動審核能跟隨此帳號的人。", @@ -79,18 +79,23 @@ "audio.hide": "隱藏音訊", "autosuggest_hashtag.per_week": "{count} / 週", "boost_modal.combo": "下次您可以按 {combo} 跳過", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "複製錯誤報告", + "bundle_column_error.error.body": "無法繪製請求的頁面。這可能是因為我們程式碼中的臭蟲或是瀏覽器的相容問題。", + "bundle_column_error.error.title": "糟糕!", + "bundle_column_error.network.body": "嘗試載入此頁面時發生錯誤。這可能是因為您的網際網路連線或此伺服器有暫時性的問題。", + "bundle_column_error.network.title": "網路錯誤", "bundle_column_error.retry": "重試", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "返回首頁", + "bundle_column_error.routing.body": "找不到請求的頁面。您確定網址列中的 URL 是正確的嗎?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "關閉", "bundle_modal_error.message": "載入此元件時發生錯誤。", "bundle_modal_error.retry": "重試", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "關於", "column.blocks": "已封鎖的使用者", "column.bookmarks": "書籤", @@ -379,6 +384,7 @@ "navigation_bar.pins": "釘選的嘟文", "navigation_bar.preferences": "偏好設定", "navigation_bar.public_timeline": "聯邦時間軸", + "navigation_bar.search": "Search", "navigation_bar.security": "安全性", "not_signed_in_indicator.not_signed_in": "您需要登入才能存取此資源。", "notification.admin.report": "{name} 檢舉了 {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "還沒有人轉嘟過這則嘟文。當有人轉嘟時,它將於此顯示。", "status.redraft": "刪除並重新編輯", "status.remove_bookmark": "移除書籤", + "status.replied_to": "Replied to {name}", "status.reply": "回覆", "status.replyAll": "回覆討論串", "status.report": "檢舉 @{name}", @@ -578,9 +585,8 @@ "status.show_more": "顯示更多", "status.show_more_all": "顯示更多這類嘟文", "status.show_original": "顯示原文", - "status.show_thread": "顯示討論串", "status.translate": "翻譯", - "status.translated_from": "翻譯自 {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "無法使用", "status.unmute_conversation": "解除此對話的靜音", "status.unpin": "從個人檔案頁面解除釘選", diff --git a/config/locales/activerecord.ca.yml b/config/locales/activerecord.ca.yml index ddf3fed4e..5f109c2c1 100644 --- a/config/locales/activerecord.ca.yml +++ b/config/locales/activerecord.ca.yml @@ -29,6 +29,10 @@ ca: attributes: website: invalid: no és una URL vàlida + import: + attributes: + data: + malformed: està mal format status: attributes: reblog: diff --git a/config/locales/activerecord.es-AR.yml b/config/locales/activerecord.es-AR.yml index d1eda3406..e00b80696 100644 --- a/config/locales/activerecord.es-AR.yml +++ b/config/locales/activerecord.es-AR.yml @@ -29,6 +29,10 @@ es-AR: attributes: website: invalid: no es una dirección web válida + import: + attributes: + data: + malformed: está malformado status: attributes: reblog: diff --git a/config/locales/activerecord.gl.yml b/config/locales/activerecord.gl.yml index a80e3ece5..939300894 100644 --- a/config/locales/activerecord.gl.yml +++ b/config/locales/activerecord.gl.yml @@ -29,6 +29,10 @@ gl: attributes: website: invalid: non é un URL válido + import: + attributes: + data: + malformed: ten formato incorrecto status: attributes: reblog: diff --git a/config/locales/activerecord.is.yml b/config/locales/activerecord.is.yml index 1fe540322..fa3406fe3 100644 --- a/config/locales/activerecord.is.yml +++ b/config/locales/activerecord.is.yml @@ -29,6 +29,10 @@ is: attributes: website: invalid: er ekki gild vefslóð + import: + attributes: + data: + malformed: er rangt formað status: attributes: reblog: diff --git a/config/locales/activerecord.it.yml b/config/locales/activerecord.it.yml index 388c354ae..ef2319520 100644 --- a/config/locales/activerecord.it.yml +++ b/config/locales/activerecord.it.yml @@ -29,6 +29,10 @@ it: attributes: website: invalid: non è un URL valido + import: + attributes: + data: + malformed: è malformato status: attributes: reblog: diff --git a/config/locales/activerecord.ko.yml b/config/locales/activerecord.ko.yml index 8ce4c0701..9697215b5 100644 --- a/config/locales/activerecord.ko.yml +++ b/config/locales/activerecord.ko.yml @@ -29,6 +29,10 @@ ko: attributes: website: invalid: 올바른 URL이 아닙니다 + import: + attributes: + data: + malformed: 데이터가 올바르지 않습니다 status: attributes: reblog: diff --git a/config/locales/activerecord.lv.yml b/config/locales/activerecord.lv.yml index ba31a8b3c..649cdeedd 100644 --- a/config/locales/activerecord.lv.yml +++ b/config/locales/activerecord.lv.yml @@ -29,6 +29,10 @@ lv: attributes: website: invalid: nav derīgs URL + import: + attributes: + data: + malformed: ir nepareizi veidots status: attributes: reblog: diff --git a/config/locales/activerecord.nl.yml b/config/locales/activerecord.nl.yml index 7bfe0f710..0e1f824b7 100644 --- a/config/locales/activerecord.nl.yml +++ b/config/locales/activerecord.nl.yml @@ -29,6 +29,10 @@ nl: attributes: website: invalid: is een ongeldige URL + import: + attributes: + data: + malformed: heeft de verkeerde opmaak status: attributes: reblog: diff --git a/config/locales/activerecord.pt-PT.yml b/config/locales/activerecord.pt-PT.yml index b730eaf67..388e21fe1 100644 --- a/config/locales/activerecord.pt-PT.yml +++ b/config/locales/activerecord.pt-PT.yml @@ -29,6 +29,10 @@ pt-PT: attributes: website: invalid: não é um URL válido + import: + attributes: + data: + malformed: está malformado status: attributes: reblog: diff --git a/config/locales/activerecord.sv.yml b/config/locales/activerecord.sv.yml index 7c217efca..89a757463 100644 --- a/config/locales/activerecord.sv.yml +++ b/config/locales/activerecord.sv.yml @@ -21,6 +21,10 @@ sv: username: invalid: endast bokstäver, siffror och understrykning reserved: är reserverat + import: + attributes: + data: + malformed: är felformad status: attributes: reblog: diff --git a/config/locales/activerecord.uk.yml b/config/locales/activerecord.uk.yml index 159f6d40a..0f4973d89 100644 --- a/config/locales/activerecord.uk.yml +++ b/config/locales/activerecord.uk.yml @@ -29,6 +29,10 @@ uk: attributes: website: invalid: не є дійсною URL-адресою + import: + attributes: + data: + malformed: неправильний status: attributes: reblog: diff --git a/config/locales/activerecord.vi.yml b/config/locales/activerecord.vi.yml index 9062dc532..ca3402f47 100644 --- a/config/locales/activerecord.vi.yml +++ b/config/locales/activerecord.vi.yml @@ -6,8 +6,8 @@ vi: expires_at: Hạn chót options: Lựa chọn user: - agreement: Đồng ý quy tắc - email: Địa chỉ email + agreement: Thỏa thuận dịch vụ + email: Địa chỉ e-mail locale: Quốc gia password: Mật khẩu user/account: @@ -29,6 +29,10 @@ vi: attributes: website: invalid: không phải là một URL hợp lệ + import: + attributes: + data: + malformed: bị hỏng status: attributes: reblog: diff --git a/config/locales/activerecord.zh-TW.yml b/config/locales/activerecord.zh-TW.yml index 2ebb4460c..2548bdb23 100644 --- a/config/locales/activerecord.zh-TW.yml +++ b/config/locales/activerecord.zh-TW.yml @@ -29,6 +29,10 @@ zh-TW: attributes: website: invalid: 不是有效的 URL + import: + attributes: + data: + malformed: 資料不正確 status: attributes: reblog: diff --git a/config/locales/ar.yml b/config/locales/ar.yml index a4a0aec5c..07f4ad470 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -5,6 +5,7 @@ ar: contact_missing: لم يتم تعيينه contact_unavailable: غير متوفر hosted_on: ماستدون مُستضاف على %{domain} + title: عن accounts: follow: اتبع followers: @@ -50,6 +51,8 @@ ar: new_email: عنوان البريد الإلكتروني الجديد submit: تعديل عنوان البريد الإلكتروني title: تعديل عنوان البريد الإلكتروني الخاص بـ %{username} + change_role: + label: تغيير الدور confirm: تأكيد confirmed: مؤكَّد confirming: التأكد @@ -123,6 +126,7 @@ ar: reset: إعادة التعيين reset_password: إعادة ضبط كلمة السر resubscribe: إعادة الاشتراك + role: الدور search: البحث search_same_email_domain: مستخدمون آخرون لديهم نفس نطاق البريد الإلكتروني search_same_ip: مستخدِمون آخرون بنفس الـ IP @@ -529,6 +533,28 @@ ar: unresolved: غير معالجة updated_at: محدث view_profile: اعرض الصفحة التعريفية + roles: + add_new: إضافة دور + categories: + administration: الإدارة + invites: الدعوات + moderation: الإشراف + special: مميز + delete: حذف + everyone: الصلاحيات الافتراضية + privileges: + administrator: مدير + manage_announcements: ادارة الاعلانات + manage_appeals: إدارة الاستئنافات + manage_federation: إدارة الفديرالية + manage_invites: إدارة الدعوات + manage_reports: إدارة التقارير + manage_roles: إدارة الأدوار + manage_rules: إدارة القواعد + manage_settings: إدارة الإعدادات + manage_user_access: إدارة وصول المستخدم + manage_users: إدارة المستخدمين + title: الأدوار rules: add_new: إضافة قاعدة delete: حذف @@ -537,27 +563,49 @@ ar: empty: لم يتم تحديد قواعد الخادم بعد. title: قوانين الخادم settings: + about: + manage_rules: إدارة قواعد الخادم + title: عن + appearance: + title: المظهر + branding: + title: العلامة + content_retention: + title: الاحتفاظ بالمحتوى + discovery: + profile_directory: دليل الصفحات التعريفية + public_timelines: الخيوط الزمنية العامة + title: الاستكشاف + trends: المتداوَلة domain_blocks: all: للجميع disabled: لا أحد users: للمستخدمين المتصلين محليا + registrations: + title: التسجيلات registrations_mode: modes: approved: طلب الموافقة لازم عند إنشاء حساب none: لا أحد يمكنه إنشاء حساب open: يمكن للجميع إنشاء حساب + title: إعدادات الخادم site_uploads: delete: احذف الملف الذي تم تحميله destroyed_msg: تم حذف التحميل مِن الموقع بنجاح! statuses: + account: المؤلف + application: التطبيق back_to_account: العودة إلى صفحة الحساب back_to_report: العودة إلى صفحة التقرير batch: remove_from_report: إزالة من التقرير report: إبلاغ deleted: محذوف + favourites: المفضلة + language: اللغة media: title: الوسائط + metadata: البيانات الوصفية no_status_selected: لم يطرأ أي تغيير على أي منشور بما أنه لم يتم اختيار أي واحد title: منشورات الحساب with_media: تحتوي على وسائط @@ -625,6 +673,8 @@ ar: edit_preset: تعديل نموذج التحذير empty: لم تحدد أي إعدادات تحذير مسبقة بعد. title: إدارة نماذج التحذير + webhooks: + delete: حذف admin_mailer: new_appeal: actions: @@ -683,6 +733,7 @@ ar: warning: كن حذرا مع هذه البيانات. لا تقم أبدا بمشاركتها مع الآخَرين! your_token: رمز نفاذك auth: + apply_for_account: انضم إلى قائمة الانتظار change_password: الكلمة السرية delete_account: حذف الحساب delete_account_html: إن كنت ترغب في حذف حسابك يُمكنك المواصلة هنا. سوف يُطلَبُ منك التأكيد قبل الحذف. @@ -709,6 +760,8 @@ ar: registration_closed: لا يقبل %{instance} استقبال أعضاء جدد resend_confirmation: إعادة إرسال تعليمات التأكيد reset_password: إعادة تعيين كلمة المرور + rules: + title: بعض القواعد الأساسية. security: الأمان set_new_password: إدخال كلمة مرور جديدة setup: @@ -852,6 +905,8 @@ ar: public: الخيوط الزمنية العامة thread: المحادثات edit: + add_keyword: إضافة كلمة مفتاحية + keywords: الكلمات المفتاحية title: تعديل عامل التصفية errors: invalid_context: لم تقم بتحديد أي مجال أو أنّ المجال غير صالح @@ -1055,6 +1110,8 @@ ar: other: إعدادات أخرى posting_defaults: التفضيلات الافتراضية للنشر public_timelines: الخيوط الزمنية العامة + privacy_policy: + title: سياسة الخصوصية reactions: errors: limit_reached: تم بلوغ الحد الأقصى لردود الفعل المختلفة diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 5b0913293..873d5a67c 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -705,16 +705,29 @@ ca: delete: Esborra el fitxer pujat destroyed_msg: La càrrega al lloc s'ha suprimit correctament! statuses: + account: Autor + application: Aplicació back_to_account: Torna a la pàgina del compte back_to_report: Torna a la pàgina del informe batch: remove_from_report: Treu del informe report: Informe deleted: Eliminada + favourites: Favorits + history: Històric de versions + in_reply_to: Responent a + language: Llengua media: title: Contingut multimèdia + metadata: Metadada no_status_selected: No s’han canviat els estatus perquè cap no ha estat seleccionat + open: Obrir apunt + original_status: Apunt original + reblogs: Impulsos + status_changed: Apunt canviat title: Estats del compte + trending: Tendència + visibility: Visibilitat with_media: Amb contingut multimèdia strikes: actions: diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 64224e8d5..c2ba1e0af 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -245,6 +245,7 @@ cs: create_unavailable_domain_html: "%{name} zastavil doručování na doménu %{target}" demote_user_html: Uživatel %{name} degradoval uživatele %{target} destroy_announcement_html: Uživatel %{name} odstranil oznámení %{target} + destroy_custom_emoji_html: "%{name} odstranil emoji %{target}" destroy_domain_allow_html: Uživatel %{name} zakázal federaci s doménou %{target} destroy_domain_block_html: Uživatel %{name} odblokoval doménu %{target} destroy_email_domain_block_html: Uživatel %{name} odblokoval e-mailovou doménu %{target} @@ -252,6 +253,7 @@ cs: destroy_ip_block_html: Uživatel %{name} odstranil pravidlo pro IP %{target} destroy_status_html: Uživatel %{name} odstranil příspěvek uživatele %{target} destroy_unavailable_domain_html: "%{name} obnovil doručování na doménu %{target}" + destroy_user_role_html: "%{name} odstranil %{target} roli" disable_2fa_user_html: Uživatel %{name} vypnul dvoufázové ověřování pro uživatele %{target} disable_custom_emoji_html: Uživatel %{name} zakázal emoji %{target} disable_sign_in_token_auth_user_html: Uživatel %{name} zrušil ověřování e-mailovým tokenem pro %{target} @@ -278,7 +280,9 @@ cs: update_announcement_html: Uživatel %{name} aktualizoval oznámení %{target} update_custom_emoji_html: Uživatel %{name} aktualizoval emoji %{target} update_domain_block_html: "%{name} aktualizoval blokaci domény %{target}" + update_ip_block_html: "%{name} změnil pravidlo pro IP %{target}" update_status_html: Uživatel %{name} aktualizoval příspěvek uživatele %{target} + update_user_role_html: "%{name} změnil %{target} roli" empty: Nebyly nalezeny žádné záznamy. filter_by_action: Filtrovat podle akce filter_by_user: Filtrovat podle uživatele @@ -724,16 +728,25 @@ cs: delete: Odstranit nahraný soubor destroyed_msg: Upload stránky byl úspěšně smazán! statuses: + account: Autor back_to_account: Zpět na stránku účtu back_to_report: Zpět na stránku hlášení batch: remove_from_report: Odebrat z hlášení report: Nahlásit deleted: Smazáno + favourites: Oblíbené + history: Historie verzí + language: Jazyk media: title: Média + metadata: Metadata no_status_selected: Nebyly změněny žádné příspěvky, neboť žádné nebyly vybrány + open: Otevřít příspěvek + original_status: Původní příspěvek + status_changed: Příspěvek změněn title: Příspěvky účtu + visibility: Viditelnost with_media: S médii strikes: actions: diff --git a/config/locales/da.yml b/config/locales/da.yml index 5128e87f3..8c6a9c8fd 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -684,7 +684,7 @@ da: discovery: follow_recommendations: Følg-anbefalinger preamble: At vise interessant indhold er vital ifm. at få nye brugere om bord, som måske ikke kender nogen på Mastodon. Styr, hvordan forskellige opdagelsesfunktioner fungerer på serveren. - profile_directory: Profilmappe + profile_directory: Profiloversigt public_timelines: Offentlige tidslinjer title: Opdagelse trends: Trends @@ -705,16 +705,29 @@ da: delete: Slet uploadet fil destroyed_msg: Websteds-upload blev slettet! statuses: + account: Forfatter + application: Applikation back_to_account: Retur til kontoside back_to_report: Retur til anmeldelsesside batch: remove_from_report: Fjern fra anmeldelse report: Anmeldelse deleted: Slettet + favourites: Favoritter + history: Versionshistorik + in_reply_to: Svarer på + language: Sprog media: title: Medier + metadata: Metadata no_status_selected: Ingen indlæg ændret (ingen valgt) + open: Åbn indlæg + original_status: Oprindeligt indlæg + reblogs: Genblogninger + status_changed: Indlæg ændret title: Kontoindlæg + trending: Populære + visibility: Synlighed with_media: Med medier strikes: actions: diff --git a/config/locales/de.yml b/config/locales/de.yml index 272765431..85df6e008 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -667,15 +667,32 @@ de: empty: Es wurden bis jetzt keine Server-Regeln definiert. title: Server-Regeln settings: + about: + rules_hint: Es gibt einen eigenen Bereich für Regeln, an die sich Ihre Benutzer halten sollen. + title: Über + appearance: + preamble: Passen Sie Mastodons Weboberfläche an. + title: Darstellung + branding: + title: Branding + content_retention: + preamble: Steuern Sie, wie nutzergenerierte Inhalte in Mastodon gespeichert werden. + discovery: + follow_recommendations: Folgeempfehlungen + title: Entdecken + trends: Trends domain_blocks: all: An alle disabled: An niemanden users: Für angemeldete lokale Benutzer + registrations: + title: Registrierungen registrations_mode: modes: approved: Zustimmung benötigt zur Registrierung none: Niemand kann sich registrieren open: Jeder kann sich registrieren + title: Servereinstellungen site_uploads: delete: Hochgeladene Datei löschen destroyed_msg: Upload erfolgreich gelöscht! @@ -902,7 +919,7 @@ de: resend_confirmation: Bestätigungs-Mail erneut versenden reset_password: Passwort zurücksetzen rules: - preamble: Diese werden von den Moderatoren von %{domain} erzwungn. + preamble: Diese werden von den Moderatoren von %{domain} erzwungen. title: Einige Grundregeln. security: Sicherheit set_new_password: Neues Passwort setzen diff --git a/config/locales/el.yml b/config/locales/el.yml index b33a275cf..f35fa9b77 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -471,15 +471,27 @@ el: delete: Διαγραφή μεταφορτωμένου αρχείου destroyed_msg: Η μεταφόρτωση ιστότοπου διαγράφηκε επιτυχώς! statuses: + account: Συντάκτης + application: Εφαρμογή back_to_account: Επιστροφή στη σελίδα λογαριασμού batch: remove_from_report: Αφαίρεση από την αναφορά report: Αναφορά deleted: Διαγραμμένα + favourites: Αγαπημένα + history: Ιστορικό εκδόσεων + in_reply_to: Απάντηση σε + language: Γλώσσα media: title: Πολυμέσα + metadata: Μεταδεδομένα no_status_selected: Καμία δημοσίευση δεν άλλαξε αφού καμία δεν ήταν επιλεγμένη + open: Άνοιγμα δημοσίευσης + reblogs: Αναδημοσιεύσεις + status_changed: Η ανάρτηση άλλαξε title: Καταστάσεις λογαριασμού + trending: Δημοφιλή + visibility: Ορατότητα with_media: Με πολυμέσα system_checks: database_schema_check: diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index f88cd29bf..63a1258e6 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -705,16 +705,29 @@ es-AR: delete: Eliminar archivo subido destroyed_msg: "¡Subida al sitio eliminada exitosamente!" statuses: + account: Autor + application: Aplicación back_to_account: Volver a la página de la cuenta back_to_report: Volver a la página de la denuncia batch: remove_from_report: Quitar de la denuncia report: Denunciar deleted: Eliminado + favourites: Favoritos + history: Historial de versiones + in_reply_to: Respondiendo a + language: Idioma media: title: Medios + metadata: Metadatos no_status_selected: No se cambió ningún mensaje, ya que ninguno fue seleccionado + open: Abrir mensaje + original_status: Mensaje original + reblogs: Adhesiones + status_changed: Mensaje cambiado title: Mensajes de la cuenta + trending: En tendencia + visibility: Visibilidad with_media: Con medios strikes: actions: diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 889c0232d..382e2c924 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -667,15 +667,40 @@ es-MX: empty: Aún no se han definido las normas del servidor. title: Normas del servidor settings: + about: + manage_rules: Administrar reglas del servidor + preamble: Proporciona información detallada sobre cómo el servidor es operado, moderado y financiado. + rules_hint: Hay un área dedicada para las reglas a las que se espera que tus usuarios se adhieran. + title: Acerca de + appearance: + preamble: Personalizar la interfaz web de Mastodon. + title: Apariencia + branding: + preamble: La marca de tu servidor lo diferencia de otros servidores de la red. Esta información puede mostrarse a través de una variedad de entornos, como en la interfaz web de Mastodon, en aplicaciones nativas, en previsualizaciones de enlaces en otros sitios web y en aplicaciones de mensajería, etc. Por esta razón, es mejor mantener esta información clara, breve y concisa. + title: Marca + content_retention: + preamble: Controlar cómo el contenido generado por el usuario se almacena en Mastodon. + title: Retención de contenido + discovery: + follow_recommendations: Recomendaciones de cuentas + preamble: Exponer contenido interesante a la superficie es fundamental para incorporar nuevos usuarios que pueden no conocer a nadie Mastodon. Controla cómo funcionan varias opciones de descubrimiento en tu servidor. + profile_directory: Directorio de perfiles + public_timelines: Lineas de tiempo públicas + title: Descubrimiento + trends: Tendencias domain_blocks: all: A todos disabled: A nadie users: Para los usuarios locales que han iniciado sesión + registrations: + preamble: Controla quién puede crear una cuenta en tu servidor. + title: Registros registrations_mode: modes: approved: Se requiere aprobación para registrarse none: Nadie puede registrarse open: Cualquiera puede registrarse + title: Ajustes del Servidor site_uploads: delete: Eliminar archivo subido destroyed_msg: "¡Carga del sitio eliminada con éxito!" diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 22e0147e6..c7ab01ab0 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -5,6 +5,7 @@ fi: contact_missing: Ei asetettu contact_unavailable: Ei saatavilla hosted_on: Mastodon palvelimella %{domain} + title: Tietoja accounts: follow: Seuraa followers: @@ -173,6 +174,7 @@ fi: confirm_user: Vahvista käyttäjä create_account_warning: Luo varoitus create_announcement: Luo ilmoitus + create_canonical_email_block: Luo sähköpostin esto create_custom_emoji: Luo mukautettu emoji create_domain_allow: Salli palvelin create_domain_block: Estä palvelin @@ -182,6 +184,7 @@ fi: create_user_role: Luo rooli demote_user: Alenna käyttäjä destroy_announcement: Poista ilmoitus + destroy_canonical_email_block: Poista sähköpostin esto destroy_custom_emoji: Poista mukautettu emoji destroy_domain_allow: Salli verkkotunnuksen poisto destroy_domain_block: Poista verkkotunnuksen esto @@ -217,6 +220,7 @@ fi: update_announcement: Päivitä ilmoitus update_custom_emoji: Päivitä muokattu emoji update_domain_block: Päivitä verkkotunnuksen esto + update_ip_block: Päivitä IP-sääntö update_status: Päivitä viesti update_user_role: Päivitä rooli actions: @@ -228,6 +232,7 @@ fi: confirm_user_html: "%{name} vahvisti käyttäjän %{target} sähköpostiosoitteen" create_account_warning_html: "%{name} lähetti varoituksen henkilölle %{target}" create_announcement_html: "%{name} loi uuden ilmoituksen %{target}" + create_canonical_email_block_html: "%{name} esti sähköpostin hashilla %{target}" create_custom_emoji_html: "%{name} lähetti uuden emojin %{target}" create_domain_allow_html: "%{name} salli yhdistäminen verkkotunnuksella %{target}" create_domain_block_html: "%{name} esti verkkotunnuksen %{target}" @@ -237,6 +242,7 @@ fi: create_user_role_html: "%{name} luonut %{target} roolin" demote_user_html: "%{name} alensi käyttäjän %{target}" destroy_announcement_html: "%{name} poisti ilmoituksen %{target}" + destroy_canonical_email_block_html: "%{name} poisti sähköposti eston hashilla %{target}" destroy_custom_emoji_html: "%{name} poisti emojin %{target}" destroy_domain_allow_html: "%{name} esti yhdistämisen verkkotunnuksella %{target}" destroy_domain_block_html: "%{name} poisti verkkotunnuksen %{target} eston" @@ -272,6 +278,7 @@ fi: update_announcement_html: "%{name} päivitti ilmoituksen %{target}" update_custom_emoji_html: "%{name} päivitti emojin %{target}" update_domain_block_html: "%{name} päivitti verkkotunnuksen %{target}" + update_ip_block_html: "%{name} muutti sääntöä IP-osoitteelle %{target}" update_status_html: "%{name} päivitti viestin %{target}" update_user_role_html: "%{name} muutti roolia %{target}" empty: Lokeja ei löytynyt. @@ -317,6 +324,7 @@ fi: listed: Listassa new: title: Lisää uusi mukautettu emoji + no_emoji_selected: Hymiöitä ei muutettu, koska yhtään ei valittu not_permitted: Sinulla ei ole oikeutta suorittaa tätä toimintoa overwrite: Kirjoita yli shortcode: Lyhennekoodi @@ -659,29 +667,67 @@ fi: empty: Palvelimen sääntöjä ei ole vielä määritelty. title: Palvelimen säännöt settings: + about: + manage_rules: Hallinnoi palvelimen sääntöjä + preamble: Anna perusteellista tietoa siitä, miten palvelinta käytetään, valvotaan, rahoitetaan. + rules_hint: On olemassa erityinen alue sääntöjä, joita käyttäjien odotetaan noudattavan. + title: Tietoja + appearance: + preamble: Muokkaa Mastodonin web-käyttöliittymää. + title: Ulkoasu + branding: + preamble: Palvelimesi brändäys erottaa sen muista verkon palvelimista. Nämä tiedot voidaan näyttää useissa eri ympäristöissä, kuten Mastodonin käyttöliittymässä, sovelluksissa, linkkien esikatselu muilla sivustoilla ja viestisovelluksien sisällä ja niin edelleen. Tästä syystä on parasta pitää nämä tiedot selkeinä, lyhyinä ja ytimekkäinä. + title: Brändäys + content_retention: + preamble: Määritä, miten käyttäjän luoma sisältö tallennetaan Mastodoniin. + title: Sisällön säilyttäminen + discovery: + follow_recommendations: Noudata suosituksia + preamble: Mielenkiintoisen sisällön esille tuominen auttaa saamaan uusia käyttäjiä, jotka eivät ehkä tunne ketään Mastodonista. Määrittele, kuinka erilaiset etsintäominaisuudet toimivat palvelimellasi. + profile_directory: Profiilihakemisto + public_timelines: Julkiset aikajanat + title: Löytäminen + trends: Trendit domain_blocks: all: Kaikille disabled: Ei kenellekkään users: Kirjautuneille paikallisille käyttäjille + registrations: + preamble: Määritä, kuka voi luoda tilin palvelimellesi. + title: Rekisteröinnit registrations_mode: modes: approved: Rekisteröinti vaatii hyväksynnän none: Kukaan ei voi rekisteröityä open: Kaikki voivat rekisteröityä + title: Palvelimen asetukset site_uploads: delete: Poista ladattu tiedosto destroyed_msg: Sivuston lataus onnistuneesti poistettu! statuses: + account: Tekijä + application: Sovellus back_to_account: Takaisin tilin sivulle back_to_report: Takaisin raporttisivulle batch: remove_from_report: Poista raportista report: Raportti deleted: Poistettu + favourites: Suosikit + history: Versiohistoria + in_reply_to: Vastaa + language: Kieli media: title: Media + metadata: Metadata no_status_selected: Viestejä ei muutettu, koska yhtään ei ole valittuna + open: Avaa viesti + original_status: Alkuperäinen viesti + reblogs: Edelleen jako + status_changed: Viesti muutettu title: Tilin tilat + trending: Nousussa + visibility: Näkyvyys with_media: Sisältää mediaa strikes: actions: @@ -721,6 +767,9 @@ fi: description_html: Nämä ovat linkkejä, joita jaetaan tällä hetkellä paljon tileillä, joilta palvelimesi näkee viestejä. Se voi auttaa käyttäjiäsi saamaan selville, mitä maailmassa tapahtuu. Linkkejä ei näytetä julkisesti, ennen kuin hyväksyt julkaisijan. Voit myös sallia tai hylätä yksittäiset linkit. disallow: Hylkää linkki disallow_provider: Estä julkaisija + no_link_selected: Yhtään linkkiä ei muutettu, koska yhtään ei valittu + publishers: + no_publisher_selected: Julkaisijoita ei muutettu, koska yhtään ei valittu shared_by_over_week: one: Yksi henkilö jakanut viimeisen viikon aikana other: Jakanut %{count} henkilöä viimeisen viikon aikana @@ -740,6 +789,7 @@ fi: description_html: Nämä ovat viestejä, jotka palvelimesi tietää tällä hetkellä jaetuksi ja suosituksi. Tämä voi auttaa uusia ja palaavia ihmisiä löytämään lisää ihmisiä, joita seurata seurata. Julkaisuja ei näytetä julkisesti ennen kuin hyväksyt tekijän ja kirjoittaja sallii tilinsä ehdottamisen muille. Voit myös sallia tai hylätä yksittäiset viestit. disallow: Estä viesti disallow_account: Estä tekijä + no_status_selected: Suosittuja viestejä ei muutettu, koska yhtään ei valittu not_discoverable: Tekijä ei ole ilmoittanut olevansa löydettävissä shared_by: one: Jaettu tai suosikki kerran @@ -755,6 +805,7 @@ fi: tag_uses_measure: käyttökerrat description_html: Nämä ovat hashtageja, jotka näkyvät tällä hetkellä monissa viesteissä, jotka palvelimesi näkee. Tämä voi auttaa käyttäjiäsi selvittämään, mistä ihmiset puhuvat eniten tällä hetkellä. Mitään hashtageja ei näytetä julkisesti ennen kuin hyväksyt ne. listable: Voidaan ehdottaa + no_tag_selected: Yhtään tagia ei muutettu, koska yhtään ei valittu not_listable: Ei tulla ehdottamaan not_trendable: Ei näy trendien alla not_usable: Ei voida käyttää @@ -860,6 +911,7 @@ fi: warning: Säilytä tietoa hyvin. Älä milloinkaan jaa sitä muille! your_token: Pääsytunnus auth: + apply_for_account: Tule jonotuslistalle change_password: Salasana delete_account: Poista tili delete_account_html: Jos haluat poistaa tilisi, paina tästä. Poisto on vahvistettava. @@ -879,6 +931,7 @@ fi: migrate_account: Muuta toiseen tiliin migrate_account_html: Jos haluat ohjata tämän tilin toiseen tiliin, voit asettaa toisen tilin tästä. or_log_in_with: Tai käytä kirjautumiseen + privacy_policy_agreement_html: Olen lukenut ja hyväksynyt tietosuojakäytännön providers: cas: CAS saml: SAML @@ -886,12 +939,18 @@ fi: registration_closed: "%{instance} ei hyväksy uusia jäseniä" resend_confirmation: Lähetä vahvistusohjeet uudestaan reset_password: Palauta salasana + rules: + preamble: "%{domain} valvojat määrittävät ja valvovat sääntöjä." + title: Joitakin perussääntöjä. security: Tunnukset set_new_password: Aseta uusi salasana setup: email_below_hint_html: Jos alla oleva sähköpostiosoite on virheellinen, voit muuttaa sitä täällä ja tilata uuden vahvistussähköpostiviestin. email_settings_hint_html: Vahvistussähköposti lähetettiin osoitteeseen %{email}. Jos sähköpostiosoite ei ole oikea, voit muuttaa sitä tiliasetuksissa. title: Asetukset + sign_up: + preamble: Kun sinulla on tili tällä Mastodon-palvelimella, voit seurata kaikkia muita verkossa olevia henkilöitä riippumatta siitä, missä heidän tilinsä on. + title: Otetaan sinulle käyttöön %{domain}. status: account_status: Tilin tila confirming: Odotetaan sähköpostivahvistuksen valmistumista. @@ -1073,12 +1132,22 @@ fi: trending_now: Suosittua nyt generic: all: Kaikki + all_items_on_page_selected_html: + one: "%{count} kohde tällä sivulla on valittu." + other: Kaikki %{count} kohdetta tällä sivulla on valittu. + all_matching_items_selected_html: + one: "%{count} tuotetta, joka vastaa hakuasi." + other: Kaikki %{count} kohdetta, jotka vastaavat hakuasi. changes_saved_msg: Muutosten tallennus onnistui! copy: Kopioi delete: Poista + deselect: Poista kaikki valinnat none: Ei mitään order_by: Järjestä save_changes: Tallenna muutokset + select_all_matching_items: + one: Valitse %{count} kohdetta, joka vastaa hakuasi. + other: Valitse kaikki %{count} kohdetta, jotka vastaavat hakuasi. today: tänään validation_errors: one: Kaikki ei ole aivan oikein! Tarkasta alla oleva virhe @@ -1257,6 +1326,8 @@ fi: other: Muut posting_defaults: Julkaisujen oletusasetukset public_timelines: Julkiset aikajanat + privacy_policy: + title: Tietosuojakäytäntö reactions: errors: limit_reached: Erilaisten reaktioiden raja saavutettu @@ -1529,8 +1600,10 @@ fi: suspend: Tilin käyttäminen keskeytetty welcome: edit_profile_action: Aseta profiili + edit_profile_step: Voit muokata profiiliasi lataamalla profiilikuvan, vaihtamalla näyttönimeä ja paljon muuta. Voit halutessasi arvioida uudet seuraajat ennen kuin he saavat seurata sinua. explanation: Näillä vinkeillä pääset alkuun final_action: Ala julkaista + final_step: 'Aloita julkaiseminen! Jopa ilman seuraajia, muut voivat nähdä julkiset viestisi esimerkiksi paikallisella aikajanalla tai hashtageilla. Haluat ehkä esitellä itsesi #introductions hashtag.' full_handle: Koko käyttäjätunnuksesi full_handle_hint: Kerro tämä ystävillesi, niin he voivat lähettää sinulle viestejä tai löytää sinut toisen instanssin kautta. subject: Tervetuloa Mastodoniin diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 2c34543ad..878f87f1d 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -5,6 +5,7 @@ fr: contact_missing: Non défini contact_unavailable: Non disponible hosted_on: Serveur Mastodon hébergé sur %{domain} + title: À propos accounts: follow: Suivre followers: @@ -659,29 +660,45 @@ fr: empty: Aucune règle de serveur n'a été définie pour l'instant. title: Règles du serveur settings: + about: + manage_rules: Gérer les règles du serveur + title: À propos + appearance: + title: Apparence + discovery: + profile_directory: Annuaire des profils + public_timelines: Fils publics + trends: Tendances domain_blocks: all: À tout le monde disabled: À personne users: Aux utilisateur·rice·s connecté·e·s localement + registrations: + title: Inscriptions registrations_mode: modes: approved: Approbation requise pour s’inscrire none: Personne ne peut s’inscrire open: N’importe qui peut s’inscrire + title: Paramètres du serveur site_uploads: delete: Supprimer le fichier téléversé destroyed_msg: Téléversement sur le site supprimé avec succès ! statuses: + account: Auteur·rice + application: Application back_to_account: Retour à la page du compte back_to_report: Retour à la page du rapport batch: remove_from_report: Retirer du rapport report: Signalement deleted: Supprimé + language: Langue media: title: Médias no_status_selected: Aucun message n’a été modifié car aucun n’a été sélectionné title: Messages du compte + visibility: Visibilité with_media: Avec médias strikes: actions: diff --git a/config/locales/gd.yml b/config/locales/gd.yml index fc9a2334e..82398d53c 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -5,6 +5,7 @@ gd: contact_missing: Cha deach a shuidheachadh contact_unavailable: Chan eil seo iomchaidh hosted_on: Mastodon ’ga òstadh air %{domain} + title: Mu dhèidhinn accounts: follow: Lean air followers: @@ -175,17 +176,21 @@ gd: approve_user: Aontaich ris a’ chleachdaiche assigned_to_self_report: Iomruin an gearan change_email_user: Atharraich post-d a’ chleachdaiche + change_role_user: Atharraich dreuchd a’ chleachdaiche confirm_user: Dearbh an cleachdaiche create_account_warning: Cruthaich rabhadh create_announcement: Cruthaich brath-fios + create_canonical_email_block: Cruthaich bacadh puist-d create_custom_emoji: Cruthaich Emoji gnàthaichte create_domain_allow: Cruthaich ceadachadh àrainne create_domain_block: Cruthaich bacadh àrainne create_email_domain_block: Cruthaich bacadh àrainne puist-d create_ip_block: Cruthaich riaghailt IP create_unavailable_domain: Cruthaich àrainn nach eil ri fhaighinn + create_user_role: Cruthaich dreuchd demote_user: Ìslich an cleachdaiche destroy_announcement: Sguab às am brath-fios + destroy_canonical_email_block: Sguab às dhan bhacadh puist-d destroy_custom_emoji: Sguab às an t-Emoji gnàthaichte destroy_domain_allow: Sguab às ceadachadh na h-àrainne destroy_domain_block: Sguab às bacadh na h-àrainne @@ -194,6 +199,7 @@ gd: destroy_ip_block: Sguab às an riaghailt IP destroy_status: Sguab às am post destroy_unavailable_domain: Sguab às àrainn nach eil ri fhaighinn + destroy_user_role: Mill an dreuchd disable_2fa_user: Cuir an dearbhadh dà-cheumnach à comas disable_custom_emoji: Cuir an t-Emoji gnàthaichte à comas disable_sign_in_token_auth_user: Cuir à comas dearbhadh le tòcan puist-d dhan chleachdaiche @@ -220,23 +226,30 @@ gd: update_announcement: Ùraich am brath-fios update_custom_emoji: Ùraich an t-Emoji gnàthaichte update_domain_block: Ùraich bacadh na h-àrainne + update_ip_block: Ùraich an riaghailt IP update_status: Ùraich am post + update_user_role: Ùraich an dreuchd actions: approve_appeal_html: Dh’aontaich %{name} ri ath-thagradh air co-dhùnadh na maorsainneachd o %{target} approve_user_html: Dh’aontaich %{name} ri clàradh o %{target} assigned_to_self_report_html: Dh’iomruin %{name} an gearan %{target} dhaibh fhèin change_email_user_html: Dh’atharraich %{name} seòladh puist-d a’ chleachdaiche %{target} + change_role_user_html: Atharraich %{name} an dreuchd aig %{target} confirm_user_html: Dhearbh %{name} seòladh puist-d a’ chleachdaiche %{target} create_account_warning_html: Chuir %{name} rabhadh gu %{target} create_announcement_html: Chruthaich %{name} brath-fios %{target} ùr + create_canonical_email_block_html: Bhac %{name} am post-d air a bheil an hais %{target} create_custom_emoji_html: Luchdaich %{name} suas Emoji %{target} ùr create_domain_allow_html: Cheadaich %{name} co-nasgadh leis an àrainn %{target} create_domain_block_html: Bhac %{name} an àrainn %{target} create_email_domain_block_html: Bhac %{name} an àrainn puist-d %{target} create_ip_block_html: Chruthaich %{name} riaghailt dhan IP %{target} create_unavailable_domain_html: Sguir %{name} ris an lìbhrigeadh dhan àrainn %{target} + create_user_role_html: Chruthaich %{name} an dreuchd %{target} demote_user_html: Dh’ìslich %{name} an cleachdaiche %{target} destroy_announcement_html: Sguab %{name} às am brath-fios %{target} + destroy_canonical_email_block_html: Dhì-bhac %{name} am post-d air a bheil an hais %{target} + destroy_custom_emoji_html: Sguab %{name} às an Emoji %{target} destroy_domain_allow_html: Dì-cheadaich %{name} co-nasgadh leis an àrainn %{target} destroy_domain_block_html: Dì-bhac %{name} an àrainn %{target} destroy_email_domain_block_html: Dì-bhac %{name} an àrainn puist-d %{target} @@ -244,6 +257,7 @@ gd: destroy_ip_block_html: Sguab %{name} às riaghailt dhan IP %{target} destroy_status_html: Thug %{name} post aig %{target} air falbh destroy_unavailable_domain_html: Lean %{name} air adhart leis an lìbhrigeadh dhan àrainn %{target} + destroy_user_role_html: Sguab %{name} às an dreuchd %{target} disable_2fa_user_html: Chuir %{name} riatanas an dearbhaidh dà-cheumnaich à comas dhan chleachdaiche %{target} disable_custom_emoji_html: Chuir %{name} an Emoji %{target} à comas disable_sign_in_token_auth_user_html: Chuir %{name} à comas dearbhadh le tòcan puist-d dha %{target} @@ -270,7 +284,9 @@ gd: update_announcement_html: Dh’ùraich %{name} am brath-fios %{target} update_custom_emoji_html: Dh’ùraich %{name} an Emoji %{target} update_domain_block_html: Dh’ùraich %{name} bacadh na h-àrainne %{target} + update_ip_block_html: Sguab %{name} às riaghailt dhan IP %{target} update_status_html: Dh’ùraich %{name} post le %{target} + update_user_role_html: Dh’atharraich %{name} an dreuchd %{target} empty: Cha deach loga a lorg. filter_by_action: Criathraich a-rèir gnìomha filter_by_user: Criathraich a-rèir cleachdaiche @@ -314,6 +330,7 @@ gd: listed: Liostaichte new: title: Cuir Emoji gnàthaichte ùr ris + no_emoji_selected: Cha deach Emoji sam bith atharrachadh o nach deach gin dhiubh a thaghadh not_permitted: Chan fhaod thu seo a dhèanamh overwrite: Sgrìobh thairis air shortcode: Geàrr-chòd @@ -678,29 +695,67 @@ gd: empty: Cha deach riaghailtean an fhrithealaiche a mhìneachadh fhathast. title: Riaghailtean an fhrithealaiche settings: + about: + manage_rules: Stiùirich riaghailtean an fhrithealaiche + preamble: Solair fiosrachadh domhainn mu sholar, maorsainneachd is maoineachadh an fhrithealaiche seo. + rules_hint: Tha roinn sònraichte ann dha na riaghailtean air am bu chòir an luchd-cleachdaidh agad a leantainn. + title: Mu dhèidhinn + appearance: + preamble: Gnàthaich eadar-aghaidh-lìn Mhastodon. + title: Coltas + branding: + preamble: Tha branndadh an fhrithealaiche agad eadar-dhealaichte o fhrithealaichean eile san lìonra. Faodaidh gun nochd am fiosrachadh seo thar iomadh àrainneachd, can eadar-aghaidh-lìn Mhastodon, aplacaidean tùsail, ro-sheallaidhean air ceanglaichean air làraichean-lìn eile agus am broinn aplacaidean theachdaireachdan is mar sin air adhart. Air an adhbhar seo, mholamaid gun cùm thu am fiosrachadh seo soilleir is goirid. + title: Branndadh + content_retention: + preamble: Stiùirich mar a tha susbaint an luchd-cleachdaidh ’ga stòradh ann am Mastodon. + title: Glèidheadh na susbaint + discovery: + follow_recommendations: Molaidhean leantainn + preamble: Tha tighinn an uachdar susbainte inntinniche fìor-chudromach airson toiseach-tòiseachaidh an luchd-cleachdaidh ùr nach eil eòlach air duine sam bith air Mastodon, ma dh’fhaoidte. Stiùirich mar a dh’obraicheas gleusan an rannsachaidh air an fhrithealaiche agad. + profile_directory: Eòlaire nam pròifil + public_timelines: Loidhnichean-ama poblach + title: Rùrachadh + trends: Treandaichean domain_blocks: all: Dhan a h-uile duine disabled: Na seall idir users: Dhan luchd-chleachdaidh a clàraich a-steach gu h-ionadail + registrations: + preamble: Stiùirich cò dh’fhaodas cunntas a chruthachadh air an fhrithealaiche agad. + title: Clàraidhean registrations_mode: modes: approved: Tha aontachadh riatanach airson clàradh none: Chan fhaod neach sam bith clàradh open: "’S urrainn do neach sam bith clàradh" + title: Roghainnean an fhrithealaiche site_uploads: delete: Sguab às am faidhle a chaidh a luchdadh suas destroyed_msg: Chaidh an luchdadh suas dhan làrach a sguabadh às! statuses: + account: Ùghdar + application: Aplacaid back_to_account: Till gu duilleag a’ chunntais back_to_report: Till gu duilleag a’ ghearain batch: remove_from_report: Thoir air falbh on ghearan report: Gearan deleted: Chaidh a sguabadh às + favourites: Annsachdan + history: Eachdraidh nan tionndadh + in_reply_to: Air freagairt gu + language: Cànan media: title: Meadhanan + metadata: Meata-dàta no_status_selected: Cha deach post sam bith atharrachadh o nach deach gin dhiubh a thaghadh + open: Fosgail am post + original_status: Am post tùsail + reblogs: Brosnachaidhean + status_changed: Post air atharrachadh title: Postaichean a’ chunntais + trending: A’ treandadh + visibility: Faicsinneachd with_media: Le meadhanan riutha strikes: actions: @@ -740,6 +795,9 @@ gd: description_html: Seo na ceanglaichean a tha ’gan co-roinneadh le iomadh cunntas on a chì am frithealaiche agad na postaichean. Faodaidh iad a bhith ’nan cuideachadh dhan luchd-cleachdaidh ach am faigh iad a-mach dè tha tachairt air an t-saoghal. Cha dèid ceanglaichean a shealltainn gu poblach gus an aontaich thu ris an fhoillsichear. ’S urrainn dhut ceanglaichean àraidh a cheadachadh no a dhiùltadh cuideachd. disallow: Na ceadaich an ceangal disallow_provider: Na ceadaich am foillsichear + no_link_selected: Cha deach ceangal sam bith atharrachadh o nach deach gin dhiubh a thaghadh + publishers: + no_publisher_selected: Cha deach foillsichear sam bith atharrachadh o nach deach gin dhiubh a thaghadh shared_by_over_week: few: Chaidh a cho-roinneadh le %{count} rè na seachdain seo chaidh one: Chaidh a cho-roinneadh le %{count} rè na seachdain seo chaidh @@ -761,6 +819,7 @@ gd: description_html: Seo na postaichean air a bheil am frithealaiche agad eòlach ’s a tha ’gan co-roinneadh is ’nan annsachd gu tric aig an àm seo. Faodaidh iad a bhith ’nan cuideachadh dhan luchd-cleachdaidh ùr no a thill ach an lorg iad daoine airson leantainn orra. Cha dèid postaichean a shealltainn gu poblach gus an gabh thu ris an ùghdar agus gus an aontaich an t-ùghdar gun dèid an cunntas aca a mholadh do dhaoine eile. ’S urrainn dhut postaichean àraidh a cheadachadh no a dhiùltadh cuideachd. disallow: Na ceadaich am post disallow_account: Na ceadaich an t-ùghdar + no_status_selected: Cha deach post a’ treandadh sam bith atharrachadh o nach deach gin dhiubh a thaghadh not_discoverable: Cha do chuir an t-ùghdar roimhe gun gabh a rùrachadh shared_by: few: Chaidh a cho-roinneadh no ’na annsachd %{friendly_count} tursan @@ -778,6 +837,7 @@ gd: tag_uses_measure: cleachdaidhean iomlan description_html: Seo na tagaichean hais a nochdas ann an grunn phostaichean a chì am frithealaiche agad aig an àm seo. Faodaidh iad a bhith ’nan cuideachadh dhan luchd-cleachdaidh agad ach am faigh iad a-mach cò air a tha daoine a’ bruidhinn nas trice aig an àm seo. Cha dèid tagaichean hais a shealltainn gu poblach gus an aontaich thu riutha. listable: Gabhaidh a mholadh + no_tag_selected: Cha deach taga sam bith atharrachadh o nach deach gin dhiubh a thaghadh not_listable: Cha dèid a mholadh not_trendable: Cha nochd e am measg nan treandaichean not_usable: Cha ghabh a chleachdadh @@ -887,6 +947,7 @@ gd: warning: Bi glè chùramach leis an dàta seo. Na co-roinn le duine sam bith e! your_token: An tòcan inntrigidh agad auth: + apply_for_account: Faigh air an liosta-fheitheimh change_password: Facal-faire delete_account: Sguab às an cunntas delete_account_html: Nam bu mhiann leat an cunntas agad a sguabadh às, nì thu an-seo e. Thèid dearbhadh iarraidh ort. @@ -906,6 +967,7 @@ gd: migrate_account: Imrich gu cunntas eile migrate_account_html: Nam bu mhiann leat an cunntas seo ath-stiùireadh gu fear eile, ’s urrainn dhut a rèiteachadh an-seo. or_log_in_with: No clàraich a-steach le + privacy_policy_agreement_html: Leugh mi is tha mi ag aontachadh ris a’ phoileasaidh prìobhaideachd providers: cas: CAS saml: SAML @@ -913,12 +975,18 @@ gd: registration_closed: Cha ghabh %{instance} ri buill ùra resend_confirmation: Cuir an stiùireadh mun dearbhadh a-rithist reset_password: Ath-shuidhich am facal-faire + rules: + preamble: Tha iad ’gan stèidheachadh is a chur an gnìomh leis na maoir aig %{domain}. + title: Riaghailtean bunasach. security: Tèarainteachd set_new_password: Suidhich facal-faire ùr setup: email_below_hint_html: Mur eil am post-d gu h-ìosal mar bu chòir, ’s urrainn dhut atharrachadh an-seo agus gheibh thu post-d dearbhaidh ùr. email_settings_hint_html: Chaidh am post-d dearbhaidh a chur gu %{email}. Mur eil an seòladh puist-d seo mar bu chòir, ’s urrainn dhut atharrachadh ann an roghainnean a’ chunntais. title: Suidheachadh + sign_up: + preamble: Le cunntas air an fhrithealaiche Mastodon seo, ’s urrainn dhut leantainn air neach sam bith air an lìonra, ge b’ e càit a bheil an cunntas aca-san ’ga òstadh. + title: Suidhicheamaid %{domain} dhut. status: account_status: Staid a’ chunntais confirming: A’ feitheamh air coileanadh an dearbhaidh on phost-d. @@ -1064,6 +1132,8 @@ gd: edit: add_keyword: Cuir facal-luirg ris keywords: Faclan-luirg + statuses: Postaichean fa leth + statuses_hint_html: Bidh a’ chriathrag seo an sàs air taghadh de phostaichean fa leth ge b’ e am freagair iad ris na faclan-luirg gu h-ìosal gus nach freagair. Dèan lèirmheas air na postaichean no thoir iad air falbh on chriathrag seo. title: Deasaich a’ chriathrag errors: deprecated_api_multiple_keywords: Cha ghabh na paramadairean seo atharrachadh on aplacaid seo on a bhios iad an sàs air iomadh facal-luirg na criathraige. Cleachd aplacaid nas ùire no an eadar-aghaidh-lìn. @@ -1079,20 +1149,53 @@ gd: one: "%{count} fhacal-luirg" other: "%{count} facal-luirg" two: "%{count} fhacal-luirg" + statuses: + few: "%{count} postaichean" + one: "%{count} phost" + other: "%{count} post" + two: "%{count} phost" + statuses_long: + few: Chaidh %{count} postaichean fa leth fhalach + one: Chaidh %{count} phost fa leth fhalach + other: Chaidh %{count} post fa leth fhalach + two: Chaidh %{count} phost fa leth fhalach title: Criathragan new: save: Sàbhail a’ chriathrag ùr title: Cuir criathrag ùr ris + statuses: + back_to_filter: Air ais dhan chriathrag + batch: + remove: Thoir air falbh on chriathrag + index: + hint: Bidh a’ chriathrag seo an sàs air postaichean fa leth ge b’ e dè na roghainnean eile. ’S urrainn dhut barrachd phostaichean a chur ris a’ chriathrag seo leis an eadar-aghaidh-lìn. + title: Postaichean criathraichte footer: trending_now: A’ treandadh an-dràsta generic: all: Na h-uile + all_items_on_page_selected_html: + few: Chaidh na %{count} nithean uile a thaghadh air an duilleag seo. + one: Chaidh %{count} nì a thaghadh air an duilleag seo. + other: Chaidh an %{count} nì uile a thaghadh air an duilleag seo. + two: Chaidh an %{count} nì uile a thaghadh air an duilleag seo. + all_matching_items_selected_html: + few: Chaidh %{count} nithean a thaghadh a fhreagras dha na lorg thu. + one: Chaidh %{count} nì a thaghadh a fhreagras dha na lorg thu. + other: Chaidh %{count} nì a thaghadh a fhreagras dha na lorg thu. + two: Chaidh %{count} nì a thaghadh a fhreagras dha na lorg thu. changes_saved_msg: Chaidh na h-atharraichean a shàbhaladh! copy: Dèan lethbhreac delete: Sguab às + deselect: Dì-thagh na h-uile none: Chan eil gin order_by: Seòrsaich a-rèir save_changes: Sàbhail na h-atharraichean + select_all_matching_items: + few: Tagh na %{count} nithean uile a fhreagras dha na lorg thu. + one: Tagh %{count} nì a fhreagras dha na lorg thu. + other: Tagh an %{count} nì uile a fhreagras dha na lorg thu. + two: Tagh an %{count} nì uile a fhreagras dha na lorg thu. today: an-diugh validation_errors: few: Tha rud ann nach eil buileach ceart fhathast! Thoir sùil air na %{count} mhearachdan gu h-ìosal @@ -1275,6 +1378,8 @@ gd: other: Eile posting_defaults: Bun-roghainnean a’ phostaidh public_timelines: Loidhnichean-ama poblach + privacy_policy: + title: Poileasaidh prìobhaideachd reactions: errors: limit_reached: Ràinig thu crìoch nam freagairtean eadar-dhealaichte @@ -1559,8 +1664,10 @@ gd: suspend: Cunntas à rèim welcome: edit_profile_action: Suidhich a’ phròifil agad + edit_profile_step: "’S urrainn dhut a’ phròifil agad a ghnàthachadh is tu a’ luchdadh suas dealbh pròifil, ag atharrachadh d’ ainm-taisbeanaidh is a bharrachd. ’S urrainn dhut lèirmheas a dhèanamh air daoine mus fhaod iad leantainn ort ma thogras tu." explanation: Seo gliocas no dhà gus tòiseachadh final_action: Tòisich air postadh + final_step: 'Tòisich air postadh! Fiù ’s mur eil duine sam bith a’ leantainn ort, chì cuid mhath na postaichean poblach agad, can air an loidhne-ama ionadail no le tagaichean hais. Saoil an innis thu beagan mu d’ dhèidhinn air an taga hais #fàilte?' full_handle: D’ ainm-cleachdaiche slàn full_handle_hint: Seo na bheir thu dha na caraidean agad ach an urrainn dhaibh teachdaireachd a chur thugad no leantainn ort o fhrithealaiche eile. subject: Fàilte gu Mastodon diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 4e6e73a32..da00efe89 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -667,29 +667,67 @@ gl: empty: Aínda non se definiron as regras do servidor. title: Regras do servidor settings: + about: + manage_rules: Xestionar regras do servidor + preamble: Proporciona información detallada acerca do xeito en que se xestiona, modera e financia o servidor. + rules_hint: Hai un espazo dedicado para as normas que é de agardar que as túas usuarias cumpran. + title: Acerca de + appearance: + preamble: Personalizar a interface web de Mastodon. + title: Aparencia + branding: + preamble: A personalización do teu servidor diferénciao doutros servidores da rede. A información podería mostrarse en diversos entornos, como a interface web de Mastodon, aplicacións nativas, vista previa das ligazóns noutras webs e apps de mensaxería, e similares. Debido a esto é recomendable que a información sexa clara, curta e concisa. + title: Personalización + content_retention: + preamble: Controla como se gardan en Mastodon os contidos creados polas usuarias. + title: Retención do contido + discovery: + follow_recommendations: Recomendacións de seguimento + preamble: Destacar contido interesante é importante para axudar a que as novas usuarias se sintan cómodas se non coñecen a ninguén en Mastodon. Xestiona os diferentes xeitos de promocionar contidos. + profile_directory: Directorio de perfís + public_timelines: Cronoloxías públicas + title: Descubrir + trends: Tendencias domain_blocks: all: Para todos disabled: Para ninguén users: Para usuarias locais conectadas + registrations: + preamble: Xestiona quen pode crear unha conta no teu servidor. + title: Rexistros registrations_mode: modes: approved: Precisa aprobación para rexistrarse none: Rexistro pechado open: Rexistro aberto + title: Axustes do servidor site_uploads: delete: Eliminar o ficheiro subido destroyed_msg: Eliminado correctamente o subido! statuses: + account: Conta + application: Aplicación back_to_account: Volver a páxina da conta back_to_report: Volver a denuncias batch: remove_from_report: Eliminar da denuncia report: Denuncia deleted: Eliminado + favourites: Favoritas + history: Historial de versións + in_reply_to: En resposta a + language: Idioma media: title: Medios + metadata: Metadatos no_status_selected: Non se cambiou ningunha publicación xa que ningunha foi seleccionada + open: Abrir publicación + original_status: Publicación orixinal + reblogs: Promocións + status_changed: Publicación editada title: Publicacións da conta + trending: Tendencia + visibility: Visibilidade with_media: con medios strikes: actions: @@ -1024,7 +1062,7 @@ gl: content: Sentímolo, pero algo do noso lado falloou. title: Esta páxina non é correcta '503': A páxina non se puido servir debido a un fallo temporal no servidor. - noscript_html: Para utilizar a aplicación web de Mastodon debes activar JavaScript. De xeito alternativo, probb cunha das apps nativas para Mastodon na túa plataforma. + noscript_html: Para utilizar a aplicación web de Mastodon debes activar JavaScript. De xeito alternativo, proba cunha das apps nativas para Mastodon na túa plataforma. existing_username_validator: not_found: non se atopou unha usuaria local con ese alcume not_found_multiple: non se atopou a %{usernames} diff --git a/config/locales/hu.yml b/config/locales/hu.yml index e982f00c1..890eb6956 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -672,6 +672,7 @@ hu: preamble: Adj meg részletes információkat arról, hogy a kiszolgáló hogyan működik, miként moderálják és finanszírozzák. title: Névjegy appearance: + preamble: A Mastodon webes felületének testreszabása. title: Megjelenés branding: preamble: A kiszolgáló márkajelzése különbözteti meg a hálózat többi kiszolgálójától. Ez az információ számos környezetben megjelenhet, például a Mastodon webes felületén, natív alkalmazásokban, más weboldalakon és üzenetküldő alkalmazásokban megjelenő hivatkozások előnézetben stb. Ezért a legjobb, ha ez az információ világos, rövid és tömör. @@ -701,16 +702,29 @@ hu: delete: Feltöltött fájl törlése destroyed_msg: Sikeresen töröltük a site feltöltését! statuses: + account: Szerző + application: Alkalmazás back_to_account: Vissza a fiók oldalára back_to_report: Vissza a bejelentés oldalra batch: remove_from_report: Eltávolítás a bejelentésből report: Bejelentés deleted: Törölve + favourites: Kedvencek + history: Verziótörténet + in_reply_to: 'Válasz címzettje:' + language: Nyelv media: title: Média + metadata: Metaadatok no_status_selected: Nem változtattunk meg egy bejegyzést sem, mert semmi sem volt kiválasztva + open: Bejegyzés megnyitása + original_status: Eredeti bejegyzés + reblogs: Megosztások + status_changed: A bejegyzés megváltozott title: Fiók bejegyzései + trending: Felkapott + visibility: Láthatóság with_media: Médiával strikes: actions: diff --git a/config/locales/is.yml b/config/locales/is.yml index 0785b209a..cf4f8cbc5 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -667,29 +667,67 @@ is: empty: Engar reglur fyrir netþjón hafa ennþá verið skilgreindar. title: Reglur netþjónsins settings: + about: + manage_rules: Sýsla með reglur netþjónsins + preamble: Gefðu nánari upplýsingar um hvernig þessi netþjónn er rekinn, hvernig umsjón fer fram með efni á honum eða hann fjármagnaður. + rules_hint: Það er sérstakt svæði með þeim reglum sem ætlast er til að notendur þínir fari eftir. + title: Um hugbúnaðinn + appearance: + preamble: Sérsníddu vefviðmót Mastodon. + title: Útlit + branding: + preamble: Útlitsleg einkenni aðgreina netþjóninn þinn frá öðrum netþjónum á netkerfinu. Þessar upplýsingar geta birst á margvíslegum stöðum, eins og til dæmis í vefviðmóti Mastodon, einstökum forritum, í forskoðun tengla á öðrum vefsvæðum og innan samskiptaforrita, svo eitthvað sé talið. Þess vegna er vest að þessar upplýsingar séu skýrar, stuttar og tæmandi. + title: Útlitsleg aðgreining + content_retention: + preamble: Stýrðu hvernig efni frá notendum sé geymt í Mastodon. + title: Geymsla efnis + discovery: + follow_recommendations: Meðmæli um að fylgjast með + preamble: Að láta áhugavert efni koma skýrt fram er sérstaklega mikilvægt til að nálgast nýja notendur sem ekki þekkja neinn sem er á Mastodon. Stýrðu því hvernig hinir ýmsu eiginleikar við uppgötvun efnis virka á netþjóninum þínum. + profile_directory: Notendamappa + public_timelines: Opinberar tímalínur + title: Uppgötvun + trends: Vinsælt domain_blocks: all: Til allra disabled: Til engra users: Til innskráðra staðværra notenda + registrations: + preamble: Stýrðu því hverjir geta útbúið notandaaðgang á netþjóninum þínum. + title: Nýskráningar registrations_mode: modes: approved: Krafist er samþykkt nýskráningar none: Enginn getur nýskráð sig open: Allir geta nýskráð sig + title: Stillingar netþjóns site_uploads: delete: Eyða innsendri skrá destroyed_msg: Það tókst að eyða innsendingu á vefsvæði! statuses: + account: Höfundur + application: Forrit back_to_account: Fara aftur á síðu notandaaðgangsins back_to_report: Til baka á kærusíðu batch: remove_from_report: Fjarlægja úr kæru report: Kæra deleted: Eytt + favourites: Eftirlæti + history: Útgáfuferill + in_reply_to: Svarar til + language: Tungumál media: title: Myndefni + metadata: Lýsigögn no_status_selected: Engum færslum var breytt þar sem engar voru valdar + open: Opna færslu + original_status: Upprunaleg færsla + reblogs: Endurbirtingar + status_changed: Færslu breytt title: Færslur notandaaðgangs + trending: Vinsælt + visibility: Sýnileiki with_media: Með myndefni strikes: actions: diff --git a/config/locales/it.yml b/config/locales/it.yml index 8fe430c96..a81ede69d 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -705,16 +705,29 @@ it: delete: Cancella il file caricato destroyed_msg: Caricamento sito eliminato! statuses: + account: Autore + application: Applicazione back_to_account: Torna alla pagina dell'account back_to_report: Torna alla pagina del report batch: remove_from_report: Rimuovi dal report report: Rapporto deleted: Cancellato + favourites: Preferiti + history: Cronologia delle versioni + in_reply_to: In risposta a + language: Lingua media: title: Media + metadata: Metadati no_status_selected: Nessun status è stato modificato perché nessuno era stato selezionato + open: Apri il post + original_status: Post originale + reblogs: Condivisioni + status_changed: Post modificato title: Gli status dell'account + trending: Di tendenza + visibility: Visibilità with_media: con media strikes: actions: diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 814196db0..3ae3fa681 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -96,7 +96,7 @@ ko: moderation_notes: 중재 기록 most_recent_activity: 최근 활동 most_recent_ip: 최근 IP - no_account_selected: 아무 계정도 선택 되지 않아 아무 것도 변경 되지 않았습니다 + no_account_selected: 아무 것도 선택 되지 않아 어떤 계정도 변경 되지 않았습니다 no_limits_imposed: 제한 없음 no_role_assigned: 할당된 역할 없음 not_subscribed: 구독하지 않음 @@ -321,6 +321,7 @@ ko: listed: 목록에 실림 new: title: 새 커스텀 에모지 추가 + no_emoji_selected: 아무 것도 선택 되지 않아 어떤 에모지도 바뀌지 않았습니다 not_permitted: 이 작업을 수행할 권한이 없습니다 overwrite: 덮어쓰기 shortcode: 짧은 코드 @@ -656,29 +657,59 @@ ko: settings: about: manage_rules: 서버 규칙 관리 + title: 정보 + appearance: + preamble: 마스토돈의 웹 인터페이스를 변경 + title: 외관 + branding: + title: 브랜딩 + content_retention: + title: 콘텐츠 보존기한 + discovery: + follow_recommendations: 팔로우 추천 + profile_directory: 프로필 책자 + public_timelines: 공개 타임라인 + title: 발견하기 + trends: 유행 domain_blocks: all: 모두에게 disabled: 아무에게도 안 함 users: 로그인 한 사용자에게 + registrations: + title: 가입 registrations_mode: modes: approved: 가입하려면 승인이 필요함 none: 아무도 가입 할 수 없음 open: 누구나 가입 할 수 있음 + title: 서버 설정 site_uploads: delete: 업로드한 파일 삭제 destroyed_msg: 사이트 업로드를 성공적으로 삭제했습니다! statuses: + account: 작성자 + application: 애플리케이션 back_to_account: 계정으로 돌아가기 back_to_report: 신고 페이지로 돌아가기 batch: remove_from_report: 신고에서 제거 report: 신고 deleted: 삭제됨 + favourites: 좋아요 + history: 버전 이력 + in_reply_to: '회신 대상:' + language: 언어 media: title: 미디어 - no_status_selected: 아무 게시물도 선택 되지 않아 아무 것도 바뀌지 않았습니다 + metadata: 메타데이터 + no_status_selected: 아무 것도 선택 되지 않아 어떤 게시물도 바뀌지 않았습니다 + open: 게시물 열기 + original_status: 원본 게시물 + reblogs: 리블로그 + status_changed: 게시물 변경됨 title: 계정 게시물 + trending: 유행중 + visibility: 공개 설정 with_media: 미디어 있음 strikes: actions: @@ -718,6 +749,9 @@ ko: description_html: 현재 서버에서 게시물을 볼 수 있는 계정에서 많이 공유되고 있는 링크들입니다. 사용자가 세상 돌아가는 상황을 파악하는 데 도움이 됩니다. 출처를 승인할 때까지 링크는 공개적으로 게시되지 않습니다. 각각의 링크를 개별적으로 허용하거나 거부할 수도 있습니다. disallow: 링크 거부하기 disallow_provider: 출처 거부하기 + no_link_selected: 아무 것도 선택 되지 않아 어떤 링크도 바뀌지 않았습니다 + publishers: + no_publisher_selected: 아무 것도 선택 되지 않아 어떤 게시자도 바뀌지 않았습니다 shared_by_over_week: other: 지난 주 동안 %{count} 명의 사람들이 공유했습니다 title: 유행하는 링크 @@ -736,6 +770,7 @@ ko: description_html: 당신의 서버가 알기로 현재 많은 수의 공유와 좋아요가 되고 있는 게시물들입니다. 새로운 사용자나 돌아오는 사용자들이 팔로우 할 사람들을 찾는 데 도움이 될 수 있습니다. 작성자를 승인하고, 작성자가 그들의 계정이 다른 계정에게 탐색되도록 설정하지 않는 한 게시물들은 공개적으로 표시되지 않습니다. 또한 각각의 게시물을 별개로 거절할 수도 있습니다. disallow: 게시물 불허 disallow_account: 작성자 불허 + no_status_selected: 아무 것도 선택 되지 않아 어떤 유행중인 게시물도 바뀌지 않았습니다 not_discoverable: 작성자가 발견되기를 원치 않습니다 shared_by: other: "%{friendly_count} 번 공유되고 마음에 들어했습니다" @@ -750,6 +785,7 @@ ko: tag_uses_measure: 총 사용 description_html: 현재 서버에서 볼 수 있는 게시물에서 많이 공유되고 있는 해시태그들입니다. 현재 사람들이 무슨 이야기를 하고 있는지 사용자들이 파악할 수 있도록 도움이 됩니다. 승인하지 않는 한 해시태그는 공개적으로 게시되지 않습니다. listable: 추천될 수 있습니다 + no_tag_selected: 아무 것도 선택 되지 않아 어떤 태그도 바뀌지 않았습니다 not_listable: 추천될 수 없습니다 not_trendable: 유행 목록에 나타나지 않습니다 not_usable: 사용불가 diff --git a/config/locales/ku.yml b/config/locales/ku.yml index d1703d58e..335271f3f 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -671,18 +671,26 @@ ku: settings: about: manage_rules: Rêzikên rajekaran bi rê ve bibe + preamble: Zanyariyên kûr peyda bike li ser ka rajekar çawa tê xebitandin, çavdêrîkirin, fînansekirin. + rules_hint: Ji bo rêbazên ku ji bikarhênerên ve tê hêvîkirin ku pê ve girêdayî bin deverek veqetandî heye. title: Derbar + appearance: + preamble: Navrûya tevnê ya Mastodon kesane bike. + title: Xuyang discovery: trends: Rojev domain_blocks: all: Bo herkesî disabled: Bo tu kesî users: Ji bo bikarhênerên herêmî yên xwe tomar kirine + registrations: + title: Tomarkirin registrations_mode: modes: approved: Ji bo têketinê erêkirin pêwîste none: Kesek nikare tomar bibe open: Herkes dikare tomar bibe + title: Sazkariyên rajekarê site_uploads: delete: Pela barkirî jê bibe destroyed_msg: Barkirina malperê bi serkeftî hate jêbirin! diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 72692cd15..47dafbad6 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -719,16 +719,29 @@ lv: delete: Dzēst augšupielādēto failu destroyed_msg: Vietnes augšupielāde ir veiksmīgi izdzēsta! statuses: + account: Autors + application: Lietotne back_to_account: Atpakaļ uz konta lapu back_to_report: Atpakaļ uz paziņojumu lapu batch: remove_from_report: Noņemt no ziņojuma report: Ziņojums deleted: Dzēstie + favourites: Izlase + history: Versiju vēsture + in_reply_to: Atbildot uz + language: Valoda media: title: Multivide + metadata: Metadati no_status_selected: Neviena ziņa netika mainīta, jo neviena netika atlasīta + open: Atvērt ziņu + original_status: Oriģinālā ziņa + reblogs: Reblogi + status_changed: Ziņa mainīta title: Konta ziņas + trending: Tendences + visibility: Redzamība with_media: Ar medijiem strikes: actions: diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 4caee1a47..fcc777af2 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -17,7 +17,7 @@ nl: link_verified_on: Eigendom van deze link is gecontroleerd op %{date} nothing_here: Hier is niets! pin_errors: - following: Je moet dit account wel al volgen, alvorens je het kan aanbevelen + following: Je moet dit account wel al volgen, alvorens je het kunt aanbevelen posts: one: Toot other: Berichten @@ -394,6 +394,9 @@ nl: view: Domeinblokkade bekijken email_domain_blocks: add_new: Nieuwe toevoegen + attempts_over_week: + one: "%{count} registratiepoging tijdens de afgelopen week" + other: "%{count} registratiepogingen tijdens de afgelopen week" created_msg: Blokkeren e-maildomein geslaagd delete: Verwijderen dns: @@ -404,6 +407,8 @@ nl: create: Blokkeren resolve: Domein opzoeken title: Nieuw e-maildomein blokkeren + resolved_dns_records_hint_html: De domeinnaam slaat op de volgende MX-domeinen die uiteindelijk verantwoordelijk zijn voor het accepteren van e-mail. Het blokkeren van een MX-domein blokkeert aanmeldingen van elk e-mailadres dat hetzelfde MX-domein gebruikt, zelfs als de zichtbare domeinnaam anders is. Pas op dat u geen grote e-mailproviders blokkeert. + resolved_through_html: Geblokkeerd via %{domain} title: Geblokkeerde e-maildomeinen follow_recommendations: description_html: "Deze aanbevolen accounts helpen nieuwe gebruikers snel interessante inhoudte vinden. Wanneer een gebruiker niet met andere gebruikers genoeg interactie heeft gehad om gepersonaliseerde aanbevelingen te krijgen, worden in plaats daarvan deze accounts aanbevolen. Deze accounts worden dagelijks opnieuw berekend met behulp van accounts met het hoogste aantal recente interacties en het hoogste aantal lokale volgers in een bepaalde taal." @@ -544,6 +549,7 @@ nl: delete: Verwijderen placeholder: Beschrijf welke acties zijn ondernomen of andere gerelateerde opmerkingen… title: Opmerkingen + remote_user_placeholder: de externe gebruiker van %{instance} reopen: Rapportage heropenen report: 'Rapportage #%{id}' reported_account: Gerapporteerde account @@ -607,29 +613,64 @@ nl: empty: Voor deze server zijn nog geen regels opgesteld. title: Serverregels settings: + about: + manage_rules: Serverregels beheren + title: Over + appearance: + preamble: Mastodons webomgeving aanpassen. + title: Weergave + branding: + preamble: De branding van jouw server laat zien hoe het met andere servers in het netwerk verschilt. Deze informatie wordt op verschillende plekken getoond, zoals in de webomgeving van Mastodon, in mobiele apps, in voorvertoningen op andere websites en berichten-apps, enz. Daarom is het belangrijk om de informatie helder, kort en beknopt te houden. + title: Branding + content_retention: + preamble: Toezicht houden op hoe berichten en media van gebruikers op Mastodon worden bewaard. + title: Bewaartermijn berichten + discovery: + follow_recommendations: Aanbevolen accounts + profile_directory: Gebruikersgids + public_timelines: Openbare tijdlijnen + title: Ontdekken + trends: Trends domain_blocks: all: Aan iedereen disabled: Aan niemand users: Aan ingelogde lokale gebruikers + registrations: + preamble: Toezicht houden op wie een account op deze server kan registreren. + title: Registraties registrations_mode: modes: approved: Goedkeuring vereist om te kunnen registreren none: Niemand kan zich registreren open: Iedereen kan zich registreren + title: Serverinstellingen site_uploads: delete: Geüpload bestand verwijderen destroyed_msg: Verwijderen website-upload geslaagd! statuses: + account: Account + application: Toepassing back_to_account: Terug naar accountpagina back_to_report: Terug naar de rapportage batch: remove_from_report: Uit de rapportage verwijderen report: Rapportage deleted: Verwijderd + favourites: Favorieten + history: Versiegeschiedenis + in_reply_to: Reactie op + language: Taal media: title: Media + metadata: Metagegevens no_status_selected: Er werden geen berichten gewijzigd, omdat er geen enkele werd geselecteerd + open: Bericht tonen + original_status: Oorspronkelijk bericht + reblogs: Boosts + status_changed: Bericht veranderd title: Berichten van account + trending: Trending + visibility: Zichtbaarheid with_media: Met media strikes: actions: @@ -640,6 +681,9 @@ nl: system_checks: database_schema_check: message_html: Niet alle databasemigraties zijn voltooid. Je moet deze uitvoeren om er voor te zorgen dat de applicatie blijft werken zoals het hoort + elasticsearch_version_check: + message_html: 'Incompatibele Elasticsearch-versie: %{value}' + version_comparison: Je gebruikt Elasticsearch %{running_version}, maar %{required_version} is vereist rules_check: action: Serverregels beheren message_html: Je hebt voor deze server geen regels opgesteld. @@ -650,31 +694,35 @@ nl: updated_msg: Instellingen hashtag succesvol bijgewerkt title: Beheer trends: - allow: Toestaan - approved: Toegestaan - disallow: Weigeren + allow: Goedkeuren + approved: Goedgekeurde + disallow: Afkeuren links: - allow: Link toestaan + allow: Link goedkeuren allow_provider: Website goedkeuren description_html: Dit zijn links die momenteel veel worden gedeeld door accounts waar jouw server berichten van ontvangt. Hierdoor kunnen jouw gebruikers zien wat er in de wereld aan de hand is. Er worden geen links weergeven totdat je de website hebt goedgekeurd. Je kunt ook individuele links goed- of afkeuren. - disallow: Link toestaan + disallow: Link afkeuren disallow_provider: Website afkeuren no_link_selected: Er werden geen links gewijzigd, omdat er geen enkele werd geselecteerd publishers: no_publisher_selected: Er werden geen websites gewijzigd, omdat er geen enkele werd geselecteerd + shared_by_over_week: + one: Deze week door één persoon gedeeld + other: Deze week door %{count} mensen gedeeld title: Trending links - only_allowed: Alleen toegestaan + usage_comparison: Vandaag %{today} keer gedeeld, vergeleken met %{yesterday} keer gisteren + only_allowed: Alleen goedgekeurde pending_review: In afwachting van beoordeling preview_card_providers: allowed: Links van deze website kunnen trending worden rejected: Links naar deze nieuwssite kunnen niet trending worden title: Websites - rejected: Afgewezen + rejected: Afgekeurd statuses: - allow: Bericht toestaan - allow_account: Gebruiker toestaan - disallow: Bericht niet toestaan - disallow_account: Gebruiker niet toestaan + allow: Bericht goedkeuren + allow_account: Account goedkeuren + disallow: Bericht afkeuren + disallow_account: Account afkeuren no_status_selected: Er werden geen trending berichten gewijzigd, omdat er geen enkele werd geselecteerd not_discoverable: Gebruiker heeft geen toestemming gegeven om vindbaar te zijn title: Trending berichten @@ -746,6 +794,7 @@ nl: title: Trending berichten new_trending_tags: title: Trending hashtags + subject: Nieuwe trends te beoordelen op %{instance} aliases: add_new: Alias aanmaken created_msg: Succesvol een nieuwe alias aangemaakt. Je kunt nu met de verhuizing vanaf het oude account beginnen. @@ -898,9 +947,11 @@ nl: approve_appeal: Bezwaar goedkeuren associated_report: Bijbehorende rapportage created_at: Datum en tijd + description_html: Dit zijn acties die op jouw account zijn toegepast en waarschuwingen die door medewerkers van %{instance} naar je zijn gestuurd. recipient: Geadresseerd aan reject_appeal: Bezwaar afgewezen status: 'Bericht #%{id}' + status_removed: Bericht is al van de server verwijderd title: "%{action} van %{date}" title_actions: delete_statuses: Verwijdering bericht @@ -964,6 +1015,7 @@ nl: add_keyword: Trefwoord toevoegen keywords: Trefwoorden statuses: Individuele berichten + statuses_hint_html: Dit filter is van toepassing om individuele berichten te selecteren, ongeacht of ze overeenkomen met de onderstaande trefwoorden. Berichten van het filter bekijken of verwijderen. title: Filter bewerken errors: deprecated_api_multiple_keywords: Deze instellingen kunnen niet via deze applicatie worden veranderd, omdat er meer dan één trefwoord wordt gebruikt. Gebruik een meer recente applicatie of de webomgeving. @@ -992,6 +1044,7 @@ nl: batch: remove: Uit het filter verwijderen index: + hint: Dit filter is van toepassing om individuele berichten te selecteren, ongeacht andere critiria. Je kunt in de webomgeving meer berichten aan dit filter toevoegen. title: Gefilterde berichten footer: trending_now: Trends @@ -1067,6 +1120,10 @@ nl: password: wachtwoord sign_in_token: beveiligingscode via e-mail webauthn: beveiligingssleutels + description_html: Wanneer je activiteit ziet die je niet herkent, overweeg dan uw wachtwoord te wijzigen en tweestapsverificatie in te schakelen. + empty: Geen inloggeschiedenis beschikbaar + failed_sign_in_html: Mislukte inlogpoging met %{method} van %{ip} (%{browser}) + successful_sign_in_html: Succesvol ingelogd met %{method} van %{ip} (%{browser}) title: Inloggeschiedenis media_attachments: validations: @@ -1212,8 +1269,14 @@ nl: status: Accountstatus remote_follow: missing_resource: Kon vereiste doorverwijzings-URL voor jouw account niet vinden + reports: + errors: + invalid_rules: verwijst niet naar geldige regels rss: content_warning: 'Inhoudswaarschuwing:' + descriptions: + account: Openbare berichten van @%{acct} + tag: 'Openbare berichten met hashtag #%{hashtag}' scheduled_statuses: over_daily_limit: Je hebt de limiet van %{limit} in te plannen berichten voor vandaag overschreden over_total_limit: Je hebt de limiet van %{limit} in te plannen berichten overschreden @@ -1259,6 +1322,7 @@ nl: revoke: Intrekken revoke_success: Sessie succesvol ingetrokken title: Sessies + view_authentication_history: Inloggeschiedenis van jouw account bekijken settings: account: Account account_settings: Accountinstellingen @@ -1296,6 +1360,7 @@ nl: other: "%{count} video's" boosted_from_html: Geboost van %{acct_link} content_warning: 'Inhoudswaarschuwing: %{warning}' + default_language: Hetzelfde als de taal van de gebruikersomgeving disallowed_hashtags: one: 'bevatte een niet toegestane hashtag: %{tags}' other: 'bevatte niet toegestane hashtags: %{tags}' @@ -1305,6 +1370,7 @@ nl: open_in_web: In de webapp openen over_character_limit: Limiet van %{max} tekens overschreden pin_errors: + direct: Berichten die alleen zichtbaar zijn voor vermelde gebruikers, kunnen niet worden vastgezet limit: Je hebt het maximaal aantal bericht al vastgemaakt ownership: Een bericht van iemand anders kan niet worden vastgemaakt reblog: Een boost kan niet worden vastgezet @@ -1331,12 +1397,20 @@ nl: unlisted: Minder openbaar unlisted_long: Aan iedereen tonen, maar niet op openbare tijdlijnen statuses_cleanup: + enabled: Automatisch oude berichten verwijderen + enabled_hint: Verwijder uw berichten automatisch zodra ze een bepaalde leeftijdsgrens bereiken, tenzij ze overeenkomen met een van de onderstaande uitzonderingen exceptions: Uitzonderingen + explanation: Doordat het verwijderen van berichten de server zwaar belast, gebeurt dit geleidelijk aan op momenten dat de server niet bezig is. Om deze reden kunnen uw berichten een tijdje nadat ze de leeftijdsgrens hebben bereikt worden verwijderd. ignore_favs: Favorieten negeren ignore_reblogs: Boosts negeren + interaction_exceptions: Uitzonderingen op basis van interacties + interaction_exceptions_explanation: Merk op dat er geen garantie is dat berichten worden verwijderd, wanneer eenmaal het aantal favorieten of boosts boven de ingestelde grenswaarde zijn geweest. keep_direct: Directe berichten behouden + keep_direct_hint: Verwijdert geen enkel directe bericht van jou keep_media: Berichten met mediabijlagen behouden + keep_media_hint: Verwijdert geen enkel bericht met mediabijlagen keep_pinned: Vastgemaakte berichten behouden + keep_pinned_hint: Verwijdert geen enkel vastgezet bericht van jou keep_polls: Polls behouden keep_polls_hint: Geen enkele poll van jou wordt verwijderd keep_self_bookmark: Bladwijzers behouden @@ -1353,7 +1427,10 @@ nl: '63113904': 2 jaar '7889238': 3 maanden min_age_label: Te verwijderen na - min_favs: Berichten die minstens zoveel keer als favoriet zijn gemarkeerd behouden + min_favs: Berichten die tenminste zoveel keer als favoriet zijn gemarkeerd behouden + min_favs_hint: Verwijdert geen berichten die tenminste zoveel keer als favoriet zijn gemarkeerd. Laat leeg om berichten ongeacht het aantal favorieten te verwijderen + min_reblogs: Berichten die minstens zoveel keer zijn geboost behouden + min_reblogs_hint: Verwijdert geen berichten die tenminste zoveel keer zijn geboost. Laat leeg om berichten ongeacht het aantal boosts te verwijderen stream_entries: pinned: Vastgemaakt bericht reblogged: boostte @@ -1402,26 +1479,39 @@ nl: subject: Jouw archief staat klaar om te worden gedownload title: Archief ophalen suspicious_sign_in: - change_password: jouw wachtwoord wijzigen + change_password: je wachtwoord te wijzigen + details: 'Hier zijn de details van inlogpoging:' + explanation: We hebben vastgesteld dat iemand vanaf een nieuw IP-adres op jouw account is ingelogd. + further_actions_html: Wanneer jij dit niet was, adviseren wij om onmiddellijk %{action} en om tweestapsverificatie in te schakelen, om zo je account veilig te houden. + subject: Jouw account is vanaf een nieuw IP-adres benaderd title: Een nieuwe registratie warning: appeal: Bezwaar indienen appeal_description: Wanneer je denkt dat dit een fout is, kun je een bezwaar indienen bij de medewerkers van %{instance}. categories: spam: Spam + violation: De inhoud is in strijd met de volgende communityrichtlijnen explanation: + delete_statuses: Er is vastgesteld dat sommige van jouw berichten in strijd zijn met één of meerdere communityrichtlijnen en daarom door de moderatoren van %{instance} zijn verwijderd. + disable: Je kunt niet langer jouw account gebruiken, maar jouw profiel en andere gegevens zijn nog wel intact. Je kunt een backup van je gegevens opvragen, accountinstellingen wijzigen of je account verwijderen. mark_statuses_as_sensitive: Sommige van jouw berichten zijn als gevoelig gemarkeerd door de moderatoren van %{instance}. Dit betekent dat mensen op de media in de berichten moeten klikken/tikken om deze weer te geven. Je kunt media in de toekomst ook zelf als gevoelig markeren. sensitive: Vanaf nu worden al jouw geüploade media als gevoelig gemarkeerd en verborgen achter een waarschuwing. + silence: Je kunt nog steeds jouw account gebruiken, maar alleen mensen die jou al volgen kunnen jouw berichten zien, en je kunt minder goed worden gevonden. Andere kunnen je echter nog wel steeds handmatig volgen. + suspend: Je kunt niet langer jouw account gebruiken, en jouw profiel en andere gegevens zijn niet langer toegankelijk. Je kunt nog steeds inloggen om een backup van jouw gegevens op te vragen, totdat deze na 30 dagen volledig worden verwijderd. We zullen wel enkele basisgegevens behouden om te voorkomen dat je onder je schorsing uit probeert te komen. reason: 'Reden:' statuses: 'Gerapporteerde berichten:' subject: + delete_statuses: Deze berichten van %{acct} zijn verwijderd disable: Jouw account %{acct} is bevroren + mark_statuses_as_sensitive: Deze berichten van %{acct} zijn als gevoelig gemarkeerd none: Waarschuwing voor %{acct} + sensitive: Berichten van %{acct} zullen vanaf nu altijd als gevoelig worden gemarkeerd silence: Jouw account %{acct} is nu beperkt suspend: Jouw account %{acct} is opgeschort title: delete_statuses: Berichten verwijderd disable: Account bevroren + mark_statuses_as_sensitive: Berichten als gevoelig gemarkeerd none: Waarschuwing sensitive: Account is als gevoelig gemarkeerd silence: Account beperkt diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 27d3240c8..9f6c024c8 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -733,16 +733,29 @@ pl: delete: Usuń przesłany plik destroyed_msg: Pomyślnie usunięto przesłany plik! statuses: + account: Autor + application: Aplikacja back_to_account: Wróć na konto back_to_report: Wróć do strony zgłoszenia batch: remove_from_report: Usuń ze zgłoszenia report: Zgłoszenie deleted: Usunięto + favourites: Ulubione + history: Historia wersji + in_reply_to: W odpowiedzi na + language: Język media: title: Multimedia + metadata: Metadane no_status_selected: Żaden wpis nie został zmieniony, bo żaden nie został wybrany + open: Otwarty post + original_status: Oryginalny post + reblogs: Podbicia + status_changed: Post zmieniony title: Wpisy konta + trending: Popularne + visibility: Widoczność with_media: Z zawartością multimedialną strikes: actions: diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 6e2ac523b..a5c4a6de1 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -675,10 +675,15 @@ pt-PT: appearance: preamble: Personalize a interface web do Mastodon. title: Aspeto + branding: + preamble: A marca do seu servidor diferencia-a de outros servidores na rede. Essa informação pode ser exibida em vários ambientes, como a interface web do Mastodon, aplicativos nativos, visualizações de links em outros sites e dentro de aplicativos de mensagens, etc. Por esta razão, é melhor manter esta informação clara, curta e concisa. + title: Marca content_retention: + preamble: Controle como o conteúdo gerado pelos utilizadores é armazenado no Mastodon. title: Retenção de conteúdo discovery: follow_recommendations: Recomendações para seguir + preamble: Revelar conteúdos interessantes é fundamental para a entrada de novos utilizadores que podem não conhecer ninguém no Mastodon. Controle como os vários recursos de descoberta funcionam no seu servidor. profile_directory: Diretório de perfis public_timelines: Cronologias públicas title: Descobrir @@ -700,16 +705,29 @@ pt-PT: delete: Eliminar arquivo carregado destroyed_msg: Upload do site eliminado com sucesso! statuses: + account: Autor + application: Aplicação back_to_account: Voltar para página da conta back_to_report: Voltar à página da denúncia batch: remove_from_report: Remover da denúncia report: Denúncia deleted: Eliminado + favourites: Favoritos + history: Histórico de versões + in_reply_to: A responder a + language: Idioma media: title: Media + metadata: Metadados no_status_selected: Nenhum estado foi alterado porque nenhum foi selecionado + open: Abrir publicação + original_status: Publicação original + reblogs: Reblogs + status_changed: Publicação alterada title: Estado das contas + trending: Em destaque + visibility: Visibilidade with_media: Com media strikes: actions: diff --git a/config/locales/ru.yml b/config/locales/ru.yml index bf7bb9db4..086c28226 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -661,16 +661,25 @@ ru: delete: Удалить загруженный файл destroyed_msg: Файл успешно удалён. statuses: + account: Автор + application: Заявка back_to_account: Назад к учётной записи back_to_report: Вернуться к жалобе batch: remove_from_report: Убрать из жалобы report: Пожаловаться deleted: Удалено + favourites: Избранное + history: История версий + in_reply_to: В ответ + language: Язык media: title: Файлы мультимедиа + metadata: Метаданные no_status_selected: Ничего не изменилось, так как ни один пост не был выделен title: Посты пользователя + trending: Популярное + visibility: Видимость with_media: С файлами strikes: actions: diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml index ea01e6882..35772a11e 100644 --- a/config/locales/simple_form.ar.yml +++ b/config/locales/simple_form.ar.yml @@ -185,6 +185,11 @@ ar: with_dns_records: تضمين سجلات MX و عناوين IP للنطاق featured_tag: name: الوسم + form_admin_settings: + site_terms: سياسة الخصوصية + site_title: اسم الخادم + theme: الحُلَّة الإفتراضية + thumbnail: الصورة المصغرة للخادم interactions: must_be_follower: حظر الإخطارات القادمة من حسابات لا تتبعك must_be_following: حظر الإخطارات القادمة من الحسابات التي لا تتابعها @@ -216,7 +221,12 @@ ar: name: الوسم trendable: السماح لهذه الكلمة المفتاحية بالظهور تحت المتداوَلة usable: اسمح للمنشورات استخدام هذا الوسم + user: + role: الدور + user_role: + color: لون الشارة 'no': لا + not_recommended: غير مستحسن recommended: موصى بها required: mark: "*" diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index 19b524af7..a7dce2b67 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -78,9 +78,13 @@ cs: bootstrap_timeline_accounts: Tyto účty budou připnuty na vrchol nových uživatelů podle doporučení. closed_registrations_message: Zobrazeno při zavření registrace content_cache_retention_period: Příspěvky z jiných serverů budou odstraněny po zadaném počtu dní, pokud je nastavena kladná hodnota. To může být nevratné. + custom_css: Můžete použít vlastní styly ve verzi Mastodonu. media_cache_retention_period: Stažené mediální soubory budou po zadaném počtu dní odstraněny, pokud je nastavena kladná hodnota, a na požádání znovu staženy. + profile_directory: Adresář profilu obsahuje seznam všech uživatelů, kteří se přihlásili, aby mohli být nalezeni. site_contact_username: Jak vás lidé mohou oslovit na Mastodon. + site_extended_description: Jakékoli další informace, které mohou být užitečné pro návštěvníky a vaše uživatele. Může být strukturováno pomocí Markdown syntaxe. site_terms: Použijte vlastní zásady ochrany osobních údajů nebo ponechte prázdné pro použití výchozího nastavení. Může být strukturováno pomocí Markdown syntaxe. + thumbnail: Přibližně 2:1 obrázek zobrazený vedle informací o vašem serveru. form_challenge: current_password: Vstupujete do zabezpečeného prostoru imports: diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index 3f65cb527..9f2c2e562 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -235,7 +235,7 @@ da: custom_css: Tilpasset CSS mascot: Tilpasset maskot (ældre funktion) media_cache_retention_period: Media-cache opbevaringsperiode - profile_directory: Aktivér profilmappe + profile_directory: Aktivér profiloversigt registrations_mode: Hvem, der kan tilmelde sig require_invite_text: Kræv tilmeldingsbegrundelse show_domain_blocks: Vis domæneblokeringer diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index 757a589db..c0638b323 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -75,6 +75,7 @@ de: warn: Den gefilterten Inhalt hinter einer Warnung ausblenden, die den Filtertitel beinhaltet form_admin_settings: backups_retention_period: Behalte generierte Benutzerarchive für die angegebene Anzahl von Tagen. + closed_registrations_message: Wird angezeigt, wenn Anmeldungen geschlossen sind content_cache_retention_period: Beiträge von anderen Servern werden nach der angegebenen Anzahl von Tagen, wenn sie auf einen positiven Wert gesetzt werden, gelöscht. Dies kann eventuell nicht rückgängig gemacht werden. media_cache_retention_period: Heruntergeladene Mediendateien werden nach der angegebenen Anzahl von Tagen, wenn sie auf einen positiven Wert gesetzt werden, gelöscht und bei Bedarf erneut heruntergeladen. form_challenge: @@ -213,8 +214,16 @@ de: warn: Mit einer Warnung ausblenden form_admin_settings: backups_retention_period: Aufbewahrungsfrist für Benutzerarchive + closed_registrations_message: Benutzerdefinierte Nachricht, wenn Anmeldungen nicht verfügbar sind content_cache_retention_period: Aufbewahrungsfrist für Inhalte im Cache + custom_css: Benutzerdefiniertes CSS media_cache_retention_period: Aufbewahrungsfrist für den Medien-Cache + registrations_mode: Wer kann sich registrieren + show_domain_blocks: Zeige Domain-Blockaden + site_short_description: Serverbeschreibung + site_terms: Datenschutzerklärung + site_title: Servername + trends: Trends aktivieren interactions: must_be_follower: Benachrichtigungen von Profilen blockieren, die mir nicht folgen must_be_following: Benachrichtigungen von Profilen blockieren, denen ich nicht folge diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index 3b97e4df6..8df08dc8d 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -136,7 +136,7 @@ es: account_alias: acct: Maneja la cuenta antigua account_migration: - acct: Maneja la cuenta nueva + acct: Alias de la nueva cuenta account_warning_preset: text: Texto predefinido title: Título diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index 53e6a52b3..2a0765cff 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -73,6 +73,27 @@ fi: actions: hide: Piilota suodatettu sisältö kokonaan ja käyttäydy ikään kuin sitä ei olisi olemassa warn: Piilota suodatettu sisältö varoituksen taakse, jossa mainitaan suodattimen otsikko + form_admin_settings: + backups_retention_period: Säilytä luodut arkistot määritetyn määrän päiviä. + bootstrap_timeline_accounts: Nämä tilit kiinnitetään uusien käyttäjien suositusten yläpuolelle. + closed_registrations_message: Näkyy, kun ilmoittautuminen on suljettu + content_cache_retention_period: Viestit muilta palvelimilta poistetaan määritetyn määrän päiviä jälkeen, kun arvo on asetettu positiiviseksi. Tämä voi olla peruuttamatonta. + custom_css: Voit käyttää mukautettuja tyylejä Mastodonin verkkoversiossa. + mascot: Ohittaa kuvituksen edistyneessä käyttöliittymässä. + media_cache_retention_period: Ladatut mediatiedostot poistetaan määritetyn määrän päiviä jälkeen, kun arvo on positiivinen ja ladataan uudelleen pyynnöstä. + profile_directory: Profiilihakemisto lueteloi kaikki käyttäjät, jotka ovat ilmoittaneet olevansa löydettävissä. + require_invite_text: Kun kirjautuminen vaatii manuaalisen hyväksynnän, tee ”Miksi haluat liittyä?” teksti syötetään pakolliseksi eikä vapaaehtoiseksi + site_contact_email: Kuinka ihmiset voivat tavoittaa sinut oikeudellisissa tai tukikysymyksissä. + site_contact_username: Miten ihmiset voivat tavoittaa sinut Mastodonissa. + site_extended_description: Kaikki lisätiedot, jotka voivat olla hyödyllisiä kävijöille ja käyttäjille. Voidaan jäsentää Markdown-syntaksilla. + site_short_description: Lyhyt kuvaus auttaa yksilöimään palvelimesi. Kuka sitä johtaa, kenelle se on tarkoitettu? + site_terms: Käytä omaa tietosuojakäytäntöä tai jätä tyhjäksi, jos haluat käyttää oletusta. Voidaan jäsentää Markdown-syntaksilla. + site_title: Kuinka ihmiset voivat viitata palvelimeen sen verkkotunnuksen lisäksi. + theme: Teema, jonka uloskirjautuneet vierailijat ja uudet käyttäjät näkevät. + thumbnail: Noin 2:1 kuva näytetään palvelimen tietojen rinnalla. + timeline_preview: Uloskirjautuneet vierailijat voivat selata uusimpia julkisia viestejä, jotka ovat saatavilla palvelimella. + trendable_by_default: Ohita suositun sisällön manuaalinen tarkistus. Yksittäisiä kohteita voidaan edelleen poistaa jälkikäteen. + trends: Trendit osoittavat, mitkä viestit, hashtagit ja uutiset ovat saamassa vetoa palvelimellasi. form_challenge: current_password: Olet menossa suojatulle alueelle imports: @@ -207,6 +228,30 @@ fi: actions: hide: Piilota kokonaan warn: Piilota varoituksella + form_admin_settings: + backups_retention_period: Käyttäjän arkiston säilytysaika + bootstrap_timeline_accounts: Suosittele aina näitä tilejä uusille käyttäjille + closed_registrations_message: Mukautettu viesti, kun kirjautumisia ei ole saatavilla + content_cache_retention_period: Sisällön välimuistin säilytysaika + custom_css: Mukautettu CSS + mascot: Mukautettu maskotti (legacy) + media_cache_retention_period: Median välimuistin säilytysaika + profile_directory: Ota profiilihakemisto käyttöön + registrations_mode: Kuka voi rekisteröityä + require_invite_text: Vaadi syy liittyä + show_domain_blocks: Näytä domainestot + show_domain_blocks_rationale: Näytä miksi verkkotunnukset on estetty + site_contact_email: Ota yhteyttä sähköpostilla + site_contact_username: Kontaktin käyttäjänimi + site_extended_description: Laajennettu kuvaus + site_short_description: Palvelimen kuvaus + site_terms: Tietosuojakäytäntö + site_title: Palvelimen nimi + theme: Oletusteema + thumbnail: Palvelimen pikkukuva + timeline_preview: Salli todentamaton pääsy julkiselle aikajanalle + trendable_by_default: Salli trendit ilman ennakkotarkastusta + trends: Trendit käyttöön interactions: must_be_follower: Estä ilmoitukset käyttäjiltä, jotka eivät seuraa sinua must_be_following: Estä ilmoitukset käyttäjiltä, joita et seuraa @@ -253,6 +298,7 @@ fi: events: Tapahtumat käytössä url: Päätepisteen URL 'no': Ei + not_recommended: Ei suositella recommended: Suositeltu required: mark: "*" diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index c0c460f1d..1173d5480 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -209,7 +209,19 @@ fr: warn: Cacher derrière un avertissement form_admin_settings: content_cache_retention_period: Durée de rétention du contenu dans le cache + mascot: Mascotte personnalisée (héritée) media_cache_retention_period: Durée de rétention des médias dans le cache + profile_directory: Activer l’annuaire des profils + registrations_mode: Qui peut s’inscrire + site_extended_description: Description étendue + site_short_description: Description du serveur + site_terms: Politique de confidentialité + site_title: Nom du serveur + theme: Thème par défaut + thumbnail: Miniature du serveur + timeline_preview: Autoriser l’accès non authentifié aux fils publics + trendable_by_default: Autoriser les tendances sans révision préalable + trends: Activer les tendances interactions: must_be_follower: Bloquer les notifications des personnes qui ne vous suivent pas must_be_following: Bloquer les notifications des personnes que vous ne suivez pas diff --git a/config/locales/simple_form.gd.yml b/config/locales/simple_form.gd.yml index 7165cb243..5a23f5f85 100644 --- a/config/locales/simple_form.gd.yml +++ b/config/locales/simple_form.gd.yml @@ -73,6 +73,27 @@ gd: actions: hide: Falaich an t-susbaint chriathraichte uile gu lèir mar nach robh i ann idir warn: Falaich an t-susbaint chriathraichte air cùlaibh rabhaidh a dh’innseas tiotal na criathraige + form_admin_settings: + backups_retention_period: Cùm na tasg-lannan a chaidh a ghintinn dhan luchd-cleachdaidh rè an àireamh de làithean a shònraich thu. + bootstrap_timeline_accounts: Thèid na cunntasan seo a phrìneachadh air bàrr nam molaidhean leantainn dhan luchd-cleachdaidh ùr. + closed_registrations_message: Thèid seo a shealltainn nuair a bhios an clàradh dùinte + content_cache_retention_period: Thèid na postaichean o fhrithealaichean eile a sguabadh às às dèidh an àireamh de làithean a shònraich thu nuair a bhios luach dearbh air. Dh’fhaoidte nach gabh seo a neo-dhèanamh. + custom_css: "’S urrainn dhut stoidhlean gnàthaichte a chur an sàs air an tionndadh-lìn de Mhastodon." + mascot: Tar-àithnidh seo an sgead-dhealbh san eadar-aghaidh-lìn adhartach. + media_cache_retention_period: Thèid na faidhlichean meadhain air an luchdadh a-nuas a sguabadh às às dèidh an àireamh de làithean a shònraich thu nuair a bhios luach dearbh air agus an ath-luachdadh nuair a thèid an iarraidh an uairsin. + profile_directory: Seallaidh eòlaire nam pròifil liosta dhen luchd-cleachdaidh a dh’aontaich gun gabh an rùrachadh. + require_invite_text: Nuair a bhios aontachadh a làimh riatanach dhan chlàradh, dèan an raon teacsa “Carson a bu mhiann leat ballrachd fhaighinn?” riatanach seach roghainneil + site_contact_email: Mar a ruigear thu le ceistean laghail no taice. + site_contact_username: Mar a ruigear thu air Mastodon. + site_extended_description: Cuir fiosrachadh sam bith eile ris a bhios feumail do dh’aoighean ’s an luchd-cleachdaidh agad. ’S urrainn dhut structar a chur air le co-chàradh Markdown. + site_short_description: Tuairisgeul goirid a chuidicheas le aithneachadh sònraichte an fhrithealaiche agad. Cò leis is cò dha a tha e? + site_terms: Cleachd am poileasaidh prìobhaideachd agad fhèin no fàg bàn e gus am fear bunaiteach a chleachdadh. ’S urrainn dhut structar a chur air le co-chàradh Markdown. + site_title: An t-ainm a tha air an fhrithealaiche agad seach ainm àrainne. + theme: An t-ùrlar a chì na h-aoighean gun chlàradh a-staigh agus an luchd-cleachdaidh ùr. + thumbnail: Dealbh mu 2:1 a thèid a shealltainn ri taobh fiosrachadh an fhrithealaiche agad. + timeline_preview: "’S urrainn dha na h-aoighean gun chlàradh a-staigh na postaichean poblach as ùire a tha ri fhaighinn air an fhrithealaiche a bhrabhsadh." + trendable_by_default: Geàrr leum thar lèirmheas a làimh na susbainte a’ treandadh. Gabhaidh nithean fa leth a thoirt far nan treandaichean fhathast an uairsin. + trends: Seallaidh na treandaichean na postaichean, tagaichean hais is naidheachdan a tha fèill mhòr orra air an fhrithealaiche agad. form_challenge: current_password: Tha thu a’ tighinn a-steach gu raon tèarainte imports: @@ -85,6 +106,7 @@ gd: ip: Cuir a-steach seòladh IPv4 no IPv6. ’S urrainn dhut rainsean gu lèir a bhacadh le co-chàradh CIDR. Thoir an aire nach gluais thu thu fhèin a-mach! severities: no_access: Bac inntrigeadh dha na goireasan uile + sign_up_block: Cha bhi ùr-chlàradh ceadaichte sign_up_requires_approval: Bidh cleachdaichean air an ùr-chlàradh feumach air d’ aonta severity: Tagh na thachras le iarrtasan on IP seo rule: @@ -206,6 +228,30 @@ gd: actions: hide: Falaich uile gu lèir warn: Falaich le rabhadh + form_admin_settings: + backups_retention_period: Ùine glèidhidh aig tasg-lannan an luchd-cleachdaidh + bootstrap_timeline_accounts: Mol na cunntasan seo do chleachdaichean ùra an-còmhnaidh + closed_registrations_message: Teachdaireachd ghnàthaichte nuair nach eil clàradh ri fhaighinn + content_cache_retention_period: Ùine glèidhidh aig tasgadan na susbainte + custom_css: CSS gnàthaichte + mascot: Suaichnean gnàthaichte (dìleabach) + media_cache_retention_period: Ùine glèidhidh aig tasgadan nam meadhanan + profile_directory: Cuir eòlaire nam pròifil an comas + registrations_mode: Cò dh’fhaodas clàradh + require_invite_text: Iarr adhbhar clàraidh + show_domain_blocks: Seall bacaidhean àrainne + show_domain_blocks_rationale: Seall carson a chaidh àrainnean a bacadh + site_contact_email: Post-d a’ chonaltraidh + site_contact_username: Ainm cleachdaiche a’ chonaltraidh + site_extended_description: Tuairisgeul leudaichte + site_short_description: Tuairisgeul an fhrithealaiche + site_terms: Poileasaidh prìobhaideachd + site_title: Ainm an fhrithealaiche + theme: An t-ùrlar bunaiteach + thumbnail: Dealbhag an fhrithealaiche + timeline_preview: Ceadaich inntrigeadh gun ùghdarrachadh air na loidhnichean-ama phoblach + trendable_by_default: Ceadaich treandaichean gu lèirmheas ro làimh + trends: Cuir na treandaichean an comas interactions: must_be_follower: Bac na brathan nach eil o luchd-leantainn must_be_following: Bac na brathan o dhaoine air nach lean thu @@ -219,6 +265,7 @@ gd: ip: IP severities: no_access: Bac inntrigeadh + sign_up_block: Bac clàraidhean ùra sign_up_requires_approval: Cuingich clàraidhean ùra severity: Riaghailt notification_emails: @@ -251,6 +298,7 @@ gd: events: Na tachartas an comas url: URL na puinge-deiridh 'no': Chan eil + not_recommended: Cha mholamaid seo recommended: Molta required: mark: "*" diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml index 9a7bd4cf4..d351ff412 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -75,8 +75,25 @@ gl: warn: Agochar o contido filtrado tras un aviso que conteña o nome do filtro form_admin_settings: backups_retention_period: Gardar os arquivos xerados pola usuaria durante o número de días indicado. + bootstrap_timeline_accounts: Estas contas aparecerán fixas na parte superior das recomendacións para as usuarias. + closed_registrations_message: Móstrase cando non se admiten novas usuarias content_cache_retention_period: As publicacións desde outros servidores serán eliminados despois do número de días indicados ao poñer un valor positivo. É unha acción irreversible. + custom_css: Podes aplicar deseños personalizados na versión web de Mastodon. + mascot: Sobrescribe a ilustración na interface web avanzada. media_cache_retention_period: Os ficheiros multimedia descargados serán eliminados despois do número de días indicado ao establecer un valor positivo, e voltos a descargar baixo petición. + profile_directory: O directorio de perfís inclúe a tódalas usuarias que optaron por ser descubribles. + require_invite_text: Cando os rexistros requiren aprobación manual, facer que o texto "Por que te queres rexistrar?" do convite sexa obrigatorio en lugar de optativo + site_contact_email: De que xeito se pode contactar contigo para temas legais ou obter axuda. + site_contact_username: De que xeito se pode contactar contigo en Mastodon. + site_extended_description: Calquera información adicional que poida ser útil para visitantes e usuarias. Pode utilizarse sintaxe Markdown. + site_short_description: Breve descrición que axuda a identificar de xeito único o teu servidor. Quen o xestiona, a quen vai dirixido? + site_terms: Escribe a túa propia política de privacidade ou usa o valor por defecto. Podes usar sintaxe Markdow. + site_title: De que xeito se pode referir o teu servidor ademáis do seu nome de dominio. + theme: Decorado que verán visitantes e novas usuarias. + thumbnail: Imaxe con proporcións 2:1 mostrada xunto á información sobre o servidor. + timeline_preview: Visitantes e usuarias non conectadas poderán ver as publicacións públicas máis recentes do servidor. + trendable_by_default: Omitir a revisión manual das tendencias. Poderás igualmente eliminar manualmente os elementos que vaian aparecendo. + trends: As tendencias mostran publicacións, cancelos e novas historias que teñen popularidade no teu servidor. form_challenge: current_password: Estás entrando nun área segura imports: @@ -213,8 +230,28 @@ gl: warn: Agochar tras un aviso form_admin_settings: backups_retention_period: Período de retención do arquivo da usuaria + bootstrap_timeline_accounts: Recomendar sempre estas contas ás novas usuarias + closed_registrations_message: Mensaxe personalizada para cando o rexistro está pechado content_cache_retention_period: Período de retención da caché do contido + custom_css: CSS personalizado + mascot: Mascota propia (herdado) media_cache_retention_period: Período de retención da caché multimedia + profile_directory: Activar o directorio de perfís + registrations_mode: Quen se pode rexistrar + require_invite_text: Pedir unha razón para unirse + show_domain_blocks: Amosar dominios bloqueados + show_domain_blocks_rationale: Explicar porque están bloqueados os dominios + site_contact_email: Email de contacto + site_contact_username: Nome do contacto + site_extended_description: Descrición ampla + site_short_description: Descrición do servidor + site_terms: Política de Privacidade + site_title: Nome do servidor + theme: Decorado por omisión + thumbnail: Icona do servidor + timeline_preview: Permitir acceso á cronoloxía pública sen autenticación + trendable_by_default: Permitir tendencias sen aprobación previa + trends: Activar tendencias interactions: must_be_follower: Bloquear as notificacións de non-seguidoras must_be_following: Bloquea as notificacións de persoas que non segues diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index 0f943f0a2..d39f8fe09 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -219,6 +219,7 @@ hu: warn: Elrejtés figyelmeztetéssel form_admin_settings: backups_retention_period: Felhasználói archívum megtartási időszaka + closed_registrations_message: A feliratkozáskor megjelenő egyéni üzenet nem érhető el content_cache_retention_period: Tartalom-gyorsítótár megtartási időszaka custom_css: Egyéni CSS mascot: Egyéni kabala (örökölt) @@ -227,6 +228,7 @@ hu: registrations_mode: Ki regisztrálhat require_invite_text: Indok megkövetelése a csatlakozáshoz show_domain_blocks: Domain tiltások megjelenitése + show_domain_blocks_rationale: A domainok blokkolásának okának megjelenítése site_extended_description: Bővített leírás site_short_description: Kiszolgáló leírása site_terms: Adatvédelmi szabályzat diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml index 326e26168..50019ecb6 100644 --- a/config/locales/simple_form.is.yml +++ b/config/locales/simple_form.is.yml @@ -75,8 +75,25 @@ is: warn: Fela síað efni á bakvið aðvörun sem tekur fram titil síunnar form_admin_settings: backups_retention_period: Halda safni notandans í tiltekinn fjölda daga. + bootstrap_timeline_accounts: Þessir notendaaðgangar verða festir efst í meðmælum til nýrra notenda um að fylgjast með þeim. + closed_registrations_message: Birtist þegar lokað er á nýskráningar content_cache_retention_period: Færslum af öðrum netþjónum verður eytt eftir tiltekinn fjölda daga þegar þetta er jákvætt gildi. Þetta gæti verið óafturkallanleg aðgerð. + custom_css: Þú getur virkjað sérsniðna stíla í vefútgáfu Mastodon. + mascot: Þetta tekyr yfir myndskreytinguna í ítarlega vefviðmótinu. media_cache_retention_period: Sóttu myndefni verður eytt eftir tiltekinn fjölda daga þegar þetta er jákvætt gildi og síðan sótt aftur eftir þörfum. + profile_directory: Notendamappan telur upp alla þá notendur sem hafa valið að vera uppgötvanlegir. + require_invite_text: Þegar nýskráningar krefjast handvirks samþykkis, þá skal gera textann í “Hvers vegna viltu taka þátt?” að kröfu en ekki valkvæðan + site_contact_email: Hovernig fólk getur haft samband við þig til að fá aðstoð eða vegna lagalegra mála. + site_contact_username: Hovernig fólk getur haft samband við þig á Mastodon. + site_extended_description: Hverjar þær viðbótarupplýsingar sem gætu nýst gestum þínum og notendum. Má sníða með Markdown-málskipan. + site_short_description: Stutt lýsing sem hjálpar til við að auðkenna netþjóninn þinn. Hver er að reka hann, fyrir hverja er hann? + site_terms: Notaðu þína eigin persónuverndarstefnu eða skildu þetta eftir autt til að nota sjálfgefna stefnu. Má sníða með Markdown-málskipan. + site_title: Hvað fólk kallar netþjóninn þinn annað en með heiti lénsins. + theme: Þema sem útskráðir gestir og nýjir notendur sjá. + thumbnail: Mynd um það bil 2:1 sem birtist samhliða upplýsingum um netþjóninn þinn. + timeline_preview: Gestir sem ekki eru skráðir inn munu geta skoðað nýjustu opinberu færslurnar sem tiltækar eru á þjóninum. + trendable_by_default: Sleppa handvirkri yfirferð á vinsælu efni. Áfram verður hægt að fjarlægja stök atriði úr vinsældarlistum. + trends: Vinsældir sýna hvaða færslur, myllumerki og fréttasögur séu í umræðunni á netþjóninum þínum. form_challenge: current_password: Þú ert að fara inn á öryggissvæði imports: @@ -213,8 +230,28 @@ is: warn: Fela með aðvörun form_admin_settings: backups_retention_period: Tímalengd sem safni notandans er haldið eftir + bootstrap_timeline_accounts: Alltaf mæla með þessum notendaaðgöngum fyrir nýja notendur + closed_registrations_message: Sérsniðin skilaboð þegar ekki er hægt að nýskrá content_cache_retention_period: Tímalengd sem haldið er í biðminni + custom_css: Sérsniðið CSS + mascot: Sérsniðið gæludýr (eldra) media_cache_retention_period: Tímalengd sem myndefni haldið + profile_directory: Virkja notendamöppu + registrations_mode: Hverjir geta nýskráð sig + require_invite_text: Krefjast ástæðu fyrir þátttöku + show_domain_blocks: Sýna útilokanir léna + show_domain_blocks_rationale: Sýna af hverju lokað var á lén + site_contact_email: Tölvupóstfang tengiliðar + site_contact_username: Notandanafn tengiliðar + site_extended_description: Ítarleg lýsing + site_short_description: Lýsing á vefþjóni + site_terms: Persónuverndarstefna + site_title: Heiti vefþjóns + theme: Sjálfgefið þema + thumbnail: Smámynd vefþjóns + timeline_preview: Leyfa óauðkenndan aðgang að opinberum tímalínum + trendable_by_default: Leyfa vinsælt efni án undanfarandi yfirferðar + trends: Virkja vinsælt interactions: must_be_follower: Loka á tilkynningar frá þeim sem ekki eru fylgjendur must_be_following: Loka á tilkynningar frá þeim sem þú fylgist ekki með diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index 30851b932..7a3ab07d5 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -75,8 +75,14 @@ ko: warn: 필터에 걸러진 글을 필터 제목과 함께 경고 뒤에 가리기 form_admin_settings: backups_retention_period: 생성된 사용자 아카이브를 며칠동안 저장할 지. + closed_registrations_message: 새 가입을 차단했을 때 표시됩니다 content_cache_retention_period: 양수가 설정되었다면 다른 서버의 게시물은 여기서 설정된 일수가 지나면 삭제될 것입니다. 되돌릴 수 없는 작업일 수 있습니다. + custom_css: 사용자 지정 스타일을 웹 버전의 마스토돈에 지정할 수 있습니다. + mascot: 고급 사용자 인터페이스에 있는 일러스트를 교체합니다. media_cache_retention_period: 양수로 설정된 경우 다운로드된 미디어 파일들은 지정된 일수가 지나면 삭제될 것이고 필요할 때 다시 다운로드 될 것입니다. + site_contact_email: 사람들이 법적이나 도움 요청을 위해 당신에게 연락할 방법. + site_contact_username: 사람들이 마스토돈에서 당신에게 연락할 방법. + theme: 로그인 하지 않은 사용자나 새로운 사용자가 보게 될 테마. form_challenge: current_password: 당신은 보안 구역에 진입하고 있습니다 imports: @@ -213,8 +219,28 @@ ko: warn: 경고와 함께 숨기기 form_admin_settings: backups_retention_period: 사용자 아카이브 유지 기한 + bootstrap_timeline_accounts: 새로운 사용자들에게 추천할 계정들 + closed_registrations_message: 가입이 불가능 할 때의 사용자 지정 메시지 content_cache_retention_period: 컨텐트 캐시 유지 기한 + custom_css: 사용자 정의 CSS + mascot: 사용자 정의 마스코트 (legacy) media_cache_retention_period: 미디어 캐시 유지 기한 + profile_directory: 프로필 책자 활성화 + registrations_mode: 누가 가입할 수 있는지 + require_invite_text: 가입 하는 이유를 필수로 입력하게 하기 + show_domain_blocks: 도메인 차단 보여주기 + show_domain_blocks_rationale: 왜 도메인이 차단되었는지 보여주기 + site_contact_email: 연락처 이메일 + site_contact_username: 연락 받을 관리자 사용자명 + site_extended_description: 확장된 설명 + site_short_description: 서버 설명 + site_terms: 개인정보 정책 + site_title: 서버 이름 + theme: 기본 테마 + thumbnail: 서버 썸네일 + timeline_preview: 로그인 하지 않고 공개 타임라인에 접근하는 것을 허용 + trendable_by_default: 사전 리뷰 없이 트렌드에 오르는 것을 허용 + trends: 유행 활성화 interactions: must_be_follower: 나를 팔로우 하지 않는 사람에게서 온 알림을 차단 must_be_following: 내가 팔로우 하지 않는 사람에게서 온 알림을 차단 diff --git a/config/locales/simple_form.ku.yml b/config/locales/simple_form.ku.yml index a62e8eb40..7ef4e7ac3 100644 --- a/config/locales/simple_form.ku.yml +++ b/config/locales/simple_form.ku.yml @@ -77,7 +77,10 @@ ku: warn: Naveroka parzûnkirî li pişt hişyariyek ku sernavê parzûnê qal dike veşêre form_admin_settings: backups_retention_period: Arşîvên bikarhênerên çêkirî ji bo rojên diyarkirî tomar bike. + bootstrap_timeline_accounts: Ev ajimêr wê di pêşnîyarên şopandina bikarhênerên nû de werin derzîkirin. + closed_registrations_message: Dema ku tomarkirin girtî bin têne xuyakirin content_cache_retention_period: Şandiyên ji rajekarên din wê piştî çend rojên diyarkirî dema ku li ser nirxek erênî were danîn werin jêbirin. Dibe ku ev bê veger be. + custom_css: Tu dikarî awayên kesane li ser guhertoya malperê ya Mastodon bicîh bikî. media_cache_retention_period: Pelên medyayê yên daxistî wê piştî çend rojên diyarkirî dema ku li ser nirxek erênî were danîn werin jêbirin, û li gorî daxwazê ​​ji nû ve werin daxistin. form_challenge: current_password: Tu dikevî qadeke ewledar @@ -216,7 +219,13 @@ ku: form_admin_settings: backups_retention_period: Serdema tomarkirina arşîva bikarhêner content_cache_retention_period: Serdema tomarkirina bîrdanka naverokê + custom_css: CSS a kesanekirî + mascot: Mascot a kesanekirî (legacy) media_cache_retention_period: Serdema tomarkirina bîrdanka medyayê + profile_directory: Rêgeha profilê çalak bike + registrations_mode: Kî dikare tomar bibe + require_invite_text: Ji bo tevlêbûnê sedemek pêdivî ye + show_domain_blocks: Astengkirinên navperê nîşan bide site_terms: Politîka taybetiyê trendable_by_default: Mafê bide rojevê bêyî ku were nirxandin interactions: diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index 115c7894d..33dd889c4 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -49,6 +49,7 @@ nl: phrase: Komt overeen ongeacht hoofd-/kleine letters of een inhoudswaarschuwing scopes: Tot welke API's heeft de toepassing toegang. Wanneer je een toestemming van het bovenste niveau kiest, hoef je geen individuele toestemmingen meer te kiezen. setting_aggregate_reblogs: Geen nieuwe boosts tonen voor berichten die recentelijk nog zijn geboost (heeft alleen effect op nieuw ontvangen boosts) + setting_always_send_emails: Normaliter worden er geen e-mailmeldingen verstuurd wanneer je actief Mastodon gebruikt setting_default_sensitive: Gevoelige media wordt standaard verborgen en kan met één klik worden getoond setting_display_media_default: Als gevoelig gemarkeerde media verbergen setting_display_media_hide_all: Media altijd verbergen @@ -73,8 +74,15 @@ nl: warn: Verberg de gefilterde inhoud achter een waarschuwing, met de titel van het filter als waarschuwingstekst form_admin_settings: backups_retention_period: De aangemaakte gebruikersarchieven voor het opgegeven aantal dagen behouden. + bootstrap_timeline_accounts: Deze accounts worden bovenaan de aanbevelingen aan nieuwe gebruikers getoond. Meerdere gebruikersnamen met komma's scheiden. + closed_registrations_message: Weergegeven wanneer registratie van nieuwe accounts is uitgeschakeld content_cache_retention_period: 'Berichten van andere servers worden na het opgegeven aantal dagen verwijderd. Let op: Dit is onomkeerbaar.' media_cache_retention_period: Mediabestanden die van andere servers zijn gedownload worden na het opgegeven aantal dagen verwijderd en worden op verzoek opnieuw gedownload. + require_invite_text: Maak het invullen van "Waarom wil je je hier registreren?" verplicht in plaats van optioneel, wanneer registraties handmatig moeten worden goedgekeurd + theme: Thema die (niet ingelogde) bezoekers en nieuwe gebruikers zien. + timeline_preview: Bezoekers (die niet zijn ingelogd) kunnen de meest recente, op de server aanwezige openbare berichten bekijken. + trendable_by_default: Handmatige beoordeling van trends overslaan. Individuele items kunnen later alsnog worden afgekeurd. + trends: Trends laten zien welke berichten, hashtags en nieuwsberichten op jouw server aan populariteit winnen. form_challenge: current_password: Je betreedt een veilige omgeving imports: @@ -101,9 +109,12 @@ nl: chosen_languages: Alleen berichten in de aangevinkte talen worden op de openbare tijdlijnen getoond role: De rol bepaalt welke rechten een gebruiker heeft user_role: + highlighted: Dit maakt de rol openbaar zichtbaar + name: Openbare naam van de rol, wanneer de rol als badge op profielpagina's wordt getoond permissions_as_keys: Gebruikers met deze rol hebben toegang tot... webhook: events: Selecteer de te verzenden gebeurtenissen + url: Waar gebeurtenissen naartoe worden verzonden labels: account: fields: @@ -206,8 +217,28 @@ nl: warn: Met een waarschuwing verbergen form_admin_settings: backups_retention_period: Bewaartermijn gebruikersarchief + bootstrap_timeline_accounts: Accounts die altijd aan nieuwe gebruikers worden aanbevolen + closed_registrations_message: Aangepast bericht wanneer registratie is uitgeschakeld content_cache_retention_period: Bewaartermijn berichtencache + custom_css: Aangepaste CSS + mascot: Aangepaste mascotte (legacy) media_cache_retention_period: Bewaartermijn mediacache + profile_directory: Gebruikersgids inschakelen + registrations_mode: Wie kan zich registreren + require_invite_text: Goedkeuring vereist om te kunnen registreren + show_domain_blocks: Domeinblokkades tonen + show_domain_blocks_rationale: Redenen voor domeinblokkades tonen + site_contact_email: E-mailadres contactpersoon + site_contact_username: Gebruikersnaam contactpersoon + site_extended_description: Uitgebreide omschrijving + site_short_description: Serveromschrijving + site_terms: Privacybeleid + site_title: Servernaam + theme: Standaardthema + thumbnail: Serverthumbnail + timeline_preview: Toegang tot de openbare tijdlijnen zonder in te loggen toestaan + trendable_by_default: Trends goedkeuren zonder voorafgaande beoordeling + trends: Trends inschakelen interactions: must_be_follower: Meldingen van mensen die jou niet volgen blokkeren must_be_following: Meldingen van mensen die jij niet volgt blokkeren @@ -240,12 +271,13 @@ nl: tag: listable: Toestaan dat deze hashtag in zoekopdrachten en aanbevelingen te zien valt name: Hashtag - trendable: Toestaan dat deze hashtag onder trends te zien valt + trendable: Goedkeuren dat deze hashtag onder trends te zien valt usable: Toestaan dat deze hashtag in berichten gebruikt mag worden user: role: Rol user_role: color: Kleur van badge + highlighted: Rol als badge op profielpagina's tonen name: Naam permissions_as_keys: Rechten position: Prioriteit diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml index 62d9bf582..4fa667ddd 100644 --- a/config/locales/simple_form.pt-PT.yml +++ b/config/locales/simple_form.pt-PT.yml @@ -75,8 +75,25 @@ pt-PT: warn: Ocultar o conteúdo filtrado por trás de um aviso mencionando o título do filtro form_admin_settings: backups_retention_period: Manter os arquivos gerados pelos utilizadores por um número específico de dias. + bootstrap_timeline_accounts: Estas contas serão destacadas no topo das recomendações aos novos utilizadores. + closed_registrations_message: Exibido quando as inscrições estão encerradas content_cache_retention_period: Publicações de outros servidores serão excluídos após o número de dias especificado, quando definido com um valor positivo. Isso pode ser irreversível. + custom_css: Pode aplicar estilos personalizados na versão web do Mastodon. + mascot: Sobrepõe-se à ilustração na interface web avançada. media_cache_retention_period: Os ficheiros de media descarregados serão excluídos após o número de dias especificado, quando definido com um valor positivo, e descarregados novamente quando solicitados. + profile_directory: O diretório de perfis lista todos os utilizadores que optaram por a sua conta ser sugerida a outros. + require_invite_text: Quando as incrições exigirem aprovação manual, faça o texto "Porque se quer juntar a nós?" da solicitação de convite, obrigatório ao invés de opcional + site_contact_email: Como as pessoas podem entrar em contacto consigo para obter informações legais ou de suporte. + site_contact_username: Como as pessoas conseguem chegar até si no Mastodon. + site_extended_description: Qualquer informação adicional que possa ser útil para os visitantes e os seus utilizadores. Pode ser estruturada com a sintaxe Markdown. + site_short_description: Uma breve descrição para ajudar a identificar de forma única o seu servidor. Quem o está a gerir, para quem é? + site_terms: Use a sua própria política de privacidade ou deixe em branco para usar a política padrão. Pode ser estruturada com a sintaxe Markdown. + site_title: Como as pessoas podem referir-se ao seu servidor para além do seu nome de domínio. + theme: Tema que os visitantes e os novos utilizadores visualizam. + thumbnail: Uma imagem de aproximadamente 2:1, exibida ao lado da informação do seu servidor. + timeline_preview: Os visitantes sem sessão iniciada poderão consultar as publicações públicas mais recentes disponíveis no servidor. + trendable_by_default: Ignorar a revisão manual do conteúdo das tendências. Itens individuais ainda poderão ser removidos das tendências após a sua exibição. + trends: As tendências mostram quais as publicações, hashtags e notícias estão a ganhar destaque no seu servidor. form_challenge: current_password: Está a entrar numa área restrita imports: diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml index c0ecab1ae..51a21ff06 100644 --- a/config/locales/simple_form.sl.yml +++ b/config/locales/simple_form.sl.yml @@ -75,16 +75,24 @@ sl: warn: Skrij filtrirano vsebino za opozorilom, ki pomenja naslov filtra form_admin_settings: backups_retention_period: Hani tvorjene arhive uporabnikov navedeno število dni. + bootstrap_timeline_accounts: Ti računi bodo pripeti na vrh priporočenih sledenj za nove uporabnike. closed_registrations_message: Prikazano, ko so registracije zaprte content_cache_retention_period: Objave z drugih strežnikov bodo izbrisane po navedenem številu dni, če je vrednost pozitivna. Ta dejanja lahko nepovratna. custom_css: Spletni različici Mastodona lahko uveljavite sloge po meri. mascot: Preglasi ilustracijo v naprednem spletnem vmesniku. media_cache_retention_period: Prenesene predstavnostne datoteke bodo izbrisane po navedenem številu dni, če je vrednost pozitivna, in ponovno prenesene na zahtevo. profile_directory: Imenik profilov izpiše vse uporabnike, ki so dovolili, da so v njem navedeni. + require_invite_text: Če registracije zahtevajo ročno potrditev, nastavite vnos besedila pod »Zakaj se želite pridružiti?« za obveznega. + site_contact_email: Kako vas lahko uporabniki dosežejo glede pravnih ali podpornih vprašanj. site_contact_username: Kako vas lahko kontaktirajo na Mastodonu. + site_extended_description: Dodajte podatke, ki so lahko uporabni za obiskovalce in uporabnike. Vsebino lahko oblikujete s skladnjo Markdown. + site_short_description: Kratek opis v pomoč za identifikacijo vašega strežnika. Kdo ga vzdržuje, komu je namenjen? + site_terms: Uporabite svoj lasten pravilnik o zasebnosti ali pustite prazno za privzetega. Lahko ga strukturirate s skladnjo Markdown. site_title: Kako naj imenujejo vaš strežnik poleg njegovega domenskega imena. theme: Tema, ki jo vidijo odjavljeni obiskovalci in novi uporabniki. + thumbnail: Slika v razmerju stranic približno 2:1, prikazana vzdolž podatkov o vašem strežniku. timeline_preview: Odjavljeni obiskovalci bodo lahko brskali po najnovejših javnih objavah, ki so na voljo na strežniku. + trendable_by_default: Preskočite ročni pregled vsebine v trendu. Posamezne elemente še vedno lahko odstranite iz trenda post festum. trends: Trendi prikažejo, katere objave, ključniki in novice privlačijo zanimanje na vašem strežniku. form_challenge: current_password: Vstopate v varovano območje diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml index a90c3bce9..282c0ce70 100644 --- a/config/locales/simple_form.sv.yml +++ b/config/locales/simple_form.sv.yml @@ -164,6 +164,8 @@ sv: with_dns_records: Inkludera MX-poster och IP-adresser för domänen featured_tag: name: Hashtag + form_admin_settings: + site_terms: Integritetspolicy interactions: must_be_follower: Blockera aviseringar från icke-följare must_be_following: Blockera aviseringar från personer du inte följer diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index 8134be462..1d5c810cd 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -153,7 +153,7 @@ th: display_name: ชื่อที่แสดง email: ที่อยู่อีเมล expires_in: หมดอายุหลังจาก - fields: ข้อมูลเมตาโปรไฟล์ + fields: ข้อมูลอภิพันธุ์โปรไฟล์ header: ส่วนหัว honeypot: "%{label} (ไม่ต้องกรอก)" inbox_url: URL กล่องขาเข้าแบบรีเลย์ diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml index 369db338a..fa9620476 100644 --- a/config/locales/simple_form.tr.yml +++ b/config/locales/simple_form.tr.yml @@ -75,8 +75,25 @@ tr: warn: Filtrelenmiş içeriği, filtrenin başlığından söz eden bir uyarının arkasında gizle form_admin_settings: backups_retention_period: Üretilen kullanıcı arşivlerini belirli gün sayısı kadar sakla. + bootstrap_timeline_accounts: Bu hesaplar, yeni kullanıcıların takip önerilerinin tepesinde sabitlenecektir. + closed_registrations_message: Kayıt olma kapalıyken görüntülenir content_cache_retention_period: Pozitif bir sayı girildiğinde, diğer sunuculardan gelen gönderiler belirli bir gün sonra silinecektir. Silme geri alınamayabilir. + custom_css: Mastodon'un web sürümüne özel biçimler uygulayabilirsiniz. + mascot: Gelişmiş web arayüzündeki illüstrasyonu geçersiz kılar. media_cache_retention_period: Pozitif bir sayı girildiğinde, diğer sunuculardan indirilen medya dosyaları belirli bir gün sonra silinecektir, isteğe bağlı olarak tekrar indirilebilir. + profile_directory: Profil dizini keşfedilebilir olmayı kabul eden tüm kullanıcıları listeler. + require_invite_text: Kayıt olmak elle doğrulama gerektiriyorsa, "Neden katılmak istiyorsunuz?" metin girdisini isteğe bağlı yerine zorunlu yapın + site_contact_email: İnsanlar yasal konular veya destek hakkında bilgi edinmek için size nasıl ulaşabilir. + site_contact_username: İnsanlar size Mastodon'da nasıl ulaşabilir. + site_extended_description: Ziyaretçileriniz ve kullanıcılarınıza yardımı dokunabilecek herhangi bir ek bilgi. Markdown sözdizimiyle biçimlendirilebilir. + site_short_description: Sunucunuzu tekil olarak tanımlamaya yardımcı olacak kısa tanım. Kim işletiyor, kimin için? + site_terms: Kendi gizlilik politikanızı kullanın veya varsayılanı kullanmak için boş bırakın. Markdown sözdizimiyle biçimlendirilebilir. + site_title: İnsanlar sunucunuzu alan adı dışında nasıl isimlendirmeli. + theme: Giriş yapmamış ziyaretçilerin ve yeni kullanıcıların gördüğü tema. + thumbnail: Sunucu bilginizin yanında gösterilen yaklaşık 2:1'lik görüntü. + timeline_preview: Giriş yapmamış ziyaretçiler, sunucuda mevcut olan en son genel gönderileri tarayabilecekler. + trendable_by_default: Öne çıkan içeriğin elle incelenmesini atla. Tekil öğeler sonrada öne çıkanlardan kaldırılabilir. + trends: Öne çıkanlar, sunucunuzda ilgi toplayan gönderileri, etiketleri ve haber yazılarını gösterir. form_challenge: current_password: Güvenli bir bölgeye giriyorsunuz imports: @@ -213,8 +230,28 @@ tr: warn: Uyarıyla gizle form_admin_settings: backups_retention_period: Kullanıcı arşivi saklama süresi + bootstrap_timeline_accounts: Bu hesapları yeni kullanıcılara her zaman öner + closed_registrations_message: Kayıt olma mevcut değilken gösterilen özel ileti content_cache_retention_period: İçerik önbelleği saklama süresi + custom_css: Özel CSS + mascot: Özel maskot (eski) media_cache_retention_period: Medya önbelleği saklama süresi + profile_directory: Profil dizinini etkinleştir + registrations_mode: Kim kaydolabilir + require_invite_text: Katılmak için bir gerekçe iste + show_domain_blocks: Engellenen alan adlarını göster + show_domain_blocks_rationale: Alan adlarının neden engellendiğini göster + site_contact_email: İletişim e-postası + site_contact_username: İletişim kullanıcı adı + site_extended_description: Geniş açıklama + site_short_description: Sunucu açıklaması + site_terms: Gizlilik Politikası + site_title: Sunucu adı + theme: Öntanımlı tema + thumbnail: Sunucu küçük resmi + timeline_preview: Genel zaman çizelgelerine yetkisiz erişime izin ver + trendable_by_default: Ön incelemesiz öne çıkanlara izin ver + trends: Öne çıkanları etkinleştir interactions: must_be_follower: Takipçim olmayan kişilerden gelen bildirimleri engelle must_be_following: Takip etmediğim kişilerden gelen bildirimleri engelle diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml index 399733c0e..e7f83892d 100644 --- a/config/locales/simple_form.vi.yml +++ b/config/locales/simple_form.vi.yml @@ -75,8 +75,25 @@ vi: warn: Ẩn nội dung đã lọc đằng sau một cảnh báo đề cập đến tiêu đề của bộ lọc form_admin_settings: backups_retention_period: Lưu trữ dữ liệu người dùng đã tạo trong số ngày được chỉ định. + bootstrap_timeline_accounts: Các tài khoản này sẽ được ghim vào đầu các gợi ý theo dõi của người dùng mới. + closed_registrations_message: Được hiển thị khi đóng đăng ký content_cache_retention_period: Tút từ các máy chủ khác sẽ bị xóa sau số ngày được chỉ định. Sau đó có thể không thể phục hồi được. + custom_css: Bạn có thể tùy chỉnh phong cách trên bản web của Mastodon. + mascot: Ghi đè hình minh họa trong giao diện web nâng cao. media_cache_retention_period: Media đã tải xuống sẽ bị xóa sau số ngày được chỉ định và sẽ tải xuống lại theo yêu cầu. + profile_directory: Liệt kê tất cả người dùng đã chọn tham gia để có thể khám phá. + require_invite_text: Khi đăng ký yêu cầu phê duyệt thủ công, hãy đặt câu hỏi "Tại sao bạn muốn tham gia?" nhập văn bản bắt buộc thay vì tùy chọn + site_contact_email: Cách mọi người có thể liên hệ với bạn khi có thắc mắc về pháp lý hoặc hỗ trợ. + site_contact_username: Cách mọi người có thể liên hệ với bạn trên Mastodon. + site_extended_description: Bất kỳ thông tin bổ sung nào cũng có thể hữu ích cho khách truy cập và người dùng của bạn. Có thể được soạn bằng cú pháp Markdown. + site_short_description: Mô tả ngắn gọn để giúp nhận định máy chủ của bạn. Ai đang điều hành nó, nó là cho ai? + site_terms: Sử dụng chính sách bảo mật của riêng bạn hoặc để trống để sử dụng mặc định. Có thể soạn bằng cú pháp Markdown. + site_title: Cách mọi người có thể tham chiếu đến máy chủ của bạn ngoài tên miền của nó. + theme: Chủ đề mà khách truy cập đăng xuất và người dùng mới nhìn thấy. + thumbnail: 'Một hình ảnh tỉ lệ 2: 1 được hiển thị cùng với thông tin máy chủ của bạn.' + timeline_preview: Khách truy cập đã đăng xuất sẽ có thể xem các tút công khai gần đây nhất trên máy chủ. + trendable_by_default: Bỏ qua việc duyệt thủ công nội dung thịnh hành. Các mục riêng lẻ vẫn có thể bị xóa khỏi xu hướng sau này. + trends: Xu hướng hiển thị tút, hashtag và tin tức nào đang thu hút thảo luận trên máy chủ của bạn. form_challenge: current_password: Biểu mẫu này an toàn imports: @@ -163,7 +180,7 @@ vi: inbox_url: Hộp thư relay irreversible: Xóa bỏ vĩnh viễn locale: Ngôn ngữ - locked: Đây là tài khoản riêng tư + locked: Yêu cầu theo dõi max_uses: Số lần dùng tối đa new_password: Mật khẩu mới note: Tiểu sử @@ -213,8 +230,28 @@ vi: warn: Ẩn kèm theo cảnh báo form_admin_settings: backups_retention_period: Thời hạn lưu trữ nội dung người dùng sao lưu + bootstrap_timeline_accounts: Luôn đề xuất những tài khoản này đến người dùng mới + closed_registrations_message: Thông báo tùy chỉnh khi tắt đăng ký content_cache_retention_period: Thời hạn lưu trữ cache nội dung + custom_css: Tùy chỉnh CSS + mascot: Tùy chỉnh linh vật (kế thừa) media_cache_retention_period: Thời hạn lưu trữ cache media + profile_directory: Cho phép hiện danh sách thành viên + registrations_mode: Ai có thể đăng ký + require_invite_text: Yêu cầu lí do đăng ký + show_domain_blocks: Xem máy chủ chặn + show_domain_blocks_rationale: Hiện lý do máy chủ bị chặn + site_contact_email: Email liên lạc + site_contact_username: Tên người dùng liên lạc + site_extended_description: Mô tả mở rộng + site_short_description: Mô tả máy chủ + site_terms: Chính sách bảo mật + site_title: Tên máy chủ + theme: Chủ đề mặc định + thumbnail: Hình thu nhỏ của máy chủ + timeline_preview: Cho phép truy cập vào dòng thời gian công khai + trendable_by_default: Cho phép xu hướng mà không cần xem xét trước + trends: Bật xu hướng interactions: must_be_follower: Chặn thông báo từ những người không theo dõi bạn must_be_following: Chặn thông báo từ những người bạn không theo dõi diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index e8bddf332..ad36ddf6e 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -73,6 +73,27 @@ zh-CN: actions: hide: 彻底屏蔽过滤内容,犹如它不曾存在过一般 warn: 在警告中提及过滤器标题后,隐藏过滤内容 + form_admin_settings: + backups_retention_period: 将在指定天数内保留生成的用户存档。 + bootstrap_timeline_accounts: 这些账号将在新用户关注推荐中置顶。 + closed_registrations_message: 在关闭注册时显示 + content_cache_retention_period: 设为正数值时,来自其他服务器的嘟文将在指定天数后被删除。删除有可能会是不可逆的。 + custom_css: 你可以为网页版 Mastodon 应用自定义样式。 + mascot: 覆盖高级网页界面中的绘图形象。 + media_cache_retention_period: 设为正数值时,来自其他服务器的媒体文件将在指定天数后被删除,并在需要时再次下载。 + profile_directory: 个人资料目录会列出所有选择可被发现的用户。 + require_invite_text: 当注册需要手动批准时,将“你为什么想要加入?”设为必填项 + site_contact_email: 他人需要询恰法务或支持信息时的联络方式 + site_contact_username: 他人在 Mastodon 上联系你的方式 + site_extended_description: 任何可能对访客和用户有用的额外信息。可以使用 Markdown 语法。 + site_short_description: 有助于区分你的服务器独特性的简短描述。谁在管理?供谁使用? + site_terms: 使用你自己的隐私政策或留空以使用默认版。可以使用 Markdown 语法。 + site_title: 除了域名,人们还可以如何指代你的服务器。 + theme: 给未登录访客和新用户使用的主题。 + thumbnail: 与服务器信息一并展示的约 2:1 比例的图像。 + timeline_preview: 未登录访客将能够浏览服务器上最新的公共嘟文。 + trendable_by_default: 跳过对热门内容的手工审核。个别项目仍可在之后从趋势中删除。 + trends: 趋势中会显示正在你服务器上受到关注的嘟文、标签和新闻故事。 form_challenge: current_password: 你正在进入安全区域 imports: @@ -207,6 +228,30 @@ zh-CN: actions: hide: 完全隐藏 warn: 隐藏时显示警告信息 + form_admin_settings: + backups_retention_period: 用户存档保留期 + bootstrap_timeline_accounts: 推荐新用户关注以下账号 + closed_registrations_message: 在关闭注册时显示的自定义消息 + content_cache_retention_period: 内容缓存保留期 + custom_css: 自定义 CSS + mascot: 自定义吉祥物(旧) + media_cache_retention_period: 媒体缓存保留期 + profile_directory: 启用用户目录 + registrations_mode: 谁可以注册 + require_invite_text: 注册前需要提供理由 + show_domain_blocks: 显示域名屏蔽列表 + show_domain_blocks_rationale: 显示域名屏蔽原因 + site_contact_email: 联系邮箱 + site_contact_username: 用于联系的公开用户名 + site_extended_description: 完整说明 + site_short_description: 本站简介 + site_terms: 隐私政策 + site_title: 本站名称 + theme: 默认主题 + thumbnail: 本站缩略图 + timeline_preview: 时间轴预览 + trendable_by_default: 允许在未审核的情况下将话题置为热门 + trends: 启用趋势 interactions: must_be_follower: 屏蔽来自未关注我的用户的通知 must_be_following: 屏蔽来自我未关注的用户的通知 diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 12a263d92..d009a7dda 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -704,6 +704,7 @@ sl: preamble: Prilagodite spletni vmesnik Mastodona. title: Videz branding: + preamble: Blagovna znamka vašega strežnika ga loči od drugih strežnikov v omrežju. Podatki se lahko prikžejo prek številnih okolij, kot so spletni vmesnik Mastodona, domorodni programi, predogledi povezav na drugih spletiščih, aplikacije za sporočanje itn. Zatorej je najbolje, da te podatke ohranite jasne, kratke in pomenljive. title: Blagovne znamke content_retention: preamble: Nazdor nad hrambo vsebine uporabnikov v Mastodonu. @@ -732,16 +733,28 @@ sl: delete: Izbriši naloženo datoteko destroyed_msg: Prenos na strežnik uspešno izbrisan! statuses: + account: Avtor + application: Program back_to_account: Nazaj na stran računa back_to_report: Nazaj na stran prijave batch: remove_from_report: Odstrani iz prijave report: Poročaj deleted: Izbrisano + favourites: Priljubljeni + history: Zgodovina različic + in_reply_to: Odgovarja + language: Jezik media: title: Mediji + metadata: Metapodatki no_status_selected: Nobena objava ni bila spremenjena, ker ni bila nobena izbrana + open: Odpri objavo + original_status: Izvorna objava + status_changed: Objava spremenjena title: Objave računa + trending: V trendu + visibility: Vidnost with_media: Z mediji strikes: actions: diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 485fab59c..df7d27efd 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -5,6 +5,7 @@ sv: contact_missing: Inte inställd contact_unavailable: Ej tillämplig hosted_on: Mastodon-värd på %{domain} + title: Om accounts: follow: Följa followers: @@ -449,6 +450,8 @@ sv: edit: Ändra regel title: Serverns regler settings: + about: + title: Om domain_blocks: all: Till alla disabled: För ingen diff --git a/config/locales/th.yml b/config/locales/th.yml index c4a83a048..f809ba73f 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -673,16 +673,28 @@ th: delete: ลบไฟล์ที่อัปโหลด destroyed_msg: ลบการอัปโหลดไซต์สำเร็จ! statuses: + account: ผู้สร้าง + application: แอปพลิเคชัน back_to_account: กลับไปที่หน้าบัญชี back_to_report: กลับไปที่หน้ารายงาน batch: remove_from_report: เอาออกจากรายงาน report: รายงาน deleted: ลบแล้ว + favourites: รายการโปรด + history: ประวัติรุ่น + in_reply_to: กำลังตอบกลับ + language: ภาษา media: title: สื่อ + metadata: ข้อมูลอภิพันธุ์ no_status_selected: ไม่มีการเปลี่ยนแปลงโพสต์เนื่องจากไม่มีการเลือก + open: เปิดโพสต์ + original_status: โพสต์ดั้งเดิม + reblogs: การดัน title: โพสต์ของบัญชี + trending: กำลังนิยม + visibility: การมองเห็น with_media: มีสื่อ strikes: actions: diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 5035c6ae6..73e07694c 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -667,29 +667,67 @@ tr: empty: Henüz bir sunucu kuralı tanımlanmadı. title: Sunucu kuralları settings: + about: + manage_rules: Sunucu kurallarını yönet + preamble: Sunucunun nasıl işletildiği, yönetildiği ve fonlandığı hakkında ayrıntılı bilgi verin. + rules_hint: Kullanıcılarınızın uyması beklenen kurallar için özel bir alan var. + title: Hakkında + appearance: + preamble: Mastodon'un web arayüzünü düzenleyin. + title: Görünüm + branding: + preamble: Sunucunuzun markalaşması ağdaki diğer sunuculardan farklıdır. Bu bilgiler Mastodon'un web arayüzü, doğal uygulamalar, diğer sitelerdeki ve ileti uygulamalarındaki bağlantı önizlemeleri, vb. gibi çeşitli ortamlarda görüntülenebilir. Bu nedenle bu bilgiyi açık, kısa ve özlü tutmak en iyisidir. + title: Marka + content_retention: + preamble: Kullanıcıların ürettiği içeriğin Mastodon'da nasıl saklanacağını denetleyin. + title: İçerik saklama + discovery: + follow_recommendations: Takip önerileri + preamble: İlginç içeriği gezinmek, Mastodon'da kimseyi tanımayan yeni kullanıcıları alıştırmak için oldukça etkilidir. Sunucunuzdaki çeşitli keşif özelliklerinin nasıl çalıştığını denetleyin. + profile_directory: Profil dizini + public_timelines: Genel zaman çizelgeleri + title: Keşfet + trends: Öne çıkanlar domain_blocks: all: Herkes için disabled: Hiç kimseye users: Oturum açan yerel kullanıcılara + registrations: + preamble: Sunucunuzda kimin hesap oluşturabileceğini denetleyin. + title: Kayıtlar registrations_mode: modes: approved: Kayıt için onay gerekli none: Hiç kimse kayıt olamaz open: Herkes kaydolabilir + title: Sunucu Ayarları site_uploads: delete: Yüklenen dosyayı sil destroyed_msg: Site yüklemesi başarıyla silindi! statuses: + account: Yazar + application: Uygulama back_to_account: Hesap sayfasına geri dön back_to_report: Bildirim sayfasına geri dön batch: remove_from_report: Bildirimden kaldır report: Bildirim deleted: Silindi + favourites: Favoriler + history: Sürüm geçmişi + in_reply_to: Yanıtlanan + language: Dil media: title: Medya + metadata: Üstveri no_status_selected: Hiçbiri seçilmediğinden hiçbir durum değiştirilmedi + open: Gönderiyi aç + original_status: Özgün gönderi + reblogs: Yeniden Paylaşımlar + status_changed: Gönderi değişti title: Hesap durumları + trending: Öne çıkanlar + visibility: Görünürlük with_media: Medya ile strikes: actions: diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 0b7679eb1..5c695507d 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -733,16 +733,29 @@ uk: delete: Видалити завантажений файл destroyed_msg: Завантаження сайту успішно видалено! statuses: + account: Автор + application: Застосунок back_to_account: Назад до сторінки облікового запису back_to_report: Повернутися до сторінки скарги batch: remove_from_report: Вилучити зі скарги report: Скарга deleted: Видалено + favourites: Вподобане + history: Історія версій + in_reply_to: У відповідь + language: Мова media: title: Медіа + metadata: Метадані no_status_selected: Жодного статуса не було змінено, оскільки жодного не було вибрано + open: Відкрити допис + original_status: Оригінальний допис + reblogs: Репост + status_changed: Допис змінено title: Статуси облікових записів + trending: Популярне + visibility: Видимість with_media: З медіа strikes: actions: diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 50e5e5f35..73228159d 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -653,29 +653,67 @@ vi: empty: Chưa có quy tắc máy chủ. title: Quy tắc máy chủ settings: + about: + manage_rules: Sửa quy tắc máy chủ + preamble: Cung cấp thông tin chuyên sâu về cách máy chủ được vận hành, kiểm duyệt, tài trợ. + rules_hint: Có một khu vực dành riêng cho các quy tắc mà người dùng của bạn phải tuân thủ. + title: Giới thiệu + appearance: + preamble: Tùy chỉnh giao diện web của Mastodon. + title: Giao diện + branding: + preamble: Thương hiệu máy chủ của bạn phân biệt nó với các máy chủ khác trong mạng. Thông tin này có thể được hiển thị trên nhiều môi trường khác nhau, chẳng hạn như giao diện web của Mastodon, các ứng dụng gốc, trong bản xem trước liên kết trên các trang web khác và trong các ứng dụng nhắn tin, v.v. Vì lý do này, cách tốt nhất là giữ cho thông tin này rõ ràng, ngắn gọn và súc tích. + title: Thương hiệu + content_retention: + preamble: Kiểm soát cách lưu trữ nội dung do người dùng tạo trong Mastodon. + title: Lưu giữ nội dung + discovery: + follow_recommendations: Gợi ý theo dõi + preamble: Hiển thị nội dung thú vị là công cụ để thu hút người dùng mới, những người có thể không quen bất kỳ ai trong Mastodon. Kiểm soát cách các tính năng khám phá hoạt động trên máy chủ của bạn. + profile_directory: Cộng đồng + public_timelines: Bảng tin + title: Khám phá + trends: Xu hướng domain_blocks: all: Tới mọi người disabled: Không ai users: Để đăng nhập người dùng cục bộ + registrations: + preamble: Kiểm soát những ai có thể tạo tài khoản trên máy chủ của bạn. + title: Đăng ký registrations_mode: modes: approved: Yêu cầu phê duyệt để đăng ký none: Không ai có thể đăng ký open: Bất cứ ai cũng có thể đăng ký + title: Cài đặt máy chủ site_uploads: delete: Xóa tập tin đã tải lên destroyed_msg: Đã xóa tập tin tải lên thành công! statuses: + account: Tác giả + application: Ứng dụng back_to_account: Quay lại trang tài khoản back_to_report: Quay lại trang báo cáo batch: remove_from_report: Xóa khỏi báo cáo report: Báo cáo deleted: Đã xóa + favourites: Lượt thích + history: Lịch sử phiên bản + in_reply_to: Trả lời đến + language: Ngôn ngữ media: title: Media + metadata: Metadata no_status_selected: Bạn chưa chọn bất kỳ tút nào + open: Mở tút + original_status: Tút gốc + reblogs: Lượt đăng lại + status_changed: Tút đã thay đổi title: Toàn bộ tút + trending: Xu hướng + visibility: Hiển thị with_media: Có media strikes: actions: diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 14c69415e..92ae4cbe7 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -5,6 +5,7 @@ zh-CN: contact_missing: 未设定 contact_unavailable: 未公开 hosted_on: 运行在 %{domain} 上的 Mastodon 站点 + title: 关于本站 accounts: follow: 关注 followers: @@ -320,6 +321,7 @@ zh-CN: listed: 已显示 new: title: 添加新的自定义表情 + no_emoji_selected: 因为没有选中任何表情,所以没有更改 not_permitted: 你没有权限进行此操作 overwrite: 覆盖 shortcode: 短代码 @@ -651,29 +653,67 @@ zh-CN: empty: 尚未定义服务器规则。 title: 实例规则 settings: + about: + manage_rules: 管理服务器规则 + preamble: 提供此服务器如何运营、资金状况等的深入信息。 + rules_hint: 有一个专门区域用于显示用户需要遵守的规则。 + title: 关于本站 + appearance: + preamble: 自定义 Mastodon 的网页界面。 + title: 外观 + branding: + preamble: 你的服务器与网络中其他服务器的招牌区别。此信息将可能在多种环境下显示,包括 Mastodon 网页界面、原生应用和其他网站的链接预览等。因此应尽量简明扼要。 + title: 招牌 + content_retention: + preamble: 控制用户生成的内容在 Mastodon 中如何存储。 + title: 内容保留 + discovery: + follow_recommendations: 关注推荐 + preamble: 露出有趣的内容有助于新加入 Mastodon 的用户融入。可在这里控制多种发现功能如何在你的服务器上工作。 + profile_directory: 个人资料目录 + public_timelines: 公共时间轴 + title: 发现 + trends: 流行趋势 domain_blocks: all: 对所有人 disabled: 不对任何人 users: 对本地已登录用户 + registrations: + preamble: 控制谁可以在你的服务器上创建账号。 + title: 注册 registrations_mode: modes: approved: 注册时需要批准 none: 关闭注册 open: 开放注册 + title: 服务器设置 site_uploads: delete: 删除已上传的文件 destroyed_msg: 站点上传的文件已经成功删除! statuses: + account: 作者 + application: 应用 back_to_account: 返回帐户信息页 back_to_report: 返回举报页 batch: remove_from_report: 从报告中移除 report: 举报 deleted: 已删除 + favourites: 收藏 + history: 版本历史记录 + in_reply_to: 回复给 + language: 语言 media: title: 媒体文件 + metadata: 元数据 no_status_selected: 因为没有嘟文被选中,所以没有更改 + open: 展开嘟文 + original_status: 原始嘟文 + reblogs: 转发 + status_changed: 嘟文已编辑 title: 帐户嘟文 + trending: 当前热门 + visibility: 可见性 with_media: 含有媒体文件 strikes: actions: @@ -713,6 +753,9 @@ zh-CN: description_html: 这些是当前此服务器可见账号的嘟文中被大量分享的链接。它可以帮助用户了解正在发生的事情。发布者获得批准前不会公开显示任何链接。你也可以批准或拒绝个别链接。 disallow: 不允许链接 disallow_provider: 不允许发布者 + no_link_selected: 因为没有选中任何链接,所以没有更改 + publishers: + no_publisher_selected: 因为没有选中任何发布者,所以没有更改 shared_by_over_week: other: 过去一周内被 %{count} 个人分享过 title: 热门链接 @@ -731,6 +774,7 @@ zh-CN: description_html: 这些是当前此服务器可见的被大量分享和喜欢的嘟文。这些嘟文可以帮助新老用户找到更多可关注的账号。批准发布者且发布者允许将其账号推荐给其他用户前,不会公开显示任何嘟文。你也可以批准或拒绝个别嘟文。 disallow: 禁止嘟文 disallow_account: 禁止发布者 + no_status_selected: 因为没有选中任何热门嘟文,所以没有更改 not_discoverable: 发布者选择不被发现 shared_by: other: 被分享和喜欢%{friendly_count}次 @@ -745,6 +789,7 @@ zh-CN: tag_uses_measure: 总使用 description_html: 这些是当前此服务器可见嘟文中大量出现的标签。它可以帮助用户发现其他人正关注的话题。在获得批准前不会公开显示任何标签。 listable: 可被推荐 + no_tag_selected: 因为没有选中任何标签,所以没有更改 not_listable: 不会被推荐 not_trendable: 不会出现在热门列表中 not_usable: 不可使用 @@ -1255,6 +1300,8 @@ zh-CN: other: 其他 posting_defaults: 发布默认值 public_timelines: 公共时间轴 + privacy_policy: + title: 隐私政策 reactions: errors: limit_reached: 互动种类的限制 diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 88fea4b76..7ce2f777c 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -693,16 +693,29 @@ zh-TW: delete: 刪除上傳的檔案 destroyed_msg: 成功刪除站台的上傳項目! statuses: + account: 作者 + application: 應用程式 back_to_account: 返回帳號訊息頁 back_to_report: 回到檢舉報告頁面 batch: remove_from_report: 從檢舉報告中移除 report: 檢舉報告 deleted: 已刪除 + favourites: 最愛 + history: 版本紀錄 + in_reply_to: 正在回覆 + language: 語言 media: title: 媒體檔案 + metadata: 詮釋資料 no_status_selected: 因未選擇嘟文而未變更。 + open: 公開嘟文 + original_status: 原始嘟文 + reblogs: 轉嘟 + status_changed: 嘟文已編輯 title: 帳號嘟文 + trending: 熱門 + visibility: 可見性 with_media: 含有媒體檔案 strikes: actions: From 55af04b253435ae771b69c8b7cfe3fc7e3b18033 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 29 Oct 2022 13:32:49 +0200 Subject: [PATCH 595/652] Fix logged out search and changed logged-in search placeholder (#19514) --- app/javascript/mastodon/actions/search.js | 5 +++-- .../mastodon/features/compose/components/search.js | 5 ++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/javascript/mastodon/actions/search.js b/app/javascript/mastodon/actions/search.js index 37560a74c..e333c0ea7 100644 --- a/app/javascript/mastodon/actions/search.js +++ b/app/javascript/mastodon/actions/search.js @@ -29,7 +29,8 @@ export function clearSearch() { export function submitSearch() { return (dispatch, getState) => { - const value = getState().getIn(['search', 'value']); + const value = getState().getIn(['search', 'value']); + const signedIn = !!getState().getIn(['meta', 'me']); if (value.length === 0) { dispatch(fetchSearchSuccess({ accounts: [], statuses: [], hashtags: [] }, '')); @@ -41,7 +42,7 @@ export function submitSearch() { api(getState).get('/api/v2/search', { params: { q: value, - resolve: true, + resolve: signedIn, limit: 5, }, }).then(response => { diff --git a/app/javascript/mastodon/features/compose/components/search.js b/app/javascript/mastodon/features/compose/components/search.js index 3e36a922b..ebb23d92f 100644 --- a/app/javascript/mastodon/features/compose/components/search.js +++ b/app/javascript/mastodon/features/compose/components/search.js @@ -9,6 +9,7 @@ import Icon from 'mastodon/components/icon'; const messages = defineMessages({ placeholder: { id: 'search.placeholder', defaultMessage: 'Search' }, + placeholderSignedIn: { id: 'search.search_or_paste', defaultMessage: 'Search or paste URL' }, }); class SearchPopout extends React.PureComponent { @@ -49,6 +50,7 @@ class Search extends React.PureComponent { static contextTypes = { router: PropTypes.object.isRequired, + identity: PropTypes.object.isRequired, }; static propTypes = { @@ -116,6 +118,7 @@ class Search extends React.PureComponent { render () { const { intl, value, submitted } = this.props; const { expanded } = this.state; + const { signedIn } = this.context.identity; const hasValue = value.length > 0 || submitted; return ( @@ -126,7 +129,7 @@ class Search extends React.PureComponent { ref={this.setRef} className='search__input' type='text' - placeholder={intl.formatMessage(messages.placeholder)} + placeholder={intl.formatMessage(signedIn ? messages.placeholderSignedIn : messages.placeholder)} value={value} onChange={this.handleChange} onKeyUp={this.handleKeyUp} From 7926cb1bc7f502c10dc3a6ef3ca97ffc5a0b3a6a Mon Sep 17 00:00:00 2001 From: Matthias Bethke Date: Sat, 29 Oct 2022 17:04:56 +0530 Subject: [PATCH 596/652] fix name of Lao language (#19520) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It said ພາສາ or pha-sa, which means just "language" in Lao. "ພາສາລາວ", pha-sa lao, is the full name but the short "ລາວ" is commonly used. --- app/helpers/languages_helper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/helpers/languages_helper.rb b/app/helpers/languages_helper.rb index 4077e19bd..e5bae2c6b 100644 --- a/app/helpers/languages_helper.rb +++ b/app/helpers/languages_helper.rb @@ -97,7 +97,7 @@ module LanguagesHelper lg: ['Ganda', 'Luganda'].freeze, li: ['Limburgish', 'Limburgs'].freeze, ln: ['Lingala', 'Lingála'].freeze, - lo: ['Lao', 'ພາສາ'].freeze, + lo: ['Lao', 'ລາວ'].freeze, lt: ['Lithuanian', 'lietuvių kalba'].freeze, lu: ['Luba-Katanga', 'Tshiluba'].freeze, lv: ['Latvian', 'latviešu valoda'].freeze, From f910f0dc92c1fb71d5c48cc18f2e6147162115c3 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 29 Oct 2022 14:04:24 +0200 Subject: [PATCH 597/652] Fix wrong host being used for custom.css when asset host configured (#19521) --- app/views/layouts/application.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 52cdce7c6..fb5ba5cb0 100755 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -35,7 +35,7 @@ %meta{ name: 'style-nonce', content: request.content_security_policy_nonce } = stylesheet_link_tag '/inert.css', skip_pipeline: true, media: 'all', id: 'inert-style' - = stylesheet_link_tag custom_css_path, host: default_url_options[:host], media: 'all' + = stylesheet_link_tag custom_css_path, skip_pipeline: true, host: root_url, media: 'all' = yield :header_tags From a449ee8654166609866d0b804dc11ae14205d235 Mon Sep 17 00:00:00 2001 From: Yurii Izorkin Date: Sat, 29 Oct 2022 16:06:23 +0300 Subject: [PATCH 598/652] nginx: optimize locations (#19438) * nginx: optimize locations * nginx: don't use regex in locations * nginx: optimize Cache-Control headaers * nginx: use 404 error_page for missing static files * nginx: sort locations * nginx: add missing HSTS header --- dist/nginx.conf | 94 ++++++++++++++++++++++++++++++++++++------------- 1 file changed, 70 insertions(+), 24 deletions(-) diff --git a/dist/nginx.conf b/dist/nginx.conf index f28d7c6a8..716c277dd 100644 --- a/dist/nginx.conf +++ b/dist/nginx.conf @@ -56,16 +56,79 @@ server { try_files $uri @proxy; } - location ~ ^/(emoji|packs|system/accounts/avatars|system/media_attachments/files) { - add_header Cache-Control "public, max-age=31536000, immutable"; + # If Docker is used for deployment and Rails serves static files, + # then needed must replace line `try_files $uri =404;` with `try_files $uri @proxy;`. + location = sw.js { + add_header Cache-Control "public, max-age=604800, must-revalidate"; add_header Strict-Transport-Security "max-age=63072000; includeSubDomains"; - try_files $uri @proxy; + try_files $uri =404; } - location /sw.js { - add_header Cache-Control "public, max-age=0"; + location ~ ^/assets/ { + add_header Cache-Control "public, max-age=2419200, must-revalidate"; add_header Strict-Transport-Security "max-age=63072000; includeSubDomains"; - try_files $uri @proxy; + try_files $uri =404; + } + + location ~ ^/avatars/ { + add_header Cache-Control "public, max-age=2419200, must-revalidate"; + add_header Strict-Transport-Security "max-age=63072000; includeSubDomains"; + try_files $uri =404; + } + + location ~ ^/emoji/ { + add_header Cache-Control "public, max-age=2419200, must-revalidate"; + add_header Strict-Transport-Security "max-age=63072000; includeSubDomains"; + try_files $uri =404; + } + + location ~ ^/headers/ { + add_header Cache-Control "public, max-age=2419200, must-revalidate"; + add_header Strict-Transport-Security "max-age=63072000; includeSubDomains"; + try_files $uri =404; + } + + location ~ ^/packs/ { + add_header Cache-Control "public, max-age=2419200, must-revalidate"; + add_header Strict-Transport-Security "max-age=63072000; includeSubDomains"; + try_files $uri =404; + } + + location ~ ^/shortcuts/ { + add_header Cache-Control "public, max-age=2419200, must-revalidate"; + add_header Strict-Transport-Security "max-age=63072000; includeSubDomains"; + try_files $uri =404; + } + + location ~ ^/sounds/ { + add_header Cache-Control "public, max-age=2419200, must-revalidate"; + add_header Strict-Transport-Security "max-age=63072000; includeSubDomains"; + try_files $uri =404; + } + + location ~ ^/system/ { + add_header Cache-Control "public, max-age=2419200, immutable"; + add_header Strict-Transport-Security "max-age=63072000; includeSubDomains"; + try_files $uri =404; + } + + location ^~ /api/v1/streaming/ { + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Proxy ""; + + proxy_pass http://streaming; + proxy_buffering off; + proxy_redirect off; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $connection_upgrade; + + add_header Strict-Transport-Security "max-age=63072000; includeSubDomains"; + + tcp_nodelay on; } location @proxy { @@ -92,22 +155,5 @@ server { tcp_nodelay on; } - location /api/v1/streaming { - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - proxy_set_header Proxy ""; - - proxy_pass http://streaming; - proxy_buffering off; - proxy_redirect off; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection $connection_upgrade; - - tcp_nodelay on; - } - - error_page 500 501 502 503 504 /500.html; + error_page 404 500 501 502 503 504 /500.html; } From 30ef11022487364256656efee3cee92db2c839b2 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 29 Oct 2022 20:05:53 +0200 Subject: [PATCH 599/652] Fix upload progress not communicating processing phase in web UI (#19530) --- app/javascript/mastodon/actions/compose.js | 21 +++++++++++++------ .../compose/components/upload_form.js | 3 +-- .../compose/components/upload_progress.js | 16 ++++++++++---- .../containers/upload_progress_container.js | 1 + app/javascript/mastodon/reducers/compose.js | 6 +++++- 5 files changed, 34 insertions(+), 13 deletions(-) diff --git a/app/javascript/mastodon/actions/compose.js b/app/javascript/mastodon/actions/compose.js index 42d4ad8df..e29b88a50 100644 --- a/app/javascript/mastodon/actions/compose.js +++ b/app/javascript/mastodon/actions/compose.js @@ -25,11 +25,13 @@ export const COMPOSE_REPLY_CANCEL = 'COMPOSE_REPLY_CANCEL'; export const COMPOSE_DIRECT = 'COMPOSE_DIRECT'; export const COMPOSE_MENTION = 'COMPOSE_MENTION'; export const COMPOSE_RESET = 'COMPOSE_RESET'; -export const COMPOSE_UPLOAD_REQUEST = 'COMPOSE_UPLOAD_REQUEST'; -export const COMPOSE_UPLOAD_SUCCESS = 'COMPOSE_UPLOAD_SUCCESS'; -export const COMPOSE_UPLOAD_FAIL = 'COMPOSE_UPLOAD_FAIL'; -export const COMPOSE_UPLOAD_PROGRESS = 'COMPOSE_UPLOAD_PROGRESS'; -export const COMPOSE_UPLOAD_UNDO = 'COMPOSE_UPLOAD_UNDO'; + +export const COMPOSE_UPLOAD_REQUEST = 'COMPOSE_UPLOAD_REQUEST'; +export const COMPOSE_UPLOAD_SUCCESS = 'COMPOSE_UPLOAD_SUCCESS'; +export const COMPOSE_UPLOAD_FAIL = 'COMPOSE_UPLOAD_FAIL'; +export const COMPOSE_UPLOAD_PROGRESS = 'COMPOSE_UPLOAD_PROGRESS'; +export const COMPOSE_UPLOAD_PROCESSING = 'COMPOSE_UPLOAD_PROCESSING'; +export const COMPOSE_UPLOAD_UNDO = 'COMPOSE_UPLOAD_UNDO'; export const THUMBNAIL_UPLOAD_REQUEST = 'THUMBNAIL_UPLOAD_REQUEST'; export const THUMBNAIL_UPLOAD_SUCCESS = 'THUMBNAIL_UPLOAD_SUCCESS'; @@ -268,13 +270,16 @@ export function uploadCompose(files) { if (status === 200) { dispatch(uploadComposeSuccess(data, f)); } else if (status === 202) { + dispatch(uploadComposeProcessing()); + let tryCount = 1; + const poll = () => { api(getState).get(`/api/v1/media/${data.id}`).then(response => { if (response.status === 200) { dispatch(uploadComposeSuccess(response.data, f)); } else if (response.status === 206) { - let retryAfter = (Math.log2(tryCount) || 1) * 1000; + const retryAfter = (Math.log2(tryCount) || 1) * 1000; tryCount += 1; setTimeout(() => poll(), retryAfter); } @@ -289,6 +294,10 @@ export function uploadCompose(files) { }; }; +export const uploadComposeProcessing = () => ({ + type: COMPOSE_UPLOAD_PROCESSING, +}); + export const uploadThumbnail = (id, file) => (dispatch, getState) => { dispatch(uploadThumbnailRequest()); diff --git a/app/javascript/mastodon/features/compose/components/upload_form.js b/app/javascript/mastodon/features/compose/components/upload_form.js index c6eac554e..9ff2aa0fa 100644 --- a/app/javascript/mastodon/features/compose/components/upload_form.js +++ b/app/javascript/mastodon/features/compose/components/upload_form.js @@ -4,7 +4,6 @@ import UploadProgressContainer from '../containers/upload_progress_container'; import ImmutablePureComponent from 'react-immutable-pure-component'; import UploadContainer from '../containers/upload_container'; import SensitiveButtonContainer from '../containers/sensitive_button_container'; -import { FormattedMessage } from 'react-intl'; export default class UploadForm extends ImmutablePureComponent { @@ -17,7 +16,7 @@ export default class UploadForm extends ImmutablePureComponent { return (

- } /> +
{mediaIds.map(id => ( diff --git a/app/javascript/mastodon/features/compose/components/upload_progress.js b/app/javascript/mastodon/features/compose/components/upload_progress.js index b0bfe0c9a..cabf520fd 100644 --- a/app/javascript/mastodon/features/compose/components/upload_progress.js +++ b/app/javascript/mastodon/features/compose/components/upload_progress.js @@ -3,27 +3,35 @@ import PropTypes from 'prop-types'; import Motion from '../../ui/util/optional_motion'; import spring from 'react-motion/lib/spring'; import Icon from 'mastodon/components/icon'; +import { FormattedMessage } from 'react-intl'; export default class UploadProgress extends React.PureComponent { static propTypes = { active: PropTypes.bool, progress: PropTypes.number, - icon: PropTypes.string.isRequired, - message: PropTypes.node.isRequired, + isProcessing: PropTypes.bool, }; render () { - const { active, progress, icon, message } = this.props; + const { active, progress, isProcessing } = this.props; if (!active) { return null; } + let message; + + if (isProcessing) { + message = ; + } else { + message = ; + } + return (
- +
diff --git a/app/javascript/mastodon/features/compose/containers/upload_progress_container.js b/app/javascript/mastodon/features/compose/containers/upload_progress_container.js index 0cfee96da..b18c76a43 100644 --- a/app/javascript/mastodon/features/compose/containers/upload_progress_container.js +++ b/app/javascript/mastodon/features/compose/containers/upload_progress_container.js @@ -4,6 +4,7 @@ import UploadProgress from '../components/upload_progress'; const mapStateToProps = state => ({ active: state.getIn(['compose', 'is_uploading']), progress: state.getIn(['compose', 'progress']), + isProcessing: state.getIn(['compose', 'is_processing']), }); export default connect(mapStateToProps)(UploadProgress); diff --git a/app/javascript/mastodon/reducers/compose.js b/app/javascript/mastodon/reducers/compose.js index 7aac87b5c..e4601e471 100644 --- a/app/javascript/mastodon/reducers/compose.js +++ b/app/javascript/mastodon/reducers/compose.js @@ -14,6 +14,7 @@ import { COMPOSE_UPLOAD_FAIL, COMPOSE_UPLOAD_UNDO, COMPOSE_UPLOAD_PROGRESS, + COMPOSE_UPLOAD_PROCESSING, THUMBNAIL_UPLOAD_REQUEST, THUMBNAIL_UPLOAD_SUCCESS, THUMBNAIL_UPLOAD_FAIL, @@ -136,6 +137,7 @@ function appendMedia(state, media, file) { } map.update('media_attachments', list => list.push(media)); map.set('is_uploading', false); + map.set('is_processing', false); map.set('resetFileKey', Math.floor((Math.random() * 0x10000))); map.set('idempotencyKey', uuid()); map.update('pending_media_attachments', n => n - 1); @@ -354,10 +356,12 @@ export default function compose(state = initialState, action) { return state.set('is_changing_upload', false); case COMPOSE_UPLOAD_REQUEST: return state.set('is_uploading', true).update('pending_media_attachments', n => n + 1); + case COMPOSE_UPLOAD_PROCESSING: + return state.set('is_processing', true); case COMPOSE_UPLOAD_SUCCESS: return appendMedia(state, fromJS(action.media), action.file); case COMPOSE_UPLOAD_FAIL: - return state.set('is_uploading', false).update('pending_media_attachments', n => n - 1); + return state.set('is_uploading', false).set('is_processing', false).update('pending_media_attachments', n => n - 1); case COMPOSE_UPLOAD_UNDO: return removeMedia(state, action.media_id); case COMPOSE_UPLOAD_PROGRESS: From 6094a916b185ae0634e016004deb4cec11afbaca Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Sun, 30 Oct 2022 00:30:16 +0100 Subject: [PATCH 600/652] Fix helm chart use of Postgres Password (#19537) Fixes #19536 --- chart/templates/cronjob-media-remove.yaml | 2 +- chart/templates/deployment-sidekiq.yaml | 2 +- chart/templates/deployment-streaming.yaml | 2 +- chart/templates/deployment-web.yaml | 2 +- chart/templates/job-assets-precompile.yaml | 2 +- chart/templates/job-chewy-upgrade.yaml | 2 +- chart/templates/job-create-admin.yaml | 2 +- chart/templates/job-db-migrate.yaml | 2 +- chart/templates/secrets.yaml | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/chart/templates/cronjob-media-remove.yaml b/chart/templates/cronjob-media-remove.yaml index 4ca45804a..1dced69ec 100644 --- a/chart/templates/cronjob-media-remove.yaml +++ b/chart/templates/cronjob-media-remove.yaml @@ -59,7 +59,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: postgresql-password + key: postgres-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/deployment-sidekiq.yaml b/chart/templates/deployment-sidekiq.yaml index 44d3b8203..56ba257b5 100644 --- a/chart/templates/deployment-sidekiq.yaml +++ b/chart/templates/deployment-sidekiq.yaml @@ -76,7 +76,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: postgresql-password + key: postgres-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/deployment-streaming.yaml b/chart/templates/deployment-streaming.yaml index 6b7c3cdd9..564f53f43 100644 --- a/chart/templates/deployment-streaming.yaml +++ b/chart/templates/deployment-streaming.yaml @@ -44,7 +44,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: postgresql-password + key: postgres-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/deployment-web.yaml b/chart/templates/deployment-web.yaml index c5d177e51..0878aa9b8 100644 --- a/chart/templates/deployment-web.yaml +++ b/chart/templates/deployment-web.yaml @@ -62,7 +62,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: postgresql-password + key: postgres-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/job-assets-precompile.yaml b/chart/templates/job-assets-precompile.yaml index c20b4a370..37009822e 100644 --- a/chart/templates/job-assets-precompile.yaml +++ b/chart/templates/job-assets-precompile.yaml @@ -60,7 +60,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: postgresql-password + key: postgres-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/job-chewy-upgrade.yaml b/chart/templates/job-chewy-upgrade.yaml index cf7b59b58..a4bac63ab 100644 --- a/chart/templates/job-chewy-upgrade.yaml +++ b/chart/templates/job-chewy-upgrade.yaml @@ -61,7 +61,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: postgresql-password + key: postgres-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/job-create-admin.yaml b/chart/templates/job-create-admin.yaml index bb9094cda..c1c0bdaed 100644 --- a/chart/templates/job-create-admin.yaml +++ b/chart/templates/job-create-admin.yaml @@ -66,7 +66,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: postgresql-password + key: postgres-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/job-db-migrate.yaml b/chart/templates/job-db-migrate.yaml index 0b386c087..848ed3644 100644 --- a/chart/templates/job-db-migrate.yaml +++ b/chart/templates/job-db-migrate.yaml @@ -60,7 +60,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: postgresql-password + key: postgres-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/secrets.yaml b/chart/templates/secrets.yaml index 135d5b61a..2a91c3493 100644 --- a/chart/templates/secrets.yaml +++ b/chart/templates/secrets.yaml @@ -37,7 +37,7 @@ data: {{- end }} {{- if not .Values.postgresql.enabled }} {{- if not .Values.postgresql.auth.existingSecret }} - postgresql-password: "{{ .Values.postgresql.auth.password | b64enc }}" + postgres-password: "{{ .Values.postgresql.auth.password | b64enc }}" {{- end }} {{- end }} {{- end -}} From ad83e64795361dc9d5990a9dae4f91a3642109a0 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 30 Oct 2022 02:43:15 +0200 Subject: [PATCH 601/652] Fix sidebar and tabs on settings on small screens in admin UI (#19533) --- app/javascript/packs/public.js | 25 ++++++- app/javascript/styles/mastodon/admin.scss | 91 +++++++++++++---------- app/views/layouts/admin.html.haml | 3 +- config/locales/en.yml | 2 + 4 files changed, 78 insertions(+), 43 deletions(-) diff --git a/app/javascript/packs/public.js b/app/javascript/packs/public.js index 5ff45fa55..786fc8ede 100644 --- a/app/javascript/packs/public.js +++ b/app/javascript/packs/public.js @@ -247,8 +247,31 @@ function main() { input.readonly = oldReadOnly; }); + const toggleSidebar = () => { + const sidebar = document.querySelector('.sidebar ul'); + const toggleButton = document.querySelector('.sidebar__toggle__icon'); + + if (sidebar.classList.contains('visible')) { + document.body.style.overflow = null; + toggleButton.setAttribute('aria-expanded', false); + } else { + document.body.style.overflow = 'hidden'; + toggleButton.setAttribute('aria-expanded', true); + } + + toggleButton.classList.toggle('active'); + sidebar.classList.toggle('visible'); + }; + delegate(document, '.sidebar__toggle__icon', 'click', () => { - document.querySelector('.sidebar ul').classList.toggle('visible'); + toggleSidebar(); + }); + + delegate(document, '.sidebar__toggle__icon', 'keydown', e => { + if (e.key === ' ' || e.key === 'Enter') { + e.preventDefault(); + toggleSidebar(); + } }); // Empty the honeypot fields in JS in case something like an extension diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index f86778399..7a50a89bb 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -31,23 +31,17 @@ $content-width: 840px; &__toggle { display: none; - background: lighten($ui-base-color, 8%); - height: 48px; + background: darken($ui-base-color, 4%); + border-bottom: 1px solid lighten($ui-base-color, 4%); + align-items: center; &__logo { flex: 1 1 auto; a { - display: inline-block; + display: block; padding: 15px; } - - svg { - fill: $primary-text-color; - height: 20px; - position: relative; - bottom: -2px; - } } &__icon { @@ -55,15 +49,27 @@ $content-width: 840px; color: $darker-text-color; text-decoration: none; flex: 0 0 auto; - font-size: 20px; - padding: 15px; - } + font-size: 18px; + padding: 10px; + margin: 5px 10px; + border-radius: 4px; - a { - &:hover, - &:focus, - &:active { - background: lighten($ui-base-color, 12%); + &:focus { + background: $ui-base-color; + } + + .fa-times { + display: none; + } + + &.active { + .fa-times { + display: block; + } + + .fa-bars { + display: none; + } } } } @@ -79,7 +85,7 @@ $content-width: 840px; display: inherit; margin: inherit; width: inherit; - height: 20px; + height: 25px; } @media screen and (max-width: $no-columns-breakpoint) { @@ -189,9 +195,7 @@ $content-width: 840px; } &__heading { - padding-bottom: 36px; - border-bottom: 1px solid lighten($ui-base-color, 8%); - margin-bottom: 40px; + margin-bottom: 45px; &__row { display: flex; @@ -208,46 +212,43 @@ $content-width: 840px; &__tabs { margin-top: 30px; - margin-bottom: -31px; + width: 100%; & > div { display: flex; - gap: 10px; + flex-wrap: wrap; + gap: 5px; } a { font-size: 14px; display: inline-flex; align-items: center; - padding: 7px 15px; + padding: 7px 10px; border-radius: 4px; color: $darker-text-color; text-decoration: none; - position: relative; font-weight: 500; gap: 5px; white-space: nowrap; - &.selected { - font-weight: 700; - color: $primary-text-color; - - &::after { - content: ""; - display: block; - width: 100%; - border-bottom: 1px solid $ui-highlight-color; - position: absolute; - bottom: -5px; - left: 0; - } - } - &:hover, &:focus, &:active { background: lighten($ui-base-color, 4%); } + + &.selected { + font-weight: 700; + color: $primary-text-color; + background: $ui-highlight-color; + + &:hover, + &:focus, + &:active { + background: lighten($ui-highlight-color, 4%); + } + } } } @@ -382,6 +383,14 @@ $content-width: 840px; &.visible { display: block; + position: fixed; + z-index: 10; + width: 100%; + height: calc(100vh - 56px); + left: 0; + bottom: 0; + overflow-y: auto; + background: $ui-base-color; } } diff --git a/app/views/layouts/admin.html.haml b/app/views/layouts/admin.html.haml index 59021ad88..e7a163c92 100644 --- a/app/views/layouts/admin.html.haml +++ b/app/views/layouts/admin.html.haml @@ -15,8 +15,9 @@ = link_to root_path do = logo_as_symbol(:wordmark) - = link_to '#', class: 'sidebar__toggle__icon' do + = link_to '#', class: 'sidebar__toggle__icon', 'aria-label': t('navigation.toggle_menu'), 'aria-expanded': 'false' do = fa_icon 'bars' + = fa_icon 'times' = render_navigation diff --git a/config/locales/en.yml b/config/locales/en.yml index fd845c3c2..547b19f07 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1249,6 +1249,8 @@ en: carry_blocks_over_text: This user moved from %{acct}, which you had blocked. carry_mutes_over_text: This user moved from %{acct}, which you had muted. copy_account_note_text: 'This user moved from %{acct}, here were your previous notes about them:' + navigation: + toggle_menu: Toggle menu notification_mailer: admin: report: From 3b024c563c92ecb1221309274ba18c8cc65c2ab8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 30 Oct 2022 02:43:20 +0200 Subject: [PATCH 602/652] Fix not being able to input featured tag with `#` (#19535) --- app/models/featured_tag.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/models/featured_tag.rb b/app/models/featured_tag.rb index 3f5cddce6..d4ed74302 100644 --- a/app/models/featured_tag.rb +++ b/app/models/featured_tag.rb @@ -19,6 +19,8 @@ class FeaturedTag < ApplicationRecord validate :validate_tag_name, on: :create validate :validate_featured_tags_limit, on: :create + before_validation :strip_name + before_create :set_tag before_create :reset_data @@ -48,6 +50,12 @@ class FeaturedTag < ApplicationRecord private + def strip_name + return unless defined?(@name) + + @name = @name&.strip&.gsub(/\A#/, '') + end + def set_tag self.tag = Tag.find_or_create_by_names(@name)&.first end From 5724da07806ef423fc67db46dd2b28c92b34a9b2 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 30 Oct 2022 02:43:27 +0200 Subject: [PATCH 603/652] Fix language not being saved when editing status (#19543) Fix #19542 --- app/controllers/api/v1/statuses_controller.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/controllers/api/v1/statuses_controller.rb b/app/controllers/api/v1/statuses_controller.rb index 1cc5aa32e..2e239d48b 100644 --- a/app/controllers/api/v1/statuses_controller.rb +++ b/app/controllers/api/v1/statuses_controller.rb @@ -65,6 +65,7 @@ class Api::V1::StatusesController < Api::BaseController text: status_params[:status], media_ids: status_params[:media_ids], sensitive: status_params[:sensitive], + language: status_params[:language], spoiler_text: status_params[:spoiler_text], poll: status_params[:poll] ) From 276b85bc91138ec3364b6dcddd45d16da6569a19 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 30 Oct 2022 02:43:57 +0200 Subject: [PATCH 604/652] Fix admin APIs returning deleted object instead of empty object upon delete (#19479) Fix #19153 --- app/controllers/api/v1/admin/accounts_controller.rb | 5 ++--- .../api/v1/admin/canonical_email_blocks_controller.rb | 6 +----- app/controllers/api/v1/admin/domain_allows_controller.rb | 2 +- app/controllers/api/v1/admin/domain_blocks_controller.rb | 3 +-- .../api/v1/admin/email_domain_blocks_controller.rb | 4 +--- app/controllers/api/v1/admin/ip_blocks_controller.rb | 8 +------- 6 files changed, 7 insertions(+), 21 deletions(-) diff --git a/app/controllers/api/v1/admin/accounts_controller.rb b/app/controllers/api/v1/admin/accounts_controller.rb index 0dee02e94..ae7f7d076 100644 --- a/app/controllers/api/v1/admin/accounts_controller.rb +++ b/app/controllers/api/v1/admin/accounts_controller.rb @@ -60,14 +60,13 @@ class Api::V1::Admin::AccountsController < Api::BaseController def reject authorize @account.user, :reject? DeleteAccountService.new.call(@account, reserve_email: false, reserve_username: false) - render json: @account, serializer: REST::Admin::AccountSerializer + render_empty end def destroy authorize @account, :destroy? - json = render_to_body json: @account, serializer: REST::Admin::AccountSerializer Admin::AccountDeletionWorker.perform_async(@account.id) - render json: json + render_empty end def unsensitive diff --git a/app/controllers/api/v1/admin/canonical_email_blocks_controller.rb b/app/controllers/api/v1/admin/canonical_email_blocks_controller.rb index bf8a6a131..9ef1b3be7 100644 --- a/app/controllers/api/v1/admin/canonical_email_blocks_controller.rb +++ b/app/controllers/api/v1/admin/canonical_email_blocks_controller.rb @@ -35,20 +35,16 @@ class Api::V1::Admin::CanonicalEmailBlocksController < Api::BaseController def create authorize :canonical_email_block, :create? - @canonical_email_block = CanonicalEmailBlock.create!(resource_params) log_action :create, @canonical_email_block - render json: @canonical_email_block, serializer: REST::Admin::CanonicalEmailBlockSerializer end def destroy authorize @canonical_email_block, :destroy? - @canonical_email_block.destroy! log_action :destroy, @canonical_email_block - - render json: @canonical_email_block, serializer: REST::Admin::CanonicalEmailBlockSerializer + render_empty end private diff --git a/app/controllers/api/v1/admin/domain_allows_controller.rb b/app/controllers/api/v1/admin/domain_allows_controller.rb index 59aa807d6..0658199f0 100644 --- a/app/controllers/api/v1/admin/domain_allows_controller.rb +++ b/app/controllers/api/v1/admin/domain_allows_controller.rb @@ -43,7 +43,7 @@ class Api::V1::Admin::DomainAllowsController < Api::BaseController authorize @domain_allow, :destroy? UnallowDomainService.new.call(@domain_allow) log_action :destroy, @domain_allow - render json: @domain_allow, serializer: REST::Admin::DomainAllowSerializer + render_empty end private diff --git a/app/controllers/api/v1/admin/domain_blocks_controller.rb b/app/controllers/api/v1/admin/domain_blocks_controller.rb index de8fd9d08..df5b1b3fc 100644 --- a/app/controllers/api/v1/admin/domain_blocks_controller.rb +++ b/app/controllers/api/v1/admin/domain_blocks_controller.rb @@ -40,7 +40,6 @@ class Api::V1::Admin::DomainBlocksController < Api::BaseController def update authorize @domain_block, :update? - @domain_block.update(domain_block_params) severity_changed = @domain_block.severity_changed? @domain_block.save! @@ -53,7 +52,7 @@ class Api::V1::Admin::DomainBlocksController < Api::BaseController authorize @domain_block, :destroy? UnblockDomainService.new.call(@domain_block) log_action :destroy, @domain_block - render json: @domain_block, serializer: REST::Admin::DomainBlockSerializer + render_empty end private diff --git a/app/controllers/api/v1/admin/email_domain_blocks_controller.rb b/app/controllers/api/v1/admin/email_domain_blocks_controller.rb index ac16f70b0..e53d0b157 100644 --- a/app/controllers/api/v1/admin/email_domain_blocks_controller.rb +++ b/app/controllers/api/v1/admin/email_domain_blocks_controller.rb @@ -39,11 +39,9 @@ class Api::V1::Admin::EmailDomainBlocksController < Api::BaseController def destroy authorize @email_domain_block, :destroy? - @email_domain_block.destroy! log_action :destroy, @email_domain_block - - render json: @email_domain_block, serializer: REST::Admin::EmailDomainBlockSerializer + render_empty end private diff --git a/app/controllers/api/v1/admin/ip_blocks_controller.rb b/app/controllers/api/v1/admin/ip_blocks_controller.rb index f13d63267..201ab6b1f 100644 --- a/app/controllers/api/v1/admin/ip_blocks_controller.rb +++ b/app/controllers/api/v1/admin/ip_blocks_controller.rb @@ -20,10 +20,8 @@ class Api::V1::Admin::IpBlocksController < Api::BaseController def create authorize :ip_block, :create? - @ip_block = IpBlock.create!(resource_params) log_action :create, @ip_block - render json: @ip_block, serializer: REST::Admin::IpBlockSerializer end @@ -39,20 +37,16 @@ class Api::V1::Admin::IpBlocksController < Api::BaseController def update authorize @ip_block, :update? - @ip_block.update(resource_params) log_action :update, @ip_block - render json: @ip_block, serializer: REST::Admin::IpBlockSerializer end def destroy authorize @ip_block, :destroy? - @ip_block.destroy! log_action :destroy, @ip_block - - render json: @ip_block, serializer: REST::Admin::IpBlockSerializer + render_empty end private From 40c7f3e830538951862dc73074d1045a82395ab0 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 30 Oct 2022 02:44:32 +0200 Subject: [PATCH 605/652] Fix account action type validation (#19476) * Fix account action type validation Fix #19143 * Fix #19145 * Fix code style issues --- app/models/admin/account_action.rb | 9 ++-- .../admin/account_actions_controller_spec.rb | 50 ++++++++++++------- 2 files changed, 37 insertions(+), 22 deletions(-) diff --git a/app/models/admin/account_action.rb b/app/models/admin/account_action.rb index aed3bc0c7..bce0d6e17 100644 --- a/app/models/admin/account_action.rb +++ b/app/models/admin/account_action.rb @@ -25,6 +25,8 @@ class Admin::AccountAction alias send_email_notification? send_email_notification alias include_statuses? include_statuses + validates :type, :target_account, :current_account, presence: true + def initialize(attributes = {}) @send_email_notification = true @include_statuses = true @@ -41,13 +43,15 @@ class Admin::AccountAction end def save! + raise ActiveRecord::RecordInvalid, self unless valid? + ApplicationRecord.transaction do process_action! process_strike! + process_reports! end process_email! - process_reports! process_queue! end @@ -106,9 +110,8 @@ class Admin::AccountAction # Otherwise, we will mark all unresolved reports about # the account as resolved. - reports.each { |report| authorize(report, :update?) } - reports.each do |report| + authorize(report, :update?) log_action(:resolve, report) report.resolve!(current_account) end diff --git a/spec/controllers/api/v1/admin/account_actions_controller_spec.rb b/spec/controllers/api/v1/admin/account_actions_controller_spec.rb index 199395f55..462c2cfa9 100644 --- a/spec/controllers/api/v1/admin/account_actions_controller_spec.rb +++ b/spec/controllers/api/v1/admin/account_actions_controller_spec.rb @@ -30,28 +30,40 @@ RSpec.describe Api::V1::Admin::AccountActionsController, type: :controller do end describe 'POST #create' do - before do - post :create, params: { account_id: account.id, type: 'disable' } + context do + before do + post :create, params: { account_id: account.id, type: 'disable' } + end + + it_behaves_like 'forbidden for wrong scope', 'write:statuses' + it_behaves_like 'forbidden for wrong role', '' + + it 'returns http success' do + expect(response).to have_http_status(200) + end + + it 'performs action against account' do + expect(account.reload.user_disabled?).to be true + end + + it 'logs action' do + log_item = Admin::ActionLog.last + + expect(log_item).to_not be_nil + expect(log_item.action).to eq :disable + expect(log_item.account_id).to eq user.account_id + expect(log_item.target_id).to eq account.user.id + end end - it_behaves_like 'forbidden for wrong scope', 'write:statuses' - it_behaves_like 'forbidden for wrong role', '' + context 'with no type' do + before do + post :create, params: { account_id: account.id } + end - it 'returns http success' do - expect(response).to have_http_status(200) - end - - it 'performs action against account' do - expect(account.reload.user_disabled?).to be true - end - - it 'logs action' do - log_item = Admin::ActionLog.last - - expect(log_item).to_not be_nil - expect(log_item.action).to eq :disable - expect(log_item.account_id).to eq user.account_id - expect(log_item.target_id).to eq account.user.id + it 'returns http unprocessable entity' do + expect(response).to have_http_status(422) + end end end end From ac9fb0d654440ce1179bab4071941450aa994d2c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 30 Oct 2022 13:23:05 +0100 Subject: [PATCH 606/652] Add reputation and followers score boost to SQL-only account search (#19251) --- app/models/account.rb | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/app/models/account.rb b/app/models/account.rb index 3da289fc0..da0ee2336 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -445,7 +445,12 @@ class Account < ApplicationRecord class << self DISALLOWED_TSQUERY_CHARACTERS = /['?\\:‘’]/.freeze - TEXTSEARCH = "(setweight(to_tsvector('simple', accounts.display_name), 'A') || setweight(to_tsvector('simple', accounts.username), 'B') || setweight(to_tsvector('simple', coalesce(accounts.domain, '')), 'C'))" + TEXTSEARCH = "(setweight(to_tsvector('simple', accounts.display_name), 'A') || setweight(to_tsvector('simple', accounts.username), 'A') || setweight(to_tsvector('simple', coalesce(accounts.domain, '')), 'C'))" + + REPUTATION_SCORE_FUNCTION = '(greatest(0, coalesce(s.followers_count, 0)) / (greatest(0, coalesce(s.following_count, 0)) + 1.0))' + FOLLOWERS_SCORE_FUNCTION = 'log(greatest(0, coalesce(s.followers_count, 0)) + 2)' + TIME_DISTANCE_FUNCTION = '(case when s.last_status_at is null then 0 else exp(-1.0 * ((greatest(0, abs(extract(DAY FROM age(s.last_status_at))) - 30.0)^2) / (2.0 * ((-1.0 * 30^2) / (2.0 * ln(0.3)))))) end)' + BOOST = "((#{REPUTATION_SCORE_FUNCTION} + #{FOLLOWERS_SCORE_FUNCTION} + #{TIME_DISTANCE_FUNCTION}) / 3.0)" def readonly_attributes super - %w(statuses_count following_count followers_count) @@ -462,9 +467,10 @@ class Account < ApplicationRecord sql = <<-SQL.squish SELECT accounts.*, - ts_rank_cd(#{TEXTSEARCH}, to_tsquery('simple', :tsquery), 32) AS rank + #{BOOST} * ts_rank_cd(#{TEXTSEARCH}, to_tsquery('simple', :tsquery), 32) AS rank FROM accounts LEFT JOIN users ON accounts.id = users.account_id + LEFT JOIN account_stats AS s ON accounts.id = s.account_id WHERE to_tsquery('simple', :tsquery) @@ #{TEXTSEARCH} AND accounts.suspended_at IS NULL AND accounts.moved_to_account_id IS NULL @@ -526,14 +532,15 @@ class Account < ApplicationRecord ) SELECT accounts.*, - (count(f.id) + 1) * ts_rank_cd(#{TEXTSEARCH}, to_tsquery('simple', :tsquery), 32) AS rank + (count(f.id) + 1) * #{BOOST} * ts_rank_cd(#{TEXTSEARCH}, to_tsquery('simple', :tsquery), 32) AS rank FROM accounts LEFT OUTER JOIN follows AS f ON (accounts.id = f.account_id AND f.target_account_id = :id) + LEFT JOIN account_stats AS s ON accounts.id = s.account_id WHERE accounts.id IN (SELECT * FROM first_degree) AND to_tsquery('simple', :tsquery) @@ #{TEXTSEARCH} AND accounts.suspended_at IS NULL AND accounts.moved_to_account_id IS NULL - GROUP BY accounts.id + GROUP BY accounts.id, s.id ORDER BY rank DESC LIMIT :limit OFFSET :offset SQL @@ -541,15 +548,16 @@ class Account < ApplicationRecord <<-SQL.squish SELECT accounts.*, - (count(f.id) + 1) * ts_rank_cd(#{TEXTSEARCH}, to_tsquery('simple', :tsquery), 32) AS rank + (count(f.id) + 1) * #{BOOST} * ts_rank_cd(#{TEXTSEARCH}, to_tsquery('simple', :tsquery), 32) AS rank FROM accounts LEFT OUTER JOIN follows AS f ON (accounts.id = f.account_id AND f.target_account_id = :id) OR (accounts.id = f.target_account_id AND f.account_id = :id) LEFT JOIN users ON accounts.id = users.account_id + LEFT JOIN account_stats AS s ON accounts.id = s.account_id WHERE to_tsquery('simple', :tsquery) @@ #{TEXTSEARCH} AND accounts.suspended_at IS NULL AND accounts.moved_to_account_id IS NULL AND (accounts.domain IS NOT NULL OR (users.approved = TRUE AND users.confirmed_at IS NOT NULL)) - GROUP BY accounts.id + GROUP BY accounts.id, s.id ORDER BY rank DESC LIMIT :limit OFFSET :offset SQL From a529d6d93e777003019f1ab0d7ff913134625cf6 Mon Sep 17 00:00:00 2001 From: Claire Date: Sun, 30 Oct 2022 19:04:39 +0100 Subject: [PATCH 607/652] Fix invites (#19560) Fixes #19507 Fix regression from #19296 --- app/controllers/auth/registrations_controller.rb | 1 + app/views/auth/registrations/rules.html.haml | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/controllers/auth/registrations_controller.rb b/app/controllers/auth/registrations_controller.rb index 84a802447..14e0d9a36 100644 --- a/app/controllers/auth/registrations_controller.rb +++ b/app/controllers/auth/registrations_controller.rb @@ -148,6 +148,7 @@ class Auth::RegistrationsController < Devise::RegistrationsController return if @rules.empty? || (session[:accept_token].present? && params[:accept] == session[:accept_token]) @accept_token = session[:accept_token] = SecureRandom.hex + @invite_code = invite_code set_locale { render :rules } end diff --git a/app/views/auth/registrations/rules.html.haml b/app/views/auth/registrations/rules.html.haml index a41581b32..8e7a90cbe 100644 --- a/app/views/auth/registrations/rules.html.haml +++ b/app/views/auth/registrations/rules.html.haml @@ -14,7 +14,8 @@ .rules-list__text= rule.text .stacked-actions - = link_to t('auth.rules.accept'), new_user_registration_path(accept: @accept_token), class: 'button' + - accept_path = @invite_code.present? ? public_invite_url(invite_code: @invite_code, accept: @accept_token) : new_user_registration_path(accept: @accept_token) + = link_to t('auth.rules.accept'), accept_path, class: 'button' = link_to t('auth.rules.back'), root_path, class: 'button button-tertiary' .form-footer= render 'auth/shared/links' From 26478f461cafc42d39bc0baf235989e1df7ee0bb Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 30 Oct 2022 21:29:23 +0100 Subject: [PATCH 608/652] Remove language filtering from hashtag timelines (#19563) --- app/controllers/api/v1/timelines/tag_controller.rb | 1 - app/models/tag_feed.rb | 1 - 2 files changed, 2 deletions(-) diff --git a/app/controllers/api/v1/timelines/tag_controller.rb b/app/controllers/api/v1/timelines/tag_controller.rb index 9f3a5b3f1..64a1db58d 100644 --- a/app/controllers/api/v1/timelines/tag_controller.rb +++ b/app/controllers/api/v1/timelines/tag_controller.rb @@ -36,7 +36,6 @@ class Api::V1::Timelines::TagController < Api::BaseController TagFeed.new( @tag, current_account, - locale: content_locale, any: params[:any], all: params[:all], none: params[:none], diff --git a/app/models/tag_feed.rb b/app/models/tag_feed.rb index 58216bddc..8502b79af 100644 --- a/app/models/tag_feed.rb +++ b/app/models/tag_feed.rb @@ -33,7 +33,6 @@ class TagFeed < PublicFeed scope.merge!(remote_only_scope) if remote_only? scope.merge!(account_filters_scope) if account? scope.merge!(media_only_scope) if media_only? - scope.merge!(language_scope) scope.cache_ids.to_a_paginated_by_id(limit, max_id: max_id, since_id: since_id, min_id: min_id) end From 2d9a85db6efe0c9ccfda1420551ce3d6025bc27e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 31 Oct 2022 13:06:17 +0100 Subject: [PATCH 609/652] Change design of link footer (#19562) --- app/javascript/mastodon/components/account.js | 9 ++- .../mastodon/components/server_banner.js | 2 +- .../mastodon/features/about/index.js | 6 +- .../features/ui/components/link_footer.js | 64 ++++++++-------- .../styles/mastodon/components.scss | 75 +++++++++---------- 5 files changed, 84 insertions(+), 72 deletions(-) diff --git a/app/javascript/mastodon/components/account.js b/app/javascript/mastodon/components/account.js index 92d14da8b..51d2b8ba2 100644 --- a/app/javascript/mastodon/components/account.js +++ b/app/javascript/mastodon/components/account.js @@ -27,6 +27,7 @@ export default @injectIntl class Account extends ImmutablePureComponent { static propTypes = { + size: PropTypes.number, account: ImmutablePropTypes.map, onFollow: PropTypes.func.isRequired, onBlock: PropTypes.func.isRequired, @@ -40,6 +41,10 @@ class Account extends ImmutablePureComponent { onActionClick: PropTypes.func, }; + static defaultProps = { + size: 46, + }; + handleFollow = () => { this.props.onFollow(this.props.account); } @@ -65,7 +70,7 @@ class Account extends ImmutablePureComponent { } render () { - const { account, intl, hidden, onActionClick, actionIcon, actionTitle, defaultAction } = this.props; + const { account, intl, hidden, onActionClick, actionIcon, actionTitle, defaultAction, size } = this.props; if (!account) { return ( @@ -136,7 +141,7 @@ class Account extends ImmutablePureComponent {
-
+
{mute_expires_at}
diff --git a/app/javascript/mastodon/components/server_banner.js b/app/javascript/mastodon/components/server_banner.js index c2336e43d..617fdecdf 100644 --- a/app/javascript/mastodon/components/server_banner.js +++ b/app/javascript/mastodon/components/server_banner.js @@ -61,7 +61,7 @@ class ServerBanner extends React.PureComponent {

- +
diff --git a/app/javascript/mastodon/features/about/index.js b/app/javascript/mastodon/features/about/index.js index 75fed9b95..832836272 100644 --- a/app/javascript/mastodon/features/about/index.js +++ b/app/javascript/mastodon/features/about/index.js @@ -125,7 +125,7 @@ class About extends React.PureComponent {

- +

@@ -209,6 +209,10 @@ class About extends React.PureComponent { + +
+

+
diff --git a/app/javascript/mastodon/features/ui/components/link_footer.js b/app/javascript/mastodon/features/ui/components/link_footer.js index cc3d83572..c29aac418 100644 --- a/app/javascript/mastodon/features/ui/components/link_footer.js +++ b/app/javascript/mastodon/features/ui/components/link_footer.js @@ -3,7 +3,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import { FormattedMessage, defineMessages, injectIntl } from 'react-intl'; import { Link } from 'react-router-dom'; -import { version, repository, source_url, profile_directory as profileDirectory } from 'mastodon/initial_state'; +import { domain, version, source_url, profile_directory as profileDirectory } from 'mastodon/initial_state'; import { logOut } from 'mastodon/utils/log_out'; import { openModal } from 'mastodon/actions/modal'; import { PERMISSION_INVITE_USERS } from 'mastodon/permissions'; @@ -48,40 +48,44 @@ class LinkFooter extends React.PureComponent { render () { const { signedIn, permissions } = this.context.identity; - const items = []; - items.push(); - items.push(); - items.push(); - items.push(); - items.push(); - items.push(); - - if (profileDirectory) { - items.push(); - } - - if (signedIn) { - if ((permissions & PERMISSION_INVITE_USERS) === PERMISSION_INVITE_USERS) { - items.push(); - } - - items.push(); - items.push(); - } + const canInvite = signedIn && ((permissions & PERMISSION_INVITE_USERS) === PERMISSION_INVITE_USERS); + const canProfileDirectory = profileDirectory; return ( -
-
    -
  • {items.reduce((prev, curr) => [prev, ' · ', curr])}
  • -
+
+

+ {domain}: + {' '} + + {canInvite && ( + <> + {' · '} + + + )} + {canProfileDirectory && ( + <> + {' · '} + + + )} + {' · '} + +

- {repository} (v{version}) }} - /> + Mastodon: + {' '} + + {' · '} + + {' · '} + + {' · '} + + {' · '} + v{version}

); diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index ded5634d6..f60ad6050 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -3120,43 +3120,6 @@ $ui-header-height: 55px; color: $dark-text-color; overflow: auto; - &__footer { - flex: 0 0 auto; - padding: 10px; - padding-top: 20px; - z-index: 1; - font-size: 13px; - - ul { - margin-bottom: 10px; - } - - ul li { - display: inline; - } - - p { - color: $dark-text-color; - margin-bottom: 20px; - - a { - color: $dark-text-color; - text-decoration: underline; - } - } - - a { - text-decoration: none; - color: $darker-text-color; - - &:hover, - &:focus, - &:active { - text-decoration: underline; - } - } - } - &__trends { flex: 0 1 auto; opacity: 1; @@ -8382,6 +8345,34 @@ noscript { } } +.link-footer { + flex: 0 0 auto; + padding: 10px; + padding-top: 20px; + z-index: 1; + font-size: 13px; + + p { + color: $dark-text-color; + margin-bottom: 20px; + + strong { + font-weight: 500; + } + + a { + color: $dark-text-color; + text-decoration: underline; + + &:hover, + &:focus, + &:active { + text-decoration: none; + } + } + } +} + .about { padding: 20px; @@ -8389,6 +8380,14 @@ noscript { border-radius: 4px; } + &__footer { + color: $dark-text-color; + text-align: center; + font-size: 15px; + line-height: 22px; + margin-top: 20px; + } + &__header { margin-bottom: 30px; @@ -8509,7 +8508,7 @@ noscript { } } - .getting-started__footer { + .link-footer { padding: 0; margin-top: 60px; text-align: center; From bb1ef11c30b19db56b61b0918b176e1459e1f776 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 31 Oct 2022 16:31:44 +0100 Subject: [PATCH 610/652] Change featured hashtag deletion to be done synchronously (#19590) --- app/controllers/settings/featured_tags_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/settings/featured_tags_controller.rb b/app/controllers/settings/featured_tags_controller.rb index b3db04a42..c38440265 100644 --- a/app/controllers/settings/featured_tags_controller.rb +++ b/app/controllers/settings/featured_tags_controller.rb @@ -23,7 +23,7 @@ class Settings::FeaturedTagsController < Settings::BaseController end def destroy - RemoveFeaturedTagWorker.perform_async(current_account.id, @featured_tag.id) + RemoveFeaturedTagService.new.call(current_account, @featured_tag) redirect_to settings_featured_tags_path end From fea142fb9a0a6f7a4b92e608d638a26598f0a4e1 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 1 Nov 2022 10:42:04 +0100 Subject: [PATCH 611/652] New Crowdin updates (#19517) * New translations en.json (Persian) * New translations en.json (Spanish, Argentina) * New translations simple_form.en.yml (Arabic) * New translations activerecord.en.yml (Slovenian) * New translations activerecord.en.yml (Turkish) * New translations en.json (Persian) * New translations en.yml (Persian) * New translations activerecord.en.yml (Spanish) * New translations en.json (Czech) * New translations en.json (Arabic) * New translations en.yml (Arabic) * New translations en.json (Catalan) * New translations en.json (Greek) * New translations en.json (Basque) * New translations en.yml (Basque) * New translations en.json (Polish) * New translations en.json (Chinese Traditional) * New translations en.json (Latvian) * New translations simple_form.en.yml (Basque) * New translations activerecord.en.yml (Greek) * New translations activerecord.en.yml (Basque) * New translations activerecord.en.yml (Polish) * New translations en.yml (German) * New translations en.json (Vietnamese) * New translations en.json (Kurmanji (Kurdish)) * New translations simple_form.en.yml (German) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Romanian) * New translations en.json (Chinese Traditional) * New translations simple_form.en.yml (Chinese Traditional) * New translations activerecord.en.yml (Afrikaans) * New translations en.json (German) * New translations en.json (Romanian) * New translations en.json (Afrikaans) * New translations en.json (German) * New translations en.json (Japanese) * New translations en.yml (Japanese) * New translations simple_form.en.yml (Japanese) * New translations activerecord.en.yml (Japanese) * New translations en.yml (German) * New translations en.yml (Portuguese, Brazilian) * New translations simple_form.en.yml (German) * New translations simple_form.en.yml (Portuguese, Brazilian) * New translations activerecord.en.yml (German) * New translations activerecord.en.yml (Portuguese, Brazilian) * New translations en.json (Polish) * New translations simple_form.en.yml (Portuguese, Brazilian) * New translations en.yml (German) * New translations en.json (German) * New translations en.json (Italian) * New translations en.json (Portuguese) * New translations simple_form.en.yml (German) * New translations en.json (Bulgarian) * New translations en.json (Chinese Traditional) * New translations en.json (Danish) * New translations en.json (Finnish) * New translations en.json (Dutch) * New translations en.json (Danish) * New translations simple_form.en.yml (Danish) * New translations activerecord.en.yml (Danish) * New translations en.json (Dutch) * New translations en.json (Chinese Traditional) * New translations en.yml (Chinese Traditional) * New translations simple_form.en.yml (Chinese Traditional) * New translations en.json (Ukrainian) * New translations en.json (Chinese Traditional) * New translations en.yml (Chinese Traditional) * New translations simple_form.en.yml (Chinese Traditional) * New translations doorkeeper.en.yml (Chinese Traditional) * New translations devise.en.yml (Chinese Traditional) * New translations en.json (Chinese Traditional) * New translations en.yml (Chinese Traditional) * New translations en.yml (Spanish, Argentina) * New translations doorkeeper.en.yml (Chinese Traditional) * New translations en.json (Korean) * New translations en.yml (Korean) * New translations en.json (Chinese Traditional) * New translations en.yml (Chinese Traditional) * New translations simple_form.en.yml (Chinese Traditional) * New translations en.json (Chinese Traditional) * New translations en.yml (Chinese Traditional) * New translations simple_form.en.yml (Chinese Traditional) * New translations doorkeeper.en.yml (Chinese Traditional) * New translations devise.en.yml (Chinese Traditional) * New translations en.json (Japanese) * New translations en.yml (Japanese) * New translations en.json (Chinese Simplified) * New translations en.json (French) * New translations en.yml (French) * New translations simple_form.en.yml (French) * New translations en.yml (German) * New translations en.json (French) * New translations en.json (Afrikaans) * New translations en.yml (Afrikaans) * New translations en.json (Kabyle) * New translations en.yml (Kabyle) * New translations simple_form.en.yml (Kabyle) * New translations en.yml (Czech) * New translations en.json (German) * New translations en.json (French) * New translations en.yml (Catalan) * New translations en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations activerecord.en.yml (Kurmanji (Kurdish)) * New translations en.yml (German) * New translations en.json (Bulgarian) * New translations en.json (German) * New translations en.yml (Italian) * New translations en.yml (German) * New translations en.json (German) * New translations en.yml (Greek) * New translations en.json (Hungarian) * New translations en.yml (Hungarian) * New translations en.yml (Portuguese) * New translations en.yml (Vietnamese) * New translations en.yml (German) * New translations en.json (German) * New translations en.yml (Polish) * New translations en.yml (Latvian) * New translations en.yml (German) * New translations en.json (German) * New translations en.yml (Turkish) * New translations en.yml (Ukrainian) * New translations simple_form.en.yml (German) * New translations en.json (German) * New translations en.yml (German) * New translations en.json (German) * New translations en.json (Asturian) * New translations simple_form.en.yml (German) * New translations doorkeeper.en.yml (German) * New translations en.json (German) * New translations en.yml (German) * New translations en.json (German) * New translations en.json (Basque) * New translations en.json (Chinese Simplified) * New translations en.json (Basque) * New translations en.yml (Basque) * New translations en.json (Slovenian) * New translations simple_form.en.yml (Basque) * New translations en.yml (Spanish) * New translations en.json (Spanish) * New translations en.yml (Basque) * New translations activerecord.en.yml (Spanish) * New translations en.yml (German) * New translations en.json (German) * New translations en.yml (Ukrainian) * New translations en.json (Ukrainian) * New translations simple_form.en.yml (German) * New translations simple_form.en.yml (Ukrainian) * New translations activerecord.en.yml (Ukrainian) * New translations en.json (German) * New translations en.yml (Ukrainian) * New translations en.json (Slovenian) * New translations en.json (Ukrainian) * New translations simple_form.en.yml (German) * New translations simple_form.en.yml (Ukrainian) * New translations doorkeeper.en.yml (Ukrainian) * New translations en.json (German) * New translations en.json (Esperanto) * New translations en.yml (Dutch) * New translations simple_form.en.yml (Dutch) * New translations doorkeeper.en.yml (Dutch) * New translations en.yml (Japanese) * New translations simple_form.en.yml (Japanese) * New translations en.json (Japanese) * New translations en.yml (Japanese) * New translations en.yml (Dutch) * New translations simple_form.en.yml (Dutch) * New translations simple_form.en.yml (Japanese) * New translations en.json (Japanese) * New translations en.yml (Japanese) * New translations en.yml (German) * New translations en.json (German) * New translations en.json (Japanese) * New translations en.json (Slovenian) * New translations en.yml (Slovenian) * New translations en.yml (German) * New translations en.json (Japanese) * New translations en.json (Indonesian) * New translations simple_form.en.yml (German) * New translations en.yml (German) * New translations en.json (German) * New translations en.json (Indonesian) * New translations en.yml (Russian) * New translations en.yml (Indonesian) * New translations simple_form.en.yml (Indonesian) * New translations en.json (Burmese) * New translations en.yml (Burmese) * New translations simple_form.en.yml (Burmese) * New translations activerecord.en.yml (Burmese) * New translations devise.en.yml (Burmese) * New translations doorkeeper.en.yml (Burmese) * New translations en.yml (German) * New translations en.json (German) * New translations en.yml (Indonesian) * New translations simple_form.en.yml (Indonesian) * New translations activerecord.en.yml (Indonesian) * New translations en.json (Burmese) * New translations en.json (German) * New translations en.json (Indonesian) * New translations en.json (Swedish) * New translations en.json (Icelandic) * New translations en.yml (Indonesian) * New translations simple_form.en.yml (Indonesian) * New translations en.json (Hungarian) * New translations en.json (German) * New translations en.json (Icelandic) * New translations en.yml (Icelandic) * New translations en.json (Scottish Gaelic) * New translations en.yml (Scottish Gaelic) * New translations en.json (German) * New translations en.yml (Arabic) * New translations en.json (Hindi) * New translations en.json (Scottish Gaelic) * New translations simple_form.en.yml (Arabic) * New translations simple_form.en.yml (Scottish Gaelic) * New translations activerecord.en.yml (Scottish Gaelic) * New translations devise.en.yml (Scottish Gaelic) * New translations activerecord.en.yml (Danish) * New translations en.json (German) * New translations en.json (Scottish Gaelic) * New translations en.json (German) * New translations en.json (Persian) * New translations en.yml (Persian) * New translations en.json (Persian) * New translations activerecord.en.yml (Persian) * New translations en.json (Igbo) * New translations en.yml (Igbo) * New translations simple_form.en.yml (Igbo) * New translations activerecord.en.yml (Igbo) * New translations devise.en.yml (Igbo) * New translations doorkeeper.en.yml (Igbo) * New translations en.json (Korean) * New translations en.yml (Korean) * New translations en.json (Spanish, Argentina) * New translations simple_form.en.yml (Korean) * New translations en.json (Spanish, Argentina) * New translations en.json (Japanese) * New translations simple_form.en.yml (Japanese) * New translations en.json (Igbo) * New translations en.json (Japanese) * New translations en.yml (Japanese) * New translations en.yml (Japanese) * New translations simple_form.en.yml (Japanese) * New translations en.json (Galician) * New translations en.yml (Galician) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 60 +- app/javascript/mastodon/locales/ar.json | 58 +- app/javascript/mastodon/locales/ast.json | 84 +-- app/javascript/mastodon/locales/bg.json | 30 +- app/javascript/mastodon/locales/bn.json | 20 +- app/javascript/mastodon/locales/br.json | 20 +- app/javascript/mastodon/locales/ca.json | 38 +- app/javascript/mastodon/locales/ckb.json | 20 +- app/javascript/mastodon/locales/co.json | 20 +- app/javascript/mastodon/locales/cs.json | 38 +- app/javascript/mastodon/locales/cy.json | 20 +- app/javascript/mastodon/locales/da.json | 38 +- app/javascript/mastodon/locales/de.json | 294 ++++---- .../mastodon/locales/defaultMessages.json | 62 +- app/javascript/mastodon/locales/el.json | 24 +- app/javascript/mastodon/locales/en-GB.json | 20 +- app/javascript/mastodon/locales/en.json | 20 +- app/javascript/mastodon/locales/eo.json | 24 +- app/javascript/mastodon/locales/es-AR.json | 42 +- app/javascript/mastodon/locales/es-MX.json | 20 +- app/javascript/mastodon/locales/es.json | 52 +- app/javascript/mastodon/locales/et.json | 20 +- app/javascript/mastodon/locales/eu.json | 262 +++---- app/javascript/mastodon/locales/fa.json | 210 +++--- app/javascript/mastodon/locales/fi.json | 22 +- app/javascript/mastodon/locales/fr.json | 38 +- app/javascript/mastodon/locales/fy.json | 20 +- app/javascript/mastodon/locales/ga.json | 20 +- app/javascript/mastodon/locales/gd.json | 40 +- app/javascript/mastodon/locales/gl.json | 38 +- app/javascript/mastodon/locales/he.json | 20 +- app/javascript/mastodon/locales/hi.json | 38 +- app/javascript/mastodon/locales/hr.json | 20 +- app/javascript/mastodon/locales/hu.json | 24 +- app/javascript/mastodon/locales/hy.json | 20 +- app/javascript/mastodon/locales/id.json | 370 +++++----- app/javascript/mastodon/locales/ig.json | 649 ++++++++++++++++++ app/javascript/mastodon/locales/io.json | 20 +- app/javascript/mastodon/locales/is.json | 40 +- app/javascript/mastodon/locales/it.json | 38 +- app/javascript/mastodon/locales/ja.json | 68 +- app/javascript/mastodon/locales/ka.json | 20 +- app/javascript/mastodon/locales/kab.json | 38 +- app/javascript/mastodon/locales/kk.json | 20 +- app/javascript/mastodon/locales/kn.json | 20 +- app/javascript/mastodon/locales/ko.json | 38 +- app/javascript/mastodon/locales/ku.json | 38 +- app/javascript/mastodon/locales/kw.json | 20 +- app/javascript/mastodon/locales/lt.json | 20 +- app/javascript/mastodon/locales/lv.json | 38 +- app/javascript/mastodon/locales/mk.json | 20 +- app/javascript/mastodon/locales/ml.json | 20 +- app/javascript/mastodon/locales/mr.json | 20 +- app/javascript/mastodon/locales/ms.json | 20 +- app/javascript/mastodon/locales/my.json | 649 ++++++++++++++++++ app/javascript/mastodon/locales/nl.json | 40 +- app/javascript/mastodon/locales/nn.json | 20 +- app/javascript/mastodon/locales/no.json | 20 +- app/javascript/mastodon/locales/oc.json | 20 +- app/javascript/mastodon/locales/pa.json | 20 +- app/javascript/mastodon/locales/pl.json | 40 +- app/javascript/mastodon/locales/pt-BR.json | 20 +- app/javascript/mastodon/locales/pt-PT.json | 38 +- app/javascript/mastodon/locales/ro.json | 60 +- app/javascript/mastodon/locales/ru.json | 20 +- app/javascript/mastodon/locales/sa.json | 20 +- app/javascript/mastodon/locales/sc.json | 20 +- app/javascript/mastodon/locales/si.json | 20 +- app/javascript/mastodon/locales/sk.json | 20 +- app/javascript/mastodon/locales/sl.json | 38 +- app/javascript/mastodon/locales/sq.json | 20 +- app/javascript/mastodon/locales/sr-Latn.json | 20 +- app/javascript/mastodon/locales/sr.json | 20 +- app/javascript/mastodon/locales/sv.json | 66 +- app/javascript/mastodon/locales/szl.json | 20 +- app/javascript/mastodon/locales/ta.json | 20 +- app/javascript/mastodon/locales/tai.json | 20 +- app/javascript/mastodon/locales/te.json | 20 +- app/javascript/mastodon/locales/th.json | 20 +- app/javascript/mastodon/locales/tr.json | 38 +- app/javascript/mastodon/locales/tt.json | 20 +- app/javascript/mastodon/locales/ug.json | 20 +- app/javascript/mastodon/locales/uk.json | 132 ++-- app/javascript/mastodon/locales/ur.json | 20 +- app/javascript/mastodon/locales/vi.json | 38 +- .../mastodon/locales/whitelist_ig.json | 2 + .../mastodon/locales/whitelist_my.json | 2 + app/javascript/mastodon/locales/zgh.json | 20 +- app/javascript/mastodon/locales/zh-CN.json | 26 +- app/javascript/mastodon/locales/zh-HK.json | 20 +- app/javascript/mastodon/locales/zh-TW.json | 92 +-- config/locales/activerecord.af.yml | 9 + config/locales/activerecord.da.yml | 5 + config/locales/activerecord.de.yml | 8 +- config/locales/activerecord.el.yml | 4 + config/locales/activerecord.es.yml | 4 + config/locales/activerecord.eu.yml | 23 + config/locales/activerecord.fa.yml | 23 + config/locales/activerecord.gd.yml | 4 + config/locales/activerecord.id.yml | 15 + config/locales/activerecord.ig.yml | 1 + config/locales/activerecord.ja.yml | 4 + config/locales/activerecord.ku.yml | 4 + config/locales/activerecord.my.yml | 1 + config/locales/activerecord.pl.yml | 4 + config/locales/activerecord.pt-BR.yml | 5 + config/locales/activerecord.sl.yml | 4 + config/locales/activerecord.tr.yml | 4 + config/locales/activerecord.uk.yml | 4 +- config/locales/af.yml | 2 + config/locales/ar.yml | 23 + config/locales/ca.yml | 2 + config/locales/cs.yml | 2 + config/locales/de.yml | 245 ++++--- config/locales/devise.ig.yml | 1 + config/locales/devise.my.yml | 1 + config/locales/devise.zh-TW.yml | 36 +- config/locales/doorkeeper.de.yml | 4 +- config/locales/doorkeeper.ig.yml | 1 + config/locales/doorkeeper.my.yml | 1 + config/locales/doorkeeper.nl.yml | 1 + config/locales/doorkeeper.uk.yml | 4 +- config/locales/doorkeeper.zh-TW.yml | 26 +- config/locales/el.yml | 2 + config/locales/es-AR.yml | 2 + config/locales/es.yml | 2 + config/locales/eu.yml | 168 ++++- config/locales/fa.yml | 63 ++ config/locales/fr.yml | 6 + config/locales/gd.yml | 2 + config/locales/gl.yml | 2 + config/locales/hu.yml | 2 + config/locales/id.yml | 206 +++++- config/locales/ig.yml | 12 + config/locales/is.yml | 2 + config/locales/it.yml | 2 + config/locales/ja.yml | 62 +- config/locales/kab.yml | 2 + config/locales/ko.yml | 6 + config/locales/ku.yml | 18 + config/locales/lv.yml | 2 + config/locales/my.yml | 12 + config/locales/nl.yml | 8 + config/locales/pl.yml | 2 + config/locales/pt-BR.yml | 57 ++ config/locales/pt-PT.yml | 2 + config/locales/ru.yml | 2 + config/locales/simple_form.ar.yml | 16 + config/locales/simple_form.da.yml | 1 + config/locales/simple_form.de.yml | 108 +-- config/locales/simple_form.eu.yml | 85 ++- config/locales/simple_form.fr.yml | 1 + config/locales/simple_form.id.yml | 90 ++- config/locales/simple_form.ig.yml | 1 + config/locales/simple_form.ja.yml | 39 ++ config/locales/simple_form.kab.yml | 2 + config/locales/simple_form.ko.yml | 6 + config/locales/simple_form.ku.yml | 8 + config/locales/simple_form.my.yml | 1 + config/locales/simple_form.nl.yml | 6 + config/locales/simple_form.pt-BR.yml | 10 + config/locales/simple_form.uk.yml | 6 +- config/locales/simple_form.zh-TW.yml | 54 +- config/locales/sl.yml | 3 + config/locales/tr.yml | 2 + config/locales/uk.yml | 44 +- config/locales/vi.yml | 2 + config/locales/zh-TW.yml | 158 ++--- 168 files changed, 4576 insertions(+), 2220 deletions(-) create mode 100644 app/javascript/mastodon/locales/ig.json create mode 100644 app/javascript/mastodon/locales/my.json create mode 100644 app/javascript/mastodon/locales/whitelist_ig.json create mode 100644 app/javascript/mastodon/locales/whitelist_my.json create mode 100644 config/locales/activerecord.ig.yml create mode 100644 config/locales/activerecord.my.yml create mode 100644 config/locales/devise.ig.yml create mode 100644 config/locales/devise.my.yml create mode 100644 config/locales/doorkeeper.ig.yml create mode 100644 config/locales/doorkeeper.my.yml create mode 100644 config/locales/ig.yml create mode 100644 config/locales/my.yml create mode 100644 config/locales/simple_form.ig.yml create mode 100644 config/locales/simple_form.my.yml diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 364fa5505..39a010ea2 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -1,17 +1,18 @@ { "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.contact": "Kontak:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.domain_blocks.comment": "Rede", + "about.domain_blocks.domain": "Domein", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", + "about.domain_blocks.severity": "Ernstigheid", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", + "about.domain_blocks.suspended.title": "Opgeskort", + "about.not_available": "Hierdie informasie is nie beskikbaar gemaak op hierdie bediener nie.", "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.rules": "Bediener reëls", "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Voeg by of verwyder van lyste", "account.badges.bot": "Bot", @@ -20,26 +21,26 @@ "account.block_domain": "Blokeer alles van {domain}", "account.blocked": "Geblok", "account.browse_more_on_origin_server": "Snuffel rond op oorspronklike profiel", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Onttrek volg aanvraag", "account.direct": "Stuur direkte boodskap aan @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", - "account.domain_blocked": "Domain blocked", + "account.domain_blocked": "Domein geblok", "account.edit_profile": "Redigeer profiel", "account.enable_notifications": "Stel my in kennis wanneer @{name} plasings maak", "account.endorse": "Beklemtoon op profiel", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.last_status_at": "Laaste plasing op {date}", + "account.featured_tags.last_status_never": "Geen plasings", "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Volg", "account.followers": "Volgelinge", "account.followers.empty": "Niemand volg tans hierdie gebruiker nie.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", - "account.following": "Following", + "account.following": "Volg", "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "Die gebruiker volg nie tans iemand nie.", "account.follows_you": "Volg jou", "account.hide_reblogs": "Versteek hupstoot vanaf @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Aangesluit", "account.languages": "Change subscribed languages", "account.link_verified_on": "Eienaarskap van die skakel was getoets op {date}", "account.locked_info": "Die rekening se privaatheidstatus is gesluit. Die eienaar hersien handmatig wie hom/haar kan volg.", @@ -73,19 +74,19 @@ "alert.rate_limited.message": "Probeer asb. weer na {retry_time, time, medium}.", "alert.rate_limited.title": "Rate limited", "alert.unexpected.message": "An unexpected error occurred.", - "alert.unexpected.title": "Oops!", + "alert.unexpected.title": "Oeps!", "announcement.announcement": "Aankondiging", "attachments_list.unprocessed": "(unprocessed)", "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", - "boost_modal.combo": "You can press {combo} to skip this next time", + "boost_modal.combo": "Jy kan {combo} druk om hierdie volgende keer oor te slaan", "bundle_column_error.copy_stacktrace": "Copy error report", "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.error.title": "Ag nee!", "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.network.title": "Netwerk fout", "bundle_column_error.retry": "Probeer weer", - "bundle_column_error.return": "Go back home", + "bundle_column_error.return": "Gaan terug huistoe", "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Close", @@ -96,8 +97,8 @@ "closed_registrations_modal.find_another_server": "Find another server", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", - "column.blocks": "Blocked users", + "column.about": "Aangaande", + "column.blocks": "Geblokkeerde gebruikers", "column.bookmarks": "Boekmerke", "column.community": "Plaaslike tydlyn", "column.direct": "Direkte boodskappe", @@ -258,15 +259,15 @@ "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", - "getting_started.invite": "Invite people", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Security", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", "navigation_bar.mutes": "Muted users", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Search", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index d8113d439..858f61014 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -1,6 +1,7 @@ { "about.blocks": "خوادم تحت الإشراف", "about.contact": "اتصل بـ:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "السبب", "about.domain_blocks.domain": "النطاق", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -10,7 +11,7 @@ "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", "about.domain_blocks.suspended.title": "Suspended", "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.powered_by": "شبكة اجتماعية لامركزية مدعومة من {mastodon}", "about.rules": "قواعد الخادم", "account.account_note_header": "مُلاحظة", "account.add_or_remove_from_list": "الإضافة أو الإزالة من القائمة", @@ -27,9 +28,9 @@ "account.edit_profile": "تعديل الملف الشخصي", "account.enable_notifications": "أشعرني عندما ينشر @{name}", "account.endorse": "أوصِ به على صفحتك الشخصية", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "آخر مشاركة في {date}", + "account.featured_tags.last_status_never": "لا توجد رسائل", + "account.featured_tags.title": "وسوم {name} المميَّزة", "account.follow": "متابعة", "account.followers": "مُتابِعون", "account.followers.empty": "لا أحدَ يُتابع هذا المُستخدم إلى حد الآن.", @@ -39,8 +40,8 @@ "account.follows.empty": "لا يُتابع هذا المُستخدمُ أيَّ أحدٍ حتى الآن.", "account.follows_you": "يُتابِعُك", "account.hide_reblogs": "إخفاء مشاركات @{name}", - "account.joined_short": "Joined", - "account.languages": "Change subscribed languages", + "account.joined_short": "انضم في", + "account.languages": "تغيير اللغات المشترَك فيها", "account.link_verified_on": "تمَّ التَّحقق مِن مِلْكيّة هذا الرابط بتاريخ {date}", "account.locked_info": "تمَّ تعيين حالة خصوصية هذا الحساب إلى مُقفَل. يُراجع المالك يدويًا من يمكنه متابعته.", "account.media": "وسائط", @@ -85,16 +86,16 @@ "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", "bundle_column_error.network.title": "خطأ في الشبكة", "bundle_column_error.retry": "إعادة المُحاولة", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "العودة إلى الرئيسية", + "bundle_column_error.routing.body": "تعذر العثور على الصفحة المطلوبة. هل أنت متأكد من أنّ عنوان URL في شريط العناوين صحيح؟", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "إغلاق", "bundle_modal_error.message": "لقد حدث خطأ ما أثناء تحميل هذا العنصر.", "bundle_modal_error.retry": "إعادة المُحاولة", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations.other_server_instructions": "بما أن ماستدون لامركزي، يمكنك إنشاء حساب على خادم آخر للاستمرار في التفاعل مع هذا الخادم.", + "closed_registrations_modal.description": "لا يمكن إنشاء حساب على {domain} حاليا، ولكن على فكرة لست بحاجة إلى حساب على {domain} بذاته لاستخدام ماستدون.", + "closed_registrations_modal.find_another_server": "ابحث على خادم آخر", + "closed_registrations_modal.preamble": "ماستدون لامركزي، لذلك بغض النظر عن مكان إنشاء حسابك، سيكون بإمكانك المتابعة والتفاعل مع أي شخص على هذا الخادم. يمكنك حتى أن تستضيفه ذاتياً!", "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "عن", "column.blocks": "المُستَخدِمون المَحظورون", @@ -258,15 +259,15 @@ "follow_request.authorize": "ترخيص", "follow_request.reject": "رفض", "follow_requests.unlocked_explanation": "على الرغم من أن حسابك غير مقفل، فإن موظفين الـ{domain} ظنوا أنك قد ترغب في مراجعة طلبات المتابعة من هذه الحسابات يدوياً.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "تم الحفظ", - "getting_started.directory": "الدليل", - "getting_started.documentation": "الدليل", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "استعدّ للبدء", - "getting_started.invite": "دعوة أشخاص", - "getting_started.privacy_policy": "سياسة الخصوصية", - "getting_started.security": "الأمان", - "getting_started.what_is_mastodon": "عن ماستدون", "hashtag.column_header.tag_mode.all": "و {additional}", "hashtag.column_header.tag_mode.any": "أو {additional}", "hashtag.column_header.tag_mode.none": "بدون {additional}", @@ -287,9 +288,9 @@ "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_another_server": "على خادم مختلف", "interaction_modal.on_this_server": "على هذا الخادم", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "ببساطة قم بنسخ ولصق هذا الرابط في شريط البحث في تطبيقك المفضل أو على واجهة الويب أين ولجت بحسابك.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "اتبع {name}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "هل تود إخفاء الإخطارات القادمة من هذا المستخدم ؟", "mute_modal.indefinite": "إلى أجل غير مسمى", "navigation_bar.about": "عن", - "navigation_bar.apps": "احصل على التطبيق", "navigation_bar.blocks": "الحسابات المحجوبة", "navigation_bar.bookmarks": "الفواصل المرجعية", "navigation_bar.community_timeline": "الخيط المحلي", @@ -375,8 +375,6 @@ "navigation_bar.filters": "الكلمات المكتومة", "navigation_bar.follow_requests": "طلبات المتابعة", "navigation_bar.follows_and_followers": "المتابِعين والمتابَعون", - "navigation_bar.info": "عن", - "navigation_bar.keyboard_shortcuts": "اختصارات لوحة المفاتيح", "navigation_bar.lists": "القوائم", "navigation_bar.logout": "خروج", "navigation_bar.mutes": "الحسابات المكتومة", @@ -384,7 +382,7 @@ "navigation_bar.pins": "المنشورات المُثَبَّتَة", "navigation_bar.preferences": "التفضيلات", "navigation_bar.public_timeline": "الخيط العام الموحد", - "navigation_bar.search": "Search", + "navigation_bar.search": "البحث", "navigation_bar.security": "الأمان", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "ابحث", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "نمط البحث المتقدم", "search_popout.tips.full_text": "النص البسيط يقوم بعرض المنشورات التي كتبتها أو قمت بإرسالها أو ترقيتها أو تمت الإشارة إليك فيها من طرف آخرين ، بالإضافة إلى مطابقة أسماء المستخدمين وأسماء العرض وعلامات التصنيف.", "search_popout.tips.hashtag": "وسم", @@ -528,10 +527,10 @@ "search_results.statuses_fts_disabled": "البحث عن المنشورات عن طريق المحتوى ليس مفعل في خادم ماستدون هذا.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, zero {} one {نتيجة} two {نتيجتين} few {نتائج} many {نتائج} other {نتائج}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.about_active_users": "الأشخاص الذين يستخدمون هذا الخادم خلال الأيام الثلاثين الأخيرة (المستخدمون النشطون شهريًا)", "server_banner.active_users": "مستخدم نشط", "server_banner.administered_by": "يُديره:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.introduction": "{domain} هو جزء من الشبكة الاجتماعية اللامركزية المدعومة من {mastodon}.", "server_banner.learn_more": "تعلم المزيد", "server_banner.server_stats": "إحصائيات الخادم:", "sign_in_banner.create_account": "أنشئ حسابًا", @@ -573,7 +572,7 @@ "status.reblogs.empty": "لم يقم أي أحد بمشاركة هذا المنشور بعد. عندما يقوم أحدهم بذلك سوف يظهر هنا.", "status.redraft": "إزالة و إعادة الصياغة", "status.remove_bookmark": "احذفه مِن الفواصل المرجعية", - "status.replied_to": "Replied to {name}", + "status.replied_to": "رَدًا على {name}", "status.reply": "ردّ", "status.replyAll": "رُد على الخيط", "status.report": "ابلِغ عن @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "توسيع الكل", "status.show_original": "إظهار الأصل", "status.translate": "ترجم", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "مترجم من {lang} باستخدام {provider}", "status.uncached_media_warning": "غير متوفر", "status.unmute_conversation": "فك الكتم عن المحادثة", "status.unpin": "فك التدبيس من الصفحة التعريفية", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "جار إعداد OCR (تعرف ضوئي على الرموز)…", "upload_modal.preview_label": "معاينة ({ratio})", "upload_progress.label": "يرفع...", + "upload_progress.processing": "Processing…", "video.close": "إغلاق الفيديو", "video.download": "تنزيل الملف", "video.exit_fullscreen": "الخروج من وضع الشاشة المليئة", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 60d2008b5..603f85238 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -1,10 +1,11 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.domain_blocks.comment": "Motivu", + "about.domain_blocks.domain": "Dominiu", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", + "about.domain_blocks.severity": "Gravedá", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -13,17 +14,17 @@ "about.powered_by": "Decentralized social media powered by {mastodon}", "about.rules": "Server rules", "account.account_note_header": "Note", - "account.add_or_remove_from_list": "Amestar o desaniciar de les llistes", + "account.add_or_remove_from_list": "Add or Remove from lists", "account.badges.bot": "Robó", "account.badges.group": "Grupu", "account.block": "Bloquiar a @{name}", - "account.block_domain": "Anubrir tolo de {domain}", - "account.blocked": "Bloquiada", + "account.block_domain": "Block domain {domain}", + "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Browse more on the original profile", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "Unviar un mensaxe direutu a @{name}", + "account.direct": "Direct message @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", - "account.domain_blocked": "Dominiu anubríu", + "account.domain_blocked": "Domain blocked", "account.edit_profile": "Editar el perfil", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Destacar nel perfil", @@ -49,7 +50,7 @@ "account.mute": "Silenciar a @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", - "account.posts": "Barritos", + "account.posts": "Artículos", "account.posts_with_replies": "Artículos y rempuestes", "account.report": "Report @{name}", "account.requested": "Esperando pola aprobación. Calca pa encaboxar la solicitú de siguimientu", @@ -72,7 +73,7 @@ "admin.dashboard.retention.cohort_size": "Usuarios nuevos", "alert.rate_limited.message": "Volvi tentalo dempués de la hora: {retry_time, time, medium}.", "alert.rate_limited.title": "Rate limited", - "alert.unexpected.message": "Asocedió un fallu inesperáu.", + "alert.unexpected.message": "Prodúxose un error inesperáu.", "alert.unexpected.title": "¡Meca!", "announcement.announcement": "Anunciu", "attachments_list.unprocessed": "(ensin procesar)", @@ -91,7 +92,7 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Asocedió daqué malo mentanto se cargaba esti componente.", "bundle_modal_error.retry": "Try again", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations.other_server_instructions": "Darréu que Mastodon ye descentralizáu, pues crear una cuenta n'otru sirvidor y siguir interactuando con esti.", "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", "closed_registrations_modal.find_another_server": "Find another server", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", @@ -209,7 +210,7 @@ "empty_column.blocks": "Entá nun bloquiesti a nengún usuariu.", "empty_column.bookmarked_statuses": "Entá nun tienes nengún barritu en Marcadores. Cuando amiestes unu, va amosase equí.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "Entá nun tienes nengún mensaxe direutu. Cuando unvies o recibas dalgún, apaecen equí.", + "empty_column.direct": "Entá nun tienes nengún mensaxe direutu. Cuando unvies o recibas dalgún, va apaecer equí.", "empty_column.domain_blocks": "Entá nun hai dominios anubríos.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Entá nun tienes nengún barritu en Favoritos. Cuando amiestes unu, va amosase equí.", @@ -225,7 +226,7 @@ "empty_column.notifications": "You don't have any notifications yet. When other people interact with you, you will see it here.", "empty_column.public": "¡Equí nun hai nada! Escribi daqué público o sigui a usuarios d'otros sirvidores pa rellenar esto", "error.unexpected_crash.explanation": "Pola mor d'un fallu nel códigu o un problema de compatibilidá del restolador, esta páxina nun se pudo amosar correutamente.", - "error.unexpected_crash.explanation_addons": "Esta páxina nun se pudo amosar correutamente. Ye probable que dalgún complementu del restolador o dalguna ferramienta de traducción automática produxere esti fallu.", + "error.unexpected_crash.explanation_addons": "Esta páxina nun se pudo amosar correutamente. Ye probable que dalgún complementu del restolador o dalguna ferramienta de traducción automática produxere esti error.", "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Refugar", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentación", - "getting_started.free_software_notice": "Mastodon ye software llibre y de códigu abiertu. Pues ver el códigu fonte, collaborar ya informar de fallos en {repository}.", "getting_started.heading": "Entamu", - "getting_started.invite": "Convidar a persones", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Axustes de la cuenta", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "y {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "ensin {additional}", @@ -347,7 +348,7 @@ "lists.new.create": "Add list", "lists.new.title_placeholder": "Títulu nuevu de la llista", "lists.replies_policy.followed": "Any followed user", - "lists.replies_policy.list": "Members of the list", + "lists.replies_policy.list": "Miembros de la llista", "lists.replies_policy.none": "No one", "lists.replies_policy.title": "Show replies to:", "lists.search": "Buscar ente la xente que sigues", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "¿Anubrir los avisos d'esti usuariu?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Usuarios bloquiaos", "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Llinia temporal llocal", @@ -375,13 +375,11 @@ "navigation_bar.filters": "Pallabres silenciaes", "navigation_bar.follow_requests": "Solicitúes de siguimientu", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Atayos", "navigation_bar.lists": "Llistes", - "navigation_bar.logout": "Zarrar sesión", + "navigation_bar.logout": "Zarrar la sesión", "navigation_bar.mutes": "Usuarios silenciaos", "navigation_bar.personal": "Personal", - "navigation_bar.pins": "Barritos fixaos", + "navigation_bar.pins": "Artículos fixaos", "navigation_bar.preferences": "Preferencies", "navigation_bar.public_timeline": "Llinia temporal federada", "navigation_bar.search": "Search", @@ -446,9 +444,9 @@ "poll_button.add_poll": "Amestar una encuesta", "poll_button.remove_poll": "Quitar la encuesta", "privacy.change": "Adjust status privacy", - "privacy.direct.long": "Post to mentioned users only", + "privacy.direct.long": "Visible for mentioned users only", "privacy.direct.short": "Direct", - "privacy.private.long": "Post to followers only", + "privacy.private.long": "Visible for followers only", "privacy.private.short": "Followers-only", "privacy.public.long": "Visible for all", "privacy.public.short": "Public", @@ -471,25 +469,25 @@ "relative_time.seconds": "{number} s", "relative_time.today": "güei", "reply_indicator.cancel": "Encaboxar", - "report.block": "Block", + "report.block": "Bloquiar", "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", - "report.category.subtitle": "Choose the best match", - "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", - "report.category.title_status": "post", - "report.close": "Done", - "report.comment.title": "Is there anything else you think we should know?", - "report.forward": "Forward to {target}", - "report.forward_hint": "La cuenta ye d'otru sirvidor. ¿Quies unviar ellí tamién una copia anónima del informe?", + "report.categories.violation": "El conteníu incumple una o más regles del sirvidor", + "report.category.subtitle": "Escueyi la meyor opción", + "report.category.title": "Dinos qué pasa con esti {type}", + "report.category.title_account": "perfil", + "report.category.title_status": "artículu", + "report.close": "Fecho", + "report.comment.title": "¿Hai daqué más qu'habríemos saber?", + "report.forward": "Reunviar a {target}", + "report.forward_hint": "La cuenta ye d'otru sirvidor. ¿Quies unviar a esi sirvidor una copia anónima del informe?", "report.mute": "Mute", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", "report.next": "Siguiente", "report.placeholder": "Comentarios adicionales", "report.reasons.dislike": "I don't like it", - "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.dislike_description": "Nun ye daqué que quiera ver", "report.reasons.other": "Ye daqué más", "report.reasons.other_description": "La incidencia nun s'axusta a les demás categoríes", "report.reasons.spam": "Ye spam", @@ -502,7 +500,7 @@ "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Unviar", "report.target": "Report {target}", - "report.thanks.take_action": "Equí tan les opciones pa controlar qué ver en Mastodon:", + "report.thanks.take_action": "Equí tienes les opciones pa controlar qué ves en Mastodon:", "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", "report.thanks.title": "Don't want to see this?", "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Buscar", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Formatu de gueta avanzada", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "etiqueta", @@ -611,9 +610,9 @@ "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "En tendencia", "ui.beforeunload": "El borrador va perdese si coles de Mastodon.", - "units.short.billion": "{count} B", + "units.short.billion": "{count} MM", "units.short.million": "{count} M", - "units.short.thousand": "{count} K", + "units.short.thousand": "{count} mil", "upload_area.title": "Arrastra y suelta pa xubir", "upload_button.label": "Add images, a video or an audio file", "upload_error.limit": "File upload limit exceeded.", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Previsualización ({ratio})", "upload_progress.label": "Xubiendo…", + "upload_progress.processing": "Processing…", "video.close": "Zarrar el videu", "video.download": "Download file", "video.exit_fullscreen": "Colar de la pantalla completa", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index aa67edfd2..d1f32ed7f 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -1,8 +1,9 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.blocks": "Модерирани сървъри", + "about.contact": "За контакти:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.domain_blocks.comment": "Причина", + "about.domain_blocks.domain": "Домейн", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", @@ -91,7 +92,7 @@ "bundle_modal_error.close": "Затваряне", "bundle_modal_error.message": "Нещо се обърка при зареждането на този компонент.", "bundle_modal_error.retry": "Опитайте отново", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations.other_server_instructions": "Поради това че Mastodon е децентрализиран, можеш да създадеш акаунт на друг сървър, от който можеш да комуникираш с този.", "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", "closed_registrations_modal.find_another_server": "Find another server", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", @@ -258,15 +259,15 @@ "follow_request.authorize": "Упълномощаване", "follow_request.reject": "Отхвърляне", "follow_requests.unlocked_explanation": "Въпреки че акаунтът ви не е заключен, служителите на {domain} помислиха, че може да искате да преглеждате ръчно заявките за последване на тези профили.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Запазено", - "getting_started.directory": "Directory", - "getting_started.documentation": "Документация", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Първи стъпки", - "getting_started.invite": "Поканване на хора", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Security", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "и {additional}", "hashtag.column_header.tag_mode.any": "или {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Скриване на известия от този потребител?", "mute_modal.indefinite": "Неопределено", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Блокирани потребители", "navigation_bar.bookmarks": "Отметки", "navigation_bar.community_timeline": "Локална емисия", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Заглушени думи", "navigation_bar.follow_requests": "Заявки за последване", "navigation_bar.follows_and_followers": "Последвания и последователи", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", "navigation_bar.lists": "Списъци", "navigation_bar.logout": "Излизане", "navigation_bar.mutes": "Заглушени потребители", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Търсене", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Формат за разширено търсене", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "хаштаг", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Подготване на ОРС…", "upload_modal.preview_label": "Визуализация ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Затваряне на видео", "video.download": "Изтегляне на файл", "video.exit_fullscreen": "Изход от цял екран", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index c793cac6f..092cd2dfc 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "অনুমতি দিন", "follow_request.reject": "প্রত্যাখ্যান করুন", "follow_requests.unlocked_explanation": "আপনার অ্যাকাউন্টটি লক না থাকলেও, {domain} কর্মীরা ভেবেছিলেন যে আপনি এই অ্যাকাউন্টগুলি থেকে ম্যানুয়ালি অনুসরণের অনুরোধগুলি পর্যালোচনা করতে চাইতে পারেন।", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "সংরক্ষণ হয়েছে", - "getting_started.directory": "Directory", - "getting_started.documentation": "নথিপত্র", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "শুরু করা", - "getting_started.invite": "অন্যদের আমন্ত্রণ করুন", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "নিরাপত্তা", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "এবং {additional}", "hashtag.column_header.tag_mode.any": "অথবা {additional}", "hashtag.column_header.tag_mode.none": "বাদ দিয়ে {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "এই ব্যবহারকারীর প্রজ্ঞাপন বন্ধ করবেন ?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "বন্ধ করা ব্যবহারকারী", "navigation_bar.bookmarks": "বুকমার্ক", "navigation_bar.community_timeline": "স্থানীয় সময়রেখা", @@ -375,8 +375,6 @@ "navigation_bar.filters": "বন্ধ করা শব্দ", "navigation_bar.follow_requests": "অনুসরণের অনুরোধগুলি", "navigation_bar.follows_and_followers": "অনুসরণ এবং অনুসরণকারী", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "হটকীগুলি", "navigation_bar.lists": "তালিকাগুলো", "navigation_bar.logout": "বাইরে যান", "navigation_bar.mutes": "যাদের কার্যক্রম দেখা বন্ধ আছে", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "অনুসন্ধান", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "বিস্তারিতভাবে খোঁজার পদ্ধতি", "search_popout.tips.full_text": "সাধারণ লেখা দিয়ে খুঁজলে বের হবে সেরকম আপনার লেখা, পছন্দের লেখা, সমর্থন করা লেখা, আপনাকে উল্লেখকরা কোনো লেখা, যা খুঁজছেন সেরকম কোনো ব্যবহারকারীর নাম বা কোনো হ্যাশট্যাগগুলো।", "search_popout.tips.hashtag": "হ্যাশট্যাগ", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "পূর্বরূপ({ratio})", "upload_progress.label": "যুক্ত করতে পাঠানো হচ্ছে...", + "upload_progress.processing": "Processing…", "video.close": "ভিডিওটি বন্ধ করতে", "video.download": "ফাইলটি ডাউনলোড করুন", "video.exit_fullscreen": "পূর্ণ পর্দা থেকে বাইরে বের হতে", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index 237f44329..f64f3df34 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -1,6 +1,7 @@ { "about.blocks": "Servijerioù habaskaet", "about.contact": "Darempred :", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Abeg", "about.domain_blocks.domain": "Domani", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Aotren", "follow_request.reject": "Nac'hañ", "follow_requests.unlocked_explanation": "Daoust ma n'eo ket ho kont prennet, skipailh {domain} a soñj e fellfe deoc'h gwiriekaat pedadennoù heuliañ deus ar c'hontoù-se diwar-zorn.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Enrollet", - "getting_started.directory": "Directory", - "getting_started.documentation": "Teuliadur", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Loc'hañ", - "getting_started.invite": "Pediñ tud", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Arventennoù ar gont", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "ha {additional}", "hashtag.column_header.tag_mode.any": "pe {additional}", "hashtag.column_header.tag_mode.none": "hep {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Kuzhat kemenadennoù eus an implijer-se ?", "mute_modal.indefinite": "Amstrizh", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Implijer·ezed·ien berzet", "navigation_bar.bookmarks": "Sinedoù", "navigation_bar.community_timeline": "Red-amzer lec'hel", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Gerioù kuzhet", "navigation_bar.follow_requests": "Pedadoù heuliañ", "navigation_bar.follows_and_followers": "Heuliadennoù ha heulier·ezed·ien", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Berradurioù", "navigation_bar.lists": "Listennoù", "navigation_bar.logout": "Digennaskañ", "navigation_bar.mutes": "Implijer·ion·ezed kuzhet", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Klask", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Framm klask araokaet", "search_popout.tips.full_text": "Testenn simpl a adkas toudoù skrivet ganeoc'h, merket ganeoc'h evel miuañ-karet, toudoù skignet, pe e-lec'h oc'h bet meneget, met ivez anvioù skrammañ, anvioù implijer ha gêrioù-klik hag a glot.", "search_popout.tips.hashtag": "ger-klik", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Oc'h aozañ OCR…", "upload_modal.preview_label": "Rakwel ({ratio})", "upload_progress.label": "O pellgargañ...", + "upload_progress.processing": "Processing…", "video.close": "Serriñ ar video", "video.download": "Pellgargañ ar restr", "video.exit_fullscreen": "Kuitaat ar mod skramm leun", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index c21e2c84d..ca8a29797 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -1,6 +1,7 @@ { "about.blocks": "Servidors moderats", "about.contact": "Contacte:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Motiu", "about.domain_blocks.domain": "Domini", "about.domain_blocks.preamble": "En general, Mastodon et permet veure el contingut i interaccionar amb els usuaris de qualsevol altre servidor del fedivers. Aquestes són les excepcions que s'han fet en aquest servidor particular.", @@ -39,7 +40,7 @@ "account.follows.empty": "Aquest usuari encara no segueix ningú.", "account.follows_you": "Et segueix", "account.hide_reblogs": "Amaga els impulsos de @{name}", - "account.joined_short": "Joined", + "account.joined_short": "S'ha unit", "account.languages": "Canviar les llengües subscrits", "account.link_verified_on": "La propietat d'aquest enllaç es va verificar el dia {date}", "account.locked_info": "Aquest estat de privadesa del compte està definit com a bloquejat. El propietari revisa manualment qui pot seguir-lo.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Tanca", "bundle_modal_error.message": "S'ha produït un error en carregar aquest component.", "bundle_modal_error.retry": "Tornar-ho a provar", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Donat que Mastodon és descentralitzat, pots crear un compte en un altre servidor i encara interactuar amb aquest.", + "closed_registrations_modal.description": "Crear un compte a {domain} no és possible ara mateix però, si us plau, tingues en compte que no necessites específicament un compte a {domain} per a usar Mastodon.", + "closed_registrations_modal.find_another_server": "Troba un altre servidor", + "closed_registrations_modal.preamble": "Mastodon és descentralitzat per tant no importa on tinguis el teu compte, seràs capaç de seguir i interactuar amb tothom des d'aquest servidor. Fins i tot pots tenir el compte en el teu propi servidor!", + "closed_registrations_modal.title": "Registrant-se a Mastodon", "column.about": "Quant a", "column.blocks": "Usuaris bloquejats", "column.bookmarks": "Marcadors", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autoritza", "follow_request.reject": "Rebutja", "follow_requests.unlocked_explanation": "Tot i que el teu compte no està bloquejat, el personal de {domain} ha pensat que és possible que vulguis revisar les sol·licituds de seguiment d’aquests comptes manualment.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Desat", - "getting_started.directory": "Directori", - "getting_started.documentation": "Documentació", - "getting_started.free_software_notice": "Mastodon és lliure, programari de codi obert. Pots veure el codi font, contribuir-hi o reportar-hi incidències a {repository}.", "getting_started.heading": "Primers passos", - "getting_started.invite": "Convidar gent", - "getting_started.privacy_policy": "Política de Privacitat", - "getting_started.security": "Configuració del compte", - "getting_started.what_is_mastodon": "Quant a Mastodon", "hashtag.column_header.tag_mode.all": "i {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sense {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Amagar les notificacions d'aquest usuari?", "mute_modal.indefinite": "Indefinit", "navigation_bar.about": "Quant a", - "navigation_bar.apps": "Aconsegueix l'app", "navigation_bar.blocks": "Usuaris bloquejats", "navigation_bar.bookmarks": "Marcadors", "navigation_bar.community_timeline": "Línia de temps local", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Paraules silenciades", "navigation_bar.follow_requests": "Sol·licituds de seguiment", "navigation_bar.follows_and_followers": "Seguits i seguidors", - "navigation_bar.info": "Quant a", - "navigation_bar.keyboard_shortcuts": "Dreceres de teclat", "navigation_bar.lists": "Llistes", "navigation_bar.logout": "Tancar sessió", "navigation_bar.mutes": "Usuaris silenciats", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Publicacions fixades", "navigation_bar.preferences": "Preferències", "navigation_bar.public_timeline": "Línia de temps federada", - "navigation_bar.search": "Search", + "navigation_bar.search": "Cerca", "navigation_bar.security": "Seguretat", "not_signed_in_indicator.not_signed_in": "Necessites registrar-te per a accedir aquest recurs.", "notification.admin.report": "{name} ha reportat {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Violació de norma", "report_notification.open": "Informe obert", "search.placeholder": "Cerca", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Format de cerca avançada", "search_popout.tips.full_text": "El text simple recupera publicacions que has escrit, marcat com a preferides, que has impulsat o on t'han esmentat, així com els usuaris, els noms d'usuaris i les etiquetes.", "search_popout.tips.hashtag": "etiqueta", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Encara ningú no ha impulsat aquesta publicació. Quan algú ho faci, apareixeran aquí.", "status.redraft": "Esborra-la i reescriure-la", "status.remove_bookmark": "Suprimeix el marcador", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Ha respòs a {name}", "status.reply": "Respon", "status.replyAll": "Respon al fil", "status.report": "Denuncia @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "Mostrar-ne més per a tot", "status.show_original": "Mostra l'original", "status.translate": "Tradueix", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Traduït des de {lang} usant {provider}", "status.uncached_media_warning": "No està disponible", "status.unmute_conversation": "No silenciïs la conversa", "status.unpin": "No fixis al perfil", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparant OCR…", "upload_modal.preview_label": "Previsualitza ({ratio})", "upload_progress.label": "Pujant...", + "upload_progress.processing": "Processing…", "video.close": "Tanca el vídeo", "video.download": "Descarrega l’arxiu", "video.exit_fullscreen": "Surt de la pantalla completa", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 06664597e..931e8758a 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "ده‌سه‌ڵاتپێدراو", "follow_request.reject": "ڕەتکردنەوە", "follow_requests.unlocked_explanation": "هەرچەندە هەژمارەکەت داخراو نییە، ستافی {domain} وا بیریان کردەوە کە لەوانەیە بتانەوێت پێداچوونەوە بە داواکاریەکانی ئەم هەژمارەدا بکەن بە دەستی.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "پاشکەوتکرا", - "getting_started.directory": "Directory", - "getting_started.documentation": "بەڵگەنامە", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "دەست پێکردن", - "getting_started.invite": "بانگهێشتکردنی خەڵک", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "ڕێکخستنەکانی هەژمارە", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "و {additional}", "hashtag.column_header.tag_mode.any": "یا {additional}", "hashtag.column_header.tag_mode.none": "بەبێ {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "شاردنەوەی ئاگانامەکان لەم بەکارهێنەرە؟ ", "mute_modal.indefinite": "نادیار", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "بەکارهێنەرە بلۆککراوەکان", "navigation_bar.bookmarks": "نیشانکراوەکان", "navigation_bar.community_timeline": "دەمنامەی ناوخۆیی", @@ -375,8 +375,6 @@ "navigation_bar.filters": "وشە کپەکان", "navigation_bar.follow_requests": "بەدواداچوی داواکاریەکان بکە", "navigation_bar.follows_and_followers": "شوێنکەوتوو و شوێنکەوتوان", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "هۆتکەی", "navigation_bar.lists": "لیستەکان", "navigation_bar.logout": "دەرچوون", "navigation_bar.mutes": "کپکردنی بەکارهێنەران", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "گەڕان", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "شێوەی گەڕانی پێشکەوتوو", "search_popout.tips.full_text": "گەڕانێکی دەقی سادە دەتوانێت توتەکانی ئێوە کە، نووسیوتانە،پەسەنتان کردووە، دووبارەتانکردووە، یان ئەو توتانە کە باسی ئێوەی تێدا کراوە پەیدا دەکا. هەروەها ناوی بەکارهێنەران، ناوی پیشاندراو و هەشتەگەکانیش لە خۆ دەگرێت.", "search_popout.tips.hashtag": "هەشتاگ", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "نووسینەکە دەستنیشان دەکرێت…", "upload_modal.preview_label": "پێشبینین ({ratio})", "upload_progress.label": "بار دەکرێت...", + "upload_progress.processing": "Processing…", "video.close": "داخستنی ڤیدیۆ", "video.download": "داگرتنی فایل", "video.exit_fullscreen": "دەرچوون لە پڕ شاشە", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 4be800665..322b533c1 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Auturizà", "follow_request.reject": "Righjittà", "follow_requests.unlocked_explanation": "U vostru contu ùn hè micca privatu, ma a squadra d'amministrazione di {domain} pensa chì e dumande d'abbunamentu di questi conti anu bisognu d'esse verificate manualmente.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Salvatu", - "getting_started.directory": "Directory", - "getting_started.documentation": "Ducumentazione", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Per principià", - "getting_started.invite": "Invità ghjente", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Sicurità", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "è {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "senza {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Piattà nutificazione da st'utilizatore?", "mute_modal.indefinite": "Indifinita", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Utilizatori bluccati", "navigation_bar.bookmarks": "Segnalibri", "navigation_bar.community_timeline": "Linea pubblica lucale", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Parolle silenzate", "navigation_bar.follow_requests": "Dumande d'abbunamentu", "navigation_bar.follows_and_followers": "Abbunati è abbunamenti", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Accorte cù a tastera", "navigation_bar.lists": "Liste", "navigation_bar.logout": "Scunnettassi", "navigation_bar.mutes": "Utilizatori piattati", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Circà", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Ricerca avanzata", "search_popout.tips.full_text": "I testi simplici rimandanu i statuti ch'avete scritti, aghjunti à i vostri favuriti, spartuti o induve quelli site mintuvatu·a, è ancu i cugnomi, nomi pubblichi è hashtag chì currispondenu.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Priparazione di l'OCR…", "upload_modal.preview_label": "Vista ({ratio})", "upload_progress.label": "Caricamentu...", + "upload_progress.processing": "Processing…", "video.close": "Chjudà a video", "video.download": "Scaricà fugliale", "video.exit_fullscreen": "Caccià u pienu screnu", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 5ccbf73dc..ed0b7b0b1 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderované servery", "about.contact": "Kontakt:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Důvod", "about.domain_blocks.domain": "Doména", "about.domain_blocks.preamble": "Mastodon vám obecně umožňuje prohlížet obsah a komunikovat s uživateli z jakéhokoliv jiného serveru ve fediveru. Toto jsou výjimky, které byly uděleny na tomto konkrétním serveru.", @@ -39,7 +40,7 @@ "account.follows.empty": "Tento uživatel ještě nikoho nesleduje.", "account.follows_you": "Sleduje vás", "account.hide_reblogs": "Skrýt boosty od @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Připojen/a", "account.languages": "Změnit odebírané jazyky", "account.link_verified_on": "Vlastnictví tohoto odkazu bylo zkontrolováno {date}", "account.locked_info": "Stav soukromí tohoto účtu je nastaven na zamčeno. Jeho vlastník ručně posuzuje, kdo ho může sledovat.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Zavřít", "bundle_modal_error.message": "Při načítání této komponenty se něco pokazilo.", "bundle_modal_error.retry": "Zkusit znovu", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Protože je Mastodon decentralizovaný, můžete si vytvořit účet na jiném serveru a stále s tímto serverem komunikovat.", + "closed_registrations_modal.description": "V současné době není možné vytvořit účet na {domain} ale mějte prosím na paměti, že k používání Mastodonu nepotřebujete účet konkrétně na {domain}.", + "closed_registrations_modal.find_another_server": "Najít jiný server", + "closed_registrations_modal.preamble": "Mastodon je decentralizovaný, takže bez ohledu na to, kde vytvoříte svůj účet, budete moci sledovat a komunikovat s kýmkoli na tomto serveru. Můžete ho dokonce hostit!", + "closed_registrations_modal.title": "Registrace na Mastodonu", "column.about": "O aplikaci", "column.blocks": "Blokovaní uživatelé", "column.bookmarks": "Záložky", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autorizovat", "follow_request.reject": "Odmítnout", "follow_requests.unlocked_explanation": "Přestože váš účet není uzamčen, personál {domain} usoudil, že byste mohli chtít tyto požadavky na sledování zkontrolovat ručně.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Uloženo", - "getting_started.directory": "Adresář", - "getting_started.documentation": "Dokumentace", - "getting_started.free_software_notice": "Mastodon je svobodný software s otevřeným zdrojovým kódem. Zdrojový kód si můžete prohlédnout, přispět do něj nebo nahlásit problémy na {repository}.", "getting_started.heading": "Začínáme", - "getting_started.invite": "Pozvat lidi", - "getting_started.privacy_policy": "Zásady ochrany osobních údajů", - "getting_started.security": "Nastavení účtu", - "getting_started.what_is_mastodon": "O Mastodon", "hashtag.column_header.tag_mode.all": "a {additional}", "hashtag.column_header.tag_mode.any": "nebo {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Skrýt oznámení od tohoto uživatele?", "mute_modal.indefinite": "Neomezeně", "navigation_bar.about": "O aplikaci", - "navigation_bar.apps": "Stáhnout aplikaci", "navigation_bar.blocks": "Blokovaní uživatelé", "navigation_bar.bookmarks": "Záložky", "navigation_bar.community_timeline": "Místní časová osa", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Skrytá slova", "navigation_bar.follow_requests": "Žádosti o sledování", "navigation_bar.follows_and_followers": "Sledovaní a sledující", - "navigation_bar.info": "O aplikaci", - "navigation_bar.keyboard_shortcuts": "Klávesové zkratky", "navigation_bar.lists": "Seznamy", "navigation_bar.logout": "Odhlásit", "navigation_bar.mutes": "Skrytí uživatelé", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Připnuté příspěvky", "navigation_bar.preferences": "Předvolby", "navigation_bar.public_timeline": "Federovaná časová osa", - "navigation_bar.search": "Search", + "navigation_bar.search": "Hledat", "navigation_bar.security": "Zabezpečení", "not_signed_in_indicator.not_signed_in": "Pro přístup k tomuto zdroji se musíte přihlásit.", "notification.admin.report": "Uživatel {name} nahlásil {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Porušení pravidla", "report_notification.open": "Otevřít hlášení", "search.placeholder": "Hledat", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Pokročilé hledání", "search_popout.tips.full_text": "Jednoduchý text vrací příspěvky, které jste napsali, oblíbili si, boostnuli, nebo vás v nich někdo zmínil, a také odpovídající přezdívky, zobrazovaná jména a hashtagy.", "search_popout.tips.hashtag": "hashtag", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Tento příspěvek ještě nikdo neboostnul. Pokud to někdo udělá, zobrazí se zde.", "status.redraft": "Smazat a přepsat", "status.remove_bookmark": "Odstranit ze záložek", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Odpověděl uživateli {name}", "status.reply": "Odpovědět", "status.replyAll": "Odpovědět na vlákno", "status.report": "Nahlásit @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "Zobrazit více pro všechny", "status.show_original": "Zobrazit původní", "status.translate": "Přeložit", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Přeloženo z {lang} pomocí {provider}", "status.uncached_media_warning": "Nedostupné", "status.unmute_conversation": "Odkrýt konverzaci", "status.unpin": "Odepnout z profilu", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Příprava OCR…", "upload_modal.preview_label": "Náhled ({ratio})", "upload_progress.label": "Nahrávání…", + "upload_progress.processing": "Processing…", "video.close": "Zavřít video", "video.download": "Stáhnout soubor", "video.exit_fullscreen": "Ukončit režim celé obrazovky", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 7b5387fa1..4860ecbbe 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Caniatau", "follow_request.reject": "Gwrthod", "follow_requests.unlocked_explanation": "Er nid yw eich cyfrif wedi'i gloi, oedd y staff {domain} yn meddwl efallai hoffech adolygu ceisiadau dilyn o'r cyfrifau rhain wrth law.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Wedi'i Gadw", - "getting_started.directory": "Directory", - "getting_started.documentation": "Dogfennaeth", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Dechrau", - "getting_started.invite": "Gwahodd pobl", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Diogelwch", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "a {additional}", "hashtag.column_header.tag_mode.any": "neu {additional}", "hashtag.column_header.tag_mode.none": "heb {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Cuddio hysbysiadau rhag y defnyddiwr hwn?", "mute_modal.indefinite": "Amhenodol", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Defnyddwyr wedi eu blocio", "navigation_bar.bookmarks": "Tudalnodau", "navigation_bar.community_timeline": "Ffrwd leol", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Geiriau a dawelwyd", "navigation_bar.follow_requests": "Ceisiadau dilyn", "navigation_bar.follows_and_followers": "Dilynion a ddilynwyr", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Bysellau brys", "navigation_bar.lists": "Rhestrau", "navigation_bar.logout": "Allgofnodi", "navigation_bar.mutes": "Defnyddwyr a dawelwyd", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Chwilio", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Fformat chwilio uwch", "search_popout.tips.full_text": "Mae testun syml yn dychwelyd postiadau yr ydych wedi ysgrifennu, hoffi, wedi'u hybio, neu wedi'ch crybwyll ynddynt, ynghyd a chyfateb a enwau defnyddwyr, enwau arddangos ac hashnodau.", "search_popout.tips.hashtag": "hashnod", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Paratoi OCR…", "upload_modal.preview_label": "Rhagolwg ({ratio})", "upload_progress.label": "Uwchlwytho...", + "upload_progress.processing": "Processing…", "video.close": "Cau fideo", "video.download": "Lawrlwytho ffeil", "video.exit_fullscreen": "Gadael sgrîn llawn", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index b62d99297..6b832c722 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -1,6 +1,7 @@ { "about.blocks": "Modererede servere", "about.contact": "Kontakt:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Årsag", "about.domain_blocks.domain": "Domæne", "about.domain_blocks.preamble": "Mastodon tillader generelt, at man ser indhold og interagere med brugere fra enhver anden server i fediverset. Disse er undtagelserne, som er implementeret på netop denne server.", @@ -39,7 +40,7 @@ "account.follows.empty": "Denne bruger følger ikke nogen endnu.", "account.follows_you": "Følger dig", "account.hide_reblogs": "Skjul boosts fra @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Oprettet", "account.languages": "Skift abonnementssprog", "account.link_verified_on": "Ejerskab af dette link blev tjekket {date}", "account.locked_info": "Denne kontos fortrolighedsstatus er sat til låst. Ejeren bedømmer manuelt, hvem der kan følge vedkommende.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Luk", "bundle_modal_error.message": "Noget gik galt under indlæsningen af denne komponent.", "bundle_modal_error.retry": "Forsøg igen", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Da Mastodon er decentraliseret, kan du oprette en konto på en anden server og stadig interagere med denne.", + "closed_registrations_modal.description": "Oprettelse af en konto på {domain} er i øjeblikket ikke muligt, men husk på, at du ikke behøver en konto specifikt på {domain} for at bruge Mastodon.", + "closed_registrations_modal.find_another_server": "Find en anden server", + "closed_registrations_modal.preamble": "Mastodon er decentraliseret, så uanset hvor du opretter din konto, vil du være i stand til at følge og interagere med nogen på denne server. Du kan endda selv være vært for den!", + "closed_registrations_modal.title": "Oprettelse på Mastodon", "column.about": "Om", "column.blocks": "Blokerede brugere", "column.bookmarks": "Bogmærker", @@ -258,15 +259,15 @@ "follow_request.authorize": "Godkend", "follow_request.reject": "Afvis", "follow_requests.unlocked_explanation": "Selvom din konto ikke er låst, antog {domain}-personalet, at du måske vil gennemgå dine anmodninger manuelt.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Gemt", - "getting_started.directory": "Mappe", - "getting_started.documentation": "Dokumentation", - "getting_started.free_software_notice": "Mastodon er gratis, open-source software. Kildekoden kan ses, bidrages til eller problemer kan indrapporteres på {repository}.", "getting_started.heading": "Startmenu", - "getting_started.invite": "Invitér folk", - "getting_started.privacy_policy": "Fortrolighedspolitik", - "getting_started.security": "Kontoindstillinger", - "getting_started.what_is_mastodon": "Om Mastodon", "hashtag.column_header.tag_mode.all": "og {additional}", "hashtag.column_header.tag_mode.any": "eller {additional}", "hashtag.column_header.tag_mode.none": "uden {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Skjul notifikationer fra denne bruger?", "mute_modal.indefinite": "Tidsubegrænset", "navigation_bar.about": "Om", - "navigation_bar.apps": "Hent appen", "navigation_bar.blocks": "Blokerede brugere", "navigation_bar.bookmarks": "Bogmærker", "navigation_bar.community_timeline": "Lokal tidslinje", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Tavsgjorte ord", "navigation_bar.follow_requests": "Følgeanmodninger", "navigation_bar.follows_and_followers": "Følges og følgere", - "navigation_bar.info": "Om", - "navigation_bar.keyboard_shortcuts": "Genvejstaster", "navigation_bar.lists": "Lister", "navigation_bar.logout": "Log af", "navigation_bar.mutes": "Tavsgjorte brugere", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Fastgjorte indlæg", "navigation_bar.preferences": "Præferencer", "navigation_bar.public_timeline": "Fælles tidslinje", - "navigation_bar.search": "Search", + "navigation_bar.search": "Søg", "navigation_bar.security": "Sikkerhed", "not_signed_in_indicator.not_signed_in": "Man skal logge ind for at tilgå denne ressource.", "notification.admin.report": "{name} anmeldte {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Regelovertrædelse", "report_notification.open": "Åbn anmeldelse", "search.placeholder": "Søg", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Avanceret søgeformat", "search_popout.tips.full_text": "Simpel tekst returnerer indlæg, du har skrevet, favoritmarkeret, boostet eller som er nævnt i/matcher bruger- og profilnavne samt hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Ingen har endnu boostet dette indlæg. Når nogen gør, vil det fremgå hér.", "status.redraft": "Slet og omformulér", "status.remove_bookmark": "Fjern bogmærke", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Besvarede {name}", "status.reply": "Besvar", "status.replyAll": "Besvar alle", "status.report": "Anmeld @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "Vis mere for alle", "status.show_original": "Vis original", "status.translate": "Oversæt", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Oversat fra {lang} ved brug af {provider}", "status.uncached_media_warning": "Utilgængelig", "status.unmute_conversation": "Genaktivér samtale", "status.unpin": "Frigør fra profil", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Klargør OCR…", "upload_modal.preview_label": "Forhåndsvisning ({ratio})", "upload_progress.label": "Uploader...", + "upload_progress.processing": "Processing…", "video.close": "Luk video", "video.download": "Download fil", "video.exit_fullscreen": "Forlad fuldskærm", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index c0f385b66..52918f333 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -1,16 +1,17 @@ { "about.blocks": "Moderierte Server", "about.contact": "Kontakt:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Begründung", "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon erlaubt es dir generell, mit Inhalten zu interagieren, diese anzuzeigen und mit anderen Nutzern im Fediversum über Server hinweg zu interagieren. Dies sind die Ausnahmen, die auf diesem bestimmten Server gemacht wurden.", + "about.domain_blocks.preamble": "Mastodon erlaubt es dir grundsätzlich, alle Inhalte von allen Nutzer*innen auf allen Servern im Fediversum zu sehen und mit ihnen zu interagieren. Für diese Instanz gibt es aber ein paar Ausnahmen.", "about.domain_blocks.severity": "Schweregrad", - "about.domain_blocks.silenced.explanation": "In der Regel werden Sie keine Profile und Inhalte von diesem Server sehen, es sei denn, Sie suchen explizit danach oder entscheiden sich für diesen Server, indem Sie ihm folgen.", + "about.domain_blocks.silenced.explanation": "Alle Inhalte dieses Servers sind stumm geschaltet und werden zunächst nicht angezeigt. Du kannst die Profile und anderen Inhalte aber dennoch manuell aufrufen – oder Du folgst einer Person dieser Mastodon-Instanz.", "about.domain_blocks.silenced.title": "Limitiert", - "about.domain_blocks.suspended.explanation": "Es werden keine Daten von diesem Server verarbeitet, gespeichert oder ausgetauscht, so dass eine Interaktion oder Kommunikation mit Nutzern dieses Servers nicht möglich ist.", + "about.domain_blocks.suspended.explanation": "Es werden keine Daten von diesem Server verarbeitet, gespeichert oder ausgetauscht, sodass eine Interaktion oder Kommunikation mit Nutzer*innen dieses Servers nicht möglich ist.", "about.domain_blocks.suspended.title": "Gesperrt", "about.not_available": "Diese Informationen sind auf diesem Server nicht verfügbar.", - "about.powered_by": "Dezentrale soziale Medien betrieben von {mastodon}", + "about.powered_by": "Ein dezentralisiertes soziales Netzwerk, angetrieben von {mastodon}", "about.rules": "Serverregeln", "account.account_note_header": "Notiz", "account.add_or_remove_from_list": "Hinzufügen oder Entfernen von Listen", @@ -20,31 +21,31 @@ "account.block_domain": "Alles von {domain} verstecken", "account.blocked": "Blockiert", "account.browse_more_on_origin_server": "Mehr auf dem Originalprofil durchsuchen", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Folgeanfrage abbrechen", "account.direct": "Direktnachricht an @{name}", "account.disable_notifications": "Höre auf mich zu benachrichtigen wenn @{name} etwas postet", "account.domain_blocked": "Domain versteckt", "account.edit_profile": "Profil bearbeiten", "account.enable_notifications": "Benachrichtige mich wenn @{name} etwas postet", - "account.endorse": "Auf Profil hervorheben", + "account.endorse": "Account in meinem Profil empfehlen", "account.featured_tags.last_status_at": "Letzter Beitrag am {date}", "account.featured_tags.last_status_never": "Keine Beiträge", - "account.featured_tags.title": "{name}'s vorgestellte Hashtags", + "account.featured_tags.title": "Von {name} vorgestellte Hashtags", "account.follow": "Folgen", "account.followers": "Follower", "account.followers.empty": "Diesem Profil folgt noch niemand.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Follower}}", - "account.following": "Folgt", + "account.following": "Folge ich", "account.following_counter": "{count, plural, one {{counter} Folgt} other {{counter} Folgt}}", - "account.follows.empty": "Diesem Profil folgt niemand", + "account.follows.empty": "Dieses Profil folgt noch niemandem.", "account.follows_you": "Folgt dir", "account.hide_reblogs": "Geteilte Beiträge von @{name} verbergen", - "account.joined_short": "Joined", + "account.joined_short": "Beigetreten", "account.languages": "Abonnierte Sprachen ändern", - "account.link_verified_on": "Diesem Profil folgt niemand", + "account.link_verified_on": "Das Profil mit dieser E-Mail-Adresse wurde bereits am {date} bestätigt", "account.locked_info": "Der Privatsphärenstatus dieses Accounts wurde auf „gesperrt“ gesetzt. Die Person bestimmt manuell, wer ihm/ihr folgen darf.", "account.media": "Medien", - "account.mention": "@{name} erwähnen", + "account.mention": "@{name} im Beitrag erwähnen", "account.moved_to": "{name} ist umgezogen nach:", "account.mute": "@{name} stummschalten", "account.mute_notifications": "Benachrichtigungen von @{name} stummschalten", @@ -52,65 +53,65 @@ "account.posts": "Beiträge", "account.posts_with_replies": "Beiträge und Antworten", "account.report": "@{name} melden", - "account.requested": "Warte auf Erlaubnis. Klicke zum Abbrechen", + "account.requested": "Warte auf Genehmigung. Klicke hier, um die Anfrage zum Folgen abzubrechen", "account.share": "Profil von @{name} teilen", - "account.show_reblogs": "Von @{name} geteilte Beiträge anzeigen", + "account.show_reblogs": "Geteilte Beiträge von @{name} wieder anzeigen", "account.statuses_counter": "{count, plural, one {{counter} Beitrag} other {{counter} Beiträge}}", - "account.unblock": "Blockierung von @{name} aufheben", - "account.unblock_domain": "{domain} wieder anzeigen", + "account.unblock": "@{name} entblocken", + "account.unblock_domain": "Entblocken von {domain}", "account.unblock_short": "Blockierung aufheben", - "account.unendorse": "Nicht mehr im Profil anzeigen", + "account.unendorse": "Account nicht länger in meinem Profil empfehlen", "account.unfollow": "Entfolgen", "account.unmute": "Stummschaltung von @{name} aufheben", - "account.unmute_notifications": "Benachrichtigungen von @{name} einschalten", + "account.unmute_notifications": "Stummschaltung der Benachrichtigungen von @{name} aufheben", "account.unmute_short": "Stummschaltung aufheben", "account_note.placeholder": "Notiz durch Klicken hinzufügen", "admin.dashboard.daily_retention": "Benutzerverbleibrate nach Tag nach Anmeldung", "admin.dashboard.monthly_retention": "Benutzerverbleibrate nach Monat nach Anmeldung", "admin.dashboard.retention.average": "Durchschnitt", - "admin.dashboard.retention.cohort": "Monat der Anmeldung", + "admin.dashboard.retention.cohort": "Monat der Registrierung", "admin.dashboard.retention.cohort_size": "Neue Benutzer", "alert.rate_limited.message": "Bitte versuche es nach {retry_time, time, medium} erneut.", "alert.rate_limited.title": "Anfragelimit überschritten", "alert.unexpected.message": "Ein unerwarteter Fehler ist aufgetreten.", - "alert.unexpected.title": "Hoppla!", + "alert.unexpected.title": "Ups!", "announcement.announcement": "Ankündigung", "attachments_list.unprocessed": "(ausstehend)", "audio.hide": "Audio stummschalten", "autosuggest_hashtag.per_week": "{count} pro Woche", - "boost_modal.combo": "Drücke {combo}, um dieses Fenster zu überspringen", + "boost_modal.combo": "Mit {combo} wird dieses Fenster beim nächsten Mal nicht mehr angezeigt", "bundle_column_error.copy_stacktrace": "Fehlerbericht kopieren", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.body": "Die angeforderte Seite konnte nicht dargestellt werden. Dies könnte auf einen Fehler in unserem Code oder auf ein Browser-Kompatibilitätsproblem zurückzuführen sein.", "bundle_column_error.error.title": "Oh nein!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.body": "Beim Versuch, diese Seite zu laden, ist ein Fehler aufgetreten. Dies könnte auf ein vorübergehendes Problem mit Ihrer Internetverbindung oder diesem Server zurückzuführen sein.", "bundle_column_error.network.title": "Netzwerkfehler", "bundle_column_error.retry": "Erneut versuchen", "bundle_column_error.return": "Zurück zur Startseite", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.body": "Die angeforderte Seite konnte nicht gefunden werden. Sind Sie sicher, dass die URL in der Adressleiste korrekt ist?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Schließen", "bundle_modal_error.message": "Etwas ist beim Laden schiefgelaufen.", "bundle_modal_error.retry": "Erneut versuchen", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Da Mastodon dezentralisiert ist, können Sie ein Konto auf einem anderen Server erstellen und trotzdem mit diesem Server interagieren.", + "closed_registrations_modal.description": "Das Anlegen eines Kontos auf {domain} ist derzeit nicht möglich, aber bedenken Sie bitte, dass Sie kein spezielles Konto auf {domain} benötigen, um Mastodon nutzen zu können.", + "closed_registrations_modal.find_another_server": "Einen anderen Server auswählen", + "closed_registrations_modal.preamble": "Mastodon ist dezentralisiert, d.h. unabhängig davon, wo Sie Ihr Konto erstellen, können Sie jedem auf diesem Server folgen und mit ihm interagieren. Sie können ihn sogar selbst hosten!", + "closed_registrations_modal.title": "Bei Mastodon registrieren", "column.about": "Über", "column.blocks": "Blockierte Profile", "column.bookmarks": "Lesezeichen", - "column.community": "Lokale Zeitleiste", + "column.community": "Lokale Timeline", "column.direct": "Direktnachrichten", "column.directory": "Profile durchsuchen", "column.domain_blocks": "Blockierte Domains", "column.favourites": "Favoriten", - "column.follow_requests": "Folgeanfragen", + "column.follow_requests": "Follower-Anfragen", "column.home": "Startseite", "column.lists": "Listen", "column.mutes": "Stummgeschaltete Profile", "column.notifications": "Mitteilungen", "column.pins": "Angeheftete Beiträge", - "column.public": "Föderierte Zeitleiste", + "column.public": "Föderierte Chronik", "column_back_button.label": "Zurück", "column_header.hide_settings": "Einstellungen verbergen", "column_header.moveLeft_settings": "Spalte nach links verschieben", @@ -119,46 +120,46 @@ "column_header.show_settings": "Einstellungen anzeigen", "column_header.unpin": "Lösen", "column_subheading.settings": "Einstellungen", - "community.column_settings.local_only": "Nur lokal", - "community.column_settings.media_only": "Nur Medien", - "community.column_settings.remote_only": "Nur entfernt", - "compose.language.change": "Sprache ändern", - "compose.language.search": "Sprachen durchsuchen...", + "community.column_settings.local_only": "Nur lokale Instanz", + "community.column_settings.media_only": "Nur Beiträge mit angehängten Medien", + "community.column_settings.remote_only": "Nur andere Mastodon-Instanzen anzeigen", + "compose.language.change": "Sprache festlegen", + "compose.language.search": "Sprachen suchen …", "compose_form.direct_message_warning_learn_more": "Mehr erfahren", "compose_form.encryption_warning": "Beiträge von Mastodon sind nicht Ende-zu-Ende verschlüsselt. Teile keine senible Informationen über Mastodon.", - "compose_form.hashtag_warning": "Dieser Beitrag wird nicht durch Hashtags entdeckbar sein, weil er ungelistet ist. Nur öffentliche Beiträge tauchen in Hashtag-Zeitleisten auf.", - "compose_form.lock_disclaimer": "Dein Profil ist nicht {locked}. Wer dir folgen will, kann das jederzeit tun und dann auch deine privaten Beiträge sehen.", - "compose_form.lock_disclaimer.lock": "gesperrt", + "compose_form.hashtag_warning": "Dieser Beitrag ist über Hashtags nicht zu finden, weil er nicht gelistet ist. Nur öffentliche Beiträge tauchen in den Hashtag-Chroniken auf.", + "compose_form.lock_disclaimer": "Dein Account ist nicht {locked}. Wer dir folgen will, kann das jederzeit tun und dann auch deine privaten Beiträge sehen.", + "compose_form.lock_disclaimer.lock": "geschützt", "compose_form.placeholder": "Was gibt's Neues?", - "compose_form.poll.add_option": "Eine Wahl hinzufügen", + "compose_form.poll.add_option": "Auswahlfeld hinzufügen", "compose_form.poll.duration": "Umfragedauer", - "compose_form.poll.option_placeholder": "Wahl {number}", - "compose_form.poll.remove_option": "Wahl entfernen", - "compose_form.poll.switch_to_multiple": "Umfrage ändern, um mehrere Optionen zu erlauben", - "compose_form.poll.switch_to_single": "Umfrage ändern, sodass nur eine einzige Auswahl erlaubt ist", + "compose_form.poll.option_placeholder": "{number}. Auswahl", + "compose_form.poll.remove_option": "Auswahlfeld entfernen", + "compose_form.poll.switch_to_multiple": "Mehrfachauswahl erlauben", + "compose_form.poll.switch_to_single": "Nur Einzelauswahl erlauben", "compose_form.publish": "Veröffentlichen", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Änderungen speichern", - "compose_form.sensitive.hide": "Medien als NSFW markieren", - "compose_form.sensitive.marked": "Medien sind als NSFW markiert", - "compose_form.sensitive.unmarked": "Medien sind nicht als NSFW markiert", - "compose_form.spoiler.marked": "Text ist hinter einer Warnung versteckt", - "compose_form.spoiler.unmarked": "Text ist nicht versteckt", + "compose_form.sensitive.hide": "{count, plural, one {Mit einer Inhaltswarnung versehen} other {Mit einer Inhaltswarnung versehen}}", + "compose_form.sensitive.marked": "{count, plural, one {Medien-Datei ist mit einer Inhaltswarnung versehen} other {Medien-Dateien sind mit einer Inhaltswarnung versehen}}", + "compose_form.sensitive.unmarked": "{count, plural, one {Medien-Datei ist nicht mit einer Inhaltswarnung versehen} other {Medien-Dateien sind nicht mit einer Inhaltswarnung versehen}}", + "compose_form.spoiler.marked": "Inhaltswarnung bzw. Triggerwarnung entfernen", + "compose_form.spoiler.unmarked": "Inhaltswarnung bzw. Triggerwarnung hinzufügen", "compose_form.spoiler_placeholder": "Inhaltswarnung", "confirmation_modal.cancel": "Abbrechen", "confirmations.block.block_and_report": "Blockieren und melden", "confirmations.block.confirm": "Blockieren", "confirmations.block.message": "Bist du dir sicher, dass du {name} blockieren möchtest?", - "confirmations.cancel_follow_request.confirm": "Anfrage zurückziehen", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "Anfrage zum Folgen zurückziehen", + "confirmations.cancel_follow_request.message": "Möchtest du deine Anfrage, {name} zu folgen, wirklich zurückziehen?", "confirmations.delete.confirm": "Löschen", "confirmations.delete.message": "Bist du dir sicher, dass du diesen Beitrag löschen möchtest?", "confirmations.delete_list.confirm": "Löschen", "confirmations.delete_list.message": "Bist du dir sicher, dass du diese Liste permanent löschen möchtest?", "confirmations.discard_edit_media.confirm": "Verwerfen", "confirmations.discard_edit_media.message": "Du hast ungespeicherte Änderungen an der Medienbeschreibung oder der Medienvorschau. Trotzdem verwerfen?", - "confirmations.domain_block.confirm": "Die ganze Domain blockieren", - "confirmations.domain_block.message": "Bist du dir wirklich sicher, dass du die ganze Domain {domain} blockieren willst? In den meisten Fällen reichen ein paar gezielte Blockierungen oder Stummschaltungen aus. Du wirst den Inhalt von dieser Domain nicht in irgendwelchen öffentlichen Timelines oder den Benachrichtigungen finden. Deine Folgenden von dieser Domain werden entfernt.", + "confirmations.domain_block.confirm": "Domain blockieren", + "confirmations.domain_block.message": "Bist du dir wirklich sicher, dass du die ganze Domain {domain} blockieren willst? In den meisten Fällen reichen ein paar gezielte Blockierungen oder Stummschaltungen aus. Du wirst den Inhalt von dieser Domain nicht in irgendwelchen öffentlichen Timelines oder den Benachrichtigungen finden. Auch deine Follower von dieser Domain werden entfernt.", "confirmations.logout.confirm": "Abmelden", "confirmations.logout.message": "Bist du sicher, dass du dich abmelden möchtest?", "confirmations.mute.confirm": "Stummschalten", @@ -174,11 +175,11 @@ "conversation.mark_as_read": "Als gelesen markieren", "conversation.open": "Unterhaltung anzeigen", "conversation.with": "Mit {names}", - "copypaste.copied": "Kopiert", - "copypaste.copy": "Kopieren", + "copypaste.copied": "In die Zwischenablage kopiert", + "copypaste.copy": "In die Zwischenablage kopieren", "directory.federated": "Aus dem Fediverse", - "directory.local": "Nur von {domain}", - "directory.new_arrivals": "Neue Benutzer", + "directory.local": "Nur von der Domain {domain}", + "directory.new_arrivals": "Neue Profile", "directory.recently_active": "Kürzlich aktiv", "dismissable_banner.community_timeline": "Dies sind die neuesten öffentlichen Beiträge von Personen, deren Konten von {domain} gehostet werden.", "dismissable_banner.dismiss": "Ablehnen", @@ -186,43 +187,43 @@ "dismissable_banner.explore_statuses": "Diese Beiträge von diesem und anderen Servern im dezentralen Netzwerk gewinnen gerade an Reichweite auf diesem Server.", "dismissable_banner.explore_tags": "Diese Hashtags gewinnen gerade unter den Leuten auf diesem und anderen Servern des dezentralen Netzwerkes an Reichweite.", "dismissable_banner.public_timeline": "Dies sind die neuesten öffentlichen Beiträge von Personen auf diesem und anderen Servern des dezentralen Netzwerks, die dieser Server kennt.", - "embed.instructions": "Du kannst diesen Beitrag auf deiner Webseite einbetten, indem du den folgenden Code einfügst.", - "embed.preview": "So wird es aussehen:", + "embed.instructions": "Du kannst diesen Beitrag außerhalb des Fediverse (z. B. auf deiner Website) einbetten, indem du diesen iFrame-Code einfügst.", + "embed.preview": "Vorschau:", "emoji_button.activity": "Aktivitäten", "emoji_button.clear": "Leeren", - "emoji_button.custom": "Eigene", + "emoji_button.custom": "Spezielle Emojis dieses Servers", "emoji_button.flags": "Flaggen", - "emoji_button.food": "Essen und Trinken", + "emoji_button.food": "Essen & Trinken", "emoji_button.label": "Emoji einfügen", "emoji_button.nature": "Natur", - "emoji_button.not_found": "Keine Emojis!! (╯°□°)╯︵ ┻━┻", + "emoji_button.not_found": "Keine passenden Emojis gefunden", "emoji_button.objects": "Gegenstände", "emoji_button.people": "Personen", - "emoji_button.recent": "Häufig benutzt", - "emoji_button.search": "Suchen…", + "emoji_button.recent": "Häufig benutzte Emojis", + "emoji_button.search": "Nach Emojis suchen …", "emoji_button.search_results": "Suchergebnisse", "emoji_button.symbols": "Symbole", - "emoji_button.travel": "Reisen und Orte", - "empty_column.account_suspended": "Konto gesperrt", - "empty_column.account_timeline": "Keine Beiträge!", - "empty_column.account_unavailable": "Konto nicht verfügbar", - "empty_column.blocks": "Du hast keine Profile blockiert.", + "emoji_button.travel": "Reisen & Orte", + "empty_column.account_suspended": "Account dauerhaft gesperrt", + "empty_column.account_timeline": "Keine Beiträge vorhanden!", + "empty_column.account_unavailable": "Profil nicht verfügbar", + "empty_column.blocks": "Du hast bisher keine Profile blockiert.", "empty_column.bookmarked_statuses": "Du hast bis jetzt keine Beiträge als Lesezeichen gespeichert. Wenn du einen Beitrag als Lesezeichen speicherst wird er hier erscheinen.", - "empty_column.community": "Die lokale Zeitleiste ist leer. Schreibe einen öffentlichen Beitrag, um den Stein ins Rollen zu bringen!", + "empty_column.community": "Die lokale Chronik ist leer. Schreibe einen öffentlichen Beitrag, um den Stein ins Rollen zu bringen!", "empty_column.direct": "Du hast noch keine Direktnachrichten. Sobald du eine sendest oder empfängst, wird sie hier zu sehen sein.", - "empty_column.domain_blocks": "Es sind noch keine Domains versteckt.", + "empty_column.domain_blocks": "Du hast noch keine Domains blockiert.", "empty_column.explore_statuses": "Momentan ist nichts im Trend. Schau später wieder vorbei!", - "empty_column.favourited_statuses": "Du hast noch keine favorisierten Tröts. Wenn du einen favorisierst, wird er hier erscheinen.", + "empty_column.favourited_statuses": "Du hast noch keine Beiträge favorisiert. Wenn du einen favorisierst, wird er hier erscheinen.", "empty_column.favourites": "Noch niemand hat diesen Beitrag favorisiert. Sobald es jemand tut, wird das hier angezeigt.", "empty_column.follow_recommendations": "Es sieht so aus, als könnten keine Vorschläge für dich generiert werden. Du kannst versuchen, nach Leuten zu suchen, die du vielleicht kennst, oder du kannst angesagte Hashtags erkunden.", - "empty_column.follow_requests": "Du hast noch keine Folge-Anfragen. Sobald du eine erhältst, wird sie hier angezeigt.", + "empty_column.follow_requests": "Du hast noch keine Follower-Anfragen erhalten. Sobald du eine erhältst, wird sie hier angezeigt.", "empty_column.hashtag": "Unter diesem Hashtag gibt es noch nichts.", - "empty_column.home": "Deine Startseite ist leer! Folge mehr Leuten, um sie zu füllen. {suggestions}", + "empty_column.home": "Die Timeline Deiner Startseite ist leer! Folge mehr Leuten, um sie zu füllen. {suggestions}", "empty_column.home.suggestions": "Ein paar Vorschläge ansehen", "empty_column.list": "Diese Liste ist derzeit leer. Wenn Konten auf dieser Liste neue Beiträge veröffentlichen werden sie hier erscheinen.", "empty_column.lists": "Du hast noch keine Listen. Wenn du eine anlegst, wird sie hier angezeigt werden.", "empty_column.mutes": "Du hast keine Profile stummgeschaltet.", - "empty_column.notifications": "Du hast noch keine Mitteilungen. Interagiere mit anderen, um ins Gespräch zu kommen.", + "empty_column.notifications": "Du hast noch keine Mitteilungen. Sobald Du mit anderen Personen interagierst, wirst Du hier darüber benachrichtigt.", "empty_column.public": "Hier ist nichts zu sehen! Schreibe etwas öffentlich oder folge Profilen von anderen Servern, um die Zeitleiste aufzufüllen", "error.unexpected_crash.explanation": "Aufgrund eines Fehlers in unserem Code oder einer Browser-Inkompatibilität konnte diese Seite nicht korrekt angezeigt werden.", "error.unexpected_crash.explanation_addons": "Diese Seite konnte nicht korrekt angezeigt werden. Dieser Fehler wird wahrscheinlich durch ein Browser-Add-on oder automatische Übersetzungswerkzeuge verursacht.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Erlauben", "follow_request.reject": "Ablehnen", "follow_requests.unlocked_explanation": "Auch wenn dein Konto nicht gesperrt ist, haben die Moderator_innen von {domain} gedacht, dass du diesen Follower lieber manuell bestätigen solltest.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Gespeichert", - "getting_started.directory": "Verzeichnis", - "getting_started.documentation": "Dokumentation", - "getting_started.free_software_notice": "Mastodon ist kostenlos, Open-Source-Software. Sie können den Quellcode einsehen, beisteuern oder Fehler melden unter {repository}.", "getting_started.heading": "Erste Schritte", - "getting_started.invite": "Leute einladen", - "getting_started.privacy_policy": "Datenschutzerklärung", - "getting_started.security": "Konto & Sicherheit", - "getting_started.what_is_mastodon": "Über Mastodon", "hashtag.column_header.tag_mode.all": "und {additional}", "hashtag.column_header.tag_mode.any": "oder {additional}", "hashtag.column_header.tag_mode.none": "ohne {additional}", @@ -281,11 +282,11 @@ "home.column_settings.basic": "Einfach", "home.column_settings.show_reblogs": "Geteilte Beiträge anzeigen", "home.column_settings.show_replies": "Antworten anzeigen", - "home.hide_announcements": "Verstecke Ankündigungen", - "home.show_announcements": "Zeige Ankündigungen", + "home.hide_announcements": "Ankündigungen verbergen", + "home.show_announcements": "Ankündigungen anzeigen", "interaction_modal.description.favourite": "Mit einem Account auf Mastodon können Sie diesen Beitrag favorisieren, um dem Autor mitzuteilen, dass Sie den Beitrag schätzen und ihn für einen späteren Zeitpunkt speichern.", "interaction_modal.description.follow": "Mit einem Konto auf Mastodon kannst du {name} folgen, um seine Beiträge in deinem Home Feed zu erhalten.", - "interaction_modal.description.reblog": "Mit einem Account auf Mastodon, kannst du diesen Beitrag boosten um ihn mit deinen eigenen Followern teilen.", + "interaction_modal.description.reblog": "Mit einem Mastodon-Account kannst du die Reichweite dieses Beitrags erhöhen, in dem du ihn mit deinen eigenen Followern teilst.", "interaction_modal.description.reply": "Mit einem Account auf Mastodon können Sie auf diesen Beitrag antworten.", "interaction_modal.on_another_server": "Auf einem anderen Server", "interaction_modal.on_this_server": "Auf diesem Server", @@ -293,7 +294,7 @@ "interaction_modal.preamble": "Da Mastodon dezentralisiert ist, kannst du dein bestehendes Konto auf einem anderen Mastodon-Server oder einer kompatiblen Plattform nutzen, wenn du kein Konto auf dieser Plattform hast.", "interaction_modal.title.favourite": "Lieblingsbeitrag von {name}", "interaction_modal.title.follow": "Folge {name}", - "interaction_modal.title.reblog": "Erhöhe {name}'s Beitrag", + "interaction_modal.title.reblog": "Beitrag von {name} teilen", "interaction_modal.title.reply": "Antworte auf den Post von {name}", "intervals.full.days": "{number, plural, one {# Tag} other {# Tage}}", "intervals.full.hours": "{number, plural, one {# Stunde} other {# Stunden}}", @@ -304,32 +305,32 @@ "keyboard_shortcuts.column": "einen Beitrag in einer der Spalten fokussieren", "keyboard_shortcuts.compose": "fokussiere das Eingabefeld", "keyboard_shortcuts.description": "Beschreibung", - "keyboard_shortcuts.direct": "um Direktnachrichtenspalte zu öffnen", + "keyboard_shortcuts.direct": "um die Spalte mit den Direktnachrichten zu öffnen", "keyboard_shortcuts.down": "sich in der Liste hinunter bewegen", "keyboard_shortcuts.enter": "Beitrag öffnen", - "keyboard_shortcuts.favourite": "um zu favorisieren", + "keyboard_shortcuts.favourite": "favorisieren", "keyboard_shortcuts.favourites": "Favoriten-Liste öffnen", - "keyboard_shortcuts.federated": "Föderierte Zeitleiste öffnen", + "keyboard_shortcuts.federated": "Föderierte Chronik öffnen", "keyboard_shortcuts.heading": "Tastenkombinationen", "keyboard_shortcuts.home": "Startseite öffnen", "keyboard_shortcuts.hotkey": "Tastenkürzel", "keyboard_shortcuts.legend": "diese Übersicht anzeigen", - "keyboard_shortcuts.local": "Lokale Zeitleiste öffnen", - "keyboard_shortcuts.mention": "um Autor_in zu erwähnen", + "keyboard_shortcuts.local": "Lokale Chronik öffnen", + "keyboard_shortcuts.mention": "Profil erwähnen", "keyboard_shortcuts.muted": "Liste stummgeschalteter Profile öffnen", "keyboard_shortcuts.my_profile": "Dein Profil öffnen", "keyboard_shortcuts.notifications": "Benachrichtigungsspalte öffnen", - "keyboard_shortcuts.open_media": "um Medien zu öffnen", + "keyboard_shortcuts.open_media": "Medien-Datei öffnen", "keyboard_shortcuts.pinned": "Liste angehefteter Beiträge öffnen", "keyboard_shortcuts.profile": "Profil des Autors öffnen", "keyboard_shortcuts.reply": "antworten", - "keyboard_shortcuts.requests": "Liste der Folge-Anfragen öffnen", + "keyboard_shortcuts.requests": "Liste der Follower-Anfragen öffnen", "keyboard_shortcuts.search": "Suche fokussieren", - "keyboard_shortcuts.spoilers": "um CW-Feld anzuzeigen/auszublenden", + "keyboard_shortcuts.spoilers": "Feld für Inhaltswarnung bzw. Triggerwarnung anzeigen/ausblenden", "keyboard_shortcuts.start": "\"Erste Schritte\"-Spalte öffnen", - "keyboard_shortcuts.toggle_hidden": "Text hinter einer Inhaltswarnung verstecken/anzeigen", + "keyboard_shortcuts.toggle_hidden": "Beitragstext hinter der Inhaltswarnung bzw. Triggerwarnung verstecken/anzeigen", "keyboard_shortcuts.toggle_sensitivity": "Medien hinter einer Inhaltswarnung verstecken/anzeigen", - "keyboard_shortcuts.toot": "einen neuen Beitrag beginnen", + "keyboard_shortcuts.toot": "Neuen Beitrag erstellen", "keyboard_shortcuts.unfocus": "Textfeld/die Suche nicht mehr fokussieren", "keyboard_shortcuts.up": "sich in der Liste hinauf bewegen", "lightbox.close": "Schließen", @@ -338,7 +339,7 @@ "lightbox.next": "Weiter", "lightbox.previous": "Zurück", "limited_account_hint.action": "Profil trotzdem anzeigen", - "limited_account_hint.title": "Dieses Profil wurde von den Moderatoren deines Servers versteckt.", + "limited_account_hint.title": "Dieses Profil wurde durch die Moderator*innen deiner Mastodon-Instanz ausgeblendet.", "lists.account.add": "Zur Liste hinzufügen", "lists.account.remove": "Von der Liste entfernen", "lists.delete": "Liste löschen", @@ -361,40 +362,37 @@ "mute_modal.hide_notifications": "Benachrichtigungen von diesem Account verbergen?", "mute_modal.indefinite": "Unbestimmt", "navigation_bar.about": "Über", - "navigation_bar.apps": "App downloaden", "navigation_bar.blocks": "Blockierte Profile", "navigation_bar.bookmarks": "Lesezeichen", - "navigation_bar.community_timeline": "Lokale Zeitleiste", + "navigation_bar.community_timeline": "Lokale Chronik", "navigation_bar.compose": "Neuen Beitrag verfassen", "navigation_bar.direct": "Direktnachrichten", "navigation_bar.discover": "Entdecken", - "navigation_bar.domain_blocks": "Versteckte Domains", + "navigation_bar.domain_blocks": "Blockierte Domains", "navigation_bar.edit_profile": "Profil bearbeiten", "navigation_bar.explore": "Entdecken", "navigation_bar.favourites": "Favoriten", - "navigation_bar.filters": "Stummgeschaltene Wörter", - "navigation_bar.follow_requests": "Folgeanfragen", - "navigation_bar.follows_and_followers": "Folgende und Gefolgte", - "navigation_bar.info": "Über", - "navigation_bar.keyboard_shortcuts": "Tastenkombinationen", + "navigation_bar.filters": "Stummgeschaltete Wörter", + "navigation_bar.follow_requests": "Follower-Anfragen", + "navigation_bar.follows_and_followers": "Folge ich und Follower", "navigation_bar.lists": "Listen", "navigation_bar.logout": "Abmelden", "navigation_bar.mutes": "Stummgeschaltete Profile", "navigation_bar.personal": "Persönlich", "navigation_bar.pins": "Angeheftete Beiträge", "navigation_bar.preferences": "Einstellungen", - "navigation_bar.public_timeline": "Föderierte Zeitleiste", - "navigation_bar.search": "Search", + "navigation_bar.public_timeline": "Föderierte Chronik", + "navigation_bar.search": "Suche", "navigation_bar.security": "Sicherheit", "not_signed_in_indicator.not_signed_in": "Sie müssen sich anmelden, um diese Funktion zu nutzen.", "notification.admin.report": "{target} wurde von {name} gemeldet", "notification.admin.sign_up": "{name} hat sich registriert", "notification.favourite": "{name} hat deinen Beitrag favorisiert", - "notification.follow": "{name} folgt dir", + "notification.follow": "{name} folgt dir jetzt", "notification.follow_request": "{name} möchte dir folgen", "notification.mention": "{name} hat dich erwähnt", "notification.own_poll": "Deine Umfrage ist beendet", - "notification.poll": "Eine Umfrage, an der du teilgenommen hast, ist vorbei", + "notification.poll": "Eine Umfrage, an der du teilgenommen hast, ist beendet", "notification.reblog": "{name} hat deinen Beitrag geteilt", "notification.status": "{name} hat gerade etwas gepostet", "notification.update": "{name} bearbeitete einen Beitrag", @@ -407,8 +405,8 @@ "notifications.column_settings.filter_bar.advanced": "Zeige alle Kategorien an", "notifications.column_settings.filter_bar.category": "Schnellfilterleiste", "notifications.column_settings.filter_bar.show_bar": "Filterleiste anzeigen", - "notifications.column_settings.follow": "Neue Folgende:", - "notifications.column_settings.follow_request": "Neue Folgeanfragen:", + "notifications.column_settings.follow": "Neue Follower:", + "notifications.column_settings.follow_request": "Neue Follower-Anfragen:", "notifications.column_settings.mention": "Erwähnungen:", "notifications.column_settings.poll": "Ergebnisse von Umfragen:", "notifications.column_settings.push": "Push-Benachrichtigungen", @@ -428,7 +426,7 @@ "notifications.filter.statuses": "Updates von Personen, denen du folgst", "notifications.grant_permission": "Berechtigung erteilen.", "notifications.group": "{count} Benachrichtigungen", - "notifications.mark_as_read": "Alle Benachrichtigungen als gelesen markieren", + "notifications.mark_as_read": "Alles als gelesen markieren", "notifications.permission_denied": "Desktop-Benachrichtigungen können nicht aktiviert werden, da die Berechtigung verweigert wurde.", "notifications.permission_denied_alert": "Desktop-Benachrichtigungen können nicht aktiviert werden, da die Browser-Berechtigung zuvor verweigert wurde", "notifications.permission_required": "Desktop-Benachrichtigungen sind nicht verfügbar, da die erforderliche Berechtigung nicht erteilt wurde.", @@ -436,19 +434,19 @@ "notifications_permission_banner.how_to_control": "Um Benachrichtigungen zu erhalten, wenn Mastodon nicht geöffnet ist, aktiviere die Desktop-Benachrichtigungen. Du kannst genau bestimmen, welche Arten von Interaktionen Desktop-Benachrichtigungen über die {icon} -Taste erzeugen, sobald diese aktiviert sind.", "notifications_permission_banner.title": "Verpasse nie etwas", "picture_in_picture.restore": "Zurücksetzen", - "poll.closed": "Geschlossen", + "poll.closed": "Beendet", "poll.refresh": "Aktualisieren", "poll.total_people": "{count, plural, one {# Person} other {# Personen}}", "poll.total_votes": "{count, plural, one {# Stimme} other {# Stimmen}}", "poll.vote": "Abstimmen", - "poll.voted": "Du hast dafür gestimmt", + "poll.voted": "Du hast für diese Auswahl gestimmt", "poll.votes": "{votes, plural, one {# Stimme} other {# Stimmen}}", "poll_button.add_poll": "Eine Umfrage erstellen", "poll_button.remove_poll": "Umfrage entfernen", "privacy.change": "Sichtbarkeit des Beitrags anpassen", - "privacy.direct.long": "Wird an erwähnte Profile gesendet", - "privacy.direct.short": "Nur erwähnte Personen", - "privacy.private.long": "Nur für Folgende sichtbar", + "privacy.direct.long": "Nur für im Beitrag erwähnte Mastodon-Profile sichtbar", + "privacy.direct.short": "Nur erwähnte Profile", + "privacy.private.long": "Nur für deine Follower sichtbar", "privacy.private.short": "Nur Follower", "privacy.public.long": "Für alle sichtbar", "privacy.public.short": "Öffentlich", @@ -514,22 +512,23 @@ "report_notification.categories.violation": "Regelbruch", "report_notification.open": "Meldung öffnen", "search.placeholder": "Suche", - "search_popout.search_format": "Fortgeschrittenes Suchformat", + "search.search_or_paste": "Search or paste URL", + "search_popout.search_format": "Erweiterte Suche", "search_popout.tips.full_text": "Einfache Texteingabe gibt Beiträge, die du geschrieben, favorisiert und geteilt hast, zurück; außerdem auch Beiträge, in denen du erwähnt wurdest, aber auch passende Nutzernamen, Anzeigenamen oder Hashtags.", "search_popout.tips.hashtag": "Hashtag", - "search_popout.tips.status": "Tröt", + "search_popout.tips.status": "Beitrag", "search_popout.tips.text": "Einfache Texteingabe gibt Anzeigenamen, Benutzernamen und Hashtags zurück", - "search_popout.tips.user": "Nutzer", - "search_results.accounts": "Personen", + "search_popout.tips.user": "Profil", + "search_results.accounts": "Profile", "search_results.all": "Alle", "search_results.hashtags": "Hashtags", "search_results.nothing_found": "Nichts für diese Suchbegriffe gefunden", "search_results.statuses": "Beiträge", "search_results.statuses_fts_disabled": "Die Suche für Beiträge nach ihrem Inhalt ist auf diesem Mastodon-Server deaktiviert.", - "search_results.title": "Suchen nach {q}", + "search_results.title": "Suchergebnisse für {q}", "search_results.total": "{count, number} {count, plural, one {Ergebnis} other {Ergebnisse}}", - "server_banner.about_active_users": "Personen, die diesen Server in den letzten 30 Tagen genutzt haben (monatlich aktive Benutzer)", - "server_banner.active_users": "aktive Benutzer", + "server_banner.about_active_users": "Personen, die diesen Server in den vergangenen 30 Tagen genutzt haben (monatlich aktive Benutzer*innen)", + "server_banner.active_users": "aktive Profile", "server_banner.administered_by": "Verwaltet von:", "server_banner.introduction": "{domain} ist Teil des dezentralen sozialen Netzwerks, das von {mastodon} betrieben wird.", "server_banner.learn_more": "Mehr erfahren", @@ -539,22 +538,22 @@ "sign_in_banner.text": "Melden Sie sich an, um Profilen oder Hashtags zu folgen, Favoriten, Teilen und Antworten auf Beiträge oder interagieren Sie von Ihrem Konto auf einem anderen Server.", "status.admin_account": "Öffne Moderationsoberfläche für @{name}", "status.admin_status": "Öffne Beitrag in der Moderationsoberfläche", - "status.block": "Blockiere @{name}", - "status.bookmark": "Lesezeichen", - "status.cancel_reblog_private": "Nicht mehr teilen", + "status.block": "@{name} blockieren", + "status.bookmark": "Lesezeichen setzen", + "status.cancel_reblog_private": "Teilen des Beitrags rückgängig machen", "status.cannot_reblog": "Dieser Beitrag kann nicht geteilt werden", - "status.copy": "Kopiere Link zum Beitrag", - "status.delete": "Löschen", - "status.detailed_status": "Detaillierte Ansicht der Konversation", - "status.direct": "Direktnachricht @{name}", + "status.copy": "Kopiere Link des Beitrags", + "status.delete": "Beitrag löschen", + "status.detailed_status": "Detaillierte Ansicht der Unterhaltung", + "status.direct": "Direktnachricht an @{name}", "status.edit": "Bearbeiten", "status.edited": "Bearbeitet {date}", "status.edited_x_times": "{count, plural, one {{count} mal} other {{count} mal}} bearbeitet", - "status.embed": "Einbetten", + "status.embed": "Beitrag per iFrame einbetten", "status.favourite": "Favorisieren", "status.filter": "Diesen Beitrag filtern", "status.filtered": "Gefiltert", - "status.hide": "Tröt verbergen", + "status.hide": "Beitrag verbergen", "status.history.created": "{name} erstellte {date}", "status.history.edited": "{name} bearbeitete {date}", "status.load_more": "Weitere laden", @@ -562,7 +561,7 @@ "status.mention": "@{name} erwähnen", "status.more": "Mehr", "status.mute": "@{name} stummschalten", - "status.mute_conversation": "Konversation stummschalten", + "status.mute_conversation": "Unterhaltung stummschalten", "status.open": "Diesen Beitrag öffnen", "status.pin": "Im Profil anheften", "status.pinned": "Angehefteter Beitrag", @@ -570,14 +569,14 @@ "status.reblog": "Teilen", "status.reblog_private": "Mit der ursprünglichen Zielgruppe teilen", "status.reblogged_by": "{name} teilte", - "status.reblogs.empty": "Diesen Beitrag hat noch niemand geteilt. Sobald es jemand tut, wird diese Person hier angezeigt.", + "status.reblogs.empty": "Diesen Beitrag hat bisher noch niemand geteilt. Sobald es jemand tut, wird dieser Account hier angezeigt.", "status.redraft": "Löschen und neu erstellen", "status.remove_bookmark": "Lesezeichen entfernen", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Antwortete {name}", "status.reply": "Antworten", "status.replyAll": "Allen antworten", "status.report": "@{name} melden", - "status.sensitive_warning": "NSFW", + "status.sensitive_warning": "Inhaltswarnung (NSFW)", "status.share": "Teilen", "status.show_filter_reason": "Trotzdem anzeigen", "status.show_less": "Weniger anzeigen", @@ -586,18 +585,18 @@ "status.show_more_all": "Alle Inhaltswarnungen aufklappen", "status.show_original": "Original anzeigen", "status.translate": "Übersetzen", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Ins {lang}e mithilfe von {provider} übersetzt", "status.uncached_media_warning": "Nicht verfügbar", - "status.unmute_conversation": "Stummschaltung von Konversation aufheben", + "status.unmute_conversation": "Stummschaltung der Unterhaltung aufheben", "status.unpin": "Vom Profil lösen", - "subscribed_languages.lead": "Nur Beiträge in ausgewählten Sprachen werden nach der Änderung auf deiner Startseite und den Listen angezeigt. Wähle keine aus, um Beiträge in allen Sprachen zu erhalten.", + "subscribed_languages.lead": "Nach der Änderung werden nur noch Beiträge in den ausgewählten Sprachen in den Timelines deiner Startseite und deiner Listen angezeigt. Wähle keine Sprache aus, um alle Beiträge zu sehen.", "subscribed_languages.save": "Änderungen speichern", "subscribed_languages.target": "Abonnierte Sprachen für {target} ändern", "suggestions.dismiss": "Empfehlung ausblenden", "suggestions.header": "Du bist vielleicht interessiert an…", - "tabs_bar.federated_timeline": "Föderation", + "tabs_bar.federated_timeline": "Vereinigte Timeline", "tabs_bar.home": "Startseite", - "tabs_bar.local_timeline": "Lokal", + "tabs_bar.local_timeline": "Lokale Timeline", "tabs_bar.notifications": "Mitteilungen", "time_remaining.days": "{number, plural, one {# Tag} other {# Tage}} verbleibend", "time_remaining.hours": "{number, plural, one {# Stunde} other {# Stunden}} verbleibend", @@ -606,7 +605,7 @@ "time_remaining.seconds": "{number, plural, one {# Sekunde} other {# Sekunden}} verbleibend", "timeline_hint.remote_resource_not_displayed": "{resource} von anderen Servern werden nicht angezeigt.", "timeline_hint.resources.followers": "Follower", - "timeline_hint.resources.follows": "Folgt", + "timeline_hint.resources.follows": "Folge ich", "timeline_hint.resources.statuses": "Ältere Beiträge", "trends.counter_by_accounts": "{count, plural, one {{count} Person} other {{count} Personen}} {days, plural, one {am vergangenen Tag} other {in den vergangenen {days} Tagen}}", "trends.trending_now": "In den Trends", @@ -619,12 +618,12 @@ "upload_error.limit": "Dateiupload-Limit erreicht.", "upload_error.poll": "Dateiuploads sind in Kombination mit Umfragen nicht erlaubt.", "upload_form.audio_description": "Beschreibe die Audiodatei für Menschen mit Hörschädigungen", - "upload_form.description": "Für Menschen mit Sehbehinderung beschreiben", + "upload_form.description": "Bildbeschreibung für blinde und sehbehinderte Menschen", "upload_form.description_missing": "Keine Beschreibung hinzugefügt", "upload_form.edit": "Bearbeiten", "upload_form.thumbnail": "Miniaturansicht ändern", "upload_form.undo": "Löschen", - "upload_form.video_description": "Beschreibe das Video für Menschen mit einer Hör- oder Sehbehinderung", + "upload_form.video_description": "Beschreibung des Videos für taube und hörbehinderte Menschen", "upload_modal.analyzing_picture": "Analysiere Bild…", "upload_modal.apply": "Übernehmen", "upload_modal.applying": "Anwenden…", @@ -632,10 +631,11 @@ "upload_modal.description_placeholder": "Victor jagt zwölf Boxkämpfer quer über den großen Sylter Deich", "upload_modal.detect_text": "Text aus Bild erkennen", "upload_modal.edit_media": "Medien bearbeiten", - "upload_modal.hint": "Klicke oder ziehe den Kreis auf die Vorschau, um den Brennpunkt auszuwählen, der immer auf allen Vorschaubilder angezeigt wird.", + "upload_modal.hint": "Ziehe den Kreis auf die Stelle Deines Bildes, die bei Vorschaugrafiken in der Mitte stehen soll.", "upload_modal.preparing_ocr": "Vorbereitung von OCR…", "upload_modal.preview_label": "Vorschau ({ratio})", "upload_progress.label": "Wird hochgeladen …", + "upload_progress.processing": "Processing…", "video.close": "Video schließen", "video.download": "Datei herunterladen", "video.exit_fullscreen": "Vollbild verlassen", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 9cca24d19..0e190a1e4 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -897,6 +897,10 @@ { "defaultMessage": "Reason", "id": "about.domain_blocks.comment" + }, + { + "defaultMessage": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "id": "about.disclaimer" } ], "path": "app/javascript/mastodon/features/about/index.json" @@ -1640,6 +1644,10 @@ "defaultMessage": "Search", "id": "search.placeholder" }, + { + "defaultMessage": "Search or paste URL", + "id": "search.search_or_paste" + }, { "defaultMessage": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "id": "search_popout.tips.full_text" @@ -1678,12 +1686,16 @@ }, { "descriptors": [ + { + "defaultMessage": "Processing…", + "id": "upload_progress.processing" + }, { "defaultMessage": "Uploading…", "id": "upload_progress.label" } ], - "path": "app/javascript/mastodon/features/compose/components/upload_form.json" + "path": "app/javascript/mastodon/features/compose/components/upload_progress.json" }, { "descriptors": [ @@ -3959,49 +3971,33 @@ "defaultMessage": "Log out", "id": "confirmations.logout.confirm" }, - { - "defaultMessage": "Get the app", - "id": "navigation_bar.apps" - }, { "defaultMessage": "About", - "id": "navigation_bar.info" - }, - { - "defaultMessage": "About Mastodon", - "id": "getting_started.what_is_mastodon" - }, - { - "defaultMessage": "Documentation", - "id": "getting_started.documentation" - }, - { - "defaultMessage": "Privacy Policy", - "id": "getting_started.privacy_policy" - }, - { - "defaultMessage": "Hotkeys", - "id": "navigation_bar.keyboard_shortcuts" - }, - { - "defaultMessage": "Directory", - "id": "getting_started.directory" + "id": "footer.about" }, { "defaultMessage": "Invite people", - "id": "getting_started.invite" + "id": "footer.invite" }, { - "defaultMessage": "Security", - "id": "getting_started.security" + "defaultMessage": "Profiles directory", + "id": "footer.directory" }, { - "defaultMessage": "Logout", - "id": "navigation_bar.logout" + "defaultMessage": "Privacy policy", + "id": "footer.privacy_policy" }, { - "defaultMessage": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", - "id": "getting_started.free_software_notice" + "defaultMessage": "Get the app", + "id": "footer.get_app" + }, + { + "defaultMessage": "Keyboard shortcuts", + "id": "footer.keyboard_shortcuts" + }, + { + "defaultMessage": "View source code", + "id": "footer.source_code" } ], "path": "app/javascript/mastodon/features/ui/components/link_footer.json" diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 6bf6cabaa..88957939c 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Επικοινωνία:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Τομέας (Domain)", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -95,7 +96,7 @@ "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", "closed_registrations_modal.find_another_server": "Find another server", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations_modal.title": "Εγγραφή στο Mastodon", "column.about": "Σχετικά με", "column.blocks": "Αποκλεισμένοι χρήστες", "column.bookmarks": "Σελιδοδείκτες", @@ -258,15 +259,15 @@ "follow_request.authorize": "Ενέκρινε", "follow_request.reject": "Απέρριψε", "follow_requests.unlocked_explanation": "Παρόλο που ο λογαριασμός σου δεν είναι κλειδωμένος, οι διαχειριστές του {domain} θεώρησαν πως ίσως να θέλεις να ελέγξεις χειροκίνητα αυτά τα αιτήματα ακολούθησης.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Αποθηκεύτηκε", - "getting_started.directory": "Κατάλογος", - "getting_started.documentation": "Τεκμηρίωση", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Αφετηρία", - "getting_started.invite": "Προσκάλεσε κόσμο", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Ασφάλεια", - "getting_started.what_is_mastodon": "Σχετικά με το Mastodon", "hashtag.column_header.tag_mode.all": "και {additional}", "hashtag.column_header.tag_mode.any": "ή {additional}", "hashtag.column_header.tag_mode.none": "χωρίς {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Απόκρυψη ειδοποιήσεων αυτού του χρήστη;", "mute_modal.indefinite": "Αόριστη", "navigation_bar.about": "Σχετικά με", - "navigation_bar.apps": "Αποκτήστε την Εφαρμογή", "navigation_bar.blocks": "Αποκλεισμένοι χρήστες", "navigation_bar.bookmarks": "Σελιδοδείκτες", "navigation_bar.community_timeline": "Τοπική ροή", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Αποσιωπημένες λέξεις", "navigation_bar.follow_requests": "Αιτήματα ακολούθησης", "navigation_bar.follows_and_followers": "Ακολουθείς και σε ακολουθούν", - "navigation_bar.info": "Σχετικά με", - "navigation_bar.keyboard_shortcuts": "Συντομεύσεις", "navigation_bar.lists": "Λίστες", "navigation_bar.logout": "Αποσύνδεση", "navigation_bar.mutes": "Αποσιωπημένοι χρήστες", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Καρφιτσωμένα τουτ", "navigation_bar.preferences": "Προτιμήσεις", "navigation_bar.public_timeline": "Ομοσπονδιακή ροή", - "navigation_bar.search": "Search", + "navigation_bar.search": "Αναζήτηση", "navigation_bar.security": "Ασφάλεια", "not_signed_in_indicator.not_signed_in": "Πρέπει να συνδεθείτε για να αποκτήσετε πρόσβαση σε αυτόν τον πόρο.", "notification.admin.report": "{name} ανέφερε {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Παραβίαση κανόνα", "report_notification.open": "Open report", "search.placeholder": "Αναζήτηση", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Προχωρημένη αναζήτηση", "search_popout.tips.full_text": "Απλό κείμενο που επιστρέφει καταστάσεις που έχεις γράψει, έχεις σημειώσει ως αγαπημένες, έχεις προωθήσει ή έχεις αναφερθεί σε αυτές, καθώς και όσα ονόματα χρηστών και ετικέτες ταιριάζουν.", "search_popout.tips.hashtag": "ετικέτα", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Προετοιμασία αναγνώρισης κειμένου…", "upload_modal.preview_label": "Προεπισκόπηση ({ratio})", "upload_progress.label": "Ανεβαίνει...", + "upload_progress.processing": "Processing…", "video.close": "Κλείσε το βίντεο", "video.download": "Λήψη αρχείου", "video.exit_fullscreen": "Έξοδος από πλήρη οθόνη", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index c4bfc40b1..6f4078306 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", - "getting_started.invite": "Invite people", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Security", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", "navigation_bar.mutes": "Muted users", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Search", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 29b63ff0b..7d5c19205 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", - "getting_started.invite": "Invite people", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Account settings", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", "navigation_bar.mutes": "Muted users", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Search", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns posts you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading...", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index cf66a5af3..3e258a6c8 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -22,10 +23,10 @@ "account.browse_more_on_origin_server": "Foliumi pli ĉe la originala profilo", "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Rekte mesaĝi @{name}", - "account.disable_notifications": "Ne plu sciigi min kiam @{name} mesaĝas", + "account.disable_notifications": "Ne plu sciigi min, kiam @{name} mesaĝas", "account.domain_blocked": "Domajno blokita", "account.edit_profile": "Redakti la profilon", - "account.enable_notifications": "Sciigi min kiam @{name} mesaĝas", + "account.enable_notifications": "Sciigi min, kiam @{name} mesaĝas", "account.endorse": "Rekomendi ĉe via profilo", "account.featured_tags.last_status_at": "Last post on {date}", "account.featured_tags.last_status_never": "No posts", @@ -258,15 +259,15 @@ "follow_request.authorize": "Rajtigi", "follow_request.reject": "Rifuzi", "follow_requests.unlocked_explanation": "Kvankam via konto ne estas ŝlosita, la teamo de {domain} pensas, ke vi eble volas permane kontroli la demandojn de sekvado de ĉi tiuj kontoj.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Konservita", - "getting_started.directory": "Directory", - "getting_started.documentation": "Dokumentado", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Por komenci", - "getting_started.invite": "Inviti homojn", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Sekureco", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "kaj {additional}", "hashtag.column_header.tag_mode.any": "aŭ {additional}", "hashtag.column_header.tag_mode.none": "sen {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Ĉu vi volas kaŝi la sciigojn de ĉi tiu uzanto?", "mute_modal.indefinite": "Nedifinita", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blokitaj uzantoj", "navigation_bar.bookmarks": "Legosignoj", "navigation_bar.community_timeline": "Loka templinio", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Silentigitaj vortoj", "navigation_bar.follow_requests": "Demandoj de sekvado", "navigation_bar.follows_and_followers": "Sekvatoj kaj sekvantoj", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Rapidklavoj", "navigation_bar.lists": "Listoj", "navigation_bar.logout": "Adiaŭi", "navigation_bar.mutes": "Silentigitaj uzantoj", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Malobservo de la regulo", "report_notification.open": "Malfermi la raporton", "search.placeholder": "Serĉi", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Detala serĉo", "search_popout.tips.full_text": "Simplaj tekstoj montras la mesaĝojn, kiujn vi skribis, stelumis, diskonigis, aŭ en kiuj vi estis menciita, sed ankaŭ kongruajn uzantnomojn, montratajn nomojn, kaj kradvortojn.", "search_popout.tips.hashtag": "kradvorto", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparante OSR…", "upload_modal.preview_label": "Antaŭvido ({ratio})", "upload_progress.label": "Alŝutado…", + "upload_progress.processing": "Processing…", "video.close": "Fermi la videon", "video.download": "Elŝuti dosieron", "video.exit_fullscreen": "Eksigi plenekrana", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index f157022b8..a554d391d 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -1,6 +1,7 @@ { "about.blocks": "Servidores moderados", "about.contact": "Contacto:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Motivo", "about.domain_blocks.domain": "Dominio", "about.domain_blocks.preamble": "Mastodon normalmente te permite ver el contenido e interactuar con los usuarios de cualquier otro servidor en el fediverso. Estas son las excepciones que se han hecho en este servidor en particular.", @@ -34,12 +35,12 @@ "account.followers": "Seguidores", "account.followers.empty": "Todavía nadie sigue a este usuario.", "account.followers_counter": "{count, plural, one {{counter} Seguidor} other {{counter} Seguidores}}", - "account.following": "Seguimientos", + "account.following": "Siguiendo", "account.following_counter": "{count, plural, other {{counter} Siguiendo}}", "account.follows.empty": "Todavía este usuario no sigue a nadie.", "account.follows_you": "Te sigue", "account.hide_reblogs": "Ocultar adhesiones de @{name}", - "account.joined_short": "Joined", + "account.joined_short": "En este servidor desde", "account.languages": "Cambiar idiomas suscritos", "account.link_verified_on": "La propiedad de este enlace fue verificada el {date}", "account.locked_info": "Esta cuenta es privada. El propietario manualmente revisa quién puede seguirle.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Cerrar", "bundle_modal_error.message": "Algo salió mal al cargar este componente.", "bundle_modal_error.retry": "Intentá de nuevo", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Ya que Mastodon es descentralizado, podés crearte una cuenta en otro servidor y todavía interactuar con éste.", + "closed_registrations_modal.description": "Actualmente no es posible la creación de una cuenta en {domain}. pero tené en cuenta que no necesitás una cuenta específica en {domain} para usar Mastodon.", + "closed_registrations_modal.find_another_server": "Buscar otro servidor", + "closed_registrations_modal.preamble": "Mastodon es descentralizado, por lo que no importa dónde creés tu cuenta, podrás seguir e interactuar con cualquier persona en este servidor. ¡Incluso podés montar tu propio servidor!", + "closed_registrations_modal.title": "Registrarse en Mastodon", "column.about": "Información", "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rechazar", "follow_requests.unlocked_explanation": "A pesar de que tu cuenta no es privada, el equipo de {domain} pensó que podrías querer revisar manualmente las solicitudes de seguimiento de estas cuentas.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Guardado", - "getting_started.directory": "Directorio", - "getting_started.documentation": "Documentación", - "getting_started.free_software_notice": "Mastodon es software libre y de código abierto. Podés ver el código fuente, contribuir o informar sobre problemas en {repository}.", - "getting_started.heading": "Introducción", - "getting_started.invite": "Invitar gente", - "getting_started.privacy_policy": "Política de privacidad", - "getting_started.security": "Configuración de la cuenta", - "getting_started.what_is_mastodon": "Acerca de Mastodon", + "getting_started.heading": "Inicio de Mastodon", "hashtag.column_header.tag_mode.all": "y {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sin {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "¿Querés ocultar las notificaciones de este usuario?", "mute_modal.indefinite": "Indefinida", "navigation_bar.about": "Información", - "navigation_bar.apps": "Obtené la aplicación", "navigation_bar.blocks": "Usuarios bloqueados", "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Línea temporal local", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Palabras silenciadas", "navigation_bar.follow_requests": "Solicitudes de seguimiento", "navigation_bar.follows_and_followers": "Cuentas seguidas y seguidores", - "navigation_bar.info": "Información", - "navigation_bar.keyboard_shortcuts": "Atajos", "navigation_bar.lists": "Listas", "navigation_bar.logout": "Cerrar sesión", "navigation_bar.mutes": "Usuarios silenciados", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Mensajes fijados", "navigation_bar.preferences": "Configuración", "navigation_bar.public_timeline": "Línea temporal federada", - "navigation_bar.search": "Search", + "navigation_bar.search": "Buscar", "navigation_bar.security": "Seguridad", "not_signed_in_indicator.not_signed_in": "Necesitas iniciar sesión para acceder a este recurso.", "notification.admin.report": "{name} denunció a {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Violación de regla", "report_notification.open": "Abrir denuncia", "search.placeholder": "Buscar", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Formato de búsqueda avanzada", "search_popout.tips.full_text": "Las búsquedas de texto simple devuelven los mensajes que escribiste, los marcados como favoritos, los adheridos o en los que te mencionaron, así como nombres de usuarios, nombres mostrados y etiquetas.", "search_popout.tips.hashtag": "etiqueta", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Todavía nadie adhirió a este mensaje. Cuando alguien lo haga, se mostrará acá.", "status.redraft": "Eliminar mensaje original y editarlo", "status.remove_bookmark": "Quitar marcador", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Respondió a {name}", "status.reply": "Responder", "status.replyAll": "Responder al hilo", "status.report": "Denunciar a @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "Mostrar más para todo", "status.show_original": "Mostrar original", "status.translate": "Traducir", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Traducido desde el {lang} vía {provider}", "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparando OCR…", "upload_modal.preview_label": "Previsualización ({ratio})", "upload_progress.label": "Subiendo...", + "upload_progress.processing": "Processing…", "video.close": "Cerrar video", "video.download": "Descargar archivo", "video.exit_fullscreen": "Salir de la pantalla completa", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 6f69cbabc..44a2131ae 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -1,6 +1,7 @@ { "about.blocks": "Servidores moderados", "about.contact": "Contacto:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Razón", "about.domain_blocks.domain": "Dominio", "about.domain_blocks.preamble": "Mastodon normalmente te permite ver el contenido e interactuar con los usuarios de cualquier otro servidor en el fediverso. Estas son las excepciones que se han hecho en este servidor en particular.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rechazar", "follow_requests.unlocked_explanation": "A pesar de que tu cuenta no es privada, el personal de {domain} ha pensado que quizás deberías revisar manualmente las solicitudes de seguimiento de estas cuentas.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Guardado", - "getting_started.directory": "Directorio", - "getting_started.documentation": "Documentación", - "getting_started.free_software_notice": "Mastodon es un software libre y de código abierto. Puedes ver el código fuente, contribuir o reportar problemas en {repository}.", "getting_started.heading": "Primeros pasos", - "getting_started.invite": "Invitar usuarios", - "getting_started.privacy_policy": "Política de Privacidad", - "getting_started.security": "Seguridad", - "getting_started.what_is_mastodon": "Acerca de Mastodon", "hashtag.column_header.tag_mode.all": "y {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sin {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Ocultar notificaciones de este usuario?", "mute_modal.indefinite": "Indefinida", "navigation_bar.about": "Acerca de", - "navigation_bar.apps": "Obtener la aplicación", "navigation_bar.blocks": "Usuarios bloqueados", "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Historia local", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Palabras silenciadas", "navigation_bar.follow_requests": "Solicitudes para seguirte", "navigation_bar.follows_and_followers": "Siguiendo y seguidores", - "navigation_bar.info": "Acerca de", - "navigation_bar.keyboard_shortcuts": "Atajos", "navigation_bar.lists": "Listas", "navigation_bar.logout": "Cerrar sesión", "navigation_bar.mutes": "Usuarios silenciados", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Infracción de regla", "report_notification.open": "Abrir informe", "search.placeholder": "Buscar", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Formato de búsqueda avanzada", "search_popout.tips.full_text": "Búsquedas de texto recuperan posts que has escrito, marcado como favoritos, retooteado o en los que has sido mencionado, así como usuarios, nombres y hashtags.", "search_popout.tips.hashtag": "etiqueta", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparando OCR…", "upload_modal.preview_label": "Vista previa ({ratio})", "upload_progress.label": "Subiendo…", + "upload_progress.processing": "Processing…", "video.close": "Cerrar video", "video.download": "Descargar archivo", "video.exit_fullscreen": "Salir de pantalla completa", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index ec299cf1e..870f428b9 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -1,6 +1,7 @@ { "about.blocks": "Servidores moderados", "about.contact": "Contacto:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Razón", "about.domain_blocks.domain": "Dominio", "about.domain_blocks.preamble": "Mastodon normalmente te permite ver el contenido e interactuar con los usuarios de cualquier otro servidor en el fediverso. Estas son las excepciones que se han hecho en este servidor en particular.", @@ -39,7 +40,7 @@ "account.follows.empty": "Este usuario todavía no sigue a nadie.", "account.follows_you": "Te sigue", "account.hide_reblogs": "Ocultar retoots de @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Se unió", "account.languages": "Cambiar idiomas suscritos", "account.link_verified_on": "El proprietario de este link fue comprobado el {date}", "account.locked_info": "El estado de privacidad de esta cuenta està configurado como bloqueado. El proprietario debe revisar manualmente quien puede seguirle.", @@ -79,23 +80,23 @@ "audio.hide": "Ocultar audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Puedes hacer clic en {combo} para saltar este aviso la próxima vez", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Copiar informe de error", + "bundle_column_error.error.body": "La página solicitada no pudo ser renderizada. Podría deberse a un error en nuestro código o a un problema de compatibilidad con el navegador.", + "bundle_column_error.error.title": "¡Oh, no!", + "bundle_column_error.network.body": "Se ha producido un error al intentar cargar esta página. Esto puede deberse a un problema temporal con tu conexión a internet o a este servidor.", + "bundle_column_error.network.title": "Error de red", "bundle_column_error.retry": "Inténtalo de nuevo", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Volver al inicio", + "bundle_column_error.routing.body": "No se pudo encontrar la página solicitada. ¿Estás seguro de que la URL en la barra de direcciones es correcta?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Cerrar", "bundle_modal_error.message": "Algo salió mal al cargar este componente.", "bundle_modal_error.retry": "Inténtalo de nuevo", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Como Mastodon es descentralizado, puedes crear una cuenta en otro servidor y seguir interactuando con este.", + "closed_registrations_modal.description": "La creación de una cuenta en {domain} no es posible actualmente, pero ten en cuenta que no necesitas una cuenta específicamente en {domain} para usar Mastodon.", + "closed_registrations_modal.find_another_server": "Buscar otro servidor", + "closed_registrations_modal.preamble": "Mastodon es descentralizado, por lo que no importa dónde crees tu cuenta, podrás seguir e interactuar con cualquier persona en este servidor. ¡Incluso puedes alojarlo tú mismo!", + "closed_registrations_modal.title": "Registrarse en Mastodon", "column.about": "Acerca de", "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rechazar", "follow_requests.unlocked_explanation": "A pesar de que tu cuenta no es privada, el personal de {domain} ha pensado que quizás deberías revisar manualmente las solicitudes de seguimiento de estas cuentas.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Guardado", - "getting_started.directory": "Directorio", - "getting_started.documentation": "Documentación", - "getting_started.free_software_notice": "Mastodon es un software libre y de código abierto. Puedes ver el código fuente, contribuir o reportar problemas en {repository}.", "getting_started.heading": "Primeros pasos", - "getting_started.invite": "Invitar usuarios", - "getting_started.privacy_policy": "Política de Privacidad", - "getting_started.security": "Seguridad", - "getting_started.what_is_mastodon": "Acerca de Mastodon", "hashtag.column_header.tag_mode.all": "y {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sin {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Ocultar notificaciones de este usuario?", "mute_modal.indefinite": "Indefinida", "navigation_bar.about": "Acerca de", - "navigation_bar.apps": "Obtener la aplicación", "navigation_bar.blocks": "Usuarios bloqueados", "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Línea de tiempo local", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Palabras silenciadas", "navigation_bar.follow_requests": "Solicitudes para seguirte", "navigation_bar.follows_and_followers": "Siguiendo y seguidores", - "navigation_bar.info": "Acerca de", - "navigation_bar.keyboard_shortcuts": "Atajos", "navigation_bar.lists": "Listas", "navigation_bar.logout": "Cerrar sesión", "navigation_bar.mutes": "Usuarios silenciados", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Publicaciones fijadas", "navigation_bar.preferences": "Preferencias", "navigation_bar.public_timeline": "Línea de tiempo federada", - "navigation_bar.search": "Search", + "navigation_bar.search": "Buscar", "navigation_bar.security": "Seguridad", "not_signed_in_indicator.not_signed_in": "Necesitas iniciar sesión para acceder a este recurso.", "notification.admin.report": "{name} informó {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Infracción de regla", "report_notification.open": "Abrir informe", "search.placeholder": "Buscar", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Formato de búsqueda avanzada", "search_popout.tips.full_text": "Las búsquedas de texto recuperan publicaciones que has escrito, marcado como favoritas, retooteado o en los que has sido mencionado, así como usuarios, nombres y hashtags.", "search_popout.tips.hashtag": "etiqueta", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Nadie retooteó este toot todavía. Cuando alguien lo haga, aparecerá aquí.", "status.redraft": "Borrar y volver a borrador", "status.remove_bookmark": "Eliminar marcador", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Respondió a {name}", "status.reply": "Responder", "status.replyAll": "Responder al hilo", "status.report": "Reportar", @@ -586,7 +585,7 @@ "status.show_more_all": "Mostrar más para todo", "status.show_original": "Mostrar original", "status.translate": "Traducir", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Traducido de {lang} usando {provider}", "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparando OCR…", "upload_modal.preview_label": "Vista previa ({ratio})", "upload_progress.label": "Subiendo…", + "upload_progress.processing": "Processing…", "video.close": "Cerrar video", "video.download": "Descargar archivo", "video.exit_fullscreen": "Salir de pantalla completa", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index b483b61a8..4584704ac 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autoriseeri", "follow_request.reject": "Hülga", "follow_requests.unlocked_explanation": "Kuigi Teie konto pole lukustatud, soovitab {domain} personal siiski manuaalselt üle vaadata jälgimistaotlused nendelt kontodelt.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Dokumentatsioon", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Alustamine", - "getting_started.invite": "Kutsu inimesi", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Turvalisus", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "ja {additional}", "hashtag.column_header.tag_mode.any": "või {additional}", "hashtag.column_header.tag_mode.none": "ilma {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Kas peita teated sellelt kasutajalt?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blokeeritud kasutajad", "navigation_bar.bookmarks": "Järjehoidjad", "navigation_bar.community_timeline": "Kohalik ajajoon", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Vaigistatud sõnad", "navigation_bar.follow_requests": "Jälgimistaotlused", "navigation_bar.follows_and_followers": "Jälgitud ja jälgijad", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Kiirklahvid", "navigation_bar.lists": "Nimistud", "navigation_bar.logout": "Logi välja", "navigation_bar.mutes": "Vaigistatud kasutajad", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Otsi", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Täiustatud otsiformaat", "search_popout.tips.full_text": "Lihtne tekst toob esile staatused mida olete kirjutanud, lisanud lemmikuks, upitanud või olete seal mainitud, ning lisaks veel kattuvad kasutajanimed, kuvanimed ja sildid.", "search_popout.tips.hashtag": "silt", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Eelvaade ({ratio})", "upload_progress.label": "Laeb üles....", + "upload_progress.processing": "Processing…", "video.close": "Sulge video", "video.download": "Faili allalaadimine", "video.exit_fullscreen": "Välju täisekraanist", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 08263367c..d27817992 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -1,17 +1,18 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Moderatutako zerbitzariak", + "about.contact": "Kontaktua:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.domain_blocks.comment": "Arrazoia", + "about.domain_blocks.domain": "Domeinua", + "about.domain_blocks.preamble": "Mastodonek orokorrean aukera ematen dizu fedibertsoko beste zerbitzarietako erabiltzaileen edukia ikusi eta haiekin komunikatzeko. Zerbitzari zehatz honi ezarritako salbuespenak hauek dira.", + "about.domain_blocks.severity": "Larritasuna", + "about.domain_blocks.silenced.explanation": "Orokorrean ez duzu zerbitzari honetako profil eta edukirik ikusiko. Profilak jarraitzen badituzu edo edukia esplizituki bilatzen baduzu bai.", + "about.domain_blocks.silenced.title": "Mugatua", + "about.domain_blocks.suspended.explanation": "Ez da zerbitzari honetako daturik prozesatuko, gordeko, edo partekatuko, zerbitzari honetako erabiltzaileekin komunikatzea ezinezkoa eginez.", + "about.domain_blocks.suspended.title": "Kanporatua", + "about.not_available": "Zerbitzari honek ez du informazio hau eskuragarri jarri.", + "about.powered_by": "{mastodon} erabiltzen duen sare sozial deszentralizatua", + "about.rules": "Zerbitzariaren arauak", "account.account_note_header": "Oharra", "account.add_or_remove_from_list": "Gehitu edo kendu zerrendetatik", "account.badges.bot": "Bot-a", @@ -20,16 +21,16 @@ "account.block_domain": "Ezkutatu {domain} domeinuko guztia", "account.blocked": "Blokeatuta", "account.browse_more_on_origin_server": "Arakatu gehiago jatorrizko profilean", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Baztertu jarraitzeko eskaera", "account.direct": "Mezu zuzena @{name}(r)i", "account.disable_notifications": "Utzi jakinarazteari @{name} erabiltzailearen bidalketetan", "account.domain_blocked": "Ezkutatutako domeinua", "account.edit_profile": "Aldatu profila", "account.enable_notifications": "Jakinarazi @{name} erabiltzaileak bidalketak egitean", "account.endorse": "Nabarmendu profilean", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Azken bidalketa {date} datan", + "account.featured_tags.last_status_never": "Bidalketarik ez", + "account.featured_tags.title": "{name} erabiltzailearen nabarmendutako traolak", "account.follow": "Jarraitu", "account.followers": "Jarraitzaileak", "account.followers.empty": "Ez du inork erabiltzaile hau jarraitzen oraindik.", @@ -39,8 +40,8 @@ "account.follows.empty": "Erabiltzaile honek ez du inor jarraitzen oraindik.", "account.follows_you": "Jarraitzen dizu", "account.hide_reblogs": "Ezkutatu @{name}(r)en bultzadak", - "account.joined_short": "Joined", - "account.languages": "Change subscribed languages", + "account.joined_short": "Elkartuta", + "account.languages": "Aldatu harpidetutako hizkuntzak", "account.link_verified_on": "Esteka honen jabetzaren egiaztaketa data: {date}", "account.locked_info": "Kontu honen pribatutasun egoera blokeatuta gisa ezarri da. Jabeak eskuz erabakitzen du nork jarraitu diezaioken.", "account.media": "Multimedia", @@ -76,31 +77,31 @@ "alert.unexpected.title": "Ene!", "announcement.announcement": "Iragarpena", "attachments_list.unprocessed": "(prozesatu gabe)", - "audio.hide": "Hide audio", + "audio.hide": "Ezkutatu audioa", "autosuggest_hashtag.per_week": "{count} asteko", "boost_modal.combo": "{combo} sakatu dezakezu hurrengoan hau saltatzeko", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Kopiatu errore-txostena", + "bundle_column_error.error.body": "Eskatutako orria ezin izan da bistaratu. Kodeko errore bategatik izan daiteke edo nabigatzailearen bateragarritasun arazo bategatik.", + "bundle_column_error.error.title": "O ez!", + "bundle_column_error.network.body": "Errore bat gertatu da orri hau kargatzen saiatzean. Arrazoia Interneteko konexioaren edo zerbitzari honen aldi baterako arazoa izan daiteke.", + "bundle_column_error.network.title": "Sareko errorea", "bundle_column_error.retry": "Saiatu berriro", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Itzuli hasierako orrira", + "bundle_column_error.routing.body": "Eskatutako orria ezin izan da aurkitu. Ziur zaude helbide-barrako URLa zuzena dela?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Itxi", "bundle_modal_error.message": "Zerbait okerra gertatu da osagai hau kargatzean.", "bundle_modal_error.retry": "Saiatu berriro", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", + "closed_registrations.other_server_instructions": "Mastodon deszentralizatua denez, beste kontu bat sortu dezakezu beste zerbitzari batean eta honekin komunikatu.", + "closed_registrations_modal.description": "Une honetan ezin da konturik sortu {domain} zerbitzarian, baina kontuan izan Mastodon erabiltzeko ez duzula zertan konturik izan zehazki {domain} zerbitzarian.", + "closed_registrations_modal.find_another_server": "Aurkitu beste zerbitzari bat", + "closed_registrations_modal.preamble": "Mastodon deszentralizatua da, ondorioz kontua edonon sortuta ere zerbitzari honetako jendea jarraitu eta haiekin komunikatzeko aukera izango duzu. Zure zerbitzaria ere sortu dezakezu!", + "closed_registrations_modal.title": "Mastodonen kontua sortzea", + "column.about": "Honi buruz", "column.blocks": "Blokeatutako erabiltzaileak", "column.bookmarks": "Laster-markak", "column.community": "Denbora-lerro lokala", - "column.direct": "Direct messages", + "column.direct": "Mezu zuzenak", "column.directory": "Arakatu profilak", "column.domain_blocks": "Ezkutatutako domeinuak", "column.favourites": "Gogokoak", @@ -122,10 +123,10 @@ "community.column_settings.local_only": "Lokala soilik", "community.column_settings.media_only": "Multimedia besterik ez", "community.column_settings.remote_only": "Urrunekoa soilik", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "Aldatu hizkuntza", + "compose.language.search": "Bilatu hizkuntzak...", "compose_form.direct_message_warning_learn_more": "Ikasi gehiago", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "Mastodoneko bidalketak ez daude muturretik muturrera enkriptatuta. Ez partekatu informazio sentikorrik Mastodonen.", "compose_form.hashtag_warning": "Bidalketa hau ez da traoletan agertuko zerrendatu gabekoa baita. Traoletan bidalketa publikoak besterik ez dira agertzen.", "compose_form.lock_disclaimer": "Zure kontua ez dago {locked}. Edonork jarraitu zaitzake zure jarraitzaileentzako soilik diren bidalketak ikusteko.", "compose_form.lock_disclaimer.lock": "giltzapetuta", @@ -136,7 +137,7 @@ "compose_form.poll.remove_option": "Kendu aukera hau", "compose_form.poll.switch_to_multiple": "Aldatu inkesta hainbat aukera onartzeko", "compose_form.poll.switch_to_single": "Aldatu inkesta aukera bakarra onartzeko", - "compose_form.publish": "Publish", + "compose_form.publish": "Argitaratu", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Gorde aldaketak", "compose_form.sensitive.hide": "Markatu multimedia hunkigarri gisa", @@ -149,8 +150,8 @@ "confirmations.block.block_and_report": "Blokeatu eta salatu", "confirmations.block.confirm": "Blokeatu", "confirmations.block.message": "Ziur {name} blokeatu nahi duzula?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "Baztertu eskaera", + "confirmations.cancel_follow_request.message": "Ziur zaude {name} jarraitzeko eskaera bertan behera utzi nahi duzula?", "confirmations.delete.confirm": "Ezabatu", "confirmations.delete.message": "Ziur bidalketa hau ezabatu nahi duzula?", "confirmations.delete_list.confirm": "Ezabatu", @@ -174,22 +175,22 @@ "conversation.mark_as_read": "Markatu irakurrita bezala", "conversation.open": "Ikusi elkarrizketa", "conversation.with": "Hauekin: {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Kopiatuta", + "copypaste.copy": "Kopiatu", "directory.federated": "Fedibertso ezagunekoak", "directory.local": "{domain} domeinukoak soilik", "directory.new_arrivals": "Iritsi berriak", "directory.recently_active": "Duela gutxi aktibo", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "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_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "Hauek dira {domain} zerbitzarian ostatatutako kontuen bidalketa publiko berrienak.", + "dismissable_banner.dismiss": "Baztertu", + "dismissable_banner.explore_links": "Albiste hauei buruz hitz egiten ari da jendea orain zerbitzari honetan eta sare deszentralizatuko besteetan.", + "dismissable_banner.explore_statuses": "Zerbitzari honetako eta sare deszentralizatuko besteetako bidalketa hauek daude bogan zerbitzari honetan orain.", + "dismissable_banner.explore_tags": "Traola hauek daude bogan orain zerbitzari honetan eta sare deszentralizatuko besteetan.", + "dismissable_banner.public_timeline": "Hauek dira zerbitzari honetako eta zerbitzari honek ezagutzen dituen sare deszentralizatuko beste zerbitzarietako jendearen bidalketa publiko berrienak.", "embed.instructions": "Txertatu bidalketa hau zure webgunean beheko kodea kopiatuz.", "embed.preview": "Hau da izango duen itxura:", "emoji_button.activity": "Jarduera", - "emoji_button.clear": "Clear", + "emoji_button.clear": "Garbitu", "emoji_button.custom": "Pertsonalizatua", "emoji_button.flags": "Banderak", "emoji_button.food": "Janari eta edaria", @@ -209,7 +210,7 @@ "empty_column.blocks": "Ez duzu erabiltzailerik blokeatu oraindik.", "empty_column.bookmarked_statuses": "Oraindik ez dituzu bidalketa laster-markatutarik. Bat laster-markatzerakoan, hemen agertuko da.", "empty_column.community": "Denbora-lerro lokala hutsik dago. Idatzi zerbait publikoki pilota biraka jartzeko!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "Ez duzu mezu zuzenik oraindik. Baten bat bidali edo jasotzen duzunean, hemen agertuko da.", "empty_column.domain_blocks": "Ez dago ezkutatutako domeinurik oraindik.", "empty_column.explore_statuses": "Ez dago joerarik une honetan. Begiratu beranduago!", "empty_column.favourited_statuses": "Ez duzu gogokorik oraindik. Gogokoren bat duzunean hemen agertuko da.", @@ -236,37 +237,37 @@ "explore.trending_links": "Berriak", "explore.trending_statuses": "Bidalketak", "explore.trending_tags": "Traolak", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Iragazki-kategoria hau ez zaio aplikatzen bidalketa honetara sartzeko erabili duzun testuinguruari. Bidalketa testuinguru horretan ere iragaztea nahi baduzu, iragazkia editatu beharko duzu.", + "filter_modal.added.context_mismatch_title": "Testuingurua ez dator bat!", + "filter_modal.added.expired_explanation": "Iragazki kategoria hau iraungi da, eragina izan dezan bere iraungitze-data aldatu beharko duzu.", + "filter_modal.added.expired_title": "Iraungitako iragazkia!", + "filter_modal.added.review_and_configure": "Iragazki kategoria hau berrikusi eta gehiago konfiguratzeko: {settings_link}.", + "filter_modal.added.review_and_configure_title": "Iragazkiaren ezarpenak", + "filter_modal.added.settings_link": "ezarpenen orria", + "filter_modal.added.short_explanation": "Bidalketa hau ondorengo iragazki kategoriara gehitu da: {title}.", + "filter_modal.added.title": "Iragazkia gehituta!", + "filter_modal.select_filter.context_mismatch": "ez du eraginik testuinguru honetan", + "filter_modal.select_filter.expired": "iraungitua", + "filter_modal.select_filter.prompt_new": "Kategoria berria: {name}", + "filter_modal.select_filter.search": "Bilatu edo sortu", + "filter_modal.select_filter.subtitle": "Hautatu lehendik dagoen kategoria bat edo sortu berria", + "filter_modal.select_filter.title": "Iragazi bidalketa hau", + "filter_modal.title.status": "Iragazi bidalketa bat", "follow_recommendations.done": "Egina", "follow_recommendations.heading": "Jarraitu jendea beren bidalketak ikusteko! Hemen dituzu iradokizun batzuk.", "follow_recommendations.lead": "Jarraitzen duzun jendearen bidalketak ordena kronologikoan agertuko dira zure hasierako jarioan. Ez izan akatsak egiteko beldurrik, jendea jarraitzeari uztea erraza da!", "follow_request.authorize": "Baimendu", "follow_request.reject": "Ukatu", "follow_requests.unlocked_explanation": "Zure kontua blokeatuta ez badago ere, {domain} domeinuko arduradunek uste dute kontu hauetako jarraipen eskariak agian eskuz begiratu nahiko dituzula.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Gordea", - "getting_started.directory": "Directory", - "getting_started.documentation": "Dokumentazioa", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Menua", - "getting_started.invite": "Gonbidatu jendea", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Segurtasuna", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "eta {osagarria}", "hashtag.column_header.tag_mode.any": "edo {osagarria}", "hashtag.column_header.tag_mode.none": "gabe {osagarria}", @@ -276,25 +277,25 @@ "hashtag.column_settings.tag_mode.any": "Hautako edozein", "hashtag.column_settings.tag_mode.none": "Hauetako bat ere ez", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", - "hashtag.follow": "Follow hashtag", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.follow": "Jarraitu traola", + "hashtag.unfollow": "Utzi traola jarraitzeari", "home.column_settings.basic": "Oinarrizkoa", "home.column_settings.show_reblogs": "Erakutsi bultzadak", "home.column_settings.show_replies": "Erakutsi erantzunak", "home.hide_announcements": "Ezkutatu iragarpenak", "home.show_announcements": "Erakutsi iragarpenak", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Mastodon kontu batekin bidalketa hau gogoko egin dezakezu, egileari eskertzeko eta gerorako gordetzeko.", + "interaction_modal.description.follow": "Mastodon kontu batekin {name} jarraitu dezakezu bere bidalketak zure hasierako denbora lerroan jasotzeko.", + "interaction_modal.description.reblog": "Mastodon kontu batekin bidalketa hau bultzatu dezakezu, zure jarraitzaileekin partekatzeko.", + "interaction_modal.description.reply": "Mastodon kontu batekin bidalketa honi erantzun diezaiokezu.", + "interaction_modal.on_another_server": "Beste zerbitzari batean", + "interaction_modal.on_this_server": "Zerbitzari honetan", + "interaction_modal.other_server_instructions": "Kopiatu eta itsatsi URL hau zure aplikazio gogokoenaren bilaketa-barran edo saioa hasita daukazun web interfazean.", + "interaction_modal.preamble": "Mastodon deszentralizatua denez, zerbitzari honetan konturik ez badaukazu, beste Mastodon zerbitzari batean edo bateragarria den plataforma batean ostatatutako kontua erabil dezakezu.", + "interaction_modal.title.favourite": "Egin gogoko {name}(r)en bidalketa", + "interaction_modal.title.follow": "Jarraitu {name}", + "interaction_modal.title.reblog": "Bultzatu {name}(r)en bidalketa", + "interaction_modal.title.reply": "Erantzun {name}(r)en bidalketari", "intervals.full.days": "{number, plural, one {egun #} other {# egun}}", "intervals.full.hours": "{number, plural, one {ordu #} other {# ordu}}", "intervals.full.minutes": "{number, plural, one {minutu #} other {# minutu}}", @@ -304,7 +305,7 @@ "keyboard_shortcuts.column": "mezu bat zutabe batean fokatzea", "keyboard_shortcuts.compose": "testua konposatzeko arean fokatzea", "keyboard_shortcuts.description": "Deskripzioa", - "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.direct": "mezu zuzenen zutabea irekitzeko", "keyboard_shortcuts.down": "zerrendan behera mugitzea", "keyboard_shortcuts.enter": "Ireki bidalketa", "keyboard_shortcuts.favourite": "Egin gogoko bidalketa", @@ -337,8 +338,8 @@ "lightbox.expand": "Zabaldu irudia ikusteko kaxa", "lightbox.next": "Hurrengoa", "lightbox.previous": "Aurrekoa", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Erakutsi profila hala ere", + "limited_account_hint.title": "Profil hau ezkutatu egin dute zure zerbitzariko moderatzaileek.", "lists.account.add": "Gehitu zerrendara", "lists.account.remove": "Kendu zerrendatik", "lists.delete": "Ezabatu zerrenda", @@ -360,13 +361,12 @@ "mute_modal.duration": "Iraupena", "mute_modal.hide_notifications": "Ezkutatu erabiltzaile honen jakinarazpenak?", "mute_modal.indefinite": "Zehaztu gabe", - "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", + "navigation_bar.about": "Honi buruz", "navigation_bar.blocks": "Blokeatutako erabiltzaileak", "navigation_bar.bookmarks": "Laster-markak", "navigation_bar.community_timeline": "Denbora-lerro lokala", "navigation_bar.compose": "Idatzi bidalketa berria", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Mezu zuzenak", "navigation_bar.discover": "Aurkitu", "navigation_bar.domain_blocks": "Ezkutatutako domeinuak", "navigation_bar.edit_profile": "Aldatu profila", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Mutututako hitzak", "navigation_bar.follow_requests": "Jarraitzeko eskariak", "navigation_bar.follows_and_followers": "Jarraitutakoak eta jarraitzaileak", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Laster-teklak", "navigation_bar.lists": "Zerrendak", "navigation_bar.logout": "Amaitu saioa", "navigation_bar.mutes": "Mutututako erabiltzaileak", @@ -384,10 +382,10 @@ "navigation_bar.pins": "Finkatutako bidalketak", "navigation_bar.preferences": "Hobespenak", "navigation_bar.public_timeline": "Federatutako denbora-lerroa", - "navigation_bar.search": "Search", + "navigation_bar.search": "Bilatu", "navigation_bar.security": "Segurtasuna", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", - "notification.admin.report": "{name} reported {target}", + "not_signed_in_indicator.not_signed_in": "Baliabide honetara sarbidea izateko saioa hasi behar duzu.", + "notification.admin.report": "{name} erabiltzaileak {target} salatu du", "notification.admin.sign_up": "{name} erabiltzailea erregistratu da", "notification.favourite": "{name}(e)k zure bidalketa gogoko du", "notification.follow": "{name}(e)k jarraitzen zaitu", @@ -400,7 +398,7 @@ "notification.update": "{name} erabiltzaileak bidalketa bat editatu du", "notifications.clear": "Garbitu jakinarazpenak", "notifications.clear_confirmation": "Ziur zure jakinarazpen guztiak behin betirako garbitu nahi dituzula?", - "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.report": "Txosten berriak:", "notifications.column_settings.admin.sign_up": "Izen-emate berriak:", "notifications.column_settings.alert": "Mahaigaineko jakinarazpenak", "notifications.column_settings.favourite": "Gogokoak:", @@ -447,15 +445,15 @@ "poll_button.remove_poll": "Kendu inkesta", "privacy.change": "Aldatu bidalketaren pribatutasuna", "privacy.direct.long": "Bidali aipatutako erabiltzaileei besterik ez", - "privacy.direct.short": "Direct", + "privacy.direct.short": "Aipatutako jendea soilik", "privacy.private.long": "Bidali jarraitzaileei besterik ez", - "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all", + "privacy.private.short": "Jarraitzaileak soilik", + "privacy.public.long": "Guztientzat ikusgai", "privacy.public.short": "Publikoa", - "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", + "privacy.unlisted.long": "Guztientzat ikusgai, baina ez aurkitzeko ezaugarrietan", "privacy.unlisted.short": "Zerrendatu gabea", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Azkenengo eguneraketa {date}", + "privacy_policy.title": "Pribatutasun politika", "refresh": "Berritu", "regeneration_indicator.label": "Kargatzen…", "regeneration_indicator.sublabel": "Zure hasiera-jarioa prestatzen ari da!", @@ -508,12 +506,13 @@ "report.thanks.title_actionable": "Mila esker salaketagatik, berrikusiko dugu.", "report.unfollow": "@{name} jarraitzeari utzi", "report.unfollow_explanation": "Kontu hau jarraitzen ari zara. Zure denbora-lerro nagusian bere bidalketak ez ikusteko, jarraitzeari utzi.", - "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", + "report_notification.attached_statuses": "{count, plural, one {Bidalketa {count}} other {{count} bidalketa}} erantsita", + "report_notification.categories.other": "Bestelakoak", "report_notification.categories.spam": "Spam", - "report_notification.categories.violation": "Rule violation", - "report_notification.open": "Open report", + "report_notification.categories.violation": "Arau haustea", + "report_notification.open": "Ireki salaketa", "search.placeholder": "Bilatu", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Bilaketa aurreratuaren formatua", "search_popout.tips.full_text": "Testu hutsarekin zuk idatzitako bidalketak, gogokoak, bultzadak edo aipamenak aurkitu ditzakezu, bat datozen erabiltzaile-izenak, pantaila-izenak, eta traolak.", "search_popout.tips.hashtag": "traola", @@ -526,17 +525,17 @@ "search_results.nothing_found": "Ez da emaitzarik aurkitu bilaketa-termino horientzat", "search_results.statuses": "Bidalketak", "search_results.statuses_fts_disabled": "Mastodon zerbitzari honek ez du bidalketen edukiaren bilaketa gaitu.", - "search_results.title": "Search for {q}", + "search_results.title": "Bilatu {q}", "search_results.total": "{count, number} {count, plural, one {emaitza} other {emaitza}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", - "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "server_banner.about_active_users": "Azken 30 egunetan zerbitzari hau erabili duen jendea (hilabeteko erabiltzaile aktiboak)", + "server_banner.active_users": "erabiltzaile aktibo", + "server_banner.administered_by": "Administratzailea(k):", + "server_banner.introduction": "{domain} zerbitzaria {mastodon} erabiltzen duen sare sozial deszentralizatuko parte da.", + "server_banner.learn_more": "Ikasi gehiago", + "server_banner.server_stats": "Zerbitzariaren estatistikak:", + "sign_in_banner.create_account": "Sortu kontua", + "sign_in_banner.sign_in": "Hasi saioa", + "sign_in_banner.text": "Hasi saioa beste zerbitzari bateko zure kontuarekin profilak edo traolak jarraitu, bidalketei erantzun, gogoko egin edo partekatzeko.", "status.admin_account": "Ireki @{name} erabiltzailearen moderazio interfazea", "status.admin_status": "Ireki bidalketa hau moderazio interfazean", "status.block": "Blokeatu @{name}", @@ -552,9 +551,9 @@ "status.edited_x_times": "{count, plural, one {behin} other {{count} aldiz}} editatua", "status.embed": "Txertatu", "status.favourite": "Gogokoa", - "status.filter": "Filter this post", + "status.filter": "Iragazi bidalketa hau", "status.filtered": "Iragazita", - "status.hide": "Hide toot", + "status.hide": "Ezkutatu bidalketa hau", "status.history.created": "{name} erabiltzaileak sortua {date}", "status.history.edited": "{name} erabiltzaileak editatua {date}", "status.load_more": "Kargatu gehiago", @@ -573,26 +572,26 @@ "status.reblogs.empty": "Inork ez dio bultzada eman bidalketa honi oraindik. Inork egiten badu, hemen agertuko da.", "status.redraft": "Ezabatu eta berridatzi", "status.remove_bookmark": "Kendu laster-marka", - "status.replied_to": "Replied to {name}", + "status.replied_to": "{name} erabiltzaileari erantzuna", "status.reply": "Erantzun", "status.replyAll": "Erantzun harian", "status.report": "Salatu @{name}", "status.sensitive_warning": "Kontuz: Eduki hunkigarria", "status.share": "Partekatu", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Erakutsi hala ere", "status.show_less": "Erakutsi gutxiago", "status.show_less_all": "Erakutsi denetarik gutxiago", "status.show_more": "Erakutsi gehiago", "status.show_more_all": "Erakutsi denetarik gehiago", - "status.show_original": "Show original", - "status.translate": "Translate", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.show_original": "Erakutsi jatorrizkoa", + "status.translate": "Itzuli", + "status.translated_from_with": "Itzuli {lang}(e)tik {provider} erabiliz", "status.uncached_media_warning": "Ez eskuragarri", "status.unmute_conversation": "Desmututu elkarrizketa", "status.unpin": "Desfinkatu profiletik", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Hautatutako hizkuntzetako bidalketak soilik agertuko dira zure denbora-lerroetan aldaketaren ondoren. Ez baduzu bat ere aukeratzen hizkuntza guztietako bidalketak jasoko dituzu.", + "subscribed_languages.save": "Gorde aldaketak", + "subscribed_languages.target": "Aldatu {target}(e)n harpidetutako hizkuntzak", "suggestions.dismiss": "Errefusatu proposamena", "suggestions.header": "Hau interesatu dakizuke…", "tabs_bar.federated_timeline": "Federatua", @@ -608,7 +607,7 @@ "timeline_hint.resources.followers": "Jarraitzaileak", "timeline_hint.resources.follows": "Jarraitzen", "timeline_hint.resources.statuses": "Bidalketa zaharragoak", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.counter_by_accounts": "{count, plural, one {Pertsona {counter}} other {{counter} pertsona}} azken {days, plural, one {egunean} other {{days} egunetan}}", "trends.trending_now": "Joera orain", "ui.beforeunload": "Zure zirriborroa galduko da Mastodon uzten baduzu.", "units.short.billion": "{count}B", @@ -620,7 +619,7 @@ "upload_error.poll": "Ez da inkestetan fitxategiak igotzea onartzen.", "upload_form.audio_description": "Deskribatu entzumen galera duten pertsonentzat", "upload_form.description": "Deskribatu ikusmen arazoak dituztenentzat", - "upload_form.description_missing": "No description added", + "upload_form.description_missing": "Ez da deskribapenik gehitu", "upload_form.edit": "Editatu", "upload_form.thumbnail": "Aldatu koadro txikia", "upload_form.undo": "Ezabatu", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "OCR prestatzen…", "upload_modal.preview_label": "Aurreikusi ({ratio})", "upload_progress.label": "Igotzen...", + "upload_progress.processing": "Processing…", "video.close": "Itxi bideoa", "video.download": "Deskargatu fitxategia", "video.exit_fullscreen": "Irten pantaila osotik", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 9788de690..b9c67fa06 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -1,17 +1,18 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", + "about.blocks": "کارسازهای نظارت شده", + "about.contact": "تماس:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.domain_blocks.comment": "دلیل", + "about.domain_blocks.domain": "دامنه", + "about.domain_blocks.preamble": "ماستودون عموماً می‌گذارد محتوا را از از هر کارساز دیگری در دنیای شبکه‌های اجتماعی غیرمتمرکز دیده و با آنان برهم‌کنش داشته باشید. این‌ها استثناهایی هستند که روی این کارساز خاص وضع شده‌اند.", + "about.domain_blocks.severity": "شدت", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.domain_blocks.silenced.title": "محدود", + "about.domain_blocks.suspended.explanation": "هیچ داده‌ای از این کارساز پردازش، ذخیره یا مبادله نخواهد شد، که هرگونه برهم‌کنش یا ارتباط با کاربران این کارساز را غیرممکن خواهد کرد.", + "about.domain_blocks.suspended.title": "معلق", + "about.not_available": "این اطّلاعات روی این کارساز موجود نشده.", + "about.powered_by": "رسانهٔ اجتماعی نامتمرکز قدرت گرفته از {mastodon}", + "about.rules": "قوانین کارساز", "account.account_note_header": "یادداشت", "account.add_or_remove_from_list": "افزودن یا برداشتن از سیاهه‌ها", "account.badges.bot": "روبات", @@ -20,16 +21,16 @@ "account.block_domain": "مسدود کردن دامنهٔ {domain}", "account.blocked": "مسدود", "account.browse_more_on_origin_server": "مرور بیش‌تر روی نمایهٔ اصلی", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "رد کردن درخواست پی‌گیری", "account.direct": "پیام مستقیم به ‎@{name}", "account.disable_notifications": "آگاه کردن من هنگام فرسته‌های ‎@{name} را متوقّف کن", "account.domain_blocked": "دامنه مسدود شد", "account.edit_profile": "ویرایش نمایه", "account.enable_notifications": "هنگام فرسته‌های ‎@{name} مرا آگاه کن", "account.endorse": "معرّفی در نمایه", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "آخرین فرسته در {date}", + "account.featured_tags.last_status_never": "بدون فرسته", + "account.featured_tags.title": "برچسب‌های برگزیدهٔ {name}", "account.follow": "پی‌گیری", "account.followers": "پی‌گیرندگان", "account.followers.empty": "هنوز کسی این کاربر را پی‌گیری نمی‌کند.", @@ -39,8 +40,8 @@ "account.follows.empty": "این کاربر هنوز پی‌گیر کسی نیست.", "account.follows_you": "پی می‌گیردتان", "account.hide_reblogs": "نهفتن تقویت‌های ‎@{name}", - "account.joined_short": "Joined", - "account.languages": "Change subscribed languages", + "account.joined_short": "پیوسته", + "account.languages": "تغییر زبان‌های مشترک شده", "account.link_verified_on": "مالکیت این پیوند در {date} بررسی شد", "account.locked_info": "این حساب خصوصی است. صاحبش تصمیم می‌گیرد که چه کسی پی‌گیرش باشد.", "account.media": "رسانه", @@ -76,27 +77,27 @@ "alert.unexpected.title": "ای وای!", "announcement.announcement": "اعلامیه", "attachments_list.unprocessed": "(پردازش نشده)", - "audio.hide": "Hide audio", + "audio.hide": "نهفتن صدا", "autosuggest_hashtag.per_week": "{count} در هفته", "boost_modal.combo": "دکمهٔ {combo} را بزنید تا دیگر این را نبینید", - "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.copy_stacktrace": "رونوشت از گزارش خطا", "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.error.title": "وای، نه!", "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.network.title": "خطای شبکه", "bundle_column_error.retry": "تلاش دوباره", - "bundle_column_error.return": "Go back home", + "bundle_column_error.return": "بازگشت به خانه", "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", - "bundle_column_error.routing.title": "404", + "bundle_column_error.routing.title": "۴۰۴", "bundle_modal_error.close": "بستن", "bundle_modal_error.message": "هنگام بار کردن این مولفه، اشتباهی رخ داد.", "bundle_modal_error.retry": "تلاش دوباره", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", + "closed_registrations.other_server_instructions": "از آن‌جا که ماستودون نامتمرکز است، می‌توانید حسابی روی کارسازی دیگر ساخته و همچنان با این‌یکی در تعامل باشید.", + "closed_registrations_modal.description": "هم‌اکنون امکان ساخت حساب روی {domain} وجود ندارد؛ ولی لطفاً به خاطر داشته باشید که برای استفاده از ماستودون، نیازی به داشتن حساب روی {domain} نیست.", + "closed_registrations_modal.find_another_server": "یافتن کارسازی دیگر", + "closed_registrations_modal.preamble": "ماستودون نامتمرکز است، پس بدون توجّه یه جایی که حسابتان را ساخته‌اید، خواهید توانست هرکسی روی این کارساز را پی‌گرفته و با او تعامل کنید. حتا می‌توانید خودمیزبانیش کنید!", + "closed_registrations_modal.title": "ثبت‌نام روی ماستودون", + "column.about": "درباره", "column.blocks": "کاربران مسدود شده", "column.bookmarks": "نشانک‌ها", "column.community": "خط زمانی محلّی", @@ -122,10 +123,10 @@ "community.column_settings.local_only": "فقط محلّی", "community.column_settings.media_only": "فقط رسانه", "community.column_settings.remote_only": "تنها دوردست", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "تغییر زبان", + "compose.language.search": "جست‌وجوی زبان‌ها…", "compose_form.direct_message_warning_learn_more": "بیشتر بدانید", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "فرسته‌های ماستودون رمزگذاری سرتاسری نشده‌اند. هیچ اطّلاعات حساسی را روی ماستودون هم‌رسانی نکنید.", "compose_form.hashtag_warning": "از آن‌جا که این فرسته فهرست نشده است، در نتایج جست‌وجوی هشتگ‌ها پیدا نخواهد شد. تنها فرسته‌های عمومی را می‌توان با جست‌وجوی هشتگ یافت.", "compose_form.lock_disclaimer": "حسابتان {locked} نیست. هر کسی می‌تواند پی‌گیرتان شده و فرسته‌های ویژهٔ پی‌گیرانتان را ببیند.", "compose_form.lock_disclaimer.lock": "قفل‌شده", @@ -136,7 +137,7 @@ "compose_form.poll.remove_option": "برداشتن این گزینه", "compose_form.poll.switch_to_multiple": "تبدیل به نظرسنجی چندگزینه‌ای", "compose_form.poll.switch_to_single": "تبدیل به نظرسنجی تک‌گزینه‌ای", - "compose_form.publish": "Publish", + "compose_form.publish": "انتشار", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "ذخیرهٔ تغییرات", "compose_form.sensitive.hide": "{count, plural, one {علامت‌گذاری رسانه به عنوان حساس} other {علامت‌گذاری رسانه‌ها به عنوان حساس}}", @@ -149,7 +150,7 @@ "confirmations.block.block_and_report": "مسدود کردن و گزارش", "confirmations.block.confirm": "مسدود کردن", "confirmations.block.message": "مطمئنید که می‌خواهید {name} را مسدود کنید؟", - "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.confirm": "رد کردن درخواست", "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "حذف", "confirmations.delete.message": "آیا مطمئنید که می‌خواهید این فرسته را حذف کنید؟", @@ -174,14 +175,14 @@ "conversation.mark_as_read": "علامت‌گذاری به عنوان خوانده شده", "conversation.open": "دیدن گفتگو", "conversation.with": "با {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "رونوشت شد", + "copypaste.copy": "رونوشت", "directory.federated": "از کارسازهای شناخته‌شده", "directory.local": "تنها از {domain}", "directory.new_arrivals": "تازه‌واردان", "directory.recently_active": "کاربران فعال اخیر", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.dismiss": "دور انداختن", "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_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", @@ -189,7 +190,7 @@ "embed.instructions": "برای جاسازی این فرسته در سایت خودتان، کد زیر را رونوشت کنید.", "embed.preview": "این گونه دیده خواهد شد:", "emoji_button.activity": "فعالیت", - "emoji_button.clear": "Clear", + "emoji_button.clear": "پاک سازی", "emoji_button.custom": "سفارشی", "emoji_button.flags": "پرچم‌ها", "emoji_button.food": "غذا و نوشیدنی", @@ -237,36 +238,36 @@ "explore.trending_statuses": "فرسته‌ها", "explore.trending_tags": "هشتگ‌ها", "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.context_mismatch_title": "بافتار نامطابق!", "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.expired_title": "پالایهٔ منقضی!", "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", + "filter_modal.added.review_and_configure_title": "تنظیمات پالایه", + "filter_modal.added.settings_link": "صفحهٔ تنظیمات", "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.title": "پالایه افزوده شد!", + "filter_modal.select_filter.context_mismatch": "به این بافتار اعمال نمی‌شود", + "filter_modal.select_filter.expired": "منقضی‌شده", + "filter_modal.select_filter.prompt_new": "دستهٔ جدید: {name}", + "filter_modal.select_filter.search": "جست‌وجو یا ایجاد", + "filter_modal.select_filter.subtitle": "استفاده از یک دستهً موجود یا ایجاد دسته‌ای جدید", + "filter_modal.select_filter.title": "پالایش این فرسته", + "filter_modal.title.status": "پالایش یک فرسته", "follow_recommendations.done": "انجام شد", "follow_recommendations.heading": "افرادی را که می‌خواهید فرسته‌هایشان را ببینید پی‌گیری کنید! این‌ها تعدادی پیشنهاد هستند.", "follow_recommendations.lead": "فرسته‌های افرادی که دنبال می‌کنید به ترتیب زمانی در خوراک خانه‌تان نشان داده خواهد شد. از اشتباه کردن نترسید. می‌توانید به همین سادگی در هر زمانی از دنبال کردن افراد دست بکشید!", "follow_request.authorize": "اجازه دهید", "follow_request.reject": "رد کنید", "follow_requests.unlocked_explanation": "با این که حسابتان قفل نیست، کارکنان {domain} فکر کردند که ممکن است بخواهید درخواست‌ها از این حساب‌ها را به صورت دستی بازبینی کنید.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "ذخیره شده", - "getting_started.directory": "Directory", - "getting_started.documentation": "مستندات", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "آغاز کنید", - "getting_started.invite": "دعوت از دیگران", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "تنظیمات حساب", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "و {additional}", "hashtag.column_header.tag_mode.any": "یا {additional}", "hashtag.column_header.tag_mode.none": "بدون {additional}", @@ -276,8 +277,8 @@ "hashtag.column_settings.tag_mode.any": "هرکدام از این‌ها", "hashtag.column_settings.tag_mode.none": "هیچ‌کدام از این‌ها", "hashtag.column_settings.tag_toggle": "افزودن برچسب‌هایی بیشتر به این ستون", - "hashtag.follow": "Follow hashtag", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.follow": "پی‌گیری برچسب", + "hashtag.unfollow": "ناپی‌گیری برچسب", "home.column_settings.basic": "پایه‌ای", "home.column_settings.show_reblogs": "نمایش تقویت‌ها", "home.column_settings.show_replies": "نمایش پاسخ‌ها", @@ -287,14 +288,14 @@ "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", + "interaction_modal.on_another_server": "روی کارسازی دیگر", + "interaction_modal.on_this_server": "روی این کارساز", "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.preamble": "از آن‌جا که ماستودون نامتمرکز است، می‌توانید در صورت نداشتن حساب روی این کارساز، از حساب موجود خودتان که روی کارساز ماستودون یا بن‌سازهٔ سازگار دیگری میزبانی می‌شود استفاده کنید.", + "interaction_modal.title.favourite": "فرسته‌های برگزیدهٔ {name}", + "interaction_modal.title.follow": "پیگیری {name}", + "interaction_modal.title.reblog": "تقویت فرستهٔ {name}", + "interaction_modal.title.reply": "پاسخ به فرستهٔ {name}", "intervals.full.days": "{number, plural, one {# روز} other {# روز}}", "intervals.full.hours": "{number, plural, one {# ساعت} other {# ساعت}}", "intervals.full.minutes": "{number, plural, one {# دقیقه} other {# دقیقه}}", @@ -337,8 +338,8 @@ "lightbox.expand": "گسترش جعبهٔ نمایش تصویر", "lightbox.next": "بعدی", "lightbox.previous": "قبلی", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "به هر روی نمایه نشان داده شود", + "limited_account_hint.title": "این نمایه از سوی ناظم‌های کارسازتان پنهان شده.", "lists.account.add": "افزودن به سیاهه", "lists.account.remove": "برداشتن از سیاهه", "lists.delete": "حذف سیاهه", @@ -360,8 +361,7 @@ "mute_modal.duration": "مدت زمان", "mute_modal.hide_notifications": "نهفتن آگاهی‌ها از این کاربر؟", "mute_modal.indefinite": "نامعلوم", - "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", + "navigation_bar.about": "درباره", "navigation_bar.blocks": "کاربران مسدود شده", "navigation_bar.bookmarks": "نشانک‌ها", "navigation_bar.community_timeline": "خط زمانی محلّی", @@ -375,8 +375,6 @@ "navigation_bar.filters": "واژه‌های خموش", "navigation_bar.follow_requests": "درخواست‌های پی‌گیری", "navigation_bar.follows_and_followers": "پی‌گرفتگان و پی‌گیرندگان", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "میان‌برها", "navigation_bar.lists": "سیاهه‌ها", "navigation_bar.logout": "خروج", "navigation_bar.mutes": "کاربران خموشانده", @@ -384,10 +382,10 @@ "navigation_bar.pins": "فرسته‌های سنجاق شده", "navigation_bar.preferences": "ترجیحات", "navigation_bar.public_timeline": "خط زمانی همگانی", - "navigation_bar.search": "Search", + "navigation_bar.search": "جست‌وجو", "navigation_bar.security": "امنیت", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", - "notification.admin.report": "{name} reported {target}", + "not_signed_in_indicator.not_signed_in": "برای دسترسی به این منبع باید وارد شوید.", + "notification.admin.report": "{name}، {target} را گزارش داد", "notification.admin.sign_up": "{name} ثبت نام کرد", "notification.favourite": "‫{name}‬ فرسته‌تان را پسندید", "notification.follow": "‫{name}‬ پی‌گیرتان شد", @@ -400,7 +398,7 @@ "notification.update": "{name} فرسته‌ای را ویرایش کرد", "notifications.clear": "پاک‌سازی آگاهی‌ها", "notifications.clear_confirmation": "مطمئنید می‌خواهید همهٔ آگاهی‌هایتان را برای همیشه پاک کنید؟", - "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.report": "گزارش‌های جدید:", "notifications.column_settings.admin.sign_up": "ثبت نام‌های جدید:", "notifications.column_settings.alert": "آگاهی‌های میزکار", "notifications.column_settings.favourite": "پسندیده‌ها:", @@ -454,11 +452,11 @@ "privacy.public.short": "عمومی", "privacy.unlisted.long": "نمایان برای همه، ولی خارج از قابلیت‌های کشف", "privacy.unlisted.short": "فهرست نشده", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "آخرین به‌روز رسانی در {date}", + "privacy_policy.title": "سیاست محرمانگی", "refresh": "نوسازی", "regeneration_indicator.label": "در حال بار شدن…", - "regeneration_indicator.sublabel": "خوراک خانگیان دارد آماده می‌شود!", + "regeneration_indicator.sublabel": "خوراک خانگیتان دارد آماده می‌شود!", "relative_time.days": "{number} روز", "relative_time.full.days": "{number, plural, one {# روز} other {# روز}} پیش", "relative_time.full.hours": "{number, plural, one {# ساعت} other {# ساعت}} پیش", @@ -508,12 +506,13 @@ "report.thanks.title_actionable": "ممنون بابت گزارش، ما آن را بررسی خواهیم کرد.", "report.unfollow": "ناپی‌گیری ‎@{name}", "report.unfollow_explanation": "شما این حساب را پی‌گرفته‌اید، برای اینکه دیگر فرسته‌هایش را در خوراک خانه‌تان نبینید؛ آن را پی‌نگیرید.", - "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", - "report_notification.categories.spam": "Spam", - "report_notification.categories.violation": "Rule violation", - "report_notification.open": "Open report", + "report_notification.attached_statuses": "{count, plural, one {{count} فرسته} other {{count} فرسته}} پیوست شده", + "report_notification.categories.other": "دیگر", + "report_notification.categories.spam": "هرزنامه", + "report_notification.categories.violation": "تخطّی از قانون", + "report_notification.open": "گشودن گزارش", "search.placeholder": "جست‌وجو", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "راهنمای جست‌وجوی پیشرفته", "search_popout.tips.full_text": "جست‌وجوی متنی ساده فرسته‌هایی که نوشته، پسندیده، تقویت‌کرده یا در آن‌ها نام‌برده شده‌اید را به علاوهٔ نام‌های کاربری، نام‌های نمایشی و برچسب‌ها برمی‌گرداند.", "search_popout.tips.hashtag": "برچسب", @@ -526,17 +525,17 @@ "search_results.nothing_found": "چیزی برای این عبارت جست‌وجو یافت نشد", "search_results.statuses": "فرسته‌ها", "search_results.statuses_fts_disabled": "جست‌وجوی محتوای فرسته‌ها در این کارساز ماستودون به کار انداخته نشده است.", - "search_results.title": "Search for {q}", + "search_results.title": "جست‌وجو برای {q}", "search_results.total": "{count, number} {count, plural, one {نتیجه} other {نتیجه}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", - "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "server_banner.about_active_users": "افرادی که در ۳۰ روز گذشته از این کارساز استفاده کرده‌اند (کاربران فعّال ماهانه)", + "server_banner.active_users": "کاربران فعّال", + "server_banner.administered_by": "به مدیریت:", + "server_banner.introduction": "{domain} بخشی از شبکهٔ اجتماعی نامتمرکزیست که از {mastodon} نیرو گرفته.", + "server_banner.learn_more": "بیش‌تر بیاموزید", + "server_banner.server_stats": "آمار کارساز:", + "sign_in_banner.create_account": "ایجاد حساب", + "sign_in_banner.sign_in": "ورود", + "sign_in_banner.text": "برای پی‌گیری نمایه‌ها یا برچسب‌ها، هم‌رسانی و پاسخ به فرسته‌ها یا تعامل از حسابتان روی کارسازی دیگر، وارد شوید.", "status.admin_account": "گشودن واسط مدیریت برای ‎@{name}", "status.admin_status": "گشودن این فرسته در واسط مدیریت", "status.block": "مسدود کردن ‎@{name}", @@ -552,9 +551,9 @@ "status.edited_x_times": "{count, plural, one {{count} مرتبه} other {{count} مرتبه}} ویرایش شد", "status.embed": "جاسازی", "status.favourite": "پسندیدن", - "status.filter": "Filter this post", + "status.filter": "پالایش این فرسته", "status.filtered": "پالوده", - "status.hide": "Hide toot", + "status.hide": "نهفتن بوق", "status.history.created": "توسط {name} در {date} ایجاد شد", "status.history.edited": "توسط {name} در {date} ویرایش شد", "status.load_more": "بار کردن بیش‌تر", @@ -573,26 +572,26 @@ "status.reblogs.empty": "هنوز هیچ کسی این فرسته را تقویت نکرده است. وقتی کسی چنین کاری کند، این‌جا نمایش داده خواهد شد.", "status.redraft": "حذف و بازنویسی", "status.remove_bookmark": "برداشتن نشانک", - "status.replied_to": "Replied to {name}", + "status.replied_to": "به {name} پاسخ داد", "status.reply": "پاسخ", "status.replyAll": "پاسخ به رشته", "status.report": "گزارش ‎@{name}", "status.sensitive_warning": "محتوای حساس", "status.share": "هم‌رسانی", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "به هر روی نشان داده شود", "status.show_less": "نمایش کمتر", "status.show_less_all": "نمایش کمتر همه", "status.show_more": "نمایش بیشتر", "status.show_more_all": "نمایش بیشتر همه", - "status.show_original": "Show original", - "status.translate": "Translate", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.show_original": "نمایش اصلی", + "status.translate": "ترجمه", + "status.translated_from_with": "ترجمه از {lang} با {provider}", "status.uncached_media_warning": "ناموجود", "status.unmute_conversation": "رفع خموشی گفت‌وگو", "status.unpin": "برداشتن سنجاق از نمایه", "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.save": "ذخیرهٔ تغییرات", + "subscribed_languages.target": "تغییر زبان‌های مشترک شده برای {target}", "suggestions.dismiss": "نادیده گرفتن پیشنهاد", "suggestions.header": "شاید این هم برایتان جالب باشد…", "tabs_bar.federated_timeline": "همگانی", @@ -608,7 +607,7 @@ "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} days}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} نفر} other {{counter} نفر}} در {days, plural, one {روز} other {{days} روز}} گذشته", "trends.trending_now": "پرطرفدار", "ui.beforeunload": "اگر از ماستودون خارج شوید پیش‌نویس شما از دست خواهد رفت.", "units.short.billion": "{count}میلیارد", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "در حال آماده سازی OCR…", "upload_modal.preview_label": "پیش‌نمایش ({ratio})", "upload_progress.label": "در حال بارگذاری…", + "upload_progress.processing": "Processing…", "video.close": "بستن ویدیو", "video.download": "بارگیری پرونده", "video.exit_fullscreen": "خروج از حالت تمام‌صفحه", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index bd7b7f8ac..99d6cd40b 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderoidut palvelimet", "about.contact": "Yhteystiedot:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Syy", "about.domain_blocks.domain": "Verkkotunnus", "about.domain_blocks.preamble": "Mastodonin avulla voit yleensä tarkastella sisältöä ja olla vuorovaikutuksessa käyttäjien kanssa millä tahansa muulla palvelimella fediversessä. Nämä ovat poikkeuksia, jotka on tehty tälle palvelimelle.", @@ -93,7 +94,7 @@ "bundle_modal_error.retry": "Yritä uudelleen", "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.find_another_server": "Etsi toinen palvelin", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Tietoja", @@ -258,15 +259,15 @@ "follow_request.authorize": "Valtuuta", "follow_request.reject": "Hylkää", "follow_requests.unlocked_explanation": "Vaikka tiliäsi ei ole lukittu, {domain}:n ylläpitäjien mielestä saatat haluta tarkistaa nämä seurauspyynnöt manuaalisesti.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Tallennettu", - "getting_started.directory": "Hakemisto", - "getting_started.documentation": "Käyttöohjeet", - "getting_started.free_software_notice": "Mastodon on ilmainen, avoimen lähdekoodin ohjelmisto. Voit tarkastella lähdekoodia, osallistua tai raportoida ongelmista osoitteessa {repository}.", "getting_started.heading": "Näin pääset alkuun", - "getting_started.invite": "Kutsu ihmisiä", - "getting_started.privacy_policy": "Tietosuojakäytäntö", - "getting_started.security": "Tiliasetukset", - "getting_started.what_is_mastodon": "Tietoja Mastodonista", "hashtag.column_header.tag_mode.all": "ja {additional}", "hashtag.column_header.tag_mode.any": "tai {additional}", "hashtag.column_header.tag_mode.none": "ilman {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Piilota tältä käyttäjältä tulevat ilmoitukset?", "mute_modal.indefinite": "Ikuisesti", "navigation_bar.about": "Tietoja", - "navigation_bar.apps": "Hanki sovellus", "navigation_bar.blocks": "Estetyt käyttäjät", "navigation_bar.bookmarks": "Kirjanmerkit", "navigation_bar.community_timeline": "Paikallinen aikajana", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Mykistetyt sanat", "navigation_bar.follow_requests": "Seuraamispyynnöt", "navigation_bar.follows_and_followers": "Seurattavat ja seuraajat", - "navigation_bar.info": "Tietoja", - "navigation_bar.keyboard_shortcuts": "Pikanäppäimet", "navigation_bar.lists": "Listat", "navigation_bar.logout": "Kirjaudu ulos", "navigation_bar.mutes": "Mykistetyt käyttäjät", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Sääntöjen rikkominen", "report_notification.open": "Avaa raportti", "search.placeholder": "Hae", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Tarkennettu haku", "search_popout.tips.full_text": "Tekstihaku listaa tilapäivitykset, jotka olet kirjoittanut, lisännyt suosikkeihisi, boostannut tai joissa sinut mainitaan, sekä tekstin sisältävät käyttäjänimet, nimimerkit ja hastagit.", "search_popout.tips.hashtag": "aihetunnisteet", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Valmistellaan OCR…", "upload_modal.preview_label": "Esikatselu ({ratio})", "upload_progress.label": "Ladataan...", + "upload_progress.processing": "Processing…", "video.close": "Sulje video", "video.download": "Lataa tiedosto", "video.exit_fullscreen": "Poistu koko näytön tilasta", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index d6de0df73..894f3599e 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -1,10 +1,11 @@ { "about.blocks": "Serveurs modérés", "about.contact": "Contact :", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Motif :", "about.domain_blocks.domain": "Domaine", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", + "about.domain_blocks.preamble": "Mastodon vous permet généralement de visualiser le contenu et d'interagir avec les utilisateurs de n'importe quel autre serveur dans le fédiverse. Voici les exceptions qui ont été faites sur ce serveur en particulier.", + "about.domain_blocks.severity": "Sévérité", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -39,7 +40,7 @@ "account.follows.empty": "Cet·te utilisateur·rice ne suit personne pour l’instant.", "account.follows_you": "Vous suit", "account.hide_reblogs": "Masquer les partages de @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Ici depuis", "account.languages": "Changer les langues abonnées", "account.link_verified_on": "La propriété de ce lien a été vérifiée le {date}", "account.locked_info": "Ce compte est privé. Son ou sa propriétaire approuve manuellement qui peut le suivre.", @@ -93,9 +94,9 @@ "bundle_modal_error.retry": "Réessayer", "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.find_another_server": "Trouver un autre serveur", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations_modal.title": "S’inscrire sur Mastodon", "column.about": "À propos", "column.blocks": "Comptes bloqués", "column.bookmarks": "Marque-pages", @@ -149,7 +150,7 @@ "confirmations.block.block_and_report": "Bloquer et signaler", "confirmations.block.confirm": "Bloquer", "confirmations.block.message": "Voulez-vous vraiment bloquer {name} ?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.confirm": "Retirer la demande", "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Supprimer", "confirmations.delete.message": "Voulez-vous vraiment supprimer ce message ?", @@ -258,15 +259,15 @@ "follow_request.authorize": "Accepter", "follow_request.reject": "Rejeter", "follow_requests.unlocked_explanation": "Même si votre compte n’est pas privé, l’équipe de {domain} a pensé que vous pourriez vouloir consulter manuellement les demandes de suivi de ces comptes.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Sauvegardé", - "getting_started.directory": "Annuaire", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon est un logiciel libre et ouvert. Vous pouvez consulter le code source, contribuer ou soumettre des rapports de bogues sur {repository}.", "getting_started.heading": "Pour commencer", - "getting_started.invite": "Inviter des gens", - "getting_started.privacy_policy": "Politique de confidentialité", - "getting_started.security": "Sécurité", - "getting_started.what_is_mastodon": "À propos de Mastodon", "hashtag.column_header.tag_mode.all": "et {additional}", "hashtag.column_header.tag_mode.any": "ou {additional}", "hashtag.column_header.tag_mode.none": "sans {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Masquer les notifications de cette personne ?", "mute_modal.indefinite": "Indéfinie", "navigation_bar.about": "À propos", - "navigation_bar.apps": "Télécharger l’application", "navigation_bar.blocks": "Comptes bloqués", "navigation_bar.bookmarks": "Marque-pages", "navigation_bar.community_timeline": "Fil public local", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Mots masqués", "navigation_bar.follow_requests": "Demandes d’abonnement", "navigation_bar.follows_and_followers": "Abonnements et abonné⋅e·s", - "navigation_bar.info": "À propos", - "navigation_bar.keyboard_shortcuts": "Raccourcis clavier", "navigation_bar.lists": "Listes", "navigation_bar.logout": "Déconnexion", "navigation_bar.mutes": "Comptes masqués", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Messages épinglés", "navigation_bar.preferences": "Préférences", "navigation_bar.public_timeline": "Fil public global", - "navigation_bar.search": "Search", + "navigation_bar.search": "Rechercher", "navigation_bar.security": "Sécurité", "not_signed_in_indicator.not_signed_in": "Vous devez vous connecter pour accéder à cette ressource.", "notification.admin.report": "{name} a signalé {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Infraction aux règles du serveur", "report_notification.open": "Ouvrir le signalement", "search.placeholder": "Rechercher", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Recherche avancée", "search_popout.tips.full_text": "Un texte normal retourne les messages que vous avez écrits, ajoutés à vos favoris, partagés, ou vous mentionnant, ainsi que les identifiants, les noms affichés, et les hashtags des personnes et messages correspondants.", "search_popout.tips.hashtag": "hashtag", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Personne n’a encore partagé ce message. Lorsque quelqu’un le fera, il apparaîtra ici.", "status.redraft": "Supprimer et réécrire", "status.remove_bookmark": "Retirer des marque-pages", - "status.replied_to": "Replied to {name}", + "status.replied_to": "En réponse à {name}", "status.reply": "Répondre", "status.replyAll": "Répondre au fil", "status.report": "Signaler @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "Tout déplier", "status.show_original": "Afficher l’original", "status.translate": "Traduire", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Traduit de {lang} en utilisant {provider}", "status.uncached_media_warning": "Indisponible", "status.unmute_conversation": "Ne plus masquer la conversation", "status.unpin": "Retirer du profil", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Préparation de l’OCR…", "upload_modal.preview_label": "Aperçu ({ratio})", "upload_progress.label": "Envoi en cours…", + "upload_progress.processing": "Processing…", "video.close": "Fermer la vidéo", "video.download": "Télécharger le fichier", "video.exit_fullscreen": "Quitter le plein écran", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index 84fe8f1c9..89db3f327 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Goedkarre", "follow_request.reject": "Ofkarre", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Bewarre", - "getting_started.directory": "Directory", - "getting_started.documentation": "Dokumintaasje", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Utein sette", - "getting_started.invite": "Minsken útnûgje", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Account ynstellings", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "en {additional}", "hashtag.column_header.tag_mode.any": "of {additional}", "hashtag.column_header.tag_mode.none": "sûnder {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Notifikaasjes fan dizze brûker ferstopje?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blokkearre brûkers", "navigation_bar.bookmarks": "Blêdwiizers", "navigation_bar.community_timeline": "Local timeline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Negearre wurden", "navigation_bar.follow_requests": "Folgfersiken", "navigation_bar.follows_and_followers": "Folgers en folgjenden", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Fluchtoetsen", "navigation_bar.lists": "Listen", "navigation_bar.logout": "Utlogge", "navigation_bar.mutes": "Negearre brûkers", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Search", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 9cc62ddd0..d24e1aaec 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -1,6 +1,7 @@ { "about.blocks": "Freastalaithe faoi stiúir", "about.contact": "Teagmháil:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Fáth", "about.domain_blocks.domain": "Fearann", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Ceadaigh", "follow_request.reject": "Diúltaigh", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", - "getting_started.invite": "Invite people", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Security", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Cuir póstalacha ón t-úsáideoir seo i bhfolach?", "mute_modal.indefinite": "Gan téarma", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Amlíne áitiúil", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Focail bhalbhaithe", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Ag leanúint agus do do leanúint", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Eochracha Aicearra", "navigation_bar.lists": "Liostaí", "navigation_bar.logout": "Logáil Amach", "navigation_bar.mutes": "Úsáideoirí balbhaithe", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Cuardaigh", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "haischlib", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 32030374f..cc0e47630 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -1,6 +1,7 @@ { "about.blocks": "Frithealaichean fo mhaorsainneachd", "about.contact": "Fios thugainn:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Adhbhar", "about.domain_blocks.domain": "Àrainn", "about.domain_blocks.preamble": "San fharsaingeachd, leigidh Mastodon leat susbaint o fhrithealaiche sam bith sa cho-shaoghal a shealltainn agus eadar-ghìomh a ghabhail leis na cleachdaichean uapa-san. Seo na h-easgaidhean a tha an sàs air an fhrithealaiche shònraichte seo.", @@ -39,7 +40,7 @@ "account.follows.empty": "Chan eil an cleachdaiche seo a’ leantainn air neach sam bith fhathast.", "account.follows_you": "’Gad leantainn", "account.hide_reblogs": "Falaich na brosnachaidhean o @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Air ballrachd fhaighinn", "account.languages": "Atharraich fo-sgrìobhadh nan cànan", "account.link_verified_on": "Chaidh dearbhadh cò leis a tha an ceangal seo {date}", "account.locked_info": "Tha prìobhaideachd ghlaiste aig a’ chunntais seo. Nì an sealbhadair lèirmheas a làimh air cò dh’fhaodas leantainn orra.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Dùin", "bundle_modal_error.message": "Chaidh rudeigin cearr nuair a dh’fheuch sinn ris a’ cho-phàirt seo a luchdadh.", "bundle_modal_error.retry": "Feuch ris a-rithist", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Air sgàth ’s gu bheil Mastodon sgaoilte, ’s urrainn dhut cunntas a chruthachadh air frithealaiche eile agus conaltradh ris an fhrithealaiche seo co-dhiù.", + "closed_registrations_modal.description": "Cha ghabh cunntas a chruthachadh air {domain} aig an àm seo ach thoir an aire nach fheum thu cunntas air {domain} gu sònraichte airson Mastodon a chleachdadh.", + "closed_registrations_modal.find_another_server": "Lorg frithealaiche eile", + "closed_registrations_modal.preamble": "Tha Mastodon sgaoilte is mar sin dheth ge b’ e càit an cruthaich thu an cunntas agad, ’s urrainn dhut leantainn air duine sam bith air an fhrithealaiche seo is conaltradh leotha. ’S urrainn dhut fiù ’s frithealaiche agad fhèin òstadh!", + "closed_registrations_modal.title": "Clàradh le Mastodon", "column.about": "Mu dhèidhinn", "column.blocks": "Cleachdaichean bacte", "column.bookmarks": "Comharran-lìn", @@ -258,15 +259,15 @@ "follow_request.authorize": "Ùghdarraich", "follow_request.reject": "Diùlt", "follow_requests.unlocked_explanation": "Ged nach eil an cunntas agad glaiste, tha sgioba {domain} dhen bheachd gum b’ fheàirrde thu lèirmheas a dhèanamh air na h-iarrtasan leantainn o na cunntasan seo a làimh.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Chaidh a shàbhaladh", - "getting_started.directory": "Eòlaire", - "getting_started.documentation": "Docamaideadh", - "getting_started.free_software_notice": "’S e bathar-bog saor le bun-tùs fosgailte a th’ ann am Mastodon. Chì thu am bun-tùs agus ’s urrainn dhut cuideachadh leis no aithris a dhèanamh air duilgheadasan air {repository}.", "getting_started.heading": "Toiseach", - "getting_started.invite": "Thoir cuireadh do dhaoine", - "getting_started.privacy_policy": "Poileasaidh prìobhaideachd", - "getting_started.security": "Roghainnean a’ chunntais", - "getting_started.what_is_mastodon": "Mu Mhastodon", "hashtag.column_header.tag_mode.all": "agus {additional}", "hashtag.column_header.tag_mode.any": "no {additional}", "hashtag.column_header.tag_mode.none": "às aonais {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "A bheil thu airson na brathan fhalach on chleachdaiche seo?", "mute_modal.indefinite": "Gun chrìoch", "navigation_bar.about": "Mu dhèidhinn", - "navigation_bar.apps": "Faigh an aplacaid", "navigation_bar.blocks": "Cleachdaichean bacte", "navigation_bar.bookmarks": "Comharran-lìn", "navigation_bar.community_timeline": "Loidhne-ama ionadail", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Faclan mùchte", "navigation_bar.follow_requests": "Iarrtasan leantainn", "navigation_bar.follows_and_followers": "Dàimhean leantainn", - "navigation_bar.info": "Mu dhèidhinn", - "navigation_bar.keyboard_shortcuts": "Grad-iuchraichean", "navigation_bar.lists": "Liostaichean", "navigation_bar.logout": "Clàraich a-mach", "navigation_bar.mutes": "Cleachdaichean mùchte", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Postaichean prìnichte", "navigation_bar.preferences": "Roghainnean", "navigation_bar.public_timeline": "Loidhne-ama cho-naisgte", - "navigation_bar.search": "Search", + "navigation_bar.search": "Lorg", "navigation_bar.security": "Tèarainteachd", "not_signed_in_indicator.not_signed_in": "Feumaidh tu clàradh a-steach mus fhaigh thu cothrom air a’ ghoireas seo.", "notification.admin.report": "Rinn {name} mu {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Briseadh riaghailte", "report_notification.open": "Fosgail an gearan", "search.placeholder": "Lorg", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Fòrmat adhartach an luirg", "search_popout.tips.full_text": "Bheir teacsa sìmplidh dhut na postaichean a sgrìobh thu, a tha nan annsachdan dhut, a bhrosnaich thu no san deach iomradh a thoirt ort cho math ri ainmean-cleachdaiche, ainmean taisbeanaidh agus tagaichean hais a mhaidsicheas.", "search_popout.tips.hashtag": "taga hais", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Chan deach am post seo a bhrosnachadh le duine sam bith fhathast. Nuair a bhrosnaicheas cuideigin e, nochdaidh iad an-seo.", "status.redraft": "Sguab às ⁊ dèan dreachd ùr", "status.remove_bookmark": "Thoir an comharra-lìn air falbh", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Air {name} fhreagairt", "status.reply": "Freagair", "status.replyAll": "Freagair dhan t-snàithlean", "status.report": "Dèan gearan mu @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "Seall barrachd dhen a h-uile", "status.show_original": "Seall an tionndadh tùsail", "status.translate": "Eadar-theangaich", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Air eaar-theangachadh o {lang} le {provider}", "status.uncached_media_warning": "Chan eil seo ri fhaighinn", "status.unmute_conversation": "Dì-mhùch an còmhradh", "status.unpin": "Dì-phrìnich on phròifil", @@ -608,7 +607,7 @@ "timeline_hint.resources.followers": "Luchd-leantainn", "timeline_hint.resources.follows": "A’ leantainn air", "timeline_hint.resources.statuses": "Postaichean nas sine", - "trends.counter_by_accounts": "{count, plural, one {{counter} neach} two {{counter} neach} few {{counter} daoine} other {{counter} duine}} sna {days, plural, one {{days} latha} two {{days} latha} few {{days} làithean} other {{days} latha}} seo chaidh", + "trends.counter_by_accounts": "{count, plural, one {{counter} neach} two {{counter} neach} few {{counter} daoine} other {{counter} duine}} {days, plural, one {san {days} latha} two {san {days} latha} few {sna {days} làithean} other {sna {days} latha}} seo chaidh", "trends.trending_now": "A’ treandadh an-dràsta", "ui.beforeunload": "Caillidh tu an dreachd agad ma dh’fhàgas tu Mastodon an-dràsta.", "units.short.billion": "{count}B", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Ag ullachadh OCR…", "upload_modal.preview_label": "Ro-shealladh ({ratio})", "upload_progress.label": "’Ga luchdadh suas…", + "upload_progress.processing": "Processing…", "video.close": "Dùin a’ video", "video.download": "Luchdaich am faidhle a-nuas", "video.exit_fullscreen": "Fàg modh na làn-sgrìn", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 5a97a82d1..009cb2dad 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -1,6 +1,7 @@ { "about.blocks": "Servidores moderados", "about.contact": "Contacto:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Razón", "about.domain_blocks.domain": "Dominio", "about.domain_blocks.preamble": "Mastodon de xeito xeral permíteche ver contidos doutros servidores do fediverso e interactuar coas súas usuarias. Estas son as excepcións que se estabeleceron neste servidor en particular.", @@ -39,7 +40,7 @@ "account.follows.empty": "Esta usuaria aínda non segue a ninguén.", "account.follows_you": "Séguete", "account.hide_reblogs": "Agochar repeticións de @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Uniuse", "account.languages": "Modificar os idiomas subscritos", "account.link_verified_on": "A propiedade desta ligazón foi verificada o {date}", "account.locked_info": "Esta é unha conta privada. A propietaria revisa de xeito manual quen pode seguila.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Pechar", "bundle_modal_error.message": "Ocorreu un erro ó cargar este compoñente.", "bundle_modal_error.retry": "Téntao de novo", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Cómo Mastodon é descentralizado, podes crear unha conta noutro servidor e interactuar igualmente con este.", + "closed_registrations_modal.description": "Actualmente non é posible crear unha conta en {domain}, pero ten en conta que non precisas unha conta específicamente en {domain} para usar Mastodon.", + "closed_registrations_modal.find_another_server": "Atopa outro servidor", + "closed_registrations_modal.preamble": "Mastodon é descentralizado, así que non importa onde crees a conta, poderás seguir e interactuar con calquera conta deste servidor. Incluso podes ter o teu servidor!", + "closed_registrations_modal.title": "Crear conta en Mastodon", "column.about": "Acerca de", "column.blocks": "Usuarias bloqueadas", "column.bookmarks": "Marcadores", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rexeitar", "follow_requests.unlocked_explanation": "Malia que a túa conta non é privada, a administración de {domain} pensou que quizabes terías que revisar de xeito manual as solicitudes de seguiminto.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Gardado", - "getting_started.directory": "Directorio", - "getting_started.documentation": "Documentación", - "getting_started.free_software_notice": "Mastodon é código aberto e libre. Podes revisar o código, contribuir ou informar de fallos en {repository}.", "getting_started.heading": "Primeiros pasos", - "getting_started.invite": "Convidar persoas", - "getting_started.privacy_policy": "Política de Privacidade", - "getting_started.security": "Seguranza", - "getting_started.what_is_mastodon": "Acerca de Mastodon", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "ou {additional}", "hashtag.column_header.tag_mode.none": "sen {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Agochar notificacións desta usuaria?", "mute_modal.indefinite": "Indefinida", "navigation_bar.about": "Acerca de", - "navigation_bar.apps": "Obtén a app", "navigation_bar.blocks": "Usuarias bloqueadas", "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Cronoloxía local", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Palabras silenciadas", "navigation_bar.follow_requests": "Peticións de seguimento", "navigation_bar.follows_and_followers": "Seguindo e seguidoras", - "navigation_bar.info": "Acerca de", - "navigation_bar.keyboard_shortcuts": "Atallos do teclado", "navigation_bar.lists": "Listaxes", "navigation_bar.logout": "Pechar sesión", "navigation_bar.mutes": "Usuarias silenciadas", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Publicacións fixadas", "navigation_bar.preferences": "Preferencias", "navigation_bar.public_timeline": "Cronoloxía federada", - "navigation_bar.search": "Search", + "navigation_bar.search": "Buscar", "navigation_bar.security": "Seguranza", "not_signed_in_indicator.not_signed_in": "Debes acceder para ver este recurso.", "notification.admin.report": "{name} denunciou a {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Faltou ás regras", "report_notification.open": "Abrir a denuncia", "search.placeholder": "Procurar", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Formato de procura avanzada", "search_popout.tips.full_text": "Texto simple devolve toots que ti escribiches, promoviches, marcaches favoritos, ou foches mencionada, así como nomes de usuaria coincidentes, nomes públicos e cancelos.", "search_popout.tips.hashtag": "cancelo", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Aínda ninguén promoveu esta publicación. Cando alguén o faga, amosarase aquí.", "status.redraft": "Eliminar e reescribir", "status.remove_bookmark": "Eliminar marcador", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Respondeu a {name}", "status.reply": "Responder", "status.replyAll": "Responder ao tema", "status.report": "Denunciar @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "Amosar máis para todos", "status.show_original": "Mostrar o orixinal", "status.translate": "Traducir", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Traducido do {lang} usando {provider}", "status.uncached_media_warning": "Non dispoñíbel", "status.unmute_conversation": "Deixar de silenciar conversa", "status.unpin": "Desafixar do perfil", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparando OCR…", "upload_modal.preview_label": "Vista previa ({ratio})", "upload_progress.label": "Estase a subir...", + "upload_progress.processing": "Processing…", "video.close": "Pechar vídeo", "video.download": "Baixar ficheiro", "video.exit_fullscreen": "Saír da pantalla completa", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 59a3462ab..f886519e8 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "הרשאה", "follow_request.reject": "דחיה", "follow_requests.unlocked_explanation": "למרות שחשבונך אינו נעול, צוות {domain} חושב שאולי כדאי לוודא את בקשות המעקב האלה ידנית.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "נשמר", - "getting_started.directory": "Directory", - "getting_started.documentation": "תיעוד", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "בואו נתחיל", - "getting_started.invite": "להזמין אנשים", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "הגדרות חשבון", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "ו- {additional}", "hashtag.column_header.tag_mode.any": "או {additional}", "hashtag.column_header.tag_mode.none": "ללא {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "להסתיר התראות מחשבון זה?", "mute_modal.indefinite": "ללא תאריך סיום", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "משתמשים חסומים", "navigation_bar.bookmarks": "סימניות", "navigation_bar.community_timeline": "פיד שרת מקומי", @@ -375,8 +375,6 @@ "navigation_bar.filters": "מילים מושתקות", "navigation_bar.follow_requests": "בקשות מעקב", "navigation_bar.follows_and_followers": "נעקבים ועוקבים", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "קיצורי מקלדת", "navigation_bar.lists": "רשימות", "navigation_bar.logout": "התנתקות", "navigation_bar.mutes": "משתמשים בהשתקה", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "הפרת כלל", "report_notification.open": "פתח דו\"ח", "search.placeholder": "חיפוש", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "מבנה חיפוש מתקדם", "search_popout.tips.full_text": "טקסט פשוט מחזיר פוסטים שכתבת, חיבבת, הידהדת או שאוזכרת בהם, כמו גם שמות משתמשים, שמות להצגה ותגיות מתאימים.", "search_popout.tips.hashtag": "האשתג", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "מכין OCR…", "upload_modal.preview_label": "תצוגה ({ratio})", "upload_progress.label": "עולה...", + "upload_progress.processing": "Processing…", "video.close": "סגירת וידאו", "video.download": "הורדת קובץ", "video.exit_fullscreen": "יציאה ממסך מלא", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index 591cff025..a3efc91c6 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -39,7 +40,7 @@ "account.follows.empty": "यह यूज़र् अभी तक किसी को फॉलो नहीं करता है।", "account.follows_you": "आपको फॉलो करता है", "account.hide_reblogs": "@{name} के बूस्ट छुपाएं", - "account.joined_short": "Joined", + "account.joined_short": "पुरा हुआ", "account.languages": "Change subscribed languages", "account.link_verified_on": "इस लिंक का स्वामित्व {date} को चेक किया गया था", "account.locked_info": "यह खाता गोपनीयता स्थिति लॉक करने के लिए सेट है। मालिक मैन्युअल रूप से समीक्षा करता है कि कौन उनको फॉलो कर सकता है।", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "बंद", "bundle_modal_error.message": "इस कॉम्पोनेन्ट को लोड करते वक्त कुछ गलत हो गया", "bundle_modal_error.retry": "दुबारा कोशिश करें", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "जब से मास्टोडन विकेंद्रीकरण हुआ है, आप दुसरे सर्वर पर एक अकाउंट बना सकते हैं और अब भी इसके साथ उपयोग कर सकते हैं", + "closed_registrations_modal.description": "{domain} पर अकाउंट बनाना अभी संभव नहीं है, किन्तु कृपया ध्यान दें कि आपको मास्टोडन का प्रयोग करने के लिए {domain} पर एक अकाउंट का पूर्ण रूप से नहीं आवश्यकता हैं", + "closed_registrations_modal.find_another_server": "दूसरा सर्वर ढूंढें", + "closed_registrations_modal.preamble": "मास्टोडन विकेन्द्रित है, इसलिए कोई मतलब नहीं आप कहाँ अपना अकाउंट बना रहे हैं, आपको फॉलो करने के लिए सक्षम होना पड़ेगा और इस सर्वर पर किसी के साथ पूछना पड़ेगा I आप इसे खुद भी-चला सकते हैंI ", + "closed_registrations_modal.title": "मास्टोडन पर जुड़ा जा रहा", "column.about": "About", "column.blocks": "ब्लॉक्ड यूज़र्स", "column.bookmarks": "पुस्तकचिह्न:", @@ -258,15 +259,15 @@ "follow_request.authorize": "अधिकार दें", "follow_request.reject": "अस्वीकार करें", "follow_requests.unlocked_explanation": "हालाँकि आपका खाता लॉक नहीं है, फिर भी {domain} डोमेन स्टाफ ने सोचा कि आप इन खातों के मैन्युअल अनुरोधों की समीक्षा करना चाहते हैं।", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "प्रलेखन", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "पहले कदम रखें", - "getting_started.invite": "दोस्तों को आमंत्रित करें", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "अकाउंट सेटिंग्स", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "और {additional}", "hashtag.column_header.tag_mode.any": "या {additional}", "hashtag.column_header.tag_mode.none": "बिना {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "ब्लॉक्ड यूज़र्स", "navigation_bar.bookmarks": "पुस्तकचिह्न:", "navigation_bar.community_timeline": "लोकल टाइम्लाइन", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "अनुसरण करने के अनुरोध", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "सूचियाँ", "navigation_bar.logout": "बाहर जाए", "navigation_bar.mutes": "Muted users", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", - "navigation_bar.search": "Search", + "navigation_bar.search": "ढूंढें", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "खोजें", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -573,7 +572,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", - "status.replied_to": "Replied to {name}", + "status.replied_to": "{name} का उत्तर दें", "status.reply": "जवाब", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "Show more for all", "status.show_original": "Show original", "status.translate": "Translate", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "{provider} का उपयोग करते हुये {lang} से अनुवादित किया गया", "status.uncached_media_warning": "अनुपलब्ध", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "अपलोडिंग...", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "फाइल डाउनलोड करें", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index 252d08286..c413ef2b6 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autoriziraj", "follow_request.reject": "Odbij", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Spremljeno", - "getting_started.directory": "Directory", - "getting_started.documentation": "Dokumentacija", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Počnimo", - "getting_started.invite": "Pozovi ljude", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Postavke računa", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "i {additional}", "hashtag.column_header.tag_mode.any": "ili {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blokirani korisnici", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Lokalna vremenska crta", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Utišane riječi", "navigation_bar.follow_requests": "Zahtjevi za praćenje", "navigation_bar.follows_and_followers": "Praćeni i pratitelji", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Tipkovnički prečaci", "navigation_bar.lists": "Liste", "navigation_bar.logout": "Odjavi se", "navigation_bar.mutes": "Utišani korisnici", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Traži", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Format naprednog pretraživanja", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Prenošenje...", + "upload_progress.processing": "Processing…", "video.close": "Zatvori video", "video.download": "Preuzmi datoteku", "video.exit_fullscreen": "Izađi iz cijelog zaslona", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index a3f391bb6..f5682122a 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderált kiszolgálók", "about.contact": "Kapcsolat:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Indoklás", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "A Mastodon általában mindenféle tartalomcserét és interakciót lehetővé tesz bármelyik másik kiszolgálóval a födiverzumban. Ezek azok a kivételek, amelyek a mi kiszolgálónkon érvényben vannak.", @@ -39,7 +40,7 @@ "account.follows.empty": "Ez a felhasználó még senkit sem követ.", "account.follows_you": "Követ téged", "account.hide_reblogs": "@{name} megtolásainak elrejtése", - "account.joined_short": "Joined", + "account.joined_short": "Csatlakozott", "account.languages": "Feliratkozott nyelvek módosítása", "account.link_verified_on": "A linket eredetiségét ebben az időpontban ellenőriztük: {date}", "account.locked_info": "Ennek a fióknak zárolt a láthatósága. A tulajdonos kézzel engedélyezi, hogy ki követheti őt.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Engedélyezés", "follow_request.reject": "Elutasítás", "follow_requests.unlocked_explanation": "Bár a fiókod nincs zárolva, a(z) {domain} csapata úgy gondolta, hogy talán kézzel szeretnéd ellenőrizni a fiók követési kéréseit.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Elmentve", - "getting_started.directory": "Névjegyzék", - "getting_started.documentation": "Dokumentáció", - "getting_started.free_software_notice": "A Mastodon ingyenes, nyílt forráskódú szoftver. Megtekintheted a forrását, hozzájárulhatsz a fejlesztéséhez vagy jelenthetsz hibákat itt: {repository}", "getting_started.heading": "Első lépések", - "getting_started.invite": "Mások meghívása", - "getting_started.privacy_policy": "Adatvédelmi szabályzat", - "getting_started.security": "Fiókbeállítások", - "getting_started.what_is_mastodon": "A Mastodonról", "hashtag.column_header.tag_mode.all": "és {additional}", "hashtag.column_header.tag_mode.any": "vagy {additional}", "hashtag.column_header.tag_mode.none": "{additional} nélkül", @@ -354,14 +355,13 @@ "lists.subheading": "Listáid", "load_pending": "{count, plural, one {# új elem} other {# új elem}}", "loading_indicator.label": "Betöltés...", - "media_gallery.toggle_visible": "Láthatóság állítása", + "media_gallery.toggle_visible": "{number, plural, one {Kép elrejtése} other {Képek elrejtése}}", "missing_indicator.label": "Nincs találat", "missing_indicator.sublabel": "Ez az erőforrás nem található", "mute_modal.duration": "Időtartam", "mute_modal.hide_notifications": "Rejtsük el a felhasználótól származó értesítéseket?", "mute_modal.indefinite": "Határozatlan", "navigation_bar.about": "Névjegy", - "navigation_bar.apps": "Töltsd le az appot", "navigation_bar.blocks": "Letiltott felhasználók", "navigation_bar.bookmarks": "Könyvjelzők", "navigation_bar.community_timeline": "Helyi idővonal", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Némított szavak", "navigation_bar.follow_requests": "Követési kérelmek", "navigation_bar.follows_and_followers": "Követettek és követők", - "navigation_bar.info": "Névjegy", - "navigation_bar.keyboard_shortcuts": "Gyorsbillentyűk", "navigation_bar.lists": "Listák", "navigation_bar.logout": "Kijelentkezés", "navigation_bar.mutes": "Némított felhasználók", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Szabálysértés", "report_notification.open": "Bejelentés megnyitása", "search.placeholder": "Keresés", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Speciális keresés", "search_popout.tips.full_text": "Egyszerű szöveg, mely általad írt, kedvencnek jelölt vagy megtolt bejegyzéseket, rólad szóló megemlítéseket, felhasználói neveket, megjelenített neveket, hashtageket ad majd vissza.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "OCR előkészítése…", "upload_modal.preview_label": "Előnézet ({ratio})", "upload_progress.label": "Feltöltés...", + "upload_progress.processing": "Processing…", "video.close": "Videó bezárása", "video.download": "Fájl letöltése", "video.exit_fullscreen": "Kilépés teljes képernyőből", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index cd68f74d2..798153c27 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Վաւերացնել", "follow_request.reject": "Մերժել", "follow_requests.unlocked_explanation": "Այս հարցումը ուղարկուած է հաշուից, որի համար {domain}-ի անձնակազմը միացրել է ձեռքով ստուգում։", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Պահպանուած է", - "getting_started.directory": "Directory", - "getting_started.documentation": "Փաստաթղթեր", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Ինչպէս սկսել", - "getting_started.invite": "Հրաւիրել մարդկանց", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Հաշուի կարգաւորումներ", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "եւ {additional}", "hashtag.column_header.tag_mode.any": "կամ {additional}", "hashtag.column_header.tag_mode.none": "առանց {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Թաքցնե՞լ ծանուցումներն այս օգտատիրոջից։", "mute_modal.indefinite": "Անժամկէտ", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Արգելափակուած օգտատէրեր", "navigation_bar.bookmarks": "Էջանիշեր", "navigation_bar.community_timeline": "Տեղական հոսք", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Լռեցուած բառեր", "navigation_bar.follow_requests": "Հետեւելու հայցեր", "navigation_bar.follows_and_followers": "Հետեւածներ եւ հետեւողներ", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Ստեղնաշարի կարճատներ", "navigation_bar.lists": "Ցանկեր", "navigation_bar.logout": "Դուրս գալ", "navigation_bar.mutes": "Լռեցրած օգտատէրեր", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Փնտրել", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Փնտրելու առաջադէմ ձեւ", "search_popout.tips.full_text": "Պարզ տեքստը վերադարձնում է գրառումներդ, հաւանածներդ, տարածածներդ, որտեղ ես նշուած եղել, ինչպէս նաեւ նման օգտանուններ, անուններ եւ պիտակներ։", "search_popout.tips.hashtag": "պիտակ", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Գրաճանաչման նախապատրաստում…", "upload_modal.preview_label": "Նախադիտում ({ratio})", "upload_progress.label": "Վերբեռնվում է…", + "upload_progress.processing": "Processing…", "video.close": "Փակել տեսագրութիւնը", "video.download": "Ներբեռնել նիշքը", "video.exit_fullscreen": "Անջատել լիաէկրան դիտումը", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index fb86fda37..b75a1a332 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -1,17 +1,18 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", + "about.blocks": "Server yang dimoderasi", + "about.contact": "Hubungi:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.domain_blocks.comment": "Alasan", "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.domain_blocks.preamble": "Mastodon umumnya mengizinkan Anda untuk melihat konten dan berinteraksi dengan pengguna dari server lain di fediverse. Ini adalah pengecualian yang dibuat untuk beberapa server.", + "about.domain_blocks.severity": "Keparahan", + "about.domain_blocks.silenced.explanation": "Anda secara umum tidak melihat profil dan konten dari server ini, kecuali jika Anda mencarinya atau memilihnya dengan mengikuti secara eksplisit.", + "about.domain_blocks.silenced.title": "Terbatas", + "about.domain_blocks.suspended.explanation": "Tidak ada data yang diproses, disimpan, atau ditukarkan dari server ini, membuat interaksi atau komunikasi dengan pengguna dari server ini tidak mungkin dilakukan.", + "about.domain_blocks.suspended.title": "Ditangguhkan", + "about.not_available": "Informasi ini belum tersedia di server ini.", + "about.powered_by": "Media sosial terdesentralisasi diberdayakan oleh {mastodon}", + "about.rules": "Aturan server", "account.account_note_header": "Catatan", "account.add_or_remove_from_list": "Tambah atau Hapus dari daftar", "account.badges.bot": "בוט", @@ -20,27 +21,27 @@ "account.block_domain": "Blokir domain {domain}", "account.blocked": "Terblokir", "account.browse_more_on_origin_server": "Lihat lebih lanjut diprofil asli", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Batalkan permintaan ikut", "account.direct": "Pesan Langsung @{name}", "account.disable_notifications": "Berhenti memberitahu saya ketika @{name} memposting", "account.domain_blocked": "Domain diblokir", "account.edit_profile": "Ubah profil", "account.enable_notifications": "Beritahu saya saat @{name} memposting", "account.endorse": "Tampilkan di profil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Kiriman terakhir pada {date}", + "account.featured_tags.last_status_never": "Tidak ada kiriman", + "account.featured_tags.title": "Tagar {name} yang difiturkan", "account.follow": "Ikuti", "account.followers": "Pengikut", "account.followers.empty": "Pengguna ini belum ada pengikut.", "account.followers_counter": "{count, plural, other {{counter} Pengikut}}", "account.following": "Mengikuti", "account.following_counter": "{count, plural, other {{counter} Mengikuti}}", - "account.follows.empty": "Pengguna ini belum mengikuti siapapun.", - "account.follows_you": "Mengikuti anda", + "account.follows.empty": "Pengguna ini belum mengikuti siapa pun.", + "account.follows_you": "Mengikuti Anda", "account.hide_reblogs": "Sembunyikan boosts dari @{name}", - "account.joined_short": "Joined", - "account.languages": "Change subscribed languages", + "account.joined_short": "Bergabung", + "account.languages": "Ubah langganan bahasa", "account.link_verified_on": "Kepemilikan tautan ini telah dicek pada {date}", "account.locked_info": "Status privasi akun ini disetel untuk dikunci. Pemilik secara manual meninjau siapa yang dapat mengikutinya.", "account.media": "Media", @@ -50,12 +51,12 @@ "account.mute_notifications": "Bisukan pemberitahuan dari @{name}", "account.muted": "Dibisukan", "account.posts": "Kiriman", - "account.posts_with_replies": "Postingan dengan balasan", + "account.posts_with_replies": "Kiriman dan balasan", "account.report": "Laporkan @{name}", "account.requested": "Menunggu persetujuan. Klik untuk membatalkan permintaan", "account.share": "Bagikan profil @{name}", "account.show_reblogs": "Tampilkan boost dari @{name}", - "account.statuses_counter": "{count, plural, other {{counter} Toot}}", + "account.statuses_counter": "{count, plural, other {{counter} Kiriman}}", "account.unblock": "Hapus blokir @{name}", "account.unblock_domain": "Buka blokir domain {domain}", "account.unblock_short": "Buka blokir", @@ -79,24 +80,24 @@ "audio.hide": "Indonesia", "autosuggest_hashtag.per_week": "{count} per minggu", "boost_modal.combo": "Anda dapat menekan {combo} untuk melewati ini", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Salin laporan kesalahan", + "bundle_column_error.error.body": "Laman yang diminta tidak dapat ditampilkan. Mungkin karena sebuah kutu dalam kode kami, atau masalah kompatibilitas peramban.", + "bundle_column_error.error.title": "Oh, tidak!", + "bundle_column_error.network.body": "Ada kesalahan ketika memuat laman ini. Ini dapat terjadi karena masalah sementara dengan koneksi internet Anda atau server ini.", + "bundle_column_error.network.title": "Kesalahan jaringan", "bundle_column_error.retry": "Coba lagi", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Kembali ke beranda", + "bundle_column_error.routing.body": "Laman yang diminta tidak ditemukan. Apakah Anda yakin bahwa URL dalam bilah alamat benar?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Tutup", "bundle_modal_error.message": "Kesalahan terjadi saat memuat komponen ini.", "bundle_modal_error.retry": "Coba lagi", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", + "closed_registrations.other_server_instructions": "Karena Mastodon itu terdesentralisasi, Anda dapat membuat sebuah akun di server lain dan masih dapat berinteraksi dengan satu ini.", + "closed_registrations_modal.description": "Membuat sebuah akun di {domain} saat ini tidak memungkinkan, tetapi diingat bahwa Anda tidak harus memiliki sebuah akun secara khusus di {domain} untuk menggunakan Mastodon.", + "closed_registrations_modal.find_another_server": "Cari server lain", + "closed_registrations_modal.preamble": "Mastodon itu terdesentralisasi, jadi di mana pun Anda buat akun, Anda masih akan dapat mengikuti dan berinteraksi dengan siapa pun di server ini. Anda bahkan dapat host Mastodon sendiri!", + "closed_registrations_modal.title": "Mendaftar di Mastodon", + "column.about": "Tentang", "column.blocks": "Pengguna yang diblokir", "column.bookmarks": "Markah", "column.community": "Linimasa Lokal", @@ -126,10 +127,10 @@ "compose.language.search": "Telusuri bahasa...", "compose_form.direct_message_warning_learn_more": "Pelajari selengkapnya", "compose_form.encryption_warning": "Kiriman di Mastodon tidak dienkripsi end-to-end. Jangan bagikan informasi sensitif melalui Mastodon.", - "compose_form.hashtag_warning": "Toot ini tidak akan ada dalam daftar tagar manapun karena telah diatur sebagai tidak terdaftar. Hanya postingan publik yang bisa dicari dengan tagar.", - "compose_form.lock_disclaimer": "Akun anda tidak {locked}. Semua orang dapat mengikuti anda untuk melihat postingan khusus untuk pengikut anda.", + "compose_form.hashtag_warning": "Kiriman ini tidak akan ada dalam daftar tagar mana pun karena telah diatur sebagai tidak terdaftar. Hanya kiriman publik yang bisa dicari dengan tagar.", + "compose_form.lock_disclaimer": "Akun Anda tidak {locked}. Semua orang dapat mengikuti Anda untuk melihat kiriman khusus untuk pengikut Anda.", "compose_form.lock_disclaimer.lock": "terkunci", - "compose_form.placeholder": "Apa yang ada di pikiran anda?", + "compose_form.placeholder": "Apa yang ada di pikiran Anda?", "compose_form.poll.add_option": "Tambahkan pilihan", "compose_form.poll.duration": "Durasi polling", "compose_form.poll.option_placeholder": "Pilihan {number}", @@ -148,45 +149,45 @@ "confirmation_modal.cancel": "Batal", "confirmations.block.block_and_report": "Blokir & Laporkan", "confirmations.block.confirm": "Blokir", - "confirmations.block.message": "Apa anda yakin ingin memblokir {name}?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.block.message": "Apa Anda yakin ingin memblokir {name}?", + "confirmations.cancel_follow_request.confirm": "Batalkan permintaan", + "confirmations.cancel_follow_request.message": "Apakah Anda yakin ingin membatalkan permintaan Anda untuk mengikuti {name}?", "confirmations.delete.confirm": "Hapus", - "confirmations.delete.message": "Apa anda yakin untuk menghapus status ini?", + "confirmations.delete.message": "Apakah Anda yakin untuk menghapus kiriman ini?", "confirmations.delete_list.confirm": "Hapus", - "confirmations.delete_list.message": "Apakah anda yakin untuk menghapus daftar ini secara permanen?", + "confirmations.delete_list.message": "Apakah Anda yakin untuk menghapus daftar ini secara permanen?", "confirmations.discard_edit_media.confirm": "Buang", "confirmations.discard_edit_media.message": "Anda belum menyimpan perubahan deskripsi atau pratinjau media, buang saja?", "confirmations.domain_block.confirm": "Sembunyikan keseluruhan domain", - "confirmations.domain_block.message": "Apakah anda benar benar yakin untuk memblokir keseluruhan {domain}? Dalam kasus tertentu beberapa pemblokiran atau penyembunyian lebih baik.", + "confirmations.domain_block.message": "Apakah Anda benar-benar yakin untuk memblokir keseluruhan {domain}? Dalam kasus tertentu beberapa pemblokiran atau penyembunyian lebih baik.", "confirmations.logout.confirm": "Keluar", - "confirmations.logout.message": "Apakah anda yakin ingin keluar?", + "confirmations.logout.message": "Apakah Anda yakin ingin keluar?", "confirmations.mute.confirm": "Bisukan", "confirmations.mute.explanation": "Ini akan menyembunyikan pos dari mereka dan pos yang menyebut mereka, tapi ini tetap mengizinkan mereka melihat posmu dan mengikutimu.", - "confirmations.mute.message": "Apa anda yakin ingin membisukan {name}?", + "confirmations.mute.message": "Apa Anda yakin ingin membisukan {name}?", "confirmations.redraft.confirm": "Hapus dan susun ulang", - "confirmations.redraft.message": "Apakah anda yakin ingin menghapus dan menyusun ulang? Favorit dan boost akan hilang, dan balasan terhadap kiriman asli akan ditinggalkan.", + "confirmations.redraft.message": "Apakah Anda yakin ingin menghapus dan draf ulang? Favorit dan boost akan hilang, dan balasan terhadap kiriman asli akan ditinggalkan.", "confirmations.reply.confirm": "Balas", "confirmations.reply.message": "Membalas sekarang akan menimpa pesan yang sedang Anda buat. Anda yakin ingin melanjutkan?", "confirmations.unfollow.confirm": "Berhenti mengikuti", - "confirmations.unfollow.message": "Apakah anda ingin berhenti mengikuti {name}?", + "confirmations.unfollow.message": "Apakah Anda ingin berhenti mengikuti {name}?", "conversation.delete": "Hapus percakapan", "conversation.mark_as_read": "Tandai sudah dibaca", "conversation.open": "Lihat percakapan", "conversation.with": "Dengan {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Disalin", + "copypaste.copy": "Salin", "directory.federated": "Dari fediverse yang dikenal", "directory.local": "Dari {domain} saja", "directory.new_arrivals": "Yang baru datang", "directory.recently_active": "Baru-baru ini aktif", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "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_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", - "embed.instructions": "Sematkan kiriman ini di website anda dengan menyalin kode di bawah ini.", + "dismissable_banner.community_timeline": "Ini adalah kiriman publik terkini dari orang yang akunnya berada di {domain}.", + "dismissable_banner.dismiss": "Abaikan", + "dismissable_banner.explore_links": "Cerita berita ini sekarang sedang dibicarakan oleh orang di server ini dan lainnya dalam jaringan terdesentralisasi.", + "dismissable_banner.explore_statuses": "Kiriman ini dari server ini dan lainnya dalam jaringan terdesentralisasi sekarang sedang tren di server ini.", + "dismissable_banner.explore_tags": "Tagar ini sekarang sedang tren di antara orang di server ini dan lainnya dalam jaringan terdesentralisasi.", + "dismissable_banner.public_timeline": "Ini adalah kiriman publik terkini dari orang di server ini dan lainnya dalam jaringan terdesentralisasi yang server ini tahu.", + "embed.instructions": "Sematkan kiriman ini di situs web Anda dengan menyalin kode di bawah ini.", "embed.preview": "Tampilan akan seperti ini nantinya:", "emoji_button.activity": "Aktivitas", "emoji_button.clear": "Hapus", @@ -206,67 +207,67 @@ "empty_column.account_suspended": "Akun ditangguhkan", "empty_column.account_timeline": "Tidak ada toot di sini!", "empty_column.account_unavailable": "Profil tidak tersedia", - "empty_column.blocks": "Anda belum memblokir siapapun.", - "empty_column.bookmarked_statuses": "Anda belum memiliki toot termarkah. Saat Anda menandainya sebagai markah, ia akan muncul di sini.", + "empty_column.blocks": "Anda belum memblokir siapa pun.", + "empty_column.bookmarked_statuses": "Anda belum memiliki kiriman termarkah. Saat Anda menandainya sebagai markah, mereka akan muncul di sini.", "empty_column.community": "Linimasa lokal masih kosong. Tulis sesuatu secara publik dan buat roda berputar!", "empty_column.direct": "Anda belum memiliki pesan langsung. Ketika Anda mengirim atau menerimanya, maka akan muncul di sini.", "empty_column.domain_blocks": "Tidak ada topik tersembunyi.", - "empty_column.explore_statuses": "Tidak ada yang sedang tren pada saat ini. Silakan mengecek lagi nanti!", - "empty_column.favourited_statuses": "Anda belum memiliki toot favorit. Ketika Anda mengirim atau menerimanya, maka akan muncul di sini.", - "empty_column.favourites": "Belum ada yang memfavoritkan toot ini. Ketika seseorang melakukannya, akan muncul disini.", + "empty_column.explore_statuses": "Tidak ada yang sedang tren pada saat ini. Periksa lagi nanti!", + "empty_column.favourited_statuses": "Anda belum memiliki kiriman favorit. Ketika Anda mengirim atau menerimanya, mereka akan muncul di sini.", + "empty_column.favourites": "Belum ada yang memfavoritkan toot ini. Ketika seseorang melakukannya, mereka akan muncul di sini.", "empty_column.follow_recommendations": "Sepertinya tak ada saran yang dibuat untuk Anda. Anda dapat mencoba menggunakan pencarian untuk menemukan orang yang Anda ketahui atau menjelajahi tagar yang sedang tren.", - "empty_column.follow_requests": "Anda belum memiliki permintaan mengikuti. Ketika Anda menerimanya, maka akan muncul disini.", - "empty_column.hashtag": "Tidak ada apapun dalam hashtag ini.", + "empty_column.follow_requests": "Anda belum memiliki permintaan mengikuti. Ketika Anda menerimanya, maka itu akan muncul di sini.", + "empty_column.hashtag": "Tidak ada apa pun dalam hashtag ini.", "empty_column.home": "Linimasa anda kosong! Kunjungi {public} atau gunakan pencarian untuk memulai dan bertemu pengguna lain.", "empty_column.home.suggestions": "Lihat beberapa saran", - "empty_column.list": "Tidak ada postingan di list ini. Ketika anggota dari list ini memposting status baru, status tersebut akan tampil disini.", - "empty_column.lists": "Anda belum memiliki daftar. Ketika Anda membuatnya, maka akan muncul disini.", - "empty_column.mutes": "Anda belum membisukan siapapun.", - "empty_column.notifications": "Anda tidak memiliki notifikasi apapun. Berinteraksi dengan orang lain untuk memulai percakapan.", - "empty_column.public": "Tidak ada apapun disini! Tulis sesuatu, atau ikuti pengguna lain dari server lain untuk mengisi ini", + "empty_column.list": "Belum ada apa pun di daftar ini. Ketika anggota dari daftar ini mengirim kiriman baru, mereka akan tampil di sini.", + "empty_column.lists": "Anda belum memiliki daftar. Ketika Anda membuatnya, maka akan muncul di sini.", + "empty_column.mutes": "Anda belum membisukan siapa pun.", + "empty_column.notifications": "Anda belum memiliki notifikasi. Ketika orang lain berinteraksi dengan Anda, Anda akan melihatnya di sini.", + "empty_column.public": "Tidak ada apa pun di sini! Tulis sesuatu, atau ikuti pengguna lain dari server lain untuk mengisi ini", "error.unexpected_crash.explanation": "Karena kutu pada kode kami atau isu kompatibilitas peramban, halaman tak dapat ditampilkan dengan benar.", "error.unexpected_crash.explanation_addons": "Halaman ini tidak dapat ditampilkan dengan benar. Kesalahan ini mungkin disebabkan pengaya peramban atau alat terjemahan otomatis.", - "error.unexpected_crash.next_steps": "Coba segarkan halaman. Jika tak membantu, Anda masih bisa memakai Mastodon dengan peramban berbeda atau aplikasi native.", - "error.unexpected_crash.next_steps_addons": "Coba nonaktifkan mereka lalu segarkan halaman. Jika tak membantu, Anda masih bisa memakai Mastodon dengan peramban berbeda atau aplikasi murni.", + "error.unexpected_crash.next_steps": "Coba segarkan halaman. Jika itu tidak membantu, Anda masih bisa memakai Mastodon dengan peramban berbeda atau aplikasi asli.", + "error.unexpected_crash.next_steps_addons": "Coba nonaktifkan mereka lalu segarkan halaman. Jika itu tidak membantu, Anda masih bisa memakai Mastodon dengan peramban berbeda atau aplikasi asli.", "errors.unexpected_crash.copy_stacktrace": "Salin stacktrace ke papan klip", "errors.unexpected_crash.report_issue": "Laporkan masalah", "explore.search_results": "Hasil pencarian", "explore.suggested_follows": "Untuk Anda", "explore.title": "Jelajahi", "explore.trending_links": "Berita", - "explore.trending_statuses": "Postingan", + "explore.trending_statuses": "Kiriman", "explore.trending_tags": "Tagar", "filter_modal.added.context_mismatch_explanation": "Indonesia Translate", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_title": "Konteks tidak cocok!", + "filter_modal.added.expired_explanation": "Kategori saringan ini telah kedaluwarsa, Anda harus mengubah tanggal kedaluwarsa untuk diterapkan.", + "filter_modal.added.expired_title": "Saringan kedaluwarsa!", + "filter_modal.added.review_and_configure": "Untuk meninjau dan mengatur kategori saringan ini lebih jauh, pergi ke {settings_link}.", + "filter_modal.added.review_and_configure_title": "Pengaturan saringan", + "filter_modal.added.settings_link": "laman pengaturan", + "filter_modal.added.short_explanation": "Kiriman ini telah ditambahkan ke kategori saringan berikut: {title}.", + "filter_modal.added.title": "Saringan ditambahkan!", + "filter_modal.select_filter.context_mismatch": "tidak diterapkan ke konteks ini", + "filter_modal.select_filter.expired": "kedaluwarsa", + "filter_modal.select_filter.prompt_new": "Kategori baru: {name}", + "filter_modal.select_filter.search": "Cari atau buat", + "filter_modal.select_filter.subtitle": "Gunakan kategori yang sudah ada atau buat yang baru", + "filter_modal.select_filter.title": "Saring kiriman ini", + "filter_modal.title.status": "Saring sebuah kiriman", "follow_recommendations.done": "Selesai", "follow_recommendations.heading": "Ikuti orang yang ingin Anda lihat kirimannya! Ini ada beberapa saran.", "follow_recommendations.lead": "Kiriman dari orang yang Anda ikuti akan tampil berdasar waktu di beranda Anda. Jangan takut membuat kesalahan, Anda dapat berhenti mengikuti mereka dengan mudah kapan saja!", "follow_request.authorize": "Izinkan", "follow_request.reject": "Tolak", "follow_requests.unlocked_explanation": "Meskipun akun Anda tidak dikunci, staf {domain} menyarankan Anda untuk meninjau permintaan mengikuti dari akun-akun ini secara manual.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Disimpan", - "getting_started.directory": "Directory", - "getting_started.documentation": "Dokumentasi", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Mulai", - "getting_started.invite": "Undang orang", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Keamanan", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "dan {additional}", "hashtag.column_header.tag_mode.any": "atau {additional}", "hashtag.column_header.tag_mode.none": "tanpa {additional}", @@ -276,48 +277,48 @@ "hashtag.column_settings.tag_mode.any": "Semua ini", "hashtag.column_settings.tag_mode.none": "Tak satu pun", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", - "hashtag.follow": "Follow hashtag", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.follow": "Ikuti tagar", + "hashtag.unfollow": "Batalkan pengikutan tagar", "home.column_settings.basic": "Dasar", "home.column_settings.show_reblogs": "Tampilkan boost", "home.column_settings.show_replies": "Tampilkan balasan", "home.hide_announcements": "Sembunyikan pengumuman", "home.show_announcements": "Tampilkan pengumuman", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Dengan sebuah akun di Mastodon, Anda bisa memfavorit kiriman ini untuk memberi tahu penulis bahwa Anda mengapresiasinya dan menyimpannya untuk nanti.", + "interaction_modal.description.follow": "Dengan sebuah akun di Mastodon, Anda bisa mengikuti {name} untuk menerima kirimannya di beranda Anda.", + "interaction_modal.description.reblog": "Dengan sebuah akun di Mastodon, Anda bisa mem-boost kiriman ini untuk membagikannya ke pengikut Anda sendiri.", + "interaction_modal.description.reply": "Dengan sebuah akun di Mastodon, Anda bisa menanggapi kiriman ini.", + "interaction_modal.on_another_server": "Di server lain", + "interaction_modal.on_this_server": "Di server ini", + "interaction_modal.other_server_instructions": "Tinggal salin dan tempelkan URL ini ke bilah pencarian di aplikasi favorit Anda atau antarmuka web di mana Anda masuk.", + "interaction_modal.preamble": "Karena Mastodon itu terdesentralisasi, Anda dapat menggunakan akun Anda yang sudah ada yang berada di server Mastodon lain atau platform yang kompatibel jika Anda tidak memiliki sebuah akun di sini.", + "interaction_modal.title.favourite": "Favoritkan kiriman {name}", + "interaction_modal.title.follow": "Ikuti {name}", + "interaction_modal.title.reblog": "Boost kiriman {name}", + "interaction_modal.title.reply": "Balas ke kiriman {name}", "intervals.full.days": "{number, plural, other {# hari}}", "intervals.full.hours": "{number, plural, other {# jam}}", "intervals.full.minutes": "{number, plural, other {# menit}}", "keyboard_shortcuts.back": "untuk kembali", "keyboard_shortcuts.blocked": "buka daftar pengguna terblokir", "keyboard_shortcuts.boost": "untuk menyebarkan", - "keyboard_shortcuts.column": "untuk fokus kepada sebuah status di sebuah kolom", + "keyboard_shortcuts.column": "Fokus kolom", "keyboard_shortcuts.compose": "untuk fokus ke area penulisan", "keyboard_shortcuts.description": "Deskripsi", "keyboard_shortcuts.direct": "untuk membuka kolom pesan langsung", "keyboard_shortcuts.down": "untuk pindah ke bawah dalam sebuah daftar", - "keyboard_shortcuts.enter": "untuk membuka status", + "keyboard_shortcuts.enter": "Buka kiriman", "keyboard_shortcuts.favourite": "untuk memfavoritkan", "keyboard_shortcuts.favourites": "buka daftar favorit", "keyboard_shortcuts.federated": "buka linimasa gabungan", "keyboard_shortcuts.heading": "Pintasan keyboard", - "keyboard_shortcuts.home": "buka linimasa beranda", + "keyboard_shortcuts.home": "Buka linimasa beranda", "keyboard_shortcuts.hotkey": "Pintasan", "keyboard_shortcuts.legend": "tampilkan legenda ini", "keyboard_shortcuts.local": "buka linimasa lokal", "keyboard_shortcuts.mention": "sebut pencipta", "keyboard_shortcuts.muted": "buka daftar pengguna terbisukan", - "keyboard_shortcuts.my_profile": "buka profil Anda", + "keyboard_shortcuts.my_profile": "Buka profil Anda", "keyboard_shortcuts.notifications": "buka kolom notifikasi", "keyboard_shortcuts.open_media": "membuka media", "keyboard_shortcuts.pinned": "buka daftar toot tersemat", @@ -346,7 +347,7 @@ "lists.edit.submit": "Ubah judul", "lists.new.create": "Tambah daftar", "lists.new.title_placeholder": "Judul daftar baru", - "lists.replies_policy.followed": "Siapapun pengguna yang diikuti", + "lists.replies_policy.followed": "Siapa pun pengguna yang diikuti", "lists.replies_policy.list": "Anggota di daftar tersebut", "lists.replies_policy.none": "Tidak ada satu pun", "lists.replies_policy.title": "Tampilkan balasan ke:", @@ -360,8 +361,7 @@ "mute_modal.duration": "Durasi", "mute_modal.hide_notifications": "Sembunyikan notifikasi dari pengguna ini?", "mute_modal.indefinite": "Tak terbatas", - "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", + "navigation_bar.about": "Tentang", "navigation_bar.blocks": "Pengguna diblokir", "navigation_bar.bookmarks": "Markah", "navigation_bar.community_timeline": "Linimasa lokal", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Kata yang dibisukan", "navigation_bar.follow_requests": "Permintaan mengikuti", "navigation_bar.follows_and_followers": "Ikuti dan pengikut", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Pintasan keyboard", "navigation_bar.lists": "Daftar", "navigation_bar.logout": "Keluar", "navigation_bar.mutes": "Pengguna dibisukan", @@ -384,22 +382,22 @@ "navigation_bar.pins": "Toot tersemat", "navigation_bar.preferences": "Pengaturan", "navigation_bar.public_timeline": "Linimasa gabungan", - "navigation_bar.search": "Search", + "navigation_bar.search": "Cari", "navigation_bar.security": "Keamanan", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Anda harus masuk untuk mengakses sumber daya ini.", "notification.admin.report": "{name} melaporkan {target}", "notification.admin.sign_up": "{name} mendaftar", - "notification.favourite": "{name} menyukai status anda", - "notification.follow": "{name} mengikuti anda", + "notification.favourite": "{name} memfavorit kiriman Anda", + "notification.follow": "{name} mengikuti Anda", "notification.follow_request": "{name} ingin mengikuti Anda", "notification.mention": "{name} menyebut Anda", "notification.own_poll": "Japat Anda telah berakhir", "notification.poll": "Japat yang Anda ikuti telah berakhir", - "notification.reblog": "{name} mem-boost status anda", - "notification.status": "{name} baru saja memposting", + "notification.reblog": "{name} mem-boost kiriman Anda", + "notification.status": "{name} baru saja mengirim", "notification.update": "{name} mengedit kiriman", "notifications.clear": "Hapus notifikasi", - "notifications.clear_confirmation": "Apa anda yakin hendak menghapus semua notifikasi anda?", + "notifications.clear_confirmation": "Apa Anda yakin hendak menghapus semua notifikasi Anda?", "notifications.column_settings.admin.report": "Laporan baru:", "notifications.column_settings.admin.sign_up": "Pendaftaran baru:", "notifications.column_settings.alert": "Notifikasi desktop", @@ -415,7 +413,7 @@ "notifications.column_settings.reblog": "Boost:", "notifications.column_settings.show": "Tampilkan dalam kolom", "notifications.column_settings.sound": "Mainkan suara", - "notifications.column_settings.status": "Toot baru:", + "notifications.column_settings.status": "Kiriman baru:", "notifications.column_settings.unread_notifications.category": "Notifikasi yang belum dibaca", "notifications.column_settings.unread_notifications.highlight": "Sorot notifikasi yang belum dibaca", "notifications.column_settings.update": "Edit:", @@ -434,31 +432,31 @@ "notifications.permission_required": "Notifikasi desktop tidak tersedia karena izin yang dibutuhkan belum disetujui.", "notifications_permission_banner.enable": "Aktifkan notifikasi desktop", "notifications_permission_banner.how_to_control": "Untuk menerima notifikasi saat Mastodon terbuka, aktifkan notifikasi desktop. Anda dapat mengendalikan tipe interaksi mana yang ditampilkan notifikasi desktop melalui tombol {icon} di atas saat sudah aktif.", - "notifications_permission_banner.title": "Jangan lewatkan apapun", + "notifications_permission_banner.title": "Jangan lewatkan apa pun", "picture_in_picture.restore": "Taruh kembali", "poll.closed": "Ditutup", "poll.refresh": "Segarkan", "poll.total_people": "{count, plural, other {# orang}}", "poll.total_votes": "{count, plural, other {# suara}}", - "poll.vote": "Memilih", + "poll.vote": "Pilih", "poll.voted": "Anda memilih jawaban ini", "poll.votes": "{votes, plural, other {# suara}}", "poll_button.add_poll": "Tambah japat", "poll_button.remove_poll": "Hapus japat", - "privacy.change": "Tentukan privasi status", + "privacy.change": "Ubah privasi kiriman", "privacy.direct.long": "Kirim hanya ke pengguna yang disebut", "privacy.direct.short": "Orang yang disebutkan saja", - "privacy.private.long": "Kirim postingan hanya kepada pengikut", + "privacy.private.long": "Kirim kiriman hanya kepada pengikut", "privacy.private.short": "Pengikut saja", "privacy.public.long": "Terlihat oleh semua", "privacy.public.short": "Publik", "privacy.unlisted.long": "Terlihat oleh semua, tapi jangan tampilkan di fitur jelajah", "privacy.unlisted.short": "Tak Terdaftar", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Terakhir diperbarui {date}", + "privacy_policy.title": "Kebijakan Privasi", "refresh": "Segarkan", "regeneration_indicator.label": "Memuat…", - "regeneration_indicator.sublabel": "Linimasa anda sedang disiapkan!", + "regeneration_indicator.sublabel": "Beranda Anda sedang disiapkan!", "relative_time.days": "{number}h", "relative_time.full.days": "{number, plural, other {# hari}} yang lalu", "relative_time.full.hours": "{number, plural, other {# jam}} yang lalu", @@ -472,20 +470,20 @@ "relative_time.today": "hari ini", "reply_indicator.cancel": "Batal", "report.block": "Blokir", - "report.block_explanation": "Anda tidak akan melihat postingan mereka. Mereka tidak akan bisa melihat postingan Anda atau mengikuti Anda. Mereka akan mampu menduga bahwa mereka diblokir.", + "report.block_explanation": "Anda tidak akan melihat kiriman mereka. Mereka tidak akan bisa melihat kiriman Anda atau mengikuti Anda. Mereka akan mampu menduga bahwa mereka diblokir.", "report.categories.other": "Lainnya", "report.categories.spam": "Spam", "report.categories.violation": "Konten melanggar satu atau lebih peraturan server", "report.category.subtitle": "Pilih pasangan terbaik", "report.category.title": "Beritahu kami apa yang terjadi dengan {type} ini", "report.category.title_account": "profil", - "report.category.title_status": "postingan", + "report.category.title_status": "kiriman", "report.close": "Selesai", "report.comment.title": "Adakah hal lain yang perlu kami ketahui?", "report.forward": "Teruskan ke {target}", "report.forward_hint": "Akun dari server lain. Kirim salinan laporan scr anonim ke sana?", "report.mute": "Bisukan", - "report.mute_explanation": "Anda tidak akan melihat postingan mereka. Mereka masih dapat mengikuti Anda dan melihat postingan Anda dan tidak akan mengetahui bahwa mereka dibisukan.", + "report.mute_explanation": "Anda tidak akan melihat kiriman mereka. Mereka masih dapat mengikuti Anda dan melihat kiriman Anda dan tidak akan mengetahui bahwa mereka dibisukan.", "report.next": "Selanjutnya", "report.placeholder": "Komentar tambahan", "report.reasons.dislike": "Saya tidak menyukainya", @@ -499,7 +497,7 @@ "report.rules.subtitle": "Pilih semua yang berlaku", "report.rules.title": "Ketentuan manakah yang dilanggar?", "report.statuses.subtitle": "Pilih semua yang berlaku", - "report.statuses.title": "Adakah postingan yang mendukung pelaporan ini?", + "report.statuses.title": "Adakah kiriman yang mendukung pelaporan ini?", "report.submit": "Kirim", "report.target": "Melaporkan", "report.thanks.take_action": "Berikut adalah pilihan Anda untuk mengatur apa yang Anda lihat di Mastodon:", @@ -507,43 +505,44 @@ "report.thanks.title": "Tidak ingin melihat ini?", "report.thanks.title_actionable": "Terima kasih atas pelaporan Anda, kami akan memeriksa ini lebih lanjut.", "report.unfollow": "Berhenti mengikuti @{name}", - "report.unfollow_explanation": "Anda mengikuti akun ini. Untuk tidak melihat postingan mereka di Beranda Anda, berhenti mengikuti mereka.", - "report_notification.attached_statuses": "{count, plural, other {{count} postingan}} terlampir", + "report.unfollow_explanation": "Anda mengikuti akun ini. Untuk tidak melihat kiriman mereka di beranda Anda, berhenti mengikuti mereka.", + "report_notification.attached_statuses": "{count, plural, other {{count} kiriman}} terlampir", "report_notification.categories.other": "Lainnya", "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Pelanggaran peraturan", "report_notification.open": "Buka laporan", "search.placeholder": "Pencarian", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Format pencarian mahir", - "search_popout.tips.full_text": "Teks simpel menampilkan status yang Anda tulis, favoritkan, boost-kan, atau status yang menyebut Anda, serta nama pengguna, nama yang ditampilkan, dan tagar yang cocok.", + "search_popout.tips.full_text": "Teks simpel memberikan kiriman yang Anda telah tulis, favorit, boost, atau status yang menyebut Anda, serta nama pengguna, nama yang ditampilkan, dan tagar yang cocok.", "search_popout.tips.hashtag": "tagar", - "search_popout.tips.status": "status", + "search_popout.tips.status": "kiriman", "search_popout.tips.text": "Teks sederhana menampilkan nama yang ditampilkan, nama pengguna, dan tagar yang cocok", "search_popout.tips.user": "pengguna", "search_results.accounts": "Orang", "search_results.all": "Semua", "search_results.hashtags": "Tagar", - "search_results.nothing_found": "Tidak dapat menemukan apapun untuk istilah-istilah pencarian ini", - "search_results.statuses": "Toot", - "search_results.statuses_fts_disabled": "Pencarian toot berdasarkan konten tidak diaktifkan di server Mastadon ini.", - "search_results.title": "Search for {q}", + "search_results.nothing_found": "Tidak dapat menemukan apa pun untuk istilah-istilah pencarian ini", + "search_results.statuses": "Kiriman", + "search_results.statuses_fts_disabled": "Pencarian kiriman berdasarkan konten tidak diaktifkan di server Mastodon ini.", + "search_results.title": "Cari {q}", "search_results.total": "{count, number} {count, plural, one {hasil} other {hasil}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", - "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", - "status.admin_account": "Buka antar muka moderasi untuk @{name}", - "status.admin_status": "Buka status ini dalam antar muka moderasi", + "server_banner.about_active_users": "Orang menggunakan server ini selama 30 hari terakhir (Pengguna Aktif Bulanan)", + "server_banner.active_users": "pengguna aktif", + "server_banner.administered_by": "Dikelola oleh:", + "server_banner.introduction": "{domain} adalah bagian dari jaringan sosial terdesentralisasi yang diberdayakan oleh {mastodon}.", + "server_banner.learn_more": "Pelajari lebih lanjut", + "server_banner.server_stats": "Statistik server:", + "sign_in_banner.create_account": "Buat akun", + "sign_in_banner.sign_in": "Masuk", + "sign_in_banner.text": "Masuk untuk mengikuti profil atau tagar, favorit, bagikan, dan balas ke kiriman, atau berinteraksi dari akun Anda di server yang lain.", + "status.admin_account": "Buka antarmuka moderasi untuk @{name}", + "status.admin_status": "Buka kiriman ini dalam antar muka moderasi", "status.block": "Blokir @{name}", "status.bookmark": "Markah", "status.cancel_reblog_private": "Batalkan boost", - "status.cannot_reblog": "Pos ini tak dapat di-boost", - "status.copy": "Salin tautan ke status", + "status.cannot_reblog": "Kiriman ini tak dapat di-boost", + "status.copy": "Salin tautan ke kiriman", "status.delete": "Hapus", "status.detailed_status": "Tampilan detail percakapan", "status.direct": "Pesan langsung @{name}", @@ -552,49 +551,49 @@ "status.edited_x_times": "Diedit {count, plural, other {{count} kali}}", "status.embed": "Tanam", "status.favourite": "Difavoritkan", - "status.filter": "Filter this post", + "status.filter": "Saring kiriman ini", "status.filtered": "Disaring", - "status.hide": "Hide toot", - "status.history.created": "{name} membuat pada {date}", - "status.history.edited": "{name} mengedit pada {date}", + "status.hide": "Sembunyikan toot", + "status.history.created": "{name} membuat {date}", + "status.history.edited": "{name} mengedit {date}", "status.load_more": "Tampilkan semua", "status.media_hidden": "Media disembunyikan", - "status.mention": "Balasan @{name}", + "status.mention": "Sebutkan @{name}", "status.more": "Lebih banyak", "status.mute": "Bisukan @{name}", "status.mute_conversation": "Bisukan percakapan", - "status.open": "Tampilkan status ini", - "status.pin": "Sematkan pada profil", - "status.pinned": "Toot tersemat", + "status.open": "Tampilkan kiriman ini", + "status.pin": "Sematkan di profil", + "status.pinned": "Kiriman tersemat", "status.read_more": "Baca lebih banyak", "status.reblog": "Boost", - "status.reblog_private": "Boost ke audiens asli", - "status.reblogged_by": "di-boost {name}", - "status.reblogs.empty": "Belum ada yang mem-boost toot ini. Ketika seseorang melakukannya, maka akan muncul di sini.", - "status.redraft": "Hapus & redraf", + "status.reblog_private": "Boost dengan visibilitas asli", + "status.reblogged_by": "{name} mem-boost", + "status.reblogs.empty": "Belum ada yang mem-boost toot ini. Ketika seseorang melakukannya, mereka akan muncul di sini.", + "status.redraft": "Hapus & draf ulang", "status.remove_bookmark": "Hapus markah", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Membalas ke {name}", "status.reply": "Balas", - "status.replyAll": "Balas ke semua", + "status.replyAll": "Balas ke utasan", "status.report": "Laporkan @{name}", "status.sensitive_warning": "Konten sensitif", "status.share": "Bagikan", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Tampilkan saja", "status.show_less": "Tampilkan lebih sedikit", - "status.show_less_all": "Tampilkan lebih sedikit", + "status.show_less_all": "Tampilkan lebih sedikit untuk semua", "status.show_more": "Tampilkan semua", - "status.show_more_all": "Tampilkan lebih banyak", - "status.show_original": "Show original", - "status.translate": "Translate", - "status.translated_from_with": "Translated from {lang} using {provider}", - "status.uncached_media_warning": "Tak tersedia", + "status.show_more_all": "Tampilkan lebih banyak untuk semua", + "status.show_original": "Tampilkan yang asli", + "status.translate": "Terjemahkan", + "status.translated_from_with": "Diterjemahkan dari {lang} menggunakan {provider}", + "status.uncached_media_warning": "Tidak tersedia", "status.unmute_conversation": "Bunyikan percakapan", "status.unpin": "Hapus sematan dari profil", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Hanya kiriman dalam bahasa yang dipilih akan muncul di linimasa beranda dan daftar setelah perubahan. Pilih tidak ada untuk menerima kiriman dalam semua bahasa.", + "subscribed_languages.save": "Simpan perubahan", + "subscribed_languages.target": "Ubah langganan bahasa untuk {target}", "suggestions.dismiss": "Hentikan saran", - "suggestions.header": "Anda mungkin tertarik dg…", + "suggestions.header": "Anda mungkin tertarik dengan…", "tabs_bar.federated_timeline": "Gabungan", "tabs_bar.home": "Beranda", "tabs_bar.local_timeline": "Lokal", @@ -607,10 +606,10 @@ "timeline_hint.remote_resource_not_displayed": "{resource} dari server lain tidak ditampilkan.", "timeline_hint.resources.followers": "Pengikut", "timeline_hint.resources.follows": "Ikuti", - "timeline_hint.resources.statuses": "Toot lama", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "timeline_hint.resources.statuses": "Kiriman lama", + "trends.counter_by_accounts": "{count, plural, other {{counter} orang}} dalam {days, plural, other {{days} hari}} terakhir", "trends.trending_now": "Sedang tren sekarang", - "ui.beforeunload": "Naskah anda akan hilang jika anda keluar dari Mastodon.", + "ui.beforeunload": "Draf Anda akan hilang jika Anda keluar dari Mastodon.", "units.short.billion": "{count}M", "units.short.million": "{count}Jt", "units.short.thousand": "{count}Rb", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Menyiapkan OCR…", "upload_modal.preview_label": "Pratinjau ({ratio})", "upload_progress.label": "Mengunggah...", + "upload_progress.processing": "Processing…", "video.close": "Tutup video", "video.download": "Unduh berkas", "video.exit_fullscreen": "Keluar dari layar penuh", diff --git a/app/javascript/mastodon/locales/ig.json b/app/javascript/mastodon/locales/ig.json new file mode 100644 index 000000000..c2cae1370 --- /dev/null +++ b/app/javascript/mastodon/locales/ig.json @@ -0,0 +1,649 @@ +{ + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", + "account.account_note_header": "Note", + "account.add_or_remove_from_list": "Add or Remove from lists", + "account.badges.bot": "Bot", + "account.badges.group": "Group", + "account.block": "Block @{name}", + "account.block_domain": "Block domain {domain}", + "account.blocked": "Blocked", + "account.browse_more_on_origin_server": "Browse more on the original profile", + "account.cancel_follow_request": "Withdraw follow request", + "account.direct": "Direct message @{name}", + "account.disable_notifications": "Stop notifying me when @{name} posts", + "account.domain_blocked": "Domain blocked", + "account.edit_profile": "Edit profile", + "account.enable_notifications": "Notify me when @{name} posts", + "account.endorse": "Feature on profile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", + "account.follow": "Follow", + "account.followers": "Followers", + "account.followers.empty": "No one follows this user yet.", + "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", + "account.following": "Following", + "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", + "account.follows.empty": "This user doesn't follow anyone yet.", + "account.follows_you": "Follows you", + "account.hide_reblogs": "Hide boosts from @{name}", + "account.joined_short": "Joined", + "account.languages": "Change subscribed languages", + "account.link_verified_on": "Ownership of this link was checked on {date}", + "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", + "account.media": "Media", + "account.mention": "Mention @{name}", + "account.moved_to": "{name} has moved to:", + "account.mute": "Mute @{name}", + "account.mute_notifications": "Mute notifications from @{name}", + "account.muted": "Muted", + "account.posts": "Posts", + "account.posts_with_replies": "Posts and replies", + "account.report": "Report @{name}", + "account.requested": "Awaiting approval. Click to cancel follow request", + "account.share": "Share @{name}'s profile", + "account.show_reblogs": "Show boosts from @{name}", + "account.statuses_counter": "{count, plural, one {{counter} Post} other {{counter} Posts}}", + "account.unblock": "Unblock @{name}", + "account.unblock_domain": "Unblock domain {domain}", + "account.unblock_short": "Unblock", + "account.unendorse": "Don't feature on profile", + "account.unfollow": "Unfollow", + "account.unmute": "Unmute @{name}", + "account.unmute_notifications": "Unmute notifications from @{name}", + "account.unmute_short": "Unmute", + "account_note.placeholder": "Click to add a note", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Average", + "admin.dashboard.retention.cohort": "Sign-up month", + "admin.dashboard.retention.cohort_size": "New users", + "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.", + "alert.rate_limited.title": "Rate limited", + "alert.unexpected.message": "An unexpected error occurred.", + "alert.unexpected.title": "Oops!", + "announcement.announcement": "Announcement", + "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", + "autosuggest_hashtag.per_week": "{count} per week", + "boost_modal.combo": "You can press {combo} to skip this next time", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", + "bundle_column_error.retry": "Try again", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", + "bundle_modal_error.close": "Close", + "bundle_modal_error.message": "Something went wrong while loading this component.", + "bundle_modal_error.retry": "Try again", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", + "column.about": "About", + "column.blocks": "Blocked users", + "column.bookmarks": "Bookmarks", + "column.community": "Local timeline", + "column.direct": "Direct messages", + "column.directory": "Browse profiles", + "column.domain_blocks": "Blocked domains", + "column.favourites": "Favourites", + "column.follow_requests": "Follow requests", + "column.home": "Home", + "column.lists": "Lists", + "column.mutes": "Muted users", + "column.notifications": "Notifications", + "column.pins": "Pinned post", + "column.public": "Federated timeline", + "column_back_button.label": "Back", + "column_header.hide_settings": "Hide settings", + "column_header.moveLeft_settings": "Move column to the left", + "column_header.moveRight_settings": "Move column to the right", + "column_header.pin": "Pin", + "column_header.show_settings": "Show settings", + "column_header.unpin": "Unpin", + "column_subheading.settings": "Settings", + "community.column_settings.local_only": "Local only", + "community.column_settings.media_only": "Media only", + "community.column_settings.remote_only": "Remote only", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", + "compose_form.direct_message_warning_learn_more": "Learn more", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "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": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", + "compose_form.lock_disclaimer.lock": "locked", + "compose_form.placeholder": "What is on your mind?", + "compose_form.poll.add_option": "Add a choice", + "compose_form.poll.duration": "Poll duration", + "compose_form.poll.option_placeholder": "Choice {number}", + "compose_form.poll.remove_option": "Remove this choice", + "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", + "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", + "compose_form.publish": "Publish", + "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", + "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", + "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", + "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", + "compose_form.spoiler.marked": "Text is hidden behind warning", + "compose_form.spoiler.unmarked": "Text is not hidden", + "compose_form.spoiler_placeholder": "Write your warning here", + "confirmation_modal.cancel": "Kagbuo", + "confirmations.block.block_and_report": "Block & Report", + "confirmations.block.confirm": "Block", + "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.delete.confirm": "Delete", + "confirmations.delete.message": "Are you sure you want to delete this status?", + "confirmations.delete_list.confirm": "Delete", + "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", + "confirmations.discard_edit_media.confirm": "Discard", + "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.domain_block.confirm": "Hide entire domain", + "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", + "confirmations.logout.confirm": "Log out", + "confirmations.logout.message": "Are you sure you want to log out?", + "confirmations.mute.confirm": "Mute", + "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.", + "confirmations.mute.message": "Are you sure you want to mute {name}?", + "confirmations.redraft.confirm": "Delete & redraft", + "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.", + "confirmations.reply.confirm": "Reply", + "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", + "confirmations.unfollow.confirm": "Unfollow", + "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", + "conversation.delete": "Delete conversation", + "conversation.mark_as_read": "Mark as read", + "conversation.open": "View conversation", + "conversation.with": "With {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", + "directory.federated": "From known fediverse", + "directory.local": "From {domain} only", + "directory.new_arrivals": "New arrivals", + "directory.recently_active": "Recently active", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "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_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "embed.instructions": "Embed this status on your website by copying the code below.", + "embed.preview": "Here is what it will look like:", + "emoji_button.activity": "Activity", + "emoji_button.clear": "Clear", + "emoji_button.custom": "Custom", + "emoji_button.flags": "Flags", + "emoji_button.food": "Food & Drink", + "emoji_button.label": "Insert emoji", + "emoji_button.nature": "Nature", + "emoji_button.not_found": "No matching emojis found", + "emoji_button.objects": "Objects", + "emoji_button.people": "People", + "emoji_button.recent": "Frequently used", + "emoji_button.search": "Search...", + "emoji_button.search_results": "Search results", + "emoji_button.symbols": "Symbols", + "emoji_button.travel": "Travel & Places", + "empty_column.account_suspended": "Account suspended", + "empty_column.account_timeline": "No posts found", + "empty_column.account_unavailable": "Profile unavailable", + "empty_column.blocks": "You haven't blocked any users yet.", + "empty_column.bookmarked_statuses": "You don't have any bookmarked posts yet. When you bookmark one, it will show up here.", + "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.domain_blocks": "There are no blocked domains yet.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.favourited_statuses": "You don't have any favourite posts yet. When you favourite one, it will show up here.", + "empty_column.favourites": "No one has favourited this post yet. When someone does, they will show up here.", + "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", + "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.", + "empty_column.hashtag": "There is nothing in this hashtag yet.", + "empty_column.home": "Your home timeline is empty! Follow more people to fill it up. {suggestions}", + "empty_column.home.suggestions": "See some suggestions", + "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.", + "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.", + "empty_column.mutes": "You haven't muted any users yet.", + "empty_column.notifications": "You don't have any notifications yet. When other people interact with you, you will see it here.", + "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up", + "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.", + "error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.", + "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", + "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", + "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", + "errors.unexpected_crash.report_issue": "Report issue", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", + "follow_recommendations.done": "Done", + "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", + "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", + "follow_request.authorize": "Authorize", + "follow_request.reject": "Reject", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", + "generic.saved": "Saved", + "getting_started.heading": "Getting started", + "hashtag.column_header.tag_mode.all": "and {additional}", + "hashtag.column_header.tag_mode.any": "or {additional}", + "hashtag.column_header.tag_mode.none": "without {additional}", + "hashtag.column_settings.select.no_options_message": "No suggestions found", + "hashtag.column_settings.select.placeholder": "Enter hashtags…", + "hashtag.column_settings.tag_mode.all": "All of these", + "hashtag.column_settings.tag_mode.any": "Any of these", + "hashtag.column_settings.tag_mode.none": "None of these", + "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.unfollow": "Unfollow hashtag", + "home.column_settings.basic": "Basic", + "home.column_settings.show_reblogs": "Show boosts", + "home.column_settings.show_replies": "Show replies", + "home.hide_announcements": "Hide announcements", + "home.show_announcements": "Show announcements", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", + "intervals.full.days": "{number, plural, one {# day} other {# days}}", + "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", + "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", + "keyboard_shortcuts.back": "to navigate back", + "keyboard_shortcuts.blocked": "to open blocked users list", + "keyboard_shortcuts.boost": "to boost", + "keyboard_shortcuts.column": "to focus a status in one of the columns", + "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.description": "Description", + "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.down": "to move down in the list", + "keyboard_shortcuts.enter": "to open status", + "keyboard_shortcuts.favourite": "to favourite", + "keyboard_shortcuts.favourites": "to open favourites list", + "keyboard_shortcuts.federated": "to open federated timeline", + "keyboard_shortcuts.heading": "Keyboard Shortcuts", + "keyboard_shortcuts.home": "to open home timeline", + "keyboard_shortcuts.hotkey": "Hotkey", + "keyboard_shortcuts.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.open_media": "to open media", + "keyboard_shortcuts.pinned": "to open pinned posts list", + "keyboard_shortcuts.profile": "to open author's profile", + "keyboard_shortcuts.reply": "to 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 post", + "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search", + "keyboard_shortcuts.up": "to move up in the list", + "lightbox.close": "Close", + "lightbox.compress": "Compress image view box", + "lightbox.expand": "Expand image view box", + "lightbox.next": "Next", + "lightbox.previous": "Previous", + "limited_account_hint.action": "Show profile anyway", + "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "lists.account.add": "Add to list", + "lists.account.remove": "Remove from list", + "lists.delete": "Delete list", + "lists.edit": "Edit list", + "lists.edit.submit": "Change title", + "lists.new.create": "Add list", + "lists.new.title_placeholder": "New list title", + "lists.replies_policy.followed": "Any followed user", + "lists.replies_policy.list": "Members of the list", + "lists.replies_policy.none": "No one", + "lists.replies_policy.title": "Show replies to:", + "lists.search": "Search among people you follow", + "lists.subheading": "Your lists", + "load_pending": "{count, plural, one {# new item} other {# new items}}", + "loading_indicator.label": "Loading...", + "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", + "missing_indicator.label": "Not found", + "missing_indicator.sublabel": "This resource could not be found", + "mute_modal.duration": "Duration", + "mute_modal.hide_notifications": "Hide notifications from this user?", + "mute_modal.indefinite": "Indefinite", + "navigation_bar.about": "About", + "navigation_bar.blocks": "Blocked users", + "navigation_bar.bookmarks": "Bookmarks", + "navigation_bar.community_timeline": "Local timeline", + "navigation_bar.compose": "Compose new post", + "navigation_bar.direct": "Direct messages", + "navigation_bar.discover": "Discover", + "navigation_bar.domain_blocks": "Hidden domains", + "navigation_bar.edit_profile": "Edit profile", + "navigation_bar.explore": "Explore", + "navigation_bar.favourites": "Favourites", + "navigation_bar.filters": "Muted words", + "navigation_bar.follow_requests": "Follow requests", + "navigation_bar.follows_and_followers": "Follows and followers", + "navigation_bar.lists": "Lists", + "navigation_bar.logout": "Logout", + "navigation_bar.mutes": "Muted users", + "navigation_bar.personal": "Personal", + "navigation_bar.pins": "Pinned posts", + "navigation_bar.preferences": "Preferences", + "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", + "navigation_bar.security": "Security", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "notification.admin.report": "{name} reported {target}", + "notification.admin.sign_up": "{name} signed up", + "notification.favourite": "{name} favourited your status", + "notification.follow": "{name} followed you", + "notification.follow_request": "{name} has requested to follow you", + "notification.mention": "{name} mentioned you", + "notification.own_poll": "Your poll has ended", + "notification.poll": "A poll you have voted in has ended", + "notification.reblog": "{name} boosted your status", + "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", + "notifications.clear": "Clear notifications", + "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.alert": "Desktop notifications", + "notifications.column_settings.favourite": "Favourites:", + "notifications.column_settings.filter_bar.advanced": "Display all categories", + "notifications.column_settings.filter_bar.category": "Quick filter bar", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", + "notifications.column_settings.follow": "New followers:", + "notifications.column_settings.follow_request": "New follow requests:", + "notifications.column_settings.mention": "Mentions:", + "notifications.column_settings.poll": "Poll results:", + "notifications.column_settings.push": "Push notifications", + "notifications.column_settings.reblog": "Boosts:", + "notifications.column_settings.show": "Show in column", + "notifications.column_settings.sound": "Play sound", + "notifications.column_settings.status": "New posts:", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", + "notifications.filter.all": "All", + "notifications.filter.boosts": "Boosts", + "notifications.filter.favourites": "Favourites", + "notifications.filter.follows": "Follows", + "notifications.filter.mentions": "Mentions", + "notifications.filter.polls": "Poll results", + "notifications.filter.statuses": "Updates from people you follow", + "notifications.grant_permission": "Grant permission.", + "notifications.group": "{count} notifications", + "notifications.mark_as_read": "Mark every notification as read", + "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", + "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", + "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.", + "notifications_permission_banner.enable": "Enable desktop notifications", + "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", + "notifications_permission_banner.title": "Never miss a thing", + "picture_in_picture.restore": "Put it back", + "poll.closed": "Closed", + "poll.refresh": "Refresh", + "poll.total_people": "{count, plural, one {# person} other {# people}}", + "poll.total_votes": "{count, plural, one {# vote} other {# votes}}", + "poll.vote": "Vote", + "poll.voted": "You voted for this answer", + "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll_button.add_poll": "Add a poll", + "poll_button.remove_poll": "Remove poll", + "privacy.change": "Adjust status privacy", + "privacy.direct.long": "Visible for mentioned users only", + "privacy.direct.short": "Direct", + "privacy.private.long": "Visible for followers only", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", + "privacy.public.short": "Public", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", + "privacy.unlisted.short": "Unlisted", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", + "refresh": "Refresh", + "regeneration_indicator.label": "Loading…", + "regeneration_indicator.sublabel": "Your home feed is being prepared!", + "relative_time.days": "{number}d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.hours": "{number}h", + "relative_time.just_now": "now", + "relative_time.minutes": "{number}m", + "relative_time.seconds": "{number}s", + "relative_time.today": "today", + "reply_indicator.cancel": "Kagbuo", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", + "report.forward": "Forward to {target}", + "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", + "report.placeholder": "Type or paste additional comments", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", + "report.submit": "Submit report", + "report.target": "Report {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", + "search.placeholder": "Search", + "search.search_or_paste": "Search or paste URL", + "search_popout.search_format": "Advanced search format", + "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", + "search_popout.tips.hashtag": "hashtag", + "search_popout.tips.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "search_results.accounts": "People", + "search_results.all": "All", + "search_results.hashtags": "Hashtags", + "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.statuses": "Posts", + "search_results.statuses_fts_disabled": "Searching posts by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", + "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", + "status.block": "Block @{name}", + "status.bookmark": "Bookmark", + "status.cancel_reblog_private": "Unboost", + "status.cannot_reblog": "This post cannot be boosted", + "status.copy": "Copy link to status", + "status.delete": "Delete", + "status.detailed_status": "Detailed conversation view", + "status.direct": "Direct message @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.embed": "Embed", + "status.favourite": "Favourite", + "status.filter": "Filter this post", + "status.filtered": "Filtered", + "status.hide": "Hide toot", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", + "status.load_more": "Load more", + "status.media_hidden": "Media hidden", + "status.mention": "Mention @{name}", + "status.more": "More", + "status.mute": "Mute @{name}", + "status.mute_conversation": "Mute conversation", + "status.open": "Expand this status", + "status.pin": "Pin on profile", + "status.pinned": "Pinned post", + "status.read_more": "Read more", + "status.reblog": "Boost", + "status.reblog_private": "Boost with original visibility", + "status.reblogged_by": "{name} boosted", + "status.reblogs.empty": "No one has boosted this post yet. When someone does, they will show up here.", + "status.redraft": "Delete & re-draft", + "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", + "status.reply": "Reply", + "status.replyAll": "Reply to thread", + "status.report": "Report @{name}", + "status.sensitive_warning": "Sensitive content", + "status.share": "Share", + "status.show_filter_reason": "Show anyway", + "status.show_less": "Show less", + "status.show_less_all": "Show less for all", + "status.show_more": "Show more", + "status.show_more_all": "Show more for all", + "status.show_original": "Show original", + "status.translate": "Translate", + "status.translated_from_with": "Translated from {lang} using {provider}", + "status.uncached_media_warning": "Not available", + "status.unmute_conversation": "Unmute conversation", + "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", + "tabs_bar.federated_timeline": "Federated", + "tabs_bar.home": "Home", + "tabs_bar.local_timeline": "Local", + "tabs_bar.notifications": "Notifications", + "time_remaining.days": "{number, plural, one {# day} other {# days}} left", + "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", + "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", + "time_remaining.moments": "Moments remaining", + "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left", + "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.", + "timeline_hint.resources.followers": "Followers", + "timeline_hint.resources.follows": "Follows", + "timeline_hint.resources.statuses": "Older posts", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.trending_now": "Trending now", + "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", + "units.short.billion": "{count}B", + "units.short.million": "{count}M", + "units.short.thousand": "{count}K", + "upload_area.title": "Drag & drop to upload", + "upload_button.label": "Add images, a video or an audio file", + "upload_error.limit": "File upload limit exceeded.", + "upload_error.poll": "File upload not allowed with polls.", + "upload_form.audio_description": "Describe for people with hearing loss", + "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", + "upload_form.edit": "Edit", + "upload_form.thumbnail": "Change thumbnail", + "upload_form.undo": "Delete", + "upload_form.video_description": "Describe for people with hearing loss or visual impairment", + "upload_modal.analyzing_picture": "Analyzing picture…", + "upload_modal.apply": "Apply", + "upload_modal.applying": "Applying…", + "upload_modal.choose_image": "Choose image", + "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog", + "upload_modal.detect_text": "Detect text from picture", + "upload_modal.edit_media": "Edit media", + "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", + "upload_modal.preparing_ocr": "Preparing OCR…", + "upload_modal.preview_label": "Preview ({ratio})", + "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", + "video.close": "Close video", + "video.download": "Download file", + "video.exit_fullscreen": "Exit full screen", + "video.expand": "Expand video", + "video.fullscreen": "Full screen", + "video.hide": "Hide video", + "video.mute": "Mute sound", + "video.pause": "Pause", + "video.play": "Play", + "video.unmute": "Unmute sound" +} diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 0d6e6365b..a467cc323 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -1,6 +1,7 @@ { "about.blocks": "Jerata servili", "about.contact": "Kontaktajo:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Motivo", "about.domain_blocks.domain": "Domeno", "about.domain_blocks.preamble": "Mastodon generale permisas on vidar kontenajo e interagar kun uzanti de irga altra servilo en fediverso. Existas eceptioni quo facesis che ca partikulara servilo.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Yurizar", "follow_request.reject": "Refuzar", "follow_requests.unlocked_explanation": "Quankam vua konto ne klefklozesis, la {domain} laborero pensas ke vu forsan volas kontralar sequodemandi de ca konti manuale.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Sparesis", - "getting_started.directory": "Cheflisto", - "getting_started.documentation": "Dokumentajo", - "getting_started.free_software_notice": "Mastodon esas libera fontoaperta softwaro. On povas vidar fontokodexo, kontribuar o reportigar problemi en {repository}.", "getting_started.heading": "Debuto", - "getting_started.invite": "Invitez personi", - "getting_started.privacy_policy": "Privatesguidilo", - "getting_started.security": "Kontoopcioni", - "getting_started.what_is_mastodon": "Pri Mastodon", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sen {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Celez avizi de ca uzanto?", "mute_modal.indefinite": "Nedefinitiva", "navigation_bar.about": "Pri co", - "navigation_bar.apps": "Ganez la softwaro", "navigation_bar.blocks": "Blokusita uzeri", "navigation_bar.bookmarks": "Libromarki", "navigation_bar.community_timeline": "Lokala tempolineo", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Silencigita vorti", "navigation_bar.follow_requests": "Demandi di sequado", "navigation_bar.follows_and_followers": "Sequati e sequanti", - "navigation_bar.info": "Pri co", - "navigation_bar.keyboard_shortcuts": "Rapidklavi", "navigation_bar.lists": "Listi", "navigation_bar.logout": "Ekirar", "navigation_bar.mutes": "Celita uzeri", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Regulnesequo", "report_notification.open": "Apertez raporto", "search.placeholder": "Serchez", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Avancata trovformato", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtago", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparas OCR…", "upload_modal.preview_label": "Previdez ({ratio})", "upload_progress.label": "Kargante...", + "upload_progress.processing": "Processing…", "video.close": "Klozez video", "video.download": "Deschargez failo", "video.exit_fullscreen": "Ekirez plena skreno", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index e37c18b00..168d5ec81 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -1,6 +1,7 @@ { "about.blocks": "Netþjónar með efnisumsjón", "about.contact": "Hafa samband:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Ástæða", "about.domain_blocks.domain": "Lén", "about.domain_blocks.preamble": "Mastodon leyfir þér almennt að skoða og eiga við efni frá notendum frá hvaða vefþjóni sem er í vefþjónasambandinu. Þetta eru þær undantekningar sem hafa verið gerðar á þessum tiltekna vefþjóni.", @@ -39,7 +40,7 @@ "account.follows.empty": "Þessi notandi fylgist ennþá ekki með neinum.", "account.follows_you": "Fylgir þér", "account.hide_reblogs": "Fela endurbirtingar fyrir @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Gerðist þátttakandi", "account.languages": "Breyta tungumálum í áskrift", "account.link_verified_on": "Eignarhald á þessum tengli var athugað þann {date}", "account.locked_info": "Staða gagnaleyndar á þessum aðgangi er stillt á læsingu. Eigandinn yfirfer handvirkt hverjir geti fylgst með honum.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Loka", "bundle_modal_error.message": "Eitthvað fór úrskeiðis við að hlaða inn þessari einingu.", "bundle_modal_error.retry": "Reyndu aftur", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Þar sem Mastodon er víðvær, þá getur þú búið til aðgang á öðrum þjóni, en samt haft samskipti við þennan.", + "closed_registrations_modal.description": "Að búa til aðgang á {domain} er ekki mögulegt eins og er, en vinsamlegast hafðu í huga að þú þarft ekki aðgang sérstaklega á {domain} til að nota Mastodon.", + "closed_registrations_modal.find_another_server": "Finna annan þjón", + "closed_registrations_modal.preamble": "Mastodon er víðvær, svo það skiptir ekki máli hvar þú býrð til aðgang; þú munt get fylgt eftir og haft samskipti við hvern sem er á þessum þjóni. Þú getur jafnvel hýst þinn eigin Mastodon þjón!", + "closed_registrations_modal.title": "Að nýskrá sig á Mastodon", "column.about": "Um hugbúnaðinn", "column.blocks": "Útilokaðir notendur", "column.bookmarks": "Bókamerki", @@ -258,15 +259,15 @@ "follow_request.authorize": "Heimila", "follow_request.reject": "Hafna", "follow_requests.unlocked_explanation": "Jafnvel þótt aðgangurinn þinn sé ekki læstur, hafa umsjónarmenn {domain} ímyndað sér að þú gætir viljað yfirfara handvirkt fylgjendabeiðnir frá þessum notendum.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Vistað", - "getting_started.directory": "Mappa", - "getting_started.documentation": "Hjálparskjöl", - "getting_started.free_software_notice": "Mastodon er frjáls, opinn hugbúnaður. Þú getur skoðað grunnkóðann, lagt þitt af mörkum eða tilkynnt vandamál á {repository}.", "getting_started.heading": "Komast í gang", - "getting_started.invite": "Bjóða fólki", - "getting_started.privacy_policy": "Persónuverndarstefna", - "getting_started.security": "Stillingar notandaaðgangs", - "getting_started.what_is_mastodon": "Um Mastodon", "hashtag.column_header.tag_mode.all": "og {additional}", "hashtag.column_header.tag_mode.any": "eða {additional}", "hashtag.column_header.tag_mode.none": "án {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Fela tilkynningar frá þessum notanda?", "mute_modal.indefinite": "Óendanlegt", "navigation_bar.about": "Um hugbúnaðinn", - "navigation_bar.apps": "Ná í forritið", "navigation_bar.blocks": "Útilokaðir notendur", "navigation_bar.bookmarks": "Bókamerki", "navigation_bar.community_timeline": "Staðvær tímalína", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Þögguð orð", "navigation_bar.follow_requests": "Beiðnir um að fylgjast með", "navigation_bar.follows_and_followers": "Fylgist með og fylgjendur", - "navigation_bar.info": "Um hugbúnaðinn", - "navigation_bar.keyboard_shortcuts": "Flýtilyklar", "navigation_bar.lists": "Listar", "navigation_bar.logout": "Útskráning", "navigation_bar.mutes": "Þaggaðir notendur", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Festar færslur", "navigation_bar.preferences": "Kjörstillingar", "navigation_bar.public_timeline": "Sameiginleg tímalína", - "navigation_bar.search": "Search", + "navigation_bar.search": "Leita", "navigation_bar.security": "Öryggi", "not_signed_in_indicator.not_signed_in": "Þú þarft að skrá þig inn til að nota þetta tilfang.", "notification.admin.report": "{name} kærði {target}", @@ -394,7 +392,7 @@ "notification.follow_request": "{name} hefur beðið um að fylgjast með þér", "notification.mention": "{name} minntist á þig", "notification.own_poll": "Könnuninni þinni er lokið", - "notification.poll": "Könnun sem þú tókst þátt í er lokin", + "notification.poll": "Könnun sem þú tókst þátt í er lokið", "notification.reblog": "{name} endurbirti færsluna þína", "notification.status": "{name} sendi inn rétt í þessu", "notification.update": "{name} breytti færslu", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Brot á reglum", "report_notification.open": "Opin kæra", "search.placeholder": "Leita", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Snið ítarlegrar leitar", "search_popout.tips.full_text": "Einfaldur texti skilar færslum sem þú hefur skrifað, sett í eftirlæti, endurbirt eða verið minnst á þig í, ásamt samsvarandi birtingarnöfnum, notendanöfnum og myllumerkjum.", "search_popout.tips.hashtag": "myllumerki", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Enginn hefur ennþá endurbirt þessa færslu. Þegar einhver gerir það, mun það birtast hér.", "status.redraft": "Eyða og endurvinna drög", "status.remove_bookmark": "Fjarlægja bókamerki", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Svaraði {name}", "status.reply": "Svara", "status.replyAll": "Svara þræði", "status.report": "Kæra @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "Sýna meira fyrir allt", "status.show_original": "Sýna upprunalega", "status.translate": "Þýða", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Þýtt úr {lang} með {provider}", "status.uncached_media_warning": "Ekki tiltækt", "status.unmute_conversation": "Hætta að þagga niður í samtali", "status.unpin": "Losa af notandasniði", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Undirbý OCR-ljóslestur…", "upload_modal.preview_label": "Forskoðun ({ratio})", "upload_progress.label": "Er að senda inn...", + "upload_progress.processing": "Processing…", "video.close": "Loka myndskeiði", "video.download": "Sækja skrá", "video.exit_fullscreen": "Hætta í skjáfylli", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 52ac4693d..afed6839d 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -1,6 +1,7 @@ { "about.blocks": "Server moderati", "about.contact": "Contatto:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Motivo", "about.domain_blocks.domain": "Dominio", "about.domain_blocks.preamble": "Mastodon, generalmente, ti consente di visualizzare i contenuti e interagire con gli utenti da qualsiasi altro server nel fediverso. Queste sono le eccezioni che sono state fatte su questo particolare server.", @@ -39,7 +40,7 @@ "account.follows.empty": "Questo utente non segue nessuno ancora.", "account.follows_you": "Ti segue", "account.hide_reblogs": "Nascondi condivisioni da @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Account iscritto", "account.languages": "Cambia le lingue di cui ricevere i post", "account.link_verified_on": "La proprietà di questo link è stata controllata il {date}", "account.locked_info": "Questo è un account privato. Il proprietario approva manualmente chi può seguirlo.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Chiudi", "bundle_modal_error.message": "Qualcosa è andato storto durante il caricamento di questo componente.", "bundle_modal_error.retry": "Riprova", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Poiché Mastodon è decentralizzato, puoi creare un account su un altro server e continuare a interagire con questo.", + "closed_registrations_modal.description": "Al momento non è possibile creare un account su {domain}, ma tieni presente che non è necessario un account specifico su {domain} per utilizzare Mastodon.", + "closed_registrations_modal.find_another_server": "Trova un altro server", + "closed_registrations_modal.preamble": "Mastodon è decentralizzato, quindi non importa dove crei il tuo account, sarai in grado di seguire e interagire con chiunque su questo server. Puoi persino ospitarlo autonomamente!", + "closed_registrations_modal.title": "Registrazione su Mastodon", "column.about": "Informazioni su", "column.blocks": "Utenti bloccati", "column.bookmarks": "Segnalibri", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autorizza", "follow_request.reject": "Rifiuta", "follow_requests.unlocked_explanation": "Benché il tuo account non sia privato, lo staff di {domain} ha pensato che potresti voler approvare manualmente le richieste di follow da questi account.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Salvato", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentazione", - "getting_started.free_software_notice": "Mastodon è un software libero e open source. È possibile visualizzare il codice sorgente, contribuire o segnalare problemi a {repository}.", "getting_started.heading": "Come iniziare", - "getting_started.invite": "Invita qualcuno", - "getting_started.privacy_policy": "Politica sulla Privacy", - "getting_started.security": "Sicurezza", - "getting_started.what_is_mastodon": "Informazioni su Mastodon", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "senza {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Nascondere le notifiche da quest'utente?", "mute_modal.indefinite": "Per sempre", "navigation_bar.about": "Informazioni su", - "navigation_bar.apps": "Scarica l'app", "navigation_bar.blocks": "Utenti bloccati", "navigation_bar.bookmarks": "Segnalibri", "navigation_bar.community_timeline": "Timeline locale", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Parole silenziate", "navigation_bar.follow_requests": "Richieste di seguirti", "navigation_bar.follows_and_followers": "Seguiti e seguaci", - "navigation_bar.info": "Informazioni su", - "navigation_bar.keyboard_shortcuts": "Tasti di scelta rapida", "navigation_bar.lists": "Liste", "navigation_bar.logout": "Esci", "navigation_bar.mutes": "Utenti silenziati", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Post fissati in cima", "navigation_bar.preferences": "Impostazioni", "navigation_bar.public_timeline": "Timeline federata", - "navigation_bar.search": "Search", + "navigation_bar.search": "Cerca", "navigation_bar.security": "Sicurezza", "not_signed_in_indicator.not_signed_in": "Devi effetturare il login per accedere a questa funzione.", "notification.admin.report": "{name} ha segnalato {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Violazione delle regole", "report_notification.open": "Apri segnalazione", "search.placeholder": "Cerca", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Formato di ricerca avanzato", "search_popout.tips.full_text": "Testo semplice per trovare gli status che hai scritto, segnato come apprezzati, condiviso o in cui sei stato citato, e inoltre i nomi utente, nomi visualizzati e hashtag che lo contengono.", "search_popout.tips.hashtag": "etichetta", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Nessuno ha ancora condiviso questo post. Quando qualcuno lo farà, comparirà qui.", "status.redraft": "Cancella e riscrivi", "status.remove_bookmark": "Elimina segnalibro", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Risposta a {name}", "status.reply": "Rispondi", "status.replyAll": "Rispondi alla conversazione", "status.report": "Segnala @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "Mostra di più per tutti", "status.show_original": "Mostra originale", "status.translate": "Traduci", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Tradotto da {lang} utilizzando {provider}", "status.uncached_media_warning": "Non disponibile", "status.unmute_conversation": "Annulla silenzia conversazione", "status.unpin": "Non fissare in cima al profilo", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparazione OCR…", "upload_modal.preview_label": "Anteprima ({ratio})", "upload_progress.label": "Invio in corso...", + "upload_progress.processing": "Processing…", "video.close": "Chiudi video", "video.download": "Scarica file", "video.exit_fullscreen": "Esci da modalità a schermo intero", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 8af35c7ac..5849a1d38 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -1,11 +1,12 @@ { "about.blocks": "制限中のサーバー", "about.contact": "連絡先", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "制限理由", "about.domain_blocks.domain": "ドメイン", "about.domain_blocks.preamble": "Mastodonでは連合先のどのようなサーバーのユーザーとも交流できます。ただし次のサーバーには例外が設定されています。", "about.domain_blocks.severity": "重大性", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.explanation": "このサーバーのプロフィールやコンテンツは、明示的に検索したり、フォローでオプトインしない限り、通常は表示されません。", "about.domain_blocks.silenced.title": "制限", "about.domain_blocks.suspended.explanation": "これらのサーバーからのデータは処理されず、保存や変換もされません。該当するユーザーとの交流もできません。", "about.domain_blocks.suspended.title": "停止済み", @@ -39,7 +40,7 @@ "account.follows.empty": "まだ誰もフォローしていません。", "account.follows_you": "フォローされています", "account.hide_reblogs": "@{name}さんからのブーストを非表示", - "account.joined_short": "Joined", + "account.joined_short": "参加済み", "account.languages": "購読言語の変更", "account.link_verified_on": "このリンクの所有権は{date}に確認されました", "account.locked_info": "このアカウントは承認制アカウントです。相手が承認するまでフォローは完了しません。", @@ -79,23 +80,23 @@ "audio.hide": "音声を閉じる", "autosuggest_hashtag.per_week": "{count} 回 / 週", "boost_modal.combo": "次からは{combo}を押せばスキップできます", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "エラーレポートをコピー", + "bundle_column_error.error.body": "要求されたページをレンダリングできませんでした。コードのバグ、またはブラウザの互換性の問題が原因である可能性があります。", + "bundle_column_error.error.title": "おっと!", + "bundle_column_error.network.body": "このページを読み込もうとしたときにエラーが発生しました。インターネット接続またはこのサーバーの一時的な問題が発生した可能性があります。", + "bundle_column_error.network.title": "ネットワークエラー", "bundle_column_error.retry": "再試行", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "ホームに戻る", + "bundle_column_error.routing.body": "要求されたページは見つかりませんでした。アドレスバーの URL は正しいですか?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "閉じる", "bundle_modal_error.message": "コンポーネントの読み込み中に問題が発生しました。", "bundle_modal_error.retry": "再試行", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "マストドンは分散型なので、他のサーバーにアカウントを作っても、このサーバーとやり取りすることができます。", + "closed_registrations_modal.description": "現在 {domain} でアカウント作成はできませんが、Mastodon は {domain} のアカウントでなくても利用できます。", + "closed_registrations_modal.find_another_server": "別のサーバーを探す", + "closed_registrations_modal.preamble": "Mastodon は分散型なので、どこでアカウントを作成しても、このサーバーのユーザーを誰でもフォローして交流することができます。自分でホスティングすることもできます!", + "closed_registrations_modal.title": "Mastodon でサインアップ", "column.about": "About", "column.blocks": "ブロックしたユーザー", "column.bookmarks": "ブックマーク", @@ -236,16 +237,16 @@ "explore.trending_links": "ニュース", "explore.trending_statuses": "投稿", "explore.trending_tags": "ハッシュタグ", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.context_mismatch_explanation": "あなたがアクセスした投稿には、コンテキストはフィルターカテゴリが適用されてません。\nコンテキストへのフィルターを適用するには、フィルターを編集してください。", + "filter_modal.added.context_mismatch_title": "コンテキストが一致しません!", + "filter_modal.added.expired_explanation": "このフィルターカテゴリは有効期限が切れています。適用するには有効期限を更新してください。", "filter_modal.added.expired_title": "フィルターの有効期限が切れています!", "filter_modal.added.review_and_configure": "このフィルターカテゴリーを確認して設定するには、{settings_link}に移動します。", "filter_modal.added.review_and_configure_title": "フィルター設定", "filter_modal.added.settings_link": "設定", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.short_explanation": "この投稿は以下のフィルターカテゴリに追加されました: {title}。", "filter_modal.added.title": "フィルターを追加しました!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.context_mismatch": "このコンテキストには当てはまりません", "filter_modal.select_filter.expired": "期限切れ", "filter_modal.select_filter.prompt_new": "新しいカテゴリー: {name}", "filter_modal.select_filter.search": "検索または新規作成", @@ -258,15 +259,15 @@ "follow_request.authorize": "許可", "follow_request.reject": "拒否", "follow_requests.unlocked_explanation": "あなたのアカウントは承認制ではありませんが、{domain}のスタッフはこれらのアカウントからのフォローリクエストの確認が必要であると判断しました。", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "保存しました", - "getting_started.directory": "ディレクトリ", - "getting_started.documentation": "ドキュメント", - "getting_started.free_software_notice": "Mastodonは自由なオープンソースソフトウェアです。{repository}でソースコードを確認したりコントリビュートしたり不具合の報告ができます。", "getting_started.heading": "スタート", - "getting_started.invite": "招待", - "getting_started.privacy_policy": "プライバシーポリシー", - "getting_started.security": "アカウント設定", - "getting_started.what_is_mastodon": "Mastodonについて", "hashtag.column_header.tag_mode.all": "と{additional}", "hashtag.column_header.tag_mode.any": "か{additional}", "hashtag.column_header.tag_mode.none": "({additional} を除く)", @@ -360,8 +361,7 @@ "mute_modal.duration": "ミュートする期間", "mute_modal.hide_notifications": "このユーザーからの通知を隠しますか?", "mute_modal.indefinite": "無期限", - "navigation_bar.about": "About", - "navigation_bar.apps": "アプリ", + "navigation_bar.about": "概要", "navigation_bar.blocks": "ブロックしたユーザー", "navigation_bar.bookmarks": "ブックマーク", "navigation_bar.community_timeline": "ローカルタイムライン", @@ -375,8 +375,6 @@ "navigation_bar.filters": "フィルター設定", "navigation_bar.follow_requests": "フォローリクエスト", "navigation_bar.follows_and_followers": "フォロー・フォロワー", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "キーボードショートカット", "navigation_bar.lists": "リスト", "navigation_bar.logout": "ログアウト", "navigation_bar.mutes": "ミュートしたユーザー", @@ -384,7 +382,7 @@ "navigation_bar.pins": "固定した投稿", "navigation_bar.preferences": "ユーザー設定", "navigation_bar.public_timeline": "連合タイムライン", - "navigation_bar.search": "Search", + "navigation_bar.search": "検索", "navigation_bar.security": "セキュリティ", "not_signed_in_indicator.not_signed_in": "この機能を使うにはログインする必要があります。", "notification.admin.report": "{name}さんが{target}さんを通報しました", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "ルール違反", "report_notification.open": "通報を開く", "search.placeholder": "検索", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "高度な検索フォーマット", "search_popout.tips.full_text": "表示名やユーザー名、ハッシュタグのほか、あなたの投稿やお気に入り、ブーストした投稿、返信に一致する単純なテキスト。", "search_popout.tips.hashtag": "ハッシュタグ", @@ -554,7 +553,7 @@ "status.favourite": "お気に入り", "status.filter": "この投稿をフィルターする", "status.filtered": "フィルターされました", - "status.hide": "トゥートを非表示", + "status.hide": "投稿を非表示", "status.history.created": "{name}さんが{date}に作成", "status.history.edited": "{name}さんが{date}に編集", "status.load_more": "もっと見る", @@ -573,7 +572,7 @@ "status.reblogs.empty": "まだ誰もブーストしていません。ブーストされるとここに表示されます。", "status.redraft": "削除して下書きに戻す", "status.remove_bookmark": "ブックマークを削除", - "status.replied_to": "Replied to {name}", + "status.replied_to": "{name}さんへの返信", "status.reply": "返信", "status.replyAll": "全員に返信", "status.report": "@{name}さんを通報", @@ -586,7 +585,7 @@ "status.show_more_all": "全て見る", "status.show_original": "原文を表示", "status.translate": "翻訳", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "{provider}を使って{lang}から翻訳", "status.uncached_media_warning": "利用できません", "status.unmute_conversation": "会話のミュートを解除", "status.unpin": "プロフィールへの固定を解除", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "OCRの準備中…", "upload_modal.preview_label": "プレビュー ({ratio})", "upload_progress.label": "アップロード中...", + "upload_progress.processing": "Processing…", "video.close": "動画を閉じる", "video.download": "ダウンロード", "video.exit_fullscreen": "全画面を終了する", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index be6709e0b..4e3b8eb35 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "ავტორიზაცია", "follow_request.reject": "უარყოფა", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "დოკუმენტაცია", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "დაწყება", - "getting_started.invite": "ხალხის მოწვევა", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "უსაფრთხოება", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "დავმალოთ შეტყობინებები ამ მომხმარებლისგან?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "დაბლოკილი მომხმარებლები", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "ლოკალური თაიმლაინი", @@ -375,8 +375,6 @@ "navigation_bar.filters": "გაჩუმებული სიტყვები", "navigation_bar.follow_requests": "დადევნების მოთხოვნები", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "ცხელი კლავიშები", "navigation_bar.lists": "სიები", "navigation_bar.logout": "გასვლა", "navigation_bar.mutes": "გაჩუმებული მომხმარებლები", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "ძებნა", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "დეტალური ძებნის ფორმა", "search_popout.tips.full_text": "მარტივი ტექსტი აბრუნებს სტატუსებს რომლებიც შექმენით, აქციეთ ფავორიტად, დაბუსტეთ, ან რაშიც ასახელეთ, ასევე ემთხვევა მომხმარებლის სახელებს, დისპლეი სახელებს, და ჰეშტეგებს.", "search_popout.tips.hashtag": "ჰეშტეგი", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "იტვირთება...", + "upload_progress.processing": "Processing…", "video.close": "ვიდეოს დახურვა", "video.download": "Download file", "video.exit_fullscreen": "სრულ ეკრანზე ჩვენების გათიშვა", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index d693216af..8815fd092 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -136,7 +137,7 @@ "compose_form.poll.remove_option": "Sfeḍ afran-agi", "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", - "compose_form.publish": "Publish", + "compose_form.publish": "Suffeɣ", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Sekles ibeddilen", "compose_form.sensitive.hide": "Creḍ allal n teywalt d anafri", @@ -230,10 +231,10 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Nɣel stacktrace ɣef wafus", "errors.unexpected_crash.report_issue": "Mmel ugur", - "explore.search_results": "Search results", + "explore.search_results": "Igemmaḍ n unadi", "explore.suggested_follows": "I kečč·kem", "explore.title": "Snirem", - "explore.trending_links": "News", + "explore.trending_links": "Isallen", "explore.trending_statuses": "Tisuffaɣ", "explore.trending_tags": "Ihacṭagen", "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Ssireg", "follow_request.reject": "Agi", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Yettwasekles", - "getting_started.directory": "Directory", - "getting_started.documentation": "Amnir", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Bdu", - "getting_started.invite": "Snebgi-d imdanen", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Iɣewwaṛen n umiḍan", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "d {additional}", "hashtag.column_header.tag_mode.any": "neɣ {additional}", "hashtag.column_header.tag_mode.none": "war {additional}", @@ -288,11 +289,11 @@ "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", + "interaction_modal.on_this_server": "Deg uqeddac-ayi", "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.follow": "Ḍfer {name}", "interaction_modal.title.reblog": "Boost {name}'s post", "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# n wass} other {# n wussan}}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Tebɣiḍ ad teffreḍ talɣutin n umseqdac-a?", "mute_modal.indefinite": "Ur yettwasbadu ara", "navigation_bar.about": "Γef", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Imseqdacen yettusḥebsen", "navigation_bar.bookmarks": "Ticraḍ", "navigation_bar.community_timeline": "Tasuddemt tadigant", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Awalen i yettwasgugmen", "navigation_bar.follow_requests": "Isuturen n teḍfeṛt", "navigation_bar.follows_and_followers": "Imeḍfaṛen akked wid i teṭṭafaṛeḍ", - "navigation_bar.info": "Γef", - "navigation_bar.keyboard_shortcuts": "Inegzumen n unasiw", "navigation_bar.lists": "Tibdarin", "navigation_bar.logout": "Ffeɣ", "navigation_bar.mutes": "Iseqdacen yettwasusmen", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Tijewwiqin yettwasentḍen", "navigation_bar.preferences": "Imenyafen", "navigation_bar.public_timeline": "Tasuddemt tazayezt tamatut", - "navigation_bar.search": "Search", + "navigation_bar.search": "Nadi", "navigation_bar.security": "Taɣellist", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -455,7 +453,7 @@ "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "War tabdert", "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.title": "Tasertit tabaḍnit", "refresh": "Smiren", "regeneration_indicator.label": "Yessalay-d…", "regeneration_indicator.sublabel": "Tasuddemt tagejdant ara d-tettwaheggay!", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Nadi", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Anadi yenneflin", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "ahacṭag", @@ -535,7 +534,7 @@ "server_banner.learn_more": "Issin ugar", "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.sign_in": "Qqen", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", @@ -609,7 +608,7 @@ "timeline_hint.resources.follows": "T·Yeṭafaṛ", "timeline_hint.resources.statuses": "Tijewwaqin tiqdimin", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", - "trends.trending_now": "Trending now", + "trends.trending_now": "Ayen mucaɛen tura", "ui.beforeunload": "Arewway-ik·im ad iruḥ ma yella tefeɣ-d deg Maṣṭudun.", "units.short.billion": "{count}B", "units.short.million": "{count}M", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Aheyyi n OCR…", "upload_modal.preview_label": "Taskant ({ratio})", "upload_progress.label": "Asali iteddu...", + "upload_progress.processing": "Processing…", "video.close": "Mdel tabidyutt", "video.download": "Sidered afaylu", "video.exit_fullscreen": "Ffeɣ seg ugdil ačuran", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index 157ca66da..886b515f5 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Авторизация", "follow_request.reject": "Қабылдамау", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Сақталды", - "getting_started.directory": "Directory", - "getting_started.documentation": "Құжаттама", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Желіде", - "getting_started.invite": "Адам шақыру", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Қауіпсіздік", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "және {additional}", "hashtag.column_header.tag_mode.any": "немесе {additional}", "hashtag.column_header.tag_mode.none": "{additional} болмай", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Бұл қолданушы ескертпелерін жасырамыз ба?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Бұғатталғандар", "navigation_bar.bookmarks": "Бетбелгілер", "navigation_bar.community_timeline": "Жергілікті желі", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Үнсіз сөздер", "navigation_bar.follow_requests": "Жазылуға сұранғандар", "navigation_bar.follows_and_followers": "Жазылымдар және оқырмандар", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Ыстық пернелер", "navigation_bar.lists": "Тізімдер", "navigation_bar.logout": "Шығу", "navigation_bar.mutes": "Үнсіз қолданушылар", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Іздеу", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Кеңейтілген іздеу форматы", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, bоosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "хэштег", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Превью ({ratio})", "upload_progress.label": "Жүктеп жатыр...", + "upload_progress.processing": "Processing…", "video.close": "Видеоны жабу", "video.download": "Файлды түсіру", "video.exit_fullscreen": "Толық экраннан шық", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index 3e2baf887..a92c64030 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", - "getting_started.invite": "Invite people", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Security", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", "navigation_bar.mutes": "Muted users", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Search", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index af818e304..bac5bb685 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -1,6 +1,7 @@ { "about.blocks": "제한된 서버들", "about.contact": "연락처:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "사유", "about.domain_blocks.domain": "도메인", "about.domain_blocks.preamble": "마스토돈은 일반적으로 연합우주에 있는 어떤 서버의 사용자와도 게시물을 보고 응답을 할 수 있도록 허용합니다. 다음 항목들은 특정한 서버에 대해 만들어 진 예외사항입니다.", @@ -39,7 +40,7 @@ "account.follows.empty": "이 사용자는 아직 아무도 팔로우하고 있지 않습니다.", "account.follows_you": "날 팔로우합니다", "account.hide_reblogs": "@{name}의 부스트를 숨기기", - "account.joined_short": "Joined", + "account.joined_short": "가입", "account.languages": "구독한 언어 변경", "account.link_verified_on": "{date}에 이 링크의 소유권이 확인 됨", "account.locked_info": "이 계정의 프라이버시 설정은 잠금으로 설정되어 있습니다. 계정 소유자가 수동으로 팔로워를 승인합니다.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "닫기", "bundle_modal_error.message": "컴포넌트를 불러오는 과정에서 문제가 발생했습니다.", "bundle_modal_error.retry": "다시 시도", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "마스토돈은 분산화 되어 있기 때문에, 다른 서버에서 계정을 만들더라도 이 서버와 상호작용 할 수 있습니다.", + "closed_registrations_modal.description": "{domain}은 현재 가입이 막혀있는 상태입니다, 만약 마스토돈을 이용하기 위해 꼭 {domain}을 사용할 필요는 없다는 사실을 인지해 두세요.", + "closed_registrations_modal.find_another_server": "다른 서버 찾기", + "closed_registrations_modal.preamble": "마스토돈은 분산화 되어 있습니다, 그렇기 때문에 어디에서 계정을 생성하든, 이 서버에 있는 누구와도 팔로우와 상호작용을 할 수 있습니다. 심지어는 스스로 서버를 만드는 것도 가능합니다!", + "closed_registrations_modal.title": "마스토돈에서 가입", "column.about": "정보", "column.blocks": "차단한 사용자", "column.bookmarks": "보관함", @@ -258,15 +259,15 @@ "follow_request.authorize": "허가", "follow_request.reject": "거부", "follow_requests.unlocked_explanation": "당신의 계정이 잠기지 않았다고 할 지라도, {domain}의 스탭은 당신이 이 계정들로부터의 팔로우 요청을 수동으로 확인하길 원한다고 생각했습니다.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "저장됨", - "getting_started.directory": "디렉토리", - "getting_started.documentation": "문서", - "getting_started.free_software_notice": "마스토돈은 자유 오픈소스 소프트웨어입니다. {repository}에서 소스코드를 열람할 수 있으며, 기여를 하거나 이슈를 작성할 수도 있습니다.", "getting_started.heading": "시작", - "getting_started.invite": "초대", - "getting_started.privacy_policy": "개인정보 처리방침", - "getting_started.security": "계정 설정", - "getting_started.what_is_mastodon": "마스토돈에 대하여", "hashtag.column_header.tag_mode.all": "그리고 {additional}", "hashtag.column_header.tag_mode.any": "또는 {additional}", "hashtag.column_header.tag_mode.none": "{additional}를 제외하고", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "이 사용자로부터의 알림을 숨기시겠습니까?", "mute_modal.indefinite": "무기한", "navigation_bar.about": "정보", - "navigation_bar.apps": "앱 다운로드하기", "navigation_bar.blocks": "차단한 사용자", "navigation_bar.bookmarks": "보관함", "navigation_bar.community_timeline": "로컬 타임라인", @@ -375,8 +375,6 @@ "navigation_bar.filters": "뮤트한 단어", "navigation_bar.follow_requests": "팔로우 요청", "navigation_bar.follows_and_followers": "팔로우와 팔로워", - "navigation_bar.info": "정보", - "navigation_bar.keyboard_shortcuts": "단축키", "navigation_bar.lists": "리스트", "navigation_bar.logout": "로그아웃", "navigation_bar.mutes": "뮤트한 사용자", @@ -384,7 +382,7 @@ "navigation_bar.pins": "고정된 게시물", "navigation_bar.preferences": "사용자 설정", "navigation_bar.public_timeline": "연합 타임라인", - "navigation_bar.search": "Search", + "navigation_bar.search": "검색", "navigation_bar.security": "보안", "not_signed_in_indicator.not_signed_in": "이 정보에 접근하려면 로그인을 해야 합니다.", "notification.admin.report": "{name} 님이 {target}를 신고했습니다", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "규칙 위반", "report_notification.open": "신고 열기", "search.placeholder": "검색", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "고급 검색 방법", "search_popout.tips.full_text": "단순한 텍스트 검색은 당신이 작성했거나, 관심글로 지정했거나, 부스트했거나, 멘션을 받은 게시글, 그리고 사용자명, 표시되는 이름, 해시태그를 반환합니다.", "search_popout.tips.hashtag": "해시태그", @@ -573,7 +572,7 @@ "status.reblogs.empty": "아직 아무도 이 게시물을 부스트하지 않았습니다. 부스트 한 사람들이 여기에 표시 됩니다.", "status.redraft": "지우고 다시 쓰기", "status.remove_bookmark": "보관한 게시물 삭제", - "status.replied_to": "Replied to {name}", + "status.replied_to": "{name} 님에게 답장", "status.reply": "답장", "status.replyAll": "글타래에 답장", "status.report": "신고", @@ -586,7 +585,7 @@ "status.show_more_all": "모두 펼치기", "status.show_original": "원본 보기", "status.translate": "번역", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "{lang}에서 {provider}를 사용해 번역됨", "status.uncached_media_warning": "사용할 수 없음", "status.unmute_conversation": "이 대화의 뮤트 해제하기", "status.unpin": "고정 해제", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "OCR 준비 중…", "upload_modal.preview_label": "미리보기 ({ratio})", "upload_progress.label": "업로드 중...", + "upload_progress.processing": "Processing…", "video.close": "동영상 닫기", "video.download": "파일 다운로드", "video.exit_fullscreen": "전체화면 나가기", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 246b46407..700e5a264 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -1,6 +1,7 @@ { "about.blocks": "Rajekarên çavdêrkirî", "about.contact": "Têkilî:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Sedem", "about.domain_blocks.domain": "Navper", "about.domain_blocks.preamble": "Mastodon bi gelemperî dihêle ku tu naverokê bibînî û bi bikarhênerên ji rajekareke din a li fendiverse re têkilî dayne. Ev awaretyên ku li ser vê rajekara taybetî hatine çêkirin ev in.", @@ -39,7 +40,7 @@ "account.follows.empty": "Ev bikarhêner hin kesekî heya niha neşopandiye.", "account.follows_you": "Te dişopîne", "account.hide_reblogs": "Bilindkirinên ji @{name} veşêre", - "account.joined_short": "Joined", + "account.joined_short": "Tevlî bû", "account.languages": "Zimanên beşdarbûyî biguherîne", "account.link_verified_on": "Xwedaniya li vê girêdanê di {date} de hatiye kontrolkirin", "account.locked_info": "Rewşa vê ajimêrê wek kilîtkirî hatiye sazkirin. Xwediyê ajimêrê, bi destan dinirxîne şopandinê dinirxîne.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Bigire", "bundle_modal_error.message": "Di dema barkirina vê hêmanê de tiştek çewt çê bû.", "bundle_modal_error.retry": "Dîsa bicerbîne", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Ji ber ku Mastodon nenavendî ye, tu dika li ser rajekarek din ajimêrekê biafirînî û hîn jî bi vê yekê re tev bigerî.", + "closed_registrations_modal.description": "Afirandina ajimêrekê li ser {domain} niha ne pêkan e, lê ji kerema xwe ji bîr neke ku pêdiviya te bi hebûna ajimêreke taybet li ser {domain} tune ye ku tu Mastodon bi kar bînî.", + "closed_registrations_modal.find_another_server": "Rajekareke din bibîne", + "closed_registrations_modal.preamble": "Mastodon nenavendî ye, ji ber vê yekê tu li ku derê ajimêrê xwe biafirînê, tu yê bikaribî li ser vê rajekarê her kesî bişopînî û têkilî deynî. Her wiha tu dikarî wê bi xwe pêşkêş bikî!", + "closed_registrations_modal.title": "Tomar bibe li ser Mastodon", "column.about": "Derbar", "column.blocks": "Bikarhênerên astengkirî", "column.bookmarks": "Şûnpel", @@ -258,15 +259,15 @@ "follow_request.authorize": "Mafê bide", "follow_request.reject": "Nepejirîne", "follow_requests.unlocked_explanation": "Tevlî ku ajimêra te ne kilît kiriye, karmendên {domain} digotin qey tu dixwazî ku pêşdîtina daxwazên şopandinê bi destan bike.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Tomarkirî", - "getting_started.directory": "Rêgeh", - "getting_started.documentation": "Pelbend", - "getting_started.free_software_notice": "Mastodon belaş, nermalava çavkaniya vekirî ye. Tu dikarî koda çavkaniyê bibînî, beşdar bibî an pirsgirêkan ragihînî li ser {repository}.", "getting_started.heading": "Destpêkirin", - "getting_started.invite": "Kesan vexwîne", - "getting_started.privacy_policy": "Politîka taybetiyê", - "getting_started.security": "Sazkariyên ajimêr", - "getting_started.what_is_mastodon": "Derbarê Mastodon", "hashtag.column_header.tag_mode.all": "û {additional}", "hashtag.column_header.tag_mode.any": "an {additional}", "hashtag.column_header.tag_mode.none": "bêyî {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Agahdariyan ji ev bikarhêner veşêre?", "mute_modal.indefinite": "Nediyar", "navigation_bar.about": "Derbar", - "navigation_bar.apps": "Sepanê bi dest bixe", "navigation_bar.blocks": "Bikarhênerên astengkirî", "navigation_bar.bookmarks": "Şûnpel", "navigation_bar.community_timeline": "Demnameya herêmî", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Peyvên bêdengkirî", "navigation_bar.follow_requests": "Daxwazên şopandinê", "navigation_bar.follows_and_followers": "Şopandin û şopîner", - "navigation_bar.info": "Derbar", - "navigation_bar.keyboard_shortcuts": "Kurte bişkok", "navigation_bar.lists": "Rêzok", "navigation_bar.logout": "Derkeve", "navigation_bar.mutes": "Bikarhênerên bêdengkirî", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Şandiya derzîkirî", "navigation_bar.preferences": "Sazkarî", "navigation_bar.public_timeline": "Demnameya giştî", - "navigation_bar.search": "Search", + "navigation_bar.search": "Bigere", "navigation_bar.security": "Ewlehî", "not_signed_in_indicator.not_signed_in": "Divê tu têketinê bikî da ku tu bigihîjî vê çavkaniyê.", "notification.admin.report": "{name} hate ragihandin {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Binpêkirina rêzîkê", "report_notification.open": "Ragihandinê veke", "search.placeholder": "Bigere", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Dirûva lêgerîna pêşketî", "search_popout.tips.full_text": "Nivîsên hêsan, şandiyên ku te nivîsandiye, bijare kiriye, bilind kiriye an jî yên behsa te kirine û her wiha navê bikarhêneran, navên xûya dike û hashtagan vedigerîne.", "search_popout.tips.hashtag": "hashtag", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Kesekî hin ev şandî bilind nekiriye. Gava kesek bilind bike, ew ên li vir werin xuyakirin.", "status.redraft": "Jê bibe & ji nû ve reşnivîs bike", "status.remove_bookmark": "Şûnpêlê jê rake", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Bersiv da {name}", "status.reply": "Bersivê bide", "status.replyAll": "Mijarê bibersivîne", "status.report": "@{name} ragihîne", @@ -586,7 +585,7 @@ "status.show_more_all": "Bêtir nîşan bide bo hemûyan", "status.show_original": "A resen nîşan bide", "status.translate": "Wergerîne", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Ji {lang} hate wergerandin bi riya {provider}", "status.uncached_media_warning": "Tune ye", "status.unmute_conversation": "Axaftinê bêdeng neke", "status.unpin": "Şandiya derzîkirî ji profîlê rake", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "OCR dihê amadekirin…", "upload_modal.preview_label": "Pêşdîtin ({ratio})", "upload_progress.label": "Tê barkirin...", + "upload_progress.processing": "Processing…", "video.close": "Vîdyoyê bigire", "video.download": "Pelê daxe", "video.exit_fullscreen": "Ji dîmendera tijî derkeve", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index 8ace3826a..2faed5acc 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Ri kummyas", "follow_request.reject": "Denagha", "follow_requests.unlocked_explanation": "Kyn na vo agas akont alhwedhys, an meni {domain} a wrug tybi y fia da genowgh dasweles govynnow holya a'n akontys ma dre leuv.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Gwithys", - "getting_started.directory": "Directory", - "getting_started.documentation": "Dogvenva", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Dhe dhalleth", - "getting_started.invite": "Gelwel tus", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Dewisyow akont", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "ha(g) {additional}", "hashtag.column_header.tag_mode.any": "po {additional}", "hashtag.column_header.tag_mode.none": "heb {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Kudha gwarnyansow a'n devnydhyer ma?", "mute_modal.indefinite": "Andhevri", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Devnydhyoryon lettys", "navigation_bar.bookmarks": "Folennosow", "navigation_bar.community_timeline": "Amserlin leel", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Geryow tawhes", "navigation_bar.follow_requests": "Govynnow holya", "navigation_bar.follows_and_followers": "Holyansow ha holyoryon", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Buanellow", "navigation_bar.lists": "Rolyow", "navigation_bar.logout": "Digelmi", "navigation_bar.mutes": "Devnydhyoryon tawhes", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Hwilas", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Furvas hwilas avonsys", "search_popout.tips.full_text": "Tekst sempel a wra daskor postow a wrussowgh aga skrifa, merkya vel drudh, po bos menegys ynna, keffrys ha henwyn devnydhyoryon ha displetyans, ha bòlnosow a dhesedh.", "search_popout.tips.hashtag": "bòlnos", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Ow pareusi ANG…", "upload_modal.preview_label": "Kynwel ({ratio})", "upload_progress.label": "Owth ughkarga...", + "upload_progress.processing": "Processing…", "video.close": "Degea gwydhyow", "video.download": "Iskarga restren", "video.exit_fullscreen": "Diberth a skrin leun", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index be61374e9..926e074f9 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", - "getting_started.invite": "Invite people", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Security", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", "navigation_bar.mutes": "Muted users", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Search", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index cd1c486cc..12da2ea91 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderētie serveri", "about.contact": "Kontakts:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Iemesls", "about.domain_blocks.domain": "Domēns", "about.domain_blocks.preamble": "Mastodon parasti ļauj apskatīt saturu un mijiedarboties ar lietotājiem no jebkura cita federācijas servera. Šie ir izņēmumi, kas veikti šajā konkrētajā serverī.", @@ -39,7 +40,7 @@ "account.follows.empty": "Šis lietotājs pagaidām nevienam neseko.", "account.follows_you": "Seko tev", "account.hide_reblogs": "Paslēpt paceltos ierakstus no lietotāja @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Pievienojies", "account.languages": "Mainīt abonētās valodas", "account.link_verified_on": "Šīs saites piederība ir pārbaudīta {date}", "account.locked_info": "Šī konta privātuma statuss ir slēgts. Īpašnieks izskatīs, kurš viņam drīkst sekot.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Aizvērt", "bundle_modal_error.message": "Kaut kas nogāja greizi ielādējot šo komponenti.", "bundle_modal_error.retry": "Mēģini vēlreiz", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Tā kā Mastodon ir decentralizēts, tu vari izveidot kontu citā serverī un joprojām mijiedarboties ar šo.", + "closed_registrations_modal.description": "Pašlaik nav iespējams izveidot kontu domēnā {domain}, taču, lūdzu, ņem vērā, ka, lai izmantotu Mastodon, tev nav nepieciešams konts tieši domēnā {domain}.", + "closed_registrations_modal.find_another_server": "Atrast citu serveri", + "closed_registrations_modal.preamble": "Mastodon ir decentralizēts, tāpēc neatkarīgi no tā, kur tu izveido savu kontu, varēsit sekot līdzi un sazināties ar ikvienu šajā serverī. Tu pat vari vadīt to pats!", + "closed_registrations_modal.title": "Reģistrēšanās Mastodon", "column.about": "Par", "column.blocks": "Bloķētie lietotāji", "column.bookmarks": "Grāmatzīmes", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autorizēt", "follow_request.reject": "Noraidīt", "follow_requests.unlocked_explanation": "Lai gan tavs konts nav bloķēts, {domain} darbinieki iedomājās, ka, iespējams, vēlēsies pārskatīt pieprasījumus no šiem kontiem.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saglabāts", - "getting_started.directory": "Direktorija", - "getting_started.documentation": "Dokumentācija", - "getting_started.free_software_notice": "Mastodon ir bezmaksas atvērtā pirmkoda programmatūra. Tu vari apskatīt pirmkodu, sniegt savu ieguldījumu vai ziņot par problēmām vietnē {repository}.", "getting_started.heading": "Darba sākšana", - "getting_started.invite": "Uzaicini cilvēkus", - "getting_started.privacy_policy": "Privātuma Politika", - "getting_started.security": "Konta iestatījumi", - "getting_started.what_is_mastodon": "Par Mastodon", "hashtag.column_header.tag_mode.all": "un {additional}", "hashtag.column_header.tag_mode.any": "vai {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Slēpt paziņojumus no šī lietotāja?", "mute_modal.indefinite": "Nenoteikts", "navigation_bar.about": "Par", - "navigation_bar.apps": "Iegūt lietotni", "navigation_bar.blocks": "Bloķētie lietotāji", "navigation_bar.bookmarks": "Grāmatzīmes", "navigation_bar.community_timeline": "Vietējā ziņu lenta", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Klusināti vārdi", "navigation_bar.follow_requests": "Sekošanas pieprasījumi", "navigation_bar.follows_and_followers": "Man seko un sekotāji", - "navigation_bar.info": "Par", - "navigation_bar.keyboard_shortcuts": "Ātrie taustiņi", "navigation_bar.lists": "Saraksti", "navigation_bar.logout": "Iziet", "navigation_bar.mutes": "Apklusinātie lietotāji", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Piespraustās ziņas", "navigation_bar.preferences": "Iestatījumi", "navigation_bar.public_timeline": "Apvienotā ziņu lenta", - "navigation_bar.search": "Search", + "navigation_bar.search": "Meklēt", "navigation_bar.security": "Drošība", "not_signed_in_indicator.not_signed_in": "Lai piekļūtu šim resursam, tev ir jāpierakstās.", "notification.admin.report": "{name} ziņoja par {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Noteikumu pārkāpums", "report_notification.open": "Atvērt ziņojumu", "search.placeholder": "Meklēšana", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Paplašināts meklēšanas formāts", "search_popout.tips.full_text": "Vienkāršs teksts atgriež ziņas, kuras esi rakstījis, iecienījis, paaugstinājis vai pieminējis, kā arī atbilstošie lietotājvārdi, parādāmie vārdi un tēmturi.", "search_popout.tips.hashtag": "mirkļbirka", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Neviens šo ziņojumu vel nav paaugstinājis. Kad būs, tie parādīsies šeit.", "status.redraft": "Dzēst un pārrakstīt", "status.remove_bookmark": "Noņemt grāmatzīmi", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Atbildēja {name}", "status.reply": "Atbildēt", "status.replyAll": "Atbildēt uz tematu", "status.report": "Ziņot par @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "Rādīt vairāk visiem", "status.show_original": "Rādīt oriģinālu", "status.translate": "Tulkot", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Tulkots no {lang} izmantojot {provider}", "status.uncached_media_warning": "Nav pieejams", "status.unmute_conversation": "Atvērt sarunu", "status.unpin": "Noņemt no profila", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Sagatavo OCR…", "upload_modal.preview_label": "Priekšskatīt ({ratio})", "upload_progress.label": "Augšupielādē...", + "upload_progress.processing": "Processing…", "video.close": "Aizvērt video", "video.download": "Lejupielādēt datni", "video.exit_fullscreen": "Iziet no pilnekrāna", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index 2cbe5a50e..ebdcb8225 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Одобри", "follow_request.reject": "Одбиј", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Документација", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Започни", - "getting_started.invite": "Покани луѓе", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Поставки на сметката", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "и {additional}", "hashtag.column_header.tag_mode.any": "или {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Замолќени зборови", "navigation_bar.follow_requests": "Следи покани", "navigation_bar.follows_and_followers": "Следења и следбеници", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Кратенки", "navigation_bar.lists": "Листи", "navigation_bar.logout": "Одјави се", "navigation_bar.mutes": "Заќутени корисници", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Барај", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Напреден формат за барање", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "хештег", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index b7f92c715..bb116e976 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "ചുമതലപ്പെടുത്തുക", "follow_request.reject": "നിരസിക്കുക", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "സംരക്ഷിച്ചു", - "getting_started.directory": "Directory", - "getting_started.documentation": "രേഖാ സമാഹരണം", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "തുടക്കം കുറിക്കുക", - "getting_started.invite": "ആളുകളെ ക്ഷണിക്കുക", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "അംഗത്വ ക്രമീകരണങ്ങൾ", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "{additional} ഉം കൂടെ", "hashtag.column_header.tag_mode.any": "അല്ലെങ്കിൽ {additional}", "hashtag.column_header.tag_mode.none": "{additional} ഇല്ലാതെ", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "അനിശ്ചിതകാല", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "തടയപ്പെട്ട ഉപയോക്താക്കൾ", "navigation_bar.bookmarks": "ബുക്ക്മാർക്കുകൾ", "navigation_bar.community_timeline": "പ്രാദേശിക സമയരേഖ", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "പിന്തുടരാനുള്ള അഭ്യർത്ഥനകൾ", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "ലിസ്റ്റുകൾ", "navigation_bar.logout": "ലോഗൗട്ട്", "navigation_bar.mutes": "നിശബ്ദമാക്കപ്പെട്ട ഉപയോക്താക്കൾ", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "തിരയുക", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "ഹാഷ്ടാഗ്", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "OCR തയ്യാറാക്കുന്നു…", "upload_modal.preview_label": "പൂര്‍വ്വദൃശ്യം({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "വീഡിയോ അടയ്ക്കുക", "video.download": "ഫയൽ ഡൌൺലോഡ് ചെയ്യുക", "video.exit_fullscreen": "പൂർണ്ണ സ്ക്രീനിൽ നിന്ന് പുറത്തുകടക്കുക", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index ea2345ecf..07d179979 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", - "getting_started.invite": "Invite people", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Security", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", "navigation_bar.mutes": "Muted users", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Search", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index de0c50480..26551104b 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Benarkan", "follow_request.reject": "Tolak", "follow_requests.unlocked_explanation": "Walaupun akaun anda tidak dikunci, kakitangan {domain} merasakan anda mungkin ingin menyemak permintaan ikutan daripada akaun ini secara manual.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Disimpan", - "getting_started.directory": "Directory", - "getting_started.documentation": "Pendokumenan", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Mari bermula", - "getting_started.invite": "Undang orang", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Tetapan akaun", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "dan {additional}", "hashtag.column_header.tag_mode.any": "atau {additional}", "hashtag.column_header.tag_mode.none": "tanpa {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Sembunyikan pemberitahuan daripada pengguna ini?", "mute_modal.indefinite": "Tidak tentu", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Pengguna yang disekat", "navigation_bar.bookmarks": "Tanda buku", "navigation_bar.community_timeline": "Garis masa tempatan", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Perkataan yang dibisukan", "navigation_bar.follow_requests": "Permintaan ikutan", "navigation_bar.follows_and_followers": "Ikutan dan pengikut", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Kekunci pantas", "navigation_bar.lists": "Senarai", "navigation_bar.logout": "Log keluar", "navigation_bar.mutes": "Pengguna yang dibisukan", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Cari", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Format gelintar lanjutan", "search_popout.tips.full_text": "Teks ringkas mengembalikan hantaran yang anda telah tulis, menggemari, menggalak, atau telah disebutkan, dan juga nama pengguna, nama paparan, dan tanda pagar yang dipadankan.", "search_popout.tips.hashtag": "tanda pagar", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Mempersiapkan OCR…", "upload_modal.preview_label": "Pratonton ({ratio})", "upload_progress.label": "Memuat naik...", + "upload_progress.processing": "Processing…", "video.close": "Tutup video", "video.download": "Muat turun fail", "video.exit_fullscreen": "Keluar skrin penuh", diff --git a/app/javascript/mastodon/locales/my.json b/app/javascript/mastodon/locales/my.json new file mode 100644 index 000000000..174769782 --- /dev/null +++ b/app/javascript/mastodon/locales/my.json @@ -0,0 +1,649 @@ +{ + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", + "account.account_note_header": "Note", + "account.add_or_remove_from_list": "Add or Remove from lists", + "account.badges.bot": "Bot", + "account.badges.group": "Group", + "account.block": "Block @{name}", + "account.block_domain": "Block domain {domain}", + "account.blocked": "Blocked", + "account.browse_more_on_origin_server": "Browse more on the original profile", + "account.cancel_follow_request": "Withdraw follow request", + "account.direct": "Direct message @{name}", + "account.disable_notifications": "Stop notifying me when @{name} posts", + "account.domain_blocked": "Domain blocked", + "account.edit_profile": "ကိုယ်ရေးမှတ်တမ်းပြင်ဆင်မည်", + "account.enable_notifications": "Notify me when @{name} posts", + "account.endorse": "Feature on profile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", + "account.follow": "စောင့်ကြည့်မည်", + "account.followers": "Followers", + "account.followers.empty": "No one follows this user yet.", + "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", + "account.following": "စောင့်ကြည့်နေသည်", + "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", + "account.follows.empty": "This user doesn't follow anyone yet.", + "account.follows_you": "Follows you", + "account.hide_reblogs": "Hide boosts from @{name}", + "account.joined_short": "Joined", + "account.languages": "Change subscribed languages", + "account.link_verified_on": "Ownership of this link was checked on {date}", + "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", + "account.media": "မီဒီယာ", + "account.mention": "Mention @{name}", + "account.moved_to": "{name} has moved to:", + "account.mute": "Mute @{name}", + "account.mute_notifications": "Mute notifications from @{name}", + "account.muted": "Muted", + "account.posts": "ပို့စ်များ", + "account.posts_with_replies": "Posts and replies", + "account.report": "Report @{name}", + "account.requested": "Awaiting approval. Click to cancel follow request", + "account.share": "Share @{name}'s profile", + "account.show_reblogs": "Show boosts from @{name}", + "account.statuses_counter": "{count, plural, one {{counter} Post} other {{counter} Posts}}", + "account.unblock": "Unblock @{name}", + "account.unblock_domain": "Unblock domain {domain}", + "account.unblock_short": "Unblock", + "account.unendorse": "Don't feature on profile", + "account.unfollow": "Unfollow", + "account.unmute": "Unmute @{name}", + "account.unmute_notifications": "Unmute notifications from @{name}", + "account.unmute_short": "Unmute", + "account_note.placeholder": "Click to add a note", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Average", + "admin.dashboard.retention.cohort": "Sign-up month", + "admin.dashboard.retention.cohort_size": "New users", + "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.", + "alert.rate_limited.title": "Rate limited", + "alert.unexpected.message": "An unexpected error occurred.", + "alert.unexpected.title": "Oops!", + "announcement.announcement": "Announcement", + "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", + "autosuggest_hashtag.per_week": "{count} per week", + "boost_modal.combo": "You can press {combo} to skip this next time", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", + "bundle_column_error.retry": "Try again", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", + "bundle_modal_error.close": "Close", + "bundle_modal_error.message": "Something went wrong while loading this component.", + "bundle_modal_error.retry": "Try again", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", + "column.about": "အကြောင်း", + "column.blocks": "Blocked users", + "column.bookmarks": "Bookmarks", + "column.community": "Local timeline", + "column.direct": "Direct messages", + "column.directory": "Browse profiles", + "column.domain_blocks": "Blocked domains", + "column.favourites": "Favourites", + "column.follow_requests": "Follow requests", + "column.home": "Home", + "column.lists": "Lists", + "column.mutes": "Muted users", + "column.notifications": "အသိပေးချက်များ", + "column.pins": "Pinned post", + "column.public": "Federated timeline", + "column_back_button.label": "Back", + "column_header.hide_settings": "Hide settings", + "column_header.moveLeft_settings": "Move column to the left", + "column_header.moveRight_settings": "Move column to the right", + "column_header.pin": "Pin", + "column_header.show_settings": "Show settings", + "column_header.unpin": "Unpin", + "column_subheading.settings": "ဆက်တင်များ", + "community.column_settings.local_only": "Local only", + "community.column_settings.media_only": "Media only", + "community.column_settings.remote_only": "Remote only", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", + "compose_form.direct_message_warning_learn_more": "Learn more", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "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": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", + "compose_form.lock_disclaimer.lock": "locked", + "compose_form.placeholder": "What is on your mind?", + "compose_form.poll.add_option": "Add a choice", + "compose_form.poll.duration": "Poll duration", + "compose_form.poll.option_placeholder": "Choice {number}", + "compose_form.poll.remove_option": "Remove this choice", + "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", + "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", + "compose_form.publish": "Publish", + "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", + "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", + "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", + "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", + "compose_form.spoiler.marked": "Text is hidden behind warning", + "compose_form.spoiler.unmarked": "Text is not hidden", + "compose_form.spoiler_placeholder": "Write your warning here", + "confirmation_modal.cancel": "Cancel", + "confirmations.block.block_and_report": "Block & Report", + "confirmations.block.confirm": "Block", + "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.delete.confirm": "Delete", + "confirmations.delete.message": "Are you sure you want to delete this status?", + "confirmations.delete_list.confirm": "Delete", + "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", + "confirmations.discard_edit_media.confirm": "Discard", + "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.domain_block.confirm": "Hide entire domain", + "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", + "confirmations.logout.confirm": "Log out", + "confirmations.logout.message": "Are you sure you want to log out?", + "confirmations.mute.confirm": "Mute", + "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.", + "confirmations.mute.message": "Are you sure you want to mute {name}?", + "confirmations.redraft.confirm": "Delete & redraft", + "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.", + "confirmations.reply.confirm": "စာပြန်မည်", + "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", + "confirmations.unfollow.confirm": "Unfollow", + "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", + "conversation.delete": "Delete conversation", + "conversation.mark_as_read": "Mark as read", + "conversation.open": "View conversation", + "conversation.with": "With {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", + "directory.federated": "From known fediverse", + "directory.local": "From {domain} only", + "directory.new_arrivals": "New arrivals", + "directory.recently_active": "Recently active", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "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_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "embed.instructions": "Embed this status on your website by copying the code below.", + "embed.preview": "Here is what it will look like:", + "emoji_button.activity": "Activity", + "emoji_button.clear": "Clear", + "emoji_button.custom": "Custom", + "emoji_button.flags": "Flags", + "emoji_button.food": "Food & Drink", + "emoji_button.label": "Insert emoji", + "emoji_button.nature": "Nature", + "emoji_button.not_found": "No matching emojis found", + "emoji_button.objects": "Objects", + "emoji_button.people": "People", + "emoji_button.recent": "Frequently used", + "emoji_button.search": "Search...", + "emoji_button.search_results": "Search results", + "emoji_button.symbols": "Symbols", + "emoji_button.travel": "Travel & Places", + "empty_column.account_suspended": "Account suspended", + "empty_column.account_timeline": "No posts found", + "empty_column.account_unavailable": "Profile unavailable", + "empty_column.blocks": "You haven't blocked any users yet.", + "empty_column.bookmarked_statuses": "You don't have any bookmarked posts yet. When you bookmark one, it will show up here.", + "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.domain_blocks": "There are no blocked domains yet.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.favourited_statuses": "You don't have any favourite posts yet. When you favourite one, it will show up here.", + "empty_column.favourites": "No one has favourited this post yet. When someone does, they will show up here.", + "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", + "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.", + "empty_column.hashtag": "There is nothing in this hashtag yet.", + "empty_column.home": "Your home timeline is empty! Follow more people to fill it up. {suggestions}", + "empty_column.home.suggestions": "See some suggestions", + "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.", + "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.", + "empty_column.mutes": "You haven't muted any users yet.", + "empty_column.notifications": "You don't have any notifications yet. When other people interact with you, you will see it here.", + "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up", + "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.", + "error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.", + "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", + "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", + "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", + "errors.unexpected_crash.report_issue": "Report issue", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "သတင်းများ", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "ဟက်ရှ်တက်များ", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", + "follow_recommendations.done": "Done", + "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", + "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", + "follow_request.authorize": "Authorize", + "follow_request.reject": "Reject", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", + "generic.saved": "Saved", + "getting_started.heading": "Getting started", + "hashtag.column_header.tag_mode.all": "and {additional}", + "hashtag.column_header.tag_mode.any": "or {additional}", + "hashtag.column_header.tag_mode.none": "without {additional}", + "hashtag.column_settings.select.no_options_message": "No suggestions found", + "hashtag.column_settings.select.placeholder": "Enter hashtags…", + "hashtag.column_settings.tag_mode.all": "All of these", + "hashtag.column_settings.tag_mode.any": "Any of these", + "hashtag.column_settings.tag_mode.none": "None of these", + "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.unfollow": "Unfollow hashtag", + "home.column_settings.basic": "Basic", + "home.column_settings.show_reblogs": "Show boosts", + "home.column_settings.show_replies": "Show replies", + "home.hide_announcements": "Hide announcements", + "home.show_announcements": "Show announcements", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", + "intervals.full.days": "{number, plural, one {# day} other {# days}}", + "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", + "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", + "keyboard_shortcuts.back": "to navigate back", + "keyboard_shortcuts.blocked": "to open blocked users list", + "keyboard_shortcuts.boost": "to boost", + "keyboard_shortcuts.column": "to focus a status in one of the columns", + "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.description": "Description", + "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.down": "to move down in the list", + "keyboard_shortcuts.enter": "to open status", + "keyboard_shortcuts.favourite": "to favourite", + "keyboard_shortcuts.favourites": "to open favourites list", + "keyboard_shortcuts.federated": "to open federated timeline", + "keyboard_shortcuts.heading": "Keyboard Shortcuts", + "keyboard_shortcuts.home": "to open home timeline", + "keyboard_shortcuts.hotkey": "Hotkey", + "keyboard_shortcuts.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.open_media": "to open media", + "keyboard_shortcuts.pinned": "to open pinned posts list", + "keyboard_shortcuts.profile": "to open author's profile", + "keyboard_shortcuts.reply": "to 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 post", + "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search", + "keyboard_shortcuts.up": "to move up in the list", + "lightbox.close": "Close", + "lightbox.compress": "Compress image view box", + "lightbox.expand": "Expand image view box", + "lightbox.next": "Next", + "lightbox.previous": "Previous", + "limited_account_hint.action": "Show profile anyway", + "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "lists.account.add": "Add to list", + "lists.account.remove": "Remove from list", + "lists.delete": "Delete list", + "lists.edit": "Edit list", + "lists.edit.submit": "Change title", + "lists.new.create": "Add list", + "lists.new.title_placeholder": "New list title", + "lists.replies_policy.followed": "Any followed user", + "lists.replies_policy.list": "Members of the list", + "lists.replies_policy.none": "No one", + "lists.replies_policy.title": "Show replies to:", + "lists.search": "Search among people you follow", + "lists.subheading": "Your lists", + "load_pending": "{count, plural, one {# new item} other {# new items}}", + "loading_indicator.label": "Loading...", + "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", + "missing_indicator.label": "Not found", + "missing_indicator.sublabel": "This resource could not be found", + "mute_modal.duration": "Duration", + "mute_modal.hide_notifications": "Hide notifications from this user?", + "mute_modal.indefinite": "Indefinite", + "navigation_bar.about": "အကြောင်း", + "navigation_bar.blocks": "Blocked users", + "navigation_bar.bookmarks": "Bookmarks", + "navigation_bar.community_timeline": "Local timeline", + "navigation_bar.compose": "Compose new post", + "navigation_bar.direct": "Direct messages", + "navigation_bar.discover": "Discover", + "navigation_bar.domain_blocks": "Hidden domains", + "navigation_bar.edit_profile": "ကိုယ်ရေးမှတ်တမ်းပြင်ဆင်မည်", + "navigation_bar.explore": "Explore", + "navigation_bar.favourites": "Favourites", + "navigation_bar.filters": "Muted words", + "navigation_bar.follow_requests": "Follow requests", + "navigation_bar.follows_and_followers": "Follows and followers", + "navigation_bar.lists": "Lists", + "navigation_bar.logout": "Logout", + "navigation_bar.mutes": "Muted users", + "navigation_bar.personal": "Personal", + "navigation_bar.pins": "Pinned posts", + "navigation_bar.preferences": "Preferences", + "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", + "navigation_bar.security": "Security", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "notification.admin.report": "{name} reported {target}", + "notification.admin.sign_up": "{name} signed up", + "notification.favourite": "{name} favourited your status", + "notification.follow": "{name} followed you", + "notification.follow_request": "{name} has requested to follow you", + "notification.mention": "{name} mentioned you", + "notification.own_poll": "Your poll has ended", + "notification.poll": "A poll you have voted in has ended", + "notification.reblog": "{name} boosted your status", + "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", + "notifications.clear": "Clear notifications", + "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.alert": "Desktop notifications", + "notifications.column_settings.favourite": "Favourites:", + "notifications.column_settings.filter_bar.advanced": "Display all categories", + "notifications.column_settings.filter_bar.category": "Quick filter bar", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", + "notifications.column_settings.follow": "New followers:", + "notifications.column_settings.follow_request": "New follow requests:", + "notifications.column_settings.mention": "Mentions:", + "notifications.column_settings.poll": "Poll results:", + "notifications.column_settings.push": "Push notifications", + "notifications.column_settings.reblog": "Boosts:", + "notifications.column_settings.show": "Show in column", + "notifications.column_settings.sound": "Play sound", + "notifications.column_settings.status": "New posts:", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", + "notifications.filter.all": "All", + "notifications.filter.boosts": "Boosts", + "notifications.filter.favourites": "Favourites", + "notifications.filter.follows": "Follows", + "notifications.filter.mentions": "Mentions", + "notifications.filter.polls": "Poll results", + "notifications.filter.statuses": "Updates from people you follow", + "notifications.grant_permission": "Grant permission.", + "notifications.group": "{count} notifications", + "notifications.mark_as_read": "Mark every notification as read", + "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", + "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", + "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.", + "notifications_permission_banner.enable": "Enable desktop notifications", + "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", + "notifications_permission_banner.title": "Never miss a thing", + "picture_in_picture.restore": "Put it back", + "poll.closed": "Closed", + "poll.refresh": "Refresh", + "poll.total_people": "{count, plural, one {# person} other {# people}}", + "poll.total_votes": "{count, plural, one {# vote} other {# votes}}", + "poll.vote": "Vote", + "poll.voted": "You voted for this answer", + "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll_button.add_poll": "Add a poll", + "poll_button.remove_poll": "Remove poll", + "privacy.change": "Adjust status privacy", + "privacy.direct.long": "Visible for mentioned users only", + "privacy.direct.short": "Direct", + "privacy.private.long": "Visible for followers only", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", + "privacy.public.short": "Public", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", + "privacy.unlisted.short": "Unlisted", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", + "refresh": "Refresh", + "regeneration_indicator.label": "Loading…", + "regeneration_indicator.sublabel": "Your home feed is being prepared!", + "relative_time.days": "{number}d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.hours": "{number}h", + "relative_time.just_now": "now", + "relative_time.minutes": "{number}m", + "relative_time.seconds": "{number}s", + "relative_time.today": "today", + "reply_indicator.cancel": "Cancel", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "ကိုယ်ရေးမှတ်တမ်း", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", + "report.forward": "Forward to {target}", + "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", + "report.placeholder": "Type or paste additional comments", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", + "report.submit": "Submit report", + "report.target": "Report {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", + "search.placeholder": "Search", + "search.search_or_paste": "Search or paste URL", + "search_popout.search_format": "Advanced search format", + "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", + "search_popout.tips.hashtag": "hashtag", + "search_popout.tips.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "search_results.accounts": "People", + "search_results.all": "All", + "search_results.hashtags": "ဟက်ရှ်တက်များ", + "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.statuses": "Posts", + "search_results.statuses_fts_disabled": "Searching posts by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", + "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", + "status.block": "Block @{name}", + "status.bookmark": "Bookmark", + "status.cancel_reblog_private": "Unboost", + "status.cannot_reblog": "This post cannot be boosted", + "status.copy": "Copy link to status", + "status.delete": "Delete", + "status.detailed_status": "Detailed conversation view", + "status.direct": "Direct message @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.embed": "Embed", + "status.favourite": "Favourite", + "status.filter": "Filter this post", + "status.filtered": "Filtered", + "status.hide": "Hide toot", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", + "status.load_more": "Load more", + "status.media_hidden": "Media hidden", + "status.mention": "Mention @{name}", + "status.more": "More", + "status.mute": "Mute @{name}", + "status.mute_conversation": "Mute conversation", + "status.open": "Expand this status", + "status.pin": "Pin on profile", + "status.pinned": "Pinned post", + "status.read_more": "Read more", + "status.reblog": "Boost", + "status.reblog_private": "Boost with original visibility", + "status.reblogged_by": "{name} boosted", + "status.reblogs.empty": "No one has boosted this post yet. When someone does, they will show up here.", + "status.redraft": "Delete & re-draft", + "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", + "status.reply": "Reply", + "status.replyAll": "Reply to thread", + "status.report": "Report @{name}", + "status.sensitive_warning": "Sensitive content", + "status.share": "Share", + "status.show_filter_reason": "Show anyway", + "status.show_less": "Show less", + "status.show_less_all": "Show less for all", + "status.show_more": "Show more", + "status.show_more_all": "Show more for all", + "status.show_original": "Show original", + "status.translate": "Translate", + "status.translated_from_with": "Translated from {lang} using {provider}", + "status.uncached_media_warning": "Not available", + "status.unmute_conversation": "Unmute conversation", + "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", + "tabs_bar.federated_timeline": "Federated", + "tabs_bar.home": "Home", + "tabs_bar.local_timeline": "Local", + "tabs_bar.notifications": "Notifications", + "time_remaining.days": "{number, plural, one {# day} other {# days}} left", + "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", + "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", + "time_remaining.moments": "Moments remaining", + "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left", + "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.", + "timeline_hint.resources.followers": "Followers", + "timeline_hint.resources.follows": "Follows", + "timeline_hint.resources.statuses": "Older posts", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.trending_now": "Trending now", + "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", + "units.short.billion": "{count}B", + "units.short.million": "{count}M", + "units.short.thousand": "{count}K", + "upload_area.title": "Drag & drop to upload", + "upload_button.label": "Add images, a video or an audio file", + "upload_error.limit": "File upload limit exceeded.", + "upload_error.poll": "File upload not allowed with polls.", + "upload_form.audio_description": "Describe for people with hearing loss", + "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", + "upload_form.edit": "Edit", + "upload_form.thumbnail": "Change thumbnail", + "upload_form.undo": "Delete", + "upload_form.video_description": "Describe for people with hearing loss or visual impairment", + "upload_modal.analyzing_picture": "Analyzing picture…", + "upload_modal.apply": "Apply", + "upload_modal.applying": "Applying…", + "upload_modal.choose_image": "Choose image", + "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog", + "upload_modal.detect_text": "Detect text from picture", + "upload_modal.edit_media": "Edit media", + "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", + "upload_modal.preparing_ocr": "Preparing OCR…", + "upload_modal.preview_label": "Preview ({ratio})", + "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", + "video.close": "Close video", + "video.download": "Download file", + "video.exit_fullscreen": "Exit full screen", + "video.expand": "Expand video", + "video.fullscreen": "Full screen", + "video.hide": "Hide video", + "video.mute": "Mute sound", + "video.pause": "Pause", + "video.play": "Play", + "video.unmute": "Unmute sound" +} diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 253d5ec02..8484fb4df 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -1,6 +1,7 @@ { "about.blocks": "Gemodereerde servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reden", "about.domain_blocks.domain": "Domein", "about.domain_blocks.preamble": "In het algemeen kun je met Mastodon berichten ontvangen van, en interactie hebben met gebruikers van elke server in de fediverse. Dit zijn de uitzonderingen die op deze specifieke server gelden.", @@ -39,7 +40,7 @@ "account.follows.empty": "Deze gebruiker volgt nog niemand.", "account.follows_you": "Volgt jou", "account.hide_reblogs": "Boosts van @{name} verbergen", - "account.joined_short": "Joined", + "account.joined_short": "Geregistreerd op", "account.languages": "Getoonde talen wijzigen", "account.link_verified_on": "Eigendom van deze link is gecontroleerd op {date}", "account.locked_info": "De privacystatus van dit account is op besloten gezet. De eigenaar bepaalt handmatig wie diegene kan volgen.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Sluiten", "bundle_modal_error.message": "Tijdens het laden van dit onderdeel is er iets fout gegaan.", "bundle_modal_error.retry": "Opnieuw proberen", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Omdat Mastodon gedecentraliseerd is, kun je op een andere server een account registreren en vanaf daar nog steeds met dit account communiceren.", + "closed_registrations_modal.description": "Momenteel is het niet mogelijk om op {domain} een account aan te maken. Hou echter in gedachte dat om Mastodon te kunnen gebruiken het niet een vereiste is om op {domain} een account aan te maken.", + "closed_registrations_modal.find_another_server": "Een andere server zoeken", + "closed_registrations_modal.preamble": "Mastodon is gedecentraliseerd. Op welke server je ook een account hebt, je kunt overal vandaan mensen op deze server volgen en er mee interactie hebben. Je kunt zelfs zelf een Mastodon-server hosten!", + "closed_registrations_modal.title": "Registreren op Mastodon", "column.about": "Over", "column.blocks": "Geblokkeerde gebruikers", "column.bookmarks": "Bladwijzers", @@ -258,15 +259,15 @@ "follow_request.authorize": "Goedkeuren", "follow_request.reject": "Afwijzen", "follow_requests.unlocked_explanation": "Ook al is jouw account niet besloten, de medewerkers van {domain} denken dat jij misschien de volgende volgverzoeken handmatig wil controleren.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Opgeslagen", - "getting_started.directory": "Gebruikersgids", - "getting_started.documentation": "Documentatie", - "getting_started.free_software_notice": "Mastodon is vrije, opensourcesoftware. Je kunt de broncode bekijken, bijdragen of bugs rapporteren op {repository}.", "getting_started.heading": "Aan de slag", - "getting_started.invite": "Mensen uitnodigen", - "getting_started.privacy_policy": "Privacybeleid", - "getting_started.security": "Accountinstellingen", - "getting_started.what_is_mastodon": "Over Mastodon", "hashtag.column_header.tag_mode.all": "en {additional}", "hashtag.column_header.tag_mode.any": "of {additional}", "hashtag.column_header.tag_mode.none": "zonder {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Verberg meldingen van deze persoon?", "mute_modal.indefinite": "Voor onbepaalde tijd", "navigation_bar.about": "Over", - "navigation_bar.apps": "App downloaden", "navigation_bar.blocks": "Geblokkeerde gebruikers", "navigation_bar.bookmarks": "Bladwijzers", "navigation_bar.community_timeline": "Lokale tijdlijn", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Filters", "navigation_bar.follow_requests": "Volgverzoeken", "navigation_bar.follows_and_followers": "Volgers en gevolgden", - "navigation_bar.info": "Over deze server", - "navigation_bar.keyboard_shortcuts": "Sneltoetsen", "navigation_bar.lists": "Lijsten", "navigation_bar.logout": "Uitloggen", "navigation_bar.mutes": "Genegeerde gebruikers", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Vastgemaakte berichten", "navigation_bar.preferences": "Instellingen", "navigation_bar.public_timeline": "Globale tijdlijn", - "navigation_bar.search": "Search", + "navigation_bar.search": "Zoeken", "navigation_bar.security": "Beveiliging", "not_signed_in_indicator.not_signed_in": "Je moet inloggen om toegang tot deze informatie te krijgen.", "notification.admin.report": "{name} heeft {target} geapporteerd", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Overtreden regel(s)", "report_notification.open": "Rapportage openen", "search.placeholder": "Zoeken", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Geavanceerd zoeken", "search_popout.tips.full_text": "Gebruik gewone tekst om te zoeken in jouw berichten, gebooste berichten, favorieten en in berichten waarin je bent vermeldt, en tevens naar gebruikersnamen, weergavenamen en hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -536,7 +535,7 @@ "server_banner.server_stats": "Serverstats:", "sign_in_banner.create_account": "Registreren", "sign_in_banner.sign_in": "Inloggen", - "sign_in_banner.text": "Inloggen om accounts of hashtags te volgen, op berichten te reageren, berichten te delen, of om interactie te hebben met jouw account op een andere server.", + "sign_in_banner.text": "Wanneer je een account op deze server hebt, kun je inloggen om mensen of hashtags te volgen, op berichten te reageren of om deze te delen. Wanneer je een account op een andere server hebt, kun je daar inloggen en daar interactie met mensen op deze server hebben.", "status.admin_account": "Moderatie-omgeving van @{name} openen", "status.admin_status": "Dit bericht in de moderatie-omgeving tonen", "status.block": "@{name} blokkeren", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Niemand heeft dit bericht nog geboost. Wanneer iemand dit doet, valt dat hier te zien.", "status.redraft": "Verwijderen en herschrijven", "status.remove_bookmark": "Bladwijzer verwijderen", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Reageerde op {name}", "status.reply": "Reageren", "status.replyAll": "Reageer op iedereen", "status.report": "@{name} rapporteren", @@ -586,7 +585,7 @@ "status.show_more_all": "Alles meer tonen", "status.show_original": "Origineel bekijken", "status.translate": "Vertalen", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Vertaald vanuit het {lang} met behulp van {provider}", "status.uncached_media_warning": "Niet beschikbaar", "status.unmute_conversation": "Gesprek niet langer negeren", "status.unpin": "Van profielpagina losmaken", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "OCR voorbereiden…", "upload_modal.preview_label": "Voorvertoning ({ratio})", "upload_progress.label": "Uploaden...", + "upload_progress.processing": "Processing…", "video.close": "Video sluiten", "video.download": "Bestand downloaden", "video.exit_fullscreen": "Volledig scherm sluiten", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 6d08e430a..1a4308579 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autoriser", "follow_request.reject": "Avvis", "follow_requests.unlocked_explanation": "Sjølv om kontoen din ikkje er låst tenkte {domain} tilsette at du ville gå gjennom førespurnadar frå desse kontoane manuelt.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Lagra", - "getting_started.directory": "Directory", - "getting_started.documentation": "Dokumentasjon", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Kom i gang", - "getting_started.invite": "Byd folk inn", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Kontoinnstillingar", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "og {additional}", "hashtag.column_header.tag_mode.any": "eller {additional}", "hashtag.column_header.tag_mode.none": "utan {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Gøyme varsel frå denne brukaren?", "mute_modal.indefinite": "På ubestemt tid", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blokkerte brukarar", "navigation_bar.bookmarks": "Bokmerke", "navigation_bar.community_timeline": "Lokal tidsline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Målbundne ord", "navigation_bar.follow_requests": "Fylgjeførespurnader", "navigation_bar.follows_and_followers": "Fylgje og fylgjarar", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Snøggtastar", "navigation_bar.lists": "Lister", "navigation_bar.logout": "Logg ut", "navigation_bar.mutes": "Målbundne brukarar", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Regelbrot", "report_notification.open": "Open report", "search.placeholder": "Søk", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Avansert søkeformat", "search_popout.tips.full_text": "Enkel tekst returnerer statusar du har skrive, likt, framheva eller vorte nemnd i, i tillegg til samsvarande brukarnamn, visningsnamn og emneknaggar.", "search_popout.tips.hashtag": "emneknagg", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Førebur OCR…", "upload_modal.preview_label": "Førehandsvis ({ratio})", "upload_progress.label": "Lastar opp...", + "upload_progress.processing": "Processing…", "video.close": "Lukk video", "video.download": "Last ned fil", "video.exit_fullscreen": "Lukk fullskjerm", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index f408fad68..13ec6df9a 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autorisér", "follow_request.reject": "Avvis", "follow_requests.unlocked_explanation": "Selv om kontoen din ikke er låst, tror {domain} ansatte at du kanskje vil gjennomgå forespørsler fra disse kontoene manuelt.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Lagret", - "getting_started.directory": "Directory", - "getting_started.documentation": "Dokumentasjon", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Kom i gang", - "getting_started.invite": "Inviter folk", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Kontoinnstillinger", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "og {additional}", "hashtag.column_header.tag_mode.any": "eller {additional}", "hashtag.column_header.tag_mode.none": "uten {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Skjul varslinger fra denne brukeren?", "mute_modal.indefinite": "På ubestemt tid", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blokkerte brukere", "navigation_bar.bookmarks": "Bokmerker", "navigation_bar.community_timeline": "Lokal tidslinje", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Stilnede ord", "navigation_bar.follow_requests": "Følgeforespørsler", "navigation_bar.follows_and_followers": "Følginger og følgere", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Tastatursnarveier", "navigation_bar.lists": "Lister", "navigation_bar.logout": "Logg ut", "navigation_bar.mutes": "Dempede brukere", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Søk", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Avansert søkeformat", "search_popout.tips.full_text": "Enkel tekst gir resultater for statuser du har skrevet, likt, fremhevet, eller har blitt nevnt i, i tillegg til samsvarende brukernavn, visningsnavn og emneknagger.", "search_popout.tips.hashtag": "emneknagg", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Forbereder OCR…", "upload_modal.preview_label": "Forhåndsvisning ({ratio})", "upload_progress.label": "Laster opp...", + "upload_progress.processing": "Processing…", "video.close": "Lukk video", "video.download": "Last ned fil", "video.exit_fullscreen": "Lukk fullskjerm", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 754f38f21..0be16f677 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Acceptar", "follow_request.reject": "Regetar", "follow_requests.unlocked_explanation": "Encara que vòstre compte siasque pas verrolhat, la còla de {domain} pensèt que volriatz benlèu repassar las demandas d’abonament d’aquestes comptes.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Enregistrat", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentacion", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Per començar", - "getting_started.invite": "Convidar de mond", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Seguretat", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sens {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Rescondre las notificacions d’aquesta persona ?", "mute_modal.indefinite": "Cap de data de fin", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Personas blocadas", "navigation_bar.bookmarks": "Marcadors", "navigation_bar.community_timeline": "Flux public local", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Mots ignorats", "navigation_bar.follow_requests": "Demandas d’abonament", "navigation_bar.follows_and_followers": "Abonament e seguidors", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Acorchis clavièr", "navigation_bar.lists": "Listas", "navigation_bar.logout": "Desconnexion", "navigation_bar.mutes": "Personas rescondudas", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Recercar", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Format recèrca avançada", "search_popout.tips.full_text": "Un tèxte simple que tòrna los estatuts qu’avètz escriches, mes en favorits, partejats, o ont sètz mencionat, e tanben los noms d’utilizaires, escais-noms e etiquetas que correspondonas.", "search_popout.tips.hashtag": "etiqueta", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparacion de la ROC…", "upload_modal.preview_label": "Apercebut ({ratio})", "upload_progress.label": "Mandadís…", + "upload_progress.processing": "Processing…", "video.close": "Tampar la vidèo", "video.download": "Telecargar lo fichièr", "video.exit_fullscreen": "Sortir plen ecran", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index cc0fa7069..dbc568598 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", - "getting_started.invite": "Invite people", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Security", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", "navigation_bar.mutes": "Muted users", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Search", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index f8a9c856d..417d79ec6 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -1,6 +1,7 @@ { "about.blocks": "Serwery moderowane", "about.contact": "Kontakt:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Powód", "about.domain_blocks.domain": "Domena", "about.domain_blocks.preamble": "Normalnie Mastodon pozwala ci przeglądać i reagować na treści od innych użytkowników z jakiegokolwiek serwera w fediwersum. To są wyjątki, które zostały stworzone na tym konkretnym serwerze.", @@ -39,7 +40,7 @@ "account.follows.empty": "Ten użytkownik nie śledzi jeszcze nikogo.", "account.follows_you": "Śledzi Cię", "account.hide_reblogs": "Ukryj podbicia od @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Dołączył(a)", "account.languages": "Zmień subskrybowane języki", "account.link_verified_on": "Własność tego odnośnika została potwierdzona {date}", "account.locked_info": "To konto jest prywatne. Właściciel ręcznie wybiera kto może go śledzić.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Zamknij", "bundle_modal_error.message": "Coś poszło nie tak podczas ładowania tego składnika.", "bundle_modal_error.retry": "Spróbuj ponownie", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Ponieważ Mastodon jest zdecentralizowany, możesz założyć konto na innym serwerze i wciąż mieć możliwość wchodzenia w interakcję z tym serwerem.", + "closed_registrations_modal.description": "Opcja tworzenia kont na {domain} jest aktualnie niedostępna, ale miej na uwadze to, że nie musisz mieć konta konkretnie na {domain} by używać Mastodona.", + "closed_registrations_modal.find_another_server": "Znajdź inny serwer", + "closed_registrations_modal.preamble": "Mastodon jest zdecentralizowany, więc bez względu na to, gdzie się zarejestrujesz, będziesz w stanie obserwować i wchodzić w interakcje z innymi osobami na tym serwerze. Możesz nawet uruchomić własny serwer!", + "closed_registrations_modal.title": "Rejestracja na Mastodonie", "column.about": "O...", "column.blocks": "Zablokowani użytkownicy", "column.bookmarks": "Zakładki", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autoryzuj", "follow_request.reject": "Odrzuć", "follow_requests.unlocked_explanation": "Mimo że Twoje konto nie jest zablokowane, zespół {domain} uznał że możesz chcieć ręcznie przejrzeć prośby o możliwość śledzenia.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Zapisano", - "getting_started.directory": "Katalog", - "getting_started.documentation": "Dokumentacja", - "getting_started.free_software_notice": "Mastodon jest darmowym, otwartym oprogramowaniem. Możesz zobaczyć kod źródłowy, wnieść wkład lub zgłosić problemy na {repository}.", "getting_started.heading": "Rozpocznij", - "getting_started.invite": "Zaproś znajomych", - "getting_started.privacy_policy": "Polityka prywatności", - "getting_started.security": "Bezpieczeństwo", - "getting_started.what_is_mastodon": "O Mastodon", "hashtag.column_header.tag_mode.all": "i {additional}", "hashtag.column_header.tag_mode.any": "lub {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", @@ -352,7 +353,7 @@ "lists.replies_policy.title": "Pokazuj odpowiedzi dla:", "lists.search": "Szukaj wśród osób które śledzisz", "lists.subheading": "Twoje listy", - "load_pending": "{count, plural, one {# nowy przedmiot} other {nowe przedmioty}}", + "load_pending": "{count, plural, one {# nowa pozycja} other {nowe pozycje}}", "loading_indicator.label": "Ładowanie…", "media_gallery.toggle_visible": "Przełącz widoczność", "missing_indicator.label": "Nie znaleziono", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Chcesz ukryć powiadomienia od tego użytkownika?", "mute_modal.indefinite": "Nieokreślony", "navigation_bar.about": "O...", - "navigation_bar.apps": "Pobierz aplikację", "navigation_bar.blocks": "Zablokowani użytkownicy", "navigation_bar.bookmarks": "Zakładki", "navigation_bar.community_timeline": "Lokalna oś czasu", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Wyciszone słowa", "navigation_bar.follow_requests": "Prośby o śledzenie", "navigation_bar.follows_and_followers": "Śledzeni i śledzący", - "navigation_bar.info": "O nas", - "navigation_bar.keyboard_shortcuts": "Skróty klawiszowe", "navigation_bar.lists": "Listy", "navigation_bar.logout": "Wyloguj", "navigation_bar.mutes": "Wyciszeni użytkownicy", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Przypięte wpisy", "navigation_bar.preferences": "Preferencje", "navigation_bar.public_timeline": "Globalna oś czasu", - "navigation_bar.search": "Search", + "navigation_bar.search": "Szukaj", "navigation_bar.security": "Bezpieczeństwo", "not_signed_in_indicator.not_signed_in": "Musisz się zalogować, aby otrzymać dostęp do tego zasobu.", "notification.admin.report": "{name} zgłosił {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Naruszenie zasad", "report_notification.open": "Otwórz raport", "search.placeholder": "Szukaj", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Zaawansowane wyszukiwanie", "search_popout.tips.full_text": "Pozwala na wyszukiwanie wpisów które napisałeś(-aś), dodałeś(-aś) do ulubionych lub podbiłeś(-aś), w których o Tobie wspomniano, oraz pasujące nazwy użytkowników, pełne nazwy i hashtagi.", "search_popout.tips.hashtag": "hasztag", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Nikt nie podbił jeszcze tego wpisu. Gdy ktoś to zrobi, pojawi się tutaj.", "status.redraft": "Usuń i przeredaguj", "status.remove_bookmark": "Usuń zakładkę", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Odpowiedziałeś/aś {name}", "status.reply": "Odpowiedz", "status.replyAll": "Odpowiedz na wątek", "status.report": "Zgłoś @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "Rozwiń wszystkie", "status.show_original": "Pokaż oryginał", "status.translate": "Przetłumacz", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Przetłumaczono z {lang} przy użyciu {provider}", "status.uncached_media_warning": "Niedostępne", "status.unmute_conversation": "Cofnij wyciszenie konwersacji", "status.unpin": "Odepnij z profilu", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Przygotowywanie OCR…", "upload_modal.preview_label": "Podgląd ({ratio})", "upload_progress.label": "Wysyłanie…", + "upload_progress.processing": "Processing…", "video.close": "Zamknij film", "video.download": "Pobierz plik", "video.exit_fullscreen": "Opuść tryb pełnoekranowy", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index a4d7701ff..db4367bcd 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Aprovar", "follow_request.reject": "Recusar", "follow_requests.unlocked_explanation": "Apesar de seu perfil não ser trancado, {domain} exige que você revise a solicitação para te seguir destes perfis manualmente.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Salvo", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentação", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Primeiros passos", - "getting_started.invite": "Convidar pessoas", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Configurações da conta", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "ou {additional}", "hashtag.column_header.tag_mode.none": "sem {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Ocultar notificações deste usuário?", "mute_modal.indefinite": "Indefinido", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Usuários bloqueados", "navigation_bar.bookmarks": "Salvos", "navigation_bar.community_timeline": "Linha do tempo local", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Palavras filtradas", "navigation_bar.follow_requests": "Seguidores pendentes", "navigation_bar.follows_and_followers": "Segue e seguidores", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Atalhos de teclado", "navigation_bar.lists": "Listas", "navigation_bar.logout": "Sair", "navigation_bar.mutes": "Usuários silenciados", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Violação de regra", "report_notification.open": "Abrir relatório", "search.placeholder": "Pesquisar", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Formato de pesquisa avançada", "search_popout.tips.full_text": "Texto simples retorna toots que você escreveu, favoritou, deu boost, ou em que foi mencionado, assim como nomes de usuário e de exibição, e hashtags correspondentes.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparando OCR…", "upload_modal.preview_label": "Prévia ({ratio})", "upload_progress.label": "Enviando...", + "upload_progress.processing": "Processing…", "video.close": "Fechar vídeo", "video.download": "Baixar", "video.exit_fullscreen": "Sair da tela cheia", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index ef8f4f086..ea60d7622 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -1,6 +1,7 @@ { "about.blocks": "Servidores moderados", "about.contact": "Contacto:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Motivo", "about.domain_blocks.domain": "Domínio", "about.domain_blocks.preamble": "Mastodon geralmente permite que veja e interaja com o conteúdo de utilizadores de qualquer outra instância no fediverso. Estas são as exceções desta instância em específico.", @@ -39,7 +40,7 @@ "account.follows.empty": "Este utilizador ainda não segue ninguém.", "account.follows_you": "Segue-te", "account.hide_reblogs": "Esconder partilhas de @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Juntou-se a", "account.languages": "Alterar idiomas subscritos", "account.link_verified_on": "A posse deste link foi verificada em {date}", "account.locked_info": "Esta conta é privada. O proprietário revê manualmente quem a pode seguir.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Fechar", "bundle_modal_error.message": "Algo de errado aconteceu enquanto este componente era carregado.", "bundle_modal_error.retry": "Tente de novo", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Visto que o Mastodon é descentralizado, pode criar uma conta noutro servidor e interagir com este na mesma.", + "closed_registrations_modal.description": "Neste momento não é possível criar uma conta em {domain}, mas lembramos que não é preciso ter uma conta especificamente em {domain} para usar o Mastodon.", + "closed_registrations_modal.find_another_server": "Procurar outro servidor", + "closed_registrations_modal.preamble": "O Mastodon é descentralizado, por isso não importa onde a sua conta é criada, continuará a poder acompanhar e interagir com qualquer um neste servidor. Pode até alojar o seu próprio servidor!", + "closed_registrations_modal.title": "Inscrevendo-se no Mastodon", "column.about": "Sobre", "column.blocks": "Utilizadores Bloqueados", "column.bookmarks": "Itens salvos", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rejeitar", "follow_requests.unlocked_explanation": "Apesar de a sua não ser privada, a administração de {domain} pensa que poderá querer rever manualmente os pedidos de seguimento dessas contas.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Salvo", - "getting_started.directory": "Diretório", - "getting_started.documentation": "Documentação", - "getting_started.free_software_notice": "O Mastodon é um software gratuito, de código aberto. Pode ver o código-fonte, contribuir ou reportar problemas em {repository}.", "getting_started.heading": "Primeiros passos", - "getting_started.invite": "Convidar pessoas", - "getting_started.privacy_policy": "Política de Privacidade", - "getting_started.security": "Segurança", - "getting_started.what_is_mastodon": "Sobre Mastodon", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "ou {additional}", "hashtag.column_header.tag_mode.none": "sem {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Esconder notificações deste utilizador?", "mute_modal.indefinite": "Indefinidamente", "navigation_bar.about": "Sobre", - "navigation_bar.apps": "Obtém a aplicação", "navigation_bar.blocks": "Utilizadores bloqueados", "navigation_bar.bookmarks": "Itens salvos", "navigation_bar.community_timeline": "Cronologia local", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Palavras silenciadas", "navigation_bar.follow_requests": "Seguidores pendentes", "navigation_bar.follows_and_followers": "Seguindo e seguidores", - "navigation_bar.info": "Sobre", - "navigation_bar.keyboard_shortcuts": "Atalhos de teclado", "navigation_bar.lists": "Listas", "navigation_bar.logout": "Sair", "navigation_bar.mutes": "Utilizadores silenciados", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Toots afixados", "navigation_bar.preferences": "Preferências", "navigation_bar.public_timeline": "Cronologia federada", - "navigation_bar.search": "Search", + "navigation_bar.search": "Pesquisar", "navigation_bar.security": "Segurança", "not_signed_in_indicator.not_signed_in": "Necessita de iniciar sessão para utilizar esta funcionalidade.", "notification.admin.report": "{name} denunciou {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Violação de regra", "report_notification.open": "Abrir denúncia", "search.placeholder": "Pesquisar", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Formato avançado de pesquisa", "search_popout.tips.full_text": "Texto simples devolve publicações que escreveu, marcou como favorita, partilhou ou em que foi mencionado, tal como nomes de utilizador, alcunhas e hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Ainda ninguém fez boost a este toot. Quando alguém o fizer, ele irá aparecer aqui.", "status.redraft": "Apagar & reescrever", "status.remove_bookmark": "Remover dos itens salvos", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Respondeu a {name}", "status.reply": "Responder", "status.replyAll": "Responder à conversa", "status.report": "Denunciar @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "Mostrar mais para todas", "status.show_original": "Mostrar original", "status.translate": "Traduzir", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Traduzido do {lang} usando {provider}", "status.uncached_media_warning": "Não disponível", "status.unmute_conversation": "Deixar de silenciar esta conversa", "status.unpin": "Não fixar no perfil", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "A preparar OCR…", "upload_modal.preview_label": "Pré-visualizar ({ratio})", "upload_progress.label": "A enviar...", + "upload_progress.processing": "Processing…", "video.close": "Fechar vídeo", "video.download": "Descarregar ficheiro", "video.exit_fullscreen": "Sair de full screen", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 06f28fb49..2ccd7f6c5 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -1,17 +1,18 @@ { - "about.blocks": "Moderated servers", + "about.blocks": "Servere moderate", "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.domain_blocks.comment": "Motiv", + "about.domain_blocks.domain": "Domeniu", + "about.domain_blocks.preamble": "Mastodon îți permite în general să vezi conținut de la și să interacționezi cu utilizatori de pe oricare server în fediverse. Acestea sunt excepțiile care au fost făcute pe acest server.", + "about.domain_blocks.severity": "Severitate", + "about.domain_blocks.silenced.explanation": "În general, nu vei vedea profiluri și conținut de pe acest server, cu excepția cazului în care îl cauți în mod explicit sau optezi pentru el prin urmărire.", + "about.domain_blocks.silenced.title": "Limitat", + "about.domain_blocks.suspended.explanation": "Nici o informație de la acest server nu va fi procesată, stocată sau schimbată, făcând imposibilă orice interacțiune sau comunicare cu utilizatorii de pe acest server.", + "about.domain_blocks.suspended.title": "Suspendat", + "about.not_available": "Această informație nu a fost pusă la dispoziție pe acest server.", + "about.powered_by": "Media socială descentralizată furnizată de {mastodon}", + "about.rules": "Reguli server", "account.account_note_header": "Notă", "account.add_or_remove_from_list": "Adaugă sau elimină din liste", "account.badges.bot": "Robot", @@ -20,27 +21,27 @@ "account.block_domain": "Blochează domeniul {domain}", "account.blocked": "Blocat", "account.browse_more_on_origin_server": "Vezi mai multe pe profilul original", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Retrage cererea de urmărire", "account.direct": "Trimite-i un mesaj direct lui @{name}", "account.disable_notifications": "Nu îmi mai trimite notificări când postează @{name}", "account.domain_blocked": "Domeniu blocat", "account.edit_profile": "Modifică profilul", "account.enable_notifications": "Trimite-mi o notificare când postează @{name}", "account.endorse": "Promovează pe profil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Ultima postare pe {date}", + "account.featured_tags.last_status_never": "Fără postări", + "account.featured_tags.title": "Hashtag-uri recomandate de {name}", "account.follow": "Abonează-te", "account.followers": "Abonați", "account.followers.empty": "Acest utilizator încă nu are abonați.", "account.followers_counter": "{count, plural, one {{counter} Abonat} few {{counter} Abonați} other {{counter} Abonați}}", - "account.following": "Following", + "account.following": "Urmăriți", "account.following_counter": "{count, plural, one {{counter} Abonament} few {{counter} Abonamente} other {{counter} Abonamente}}", "account.follows.empty": "Momentan acest utilizator nu are niciun abonament.", "account.follows_you": "Este abonat la tine", "account.hide_reblogs": "Ascunde distribuirile de la @{name}", - "account.joined_short": "Joined", - "account.languages": "Change subscribed languages", + "account.joined_short": "Înscris", + "account.languages": "Schimbă limbile abonate", "account.link_verified_on": "Proprietatea acestui link a fost verificată pe {date}", "account.locked_info": "Acest profil este privat. Această persoană aprobă manual conturile care se abonează la ea.", "account.media": "Media", @@ -58,7 +59,7 @@ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "Deblochează pe @{name}", "account.unblock_domain": "Deblochează domeniul {domain}", - "account.unblock_short": "Unblock", + "account.unblock_short": "Deblochează", "account.unendorse": "Nu promova pe profil", "account.unfollow": "Nu mai urmări", "account.unmute": "Nu mai ignora pe @{name}", @@ -258,15 +259,15 @@ "follow_request.authorize": "Acceptă", "follow_request.reject": "Respinge", "follow_requests.unlocked_explanation": "Chiar dacă contul tău nu este blocat, personalul {domain} a considerat că ai putea prefera să consulți manual cererile de abonare de la aceste conturi.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Salvat", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentație", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Primii pași", - "getting_started.invite": "Invită persoane", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Setări cont", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "și {additional}", "hashtag.column_header.tag_mode.any": "sau {additional}", "hashtag.column_header.tag_mode.none": "fără {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Ascunde notificările de la acest utilizator?", "mute_modal.indefinite": "Nedeterminat", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Utilizatori blocați", "navigation_bar.bookmarks": "Marcaje", "navigation_bar.community_timeline": "Cronologie locală", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Cuvinte ignorate", "navigation_bar.follow_requests": "Cereri de abonare", "navigation_bar.follows_and_followers": "Abonamente și abonați", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Taste rapide", "navigation_bar.lists": "Liste", "navigation_bar.logout": "Deconectare", "navigation_bar.mutes": "Utilizatori ignorați", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Caută", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Formate pentru căutare avansată", "search_popout.tips.full_text": "Textele simple returnează postări pe care le-ai scris, favorizat, impulsionat, sau în care sunt menționate, deasemenea și utilizatorii sau hashtag-urile care se potrivesc.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Se pregătește OCR…", "upload_modal.preview_label": "Previzualizare ({ratio})", "upload_progress.label": "Se încarcă...", + "upload_progress.processing": "Processing…", "video.close": "Închide video", "video.download": "Descarcă fișierul", "video.exit_fullscreen": "Ieși din modul ecran complet", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 2ed3d7b45..985a6bdd2 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -1,6 +1,7 @@ { "about.blocks": "Модерируемые серверы", "about.contact": "Контакты:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Причина", "about.domain_blocks.domain": "Домен", "about.domain_blocks.preamble": "Mastodon обычно позволяет просматривать содержимое и взаимодействовать с другими пользователями любых серверов в Федиверсе. Вот исключения, сделанные конкретно для этого сервера.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Авторизовать", "follow_request.reject": "Отказать", "follow_requests.unlocked_explanation": "Этот запрос отправлен с учётной записи, для которой администрация {domain} включила ручную проверку подписок.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Сохранено", - "getting_started.directory": "Каталог", - "getting_started.documentation": "Документация", - "getting_started.free_software_notice": "Mastodon — это бесплатное программное обеспечение с открытым исходным кодом. Вы можете посмотреть исходный код, внести свой вклад или сообщить о проблемах в {repository}.", "getting_started.heading": "Начать", - "getting_started.invite": "Пригласить людей", - "getting_started.privacy_policy": "Политика конфиденциальности", - "getting_started.security": "Настройки учётной записи", - "getting_started.what_is_mastodon": "О Mastodon", "hashtag.column_header.tag_mode.all": "и {additional}", "hashtag.column_header.tag_mode.any": "или {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Скрыть уведомления от этого пользователя?", "mute_modal.indefinite": "Не определена", "navigation_bar.about": "About", - "navigation_bar.apps": "Скачать приложение", "navigation_bar.blocks": "Список блокировки", "navigation_bar.bookmarks": "Закладки", "navigation_bar.community_timeline": "Локальная лента", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Игнорируемые слова", "navigation_bar.follow_requests": "Запросы на подписку", "navigation_bar.follows_and_followers": "Подписки и подписчики", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Сочетания клавиш", "navigation_bar.lists": "Списки", "navigation_bar.logout": "Выйти", "navigation_bar.mutes": "Игнорируемые пользователи", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Нарушение правил", "report_notification.open": "Подать жалобу", "search.placeholder": "Поиск", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Продвинутый формат поиска", "search_popout.tips.full_text": "Поиск по простому тексту отобразит посты, которые вы написали, добавили в избранное, продвинули или в которых были упомянуты, а также подходящие имена пользователей и хэштеги.", "search_popout.tips.hashtag": "хэштег", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Подготовка распознования…", "upload_modal.preview_label": "Предпросмотр ({ratio})", "upload_progress.label": "Загрузка...", + "upload_progress.processing": "Processing…", "video.close": "Закрыть видео", "video.download": "Загрузить файл", "video.exit_fullscreen": "Покинуть полноэкранный режим", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index 691011e7e..b53a0154f 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", - "getting_started.invite": "Invite people", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Security", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", "navigation_bar.mutes": "Muted users", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Search", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 393d7144c..80879eac0 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autoriza", "follow_request.reject": "Refuda", "follow_requests.unlocked_explanation": "Fintzas si su contu tuo no est blocadu, su personale de {domain} at pensadu chi forsis bolias revisionare a manu is rechestas de custos contos.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Sarvadu", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentatzione", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Comente cumintzare", - "getting_started.invite": "Invita gente", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Cunfiguratziones de su contu", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sena {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Boles cuare is notìficas de custa persone?", "mute_modal.indefinite": "Indefinida", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Persones blocadas", "navigation_bar.bookmarks": "Sinnalibros", "navigation_bar.community_timeline": "Lìnia de tempus locale", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Faeddos a sa muda", "navigation_bar.follow_requests": "Rechestas de sighidura", "navigation_bar.follows_and_followers": "Gente chi sighis e sighiduras", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Teclas de atzessu diretu", "navigation_bar.lists": "Listas", "navigation_bar.logout": "Essi", "navigation_bar.mutes": "Persones a sa muda", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Chirca", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Formadu de chirca avantzada", "search_popout.tips.full_text": "Testu sèmplitze pro agatare publicatziones chi as iscritu, marcadu comente a preferidas, cumpartzidu o chi t'ant mentovadu, e fintzas nòmines, nòmines de utente e etichetas.", "search_popout.tips.hashtag": "eticheta", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Ammaniende s'OCR…", "upload_modal.preview_label": "Previsualiza ({ratio})", "upload_progress.label": "Carrighende...", + "upload_progress.processing": "Processing…", "video.close": "Serra su vìdeu", "video.download": "Iscàrriga archìviu", "video.exit_fullscreen": "Essi de ischermu in mannària prena", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 56ee9c17a..8d0bccd16 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "අවසරලත්", "follow_request.reject": "ප්‍රතික්‍ෂේප", "follow_requests.unlocked_explanation": "ඔබගේ ගිණුම අගුලු දමා නොතිබුණද, {domain} කාර්ය මණ්ඩලය සිතුවේ ඔබට මෙම ගිණුම් වලින් ලැබෙන ඉල්ලීම් හස්තීයව සමාලෝචනය කිරීමට අවශ්‍ය විය හැකි බවයි.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "සුරැකිණි", - "getting_started.directory": "නාමාවලිය", - "getting_started.documentation": "ප්‍රලේඛනය", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "පටන් ගන්න", - "getting_started.invite": "මිනිසුන්ට ආරාධනය", - "getting_started.privacy_policy": "රහස්‍යතා ප්‍රතිපත්තිය", - "getting_started.security": "ගිණුමේ සැකසුම්", - "getting_started.what_is_mastodon": "මාස්ටඩන් ගැන", "hashtag.column_header.tag_mode.all": "සහ {additional}", "hashtag.column_header.tag_mode.any": "හෝ {additional}", "hashtag.column_header.tag_mode.none": "{additional}නොමැතිව", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "මෙම පරිශීලකයාගෙන් දැනුම්දීම් සඟවන්නද?", "mute_modal.indefinite": "අවිනිශ්චිත", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "අවහිර කළ අය", "navigation_bar.bookmarks": "පොත්යොමු", "navigation_bar.community_timeline": "දේශීය කාලරේඛාව", @@ -375,8 +375,6 @@ "navigation_bar.filters": "නිහඬ කළ වචන", "navigation_bar.follow_requests": "අනුගමන ඉල්ලීම්", "navigation_bar.follows_and_followers": "අනුගමනය හා අනුගාමිකයින්", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "උණු යතුරු", "navigation_bar.lists": "ලේඛන", "navigation_bar.logout": "නික්මෙන්න", "navigation_bar.mutes": "නිහඬ කළ අය", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "නීතිය කඩ කිරීම", "report_notification.open": "විවෘත වාර්තාව", "search.placeholder": "සොයන්න", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "උසස් සෙවුම් ආකෘතිය", "search_popout.tips.full_text": "සරල පෙළ ඔබ ලියා ඇති, ප්‍රිය කළ, වැඩි කළ හෝ සඳහන් කර ඇති තත්ත්වයන් මෙන්ම ගැළපෙන පරිශීලක නාම, සංදර්ශක නම් සහ හැෂ් ටැග් ලබා දෙයි.", "search_popout.tips.hashtag": "හෑෂ් ටැගය", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "OCR…සූදානම් කරමින්", "upload_modal.preview_label": "පෙරදසුන ({ratio})", "upload_progress.label": "උඩුගත වෙමින්...", + "upload_progress.processing": "Processing…", "video.close": "දෘශ්‍යකය වසන්න", "video.download": "ගොනුව බාගන්න", "video.exit_fullscreen": "පූර්ණ තිරයෙන් පිටවන්න", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 1a9692954..819315399 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Povoľ prístup", "follow_request.reject": "Odmietni", "follow_requests.unlocked_explanation": "Síce Váš učet nie je uzamknutý, ale {domain} tím si myslel že môžete chcieť skontrolovať žiadosti o sledovanie z týchto účtov manuálne.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Uložené", - "getting_started.directory": "Directory", - "getting_started.documentation": "Dokumentácia", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Začni tu", - "getting_started.invite": "Pozvi ľudí", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Zabezpečenie", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "a {additional}", "hashtag.column_header.tag_mode.any": "alebo {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Skry oznámenia od tohto používateľa?", "mute_modal.indefinite": "Bez obmedzenia", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blokovaní užívatelia", "navigation_bar.bookmarks": "Záložky", "navigation_bar.community_timeline": "Miestna časová os", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Filtrované slová", "navigation_bar.follow_requests": "Žiadosti o sledovanie", "navigation_bar.follows_and_followers": "Sledovania a následovatelia", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Klávesové skratky", "navigation_bar.lists": "Zoznamy", "navigation_bar.logout": "Odhlás sa", "navigation_bar.mutes": "Stíšení užívatelia", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Hľadaj", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Pokročilé vyhľadávanie", "search_popout.tips.full_text": "Vráti jednoduchý textový výpis príspevkov ktoré si napísal/a, ktoré si obľúbil/a, povýšil/a, alebo aj tých, v ktorých si bol/a spomenutý/á, a potom všetky zadaniu odpovedajúce prezývky, mená a haštagy.", "search_popout.tips.hashtag": "haštag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Pripravujem OCR…", "upload_modal.preview_label": "Náhľad ({ratio})", "upload_progress.label": "Nahráva sa...", + "upload_progress.processing": "Processing…", "video.close": "Zavri video", "video.download": "Stiahni súbor", "video.exit_fullscreen": "Vypni zobrazenie na celú obrazovku", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 2b8ed7626..783da7932 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderirani strežniki", "about.contact": "Stik:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Razlog", "about.domain_blocks.domain": "Domena", "about.domain_blocks.preamble": "Mastodon vam splošno omogoča ogled vsebin in interakcijo z uporabniki iz vseh drugih strežnikov v fediverzumu. To so izjeme, opravljene na tem strežniku.", @@ -39,7 +40,7 @@ "account.follows.empty": "Ta uporabnik še ne sledi nikomur.", "account.follows_you": "Vam sledi", "account.hide_reblogs": "Skrij izpostavitve od @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Pridružil/a", "account.languages": "Spremeni naročene jezike", "account.link_verified_on": "Lastništvo te povezave je bilo preverjeno {date}", "account.locked_info": "Stanje zasebnosti računa je nastavljeno na zaklenjeno. Lastnik ročno pregleda, kdo ga lahko spremlja.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Zapri", "bundle_modal_error.message": "Med nalaganjem te komponente je prišlo do napake.", "bundle_modal_error.retry": "Poskusi ponovno", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Ker je Mastodon decentraliziran, lahko ustvarite račun na drugem strežniku in ste še vedno v interakciji s tem.", + "closed_registrations_modal.description": "Odpiranje računa na {domain} trenutno ni možno, upoštevajte pa, da ne potrebujete računa prav na {domain}, da bi uporabljali Mastodon.", + "closed_registrations_modal.find_another_server": "Najdi drug strežnik", + "closed_registrations_modal.preamble": "Mastodon je decentraliziran, kar pomeni, da ni pomembno, kje ustvarite svoj račun; od koder koli je omogočeno sledenje in interakcija z vsemi s tega strežnika. Strežnik lahko gostite tudi sami!", + "closed_registrations_modal.title": "Registracija v Mastodon", "column.about": "O programu", "column.blocks": "Blokirani uporabniki", "column.bookmarks": "Zaznamki", @@ -258,15 +259,15 @@ "follow_request.authorize": "Overi", "follow_request.reject": "Zavrni", "follow_requests.unlocked_explanation": "Čeprav vaš račun ni zaklenjen, zaposleni pri {domain} menijo, da bi morda želeli pregledati zahteve za sledenje teh računov ročno.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Shranjeno", - "getting_started.directory": "Adresár", - "getting_started.documentation": "Dokumentacija", - "getting_started.free_software_notice": "Mastodon je brezplačno, odprtokodno programje. V {repository} si lahko ogledate izvorno kodo, prispevate svojo kodo in poročate o težavah.", "getting_started.heading": "Kako začeti", - "getting_started.invite": "Povabite osebe", - "getting_started.privacy_policy": "Pravilnik o zasebnosti", - "getting_started.security": "Varnost", - "getting_started.what_is_mastodon": "O programu Mastodon", "hashtag.column_header.tag_mode.all": "in {additional}", "hashtag.column_header.tag_mode.any": "ali {additional}", "hashtag.column_header.tag_mode.none": "brez {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Skrij obvestila tega uporabnika?", "mute_modal.indefinite": "Nedoločeno", "navigation_bar.about": "O programu", - "navigation_bar.apps": "Prenesite aplikacijo", "navigation_bar.blocks": "Blokirani uporabniki", "navigation_bar.bookmarks": "Zaznamki", "navigation_bar.community_timeline": "Lokalna časovnica", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Utišane besede", "navigation_bar.follow_requests": "Prošnje za sledenje", "navigation_bar.follows_and_followers": "Sledenja in sledilci", - "navigation_bar.info": "O programu", - "navigation_bar.keyboard_shortcuts": "Hitre tipke", "navigation_bar.lists": "Seznami", "navigation_bar.logout": "Odjava", "navigation_bar.mutes": "Utišani uporabniki", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Pripete objave", "navigation_bar.preferences": "Nastavitve", "navigation_bar.public_timeline": "Združena časovnica", - "navigation_bar.search": "Search", + "navigation_bar.search": "Iskanje", "navigation_bar.security": "Varnost", "not_signed_in_indicator.not_signed_in": "Za dostop do tega vira se morate prijaviti.", "notification.admin.report": "{name} je prijavil/a {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Kršitev pravila", "report_notification.open": "Odpri prijavo", "search.placeholder": "Iskanje", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Napredna oblika iskanja", "search_popout.tips.full_text": "Enostavno besedilo vrne objave, ki ste jih napisali, vzljubili, izpostavili ali ste bili v njih omenjeni, kot tudi ujemajoča se uporabniška imena, prikazna imena in ključnike.", "search_popout.tips.hashtag": "ključnik", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Nihče še ni izpostavil te objave. Ko se bo to zgodilo, se bodo pojavile tukaj.", "status.redraft": "Izbriši in preoblikuj", "status.remove_bookmark": "Odstrani zaznamek", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Odgovoril/a {name}", "status.reply": "Odgovori", "status.replyAll": "Odgovori na objavo", "status.report": "Prijavi @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "Prikaži več za vse", "status.show_original": "Pokaži izvirnik", "status.translate": "Prevedi", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Prevedeno iz {lang} s pomočjo {provider}", "status.uncached_media_warning": "Ni na voljo", "status.unmute_conversation": "Odtišaj pogovor", "status.unpin": "Odpni iz profila", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Priprava optične prepoznave znakov (OCR) ...", "upload_modal.preview_label": "Predogled ({ratio})", "upload_progress.label": "Pošiljanje...", + "upload_progress.processing": "Processing…", "video.close": "Zapri video", "video.download": "Prenesi datoteko", "video.exit_fullscreen": "Izhod iz celozaslonskega načina", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 3239d7cf4..f82b49b7f 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -1,6 +1,7 @@ { "about.blocks": "Shërbyes të moderuar", "about.contact": "Kontakt:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Arsye", "about.domain_blocks.domain": "Përkatësi", "about.domain_blocks.preamble": "Mastodon-i ju lë përgjithësisht të shihni lëndë prej përdoruesish dhe të ndërveproni me ta nga cilido shërbyes tjetër qofshin në fedivers. Ka përjashtime që janë bërë në këtë shërbyes të dhënë.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autorizoje", "follow_request.reject": "Hidhe tej", "follow_requests.unlocked_explanation": "Edhe pse llogaria juaj s’është e kyçur, ekipi i {domain} mendoi se mund të donit të shqyrtonit dorazi kërkesa ndjekjeje prej këtyre llogarive.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "U ruajt", - "getting_started.directory": "Drejtori", - "getting_started.documentation": "Dokumentim", - "getting_started.free_software_notice": "Mastodon-i është software i lirë dhe me burim të hapët. Te {repository} mund t’i shihni kodin burim, të jepni ndihmesë ose të njoftoni çështje.", "getting_started.heading": "Si t’ia fillohet", - "getting_started.invite": "Ftoni njerëz", - "getting_started.privacy_policy": "Rregulla Privatësie", - "getting_started.security": "Rregullime llogarie", - "getting_started.what_is_mastodon": "Mbi Mastodon-in", "hashtag.column_header.tag_mode.all": "dhe {additional}", "hashtag.column_header.tag_mode.any": "ose {additional}", "hashtag.column_header.tag_mode.none": "pa {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Të kalohen të fshehura njoftimet prej këtij përdoruesi?", "mute_modal.indefinite": "E pacaktuar", "navigation_bar.about": "Mbi", - "navigation_bar.apps": "Merreni aplikacionin", "navigation_bar.blocks": "Përdorues të bllokuar", "navigation_bar.bookmarks": "Faqerojtës", "navigation_bar.community_timeline": "Rrjedhë kohore vendore", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Fjalë të heshtuara", "navigation_bar.follow_requests": "Kërkesa për ndjekje", "navigation_bar.follows_and_followers": "Ndjekje dhe ndjekës", - "navigation_bar.info": "Mbi", - "navigation_bar.keyboard_shortcuts": "Taste përkatës", "navigation_bar.lists": "Lista", "navigation_bar.logout": "Dalje", "navigation_bar.mutes": "Përdorues të heshtuar", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Cenim rregullash", "report_notification.open": "Hape raportimin", "search.placeholder": "Kërkoni", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Format kërkimi të mëtejshëm", "search_popout.tips.full_text": "Kërkimi për tekst të thjeshtë përgjigjet me mesazhe që keni shkruar, parapëlqyer, përforcuar, ose ku jeni përmendur, si dhe emra përdoruesish, emra ekrani dhe hashtag-ë që kanë përputhje me termin e kërkimit.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Po përgatitet OCR-ja…", "upload_modal.preview_label": "Paraparje ({ratio})", "upload_progress.label": "Po ngarkohet…", + "upload_progress.processing": "Processing…", "video.close": "Mbylle videon", "video.download": "Shkarkoje kartelën", "video.exit_fullscreen": "Dil nga mënyra Sa Krejt Ekrani", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 843fbcb11..8df13a0f1 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Odobri", "follow_request.reject": "Odbij", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Da počnete", - "getting_started.invite": "Invite people", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Security", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Sakrij obaveštenja od ovog korisnika?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blokirani korisnici", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Lokalna lajna", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Zahtevi za praćenje", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Prečice na tastaturi", "navigation_bar.lists": "Liste", "navigation_bar.logout": "Odjava", "navigation_bar.mutes": "Ućutkani korisnici", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Pretraga", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Napredni format pretrage", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hešteg", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Otpremam...", + "upload_progress.processing": "Processing…", "video.close": "Zatvori video", "video.download": "Download file", "video.exit_fullscreen": "Napusti ceo ekran", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 4c775626a..4b80f1521 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Одобри", "follow_request.reject": "Одбиј", "follow_requests.unlocked_explanation": "Иако ваш налог није закључан, особље {domain} је помислило да бисте можда желели ручно да прегледате захтеве за праћење са ових налога.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Сачувано", - "getting_started.directory": "Directory", - "getting_started.documentation": "Документација", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Да почнете", - "getting_started.invite": "Позовите људе", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Безбедност", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "и {additional}", "hashtag.column_header.tag_mode.any": "или {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Сакриј обавештења од овог корисника?", "mute_modal.indefinite": "Неодређен", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Блокирани корисници", "navigation_bar.bookmarks": "Маркери", "navigation_bar.community_timeline": "Локална временска линија", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Пригушене речи", "navigation_bar.follow_requests": "Захтеви за праћење", "navigation_bar.follows_and_followers": "Праћења и пратиоци", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Пречице на тастатури", "navigation_bar.lists": "Листе", "navigation_bar.logout": "Одјава", "navigation_bar.mutes": "Ућуткани корисници", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Претрага", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Напредни формат претраге", "search_popout.tips.full_text": "Једноставан текст враћа статусе које сте написали, фаворизовали, подржали или били поменути, као и подударање корисничких имена, приказаних имена, и тараба.", "search_popout.tips.hashtag": "хештег", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Преглед ({ratio})", "upload_progress.label": "Отпремам...", + "upload_progress.processing": "Processing…", "video.close": "Затвори видео", "video.download": "Преузимање датотеке", "video.exit_fullscreen": "Напусти цео екран", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 48c2a48ad..91a4a0796 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -1,17 +1,18 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.blocks": "Modererade servrar", + "about.contact": "Kontakt:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.domain_blocks.comment": "Skäl", + "about.domain_blocks.domain": "Domän", + "about.domain_blocks.preamble": "Mastodon låter dig i allmänhet visa innehåll från och interagera med användare från någon annan server i fediverse. Dessa är de undantag som har gjorts på just denna server.", + "about.domain_blocks.severity": "Allvarlighetsgrad", + "about.domain_blocks.silenced.explanation": "Du kommer i allmänhet inte att se profiler och innehåll från denna server, om du inte uttryckligen slå upp eller välja in det genom att följa.", + "about.domain_blocks.silenced.title": "Begränsat", + "about.domain_blocks.suspended.explanation": "Ingen data från denna server kommer bearbetas, lagras eller bytas ut vilket omöjliggör kommunikation med användare från denna serverdator.", "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.not_available": "Denna information har inte gjorts tillgänglig på denna server.", + "about.powered_by": "Decentraliserade sociala medier drivna av {mastodon}", + "about.rules": "Serverregler", "account.account_note_header": "Anteckning", "account.add_or_remove_from_list": "Lägg till i eller ta bort från listor", "account.badges.bot": "Robot", @@ -27,8 +28,8 @@ "account.edit_profile": "Redigera profil", "account.enable_notifications": "Meddela mig när @{name} tutar", "account.endorse": "Visa på profil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.last_status_at": "Senaste inlägg den {date}", + "account.featured_tags.last_status_never": "Inga inlägg", "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Följ", "account.followers": "Följare", @@ -40,7 +41,7 @@ "account.follows_you": "Följer dig", "account.hide_reblogs": "Dölj knuffar från @{name}", "account.joined_short": "Joined", - "account.languages": "Change subscribed languages", + "account.languages": "Ändra prenumererade språk", "account.link_verified_on": "Ägarskap för detta konto kontrollerades den {date}", "account.locked_info": "Detta konto har låst integritetsstatus. Ägaren väljer manuellt vem som kan följa.", "account.media": "Media", @@ -258,15 +259,15 @@ "follow_request.authorize": "Godkänn", "follow_request.reject": "Avvisa", "follow_requests.unlocked_explanation": "Även om ditt konto inte är låst tror {domain} personalen att du kanske vill granska dessa följares förfrågningar manuellt.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Sparad", - "getting_started.directory": "Directory", - "getting_started.documentation": "Dokumentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Kom igång", - "getting_started.invite": "Skicka inbjudningar", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Kontoinställningar", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "och {additional}", "hashtag.column_header.tag_mode.any": "eller {additional}", "hashtag.column_header.tag_mode.none": "utan {additional}", @@ -291,7 +292,7 @@ "interaction_modal.on_this_server": "On this server", "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.favourite": "Favorisera {name}'s inlägg", "interaction_modal.title.follow": "Follow {name}", "interaction_modal.title.reblog": "Boost {name}'s post", "interaction_modal.title.reply": "Reply to {name}'s post", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Dölj aviseringar från denna användare?", "mute_modal.indefinite": "Obestämt", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blockerade användare", "navigation_bar.bookmarks": "Bokmärken", "navigation_bar.community_timeline": "Lokal tidslinje", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Tystade ord", "navigation_bar.follow_requests": "Följförfrågningar", "navigation_bar.follows_and_followers": "Följer och följare", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Kortkommandon", "navigation_bar.lists": "Listor", "navigation_bar.logout": "Logga ut", "navigation_bar.mutes": "Tystade användare", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Sök", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Avancerat sökformat", "search_popout.tips.full_text": "Enkel text returnerar statusar där du har skrivit, favoriserat, knuffat eller nämnts samt med matchande användarnamn, visningsnamn och hashtags.", "search_popout.tips.hashtag": "hash-tagg", @@ -531,12 +530,12 @@ "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", "server_banner.active_users": "active users", "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", - "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "server_banner.introduction": "{domain} är en del av det decentraliserade sociala nätverket som drivs av {mastodon}.", + "server_banner.learn_more": "Lär dig mer", + "server_banner.server_stats": "Serverstatistik:", + "sign_in_banner.create_account": "Skapa konto", + "sign_in_banner.sign_in": "Logga in", + "sign_in_banner.text": "Logga in för att följa profiler eller hashtaggar, favorisera, dela och svara på inlägg eller interagera från ditt konto på en annan server.", "status.admin_account": "Öppet modereringsgränssnitt för @{name}", "status.admin_status": "Öppna denna status i modereringsgränssnittet", "status.block": "Blockera @{name}", @@ -552,7 +551,7 @@ "status.edited_x_times": "Redigerad {count, plural, one {{count} gång} other {{count} gånger}}", "status.embed": "Bädda in", "status.favourite": "Favorit", - "status.filter": "Filter this post", + "status.filter": "Filtrera detta inlägg", "status.filtered": "Filtrerat", "status.hide": "Hide toot", "status.history.created": "{name} skapade {date}", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Förbereder OCR…", "upload_modal.preview_label": "Förhandstitt ({ratio})", "upload_progress.label": "Laddar upp...", + "upload_progress.processing": "Processing…", "video.close": "Stäng video", "video.download": "Ladda ner fil", "video.exit_fullscreen": "Stäng helskärm", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index cc0fa7069..dbc568598 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", - "getting_started.invite": "Invite people", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Security", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", "navigation_bar.mutes": "Muted users", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Search", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 8155200bb..bbfd1da79 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "அனுமதியளி", "follow_request.reject": "நிராகரி", "follow_requests.unlocked_explanation": "உங்கள் கணக்கு பூட்டப்படவில்லை என்றாலும், இந்தக் கணக்குகளிலிருந்து உங்களைப் பின்தொடர விரும்பும் கோரிக்கைகளை நீங்கள் பரீசீலிப்பது நலம் என்று {domain} ஊழியர் எண்ணுகிறார்.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "சேமிக்கப்பட்டது", - "getting_started.directory": "Directory", - "getting_started.documentation": "ஆவணங்கள்", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "முதன்மைப் பக்கம்", - "getting_started.invite": "நண்பர்களை அழைக்க", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "கணக்கு அமைப்புகள்", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "மற்றும் {additional}", "hashtag.column_header.tag_mode.any": "அல்லது {additional}", "hashtag.column_header.tag_mode.none": "{additional} தவிர்த்து", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "இந்த பயனரின் அறிவிப்புகளை மறைக்கவா?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "தடுக்கப்பட்ட பயனர்கள்", "navigation_bar.bookmarks": "அடையாளக்குறிகள்", "navigation_bar.community_timeline": "உள்ளூர் காலக்கெடு", @@ -375,8 +375,6 @@ "navigation_bar.filters": "முடக்கப்பட்ட வார்த்தைகள்", "navigation_bar.follow_requests": "கோரிக்கைகளை பின்பற்றவும்", "navigation_bar.follows_and_followers": "பின்பற்றல்கள் மற்றும் பின்பற்றுபவர்கள்", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "சுருக்குவிசைகள்", "navigation_bar.lists": "குதிரை வீர்ர்கள்", "navigation_bar.logout": "விடு பதிகை", "navigation_bar.mutes": "முடக்கப்பட்ட பயனர்கள்", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "தேடு", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "மேம்பட்ட தேடல் வடிவம்", "search_popout.tips.full_text": "எளிமையான உரை நீங்கள் எழுதப்பட்ட, புகழ், அதிகரித்தது, அல்லது குறிப்பிட்டுள்ள, அதே போல் பயனர் பெயர்கள், காட்சி பெயர்கள், மற்றும் ஹேஸ்டேகைகளை கொண்டுள்ளது என்று நிலைகளை கொடுக்கிறது.", "search_popout.tips.hashtag": "ஹேஸ்டேக்", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "முன்னோட்டம் ({ratio})", "upload_progress.label": "ஏற்றுகிறது ...", + "upload_progress.processing": "Processing…", "video.close": "வீடியோவை மூடு", "video.download": "கோப்பைப் பதிவிறக்கவும்", "video.exit_fullscreen": "முழு திரையில் இருந்து வெளியேறவும்", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 99d998ef6..91a529b9d 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", - "getting_started.invite": "Invite people", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Security", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", "navigation_bar.mutes": "Muted users", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Search", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index 1815d4e3e..e038482cd 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "అనుమతించు", "follow_request.reject": "తిరస్కరించు", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "డాక్యుమెంటేషన్", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "మొదలుపెడదాం", - "getting_started.invite": "వ్యక్తులను ఆహ్వానించండి", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "భద్రత", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "మరియు {additional}", "hashtag.column_header.tag_mode.any": "లేదా {additional}", "hashtag.column_header.tag_mode.none": "{additional} లేకుండా", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "ఈ వినియోగదారు నుండి నోటిఫికేషన్లను దాచాలా?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "బ్లాక్ చేయబడిన వినియోగదారులు", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "స్థానిక కాలక్రమం", @@ -375,8 +375,6 @@ "navigation_bar.filters": "మ్యూట్ చేయబడిన పదాలు", "navigation_bar.follow_requests": "అనుసరించడానికి అభ్యర్ధనలు", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "హాట్ కీలు", "navigation_bar.lists": "జాబితాలు", "navigation_bar.logout": "లాగ్ అవుట్ చేయండి", "navigation_bar.mutes": "మ్యూట్ చేయబడిన వినియోగదారులు", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "శోధన", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "అధునాతన శోధన ఆకృతి", "search_popout.tips.full_text": "సాధారణ వచనం మీరు వ్రాసిన, ఇష్టపడే, పెంచబడిన లేదా పేర్కొనబడిన, అలాగే యూజర్పేర్లు, ప్రదర్శన పేర్లు, మరియు హ్యాష్ట్యాగ్లను నమోదు చేసిన హోదాలను అందిస్తుంది.", "search_popout.tips.hashtag": "హాష్ ట్యాగ్", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "అప్లోడ్ అవుతోంది...", + "upload_progress.processing": "Processing…", "video.close": "వీడియోని మూసివేయి", "video.download": "Download file", "video.exit_fullscreen": "పూర్తి స్క్రీన్ నుండి నిష్క్రమించు", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 66f58d6ed..174d74d20 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -1,6 +1,7 @@ { "about.blocks": "เซิร์ฟเวอร์ที่มีการควบคุม", "about.contact": "ติดต่อ:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "เหตุผล", "about.domain_blocks.domain": "โดเมน", "about.domain_blocks.preamble": "โดยทั่วไป Mastodon อนุญาตให้คุณดูเนื้อหาจากและโต้ตอบกับผู้ใช้จากเซิร์ฟเวอร์อื่นใดในจักรวาลสหพันธ์ นี่คือข้อยกเว้นที่ทำขึ้นในเซิร์ฟเวอร์นี้โดยเฉพาะ", @@ -258,15 +259,15 @@ "follow_request.authorize": "อนุญาต", "follow_request.reject": "ปฏิเสธ", "follow_requests.unlocked_explanation": "แม้ว่าไม่มีการล็อคบัญชีของคุณ พนักงานของ {domain} คิดว่าคุณอาจต้องการตรวจทานคำขอติดตามจากบัญชีเหล่านี้ด้วยตนเอง", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "บันทึกแล้ว", - "getting_started.directory": "ไดเรกทอรี", - "getting_started.documentation": "เอกสารประกอบ", - "getting_started.free_software_notice": "Mastodon เป็นซอฟต์แวร์เสรีและโอเพนซอร์ส คุณสามารถดูโค้ดต้นฉบับ มีส่วนร่วม หรือรายงานปัญหาได้ที่ {repository}", "getting_started.heading": "เริ่มต้นใช้งาน", - "getting_started.invite": "เชิญผู้คน", - "getting_started.privacy_policy": "นโยบายความเป็นส่วนตัว", - "getting_started.security": "การตั้งค่าบัญชี", - "getting_started.what_is_mastodon": "เกี่ยวกับ Mastodon", "hashtag.column_header.tag_mode.all": "และ {additional}", "hashtag.column_header.tag_mode.any": "หรือ {additional}", "hashtag.column_header.tag_mode.none": "โดยไม่มี {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "ซ่อนการแจ้งเตือนจากผู้ใช้นี้?", "mute_modal.indefinite": "ไม่มีกำหนด", "navigation_bar.about": "เกี่ยวกับ", - "navigation_bar.apps": "รับแอป", "navigation_bar.blocks": "ผู้ใช้ที่ปิดกั้นอยู่", "navigation_bar.bookmarks": "ที่คั่นหน้า", "navigation_bar.community_timeline": "เส้นเวลาในเซิร์ฟเวอร์", @@ -375,8 +375,6 @@ "navigation_bar.filters": "คำที่ซ่อนอยู่", "navigation_bar.follow_requests": "คำขอติดตาม", "navigation_bar.follows_and_followers": "การติดตามและผู้ติดตาม", - "navigation_bar.info": "เกี่ยวกับ", - "navigation_bar.keyboard_shortcuts": "ปุ่มลัด", "navigation_bar.lists": "รายการ", "navigation_bar.logout": "ออกจากระบบ", "navigation_bar.mutes": "ผู้ใช้ที่ซ่อนอยู่", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "การละเมิดกฎ", "report_notification.open": "รายงานที่เปิด", "search.placeholder": "ค้นหา", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "รูปแบบการค้นหาขั้นสูง", "search_popout.tips.full_text": "ข้อความแบบง่ายส่งคืนโพสต์ที่คุณได้เขียน ชื่นชอบ ดัน หรือได้รับการกล่าวถึง ตลอดจนชื่อผู้ใช้, ชื่อที่แสดง และแฮชแท็กที่ตรงกัน", "search_popout.tips.hashtag": "แฮชแท็ก", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "กำลังเตรียม OCR…", "upload_modal.preview_label": "ตัวอย่าง ({ratio})", "upload_progress.label": "กำลังอัปโหลด...", + "upload_progress.processing": "Processing…", "video.close": "ปิดวิดีโอ", "video.download": "ดาวน์โหลดไฟล์", "video.exit_fullscreen": "ออกจากเต็มหน้าจอ", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 4c1e7c066..934a4f6d0 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -1,6 +1,7 @@ { "about.blocks": "Denetlenen sunucular", "about.contact": "İletişim:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Gerekçe", "about.domain_blocks.domain": "Alan adı", "about.domain_blocks.preamble": "Mastodon, genel olarak fediverse'teki herhangi bir sunucudan içerik görüntülemenize ve kullanıcılarıyla etkileşim kurmanıza izin verir. Bunlar, bu sunucuda yapılmış olan istisnalardır.", @@ -39,7 +40,7 @@ "account.follows.empty": "Bu kullanıcı henüz hiçkimseyi takip etmiyor.", "account.follows_you": "Seni takip ediyor", "account.hide_reblogs": "@{name} kişisinin boostlarını gizle", - "account.joined_short": "Joined", + "account.joined_short": "Katıldı", "account.languages": "Abone olunan dilleri değiştir", "account.link_verified_on": "Bu bağlantının sahipliği {date} tarihinde kontrol edildi", "account.locked_info": "Bu hesabın gizlilik durumu gizli olarak ayarlanmış. Sahibi, onu kimin takip edebileceğini manuel olarak onaylıyor.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Kapat", "bundle_modal_error.message": "Bu bileşen yüklenirken bir şeyler ters gitti.", "bundle_modal_error.retry": "Tekrar deneyin", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Mastodon ademi merkeziyetçi olduğu için, başka bir sunucuda hesap oluşturabilir ve bu sunuyla etkileşebilirsiniz.", + "closed_registrations_modal.description": "{domain} adresinde hesap oluşturmak şu an mümkün değil ancak unutmayın ki Mastodon kullanmak için özellikle {domain} adresinde hesap oluşturmanız gerekmez.", + "closed_registrations_modal.find_another_server": "Başka sunucu bul", + "closed_registrations_modal.preamble": "Mastodon ademi merkeziyetçi, bu yüzden hesabınızı nerede oluşturursanız oluşturun, bu sunucudaki herhangi birini takip edebilecek veya onunla etkileşebileceksiniz. Kendiniz bile sunabilirsiniz!", + "closed_registrations_modal.title": "Mastodon'a kayıt olmak", "column.about": "Hakkında", "column.blocks": "Engellenen kullanıcılar", "column.bookmarks": "Yer İmleri", @@ -258,15 +259,15 @@ "follow_request.authorize": "İzin Ver", "follow_request.reject": "Reddet", "follow_requests.unlocked_explanation": "Hesabınız kilitli olmasa bile, {domain} personeli bu hesaplardan gelen takip isteklerini gözden geçirmek isteyebileceğinizi düşündü.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Kaydedildi", - "getting_started.directory": "Dizin", - "getting_started.documentation": "Belgeler", - "getting_started.free_software_notice": "Mastodon özgür ve açık kaynak bir yazılımdır. {repository} deposunda kaynak kodunu görebilir, katkı verebilir veya sorunları bildirebilirsiniz.", "getting_started.heading": "Başlarken", - "getting_started.invite": "İnsanları davet et", - "getting_started.privacy_policy": "Gizlilik Politikası", - "getting_started.security": "Hesap ayarları", - "getting_started.what_is_mastodon": "Mastodon Hakkında", "hashtag.column_header.tag_mode.all": "ve {additional}", "hashtag.column_header.tag_mode.any": "ya da {additional}", "hashtag.column_header.tag_mode.none": "{additional} olmadan", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Bu kullanıcıdan bildirimler gizlensin mı?", "mute_modal.indefinite": "Belirsiz", "navigation_bar.about": "Hakkında", - "navigation_bar.apps": "Uygulamayı indir", "navigation_bar.blocks": "Engellenen kullanıcılar", "navigation_bar.bookmarks": "Yer İmleri", "navigation_bar.community_timeline": "Yerel Zaman Tüneli", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Sessize alınmış kelimeler", "navigation_bar.follow_requests": "Takip istekleri", "navigation_bar.follows_and_followers": "Takip edilenler ve takipçiler", - "navigation_bar.info": "Hakkında", - "navigation_bar.keyboard_shortcuts": "Klavye kısayolları", "navigation_bar.lists": "Listeler", "navigation_bar.logout": "Oturumu kapat", "navigation_bar.mutes": "Sessize alınmış kullanıcılar", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Sabitlenmiş gönderiler", "navigation_bar.preferences": "Tercihler", "navigation_bar.public_timeline": "Federe zaman tüneli", - "navigation_bar.search": "Search", + "navigation_bar.search": "Arama", "navigation_bar.security": "Güvenlik", "not_signed_in_indicator.not_signed_in": "Bu kaynağa erişmek için oturum açmanız gerekir.", "notification.admin.report": "{name}, {target} kişisini bildirdi", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Kural ihlali", "report_notification.open": "Bildirim aç", "search.placeholder": "Ara", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Gelişmiş arama biçimi", "search_popout.tips.full_text": "Basit metin yazdığınız, beğendiğiniz, teşvik ettiğiniz veya söz edilen gönderilerin yanı sıra kullanıcı adlarını, görünen adları ve etiketleri eşleşen gönderileri de döndürür.", "search_popout.tips.hashtag": "etiket", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Henüz kimse bu gönderiyi teşvik etmedi. Biri yaptığında burada görünecek.", "status.redraft": "Sil ve yeniden taslak yap", "status.remove_bookmark": "Yer imini kaldır", - "status.replied_to": "Replied to {name}", + "status.replied_to": "{name} kullanıcısına yanıt verildi", "status.reply": "Yanıtla", "status.replyAll": "Konuyu yanıtla", "status.report": "@{name} adlı kişiyi bildir", @@ -586,7 +585,7 @@ "status.show_more_all": "Hepsi için daha fazla göster", "status.show_original": "Orijinali göster", "status.translate": "Çevir", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "{provider} kullanılarak {lang} dilinden çevrildi", "status.uncached_media_warning": "Mevcut değil", "status.unmute_conversation": "Sohbet sesini aç", "status.unpin": "Profilden sabitlemeyi kaldır", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "OCR hazırlanıyor…", "upload_modal.preview_label": "Ön izleme ({ratio})", "upload_progress.label": "Yükleniyor...", + "upload_progress.processing": "Processing…", "video.close": "Videoyu kapat", "video.download": "Dosyayı indir", "video.exit_fullscreen": "Tam ekrandan çık", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index eba18f8fc..0144053df 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Сакланды", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", - "getting_started.invite": "Invite people", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Security", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Кыстыргычлар", "navigation_bar.community_timeline": "Local timeline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", "navigation_bar.mutes": "Muted users", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Эзләү", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Видеоны ябу", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index cc0fa7069..dbc568598 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", - "getting_started.invite": "Invite people", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Security", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", "navigation_bar.mutes": "Muted users", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Search", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 995d2afcc..c2db2045b 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -1,6 +1,7 @@ { "about.blocks": "Модеровані сервери", "about.contact": "Kонтакти:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Причина", "about.domain_blocks.domain": "Домен", "about.domain_blocks.preamble": "Mastodon зазвичай дозволяє вам взаємодіяти з користувачами будь-яких серверів у Федіверсі та переглядати їх вміст. Ось винятки, які було зроблено на цьому конкретному сервері.", @@ -39,8 +40,8 @@ "account.follows.empty": "Цей користувач ще ні на кого не підписався.", "account.follows_you": "Підписані на вас", "account.hide_reblogs": "Сховати поширення від @{name}", - "account.joined_short": "Joined", - "account.languages": "Змінити підписані мови", + "account.joined_short": "Приєднався", + "account.languages": "Змінити обрані мови", "account.link_verified_on": "Права власності на це посилання були перевірені {date}", "account.locked_info": "Це закритий обліковий запис. Власник вручну обирає, хто може на нього підписуватися.", "account.media": "Медіа", @@ -49,13 +50,13 @@ "account.mute": "Приховати @{name}", "account.mute_notifications": "Не показувати сповіщення від @{name}", "account.muted": "Нехтується", - "account.posts": "Дмухи", - "account.posts_with_replies": "Дмухи й відповіді", + "account.posts": "Дописи", + "account.posts_with_replies": "Дописи й відповіді", "account.report": "Поскаржитися на @{name}", - "account.requested": "Очікує підтвердження. Натисніть щоб відмінити запит", + "account.requested": "Очікує підтвердження. Натисніть, щоб скасувати запит на підписку", "account.share": "Поділитися профілем @{name}", - "account.show_reblogs": "Показати передмухи від @{name}", - "account.statuses_counter": "{count, plural, one {{counter} Пост} few {{counter} Пости} many {{counter} Постів} other {{counter} Пости}}", + "account.show_reblogs": "Показати поширення від @{name}", + "account.statuses_counter": "{count, plural, one {{counter} допис} few {{counter} дописи} many {{counter} дописів} other {{counter} дописи}}", "account.unblock": "Розблокувати @{name}", "account.unblock_domain": "Розблокувати {domain}", "account.unblock_short": "Розблокувати", @@ -64,7 +65,7 @@ "account.unmute": "Не нехтувати @{name}", "account.unmute_notifications": "Показувати сповіщення від @{name}", "account.unmute_short": "Не нехтувати", - "account_note.placeholder": "Коментарі відсутні", + "account_note.placeholder": "Натисніть, щоб додати примітку", "admin.dashboard.daily_retention": "Щоденний показник утримання користувачів після реєстрації", "admin.dashboard.monthly_retention": "Щомісячний показник утримання користувачів після реєстрації", "admin.dashboard.retention.average": "Середнє", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Закрити", "bundle_modal_error.message": "Щось пішло не так під час завантаження цього компоненту.", "bundle_modal_error.retry": "Спробувати ще раз", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Оскільки Mastodon децентралізований, ви можете створити обліковий запис на іншому сервері й досі взаємодіяти з ним.", + "closed_registrations_modal.description": "Створення облікового запису на {domain} наразі неможливе, але майте на увазі, що вам не потрібен обліковий запис саме на {domain}, щоб використовувати Mastodon.", + "closed_registrations_modal.find_another_server": "Знайти інший сервер", + "closed_registrations_modal.preamble": "Mastodon децентралізований, тож незалежно від того, де ви створюєте свій обліковий запис, ви зможете слідкувати та взаємодіяти з будь-ким на цьому сервері. Ви навіть можете розмістити його самостійно!", + "closed_registrations_modal.title": "Реєстрація на Mastodon", "column.about": "Про застосунок", "column.blocks": "Заблоковані користувачі", "column.bookmarks": "Закладки", @@ -142,8 +143,8 @@ "compose_form.sensitive.hide": "{count, plural, one {Позначити медіа делікатним} other {Позначити медіа делікатними}}", "compose_form.sensitive.marked": "{count, plural, one {Медіа позначене делікатним} other {Медіа позначені делікатними}}", "compose_form.sensitive.unmarked": "{count, plural, one {Медіа не позначене делікатним} other {Медіа не позначені делікатними}}", - "compose_form.spoiler.marked": "Текст приховано під попередженням", - "compose_form.spoiler.unmarked": "Текст видимий", + "compose_form.spoiler.marked": "Прибрати попередження про вміст", + "compose_form.spoiler.unmarked": "Додати попередження про вміст", "compose_form.spoiler_placeholder": "Напишіть своє попередження тут", "confirmation_modal.cancel": "Відмінити", "confirmations.block.block_and_report": "Заблокувати та поскаржитися", @@ -195,7 +196,7 @@ "emoji_button.food": "Їжа та напої", "emoji_button.label": "Вставити емоджі", "emoji_button.nature": "Природа", - "emoji_button.not_found": "Немає емоджі!! (╯°□°)╯︵ ┻━┻", + "emoji_button.not_found": "Відповідних емоджі не знайдено", "emoji_button.objects": "Предмети", "emoji_button.people": "Люди", "emoji_button.recent": "Часто використовувані", @@ -257,16 +258,16 @@ "follow_recommendations.lead": "Дописи від людей, за якими ви стежите, з'являться в хронологічному порядку у вашій домашній стрічці. Не бійся помилятися, ви можете відписатися від людей так само легко в будь-який час!", "follow_request.authorize": "Авторизувати", "follow_request.reject": "Відмовити", - "follow_requests.unlocked_explanation": "Хоча ваш обліковий запис не заблоковано, працівники {domain} припускають, що, можливо, ви хотіли б переглянути ці запити на підписку.", + "follow_requests.unlocked_explanation": "Хоча ваш обліковий запис не заблоковано, персонал {domain} припускає, що, можливо, ви хотіли б переглянути ці запити на підписку.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Збережено", - "getting_started.directory": "Каталог", - "getting_started.documentation": "Документація", - "getting_started.free_software_notice": "Mastodon — це вільне програмне забезпечення з відкритим кодом. Ви можете переглянути код, внести зміни або повідомити про помилки на {repository}.", "getting_started.heading": "Розпочати", - "getting_started.invite": "Запросити людей", - "getting_started.privacy_policy": "Політика конфіденційності", - "getting_started.security": "Налаштування облікового запису", - "getting_started.what_is_mastodon": "Про Mastodon", "hashtag.column_header.tag_mode.all": "та {additional}", "hashtag.column_header.tag_mode.any": "або {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", @@ -323,15 +324,15 @@ "keyboard_shortcuts.pinned": "Відкрити список закріплених дописів", "keyboard_shortcuts.profile": "Відкрити профіль автора", "keyboard_shortcuts.reply": "Відповісти", - "keyboard_shortcuts.requests": "відкрити список бажаючих підписатися", - "keyboard_shortcuts.search": "сфокусуватися на пошуку", - "keyboard_shortcuts.spoilers": "показати/приховати поле CW", - "keyboard_shortcuts.start": "відкрити колонку \"Початок\"", - "keyboard_shortcuts.toggle_hidden": "показати/приховати текст під попередженням", - "keyboard_shortcuts.toggle_sensitivity": "показати/приховати медіа", - "keyboard_shortcuts.toot": "почати писати новий дмух", - "keyboard_shortcuts.unfocus": "розфокусуватися з нового допису чи пошуку", - "keyboard_shortcuts.up": "рухатися вверх списком", + "keyboard_shortcuts.requests": "Відкрити список охочих підписатися", + "keyboard_shortcuts.search": "Сфокусуватися на пошуку", + "keyboard_shortcuts.spoilers": "Показати/приховати поле попередження про вміст", + "keyboard_shortcuts.start": "Відкрити колонку \"Розпочати\"", + "keyboard_shortcuts.toggle_hidden": "Показати/приховати текст під попередженням про вміст", + "keyboard_shortcuts.toggle_sensitivity": "Показати/приховати медіа", + "keyboard_shortcuts.toot": "Створити новий допис", + "keyboard_shortcuts.unfocus": "Розфокусуватися з нового допису чи пошуку", + "keyboard_shortcuts.up": "Рухатися вгору списком", "lightbox.close": "Закрити", "lightbox.compress": "Стиснути поле перегляду зображень", "lightbox.expand": "Розгорнути поле перегляду зображень", @@ -340,7 +341,7 @@ "limited_account_hint.action": "Усе одно показати профіль", "limited_account_hint.title": "Цей профіль прихований модераторами вашого сервера.", "lists.account.add": "Додати до списку", - "lists.account.remove": "Видалити зі списку", + "lists.account.remove": "Вилучити зі списку", "lists.delete": "Видалити список", "lists.edit": "Редагувати список", "lists.edit.submit": "Змінити назву", @@ -354,14 +355,13 @@ "lists.subheading": "Ваші списки", "load_pending": "{count, plural, one {# новий елемент} other {# нових елементів}}", "loading_indicator.label": "Завантаження...", - "media_gallery.toggle_visible": "Показати/приховати", + "media_gallery.toggle_visible": "{number, plural, one {Приховати зображення} other {Приховати зображення}}", "missing_indicator.label": "Не знайдено", - "missing_indicator.sublabel": "Ресурс не знайдений", + "missing_indicator.sublabel": "Ресурс не знайдено", "mute_modal.duration": "Тривалість", "mute_modal.hide_notifications": "Сховати сповіщення від користувача?", "mute_modal.indefinite": "Не визначено", - "navigation_bar.about": "Про програму", - "navigation_bar.apps": "Завантажити застосунок", + "navigation_bar.about": "Про застосунок", "navigation_bar.blocks": "Заблоковані користувачі", "navigation_bar.bookmarks": "Закладки", "navigation_bar.community_timeline": "Локальна стрічка", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Приховані слова", "navigation_bar.follow_requests": "Запити на підписку", "navigation_bar.follows_and_followers": "Підписки та підписники", - "navigation_bar.info": "Про застосунок", - "navigation_bar.keyboard_shortcuts": "Гарячі клавіші", "navigation_bar.lists": "Списки", "navigation_bar.logout": "Вийти", "navigation_bar.mutes": "Нехтувані користувачі", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Закріплені дописи", "navigation_bar.preferences": "Налаштування", "navigation_bar.public_timeline": "Глобальна стрічка", - "navigation_bar.search": "Search", + "navigation_bar.search": "Пошук", "navigation_bar.security": "Безпека", "not_signed_in_indicator.not_signed_in": "Для доступу до цього ресурсу вам потрібно увійти.", "notification.admin.report": "Скарга від {name} на {target}", @@ -394,7 +392,7 @@ "notification.follow_request": "{name} відправили запит на підписку", "notification.mention": "{name} згадали вас", "notification.own_poll": "Ваше опитування завершено", - "notification.poll": "Опитування, у якому ви голосували, закінчилося", + "notification.poll": "Опитування, у якому ви голосували, скінчилося", "notification.reblog": "{name} поширили ваш допис", "notification.status": "{name} щойно дописує", "notification.update": "{name} змінює допис", @@ -412,16 +410,16 @@ "notifications.column_settings.mention": "Згадки:", "notifications.column_settings.poll": "Результати опитування:", "notifications.column_settings.push": "Push-сповіщення", - "notifications.column_settings.reblog": "Передмухи:", - "notifications.column_settings.show": "Показати в колонці", + "notifications.column_settings.reblog": "Поширення:", + "notifications.column_settings.show": "Показати в стовпчику", "notifications.column_settings.sound": "Відтворювати звуки", "notifications.column_settings.status": "Нові дмухи:", "notifications.column_settings.unread_notifications.category": "Непрочитані сповіщення", "notifications.column_settings.unread_notifications.highlight": "Виділити непрочитані сповіщення", "notifications.column_settings.update": "Зміни:", "notifications.filter.all": "Усі", - "notifications.filter.boosts": "Передмухи", - "notifications.filter.favourites": "Улюблені", + "notifications.filter.boosts": "Поширення", + "notifications.filter.favourites": "Вподобані", "notifications.filter.follows": "Підписки", "notifications.filter.mentions": "Згадки", "notifications.filter.polls": "Результати опитування", @@ -438,7 +436,7 @@ "picture_in_picture.restore": "Повернути назад", "poll.closed": "Закрито", "poll.refresh": "Оновити", - "poll.total_people": "{count, plural, one {# особа} other {# осіб}}", + "poll.total_people": "{count, plural, one {особа} few {особи} many {осіб} other {особи}}", "poll.total_votes": "{count, plural, one {# голос} few {# голоси} many {# голосів} other {# голосів}}", "poll.vote": "Проголосувати", "poll.voted": "Ви проголосували за цю відповідь", @@ -514,10 +512,11 @@ "report_notification.categories.violation": "Порушення правил", "report_notification.open": "Відкрити скаргу", "search.placeholder": "Пошук", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Розширений формат пошуку", - "search_popout.tips.full_text": "Пошук за текстом знаходить статуси, які ви написали, вподобали, передмухнули, або в яких вас згадували. Також він знаходить імена користувачів, реальні імена та хештеґи.", + "search_popout.tips.full_text": "Пошук за текстом знаходить дописи, які ви написали, вподобали, поширили, або в яких вас згадували. Також він знаходить імена користувачів, реальні імена та гештеґи.", "search_popout.tips.hashtag": "хештеґ", - "search_popout.tips.status": "статус", + "search_popout.tips.status": "допис", "search_popout.tips.text": "Пошук за текстом знаходить імена користувачів, реальні імена та хештеґи", "search_popout.tips.user": "користувач", "search_results.accounts": "Люди", @@ -538,12 +537,12 @@ "sign_in_banner.sign_in": "Увійти", "sign_in_banner.text": "Увійдіть, щоб слідкувати за профілями або хештеґами, вподобаними, ділитися і відповідати на повідомлення або взаємодіяти з вашого облікового запису на іншому сервері.", "status.admin_account": "Відкрити інтерфейс модерації для @{name}", - "status.admin_status": "Відкрити цей статус в інтерфейсі модерації", + "status.admin_status": "Відкрити цей допис в інтерфейсі модерації", "status.block": "Заблокувати @{name}", "status.bookmark": "Додати в закладки", "status.cancel_reblog_private": "Відмінити передмухання", "status.cannot_reblog": "Цей допис не може бути передмухнутий", - "status.copy": "Копіювати посилання до статусу", + "status.copy": "Копіювати посилання до допису", "status.delete": "Видалити", "status.detailed_status": "Детальний вигляд бесіди", "status.direct": "Пряме повідомлення до @{name}", @@ -565,15 +564,15 @@ "status.mute_conversation": "Ігнорувати діалог", "status.open": "Розгорнути допис", "status.pin": "Закріпити у профілі", - "status.pinned": "Закріплений дмух", + "status.pinned": "Закріплений допис", "status.read_more": "Дізнатися більше", - "status.reblog": "Передмухнути", - "status.reblog_private": "Передмухнути для початкової аудиторії", - "status.reblogged_by": "{name} передмухнув(-ла)", - "status.reblogs.empty": "Ніхто ще не передмухнув цього дмуху. Коли якісь користувачі це зроблять, вони будуть відображені тут.", - "status.redraft": "Видалити та перестворити", + "status.reblog": "Поширити", + "status.reblog_private": "Поширити для початкової аудиторії", + "status.reblogged_by": "{name} поширив", + "status.reblogs.empty": "Ніхто ще не поширив цей допис. Коли хтось це зроблять, вони будуть зображені тут.", + "status.redraft": "Видалити та виправити", "status.remove_bookmark": "Видалити закладку", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Відповідь для {name}", "status.reply": "Відповісти", "status.replyAll": "Відповісти на ланцюжок", "status.report": "Поскаржитися на @{name}", @@ -581,12 +580,12 @@ "status.share": "Поділитися", "status.show_filter_reason": "Усе одно показати", "status.show_less": "Згорнути", - "status.show_less_all": "Показувати менше для всіх", + "status.show_less_all": "Згорнути для всіх", "status.show_more": "Розгорнути", - "status.show_more_all": "Показувати більше для всіх", + "status.show_more_all": "Розгорнути для всіх", "status.show_original": "Показати оригінал", "status.translate": "Перекласти", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Перекладено з {lang} за допомогою {provider}", "status.uncached_media_warning": "Недоступно", "status.unmute_conversation": "Не ігнорувати діалог", "status.unpin": "Відкріпити від профілю", @@ -608,12 +607,12 @@ "timeline_hint.resources.followers": "Підписники", "timeline_hint.resources.follows": "Підписки", "timeline_hint.resources.statuses": "Попередні дописи", - "trends.counter_by_accounts": "{count, plural, one {{counter} особа} few {{counter} особи} other {{counter} осіб}} за останні(й) {days, plural, one {день} few {{days} дні} other {{days} днів}}", - "trends.trending_now": "Актуальні", + "trends.counter_by_accounts": "{count, plural, one {{counter} особа} few {{counter} особи} other {{counter} осіб}} {days, plural, one {за останній день} few {за останні {days} дні} other {за останні {days} днів}}", + "trends.trending_now": "Популярне зараз", "ui.beforeunload": "Вашу чернетку буде втрачено, якщо ви покинете Mastodon.", - "units.short.billion": "{count} млрд.", - "units.short.million": "{count} млн.", - "units.short.thousand": "{count} тис.", + "units.short.billion": "{count} млрд", + "units.short.million": "{count} млн", + "units.short.thousand": "{count} тис", "upload_area.title": "Перетягніть сюди, щоб завантажити", "upload_button.label": "Додати зображення, відео або аудіо", "upload_error.limit": "Ліміт завантаження файлів перевищено.", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Підготовка OCR…", "upload_modal.preview_label": "Переглянути ({ratio})", "upload_progress.label": "Завантаження...", + "upload_progress.processing": "Processing…", "video.close": "Закрити відео", "video.download": "Завантажити файл", "video.exit_fullscreen": "Вийти з повноекранного режиму", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index 03b648fe9..c4d337cef 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "اجازت دیں", "follow_request.reject": "انکار کریں", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "اسناد", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "آغاز کریں", - "getting_started.invite": "دوستوں کو دعوت دیں", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "ترتیباتِ اکاؤنٹ", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "اور {additional}", "hashtag.column_header.tag_mode.any": "یا {additional}", "hashtag.column_header.tag_mode.none": "بغیر {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "غیر معینہ", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "مسدود صارفین", "navigation_bar.bookmarks": "بُک مارکس", "navigation_bar.community_timeline": "مقامی ٹائم لائن", @@ -375,8 +375,6 @@ "navigation_bar.filters": "خاموش کردہ الفاظ", "navigation_bar.follow_requests": "پیروی کی درخواستیں", "navigation_bar.follows_and_followers": "پیروی کردہ اور پیروکار", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "ہوٹ کیز", "navigation_bar.lists": "فہرستیں", "navigation_bar.logout": "لاگ آؤٹ", "navigation_bar.mutes": "خاموش کردہ صارفین", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Search", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index b05bed774..af307601d 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -1,6 +1,7 @@ { "about.blocks": "Giới hạn chung", "about.contact": "Liên lạc:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Lý do", "about.domain_blocks.domain": "Máy chủ", "about.domain_blocks.preamble": "Mastodon cho phép bạn tương tác nội dung và giao tiếp với người dùng từ bất kỳ máy chủ nào khác trong mạng liên hợp. Còn máy chủ này có những ngoại lệ riêng.", @@ -39,7 +40,7 @@ "account.follows.empty": "Người này chưa theo dõi ai.", "account.follows_you": "Đang theo dõi bạn", "account.hide_reblogs": "Ẩn tút @{name} đăng lại", - "account.joined_short": "Joined", + "account.joined_short": "Đã tham gia", "account.languages": "Đổi ngôn ngữ mong muốn", "account.link_verified_on": "Liên kết này đã được xác minh vào {date}", "account.locked_info": "Đây là tài khoản riêng tư. Chủ tài khoản tự mình xét duyệt các yêu cầu theo dõi.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Đóng", "bundle_modal_error.message": "Đã có lỗi xảy ra trong khi tải nội dung này.", "bundle_modal_error.retry": "Thử lại", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Vì Mastodon liên hợp nên bạn có thể tạo tài khoản trên máy chủ khác và vẫn tương tác với máy chủ này.", + "closed_registrations_modal.description": "{domain} hiện tắt đăng ký, nhưng hãy lưu ý rằng bạn không cần một tài khoản riêng trên {domain} để sử dụng Mastodon.", + "closed_registrations_modal.find_another_server": "Tìm máy chủ khác", + "closed_registrations_modal.preamble": "Mastodon liên hợp, vì vậy bất kể bạn tạo tài khoản ở đâu, bạn sẽ có thể theo dõi và tương tác với bất kỳ ai trên máy chủ này. Bạn thậm chí có thể tự mở máy chủ!", + "closed_registrations_modal.title": "Đăng ký trên Mastodon", "column.about": "Giới thiệu", "column.blocks": "Người đã chặn", "column.bookmarks": "Đã lưu", @@ -258,15 +259,15 @@ "follow_request.authorize": "Cho phép", "follow_request.reject": "Từ chối", "follow_requests.unlocked_explanation": "Mặc dù tài khoản của bạn đang ở chế độ công khai, quản trị viên của {domain} vẫn tin rằng bạn sẽ muốn xem lại yêu cầu theo dõi từ những người khác.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Đã lưu", - "getting_started.directory": "Danh bạ", - "getting_started.documentation": "Tài liệu", - "getting_started.free_software_notice": "Mastodon là phần mềm tự do nguồn mở. Bạn có thể xem, đóng góp mã nguồn hoặc báo lỗi tại {repository}.", "getting_started.heading": "Quản lý", - "getting_started.invite": "Mời bạn bè", - "getting_started.privacy_policy": "Chính sách bảo mật", - "getting_started.security": "Bảo mật", - "getting_started.what_is_mastodon": "Về Mastodon", "hashtag.column_header.tag_mode.all": "và {additional}", "hashtag.column_header.tag_mode.any": "hoặc {additional}", "hashtag.column_header.tag_mode.none": "mà không {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Ẩn thông báo từ người này?", "mute_modal.indefinite": "Vĩnh viễn", "navigation_bar.about": "Giới thiệu", - "navigation_bar.apps": "Tải ứng dụng", "navigation_bar.blocks": "Người đã chặn", "navigation_bar.bookmarks": "Đã lưu", "navigation_bar.community_timeline": "Cộng đồng", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Bộ lọc từ ngữ", "navigation_bar.follow_requests": "Yêu cầu theo dõi", "navigation_bar.follows_and_followers": "Quan hệ", - "navigation_bar.info": "Giới thiệu", - "navigation_bar.keyboard_shortcuts": "Phím tắt", "navigation_bar.lists": "Danh sách", "navigation_bar.logout": "Đăng xuất", "navigation_bar.mutes": "Người đã ẩn", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Tút ghim", "navigation_bar.preferences": "Cài đặt", "navigation_bar.public_timeline": "Thế giới", - "navigation_bar.search": "Search", + "navigation_bar.search": "Tìm kiếm", "navigation_bar.security": "Bảo mật", "not_signed_in_indicator.not_signed_in": "Bạn cần đăng nhập để truy cập mục này.", "notification.admin.report": "{name} đã báo cáo {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Vi phạm quy tắc", "report_notification.open": "Mở báo cáo", "search.placeholder": "Tìm kiếm", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Gợi ý", "search_popout.tips.full_text": "Nội dung trả về bao gồm những tút mà bạn đã viết, thích, đăng lại hoặc những tút có nhắc đến bạn. Bạn cũng có thể tìm địa chỉ người dùng, tên hiển thị và hashtag.", "search_popout.tips.hashtag": "hashtag", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Tút này chưa có ai đăng lại. Nếu có, nó sẽ hiển thị ở đây.", "status.redraft": "Xóa và viết lại", "status.remove_bookmark": "Bỏ lưu", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Trả lời đến {name}", "status.reply": "Trả lời", "status.replyAll": "Trả lời người đăng tút", "status.report": "Báo cáo @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "Hiển thị tất cả", "status.show_original": "Bản gốc", "status.translate": "Dịch", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Dịch từ {lang} bằng {provider}", "status.uncached_media_warning": "Uncached", "status.unmute_conversation": "Quan tâm", "status.unpin": "Bỏ ghim trên hồ sơ", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Đang nhận dạng ký tự…", "upload_modal.preview_label": "Xem trước ({ratio})", "upload_progress.label": "Đang tải lên...", + "upload_progress.processing": "Processing…", "video.close": "Đóng video", "video.download": "Lưu về máy", "video.exit_fullscreen": "Thoát toàn màn hình", diff --git a/app/javascript/mastodon/locales/whitelist_ig.json b/app/javascript/mastodon/locales/whitelist_ig.json new file mode 100644 index 000000000..0d4f101c7 --- /dev/null +++ b/app/javascript/mastodon/locales/whitelist_ig.json @@ -0,0 +1,2 @@ +[ +] diff --git a/app/javascript/mastodon/locales/whitelist_my.json b/app/javascript/mastodon/locales/whitelist_my.json new file mode 100644 index 000000000..0d4f101c7 --- /dev/null +++ b/app/javascript/mastodon/locales/whitelist_my.json @@ -0,0 +1,2 @@ +[ +] diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index 681667a2f..da5da985b 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Authorize", "follow_request.reject": "ⴰⴳⵢ", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", - "getting_started.invite": "Invite people", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "ⵜⵉⵙⵖⴰⵍ ⵏ ⵓⵎⵉⴹⴰⵏ", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "ⴷ {additional}", "hashtag.column_header.tag_mode.any": "ⵏⵖ {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "ⵜⵓⵜⵔⴰⵡⵉⵏ ⵏ ⵓⴹⴼⴰⵕ", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "ⵜⵉⵍⴳⴰⵎⵉⵏ", "navigation_bar.logout": "ⴼⴼⵖ", "navigation_bar.mutes": "Muted users", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "ⵔⵣⵓ", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "ⵔⴳⵍ ⴰⴼⵉⴷⵢⵓ", "video.download": "ⴰⴳⵎ ⴰⴼⴰⵢⵍⵓ", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index bbc124907..c8f9b2126 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -1,6 +1,7 @@ { "about.blocks": "被限制的服务器", "about.contact": "联系方式:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "原因", "about.domain_blocks.domain": "域名", "about.domain_blocks.preamble": "通常来说,在 Mastodon 上,你可以浏览联邦宇宙中任何一台服务器上的内容,并且和上面的用户互动。但其中一些在本服务器上被设置为例外。", @@ -91,9 +92,9 @@ "bundle_modal_error.close": "关闭", "bundle_modal_error.message": "载入这个组件时发生了错误。", "bundle_modal_error.retry": "重试", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations.other_server_instructions": "基于Mastodon去中心化的特性, 你可以在其它服务器上创建账户并与该服务器保持联系.", + "closed_registrations_modal.description": "您并不能在 {domain} 上创建账户, 但您无需在 {domain} 上的账户也可以使用Mastodon.", + "closed_registrations_modal.find_another_server": "查找另外的服务器", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "关于", @@ -258,15 +259,15 @@ "follow_request.authorize": "授权", "follow_request.reject": "拒绝", "follow_requests.unlocked_explanation": "尽管你没有锁嘟,但是 {domain} 的工作人员认为你也许会想手动审核审核这些账号的关注请求。", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "已保存", - "getting_started.directory": "目录", - "getting_started.documentation": "文档", - "getting_started.free_software_notice": "Mastodon 是免费的开源软件。 你可以在 {repository} 查看源代码、贡献或报告问题。", "getting_started.heading": "开始使用", - "getting_started.invite": "邀请用户", - "getting_started.privacy_policy": "隐私政策", - "getting_started.security": "账号设置", - "getting_started.what_is_mastodon": "关于 Mastodon", "hashtag.column_header.tag_mode.all": "以及 {additional}", "hashtag.column_header.tag_mode.any": "或是 {additional}", "hashtag.column_header.tag_mode.none": "而不用 {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "同时隐藏来自这个用户的通知?", "mute_modal.indefinite": "无期限", "navigation_bar.about": "关于", - "navigation_bar.apps": "获取应用程序", "navigation_bar.blocks": "已屏蔽的用户", "navigation_bar.bookmarks": "书签", "navigation_bar.community_timeline": "本站时间轴", @@ -375,8 +375,6 @@ "navigation_bar.filters": "隐藏关键词", "navigation_bar.follow_requests": "关注请求", "navigation_bar.follows_and_followers": "关注管理", - "navigation_bar.info": "关于", - "navigation_bar.keyboard_shortcuts": "快捷键列表", "navigation_bar.lists": "列表", "navigation_bar.logout": "登出", "navigation_bar.mutes": "已隐藏的用户", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "违反规则", "report_notification.open": "展开报告", "search.placeholder": "搜索", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "高级搜索格式", "search_popout.tips.full_text": "输入关键词检索所有你发送、喜欢、转嘟过或提及到你的帖子,以及其他用户公开的用户名、昵称和话题标签。", "search_popout.tips.hashtag": "话题标签", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "正在准备文字识别…", "upload_modal.preview_label": "预览 ({ratio})", "upload_progress.label": "上传中…", + "upload_progress.processing": "Processing…", "video.close": "关闭视频", "video.download": "下载文件", "video.exit_fullscreen": "退出全屏", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 7fd51bfa7..6ea522ab3 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "批准", "follow_request.reject": "拒絕", "follow_requests.unlocked_explanation": "即使您的帳戶未上鎖,{domain} 的工作人員認為您可能想手動審核來自這些帳戶的關注請求。", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "已儲存", - "getting_started.directory": "Directory", - "getting_started.documentation": "文件", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "開始使用", - "getting_started.invite": "邀請使用者", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "帳戶設定", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "以及{additional}", "hashtag.column_header.tag_mode.any": "或是{additional}", "hashtag.column_header.tag_mode.none": "而無需{additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "需要隱藏這使用者的通知嗎?", "mute_modal.indefinite": "沒期限", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "封鎖名單", "navigation_bar.bookmarks": "書籤", "navigation_bar.community_timeline": "本站時間軸", @@ -375,8 +375,6 @@ "navigation_bar.filters": "靜音詞彙", "navigation_bar.follow_requests": "關注請求", "navigation_bar.follows_and_followers": "關注及關注者", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "鍵盤快速鍵", "navigation_bar.lists": "列表", "navigation_bar.logout": "登出", "navigation_bar.mutes": "靜音名單", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "搜尋", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "高級搜索格式", "search_popout.tips.full_text": "輸入簡單的文字,搜索由你發放、收藏、轉推和提及你的文章,以及符合的使用者名稱,顯示名稱和標籤。", "search_popout.tips.hashtag": "標籤", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "準備辨識圖片文字…", "upload_modal.preview_label": "預覽 ({ratio})", "upload_progress.label": "上載中……", + "upload_progress.processing": "Processing…", "video.close": "關閉影片", "video.download": "下載檔案", "video.exit_fullscreen": "退出全螢幕", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index d75a57e32..8ef55acd3 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -1,6 +1,7 @@ { "about.blocks": "受管制的伺服器", "about.contact": "聯絡我們:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "原因", "about.domain_blocks.domain": "網域", "about.domain_blocks.preamble": "Mastodon 一般來說允許您閱讀並和聯邦宇宙上任何伺服器的使用者互動。這些伺服器是這個站台設下的例外。", @@ -39,10 +40,10 @@ "account.follows.empty": "這位使用者尚未跟隨任何人。", "account.follows_you": "跟隨了您", "account.hide_reblogs": "隱藏來自 @{name} 的轉嘟", - "account.joined_short": "Joined", + "account.joined_short": "已加入", "account.languages": "變更訂閱的語言", "account.link_verified_on": "已在 {date} 檢查此連結的擁有者權限", - "account.locked_info": "此帳戶的隱私狀態被設為鎖定。該擁有者會手動審核能跟隨此帳號的人。", + "account.locked_info": "此帳號的隱私狀態被設為鎖定。該擁有者會手動審核能跟隨此帳號的人。", "account.media": "媒體", "account.mention": "提及 @{name}", "account.moved_to": "{name} 已遷移至:", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "關閉", "bundle_modal_error.message": "載入此元件時發生錯誤。", "bundle_modal_error.retry": "重試", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "因為 Mastodon 是去中心化的,所以您也能於其他伺服器上建立帳號,並仍然與這個伺服器互動。", + "closed_registrations_modal.description": "目前無法在 {domain} 建立新帳號,但也請別忘了,您並不一定需要有 {domain} 伺服器的帳號,也能使用 Mastodon 。", + "closed_registrations_modal.find_another_server": "尋找另一個伺服器", + "closed_registrations_modal.preamble": "Mastodon 是去中心化的,所以無論您在哪個伺服器新增帳號,都可以與此伺服器上的任何人追蹤及互動。您甚至能自行架一個自己的伺服器!", + "closed_registrations_modal.title": "註冊 Mastodon", "column.about": "關於", "column.blocks": "已封鎖的使用者", "column.bookmarks": "書籤", @@ -119,14 +120,14 @@ "column_header.show_settings": "顯示設定", "column_header.unpin": "取消釘選", "column_subheading.settings": "設定", - "community.column_settings.local_only": "只有本站", - "community.column_settings.media_only": "只有媒體", - "community.column_settings.remote_only": "只有遠端", + "community.column_settings.local_only": "只顯示本站", + "community.column_settings.media_only": "只顯示媒體", + "community.column_settings.remote_only": "只顯示遠端", "compose.language.change": "變更語言", "compose.language.search": "搜尋語言...", "compose_form.direct_message_warning_learn_more": "了解更多", - "compose_form.encryption_warning": "Mastodon 上的嘟文並未端到端加密。請不要透過 Mastodon 分享任何敏感資訊。", - "compose_form.hashtag_warning": "由於這則嘟文設定為「不公開」,它將不會被列於任何主題標籤下。只有公開的嘟文才能藉由主題標籤找到。", + "compose_form.encryption_warning": "Mastodon 上的嘟文並未進行端到端加密。請不要透過 Mastodon 分享任何敏感資訊。", + "compose_form.hashtag_warning": "由於這則嘟文設定為「不公開」,它將不被列於任何主題標籤下。只有公開的嘟文才能藉由主題標籤被找到。", "compose_form.lock_disclaimer": "您的帳號尚未 {locked}。任何人皆能跟隨您並看到您設定成只有跟隨者能看的嘟文。", "compose_form.lock_disclaimer.lock": "上鎖", "compose_form.placeholder": "正在想些什麼嗎?", @@ -142,8 +143,8 @@ "compose_form.sensitive.hide": "標記媒體為敏感內容", "compose_form.sensitive.marked": "此媒體被標記為敏感內容", "compose_form.sensitive.unmarked": "此媒體未被標記為敏感內容", - "compose_form.spoiler.marked": "正文已隱藏到警告之後", - "compose_form.spoiler.unmarked": "正文未被隱藏", + "compose_form.spoiler.marked": "移除內容警告", + "compose_form.spoiler.unmarked": "新增內容警告", "compose_form.spoiler_placeholder": "請在此處寫入警告訊息", "confirmation_modal.cancel": "取消", "confirmations.block.block_and_report": "封鎖並檢舉", @@ -185,7 +186,7 @@ "dismissable_banner.explore_links": "這些新聞故事正在被此伺服器以及去中心化網路上的人們熱烈討論著。", "dismissable_banner.explore_statuses": "這些於這裡以及去中心化網路中其他伺服器發出的嘟文正在被此伺服器上的人們熱烈討論著。", "dismissable_banner.explore_tags": "這些主題標籤正在被此伺服器以及去中心化網路上的人們熱烈討論著。", - "dismissable_banner.public_timeline": "這些是來自這裡以及去中心網路中其他已知伺服器之最新公開嘟文。", + "dismissable_banner.public_timeline": "這些是來自這裡以及去中心化網路中其他已知伺服器之最新公開嘟文。", "embed.instructions": "要在您的網站嵌入此嘟文,請複製以下程式碼。", "embed.preview": "它將顯示成這樣:", "emoji_button.activity": "活動", @@ -220,14 +221,14 @@ "empty_column.home": "您的首頁時間軸是空的!前往 {suggestions} 或使用搜尋功能來認識其他人。", "empty_column.home.suggestions": "檢視部份建議", "empty_column.list": "這份列表下什麼也沒有。當此列表的成員嘟出了新的嘟文時,它們就會顯示於此。", - "empty_column.lists": "您還沒有建立任何列表。這裡將會顯示您所建立的列表。", + "empty_column.lists": "您還沒有建立任何列表。當您建立列表時,它將於此顯示。", "empty_column.mutes": "您尚未靜音任何使用者。", "empty_column.notifications": "您尚未收到任何通知,和別人互動開啟對話吧。", "empty_column.public": "這裡什麼都沒有!嘗試寫些公開的嘟文,或著自己跟隨其他伺服器的使用者後就會有嘟文出現了", "error.unexpected_crash.explanation": "由於發生系統故障或瀏覽器相容性問題,無法正常顯示此頁面。", "error.unexpected_crash.explanation_addons": "此頁面無法被正常顯示,這可能是由瀏覽器附加元件或網頁自動翻譯工具造成的。", "error.unexpected_crash.next_steps": "請嘗試重新整理頁面。如果狀況沒有改善,您可以使用不同的瀏覽器或應用程式來檢視來使用 Mastodon。", - "error.unexpected_crash.next_steps_addons": "請嘗試關閉他們然後重新整理頁面。如果狀況沒有改善,您可以使用不同的瀏覽器或應用程式來檢視來使用 Mastodon。", + "error.unexpected_crash.next_steps_addons": "請嘗試關閉它們然後重新整理頁面。如果狀況沒有改善,您可以使用不同的瀏覽器或應用程式來檢視來使用 Mastodon。", "errors.unexpected_crash.copy_stacktrace": "複製 stacktrace 到剪貼簿", "errors.unexpected_crash.report_issue": "回報問題", "explore.search_results": "搜尋結果", @@ -258,15 +259,15 @@ "follow_request.authorize": "授權", "follow_request.reject": "拒絕", "follow_requests.unlocked_explanation": "即便您的帳號未被鎖定,{domain} 的管理員認為您可能想要自己審核這些帳號的跟隨請求。", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "已儲存", - "getting_started.directory": "目錄", - "getting_started.documentation": "文件", - "getting_started.free_software_notice": "Mastodon 是自由的開源軟體。您可以於 {repository} 檢查其程式碼、貢獻或是回報問題。", "getting_started.heading": "開始使用", - "getting_started.invite": "邀請使用者", - "getting_started.privacy_policy": "隱私權政策", - "getting_started.security": "帳號安全性設定", - "getting_started.what_is_mastodon": "關於 Mastodon", "hashtag.column_header.tag_mode.all": "以及 {additional}", "hashtag.column_header.tag_mode.any": "或是 {additional}", "hashtag.column_header.tag_mode.none": "而無需 {additional}", @@ -278,7 +279,7 @@ "hashtag.column_settings.tag_toggle": "將額外標籤加入到這個欄位", "hashtag.follow": "追蹤主題標籤", "hashtag.unfollow": "取消追蹤主題標籤", - "home.column_settings.basic": "基本", + "home.column_settings.basic": "基本設定", "home.column_settings.show_reblogs": "顯示轉嘟", "home.column_settings.show_replies": "顯示回覆", "home.hide_announcements": "隱藏公告", @@ -301,11 +302,11 @@ "keyboard_shortcuts.back": "返回上一頁", "keyboard_shortcuts.blocked": "開啟「封鎖使用者」名單", "keyboard_shortcuts.boost": "轉嘟", - "keyboard_shortcuts.column": "將焦點放在其中一欄的嘟文", - "keyboard_shortcuts.compose": "將焦點移至撰寫文字區塊", + "keyboard_shortcuts.column": "聚焦至其中一欄的嘟文", + "keyboard_shortcuts.compose": "聚焦至撰寫文字區塊", "keyboard_shortcuts.description": "說明", "keyboard_shortcuts.direct": "開啟私訊欄", - "keyboard_shortcuts.down": "在列表中往下移動", + "keyboard_shortcuts.down": "往下移動", "keyboard_shortcuts.enter": "檢視嘟文", "keyboard_shortcuts.favourite": "加到最愛", "keyboard_shortcuts.favourites": "開啟最愛列表", @@ -313,7 +314,7 @@ "keyboard_shortcuts.heading": "鍵盤快速鍵", "keyboard_shortcuts.home": "開啟首頁時間軸", "keyboard_shortcuts.hotkey": "快速鍵", - "keyboard_shortcuts.legend": "顯示此圖例", + "keyboard_shortcuts.legend": "顯示此說明選單", "keyboard_shortcuts.local": "開啟本站時間軸", "keyboard_shortcuts.mention": "提及作者", "keyboard_shortcuts.muted": "開啟靜音使用者列表", @@ -324,14 +325,14 @@ "keyboard_shortcuts.profile": "開啟作者的個人檔案頁面", "keyboard_shortcuts.reply": "回應嘟文", "keyboard_shortcuts.requests": "開啟跟隨請求列表", - "keyboard_shortcuts.search": "將焦點移至搜尋框", - "keyboard_shortcuts.spoilers": "顯示或隱藏被折疊的正文", + "keyboard_shortcuts.search": "聚焦至搜尋框", + "keyboard_shortcuts.spoilers": "顯示或隱藏內容警告之嘟文", "keyboard_shortcuts.start": "開啟「開始使用」欄位", - "keyboard_shortcuts.toggle_hidden": "顯示或隱藏在內容警告之後的正文", + "keyboard_shortcuts.toggle_hidden": "顯示或隱藏在內容警告之後的嘟文", "keyboard_shortcuts.toggle_sensitivity": "顯示或隱藏媒體", - "keyboard_shortcuts.toot": "開始發出新嘟文", - "keyboard_shortcuts.unfocus": "取消輸入文字區塊 / 搜尋的焦點", - "keyboard_shortcuts.up": "在列表中往上移動", + "keyboard_shortcuts.toot": "發個新嘟文", + "keyboard_shortcuts.unfocus": "取消輸入文字區塊或搜尋之焦點", + "keyboard_shortcuts.up": "往上移動", "lightbox.close": "關閉", "lightbox.compress": "折疊圖片檢視框", "lightbox.expand": "展開圖片檢視框", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "是否隱藏來自這位使用者的通知?", "mute_modal.indefinite": "無期限", "navigation_bar.about": "關於", - "navigation_bar.apps": "取得應用程式", "navigation_bar.blocks": "封鎖使用者", "navigation_bar.bookmarks": "書籤", "navigation_bar.community_timeline": "本站時間軸", @@ -375,8 +375,6 @@ "navigation_bar.filters": "靜音詞彙", "navigation_bar.follow_requests": "跟隨請求", "navigation_bar.follows_and_followers": "跟隨中與跟隨者", - "navigation_bar.info": "關於", - "navigation_bar.keyboard_shortcuts": "快速鍵", "navigation_bar.lists": "列表", "navigation_bar.logout": "登出", "navigation_bar.mutes": "靜音的使用者", @@ -384,7 +382,7 @@ "navigation_bar.pins": "釘選的嘟文", "navigation_bar.preferences": "偏好設定", "navigation_bar.public_timeline": "聯邦時間軸", - "navigation_bar.search": "Search", + "navigation_bar.search": "搜尋", "navigation_bar.security": "安全性", "not_signed_in_indicator.not_signed_in": "您需要登入才能存取此資源。", "notification.admin.report": "{name} 檢舉了 {target}", @@ -405,8 +403,8 @@ "notifications.column_settings.alert": "桌面通知", "notifications.column_settings.favourite": "最愛:", "notifications.column_settings.filter_bar.advanced": "顯示所有分類", - "notifications.column_settings.filter_bar.category": "快速過濾欄", - "notifications.column_settings.filter_bar.show_bar": "顯示過濾器列", + "notifications.column_settings.filter_bar.category": "快速過濾器", + "notifications.column_settings.filter_bar.show_bar": "顯示過濾器", "notifications.column_settings.follow": "新的跟隨者:", "notifications.column_settings.follow_request": "新的跟隨請求:", "notifications.column_settings.mention": "提及:", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "違反規則", "report_notification.open": "開啟檢舉報告", "search.placeholder": "搜尋", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "進階搜尋格式", "search_popout.tips.full_text": "輸入簡單的文字,搜尋由您撰寫、最愛、轉嘟或提您的嘟文,以及與關鍵詞匹配的使用者名稱、帳號顯示名稱和主題標籤。", "search_popout.tips.hashtag": "主題標籤", @@ -568,12 +567,12 @@ "status.pinned": "釘選的嘟文", "status.read_more": "閱讀更多", "status.reblog": "轉嘟", - "status.reblog_private": "轉嘟給原有關注者", + "status.reblog_private": "依照原嘟可見性轉嘟", "status.reblogged_by": "{name} 轉嘟了", "status.reblogs.empty": "還沒有人轉嘟過這則嘟文。當有人轉嘟時,它將於此顯示。", "status.redraft": "刪除並重新編輯", "status.remove_bookmark": "移除書籤", - "status.replied_to": "Replied to {name}", + "status.replied_to": "回覆給 {name}", "status.reply": "回覆", "status.replyAll": "回覆討論串", "status.report": "檢舉 @{name}", @@ -586,10 +585,10 @@ "status.show_more_all": "顯示更多這類嘟文", "status.show_original": "顯示原文", "status.translate": "翻譯", - "status.translated_from_with": "Translated from {lang} using {provider}", + "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} 的訂閱語言", @@ -609,7 +608,7 @@ "timeline_hint.resources.follows": "正在跟隨", "timeline_hint.resources.statuses": "更早的嘟文", "trends.counter_by_accounts": "{count, plural, one {{counter} 人} other {{counter} 人}} 於過去 {days, plural, one {日} other {{days} days}} 之間", - "trends.trending_now": "現正熱門", + "trends.trending_now": "現正熱門趨勢", "ui.beforeunload": "如果離開 Mastodon,您的草稿將會不見。", "units.short.billion": "{count}B", "units.short.million": "{count}M", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "準備 OCR 中……", "upload_modal.preview_label": "預覽 ({ratio})", "upload_progress.label": "上傳中...", + "upload_progress.processing": "Processing…", "video.close": "關閉影片", "video.download": "下載檔案", "video.exit_fullscreen": "退出全螢幕", diff --git a/config/locales/activerecord.af.yml b/config/locales/activerecord.af.yml index dff778d57..18bf0388d 100644 --- a/config/locales/activerecord.af.yml +++ b/config/locales/activerecord.af.yml @@ -29,6 +29,10 @@ af: attributes: website: invalid: is nie 'n geldige URL nie + import: + attributes: + data: + malformed: is misvormd status: attributes: reblog: @@ -38,9 +42,14 @@ af: email: blocked: maak gebruik van 'n e-pos verskaffer wat nie toegelaat word nie unreachable: blyk nie te bestaan nie + role_id: + elevated: kan nie hoër as huidige rol wees nie user_role: attributes: permissions_as_keys: + dangerous: bevat permissies wat nie veilig vir die basis rol is nie + elevated: kan nie permissies bevat wat vanaf die huidige rol ontbreek nie own_role: kan nie verander word met jou huidige rol nie position: + elevated: kan nie hoër as die huidige rol wees nie own_role: kan nie verander word met jou huidige rol nie diff --git a/config/locales/activerecord.da.yml b/config/locales/activerecord.da.yml index 33d86e296..b75a3fd59 100644 --- a/config/locales/activerecord.da.yml +++ b/config/locales/activerecord.da.yml @@ -29,6 +29,10 @@ da: attributes: website: invalid: "'er ikke en gyldig URL" + import: + attributes: + data: + malformed: er forkert udformet status: attributes: reblog: @@ -48,3 +52,4 @@ da: own_role: kan ikke ændres med din aktuelle rolle position: elevated: kan ikke være højere end din aktuelle rolle + own_role: kan ikke ændres med din aktuelle rolle diff --git a/config/locales/activerecord.de.yml b/config/locales/activerecord.de.yml index d3c013dc0..53a04e700 100644 --- a/config/locales/activerecord.de.yml +++ b/config/locales/activerecord.de.yml @@ -3,7 +3,7 @@ de: activerecord: attributes: poll: - expires_at: Frist + expires_at: Abstimmungsende options: Wahlmöglichkeiten user: agreement: Service-Vereinbarung @@ -20,7 +20,7 @@ de: attributes: username: invalid: nur Buchstaben, Ziffern und Unterstriche - reserved: ist reserviert + reserved: ist bereits vergeben admin/webhook: attributes: url: @@ -29,6 +29,10 @@ de: attributes: website: invalid: ist keine gültige URL + import: + attributes: + data: + malformed: ist fehlerhaft status: attributes: reblog: diff --git a/config/locales/activerecord.el.yml b/config/locales/activerecord.el.yml index 77d0c2716..b285e457a 100644 --- a/config/locales/activerecord.el.yml +++ b/config/locales/activerecord.el.yml @@ -21,6 +21,10 @@ el: username: invalid: μόνο γράμματα, αριθμοί και κάτω παύλες reserved: είναι δεσμευμένο + import: + attributes: + data: + malformed: δεν είναι έγκυρα status: attributes: reblog: diff --git a/config/locales/activerecord.es.yml b/config/locales/activerecord.es.yml index 4aec0f074..450658fa1 100644 --- a/config/locales/activerecord.es.yml +++ b/config/locales/activerecord.es.yml @@ -29,6 +29,10 @@ es: attributes: website: invalid: no es una URL válida + import: + attributes: + data: + malformed: tiene un formato incorrecto status: attributes: reblog: diff --git a/config/locales/activerecord.eu.yml b/config/locales/activerecord.eu.yml index 83b01f91d..8b83b4ef8 100644 --- a/config/locales/activerecord.eu.yml +++ b/config/locales/activerecord.eu.yml @@ -21,6 +21,18 @@ eu: username: invalid: letrak, zenbakiak eta gidoi baxuak besterik ez reserved: erreserbatuta dago + admin/webhook: + attributes: + url: + invalid: ez da baliozko URL bat + doorkeeper/application: + attributes: + website: + invalid: ez da baliozko URL bat + import: + attributes: + data: + malformed: gaizki eratua dago status: attributes: reblog: @@ -30,3 +42,14 @@ eu: email: blocked: onartu gabeko e-posta hornitzaile bat erabiltzen du unreachable: dirudienez ez da existitzen + role_id: + elevated: ezin du gaur egungo zure rola baino goragokoa izan + user_role: + attributes: + permissions_as_keys: + dangerous: oinarrizko rolarentzat seguruak ez diren baimenak ditu + elevated: ezin du eduki zure uneko rolak ez duen baimenik + own_role: ezin da aldatu zure uneko rolarekin aldatu + position: + elevated: ezin du zure uneko rola baino goragokoa izan + own_role: ezin da aldatu zure uneko rolarekin diff --git a/config/locales/activerecord.fa.yml b/config/locales/activerecord.fa.yml index 291958d01..7af0975ff 100644 --- a/config/locales/activerecord.fa.yml +++ b/config/locales/activerecord.fa.yml @@ -21,6 +21,18 @@ fa: username: invalid: تنها حروف، اعداد، و زیرخط reserved: محفوظ است + admin/webhook: + attributes: + url: + invalid: نشانی معتبری نیست + doorkeeper/application: + attributes: + website: + invalid: نشانی معتبری نیست + import: + attributes: + data: + malformed: بدریخت است status: attributes: reblog: @@ -30,3 +42,14 @@ fa: email: blocked: از فراهم‌کنندهٔ رایانامهٔ غیرمجازی استفاده می‌کند unreachable: به نظر نمی‌رسد وجود داشته باشد + role_id: + elevated: نمی‌تواند بالاتر از نقش کنونیتان باشد + user_role: + attributes: + permissions_as_keys: + dangerous: شاما اجازه‌هایی که برای نقش پایه امن نیستند + elevated: نمی‌تواند شامل اجازه‌هایی باشد که نقش کنونیتان ندارد + own_role: نمی‌تواند با نقش کنونیتان تغییر کند + position: + elevated: نمی‌تواند بالاتر از نقش کنونیتان باشد + own_role: نمی‌تواند با نقش کنونیتان تغییر کند diff --git a/config/locales/activerecord.gd.yml b/config/locales/activerecord.gd.yml index b210144ef..5e1657d7b 100644 --- a/config/locales/activerecord.gd.yml +++ b/config/locales/activerecord.gd.yml @@ -29,6 +29,10 @@ gd: attributes: website: invalid: "– chan eil seo ’na URL dligheach" + import: + attributes: + data: + malformed: "– chan eil cruth dligheach air" status: attributes: reblog: diff --git a/config/locales/activerecord.id.yml b/config/locales/activerecord.id.yml index 88fdb3f75..47d200864 100644 --- a/config/locales/activerecord.id.yml +++ b/config/locales/activerecord.id.yml @@ -29,6 +29,10 @@ id: attributes: website: invalid: bukan URL valid + import: + attributes: + data: + malformed: dalam bentuk yang salah status: attributes: reblog: @@ -38,3 +42,14 @@ id: email: blocked: menggunakan layanan email yang tidak diizinkan unreachable: sepertinya tidak ada + role_id: + elevated: tidak dapat lebih tinggi dari peran Anda saat ini + user_role: + attributes: + permissions_as_keys: + dangerous: berisi izin yang tidak aman untuk peran dasaran + elevated: tidak dapat berisi izin yang peran Anda tidak miliki + own_role: tidak dapat diubah dengan peran Anda saat ini + position: + elevated: tidak bisa lebih tinggi dari peran Anda saat ini + own_role: tidak dapat diubah dengan peran Anda saat ini diff --git a/config/locales/activerecord.ig.yml b/config/locales/activerecord.ig.yml new file mode 100644 index 000000000..7c264f0d7 --- /dev/null +++ b/config/locales/activerecord.ig.yml @@ -0,0 +1 @@ +ig: diff --git a/config/locales/activerecord.ja.yml b/config/locales/activerecord.ja.yml index 3f25607b1..91fa04492 100644 --- a/config/locales/activerecord.ja.yml +++ b/config/locales/activerecord.ja.yml @@ -29,6 +29,10 @@ ja: attributes: website: invalid: は無効なURLです + import: + attributes: + data: + malformed: は不正です status: attributes: reblog: diff --git a/config/locales/activerecord.ku.yml b/config/locales/activerecord.ku.yml index 3eec2950c..09dd5d16d 100644 --- a/config/locales/activerecord.ku.yml +++ b/config/locales/activerecord.ku.yml @@ -29,6 +29,10 @@ ku: attributes: website: invalid: ev girêdaneke nederbasdar e + import: + attributes: + data: + malformed: xerab bûye status: attributes: reblog: diff --git a/config/locales/activerecord.my.yml b/config/locales/activerecord.my.yml new file mode 100644 index 000000000..5e1fc6bee --- /dev/null +++ b/config/locales/activerecord.my.yml @@ -0,0 +1 @@ +my: diff --git a/config/locales/activerecord.pl.yml b/config/locales/activerecord.pl.yml index 68d0b7784..23d192886 100644 --- a/config/locales/activerecord.pl.yml +++ b/config/locales/activerecord.pl.yml @@ -29,6 +29,10 @@ pl: attributes: website: invalid: nie jest poprawnym adresem URL + import: + attributes: + data: + malformed: jest uszkodzona status: attributes: reblog: diff --git a/config/locales/activerecord.pt-BR.yml b/config/locales/activerecord.pt-BR.yml index 105f5a550..fa01c9c53 100644 --- a/config/locales/activerecord.pt-BR.yml +++ b/config/locales/activerecord.pt-BR.yml @@ -29,6 +29,10 @@ pt-BR: attributes: website: invalid: não é uma URL válida + import: + attributes: + data: + malformed: está incorreto status: attributes: reblog: @@ -43,6 +47,7 @@ pt-BR: user_role: attributes: permissions_as_keys: + dangerous: inlcuir permissões que não são seguras para a função base elevated: não pode incluir permissões que a sua função atual não possui own_role: não pode ser alterado com sua função atual position: diff --git a/config/locales/activerecord.sl.yml b/config/locales/activerecord.sl.yml index 255f5e1ed..6da0bb29c 100644 --- a/config/locales/activerecord.sl.yml +++ b/config/locales/activerecord.sl.yml @@ -29,6 +29,10 @@ sl: attributes: website: invalid: ni veljaven URL + import: + attributes: + data: + malformed: je napačno oblikovan status: attributes: reblog: diff --git a/config/locales/activerecord.tr.yml b/config/locales/activerecord.tr.yml index f0787dc41..c9695c1a6 100644 --- a/config/locales/activerecord.tr.yml +++ b/config/locales/activerecord.tr.yml @@ -29,6 +29,10 @@ tr: attributes: website: invalid: geçerli bir URL değil + import: + attributes: + data: + malformed: bozulmuştur status: attributes: reblog: diff --git a/config/locales/activerecord.uk.yml b/config/locales/activerecord.uk.yml index 0f4973d89..4fd3da5ae 100644 --- a/config/locales/activerecord.uk.yml +++ b/config/locales/activerecord.uk.yml @@ -19,7 +19,7 @@ uk: account: attributes: username: - invalid: тільки літери, цифри та підкреслення + invalid: має містити лише літери, цифри та підкреслення reserved: зарезервовано admin/webhook: attributes: @@ -36,7 +36,7 @@ uk: status: attributes: reblog: - taken: статусу вже існує + taken: цього допису вже існує user: attributes: email: diff --git a/config/locales/af.yml b/config/locales/af.yml index de85a6951..038660b7a 100644 --- a/config/locales/af.yml +++ b/config/locales/af.yml @@ -38,6 +38,8 @@ af: '429': Too many requests '500': '503': The page could not be served due to a temporary server failure. + navigation: + toggle_menu: Skakel-kieslys rss: content_warning: 'Inhoud waarskuwing:' descriptions: diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 07f4ad470..fee7f25a2 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -398,13 +398,16 @@ ar: reject_media: رفض الوسائط reject_reports: رفض الشكاوى silence: كتم + suspend: علّق الحساب policy: القواعد reason: السبب العلني title: سياسات المحتوى dashboard: instance_accounts_dimension: الحسابات الأكثر متابعة instance_accounts_measure: حسابات مخزنة + instance_follows_measure: متابِعوهم هنا instance_languages_dimension: اللغات الأكثر استخدامًا + instance_media_attachments_measure: مرفقات الوسائط المخزَّنة delivery: all: الكل clear: مسح أخطاء التسليم @@ -552,8 +555,11 @@ ar: manage_roles: إدارة الأدوار manage_rules: إدارة القواعد manage_settings: إدارة الإعدادات + manage_taxonomies: إدارة التصنيفات + manage_taxonomies_description: السماح للمستخدمين بمراجعة المحتوى المتداول وتحديث إعدادات الوسم manage_user_access: إدارة وصول المستخدم manage_users: إدارة المستخدمين + view_dashboard: عرض لوحة التحكم title: الأدوار rules: add_new: إضافة قاعدة @@ -567,6 +573,7 @@ ar: manage_rules: إدارة قواعد الخادم title: عن appearance: + preamble: تخصيص واجهة الويب لماستدون. title: المظهر branding: title: العلامة @@ -602,12 +609,19 @@ ar: report: إبلاغ deleted: محذوف favourites: المفضلة + in_reply_to: رَدًا على language: اللغة media: title: الوسائط metadata: البيانات الوصفية no_status_selected: لم يطرأ أي تغيير على أي منشور بما أنه لم يتم اختيار أي واحد + open: افتح المنشور + original_status: المنشور الأصلي + reblogs: المعاد تدوينها + status_changed: عُدّل المنشور title: منشورات الحساب + trending: المتداولة + visibility: مدى الظهور with_media: تحتوي على وسائط strikes: actions: @@ -675,6 +689,11 @@ ar: title: إدارة نماذج التحذير webhooks: delete: حذف + disable: تعطيل + disabled: معطَّل + edit: تعديل نقطة النهاية + enable: تشغيل + enabled: نشِط admin_mailer: new_appeal: actions: @@ -768,6 +787,8 @@ ar: email_below_hint_html: إذا كان عنوان البريد الإلكتروني التالي غير صحيح، فيمكنك تغييره هنا واستلام بريد إلكتروني جديد للتأكيد. email_settings_hint_html: لقد تم إرسال رسالة بريد إلكترونية للتأكيد إلى %{email}. إن كان عنوان البريد الإلكتروني غير صحيح ، يمكنك تغييره في إعدادات حسابك. title: الضبط + sign_up: + title: دعنا نجهّز %{domain}. status: account_status: حالة الحساب confirming: في انتظار اكتمال تأكيد البريد الإلكتروني. @@ -916,6 +937,8 @@ ar: title: عوامل التصفية new: title: إضافة عامل تصفية جديد + statuses: + back_to_filter: العودة إلى عامل التصفية footer: trending_now: المتداولة الآن generic: diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 873d5a67c..947329fed 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -1249,6 +1249,8 @@ ca: carry_blocks_over_text: Aquest usuari s’ha mogut des de %{acct}, que havies bloquejat. carry_mutes_over_text: Aquest usuari s’ha mogut des de %{acct}, que havies silenciat. copy_account_note_text: 'Aquest usuari s’ha mogut des de %{acct}, aquí estaven les teves notes prèvies sobre ell:' + navigation: + toggle_menu: Alternar menú notification_mailer: admin: report: diff --git a/config/locales/cs.yml b/config/locales/cs.yml index c2ba1e0af..f1a666e74 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -1271,6 +1271,8 @@ cs: carry_blocks_over_text: Tento účet se přesunul z %{acct}, který jste blokovali. carry_mutes_over_text: Tento účet se přesunul z %{acct}, který jste skryli. copy_account_note_text: 'Tento účet se přesunul z %{acct}, zde byly Vaše předchozí poznámky o něm:' + navigation: + toggle_menu: Přepnout menu notification_mailer: admin: report: diff --git a/config/locales/de.yml b/config/locales/de.yml index 85df6e008..b90d8a606 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -1,21 +1,21 @@ --- de: about: - about_mastodon_html: Mastodon ist ein soziales Netzwerk. Es basiert auf offenen Web-Protokollen und freier, quelloffener Software. Es ist dezentral – genau wie E-Mail! - contact_missing: Nicht angegeben + about_mastodon_html: 'Das soziale Netzwerk der Zukunft: Keine Werbung, keine Überwachung, dafür dezentral und mit Anstand! Starte jetzt mit Mastodon!' + contact_missing: Nicht festgelegt contact_unavailable: Nicht verfügbar hosted_on: Mastodon, gehostet auf %{domain} title: Über accounts: follow: Folgen followers: - one: Folgender + one: Follower other: Folgende following: Folgt instance_actor_flash: Dieses Konto ist ein virtueller Akteur, der den Server selbst repräsentiert und nicht ein einzelner Benutzer. Es wird für Föderationszwecke verwendet und sollte nicht gesperrt werden. last_active: zuletzt aktiv - link_verified_on: Besitz des Links wurde überprüft am %{date} - nothing_here: Hier gibt es nichts! + link_verified_on: Das Profil mit dieser E-Mail-Adresse wurde bereits am %{date} bestätigt + nothing_here: Keine Accounts mit dieser Auswahl vorhanden. pin_errors: following: Du musst dieser Person bereits folgen, um sie empfehlen zu können posts: @@ -27,51 +27,51 @@ de: action: Aktion ausführen title: Moderationsaktion auf %{acct} ausführen account_moderation_notes: - create: Notiz erstellen - created_msg: Moderationsnotiz erfolgreich erstellt! + create: Notiz abspeichern + created_msg: Moderationshinweis erfolgreich abgespeichert! destroyed_msg: Moderationsnotiz erfolgreich gelöscht! accounts: add_email_domain_block: E-Mail-Domain auf Blacklist setzen - approve: Akzeptieren + approve: Genehmigen approved_msg: Anmeldeantrag von %{username} erfolgreich genehmigt - are_you_sure: Bist du sicher? + are_you_sure: Bist du dir sicher? avatar: Profilbild by_domain: Domain change_email: - changed_msg: E-Mail erfolgreich geändert! + changed_msg: E-Mail-Adresse erfolgreich geändert! current_email: Aktuelle E-Mail-Adresse label: E-Mail-Adresse ändern new_email: Neue E-Mail-Adresse submit: E-Mail-Adresse ändern title: E-Mail-Adresse für %{username} ändern change_role: - changed_msg: Rolle erfolgreich geändert! - label: Rolle ändern - no_role: Keine Rolle - title: Rolle für %{username} ändern + changed_msg: Benutzerrechte erfolgreich aktualisiert! + label: Benutzerrechte verändern + no_role: Keine Benutzerrechte + title: Benutzerrechte für %{username} bearbeiten confirm: Bestätigen confirmed: Bestätigt - confirming: Bestätigung + confirming: Verifiziert custom: Benutzerdefiniert delete: Daten löschen deleted: Gelöscht - demote: Degradieren + demote: Zurückstufen destroyed_msg: Daten von %{username} wurden zum Löschen in die Warteschlange eingereiht - disable: Ausschalten - disable_sign_in_token_auth: Deaktiviere die Zwei-Faktor-Authentifizierung per E-Mail - disable_two_factor_authentication: 2FA abschalten - disabled: Ausgeschaltet - display_name: Anzeigename + disable: Sperren + disable_sign_in_token_auth: Deaktiviere die Zwei-Faktor-Authentisierung (2FA) per E-Mail + disable_two_factor_authentication: Zwei-Faktor-Authentisierung (2FA) deaktivieren + disabled: Gesperrte + display_name: Angezeigter Name domain: Domain edit: Bearbeiten email: E-Mail email_status: E-Mail-Status enable: Freischalten - enable_sign_in_token_auth: Aktiviere die Zwei-Faktor-Authentifizierung per E-Mail + enable_sign_in_token_auth: Aktiviere die Zwei-Faktor-Authentisierung (2FA) per E-Mail enabled: Freigegeben enabled_msg: Konto von %{username} erfolgreich freigegeben followers: Follower - follows: Folgt + follows: Folge ich header: Titelbild inbox_url: Posteingangs-URL invite_request_text: Begründung für das Beitreten @@ -134,8 +134,8 @@ de: security_measures: only_password: Nur Passwort password_and_2fa: Passwort und 2FA - sensitive: NSFW - sensitized: Als NSFW markieren + sensitive: Inhaltswarnung + sensitized: Mit Inhaltswarnung versehen shared_inbox_url: Geteilte Posteingang-URL show: created_reports: Erstellte Meldungen @@ -153,7 +153,7 @@ de: unblock_email: E-Mail Adresse entsperren unblocked_email_msg: Die E-Mail-Adresse von %{username} wurde erfolgreich entsperrt unconfirmed_email: Unbestätigte E-Mail-Adresse - undo_sensitized: Nicht mehr als NSFW markieren + undo_sensitized: Inhaltswarnung aufheben undo_silenced: Stummschaltung aufheben undo_suspension: Verbannung aufheben unsilenced_msg: Konto von %{username} erfolgreich freigegeben @@ -196,10 +196,10 @@ de: destroy_user_role: Rolle löschen disable_2fa_user: 2FA deaktivieren disable_custom_emoji: Benutzerdefiniertes Emoji deaktivieren - disable_sign_in_token_auth_user: Zwei-Faktor-Authentifizierung per E-Mail für den Nutzer deaktiviert + disable_sign_in_token_auth_user: Zwei-Faktor-Authentisierung (2FA) per E-Mail für diesen Account deaktivieren disable_user: Benutzer deaktivieren enable_custom_emoji: Benutzerdefiniertes Emoji aktivieren - enable_sign_in_token_auth_user: Zwei-Faktor-Authentifizierung per E-Mail für den Nutzer aktiviert + enable_sign_in_token_auth_user: Zwei-Faktor-Authentisierung (2FA) per E-Mail für diesen Account aktivieren enable_user: Benutzer aktivieren memorialize_account: Account deaktivieren promote_user: Benutzer befördern @@ -267,12 +267,12 @@ de: reopen_report_html: "%{name} hat die Meldung %{target} wieder geöffnet" reset_password_user_html: "%{name} hat das Passwort von %{target} zurückgesetzt" resolve_report_html: "%{name} hat die Meldung %{target} bearbeitet" - sensitive_account_html: "%{name} markierte die Medien von %{target} als NSFW" + sensitive_account_html: "%{name} hat die Medien von %{target} mit einer Inhaltswarnung versehen" silence_account_html: "%{name} hat das Konto von %{target} stummgeschaltet" suspend_account_html: "%{name} hat das Konto von %{target} verbannt" unassigned_report_html: "%{name} hat die Zuweisung der Meldung %{target} entfernt" unblock_email_account_html: "%{name} entsperrte die E-Mail-Adresse von %{target}" - unsensitive_account_html: "%{name} markierte Medien von %{target} als nicht NSFW" + unsensitive_account_html: "%{name} hob die Inhaltswarnung für Medien von %{target} auf" unsilence_account_html: "%{name} hat die Stummschaltung von %{target} aufgehoben" unsuspend_account_html: "%{name} hat die Verbannung von %{target} aufgehoben" update_announcement_html: "%{name} aktualisierte Ankündigung %{target}" @@ -339,7 +339,7 @@ de: dashboard: active_users: Aktive Benutzer interactions: Interaktionen - media_storage: Medienspeicher + media_storage: Medien new_users: Neue Benutzer opened_reports: Erstellte Meldungen pending_appeals_html: @@ -548,7 +548,7 @@ de: action_taken_by: Maßnahme ergriffen durch actions: delete_description_html: Der gemeldete Beitrag wird gelöscht und ein Strike wird aufgezeichnet, um dir bei zukünftigen Verstößen des gleichen Accounts zu helfen. - mark_as_sensitive_description_html: Die Medien in den gemeldeten Beiträgen werden als NSFW markiert und ein Strike wird notiert, um dir dabei zu helfen, härter auf zukünftige Zuwiderhandlungen desselben Kontos zu reagieren. + mark_as_sensitive_description_html: Die Medien in den gemeldeten Beiträgen werden mit einer Inhaltswarnung (NSFW) versehen und der Vorfall wird gesichert, um bei zukünftigen Verstößen desselben Kontos besser reagieren zu können. other_description_html: Weitere Optionen zur Kontrolle des Kontoverhaltens und zur Anpassung der Kommunikation mit dem gemeldeten Konto. resolve_description_html: Es wird keine Maßnahme gegen das gemeldete Konto ergriffen, es wird kein Strike verzeichnet und die Meldung wird geschlossen. silence_description_html: Das Profil wird nur für diejenigen sichtbar sein, die ihm bereits folgen oder es manuell nachschlagen, und die Reichweite wird stark begrenzt. Kann immer rückgängig gemacht werden. @@ -569,7 +569,7 @@ de: forwarded: Weitergeleitet forwarded_to: Weitergeleitet an %{domain} mark_as_resolved: Als gelöst markieren - mark_as_sensitive: Als NSFW markieren + mark_as_sensitive: Mit einer Inhaltswarnung (NSFW) versehen mark_as_unresolved: Als ungelöst markieren no_one_assigned: Niemand notes: @@ -601,8 +601,8 @@ de: roles: add_new: Rolle hinzufügen assigned_users: - one: "%{count} Benutzer" - other: "%{count} Benutzer" + one: "%{count} Account" + other: "%{count} Accounts" categories: administration: Administration devops: DevOps @@ -647,7 +647,7 @@ de: manage_taxonomies: Taxonomien verwalten manage_taxonomies_description: Ermöglicht Benutzern die Überprüfung angesagter Inhalte und das Aktualisieren der Hashtag-Einstellungen manage_user_access: Benutzerzugriff verwalten - manage_user_access_description: Erlaubt es Benutzern, die Zwei-Faktor-Authentifizierung anderer Benutzer zu deaktivieren, ihre E-Mail-Adresse zu ändern und ihr Passwort zurückzusetzen + manage_user_access_description: Erlaubt es Benutzer*innen, die Zwei-Faktor-Authentisierung (2FA) anderer Benutzer zu deaktivieren, ihre E-Mail-Adresse zu ändern und ihr Passwort zurückzusetzen manage_users: Benutzer verwalten manage_users_description: Erlaubt es Benutzern, die Details anderer Benutzer anzuzeigen und Moderationsaktionen gegen sie auszuführen manage_webhooks: Webhooks verwalten @@ -668,17 +668,24 @@ de: title: Server-Regeln settings: about: + manage_rules: Serverregeln verwalten + preamble: Schildere ausführlich, wie Dein Server betrieben, moderiert und finanziert wird. rules_hint: Es gibt einen eigenen Bereich für Regeln, an die sich Ihre Benutzer halten sollen. title: Über appearance: preamble: Passen Sie Mastodons Weboberfläche an. title: Darstellung branding: + preamble: Das Branding Ihres Servers unterscheidet ihn von anderen Servern im Netzwerk. Diese Informationen können in einer Vielzahl von Umgebungen angezeigt werden, z. B. in der Weboberfläche von Mastodon, in nativen Anwendungen, in Linkvorschauen auf anderen Websites und in Messaging-Apps und so weiter. Aus diesem Grund ist es am besten, diese Informationen klar, kurz und prägnant zu halten. title: Branding content_retention: preamble: Steuern Sie, wie nutzergenerierte Inhalte in Mastodon gespeichert werden. + title: Aufbewahrung von Inhalten discovery: follow_recommendations: Folgeempfehlungen + preamble: Das Auffinden interessanter Inhalte ist wichtig, um neue Nutzer einzubinden, die Mastodon noch nicht kennen. Bestimmen Sie, wie verschiedene Suchfunktionen auf Ihrem Server funktionieren. + profile_directory: Benutzerverzeichnis + public_timelines: Öffentliche Timelines title: Entdecken trends: Trends domain_blocks: @@ -686,6 +693,7 @@ de: disabled: An niemanden users: Für angemeldete lokale Benutzer registrations: + preamble: Lege fest, wer auf Deinem Server ein Konto erstellen darf. title: Registrierungen registrations_mode: modes: @@ -697,24 +705,37 @@ de: delete: Hochgeladene Datei löschen destroyed_msg: Upload erfolgreich gelöscht! statuses: + account: Autor + application: Anwendung back_to_account: Zurück zum Konto back_to_report: Zurück zur Seite mit den Meldungen batch: remove_from_report: Von der Meldung entfernen report: Meldung deleted: Gelöscht + favourites: Favoriten + history: Versionsverlauf + in_reply_to: Antwortet auf + language: Sprache media: title: Medien + metadata: Metadaten no_status_selected: Keine Beiträge wurden geändert, weil keine ausgewählt wurden + open: Beitrag öffnen + original_status: Ursprünglicher Beitrag + reblogs: Geteilte Beiträge + status_changed: Beitrag bearbeitet title: Beiträge des Kontos + trending: Trends + visibility: Sichtbarkeit with_media: Mit Medien strikes: actions: delete_statuses: "%{name} hat die Beiträge von %{target} entfernt" disable: "%{name} hat das Konto von %{target} eingefroren" - mark_statuses_as_sensitive: "%{name} markierte %{target}'s Beiträge als NSFW" + mark_statuses_as_sensitive: "%{name} hat die Beiträge von %{target} mit einer Inhaltswarnung (NSFW) versehen" none: "%{name} hat eine Warnung an %{target} gesendet" - sensitive: "%{name} markierte das Konto von %{target} als NSFW" + sensitive: "%{name} hat das Profil von %{target} mit einer Inhaltswarnung (NSFW) versehen" silence: "%{name} hat das Konto von %{target} eingeschränkt" suspend: "%{name} hat das Konto von %{target} verbannt" appeal_approved: Einspruch angenommen @@ -830,9 +851,9 @@ de: actions: delete_statuses: deren Beiträge zu löschen disable: deren Konto einzufrieren - mark_statuses_as_sensitive: um ihre Beiträge als NSFW zu markieren + mark_statuses_as_sensitive: um die Beiträge des Profils mit einer Inhaltswarnung (NSFW) zu versehen none: eine Warnung - sensitive: deren Konto als NSFW zu markieren + sensitive: um das Profil mit einer Inhaltswarnung (NSFW) zu versehen silence: deren Konto zu beschränken suspend: deren Konto zu sperren body: "%{target} hat etwas gegen eine Moderationsentscheidung von %{action_taken_by} von %{date}, die %{type} war. Die Person schrieb:" @@ -865,7 +886,7 @@ de: remove: Alle Aliase aufheben appearance: advanced_web_interface: Fortgeschrittene Benutzeroberfläche - advanced_web_interface_hint: Wenn du mehr aus deiner Bildschirmbreite herausholen möchtest, erlaubt es dir die fortgeschrittene Benutzeroberfläche, viele unterschiedliche Spalten auf einmal zu sehen, wie z.B. deine Startseite, Benachrichtigungen, das gesamte bekannte Netz, deine Listen und beliebige Hashtags. + advanced_web_interface_hint: Wenn du mehr aus deiner Bildschirmbreite herausholen möchtest, kannst du mit der fortgeschrittenen Benutzeroberfläche weitere Spalten hinzufügen und dadurch mehr Informationen auf einmal sehen, z. B. deine Startseite, die Mitteilungen, die vereinigte Timeline sowie beliebig viele deiner Listen und Hashtags. animations_and_accessibility: Animationen und Barrierefreiheit confirmation_dialogs: Bestätigungsfenster discovery: Entdecken @@ -873,8 +894,8 @@ de: body: Mastodon wurde von Freiwilligen übersetzt. guide_link: https://de.crowdin.com/project/mastodon guide_link_text: Jeder kann etwas dazu beitragen. - sensitive_content: NSFW - toot_layout: Beitragslayout + sensitive_content: Inhaltswarnung (NSFW) + toot_layout: Timeline-Layout application_mailer: notification_preferences: Ändere E-Mail-Einstellungen salutation: "%{name}," @@ -1017,9 +1038,9 @@ de: title_actions: delete_statuses: Post-Entfernung disable: Einfrieren des Kontos - mark_statuses_as_sensitive: Das Markieren der Beiträge als NSFW + mark_statuses_as_sensitive: Beiträge mit einer Inhaltswarnung (NSFW) versehen none: Warnung - sensitive: Das Markieren des Kontos als NSFW + sensitive: Profil mit einer Inhaltswarnung (NSFW) versehen silence: Kontobeschränkung suspend: Kontosperre your_appeal_approved: Dein Einspruch wurde angenommen @@ -1049,29 +1070,29 @@ de: archive_takeout: date: Datum download: Dein Archiv herunterladen - hint_html: Du kannst ein Archiv deiner Beiträge und hochgeladenen Medien anfragen. Die exportierten Daten werden in dem ActivityPub-Format gespeichert, welches mit jeder Software lesbar ist, die das Format unterstützt. Du kannst alle 7 Tage ein Archiv anfordern. - in_progress: Stelle dein Archiv zusammen... - request: Dein Archiv anfragen + hint_html: Du kannst ein Archiv deiner Beiträge, Listen, hochgeladenen Medien, usw. anfordern. Die exportierten Daten werden in dem ActivityPub-Format gespeichert und können mit jeder passenden Software gelesen werden. Du kannst alle 7 Tage ein Archiv anfordern. + in_progress: Dein persönliches Archiv wird erstellt... + request: Dein Archiv anfordern size: Größe - blocks: Du hast blockiert + blocks: Blockierte Accounts bookmarks: Lesezeichen csv: CSV - domain_blocks: Domainblockaden + domain_blocks: Blockierte Domains lists: Listen - mutes: Du hast stummgeschaltet + mutes: Stummgeschaltete Accounts storage: Medienspeicher featured_tags: add_new: Neu hinzufügen errors: limit: Du hast bereits die maximale Anzahl an empfohlenen Hashtags erreicht - hint_html: "Was sind empfohlene Hashtags? Sie werden in deinem öffentlichen Profil deutlich angezeigt und ermöglichen es den Menschen, deine öffentlichen Beiträge speziell unter diesen Hashtags zu durchsuchen. Sie sind ein großartiges Werkzeug, um kreative Werke oder langfristige Projekte zu verfolgen." + hint_html: "Was sind empfohlene Hashtags? Sie werden in deinem öffentlichen Profil hervorgehoben und ermöglichen es den Menschen, deine öffentlichen Beiträge speziell unter diesen Hashtags zu durchsuchen. Sie sind ein großartiges Werkzeug, um kreative Werke oder langfristige Projekte zu verfolgen." filters: contexts: account: Profile home: Startseite - notifications: Benachrichtigungen - public: Öffentliche Zeitleisten - thread: Gespräche + notifications: Mitteilungen + public: Öffentliche Timelines + thread: Unterhaltungen edit: add_keyword: Stichwort hinzufügen keywords: Stichwörter @@ -1084,7 +1105,7 @@ de: index: contexts: Filter in %{contexts} delete: Löschen - empty: Du hast keine Filter. + empty: Du hast noch keine Filter gesetzt. expires_in: Läuft ab in %{distance} expires_on: Läuft am %{date} ab keywords: @@ -1149,7 +1170,7 @@ de: domain_blocking: Domain-Blockliste following: Folgeliste muting: Stummschaltungsliste - upload: Hochladen + upload: Liste importieren invites: delete: Deaktivieren expired: Abgelaufen @@ -1161,7 +1182,7 @@ de: '604800': 1 Woche '86400': 1 Tag expires_in_prompt: Nie - generate: Generieren + generate: Einladungslink erstellen invited_by: 'Du wurdest eingeladen von:' max_uses: one: 1 mal verwendet @@ -1170,7 +1191,7 @@ de: prompt: Generiere und teile Links, um Zugang zu diesem Server zu erteilen table: expires_at: Läuft ab - uses: Verwendungen + uses: Verwendet title: Leute einladen lists: errors: @@ -1181,7 +1202,7 @@ de: password: Passwort sign_in_token: E-Mail Sicherheitscode webauthn: Sicherheitsschlüssel - description_html: Wenn du Aktivitäten siehst, die du nicht erkennst, solltest du dein Passwort ändern und die Zwei-Faktor-Authentifizierung aktivieren. + description_html: Wenn du verdächtige Aktivitäten bemerkst, die du nicht verstehst oder zuordnen kannst, solltest du dringend dein Passwort ändern und ungeachtet dessen die Zwei-Faktor-Authentisierung (2FA) aktivieren. empty: Kein Authentifizierungsverlauf verfügbar failed_sign_in_html: Fehler beim Anmeldeversuch mit %{method} von %{ip} (%{browser}) successful_sign_in_html: Erfolgreiche Anmeldung mit %{method} von %{ip} (%{browser}) @@ -1202,14 +1223,14 @@ de: move_to_self: darf nicht das aktuelles Konto sein not_found: kann nicht gefunden werden on_cooldown: Die Abklingzeit läuft gerade - followers_count: Folgende zur Zeit des Verschiebens + followers_count: Anzahl der Follower zum Zeitpunkt der Migration des Accounts incoming_migrations: Ziehe von einem anderen Konto um incoming_migrations_html: Um von einem anderen Konto zu diesem zu wechseln, musst du zuerst einen Kontoalias erstellen. - moved_msg: Dein Konto wird jetzt zu %{acct} weitergeleitet und deine Folgende werden verschoben. + moved_msg: Dein altes Profil wird jetzt zum neuen Account %{acct} weitergeleitet und deine Follower werden übertragen. not_redirecting: Dein Konto wird derzeit nicht auf ein anderes Konto weitergeleitet. on_cooldown: Du hast dein Konto vor kurzem migriert. Diese Funktion wird in %{count} Tagen wieder verfügbar sein. past_migrations: Vorherige Migrationen - proceed_with_move: Folgende verschieben + proceed_with_move: Follower übertragen redirected_msg: Dein Konto wird nun zu %{acct} weitergeleitet. redirecting_to: Dein Konto wird zu %{acct} weitergeleitet. set_redirect: Umleitung einrichten @@ -1218,7 +1239,7 @@ de: before: 'Bevor du fortfährst, lies bitte diese Hinweise sorgfältig durch:' cooldown: Nach dem Migrieren wird es eine Abklingzeit geben, in der du das Konto nicht noch einmal migrieren kannst disabled_account: Dein aktuelles Konto wird nachher nicht vollständig nutzbar sein. Du hast jedoch Zugriff auf den Datenexport sowie die Reaktivierung. - followers: Diese Aktion wird alle Folgende vom aktuellen Konto auf das neue Konto verschieben + followers: Alle Follower werden vom aktuellen zum neuen Konto übertragen only_redirect_html: Alternativ kannst du nur eine Weiterleitung auf dein Profil erstellen. other_data: Keine anderen Daten werden automatisch verschoben redirect: Das Profil deines aktuellen Kontos wird mit einer Weiterleitungsnachricht versehen und von Suchanfragen ausgeschlossen @@ -1226,8 +1247,10 @@ de: title: Moderation move_handler: carry_blocks_over_text: Dieses Benutzerkonto ist von %{acct} umgezogen, welches du blockiert hast. - carry_mutes_over_text: Dieses Benutzerkonto ist von %{acct} umgezogen, welches du stummgeschaltet hast. + carry_mutes_over_text: Das Profil wurde von %{acct} übertragen – und dieses hattest du stummgeschaltet. copy_account_note_text: 'Dieser Benutzer ist von %{acct} umgezogen, hier sind deine letzten Notizen zu diesem Benutzer:' + navigation: + toggle_menu: Menü umschalten notification_mailer: admin: report: @@ -1255,7 +1278,7 @@ de: poll: subject: Eine Umfrage von %{name} ist beendet reblog: - body: "%{name} hat deinen Beitrag geteilt:" + body: 'Deinen Beitrag hat %{name} geteilt:' subject: "%{name} hat deinen Beitrag geteilt" title: Dein Beitrag wurde geteilt status: @@ -1263,9 +1286,9 @@ de: update: subject: "%{name} bearbeitete einen Beitrag" notifications: - email_events: Ereignisse für E-Mail-Benachrichtigungen - email_events_hint: 'Wähle Ereignisse, für die du Benachrichtigungen erhalten möchtest:' - other_settings: Weitere Benachrichtigungseinstellungen + email_events: Benachrichtigungen per E-Mail + email_events_hint: Eine E-Mail erhalten, ... + other_settings: Weitere Einstellungen number: human: decimal_units: @@ -1278,10 +1301,10 @@ de: trillion: T otp_authentication: code_hint: Gib den von deiner Authentifizierungs-App generierten Code ein, um deine Anmeldung zu bestätigen - description_html: Wenn du Zwei-Faktor-Authentifizierung mit einer Authentifizierungs-App aktivierst, musst du, um dich anzumelden, im Besitz deines Smartphones sein, welches Tokens für dein Konto generiert. + description_html: Wenn du die Zwei-Faktor-Authentisierung (2FA) mit einer Authentifizierungs-App deines Smartphones aktivierst, benötigst du neben dem regulären Passwort zusätzlich auch den zeitbasierten Code der 2FA-App, um dich einloggen zu können. enable: Aktivieren - instructions_html: "Scanne diesen QR-Code in Google Authenticator oder einer ähnlichen TOTP-App auf deinem Handy. Von nun an generiert diese App Tokens, die du beim Anmelden eingeben musst." - manual_instructions: 'Wenn du den QR-Code nicht scannen kannst und ihn manuell eingeben musst, ist hier das Klartext-Geheimnis:' + instructions_html: "Scanne diesen QR-Code mit einer TOTP-App (wie dem Google Authenticator). Die 2FA-App generiert dann zeitbasierte Codes, die du beim Login zusätzlich zum regulären Passwort eingeben musst." + manual_instructions: Wenn du den QR-Code nicht einscannen kannst, sondern die Zahlenfolge manuell eingeben musst, ist hier der geheime Token für deine 2FA-App. setup: Einrichten wrong_code: Der eingegebene Code war ungültig! Sind die Serverzeit und die Gerätezeit korrekt? pagination: @@ -1302,9 +1325,9 @@ de: too_few_options: muss mindestens einen Eintrag haben too_many_options: kann nicht mehr als %{max} Einträge beinhalten preferences: - other: Weiteres + other: Erweitert posting_defaults: Standardeinstellungen für Beiträge - public_timelines: Öffentliche Zeitleisten + public_timelines: Öffentliche Timelines privacy_policy: title: Datenschutzerklärung reactions: @@ -1315,8 +1338,8 @@ de: activity: Kontoaktivität dormant: Inaktiv follow_selected_followers: Ausgewählte Follower folgen - followers: Folgende - following: Folgt + followers: Follower + following: Folge ich invited: Eingeladen last_active: Zuletzt aktiv most_recent: Neuste @@ -1376,10 +1399,10 @@ de: ios: iOS linux: Linux mac: Mac - other: unbekannte Plattform + other: unbekanntes Betriebssystem windows: Windows windows_mobile: Windows Mobile - windows_phone: Windows Handy + windows_phone: Windows Phone revoke: Schließen revoke_success: Sitzung erfolgreich geschlossen title: Sitzungen @@ -1394,18 +1417,18 @@ de: delete: Konto löschen development: Entwicklung edit_profile: Profil bearbeiten - export: Datenexport + export: Export featured_tags: Empfohlene Hashtags - import: Datenimport + import: Import import_and_export: Importieren und Exportieren migrate: Konto-Umzug notifications: Benachrichtigungen preferences: Einstellungen profile: Profil - relationships: Folgende und Gefolgte + relationships: Folge ich und Follower statuses_cleanup: Automatische Löschung strikes: Strikes - two_factor_authentication: Zwei-Faktor-Auth + two_factor_authentication: Zwei-Faktor-Authentisierung (2FA) webauthn_authentication: Sicherheitsschlüssel statuses: attached: @@ -1437,8 +1460,8 @@ de: reblog: Du kannst keine geteilten Beiträge anheften poll: total_people: - one: "%{count} Person" - other: "%{count} Personen" + one: "%{count} Stimme" + other: "%{count} Stimmen" total_votes: one: "%{count} Stimme" other: "%{count} Stimmen" @@ -1451,19 +1474,19 @@ de: title: '%{name}: "%{quote}"' visibilities: direct: Direktnachricht - private: Nur Folgende - private_long: Nur für Folgende sichtbar + private: Nur eigene Follower + private_long: Nur für deine eigenen Follower sichtbar public: Öffentlich public_long: Für alle sichtbar unlisted: Nicht gelistet - unlisted_long: Für alle sichtbar, aber nicht in öffentlichen Zeitleisten aufgelistet + unlisted_long: Für alle sichtbar, aber in öffentlichen Timelines nicht aufgelistet statuses_cleanup: enabled: Automatisch alte Beiträge löschen enabled_hint: Löscht automatisch deine Beiträge, sobald sie einen bestimmten Altersgrenzwert erreicht haben, es sei denn, sie entsprechen einer der folgenden Ausnahmen exceptions: Ausnahmen explanation: Damit Mastodon nicht durch das Löschen von Beiträgen ausgebremst wird, wartet der Server damit, bis wenig los ist. Aus diesem Grund werden deine Beiträge ggf. erst einige Zeit nach Erreichen der Altersgrenze gelöscht. ignore_favs: Favoriten ignorieren - ignore_reblogs: Boosts ignorieren + ignore_reblogs: Geteilte Beiträge ignorieren interaction_exceptions: Ausnahmen basierend auf Interaktionen interaction_exceptions_explanation: Beachte, dass es keine Garantie für das Löschen von Beiträgen gibt, wenn sie nach einem Übertritt des Favoriten- oder Boost-Schwellenwert wieder unter diesen fallen. keep_direct: Direktnachrichten behalten @@ -1488,14 +1511,14 @@ de: '63113904': 2 Jahre '7889238': 3 Monate min_age_label: Altersgrenze - min_favs: Behalte Beiträge, die öfter favorisiert wurden als - min_favs_hint: Löscht keine deiner Beiträge, die mehr als diese Anzahl an Favoriten erhalten haben. Leer lassen, um Beiträge zu löschen, unabhängig von ihrer Anzahl an Favoriten - min_reblogs: Behalte Beiträge, die öfter geteilt wurden als - min_reblogs_hint: Löscht keine deiner Beiträge, die mehr als diese Anzahl geteilt wurden. Lasse leer, um Beiträge zu löschen, unabhängig von ihrer Anzahl an Boosts + min_favs: Behalte Beiträge, die häufiger favorisiert wurden als ... + min_favs_hint: Lösche keine deiner Beiträge, die häufiger als diese Anzahl favorisiert worden sind. Lass das Feld leer, um alle Beiträge unabhängig der Anzahl der Favoriten zu löschen + min_reblogs: Behalte Beiträge, die häufiger geteilt wurden als ... + min_reblogs_hint: Lösche keine deiner Beiträge, die mehr als diese Anzahl geteilt wurden. Lasse das Feld leer, um alle Beiträge unabhängig der Anzahl der geteilten Beiträge zu löschen stream_entries: pinned: Angehefteter Beitrag reblogged: teilte - sensitive_content: NSFW + sensitive_content: Inhaltswarnung (NSFW) strikes: errors: too_late: Es ist zu spät, um gegen diese Verwarnung Einspruch zu erheben @@ -1513,15 +1536,15 @@ de: two_factor_authentication: add: Hinzufügen disable: Deaktivieren - disabled_success: Zwei-Faktor-Authentifizierung erfolgreich deaktiviert + disabled_success: Zwei-Faktor-Authentisierung (2FA) erfolgreich deaktiviert edit: Bearbeiten - enabled: Zwei-Faktor-Authentisierung ist aktiviert - enabled_success: Zwei-Faktor-Authentisierung erfolgreich aktiviert - generate_recovery_codes: Wiederherstellungscodes generieren - lost_recovery_codes: Wiederherstellungscodes erlauben es dir, wieder Zugang zu deinem Konto zu erlangen, falls du dein Telefon verlieren solltest. Wenn du deine Wiederherstellungscodes verloren hast, kannst du sie hier neu generieren. Deine alten Wiederherstellungscodes werden damit ungültig gemacht. - methods: Zwei-Faktor-Methoden + enabled: Zwei-Faktor-Authentisierung (2FA) ist aktiviert + enabled_success: Zwei-Faktor-Authentisierung (2FA) erfolgreich aktiviert + generate_recovery_codes: Wiederherstellungscodes erstellen + lost_recovery_codes: Wiederherstellungscodes erlauben es dir, wieder Zugang zu deinem Konto zu erlangen, falls du keinen Zugriff mehr auf die Zwei-Faktor-Authentisierung (2FA) oder den Sicherheitsschlüssel hast. Solltest Du diese Wiederherstellungscodes verloren haben, kannst du sie hier neu generieren. Deine alten, bereits erstellten Wiederherstellungscodes werden dadurch ungültig. + methods: Methoden der Zwei-Faktor-Authentisierung (2FA) otp: Authentifizierungs-App - recovery_codes: Wiederherstellungs-Codes sichern + recovery_codes: Wiederherstellungscodes sichern recovery_codes_regenerated: Wiederherstellungscodes erfolgreich neu generiert recovery_instructions_html: Wenn du den Zugang zu deinem Telefon verlieren solltest, kannst du einen untenstehenden Wiederherstellungscode benutzen, um wieder auf dein Konto zugreifen zu können. Bewahre die Wiederherstellungscodes gut auf. Du könntest sie beispielsweise ausdrucken und bei deinen restlichen wichtigen Dokumenten aufbewahren. webauthn: Sicherheitsschlüssel @@ -1537,13 +1560,13 @@ de: title: Einspruch abgelehnt backup_ready: explanation: Du hast ein vollständiges Backup von deinem Mastodon-Konto angefragt. Es kann jetzt heruntergeladen werden! - subject: Dein Archiv ist bereit zum Download + subject: Dein persönliches Archiv ist bereit zum Download title: Archiv-Download suspicious_sign_in: change_password: dein Passwort zu ändern details: 'Hier sind die Details des Versuchs:' explanation: Wir haben eine Anmeldung zu deinem Konto von einer neuen IP-Adresse festgestellt. - further_actions_html: Wenn du das nicht warst, empfehlen wir dir, %{action} und die Zwei-Faktor-Authentifizierung zu aktivieren, um dein Konto sicher zu halten. + further_actions_html: Wenn du das nicht warst, empfehlen wir dir schnellstmöglich, %{action} und die Zwei-Faktor-Authentisierung (2FA) für deinen Account zu aktivieren, um dein Konto abzusichern. subject: Es wurde auf dein Konto von einer neuen IP-Adresse zugegriffen title: Eine neue Anmeldung warning: @@ -1551,11 +1574,11 @@ de: appeal_description: Wenn du glaubst, dass es sich um einen Fehler handelt, kannst du einen Einspruch an die Administration von %{instance} senden. categories: spam: Spam - violation: Inhalt verletzt die folgenden Community-Richtlinien + violation: Inhalt verstößt gegen die folgenden Community-Richtlinien explanation: delete_statuses: Einige deiner Beiträge wurden als Verstoß gegen eine oder mehrere Communityrichtlinien erkannt und von den Moderator_innen von %{instance} entfernt. disable: Du kannst dein Konto nicht mehr verwenden, aber dein Profil und andere Daten bleiben unversehrt. Du kannst ein Backup deiner Daten anfordern, die Kontoeinstellungen ändern oder dein Konto löschen. - mark_statuses_as_sensitive: Einige deiner Beiträge wurden von den Moderator_innen von %{instance} als NSFW markiert. Das bedeutet, dass die Nutzer die Medien in den Beiträgen antippen müssen, bevor eine Vorschau angezeigt wird. Du kannst Medien in Zukunft als NSFW markieren, wenn du Beiträge verfasst. + mark_statuses_as_sensitive: Ein oder mehrere Deiner Beiträge wurden von den Moderator*innen der Instanz %{instance} mit einer Inhaltswarnung (NSFW) versehen. Das bedeutet, dass Besucher*innen diese Medien in den Beiträgen zunächst antippen müssen, um die Vorschau anzuzeigen. Beim Verfassen der nächsten Beiträge kannst du auch selbst eine Inhaltswarnung für hochgeladene Medien festlegen. sensitive: Von nun an werden alle deine hochgeladenen Mediendateien als sensibel markiert und hinter einer Warnung versteckt. silence: Solange dein Konto limitiert ist, können nur die Leute, die dir bereits folgen, deine Beiträge auf dem Server sehen, und es könnte sein, dass du von verschiedenen öffentlichen Listungen ausgeschlossen wirst. Andererseits können andere dir manuell folgen. suspend: Du kannst dein Konto nicht mehr verwenden, und dein Profil und andere Daten sind nicht mehr verfügbar. Du kannst dich immer noch anmelden, um ein Backup deiner Daten anzufordern, bis die Daten innerhalb von 30 Tagen vollständig gelöscht wurden. Allerdings werden wir einige Daten speichern, um zu verhindern, dass du die Sperrung umgehst. @@ -1564,17 +1587,17 @@ de: subject: delete_statuses: Deine Beiträge auf %{acct} wurden entfernt disable: Dein Konto %{acct} wurde eingefroren - mark_statuses_as_sensitive: Deine Beiträge auf %{acct} wurden als NSFW markiert + mark_statuses_as_sensitive: Die Beiträge deines Profils %{acct} wurden mit einer Inhaltswarnung (NSFW) versehen none: Warnung für %{acct} - sensitive: Deine Beiträge auf %{acct} werden von nun an als NSFW markiert + sensitive: Die Beiträge deines Profils %{acct} werden künftig mit einer Inhaltswarnung (NSFW) versehen silence: Dein Konto %{acct} wurde limitiert suspend: Dein Konto %{acct} wurde gesperrt title: delete_statuses: Beiträge entfernt disable: Konto eingefroren - mark_statuses_as_sensitive: Als NSFW markierte Beiträge + mark_statuses_as_sensitive: Mit einer Inhaltswarnung (NSFW) versehene Beiträge none: Warnung - sensitive: Als NSFW markiertes Konto + sensitive: Profil mit einer Inhaltswarnung (NSFW) versehen silence: Konto limitiert suspend: Konto gesperrt welcome: @@ -1582,14 +1605,14 @@ de: edit_profile_step: Du kannst dein Profil anpassen, indem du einen Avatar oder ein Titelbild hochlädst, deinen Anzeigenamen änderst und viel mehr. Du kannst optional einstellen, ob du Accounts, die dir folgen wollen, akzeptieren musst, bevor sie dies können. explanation: Hier sind ein paar Tipps, um loszulegen final_action: Fang an zu posten - final_step: 'Fang an zu posten! Selbst ohne Follower werden deine öffentlichen Beiträge von anderen gesehen, zum Beispiel auf der lokalen Zeitleiste oder in Hashtags. Du kannst dich unter dem Hashtag #introductions vorstellen, wenn du magst.' + final_step: 'Fang jetzt an zu posten! Selbst ohne Follower werden deine öffentlichen Beiträge von anderen gesehen, zum Beispiel in der lokalen Timeline oder über die Hashtags. Möglicherweise möchtest du dich allen mit dem Hashtag #introductions vorstellen?' full_handle: Dein vollständiger Benutzername full_handle_hint: Dies ist, was du deinen Freunden sagen kannst, damit sie dich anschreiben oder dir von einem anderen Server folgen können. subject: Willkommen bei Mastodon title: Willkommen an Bord, %{name}! users: follow_limit_reached: Du kannst nicht mehr als %{limit} Leuten folgen - invalid_otp_token: Ungültiger Zwei-Faktor-Authentisierungs-Code + invalid_otp_token: Ungültiger Code der Zwei-Faktor-Authentisierung (2FA) otp_lost_help_html: Wenn Du beides nicht mehr weißt, melde Dich bei uns unter der E-Mailadresse %{email} seamless_external_login: Du bist angemeldet über einen Drittanbieter-Dienst, weswegen Passwort- und E-Maileinstellungen nicht verfügbar sind. signed_in_as: 'Angemeldet als:' @@ -1611,5 +1634,5 @@ de: nickname_hint: Gib den Spitznamen deines neuen Sicherheitsschlüssels ein not_enabled: Du hast WebAuthn noch nicht aktiviert not_supported: Dieser Browser unterstützt keine Sicherheitsschlüssel - otp_required: Um Sicherheitsschlüssel zu verwenden, aktiviere zuerst die Zwei-Faktor-Authentifizierung. + otp_required: Um Sicherheitsschlüssel zu verwenden, aktiviere zunächst die Zwei-Faktor-Authentisierung (2FA). registered_on: Registriert am %{date} diff --git a/config/locales/devise.ig.yml b/config/locales/devise.ig.yml new file mode 100644 index 000000000..7c264f0d7 --- /dev/null +++ b/config/locales/devise.ig.yml @@ -0,0 +1 @@ +ig: diff --git a/config/locales/devise.my.yml b/config/locales/devise.my.yml new file mode 100644 index 000000000..5e1fc6bee --- /dev/null +++ b/config/locales/devise.my.yml @@ -0,0 +1 @@ +my: diff --git a/config/locales/devise.zh-TW.yml b/config/locales/devise.zh-TW.yml index 0d9e6a56a..baf995812 100644 --- a/config/locales/devise.zh-TW.yml +++ b/config/locales/devise.zh-TW.yml @@ -21,7 +21,7 @@ zh-TW: action: 驗證電子信箱地址 action_with_app: 確認並返回 %{app} explanation: 您已經在 %{host} 上以此電子信箱地址建立了一支帳號。您距離啟用它只剩一點之遙了。若這不是您,請忽略此信件。 - explanation_when_pending: 您使用此電子信箱地址申請了 %{host} 的邀請。當您確認電子信箱後我們將審核您的申請。您可以登入以改變您的細節或刪除您的帳號,但直到您的帳戶被核准之前,您無法操作大部分的功能。若您的申請遭拒絕,您的資料將被移除而不必做後續動作。如果這不是您,請忽略此信件。 + explanation_when_pending: 您使用此電子信箱地址申請了 %{host} 的邀請。當您確認電子信箱後我們將審核您的申請。您可以登入以改變您的細節或刪除您的帳號,但直到您的帳號被核准之前,您無法操作大部分的功能。若您的申請遭拒絕,您的資料將被移除而不必做後續動作。如果這不是您,請忽略此信件。 extra_html: 同時也請看看伺服器規則服務條款。 subject: Mastodon:%{instance} 確認說明 title: 驗證電子信箱地址 @@ -47,17 +47,17 @@ zh-TW: subject: Mastodon:重設密碼指引 title: 重設密碼 two_factor_disabled: - explanation: 您帳號的兩步驟驗證已停用。現在只使用電子信箱及密碼登入。 - subject: Mastodon:已停用兩步驟驗證 + explanation: 您帳號的兩階段驗證已停用。現在只使用電子信箱及密碼登入。 + subject: Mastodon:已停用兩階段驗證 title: 已停用 2FA two_factor_enabled: - explanation: 已對您的帳號啟用兩步驟驗證。登入時將需要配對之 TOTP 應用程式所產生的 Token。 - subject: Mastodon:已啟用兩步驟驗證 + explanation: 已對您的帳號啟用兩階段驗證。登入時將需要配對之 TOTP 應用程式所產生之 Token。 + subject: Mastodon:已啟用兩階段驗證 title: 已啟用 2FA two_factor_recovery_codes_changed: - explanation: 上一次的復原碼已經失效,且已產生新的。 - subject: Mastodon:兩步驟驗證復原碼已經重新產生 - title: 2FA 復原碼已變更 + explanation: 之前的備用驗證碼已經失效,且已產生新的。 + subject: Mastodon:兩階段驗證備用驗證碼已經重新產生 + title: 2FA 備用驗證碼已變更 unlock_instructions: subject: Mastodon:解鎖指引 webauthn_credential: @@ -70,16 +70,16 @@ zh-TW: subject: Mastodon:安全密鑰已移除 title: 您的一支安全密鑰已經被移除 webauthn_disabled: - explanation: 您的帳戶並沒有啟用安全密鑰認證方式。只能以 TOTP app 產生地成對 token 登入。 + explanation: 您的帳號並沒有啟用安全密鑰認證方式。只能以 TOTP app 產生地成對 token 登入。 subject: Mastodon:安全密鑰認證方式已關閉 title: 已關閉安全密鑰 webauthn_enabled: - explanation: 您的帳戶已啟用安全密鑰認證。您可以使用安全密鑰登入了。 + explanation: 您的帳號已啟用安全密鑰認證。您可以使用安全密鑰登入了。 subject: Mastodon:已啟用安全密鑰認證 title: 已啟用安全密鑰 omniauth_callbacks: failure: 無法透過 %{kind} 認證是否為您,因為「%{reason}」。 - success: 成功透過 %{kind} 帳戶登入。 + success: 成功透過 %{kind} 帳號登入。 passwords: no_token: 您必須透過密碼重設信件才能存取此頁面。若確實如此,請確定輸入的網址是完整的。 send_instructions: 若電子信箱地址存在於我們的資料庫,幾分鐘後您將在信箱中收到密碼復原連結。若未收到請檢查垃圾郵件資料夾。 @@ -87,20 +87,20 @@ zh-TW: updated: 您的密碼已成功變更,現在已經登入。 updated_not_active: 您的密碼已成功變更。 registrations: - destroyed: 再見!您的帳戶已成功取消,期待再相逢。 + destroyed: 再見!您的帳號已成功取消,期待再相逢。 signed_up: 歡迎!您已成功註冊。 - signed_up_but_inactive: 您已註冊成功,但由於您的帳戶尚未啟用,我們暫時無法讓您登入。 - signed_up_but_locked: 您已註冊成功,但由於您的帳戶已被鎖定,我們無法讓您登入。 + signed_up_but_inactive: 您已註冊成功,但由於您的帳號尚未啟用,我們暫時無法讓您登入。 + signed_up_but_locked: 您已註冊成功,但由於您的帳號已被鎖定,我們無法讓您登入。 signed_up_but_pending: 包含確認連結的訊息已寄到您的電子信箱。按下此連結後我們將審核您的申請。核准後將通知您。 - signed_up_but_unconfirmed: 包含確認連結的訊息已寄到您的電子信箱。請前往連結以啟用帳戶。若未收到請檢查垃圾郵件資料夾。 - update_needs_confirmation: 已成功更新您的帳戶,但仍需驗證您的新信箱。請檢查電子信箱並前往確認連結來確認新信箱地址。若未收到請檢查垃圾郵件資料夾。 - updated: 您的帳戶已成功更新。 + signed_up_but_unconfirmed: 包含確認連結的訊息已寄到您的電子信箱。請前往連結以啟用帳號。若未收到請檢查垃圾郵件資料夾。 + update_needs_confirmation: 已成功更新您的帳號,但仍需驗證您的新信箱。請檢查電子信箱並前往確認連結來確認新信箱位址。若未收到請檢查垃圾郵件資料夾。 + updated: 您的帳號已成功更新。 sessions: already_signed_out: 已成功登出。 signed_in: 已成功登入。 signed_out: 已成功登出。 unlocks: - send_instructions: 幾分鐘後您將收到解鎖帳戶的指引信件。若未收到請檢查垃圾郵件資料夾。 + send_instructions: 幾分鐘後您將收到解鎖帳號的指引信件。若未收到請檢查垃圾郵件資料夾。 send_paranoid_instructions: 若此帳號存在,您將在幾分鐘後收到解鎖指引信件。若未收到請檢查垃圾郵件資料夾。 unlocked: 已解鎖您的帳號,請登入繼續。 errors: diff --git a/config/locales/doorkeeper.de.yml b/config/locales/doorkeeper.de.yml index e4668a50f..ac12cff21 100644 --- a/config/locales/doorkeeper.de.yml +++ b/config/locales/doorkeeper.de.yml @@ -72,7 +72,7 @@ de: revoke: Bist du sicher? index: authorized_at: Autorisiert am %{date} - description_html: Dies sind Anwendungen, die über die Programmierschnittstelle auf dein Konto zugreifen können. Wenn es Anwendungen gibt, die du hier nicht erkennst, oder wenn eine Anwendung sich falsch bzw. verdächtig verhält, kannst du den Zugriff widerrufen. + description_html: Dies sind Anwendungen, die über die Programmierschnittstelle (API) dieser Mastodon-Instanz auf dein Konto zugreifen können. Sollten hier Apps aufgeführt sein, die du nicht erkennst oder die sich verdächtig verhalten, solltest du den Zugriff schnellstmöglich widerrufen. last_used_at: Zuletzt verwendet am %{date} never_used: Nie verwendet scopes: Berechtigungen @@ -130,7 +130,7 @@ de: favourites: Favoriten filters: Filter follow: Beziehungen - follows: Folgt + follows: Folge ich lists: Listen media: Medienanhänge mutes: Stummschaltungen diff --git a/config/locales/doorkeeper.ig.yml b/config/locales/doorkeeper.ig.yml new file mode 100644 index 000000000..7c264f0d7 --- /dev/null +++ b/config/locales/doorkeeper.ig.yml @@ -0,0 +1 @@ +ig: diff --git a/config/locales/doorkeeper.my.yml b/config/locales/doorkeeper.my.yml new file mode 100644 index 000000000..5e1fc6bee --- /dev/null +++ b/config/locales/doorkeeper.my.yml @@ -0,0 +1 @@ +my: diff --git a/config/locales/doorkeeper.nl.yml b/config/locales/doorkeeper.nl.yml index 76f3b88c3..ac9e97b55 100644 --- a/config/locales/doorkeeper.nl.yml +++ b/config/locales/doorkeeper.nl.yml @@ -72,6 +72,7 @@ nl: revoke: Weet je het zeker? index: authorized_at: Toestemming verleent op %{date} + description_html: Dit zijn toepassingen die toegang hebben tot uw account via de API. Als er toepassingen tussen staan die u niet herkent of een toepassing zich misdraagt, kunt u de toegang van de toepassing intrekken. last_used_at: Voor het laatst gebruikt op %{date} never_used: Nooit gebruikt scopes: Toestemmingen diff --git a/config/locales/doorkeeper.uk.yml b/config/locales/doorkeeper.uk.yml index 79b09cdb2..563d20e32 100644 --- a/config/locales/doorkeeper.uk.yml +++ b/config/locales/doorkeeper.uk.yml @@ -48,7 +48,7 @@ uk: title: Новий додаток show: actions: Дії - application_id: ID додатку + application_id: Ключ застосунку callback_urls: URL зворотніх викликів scopes: Дозволи secret: Таємниця @@ -84,7 +84,7 @@ uk: credential_flow_not_configured: Не вдалося перевірити парольні дані клієнту через неналаштований параметр Doorkeeper.configure.resource_owner_from_credentials. invalid_client: Не вдалося аутентифікувати клієнта (клієнт невідомий, аутентифікацію клієнта не увімкнено, або непідтримуваний метод аутентифікації). invalid_grant: Наданий санкціонований дозвіл недійсний, прострочений, анульований, не відповідає URI перенаправлення, що використовується в запиті авторизації, або був виданий іншому клієнту. - invalid_redirect_uri: Включений URI перенаправлення не є дійсним. + invalid_redirect_uri: Включений uri перенаправлення не є дійсним. invalid_request: missing_param: 'Відсутній обов''язковий параметр: %{value}.' request_not_authorized: Запит повинен бути авторизований. Необхідний параметр запиту авторизації відсутній або хибний. diff --git a/config/locales/doorkeeper.zh-TW.yml b/config/locales/doorkeeper.zh-TW.yml index e8a699d85..07b617192 100644 --- a/config/locales/doorkeeper.zh-TW.yml +++ b/config/locales/doorkeeper.zh-TW.yml @@ -31,14 +31,14 @@ zh-TW: form: error: 唉呦!請看看表單以排查錯誤 help: - native_redirect_uri: 請使用 %{native_redirect_uri} 作本機測試 + native_redirect_uri: 請使用 %{native_redirect_uri} 作本站測試 redirect_uri: 每行輸入一個 URI scopes: 請用半形空格分開範圍。空白表示使用預設的範圍。 index: application: 應用程式 callback_url: 回傳網址 delete: 刪除 - empty: 您沒有安裝 App。 + empty: 您沒有安裝應用程式。 name: 名稱 new: 新增應用程式 scopes: 範圍 @@ -48,10 +48,10 @@ zh-TW: title: 新增應用程式 show: actions: 動作 - application_id: 客戶端金鑰 + application_id: 用戶端金鑰 (client key) callback_urls: 回傳網址 scopes: 範圍 - secret: 客戶端密碼 + secret: 用戶端密碼 (client secret) title: 應用程式︰%{name} authorizations: buttons: @@ -67,9 +67,9 @@ zh-TW: title: 複製此授權碼並貼上到應用程式中。 authorized_applications: buttons: - revoke: 撤銷 + revoke: 註銷 confirmations: - revoke: 確定撤銷? + revoke: 您確定嗎? index: authorized_at: 於 %{date} 授權 description_html: 這些應用程式能透過 API 存取您的帳號。若有您不認得之應用程式,或應用程式行為異常,您可以於此註銷其存取權限。 @@ -82,8 +82,8 @@ zh-TW: messages: access_denied: 資源持有者或授權伺服器拒絕請求。 credential_flow_not_configured: 因為 Doorkeeper.configure.resource_owner_from_credentials 未設定,所以資源持有者密碼認證程序失敗。 - invalid_client: 客戶端驗證失敗,可能是因為未知的客戶端程式、未包含客戶端驗證、或使用了不支援的認證方法。 - invalid_grant: 授權申請不正確、逾期、已被取消、與授權請求內的重新導向 URI 不符、或屬於別的客戶端程式。 + invalid_client: 用戶端驗證失敗,可能是因為未知的用戶端程式、未包含用戶端驗證、或使用了不支援的認證方法。 + invalid_grant: 授權申請不正確、逾期、已被註銷、與授權請求內的重新導向 URI 不符、或屬於別的用戶端程式。 invalid_redirect_uri: 包含的重新導向 URI 是不正確的。 invalid_request: missing_param: 缺少必要的參數:%{value}. @@ -98,7 +98,7 @@ zh-TW: resource_owner_authenticator_not_configured: 因為未設定 Doorkeeper.configure.resource_owner_authenticator,所以資源持有者尋找失敗。 server_error: 認證伺服器發生未知錯誤。 temporarily_unavailable: 認證伺服器暫時無法使用。 - unauthorized_client: 客戶端程式沒有權限使用此方法請求。 + unauthorized_client: 用戶端程式沒有權限使用此方法請求。 unsupported_grant_type: 認證伺服器不支援這個授權類型。 unsupported_response_type: 認證伺服器不支援這個回應類型。 flash: @@ -111,7 +111,7 @@ zh-TW: notice: 已更新應用程式。 authorized_applications: destroy: - notice: 已撤銷應用程式。 + notice: 已註銷應用程式。 grouped_scopes: access: read: 唯讀權限 @@ -148,8 +148,8 @@ zh-TW: title: 需要 OAuth 授權 scopes: admin:read: 讀取伺服器的所有資料 - admin:read:accounts: 讀取所有帳號的敏感資訊 - admin:read:reports: 讀取所有回報 / 被回報之帳號的敏感資訊 + admin:read:accounts: 讀取所有帳號的敏感內容 + admin:read:reports: 讀取所有回報 / 被回報之帳號的敏感內容 admin:write: 修改伺服器的所有資料 admin:write:accounts: 對帳號進行仲裁管理動作 admin:write:reports: 對報告進行仲裁管理動作 @@ -177,7 +177,7 @@ zh-TW: write:favourites: 加到最愛 write:filters: 建立過濾條件 write:follows: 跟隨其他人 - write:lists: 建立名單 + write:lists: 建立列表 write:media: 上傳媒體檔案 write:mutes: 靜音使用者及對話 write:notifications: 清除您的通知 diff --git a/config/locales/el.yml b/config/locales/el.yml index f35fa9b77..c5be24815 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -824,6 +824,8 @@ el: carry_blocks_over_text: Ο/Η χρήστης μετακόμισε από το %{acct}, που είχες αποκλείσει. carry_mutes_over_text: Ο/Η χρήστης μετακόμισε από το %{acct}, που είχες αποσιωπήσει. copy_account_note_text: 'Ο/Η χρήστης μετακόμισε από το %{acct}, ορίστε οι προηγούμενες σημειώσεις σου:' + navigation: + toggle_menu: Εμφάνιση/Απόκρυψη μενού notification_mailer: admin: report: diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 63a1258e6..1dbe88ec2 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -1249,6 +1249,8 @@ es-AR: carry_blocks_over_text: Este usuario se mudó desde %{acct}, que habías bloqueado. carry_mutes_over_text: Este usuario se mudó desde %{acct}, que habías silenciado. copy_account_note_text: 'Este usuario se mudó desde %{acct}, acá están tus notas previas sobre él/ella:' + navigation: + toggle_menu: Cambiar menú notification_mailer: admin: report: diff --git a/config/locales/es.yml b/config/locales/es.yml index d0a2d970c..00a031938 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -1236,6 +1236,8 @@ es: carry_blocks_over_text: Este usuario se mudó desde %{acct}, que habías bloqueado. carry_mutes_over_text: Este usuario se mudó desde %{acct}, que habías silenciado. copy_account_note_text: 'Este usuario se mudó desde %{acct}, aquí estaban tus notas anteriores sobre él:' + navigation: + toggle_menu: Alternar menú notification_mailer: admin: report: diff --git a/config/locales/eu.yml b/config/locales/eu.yml index d71a10dfa..bec8e5c50 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -5,6 +5,7 @@ eu: contact_missing: Ezarri gabe contact_unavailable: E/E hosted_on: Mastodon %{domain} domeinuan ostatatua + title: Honi buruz accounts: follow: Jarraitu followers: @@ -37,11 +38,17 @@ eu: avatar: Abatarra by_domain: Domeinua change_email: + changed_msg: Eposta kontua ongi aldatu da! current_email: Uneko e-mail helbidea label: Aldatu e-mail helbidea new_email: E-mail berria submit: Aldatu e-mail helbidea title: Aldatu %{username}(r)en e-mail helbidea + change_role: + changed_msg: Rola ondo aldatu da! + label: Aldatu rola + no_role: Rolik ez + title: Aldatu %{username} erabiltzailearen rola confirm: Berretsi confirmed: Berretsita confirming: Berresten @@ -85,13 +92,15 @@ eu: active: Aktiboa all: Denak pending: Zain + silenced: Mugatua suspended: Kanporatua title: Moderazioa moderation_notes: Moderazio oharrak most_recent_activity: Azken jarduera most_recent_ip: Azken IP-a - no_account_selected: Ez da konturik aldatu ez delako bata bera hautatu + no_account_selected: Ez da konturik aldatu ez delako bat ere hautatu no_limits_imposed: Ez da mugarik ezarri + no_role_assigned: Ez du rolik esleituta not_subscribed: Harpidetu gabe pending: Berrikusketa egiteke perform_full_suspension: Kanporatu @@ -118,6 +127,7 @@ eu: reset: Berrezarri reset_password: Berrezarri pasahitza resubscribe: Berriro harpidetu + role: Rola search: Bilatu search_same_email_domain: E-mail domeinu bera duten beste erabiltzailean search_same_ip: IP bera duten beste erabiltzaileak @@ -160,17 +170,21 @@ eu: approve_user: Onartu erabiltzailea assigned_to_self_report: Esleitu salaketa change_email_user: Aldatu erabiltzailearen e-maila + change_role_user: Aldatu erabiltzailearen rola confirm_user: Berretsi erabiltzailea create_account_warning: Sortu abisua create_announcement: Sortu iragarpena + create_canonical_email_block: Sortu eposta blokeoa create_custom_emoji: Sortu emoji pertsonalizatua create_domain_allow: Sortu domeinu baimena create_domain_block: Sortu domeinu blokeoa create_email_domain_block: Sortu e-mail domeinu blokeoa create_ip_block: Sortu IP araua create_unavailable_domain: Sortu eskuragarri ez dagoen domeinua + create_user_role: Sortu rola demote_user: Jaitsi erabiltzailearen maila destroy_announcement: Ezabatu iragarpena + destroy_canonical_email_block: Ezabatu eposta blokeoa destroy_custom_emoji: Ezabatu emoji pertsonalizatua destroy_domain_allow: Ezabatu domeinu baimena destroy_domain_block: Ezabatu domeinu blokeoa @@ -179,6 +193,7 @@ eu: destroy_ip_block: Ezabatu IP araua destroy_status: Ezabatu bidalketa destroy_unavailable_domain: Ezabatu eskuragarri ez dagoen domeinua + destroy_user_role: Ezabatu rola disable_2fa_user: Desgaitu 2FA disable_custom_emoji: Desgaitu emoji pertsonalizatua disable_sign_in_token_auth_user: Desgaitu e-posta token autentifikazioa erabiltzailearentzat @@ -205,23 +220,30 @@ eu: update_announcement: Eguneratu iragarpena update_custom_emoji: Eguneratu emoji pertsonalizatua update_domain_block: Eguneratu domeinu-blokeoa + update_ip_block: Eguneratu IP araua update_status: Eguneratu bidalketa + update_user_role: Eguneratu rola actions: approve_appeal_html: "%{name} erabiltzaileak %{target} erabiltzailearen moderazio erabakiaren apelazioa onartu du" approve_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen izen-ematea onartu du" assigned_to_self_report_html: "%{name} erabiltzaileak %{target} salaketa bere buruari esleitu dio" change_email_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen e-posta helbidea aldatu du" + change_role_user_html: "%{name} erabiltzaileak %{target} kontuaren rola aldatu du" confirm_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen e-posta helbidea berretsi du" create_account_warning_html: "%{name} erabiltzaileak abisua bidali dio %{target} erabiltzaileari" create_announcement_html: "%{name} erabiltzaileak %{target} iragarpen berria sortu du" + create_canonical_email_block_html: "%{name} erabiltzaileak %{target} hash-a duen helbide elektronikoa blokeatu du" create_custom_emoji_html: "%{name} erabiltzaileak %{target} emoji berria kargatu du" create_domain_allow_html: "%{name} erabiltzaileak %{target} domeinuarekin federazioa onartu du" create_domain_block_html: "%{name} erabiltzaileak %{target} domeinua blokeatu du" create_email_domain_block_html: "%{name} erabiltzaileak %{target} e-posta helbideen domeinua blokeatu du" create_ip_block_html: "%{name} kontuak %{target} IParen araua sortu du" create_unavailable_domain_html: "%{name}(e)k %{target} domeinurako banaketa gelditu du" + create_user_role_html: "%{name} erabiltzaileak %{target} rola sortu du" demote_user_html: "%{name} erabiltzaileak %{target} erabiltzailea mailaz jaitsi du" destroy_announcement_html: "%{name} erabiltzaileak %{target} iragarpena ezabatu du" + destroy_canonical_email_block_html: "%{name} erabiltzaileak %{target} hash-a duen helbide elektronikoa desblokeatu du" + destroy_custom_emoji_html: "%{name} erabiltzaileak %{target} emoji-a ezabatu du" destroy_domain_allow_html: "%{name} erabiltzaileak %{target} domeinuarekin federatzea debekatu du" destroy_domain_block_html: "%{name} erabiltzaileak %{target} domeinua desblokeatu du" destroy_email_domain_block_html: "%{name} erabiltzaileak %{target} e-posta helbideen domeinua desblokeatu du" @@ -229,6 +251,7 @@ eu: destroy_ip_block_html: "%{name} erabiltzaileak %{target} IParen araua ezabatu du" destroy_status_html: "%{name} erabiltzaileak %{target} erabiltzailearen bidalketa kendu du" destroy_unavailable_domain_html: "%{name}(e)k %{target} domeinurako banaketari berrekin dio" + destroy_user_role_html: "%{name} erabiltzaileak %{target} rola ezabatu du" disable_2fa_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen bi faktoreko autentifikazioa desgaitu du" disable_custom_emoji_html: "%{name} erabiltzaileak %{target} emoji-a desgaitu du" disable_sign_in_token_auth_user_html: "%{name} erabiltzaileak e-posta token autentifikazioa desgaitu du %{target} helburuan" @@ -255,7 +278,9 @@ eu: update_announcement_html: "%{name} erabiltzaileak %{target} iragarpena eguneratu du" update_custom_emoji_html: "%{name} erabiltzaileak %{target} emoji-a eguneratu du" update_domain_block_html: "%{name} erabiltzaileak %{target} domeinu-blokeoa eguneratu du" + update_ip_block_html: "%{name} erabiltzaileak %{target} IParen araua aldatu du" update_status_html: "%{name} erabiltzaileak %{target} erabiltzailearen bidalketa eguneratu du" + update_user_role_html: "%{name} erabiltzaileak %{target} rola aldatu du" empty: Ez da egunkaririk aurkitu. filter_by_action: Iragazi ekintzen arabera filter_by_user: Iragazi erabiltzaileen arabera @@ -299,6 +324,7 @@ eu: listed: Zerrendatua new: title: Gehitu emoji pertsonal berria + no_emoji_selected: Ez da emojirik aldatu ez delako bat ere hautatu not_permitted: Ez daukazu ekintza hau burutzeko baimenik overwrite: Gainidatzi shortcode: Laster-kodea @@ -339,6 +365,7 @@ eu: destroyed_msg: Domeinuaren blokeoa desegin da domain: Domeinua edit: Editatu domeinu-blokeoa + existing_domain_block: Aurretik muga zorrotzagoak ezarriak dituzu %{name} domeinuan. existing_domain_block_html: '%{name} domeinuan muga zorrotzagoak ezarri dituzu jada, aurretik desblokeatu beharko duzu.' new: create: Sortu blokeoa @@ -371,8 +398,11 @@ eu: domain: Domeinua new: create: Gehitu domeinua + resolve: Ebatzi domeinua title: Sarrera berria e-mail zerrenda beltzean - no_email_domain_block_selected: Ez da eposta domeinu blokeorik aldatu ez delako bat bera ere hautatu + no_email_domain_block_selected: Ez da eposta domeinu blokeorik aldatu ez delako bat ere hautatu + resolved_dns_records_hint_html: Domeinu-izena ondorengo MX domeinuetara ebazten da, zeinek eposta onartzeko ardura duten. MX domeinu bat blokeatzeak MX domeinu hori erabiltzen duen edozein helbide elektronikotatik izena-ematea blokeatzen du, baita ikusgai dagoen domeinu-izena beste bat bada ere. Kontuz ibili eposta hornitzaile nagusiak blokeatu gabe. + resolved_through_html: "%{domain} domeinuaren bidez ebatzia" title: E-mail zerrenda beltza follow_recommendations: description_html: "Jarraitzeko gomendioek erabiltzaile berriei eduki interesgarria azkar aurkitzen laguntzen diete. Erabiltzaile batek jarraitzeko gomendio pertsonalizatuak jasotzeko adina interakzio izan ez duenean, kontu hauek gomendatzen zaizkio. Egunero birkalkulatzen dira hizkuntza bakoitzerako, azken aldian parte-hartze handiena izan duten eta jarraitzaile lokal gehien dituzten kontuak nahasiz." @@ -419,6 +449,7 @@ eu: delivery: all: Guztiak clear: Garbitu banaketa erroreak + failing: Huts egiten du restart: Berrabiarazi banaketa stop: Gelditu banaketa unavailable: Eskuraezina @@ -466,7 +497,7 @@ eu: '94670856': 3 urte new: title: Sortu IP arau berria - no_ip_block_selected: Ez da IP araurik aldatu, ez delako batere hautatu + no_ip_block_selected: Ez da IP araurik aldatu, ez delako bat ere hautatu title: IP arauak relationships: title: "%{acct}(e)ren erlazioak" @@ -499,6 +530,7 @@ eu: action_taken_by: Neurrien hartzailea actions: delete_description_html: Salatutako bidalketak ezabatuko dira eta abisu bat gordeko da, etorkizunean kontu berarekin elkarrekintzarik baduzu kontuan izan dezazun. + mark_as_sensitive_description_html: Salatutako bidalketetako multimedia edukia hunkigarri bezala eta abisu bat gordeko da, etorkizunean kontu honek arau-hausterik egiten badu kontuan izan dezazun. other_description_html: Ikusi kontuaren portaera kontrolatzeko eta salatutako kontuarekin komunikazioa pertsonalizatzeko aukera gehiago. resolve_description_html: Ez da neurririk hartuko salatutako kontuaren aurka, ez da abisurik gordeko eta salaketa itxiko da. silence_description_html: Profila dagoeneko jarraitzen dutenei edo eskuz bilatzen dutenei bakarrik agertuko zaie, bere irismena asko mugatuz. Beti bota daiteke atzera. @@ -548,6 +580,61 @@ eu: unresolved: Konpondu gabea updated_at: Eguneratua view_profile: Ikusi profila + roles: + add_new: Gehitu rola + categories: + administration: Administrazioa + devops: Devops + invites: Gonbidapenak + moderation: Moderazioa + special: Berezia + delete: Ezabatu + description_html: "Erabiltzaile rolak erabiliz erabiltzaileek Mastodonen ze funtzio eta lekutara sarbidea duten pertsonalizatu dezakezu." + edit: Editatu '%{name}' rola + everyone: Baimen lehenetsiak + everyone_full_description_html: Hau erabiltzaile guztiei eragiten dien oinarrizko rola da, rol bat esleitu gabekoei ere bai. Gainerako rolek honetatik heredatzen dituzte baimenak. + privileges: + administrator: Administratzailea + administrator_description: Baimen hau duten erabiltzaileak baimen guztien gainetik pasako dira + delete_user_data: Ezabatu erabiltzaileen datuak + delete_user_data_description: Baimendu erabiltzaileek beste erabiltzaileen datuak atzerapenik gabe ezabatzea + invite_users: Gonbidatu erabiltzaileak + invite_users_description: Baimendu erabiltzaileek zerbitzarira jende berria gonbidatzea + manage_announcements: Kudeatu iragarpenak + manage_announcements_description: Baimendu erabiltzaileek zerbitzariko iragarpenak kudeatzea + manage_appeals: Kudeatu apelazioak + manage_appeals_description: Baimendu erabiltzaileek moderazio ekintzen aurkako apelazioak berrikustea + manage_blocks: Kudeatu blokeatzeak + manage_blocks_description: Baimendu erabiltzaileek eposta hornitzaile eta IP helbideak blokeatzea + manage_custom_emojis: Kudeatu emoji pertsonalizatuak + manage_custom_emojis_description: Baimendu erabiltzaileek zerbitzariko emoji pertsonalizatuak kudeatzea + manage_federation: Kudeatu federazioa + manage_federation_description: Baimendu erabiltzaileek beste domeinuak blokeatu edo federazioa onartzea, eta banagarritasuna kontrolatzea + manage_invites: Kudeatu gonbidapenak + manage_invites_description: Baimendu erabiltzaileek gonbidapen estekak arakatu eta desaktibatzea + manage_reports: Kudeatu txostenak + manage_reports_description: Baimendu erabiltzaileek txostenak berrikusi eta moderazio ekintzak burutzea + manage_roles: Kudeatu rolak + manage_roles_description: Baimendu erabiltzaileek beren mailaren azpiko rolak kudeatu eta esleitzea + manage_rules: Kudeatu arauak + manage_rules_description: Baimendu erabiltzaileek zerbitzariaren arauak aldatzea + manage_settings: Kudeatu ezarpenak + manage_settings_description: Baimendu erabiltzaileek gunearen ezarpenak aldatzea + manage_taxonomies: Kudeatu taxonomiak + manage_taxonomies_description: Baimendu erabiltzaileek joerak berrikustea eta traolen ezarpenak eguneratzea + manage_user_access: Kudeatu erabiltzaileen sarbidea + manage_user_access_description: Baimendu erabiltzaileek beste erabiltzaileen bi faktoreko autentifikazioa desaktibatzea, eposta helbideak aldatzea eta pasahitzak berrezartzea + manage_users: Kudeatu erabiltzaileak + manage_users_description: Baimendu erabiltzaileek beste erabiltzaileen xehetasunak ikusi eta moderazio ekintzak burutzea + manage_webhooks: Kudeatu webhook-ak + manage_webhooks_description: Baimendu erabiltzaileek webhook-ak konfiguratzea gertaera administratiboentzat + view_audit_log: Ikusi auditoria-egunkaria + view_audit_log_description: Baimendu erabiltzaileek zerbitzariko administrazio-ekintzen historia ikustea + view_dashboard: Ikusi aginte-panela + view_dashboard_description: Baimendu erabiltzaileek aginte-panela eta hainbat estatistika ikustea + view_devops: Devops + view_devops_description: Baimendu erabiltzaileek Sidekiq eta pgHero aginte-paneletara sarbidea izatea + title: Rolak rules: add_new: Gehitu araua delete: Ezabatu @@ -556,29 +643,66 @@ eu: empty: Ez da zerbitzariko araurik definitu oraindik. title: Zerbitzariaren arauak settings: + about: + manage_rules: Kudeatu zerbitzariaren arauak + preamble: Zerbitzaria nola gobernatzen, moderatzen eta finantzatzen den azaltzen duen informazio xehea eman. + rules_hint: Erabiltzaileek jarraitu behar dituzten arauei eskainitako atal bat dago. + title: Honi buruz + appearance: + preamble: Mastodonen web interfazea pertsonalizatu. + title: Itxura + branding: + preamble: 'Zure zerbitzariaren markak sareko beste zerbitzarietatik bereizten du. Informazio hau hainbat ingurunetan bistaratuko da: Mastodonen web interfazean, aplikazio natiboetan, esteken aurrebistak beste webguneetan eta mezularitza aplikazioetan eta abar. Horregatik, informazio hau garbia eta laburra izatea komeni da.' + title: Marka + content_retention: + preamble: Kontrolatu erabiltzaileek sortutako edukia nola biltegiratzen den Mastodonen. + title: Edukia atxikitzea + discovery: + follow_recommendations: Jarraitzeko gomendioak + profile_directory: Profil-direktorioa + public_timelines: Denbora-lerro publikoak + title: Aurkitzea + trends: Joerak domain_blocks: all: Guztiei disabled: Inori ez users: Saioa hasita duten erabiltzaile lokalei + registrations: + preamble: Kontrolatu nork sortu dezakeen kontua zerbitzarian. + title: Izen emateak registrations_mode: modes: approved: Izena emateko onarpena behar da none: Ezin du inork izena eman open: Edonork eman dezake izena + title: Zerbitzariaren ezarpenak site_uploads: delete: Ezabatu igotako fitxategia destroyed_msg: Guneko igoera ongi ezabatu da! statuses: + account: Egilea + application: Aplikazioa back_to_account: Atzera kontuaren orrira back_to_report: Atzera txostenaren orrira batch: remove_from_report: Kendu txostenetik report: Salatu deleted: Ezabatuta + favourites: Gogokoak + history: Bertsio-historia + in_reply_to: Honi erantzuten + language: Hizkuntza media: title: Multimedia - no_status_selected: Ez da bidalketarik aldatu ez delako bidalketarik aukeratu + metadata: Metadatuak + no_status_selected: Ez da bidalketarik aldatu ez delako bat ere hautatu + open: Ireki bidalketa + original_status: Jatorrizko bidalketa + reblogs: Bultzadak + status_changed: Bidalketa aldatuta title: Kontuaren bidalketak + trending: Joera + visibility: Ikusgaitasuna with_media: Multimediarekin strikes: actions: @@ -618,11 +742,15 @@ eu: description_html: Esteka hauek zure zerbitzariak ikusten dituen kontuek asko zabaltzen ari diren estekak dira. Zure erabiltzaileei munduan ze berri den jakiteko lagungarriak izan daitezke. Ez da estekarik bistaratzen argitaratzaileak onartu arte. Esteka bakoitza onartu edo baztertu dezakezu. disallow: Ukatu esteka disallow_provider: Ukatu argitaratzailea + no_link_selected: Ez da estekarik aldatu ez delako bat ere hautatu + publishers: + no_publisher_selected: Ez da argitaratzailerik aldatu ez delako bat ere hautatu shared_by_over_week: one: Pertsona batek partekatua azken astean other: "%{count} pertsonak partekatua azken astean" title: Esteken joerak usage_comparison: "%{today} aldiz partekatua gaur, atzo %{yesterday} aldiz" + only_allowed: Soilik onartutakoak pending_review: Berrikusketaren zain preview_card_providers: allowed: Argitaratzaile honen estekak joera izan daitezke @@ -634,6 +762,7 @@ eu: allow_account: Onartu egilea disallow: Ez onartu bidalketa disallow_account: Ez onartu egilea + no_status_selected: Ez da joerarik aldatu ez delako bat ere hautatu tags: current_score: Uneko emaitza%{score} dashboard: @@ -643,6 +772,7 @@ eu: tag_servers_measure: zerbitzari desberdin tag_uses_measure: erabilera guztira listable: Gomendatu daiteke + no_tag_selected: Ez da etiketarik aldatu ez delako bat ere hautatu not_listable: Ez da gomendatuko not_trendable: Ez da joeretan agertuko not_usable: Ezin da erabili @@ -653,13 +783,39 @@ eu: usable: Erabili daiteke usage_comparison: "%{today} aldiz erabili da gaur, atzo %{yesterday} aldiz" title: Joerak + trending: Joerak warning_presets: add_new: Gehitu berria delete: Ezabatu edit_preset: Editatu abisu aurre-ezarpena empty: Ez duzu abisu aurrezarpenik definitu oraindik. title: Kudeatu abisu aurre-ezarpenak + webhooks: + add_new: Gehitu amaiera-puntua + delete: Ezabatu + disable: Desgaitu + disabled: Desgaituta + edit: Editatu amaiera-puntua + empty: Ez duzu webhook amaiera-punturik konfiguratu oraindik. + enable: Gaitu + enabled: Aktiboa + events: Gertaerak + new: Webhook berria + rotate_secret: Biratu sekretua + secret: Sinatze-sekretua + status: Egoera + title: Webhook-ak + webhook: Webhook admin_mailer: + new_appeal: + actions: + delete_statuses: bidalketak ezabatzea + disable: kontua blokeatzea + mark_statuses_as_sensitive: bidalketak hunkigarri gisa markatzea + none: abisu bat + sensitive: kontua hunkigarri gisa markatzea + silence: kontua mugatzea + suspend: kontua kanporatzea new_pending_account: body: Kontu berriaren xehetasunak azpian daude. Eskaera hau onartu edo ukatu dezakezu. subject: Kontu berria berrikusteko %{instance} instantzian (%{username}) @@ -808,6 +964,8 @@ eu: appeals: submit: Bidali apelazioa recipient: Honi zuzendua + title_actions: + suspend: Kontua kanporatzea domain_validator: invalid_domain: ez da domeinu izen baliogarria errors: @@ -1254,6 +1412,8 @@ eu: subject: Zure artxiboa deskargatzeko prest dago title: Artxiboa jasotzea warning: + explanation: + suspend: Ezin duzu zure kontua erabili, eta zure profila eta beste datuak ez daude eskuragarri jada. Hala ere, saioa hasi dezakezu zure datuen babeskopia eskatzeko, 30 egun inguru barru behin betiko ezabatu aurretik. Zure oinarrizko informazioa gordeko da kanporatzea saihestea eragozteko. subject: disable: Zure %{acct} kontua izoztu da none: "%{acct} konturako abisua" diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 7dc4dae0a..6c3690aee 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -5,6 +5,7 @@ fa: contact_missing: تنظیم نشده contact_unavailable: موجود نیست hosted_on: ماستودون، میزبانی‌شده روی %{domain} + title: درباره accounts: follow: پیگیری followers: @@ -37,11 +38,17 @@ fa: avatar: تصویر نمایه by_domain: دامین change_email: + changed_msg: رایانامه با موفقیت تغییر کرد! current_email: رایانامهٔ کنونی label: تغییر رایانامه new_email: رایانامهٔ جدید submit: تغییر رایانامه title: تغییر رایانامه برای %{username} + change_role: + changed_msg: نقش با موفقیت تغییر کرد! + label: تغییر نقش + no_role: بدون نقش + title: تغییر نقش برای %{username} confirm: تأیید confirmed: تأیید شد confirming: تأیید @@ -85,6 +92,7 @@ fa: active: فعّال all: همه pending: منتظر + silenced: محدود suspended: تعلیق شده title: مدیریت moderation_notes: یادداشت‌های مدیریتی @@ -92,6 +100,7 @@ fa: most_recent_ip: آخرین IP no_account_selected: هیچ حسابی تغییر نکرد زیرا حسابی انتخاب نشده بود no_limits_imposed: بدون محدودیت + no_role_assigned: هیچ نقشی اعطا نشده not_subscribed: مشترک نیست pending: در انتظار بررسی perform_full_suspension: تعلیق @@ -115,6 +124,7 @@ fa: reset: بازنشانی reset_password: بازنشانی رمز resubscribe: اشتراک دوباره + role: نقش search: جستجو search_same_email_domain: دیگر کاربران با دامنهٔ رایانامهٔ یکسان search_same_ip: دیگر کاربران با IP یکسان @@ -500,9 +510,11 @@ fa: comment: none: هیچ created_at: گزارش‌شده + delete_and_resolve: حذف فرسته‌ها forwarded: هدایت شده forwarded_to: هدایت شده به %{domain} mark_as_resolved: علامت‌گذاری به عنوان حل‌شده + mark_as_sensitive: علامت به حساس mark_as_unresolved: علامت‌گذاری به عنوان حل‌نشده no_one_assigned: هیچ‌کس notes: @@ -512,12 +524,14 @@ fa: delete: حذف placeholder: کارهایی را که در این باره انجام شده، یا هر به‌روزرسانی دیگری را بنویسید... title: یادداشت‌ها + remote_user_placeholder: کاربر دوردست از %{instance} reopen: دوباره به جریان بیندازید report: 'گزارش #%{id}' reported_account: حساب گزارش‌شده reported_by: گزارش از طرف resolved: حل‌شده resolved_msg: گزارش با موفقیت حل شد! + skip_to_actions: پرش به کنش‌ها status: نوشته statuses: محتوای گزارش شده target_origin: خاستگاه حساب گزارش‌شده @@ -526,6 +540,29 @@ fa: unresolved: حل‌نشده updated_at: به‌روز شد view_profile: دیدن نمایه + roles: + add_new: افزودن نقش + categories: + administration: مدیریت + devops: دواپس + invites: دعوت‌ها + moderation: نظارت + special: ویژه + delete: حذف + edit: ویراش نقش %{name} + everyone: اجازه‌های پیش‌گزیده + privileges: + administrator: مدیر + delete_user_data: حذف داده‌های کاربر + invite_users: دعوت کاربران + manage_announcements: مدیریت اعلامیه‌ها + manage_blocks: مدیریت مسدودی‌ها + manage_custom_emojis: مدیریت ایموجی‌های سفارشی + manage_invites: مدیریت دعوت‌ها + manage_reports: مدیریت گزارش‌ها + manage_roles: مدیریت نقش‌ها + manage_rules: مدیریت قوانین + manage_settings: مدیریت تنظیمات rules: add_new: افزودن قانون delete: حذف @@ -534,31 +571,55 @@ fa: empty: هنوز هیچ قانونی برای کارساز تعریف نشده. title: قوانین کارساز settings: + discovery: + follow_recommendations: پیروی از پیشنهادها + profile_directory: شاخهٔ نمایه + public_timelines: خط زمانی‌های عمومی + title: کشف + trends: پرطرفدارها domain_blocks: all: برای همه disabled: برای هیچ‌کدام users: برای کاربران محلی واردشده + registrations: + title: ثبت‌نام‌ها registrations_mode: modes: approved: ثبت نام نیازمند تأیید مدیران است none: کسی نمی‌تواند ثبت نام کند open: همه می‌توانند ثبت نام کنند + title: تنظیمات کارساز site_uploads: delete: پرونده بارگذاری شده را پاک کنید destroyed_msg: بارگذاری پایگاه با موفقیت حذف شد! statuses: + account: نگارنده + application: برنامه back_to_account: بازگشت به صفحهٔ حساب back_to_report: بازگشت به صفحهٔ گزارش batch: remove_from_report: برداشتن از گزارش report: گزارش deleted: پاک‌شده + favourites: برگزیده‌ها + history: تاریخچهٔ نگارش + in_reply_to: در پاسخ به + language: زبان media: title: رسانه + metadata: فراداده no_status_selected: هیچ فرسته‌ای تغییری نکرد زیرا هیچ‌کدام از آن‌ها انتخاب نشده بودند + open: گشودن فرسته + original_status: فرستهٔ اصلی + reblogs: تقویت‌ها + status_changed: فرسته تغییر کرد title: نوشته‌های حساب + trending: پرطرفدار + visibility: نمایانی with_media: دارای عکس یا ویدیو strikes: + actions: + delete_statuses: "%{name} فرستهٔ %{target} را حذف کرد" appeal_approved: درخواست تجدیدنظر کرد appeal_pending: درخواست تجدیدنظر در انتظار system_checks: @@ -610,6 +671,8 @@ fa: edit_preset: ویرایش هشدار پیش‌فرض empty: هنز هیچ پیش‌تنظیم هشداری را تعریف نکرده‌اید. title: مدیریت هشدارهای پیش‌فرض + webhooks: + new: قلاب وب جدید admin_mailer: new_appeal: actions: diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 878f87f1d..4a519c107 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -666,8 +666,10 @@ fr: appearance: title: Apparence discovery: + follow_recommendations: Suivre les recommandations profile_directory: Annuaire des profils public_timelines: Fils publics + title: Découverte trends: Tendances domain_blocks: all: À tout le monde @@ -693,11 +695,15 @@ fr: remove_from_report: Retirer du rapport report: Signalement deleted: Supprimé + favourites: Favoris language: Langue media: title: Médias no_status_selected: Aucun message n’a été modifié car aucun n’a été sélectionné + open: Ouvrir le message + original_status: Message original title: Messages du compte + trending: Tendances visibility: Visibilité with_media: Avec médias strikes: diff --git a/config/locales/gd.yml b/config/locales/gd.yml index 82398d53c..6790b7645 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -1301,6 +1301,8 @@ gd: carry_blocks_over_text: Chaidh an cleachdaiche seo imrich o %{acct} a b’ àbhaist dhut a bhacadh. carry_mutes_over_text: Chaidh an cleachdaiche seo imrich o %{acct} a b’ àbhaist dhut a mhùchadh. copy_account_note_text: 'Da cleachdaiche air gluasad o %{acct}, seo na nòtaichean a bh’ agad mu dhèidhinn roimhe:' + navigation: + toggle_menu: Toglaich an clàr-taice notification_mailer: admin: report: diff --git a/config/locales/gl.yml b/config/locales/gl.yml index da00efe89..75fee0002 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -1249,6 +1249,8 @@ gl: carry_blocks_over_text: Esta usuaria chegou desde %{acct}, que ti tes bloqueada. carry_mutes_over_text: Esta usuaria chegou desde %{acct}, que ti tes acalada. copy_account_note_text: 'Esta usuaria chegou desde %{acct}, aquí están as túas notas previas acerca dela:' + navigation: + toggle_menu: Activa o menú notification_mailer: admin: report: diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 890eb6956..008026aa4 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -1246,6 +1246,8 @@ hu: carry_blocks_over_text: Ez a fiók elköltözött innen %{acct}, melyet letiltottatok. carry_mutes_over_text: Ez a fiók elköltözött innen %{acct}, melyet lenémítottatok. copy_account_note_text: 'Ez a fiók elköltözött innen %{acct}, itt vannak a bejegyzéseitek róla:' + navigation: + toggle_menu: Menü be/ki notification_mailer: admin: report: diff --git a/config/locales/id.yml b/config/locales/id.yml index 9248eab30..5daa4addd 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -1,10 +1,11 @@ --- id: about: - about_mastodon_html: Mastodon adalah sebuah jejaring sosial terbuka, open-sourcedesentralisasi dari platform komersial, menjauhkan anda resiko dari sebuah perusahaan yang memonopoli komunikasi anda. Pilih server yang anda percayai — apapun yang anda pilih, anda tetap dapat berinteraksi dengan semua orang. Semua orang dapat menjalankan server Mastodon sendiri dan berpartisipasi dalam jejaring sosial dengan mudah. - contact_missing: Belum diset + about_mastodon_html: 'Jaringan sosial masa depan: Tanpa iklan, tanpa pemantauan perusahaan, desain etis, dan terdesentralisasi! Miliki data Anda dengan Mastodon!' + contact_missing: Belum ditetapkan contact_unavailable: Tidak Tersedia hosted_on: Mastodon dihosting di %{domain} + title: Tentang accounts: follow: Ikuti followers: @@ -17,8 +18,8 @@ id: pin_errors: following: Anda harus mengikuti orang yang ingin anda endorse posts: - other: Toot - posts_tab_heading: Toot + other: Kiriman + posts_tab_heading: Kiriman admin: account_actions: action: Lakukan aksi @@ -43,6 +44,9 @@ id: title: Ganti email untuk %{username} change_role: changed_msg: תפקיד שונה בהצלחה ! + label: Ubah peran + no_role: Tidak ada peran + title: Ganti peran untuk %{username} confirm: Konfirmasi confirmed: Dikonfirmasi confirming: Mengkonfirmasi @@ -86,6 +90,7 @@ id: active: Aktif all: Semua pending: Tertunda + silenced: Terbatas suspended: Disuspen title: Moderasi moderation_notes: Catatan moderasi @@ -93,6 +98,7 @@ id: most_recent_ip: IP terbaru no_account_selected: Tak ada akun yang diubah sebab tak ada yang dipilih no_limits_imposed: Tidak ada batasan + no_role_assigned: Tidak ada peran yang diberikan not_subscribed: Tidak berlangganan pending: Tinjauan tertunda perform_full_suspension: Lakukan suspen penuh @@ -118,6 +124,7 @@ id: reset: Atur ulang reset_password: Reset kata sandi resubscribe: Langganan ulang + role: Peran search: Cari search_same_email_domain: Pengguna lain dengan domain email yang sama search_same_ip: Pengguna lain dengan IP yang sama @@ -160,17 +167,21 @@ id: approve_user: Setujui Pengguna assigned_to_self_report: Berikan laporan change_email_user: Ubah Email untuk Pengguna + change_role_user: Ubah Peran Pengguna confirm_user: Konfirmasi Pengguna create_account_warning: Buat Peringatan create_announcement: Buat Pengumuman + create_canonical_email_block: Buat Pemblokiran Surel create_custom_emoji: Buat Emoji Khusus create_domain_allow: Buat Izin Domain create_domain_block: Buat Blokir Domain create_email_domain_block: Buat Email Blokir Domain create_ip_block: Buat aturan IP create_unavailable_domain: Buat Domain yang Tidak Tersedia + create_user_role: Buah Peran demote_user: Turunkan Pengguna destroy_announcement: Hapus Pengumuman + destroy_canonical_email_block: Hapus Pemblokiran Surel destroy_custom_emoji: Hapus Emoji Khusus destroy_domain_allow: Hapus Izin Domain destroy_domain_block: Hapus Blokir Domain @@ -179,6 +190,7 @@ id: destroy_ip_block: Hapus aturan IP destroy_status: Hapus Status destroy_unavailable_domain: Hapus Domain yang Tidak Tersedia + destroy_user_role: Hapus Peran disable_2fa_user: Nonaktifkan 2FA disable_custom_emoji: Nonaktifkan Emoji Khusus disable_sign_in_token_auth_user: Nonaktifkan Otentikasi Token Email untuk Pengguna @@ -205,23 +217,30 @@ id: update_announcement: Perbarui Pengumuman update_custom_emoji: Perbarui Emoji Khusus update_domain_block: Perbarui Blokir Domain + update_ip_block: Perbarui peraturan IP update_status: Perbarui Status + update_user_role: Perbarui Peran actions: approve_appeal_html: "%{name} menyetujui moderasi keputusan banding dari %{target}" approve_user_html: "%{name} menyetujui pendaftaran dari %{target}" assigned_to_self_report_html: "%{name} menugaskan laporan %{target} ke dirinya sendiri" change_email_user_html: "%{name} mengubah alamat email pengguna %{target}" + change_role_user_html: "%{name} mengubah peran %{target}" confirm_user_html: "%{name} mengonfirmasi alamat email pengguna %{target}" create_account_warning_html: "%{name} mengirim peringatan untuk %{target}" create_announcement_html: "%{name} membuat pengumuman baru %{target}" + create_canonical_email_block_html: "%{name} memblokir surel dengan hash %{target}" create_custom_emoji_html: "%{name} mengunggah emoji baru %{target}" create_domain_allow_html: "%{name} mengizinkan penggabungan dengan domain %{target}" create_domain_block_html: "%{name} memblokir domain %{target}" create_email_domain_block_html: "%{name} memblokir domain email %{target}" create_ip_block_html: "%{name} membuat aturan untuk IP %{target}" create_unavailable_domain_html: "%{name} menghentikan pengiriman ke domain %{target}" + create_user_role_html: "%{name} membuat peran %{target}" demote_user_html: "%{name} menurunkan pengguna %{target}" destroy_announcement_html: "%{name} menghapus pengumuman %{target}" + destroy_canonical_email_block_html: "%{name} menghapus pemblokiran surel dengan hash %{target}" + destroy_custom_emoji_html: "%{name} menghapus emoji %{target}" destroy_domain_allow_html: "%{name} membatalkan izin penggabungan dengan domain %{target}" destroy_domain_block_html: "%{name} membuka blokir domain %{target}" destroy_email_domain_block_html: "%{name} membuka blokir domain email %{target}" @@ -229,7 +248,8 @@ id: destroy_ip_block_html: "%{name} menghapus aturan untuk IP %{target}" destroy_status_html: "%{name} menghapus status %{target}" destroy_unavailable_domain_html: "%{name} melanjutkan pengiriman ke domain %{target}" - disable_2fa_user_html: "%{name} mematikan syarat dua faktor utk pengguna %{target}" + destroy_user_role_html: "%{name} menghapus peran %{target}" + disable_2fa_user_html: "%{name} mematikan syarat dua faktor untuk pengguna %{target}" disable_custom_emoji_html: "%{name} mematikan emoji %{target}" disable_sign_in_token_auth_user_html: "%{name} menonaktifkan otentikasi token email untuk %{target}" disable_user_html: "%{name} mematikan login untuk pengguna %{target}" @@ -255,7 +275,9 @@ id: update_announcement_html: "%{name} memperbarui pengumuman %{target}" update_custom_emoji_html: "%{name} memperbarui emoji %{target}" update_domain_block_html: "%{name} memperbarui blokir domain untuk %{target}" + update_ip_block_html: "%{name} mengubah peraturan untuk IP %{target}" update_status_html: "%{name} memperbarui status %{target}" + update_user_role_html: "%{name} mengubah peran %{target}" empty: Log tidak ditemukan. filter_by_action: Filter berdasarkan tindakan filter_by_user: Filter berdasarkan pengguna @@ -299,6 +321,7 @@ id: listed: Terdaftar new: title: Tambah emoji kustom baru + no_emoji_selected: Tidak ada emoji yang diubah karena tidak ada yang dipilih not_permitted: Anda tidak diizinkan untuk melakukan tindakan ini overwrite: Timpa shortcode: Kode pendek @@ -488,11 +511,11 @@ id: relays: add_new: Tambah relai baru delete: Hapus - description_html: "Relai gabungan adalah server perantara yang menukarkan toot publik dalam jumlah besar antara server yang berlangganan dengan yang menerbitkannya. Ini akan membantu server kecil hingga medium menemukan konten dari fediverse, yang tentu saja mengharuskan pengguna lokal untuk mengikuti orang lain dari server remot." + description_html: "Relai gabungan adalah server perantara yang menukarkan kiriman publik dalam jumlah besar antara server yang berlangganan dengan yang menerbitkannya. Ini akan membantu server kecil hingga medium menemukan konten dari fediverse, yang tentu saja mengharuskan pengguna lokal untuk mengikuti orang lain dari server jarak jauh." disable: Matikan disabled: Dimatikan enable: Aktifkan - enable_hint: Saat diaktifkan, server Anda akan melanggan semua toot publik dari relai ini, dan akan mengirim toot publik server ini ke sana. + enable_hint: Saat diaktifkan, server Anda akan melanggan semua kiriman publik dari relai ini, dan akan mengirim toot publik server ini ke sana. enabled: Diaktifkan inbox_url: URL Relai pending: Menunggu persetujuan relai @@ -564,7 +587,64 @@ id: updated_at: Diperbarui view_profile: Lihat profil roles: + add_new: Tambahkan peran + assigned_users: + other: "%{count} pengguna" + categories: + administration: Administrasi + devops: DevOps + invites: Undangan + moderation: Moderasi + special: Khusus + delete: Hapus + description_html: Dengan peran pengguna, Anda dapat mengubah fungsi dan area Mastodon apa pengguna Anda dapat mengakses. edit: ערכי את התפקיד של '%{name}' + everyone: Izin bawaan + everyone_full_description_html: Ini adalah peran dasaran yang memengaruhi semua pengguna, bahkan tanpa yang memiliki sebuah peran yang diberikan. Semua peran lainnya mendapatkan izin dari ini. + permissions_count: + other: "%{count} izin" + privileges: + administrator: Administrator + administrator_description: Pengguna dengan izin ini akan melewati setiap izin + delete_user_data: Hapus Data Pengguna + delete_user_data_description: Memungkinkan pengguna untuk menghapus data pengguna lain tanpa jeda + invite_users: Undang Pengguna + invite_users_description: Memungkinkan pengguna untuk mengundang orang baru ke server + manage_announcements: Kelola Pengumuman + manage_announcements_description: Memungkinkan pengguna untuk mengelola pengumuman di server + manage_appeals: Kelola Permintaan + manage_appeals_description: Memungkinkan pengguna untuk meninjau permintaan terhadap tindakan moderasi + manage_blocks: Kelola Pemblokiran + manage_blocks_description: Memungkinkan pengguna untuk memblokir penyedia surel dan alamat IP + manage_custom_emojis: Kelola Emoji Kustom + manage_custom_emojis_description: Memungkinkan pengguna untuk mengelola emoji kustom di server + manage_federation: Kelola Federasi + manage_federation_description: Memungkinkan pengguna untuk memblokir atau memperbolehkan federasi dengan domain lain, dan mengatur pengiriman + manage_invites: Kelola Undangan + manage_invites_description: Memungkinkan pengguna untuk menjelajah dan menonaktifkan tautan undangan + manage_reports: Kelola Laporan + manage_reports_description: Memungkinkan pengguna untuk meninjau laporan dan melakukan tindakan moderasi terhadap mereka + manage_roles: Kelola Peran + manage_roles_description: Memungkinkan pengguna untuk mengelola dan memberikan peran di bawah mereka + manage_rules: Kelola Aturan + manage_rules_description: Memungkinkan pengguna untuk mengubah aturan server + manage_settings: Kelola Pengaturan + manage_settings_description: Memungkinkan pengguna untuk mengubah pengaturan situs + manage_taxonomies: Kelola Taksonomi + manage_taxonomies_description: Memungkinkan pengguna untuk meninjau konten tren dan memperbarui pengaturan tagar + manage_user_access: Kelola Akses Pengguna + manage_user_access_description: Memungkinkan pengguna untuk menonaktifkan otentikasi dua faktor, mengubah alamat surel, dan mengatur ulang kata sandi pengguna lain + manage_users: Kelola Pengguna + manage_users_description: Memungkinkan pengguna untuk melihat detail pengguna lain dan melakukan tindakan moderasi terhadap mereka + manage_webhooks: Kelola Webhook + manage_webhooks_description: Memungkinkan pengguna untuk menyiapkan webhook untuk peristiwa administratif + view_audit_log: Lihat Catatan Audit + view_audit_log_description: Memungkinkan pengguna untuk melihat riwayat tindakan administratif di server + view_dashboard: Lihat Dasbor + view_dashboard_description: Memungkinkan pengguna untuk mengakses dasbor dan berbagai metrik + view_devops: DevOps + view_devops_description: Memungkinkan pengguna untuk mengakses dasbor Sidekiq dan pgHero + title: Peran rules: add_new: Tambah aturan delete: Hapus @@ -573,29 +653,67 @@ id: empty: Belum ada aturan server yang didefinisikan. title: Aturan server settings: + about: + manage_rules: Kelola aturan server + preamble: Menyediakan informasi lanjut tentang bagaimana server ini beroperasi, dimoderasi, dan didana. + rules_hint: Ada area yang khusus untuk peraturan yang pengguna Anda seharusnya tahu. + title: Tentang + appearance: + preamble: Ubah antarmuka web Mastodon. + title: Tampilan + branding: + preamble: Merek server Anda membedakannya dari server lain dalam jaringan. Informasi ini dapat ditampilkan dalam berbagai lingkungan, seperti antarmuka web Mastodon, aplikasi asli, dalam tampilan tautan di situs web lain dan dalam aplikasi perpesanan, dan lain-lain. Untuk alasan ini, buat informasi ini jelas, pendek, dan tidak bertele-tele. + title: Merek + content_retention: + preamble: Atur bagaimana konten yang dibuat oleh pengguna disimpan di Mastodon. + title: Retensi konten + discovery: + follow_recommendations: Ikuti rekomendasi + preamble: Menampilkan konten menarik penting dalam memandu pengguna baru yang mungkin tidak tahu siapa pun di Mastodon. Atur bagaimana berbagai fitur penemuan bekerja di server Anda. + profile_directory: Direktori profil + public_timelines: Linimasa publik + title: Penemuan + trends: Tren domain_blocks: all: Kepada semua orang disabled: Tidak kepada siapa pun users: Ke pengguna lokal yang sudah login + registrations: + preamble: Atur siapa yang dapat membuat akun di server Anda. + title: Pendaftaran registrations_mode: modes: approved: Persetujuan diperlukan untuk mendaftar none: Tidak ada yang dapat mendaftar open: Siapa pun dapat mendaftar + title: Pengaturan Server site_uploads: delete: Hapus berkas yang diunggah destroyed_msg: Situs yang diunggah berhasil dihapus! statuses: + account: Penulis + application: Aplikasi back_to_account: Kembali ke halaman akun back_to_report: Kembali ke halaman laporan batch: remove_from_report: Hapus dari laporan report: Laporan deleted: Dihapus + favourites: Favorit + history: Riwayat versi + in_reply_to: Membalas ke + language: Bahasa media: title: Media + metadata: Metadata no_status_selected: Tak ada status yang berubah karena tak ada yang dipilih + open: Buka kiriman + original_status: Kiriman asli + reblogs: Reblog + status_changed: Kiriman diubah title: Status akun + trending: Sedang tren + visibility: Visibilitas with_media: Dengan media strikes: actions: @@ -635,6 +753,9 @@ id: description_html: Ini adalah tautan yang saat ini dibagikan oleh banyak akun yang dapat dilihat dari server Anda. Ini dapat membantu pengguna Anda menemukan apa yang sedang terjadi di dunia. Tidak ada tautan yang ditampilkan secara publik kecuali Anda sudah menyetujui pengirimnya. Anda juga dapat mengizinkan atau menolak tautan individu. disallow: Batalkan izin tautan disallow_provider: Batalkan izin penerbit + no_link_selected: Tidak ada tautan yang diubah karena tidak ada yang dipilih + publishers: + no_publisher_selected: Tidak ada penerbit yang diubah karena tidak ada yang dipilih shared_by_over_week: other: Dibagikan oleh %{count} orang selama seminggu terakhir title: Tautan sedang tren @@ -653,6 +774,7 @@ id: description_html: Ini adalah kiriman yang diketahui server Anda yang kini sedang dibagikan dan difavoritkan banyak akun. Ini akan membantu pengguna baru dan lama Anda menemukan lebih banyak orang untuk diikuti. Tidak ada kiriman yang ditampilkan secara publik kecuali jika sudah disetujui pemilik akun, dan pemilik akun mengizinkan akun mereka disarankan untuk orang lain. Anda juga dapat mengizinkan atau menolak kiriman individu. disallow: Jangan beri izin kiriman disallow_account: Jangan beri izin penulis + no_status_selected: Tidak ada kiriman yang sedang tren karena tidak ada yang dipilih not_discoverable: Pemilik akun memilih untuk tidak dapat ditemukan shared_by: other: Dibagikan dan difavoritkan %{friendly_count} kali @@ -667,6 +789,7 @@ id: tag_uses_measure: kegunaan total description_html: Ini adalah tagar yang kini sedang muncul di banyak kiriman yang dapat dilihat server Anda. Ini dapat membantu pengguna Anda menemukan apa yang sedang dibicarakan banyak orang. Tagar tidak akan ditampilkan secara publik kecuali jika Anda mengizinkannya. listable: Dapat disarankan + no_tag_selected: Tidak ada tag yang diubah karena tidak ada yang dipilih not_listable: Tidak akan disarankan not_trendable: Tidak akan muncul di bawah tren not_usable: Tidak dapat digunakan @@ -689,15 +812,19 @@ id: webhooks: add_new: Tambah titik akhir delete: Hapus + description_html: Sebuah webhook memungkinkan Mastodon untuk mengirim notifikasi dalam waktu nyata tentang peristiwa yang dipilih ke aplikasi Anda sendiri, sehingga aplikasi Anda dapat memicu reaksi secara otomatis. disable: Matikan disabled: Nonaktif edit: Edit titik akhir + empty: Anda belum memiliki titik akhir webhook yang diatur. enable: Aktifkan enabled: Aktif enabled_events: other: "%{count} acara aktif" events: Acara new: Webhook baru + rotate_secret: Buat ulang rahasia + secret: Rahasia penandatanganan status: Status title: Webhook webhook: Webhook @@ -740,8 +867,8 @@ id: hint_html: Jika Anda ingin pindah dari akun lain ke sini, Anda dapat membuat alias, yang dilakukan sebelum Anda setuju dengan memindah pengikut dari akun lama ke akun sini. Aksi ini tidak berbahaya dan tidak bisa dikembalikan. Pemindahan akun dimulai dari akun lama. remove: Hapus tautan alias appearance: - advanced_web_interface: Antar muka web tingkat lanjut - advanced_web_interface_hint: 'Jika Anda ingin memanfaatkan seluruh lebar layar Anda, antar muka web tingkat lanjut mengizinkan Anda mengonfigurasi beragam kolom untuk menampilkan informasi sebanyak yang Anda mau: Beranda, notifikasi, linimasa gabungan, daftar, dan tagar.' + advanced_web_interface: Antarmuka web tingkat lanjut + advanced_web_interface_hint: 'Jika Anda ingin memanfaatkan seluruh lebar layar Anda, antarmuka web tingkat lanjut memungkinkan Anda mengonfigurasi beragam kolom untuk menampilkan informasi sebanyak yang Anda inginkan: Beranda, notifikasi, linimasa gabungan, daftar, dan tagar.' animations_and_accessibility: Animasi dan aksesibilitas confirmation_dialogs: Dialog konfirmasi discovery: Jelajah @@ -750,7 +877,7 @@ id: guide_link: https://crowdin.com/project/mastodon guide_link_text: Siapa saja bisa berkontribusi. sensitive_content: Konten sensitif - toot_layout: Tata letak toot + toot_layout: Tata letak kiriman application_mailer: notification_preferences: Ubah pilihan email salutation: "%{name}," @@ -766,6 +893,7 @@ id: warning: Hati-hati dengan data ini. Jangan bagikan kepada siapapun! your_token: Token akses Anda auth: + apply_for_account: Masuk ke daftar tunggu change_password: Kata sandi delete_account: Hapus akun delete_account_html: Jika Anda ingin menghapus akun Anda, Anda dapat memproses ini. Anda akan dikonfirmasi. @@ -785,6 +913,7 @@ id: migrate_account: Pindah ke akun berbeda migrate_account_html: Jika Anda ingin mengalihkan akun ini ke akun lain, Anda dapat mengaturnya di sini. or_log_in_with: Atau masuk dengan + privacy_policy_agreement_html: Saya telah membaca dan menerima kebijakan privasi providers: cas: CAS saml: SAML @@ -792,12 +921,18 @@ id: registration_closed: "%{instance} tidak menerima anggota baru" resend_confirmation: Kirim ulang email konfirmasi reset_password: Reset kata sandi + rules: + preamble: Ini diatur dan ditetapkan oleh moderator %{domain}. + title: Beberapa aturan dasar. security: Identitas set_new_password: Tentukan kata sandi baru setup: email_below_hint_html: Jika alamat email di bawah tidak benar, Anda dapat menggantinya di sini dan menerima email konfirmasi baru. email_settings_hint_html: Email konfirmasi telah dikirim ke %{email}. Jika alamat email tidak benar, Anda dapat mengubahnya di pengaturan akun. title: Atur + sign_up: + preamble: Dengan sebuah akun di server Mastodon ini, Anda akan dapat mengikuti orang lain dalam jaringan, di mana pun akun mereka berada. + title: Mari kita siapkan Anda di %{domain}. status: account_status: Status akun confirming: Menunggu konfirmasi email diselesaikan. @@ -917,7 +1052,7 @@ id: archive_takeout: date: Tanggal download: Unduh arsip Anda - hint_html: Anda dapat meminta arsip toot dan media yang Anda unggah. Data yang terekspor akan berformat ActivityPub, dapat dibaca dengan perangkat lunak yang mendukungnya. Anda dapat meminta arsip akun setiap 7 hari. + hint_html: Anda dapat meminta arsip kiriman dan media yang Anda unggah. Data yang terekspor akan berformat ActivityPub, yang dapat dibaca dengan perangkat lunak yang mendukungnya. Anda dapat meminta arsip akun setiap 7 hari. in_progress: Mengompilasi arsip Anda... request: Meminta arsip Anda size: Ukuran @@ -941,25 +1076,54 @@ id: public: Linimasa publik thread: Percakapan edit: + add_keyword: Tambahkan kata kunci + keywords: Kata kunci + statuses: Kiriman individu + statuses_hint_html: Saringan ini diterapkan beberapa kiriman individu jika mereka cocok atau tidak dengan kata kunci di bawah. Tinjau atau hapus kiriman dari saringan. title: Ubah saringan errors: + deprecated_api_multiple_keywords: Parameter ini tidak dapat diubah dari aplikasi ini karena mereka diterapkan ke lebih dari satu kata kunci saringan. Gunakan aplikasi yang lebih baru atau antarmuka web. invalid_context: Konteks tidak ada atau invalid index: + contexts: Saringan dalam %{contexts} delete: Hapus empty: Anda tidak memiliki filter. + expires_in: Kedaluwarsa dalam %{distance} + expires_on: Kedaluwarsa pada %{date} + keywords: + other: "%{count} kata kunci" + statuses: + other: "%{count} kiriman" + statuses_long: + other: "%{count} kiriman individu disembunyikan" title: Saringan new: + save: Simpan saringan baru title: Tambah saringan baru + statuses: + back_to_filter: Kembali ke saringan + batch: + remove: Hapus dari saringan + index: + hint: Saringan ini diterapkan ke beberapa kiriman individu tanpa memengaruhi oleh kriteria lain. Anda dapat menambahkan lebih banyak kiriman ke saringan ini dari antarmuka web. + title: Kiriman yang disaring footer: trending_now: Sedang tren generic: all: Semua + all_items_on_page_selected_html: + other: "%{count} item di laman ini dipilih." + all_matching_items_selected_html: + other: "%{count} item yang cocok dengan pencarian Anda dipilih." changes_saved_msg: Perubahan berhasil disimpan! copy: Salin delete: Hapus + deselect: Batalkan semua pilihan none: Tidak ada order_by: Urut berdasarkan save_changes: Simpan perubahan + select_all_matching_items: + other: Pilih %{count} item yang cocok dengan pencarian Anda. today: hari ini validation_errors: other: Ada yang belum benar! Silakan tinjau %{count} kesalahan di bawah ini @@ -1059,8 +1223,12 @@ id: carry_blocks_over_text: Pengguna ini pindah dari %{acct}, yang telah Anda blokir sebelumnya. carry_mutes_over_text: Pengguna ini pindah dari %{acct}, yang telah Anda bisukan sebelumnya. copy_account_note_text: 'Pengguna ini pindah dari %{acct}, ini dia pesan Anda sebelumnya tentang mereka:' + navigation: + toggle_menu: Saklar menu notification_mailer: admin: + report: + subject: "%{name} mengirim sebuah laporan" sign_up: subject: "%{name} mendaftar" favourite: @@ -1134,6 +1302,8 @@ id: other: Lainnya posting_defaults: Kiriman bawaan public_timelines: Linimasa publik + privacy_policy: + title: Kebijakan Privasi reactions: errors: limit_reached: Batas reaksi yang berbeda terpenuhi @@ -1166,8 +1336,8 @@ id: account: Kiriman publik dari @%{acct} tag: 'Kiriman publik ditagari #%{hashtag}' scheduled_statuses: - over_daily_limit: Anda telah melampaui batas %{limit} toot terjadwal untuk sehari - over_total_limit: Anda telah melampaui batas %{limit} toot terjadwal + over_daily_limit: Anda telah melampaui batas %{limit} kiriman terjadwal untuk sehari + over_total_limit: Anda telah melampaui batas %{limit} kiriman terjadwal too_soon: Tanggal terjadwal haruslah pada hari yang akan datang sessions: activity: Aktivitas terakhir @@ -1255,15 +1425,15 @@ id: over_character_limit: melebihi %{max} karakter pin_errors: direct: Kiriman yang hanya terlihat oleh pengguna yang disebutkan tidak dapat disematkan - limit: Anda sudah mencapai jumlah maksimum toot yang dapat disematkan - ownership: Toot orang lain tidak bisa disematkan + limit: Anda sudah mencapai jumlah maksimum kiriman yang dapat disematkan + ownership: Kiriman orang lain tidak bisa disematkan reblog: Boost tidak bisa disematkan poll: total_people: other: "%{count} orang" total_votes: other: "%{count} memilih" - vote: Memilih + vote: Pilih show_more: Tampilkan selengkapnya show_newer: Tampilkan lebih baru show_older: Tampilkan lebih lama @@ -1314,7 +1484,7 @@ id: min_reblogs: Simpan kiriman yang di-boost lebih dari min_reblogs_hint: Tidak menghapus kiriman Anda yang di-boost lebih dari sekian kali. Kosongkan bila ingin menghapus kiriman tanpa peduli jumlah boost-nya stream_entries: - pinned: Toot tersemat + pinned: Kiriman tersemat reblogged: di-boost-kan sensitive_content: Konten sensitif strikes: @@ -1400,8 +1570,10 @@ id: suspend: Akun ditangguhkan welcome: edit_profile_action: Siapkan profil + edit_profile_step: Anda dapat mengubah profil Anda dengan mengunggah sebuah foto profil, mengubah nama tampilan Anda dan lain-lain. Anda dapat memilih untuk meninjau pengikut baru sebelum mereka diperbolehkan untuk mengikuti Anda. explanation: Beberapa tips sebelum Anda memulai final_action: Mulai mengirim + final_step: 'Mulai mengirim! Bahkan tanpa pengikut, kiriman publik Anda dapat dilihat oleh orang lain, misalkan di linimasa lokal atau dalam tagar. Anda dapat memperkenalkan diri Anda dalam tagar #introductions.' full_handle: Penanganan penuh Anda full_handle_hint: Ini yang dapat Anda sampaikan kepada teman agar mereka dapat mengirim pesan atau mengikuti Anda dari server lain. subject: Selamat datang di Mastodon diff --git a/config/locales/ig.yml b/config/locales/ig.yml new file mode 100644 index 000000000..c32706518 --- /dev/null +++ b/config/locales/ig.yml @@ -0,0 +1,12 @@ +--- +ig: + errors: + '400': The request you submitted was invalid or malformed. + '403': You don't have permission to view this page. + '404': The page you are looking for isn't here. + '406': This page is not available in the requested format. + '410': The page you were looking for doesn't exist here anymore. + '422': + '429': Too many requests + '500': + '503': The page could not be served due to a temporary server failure. diff --git a/config/locales/is.yml b/config/locales/is.yml index cf4f8cbc5..72ca95e6f 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -1249,6 +1249,8 @@ is: carry_blocks_over_text: Þessi notandi fluttist frá %{acct}, sem þú hafðir útilokað. carry_mutes_over_text: Þessi notandi fluttist frá %{acct}, sem þú hafðir þaggað niður í. copy_account_note_text: 'Þessi notandi fluttist frá %{acct}, hér eru fyrri minnispunktar þínir um hann:' + navigation: + toggle_menu: Víxla valmynd af/á notification_mailer: admin: report: diff --git a/config/locales/it.yml b/config/locales/it.yml index a81ede69d..ed71c4026 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -1251,6 +1251,8 @@ it: carry_blocks_over_text: Questo utente si è spostato da %{acct} che hai bloccato. carry_mutes_over_text: Questo utente si è spostato da %{acct} che hai silenziato. copy_account_note_text: 'Questo utente si è spostato da %{acct}, ecco le tue note precedenti su di loro:' + navigation: + toggle_menu: Cambia menu notification_mailer: admin: report: diff --git a/config/locales/ja.yml b/config/locales/ja.yml index bea0677ad..5ee19aa6b 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -5,7 +5,7 @@ ja: contact_missing: 未設定 contact_unavailable: N/A hosted_on: Mastodon hosted on %{domain} - title: About + title: このサーバーについて accounts: follow: フォロー followers: @@ -229,6 +229,7 @@ ja: confirm_user_html: "%{name}さんが%{target}さんのメールアドレスを確認済みにしました" create_account_warning_html: "%{name}さんが%{target}さんに警告メールを送信しました" create_announcement_html: "%{name}さんが新しいお知らせ %{target}を作成しました" + create_canonical_email_block_html: "%{name} さんがハッシュ %{target} を持つメールをブロックしました。" create_custom_emoji_html: "%{name}さんがカスタム絵文字 %{target}を追加しました" create_domain_allow_html: "%{name}さんが%{target}の連合を許可しました" create_domain_block_html: "%{name}さんがドメイン %{target}をブロックしました" @@ -238,6 +239,7 @@ ja: create_user_role_html: "%{name}さんがロール『%{target}』を作成しました" demote_user_html: "%{name}さんが%{target}さんを降格しました" destroy_announcement_html: "%{name}さんがお知らせ %{target}を削除しました" + destroy_canonical_email_block_html: "%{name} さんがハッシュ %{target} を持つメールのブロックを解除しました。" destroy_custom_emoji_html: "%{name}さんがカスタム絵文字『%{target}』を削除しました" destroy_domain_allow_html: "%{name}さんが%{target}の連合許可を外しました" destroy_domain_block_html: "%{name}さんがドメイン %{target}のブロックを外しました" @@ -273,6 +275,7 @@ ja: update_announcement_html: "%{name}さんがお知らせ %{target}を更新しました" update_custom_emoji_html: "%{name}さんがカスタム絵文字 %{target}を更新しました" update_domain_block_html: "%{name}さんが%{target}のドメインブロックを更新しました" + update_ip_block_html: "%{name} さんがIP %{target} のルールを更新しました" update_status_html: "%{name}さんが%{target}さんの投稿を更新しました" update_user_role_html: "%{name}さんがロール『%{target}』を変更しました" empty: ログが見つかりませんでした @@ -318,6 +321,7 @@ ja: listed: 表示 new: title: 新規カスタム絵文字の追加 + no_emoji_selected: 何も選択されていないため、変更されていません not_permitted: この操作を実行する権限がありません。 overwrite: 上書き shortcode: ショートコード @@ -417,6 +421,8 @@ ja: unsuppress: おすすめフォローを復元 instances: availability: + description_html: + other: ドメインへの配信が %{count} 日失敗した場合、そのドメインからの配信を受信しない限り、それ以上の配信を行いません。 failure_threshold_reached: "%{date}に失敗のしきい値に達しました。" failures_recorded: other: "%{count}日間試行に失敗しました。" @@ -476,6 +482,7 @@ ja: total_followed_by_us: フォロー合計 total_reported: 通報合計 total_storage: 添付されたメディア + totals_time_period_hint_html: 以下に表示される合計には、すべての時間のデータが含まれています。 invites: deactivate_all: すべて無効化 filter: @@ -614,9 +621,11 @@ ja: manage_federation: 連合の管理 manage_federation_description: ユーザーが他のドメインとの連合をブロックまたは許可したり、配信を制御したりできます。 manage_invites: 招待を管理 + manage_invites_description: 招待リンクの閲覧・解除を可能にする。 manage_reports: レポートの管理 manage_reports_description: ユーザーがレポートを確認したり、モデレーションアクションを実行したりできます。 manage_roles: ロールの管理 + manage_roles_description: ユーザーが自分より下の役割を管理し、割り当てることができます。 manage_rules: ルールの管理 manage_rules_description: ユーザーがサーバールールを変更できるようにします manage_settings: 設定の管理 @@ -626,6 +635,7 @@ ja: manage_user_access: アクセス権を管理 manage_user_access_description: 他のユーザーの2段階認証を無効にしたり、メールアドレスを変更したり、パスワードをリセットしたりすることができます。 manage_users: ユーザーの管理 + manage_users_description: 他のユーザーの詳細情報を閲覧し、モデレーションを行うことができます。 manage_webhooks: Webhookの管理 manage_webhooks_description: 管理者イベントのWebhookを設定できます。 view_audit_log: 監査ログの表示 @@ -645,18 +655,24 @@ ja: settings: about: manage_rules: サーバーのルールを管理 + preamble: サーバーの運営、管理、資金調達の方法について、詳細な情報を提供します。 + rules_hint: ユーザーが守るべきルールのための専用エリアがあります。 title: About appearance: preamble: ウェブインターフェースをカスタマイズします。 title: 外観 branding: + preamble: サーバーのブランディングは、ネットワーク上の他のサーバーと区別するためのものです。この情報は、Mastodon の Web インターフェース、ネイティブアプリケーション、他の Web サイトやメッセージングアプリのリンクプレビューなど、様々な所で表示される可能性があります。このため、明確で短く、簡潔に記載することをおすすめします。 title: ブランディング content_retention: + preamble: ユーザーが生成したコンテンツがどのように Mastodon に保存されるかを管理します。 title: コンテンツの保持 discovery: follow_recommendations: おすすめフォロー + preamble: Mastodon を知らないユーザーを取り込むには、興味深いコンテンツを浮上させることが重要です。サーバー上で様々なディスカバリー機能がどのように機能するかを制御します。 profile_directory: ディレクトリ public_timelines: 公開タイムライン + title: 見つける trends: トレンド domain_blocks: all: 誰にでも許可 @@ -675,16 +691,29 @@ ja: delete: ファイルを削除 destroyed_msg: ファイルを削除しました! statuses: + account: 作成者 + application: アプリ back_to_account: アカウントページに戻る back_to_report: 通報ページに戻る batch: remove_from_report: 通報から削除 report: 通報 deleted: 削除済み + favourites: お気に入り + history: 更新履歴 + in_reply_to: 返信先 + language: 言語 media: title: メディア + metadata: メタデータ no_status_selected: 何も選択されていないため、変更されていません + open: 投稿を開く + original_status: オリジナルの投稿 + reblogs: ブースト + status_changed: 投稿を変更しました title: 投稿一覧 + trending: トレンド + visibility: 公開範囲 with_media: メディアあり strikes: actions: @@ -724,6 +753,9 @@ ja: description_html: これらは、多くのユーザーに共有されているリンクです。あなたのユーザーが世の中の動きを知るのに役立ちます。あなたが公開者を承認するまで、リンクは一般に表示されません。また、個別のリンクの許可・拒否も可能です。 disallow: リンクの拒否 disallow_provider: 発行者の拒否 + no_link_selected: 何も選択されていないため、変更されていません + publishers: + no_publisher_selected: 何も選択されていないため、変更されていません shared_by_over_week: other: 週間%{count}人に共有されました title: トレンドリンク @@ -739,8 +771,13 @@ ja: statuses: allow: 掲載を許可 allow_account: 投稿者を許可 + description_html: これらは、このサーバーが知っている、たくさんシェアされ、お気に入り登録されている投稿です。新しいユーザーや久しぶりにアクセスするユーザーがフォローする人を探すのに役立ちます。あなたが投稿者を承認し、投稿者が許可するまで、表示されることはありません。また、個別の投稿を許可または拒否することもできます。 disallow: 掲載を拒否 disallow_account: 投稿者を拒否 + no_status_selected: 何も選択されていないため、変更されていません + not_discoverable: 投稿者は発見可能であることに同意していません + shared_by: + other: "%{friendly_count} 回の共有、お気に入り" title: トレンド投稿 tags: current_score: 現在のスコア %{score} @@ -752,6 +789,7 @@ ja: tag_uses_measure: 合計利用数 description_html: これらは、多くの投稿に使用されているハッシュタグです。あなたのユーザーが、人々が今一番話題にしていることを知るのに役立ちます。あなたが承認するまで、ハッシュタグは一般に表示されません。 listable: おすすめに表示する + no_tag_selected: 何も選択されていないため、変更されていません not_listable: おすすめに表示しない not_trendable: トレンドに表示しない not_usable: 使用を禁止 @@ -777,12 +815,14 @@ ja: disable: 無効化 disabled: 無効 edit: エンドポイントを編集 + empty: まだWebhookエンドポイントが設定されていません。 enable: 有効化 enabled: アクティブ enabled_events: other: "%{count}件の有効なイベント" events: イベント new: 新しいwebhook + rotate_secret: シークレットをローテーションする status: ステータス title: Webhooks webhook: Webhook @@ -869,6 +909,7 @@ ja: migrate_account: 別のアカウントに引っ越す migrate_account_html: 引っ越し先を明記したい場合はこちらで設定できます。 or_log_in_with: または次のサービスでログイン + privacy_policy_agreement_html: プライバシーポリシーを読み、同意します providers: cas: CAS saml: SAML @@ -876,12 +917,18 @@ ja: registration_closed: "%{instance}は現在、新規登録停止中です" resend_confirmation: 確認メールを再送する reset_password: パスワードを再発行 + rules: + preamble: これらは %{domain} モデレータによって設定され、実施されます。 + title: いくつかのルールがあります。 security: セキュリティ set_new_password: 新しいパスワード setup: email_below_hint_html: 下記のメールアドレスが間違っている場合、ここで変更することで新たに確認メールを受信できます。 email_settings_hint_html: 確認用のメールを%{email}に送信しました。メールアドレスが正しくない場合、以下より変更することができます。 title: セットアップ + sign_up: + preamble: この Mastodon サーバーのアカウントがあれば、ネットワーク上の他の人のアカウントがどこでホストされているかに関係なく、その人をフォローすることができます。 + title: さあ %{domain} でセットアップしましょう. status: account_status: アカウントの状態 confirming: メールアドレスの確認が完了するのを待っています。 @@ -1030,6 +1077,7 @@ ja: statuses: 個別の投稿 title: フィルターを編集 errors: + deprecated_api_multiple_keywords: これらのパラメータは複数のフィルタキーワードに適用されるため、このアプリケーションから変更できません。 最新のアプリケーションまたはWebインターフェースを使用してください。 invalid_context: 対象がないか無効です index: contexts: "%{contexts}のフィルター" @@ -1052,6 +1100,7 @@ ja: batch: remove: フィルターから削除する index: + hint: このフィルターは、他の条件に関係なく個々の投稿を選択する場合に適用されます。Webインターフェースからこのフィルターにさらに投稿を追加できます。 title: フィルターされた投稿 footer: trending_now: トレンドタグ @@ -1064,6 +1113,8 @@ ja: none: なし order_by: 並び順 save_changes: 変更を保存 + select_all_matching_items: + other: 検索条件に一致するすべての %{count} 個の項目を選択 today: 今日 validation_errors: other: エラーが発生しました! 以下の%{count}件のエラーを確認してください @@ -1163,6 +1214,8 @@ ja: carry_blocks_over_text: このユーザーは、あなたがブロックしていた%{acct}から引っ越しました。 carry_mutes_over_text: このユーザーは、あなたがミュートしていた%{acct}から引っ越しました。 copy_account_note_text: このユーザーは%{acct}から引っ越しました。これは以前のメモです。 + navigation: + toggle_menu: メニューを表示 notification_mailer: admin: report: @@ -1425,6 +1478,9 @@ ja: pinned: 固定された投稿 reblogged: さんがブースト sensitive_content: 閲覧注意 + strikes: + errors: + too_late: このストライクに抗議するには遅すぎます tags: does_not_match_previous_name: 以前の名前と一致しません themes: @@ -1505,8 +1561,12 @@ ja: suspend: アカウントが停止されました welcome: edit_profile_action: プロフィールを設定 + edit_profile_step: |- + プロフィール画像をアップロードしたり、ディスプレイネームを変更したりして、プロフィールをカスタマイズできます。 + 新しいフォロワーのフォローリクエストを承認される前に、新しいフォロワーの確認をオプトインすることができます。 explanation: 始めるにあたってのアドバイスです final_action: 始めましょう + final_step: 'さあ、始めましょう! たとえフォロワーがまだいなくても、あなたの公開した投稿はローカルタイムラインやハッシュタグなどを通じて誰かの目にとまるはずです。自己紹介をしたいときには #introductions ハッシュタグが便利かもしれません。' full_handle: あなたの正式なユーザーID full_handle_hint: 別のサーバーの友達とフォローやメッセージをやり取りする際には、これを伝えることになります。 subject: Mastodonへようこそ diff --git a/config/locales/kab.yml b/config/locales/kab.yml index a4ea1f211..2ae6a455a 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -603,6 +603,8 @@ kab: prev: Win iɛeddan preferences: other: Wiyaḍ + privacy_policy: + title: Tasertit tabaḍnit relationships: activity: Armud n umiḍan followers: Imeḍfaṛen diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 3ae3fa681..3ad38d6cb 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -657,6 +657,8 @@ ko: settings: about: manage_rules: 서버 규칙 관리 + preamble: 이 서버가 어떻게 운영되고, 중재되고, 자금을 조달하는지 등에 관한 자세한 정보를 기입하세요. + rules_hint: 사용자들이 준수해야 할 규칙들을 위한 전용 공간입니다. title: 정보 appearance: preamble: 마스토돈의 웹 인터페이스를 변경 @@ -664,6 +666,7 @@ ko: branding: title: 브랜딩 content_retention: + preamble: 마스토돈에 저장된 사용자 콘텐츠를 어떻게 다룰지 제어합니다. title: 콘텐츠 보존기한 discovery: follow_recommendations: 팔로우 추천 @@ -676,6 +679,7 @@ ko: disabled: 아무에게도 안 함 users: 로그인 한 사용자에게 registrations: + preamble: 누가 이 서버에 계정을 만들 수 있는 지 제어합니다. title: 가입 registrations_mode: modes: @@ -1219,6 +1223,8 @@ ko: carry_blocks_over_text: 이 사용자는 당신이 차단한 %{acct}로부터 이주 했습니다. carry_mutes_over_text: 이 사용자는 당신이 뮤트한 %{acct}로부터 이주 했습니다. copy_account_note_text: '이 사용자는 %{acct}로부터 이동하였습니다. 당신의 이전 노트는 이렇습니다:' + navigation: + toggle_menu: 토글 메뉴 notification_mailer: admin: report: diff --git a/config/locales/ku.yml b/config/locales/ku.yml index 335271f3f..f3094f46e 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -677,7 +677,10 @@ ku: appearance: preamble: Navrûya tevnê ya Mastodon kesane bike. title: Xuyang + content_retention: + title: Parastina naverokê discovery: + follow_recommendations: Pêşniyarên şopandinê trends: Rojev domain_blocks: all: Bo herkesî @@ -695,16 +698,29 @@ ku: delete: Pela barkirî jê bibe destroyed_msg: Barkirina malperê bi serkeftî hate jêbirin! statuses: + account: Nivîskar + application: Sepan back_to_account: Vegere bo rûpela ajimêr back_to_report: Vegere rûpela ragihandinê batch: remove_from_report: Ji ragihandinê rake report: Ragihîne deleted: Hate jêbirin + favourites: Bijarte + history: Dîroka guhertoyê + in_reply_to: Bersiv bide + language: Ziman media: title: Medya + metadata: Metadata no_status_selected: Tu şandî nehat hilbijartin ji ber vê tu şandî jî nehat guhertin + open: Şandiyê veke + original_status: Şandiyê resen + reblogs: Ji nû ve nivîsandin + status_changed: Şandî hate guhertin title: Şandiyên ajimêr + trending: Rojev + visibility: Xuyabarî with_media: Bi medya yê re strikes: actions: @@ -1226,6 +1242,8 @@ ku: carry_blocks_over_text: Ev bikarhêner ji %{acct}, ku te astengkirî bû, bar kir. carry_mutes_over_text: Ev bikarhêner ji %{acct}, ku te bê deng kirbû, bar kir. copy_account_note_text: 'Ev bikarhêner ji %{acct} livî ye, li vir nîşeyên te yên berê ku te di derbarê wî/ê de nivîsandiye:' + navigation: + toggle_menu: Menuyê biguherîne notification_mailer: admin: report: diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 47dafbad6..57647b142 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -1275,6 +1275,8 @@ lv: carry_blocks_over_text: Šis lietotājs pārcēlās no %{acct}, kuru tu biji bloķējis. carry_mutes_over_text: Šis lietotājs pārcēlās no %{acct}, kuru tu biji apklusinājis. copy_account_note_text: 'Šis lietotājs pārcēlās no %{acct}, šeit bija tavas iepriekšējās piezīmes par viņu:' + navigation: + toggle_menu: Pārslēgt izvēlni notification_mailer: admin: report: diff --git a/config/locales/my.yml b/config/locales/my.yml new file mode 100644 index 000000000..399105ce0 --- /dev/null +++ b/config/locales/my.yml @@ -0,0 +1,12 @@ +--- +my: + errors: + '400': The request you submitted was invalid or malformed. + '403': You don't have permission to view this page. + '404': The page you are looking for isn't here. + '406': This page is not available in the requested format. + '410': The page you were looking for doesn't exist here anymore. + '422': + '429': Too many requests + '500': + '503': The page could not be served due to a temporary server failure. diff --git a/config/locales/nl.yml b/config/locales/nl.yml index fcc777af2..207376776 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -58,6 +58,7 @@ nl: demote: Degraderen destroyed_msg: De verwijdering van de gegevens van %{username} staat nu in de wachtrij disable: Bevriezen + disable_sign_in_token_auth: E-mail token authenticatie uitschakelen disable_two_factor_authentication: 2FA uitschakelen disabled: Bevroren display_name: Weergavenaam @@ -66,6 +67,7 @@ nl: email: E-mail email_status: E-mailstatus enable: Ontdooien + enable_sign_in_token_auth: E-mail token authenticatie inschakelen enabled: Ingeschakeld enabled_msg: Het ontdooien van het account van %{username} is geslaagd followers: Volgers @@ -420,6 +422,9 @@ nl: unsuppress: Account weer aanbevelen instances: availability: + failures_recorded: + one: Mislukte poging op %{count} dag. + other: Mislukte pogingen op %{count} verschillende dagen. no_failures_recorded: Geen storingen bekend. title: Beschikbaarheid warning: De laatste poging om met deze server te verbinden was onsuccesvol @@ -674,6 +679,7 @@ nl: with_media: Met media strikes: actions: + delete_statuses: "%{name} heeft de toots van %{target} verwijderd" silence: "%{name} beperkte het account %{target}" suspend: "%{name} schortte het account %{target} op" appeal_approved: Bezwaar ingediend @@ -737,8 +743,10 @@ nl: listable: Kan worden aanbevolen no_tag_selected: Er werden geen hashtags gewijzigd, omdat er geen enkele werd geselecteerd not_listable: Wordt niet aanbevolen + not_trendable: Zal niet onder trends verschijnen not_usable: Kan niet worden gebruikt title: Trending hashtags + trendable: Kan onder trends verschijnen trending_rank: 'Trending #%{rank}' usable: Kan worden gebruikt title: Trends diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 9f6c024c8..5a6dd0ecb 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -1301,6 +1301,8 @@ pl: carry_blocks_over_text: Ten użytkownik przeniósł się z konta %{acct}, które zablokowałeś(-aś). carry_mutes_over_text: Ten użytkownik przeniósł się z konta %{acct}, które wyciszyłeś(-aś). copy_account_note_text: 'Ten użytkownik przeniósł się z konta %{acct}, oto Twoje poprzednie notatki o nim:' + navigation: + toggle_menu: Przełącz menu notification_mailer: admin: report: diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 8ac53680d..032187a34 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -5,6 +5,7 @@ pt-BR: contact_missing: Não definido contact_unavailable: Não disponível hosted_on: Instância Mastodon em %{domain} + title: Sobre accounts: follow: Seguir followers: @@ -173,6 +174,7 @@ pt-BR: confirm_user: Confirmar Usuário create_account_warning: Criar Aviso create_announcement: Criar Anúncio + create_canonical_email_block: Criar bloqueio de Endereço eletrônico create_custom_emoji: Criar Emoji Personalizado create_domain_allow: Adicionar domínio permitido create_domain_block: Criar Bloqueio de Domínio @@ -182,6 +184,7 @@ pt-BR: create_user_role: Criar Função demote_user: Rebaixar usuário destroy_announcement: Excluir anúncio + destroy_canonical_email_block: Excluir Bloqueio de Endereço Eletrônico destroy_custom_emoji: Excluir emoji personalizado destroy_domain_allow: Excluir domínio permitido destroy_domain_block: Excluir Bloqueio de Domínio @@ -217,6 +220,7 @@ pt-BR: update_announcement: Editar anúncio update_custom_emoji: Editar Emoji Personalizado update_domain_block: Atualizar bloqueio de domínio + update_ip_block: Atualizar regra de IP update_status: Editar Status update_user_role: Atualizar função actions: @@ -228,6 +232,7 @@ pt-BR: confirm_user_html: "%{name} confirmou o endereço de e-mail do usuário %{target}" create_account_warning_html: "%{name} enviou um aviso para %{target}" create_announcement_html: "%{name} criou o novo anúncio %{target}" + create_canonical_email_block_html: "%{name} bloqueou o endereço com o marcador %{target}" create_custom_emoji_html: "%{name} enviou o novo emoji %{target}" create_domain_allow_html: "%{name} permitiu federação com domínio %{target}" create_domain_block_html: "%{name} bloqueou o domínio %{target}" @@ -237,6 +242,8 @@ pt-BR: create_user_role_html: "%{name} criou a função %{target}" demote_user_html: "%{name} rebaixou o usuário %{target}" destroy_announcement_html: "%{name} excluiu o anúncio %{target}" + destroy_canonical_email_block_html: "%{name} desbloqueou o endereço com o marcador %{target}" + destroy_custom_emoji_html: "%{name} apagou o emoji %{target}" destroy_domain_allow_html: "%{name} bloqueou federação com domínio %{target}" destroy_domain_block_html: "%{name} deixou de bloquear domínio %{target}" destroy_email_domain_block_html: "%{name} adicionou domínio de e-mail %{target} à lista branca" @@ -271,6 +278,7 @@ pt-BR: update_announcement_html: "%{name} atualizou o comunicado %{target}" update_custom_emoji_html: "%{name} atualizou o emoji %{target}" update_domain_block_html: "%{name} atualizou o bloqueio de domínio de %{target}" + update_ip_block_html: "%{name} alterou a regra para IP %{target}" update_status_html: "%{name} atualizou a publicação de %{target}" update_user_role_html: "%{name} alterou a função %{target}" empty: Nenhum registro encontrado. @@ -316,6 +324,7 @@ pt-BR: listed: Listado new: title: Adicionar novo emoji personalizado + no_emoji_selected: Nenhum emoji foi alterado, pois nenhum foi selecionado not_permitted: Você não tem permissão para executar esta ação overwrite: Sobrescrever shortcode: Atalho @@ -538,9 +547,15 @@ pt-BR: action_log: Logs de auditoria action_taken_by: Atitude tomada por actions: + delete_description_html: As publicações denunciadas serão apagadas e um aviso de violação será mantido para te informar sobre o agravamento caso essa mesma conta cometa infrações no futuro. + mark_as_sensitive_description_html: Os conteúdos de mídia em publicações denunciadas serão marcados como sensíveis e um aviso de violação será mantido para te informar sobre o agravamento caso essa mesma conta comenta infrações no futuro. other_description_html: Veja mais opções para controlar o comportamento da conta e personalizar a comunicação com a conta reportada. + resolve_description_html: Nenhuma ação será tomada contra a conta denunciada, nenhuma violação será guardada, e a denúncia será encerrada. silence_description_html: O perfil será visível apenas para aqueles que já o seguem ou que o procuram manualmente, limitando severamente seu alcance. Pode ser sempre revertido. suspend_description_html: O perfil e todo o seu conteúdo ficarão inacessíveis até que seja eventualmente excluído. Interagir com a conta será impossível. Reversível dentro de 30 dias. + actions_description_html: 'Decida que medidas tomar para resolver esta denúncia. Se você receber uma ação punitiva contra a conta denunciada, ela receberá uma notificação por e-mail, exceto quando for selecionada a categoria Spam for selecionada. + + ' add_to_report: Adicionar mais ao relatório are_you_sure: Você tem certeza? assign_to_self: Pegar @@ -568,6 +583,7 @@ pt-BR: title: Notas notes_description_html: Visualize e deixe anotações para outros moderadores e para o seu "eu" do futuro quick_actions_description_html: 'Tome uma ação rápida ou role para baixo para ver o conteúdo relatado:' + remote_user_placeholder: o usuário remoto de %{instance} reopen: Reabrir denúncia report: 'Denúncia #%{id}' reported_account: Conta denunciada @@ -591,6 +607,7 @@ pt-BR: other: "%{count} usuários" categories: administration: Administração + devops: Devops invites: Convites moderation: Moderação special: Especial @@ -602,17 +619,24 @@ pt-BR: privileges: administrator: Administrador administrator_description: Usuários com essa permissão irão ignorar todas as permissões + delete_user_data: Apagar Dados de Usuário + delete_user_data_description: Permitir aos usuários apagar os dados de outros usuários instantaneamente invite_users: Convidar Usuários invite_users_description: Permite que os usuários convidem novas pessoas para o servidor manage_announcements: Gerenciar Avisos manage_announcements_description: Permite aos usuários gerenciar anúncios no servidor + manage_appeals: Gerenciar Apelações + manage_appeals_description: Permite aos usuários revisar as apelações contra ações de moderação + manage_blocks: Gerenciar Bloqueios manage_blocks_description: Permite aos usuários bloquear provedores de e-mail e endereços IP + manage_custom_emojis: Gerenciar Emojis Personalizados manage_custom_emojis_description: Permite aos usuários gerenciar emojis personalizados no servidor manage_federation: Gerenciar Federação manage_federation_description: Permite aos usuários bloquear ou permitir federação com outros domínios e controlar a entregabilidade manage_invites: Gerenciar convites manage_invites_description: Permite que os usuários naveguem e desativem os links de convites manage_reports: Gerenciar relatórios + manage_reports_description: Permite aos usuários avaliar denúncias e realizar ações de moderação contra elas manage_roles: Gerenciar Funções manage_roles_description: Permitir que os usuários gerenciem e atribuam papéis abaixo deles manage_rules: Gerenciar Regras @@ -631,6 +655,8 @@ pt-BR: view_audit_log_description: Permite aos usuários ver um histórico de ações administrativas no servidor view_dashboard: Ver painel view_dashboard_description: Permite que os usuários acessem o painel e várias métricas + view_devops: Devops + view_devops_description: Permite aos usuários acessar os painéis da Sidekiq e pgHero title: Funções rules: add_new: Adicionar regra @@ -640,6 +666,14 @@ pt-BR: empty: Nenhuma regra do servidor foi definida. title: Regras do servidor settings: + about: + title: Sobre + appearance: + title: Aparência + branding: + title: Marca + discovery: + trends: Tendências domain_blocks: all: Para todos disabled: Para ninguém @@ -649,16 +683,23 @@ pt-BR: approved: Aprovação necessária para criar conta none: Ninguém pode criar conta open: Qualquer um pode criar conta + title: Configurações do Servidor site_uploads: delete: Excluir arquivo enviado destroyed_msg: Upload do site excluído com sucesso! statuses: + account: Autor + application: Aplicativo back_to_account: Voltar para página da conta back_to_report: Voltar às denúncias batch: remove_from_report: Remover do relatório report: Denunciar deleted: Excluídos + favourites: Favoritos + history: Histórico de versões + in_reply_to: Em resposta a + language: Idioma media: title: Mídia no_status_selected: Nenhum status foi modificado porque nenhum estava selecionado @@ -736,14 +777,18 @@ pt-BR: enable: Habilitar enabled: Ativo events: Eventos + rotate_secret: Girar segredo status: Status admin_mailer: new_appeal: actions: delete_statuses: para excluir suas publicações + disable: para congelar sua conta + mark_statuses_as_sensitive: para marcar suas publicações como sensíveis none: um aviso sensitive: para marcar sua conta como sensível silence: para limitar sua conta + suspend: para suspender sua conta new_pending_account: body: Os detalhes da nova conta estão abaixo. Você pode aprovar ou vetar. subject: Nova conta para revisão em %{instance} (%{username}) @@ -988,6 +1033,7 @@ pt-BR: changes_saved_msg: Alterações foram salvas com sucesso! copy: Copiar delete: Excluir + deselect: Desmarcar todos none: Nenhum order_by: Ordenar por save_changes: Salvar alterações @@ -1197,6 +1243,9 @@ pt-BR: invalid_rules: não faz referência a regras válidas rss: content_warning: 'Aviso de conteúdo:' + descriptions: + account: Publicações públicas de @%{acct} + tag: 'Publicações públicas marcadas com #%{hashtag}' scheduled_statuses: over_daily_limit: Você excedeu o limite de %{limit} toots agendados para esse dia over_total_limit: Você excedeu o limite de %{limit} toots agendados @@ -1355,6 +1404,9 @@ pt-BR: pinned: Toot fixado reblogged: deu boost sensitive_content: Conteúdo sensível + strikes: + errors: + too_late: É tarde demais para apelar esta violação tags: does_not_match_previous_name: não corresponde ao nome anterior themes: @@ -1412,9 +1464,13 @@ pt-BR: disable: Você não poderá mais usar a sua conta, mas o seu perfil e outros dados permanecem intactos. Você pode solicitar um backup dos seus dados, mudar as configurações ou excluir sua conta. sensitive: A partir de agora, todos os seus arquivos de mídia enviados serão marcados como confidenciais e escondidos por trás de um aviso de clique. reason: 'Motivo:' + statuses: 'Publicações citadas:' subject: + delete_statuses: Suas publicações em %{acct} foram removidas disable: Sua conta %{acct} foi bloqueada + mark_statuses_as_sensitive: Suas publicações em %{acct} foram marcadas como sensíveis none: Aviso para %{acct} + sensitive: Suas publicações em %{acct} serão marcadas como sensíveis a partir de agora silence: Sua conta %{acct} foi silenciada suspend: Sua conta %{acct} foi banida title: @@ -1422,6 +1478,7 @@ pt-BR: disable: Conta bloqueada mark_statuses_as_sensitive: Postagens marcadas como sensíveis none: Aviso + sensitive: Conta marcada como sensível silence: Conta silenciada suspend: Conta banida welcome: diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index a5c4a6de1..d1f29a92b 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -1249,6 +1249,8 @@ pt-PT: carry_blocks_over_text: Este utilizador migrou de %{acct}, que você tinha bloqueado. carry_mutes_over_text: Este utilizador migrou de %{acct}, que você tinha silenciado. copy_account_note_text: 'Este utilizador migrou de %{acct}, aqui estão as suas notas anteriores sobre ele:' + navigation: + toggle_menu: Abrir/fechar menu notification_mailer: admin: report: diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 086c28226..6d6395952 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -1177,6 +1177,8 @@ ru: carry_blocks_over_text: Этот пользователь переехал с учётной записи %{acct}, которую вы заблокировали. carry_mutes_over_text: Этот пользователь перешёл с учётной записи %{acct}, которую вы игнорируете. copy_account_note_text: 'Этот пользователь переехал с %{acct}, вот ваша предыдущая заметка о нём:' + navigation: + toggle_menu: Переключить меню notification_mailer: admin: report: diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml index 35772a11e..1ed63a99a 100644 --- a/config/locales/simple_form.ar.yml +++ b/config/locales/simple_form.ar.yml @@ -67,6 +67,8 @@ ar: with_dns_records: سوف تُبذل محاولة لحل سجلات DNS الخاصة بالنطاق المعني، كما ستُمنع النتائج featured_tag: name: 'رُبَّما تريد·ين استخدام واحد مِن بين هذه:' + form_admin_settings: + site_contact_username: كيف يمكن للناس أن يصلوا إليك في ماستدون. form_challenge: current_password: إنك بصدد الدخول إلى منطقة آمنة imports: @@ -185,11 +187,21 @@ ar: with_dns_records: تضمين سجلات MX و عناوين IP للنطاق featured_tag: name: الوسم + filters: + actions: + hide: إخفاء بالكامل form_admin_settings: + custom_css: سي أس أس CSS مخصص + profile_directory: تفعيل دليل الصفحات التعريفية + registrations_mode: من يمكنه التسجيل + require_invite_text: يتطلب سببا للانضمام + site_extended_description: الوصف الموسع + site_short_description: وصف الخادم site_terms: سياسة الخصوصية site_title: اسم الخادم theme: الحُلَّة الإفتراضية thumbnail: الصورة المصغرة للخادم + trends: تمكين المتداوَلة interactions: must_be_follower: حظر الإخطارات القادمة من حسابات لا تتبعك must_be_following: حظر الإخطارات القادمة من الحسابات التي لا تتابعها @@ -203,6 +215,7 @@ ar: ip: عنوان IP severities: no_access: حظر الوصول + sign_up_block: حظر التسجيلات sign_up_requires_approval: حد التسجيلات severity: قانون notification_emails: @@ -225,6 +238,9 @@ ar: role: الدور user_role: color: لون الشارة + name: التسمية + permissions_as_keys: الصلاحيات + position: الأولوية 'no': لا not_recommended: غير مستحسن recommended: موصى بها diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index 9f2c2e562..0c63e5133 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -92,6 +92,7 @@ da: theme: Tema, som udloggede besøgende og nye brugere ser. thumbnail: Et ca. 2:1 billede vist sammen med serveroplysningerne. timeline_preview: Udloggede besøgende kan gennemse serverens seneste offentlige indlæg. + trendable_by_default: Spring manuel gennemgang af trendindhold over. Individuelle elementer kan stadig fjernes fra trends efter kendsgerningen. trends: Tendenser viser, hvilke indlæg, hashtags og nyheder opnår momentum på serveren. form_challenge: current_password: Du bevæger dig ind på et sikkert område diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index c0638b323..20600c878 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -8,7 +8,7 @@ de: acct: Gib den benutzernamen@domain des Kontos an, zu dem du umziehen möchtest account_warning_preset: text: Du kannst Beitragssyntax benutzen, wie z.B. URLs, Hashtags und Erwähnungen - title: Optional. Für den Empfänger nicht sichtbar + title: Freiwillige Angabe. Die Accounts können dies nicht sehen admin_account_action: include_statuses: Der Benutzer wird sehen, welche Beiträge diese Maßnahme verursacht haben send_email_notification: Benutzer_in wird Bescheid gegeben, was mit dem Konto geschehen ist @@ -17,7 +17,7 @@ de: types: disable: Den Benutzer daran hindern, sein Konto zu verwenden, aber seinen Inhalt nicht löschen oder ausblenden. none: Verwende dies, um eine Warnung an den Benutzer zu senden, ohne eine andere Aktion auszulösen. - sensitive: Erzwinge, dass alle Medienanhänge des Benutzers als NSFW markiert werden. + sensitive: Erzwinge, dass alle Medien-Dateien dieses Profils mit einer Inhaltswarnung (NSFW) versehen werden. silence: Verhindern, dass der Benutzer in der Lage ist, mit der öffentlichen Sichtbarkeit zu posten und seine Beiträge und Benachrichtigungen von Personen zu verstecken, die ihm nicht folgen. suspend: Verhindert jegliche Interaktion von oder zu diesem Konto und löscht dessen Inhalt. Kann innerhalb von 30 Tagen rückgängig gemacht werden. warning_preset_id: Optional. Du kannst immer noch eigenen Text an das Ende der Vorlage hinzufügen @@ -26,41 +26,41 @@ de: ends_at: Optional. Die Ankündigung wird zu diesem Zeitpunkt automatisch zurückgezogen scheduled_at: Leer lassen, um die Ankündigung sofort zu veröffentlichen starts_at: Optional. Falls deine Ankündigung an einen bestimmten Zeitraum gebunden ist - text: Du kannst die Toot-Syntax verwenden. Bitte beachte den Platz, den die Ankündigung auf dem Bildschirm des Benutzers einnehmen wird + text: Du kannst die Beitrags-Syntax verwenden. Bitte beachte den Platz, den die Ankündigung auf dem Bildschirm der Benutzer*innen einnehmen wird appeal: text: Du kannst nur einmal einen Einspruch bei einem Strike einlegen defaults: - autofollow: Leute, die sich über deine Einladung registrieren, werden dir automatisch folgen + autofollow: Accounts, die sich über deine Einladung registrieren, folgen automatisch deinem Profil avatar: PNG, GIF oder JPG. Maximal %{size}. Wird auf %{dimensions} px herunterskaliert bot: Dieses Konto führt lediglich automatisierte Aktionen durch und wird möglicherweise nicht überwacht - context: Ein oder mehrere Kontexte, wo der Filter aktiv werden soll + context: In welchem Bereich soll der Filter aktiv sein? current_password: Aus Sicherheitsgründen gib bitte das Passwort des aktuellen Kontos ein current_username: Um das zu bestätigen, gib den Benutzernamen des aktuellen Kontos ein - digest: Wenn du eine lange Zeit inaktiv bist, wird dir eine Zusammenfassung von Erwähnungen zugeschickt, die du in deiner Abwesenheit empfangen hast + digest: Wenn du eine längere Zeit inaktiv bist oder du in deiner Abwesenheit eine Direktnachricht erhalten hast discoverable: Erlaube deinem Konto, durch Empfehlungen, Trends und andere Funktionen von Fremden entdeckt zu werden - email: Du wirst eine Bestätigungs-E-Mail erhalten + email: Du wirst eine E-Mail zur Verifizierung Deiner E-Mail-Adresse erhalten fields: Du kannst bis zu 4 Elemente auf deinem Profil anzeigen lassen, die als Tabelle dargestellt werden header: PNG, GIF oder JPG. Maximal %{size}. Wird auf %{dimensions} px herunterskaliert inbox_url: Kopiere die URL von der Startseite des gewünschten Relays - irreversible: Gefilterte Beiträge werden unwiderruflich gelöscht, selbst wenn der Filter später entfernt wird + irreversible: Bereinigte Beiträge verschwinden unwiderruflich für dich, auch dann, wenn dieser Filter zu einem späteren wieder entfernt wird locale: Die Sprache der Oberfläche, E-Mails und Push-Benachrichtigungen - locked: Wer dir folgen möchte, muss um deine Erlaubnis bitten + locked: Wer dir folgen und deine Inhalte sehen möchte, muss dein Follower sein und dafür um deine Erlaubnis bitten password: Verwende mindestens 8 Zeichen phrase: Wird schreibungsunabhängig mit dem Text und Inhaltswarnung eines Beitrags verglichen scopes: Welche Schnittstellen der Applikation erlaubt sind. Wenn du einen Top-Level-Scope auswählst, dann musst du nicht jeden einzelnen darunter auswählen. setting_aggregate_reblogs: Zeige denselben Beitrag nicht nochmal an, wenn er erneut geteilt wurde (dies betrifft nur neulich erhaltene erneut geteilte Beiträge) - setting_always_send_emails: Normalerweise werden E-Mail-Benachrichtigungen nicht gesendet, wenn du Mastodon aktiv verwendest - setting_default_sensitive: NSFW-Medien werden erst nach einem Klick sichtbar - setting_display_media_default: Verstecke Medien, die als NSFW markiert sind + setting_always_send_emails: Normalerweise werden Benachrichtigungen nicht per E-Mail verschickt, wenn du gerade auf Mastodon aktiv bist + setting_default_sensitive: Medien, die mit einer Inhaltswarnung (NSFW) versehen worden sind, werden – je nach Einstellung – erst nach einem zusätzlichen Klick angezeigt + setting_display_media_default: Verberge alle Medien, die mit einer Inhaltswarnung (NSFW) versehen sind setting_display_media_hide_all: Alle Medien immer verstecken setting_display_media_show_all: Alle Medien immer anzeigen setting_hide_network: Wem du folgst und wer dir folgt, wird in deinem Profil nicht angezeigt - setting_noindex: Betrifft dein öffentliches Profil und deine Beiträge + setting_noindex: Betrifft alle öffentlichen Daten deines Profils, z. B. deine Beiträge, Account-Empfehlungen und „Über mich“ setting_show_application: Die Anwendung die du nutzt wird in der detaillierten Ansicht deiner Beiträge angezeigt setting_use_blurhash: Die Farbverläufe basieren auf den Farben der versteckten Medien, aber verstecken jegliche Details setting_use_pending_items: Neue Beiträge hinter einem Klick verstecken, anstatt automatisch zu scrollen username: Dein Benutzername wird auf %{domain} einzigartig sein - whole_word: Wenn das Schlagwort nur aus Buchstaben und Zahlen besteht, wird es nur angewendet, wenn es dem ganzen Wort entspricht + whole_word: Wenn das Wort oder die Formulierung nur aus Buchstaben oder Zahlen besteht, tritt der Filter nur dann in Kraft, wenn er exakt dieser Zeichenfolge entspricht domain_allow: domain: Diese Domain kann Daten von diesem Server abrufen, und eingehende Daten werden verarbeitet und gespeichert email_domain_block: @@ -75,9 +75,25 @@ de: warn: Den gefilterten Inhalt hinter einer Warnung ausblenden, die den Filtertitel beinhaltet form_admin_settings: backups_retention_period: Behalte generierte Benutzerarchive für die angegebene Anzahl von Tagen. + bootstrap_timeline_accounts: Diese Konten werden bei den Folge-Empfehlungen für neue Nutzerinnen und Nutzer oben angeheftet. closed_registrations_message: Wird angezeigt, wenn Anmeldungen geschlossen sind content_cache_retention_period: Beiträge von anderen Servern werden nach der angegebenen Anzahl von Tagen, wenn sie auf einen positiven Wert gesetzt werden, gelöscht. Dies kann eventuell nicht rückgängig gemacht werden. + custom_css: Sie können benutzerdefinierte Stile auf die Web-Version von Mastodon anwenden. + mascot: Überschreibt die Abbildung in der erweiterten Weboberfläche. media_cache_retention_period: Heruntergeladene Mediendateien werden nach der angegebenen Anzahl von Tagen, wenn sie auf einen positiven Wert gesetzt werden, gelöscht und bei Bedarf erneut heruntergeladen. + profile_directory: Das Profilverzeichnis listet alle Benutzer auf, die sich für die Auffindbarkeit entschieden haben. + require_invite_text: Wenn Anmeldungen eine manuelle Genehmigung erfordern, machen Sie die Texteingabe „Warum möchten Sie beitreten?” obligatorisch und nicht optional. + site_contact_email: Wie man Sie bei rechtlichen oder unterstützenden Fragen erreichen kann. + site_contact_username: Wie man Sie auf Mastodon erreichen kann. + site_extended_description: Alle zusätzlichen Informationen, die für Besucher und Nutzer nützlich sein könnten. Kann mit der Markdown-Syntax strukturiert werden. + site_short_description: Eine kurze Beschreibung zur eindeutigen Identifizierung Ihres Servers. Wer betreibt ihn, für wen ist er bestimmt? + site_terms: Verwenden Sie Ihre eigene Datenschutzrichtlinie oder lassen Sie sie leer, um die Standardeinstellung zu verwenden. Kann mit Markdown-Syntax strukturiert werden. + site_title: Wie Personen neben dem Domainnamen auf Ihren Server verweisen können. + theme: Design, das abgemeldete und neue Benutzer*innen. + thumbnail: Ein Bild ungefähr im 2:1-Format, das neben den Server-Informationen angezeigt wird. + timeline_preview: Ausgeloggte Besucherinnen und Besucher können die neuesten öffentlichen Beiträge auf dem Server ansehen. + trendable_by_default: Manuelles Überprüfen angesagter Inhalte überspringen. Einzelne Elemente können später noch aus den Trends entfernt werden. + trends: Trends zeigen, welche Beiträge, Hashtags und Nachrichten auf Ihrem Server an Bedeutung gewinnen. form_challenge: current_password: Du betrittst einen sicheren Bereich imports: @@ -101,7 +117,7 @@ de: tag: name: Du kannst zum Beispiel nur die Groß- und Kleinschreibung der Buchstaben ändern, um es lesbarer zu machen user: - chosen_languages: Wenn aktiviert, werden nur Beiträge in den ausgewählten Sprachen auf den öffentlichen Zeitleisten angezeigt + chosen_languages: Wenn Du hier eine oder mehreren Sprachen auswählst, werden ausschließlich solche Beiträge in den öffentlichen Timelines angezeigt role: Die Rolle kontrolliert welche Berechtigungen ein Benutzer hat user_role: color: Die Farbe, die für die Rolle im gesamten UI verwendet wird, als RGB im Hexformat @@ -132,7 +148,7 @@ de: types: disable: Deaktivieren none: Nichts tun - sensitive: NSFW + sensitive: Inhaltswarnung (NSFW) silence: Stummschalten suspend: Deaktivieren und Benutzerdaten unwiderruflich löschen warning_preset_id: Benutze eine Warnungsvorlage @@ -145,13 +161,13 @@ de: appeal: text: Erkläre, warum diese Entscheidung rückgängig gemacht werden soll defaults: - autofollow: Eingeladene Nutzer sollen dir automatisch folgen + autofollow: Eingeladene Nutzer folgen dir automatisch avatar: Profilbild bot: Dieses Profil ist ein Bot - chosen_languages: Sprachen filtern + chosen_languages: Nach Sprachen filtern confirm_new_password: Neues Passwort bestätigen confirm_password: Passwort bestätigen - context: In Kontexten filtern + context: Filter nach Bereichen current_password: Derzeitiges Passwort data: Daten discoverable: Dieses Profil im Profilverzeichnis zeigen @@ -162,37 +178,37 @@ de: header: Titelbild honeypot: "%{label} (nicht ausfüllen)" inbox_url: Inbox-URL des Relais - irreversible: Verwerfen statt verstecken + irreversible: Endgültig, nicht nur temporär ausblenden locale: Sprache der Benutzeroberfläche - locked: Profil sperren + locked: Geschütztes Profil max_uses: Maximale Verwendungen new_password: Neues Passwort note: Über mich otp_attempt: Zwei-Faktor-Authentifizierung password: Passwort - phrase: Schlagwort oder Satz + phrase: Wort oder Formulierung setting_advanced_layout: Fortgeschrittene Benutzeroberfläche benutzen setting_aggregate_reblogs: Gruppiere erneut geteilte Beiträge auf der Startseite - setting_always_send_emails: E-Mail-Benachrichtigungen immer senden + setting_always_send_emails: Benachrichtigungen immer senden setting_auto_play_gif: Animierte GIFs automatisch abspielen setting_boost_modal: Bestätigungsdialog anzeigen, bevor ein Beitrag geteilt wird setting_crop_images: Bilder in nicht ausgeklappten Beiträgen auf 16:9 zuschneiden setting_default_language: Beitragssprache setting_default_privacy: Beitragssichtbarkeit - setting_default_sensitive: Medien immer als NSFW markieren + setting_default_sensitive: Eigene Medien immer mit einer Inhaltswarnung (NSFW) versehen setting_delete_modal: Bestätigungsdialog anzeigen, bevor ein Beitrag gelöscht wird setting_disable_swiping: Deaktiviere Wischgesten setting_display_media: Medien-Anzeige - setting_display_media_default: NSFW-Inhalte verstecken + setting_display_media_default: Standard setting_display_media_hide_all: Alle Medien verstecken setting_display_media_show_all: Alle Medien anzeigen setting_expand_spoilers: Beiträge mit Inhaltswarnungen immer ausklappen - setting_hide_network: Netzwerk ausblenden + setting_hide_network: Deine Follower und „Folge ich“ nicht anzeigen setting_noindex: Suchmaschinen-Indexierung verhindern setting_reduce_motion: Bewegung in Animationen verringern - setting_show_application: Anwendung preisgeben, die benutzt wurde, um Beiträge zu versenden - setting_system_font_ui: Standardschriftart des Systems verwenden - setting_theme: Theme + setting_show_application: Den Namen der App offenlegen, mit der du deine Beiträge veröffentlichst + setting_system_font_ui: Standardschriftart des Browsers verwenden + setting_theme: Design setting_trends: Heutige Trends anzeigen setting_unfollow_modal: Bestätigungsdialog anzeigen, bevor jemandem entfolgt wird setting_use_blurhash: Farbverlauf für versteckte Medien anzeigen @@ -203,7 +219,7 @@ de: type: Art des Imports username: Profilname username_or_email: Profilname oder E-Mail - whole_word: Ganzes Wort + whole_word: Phrasensuche mit exakter Zeichenfolge erzwingen email_domain_block: with_dns_records: MX-Einträge und IP-Adressen der Domain einbeziehen featured_tag: @@ -214,20 +230,32 @@ de: warn: Mit einer Warnung ausblenden form_admin_settings: backups_retention_period: Aufbewahrungsfrist für Benutzerarchive + bootstrap_timeline_accounts: Neuen Nutzern immer diese Konten empfehlen closed_registrations_message: Benutzerdefinierte Nachricht, wenn Anmeldungen nicht verfügbar sind content_cache_retention_period: Aufbewahrungsfrist für Inhalte im Cache custom_css: Benutzerdefiniertes CSS + mascot: Benutzerdefiniertes Maskottchen (Legacy) media_cache_retention_period: Aufbewahrungsfrist für den Medien-Cache + profile_directory: Benutzerliste aktivieren registrations_mode: Wer kann sich registrieren + require_invite_text: Grund für den Beitritt verlangen show_domain_blocks: Zeige Domain-Blockaden + show_domain_blocks_rationale: Anzeigen, warum Domains gesperrt wurden + site_contact_email: E-Mail-Adresse des Kontakts + site_contact_username: Benutzername des Kontakts + site_extended_description: Detaillierte Beschreibung site_short_description: Serverbeschreibung site_terms: Datenschutzerklärung site_title: Servername + theme: Standard-Design + thumbnail: Vorschaubild des Servers + timeline_preview: Nicht-authentifizierten Zugriff auf öffentliche Timelines gestatten + trendable_by_default: Trends ohne vorherige Überprüfung erlauben trends: Trends aktivieren interactions: - must_be_follower: Benachrichtigungen von Profilen blockieren, die mir nicht folgen - must_be_following: Benachrichtigungen von Profilen blockieren, denen ich nicht folge - must_be_following_dm: Private Nachrichten von Profilen, denen ich nicht folge, blockieren + must_be_follower: Benachrichtigungen von Profilen verbergen, die mir nicht folgen + must_be_following: Benachrichtigungen von Profilen verbergen, denen ich nicht folge + must_be_following_dm: Direktnachrichten von Profilen, denen Du nicht folgst, nicht gestatten invite: comment: Kommentar invite_request: @@ -242,14 +270,14 @@ de: severity: Regel notification_emails: appeal: Jemand hat Einspruch gegen eine Moderatorentscheidung eingelegt - digest: Kurzfassungen über E-Mail senden - favourite: E-Mail senden, wenn jemand meinen Beitrag favorisiert - follow: E-Mail senden, wenn mir jemand folgt - follow_request: E-Mail senden, wenn mir jemand folgen möchte - mention: E-Mail senden, wenn mich jemand erwähnt + digest: Zusammenfassung senden + favourite: wenn jemand meinen Beitrag favorisiert + follow: wenn mir jemand folgt + follow_request: wenn mir jemand folgen möchte + mention: wenn mich jemand erwähnt pending_account: E-Mail senden, wenn ein neues Benutzerkonto zur Überprüfung aussteht - reblog: E-Mail senden, wenn jemand meinen Beitrag teilt - report: E-Mail senden, wenn ein neuer Bericht vorliegt + reblog: wenn jemand meinen Beitrag teilt + report: E-Mail senden, wenn eine neue Meldung vorliegt trending_tag: Neuer Trend muss überprüft werden rule: text: Regel diff --git a/config/locales/simple_form.eu.yml b/config/locales/simple_form.eu.yml index f2894385f..353f37688 100644 --- a/config/locales/simple_form.eu.yml +++ b/config/locales/simple_form.eu.yml @@ -7,10 +7,10 @@ eu: account_migration: acct: Zehaztu migrazioaren xede den kontuaren erabiltzaile@domeinua account_warning_preset: - text: Toot sintaxia erabili dezakezu, URLak, traolak eta aipamenak + text: Bidalketaren sintaxia erabili dezakezu, hala nola, URLak, traolak eta aipamenak title: Aukerakoa. Hartzaileak ez du ikusiko admin_account_action: - include_statuses: Erabiltzaileak moderazio ekintza edo abisu bat eragin duten tootak ikusi ahal izango ditu + include_statuses: Erabiltzaileak moderazio ekintza edo abisu bat eragin duten bidalketak ikusi ahal izango ditu send_email_notification: Erabiltzaileak bere kontuarekin gertatutakoaren azalpen bat jasoko du text_html: Aukerakoa. Toot sintaxia erabili dezakezu. Abisu aurre-ezarpenak gehitu ditzakezu denbora aurrezteko type_html: Erabaki zer egin %{acct} kontuarekin @@ -49,6 +49,7 @@ eu: phrase: Bat egingo du Maiuskula/minuskula kontuan hartu gabe eta edukiaren abisua kontuan hartu gabe scopes: Zeintzuk API atzitu ditzakeen aplikazioak. Goi mailako arloa aukeratzen baduzu, ez dituzu azpikoak aukeratu behar. setting_aggregate_reblogs: Ez erakutsi bultzada berriak berriki bultzada jaso duten tootentzat (berriki jasotako bultzadei eragiten die bakarrik) + setting_always_send_emails: Normalean eposta jakinarazpenak ez dira bidaliko Mastodon aktiboki erabiltzen ari zaren bitartean setting_default_sensitive: Multimedia hunkigarria lehenetsita ezkutatzen da, eta sakatuz ikusi daiteke setting_display_media_default: Ezkutatu hunkigarri gisa markatutako multimedia setting_display_media_hide_all: Ezkutatu multimedia guztia beti @@ -67,6 +68,32 @@ eu: with_dns_records: Emandako domeinuaren DNS erregistroak ebazteko saiakera bat egingo da eta emaitzak ere zerrenda beltzean sartuko dira featured_tag: name: 'Hauetakoren bat erabili zenezake:' + filters: + action: Aukeratu ze ekintza burutu behar den bidalketa bat iragazkiarekin bat datorrenean + actions: + hide: Ezkutatu erabat iragazitako edukia, existituko ez balitz bezala + warn: Ezkutatu iragazitako edukia iragazkiaren izenburua duen abisu batekin + form_admin_settings: + backups_retention_period: Mantendu sortutako erabiltzailearen artxiboa zehazturiko egun kopuruan. + bootstrap_timeline_accounts: Kontu hauek erabiltzaile berrien jarraitzeko gomendioen goiko aldean ainguratuko dira. + closed_registrations_message: Izen-ematea itxia dagoenean bistaratua + content_cache_retention_period: Balio positibo bat ezarriz gero, egun kopuru horretara iristean beste zerbitzarietako bidalketak ezabatuko dira. Hau ezin da desegin. + custom_css: Estilo pertsonalizatuak aplikatu ditzakezu Mastodonen web bertsioan. + mascot: Web interfaze aurreratuko ilustrazioa gainidazten du. + media_cache_retention_period: Balio positibo bat ezarriz gero, egun kopuru horretara iristean beste zerbitzarietatik deskargatutako multimedia fitxategiak ezabatuko dira. Ondoren, eskatu ahala deskargatuko dira berriz. + profile_directory: Profilen direktorioan ikusgai egotea aukeratu duten erabiltzaile guztiak zerrendatzen dira. + require_invite_text: Izen emateak eskuz onartu behar direnean, "Zergatik elkartu nahi duzu?" testu sarrera derrigorrezko bezala ezarri, ez hautazko + site_contact_email: Jendeak kontsulta legalak egin edo laguntza eskatzeko bidea. + site_contact_username: Jendea Mastodonen zurekin harremanetan jartzeko bidea. + site_extended_description: Bisitari eta erabiltzaileentzat erabilgarria izan daitekeen informazio gehigarria. Markdown sintaxiarekin egituratu daiteke. + site_short_description: Zure zerbitzaria identifikatzen laguntzen duen deskribapen laburra. Nork du ardura? Nori zuzendua dago? + site_terms: Erabili zure pribatutasun politika edo hutsik utzi lehenetsia erabiltzeko. Markdown sintaxiarekin egituratu daiteke. + site_title: Jendeak nola deituko dion zure zerbitzariari, domeinu-izenaz gain. + theme: Saioa hasi gabeko erabiltzaileek eta berriek ikusiko duten gaia. + thumbnail: Zerbitzariaren informazioaren ondoan erakusten den 2:1 inguruko irudia. + timeline_preview: Saioa hasi gabeko erabiltzaileek ezingo dituzte arakatu zerbitzariko bidalketa publiko berrienak. + trendable_by_default: Saltatu joeretako edukiaren eskuzko berrikuspena. Ondoren elementuak banan-bana kendu daitezke joeretatik. + trends: Joeretan zure zerbitzarian bogan dauden bidalketa, traola eta albisteak erakusten dira. form_challenge: current_password: Zonalde seguruan sartzen ari zara imports: @@ -79,6 +106,7 @@ eu: ip: Sartu IPv4 edo IPv6 helbide bat. Tarte osoak blokeatu ditzakezu CIDR sintaxia erabiliz. Kontuz zure burua blokeatu gabe! severities: no_access: Blokeatu baliabide guztietarako sarbidea + sign_up_block: Ezingo da izen-emate berririk egin sign_up_requires_approval: Izen emate berriek zure onarpena beharko dute severity: Aukeratu zer gertatuko den IP honetatik datozen eskaerekin rule: @@ -90,6 +118,16 @@ eu: name: Letrak maiuskula/minuskulara aldatu ditzakezu besterik ez, adibidez irakurterrazago egiteko user: chosen_languages: Ezer markatzekotan, hautatutako hizkuntzetan dauden tootak besterik ez dira erakutsiko + role: Rolak erabiltzaileak dituen baimenak kontrolatzen ditu + user_role: + color: Rolarentzat erabiltzaile interfazean erabiliko den kolorea, formatu hamaseitarreko RGB bezala + highlighted: Honek rola publikoki ikusgai jartzen du + name: Rolaren izen publikoa, rola bereizgarri bezala bistaratzeko ezarrita badago + permissions_as_keys: Rol hau duten erabiltzaileek sarbidea izango dute... + position: Maila goreneko rolak erabakitzen du gatazkaren konponbidea kasu batzuetan. Ekintza batzuk maila baxuagoko rolen gain bakarrik gauzatu daitezke + webhook: + events: Hautatu gertaerak bidaltzeko + url: Nora bidaliko diren gertaerak labels: account: fields: @@ -151,6 +189,7 @@ eu: phrase: Hitz edo esaldi gakoa setting_advanced_layout: Gaitu web interfaze aurreratua setting_aggregate_reblogs: Taldekatu bultzadak denbora-lerroetan + setting_always_send_emails: Bidali beti eposta jakinarazpenak setting_auto_play_gif: Erreproduzitu GIF animatuak automatikoki setting_boost_modal: Erakutsi baieztapen elkarrizketa-koadroa bultzada eman aurretik setting_crop_images: Moztu irudiak hedatu gabeko tootetan 16x9 proportzioan @@ -176,6 +215,7 @@ eu: setting_use_pending_items: Modu geldoa severity: Larritasuna sign_in_token_attempt: Segurtasun kodea + title: Izenburua type: Inportazio mota username: Erabiltzaile-izena username_or_email: Erabiltzaile-izena edo e-mail helbidea @@ -184,6 +224,34 @@ eu: with_dns_records: Sartu ere domeinuaren MX erregistroak eta IPak featured_tag: name: Traola + filters: + actions: + hide: Ezkutatu guztiz + warn: Ezkutatu ohar batekin + form_admin_settings: + backups_retention_period: Erabiltzailearen artxiboa gordetzeko epea + bootstrap_timeline_accounts: Gomendatu beti kontu hauek erabiltzaile berriei + closed_registrations_message: Izen-emateak itxita daudenerako mezu pertsonalizatua + content_cache_retention_period: Edukiaren cache-a atxikitzeko epea + custom_css: CSS pertsonalizatua + mascot: Maskota pertsonalizatua (zaharkitua) + media_cache_retention_period: Multimediaren cachea atxikitzeko epea + profile_directory: Gaitu profil-direktorioa + registrations_mode: Nork eman dezake izena + require_invite_text: Eskatu arrazoi bat batzeko + show_domain_blocks: Erakutsi domeinu-blokeoak + show_domain_blocks_rationale: Erakutsi domeinuak zergatik blokeatu ziren + site_contact_email: Harremanetarako eposta + site_contact_username: Harremanetarako erabiltzaile-izena + site_extended_description: Deskribapen hedatua + site_short_description: Zerbitzariaren deskribapena + site_terms: Pribatutasun politika + site_title: Zerbitzariaren izena + theme: Lehenetsitako gaia + thumbnail: Zerbitzariaren koadro txikia + timeline_preview: Onartu autentifikatu gabeko sarbidea denbora lerro publikoetara + trendable_by_default: Onartu joerak aurrez berrikusi gabe + trends: Gaitu joerak interactions: must_be_follower: Blokeatu jarraitzaile ez direnen jakinarazpenak must_be_following: Blokeatu zuk jarraitzen ez dituzu horien jakinarazpenak @@ -197,6 +265,7 @@ eu: ip: IP-a severities: no_access: Blokeatu sarbidea + sign_up_block: Blokeatu izen-emateak sign_up_requires_approval: Mugatu izen emateak severity: Araua notification_emails: @@ -217,7 +286,19 @@ eu: name: Traola trendable: Baimendu traola hau joeretan agertzea usable: Baimendu tootek traola hau erabiltzea + user: + role: Rola + user_role: + color: Bereizgarriaren kolorea + highlighted: Bistaratu rola bereizgarri bezala erabiltzaileen profiletan + name: Izena + permissions_as_keys: Baimenak + position: Lehentasuna + webhook: + events: Gertaerak gaituta + url: Amaiera-puntuaren URLa 'no': Ez + not_recommended: Ez gomendatua recommended: Aholkatua required: mark: "*" diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index 1173d5480..7d2fe2c5f 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -209,6 +209,7 @@ fr: warn: Cacher derrière un avertissement form_admin_settings: content_cache_retention_period: Durée de rétention du contenu dans le cache + custom_css: CSS personnalisé mascot: Mascotte personnalisée (héritée) media_cache_retention_period: Durée de rétention des médias dans le cache profile_directory: Activer l’annuaire des profils diff --git a/config/locales/simple_form.id.yml b/config/locales/simple_form.id.yml index 41114ef0d..1637b7b04 100644 --- a/config/locales/simple_form.id.yml +++ b/config/locales/simple_form.id.yml @@ -47,7 +47,7 @@ id: locked: Anda harus menerima permintaan pengikut secara manual dan setting privasi postingan akan diubah khusus untuk pengikut password: Gunakan minimal 8 karakter phrase: Akan dicocokkan terlepas dari luaran dalam teks atau peringatan konten dari toot - scopes: API mana yang diizinkan untuk diakses aplikasi. Jika Anda memilih cakupan level-atas, Anda tak perlu memilih yang individual. + scopes: API mana yang diizinkan untuk diakses aplikasi. Jika Anda memilih cakupan level-atas, Anda tidak perlu memilih yang individu. setting_aggregate_reblogs: Jangan tampilkan boost baru untuk toot yang baru saja di-boost (hanya memengaruhi boost yang baru diterima) setting_always_send_emails: Secara normal, notifikasi email tidak akan dikirimkan kepada Anda ketika Anda sedang aktif menggunakan Mastodon setting_default_sensitive: Media sensitif disembunyikan secara bawaan dan akan ditampilkan dengan klik @@ -68,6 +68,32 @@ id: with_dns_records: Usaha untuk menyelesaikan data DNS domain yang diberikan akan dilakukan dan hasilnya akan masuk daftar hitam featured_tag: name: 'Anda mungkin ingin pakai salah satu dari ini:' + filters: + action: Pilih tindakan apa yang dilakukan ketika sebuah kiriman cocok dengan saringan + actions: + hide: Sembunyikan konten yang disaring, seperti itu tidak ada + warn: Sembunyikan konten yang disaring di belakang sebuah peringatan menyebutkan judul saringan + form_admin_settings: + backups_retention_period: Simpan arsip pengguna yang dibuat untuk jumlah hari yang ditetapkan. + bootstrap_timeline_accounts: Akun ini akan disematkan di atas rekomendasi ikut pengguna baru. + closed_registrations_message: Ditampilkan ketika pendaftaran ditutup + content_cache_retention_period: Kiriman dari server lain akan dihapus setelah jumlah hari yang ditentukan jika nilai positif ditetapkan. Ini mungkin tidak dapat diurungkan. + custom_css: Anda dapat menerapkan gaya kustom di versi web Mastodon. + mascot: Menimpa ilustrasi di antarmuka web tingkat lanjut. + media_cache_retention_period: File media yang diunduh akan dihapus setelah beberapa hari yang ditentukan ketika ditetapkan ke nilai yang positif, dan diunduh ulang pada permintaan. + profile_directory: Direktori profil mendaftarka semua pengguna yang ingin untuk dapat ditemukan. + require_invite_text: Ketika pendaftaran membutuhkan persetujuan manual, buat masukan teks "Mengapa Anda ingin bergabung?" dibutuhkan daripada opsional + site_contact_email: Bagaimana orang dapat menghubungi Anda untuk kebutuhan hukum atau dukungan. + site_contact_username: Bagaimana orang dapat menghubungi Anda di Mastodon. + site_extended_description: Informasi tambahan yang mungkin berguna bagi pengunjung dan pengguna Anda. Dapat distruktur dengan sintaks Markdown. + site_short_description: Sebuah deskripsi pendek untuk membantu mengenal server Anda secara unik. Siapa yang menjalankannya, untuk siapa itu? + site_terms: Gunakan kebijakan privasi Anda sendiri atau tinggalkan kosong untuk menggunakan bawaan. Dapat distruktur dengan sintaks Markdown. + site_title: Bagaimana orang dapat memberitahu tentang server selain nama domain. + theme: Tema yang dilihat oleh pengunjung yang keluar dan pengguna baru. + thumbnail: Gambar sekitar 2:1 yang ditampilkan di samping informasi server Anda. + timeline_preview: Pengunjung yang keluar akan dapat menjelajahi kiriman publik terkini yang tersedia di server. + trendable_by_default: Lewati tinjauan manual dari konten tren. Item individu masih dapat dihapus dari tren setelah faktanya. + trends: Tren yang menampilkan kiriman, tagar, dan cerita berita apa yang sedang tren di server Anda. form_challenge: current_password: Anda memasuki area aman imports: @@ -80,17 +106,28 @@ id: ip: Masukkan alamat IPv4 atau IPv6. Anda dapat memblokir seluruh rentang dengan sintaks CIDR. Hati-hati, jangan mengunci Anda sendiri! severities: no_access: Blokir akses ke seluruh sumber daya + sign_up_block: Pendaftaran baru tidak akan dimungkinkan sign_up_requires_approval: Pendaftaran baru memerlukan persetujuan Anda severity: Pilih apa yang akan dilakukan dengan permintaan dari IP ini rule: text: Jelaskan aturan atau persyaratan untuk pengguna di server ini. Buatlah pendek dan sederhana sessions: - otp: Masukkan kode dua-faktor dari handphone atau gunakan kode pemulihan anda. + otp: 'Masukkan kode dua faktor dari aplikasi ponsel atau gunakan kode pemulihan Anda:' webauthn: Jika ini kunci USB pastikan dalam keadaan tercolok dan, jika perlu, ketuk. tag: name: Anda hanya dapat mengubahnya ke huruf kecil/besar, misalnya, agar lebih mudah dibaca user: chosen_languages: Ketika dicentang, hanya toot dalam bahasa yang dipilih yang akan ditampilkan di linimasa publik + role: Peran mengatur izin apa yang dimiliki pengguna + user_role: + color: Warna yang digunakan untuk peran di antarmuka pengguna, sebagai RGB dalam format hex + highlighted: Ini membuat peran terlihat secara publik + name: Nama publik peran, jika peran ditampilkan sebagai lencana + permissions_as_keys: Pengguna dengan peran ini mendapatkan akses ke... + position: Peran lebih tinggi dapat menyelesaikan konflik dalam beberapa situasi. Beberapa tindakan hanya dapat dilakukan pada peran dengan prioritas lebih rendah + webhook: + events: Pilih peristiwa untuk dikirim + url: Di mana peristiwa akan dikirim labels: account: fields: @@ -165,7 +202,7 @@ id: setting_display_media_default: Bawaan setting_display_media_hide_all: Sembunyikan semua setting_display_media_show_all: Tunjukkan semua - setting_expand_spoilers: Selalu bentangkan toot yang bertanda peringatan konten + setting_expand_spoilers: Selalu bentangkan kiriman yang bertanda peringatan konten setting_hide_network: Sembunyikan jaringan Anda setting_noindex: Opt-out dari pengindeksan mesin pencari setting_reduce_motion: Kurangi gerakan animasi @@ -191,9 +228,33 @@ id: actions: hide: Sembunyikan seluruhnya warn: Sembunyikan dengan peringatan + form_admin_settings: + backups_retention_period: Rentang retensi arsip pengguna + bootstrap_timeline_accounts: Selalu rekomendasikan akun ini ke pengguna baru + closed_registrations_message: Pesan kustom ketika pendaftaran tidak tersedia + content_cache_retention_period: Rentang retensi tembolok konten + custom_css: CSS kustom + mascot: Maskot kustom (lawas) + media_cache_retention_period: Rentang retensi tembolok media + profile_directory: Aktifkan direktori profil + registrations_mode: Siapa yang dapat mendaftar + require_invite_text: Membutuhkan alasan untuk bergabung + show_domain_blocks: Tampilkan pemblokiran domain + show_domain_blocks_rationale: Tampilkan kenapa domain diblokir + site_contact_email: Surel kontak + site_contact_username: Nama pengguna kontak + site_extended_description: Deskripsi panjang + site_short_description: Deskripsi server + site_terms: Kebijakan Privasi + site_title: Nama server + theme: Tema bawaan + thumbnail: Gambar kecil server + timeline_preview: Perbolehkan akses tidak terotentikasi ke linimasa publik + trendable_by_default: Perbolehkan tren tanpa tinjauan + trends: Aktifkan tren interactions: must_be_follower: Blokir notifikasi dari non-pengikut - must_be_following: Blokir notifikasi dari orang yang tidak anda ikuti + must_be_following: Blokir notifikasi dari orang yang tidak Anda ikuti must_be_following_dm: Blokir pesan langsung dari orang yang tak Anda ikuti invite: comment: Komentar @@ -204,17 +265,18 @@ id: ip: IP severities: no_access: Blok akses + sign_up_block: Blokir pendaftaran sign_up_requires_approval: Batasi pendaftaran severity: Aturan notification_emails: appeal: Seseorang mengajukan banding tehadap keputusan moderator digest: Kirim email berisi rangkuman - favourite: Kirim email saat seseorang menyukai status anda - follow: Kirim email saat seseorang mengikuti anda - follow_request: Kirim email saat seseorang meminta untuk mengikuti anda - mention: Kirim email saat seseorang menyebut anda + favourite: Seseorang memfavorit kiriman Anda + follow: Seseorang mengikuti Anda + follow_request: Seseorang meminta untuk mengikuti Anda + mention: Seseorang menyebutkan Anda pending_account: Kirim email ketika akun baru perlu ditinjau - reblog: Kirim email saat seseorang mem-boost status anda + reblog: Seseorang mem-boost kiriman Anda report: Laporan baru dikirim trending_tag: Tren baru harus ditinjau rule: @@ -224,9 +286,19 @@ id: name: Tagar trendable: Izinkan tagar ini muncul di bawah tren usable: Izinkan toot memakai tagar ini + user: + role: Peran + user_role: + color: Warna lencana + highlighted: Tampilkan peran sebagai lencana di profil pengguna + name: Nama + permissions_as_keys: Izin + position: Prioritas webhook: events: Acara yang diaktifkan + url: URL Titik Akhir 'no': Tidak + not_recommended: Tidak disarankan recommended: Direkomendasikan required: mark: "*" diff --git a/config/locales/simple_form.ig.yml b/config/locales/simple_form.ig.yml new file mode 100644 index 000000000..7c264f0d7 --- /dev/null +++ b/config/locales/simple_form.ig.yml @@ -0,0 +1 @@ +ig: diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index 312393a06..b948217fe 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -68,10 +68,27 @@ ja: with_dns_records: 指定したドメインのDNSレコードを取得し、その結果もメールドメインブロックに登録されます featured_tag: name: 'これらを使うといいかもしれません:' + filters: + action: 投稿がフィルタに一致したときに実行するアクションを選択します + actions: + hide: フィルタリングされたコンテンツを完全に隠し、存在しないかのようにします form_admin_settings: backups_retention_period: 生成されたユーザーのアーカイブを指定した日数の間保持します。 + bootstrap_timeline_accounts: これらのアカウントは、新しいユーザーのフォロー推奨の一番上にピン留めされます。 + closed_registrations_message: サインアップ終了時に表示されます content_cache_retention_period: 正の値に設定されている場合、他のサーバーの投稿は指定された日数の後に削除されます。元に戻せません。 + custom_css: ウェブ版の Mastodon でカスタムスタイルを適用できます。 + mascot: 上級者向けWebインターフェースのイラストを上書きします。 media_cache_retention_period: 正の値に設定されている場合、ダウンロードされたメディアファイルは指定された日数の後に削除され、リクエストに応じて再ダウンロードされます。 + profile_directory: プロファイルディレクトリには、検出可能にオプトイン設定したすべてのユーザーが一覧に表示されます。 + require_invite_text: アカウント登録が承認制の場合、「意気込みをお聞かせください」のテキストを必須入力にする + site_contact_email: 法律またはサポートに関する問い合わせ先 + site_contact_username: マストドンでの連絡方法 + site_extended_description: 訪問者やユーザーに役立つかもしれない任意の追加情報。Mastodon 構文が使用できます。 + site_short_description: 誰が運営しているのか、誰に向けたものなのかなど、サーバーを特定する短い説明。 + site_terms: 独自のプライバシーポリシーを使用するか、空白にしてデフォルトのプライバシーポリシーを使用します。Mastodon 構文が使用できます。 + trendable_by_default: トレンドコンテンツの手動レビューをスキップする。個々のコンテンツは後でトレンドから削除できます。 + trends: トレンドは、サーバー上でどの投稿、ハッシュタグ、ニュース記事が人気を集めているかを示します。 form_challenge: current_password: セキュリティ上重要なエリアにアクセスしています imports: @@ -98,6 +115,7 @@ ja: chosen_languages: 選択すると、選択した言語の投稿のみが公開タイムラインに表示されるようになります role: このロールはユーザーが持つ権限を管理します user_role: + color: UI 全体で使用される色(RGB hex 形式) highlighted: これによりロールが公開されます。 name: ロールのバッジを表示する際の表示名 permissions_as_keys: このロールを持つユーザーは次の機能にアクセスできます @@ -202,11 +220,32 @@ ja: name: ハッシュタグ filters: actions: + hide: 完全に隠す warn: 警告付きで隠す form_admin_settings: backups_retention_period: ユーザーアーカイブの保持期間 + bootstrap_timeline_accounts: 新規ユーザーに必ずおすすめするアカウント + closed_registrations_message: サインアップできない場合のカスタムメッセージ content_cache_retention_period: コンテンツキャッシュの保持期間 + custom_css: カスタムCSS + mascot: カスタムマスコット(レガシー) media_cache_retention_period: メディアキャッシュの保持期間 + profile_directory: プロファイル ディレクトリを有効設定にする + registrations_mode: 新規登録が可能な方 + require_invite_text: 参加する理由を提出してください。 + show_domain_blocks: ドメインブロックを表示 + show_domain_blocks_rationale: ドメインがブロックされた理由を表示 + site_contact_email: 連絡先メールアドレス + site_contact_username: 連絡先ユーザー名 + site_extended_description: 詳細説明 + site_short_description: サーバーの説明 + site_terms: プライバシーポリシー + site_title: サーバーの名前 + theme: デフォルトテーマ + thumbnail: サーバーのサムネイル + timeline_preview: 公開タイムラインへの未認証のアクセスを許可する + trendable_by_default: 審査前のハッシュタグのトレンドへの表示を許可する + trends: トレンドを有効にする interactions: must_be_follower: フォロワー以外からの通知をブロック must_be_following: フォローしていないユーザーからの通知をブロック diff --git a/config/locales/simple_form.kab.yml b/config/locales/simple_form.kab.yml index cd73cdb47..380356059 100644 --- a/config/locales/simple_form.kab.yml +++ b/config/locales/simple_form.kab.yml @@ -84,6 +84,8 @@ kab: whole_word: Awal akk featured_tag: name: Ahacṭag + form_admin_settings: + site_terms: Tasertit tabaḍnit invite: comment: Awennit invite_request: diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index 7a3ab07d5..f64f3d548 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -75,13 +75,19 @@ ko: warn: 필터에 걸러진 글을 필터 제목과 함께 경고 뒤에 가리기 form_admin_settings: backups_retention_period: 생성된 사용자 아카이브를 며칠동안 저장할 지. + bootstrap_timeline_accounts: 이 계정들은 팔로우 추천 목록 상단에 고정됩니다. closed_registrations_message: 새 가입을 차단했을 때 표시됩니다 content_cache_retention_period: 양수가 설정되었다면 다른 서버의 게시물은 여기서 설정된 일수가 지나면 삭제될 것입니다. 되돌릴 수 없는 작업일 수 있습니다. custom_css: 사용자 지정 스타일을 웹 버전의 마스토돈에 지정할 수 있습니다. mascot: 고급 사용자 인터페이스에 있는 일러스트를 교체합니다. media_cache_retention_period: 양수로 설정된 경우 다운로드된 미디어 파일들은 지정된 일수가 지나면 삭제될 것이고 필요할 때 다시 다운로드 될 것입니다. + profile_directory: 프로필 책자는 발견되기를 희망하는 모든 사람들의 목록을 나열합니다. + require_invite_text: 가입이 수동 승인을 필요로 할 때, "왜 가입하려고 하나요?" 항목을 선택사항으로 두는 것보다는 필수로 두는 것이 낫습니다 site_contact_email: 사람들이 법적이나 도움 요청을 위해 당신에게 연락할 방법. site_contact_username: 사람들이 마스토돈에서 당신에게 연락할 방법. + site_extended_description: 방문자와 사용자에게 유용할 수 있는 추가정보들. 마크다운 문법을 사용할 수 있습니다. + site_short_description: 이 서버를 특별하게 구분할 수 있는 짧은 설명. 누가 운영하고, 누구를 위한 것인가요? + site_terms: 자신만의 개인정보 정책을 사용하거나 비워두는 것으로 기본값을 사용할 수 있습니다. 마크다운 문법을 사용할 수 있습니다. theme: 로그인 하지 않은 사용자나 새로운 사용자가 보게 될 테마. form_challenge: current_password: 당신은 보안 구역에 진입하고 있습니다 diff --git a/config/locales/simple_form.ku.yml b/config/locales/simple_form.ku.yml index 7ef4e7ac3..678d91933 100644 --- a/config/locales/simple_form.ku.yml +++ b/config/locales/simple_form.ku.yml @@ -81,7 +81,9 @@ ku: closed_registrations_message: Dema ku tomarkirin girtî bin têne xuyakirin content_cache_retention_period: Şandiyên ji rajekarên din wê piştî çend rojên diyarkirî dema ku li ser nirxek erênî were danîn werin jêbirin. Dibe ku ev bê veger be. custom_css: Tu dikarî awayên kesane li ser guhertoya malperê ya Mastodon bicîh bikî. + mascot: Îlustrasyona navrûyê webê yê pêşketî bêbandor dike. media_cache_retention_period: Pelên medyayê yên daxistî wê piştî çend rojên diyarkirî dema ku li ser nirxek erênî were danîn werin jêbirin, û li gorî daxwazê ​​ji nû ve werin daxistin. + profile_directory: Pelrêça profîlê hemû bikarhênerên keşfbûnê hilbijartine lîste dike. form_challenge: current_password: Tu dikevî qadeke ewledar imports: @@ -226,8 +228,14 @@ ku: registrations_mode: Kî dikare tomar bibe require_invite_text: Ji bo tevlêbûnê sedemek pêdivî ye show_domain_blocks: Astengkirinên navperê nîşan bide + site_short_description: Danasîna rajekar site_terms: Politîka taybetiyê + site_title: Navê rajekar + theme: Rûkara berdest + thumbnail: Wêneya piçûk a rajekar + timeline_preview: Mafê bide gihîştina ne naskirî bo demnameya gelemperî trendable_by_default: Mafê bide rojevê bêyî ku were nirxandin + trends: Rojevê çalak bike interactions: must_be_follower: Danezanên ji kesên ku ne şopînerên min tên asteng bike must_be_following: Agahdariyan asteng bike ji kesên ku tu wan naşopînî diff --git a/config/locales/simple_form.my.yml b/config/locales/simple_form.my.yml new file mode 100644 index 000000000..5e1fc6bee --- /dev/null +++ b/config/locales/simple_form.my.yml @@ -0,0 +1 @@ +my: diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index 33dd889c4..5a73d0005 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -77,8 +77,14 @@ nl: bootstrap_timeline_accounts: Deze accounts worden bovenaan de aanbevelingen aan nieuwe gebruikers getoond. Meerdere gebruikersnamen met komma's scheiden. closed_registrations_message: Weergegeven wanneer registratie van nieuwe accounts is uitgeschakeld content_cache_retention_period: 'Berichten van andere servers worden na het opgegeven aantal dagen verwijderd. Let op: Dit is onomkeerbaar.' + custom_css: Je kunt aangepaste stijlen toepassen op de webversie van Mastodon. + mascot: Overschrijft de illustratie in de geavanceerde webinterface. media_cache_retention_period: Mediabestanden die van andere servers zijn gedownload worden na het opgegeven aantal dagen verwijderd en worden op verzoek opnieuw gedownload. + profile_directory: De gebruikersgids bevat een lijst van alle gebruikers die ervoor gekozen hebben om ontdekt te kunnen worden. require_invite_text: Maak het invullen van "Waarom wil je je hier registreren?" verplicht in plaats van optioneel, wanneer registraties handmatig moeten worden goedgekeurd + site_contact_email: Hoe mensen je kunnen bereiken voor juridische of ondersteunende onderzoeken. + site_contact_username: Hoe mensen je kunnen bereiken op Mastodon. + site_title: Hoe mensen naar uw server kunnen verwijzen naast de domeinnaam. theme: Thema die (niet ingelogde) bezoekers en nieuwe gebruikers zien. timeline_preview: Bezoekers (die niet zijn ingelogd) kunnen de meest recente, op de server aanwezige openbare berichten bekijken. trendable_by_default: Handmatige beoordeling van trends overslaan. Individuele items kunnen later alsnog worden afgekeurd. diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml index 9bbc6b4d7..f2b81b9bd 100644 --- a/config/locales/simple_form.pt-BR.yml +++ b/config/locales/simple_form.pt-BR.yml @@ -73,6 +73,12 @@ pt-BR: actions: hide: Esconder completamente o conteúdo filtrado, comportando-se como se ele não existisse warn: Ocultar o conteúdo filtrado por trás de um aviso mencionando o título do filtro + form_admin_settings: + backups_retention_period: Manter os arquivos de usuário gerados pelo número de dias especificados. + bootstrap_timeline_accounts: Estas contas serão fixadas no topo das recomendações de novos usuários para seguir. + closed_registrations_message: Exibido quando as inscrições estiverem fechadas + site_contact_username: Como as pessoas podem chegar até você no Mastodon. + site_extended_description: Quaisquer informações adicionais que possam ser úteis para os visitantes e seus usuários. Podem ser estruturadas com formato Markdown. form_challenge: current_password: Você está entrando em uma área segura imports: @@ -199,6 +205,10 @@ pt-BR: actions: hide: Ocultar completamente warn: Ocultar com um aviso + form_admin_settings: + registrations_mode: Quem pode se inscrever + site_contact_email: E-mail de contato + trends: Habilitar tendências interactions: must_be_follower: Bloquear notificações de não-seguidores must_be_following: Bloquear notificações de não-seguidos diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index c401a821d..506197b22 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -58,7 +58,7 @@ uk: setting_noindex: Впливає на ваш публічний профіль та сторінки статусу setting_show_application: Застосунок, за допомогою якого ви дмухнули, буде відображено серед деталей дмуху setting_use_blurhash: Градієнти, що базуються на кольорах прихованих медіа, але роблять нерозрізненними будь-які деталі - setting_use_pending_items: Не додавати нові повідомлення до стрічок миттєво. Показувати їх тільки після додаткового клацання. + setting_use_pending_items: Не додавати нові повідомлення до стрічок миттєво, показувати лише після додаткового клацання username: Ваше ім'я користувача буде унікальним у %{domain} whole_word: Якщо пошукове слово або фраза містить лише літери та цифри, воно має збігатися цілком domain_allow: @@ -112,7 +112,7 @@ uk: rule: text: Опис правила або вимоги для користувачів на цьому сервері. Спробуйте зробити його коротким і простим sessions: - otp: Введите код двухфакторной аутентификации или используйте один из Ваших кодов восстановления. + otp: 'Введіть код двофакторної автентифікації, згенерований вашим мобільним застосунком, або скористайтеся одним з ваших кодів відновлення:' webauthn: Якщо це USB ключ, вставте його і, якщо необхідно, натисніть на нього. tag: name: Тут ви можете лише змінювати регістр літер, щоб підвищити читабельність @@ -209,7 +209,7 @@ uk: setting_show_application: Відображати застосунки, використані для дмухання setting_system_font_ui: Використовувати типовий системний шрифт setting_theme: Тема сайту - setting_trends: Показати сьогоднішні тренди + setting_trends: Показати дописи, популярні сьогодні setting_unfollow_modal: Відображати діалог підтвердження під час відписки від когось setting_use_blurhash: Відображати барвисті градієнти замість прихованих медіа setting_use_pending_items: Повільний режим diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index 004e5dfde..ee12f0252 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -31,18 +31,18 @@ zh-TW: text: 您只能對警示提出一次申訴 defaults: autofollow: 通過邀請網址註冊的使用者將自動跟隨您 - avatar: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 %{size},會等比例縮減成 %{dimensions} 像素 - bot: 此帳號主要執行自動操作且可能未被監控 + avatar: 支援 PNG、GIF 或 JPG 圖片格式,檔案最大為 %{size},會等比例縮減至 %{dimensions} 像素 + bot: 此帳號主要執行自動化操作且可能未受人為監控 context: 應該套用過濾器的一項或多項內容 current_password: 因安全因素,請輸入目前帳號的密碼 current_username: 請輸入目前帳號的使用者名稱以確認 digest: 僅在您長時間未登入且在未登入期間收到私訊時傳送 discoverable: 允許陌生人透過推薦、熱門趨勢及其他功能發現您的帳號 email: 您將收到一封確認電子郵件 - fields: 您可在個人資料上有至多 4 個以表格形式顯示的項目 - header: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 %{size},會按比例縮小成 %{dimensions} 像素 + fields: 您可在個人檔案上有至多 4 個以表格形式顯示的項目 + header: 支援 PNG、GIF 或 JPG 圖片格式,檔案最大為 %{size},會等比例縮減至 %{dimensions} 像素 inbox_url: 從您想要使用的中繼首頁複製網址 - irreversible: 已過濾的嘟文將會不可逆的消失,即便過濾器移除之後也一樣 + irreversible: 已過濾的嘟文將會不可逆地消失,即便之後移除過濾器也一樣 locale: 使用者介面、電子信件和推送通知的語言 locked: 需要您手動批准跟隨請求 password: 使用至少 8 個字元 @@ -50,14 +50,14 @@ zh-TW: scopes: 允許讓應用程式存取的 API。 若您選擇最高階範圍,則無須選擇個別項目。 setting_aggregate_reblogs: 請勿顯示最近已被轉嘟之嘟文的最新轉嘟(只影響最新收到的嘟文) setting_always_send_emails: 一般情況下若您活躍使用 Mastodon ,我們不會寄送 e-mail 通知 - setting_default_sensitive: 敏感媒體預設隱藏,且按一下即可重新顯示 - setting_display_media_default: 隱藏標為敏感的媒體 + setting_default_sensitive: 敏感內容媒體預設隱藏,且按一下即可重新顯示 + setting_display_media_default: 隱藏標為敏感內容的媒體 setting_display_media_hide_all: 總是隱藏所有媒體 setting_display_media_show_all: 總是顯示標為敏感的媒體 - setting_hide_network: 您跟隨的人與跟隨您的人將不會在您的個人資料頁上顯示 - setting_noindex: 會影響您的公開個人資料與嘟文頁面 + setting_hide_network: 您跟隨的人與跟隨您的人將不會在您的個人檔案頁面上顯示 + setting_noindex: 會影響您的公開個人檔案與嘟文頁面 setting_show_application: 您用來發嘟文的應用程式將會在您嘟文的詳細檢視顯示 - setting_use_blurhash: 漸層圖樣是基於隱藏媒體內容顏色產生,所有細節會變得模糊 + setting_use_blurhash: 彩色漸層圖樣是基於隱藏媒體內容顏色產生,所有細節會變得模糊 setting_use_pending_items: 關閉自動捲動更新,時間軸只會在點擊後更新 username: 您的使用者名稱將在 %{domain} 是獨一無二的 whole_word: 如果關鍵字或詞組僅有字母與數字,則其將只在符合整個單字的時候才會套用 @@ -81,7 +81,7 @@ zh-TW: custom_css: 您於 Mastodon 網頁版本中能套用客製化風格。 mascot: 覆寫進階網頁介面中的圖例。 media_cache_retention_period: 當設定成正值時,已下載的多媒體檔案會於指定天數後被刪除,並且視需要重新下載。 - profile_directory: 個人資料目錄將會列出那些有選擇被發現的使用者。 + profile_directory: 個人檔案目錄將會列出那些有選擇被發現的使用者。 require_invite_text: 如果已設定為手動審核註冊,請將「加入原因」設定為必填項目。 site_contact_email: 其他人如何聯繫您關於法律或支援之諮詢。 site_contact_username: 其他人如何於 Mastodon 上聯繫您。 @@ -99,7 +99,7 @@ zh-TW: imports: data: 從其他 Mastodon 伺服器匯出的 CSV 檔案 invite_request: - text: 這會協助我們審核您的應用程式 + text: 這會協助我們審核您的申請 ip_block: comment: 可選的,但請記得您為何添加這項規則。 expires_in: IP 位址是經常共用或轉手的有限資源,不建議無限期地封鎖特定 IP 位址。 @@ -112,12 +112,12 @@ zh-TW: rule: text: 說明使用者在此伺服器上需遵守的規則或條款。試著維持各項條款簡短而明瞭。 sessions: - otp: 請輸入產生自您手機 App 的兩步驟驗證碼,或輸入其中一個復原代碼: + otp: 請輸入產生自您手機 App 的兩階段驗證碼,或輸入其中一個備用驗證碼: webauthn: 如果它是 USB 安全金鑰的話,請確認已正確插入,如有需要請觸擊。 tag: name: 您只能變更大小寫,例如,以使其更易讀。 user: - chosen_languages: 當核取時,只有選取語言的嘟文會在公開時間軸中顯示 + chosen_languages: 當選取時,只有選取語言之嘟文會在公開時間軸中顯示 role: 角色控制使用者有哪些權限 user_role: color: 在整個使用者介面中用於角色的顏色,十六進位格式的 RGB @@ -148,7 +148,7 @@ zh-TW: types: disable: 停用 none: 什麼也不做 - sensitive: 有雷小心 + sensitive: 敏感内容 silence: 安靜 suspend: 停權並不可逆的刪除帳號資料 warning_preset_id: 使用警告預設 @@ -174,8 +174,8 @@ zh-TW: display_name: 顯示名稱 email: 電子信箱地址 expires_in: 失效時間 - fields: 個人資料中繼資料 - header: 頁面頂端 + fields: 個人檔案詮釋資料 + header: 封面圖片 honeypot: "%{label} (請勿填寫)" inbox_url: 中繼收件匣的 URL irreversible: 放棄而非隱藏 @@ -183,15 +183,15 @@ zh-TW: locked: 鎖定帳號 max_uses: 最大使用次數 new_password: 新密碼 - note: 簡介 - otp_attempt: 兩步驟驗證碼 + note: 個人簡介 + otp_attempt: 兩階段驗證碼 password: 密碼 phrase: 關鍵字或片語 setting_advanced_layout: 啟用進階網頁介面 setting_aggregate_reblogs: 時間軸中的群組轉嘟 setting_always_send_emails: 總是發送 e-mail 通知 setting_auto_play_gif: 自動播放 GIF 動畫 - setting_boost_modal: 在轉嘟前先詢問我 + setting_boost_modal: 轉嘟前先詢問我 setting_crop_images: 將未展開嘟文中的圖片裁剪至 16x9 setting_default_language: 嘟文語言 setting_default_privacy: 嘟文可見範圍 @@ -208,10 +208,10 @@ zh-TW: setting_reduce_motion: 減少過渡動畫效果 setting_show_application: 顯示用來傳送嘟文的應用程式 setting_system_font_ui: 使用系統預設字型 - setting_theme: 站點主題 - setting_trends: 顯示本日趨勢 + setting_theme: 佈景主題 + setting_trends: 顯示本日熱門趨勢 setting_unfollow_modal: 取消跟隨某人前先詢問我 - setting_use_blurhash: 將隱藏媒體以彩色漸變圖樣表示 + setting_use_blurhash: 將隱藏媒體以彩色漸層圖樣表示 setting_use_pending_items: 限速模式 severity: 優先級 sign_in_token_attempt: 安全代碼 @@ -236,7 +236,7 @@ zh-TW: custom_css: 自訂 CSS mascot: 自訂吉祥物 (legacy) media_cache_retention_period: 多媒體快取資料保留期間 - profile_directory: 啟用個人資料目錄 + profile_directory: 啟用個人檔案目錄 registrations_mode: 誰能註冊 require_invite_text: 要求「加入原因」 show_domain_blocks: 顯示封鎖的網域 @@ -278,19 +278,19 @@ zh-TW: pending_account: 需要審核的新帳號 reblog: 當有使用者轉嘟您的嘟文時,傳送電子信件通知 report: 新回報已遞交 - trending_tag: 新趨勢需要審閱 + trending_tag: 新熱門趨勢需要審核 rule: text: 規則 tag: listable: 允許此主題標籤在搜尋及個人檔案目錄中顯示 name: 主題標籤 - trendable: 允許此主題標籤在趨勢下顯示 + trendable: 允許此主題標籤在熱門趨勢下顯示 usable: 允許嘟文使用此主題標籤 user: role: 角色 user_role: color: 識別顏色 - highlighted: 在使用者個人資料上將角色顯示為徽章 + highlighted: 在使用者個人檔案上將角色顯示為徽章 name: 名稱 permissions_as_keys: 權限 position: 優先權 diff --git a/config/locales/sl.yml b/config/locales/sl.yml index d009a7dda..01fe28255 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -751,6 +751,7 @@ sl: no_status_selected: Nobena objava ni bila spremenjena, ker ni bila nobena izbrana open: Odpri objavo original_status: Izvorna objava + reblogs: Ponovljeni blogi status_changed: Objava spremenjena title: Objave računa trending: V trendu @@ -1300,6 +1301,8 @@ sl: carry_blocks_over_text: Ta uporabnik se je preselil iz računa %{acct}, ki ste ga blokirali. carry_mutes_over_text: Ta uporabnik se je preselil iz računa %{acct}, ki ste ga utišali. copy_account_note_text: 'Ta uporabnik se je preselil iz %{acct}, tukaj so vaše poprejšnje opombe o njem:' + navigation: + toggle_menu: Preklopi meni notification_mailer: admin: report: diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 73e07694c..2c4285ca7 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -1249,6 +1249,8 @@ tr: carry_blocks_over_text: Bu kullanıcı engellediğiniz %{acct} adresinden taşındı. carry_mutes_over_text: Bu kullanıcı sessize aldığınız %{acct} adresinden taşındı. copy_account_note_text: 'Bu kullanıcı %{acct} adresinden taşındı, işte onlarla ilgili önceki notlarınız:' + navigation: + toggle_menu: Menüyü aç/kapa notification_mailer: admin: report: diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 5c695507d..ba380339a 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -13,7 +13,7 @@ uk: many: Підписників one: Підписник other: Підписників - following: Підписаний(-а) + following: Підписані instance_actor_flash: Цей обліковий запис є віртуальним персонажем, який використовується для показу самого сервера, а не будь-якого окремого користувача. Він використовується з метою федералізації і не повинен бути зупинений. last_active: остання активність link_verified_on: Права власності на це посилання були перевірені %{date} @@ -79,7 +79,7 @@ uk: header: Заголовок inbox_url: URL вхідних повідомлень invite_request_text: Причини приєднатися - invited_by: 'Запросив:' + invited_by: Запросив ip: IP joined: Приєднався location: @@ -141,7 +141,7 @@ uk: only_password: Лише пароль password_and_2fa: Пароль та 2FA sensitive: Делікатне - sensitized: позначено делікатним + sensitized: Позначено делікатним shared_inbox_url: URL спільного вхідного кошика show: created_reports: Скарги, створені цим обліковим записом @@ -544,7 +544,7 @@ uk: relays: add_new: Додати новий ретранслятор delete: Видалити - description_html: "Ретлянслятор дмухів (federation relay) — це проміжний сервер, що обмінюється великими обсягами публічних дмухів між серверами, які цього хочуть. Він може допомогти маленьким та середнім серверам отримувати вміст з усього федесвіту (fediverse). Без нього локальним користувачам довелося б вручну підписуватися на людей з віддалених серверів." + description_html: "Ретранслятор дописів (federation relay) — це проміжний сервер, що обмінюється великими обсягами публічних дописів між серверами, які цього хочуть. Він може допомогти маленьким та середнім серверам отримувати вміст з усього федесвіту (fediverse). Без нього локальним користувачам довелося б вручну підписуватися на людей з віддалених серверів." disable: Вимкнути disabled: Вимкнено enable: Увімкнути @@ -751,7 +751,7 @@ uk: no_status_selected: Жодного статуса не було змінено, оскільки жодного не було вибрано open: Відкрити допис original_status: Оригінальний допис - reblogs: Репост + reblogs: Поширення status_changed: Допис змінено title: Статуси облікових записів trending: Популярне @@ -899,8 +899,8 @@ uk: body: Деталі нового облікового запису наведено нижче. Ви можете схвалити або відхилити цю заяву. subject: Новий обліковий запис надіслано на розгляд на %{instance} (%{username}) new_report: - body: "%{reporter} поскаржився(-лася) на %{target}" - body_remote: Хтось з домену %{domain} поскаржився(-лася) на %{target} + body: "%{reporter} поскаржився на %{target}" + body_remote: Хтось з домену %{domain} поскаржився на %{target} subject: Нова скарга до %{instance} (#%{id}) new_trends: body: 'Ці елементи потребують розгляду перед оприлюдненням:' @@ -1233,7 +1233,7 @@ uk: '86400': 1 день expires_in_prompt: Ніколи generate: Згенерувати - invited_by: 'Вас запросив(-ла):' + invited_by: 'Вас запросив:' max_uses: few: "%{count} використання" many: "%{count} використань" @@ -1265,7 +1265,7 @@ uk: not_ready: Не можна прикріпити файли, оброблення яких ще не закінчилося. Спробуйте ще раз через хвилину! too_many: Не можна додати більше 4 файлів migrations: - acct: username@domain нового облікового запису + acct: Перенесено до cancel: Скасувати перенаправлення cancel_explanation: Скасування перенаправлення реактивує ваш поточний обліковий запис, але не поверне підписників, які були переміщені в інший обліковий запис. cancelled_msg: Перенаправлення успішно скасовано. @@ -1301,6 +1301,8 @@ uk: carry_blocks_over_text: Цей користувач переїхав з %{acct}, який ви заблокували. carry_mutes_over_text: Цей користувач переїхав з %{acct}, який ви нехтуєте. copy_account_note_text: 'Цей користувач був переміщений з %{acct}, ось ваші попередні нотатки:' + navigation: + toggle_menu: Відкрити меню notification_mailer: admin: report: @@ -1312,24 +1314,24 @@ uk: subject: Ваш статус сподобався %{name} title: Нове вподобання follow: - body: "%{name} тепер підписаний(-а) на вас!" - subject: "%{name} тепер підписаний(-а) на вас" - title: Новий підписник(-ця) + body: "%{name} тепер підписаний на вас!" + subject: "%{name} тепер підписаний на вас" + title: Новий підписник follow_request: action: Керувати запитами на підписку - body: "%{name} запитав(-ла) Вас про підписку" + body: "%{name} надіслав запит на підписку" subject: "%{name} хоче підписатися на Вас" title: Новий запит на підписку mention: action: Відповісти body: 'Вас згадав(-ла) %{name} в:' - subject: Вас згадав(-ла) %{name} + subject: Вас згадав %{name} title: Нова згадка poll: subject: Опитування від %{name} завершено reblog: body: 'Ваш статус було передмухнуто %{name}:' - subject: "%{name} передмухнув(-ла) ваш статус" + subject: "%{name} поширив ваш статус" title: Нове передмухування status: subject: "%{name} щойно опубліковано" @@ -1389,7 +1391,7 @@ uk: dormant: Неактивні follow_selected_followers: Стежити за вибраними підписниками followers: Підписники - following: Підписник(-ця) + following: Підписник invited: Запрошені last_active: Крайня активність most_recent: За часом створення @@ -1448,7 +1450,7 @@ uk: firefox_os: Firefox OS ios: iOS linux: Linux - mac: Mac + mac: macOS other: невідома платформа windows: Windows windows_mobile: Windows Mobile @@ -1510,7 +1512,7 @@ uk: errors: in_reply_not_found: Статуса, на який ви намагаєтеся відповісти, не існує. open_in_web: Відкрити у вебі - over_character_limit: перевищено ліміт символів (%{max}) + over_character_limit: перевищено ліміт символів %{max} pin_errors: direct: Не можливо прикріпити дописи, які видимі лише згаданим користувачам limit: Ви вже закріпили максимальну кількість постів @@ -1579,7 +1581,7 @@ uk: min_reblogs_hint: Не видаляти ваших дописів, що були передмухнуті більш ніж вказану кількість разів. Залиште порожнім, щоб видаляти дописи, попри кількість їхніх передмухів stream_entries: pinned: Закріплений пост - reblogged: передмухнув(-ла) + reblogged: поширив sensitive_content: Дражливий зміст strikes: errors: @@ -1587,8 +1589,8 @@ uk: tags: does_not_match_previous_name: не збігається з попереднім ім'ям themes: - contrast: Висока контрасність - default: Mastodon + contrast: Mastodon (Висока контрастність) + default: Mastodon (Темна) mastodon-light: Mastodon (світла) time: formats: diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 73228159d..d032691bf 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -1223,6 +1223,8 @@ vi: carry_blocks_over_text: Tài khoản này chuyển từ %{acct}, máy chủ mà bạn đã chặn trước đó. carry_mutes_over_text: Tài khoản này chuyển từ %{acct}, máy chủ mà bạn đã ẩn trước đó. copy_account_note_text: 'Tài khoản này chuyển từ %{acct}, đây là lịch sử kiểm duyệt của họ:' + navigation: + toggle_menu: Bật/tắt menu notification_mailer: admin: report: diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 7ce2f777c..88447d186 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -109,14 +109,14 @@ zh-TW: protocol: 協議 public: 公開 push_subscription_expires: PuSH 訂閱過期 - redownload: 重新整理個人資料 - redownloaded_msg: 成功重新載入%{username} 的個人資料頁面 + redownload: 重新整理個人檔案 + redownloaded_msg: 成功重新載入%{username} 的個人檔案頁面 reject: 拒絕 rejected_msg: 成功拒絕了%{username} 的新帳號申請 - remove_avatar: 取消頭像 + remove_avatar: 取消大頭貼 remove_header: 移除開頭 - removed_avatar_msg: 成功刪除了 %{username} 的頭像 - removed_header_msg: 成功刪除了 %{username} 的頁面頂端 + removed_avatar_msg: 成功刪除了 %{username} 的大頭貼 + removed_header_msg: 成功刪除了 %{username} 的封面圖片 resend_confirmation: already_confirmed: 此使用者已被確認 send: 重新發送驗證信 @@ -279,8 +279,8 @@ zh-TW: update_status_html: "%{name} 更新了 %{target} 的嘟文" update_user_role_html: "%{name} 變更了 %{target} 角色" empty: 找不到 log - filter_by_action: 按動作篩選 - filter_by_user: 按使用者篩選 + filter_by_action: 按動作過濾 + filter_by_user: 按使用者過濾 title: 營運日誌 announcements: destroyed_msg: 成功刪除公告! @@ -376,7 +376,7 @@ zh-TW: create: 新增封鎖 hint: 站點封鎖動作並不會阻止帳號紀錄被新增至資料庫,但會自動回溯性地對那些帳號套用特定管理設定。 severity: - desc_html: "「靜音」令該站點下使用者的嘟文,設定為只對跟隨者顯示,沒有跟隨的人會看不到。「停權」會刪除將該站點下使用者的嘟文、媒體檔案和個人資料。「」則會拒絕接收來自該站點的媒體檔案。" + desc_html: "「靜音」令該站點下使用者的嘟文,設定為只對跟隨者顯示,沒有跟隨的人會看不到。「停權」會刪除將該站點下使用者的嘟文、媒體檔案和個人檔案。「」則會拒絕接收來自該站點的媒體檔案。" noop: 無 silence: 靜音 suspend: 停權 @@ -491,7 +491,7 @@ zh-TW: all: 全部 available: 可用 expired: 已失效 - title: 篩選 + title: 過濾 title: 邀請使用者 ip_blocks: add_new: 建立規則 @@ -538,7 +538,7 @@ zh-TW: action_taken_by: 操作執行者 actions: delete_description_html: 被檢舉的嘟文將被刪除,並且會被以刪除線標記,幫助您升級同一帳號未來的違規行為。 - mark_as_sensitive_description_html: 被檢舉的嘟文中的媒體將會被標記為敏感,並將會記錄一次警告,以協助您升級同一帳號未來的違規行為。 + mark_as_sensitive_description_html: 被檢舉的嘟文中的媒體將會被標記為敏感內容,並將會記錄一次警告,以協助您升級同一帳號未來的違規行為。 other_description_html: 檢視更多控制帳號行為以及自訂檢舉帳號通知之選項。 resolve_description_html: 被檢舉的帳號將不被採取任何行動,不會加以刪除線標記,並且此份報告將被關閉。 silence_description_html: 個人頁面僅會對已跟隨帳號之使用者或手動查詢可見,將大幅度限制觸及範圍。此設定可隨時被還原。 @@ -587,7 +587,7 @@ zh-TW: unassign: 取消指派 unresolved: 未解決 updated_at: 更新 - view_profile: 檢視個人資料頁 + view_profile: 檢視個人檔案頁面 roles: add_new: 新增角色 assigned_users: @@ -635,7 +635,7 @@ zh-TW: manage_taxonomies: 管理分類方式 manage_taxonomies_description: 允許使用者審閱熱門內容與更新主題標籤設定 manage_user_access: 管理使用者存取權 - manage_user_access_description: 允許使用者停用其他人的兩步驟驗證、變更他們的電子郵件地址以及重設他們的密碼 + manage_user_access_description: 允許使用者停用其他人的兩階段驗證、變更電子郵件地址以及重設密碼 manage_users: 管理使用者 manage_users_description: 允許使用者檢視其他使用者的詳細資訊並對回報執行站務動作 manage_webhooks: 管理 Webhooks @@ -679,7 +679,7 @@ zh-TW: domain_blocks: all: 給任何人 disabled: 給沒有人 - users: 套用至所有登入的本機使用者 + users: 套用至所有登入的本站使用者 registrations: preamble: 控制誰能於您伺服器上建立帳號。 title: 註冊 @@ -719,7 +719,7 @@ zh-TW: with_media: 含有媒體檔案 strikes: actions: - delete_statuses: "%{name} 刪除了 %{target} 的貼文" + delete_statuses: "%{name} 刪除了 %{target} 的嘟文" disable: "%{name} 凍結了 %{target} 的帳號" mark_statuses_as_sensitive: "%{name} 將 %{target} 的嘟文標記為敏感內容" none: "%{name} 已對 %{target} 送出警告" @@ -866,12 +866,12 @@ zh-TW: created_msg: 成功建立別名。您可以自舊帳號開始轉移。 deleted_msg: 成功移除別名。您將無法再由舊帳號轉移到目前的帳號。 empty: 您目前沒有任何別名。 - hint_html: 如果想由其他帳號轉移到此帳號,您可以在此處創建別名,稍後系統將容許您把跟隨者由舊帳號轉移至此。此項作業是無害且可復原的帳號的遷移程序需要在舊帳號啟動。 + hint_html: 如果想由其他帳號轉移到此帳號,您可以在此處新增別名,稍後系統將容許您把跟隨者由舊帳號轉移至此。此項作業是無害且可復原的帳號的遷移程序需要在舊帳號啟動。 remove: 取消連結別名 appearance: advanced_web_interface: 進階網頁介面 - advanced_web_interface_hint: 進階網頁界面可讓您配置許多不同的欄位來善用多餘的螢幕空間,依需要同時查看盡可能多的資訊如:首頁、通知、站點聯邦時間軸、任意數量的列表和主題標籤。 - animations_and_accessibility: 動畫與可用性 + advanced_web_interface_hint: 進階網頁界面可讓您設定許多不同的欄位來善用螢幕空間,依需要同時查看許多不同的資訊如:首頁、通知、聯邦時間軸、任意數量的列表和主題標籤。 + animations_and_accessibility: 動畫與無障礙設定 confirmation_dialogs: 確認對話框 discovery: 探索 localization: @@ -879,13 +879,13 @@ zh-TW: guide_link: https://crowdin.com/project/mastodon guide_link_text: 每個人都能貢獻。 sensitive_content: 敏感內容 - toot_layout: 嘟文佈局 + toot_layout: 嘟文排版 application_mailer: notification_preferences: 變更電子信件設定 salutation: "%{name}、" settings: 變更電子信箱設定︰%{link} view: '進入瀏覽:' - view_profile: 檢視個人資料頁 + view_profile: 檢視個人檔案 view_status: 檢視嘟文 applications: created: 已建立應用 @@ -898,7 +898,7 @@ zh-TW: apply_for_account: 登記排隊名單 change_password: 密碼 delete_account: 刪除帳號 - delete_account_html: 如果您欲刪除您的帳號,請點擊這裡繼續。您需要確認您的操作。 + delete_account_html: 如果您欲刪除您的帳號,請點擊這裡繼續。您需要再三確認您的操作。 description: prefix_invited_by_user: "@%{name} 邀請您加入這個 Mastodon 伺服器!" prefix_sign_up: 現在就註冊 Mastodon 帳號吧! @@ -907,13 +907,13 @@ zh-TW: dont_have_your_security_key: 找不到您的安全金鑰? forgot_password: 忘記密碼? invalid_reset_password_token: 密碼重設 token 無效或已過期。請重新設定密碼。 - link_to_otp: 請從您手機輸入雙重驗證 (2FA) 或還原碼 + link_to_otp: 請從您手機輸入兩階段驗證 (2FA) 或備用驗證碼 link_to_webauth: 使用您的安全金鑰 log_in_with: 登入,使用 login: 登入 logout: 登出 migrate_account: 轉移到另一個帳號 - migrate_account_html: 如果您希望引導他人關注另一個帳號,請 到這裡設定。 + migrate_account_html: 如果您希望引導他人跟隨另一個帳號,請 到這裡設定。 or_log_in_with: 或透過其他方式登入 privacy_policy_agreement_html: 我已閱讀且同意 隱私權政策 providers: @@ -940,20 +940,20 @@ zh-TW: confirming: 等待電子郵件確認完成。 functional: 您的帳號可以正常使用了。 pending: 管管們正在處理您的申請,這可能需要一點時間處理。我們將在申請通過後以電子郵件方式通知您。 - redirecting_to: 您的帳戶因目前重新導向至 %{acct} 而被停用。 + redirecting_to: 您的帳號因目前重定向至 %{acct} 而被停用。 view_strikes: 檢視針對您帳號過去的警示 too_fast: 送出表單的速度太快跟不上,請稍後再試。 use_security_key: 使用安全金鑰 authorize_follow: already_following: 您已經跟隨了這個使用者 - already_requested: 您早已向該帳戶寄送追蹤請求 + already_requested: 您早已向該帳號寄送跟隨請求 error: 對不起,搜尋其他站點使用者出現錯誤 follow: 跟隨 follow_request: 跟隨請求已發送給: following: 成功!您正在跟隨: post_follow: close: 您可以直接關閉此頁面。 - return: 顯示個人資料頁 + return: 顯示個人檔案 web: 返回本站 title: 跟隨 %{acct} challenge: @@ -987,8 +987,8 @@ zh-TW: challenge_not_passed: 您所輸入的資料不正確 confirm_password: 輸入您現在的密碼以驗證身份 confirm_username: 請輸入您的使用者名稱以作確認 - proceed: 刪除帳戶 - success_msg: 您的帳戶已經成功刪除 + proceed: 刪除帳號 + success_msg: 您的帳號已經成功刪除 warning: before: 在進行下一步驟之前,請詳細閱讀以下説明: caches: 已被其他節點快取的內容可能會殘留其中 @@ -1022,9 +1022,9 @@ zh-TW: title_actions: delete_statuses: 嘟文移除 disable: 凍結帳號 - mark_statuses_as_sensitive: 將嘟文標記為敏感 + mark_statuses_as_sensitive: 將嘟文標記為敏感內容 none: 警告 - sensitive: 將帳號標記為敏感 + sensitive: 將帳號標記為敏感內容 silence: 帳號限制 suspend: 帳號停權 your_appeal_approved: 您的申訴已被批准 @@ -1069,20 +1069,20 @@ zh-TW: add_new: 追加 errors: limit: 您所推薦的標籤數量已經達到上限 - hint_html: "推薦標籤是什麼? 這些標籤將顯示於您的公開個人檔案頁,訪客可以藉此閱覽您標示了這些標籤的嘟文,拿來展示創意作品或者長期更新的專案很好用唷!" + hint_html: "推薦主題標籤是什麼? 這些主題標籤將顯示於您的公開個人檔案頁,訪客可以藉此閱覽您標示了這些標籤的嘟文,拿來展示創意作品或者長期更新的專案很好用唷!" filters: contexts: - account: 個人資料 + account: 個人檔案 home: 首頁時間軸 notifications: 通知 public: 公開時間軸 - thread: 會話 + thread: 對話 edit: add_keyword: 新增關鍵字 keywords: 關鍵字 statuses: 各別嘟文 - statuses_hint_html: 此過濾器會套用至所選之各別嘟文,無論其是否符合下列關鍵字。審閱或從過濾條件移除貼文。 - title: 編輯篩選條件 + statuses_hint_html: 此過濾器會套用至所選之各別嘟文,無論其是否符合下列關鍵字。審閱或從過濾條件移除嘟文。 + title: 編輯過濾條件 errors: deprecated_api_multiple_keywords: 這些參數無法從此應用程式中更改,因為它們適用於一或多個過濾器關鍵字。請使用較新的應用程式或是網頁介面。 invalid_context: 沒有提供內文或內文無效 @@ -1101,7 +1101,7 @@ zh-TW: title: 過濾器 new: save: 儲存新過濾器 - title: 新增篩選器 + title: 新增過濾器 statuses: back_to_filter: 回到過濾器 batch: @@ -1145,7 +1145,7 @@ zh-TW: blocking: 您封鎖的使用者名單 bookmarks: 我的最愛 domain_blocking: 域名封鎖名單 - following: 您關注的使用者名單 + following: 您跟隨的使用者名單 muting: 您靜音的使用者名單 upload: 上傳 invites: @@ -1174,11 +1174,11 @@ zh-TW: limit: 您所建立的列表數量已經達到上限 login_activities: authentication_methods: - otp: 兩步驟驗證應用程式 + otp: 兩階段驗證應用程式 password: 密碼 sign_in_token: 電子郵件安全碼 webauthn: 安全金鑰 - description_html: 若您看到您不認識的活動,請考慮變更您的密碼或啟用兩步驟驗證。 + description_html: 若您看到您不認識的活動紀錄,請考慮變更您的密碼或啟用兩階段驗證。 empty: 沒有可用的驗證歷史紀錄 failed_sign_in_html: 使用來自 %{ip} (%{browser}) 的 %{method} 登入嘗試失敗 successful_sign_in_html: 使用來自 %{ip} (%{browser}) 的 %{method} 登入成功 @@ -1199,10 +1199,10 @@ zh-TW: move_to_self: 不能是目前帳號 not_found: 找不到 on_cooldown: 您正在處於冷卻(CD)狀態 - followers_count: 轉移時的追隨者 + followers_count: 轉移時的跟隨者 incoming_migrations: 自另一個帳號轉移 incoming_migrations_html: 要從其他帳號移動到此帳號的話,首先您必須建立帳號別名。 - moved_msg: 您的帳號正被重新導向到 %{acct},您的追蹤者也會同步轉移至該帳號。 + moved_msg: 您的帳號正被重新導向到 %{acct},您的跟隨者也會同步轉移至該帳號。 not_redirecting: 您的帳號目前尚未重新導向到任何其他帳號。 on_cooldown: 您最近已轉移過您的帳號。此功能將在 %{count} 天後可再度使用。 past_migrations: 以往的轉移紀錄 @@ -1215,16 +1215,18 @@ zh-TW: before: 在進行下一步驟之前,請詳細閱讀以下説明: cooldown: 在轉移帳號後會有一段等待時間,在等待時間內您將無法再次轉移 disabled_account: 之後您的目前帳號將完全無法使用。但您可以存取資料匯出與重新啟用。 - followers: 此動作將會把目前帳號的所有追蹤者轉移至新帳號 - only_redirect_html: 或者,您也可以僅在您的個人資料中放置重新導向。 + followers: 此動作將會把目前帳號的所有跟隨者轉移至新帳號 + only_redirect_html: 或者,您也可以僅在您的個人檔案中設定重新導向。 other_data: 其他資料並不會自動轉移 - redirect: 您目前的帳號將會在個人資料頁面新增重新導向公告,並會被排除在搜尋結果之外 + redirect: 您目前的帳號將會在個人檔案頁面新增重新導向公告,並會被排除在搜尋結果之外 moderation: title: 站務 move_handler: carry_blocks_over_text: 此使用者轉移自被您封鎖的 %{acct}。 carry_mutes_over_text: 此使用者轉移自被您靜音的 %{acct}。 copy_account_note_text: 此使用者轉移自 %{acct},以下是您之前關於他們的備註: + navigation: + toggle_menu: 切換選單 notification_mailer: admin: report: @@ -1258,7 +1260,7 @@ zh-TW: status: subject: "%{name} 剛剛嘟文" update: - subject: "%{name} 編輯了貼文" + subject: "%{name} 編輯了嘟文" notifications: email_events: 電子郵件通知設定 email_events_hint: 選取您想接收通知的事件: @@ -1275,7 +1277,7 @@ zh-TW: trillion: T otp_authentication: code_hint: 請輸入您驗證應用程式所產生的代碼以確認 - description_html: 若您啟用使用驗證應用程式的兩步驟驗證,您每次登入都需要輸入由您的手機所產生的權杖。 + description_html: 若您啟用使用驗證應用程式的兩階段驗證,您每次登入都需要輸入由您的手機所產生之 Token。 enable: 啟用 instructions_html: "請用您手機上的 Google Authenticator 或類似的 TOTP 應用程式掃描此 QR code。從現在開始,該應用程式將會產生您每次登入都必須輸入的權杖。" manual_instructions: 如果您無法掃描 QR code,則必須手動輸入此明文密碼: @@ -1318,10 +1320,10 @@ zh-TW: last_active: 最後上線 most_recent: 最近 moved: 已轉移 - mutual: 共同 + mutual: 跟隨彼此 primary: 主要 relationship: 關係 - remove_selected_domains: 從所選網域中移除所有追隨者 + remove_selected_domains: 從所選網域中移除所有跟隨者 remove_selected_followers: 移除所選的跟隨者 remove_selected_follows: 取消跟隨所選使用者 status: 帳號狀態 @@ -1377,8 +1379,8 @@ zh-TW: windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone - revoke: 取消 - revoke_success: Session 取消成功 + revoke: 註銷 + revoke_success: Session 註銷成功 title: 作業階段 view_authentication_history: 檢視您帳號的身份驗證歷史紀錄 settings: @@ -1389,8 +1391,8 @@ zh-TW: authorized_apps: 已授權應用程式 back: 回到 Mastodon delete: 刪除帳號 - development: 開發 - edit_profile: 編輯使用者資訊 + development: 開發者 + edit_profile: 編輯個人檔案 export: 匯出 featured_tags: 推薦標籤 import: 匯入 @@ -1398,9 +1400,9 @@ zh-TW: migrate: 帳號搬遷 notifications: 通知 preferences: 偏好設定 - profile: 使用者資訊 + profile: 個人檔案 relationships: 跟隨中與跟隨者 - statuses_cleanup: 自動貼文刪除 + statuses_cleanup: 自動嘟文刪除 strikes: 管理警告 two_factor_authentication: 兩階段認證 webauthn_authentication: 安全金鑰 @@ -1426,8 +1428,8 @@ zh-TW: pin_errors: direct: 無法釘選只有僅提及使用者可見之嘟文 limit: 您所置頂的嘟文數量已經達到上限 - ownership: 不能置頂他人的嘟文 - reblog: 不能置頂轉嘟 + ownership: 不能釘選他人的嘟文 + reblog: 不能釘選轉嘟 poll: total_people: other: "%{count} 個人" @@ -1446,16 +1448,16 @@ zh-TW: private_long: 只有跟隨您的人能看到 public: 公開 public_long: 所有人都能看到 - unlisted: 公開,但不在公共時間軸顯示 - unlisted_long: 所有人都能看到,但不會出現在公共時間軸上 + unlisted: 不在公開時間軸顯示 + unlisted_long: 所有人都能看到,但不會出現在公開時間軸上 statuses_cleanup: - enabled: 自動刪除舊貼文 - enabled_hint: 一旦達到指定的保存期限,就會自動刪除您的貼文,除非貼文符合下列例外 + enabled: 自動刪除舊嘟文 + enabled_hint: 一旦達到指定的保存期限,就會自動刪除您的嘟文,除非該嘟文符合下列例外 exceptions: 例外 - explanation: 因為刪除貼文是昂貴的動作,所以當伺服器不那麼忙碌的時候才會慢慢完成。因此,您的貼文會在到達保存期限後一段時間才會被刪除。 + explanation: 因為刪除嘟文是昂貴的操作,當伺服器不那麼忙碌時才會慢慢完成。因此,您的嘟文會在到達保存期限後一段時間才會被刪除。 ignore_favs: 忽略最愛 ignore_reblogs: 忽略轉嘟 - interaction_exceptions: 以互動為基礎的例外 + interaction_exceptions: 基於互動的例外規則 interaction_exceptions_explanation: 請注意嘟文是無法保證被刪除的,如果在一次處理過後嘟文低於最愛或轉嘟的門檻。 keep_direct: 保留私訊 keep_direct_hint: 不會刪除任何您的私訊 @@ -1478,13 +1480,13 @@ zh-TW: '604800': 一週 '63113904': 2 年 '7889238': 3 個月 - min_age_label: 按時間篩選 + min_age_label: 保存期限 min_favs: 保留超過嘟文最愛門檻 - min_favs_hint: 如果您嘟文已收到超過最愛門檻則不會刪除。留白表示不論最愛數量皆刪除嘟文。 + min_favs_hint: 如果您嘟文已收到超過最愛門檻則不會刪除。留白表示不論最愛數量皆刪除該嘟文。 min_reblogs: 保留超過嘟文轉嘟門檻 - min_reblogs_hint: 如果您嘟文已收到超過轉嘟門檻則不會刪除。留白表示不論轉嘟數量皆刪除嘟文。 + min_reblogs_hint: 如果您嘟文已收到超過轉嘟門檻則不會刪除。留白表示不論轉嘟數量皆刪除該嘟文。 stream_entries: - pinned: 置頂嘟文 + pinned: 釘選嘟文 reblogged: 轉嘟 sensitive_content: 敏感內容 strikes: @@ -1495,7 +1497,7 @@ zh-TW: themes: contrast: Mastodon(高對比) default: Mastodon(深色) - mastodon-light: Mastodon(亮色主題) + mastodon-light: Mastodon(亮色) time: formats: default: "%Y 年 %b 月 %d 日 %H:%M" @@ -1504,7 +1506,7 @@ zh-TW: two_factor_authentication: add: 新增 disable: 停用 - disabled_success: 已成功啟用兩步驟驗證 + disabled_success: 已成功啟用兩階段驗證 edit: 編輯 enabled: 兩階段認證已啟用 enabled_success: 已成功啟用兩階段認證 @@ -1546,18 +1548,18 @@ zh-TW: explanation: delete_statuses: 您的某些嘟文被發現違反了一項或多項社群準則,隨後已被 %{instance} 的管理員刪除。 disable: 您無法繼續使用您的帳號,但您的個人頁面及其他資料內容保持不變。您可以要求一份您的資料備份,帳號異動設定,或是刪除帳號。 - mark_statuses_as_sensitive: 您的部份嘟文已被 %{instance} 的管理員標記為敏感。這代表了人們必須在顯示預覽前點擊嘟文中的媒體。您可以在將來嘟文時自己將媒體標記為敏感。 + mark_statuses_as_sensitive: 您的部份嘟文已被 %{instance} 的管理員標記為敏感內容。這代表了人們必須在顯示預覽前點擊嘟文中的媒體。您可以在將來嘟文時自己將媒體標記為敏感內容。 sensitive: 由此刻起,您所有上傳的媒體檔案將被標記為敏感內容,並且隱藏於點擊警告之後。 - silence: 您仍然可以使用您的帳號,但僅有已追蹤您的人才能看到您在此伺服器的貼文,您也可能會從各式探索功能中被排除。但其他人仍可手動追蹤您。 - suspend: 您將不能使用您的帳號,您的個人資料頁面及其他資料將不再能被存取。您仍可於約 30 日內資料被完全刪除前要求下載您的資料,但我們仍會保留一部份基本資料,以防止有人規避停權處罰。 + silence: 您仍然可以使用您的帳號,但僅有已跟隨您的人才能看到您在此伺服器的嘟文,您也可能會從各式探索功能中被排除。但其他人仍可手動跟隨您。 + suspend: 您將不能使用您的帳號,您的個人檔案頁面及其他資料將不再能被存取。您仍可於約 30 日內資料被完全刪除前要求下載您的資料,但我們仍會保留一部份基本資料,以防止有人規避停權處罰。 reason: 原因: statuses: 引用的嘟文: subject: delete_statuses: 您於 %{acct} 之嘟文已被移除 disable: 您的帳號 %{acct} 已被凍結 - mark_statuses_as_sensitive: 您在 %{acct} 上的嘟文已被標記為敏感 + mark_statuses_as_sensitive: 您在 %{acct} 上的嘟文已被標記為敏感內容 none: 對 %{acct} 的警告 - sensitive: 從現在開始,您在 %{acct} 上的嘟文將會被標記為敏感 + sensitive: 從現在開始,您在 %{acct} 上的嘟文將會被標記為敏感內容 silence: 您的帳號 %{acct} 已被限制 suspend: 您的帳號 %{acct} 已被停權 title: @@ -1569,23 +1571,23 @@ zh-TW: silence: 帳號已被限制 suspend: 帳號己被停用 welcome: - edit_profile_action: 設定個人資料 - edit_profile_step: 您可以設定您的個人資料,包括上傳大頭貼、變更顯示名稱等等。您也可以選擇在新的跟隨者跟隨前,先對他們進行審核。 + edit_profile_action: 設定個人檔案 + edit_profile_step: 您可以設定您的個人檔案,包括上傳大頭貼、變更顯示名稱等等。您也可以選擇在新的跟隨者跟隨前,先對他們進行審核。 explanation: 下面是幾個小幫助,希望它們能幫到您 final_action: 開始嘟嘟 final_step: '開始嘟嘟吧!即使您現在沒有跟隨者,其他人仍然能在本站時間軸、主題標籤等地方,看到您的公開嘟文。試著用 #introductions 這個主題標籤介紹一下自己吧。' full_handle: 您的完整帳號名稱 - full_handle_hint: 您需要把這告訴你的朋友們,這樣他們就能從另一個伺服器向您發送訊息或著跟隨您。 + full_handle_hint: 您需要把這告訴您的朋友們,這樣他們就能從另一個伺服器向您發送訊息或著跟隨您。 subject: 歡迎來到 Mastodon title: "%{name} 誠摯歡迎您的加入!" users: - follow_limit_reached: 您無法追蹤多於 %{limit} 個人 + follow_limit_reached: 您無法跟隨多於 %{limit} 個人 invalid_otp_token: 兩階段認證碼不正確 otp_lost_help_html: 如果您無法訪問這兩者,可以透過 %{email} 與我們聯繫 seamless_external_login: 由於您是由外部系統登入,所以不能設定密碼與電子郵件。 signed_in_as: 目前登入的帳號: verification: - explanation_html: 您在 Mastodon 個人資料頁上所列出的連結,可以用此方式驗證您確實掌控該連結網頁的內容。您可以在連結的網頁上加上一個連回 Mastodon 個人資料頁的連結,該連結的原始碼 必須包含rel="me"屬性。連結的顯示文字可自由發揮,以下為範例: + explanation_html: 您在 Mastodon 個人檔案頁上所列出的連結,可以用此方式驗證您確實掌控該連結網頁的內容。您可以在連結的網頁上加上一個連回 Mastodon 個人檔案頁面的連結,該連結的原始碼 必須包含rel="me"屬性。連結的顯示文字可自由發揮,以下為範例: verification: 驗證連結 webauthn_credentials: add: 新增安全金鑰 @@ -1602,5 +1604,5 @@ zh-TW: nickname_hint: 輸入您新安全金鑰的暱稱 not_enabled: 您尚未啟用 WebAuthn not_supported: 此瀏覽器並不支援安全金鑰 - otp_required: 請先啟用兩步驟驗證以使用安全金鑰。 + otp_required: 請先啟用兩階段驗證以使用安全金鑰。 registered_on: 註冊於 %{date} From 03d9618595bd2433a319c0bfc0f5bbb14653d0d6 Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 1 Nov 2022 12:59:23 +0100 Subject: [PATCH 612/652] Fix UserCleanupScheduler crash when an unconfirmed account has a moderation note (#19629) Fixes #19109 --- app/workers/scheduler/user_cleanup_scheduler.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/workers/scheduler/user_cleanup_scheduler.rb b/app/workers/scheduler/user_cleanup_scheduler.rb index d1f00c47f..7a6995a1f 100644 --- a/app/workers/scheduler/user_cleanup_scheduler.rb +++ b/app/workers/scheduler/user_cleanup_scheduler.rb @@ -15,6 +15,8 @@ class Scheduler::UserCleanupScheduler def clean_unconfirmed_accounts! User.where('confirmed_at is NULL AND confirmation_sent_at <= ?', 2.days.ago).reorder(nil).find_in_batches do |batch| + # We have to do it separately because of missing database constraints + AccountModerationNote.where(account_id: batch.map(&:account_id)).delete_all Account.where(id: batch.map(&:account_id)).delete_all User.where(id: batch.map(&:id)).delete_all end From d0ba77047e539b7ae102296d096fcfd668a2ec92 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 1 Nov 2022 13:01:39 +0100 Subject: [PATCH 613/652] Change max. thumbnail dimensions to 640x360px (360p) (#19619) --- app/models/media_attachment.rb | 2 +- spec/models/media_attachment_spec.rb | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb index a24fb857b..4a1948380 100644 --- a/app/models/media_attachment.rb +++ b/app/models/media_attachment.rb @@ -72,7 +72,7 @@ class MediaAttachment < ApplicationRecord }.freeze, small: { - pixels: 160_000, # 400x400px + pixels: 230_400, # 640x360px file_geometry_parser: FastGeometryParser, blurhash: BLURHASH_OPTIONS, }.freeze, diff --git a/spec/models/media_attachment_spec.rb b/spec/models/media_attachment_spec.rb index cbd9a09c5..29fd313ae 100644 --- a/spec/models/media_attachment_spec.rb +++ b/spec/models/media_attachment_spec.rb @@ -157,9 +157,9 @@ RSpec.describe MediaAttachment, type: :model do expect(media.file.meta["original"]["width"]).to eq 600 expect(media.file.meta["original"]["height"]).to eq 400 expect(media.file.meta["original"]["aspect"]).to eq 1.5 - expect(media.file.meta["small"]["width"]).to eq 490 - expect(media.file.meta["small"]["height"]).to eq 327 - expect(media.file.meta["small"]["aspect"]).to eq 490.0 / 327 + expect(media.file.meta["small"]["width"]).to eq 588 + expect(media.file.meta["small"]["height"]).to eq 392 + expect(media.file.meta["small"]["aspect"]).to eq 1.5 end it 'gives the file a random name' do From c68e6b52d9d4da5d34380587cb6faaabdfedfb35 Mon Sep 17 00:00:00 2001 From: pea-sys <49807271+pea-sys@users.noreply.github.com> Date: Tue, 1 Nov 2022 23:06:52 +0900 Subject: [PATCH 615/652] png optimization(loss less) (#19630) --- .../icons/android-chrome-144x144.png | Bin 6644 -> 5810 bytes .../icons/android-chrome-192x192.png | Bin 10138 -> 8741 bytes .../icons/android-chrome-256x256.png | Bin 14194 -> 11993 bytes app/javascript/icons/android-chrome-36x36.png | Bin 1050 -> 950 bytes .../icons/android-chrome-384x384.png | Bin 25667 -> 21112 bytes app/javascript/icons/android-chrome-48x48.png | Bin 1468 -> 1384 bytes .../icons/android-chrome-512x512.png | Bin 39853 -> 31858 bytes app/javascript/icons/android-chrome-72x72.png | Bin 2501 -> 2262 bytes app/javascript/icons/android-chrome-96x96.png | Bin 3713 -> 3306 bytes .../icons/apple-touch-icon-1024x1024.png | Bin 104580 -> 77950 bytes .../icons/apple-touch-icon-114x114.png | Bin 4641 -> 4123 bytes .../icons/apple-touch-icon-120x120.png | Bin 4914 -> 4366 bytes .../icons/apple-touch-icon-144x144.png | Bin 6644 -> 5810 bytes .../icons/apple-touch-icon-152x152.png | Bin 7002 -> 6177 bytes .../icons/apple-touch-icon-167x167.png | Bin 8096 -> 7041 bytes .../icons/apple-touch-icon-180x180.png | Bin 8947 -> 7709 bytes .../icons/apple-touch-icon-57x57.png | Bin 1857 -> 1673 bytes .../icons/apple-touch-icon-60x60.png | Bin 1952 -> 1761 bytes .../icons/apple-touch-icon-72x72.png | Bin 2501 -> 2262 bytes .../icons/apple-touch-icon-76x76.png | Bin 2617 -> 2360 bytes app/javascript/icons/favicon-16x16.png | Bin 639 -> 588 bytes app/javascript/icons/favicon-32x32.png | Bin 1250 -> 1114 bytes app/javascript/icons/favicon-48x48.png | Bin 1899 -> 1680 bytes app/javascript/images/mailer/icon_cached.png | Bin 2014 -> 1133 bytes app/javascript/images/mailer/icon_done.png | Bin 817 -> 477 bytes app/javascript/images/mailer/icon_email.png | Bin 2120 -> 1138 bytes .../images/mailer/icon_file_download.png | Bin 813 -> 346 bytes app/javascript/images/mailer/icon_flag.png | Bin 693 -> 298 bytes app/javascript/images/mailer/icon_grade.png | Bin 3243 -> 1959 bytes .../images/mailer/icon_lock_open.png | Bin 2498 -> 1642 bytes .../images/mailer/icon_person_add.png | Bin 2356 -> 1440 bytes app/javascript/images/mailer/icon_reply.png | Bin 2146 -> 1235 bytes app/javascript/images/mailer/logo.png | Bin 1673 -> 1150 bytes app/javascript/images/mailer/wordmark.png | Bin 8991 -> 6753 bytes app/javascript/images/preview.png | Bin 514463 -> 340408 bytes app/javascript/images/reticle.png | Bin 2199 -> 1439 bytes app/javascript/images/void.png | Bin 174 -> 80 bytes lib/assets/wordmark.dark.png | Bin 8991 -> 6753 bytes lib/assets/wordmark.light.png | Bin 8625 -> 6613 bytes public/avatars/original/missing.png | Bin 3292 -> 2897 bytes public/badge.png | Bin 4058 -> 2998 bytes public/headers/original/missing.png | Bin 81 -> 68 bytes public/oops.png | Bin 20552 -> 16948 bytes public/web-push-icon_expand.png | Bin 1380 -> 1077 bytes public/web-push-icon_favourite.png | Bin 1046 -> 721 bytes public/web-push-icon_reblog.png | Bin 851 -> 590 bytes spec/fabricators/assets/utah_teapot.png | Bin 248232 -> 195600 bytes spec/fixtures/files/emojo.png | Bin 29814 -> 29283 bytes 48 files changed, 0 insertions(+), 0 deletions(-) diff --git a/app/javascript/icons/android-chrome-144x144.png b/app/javascript/icons/android-chrome-144x144.png index d282a6d3d63432a3198d0ecbe882ba32915b8fe5..698fb4a260b13621d40468ad5f3fb3438568748d 100644 GIT binary patch literal 5810 zcmV;j7ES4iP)ION2!CGG#qor!EG z<7+E^&zY#zmy@5iot(8}e_8vir6X(m-uH#UVMt-fP}q>6upvWXLt#UP!iEfm4TTLE z3L7#MHWW5wC~U}3*ihJzp|BxCVc)#8APf>iVPVK{NgT3*85RbIA+0cESab{-79B$l zJHv(yGi=B(!-jp>kYOJ-WY~u#BO_^AJe6*Tc3X6K4O@AVjhi^(1U7Bt85`ZWk=3gi zU&Z*itHv`n?&{TY009UKAoG}-%FGP=k9||@o6hv~{&AVyo!z_Z?%hsKvhDFYG2zS% zN2g=o{f>PcH6$tK+0XIW&-V1q>_677EfD%4K-A0=l>|f%i&}l`(cF7az4u;ky*0ab zf*w7>rj7giU+amVqU-{Z?)QA&XTK^NAr0GVej`%Kl+zhzkp$ zzTu7j=ufm-4VhDgr~tUIh6TvH2j!_G0Jwzsg&ohc1%xCCiRYi&{_I7Of*eVF*W30S zd0XH99p#69xP^zR>ODjy^ELEI)TaoL!zBUGBtU|gBy++bTyTEp!VBsVcILZ&e$NrM z^*!HLzV~}uNGT$M(vv3%y10fF_BqYF z-rZP=1}S=os(uX}d3j-0TTKXwwdS{eqkZcwM=sCGk+gN(aph-zwy~&D=WGFhIxFw! zKvfg~5lRs$K1oVp|5r3NMyTY-WZ2K`J~Fn7{)2zg+I&W%sETDyjdJvp%ned!FKK@5 z%QGMTU>l2w4tRzop^|#m*=#lI{yyvfutzCPtE&IJ(O-|;jE4yF#T=y$q>Rfzb=kphLFTJF5^G)^9M{3hz}Ki)DHiQj?$tiUn$T_3N5*KUMZkC1OAa@AgU(2vE~~&Fc$N zw0~QH3qI4n;N14kEe{3+ivbV%cizPG z)UKz*VScFVF1zp6>({^eJ2(Bz+eb!PF6|5=hVe1ZJiEE{>(f#wg%!hh{>)BR&{$II z>NVwm{KBfHDHclUt8nkuy#G(y7k~0z1k@r%1P~>G&|?IjQVTKANH^v_n6vPhm0G{gv-H=9~1Y7rqTB5Xz1!z7`e zdTNn*zhrT)y{3KPCmukGEi9^~L8Pb&2%$(4QfsO)wUBz<DG#H(Yf7My(Y&U$Mg&z zd4H#*V56lp4Hhk^3if;fNkURmu-0yuXu9Wrs{Qg;HYc9gEP63RjcF`nqv=dTlBy0? z(P5||T~bdv85FYQ!k*-^Z*;ai@UW#RrBIqu4t$rjAW|T6#)u)QsojV`*!lRwANLNjKF3wI(>Z?U65i?zEr&`Lg7{Tg9we zRVH^;qZU%p0W0fCNRBzSKtz_tFMqD>0Yj}PbF0`o`RdFM z|M=LdRZFajB*56%>~(+v%dn)9B&=CKKGFh~UJsKzzO~+U%cGXofoy0>DUB401mtyZ z82$F|X^uPYK*Snuzom2TCuZ)ucN&T`C5cT6@Bh6AuoR02a?4W6@yCz;z>kf-l=TD>l95qnS@a8*WXE6Fs@1OW&*8{zeD9J%VUnVuA*C=^TCu^ke$pL;PRkU@Lp zuN9!ykX9q6uO(6TOm?vcXaYo1pY@zZV^N|&dX|G2&U$(4qVr;b6cU_`YRH-Av`PVy zD9$g666K6%HKnn3Ybby{x6wV59R$K+gabqfRSINKszgZuY8`1UU2r4;lT7VFiU@)U zLQ<1@%yH#_tx_Ngkf2g)^pw+D`{~TIRg@kHq@H$qgGlCb6ab6H=oCm0`USF%V>FV?Ek4T?~RDK@vhuy5r*r7BwOSP(vtE(`vD9 zz1z1TA}9$VRH&PdExpqb0F=aH0yPQat6+N<35AHUm}+Ncs@5N1Ad8X;0U!gFVUSRTB;8I}n)!E3fJ6#4K!TxG6;T0YmY@lWX<9&y3IQcaQb$I| zTFq0R%oIpKgak}djTDGD&r$-i6y5HMXINpy2mv~sup9z7zpEoE35ODN?oVq-aDL)O zR2EEh1yB*viysbII`B zk(v|%NQqrA^D=vJZ8Pl}5JHcEDmnn#(;NnwFMMv?2T=_GNfHx;3JF!DpNgDdOd^mN z0!I3y(*_^|Sai%DopzRY;=%SpzeJE=NT8A~1R!8PvsVy;Kujt<5@ZqD?K;3kNAGJ0 zN16bTkc8+mYHjC9n_pFei&lvadeM=Y>AJiVA@e_T_@`@tmI-qa+5Fr5ByL(5?F^$V8FlPrqmUa5v@&7uz0)02m4CGT&0T4=i zCe7I4*BmUb=72zj66Pv^BQ$&MLRPp+%u2+Tc^zw}r|bAwLm$lb+av^-9rsgZyx=7x z$DX)>8WACcP%H;!s*Czsc=rCEnwpIO3{Hjt5fl?=rUNVde_Tm^{AbtHB$Wgqpjaph zppa$GE=!UywP$B3BShn%^ca#=P?+9V>7TGrAJ*rYAc7E3 z00h$4cRgYGvoo=+J2yudqznr^LSSld01{S^ph78HKrA8_N>M-|tQ_+2gIy3I5@2vL zOvn?M820S$f)H?pp6O6C|MsvRoOVJ~mf$a+JxjkJ<-vQ}Fn8sqiW!`jxjC0od-jBt zM+IiJ^_W#9E6nXT&*d1zwE11AQ&(pB3TJxE68)#u69t8XKeb*XLqsLyB#k1 z@{|aQfCKoRznML@ZfOID+xZ3nMG=u@v(mGF{Y!fveQ=_b2BIJkfPq{R!^GBZf-YX; zA>zCRB>_-DQ3aOY{I1CCN%l=~-p3{ZQ6vy31DIh-gkjweqrOzxtAWpF4M3 z&$0w90TOYLGE4|nQWMG6$7Y`U!qH`QzWq19%V&AB-*xNsAO70ootY_1Q$*1~gr402 zs}g;Z=wlCem)rTSeDk}k*>AXN-|zh5ww>FzJMWzdq=-ahpnd`qAgKu?Nx1Ls8KfUn z7C=^>erFFCd~)~4|7^$9o(Z()(#&}Z8MwFKi}S17`|g@a4UmLE=ArxAzwjTn{@HKc zx!;zQVxt9%7F8q}%-xOV-(d+8TX#Ob<%Hu-XpjMA+m_CGAKmq}&rj}|+%|v7pM8J; zNn`~nE8K%AppyIUY6Bnx#msar|H|H9`1f1>`CotdqEFttXZM6CO|h{QEybo-us|WG z1G&4A5+X^0fcM-v^@`Vxvs@myXXdI)_MY+V(KDVq`ixC2R+5RWorfQ2-*LN}00L&P_rMgB0EXZ_x6gnq7xg25bTopEh#*Nv)Gk z9Xa9T*2ZI6>o$~i>-%1B!`{8wH`Q%VvwK%(*N$x8*4eqeyKQUx(T6&ZKGfbZv6TP< z2r9)8^?;}b)J8M~3z!-m?ES+60WpxfZ{Ih$ySsLM!?HNxq}J*+oAyp_10KHr(TDG+ zM?hrF+GEyjXhz4%__(EE|6pXqZg;^TzAFeQ0ysD0uZ1lkHVou z5Q6s1N#a}_4CriBDGDG0MFB}qdmo84h?|xs0H`%+x#Q+7U%qhdTfT3Da`<`1&;Qj; z_uW0cYx`a-1O#G?fk+Y-j4T8!fS`yGNTG)!fQRfiH!C?J^pRKtT66$G2nadnI-gsiHISy(IF5} z{AS;HTMU9mb@#6Azx6-LzxjpJ##eh7cZ4+waK>}T{`r49>HWXE?Z&GnQ2-2)5|PNl zL_kA807OV@w6xomAU*ZHpacj31q2eFR{Ys-zl9Yg0YXjcev)pj-PG>OUU||#{P!o0 zjFo<4gg|O)NKL}6*G+x>3%jnra&LP&0MK(0WB~#QS-Y-v!pS42Y#!NvQQZ8TRVSX> z`Uh{juidF42^gY&i*9Y71R)Rvf`DFs#lye$U-`TL`lMz=`awt#0|LC@%vCRV*{Yf8 z+5l-*KKI+KaM%x<4+o0v##L~QmMfZ z5P{@db!&Si0S_FdSQ7$X`L&0C;os$N{fm=UuPgn;5D3Ip5(E`72mw_9<*=}zDy0ah z=Y3>*w^kuyf*iH92rG?94In^)AS6L8_uswsKmEh*&;QlqUjLoz``c4U3}vo}15E&s z9!qY~EdmI^gjz#U5ppyOBOCz)LJ%Sat4bji-8r%C*Z=#rE5C8dyZ+7z8#cB2aE8SM z5+e{~X`GjiGOuVvNJU~f%8j)+QY2^zk%n|FO{v{rA{LX&zVgtm*YEl6A3f%Ker)6T z>e9!{n_@8uNJ4+;d>=vYym4>0lMsjr%2A9z^OhSpVk8kD3AGz)4$w^kH34$$@yC4U z4{vI|L<)3%m+4}^SZUKe)IbMCCTV`StwBe(tl0}0B(JB=E|>4Uh$RPx8L*_ zf=#huKxh$;EOU!mPzpi<(UK6V1Ts0f{VNykKeBH9rWc;M`bB52dG-s&&Uo&srsbjL z`e1r0cipo0rfc`!boJzIH*FC$P>6-193aS1z9hc+dY%RnAV5MTsR^k`B?&cz0Li@N zFR)?5rv0}uPdaVv#8XF)J8^Wwre^(y*4hoFX$nvZwX$b-XJ$G(COX@;wD%v6JTQIV zUDJ;|u)EXQcd%r^Cn%OiJg}1zfE=y((@&2uAYf7f$P?7LE7^f@0uV?NH31@rK{({L zuz)>VXgTPGg#|py`>^md5vm9QA*hfvT0@aqp+JD3CTK|Sl>QI^q9ULKECo>!v}Z9y zLXPGPd((A1y#yqwKnMvWNq{88BqRw0NsuIBSdyqcy9$U{1W=0ty*vXV0vyG{-gqrf zH?vtofEoajDkKR&m~$y4U>{)tm57J{_#{C=1#y0cITY3>0U^n(AwxwHp!OtGkN{yR z)Br&Rz}`p&oEr=P2ZUY2(M7-z115pl0YD%Df-FJiIh&Va0tzuAfFa_r4_h7r0CD!? zq!g0`1R&afAe|Ga5FxV<0uEA!z2Rz(VnW1uV+a9|z6c;h4vr&(Nh=)X7!D8sP(t5` zgyhhegNi@(`l}c+I248q6fF{l3^Q!VQ6+51P}q>6u%WOaLt#UP!iK_z422CD3L6R= wG88ssC~PQf$WYjjp|GK_Awyw9hQfyYUpZjbEWF^Z{{R3007*qoM6N<$g0i~4PXGV_ literal 6644 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 diff --git a/app/javascript/icons/android-chrome-192x192.png b/app/javascript/icons/android-chrome-192x192.png index d3f9959c5aea246408b324e6700c4c0647b947c2..2b6b632648f6b18918881287c8a8b295cbc81eb7 100644 GIT binary patch literal 8741 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 P00000NkvXXu0mjfxX8FH literal 10138 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 KL2INfKK&1y=3s*W diff --git a/app/javascript/icons/android-chrome-256x256.png b/app/javascript/icons/android-chrome-256x256.png index 98ce6ffbbbc9d4482c2ca02a3a105d13fab9dc17..51e3849a263062ccefb246dfcd2130114ee040ae 100644 GIT binary patch literal 11993 zcmb7qWn7d`{O!_R3sQpA0@Bh7!Y;7jE-j^mf`D{M_tFwlOLvF}NGRR$BLwM=m2RXv zmfg$$-go!az4K;fUd;2%oS8XuzTeM@($;)MLCQ=D001c9FsKdyfb-DA0TAOpRFl+T zQ2;$_bVD_Usw01T1gyLdfrNA%hUEw>}=Q+@!2lvHRS(5 zT^THvIr;Px#o}jvXRq&5$?yT^S<8QpHh60GvuMnVo18APpYT@S6gTytjav`{(g^*Si9jiAV^fy!gk4D(5T1f?3v%?81ME_9mn@lTeMYdm%_z)W4pYk zM`^>GfVTZZgEtH^GT!GUx3_!I()MUf)%owo9z9iW2lRjZwB%zD*`hvo^D)OYM070K ziPSZ?A+kJ=Cc2a^TybVdp1DQH9=K<_mQ@%H7Z-n^7MV(?={9v)s^Zp188}n^GF~y2D`lW$y zqLhO~G@j$a*oB+Eu-!ou276`2$37#H7!R)cK1?H+@0q=55pZ5*Dh@Tmr-h`CDr}j_ z=|7FW`{s;L8w=wj$OQz@3Z5k0?(n+4F-ZyGON@~3f44**h6Jkg|6yJdREucVYrX#D*dCha32% z(MycN^YYI>D1u_EC62+(fsVT;zjL-p4S74CBjrHtrvXhhBUU^oe*Uye0mgsry?d+$ zy05Dp;=nId$C5bILZNidMMC*x`&Q6V5?oe56+obkUx zQ+H~ocFD%oJ`<@Ezc1qB;FB_kcCE55&@=cve_}1p32aLCw4IJSO|k2KaXHz@NbjEq z`)4Dmkiw_go`lYgd{n&DG(7>TU+UyDYFm~D*K*S(RKy1HfdGP_d|tdHX0qZUU8T@~ zWvVq1Op$kCp5!~C@|hH>Zvi&CHQ4%!o(PFSM`T#BlpYbhIO^y=hJ7) znI^3-Y7WHn25-sViIf8q8lz?(jm?EUA*>=9CbOb-Ldb1fzk

?H( zuGjK7A|Any?X$n{#Z?~rwN>0_khCLGm9RD3U|&U5y+dVsGLpQ-q%c$UCe)peJ>7=G z_cQe~dqSti7a}AfPhlRotz@xPSK!+d_B?C)`;APBSm6G9Q2J@IAU?YRZv ziIbsoo=n`HHybGd1!Z*;(+ygiTq)1$;RYu3bAY$uaxbAkQeMS3?^(+O=57*e-Wua; z3q`Zx%$khCrXk1-Ej5x`S|{r1jHG%;4`Wj=S+BB+x~Y>HdA(|a!8DQgc5LW`fE_yH zwmt`SL*D$l-nNrW)TNazHjs4=6|E{|KYq%sw%>My#Xghwk0!wRory=CyaoWg^Za;t z65AV$^GX}j%iKhBd2?vga>R`j!+@&7cz)%k9aRs0QbXj^-28V^E4BT`ywuUl-b72g z-o1=gyuqk$EkHoHgWqf5V^^&$)I;i7P?aN-|7B^{JLfNg5y}Dv*DRgK%1YpKHo6AjCp-o!=k#yxd&wsy9-@K#!B1|j0+RH%5=Hqe<8Ek*u$arYzc07H(hKHf3>`Cx;v>1L|~en(fp83V*iuuQ27dw-U=3WdD$V z+33A<>-*;Wj_5njdTsoG_HS4i*pV)a`m54rJXGM{{r8IN)jS)M+J2Q8TlZ$f-S;(t z<-f8#qJl};ZiVN8oVQMmVgLP@Pt5B0?1gPV;3xrccX}Rsm?af*N0Yx?<#Y?A<+L6x4V8~ z=4>ons1=37BrF+$*B91CMJeD*U5cjHt^gV$0Pz<+`k!_bZHJu1Jp*R`YWbtAkFj$^ zN@z9LGlmVsReYwc`c=CHXP{KM(BGRQzqabrAkqLX>Tc20cjhK`dP~O~iU5nI#&4eR||cgjSM=hry!BW%Cv&IP z>w;6?E7ou-|NgBZ5)}bP5=+_Oc{lRY-<&@T6fStu6?M9~p9{Wc?!lge`at*KTeDBg zaZ=F6D|lM4&m&90$7>=!;1H8A0r-dZw6s6fj4ba#;ijMBt3=+pBpUzhoQRit>564n z7$fe}Oup_;dAZAo-hV>)JUtZu`L&2FjP>Av>TeDDbKnrnz!2Y`ePW7F8-}38&wPFH zilaSimj`Q*ElID&1$I*)gPGRDo%p0ZW?ysc8jA6!$fq!NqiA zUgco8<=PA80*V#|Sk89oKjJb9MZ6PihksrB^+Wpg7PktqW+;2()LBVb%2OF@4x;w9 zrh{)k3_g1i8eKLIkJ4M5zZ#V!VDAb7JzryFqzJT(6D#p|PaFyF`Q#c-+mgi|t_1D{ihpS<6PA!Mzu_jLl=p^tooW25ul>yf;_YQo_9A&TfWjunJYXoVk3 z?hhiLeS3TYvH(E&aw)rs@EJEYMhOm6(o}PDoGu-Z<%$G1q3StyNc64}XViE-&c%}; zT*&hqDav#?Ub$U{GFI_p*=7DGvfe=wzA={4|KU5FYjb>{rU8nv;=Sa!FY5iAle$F+ z0Tt#+{TG~UkDA9^-)@Rqtqvd6Cjsz$GYN{gvp|q4V`}V^kFOt@YkXR`s0(rd1OZ$C z1umaB0&Zm}{nvXRNiR*XM_EdSXF}V%x=3)SRi6GwJna``#|#Jx+1dD8Ys=oJf`#E; zFFMo1IRo=KO=9JDeFr|YcUa=n;QW_)HP82*(0++wD1E?oviz-kTicFIv7YZ}MXe#70t0Gks z?C84nkVSe=(5qxwIFL$T!G2}R@;DWlln=z2o6mOs!_Ch@Ht(k5fZ#R^8Gj6o|FtZO zaxigqUmtsn6A-~8@D+>3SHeX`L@I_Zw%;INn=5u5Q+E? zV_RI%>2X$>*RWaBKlzE7xi2u!`^uBf60=18E+0p+w0rp9h?v};&sN4+W{sncT(EfZ zS7Zikx1G0dFh^t$3x+0X;~QA=FIXb`RntSn+OUh?a|3T9x<9`{fnsu6RZxryHUiZq zKp%bRn4Qu^aTXp4{bLN((plvN?e8a9!_wSQiRJyuN79N&kPNXDLkk)M_O#i$Pg~co zGQ3YhtVX1@nVa^H&_4M1X6xYAMOL(O+g0)1wUJNF{(&L7Wy$e(!-sjQv;^;>RV zKKo47emhAdA;Ssei%N`#Ua3aJe2_9P&jH_GHk5~&EN&^nk!H&no4Sf(Ts0d13(`h_ zzVDe3kj}EJdWovF3JA9x;X_1pC8*K`pZ6!CQ6Z;tjJOX4mAc#lo(?#|s@QUqaEuU~{d|!LY$-ls}0$MF6qrYR+j)gYnbo|{3 znkk@^;SVLF-j3XFlJJ2HhVOE)`N@rO^RqJ^aAS8njpEWAnWo)hRvJL?W#Z@AWM~9C zFkD5wNS7o@Vz}y-0<8O=wz#h$*>i6*^un_Ljx)M<(tcZ-Ke|6Zc_%0=0aO(J%%HCd z6H6rBhK=6Z67uY+LSGPJW=!SV+U0E{Rf-Gw#u5~RKC>;Djeqw*LQ$o$c94vIF+7v- zB+gQj$j45Mo?lo3+{KU}WI2elF99cNMC+Gt@9((yA*M$uCIcUgI1iic-CnQlNe3<( znoAK|hQm;tG+Z@wVI{4Y*dJF*4b$c;f9RzJ4&--J1e|ZjFTzrHU_7cuOrpw!lgUNv zO7X&5Uvt{1&n%mS{uFYLA@LVdQk3JLI+9g9KhfjtfiU8dqDaZ7?3Z02w&9>p;cA>A zzW3HumF49{miSF2PBmhEpR3-AS}lP=nYC5e{Q!QGi8aQi?B3b-K>bMrha532Ad;NR z-*RHT=hq~|46o3_0!~>S&I#~B3za>DhV@;ln5 zOR4=Xf(iT7J_)N2E97>P`e_1g_vflprUn((*^|K5E+{j+|#2I0hOAaeyLdLMFd+Rz6M@?-GhsL8(;i z+l&3YR*k#3fJu-PCKe^)D;E^x_-^DThK;0gS#DHI;z~pTeMe&=N;zZA`-?aM9L8O+!K$&B<^o z=tY{n*eV@9(c=xI8VdJQ>ANYU zi~rCuCYM2jH8~|Y3{8(lngR{&f^xond;D1Tu0v7`qzVPG+n~z!raZA27$?e;ox%tr zd$)R7VYxn5z=1D;EV6o2h&K#101rvU>1qx+dzAF~fkN!_c|FOFu|x;lb1aYU@pg zUshuei2xi(@{Ncxh=-eWx&V(|zihGGH3+(&GAByW9=_RI-t^ zQW=|CU3?p3TE~S_$E2VAo*mzYr?!v*MRo->S*-AJeYe@TzOHJrT6$S{B#-<{fSk-fl&E^5QB-SB77%8X6W`aW3m@Dp^0QnyZuk6I7fhU$IW5o!i4l!IiZlr^X0|pYPCQy zYa_2I1Chu3j;Ost6x*(w%?f4AN{Da^1UyK{li1DaB?Y2v5q`Z{HGPp7x1AkDPBE~r>x>AnT{ zNM6>yVf*zqtM7p|o3>Czk+GN1lqzs-tm~JwB;??U8imVhE0bSk4EoP(IlTsIh8qq_ z?ECLLGlpemws{KBl8IwCio`!xm0^qqRSHG*W;_5kgL~l4u(Oc-XG)oKTFp6tS)6m| zX%iuZgV0F$*`VWV&m_0)5v`;)B}Z#ac1+}a-6m*XZA>l^NAqRVhqSkZ5KD^#bU4|s zSr`%u3IQq5*2M6DIBF7L`+S-&>ppxpj9y8AspWuYABggkZw1t)aA*HPrjKPNn%U!) zs8qkv!-SIs++M>i_SGkh?1B`BD^uS;2mj)vFK%gj!VV{M-#X$i(8kw;;BqEH)e0FIq#xC=ds8|HI{EoDQm=8v^*X(kY?_U)=w#>Rl>0Fb+Iz z)n+P~Ht|;)sAjq4N4MjDv(-JYA}sN7_2~6DYtZK*rLKsQ#+}}8Gw@Nmo-Y6;+pjVgz>be(MwAMOt zlmBq>Lh{%muH1VBf8%=n-;w{>fEY+mheHu%IZt5Z4oHOWXi|hOxu0DZ<{`Q-*EW2x zbMNz7e|rxIT!N3I?`MmH!Pj!u(m(W&k8GJzXmF~tiRMKAo78gLxBBGD*G9RQbfu0r zNELY1q%x^m2oHyF8>T7>)+)H`Ls3qt#vaI&MLtbR2t$?D`|N+s!H!XvzXMnP5`kSD z7&(KXbg}L}ibI9?`YY&pU9G&ixr((7rdfr6Q;+4&{0j=xPht|>?4+QvZ^TQb`ia55 zr*rNo);oIEl-c}DD2ivR(Ih~u!v4Qpo0U+oH%87GVQ$&aZX0HRR1_HW2?{4EAk_lD z_%+x&5HrgwGUD;Kvwq{hrd2eI#s@5!=3pNxnQOxL6d@TnfDym~9U}3fR6mLidRS zIXOX5Wkc;QqN&X65(=p3)Zb4Q0ky~#a3!8nDNulf3b~ zTs!GLh>+q?eshjg=6v>XYAHOkfOcYcOyJ4dMw@9~>pzP9WW+sH9Qd@I7YVZr`vQr; z=T3eb^o=l5qITS_P&Xd@Y3siiM3j=UCfO{;J8KsMF>Y;=KXtK#9lp0+Y-lr}LLn1g zNIepy7a}a)8B$xQq0arz6pWo4uk$mlMtDUhSzA&~@tU3yVydv$=M90wL@>^QnMe{i zuz-85%#aWgrBd|m8>jdFPM;NkIw40yb7}ozpk=(%wi|IL&D(w>08U7>Okn0pgn|+w z%%z}8ze^7)J;kT0i6p0EcO!^}e^iI%UrnOtlJ@=aM6%CBFo(3@+qQVs1-&HlQqfEv zTV_~dJ-uZq4v=n(fA*^*n-4aVdp7zN+xxpT#L=AJ(&bwShzXc!gTzl)G` z5S(w4ADu;4(Spwxf6oeMa|APL;3j@i2{CCcW`qEn|2}r-wc(mhr8Lrg+9#yQh|z#aV8+$Vd`bSlmsOqBs8|;MKm94=n3$9 za0Ta0tgkG(BuO(- z>snyX^IR^GR!>p?^VK@+$x*KV$|lhvVtx-##JJ6){;9QAj#%T1p!%ErYit$SE4IKd zig1vQ5Dnb-gvXLx0|<{yu7wvdcbz7*vVLba3e$v090j799zF>dXd;yH#+DIvU{~4h zFaQznlf+@zT{zcw$ql!aick9Vk zi)Nk-B}>4@udngfT}Ko2(roSa;)HRnF4!%PE4jPF+w_3X&M2?5)lY+~Dda6(H#Kr@ zzU%uL!?U}k>yNYUufNAtf!)j>7-s8V-_}3f-+6QGa!^`5ZdeIV@=)x_=wduR7aR!x z(!6sYRi?79aQdTT=Ut_n5nQ$|-959o{;|5(vfH)u{XYgC5Nuxxae4Lfw%zLq_t4Ww zI(8ef^2#NbyBz6d_rb=^nUpN2Cq&MS0s`|5h_kaViNg&J))x0%zj1P9QMT2)o0AbW z*2T8fH@;i$quC2{tuH)I=RT@Fu~SiklK^Y9WM|WCkq_|<-13r)iy;(e05bGIA#%)s zBlmzwse-bF(j+JK3McnH(>n(6w(?a)v^^~VdwV2@SzJaFKb?1-Oih2ySr2rpZ7Va+ zT?jNzsHj&^eArD$SOjSVV{9^qB@~%3zit{4nXt0phdnL2=7$x=dLI*wwC-T^TeOT% zk#AVght5cLlz+2Wh#nu_LdBt>8??%)B?-s??{7_n)hgq0a26H-LAGMd3SZc}V0y?8 z^mxGj8K=_7cOUsexQa*A>ZN3Ccdih3rFmEZXARFcL=D{6b6PUVP%g<=)J4USBP~wA z;M%qYiux^9`SHS>nmQp8o`TSkaATwaCy0i|a%6yZ{0mJH9xxU*Nz9{o;Boq+{Wzx* zQC2z;Rj-S(U9jOT2BR5FZ~tg@C@3cF=U&-MBG3(B*YnkN9ctAQLPcI3<;>!+3F5KK zGOs%h2=i`s=x0@!WNdPRHWH|a+@l7Oqy!IP#EV2De=18PH5v%o2amxt^o?wE7A_yR zukF4Gyp3gV@%J~#Y`?Ah+>W7vLn48|S`8IR#Uk6WNQFo6H9MR7Yiama$TO9$erk4h zt_2V=JcNgaM#%;=R3~h1E)ib#{+~|XL(DlIsqL;<7#8iwp^tS!$!$D=avNU4b%iOBexL=^g)pZe4ByiP8>h5Q}q~u}L zG(wWdqVULc>m#q=r4L$TsXIjrn!2)ev^mAG@%Ke7nDgaUUV#F*=XdPah5wfCYuJ1T zwOF(w3~?VT zXd9y!Q*~X%`~D_FddYn-`W=W)q}BN%Ca`O@3cI`wg(+G<$nb~{W&)cZVlou1<&$JG;dH)pIZlWfsHq8D5YIHV2rO)6l6RD-xN* zICX5Gob~5RkpPO6#>%&vVcg?V3B|>X!z!6}V(#li9e3kz+AjNM1D1w8^T<1PuanSbSHLo!%RR|w^@A=EXR(BsnQ%?sQ!MOUPNudYn} z*N1=EL(5?3>Sh1m0V3dQ1g85}(rEdsEyV9HLHJ+E9A%~yL<>Q8Xg{j+`Y{zQG+4gth z#jQYA?SAiDeV5gw zt3uh%{=2up_dd(g#GZ9v<|dBv(z^4tH6&|oe{kjtrD&r&y z>u=l9Ay-z6gH+XYOI&&R6O&Kexw<(EVtD>b#s@-1QJ(T7&$1pnX)I*^*$y0N>)51P zmQ(Q*ATg7tN(OvNyr{E1gJnHDNOJd6x1|p+!B^{1^@@~$7cT4%R*px%d^<7s7L$w8 zRaszkv&eeW419Z-Di>poShpGbNQL!b1~_(S14}fgV*(1IN*z%)H$$U=T}RgzuMDW- zSY>OT+t$^|5egfwv&bsRk;$_F5cdx$qWcojpO%}nY}ay^^d$J46U{KoEYx)O5n?OH z`J!yJ^`x^=;;n{T>73L*`->K0^8Q=j65l8O`g;qQXEZ&LE^=>3v`MpIKG_U1Xop2)HV z8-+VtXYX-m^u5=z=XSetFF>`{QK3$o+bE&F-fdw0-naMBiKN9{9=_4(B-nG04V&@` z22+FzL~;B1@?8H>Duf~p6wBZ+wIYG)aU^=@O78TqA@6>(V|Qc}Gtpfc4INC44nyw2 z7WmIL2cq6DHB~{(1!&R=f<+??B=CZva`A8Nf_z>%6crR|JcLR^f#G_z=^!mu*~==- z$cc2vu5!nv*K%8v*R*~X56}@h1S_PrRS2nf9eAgHJKov~ci>HC#Z#O3T#o+u+t6pSm?ga;tMJ$xy{T}x5nDNp#2zcH4qD>Bmd*k1Gs z91v+cAVYLj+`aJvkvqiT*S_0#X$hsjQIXta_?=6! zIF4$5uUY=-*$5cXy?4jHGrd%EMjUJ}x~^!`Q-lg7{v6|Zs@+&i>GZ4p@KwiEM%8_u zmi%cuEt3EZTnyCxbP&+!3P9JkX`%W*nw#0xeN#Wst1VOAmb`FmaO~?`9lftMHa+hQ zR_-=a@w=e?5H;wAKB*gCXgNYJ(6Y(gZv3UMx1i;;=*PwRNgmY3ikDP2QNK`M>oyRq zGhOikBELI*)rvWDzDd^VIGK^X6rm=O)jXN{Rrerbr{V*Tb{jfw1}^H(NC=s@*hqrN z=UZ@ovJk#AE0&4{IZ|Xqs;DN_(<+iEKPo7Ujr2VWeTBHyh(BER+WE-l_0Nj2^>os? z`RF52xPaTo9MaW4=dPv?5`@gzXL6VAu083<_uqVtwI(rjEX+nM3`mmP2pl9oo(FIG zKqbYtJ!;aL$j5XX>!Nq26b16@HUkcQx>!Z9VM-#{>&NeJKM@@T>~`6^(f4h2V{)A3 z?`GJ*HM_TL{u@yT@Ts=!aMk%WKORww)xYy(%3 zC3qIFGj8#U?Luyu+4uVR;Hm??axVgQ8I3WBZ@um$d*IKriaWuf+i>}lxdo-87gu9` zqjKkmXH;!h==FHk?;@__L@XB)yK@)I*7mq9_6VxZf8GeZ=01WrC+k= z&t#%jUreC=_tW;lRqOT2DynZ4b+zc~eP))PV(h$(IF8siW&QC3hmwWGo}u_`+wXAS z{cy`P%&hW4TuYvC_vDO zL`QFX01_%5(JtsL&`V~F>Cozr6-L{YW#S9@?zRQ7*K3RC9vn$b2r05VhK51apo$({A3WuG3e%;&ri50)gnHu#Iz&p+YQINNI9NaP&qAw+Oiyp5i9uD;Zr5NJ8s3_OW# zN)jqnBjO_Gs+PPl*hZ(;;LF)SBxx||&S6}qtD4`%lWm9_;0w#i-?ci`i>1<_I0UK`(Ld*8RD zIX*8dc)Z);37Gra@)JEzu6*iqW3#AH7H)t&09*qBOKik_`6WhgQQ<*1-6TOh+tK@* zj6(&gv(5LG={n`M0{IemUoSb>8H2dwd0(+J$vWBtoWi@37e#qEy${n%5Kqcqn7Q5z znJErWj8+IX0Lf~$cJ+b^mLCY_v?tB!YROdH}Y`yx4G{Q4FMZBHKe+ko;}_f2!iC=h zmzR_=-8jcLMu5z)$t~n9u6v|!2y3|ey0d9yL>nQf)!j`9D?UcORAq=Qc9 VBYhwK;8h0z;L4iNN=37f{{_(>6$k(T literal 14194 zcmd6O1yfv2(C#iQ9$*&;1Yev4m*AeoHMo0lcYY1+7Pj{G-f+Qw75jp?>z?7DPDFXn&e@!3&72#hs2^MDiS0NkA zO2PoI|2u5#xRiQ0#Cj=z`6WfM;=L&>>nyt`2m z0@#)GDF+%yJtxa9y>H)<{W)W`UG41d-aA#SnEExnH9^D8@ri)t?^W%P+~m}E-4^({ zBN1^zYUDY!$(p9c*)H~hG4Cid$v;E;As*q9y+H02`0A5Y8!t0$mrnj zn(G?#{UNx3yRL*m|FpOr0#K)+F~a^};#~G9F)cVrYGs=JBB4*lBL3F5`Y}Y>O0?eX1+f z^Pea5JYsWy^>Mnf8La~P>>)ZI3Vy5mQ*V2M=`PXGnud%VpI7N0y~z>`ucmoL0}r1m zbvKkXsF8ThEMMx~_CWmE%^vHb$S!~|(>|=*0&YoRSDkF7Gw#Oot=^aO2H^rA0)(ki z`8&~vIQ4lsO1pbO*wvEDgAp;GHz|2rv|@&X!E?3OPAcBdwSxemtCy$>AS|y!apei$ zcbT|RQ&;36Fl7(O2=vEiXWaM&_f+I<~}im`X#np-nc zf>4Yx*eAKa${1bZBTx$&1jx9GDW~CnZjtvseGX-kruZlXK#F62u)kP}JPV`m#QEL= zbrS$OY|4Az@p*4rpFG}9{T!3{5`;;LghNQw)$A8y-~qb( zojvKscqzgDiy};7OI+`j#OgZLf9qn8uK<16X>M67P{}pZw6EoI-7rX(hi;=o_}w91 zlkPGe=m2K^4$X2rS#J3l!57Qfq3x+DS zXNe{Uiiqc4!Gv{d0qRE-1IIyTXQdn0Xkk+Em{w}uH0*UG$KLj=FB)P{=q6}#Q@3$a{DwVuul@nj{0hcV$nI{HuC67Am~ z#6?u;H)dDJZ5Mai?uYr%!WyGG5s3?lreqnTw`PTv8n4y#Yl2Y4G({e6=oraTY7-J; zhoEpY!R1>oOD83btWe^X>)o~elw!MC&lkt5NWy#Bi>O<)QnIB)-M`Nc={NnTm=60L+nR4 zNSH=S7_yM}{h|6W5Z@+?Z9Djb2&0UEosXK!C6iD%ULm9=M6O;Oayr5nuqH2Tz*CtS zKc(pCvU-yAw)d{JsPkkL@+noMgaQ>XpN|_sh^nOx6X{@SZ@$}#ySEAn7GdrrAr!sg z^#4MSM5%GKmFeX?CHHLl^+)L*&7J4(DFb98IWhSp6j$`;(Wd}gowKBdx8k5Qs*x0d zVKPK8J++ZCu);&}ohQ37B}%&Vr^%N?dS^4VX8C`L3X<)X+T zBIUp9&%)DPwcIIZOZJ(*z>#YTty5B5Hcfu1vI=8F=S@ilA--Et(5WvaO^_e$ze^b! z$x@EfjzUIOVl?*P4{hLZx5QWHkqk6t?zrPxf$6=GX{%)yRe2o3_oGZ%$Whk`3Gh4g3(v zn?iq==+bo*C7cXUo$MDLn2+?|;}&Y$)!W{_l$39Dv#clUjk2@{p7!Ip(E- zw;C3?>tFv(hXcmFde!$I_<-81&w%&%_pRjg*NKLfr7#?*{>8-jwBJS8!|O|CBDv3N z&r^Pp67jm8Ev-D7rHud^Ujh=QG{)c#v%KKV*fPY_o|AsM zr@Xpk`g?GL8G4U<2K0*Gxoh_A6M*!5#r3k~D*p<<{D%QWRp!VaSRuH@^I;-3Hhoh7 zg*-(;waU9Dfw8&0sa#>QC7-v)D>b?gUN@-^nXg*gcX2AqY28;_z2r;W`rS#%tu6Aq z)H?ye$zT5IBSQ9>PzO9)X0+I0Wt4Xb~FiNJG&*JgS+N_n(5@j}5IiN8W5Io;jX zs(RbiK5pXtdyc}nE8fRZsCvzy#dr#{DPg}GnvwI6ygaF=@nm9iGEGnnS=no^@L>Kl=e-r zYzq?QMRhVk{Aa7WK$~af#VMAKLZQ$1Gsy}m#JdAw6iRUera%W^)n9eMSz^J+A~H0< zlMx0W2^Kk-nCoAC$@J+}-cRIaah;DLFL|AQEtZRn_6ImLJ3G{Oh{KV@whBQHo$iX^ zy3gtDD%Cqu42b((($ybl@ZTa~>6=8LbApaFNDI?Y#F~Tg+Is?i5WECFlru!|yZw4^ zNWiV%KQXZV@{r8n?sp!n1<~(+z_!^z4hl5aovD21TT#1n?)FJha&q0u_R1x2uce(6F>u>&%WMo1>H6bAXZUO zpSkxw;mtS4sFEsiDR)_#10ds?4d}S;(`pd^lkit3t(W!F4;;9=!#i|0feB%`@S+Y9 z2!~2%0;xEpDqJVwSuU<{5J4qC@RvwwdP=^6zrbZeoV|BhwFA+uU;D$EPhqR6+HA%E zdG>lr#!PbBr!6(a&po~fTdTOGQg=hE8h`o@kM*i(X|h%!nD*u=RaWXs#q<8NI!Jmu z;yHL&bl`yQjMmR^Ru|bPzx~VU$8FJiTReN!dnnf$-mPlHT^sGPa^8)(%kDJtq08kHsfxu;| zViMwcSU-WVhNsci8#r3qTcjZW9#Oei7I&~CNzN=Kyw-i5A zP97Mg>s={lrx(JZyqIk3gdM{EH4UmLDF3C6l)or$hUUEOA~#~`x$a;pqy`H9t{g@< zWN7wrbs(6&vqh1b5j_XB)D1Q8u*f)F&Blu*aX{(^d7J%K75S`>)#DbL`>NpdS;9PH zNG1OjDnm-pEI=-fk9BAWGDKly3`qRFZ||KyQ687mOmlsK6D4IlS=Ucg3)n;4dO z#N4|L*eKEoUCcBc?a~=**%cAaXG*f-Ae)6A%ACTAY3CxW(1IqWaC8VALI5tHdodx- zSF{l0d@t@>aYF7c?t3+LGe8llhB5`hqp^W~a<6k`@3vWntVhVMkG(^+-rqogStdqo_8^+&Kvoj=*V(e^*d>k{iQXAQ3tRV%Qi>d^4`0boa1U^df1ttPC>XOcY2N-bLO81PH}s8x+d^oH!quM%KD@YC{A zbLPr*#Uqx%ti$!gWA1Qzl{vP)o6kDwYw>GejB4A}@4s_Ms2IE`mE2w;8<#O4oW`Om z0)T_fmIM98=lM}sR@vg+@hRi7n^#d$WMRATLK`9q_WDRB!%se~$6dct0r#QQKz0Ta zNPn^|dK@Bzp0dLd+WC`*%jbM!ZKiC=^IN9zxK4Se=2h9-$w7pDx4@6X%xyTT&`;@1 z56CX~uM~j3%rbfXcWNJI>9hGNWS+B+;!(SND-P|~UeCTE%1^a}8(NC5`uzAj?r4w# z3%-5q>WM@0>?h{UBcEELi|!C2Dw%43J=lwRbvZNFpKNe}EC!Tdv_GRfH>~^tKtV=j zG0I-_TZL4D!onnt+8MkLFecrkx4N)&#j_v`@oF^$Fgml$2!P=m%L^LL%41i00~E{O z&BYYJbKio^6AzL3Rjqn}GH+s9t5R^Z5)||F`0^q&Bh7SwaG2}&*!=vhJZjC;Kj>$! zV|out4ww;L9SjlCIF9l?yhY)%)mHCl0-rw$3pfm~_me=Pimb##N1Z%!qd&SFtp5AK z9xDWuK6TN~RjbPQj*r`F6IbRDfp=doSvZrX8b|@x=r9QdjcGY({e!qX4+ek-umJ;6 zDky#H_wvha*USsmS&YZSeD-;2!^Xyocte+iue!z=#kkL%-GqzZ0%5(Z@Tv5hEC~Lg z9eH%C13c#eM<+6(|(g)X{j7?|r5O(o|xTb6Lkg)x&W+*=k?GG>Z>10A^sF|>9dwaDYql3+IEPd()XlUb#caHF+hQ~!BwqOq-AAN z`*JO>V{cj{}=37?xCr9emr?v(ja;QZdaMvA&_AQ~@C z!KYgBl|>wQ=?)Z=t7e65CV*TIs?x&&g zCUdfjX|JyA^R(1YNsQ3I{*01vuiJ+*CVcVW&_cJxv~Ez*Jp{X*`U8Hxc1XwlPr!x5 zPg*J|Dd?MG#8@lWla0JZPw}Y$BSJSvH!H0(;EWeSa>#)%`IU{P_R8muXfv}s{fx_V z@Fg&dP2*i}?81gW@rwSt1sgWv2|2bvn7k(C3+s3AD70yRCkNE`o#~_pB6ikS;b3z4 z36*O5=t^iVFadkp}lq$)T!I@QH)$W;dOAdB|w z&gKRNcRkc&z4xz=D49kzLpY>|Y0Cp}U(bF(H%xEIxPUh68Z{PaB5e|YY*##BwK=)< z>p^T(wYZLvaM@2)A1bd~N!mM|7^wle7g`BC2<1^*xMJpoL9CwQ#ke0@WUd=JOSZUyopgUoR0uAQ7a0U$~%7Gd@~P9Lev=-_d75}^fB3mEEozV zd`F$zJGV!%*t~s&c6R)of}Iogj2Lo1pC*{WKDQkvxZ$6S8+Xhv-2-MRu>epxgxR2ryc+eEEOl(_zCy$ zQsRI4h~|doT{)nj0+aD!WfnDt{a%8bnW1@0glj&N`P?Ksu#ZUd+5P%C`Kj&{8LpQU zc?Xyu|L2ESnLLJ$0D?y)9@yT_H=vqs?W3|1)nd|!dRJmStcR*tyeE4?-#@Ier9m|c za4^=w(Yj>WKaJ@+Ph7Owzr>;9Qu?v`?lX;HwEYHPW0Kq#&8dIE4OXLt`pgZ*5EALi zDs5;D<@a1N4T(egqI#qATX^V|b@F$)FY0H;$kq?pDV3_okD2f;BhI=Gf7CfN$o<3< zIDM8W8JE{FSKhfGBiVf`C`ZV-P~j zHF=51c#X^{*f-ME9^ut`%nGCX@KrCC4f)qJ-@Mm3fAN%ve0p4mj72Yn#D(K|dWNAG3XwZqVS5j&Z0^c9rZ$RcCz?d5 zLNkS-aaeiOAJTwfD^~J}(Cc&D>i`Hz0Qkt@<(HM41)t_qpdMD7X6F8-qpao!=-pT{ z_6WF_1~-iaZ0~?Hk(_k`u%5%kd;27|uJE}`#^w$@A*&Y}nCBi%R4>)`A+daz3v~gu zCrK*7f&Zgp-b}v!ualHPnsmpVvBQjvWSb}9yEB(X`9}vTIWh3acDCpH3q@v=; zI9fxCDDT~pW2zl68U9sgb)RBp8VPLr1q64I?@)6+*Poplwy+%Tp`l0nSVQSkQ}{N? zO}Lx49T$2j$KMSSyLdmntFsHqa#Ipy!0TqMy8PTT%M9w~LHVOwGLa>=OdVYgAYHd-a zTjtp2&om~n6?(!h>nh6E+iDF`ewX6fm^MW#l`ykgXvgtl#@=8oAV{OsBob!aWhJT8 zF-tz~{js?I`o~Ub=3Q1oAzvP>PKux+QPfpdz{F1^xI4mSO#ZQpRw z+N>X$`;@zx+ya;V`8t=Ij7wr7Q${_NhN!_m2Jt67e#aRl{?2arEXjbR@%h>Z)mpE%FtOVIW}>=2 z1o4?rWrU2`>vPtWLSrJf())@9u)INeV3_x1i44MB!El7Mhb z!Xu#M+l4ni^8uv=^NsyJ%3@(%dGMjK2HcLZL|4U>0UNr^6@Z^`ww(BS-u8XZcdkX% zp%dr6=frk$2VJ3(0ckw3+U2yV42it}xU)OREUPb4vPkYOKxZvwuBX)H%$(%;t2~E+ z$k0i^#3+lA4G?fJ?UY|VQ!lz(IYZm#NLRWY^NtSsR8$5wN$Q^)P*C`%z3l5CulTVH zzHLv!cYDZMrBjkNk76|1J@@Uhq%C8qilqGl(oP5Eu`OO)pMo+q_MA?X#hdNT|<8S9c2} zodn89{)U!sNEqx(JX`{*z?V^8J7%O{raH+cs8oF*7SrmJ*V0GG0Jg+)00rN9&@7g@ z!nD6crtq~C2VyXNn2=fT;t0p2)wn;|)!+1gOIb<5Ck|BG{FA1uLVZdWlyZnWNaylNaH@@4|` z!aZenLeFhv|D;$iSWh! z`qEXjTWpe>fG0jPxBT!@@bG407(fDW$*#*X7%p(`q4i8M zv*T{+mp30SYtLJ&-w9TrI*-x$kzrTNt#y(p|EDMaJlB=Ryje}(x%sY0PtPVJlqSAB z>SYtXY7O+IPLY*&Bd%}vSwtZi&7TJ@h)UNg%2r=6@& zd?YA+EFDL)LY3NDN7)(u(b8e4 zxsC&=eUVm^{c6dGOVrUE`V}(hJV`*esDe;t_esUk$#}@MLQ$W0<__dzLtyauL=)(T z)6iRCd}+nor=^%ThxRA1F?8>mq%NFB}EGcZO# zQ^@y9oEDi)g!LLdzDPZJ-!+g}w73fiz#Q$qhQdnWGNdelYvxo)6MYljHCbicNZk8;G(KOtauE4QGd^*HK zt;{9lnH`Y0sT=RDib_AcFH8u?JT#_g`TDM9&8*U&LN`GZ0vdLgKw^o?#W_wUoOm{c0sQa{&tnigQZO9j$ zYH=;t&P7EJF)t0+;y;mY+$reSCo$^D?T>TH@aYF~_|Kyx71Uu_c992ZmuHY3Y39@6 zK!x`WHH3`=jwEM_M=nvbWlvkKNinSTb1S#{m^K~}z<2F^UwFEA`j=jIrSQ#C*I*6< zon~sE!E+1&dDAVU6vkv2Tol2Kf`W4VE8m3`-*9lENU@K9Fj)-4tdFwu7VIU@zpi_J za=QJc2BR;ND9Rc6;0Qf#v>IYa!@xLDKl@(tAXh}@j)Lb{c(On212e&D|2S{Yx{kr` ztKaRJEu6d(fQ~eCC5#ABGZ0NRa3A|EC@%w8no~v5sp#Q&wK27osPirN=qj|IOo6Pz z`@jTOQOI|uOZrX8JvBlHG@2BX(*D_8>WONbHdfTwz5{&&wl#H`NZfE;VzrmY4U0zN z@oIX=A60l+^D>$KYxC5Gxz`^1U(QSy|C4Ws_^K8A%8 z97kb{2kHPby#5F?7d%T@MEghJ{v(r9T5r=QM}<5UWW|6H@imHP2zgxCReYT*gn;gE zB|bEI1*(na$8j4&C$dg1DU zNyj%?9Bw;L0EzHV>DQp=EAbg5VyEb?EsYHZxw@jRL3v(WwxgS8Mz)DoKF`&9?hak0 zyk0K#@BM}dc*MAUU2JjPjs7`)(%QT1714Zy=ccbU$EQ2jlGtDqW#Rfk;jc40ze;9$ z;yfWYn|eFX=gfB{^72jR7=d*n52Je`)Eg3Z-?X^-Mf9?E{IIp7eC| zvtA?KT^Ifg$NyAZB1+KpA#h`?hYEYBJnH27dAi(FTDWvS^NYXO$JQ7~^;@!CvrWux#oKL4fxh-CZX*aMFA5c{KySP`FGV$+-Wd{ipy)dBFfkV2Su%S+921 zIv$uuyBQVQI_47FYk;Zq!Kb7w2Qdz;rRV(aJNP4s=$t8^C)KyQ)WU)W_&Yf2o3Ip0 zf2ovUz>Ijz4T$wlspspY#BN2GRh(S1s2GA#6fh3Js7%m#U$Yq_%;|k;8&tyWrn^X4 z?e6C|`toyEA%=$W&F9UbbW1!@61b~iY31p=?aUKMpSHR_i%GWIbqE0b4v(WXm2>MG z)%nN=6rC_lK>hR~!a6L^pv6aVUD$$$J~#|;o#fM0k|3K#X4-)Q09*(8e6GEbp}-M= zZCPiwdtBP414`4#NfsZ(oDPo>4M@?7GXv`?s42yI@ZVBsrnZ1l&-u>Xm{5GILMIx+ zocG>*-vU-DF8@iOqt(pfnY(>)coCjK{54>2zI)9gK>WCGzPM*E#^nvjzw4o-Qxpe4 z?uz;hJPyu(PiF=r%j-WcP{_g`ocd9R(#S)Y6Dj|Zd{M;gxEx-a#BFfH`Fh0-aVr>` z$WfH5nV4?62wp%6?}UY5*R4@Hy*HvUD~I^GXh%~vd2fp9llf=n!KU%mU>jC|Wutt^ z_i({5y|K~P=in)gUQ8(xrN>AEpGKEWCVn7g^qj6Z4P!JK)&ZD-H!vkNm8u6uShm#* zwaYt&!#m}vM|_RLQdu3hJcH&u{O2$8lb?G)q+KKgOSR@cHC#Yum*!uGiHdzOahW9`L9Wq9cPt_Vl+a4{yYn4HY-GG3>QZU9Qb-yuwgUf zbS!^yJ@^K80HwSg3nr)c#90BlJ^E0V4BNm5kpHHC%rM}b4UwOcf_p)bkYqya>JIZ!$sqlhf1NIqPnMP5EaK8krhn1 zeLR)*TOwmHXU!cQe39y%&E2siG zL;3$p!@$Rb_nl&5HjLbTt#XUxC& zo}|((S)VK^ALvXs6OuoL>L9!8O}ifz-8;>HMy&b+Dt=|B(3h^8NRF$hTgwZ{{iTat z4CPr_mp@{sJu1+Tzr~27L57z>Lo5Ol8DUJIuHJ$9gucD{S-S&$SKoKJmRu`I9V>|W z{JwS=96x>AluKlx%_2sflW*|H|K{6@5x+Zr2ugmqACrBszfaBPU#-7ROTHoZ@n)XE zF^V$YWY+slPmFlA(ww1v%3BH&BK~r12&UVB!Sb*II>JgGuP-Y+H``X9a`iq>g}@|p z@DS<+4CGmT5GvUEmP()2GGv7xUakfgZ}WXQJ3W2VGtNbS zzLofg9LHE41VapR*OjC zgeSy2b(W8KLYWc4cMlv0rDT1?Gq9u|h^Bps`I$Z{`{t`4KwYudxwoxx=~u@bF2QYG zy&bcks5uDN*AV|sc?fF05MG2pEe+8Ej_nE#rtN!16H=|oVT^kxip_y&MeiUgT!t>9 zwf9Q>B!*F@kEj?r9(Z80e!*29L1B$ocfZEwsns~9@2UtZwH9BIsSvJ-v4iz6#8+zC zYt8+>mAEBQ{Tkw#gn!=>aL_W%C*cEz^JC-o7alNe>?RnmXice^V6QmuY~($*3eVSg zT0dgXB7?vCZv!nTu%Tl`AJr|y8)cQY*iR%{!oXT*LR0h{5rpBs#h#-r`JI?0i0l_Q z_8YONB(aed7I3BRJh#hT^uvg|~rxjG&wAUN*bwJ6qx_bWdzEKKNGd@jPm8Yp;8WFm=T>2?urM zRcW>BX+BRYZ*5j*KOnVFY*a51OAj64;^rI@yS5GT*XYCkTmYm!$YZ*2i`Fuia=Mt7k;Iz!TcXNK^{1W!=aB!bEjn!-(E*H9u!H<#>``!SkVIZy%B^`Jb`)@+e z^C}td#omyPujixA>c^#O{^>8@qCEi?W{4PSG`)WD@Q=310&(J!VhNDdTF1cDU&;_T zVvQp5yYpSfO8OjP?3bCZquHN8<{}}asaGHCp%%vdk{Cg&krz)(xG~YIuVvu?l#0WM zoJ5F>jq^9d*g5v$IczLut8QyiTjxvU9jTtU{GO8W3IP0OFd)0k^o^E%?jP6*{{x5@cRNI z*F<~Y$QiJ-{Zfn!wLOc;l5`@oh{7BKjNw%!A@X=ATSY=r$^79vF)-Z5 zDr-ZER}UjiB@ACY0Dt*ho4McXjL}L{YvmVfqstkK#T(;S=v!Ic5AV;fubt~Q{(ec# zbiS;yvn$YN9=wZ~t|BPjBslnIO)yyGG^{TxS#6hFZyx4ggSv4rm>*neE#NJJ6JCPtmoeKR%}a?a+X zD~nrH*U}+tpDRlQ8k!i&oQ3D1_n|?eIh#OV0Cq@ASsHiN; zHfK-6RO27NB2k{({&+SfA_&L#X4gU+i5_blp$^`9zf+K1Ktsb>`zMLKheAp8>^@iJE<3mB})KAN#`!TSwX>3%qt>E?3 z>rdr?q%LH00QDPl^xA`A)Kz%{n5B5|R1-vudP}okSVjSQlu2V0G1^5nZp)S?DaDYE$yR6~ekEi60Kjr{LB*}>+4YrM9 z%P)u}WtSyKty~U(pdYgs84tr)8W=s~nlASNniVq00x@s9=0nMxA900zR4Y zM4tf0h|F$2K8uNUTAoMq)9fuGv^avKod(V4_q34D;G~E>8CB)v5szVA}_QlMIm^q3eSU*qxXOa zk*j$`GlCE}ZOBV==k{CFl>TDsK%iY-#g6BmegmLtpG-%ma>3_09Tj|PlM-Zvy{Pgu-Rt^b%C-& z(e~_#lG%4j&=`iDzW$!F#}(WK8Q=%Rw*oZ1J* zm&=lQ@GcoYS1}i39CMCHT<4}!)ZfUOcxXSfAQ|A*TO1um+L*ag0#>B`R+0m`sc9`X z@gsTAA`091qC4-pJJN4#2T#yCN#u=$FRFTc%`rlfv#pv5HRBz4({cDm<&w#cCbJV} zB|B%z0-Ip?JSAHV<0~9FEXHiTPor^6v{plFGlA!IKY?2t4F7hw+Ny|1m zok~(8mO~^uLt^B=WGG^9Y13#DS*qFpUU>f{Oj&Nd`7b@{|9;_5s+Me#x= z9^=-ofN?UUmPU!LUZjK-O^w|8Rq?6AYrxV4F^`*zMftruDV&*Yj1?6ogyz>TXtAA0 zJtIt%`Lhx9*IC}961rG=z2@kV6?DcZExw%$PJcj!TkaAKxQB^r39K#vmm_hP=C>-0pIRxRYD^VQQRxuC~ zA?1WtqT+lid5pms;n;kg*C=VJu1Fr+7=Y@n%Mlz_mEnE@q!`~!l=C5Ztct-I9AXSD zyy2K1s(-gGg>hJvM?px06k{8S-ad~ekI^^-Z=&7ny->Y%F@(d1x55w-A^DhkqK7v_ z48vogU;@BHOjniWSIun^+ll0(JVeKLdxc#z4d5Y4sNT68oYb#SY$uY9bQ7(a+XTaz zbJ^&<8`~!KEs&0IitR+Q;Z7pWI9E9Ilb`O`&VRPO>su}z_ujeezjrkNuAlXtJ=nf; zb@Kvc{iHs56Z_;#huL9P41zMz#6EdX?*x8)?7=nv#NN3?&@35h1$b5rk`A#FNe0(y z#@ZYfN;pPS{GE&5l>jHz(`t1GN@L}gq}Hu@wS3b;jVl1 z&wo`EMxZl8NHVZm%!~n*6MBB0*yHoIC7!(Zp-|u_e_=SteR&;PJKF`F8A3DqSEew% zUpbi2{nLc*A7z88=1jA!(A&Z6sg^0d3n2+5Xv+|q(XTwM>3vJV534_5@Sf5uALpSV zLuh)RvJ6e@UGfusN~iZJ%L00000NkvXXu0mjf D;?&A6 delta 1029 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 KE0-%;hW-aH@Ujj7 literal 25667 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 diff --git a/app/javascript/icons/android-chrome-48x48.png b/app/javascript/icons/android-chrome-48x48.png index ce49448d43f48d48b3ba4d3d2f5e249ebdadf825..bcfe7475d0750b8d1ddb17df192841938de431dd 100644 GIT binary patch delta 1366 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 FV1hrM!e0OY diff --git a/app/javascript/icons/android-chrome-512x512.png b/app/javascript/icons/android-chrome-512x512.png index bccaada29fd44d5e8eb4074a0296b1c0a7b66535..bffacfb699c6b1133f85269342adddcc0d185c14 100644 GIT binary patch literal 31858 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 literal 39853 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 VnkRLF-ID=oFfp_=sM5#A{09w$jt&3- diff --git a/app/javascript/icons/android-chrome-72x72.png b/app/javascript/icons/android-chrome-72x72.png index ce57ab7461a91a7d7772e1bd3636fc10035f915e..16679d5731a6d62d7088d02b0590891f884ab737 100644 GIT binary patch delta 2251 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 delta 3713 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%0D-WT%mq9WvsW7+ESM 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

x$PD?pMSt8kZo-Xt$@&-U^KoraSWy@N!k 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%0AIT%VzV{d3!#L$VVLGN>t((-%waAG zpR9w-Eifqpu%QB%;1gy)2CMp5q4m;b@-Ls~5DW=p-Tx$Px!qFv04AF@A829lCih?~ z_e9rpOF6&(ub0<4gP#fVE`Vlj$ITuRTTkD_{b|CBU$61%d{bBtJVx^EhqumE)@gQ( zC*IMu@cjG6LxxWDZhaXQb2h64V^Irwn8C5b+)$?aoouNRQnr615E=P z`h0kNCsb}R<71oMhtL)rgVI~8HUD{Gziv#(G>Or$;`1y8Awkv zHWt8Mw0g=-L-SOi!X-Mg96o()xbal*htlVV?5{x5kn)m0MDdKgVjni6u-Ux#PMJCs zGBG9hXf{ppS1)&%3sBp?hpzzei4%x?sp$tS4rw4*^m|c4tMKNS(CwyN1~U1+^U-57 zc`W`=j&xEJbeP3BHfl9zUP7JQZvtacBJ)Pyip_L*{a(dfbC$EFy^k%cz{mwlWB&HQ zlypze8oRQ_rnzUCcMSz;4rIT=*1T2=3J;7gv)bxaQo1~Up4F3(h-2d~Rr zfRHQk3^W`Z5?t@C1%$Y2E=|8C>J20|451Y+AbCA+g7(yZly7@NmRH^zOrfo3c{>{#*fy!2Vt@)m7^};kJ7?tzWK&R=3vR1i`aee z^$R=0@0DFmUh9?oU+sjRRO!bW)WtwIbseZ)!|#`;ptJCQUlxpRrSn6(XnFmJmBkBQ z3y4?#u`}(}Jz0kfv*sTA7$kI&Q}0LaDgkpazdktT%Qd&@U3_U=zf@G}hk@6LER1Wo z;vQAQy94yVvI~j(52?C8M4GE?-YVH!k?l^@twu+ZvvDaaha7v$^q^bJ&D*7RgIEfK zc@zRf>z7I1qFYUtFh~Bl&JI<0(-On=cAKQPfOKkd06AII^sC1YI!Z9p?alF@55`@V&blBEr1dT?mtF?A8S`?uJ2;`mR}!%3pWmOf}L%%urN(;V+u3rg<5^-8V3wVlbol?E=_;e5;I`-t9U?6yDGdSw5)y-S zNry-yA)V4NbSfd;-AE(dAl(hp-Ce`PoA1Y4Yktp~b?4p_`|Q0BCnK+B`cq#eF6;Yn z8+A#^)s|V}veHSg_x&K~c=zQ(R8O{Dg$QuFzQ5{aPh~Bim%B)=yVAsRy8M^hYJ(F+ zD!CJ0ot`KPoEK6uC�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 Oz~JfX=d#Wzp$Pysz(s!m diff --git a/app/javascript/icons/apple-touch-icon-114x114.png b/app/javascript/icons/apple-touch-icon-114x114.png index e13aaa87de5c6dde5af5861dc47d6b87df946bd1..e1563f51e5758b72ebddbfad67d50e4af6888916 100644 GIT binary patch literal 4123 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 JHQFxG{{znt_aguR diff --git a/app/javascript/icons/apple-touch-icon-120x120.png b/app/javascript/icons/apple-touch-icon-120x120.png index aa63012b5726546e756d272145e6acfad980666f..e9a5f5b0e57595fe866eb5224844655cc412b4de 100644 GIT binary patch literal 4366 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 IM6N<$g5H0PY5)KL literal 4914 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 GAO3&eU66$U diff --git a/app/javascript/icons/apple-touch-icon-144x144.png b/app/javascript/icons/apple-touch-icon-144x144.png index d282a6d3d63432a3198d0ecbe882ba32915b8fe5..698fb4a260b13621d40468ad5f3fb3438568748d 100644 GIT binary patch literal 5810 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 literal 6644 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 diff --git a/app/javascript/icons/apple-touch-icon-152x152.png b/app/javascript/icons/apple-touch-icon-152x152.png index 0dec7d63ef7ab0b749ab3beb7ed740d1c4267381..0cc93cc2888c02a3a2f1b4563858a2fe46d82c0c 100644 GIT binary patch literal 6177 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 literal 7002 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 literal 8096 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 HXBqroY-azQ diff --git a/app/javascript/icons/apple-touch-icon-180x180.png b/app/javascript/icons/apple-touch-icon-180x180.png index 864046b5652a166c3d3d15341ad6a4f7e11539df..329b803b91899248e364bd86dc39b299f3305852 100644 GIT binary patch literal 7709 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 diff --git a/app/javascript/icons/apple-touch-icon-57x57.png b/app/javascript/icons/apple-touch-icon-57x57.png index 116918ce286af08ef52bdad668ea9d475025e3d1..e00e142c640eca78b7e85825532a42d21166be1d 100644 GIT binary patch delta 1657 zcmV-<28Q{;4v7trBYy@^NklB+=JA_HKVb(!^YXI*9`FB(=} zM66(h3s=iAU`?ovWYVH_T;h2MLWTkSK%Gy&W;5aSZ=g4AMt^sYw6`OZ5fK9rt^^RW z&drH&jE%9cf}J~g*BM?tTw-+uK>2n(HV6V*qL9KQaiA$(;J^?2@Zq4R^Sc zRC@8XuZHEaoJH1BiBEr)>FO4jY!Nq!7z1lu4*2MivKK#+9vrCI05s4s`QV)NmJ#?TpHI*pq zh7G*I4U7XCM*PEX!@vG193G~%*sxLVd^fv(LmV5v&!7J^-1g6K>?E@}T=i=DF844U z9ny$fY*Dwqjr#Eq0*EA(v&b9X#5(4JfFFEs?Qg$527kmlwh#aO``RZyHGQL-=&FZz zzS-NmwG6~Myc>V{)7ob|FMai^>qgw`-9Z2Fd!8trj9(dr8#kq$H~-=H{J;LTY;+oN zxquuWs(j`XYu0bf{OEhZo~^y7YX#t$+L05LPkeCAYu}Q~W^tvuR%s9*6Ix@5QoC}T z`m3LL#($*JxmJi=>pHq;wW{=T``?B}PxOA|eQS^GAFtPTu5P>T^_7Th{d+Ju5n*Pm zzufzmKW@JLo$MTeCP*+!CI+-&ORJzkmE+NH-xb+H2O+n)oqgD&vH$^m<@23C|Ixs{ zZ52_bwY}}dugtc#Dgbx53ts=~$yBz*1NZIm8-H1~0T7WYi5MW2fs%P?X?!%&Iwc|i zZ*&uDEg=H(c6Uns?w7?HChN7=zfr2ALqP;UPY+kGk>0YT)5Y;IHkuMZYXm_gB1>gu z6bY4M$M=!S6aZlu)m<)106?U(TLF^J6iK#s#N}tIibcgRgoy7&PVzDufgb^C>3&5N z!G9Iw$poS?KUgbq31O^qn82v%GztSCA{4Qx3_&a^g0nM|M2pNXB!C#!ZIAdno$|P` zxLxY@waEcodLCfl&72x^>pVIF1$3F_%ITEHlbsRgrxeufYm)(&9It}N*o?J5vZ1)vqYJcSB>)d27gMcC^h|`}=&5 ziS1uW&d$uUS7?!|U&|5@AeDCFp!tS&?Rs6SrcQ4FOk>rao!)5%NzAVkV<8%J)qiWI zp8JZDGuDgieh(`IJ^?hguX*^}?`LC%q*zCW!o|nBx!f*p`|o^te4sLr$(NF39qbSO z{n`Jc+%CWV@$?VBF`$$YGO_yslI25HB&X4l;2WQt_|*@~qD(4NAOI$p2kNuct1_Jt zz}1lho;Sus@BV_}VthC>7X@qeSi?ya*sw^padhqO-BQI!bD* z(;VQczv6%3&HDj#_H-7CDw|iiyfRk2Sq1^UYBV#&vC&{+Y`DQ7l(9CIlNdC)7yv0^ ze)E&brmR=FW;&ZMc{39OeS-s65KTqV+FTj70x>oR2nm1*pSi8g{`EJN9e;N(T=ym} zZhM!##{-H#_-X*mEc{@xsk}fMOPoh1#wrk{%qQMG_=>lz?p|Y^+5NyrmsYJw{pKg* z=V|5nq3604N^$)-06?po~x~_KZtdosyeCriA zx>X*K>B&$;>QO5V$DXf$`hVo^f6hYA)m^awO7uYAz}sHo-}e!vdpu~RO)Gb4AXgMM zN#{0B5RrjEox3|tYcswd%}k&C(#J=B`TdT&-hbsS?pRpaZUKlmH*IlAJu(0GC*!~S z$v6mr=Z;k%)?@>}N=5@GhCcV9`X@GS>Ac#tbM4)>)M2bu0BW^ppmML)U#T75SM57K zBmi*g1bgo9wZ+&BNd(n1eUBa-JbGxsRHc+b>}ZlWSAKOJoB=^Fs6(S^K9{%dE?+%dGzb;ZjISp-LX600000NkvXXu0mjf Drz=Qo delta 1843 zcmV-32h8}14Z#kOBYyw}VoOIv0RI600RN!9r;`8x2KGrrK~!jg?U`L{Tt^kh|7Sk# zy}KK)E!SS#F;Sef%}1M*m?-pxG|*C&KJkQVL6PW(s#fLe0SSS4RG z=FFKhbLp|i8QVnS(*|flJFHuy9oDVUc4AfFZ4r{$BREKQsPHSzYBq8v%0kOOs zTpF}x6=1e{j2U=Xrn)4FdZ5jV2#zBLzOHvA>;RZ;*MC-DANTjGD$2<48|R|8-;AcG zS!?v|qc1<8_x2T6eGu^3zeblXMsuHVERF*Q<^2z;&d${)h>&a*UpOgV{c~uu)a+sw z^XE?Js^-FwpZ$6M!nqGiB_9ss;yZgDeZoC{Lgsw@>>2;P!O_y&k;{1N%{@EAr(Pfwc{f1kfH zI3}ell~;N@^KtsQXZ>tt;OW{e!LalJi?zjQ@2H69VaTuj%~#5C<82_i^Qi3U73nel z_l2q1kH>!Xi#=E0pI6FB_1<#VF+oIw?}UpB27j5kiP5pQ&fogQ`*f)(B?~BxF|2$* zDsFA77}fN3Gd=!MtfiAdCr{~zz7Z<~f){?5I{V7x@TD{f)z)##4}KhLYZCyzbU%Lj zlSL=i>Vt=`1m&z!0Wi#s_cjY3Fh&py0>Gtbe%46o5D|fopU_&fc1UZSy3cXlq|~l< zVt>buJDr_EJER@z=|S&jh=^P_IX}ncO%Wg^*qECT2iO?mYG(}sI9>}t9GTWOB0&H^ zlYX=7BP!qYJG_T5SYOgTb9;TEMX{J z(KivmrnrnM6@`Fdhz2Bz*V%B2RGiH$GJjgBvXB83VXN&|{xhnpFaS_>m275Fs`z?a zUxC$P0dnYPf&h-LC;nX&v=`*7SXaih zc4SNC)hf~xs#sZRk6_R!6xhTp63X#&CXpy>i_8AXO$h_vN-%>6w;fc~KY>f`v45&4 zBB2~+vhe|%J(jZB>d{;E*hGYifa6yA!RpT`*PgvHpK}0o?N;Tlt_=Ci zre2m?!)iIM3v*F zU3l%xC<*0wEsVPHxLUU3Ix!yjId;7|gL(BozMtjZy*k;pUT!}>8%<3H*MF~tmj|;$ zgSn;oDJdPH96@C7uQs_hXP0K*d$;4*=i{|6C(^+$pLriZswdTw6tRSeCxp`EXE_Yn z&zZ~;&&`GlbJJxFLMW}BI8nV_dM#GV^A?eM{V$7kS#Q6?jV0Rs%);dOjmeMJXpKqA zm2HfOKuX68S2C8M0OZmA-+#8T6GD!SOx=FCt*f^xEkHaW!@L<84w)lCqW&YKb`nau zQaVyPQtAzy+~v`IPutiLU`#YT6!qVo*p;mCOClUT8tdwDGRq>nB*6t5XIIiqbtewr zmAw08yX!gA6VY0YTZ#tmy<%y~Ci4BouH79^{;=!dkyynmMi?+N1Anx<7!gq{Q8-Ez z=l7*we{%Lua~6BkdXh)_o+>~6tn(Cxc4=YZ!npvz{sW#=#mObBn?PE5 zg>yj|=4wxZ1uG&_$|Dep$@HdRH~Vd)2)(`uZUQKpx+~tOHY|%+(suf0w4J`k?yzo+ hc38JYJFHuy{{aHU@||Z^M>7Bb002ovPDHLkV1nMxp9cT{ diff --git a/app/javascript/icons/apple-touch-icon-60x60.png b/app/javascript/icons/apple-touch-icon-60x60.png index 0eda96ed62a60d11495656f6ce33b69f756fc912..011285b564703b7bcb85bae65f9cd208e6c883aa 100644 GIT binary patch delta 1746 zcmV;@1}*uZ58(}vBYy^{Nklzy$)ss0m6`?h<|HU6iZwzP`M(o2roVm9;F{yMK9d^7WBY}NXxq9N`wW#e8v92etzG(0zc@%n;!d!3Q}{O z>*8@wRHhOnkbeox0Aur}=mYQZnM7*ohnJC#d>*fUy_wIqj5CEbKJo$YkAKueleB(&-uYMl=`WNBJ6U>b93A*Vmj62>%8j{fB@FD%ZZ-={fM(2(nn_0Q+>erNa zzn3vN*)B)8!<~&k{h^WaT!SfmY!ii%adhgQLzty$vczQH7jlu;D zqKu@O$A3l%NEYMA-}9w3&D=1Nn3#}j)`?1mcWw)7r3*j(fq(cwbpFIK!?2dE8ehFm zHkWp6Q&ALo)xwE`M}PP0)wjKaiaEoviCGgw3TfyReb(cXRw9DqNA>BW$LxV|L1JbJ zJ^!V)X%c|#+rsy~eV}~)_@;Ag80NKaF#hCcJAcX`0KfmO|Cx_#D>vv@3%hrOap@+O z4M1mhGtSJ0Vt^6j{5efR0fM1#a&sr2zcjh8cYU>drP{kg5ulvG+uv2?+)GQhxQ+Ft z&w5@%G=G2YY?L@45n3{wSv}?-%lBY90|ce+4FhH1{H7+j+U|@i~ zhJPkd^K*ww$yl0se*842!%U(rFxMfl1_YRGm*PuO5Nqyuz$i*Bow6Qbz#V@N@EnN2 z1m??EcXA7B4Rlxve4TMU!k}CHtGNlb(r~gIdF5h7>#6uW zUbR*|?D2zh9az3vGE#BxhYXa9A%KA)BfjOYe{2MPLr6Q*k>}Sho{vT+B>v9Cw12$i z?Oo0_NnF zZ+)@+`Hvj1oDmW-vwuVaq%cpN2olmgxOU(5lkZf%{K=C<20&oW^1&JgjvNS(DJPGG zU;bp_w?921q*B&EN|U*yHPXQP(0{%Lx^UuXaB#1;bcH#)OevGl1+UQ@5z*Px!QuVE zj?Im&e?A5f2}4Sg2m}Umws&m#=s~|yjPgUW!=lD}-ns|iTz+hDNZPJ&bJBKb?lj2r zxL#|%>$9iM#P)!MK}5=Oi6k)qMmp$WciNpYX|GXyTJ1Kmx)8A2af?cZOc0%w76MqGd@0 zzPw2!XI$E(@31qaG(-E1(lxI?^McpUn6{V~HgEcU_1j-69^6ysxCbGZmrIsgGs}z} ze{GyQ6JpWO!*0I=>0oBxuYYJAUhgKePkqVsz`Sy^MiA(FRi8N(1Rh(quwBaK4JSuv z@%GoA+`Y99`qw@_t(4>YwZHuC_-mi#H@(+g!)Y%7lp--8mb(@%(e}tH31~#b0*iwl zdfRPC4KoAm`&F$Y*B!pzP4oA7@aU=y_PoEL#H~r->0kb^^p%gFtAAA@5G`8zHe1jO z3E{z0@3=RF)&qqFe}19`lbM_I7QqZTVxRShz?eENcK* zwDd!6y%|8y-kO834rm6T+s54R$f(!Q^?D&W??@7nQVx+=wDheuVL>o!fPj`gbL@K1 z3=j#5CrYFY2S6(06id>7#o}PTGI+rpgbe`7us{MF*Cu2HJ>-^uL8dTsQZZ}j!MFHx o|H;q(ODFo$ed)e*UpiC%2KdRz2W9>mM*si-07*qoM6N<$f`0XTegFUf delta 1939 zcmV;E2W9NBFIR|%`1Zz6mDuqB0=#u zq$J0Il&m$h27qi9%G^ihLjekrG@wxYUp8k=0_x7c{L4>WnqP2}?XRTmt!y^`@L}#TN{_>~bt&_tfwUEwY zBdO1y8F}TnKQm)~^HP3pYD@@6D%Xj%O63aS+!`PI^)K_eT)8cx&0T<9gxG}#bNi;s zG!Ys;dBT&@ahlqQL`R3bbDKz~`NM%AGk5FtKYx3}gW>e}m{M*}U!s4TOsDzsfDXej zKR-J@GU{)Z0hQfEga#B9hSLKI*=nHeV0=~iU7Yoq4I=vXA45F~E@6#e+85yv3_ zmj;3tpO2@eubsciN;&sGnE2i^QLPBT+h@Gr{nofmE#Ca>N0)*e7@;{>oV?d?lhg@MgoV&rNY7$9_atHmJ!#N(XL83N^VRZcC0tVOA8 z4P7;jnW=!oT$)vg5Q`Gn6n^EA7?lo5L4Rzxrok|@hPFw0%pCYNrZF=XwzRCDz>LCn zSF5lw3%X_Edxlrn(}7>3v*?&=3;$&ZsD~85($SuJiXh5?oJ7gnqe zk6^W9+RN9PwnSFe9gkB-r(_0^6jD^G)P*+oF>R5j+2pceb#FnJ*;K4_v@_ME9UBgyS}HVZ-lEH9+~+nPop%ZE2Zw?pbm6u z&P-1xrHZa*%1b5F#%wOl$9;F{W8Y~h#K4w*X?gxRax|Vw1_0u%s#N9NyE)&>2^m?{ zl;>q>l2L#%j1#K?$nK- zRI|Y9xI#O^{-jvYs!)0Lcxv#{eHau4KG%=)bu8&uKV2FyXA*oP#?T_i>FHaCD zfNYOjwkH>0WU%_HxFVSt3y!}$d*<~KA+>hnmLvca>{27xT>W>h-r)GCKY#SE{2g1J z?jEh3x}MMH%=Bb9b;BS2*uQ)sck#V3fJi7Q9U@TO&wdSP%Y!YC4teQh*xXv%wn;cUiCU7sw`0SQG!+KmxOV%X%3BDC$MFlSQJ zr%$#$@{QK&!R{X2u{kj{Ie$GrH=Rz^Hb`73Obd5BAR&|!BZ#7l8@X|oJNkcM$IM~q zj}Bqq!RAP;MuLmCh)eH>#smZ+64gxzshuXJT`3(Y9VxXSv5fmE0CGp)(^eB1LaOxK z%*Y_^{bI9JWy=wvr`Ori=iIs}Q%SLag;iMZGjTe|%%y;&szgOGTo*J|><-tRXs zogt+*CYVd6-~O97I)9k&=+d_(R0$%HfK);%DmFrh9h8y6$k=JGC1vIx;mIOpJNghVxf0WIlK|ot&K^60RGs zf9q}yee_Eg8r5Mi4EsSAFbu#LrX~Ni-L@&8GuiBH*)mKZNqjgQripj zS0ScX;Yn`EpA3MsjG*Yz@_8#>Xi--BBv()VM`jDME+0SF<-bmBK(Cc-K(Cc-K(Cej Z2WPVY^?Y_`G7JC!002ovPDHLkV1hxd$@KsL diff --git a/app/javascript/icons/apple-touch-icon-72x72.png b/app/javascript/icons/apple-touch-icon-72x72.png index ce57ab7461a91a7d7772e1bd3636fc10035f915e..16679d5731a6d62d7088d02b0590891f884ab737 100644 GIT binary patch delta 2251 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 delta 2609 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 TRA5a{00000NkvXXu0mjf`KSM$ diff --git a/app/javascript/icons/favicon-16x16.png b/app/javascript/icons/favicon-16x16.png index 33ef3bb8c05d3b3c0dcb1b302a04979aff8c3abb..eed8e0035c34b51853e2f027f87171e682fecf7a 100644 GIT binary patch delta 564 zcmV-40?YmX1k41GBYy%DNkl&T18vv%SQYR(~_onqC8@xKKuIwF2JRfweVXdqJLzMtTA7mh_t0#F|ny){;^Qh9AIt zVV>kWfcJu2$@fCut*Mn$i8;C4VNNOoQ(PeV4&Z&PqY~p?mAumfM0&v2c~erUhZy6F zHKzDtFgGu^;=%1U@cyIg7h3W7Ui+7BNGcsljL`+djeju(_+N&Yg0qB06Y_C@F)Bx; z@Q<3QwU(&2{RxjDJnOX~JQJKT;!}hn{8OYMEYo0&$n@$XGL7^<(G-z6BsMm;H~BHT z(2vRb&<`pFpRkYnHKQK&CEvspn>&d7Dcaz79$nB|fkL-;&AQ+>Zy4IEsC@FbXoB7j z*80C(tu66?`AX~ms*MtL{;!HO{;y7I{9i|sU*t3VzDkuH>S5mi0000yx| delta 615 zcmV-t0+{{G1pfq(BYyw}VoOIv0RI600RN!9r;`8x0yIfPK~y-6jgm`9RZ$p)zklCz z?!8iqMX2bYhZ;DkMhzm6k{)8zASfy_lwK2|Q3FR!nn?r=8iXN1Nd^gm7|jYIY$6m` z_OhHQsW&@%UuW;X!MW#V666}~#ajQ`|6XjNgw9TF@O^hpgnxsoYz2})Wl7Ee4wwbT z!QAcdmp1?c(A{0!kJC}0iuFJVMYz&Gki0KFJ(>zKx$i(NK=me}smU-mtIW(e0O}ir z`g+6kv}68<#xZ#-+UN!ID@Rqd7GT?U!}Z=26%_)&&|rZeP`WOr5P?DgZujMQKWPC{ zqSE21wL4X!)PMGlBSj+}u_9^$ zYHEbcqT~7K3IMGKd^S`XhKH5`XglmvTW7$9Q58zk!`h;j0*nD0DrzkNxt!wpuFS)t zk}y){3f5ES0;OC`B$N!O0`eEvRk{cTU}>uNcL_5tXODc{i!i?Sulx@RBZJR&obZbI?4+Ocqutks zC1AiK+epu9H=4} zZ1(5nCt$DlWn<&H_D@w0$C{Vcu2Ww7RO{PIqIw5Nm82!aO-B!wI$-(n%iWD@15A7v zda>)CgBG=6pR?hF+AyJ^Yaw*i&e~Vbx~u;x8(! diff --git a/app/javascript/icons/favicon-32x32.png b/app/javascript/icons/favicon-32x32.png index 7b9a37403f78afb31f702955ad3f20347bfc9983..9165746bcfa5f7c94c013cc9ea9e355c675b454d 100644 GIT binary patch delta 1094 zcmV-M1iAa-3EBvdBYy-TNkl$5`98ZQHhY z{H!<~ZZftf=Gn9Ad!woGsrsV-=Jp?lDKu&|?5)$mDxEI%xK5Y;0ojpHuTOX3`3MRk zKq)lxpLXO!Jg%$L>r?OR^>8EZb22m4x%z6@3lDmiR+}0@Fn@Q_4O%UnHtE4N8aP6y zNtm>n1k97DMw681J@_Ro9IjQx{0Qb*Qmcxt$bIz6=+_7q$N{t9nEa?-dho}H!(~V7=Mc(pndygMA!fyA>4gyK*;X9 zBari`Uwt7Yh$S46)Ks=H}Kx?j#3LA8FBq2L@I}<`aK9&NtBs1T! zH74Y^mSjXsD4-M#ClSy#Hj@HQJ^_>EK5uT`@CV8Lf0CS%CI!|F#t_gl3fSY2oj28y zm&oPF&3_wyC%GRBl1xB718e#x5YRR@MW_NX$j+Po2-5{}@`m5SQ~{DxCWHct)qVX4 zXd9>k4qFVe^Tyw)0(@>>|0~ITSb$`LAyQyfPdftIhQ@G4fvg-0gy;gw_MQ=kKR4>kAJ&w7|6-%e+iNTo_J2KSkc`f6p%0L z+$3M#3A7CjQ~_(0WK)9$0#t!m?ixHMc?Ons{DOdj1%h+|l1)+F&zS|Xb1d;XDX^sN z69lv;@9l@r-WmDFOOFqdY>FPci`@U!r}Nx@aob{2V6pFU*t<`*w~Na7{h30; zR=I2l3gN0VXK^Pu+^?F@w^VR9bA=b`#+Z}o!?;oAzSHwN?Pr{lB;$v z5moU=GE*6@iocJobUVmo2RC8Q-bout$nM^HctwV>D0{Dvp2Dzv;Y7A M07*qoM6N<$fiHRmeeIUk5&*ffR64gbuI{aDF#q@0Klcrj#G?zgWNC!u|dF zrWqT6NI8PHFR~A0!`7{Gx-5Y;YwTf%)NX@@|Icxe3>va-+cs}UfWRv&?7>th(F)Yw zBj;I3gDu_qRe$Af04Mu4Suyyznbn#Z_jtKxe7SO^MF2d2mtTy}HPfY~=!QbjxX@#I zy+dWCaQ&LmdMwSEXu9aT+Q|+Jo^ToWkf3R}a6#F>FHK*sl`=c7(i>O@Z1Mn9Wf=rN z96MHct7EO4jX>^U{hfz1*lH)7v$7w zE>r5<-0y(_9~^Sa$7Qowf&Ri{9maY-V;-f9Ujc#J>6;k zh$eG*WQ^dqk7}MksdDkWJk{RbAl}uPuY#*xihpV`-qVxcaYaQ*9~Jo&n5Kbz%>80R zhp0f3Nh^N#;S}c72;z{;6HpywC?_QiV41L$#kmDuLLUZm1k7vzsHRw@$d>sWn(u?* za3iP>Byt2Wz3E2-I}C*IE^#YJfvWWe`$%yJO^Xfw{8Jyt4h;a%AJ+ix4}l+-!ZRSM zv46m1;7g%@2OaGRI@$xQ%Ny|No6(*lU|1}875H;n@=_`9J`fOJ1SB&dWviguZ{X;` zIR9SCw9l(u=~Ab7SULV{Ki4`l&FIFBpuQPD<_TE3-9Me3YK?QM^|pK#N%VM}=>vDss2jF;|)RZX& zBijEf@;9Q}Q;F2(T?c0L6(QM&6^qVAfth7Z2+J_*F_YPdO+h4rSq(^yWO`u?qZcF& z(rFHD4zwjLb!J!djLYTh=I%Tp{ezj5C155Kzip}i5ZF7?eUC(PA@|JLY--m{Gk;yr zzf^TqQ`6bdaK`S6z}GGH*Tm9mQPsfwW{Q|LI9z?@MO&kjnVp%5(u3A z<&Dv`CiW>%QAS6BL%=zp8>m6-0W%pRFb$Z9(X#X4tVMT30ATt26LZaRzUR*WCAIAQ zrC~$_N|xPshadgTOWbS_)3-3~EJ&4-^2;s?`q@aC-m?8HS#myH73-NV!qWzG1)Bsi tfuV^;pwo2XosBb`&X}1U z@-bhK!X zu0|gi>O>-@ue0}gCE*@UR zxei;fk%6J2tA9b%REAJp5rSqXJc9D#5bCQ#DAXv2MpJ@zA;6*dOB}WUhQjKVVf^?* z9MLEe6OREud>=dXJ!)^})DS-UFos}|?->U0&p&bO-y4Bb6?P~-7w-Wj@Rq9hF%VAG zkIz1hVX*n&{U|hh|J}X2!#tRnhK4x1M+1D1#<1DE<9`x|uXqsWs8(Nufr0q!(u{y_^wecUJS(g)jnh35bAzI?*aO-8_Dc-)mEMFmxz3Bf=}@>`1{TlrLp2}vi!~44ej_Y( z*RBX0a!7JrQ+Ys+Ycl%+C{`}<^4(O=7?wzeP#^^H0QwO@B{!9BQuIfBE^4_)7L}SmJWjoPGga zET9_{kL(cxKKnRK`Y${a5d2?%j*|Y~9pd%B`kcN#g9UW+02>RiXLo@>8u0!*A=2No z-6!~;eiSDC?Hj$)0Ex@V>YkYhU|*PI&*}sL3-Cz-f~3D|i+G@q-V2fb_6_;VnwRkfwJf#Q)}9x>pp0O{}C3^;HeF9q2Y^g1vcx0zr7C`wdz$FH}L;Ks- zN&-F&N?eYT(qiSWLaEL7D5=e$I3Nx1lYVVcJJu}e>Br3aPSW4HwpY0Rmn=Zya?+Y| z_;Vno;YKB;2?Q*_B?i3d7rYU|0(#^D^bV{^O?M{(EJ=-5DannXIIu$&;1j%&vVV1r zEFdu8j^&}2OZYvI{^vL)sR0xRw)e^c1aG8lUEM7Ypm%(;X5sWc{|ox*Z0p1Sfj}DY z-Wxu_8zJ(5PXeTGN&4?e)3IZH=wBZLGOE-jES%ETkBKGCf;Upil}6$ElgnC2UwP;s zvl#Gywe^HE(aq*MH~Tcb##VZ4FsN7;@8_8nQ7jyRPkQ4jHH4n{qwe zfBW~{K9_&ndm{j@lUI5syoHtMcS(1C zwshx|PJNP|>~e%uJ@mUqIdc7_E35QIxU#WP&P)aRTf}gunQ&%40Hp)3xql;bTsX2L z2vH4CbrX(s2&fvEAe|YXbfy;xM`jm%kAmmmb2Y|&3*$VLj`TJ7yq7!D>qSLs8fJT`7iWn|6LwbtYqF#<;AAqW! zXi(sU8P%Y{rgSS|iy9b?^ha7macnfK$VZ@RAWm^~JF`V*G92OXop5Vx61PPca2#1p zZPAV3DEwXopMiq^Dv?$R9Puz~b2!YHP-EaQH3wf(Q&82yM{t%HgEI(Dv_#rfjlE(D z^d|=YVrmHPAco*+YVa3f<(_}zG4NBPe;53>0)`(Bm)!QKgna>obe_C{6JZko0000< KMNUMnLSTYd;4*6f delta 1885 zcmV-j2cr0p4eJh&BYyw}VoOIv0RI600RN!9r;`8x2OvpAK~!jg&6;U!Tvrvxf9Jg! zkL}nVw}lXzCdD-&Zk;qCO&zfmoTY_O3AI9Y>MW{Bl&DB$5#j^l3;61<-pn{A&0l)b%)RHF z`#;Ow-i%NHcJ9=2U@aD_L`*eEl`0EGsZ=2<5Kf4e0+BRT1%}eTUqcvCWmI4Qv=_L7 zSXVKea$Qcew#r04oFtb(LxbAUsN1M&HG^&h?7Y0aK1={F8Dl-u(ju<~2?jc_YnSt| zsy+=;Gq3at!+-C={^oPf$px=YPY3qw(XivVKSK3MKbac}Atr{cziJI1&F-3oh6XJv zFLT;aee}k#%NwqRHa^=L`E7cmHCw8@baFq&Jc=qe*<%~!U~}{2>U6#t8ED=yzC%Qw z|NjJV-f%Kp99g$-pG-ko2AZ3-Sm1|+M8&d{%1VevL4PPLq6w>p}V}EvNd3F+G zX4*DB7=Plitwkw^y>R)m;m1$Mi4AH_A6zku4jd@&vjD!nStF==_~OH1-$6&NX;#`rVEf|{ z8k>qJE6Zd*GLkKyj?dMHC@mq7kBU}6auOSNp$3E~S}ELBon1O_pLf~+%W>Z8n=ba- z7hCN9S_xGN*~LpN7B89EYTh4Kp8450=gvB)LP@F6*c4&?rlJhHk%(}2t5@~)$t@Q8FY zDmmuBv|Mr(C+N&pQkva1IABOwnT6i}I)BVu4W`l8Yf$x;AL!3s{7Xxdyn+!*iizf2 zdovJ^E9#>Y8_XVfC}w=+C*$5k{p6?nL?PjTfJ>kQUVVvFdce5Z?XKf5?`eLTr9UMh z4oL@$#?{w~&j1=QfM;`n0|f>s(LD(X2VBgA1XhrDr(cTwg5fLg%RkV8v<$drJb!Sj z^fIJDCE+FS$28fQr=6M3nG7frFLV+I4p3+b71|Dnq?Hhu@t`SC_y7fFz_Wyc=YTOd zkZ{0K9SK@-{VUzO=gb>%e)?1_qivwi^`9Fa?dsE>f~8ZCEFpD=Jg&#H%z2IAJwV^P zQ}n$XaE{5xKK}Lr)MWsYtB{dlD}QJiDtK8e5Oc7v#{L&1!fuD-!#U62o>p?`6!H{i zfAkY|AH58T3`~ULLq(JR=Y4|uVQs@4-qQ7^3 z$a*0*;1C$i05Psgry#A)Ez4dye1BMcUpQu*p_?|HKMAb%k@dn(5$Oe8sVb{LR{(bam9uSo zAPzDl=p}_7g&tAu5!*f&v*qs{9n0eR5Xg+SYDYm12xW&}sc8X@%aoro%S z6u>s2G2^(#a;Ao_h6b*6b*;~P-3+FXhAs8oD=drCv)lck!prTQ_kTPxA4KMgETT;t z-fUBq$MV#VTO!L3y?W2ZdFGWjvd+*B&UZljlPB^VPehGrY53IZB{z_B20Tk;%jZvT z7LnhP_ll$^1^XLqUA4#Z9r(+iIbXgYG`Yfv>aV+2{ViX;+3>CP#`-hcMYWZ}e%L;% zLYJs^BMhSAib@5d6@Q3EjY!7}GDY_qV@x@1D6j;2Yr=yH*}-sz23l4DCQP zPkXhZ)B=f3J#pmoB>4gefFcJBqV=$#EH zJ5h6aKFOhX~PY+%X>2&-L X7sKQ+O^|C_00000NkvXXu0mjfw=JO# diff --git a/app/javascript/images/mailer/icon_cached.png b/app/javascript/images/mailer/icon_cached.png index e94abb7bab5e11b29ebf33c27a4215fbc01dd7a2..73bf9d198d488b1bc1207769cfee0cf92a76290b 100644 GIT binary patch literal 1133 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 literal 817 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvE4M+yv$zcalY)RhkE)4%caKYZ?lNlJ8o_V@B zhE&XXd&f5KN`OS`LqXM2rHx%W{9ZwuG_=YlwE1peIOXi9v#`T6&1l~~`}?1D5}rlX z_22zj!UQxAFG#TPwEJeqTr%;A-O1od`FqbZwf|E8*DDxsxc-qjQ&xp)opM61_>p{; zH7~n<^fqkWqYM<_H3tfu$!!M;SiY6mFK95G?W4R|6aU)(4O>-r+Ryd7@4x)AbMyTF zcORH1%Ja_u{C1EZ#v>n6XAM8Pq|5dJU*@b z9$6(^Z+QOW|EhhC_S*dpe~#|ys1Gh;d8Gf$=Z~tp!oQ?@9s93v9Em^E`f<8M*VzJj_kdWTVEf?)M|fhN_#NqW6WgqL%lk#{++Fwjw0ObXqc=azH$K1lTKL0Lf6l%69(DW? zBhWBxz;oL=>#gs;?FxUjZ%y>vjmclnpFecEbo+t^MyTXkpE9wmLn^oAa?iHS~=KE{D+`kX+?|ygK zhhOQ&(yQ(Dk9R#civ19CH%*tVAT7a6FaPbs`|IAlK9I9!jrD@14C^?~TwA-==FjXa zwURT|E-j7TE^t7w@u$VkR)%$4JztXpCLL$`{4t4}agXSXe*Gwp2a^xftjSSqSijl8 z{pw!%W6vhUpI^7f7%oKQliMNgnwmi8i(mVfhE@*$)m!e$G!&qb8|Gr`3olhs;`XeOmm3JPTc-w)2$zW16 zST#`KEx$}?Z!r=nQ) z#{lGtHcZTU!e`%b(q02ai0gnyUdFy1uL`US(ZCGyIV z2Y~MGjbW5H>9&rcCq+3NWVH1UhG}UFfxPR|3na5&ubX?&eM0T4cmIEWoB8Q~_Uv8R zv!!?511tQ6&~t-fT51s3ggW(`_OF$Y?F6|cq4I@2rcHks!dm{pJi?^_viuptj}7l` z%zuAap+V7!L7SP0fw6(XfkC;EA&ixU0nBq_VqC+=!2ssGaTk=x_1Pf`(QO?y0P zovEkU%4)64tmm)g-rA~h(y#P=iq(U^yJB}wQ?=ak?yry7p6GH9a~Avkob%4494Ic` zUFtk3oFjEuCHFJoQP#uISg(SbjwYl@}N9zhc>V-_UO7yJ@?ozuNbq wY{8meKO-w%K2LwVWY^kVuFTl7Hc;#bXRkn*)Vuljj)N39c^6>pQ{Q>8P?{z=C-q-bh-LLz;-uHFC-*=X`mn#~D zM*#qUc6X!uKnSi5Ed(_C^s|u=AVNJ|>A=crD`_dq2LR-fJAJQjQt{Xu7p1wM@uR7U zbdAS#X=?>*{R8pxzsN-GQrnPYbk(19{QA%~N`@CshfT3yUqaXNJxX>&h7vuFn;9-= z$uCrb^7jwcQEtHaX9vj=)RndrPT$4V={gzw0wffxDr_@0mO=@uWD;62b?y=KyG@ zs=*+EKcVr6IDEShS)l@i$;Mp$xve#=s+fkJ1Re*5*(aaJBg?xW4|2v+*PX2W#o+H|on7WshNDr03&8RSzkurvf_$tY>A23FshOCW({Mp@+Yod97JRSdfe5dR(Mv5kI(FT~)fzgUoBt zPSmsZz5&~PxFnEZ^iV0tvvq7@$4p6hfpAKesWflG75 zu-rt2?ic%Q>ib|eVQvHBqZc4Mif2yy@}9LSt0k)jCW2A`I8C{d)0P|f^08@SwyAg% zEtXslX|Ql<5~IBAqWJc)IzLD77hOeq)IP|bf-c&UG@TJJgH~7(%-^v_W`y%g0W+@o z!j<-+1k&^gmh|SABbe|Jj?Se-hI5h7kFzOk#9WxnWJ!ZVLGq)%M5;MHx{GOpS*mEB(wKSEOZk}^T~HYJ!EtB@K17k*EUH`r?mAqT=9_$@?=Y)o zsZ1L^pC-@zzIbQ%7PNxHv4ZG*)1T^rBB`&f*-CXKswpV4qjrMIegNCqIEPQ%$H2u( zx{FT@Y6|7lZ4LOmq9vf*VNjaA^ERTLz1@rhh0`Z);4Cg85?#|UX4;gM`}+3m;XBYlH3N}%|u5N0bX`&|iW%&fPqXo9JEG{RiJ?Q7B z_diNX9E*Z4q)`m=%DQ;QM9mwapp@w2>i5!kYwX3-oM=xXAGZn_FkfV>=%gF^l4UYw!P}Gd3joG9-i)k znK17Z>%m$TSdm#Z5%@G$2eL!c##;3wjYo>0p1c?{jAAYIuDA9FK8?5A4TW2;q4d@nGgi&A9t$FScp zvx-Xut8of6r%t-?6Ag?!bp|L9+do1}RFIt!MjIay!`U4=;8OO=IV1ZTS*=o~FU5qw zPaMC))eh5Av4ya1JHnm=_1}TC=HAJ1AhHl$a;Nt@7^n5vB?9E92=5o{@1QG-EOg`* zvf$+>DG)%8{{L44k}}7uQ~CI=T^;DvJQ%#)n-=is6io+8e)*b_ZlC5}bZS79UJdfC z_+q1g5<1)|Xf;1x$5`9WZHZ=$!fu(t^|vprYXuHmSE3D*=zwKDk+)Nqw)t z{4(%Xp~L{^f!Ts`%XoWazdp7s!*J`DP1}gU8q%N}SGylht+RB|Pt7Nhwrie4q*nMI z_&_|Tow|$oA19vm!qzxeu#OYF|43a`0~aMG6PFKHggj5=6NkgqwkdFd$1d&EKi(-Y z2EiHGnWMaeK-YeFRd zCRi|eOt{bs6P2jnh#GhHeNDz4yySxHhox??*9t@jQdCBE?xTGFUddnQueSJ~5(PMg i2>z|ULIs$ic8S*VbUE_yc@GT!Hj|B+&14F9RsVS`y?J z%<#XwzJcTXj2@uCS5FtmkP61P=L2Ul0*!fK&CEr<2n-}+D>D6O2V z{P)-b$7VKODU*x~2*$yhqTtQl?9I2?xMwmPP-eKm!C=G0&eP&+D!IBNR4;cBnp zu{YBD9_`Yr|08}sO`gG+vmuLV!7PRqY7DCefO!k(rs!i5|5bh({^oo4sVw&T_nYp2 z&VFK4QMz&E(_?=#P6fe(Y1<^~Hw7|ua+qyA`(yH1CJ&blJJueXpCjR*)a06L{x9V+ zgOH$3+Ubw#((DsD5(IDe+26EjaABF8Yy0m>15nOq)88MHoq_s3B)Rw4TWSF1^o!2? zn0y!{l;YlNZ)pG&@-MmrRK*MwN^tM9x3mBX@fW=TssahQy7${_asVAOw@=0nKpFr5 diff --git a/app/javascript/images/mailer/icon_flag.png b/app/javascript/images/mailer/icon_flag.png index 0f14f45a85cd596124ab25ee6ba6e60f60bf734e..7e078fede78825aa84e711798f2647320414b12a 100644 GIT binary patch literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvG8AvYpRA>UE6a#!hT!Hj|yx_dz>z_bH+$BMN z!3_T;eHu1Duiqr`Y@b`ZDo}W>r;B4q1>@VZ?v6(p7#s}0S#3N&H9$szk#i~opM#U? z0};kIAAe{YPS9mwXy~6)doX}KS@zDggR!zcr3G>9;-v+V?BS&avFz#2vOT2*@$CJj z23HSOO4cOoWo~p(5a3{8LZPDbXT5%~gs<<_gAIITuOIB-+cxj@gOz-8uO2MpduC;^ vviYyojn&O}tt{3x_j4lY-SCQ$fkA(NW`>OWe}ykVhckG(`njxgN@xNA0quI= literal 693 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvE4M+yv$zcalY)RhkE)4%caKYZ?lNlJ8vOHZJ zLn`LHy?t@5u%Up%MTx*8&1Mb%q#LXja0fFbEsm}JKJT-9rd^S#oMz=-pb^+W!{*+r z%zsYLDPA`(u{i#?#Qt#p!tnWF{0DCDTPyeA97{p{{c!$*bfz8l(hqoHQQEKy2QE2|#hh8X$St_yq%_O*;dhz=2|p2SDcW{;SM) zCITfCYa0GDZ@40n{IdK4n}RRH63zw_#tCW+mslKTF?a|wWHJph!QXqTfMI2L?3Lud z<8wYg{#x}n&epw^cf(A>WAmpo=qWeY{*AG9Xl3~JCHpIbDASF}40=ipwv|k=E)3E| z9P#c9zc;b!DKymXWCoF(515#4Ojp0a%CbST{evmX2J`a^CUYj_Gg-`J`1XtsM5;AR x&ix<#)AD)E^UvkK?HR6bVx&j7U?!4nAH=)FbOo03%y9%sdb;|#taD0e0sy+_+WY_j diff --git a/app/javascript/images/mailer/icon_grade.png b/app/javascript/images/mailer/icon_grade.png index 7f371ab1135d1503093b10b4b14b0edce9e2e5a8..94615fc4a7f6454057af71ef9091df4b9840dffe 100644 GIT binary patch delta 1946 zcmV;L2W9xH8K)1BBYy{ONklmkz)A-P-VOADEfAtz4dP5C}GJh}wKF{<%7iC}u+{*NB ziJ~(DR-R7t^zgqNvP(xzt#CHeSsWMPvpXOYe?}qA>&dsu$?p%c@_P6$$V$ zDz{sh6$x++mAg93iUL?(by2x)wNjWB0dN-8J2P@;2F$KTQoYe?j>wrAa45AqBywg3 zJVx!FRDB{xW`Dr;)Ni}Uks0uJ>i4(EjTx|{>ZE>MYU#*{8Sq0I=LeAsGhk-*K8-V6 z%@R2<1NNcu_KqBw0r%5*4@K(CfX!&0O(SJy!0%|D-$ts;fQ8j$nrE_FG*V;+e1qou zdZfk-7@*#u`QB0kBPC|QS7@CtM@r0qyJ(#|BNb-A+JCg(dXWM%;0jvr@@O|RU_Ld0 z)|;pnh;}jqPNIEIjCL^t`l**_pI21>Xa_Uk)3o2Gq8-eD8)?5AqSefRRa7@=SUp3oEK&-{zn&MNXIxeceH{Ta1`k|GMdc{=%bz?JDtADykSGQUrn!ybC8R`3JG@2POiyBV)MyOe%k<5St$;ScFNM^vJIdp*^)U_3Gu1EDb?OQArs~3`G=D+8sqR;U)i2bU>IAjB`k2~GEu#j6 zwQOg9nJK=ZcULD&@eMs#-LKwM9kh~7P%o(4r}%;SzB*!xADDI3BC225|G%LZQR`0e z4Sj_A{uJNPx2qS_WQxRwt0$)Tfw@q9eTpBL?bNDjk*uD;1B5~Q z_kXKbt5{Ajo1k7*_p71mO7&xPtlC5Es@7MFN4o)^Yr{9U*(CMVNCB{kdXLsH8?LsB zlmN@M;7;D`MYVFI2$)yhMst|mqZZ8J4W{4HSZ04wv*h%#!LQR8W@l#kaZg}h)j@5{ zI@O_(Ghhcb3bX2rRUeBY0M<~iQW>*1)qlECB)}r-AwHVf<7&w$B49Q(lo>O-Ud3q;; zKBUW(588Z4H-wV&L7NZheueesSAVL1Sn&X7V7)m#teAjnvEE!0Ry;sIH5%*9m;yco zGGHC7Qfr453vf7Asl&pG1^7Kyso#Ya3-B6NsW-xk16UfX)>2``0DKLr)>p%d0k{CG z*7;$@06dOW>#@k60duP^tXkb_p2(X4yJ5B3HS%V__pn-hH}YnlOR38(k$*i;rA(k6 zo;@5Cc`{&AtX`W$o(wo1tJiUnCj^#p0^P_sqa4A_?Rj8|W;k4og>&P>rDz(93`8cTbP zR{g@f0NsP@)k@JMz%puZYRl2)1?bn*?$IK^$JC2nj<$9$Ku=a@wtwU0L11R}bv41u z(bkRy=o?eGlLwYl!)Tq?qtv_r{f62-5(9ipz3k;^FF-f@;m+)lC}0-#bv4n;(T(H< z=$qB5kqKaVb#;lBqYZeB#(Pukp6iFgfsd(IXuLuQphqrCuK ziCfj`Q82)Y>RK;Hdw&7CCvWBaaHq=I%USiA9UVxtB;m!hKO$E%O&Qx7#EJu3*`eC(c zSW5xxse8Q~-6p_x>TuORtSx~4>TtDPl-@tvgJS^z004kN{?>!oTU`JE0000000000 g000000000$)f34CEfZ&=&;S4c07*qoM6N<$f+}CQmjD0& literal 3243 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 literal 2498 zcmb7Gc|6ox8~^=gnnr}`mWgY*G$>g@V>iTjGl-g^F_}m=vUgEj`*g2sD>RglhMLK~ zHAcND^OJ-YGRTr)iY#R;nFeFK(|zCf{`20?yPWem=RD^;-{(2Y^F8NtQjR(wmX=hI z1OPx9Z;vC0Tj*Pn*etFILxD(fv)SA6Fb>%GmJ6R0X92*L2t4l4iO5@g?x_-`lS-}g zvyy(^`E<9S{N$jsG3R?y>r)*{)KV6o*MIm}>ehtpLT(GU`l1pDmc$x4OdPzy6^g@z6L>3!BQev~%F0c%kIfV?RXLH!ar+zk9 zOt_3LKs;9Jmk5NNwp%xon?v!iJZ0WYHYeV2q`P7(-Vyx-&v{LiDTzm-xmr^})K$<& zA8qNv(M0oepVDca%6OHWI*X`S;vRH?x?dWdjdWfeT|2_@MHk3Fi3@y&Chzmp2rtu{ z{t2&=eA>mxfcn-!bZ&YGt7DZDeoPR>+@2ZEq8I<7DezXz6f{kK^@XeZ{hc0SZ??lc zgUQwQa~FszuDjeVNT8!&Y?u+QkI=RTx$a}cb|v;a2TjuHD0l>{I=zZflSGMNWGiRr z(lulteRL&q2KHQp2-TYt@Aj@3{1m*IDcHdSy@JAZETdr$Ef|8nNgMwf^rHj?doyHz z$C9QMgn)$Yi?_xxD!|2@?L!?)>C33lEpt*dr7x=6sEu1&wZWC4pL9d|`aia^m-ZoPpmn88nfiVZmO=fYq|8VFFfBZ+@c3jJNUKZ z3uvx^yBpr>bGc7>CcRwJrI1V=Hfa$V+Ygc>x8@hSvJr#`%MGWdl(2ldD>!O$ijyIg zel{bevX&^@WBH`$ne_C7(x=7xCFY7+^95cJS4WvnR3o`OMc>02 z=de^a{Ghwnt&nu(mvwdFI&WCH)mE^Wy$pdPG%cAzS`m0Vk;a3c; zc0I7m7(Ia(1&wE)Gwhlu;Q@ieT z$YIJ8(#Z{B*5Y*BKzw}15<12Wp%<7hhev76YH^gh&ep(s$ksO&&S#n5X{{krXI|`H z3{!Y>X2hFyK|($&TKA9 z1S(!d^3S%EB{MZgS;yI3zJnwQ>yDOyl{DAwn!a0QAc?VQaNK#_v&=Yuey|Ja@mvzEVwKY_BeRu_WB7&XvDW&U<RvlcWk%G{x9SggQ}_*Ih{MC^Vm* zA5*DjK`ySx^gj5*fEZ9^;Q=r75i`oQnVDP#Oz7_gr)VpY|bIx3YgZ2iTaX3 zSp*Oz(NWF8UcK3JKT8m4gh6x0$JYUWEFPv|Tt0HJ#V(HVTf5a}OiYxF=)19!cAabN zqK$^9GsxjQg4xhQsB`<92cAn~@*+u#8*~&H4;i=6?u)0gExb%{Z~;$pj`VPR5+eEz zF1JG9-oP(IxBEc0&QiTB@IApHV`q#@GdS7uqsyE#&(XT0R;22+zoztg@l$uuHoktW z-JYcBm+w3)U&N#~?(qu>U(+-c@KNgsg9vq8e2SUtr#SuLt$~|#?>1Z;UuwNOTi8(N zy)uTZ|0MmdP`(vQ%jW<4CI7F?`{(m;N`VY;@4|C*ge@2g@+&$1(Qptm4XTOhSTTof z#ccZFerHvSe{Jwh9uvjlz>h=+Rx zrd8guz;Qk^ptelRnInLgR_rAmw~Jy5nrt#Fo4_{6mA??v6#+zj{)XX)d60p^^WWUW z(niY~;kT0M7om#~W~udl(M@=qwViMD`0-dEomAL4b4QO+uO?&2!?ybTbuzNpK=y1q W9++q|8!rBo0eCxST$PR2<=+7@&9wOd diff --git a/app/javascript/images/mailer/icon_person_add.png b/app/javascript/images/mailer/icon_person_add.png index 696eb74951463265d760a5dd2ae8cd9ec0b8062a..9fe966391e543597343a4be8e5a4b2cf00c6d5d5 100644 GIT binary patch literal 1440 zcmah}dr*=I5dYvSaX67)R;MGKPFY$RX6mWn`+@l)9*L%?XD=yhEV)zh-H z!c#0hB*6z{HY(;6rgWx(CRvi9CR#Zb6{LB1e>ZnKv-{iq&FpV>c6RnGF(w>^v_%2{ zfQlf5kjyAwa7znwBn=%z0KnpX5g~yT7Hq2hgqZ_46?4!k2)>a1z*0WHhlR;J3M#+0 zdCM|h$TG^?r5P_QAIb1rnq(RGCpEOg{tYjwdHURMrK0B(FQGSQU zQQ1^)5F|0GP1Uv{zbed{(MMLS8)YI-fnDPeN=lF3DMmGj;F#JRD0)SYlbVd*q^t*6 zjkdMOl9)ggxd7Sl8K4NnHEE5!e0`-$hls)%heCHNf(%30jh@L*aM?IH5SfT?gE_dl# z@Lq%-l%YwYLrll_879n#Ey+S5BiTTkW0F7Gj2j69^=4Ya&3d;$Gx?J&+6>qf)$DpY z8^Cak>kE&=5hz_XB=l_L8L4GT)AvQSp$7M?>A4;jeBpq2*CmL@ErQjSKb1%?)%e*&SwMoi1061v|Jpv4Xr)IN!1N&1>9_)fTVaV zuF@A3tzYY^Sv_q(GildriI#%`;!lrxM&Sdn^O_@j?S~b{%caX*Ue8?6eEa#v7?NpYT+jU$5{z7)c(%?^F)uLV;D}!-bHQv+}T8R2$GO^w(S@H zvs2|2E{-;sfOHs-w77n}(G0C54V` zJp#U5LJgl#LG9*2ebB$yakvnM0X}S?Gvm;xr5}NM1WQ_0(Z6tNOliVJ@pwo77;LxQ zG|iCiL7WTP9Op~D(R_i#WZX`uW!G8=V_;Qvz2Z!nCIF7&(Q z1J&uddNHF&bITga_j!^OQG^&_x?bUc=lqVq#kA~VQjV(O%krP?zMB1%M;A#6^=45d)b9vcY>z;&?6)aM{E$ z-Sbhj40;>f4Q#57Q40gMkb>2RM3A*GT~AFNMF=Qs$nzZu2Tq%sh1T7k+SkJKnv+s# zFhh`&MU$CtB2DFe?#bW69r~i)Rx6f7UxlPWHY%b)BI$#>sJ^IEHRblCVX95)x^KAN zXj;EAZp(!cY(;`$$ErF}v*3(SBawkP>SjgP!)1mNNk8~%YS^@A;%ZKK<8|0DwY2UC zGa}EctcT-Aqg!3N<({(Siq~9KrbX`Z?kYR|5z?M@6qtL*W zLYG}{VRARp9xfhe3K35IiAeFf8;bzVFVO1L>>X~M;&O00ywEAY7S4D0uaM~QgRl87 Yg}vlA3U>9-yBDg6(3p_gpp^W706SofOaK4? literal 2356 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 delta 1657 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 diff --git a/app/javascript/images/preview.png b/app/javascript/images/preview.png index 369bed4b6cf02ad3cca2fea5710cb95c540b20ca..3d3a17b23c5591efa47396babc27f56fca979145 100644 GIT binary patch literal 340408 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 =z(8pyc@-$=L!4+&URNERG|CkOL(M)~ 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

    J^ZfYxbAjX%}K;rPLQTUW1JrdzJ7S~&BSQ5F44 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�@L*XTz(OTIG8kZmqkR6XKMg*RW&?0q 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%0D*o*JH{*sJ$kH7TZiI?5ujaOt@kk7sT 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拫W!ZIVCmrXR=G@4OpVU$ho)eEu~#Woja< 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

    &d#k;lJq-r1 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�BI@k4Z5?{s0emb1DxAM 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 P?gDf)4AmQ-*hc>!b1$&f diff --git a/spec/fixtures/files/emojo.png b/spec/fixtures/files/emojo.png index cb5993499f059fa4118504aee1e71c9181810e3e..6ef0a5fbc7574a7432b6d031718d4d35d4109204 100644 GIT binary patch literal 29283 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 W0edJykTJ3V0000);pF57oTHj^P`Ci88 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 From 15bae3e0e467a19582a25e0482cd26c1c82fd7f9 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 1 Nov 2022 15:27:58 +0100 Subject: [PATCH 616/652] Change post-processing to be deferred only for large media types (#19617) --- app/controllers/api/v2/media_controller.rb | 2 +- app/models/media_attachment.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/api/v2/media_controller.rb b/app/controllers/api/v2/media_controller.rb index 0c1baf01d..288f847f1 100644 --- a/app/controllers/api/v2/media_controller.rb +++ b/app/controllers/api/v2/media_controller.rb @@ -3,7 +3,7 @@ class Api::V2::MediaController < Api::V1::MediaController def create @media_attachment = current_account.media_attachments.create!({ delay_processing: true }.merge(media_attachment_params)) - render json: @media_attachment, serializer: REST::MediaAttachmentSerializer, status: 202 + render json: @media_attachment, serializer: REST::MediaAttachmentSerializer, status: @media_attachment.not_processed? ? 202 : 200 rescue Paperclip::Errors::NotIdentifiedByImageMagickError render json: file_type_error, status: 422 rescue Paperclip::Error diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb index 4a1948380..81e8ef2dc 100644 --- a/app/models/media_attachment.rb +++ b/app/models/media_attachment.rb @@ -248,11 +248,11 @@ class MediaAttachment < ApplicationRecord attr_writer :delay_processing def delay_processing? - @delay_processing + @delay_processing && larger_media_format? end def delay_processing_for_attachment?(attachment_name) - @delay_processing && attachment_name == :file + delay_processing? && attachment_name == :file end after_commit :enqueue_processing, on: :create From 6804228fdfab70b25eab300d0ce16d4321f947a8 Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 1 Nov 2022 16:03:51 +0100 Subject: [PATCH 617/652] Fix N+1 on mentions in PushUpdateWorker (#19637) --- app/workers/push_update_worker.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/workers/push_update_worker.rb b/app/workers/push_update_worker.rb index ae444cfde..9f44c32b3 100644 --- a/app/workers/push_update_worker.rb +++ b/app/workers/push_update_worker.rb @@ -6,7 +6,7 @@ class PushUpdateWorker def perform(account_id, status_id, timeline_id = nil, options = {}) @account = Account.find(account_id) - @status = Status.find(status_id) + @status = Status.includes(active_mentions: :account, reblog: { active_mentions: :account }).find(status_id) @timeline_id = timeline_id || "timeline:#{account.id}" @options = options.symbolize_keys From ae07cfb8688e862203f682feaed866ce0ac1774e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 1 Nov 2022 16:26:25 +0100 Subject: [PATCH 618/652] Add support for HEIC uploads (#19618) --- app/models/media_attachment.rb | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb index 81e8ef2dc..c71b54eb8 100644 --- a/app/models/media_attachment.rb +++ b/app/models/media_attachment.rb @@ -44,7 +44,7 @@ class MediaAttachment < ApplicationRecord MAX_VIDEO_MATRIX_LIMIT = 2_304_000 # 1920x1200px MAX_VIDEO_FRAME_RATE = 60 - IMAGE_FILE_EXTENSIONS = %w(.jpg .jpeg .png .gif .webp).freeze + IMAGE_FILE_EXTENSIONS = %w(.jpg .jpeg .png .gif .webp .heic .heif).freeze VIDEO_FILE_EXTENSIONS = %w(.webm .mp4 .m4v .mov).freeze AUDIO_FILE_EXTENSIONS = %w(.ogg .oga .mp3 .wav .flac .opus .aac .m4a .3gp .wma).freeze @@ -55,7 +55,8 @@ class MediaAttachment < ApplicationRecord small ).freeze - IMAGE_MIME_TYPES = %w(image/jpeg image/png image/gif image/webp).freeze + IMAGE_MIME_TYPES = %w(image/jpeg image/png image/gif image/heic image/heif image/webp).freeze + IMAGE_CONVERTIBLE_MIME_TYPES = %w(image/heic image/heif).freeze VIDEO_MIME_TYPES = %w(video/webm video/mp4 video/quicktime video/ogg).freeze VIDEO_CONVERTIBLE_MIME_TYPES = %w(video/webm video/quicktime).freeze AUDIO_MIME_TYPES = %w(audio/wave audio/wav audio/x-wav audio/x-pn-wave audio/vnd.wave audio/ogg audio/vorbis audio/mpeg audio/mp3 audio/webm audio/flac audio/aac audio/m4a audio/x-m4a audio/mp4 audio/3gpp video/x-ms-asf).freeze @@ -78,6 +79,16 @@ class MediaAttachment < ApplicationRecord }.freeze, }.freeze + IMAGE_CONVERTED_STYLES = { + original: { + format: 'jpeg', + }.merge(IMAGE_STYLES[:original]).freeze, + + small: { + format: 'jpeg', + }.merge(IMAGE_STYLES[:small]).freeze, + }.freeze + VIDEO_FORMAT = { format: 'mp4', content_type: 'video/mp4', @@ -277,6 +288,8 @@ class MediaAttachment < ApplicationRecord def file_styles(attachment) if attachment.instance.file_content_type == 'image/gif' || VIDEO_CONVERTIBLE_MIME_TYPES.include?(attachment.instance.file_content_type) VIDEO_CONVERTED_STYLES + elsif IMAGE_CONVERTIBLE_MIME_TYPES.include?(attachment.instance.file_content_type) + IMAGE_CONVERTED_STYLES elsif IMAGE_MIME_TYPES.include?(attachment.instance.file_content_type) IMAGE_STYLES elsif VIDEO_MIME_TYPES.include?(attachment.instance.file_content_type) From 0f5e6dd02b9434f66c2f19715b0f1318c5d721ed Mon Sep 17 00:00:00 2001 From: txt-file <44214237+txt-file@users.noreply.github.com> Date: Tue, 1 Nov 2022 22:08:41 +0100 Subject: [PATCH 619/652] Add support for AVIF uploads (#19647) --- app/models/media_attachment.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb index c71b54eb8..a6e090f4c 100644 --- a/app/models/media_attachment.rb +++ b/app/models/media_attachment.rb @@ -44,7 +44,7 @@ class MediaAttachment < ApplicationRecord MAX_VIDEO_MATRIX_LIMIT = 2_304_000 # 1920x1200px MAX_VIDEO_FRAME_RATE = 60 - IMAGE_FILE_EXTENSIONS = %w(.jpg .jpeg .png .gif .webp .heic .heif).freeze + IMAGE_FILE_EXTENSIONS = %w(.jpg .jpeg .png .gif .webp .heic .heif .avif).freeze VIDEO_FILE_EXTENSIONS = %w(.webm .mp4 .m4v .mov).freeze AUDIO_FILE_EXTENSIONS = %w(.ogg .oga .mp3 .wav .flac .opus .aac .m4a .3gp .wma).freeze @@ -55,7 +55,7 @@ class MediaAttachment < ApplicationRecord small ).freeze - IMAGE_MIME_TYPES = %w(image/jpeg image/png image/gif image/heic image/heif image/webp).freeze + IMAGE_MIME_TYPES = %w(image/jpeg image/png image/gif image/heic image/heif image/webp image/avif).freeze IMAGE_CONVERTIBLE_MIME_TYPES = %w(image/heic image/heif).freeze VIDEO_MIME_TYPES = %w(video/webm video/mp4 video/quicktime video/ogg).freeze VIDEO_CONVERTIBLE_MIME_TYPES = %w(video/webm video/quicktime).freeze From cb27d8999798d96c17f84a705639fc59f9d12d14 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 2 Nov 2022 16:34:47 +0100 Subject: [PATCH 620/652] Change migration to migrate admins to Owner role rather than Admin role (#19671) --- db/post_migrate/20220617202502_migrate_roles.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/db/post_migrate/20220617202502_migrate_roles.rb b/db/post_migrate/20220617202502_migrate_roles.rb index b7a7b2201..950699d9c 100644 --- a/db/post_migrate/20220617202502_migrate_roles.rb +++ b/db/post_migrate/20220617202502_migrate_roles.rb @@ -9,18 +9,19 @@ class MigrateRoles < ActiveRecord::Migration[5.2] def up load Rails.root.join('db', 'seeds', '03_roles.rb') - admin_role = UserRole.find_by(name: 'Admin') + owner_role = UserRole.find_by(name: 'Owner') moderator_role = UserRole.find_by(name: 'Moderator') - User.where(admin: true).in_batches.update_all(role_id: admin_role.id) + User.where(admin: true).in_batches.update_all(role_id: owner_role.id) User.where(moderator: true).in_batches.update_all(role_id: moderator_role.id) end def down admin_role = UserRole.find_by(name: 'Admin') + owner_role = UserRole.find_by(name: 'Owner') moderator_role = UserRole.find_by(name: 'Moderator') - User.where(role_id: admin_role.id).in_batches.update_all(admin: true) if admin_role + User.where(role_id: [admin_role.id, owner_role.id]).in_batches.update_all(admin: true) if admin_role User.where(role_id: moderator_role.id).in_batches.update_all(moderator: true) if moderator_role end end From e91418436a17e13e09c2ad2a9eff13ce7e80946e Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 2 Nov 2022 16:35:21 +0100 Subject: [PATCH 621/652] Fix mastodon:setup not setting the admin's role properly (#19670) * Fix mastodon:setup not setting the admin's role properly * Set contact username when creating admin account in mastodon:setup --- lib/tasks/mastodon.rake | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake index 0ccfc9f29..80e1dcf52 100644 --- a/lib/tasks/mastodon.rake +++ b/lib/tasks/mastodon.rake @@ -433,9 +433,12 @@ namespace :mastodon do password = SecureRandom.hex(16) - user = User.new(admin: true, email: email, password: password, confirmed_at: Time.now.utc, account_attributes: { username: username }, bypass_invite_request_check: true) + owner_role = UserRole.find_by(name: 'Owner') + user = User.new(email: email, password: password, confirmed_at: Time.now.utc, account_attributes: { username: username }, bypass_invite_request_check: true, role: owner_role) user.save(validate: false) + Setting.site_contact_username = username + prompt.ok "You can login with the password: #{password}" prompt.warn 'You can change your password once you login.' end From e0eb39d41b05115df973d5a9676b67a9309d4ff9 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 2 Nov 2022 16:38:23 +0100 Subject: [PATCH 622/652] Fix bookmark import stopping at the first failure (#19669) Fixes #19389 --- app/services/import_service.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/services/import_service.rb b/app/services/import_service.rb index 676c37bde..ece5b9ef0 100644 --- a/app/services/import_service.rb +++ b/app/services/import_service.rb @@ -112,6 +112,11 @@ class ImportService < BaseService next if status.nil? && ActivityPub::TagManager.instance.local_uri?(uri) status || ActivityPub::FetchRemoteStatusService.new.call(uri) + rescue HTTP::Error, OpenSSL::SSL::SSLError, Mastodon::UnexpectedResponseError + nil + rescue StandardError => e + Rails.logger.warn "Unexpected error when importing bookmark: #{e}" + nil end account_ids = statuses.map(&:account_id) From 74d40c7d8fac3ccc263af29c622f4481e18e8c59 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 2 Nov 2022 18:09:39 +0100 Subject: [PATCH 623/652] Fix edits not being immediately reflected (#19673) Fixes #19546 --- app/javascript/mastodon/actions/compose.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/javascript/mastodon/actions/compose.js b/app/javascript/mastodon/actions/compose.js index e29b88a50..a9b7efc4a 100644 --- a/app/javascript/mastodon/actions/compose.js +++ b/app/javascript/mastodon/actions/compose.js @@ -7,7 +7,7 @@ import { tagHistory } from 'mastodon/settings'; import resizeImage from 'mastodon/utils/resize_image'; import { showAlert, showAlertForError } from './alerts'; import { useEmoji } from './emojis'; -import { importFetchedAccounts } from './importer'; +import { importFetchedAccounts, importFetchedStatus } from './importer'; import { openModal } from './modal'; import { updateTimeline } from './timelines'; @@ -194,6 +194,10 @@ export function submitCompose(routerHistory) { } }; + if (statusId) { + dispatch(importFetchedStatus({ ...response.data })); + } + if (statusId === null && response.data.visibility !== 'direct') { insertIfOnline('home'); } From 125322718bfe983e94937f5d127003d47a138313 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 2 Nov 2022 18:50:21 +0100 Subject: [PATCH 624/652] Fix inaccurate admin log entry for re-sending confirmation e-mails (#19674) Fixes #19593 --- app/controllers/admin/confirmations_controller.rb | 2 +- app/models/admin/action_log_filter.rb | 1 + config/locales/en.yml | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/controllers/admin/confirmations_controller.rb b/app/controllers/admin/confirmations_controller.rb index efe7dcbd4..6f4e42679 100644 --- a/app/controllers/admin/confirmations_controller.rb +++ b/app/controllers/admin/confirmations_controller.rb @@ -17,7 +17,7 @@ module Admin @user.resend_confirmation_instructions - log_action :confirm, @user + log_action :resend, @user flash[:notice] = I18n.t('admin.accounts.resend_confirmation.success') redirect_to admin_accounts_path diff --git a/app/models/admin/action_log_filter.rb b/app/models/admin/action_log_filter.rb index c7a7e1a4c..edb391e2e 100644 --- a/app/models/admin/action_log_filter.rb +++ b/app/models/admin/action_log_filter.rb @@ -47,6 +47,7 @@ class Admin::ActionLogFilter promote_user: { target_type: 'User', action: 'promote' }.freeze, remove_avatar_user: { target_type: 'User', action: 'remove_avatar' }.freeze, reopen_report: { target_type: 'Report', action: 'reopen' }.freeze, + resend_user: { target_type: 'User', action: 'resend' }.freeze, reset_password_user: { target_type: 'User', action: 'reset_password' }.freeze, resolve_report: { target_type: 'Report', action: 'resolve' }.freeze, sensitive_account: { target_type: 'Account', action: 'sensitive' }.freeze, diff --git a/config/locales/en.yml b/config/locales/en.yml index 547b19f07..ce8dea65b 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -207,6 +207,7 @@ en: reject_user: Reject User remove_avatar_user: Remove Avatar reopen_report: Reopen Report + resend_user: Resend Confirmation Mail reset_password_user: Reset Password resolve_report: Resolve Report sensitive_account: Force-Sensitive Account @@ -265,6 +266,7 @@ en: reject_user_html: "%{name} rejected sign-up from %{target}" remove_avatar_user_html: "%{name} removed %{target}'s avatar" reopen_report_html: "%{name} reopened report %{target}" + resend_user_html: "%{name} resent confirmation e-mail for %{target}" reset_password_user_html: "%{name} reset password of user %{target}" resolve_report_html: "%{name} resolved report %{target}" sensitive_account_html: "%{name} marked %{target}'s media as sensitive" From cbb440bbc2de7c805f687c886b32ab7dbafde07f Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 3 Nov 2022 16:05:39 +0100 Subject: [PATCH 625/652] Fix being unable to withdraw follow request when confirmation modal is disabled (#19687) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix being unable to withdraw follow request when unfollow confirmation modal is disabled Fixes #19569 * Fix “unfollow” being inadequately used for withdrawing follow requests from account card --- .../containers/header_container.js | 2 ++ .../directory/components/account_card.js | 16 ++++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/app/javascript/mastodon/features/account_timeline/containers/header_container.js b/app/javascript/mastodon/features/account_timeline/containers/header_container.js index 62e59939c..1d09cd1ef 100644 --- a/app/javascript/mastodon/features/account_timeline/containers/header_container.js +++ b/app/javascript/mastodon/features/account_timeline/containers/header_container.js @@ -60,6 +60,8 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ confirm: intl.formatMessage(messages.cancelFollowRequestConfirm), onConfirm: () => dispatch(unfollowAccount(account.get('id'))), })); + } else { + dispatch(unfollowAccount(account.get('id'))); } } else { dispatch(followAccount(account.get('id'))); diff --git a/app/javascript/mastodon/features/directory/components/account_card.js b/app/javascript/mastodon/features/directory/components/account_card.js index 7c675a147..e7eeb2254 100644 --- a/app/javascript/mastodon/features/directory/components/account_card.js +++ b/app/javascript/mastodon/features/directory/components/account_card.js @@ -24,6 +24,7 @@ const messages = defineMessages({ unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' }, follow: { id: 'account.follow', defaultMessage: 'Follow' }, cancel_follow_request: { id: 'account.cancel_follow_request', defaultMessage: 'Withdraw follow request' }, + cancelFollowRequestConfirm: { id: 'confirmations.cancel_follow_request.confirm', defaultMessage: 'Withdraw request' }, requested: { id: 'account.requested', defaultMessage: 'Awaiting approval. Click to cancel follow request' }, unblock: { id: 'account.unblock_short', defaultMessage: 'Unblock' }, unmute: { id: 'account.unmute_short', defaultMessage: 'Unmute' }, @@ -43,10 +44,7 @@ const makeMapStateToProps = () => { const mapDispatchToProps = (dispatch, { intl }) => ({ onFollow(account) { - if ( - account.getIn(['relationship', 'following']) || - account.getIn(['relationship', 'requested']) - ) { + if (account.getIn(['relationship', 'following'])) { if (unfollowModal) { dispatch( openModal('CONFIRM', { @@ -64,6 +62,16 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ } else { dispatch(unfollowAccount(account.get('id'))); } + } else if (account.getIn(['relationship', 'requested'])) { + if (unfollowModal) { + dispatch(openModal('CONFIRM', { + message: @{account.get('acct')} }} />, + confirm: intl.formatMessage(messages.cancelFollowRequestConfirm), + onConfirm: () => dispatch(unfollowAccount(account.get('id'))), + })); + } else { + dispatch(unfollowAccount(account.get('id'))); + } } else { dispatch(followAccount(account.get('id'))); } From 1dca08b76f25d15365127ded37202d783a50e298 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 3 Nov 2022 16:06:42 +0100 Subject: [PATCH 626/652] Fix admin action logs page (#19649) * Add tests * Fix crash when trying to display orphaned action logs * Add migration for older admin action logs --- app/helpers/admin/action_logs_helper.rb | 20 ++- ...221101190723_backfill_admin_action_logs.rb | 150 ++++++++++++++++++ db/schema.rb | 2 +- lib/tasks/tests.rake | 51 +++++- .../admin/action_logs_controller_spec.rb | 13 ++ 5 files changed, 221 insertions(+), 15 deletions(-) create mode 100644 db/post_migrate/20221101190723_backfill_admin_action_logs.rb diff --git a/app/helpers/admin/action_logs_helper.rb b/app/helpers/admin/action_logs_helper.rb index fd1977ac5..215ecea0d 100644 --- a/app/helpers/admin/action_logs_helper.rb +++ b/app/helpers/admin/action_logs_helper.rb @@ -4,15 +4,19 @@ module Admin::ActionLogsHelper def log_target(log) case log.target_type when 'Account' - link_to log.human_identifier, admin_account_path(log.target_id) + link_to (log.human_identifier.presence || I18n.t('admin.action_logs.deleted_account')), admin_account_path(log.target_id) when 'User' - link_to log.human_identifier, admin_account_path(log.route_param) + if log.route_param.present? + link_to log.human_identifier, admin_account_path(log.route_param) + else + I18n.t('admin.action_logs.deleted_account') + end when 'UserRole' link_to log.human_identifier, admin_roles_path(log.target_id) when 'Report' - link_to "##{log.human_identifier}", admin_report_path(log.target_id) + link_to "##{log.human_identifier.presence || log.target_id}", admin_report_path(log.target_id) when 'DomainBlock', 'DomainAllow', 'EmailDomainBlock', 'UnavailableDomain' - link_to log.human_identifier, "https://#{log.human_identifier}" + link_to log.human_identifier, "https://#{log.human_identifier.presence}" when 'Status' link_to log.human_identifier, log.permalink when 'AccountWarning' @@ -22,9 +26,13 @@ module Admin::ActionLogsHelper when 'IpBlock', 'Instance', 'CustomEmoji' log.human_identifier when 'CanonicalEmailBlock' - content_tag(:samp, log.human_identifier[0...7], title: log.human_identifier) + content_tag(:samp, (log.human_identifier.presence || '')[0...7], title: log.human_identifier) when 'Appeal' - link_to log.human_identifier, disputes_strike_path(log.route_param) + if log.route_param.present? + link_to log.human_identifier, disputes_strike_path(log.route_param.presence) + else + I18n.t('admin.action_logs.deleted_account') + end end end end diff --git a/db/post_migrate/20221101190723_backfill_admin_action_logs.rb b/db/post_migrate/20221101190723_backfill_admin_action_logs.rb new file mode 100644 index 000000000..9a64d1715 --- /dev/null +++ b/db/post_migrate/20221101190723_backfill_admin_action_logs.rb @@ -0,0 +1,150 @@ +# frozen_string_literal: true + +class BackfillAdminActionLogs < ActiveRecord::Migration[6.1] + disable_ddl_transaction! + + class Account < ApplicationRecord + # Dummy class, to make migration possible across version changes + has_one :user, inverse_of: :account + + def local? + domain.nil? + end + + def acct + local? ? username : "#{username}@#{domain}" + end + end + + class User < ApplicationRecord + # Dummy class, to make migration possible across version changes + belongs_to :account + end + + class Status < ApplicationRecord + include RoutingHelper + + # Dummy class, to make migration possible across version changes + belongs_to :account + + def local? + attributes['local'] || attributes['uri'].nil? + end + + def uri + local? ? activity_account_status_url(account, self) : attributes['uri'] + end + end + + class DomainBlock < ApplicationRecord; end + class DomainAllow < ApplicationRecord; end + class EmailDomainBlock < ApplicationRecord; end + class UnavailableDomain < ApplicationRecord; end + + class AccountWarning < ApplicationRecord + # Dummy class, to make migration possible across version changes + belongs_to :account + end + + class Announcement < ApplicationRecord; end + class IpBlock < ApplicationRecord; end + class CustomEmoji < ApplicationRecord; end + class CanonicalEmailBlock < ApplicationRecord; end + + class Appeal < ApplicationRecord + # Dummy class, to make migration possible across version changes + belongs_to :account + end + + class AdminActionLog < ApplicationRecord + # Dummy class, to make migration possible across version changes + + # Cannot use usual polymorphic support because of namespacing issues + belongs_to :status, foreign_key: :target_id + belongs_to :account, foreign_key: :target_id + belongs_to :user, foreign_key: :user_id + belongs_to :domain_block, foreign_key: :target_id + belongs_to :domain_allow, foreign_key: :target_id + belongs_to :email_domain_block, foreign_key: :target_id + belongs_to :unavailable_domain, foreign_key: :target_id + belongs_to :account_warning, foreign_key: :target_id + belongs_to :announcement, foreign_key: :target_id + belongs_to :ip_block, foreign_key: :target_id + belongs_to :custom_emoji, foreign_key: :target_id + belongs_to :canonical_email_block, foreign_key: :target_id + belongs_to :appeal, foreign_key: :target_id + end + + def up + safety_assured do + AdminActionLog.includes(:account).where(target_type: 'Account', human_identifier: nil).find_each do |log| + next if log.account.nil? + log.update(human_identifier: log.account.acct) + end + + AdminActionLog.includes(user: :account).where(target_type: 'User', human_identifier: nil).find_each do |log| + next if log.user.nil? + log.update(human_identifier: log.user.account.acct, route_param: log.user.account_id) + end + + Admin::ActionLog.where(target_type: 'Report', human_identifier: nil).in_batches.update_all('human_identifier = target_id::text') + + AdminActionLog.includes(:domain_block).where(target_type: 'DomainBlock').find_each do |log| + next if log.domain_block.nil? + log.update(human_identifier: log.domain_block.domain) + end + + AdminActionLog.includes(:domain_allow).where(target_type: 'DomainAllow').find_each do |log| + next if log.domain_allow.nil? + log.update(human_identifier: log.domain_allow.domain) + end + + AdminActionLog.includes(:email_domain_block).where(target_type: 'EmailDomainBlock').find_each do |log| + next if log.email_domain_block.nil? + log.update(human_identifier: log.email_domain_block.domain) + end + + AdminActionLog.includes(:unavailable_domain).where(target_type: 'UnavailableDomain').find_each do |log| + next if log.unavailable_domain.nil? + log.update(human_identifier: log.unavailable_domain.domain) + end + + AdminActionLog.includes(status: :account).where(target_type: 'Status', human_identifier: nil).find_each do |log| + next if log.status.nil? + log.update(human_identifier: log.status.account.acct, permalink: log.status.uri) + end + + AdminActionLog.includes(account_warning: :account).where(target_type: 'AccountWarning', human_identifier: nil).find_each do |log| + next if log.account_warning.nil? + log.update(human_identifier: log.account_warning.account.acct) + end + + AdminActionLog.includes(:announcement).where(target_type: 'Announcement', human_identifier: nil).find_each do |log| + next if log.announcement.nil? + log.update(human_identifier: log.announcement.text) + end + + AdminActionLog.includes(:ip_block).where(target_type: 'IpBlock', human_identifier: nil).find_each do |log| + next if log.ip_block.nil? + log.update(human_identifier: "#{log.ip_block.ip}/#{log.ip_block.ip.prefix}") + end + + AdminActionLog.includes(:custom_emoji).where(target_type: 'CustomEmoji', human_identifier: nil).find_each do |log| + next if log.custom_emoji.nil? + log.update(human_identifier: log.custom_emoji.shortcode) + end + + AdminActionLog.includes(:canonical_email_block).where(target_type: 'CanonicalEmailBlock', human_identifier: nil).find_each do |log| + next if log.canonical_email_block.nil? + log.update(human_identifier: log.canonical_email_block.canonical_email_hash) + end + + AdminActionLog.includes(appeal: :account).where(target_type: 'Appeal', human_identifier: nil).find_each do |log| + next if log.appeal.nil? + log.update(human_identifier: log.appeal.account.acct, route_param: log.appeal.account_warning_id) + end + end + end + + def down; end +end diff --git a/db/schema.rb b/db/schema.rb index d7e40b133..12ec37c11 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2022_10_25_171544) do +ActiveRecord::Schema.define(version: 2022_11_01_190723) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" diff --git a/lib/tasks/tests.rake b/lib/tasks/tests.rake index 65bff6a8e..96d2f7112 100644 --- a/lib/tasks/tests.rake +++ b/lib/tasks/tests.rake @@ -53,6 +53,41 @@ namespace :tests do VALUES (1, 2, 'test', '{ "home", "public" }', true, true, now(), now()), (2, 2, 'take', '{ "home" }', false, false, now(), now()); + + -- Orphaned admin action logs + + INSERT INTO "admin_action_logs" + (account_id, action, target_type, target_id, created_at, updated_at) + VALUES + (1, 'destroy', 'Account', 1312, now(), now()), + (1, 'destroy', 'User', 1312, now(), now()), + (1, 'destroy', 'Report', 1312, now(), now()), + (1, 'destroy', 'DomainBlock', 1312, now(), now()), + (1, 'destroy', 'EmailDomainBlock', 1312, now(), now()), + (1, 'destroy', 'Status', 1312, now(), now()), + (1, 'destroy', 'CustomEmoji', 1312, now(), now()); + + -- Admin action logs with linked objects + + INSERT INTO "domain_blocks" + (id, domain, created_at, updated_at) + VALUES + (1, 'example.org', now(), now()); + + INSERT INTO "email_domain_blocks" + (id, domain, created_at, updated_at) + VALUES + (1, 'example.org', now(), now()); + + INSERT INTO "admin_action_logs" + (account_id, action, target_type, target_id, created_at, updated_at) + VALUES + (1, 'destroy', 'Account', 1, now(), now()), + (1, 'destroy', 'User', 1, now(), now()), + (1, 'destroy', 'DomainBlock', 1312, now(), now()), + (1, 'destroy', 'EmailDomainBlock', 1312, now(), now()), + (1, 'destroy', 'Status', 1, now(), now()), + (1, 'destroy', 'CustomEmoji', 3, now(), now()); SQL end @@ -207,18 +242,18 @@ namespace :tests do -- custom emoji INSERT INTO "custom_emojis" - (shortcode, created_at, updated_at) + (id, shortcode, created_at, updated_at) VALUES - ('test', now(), now()), - ('Test', now(), now()), - ('blobcat', now(), now()); + (1, 'test', now(), now()), + (2, 'Test', now(), now()), + (3, 'blobcat', now(), now()); INSERT INTO "custom_emojis" - (shortcode, domain, uri, created_at, updated_at) + (id, shortcode, domain, uri, created_at, updated_at) VALUES - ('blobcat', 'remote.org', 'https://remote.org/emoji/blobcat', now(), now()), - ('blobcat', 'Remote.org', 'https://remote.org/emoji/blobcat', now(), now()), - ('Blobcat', 'remote.org', 'https://remote.org/emoji/Blobcat', now(), now()); + (4, 'blobcat', 'remote.org', 'https://remote.org/emoji/blobcat', now(), now()), + (5, 'blobcat', 'Remote.org', 'https://remote.org/emoji/blobcat', now(), now()), + (6, 'Blobcat', 'remote.org', 'https://remote.org/emoji/Blobcat', now(), now()); -- favourites diff --git a/spec/controllers/admin/action_logs_controller_spec.rb b/spec/controllers/admin/action_logs_controller_spec.rb index c1957258f..7cd8cdf46 100644 --- a/spec/controllers/admin/action_logs_controller_spec.rb +++ b/spec/controllers/admin/action_logs_controller_spec.rb @@ -3,6 +3,19 @@ require 'rails_helper' describe Admin::ActionLogsController, type: :controller do + render_views + + # Action logs typically cause issues when their targets are not in the database + let!(:account) { Fabricate(:account) } + + let!(:orphaned_logs) do + %w( + Account User UserRole Report DomainBlock DomainAllow + EmailDomainBlock UnavailableDomain Status AccountWarning + Announcement IpBlock Instance CustomEmoji CanonicalEmailBlock Appeal + ).map { |type| Admin::ActionLog.new(account: account, action: 'destroy', target_type: type, target_id: 1312).save! } + end + describe 'GET #index' do it 'returns 200' do sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')) From 9387beb3b381e3f164eb538f178d9b543b7fcf40 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 3 Nov 2022 23:12:08 +0100 Subject: [PATCH 627/652] Change flaky AccountSearchService test (#19650) --- spec/services/account_search_service_spec.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/spec/services/account_search_service_spec.rb b/spec/services/account_search_service_spec.rb index 5b7182586..81cbc175e 100644 --- a/spec/services/account_search_service_spec.rb +++ b/spec/services/account_search_service_spec.rb @@ -45,7 +45,6 @@ describe AccountSearchService, type: :service do results = subject.call('e@example.com', nil, limit: 2) - expect(results.size).to eq 2 expect(results).to eq([exact, remote]).or eq([exact, remote_too]) end end From 053dac2afa7a1da65204d336f19794ae8db23f27 Mon Sep 17 00:00:00 2001 From: SJang1 Date: Fri, 4 Nov 2022 08:13:07 +0900 Subject: [PATCH 628/652] Remove meta tag for official iOS app (#19656) --- app/views/layouts/application.html.haml | 1 - 1 file changed, 1 deletion(-) diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index fb5ba5cb0..7b9434d6f 100755 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -23,7 +23,6 @@ %link{ rel: 'manifest', href: manifest_path(format: :json) }/ %meta{ name: 'theme-color', content: '#191b22' }/ %meta{ name: 'apple-mobile-web-app-capable', content: 'yes' }/ - %meta{ name: 'apple-itunes-app', content: 'app-id=1571998974' }/ %title= content_for?(:page_title) ? safe_join([yield(:page_title).chomp.html_safe, title], ' - ') : title From 7c8e2b9859f2e206110accb74d19ec4591d79780 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 4 Nov 2022 00:14:39 +0100 Subject: [PATCH 629/652] Fix handling of duplicate and out-of-order notifications in WebUI (#19693) * Fix handling of duplicate notifications from streaming server * Fix handling of duplicate and out-of-order notifications when polling/expanding Fixes #19615 --- .../mastodon/reducers/notifications.js | 85 +++++++++++++++---- 1 file changed, 68 insertions(+), 17 deletions(-) diff --git a/app/javascript/mastodon/reducers/notifications.js b/app/javascript/mastodon/reducers/notifications.js index eb34edb63..eb5368198 100644 --- a/app/javascript/mastodon/reducers/notifications.js +++ b/app/javascript/mastodon/reducers/notifications.js @@ -58,6 +58,11 @@ const notificationToMap = notification => ImmutableMap({ const normalizeNotification = (state, notification, usePendingItems) => { const top = state.get('top'); + // Under currently unknown conditions, the client may receive duplicates from the server + if (state.get('pendingItems').some((item) => item?.get('id') === notification.id) || state.get('items').some((item) => item?.get('id') === notification.id)) { + return state; + } + if (usePendingItems || !state.get('pendingItems').isEmpty()) { return state.update('pendingItems', list => list.unshift(notificationToMap(notification))).update('unread', unread => unread + 1); } @@ -77,28 +82,74 @@ const normalizeNotification = (state, notification, usePendingItems) => { }); }; -const expandNormalizedNotifications = (state, notifications, next, isLoadingRecent, usePendingItems) => { - const lastReadId = state.get('lastReadId'); - let items = ImmutableList(); +const expandNormalizedNotifications = (state, notifications, next, isLoadingMore, isLoadingRecent, usePendingItems) => { + // This method is pretty tricky because: + // - existing notifications might be out of order + // - the existing notifications may have gaps, most often explicitly noted with a `null` item + // - ideally, we don't want it to reorder existing items + // - `notifications` may include items that are already included + // - this function can be called either to fill in a gap, or load newer items - notifications.forEach((n, i) => { - items = items.set(i, notificationToMap(n)); - }); + const lastReadId = state.get('lastReadId'); + const newItems = ImmutableList(notifications.map(notificationToMap)); return state.withMutations(mutable => { - if (!items.isEmpty()) { + if (!newItems.isEmpty()) { usePendingItems = isLoadingRecent && (usePendingItems || !mutable.get('pendingItems').isEmpty()); - mutable.update(usePendingItems ? 'pendingItems' : 'items', list => { - const lastIndex = 1 + list.findLastIndex( - item => item !== null && (compareId(item.get('id'), items.last().get('id')) > 0 || item.get('id') === items.last().get('id')), - ); + mutable.update(usePendingItems ? 'pendingItems' : 'items', oldItems => { + // If called to poll *new* notifications, we just need to add them on top without duplicates + if (isLoadingRecent) { + const idsToCheck = oldItems.map(item => item?.get('id')).toSet(); + const insertedItems = newItems.filterNot(item => idsToCheck.includes(item.get('id'))); + return insertedItems.concat(oldItems); + } - const firstIndex = 1 + list.take(lastIndex).findLastIndex( - item => item !== null && compareId(item.get('id'), items.first().get('id')) > 0, - ); + // If called to expand more (presumably older than any known to the WebUI), we just have to + // add them to the bottom without duplicates + if (isLoadingMore) { + const idsToCheck = oldItems.map(item => item?.get('id')).toSet(); + const insertedItems = newItems.filterNot(item => idsToCheck.includes(item.get('id'))); + return oldItems.concat(insertedItems); + } - return list.take(firstIndex).concat(items, list.skip(lastIndex)); + // Now this gets tricky, as we don't necessarily know for sure where the gap to fill is, + // and some items in the timeline may not be properly ordered. + + // However, we know that `newItems.last()` is the oldest item that was requested and that + // there is no “hole” between `newItems.last()` and `newItems.first()`. + + // First, find the furthest (if properly sorted, oldest) item in the notifications that is + // newer than the oldest fetched one, as it's most likely that it delimits the gap. + // Start the gap *after* that item. + const lastIndex = oldItems.findLastIndex(item => item !== null && compareId(item.get('id'), newItems.last().get('id')) >= 0) + 1; + + // Then, try to find the furthest (if properly sorted, oldest) item in the notifications that + // is newer than the most recent fetched one, as it delimits a section comprised of only + // items older or within `newItems` (or that were deleted from the server, so should be removed + // anyway). + // Stop the gap *after* that item. + const firstIndex = oldItems.take(lastIndex).findLastIndex(item => item !== null && compareId(item.get('id'), newItems.first().get('id')) > 0) + 1; + + // At this point: + // - no `oldItems` after `firstIndex` is newer than any of the `newItems` + // - all `oldItems` after `lastIndex` are older than every of the `newItems` + // - it is possible for items in the replaced slice to be older than every `newItems` + // - it is possible for items before `firstIndex` to be in the `newItems` range + // Therefore: + // - to avoid losing items, items from the replaced slice that are older than `newItems` + // should be added in the back. + // - to avoid duplicates, `newItems` should be checked the first `firstIndex` items of + // `oldItems` + const idsToCheck = oldItems.take(firstIndex).map(item => item?.get('id')).toSet(); + const insertedItems = newItems.filterNot(item => idsToCheck.includes(item.get('id'))); + const olderItems = oldItems.slice(firstIndex, lastIndex).filter(item => item !== null && compareId(item.get('id'), newItems.last().get('id')) < 0); + + return oldItems.take(firstIndex).concat( + insertedItems, + olderItems, + oldItems.skip(lastIndex), + ); }); } @@ -109,7 +160,7 @@ const expandNormalizedNotifications = (state, notifications, next, isLoadingRece if (shouldCountUnreadNotifications(state)) { mutable.set('unread', mutable.get('pendingItems').count(item => item !== null) + mutable.get('items').count(item => item && compareId(item.get('id'), lastReadId) > 0)); } else { - const mostRecent = items.find(item => item !== null); + const mostRecent = newItems.find(item => item !== null); if (mostRecent && compareId(lastReadId, mostRecent.get('id')) < 0) { mutable.set('lastReadId', mostRecent.get('id')); } @@ -224,7 +275,7 @@ export default function notifications(state = initialState, action) { case NOTIFICATIONS_UPDATE: return normalizeNotification(state, action.notification, action.usePendingItems); case NOTIFICATIONS_EXPAND_SUCCESS: - return expandNormalizedNotifications(state, action.notifications, action.next, action.isLoadingRecent, action.usePendingItems); + return expandNormalizedNotifications(state, action.notifications, action.next, action.isLoadingMore, action.isLoadingRecent, action.usePendingItems); case ACCOUNT_BLOCK_SUCCESS: return filterNotifications(state, [action.relationship.id]); case ACCOUNT_MUTE_SUCCESS: From 5825402ed57e42dc8093133aaf2815fd2008c185 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 4 Nov 2022 02:28:00 +0100 Subject: [PATCH 630/652] Fix design of verified links in web UI (#19709) --- .../features/account/components/header.js | 4 +-- .../styles/mastodon/components.scss | 25 +++++++++++++++---- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/app/javascript/mastodon/features/account/components/header.js b/app/javascript/mastodon/features/account/components/header.js index e39f0158e..8d3b3c5e6 100644 --- a/app/javascript/mastodon/features/account/components/header.js +++ b/app/javascript/mastodon/features/account/components/header.js @@ -337,10 +337,10 @@ class Header extends ImmutablePureComponent { {fields.map((pair, i) => ( -

    +
    -
    +
    {pair.get('verified_at') && }
    diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index f60ad6050..f1622dbb5 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -7143,12 +7143,27 @@ noscript { color: lighten($ui-highlight-color, 8%); } - dl:first-child .verified { - border-radius: 0 4px 0 0; - } + .verified { + border: 1px solid rgba($valid-value-color, 0.5); - .verified a { - color: $valid-value-color; + &:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + } + + &:last-child { + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + } + + dt, + dd { + color: $valid-value-color; + } + + a { + color: $valid-value-color; + } } } } From 1c3192df6bf48eb4c3613f2a8744c809f6eeeec0 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 4 Nov 2022 02:28:14 +0100 Subject: [PATCH 631/652] Fix wrong colors in the high-contrast theme (#19708) --- app/javascript/styles/contrast/diff.scss | 84 ++++++++++--------- app/javascript/styles/contrast/variables.scss | 4 +- 2 files changed, 46 insertions(+), 42 deletions(-) diff --git a/app/javascript/styles/contrast/diff.scss b/app/javascript/styles/contrast/diff.scss index 27eb837df..4fa1a0361 100644 --- a/app/javascript/styles/contrast/diff.scss +++ b/app/javascript/styles/contrast/diff.scss @@ -1,4 +1,3 @@ -// components.scss .compose-form { .compose-form__modifiers { .compose-form__upload { @@ -14,36 +13,8 @@ } .status__content a, -.reply-indicator__content a { - color: lighten($ui-highlight-color, 12%); - text-decoration: underline; - - &.mention { - text-decoration: none; - } - - &.mention span { - text-decoration: underline; - - &:hover, - &:focus, - &:active { - text-decoration: none; - } - } - - &:hover, - &:focus, - &:active { - text-decoration: none; - } - - &.status__content__spoiler-link { - color: $secondary-text-color; - text-decoration: none; - } -} - +.link-footer a, +.reply-indicator__content a, .status__content__read-more-button { text-decoration: underline; @@ -52,23 +23,56 @@ &:active { text-decoration: none; } + + &.mention { + text-decoration: none; + + span { + text-decoration: underline; + } + + &:hover, + &:focus, + &:active { + span { + text-decoration: none; + } + } + } } -.getting-started__footer a { - text-decoration: underline; - - &:hover, - &:focus, - &:active { - text-decoration: none; - } +.status__content a { + color: $highlight-text-color; } .nothing-here { color: $darker-text-color; } +.compose-form__poll-wrapper .button.button-secondary, .compose-form .autosuggest-textarea__textarea::placeholder, -.compose-form .spoiler-input__input::placeholder { +.compose-form .spoiler-input__input::placeholder, +.report-dialog-modal__textarea::placeholder, +.language-dropdown__dropdown__results__item__common-name, +.compose-form .icon-button { color: $inverted-text-color; } + +.text-icon-button.active { + color: $ui-highlight-color; +} + +.language-dropdown__dropdown__results__item.active { + background: $ui-highlight-color; + font-weight: 500; +} + +.link-button:disabled { + cursor: not-allowed; + + &:hover, + &:focus, + &:active { + text-decoration: none !important; + } +} diff --git a/app/javascript/styles/contrast/variables.scss b/app/javascript/styles/contrast/variables.scss index 9edfd6d8d..e38d24b27 100644 --- a/app/javascript/styles/contrast/variables.scss +++ b/app/javascript/styles/contrast/variables.scss @@ -14,8 +14,8 @@ $ui-highlight-color: $classic-highlight-color !default; $darker-text-color: lighten($ui-primary-color, 20%) !default; $dark-text-color: lighten($ui-primary-color, 12%) !default; $secondary-text-color: lighten($ui-secondary-color, 6%) !default; -$highlight-text-color: lighten($ui-highlight-color, 8%) !default; -$action-button-color: #8d9ac2; +$highlight-text-color: lighten($ui-highlight-color, 10%) !default; +$action-button-color: lighten($ui-base-color, 50%); $inverted-text-color: $black !default; $lighter-text-color: darken($ui-base-color, 6%) !default; From bfafb114a2135b1f21ba7e6d54ee13e8da75b629 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 4 Nov 2022 02:28:25 +0100 Subject: [PATCH 632/652] Fix showing profile's featured tags on individual statuses (#19712) --- app/javascript/mastodon/components/navigation_portal.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/javascript/mastodon/components/navigation_portal.js b/app/javascript/mastodon/components/navigation_portal.js index b2d054a3b..45407be43 100644 --- a/app/javascript/mastodon/components/navigation_portal.js +++ b/app/javascript/mastodon/components/navigation_portal.js @@ -21,7 +21,12 @@ class NavigationPortal extends React.PureComponent { render () { return ( - + + + + + + ); From 139ea4c981f563e51d80ec3ec407d6265e29cb70 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 4 Nov 2022 02:28:37 +0100 Subject: [PATCH 633/652] Fix limited account hint referencing "your" server when logged out (#19711) --- .../account_timeline/components/limited_account_hint.js | 3 ++- app/javascript/mastodon/locales/en.json | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/features/account_timeline/components/limited_account_hint.js b/app/javascript/mastodon/features/account_timeline/components/limited_account_hint.js index 6b025596c..80b967642 100644 --- a/app/javascript/mastodon/features/account_timeline/components/limited_account_hint.js +++ b/app/javascript/mastodon/features/account_timeline/components/limited_account_hint.js @@ -4,6 +4,7 @@ import { connect } from 'react-redux'; import { revealAccount } from 'mastodon/actions/accounts'; import { FormattedMessage } from 'react-intl'; import Button from 'mastodon/components/button'; +import { domain } from 'mastodon/initial_state'; const mapDispatchToProps = (dispatch, { accountId }) => ({ @@ -26,7 +27,7 @@ class LimitedAccountHint extends React.PureComponent { return (
    -

    +

    ); diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 7d5c19205..fd504fa04 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -339,7 +339,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", From 20aa8881dc98264e5875fa37fc2dbf18e3f2baac Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 4 Nov 2022 02:32:26 +0100 Subject: [PATCH 634/652] Fix colors in light theme (#19714) --- .../styles/mastodon-light/diff.scss | 42 ++++++++++++++++++- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss index 20e973b8b..d928a55ed 100644 --- a/app/javascript/styles/mastodon-light/diff.scss +++ b/app/javascript/styles/mastodon-light/diff.scss @@ -41,7 +41,8 @@ html { } .about__meta, -.about__section__title { +.about__section__title, +.interaction-modal { background: $white; border: 1px solid lighten($ui-base-color, 8%); } @@ -414,6 +415,7 @@ html { .icon-with-badge__badge { border-color: $white; + color: $white; } .report-modal__comment { @@ -430,10 +432,36 @@ html { border-top: 0; } -.focal-point__preview strong { +.dashboard__quick-access, +.focal-point__preview strong, +.admin-wrapper .content__heading__tabs a.selected { color: $white; } +.button.button-tertiary { + &:hover, + &:focus, + &:active { + color: $white; + } +} + +.button.button-secondary { + border-color: $darker-text-color; + color: $darker-text-color; + + &:hover, + &:focus, + &:active { + border-color: darken($darker-text-color, 8%); + color: darken($darker-text-color, 8%); + } +} + +.flash-message.warning { + color: lighten($gold-star, 16%); +} + .boost-modal__action-bar, .confirmation-modal__action-bar, .mute-modal__action-bar, @@ -640,6 +668,16 @@ html { } } +.reply-indicator { + background: transparent; + border: 1px solid lighten($ui-base-color, 8%); +} + +.dismissable-banner { + border-left: 1px solid lighten($ui-base-color, 8%); + border-right: 1px solid lighten($ui-base-color, 8%); +} + .status__content, .reply-indicator__content { a { From 4fb0aae636316e79b3c13c4000fda7765fa9474f Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 4 Nov 2022 13:19:12 +0100 Subject: [PATCH 635/652] Change mentions of blocked users to not be processed (#19725) Fixes #19698 --- app/services/process_mentions_service.rb | 10 ++ .../services/process_mentions_service_spec.rb | 126 +++++++++++------- 2 files changed, 87 insertions(+), 49 deletions(-) diff --git a/app/services/process_mentions_service.rb b/app/services/process_mentions_service.rb index c9c158af1..b117db8c2 100644 --- a/app/services/process_mentions_service.rb +++ b/app/services/process_mentions_service.rb @@ -66,6 +66,16 @@ class ProcessMentionsService < BaseService end def assign_mentions! + # Make sure we never mention blocked accounts + unless @current_mentions.empty? + mentioned_domains = @current_mentions.map { |m| m.account.domain }.compact.uniq + blocked_domains = Set.new(mentioned_domains.empty? ? [] : AccountDomainBlock.where(account_id: @status.account_id, domain: mentioned_domains)) + mentioned_account_ids = @current_mentions.map(&:account_id) + blocked_account_ids = Set.new(@status.account.block_relationships.where(target_account_id: mentioned_account_ids).pluck(:target_account_id)) + + @current_mentions.select! { |mention| !(blocked_account_ids.include?(mention.account_id) || blocked_domains.include?(mention.account.domain)) } + end + @current_mentions.each do |mention| mention.save if mention.new_record? end diff --git a/spec/services/process_mentions_service_spec.rb b/spec/services/process_mentions_service_spec.rb index 89b265e9a..5b9d17a4c 100644 --- a/spec/services/process_mentions_service_spec.rb +++ b/spec/services/process_mentions_service_spec.rb @@ -1,63 +1,91 @@ require 'rails_helper' RSpec.describe ProcessMentionsService, type: :service do - let(:account) { Fabricate(:account, username: 'alice') } - let(:visibility) { :public } - let(:status) { Fabricate(:status, account: account, text: "Hello @#{remote_user.acct}", visibility: visibility) } + let(:account) { Fabricate(:account, username: 'alice') } subject { ProcessMentionsService.new } - context 'ActivityPub' do - context do - let!(:remote_user) { Fabricate(:account, username: 'remote_user', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') } - - before do - subject.call(status) - end - - it 'creates a mention' do - expect(remote_user.mentions.where(status: status).count).to eq 1 - end - end - - context 'with an IDN domain' do - let!(:remote_user) { Fabricate(:account, username: 'sneak', protocol: :activitypub, domain: 'xn--hresiar-mxa.ch', inbox_url: 'http://example.com/inbox') } - let!(:status) { Fabricate(:status, account: account, text: "Hello @sneak@hæresiar.ch") } - - before do - subject.call(status) - end - - it 'creates a mention' do - expect(remote_user.mentions.where(status: status).count).to eq 1 - end - end - - context 'with an IDN TLD' do - let!(:remote_user) { Fabricate(:account, username: 'foo', protocol: :activitypub, domain: 'xn--y9a3aq.xn--y9a3aq', inbox_url: 'http://example.com/inbox') } - let!(:status) { Fabricate(:status, account: account, text: "Hello @foo@հայ.հայ") } - - before do - subject.call(status) - end - - it 'creates a mention' do - expect(remote_user.mentions.where(status: status).count).to eq 1 - end - end - end - - context 'Temporarily-unreachable ActivityPub user' do - let!(:remote_user) { Fabricate(:account, username: 'remote_user', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox', last_webfingered_at: nil) } + context 'when mentions contain blocked accounts' do + let(:non_blocked_account) { Fabricate(:account) } + let(:individually_blocked_account) { Fabricate(:account) } + let(:domain_blocked_account) { Fabricate(:account, domain: 'evil.com') } + let(:status) { Fabricate(:status, account: account, text: "Hello @#{non_blocked_account.acct} @#{individually_blocked_account.acct} @#{domain_blocked_account.acct}", visibility: :public) } before do - stub_request(:get, "https://example.com/.well-known/host-meta").to_return(status: 404) - stub_request(:get, "https://example.com/.well-known/webfinger?resource=acct:remote_user@example.com").to_return(status: 500) + account.block!(individually_blocked_account) + account.domain_blocks.create!(domain: domain_blocked_account.domain) + subject.call(status) end - it 'creates a mention' do - expect(remote_user.mentions.where(status: status).count).to eq 1 + it 'creates a mention to the non-blocked account' do + expect(non_blocked_account.mentions.where(status: status).count).to eq 1 + end + + it 'does not create a mention to the individually blocked account' do + expect(individually_blocked_account.mentions.where(status: status).count).to eq 0 + end + + it 'does not create a mention to the domain-blocked account' do + expect(domain_blocked_account.mentions.where(status: status).count).to eq 0 + end + end + + context 'resolving a mention to a remote account' do + let(:status) { Fabricate(:status, account: account, text: "Hello @#{remote_user.acct}", visibility: :public) } + + context 'ActivityPub' do + context do + let!(:remote_user) { Fabricate(:account, username: 'remote_user', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') } + + before do + subject.call(status) + end + + it 'creates a mention' do + expect(remote_user.mentions.where(status: status).count).to eq 1 + end + end + + context 'with an IDN domain' do + let!(:remote_user) { Fabricate(:account, username: 'sneak', protocol: :activitypub, domain: 'xn--hresiar-mxa.ch', inbox_url: 'http://example.com/inbox') } + let!(:status) { Fabricate(:status, account: account, text: "Hello @sneak@hæresiar.ch") } + + before do + subject.call(status) + end + + it 'creates a mention' do + expect(remote_user.mentions.where(status: status).count).to eq 1 + end + end + + context 'with an IDN TLD' do + let!(:remote_user) { Fabricate(:account, username: 'foo', protocol: :activitypub, domain: 'xn--y9a3aq.xn--y9a3aq', inbox_url: 'http://example.com/inbox') } + let!(:status) { Fabricate(:status, account: account, text: "Hello @foo@հայ.հայ") } + + before do + subject.call(status) + end + + it 'creates a mention' do + expect(remote_user.mentions.where(status: status).count).to eq 1 + end + end + end + + context 'Temporarily-unreachable ActivityPub user' do + let!(:remote_user) { Fabricate(:account, username: 'remote_user', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox', last_webfingered_at: nil) } + + before do + stub_request(:get, "https://example.com/.well-known/host-meta").to_return(status: 404) + stub_request(:get, "https://example.com/.well-known/webfinger?resource=acct:remote_user@example.com").to_return(status: 500) + subject.call(status) + end + + it 'creates a mention' do + expect(remote_user.mentions.where(status: status).count).to eq 1 + end end end end From b8f6f039563044764336d4c62d87b1d5442d7c8b Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 4 Nov 2022 13:19:57 +0100 Subject: [PATCH 636/652] Fix /users/:username/statuses/:id leading to a soft 404 in web app (#19724) --- config/routes.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/config/routes.rb b/config/routes.rb index f24d539ba..800db96c8 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -81,6 +81,7 @@ Rails.application.routes.draw do } get '/users/:username', to: redirect('/@%{username}'), constraints: lambda { |req| req.format.nil? || req.format.html? } + get '/users/:username/statuses/:id', to: redirect('/@%{username}/%{id}'), constraints: lambda { |req| req.format.nil? || req.format.html? } get '/authorize_follow', to: redirect { |_, request| "/authorize_interaction?#{request.params.to_query}" } resources :accounts, path: 'users', only: [:show], param: :username do From 5f9e47be34fcf42ff7fcd5668c7555d4a38e289a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 4 Nov 2022 13:21:06 +0100 Subject: [PATCH 637/652] Add caching for payload serialization during fan-out (#19642) --- app/lib/inline_renderer.rb | 11 +++++ app/lib/status_cache_hydrator.rb | 47 +++++++++++++++++++++ app/services/fan_out_on_write_service.rb | 11 ++++- app/workers/push_update_worker.rb | 13 +++--- spec/lib/status_cache_hydrator_spec.rb | 54 ++++++++++++++++++++++++ 5 files changed, 129 insertions(+), 7 deletions(-) create mode 100644 app/lib/status_cache_hydrator.rb create mode 100644 spec/lib/status_cache_hydrator_spec.rb diff --git a/app/lib/inline_renderer.rb b/app/lib/inline_renderer.rb index b70814748..4bb240b48 100644 --- a/app/lib/inline_renderer.rb +++ b/app/lib/inline_renderer.rb @@ -11,6 +11,7 @@ class InlineRenderer case @template when :status serializer = REST::StatusSerializer + preload_associations_for_status when :notification serializer = REST::NotificationSerializer when :conversation @@ -35,6 +36,16 @@ class InlineRenderer private + def preload_associations_for_status + ActiveRecord::Associations::Preloader.new.preload(@object, { + active_mentions: :account, + + reblog: { + active_mentions: :account, + }, + }) + end + def current_user @current_account&.user end diff --git a/app/lib/status_cache_hydrator.rb b/app/lib/status_cache_hydrator.rb new file mode 100644 index 000000000..01e92b385 --- /dev/null +++ b/app/lib/status_cache_hydrator.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +class StatusCacheHydrator + def initialize(status) + @status = status + end + + def hydrate(account_id) + # The cache of the serialized hash is generated by the fan-out-on-write service + payload = Rails.cache.fetch("fan-out/#{@status.id}") { InlineRenderer.render(@status, nil, :status) } + + # If we're delivering to the author who disabled the display of the application used to create the + # status, we need to hydrate the application, since it was not rendered for the basic payload + payload[:application] = ActiveModelSerializers::SerializableResource.new(@status.application, serializer: REST::StatusSerializer::ApplicationSerializer).as_json if payload[:application].nil? && @status.account_id == account_id + + # We take advantage of the fact that some relationships can only occur with an original status, not + # the reblog that wraps it, so we can assume that some values are always false + if payload[:reblog] + payload[:favourited] = false + payload[:reblogged] = false + payload[:muted] = false + payload[:bookmarked] = false + payload[:pinned] = false + payload[:filtered] = CustomFilter.apply_cached_filters(CustomFilter.cached_filters_for(@status.reblog_of_id), @status.reblog).map { |filter| ActiveModelSerializers::SerializableResource.new(filter, serializer: REST::FilterResultSerializer).as_json } + + # If the reblogged status is being delivered to the author who disabled the display of the application + # used to create the status, we need to hydrate it here too + payload[:reblog][:application] = ActiveModelSerializers::SerializableResource.new(@status.reblog.application, serializer: REST::StatusSerializer::ApplicationSerializer).as_json if payload[:reblog][:application].nil? && @status.reblog.account_id == account_id + + payload[:reblog][:favourited] = Favourite.where(account_id: account_id, status_id: @status.reblog_of_id).exists? + payload[:reblog][:reblogged] = Status.where(account_id: account_id, reblog_of_id: @status.reblog_of_id).exists? + payload[:reblog][:muted] = ConversationMute.where(account_id: account_id, conversation_id: @status.reblog.conversation_id).exists? + payload[:reblog][:bookmarked] = Bookmark.where(account_id: account_id, status_id: @status.reblog_of_id).exists? + payload[:reblog][:pinned] = StatusPin.where(account_id: account_id, status_id: @status.reblog_of_id).exists? + payload[:reblog][:filtered] = payload[:filtered] + else + payload[:favourited] = Favourite.where(account_id: account_id, status_id: @status.id).exists? + payload[:reblogged] = Status.where(account_id: account_id, reblog_of_id: @status.id).exists? + payload[:muted] = ConversationMute.where(account_id: account_id, conversation_id: @status.conversation_id).exists? + payload[:bookmarked] = Bookmark.where(account_id: account_id, status_id: @status.id).exists? + payload[:pinned] = StatusPin.where(account_id: account_id, status_id: @status.id).exists? + payload[:filtered] = CustomFilter.apply_cached_filters(CustomFilter.cached_filters_for(@status.id), @status).map { |filter| ActiveModelSerializers::SerializableResource.new(filter, serializer: REST::FilterResultSerializer).as_json } + end + + payload + end +end diff --git a/app/services/fan_out_on_write_service.rb b/app/services/fan_out_on_write_service.rb index ce20a146e..2554756a5 100644 --- a/app/services/fan_out_on_write_service.rb +++ b/app/services/fan_out_on_write_service.rb @@ -14,6 +14,7 @@ class FanOutOnWriteService < BaseService @options = options check_race_condition! + warm_payload_cache! fan_out_to_local_recipients! fan_out_to_public_recipients! if broadcastable? @@ -135,13 +136,21 @@ class FanOutOnWriteService < BaseService AccountConversation.add_status(@account, @status) unless update? end + def warm_payload_cache! + Rails.cache.write("fan-out/#{@status.id}", rendered_status) + end + def anonymous_payload @anonymous_payload ||= Oj.dump( event: update? ? :'status.update' : :update, - payload: InlineRenderer.render(@status, nil, :status) + payload: rendered_status ) end + def rendered_status + @rendered_status ||= InlineRenderer.render(@status, nil, :status) + end + def update? @options[:update] end diff --git a/app/workers/push_update_worker.rb b/app/workers/push_update_worker.rb index 9f44c32b3..72c781749 100644 --- a/app/workers/push_update_worker.rb +++ b/app/workers/push_update_worker.rb @@ -5,11 +5,12 @@ class PushUpdateWorker include Redisable def perform(account_id, status_id, timeline_id = nil, options = {}) - @account = Account.find(account_id) - @status = Status.includes(active_mentions: :account, reblog: { active_mentions: :account }).find(status_id) - @timeline_id = timeline_id || "timeline:#{account.id}" + @status = Status.find(status_id) + @account_id = account_id + @timeline_id = timeline_id || "timeline:#{account_id}" @options = options.symbolize_keys + render_payload! publish! rescue ActiveRecord::RecordNotFound true @@ -17,14 +18,14 @@ class PushUpdateWorker private - def payload - InlineRenderer.render(@status, @account, :status) + def render_payload! + @payload = StatusCacheHydrator.new(@status).hydrate(@account_id) end def message Oj.dump( event: update? ? :'status.update' : :update, - payload: payload, + payload: @payload, queued_at: (Time.now.to_f * 1000.0).to_i ) end diff --git a/spec/lib/status_cache_hydrator_spec.rb b/spec/lib/status_cache_hydrator_spec.rb new file mode 100644 index 000000000..ad9940a85 --- /dev/null +++ b/spec/lib/status_cache_hydrator_spec.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe StatusCacheHydrator do + let(:status) { Fabricate(:status) } + let(:account) { Fabricate(:account) } + + describe '#hydrate' do + subject { described_class.new(status).hydrate(account.id) } + + let(:compare_to_hash) { InlineRenderer.render(status, account, :status) } + + context 'when cache is warm' do + before do + Rails.cache.write("fan-out/#{status.id}", InlineRenderer.render(status, nil, :status)) + end + + it 'renders the same attributes as a full render' do + expect(subject).to include(compare_to_hash) + end + end + + context 'when cache is cold' do + before do + Rails.cache.delete("fan-out/#{status.id}") + end + + it 'renders the same attributes as a full render' do + expect(subject).to include(compare_to_hash) + end + end + + context 'when account has favourited status' do + before do + FavouriteService.new.call(account, status) + end + + it 'renders the same attributes as a full render' do + expect(subject).to include(compare_to_hash) + end + end + + context 'when account has reblogged status' do + before do + ReblogService.new.call(account, status) + end + + it 'renders the same attributes as a full render' do + expect(subject).to include(compare_to_hash) + end + end + end +end From f002878c95442bae71e64d45d2502e63efb4d468 Mon Sep 17 00:00:00 2001 From: Jeong Arm Date: Sat, 5 Nov 2022 00:04:25 +0900 Subject: [PATCH 638/652] Make word-break: keep-all for dismissable banner (#19719) --- app/javascript/styles/mastodon/components.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index f1622dbb5..2edb10857 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -8317,6 +8317,7 @@ noscript { font-size: 14px; line-height: 18px; color: $primary-text-color; + word-break: keep-all; } &__action { From b1a219552e935d0c988e1f20b9fdceeb042d2c2d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 4 Nov 2022 16:08:29 +0100 Subject: [PATCH 639/652] Fix featured tags not saving preferred casing (#19732) --- app/models/featured_tag.rb | 25 ++++++++----------- config/locales/simple_form.en.yml | 2 +- ...0221104133904_add_name_to_featured_tags.rb | 5 ++++ db/schema.rb | 3 ++- 4 files changed, 18 insertions(+), 17 deletions(-) create mode 100644 db/migrate/20221104133904_add_name_to_featured_tags.rb diff --git a/app/models/featured_tag.rb b/app/models/featured_tag.rb index d4ed74302..78185b2a9 100644 --- a/app/models/featured_tag.rb +++ b/app/models/featured_tag.rb @@ -10,13 +10,16 @@ # last_status_at :datetime # created_at :datetime not null # updated_at :datetime not null +# name :string # class FeaturedTag < ApplicationRecord belongs_to :account, inverse_of: :featured_tags belongs_to :tag, inverse_of: :featured_tags, optional: true # Set after validation - validate :validate_tag_name, on: :create + validates :name, presence: true, format: { with: /\A(#{Tag::HASHTAG_NAME_RE})\z/i }, on: :create + + validate :validate_tag_uniqueness, on: :create validate :validate_featured_tags_limit, on: :create before_validation :strip_name @@ -26,18 +29,14 @@ class FeaturedTag < ApplicationRecord scope :by_name, ->(name) { joins(:tag).where(tag: { name: HashtagNormalizer.new.normalize(name) }) } - delegate :display_name, to: :tag - - attr_writer :name - LIMIT = 10 def sign? true end - def name - tag_id.present? ? tag.name : @name + def display_name + attributes['name'] || tag.display_name end def increment(timestamp) @@ -51,13 +50,11 @@ class FeaturedTag < ApplicationRecord private def strip_name - return unless defined?(@name) - - @name = @name&.strip&.gsub(/\A#/, '') + self.name = name&.strip&.gsub(/\A#/, '') end def set_tag - self.tag = Tag.find_or_create_by_names(@name)&.first + self.tag = Tag.find_or_create_by_names(name)&.first end def reset_data @@ -69,9 +66,7 @@ class FeaturedTag < ApplicationRecord errors.add(:base, I18n.t('featured_tags.errors.limit')) if account.featured_tags.count >= LIMIT end - def validate_tag_name - errors.add(:name, :blank) if @name.blank? - errors.add(:name, :invalid) unless @name.match?(/\A(#{Tag::HASHTAG_NAME_RE})\z/i) - errors.add(:name, :taken) if FeaturedTag.by_name(@name).where(account_id: account_id).exists? + def validate_tag_uniqueness + errors.add(:name, :taken) if FeaturedTag.by_name(name).where(account_id: account_id).exists? end end diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index 64281d7b7..6edf7b4e9 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -67,7 +67,7 @@ en: domain: This can be the domain name that shows up in the e-mail address or the MX record it uses. They will be checked upon sign-up. with_dns_records: An attempt to resolve the given domain's DNS records will be made and the results will also be blocked featured_tag: - name: 'You might want to use one of these:' + name: 'Here are some of the hashtags you used the most recently:' filters: action: Chose which action to perform when a post matches the filter actions: diff --git a/db/migrate/20221104133904_add_name_to_featured_tags.rb b/db/migrate/20221104133904_add_name_to_featured_tags.rb new file mode 100644 index 000000000..7c8c8ebfb --- /dev/null +++ b/db/migrate/20221104133904_add_name_to_featured_tags.rb @@ -0,0 +1,5 @@ +class AddNameToFeaturedTags < ActiveRecord::Migration[6.1] + def change + add_column :featured_tags, :name, :string + end +end diff --git a/db/schema.rb b/db/schema.rb index 12ec37c11..09d07fcca 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2022_11_01_190723) do +ActiveRecord::Schema.define(version: 2022_11_04_133904) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -442,6 +442,7 @@ ActiveRecord::Schema.define(version: 2022_11_01_190723) do t.datetime "last_status_at" t.datetime "created_at", null: false t.datetime "updated_at", null: false + t.string "name" t.index ["account_id", "tag_id"], name: "index_featured_tags_on_account_id_and_tag_id", unique: true t.index ["tag_id"], name: "index_featured_tags_on_tag_id" end From e02812d5b63b4909fff9c0c7246e80745c4c703e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 4 Nov 2022 16:08:41 +0100 Subject: [PATCH 640/652] Add assets from Twemoji 14.0 (#19733) --- app/javascript/mastodon/features/emoji/emoji_map.json | 2 +- lib/tasks/emojis.rake | 4 ++-- public/emoji/1f1e7-1f1ea.svg | 2 +- public/emoji/1f1ee-1f1f3.svg | 2 +- public/emoji/1f3f3-fe0f-200d-1f308.svg | 2 +- public/emoji/1f50b.svg | 2 +- public/emoji/1f6dd.svg | 1 + public/emoji/1f6de.svg | 1 + public/emoji/1f6df.svg | 1 + public/emoji/1f7f0.svg | 1 + public/emoji/1f91d-1f3fb.svg | 1 + public/emoji/1f91d-1f3fc.svg | 1 + public/emoji/1f91d-1f3fd.svg | 1 + public/emoji/1f91d-1f3fe.svg | 1 + public/emoji/1f91d-1f3ff.svg | 1 + public/emoji/1f91d.svg | 2 +- public/emoji/1f921.svg | 2 +- public/emoji/1f979.svg | 1 + public/emoji/1f9cc.svg | 1 + public/emoji/1fa7b.svg | 1 + public/emoji/1fa7c.svg | 1 + public/emoji/1faa9.svg | 1 + public/emoji/1faaa.svg | 1 + public/emoji/1faab.svg | 1 + public/emoji/1faac.svg | 1 + public/emoji/1fab7.svg | 1 + public/emoji/1fab8.svg | 1 + public/emoji/1fab9.svg | 1 + public/emoji/1faba.svg | 1 + public/emoji/1fac3-1f3fb.svg | 1 + public/emoji/1fac3-1f3fc.svg | 1 + public/emoji/1fac3-1f3fd.svg | 1 + public/emoji/1fac3-1f3fe.svg | 1 + public/emoji/1fac3-1f3ff.svg | 1 + public/emoji/1fac3.svg | 1 + public/emoji/1fac4-1f3fb.svg | 1 + public/emoji/1fac4-1f3fc.svg | 1 + public/emoji/1fac4-1f3fd.svg | 1 + public/emoji/1fac4-1f3fe.svg | 1 + public/emoji/1fac4-1f3ff.svg | 1 + public/emoji/1fac4.svg | 1 + public/emoji/1fac5-1f3fb.svg | 1 + public/emoji/1fac5-1f3fc.svg | 1 + public/emoji/1fac5-1f3fd.svg | 1 + public/emoji/1fac5-1f3fe.svg | 1 + public/emoji/1fac5-1f3ff.svg | 1 + public/emoji/1fac5.svg | 1 + public/emoji/1fad7.svg | 1 + public/emoji/1fad8.svg | 1 + public/emoji/1fad9.svg | 1 + public/emoji/1fae0.svg | 1 + public/emoji/1fae1.svg | 1 + public/emoji/1fae2.svg | 1 + public/emoji/1fae3.svg | 1 + public/emoji/1fae4.svg | 1 + public/emoji/1fae5.svg | 1 + public/emoji/1fae6.svg | 1 + public/emoji/1fae7.svg | 1 + public/emoji/1faf0-1f3fb.svg | 1 + public/emoji/1faf0-1f3fc.svg | 1 + public/emoji/1faf0-1f3fd.svg | 1 + public/emoji/1faf0-1f3fe.svg | 1 + public/emoji/1faf0-1f3ff.svg | 1 + public/emoji/1faf0.svg | 1 + public/emoji/1faf1-1f3fb-200d-1faf2-1f3fc.svg | 1 + public/emoji/1faf1-1f3fb-200d-1faf2-1f3fd.svg | 1 + public/emoji/1faf1-1f3fb-200d-1faf2-1f3fe.svg | 1 + public/emoji/1faf1-1f3fb-200d-1faf2-1f3ff.svg | 1 + public/emoji/1faf1-1f3fb.svg | 1 + public/emoji/1faf1-1f3fc-200d-1faf2-1f3fb.svg | 1 + public/emoji/1faf1-1f3fc-200d-1faf2-1f3fd.svg | 1 + public/emoji/1faf1-1f3fc-200d-1faf2-1f3fe.svg | 1 + public/emoji/1faf1-1f3fc-200d-1faf2-1f3ff.svg | 1 + public/emoji/1faf1-1f3fc.svg | 1 + public/emoji/1faf1-1f3fd-200d-1faf2-1f3fb.svg | 1 + public/emoji/1faf1-1f3fd-200d-1faf2-1f3fc.svg | 1 + public/emoji/1faf1-1f3fd-200d-1faf2-1f3fe.svg | 1 + public/emoji/1faf1-1f3fd-200d-1faf2-1f3ff.svg | 1 + public/emoji/1faf1-1f3fd.svg | 1 + public/emoji/1faf1-1f3fe-200d-1faf2-1f3fb.svg | 1 + public/emoji/1faf1-1f3fe-200d-1faf2-1f3fc.svg | 1 + public/emoji/1faf1-1f3fe-200d-1faf2-1f3fd.svg | 1 + public/emoji/1faf1-1f3fe-200d-1faf2-1f3ff.svg | 1 + public/emoji/1faf1-1f3fe.svg | 1 + public/emoji/1faf1-1f3ff-200d-1faf2-1f3fb.svg | 1 + public/emoji/1faf1-1f3ff-200d-1faf2-1f3fc.svg | 1 + public/emoji/1faf1-1f3ff-200d-1faf2-1f3fd.svg | 1 + public/emoji/1faf1-1f3ff-200d-1faf2-1f3fe.svg | 1 + public/emoji/1faf1-1f3ff.svg | 1 + public/emoji/1faf1.svg | 1 + public/emoji/1faf2-1f3fb.svg | 1 + public/emoji/1faf2-1f3fc.svg | 1 + public/emoji/1faf2-1f3fd.svg | 1 + public/emoji/1faf2-1f3fe.svg | 1 + public/emoji/1faf2-1f3ff.svg | 1 + public/emoji/1faf2.svg | 1 + public/emoji/1faf3-1f3fb.svg | 1 + public/emoji/1faf3-1f3fc.svg | 1 + public/emoji/1faf3-1f3fd.svg | 1 + public/emoji/1faf3-1f3fe.svg | 1 + public/emoji/1faf3-1f3ff.svg | 1 + public/emoji/1faf3.svg | 1 + public/emoji/1faf4-1f3fb.svg | 1 + public/emoji/1faf4-1f3fc.svg | 1 + public/emoji/1faf4-1f3fd.svg | 1 + public/emoji/1faf4-1f3fe.svg | 1 + public/emoji/1faf4-1f3ff.svg | 1 + public/emoji/1faf4.svg | 1 + public/emoji/1faf5-1f3fb.svg | 1 + public/emoji/1faf5-1f3fc.svg | 1 + public/emoji/1faf5-1f3fd.svg | 1 + public/emoji/1faf5-1f3fe.svg | 1 + public/emoji/1faf5-1f3ff.svg | 1 + public/emoji/1faf5.svg | 1 + public/emoji/1faf6-1f3fb.svg | 1 + public/emoji/1faf6-1f3fc.svg | 1 + public/emoji/1faf6-1f3fd.svg | 1 + public/emoji/1faf6-1f3fe.svg | 1 + public/emoji/1faf6-1f3ff.svg | 1 + public/emoji/1faf6.svg | 1 + 120 files changed, 121 insertions(+), 9 deletions(-) create mode 100755 public/emoji/1f6dd.svg create mode 100755 public/emoji/1f6de.svg create mode 100755 public/emoji/1f6df.svg create mode 100755 public/emoji/1f7f0.svg create mode 100755 public/emoji/1f91d-1f3fb.svg create mode 100755 public/emoji/1f91d-1f3fc.svg create mode 100755 public/emoji/1f91d-1f3fd.svg create mode 100755 public/emoji/1f91d-1f3fe.svg create mode 100755 public/emoji/1f91d-1f3ff.svg create mode 100755 public/emoji/1f979.svg create mode 100755 public/emoji/1f9cc.svg create mode 100755 public/emoji/1fa7b.svg create mode 100755 public/emoji/1fa7c.svg create mode 100755 public/emoji/1faa9.svg create mode 100755 public/emoji/1faaa.svg create mode 100755 public/emoji/1faab.svg create mode 100755 public/emoji/1faac.svg create mode 100755 public/emoji/1fab7.svg create mode 100755 public/emoji/1fab8.svg create mode 100755 public/emoji/1fab9.svg create mode 100755 public/emoji/1faba.svg create mode 100755 public/emoji/1fac3-1f3fb.svg create mode 100755 public/emoji/1fac3-1f3fc.svg create mode 100755 public/emoji/1fac3-1f3fd.svg create mode 100755 public/emoji/1fac3-1f3fe.svg create mode 100755 public/emoji/1fac3-1f3ff.svg create mode 100755 public/emoji/1fac3.svg create mode 100755 public/emoji/1fac4-1f3fb.svg create mode 100755 public/emoji/1fac4-1f3fc.svg create mode 100755 public/emoji/1fac4-1f3fd.svg create mode 100755 public/emoji/1fac4-1f3fe.svg create mode 100755 public/emoji/1fac4-1f3ff.svg create mode 100755 public/emoji/1fac4.svg create mode 100755 public/emoji/1fac5-1f3fb.svg create mode 100755 public/emoji/1fac5-1f3fc.svg create mode 100755 public/emoji/1fac5-1f3fd.svg create mode 100755 public/emoji/1fac5-1f3fe.svg create mode 100755 public/emoji/1fac5-1f3ff.svg create mode 100755 public/emoji/1fac5.svg create mode 100755 public/emoji/1fad7.svg create mode 100755 public/emoji/1fad8.svg create mode 100755 public/emoji/1fad9.svg create mode 100755 public/emoji/1fae0.svg create mode 100755 public/emoji/1fae1.svg create mode 100755 public/emoji/1fae2.svg create mode 100755 public/emoji/1fae3.svg create mode 100755 public/emoji/1fae4.svg create mode 100755 public/emoji/1fae5.svg create mode 100755 public/emoji/1fae6.svg create mode 100755 public/emoji/1fae7.svg create mode 100755 public/emoji/1faf0-1f3fb.svg create mode 100755 public/emoji/1faf0-1f3fc.svg create mode 100755 public/emoji/1faf0-1f3fd.svg create mode 100755 public/emoji/1faf0-1f3fe.svg create mode 100755 public/emoji/1faf0-1f3ff.svg create mode 100755 public/emoji/1faf0.svg create mode 100755 public/emoji/1faf1-1f3fb-200d-1faf2-1f3fc.svg create mode 100755 public/emoji/1faf1-1f3fb-200d-1faf2-1f3fd.svg create mode 100755 public/emoji/1faf1-1f3fb-200d-1faf2-1f3fe.svg create mode 100755 public/emoji/1faf1-1f3fb-200d-1faf2-1f3ff.svg create mode 100755 public/emoji/1faf1-1f3fb.svg create mode 100755 public/emoji/1faf1-1f3fc-200d-1faf2-1f3fb.svg create mode 100755 public/emoji/1faf1-1f3fc-200d-1faf2-1f3fd.svg create mode 100755 public/emoji/1faf1-1f3fc-200d-1faf2-1f3fe.svg create mode 100755 public/emoji/1faf1-1f3fc-200d-1faf2-1f3ff.svg create mode 100755 public/emoji/1faf1-1f3fc.svg create mode 100755 public/emoji/1faf1-1f3fd-200d-1faf2-1f3fb.svg create mode 100755 public/emoji/1faf1-1f3fd-200d-1faf2-1f3fc.svg create mode 100755 public/emoji/1faf1-1f3fd-200d-1faf2-1f3fe.svg create mode 100755 public/emoji/1faf1-1f3fd-200d-1faf2-1f3ff.svg create mode 100755 public/emoji/1faf1-1f3fd.svg create mode 100755 public/emoji/1faf1-1f3fe-200d-1faf2-1f3fb.svg create mode 100755 public/emoji/1faf1-1f3fe-200d-1faf2-1f3fc.svg create mode 100755 public/emoji/1faf1-1f3fe-200d-1faf2-1f3fd.svg create mode 100755 public/emoji/1faf1-1f3fe-200d-1faf2-1f3ff.svg create mode 100755 public/emoji/1faf1-1f3fe.svg create mode 100755 public/emoji/1faf1-1f3ff-200d-1faf2-1f3fb.svg create mode 100755 public/emoji/1faf1-1f3ff-200d-1faf2-1f3fc.svg create mode 100755 public/emoji/1faf1-1f3ff-200d-1faf2-1f3fd.svg create mode 100755 public/emoji/1faf1-1f3ff-200d-1faf2-1f3fe.svg create mode 100755 public/emoji/1faf1-1f3ff.svg create mode 100755 public/emoji/1faf1.svg create mode 100755 public/emoji/1faf2-1f3fb.svg create mode 100755 public/emoji/1faf2-1f3fc.svg create mode 100755 public/emoji/1faf2-1f3fd.svg create mode 100755 public/emoji/1faf2-1f3fe.svg create mode 100755 public/emoji/1faf2-1f3ff.svg create mode 100755 public/emoji/1faf2.svg create mode 100755 public/emoji/1faf3-1f3fb.svg create mode 100755 public/emoji/1faf3-1f3fc.svg create mode 100755 public/emoji/1faf3-1f3fd.svg create mode 100755 public/emoji/1faf3-1f3fe.svg create mode 100755 public/emoji/1faf3-1f3ff.svg create mode 100755 public/emoji/1faf3.svg create mode 100755 public/emoji/1faf4-1f3fb.svg create mode 100755 public/emoji/1faf4-1f3fc.svg create mode 100755 public/emoji/1faf4-1f3fd.svg create mode 100755 public/emoji/1faf4-1f3fe.svg create mode 100755 public/emoji/1faf4-1f3ff.svg create mode 100755 public/emoji/1faf4.svg create mode 100755 public/emoji/1faf5-1f3fb.svg create mode 100755 public/emoji/1faf5-1f3fc.svg create mode 100755 public/emoji/1faf5-1f3fd.svg create mode 100755 public/emoji/1faf5-1f3fe.svg create mode 100755 public/emoji/1faf5-1f3ff.svg create mode 100755 public/emoji/1faf5.svg create mode 100755 public/emoji/1faf6-1f3fb.svg create mode 100755 public/emoji/1faf6-1f3fc.svg create mode 100755 public/emoji/1faf6-1f3fd.svg create mode 100755 public/emoji/1faf6-1f3fe.svg create mode 100755 public/emoji/1faf6-1f3ff.svg create mode 100755 public/emoji/1faf6.svg diff --git a/app/javascript/mastodon/features/emoji/emoji_map.json b/app/javascript/mastodon/features/emoji/emoji_map.json index 121fea2a5..64f6615b7 100644 --- a/app/javascript/mastodon/features/emoji/emoji_map.json +++ b/app/javascript/mastodon/features/emoji/emoji_map.json @@ -1 +1 @@ -{"😀":"1f600","😃":"1f603","😄":"1f604","😁":"1f601","😆":"1f606","😅":"1f605","🤣":"1f923","😂":"1f602","🙂":"1f642","🙃":"1f643","😉":"1f609","😊":"1f60a","😇":"1f607","🥰":"1f970","😍":"1f60d","🤩":"1f929","😘":"1f618","😗":"1f617","☺":"263a","😚":"1f61a","😙":"1f619","🥲":"1f972","😋":"1f60b","😛":"1f61b","😜":"1f61c","🤪":"1f92a","😝":"1f61d","🤑":"1f911","🤗":"1f917","🤭":"1f92d","🤫":"1f92b","🤔":"1f914","🤐":"1f910","🤨":"1f928","😐":"1f610","😑":"1f611","😶":"1f636","😏":"1f60f","😒":"1f612","🙄":"1f644","😬":"1f62c","🤥":"1f925","😌":"1f60c","😔":"1f614","😪":"1f62a","🤤":"1f924","😴":"1f634","😷":"1f637","🤒":"1f912","🤕":"1f915","🤢":"1f922","🤮":"1f92e","🤧":"1f927","🥵":"1f975","🥶":"1f976","🥴":"1f974","😵":"1f635","🤯":"1f92f","🤠":"1f920","🥳":"1f973","🥸":"1f978","😎":"1f60e","🤓":"1f913","🧐":"1f9d0","😕":"1f615","😟":"1f61f","🙁":"1f641","☹":"2639","😮":"1f62e","😯":"1f62f","😲":"1f632","😳":"1f633","🥺":"1f97a","😦":"1f626","😧":"1f627","😨":"1f628","😰":"1f630","😥":"1f625","😢":"1f622","😭":"1f62d","😱":"1f631","😖":"1f616","😣":"1f623","😞":"1f61e","😓":"1f613","😩":"1f629","😫":"1f62b","🥱":"1f971","😤":"1f624","😡":"1f621","😠":"1f620","🤬":"1f92c","😈":"1f608","👿":"1f47f","💀":"1f480","☠":"2620","💩":"1f4a9","🤡":"1f921","👹":"1f479","👺":"1f47a","👻":"1f47b","👽":"1f47d","👾":"1f47e","🤖":"1f916","😺":"1f63a","😸":"1f638","😹":"1f639","😻":"1f63b","😼":"1f63c","😽":"1f63d","🙀":"1f640","😿":"1f63f","😾":"1f63e","🙈":"1f648","🙉":"1f649","🙊":"1f64a","💋":"1f48b","💌":"1f48c","💘":"1f498","💝":"1f49d","💖":"1f496","💗":"1f497","💓":"1f493","💞":"1f49e","💕":"1f495","💟":"1f49f","❣":"2763","💔":"1f494","❤":"2764","🧡":"1f9e1","💛":"1f49b","💚":"1f49a","💙":"1f499","💜":"1f49c","🤎":"1f90e","🖤":"1f5a4","🤍":"1f90d","💯":"1f4af","💢":"1f4a2","💥":"1f4a5","💫":"1f4ab","💦":"1f4a6","💨":"1f4a8","🕳":"1f573","💣":"1f4a3","💬":"1f4ac","🗨":"1f5e8","🗯":"1f5ef","💭":"1f4ad","💤":"1f4a4","👋":"1f44b","🤚":"1f91a","🖐":"1f590","✋":"270b","🖖":"1f596","👌":"1f44c","🤌":"1f90c","🤏":"1f90f","✌":"270c","🤞":"1f91e","🤟":"1f91f","🤘":"1f918","🤙":"1f919","👈":"1f448","👉":"1f449","👆":"1f446","🖕":"1f595","👇":"1f447","☝":"261d","👍":"1f44d","👎":"1f44e","✊":"270a","👊":"1f44a","🤛":"1f91b","🤜":"1f91c","👏":"1f44f","🙌":"1f64c","👐":"1f450","🤲":"1f932","🤝":"1f91d","🙏":"1f64f","✍":"270d","💅":"1f485","🤳":"1f933","💪":"1f4aa","🦾":"1f9be","🦿":"1f9bf","🦵":"1f9b5","🦶":"1f9b6","👂":"1f442","🦻":"1f9bb","👃":"1f443","🧠":"1f9e0","🫀":"1fac0","🫁":"1fac1","🦷":"1f9b7","🦴":"1f9b4","👀":"1f440","👁":"1f441","👅":"1f445","👄":"1f444","👶":"1f476","🧒":"1f9d2","👦":"1f466","👧":"1f467","🧑":"1f9d1","👱":"1f471","👨":"1f468","🧔":"1f9d4","👩":"1f469","🧓":"1f9d3","👴":"1f474","👵":"1f475","🙍":"1f64d","🙎":"1f64e","🙅":"1f645","🙆":"1f646","💁":"1f481","🙋":"1f64b","🧏":"1f9cf","🙇":"1f647","🤦":"1f926","🤷":"1f937","👮":"1f46e","🕵":"1f575","💂":"1f482","🥷":"1f977","👷":"1f477","🤴":"1f934","👸":"1f478","👳":"1f473","👲":"1f472","🧕":"1f9d5","🤵":"1f935","👰":"1f470","🤰":"1f930","🤱":"1f931","👼":"1f47c","🎅":"1f385","🤶":"1f936","🦸":"1f9b8","🦹":"1f9b9","🧙":"1f9d9","🧚":"1f9da","🧛":"1f9db","🧜":"1f9dc","🧝":"1f9dd","🧞":"1f9de","🧟":"1f9df","💆":"1f486","💇":"1f487","🚶":"1f6b6","🧍":"1f9cd","🧎":"1f9ce","🏃":"1f3c3","💃":"1f483","🕺":"1f57a","🕴":"1f574","👯":"1f46f","🧖":"1f9d6","🧗":"1f9d7","🤺":"1f93a","🏇":"1f3c7","⛷":"26f7","🏂":"1f3c2","🏌":"1f3cc","🏄":"1f3c4","🚣":"1f6a3","🏊":"1f3ca","⛹":"26f9","🏋":"1f3cb","🚴":"1f6b4","🚵":"1f6b5","🤸":"1f938","🤼":"1f93c","🤽":"1f93d","🤾":"1f93e","🤹":"1f939","🧘":"1f9d8","🛀":"1f6c0","🛌":"1f6cc","👭":"1f46d","👫":"1f46b","👬":"1f46c","💏":"1f48f","💑":"1f491","👪":"1f46a","🗣":"1f5e3","👤":"1f464","👥":"1f465","🫂":"1fac2","👣":"1f463","🏻":"1f463","🏼":"1f463","🏽":"1f463","🏾":"1f463","🏿":"1f463","🦰":"1f463","🦱":"1f463","🦳":"1f463","🦲":"1f463","🐵":"1f435","🐒":"1f412","🦍":"1f98d","🦧":"1f9a7","🐶":"1f436","🐕":"1f415","🦮":"1f9ae","🐩":"1f429","🐺":"1f43a","🦊":"1f98a","🦝":"1f99d","🐱":"1f431","🐈":"1f408","🦁":"1f981","🐯":"1f42f","🐅":"1f405","🐆":"1f406","🐴":"1f434","🐎":"1f40e","🦄":"1f984","🦓":"1f993","🦌":"1f98c","🦬":"1f9ac","🐮":"1f42e","🐂":"1f402","🐃":"1f403","🐄":"1f404","🐷":"1f437","🐖":"1f416","🐗":"1f417","🐽":"1f43d","🐏":"1f40f","🐑":"1f411","🐐":"1f410","🐪":"1f42a","🐫":"1f42b","🦙":"1f999","🦒":"1f992","🐘":"1f418","🦣":"1f9a3","🦏":"1f98f","🦛":"1f99b","🐭":"1f42d","🐁":"1f401","🐀":"1f400","🐹":"1f439","🐰":"1f430","🐇":"1f407","🐿":"1f43f","🦫":"1f9ab","🦔":"1f994","🦇":"1f987","🐻":"1f43b","🐨":"1f428","🐼":"1f43c","🦥":"1f9a5","🦦":"1f9a6","🦨":"1f9a8","🦘":"1f998","🦡":"1f9a1","🐾":"1f43e","🦃":"1f983","🐔":"1f414","🐓":"1f413","🐣":"1f423","🐤":"1f424","🐥":"1f425","🐦":"1f426","🐧":"1f427","🕊":"1f54a","🦅":"1f985","🦆":"1f986","🦢":"1f9a2","🦉":"1f989","🦤":"1f9a4","🪶":"1fab6","🦩":"1f9a9","🦚":"1f99a","🦜":"1f99c","🐸":"1f438","🐊":"1f40a","🐢":"1f422","🦎":"1f98e","🐍":"1f40d","🐲":"1f432","🐉":"1f409","🦕":"1f995","🦖":"1f996","🐳":"1f433","🐋":"1f40b","🐬":"1f42c","🦭":"1f9ad","🐟":"1f41f","🐠":"1f420","🐡":"1f421","🦈":"1f988","🐙":"1f419","🐚":"1f41a","🐌":"1f40c","🦋":"1f98b","🐛":"1f41b","🐜":"1f41c","🐝":"1f41d","🪲":"1fab2","🐞":"1f41e","🦗":"1f997","🪳":"1fab3","🕷":"1f577","🕸":"1f578","🦂":"1f982","🦟":"1f99f","🪰":"1fab0","🪱":"1fab1","🦠":"1f9a0","💐":"1f490","🌸":"1f338","💮":"1f4ae","🏵":"1f3f5","🌹":"1f339","🥀":"1f940","🌺":"1f33a","🌻":"1f33b","🌼":"1f33c","🌷":"1f337","🌱":"1f331","🪴":"1fab4","🌲":"1f332","🌳":"1f333","🌴":"1f334","🌵":"1f335","🌾":"1f33e","🌿":"1f33f","☘":"2618","🍀":"1f340","🍁":"1f341","🍂":"1f342","🍃":"1f343","🍇":"1f347","🍈":"1f348","🍉":"1f349","🍊":"1f34a","🍋":"1f34b","🍌":"1f34c","🍍":"1f34d","🥭":"1f96d","🍎":"1f34e","🍏":"1f34f","🍐":"1f350","🍑":"1f351","🍒":"1f352","🍓":"1f353","🫐":"1fad0","🥝":"1f95d","🍅":"1f345","🫒":"1fad2","🥥":"1f965","🥑":"1f951","🍆":"1f346","🥔":"1f954","🥕":"1f955","🌽":"1f33d","🌶":"1f336","🫑":"1fad1","🥒":"1f952","🥬":"1f96c","🥦":"1f966","🧄":"1f9c4","🧅":"1f9c5","🍄":"1f344","🥜":"1f95c","🌰":"1f330","🍞":"1f35e","🥐":"1f950","🥖":"1f956","🫓":"1fad3","🥨":"1f968","🥯":"1f96f","🥞":"1f95e","🧇":"1f9c7","🧀":"1f9c0","🍖":"1f356","🍗":"1f357","🥩":"1f969","🥓":"1f953","🍔":"1f354","🍟":"1f35f","🍕":"1f355","🌭":"1f32d","🥪":"1f96a","🌮":"1f32e","🌯":"1f32f","🫔":"1fad4","🥙":"1f959","🧆":"1f9c6","🥚":"1f95a","🍳":"1f373","🥘":"1f958","🍲":"1f372","🫕":"1fad5","🥣":"1f963","🥗":"1f957","🍿":"1f37f","🧈":"1f9c8","🧂":"1f9c2","🥫":"1f96b","🍱":"1f371","🍘":"1f358","🍙":"1f359","🍚":"1f35a","🍛":"1f35b","🍜":"1f35c","🍝":"1f35d","🍠":"1f360","🍢":"1f362","🍣":"1f363","🍤":"1f364","🍥":"1f365","🥮":"1f96e","🍡":"1f361","🥟":"1f95f","🥠":"1f960","🥡":"1f961","🦀":"1f980","🦞":"1f99e","🦐":"1f990","🦑":"1f991","🦪":"1f9aa","🍦":"1f366","🍧":"1f367","🍨":"1f368","🍩":"1f369","🍪":"1f36a","🎂":"1f382","🍰":"1f370","🧁":"1f9c1","🥧":"1f967","🍫":"1f36b","🍬":"1f36c","🍭":"1f36d","🍮":"1f36e","🍯":"1f36f","🍼":"1f37c","🥛":"1f95b","☕":"2615","🫖":"1fad6","🍵":"1f375","🍶":"1f376","🍾":"1f37e","🍷":"1f377","🍸":"1f378","🍹":"1f379","🍺":"1f37a","🍻":"1f37b","🥂":"1f942","🥃":"1f943","🥤":"1f964","🧋":"1f9cb","🧃":"1f9c3","🧉":"1f9c9","🧊":"1f9ca","🥢":"1f962","🍽":"1f37d","🍴":"1f374","🥄":"1f944","🔪":"1f52a","🏺":"1f3fa","🌍":"1f30d","🌎":"1f30e","🌏":"1f30f","🌐":"1f310","🗺":"1f5fa","🗾":"1f5fe","🧭":"1f9ed","🏔":"1f3d4","⛰":"26f0","🌋":"1f30b","🗻":"1f5fb","🏕":"1f3d5","🏖":"1f3d6","🏜":"1f3dc","🏝":"1f3dd","🏞":"1f3de","🏟":"1f3df","🏛":"1f3db","🏗":"1f3d7","🧱":"1f9f1","🪨":"1faa8","🪵":"1fab5","🛖":"1f6d6","🏘":"1f3d8","🏚":"1f3da","🏠":"1f3e0","🏡":"1f3e1","🏢":"1f3e2","🏣":"1f3e3","🏤":"1f3e4","🏥":"1f3e5","🏦":"1f3e6","🏨":"1f3e8","🏩":"1f3e9","🏪":"1f3ea","🏫":"1f3eb","🏬":"1f3ec","🏭":"1f3ed","🏯":"1f3ef","🏰":"1f3f0","💒":"1f492","🗼":"1f5fc","🗽":"1f5fd","⛪":"26ea","🕌":"1f54c","🛕":"1f6d5","🕍":"1f54d","⛩":"26e9","🕋":"1f54b","⛲":"26f2","⛺":"26fa","🌁":"1f301","🌃":"1f303","🏙":"1f3d9","🌄":"1f304","🌅":"1f305","🌆":"1f306","🌇":"1f307","🌉":"1f309","♨":"2668","🎠":"1f3a0","🎡":"1f3a1","🎢":"1f3a2","💈":"1f488","🎪":"1f3aa","🚂":"1f682","🚃":"1f683","🚄":"1f684","🚅":"1f685","🚆":"1f686","🚇":"1f687","🚈":"1f688","🚉":"1f689","🚊":"1f68a","🚝":"1f69d","🚞":"1f69e","🚋":"1f68b","🚌":"1f68c","🚍":"1f68d","🚎":"1f68e","🚐":"1f690","🚑":"1f691","🚒":"1f692","🚓":"1f693","🚔":"1f694","🚕":"1f695","🚖":"1f696","🚗":"1f697","🚘":"1f698","🚙":"1f699","🛻":"1f6fb","🚚":"1f69a","🚛":"1f69b","🚜":"1f69c","🏎":"1f3ce","🏍":"1f3cd","🛵":"1f6f5","🦽":"1f9bd","🦼":"1f9bc","🛺":"1f6fa","🚲":"1f6b2","🛴":"1f6f4","🛹":"1f6f9","🛼":"1f6fc","🚏":"1f68f","🛣":"1f6e3","🛤":"1f6e4","🛢":"1f6e2","⛽":"26fd","🚨":"1f6a8","🚥":"1f6a5","🚦":"1f6a6","🛑":"1f6d1","🚧":"1f6a7","⚓":"2693","⛵":"26f5","🛶":"1f6f6","🚤":"1f6a4","🛳":"1f6f3","⛴":"26f4","🛥":"1f6e5","🚢":"1f6a2","✈":"2708","🛩":"1f6e9","🛫":"1f6eb","🛬":"1f6ec","🪂":"1fa82","💺":"1f4ba","🚁":"1f681","🚟":"1f69f","🚠":"1f6a0","🚡":"1f6a1","🛰":"1f6f0","🚀":"1f680","🛸":"1f6f8","🛎":"1f6ce","🧳":"1f9f3","⌛":"231b","⏳":"23f3","⌚":"231a","⏰":"23f0","⏱":"23f1","⏲":"23f2","🕰":"1f570","🕛":"1f55b","🕧":"1f567","🕐":"1f550","🕜":"1f55c","🕑":"1f551","🕝":"1f55d","🕒":"1f552","🕞":"1f55e","🕓":"1f553","🕟":"1f55f","🕔":"1f554","🕠":"1f560","🕕":"1f555","🕡":"1f561","🕖":"1f556","🕢":"1f562","🕗":"1f557","🕣":"1f563","🕘":"1f558","🕤":"1f564","🕙":"1f559","🕥":"1f565","🕚":"1f55a","🕦":"1f566","🌑":"1f311","🌒":"1f312","🌓":"1f313","🌔":"1f314","🌕":"1f315","🌖":"1f316","🌗":"1f317","🌘":"1f318","🌙":"1f319","🌚":"1f31a","🌛":"1f31b","🌜":"1f31c","🌡":"1f321","☀":"2600","🌝":"1f31d","🌞":"1f31e","🪐":"1fa90","⭐":"2b50","🌟":"1f31f","🌠":"1f320","🌌":"1f30c","☁":"2601","⛅":"26c5","⛈":"26c8","🌤":"1f324","🌥":"1f325","🌦":"1f326","🌧":"1f327","🌨":"1f328","🌩":"1f329","🌪":"1f32a","🌫":"1f32b","🌬":"1f32c","🌀":"1f300","🌈":"1f308","🌂":"1f302","☂":"2602","☔":"2614","⛱":"26f1","⚡":"26a1","❄":"2744","☃":"2603","⛄":"26c4","☄":"2604","🔥":"1f525","💧":"1f4a7","🌊":"1f30a","🎃":"1f383","🎄":"1f384","🎆":"1f386","🎇":"1f387","🧨":"1f9e8","✨":"2728","🎈":"1f388","🎉":"1f389","🎊":"1f38a","🎋":"1f38b","🎍":"1f38d","🎎":"1f38e","🎏":"1f38f","🎐":"1f390","🎑":"1f391","🧧":"1f9e7","🎀":"1f380","🎁":"1f381","🎗":"1f397","🎟":"1f39f","🎫":"1f3ab","🎖":"1f396","🏆":"1f3c6","🏅":"1f3c5","🥇":"1f947","🥈":"1f948","🥉":"1f949","⚽":"26bd","⚾":"26be","🥎":"1f94e","🏀":"1f3c0","🏐":"1f3d0","🏈":"1f3c8","🏉":"1f3c9","🎾":"1f3be","🥏":"1f94f","🎳":"1f3b3","🏏":"1f3cf","🏑":"1f3d1","🏒":"1f3d2","🥍":"1f94d","🏓":"1f3d3","🏸":"1f3f8","🥊":"1f94a","🥋":"1f94b","🥅":"1f945","⛳":"26f3","⛸":"26f8","🎣":"1f3a3","🤿":"1f93f","🎽":"1f3bd","🎿":"1f3bf","🛷":"1f6f7","🥌":"1f94c","🎯":"1f3af","🪀":"1fa80","🪁":"1fa81","🎱":"1f3b1","🔮":"1f52e","🪄":"1fa84","🧿":"1f9ff","🎮":"1f3ae","🕹":"1f579","🎰":"1f3b0","🎲":"1f3b2","🧩":"1f9e9","🧸":"1f9f8","🪅":"1fa85","🪆":"1fa86","♠":"2660","♥":"2665","♦":"2666","♣":"2663","♟":"265f","🃏":"1f0cf","🀄":"1f004","🎴":"1f3b4","🎭":"1f3ad","🖼":"1f5bc","🎨":"1f3a8","🧵":"1f9f5","🪡":"1faa1","🧶":"1f9f6","🪢":"1faa2","👓":"1f453","🕶":"1f576","🥽":"1f97d","🥼":"1f97c","🦺":"1f9ba","👔":"1f454","👕":"1f455","👖":"1f456","🧣":"1f9e3","🧤":"1f9e4","🧥":"1f9e5","🧦":"1f9e6","👗":"1f457","👘":"1f458","🥻":"1f97b","🩱":"1fa71","🩲":"1fa72","🩳":"1fa73","👙":"1f459","👚":"1f45a","👛":"1f45b","👜":"1f45c","👝":"1f45d","🛍":"1f6cd","🎒":"1f392","🩴":"1fa74","👞":"1f45e","👟":"1f45f","🥾":"1f97e","🥿":"1f97f","👠":"1f460","👡":"1f461","🩰":"1fa70","👢":"1f462","👑":"1f451","👒":"1f452","🎩":"1f3a9","🎓":"1f393","🧢":"1f9e2","🪖":"1fa96","⛑":"26d1","📿":"1f4ff","💄":"1f484","💍":"1f48d","💎":"1f48e","🔇":"1f507","🔈":"1f508","🔉":"1f509","🔊":"1f50a","📢":"1f4e2","📣":"1f4e3","📯":"1f4ef","🔔":"1f514","🔕":"1f515","🎼":"1f3bc","🎵":"1f3b5","🎶":"1f3b6","🎙":"1f399","🎚":"1f39a","🎛":"1f39b","🎤":"1f3a4","🎧":"1f3a7","📻":"1f4fb","🎷":"1f3b7","🪗":"1fa97","🎸":"1f3b8","🎹":"1f3b9","🎺":"1f3ba","🎻":"1f3bb","🪕":"1fa95","🥁":"1f941","🪘":"1fa98","📱":"1f4f1","📲":"1f4f2","☎":"260e","📞":"1f4de","📟":"1f4df","📠":"1f4e0","🔋":"1f50b","🔌":"1f50c","💻":"1f4bb","🖥":"1f5a5","🖨":"1f5a8","⌨":"2328","🖱":"1f5b1","🖲":"1f5b2","💽":"1f4bd","💾":"1f4be","💿":"1f4bf","📀":"1f4c0","🧮":"1f9ee","🎥":"1f3a5","🎞":"1f39e","📽":"1f4fd","🎬":"1f3ac","📺":"1f4fa","📷":"1f4f7","📸":"1f4f8","📹":"1f4f9","📼":"1f4fc","🔍":"1f50d","🔎":"1f50e","🕯":"1f56f","💡":"1f4a1","🔦":"1f526","🏮":"1f3ee","🪔":"1fa94","📔":"1f4d4","📕":"1f4d5","📖":"1f4d6","📗":"1f4d7","📘":"1f4d8","📙":"1f4d9","📚":"1f4da","📓":"1f4d3","📒":"1f4d2","📃":"1f4c3","📜":"1f4dc","📄":"1f4c4","📰":"1f4f0","🗞":"1f5de","📑":"1f4d1","🔖":"1f516","🏷":"1f3f7","💰":"1f4b0","🪙":"1fa99","💴":"1f4b4","💵":"1f4b5","💶":"1f4b6","💷":"1f4b7","💸":"1f4b8","💳":"1f4b3","🧾":"1f9fe","💹":"1f4b9","✉":"2709","📧":"1f4e7","📨":"1f4e8","📩":"1f4e9","📤":"1f4e4","📥":"1f4e5","📦":"1f4e6","📫":"1f4eb","📪":"1f4ea","📬":"1f4ec","📭":"1f4ed","📮":"1f4ee","🗳":"1f5f3","✏":"270f","✒":"2712","🖋":"1f58b","🖊":"1f58a","🖌":"1f58c","🖍":"1f58d","📝":"1f4dd","💼":"1f4bc","📁":"1f4c1","📂":"1f4c2","🗂":"1f5c2","📅":"1f4c5","📆":"1f4c6","🗒":"1f5d2","🗓":"1f5d3","📇":"1f4c7","📈":"1f4c8","📉":"1f4c9","📊":"1f4ca","📋":"1f4cb","📌":"1f4cc","📍":"1f4cd","📎":"1f4ce","🖇":"1f587","📏":"1f4cf","📐":"1f4d0","✂":"2702","🗃":"1f5c3","🗄":"1f5c4","🗑":"1f5d1","🔒":"1f512","🔓":"1f513","🔏":"1f50f","🔐":"1f510","🔑":"1f511","🗝":"1f5dd","🔨":"1f528","🪓":"1fa93","⛏":"26cf","⚒":"2692","🛠":"1f6e0","🗡":"1f5e1","⚔":"2694","🔫":"1f52b","🪃":"1fa83","🏹":"1f3f9","🛡":"1f6e1","🪚":"1fa9a","🔧":"1f527","🪛":"1fa9b","🔩":"1f529","⚙":"2699","🗜":"1f5dc","⚖":"2696","🦯":"1f9af","🔗":"1f517","⛓":"26d3","🪝":"1fa9d","🧰":"1f9f0","🧲":"1f9f2","🪜":"1fa9c","⚗":"2697","🧪":"1f9ea","🧫":"1f9eb","🧬":"1f9ec","🔬":"1f52c","🔭":"1f52d","📡":"1f4e1","💉":"1f489","🩸":"1fa78","💊":"1f48a","🩹":"1fa79","🩺":"1fa7a","🚪":"1f6aa","🛗":"1f6d7","🪞":"1fa9e","🪟":"1fa9f","🛏":"1f6cf","🛋":"1f6cb","🪑":"1fa91","🚽":"1f6bd","🪠":"1faa0","🚿":"1f6bf","🛁":"1f6c1","🪤":"1faa4","🪒":"1fa92","🧴":"1f9f4","🧷":"1f9f7","🧹":"1f9f9","🧺":"1f9fa","🧻":"1f9fb","🪣":"1faa3","🧼":"1f9fc","🪥":"1faa5","🧽":"1f9fd","🧯":"1f9ef","🛒":"1f6d2","🚬":"1f6ac","⚰":"26b0","🪦":"1faa6","⚱":"26b1","🗿":"1f5ff","🪧":"1faa7","🏧":"1f3e7","🚮":"1f6ae","🚰":"1f6b0","♿":"267f","🚹":"1f6b9","🚺":"1f6ba","🚻":"1f6bb","🚼":"1f6bc","🚾":"1f6be","🛂":"1f6c2","🛃":"1f6c3","🛄":"1f6c4","🛅":"1f6c5","⚠":"26a0","🚸":"1f6b8","⛔":"26d4","🚫":"1f6ab","🚳":"1f6b3","🚭":"1f6ad","🚯":"1f6af","🚱":"1f6b1","🚷":"1f6b7","📵":"1f4f5","🔞":"1f51e","☢":"2622","☣":"2623","⬆":"2b06","↗":"2197","➡":"27a1","↘":"2198","⬇":"2b07","↙":"2199","⬅":"2b05","↖":"2196","↕":"2195","↔":"2194","↩":"21a9","↪":"21aa","⤴":"2934","⤵":"2935","🔃":"1f503","🔄":"1f504","🔙":"1f519","🔚":"1f51a","🔛":"1f51b","🔜":"1f51c","🔝":"1f51d","🛐":"1f6d0","⚛":"269b","🕉":"1f549","✡":"2721","☸":"2638","☯":"262f","✝":"271d","☦":"2626","☪":"262a","☮":"262e","🕎":"1f54e","🔯":"1f52f","♈":"2648","♉":"2649","♊":"264a","♋":"264b","♌":"264c","♍":"264d","♎":"264e","♏":"264f","♐":"2650","♑":"2651","♒":"2652","♓":"2653","⛎":"26ce","🔀":"1f500","🔁":"1f501","🔂":"1f502","▶":"25b6","⏩":"23e9","⏭":"23ed","⏯":"23ef","◀":"25c0","⏪":"23ea","⏮":"23ee","🔼":"1f53c","⏫":"23eb","🔽":"1f53d","⏬":"23ec","⏸":"23f8","⏹":"23f9","⏺":"23fa","⏏":"23cf","🎦":"1f3a6","🔅":"1f505","🔆":"1f506","📶":"1f4f6","📳":"1f4f3","📴":"1f4f4","♀":"2640","♂":"2642","⚧":"26a7","✖":"2716","➕":"2795","➖":"2796","➗":"2797","♾":"267e","‼":"203c","⁉":"2049","❓":"2753","❔":"2754","❕":"2755","❗":"2757","〰":"3030","💱":"1f4b1","💲":"1f4b2","⚕":"2695","♻":"267b","⚜":"269c","🔱":"1f531","📛":"1f4db","🔰":"1f530","⭕":"2b55","✅":"2705","☑":"2611","✔":"2714","❌":"274c","❎":"274e","➰":"27b0","➿":"27bf","〽":"303d","✳":"2733","✴":"2734","❇":"2747","©":"a9","®":"ae","™":"2122","🔟":"1f51f","🔠":"1f520","🔡":"1f521","🔢":"1f522","🔣":"1f523","🔤":"1f524","🅰":"1f170","🆎":"1f18e","🅱":"1f171","🆑":"1f191","🆒":"1f192","🆓":"1f193","ℹ":"2139","🆔":"1f194","Ⓜ":"24c2","🆕":"1f195","🆖":"1f196","🅾":"1f17e","🆗":"1f197","🅿":"1f17f","🆘":"1f198","🆙":"1f199","🆚":"1f19a","🈁":"1f201","🈂":"1f202","🈷":"1f237","🈶":"1f236","🈯":"1f22f","🉐":"1f250","🈹":"1f239","🈚":"1f21a","🈲":"1f232","🉑":"1f251","🈸":"1f238","🈴":"1f234","🈳":"1f233","㊗":"3297","㊙":"3299","🈺":"1f23a","🈵":"1f235","🔴":"1f534","🟠":"1f7e0","🟡":"1f7e1","🟢":"1f7e2","🔵":"1f535","🟣":"1f7e3","🟤":"1f7e4","⚫":"26ab","⚪":"26aa","🟥":"1f7e5","🟧":"1f7e7","🟨":"1f7e8","🟩":"1f7e9","🟦":"1f7e6","🟪":"1f7ea","🟫":"1f7eb","⬛":"2b1b","⬜":"2b1c","◼":"25fc","◻":"25fb","◾":"25fe","◽":"25fd","▪":"25aa","▫":"25ab","🔶":"1f536","🔷":"1f537","🔸":"1f538","🔹":"1f539","🔺":"1f53a","🔻":"1f53b","💠":"1f4a0","🔘":"1f518","🔳":"1f533","🔲":"1f532","🏁":"1f3c1","🚩":"1f6a9","🎌":"1f38c","🏴":"1f3f4","🏳":"1f3f3","☺️":"263a","☹️":"2639","☠️":"2620","❣️":"2763","❤️":"2764","🕳️":"1f573","🗨️":"1f5e8","🗯️":"1f5ef","👋🏻":"1f44b-1f3fb","👋🏼":"1f44b-1f3fc","👋🏽":"1f44b-1f3fd","👋🏾":"1f44b-1f3fe","👋🏿":"1f44b-1f3ff","🤚🏻":"1f91a-1f3fb","🤚🏼":"1f91a-1f3fc","🤚🏽":"1f91a-1f3fd","🤚🏾":"1f91a-1f3fe","🤚🏿":"1f91a-1f3ff","🖐️":"1f590","🖐🏻":"1f590-1f3fb","🖐🏼":"1f590-1f3fc","🖐🏽":"1f590-1f3fd","🖐🏾":"1f590-1f3fe","🖐🏿":"1f590-1f3ff","✋🏻":"270b-1f3fb","✋🏼":"270b-1f3fc","✋🏽":"270b-1f3fd","✋🏾":"270b-1f3fe","✋🏿":"270b-1f3ff","🖖🏻":"1f596-1f3fb","🖖🏼":"1f596-1f3fc","🖖🏽":"1f596-1f3fd","🖖🏾":"1f596-1f3fe","🖖🏿":"1f596-1f3ff","👌🏻":"1f44c-1f3fb","👌🏼":"1f44c-1f3fc","👌🏽":"1f44c-1f3fd","👌🏾":"1f44c-1f3fe","👌🏿":"1f44c-1f3ff","🤌🏻":"1f90c-1f3fb","🤌🏼":"1f90c-1f3fc","🤌🏽":"1f90c-1f3fd","🤌🏾":"1f90c-1f3fe","🤌🏿":"1f90c-1f3ff","🤏🏻":"1f90f-1f3fb","🤏🏼":"1f90f-1f3fc","🤏🏽":"1f90f-1f3fd","🤏🏾":"1f90f-1f3fe","🤏🏿":"1f90f-1f3ff","✌️":"270c","✌🏻":"270c-1f3fb","✌🏼":"270c-1f3fc","✌🏽":"270c-1f3fd","✌🏾":"270c-1f3fe","✌🏿":"270c-1f3ff","🤞🏻":"1f91e-1f3fb","🤞🏼":"1f91e-1f3fc","🤞🏽":"1f91e-1f3fd","🤞🏾":"1f91e-1f3fe","🤞🏿":"1f91e-1f3ff","🤟🏻":"1f91f-1f3fb","🤟🏼":"1f91f-1f3fc","🤟🏽":"1f91f-1f3fd","🤟🏾":"1f91f-1f3fe","🤟🏿":"1f91f-1f3ff","🤘🏻":"1f918-1f3fb","🤘🏼":"1f918-1f3fc","🤘🏽":"1f918-1f3fd","🤘🏾":"1f918-1f3fe","🤘🏿":"1f918-1f3ff","🤙🏻":"1f919-1f3fb","🤙🏼":"1f919-1f3fc","🤙🏽":"1f919-1f3fd","🤙🏾":"1f919-1f3fe","🤙🏿":"1f919-1f3ff","👈🏻":"1f448-1f3fb","👈🏼":"1f448-1f3fc","👈🏽":"1f448-1f3fd","👈🏾":"1f448-1f3fe","👈🏿":"1f448-1f3ff","👉🏻":"1f449-1f3fb","👉🏼":"1f449-1f3fc","👉🏽":"1f449-1f3fd","👉🏾":"1f449-1f3fe","👉🏿":"1f449-1f3ff","👆🏻":"1f446-1f3fb","👆🏼":"1f446-1f3fc","👆🏽":"1f446-1f3fd","👆🏾":"1f446-1f3fe","👆🏿":"1f446-1f3ff","🖕🏻":"1f595-1f3fb","🖕🏼":"1f595-1f3fc","🖕🏽":"1f595-1f3fd","🖕🏾":"1f595-1f3fe","🖕🏿":"1f595-1f3ff","👇🏻":"1f447-1f3fb","👇🏼":"1f447-1f3fc","👇🏽":"1f447-1f3fd","👇🏾":"1f447-1f3fe","👇🏿":"1f447-1f3ff","☝️":"261d","☝🏻":"261d-1f3fb","☝🏼":"261d-1f3fc","☝🏽":"261d-1f3fd","☝🏾":"261d-1f3fe","☝🏿":"261d-1f3ff","👍🏻":"1f44d-1f3fb","👍🏼":"1f44d-1f3fc","👍🏽":"1f44d-1f3fd","👍🏾":"1f44d-1f3fe","👍🏿":"1f44d-1f3ff","👎🏻":"1f44e-1f3fb","👎🏼":"1f44e-1f3fc","👎🏽":"1f44e-1f3fd","👎🏾":"1f44e-1f3fe","👎🏿":"1f44e-1f3ff","✊🏻":"270a-1f3fb","✊🏼":"270a-1f3fc","✊🏽":"270a-1f3fd","✊🏾":"270a-1f3fe","✊🏿":"270a-1f3ff","👊🏻":"1f44a-1f3fb","👊🏼":"1f44a-1f3fc","👊🏽":"1f44a-1f3fd","👊🏾":"1f44a-1f3fe","👊🏿":"1f44a-1f3ff","🤛🏻":"1f91b-1f3fb","🤛🏼":"1f91b-1f3fc","🤛🏽":"1f91b-1f3fd","🤛🏾":"1f91b-1f3fe","🤛🏿":"1f91b-1f3ff","🤜🏻":"1f91c-1f3fb","🤜🏼":"1f91c-1f3fc","🤜🏽":"1f91c-1f3fd","🤜🏾":"1f91c-1f3fe","🤜🏿":"1f91c-1f3ff","👏🏻":"1f44f-1f3fb","👏🏼":"1f44f-1f3fc","👏🏽":"1f44f-1f3fd","👏🏾":"1f44f-1f3fe","👏🏿":"1f44f-1f3ff","🙌🏻":"1f64c-1f3fb","🙌🏼":"1f64c-1f3fc","🙌🏽":"1f64c-1f3fd","🙌🏾":"1f64c-1f3fe","🙌🏿":"1f64c-1f3ff","👐🏻":"1f450-1f3fb","👐🏼":"1f450-1f3fc","👐🏽":"1f450-1f3fd","👐🏾":"1f450-1f3fe","👐🏿":"1f450-1f3ff","🤲🏻":"1f932-1f3fb","🤲🏼":"1f932-1f3fc","🤲🏽":"1f932-1f3fd","🤲🏾":"1f932-1f3fe","🤲🏿":"1f932-1f3ff","🙏🏻":"1f64f-1f3fb","🙏🏼":"1f64f-1f3fc","🙏🏽":"1f64f-1f3fd","🙏🏾":"1f64f-1f3fe","🙏🏿":"1f64f-1f3ff","✍️":"270d","✍🏻":"270d-1f3fb","✍🏼":"270d-1f3fc","✍🏽":"270d-1f3fd","✍🏾":"270d-1f3fe","✍🏿":"270d-1f3ff","💅🏻":"1f485-1f3fb","💅🏼":"1f485-1f3fc","💅🏽":"1f485-1f3fd","💅🏾":"1f485-1f3fe","💅🏿":"1f485-1f3ff","🤳🏻":"1f933-1f3fb","🤳🏼":"1f933-1f3fc","🤳🏽":"1f933-1f3fd","🤳🏾":"1f933-1f3fe","🤳🏿":"1f933-1f3ff","💪🏻":"1f4aa-1f3fb","💪🏼":"1f4aa-1f3fc","💪🏽":"1f4aa-1f3fd","💪🏾":"1f4aa-1f3fe","💪🏿":"1f4aa-1f3ff","🦵🏻":"1f9b5-1f3fb","🦵🏼":"1f9b5-1f3fc","🦵🏽":"1f9b5-1f3fd","🦵🏾":"1f9b5-1f3fe","🦵🏿":"1f9b5-1f3ff","🦶🏻":"1f9b6-1f3fb","🦶🏼":"1f9b6-1f3fc","🦶🏽":"1f9b6-1f3fd","🦶🏾":"1f9b6-1f3fe","🦶🏿":"1f9b6-1f3ff","👂🏻":"1f442-1f3fb","👂🏼":"1f442-1f3fc","👂🏽":"1f442-1f3fd","👂🏾":"1f442-1f3fe","👂🏿":"1f442-1f3ff","🦻🏻":"1f9bb-1f3fb","🦻🏼":"1f9bb-1f3fc","🦻🏽":"1f9bb-1f3fd","🦻🏾":"1f9bb-1f3fe","🦻🏿":"1f9bb-1f3ff","👃🏻":"1f443-1f3fb","👃🏼":"1f443-1f3fc","👃🏽":"1f443-1f3fd","👃🏾":"1f443-1f3fe","👃🏿":"1f443-1f3ff","👁️":"1f441","👶🏻":"1f476-1f3fb","👶🏼":"1f476-1f3fc","👶🏽":"1f476-1f3fd","👶🏾":"1f476-1f3fe","👶🏿":"1f476-1f3ff","🧒🏻":"1f9d2-1f3fb","🧒🏼":"1f9d2-1f3fc","🧒🏽":"1f9d2-1f3fd","🧒🏾":"1f9d2-1f3fe","🧒🏿":"1f9d2-1f3ff","👦🏻":"1f466-1f3fb","👦🏼":"1f466-1f3fc","👦🏽":"1f466-1f3fd","👦🏾":"1f466-1f3fe","👦🏿":"1f466-1f3ff","👧🏻":"1f467-1f3fb","👧🏼":"1f467-1f3fc","👧🏽":"1f467-1f3fd","👧🏾":"1f467-1f3fe","👧🏿":"1f467-1f3ff","🧑🏻":"1f9d1-1f3fb","🧑🏼":"1f9d1-1f3fc","🧑🏽":"1f9d1-1f3fd","🧑🏾":"1f9d1-1f3fe","🧑🏿":"1f9d1-1f3ff","👱🏻":"1f471-1f3fb","👱🏼":"1f471-1f3fc","👱🏽":"1f471-1f3fd","👱🏾":"1f471-1f3fe","👱🏿":"1f471-1f3ff","👨🏻":"1f468-1f3fb","👨🏼":"1f468-1f3fc","👨🏽":"1f468-1f3fd","👨🏾":"1f468-1f3fe","👨🏿":"1f468-1f3ff","🧔🏻":"1f9d4-1f3fb","🧔🏼":"1f9d4-1f3fc","🧔🏽":"1f9d4-1f3fd","🧔🏾":"1f9d4-1f3fe","🧔🏿":"1f9d4-1f3ff","👩🏻":"1f469-1f3fb","👩🏼":"1f469-1f3fc","👩🏽":"1f469-1f3fd","👩🏾":"1f469-1f3fe","👩🏿":"1f469-1f3ff","🧓🏻":"1f9d3-1f3fb","🧓🏼":"1f9d3-1f3fc","🧓🏽":"1f9d3-1f3fd","🧓🏾":"1f9d3-1f3fe","🧓🏿":"1f9d3-1f3ff","👴🏻":"1f474-1f3fb","👴🏼":"1f474-1f3fc","👴🏽":"1f474-1f3fd","👴🏾":"1f474-1f3fe","👴🏿":"1f474-1f3ff","👵🏻":"1f475-1f3fb","👵🏼":"1f475-1f3fc","👵🏽":"1f475-1f3fd","👵🏾":"1f475-1f3fe","👵🏿":"1f475-1f3ff","🙍🏻":"1f64d-1f3fb","🙍🏼":"1f64d-1f3fc","🙍🏽":"1f64d-1f3fd","🙍🏾":"1f64d-1f3fe","🙍🏿":"1f64d-1f3ff","🙎🏻":"1f64e-1f3fb","🙎🏼":"1f64e-1f3fc","🙎🏽":"1f64e-1f3fd","🙎🏾":"1f64e-1f3fe","🙎🏿":"1f64e-1f3ff","🙅🏻":"1f645-1f3fb","🙅🏼":"1f645-1f3fc","🙅🏽":"1f645-1f3fd","🙅🏾":"1f645-1f3fe","🙅🏿":"1f645-1f3ff","🙆🏻":"1f646-1f3fb","🙆🏼":"1f646-1f3fc","🙆🏽":"1f646-1f3fd","🙆🏾":"1f646-1f3fe","🙆🏿":"1f646-1f3ff","💁🏻":"1f481-1f3fb","💁🏼":"1f481-1f3fc","💁🏽":"1f481-1f3fd","💁🏾":"1f481-1f3fe","💁🏿":"1f481-1f3ff","🙋🏻":"1f64b-1f3fb","🙋🏼":"1f64b-1f3fc","🙋🏽":"1f64b-1f3fd","🙋🏾":"1f64b-1f3fe","🙋🏿":"1f64b-1f3ff","🧏🏻":"1f9cf-1f3fb","🧏🏼":"1f9cf-1f3fc","🧏🏽":"1f9cf-1f3fd","🧏🏾":"1f9cf-1f3fe","🧏🏿":"1f9cf-1f3ff","🙇🏻":"1f647-1f3fb","🙇🏼":"1f647-1f3fc","🙇🏽":"1f647-1f3fd","🙇🏾":"1f647-1f3fe","🙇🏿":"1f647-1f3ff","🤦🏻":"1f926-1f3fb","🤦🏼":"1f926-1f3fc","🤦🏽":"1f926-1f3fd","🤦🏾":"1f926-1f3fe","🤦🏿":"1f926-1f3ff","🤷🏻":"1f937-1f3fb","🤷🏼":"1f937-1f3fc","🤷🏽":"1f937-1f3fd","🤷🏾":"1f937-1f3fe","🤷🏿":"1f937-1f3ff","👮🏻":"1f46e-1f3fb","👮🏼":"1f46e-1f3fc","👮🏽":"1f46e-1f3fd","👮🏾":"1f46e-1f3fe","👮🏿":"1f46e-1f3ff","🕵️":"1f575","🕵🏻":"1f575-1f3fb","🕵🏼":"1f575-1f3fc","🕵🏽":"1f575-1f3fd","🕵🏾":"1f575-1f3fe","🕵🏿":"1f575-1f3ff","💂🏻":"1f482-1f3fb","💂🏼":"1f482-1f3fc","💂🏽":"1f482-1f3fd","💂🏾":"1f482-1f3fe","💂🏿":"1f482-1f3ff","🥷🏻":"1f977-1f3fb","🥷🏼":"1f977-1f3fc","🥷🏽":"1f977-1f3fd","🥷🏾":"1f977-1f3fe","🥷🏿":"1f977-1f3ff","👷🏻":"1f477-1f3fb","👷🏼":"1f477-1f3fc","👷🏽":"1f477-1f3fd","👷🏾":"1f477-1f3fe","👷🏿":"1f477-1f3ff","🤴🏻":"1f934-1f3fb","🤴🏼":"1f934-1f3fc","🤴🏽":"1f934-1f3fd","🤴🏾":"1f934-1f3fe","🤴🏿":"1f934-1f3ff","👸🏻":"1f478-1f3fb","👸🏼":"1f478-1f3fc","👸🏽":"1f478-1f3fd","👸🏾":"1f478-1f3fe","👸🏿":"1f478-1f3ff","👳🏻":"1f473-1f3fb","👳🏼":"1f473-1f3fc","👳🏽":"1f473-1f3fd","👳🏾":"1f473-1f3fe","👳🏿":"1f473-1f3ff","👲🏻":"1f472-1f3fb","👲🏼":"1f472-1f3fc","👲🏽":"1f472-1f3fd","👲🏾":"1f472-1f3fe","👲🏿":"1f472-1f3ff","🧕🏻":"1f9d5-1f3fb","🧕🏼":"1f9d5-1f3fc","🧕🏽":"1f9d5-1f3fd","🧕🏾":"1f9d5-1f3fe","🧕🏿":"1f9d5-1f3ff","🤵🏻":"1f935-1f3fb","🤵🏼":"1f935-1f3fc","🤵🏽":"1f935-1f3fd","🤵🏾":"1f935-1f3fe","🤵🏿":"1f935-1f3ff","👰🏻":"1f470-1f3fb","👰🏼":"1f470-1f3fc","👰🏽":"1f470-1f3fd","👰🏾":"1f470-1f3fe","👰🏿":"1f470-1f3ff","🤰🏻":"1f930-1f3fb","🤰🏼":"1f930-1f3fc","🤰🏽":"1f930-1f3fd","🤰🏾":"1f930-1f3fe","🤰🏿":"1f930-1f3ff","🤱🏻":"1f931-1f3fb","🤱🏼":"1f931-1f3fc","🤱🏽":"1f931-1f3fd","🤱🏾":"1f931-1f3fe","🤱🏿":"1f931-1f3ff","👼🏻":"1f47c-1f3fb","👼🏼":"1f47c-1f3fc","👼🏽":"1f47c-1f3fd","👼🏾":"1f47c-1f3fe","👼🏿":"1f47c-1f3ff","🎅🏻":"1f385-1f3fb","🎅🏼":"1f385-1f3fc","🎅🏽":"1f385-1f3fd","🎅🏾":"1f385-1f3fe","🎅🏿":"1f385-1f3ff","🤶🏻":"1f936-1f3fb","🤶🏼":"1f936-1f3fc","🤶🏽":"1f936-1f3fd","🤶🏾":"1f936-1f3fe","🤶🏿":"1f936-1f3ff","🦸🏻":"1f9b8-1f3fb","🦸🏼":"1f9b8-1f3fc","🦸🏽":"1f9b8-1f3fd","🦸🏾":"1f9b8-1f3fe","🦸🏿":"1f9b8-1f3ff","🦹🏻":"1f9b9-1f3fb","🦹🏼":"1f9b9-1f3fc","🦹🏽":"1f9b9-1f3fd","🦹🏾":"1f9b9-1f3fe","🦹🏿":"1f9b9-1f3ff","🧙🏻":"1f9d9-1f3fb","🧙🏼":"1f9d9-1f3fc","🧙🏽":"1f9d9-1f3fd","🧙🏾":"1f9d9-1f3fe","🧙🏿":"1f9d9-1f3ff","🧚🏻":"1f9da-1f3fb","🧚🏼":"1f9da-1f3fc","🧚🏽":"1f9da-1f3fd","🧚🏾":"1f9da-1f3fe","🧚🏿":"1f9da-1f3ff","🧛🏻":"1f9db-1f3fb","🧛🏼":"1f9db-1f3fc","🧛🏽":"1f9db-1f3fd","🧛🏾":"1f9db-1f3fe","🧛🏿":"1f9db-1f3ff","🧜🏻":"1f9dc-1f3fb","🧜🏼":"1f9dc-1f3fc","🧜🏽":"1f9dc-1f3fd","🧜🏾":"1f9dc-1f3fe","🧜🏿":"1f9dc-1f3ff","🧝🏻":"1f9dd-1f3fb","🧝🏼":"1f9dd-1f3fc","🧝🏽":"1f9dd-1f3fd","🧝🏾":"1f9dd-1f3fe","🧝🏿":"1f9dd-1f3ff","💆🏻":"1f486-1f3fb","💆🏼":"1f486-1f3fc","💆🏽":"1f486-1f3fd","💆🏾":"1f486-1f3fe","💆🏿":"1f486-1f3ff","💇🏻":"1f487-1f3fb","💇🏼":"1f487-1f3fc","💇🏽":"1f487-1f3fd","💇🏾":"1f487-1f3fe","💇🏿":"1f487-1f3ff","🚶🏻":"1f6b6-1f3fb","🚶🏼":"1f6b6-1f3fc","🚶🏽":"1f6b6-1f3fd","🚶🏾":"1f6b6-1f3fe","🚶🏿":"1f6b6-1f3ff","🧍🏻":"1f9cd-1f3fb","🧍🏼":"1f9cd-1f3fc","🧍🏽":"1f9cd-1f3fd","🧍🏾":"1f9cd-1f3fe","🧍🏿":"1f9cd-1f3ff","🧎🏻":"1f9ce-1f3fb","🧎🏼":"1f9ce-1f3fc","🧎🏽":"1f9ce-1f3fd","🧎🏾":"1f9ce-1f3fe","🧎🏿":"1f9ce-1f3ff","🏃🏻":"1f3c3-1f3fb","🏃🏼":"1f3c3-1f3fc","🏃🏽":"1f3c3-1f3fd","🏃🏾":"1f3c3-1f3fe","🏃🏿":"1f3c3-1f3ff","💃🏻":"1f483-1f3fb","💃🏼":"1f483-1f3fc","💃🏽":"1f483-1f3fd","💃🏾":"1f483-1f3fe","💃🏿":"1f483-1f3ff","🕺🏻":"1f57a-1f3fb","🕺🏼":"1f57a-1f3fc","🕺🏽":"1f57a-1f3fd","🕺🏾":"1f57a-1f3fe","🕺🏿":"1f57a-1f3ff","🕴️":"1f574","🕴🏻":"1f574-1f3fb","🕴🏼":"1f574-1f3fc","🕴🏽":"1f574-1f3fd","🕴🏾":"1f574-1f3fe","🕴🏿":"1f574-1f3ff","🧖🏻":"1f9d6-1f3fb","🧖🏼":"1f9d6-1f3fc","🧖🏽":"1f9d6-1f3fd","🧖🏾":"1f9d6-1f3fe","🧖🏿":"1f9d6-1f3ff","🧗🏻":"1f9d7-1f3fb","🧗🏼":"1f9d7-1f3fc","🧗🏽":"1f9d7-1f3fd","🧗🏾":"1f9d7-1f3fe","🧗🏿":"1f9d7-1f3ff","🏇🏻":"1f3c7-1f3fb","🏇🏼":"1f3c7-1f3fc","🏇🏽":"1f3c7-1f3fd","🏇🏾":"1f3c7-1f3fe","🏇🏿":"1f3c7-1f3ff","⛷️":"26f7","🏂🏻":"1f3c2-1f3fb","🏂🏼":"1f3c2-1f3fc","🏂🏽":"1f3c2-1f3fd","🏂🏾":"1f3c2-1f3fe","🏂🏿":"1f3c2-1f3ff","🏌️":"1f3cc","🏌🏻":"1f3cc-1f3fb","🏌🏼":"1f3cc-1f3fc","🏌🏽":"1f3cc-1f3fd","🏌🏾":"1f3cc-1f3fe","🏌🏿":"1f3cc-1f3ff","🏄🏻":"1f3c4-1f3fb","🏄🏼":"1f3c4-1f3fc","🏄🏽":"1f3c4-1f3fd","🏄🏾":"1f3c4-1f3fe","🏄🏿":"1f3c4-1f3ff","🚣🏻":"1f6a3-1f3fb","🚣🏼":"1f6a3-1f3fc","🚣🏽":"1f6a3-1f3fd","🚣🏾":"1f6a3-1f3fe","🚣🏿":"1f6a3-1f3ff","🏊🏻":"1f3ca-1f3fb","🏊🏼":"1f3ca-1f3fc","🏊🏽":"1f3ca-1f3fd","🏊🏾":"1f3ca-1f3fe","🏊🏿":"1f3ca-1f3ff","⛹️":"26f9","⛹🏻":"26f9-1f3fb","⛹🏼":"26f9-1f3fc","⛹🏽":"26f9-1f3fd","⛹🏾":"26f9-1f3fe","⛹🏿":"26f9-1f3ff","🏋️":"1f3cb","🏋🏻":"1f3cb-1f3fb","🏋🏼":"1f3cb-1f3fc","🏋🏽":"1f3cb-1f3fd","🏋🏾":"1f3cb-1f3fe","🏋🏿":"1f3cb-1f3ff","🚴🏻":"1f6b4-1f3fb","🚴🏼":"1f6b4-1f3fc","🚴🏽":"1f6b4-1f3fd","🚴🏾":"1f6b4-1f3fe","🚴🏿":"1f6b4-1f3ff","🚵🏻":"1f6b5-1f3fb","🚵🏼":"1f6b5-1f3fc","🚵🏽":"1f6b5-1f3fd","🚵🏾":"1f6b5-1f3fe","🚵🏿":"1f6b5-1f3ff","🤸🏻":"1f938-1f3fb","🤸🏼":"1f938-1f3fc","🤸🏽":"1f938-1f3fd","🤸🏾":"1f938-1f3fe","🤸🏿":"1f938-1f3ff","🤽🏻":"1f93d-1f3fb","🤽🏼":"1f93d-1f3fc","🤽🏽":"1f93d-1f3fd","🤽🏾":"1f93d-1f3fe","🤽🏿":"1f93d-1f3ff","🤾🏻":"1f93e-1f3fb","🤾🏼":"1f93e-1f3fc","🤾🏽":"1f93e-1f3fd","🤾🏾":"1f93e-1f3fe","🤾🏿":"1f93e-1f3ff","🤹🏻":"1f939-1f3fb","🤹🏼":"1f939-1f3fc","🤹🏽":"1f939-1f3fd","🤹🏾":"1f939-1f3fe","🤹🏿":"1f939-1f3ff","🧘🏻":"1f9d8-1f3fb","🧘🏼":"1f9d8-1f3fc","🧘🏽":"1f9d8-1f3fd","🧘🏾":"1f9d8-1f3fe","🧘🏿":"1f9d8-1f3ff","🛀🏻":"1f6c0-1f3fb","🛀🏼":"1f6c0-1f3fc","🛀🏽":"1f6c0-1f3fd","🛀🏾":"1f6c0-1f3fe","🛀🏿":"1f6c0-1f3ff","🛌🏻":"1f6cc-1f3fb","🛌🏼":"1f6cc-1f3fc","🛌🏽":"1f6cc-1f3fd","🛌🏾":"1f6cc-1f3fe","🛌🏿":"1f6cc-1f3ff","👭🏻":"1f46d-1f3fb","👭🏼":"1f46d-1f3fc","👭🏽":"1f46d-1f3fd","👭🏾":"1f46d-1f3fe","👭🏿":"1f46d-1f3ff","👫🏻":"1f46b-1f3fb","👫🏼":"1f46b-1f3fc","👫🏽":"1f46b-1f3fd","👫🏾":"1f46b-1f3fe","👫🏿":"1f46b-1f3ff","👬🏻":"1f46c-1f3fb","👬🏼":"1f46c-1f3fc","👬🏽":"1f46c-1f3fd","👬🏾":"1f46c-1f3fe","👬🏿":"1f46c-1f3ff","💏🏻":"1f48f-1f3fb","💏🏼":"1f48f-1f3fc","💏🏽":"1f48f-1f3fd","💏🏾":"1f48f-1f3fe","💏🏿":"1f48f-1f3ff","💑🏻":"1f491-1f3fb","💑🏼":"1f491-1f3fc","💑🏽":"1f491-1f3fd","💑🏾":"1f491-1f3fe","💑🏿":"1f491-1f3ff","🗣️":"1f5e3","🐿️":"1f43f","🕊️":"1f54a","🕷️":"1f577","🕸️":"1f578","🏵️":"1f3f5","☘️":"2618","🌶️":"1f336","🍽️":"1f37d","🗺️":"1f5fa","🏔️":"1f3d4","⛰️":"26f0","🏕️":"1f3d5","🏖️":"1f3d6","🏜️":"1f3dc","🏝️":"1f3dd","🏞️":"1f3de","🏟️":"1f3df","🏛️":"1f3db","🏗️":"1f3d7","🏘️":"1f3d8","🏚️":"1f3da","⛩️":"26e9","🏙️":"1f3d9","♨️":"2668","🏎️":"1f3ce","🏍️":"1f3cd","🛣️":"1f6e3","🛤️":"1f6e4","🛢️":"1f6e2","🛳️":"1f6f3","⛴️":"26f4","🛥️":"1f6e5","✈️":"2708","🛩️":"1f6e9","🛰️":"1f6f0","🛎️":"1f6ce","⏱️":"23f1","⏲️":"23f2","🕰️":"1f570","🌡️":"1f321","☀️":"2600","☁️":"2601","⛈️":"26c8","🌤️":"1f324","🌥️":"1f325","🌦️":"1f326","🌧️":"1f327","🌨️":"1f328","🌩️":"1f329","🌪️":"1f32a","🌫️":"1f32b","🌬️":"1f32c","☂️":"2602","⛱️":"26f1","❄️":"2744","☃️":"2603","☄️":"2604","🎗️":"1f397","🎟️":"1f39f","🎖️":"1f396","⛸️":"26f8","🕹️":"1f579","♠️":"2660","♥️":"2665","♦️":"2666","♣️":"2663","♟️":"265f","🖼️":"1f5bc","🕶️":"1f576","🛍️":"1f6cd","⛑️":"26d1","🎙️":"1f399","🎚️":"1f39a","🎛️":"1f39b","☎️":"260e","🖥️":"1f5a5","🖨️":"1f5a8","⌨️":"2328","🖱️":"1f5b1","🖲️":"1f5b2","🎞️":"1f39e","📽️":"1f4fd","🕯️":"1f56f","🗞️":"1f5de","🏷️":"1f3f7","✉️":"2709","🗳️":"1f5f3","✏️":"270f","✒️":"2712","🖋️":"1f58b","🖊️":"1f58a","🖌️":"1f58c","🖍️":"1f58d","🗂️":"1f5c2","🗒️":"1f5d2","🗓️":"1f5d3","🖇️":"1f587","✂️":"2702","🗃️":"1f5c3","🗄️":"1f5c4","🗑️":"1f5d1","🗝️":"1f5dd","⛏️":"26cf","⚒️":"2692","🛠️":"1f6e0","🗡️":"1f5e1","⚔️":"2694","🛡️":"1f6e1","⚙️":"2699","🗜️":"1f5dc","⚖️":"2696","⛓️":"26d3","⚗️":"2697","🛏️":"1f6cf","🛋️":"1f6cb","⚰️":"26b0","⚱️":"26b1","⚠️":"26a0","☢️":"2622","☣️":"2623","⬆️":"2b06","↗️":"2197","➡️":"27a1","↘️":"2198","⬇️":"2b07","↙️":"2199","⬅️":"2b05","↖️":"2196","↕️":"2195","↔️":"2194","↩️":"21a9","↪️":"21aa","⤴️":"2934","⤵️":"2935","⚛️":"269b","🕉️":"1f549","✡️":"2721","☸️":"2638","☯️":"262f","✝️":"271d","☦️":"2626","☪️":"262a","☮️":"262e","▶️":"25b6","⏭️":"23ed","⏯️":"23ef","◀️":"25c0","⏮️":"23ee","⏸️":"23f8","⏹️":"23f9","⏺️":"23fa","⏏️":"23cf","♀️":"2640","♂️":"2642","⚧️":"26a7","✖️":"2716","♾️":"267e","‼️":"203c","⁉️":"2049","〰️":"3030","⚕️":"2695","♻️":"267b","⚜️":"269c","☑️":"2611","✔️":"2714","〽️":"303d","✳️":"2733","✴️":"2734","❇️":"2747","©️":"a9","®️":"ae","™️":"2122","#⃣":"23-20e3","*⃣":"2a-20e3","0⃣":"30-20e3","1⃣":"31-20e3","2⃣":"32-20e3","3⃣":"33-20e3","4⃣":"34-20e3","5⃣":"35-20e3","6⃣":"36-20e3","7⃣":"37-20e3","8⃣":"38-20e3","9⃣":"39-20e3","🅰️":"1f170","🅱️":"1f171","ℹ️":"2139","Ⓜ️":"24c2","🅾️":"1f17e","🅿️":"1f17f","🈂️":"1f202","🈷️":"1f237","㊗️":"3297","㊙️":"3299","◼️":"25fc","◻️":"25fb","▪️":"25aa","▫️":"25ab","🏳️":"1f3f3","🇦🇨":"1f1e6-1f1e8","🇦🇩":"1f1e6-1f1e9","🇦🇪":"1f1e6-1f1ea","🇦🇫":"1f1e6-1f1eb","🇦🇬":"1f1e6-1f1ec","🇦🇮":"1f1e6-1f1ee","🇦🇱":"1f1e6-1f1f1","🇦🇲":"1f1e6-1f1f2","🇦🇴":"1f1e6-1f1f4","🇦🇶":"1f1e6-1f1f6","🇦🇷":"1f1e6-1f1f7","🇦🇸":"1f1e6-1f1f8","🇦🇹":"1f1e6-1f1f9","🇦🇺":"1f1e6-1f1fa","🇦🇼":"1f1e6-1f1fc","🇦🇽":"1f1e6-1f1fd","🇦🇿":"1f1e6-1f1ff","🇧🇦":"1f1e7-1f1e6","🇧🇧":"1f1e7-1f1e7","🇧🇩":"1f1e7-1f1e9","🇧🇪":"1f1e7-1f1ea","🇧🇫":"1f1e7-1f1eb","🇧🇬":"1f1e7-1f1ec","🇧🇭":"1f1e7-1f1ed","🇧🇮":"1f1e7-1f1ee","🇧🇯":"1f1e7-1f1ef","🇧🇱":"1f1e7-1f1f1","🇧🇲":"1f1e7-1f1f2","🇧🇳":"1f1e7-1f1f3","🇧🇴":"1f1e7-1f1f4","🇧🇶":"1f1e7-1f1f6","🇧🇷":"1f1e7-1f1f7","🇧🇸":"1f1e7-1f1f8","🇧🇹":"1f1e7-1f1f9","🇧🇻":"1f1e7-1f1fb","🇧🇼":"1f1e7-1f1fc","🇧🇾":"1f1e7-1f1fe","🇧🇿":"1f1e7-1f1ff","🇨🇦":"1f1e8-1f1e6","🇨🇨":"1f1e8-1f1e8","🇨🇩":"1f1e8-1f1e9","🇨🇫":"1f1e8-1f1eb","🇨🇬":"1f1e8-1f1ec","🇨🇭":"1f1e8-1f1ed","🇨🇮":"1f1e8-1f1ee","🇨🇰":"1f1e8-1f1f0","🇨🇱":"1f1e8-1f1f1","🇨🇲":"1f1e8-1f1f2","🇨🇳":"1f1e8-1f1f3","🇨🇴":"1f1e8-1f1f4","🇨🇵":"1f1e8-1f1f5","🇨🇷":"1f1e8-1f1f7","🇨🇺":"1f1e8-1f1fa","🇨🇻":"1f1e8-1f1fb","🇨🇼":"1f1e8-1f1fc","🇨🇽":"1f1e8-1f1fd","🇨🇾":"1f1e8-1f1fe","🇨🇿":"1f1e8-1f1ff","🇩🇪":"1f1e9-1f1ea","🇩🇬":"1f1e9-1f1ec","🇩🇯":"1f1e9-1f1ef","🇩🇰":"1f1e9-1f1f0","🇩🇲":"1f1e9-1f1f2","🇩🇴":"1f1e9-1f1f4","🇩🇿":"1f1e9-1f1ff","🇪🇦":"1f1ea-1f1e6","🇪🇨":"1f1ea-1f1e8","🇪🇪":"1f1ea-1f1ea","🇪🇬":"1f1ea-1f1ec","🇪🇭":"1f1ea-1f1ed","🇪🇷":"1f1ea-1f1f7","🇪🇸":"1f1ea-1f1f8","🇪🇹":"1f1ea-1f1f9","🇪🇺":"1f1ea-1f1fa","🇫🇮":"1f1eb-1f1ee","🇫🇯":"1f1eb-1f1ef","🇫🇰":"1f1eb-1f1f0","🇫🇲":"1f1eb-1f1f2","🇫🇴":"1f1eb-1f1f4","🇫🇷":"1f1eb-1f1f7","🇬🇦":"1f1ec-1f1e6","🇬🇧":"1f1ec-1f1e7","🇬🇩":"1f1ec-1f1e9","🇬🇪":"1f1ec-1f1ea","🇬🇫":"1f1ec-1f1eb","🇬🇬":"1f1ec-1f1ec","🇬🇭":"1f1ec-1f1ed","🇬🇮":"1f1ec-1f1ee","🇬🇱":"1f1ec-1f1f1","🇬🇲":"1f1ec-1f1f2","🇬🇳":"1f1ec-1f1f3","🇬🇵":"1f1ec-1f1f5","🇬🇶":"1f1ec-1f1f6","🇬🇷":"1f1ec-1f1f7","🇬🇸":"1f1ec-1f1f8","🇬🇹":"1f1ec-1f1f9","🇬🇺":"1f1ec-1f1fa","🇬🇼":"1f1ec-1f1fc","🇬🇾":"1f1ec-1f1fe","🇭🇰":"1f1ed-1f1f0","🇭🇲":"1f1ed-1f1f2","🇭🇳":"1f1ed-1f1f3","🇭🇷":"1f1ed-1f1f7","🇭🇹":"1f1ed-1f1f9","🇭🇺":"1f1ed-1f1fa","🇮🇨":"1f1ee-1f1e8","🇮🇩":"1f1ee-1f1e9","🇮🇪":"1f1ee-1f1ea","🇮🇱":"1f1ee-1f1f1","🇮🇲":"1f1ee-1f1f2","🇮🇳":"1f1ee-1f1f3","🇮🇴":"1f1ee-1f1f4","🇮🇶":"1f1ee-1f1f6","🇮🇷":"1f1ee-1f1f7","🇮🇸":"1f1ee-1f1f8","🇮🇹":"1f1ee-1f1f9","🇯🇪":"1f1ef-1f1ea","🇯🇲":"1f1ef-1f1f2","🇯🇴":"1f1ef-1f1f4","🇯🇵":"1f1ef-1f1f5","🇰🇪":"1f1f0-1f1ea","🇰🇬":"1f1f0-1f1ec","🇰🇭":"1f1f0-1f1ed","🇰🇮":"1f1f0-1f1ee","🇰🇲":"1f1f0-1f1f2","🇰🇳":"1f1f0-1f1f3","🇰🇵":"1f1f0-1f1f5","🇰🇷":"1f1f0-1f1f7","🇰🇼":"1f1f0-1f1fc","🇰🇾":"1f1f0-1f1fe","🇰🇿":"1f1f0-1f1ff","🇱🇦":"1f1f1-1f1e6","🇱🇧":"1f1f1-1f1e7","🇱🇨":"1f1f1-1f1e8","🇱🇮":"1f1f1-1f1ee","🇱🇰":"1f1f1-1f1f0","🇱🇷":"1f1f1-1f1f7","🇱🇸":"1f1f1-1f1f8","🇱🇹":"1f1f1-1f1f9","🇱🇺":"1f1f1-1f1fa","🇱🇻":"1f1f1-1f1fb","🇱🇾":"1f1f1-1f1fe","🇲🇦":"1f1f2-1f1e6","🇲🇨":"1f1f2-1f1e8","🇲🇩":"1f1f2-1f1e9","🇲🇪":"1f1f2-1f1ea","🇲🇫":"1f1f2-1f1eb","🇲🇬":"1f1f2-1f1ec","🇲🇭":"1f1f2-1f1ed","🇲🇰":"1f1f2-1f1f0","🇲🇱":"1f1f2-1f1f1","🇲🇲":"1f1f2-1f1f2","🇲🇳":"1f1f2-1f1f3","🇲🇴":"1f1f2-1f1f4","🇲🇵":"1f1f2-1f1f5","🇲🇶":"1f1f2-1f1f6","🇲🇷":"1f1f2-1f1f7","🇲🇸":"1f1f2-1f1f8","🇲🇹":"1f1f2-1f1f9","🇲🇺":"1f1f2-1f1fa","🇲🇻":"1f1f2-1f1fb","🇲🇼":"1f1f2-1f1fc","🇲🇽":"1f1f2-1f1fd","🇲🇾":"1f1f2-1f1fe","🇲🇿":"1f1f2-1f1ff","🇳🇦":"1f1f3-1f1e6","🇳🇨":"1f1f3-1f1e8","🇳🇪":"1f1f3-1f1ea","🇳🇫":"1f1f3-1f1eb","🇳🇬":"1f1f3-1f1ec","🇳🇮":"1f1f3-1f1ee","🇳🇱":"1f1f3-1f1f1","🇳🇴":"1f1f3-1f1f4","🇳🇵":"1f1f3-1f1f5","🇳🇷":"1f1f3-1f1f7","🇳🇺":"1f1f3-1f1fa","🇳🇿":"1f1f3-1f1ff","🇴🇲":"1f1f4-1f1f2","🇵🇦":"1f1f5-1f1e6","🇵🇪":"1f1f5-1f1ea","🇵🇫":"1f1f5-1f1eb","🇵🇬":"1f1f5-1f1ec","🇵🇭":"1f1f5-1f1ed","🇵🇰":"1f1f5-1f1f0","🇵🇱":"1f1f5-1f1f1","🇵🇲":"1f1f5-1f1f2","🇵🇳":"1f1f5-1f1f3","🇵🇷":"1f1f5-1f1f7","🇵🇸":"1f1f5-1f1f8","🇵🇹":"1f1f5-1f1f9","🇵🇼":"1f1f5-1f1fc","🇵🇾":"1f1f5-1f1fe","🇶🇦":"1f1f6-1f1e6","🇷🇪":"1f1f7-1f1ea","🇷🇴":"1f1f7-1f1f4","🇷🇸":"1f1f7-1f1f8","🇷🇺":"1f1f7-1f1fa","🇷🇼":"1f1f7-1f1fc","🇸🇦":"1f1f8-1f1e6","🇸🇧":"1f1f8-1f1e7","🇸🇨":"1f1f8-1f1e8","🇸🇩":"1f1f8-1f1e9","🇸🇪":"1f1f8-1f1ea","🇸🇬":"1f1f8-1f1ec","🇸🇭":"1f1f8-1f1ed","🇸🇮":"1f1f8-1f1ee","🇸🇯":"1f1f8-1f1ef","🇸🇰":"1f1f8-1f1f0","🇸🇱":"1f1f8-1f1f1","🇸🇲":"1f1f8-1f1f2","🇸🇳":"1f1f8-1f1f3","🇸🇴":"1f1f8-1f1f4","🇸🇷":"1f1f8-1f1f7","🇸🇸":"1f1f8-1f1f8","🇸🇹":"1f1f8-1f1f9","🇸🇻":"1f1f8-1f1fb","🇸🇽":"1f1f8-1f1fd","🇸🇾":"1f1f8-1f1fe","🇸🇿":"1f1f8-1f1ff","🇹🇦":"1f1f9-1f1e6","🇹🇨":"1f1f9-1f1e8","🇹🇩":"1f1f9-1f1e9","🇹🇫":"1f1f9-1f1eb","🇹🇬":"1f1f9-1f1ec","🇹🇭":"1f1f9-1f1ed","🇹🇯":"1f1f9-1f1ef","🇹🇰":"1f1f9-1f1f0","🇹🇱":"1f1f9-1f1f1","🇹🇲":"1f1f9-1f1f2","🇹🇳":"1f1f9-1f1f3","🇹🇴":"1f1f9-1f1f4","🇹🇷":"1f1f9-1f1f7","🇹🇹":"1f1f9-1f1f9","🇹🇻":"1f1f9-1f1fb","🇹🇼":"1f1f9-1f1fc","🇹🇿":"1f1f9-1f1ff","🇺🇦":"1f1fa-1f1e6","🇺🇬":"1f1fa-1f1ec","🇺🇲":"1f1fa-1f1f2","🇺🇳":"1f1fa-1f1f3","🇺🇸":"1f1fa-1f1f8","🇺🇾":"1f1fa-1f1fe","🇺🇿":"1f1fa-1f1ff","🇻🇦":"1f1fb-1f1e6","🇻🇨":"1f1fb-1f1e8","🇻🇪":"1f1fb-1f1ea","🇻🇬":"1f1fb-1f1ec","🇻🇮":"1f1fb-1f1ee","🇻🇳":"1f1fb-1f1f3","🇻🇺":"1f1fb-1f1fa","🇼🇫":"1f1fc-1f1eb","🇼🇸":"1f1fc-1f1f8","🇽🇰":"1f1fd-1f1f0","🇾🇪":"1f1fe-1f1ea","🇾🇹":"1f1fe-1f1f9","🇿🇦":"1f1ff-1f1e6","🇿🇲":"1f1ff-1f1f2","🇿🇼":"1f1ff-1f1fc","😶‍🌫":"1f636-200d-1f32b-fe0f","😮‍💨":"1f62e-200d-1f4a8","😵‍💫":"1f635-200d-1f4ab","❤‍🔥":"2764-fe0f-200d-1f525","❤‍🩹":"2764-fe0f-200d-1fa79","👁‍🗨":"1f441-200d-1f5e8","🧔‍♂":"1f9d4-200d-2642-fe0f","🧔‍♀":"1f9d4-200d-2640-fe0f","👨‍🦰":"1f468-200d-1f9b0","👨‍🦱":"1f468-200d-1f9b1","👨‍🦳":"1f468-200d-1f9b3","👨‍🦲":"1f468-200d-1f9b2","👩‍🦰":"1f469-200d-1f9b0","🧑‍🦰":"1f9d1-200d-1f9b0","👩‍🦱":"1f469-200d-1f9b1","🧑‍🦱":"1f9d1-200d-1f9b1","👩‍🦳":"1f469-200d-1f9b3","🧑‍🦳":"1f9d1-200d-1f9b3","👩‍🦲":"1f469-200d-1f9b2","🧑‍🦲":"1f9d1-200d-1f9b2","👱‍♀":"1f471-200d-2640-fe0f","👱‍♂":"1f471-200d-2642-fe0f","🙍‍♂":"1f64d-200d-2642-fe0f","🙍‍♀":"1f64d-200d-2640-fe0f","🙎‍♂":"1f64e-200d-2642-fe0f","🙎‍♀":"1f64e-200d-2640-fe0f","🙅‍♂":"1f645-200d-2642-fe0f","🙅‍♀":"1f645-200d-2640-fe0f","🙆‍♂":"1f646-200d-2642-fe0f","🙆‍♀":"1f646-200d-2640-fe0f","💁‍♂":"1f481-200d-2642-fe0f","💁‍♀":"1f481-200d-2640-fe0f","🙋‍♂":"1f64b-200d-2642-fe0f","🙋‍♀":"1f64b-200d-2640-fe0f","🧏‍♂":"1f9cf-200d-2642-fe0f","🧏‍♀":"1f9cf-200d-2640-fe0f","🙇‍♂":"1f647-200d-2642-fe0f","🙇‍♀":"1f647-200d-2640-fe0f","🤦‍♂":"1f926-200d-2642-fe0f","🤦‍♀":"1f926-200d-2640-fe0f","🤷‍♂":"1f937-200d-2642-fe0f","🤷‍♀":"1f937-200d-2640-fe0f","🧑‍⚕":"1f9d1-200d-2695-fe0f","👨‍⚕":"1f468-200d-2695-fe0f","👩‍⚕":"1f469-200d-2695-fe0f","🧑‍🎓":"1f9d1-200d-1f393","👨‍🎓":"1f468-200d-1f393","👩‍🎓":"1f469-200d-1f393","🧑‍🏫":"1f9d1-200d-1f3eb","👨‍🏫":"1f468-200d-1f3eb","👩‍🏫":"1f469-200d-1f3eb","🧑‍⚖":"1f9d1-200d-2696-fe0f","👨‍⚖":"1f468-200d-2696-fe0f","👩‍⚖":"1f469-200d-2696-fe0f","🧑‍🌾":"1f9d1-200d-1f33e","👨‍🌾":"1f468-200d-1f33e","👩‍🌾":"1f469-200d-1f33e","🧑‍🍳":"1f9d1-200d-1f373","👨‍🍳":"1f468-200d-1f373","👩‍🍳":"1f469-200d-1f373","🧑‍🔧":"1f9d1-200d-1f527","👨‍🔧":"1f468-200d-1f527","👩‍🔧":"1f469-200d-1f527","🧑‍🏭":"1f9d1-200d-1f3ed","👨‍🏭":"1f468-200d-1f3ed","👩‍🏭":"1f469-200d-1f3ed","🧑‍💼":"1f9d1-200d-1f4bc","👨‍💼":"1f468-200d-1f4bc","👩‍💼":"1f469-200d-1f4bc","🧑‍🔬":"1f9d1-200d-1f52c","👨‍🔬":"1f468-200d-1f52c","👩‍🔬":"1f469-200d-1f52c","🧑‍💻":"1f9d1-200d-1f4bb","👨‍💻":"1f468-200d-1f4bb","👩‍💻":"1f469-200d-1f4bb","🧑‍🎤":"1f9d1-200d-1f3a4","👨‍🎤":"1f468-200d-1f3a4","👩‍🎤":"1f469-200d-1f3a4","🧑‍🎨":"1f9d1-200d-1f3a8","👨‍🎨":"1f468-200d-1f3a8","👩‍🎨":"1f469-200d-1f3a8","🧑‍✈":"1f9d1-200d-2708-fe0f","👨‍✈":"1f468-200d-2708-fe0f","👩‍✈":"1f469-200d-2708-fe0f","🧑‍🚀":"1f9d1-200d-1f680","👨‍🚀":"1f468-200d-1f680","👩‍🚀":"1f469-200d-1f680","🧑‍🚒":"1f9d1-200d-1f692","👨‍🚒":"1f468-200d-1f692","👩‍🚒":"1f469-200d-1f692","👮‍♂":"1f46e-200d-2642-fe0f","👮‍♀":"1f46e-200d-2640-fe0f","🕵‍♂":"1f575-fe0f-200d-2642-fe0f","🕵‍♀":"1f575-fe0f-200d-2640-fe0f","💂‍♂":"1f482-200d-2642-fe0f","💂‍♀":"1f482-200d-2640-fe0f","👷‍♂":"1f477-200d-2642-fe0f","👷‍♀":"1f477-200d-2640-fe0f","👳‍♂":"1f473-200d-2642-fe0f","👳‍♀":"1f473-200d-2640-fe0f","🤵‍♂":"1f935-200d-2642-fe0f","🤵‍♀":"1f935-200d-2640-fe0f","👰‍♂":"1f470-200d-2642-fe0f","👰‍♀":"1f470-200d-2640-fe0f","👩‍🍼":"1f469-200d-1f37c","👨‍🍼":"1f468-200d-1f37c","🧑‍🍼":"1f9d1-200d-1f37c","🧑‍🎄":"1f9d1-200d-1f384","🦸‍♂":"1f9b8-200d-2642-fe0f","🦸‍♀":"1f9b8-200d-2640-fe0f","🦹‍♂":"1f9b9-200d-2642-fe0f","🦹‍♀":"1f9b9-200d-2640-fe0f","🧙‍♂":"1f9d9-200d-2642-fe0f","🧙‍♀":"1f9d9-200d-2640-fe0f","🧚‍♂":"1f9da-200d-2642-fe0f","🧚‍♀":"1f9da-200d-2640-fe0f","🧛‍♂":"1f9db-200d-2642-fe0f","🧛‍♀":"1f9db-200d-2640-fe0f","🧜‍♂":"1f9dc-200d-2642-fe0f","🧜‍♀":"1f9dc-200d-2640-fe0f","🧝‍♂":"1f9dd-200d-2642-fe0f","🧝‍♀":"1f9dd-200d-2640-fe0f","🧞‍♂":"1f9de-200d-2642-fe0f","🧞‍♀":"1f9de-200d-2640-fe0f","🧟‍♂":"1f9df-200d-2642-fe0f","🧟‍♀":"1f9df-200d-2640-fe0f","💆‍♂":"1f486-200d-2642-fe0f","💆‍♀":"1f486-200d-2640-fe0f","💇‍♂":"1f487-200d-2642-fe0f","💇‍♀":"1f487-200d-2640-fe0f","🚶‍♂":"1f6b6-200d-2642-fe0f","🚶‍♀":"1f6b6-200d-2640-fe0f","🧍‍♂":"1f9cd-200d-2642-fe0f","🧍‍♀":"1f9cd-200d-2640-fe0f","🧎‍♂":"1f9ce-200d-2642-fe0f","🧎‍♀":"1f9ce-200d-2640-fe0f","🧑‍🦯":"1f9d1-200d-1f9af","👨‍🦯":"1f468-200d-1f9af","👩‍🦯":"1f469-200d-1f9af","🧑‍🦼":"1f9d1-200d-1f9bc","👨‍🦼":"1f468-200d-1f9bc","👩‍🦼":"1f469-200d-1f9bc","🧑‍🦽":"1f9d1-200d-1f9bd","👨‍🦽":"1f468-200d-1f9bd","👩‍🦽":"1f469-200d-1f9bd","🏃‍♂":"1f3c3-200d-2642-fe0f","🏃‍♀":"1f3c3-200d-2640-fe0f","👯‍♂":"1f46f-200d-2642-fe0f","👯‍♀":"1f46f-200d-2640-fe0f","🧖‍♂":"1f9d6-200d-2642-fe0f","🧖‍♀":"1f9d6-200d-2640-fe0f","🧗‍♂":"1f9d7-200d-2642-fe0f","🧗‍♀":"1f9d7-200d-2640-fe0f","🏌‍♂":"1f3cc-fe0f-200d-2642-fe0f","🏌‍♀":"1f3cc-fe0f-200d-2640-fe0f","🏄‍♂":"1f3c4-200d-2642-fe0f","🏄‍♀":"1f3c4-200d-2640-fe0f","🚣‍♂":"1f6a3-200d-2642-fe0f","🚣‍♀":"1f6a3-200d-2640-fe0f","🏊‍♂":"1f3ca-200d-2642-fe0f","🏊‍♀":"1f3ca-200d-2640-fe0f","⛹‍♂":"26f9-fe0f-200d-2642-fe0f","⛹‍♀":"26f9-fe0f-200d-2640-fe0f","🏋‍♂":"1f3cb-fe0f-200d-2642-fe0f","🏋‍♀":"1f3cb-fe0f-200d-2640-fe0f","🚴‍♂":"1f6b4-200d-2642-fe0f","🚴‍♀":"1f6b4-200d-2640-fe0f","🚵‍♂":"1f6b5-200d-2642-fe0f","🚵‍♀":"1f6b5-200d-2640-fe0f","🤸‍♂":"1f938-200d-2642-fe0f","🤸‍♀":"1f938-200d-2640-fe0f","🤼‍♂":"1f93c-200d-2642-fe0f","🤼‍♀":"1f93c-200d-2640-fe0f","🤽‍♂":"1f93d-200d-2642-fe0f","🤽‍♀":"1f93d-200d-2640-fe0f","🤾‍♂":"1f93e-200d-2642-fe0f","🤾‍♀":"1f93e-200d-2640-fe0f","🤹‍♂":"1f939-200d-2642-fe0f","🤹‍♀":"1f939-200d-2640-fe0f","🧘‍♂":"1f9d8-200d-2642-fe0f","🧘‍♀":"1f9d8-200d-2640-fe0f","👨‍👦":"1f468-200d-1f466","👨‍👧":"1f468-200d-1f467","👩‍👦":"1f469-200d-1f466","👩‍👧":"1f469-200d-1f467","🐕‍🦺":"1f415-200d-1f9ba","🐈‍⬛":"1f408-200d-2b1b","🐻‍❄":"1f43b-200d-2744-fe0f","#️⃣":"23-20e3","*️⃣":"2a-20e3","0️⃣":"30-20e3","1️⃣":"31-20e3","2️⃣":"32-20e3","3️⃣":"33-20e3","4️⃣":"34-20e3","5️⃣":"35-20e3","6️⃣":"36-20e3","7️⃣":"37-20e3","8️⃣":"38-20e3","9️⃣":"39-20e3","🏳‍🌈":"1f3f3-fe0f-200d-1f308","🏳‍⚧":"1f3f3-fe0f-200d-26a7-fe0f","🏴‍☠":"1f3f4-200d-2620-fe0f","😶‍🌫️":"1f636-200d-1f32b-fe0f","❤️‍🔥":"2764-fe0f-200d-1f525","❤️‍🩹":"2764-fe0f-200d-1fa79","👁‍🗨️":"1f441-200d-1f5e8","👁️‍🗨":"1f441-200d-1f5e8","🧔‍♂️":"1f9d4-200d-2642-fe0f","🧔🏻‍♂":"1f9d4-1f3fb-200d-2642-fe0f","🧔🏼‍♂":"1f9d4-1f3fc-200d-2642-fe0f","🧔🏽‍♂":"1f9d4-1f3fd-200d-2642-fe0f","🧔🏾‍♂":"1f9d4-1f3fe-200d-2642-fe0f","🧔🏿‍♂":"1f9d4-1f3ff-200d-2642-fe0f","🧔‍♀️":"1f9d4-200d-2640-fe0f","🧔🏻‍♀":"1f9d4-1f3fb-200d-2640-fe0f","🧔🏼‍♀":"1f9d4-1f3fc-200d-2640-fe0f","🧔🏽‍♀":"1f9d4-1f3fd-200d-2640-fe0f","🧔🏾‍♀":"1f9d4-1f3fe-200d-2640-fe0f","🧔🏿‍♀":"1f9d4-1f3ff-200d-2640-fe0f","👨🏻‍🦰":"1f468-1f3fb-200d-1f9b0","👨🏼‍🦰":"1f468-1f3fc-200d-1f9b0","👨🏽‍🦰":"1f468-1f3fd-200d-1f9b0","👨🏾‍🦰":"1f468-1f3fe-200d-1f9b0","👨🏿‍🦰":"1f468-1f3ff-200d-1f9b0","👨🏻‍🦱":"1f468-1f3fb-200d-1f9b1","👨🏼‍🦱":"1f468-1f3fc-200d-1f9b1","👨🏽‍🦱":"1f468-1f3fd-200d-1f9b1","👨🏾‍🦱":"1f468-1f3fe-200d-1f9b1","👨🏿‍🦱":"1f468-1f3ff-200d-1f9b1","👨🏻‍🦳":"1f468-1f3fb-200d-1f9b3","👨🏼‍🦳":"1f468-1f3fc-200d-1f9b3","👨🏽‍🦳":"1f468-1f3fd-200d-1f9b3","👨🏾‍🦳":"1f468-1f3fe-200d-1f9b3","👨🏿‍🦳":"1f468-1f3ff-200d-1f9b3","👨🏻‍🦲":"1f468-1f3fb-200d-1f9b2","👨🏼‍🦲":"1f468-1f3fc-200d-1f9b2","👨🏽‍🦲":"1f468-1f3fd-200d-1f9b2","👨🏾‍🦲":"1f468-1f3fe-200d-1f9b2","👨🏿‍🦲":"1f468-1f3ff-200d-1f9b2","👩🏻‍🦰":"1f469-1f3fb-200d-1f9b0","👩🏼‍🦰":"1f469-1f3fc-200d-1f9b0","👩🏽‍🦰":"1f469-1f3fd-200d-1f9b0","👩🏾‍🦰":"1f469-1f3fe-200d-1f9b0","👩🏿‍🦰":"1f469-1f3ff-200d-1f9b0","🧑🏻‍🦰":"1f9d1-1f3fb-200d-1f9b0","🧑🏼‍🦰":"1f9d1-1f3fc-200d-1f9b0","🧑🏽‍🦰":"1f9d1-1f3fd-200d-1f9b0","🧑🏾‍🦰":"1f9d1-1f3fe-200d-1f9b0","🧑🏿‍🦰":"1f9d1-1f3ff-200d-1f9b0","👩🏻‍🦱":"1f469-1f3fb-200d-1f9b1","👩🏼‍🦱":"1f469-1f3fc-200d-1f9b1","👩🏽‍🦱":"1f469-1f3fd-200d-1f9b1","👩🏾‍🦱":"1f469-1f3fe-200d-1f9b1","👩🏿‍🦱":"1f469-1f3ff-200d-1f9b1","🧑🏻‍🦱":"1f9d1-1f3fb-200d-1f9b1","🧑🏼‍🦱":"1f9d1-1f3fc-200d-1f9b1","🧑🏽‍🦱":"1f9d1-1f3fd-200d-1f9b1","🧑🏾‍🦱":"1f9d1-1f3fe-200d-1f9b1","🧑🏿‍🦱":"1f9d1-1f3ff-200d-1f9b1","👩🏻‍🦳":"1f469-1f3fb-200d-1f9b3","👩🏼‍🦳":"1f469-1f3fc-200d-1f9b3","👩🏽‍🦳":"1f469-1f3fd-200d-1f9b3","👩🏾‍🦳":"1f469-1f3fe-200d-1f9b3","👩🏿‍🦳":"1f469-1f3ff-200d-1f9b3","🧑🏻‍🦳":"1f9d1-1f3fb-200d-1f9b3","🧑🏼‍🦳":"1f9d1-1f3fc-200d-1f9b3","🧑🏽‍🦳":"1f9d1-1f3fd-200d-1f9b3","🧑🏾‍🦳":"1f9d1-1f3fe-200d-1f9b3","🧑🏿‍🦳":"1f9d1-1f3ff-200d-1f9b3","👩🏻‍🦲":"1f469-1f3fb-200d-1f9b2","👩🏼‍🦲":"1f469-1f3fc-200d-1f9b2","👩🏽‍🦲":"1f469-1f3fd-200d-1f9b2","👩🏾‍🦲":"1f469-1f3fe-200d-1f9b2","👩🏿‍🦲":"1f469-1f3ff-200d-1f9b2","🧑🏻‍🦲":"1f9d1-1f3fb-200d-1f9b2","🧑🏼‍🦲":"1f9d1-1f3fc-200d-1f9b2","🧑🏽‍🦲":"1f9d1-1f3fd-200d-1f9b2","🧑🏾‍🦲":"1f9d1-1f3fe-200d-1f9b2","🧑🏿‍🦲":"1f9d1-1f3ff-200d-1f9b2","👱‍♀️":"1f471-200d-2640-fe0f","👱🏻‍♀":"1f471-1f3fb-200d-2640-fe0f","👱🏼‍♀":"1f471-1f3fc-200d-2640-fe0f","👱🏽‍♀":"1f471-1f3fd-200d-2640-fe0f","👱🏾‍♀":"1f471-1f3fe-200d-2640-fe0f","👱🏿‍♀":"1f471-1f3ff-200d-2640-fe0f","👱‍♂️":"1f471-200d-2642-fe0f","👱🏻‍♂":"1f471-1f3fb-200d-2642-fe0f","👱🏼‍♂":"1f471-1f3fc-200d-2642-fe0f","👱🏽‍♂":"1f471-1f3fd-200d-2642-fe0f","👱🏾‍♂":"1f471-1f3fe-200d-2642-fe0f","👱🏿‍♂":"1f471-1f3ff-200d-2642-fe0f","🙍‍♂️":"1f64d-200d-2642-fe0f","🙍🏻‍♂":"1f64d-1f3fb-200d-2642-fe0f","🙍🏼‍♂":"1f64d-1f3fc-200d-2642-fe0f","🙍🏽‍♂":"1f64d-1f3fd-200d-2642-fe0f","🙍🏾‍♂":"1f64d-1f3fe-200d-2642-fe0f","🙍🏿‍♂":"1f64d-1f3ff-200d-2642-fe0f","🙍‍♀️":"1f64d-200d-2640-fe0f","🙍🏻‍♀":"1f64d-1f3fb-200d-2640-fe0f","🙍🏼‍♀":"1f64d-1f3fc-200d-2640-fe0f","🙍🏽‍♀":"1f64d-1f3fd-200d-2640-fe0f","🙍🏾‍♀":"1f64d-1f3fe-200d-2640-fe0f","🙍🏿‍♀":"1f64d-1f3ff-200d-2640-fe0f","🙎‍♂️":"1f64e-200d-2642-fe0f","🙎🏻‍♂":"1f64e-1f3fb-200d-2642-fe0f","🙎🏼‍♂":"1f64e-1f3fc-200d-2642-fe0f","🙎🏽‍♂":"1f64e-1f3fd-200d-2642-fe0f","🙎🏾‍♂":"1f64e-1f3fe-200d-2642-fe0f","🙎🏿‍♂":"1f64e-1f3ff-200d-2642-fe0f","🙎‍♀️":"1f64e-200d-2640-fe0f","🙎🏻‍♀":"1f64e-1f3fb-200d-2640-fe0f","🙎🏼‍♀":"1f64e-1f3fc-200d-2640-fe0f","🙎🏽‍♀":"1f64e-1f3fd-200d-2640-fe0f","🙎🏾‍♀":"1f64e-1f3fe-200d-2640-fe0f","🙎🏿‍♀":"1f64e-1f3ff-200d-2640-fe0f","🙅‍♂️":"1f645-200d-2642-fe0f","🙅🏻‍♂":"1f645-1f3fb-200d-2642-fe0f","🙅🏼‍♂":"1f645-1f3fc-200d-2642-fe0f","🙅🏽‍♂":"1f645-1f3fd-200d-2642-fe0f","🙅🏾‍♂":"1f645-1f3fe-200d-2642-fe0f","🙅🏿‍♂":"1f645-1f3ff-200d-2642-fe0f","🙅‍♀️":"1f645-200d-2640-fe0f","🙅🏻‍♀":"1f645-1f3fb-200d-2640-fe0f","🙅🏼‍♀":"1f645-1f3fc-200d-2640-fe0f","🙅🏽‍♀":"1f645-1f3fd-200d-2640-fe0f","🙅🏾‍♀":"1f645-1f3fe-200d-2640-fe0f","🙅🏿‍♀":"1f645-1f3ff-200d-2640-fe0f","🙆‍♂️":"1f646-200d-2642-fe0f","🙆🏻‍♂":"1f646-1f3fb-200d-2642-fe0f","🙆🏼‍♂":"1f646-1f3fc-200d-2642-fe0f","🙆🏽‍♂":"1f646-1f3fd-200d-2642-fe0f","🙆🏾‍♂":"1f646-1f3fe-200d-2642-fe0f","🙆🏿‍♂":"1f646-1f3ff-200d-2642-fe0f","🙆‍♀️":"1f646-200d-2640-fe0f","🙆🏻‍♀":"1f646-1f3fb-200d-2640-fe0f","🙆🏼‍♀":"1f646-1f3fc-200d-2640-fe0f","🙆🏽‍♀":"1f646-1f3fd-200d-2640-fe0f","🙆🏾‍♀":"1f646-1f3fe-200d-2640-fe0f","🙆🏿‍♀":"1f646-1f3ff-200d-2640-fe0f","💁‍♂️":"1f481-200d-2642-fe0f","💁🏻‍♂":"1f481-1f3fb-200d-2642-fe0f","💁🏼‍♂":"1f481-1f3fc-200d-2642-fe0f","💁🏽‍♂":"1f481-1f3fd-200d-2642-fe0f","💁🏾‍♂":"1f481-1f3fe-200d-2642-fe0f","💁🏿‍♂":"1f481-1f3ff-200d-2642-fe0f","💁‍♀️":"1f481-200d-2640-fe0f","💁🏻‍♀":"1f481-1f3fb-200d-2640-fe0f","💁🏼‍♀":"1f481-1f3fc-200d-2640-fe0f","💁🏽‍♀":"1f481-1f3fd-200d-2640-fe0f","💁🏾‍♀":"1f481-1f3fe-200d-2640-fe0f","💁🏿‍♀":"1f481-1f3ff-200d-2640-fe0f","🙋‍♂️":"1f64b-200d-2642-fe0f","🙋🏻‍♂":"1f64b-1f3fb-200d-2642-fe0f","🙋🏼‍♂":"1f64b-1f3fc-200d-2642-fe0f","🙋🏽‍♂":"1f64b-1f3fd-200d-2642-fe0f","🙋🏾‍♂":"1f64b-1f3fe-200d-2642-fe0f","🙋🏿‍♂":"1f64b-1f3ff-200d-2642-fe0f","🙋‍♀️":"1f64b-200d-2640-fe0f","🙋🏻‍♀":"1f64b-1f3fb-200d-2640-fe0f","🙋🏼‍♀":"1f64b-1f3fc-200d-2640-fe0f","🙋🏽‍♀":"1f64b-1f3fd-200d-2640-fe0f","🙋🏾‍♀":"1f64b-1f3fe-200d-2640-fe0f","🙋🏿‍♀":"1f64b-1f3ff-200d-2640-fe0f","🧏‍♂️":"1f9cf-200d-2642-fe0f","🧏🏻‍♂":"1f9cf-1f3fb-200d-2642-fe0f","🧏🏼‍♂":"1f9cf-1f3fc-200d-2642-fe0f","🧏🏽‍♂":"1f9cf-1f3fd-200d-2642-fe0f","🧏🏾‍♂":"1f9cf-1f3fe-200d-2642-fe0f","🧏🏿‍♂":"1f9cf-1f3ff-200d-2642-fe0f","🧏‍♀️":"1f9cf-200d-2640-fe0f","🧏🏻‍♀":"1f9cf-1f3fb-200d-2640-fe0f","🧏🏼‍♀":"1f9cf-1f3fc-200d-2640-fe0f","🧏🏽‍♀":"1f9cf-1f3fd-200d-2640-fe0f","🧏🏾‍♀":"1f9cf-1f3fe-200d-2640-fe0f","🧏🏿‍♀":"1f9cf-1f3ff-200d-2640-fe0f","🙇‍♂️":"1f647-200d-2642-fe0f","🙇🏻‍♂":"1f647-1f3fb-200d-2642-fe0f","🙇🏼‍♂":"1f647-1f3fc-200d-2642-fe0f","🙇🏽‍♂":"1f647-1f3fd-200d-2642-fe0f","🙇🏾‍♂":"1f647-1f3fe-200d-2642-fe0f","🙇🏿‍♂":"1f647-1f3ff-200d-2642-fe0f","🙇‍♀️":"1f647-200d-2640-fe0f","🙇🏻‍♀":"1f647-1f3fb-200d-2640-fe0f","🙇🏼‍♀":"1f647-1f3fc-200d-2640-fe0f","🙇🏽‍♀":"1f647-1f3fd-200d-2640-fe0f","🙇🏾‍♀":"1f647-1f3fe-200d-2640-fe0f","🙇🏿‍♀":"1f647-1f3ff-200d-2640-fe0f","🤦‍♂️":"1f926-200d-2642-fe0f","🤦🏻‍♂":"1f926-1f3fb-200d-2642-fe0f","🤦🏼‍♂":"1f926-1f3fc-200d-2642-fe0f","🤦🏽‍♂":"1f926-1f3fd-200d-2642-fe0f","🤦🏾‍♂":"1f926-1f3fe-200d-2642-fe0f","🤦🏿‍♂":"1f926-1f3ff-200d-2642-fe0f","🤦‍♀️":"1f926-200d-2640-fe0f","🤦🏻‍♀":"1f926-1f3fb-200d-2640-fe0f","🤦🏼‍♀":"1f926-1f3fc-200d-2640-fe0f","🤦🏽‍♀":"1f926-1f3fd-200d-2640-fe0f","🤦🏾‍♀":"1f926-1f3fe-200d-2640-fe0f","🤦🏿‍♀":"1f926-1f3ff-200d-2640-fe0f","🤷‍♂️":"1f937-200d-2642-fe0f","🤷🏻‍♂":"1f937-1f3fb-200d-2642-fe0f","🤷🏼‍♂":"1f937-1f3fc-200d-2642-fe0f","🤷🏽‍♂":"1f937-1f3fd-200d-2642-fe0f","🤷🏾‍♂":"1f937-1f3fe-200d-2642-fe0f","🤷🏿‍♂":"1f937-1f3ff-200d-2642-fe0f","🤷‍♀️":"1f937-200d-2640-fe0f","🤷🏻‍♀":"1f937-1f3fb-200d-2640-fe0f","🤷🏼‍♀":"1f937-1f3fc-200d-2640-fe0f","🤷🏽‍♀":"1f937-1f3fd-200d-2640-fe0f","🤷🏾‍♀":"1f937-1f3fe-200d-2640-fe0f","🤷🏿‍♀":"1f937-1f3ff-200d-2640-fe0f","🧑‍⚕️":"1f9d1-200d-2695-fe0f","🧑🏻‍⚕":"1f9d1-1f3fb-200d-2695-fe0f","🧑🏼‍⚕":"1f9d1-1f3fc-200d-2695-fe0f","🧑🏽‍⚕":"1f9d1-1f3fd-200d-2695-fe0f","🧑🏾‍⚕":"1f9d1-1f3fe-200d-2695-fe0f","🧑🏿‍⚕":"1f9d1-1f3ff-200d-2695-fe0f","👨‍⚕️":"1f468-200d-2695-fe0f","👨🏻‍⚕":"1f468-1f3fb-200d-2695-fe0f","👨🏼‍⚕":"1f468-1f3fc-200d-2695-fe0f","👨🏽‍⚕":"1f468-1f3fd-200d-2695-fe0f","👨🏾‍⚕":"1f468-1f3fe-200d-2695-fe0f","👨🏿‍⚕":"1f468-1f3ff-200d-2695-fe0f","👩‍⚕️":"1f469-200d-2695-fe0f","👩🏻‍⚕":"1f469-1f3fb-200d-2695-fe0f","👩🏼‍⚕":"1f469-1f3fc-200d-2695-fe0f","👩🏽‍⚕":"1f469-1f3fd-200d-2695-fe0f","👩🏾‍⚕":"1f469-1f3fe-200d-2695-fe0f","👩🏿‍⚕":"1f469-1f3ff-200d-2695-fe0f","🧑🏻‍🎓":"1f9d1-1f3fb-200d-1f393","🧑🏼‍🎓":"1f9d1-1f3fc-200d-1f393","🧑🏽‍🎓":"1f9d1-1f3fd-200d-1f393","🧑🏾‍🎓":"1f9d1-1f3fe-200d-1f393","🧑🏿‍🎓":"1f9d1-1f3ff-200d-1f393","👨🏻‍🎓":"1f468-1f3fb-200d-1f393","👨🏼‍🎓":"1f468-1f3fc-200d-1f393","👨🏽‍🎓":"1f468-1f3fd-200d-1f393","👨🏾‍🎓":"1f468-1f3fe-200d-1f393","👨🏿‍🎓":"1f468-1f3ff-200d-1f393","👩🏻‍🎓":"1f469-1f3fb-200d-1f393","👩🏼‍🎓":"1f469-1f3fc-200d-1f393","👩🏽‍🎓":"1f469-1f3fd-200d-1f393","👩🏾‍🎓":"1f469-1f3fe-200d-1f393","👩🏿‍🎓":"1f469-1f3ff-200d-1f393","🧑🏻‍🏫":"1f9d1-1f3fb-200d-1f3eb","🧑🏼‍🏫":"1f9d1-1f3fc-200d-1f3eb","🧑🏽‍🏫":"1f9d1-1f3fd-200d-1f3eb","🧑🏾‍🏫":"1f9d1-1f3fe-200d-1f3eb","🧑🏿‍🏫":"1f9d1-1f3ff-200d-1f3eb","👨🏻‍🏫":"1f468-1f3fb-200d-1f3eb","👨🏼‍🏫":"1f468-1f3fc-200d-1f3eb","👨🏽‍🏫":"1f468-1f3fd-200d-1f3eb","👨🏾‍🏫":"1f468-1f3fe-200d-1f3eb","👨🏿‍🏫":"1f468-1f3ff-200d-1f3eb","👩🏻‍🏫":"1f469-1f3fb-200d-1f3eb","👩🏼‍🏫":"1f469-1f3fc-200d-1f3eb","👩🏽‍🏫":"1f469-1f3fd-200d-1f3eb","👩🏾‍🏫":"1f469-1f3fe-200d-1f3eb","👩🏿‍🏫":"1f469-1f3ff-200d-1f3eb","🧑‍⚖️":"1f9d1-200d-2696-fe0f","🧑🏻‍⚖":"1f9d1-1f3fb-200d-2696-fe0f","🧑🏼‍⚖":"1f9d1-1f3fc-200d-2696-fe0f","🧑🏽‍⚖":"1f9d1-1f3fd-200d-2696-fe0f","🧑🏾‍⚖":"1f9d1-1f3fe-200d-2696-fe0f","🧑🏿‍⚖":"1f9d1-1f3ff-200d-2696-fe0f","👨‍⚖️":"1f468-200d-2696-fe0f","👨🏻‍⚖":"1f468-1f3fb-200d-2696-fe0f","👨🏼‍⚖":"1f468-1f3fc-200d-2696-fe0f","👨🏽‍⚖":"1f468-1f3fd-200d-2696-fe0f","👨🏾‍⚖":"1f468-1f3fe-200d-2696-fe0f","👨🏿‍⚖":"1f468-1f3ff-200d-2696-fe0f","👩‍⚖️":"1f469-200d-2696-fe0f","👩🏻‍⚖":"1f469-1f3fb-200d-2696-fe0f","👩🏼‍⚖":"1f469-1f3fc-200d-2696-fe0f","👩🏽‍⚖":"1f469-1f3fd-200d-2696-fe0f","👩🏾‍⚖":"1f469-1f3fe-200d-2696-fe0f","👩🏿‍⚖":"1f469-1f3ff-200d-2696-fe0f","🧑🏻‍🌾":"1f9d1-1f3fb-200d-1f33e","🧑🏼‍🌾":"1f9d1-1f3fc-200d-1f33e","🧑🏽‍🌾":"1f9d1-1f3fd-200d-1f33e","🧑🏾‍🌾":"1f9d1-1f3fe-200d-1f33e","🧑🏿‍🌾":"1f9d1-1f3ff-200d-1f33e","👨🏻‍🌾":"1f468-1f3fb-200d-1f33e","👨🏼‍🌾":"1f468-1f3fc-200d-1f33e","👨🏽‍🌾":"1f468-1f3fd-200d-1f33e","👨🏾‍🌾":"1f468-1f3fe-200d-1f33e","👨🏿‍🌾":"1f468-1f3ff-200d-1f33e","👩🏻‍🌾":"1f469-1f3fb-200d-1f33e","👩🏼‍🌾":"1f469-1f3fc-200d-1f33e","👩🏽‍🌾":"1f469-1f3fd-200d-1f33e","👩🏾‍🌾":"1f469-1f3fe-200d-1f33e","👩🏿‍🌾":"1f469-1f3ff-200d-1f33e","🧑🏻‍🍳":"1f9d1-1f3fb-200d-1f373","🧑🏼‍🍳":"1f9d1-1f3fc-200d-1f373","🧑🏽‍🍳":"1f9d1-1f3fd-200d-1f373","🧑🏾‍🍳":"1f9d1-1f3fe-200d-1f373","🧑🏿‍🍳":"1f9d1-1f3ff-200d-1f373","👨🏻‍🍳":"1f468-1f3fb-200d-1f373","👨🏼‍🍳":"1f468-1f3fc-200d-1f373","👨🏽‍🍳":"1f468-1f3fd-200d-1f373","👨🏾‍🍳":"1f468-1f3fe-200d-1f373","👨🏿‍🍳":"1f468-1f3ff-200d-1f373","👩🏻‍🍳":"1f469-1f3fb-200d-1f373","👩🏼‍🍳":"1f469-1f3fc-200d-1f373","👩🏽‍🍳":"1f469-1f3fd-200d-1f373","👩🏾‍🍳":"1f469-1f3fe-200d-1f373","👩🏿‍🍳":"1f469-1f3ff-200d-1f373","🧑🏻‍🔧":"1f9d1-1f3fb-200d-1f527","🧑🏼‍🔧":"1f9d1-1f3fc-200d-1f527","🧑🏽‍🔧":"1f9d1-1f3fd-200d-1f527","🧑🏾‍🔧":"1f9d1-1f3fe-200d-1f527","🧑🏿‍🔧":"1f9d1-1f3ff-200d-1f527","👨🏻‍🔧":"1f468-1f3fb-200d-1f527","👨🏼‍🔧":"1f468-1f3fc-200d-1f527","👨🏽‍🔧":"1f468-1f3fd-200d-1f527","👨🏾‍🔧":"1f468-1f3fe-200d-1f527","👨🏿‍🔧":"1f468-1f3ff-200d-1f527","👩🏻‍🔧":"1f469-1f3fb-200d-1f527","👩🏼‍🔧":"1f469-1f3fc-200d-1f527","👩🏽‍🔧":"1f469-1f3fd-200d-1f527","👩🏾‍🔧":"1f469-1f3fe-200d-1f527","👩🏿‍🔧":"1f469-1f3ff-200d-1f527","🧑🏻‍🏭":"1f9d1-1f3fb-200d-1f3ed","🧑🏼‍🏭":"1f9d1-1f3fc-200d-1f3ed","🧑🏽‍🏭":"1f9d1-1f3fd-200d-1f3ed","🧑🏾‍🏭":"1f9d1-1f3fe-200d-1f3ed","🧑🏿‍🏭":"1f9d1-1f3ff-200d-1f3ed","👨🏻‍🏭":"1f468-1f3fb-200d-1f3ed","👨🏼‍🏭":"1f468-1f3fc-200d-1f3ed","👨🏽‍🏭":"1f468-1f3fd-200d-1f3ed","👨🏾‍🏭":"1f468-1f3fe-200d-1f3ed","👨🏿‍🏭":"1f468-1f3ff-200d-1f3ed","👩🏻‍🏭":"1f469-1f3fb-200d-1f3ed","👩🏼‍🏭":"1f469-1f3fc-200d-1f3ed","👩🏽‍🏭":"1f469-1f3fd-200d-1f3ed","👩🏾‍🏭":"1f469-1f3fe-200d-1f3ed","👩🏿‍🏭":"1f469-1f3ff-200d-1f3ed","🧑🏻‍💼":"1f9d1-1f3fb-200d-1f4bc","🧑🏼‍💼":"1f9d1-1f3fc-200d-1f4bc","🧑🏽‍💼":"1f9d1-1f3fd-200d-1f4bc","🧑🏾‍💼":"1f9d1-1f3fe-200d-1f4bc","🧑🏿‍💼":"1f9d1-1f3ff-200d-1f4bc","👨🏻‍💼":"1f468-1f3fb-200d-1f4bc","👨🏼‍💼":"1f468-1f3fc-200d-1f4bc","👨🏽‍💼":"1f468-1f3fd-200d-1f4bc","👨🏾‍💼":"1f468-1f3fe-200d-1f4bc","👨🏿‍💼":"1f468-1f3ff-200d-1f4bc","👩🏻‍💼":"1f469-1f3fb-200d-1f4bc","👩🏼‍💼":"1f469-1f3fc-200d-1f4bc","👩🏽‍💼":"1f469-1f3fd-200d-1f4bc","👩🏾‍💼":"1f469-1f3fe-200d-1f4bc","👩🏿‍💼":"1f469-1f3ff-200d-1f4bc","🧑🏻‍🔬":"1f9d1-1f3fb-200d-1f52c","🧑🏼‍🔬":"1f9d1-1f3fc-200d-1f52c","🧑🏽‍🔬":"1f9d1-1f3fd-200d-1f52c","🧑🏾‍🔬":"1f9d1-1f3fe-200d-1f52c","🧑🏿‍🔬":"1f9d1-1f3ff-200d-1f52c","👨🏻‍🔬":"1f468-1f3fb-200d-1f52c","👨🏼‍🔬":"1f468-1f3fc-200d-1f52c","👨🏽‍🔬":"1f468-1f3fd-200d-1f52c","👨🏾‍🔬":"1f468-1f3fe-200d-1f52c","👨🏿‍🔬":"1f468-1f3ff-200d-1f52c","👩🏻‍🔬":"1f469-1f3fb-200d-1f52c","👩🏼‍🔬":"1f469-1f3fc-200d-1f52c","👩🏽‍🔬":"1f469-1f3fd-200d-1f52c","👩🏾‍🔬":"1f469-1f3fe-200d-1f52c","👩🏿‍🔬":"1f469-1f3ff-200d-1f52c","🧑🏻‍💻":"1f9d1-1f3fb-200d-1f4bb","🧑🏼‍💻":"1f9d1-1f3fc-200d-1f4bb","🧑🏽‍💻":"1f9d1-1f3fd-200d-1f4bb","🧑🏾‍💻":"1f9d1-1f3fe-200d-1f4bb","🧑🏿‍💻":"1f9d1-1f3ff-200d-1f4bb","👨🏻‍💻":"1f468-1f3fb-200d-1f4bb","👨🏼‍💻":"1f468-1f3fc-200d-1f4bb","👨🏽‍💻":"1f468-1f3fd-200d-1f4bb","👨🏾‍💻":"1f468-1f3fe-200d-1f4bb","👨🏿‍💻":"1f468-1f3ff-200d-1f4bb","👩🏻‍💻":"1f469-1f3fb-200d-1f4bb","👩🏼‍💻":"1f469-1f3fc-200d-1f4bb","👩🏽‍💻":"1f469-1f3fd-200d-1f4bb","👩🏾‍💻":"1f469-1f3fe-200d-1f4bb","👩🏿‍💻":"1f469-1f3ff-200d-1f4bb","🧑🏻‍🎤":"1f9d1-1f3fb-200d-1f3a4","🧑🏼‍🎤":"1f9d1-1f3fc-200d-1f3a4","🧑🏽‍🎤":"1f9d1-1f3fd-200d-1f3a4","🧑🏾‍🎤":"1f9d1-1f3fe-200d-1f3a4","🧑🏿‍🎤":"1f9d1-1f3ff-200d-1f3a4","👨🏻‍🎤":"1f468-1f3fb-200d-1f3a4","👨🏼‍🎤":"1f468-1f3fc-200d-1f3a4","👨🏽‍🎤":"1f468-1f3fd-200d-1f3a4","👨🏾‍🎤":"1f468-1f3fe-200d-1f3a4","👨🏿‍🎤":"1f468-1f3ff-200d-1f3a4","👩🏻‍🎤":"1f469-1f3fb-200d-1f3a4","👩🏼‍🎤":"1f469-1f3fc-200d-1f3a4","👩🏽‍🎤":"1f469-1f3fd-200d-1f3a4","👩🏾‍🎤":"1f469-1f3fe-200d-1f3a4","👩🏿‍🎤":"1f469-1f3ff-200d-1f3a4","🧑🏻‍🎨":"1f9d1-1f3fb-200d-1f3a8","🧑🏼‍🎨":"1f9d1-1f3fc-200d-1f3a8","🧑🏽‍🎨":"1f9d1-1f3fd-200d-1f3a8","🧑🏾‍🎨":"1f9d1-1f3fe-200d-1f3a8","🧑🏿‍🎨":"1f9d1-1f3ff-200d-1f3a8","👨🏻‍🎨":"1f468-1f3fb-200d-1f3a8","👨🏼‍🎨":"1f468-1f3fc-200d-1f3a8","👨🏽‍🎨":"1f468-1f3fd-200d-1f3a8","👨🏾‍🎨":"1f468-1f3fe-200d-1f3a8","👨🏿‍🎨":"1f468-1f3ff-200d-1f3a8","👩🏻‍🎨":"1f469-1f3fb-200d-1f3a8","👩🏼‍🎨":"1f469-1f3fc-200d-1f3a8","👩🏽‍🎨":"1f469-1f3fd-200d-1f3a8","👩🏾‍🎨":"1f469-1f3fe-200d-1f3a8","👩🏿‍🎨":"1f469-1f3ff-200d-1f3a8","🧑‍✈️":"1f9d1-200d-2708-fe0f","🧑🏻‍✈":"1f9d1-1f3fb-200d-2708-fe0f","🧑🏼‍✈":"1f9d1-1f3fc-200d-2708-fe0f","🧑🏽‍✈":"1f9d1-1f3fd-200d-2708-fe0f","🧑🏾‍✈":"1f9d1-1f3fe-200d-2708-fe0f","🧑🏿‍✈":"1f9d1-1f3ff-200d-2708-fe0f","👨‍✈️":"1f468-200d-2708-fe0f","👨🏻‍✈":"1f468-1f3fb-200d-2708-fe0f","👨🏼‍✈":"1f468-1f3fc-200d-2708-fe0f","👨🏽‍✈":"1f468-1f3fd-200d-2708-fe0f","👨🏾‍✈":"1f468-1f3fe-200d-2708-fe0f","👨🏿‍✈":"1f468-1f3ff-200d-2708-fe0f","👩‍✈️":"1f469-200d-2708-fe0f","👩🏻‍✈":"1f469-1f3fb-200d-2708-fe0f","👩🏼‍✈":"1f469-1f3fc-200d-2708-fe0f","👩🏽‍✈":"1f469-1f3fd-200d-2708-fe0f","👩🏾‍✈":"1f469-1f3fe-200d-2708-fe0f","👩🏿‍✈":"1f469-1f3ff-200d-2708-fe0f","🧑🏻‍🚀":"1f9d1-1f3fb-200d-1f680","🧑🏼‍🚀":"1f9d1-1f3fc-200d-1f680","🧑🏽‍🚀":"1f9d1-1f3fd-200d-1f680","🧑🏾‍🚀":"1f9d1-1f3fe-200d-1f680","🧑🏿‍🚀":"1f9d1-1f3ff-200d-1f680","👨🏻‍🚀":"1f468-1f3fb-200d-1f680","👨🏼‍🚀":"1f468-1f3fc-200d-1f680","👨🏽‍🚀":"1f468-1f3fd-200d-1f680","👨🏾‍🚀":"1f468-1f3fe-200d-1f680","👨🏿‍🚀":"1f468-1f3ff-200d-1f680","👩🏻‍🚀":"1f469-1f3fb-200d-1f680","👩🏼‍🚀":"1f469-1f3fc-200d-1f680","👩🏽‍🚀":"1f469-1f3fd-200d-1f680","👩🏾‍🚀":"1f469-1f3fe-200d-1f680","👩🏿‍🚀":"1f469-1f3ff-200d-1f680","🧑🏻‍🚒":"1f9d1-1f3fb-200d-1f692","🧑🏼‍🚒":"1f9d1-1f3fc-200d-1f692","🧑🏽‍🚒":"1f9d1-1f3fd-200d-1f692","🧑🏾‍🚒":"1f9d1-1f3fe-200d-1f692","🧑🏿‍🚒":"1f9d1-1f3ff-200d-1f692","👨🏻‍🚒":"1f468-1f3fb-200d-1f692","👨🏼‍🚒":"1f468-1f3fc-200d-1f692","👨🏽‍🚒":"1f468-1f3fd-200d-1f692","👨🏾‍🚒":"1f468-1f3fe-200d-1f692","👨🏿‍🚒":"1f468-1f3ff-200d-1f692","👩🏻‍🚒":"1f469-1f3fb-200d-1f692","👩🏼‍🚒":"1f469-1f3fc-200d-1f692","👩🏽‍🚒":"1f469-1f3fd-200d-1f692","👩🏾‍🚒":"1f469-1f3fe-200d-1f692","👩🏿‍🚒":"1f469-1f3ff-200d-1f692","👮‍♂️":"1f46e-200d-2642-fe0f","👮🏻‍♂":"1f46e-1f3fb-200d-2642-fe0f","👮🏼‍♂":"1f46e-1f3fc-200d-2642-fe0f","👮🏽‍♂":"1f46e-1f3fd-200d-2642-fe0f","👮🏾‍♂":"1f46e-1f3fe-200d-2642-fe0f","👮🏿‍♂":"1f46e-1f3ff-200d-2642-fe0f","👮‍♀️":"1f46e-200d-2640-fe0f","👮🏻‍♀":"1f46e-1f3fb-200d-2640-fe0f","👮🏼‍♀":"1f46e-1f3fc-200d-2640-fe0f","👮🏽‍♀":"1f46e-1f3fd-200d-2640-fe0f","👮🏾‍♀":"1f46e-1f3fe-200d-2640-fe0f","👮🏿‍♀":"1f46e-1f3ff-200d-2640-fe0f","🕵‍♂️":"1f575-fe0f-200d-2642-fe0f","🕵️‍♂":"1f575-fe0f-200d-2642-fe0f","🕵🏻‍♂":"1f575-1f3fb-200d-2642-fe0f","🕵🏼‍♂":"1f575-1f3fc-200d-2642-fe0f","🕵🏽‍♂":"1f575-1f3fd-200d-2642-fe0f","🕵🏾‍♂":"1f575-1f3fe-200d-2642-fe0f","🕵🏿‍♂":"1f575-1f3ff-200d-2642-fe0f","🕵‍♀️":"1f575-fe0f-200d-2640-fe0f","🕵️‍♀":"1f575-fe0f-200d-2640-fe0f","🕵🏻‍♀":"1f575-1f3fb-200d-2640-fe0f","🕵🏼‍♀":"1f575-1f3fc-200d-2640-fe0f","🕵🏽‍♀":"1f575-1f3fd-200d-2640-fe0f","🕵🏾‍♀":"1f575-1f3fe-200d-2640-fe0f","🕵🏿‍♀":"1f575-1f3ff-200d-2640-fe0f","💂‍♂️":"1f482-200d-2642-fe0f","💂🏻‍♂":"1f482-1f3fb-200d-2642-fe0f","💂🏼‍♂":"1f482-1f3fc-200d-2642-fe0f","💂🏽‍♂":"1f482-1f3fd-200d-2642-fe0f","💂🏾‍♂":"1f482-1f3fe-200d-2642-fe0f","💂🏿‍♂":"1f482-1f3ff-200d-2642-fe0f","💂‍♀️":"1f482-200d-2640-fe0f","💂🏻‍♀":"1f482-1f3fb-200d-2640-fe0f","💂🏼‍♀":"1f482-1f3fc-200d-2640-fe0f","💂🏽‍♀":"1f482-1f3fd-200d-2640-fe0f","💂🏾‍♀":"1f482-1f3fe-200d-2640-fe0f","💂🏿‍♀":"1f482-1f3ff-200d-2640-fe0f","👷‍♂️":"1f477-200d-2642-fe0f","👷🏻‍♂":"1f477-1f3fb-200d-2642-fe0f","👷🏼‍♂":"1f477-1f3fc-200d-2642-fe0f","👷🏽‍♂":"1f477-1f3fd-200d-2642-fe0f","👷🏾‍♂":"1f477-1f3fe-200d-2642-fe0f","👷🏿‍♂":"1f477-1f3ff-200d-2642-fe0f","👷‍♀️":"1f477-200d-2640-fe0f","👷🏻‍♀":"1f477-1f3fb-200d-2640-fe0f","👷🏼‍♀":"1f477-1f3fc-200d-2640-fe0f","👷🏽‍♀":"1f477-1f3fd-200d-2640-fe0f","👷🏾‍♀":"1f477-1f3fe-200d-2640-fe0f","👷🏿‍♀":"1f477-1f3ff-200d-2640-fe0f","👳‍♂️":"1f473-200d-2642-fe0f","👳🏻‍♂":"1f473-1f3fb-200d-2642-fe0f","👳🏼‍♂":"1f473-1f3fc-200d-2642-fe0f","👳🏽‍♂":"1f473-1f3fd-200d-2642-fe0f","👳🏾‍♂":"1f473-1f3fe-200d-2642-fe0f","👳🏿‍♂":"1f473-1f3ff-200d-2642-fe0f","👳‍♀️":"1f473-200d-2640-fe0f","👳🏻‍♀":"1f473-1f3fb-200d-2640-fe0f","👳🏼‍♀":"1f473-1f3fc-200d-2640-fe0f","👳🏽‍♀":"1f473-1f3fd-200d-2640-fe0f","👳🏾‍♀":"1f473-1f3fe-200d-2640-fe0f","👳🏿‍♀":"1f473-1f3ff-200d-2640-fe0f","🤵‍♂️":"1f935-200d-2642-fe0f","🤵🏻‍♂":"1f935-1f3fb-200d-2642-fe0f","🤵🏼‍♂":"1f935-1f3fc-200d-2642-fe0f","🤵🏽‍♂":"1f935-1f3fd-200d-2642-fe0f","🤵🏾‍♂":"1f935-1f3fe-200d-2642-fe0f","🤵🏿‍♂":"1f935-1f3ff-200d-2642-fe0f","🤵‍♀️":"1f935-200d-2640-fe0f","🤵🏻‍♀":"1f935-1f3fb-200d-2640-fe0f","🤵🏼‍♀":"1f935-1f3fc-200d-2640-fe0f","🤵🏽‍♀":"1f935-1f3fd-200d-2640-fe0f","🤵🏾‍♀":"1f935-1f3fe-200d-2640-fe0f","🤵🏿‍♀":"1f935-1f3ff-200d-2640-fe0f","👰‍♂️":"1f470-200d-2642-fe0f","👰🏻‍♂":"1f470-1f3fb-200d-2642-fe0f","👰🏼‍♂":"1f470-1f3fc-200d-2642-fe0f","👰🏽‍♂":"1f470-1f3fd-200d-2642-fe0f","👰🏾‍♂":"1f470-1f3fe-200d-2642-fe0f","👰🏿‍♂":"1f470-1f3ff-200d-2642-fe0f","👰‍♀️":"1f470-200d-2640-fe0f","👰🏻‍♀":"1f470-1f3fb-200d-2640-fe0f","👰🏼‍♀":"1f470-1f3fc-200d-2640-fe0f","👰🏽‍♀":"1f470-1f3fd-200d-2640-fe0f","👰🏾‍♀":"1f470-1f3fe-200d-2640-fe0f","👰🏿‍♀":"1f470-1f3ff-200d-2640-fe0f","👩🏻‍🍼":"1f469-1f3fb-200d-1f37c","👩🏼‍🍼":"1f469-1f3fc-200d-1f37c","👩🏽‍🍼":"1f469-1f3fd-200d-1f37c","👩🏾‍🍼":"1f469-1f3fe-200d-1f37c","👩🏿‍🍼":"1f469-1f3ff-200d-1f37c","👨🏻‍🍼":"1f468-1f3fb-200d-1f37c","👨🏼‍🍼":"1f468-1f3fc-200d-1f37c","👨🏽‍🍼":"1f468-1f3fd-200d-1f37c","👨🏾‍🍼":"1f468-1f3fe-200d-1f37c","👨🏿‍🍼":"1f468-1f3ff-200d-1f37c","🧑🏻‍🍼":"1f9d1-1f3fb-200d-1f37c","🧑🏼‍🍼":"1f9d1-1f3fc-200d-1f37c","🧑🏽‍🍼":"1f9d1-1f3fd-200d-1f37c","🧑🏾‍🍼":"1f9d1-1f3fe-200d-1f37c","🧑🏿‍🍼":"1f9d1-1f3ff-200d-1f37c","🧑🏻‍🎄":"1f9d1-1f3fb-200d-1f384","🧑🏼‍🎄":"1f9d1-1f3fc-200d-1f384","🧑🏽‍🎄":"1f9d1-1f3fd-200d-1f384","🧑🏾‍🎄":"1f9d1-1f3fe-200d-1f384","🧑🏿‍🎄":"1f9d1-1f3ff-200d-1f384","🦸‍♂️":"1f9b8-200d-2642-fe0f","🦸🏻‍♂":"1f9b8-1f3fb-200d-2642-fe0f","🦸🏼‍♂":"1f9b8-1f3fc-200d-2642-fe0f","🦸🏽‍♂":"1f9b8-1f3fd-200d-2642-fe0f","🦸🏾‍♂":"1f9b8-1f3fe-200d-2642-fe0f","🦸🏿‍♂":"1f9b8-1f3ff-200d-2642-fe0f","🦸‍♀️":"1f9b8-200d-2640-fe0f","🦸🏻‍♀":"1f9b8-1f3fb-200d-2640-fe0f","🦸🏼‍♀":"1f9b8-1f3fc-200d-2640-fe0f","🦸🏽‍♀":"1f9b8-1f3fd-200d-2640-fe0f","🦸🏾‍♀":"1f9b8-1f3fe-200d-2640-fe0f","🦸🏿‍♀":"1f9b8-1f3ff-200d-2640-fe0f","🦹‍♂️":"1f9b9-200d-2642-fe0f","🦹🏻‍♂":"1f9b9-1f3fb-200d-2642-fe0f","🦹🏼‍♂":"1f9b9-1f3fc-200d-2642-fe0f","🦹🏽‍♂":"1f9b9-1f3fd-200d-2642-fe0f","🦹🏾‍♂":"1f9b9-1f3fe-200d-2642-fe0f","🦹🏿‍♂":"1f9b9-1f3ff-200d-2642-fe0f","🦹‍♀️":"1f9b9-200d-2640-fe0f","🦹🏻‍♀":"1f9b9-1f3fb-200d-2640-fe0f","🦹🏼‍♀":"1f9b9-1f3fc-200d-2640-fe0f","🦹🏽‍♀":"1f9b9-1f3fd-200d-2640-fe0f","🦹🏾‍♀":"1f9b9-1f3fe-200d-2640-fe0f","🦹🏿‍♀":"1f9b9-1f3ff-200d-2640-fe0f","🧙‍♂️":"1f9d9-200d-2642-fe0f","🧙🏻‍♂":"1f9d9-1f3fb-200d-2642-fe0f","🧙🏼‍♂":"1f9d9-1f3fc-200d-2642-fe0f","🧙🏽‍♂":"1f9d9-1f3fd-200d-2642-fe0f","🧙🏾‍♂":"1f9d9-1f3fe-200d-2642-fe0f","🧙🏿‍♂":"1f9d9-1f3ff-200d-2642-fe0f","🧙‍♀️":"1f9d9-200d-2640-fe0f","🧙🏻‍♀":"1f9d9-1f3fb-200d-2640-fe0f","🧙🏼‍♀":"1f9d9-1f3fc-200d-2640-fe0f","🧙🏽‍♀":"1f9d9-1f3fd-200d-2640-fe0f","🧙🏾‍♀":"1f9d9-1f3fe-200d-2640-fe0f","🧙🏿‍♀":"1f9d9-1f3ff-200d-2640-fe0f","🧚‍♂️":"1f9da-200d-2642-fe0f","🧚🏻‍♂":"1f9da-1f3fb-200d-2642-fe0f","🧚🏼‍♂":"1f9da-1f3fc-200d-2642-fe0f","🧚🏽‍♂":"1f9da-1f3fd-200d-2642-fe0f","🧚🏾‍♂":"1f9da-1f3fe-200d-2642-fe0f","🧚🏿‍♂":"1f9da-1f3ff-200d-2642-fe0f","🧚‍♀️":"1f9da-200d-2640-fe0f","🧚🏻‍♀":"1f9da-1f3fb-200d-2640-fe0f","🧚🏼‍♀":"1f9da-1f3fc-200d-2640-fe0f","🧚🏽‍♀":"1f9da-1f3fd-200d-2640-fe0f","🧚🏾‍♀":"1f9da-1f3fe-200d-2640-fe0f","🧚🏿‍♀":"1f9da-1f3ff-200d-2640-fe0f","🧛‍♂️":"1f9db-200d-2642-fe0f","🧛🏻‍♂":"1f9db-1f3fb-200d-2642-fe0f","🧛🏼‍♂":"1f9db-1f3fc-200d-2642-fe0f","🧛🏽‍♂":"1f9db-1f3fd-200d-2642-fe0f","🧛🏾‍♂":"1f9db-1f3fe-200d-2642-fe0f","🧛🏿‍♂":"1f9db-1f3ff-200d-2642-fe0f","🧛‍♀️":"1f9db-200d-2640-fe0f","🧛🏻‍♀":"1f9db-1f3fb-200d-2640-fe0f","🧛🏼‍♀":"1f9db-1f3fc-200d-2640-fe0f","🧛🏽‍♀":"1f9db-1f3fd-200d-2640-fe0f","🧛🏾‍♀":"1f9db-1f3fe-200d-2640-fe0f","🧛🏿‍♀":"1f9db-1f3ff-200d-2640-fe0f","🧜‍♂️":"1f9dc-200d-2642-fe0f","🧜🏻‍♂":"1f9dc-1f3fb-200d-2642-fe0f","🧜🏼‍♂":"1f9dc-1f3fc-200d-2642-fe0f","🧜🏽‍♂":"1f9dc-1f3fd-200d-2642-fe0f","🧜🏾‍♂":"1f9dc-1f3fe-200d-2642-fe0f","🧜🏿‍♂":"1f9dc-1f3ff-200d-2642-fe0f","🧜‍♀️":"1f9dc-200d-2640-fe0f","🧜🏻‍♀":"1f9dc-1f3fb-200d-2640-fe0f","🧜🏼‍♀":"1f9dc-1f3fc-200d-2640-fe0f","🧜🏽‍♀":"1f9dc-1f3fd-200d-2640-fe0f","🧜🏾‍♀":"1f9dc-1f3fe-200d-2640-fe0f","🧜🏿‍♀":"1f9dc-1f3ff-200d-2640-fe0f","🧝‍♂️":"1f9dd-200d-2642-fe0f","🧝🏻‍♂":"1f9dd-1f3fb-200d-2642-fe0f","🧝🏼‍♂":"1f9dd-1f3fc-200d-2642-fe0f","🧝🏽‍♂":"1f9dd-1f3fd-200d-2642-fe0f","🧝🏾‍♂":"1f9dd-1f3fe-200d-2642-fe0f","🧝🏿‍♂":"1f9dd-1f3ff-200d-2642-fe0f","🧝‍♀️":"1f9dd-200d-2640-fe0f","🧝🏻‍♀":"1f9dd-1f3fb-200d-2640-fe0f","🧝🏼‍♀":"1f9dd-1f3fc-200d-2640-fe0f","🧝🏽‍♀":"1f9dd-1f3fd-200d-2640-fe0f","🧝🏾‍♀":"1f9dd-1f3fe-200d-2640-fe0f","🧝🏿‍♀":"1f9dd-1f3ff-200d-2640-fe0f","🧞‍♂️":"1f9de-200d-2642-fe0f","🧞‍♀️":"1f9de-200d-2640-fe0f","🧟‍♂️":"1f9df-200d-2642-fe0f","🧟‍♀️":"1f9df-200d-2640-fe0f","💆‍♂️":"1f486-200d-2642-fe0f","💆🏻‍♂":"1f486-1f3fb-200d-2642-fe0f","💆🏼‍♂":"1f486-1f3fc-200d-2642-fe0f","💆🏽‍♂":"1f486-1f3fd-200d-2642-fe0f","💆🏾‍♂":"1f486-1f3fe-200d-2642-fe0f","💆🏿‍♂":"1f486-1f3ff-200d-2642-fe0f","💆‍♀️":"1f486-200d-2640-fe0f","💆🏻‍♀":"1f486-1f3fb-200d-2640-fe0f","💆🏼‍♀":"1f486-1f3fc-200d-2640-fe0f","💆🏽‍♀":"1f486-1f3fd-200d-2640-fe0f","💆🏾‍♀":"1f486-1f3fe-200d-2640-fe0f","💆🏿‍♀":"1f486-1f3ff-200d-2640-fe0f","💇‍♂️":"1f487-200d-2642-fe0f","💇🏻‍♂":"1f487-1f3fb-200d-2642-fe0f","💇🏼‍♂":"1f487-1f3fc-200d-2642-fe0f","💇🏽‍♂":"1f487-1f3fd-200d-2642-fe0f","💇🏾‍♂":"1f487-1f3fe-200d-2642-fe0f","💇🏿‍♂":"1f487-1f3ff-200d-2642-fe0f","💇‍♀️":"1f487-200d-2640-fe0f","💇🏻‍♀":"1f487-1f3fb-200d-2640-fe0f","💇🏼‍♀":"1f487-1f3fc-200d-2640-fe0f","💇🏽‍♀":"1f487-1f3fd-200d-2640-fe0f","💇🏾‍♀":"1f487-1f3fe-200d-2640-fe0f","💇🏿‍♀":"1f487-1f3ff-200d-2640-fe0f","🚶‍♂️":"1f6b6-200d-2642-fe0f","🚶🏻‍♂":"1f6b6-1f3fb-200d-2642-fe0f","🚶🏼‍♂":"1f6b6-1f3fc-200d-2642-fe0f","🚶🏽‍♂":"1f6b6-1f3fd-200d-2642-fe0f","🚶🏾‍♂":"1f6b6-1f3fe-200d-2642-fe0f","🚶🏿‍♂":"1f6b6-1f3ff-200d-2642-fe0f","🚶‍♀️":"1f6b6-200d-2640-fe0f","🚶🏻‍♀":"1f6b6-1f3fb-200d-2640-fe0f","🚶🏼‍♀":"1f6b6-1f3fc-200d-2640-fe0f","🚶🏽‍♀":"1f6b6-1f3fd-200d-2640-fe0f","🚶🏾‍♀":"1f6b6-1f3fe-200d-2640-fe0f","🚶🏿‍♀":"1f6b6-1f3ff-200d-2640-fe0f","🧍‍♂️":"1f9cd-200d-2642-fe0f","🧍🏻‍♂":"1f9cd-1f3fb-200d-2642-fe0f","🧍🏼‍♂":"1f9cd-1f3fc-200d-2642-fe0f","🧍🏽‍♂":"1f9cd-1f3fd-200d-2642-fe0f","🧍🏾‍♂":"1f9cd-1f3fe-200d-2642-fe0f","🧍🏿‍♂":"1f9cd-1f3ff-200d-2642-fe0f","🧍‍♀️":"1f9cd-200d-2640-fe0f","🧍🏻‍♀":"1f9cd-1f3fb-200d-2640-fe0f","🧍🏼‍♀":"1f9cd-1f3fc-200d-2640-fe0f","🧍🏽‍♀":"1f9cd-1f3fd-200d-2640-fe0f","🧍🏾‍♀":"1f9cd-1f3fe-200d-2640-fe0f","🧍🏿‍♀":"1f9cd-1f3ff-200d-2640-fe0f","🧎‍♂️":"1f9ce-200d-2642-fe0f","🧎🏻‍♂":"1f9ce-1f3fb-200d-2642-fe0f","🧎🏼‍♂":"1f9ce-1f3fc-200d-2642-fe0f","🧎🏽‍♂":"1f9ce-1f3fd-200d-2642-fe0f","🧎🏾‍♂":"1f9ce-1f3fe-200d-2642-fe0f","🧎🏿‍♂":"1f9ce-1f3ff-200d-2642-fe0f","🧎‍♀️":"1f9ce-200d-2640-fe0f","🧎🏻‍♀":"1f9ce-1f3fb-200d-2640-fe0f","🧎🏼‍♀":"1f9ce-1f3fc-200d-2640-fe0f","🧎🏽‍♀":"1f9ce-1f3fd-200d-2640-fe0f","🧎🏾‍♀":"1f9ce-1f3fe-200d-2640-fe0f","🧎🏿‍♀":"1f9ce-1f3ff-200d-2640-fe0f","🧑🏻‍🦯":"1f9d1-1f3fb-200d-1f9af","🧑🏼‍🦯":"1f9d1-1f3fc-200d-1f9af","🧑🏽‍🦯":"1f9d1-1f3fd-200d-1f9af","🧑🏾‍🦯":"1f9d1-1f3fe-200d-1f9af","🧑🏿‍🦯":"1f9d1-1f3ff-200d-1f9af","👨🏻‍🦯":"1f468-1f3fb-200d-1f9af","👨🏼‍🦯":"1f468-1f3fc-200d-1f9af","👨🏽‍🦯":"1f468-1f3fd-200d-1f9af","👨🏾‍🦯":"1f468-1f3fe-200d-1f9af","👨🏿‍🦯":"1f468-1f3ff-200d-1f9af","👩🏻‍🦯":"1f469-1f3fb-200d-1f9af","👩🏼‍🦯":"1f469-1f3fc-200d-1f9af","👩🏽‍🦯":"1f469-1f3fd-200d-1f9af","👩🏾‍🦯":"1f469-1f3fe-200d-1f9af","👩🏿‍🦯":"1f469-1f3ff-200d-1f9af","🧑🏻‍🦼":"1f9d1-1f3fb-200d-1f9bc","🧑🏼‍🦼":"1f9d1-1f3fc-200d-1f9bc","🧑🏽‍🦼":"1f9d1-1f3fd-200d-1f9bc","🧑🏾‍🦼":"1f9d1-1f3fe-200d-1f9bc","🧑🏿‍🦼":"1f9d1-1f3ff-200d-1f9bc","👨🏻‍🦼":"1f468-1f3fb-200d-1f9bc","👨🏼‍🦼":"1f468-1f3fc-200d-1f9bc","👨🏽‍🦼":"1f468-1f3fd-200d-1f9bc","👨🏾‍🦼":"1f468-1f3fe-200d-1f9bc","👨🏿‍🦼":"1f468-1f3ff-200d-1f9bc","👩🏻‍🦼":"1f469-1f3fb-200d-1f9bc","👩🏼‍🦼":"1f469-1f3fc-200d-1f9bc","👩🏽‍🦼":"1f469-1f3fd-200d-1f9bc","👩🏾‍🦼":"1f469-1f3fe-200d-1f9bc","👩🏿‍🦼":"1f469-1f3ff-200d-1f9bc","🧑🏻‍🦽":"1f9d1-1f3fb-200d-1f9bd","🧑🏼‍🦽":"1f9d1-1f3fc-200d-1f9bd","🧑🏽‍🦽":"1f9d1-1f3fd-200d-1f9bd","🧑🏾‍🦽":"1f9d1-1f3fe-200d-1f9bd","🧑🏿‍🦽":"1f9d1-1f3ff-200d-1f9bd","👨🏻‍🦽":"1f468-1f3fb-200d-1f9bd","👨🏼‍🦽":"1f468-1f3fc-200d-1f9bd","👨🏽‍🦽":"1f468-1f3fd-200d-1f9bd","👨🏾‍🦽":"1f468-1f3fe-200d-1f9bd","👨🏿‍🦽":"1f468-1f3ff-200d-1f9bd","👩🏻‍🦽":"1f469-1f3fb-200d-1f9bd","👩🏼‍🦽":"1f469-1f3fc-200d-1f9bd","👩🏽‍🦽":"1f469-1f3fd-200d-1f9bd","👩🏾‍🦽":"1f469-1f3fe-200d-1f9bd","👩🏿‍🦽":"1f469-1f3ff-200d-1f9bd","🏃‍♂️":"1f3c3-200d-2642-fe0f","🏃🏻‍♂":"1f3c3-1f3fb-200d-2642-fe0f","🏃🏼‍♂":"1f3c3-1f3fc-200d-2642-fe0f","🏃🏽‍♂":"1f3c3-1f3fd-200d-2642-fe0f","🏃🏾‍♂":"1f3c3-1f3fe-200d-2642-fe0f","🏃🏿‍♂":"1f3c3-1f3ff-200d-2642-fe0f","🏃‍♀️":"1f3c3-200d-2640-fe0f","🏃🏻‍♀":"1f3c3-1f3fb-200d-2640-fe0f","🏃🏼‍♀":"1f3c3-1f3fc-200d-2640-fe0f","🏃🏽‍♀":"1f3c3-1f3fd-200d-2640-fe0f","🏃🏾‍♀":"1f3c3-1f3fe-200d-2640-fe0f","🏃🏿‍♀":"1f3c3-1f3ff-200d-2640-fe0f","👯‍♂️":"1f46f-200d-2642-fe0f","👯‍♀️":"1f46f-200d-2640-fe0f","🧖‍♂️":"1f9d6-200d-2642-fe0f","🧖🏻‍♂":"1f9d6-1f3fb-200d-2642-fe0f","🧖🏼‍♂":"1f9d6-1f3fc-200d-2642-fe0f","🧖🏽‍♂":"1f9d6-1f3fd-200d-2642-fe0f","🧖🏾‍♂":"1f9d6-1f3fe-200d-2642-fe0f","🧖🏿‍♂":"1f9d6-1f3ff-200d-2642-fe0f","🧖‍♀️":"1f9d6-200d-2640-fe0f","🧖🏻‍♀":"1f9d6-1f3fb-200d-2640-fe0f","🧖🏼‍♀":"1f9d6-1f3fc-200d-2640-fe0f","🧖🏽‍♀":"1f9d6-1f3fd-200d-2640-fe0f","🧖🏾‍♀":"1f9d6-1f3fe-200d-2640-fe0f","🧖🏿‍♀":"1f9d6-1f3ff-200d-2640-fe0f","🧗‍♂️":"1f9d7-200d-2642-fe0f","🧗🏻‍♂":"1f9d7-1f3fb-200d-2642-fe0f","🧗🏼‍♂":"1f9d7-1f3fc-200d-2642-fe0f","🧗🏽‍♂":"1f9d7-1f3fd-200d-2642-fe0f","🧗🏾‍♂":"1f9d7-1f3fe-200d-2642-fe0f","🧗🏿‍♂":"1f9d7-1f3ff-200d-2642-fe0f","🧗‍♀️":"1f9d7-200d-2640-fe0f","🧗🏻‍♀":"1f9d7-1f3fb-200d-2640-fe0f","🧗🏼‍♀":"1f9d7-1f3fc-200d-2640-fe0f","🧗🏽‍♀":"1f9d7-1f3fd-200d-2640-fe0f","🧗🏾‍♀":"1f9d7-1f3fe-200d-2640-fe0f","🧗🏿‍♀":"1f9d7-1f3ff-200d-2640-fe0f","🏌‍♂️":"1f3cc-fe0f-200d-2642-fe0f","🏌️‍♂":"1f3cc-fe0f-200d-2642-fe0f","🏌🏻‍♂":"1f3cc-1f3fb-200d-2642-fe0f","🏌🏼‍♂":"1f3cc-1f3fc-200d-2642-fe0f","🏌🏽‍♂":"1f3cc-1f3fd-200d-2642-fe0f","🏌🏾‍♂":"1f3cc-1f3fe-200d-2642-fe0f","🏌🏿‍♂":"1f3cc-1f3ff-200d-2642-fe0f","🏌‍♀️":"1f3cc-fe0f-200d-2640-fe0f","🏌️‍♀":"1f3cc-fe0f-200d-2640-fe0f","🏌🏻‍♀":"1f3cc-1f3fb-200d-2640-fe0f","🏌🏼‍♀":"1f3cc-1f3fc-200d-2640-fe0f","🏌🏽‍♀":"1f3cc-1f3fd-200d-2640-fe0f","🏌🏾‍♀":"1f3cc-1f3fe-200d-2640-fe0f","🏌🏿‍♀":"1f3cc-1f3ff-200d-2640-fe0f","🏄‍♂️":"1f3c4-200d-2642-fe0f","🏄🏻‍♂":"1f3c4-1f3fb-200d-2642-fe0f","🏄🏼‍♂":"1f3c4-1f3fc-200d-2642-fe0f","🏄🏽‍♂":"1f3c4-1f3fd-200d-2642-fe0f","🏄🏾‍♂":"1f3c4-1f3fe-200d-2642-fe0f","🏄🏿‍♂":"1f3c4-1f3ff-200d-2642-fe0f","🏄‍♀️":"1f3c4-200d-2640-fe0f","🏄🏻‍♀":"1f3c4-1f3fb-200d-2640-fe0f","🏄🏼‍♀":"1f3c4-1f3fc-200d-2640-fe0f","🏄🏽‍♀":"1f3c4-1f3fd-200d-2640-fe0f","🏄🏾‍♀":"1f3c4-1f3fe-200d-2640-fe0f","🏄🏿‍♀":"1f3c4-1f3ff-200d-2640-fe0f","🚣‍♂️":"1f6a3-200d-2642-fe0f","🚣🏻‍♂":"1f6a3-1f3fb-200d-2642-fe0f","🚣🏼‍♂":"1f6a3-1f3fc-200d-2642-fe0f","🚣🏽‍♂":"1f6a3-1f3fd-200d-2642-fe0f","🚣🏾‍♂":"1f6a3-1f3fe-200d-2642-fe0f","🚣🏿‍♂":"1f6a3-1f3ff-200d-2642-fe0f","🚣‍♀️":"1f6a3-200d-2640-fe0f","🚣🏻‍♀":"1f6a3-1f3fb-200d-2640-fe0f","🚣🏼‍♀":"1f6a3-1f3fc-200d-2640-fe0f","🚣🏽‍♀":"1f6a3-1f3fd-200d-2640-fe0f","🚣🏾‍♀":"1f6a3-1f3fe-200d-2640-fe0f","🚣🏿‍♀":"1f6a3-1f3ff-200d-2640-fe0f","🏊‍♂️":"1f3ca-200d-2642-fe0f","🏊🏻‍♂":"1f3ca-1f3fb-200d-2642-fe0f","🏊🏼‍♂":"1f3ca-1f3fc-200d-2642-fe0f","🏊🏽‍♂":"1f3ca-1f3fd-200d-2642-fe0f","🏊🏾‍♂":"1f3ca-1f3fe-200d-2642-fe0f","🏊🏿‍♂":"1f3ca-1f3ff-200d-2642-fe0f","🏊‍♀️":"1f3ca-200d-2640-fe0f","🏊🏻‍♀":"1f3ca-1f3fb-200d-2640-fe0f","🏊🏼‍♀":"1f3ca-1f3fc-200d-2640-fe0f","🏊🏽‍♀":"1f3ca-1f3fd-200d-2640-fe0f","🏊🏾‍♀":"1f3ca-1f3fe-200d-2640-fe0f","🏊🏿‍♀":"1f3ca-1f3ff-200d-2640-fe0f","⛹‍♂️":"26f9-fe0f-200d-2642-fe0f","⛹️‍♂":"26f9-fe0f-200d-2642-fe0f","⛹🏻‍♂":"26f9-1f3fb-200d-2642-fe0f","⛹🏼‍♂":"26f9-1f3fc-200d-2642-fe0f","⛹🏽‍♂":"26f9-1f3fd-200d-2642-fe0f","⛹🏾‍♂":"26f9-1f3fe-200d-2642-fe0f","⛹🏿‍♂":"26f9-1f3ff-200d-2642-fe0f","⛹‍♀️":"26f9-fe0f-200d-2640-fe0f","⛹️‍♀":"26f9-fe0f-200d-2640-fe0f","⛹🏻‍♀":"26f9-1f3fb-200d-2640-fe0f","⛹🏼‍♀":"26f9-1f3fc-200d-2640-fe0f","⛹🏽‍♀":"26f9-1f3fd-200d-2640-fe0f","⛹🏾‍♀":"26f9-1f3fe-200d-2640-fe0f","⛹🏿‍♀":"26f9-1f3ff-200d-2640-fe0f","🏋‍♂️":"1f3cb-fe0f-200d-2642-fe0f","🏋️‍♂":"1f3cb-fe0f-200d-2642-fe0f","🏋🏻‍♂":"1f3cb-1f3fb-200d-2642-fe0f","🏋🏼‍♂":"1f3cb-1f3fc-200d-2642-fe0f","🏋🏽‍♂":"1f3cb-1f3fd-200d-2642-fe0f","🏋🏾‍♂":"1f3cb-1f3fe-200d-2642-fe0f","🏋🏿‍♂":"1f3cb-1f3ff-200d-2642-fe0f","🏋‍♀️":"1f3cb-fe0f-200d-2640-fe0f","🏋️‍♀":"1f3cb-fe0f-200d-2640-fe0f","🏋🏻‍♀":"1f3cb-1f3fb-200d-2640-fe0f","🏋🏼‍♀":"1f3cb-1f3fc-200d-2640-fe0f","🏋🏽‍♀":"1f3cb-1f3fd-200d-2640-fe0f","🏋🏾‍♀":"1f3cb-1f3fe-200d-2640-fe0f","🏋🏿‍♀":"1f3cb-1f3ff-200d-2640-fe0f","🚴‍♂️":"1f6b4-200d-2642-fe0f","🚴🏻‍♂":"1f6b4-1f3fb-200d-2642-fe0f","🚴🏼‍♂":"1f6b4-1f3fc-200d-2642-fe0f","🚴🏽‍♂":"1f6b4-1f3fd-200d-2642-fe0f","🚴🏾‍♂":"1f6b4-1f3fe-200d-2642-fe0f","🚴🏿‍♂":"1f6b4-1f3ff-200d-2642-fe0f","🚴‍♀️":"1f6b4-200d-2640-fe0f","🚴🏻‍♀":"1f6b4-1f3fb-200d-2640-fe0f","🚴🏼‍♀":"1f6b4-1f3fc-200d-2640-fe0f","🚴🏽‍♀":"1f6b4-1f3fd-200d-2640-fe0f","🚴🏾‍♀":"1f6b4-1f3fe-200d-2640-fe0f","🚴🏿‍♀":"1f6b4-1f3ff-200d-2640-fe0f","🚵‍♂️":"1f6b5-200d-2642-fe0f","🚵🏻‍♂":"1f6b5-1f3fb-200d-2642-fe0f","🚵🏼‍♂":"1f6b5-1f3fc-200d-2642-fe0f","🚵🏽‍♂":"1f6b5-1f3fd-200d-2642-fe0f","🚵🏾‍♂":"1f6b5-1f3fe-200d-2642-fe0f","🚵🏿‍♂":"1f6b5-1f3ff-200d-2642-fe0f","🚵‍♀️":"1f6b5-200d-2640-fe0f","🚵🏻‍♀":"1f6b5-1f3fb-200d-2640-fe0f","🚵🏼‍♀":"1f6b5-1f3fc-200d-2640-fe0f","🚵🏽‍♀":"1f6b5-1f3fd-200d-2640-fe0f","🚵🏾‍♀":"1f6b5-1f3fe-200d-2640-fe0f","🚵🏿‍♀":"1f6b5-1f3ff-200d-2640-fe0f","🤸‍♂️":"1f938-200d-2642-fe0f","🤸🏻‍♂":"1f938-1f3fb-200d-2642-fe0f","🤸🏼‍♂":"1f938-1f3fc-200d-2642-fe0f","🤸🏽‍♂":"1f938-1f3fd-200d-2642-fe0f","🤸🏾‍♂":"1f938-1f3fe-200d-2642-fe0f","🤸🏿‍♂":"1f938-1f3ff-200d-2642-fe0f","🤸‍♀️":"1f938-200d-2640-fe0f","🤸🏻‍♀":"1f938-1f3fb-200d-2640-fe0f","🤸🏼‍♀":"1f938-1f3fc-200d-2640-fe0f","🤸🏽‍♀":"1f938-1f3fd-200d-2640-fe0f","🤸🏾‍♀":"1f938-1f3fe-200d-2640-fe0f","🤸🏿‍♀":"1f938-1f3ff-200d-2640-fe0f","🤼‍♂️":"1f93c-200d-2642-fe0f","🤼‍♀️":"1f93c-200d-2640-fe0f","🤽‍♂️":"1f93d-200d-2642-fe0f","🤽🏻‍♂":"1f93d-1f3fb-200d-2642-fe0f","🤽🏼‍♂":"1f93d-1f3fc-200d-2642-fe0f","🤽🏽‍♂":"1f93d-1f3fd-200d-2642-fe0f","🤽🏾‍♂":"1f93d-1f3fe-200d-2642-fe0f","🤽🏿‍♂":"1f93d-1f3ff-200d-2642-fe0f","🤽‍♀️":"1f93d-200d-2640-fe0f","🤽🏻‍♀":"1f93d-1f3fb-200d-2640-fe0f","🤽🏼‍♀":"1f93d-1f3fc-200d-2640-fe0f","🤽🏽‍♀":"1f93d-1f3fd-200d-2640-fe0f","🤽🏾‍♀":"1f93d-1f3fe-200d-2640-fe0f","🤽🏿‍♀":"1f93d-1f3ff-200d-2640-fe0f","🤾‍♂️":"1f93e-200d-2642-fe0f","🤾🏻‍♂":"1f93e-1f3fb-200d-2642-fe0f","🤾🏼‍♂":"1f93e-1f3fc-200d-2642-fe0f","🤾🏽‍♂":"1f93e-1f3fd-200d-2642-fe0f","🤾🏾‍♂":"1f93e-1f3fe-200d-2642-fe0f","🤾🏿‍♂":"1f93e-1f3ff-200d-2642-fe0f","🤾‍♀️":"1f93e-200d-2640-fe0f","🤾🏻‍♀":"1f93e-1f3fb-200d-2640-fe0f","🤾🏼‍♀":"1f93e-1f3fc-200d-2640-fe0f","🤾🏽‍♀":"1f93e-1f3fd-200d-2640-fe0f","🤾🏾‍♀":"1f93e-1f3fe-200d-2640-fe0f","🤾🏿‍♀":"1f93e-1f3ff-200d-2640-fe0f","🤹‍♂️":"1f939-200d-2642-fe0f","🤹🏻‍♂":"1f939-1f3fb-200d-2642-fe0f","🤹🏼‍♂":"1f939-1f3fc-200d-2642-fe0f","🤹🏽‍♂":"1f939-1f3fd-200d-2642-fe0f","🤹🏾‍♂":"1f939-1f3fe-200d-2642-fe0f","🤹🏿‍♂":"1f939-1f3ff-200d-2642-fe0f","🤹‍♀️":"1f939-200d-2640-fe0f","🤹🏻‍♀":"1f939-1f3fb-200d-2640-fe0f","🤹🏼‍♀":"1f939-1f3fc-200d-2640-fe0f","🤹🏽‍♀":"1f939-1f3fd-200d-2640-fe0f","🤹🏾‍♀":"1f939-1f3fe-200d-2640-fe0f","🤹🏿‍♀":"1f939-1f3ff-200d-2640-fe0f","🧘‍♂️":"1f9d8-200d-2642-fe0f","🧘🏻‍♂":"1f9d8-1f3fb-200d-2642-fe0f","🧘🏼‍♂":"1f9d8-1f3fc-200d-2642-fe0f","🧘🏽‍♂":"1f9d8-1f3fd-200d-2642-fe0f","🧘🏾‍♂":"1f9d8-1f3fe-200d-2642-fe0f","🧘🏿‍♂":"1f9d8-1f3ff-200d-2642-fe0f","🧘‍♀️":"1f9d8-200d-2640-fe0f","🧘🏻‍♀":"1f9d8-1f3fb-200d-2640-fe0f","🧘🏼‍♀":"1f9d8-1f3fc-200d-2640-fe0f","🧘🏽‍♀":"1f9d8-1f3fd-200d-2640-fe0f","🧘🏾‍♀":"1f9d8-1f3fe-200d-2640-fe0f","🧘🏿‍♀":"1f9d8-1f3ff-200d-2640-fe0f","🐻‍❄️":"1f43b-200d-2744-fe0f","🏳️‍🌈":"1f3f3-fe0f-200d-1f308","🏳‍⚧️":"1f3f3-fe0f-200d-26a7-fe0f","🏳️‍⚧":"1f3f3-fe0f-200d-26a7-fe0f","🏴‍☠️":"1f3f4-200d-2620-fe0f","👁️‍🗨️":"1f441-200d-1f5e8","🧔🏻‍♂️":"1f9d4-1f3fb-200d-2642-fe0f","🧔🏼‍♂️":"1f9d4-1f3fc-200d-2642-fe0f","🧔🏽‍♂️":"1f9d4-1f3fd-200d-2642-fe0f","🧔🏾‍♂️":"1f9d4-1f3fe-200d-2642-fe0f","🧔🏿‍♂️":"1f9d4-1f3ff-200d-2642-fe0f","🧔🏻‍♀️":"1f9d4-1f3fb-200d-2640-fe0f","🧔🏼‍♀️":"1f9d4-1f3fc-200d-2640-fe0f","🧔🏽‍♀️":"1f9d4-1f3fd-200d-2640-fe0f","🧔🏾‍♀️":"1f9d4-1f3fe-200d-2640-fe0f","🧔🏿‍♀️":"1f9d4-1f3ff-200d-2640-fe0f","👱🏻‍♀️":"1f471-1f3fb-200d-2640-fe0f","👱🏼‍♀️":"1f471-1f3fc-200d-2640-fe0f","👱🏽‍♀️":"1f471-1f3fd-200d-2640-fe0f","👱🏾‍♀️":"1f471-1f3fe-200d-2640-fe0f","👱🏿‍♀️":"1f471-1f3ff-200d-2640-fe0f","👱🏻‍♂️":"1f471-1f3fb-200d-2642-fe0f","👱🏼‍♂️":"1f471-1f3fc-200d-2642-fe0f","👱🏽‍♂️":"1f471-1f3fd-200d-2642-fe0f","👱🏾‍♂️":"1f471-1f3fe-200d-2642-fe0f","👱🏿‍♂️":"1f471-1f3ff-200d-2642-fe0f","🙍🏻‍♂️":"1f64d-1f3fb-200d-2642-fe0f","🙍🏼‍♂️":"1f64d-1f3fc-200d-2642-fe0f","🙍🏽‍♂️":"1f64d-1f3fd-200d-2642-fe0f","🙍🏾‍♂️":"1f64d-1f3fe-200d-2642-fe0f","🙍🏿‍♂️":"1f64d-1f3ff-200d-2642-fe0f","🙍🏻‍♀️":"1f64d-1f3fb-200d-2640-fe0f","🙍🏼‍♀️":"1f64d-1f3fc-200d-2640-fe0f","🙍🏽‍♀️":"1f64d-1f3fd-200d-2640-fe0f","🙍🏾‍♀️":"1f64d-1f3fe-200d-2640-fe0f","🙍🏿‍♀️":"1f64d-1f3ff-200d-2640-fe0f","🙎🏻‍♂️":"1f64e-1f3fb-200d-2642-fe0f","🙎🏼‍♂️":"1f64e-1f3fc-200d-2642-fe0f","🙎🏽‍♂️":"1f64e-1f3fd-200d-2642-fe0f","🙎🏾‍♂️":"1f64e-1f3fe-200d-2642-fe0f","🙎🏿‍♂️":"1f64e-1f3ff-200d-2642-fe0f","🙎🏻‍♀️":"1f64e-1f3fb-200d-2640-fe0f","🙎🏼‍♀️":"1f64e-1f3fc-200d-2640-fe0f","🙎🏽‍♀️":"1f64e-1f3fd-200d-2640-fe0f","🙎🏾‍♀️":"1f64e-1f3fe-200d-2640-fe0f","🙎🏿‍♀️":"1f64e-1f3ff-200d-2640-fe0f","🙅🏻‍♂️":"1f645-1f3fb-200d-2642-fe0f","🙅🏼‍♂️":"1f645-1f3fc-200d-2642-fe0f","🙅🏽‍♂️":"1f645-1f3fd-200d-2642-fe0f","🙅🏾‍♂️":"1f645-1f3fe-200d-2642-fe0f","🙅🏿‍♂️":"1f645-1f3ff-200d-2642-fe0f","🙅🏻‍♀️":"1f645-1f3fb-200d-2640-fe0f","🙅🏼‍♀️":"1f645-1f3fc-200d-2640-fe0f","🙅🏽‍♀️":"1f645-1f3fd-200d-2640-fe0f","🙅🏾‍♀️":"1f645-1f3fe-200d-2640-fe0f","🙅🏿‍♀️":"1f645-1f3ff-200d-2640-fe0f","🙆🏻‍♂️":"1f646-1f3fb-200d-2642-fe0f","🙆🏼‍♂️":"1f646-1f3fc-200d-2642-fe0f","🙆🏽‍♂️":"1f646-1f3fd-200d-2642-fe0f","🙆🏾‍♂️":"1f646-1f3fe-200d-2642-fe0f","🙆🏿‍♂️":"1f646-1f3ff-200d-2642-fe0f","🙆🏻‍♀️":"1f646-1f3fb-200d-2640-fe0f","🙆🏼‍♀️":"1f646-1f3fc-200d-2640-fe0f","🙆🏽‍♀️":"1f646-1f3fd-200d-2640-fe0f","🙆🏾‍♀️":"1f646-1f3fe-200d-2640-fe0f","🙆🏿‍♀️":"1f646-1f3ff-200d-2640-fe0f","💁🏻‍♂️":"1f481-1f3fb-200d-2642-fe0f","💁🏼‍♂️":"1f481-1f3fc-200d-2642-fe0f","💁🏽‍♂️":"1f481-1f3fd-200d-2642-fe0f","💁🏾‍♂️":"1f481-1f3fe-200d-2642-fe0f","💁🏿‍♂️":"1f481-1f3ff-200d-2642-fe0f","💁🏻‍♀️":"1f481-1f3fb-200d-2640-fe0f","💁🏼‍♀️":"1f481-1f3fc-200d-2640-fe0f","💁🏽‍♀️":"1f481-1f3fd-200d-2640-fe0f","💁🏾‍♀️":"1f481-1f3fe-200d-2640-fe0f","💁🏿‍♀️":"1f481-1f3ff-200d-2640-fe0f","🙋🏻‍♂️":"1f64b-1f3fb-200d-2642-fe0f","🙋🏼‍♂️":"1f64b-1f3fc-200d-2642-fe0f","🙋🏽‍♂️":"1f64b-1f3fd-200d-2642-fe0f","🙋🏾‍♂️":"1f64b-1f3fe-200d-2642-fe0f","🙋🏿‍♂️":"1f64b-1f3ff-200d-2642-fe0f","🙋🏻‍♀️":"1f64b-1f3fb-200d-2640-fe0f","🙋🏼‍♀️":"1f64b-1f3fc-200d-2640-fe0f","🙋🏽‍♀️":"1f64b-1f3fd-200d-2640-fe0f","🙋🏾‍♀️":"1f64b-1f3fe-200d-2640-fe0f","🙋🏿‍♀️":"1f64b-1f3ff-200d-2640-fe0f","🧏🏻‍♂️":"1f9cf-1f3fb-200d-2642-fe0f","🧏🏼‍♂️":"1f9cf-1f3fc-200d-2642-fe0f","🧏🏽‍♂️":"1f9cf-1f3fd-200d-2642-fe0f","🧏🏾‍♂️":"1f9cf-1f3fe-200d-2642-fe0f","🧏🏿‍♂️":"1f9cf-1f3ff-200d-2642-fe0f","🧏🏻‍♀️":"1f9cf-1f3fb-200d-2640-fe0f","🧏🏼‍♀️":"1f9cf-1f3fc-200d-2640-fe0f","🧏🏽‍♀️":"1f9cf-1f3fd-200d-2640-fe0f","🧏🏾‍♀️":"1f9cf-1f3fe-200d-2640-fe0f","🧏🏿‍♀️":"1f9cf-1f3ff-200d-2640-fe0f","🙇🏻‍♂️":"1f647-1f3fb-200d-2642-fe0f","🙇🏼‍♂️":"1f647-1f3fc-200d-2642-fe0f","🙇🏽‍♂️":"1f647-1f3fd-200d-2642-fe0f","🙇🏾‍♂️":"1f647-1f3fe-200d-2642-fe0f","🙇🏿‍♂️":"1f647-1f3ff-200d-2642-fe0f","🙇🏻‍♀️":"1f647-1f3fb-200d-2640-fe0f","🙇🏼‍♀️":"1f647-1f3fc-200d-2640-fe0f","🙇🏽‍♀️":"1f647-1f3fd-200d-2640-fe0f","🙇🏾‍♀️":"1f647-1f3fe-200d-2640-fe0f","🙇🏿‍♀️":"1f647-1f3ff-200d-2640-fe0f","🤦🏻‍♂️":"1f926-1f3fb-200d-2642-fe0f","🤦🏼‍♂️":"1f926-1f3fc-200d-2642-fe0f","🤦🏽‍♂️":"1f926-1f3fd-200d-2642-fe0f","🤦🏾‍♂️":"1f926-1f3fe-200d-2642-fe0f","🤦🏿‍♂️":"1f926-1f3ff-200d-2642-fe0f","🤦🏻‍♀️":"1f926-1f3fb-200d-2640-fe0f","🤦🏼‍♀️":"1f926-1f3fc-200d-2640-fe0f","🤦🏽‍♀️":"1f926-1f3fd-200d-2640-fe0f","🤦🏾‍♀️":"1f926-1f3fe-200d-2640-fe0f","🤦🏿‍♀️":"1f926-1f3ff-200d-2640-fe0f","🤷🏻‍♂️":"1f937-1f3fb-200d-2642-fe0f","🤷🏼‍♂️":"1f937-1f3fc-200d-2642-fe0f","🤷🏽‍♂️":"1f937-1f3fd-200d-2642-fe0f","🤷🏾‍♂️":"1f937-1f3fe-200d-2642-fe0f","🤷🏿‍♂️":"1f937-1f3ff-200d-2642-fe0f","🤷🏻‍♀️":"1f937-1f3fb-200d-2640-fe0f","🤷🏼‍♀️":"1f937-1f3fc-200d-2640-fe0f","🤷🏽‍♀️":"1f937-1f3fd-200d-2640-fe0f","🤷🏾‍♀️":"1f937-1f3fe-200d-2640-fe0f","🤷🏿‍♀️":"1f937-1f3ff-200d-2640-fe0f","🧑🏻‍⚕️":"1f9d1-1f3fb-200d-2695-fe0f","🧑🏼‍⚕️":"1f9d1-1f3fc-200d-2695-fe0f","🧑🏽‍⚕️":"1f9d1-1f3fd-200d-2695-fe0f","🧑🏾‍⚕️":"1f9d1-1f3fe-200d-2695-fe0f","🧑🏿‍⚕️":"1f9d1-1f3ff-200d-2695-fe0f","👨🏻‍⚕️":"1f468-1f3fb-200d-2695-fe0f","👨🏼‍⚕️":"1f468-1f3fc-200d-2695-fe0f","👨🏽‍⚕️":"1f468-1f3fd-200d-2695-fe0f","👨🏾‍⚕️":"1f468-1f3fe-200d-2695-fe0f","👨🏿‍⚕️":"1f468-1f3ff-200d-2695-fe0f","👩🏻‍⚕️":"1f469-1f3fb-200d-2695-fe0f","👩🏼‍⚕️":"1f469-1f3fc-200d-2695-fe0f","👩🏽‍⚕️":"1f469-1f3fd-200d-2695-fe0f","👩🏾‍⚕️":"1f469-1f3fe-200d-2695-fe0f","👩🏿‍⚕️":"1f469-1f3ff-200d-2695-fe0f","🧑🏻‍⚖️":"1f9d1-1f3fb-200d-2696-fe0f","🧑🏼‍⚖️":"1f9d1-1f3fc-200d-2696-fe0f","🧑🏽‍⚖️":"1f9d1-1f3fd-200d-2696-fe0f","🧑🏾‍⚖️":"1f9d1-1f3fe-200d-2696-fe0f","🧑🏿‍⚖️":"1f9d1-1f3ff-200d-2696-fe0f","👨🏻‍⚖️":"1f468-1f3fb-200d-2696-fe0f","👨🏼‍⚖️":"1f468-1f3fc-200d-2696-fe0f","👨🏽‍⚖️":"1f468-1f3fd-200d-2696-fe0f","👨🏾‍⚖️":"1f468-1f3fe-200d-2696-fe0f","👨🏿‍⚖️":"1f468-1f3ff-200d-2696-fe0f","👩🏻‍⚖️":"1f469-1f3fb-200d-2696-fe0f","👩🏼‍⚖️":"1f469-1f3fc-200d-2696-fe0f","👩🏽‍⚖️":"1f469-1f3fd-200d-2696-fe0f","👩🏾‍⚖️":"1f469-1f3fe-200d-2696-fe0f","👩🏿‍⚖️":"1f469-1f3ff-200d-2696-fe0f","🧑🏻‍✈️":"1f9d1-1f3fb-200d-2708-fe0f","🧑🏼‍✈️":"1f9d1-1f3fc-200d-2708-fe0f","🧑🏽‍✈️":"1f9d1-1f3fd-200d-2708-fe0f","🧑🏾‍✈️":"1f9d1-1f3fe-200d-2708-fe0f","🧑🏿‍✈️":"1f9d1-1f3ff-200d-2708-fe0f","👨🏻‍✈️":"1f468-1f3fb-200d-2708-fe0f","👨🏼‍✈️":"1f468-1f3fc-200d-2708-fe0f","👨🏽‍✈️":"1f468-1f3fd-200d-2708-fe0f","👨🏾‍✈️":"1f468-1f3fe-200d-2708-fe0f","👨🏿‍✈️":"1f468-1f3ff-200d-2708-fe0f","👩🏻‍✈️":"1f469-1f3fb-200d-2708-fe0f","👩🏼‍✈️":"1f469-1f3fc-200d-2708-fe0f","👩🏽‍✈️":"1f469-1f3fd-200d-2708-fe0f","👩🏾‍✈️":"1f469-1f3fe-200d-2708-fe0f","👩🏿‍✈️":"1f469-1f3ff-200d-2708-fe0f","👮🏻‍♂️":"1f46e-1f3fb-200d-2642-fe0f","👮🏼‍♂️":"1f46e-1f3fc-200d-2642-fe0f","👮🏽‍♂️":"1f46e-1f3fd-200d-2642-fe0f","👮🏾‍♂️":"1f46e-1f3fe-200d-2642-fe0f","👮🏿‍♂️":"1f46e-1f3ff-200d-2642-fe0f","👮🏻‍♀️":"1f46e-1f3fb-200d-2640-fe0f","👮🏼‍♀️":"1f46e-1f3fc-200d-2640-fe0f","👮🏽‍♀️":"1f46e-1f3fd-200d-2640-fe0f","👮🏾‍♀️":"1f46e-1f3fe-200d-2640-fe0f","👮🏿‍♀️":"1f46e-1f3ff-200d-2640-fe0f","🕵️‍♂️":"1f575-fe0f-200d-2642-fe0f","🕵🏻‍♂️":"1f575-1f3fb-200d-2642-fe0f","🕵🏼‍♂️":"1f575-1f3fc-200d-2642-fe0f","🕵🏽‍♂️":"1f575-1f3fd-200d-2642-fe0f","🕵🏾‍♂️":"1f575-1f3fe-200d-2642-fe0f","🕵🏿‍♂️":"1f575-1f3ff-200d-2642-fe0f","🕵️‍♀️":"1f575-fe0f-200d-2640-fe0f","🕵🏻‍♀️":"1f575-1f3fb-200d-2640-fe0f","🕵🏼‍♀️":"1f575-1f3fc-200d-2640-fe0f","🕵🏽‍♀️":"1f575-1f3fd-200d-2640-fe0f","🕵🏾‍♀️":"1f575-1f3fe-200d-2640-fe0f","🕵🏿‍♀️":"1f575-1f3ff-200d-2640-fe0f","💂🏻‍♂️":"1f482-1f3fb-200d-2642-fe0f","💂🏼‍♂️":"1f482-1f3fc-200d-2642-fe0f","💂🏽‍♂️":"1f482-1f3fd-200d-2642-fe0f","💂🏾‍♂️":"1f482-1f3fe-200d-2642-fe0f","💂🏿‍♂️":"1f482-1f3ff-200d-2642-fe0f","💂🏻‍♀️":"1f482-1f3fb-200d-2640-fe0f","💂🏼‍♀️":"1f482-1f3fc-200d-2640-fe0f","💂🏽‍♀️":"1f482-1f3fd-200d-2640-fe0f","💂🏾‍♀️":"1f482-1f3fe-200d-2640-fe0f","💂🏿‍♀️":"1f482-1f3ff-200d-2640-fe0f","👷🏻‍♂️":"1f477-1f3fb-200d-2642-fe0f","👷🏼‍♂️":"1f477-1f3fc-200d-2642-fe0f","👷🏽‍♂️":"1f477-1f3fd-200d-2642-fe0f","👷🏾‍♂️":"1f477-1f3fe-200d-2642-fe0f","👷🏿‍♂️":"1f477-1f3ff-200d-2642-fe0f","👷🏻‍♀️":"1f477-1f3fb-200d-2640-fe0f","👷🏼‍♀️":"1f477-1f3fc-200d-2640-fe0f","👷🏽‍♀️":"1f477-1f3fd-200d-2640-fe0f","👷🏾‍♀️":"1f477-1f3fe-200d-2640-fe0f","👷🏿‍♀️":"1f477-1f3ff-200d-2640-fe0f","👳🏻‍♂️":"1f473-1f3fb-200d-2642-fe0f","👳🏼‍♂️":"1f473-1f3fc-200d-2642-fe0f","👳🏽‍♂️":"1f473-1f3fd-200d-2642-fe0f","👳🏾‍♂️":"1f473-1f3fe-200d-2642-fe0f","👳🏿‍♂️":"1f473-1f3ff-200d-2642-fe0f","👳🏻‍♀️":"1f473-1f3fb-200d-2640-fe0f","👳🏼‍♀️":"1f473-1f3fc-200d-2640-fe0f","👳🏽‍♀️":"1f473-1f3fd-200d-2640-fe0f","👳🏾‍♀️":"1f473-1f3fe-200d-2640-fe0f","👳🏿‍♀️":"1f473-1f3ff-200d-2640-fe0f","🤵🏻‍♂️":"1f935-1f3fb-200d-2642-fe0f","🤵🏼‍♂️":"1f935-1f3fc-200d-2642-fe0f","🤵🏽‍♂️":"1f935-1f3fd-200d-2642-fe0f","🤵🏾‍♂️":"1f935-1f3fe-200d-2642-fe0f","🤵🏿‍♂️":"1f935-1f3ff-200d-2642-fe0f","🤵🏻‍♀️":"1f935-1f3fb-200d-2640-fe0f","🤵🏼‍♀️":"1f935-1f3fc-200d-2640-fe0f","🤵🏽‍♀️":"1f935-1f3fd-200d-2640-fe0f","🤵🏾‍♀️":"1f935-1f3fe-200d-2640-fe0f","🤵🏿‍♀️":"1f935-1f3ff-200d-2640-fe0f","👰🏻‍♂️":"1f470-1f3fb-200d-2642-fe0f","👰🏼‍♂️":"1f470-1f3fc-200d-2642-fe0f","👰🏽‍♂️":"1f470-1f3fd-200d-2642-fe0f","👰🏾‍♂️":"1f470-1f3fe-200d-2642-fe0f","👰🏿‍♂️":"1f470-1f3ff-200d-2642-fe0f","👰🏻‍♀️":"1f470-1f3fb-200d-2640-fe0f","👰🏼‍♀️":"1f470-1f3fc-200d-2640-fe0f","👰🏽‍♀️":"1f470-1f3fd-200d-2640-fe0f","👰🏾‍♀️":"1f470-1f3fe-200d-2640-fe0f","👰🏿‍♀️":"1f470-1f3ff-200d-2640-fe0f","🦸🏻‍♂️":"1f9b8-1f3fb-200d-2642-fe0f","🦸🏼‍♂️":"1f9b8-1f3fc-200d-2642-fe0f","🦸🏽‍♂️":"1f9b8-1f3fd-200d-2642-fe0f","🦸🏾‍♂️":"1f9b8-1f3fe-200d-2642-fe0f","🦸🏿‍♂️":"1f9b8-1f3ff-200d-2642-fe0f","🦸🏻‍♀️":"1f9b8-1f3fb-200d-2640-fe0f","🦸🏼‍♀️":"1f9b8-1f3fc-200d-2640-fe0f","🦸🏽‍♀️":"1f9b8-1f3fd-200d-2640-fe0f","🦸🏾‍♀️":"1f9b8-1f3fe-200d-2640-fe0f","🦸🏿‍♀️":"1f9b8-1f3ff-200d-2640-fe0f","🦹🏻‍♂️":"1f9b9-1f3fb-200d-2642-fe0f","🦹🏼‍♂️":"1f9b9-1f3fc-200d-2642-fe0f","🦹🏽‍♂️":"1f9b9-1f3fd-200d-2642-fe0f","🦹🏾‍♂️":"1f9b9-1f3fe-200d-2642-fe0f","🦹🏿‍♂️":"1f9b9-1f3ff-200d-2642-fe0f","🦹🏻‍♀️":"1f9b9-1f3fb-200d-2640-fe0f","🦹🏼‍♀️":"1f9b9-1f3fc-200d-2640-fe0f","🦹🏽‍♀️":"1f9b9-1f3fd-200d-2640-fe0f","🦹🏾‍♀️":"1f9b9-1f3fe-200d-2640-fe0f","🦹🏿‍♀️":"1f9b9-1f3ff-200d-2640-fe0f","🧙🏻‍♂️":"1f9d9-1f3fb-200d-2642-fe0f","🧙🏼‍♂️":"1f9d9-1f3fc-200d-2642-fe0f","🧙🏽‍♂️":"1f9d9-1f3fd-200d-2642-fe0f","🧙🏾‍♂️":"1f9d9-1f3fe-200d-2642-fe0f","🧙🏿‍♂️":"1f9d9-1f3ff-200d-2642-fe0f","🧙🏻‍♀️":"1f9d9-1f3fb-200d-2640-fe0f","🧙🏼‍♀️":"1f9d9-1f3fc-200d-2640-fe0f","🧙🏽‍♀️":"1f9d9-1f3fd-200d-2640-fe0f","🧙🏾‍♀️":"1f9d9-1f3fe-200d-2640-fe0f","🧙🏿‍♀️":"1f9d9-1f3ff-200d-2640-fe0f","🧚🏻‍♂️":"1f9da-1f3fb-200d-2642-fe0f","🧚🏼‍♂️":"1f9da-1f3fc-200d-2642-fe0f","🧚🏽‍♂️":"1f9da-1f3fd-200d-2642-fe0f","🧚🏾‍♂️":"1f9da-1f3fe-200d-2642-fe0f","🧚🏿‍♂️":"1f9da-1f3ff-200d-2642-fe0f","🧚🏻‍♀️":"1f9da-1f3fb-200d-2640-fe0f","🧚🏼‍♀️":"1f9da-1f3fc-200d-2640-fe0f","🧚🏽‍♀️":"1f9da-1f3fd-200d-2640-fe0f","🧚🏾‍♀️":"1f9da-1f3fe-200d-2640-fe0f","🧚🏿‍♀️":"1f9da-1f3ff-200d-2640-fe0f","🧛🏻‍♂️":"1f9db-1f3fb-200d-2642-fe0f","🧛🏼‍♂️":"1f9db-1f3fc-200d-2642-fe0f","🧛🏽‍♂️":"1f9db-1f3fd-200d-2642-fe0f","🧛🏾‍♂️":"1f9db-1f3fe-200d-2642-fe0f","🧛🏿‍♂️":"1f9db-1f3ff-200d-2642-fe0f","🧛🏻‍♀️":"1f9db-1f3fb-200d-2640-fe0f","🧛🏼‍♀️":"1f9db-1f3fc-200d-2640-fe0f","🧛🏽‍♀️":"1f9db-1f3fd-200d-2640-fe0f","🧛🏾‍♀️":"1f9db-1f3fe-200d-2640-fe0f","🧛🏿‍♀️":"1f9db-1f3ff-200d-2640-fe0f","🧜🏻‍♂️":"1f9dc-1f3fb-200d-2642-fe0f","🧜🏼‍♂️":"1f9dc-1f3fc-200d-2642-fe0f","🧜🏽‍♂️":"1f9dc-1f3fd-200d-2642-fe0f","🧜🏾‍♂️":"1f9dc-1f3fe-200d-2642-fe0f","🧜🏿‍♂️":"1f9dc-1f3ff-200d-2642-fe0f","🧜🏻‍♀️":"1f9dc-1f3fb-200d-2640-fe0f","🧜🏼‍♀️":"1f9dc-1f3fc-200d-2640-fe0f","🧜🏽‍♀️":"1f9dc-1f3fd-200d-2640-fe0f","🧜🏾‍♀️":"1f9dc-1f3fe-200d-2640-fe0f","🧜🏿‍♀️":"1f9dc-1f3ff-200d-2640-fe0f","🧝🏻‍♂️":"1f9dd-1f3fb-200d-2642-fe0f","🧝🏼‍♂️":"1f9dd-1f3fc-200d-2642-fe0f","🧝🏽‍♂️":"1f9dd-1f3fd-200d-2642-fe0f","🧝🏾‍♂️":"1f9dd-1f3fe-200d-2642-fe0f","🧝🏿‍♂️":"1f9dd-1f3ff-200d-2642-fe0f","🧝🏻‍♀️":"1f9dd-1f3fb-200d-2640-fe0f","🧝🏼‍♀️":"1f9dd-1f3fc-200d-2640-fe0f","🧝🏽‍♀️":"1f9dd-1f3fd-200d-2640-fe0f","🧝🏾‍♀️":"1f9dd-1f3fe-200d-2640-fe0f","🧝🏿‍♀️":"1f9dd-1f3ff-200d-2640-fe0f","💆🏻‍♂️":"1f486-1f3fb-200d-2642-fe0f","💆🏼‍♂️":"1f486-1f3fc-200d-2642-fe0f","💆🏽‍♂️":"1f486-1f3fd-200d-2642-fe0f","💆🏾‍♂️":"1f486-1f3fe-200d-2642-fe0f","💆🏿‍♂️":"1f486-1f3ff-200d-2642-fe0f","💆🏻‍♀️":"1f486-1f3fb-200d-2640-fe0f","💆🏼‍♀️":"1f486-1f3fc-200d-2640-fe0f","💆🏽‍♀️":"1f486-1f3fd-200d-2640-fe0f","💆🏾‍♀️":"1f486-1f3fe-200d-2640-fe0f","💆🏿‍♀️":"1f486-1f3ff-200d-2640-fe0f","💇🏻‍♂️":"1f487-1f3fb-200d-2642-fe0f","💇🏼‍♂️":"1f487-1f3fc-200d-2642-fe0f","💇🏽‍♂️":"1f487-1f3fd-200d-2642-fe0f","💇🏾‍♂️":"1f487-1f3fe-200d-2642-fe0f","💇🏿‍♂️":"1f487-1f3ff-200d-2642-fe0f","💇🏻‍♀️":"1f487-1f3fb-200d-2640-fe0f","💇🏼‍♀️":"1f487-1f3fc-200d-2640-fe0f","💇🏽‍♀️":"1f487-1f3fd-200d-2640-fe0f","💇🏾‍♀️":"1f487-1f3fe-200d-2640-fe0f","💇🏿‍♀️":"1f487-1f3ff-200d-2640-fe0f","🚶🏻‍♂️":"1f6b6-1f3fb-200d-2642-fe0f","🚶🏼‍♂️":"1f6b6-1f3fc-200d-2642-fe0f","🚶🏽‍♂️":"1f6b6-1f3fd-200d-2642-fe0f","🚶🏾‍♂️":"1f6b6-1f3fe-200d-2642-fe0f","🚶🏿‍♂️":"1f6b6-1f3ff-200d-2642-fe0f","🚶🏻‍♀️":"1f6b6-1f3fb-200d-2640-fe0f","🚶🏼‍♀️":"1f6b6-1f3fc-200d-2640-fe0f","🚶🏽‍♀️":"1f6b6-1f3fd-200d-2640-fe0f","🚶🏾‍♀️":"1f6b6-1f3fe-200d-2640-fe0f","🚶🏿‍♀️":"1f6b6-1f3ff-200d-2640-fe0f","🧍🏻‍♂️":"1f9cd-1f3fb-200d-2642-fe0f","🧍🏼‍♂️":"1f9cd-1f3fc-200d-2642-fe0f","🧍🏽‍♂️":"1f9cd-1f3fd-200d-2642-fe0f","🧍🏾‍♂️":"1f9cd-1f3fe-200d-2642-fe0f","🧍🏿‍♂️":"1f9cd-1f3ff-200d-2642-fe0f","🧍🏻‍♀️":"1f9cd-1f3fb-200d-2640-fe0f","🧍🏼‍♀️":"1f9cd-1f3fc-200d-2640-fe0f","🧍🏽‍♀️":"1f9cd-1f3fd-200d-2640-fe0f","🧍🏾‍♀️":"1f9cd-1f3fe-200d-2640-fe0f","🧍🏿‍♀️":"1f9cd-1f3ff-200d-2640-fe0f","🧎🏻‍♂️":"1f9ce-1f3fb-200d-2642-fe0f","🧎🏼‍♂️":"1f9ce-1f3fc-200d-2642-fe0f","🧎🏽‍♂️":"1f9ce-1f3fd-200d-2642-fe0f","🧎🏾‍♂️":"1f9ce-1f3fe-200d-2642-fe0f","🧎🏿‍♂️":"1f9ce-1f3ff-200d-2642-fe0f","🧎🏻‍♀️":"1f9ce-1f3fb-200d-2640-fe0f","🧎🏼‍♀️":"1f9ce-1f3fc-200d-2640-fe0f","🧎🏽‍♀️":"1f9ce-1f3fd-200d-2640-fe0f","🧎🏾‍♀️":"1f9ce-1f3fe-200d-2640-fe0f","🧎🏿‍♀️":"1f9ce-1f3ff-200d-2640-fe0f","🏃🏻‍♂️":"1f3c3-1f3fb-200d-2642-fe0f","🏃🏼‍♂️":"1f3c3-1f3fc-200d-2642-fe0f","🏃🏽‍♂️":"1f3c3-1f3fd-200d-2642-fe0f","🏃🏾‍♂️":"1f3c3-1f3fe-200d-2642-fe0f","🏃🏿‍♂️":"1f3c3-1f3ff-200d-2642-fe0f","🏃🏻‍♀️":"1f3c3-1f3fb-200d-2640-fe0f","🏃🏼‍♀️":"1f3c3-1f3fc-200d-2640-fe0f","🏃🏽‍♀️":"1f3c3-1f3fd-200d-2640-fe0f","🏃🏾‍♀️":"1f3c3-1f3fe-200d-2640-fe0f","🏃🏿‍♀️":"1f3c3-1f3ff-200d-2640-fe0f","🧖🏻‍♂️":"1f9d6-1f3fb-200d-2642-fe0f","🧖🏼‍♂️":"1f9d6-1f3fc-200d-2642-fe0f","🧖🏽‍♂️":"1f9d6-1f3fd-200d-2642-fe0f","🧖🏾‍♂️":"1f9d6-1f3fe-200d-2642-fe0f","🧖🏿‍♂️":"1f9d6-1f3ff-200d-2642-fe0f","🧖🏻‍♀️":"1f9d6-1f3fb-200d-2640-fe0f","🧖🏼‍♀️":"1f9d6-1f3fc-200d-2640-fe0f","🧖🏽‍♀️":"1f9d6-1f3fd-200d-2640-fe0f","🧖🏾‍♀️":"1f9d6-1f3fe-200d-2640-fe0f","🧖🏿‍♀️":"1f9d6-1f3ff-200d-2640-fe0f","🧗🏻‍♂️":"1f9d7-1f3fb-200d-2642-fe0f","🧗🏼‍♂️":"1f9d7-1f3fc-200d-2642-fe0f","🧗🏽‍♂️":"1f9d7-1f3fd-200d-2642-fe0f","🧗🏾‍♂️":"1f9d7-1f3fe-200d-2642-fe0f","🧗🏿‍♂️":"1f9d7-1f3ff-200d-2642-fe0f","🧗🏻‍♀️":"1f9d7-1f3fb-200d-2640-fe0f","🧗🏼‍♀️":"1f9d7-1f3fc-200d-2640-fe0f","🧗🏽‍♀️":"1f9d7-1f3fd-200d-2640-fe0f","🧗🏾‍♀️":"1f9d7-1f3fe-200d-2640-fe0f","🧗🏿‍♀️":"1f9d7-1f3ff-200d-2640-fe0f","🏌️‍♂️":"1f3cc-fe0f-200d-2642-fe0f","🏌🏻‍♂️":"1f3cc-1f3fb-200d-2642-fe0f","🏌🏼‍♂️":"1f3cc-1f3fc-200d-2642-fe0f","🏌🏽‍♂️":"1f3cc-1f3fd-200d-2642-fe0f","🏌🏾‍♂️":"1f3cc-1f3fe-200d-2642-fe0f","🏌🏿‍♂️":"1f3cc-1f3ff-200d-2642-fe0f","🏌️‍♀️":"1f3cc-fe0f-200d-2640-fe0f","🏌🏻‍♀️":"1f3cc-1f3fb-200d-2640-fe0f","🏌🏼‍♀️":"1f3cc-1f3fc-200d-2640-fe0f","🏌🏽‍♀️":"1f3cc-1f3fd-200d-2640-fe0f","🏌🏾‍♀️":"1f3cc-1f3fe-200d-2640-fe0f","🏌🏿‍♀️":"1f3cc-1f3ff-200d-2640-fe0f","🏄🏻‍♂️":"1f3c4-1f3fb-200d-2642-fe0f","🏄🏼‍♂️":"1f3c4-1f3fc-200d-2642-fe0f","🏄🏽‍♂️":"1f3c4-1f3fd-200d-2642-fe0f","🏄🏾‍♂️":"1f3c4-1f3fe-200d-2642-fe0f","🏄🏿‍♂️":"1f3c4-1f3ff-200d-2642-fe0f","🏄🏻‍♀️":"1f3c4-1f3fb-200d-2640-fe0f","🏄🏼‍♀️":"1f3c4-1f3fc-200d-2640-fe0f","🏄🏽‍♀️":"1f3c4-1f3fd-200d-2640-fe0f","🏄🏾‍♀️":"1f3c4-1f3fe-200d-2640-fe0f","🏄🏿‍♀️":"1f3c4-1f3ff-200d-2640-fe0f","🚣🏻‍♂️":"1f6a3-1f3fb-200d-2642-fe0f","🚣🏼‍♂️":"1f6a3-1f3fc-200d-2642-fe0f","🚣🏽‍♂️":"1f6a3-1f3fd-200d-2642-fe0f","🚣🏾‍♂️":"1f6a3-1f3fe-200d-2642-fe0f","🚣🏿‍♂️":"1f6a3-1f3ff-200d-2642-fe0f","🚣🏻‍♀️":"1f6a3-1f3fb-200d-2640-fe0f","🚣🏼‍♀️":"1f6a3-1f3fc-200d-2640-fe0f","🚣🏽‍♀️":"1f6a3-1f3fd-200d-2640-fe0f","🚣🏾‍♀️":"1f6a3-1f3fe-200d-2640-fe0f","🚣🏿‍♀️":"1f6a3-1f3ff-200d-2640-fe0f","🏊🏻‍♂️":"1f3ca-1f3fb-200d-2642-fe0f","🏊🏼‍♂️":"1f3ca-1f3fc-200d-2642-fe0f","🏊🏽‍♂️":"1f3ca-1f3fd-200d-2642-fe0f","🏊🏾‍♂️":"1f3ca-1f3fe-200d-2642-fe0f","🏊🏿‍♂️":"1f3ca-1f3ff-200d-2642-fe0f","🏊🏻‍♀️":"1f3ca-1f3fb-200d-2640-fe0f","🏊🏼‍♀️":"1f3ca-1f3fc-200d-2640-fe0f","🏊🏽‍♀️":"1f3ca-1f3fd-200d-2640-fe0f","🏊🏾‍♀️":"1f3ca-1f3fe-200d-2640-fe0f","🏊🏿‍♀️":"1f3ca-1f3ff-200d-2640-fe0f","⛹️‍♂️":"26f9-fe0f-200d-2642-fe0f","⛹🏻‍♂️":"26f9-1f3fb-200d-2642-fe0f","⛹🏼‍♂️":"26f9-1f3fc-200d-2642-fe0f","⛹🏽‍♂️":"26f9-1f3fd-200d-2642-fe0f","⛹🏾‍♂️":"26f9-1f3fe-200d-2642-fe0f","⛹🏿‍♂️":"26f9-1f3ff-200d-2642-fe0f","⛹️‍♀️":"26f9-fe0f-200d-2640-fe0f","⛹🏻‍♀️":"26f9-1f3fb-200d-2640-fe0f","⛹🏼‍♀️":"26f9-1f3fc-200d-2640-fe0f","⛹🏽‍♀️":"26f9-1f3fd-200d-2640-fe0f","⛹🏾‍♀️":"26f9-1f3fe-200d-2640-fe0f","⛹🏿‍♀️":"26f9-1f3ff-200d-2640-fe0f","🏋️‍♂️":"1f3cb-fe0f-200d-2642-fe0f","🏋🏻‍♂️":"1f3cb-1f3fb-200d-2642-fe0f","🏋🏼‍♂️":"1f3cb-1f3fc-200d-2642-fe0f","🏋🏽‍♂️":"1f3cb-1f3fd-200d-2642-fe0f","🏋🏾‍♂️":"1f3cb-1f3fe-200d-2642-fe0f","🏋🏿‍♂️":"1f3cb-1f3ff-200d-2642-fe0f","🏋️‍♀️":"1f3cb-fe0f-200d-2640-fe0f","🏋🏻‍♀️":"1f3cb-1f3fb-200d-2640-fe0f","🏋🏼‍♀️":"1f3cb-1f3fc-200d-2640-fe0f","🏋🏽‍♀️":"1f3cb-1f3fd-200d-2640-fe0f","🏋🏾‍♀️":"1f3cb-1f3fe-200d-2640-fe0f","🏋🏿‍♀️":"1f3cb-1f3ff-200d-2640-fe0f","🚴🏻‍♂️":"1f6b4-1f3fb-200d-2642-fe0f","🚴🏼‍♂️":"1f6b4-1f3fc-200d-2642-fe0f","🚴🏽‍♂️":"1f6b4-1f3fd-200d-2642-fe0f","🚴🏾‍♂️":"1f6b4-1f3fe-200d-2642-fe0f","🚴🏿‍♂️":"1f6b4-1f3ff-200d-2642-fe0f","🚴🏻‍♀️":"1f6b4-1f3fb-200d-2640-fe0f","🚴🏼‍♀️":"1f6b4-1f3fc-200d-2640-fe0f","🚴🏽‍♀️":"1f6b4-1f3fd-200d-2640-fe0f","🚴🏾‍♀️":"1f6b4-1f3fe-200d-2640-fe0f","🚴🏿‍♀️":"1f6b4-1f3ff-200d-2640-fe0f","🚵🏻‍♂️":"1f6b5-1f3fb-200d-2642-fe0f","🚵🏼‍♂️":"1f6b5-1f3fc-200d-2642-fe0f","🚵🏽‍♂️":"1f6b5-1f3fd-200d-2642-fe0f","🚵🏾‍♂️":"1f6b5-1f3fe-200d-2642-fe0f","🚵🏿‍♂️":"1f6b5-1f3ff-200d-2642-fe0f","🚵🏻‍♀️":"1f6b5-1f3fb-200d-2640-fe0f","🚵🏼‍♀️":"1f6b5-1f3fc-200d-2640-fe0f","🚵🏽‍♀️":"1f6b5-1f3fd-200d-2640-fe0f","🚵🏾‍♀️":"1f6b5-1f3fe-200d-2640-fe0f","🚵🏿‍♀️":"1f6b5-1f3ff-200d-2640-fe0f","🤸🏻‍♂️":"1f938-1f3fb-200d-2642-fe0f","🤸🏼‍♂️":"1f938-1f3fc-200d-2642-fe0f","🤸🏽‍♂️":"1f938-1f3fd-200d-2642-fe0f","🤸🏾‍♂️":"1f938-1f3fe-200d-2642-fe0f","🤸🏿‍♂️":"1f938-1f3ff-200d-2642-fe0f","🤸🏻‍♀️":"1f938-1f3fb-200d-2640-fe0f","🤸🏼‍♀️":"1f938-1f3fc-200d-2640-fe0f","🤸🏽‍♀️":"1f938-1f3fd-200d-2640-fe0f","🤸🏾‍♀️":"1f938-1f3fe-200d-2640-fe0f","🤸🏿‍♀️":"1f938-1f3ff-200d-2640-fe0f","🤽🏻‍♂️":"1f93d-1f3fb-200d-2642-fe0f","🤽🏼‍♂️":"1f93d-1f3fc-200d-2642-fe0f","🤽🏽‍♂️":"1f93d-1f3fd-200d-2642-fe0f","🤽🏾‍♂️":"1f93d-1f3fe-200d-2642-fe0f","🤽🏿‍♂️":"1f93d-1f3ff-200d-2642-fe0f","🤽🏻‍♀️":"1f93d-1f3fb-200d-2640-fe0f","🤽🏼‍♀️":"1f93d-1f3fc-200d-2640-fe0f","🤽🏽‍♀️":"1f93d-1f3fd-200d-2640-fe0f","🤽🏾‍♀️":"1f93d-1f3fe-200d-2640-fe0f","🤽🏿‍♀️":"1f93d-1f3ff-200d-2640-fe0f","🤾🏻‍♂️":"1f93e-1f3fb-200d-2642-fe0f","🤾🏼‍♂️":"1f93e-1f3fc-200d-2642-fe0f","🤾🏽‍♂️":"1f93e-1f3fd-200d-2642-fe0f","🤾🏾‍♂️":"1f93e-1f3fe-200d-2642-fe0f","🤾🏿‍♂️":"1f93e-1f3ff-200d-2642-fe0f","🤾🏻‍♀️":"1f93e-1f3fb-200d-2640-fe0f","🤾🏼‍♀️":"1f93e-1f3fc-200d-2640-fe0f","🤾🏽‍♀️":"1f93e-1f3fd-200d-2640-fe0f","🤾🏾‍♀️":"1f93e-1f3fe-200d-2640-fe0f","🤾🏿‍♀️":"1f93e-1f3ff-200d-2640-fe0f","🤹🏻‍♂️":"1f939-1f3fb-200d-2642-fe0f","🤹🏼‍♂️":"1f939-1f3fc-200d-2642-fe0f","🤹🏽‍♂️":"1f939-1f3fd-200d-2642-fe0f","🤹🏾‍♂️":"1f939-1f3fe-200d-2642-fe0f","🤹🏿‍♂️":"1f939-1f3ff-200d-2642-fe0f","🤹🏻‍♀️":"1f939-1f3fb-200d-2640-fe0f","🤹🏼‍♀️":"1f939-1f3fc-200d-2640-fe0f","🤹🏽‍♀️":"1f939-1f3fd-200d-2640-fe0f","🤹🏾‍♀️":"1f939-1f3fe-200d-2640-fe0f","🤹🏿‍♀️":"1f939-1f3ff-200d-2640-fe0f","🧘🏻‍♂️":"1f9d8-1f3fb-200d-2642-fe0f","🧘🏼‍♂️":"1f9d8-1f3fc-200d-2642-fe0f","🧘🏽‍♂️":"1f9d8-1f3fd-200d-2642-fe0f","🧘🏾‍♂️":"1f9d8-1f3fe-200d-2642-fe0f","🧘🏿‍♂️":"1f9d8-1f3ff-200d-2642-fe0f","🧘🏻‍♀️":"1f9d8-1f3fb-200d-2640-fe0f","🧘🏼‍♀️":"1f9d8-1f3fc-200d-2640-fe0f","🧘🏽‍♀️":"1f9d8-1f3fd-200d-2640-fe0f","🧘🏾‍♀️":"1f9d8-1f3fe-200d-2640-fe0f","🧘🏿‍♀️":"1f9d8-1f3ff-200d-2640-fe0f","🧑‍🤝‍🧑":"1f9d1-200d-1f91d-200d-1f9d1","👩‍❤‍👨":"1f469-200d-2764-fe0f-200d-1f468","👨‍❤‍👨":"1f468-200d-2764-fe0f-200d-1f468","👩‍❤‍👩":"1f469-200d-2764-fe0f-200d-1f469","👨‍👩‍👦":"1f468-200d-1f469-200d-1f466","👨‍👩‍👧":"1f468-200d-1f469-200d-1f467","👨‍👨‍👦":"1f468-200d-1f468-200d-1f466","👨‍👨‍👧":"1f468-200d-1f468-200d-1f467","👩‍👩‍👦":"1f469-200d-1f469-200d-1f466","👩‍👩‍👧":"1f469-200d-1f469-200d-1f467","👨‍👦‍👦":"1f468-200d-1f466-200d-1f466","👨‍👧‍👦":"1f468-200d-1f467-200d-1f466","👨‍👧‍👧":"1f468-200d-1f467-200d-1f467","👩‍👦‍👦":"1f469-200d-1f466-200d-1f466","👩‍👧‍👦":"1f469-200d-1f467-200d-1f466","👩‍👧‍👧":"1f469-200d-1f467-200d-1f467","🏳️‍⚧️":"1f3f3-fe0f-200d-26a7-fe0f","👩‍❤️‍👨":"1f469-200d-2764-fe0f-200d-1f468","👨‍❤️‍👨":"1f468-200d-2764-fe0f-200d-1f468","👩‍❤️‍👩":"1f469-200d-2764-fe0f-200d-1f469","🧑🏻‍🤝‍🧑🏻":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fb","🧑🏻‍🤝‍🧑🏼":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fc","🧑🏻‍🤝‍🧑🏽":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fd","🧑🏻‍🤝‍🧑🏾":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fe","🧑🏻‍🤝‍🧑🏿":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3ff","🧑🏼‍🤝‍🧑🏻":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fb","🧑🏼‍🤝‍🧑🏼":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fc","🧑🏼‍🤝‍🧑🏽":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fd","🧑🏼‍🤝‍🧑🏾":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fe","🧑🏼‍🤝‍🧑🏿":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3ff","🧑🏽‍🤝‍🧑🏻":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fb","🧑🏽‍🤝‍🧑🏼":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fc","🧑🏽‍🤝‍🧑🏽":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fd","🧑🏽‍🤝‍🧑🏾":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fe","🧑🏽‍🤝‍🧑🏿":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3ff","🧑🏾‍🤝‍🧑🏻":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fb","🧑🏾‍🤝‍🧑🏼":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fc","🧑🏾‍🤝‍🧑🏽":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fd","🧑🏾‍🤝‍🧑🏾":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fe","🧑🏾‍🤝‍🧑🏿":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3ff","🧑🏿‍🤝‍🧑🏻":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fb","🧑🏿‍🤝‍🧑🏼":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fc","🧑🏿‍🤝‍🧑🏽":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fd","🧑🏿‍🤝‍🧑🏾":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fe","🧑🏿‍🤝‍🧑🏿":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3ff","👩🏻‍🤝‍👩🏼":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3fc","👩🏻‍🤝‍👩🏽":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3fd","👩🏻‍🤝‍👩🏾":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3fe","👩🏻‍🤝‍👩🏿":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3ff","👩🏼‍🤝‍👩🏻":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3fb","👩🏼‍🤝‍👩🏽":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3fd","👩🏼‍🤝‍👩🏾":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3fe","👩🏼‍🤝‍👩🏿":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3ff","👩🏽‍🤝‍👩🏻":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3fb","👩🏽‍🤝‍👩🏼":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3fc","👩🏽‍🤝‍👩🏾":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3fe","👩🏽‍🤝‍👩🏿":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3ff","👩🏾‍🤝‍👩🏻":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3fb","👩🏾‍🤝‍👩🏼":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3fc","👩🏾‍🤝‍👩🏽":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3fd","👩🏾‍🤝‍👩🏿":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3ff","👩🏿‍🤝‍👩🏻":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fb","👩🏿‍🤝‍👩🏼":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fc","👩🏿‍🤝‍👩🏽":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fd","👩🏿‍🤝‍👩🏾":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fe","👩🏻‍🤝‍👨🏼":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3fc","👩🏻‍🤝‍👨🏽":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3fd","👩🏻‍🤝‍👨🏾":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3fe","👩🏻‍🤝‍👨🏿":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3ff","👩🏼‍🤝‍👨🏻":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3fb","👩🏼‍🤝‍👨🏽":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3fd","👩🏼‍🤝‍👨🏾":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3fe","👩🏼‍🤝‍👨🏿":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3ff","👩🏽‍🤝‍👨🏻":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3fb","👩🏽‍🤝‍👨🏼":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3fc","👩🏽‍🤝‍👨🏾":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3fe","👩🏽‍🤝‍👨🏿":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3ff","👩🏾‍🤝‍👨🏻":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3fb","👩🏾‍🤝‍👨🏼":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3fc","👩🏾‍🤝‍👨🏽":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3fd","👩🏾‍🤝‍👨🏿":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3ff","👩🏿‍🤝‍👨🏻":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fb","👩🏿‍🤝‍👨🏼":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fc","👩🏿‍🤝‍👨🏽":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fd","👩🏿‍🤝‍👨🏾":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fe","👨🏻‍🤝‍👨🏼":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3fc","👨🏻‍🤝‍👨🏽":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3fd","👨🏻‍🤝‍👨🏾":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3fe","👨🏻‍🤝‍👨🏿":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3ff","👨🏼‍🤝‍👨🏻":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3fb","👨🏼‍🤝‍👨🏽":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3fd","👨🏼‍🤝‍👨🏾":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3fe","👨🏼‍🤝‍👨🏿":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3ff","👨🏽‍🤝‍👨🏻":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3fb","👨🏽‍🤝‍👨🏼":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3fc","👨🏽‍🤝‍👨🏾":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3fe","👨🏽‍🤝‍👨🏿":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3ff","👨🏾‍🤝‍👨🏻":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3fb","👨🏾‍🤝‍👨🏼":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3fc","👨🏾‍🤝‍👨🏽":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3fd","👨🏾‍🤝‍👨🏿":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3ff","👨🏿‍🤝‍👨🏻":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fb","👨🏿‍🤝‍👨🏼":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fc","👨🏿‍🤝‍👨🏽":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fd","👨🏿‍🤝‍👨🏾":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fe","👩‍❤‍💋‍👨":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f468","👨‍❤‍💋‍👨":"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468","👩‍❤‍💋‍👩":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469","🧑🏻‍❤‍🧑🏼":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏻‍❤‍🧑🏽":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏻‍❤‍🧑🏾":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏻‍❤‍🧑🏿":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏼‍❤‍🧑🏻":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏼‍❤‍🧑🏽":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏼‍❤‍🧑🏾":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏼‍❤‍🧑🏿":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏽‍❤‍🧑🏻":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏽‍❤‍🧑🏼":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏽‍❤‍🧑🏾":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏽‍❤‍🧑🏿":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏾‍❤‍🧑🏻":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏾‍❤‍🧑🏼":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏾‍❤‍🧑🏽":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏾‍❤‍🧑🏿":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏿‍❤‍🧑🏻":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏿‍❤‍🧑🏼":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏿‍❤‍🧑🏽":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏿‍❤‍🧑🏾":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fe","👩🏻‍❤‍👨🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb","👩🏻‍❤‍👨🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc","👩🏻‍❤‍👨🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd","👩🏻‍❤‍👨🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe","👩🏻‍❤‍👨🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff","👩🏼‍❤‍👨🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb","👩🏼‍❤‍👨🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc","👩🏼‍❤‍👨🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd","👩🏼‍❤‍👨🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe","👩🏼‍❤‍👨🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff","👩🏽‍❤‍👨🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb","👩🏽‍❤‍👨🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc","👩🏽‍❤‍👨🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd","👩🏽‍❤‍👨🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe","👩🏽‍❤‍👨🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff","👩🏾‍❤‍👨🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb","👩🏾‍❤‍👨🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc","👩🏾‍❤‍👨🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd","👩🏾‍❤‍👨🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe","👩🏾‍❤‍👨🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff","👩🏿‍❤‍👨🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb","👩🏿‍❤‍👨🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc","👩🏿‍❤‍👨🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd","👩🏿‍❤‍👨🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe","👩🏿‍❤‍👨🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff","👨🏻‍❤‍👨🏻":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb","👨🏻‍❤‍👨🏼":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc","👨🏻‍❤‍👨🏽":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd","👨🏻‍❤‍👨🏾":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe","👨🏻‍❤‍👨🏿":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff","👨🏼‍❤‍👨🏻":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb","👨🏼‍❤‍👨🏼":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc","👨🏼‍❤‍👨🏽":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd","👨🏼‍❤‍👨🏾":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe","👨🏼‍❤‍👨🏿":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff","👨🏽‍❤‍👨🏻":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb","👨🏽‍❤‍👨🏼":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc","👨🏽‍❤‍👨🏽":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd","👨🏽‍❤‍👨🏾":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe","👨🏽‍❤‍👨🏿":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff","👨🏾‍❤‍👨🏻":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb","👨🏾‍❤‍👨🏼":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc","👨🏾‍❤‍👨🏽":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd","👨🏾‍❤‍👨🏾":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe","👨🏾‍❤‍👨🏿":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff","👨🏿‍❤‍👨🏻":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb","👨🏿‍❤‍👨🏼":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc","👨🏿‍❤‍👨🏽":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd","👨🏿‍❤‍👨🏾":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe","👨🏿‍❤‍👨🏿":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff","👩🏻‍❤‍👩🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fb","👩🏻‍❤‍👩🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fc","👩🏻‍❤‍👩🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fd","👩🏻‍❤‍👩🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fe","👩🏻‍❤‍👩🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3ff","👩🏼‍❤‍👩🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fb","👩🏼‍❤‍👩🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fc","👩🏼‍❤‍👩🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fd","👩🏼‍❤‍👩🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fe","👩🏼‍❤‍👩🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3ff","👩🏽‍❤‍👩🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fb","👩🏽‍❤‍👩🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fc","👩🏽‍❤‍👩🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fd","👩🏽‍❤‍👩🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fe","👩🏽‍❤‍👩🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3ff","👩🏾‍❤‍👩🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fb","👩🏾‍❤‍👩🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fc","👩🏾‍❤‍👩🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fd","👩🏾‍❤‍👩🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fe","👩🏾‍❤‍👩🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3ff","👩🏿‍❤‍👩🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fb","👩🏿‍❤‍👩🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fc","👩🏿‍❤‍👩🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fd","👩🏿‍❤‍👩🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fe","👩🏿‍❤‍👩🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3ff","👨‍👩‍👧‍👦":"1f468-200d-1f469-200d-1f467-200d-1f466","👨‍👩‍👦‍👦":"1f468-200d-1f469-200d-1f466-200d-1f466","👨‍👩‍👧‍👧":"1f468-200d-1f469-200d-1f467-200d-1f467","👨‍👨‍👧‍👦":"1f468-200d-1f468-200d-1f467-200d-1f466","👨‍👨‍👦‍👦":"1f468-200d-1f468-200d-1f466-200d-1f466","👨‍👨‍👧‍👧":"1f468-200d-1f468-200d-1f467-200d-1f467","👩‍👩‍👧‍👦":"1f469-200d-1f469-200d-1f467-200d-1f466","👩‍👩‍👦‍👦":"1f469-200d-1f469-200d-1f466-200d-1f466","👩‍👩‍👧‍👧":"1f469-200d-1f469-200d-1f467-200d-1f467","🏴󠁧󠁢󠁥󠁮󠁧󠁿":"1f3f4-e0067-e0062-e0065-e006e-e0067-e007f","🏴󠁧󠁢󠁳󠁣󠁴󠁿":"1f3f4-e0067-e0062-e0073-e0063-e0074-e007f","🏴󠁧󠁢󠁷󠁬󠁳󠁿":"1f3f4-e0067-e0062-e0077-e006c-e0073-e007f","👩‍❤️‍💋‍👨":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f468","👨‍❤️‍💋‍👨":"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468","👩‍❤️‍💋‍👩":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469","🧑🏻‍❤️‍🧑🏼":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏻‍❤️‍🧑🏽":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏻‍❤️‍🧑🏾":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏻‍❤️‍🧑🏿":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏼‍❤️‍🧑🏻":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏼‍❤️‍🧑🏽":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏼‍❤️‍🧑🏾":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏼‍❤️‍🧑🏿":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏽‍❤️‍🧑🏻":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏽‍❤️‍🧑🏼":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏽‍❤️‍🧑🏾":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏽‍❤️‍🧑🏿":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏾‍❤️‍🧑🏻":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏾‍❤️‍🧑🏼":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏾‍❤️‍🧑🏽":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏾‍❤️‍🧑🏿":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏿‍❤️‍🧑🏻":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏿‍❤️‍🧑🏼":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏿‍❤️‍🧑🏽":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏿‍❤️‍🧑🏾":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fe","👩🏻‍❤️‍👨🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb","👩🏻‍❤️‍👨🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc","👩🏻‍❤️‍👨🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd","👩🏻‍❤️‍👨🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe","👩🏻‍❤️‍👨🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff","👩🏼‍❤️‍👨🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb","👩🏼‍❤️‍👨🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc","👩🏼‍❤️‍👨🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd","👩🏼‍❤️‍👨🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe","👩🏼‍❤️‍👨🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff","👩🏽‍❤️‍👨🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb","👩🏽‍❤️‍👨🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc","👩🏽‍❤️‍👨🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd","👩🏽‍❤️‍👨🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe","👩🏽‍❤️‍👨🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff","👩🏾‍❤️‍👨🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb","👩🏾‍❤️‍👨🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc","👩🏾‍❤️‍👨🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd","👩🏾‍❤️‍👨🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe","👩🏾‍❤️‍👨🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff","👩🏿‍❤️‍👨🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb","👩🏿‍❤️‍👨🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc","👩🏿‍❤️‍👨🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd","👩🏿‍❤️‍👨🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe","👩🏿‍❤️‍👨🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff","👨🏻‍❤️‍👨🏻":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb","👨🏻‍❤️‍👨🏼":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc","👨🏻‍❤️‍👨🏽":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd","👨🏻‍❤️‍👨🏾":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe","👨🏻‍❤️‍👨🏿":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff","👨🏼‍❤️‍👨🏻":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb","👨🏼‍❤️‍👨🏼":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc","👨🏼‍❤️‍👨🏽":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd","👨🏼‍❤️‍👨🏾":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe","👨🏼‍❤️‍👨🏿":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff","👨🏽‍❤️‍👨🏻":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb","👨🏽‍❤️‍👨🏼":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc","👨🏽‍❤️‍👨🏽":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd","👨🏽‍❤️‍👨🏾":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe","👨🏽‍❤️‍👨🏿":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff","👨🏾‍❤️‍👨🏻":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb","👨🏾‍❤️‍👨🏼":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc","👨🏾‍❤️‍👨🏽":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd","👨🏾‍❤️‍👨🏾":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe","👨🏾‍❤️‍👨🏿":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff","👨🏿‍❤️‍👨🏻":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb","👨🏿‍❤️‍👨🏼":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc","👨🏿‍❤️‍👨🏽":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd","👨🏿‍❤️‍👨🏾":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe","👨🏿‍❤️‍👨🏿":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff","👩🏻‍❤️‍👩🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fb","👩🏻‍❤️‍👩🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fc","👩🏻‍❤️‍👩🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fd","👩🏻‍❤️‍👩🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fe","👩🏻‍❤️‍👩🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3ff","👩🏼‍❤️‍👩🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fb","👩🏼‍❤️‍👩🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fc","👩🏼‍❤️‍👩🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fd","👩🏼‍❤️‍👩🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fe","👩🏼‍❤️‍👩🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3ff","👩🏽‍❤️‍👩🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fb","👩🏽‍❤️‍👩🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fc","👩🏽‍❤️‍👩🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fd","👩🏽‍❤️‍👩🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fe","👩🏽‍❤️‍👩🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3ff","👩🏾‍❤️‍👩🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fb","👩🏾‍❤️‍👩🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fc","👩🏾‍❤️‍👩🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fd","👩🏾‍❤️‍👩🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fe","👩🏾‍❤️‍👩🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3ff","👩🏿‍❤️‍👩🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fb","👩🏿‍❤️‍👩🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fc","👩🏿‍❤️‍👩🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fd","👩🏿‍❤️‍👩🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fe","👩🏿‍❤️‍👩🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3ff","🧑🏻‍❤‍💋‍🧑🏼":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏻‍❤‍💋‍🧑🏽":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏻‍❤‍💋‍🧑🏾":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏻‍❤‍💋‍🧑🏿":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏼‍❤‍💋‍🧑🏻":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏼‍❤‍💋‍🧑🏽":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏼‍❤‍💋‍🧑🏾":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏼‍❤‍💋‍🧑🏿":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏽‍❤‍💋‍🧑🏻":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏽‍❤‍💋‍🧑🏼":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏽‍❤‍💋‍🧑🏾":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏽‍❤‍💋‍🧑🏿":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏾‍❤‍💋‍🧑🏻":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏾‍❤‍💋‍🧑🏼":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏾‍❤‍💋‍🧑🏽":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏾‍❤‍💋‍🧑🏿":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏿‍❤‍💋‍🧑🏻":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏿‍❤‍💋‍🧑🏼":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏿‍❤‍💋‍🧑🏽":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏿‍❤‍💋‍🧑🏾":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","👩🏻‍❤‍💋‍👨🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏻‍❤‍💋‍👨🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏻‍❤‍💋‍👨🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏻‍❤‍💋‍👨🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏻‍❤‍💋‍👨🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏼‍❤‍💋‍👨🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏼‍❤‍💋‍👨🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏼‍❤‍💋‍👨🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏼‍❤‍💋‍👨🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏼‍❤‍💋‍👨🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏽‍❤‍💋‍👨🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏽‍❤‍💋‍👨🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏽‍❤‍💋‍👨🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏽‍❤‍💋‍👨🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏽‍❤‍💋‍👨🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏾‍❤‍💋‍👨🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏾‍❤‍💋‍👨🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏾‍❤‍💋‍👨🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏾‍❤‍💋‍👨🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏾‍❤‍💋‍👨🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏿‍❤‍💋‍👨🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏿‍❤‍💋‍👨🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏿‍❤‍💋‍👨🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏿‍❤‍💋‍👨🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏿‍❤‍💋‍👨🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏻‍❤‍💋‍👨🏻":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏻‍❤‍💋‍👨🏼":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏻‍❤‍💋‍👨🏽":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏻‍❤‍💋‍👨🏾":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏻‍❤‍💋‍👨🏿":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏼‍❤‍💋‍👨🏻":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏼‍❤‍💋‍👨🏼":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏼‍❤‍💋‍👨🏽":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏼‍❤‍💋‍👨🏾":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏼‍❤‍💋‍👨🏿":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏽‍❤‍💋‍👨🏻":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏽‍❤‍💋‍👨🏼":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏽‍❤‍💋‍👨🏽":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏽‍❤‍💋‍👨🏾":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏽‍❤‍💋‍👨🏿":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏾‍❤‍💋‍👨🏻":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏾‍❤‍💋‍👨🏼":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏾‍❤‍💋‍👨🏽":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏾‍❤‍💋‍👨🏾":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏾‍❤‍💋‍👨🏿":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏿‍❤‍💋‍👨🏻":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏿‍❤‍💋‍👨🏼":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏿‍❤‍💋‍👨🏽":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏿‍❤‍💋‍👨🏾":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏿‍❤‍💋‍👨🏿":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏻‍❤‍💋‍👩🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏻‍❤‍💋‍👩🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏻‍❤‍💋‍👩🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏻‍❤‍💋‍👩🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏻‍❤‍💋‍👩🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏼‍❤‍💋‍👩🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏼‍❤‍💋‍👩🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏼‍❤‍💋‍👩🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏼‍❤‍💋‍👩🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏼‍❤‍💋‍👩🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏽‍❤‍💋‍👩🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏽‍❤‍💋‍👩🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏽‍❤‍💋‍👩🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏽‍❤‍💋‍👩🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏽‍❤‍💋‍👩🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏾‍❤‍💋‍👩🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏾‍❤‍💋‍👩🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏾‍❤‍💋‍👩🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏾‍❤‍💋‍👩🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏾‍❤‍💋‍👩🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏿‍❤‍💋‍👩🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏿‍❤‍💋‍👩🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏿‍❤‍💋‍👩🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏿‍❤‍💋‍👩🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏿‍❤‍💋‍👩🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","🧑🏻‍❤️‍💋‍🧑🏼":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏻‍❤️‍💋‍🧑🏽":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏻‍❤️‍💋‍🧑🏾":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏻‍❤️‍💋‍🧑🏿":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏼‍❤️‍💋‍🧑🏻":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏼‍❤️‍💋‍🧑🏽":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏼‍❤️‍💋‍🧑🏾":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏼‍❤️‍💋‍🧑🏿":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏽‍❤️‍💋‍🧑🏻":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏽‍❤️‍💋‍🧑🏼":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏽‍❤️‍💋‍🧑🏾":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏽‍❤️‍💋‍🧑🏿":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏾‍❤️‍💋‍🧑🏻":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏾‍❤️‍💋‍🧑🏼":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏾‍❤️‍💋‍🧑🏽":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏾‍❤️‍💋‍🧑🏿":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏿‍❤️‍💋‍🧑🏻":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏿‍❤️‍💋‍🧑🏼":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏿‍❤️‍💋‍🧑🏽":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏿‍❤️‍💋‍🧑🏾":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","👩🏻‍❤️‍💋‍👨🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏻‍❤️‍💋‍👨🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏻‍❤️‍💋‍👨🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏻‍❤️‍💋‍👨🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏻‍❤️‍💋‍👨🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏼‍❤️‍💋‍👨🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏼‍❤️‍💋‍👨🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏼‍❤️‍💋‍👨🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏼‍❤️‍💋‍👨🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏼‍❤️‍💋‍👨🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏽‍❤️‍💋‍👨🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏽‍❤️‍💋‍👨🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏽‍❤️‍💋‍👨🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏽‍❤️‍💋‍👨🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏽‍❤️‍💋‍👨🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏾‍❤️‍💋‍👨🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏾‍❤️‍💋‍👨🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏾‍❤️‍💋‍👨🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏾‍❤️‍💋‍👨🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏾‍❤️‍💋‍👨🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏿‍❤️‍💋‍👨🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏿‍❤️‍💋‍👨🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏿‍❤️‍💋‍👨🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏿‍❤️‍💋‍👨🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏿‍❤️‍💋‍👨🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏻‍❤️‍💋‍👨🏻":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏻‍❤️‍💋‍👨🏼":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏻‍❤️‍💋‍👨🏽":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏻‍❤️‍💋‍👨🏾":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏻‍❤️‍💋‍👨🏿":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏼‍❤️‍💋‍👨🏻":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏼‍❤️‍💋‍👨🏼":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏼‍❤️‍💋‍👨🏽":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏼‍❤️‍💋‍👨🏾":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏼‍❤️‍💋‍👨🏿":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏽‍❤️‍💋‍👨🏻":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏽‍❤️‍💋‍👨🏼":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏽‍❤️‍💋‍👨🏽":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏽‍❤️‍💋‍👨🏾":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏽‍❤️‍💋‍👨🏿":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏾‍❤️‍💋‍👨🏻":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏾‍❤️‍💋‍👨🏼":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏾‍❤️‍💋‍👨🏽":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏾‍❤️‍💋‍👨🏾":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏾‍❤️‍💋‍👨🏿":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏿‍❤️‍💋‍👨🏻":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏿‍❤️‍💋‍👨🏼":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏿‍❤️‍💋‍👨🏽":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏿‍❤️‍💋‍👨🏾":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏿‍❤️‍💋‍👨🏿":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏻‍❤️‍💋‍👩🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏻‍❤️‍💋‍👩🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏻‍❤️‍💋‍👩🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏻‍❤️‍💋‍👩🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏻‍❤️‍💋‍👩🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏼‍❤️‍💋‍👩🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏼‍❤️‍💋‍👩🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏼‍❤️‍💋‍👩🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏼‍❤️‍💋‍👩🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏼‍❤️‍💋‍👩🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏽‍❤️‍💋‍👩🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏽‍❤️‍💋‍👩🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏽‍❤️‍💋‍👩🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏽‍❤️‍💋‍👩🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏽‍❤️‍💋‍👩🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏾‍❤️‍💋‍👩🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏾‍❤️‍💋‍👩🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏾‍❤️‍💋‍👩🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏾‍❤️‍💋‍👩🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏾‍❤️‍💋‍👩🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏿‍❤️‍💋‍👩🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏿‍❤️‍💋‍👩🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏿‍❤️‍💋‍👩🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏿‍❤️‍💋‍👩🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏿‍❤️‍💋‍👩🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff"} \ No newline at end of file +{"😀":"1f600","😃":"1f603","😄":"1f604","😁":"1f601","😆":"1f606","😅":"1f605","🤣":"1f923","😂":"1f602","🙂":"1f642","🙃":"1f643","🫠":"1fae0","😉":"1f609","😊":"1f60a","😇":"1f607","🥰":"1f970","😍":"1f60d","🤩":"1f929","😘":"1f618","😗":"1f617","☺":"263a","😚":"1f61a","😙":"1f619","🥲":"1f972","😋":"1f60b","😛":"1f61b","😜":"1f61c","🤪":"1f92a","😝":"1f61d","🤑":"1f911","🤗":"1f917","🤭":"1f92d","🫢":"1fae2","🫣":"1fae3","🤫":"1f92b","🤔":"1f914","🫡":"1fae1","🤐":"1f910","🤨":"1f928","😐":"1f610","😑":"1f611","😶":"1f636","🫥":"1fae5","😏":"1f60f","😒":"1f612","🙄":"1f644","😬":"1f62c","🤥":"1f925","😌":"1f60c","😔":"1f614","😪":"1f62a","🤤":"1f924","😴":"1f634","😷":"1f637","🤒":"1f912","🤕":"1f915","🤢":"1f922","🤮":"1f92e","🤧":"1f927","🥵":"1f975","🥶":"1f976","🥴":"1f974","😵":"1f635","🤯":"1f92f","🤠":"1f920","🥳":"1f973","🥸":"1f978","😎":"1f60e","🤓":"1f913","🧐":"1f9d0","😕":"1f615","🫤":"1fae4","😟":"1f61f","🙁":"1f641","☹":"2639","😮":"1f62e","😯":"1f62f","😲":"1f632","😳":"1f633","🥺":"1f97a","🥹":"1f979","😦":"1f626","😧":"1f627","😨":"1f628","😰":"1f630","😥":"1f625","😢":"1f622","😭":"1f62d","😱":"1f631","😖":"1f616","😣":"1f623","😞":"1f61e","😓":"1f613","😩":"1f629","😫":"1f62b","🥱":"1f971","😤":"1f624","😡":"1f621","😠":"1f620","🤬":"1f92c","😈":"1f608","👿":"1f47f","💀":"1f480","☠":"2620","💩":"1f4a9","🤡":"1f921","👹":"1f479","👺":"1f47a","👻":"1f47b","👽":"1f47d","👾":"1f47e","🤖":"1f916","😺":"1f63a","😸":"1f638","😹":"1f639","😻":"1f63b","😼":"1f63c","😽":"1f63d","🙀":"1f640","😿":"1f63f","😾":"1f63e","🙈":"1f648","🙉":"1f649","🙊":"1f64a","💋":"1f48b","💌":"1f48c","💘":"1f498","💝":"1f49d","💖":"1f496","💗":"1f497","💓":"1f493","💞":"1f49e","💕":"1f495","💟":"1f49f","❣":"2763","💔":"1f494","❤":"2764","🧡":"1f9e1","💛":"1f49b","💚":"1f49a","💙":"1f499","💜":"1f49c","🤎":"1f90e","🖤":"1f5a4","🤍":"1f90d","💯":"1f4af","💢":"1f4a2","💥":"1f4a5","💫":"1f4ab","💦":"1f4a6","💨":"1f4a8","🕳":"1f573","💣":"1f4a3","💬":"1f4ac","🗨":"1f5e8","🗯":"1f5ef","💭":"1f4ad","💤":"1f4a4","👋":"1f44b","🤚":"1f91a","🖐":"1f590","✋":"270b","🖖":"1f596","🫱":"1faf1","🫲":"1faf2","🫳":"1faf3","🫴":"1faf4","👌":"1f44c","🤌":"1f90c","🤏":"1f90f","✌":"270c","🤞":"1f91e","🫰":"1faf0","🤟":"1f91f","🤘":"1f918","🤙":"1f919","👈":"1f448","👉":"1f449","👆":"1f446","🖕":"1f595","👇":"1f447","☝":"261d","🫵":"1faf5","👍":"1f44d","👎":"1f44e","✊":"270a","👊":"1f44a","🤛":"1f91b","🤜":"1f91c","👏":"1f44f","🙌":"1f64c","🫶":"1faf6","👐":"1f450","🤲":"1f932","🤝":"1f91d","🙏":"1f64f","✍":"270d","💅":"1f485","🤳":"1f933","💪":"1f4aa","🦾":"1f9be","🦿":"1f9bf","🦵":"1f9b5","🦶":"1f9b6","👂":"1f442","🦻":"1f9bb","👃":"1f443","🧠":"1f9e0","🫀":"1fac0","🫁":"1fac1","🦷":"1f9b7","🦴":"1f9b4","👀":"1f440","👁":"1f441","👅":"1f445","👄":"1f444","🫦":"1fae6","👶":"1f476","🧒":"1f9d2","👦":"1f466","👧":"1f467","🧑":"1f9d1","👱":"1f471","👨":"1f468","🧔":"1f9d4","👩":"1f469","🧓":"1f9d3","👴":"1f474","👵":"1f475","🙍":"1f64d","🙎":"1f64e","🙅":"1f645","🙆":"1f646","💁":"1f481","🙋":"1f64b","🧏":"1f9cf","🙇":"1f647","🤦":"1f926","🤷":"1f937","👮":"1f46e","🕵":"1f575","💂":"1f482","🥷":"1f977","👷":"1f477","🫅":"1fac5","🤴":"1f934","👸":"1f478","👳":"1f473","👲":"1f472","🧕":"1f9d5","🤵":"1f935","👰":"1f470","🤰":"1f930","🫃":"1fac3","🫄":"1fac4","🤱":"1f931","👼":"1f47c","🎅":"1f385","🤶":"1f936","🦸":"1f9b8","🦹":"1f9b9","🧙":"1f9d9","🧚":"1f9da","🧛":"1f9db","🧜":"1f9dc","🧝":"1f9dd","🧞":"1f9de","🧟":"1f9df","🧌":"1f9cc","💆":"1f486","💇":"1f487","🚶":"1f6b6","🧍":"1f9cd","🧎":"1f9ce","🏃":"1f3c3","💃":"1f483","🕺":"1f57a","🕴":"1f574","👯":"1f46f","🧖":"1f9d6","🧗":"1f9d7","🤺":"1f93a","🏇":"1f3c7","⛷":"26f7","🏂":"1f3c2","🏌":"1f3cc","🏄":"1f3c4","🚣":"1f6a3","🏊":"1f3ca","⛹":"26f9","🏋":"1f3cb","🚴":"1f6b4","🚵":"1f6b5","🤸":"1f938","🤼":"1f93c","🤽":"1f93d","🤾":"1f93e","🤹":"1f939","🧘":"1f9d8","🛀":"1f6c0","🛌":"1f6cc","👭":"1f46d","👫":"1f46b","👬":"1f46c","💏":"1f48f","💑":"1f491","👪":"1f46a","🗣":"1f5e3","👤":"1f464","👥":"1f465","🫂":"1fac2","👣":"1f463","🏻":"1f463","🏼":"1f463","🏽":"1f463","🏾":"1f463","🏿":"1f463","🦰":"1f463","🦱":"1f463","🦳":"1f463","🦲":"1f463","🐵":"1f435","🐒":"1f412","🦍":"1f98d","🦧":"1f9a7","🐶":"1f436","🐕":"1f415","🦮":"1f9ae","🐩":"1f429","🐺":"1f43a","🦊":"1f98a","🦝":"1f99d","🐱":"1f431","🐈":"1f408","🦁":"1f981","🐯":"1f42f","🐅":"1f405","🐆":"1f406","🐴":"1f434","🐎":"1f40e","🦄":"1f984","🦓":"1f993","🦌":"1f98c","🦬":"1f9ac","🐮":"1f42e","🐂":"1f402","🐃":"1f403","🐄":"1f404","🐷":"1f437","🐖":"1f416","🐗":"1f417","🐽":"1f43d","🐏":"1f40f","🐑":"1f411","🐐":"1f410","🐪":"1f42a","🐫":"1f42b","🦙":"1f999","🦒":"1f992","🐘":"1f418","🦣":"1f9a3","🦏":"1f98f","🦛":"1f99b","🐭":"1f42d","🐁":"1f401","🐀":"1f400","🐹":"1f439","🐰":"1f430","🐇":"1f407","🐿":"1f43f","🦫":"1f9ab","🦔":"1f994","🦇":"1f987","🐻":"1f43b","🐨":"1f428","🐼":"1f43c","🦥":"1f9a5","🦦":"1f9a6","🦨":"1f9a8","🦘":"1f998","🦡":"1f9a1","🐾":"1f43e","🦃":"1f983","🐔":"1f414","🐓":"1f413","🐣":"1f423","🐤":"1f424","🐥":"1f425","🐦":"1f426","🐧":"1f427","🕊":"1f54a","🦅":"1f985","🦆":"1f986","🦢":"1f9a2","🦉":"1f989","🦤":"1f9a4","🪶":"1fab6","🦩":"1f9a9","🦚":"1f99a","🦜":"1f99c","🐸":"1f438","🐊":"1f40a","🐢":"1f422","🦎":"1f98e","🐍":"1f40d","🐲":"1f432","🐉":"1f409","🦕":"1f995","🦖":"1f996","🐳":"1f433","🐋":"1f40b","🐬":"1f42c","🦭":"1f9ad","🐟":"1f41f","🐠":"1f420","🐡":"1f421","🦈":"1f988","🐙":"1f419","🐚":"1f41a","🪸":"1fab8","🐌":"1f40c","🦋":"1f98b","🐛":"1f41b","🐜":"1f41c","🐝":"1f41d","🪲":"1fab2","🐞":"1f41e","🦗":"1f997","🪳":"1fab3","🕷":"1f577","🕸":"1f578","🦂":"1f982","🦟":"1f99f","🪰":"1fab0","🪱":"1fab1","🦠":"1f9a0","💐":"1f490","🌸":"1f338","💮":"1f4ae","🪷":"1fab7","🏵":"1f3f5","🌹":"1f339","🥀":"1f940","🌺":"1f33a","🌻":"1f33b","🌼":"1f33c","🌷":"1f337","🌱":"1f331","🪴":"1fab4","🌲":"1f332","🌳":"1f333","🌴":"1f334","🌵":"1f335","🌾":"1f33e","🌿":"1f33f","☘":"2618","🍀":"1f340","🍁":"1f341","🍂":"1f342","🍃":"1f343","🪹":"1fab9","🪺":"1faba","🍇":"1f347","🍈":"1f348","🍉":"1f349","🍊":"1f34a","🍋":"1f34b","🍌":"1f34c","🍍":"1f34d","🥭":"1f96d","🍎":"1f34e","🍏":"1f34f","🍐":"1f350","🍑":"1f351","🍒":"1f352","🍓":"1f353","🫐":"1fad0","🥝":"1f95d","🍅":"1f345","🫒":"1fad2","🥥":"1f965","🥑":"1f951","🍆":"1f346","🥔":"1f954","🥕":"1f955","🌽":"1f33d","🌶":"1f336","🫑":"1fad1","🥒":"1f952","🥬":"1f96c","🥦":"1f966","🧄":"1f9c4","🧅":"1f9c5","🍄":"1f344","🥜":"1f95c","🫘":"1fad8","🌰":"1f330","🍞":"1f35e","🥐":"1f950","🥖":"1f956","🫓":"1fad3","🥨":"1f968","🥯":"1f96f","🥞":"1f95e","🧇":"1f9c7","🧀":"1f9c0","🍖":"1f356","🍗":"1f357","🥩":"1f969","🥓":"1f953","🍔":"1f354","🍟":"1f35f","🍕":"1f355","🌭":"1f32d","🥪":"1f96a","🌮":"1f32e","🌯":"1f32f","🫔":"1fad4","🥙":"1f959","🧆":"1f9c6","🥚":"1f95a","🍳":"1f373","🥘":"1f958","🍲":"1f372","🫕":"1fad5","🥣":"1f963","🥗":"1f957","🍿":"1f37f","🧈":"1f9c8","🧂":"1f9c2","🥫":"1f96b","🍱":"1f371","🍘":"1f358","🍙":"1f359","🍚":"1f35a","🍛":"1f35b","🍜":"1f35c","🍝":"1f35d","🍠":"1f360","🍢":"1f362","🍣":"1f363","🍤":"1f364","🍥":"1f365","🥮":"1f96e","🍡":"1f361","🥟":"1f95f","🥠":"1f960","🥡":"1f961","🦀":"1f980","🦞":"1f99e","🦐":"1f990","🦑":"1f991","🦪":"1f9aa","🍦":"1f366","🍧":"1f367","🍨":"1f368","🍩":"1f369","🍪":"1f36a","🎂":"1f382","🍰":"1f370","🧁":"1f9c1","🥧":"1f967","🍫":"1f36b","🍬":"1f36c","🍭":"1f36d","🍮":"1f36e","🍯":"1f36f","🍼":"1f37c","🥛":"1f95b","☕":"2615","🫖":"1fad6","🍵":"1f375","🍶":"1f376","🍾":"1f37e","🍷":"1f377","🍸":"1f378","🍹":"1f379","🍺":"1f37a","🍻":"1f37b","🥂":"1f942","🥃":"1f943","🫗":"1fad7","🥤":"1f964","🧋":"1f9cb","🧃":"1f9c3","🧉":"1f9c9","🧊":"1f9ca","🥢":"1f962","🍽":"1f37d","🍴":"1f374","🥄":"1f944","🔪":"1f52a","🫙":"1fad9","🏺":"1f3fa","🌍":"1f30d","🌎":"1f30e","🌏":"1f30f","🌐":"1f310","🗺":"1f5fa","🗾":"1f5fe","🧭":"1f9ed","🏔":"1f3d4","⛰":"26f0","🌋":"1f30b","🗻":"1f5fb","🏕":"1f3d5","🏖":"1f3d6","🏜":"1f3dc","🏝":"1f3dd","🏞":"1f3de","🏟":"1f3df","🏛":"1f3db","🏗":"1f3d7","🧱":"1f9f1","🪨":"1faa8","🪵":"1fab5","🛖":"1f6d6","🏘":"1f3d8","🏚":"1f3da","🏠":"1f3e0","🏡":"1f3e1","🏢":"1f3e2","🏣":"1f3e3","🏤":"1f3e4","🏥":"1f3e5","🏦":"1f3e6","🏨":"1f3e8","🏩":"1f3e9","🏪":"1f3ea","🏫":"1f3eb","🏬":"1f3ec","🏭":"1f3ed","🏯":"1f3ef","🏰":"1f3f0","💒":"1f492","🗼":"1f5fc","🗽":"1f5fd","⛪":"26ea","🕌":"1f54c","🛕":"1f6d5","🕍":"1f54d","⛩":"26e9","🕋":"1f54b","⛲":"26f2","⛺":"26fa","🌁":"1f301","🌃":"1f303","🏙":"1f3d9","🌄":"1f304","🌅":"1f305","🌆":"1f306","🌇":"1f307","🌉":"1f309","♨":"2668","🎠":"1f3a0","🛝":"1f6dd","🎡":"1f3a1","🎢":"1f3a2","💈":"1f488","🎪":"1f3aa","🚂":"1f682","🚃":"1f683","🚄":"1f684","🚅":"1f685","🚆":"1f686","🚇":"1f687","🚈":"1f688","🚉":"1f689","🚊":"1f68a","🚝":"1f69d","🚞":"1f69e","🚋":"1f68b","🚌":"1f68c","🚍":"1f68d","🚎":"1f68e","🚐":"1f690","🚑":"1f691","🚒":"1f692","🚓":"1f693","🚔":"1f694","🚕":"1f695","🚖":"1f696","🚗":"1f697","🚘":"1f698","🚙":"1f699","🛻":"1f6fb","🚚":"1f69a","🚛":"1f69b","🚜":"1f69c","🏎":"1f3ce","🏍":"1f3cd","🛵":"1f6f5","🦽":"1f9bd","🦼":"1f9bc","🛺":"1f6fa","🚲":"1f6b2","🛴":"1f6f4","🛹":"1f6f9","🛼":"1f6fc","🚏":"1f68f","🛣":"1f6e3","🛤":"1f6e4","🛢":"1f6e2","⛽":"26fd","🛞":"1f6de","🚨":"1f6a8","🚥":"1f6a5","🚦":"1f6a6","🛑":"1f6d1","🚧":"1f6a7","⚓":"2693","🛟":"1f6df","⛵":"26f5","🛶":"1f6f6","🚤":"1f6a4","🛳":"1f6f3","⛴":"26f4","🛥":"1f6e5","🚢":"1f6a2","✈":"2708","🛩":"1f6e9","🛫":"1f6eb","🛬":"1f6ec","🪂":"1fa82","💺":"1f4ba","🚁":"1f681","🚟":"1f69f","🚠":"1f6a0","🚡":"1f6a1","🛰":"1f6f0","🚀":"1f680","🛸":"1f6f8","🛎":"1f6ce","🧳":"1f9f3","⌛":"231b","⏳":"23f3","⌚":"231a","⏰":"23f0","⏱":"23f1","⏲":"23f2","🕰":"1f570","🕛":"1f55b","🕧":"1f567","🕐":"1f550","🕜":"1f55c","🕑":"1f551","🕝":"1f55d","🕒":"1f552","🕞":"1f55e","🕓":"1f553","🕟":"1f55f","🕔":"1f554","🕠":"1f560","🕕":"1f555","🕡":"1f561","🕖":"1f556","🕢":"1f562","🕗":"1f557","🕣":"1f563","🕘":"1f558","🕤":"1f564","🕙":"1f559","🕥":"1f565","🕚":"1f55a","🕦":"1f566","🌑":"1f311","🌒":"1f312","🌓":"1f313","🌔":"1f314","🌕":"1f315","🌖":"1f316","🌗":"1f317","🌘":"1f318","🌙":"1f319","🌚":"1f31a","🌛":"1f31b","🌜":"1f31c","🌡":"1f321","☀":"2600","🌝":"1f31d","🌞":"1f31e","🪐":"1fa90","⭐":"2b50","🌟":"1f31f","🌠":"1f320","🌌":"1f30c","☁":"2601","⛅":"26c5","⛈":"26c8","🌤":"1f324","🌥":"1f325","🌦":"1f326","🌧":"1f327","🌨":"1f328","🌩":"1f329","🌪":"1f32a","🌫":"1f32b","🌬":"1f32c","🌀":"1f300","🌈":"1f308","🌂":"1f302","☂":"2602","☔":"2614","⛱":"26f1","⚡":"26a1","❄":"2744","☃":"2603","⛄":"26c4","☄":"2604","🔥":"1f525","💧":"1f4a7","🌊":"1f30a","🎃":"1f383","🎄":"1f384","🎆":"1f386","🎇":"1f387","🧨":"1f9e8","✨":"2728","🎈":"1f388","🎉":"1f389","🎊":"1f38a","🎋":"1f38b","🎍":"1f38d","🎎":"1f38e","🎏":"1f38f","🎐":"1f390","🎑":"1f391","🧧":"1f9e7","🎀":"1f380","🎁":"1f381","🎗":"1f397","🎟":"1f39f","🎫":"1f3ab","🎖":"1f396","🏆":"1f3c6","🏅":"1f3c5","🥇":"1f947","🥈":"1f948","🥉":"1f949","⚽":"26bd","⚾":"26be","🥎":"1f94e","🏀":"1f3c0","🏐":"1f3d0","🏈":"1f3c8","🏉":"1f3c9","🎾":"1f3be","🥏":"1f94f","🎳":"1f3b3","🏏":"1f3cf","🏑":"1f3d1","🏒":"1f3d2","🥍":"1f94d","🏓":"1f3d3","🏸":"1f3f8","🥊":"1f94a","🥋":"1f94b","🥅":"1f945","⛳":"26f3","⛸":"26f8","🎣":"1f3a3","🤿":"1f93f","🎽":"1f3bd","🎿":"1f3bf","🛷":"1f6f7","🥌":"1f94c","🎯":"1f3af","🪀":"1fa80","🪁":"1fa81","🎱":"1f3b1","🔮":"1f52e","🪄":"1fa84","🧿":"1f9ff","🪬":"1faac","🎮":"1f3ae","🕹":"1f579","🎰":"1f3b0","🎲":"1f3b2","🧩":"1f9e9","🧸":"1f9f8","🪅":"1fa85","🪩":"1faa9","🪆":"1fa86","♠":"2660","♥":"2665","♦":"2666","♣":"2663","♟":"265f","🃏":"1f0cf","🀄":"1f004","🎴":"1f3b4","🎭":"1f3ad","🖼":"1f5bc","🎨":"1f3a8","🧵":"1f9f5","🪡":"1faa1","🧶":"1f9f6","🪢":"1faa2","👓":"1f453","🕶":"1f576","🥽":"1f97d","🥼":"1f97c","🦺":"1f9ba","👔":"1f454","👕":"1f455","👖":"1f456","🧣":"1f9e3","🧤":"1f9e4","🧥":"1f9e5","🧦":"1f9e6","👗":"1f457","👘":"1f458","🥻":"1f97b","🩱":"1fa71","🩲":"1fa72","🩳":"1fa73","👙":"1f459","👚":"1f45a","👛":"1f45b","👜":"1f45c","👝":"1f45d","🛍":"1f6cd","🎒":"1f392","🩴":"1fa74","👞":"1f45e","👟":"1f45f","🥾":"1f97e","🥿":"1f97f","👠":"1f460","👡":"1f461","🩰":"1fa70","👢":"1f462","👑":"1f451","👒":"1f452","🎩":"1f3a9","🎓":"1f393","🧢":"1f9e2","🪖":"1fa96","⛑":"26d1","📿":"1f4ff","💄":"1f484","💍":"1f48d","💎":"1f48e","🔇":"1f507","🔈":"1f508","🔉":"1f509","🔊":"1f50a","📢":"1f4e2","📣":"1f4e3","📯":"1f4ef","🔔":"1f514","🔕":"1f515","🎼":"1f3bc","🎵":"1f3b5","🎶":"1f3b6","🎙":"1f399","🎚":"1f39a","🎛":"1f39b","🎤":"1f3a4","🎧":"1f3a7","📻":"1f4fb","🎷":"1f3b7","🪗":"1fa97","🎸":"1f3b8","🎹":"1f3b9","🎺":"1f3ba","🎻":"1f3bb","🪕":"1fa95","🥁":"1f941","🪘":"1fa98","📱":"1f4f1","📲":"1f4f2","☎":"260e","📞":"1f4de","📟":"1f4df","📠":"1f4e0","🔋":"1f50b","🪫":"1faab","🔌":"1f50c","💻":"1f4bb","🖥":"1f5a5","🖨":"1f5a8","⌨":"2328","🖱":"1f5b1","🖲":"1f5b2","💽":"1f4bd","💾":"1f4be","💿":"1f4bf","📀":"1f4c0","🧮":"1f9ee","🎥":"1f3a5","🎞":"1f39e","📽":"1f4fd","🎬":"1f3ac","📺":"1f4fa","📷":"1f4f7","📸":"1f4f8","📹":"1f4f9","📼":"1f4fc","🔍":"1f50d","🔎":"1f50e","🕯":"1f56f","💡":"1f4a1","🔦":"1f526","🏮":"1f3ee","🪔":"1fa94","📔":"1f4d4","📕":"1f4d5","📖":"1f4d6","📗":"1f4d7","📘":"1f4d8","📙":"1f4d9","📚":"1f4da","📓":"1f4d3","📒":"1f4d2","📃":"1f4c3","📜":"1f4dc","📄":"1f4c4","📰":"1f4f0","🗞":"1f5de","📑":"1f4d1","🔖":"1f516","🏷":"1f3f7","💰":"1f4b0","🪙":"1fa99","💴":"1f4b4","💵":"1f4b5","💶":"1f4b6","💷":"1f4b7","💸":"1f4b8","💳":"1f4b3","🧾":"1f9fe","💹":"1f4b9","✉":"2709","📧":"1f4e7","📨":"1f4e8","📩":"1f4e9","📤":"1f4e4","📥":"1f4e5","📦":"1f4e6","📫":"1f4eb","📪":"1f4ea","📬":"1f4ec","📭":"1f4ed","📮":"1f4ee","🗳":"1f5f3","✏":"270f","✒":"2712","🖋":"1f58b","🖊":"1f58a","🖌":"1f58c","🖍":"1f58d","📝":"1f4dd","💼":"1f4bc","📁":"1f4c1","📂":"1f4c2","🗂":"1f5c2","📅":"1f4c5","📆":"1f4c6","🗒":"1f5d2","🗓":"1f5d3","📇":"1f4c7","📈":"1f4c8","📉":"1f4c9","📊":"1f4ca","📋":"1f4cb","📌":"1f4cc","📍":"1f4cd","📎":"1f4ce","🖇":"1f587","📏":"1f4cf","📐":"1f4d0","✂":"2702","🗃":"1f5c3","🗄":"1f5c4","🗑":"1f5d1","🔒":"1f512","🔓":"1f513","🔏":"1f50f","🔐":"1f510","🔑":"1f511","🗝":"1f5dd","🔨":"1f528","🪓":"1fa93","⛏":"26cf","⚒":"2692","🛠":"1f6e0","🗡":"1f5e1","⚔":"2694","🔫":"1f52b","🪃":"1fa83","🏹":"1f3f9","🛡":"1f6e1","🪚":"1fa9a","🔧":"1f527","🪛":"1fa9b","🔩":"1f529","⚙":"2699","🗜":"1f5dc","⚖":"2696","🦯":"1f9af","🔗":"1f517","⛓":"26d3","🪝":"1fa9d","🧰":"1f9f0","🧲":"1f9f2","🪜":"1fa9c","⚗":"2697","🧪":"1f9ea","🧫":"1f9eb","🧬":"1f9ec","🔬":"1f52c","🔭":"1f52d","📡":"1f4e1","💉":"1f489","🩸":"1fa78","💊":"1f48a","🩹":"1fa79","🩼":"1fa7c","🩺":"1fa7a","🩻":"1fa7b","🚪":"1f6aa","🛗":"1f6d7","🪞":"1fa9e","🪟":"1fa9f","🛏":"1f6cf","🛋":"1f6cb","🪑":"1fa91","🚽":"1f6bd","🪠":"1faa0","🚿":"1f6bf","🛁":"1f6c1","🪤":"1faa4","🪒":"1fa92","🧴":"1f9f4","🧷":"1f9f7","🧹":"1f9f9","🧺":"1f9fa","🧻":"1f9fb","🪣":"1faa3","🧼":"1f9fc","🫧":"1fae7","🪥":"1faa5","🧽":"1f9fd","🧯":"1f9ef","🛒":"1f6d2","🚬":"1f6ac","⚰":"26b0","🪦":"1faa6","⚱":"26b1","🗿":"1f5ff","🪧":"1faa7","🪪":"1faaa","🏧":"1f3e7","🚮":"1f6ae","🚰":"1f6b0","♿":"267f","🚹":"1f6b9","🚺":"1f6ba","🚻":"1f6bb","🚼":"1f6bc","🚾":"1f6be","🛂":"1f6c2","🛃":"1f6c3","🛄":"1f6c4","🛅":"1f6c5","⚠":"26a0","🚸":"1f6b8","⛔":"26d4","🚫":"1f6ab","🚳":"1f6b3","🚭":"1f6ad","🚯":"1f6af","🚱":"1f6b1","🚷":"1f6b7","📵":"1f4f5","🔞":"1f51e","☢":"2622","☣":"2623","⬆":"2b06","↗":"2197","➡":"27a1","↘":"2198","⬇":"2b07","↙":"2199","⬅":"2b05","↖":"2196","↕":"2195","↔":"2194","↩":"21a9","↪":"21aa","⤴":"2934","⤵":"2935","🔃":"1f503","🔄":"1f504","🔙":"1f519","🔚":"1f51a","🔛":"1f51b","🔜":"1f51c","🔝":"1f51d","🛐":"1f6d0","⚛":"269b","🕉":"1f549","✡":"2721","☸":"2638","☯":"262f","✝":"271d","☦":"2626","☪":"262a","☮":"262e","🕎":"1f54e","🔯":"1f52f","♈":"2648","♉":"2649","♊":"264a","♋":"264b","♌":"264c","♍":"264d","♎":"264e","♏":"264f","♐":"2650","♑":"2651","♒":"2652","♓":"2653","⛎":"26ce","🔀":"1f500","🔁":"1f501","🔂":"1f502","▶":"25b6","⏩":"23e9","⏭":"23ed","⏯":"23ef","◀":"25c0","⏪":"23ea","⏮":"23ee","🔼":"1f53c","⏫":"23eb","🔽":"1f53d","⏬":"23ec","⏸":"23f8","⏹":"23f9","⏺":"23fa","⏏":"23cf","🎦":"1f3a6","🔅":"1f505","🔆":"1f506","📶":"1f4f6","📳":"1f4f3","📴":"1f4f4","♀":"2640","♂":"2642","⚧":"26a7","✖":"2716","➕":"2795","➖":"2796","➗":"2797","🟰":"1f7f0","♾":"267e","‼":"203c","⁉":"2049","❓":"2753","❔":"2754","❕":"2755","❗":"2757","〰":"3030","💱":"1f4b1","💲":"1f4b2","⚕":"2695","♻":"267b","⚜":"269c","🔱":"1f531","📛":"1f4db","🔰":"1f530","⭕":"2b55","✅":"2705","☑":"2611","✔":"2714","❌":"274c","❎":"274e","➰":"27b0","➿":"27bf","〽":"303d","✳":"2733","✴":"2734","❇":"2747","©":"a9","®":"ae","™":"2122","🔟":"1f51f","🔠":"1f520","🔡":"1f521","🔢":"1f522","🔣":"1f523","🔤":"1f524","🅰":"1f170","🆎":"1f18e","🅱":"1f171","🆑":"1f191","🆒":"1f192","🆓":"1f193","ℹ":"2139","🆔":"1f194","Ⓜ":"24c2","🆕":"1f195","🆖":"1f196","🅾":"1f17e","🆗":"1f197","🅿":"1f17f","🆘":"1f198","🆙":"1f199","🆚":"1f19a","🈁":"1f201","🈂":"1f202","🈷":"1f237","🈶":"1f236","🈯":"1f22f","🉐":"1f250","🈹":"1f239","🈚":"1f21a","🈲":"1f232","🉑":"1f251","🈸":"1f238","🈴":"1f234","🈳":"1f233","㊗":"3297","㊙":"3299","🈺":"1f23a","🈵":"1f235","🔴":"1f534","🟠":"1f7e0","🟡":"1f7e1","🟢":"1f7e2","🔵":"1f535","🟣":"1f7e3","🟤":"1f7e4","⚫":"26ab","⚪":"26aa","🟥":"1f7e5","🟧":"1f7e7","🟨":"1f7e8","🟩":"1f7e9","🟦":"1f7e6","🟪":"1f7ea","🟫":"1f7eb","⬛":"2b1b","⬜":"2b1c","◼":"25fc","◻":"25fb","◾":"25fe","◽":"25fd","▪":"25aa","▫":"25ab","🔶":"1f536","🔷":"1f537","🔸":"1f538","🔹":"1f539","🔺":"1f53a","🔻":"1f53b","💠":"1f4a0","🔘":"1f518","🔳":"1f533","🔲":"1f532","🏁":"1f3c1","🚩":"1f6a9","🎌":"1f38c","🏴":"1f3f4","🏳":"1f3f3","☺️":"263a","☹️":"2639","☠️":"2620","❣️":"2763","❤️":"2764","🕳️":"1f573","🗨️":"1f5e8","🗯️":"1f5ef","👋🏻":"1f44b-1f3fb","👋🏼":"1f44b-1f3fc","👋🏽":"1f44b-1f3fd","👋🏾":"1f44b-1f3fe","👋🏿":"1f44b-1f3ff","🤚🏻":"1f91a-1f3fb","🤚🏼":"1f91a-1f3fc","🤚🏽":"1f91a-1f3fd","🤚🏾":"1f91a-1f3fe","🤚🏿":"1f91a-1f3ff","🖐️":"1f590","🖐🏻":"1f590-1f3fb","🖐🏼":"1f590-1f3fc","🖐🏽":"1f590-1f3fd","🖐🏾":"1f590-1f3fe","🖐🏿":"1f590-1f3ff","✋🏻":"270b-1f3fb","✋🏼":"270b-1f3fc","✋🏽":"270b-1f3fd","✋🏾":"270b-1f3fe","✋🏿":"270b-1f3ff","🖖🏻":"1f596-1f3fb","🖖🏼":"1f596-1f3fc","🖖🏽":"1f596-1f3fd","🖖🏾":"1f596-1f3fe","🖖🏿":"1f596-1f3ff","🫱🏻":"1faf1-1f3fb","🫱🏼":"1faf1-1f3fc","🫱🏽":"1faf1-1f3fd","🫱🏾":"1faf1-1f3fe","🫱🏿":"1faf1-1f3ff","🫲🏻":"1faf2-1f3fb","🫲🏼":"1faf2-1f3fc","🫲🏽":"1faf2-1f3fd","🫲🏾":"1faf2-1f3fe","🫲🏿":"1faf2-1f3ff","🫳🏻":"1faf3-1f3fb","🫳🏼":"1faf3-1f3fc","🫳🏽":"1faf3-1f3fd","🫳🏾":"1faf3-1f3fe","🫳🏿":"1faf3-1f3ff","🫴🏻":"1faf4-1f3fb","🫴🏼":"1faf4-1f3fc","🫴🏽":"1faf4-1f3fd","🫴🏾":"1faf4-1f3fe","🫴🏿":"1faf4-1f3ff","👌🏻":"1f44c-1f3fb","👌🏼":"1f44c-1f3fc","👌🏽":"1f44c-1f3fd","👌🏾":"1f44c-1f3fe","👌🏿":"1f44c-1f3ff","🤌🏻":"1f90c-1f3fb","🤌🏼":"1f90c-1f3fc","🤌🏽":"1f90c-1f3fd","🤌🏾":"1f90c-1f3fe","🤌🏿":"1f90c-1f3ff","🤏🏻":"1f90f-1f3fb","🤏🏼":"1f90f-1f3fc","🤏🏽":"1f90f-1f3fd","🤏🏾":"1f90f-1f3fe","🤏🏿":"1f90f-1f3ff","✌️":"270c","✌🏻":"270c-1f3fb","✌🏼":"270c-1f3fc","✌🏽":"270c-1f3fd","✌🏾":"270c-1f3fe","✌🏿":"270c-1f3ff","🤞🏻":"1f91e-1f3fb","🤞🏼":"1f91e-1f3fc","🤞🏽":"1f91e-1f3fd","🤞🏾":"1f91e-1f3fe","🤞🏿":"1f91e-1f3ff","🫰🏻":"1faf0-1f3fb","🫰🏼":"1faf0-1f3fc","🫰🏽":"1faf0-1f3fd","🫰🏾":"1faf0-1f3fe","🫰🏿":"1faf0-1f3ff","🤟🏻":"1f91f-1f3fb","🤟🏼":"1f91f-1f3fc","🤟🏽":"1f91f-1f3fd","🤟🏾":"1f91f-1f3fe","🤟🏿":"1f91f-1f3ff","🤘🏻":"1f918-1f3fb","🤘🏼":"1f918-1f3fc","🤘🏽":"1f918-1f3fd","🤘🏾":"1f918-1f3fe","🤘🏿":"1f918-1f3ff","🤙🏻":"1f919-1f3fb","🤙🏼":"1f919-1f3fc","🤙🏽":"1f919-1f3fd","🤙🏾":"1f919-1f3fe","🤙🏿":"1f919-1f3ff","👈🏻":"1f448-1f3fb","👈🏼":"1f448-1f3fc","👈🏽":"1f448-1f3fd","👈🏾":"1f448-1f3fe","👈🏿":"1f448-1f3ff","👉🏻":"1f449-1f3fb","👉🏼":"1f449-1f3fc","👉🏽":"1f449-1f3fd","👉🏾":"1f449-1f3fe","👉🏿":"1f449-1f3ff","👆🏻":"1f446-1f3fb","👆🏼":"1f446-1f3fc","👆🏽":"1f446-1f3fd","👆🏾":"1f446-1f3fe","👆🏿":"1f446-1f3ff","🖕🏻":"1f595-1f3fb","🖕🏼":"1f595-1f3fc","🖕🏽":"1f595-1f3fd","🖕🏾":"1f595-1f3fe","🖕🏿":"1f595-1f3ff","👇🏻":"1f447-1f3fb","👇🏼":"1f447-1f3fc","👇🏽":"1f447-1f3fd","👇🏾":"1f447-1f3fe","👇🏿":"1f447-1f3ff","☝️":"261d","☝🏻":"261d-1f3fb","☝🏼":"261d-1f3fc","☝🏽":"261d-1f3fd","☝🏾":"261d-1f3fe","☝🏿":"261d-1f3ff","🫵🏻":"1faf5-1f3fb","🫵🏼":"1faf5-1f3fc","🫵🏽":"1faf5-1f3fd","🫵🏾":"1faf5-1f3fe","🫵🏿":"1faf5-1f3ff","👍🏻":"1f44d-1f3fb","👍🏼":"1f44d-1f3fc","👍🏽":"1f44d-1f3fd","👍🏾":"1f44d-1f3fe","👍🏿":"1f44d-1f3ff","👎🏻":"1f44e-1f3fb","👎🏼":"1f44e-1f3fc","👎🏽":"1f44e-1f3fd","👎🏾":"1f44e-1f3fe","👎🏿":"1f44e-1f3ff","✊🏻":"270a-1f3fb","✊🏼":"270a-1f3fc","✊🏽":"270a-1f3fd","✊🏾":"270a-1f3fe","✊🏿":"270a-1f3ff","👊🏻":"1f44a-1f3fb","👊🏼":"1f44a-1f3fc","👊🏽":"1f44a-1f3fd","👊🏾":"1f44a-1f3fe","👊🏿":"1f44a-1f3ff","🤛🏻":"1f91b-1f3fb","🤛🏼":"1f91b-1f3fc","🤛🏽":"1f91b-1f3fd","🤛🏾":"1f91b-1f3fe","🤛🏿":"1f91b-1f3ff","🤜🏻":"1f91c-1f3fb","🤜🏼":"1f91c-1f3fc","🤜🏽":"1f91c-1f3fd","🤜🏾":"1f91c-1f3fe","🤜🏿":"1f91c-1f3ff","👏🏻":"1f44f-1f3fb","👏🏼":"1f44f-1f3fc","👏🏽":"1f44f-1f3fd","👏🏾":"1f44f-1f3fe","👏🏿":"1f44f-1f3ff","🙌🏻":"1f64c-1f3fb","🙌🏼":"1f64c-1f3fc","🙌🏽":"1f64c-1f3fd","🙌🏾":"1f64c-1f3fe","🙌🏿":"1f64c-1f3ff","🫶🏻":"1faf6-1f3fb","🫶🏼":"1faf6-1f3fc","🫶🏽":"1faf6-1f3fd","🫶🏾":"1faf6-1f3fe","🫶🏿":"1faf6-1f3ff","👐🏻":"1f450-1f3fb","👐🏼":"1f450-1f3fc","👐🏽":"1f450-1f3fd","👐🏾":"1f450-1f3fe","👐🏿":"1f450-1f3ff","🤲🏻":"1f932-1f3fb","🤲🏼":"1f932-1f3fc","🤲🏽":"1f932-1f3fd","🤲🏾":"1f932-1f3fe","🤲🏿":"1f932-1f3ff","🤝🏻":"1f91d-1f3fb","🤝🏼":"1f91d-1f3fc","🤝🏽":"1f91d-1f3fd","🤝🏾":"1f91d-1f3fe","🤝🏿":"1f91d-1f3ff","🙏🏻":"1f64f-1f3fb","🙏🏼":"1f64f-1f3fc","🙏🏽":"1f64f-1f3fd","🙏🏾":"1f64f-1f3fe","🙏🏿":"1f64f-1f3ff","✍️":"270d","✍🏻":"270d-1f3fb","✍🏼":"270d-1f3fc","✍🏽":"270d-1f3fd","✍🏾":"270d-1f3fe","✍🏿":"270d-1f3ff","💅🏻":"1f485-1f3fb","💅🏼":"1f485-1f3fc","💅🏽":"1f485-1f3fd","💅🏾":"1f485-1f3fe","💅🏿":"1f485-1f3ff","🤳🏻":"1f933-1f3fb","🤳🏼":"1f933-1f3fc","🤳🏽":"1f933-1f3fd","🤳🏾":"1f933-1f3fe","🤳🏿":"1f933-1f3ff","💪🏻":"1f4aa-1f3fb","💪🏼":"1f4aa-1f3fc","💪🏽":"1f4aa-1f3fd","💪🏾":"1f4aa-1f3fe","💪🏿":"1f4aa-1f3ff","🦵🏻":"1f9b5-1f3fb","🦵🏼":"1f9b5-1f3fc","🦵🏽":"1f9b5-1f3fd","🦵🏾":"1f9b5-1f3fe","🦵🏿":"1f9b5-1f3ff","🦶🏻":"1f9b6-1f3fb","🦶🏼":"1f9b6-1f3fc","🦶🏽":"1f9b6-1f3fd","🦶🏾":"1f9b6-1f3fe","🦶🏿":"1f9b6-1f3ff","👂🏻":"1f442-1f3fb","👂🏼":"1f442-1f3fc","👂🏽":"1f442-1f3fd","👂🏾":"1f442-1f3fe","👂🏿":"1f442-1f3ff","🦻🏻":"1f9bb-1f3fb","🦻🏼":"1f9bb-1f3fc","🦻🏽":"1f9bb-1f3fd","🦻🏾":"1f9bb-1f3fe","🦻🏿":"1f9bb-1f3ff","👃🏻":"1f443-1f3fb","👃🏼":"1f443-1f3fc","👃🏽":"1f443-1f3fd","👃🏾":"1f443-1f3fe","👃🏿":"1f443-1f3ff","👁️":"1f441","👶🏻":"1f476-1f3fb","👶🏼":"1f476-1f3fc","👶🏽":"1f476-1f3fd","👶🏾":"1f476-1f3fe","👶🏿":"1f476-1f3ff","🧒🏻":"1f9d2-1f3fb","🧒🏼":"1f9d2-1f3fc","🧒🏽":"1f9d2-1f3fd","🧒🏾":"1f9d2-1f3fe","🧒🏿":"1f9d2-1f3ff","👦🏻":"1f466-1f3fb","👦🏼":"1f466-1f3fc","👦🏽":"1f466-1f3fd","👦🏾":"1f466-1f3fe","👦🏿":"1f466-1f3ff","👧🏻":"1f467-1f3fb","👧🏼":"1f467-1f3fc","👧🏽":"1f467-1f3fd","👧🏾":"1f467-1f3fe","👧🏿":"1f467-1f3ff","🧑🏻":"1f9d1-1f3fb","🧑🏼":"1f9d1-1f3fc","🧑🏽":"1f9d1-1f3fd","🧑🏾":"1f9d1-1f3fe","🧑🏿":"1f9d1-1f3ff","👱🏻":"1f471-1f3fb","👱🏼":"1f471-1f3fc","👱🏽":"1f471-1f3fd","👱🏾":"1f471-1f3fe","👱🏿":"1f471-1f3ff","👨🏻":"1f468-1f3fb","👨🏼":"1f468-1f3fc","👨🏽":"1f468-1f3fd","👨🏾":"1f468-1f3fe","👨🏿":"1f468-1f3ff","🧔🏻":"1f9d4-1f3fb","🧔🏼":"1f9d4-1f3fc","🧔🏽":"1f9d4-1f3fd","🧔🏾":"1f9d4-1f3fe","🧔🏿":"1f9d4-1f3ff","👩🏻":"1f469-1f3fb","👩🏼":"1f469-1f3fc","👩🏽":"1f469-1f3fd","👩🏾":"1f469-1f3fe","👩🏿":"1f469-1f3ff","🧓🏻":"1f9d3-1f3fb","🧓🏼":"1f9d3-1f3fc","🧓🏽":"1f9d3-1f3fd","🧓🏾":"1f9d3-1f3fe","🧓🏿":"1f9d3-1f3ff","👴🏻":"1f474-1f3fb","👴🏼":"1f474-1f3fc","👴🏽":"1f474-1f3fd","👴🏾":"1f474-1f3fe","👴🏿":"1f474-1f3ff","👵🏻":"1f475-1f3fb","👵🏼":"1f475-1f3fc","👵🏽":"1f475-1f3fd","👵🏾":"1f475-1f3fe","👵🏿":"1f475-1f3ff","🙍🏻":"1f64d-1f3fb","🙍🏼":"1f64d-1f3fc","🙍🏽":"1f64d-1f3fd","🙍🏾":"1f64d-1f3fe","🙍🏿":"1f64d-1f3ff","🙎🏻":"1f64e-1f3fb","🙎🏼":"1f64e-1f3fc","🙎🏽":"1f64e-1f3fd","🙎🏾":"1f64e-1f3fe","🙎🏿":"1f64e-1f3ff","🙅🏻":"1f645-1f3fb","🙅🏼":"1f645-1f3fc","🙅🏽":"1f645-1f3fd","🙅🏾":"1f645-1f3fe","🙅🏿":"1f645-1f3ff","🙆🏻":"1f646-1f3fb","🙆🏼":"1f646-1f3fc","🙆🏽":"1f646-1f3fd","🙆🏾":"1f646-1f3fe","🙆🏿":"1f646-1f3ff","💁🏻":"1f481-1f3fb","💁🏼":"1f481-1f3fc","💁🏽":"1f481-1f3fd","💁🏾":"1f481-1f3fe","💁🏿":"1f481-1f3ff","🙋🏻":"1f64b-1f3fb","🙋🏼":"1f64b-1f3fc","🙋🏽":"1f64b-1f3fd","🙋🏾":"1f64b-1f3fe","🙋🏿":"1f64b-1f3ff","🧏🏻":"1f9cf-1f3fb","🧏🏼":"1f9cf-1f3fc","🧏🏽":"1f9cf-1f3fd","🧏🏾":"1f9cf-1f3fe","🧏🏿":"1f9cf-1f3ff","🙇🏻":"1f647-1f3fb","🙇🏼":"1f647-1f3fc","🙇🏽":"1f647-1f3fd","🙇🏾":"1f647-1f3fe","🙇🏿":"1f647-1f3ff","🤦🏻":"1f926-1f3fb","🤦🏼":"1f926-1f3fc","🤦🏽":"1f926-1f3fd","🤦🏾":"1f926-1f3fe","🤦🏿":"1f926-1f3ff","🤷🏻":"1f937-1f3fb","🤷🏼":"1f937-1f3fc","🤷🏽":"1f937-1f3fd","🤷🏾":"1f937-1f3fe","🤷🏿":"1f937-1f3ff","👮🏻":"1f46e-1f3fb","👮🏼":"1f46e-1f3fc","👮🏽":"1f46e-1f3fd","👮🏾":"1f46e-1f3fe","👮🏿":"1f46e-1f3ff","🕵️":"1f575","🕵🏻":"1f575-1f3fb","🕵🏼":"1f575-1f3fc","🕵🏽":"1f575-1f3fd","🕵🏾":"1f575-1f3fe","🕵🏿":"1f575-1f3ff","💂🏻":"1f482-1f3fb","💂🏼":"1f482-1f3fc","💂🏽":"1f482-1f3fd","💂🏾":"1f482-1f3fe","💂🏿":"1f482-1f3ff","🥷🏻":"1f977-1f3fb","🥷🏼":"1f977-1f3fc","🥷🏽":"1f977-1f3fd","🥷🏾":"1f977-1f3fe","🥷🏿":"1f977-1f3ff","👷🏻":"1f477-1f3fb","👷🏼":"1f477-1f3fc","👷🏽":"1f477-1f3fd","👷🏾":"1f477-1f3fe","👷🏿":"1f477-1f3ff","🫅🏻":"1fac5-1f3fb","🫅🏼":"1fac5-1f3fc","🫅🏽":"1fac5-1f3fd","🫅🏾":"1fac5-1f3fe","🫅🏿":"1fac5-1f3ff","🤴🏻":"1f934-1f3fb","🤴🏼":"1f934-1f3fc","🤴🏽":"1f934-1f3fd","🤴🏾":"1f934-1f3fe","🤴🏿":"1f934-1f3ff","👸🏻":"1f478-1f3fb","👸🏼":"1f478-1f3fc","👸🏽":"1f478-1f3fd","👸🏾":"1f478-1f3fe","👸🏿":"1f478-1f3ff","👳🏻":"1f473-1f3fb","👳🏼":"1f473-1f3fc","👳🏽":"1f473-1f3fd","👳🏾":"1f473-1f3fe","👳🏿":"1f473-1f3ff","👲🏻":"1f472-1f3fb","👲🏼":"1f472-1f3fc","👲🏽":"1f472-1f3fd","👲🏾":"1f472-1f3fe","👲🏿":"1f472-1f3ff","🧕🏻":"1f9d5-1f3fb","🧕🏼":"1f9d5-1f3fc","🧕🏽":"1f9d5-1f3fd","🧕🏾":"1f9d5-1f3fe","🧕🏿":"1f9d5-1f3ff","🤵🏻":"1f935-1f3fb","🤵🏼":"1f935-1f3fc","🤵🏽":"1f935-1f3fd","🤵🏾":"1f935-1f3fe","🤵🏿":"1f935-1f3ff","👰🏻":"1f470-1f3fb","👰🏼":"1f470-1f3fc","👰🏽":"1f470-1f3fd","👰🏾":"1f470-1f3fe","👰🏿":"1f470-1f3ff","🤰🏻":"1f930-1f3fb","🤰🏼":"1f930-1f3fc","🤰🏽":"1f930-1f3fd","🤰🏾":"1f930-1f3fe","🤰🏿":"1f930-1f3ff","🫃🏻":"1fac3-1f3fb","🫃🏼":"1fac3-1f3fc","🫃🏽":"1fac3-1f3fd","🫃🏾":"1fac3-1f3fe","🫃🏿":"1fac3-1f3ff","🫄🏻":"1fac4-1f3fb","🫄🏼":"1fac4-1f3fc","🫄🏽":"1fac4-1f3fd","🫄🏾":"1fac4-1f3fe","🫄🏿":"1fac4-1f3ff","🤱🏻":"1f931-1f3fb","🤱🏼":"1f931-1f3fc","🤱🏽":"1f931-1f3fd","🤱🏾":"1f931-1f3fe","🤱🏿":"1f931-1f3ff","👼🏻":"1f47c-1f3fb","👼🏼":"1f47c-1f3fc","👼🏽":"1f47c-1f3fd","👼🏾":"1f47c-1f3fe","👼🏿":"1f47c-1f3ff","🎅🏻":"1f385-1f3fb","🎅🏼":"1f385-1f3fc","🎅🏽":"1f385-1f3fd","🎅🏾":"1f385-1f3fe","🎅🏿":"1f385-1f3ff","🤶🏻":"1f936-1f3fb","🤶🏼":"1f936-1f3fc","🤶🏽":"1f936-1f3fd","🤶🏾":"1f936-1f3fe","🤶🏿":"1f936-1f3ff","🦸🏻":"1f9b8-1f3fb","🦸🏼":"1f9b8-1f3fc","🦸🏽":"1f9b8-1f3fd","🦸🏾":"1f9b8-1f3fe","🦸🏿":"1f9b8-1f3ff","🦹🏻":"1f9b9-1f3fb","🦹🏼":"1f9b9-1f3fc","🦹🏽":"1f9b9-1f3fd","🦹🏾":"1f9b9-1f3fe","🦹🏿":"1f9b9-1f3ff","🧙🏻":"1f9d9-1f3fb","🧙🏼":"1f9d9-1f3fc","🧙🏽":"1f9d9-1f3fd","🧙🏾":"1f9d9-1f3fe","🧙🏿":"1f9d9-1f3ff","🧚🏻":"1f9da-1f3fb","🧚🏼":"1f9da-1f3fc","🧚🏽":"1f9da-1f3fd","🧚🏾":"1f9da-1f3fe","🧚🏿":"1f9da-1f3ff","🧛🏻":"1f9db-1f3fb","🧛🏼":"1f9db-1f3fc","🧛🏽":"1f9db-1f3fd","🧛🏾":"1f9db-1f3fe","🧛🏿":"1f9db-1f3ff","🧜🏻":"1f9dc-1f3fb","🧜🏼":"1f9dc-1f3fc","🧜🏽":"1f9dc-1f3fd","🧜🏾":"1f9dc-1f3fe","🧜🏿":"1f9dc-1f3ff","🧝🏻":"1f9dd-1f3fb","🧝🏼":"1f9dd-1f3fc","🧝🏽":"1f9dd-1f3fd","🧝🏾":"1f9dd-1f3fe","🧝🏿":"1f9dd-1f3ff","💆🏻":"1f486-1f3fb","💆🏼":"1f486-1f3fc","💆🏽":"1f486-1f3fd","💆🏾":"1f486-1f3fe","💆🏿":"1f486-1f3ff","💇🏻":"1f487-1f3fb","💇🏼":"1f487-1f3fc","💇🏽":"1f487-1f3fd","💇🏾":"1f487-1f3fe","💇🏿":"1f487-1f3ff","🚶🏻":"1f6b6-1f3fb","🚶🏼":"1f6b6-1f3fc","🚶🏽":"1f6b6-1f3fd","🚶🏾":"1f6b6-1f3fe","🚶🏿":"1f6b6-1f3ff","🧍🏻":"1f9cd-1f3fb","🧍🏼":"1f9cd-1f3fc","🧍🏽":"1f9cd-1f3fd","🧍🏾":"1f9cd-1f3fe","🧍🏿":"1f9cd-1f3ff","🧎🏻":"1f9ce-1f3fb","🧎🏼":"1f9ce-1f3fc","🧎🏽":"1f9ce-1f3fd","🧎🏾":"1f9ce-1f3fe","🧎🏿":"1f9ce-1f3ff","🏃🏻":"1f3c3-1f3fb","🏃🏼":"1f3c3-1f3fc","🏃🏽":"1f3c3-1f3fd","🏃🏾":"1f3c3-1f3fe","🏃🏿":"1f3c3-1f3ff","💃🏻":"1f483-1f3fb","💃🏼":"1f483-1f3fc","💃🏽":"1f483-1f3fd","💃🏾":"1f483-1f3fe","💃🏿":"1f483-1f3ff","🕺🏻":"1f57a-1f3fb","🕺🏼":"1f57a-1f3fc","🕺🏽":"1f57a-1f3fd","🕺🏾":"1f57a-1f3fe","🕺🏿":"1f57a-1f3ff","🕴️":"1f574","🕴🏻":"1f574-1f3fb","🕴🏼":"1f574-1f3fc","🕴🏽":"1f574-1f3fd","🕴🏾":"1f574-1f3fe","🕴🏿":"1f574-1f3ff","🧖🏻":"1f9d6-1f3fb","🧖🏼":"1f9d6-1f3fc","🧖🏽":"1f9d6-1f3fd","🧖🏾":"1f9d6-1f3fe","🧖🏿":"1f9d6-1f3ff","🧗🏻":"1f9d7-1f3fb","🧗🏼":"1f9d7-1f3fc","🧗🏽":"1f9d7-1f3fd","🧗🏾":"1f9d7-1f3fe","🧗🏿":"1f9d7-1f3ff","🏇🏻":"1f3c7-1f3fb","🏇🏼":"1f3c7-1f3fc","🏇🏽":"1f3c7-1f3fd","🏇🏾":"1f3c7-1f3fe","🏇🏿":"1f3c7-1f3ff","⛷️":"26f7","🏂🏻":"1f3c2-1f3fb","🏂🏼":"1f3c2-1f3fc","🏂🏽":"1f3c2-1f3fd","🏂🏾":"1f3c2-1f3fe","🏂🏿":"1f3c2-1f3ff","🏌️":"1f3cc","🏌🏻":"1f3cc-1f3fb","🏌🏼":"1f3cc-1f3fc","🏌🏽":"1f3cc-1f3fd","🏌🏾":"1f3cc-1f3fe","🏌🏿":"1f3cc-1f3ff","🏄🏻":"1f3c4-1f3fb","🏄🏼":"1f3c4-1f3fc","🏄🏽":"1f3c4-1f3fd","🏄🏾":"1f3c4-1f3fe","🏄🏿":"1f3c4-1f3ff","🚣🏻":"1f6a3-1f3fb","🚣🏼":"1f6a3-1f3fc","🚣🏽":"1f6a3-1f3fd","🚣🏾":"1f6a3-1f3fe","🚣🏿":"1f6a3-1f3ff","🏊🏻":"1f3ca-1f3fb","🏊🏼":"1f3ca-1f3fc","🏊🏽":"1f3ca-1f3fd","🏊🏾":"1f3ca-1f3fe","🏊🏿":"1f3ca-1f3ff","⛹️":"26f9","⛹🏻":"26f9-1f3fb","⛹🏼":"26f9-1f3fc","⛹🏽":"26f9-1f3fd","⛹🏾":"26f9-1f3fe","⛹🏿":"26f9-1f3ff","🏋️":"1f3cb","🏋🏻":"1f3cb-1f3fb","🏋🏼":"1f3cb-1f3fc","🏋🏽":"1f3cb-1f3fd","🏋🏾":"1f3cb-1f3fe","🏋🏿":"1f3cb-1f3ff","🚴🏻":"1f6b4-1f3fb","🚴🏼":"1f6b4-1f3fc","🚴🏽":"1f6b4-1f3fd","🚴🏾":"1f6b4-1f3fe","🚴🏿":"1f6b4-1f3ff","🚵🏻":"1f6b5-1f3fb","🚵🏼":"1f6b5-1f3fc","🚵🏽":"1f6b5-1f3fd","🚵🏾":"1f6b5-1f3fe","🚵🏿":"1f6b5-1f3ff","🤸🏻":"1f938-1f3fb","🤸🏼":"1f938-1f3fc","🤸🏽":"1f938-1f3fd","🤸🏾":"1f938-1f3fe","🤸🏿":"1f938-1f3ff","🤽🏻":"1f93d-1f3fb","🤽🏼":"1f93d-1f3fc","🤽🏽":"1f93d-1f3fd","🤽🏾":"1f93d-1f3fe","🤽🏿":"1f93d-1f3ff","🤾🏻":"1f93e-1f3fb","🤾🏼":"1f93e-1f3fc","🤾🏽":"1f93e-1f3fd","🤾🏾":"1f93e-1f3fe","🤾🏿":"1f93e-1f3ff","🤹🏻":"1f939-1f3fb","🤹🏼":"1f939-1f3fc","🤹🏽":"1f939-1f3fd","🤹🏾":"1f939-1f3fe","🤹🏿":"1f939-1f3ff","🧘🏻":"1f9d8-1f3fb","🧘🏼":"1f9d8-1f3fc","🧘🏽":"1f9d8-1f3fd","🧘🏾":"1f9d8-1f3fe","🧘🏿":"1f9d8-1f3ff","🛀🏻":"1f6c0-1f3fb","🛀🏼":"1f6c0-1f3fc","🛀🏽":"1f6c0-1f3fd","🛀🏾":"1f6c0-1f3fe","🛀🏿":"1f6c0-1f3ff","🛌🏻":"1f6cc-1f3fb","🛌🏼":"1f6cc-1f3fc","🛌🏽":"1f6cc-1f3fd","🛌🏾":"1f6cc-1f3fe","🛌🏿":"1f6cc-1f3ff","👭🏻":"1f46d-1f3fb","👭🏼":"1f46d-1f3fc","👭🏽":"1f46d-1f3fd","👭🏾":"1f46d-1f3fe","👭🏿":"1f46d-1f3ff","👫🏻":"1f46b-1f3fb","👫🏼":"1f46b-1f3fc","👫🏽":"1f46b-1f3fd","👫🏾":"1f46b-1f3fe","👫🏿":"1f46b-1f3ff","👬🏻":"1f46c-1f3fb","👬🏼":"1f46c-1f3fc","👬🏽":"1f46c-1f3fd","👬🏾":"1f46c-1f3fe","👬🏿":"1f46c-1f3ff","💏🏻":"1f48f-1f3fb","💏🏼":"1f48f-1f3fc","💏🏽":"1f48f-1f3fd","💏🏾":"1f48f-1f3fe","💏🏿":"1f48f-1f3ff","💑🏻":"1f491-1f3fb","💑🏼":"1f491-1f3fc","💑🏽":"1f491-1f3fd","💑🏾":"1f491-1f3fe","💑🏿":"1f491-1f3ff","🗣️":"1f5e3","🐿️":"1f43f","🕊️":"1f54a","🕷️":"1f577","🕸️":"1f578","🏵️":"1f3f5","☘️":"2618","🌶️":"1f336","🍽️":"1f37d","🗺️":"1f5fa","🏔️":"1f3d4","⛰️":"26f0","🏕️":"1f3d5","🏖️":"1f3d6","🏜️":"1f3dc","🏝️":"1f3dd","🏞️":"1f3de","🏟️":"1f3df","🏛️":"1f3db","🏗️":"1f3d7","🏘️":"1f3d8","🏚️":"1f3da","⛩️":"26e9","🏙️":"1f3d9","♨️":"2668","🏎️":"1f3ce","🏍️":"1f3cd","🛣️":"1f6e3","🛤️":"1f6e4","🛢️":"1f6e2","🛳️":"1f6f3","⛴️":"26f4","🛥️":"1f6e5","✈️":"2708","🛩️":"1f6e9","🛰️":"1f6f0","🛎️":"1f6ce","⏱️":"23f1","⏲️":"23f2","🕰️":"1f570","🌡️":"1f321","☀️":"2600","☁️":"2601","⛈️":"26c8","🌤️":"1f324","🌥️":"1f325","🌦️":"1f326","🌧️":"1f327","🌨️":"1f328","🌩️":"1f329","🌪️":"1f32a","🌫️":"1f32b","🌬️":"1f32c","☂️":"2602","⛱️":"26f1","❄️":"2744","☃️":"2603","☄️":"2604","🎗️":"1f397","🎟️":"1f39f","🎖️":"1f396","⛸️":"26f8","🕹️":"1f579","♠️":"2660","♥️":"2665","♦️":"2666","♣️":"2663","♟️":"265f","🖼️":"1f5bc","🕶️":"1f576","🛍️":"1f6cd","⛑️":"26d1","🎙️":"1f399","🎚️":"1f39a","🎛️":"1f39b","☎️":"260e","🖥️":"1f5a5","🖨️":"1f5a8","⌨️":"2328","🖱️":"1f5b1","🖲️":"1f5b2","🎞️":"1f39e","📽️":"1f4fd","🕯️":"1f56f","🗞️":"1f5de","🏷️":"1f3f7","✉️":"2709","🗳️":"1f5f3","✏️":"270f","✒️":"2712","🖋️":"1f58b","🖊️":"1f58a","🖌️":"1f58c","🖍️":"1f58d","🗂️":"1f5c2","🗒️":"1f5d2","🗓️":"1f5d3","🖇️":"1f587","✂️":"2702","🗃️":"1f5c3","🗄️":"1f5c4","🗑️":"1f5d1","🗝️":"1f5dd","⛏️":"26cf","⚒️":"2692","🛠️":"1f6e0","🗡️":"1f5e1","⚔️":"2694","🛡️":"1f6e1","⚙️":"2699","🗜️":"1f5dc","⚖️":"2696","⛓️":"26d3","⚗️":"2697","🛏️":"1f6cf","🛋️":"1f6cb","⚰️":"26b0","⚱️":"26b1","⚠️":"26a0","☢️":"2622","☣️":"2623","⬆️":"2b06","↗️":"2197","➡️":"27a1","↘️":"2198","⬇️":"2b07","↙️":"2199","⬅️":"2b05","↖️":"2196","↕️":"2195","↔️":"2194","↩️":"21a9","↪️":"21aa","⤴️":"2934","⤵️":"2935","⚛️":"269b","🕉️":"1f549","✡️":"2721","☸️":"2638","☯️":"262f","✝️":"271d","☦️":"2626","☪️":"262a","☮️":"262e","▶️":"25b6","⏭️":"23ed","⏯️":"23ef","◀️":"25c0","⏮️":"23ee","⏸️":"23f8","⏹️":"23f9","⏺️":"23fa","⏏️":"23cf","♀️":"2640","♂️":"2642","⚧️":"26a7","✖️":"2716","♾️":"267e","‼️":"203c","⁉️":"2049","〰️":"3030","⚕️":"2695","♻️":"267b","⚜️":"269c","☑️":"2611","✔️":"2714","〽️":"303d","✳️":"2733","✴️":"2734","❇️":"2747","©️":"a9","®️":"ae","™️":"2122","#⃣":"23-20e3","*⃣":"2a-20e3","0⃣":"30-20e3","1⃣":"31-20e3","2⃣":"32-20e3","3⃣":"33-20e3","4⃣":"34-20e3","5⃣":"35-20e3","6⃣":"36-20e3","7⃣":"37-20e3","8⃣":"38-20e3","9⃣":"39-20e3","🅰️":"1f170","🅱️":"1f171","ℹ️":"2139","Ⓜ️":"24c2","🅾️":"1f17e","🅿️":"1f17f","🈂️":"1f202","🈷️":"1f237","㊗️":"3297","㊙️":"3299","◼️":"25fc","◻️":"25fb","▪️":"25aa","▫️":"25ab","🏳️":"1f3f3","🇦🇨":"1f1e6-1f1e8","🇦🇩":"1f1e6-1f1e9","🇦🇪":"1f1e6-1f1ea","🇦🇫":"1f1e6-1f1eb","🇦🇬":"1f1e6-1f1ec","🇦🇮":"1f1e6-1f1ee","🇦🇱":"1f1e6-1f1f1","🇦🇲":"1f1e6-1f1f2","🇦🇴":"1f1e6-1f1f4","🇦🇶":"1f1e6-1f1f6","🇦🇷":"1f1e6-1f1f7","🇦🇸":"1f1e6-1f1f8","🇦🇹":"1f1e6-1f1f9","🇦🇺":"1f1e6-1f1fa","🇦🇼":"1f1e6-1f1fc","🇦🇽":"1f1e6-1f1fd","🇦🇿":"1f1e6-1f1ff","🇧🇦":"1f1e7-1f1e6","🇧🇧":"1f1e7-1f1e7","🇧🇩":"1f1e7-1f1e9","🇧🇪":"1f1e7-1f1ea","🇧🇫":"1f1e7-1f1eb","🇧🇬":"1f1e7-1f1ec","🇧🇭":"1f1e7-1f1ed","🇧🇮":"1f1e7-1f1ee","🇧🇯":"1f1e7-1f1ef","🇧🇱":"1f1e7-1f1f1","🇧🇲":"1f1e7-1f1f2","🇧🇳":"1f1e7-1f1f3","🇧🇴":"1f1e7-1f1f4","🇧🇶":"1f1e7-1f1f6","🇧🇷":"1f1e7-1f1f7","🇧🇸":"1f1e7-1f1f8","🇧🇹":"1f1e7-1f1f9","🇧🇻":"1f1e7-1f1fb","🇧🇼":"1f1e7-1f1fc","🇧🇾":"1f1e7-1f1fe","🇧🇿":"1f1e7-1f1ff","🇨🇦":"1f1e8-1f1e6","🇨🇨":"1f1e8-1f1e8","🇨🇩":"1f1e8-1f1e9","🇨🇫":"1f1e8-1f1eb","🇨🇬":"1f1e8-1f1ec","🇨🇭":"1f1e8-1f1ed","🇨🇮":"1f1e8-1f1ee","🇨🇰":"1f1e8-1f1f0","🇨🇱":"1f1e8-1f1f1","🇨🇲":"1f1e8-1f1f2","🇨🇳":"1f1e8-1f1f3","🇨🇴":"1f1e8-1f1f4","🇨🇵":"1f1e8-1f1f5","🇨🇷":"1f1e8-1f1f7","🇨🇺":"1f1e8-1f1fa","🇨🇻":"1f1e8-1f1fb","🇨🇼":"1f1e8-1f1fc","🇨🇽":"1f1e8-1f1fd","🇨🇾":"1f1e8-1f1fe","🇨🇿":"1f1e8-1f1ff","🇩🇪":"1f1e9-1f1ea","🇩🇬":"1f1e9-1f1ec","🇩🇯":"1f1e9-1f1ef","🇩🇰":"1f1e9-1f1f0","🇩🇲":"1f1e9-1f1f2","🇩🇴":"1f1e9-1f1f4","🇩🇿":"1f1e9-1f1ff","🇪🇦":"1f1ea-1f1e6","🇪🇨":"1f1ea-1f1e8","🇪🇪":"1f1ea-1f1ea","🇪🇬":"1f1ea-1f1ec","🇪🇭":"1f1ea-1f1ed","🇪🇷":"1f1ea-1f1f7","🇪🇸":"1f1ea-1f1f8","🇪🇹":"1f1ea-1f1f9","🇪🇺":"1f1ea-1f1fa","🇫🇮":"1f1eb-1f1ee","🇫🇯":"1f1eb-1f1ef","🇫🇰":"1f1eb-1f1f0","🇫🇲":"1f1eb-1f1f2","🇫🇴":"1f1eb-1f1f4","🇫🇷":"1f1eb-1f1f7","🇬🇦":"1f1ec-1f1e6","🇬🇧":"1f1ec-1f1e7","🇬🇩":"1f1ec-1f1e9","🇬🇪":"1f1ec-1f1ea","🇬🇫":"1f1ec-1f1eb","🇬🇬":"1f1ec-1f1ec","🇬🇭":"1f1ec-1f1ed","🇬🇮":"1f1ec-1f1ee","🇬🇱":"1f1ec-1f1f1","🇬🇲":"1f1ec-1f1f2","🇬🇳":"1f1ec-1f1f3","🇬🇵":"1f1ec-1f1f5","🇬🇶":"1f1ec-1f1f6","🇬🇷":"1f1ec-1f1f7","🇬🇸":"1f1ec-1f1f8","🇬🇹":"1f1ec-1f1f9","🇬🇺":"1f1ec-1f1fa","🇬🇼":"1f1ec-1f1fc","🇬🇾":"1f1ec-1f1fe","🇭🇰":"1f1ed-1f1f0","🇭🇲":"1f1ed-1f1f2","🇭🇳":"1f1ed-1f1f3","🇭🇷":"1f1ed-1f1f7","🇭🇹":"1f1ed-1f1f9","🇭🇺":"1f1ed-1f1fa","🇮🇨":"1f1ee-1f1e8","🇮🇩":"1f1ee-1f1e9","🇮🇪":"1f1ee-1f1ea","🇮🇱":"1f1ee-1f1f1","🇮🇲":"1f1ee-1f1f2","🇮🇳":"1f1ee-1f1f3","🇮🇴":"1f1ee-1f1f4","🇮🇶":"1f1ee-1f1f6","🇮🇷":"1f1ee-1f1f7","🇮🇸":"1f1ee-1f1f8","🇮🇹":"1f1ee-1f1f9","🇯🇪":"1f1ef-1f1ea","🇯🇲":"1f1ef-1f1f2","🇯🇴":"1f1ef-1f1f4","🇯🇵":"1f1ef-1f1f5","🇰🇪":"1f1f0-1f1ea","🇰🇬":"1f1f0-1f1ec","🇰🇭":"1f1f0-1f1ed","🇰🇮":"1f1f0-1f1ee","🇰🇲":"1f1f0-1f1f2","🇰🇳":"1f1f0-1f1f3","🇰🇵":"1f1f0-1f1f5","🇰🇷":"1f1f0-1f1f7","🇰🇼":"1f1f0-1f1fc","🇰🇾":"1f1f0-1f1fe","🇰🇿":"1f1f0-1f1ff","🇱🇦":"1f1f1-1f1e6","🇱🇧":"1f1f1-1f1e7","🇱🇨":"1f1f1-1f1e8","🇱🇮":"1f1f1-1f1ee","🇱🇰":"1f1f1-1f1f0","🇱🇷":"1f1f1-1f1f7","🇱🇸":"1f1f1-1f1f8","🇱🇹":"1f1f1-1f1f9","🇱🇺":"1f1f1-1f1fa","🇱🇻":"1f1f1-1f1fb","🇱🇾":"1f1f1-1f1fe","🇲🇦":"1f1f2-1f1e6","🇲🇨":"1f1f2-1f1e8","🇲🇩":"1f1f2-1f1e9","🇲🇪":"1f1f2-1f1ea","🇲🇫":"1f1f2-1f1eb","🇲🇬":"1f1f2-1f1ec","🇲🇭":"1f1f2-1f1ed","🇲🇰":"1f1f2-1f1f0","🇲🇱":"1f1f2-1f1f1","🇲🇲":"1f1f2-1f1f2","🇲🇳":"1f1f2-1f1f3","🇲🇴":"1f1f2-1f1f4","🇲🇵":"1f1f2-1f1f5","🇲🇶":"1f1f2-1f1f6","🇲🇷":"1f1f2-1f1f7","🇲🇸":"1f1f2-1f1f8","🇲🇹":"1f1f2-1f1f9","🇲🇺":"1f1f2-1f1fa","🇲🇻":"1f1f2-1f1fb","🇲🇼":"1f1f2-1f1fc","🇲🇽":"1f1f2-1f1fd","🇲🇾":"1f1f2-1f1fe","🇲🇿":"1f1f2-1f1ff","🇳🇦":"1f1f3-1f1e6","🇳🇨":"1f1f3-1f1e8","🇳🇪":"1f1f3-1f1ea","🇳🇫":"1f1f3-1f1eb","🇳🇬":"1f1f3-1f1ec","🇳🇮":"1f1f3-1f1ee","🇳🇱":"1f1f3-1f1f1","🇳🇴":"1f1f3-1f1f4","🇳🇵":"1f1f3-1f1f5","🇳🇷":"1f1f3-1f1f7","🇳🇺":"1f1f3-1f1fa","🇳🇿":"1f1f3-1f1ff","🇴🇲":"1f1f4-1f1f2","🇵🇦":"1f1f5-1f1e6","🇵🇪":"1f1f5-1f1ea","🇵🇫":"1f1f5-1f1eb","🇵🇬":"1f1f5-1f1ec","🇵🇭":"1f1f5-1f1ed","🇵🇰":"1f1f5-1f1f0","🇵🇱":"1f1f5-1f1f1","🇵🇲":"1f1f5-1f1f2","🇵🇳":"1f1f5-1f1f3","🇵🇷":"1f1f5-1f1f7","🇵🇸":"1f1f5-1f1f8","🇵🇹":"1f1f5-1f1f9","🇵🇼":"1f1f5-1f1fc","🇵🇾":"1f1f5-1f1fe","🇶🇦":"1f1f6-1f1e6","🇷🇪":"1f1f7-1f1ea","🇷🇴":"1f1f7-1f1f4","🇷🇸":"1f1f7-1f1f8","🇷🇺":"1f1f7-1f1fa","🇷🇼":"1f1f7-1f1fc","🇸🇦":"1f1f8-1f1e6","🇸🇧":"1f1f8-1f1e7","🇸🇨":"1f1f8-1f1e8","🇸🇩":"1f1f8-1f1e9","🇸🇪":"1f1f8-1f1ea","🇸🇬":"1f1f8-1f1ec","🇸🇭":"1f1f8-1f1ed","🇸🇮":"1f1f8-1f1ee","🇸🇯":"1f1f8-1f1ef","🇸🇰":"1f1f8-1f1f0","🇸🇱":"1f1f8-1f1f1","🇸🇲":"1f1f8-1f1f2","🇸🇳":"1f1f8-1f1f3","🇸🇴":"1f1f8-1f1f4","🇸🇷":"1f1f8-1f1f7","🇸🇸":"1f1f8-1f1f8","🇸🇹":"1f1f8-1f1f9","🇸🇻":"1f1f8-1f1fb","🇸🇽":"1f1f8-1f1fd","🇸🇾":"1f1f8-1f1fe","🇸🇿":"1f1f8-1f1ff","🇹🇦":"1f1f9-1f1e6","🇹🇨":"1f1f9-1f1e8","🇹🇩":"1f1f9-1f1e9","🇹🇫":"1f1f9-1f1eb","🇹🇬":"1f1f9-1f1ec","🇹🇭":"1f1f9-1f1ed","🇹🇯":"1f1f9-1f1ef","🇹🇰":"1f1f9-1f1f0","🇹🇱":"1f1f9-1f1f1","🇹🇲":"1f1f9-1f1f2","🇹🇳":"1f1f9-1f1f3","🇹🇴":"1f1f9-1f1f4","🇹🇷":"1f1f9-1f1f7","🇹🇹":"1f1f9-1f1f9","🇹🇻":"1f1f9-1f1fb","🇹🇼":"1f1f9-1f1fc","🇹🇿":"1f1f9-1f1ff","🇺🇦":"1f1fa-1f1e6","🇺🇬":"1f1fa-1f1ec","🇺🇲":"1f1fa-1f1f2","🇺🇳":"1f1fa-1f1f3","🇺🇸":"1f1fa-1f1f8","🇺🇾":"1f1fa-1f1fe","🇺🇿":"1f1fa-1f1ff","🇻🇦":"1f1fb-1f1e6","🇻🇨":"1f1fb-1f1e8","🇻🇪":"1f1fb-1f1ea","🇻🇬":"1f1fb-1f1ec","🇻🇮":"1f1fb-1f1ee","🇻🇳":"1f1fb-1f1f3","🇻🇺":"1f1fb-1f1fa","🇼🇫":"1f1fc-1f1eb","🇼🇸":"1f1fc-1f1f8","🇽🇰":"1f1fd-1f1f0","🇾🇪":"1f1fe-1f1ea","🇾🇹":"1f1fe-1f1f9","🇿🇦":"1f1ff-1f1e6","🇿🇲":"1f1ff-1f1f2","🇿🇼":"1f1ff-1f1fc","😶‍🌫":"1f636-200d-1f32b-fe0f","😮‍💨":"1f62e-200d-1f4a8","😵‍💫":"1f635-200d-1f4ab","❤‍🔥":"2764-fe0f-200d-1f525","❤‍🩹":"2764-fe0f-200d-1fa79","👁‍🗨":"1f441-200d-1f5e8","🧔‍♂":"1f9d4-200d-2642-fe0f","🧔‍♀":"1f9d4-200d-2640-fe0f","👨‍🦰":"1f468-200d-1f9b0","👨‍🦱":"1f468-200d-1f9b1","👨‍🦳":"1f468-200d-1f9b3","👨‍🦲":"1f468-200d-1f9b2","👩‍🦰":"1f469-200d-1f9b0","🧑‍🦰":"1f9d1-200d-1f9b0","👩‍🦱":"1f469-200d-1f9b1","🧑‍🦱":"1f9d1-200d-1f9b1","👩‍🦳":"1f469-200d-1f9b3","🧑‍🦳":"1f9d1-200d-1f9b3","👩‍🦲":"1f469-200d-1f9b2","🧑‍🦲":"1f9d1-200d-1f9b2","👱‍♀":"1f471-200d-2640-fe0f","👱‍♂":"1f471-200d-2642-fe0f","🙍‍♂":"1f64d-200d-2642-fe0f","🙍‍♀":"1f64d-200d-2640-fe0f","🙎‍♂":"1f64e-200d-2642-fe0f","🙎‍♀":"1f64e-200d-2640-fe0f","🙅‍♂":"1f645-200d-2642-fe0f","🙅‍♀":"1f645-200d-2640-fe0f","🙆‍♂":"1f646-200d-2642-fe0f","🙆‍♀":"1f646-200d-2640-fe0f","💁‍♂":"1f481-200d-2642-fe0f","💁‍♀":"1f481-200d-2640-fe0f","🙋‍♂":"1f64b-200d-2642-fe0f","🙋‍♀":"1f64b-200d-2640-fe0f","🧏‍♂":"1f9cf-200d-2642-fe0f","🧏‍♀":"1f9cf-200d-2640-fe0f","🙇‍♂":"1f647-200d-2642-fe0f","🙇‍♀":"1f647-200d-2640-fe0f","🤦‍♂":"1f926-200d-2642-fe0f","🤦‍♀":"1f926-200d-2640-fe0f","🤷‍♂":"1f937-200d-2642-fe0f","🤷‍♀":"1f937-200d-2640-fe0f","🧑‍⚕":"1f9d1-200d-2695-fe0f","👨‍⚕":"1f468-200d-2695-fe0f","👩‍⚕":"1f469-200d-2695-fe0f","🧑‍🎓":"1f9d1-200d-1f393","👨‍🎓":"1f468-200d-1f393","👩‍🎓":"1f469-200d-1f393","🧑‍🏫":"1f9d1-200d-1f3eb","👨‍🏫":"1f468-200d-1f3eb","👩‍🏫":"1f469-200d-1f3eb","🧑‍⚖":"1f9d1-200d-2696-fe0f","👨‍⚖":"1f468-200d-2696-fe0f","👩‍⚖":"1f469-200d-2696-fe0f","🧑‍🌾":"1f9d1-200d-1f33e","👨‍🌾":"1f468-200d-1f33e","👩‍🌾":"1f469-200d-1f33e","🧑‍🍳":"1f9d1-200d-1f373","👨‍🍳":"1f468-200d-1f373","👩‍🍳":"1f469-200d-1f373","🧑‍🔧":"1f9d1-200d-1f527","👨‍🔧":"1f468-200d-1f527","👩‍🔧":"1f469-200d-1f527","🧑‍🏭":"1f9d1-200d-1f3ed","👨‍🏭":"1f468-200d-1f3ed","👩‍🏭":"1f469-200d-1f3ed","🧑‍💼":"1f9d1-200d-1f4bc","👨‍💼":"1f468-200d-1f4bc","👩‍💼":"1f469-200d-1f4bc","🧑‍🔬":"1f9d1-200d-1f52c","👨‍🔬":"1f468-200d-1f52c","👩‍🔬":"1f469-200d-1f52c","🧑‍💻":"1f9d1-200d-1f4bb","👨‍💻":"1f468-200d-1f4bb","👩‍💻":"1f469-200d-1f4bb","🧑‍🎤":"1f9d1-200d-1f3a4","👨‍🎤":"1f468-200d-1f3a4","👩‍🎤":"1f469-200d-1f3a4","🧑‍🎨":"1f9d1-200d-1f3a8","👨‍🎨":"1f468-200d-1f3a8","👩‍🎨":"1f469-200d-1f3a8","🧑‍✈":"1f9d1-200d-2708-fe0f","👨‍✈":"1f468-200d-2708-fe0f","👩‍✈":"1f469-200d-2708-fe0f","🧑‍🚀":"1f9d1-200d-1f680","👨‍🚀":"1f468-200d-1f680","👩‍🚀":"1f469-200d-1f680","🧑‍🚒":"1f9d1-200d-1f692","👨‍🚒":"1f468-200d-1f692","👩‍🚒":"1f469-200d-1f692","👮‍♂":"1f46e-200d-2642-fe0f","👮‍♀":"1f46e-200d-2640-fe0f","🕵‍♂":"1f575-fe0f-200d-2642-fe0f","🕵‍♀":"1f575-fe0f-200d-2640-fe0f","💂‍♂":"1f482-200d-2642-fe0f","💂‍♀":"1f482-200d-2640-fe0f","👷‍♂":"1f477-200d-2642-fe0f","👷‍♀":"1f477-200d-2640-fe0f","👳‍♂":"1f473-200d-2642-fe0f","👳‍♀":"1f473-200d-2640-fe0f","🤵‍♂":"1f935-200d-2642-fe0f","🤵‍♀":"1f935-200d-2640-fe0f","👰‍♂":"1f470-200d-2642-fe0f","👰‍♀":"1f470-200d-2640-fe0f","👩‍🍼":"1f469-200d-1f37c","👨‍🍼":"1f468-200d-1f37c","🧑‍🍼":"1f9d1-200d-1f37c","🧑‍🎄":"1f9d1-200d-1f384","🦸‍♂":"1f9b8-200d-2642-fe0f","🦸‍♀":"1f9b8-200d-2640-fe0f","🦹‍♂":"1f9b9-200d-2642-fe0f","🦹‍♀":"1f9b9-200d-2640-fe0f","🧙‍♂":"1f9d9-200d-2642-fe0f","🧙‍♀":"1f9d9-200d-2640-fe0f","🧚‍♂":"1f9da-200d-2642-fe0f","🧚‍♀":"1f9da-200d-2640-fe0f","🧛‍♂":"1f9db-200d-2642-fe0f","🧛‍♀":"1f9db-200d-2640-fe0f","🧜‍♂":"1f9dc-200d-2642-fe0f","🧜‍♀":"1f9dc-200d-2640-fe0f","🧝‍♂":"1f9dd-200d-2642-fe0f","🧝‍♀":"1f9dd-200d-2640-fe0f","🧞‍♂":"1f9de-200d-2642-fe0f","🧞‍♀":"1f9de-200d-2640-fe0f","🧟‍♂":"1f9df-200d-2642-fe0f","🧟‍♀":"1f9df-200d-2640-fe0f","💆‍♂":"1f486-200d-2642-fe0f","💆‍♀":"1f486-200d-2640-fe0f","💇‍♂":"1f487-200d-2642-fe0f","💇‍♀":"1f487-200d-2640-fe0f","🚶‍♂":"1f6b6-200d-2642-fe0f","🚶‍♀":"1f6b6-200d-2640-fe0f","🧍‍♂":"1f9cd-200d-2642-fe0f","🧍‍♀":"1f9cd-200d-2640-fe0f","🧎‍♂":"1f9ce-200d-2642-fe0f","🧎‍♀":"1f9ce-200d-2640-fe0f","🧑‍🦯":"1f9d1-200d-1f9af","👨‍🦯":"1f468-200d-1f9af","👩‍🦯":"1f469-200d-1f9af","🧑‍🦼":"1f9d1-200d-1f9bc","👨‍🦼":"1f468-200d-1f9bc","👩‍🦼":"1f469-200d-1f9bc","🧑‍🦽":"1f9d1-200d-1f9bd","👨‍🦽":"1f468-200d-1f9bd","👩‍🦽":"1f469-200d-1f9bd","🏃‍♂":"1f3c3-200d-2642-fe0f","🏃‍♀":"1f3c3-200d-2640-fe0f","👯‍♂":"1f46f-200d-2642-fe0f","👯‍♀":"1f46f-200d-2640-fe0f","🧖‍♂":"1f9d6-200d-2642-fe0f","🧖‍♀":"1f9d6-200d-2640-fe0f","🧗‍♂":"1f9d7-200d-2642-fe0f","🧗‍♀":"1f9d7-200d-2640-fe0f","🏌‍♂":"1f3cc-fe0f-200d-2642-fe0f","🏌‍♀":"1f3cc-fe0f-200d-2640-fe0f","🏄‍♂":"1f3c4-200d-2642-fe0f","🏄‍♀":"1f3c4-200d-2640-fe0f","🚣‍♂":"1f6a3-200d-2642-fe0f","🚣‍♀":"1f6a3-200d-2640-fe0f","🏊‍♂":"1f3ca-200d-2642-fe0f","🏊‍♀":"1f3ca-200d-2640-fe0f","⛹‍♂":"26f9-fe0f-200d-2642-fe0f","⛹‍♀":"26f9-fe0f-200d-2640-fe0f","🏋‍♂":"1f3cb-fe0f-200d-2642-fe0f","🏋‍♀":"1f3cb-fe0f-200d-2640-fe0f","🚴‍♂":"1f6b4-200d-2642-fe0f","🚴‍♀":"1f6b4-200d-2640-fe0f","🚵‍♂":"1f6b5-200d-2642-fe0f","🚵‍♀":"1f6b5-200d-2640-fe0f","🤸‍♂":"1f938-200d-2642-fe0f","🤸‍♀":"1f938-200d-2640-fe0f","🤼‍♂":"1f93c-200d-2642-fe0f","🤼‍♀":"1f93c-200d-2640-fe0f","🤽‍♂":"1f93d-200d-2642-fe0f","🤽‍♀":"1f93d-200d-2640-fe0f","🤾‍♂":"1f93e-200d-2642-fe0f","🤾‍♀":"1f93e-200d-2640-fe0f","🤹‍♂":"1f939-200d-2642-fe0f","🤹‍♀":"1f939-200d-2640-fe0f","🧘‍♂":"1f9d8-200d-2642-fe0f","🧘‍♀":"1f9d8-200d-2640-fe0f","👨‍👦":"1f468-200d-1f466","👨‍👧":"1f468-200d-1f467","👩‍👦":"1f469-200d-1f466","👩‍👧":"1f469-200d-1f467","🐕‍🦺":"1f415-200d-1f9ba","🐈‍⬛":"1f408-200d-2b1b","🐻‍❄":"1f43b-200d-2744-fe0f","#️⃣":"23-20e3","*️⃣":"2a-20e3","0️⃣":"30-20e3","1️⃣":"31-20e3","2️⃣":"32-20e3","3️⃣":"33-20e3","4️⃣":"34-20e3","5️⃣":"35-20e3","6️⃣":"36-20e3","7️⃣":"37-20e3","8️⃣":"38-20e3","9️⃣":"39-20e3","🏳‍🌈":"1f3f3-fe0f-200d-1f308","🏳‍⚧":"1f3f3-fe0f-200d-26a7-fe0f","🏴‍☠":"1f3f4-200d-2620-fe0f","😶‍🌫️":"1f636-200d-1f32b-fe0f","❤️‍🔥":"2764-fe0f-200d-1f525","❤️‍🩹":"2764-fe0f-200d-1fa79","👁‍🗨️":"1f441-200d-1f5e8","👁️‍🗨":"1f441-200d-1f5e8","🧔‍♂️":"1f9d4-200d-2642-fe0f","🧔🏻‍♂":"1f9d4-1f3fb-200d-2642-fe0f","🧔🏼‍♂":"1f9d4-1f3fc-200d-2642-fe0f","🧔🏽‍♂":"1f9d4-1f3fd-200d-2642-fe0f","🧔🏾‍♂":"1f9d4-1f3fe-200d-2642-fe0f","🧔🏿‍♂":"1f9d4-1f3ff-200d-2642-fe0f","🧔‍♀️":"1f9d4-200d-2640-fe0f","🧔🏻‍♀":"1f9d4-1f3fb-200d-2640-fe0f","🧔🏼‍♀":"1f9d4-1f3fc-200d-2640-fe0f","🧔🏽‍♀":"1f9d4-1f3fd-200d-2640-fe0f","🧔🏾‍♀":"1f9d4-1f3fe-200d-2640-fe0f","🧔🏿‍♀":"1f9d4-1f3ff-200d-2640-fe0f","👨🏻‍🦰":"1f468-1f3fb-200d-1f9b0","👨🏼‍🦰":"1f468-1f3fc-200d-1f9b0","👨🏽‍🦰":"1f468-1f3fd-200d-1f9b0","👨🏾‍🦰":"1f468-1f3fe-200d-1f9b0","👨🏿‍🦰":"1f468-1f3ff-200d-1f9b0","👨🏻‍🦱":"1f468-1f3fb-200d-1f9b1","👨🏼‍🦱":"1f468-1f3fc-200d-1f9b1","👨🏽‍🦱":"1f468-1f3fd-200d-1f9b1","👨🏾‍🦱":"1f468-1f3fe-200d-1f9b1","👨🏿‍🦱":"1f468-1f3ff-200d-1f9b1","👨🏻‍🦳":"1f468-1f3fb-200d-1f9b3","👨🏼‍🦳":"1f468-1f3fc-200d-1f9b3","👨🏽‍🦳":"1f468-1f3fd-200d-1f9b3","👨🏾‍🦳":"1f468-1f3fe-200d-1f9b3","👨🏿‍🦳":"1f468-1f3ff-200d-1f9b3","👨🏻‍🦲":"1f468-1f3fb-200d-1f9b2","👨🏼‍🦲":"1f468-1f3fc-200d-1f9b2","👨🏽‍🦲":"1f468-1f3fd-200d-1f9b2","👨🏾‍🦲":"1f468-1f3fe-200d-1f9b2","👨🏿‍🦲":"1f468-1f3ff-200d-1f9b2","👩🏻‍🦰":"1f469-1f3fb-200d-1f9b0","👩🏼‍🦰":"1f469-1f3fc-200d-1f9b0","👩🏽‍🦰":"1f469-1f3fd-200d-1f9b0","👩🏾‍🦰":"1f469-1f3fe-200d-1f9b0","👩🏿‍🦰":"1f469-1f3ff-200d-1f9b0","🧑🏻‍🦰":"1f9d1-1f3fb-200d-1f9b0","🧑🏼‍🦰":"1f9d1-1f3fc-200d-1f9b0","🧑🏽‍🦰":"1f9d1-1f3fd-200d-1f9b0","🧑🏾‍🦰":"1f9d1-1f3fe-200d-1f9b0","🧑🏿‍🦰":"1f9d1-1f3ff-200d-1f9b0","👩🏻‍🦱":"1f469-1f3fb-200d-1f9b1","👩🏼‍🦱":"1f469-1f3fc-200d-1f9b1","👩🏽‍🦱":"1f469-1f3fd-200d-1f9b1","👩🏾‍🦱":"1f469-1f3fe-200d-1f9b1","👩🏿‍🦱":"1f469-1f3ff-200d-1f9b1","🧑🏻‍🦱":"1f9d1-1f3fb-200d-1f9b1","🧑🏼‍🦱":"1f9d1-1f3fc-200d-1f9b1","🧑🏽‍🦱":"1f9d1-1f3fd-200d-1f9b1","🧑🏾‍🦱":"1f9d1-1f3fe-200d-1f9b1","🧑🏿‍🦱":"1f9d1-1f3ff-200d-1f9b1","👩🏻‍🦳":"1f469-1f3fb-200d-1f9b3","👩🏼‍🦳":"1f469-1f3fc-200d-1f9b3","👩🏽‍🦳":"1f469-1f3fd-200d-1f9b3","👩🏾‍🦳":"1f469-1f3fe-200d-1f9b3","👩🏿‍🦳":"1f469-1f3ff-200d-1f9b3","🧑🏻‍🦳":"1f9d1-1f3fb-200d-1f9b3","🧑🏼‍🦳":"1f9d1-1f3fc-200d-1f9b3","🧑🏽‍🦳":"1f9d1-1f3fd-200d-1f9b3","🧑🏾‍🦳":"1f9d1-1f3fe-200d-1f9b3","🧑🏿‍🦳":"1f9d1-1f3ff-200d-1f9b3","👩🏻‍🦲":"1f469-1f3fb-200d-1f9b2","👩🏼‍🦲":"1f469-1f3fc-200d-1f9b2","👩🏽‍🦲":"1f469-1f3fd-200d-1f9b2","👩🏾‍🦲":"1f469-1f3fe-200d-1f9b2","👩🏿‍🦲":"1f469-1f3ff-200d-1f9b2","🧑🏻‍🦲":"1f9d1-1f3fb-200d-1f9b2","🧑🏼‍🦲":"1f9d1-1f3fc-200d-1f9b2","🧑🏽‍🦲":"1f9d1-1f3fd-200d-1f9b2","🧑🏾‍🦲":"1f9d1-1f3fe-200d-1f9b2","🧑🏿‍🦲":"1f9d1-1f3ff-200d-1f9b2","👱‍♀️":"1f471-200d-2640-fe0f","👱🏻‍♀":"1f471-1f3fb-200d-2640-fe0f","👱🏼‍♀":"1f471-1f3fc-200d-2640-fe0f","👱🏽‍♀":"1f471-1f3fd-200d-2640-fe0f","👱🏾‍♀":"1f471-1f3fe-200d-2640-fe0f","👱🏿‍♀":"1f471-1f3ff-200d-2640-fe0f","👱‍♂️":"1f471-200d-2642-fe0f","👱🏻‍♂":"1f471-1f3fb-200d-2642-fe0f","👱🏼‍♂":"1f471-1f3fc-200d-2642-fe0f","👱🏽‍♂":"1f471-1f3fd-200d-2642-fe0f","👱🏾‍♂":"1f471-1f3fe-200d-2642-fe0f","👱🏿‍♂":"1f471-1f3ff-200d-2642-fe0f","🙍‍♂️":"1f64d-200d-2642-fe0f","🙍🏻‍♂":"1f64d-1f3fb-200d-2642-fe0f","🙍🏼‍♂":"1f64d-1f3fc-200d-2642-fe0f","🙍🏽‍♂":"1f64d-1f3fd-200d-2642-fe0f","🙍🏾‍♂":"1f64d-1f3fe-200d-2642-fe0f","🙍🏿‍♂":"1f64d-1f3ff-200d-2642-fe0f","🙍‍♀️":"1f64d-200d-2640-fe0f","🙍🏻‍♀":"1f64d-1f3fb-200d-2640-fe0f","🙍🏼‍♀":"1f64d-1f3fc-200d-2640-fe0f","🙍🏽‍♀":"1f64d-1f3fd-200d-2640-fe0f","🙍🏾‍♀":"1f64d-1f3fe-200d-2640-fe0f","🙍🏿‍♀":"1f64d-1f3ff-200d-2640-fe0f","🙎‍♂️":"1f64e-200d-2642-fe0f","🙎🏻‍♂":"1f64e-1f3fb-200d-2642-fe0f","🙎🏼‍♂":"1f64e-1f3fc-200d-2642-fe0f","🙎🏽‍♂":"1f64e-1f3fd-200d-2642-fe0f","🙎🏾‍♂":"1f64e-1f3fe-200d-2642-fe0f","🙎🏿‍♂":"1f64e-1f3ff-200d-2642-fe0f","🙎‍♀️":"1f64e-200d-2640-fe0f","🙎🏻‍♀":"1f64e-1f3fb-200d-2640-fe0f","🙎🏼‍♀":"1f64e-1f3fc-200d-2640-fe0f","🙎🏽‍♀":"1f64e-1f3fd-200d-2640-fe0f","🙎🏾‍♀":"1f64e-1f3fe-200d-2640-fe0f","🙎🏿‍♀":"1f64e-1f3ff-200d-2640-fe0f","🙅‍♂️":"1f645-200d-2642-fe0f","🙅🏻‍♂":"1f645-1f3fb-200d-2642-fe0f","🙅🏼‍♂":"1f645-1f3fc-200d-2642-fe0f","🙅🏽‍♂":"1f645-1f3fd-200d-2642-fe0f","🙅🏾‍♂":"1f645-1f3fe-200d-2642-fe0f","🙅🏿‍♂":"1f645-1f3ff-200d-2642-fe0f","🙅‍♀️":"1f645-200d-2640-fe0f","🙅🏻‍♀":"1f645-1f3fb-200d-2640-fe0f","🙅🏼‍♀":"1f645-1f3fc-200d-2640-fe0f","🙅🏽‍♀":"1f645-1f3fd-200d-2640-fe0f","🙅🏾‍♀":"1f645-1f3fe-200d-2640-fe0f","🙅🏿‍♀":"1f645-1f3ff-200d-2640-fe0f","🙆‍♂️":"1f646-200d-2642-fe0f","🙆🏻‍♂":"1f646-1f3fb-200d-2642-fe0f","🙆🏼‍♂":"1f646-1f3fc-200d-2642-fe0f","🙆🏽‍♂":"1f646-1f3fd-200d-2642-fe0f","🙆🏾‍♂":"1f646-1f3fe-200d-2642-fe0f","🙆🏿‍♂":"1f646-1f3ff-200d-2642-fe0f","🙆‍♀️":"1f646-200d-2640-fe0f","🙆🏻‍♀":"1f646-1f3fb-200d-2640-fe0f","🙆🏼‍♀":"1f646-1f3fc-200d-2640-fe0f","🙆🏽‍♀":"1f646-1f3fd-200d-2640-fe0f","🙆🏾‍♀":"1f646-1f3fe-200d-2640-fe0f","🙆🏿‍♀":"1f646-1f3ff-200d-2640-fe0f","💁‍♂️":"1f481-200d-2642-fe0f","💁🏻‍♂":"1f481-1f3fb-200d-2642-fe0f","💁🏼‍♂":"1f481-1f3fc-200d-2642-fe0f","💁🏽‍♂":"1f481-1f3fd-200d-2642-fe0f","💁🏾‍♂":"1f481-1f3fe-200d-2642-fe0f","💁🏿‍♂":"1f481-1f3ff-200d-2642-fe0f","💁‍♀️":"1f481-200d-2640-fe0f","💁🏻‍♀":"1f481-1f3fb-200d-2640-fe0f","💁🏼‍♀":"1f481-1f3fc-200d-2640-fe0f","💁🏽‍♀":"1f481-1f3fd-200d-2640-fe0f","💁🏾‍♀":"1f481-1f3fe-200d-2640-fe0f","💁🏿‍♀":"1f481-1f3ff-200d-2640-fe0f","🙋‍♂️":"1f64b-200d-2642-fe0f","🙋🏻‍♂":"1f64b-1f3fb-200d-2642-fe0f","🙋🏼‍♂":"1f64b-1f3fc-200d-2642-fe0f","🙋🏽‍♂":"1f64b-1f3fd-200d-2642-fe0f","🙋🏾‍♂":"1f64b-1f3fe-200d-2642-fe0f","🙋🏿‍♂":"1f64b-1f3ff-200d-2642-fe0f","🙋‍♀️":"1f64b-200d-2640-fe0f","🙋🏻‍♀":"1f64b-1f3fb-200d-2640-fe0f","🙋🏼‍♀":"1f64b-1f3fc-200d-2640-fe0f","🙋🏽‍♀":"1f64b-1f3fd-200d-2640-fe0f","🙋🏾‍♀":"1f64b-1f3fe-200d-2640-fe0f","🙋🏿‍♀":"1f64b-1f3ff-200d-2640-fe0f","🧏‍♂️":"1f9cf-200d-2642-fe0f","🧏🏻‍♂":"1f9cf-1f3fb-200d-2642-fe0f","🧏🏼‍♂":"1f9cf-1f3fc-200d-2642-fe0f","🧏🏽‍♂":"1f9cf-1f3fd-200d-2642-fe0f","🧏🏾‍♂":"1f9cf-1f3fe-200d-2642-fe0f","🧏🏿‍♂":"1f9cf-1f3ff-200d-2642-fe0f","🧏‍♀️":"1f9cf-200d-2640-fe0f","🧏🏻‍♀":"1f9cf-1f3fb-200d-2640-fe0f","🧏🏼‍♀":"1f9cf-1f3fc-200d-2640-fe0f","🧏🏽‍♀":"1f9cf-1f3fd-200d-2640-fe0f","🧏🏾‍♀":"1f9cf-1f3fe-200d-2640-fe0f","🧏🏿‍♀":"1f9cf-1f3ff-200d-2640-fe0f","🙇‍♂️":"1f647-200d-2642-fe0f","🙇🏻‍♂":"1f647-1f3fb-200d-2642-fe0f","🙇🏼‍♂":"1f647-1f3fc-200d-2642-fe0f","🙇🏽‍♂":"1f647-1f3fd-200d-2642-fe0f","🙇🏾‍♂":"1f647-1f3fe-200d-2642-fe0f","🙇🏿‍♂":"1f647-1f3ff-200d-2642-fe0f","🙇‍♀️":"1f647-200d-2640-fe0f","🙇🏻‍♀":"1f647-1f3fb-200d-2640-fe0f","🙇🏼‍♀":"1f647-1f3fc-200d-2640-fe0f","🙇🏽‍♀":"1f647-1f3fd-200d-2640-fe0f","🙇🏾‍♀":"1f647-1f3fe-200d-2640-fe0f","🙇🏿‍♀":"1f647-1f3ff-200d-2640-fe0f","🤦‍♂️":"1f926-200d-2642-fe0f","🤦🏻‍♂":"1f926-1f3fb-200d-2642-fe0f","🤦🏼‍♂":"1f926-1f3fc-200d-2642-fe0f","🤦🏽‍♂":"1f926-1f3fd-200d-2642-fe0f","🤦🏾‍♂":"1f926-1f3fe-200d-2642-fe0f","🤦🏿‍♂":"1f926-1f3ff-200d-2642-fe0f","🤦‍♀️":"1f926-200d-2640-fe0f","🤦🏻‍♀":"1f926-1f3fb-200d-2640-fe0f","🤦🏼‍♀":"1f926-1f3fc-200d-2640-fe0f","🤦🏽‍♀":"1f926-1f3fd-200d-2640-fe0f","🤦🏾‍♀":"1f926-1f3fe-200d-2640-fe0f","🤦🏿‍♀":"1f926-1f3ff-200d-2640-fe0f","🤷‍♂️":"1f937-200d-2642-fe0f","🤷🏻‍♂":"1f937-1f3fb-200d-2642-fe0f","🤷🏼‍♂":"1f937-1f3fc-200d-2642-fe0f","🤷🏽‍♂":"1f937-1f3fd-200d-2642-fe0f","🤷🏾‍♂":"1f937-1f3fe-200d-2642-fe0f","🤷🏿‍♂":"1f937-1f3ff-200d-2642-fe0f","🤷‍♀️":"1f937-200d-2640-fe0f","🤷🏻‍♀":"1f937-1f3fb-200d-2640-fe0f","🤷🏼‍♀":"1f937-1f3fc-200d-2640-fe0f","🤷🏽‍♀":"1f937-1f3fd-200d-2640-fe0f","🤷🏾‍♀":"1f937-1f3fe-200d-2640-fe0f","🤷🏿‍♀":"1f937-1f3ff-200d-2640-fe0f","🧑‍⚕️":"1f9d1-200d-2695-fe0f","🧑🏻‍⚕":"1f9d1-1f3fb-200d-2695-fe0f","🧑🏼‍⚕":"1f9d1-1f3fc-200d-2695-fe0f","🧑🏽‍⚕":"1f9d1-1f3fd-200d-2695-fe0f","🧑🏾‍⚕":"1f9d1-1f3fe-200d-2695-fe0f","🧑🏿‍⚕":"1f9d1-1f3ff-200d-2695-fe0f","👨‍⚕️":"1f468-200d-2695-fe0f","👨🏻‍⚕":"1f468-1f3fb-200d-2695-fe0f","👨🏼‍⚕":"1f468-1f3fc-200d-2695-fe0f","👨🏽‍⚕":"1f468-1f3fd-200d-2695-fe0f","👨🏾‍⚕":"1f468-1f3fe-200d-2695-fe0f","👨🏿‍⚕":"1f468-1f3ff-200d-2695-fe0f","👩‍⚕️":"1f469-200d-2695-fe0f","👩🏻‍⚕":"1f469-1f3fb-200d-2695-fe0f","👩🏼‍⚕":"1f469-1f3fc-200d-2695-fe0f","👩🏽‍⚕":"1f469-1f3fd-200d-2695-fe0f","👩🏾‍⚕":"1f469-1f3fe-200d-2695-fe0f","👩🏿‍⚕":"1f469-1f3ff-200d-2695-fe0f","🧑🏻‍🎓":"1f9d1-1f3fb-200d-1f393","🧑🏼‍🎓":"1f9d1-1f3fc-200d-1f393","🧑🏽‍🎓":"1f9d1-1f3fd-200d-1f393","🧑🏾‍🎓":"1f9d1-1f3fe-200d-1f393","🧑🏿‍🎓":"1f9d1-1f3ff-200d-1f393","👨🏻‍🎓":"1f468-1f3fb-200d-1f393","👨🏼‍🎓":"1f468-1f3fc-200d-1f393","👨🏽‍🎓":"1f468-1f3fd-200d-1f393","👨🏾‍🎓":"1f468-1f3fe-200d-1f393","👨🏿‍🎓":"1f468-1f3ff-200d-1f393","👩🏻‍🎓":"1f469-1f3fb-200d-1f393","👩🏼‍🎓":"1f469-1f3fc-200d-1f393","👩🏽‍🎓":"1f469-1f3fd-200d-1f393","👩🏾‍🎓":"1f469-1f3fe-200d-1f393","👩🏿‍🎓":"1f469-1f3ff-200d-1f393","🧑🏻‍🏫":"1f9d1-1f3fb-200d-1f3eb","🧑🏼‍🏫":"1f9d1-1f3fc-200d-1f3eb","🧑🏽‍🏫":"1f9d1-1f3fd-200d-1f3eb","🧑🏾‍🏫":"1f9d1-1f3fe-200d-1f3eb","🧑🏿‍🏫":"1f9d1-1f3ff-200d-1f3eb","👨🏻‍🏫":"1f468-1f3fb-200d-1f3eb","👨🏼‍🏫":"1f468-1f3fc-200d-1f3eb","👨🏽‍🏫":"1f468-1f3fd-200d-1f3eb","👨🏾‍🏫":"1f468-1f3fe-200d-1f3eb","👨🏿‍🏫":"1f468-1f3ff-200d-1f3eb","👩🏻‍🏫":"1f469-1f3fb-200d-1f3eb","👩🏼‍🏫":"1f469-1f3fc-200d-1f3eb","👩🏽‍🏫":"1f469-1f3fd-200d-1f3eb","👩🏾‍🏫":"1f469-1f3fe-200d-1f3eb","👩🏿‍🏫":"1f469-1f3ff-200d-1f3eb","🧑‍⚖️":"1f9d1-200d-2696-fe0f","🧑🏻‍⚖":"1f9d1-1f3fb-200d-2696-fe0f","🧑🏼‍⚖":"1f9d1-1f3fc-200d-2696-fe0f","🧑🏽‍⚖":"1f9d1-1f3fd-200d-2696-fe0f","🧑🏾‍⚖":"1f9d1-1f3fe-200d-2696-fe0f","🧑🏿‍⚖":"1f9d1-1f3ff-200d-2696-fe0f","👨‍⚖️":"1f468-200d-2696-fe0f","👨🏻‍⚖":"1f468-1f3fb-200d-2696-fe0f","👨🏼‍⚖":"1f468-1f3fc-200d-2696-fe0f","👨🏽‍⚖":"1f468-1f3fd-200d-2696-fe0f","👨🏾‍⚖":"1f468-1f3fe-200d-2696-fe0f","👨🏿‍⚖":"1f468-1f3ff-200d-2696-fe0f","👩‍⚖️":"1f469-200d-2696-fe0f","👩🏻‍⚖":"1f469-1f3fb-200d-2696-fe0f","👩🏼‍⚖":"1f469-1f3fc-200d-2696-fe0f","👩🏽‍⚖":"1f469-1f3fd-200d-2696-fe0f","👩🏾‍⚖":"1f469-1f3fe-200d-2696-fe0f","👩🏿‍⚖":"1f469-1f3ff-200d-2696-fe0f","🧑🏻‍🌾":"1f9d1-1f3fb-200d-1f33e","🧑🏼‍🌾":"1f9d1-1f3fc-200d-1f33e","🧑🏽‍🌾":"1f9d1-1f3fd-200d-1f33e","🧑🏾‍🌾":"1f9d1-1f3fe-200d-1f33e","🧑🏿‍🌾":"1f9d1-1f3ff-200d-1f33e","👨🏻‍🌾":"1f468-1f3fb-200d-1f33e","👨🏼‍🌾":"1f468-1f3fc-200d-1f33e","👨🏽‍🌾":"1f468-1f3fd-200d-1f33e","👨🏾‍🌾":"1f468-1f3fe-200d-1f33e","👨🏿‍🌾":"1f468-1f3ff-200d-1f33e","👩🏻‍🌾":"1f469-1f3fb-200d-1f33e","👩🏼‍🌾":"1f469-1f3fc-200d-1f33e","👩🏽‍🌾":"1f469-1f3fd-200d-1f33e","👩🏾‍🌾":"1f469-1f3fe-200d-1f33e","👩🏿‍🌾":"1f469-1f3ff-200d-1f33e","🧑🏻‍🍳":"1f9d1-1f3fb-200d-1f373","🧑🏼‍🍳":"1f9d1-1f3fc-200d-1f373","🧑🏽‍🍳":"1f9d1-1f3fd-200d-1f373","🧑🏾‍🍳":"1f9d1-1f3fe-200d-1f373","🧑🏿‍🍳":"1f9d1-1f3ff-200d-1f373","👨🏻‍🍳":"1f468-1f3fb-200d-1f373","👨🏼‍🍳":"1f468-1f3fc-200d-1f373","👨🏽‍🍳":"1f468-1f3fd-200d-1f373","👨🏾‍🍳":"1f468-1f3fe-200d-1f373","👨🏿‍🍳":"1f468-1f3ff-200d-1f373","👩🏻‍🍳":"1f469-1f3fb-200d-1f373","👩🏼‍🍳":"1f469-1f3fc-200d-1f373","👩🏽‍🍳":"1f469-1f3fd-200d-1f373","👩🏾‍🍳":"1f469-1f3fe-200d-1f373","👩🏿‍🍳":"1f469-1f3ff-200d-1f373","🧑🏻‍🔧":"1f9d1-1f3fb-200d-1f527","🧑🏼‍🔧":"1f9d1-1f3fc-200d-1f527","🧑🏽‍🔧":"1f9d1-1f3fd-200d-1f527","🧑🏾‍🔧":"1f9d1-1f3fe-200d-1f527","🧑🏿‍🔧":"1f9d1-1f3ff-200d-1f527","👨🏻‍🔧":"1f468-1f3fb-200d-1f527","👨🏼‍🔧":"1f468-1f3fc-200d-1f527","👨🏽‍🔧":"1f468-1f3fd-200d-1f527","👨🏾‍🔧":"1f468-1f3fe-200d-1f527","👨🏿‍🔧":"1f468-1f3ff-200d-1f527","👩🏻‍🔧":"1f469-1f3fb-200d-1f527","👩🏼‍🔧":"1f469-1f3fc-200d-1f527","👩🏽‍🔧":"1f469-1f3fd-200d-1f527","👩🏾‍🔧":"1f469-1f3fe-200d-1f527","👩🏿‍🔧":"1f469-1f3ff-200d-1f527","🧑🏻‍🏭":"1f9d1-1f3fb-200d-1f3ed","🧑🏼‍🏭":"1f9d1-1f3fc-200d-1f3ed","🧑🏽‍🏭":"1f9d1-1f3fd-200d-1f3ed","🧑🏾‍🏭":"1f9d1-1f3fe-200d-1f3ed","🧑🏿‍🏭":"1f9d1-1f3ff-200d-1f3ed","👨🏻‍🏭":"1f468-1f3fb-200d-1f3ed","👨🏼‍🏭":"1f468-1f3fc-200d-1f3ed","👨🏽‍🏭":"1f468-1f3fd-200d-1f3ed","👨🏾‍🏭":"1f468-1f3fe-200d-1f3ed","👨🏿‍🏭":"1f468-1f3ff-200d-1f3ed","👩🏻‍🏭":"1f469-1f3fb-200d-1f3ed","👩🏼‍🏭":"1f469-1f3fc-200d-1f3ed","👩🏽‍🏭":"1f469-1f3fd-200d-1f3ed","👩🏾‍🏭":"1f469-1f3fe-200d-1f3ed","👩🏿‍🏭":"1f469-1f3ff-200d-1f3ed","🧑🏻‍💼":"1f9d1-1f3fb-200d-1f4bc","🧑🏼‍💼":"1f9d1-1f3fc-200d-1f4bc","🧑🏽‍💼":"1f9d1-1f3fd-200d-1f4bc","🧑🏾‍💼":"1f9d1-1f3fe-200d-1f4bc","🧑🏿‍💼":"1f9d1-1f3ff-200d-1f4bc","👨🏻‍💼":"1f468-1f3fb-200d-1f4bc","👨🏼‍💼":"1f468-1f3fc-200d-1f4bc","👨🏽‍💼":"1f468-1f3fd-200d-1f4bc","👨🏾‍💼":"1f468-1f3fe-200d-1f4bc","👨🏿‍💼":"1f468-1f3ff-200d-1f4bc","👩🏻‍💼":"1f469-1f3fb-200d-1f4bc","👩🏼‍💼":"1f469-1f3fc-200d-1f4bc","👩🏽‍💼":"1f469-1f3fd-200d-1f4bc","👩🏾‍💼":"1f469-1f3fe-200d-1f4bc","👩🏿‍💼":"1f469-1f3ff-200d-1f4bc","🧑🏻‍🔬":"1f9d1-1f3fb-200d-1f52c","🧑🏼‍🔬":"1f9d1-1f3fc-200d-1f52c","🧑🏽‍🔬":"1f9d1-1f3fd-200d-1f52c","🧑🏾‍🔬":"1f9d1-1f3fe-200d-1f52c","🧑🏿‍🔬":"1f9d1-1f3ff-200d-1f52c","👨🏻‍🔬":"1f468-1f3fb-200d-1f52c","👨🏼‍🔬":"1f468-1f3fc-200d-1f52c","👨🏽‍🔬":"1f468-1f3fd-200d-1f52c","👨🏾‍🔬":"1f468-1f3fe-200d-1f52c","👨🏿‍🔬":"1f468-1f3ff-200d-1f52c","👩🏻‍🔬":"1f469-1f3fb-200d-1f52c","👩🏼‍🔬":"1f469-1f3fc-200d-1f52c","👩🏽‍🔬":"1f469-1f3fd-200d-1f52c","👩🏾‍🔬":"1f469-1f3fe-200d-1f52c","👩🏿‍🔬":"1f469-1f3ff-200d-1f52c","🧑🏻‍💻":"1f9d1-1f3fb-200d-1f4bb","🧑🏼‍💻":"1f9d1-1f3fc-200d-1f4bb","🧑🏽‍💻":"1f9d1-1f3fd-200d-1f4bb","🧑🏾‍💻":"1f9d1-1f3fe-200d-1f4bb","🧑🏿‍💻":"1f9d1-1f3ff-200d-1f4bb","👨🏻‍💻":"1f468-1f3fb-200d-1f4bb","👨🏼‍💻":"1f468-1f3fc-200d-1f4bb","👨🏽‍💻":"1f468-1f3fd-200d-1f4bb","👨🏾‍💻":"1f468-1f3fe-200d-1f4bb","👨🏿‍💻":"1f468-1f3ff-200d-1f4bb","👩🏻‍💻":"1f469-1f3fb-200d-1f4bb","👩🏼‍💻":"1f469-1f3fc-200d-1f4bb","👩🏽‍💻":"1f469-1f3fd-200d-1f4bb","👩🏾‍💻":"1f469-1f3fe-200d-1f4bb","👩🏿‍💻":"1f469-1f3ff-200d-1f4bb","🧑🏻‍🎤":"1f9d1-1f3fb-200d-1f3a4","🧑🏼‍🎤":"1f9d1-1f3fc-200d-1f3a4","🧑🏽‍🎤":"1f9d1-1f3fd-200d-1f3a4","🧑🏾‍🎤":"1f9d1-1f3fe-200d-1f3a4","🧑🏿‍🎤":"1f9d1-1f3ff-200d-1f3a4","👨🏻‍🎤":"1f468-1f3fb-200d-1f3a4","👨🏼‍🎤":"1f468-1f3fc-200d-1f3a4","👨🏽‍🎤":"1f468-1f3fd-200d-1f3a4","👨🏾‍🎤":"1f468-1f3fe-200d-1f3a4","👨🏿‍🎤":"1f468-1f3ff-200d-1f3a4","👩🏻‍🎤":"1f469-1f3fb-200d-1f3a4","👩🏼‍🎤":"1f469-1f3fc-200d-1f3a4","👩🏽‍🎤":"1f469-1f3fd-200d-1f3a4","👩🏾‍🎤":"1f469-1f3fe-200d-1f3a4","👩🏿‍🎤":"1f469-1f3ff-200d-1f3a4","🧑🏻‍🎨":"1f9d1-1f3fb-200d-1f3a8","🧑🏼‍🎨":"1f9d1-1f3fc-200d-1f3a8","🧑🏽‍🎨":"1f9d1-1f3fd-200d-1f3a8","🧑🏾‍🎨":"1f9d1-1f3fe-200d-1f3a8","🧑🏿‍🎨":"1f9d1-1f3ff-200d-1f3a8","👨🏻‍🎨":"1f468-1f3fb-200d-1f3a8","👨🏼‍🎨":"1f468-1f3fc-200d-1f3a8","👨🏽‍🎨":"1f468-1f3fd-200d-1f3a8","👨🏾‍🎨":"1f468-1f3fe-200d-1f3a8","👨🏿‍🎨":"1f468-1f3ff-200d-1f3a8","👩🏻‍🎨":"1f469-1f3fb-200d-1f3a8","👩🏼‍🎨":"1f469-1f3fc-200d-1f3a8","👩🏽‍🎨":"1f469-1f3fd-200d-1f3a8","👩🏾‍🎨":"1f469-1f3fe-200d-1f3a8","👩🏿‍🎨":"1f469-1f3ff-200d-1f3a8","🧑‍✈️":"1f9d1-200d-2708-fe0f","🧑🏻‍✈":"1f9d1-1f3fb-200d-2708-fe0f","🧑🏼‍✈":"1f9d1-1f3fc-200d-2708-fe0f","🧑🏽‍✈":"1f9d1-1f3fd-200d-2708-fe0f","🧑🏾‍✈":"1f9d1-1f3fe-200d-2708-fe0f","🧑🏿‍✈":"1f9d1-1f3ff-200d-2708-fe0f","👨‍✈️":"1f468-200d-2708-fe0f","👨🏻‍✈":"1f468-1f3fb-200d-2708-fe0f","👨🏼‍✈":"1f468-1f3fc-200d-2708-fe0f","👨🏽‍✈":"1f468-1f3fd-200d-2708-fe0f","👨🏾‍✈":"1f468-1f3fe-200d-2708-fe0f","👨🏿‍✈":"1f468-1f3ff-200d-2708-fe0f","👩‍✈️":"1f469-200d-2708-fe0f","👩🏻‍✈":"1f469-1f3fb-200d-2708-fe0f","👩🏼‍✈":"1f469-1f3fc-200d-2708-fe0f","👩🏽‍✈":"1f469-1f3fd-200d-2708-fe0f","👩🏾‍✈":"1f469-1f3fe-200d-2708-fe0f","👩🏿‍✈":"1f469-1f3ff-200d-2708-fe0f","🧑🏻‍🚀":"1f9d1-1f3fb-200d-1f680","🧑🏼‍🚀":"1f9d1-1f3fc-200d-1f680","🧑🏽‍🚀":"1f9d1-1f3fd-200d-1f680","🧑🏾‍🚀":"1f9d1-1f3fe-200d-1f680","🧑🏿‍🚀":"1f9d1-1f3ff-200d-1f680","👨🏻‍🚀":"1f468-1f3fb-200d-1f680","👨🏼‍🚀":"1f468-1f3fc-200d-1f680","👨🏽‍🚀":"1f468-1f3fd-200d-1f680","👨🏾‍🚀":"1f468-1f3fe-200d-1f680","👨🏿‍🚀":"1f468-1f3ff-200d-1f680","👩🏻‍🚀":"1f469-1f3fb-200d-1f680","👩🏼‍🚀":"1f469-1f3fc-200d-1f680","👩🏽‍🚀":"1f469-1f3fd-200d-1f680","👩🏾‍🚀":"1f469-1f3fe-200d-1f680","👩🏿‍🚀":"1f469-1f3ff-200d-1f680","🧑🏻‍🚒":"1f9d1-1f3fb-200d-1f692","🧑🏼‍🚒":"1f9d1-1f3fc-200d-1f692","🧑🏽‍🚒":"1f9d1-1f3fd-200d-1f692","🧑🏾‍🚒":"1f9d1-1f3fe-200d-1f692","🧑🏿‍🚒":"1f9d1-1f3ff-200d-1f692","👨🏻‍🚒":"1f468-1f3fb-200d-1f692","👨🏼‍🚒":"1f468-1f3fc-200d-1f692","👨🏽‍🚒":"1f468-1f3fd-200d-1f692","👨🏾‍🚒":"1f468-1f3fe-200d-1f692","👨🏿‍🚒":"1f468-1f3ff-200d-1f692","👩🏻‍🚒":"1f469-1f3fb-200d-1f692","👩🏼‍🚒":"1f469-1f3fc-200d-1f692","👩🏽‍🚒":"1f469-1f3fd-200d-1f692","👩🏾‍🚒":"1f469-1f3fe-200d-1f692","👩🏿‍🚒":"1f469-1f3ff-200d-1f692","👮‍♂️":"1f46e-200d-2642-fe0f","👮🏻‍♂":"1f46e-1f3fb-200d-2642-fe0f","👮🏼‍♂":"1f46e-1f3fc-200d-2642-fe0f","👮🏽‍♂":"1f46e-1f3fd-200d-2642-fe0f","👮🏾‍♂":"1f46e-1f3fe-200d-2642-fe0f","👮🏿‍♂":"1f46e-1f3ff-200d-2642-fe0f","👮‍♀️":"1f46e-200d-2640-fe0f","👮🏻‍♀":"1f46e-1f3fb-200d-2640-fe0f","👮🏼‍♀":"1f46e-1f3fc-200d-2640-fe0f","👮🏽‍♀":"1f46e-1f3fd-200d-2640-fe0f","👮🏾‍♀":"1f46e-1f3fe-200d-2640-fe0f","👮🏿‍♀":"1f46e-1f3ff-200d-2640-fe0f","🕵‍♂️":"1f575-fe0f-200d-2642-fe0f","🕵️‍♂":"1f575-fe0f-200d-2642-fe0f","🕵🏻‍♂":"1f575-1f3fb-200d-2642-fe0f","🕵🏼‍♂":"1f575-1f3fc-200d-2642-fe0f","🕵🏽‍♂":"1f575-1f3fd-200d-2642-fe0f","🕵🏾‍♂":"1f575-1f3fe-200d-2642-fe0f","🕵🏿‍♂":"1f575-1f3ff-200d-2642-fe0f","🕵‍♀️":"1f575-fe0f-200d-2640-fe0f","🕵️‍♀":"1f575-fe0f-200d-2640-fe0f","🕵🏻‍♀":"1f575-1f3fb-200d-2640-fe0f","🕵🏼‍♀":"1f575-1f3fc-200d-2640-fe0f","🕵🏽‍♀":"1f575-1f3fd-200d-2640-fe0f","🕵🏾‍♀":"1f575-1f3fe-200d-2640-fe0f","🕵🏿‍♀":"1f575-1f3ff-200d-2640-fe0f","💂‍♂️":"1f482-200d-2642-fe0f","💂🏻‍♂":"1f482-1f3fb-200d-2642-fe0f","💂🏼‍♂":"1f482-1f3fc-200d-2642-fe0f","💂🏽‍♂":"1f482-1f3fd-200d-2642-fe0f","💂🏾‍♂":"1f482-1f3fe-200d-2642-fe0f","💂🏿‍♂":"1f482-1f3ff-200d-2642-fe0f","💂‍♀️":"1f482-200d-2640-fe0f","💂🏻‍♀":"1f482-1f3fb-200d-2640-fe0f","💂🏼‍♀":"1f482-1f3fc-200d-2640-fe0f","💂🏽‍♀":"1f482-1f3fd-200d-2640-fe0f","💂🏾‍♀":"1f482-1f3fe-200d-2640-fe0f","💂🏿‍♀":"1f482-1f3ff-200d-2640-fe0f","👷‍♂️":"1f477-200d-2642-fe0f","👷🏻‍♂":"1f477-1f3fb-200d-2642-fe0f","👷🏼‍♂":"1f477-1f3fc-200d-2642-fe0f","👷🏽‍♂":"1f477-1f3fd-200d-2642-fe0f","👷🏾‍♂":"1f477-1f3fe-200d-2642-fe0f","👷🏿‍♂":"1f477-1f3ff-200d-2642-fe0f","👷‍♀️":"1f477-200d-2640-fe0f","👷🏻‍♀":"1f477-1f3fb-200d-2640-fe0f","👷🏼‍♀":"1f477-1f3fc-200d-2640-fe0f","👷🏽‍♀":"1f477-1f3fd-200d-2640-fe0f","👷🏾‍♀":"1f477-1f3fe-200d-2640-fe0f","👷🏿‍♀":"1f477-1f3ff-200d-2640-fe0f","👳‍♂️":"1f473-200d-2642-fe0f","👳🏻‍♂":"1f473-1f3fb-200d-2642-fe0f","👳🏼‍♂":"1f473-1f3fc-200d-2642-fe0f","👳🏽‍♂":"1f473-1f3fd-200d-2642-fe0f","👳🏾‍♂":"1f473-1f3fe-200d-2642-fe0f","👳🏿‍♂":"1f473-1f3ff-200d-2642-fe0f","👳‍♀️":"1f473-200d-2640-fe0f","👳🏻‍♀":"1f473-1f3fb-200d-2640-fe0f","👳🏼‍♀":"1f473-1f3fc-200d-2640-fe0f","👳🏽‍♀":"1f473-1f3fd-200d-2640-fe0f","👳🏾‍♀":"1f473-1f3fe-200d-2640-fe0f","👳🏿‍♀":"1f473-1f3ff-200d-2640-fe0f","🤵‍♂️":"1f935-200d-2642-fe0f","🤵🏻‍♂":"1f935-1f3fb-200d-2642-fe0f","🤵🏼‍♂":"1f935-1f3fc-200d-2642-fe0f","🤵🏽‍♂":"1f935-1f3fd-200d-2642-fe0f","🤵🏾‍♂":"1f935-1f3fe-200d-2642-fe0f","🤵🏿‍♂":"1f935-1f3ff-200d-2642-fe0f","🤵‍♀️":"1f935-200d-2640-fe0f","🤵🏻‍♀":"1f935-1f3fb-200d-2640-fe0f","🤵🏼‍♀":"1f935-1f3fc-200d-2640-fe0f","🤵🏽‍♀":"1f935-1f3fd-200d-2640-fe0f","🤵🏾‍♀":"1f935-1f3fe-200d-2640-fe0f","🤵🏿‍♀":"1f935-1f3ff-200d-2640-fe0f","👰‍♂️":"1f470-200d-2642-fe0f","👰🏻‍♂":"1f470-1f3fb-200d-2642-fe0f","👰🏼‍♂":"1f470-1f3fc-200d-2642-fe0f","👰🏽‍♂":"1f470-1f3fd-200d-2642-fe0f","👰🏾‍♂":"1f470-1f3fe-200d-2642-fe0f","👰🏿‍♂":"1f470-1f3ff-200d-2642-fe0f","👰‍♀️":"1f470-200d-2640-fe0f","👰🏻‍♀":"1f470-1f3fb-200d-2640-fe0f","👰🏼‍♀":"1f470-1f3fc-200d-2640-fe0f","👰🏽‍♀":"1f470-1f3fd-200d-2640-fe0f","👰🏾‍♀":"1f470-1f3fe-200d-2640-fe0f","👰🏿‍♀":"1f470-1f3ff-200d-2640-fe0f","👩🏻‍🍼":"1f469-1f3fb-200d-1f37c","👩🏼‍🍼":"1f469-1f3fc-200d-1f37c","👩🏽‍🍼":"1f469-1f3fd-200d-1f37c","👩🏾‍🍼":"1f469-1f3fe-200d-1f37c","👩🏿‍🍼":"1f469-1f3ff-200d-1f37c","👨🏻‍🍼":"1f468-1f3fb-200d-1f37c","👨🏼‍🍼":"1f468-1f3fc-200d-1f37c","👨🏽‍🍼":"1f468-1f3fd-200d-1f37c","👨🏾‍🍼":"1f468-1f3fe-200d-1f37c","👨🏿‍🍼":"1f468-1f3ff-200d-1f37c","🧑🏻‍🍼":"1f9d1-1f3fb-200d-1f37c","🧑🏼‍🍼":"1f9d1-1f3fc-200d-1f37c","🧑🏽‍🍼":"1f9d1-1f3fd-200d-1f37c","🧑🏾‍🍼":"1f9d1-1f3fe-200d-1f37c","🧑🏿‍🍼":"1f9d1-1f3ff-200d-1f37c","🧑🏻‍🎄":"1f9d1-1f3fb-200d-1f384","🧑🏼‍🎄":"1f9d1-1f3fc-200d-1f384","🧑🏽‍🎄":"1f9d1-1f3fd-200d-1f384","🧑🏾‍🎄":"1f9d1-1f3fe-200d-1f384","🧑🏿‍🎄":"1f9d1-1f3ff-200d-1f384","🦸‍♂️":"1f9b8-200d-2642-fe0f","🦸🏻‍♂":"1f9b8-1f3fb-200d-2642-fe0f","🦸🏼‍♂":"1f9b8-1f3fc-200d-2642-fe0f","🦸🏽‍♂":"1f9b8-1f3fd-200d-2642-fe0f","🦸🏾‍♂":"1f9b8-1f3fe-200d-2642-fe0f","🦸🏿‍♂":"1f9b8-1f3ff-200d-2642-fe0f","🦸‍♀️":"1f9b8-200d-2640-fe0f","🦸🏻‍♀":"1f9b8-1f3fb-200d-2640-fe0f","🦸🏼‍♀":"1f9b8-1f3fc-200d-2640-fe0f","🦸🏽‍♀":"1f9b8-1f3fd-200d-2640-fe0f","🦸🏾‍♀":"1f9b8-1f3fe-200d-2640-fe0f","🦸🏿‍♀":"1f9b8-1f3ff-200d-2640-fe0f","🦹‍♂️":"1f9b9-200d-2642-fe0f","🦹🏻‍♂":"1f9b9-1f3fb-200d-2642-fe0f","🦹🏼‍♂":"1f9b9-1f3fc-200d-2642-fe0f","🦹🏽‍♂":"1f9b9-1f3fd-200d-2642-fe0f","🦹🏾‍♂":"1f9b9-1f3fe-200d-2642-fe0f","🦹🏿‍♂":"1f9b9-1f3ff-200d-2642-fe0f","🦹‍♀️":"1f9b9-200d-2640-fe0f","🦹🏻‍♀":"1f9b9-1f3fb-200d-2640-fe0f","🦹🏼‍♀":"1f9b9-1f3fc-200d-2640-fe0f","🦹🏽‍♀":"1f9b9-1f3fd-200d-2640-fe0f","🦹🏾‍♀":"1f9b9-1f3fe-200d-2640-fe0f","🦹🏿‍♀":"1f9b9-1f3ff-200d-2640-fe0f","🧙‍♂️":"1f9d9-200d-2642-fe0f","🧙🏻‍♂":"1f9d9-1f3fb-200d-2642-fe0f","🧙🏼‍♂":"1f9d9-1f3fc-200d-2642-fe0f","🧙🏽‍♂":"1f9d9-1f3fd-200d-2642-fe0f","🧙🏾‍♂":"1f9d9-1f3fe-200d-2642-fe0f","🧙🏿‍♂":"1f9d9-1f3ff-200d-2642-fe0f","🧙‍♀️":"1f9d9-200d-2640-fe0f","🧙🏻‍♀":"1f9d9-1f3fb-200d-2640-fe0f","🧙🏼‍♀":"1f9d9-1f3fc-200d-2640-fe0f","🧙🏽‍♀":"1f9d9-1f3fd-200d-2640-fe0f","🧙🏾‍♀":"1f9d9-1f3fe-200d-2640-fe0f","🧙🏿‍♀":"1f9d9-1f3ff-200d-2640-fe0f","🧚‍♂️":"1f9da-200d-2642-fe0f","🧚🏻‍♂":"1f9da-1f3fb-200d-2642-fe0f","🧚🏼‍♂":"1f9da-1f3fc-200d-2642-fe0f","🧚🏽‍♂":"1f9da-1f3fd-200d-2642-fe0f","🧚🏾‍♂":"1f9da-1f3fe-200d-2642-fe0f","🧚🏿‍♂":"1f9da-1f3ff-200d-2642-fe0f","🧚‍♀️":"1f9da-200d-2640-fe0f","🧚🏻‍♀":"1f9da-1f3fb-200d-2640-fe0f","🧚🏼‍♀":"1f9da-1f3fc-200d-2640-fe0f","🧚🏽‍♀":"1f9da-1f3fd-200d-2640-fe0f","🧚🏾‍♀":"1f9da-1f3fe-200d-2640-fe0f","🧚🏿‍♀":"1f9da-1f3ff-200d-2640-fe0f","🧛‍♂️":"1f9db-200d-2642-fe0f","🧛🏻‍♂":"1f9db-1f3fb-200d-2642-fe0f","🧛🏼‍♂":"1f9db-1f3fc-200d-2642-fe0f","🧛🏽‍♂":"1f9db-1f3fd-200d-2642-fe0f","🧛🏾‍♂":"1f9db-1f3fe-200d-2642-fe0f","🧛🏿‍♂":"1f9db-1f3ff-200d-2642-fe0f","🧛‍♀️":"1f9db-200d-2640-fe0f","🧛🏻‍♀":"1f9db-1f3fb-200d-2640-fe0f","🧛🏼‍♀":"1f9db-1f3fc-200d-2640-fe0f","🧛🏽‍♀":"1f9db-1f3fd-200d-2640-fe0f","🧛🏾‍♀":"1f9db-1f3fe-200d-2640-fe0f","🧛🏿‍♀":"1f9db-1f3ff-200d-2640-fe0f","🧜‍♂️":"1f9dc-200d-2642-fe0f","🧜🏻‍♂":"1f9dc-1f3fb-200d-2642-fe0f","🧜🏼‍♂":"1f9dc-1f3fc-200d-2642-fe0f","🧜🏽‍♂":"1f9dc-1f3fd-200d-2642-fe0f","🧜🏾‍♂":"1f9dc-1f3fe-200d-2642-fe0f","🧜🏿‍♂":"1f9dc-1f3ff-200d-2642-fe0f","🧜‍♀️":"1f9dc-200d-2640-fe0f","🧜🏻‍♀":"1f9dc-1f3fb-200d-2640-fe0f","🧜🏼‍♀":"1f9dc-1f3fc-200d-2640-fe0f","🧜🏽‍♀":"1f9dc-1f3fd-200d-2640-fe0f","🧜🏾‍♀":"1f9dc-1f3fe-200d-2640-fe0f","🧜🏿‍♀":"1f9dc-1f3ff-200d-2640-fe0f","🧝‍♂️":"1f9dd-200d-2642-fe0f","🧝🏻‍♂":"1f9dd-1f3fb-200d-2642-fe0f","🧝🏼‍♂":"1f9dd-1f3fc-200d-2642-fe0f","🧝🏽‍♂":"1f9dd-1f3fd-200d-2642-fe0f","🧝🏾‍♂":"1f9dd-1f3fe-200d-2642-fe0f","🧝🏿‍♂":"1f9dd-1f3ff-200d-2642-fe0f","🧝‍♀️":"1f9dd-200d-2640-fe0f","🧝🏻‍♀":"1f9dd-1f3fb-200d-2640-fe0f","🧝🏼‍♀":"1f9dd-1f3fc-200d-2640-fe0f","🧝🏽‍♀":"1f9dd-1f3fd-200d-2640-fe0f","🧝🏾‍♀":"1f9dd-1f3fe-200d-2640-fe0f","🧝🏿‍♀":"1f9dd-1f3ff-200d-2640-fe0f","🧞‍♂️":"1f9de-200d-2642-fe0f","🧞‍♀️":"1f9de-200d-2640-fe0f","🧟‍♂️":"1f9df-200d-2642-fe0f","🧟‍♀️":"1f9df-200d-2640-fe0f","💆‍♂️":"1f486-200d-2642-fe0f","💆🏻‍♂":"1f486-1f3fb-200d-2642-fe0f","💆🏼‍♂":"1f486-1f3fc-200d-2642-fe0f","💆🏽‍♂":"1f486-1f3fd-200d-2642-fe0f","💆🏾‍♂":"1f486-1f3fe-200d-2642-fe0f","💆🏿‍♂":"1f486-1f3ff-200d-2642-fe0f","💆‍♀️":"1f486-200d-2640-fe0f","💆🏻‍♀":"1f486-1f3fb-200d-2640-fe0f","💆🏼‍♀":"1f486-1f3fc-200d-2640-fe0f","💆🏽‍♀":"1f486-1f3fd-200d-2640-fe0f","💆🏾‍♀":"1f486-1f3fe-200d-2640-fe0f","💆🏿‍♀":"1f486-1f3ff-200d-2640-fe0f","💇‍♂️":"1f487-200d-2642-fe0f","💇🏻‍♂":"1f487-1f3fb-200d-2642-fe0f","💇🏼‍♂":"1f487-1f3fc-200d-2642-fe0f","💇🏽‍♂":"1f487-1f3fd-200d-2642-fe0f","💇🏾‍♂":"1f487-1f3fe-200d-2642-fe0f","💇🏿‍♂":"1f487-1f3ff-200d-2642-fe0f","💇‍♀️":"1f487-200d-2640-fe0f","💇🏻‍♀":"1f487-1f3fb-200d-2640-fe0f","💇🏼‍♀":"1f487-1f3fc-200d-2640-fe0f","💇🏽‍♀":"1f487-1f3fd-200d-2640-fe0f","💇🏾‍♀":"1f487-1f3fe-200d-2640-fe0f","💇🏿‍♀":"1f487-1f3ff-200d-2640-fe0f","🚶‍♂️":"1f6b6-200d-2642-fe0f","🚶🏻‍♂":"1f6b6-1f3fb-200d-2642-fe0f","🚶🏼‍♂":"1f6b6-1f3fc-200d-2642-fe0f","🚶🏽‍♂":"1f6b6-1f3fd-200d-2642-fe0f","🚶🏾‍♂":"1f6b6-1f3fe-200d-2642-fe0f","🚶🏿‍♂":"1f6b6-1f3ff-200d-2642-fe0f","🚶‍♀️":"1f6b6-200d-2640-fe0f","🚶🏻‍♀":"1f6b6-1f3fb-200d-2640-fe0f","🚶🏼‍♀":"1f6b6-1f3fc-200d-2640-fe0f","🚶🏽‍♀":"1f6b6-1f3fd-200d-2640-fe0f","🚶🏾‍♀":"1f6b6-1f3fe-200d-2640-fe0f","🚶🏿‍♀":"1f6b6-1f3ff-200d-2640-fe0f","🧍‍♂️":"1f9cd-200d-2642-fe0f","🧍🏻‍♂":"1f9cd-1f3fb-200d-2642-fe0f","🧍🏼‍♂":"1f9cd-1f3fc-200d-2642-fe0f","🧍🏽‍♂":"1f9cd-1f3fd-200d-2642-fe0f","🧍🏾‍♂":"1f9cd-1f3fe-200d-2642-fe0f","🧍🏿‍♂":"1f9cd-1f3ff-200d-2642-fe0f","🧍‍♀️":"1f9cd-200d-2640-fe0f","🧍🏻‍♀":"1f9cd-1f3fb-200d-2640-fe0f","🧍🏼‍♀":"1f9cd-1f3fc-200d-2640-fe0f","🧍🏽‍♀":"1f9cd-1f3fd-200d-2640-fe0f","🧍🏾‍♀":"1f9cd-1f3fe-200d-2640-fe0f","🧍🏿‍♀":"1f9cd-1f3ff-200d-2640-fe0f","🧎‍♂️":"1f9ce-200d-2642-fe0f","🧎🏻‍♂":"1f9ce-1f3fb-200d-2642-fe0f","🧎🏼‍♂":"1f9ce-1f3fc-200d-2642-fe0f","🧎🏽‍♂":"1f9ce-1f3fd-200d-2642-fe0f","🧎🏾‍♂":"1f9ce-1f3fe-200d-2642-fe0f","🧎🏿‍♂":"1f9ce-1f3ff-200d-2642-fe0f","🧎‍♀️":"1f9ce-200d-2640-fe0f","🧎🏻‍♀":"1f9ce-1f3fb-200d-2640-fe0f","🧎🏼‍♀":"1f9ce-1f3fc-200d-2640-fe0f","🧎🏽‍♀":"1f9ce-1f3fd-200d-2640-fe0f","🧎🏾‍♀":"1f9ce-1f3fe-200d-2640-fe0f","🧎🏿‍♀":"1f9ce-1f3ff-200d-2640-fe0f","🧑🏻‍🦯":"1f9d1-1f3fb-200d-1f9af","🧑🏼‍🦯":"1f9d1-1f3fc-200d-1f9af","🧑🏽‍🦯":"1f9d1-1f3fd-200d-1f9af","🧑🏾‍🦯":"1f9d1-1f3fe-200d-1f9af","🧑🏿‍🦯":"1f9d1-1f3ff-200d-1f9af","👨🏻‍🦯":"1f468-1f3fb-200d-1f9af","👨🏼‍🦯":"1f468-1f3fc-200d-1f9af","👨🏽‍🦯":"1f468-1f3fd-200d-1f9af","👨🏾‍🦯":"1f468-1f3fe-200d-1f9af","👨🏿‍🦯":"1f468-1f3ff-200d-1f9af","👩🏻‍🦯":"1f469-1f3fb-200d-1f9af","👩🏼‍🦯":"1f469-1f3fc-200d-1f9af","👩🏽‍🦯":"1f469-1f3fd-200d-1f9af","👩🏾‍🦯":"1f469-1f3fe-200d-1f9af","👩🏿‍🦯":"1f469-1f3ff-200d-1f9af","🧑🏻‍🦼":"1f9d1-1f3fb-200d-1f9bc","🧑🏼‍🦼":"1f9d1-1f3fc-200d-1f9bc","🧑🏽‍🦼":"1f9d1-1f3fd-200d-1f9bc","🧑🏾‍🦼":"1f9d1-1f3fe-200d-1f9bc","🧑🏿‍🦼":"1f9d1-1f3ff-200d-1f9bc","👨🏻‍🦼":"1f468-1f3fb-200d-1f9bc","👨🏼‍🦼":"1f468-1f3fc-200d-1f9bc","👨🏽‍🦼":"1f468-1f3fd-200d-1f9bc","👨🏾‍🦼":"1f468-1f3fe-200d-1f9bc","👨🏿‍🦼":"1f468-1f3ff-200d-1f9bc","👩🏻‍🦼":"1f469-1f3fb-200d-1f9bc","👩🏼‍🦼":"1f469-1f3fc-200d-1f9bc","👩🏽‍🦼":"1f469-1f3fd-200d-1f9bc","👩🏾‍🦼":"1f469-1f3fe-200d-1f9bc","👩🏿‍🦼":"1f469-1f3ff-200d-1f9bc","🧑🏻‍🦽":"1f9d1-1f3fb-200d-1f9bd","🧑🏼‍🦽":"1f9d1-1f3fc-200d-1f9bd","🧑🏽‍🦽":"1f9d1-1f3fd-200d-1f9bd","🧑🏾‍🦽":"1f9d1-1f3fe-200d-1f9bd","🧑🏿‍🦽":"1f9d1-1f3ff-200d-1f9bd","👨🏻‍🦽":"1f468-1f3fb-200d-1f9bd","👨🏼‍🦽":"1f468-1f3fc-200d-1f9bd","👨🏽‍🦽":"1f468-1f3fd-200d-1f9bd","👨🏾‍🦽":"1f468-1f3fe-200d-1f9bd","👨🏿‍🦽":"1f468-1f3ff-200d-1f9bd","👩🏻‍🦽":"1f469-1f3fb-200d-1f9bd","👩🏼‍🦽":"1f469-1f3fc-200d-1f9bd","👩🏽‍🦽":"1f469-1f3fd-200d-1f9bd","👩🏾‍🦽":"1f469-1f3fe-200d-1f9bd","👩🏿‍🦽":"1f469-1f3ff-200d-1f9bd","🏃‍♂️":"1f3c3-200d-2642-fe0f","🏃🏻‍♂":"1f3c3-1f3fb-200d-2642-fe0f","🏃🏼‍♂":"1f3c3-1f3fc-200d-2642-fe0f","🏃🏽‍♂":"1f3c3-1f3fd-200d-2642-fe0f","🏃🏾‍♂":"1f3c3-1f3fe-200d-2642-fe0f","🏃🏿‍♂":"1f3c3-1f3ff-200d-2642-fe0f","🏃‍♀️":"1f3c3-200d-2640-fe0f","🏃🏻‍♀":"1f3c3-1f3fb-200d-2640-fe0f","🏃🏼‍♀":"1f3c3-1f3fc-200d-2640-fe0f","🏃🏽‍♀":"1f3c3-1f3fd-200d-2640-fe0f","🏃🏾‍♀":"1f3c3-1f3fe-200d-2640-fe0f","🏃🏿‍♀":"1f3c3-1f3ff-200d-2640-fe0f","👯‍♂️":"1f46f-200d-2642-fe0f","👯‍♀️":"1f46f-200d-2640-fe0f","🧖‍♂️":"1f9d6-200d-2642-fe0f","🧖🏻‍♂":"1f9d6-1f3fb-200d-2642-fe0f","🧖🏼‍♂":"1f9d6-1f3fc-200d-2642-fe0f","🧖🏽‍♂":"1f9d6-1f3fd-200d-2642-fe0f","🧖🏾‍♂":"1f9d6-1f3fe-200d-2642-fe0f","🧖🏿‍♂":"1f9d6-1f3ff-200d-2642-fe0f","🧖‍♀️":"1f9d6-200d-2640-fe0f","🧖🏻‍♀":"1f9d6-1f3fb-200d-2640-fe0f","🧖🏼‍♀":"1f9d6-1f3fc-200d-2640-fe0f","🧖🏽‍♀":"1f9d6-1f3fd-200d-2640-fe0f","🧖🏾‍♀":"1f9d6-1f3fe-200d-2640-fe0f","🧖🏿‍♀":"1f9d6-1f3ff-200d-2640-fe0f","🧗‍♂️":"1f9d7-200d-2642-fe0f","🧗🏻‍♂":"1f9d7-1f3fb-200d-2642-fe0f","🧗🏼‍♂":"1f9d7-1f3fc-200d-2642-fe0f","🧗🏽‍♂":"1f9d7-1f3fd-200d-2642-fe0f","🧗🏾‍♂":"1f9d7-1f3fe-200d-2642-fe0f","🧗🏿‍♂":"1f9d7-1f3ff-200d-2642-fe0f","🧗‍♀️":"1f9d7-200d-2640-fe0f","🧗🏻‍♀":"1f9d7-1f3fb-200d-2640-fe0f","🧗🏼‍♀":"1f9d7-1f3fc-200d-2640-fe0f","🧗🏽‍♀":"1f9d7-1f3fd-200d-2640-fe0f","🧗🏾‍♀":"1f9d7-1f3fe-200d-2640-fe0f","🧗🏿‍♀":"1f9d7-1f3ff-200d-2640-fe0f","🏌‍♂️":"1f3cc-fe0f-200d-2642-fe0f","🏌️‍♂":"1f3cc-fe0f-200d-2642-fe0f","🏌🏻‍♂":"1f3cc-1f3fb-200d-2642-fe0f","🏌🏼‍♂":"1f3cc-1f3fc-200d-2642-fe0f","🏌🏽‍♂":"1f3cc-1f3fd-200d-2642-fe0f","🏌🏾‍♂":"1f3cc-1f3fe-200d-2642-fe0f","🏌🏿‍♂":"1f3cc-1f3ff-200d-2642-fe0f","🏌‍♀️":"1f3cc-fe0f-200d-2640-fe0f","🏌️‍♀":"1f3cc-fe0f-200d-2640-fe0f","🏌🏻‍♀":"1f3cc-1f3fb-200d-2640-fe0f","🏌🏼‍♀":"1f3cc-1f3fc-200d-2640-fe0f","🏌🏽‍♀":"1f3cc-1f3fd-200d-2640-fe0f","🏌🏾‍♀":"1f3cc-1f3fe-200d-2640-fe0f","🏌🏿‍♀":"1f3cc-1f3ff-200d-2640-fe0f","🏄‍♂️":"1f3c4-200d-2642-fe0f","🏄🏻‍♂":"1f3c4-1f3fb-200d-2642-fe0f","🏄🏼‍♂":"1f3c4-1f3fc-200d-2642-fe0f","🏄🏽‍♂":"1f3c4-1f3fd-200d-2642-fe0f","🏄🏾‍♂":"1f3c4-1f3fe-200d-2642-fe0f","🏄🏿‍♂":"1f3c4-1f3ff-200d-2642-fe0f","🏄‍♀️":"1f3c4-200d-2640-fe0f","🏄🏻‍♀":"1f3c4-1f3fb-200d-2640-fe0f","🏄🏼‍♀":"1f3c4-1f3fc-200d-2640-fe0f","🏄🏽‍♀":"1f3c4-1f3fd-200d-2640-fe0f","🏄🏾‍♀":"1f3c4-1f3fe-200d-2640-fe0f","🏄🏿‍♀":"1f3c4-1f3ff-200d-2640-fe0f","🚣‍♂️":"1f6a3-200d-2642-fe0f","🚣🏻‍♂":"1f6a3-1f3fb-200d-2642-fe0f","🚣🏼‍♂":"1f6a3-1f3fc-200d-2642-fe0f","🚣🏽‍♂":"1f6a3-1f3fd-200d-2642-fe0f","🚣🏾‍♂":"1f6a3-1f3fe-200d-2642-fe0f","🚣🏿‍♂":"1f6a3-1f3ff-200d-2642-fe0f","🚣‍♀️":"1f6a3-200d-2640-fe0f","🚣🏻‍♀":"1f6a3-1f3fb-200d-2640-fe0f","🚣🏼‍♀":"1f6a3-1f3fc-200d-2640-fe0f","🚣🏽‍♀":"1f6a3-1f3fd-200d-2640-fe0f","🚣🏾‍♀":"1f6a3-1f3fe-200d-2640-fe0f","🚣🏿‍♀":"1f6a3-1f3ff-200d-2640-fe0f","🏊‍♂️":"1f3ca-200d-2642-fe0f","🏊🏻‍♂":"1f3ca-1f3fb-200d-2642-fe0f","🏊🏼‍♂":"1f3ca-1f3fc-200d-2642-fe0f","🏊🏽‍♂":"1f3ca-1f3fd-200d-2642-fe0f","🏊🏾‍♂":"1f3ca-1f3fe-200d-2642-fe0f","🏊🏿‍♂":"1f3ca-1f3ff-200d-2642-fe0f","🏊‍♀️":"1f3ca-200d-2640-fe0f","🏊🏻‍♀":"1f3ca-1f3fb-200d-2640-fe0f","🏊🏼‍♀":"1f3ca-1f3fc-200d-2640-fe0f","🏊🏽‍♀":"1f3ca-1f3fd-200d-2640-fe0f","🏊🏾‍♀":"1f3ca-1f3fe-200d-2640-fe0f","🏊🏿‍♀":"1f3ca-1f3ff-200d-2640-fe0f","⛹‍♂️":"26f9-fe0f-200d-2642-fe0f","⛹️‍♂":"26f9-fe0f-200d-2642-fe0f","⛹🏻‍♂":"26f9-1f3fb-200d-2642-fe0f","⛹🏼‍♂":"26f9-1f3fc-200d-2642-fe0f","⛹🏽‍♂":"26f9-1f3fd-200d-2642-fe0f","⛹🏾‍♂":"26f9-1f3fe-200d-2642-fe0f","⛹🏿‍♂":"26f9-1f3ff-200d-2642-fe0f","⛹‍♀️":"26f9-fe0f-200d-2640-fe0f","⛹️‍♀":"26f9-fe0f-200d-2640-fe0f","⛹🏻‍♀":"26f9-1f3fb-200d-2640-fe0f","⛹🏼‍♀":"26f9-1f3fc-200d-2640-fe0f","⛹🏽‍♀":"26f9-1f3fd-200d-2640-fe0f","⛹🏾‍♀":"26f9-1f3fe-200d-2640-fe0f","⛹🏿‍♀":"26f9-1f3ff-200d-2640-fe0f","🏋‍♂️":"1f3cb-fe0f-200d-2642-fe0f","🏋️‍♂":"1f3cb-fe0f-200d-2642-fe0f","🏋🏻‍♂":"1f3cb-1f3fb-200d-2642-fe0f","🏋🏼‍♂":"1f3cb-1f3fc-200d-2642-fe0f","🏋🏽‍♂":"1f3cb-1f3fd-200d-2642-fe0f","🏋🏾‍♂":"1f3cb-1f3fe-200d-2642-fe0f","🏋🏿‍♂":"1f3cb-1f3ff-200d-2642-fe0f","🏋‍♀️":"1f3cb-fe0f-200d-2640-fe0f","🏋️‍♀":"1f3cb-fe0f-200d-2640-fe0f","🏋🏻‍♀":"1f3cb-1f3fb-200d-2640-fe0f","🏋🏼‍♀":"1f3cb-1f3fc-200d-2640-fe0f","🏋🏽‍♀":"1f3cb-1f3fd-200d-2640-fe0f","🏋🏾‍♀":"1f3cb-1f3fe-200d-2640-fe0f","🏋🏿‍♀":"1f3cb-1f3ff-200d-2640-fe0f","🚴‍♂️":"1f6b4-200d-2642-fe0f","🚴🏻‍♂":"1f6b4-1f3fb-200d-2642-fe0f","🚴🏼‍♂":"1f6b4-1f3fc-200d-2642-fe0f","🚴🏽‍♂":"1f6b4-1f3fd-200d-2642-fe0f","🚴🏾‍♂":"1f6b4-1f3fe-200d-2642-fe0f","🚴🏿‍♂":"1f6b4-1f3ff-200d-2642-fe0f","🚴‍♀️":"1f6b4-200d-2640-fe0f","🚴🏻‍♀":"1f6b4-1f3fb-200d-2640-fe0f","🚴🏼‍♀":"1f6b4-1f3fc-200d-2640-fe0f","🚴🏽‍♀":"1f6b4-1f3fd-200d-2640-fe0f","🚴🏾‍♀":"1f6b4-1f3fe-200d-2640-fe0f","🚴🏿‍♀":"1f6b4-1f3ff-200d-2640-fe0f","🚵‍♂️":"1f6b5-200d-2642-fe0f","🚵🏻‍♂":"1f6b5-1f3fb-200d-2642-fe0f","🚵🏼‍♂":"1f6b5-1f3fc-200d-2642-fe0f","🚵🏽‍♂":"1f6b5-1f3fd-200d-2642-fe0f","🚵🏾‍♂":"1f6b5-1f3fe-200d-2642-fe0f","🚵🏿‍♂":"1f6b5-1f3ff-200d-2642-fe0f","🚵‍♀️":"1f6b5-200d-2640-fe0f","🚵🏻‍♀":"1f6b5-1f3fb-200d-2640-fe0f","🚵🏼‍♀":"1f6b5-1f3fc-200d-2640-fe0f","🚵🏽‍♀":"1f6b5-1f3fd-200d-2640-fe0f","🚵🏾‍♀":"1f6b5-1f3fe-200d-2640-fe0f","🚵🏿‍♀":"1f6b5-1f3ff-200d-2640-fe0f","🤸‍♂️":"1f938-200d-2642-fe0f","🤸🏻‍♂":"1f938-1f3fb-200d-2642-fe0f","🤸🏼‍♂":"1f938-1f3fc-200d-2642-fe0f","🤸🏽‍♂":"1f938-1f3fd-200d-2642-fe0f","🤸🏾‍♂":"1f938-1f3fe-200d-2642-fe0f","🤸🏿‍♂":"1f938-1f3ff-200d-2642-fe0f","🤸‍♀️":"1f938-200d-2640-fe0f","🤸🏻‍♀":"1f938-1f3fb-200d-2640-fe0f","🤸🏼‍♀":"1f938-1f3fc-200d-2640-fe0f","🤸🏽‍♀":"1f938-1f3fd-200d-2640-fe0f","🤸🏾‍♀":"1f938-1f3fe-200d-2640-fe0f","🤸🏿‍♀":"1f938-1f3ff-200d-2640-fe0f","🤼‍♂️":"1f93c-200d-2642-fe0f","🤼‍♀️":"1f93c-200d-2640-fe0f","🤽‍♂️":"1f93d-200d-2642-fe0f","🤽🏻‍♂":"1f93d-1f3fb-200d-2642-fe0f","🤽🏼‍♂":"1f93d-1f3fc-200d-2642-fe0f","🤽🏽‍♂":"1f93d-1f3fd-200d-2642-fe0f","🤽🏾‍♂":"1f93d-1f3fe-200d-2642-fe0f","🤽🏿‍♂":"1f93d-1f3ff-200d-2642-fe0f","🤽‍♀️":"1f93d-200d-2640-fe0f","🤽🏻‍♀":"1f93d-1f3fb-200d-2640-fe0f","🤽🏼‍♀":"1f93d-1f3fc-200d-2640-fe0f","🤽🏽‍♀":"1f93d-1f3fd-200d-2640-fe0f","🤽🏾‍♀":"1f93d-1f3fe-200d-2640-fe0f","🤽🏿‍♀":"1f93d-1f3ff-200d-2640-fe0f","🤾‍♂️":"1f93e-200d-2642-fe0f","🤾🏻‍♂":"1f93e-1f3fb-200d-2642-fe0f","🤾🏼‍♂":"1f93e-1f3fc-200d-2642-fe0f","🤾🏽‍♂":"1f93e-1f3fd-200d-2642-fe0f","🤾🏾‍♂":"1f93e-1f3fe-200d-2642-fe0f","🤾🏿‍♂":"1f93e-1f3ff-200d-2642-fe0f","🤾‍♀️":"1f93e-200d-2640-fe0f","🤾🏻‍♀":"1f93e-1f3fb-200d-2640-fe0f","🤾🏼‍♀":"1f93e-1f3fc-200d-2640-fe0f","🤾🏽‍♀":"1f93e-1f3fd-200d-2640-fe0f","🤾🏾‍♀":"1f93e-1f3fe-200d-2640-fe0f","🤾🏿‍♀":"1f93e-1f3ff-200d-2640-fe0f","🤹‍♂️":"1f939-200d-2642-fe0f","🤹🏻‍♂":"1f939-1f3fb-200d-2642-fe0f","🤹🏼‍♂":"1f939-1f3fc-200d-2642-fe0f","🤹🏽‍♂":"1f939-1f3fd-200d-2642-fe0f","🤹🏾‍♂":"1f939-1f3fe-200d-2642-fe0f","🤹🏿‍♂":"1f939-1f3ff-200d-2642-fe0f","🤹‍♀️":"1f939-200d-2640-fe0f","🤹🏻‍♀":"1f939-1f3fb-200d-2640-fe0f","🤹🏼‍♀":"1f939-1f3fc-200d-2640-fe0f","🤹🏽‍♀":"1f939-1f3fd-200d-2640-fe0f","🤹🏾‍♀":"1f939-1f3fe-200d-2640-fe0f","🤹🏿‍♀":"1f939-1f3ff-200d-2640-fe0f","🧘‍♂️":"1f9d8-200d-2642-fe0f","🧘🏻‍♂":"1f9d8-1f3fb-200d-2642-fe0f","🧘🏼‍♂":"1f9d8-1f3fc-200d-2642-fe0f","🧘🏽‍♂":"1f9d8-1f3fd-200d-2642-fe0f","🧘🏾‍♂":"1f9d8-1f3fe-200d-2642-fe0f","🧘🏿‍♂":"1f9d8-1f3ff-200d-2642-fe0f","🧘‍♀️":"1f9d8-200d-2640-fe0f","🧘🏻‍♀":"1f9d8-1f3fb-200d-2640-fe0f","🧘🏼‍♀":"1f9d8-1f3fc-200d-2640-fe0f","🧘🏽‍♀":"1f9d8-1f3fd-200d-2640-fe0f","🧘🏾‍♀":"1f9d8-1f3fe-200d-2640-fe0f","🧘🏿‍♀":"1f9d8-1f3ff-200d-2640-fe0f","🐻‍❄️":"1f43b-200d-2744-fe0f","🏳️‍🌈":"1f3f3-fe0f-200d-1f308","🏳‍⚧️":"1f3f3-fe0f-200d-26a7-fe0f","🏳️‍⚧":"1f3f3-fe0f-200d-26a7-fe0f","🏴‍☠️":"1f3f4-200d-2620-fe0f","👁️‍🗨️":"1f441-200d-1f5e8","🫱🏻‍🫲🏼":"1faf1-1f3fb-200d-1faf2-1f3fc","🫱🏻‍🫲🏽":"1faf1-1f3fb-200d-1faf2-1f3fd","🫱🏻‍🫲🏾":"1faf1-1f3fb-200d-1faf2-1f3fe","🫱🏻‍🫲🏿":"1faf1-1f3fb-200d-1faf2-1f3ff","🫱🏼‍🫲🏻":"1faf1-1f3fc-200d-1faf2-1f3fb","🫱🏼‍🫲🏽":"1faf1-1f3fc-200d-1faf2-1f3fd","🫱🏼‍🫲🏾":"1faf1-1f3fc-200d-1faf2-1f3fe","🫱🏼‍🫲🏿":"1faf1-1f3fc-200d-1faf2-1f3ff","🫱🏽‍🫲🏻":"1faf1-1f3fd-200d-1faf2-1f3fb","🫱🏽‍🫲🏼":"1faf1-1f3fd-200d-1faf2-1f3fc","🫱🏽‍🫲🏾":"1faf1-1f3fd-200d-1faf2-1f3fe","🫱🏽‍🫲🏿":"1faf1-1f3fd-200d-1faf2-1f3ff","🫱🏾‍🫲🏻":"1faf1-1f3fe-200d-1faf2-1f3fb","🫱🏾‍🫲🏼":"1faf1-1f3fe-200d-1faf2-1f3fc","🫱🏾‍🫲🏽":"1faf1-1f3fe-200d-1faf2-1f3fd","🫱🏾‍🫲🏿":"1faf1-1f3fe-200d-1faf2-1f3ff","🫱🏿‍🫲🏻":"1faf1-1f3ff-200d-1faf2-1f3fb","🫱🏿‍🫲🏼":"1faf1-1f3ff-200d-1faf2-1f3fc","🫱🏿‍🫲🏽":"1faf1-1f3ff-200d-1faf2-1f3fd","🫱🏿‍🫲🏾":"1faf1-1f3ff-200d-1faf2-1f3fe","🧔🏻‍♂️":"1f9d4-1f3fb-200d-2642-fe0f","🧔🏼‍♂️":"1f9d4-1f3fc-200d-2642-fe0f","🧔🏽‍♂️":"1f9d4-1f3fd-200d-2642-fe0f","🧔🏾‍♂️":"1f9d4-1f3fe-200d-2642-fe0f","🧔🏿‍♂️":"1f9d4-1f3ff-200d-2642-fe0f","🧔🏻‍♀️":"1f9d4-1f3fb-200d-2640-fe0f","🧔🏼‍♀️":"1f9d4-1f3fc-200d-2640-fe0f","🧔🏽‍♀️":"1f9d4-1f3fd-200d-2640-fe0f","🧔🏾‍♀️":"1f9d4-1f3fe-200d-2640-fe0f","🧔🏿‍♀️":"1f9d4-1f3ff-200d-2640-fe0f","👱🏻‍♀️":"1f471-1f3fb-200d-2640-fe0f","👱🏼‍♀️":"1f471-1f3fc-200d-2640-fe0f","👱🏽‍♀️":"1f471-1f3fd-200d-2640-fe0f","👱🏾‍♀️":"1f471-1f3fe-200d-2640-fe0f","👱🏿‍♀️":"1f471-1f3ff-200d-2640-fe0f","👱🏻‍♂️":"1f471-1f3fb-200d-2642-fe0f","👱🏼‍♂️":"1f471-1f3fc-200d-2642-fe0f","👱🏽‍♂️":"1f471-1f3fd-200d-2642-fe0f","👱🏾‍♂️":"1f471-1f3fe-200d-2642-fe0f","👱🏿‍♂️":"1f471-1f3ff-200d-2642-fe0f","🙍🏻‍♂️":"1f64d-1f3fb-200d-2642-fe0f","🙍🏼‍♂️":"1f64d-1f3fc-200d-2642-fe0f","🙍🏽‍♂️":"1f64d-1f3fd-200d-2642-fe0f","🙍🏾‍♂️":"1f64d-1f3fe-200d-2642-fe0f","🙍🏿‍♂️":"1f64d-1f3ff-200d-2642-fe0f","🙍🏻‍♀️":"1f64d-1f3fb-200d-2640-fe0f","🙍🏼‍♀️":"1f64d-1f3fc-200d-2640-fe0f","🙍🏽‍♀️":"1f64d-1f3fd-200d-2640-fe0f","🙍🏾‍♀️":"1f64d-1f3fe-200d-2640-fe0f","🙍🏿‍♀️":"1f64d-1f3ff-200d-2640-fe0f","🙎🏻‍♂️":"1f64e-1f3fb-200d-2642-fe0f","🙎🏼‍♂️":"1f64e-1f3fc-200d-2642-fe0f","🙎🏽‍♂️":"1f64e-1f3fd-200d-2642-fe0f","🙎🏾‍♂️":"1f64e-1f3fe-200d-2642-fe0f","🙎🏿‍♂️":"1f64e-1f3ff-200d-2642-fe0f","🙎🏻‍♀️":"1f64e-1f3fb-200d-2640-fe0f","🙎🏼‍♀️":"1f64e-1f3fc-200d-2640-fe0f","🙎🏽‍♀️":"1f64e-1f3fd-200d-2640-fe0f","🙎🏾‍♀️":"1f64e-1f3fe-200d-2640-fe0f","🙎🏿‍♀️":"1f64e-1f3ff-200d-2640-fe0f","🙅🏻‍♂️":"1f645-1f3fb-200d-2642-fe0f","🙅🏼‍♂️":"1f645-1f3fc-200d-2642-fe0f","🙅🏽‍♂️":"1f645-1f3fd-200d-2642-fe0f","🙅🏾‍♂️":"1f645-1f3fe-200d-2642-fe0f","🙅🏿‍♂️":"1f645-1f3ff-200d-2642-fe0f","🙅🏻‍♀️":"1f645-1f3fb-200d-2640-fe0f","🙅🏼‍♀️":"1f645-1f3fc-200d-2640-fe0f","🙅🏽‍♀️":"1f645-1f3fd-200d-2640-fe0f","🙅🏾‍♀️":"1f645-1f3fe-200d-2640-fe0f","🙅🏿‍♀️":"1f645-1f3ff-200d-2640-fe0f","🙆🏻‍♂️":"1f646-1f3fb-200d-2642-fe0f","🙆🏼‍♂️":"1f646-1f3fc-200d-2642-fe0f","🙆🏽‍♂️":"1f646-1f3fd-200d-2642-fe0f","🙆🏾‍♂️":"1f646-1f3fe-200d-2642-fe0f","🙆🏿‍♂️":"1f646-1f3ff-200d-2642-fe0f","🙆🏻‍♀️":"1f646-1f3fb-200d-2640-fe0f","🙆🏼‍♀️":"1f646-1f3fc-200d-2640-fe0f","🙆🏽‍♀️":"1f646-1f3fd-200d-2640-fe0f","🙆🏾‍♀️":"1f646-1f3fe-200d-2640-fe0f","🙆🏿‍♀️":"1f646-1f3ff-200d-2640-fe0f","💁🏻‍♂️":"1f481-1f3fb-200d-2642-fe0f","💁🏼‍♂️":"1f481-1f3fc-200d-2642-fe0f","💁🏽‍♂️":"1f481-1f3fd-200d-2642-fe0f","💁🏾‍♂️":"1f481-1f3fe-200d-2642-fe0f","💁🏿‍♂️":"1f481-1f3ff-200d-2642-fe0f","💁🏻‍♀️":"1f481-1f3fb-200d-2640-fe0f","💁🏼‍♀️":"1f481-1f3fc-200d-2640-fe0f","💁🏽‍♀️":"1f481-1f3fd-200d-2640-fe0f","💁🏾‍♀️":"1f481-1f3fe-200d-2640-fe0f","💁🏿‍♀️":"1f481-1f3ff-200d-2640-fe0f","🙋🏻‍♂️":"1f64b-1f3fb-200d-2642-fe0f","🙋🏼‍♂️":"1f64b-1f3fc-200d-2642-fe0f","🙋🏽‍♂️":"1f64b-1f3fd-200d-2642-fe0f","🙋🏾‍♂️":"1f64b-1f3fe-200d-2642-fe0f","🙋🏿‍♂️":"1f64b-1f3ff-200d-2642-fe0f","🙋🏻‍♀️":"1f64b-1f3fb-200d-2640-fe0f","🙋🏼‍♀️":"1f64b-1f3fc-200d-2640-fe0f","🙋🏽‍♀️":"1f64b-1f3fd-200d-2640-fe0f","🙋🏾‍♀️":"1f64b-1f3fe-200d-2640-fe0f","🙋🏿‍♀️":"1f64b-1f3ff-200d-2640-fe0f","🧏🏻‍♂️":"1f9cf-1f3fb-200d-2642-fe0f","🧏🏼‍♂️":"1f9cf-1f3fc-200d-2642-fe0f","🧏🏽‍♂️":"1f9cf-1f3fd-200d-2642-fe0f","🧏🏾‍♂️":"1f9cf-1f3fe-200d-2642-fe0f","🧏🏿‍♂️":"1f9cf-1f3ff-200d-2642-fe0f","🧏🏻‍♀️":"1f9cf-1f3fb-200d-2640-fe0f","🧏🏼‍♀️":"1f9cf-1f3fc-200d-2640-fe0f","🧏🏽‍♀️":"1f9cf-1f3fd-200d-2640-fe0f","🧏🏾‍♀️":"1f9cf-1f3fe-200d-2640-fe0f","🧏🏿‍♀️":"1f9cf-1f3ff-200d-2640-fe0f","🙇🏻‍♂️":"1f647-1f3fb-200d-2642-fe0f","🙇🏼‍♂️":"1f647-1f3fc-200d-2642-fe0f","🙇🏽‍♂️":"1f647-1f3fd-200d-2642-fe0f","🙇🏾‍♂️":"1f647-1f3fe-200d-2642-fe0f","🙇🏿‍♂️":"1f647-1f3ff-200d-2642-fe0f","🙇🏻‍♀️":"1f647-1f3fb-200d-2640-fe0f","🙇🏼‍♀️":"1f647-1f3fc-200d-2640-fe0f","🙇🏽‍♀️":"1f647-1f3fd-200d-2640-fe0f","🙇🏾‍♀️":"1f647-1f3fe-200d-2640-fe0f","🙇🏿‍♀️":"1f647-1f3ff-200d-2640-fe0f","🤦🏻‍♂️":"1f926-1f3fb-200d-2642-fe0f","🤦🏼‍♂️":"1f926-1f3fc-200d-2642-fe0f","🤦🏽‍♂️":"1f926-1f3fd-200d-2642-fe0f","🤦🏾‍♂️":"1f926-1f3fe-200d-2642-fe0f","🤦🏿‍♂️":"1f926-1f3ff-200d-2642-fe0f","🤦🏻‍♀️":"1f926-1f3fb-200d-2640-fe0f","🤦🏼‍♀️":"1f926-1f3fc-200d-2640-fe0f","🤦🏽‍♀️":"1f926-1f3fd-200d-2640-fe0f","🤦🏾‍♀️":"1f926-1f3fe-200d-2640-fe0f","🤦🏿‍♀️":"1f926-1f3ff-200d-2640-fe0f","🤷🏻‍♂️":"1f937-1f3fb-200d-2642-fe0f","🤷🏼‍♂️":"1f937-1f3fc-200d-2642-fe0f","🤷🏽‍♂️":"1f937-1f3fd-200d-2642-fe0f","🤷🏾‍♂️":"1f937-1f3fe-200d-2642-fe0f","🤷🏿‍♂️":"1f937-1f3ff-200d-2642-fe0f","🤷🏻‍♀️":"1f937-1f3fb-200d-2640-fe0f","🤷🏼‍♀️":"1f937-1f3fc-200d-2640-fe0f","🤷🏽‍♀️":"1f937-1f3fd-200d-2640-fe0f","🤷🏾‍♀️":"1f937-1f3fe-200d-2640-fe0f","🤷🏿‍♀️":"1f937-1f3ff-200d-2640-fe0f","🧑🏻‍⚕️":"1f9d1-1f3fb-200d-2695-fe0f","🧑🏼‍⚕️":"1f9d1-1f3fc-200d-2695-fe0f","🧑🏽‍⚕️":"1f9d1-1f3fd-200d-2695-fe0f","🧑🏾‍⚕️":"1f9d1-1f3fe-200d-2695-fe0f","🧑🏿‍⚕️":"1f9d1-1f3ff-200d-2695-fe0f","👨🏻‍⚕️":"1f468-1f3fb-200d-2695-fe0f","👨🏼‍⚕️":"1f468-1f3fc-200d-2695-fe0f","👨🏽‍⚕️":"1f468-1f3fd-200d-2695-fe0f","👨🏾‍⚕️":"1f468-1f3fe-200d-2695-fe0f","👨🏿‍⚕️":"1f468-1f3ff-200d-2695-fe0f","👩🏻‍⚕️":"1f469-1f3fb-200d-2695-fe0f","👩🏼‍⚕️":"1f469-1f3fc-200d-2695-fe0f","👩🏽‍⚕️":"1f469-1f3fd-200d-2695-fe0f","👩🏾‍⚕️":"1f469-1f3fe-200d-2695-fe0f","👩🏿‍⚕️":"1f469-1f3ff-200d-2695-fe0f","🧑🏻‍⚖️":"1f9d1-1f3fb-200d-2696-fe0f","🧑🏼‍⚖️":"1f9d1-1f3fc-200d-2696-fe0f","🧑🏽‍⚖️":"1f9d1-1f3fd-200d-2696-fe0f","🧑🏾‍⚖️":"1f9d1-1f3fe-200d-2696-fe0f","🧑🏿‍⚖️":"1f9d1-1f3ff-200d-2696-fe0f","👨🏻‍⚖️":"1f468-1f3fb-200d-2696-fe0f","👨🏼‍⚖️":"1f468-1f3fc-200d-2696-fe0f","👨🏽‍⚖️":"1f468-1f3fd-200d-2696-fe0f","👨🏾‍⚖️":"1f468-1f3fe-200d-2696-fe0f","👨🏿‍⚖️":"1f468-1f3ff-200d-2696-fe0f","👩🏻‍⚖️":"1f469-1f3fb-200d-2696-fe0f","👩🏼‍⚖️":"1f469-1f3fc-200d-2696-fe0f","👩🏽‍⚖️":"1f469-1f3fd-200d-2696-fe0f","👩🏾‍⚖️":"1f469-1f3fe-200d-2696-fe0f","👩🏿‍⚖️":"1f469-1f3ff-200d-2696-fe0f","🧑🏻‍✈️":"1f9d1-1f3fb-200d-2708-fe0f","🧑🏼‍✈️":"1f9d1-1f3fc-200d-2708-fe0f","🧑🏽‍✈️":"1f9d1-1f3fd-200d-2708-fe0f","🧑🏾‍✈️":"1f9d1-1f3fe-200d-2708-fe0f","🧑🏿‍✈️":"1f9d1-1f3ff-200d-2708-fe0f","👨🏻‍✈️":"1f468-1f3fb-200d-2708-fe0f","👨🏼‍✈️":"1f468-1f3fc-200d-2708-fe0f","👨🏽‍✈️":"1f468-1f3fd-200d-2708-fe0f","👨🏾‍✈️":"1f468-1f3fe-200d-2708-fe0f","👨🏿‍✈️":"1f468-1f3ff-200d-2708-fe0f","👩🏻‍✈️":"1f469-1f3fb-200d-2708-fe0f","👩🏼‍✈️":"1f469-1f3fc-200d-2708-fe0f","👩🏽‍✈️":"1f469-1f3fd-200d-2708-fe0f","👩🏾‍✈️":"1f469-1f3fe-200d-2708-fe0f","👩🏿‍✈️":"1f469-1f3ff-200d-2708-fe0f","👮🏻‍♂️":"1f46e-1f3fb-200d-2642-fe0f","👮🏼‍♂️":"1f46e-1f3fc-200d-2642-fe0f","👮🏽‍♂️":"1f46e-1f3fd-200d-2642-fe0f","👮🏾‍♂️":"1f46e-1f3fe-200d-2642-fe0f","👮🏿‍♂️":"1f46e-1f3ff-200d-2642-fe0f","👮🏻‍♀️":"1f46e-1f3fb-200d-2640-fe0f","👮🏼‍♀️":"1f46e-1f3fc-200d-2640-fe0f","👮🏽‍♀️":"1f46e-1f3fd-200d-2640-fe0f","👮🏾‍♀️":"1f46e-1f3fe-200d-2640-fe0f","👮🏿‍♀️":"1f46e-1f3ff-200d-2640-fe0f","🕵️‍♂️":"1f575-fe0f-200d-2642-fe0f","🕵🏻‍♂️":"1f575-1f3fb-200d-2642-fe0f","🕵🏼‍♂️":"1f575-1f3fc-200d-2642-fe0f","🕵🏽‍♂️":"1f575-1f3fd-200d-2642-fe0f","🕵🏾‍♂️":"1f575-1f3fe-200d-2642-fe0f","🕵🏿‍♂️":"1f575-1f3ff-200d-2642-fe0f","🕵️‍♀️":"1f575-fe0f-200d-2640-fe0f","🕵🏻‍♀️":"1f575-1f3fb-200d-2640-fe0f","🕵🏼‍♀️":"1f575-1f3fc-200d-2640-fe0f","🕵🏽‍♀️":"1f575-1f3fd-200d-2640-fe0f","🕵🏾‍♀️":"1f575-1f3fe-200d-2640-fe0f","🕵🏿‍♀️":"1f575-1f3ff-200d-2640-fe0f","💂🏻‍♂️":"1f482-1f3fb-200d-2642-fe0f","💂🏼‍♂️":"1f482-1f3fc-200d-2642-fe0f","💂🏽‍♂️":"1f482-1f3fd-200d-2642-fe0f","💂🏾‍♂️":"1f482-1f3fe-200d-2642-fe0f","💂🏿‍♂️":"1f482-1f3ff-200d-2642-fe0f","💂🏻‍♀️":"1f482-1f3fb-200d-2640-fe0f","💂🏼‍♀️":"1f482-1f3fc-200d-2640-fe0f","💂🏽‍♀️":"1f482-1f3fd-200d-2640-fe0f","💂🏾‍♀️":"1f482-1f3fe-200d-2640-fe0f","💂🏿‍♀️":"1f482-1f3ff-200d-2640-fe0f","👷🏻‍♂️":"1f477-1f3fb-200d-2642-fe0f","👷🏼‍♂️":"1f477-1f3fc-200d-2642-fe0f","👷🏽‍♂️":"1f477-1f3fd-200d-2642-fe0f","👷🏾‍♂️":"1f477-1f3fe-200d-2642-fe0f","👷🏿‍♂️":"1f477-1f3ff-200d-2642-fe0f","👷🏻‍♀️":"1f477-1f3fb-200d-2640-fe0f","👷🏼‍♀️":"1f477-1f3fc-200d-2640-fe0f","👷🏽‍♀️":"1f477-1f3fd-200d-2640-fe0f","👷🏾‍♀️":"1f477-1f3fe-200d-2640-fe0f","👷🏿‍♀️":"1f477-1f3ff-200d-2640-fe0f","👳🏻‍♂️":"1f473-1f3fb-200d-2642-fe0f","👳🏼‍♂️":"1f473-1f3fc-200d-2642-fe0f","👳🏽‍♂️":"1f473-1f3fd-200d-2642-fe0f","👳🏾‍♂️":"1f473-1f3fe-200d-2642-fe0f","👳🏿‍♂️":"1f473-1f3ff-200d-2642-fe0f","👳🏻‍♀️":"1f473-1f3fb-200d-2640-fe0f","👳🏼‍♀️":"1f473-1f3fc-200d-2640-fe0f","👳🏽‍♀️":"1f473-1f3fd-200d-2640-fe0f","👳🏾‍♀️":"1f473-1f3fe-200d-2640-fe0f","👳🏿‍♀️":"1f473-1f3ff-200d-2640-fe0f","🤵🏻‍♂️":"1f935-1f3fb-200d-2642-fe0f","🤵🏼‍♂️":"1f935-1f3fc-200d-2642-fe0f","🤵🏽‍♂️":"1f935-1f3fd-200d-2642-fe0f","🤵🏾‍♂️":"1f935-1f3fe-200d-2642-fe0f","🤵🏿‍♂️":"1f935-1f3ff-200d-2642-fe0f","🤵🏻‍♀️":"1f935-1f3fb-200d-2640-fe0f","🤵🏼‍♀️":"1f935-1f3fc-200d-2640-fe0f","🤵🏽‍♀️":"1f935-1f3fd-200d-2640-fe0f","🤵🏾‍♀️":"1f935-1f3fe-200d-2640-fe0f","🤵🏿‍♀️":"1f935-1f3ff-200d-2640-fe0f","👰🏻‍♂️":"1f470-1f3fb-200d-2642-fe0f","👰🏼‍♂️":"1f470-1f3fc-200d-2642-fe0f","👰🏽‍♂️":"1f470-1f3fd-200d-2642-fe0f","👰🏾‍♂️":"1f470-1f3fe-200d-2642-fe0f","👰🏿‍♂️":"1f470-1f3ff-200d-2642-fe0f","👰🏻‍♀️":"1f470-1f3fb-200d-2640-fe0f","👰🏼‍♀️":"1f470-1f3fc-200d-2640-fe0f","👰🏽‍♀️":"1f470-1f3fd-200d-2640-fe0f","👰🏾‍♀️":"1f470-1f3fe-200d-2640-fe0f","👰🏿‍♀️":"1f470-1f3ff-200d-2640-fe0f","🦸🏻‍♂️":"1f9b8-1f3fb-200d-2642-fe0f","🦸🏼‍♂️":"1f9b8-1f3fc-200d-2642-fe0f","🦸🏽‍♂️":"1f9b8-1f3fd-200d-2642-fe0f","🦸🏾‍♂️":"1f9b8-1f3fe-200d-2642-fe0f","🦸🏿‍♂️":"1f9b8-1f3ff-200d-2642-fe0f","🦸🏻‍♀️":"1f9b8-1f3fb-200d-2640-fe0f","🦸🏼‍♀️":"1f9b8-1f3fc-200d-2640-fe0f","🦸🏽‍♀️":"1f9b8-1f3fd-200d-2640-fe0f","🦸🏾‍♀️":"1f9b8-1f3fe-200d-2640-fe0f","🦸🏿‍♀️":"1f9b8-1f3ff-200d-2640-fe0f","🦹🏻‍♂️":"1f9b9-1f3fb-200d-2642-fe0f","🦹🏼‍♂️":"1f9b9-1f3fc-200d-2642-fe0f","🦹🏽‍♂️":"1f9b9-1f3fd-200d-2642-fe0f","🦹🏾‍♂️":"1f9b9-1f3fe-200d-2642-fe0f","🦹🏿‍♂️":"1f9b9-1f3ff-200d-2642-fe0f","🦹🏻‍♀️":"1f9b9-1f3fb-200d-2640-fe0f","🦹🏼‍♀️":"1f9b9-1f3fc-200d-2640-fe0f","🦹🏽‍♀️":"1f9b9-1f3fd-200d-2640-fe0f","🦹🏾‍♀️":"1f9b9-1f3fe-200d-2640-fe0f","🦹🏿‍♀️":"1f9b9-1f3ff-200d-2640-fe0f","🧙🏻‍♂️":"1f9d9-1f3fb-200d-2642-fe0f","🧙🏼‍♂️":"1f9d9-1f3fc-200d-2642-fe0f","🧙🏽‍♂️":"1f9d9-1f3fd-200d-2642-fe0f","🧙🏾‍♂️":"1f9d9-1f3fe-200d-2642-fe0f","🧙🏿‍♂️":"1f9d9-1f3ff-200d-2642-fe0f","🧙🏻‍♀️":"1f9d9-1f3fb-200d-2640-fe0f","🧙🏼‍♀️":"1f9d9-1f3fc-200d-2640-fe0f","🧙🏽‍♀️":"1f9d9-1f3fd-200d-2640-fe0f","🧙🏾‍♀️":"1f9d9-1f3fe-200d-2640-fe0f","🧙🏿‍♀️":"1f9d9-1f3ff-200d-2640-fe0f","🧚🏻‍♂️":"1f9da-1f3fb-200d-2642-fe0f","🧚🏼‍♂️":"1f9da-1f3fc-200d-2642-fe0f","🧚🏽‍♂️":"1f9da-1f3fd-200d-2642-fe0f","🧚🏾‍♂️":"1f9da-1f3fe-200d-2642-fe0f","🧚🏿‍♂️":"1f9da-1f3ff-200d-2642-fe0f","🧚🏻‍♀️":"1f9da-1f3fb-200d-2640-fe0f","🧚🏼‍♀️":"1f9da-1f3fc-200d-2640-fe0f","🧚🏽‍♀️":"1f9da-1f3fd-200d-2640-fe0f","🧚🏾‍♀️":"1f9da-1f3fe-200d-2640-fe0f","🧚🏿‍♀️":"1f9da-1f3ff-200d-2640-fe0f","🧛🏻‍♂️":"1f9db-1f3fb-200d-2642-fe0f","🧛🏼‍♂️":"1f9db-1f3fc-200d-2642-fe0f","🧛🏽‍♂️":"1f9db-1f3fd-200d-2642-fe0f","🧛🏾‍♂️":"1f9db-1f3fe-200d-2642-fe0f","🧛🏿‍♂️":"1f9db-1f3ff-200d-2642-fe0f","🧛🏻‍♀️":"1f9db-1f3fb-200d-2640-fe0f","🧛🏼‍♀️":"1f9db-1f3fc-200d-2640-fe0f","🧛🏽‍♀️":"1f9db-1f3fd-200d-2640-fe0f","🧛🏾‍♀️":"1f9db-1f3fe-200d-2640-fe0f","🧛🏿‍♀️":"1f9db-1f3ff-200d-2640-fe0f","🧜🏻‍♂️":"1f9dc-1f3fb-200d-2642-fe0f","🧜🏼‍♂️":"1f9dc-1f3fc-200d-2642-fe0f","🧜🏽‍♂️":"1f9dc-1f3fd-200d-2642-fe0f","🧜🏾‍♂️":"1f9dc-1f3fe-200d-2642-fe0f","🧜🏿‍♂️":"1f9dc-1f3ff-200d-2642-fe0f","🧜🏻‍♀️":"1f9dc-1f3fb-200d-2640-fe0f","🧜🏼‍♀️":"1f9dc-1f3fc-200d-2640-fe0f","🧜🏽‍♀️":"1f9dc-1f3fd-200d-2640-fe0f","🧜🏾‍♀️":"1f9dc-1f3fe-200d-2640-fe0f","🧜🏿‍♀️":"1f9dc-1f3ff-200d-2640-fe0f","🧝🏻‍♂️":"1f9dd-1f3fb-200d-2642-fe0f","🧝🏼‍♂️":"1f9dd-1f3fc-200d-2642-fe0f","🧝🏽‍♂️":"1f9dd-1f3fd-200d-2642-fe0f","🧝🏾‍♂️":"1f9dd-1f3fe-200d-2642-fe0f","🧝🏿‍♂️":"1f9dd-1f3ff-200d-2642-fe0f","🧝🏻‍♀️":"1f9dd-1f3fb-200d-2640-fe0f","🧝🏼‍♀️":"1f9dd-1f3fc-200d-2640-fe0f","🧝🏽‍♀️":"1f9dd-1f3fd-200d-2640-fe0f","🧝🏾‍♀️":"1f9dd-1f3fe-200d-2640-fe0f","🧝🏿‍♀️":"1f9dd-1f3ff-200d-2640-fe0f","💆🏻‍♂️":"1f486-1f3fb-200d-2642-fe0f","💆🏼‍♂️":"1f486-1f3fc-200d-2642-fe0f","💆🏽‍♂️":"1f486-1f3fd-200d-2642-fe0f","💆🏾‍♂️":"1f486-1f3fe-200d-2642-fe0f","💆🏿‍♂️":"1f486-1f3ff-200d-2642-fe0f","💆🏻‍♀️":"1f486-1f3fb-200d-2640-fe0f","💆🏼‍♀️":"1f486-1f3fc-200d-2640-fe0f","💆🏽‍♀️":"1f486-1f3fd-200d-2640-fe0f","💆🏾‍♀️":"1f486-1f3fe-200d-2640-fe0f","💆🏿‍♀️":"1f486-1f3ff-200d-2640-fe0f","💇🏻‍♂️":"1f487-1f3fb-200d-2642-fe0f","💇🏼‍♂️":"1f487-1f3fc-200d-2642-fe0f","💇🏽‍♂️":"1f487-1f3fd-200d-2642-fe0f","💇🏾‍♂️":"1f487-1f3fe-200d-2642-fe0f","💇🏿‍♂️":"1f487-1f3ff-200d-2642-fe0f","💇🏻‍♀️":"1f487-1f3fb-200d-2640-fe0f","💇🏼‍♀️":"1f487-1f3fc-200d-2640-fe0f","💇🏽‍♀️":"1f487-1f3fd-200d-2640-fe0f","💇🏾‍♀️":"1f487-1f3fe-200d-2640-fe0f","💇🏿‍♀️":"1f487-1f3ff-200d-2640-fe0f","🚶🏻‍♂️":"1f6b6-1f3fb-200d-2642-fe0f","🚶🏼‍♂️":"1f6b6-1f3fc-200d-2642-fe0f","🚶🏽‍♂️":"1f6b6-1f3fd-200d-2642-fe0f","🚶🏾‍♂️":"1f6b6-1f3fe-200d-2642-fe0f","🚶🏿‍♂️":"1f6b6-1f3ff-200d-2642-fe0f","🚶🏻‍♀️":"1f6b6-1f3fb-200d-2640-fe0f","🚶🏼‍♀️":"1f6b6-1f3fc-200d-2640-fe0f","🚶🏽‍♀️":"1f6b6-1f3fd-200d-2640-fe0f","🚶🏾‍♀️":"1f6b6-1f3fe-200d-2640-fe0f","🚶🏿‍♀️":"1f6b6-1f3ff-200d-2640-fe0f","🧍🏻‍♂️":"1f9cd-1f3fb-200d-2642-fe0f","🧍🏼‍♂️":"1f9cd-1f3fc-200d-2642-fe0f","🧍🏽‍♂️":"1f9cd-1f3fd-200d-2642-fe0f","🧍🏾‍♂️":"1f9cd-1f3fe-200d-2642-fe0f","🧍🏿‍♂️":"1f9cd-1f3ff-200d-2642-fe0f","🧍🏻‍♀️":"1f9cd-1f3fb-200d-2640-fe0f","🧍🏼‍♀️":"1f9cd-1f3fc-200d-2640-fe0f","🧍🏽‍♀️":"1f9cd-1f3fd-200d-2640-fe0f","🧍🏾‍♀️":"1f9cd-1f3fe-200d-2640-fe0f","🧍🏿‍♀️":"1f9cd-1f3ff-200d-2640-fe0f","🧎🏻‍♂️":"1f9ce-1f3fb-200d-2642-fe0f","🧎🏼‍♂️":"1f9ce-1f3fc-200d-2642-fe0f","🧎🏽‍♂️":"1f9ce-1f3fd-200d-2642-fe0f","🧎🏾‍♂️":"1f9ce-1f3fe-200d-2642-fe0f","🧎🏿‍♂️":"1f9ce-1f3ff-200d-2642-fe0f","🧎🏻‍♀️":"1f9ce-1f3fb-200d-2640-fe0f","🧎🏼‍♀️":"1f9ce-1f3fc-200d-2640-fe0f","🧎🏽‍♀️":"1f9ce-1f3fd-200d-2640-fe0f","🧎🏾‍♀️":"1f9ce-1f3fe-200d-2640-fe0f","🧎🏿‍♀️":"1f9ce-1f3ff-200d-2640-fe0f","🏃🏻‍♂️":"1f3c3-1f3fb-200d-2642-fe0f","🏃🏼‍♂️":"1f3c3-1f3fc-200d-2642-fe0f","🏃🏽‍♂️":"1f3c3-1f3fd-200d-2642-fe0f","🏃🏾‍♂️":"1f3c3-1f3fe-200d-2642-fe0f","🏃🏿‍♂️":"1f3c3-1f3ff-200d-2642-fe0f","🏃🏻‍♀️":"1f3c3-1f3fb-200d-2640-fe0f","🏃🏼‍♀️":"1f3c3-1f3fc-200d-2640-fe0f","🏃🏽‍♀️":"1f3c3-1f3fd-200d-2640-fe0f","🏃🏾‍♀️":"1f3c3-1f3fe-200d-2640-fe0f","🏃🏿‍♀️":"1f3c3-1f3ff-200d-2640-fe0f","🧖🏻‍♂️":"1f9d6-1f3fb-200d-2642-fe0f","🧖🏼‍♂️":"1f9d6-1f3fc-200d-2642-fe0f","🧖🏽‍♂️":"1f9d6-1f3fd-200d-2642-fe0f","🧖🏾‍♂️":"1f9d6-1f3fe-200d-2642-fe0f","🧖🏿‍♂️":"1f9d6-1f3ff-200d-2642-fe0f","🧖🏻‍♀️":"1f9d6-1f3fb-200d-2640-fe0f","🧖🏼‍♀️":"1f9d6-1f3fc-200d-2640-fe0f","🧖🏽‍♀️":"1f9d6-1f3fd-200d-2640-fe0f","🧖🏾‍♀️":"1f9d6-1f3fe-200d-2640-fe0f","🧖🏿‍♀️":"1f9d6-1f3ff-200d-2640-fe0f","🧗🏻‍♂️":"1f9d7-1f3fb-200d-2642-fe0f","🧗🏼‍♂️":"1f9d7-1f3fc-200d-2642-fe0f","🧗🏽‍♂️":"1f9d7-1f3fd-200d-2642-fe0f","🧗🏾‍♂️":"1f9d7-1f3fe-200d-2642-fe0f","🧗🏿‍♂️":"1f9d7-1f3ff-200d-2642-fe0f","🧗🏻‍♀️":"1f9d7-1f3fb-200d-2640-fe0f","🧗🏼‍♀️":"1f9d7-1f3fc-200d-2640-fe0f","🧗🏽‍♀️":"1f9d7-1f3fd-200d-2640-fe0f","🧗🏾‍♀️":"1f9d7-1f3fe-200d-2640-fe0f","🧗🏿‍♀️":"1f9d7-1f3ff-200d-2640-fe0f","🏌️‍♂️":"1f3cc-fe0f-200d-2642-fe0f","🏌🏻‍♂️":"1f3cc-1f3fb-200d-2642-fe0f","🏌🏼‍♂️":"1f3cc-1f3fc-200d-2642-fe0f","🏌🏽‍♂️":"1f3cc-1f3fd-200d-2642-fe0f","🏌🏾‍♂️":"1f3cc-1f3fe-200d-2642-fe0f","🏌🏿‍♂️":"1f3cc-1f3ff-200d-2642-fe0f","🏌️‍♀️":"1f3cc-fe0f-200d-2640-fe0f","🏌🏻‍♀️":"1f3cc-1f3fb-200d-2640-fe0f","🏌🏼‍♀️":"1f3cc-1f3fc-200d-2640-fe0f","🏌🏽‍♀️":"1f3cc-1f3fd-200d-2640-fe0f","🏌🏾‍♀️":"1f3cc-1f3fe-200d-2640-fe0f","🏌🏿‍♀️":"1f3cc-1f3ff-200d-2640-fe0f","🏄🏻‍♂️":"1f3c4-1f3fb-200d-2642-fe0f","🏄🏼‍♂️":"1f3c4-1f3fc-200d-2642-fe0f","🏄🏽‍♂️":"1f3c4-1f3fd-200d-2642-fe0f","🏄🏾‍♂️":"1f3c4-1f3fe-200d-2642-fe0f","🏄🏿‍♂️":"1f3c4-1f3ff-200d-2642-fe0f","🏄🏻‍♀️":"1f3c4-1f3fb-200d-2640-fe0f","🏄🏼‍♀️":"1f3c4-1f3fc-200d-2640-fe0f","🏄🏽‍♀️":"1f3c4-1f3fd-200d-2640-fe0f","🏄🏾‍♀️":"1f3c4-1f3fe-200d-2640-fe0f","🏄🏿‍♀️":"1f3c4-1f3ff-200d-2640-fe0f","🚣🏻‍♂️":"1f6a3-1f3fb-200d-2642-fe0f","🚣🏼‍♂️":"1f6a3-1f3fc-200d-2642-fe0f","🚣🏽‍♂️":"1f6a3-1f3fd-200d-2642-fe0f","🚣🏾‍♂️":"1f6a3-1f3fe-200d-2642-fe0f","🚣🏿‍♂️":"1f6a3-1f3ff-200d-2642-fe0f","🚣🏻‍♀️":"1f6a3-1f3fb-200d-2640-fe0f","🚣🏼‍♀️":"1f6a3-1f3fc-200d-2640-fe0f","🚣🏽‍♀️":"1f6a3-1f3fd-200d-2640-fe0f","🚣🏾‍♀️":"1f6a3-1f3fe-200d-2640-fe0f","🚣🏿‍♀️":"1f6a3-1f3ff-200d-2640-fe0f","🏊🏻‍♂️":"1f3ca-1f3fb-200d-2642-fe0f","🏊🏼‍♂️":"1f3ca-1f3fc-200d-2642-fe0f","🏊🏽‍♂️":"1f3ca-1f3fd-200d-2642-fe0f","🏊🏾‍♂️":"1f3ca-1f3fe-200d-2642-fe0f","🏊🏿‍♂️":"1f3ca-1f3ff-200d-2642-fe0f","🏊🏻‍♀️":"1f3ca-1f3fb-200d-2640-fe0f","🏊🏼‍♀️":"1f3ca-1f3fc-200d-2640-fe0f","🏊🏽‍♀️":"1f3ca-1f3fd-200d-2640-fe0f","🏊🏾‍♀️":"1f3ca-1f3fe-200d-2640-fe0f","🏊🏿‍♀️":"1f3ca-1f3ff-200d-2640-fe0f","⛹️‍♂️":"26f9-fe0f-200d-2642-fe0f","⛹🏻‍♂️":"26f9-1f3fb-200d-2642-fe0f","⛹🏼‍♂️":"26f9-1f3fc-200d-2642-fe0f","⛹🏽‍♂️":"26f9-1f3fd-200d-2642-fe0f","⛹🏾‍♂️":"26f9-1f3fe-200d-2642-fe0f","⛹🏿‍♂️":"26f9-1f3ff-200d-2642-fe0f","⛹️‍♀️":"26f9-fe0f-200d-2640-fe0f","⛹🏻‍♀️":"26f9-1f3fb-200d-2640-fe0f","⛹🏼‍♀️":"26f9-1f3fc-200d-2640-fe0f","⛹🏽‍♀️":"26f9-1f3fd-200d-2640-fe0f","⛹🏾‍♀️":"26f9-1f3fe-200d-2640-fe0f","⛹🏿‍♀️":"26f9-1f3ff-200d-2640-fe0f","🏋️‍♂️":"1f3cb-fe0f-200d-2642-fe0f","🏋🏻‍♂️":"1f3cb-1f3fb-200d-2642-fe0f","🏋🏼‍♂️":"1f3cb-1f3fc-200d-2642-fe0f","🏋🏽‍♂️":"1f3cb-1f3fd-200d-2642-fe0f","🏋🏾‍♂️":"1f3cb-1f3fe-200d-2642-fe0f","🏋🏿‍♂️":"1f3cb-1f3ff-200d-2642-fe0f","🏋️‍♀️":"1f3cb-fe0f-200d-2640-fe0f","🏋🏻‍♀️":"1f3cb-1f3fb-200d-2640-fe0f","🏋🏼‍♀️":"1f3cb-1f3fc-200d-2640-fe0f","🏋🏽‍♀️":"1f3cb-1f3fd-200d-2640-fe0f","🏋🏾‍♀️":"1f3cb-1f3fe-200d-2640-fe0f","🏋🏿‍♀️":"1f3cb-1f3ff-200d-2640-fe0f","🚴🏻‍♂️":"1f6b4-1f3fb-200d-2642-fe0f","🚴🏼‍♂️":"1f6b4-1f3fc-200d-2642-fe0f","🚴🏽‍♂️":"1f6b4-1f3fd-200d-2642-fe0f","🚴🏾‍♂️":"1f6b4-1f3fe-200d-2642-fe0f","🚴🏿‍♂️":"1f6b4-1f3ff-200d-2642-fe0f","🚴🏻‍♀️":"1f6b4-1f3fb-200d-2640-fe0f","🚴🏼‍♀️":"1f6b4-1f3fc-200d-2640-fe0f","🚴🏽‍♀️":"1f6b4-1f3fd-200d-2640-fe0f","🚴🏾‍♀️":"1f6b4-1f3fe-200d-2640-fe0f","🚴🏿‍♀️":"1f6b4-1f3ff-200d-2640-fe0f","🚵🏻‍♂️":"1f6b5-1f3fb-200d-2642-fe0f","🚵🏼‍♂️":"1f6b5-1f3fc-200d-2642-fe0f","🚵🏽‍♂️":"1f6b5-1f3fd-200d-2642-fe0f","🚵🏾‍♂️":"1f6b5-1f3fe-200d-2642-fe0f","🚵🏿‍♂️":"1f6b5-1f3ff-200d-2642-fe0f","🚵🏻‍♀️":"1f6b5-1f3fb-200d-2640-fe0f","🚵🏼‍♀️":"1f6b5-1f3fc-200d-2640-fe0f","🚵🏽‍♀️":"1f6b5-1f3fd-200d-2640-fe0f","🚵🏾‍♀️":"1f6b5-1f3fe-200d-2640-fe0f","🚵🏿‍♀️":"1f6b5-1f3ff-200d-2640-fe0f","🤸🏻‍♂️":"1f938-1f3fb-200d-2642-fe0f","🤸🏼‍♂️":"1f938-1f3fc-200d-2642-fe0f","🤸🏽‍♂️":"1f938-1f3fd-200d-2642-fe0f","🤸🏾‍♂️":"1f938-1f3fe-200d-2642-fe0f","🤸🏿‍♂️":"1f938-1f3ff-200d-2642-fe0f","🤸🏻‍♀️":"1f938-1f3fb-200d-2640-fe0f","🤸🏼‍♀️":"1f938-1f3fc-200d-2640-fe0f","🤸🏽‍♀️":"1f938-1f3fd-200d-2640-fe0f","🤸🏾‍♀️":"1f938-1f3fe-200d-2640-fe0f","🤸🏿‍♀️":"1f938-1f3ff-200d-2640-fe0f","🤽🏻‍♂️":"1f93d-1f3fb-200d-2642-fe0f","🤽🏼‍♂️":"1f93d-1f3fc-200d-2642-fe0f","🤽🏽‍♂️":"1f93d-1f3fd-200d-2642-fe0f","🤽🏾‍♂️":"1f93d-1f3fe-200d-2642-fe0f","🤽🏿‍♂️":"1f93d-1f3ff-200d-2642-fe0f","🤽🏻‍♀️":"1f93d-1f3fb-200d-2640-fe0f","🤽🏼‍♀️":"1f93d-1f3fc-200d-2640-fe0f","🤽🏽‍♀️":"1f93d-1f3fd-200d-2640-fe0f","🤽🏾‍♀️":"1f93d-1f3fe-200d-2640-fe0f","🤽🏿‍♀️":"1f93d-1f3ff-200d-2640-fe0f","🤾🏻‍♂️":"1f93e-1f3fb-200d-2642-fe0f","🤾🏼‍♂️":"1f93e-1f3fc-200d-2642-fe0f","🤾🏽‍♂️":"1f93e-1f3fd-200d-2642-fe0f","🤾🏾‍♂️":"1f93e-1f3fe-200d-2642-fe0f","🤾🏿‍♂️":"1f93e-1f3ff-200d-2642-fe0f","🤾🏻‍♀️":"1f93e-1f3fb-200d-2640-fe0f","🤾🏼‍♀️":"1f93e-1f3fc-200d-2640-fe0f","🤾🏽‍♀️":"1f93e-1f3fd-200d-2640-fe0f","🤾🏾‍♀️":"1f93e-1f3fe-200d-2640-fe0f","🤾🏿‍♀️":"1f93e-1f3ff-200d-2640-fe0f","🤹🏻‍♂️":"1f939-1f3fb-200d-2642-fe0f","🤹🏼‍♂️":"1f939-1f3fc-200d-2642-fe0f","🤹🏽‍♂️":"1f939-1f3fd-200d-2642-fe0f","🤹🏾‍♂️":"1f939-1f3fe-200d-2642-fe0f","🤹🏿‍♂️":"1f939-1f3ff-200d-2642-fe0f","🤹🏻‍♀️":"1f939-1f3fb-200d-2640-fe0f","🤹🏼‍♀️":"1f939-1f3fc-200d-2640-fe0f","🤹🏽‍♀️":"1f939-1f3fd-200d-2640-fe0f","🤹🏾‍♀️":"1f939-1f3fe-200d-2640-fe0f","🤹🏿‍♀️":"1f939-1f3ff-200d-2640-fe0f","🧘🏻‍♂️":"1f9d8-1f3fb-200d-2642-fe0f","🧘🏼‍♂️":"1f9d8-1f3fc-200d-2642-fe0f","🧘🏽‍♂️":"1f9d8-1f3fd-200d-2642-fe0f","🧘🏾‍♂️":"1f9d8-1f3fe-200d-2642-fe0f","🧘🏿‍♂️":"1f9d8-1f3ff-200d-2642-fe0f","🧘🏻‍♀️":"1f9d8-1f3fb-200d-2640-fe0f","🧘🏼‍♀️":"1f9d8-1f3fc-200d-2640-fe0f","🧘🏽‍♀️":"1f9d8-1f3fd-200d-2640-fe0f","🧘🏾‍♀️":"1f9d8-1f3fe-200d-2640-fe0f","🧘🏿‍♀️":"1f9d8-1f3ff-200d-2640-fe0f","🧑‍🤝‍🧑":"1f9d1-200d-1f91d-200d-1f9d1","👩‍❤‍👨":"1f469-200d-2764-fe0f-200d-1f468","👨‍❤‍👨":"1f468-200d-2764-fe0f-200d-1f468","👩‍❤‍👩":"1f469-200d-2764-fe0f-200d-1f469","👨‍👩‍👦":"1f468-200d-1f469-200d-1f466","👨‍👩‍👧":"1f468-200d-1f469-200d-1f467","👨‍👨‍👦":"1f468-200d-1f468-200d-1f466","👨‍👨‍👧":"1f468-200d-1f468-200d-1f467","👩‍👩‍👦":"1f469-200d-1f469-200d-1f466","👩‍👩‍👧":"1f469-200d-1f469-200d-1f467","👨‍👦‍👦":"1f468-200d-1f466-200d-1f466","👨‍👧‍👦":"1f468-200d-1f467-200d-1f466","👨‍👧‍👧":"1f468-200d-1f467-200d-1f467","👩‍👦‍👦":"1f469-200d-1f466-200d-1f466","👩‍👧‍👦":"1f469-200d-1f467-200d-1f466","👩‍👧‍👧":"1f469-200d-1f467-200d-1f467","🏳️‍⚧️":"1f3f3-fe0f-200d-26a7-fe0f","👩‍❤️‍👨":"1f469-200d-2764-fe0f-200d-1f468","👨‍❤️‍👨":"1f468-200d-2764-fe0f-200d-1f468","👩‍❤️‍👩":"1f469-200d-2764-fe0f-200d-1f469","🧑🏻‍🤝‍🧑🏻":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fb","🧑🏻‍🤝‍🧑🏼":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fc","🧑🏻‍🤝‍🧑🏽":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fd","🧑🏻‍🤝‍🧑🏾":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fe","🧑🏻‍🤝‍🧑🏿":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3ff","🧑🏼‍🤝‍🧑🏻":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fb","🧑🏼‍🤝‍🧑🏼":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fc","🧑🏼‍🤝‍🧑🏽":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fd","🧑🏼‍🤝‍🧑🏾":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fe","🧑🏼‍🤝‍🧑🏿":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3ff","🧑🏽‍🤝‍🧑🏻":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fb","🧑🏽‍🤝‍🧑🏼":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fc","🧑🏽‍🤝‍🧑🏽":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fd","🧑🏽‍🤝‍🧑🏾":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fe","🧑🏽‍🤝‍🧑🏿":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3ff","🧑🏾‍🤝‍🧑🏻":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fb","🧑🏾‍🤝‍🧑🏼":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fc","🧑🏾‍🤝‍🧑🏽":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fd","🧑🏾‍🤝‍🧑🏾":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fe","🧑🏾‍🤝‍🧑🏿":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3ff","🧑🏿‍🤝‍🧑🏻":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fb","🧑🏿‍🤝‍🧑🏼":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fc","🧑🏿‍🤝‍🧑🏽":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fd","🧑🏿‍🤝‍🧑🏾":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fe","🧑🏿‍🤝‍🧑🏿":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3ff","👩🏻‍🤝‍👩🏼":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3fc","👩🏻‍🤝‍👩🏽":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3fd","👩🏻‍🤝‍👩🏾":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3fe","👩🏻‍🤝‍👩🏿":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3ff","👩🏼‍🤝‍👩🏻":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3fb","👩🏼‍🤝‍👩🏽":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3fd","👩🏼‍🤝‍👩🏾":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3fe","👩🏼‍🤝‍👩🏿":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3ff","👩🏽‍🤝‍👩🏻":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3fb","👩🏽‍🤝‍👩🏼":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3fc","👩🏽‍🤝‍👩🏾":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3fe","👩🏽‍🤝‍👩🏿":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3ff","👩🏾‍🤝‍👩🏻":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3fb","👩🏾‍🤝‍👩🏼":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3fc","👩🏾‍🤝‍👩🏽":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3fd","👩🏾‍🤝‍👩🏿":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3ff","👩🏿‍🤝‍👩🏻":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fb","👩🏿‍🤝‍👩🏼":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fc","👩🏿‍🤝‍👩🏽":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fd","👩🏿‍🤝‍👩🏾":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fe","👩🏻‍🤝‍👨🏼":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3fc","👩🏻‍🤝‍👨🏽":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3fd","👩🏻‍🤝‍👨🏾":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3fe","👩🏻‍🤝‍👨🏿":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3ff","👩🏼‍🤝‍👨🏻":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3fb","👩🏼‍🤝‍👨🏽":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3fd","👩🏼‍🤝‍👨🏾":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3fe","👩🏼‍🤝‍👨🏿":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3ff","👩🏽‍🤝‍👨🏻":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3fb","👩🏽‍🤝‍👨🏼":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3fc","👩🏽‍🤝‍👨🏾":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3fe","👩🏽‍🤝‍👨🏿":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3ff","👩🏾‍🤝‍👨🏻":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3fb","👩🏾‍🤝‍👨🏼":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3fc","👩🏾‍🤝‍👨🏽":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3fd","👩🏾‍🤝‍👨🏿":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3ff","👩🏿‍🤝‍👨🏻":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fb","👩🏿‍🤝‍👨🏼":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fc","👩🏿‍🤝‍👨🏽":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fd","👩🏿‍🤝‍👨🏾":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fe","👨🏻‍🤝‍👨🏼":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3fc","👨🏻‍🤝‍👨🏽":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3fd","👨🏻‍🤝‍👨🏾":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3fe","👨🏻‍🤝‍👨🏿":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3ff","👨🏼‍🤝‍👨🏻":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3fb","👨🏼‍🤝‍👨🏽":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3fd","👨🏼‍🤝‍👨🏾":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3fe","👨🏼‍🤝‍👨🏿":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3ff","👨🏽‍🤝‍👨🏻":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3fb","👨🏽‍🤝‍👨🏼":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3fc","👨🏽‍🤝‍👨🏾":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3fe","👨🏽‍🤝‍👨🏿":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3ff","👨🏾‍🤝‍👨🏻":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3fb","👨🏾‍🤝‍👨🏼":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3fc","👨🏾‍🤝‍👨🏽":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3fd","👨🏾‍🤝‍👨🏿":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3ff","👨🏿‍🤝‍👨🏻":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fb","👨🏿‍🤝‍👨🏼":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fc","👨🏿‍🤝‍👨🏽":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fd","👨🏿‍🤝‍👨🏾":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fe","👩‍❤‍💋‍👨":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f468","👨‍❤‍💋‍👨":"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468","👩‍❤‍💋‍👩":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469","🧑🏻‍❤‍🧑🏼":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏻‍❤‍🧑🏽":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏻‍❤‍🧑🏾":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏻‍❤‍🧑🏿":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏼‍❤‍🧑🏻":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏼‍❤‍🧑🏽":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏼‍❤‍🧑🏾":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏼‍❤‍🧑🏿":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏽‍❤‍🧑🏻":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏽‍❤‍🧑🏼":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏽‍❤‍🧑🏾":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏽‍❤‍🧑🏿":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏾‍❤‍🧑🏻":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏾‍❤‍🧑🏼":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏾‍❤‍🧑🏽":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏾‍❤‍🧑🏿":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏿‍❤‍🧑🏻":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏿‍❤‍🧑🏼":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏿‍❤‍🧑🏽":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏿‍❤‍🧑🏾":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fe","👩🏻‍❤‍👨🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb","👩🏻‍❤‍👨🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc","👩🏻‍❤‍👨🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd","👩🏻‍❤‍👨🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe","👩🏻‍❤‍👨🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff","👩🏼‍❤‍👨🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb","👩🏼‍❤‍👨🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc","👩🏼‍❤‍👨🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd","👩🏼‍❤‍👨🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe","👩🏼‍❤‍👨🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff","👩🏽‍❤‍👨🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb","👩🏽‍❤‍👨🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc","👩🏽‍❤‍👨🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd","👩🏽‍❤‍👨🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe","👩🏽‍❤‍👨🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff","👩🏾‍❤‍👨🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb","👩🏾‍❤‍👨🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc","👩🏾‍❤‍👨🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd","👩🏾‍❤‍👨🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe","👩🏾‍❤‍👨🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff","👩🏿‍❤‍👨🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb","👩🏿‍❤‍👨🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc","👩🏿‍❤‍👨🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd","👩🏿‍❤‍👨🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe","👩🏿‍❤‍👨🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff","👨🏻‍❤‍👨🏻":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb","👨🏻‍❤‍👨🏼":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc","👨🏻‍❤‍👨🏽":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd","👨🏻‍❤‍👨🏾":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe","👨🏻‍❤‍👨🏿":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff","👨🏼‍❤‍👨🏻":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb","👨🏼‍❤‍👨🏼":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc","👨🏼‍❤‍👨🏽":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd","👨🏼‍❤‍👨🏾":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe","👨🏼‍❤‍👨🏿":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff","👨🏽‍❤‍👨🏻":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb","👨🏽‍❤‍👨🏼":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc","👨🏽‍❤‍👨🏽":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd","👨🏽‍❤‍👨🏾":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe","👨🏽‍❤‍👨🏿":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff","👨🏾‍❤‍👨🏻":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb","👨🏾‍❤‍👨🏼":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc","👨🏾‍❤‍👨🏽":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd","👨🏾‍❤‍👨🏾":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe","👨🏾‍❤‍👨🏿":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff","👨🏿‍❤‍👨🏻":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb","👨🏿‍❤‍👨🏼":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc","👨🏿‍❤‍👨🏽":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd","👨🏿‍❤‍👨🏾":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe","👨🏿‍❤‍👨🏿":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff","👩🏻‍❤‍👩🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fb","👩🏻‍❤‍👩🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fc","👩🏻‍❤‍👩🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fd","👩🏻‍❤‍👩🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fe","👩🏻‍❤‍👩🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3ff","👩🏼‍❤‍👩🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fb","👩🏼‍❤‍👩🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fc","👩🏼‍❤‍👩🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fd","👩🏼‍❤‍👩🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fe","👩🏼‍❤‍👩🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3ff","👩🏽‍❤‍👩🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fb","👩🏽‍❤‍👩🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fc","👩🏽‍❤‍👩🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fd","👩🏽‍❤‍👩🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fe","👩🏽‍❤‍👩🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3ff","👩🏾‍❤‍👩🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fb","👩🏾‍❤‍👩🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fc","👩🏾‍❤‍👩🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fd","👩🏾‍❤‍👩🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fe","👩🏾‍❤‍👩🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3ff","👩🏿‍❤‍👩🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fb","👩🏿‍❤‍👩🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fc","👩🏿‍❤‍👩🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fd","👩🏿‍❤‍👩🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fe","👩🏿‍❤‍👩🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3ff","👨‍👩‍👧‍👦":"1f468-200d-1f469-200d-1f467-200d-1f466","👨‍👩‍👦‍👦":"1f468-200d-1f469-200d-1f466-200d-1f466","👨‍👩‍👧‍👧":"1f468-200d-1f469-200d-1f467-200d-1f467","👨‍👨‍👧‍👦":"1f468-200d-1f468-200d-1f467-200d-1f466","👨‍👨‍👦‍👦":"1f468-200d-1f468-200d-1f466-200d-1f466","👨‍👨‍👧‍👧":"1f468-200d-1f468-200d-1f467-200d-1f467","👩‍👩‍👧‍👦":"1f469-200d-1f469-200d-1f467-200d-1f466","👩‍👩‍👦‍👦":"1f469-200d-1f469-200d-1f466-200d-1f466","👩‍👩‍👧‍👧":"1f469-200d-1f469-200d-1f467-200d-1f467","🏴󠁧󠁢󠁥󠁮󠁧󠁿":"1f3f4-e0067-e0062-e0065-e006e-e0067-e007f","🏴󠁧󠁢󠁳󠁣󠁴󠁿":"1f3f4-e0067-e0062-e0073-e0063-e0074-e007f","🏴󠁧󠁢󠁷󠁬󠁳󠁿":"1f3f4-e0067-e0062-e0077-e006c-e0073-e007f","👩‍❤️‍💋‍👨":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f468","👨‍❤️‍💋‍👨":"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468","👩‍❤️‍💋‍👩":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469","🧑🏻‍❤️‍🧑🏼":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏻‍❤️‍🧑🏽":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏻‍❤️‍🧑🏾":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏻‍❤️‍🧑🏿":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏼‍❤️‍🧑🏻":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏼‍❤️‍🧑🏽":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏼‍❤️‍🧑🏾":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏼‍❤️‍🧑🏿":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏽‍❤️‍🧑🏻":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏽‍❤️‍🧑🏼":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏽‍❤️‍🧑🏾":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏽‍❤️‍🧑🏿":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏾‍❤️‍🧑🏻":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏾‍❤️‍🧑🏼":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏾‍❤️‍🧑🏽":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏾‍❤️‍🧑🏿":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏿‍❤️‍🧑🏻":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏿‍❤️‍🧑🏼":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏿‍❤️‍🧑🏽":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏿‍❤️‍🧑🏾":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fe","👩🏻‍❤️‍👨🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb","👩🏻‍❤️‍👨🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc","👩🏻‍❤️‍👨🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd","👩🏻‍❤️‍👨🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe","👩🏻‍❤️‍👨🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff","👩🏼‍❤️‍👨🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb","👩🏼‍❤️‍👨🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc","👩🏼‍❤️‍👨🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd","👩🏼‍❤️‍👨🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe","👩🏼‍❤️‍👨🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff","👩🏽‍❤️‍👨🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb","👩🏽‍❤️‍👨🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc","👩🏽‍❤️‍👨🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd","👩🏽‍❤️‍👨🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe","👩🏽‍❤️‍👨🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff","👩🏾‍❤️‍👨🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb","👩🏾‍❤️‍👨🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc","👩🏾‍❤️‍👨🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd","👩🏾‍❤️‍👨🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe","👩🏾‍❤️‍👨🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff","👩🏿‍❤️‍👨🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb","👩🏿‍❤️‍👨🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc","👩🏿‍❤️‍👨🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd","👩🏿‍❤️‍👨🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe","👩🏿‍❤️‍👨🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff","👨🏻‍❤️‍👨🏻":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb","👨🏻‍❤️‍👨🏼":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc","👨🏻‍❤️‍👨🏽":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd","👨🏻‍❤️‍👨🏾":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe","👨🏻‍❤️‍👨🏿":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff","👨🏼‍❤️‍👨🏻":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb","👨🏼‍❤️‍👨🏼":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc","👨🏼‍❤️‍👨🏽":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd","👨🏼‍❤️‍👨🏾":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe","👨🏼‍❤️‍👨🏿":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff","👨🏽‍❤️‍👨🏻":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb","👨🏽‍❤️‍👨🏼":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc","👨🏽‍❤️‍👨🏽":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd","👨🏽‍❤️‍👨🏾":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe","👨🏽‍❤️‍👨🏿":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff","👨🏾‍❤️‍👨🏻":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb","👨🏾‍❤️‍👨🏼":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc","👨🏾‍❤️‍👨🏽":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd","👨🏾‍❤️‍👨🏾":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe","👨🏾‍❤️‍👨🏿":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff","👨🏿‍❤️‍👨🏻":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb","👨🏿‍❤️‍👨🏼":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc","👨🏿‍❤️‍👨🏽":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd","👨🏿‍❤️‍👨🏾":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe","👨🏿‍❤️‍👨🏿":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff","👩🏻‍❤️‍👩🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fb","👩🏻‍❤️‍👩🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fc","👩🏻‍❤️‍👩🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fd","👩🏻‍❤️‍👩🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fe","👩🏻‍❤️‍👩🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3ff","👩🏼‍❤️‍👩🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fb","👩🏼‍❤️‍👩🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fc","👩🏼‍❤️‍👩🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fd","👩🏼‍❤️‍👩🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fe","👩🏼‍❤️‍👩🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3ff","👩🏽‍❤️‍👩🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fb","👩🏽‍❤️‍👩🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fc","👩🏽‍❤️‍👩🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fd","👩🏽‍❤️‍👩🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fe","👩🏽‍❤️‍👩🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3ff","👩🏾‍❤️‍👩🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fb","👩🏾‍❤️‍👩🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fc","👩🏾‍❤️‍👩🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fd","👩🏾‍❤️‍👩🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fe","👩🏾‍❤️‍👩🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3ff","👩🏿‍❤️‍👩🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fb","👩🏿‍❤️‍👩🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fc","👩🏿‍❤️‍👩🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fd","👩🏿‍❤️‍👩🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fe","👩🏿‍❤️‍👩🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3ff","🧑🏻‍❤‍💋‍🧑🏼":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏻‍❤‍💋‍🧑🏽":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏻‍❤‍💋‍🧑🏾":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏻‍❤‍💋‍🧑🏿":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏼‍❤‍💋‍🧑🏻":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏼‍❤‍💋‍🧑🏽":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏼‍❤‍💋‍🧑🏾":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏼‍❤‍💋‍🧑🏿":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏽‍❤‍💋‍🧑🏻":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏽‍❤‍💋‍🧑🏼":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏽‍❤‍💋‍🧑🏾":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏽‍❤‍💋‍🧑🏿":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏾‍❤‍💋‍🧑🏻":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏾‍❤‍💋‍🧑🏼":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏾‍❤‍💋‍🧑🏽":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏾‍❤‍💋‍🧑🏿":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏿‍❤‍💋‍🧑🏻":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏿‍❤‍💋‍🧑🏼":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏿‍❤‍💋‍🧑🏽":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏿‍❤‍💋‍🧑🏾":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","👩🏻‍❤‍💋‍👨🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏻‍❤‍💋‍👨🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏻‍❤‍💋‍👨🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏻‍❤‍💋‍👨🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏻‍❤‍💋‍👨🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏼‍❤‍💋‍👨🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏼‍❤‍💋‍👨🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏼‍❤‍💋‍👨🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏼‍❤‍💋‍👨🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏼‍❤‍💋‍👨🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏽‍❤‍💋‍👨🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏽‍❤‍💋‍👨🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏽‍❤‍💋‍👨🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏽‍❤‍💋‍👨🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏽‍❤‍💋‍👨🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏾‍❤‍💋‍👨🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏾‍❤‍💋‍👨🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏾‍❤‍💋‍👨🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏾‍❤‍💋‍👨🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏾‍❤‍💋‍👨🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏿‍❤‍💋‍👨🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏿‍❤‍💋‍👨🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏿‍❤‍💋‍👨🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏿‍❤‍💋‍👨🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏿‍❤‍💋‍👨🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏻‍❤‍💋‍👨🏻":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏻‍❤‍💋‍👨🏼":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏻‍❤‍💋‍👨🏽":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏻‍❤‍💋‍👨🏾":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏻‍❤‍💋‍👨🏿":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏼‍❤‍💋‍👨🏻":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏼‍❤‍💋‍👨🏼":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏼‍❤‍💋‍👨🏽":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏼‍❤‍💋‍👨🏾":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏼‍❤‍💋‍👨🏿":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏽‍❤‍💋‍👨🏻":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏽‍❤‍💋‍👨🏼":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏽‍❤‍💋‍👨🏽":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏽‍❤‍💋‍👨🏾":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏽‍❤‍💋‍👨🏿":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏾‍❤‍💋‍👨🏻":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏾‍❤‍💋‍👨🏼":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏾‍❤‍💋‍👨🏽":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏾‍❤‍💋‍👨🏾":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏾‍❤‍💋‍👨🏿":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏿‍❤‍💋‍👨🏻":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏿‍❤‍💋‍👨🏼":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏿‍❤‍💋‍👨🏽":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏿‍❤‍💋‍👨🏾":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏿‍❤‍💋‍👨🏿":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏻‍❤‍💋‍👩🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏻‍❤‍💋‍👩🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏻‍❤‍💋‍👩🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏻‍❤‍💋‍👩🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏻‍❤‍💋‍👩🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏼‍❤‍💋‍👩🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏼‍❤‍💋‍👩🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏼‍❤‍💋‍👩🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏼‍❤‍💋‍👩🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏼‍❤‍💋‍👩🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏽‍❤‍💋‍👩🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏽‍❤‍💋‍👩🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏽‍❤‍💋‍👩🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏽‍❤‍💋‍👩🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏽‍❤‍💋‍👩🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏾‍❤‍💋‍👩🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏾‍❤‍💋‍👩🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏾‍❤‍💋‍👩🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏾‍❤‍💋‍👩🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏾‍❤‍💋‍👩🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏿‍❤‍💋‍👩🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏿‍❤‍💋‍👩🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏿‍❤‍💋‍👩🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏿‍❤‍💋‍👩🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏿‍❤‍💋‍👩🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","🧑🏻‍❤️‍💋‍🧑🏼":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏻‍❤️‍💋‍🧑🏽":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏻‍❤️‍💋‍🧑🏾":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏻‍❤️‍💋‍🧑🏿":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏼‍❤️‍💋‍🧑🏻":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏼‍❤️‍💋‍🧑🏽":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏼‍❤️‍💋‍🧑🏾":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏼‍❤️‍💋‍🧑🏿":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏽‍❤️‍💋‍🧑🏻":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏽‍❤️‍💋‍🧑🏼":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏽‍❤️‍💋‍🧑🏾":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏽‍❤️‍💋‍🧑🏿":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏾‍❤️‍💋‍🧑🏻":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏾‍❤️‍💋‍🧑🏼":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏾‍❤️‍💋‍🧑🏽":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏾‍❤️‍💋‍🧑🏿":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏿‍❤️‍💋‍🧑🏻":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏿‍❤️‍💋‍🧑🏼":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏿‍❤️‍💋‍🧑🏽":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏿‍❤️‍💋‍🧑🏾":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","👩🏻‍❤️‍💋‍👨🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏻‍❤️‍💋‍👨🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏻‍❤️‍💋‍👨🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏻‍❤️‍💋‍👨🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏻‍❤️‍💋‍👨🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏼‍❤️‍💋‍👨🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏼‍❤️‍💋‍👨🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏼‍❤️‍💋‍👨🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏼‍❤️‍💋‍👨🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏼‍❤️‍💋‍👨🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏽‍❤️‍💋‍👨🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏽‍❤️‍💋‍👨🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏽‍❤️‍💋‍👨🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏽‍❤️‍💋‍👨🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏽‍❤️‍💋‍👨🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏾‍❤️‍💋‍👨🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏾‍❤️‍💋‍👨🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏾‍❤️‍💋‍👨🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏾‍❤️‍💋‍👨🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏾‍❤️‍💋‍👨🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏿‍❤️‍💋‍👨🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏿‍❤️‍💋‍👨🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏿‍❤️‍💋‍👨🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏿‍❤️‍💋‍👨🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏿‍❤️‍💋‍👨🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏻‍❤️‍💋‍👨🏻":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏻‍❤️‍💋‍👨🏼":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏻‍❤️‍💋‍👨🏽":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏻‍❤️‍💋‍👨🏾":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏻‍❤️‍💋‍👨🏿":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏼‍❤️‍💋‍👨🏻":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏼‍❤️‍💋‍👨🏼":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏼‍❤️‍💋‍👨🏽":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏼‍❤️‍💋‍👨🏾":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏼‍❤️‍💋‍👨🏿":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏽‍❤️‍💋‍👨🏻":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏽‍❤️‍💋‍👨🏼":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏽‍❤️‍💋‍👨🏽":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏽‍❤️‍💋‍👨🏾":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏽‍❤️‍💋‍👨🏿":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏾‍❤️‍💋‍👨🏻":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏾‍❤️‍💋‍👨🏼":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏾‍❤️‍💋‍👨🏽":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏾‍❤️‍💋‍👨🏾":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏾‍❤️‍💋‍👨🏿":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏿‍❤️‍💋‍👨🏻":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏿‍❤️‍💋‍👨🏼":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏿‍❤️‍💋‍👨🏽":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏿‍❤️‍💋‍👨🏾":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏿‍❤️‍💋‍👨🏿":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏻‍❤️‍💋‍👩🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏻‍❤️‍💋‍👩🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏻‍❤️‍💋‍👩🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏻‍❤️‍💋‍👩🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏻‍❤️‍💋‍👩🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏼‍❤️‍💋‍👩🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏼‍❤️‍💋‍👩🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏼‍❤️‍💋‍👩🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏼‍❤️‍💋‍👩🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏼‍❤️‍💋‍👩🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏽‍❤️‍💋‍👩🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏽‍❤️‍💋‍👩🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏽‍❤️‍💋‍👩🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏽‍❤️‍💋‍👩🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏽‍❤️‍💋‍👩🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏾‍❤️‍💋‍👩🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏾‍❤️‍💋‍👩🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏾‍❤️‍💋‍👩🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏾‍❤️‍💋‍👩🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏾‍❤️‍💋‍👩🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏿‍❤️‍💋‍👩🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏿‍❤️‍💋‍👩🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏿‍❤️‍💋‍👩🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏿‍❤️‍💋‍👩🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏿‍❤️‍💋‍👩🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff"} \ No newline at end of file diff --git a/lib/tasks/emojis.rake b/lib/tasks/emojis.rake index d9db79940..473aee9cc 100644 --- a/lib/tasks/emojis.rake +++ b/lib/tasks/emojis.rake @@ -45,7 +45,7 @@ end namespace :emojis do desc 'Generate a unicode to filename mapping' task :generate do - source = 'http://www.unicode.org/Public/emoji/13.1/emoji-test.txt' + source = 'http://www.unicode.org/Public/emoji/14.0/emoji-test.txt' codes = [] dest = Rails.root.join('app', 'javascript', 'mastodon', 'features', 'emoji', 'emoji_map.json') @@ -69,7 +69,7 @@ namespace :emojis do end end - existence_maps = grouped_codes.map { |c| c.index_with { |cc| File.exist?(Rails.root.join('public', 'emoji', codepoints_to_filename(cc) + '.svg')) } } + existence_maps = grouped_codes.map { |c| c.index_with { |cc| File.exist?(Rails.root.join('public', 'emoji', "#{codepoints_to_filename(cc)}.svg")) } } map = {} existence_maps.each do |group| diff --git a/public/emoji/1f1e7-1f1ea.svg b/public/emoji/1f1e7-1f1ea.svg index e95619434..86704269a 100644 --- a/public/emoji/1f1e7-1f1ea.svg +++ b/public/emoji/1f1e7-1f1ea.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f1ee-1f1f3.svg b/public/emoji/1f1ee-1f1f3.svg index 7af1dafe4..55f97e6fb 100644 --- a/public/emoji/1f1ee-1f1f3.svg +++ b/public/emoji/1f1ee-1f1f3.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f3f3-fe0f-200d-1f308.svg b/public/emoji/1f3f3-fe0f-200d-1f308.svg index 1969e4971..b1f9bbff2 100644 --- a/public/emoji/1f3f3-fe0f-200d-1f308.svg +++ b/public/emoji/1f3f3-fe0f-200d-1f308.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f50b.svg b/public/emoji/1f50b.svg index 66d420fc3..fd0913c63 100644 --- a/public/emoji/1f50b.svg +++ b/public/emoji/1f50b.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f6dd.svg b/public/emoji/1f6dd.svg new file mode 100755 index 000000000..3be3aa227 --- /dev/null +++ b/public/emoji/1f6dd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6de.svg b/public/emoji/1f6de.svg new file mode 100755 index 000000000..aed6c490d --- /dev/null +++ b/public/emoji/1f6de.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6df.svg b/public/emoji/1f6df.svg new file mode 100755 index 000000000..b56811ca9 --- /dev/null +++ b/public/emoji/1f6df.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f7f0.svg b/public/emoji/1f7f0.svg new file mode 100755 index 000000000..5844f61c5 --- /dev/null +++ b/public/emoji/1f7f0.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f91d-1f3fb.svg b/public/emoji/1f91d-1f3fb.svg new file mode 100755 index 000000000..64a75c6fe --- /dev/null +++ b/public/emoji/1f91d-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f91d-1f3fc.svg b/public/emoji/1f91d-1f3fc.svg new file mode 100755 index 000000000..0ecf3b905 --- /dev/null +++ b/public/emoji/1f91d-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f91d-1f3fd.svg b/public/emoji/1f91d-1f3fd.svg new file mode 100755 index 000000000..eaed0eff2 --- /dev/null +++ b/public/emoji/1f91d-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f91d-1f3fe.svg b/public/emoji/1f91d-1f3fe.svg new file mode 100755 index 000000000..6fc64a981 --- /dev/null +++ b/public/emoji/1f91d-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f91d-1f3ff.svg b/public/emoji/1f91d-1f3ff.svg new file mode 100755 index 000000000..adf55f4f7 --- /dev/null +++ b/public/emoji/1f91d-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f91d.svg b/public/emoji/1f91d.svg index 3d797a089..1deae92e9 100644 --- a/public/emoji/1f91d.svg +++ b/public/emoji/1f91d.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f921.svg b/public/emoji/1f921.svg index 6d16a6624..6ca668dca 100644 --- a/public/emoji/1f921.svg +++ b/public/emoji/1f921.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/public/emoji/1f979.svg b/public/emoji/1f979.svg new file mode 100755 index 000000000..1944a5463 --- /dev/null +++ b/public/emoji/1f979.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9cc.svg b/public/emoji/1f9cc.svg new file mode 100755 index 000000000..ebc08baf0 --- /dev/null +++ b/public/emoji/1f9cc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fa7b.svg b/public/emoji/1fa7b.svg new file mode 100755 index 000000000..fd81ad8ec --- /dev/null +++ b/public/emoji/1fa7b.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fa7c.svg b/public/emoji/1fa7c.svg new file mode 100755 index 000000000..895af1d5b --- /dev/null +++ b/public/emoji/1fa7c.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faa9.svg b/public/emoji/1faa9.svg new file mode 100755 index 000000000..e0243c0b0 --- /dev/null +++ b/public/emoji/1faa9.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faaa.svg b/public/emoji/1faaa.svg new file mode 100755 index 000000000..391e3d127 --- /dev/null +++ b/public/emoji/1faaa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faab.svg b/public/emoji/1faab.svg new file mode 100755 index 000000000..a7b3b9e7b --- /dev/null +++ b/public/emoji/1faab.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faac.svg b/public/emoji/1faac.svg new file mode 100755 index 000000000..8a2186021 --- /dev/null +++ b/public/emoji/1faac.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fab7.svg b/public/emoji/1fab7.svg new file mode 100755 index 000000000..b32a58fd1 --- /dev/null +++ b/public/emoji/1fab7.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fab8.svg b/public/emoji/1fab8.svg new file mode 100755 index 000000000..2e458cff2 --- /dev/null +++ b/public/emoji/1fab8.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fab9.svg b/public/emoji/1fab9.svg new file mode 100755 index 000000000..d27cf192f --- /dev/null +++ b/public/emoji/1fab9.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faba.svg b/public/emoji/1faba.svg new file mode 100755 index 000000000..5386cbdc4 --- /dev/null +++ b/public/emoji/1faba.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac3-1f3fb.svg b/public/emoji/1fac3-1f3fb.svg new file mode 100755 index 000000000..73ac22b02 --- /dev/null +++ b/public/emoji/1fac3-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac3-1f3fc.svg b/public/emoji/1fac3-1f3fc.svg new file mode 100755 index 000000000..7f19822be --- /dev/null +++ b/public/emoji/1fac3-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac3-1f3fd.svg b/public/emoji/1fac3-1f3fd.svg new file mode 100755 index 000000000..96037961e --- /dev/null +++ b/public/emoji/1fac3-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac3-1f3fe.svg b/public/emoji/1fac3-1f3fe.svg new file mode 100755 index 000000000..63f1152dc --- /dev/null +++ b/public/emoji/1fac3-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac3-1f3ff.svg b/public/emoji/1fac3-1f3ff.svg new file mode 100755 index 000000000..3312217c9 --- /dev/null +++ b/public/emoji/1fac3-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac3.svg b/public/emoji/1fac3.svg new file mode 100755 index 000000000..2c0f2846c --- /dev/null +++ b/public/emoji/1fac3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac4-1f3fb.svg b/public/emoji/1fac4-1f3fb.svg new file mode 100755 index 000000000..1d6fe80d7 --- /dev/null +++ b/public/emoji/1fac4-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac4-1f3fc.svg b/public/emoji/1fac4-1f3fc.svg new file mode 100755 index 000000000..b87bd055a --- /dev/null +++ b/public/emoji/1fac4-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac4-1f3fd.svg b/public/emoji/1fac4-1f3fd.svg new file mode 100755 index 000000000..96e58f1a0 --- /dev/null +++ b/public/emoji/1fac4-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac4-1f3fe.svg b/public/emoji/1fac4-1f3fe.svg new file mode 100755 index 000000000..40f8869cd --- /dev/null +++ b/public/emoji/1fac4-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac4-1f3ff.svg b/public/emoji/1fac4-1f3ff.svg new file mode 100755 index 000000000..8565a9a00 --- /dev/null +++ b/public/emoji/1fac4-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac4.svg b/public/emoji/1fac4.svg new file mode 100755 index 000000000..0d06947d0 --- /dev/null +++ b/public/emoji/1fac4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac5-1f3fb.svg b/public/emoji/1fac5-1f3fb.svg new file mode 100755 index 000000000..70f44e343 --- /dev/null +++ b/public/emoji/1fac5-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac5-1f3fc.svg b/public/emoji/1fac5-1f3fc.svg new file mode 100755 index 000000000..c98b8c4d5 --- /dev/null +++ b/public/emoji/1fac5-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac5-1f3fd.svg b/public/emoji/1fac5-1f3fd.svg new file mode 100755 index 000000000..096506f2f --- /dev/null +++ b/public/emoji/1fac5-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac5-1f3fe.svg b/public/emoji/1fac5-1f3fe.svg new file mode 100755 index 000000000..44adb0159 --- /dev/null +++ b/public/emoji/1fac5-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac5-1f3ff.svg b/public/emoji/1fac5-1f3ff.svg new file mode 100755 index 000000000..c546423a2 --- /dev/null +++ b/public/emoji/1fac5-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac5.svg b/public/emoji/1fac5.svg new file mode 100755 index 000000000..b7b246ba0 --- /dev/null +++ b/public/emoji/1fac5.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fad7.svg b/public/emoji/1fad7.svg new file mode 100755 index 000000000..4a842421f --- /dev/null +++ b/public/emoji/1fad7.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fad8.svg b/public/emoji/1fad8.svg new file mode 100755 index 000000000..5e9325d6d --- /dev/null +++ b/public/emoji/1fad8.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fad9.svg b/public/emoji/1fad9.svg new file mode 100755 index 000000000..b0ebb69ce --- /dev/null +++ b/public/emoji/1fad9.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fae0.svg b/public/emoji/1fae0.svg new file mode 100755 index 000000000..cd010b8f1 --- /dev/null +++ b/public/emoji/1fae0.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fae1.svg b/public/emoji/1fae1.svg new file mode 100755 index 000000000..64d58b58e --- /dev/null +++ b/public/emoji/1fae1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fae2.svg b/public/emoji/1fae2.svg new file mode 100755 index 000000000..87b65d5f3 --- /dev/null +++ b/public/emoji/1fae2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fae3.svg b/public/emoji/1fae3.svg new file mode 100755 index 000000000..b293f7113 --- /dev/null +++ b/public/emoji/1fae3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fae4.svg b/public/emoji/1fae4.svg new file mode 100755 index 000000000..f8d8098f4 --- /dev/null +++ b/public/emoji/1fae4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fae5.svg b/public/emoji/1fae5.svg new file mode 100755 index 000000000..7d02e20eb --- /dev/null +++ b/public/emoji/1fae5.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fae6.svg b/public/emoji/1fae6.svg new file mode 100755 index 000000000..d8537a3ef --- /dev/null +++ b/public/emoji/1fae6.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fae7.svg b/public/emoji/1fae7.svg new file mode 100755 index 000000000..665f7975b --- /dev/null +++ b/public/emoji/1fae7.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf0-1f3fb.svg b/public/emoji/1faf0-1f3fb.svg new file mode 100755 index 000000000..6abb81eab --- /dev/null +++ b/public/emoji/1faf0-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf0-1f3fc.svg b/public/emoji/1faf0-1f3fc.svg new file mode 100755 index 000000000..1bd6d7f55 --- /dev/null +++ b/public/emoji/1faf0-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf0-1f3fd.svg b/public/emoji/1faf0-1f3fd.svg new file mode 100755 index 000000000..44054f514 --- /dev/null +++ b/public/emoji/1faf0-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf0-1f3fe.svg b/public/emoji/1faf0-1f3fe.svg new file mode 100755 index 000000000..4b7c89595 --- /dev/null +++ b/public/emoji/1faf0-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf0-1f3ff.svg b/public/emoji/1faf0-1f3ff.svg new file mode 100755 index 000000000..6d9cc6f1e --- /dev/null +++ b/public/emoji/1faf0-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf0.svg b/public/emoji/1faf0.svg new file mode 100755 index 000000000..da013e152 --- /dev/null +++ b/public/emoji/1faf0.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fb-200d-1faf2-1f3fc.svg b/public/emoji/1faf1-1f3fb-200d-1faf2-1f3fc.svg new file mode 100755 index 000000000..7b199adb1 --- /dev/null +++ b/public/emoji/1faf1-1f3fb-200d-1faf2-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fb-200d-1faf2-1f3fd.svg b/public/emoji/1faf1-1f3fb-200d-1faf2-1f3fd.svg new file mode 100755 index 000000000..4e6ab1f78 --- /dev/null +++ b/public/emoji/1faf1-1f3fb-200d-1faf2-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fb-200d-1faf2-1f3fe.svg b/public/emoji/1faf1-1f3fb-200d-1faf2-1f3fe.svg new file mode 100755 index 000000000..29cda9efd --- /dev/null +++ b/public/emoji/1faf1-1f3fb-200d-1faf2-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fb-200d-1faf2-1f3ff.svg b/public/emoji/1faf1-1f3fb-200d-1faf2-1f3ff.svg new file mode 100755 index 000000000..2a5a38207 --- /dev/null +++ b/public/emoji/1faf1-1f3fb-200d-1faf2-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fb.svg b/public/emoji/1faf1-1f3fb.svg new file mode 100755 index 000000000..4d993c86f --- /dev/null +++ b/public/emoji/1faf1-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fc-200d-1faf2-1f3fb.svg b/public/emoji/1faf1-1f3fc-200d-1faf2-1f3fb.svg new file mode 100755 index 000000000..13d060dc1 --- /dev/null +++ b/public/emoji/1faf1-1f3fc-200d-1faf2-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fc-200d-1faf2-1f3fd.svg b/public/emoji/1faf1-1f3fc-200d-1faf2-1f3fd.svg new file mode 100755 index 000000000..25c64084d --- /dev/null +++ b/public/emoji/1faf1-1f3fc-200d-1faf2-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fc-200d-1faf2-1f3fe.svg b/public/emoji/1faf1-1f3fc-200d-1faf2-1f3fe.svg new file mode 100755 index 000000000..81748049c --- /dev/null +++ b/public/emoji/1faf1-1f3fc-200d-1faf2-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fc-200d-1faf2-1f3ff.svg b/public/emoji/1faf1-1f3fc-200d-1faf2-1f3ff.svg new file mode 100755 index 000000000..382551541 --- /dev/null +++ b/public/emoji/1faf1-1f3fc-200d-1faf2-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fc.svg b/public/emoji/1faf1-1f3fc.svg new file mode 100755 index 000000000..da90e94a0 --- /dev/null +++ b/public/emoji/1faf1-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fd-200d-1faf2-1f3fb.svg b/public/emoji/1faf1-1f3fd-200d-1faf2-1f3fb.svg new file mode 100755 index 000000000..a8c8faf53 --- /dev/null +++ b/public/emoji/1faf1-1f3fd-200d-1faf2-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fd-200d-1faf2-1f3fc.svg b/public/emoji/1faf1-1f3fd-200d-1faf2-1f3fc.svg new file mode 100755 index 000000000..885113027 --- /dev/null +++ b/public/emoji/1faf1-1f3fd-200d-1faf2-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fd-200d-1faf2-1f3fe.svg b/public/emoji/1faf1-1f3fd-200d-1faf2-1f3fe.svg new file mode 100755 index 000000000..84d470f62 --- /dev/null +++ b/public/emoji/1faf1-1f3fd-200d-1faf2-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fd-200d-1faf2-1f3ff.svg b/public/emoji/1faf1-1f3fd-200d-1faf2-1f3ff.svg new file mode 100755 index 000000000..f01890850 --- /dev/null +++ b/public/emoji/1faf1-1f3fd-200d-1faf2-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fd.svg b/public/emoji/1faf1-1f3fd.svg new file mode 100755 index 000000000..af89e2715 --- /dev/null +++ b/public/emoji/1faf1-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fe-200d-1faf2-1f3fb.svg b/public/emoji/1faf1-1f3fe-200d-1faf2-1f3fb.svg new file mode 100755 index 000000000..32b88522c --- /dev/null +++ b/public/emoji/1faf1-1f3fe-200d-1faf2-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fe-200d-1faf2-1f3fc.svg b/public/emoji/1faf1-1f3fe-200d-1faf2-1f3fc.svg new file mode 100755 index 000000000..fe34fd5ce --- /dev/null +++ b/public/emoji/1faf1-1f3fe-200d-1faf2-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fe-200d-1faf2-1f3fd.svg b/public/emoji/1faf1-1f3fe-200d-1faf2-1f3fd.svg new file mode 100755 index 000000000..ede918e73 --- /dev/null +++ b/public/emoji/1faf1-1f3fe-200d-1faf2-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fe-200d-1faf2-1f3ff.svg b/public/emoji/1faf1-1f3fe-200d-1faf2-1f3ff.svg new file mode 100755 index 000000000..9a3005c0d --- /dev/null +++ b/public/emoji/1faf1-1f3fe-200d-1faf2-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fe.svg b/public/emoji/1faf1-1f3fe.svg new file mode 100755 index 000000000..c92d7880d --- /dev/null +++ b/public/emoji/1faf1-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3ff-200d-1faf2-1f3fb.svg b/public/emoji/1faf1-1f3ff-200d-1faf2-1f3fb.svg new file mode 100755 index 000000000..5925547ed --- /dev/null +++ b/public/emoji/1faf1-1f3ff-200d-1faf2-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3ff-200d-1faf2-1f3fc.svg b/public/emoji/1faf1-1f3ff-200d-1faf2-1f3fc.svg new file mode 100755 index 000000000..19220a1cf --- /dev/null +++ b/public/emoji/1faf1-1f3ff-200d-1faf2-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3ff-200d-1faf2-1f3fd.svg b/public/emoji/1faf1-1f3ff-200d-1faf2-1f3fd.svg new file mode 100755 index 000000000..ead51cfc2 --- /dev/null +++ b/public/emoji/1faf1-1f3ff-200d-1faf2-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3ff-200d-1faf2-1f3fe.svg b/public/emoji/1faf1-1f3ff-200d-1faf2-1f3fe.svg new file mode 100755 index 000000000..1d724bdee --- /dev/null +++ b/public/emoji/1faf1-1f3ff-200d-1faf2-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3ff.svg b/public/emoji/1faf1-1f3ff.svg new file mode 100755 index 000000000..8b9b9c222 --- /dev/null +++ b/public/emoji/1faf1-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1.svg b/public/emoji/1faf1.svg new file mode 100755 index 000000000..7acb4bc14 --- /dev/null +++ b/public/emoji/1faf1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf2-1f3fb.svg b/public/emoji/1faf2-1f3fb.svg new file mode 100755 index 000000000..0f7778d8c --- /dev/null +++ b/public/emoji/1faf2-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf2-1f3fc.svg b/public/emoji/1faf2-1f3fc.svg new file mode 100755 index 000000000..5354ab53f --- /dev/null +++ b/public/emoji/1faf2-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf2-1f3fd.svg b/public/emoji/1faf2-1f3fd.svg new file mode 100755 index 000000000..9110dec10 --- /dev/null +++ b/public/emoji/1faf2-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf2-1f3fe.svg b/public/emoji/1faf2-1f3fe.svg new file mode 100755 index 000000000..450225028 --- /dev/null +++ b/public/emoji/1faf2-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf2-1f3ff.svg b/public/emoji/1faf2-1f3ff.svg new file mode 100755 index 000000000..c464d267f --- /dev/null +++ b/public/emoji/1faf2-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf2.svg b/public/emoji/1faf2.svg new file mode 100755 index 000000000..bb8afacdb --- /dev/null +++ b/public/emoji/1faf2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf3-1f3fb.svg b/public/emoji/1faf3-1f3fb.svg new file mode 100755 index 000000000..b55301503 --- /dev/null +++ b/public/emoji/1faf3-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf3-1f3fc.svg b/public/emoji/1faf3-1f3fc.svg new file mode 100755 index 000000000..a71212a97 --- /dev/null +++ b/public/emoji/1faf3-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf3-1f3fd.svg b/public/emoji/1faf3-1f3fd.svg new file mode 100755 index 000000000..fa8521ad9 --- /dev/null +++ b/public/emoji/1faf3-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf3-1f3fe.svg b/public/emoji/1faf3-1f3fe.svg new file mode 100755 index 000000000..081e709cf --- /dev/null +++ b/public/emoji/1faf3-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf3-1f3ff.svg b/public/emoji/1faf3-1f3ff.svg new file mode 100755 index 000000000..0d11e8a71 --- /dev/null +++ b/public/emoji/1faf3-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf3.svg b/public/emoji/1faf3.svg new file mode 100755 index 000000000..a8e6f74b5 --- /dev/null +++ b/public/emoji/1faf3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf4-1f3fb.svg b/public/emoji/1faf4-1f3fb.svg new file mode 100755 index 000000000..70de846d4 --- /dev/null +++ b/public/emoji/1faf4-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf4-1f3fc.svg b/public/emoji/1faf4-1f3fc.svg new file mode 100755 index 000000000..e6f8a740d --- /dev/null +++ b/public/emoji/1faf4-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf4-1f3fd.svg b/public/emoji/1faf4-1f3fd.svg new file mode 100755 index 000000000..61fd7264f --- /dev/null +++ b/public/emoji/1faf4-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf4-1f3fe.svg b/public/emoji/1faf4-1f3fe.svg new file mode 100755 index 000000000..973909cb5 --- /dev/null +++ b/public/emoji/1faf4-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf4-1f3ff.svg b/public/emoji/1faf4-1f3ff.svg new file mode 100755 index 000000000..cd06aaae0 --- /dev/null +++ b/public/emoji/1faf4-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf4.svg b/public/emoji/1faf4.svg new file mode 100755 index 000000000..168c190e2 --- /dev/null +++ b/public/emoji/1faf4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf5-1f3fb.svg b/public/emoji/1faf5-1f3fb.svg new file mode 100755 index 000000000..a4ce272fa --- /dev/null +++ b/public/emoji/1faf5-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf5-1f3fc.svg b/public/emoji/1faf5-1f3fc.svg new file mode 100755 index 000000000..b0f5878fa --- /dev/null +++ b/public/emoji/1faf5-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf5-1f3fd.svg b/public/emoji/1faf5-1f3fd.svg new file mode 100755 index 000000000..279c50730 --- /dev/null +++ b/public/emoji/1faf5-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf5-1f3fe.svg b/public/emoji/1faf5-1f3fe.svg new file mode 100755 index 000000000..44d0668b5 --- /dev/null +++ b/public/emoji/1faf5-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf5-1f3ff.svg b/public/emoji/1faf5-1f3ff.svg new file mode 100755 index 000000000..bb47a26b4 --- /dev/null +++ b/public/emoji/1faf5-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf5.svg b/public/emoji/1faf5.svg new file mode 100755 index 000000000..307a2d2e5 --- /dev/null +++ b/public/emoji/1faf5.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf6-1f3fb.svg b/public/emoji/1faf6-1f3fb.svg new file mode 100755 index 000000000..45c5bd7ad --- /dev/null +++ b/public/emoji/1faf6-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf6-1f3fc.svg b/public/emoji/1faf6-1f3fc.svg new file mode 100755 index 000000000..903b267ef --- /dev/null +++ b/public/emoji/1faf6-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf6-1f3fd.svg b/public/emoji/1faf6-1f3fd.svg new file mode 100755 index 000000000..34393e567 --- /dev/null +++ b/public/emoji/1faf6-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf6-1f3fe.svg b/public/emoji/1faf6-1f3fe.svg new file mode 100755 index 000000000..84f28447d --- /dev/null +++ b/public/emoji/1faf6-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf6-1f3ff.svg b/public/emoji/1faf6-1f3ff.svg new file mode 100755 index 000000000..7998c9b3a --- /dev/null +++ b/public/emoji/1faf6-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf6.svg b/public/emoji/1faf6.svg new file mode 100755 index 000000000..2dc07b47f --- /dev/null +++ b/public/emoji/1faf6.svg @@ -0,0 +1 @@ + \ No newline at end of file From c2170991c7889b8f6c6434f416cb0a8450db25a1 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 4 Nov 2022 16:31:44 +0100 Subject: [PATCH 641/652] Fix reblogs being discarded after the reblogged status (#19731) --- app/controllers/api/v1/statuses_controller.rb | 2 +- app/lib/status_reach_finder.rb | 2 +- app/models/admin/status_batch_action.rb | 2 +- app/models/status.rb | 6 ++++++ app/services/account_statuses_cleanup_service.rb | 2 +- app/services/remove_status_service.rb | 4 ++-- 6 files changed, 12 insertions(+), 6 deletions(-) diff --git a/app/controllers/api/v1/statuses_controller.rb b/app/controllers/api/v1/statuses_controller.rb index 2e239d48b..676ec2a79 100644 --- a/app/controllers/api/v1/statuses_controller.rb +++ b/app/controllers/api/v1/statuses_controller.rb @@ -77,7 +77,7 @@ class Api::V1::StatusesController < Api::BaseController @status = Status.where(account: current_account).find(params[:id]) authorize @status, :destroy? - @status.discard + @status.discard_with_reblogs StatusPin.find_by(status: @status)&.destroy @status.account.statuses_count = @status.account.statuses_count - 1 json = render_to_body json: @status, serializer: REST::StatusSerializer, source_requested: true diff --git a/app/lib/status_reach_finder.rb b/app/lib/status_reach_finder.rb index 98e502bb6..ccf1e9e3a 100644 --- a/app/lib/status_reach_finder.rb +++ b/app/lib/status_reach_finder.rb @@ -55,7 +55,7 @@ class StatusReachFinder # Beware: Reblogs can be created without the author having had access to the status def reblogs_account_ids - @status.reblogs.pluck(:account_id) if distributable? || unsafe? + @status.reblogs.rewhere(deleted_at: [nil, @status.deleted_at]).pluck(:account_id) if distributable? || unsafe? end # Beware: Favourites can be created without the author having had access to the status diff --git a/app/models/admin/status_batch_action.rb b/app/models/admin/status_batch_action.rb index 0ec4fef82..0f019b854 100644 --- a/app/models/admin/status_batch_action.rb +++ b/app/models/admin/status_batch_action.rb @@ -44,7 +44,7 @@ class Admin::StatusBatchAction ApplicationRecord.transaction do statuses.each do |status| - status.discard + status.discard_with_reblogs log_action(:destroy, status) end diff --git a/app/models/status.rb b/app/models/status.rb index 4805abfea..8bdb5e8db 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -440,6 +440,12 @@ class Status < ApplicationRecord im end + def discard_with_reblogs + discard_time = Time.current + Status.unscoped.where(reblog_of_id: id, deleted_at: [nil, deleted_at]).in_batches.update_all(deleted_at: discard_time) unless reblog? + update_attribute(:deleted_at, discard_time) + end + private def update_status_stat!(attrs) diff --git a/app/services/account_statuses_cleanup_service.rb b/app/services/account_statuses_cleanup_service.rb index 3918b5ba4..96bc3db7d 100644 --- a/app/services/account_statuses_cleanup_service.rb +++ b/app/services/account_statuses_cleanup_service.rb @@ -14,7 +14,7 @@ class AccountStatusesCleanupService < BaseService last_deleted = nil account_policy.statuses_to_delete(budget, cutoff_id, account_policy.last_inspected).reorder(nil).find_each(order: :asc) do |status| - status.discard + status.discard_with_reblogs RemovalWorker.perform_async(status.id, { 'redraft' => false }) num_deleted += 1 last_deleted = status.id diff --git a/app/services/remove_status_service.rb b/app/services/remove_status_service.rb index f9fdea2cb..37d2dabae 100644 --- a/app/services/remove_status_service.rb +++ b/app/services/remove_status_service.rb @@ -19,7 +19,7 @@ class RemoveStatusService < BaseService @options = options with_lock("distribute:#{@status.id}") do - @status.discard + @status.discard_with_reblogs StatusPin.find_by(status: @status)&.destroy @@ -102,7 +102,7 @@ class RemoveStatusService < BaseService # because once original status is gone, reblogs will disappear # without us being able to do all the fancy stuff - @status.reblogs.includes(:account).reorder(nil).find_each do |reblog| + @status.reblogs.rewhere(deleted_at: [nil, @status.deleted_at]).includes(:account).reorder(nil).find_each do |reblog| RemoveStatusService.new.call(reblog, original_removed: true) end end From 0165449e3a062238511489a8b23f3facd98258b6 Mon Sep 17 00:00:00 2001 From: Sunny Ripert Date: Fri, 4 Nov 2022 17:08:08 +0100 Subject: [PATCH 642/652] A11y: Explicit
    element around compose area (#19742) --- app/javascript/mastodon/components/button.js | 2 ++ .../features/compose/components/compose_form.js | 12 +++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/app/javascript/mastodon/components/button.js b/app/javascript/mastodon/components/button.js index 85b2d78ca..bcb855c7c 100644 --- a/app/javascript/mastodon/components/button.js +++ b/app/javascript/mastodon/components/button.js @@ -6,6 +6,7 @@ export default class Button extends React.PureComponent { static propTypes = { text: PropTypes.node, + type: PropTypes.string, onClick: PropTypes.func, disabled: PropTypes.bool, block: PropTypes.bool, @@ -42,6 +43,7 @@ export default class Button extends React.PureComponent { onClick={this.handleClick} ref={this.setRef} title={this.props.title} + type={this.props.type} > {this.props.text || this.props.children} diff --git a/app/javascript/mastodon/features/compose/components/compose_form.js b/app/javascript/mastodon/features/compose/components/compose_form.js index cd10d0eda..9f5c3b314 100644 --- a/app/javascript/mastodon/features/compose/components/compose_form.js +++ b/app/javascript/mastodon/features/compose/components/compose_form.js @@ -217,7 +217,7 @@ class ComposeForm extends ImmutablePureComponent { } return ( -
    + @@ -279,10 +279,16 @@ class ComposeForm extends ImmutablePureComponent {
    -
    -
    +
    ); } From 03b991de6c5874f3e7d1b6f6ff70b853b8daf639 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 4 Nov 2022 19:33:16 +0100 Subject: [PATCH 643/652] Fix various issues with store hydration (#19746) - Improve tests - Fix possible crash when application of a reblogged post isn't set - Fix discrepancies around favourited and reblogged attributes - Fix discrepancies around pinned attribute - Fix polls not being hydrated --- app/lib/status_cache_hydrator.rb | 22 +++-- spec/lib/status_cache_hydrator_spec.rb | 119 ++++++++++++++++++------- 2 files changed, 105 insertions(+), 36 deletions(-) diff --git a/app/lib/status_cache_hydrator.rb b/app/lib/status_cache_hydrator.rb index 01e92b385..552419fff 100644 --- a/app/lib/status_cache_hydrator.rb +++ b/app/lib/status_cache_hydrator.rb @@ -16,23 +16,35 @@ class StatusCacheHydrator # We take advantage of the fact that some relationships can only occur with an original status, not # the reblog that wraps it, so we can assume that some values are always false if payload[:reblog] - payload[:favourited] = false - payload[:reblogged] = false payload[:muted] = false payload[:bookmarked] = false - payload[:pinned] = false + payload[:pinned] = false if @status.account_id == account_id payload[:filtered] = CustomFilter.apply_cached_filters(CustomFilter.cached_filters_for(@status.reblog_of_id), @status.reblog).map { |filter| ActiveModelSerializers::SerializableResource.new(filter, serializer: REST::FilterResultSerializer).as_json } # If the reblogged status is being delivered to the author who disabled the display of the application # used to create the status, we need to hydrate it here too - payload[:reblog][:application] = ActiveModelSerializers::SerializableResource.new(@status.reblog.application, serializer: REST::StatusSerializer::ApplicationSerializer).as_json if payload[:reblog][:application].nil? && @status.reblog.account_id == account_id + payload[:reblog][:application] = ActiveModelSerializers::SerializableResource.new(@status.reblog.application, serializer: REST::StatusSerializer::ApplicationSerializer).as_json if payload[:reblog][:application].nil? && @status.reblog.account_id == account_id && @status.reblog.application_id.present? payload[:reblog][:favourited] = Favourite.where(account_id: account_id, status_id: @status.reblog_of_id).exists? payload[:reblog][:reblogged] = Status.where(account_id: account_id, reblog_of_id: @status.reblog_of_id).exists? payload[:reblog][:muted] = ConversationMute.where(account_id: account_id, conversation_id: @status.reblog.conversation_id).exists? payload[:reblog][:bookmarked] = Bookmark.where(account_id: account_id, status_id: @status.reblog_of_id).exists? - payload[:reblog][:pinned] = StatusPin.where(account_id: account_id, status_id: @status.reblog_of_id).exists? + payload[:reblog][:pinned] = StatusPin.where(account_id: account_id, status_id: @status.reblog_of_id).exists? if @status.reblog.account_id == account_id payload[:reblog][:filtered] = payload[:filtered] + + if payload[:reblog][:poll] + if @status.reblog.account_id == account_id + payload[:reblog][:poll][:voted] = true + payload[:reblog][:poll][:own_votes] = [] + else + own_votes = @status.reblog.poll.votes.where(account_id: account_id).pluck(:choice) + payload[:reblog][:poll][:voted] = !own_votes.empty? + payload[:reblog][:poll][:own_votes] = own_votes + end + end + + payload[:favourited] = payload[:reblog][:favourited] + payload[:reblogged] = payload[:reblog][:reblogged] else payload[:favourited] = Favourite.where(account_id: account_id, status_id: @status.id).exists? payload[:reblogged] = Status.where(account_id: account_id, reblog_of_id: @status.id).exists? diff --git a/spec/lib/status_cache_hydrator_spec.rb b/spec/lib/status_cache_hydrator_spec.rb index ad9940a85..873d58464 100644 --- a/spec/lib/status_cache_hydrator_spec.rb +++ b/spec/lib/status_cache_hydrator_spec.rb @@ -7,48 +7,105 @@ describe StatusCacheHydrator do let(:account) { Fabricate(:account) } describe '#hydrate' do - subject { described_class.new(status).hydrate(account.id) } - let(:compare_to_hash) { InlineRenderer.render(status, account, :status) } - context 'when cache is warm' do - before do - Rails.cache.write("fan-out/#{status.id}", InlineRenderer.render(status, nil, :status)) + shared_examples 'shared behavior' do + context 'when handling a new status' do + it 'renders the same attributes as a full render' do + expect(subject).to include(compare_to_hash) + end end - it 'renders the same attributes as a full render' do - expect(subject).to include(compare_to_hash) + context 'when handling a reblog' do + let(:reblog) { Fabricate(:status) } + let(:status) { Fabricate(:status, reblog: reblog) } + + context 'that has been favourited' do + before do + FavouriteService.new.call(account, reblog) + end + + it 'renders the same attributes as a full render' do + expect(subject).to include(compare_to_hash) + end + end + + context 'that has been reblogged' do + before do + ReblogService.new.call(account, reblog) + end + + it 'renders the same attributes as a full render' do + expect(subject).to include(compare_to_hash) + end + end + + context 'that has been pinned' do + let(:reblog) { Fabricate(:status, account: account) } + + before do + StatusPin.create!(account: account, status: reblog) + end + + it 'renders the same attributes as a full render' do + expect(subject).to include(compare_to_hash) + end + end + + context 'that has been followed tags' do + let(:followed_tag) { Fabricate(:tag) } + + before do + reblog.tags << Fabricate(:tag) + reblog.tags << followed_tag + TagFollow.create!(tag: followed_tag, account: account, rate_limit: false) + end + + it 'renders the same attributes as a full render' do + expect(subject).to include(compare_to_hash) + end + end + + context 'that has a poll authored by the user' do + let(:poll) { Fabricate(:poll, account: account) } + let(:reblog) { Fabricate(:status, poll: poll, account: account) } + + it 'renders the same attributes as a full render' do + expect(subject).to include(compare_to_hash) + end + end + + context 'that has been voted in' do + let(:poll) { Fabricate(:poll, options: %w(Yellow Blue)) } + let(:reblog) { Fabricate(:status, poll: poll) } + + before do + VoteService.new.call(account, poll, [0]) + end + + it 'renders the same attributes as a full render' do + expect(subject).to include(compare_to_hash) + end + end end end + context 'when cache is warm' do + subject do + Rails.cache.write("fan-out/#{status.id}", InlineRenderer.render(status, nil, :status)) + described_class.new(status).hydrate(account.id) + end + + it_behaves_like 'shared behavior' + end + context 'when cache is cold' do - before do + subject do Rails.cache.delete("fan-out/#{status.id}") + described_class.new(status).hydrate(account.id) end - it 'renders the same attributes as a full render' do - expect(subject).to include(compare_to_hash) - end - end - - context 'when account has favourited status' do - before do - FavouriteService.new.call(account, status) - end - - it 'renders the same attributes as a full render' do - expect(subject).to include(compare_to_hash) - end - end - - context 'when account has reblogged status' do - before do - ReblogService.new.call(account, status) - end - - it 'renders the same attributes as a full render' do - expect(subject).to include(compare_to_hash) - end + it_behaves_like 'shared behavior' end end end From bb89f83cc06b9665205c62db21163f2ce43d97ed Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 4 Nov 2022 20:01:33 +0100 Subject: [PATCH 644/652] Fix additional issues with status cache hydration (#19747) * Spare one SQL query when hydrating polls * Improve tests * Fix more discrepancies * Fix possible crash when the status has no application set --- app/lib/status_cache_hydrator.rb | 13 +++++++++---- spec/lib/status_cache_hydrator_spec.rb | 26 +++++++++++++++++++------- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/app/lib/status_cache_hydrator.rb b/app/lib/status_cache_hydrator.rb index 552419fff..ffe813ee9 100644 --- a/app/lib/status_cache_hydrator.rb +++ b/app/lib/status_cache_hydrator.rb @@ -11,7 +11,7 @@ class StatusCacheHydrator # If we're delivering to the author who disabled the display of the application used to create the # status, we need to hydrate the application, since it was not rendered for the basic payload - payload[:application] = ActiveModelSerializers::SerializableResource.new(@status.application, serializer: REST::StatusSerializer::ApplicationSerializer).as_json if payload[:application].nil? && @status.account_id == account_id + payload[:application] = ActiveModelSerializers::SerializableResource.new(@status.application, serializer: REST::StatusSerializer::ApplicationSerializer).as_json if payload[:application].nil? && @status.account_id == account_id && @status.application.present? # We take advantage of the fact that some relationships can only occur with an original status, not # the reblog that wraps it, so we can assume that some values are always false @@ -23,7 +23,7 @@ class StatusCacheHydrator # If the reblogged status is being delivered to the author who disabled the display of the application # used to create the status, we need to hydrate it here too - payload[:reblog][:application] = ActiveModelSerializers::SerializableResource.new(@status.reblog.application, serializer: REST::StatusSerializer::ApplicationSerializer).as_json if payload[:reblog][:application].nil? && @status.reblog.account_id == account_id && @status.reblog.application_id.present? + payload[:reblog][:application] = ActiveModelSerializers::SerializableResource.new(@status.reblog.application, serializer: REST::StatusSerializer::ApplicationSerializer).as_json if payload[:reblog][:application].nil? && @status.reblog.account_id == account_id && @status.reblog.application.present? payload[:reblog][:favourited] = Favourite.where(account_id: account_id, status_id: @status.reblog_of_id).exists? payload[:reblog][:reblogged] = Status.where(account_id: account_id, reblog_of_id: @status.reblog_of_id).exists? @@ -37,7 +37,7 @@ class StatusCacheHydrator payload[:reblog][:poll][:voted] = true payload[:reblog][:poll][:own_votes] = [] else - own_votes = @status.reblog.poll.votes.where(account_id: account_id).pluck(:choice) + own_votes = PollVote.where(poll_id: @status.reblog.poll_id, account_id: account_id).pluck(:choice) payload[:reblog][:poll][:voted] = !own_votes.empty? payload[:reblog][:poll][:own_votes] = own_votes end @@ -50,8 +50,13 @@ class StatusCacheHydrator payload[:reblogged] = Status.where(account_id: account_id, reblog_of_id: @status.id).exists? payload[:muted] = ConversationMute.where(account_id: account_id, conversation_id: @status.conversation_id).exists? payload[:bookmarked] = Bookmark.where(account_id: account_id, status_id: @status.id).exists? - payload[:pinned] = StatusPin.where(account_id: account_id, status_id: @status.id).exists? + payload[:pinned] = StatusPin.where(account_id: account_id, status_id: @status.id).exists? if @status.account_id == account_id payload[:filtered] = CustomFilter.apply_cached_filters(CustomFilter.cached_filters_for(@status.id), @status).map { |filter| ActiveModelSerializers::SerializableResource.new(filter, serializer: REST::FilterResultSerializer).as_json } + + if payload[:poll] + payload[:poll][:voted] = @status.account_id == account_id + payload[:poll][:own_votes] = [] + end end payload diff --git a/spec/lib/status_cache_hydrator_spec.rb b/spec/lib/status_cache_hydrator_spec.rb index 873d58464..c9d8d0fe1 100644 --- a/spec/lib/status_cache_hydrator_spec.rb +++ b/spec/lib/status_cache_hydrator_spec.rb @@ -11,8 +11,20 @@ describe StatusCacheHydrator do shared_examples 'shared behavior' do context 'when handling a new status' do + let(:poll) { Fabricate(:poll) } + let(:status) { Fabricate(:status, poll: poll) } + it 'renders the same attributes as a full render' do - expect(subject).to include(compare_to_hash) + expect(subject).to eql(compare_to_hash) + end + end + + context 'when handling a new status with own poll' do + let(:poll) { Fabricate(:poll, account: account) } + let(:status) { Fabricate(:status, poll: poll, account: account) } + + it 'renders the same attributes as a full render' do + expect(subject).to eql(compare_to_hash) end end @@ -26,7 +38,7 @@ describe StatusCacheHydrator do end it 'renders the same attributes as a full render' do - expect(subject).to include(compare_to_hash) + expect(subject).to eql(compare_to_hash) end end @@ -36,7 +48,7 @@ describe StatusCacheHydrator do end it 'renders the same attributes as a full render' do - expect(subject).to include(compare_to_hash) + expect(subject).to eql(compare_to_hash) end end @@ -48,7 +60,7 @@ describe StatusCacheHydrator do end it 'renders the same attributes as a full render' do - expect(subject).to include(compare_to_hash) + expect(subject).to eql(compare_to_hash) end end @@ -62,7 +74,7 @@ describe StatusCacheHydrator do end it 'renders the same attributes as a full render' do - expect(subject).to include(compare_to_hash) + expect(subject).to eql(compare_to_hash) end end @@ -71,7 +83,7 @@ describe StatusCacheHydrator do let(:reblog) { Fabricate(:status, poll: poll, account: account) } it 'renders the same attributes as a full render' do - expect(subject).to include(compare_to_hash) + expect(subject).to eql(compare_to_hash) end end @@ -84,7 +96,7 @@ describe StatusCacheHydrator do end it 'renders the same attributes as a full render' do - expect(subject).to include(compare_to_hash) + expect(subject).to eql(compare_to_hash) end end end From c4b92b1aee27a813e24395d43e265cc02a8fe9a3 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 5 Nov 2022 00:09:52 +0100 Subject: [PATCH 645/652] Fix n+1 query during status removal (#19753) --- app/helpers/application_helper.rb | 2 +- app/services/remove_status_service.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 9cc34cab6..8706f5c2a 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -203,7 +203,7 @@ module ApplicationHelper permit_visibilities.shift(permit_visibilities.index(default_privacy) + 1) if default_privacy.present? state_params[:visibility] = params[:visibility] if permit_visibilities.include? params[:visibility] - if user_signed_in? + if user_signed_in? && current_user.functional? state_params[:settings] = state_params[:settings].merge(Web::Setting.find_by(user: current_user)&.data || {}) state_params[:push_subscription] = current_account.user.web_push_subscription(current_session) state_params[:current_account] = current_account diff --git a/app/services/remove_status_service.rb b/app/services/remove_status_service.rb index 37d2dabae..45cfb75f4 100644 --- a/app/services/remove_status_service.rb +++ b/app/services/remove_status_service.rb @@ -57,13 +57,13 @@ class RemoveStatusService < BaseService end def remove_from_followers - @account.followers_for_local_distribution.reorder(nil).find_each do |follower| + @account.followers_for_local_distribution.includes(:user).reorder(nil).find_each do |follower| FeedManager.instance.unpush_from_home(follower, @status) end end def remove_from_lists - @account.lists_for_local_distribution.select(:id, :account_id).reorder(nil).find_each do |list| + @account.lists_for_local_distribution.select(:id, :account_id).includes(account: :user).reorder(nil).find_each do |list| FeedManager.instance.unpush_from_list(list, @status) end end From 1e7ea50f4ccadee0a25db0d79840497bd0175589 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 5 Nov 2022 11:54:26 +0100 Subject: [PATCH 646/652] New Crowdin updates (#19627) * New translations en.json (Chinese Simplified) * New translations en.json (Chinese Traditional) * New translations en.json (Urdu (Pakistan)) * New translations en.json (Vietnamese) * New translations en.json (Galician) * New translations en.json (Armenian) * New translations en.yml (Irish) * New translations en.json (Thai) * New translations en.json (Sinhala) * New translations en.json (Bulgarian) * New translations en.json (Ido) * New translations en.json (German) * New translations en.json (Tamil) * New translations en.json (Esperanto) * New translations en.json (Czech) * New translations en.json (Dutch) * New translations en.json (Albanian) * New translations en.json (Japanese) * New translations en.json (Indonesian) * New translations en.json (Romanian) * New translations en.json (Irish) * New translations en.json (French) * New translations en.json (Spanish) * New translations en.json (Afrikaans) * New translations en.json (Arabic) * New translations en.json (Catalan) * New translations en.json (Danish) * New translations en.json (Greek) * New translations en.json (Frisian) * New translations en.json (Basque) * New translations en.json (Finnish) * New translations en.json (Icelandic) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Corsican) * New translations en.json (Kannada) * New translations en.json (Scottish Gaelic) * New translations en.json (Asturian) * New translations en.json (Occitan) * New translations en.json (Serbian (Latin)) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Sorani (Kurdish)) * New translations en.json (Sardinian) * New translations en.json (Breton) * New translations en.json (Sanskrit) * New translations en.json (Taigi) * New translations en.json (Silesian) * New translations en.json (Standard Moroccan Tamazight) * New translations activerecord.en.yml (Spanish, Mexico) * New translations en.json (Burmese) * New translations en.json (Cornish) * New translations en.json (Malayalam) * New translations en.json (Persian) * New translations en.json (Estonian) * New translations en.json (Spanish, Argentina) * New translations en.json (Spanish, Mexico) * New translations en.json (Bengali) * New translations en.json (Marathi) * New translations en.json (Croatian) * New translations en.json (Norwegian Nynorsk) * New translations en.json (Kazakh) * New translations en.json (Latvian) * New translations en.json (Tatar) * New translations en.json (Hindi) * New translations en.json (Malay) * New translations en.json (Telugu) * New translations en.json (English, United Kingdom) * New translations en.json (Welsh) * New translations en.json (Uyghur) * New translations en.json (Chinese Traditional, Hong Kong) * New translations en.json (Japanese) * New translations en.json (Finnish) * New translations en.json (Irish) * New translations en.yml (Irish) * New translations en.json (Portuguese) * New translations en.json (Chinese Simplified) * New translations en.json (Spanish, Argentina) * New translations en.json (Irish) * New translations en.json (Irish) * New translations doorkeeper.en.yml (Irish) * New translations activerecord.en.yml (Irish) * New translations devise.en.yml (Irish) * New translations en.json (Greek) * New translations en.json (Irish) * New translations en.json (Korean) * New translations en.yml (Korean) * New translations en.json (Chinese Traditional) * New translations en.json (Galician) * New translations en.json (French) * New translations en.yml (French) * New translations en.json (Italian) * New translations en.json (Vietnamese) * New translations en.json (Latvian) * New translations simple_form.en.yml (Korean) * New translations en.json (Esperanto) * New translations en.json (Albanian) * New translations en.json (Indonesian) * New translations en.json (Icelandic) * New translations en.yml (Indonesian) * New translations en.json (Norwegian Nynorsk) * New translations en.yml (Norwegian Nynorsk) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` * New translations en.json (Slovenian) * New translations en.json (Turkish) * New translations en.json (Vietnamese) * New translations en.yml (Norwegian Nynorsk) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (German) * New translations simple_form.en.yml (Finnish) * New translations en.json (Hungarian) * New translations en.yml (Hungarian) * New translations en.json (Breton) * New translations en.json (Dutch) * New translations en.json (Spanish) * New translations simple_form.en.yml (French) * New translations simple_form.en.yml (Czech) * New translations simple_form.en.yml (Norwegian) * New translations simple_form.en.yml (Hungarian) * New translations en.json (French) * New translations simple_form.en.yml (Italian) * New translations simple_form.en.yml (Japanese) * New translations simple_form.en.yml (Georgian) * New translations simple_form.en.yml (Korean) * New translations simple_form.en.yml (Portuguese) * New translations simple_form.en.yml (Russian) * New translations simple_form.en.yml (Slovak) * New translations simple_form.en.yml (Slovenian) * New translations simple_form.en.yml (Albanian) * New translations simple_form.en.yml (Serbian (Cyrillic)) * New translations simple_form.en.yml (Swedish) * New translations simple_form.en.yml (Turkish) * New translations simple_form.en.yml (Hebrew) * New translations simple_form.en.yml (Armenian) * New translations simple_form.en.yml (Finnish) * New translations simple_form.en.yml (Afrikaans) * New translations en.json (Catalan) * New translations simple_form.en.yml (Dutch) * New translations simple_form.en.yml (Polish) * New translations simple_form.en.yml (Basque) * New translations simple_form.en.yml (Romanian) * New translations simple_form.en.yml (French) * New translations simple_form.en.yml (Spanish) * New translations simple_form.en.yml (Arabic) * New translations simple_form.en.yml (Bulgarian) * New translations simple_form.en.yml (Catalan) * New translations simple_form.en.yml (Danish) * New translations simple_form.en.yml (German) * New translations simple_form.en.yml (Greek) * New translations simple_form.en.yml (Frisian) * New translations simple_form.en.yml (Indonesian) * New translations simple_form.en.yml (Portuguese, Brazilian) * New translations simple_form.en.yml (Icelandic) * New translations simple_form.en.yml (Galician) * New translations simple_form.en.yml (Chinese Simplified) * New translations simple_form.en.yml (Chinese Traditional) * New translations simple_form.en.yml (Ukrainian) * New translations en.json (Ukrainian) * New translations simple_form.en.yml (Sinhala) * New translations simple_form.en.yml (Vietnamese) * New translations simple_form.en.yml (Persian) * New translations simple_form.en.yml (Tamil) * New translations simple_form.en.yml (Corsican) * New translations simple_form.en.yml (Scottish Gaelic) * New translations simple_form.en.yml (Asturian) * New translations simple_form.en.yml (Occitan) * New translations simple_form.en.yml (Serbian (Latin)) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Sorani (Kurdish)) * New translations simple_form.en.yml (Sardinian) * New translations simple_form.en.yml (Breton) * New translations simple_form.en.yml (Kabyle) * New translations simple_form.en.yml (Ido) * New translations simple_form.en.yml (Standard Moroccan Tamazight) * New translations simple_form.en.yml (Malayalam) * New translations simple_form.en.yml (Spanish, Argentina) * New translations simple_form.en.yml (Estonian) * New translations simple_form.en.yml (Spanish, Mexico) * New translations simple_form.en.yml (Bengali) * New translations simple_form.en.yml (Thai) * New translations simple_form.en.yml (Croatian) * New translations simple_form.en.yml (Norwegian Nynorsk) * New translations simple_form.en.yml (Kazakh) * New translations simple_form.en.yml (Latvian) * New translations simple_form.en.yml (Tatar) * New translations simple_form.en.yml (Welsh) * New translations simple_form.en.yml (Esperanto) * New translations simple_form.en.yml (Chinese Traditional, Hong Kong) * New translations en.json (Persian) * New translations simple_form.en.yml (Hungarian) * New translations simple_form.en.yml (Portuguese) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Norwegian Nynorsk) * New translations simple_form.en.yml (Finnish) * New translations simple_form.en.yml (Italian) * New translations en.yml (Catalan) * New translations simple_form.en.yml (Catalan) * New translations simple_form.en.yml (Ukrainian) * New translations en.json (Irish) * New translations simple_form.en.yml (Dutch) * New translations en.json (Ukrainian) * New translations activerecord.en.yml (Irish) * New translations en.json (Polish) * New translations simple_form.en.yml (Chinese Simplified) * New translations simple_form.en.yml (Greek) * New translations simple_form.en.yml (Hungarian) * New translations simple_form.en.yml (Slovenian) * New translations simple_form.en.yml (Asturian) * New translations en.yml (Dutch) * New translations simple_form.en.yml (Dutch) * New translations en.yml (Swedish) * New translations simple_form.en.yml (Polish) * New translations simple_form.en.yml (Chinese Traditional) * New translations en.yml (Dutch) * New translations en.json (Swedish) * New translations en.yml (Swedish) * New translations simple_form.en.yml (Swedish) * New translations en.json (Swedish) * New translations en.yml (Swedish) * New translations simple_form.en.yml (Swedish) * New translations doorkeeper.en.yml (Swedish) * New translations activerecord.en.yml (Swedish) * New translations en.json (Swedish) * New translations en.yml (Swedish) * New translations simple_form.en.yml (Swedish) * New translations en.json (Swedish) * New translations en.yml (Swedish) * New translations simple_form.en.yml (Vietnamese) * New translations simple_form.en.yml (French) * New translations simple_form.en.yml (Swedish) * New translations simple_form.en.yml (Spanish, Argentina) * New translations simple_form.en.yml (Vietnamese) * New translations en.json (Afrikaans) * New translations en.yml (Afrikaans) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Norwegian Nynorsk) * New translations simple_form.en.yml (Afrikaans) * New translations simple_form.en.yml (Japanese) * New translations simple_form.en.yml (Korean) * New translations en.json (Norwegian Nynorsk) * New translations en.yml (Swedish) * New translations en.json (Norwegian Nynorsk) * New translations en.json (Polish) * New translations en.json (Swedish) * New translations en.yml (Swedish) * New translations simple_form.en.yml (Icelandic) * New translations en.json (Czech) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 10 +- app/javascript/mastodon/locales/ar.json | 2 +- app/javascript/mastodon/locales/ast.json | 12 +- app/javascript/mastodon/locales/bg.json | 2 +- app/javascript/mastodon/locales/bn.json | 2 +- app/javascript/mastodon/locales/br.json | 108 ++-- app/javascript/mastodon/locales/ca.json | 22 +- app/javascript/mastodon/locales/ckb.json | 2 +- app/javascript/mastodon/locales/co.json | 2 +- app/javascript/mastodon/locales/cs.json | 28 +- app/javascript/mastodon/locales/cy.json | 2 +- app/javascript/mastodon/locales/da.json | 22 +- app/javascript/mastodon/locales/de.json | 68 +-- .../mastodon/locales/defaultMessages.json | 10 +- app/javascript/mastodon/locales/el.json | 22 +- app/javascript/mastodon/locales/en-GB.json | 2 +- app/javascript/mastodon/locales/eo.json | 28 +- app/javascript/mastodon/locales/es-AR.json | 22 +- app/javascript/mastodon/locales/es-MX.json | 34 +- app/javascript/mastodon/locales/es.json | 2 +- app/javascript/mastodon/locales/et.json | 2 +- app/javascript/mastodon/locales/eu.json | 22 +- app/javascript/mastodon/locales/fa.json | 20 +- app/javascript/mastodon/locales/fi.json | 46 +- app/javascript/mastodon/locales/fr.json | 80 +-- app/javascript/mastodon/locales/fy.json | 2 +- app/javascript/mastodon/locales/ga.json | 310 +++++------ app/javascript/mastodon/locales/gd.json | 2 +- app/javascript/mastodon/locales/gl.json | 22 +- app/javascript/mastodon/locales/he.json | 2 +- app/javascript/mastodon/locales/hi.json | 2 +- app/javascript/mastodon/locales/hr.json | 2 +- app/javascript/mastodon/locales/hu.json | 38 +- app/javascript/mastodon/locales/hy.json | 2 +- app/javascript/mastodon/locales/id.json | 22 +- app/javascript/mastodon/locales/ig.json | 88 +-- app/javascript/mastodon/locales/io.json | 2 +- app/javascript/mastodon/locales/is.json | 22 +- app/javascript/mastodon/locales/it.json | 22 +- app/javascript/mastodon/locales/ja.json | 34 +- app/javascript/mastodon/locales/ka.json | 2 +- app/javascript/mastodon/locales/kab.json | 6 +- app/javascript/mastodon/locales/kk.json | 2 +- app/javascript/mastodon/locales/kn.json | 2 +- app/javascript/mastodon/locales/ko.json | 24 +- app/javascript/mastodon/locales/ku.json | 74 +-- app/javascript/mastodon/locales/kw.json | 2 +- app/javascript/mastodon/locales/lt.json | 2 +- app/javascript/mastodon/locales/lv.json | 22 +- app/javascript/mastodon/locales/mk.json | 2 +- app/javascript/mastodon/locales/ml.json | 2 +- app/javascript/mastodon/locales/mr.json | 2 +- app/javascript/mastodon/locales/ms.json | 2 +- app/javascript/mastodon/locales/my.json | 2 +- app/javascript/mastodon/locales/nl.json | 28 +- app/javascript/mastodon/locales/nn.json | 242 ++++---- app/javascript/mastodon/locales/no.json | 10 +- app/javascript/mastodon/locales/oc.json | 2 +- app/javascript/mastodon/locales/pa.json | 2 +- app/javascript/mastodon/locales/pl.json | 104 ++-- app/javascript/mastodon/locales/pt-BR.json | 178 +++--- app/javascript/mastodon/locales/pt-PT.json | 22 +- app/javascript/mastodon/locales/ro.json | 2 +- app/javascript/mastodon/locales/ru.json | 20 +- app/javascript/mastodon/locales/sa.json | 2 +- app/javascript/mastodon/locales/sc.json | 2 +- app/javascript/mastodon/locales/si.json | 2 +- app/javascript/mastodon/locales/sk.json | 2 +- app/javascript/mastodon/locales/sl.json | 22 +- app/javascript/mastodon/locales/sq.json | 66 +-- app/javascript/mastodon/locales/sr-Latn.json | 2 +- app/javascript/mastodon/locales/sr.json | 2 +- app/javascript/mastodon/locales/sv.json | 342 ++++++------ app/javascript/mastodon/locales/szl.json | 2 +- app/javascript/mastodon/locales/ta.json | 2 +- app/javascript/mastodon/locales/tai.json | 2 +- app/javascript/mastodon/locales/te.json | 2 +- app/javascript/mastodon/locales/th.json | 34 +- app/javascript/mastodon/locales/tr.json | 40 +- app/javascript/mastodon/locales/tt.json | 2 +- app/javascript/mastodon/locales/ug.json | 2 +- app/javascript/mastodon/locales/uk.json | 24 +- app/javascript/mastodon/locales/ur.json | 2 +- app/javascript/mastodon/locales/vi.json | 46 +- app/javascript/mastodon/locales/zgh.json | 2 +- app/javascript/mastodon/locales/zh-CN.json | 34 +- app/javascript/mastodon/locales/zh-HK.json | 2 +- app/javascript/mastodon/locales/zh-TW.json | 22 +- config/locales/activerecord.ast.yml | 5 + config/locales/activerecord.cs.yml | 4 + config/locales/activerecord.es-MX.yml | 12 +- config/locales/activerecord.fi.yml | 4 + config/locales/activerecord.ga.yml | 13 + config/locales/activerecord.hu.yml | 4 + config/locales/activerecord.sq.yml | 4 + config/locales/activerecord.sv.yml | 19 + config/locales/activerecord.th.yml | 4 + config/locales/activerecord.zh-CN.yml | 4 + config/locales/af.yml | 6 + config/locales/ast.yml | 14 +- config/locales/br.yml | 16 +- config/locales/ca.yml | 4 +- config/locales/cs.yml | 1 + config/locales/da.yml | 2 + config/locales/de.yml | 68 +-- config/locales/devise.ast.yml | 18 +- config/locales/devise.de.yml | 6 +- config/locales/devise.fi.yml | 2 +- config/locales/devise.ga.yml | 8 + config/locales/devise.uk.yml | 6 +- config/locales/doorkeeper.ga.yml | 31 ++ config/locales/doorkeeper.ku.yml | 6 +- config/locales/doorkeeper.nl.yml | 2 +- config/locales/doorkeeper.pl.yml | 8 +- config/locales/doorkeeper.sv.yml | 93 ++-- config/locales/doorkeeper.uk.yml | 22 +- config/locales/doorkeeper.vi.yml | 2 +- config/locales/el.yml | 1 + config/locales/eo.yml | 2 + config/locales/es-AR.yml | 2 + config/locales/es-MX.yml | 2 + config/locales/eu.yml | 194 ++++++- config/locales/fi.yml | 14 +- config/locales/fr.yml | 43 ++ config/locales/ga.yml | 106 ++++ config/locales/gl.yml | 2 + config/locales/hu.yml | 5 + config/locales/id.yml | 2 + config/locales/is.yml | 2 + config/locales/it.yml | 2 + config/locales/ja.yml | 21 +- config/locales/kab.yml | 3 +- config/locales/ko.yml | 2 + config/locales/ku.yml | 32 +- config/locales/lv.yml | 2 + config/locales/nl.yml | 76 ++- config/locales/nn.yml | 165 +++++- config/locales/no.yml | 1 + config/locales/pl.yml | 106 ++-- config/locales/pt-BR.yml | 1 + config/locales/pt-PT.yml | 2 + config/locales/simple_form.af.yml | 2 + config/locales/simple_form.ar.yml | 2 - config/locales/simple_form.ast.yml | 2 +- config/locales/simple_form.ca.yml | 12 +- config/locales/simple_form.ckb.yml | 2 - config/locales/simple_form.co.yml | 2 - config/locales/simple_form.cs.yml | 4 +- config/locales/simple_form.cy.yml | 2 - config/locales/simple_form.da.yml | 2 - config/locales/simple_form.de.yml | 10 +- config/locales/simple_form.el.yml | 2 +- config/locales/simple_form.eo.yml | 2 - config/locales/simple_form.es-AR.yml | 2 +- config/locales/simple_form.es-MX.yml | 39 +- config/locales/simple_form.es.yml | 2 - config/locales/simple_form.et.yml | 2 - config/locales/simple_form.eu.yml | 4 +- config/locales/simple_form.fa.yml | 2 - config/locales/simple_form.fi.yml | 6 +- config/locales/simple_form.fr.yml | 34 +- config/locales/simple_form.gd.yml | 4 +- config/locales/simple_form.gl.yml | 2 - config/locales/simple_form.he.yml | 4 +- config/locales/simple_form.hu.yml | 16 +- config/locales/simple_form.hy.yml | 2 - config/locales/simple_form.id.yml | 2 - config/locales/simple_form.io.yml | 2 - config/locales/simple_form.is.yml | 2 +- config/locales/simple_form.it.yml | 2 +- config/locales/simple_form.ja.yml | 16 +- config/locales/simple_form.kab.yml | 2 - config/locales/simple_form.ko.yml | 6 +- config/locales/simple_form.ku.yml | 11 +- config/locales/simple_form.lv.yml | 2 +- config/locales/simple_form.nl.yml | 15 +- config/locales/simple_form.nn.yml | 2 +- config/locales/simple_form.no.yml | 2 - config/locales/simple_form.oc.yml | 2 - config/locales/simple_form.pl.yml | 24 +- config/locales/simple_form.pt-BR.yml | 2 - config/locales/simple_form.pt-PT.yml | 2 +- config/locales/simple_form.ro.yml | 2 - config/locales/simple_form.ru.yml | 2 - config/locales/simple_form.sc.yml | 2 - config/locales/simple_form.si.yml | 2 - config/locales/simple_form.sk.yml | 2 - config/locales/simple_form.sl.yml | 2 +- config/locales/simple_form.sq.yml | 39 +- config/locales/simple_form.sv.yml | 213 +++++-- config/locales/simple_form.th.yml | 4 +- config/locales/simple_form.tr.yml | 2 - config/locales/simple_form.uk.yml | 12 +- config/locales/simple_form.vi.yml | 28 +- config/locales/simple_form.zh-CN.yml | 2 +- config/locales/simple_form.zh-HK.yml | 2 - config/locales/simple_form.zh-TW.yml | 2 +- config/locales/sl.yml | 2 + config/locales/sq.yml | 42 ++ config/locales/sv.yml | 519 +++++++++++++++--- config/locales/th.yml | 5 + config/locales/tr.yml | 2 + config/locales/uk.yml | 30 +- config/locales/vi.yml | 50 +- config/locales/zh-CN.yml | 4 + config/locales/zh-TW.yml | 2 + 206 files changed, 3142 insertions(+), 1823 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 39a010ea2..d5af5a213 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -1,7 +1,7 @@ { - "about.blocks": "Moderated servers", + "about.blocks": "Gehodereerde bedieners", "about.contact": "Kontak:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon is gratis, oop-bron sagteware, en 'n handelsmerk van Mastodon gGmbH.", "about.domain_blocks.comment": "Rede", "about.domain_blocks.domain": "Domein", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -23,7 +23,7 @@ "account.browse_more_on_origin_server": "Snuffel rond op oorspronklike profiel", "account.cancel_follow_request": "Onttrek volg aanvraag", "account.direct": "Stuur direkte boodskap aan @{name}", - "account.disable_notifications": "Stop notifying me when @{name} posts", + "account.disable_notifications": "Hou op om kennisgewings te stuur wanneer @{name} plasings maak", "account.domain_blocked": "Domein geblok", "account.edit_profile": "Redigeer profiel", "account.enable_notifications": "Stel my in kennis wanneer @{name} plasings maak", @@ -137,7 +137,7 @@ "compose_form.poll.remove_option": "Verwyder hierdie keuse", "compose_form.poll.switch_to_multiple": "Verander die peiling na verskeie keuses", "compose_form.poll.switch_to_single": "Verander die peiling na 'n enkel keuse", - "compose_form.publish": "Publisheer", + "compose_form.publish": "Publiseer", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Stoor veranderinge", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", @@ -339,7 +339,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Vertoon profiel in elkgeval", - "limited_account_hint.title": "Hierdie profiel is deur moderators van jou bediener versteek.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 858f61014..2f19596ca 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -339,7 +339,7 @@ "lightbox.next": "التالي", "lightbox.previous": "العودة", "limited_account_hint.action": "إظهار الملف التعريفي على أي حال", - "limited_account_hint.title": "أخف مشرف الخادم هذا الملف التعريفي.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "أضف إلى القائمة", "lists.account.remove": "احذف من القائمة", "lists.delete": "احذف القائمة", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 603f85238..e2e7414c1 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -1,7 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon ye software gratuito y de códigu llibre, y una marca rexistrada de Mastodon gGmbH.", "about.domain_blocks.comment": "Motivu", "about.domain_blocks.domain": "Dominiu", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -260,11 +260,11 @@ "follow_request.reject": "Refugar", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "footer.about": "About", - "footer.directory": "Profiles directory", + "footer.directory": "Direutoriu de perfiles", "footer.get_app": "Get the app", "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", + "footer.keyboard_shortcuts": "Atayos del tecláu", + "footer.privacy_policy": "Política de privacidá", "footer.source_code": "View source code", "generic.saved": "Saved", "getting_started.heading": "Entamu", @@ -339,7 +339,7 @@ "lightbox.next": "Siguiente", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Amestar a la llista", "lists.account.remove": "Desaniciar de la llista", "lists.delete": "Desaniciar la llista", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Previsualización ({ratio})", "upload_progress.label": "Xubiendo…", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Procesando…", "video.close": "Zarrar el videu", "video.download": "Download file", "video.exit_fullscreen": "Colar de la pantalla completa", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index d1f32ed7f..99af5e3c6 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -339,7 +339,7 @@ "lightbox.next": "Напред", "lightbox.previous": "Назад", "limited_account_hint.action": "Покажи профила въпреки това", - "limited_account_hint.title": "Този профил е скрит от модераторите на сървъра Ви.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Добавяне към списък", "lists.account.remove": "Премахване от списък", "lists.delete": "Изтриване на списък", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index 092cd2dfc..44ddcdb51 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -339,7 +339,7 @@ "lightbox.next": "পরবর্তী", "lightbox.previous": "পূর্ববর্তী", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "তালিকাতে যুক্ত করতে", "lists.account.remove": "তালিকা থেকে বাদ দিতে", "lists.delete": "তালিকা মুছে ফেলতে", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index f64f3df34..bf8fb5e5a 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -7,9 +7,9 @@ "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", "about.domain_blocks.severity": "Strizhder", "about.domain_blocks.silenced.explanation": "Ne vo ket gwelet profiloù eus ar servijer-mañ ganeoc'h peurliesañ, nemet ma vefec'h o klask war o lec'h pe choazfec'h o heuliañ.", - "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.silenced.title": "Bevennet", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", + "about.domain_blocks.suspended.title": "Astalet", "about.not_available": "This information has not been made available on this server.", "about.powered_by": "Decentralized social media powered by {mastodon}", "about.rules": "Reolennoù ar servijer", @@ -32,7 +32,7 @@ "account.featured_tags.last_status_never": "Kemennad ebet", "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Heuliañ", - "account.followers": "Heulier·ezed·ien", + "account.followers": "Tud koumanantet", "account.followers.empty": "Den na heul an implijer·ez-mañ c'hoazh.", "account.followers_counter": "{count, plural, other{{counter} Heulier·ez}}", "account.following": "Koumanantoù", @@ -50,8 +50,8 @@ "account.mute": "Kuzhat @{name}", "account.mute_notifications": "Kuzh kemennoù a-berzh @{name}", "account.muted": "Kuzhet", - "account.posts": "Kemennadoù", - "account.posts_with_replies": "Kemennadoù ha respontoù", + "account.posts": "Kannadoù", + "account.posts_with_replies": "Kannadoù ha respontoù", "account.report": "Disklêriañ @{name}", "account.requested": "O c'hortoz an asant. Klikit evit nullañ ar goulenn heuliañ", "account.share": "Skignañ profil @{name}", @@ -77,7 +77,7 @@ "alert.unexpected.title": "Hopala !", "announcement.announcement": "Kemenn", "attachments_list.unprocessed": "(ket meret)", - "audio.hide": "Hide audio", + "audio.hide": "Kuzhat ar c'hleved", "autosuggest_hashtag.per_week": "{count} bep sizhun", "boost_modal.combo": "Ar wezh kentañ e c'halliot gwaskañ war {combo} evit tremen hebiou", "bundle_column_error.copy_stacktrace": "Copy error report", @@ -105,7 +105,7 @@ "column.directory": "Mont a-dreuz ar profiloù", "column.domain_blocks": "Domani berzet", "column.favourites": "Muiañ-karet", - "column.follow_requests": "Pedadoù heuliañ", + "column.follow_requests": "Rekedoù heuliañ", "column.home": "Degemer", "column.lists": "Listennoù", "column.mutes": "Implijer·ion·ezed kuzhet", @@ -151,7 +151,7 @@ "confirmations.block.confirm": "Stankañ", "confirmations.block.message": "Ha sur oc'h e fell deoc'h stankañ {name} ?", "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.message": "Ha sur oc'h e fell deoc'h nullañ ho reked evit heuliañ {name} ?", "confirmations.delete.confirm": "Dilemel", "confirmations.delete.message": "Ha sur oc'h e fell deoc'h dilemel ar c'hemennad-mañ ?", "confirmations.delete_list.confirm": "Dilemel", @@ -170,13 +170,13 @@ "confirmations.reply.confirm": "Respont", "confirmations.reply.message": "Respont bremañ a zilamo ar gemennadenn emaoc'h o skrivañ. Sur e oc'h e fell deoc'h kenderc'hel ganti?", "confirmations.unfollow.confirm": "Diheuliañ", - "confirmations.unfollow.message": "Ha sur oc'h e fell deoc'h paouez da heuliañ {name}?", + "confirmations.unfollow.message": "Ha sur oc'h e fell deoc'h paouez da heuliañ {name} ?", "conversation.delete": "Dilemel ar gaozeadenn", "conversation.mark_as_read": "Merkañ evel lennet", "conversation.open": "Gwelout ar gaozeadenn", "conversation.with": "Gant {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Eilet", + "copypaste.copy": "Eilañ", "directory.federated": "Eus ar fedibed anavezet", "directory.local": "Eus {domain} hepken", "directory.new_arrivals": "Degouezhet a-nevez", @@ -216,7 +216,7 @@ "empty_column.favourited_statuses": "N'ho peus kemennad muiañ-karet ebet c'hoazh. Pa vo ouzhpennet unan e teuio war wel amañ.", "empty_column.favourites": "Den ebet n'eus lakaet ar c'hemennad-mañ en e reoù muiañ-karet c'hoazh. Pa vo graet gant unan bennak e teuio war wel amañ.", "empty_column.follow_recommendations": "Seblant a ra ne vez ket genelet damvenegoù evidoc'h. Gallout a rit implijout un enklask evit klask tud hag a vefe anavezet ganeoc'h pe ergerzhout gerioù-klik diouzh ar c'hiz.", - "empty_column.follow_requests": "N'ho peus goulenn heuliañ ebet c'hoazh. Pa resevot reoù e vo diskouezet amañ.", + "empty_column.follow_requests": "N'ho peus reked heuliañ ebet c'hoazh. Pa vo resevet unan e teuio war wel amañ.", "empty_column.hashtag": "N'eus netra er ger-klik-mañ c'hoazh.", "empty_column.home": "Goullo eo ho red-amzer degemer! Kit da weladenniñ {public} pe implijit ar c'hlask evit kregiñ ganti ha kejañ gant implijer·ien·ezed all.", "empty_column.home.suggestions": "Gwellout damvenegoù", @@ -261,11 +261,11 @@ "follow_requests.unlocked_explanation": "Daoust ma n'eo ket ho kont prennet, skipailh {domain} a soñj e fellfe deoc'h gwiriekaat pedadennoù heuliañ deus ar c'hontoù-se diwar-zorn.", "footer.about": "About", "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.get_app": "Pellgargañ an arload", + "footer.invite": "Pediñ tud", + "footer.keyboard_shortcuts": "Berradennoù klavier", + "footer.privacy_policy": "Reolennoù prevezded", + "footer.source_code": "Gwelet kod mammenn", "generic.saved": "Enrollet", "getting_started.heading": "Loc'hañ", "hashtag.column_header.tag_mode.all": "ha {additional}", @@ -278,7 +278,7 @@ "hashtag.column_settings.tag_mode.none": "Hini ebet anezho", "hashtag.column_settings.tag_toggle": "Endelc'her gerioù-alc'hwez ouzhpenn evit ar bannad-mañ", "hashtag.follow": "Heuliañ ar ger-klik", - "hashtag.unfollow": "Paouez heuliañ ar ger-klik", + "hashtag.unfollow": "Diheuliañ ar ger-klik", "home.column_settings.basic": "Diazez", "home.column_settings.show_reblogs": "Diskouez ar skignadennoù", "home.column_settings.show_replies": "Diskouez ar respontoù", @@ -288,12 +288,12 @@ "interaction_modal.description.follow": "Gant ur gont Mastodon e c'hellit heuliañ {name} evit resev h·e gemennadoù war ho red degemer.", "interaction_modal.description.reblog": "Gant ur gont Mastodon e c'hellit skignañ ar c'hemennad-mañ evit rannañ anezhañ gant ho heulierien·ezed.", "interaction_modal.description.reply": "Gant ur gont Mastodon e c'hellit respont d'ar c'hemennad-mañ.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", + "interaction_modal.on_another_server": "War ur servijer all", + "interaction_modal.on_this_server": "War ar servijer-mañ", "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Ouzhpennañ kemennad {name} d'ar re vuiañ-karet", - "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.follow": "Heuliañ {name}", "interaction_modal.title.reblog": "Skignañ kemennad {name}", "interaction_modal.title.reply": "Respont da gemennad {name}", "intervals.full.days": "{number, plural, one {# devezh} other{# a zevezhioù}}", @@ -305,7 +305,7 @@ "keyboard_shortcuts.column": "Fokus ar bann", "keyboard_shortcuts.compose": "Fokus an takad testenn", "keyboard_shortcuts.description": "Deskrivadur", - "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.direct": "evit digeriñ bann ar c'hemennadoù eeun", "keyboard_shortcuts.down": "Diskennañ er roll", "keyboard_shortcuts.enter": "Digeriñ ar c'hemennad", "keyboard_shortcuts.favourite": "Ouzhpennañ ar c'hemennad d'ar re vuiañ-karet", @@ -339,7 +339,7 @@ "lightbox.next": "Da-heul", "lightbox.previous": "A-raok", "limited_account_hint.action": "Diskouez an aelad memes tra", - "limited_account_hint.title": "Kuzhet eo bet an aelad-mañ gant habaskerien·ezed ho servijer.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Ouzhpennañ d'al listenn", "lists.account.remove": "Lemel kuit eus al listenn", "lists.delete": "Dilemel al listenn", @@ -361,7 +361,7 @@ "mute_modal.duration": "Padelezh", "mute_modal.hide_notifications": "Kuzhat kemenadennoù eus an implijer-se ?", "mute_modal.indefinite": "Amstrizh", - "navigation_bar.about": "About", + "navigation_bar.about": "Diwar-benn", "navigation_bar.blocks": "Implijer·ezed·ien berzet", "navigation_bar.bookmarks": "Sinedoù", "navigation_bar.community_timeline": "Red-amzer lec'hel", @@ -382,9 +382,9 @@ "navigation_bar.pins": "Kemennadoù spilhennet", "navigation_bar.preferences": "Gwellvezioù", "navigation_bar.public_timeline": "Red-amzer kevreet", - "navigation_bar.search": "Search", + "navigation_bar.search": "Klask", "navigation_bar.security": "Diogelroez", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Ret eo deoc'h kevreañ evit tizhout an danvez-se.", "notification.admin.report": "Disklêriet eo bet {target} gant {name}", "notification.admin.sign_up": "{name} en·he deus lakaet e·hec'h anv", "notification.favourite": "{name} en·he deus ouzhpennet ho kemennad d'h·e re vuiañ-karet", @@ -398,8 +398,8 @@ "notification.update": "{name} en·he deus kemmet ur c'hemennad", "notifications.clear": "Skarzhañ ar c'hemennoù", "notifications.clear_confirmation": "Ha sur oc'h e fell deoc'h skarzhañ ho kemennoù penn-da-benn?", - "notifications.column_settings.admin.report": "New reports:", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.report": "Disklêriadurioù nevez :", + "notifications.column_settings.admin.sign_up": "Enskrivadurioù nevez :", "notifications.column_settings.alert": "Kemennoù war ar burev", "notifications.column_settings.favourite": "Ar re vuiañ-karet:", "notifications.column_settings.filter_bar.advanced": "Skrammañ an-holl rummadoù", @@ -416,7 +416,7 @@ "notifications.column_settings.status": "Kemennadoù nevez :", "notifications.column_settings.unread_notifications.category": "Kemennoù n'int ket lennet", "notifications.column_settings.unread_notifications.highlight": "Usskediñ kemennoù nevez", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "Kemmoù :", "notifications.filter.all": "Pep tra", "notifications.filter.boosts": "Skignadennoù", "notifications.filter.favourites": "Muiañ-karet", @@ -445,15 +445,15 @@ "poll_button.remove_poll": "Dilemel ar sontadeg", "privacy.change": "Cheñch prevezded ar c'hemennad", "privacy.direct.long": "Embann evit an implijer·ezed·ien meneget hepken", - "privacy.direct.short": "Direct", + "privacy.direct.short": "Tud meneget hepken", "privacy.private.long": "Embann evit ar re a heuilh ac'hanon hepken", - "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all", + "privacy.private.short": "Tud koumanantet hepken", + "privacy.public.long": "Gwelus d'an holl", "privacy.public.short": "Publik", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Anlistennet", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Hizivadenn ziwezhañ {date}", + "privacy_policy.title": "Reolennoù Prevezded", "refresh": "Freskaat", "regeneration_indicator.label": "O kargañ…", "regeneration_indicator.sublabel": "War brientiñ emañ ho red degemer!", @@ -471,10 +471,10 @@ "reply_indicator.cancel": "Nullañ", "report.block": "Stankañ", "report.block_explanation": "Ne vo ket gwelet h·e gemennadoù ken. Ne welo ket ho kemennadoù ha ne c'hello ket ho heuliañ ken. Gouzout a raio eo bet stanket ganeoc'h.", - "report.categories.other": "Other", + "report.categories.other": "All", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", - "report.category.subtitle": "Choose the best match", + "report.category.subtitle": "Choazit ar pezh a glot ar gwellañ", "report.category.title": "Lârit deomp petra c'hoarvez gant {type}", "report.category.title_account": "profil", "report.category.title_status": "ar c'hemennad-mañ", @@ -482,35 +482,35 @@ "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Treuzkas da: {target}", "report.forward_hint": "War ur servijer all emañ ar c'hont-se. Kas dezhañ un adskrid disanv eus an danevell ivez?", - "report.mute": "Mute", + "report.mute": "Kuzhat", "report.mute_explanation": "Ne vo ket gwelet h·e gemennadoù ken. Gwelet ho kemennadoù ha ho heuliañ a c'hello ha ne ouezo ket eo bet kuzhet ganeoc'h.", - "report.next": "Next", + "report.next": "War-raok", "report.placeholder": "Askelennoù ouzhpenn", - "report.reasons.dislike": "I don't like it", - "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", - "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", - "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", - "report.reasons.violation": "It violates server rules", - "report.reasons.violation_description": "You are aware that it breaks specific rules", - "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", - "report.statuses.subtitle": "Select all that apply", + "report.reasons.dislike": "Ne blij ket din", + "report.reasons.dislike_description": "An dra-se na fell ket deoc'h gwelet", + "report.reasons.other": "Un abeg all eo", + "report.reasons.other_description": "Ar gudenn na glot ket gant ar rummadoù all", + "report.reasons.spam": "Spam eo", + "report.reasons.spam_description": "Liammoù gwallyoulet, engouestl faos, respontoù liezek", + "report.reasons.violation": "Terriñ a ra reolennoù ar servijer", + "report.reasons.violation_description": "Gouzout a rit e ya a-enep da reolennoù ar servijer", + "report.rules.subtitle": "Diuzit an holl draoù a glot", + "report.rules.title": "Pesort reolennoù zo bet torret ?", + "report.statuses.subtitle": "Diuzit an holl draoù a glot", "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Kinnig", "report.target": "O tisklêriañ {target}", "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", + "report.thanks.title": "Ne fell ket deoc'h gwelet an dra-se ?", "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", + "report_notification.categories.other": "All", "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", - "report_notification.open": "Open report", + "report_notification.open": "Digeriñ an disklêriadur", "search.placeholder": "Klask", "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Framm klask araokaet", @@ -554,8 +554,8 @@ "status.filter": "Filter this post", "status.filtered": "Silet", "status.hide": "Hide toot", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "Krouet gant {name} {date}", + "status.history.edited": "Kemmet gant {name} {date}", "status.load_more": "Kargañ muioc'h", "status.media_hidden": "Media kuzhet", "status.mention": "Menegiñ @{name}", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index ca8a29797..fc3e220dc 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -1,7 +1,7 @@ { "about.blocks": "Servidors moderats", "about.contact": "Contacte:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon és un programari lliure de codi obert i una marca comercial de Mastodon gGmbH.", "about.domain_blocks.comment": "Motiu", "about.domain_blocks.domain": "Domini", "about.domain_blocks.preamble": "En general, Mastodon et permet veure el contingut i interaccionar amb els usuaris de qualsevol altre servidor del fedivers. Aquestes són les excepcions que s'han fet en aquest servidor particular.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Autoritza", "follow_request.reject": "Rebutja", "follow_requests.unlocked_explanation": "Tot i que el teu compte no està bloquejat, el personal de {domain} ha pensat que és possible que vulguis revisar les sol·licituds de seguiment d’aquests comptes manualment.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Quant a", + "footer.directory": "Directori de perfils", + "footer.get_app": "Aconsegueix l'app", + "footer.invite": "Convida persones", + "footer.keyboard_shortcuts": "Dreceres de teclat", + "footer.privacy_policy": "Política de privadesa", + "footer.source_code": "Mostra el codi font", "generic.saved": "Desat", "getting_started.heading": "Primers passos", "hashtag.column_header.tag_mode.all": "i {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Següent", "lightbox.previous": "Anterior", "limited_account_hint.action": "Mostra el perfil", - "limited_account_hint.title": "Aquest perfil ha estat amagat pels moderadors del servidor.", + "limited_account_hint.title": "Aquest perfil ha estat amagat pels moderadors de {domain}.", "lists.account.add": "Afegeix a la llista", "lists.account.remove": "Elimina de la llista", "lists.delete": "Esborra la llista", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Violació de norma", "report_notification.open": "Informe obert", "search.placeholder": "Cerca", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Cerqueu o escriu l'URL", "search_popout.search_format": "Format de cerca avançada", "search_popout.tips.full_text": "El text simple recupera publicacions que has escrit, marcat com a preferides, que has impulsat o on t'han esmentat, així com els usuaris, els noms d'usuaris i les etiquetes.", "search_popout.tips.hashtag": "etiqueta", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Preparant OCR…", "upload_modal.preview_label": "Previsualitza ({ratio})", "upload_progress.label": "Pujant...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "En procés…", "video.close": "Tanca el vídeo", "video.download": "Descarrega l’arxiu", "video.exit_fullscreen": "Surt de la pantalla completa", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 931e8758a..ff55d96e1 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -339,7 +339,7 @@ "lightbox.next": "داهاتوو", "lightbox.previous": "پێشوو", "limited_account_hint.action": "بەهەر حاڵ پڕۆفایلی پیشان بدە", - "limited_account_hint.title": "ئەم پرۆفایلییە لەلایەن بەڕێوەبەرانی سێرڤەرەکەتەوە شاراوەتەوە.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "زیادکردن بۆ لیست", "lists.account.remove": "لابردن لە لیست", "lists.delete": "سڕینەوەی لیست", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 322b533c1..8cfa4f965 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -339,7 +339,7 @@ "lightbox.next": "Siguente", "lightbox.previous": "Pricidente", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Aghjunghje à a lista", "lists.account.remove": "Toglie di a lista", "lists.delete": "Toglie a lista", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index ed0b7b0b1..705bf9681 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -4,9 +4,9 @@ "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Důvod", "about.domain_blocks.domain": "Doména", - "about.domain_blocks.preamble": "Mastodon vám obecně umožňuje prohlížet obsah a komunikovat s uživateli z jakéhokoliv jiného serveru ve fediveru. Toto jsou výjimky, které byly uděleny na tomto konkrétním serveru.", + "about.domain_blocks.preamble": "Mastodon umožňuje prohlížet obsah a komunikovat s uživateli jakéhokoliv serveru ve fediversu. Pro tento konkrétní server se vztahují následující výjimky.", "about.domain_blocks.severity": "Závažnost", - "about.domain_blocks.silenced.explanation": "Z tohoto serveru obecně neuvidíte profily a obsah, pokud se na něj výslovně nepodíváte, nebo se k němu připojíte sledováním.", + "about.domain_blocks.silenced.explanation": "Uživatele a obsah tohoto serveru neuvidíte, pokud je nebudete výslovně hledat nebo je nezačnete sledovat.", "about.domain_blocks.silenced.title": "Omezeno", "about.domain_blocks.suspended.explanation": "Žádná data z tohoto serveru nebudou zpracovávána, uložena ani vyměňována, což znemožňuje jakoukoli interakci nebo komunikaci s uživateli z tohoto serveru.", "about.domain_blocks.suspended.title": "Pozastaveno", @@ -21,7 +21,7 @@ "account.block_domain": "Blokovat doménu {domain}", "account.blocked": "Blokován", "account.browse_more_on_origin_server": "Více na původním profilu", - "account.cancel_follow_request": "Vybrat žádost o následování", + "account.cancel_follow_request": "Zrušit žádost o následování", "account.direct": "Poslat @{name} přímou zprávu", "account.disable_notifications": "Zrušit upozorňování na příspěvky @{name}", "account.domain_blocked": "Doména blokována", @@ -151,7 +151,7 @@ "confirmations.block.confirm": "Blokovat", "confirmations.block.message": "Opravdu chcete zablokovat {name}?", "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.message": "Opravdu chcete zrušit svou žádost o sledování {name}?", "confirmations.delete.confirm": "Smazat", "confirmations.delete.message": "Opravdu chcete smazat tento příspěvek?", "confirmations.delete_list.confirm": "Smazat", @@ -259,13 +259,13 @@ "follow_request.authorize": "Autorizovat", "follow_request.reject": "Odmítnout", "follow_requests.unlocked_explanation": "Přestože váš účet není uzamčen, personál {domain} usoudil, že byste mohli chtít tyto požadavky na sledování zkontrolovat ručně.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "O aplikaci", + "footer.directory": "Adresář profilů", + "footer.get_app": "Stáhnout aplikaci", + "footer.invite": "Pozvat lidi", + "footer.keyboard_shortcuts": "Klávesové zkratky", + "footer.privacy_policy": "Zásady ochrany osobních údajů", + "footer.source_code": "Zobrazit zdrojový kód", "generic.saved": "Uloženo", "getting_started.heading": "Začínáme", "hashtag.column_header.tag_mode.all": "a {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Další", "lightbox.previous": "Předchozí", "limited_account_hint.action": "Přesto profil zobrazit", - "limited_account_hint.title": "Tento profil byl skryt moderátory vašeho serveru.", + "limited_account_hint.title": "Tento profil byl skryt moderátory {domain}.", "lists.account.add": "Přidat do seznamu", "lists.account.remove": "Odebrat ze seznamu", "lists.delete": "Smazat seznam", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Porušení pravidla", "report_notification.open": "Otevřít hlášení", "search.placeholder": "Hledat", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Hledat nebo vložit URL", "search_popout.search_format": "Pokročilé hledání", "search_popout.tips.full_text": "Jednoduchý text vrací příspěvky, které jste napsali, oblíbili si, boostnuli, nebo vás v nich někdo zmínil, a také odpovídající přezdívky, zobrazovaná jména a hashtagy.", "search_popout.tips.hashtag": "hashtag", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Příprava OCR…", "upload_modal.preview_label": "Náhled ({ratio})", "upload_progress.label": "Nahrávání…", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Zpracovávání…", "video.close": "Zavřít video", "video.download": "Stáhnout soubor", "video.exit_fullscreen": "Ukončit režim celé obrazovky", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 4860ecbbe..082d2ea52 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -339,7 +339,7 @@ "lightbox.next": "Nesaf", "lightbox.previous": "Blaenorol", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Ychwanegwch at restr", "lists.account.remove": "Dileu o'r rhestr", "lists.delete": "Dileu rhestr", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 6b832c722..2e63e1470 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -1,7 +1,7 @@ { "about.blocks": "Modererede servere", "about.contact": "Kontakt:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon er gratis, open-source software og et varemærke tilhørende Mastodon gGmbH.", "about.domain_blocks.comment": "Årsag", "about.domain_blocks.domain": "Domæne", "about.domain_blocks.preamble": "Mastodon tillader generelt, at man ser indhold og interagere med brugere fra enhver anden server i fediverset. Disse er undtagelserne, som er implementeret på netop denne server.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Godkend", "follow_request.reject": "Afvis", "follow_requests.unlocked_explanation": "Selvom din konto ikke er låst, antog {domain}-personalet, at du måske vil gennemgå dine anmodninger manuelt.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Om", + "footer.directory": "Profiloversigt", + "footer.get_app": "Hent appen", + "footer.invite": "Invitere personer", + "footer.keyboard_shortcuts": "Tastaturgenveje", + "footer.privacy_policy": "Fortrolighedspolitik", + "footer.source_code": "Vis kildekode", "generic.saved": "Gemt", "getting_started.heading": "Startmenu", "hashtag.column_header.tag_mode.all": "og {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Næste", "lightbox.previous": "Forrige", "limited_account_hint.action": "Vis profil alligevel", - "limited_account_hint.title": "Denne profil er blevet skjult af servermoderatorerne.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Føj til liste", "lists.account.remove": "Fjern fra liste", "lists.delete": "Slet liste", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Regelovertrædelse", "report_notification.open": "Åbn anmeldelse", "search.placeholder": "Søg", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Søg efter eller angiv URL", "search_popout.search_format": "Avanceret søgeformat", "search_popout.tips.full_text": "Simpel tekst returnerer indlæg, du har skrevet, favoritmarkeret, boostet eller som er nævnt i/matcher bruger- og profilnavne samt hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Klargør OCR…", "upload_modal.preview_label": "Forhåndsvisning ({ratio})", "upload_progress.label": "Uploader...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Behandler…", "video.close": "Luk video", "video.download": "Download fil", "video.exit_fullscreen": "Forlad fuldskærm", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 52918f333..fd327cb12 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -1,7 +1,7 @@ { "about.blocks": "Moderierte Server", "about.contact": "Kontakt:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon ist eine freie, quelloffene Software und eine Marke der Mastodon gGmbH.", "about.domain_blocks.comment": "Begründung", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon erlaubt es dir grundsätzlich, alle Inhalte von allen Nutzer*innen auf allen Servern im Fediversum zu sehen und mit ihnen zu interagieren. Für diese Instanz gibt es aber ein paar Ausnahmen.", @@ -21,13 +21,13 @@ "account.block_domain": "Alles von {domain} verstecken", "account.blocked": "Blockiert", "account.browse_more_on_origin_server": "Mehr auf dem Originalprofil durchsuchen", - "account.cancel_follow_request": "Folgeanfrage abbrechen", + "account.cancel_follow_request": "Folgeanfrage ablehnen", "account.direct": "Direktnachricht an @{name}", "account.disable_notifications": "Höre auf mich zu benachrichtigen wenn @{name} etwas postet", "account.domain_blocked": "Domain versteckt", "account.edit_profile": "Profil bearbeiten", "account.enable_notifications": "Benachrichtige mich wenn @{name} etwas postet", - "account.endorse": "Account in meinem Profil empfehlen", + "account.endorse": "Im Profil hervorheben", "account.featured_tags.last_status_at": "Letzter Beitrag am {date}", "account.featured_tags.last_status_never": "Keine Beiträge", "account.featured_tags.title": "Von {name} vorgestellte Hashtags", @@ -43,7 +43,7 @@ "account.joined_short": "Beigetreten", "account.languages": "Abonnierte Sprachen ändern", "account.link_verified_on": "Das Profil mit dieser E-Mail-Adresse wurde bereits am {date} bestätigt", - "account.locked_info": "Der Privatsphärenstatus dieses Accounts wurde auf „gesperrt“ gesetzt. Die Person bestimmt manuell, wer ihm/ihr folgen darf.", + "account.locked_info": "Der Privatsphärenstatus dieses Kontos wurde auf „gesperrt“ gesetzt. Die Person bestimmt manuell, wer ihm/ihr folgen darf.", "account.media": "Medien", "account.mention": "@{name} im Beitrag erwähnen", "account.moved_to": "{name} ist umgezogen nach:", @@ -60,7 +60,7 @@ "account.unblock": "@{name} entblocken", "account.unblock_domain": "Entblocken von {domain}", "account.unblock_short": "Blockierung aufheben", - "account.unendorse": "Account nicht länger in meinem Profil empfehlen", + "account.unendorse": "Nicht im Profil hervorheben", "account.unfollow": "Entfolgen", "account.unmute": "Stummschaltung von @{name} aufheben", "account.unmute_notifications": "Stummschaltung der Benachrichtigungen von @{name} aufheben", @@ -114,8 +114,8 @@ "column.public": "Föderierte Chronik", "column_back_button.label": "Zurück", "column_header.hide_settings": "Einstellungen verbergen", - "column_header.moveLeft_settings": "Spalte nach links verschieben", - "column_header.moveRight_settings": "Spalte nach rechts verschieben", + "column_header.moveLeft_settings": "Diese Spalte nach links verschieben", + "column_header.moveRight_settings": "Diese Spalte nach rechts verschieben", "column_header.pin": "Anheften", "column_header.show_settings": "Einstellungen anzeigen", "column_header.unpin": "Lösen", @@ -128,7 +128,7 @@ "compose_form.direct_message_warning_learn_more": "Mehr erfahren", "compose_form.encryption_warning": "Beiträge von Mastodon sind nicht Ende-zu-Ende verschlüsselt. Teile keine senible Informationen über Mastodon.", "compose_form.hashtag_warning": "Dieser Beitrag ist über Hashtags nicht zu finden, weil er nicht gelistet ist. Nur öffentliche Beiträge tauchen in den Hashtag-Chroniken auf.", - "compose_form.lock_disclaimer": "Dein Account ist nicht {locked}. Wer dir folgen will, kann das jederzeit tun und dann auch deine privaten Beiträge sehen.", + "compose_form.lock_disclaimer": "Dein Profil ist nicht {locked}. Wer dir folgen will, kann das jederzeit tun und dann auch deine privaten Beiträge sehen.", "compose_form.lock_disclaimer.lock": "geschützt", "compose_form.placeholder": "Was gibt's Neues?", "compose_form.poll.add_option": "Auswahlfeld hinzufügen", @@ -158,7 +158,7 @@ "confirmations.delete_list.message": "Bist du dir sicher, dass du diese Liste permanent löschen möchtest?", "confirmations.discard_edit_media.confirm": "Verwerfen", "confirmations.discard_edit_media.message": "Du hast ungespeicherte Änderungen an der Medienbeschreibung oder der Medienvorschau. Trotzdem verwerfen?", - "confirmations.domain_block.confirm": "Domain blockieren", + "confirmations.domain_block.confirm": "Domain sperren", "confirmations.domain_block.message": "Bist du dir wirklich sicher, dass du die ganze Domain {domain} blockieren willst? In den meisten Fällen reichen ein paar gezielte Blockierungen oder Stummschaltungen aus. Du wirst den Inhalt von dieser Domain nicht in irgendwelchen öffentlichen Timelines oder den Benachrichtigungen finden. Auch deine Follower von dieser Domain werden entfernt.", "confirmations.logout.confirm": "Abmelden", "confirmations.logout.message": "Bist du sicher, dass du dich abmelden möchtest?", @@ -204,7 +204,7 @@ "emoji_button.search_results": "Suchergebnisse", "emoji_button.symbols": "Symbole", "emoji_button.travel": "Reisen & Orte", - "empty_column.account_suspended": "Account dauerhaft gesperrt", + "empty_column.account_suspended": "Konto gesperrt", "empty_column.account_timeline": "Keine Beiträge vorhanden!", "empty_column.account_unavailable": "Profil nicht verfügbar", "empty_column.blocks": "Du hast bisher keine Profile blockiert.", @@ -258,14 +258,14 @@ "follow_recommendations.lead": "Beiträge von Personen, denen du folgst, werden in chronologischer Reihenfolge auf deiner Startseite angezeigt. Hab keine Angst, Fehler zu machen, du kannst den Leuten jederzeit wieder entfolgen!", "follow_request.authorize": "Erlauben", "follow_request.reject": "Ablehnen", - "follow_requests.unlocked_explanation": "Auch wenn dein Konto nicht gesperrt ist, haben die Moderator_innen von {domain} gedacht, dass du diesen Follower lieber manuell bestätigen solltest.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "follow_requests.unlocked_explanation": "Auch wenn dein Konto öffentlich bzw. nicht geschützt ist, haben die Moderator*innen von {domain} gedacht, dass du diesen Follower lieber manuell bestätigen solltest.", + "footer.about": "Über", + "footer.directory": "Profilverzeichnis", + "footer.get_app": "App herunterladen", + "footer.invite": "Leute einladen", + "footer.keyboard_shortcuts": "Tastenkombinationen", + "footer.privacy_policy": "Datenschutzerklärung", + "footer.source_code": "Quellcode anzeigen", "generic.saved": "Gespeichert", "getting_started.heading": "Erste Schritte", "hashtag.column_header.tag_mode.all": "und {additional}", @@ -329,7 +329,7 @@ "keyboard_shortcuts.spoilers": "Feld für Inhaltswarnung bzw. Triggerwarnung anzeigen/ausblenden", "keyboard_shortcuts.start": "\"Erste Schritte\"-Spalte öffnen", "keyboard_shortcuts.toggle_hidden": "Beitragstext hinter der Inhaltswarnung bzw. Triggerwarnung verstecken/anzeigen", - "keyboard_shortcuts.toggle_sensitivity": "Medien hinter einer Inhaltswarnung verstecken/anzeigen", + "keyboard_shortcuts.toggle_sensitivity": "Medien anzeigen/verbergen", "keyboard_shortcuts.toot": "Neuen Beitrag erstellen", "keyboard_shortcuts.unfocus": "Textfeld/die Suche nicht mehr fokussieren", "keyboard_shortcuts.up": "sich in der Liste hinauf bewegen", @@ -339,7 +339,7 @@ "lightbox.next": "Weiter", "lightbox.previous": "Zurück", "limited_account_hint.action": "Profil trotzdem anzeigen", - "limited_account_hint.title": "Dieses Profil wurde durch die Moderator*innen deiner Mastodon-Instanz ausgeblendet.", + "limited_account_hint.title": "Dieses Profil wurde von den Moderator*innnen der Mastodon-Instanz {domain} ausgeblendet.", "lists.account.add": "Zur Liste hinzufügen", "lists.account.remove": "Von der Liste entfernen", "lists.delete": "Liste löschen", @@ -359,7 +359,7 @@ "missing_indicator.label": "Nicht gefunden", "missing_indicator.sublabel": "Die Ressource konnte nicht gefunden werden", "mute_modal.duration": "Dauer", - "mute_modal.hide_notifications": "Benachrichtigungen von diesem Account verbergen?", + "mute_modal.hide_notifications": "Benachrichtigungen von diesem Profil verbergen?", "mute_modal.indefinite": "Unbestimmt", "navigation_bar.about": "Über", "navigation_bar.blocks": "Blockierte Profile", @@ -411,7 +411,7 @@ "notifications.column_settings.poll": "Ergebnisse von Umfragen:", "notifications.column_settings.push": "Push-Benachrichtigungen", "notifications.column_settings.reblog": "Geteilte Beiträge:", - "notifications.column_settings.show": "In der Spalte anzeigen", + "notifications.column_settings.show": "In der Timeline „Mitteilungen“ anzeigen", "notifications.column_settings.sound": "Ton abspielen", "notifications.column_settings.status": "Neue Beiträge:", "notifications.column_settings.unread_notifications.category": "Ungelesene Benachrichtigungen", @@ -420,10 +420,10 @@ "notifications.filter.all": "Alle", "notifications.filter.boosts": "Geteilte Beiträge", "notifications.filter.favourites": "Favorisierungen", - "notifications.filter.follows": "Folgt", - "notifications.filter.mentions": "Erwähnungen", - "notifications.filter.polls": "Ergebnisse der Umfrage", - "notifications.filter.statuses": "Updates von Personen, denen du folgst", + "notifications.filter.follows": "Neue Follower", + "notifications.filter.mentions": "Erwähnungen und Antworten", + "notifications.filter.polls": "Umfrageergebnisse", + "notifications.filter.statuses": "Beiträge von Personen, denen du folgst", "notifications.grant_permission": "Berechtigung erteilen.", "notifications.group": "{count} Benachrichtigungen", "notifications.mark_as_read": "Alles als gelesen markieren", @@ -444,13 +444,13 @@ "poll_button.add_poll": "Eine Umfrage erstellen", "poll_button.remove_poll": "Umfrage entfernen", "privacy.change": "Sichtbarkeit des Beitrags anpassen", - "privacy.direct.long": "Nur für im Beitrag erwähnte Mastodon-Profile sichtbar", + "privacy.direct.long": "Nur für die genannten Profile sichtbar", "privacy.direct.short": "Nur erwähnte Profile", "privacy.private.long": "Nur für deine Follower sichtbar", "privacy.private.short": "Nur Follower", "privacy.public.long": "Für alle sichtbar", "privacy.public.short": "Öffentlich", - "privacy.unlisted.long": "Sichtbar für alle, aber nicht über Entdeckungsfunktionen", + "privacy.unlisted.long": "Sichtbar für alle, aber nicht über Suchfunktion", "privacy.unlisted.short": "Nicht gelistet", "privacy_policy.last_updated": "Letztes Update am {date}", "privacy_policy.title": "Datenschutzbestimmungen", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Regelbruch", "report_notification.open": "Meldung öffnen", "search.placeholder": "Suche", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Suchen oder URL einfügen", "search_popout.search_format": "Erweiterte Suche", "search_popout.tips.full_text": "Einfache Texteingabe gibt Beiträge, die du geschrieben, favorisiert und geteilt hast, zurück; außerdem auch Beiträge, in denen du erwähnt wurdest, aber auch passende Nutzernamen, Anzeigenamen oder Hashtags.", "search_popout.tips.hashtag": "Hashtag", @@ -533,10 +533,10 @@ "server_banner.introduction": "{domain} ist Teil des dezentralen sozialen Netzwerks, das von {mastodon} betrieben wird.", "server_banner.learn_more": "Mehr erfahren", "server_banner.server_stats": "Serverstatistiken:", - "sign_in_banner.create_account": "Account erstellen", + "sign_in_banner.create_account": "Konto erstellen", "sign_in_banner.sign_in": "Einloggen", "sign_in_banner.text": "Melden Sie sich an, um Profilen oder Hashtags zu folgen, Favoriten, Teilen und Antworten auf Beiträge oder interagieren Sie von Ihrem Konto auf einem anderen Server.", - "status.admin_account": "Öffne Moderationsoberfläche für @{name}", + "status.admin_account": "Moderationsoberfläche für @{name} öffnen", "status.admin_status": "Öffne Beitrag in der Moderationsoberfläche", "status.block": "@{name} blockieren", "status.bookmark": "Lesezeichen setzen", @@ -576,7 +576,7 @@ "status.reply": "Antworten", "status.replyAll": "Allen antworten", "status.report": "@{name} melden", - "status.sensitive_warning": "Inhaltswarnung (NSFW)", + "status.sensitive_warning": "Inhaltswarnung", "status.share": "Teilen", "status.show_filter_reason": "Trotzdem anzeigen", "status.show_less": "Weniger anzeigen", @@ -623,7 +623,7 @@ "upload_form.edit": "Bearbeiten", "upload_form.thumbnail": "Miniaturansicht ändern", "upload_form.undo": "Löschen", - "upload_form.video_description": "Beschreibung des Videos für taube und hörbehinderte Menschen", + "upload_form.video_description": "Beschreibe das Video für Menschen mit einer Hör- oder Sehbehinderung", "upload_modal.analyzing_picture": "Analysiere Bild…", "upload_modal.apply": "Übernehmen", "upload_modal.applying": "Anwenden…", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Vorbereitung von OCR…", "upload_modal.preview_label": "Vorschau ({ratio})", "upload_progress.label": "Wird hochgeladen …", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Wird verarbeitet …", "video.close": "Video schließen", "video.download": "Datei herunterladen", "video.exit_fullscreen": "Vollbild verlassen", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 0e190a1e4..faa1f24c4 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -938,7 +938,7 @@ { "descriptors": [ { - "defaultMessage": "This profile has been hidden by the moderators of your server.", + "defaultMessage": "This profile has been hidden by the moderators of {domain}.", "id": "limited_account_hint.title" }, { @@ -1912,6 +1912,10 @@ "defaultMessage": "Withdraw follow request", "id": "account.cancel_follow_request" }, + { + "defaultMessage": "Withdraw request", + "id": "confirmations.cancel_follow_request.confirm" + }, { "defaultMessage": "Awaiting approval. Click to cancel follow request", "id": "account.requested" @@ -1936,6 +1940,10 @@ "defaultMessage": "Are you sure you want to unfollow {name}?", "id": "confirmations.unfollow.message" }, + { + "defaultMessage": "Are you sure you want to withdraw your request to follow {name}?", + "id": "confirmations.cancel_follow_request.message" + }, { "defaultMessage": "Posts", "id": "account.posts" diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 88957939c..eedf2905f 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -1,7 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Επικοινωνία:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Το Mastodon είναι ελεύθερο λογισμικό ανοιχτού κώδικα και εμπορικό σήμα της Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Τομέας (Domain)", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Ενέκρινε", "follow_request.reject": "Απέρριψε", "follow_requests.unlocked_explanation": "Παρόλο που ο λογαριασμός σου δεν είναι κλειδωμένος, οι διαχειριστές του {domain} θεώρησαν πως ίσως να θέλεις να ελέγξεις χειροκίνητα αυτά τα αιτήματα ακολούθησης.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Σχετικά με", + "footer.directory": "Κατάλογος προφίλ", + "footer.get_app": "Αποκτήστε την Εφαρμογή", + "footer.invite": "Πρόσκληση ατόμων", + "footer.keyboard_shortcuts": "Συντομεύσεις πληκτρολογίου", + "footer.privacy_policy": "Πολιτική απορρήτου", + "footer.source_code": "Προβολή πηγαίου κώδικα", "generic.saved": "Αποθηκεύτηκε", "getting_started.heading": "Αφετηρία", "hashtag.column_header.tag_mode.all": "και {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Επόμενο", "lightbox.previous": "Προηγούμενο", "limited_account_hint.action": "Εμφάνιση προφίλ ούτως ή άλλως", - "limited_account_hint.title": "Αυτό το προφίλ έχει αποκρυφτεί από τους διαχειριστές του διακομιστή σας.", + "limited_account_hint.title": "Αυτό το προφίλ έχει αποκρυφτεί από τους διαχειριστές του διακομιστή {domain}.", "lists.account.add": "Πρόσθεσε στη λίστα", "lists.account.remove": "Βγάλε από τη λίστα", "lists.delete": "Διαγραφή λίστας", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Παραβίαση κανόνα", "report_notification.open": "Open report", "search.placeholder": "Αναζήτηση", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Αναζήτηση ή εισαγωγή URL", "search_popout.search_format": "Προχωρημένη αναζήτηση", "search_popout.tips.full_text": "Απλό κείμενο που επιστρέφει καταστάσεις που έχεις γράψει, έχεις σημειώσει ως αγαπημένες, έχεις προωθήσει ή έχεις αναφερθεί σε αυτές, καθώς και όσα ονόματα χρηστών και ετικέτες ταιριάζουν.", "search_popout.tips.hashtag": "ετικέτα", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Προετοιμασία αναγνώρισης κειμένου…", "upload_modal.preview_label": "Προεπισκόπηση ({ratio})", "upload_progress.label": "Ανεβαίνει...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Επεξεργασία…", "video.close": "Κλείσε το βίντεο", "video.download": "Λήψη αρχείου", "video.exit_fullscreen": "Έξοδος από πλήρη οθόνη", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 6f4078306..a812530bb 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -339,7 +339,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 3e258a6c8..d420d4a08 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -1,18 +1,18 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.blocks": "Moderigitaj serviloj", + "about.contact": "Kontakto:", + "about.disclaimer": "Mastodon estas libera, malfermitkoda programaro kaj varmarko de la firmao Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", + "about.domain_blocks.severity": "Graveco", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", "about.domain_blocks.suspended.title": "Suspended", "about.not_available": "This information has not been made available on this server.", "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.rules": "Reguloj de la servilo", "account.account_note_header": "Noto", "account.add_or_remove_from_list": "Aldoni al aŭ forigi el listoj", "account.badges.bot": "Roboto", @@ -175,8 +175,8 @@ "conversation.mark_as_read": "Marki legita", "conversation.open": "Vidi konversacion", "conversation.with": "Kun {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Kopiita", + "copypaste.copy": "Kopii", "directory.federated": "El konata fediverso", "directory.local": "Nur de {domain}", "directory.new_arrivals": "Novaj alvenoj", @@ -259,13 +259,13 @@ "follow_request.authorize": "Rajtigi", "follow_request.reject": "Rifuzi", "follow_requests.unlocked_explanation": "Kvankam via konto ne estas ŝlosita, la teamo de {domain} pensas, ke vi eble volas permane kontroli la demandojn de sekvado de ĉi tiuj kontoj.", - "footer.about": "About", + "footer.about": "Pri", "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", + "footer.get_app": "Akiru la Programon", + "footer.invite": "Inviti homojn", "footer.keyboard_shortcuts": "Keyboard shortcuts", "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.source_code": "Montri fontkodon", "generic.saved": "Konservita", "getting_started.heading": "Por komenci", "hashtag.column_header.tag_mode.all": "kaj {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Antaŭen", "lightbox.previous": "Malantaŭen", "limited_account_hint.action": "Montru profilon ĉiukaze", - "limited_account_hint.title": "La profilo estas kaŝita de la moderigantoj de via servilo.", + "limited_account_hint.title": "La profilo estas kaŝita de la moderigantoj de {domain}.", "lists.account.add": "Aldoni al la listo", "lists.account.remove": "Forigi de la listo", "lists.delete": "Forigi la liston", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Malobservo de la regulo", "report_notification.open": "Malfermi la raporton", "search.placeholder": "Serĉi", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Serĉu aŭ algluu URL-on", "search_popout.search_format": "Detala serĉo", "search_popout.tips.full_text": "Simplaj tekstoj montras la mesaĝojn, kiujn vi skribis, stelumis, diskonigis, aŭ en kiuj vi estis menciita, sed ankaŭ kongruajn uzantnomojn, montratajn nomojn, kaj kradvortojn.", "search_popout.tips.hashtag": "kradvorto", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Preparante OSR…", "upload_modal.preview_label": "Antaŭvido ({ratio})", "upload_progress.label": "Alŝutado…", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Traktante…", "video.close": "Fermi la videon", "video.download": "Elŝuti dosieron", "video.exit_fullscreen": "Eksigi plenekrana", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index a554d391d..e2a165aa0 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -1,7 +1,7 @@ { "about.blocks": "Servidores moderados", "about.contact": "Contacto:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon es software libre y de código abierto y una marca comercial de Mastodon gGmbH.", "about.domain_blocks.comment": "Motivo", "about.domain_blocks.domain": "Dominio", "about.domain_blocks.preamble": "Mastodon normalmente te permite ver el contenido e interactuar con los usuarios de cualquier otro servidor en el fediverso. Estas son las excepciones que se han hecho en este servidor en particular.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rechazar", "follow_requests.unlocked_explanation": "A pesar de que tu cuenta no es privada, el equipo de {domain} pensó que podrías querer revisar manualmente las solicitudes de seguimiento de estas cuentas.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Información", + "footer.directory": "Directorio de perfiles", + "footer.get_app": "Conseguí la aplicación", + "footer.invite": "Invitá a gente", + "footer.keyboard_shortcuts": "Atajos de teclado", + "footer.privacy_policy": "Política de privacidad", + "footer.source_code": "Ver código fuente", "generic.saved": "Guardado", "getting_started.heading": "Inicio de Mastodon", "hashtag.column_header.tag_mode.all": "y {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Siguiente", "lightbox.previous": "Anterior", "limited_account_hint.action": "Mostrar perfil de todos modos", - "limited_account_hint.title": "Este perfil fue ocultado por los moderadores de tu servidor.", + "limited_account_hint.title": "Este perfil fue ocultado por los moderadores de {domain}.", "lists.account.add": "Agregar a lista", "lists.account.remove": "Quitar de lista", "lists.delete": "Eliminar lista", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Violación de regla", "report_notification.open": "Abrir denuncia", "search.placeholder": "Buscar", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Buscar o pegar dirección web", "search_popout.search_format": "Formato de búsqueda avanzada", "search_popout.tips.full_text": "Las búsquedas de texto simple devuelven los mensajes que escribiste, los marcados como favoritos, los adheridos o en los que te mencionaron, así como nombres de usuarios, nombres mostrados y etiquetas.", "search_popout.tips.hashtag": "etiqueta", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Preparando OCR…", "upload_modal.preview_label": "Previsualización ({ratio})", "upload_progress.label": "Subiendo...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Procesando…", "video.close": "Cerrar video", "video.download": "Descargar archivo", "video.exit_fullscreen": "Salir de la pantalla completa", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 44a2131ae..1b73dfb3f 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -40,7 +40,7 @@ "account.follows.empty": "Este usuario todavía no sigue a nadie.", "account.follows_you": "Te sigue", "account.hide_reblogs": "Ocultar retoots de @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Se unió", "account.languages": "Cambiar idiomas suscritos", "account.link_verified_on": "El proprietario de este link fue comprobado el {date}", "account.locked_info": "El estado de privacidad de esta cuenta està configurado como bloqueado. El proprietario debe revisar manualmente quien puede seguirle.", @@ -80,23 +80,23 @@ "audio.hide": "Ocultar audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Puedes hacer clic en {combo} para saltar este aviso la próxima vez", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Copiar informe de error", + "bundle_column_error.error.body": "La página solicitada no pudo ser renderizada. Podría deberse a un error en nuestro código o a un problema de compatibilidad con el navegador.", + "bundle_column_error.error.title": "¡Oh, no!", + "bundle_column_error.network.body": "Se ha producido un error al intentar cargar esta página. Esto puede deberse a un problema temporal con tu conexión a internet o a este servidor.", + "bundle_column_error.network.title": "Error de red", "bundle_column_error.retry": "Inténtalo de nuevo", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Volver al inicio", + "bundle_column_error.routing.body": "No se pudo encontrar la página solicitada. ¿Estás seguro de que la URL en la barra de direcciones es correcta?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Cerrar", "bundle_modal_error.message": "Algo salió mal al cargar este componente.", "bundle_modal_error.retry": "Inténtalo de nuevo", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Como Mastodon es descentralizado, puedes crear una cuenta en otro servidor y seguir interactuando con este.", + "closed_registrations_modal.description": "La creación de una cuenta en {domain} no es posible actualmente, pero ten en cuenta que no necesitas una cuenta específicamente en {domain} para usar Mastodon.", + "closed_registrations_modal.find_another_server": "Buscar otro servidor", + "closed_registrations_modal.preamble": "Mastodon es descentralizado, por lo que no importa dónde crees tu cuenta, podrás seguir e interactuar con cualquier persona en este servidor. ¡Incluso puedes alojarlo tú mismo!", + "closed_registrations_modal.title": "Registrarse en Mastodon", "column.about": "Acerca de", "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", @@ -339,7 +339,7 @@ "lightbox.next": "Siguiente", "lightbox.previous": "Anterior", "limited_account_hint.action": "Mostrar perfil de todos modos", - "limited_account_hint.title": "Este perfil ha sido ocultado por los moderadores de tu servidor.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Añadir a lista", "lists.account.remove": "Quitar de lista", "lists.delete": "Borrar lista", @@ -382,7 +382,7 @@ "navigation_bar.pins": "Toots fijados", "navigation_bar.preferences": "Preferencias", "navigation_bar.public_timeline": "Historia federada", - "navigation_bar.search": "Search", + "navigation_bar.search": "Buscar", "navigation_bar.security": "Seguridad", "not_signed_in_indicator.not_signed_in": "Necesitas iniciar sesión para acceder a este recurso.", "notification.admin.report": "{name} informó {target}", @@ -572,7 +572,7 @@ "status.reblogs.empty": "Nadie retooteó este toot todavía. Cuando alguien lo haga, aparecerá aquí.", "status.redraft": "Borrar y volver a borrador", "status.remove_bookmark": "Eliminar marcador", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Respondió a {name}", "status.reply": "Responder", "status.replyAll": "Responder al hilo", "status.report": "Reportar", @@ -585,7 +585,7 @@ "status.show_more_all": "Mostrar más para todo", "status.show_original": "Mostrar original", "status.translate": "Traducir", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Traducido de {lang} usando {provider}", "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 870f428b9..a1c2541e9 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -339,7 +339,7 @@ "lightbox.next": "Siguiente", "lightbox.previous": "Anterior", "limited_account_hint.action": "Mostrar perfil de todos modos", - "limited_account_hint.title": "Este perfil ha sido ocultado por los moderadores de tu servidor.", + "limited_account_hint.title": "Este perfil ha sido ocultado por los moderadores de {domain}.", "lists.account.add": "Añadir a lista", "lists.account.remove": "Quitar de lista", "lists.delete": "Borrar lista", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 4584704ac..a11a06b3b 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -339,7 +339,7 @@ "lightbox.next": "Järgmine", "lightbox.previous": "Eelmine", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Lisa nimistusse", "lists.account.remove": "Eemalda nimistust", "lists.delete": "Kustuta nimistu", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index d27817992..eff59c505 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -1,7 +1,7 @@ { "about.blocks": "Moderatutako zerbitzariak", "about.contact": "Kontaktua:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon software libre eta kode irekikoa da, eta Mastodon gGmbH-ren marka erregistratua.", "about.domain_blocks.comment": "Arrazoia", "about.domain_blocks.domain": "Domeinua", "about.domain_blocks.preamble": "Mastodonek orokorrean aukera ematen dizu fedibertsoko beste zerbitzarietako erabiltzaileen edukia ikusi eta haiekin komunikatzeko. Zerbitzari zehatz honi ezarritako salbuespenak hauek dira.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Baimendu", "follow_request.reject": "Ukatu", "follow_requests.unlocked_explanation": "Zure kontua blokeatuta ez badago ere, {domain} domeinuko arduradunek uste dute kontu hauetako jarraipen eskariak agian eskuz begiratu nahiko dituzula.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Honi buruz", + "footer.directory": "Profil-direktorioa", + "footer.get_app": "Eskuratu aplikazioa", + "footer.invite": "Gonbidatu jendea", + "footer.keyboard_shortcuts": "Lasterbideak", + "footer.privacy_policy": "Pribatutasun politika", + "footer.source_code": "Ikusi iturburu kodea", "generic.saved": "Gordea", "getting_started.heading": "Menua", "hashtag.column_header.tag_mode.all": "eta {osagarria}", @@ -339,7 +339,7 @@ "lightbox.next": "Hurrengoa", "lightbox.previous": "Aurrekoa", "limited_account_hint.action": "Erakutsi profila hala ere", - "limited_account_hint.title": "Profil hau ezkutatu egin dute zure zerbitzariko moderatzaileek.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Gehitu zerrendara", "lists.account.remove": "Kendu zerrendatik", "lists.delete": "Ezabatu zerrenda", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Arau haustea", "report_notification.open": "Ireki salaketa", "search.placeholder": "Bilatu", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Bilatu edo itsatsi URLa", "search_popout.search_format": "Bilaketa aurreratuaren formatua", "search_popout.tips.full_text": "Testu hutsarekin zuk idatzitako bidalketak, gogokoak, bultzadak edo aipamenak aurkitu ditzakezu, bat datozen erabiltzaile-izenak, pantaila-izenak, eta traolak.", "search_popout.tips.hashtag": "traola", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "OCR prestatzen…", "upload_modal.preview_label": "Aurreikusi ({ratio})", "upload_progress.label": "Igotzen...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Prozesatzen…", "video.close": "Itxi bideoa", "video.download": "Deskargatu fitxategia", "video.exit_fullscreen": "Irten pantaila osotik", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index b9c67fa06..259b125e4 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -1,7 +1,7 @@ { "about.blocks": "کارسازهای نظارت شده", "about.contact": "تماس:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "ماستودون نرم‌افزار آزاد، متن باز و یک شرکت غیر انتفاعی با مسئولیت محدود طبق قوانین آلمان است.", "about.domain_blocks.comment": "دلیل", "about.domain_blocks.domain": "دامنه", "about.domain_blocks.preamble": "ماستودون عموماً می‌گذارد محتوا را از از هر کارساز دیگری در دنیای شبکه‌های اجتماعی غیرمتمرکز دیده و با آنان برهم‌کنش داشته باشید. این‌ها استثناهایی هستند که روی این کارساز خاص وضع شده‌اند.", @@ -259,13 +259,13 @@ "follow_request.authorize": "اجازه دهید", "follow_request.reject": "رد کنید", "follow_requests.unlocked_explanation": "با این که حسابتان قفل نیست، کارکنان {domain} فکر کردند که ممکن است بخواهید درخواست‌ها از این حساب‌ها را به صورت دستی بازبینی کنید.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "درباره", + "footer.directory": "فهرست نمایه‌ها", + "footer.get_app": "گرفتن کاره", + "footer.invite": "دعوت دیگران", + "footer.keyboard_shortcuts": "میانبرهای صفحه‌کلید", + "footer.privacy_policy": "سیاست حریم خصوصی", + "footer.source_code": "مشاهده کد منبع", "generic.saved": "ذخیره شده", "getting_started.heading": "آغاز کنید", "hashtag.column_header.tag_mode.all": "و {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "بعدی", "lightbox.previous": "قبلی", "limited_account_hint.action": "به هر روی نمایه نشان داده شود", - "limited_account_hint.title": "این نمایه از سوی ناظم‌های کارسازتان پنهان شده.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "افزودن به سیاهه", "lists.account.remove": "برداشتن از سیاهه", "lists.delete": "حذف سیاهه", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "در حال آماده سازی OCR…", "upload_modal.preview_label": "پیش‌نمایش ({ratio})", "upload_progress.label": "در حال بارگذاری…", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "در حال پردازش…", "video.close": "بستن ویدیو", "video.download": "بارگیری پرونده", "video.exit_fullscreen": "خروج از حالت تمام‌صفحه", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 99d6cd40b..b214dfe9f 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -1,7 +1,7 @@ { "about.blocks": "Moderoidut palvelimet", "about.contact": "Yhteystiedot:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon on ilmainen avoimen lähdekoodin ohjelmisto ja Mastodon gGmbH:n tavaramerkki.", "about.domain_blocks.comment": "Syy", "about.domain_blocks.domain": "Verkkotunnus", "about.domain_blocks.preamble": "Mastodonin avulla voit yleensä tarkastella sisältöä ja olla vuorovaikutuksessa käyttäjien kanssa millä tahansa muulla palvelimella fediversessä. Nämä ovat poikkeuksia, jotka on tehty tälle palvelimelle.", @@ -22,7 +22,7 @@ "account.blocked": "Estetty", "account.browse_more_on_origin_server": "Selaile lisää alkuperäisellä palvelimella", "account.cancel_follow_request": "Peruuta seurantapyyntö", - "account.direct": "Pikaviesti käyttäjälle @{name}", + "account.direct": "Yksityisviesti käyttäjälle @{name}", "account.disable_notifications": "Lopeta @{name}:n julkaisuista ilmoittaminen", "account.domain_blocked": "Verkko-osoite piilotettu", "account.edit_profile": "Muokkaa profiilia", @@ -40,7 +40,7 @@ "account.follows.empty": "Tämä käyttäjä ei vielä seuraa ketään.", "account.follows_you": "Seuraa sinua", "account.hide_reblogs": "Piilota buustaukset käyttäjältä @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Liittynyt", "account.languages": "Vaihda tilattuja kieliä", "account.link_verified_on": "Tämän linkin omistaja tarkistettiin {date}", "account.locked_info": "Tämän tilin yksityisyyden tila on asetettu lukituksi. Omistaja arvioi manuaalisesti, kuka voi seurata niitä.", @@ -92,11 +92,11 @@ "bundle_modal_error.close": "Sulje", "bundle_modal_error.message": "Jokin meni vikaan komponenttia ladattaessa.", "bundle_modal_error.retry": "Yritä uudelleen", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations.other_server_instructions": "Koska Mastodon on hajautettu, voit luoda tilin toiselle palvelimelle ja silti olla vuorovaikutuksessa tämän kanssa.", + "closed_registrations_modal.description": "Tilin luominen palvelimeen {domain} ei ole tällä hetkellä mahdollista, mutta huomioi, että et tarvitse tiliä erityisesti palvelimeen {domain} käyttääksesi Mastodonia.", "closed_registrations_modal.find_another_server": "Etsi toinen palvelin", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations_modal.preamble": "Mastodon on hajautettu, joten riippumatta siitä, missä luot tilisi, voit seurata ja olla vuorovaikutuksessa kenen tahansa kanssa tällä palvelimella. Voit jopa isännöidä palvelinta!", + "closed_registrations_modal.title": "Rekisteröityminen Mastodoniin", "column.about": "Tietoja", "column.blocks": "Estetyt käyttäjät", "column.bookmarks": "Kirjanmerkit", @@ -205,7 +205,7 @@ "emoji_button.symbols": "Symbolit", "emoji_button.travel": "Matkailu ja paikat", "empty_column.account_suspended": "Tilin käyttäminen keskeytetty", - "empty_column.account_timeline": "Täällä ei viestejä!", + "empty_column.account_timeline": "Ei viestejä täällä.", "empty_column.account_unavailable": "Profiilia ei löydy", "empty_column.blocks": "Et ole vielä estänyt yhtään käyttäjää.", "empty_column.bookmarked_statuses": "Et ole vielä lisännyt viestejä kirjanmerkkeihisi. Kun lisäät yhden, se näkyy tässä.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Valtuuta", "follow_request.reject": "Hylkää", "follow_requests.unlocked_explanation": "Vaikka tiliäsi ei ole lukittu, {domain}:n ylläpitäjien mielestä saatat haluta tarkistaa nämä seurauspyynnöt manuaalisesti.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Tietoja", + "footer.directory": "Profiilihakemisto", + "footer.get_app": "Hanki sovellus", + "footer.invite": "Kutsu ihmisiä", + "footer.keyboard_shortcuts": "Pikanäppäimet", + "footer.privacy_policy": "Tietosuojakäytäntö", + "footer.source_code": "Näytä lähdekoodi", "generic.saved": "Tallennettu", "getting_started.heading": "Näin pääset alkuun", "hashtag.column_header.tag_mode.all": "ja {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Seuraava", "lightbox.previous": "Edellinen", "limited_account_hint.action": "Näytä profiili joka tapauksessa", - "limited_account_hint.title": "Tämä profiili on piilotettu serverisi valvojien toimesta.", + "limited_account_hint.title": "Palvelun {domain} moderaattorit ovat piilottaneet tämän profiilin.", "lists.account.add": "Lisää listaan", "lists.account.remove": "Poista listasta", "lists.delete": "Poista lista", @@ -382,7 +382,7 @@ "navigation_bar.pins": "Kiinnitetyt viestit", "navigation_bar.preferences": "Asetukset", "navigation_bar.public_timeline": "Yleinen aikajana", - "navigation_bar.search": "Search", + "navigation_bar.search": "Haku", "navigation_bar.security": "Turvallisuus", "not_signed_in_indicator.not_signed_in": "Sinun täytyy kirjautua sisään päästäksesi käsiksi tähän resurssiin.", "notification.admin.report": "{name} ilmoitti {target}", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Sääntöjen rikkominen", "report_notification.open": "Avaa raportti", "search.placeholder": "Hae", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Etsi tai kirjoita URL-osoite", "search_popout.search_format": "Tarkennettu haku", "search_popout.tips.full_text": "Tekstihaku listaa tilapäivitykset, jotka olet kirjoittanut, lisännyt suosikkeihisi, boostannut tai joissa sinut mainitaan, sekä tekstin sisältävät käyttäjänimet, nimimerkit ja hastagit.", "search_popout.tips.hashtag": "aihetunnisteet", @@ -545,7 +545,7 @@ "status.copy": "Kopioi linkki julkaisuun", "status.delete": "Poista", "status.detailed_status": "Yksityiskohtainen keskustelunäkymä", - "status.direct": "Pikaviesti käyttäjälle @{name}", + "status.direct": "Yksityisviesti käyttäjälle @{name}", "status.edit": "Muokkaa", "status.edited": "Muokattu {date}", "status.edited_x_times": "Muokattu {count, plural, one {{count} aika} other {{count} kertaa}}", @@ -572,7 +572,7 @@ "status.reblogs.empty": "Kukaan ei ole vielä buustannut tätä viestiä. Kun joku tekee niin, näkyy kyseinen henkilö tässä.", "status.redraft": "Poista ja palauta muokattavaksi", "status.remove_bookmark": "Poista kirjanmerkki", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Vastaa käyttäjälle {name}", "status.reply": "Vastaa", "status.replyAll": "Vastaa ketjuun", "status.report": "Raportoi @{name}", @@ -585,7 +585,7 @@ "status.show_more_all": "Näytä lisää kaikista", "status.show_original": "Näytä alkuperäinen", "status.translate": "Käännä", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Käännetty kielestä {lang} käyttäen palvelua {provider}", "status.uncached_media_warning": "Ei saatavilla", "status.unmute_conversation": "Poista keskustelun mykistys", "status.unpin": "Irrota profiilista", @@ -605,7 +605,7 @@ "time_remaining.seconds": "{number, plural, one {# sekunti} other {# sekuntia}} jäljellä", "timeline_hint.remote_resource_not_displayed": "{resource} muilta palvelimilta ei näytetä.", "timeline_hint.resources.followers": "Seuraajat", - "timeline_hint.resources.follows": "Seuraa", + "timeline_hint.resources.follows": "seurattua", "timeline_hint.resources.statuses": "Vanhemmat julkaisut", "trends.counter_by_accounts": "{count, plural, one {{counter} henkilö} other {{counter} henkilöä}} viimeinen {days, plural, one {päivä} other {{days} päivää}}", "trends.trending_now": "Suosittua nyt", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Valmistellaan OCR…", "upload_modal.preview_label": "Esikatselu ({ratio})", "upload_progress.label": "Ladataan...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Käsitellään…", "video.close": "Sulje video", "video.download": "Lataa tiedosto", "video.exit_fullscreen": "Poistu koko näytön tilasta", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 894f3599e..a7c966b70 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -1,20 +1,20 @@ { "about.blocks": "Serveurs modérés", "about.contact": "Contact :", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon est un logiciel libre, open-source et une marque déposée de Mastodon gGmbH.", "about.domain_blocks.comment": "Motif :", "about.domain_blocks.domain": "Domaine", "about.domain_blocks.preamble": "Mastodon vous permet généralement de visualiser le contenu et d'interagir avec les utilisateurs de n'importe quel autre serveur dans le fédiverse. Voici les exceptions qui ont été faites sur ce serveur en particulier.", "about.domain_blocks.severity": "Sévérité", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.silenced.explanation": "Vous ne verrez généralement pas les profils et le contenu de ce serveur, à moins que vous ne les recherchiez explicitement ou que vous ne choisissiez de les suivre.", + "about.domain_blocks.silenced.title": "Limité", + "about.domain_blocks.suspended.explanation": "Aucune donnée de ce serveur ne sera traitée, enregistrée ou échangée, rendant impossible toute interaction ou communication avec les utilisateurs de ce serveur.", "about.domain_blocks.suspended.title": "Suspendu", - "about.not_available": "This information has not been made available on this server.", + "about.not_available": "Cette information n'a pas été rendue disponibles sur ce serveur.", "about.powered_by": "Réseau social décentralisé propulsé par {mastodon}", "about.rules": "Règles du serveur", "account.account_note_header": "Note", - "account.add_or_remove_from_list": "Ajouter ou retirer des listes", + "account.add_or_remove_from_list": "Ajouter ou enlever des listes", "account.badges.bot": "Bot", "account.badges.group": "Groupe", "account.block": "Bloquer @{name}", @@ -23,7 +23,7 @@ "account.browse_more_on_origin_server": "Parcourir davantage sur le profil original", "account.cancel_follow_request": "Retirer la demande d’abonnement", "account.direct": "Envoyer un message direct à @{name}", - "account.disable_notifications": "Ne plus me notifier quand @{name} publie quelque chose", + "account.disable_notifications": "Ne plus me notifier quand @{name} publie", "account.domain_blocked": "Domaine bloqué", "account.edit_profile": "Modifier le profil", "account.enable_notifications": "Me notifier quand @{name} publie quelque chose", @@ -80,26 +80,26 @@ "audio.hide": "Masquer l'audio", "autosuggest_hashtag.per_week": "{count} par semaine", "boost_modal.combo": "Vous pouvez appuyer sur {combo} pour passer ceci la prochaine fois", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.copy_stacktrace": "Copier le rapport d'erreur", + "bundle_column_error.error.body": "La page demandée n'a pas pu être affichée. Cela peut être dû à un bogue dans notre code, ou à un problème de compatibilité avec le navigateur.", "bundle_column_error.error.title": "Oh non !", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.body": "Une erreur s'est produite lors du chargement de cette page. Cela peut être dû à un problème temporaire avec votre connexion internet ou avec ce serveur.", "bundle_column_error.network.title": "Erreur réseau", "bundle_column_error.retry": "Réessayer", - "bundle_column_error.return": "Go back home", + "bundle_column_error.return": "Retour à l'accueil", "bundle_column_error.routing.body": "La page demandée est introuvable. Êtes-vous sûr que l’URL dans la barre d’adresse est correcte ?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Fermer", "bundle_modal_error.message": "Une erreur s’est produite lors du chargement de ce composant.", "bundle_modal_error.retry": "Réessayer", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations.other_server_instructions": "Puisque Mastodon est décentralisé, vous pouvez créer un compte sur un autre serveur et interagir quand même avec celui-ci.", + "closed_registrations_modal.description": "Créer un compte sur {domain} est actuellement impossible, néanmoins souvenez-vous que vous n'avez pas besoin d'un compte spécifiquement sur {domain} pour utiliser Mastodon.", "closed_registrations_modal.find_another_server": "Trouver un autre serveur", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "S’inscrire sur Mastodon", + "closed_registrations_modal.preamble": "Mastodon est décentralisé : peu importe où vous créez votre votre, vous serez en mesure de suivre et d'interagir avec quiconque sur ce serveur. Vous pouvez même l'héberger !", + "closed_registrations_modal.title": "Inscription sur Mastodon", "column.about": "À propos", - "column.blocks": "Comptes bloqués", - "column.bookmarks": "Marque-pages", + "column.blocks": "Utilisateurs bloqués", + "column.bookmarks": "Signets", "column.community": "Fil public local", "column.direct": "Messages directs", "column.directory": "Parcourir les profils", @@ -151,7 +151,7 @@ "confirmations.block.confirm": "Bloquer", "confirmations.block.message": "Voulez-vous vraiment bloquer {name} ?", "confirmations.cancel_follow_request.confirm": "Retirer la demande", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.message": "Êtes-vous sûr de vouloir retirer votre demande pour suivre {name} ?", "confirmations.delete.confirm": "Supprimer", "confirmations.delete.message": "Voulez-vous vraiment supprimer ce message ?", "confirmations.delete_list.confirm": "Supprimer", @@ -182,11 +182,11 @@ "directory.new_arrivals": "Inscrit·e·s récemment", "directory.recently_active": "Actif·ve·s récemment", "dismissable_banner.community_timeline": "Voici les messages publics les plus récents des personnes dont les comptes sont hébergés par {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "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_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.dismiss": "Rejeter", + "dismissable_banner.explore_links": "Ces nouvelles sont actuellement en cours de discussion par des personnes sur d'autres serveurs du réseau décentralisé ainsi que sur celui-ci.", + "dismissable_banner.explore_statuses": "Ces publications depuis les serveurs du réseau décentralisé, dont celui-ci, sont actuellement en train de gagner de l'ampleur sur ce serveur.", + "dismissable_banner.explore_tags": "Ces hashtags sont actuellement en train de gagner de l'ampleur parmi les personnes sur les serveurs du réseau décentralisé dont celui-ci.", + "dismissable_banner.public_timeline": "Ce sont les publications publiques les plus récentes des personnes sur les serveurs du réseau décentralisé dont ce serveur que celui-ci connaît.", "embed.instructions": "Intégrez ce message à votre site en copiant le code ci-dessous.", "embed.preview": "Il apparaîtra comme cela :", "emoji_button.activity": "Activités", @@ -241,7 +241,7 @@ "filter_modal.added.context_mismatch_title": "Incompatibilité du contexte !", "filter_modal.added.expired_explanation": "Cette catégorie de filtre a expiré, vous devrez modifier la date d'expiration pour qu'elle soit appliquée.", "filter_modal.added.expired_title": "Filtre expiré !", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure": "Pour passer en revue et approfondir la configuration de cette catégorie de filtre, aller sur le {settings_link}.", "filter_modal.added.review_and_configure_title": "Paramètres du filtre", "filter_modal.added.settings_link": "page des paramètres", "filter_modal.added.short_explanation": "Ce message a été ajouté à la catégorie de filtre suivante : {title}.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Accepter", "follow_request.reject": "Rejeter", "follow_requests.unlocked_explanation": "Même si votre compte n’est pas privé, l’équipe de {domain} a pensé que vous pourriez vouloir consulter manuellement les demandes de suivi de ces comptes.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "À propos", + "footer.directory": "Annuaire des profils", + "footer.get_app": "Télécharger l’application", + "footer.invite": "Inviter des personnes", + "footer.keyboard_shortcuts": "Raccourcis clavier", + "footer.privacy_policy": "Politique de confidentialité", + "footer.source_code": "Voir le code source", "generic.saved": "Sauvegardé", "getting_started.heading": "Pour commencer", "hashtag.column_header.tag_mode.all": "et {additional}", @@ -284,15 +284,15 @@ "home.column_settings.show_replies": "Afficher les réponses", "home.hide_announcements": "Masquer les annonces", "home.show_announcements": "Afficher les annonces", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.favourite": "Avec un compte Mastodon, vous pouvez ajouter ce post aux favoris pour informer l'auteur que vous l'appréciez et le sauvegarder pour plus tard.", + "interaction_modal.description.follow": "Avec un compte Mastodon, vous pouvez suivre {name} et recevoir leurs posts dans votre fil d'actualité.", "interaction_modal.description.reblog": "Avec un compte sur Mastodon, vous pouvez booster ce message pour le partager avec vos propres abonné·e·s.", "interaction_modal.description.reply": "Avec un compte sur Mastodon, vous pouvez répondre à ce message.", "interaction_modal.on_another_server": "Sur un autre serveur", "interaction_modal.on_this_server": "Sur ce serveur", "interaction_modal.other_server_instructions": "Copiez et collez simplement cette URL dans la barre de recherche de votre application préférée ou dans l’interface web où vous êtes connecté.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.preamble": "Puisque Mastodon est décentralisé, vous pouvez utiliser votre compte existant hébergé par un autre serveur Mastodon ou une plateforme compatible si vous n'avez pas de compte sur celui-ci.", + "interaction_modal.title.favourite": "Ajouter de post de {name} aux favoris", "interaction_modal.title.follow": "Suivre {name}", "interaction_modal.title.reblog": "Partager la publication de {name}", "interaction_modal.title.reply": "Répondre au message de {name}", @@ -339,7 +339,7 @@ "lightbox.next": "Suivant", "lightbox.previous": "Précédent", "limited_account_hint.action": "Afficher le profil quand même", - "limited_account_hint.title": "Ce profil a été masqué par la modération de votre serveur.", + "limited_account_hint.title": "Ce profil a été masqué par la modération de {domain}.", "lists.account.add": "Ajouter à la liste", "lists.account.remove": "Supprimer de la liste", "lists.delete": "Supprimer la liste", @@ -408,7 +408,7 @@ "notifications.column_settings.follow": "Nouveaux·elles abonné·e·s :", "notifications.column_settings.follow_request": "Nouvelles demandes d’abonnement :", "notifications.column_settings.mention": "Mentions :", - "notifications.column_settings.poll": "Résultats des sondage :", + "notifications.column_settings.poll": "Résultats des sondages :", "notifications.column_settings.push": "Notifications push", "notifications.column_settings.reblog": "Partages :", "notifications.column_settings.show": "Afficher dans la colonne", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Infraction aux règles du serveur", "report_notification.open": "Ouvrir le signalement", "search.placeholder": "Rechercher", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Rechercher ou saisir une URL", "search_popout.search_format": "Recherche avancée", "search_popout.tips.full_text": "Un texte normal retourne les messages que vous avez écrits, ajoutés à vos favoris, partagés, ou vous mentionnant, ainsi que les identifiants, les noms affichés, et les hashtags des personnes et messages correspondants.", "search_popout.tips.hashtag": "hashtag", @@ -535,7 +535,7 @@ "server_banner.server_stats": "Statistiques du serveur :", "sign_in_banner.create_account": "Créer un compte", "sign_in_banner.sign_in": "Se connecter", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "sign_in_banner.text": "Connectez-vous pour suivre les profils ou les hashtags, ajouter aux favoris, partager et répondre aux messages, ou interagir depuis votre compte sur un autre serveur.", "status.admin_account": "Ouvrir l’interface de modération pour @{name}", "status.admin_status": "Ouvrir ce message dans l’interface de modération", "status.block": "Bloquer @{name}", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Préparation de l’OCR…", "upload_modal.preview_label": "Aperçu ({ratio})", "upload_progress.label": "Envoi en cours…", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "En cours…", "video.close": "Fermer la vidéo", "video.download": "Télécharger le fichier", "video.exit_fullscreen": "Quitter le plein écran", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index 89db3f327..9f905e3f8 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -339,7 +339,7 @@ "lightbox.next": "Fierder", "lightbox.previous": "Werom", "limited_account_hint.action": "Profyl dochs besjen", - "limited_account_hint.title": "Dit profyl is ferstoppe troch de behearders fan jo tsjinner.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Oan list tafoegje", "lists.account.remove": "Ut list wei smite", "lists.delete": "List fuortsmite", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index d24e1aaec..0bedff883 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -1,15 +1,15 @@ { "about.blocks": "Freastalaithe faoi stiúir", "about.contact": "Teagmháil:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Bogearra foinse oscailte saor in aisce is ea Mastodon, agus is le Mastodon gGmbH an trádmharc.", "about.domain_blocks.comment": "Fáth", "about.domain_blocks.domain": "Fearann", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", + "about.domain_blocks.severity": "Déine", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.silenced.title": "Teoranta", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", + "about.domain_blocks.suspended.title": "Ar fionraí", "about.not_available": "This information has not been made available on this server.", "about.powered_by": "Decentralized social media powered by {mastodon}", "about.rules": "Rialacha an fhreastalaí", @@ -21,16 +21,16 @@ "account.block_domain": "Bac ainm fearainn {domain}", "account.blocked": "Bactha", "account.browse_more_on_origin_server": "Brabhsáil níos mó ar an phróifíl bhunaidh", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Éirigh as iarratas leanta", "account.direct": "Seol teachtaireacht dhíreach chuig @{name}", "account.disable_notifications": "Éirigh as ag cuir mé in eol nuair bpostálann @{name}", "account.domain_blocked": "Ainm fearainn bactha", "account.edit_profile": "Cuir an phróifíl in eagar", "account.enable_notifications": "Cuir mé in eol nuair bpostálann @{name}", "account.endorse": "Cuir ar an phróifíl mar ghné", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Postáil is déanaí ar {date}", + "account.featured_tags.last_status_never": "Níl postáil ar bith ann", + "account.featured_tags.title": "Haischlib {name}", "account.follow": "Lean", "account.followers": "Leantóirí", "account.followers.empty": "Ní leanann éinne an t-úsáideoir seo fós.", @@ -40,7 +40,7 @@ "account.follows.empty": "Ní leanann an t-úsáideoir seo duine ar bith fós.", "account.follows_you": "Do do leanúint", "account.hide_reblogs": "Folaigh athphostálacha ó @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Chuaigh i", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "Tá an socrú príobháideachais don cuntas seo curtha go 'faoi ghlas'. Déanann an t-úinéir léirmheas ar cén daoine atá ceadaithe an cuntas leanúint.", @@ -68,40 +68,40 @@ "account_note.placeholder": "Cliceáil chun nóta a chuir leis", "admin.dashboard.daily_retention": "Ráta coinneála an úsáideora de réir an lae tar éis clárú", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", - "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.", - "alert.rate_limited.title": "Rate limited", - "alert.unexpected.message": "An unexpected error occurred.", + "admin.dashboard.retention.average": "Meán", + "admin.dashboard.retention.cohort": "Mí cláraraithe", + "admin.dashboard.retention.cohort_size": "Úsáideoirí nua", + "alert.rate_limited.message": "Atriail aris tar éis {retry_time, time, medium}.", + "alert.rate_limited.title": "Rátatheoranta", + "alert.unexpected.message": "Tharla earráid gan choinne.", "alert.unexpected.title": "Hiúps!", "announcement.announcement": "Fógra", "attachments_list.unprocessed": "(unprocessed)", - "audio.hide": "Hide audio", - "autosuggest_hashtag.per_week": "{count} per week", + "audio.hide": "Cuir fuaim i bhfolach", + "autosuggest_hashtag.per_week": "{count} sa seachtain", "boost_modal.combo": "Is féidir leat brúigh {combo} chun é seo a scipeáil an chéad uair eile", "bundle_column_error.copy_stacktrace": "Copy error report", "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.error.title": "Ná habair!", "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.network.title": "Earráid líonra", "bundle_column_error.retry": "Bain triail as arís", - "bundle_column_error.return": "Go back home", + "bundle_column_error.return": "Téigh abhaile", "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Dún", - "bundle_modal_error.message": "Something went wrong while loading this component.", + "bundle_modal_error.message": "Chuaigh rud éigin mícheart nuair a bhí an chomhpháirt seo ag lódáil.", "bundle_modal_error.retry": "Bain triail as arís", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations.other_server_instructions": "Mar rud díláraithe Mastodon, is féidir leat cuntas a chruthú ar seirbheálaí eile ach fós idirghníomhaigh leis an ceann seo.", "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.find_another_server": "Faigh freastalaí eile", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", + "closed_registrations_modal.title": "Cláraigh le Mastodon", + "column.about": "Maidir le", "column.blocks": "Cuntais choiscthe", "column.bookmarks": "Leabharmharcanna", "column.community": "Amlíne áitiúil", - "column.direct": "Direct messages", + "column.direct": "Teachtaireachtaí dhíreacha", "column.directory": "Brabhsáil próifílí", "column.domain_blocks": "Blocked domains", "column.favourites": "Roghanna", @@ -110,34 +110,34 @@ "column.lists": "Liostaí", "column.mutes": "Úsáideoirí balbhaithe", "column.notifications": "Fógraí", - "column.pins": "Pinned post", - "column.public": "Federated timeline", + "column.pins": "Postálacha pionnáilte", + "column.public": "Amlíne cónaidhmithe", "column_back_button.label": "Siar", - "column_header.hide_settings": "Hide settings", + "column_header.hide_settings": "Folaigh socruithe", "column_header.moveLeft_settings": "Move column to the left", "column_header.moveRight_settings": "Move column to the right", "column_header.pin": "Greamaigh", - "column_header.show_settings": "Show settings", + "column_header.show_settings": "Taispeáin socruithe", "column_header.unpin": "Díghreamaigh", "column_subheading.settings": "Socruithe", "community.column_settings.local_only": "Áitiúil amháin", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Remote only", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", - "compose_form.direct_message_warning_learn_more": "Learn more", + "compose.language.change": "Athraigh teanga", + "compose.language.search": "Cuardaigh teangacha...", + "compose_form.direct_message_warning_learn_more": "Tuilleadh eolais", "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": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", - "compose_form.lock_disclaimer.lock": "locked", + "compose_form.lock_disclaimer.lock": "faoi ghlas", "compose_form.placeholder": "Cad atá ag tarlú?", - "compose_form.poll.add_option": "Add a choice", + "compose_form.poll.add_option": "Cuir rogha isteach", "compose_form.poll.duration": "Poll duration", - "compose_form.poll.option_placeholder": "Choice {number}", - "compose_form.poll.remove_option": "Remove this choice", - "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", - "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", - "compose_form.publish": "Publish", + "compose_form.poll.option_placeholder": "Rogha {number}", + "compose_form.poll.remove_option": "Bain an rogha seo", + "compose_form.poll.switch_to_multiple": "Athraigh suirbhé chun cead a thabhairt do ilrogha", + "compose_form.poll.switch_to_single": "Athraigh suirbhé chun cead a thabhairt do rogha amháin", + "compose_form.publish": "Foilsigh", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", @@ -147,40 +147,40 @@ "compose_form.spoiler.unmarked": "Text is not hidden", "compose_form.spoiler_placeholder": "Write your warning here", "confirmation_modal.cancel": "Cealaigh", - "confirmations.block.block_and_report": "Block & Report", - "confirmations.block.confirm": "Block", - "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.block.block_and_report": "Bac ⁊ Tuairiscigh", + "confirmations.block.confirm": "Bac", + "confirmations.block.message": "An bhfuil tú cinnte gur mhaith leat {name} a bhac?", "confirmations.cancel_follow_request.confirm": "Withdraw request", "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Scrios", "confirmations.delete.message": "An bhfuil tú cinnte gur mhaith leat an phostáil seo a scriosadh?", "confirmations.delete_list.confirm": "Scrios", - "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", + "confirmations.delete_list.message": "An bhfuil tú cinnte gur mhaith leat an liosta seo a scriosadh go buan?", "confirmations.discard_edit_media.confirm": "Faigh réidh de", "confirmations.discard_edit_media.message": "Tá athruithe neamhshlánaithe don tuarascáil gné nó réamhamharc agat, faigh réidh dóibh ar aon nós?", "confirmations.domain_block.confirm": "Hide entire domain", "confirmations.domain_block.message": "An bhfuil tú iontach cinnte gur mhaith leat bac an t-ainm fearainn {domain} in iomlán? I bhformhór na gcásanna, is leor agus is fearr cúpla baic a cur i bhfeidhm nó cúpla úsáideoirí a balbhú. Ní fheicfidh tú ábhair ón t-ainm fearainn sin in amlíne ar bith, nó i d'fhógraí. Scaoilfear do leantóirí ón ainm fearainn sin.", "confirmations.logout.confirm": "Logáil amach", - "confirmations.logout.message": "Are you sure you want to log out?", + "confirmations.logout.message": "An bhfuil tú cinnte gur mhaith leat logáil amach?", "confirmations.mute.confirm": "Balbhaigh", "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.", "confirmations.mute.message": "An bhfuil tú cinnte gur mhaith leat {name} a bhalbhú?", "confirmations.redraft.confirm": "Delete & redraft", "confirmations.redraft.message": "An bhfuil tú cinnte gur mhaith leat an phostáil sin a scriosadh agus athdhréachtú? Beidh roghanna agus treisithe caillte, agus beidh freagraí ar an bpostáil bhunúsach ina ndílleachtaí.", - "confirmations.reply.confirm": "Reply", + "confirmations.reply.confirm": "Freagair", "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Ná lean", "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", "conversation.delete": "Delete conversation", - "conversation.mark_as_read": "Mark as read", + "conversation.mark_as_read": "Marcáil mar léite", "conversation.open": "View conversation", "conversation.with": "With {names}", "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copy": "Cóipeáil", "directory.federated": "From known fediverse", "directory.local": "Ó {domain} amháin", - "directory.new_arrivals": "New arrivals", - "directory.recently_active": "Recently active", + "directory.new_arrivals": "Daoine atá tar éis teacht", + "directory.recently_active": "Daoine gníomhacha le déanaí", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -190,21 +190,21 @@ "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Gníomhaíocht", - "emoji_button.clear": "Clear", - "emoji_button.custom": "Custom", - "emoji_button.flags": "Flags", + "emoji_button.clear": "Glan", + "emoji_button.custom": "Saincheaptha", + "emoji_button.flags": "Bratacha", "emoji_button.food": "Bia ⁊ Ól", - "emoji_button.label": "Insert emoji", + "emoji_button.label": "Cuir emoji isteach", "emoji_button.nature": "Nádur", "emoji_button.not_found": "No matching emojis found", "emoji_button.objects": "Objects", "emoji_button.people": "Daoine", "emoji_button.recent": "Frequently used", "emoji_button.search": "Cuardaigh...", - "emoji_button.search_results": "Search results", - "emoji_button.symbols": "Symbols", + "emoji_button.search_results": "Torthaí cuardaigh", + "emoji_button.symbols": "Comharthaí", "emoji_button.travel": "Taisteal ⁊ Áiteanna", - "empty_column.account_suspended": "Account suspended", + "empty_column.account_suspended": "Cuntas ar fionraí", "empty_column.account_timeline": "Níl postálacha ar bith anseo!", "empty_column.account_unavailable": "Níl an phróifíl ar fáil", "empty_column.blocks": "You haven't blocked any users yet.", @@ -231,8 +231,8 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.report_issue": "Report issue", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", + "explore.search_results": "Torthaí cuardaigh", + "explore.suggested_follows": "Duitse", "explore.title": "Féach thart", "explore.trending_links": "Nuacht", "explore.trending_statuses": "Postálacha", @@ -243,12 +243,12 @@ "filter_modal.added.expired_title": "Expired filter!", "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", + "filter_modal.added.settings_link": "leathan socruithe", "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", "filter_modal.added.title": "Filter added!", "filter_modal.select_filter.context_mismatch": "does not apply to this context", "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.prompt_new": "Catagóir nua: {name}", "filter_modal.select_filter.search": "Search or create", "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", "filter_modal.select_filter.title": "Filter this post", @@ -259,18 +259,18 @@ "follow_request.authorize": "Ceadaigh", "follow_request.reject": "Diúltaigh", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", - "footer.about": "About", + "footer.about": "Maidir le", "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", + "footer.get_app": "Faigh an aip", "footer.invite": "Invite people", "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", + "footer.privacy_policy": "Polasaí príobháideachais", "footer.source_code": "View source code", "generic.saved": "Saved", "getting_started.heading": "Getting started", - "hashtag.column_header.tag_mode.all": "and {additional}", - "hashtag.column_header.tag_mode.any": "or {additional}", - "hashtag.column_header.tag_mode.none": "without {additional}", + "hashtag.column_header.tag_mode.all": "agus {additional}", + "hashtag.column_header.tag_mode.any": "nó {additional}", + "hashtag.column_header.tag_mode.none": "gan {additional}", "hashtag.column_settings.select.no_options_message": "No suggestions found", "hashtag.column_settings.select.placeholder": "Enter hashtags…", "hashtag.column_settings.tag_mode.all": "All of these", @@ -279,7 +279,7 @@ "hashtag.column_settings.tag_toggle": "Include additional tags in this column", "hashtag.follow": "Follow hashtag", "hashtag.unfollow": "Unfollow hashtag", - "home.column_settings.basic": "Basic", + "home.column_settings.basic": "Bunúsach", "home.column_settings.show_reblogs": "Taispeáin treisithe", "home.column_settings.show_replies": "Show replies", "home.hide_announcements": "Hide announcements", @@ -288,8 +288,8 @@ "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", + "interaction_modal.on_another_server": "Ar freastalaí eile", + "interaction_modal.on_this_server": "Ar an freastalaí seo", "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", @@ -304,7 +304,7 @@ "keyboard_shortcuts.boost": "Treisigh postáil", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", - "keyboard_shortcuts.description": "Description", + "keyboard_shortcuts.description": "Cuntas", "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "Oscail postáil", @@ -333,57 +333,57 @@ "keyboard_shortcuts.toot": "Cuir tús le postáil nua", "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search", "keyboard_shortcuts.up": "to move up in the list", - "lightbox.close": "Close", + "lightbox.close": "Dún", "lightbox.compress": "Compress image view box", "lightbox.expand": "Expand image view box", - "lightbox.next": "Next", - "lightbox.previous": "Previous", + "lightbox.next": "An céad eile", + "lightbox.previous": "Roimhe seo", "limited_account_hint.action": "Taispeáin an phróifíl ar aon nós", - "limited_account_hint.title": "Tá an phróifíl seo curtha i bhfolach ag na modhnóra do fhreastalaí.", - "lists.account.add": "Add to list", - "lists.account.remove": "Remove from list", - "lists.delete": "Delete list", + "limited_account_hint.title": "Tá an phróifíl seo curtha i bhfolach ag na modhnóra {domain}.", + "lists.account.add": "Cuir leis an liosta", + "lists.account.remove": "Scrios as an liosta", + "lists.delete": "Scrios liosta", "lists.edit": "Cuir an liosta in eagar", "lists.edit.submit": "Athraigh teideal", - "lists.new.create": "Add list", + "lists.new.create": "Cruthaigh liosta", "lists.new.title_placeholder": "New list title", "lists.replies_policy.followed": "Any followed user", "lists.replies_policy.list": "Members of the list", - "lists.replies_policy.none": "No one", + "lists.replies_policy.none": "Duine ar bith", "lists.replies_policy.title": "Show replies to:", "lists.search": "Search among people you follow", - "lists.subheading": "Your lists", + "lists.subheading": "Do liostaí", "load_pending": "{count, plural, one {# new item} other {# new items}}", - "loading_indicator.label": "Loading...", + "loading_indicator.label": "Ag lódáil...", "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", - "missing_indicator.label": "Not found", + "missing_indicator.label": "Níor aimsíodh é", "missing_indicator.sublabel": "This resource could not be found", "mute_modal.duration": "Tréimhse", "mute_modal.hide_notifications": "Cuir póstalacha ón t-úsáideoir seo i bhfolach?", "mute_modal.indefinite": "Gan téarma", - "navigation_bar.about": "About", + "navigation_bar.about": "Maidir le", "navigation_bar.blocks": "Blocked users", - "navigation_bar.bookmarks": "Bookmarks", + "navigation_bar.bookmarks": "Leabharmharcanna", "navigation_bar.community_timeline": "Amlíne áitiúil", "navigation_bar.compose": "Cum postáil nua", - "navigation_bar.direct": "Direct messages", - "navigation_bar.discover": "Discover", + "navigation_bar.direct": "Teachtaireachtaí dhíreacha", + "navigation_bar.discover": "Faigh amach", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Cuir an phróifíl in eagar", - "navigation_bar.explore": "Explore", + "navigation_bar.explore": "Féach thart", "navigation_bar.favourites": "Roghanna", "navigation_bar.filters": "Focail bhalbhaithe", - "navigation_bar.follow_requests": "Follow requests", + "navigation_bar.follow_requests": "Iarratais leanúnaí", "navigation_bar.follows_and_followers": "Ag leanúint agus do do leanúint", "navigation_bar.lists": "Liostaí", "navigation_bar.logout": "Logáil Amach", "navigation_bar.mutes": "Úsáideoirí balbhaithe", "navigation_bar.personal": "Pearsanta", - "navigation_bar.pins": "Pinned posts", - "navigation_bar.preferences": "Preferences", - "navigation_bar.public_timeline": "Federated timeline", - "navigation_bar.search": "Search", - "navigation_bar.security": "Security", + "navigation_bar.pins": "Postálacha pionnáilte", + "navigation_bar.preferences": "Sainroghanna pearsanta", + "navigation_bar.public_timeline": "Amlíne cónaidhmithe", + "navigation_bar.search": "Cuardaigh", + "navigation_bar.security": "Slándáil", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", @@ -398,7 +398,7 @@ "notification.update": "Chuir {name} postáil in eagar", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", - "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.report": "Tuairiscí nua:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Roghanna:", @@ -417,10 +417,10 @@ "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.column_settings.update": "Eagair:", - "notifications.filter.all": "All", + "notifications.filter.all": "Uile", "notifications.filter.boosts": "Treisithe", "notifications.filter.favourites": "Roghanna", - "notifications.filter.follows": "Follows", + "notifications.filter.follows": "Ag leanúint", "notifications.filter.mentions": "Mentions", "notifications.filter.polls": "Poll results", "notifications.filter.statuses": "Updates from people you follow", @@ -433,12 +433,12 @@ "notifications_permission_banner.enable": "Enable desktop notifications", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.title": "Never miss a thing", - "picture_in_picture.restore": "Put it back", - "poll.closed": "Closed", - "poll.refresh": "Refresh", + "picture_in_picture.restore": "Cuir é ar ais", + "poll.closed": "Dúnta", + "poll.refresh": "Athnuaigh", "poll.total_people": "{count, plural, one {# person} other {# people}}", "poll.total_votes": "{count, plural, one {# vote} other {# votes}}", - "poll.vote": "Vote", + "poll.vote": "Vótáil", "poll.voted": "You voted for this answer", "poll.votes": "{votes, plural, one {# vote} other {# votes}}", "poll_button.add_poll": "Add a poll", @@ -451,30 +451,30 @@ "privacy.public.long": "Visible for all", "privacy.public.short": "Poiblí", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", - "privacy.unlisted.short": "Unlisted", + "privacy.unlisted.short": "Neamhliostaithe", "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", - "refresh": "Refresh", + "privacy_policy.title": "Polasaí príobháideachais", + "refresh": "Athnuaigh", "regeneration_indicator.label": "Ag lódáil…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", - "relative_time.days": "{number}d", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", - "relative_time.hours": "{number}h", - "relative_time.just_now": "now", - "relative_time.minutes": "{number}m", + "relative_time.days": "{number}l", + "relative_time.full.days": "{number, plural, one {# lá} other {# lá}} ó shin", + "relative_time.full.hours": "{number, plural, one {# uair} other {# uair}} ó shin", + "relative_time.full.just_now": "díreach anois", + "relative_time.full.minutes": "{number, plural, one {# nóiméad} other {# nóiméad}} ó shin", + "relative_time.full.seconds": "{number, plural, one {# soicind} other {# soicind}} ó shin", + "relative_time.hours": "{number}u", + "relative_time.just_now": "anois", + "relative_time.minutes": "{number}n", "relative_time.seconds": "{number}s", "relative_time.today": "inniu", - "reply_indicator.cancel": "Cancel", - "report.block": "Block", + "reply_indicator.cancel": "Cealaigh", + "report.block": "Bac", "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", - "report.categories.other": "Other", + "report.categories.other": "Eile", "report.categories.spam": "Turscar", "report.categories.violation": "Content violates one or more server rules", - "report.category.subtitle": "Choose the best match", + "report.category.subtitle": "Roghnaigh an toradh is fearr", "report.category.title": "Tell us what's going on with this {type}", "report.category.title_account": "próifíl", "report.category.title_status": "postáil", @@ -484,13 +484,13 @@ "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", "report.mute": "Balbhaigh", "report.mute_explanation": "Ní fheicfidh tú a postálacha. Is féidir an té seo tú a leanúint agus do phostálacha a fheiceáil, agus ní fhios go bhfuil iad balbhaithe.", - "report.next": "Next", - "report.placeholder": "Type or paste additional comments", + "report.next": "An céad eile", + "report.placeholder": "Ráitis bhreise", "report.reasons.dislike": "Ní maith liom é", "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", + "report.reasons.other": "Is rud eile é", "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", + "report.reasons.spam": "Is turscar é", "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", "report.reasons.violation": "It violates server rules", "report.reasons.violation_description": "You are aware that it breaks specific rules", @@ -507,10 +507,10 @@ "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", - "report_notification.categories.spam": "Spam", + "report_notification.categories.other": "Eile", + "report_notification.categories.spam": "Turscar", "report_notification.categories.violation": "Rule violation", - "report_notification.open": "Open report", + "report_notification.open": "Oscail tuairisc", "search.placeholder": "Cuardaigh", "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", @@ -518,9 +518,9 @@ "search_popout.tips.hashtag": "haischlib", "search_popout.tips.status": "postáil", "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", - "search_popout.tips.user": "user", + "search_popout.tips.user": "úsáideoir", "search_results.accounts": "Daoine", - "search_results.all": "All", + "search_results.all": "Uile", "search_results.hashtags": "Haischlibeanna", "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Postálacha", @@ -531,41 +531,41 @@ "server_banner.active_users": "active users", "server_banner.administered_by": "Administered by:", "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", + "server_banner.learn_more": "Tuilleadh eolais", "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.sign_in": "Sinigh isteach", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", - "status.block": "Block @{name}", - "status.bookmark": "Bookmark", + "status.block": "Bac @{name}", + "status.bookmark": "Leabharmharcanna", "status.cancel_reblog_private": "Díthreisigh", "status.cannot_reblog": "Ní féidir an phostáil seo a threisiú", "status.copy": "Copy link to status", "status.delete": "Scrios", "status.detailed_status": "Detailed conversation view", - "status.direct": "Direct message @{name}", + "status.direct": "Seol teachtaireacht dhíreach chuig @{name}", "status.edit": "Cuir in eagar", "status.edited": "Curtha in eagar in {date}", "status.edited_x_times": "Curtha in eagar {count, plural, one {{count} uair amháin} two {{count} uair} few {{count} uair} many {{count} uair} other {{count} uair}}", - "status.embed": "Embed", + "status.embed": "Leabaigh", "status.favourite": "Rogha", "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "Curtha in eagar ag {name} in {date}", - "status.load_more": "Load more", + "status.load_more": "Lódáil a thuilleadh", "status.media_hidden": "Media hidden", - "status.mention": "Mention @{name}", + "status.mention": "Luaigh @{name}", "status.more": "Tuilleadh", "status.mute": "Balbhaigh @{name}", "status.mute_conversation": "Balbhaigh comhrá", "status.open": "Expand this status", "status.pin": "Pionnáil ar do phróifíl", "status.pinned": "Pinned post", - "status.read_more": "Read more", + "status.read_more": "Léan a thuilleadh", "status.reblog": "Treisigh", "status.reblog_private": "Treisigh le léargas bunúsach", "status.reblogged_by": "Treisithe ag {name}", @@ -573,20 +573,20 @@ "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", "status.replied_to": "Replied to {name}", - "status.reply": "Reply", + "status.reply": "Freagair", "status.replyAll": "Reply to thread", - "status.report": "Report @{name}", + "status.report": "Tuairiscigh @{name}", "status.sensitive_warning": "Sensitive content", - "status.share": "Share", + "status.share": "Comhroinn", "status.show_filter_reason": "Show anyway", "status.show_less": "Show less", "status.show_less_all": "Show less for all", "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.translate": "Translate", - "status.translated_from_with": "Translated from {lang} using {provider}", - "status.uncached_media_warning": "Not available", + "status.translate": "Aistrigh", + "status.translated_from_with": "D'Aistrigh ón {lang} ag úsáid {provider}", + "status.uncached_media_warning": "Ní ar fáil", "status.unmute_conversation": "Díbhalbhaigh comhrá", "status.unpin": "Díphionnáil de do phróifíl", "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", @@ -597,7 +597,7 @@ "tabs_bar.federated_timeline": "Federated", "tabs_bar.home": "Baile", "tabs_bar.local_timeline": "Áitiúil", - "tabs_bar.notifications": "Notifications", + "tabs_bar.notifications": "Fógraí", "time_remaining.days": "{number, plural, one {# day} other {# days}} left", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", @@ -606,9 +606,9 @@ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.", "timeline_hint.resources.followers": "Leantóirí", "timeline_hint.resources.follows": "Follows", - "timeline_hint.resources.statuses": "Older posts", + "timeline_hint.resources.statuses": "Postáilí níos sine", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", - "trends.trending_now": "Trending now", + "trends.trending_now": "Ag treochtáil anois", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", "units.short.million": "{count}M", @@ -622,26 +622,26 @@ "upload_form.description_missing": "No description added", "upload_form.edit": "Cuir in eagar", "upload_form.thumbnail": "Change thumbnail", - "upload_form.undo": "Delete", + "upload_form.undo": "Scrios", "upload_form.video_description": "Describe for people with hearing loss or visual impairment", - "upload_modal.analyzing_picture": "Analyzing picture…", - "upload_modal.apply": "Apply", + "upload_modal.analyzing_picture": "Ag anailísiú íomhá…", + "upload_modal.apply": "Cuir i bhFeidhm", "upload_modal.applying": "Applying…", - "upload_modal.choose_image": "Choose image", - "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog", + "upload_modal.choose_image": "Roghnaigh íomhá", + "upload_modal.description_placeholder": "Chuaigh bé mhórsách le dlúthspád fíorfhinn trí hata mo dhea-phorcáin bhig", "upload_modal.detect_text": "Detect text from picture", "upload_modal.edit_media": "Cuir gné in eagar", "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", - "upload_progress.label": "Uploading…", - "upload_progress.processing": "Processing…", - "video.close": "Close video", - "video.download": "Download file", + "upload_progress.label": "Ag uaslódáil...", + "upload_progress.processing": "Ag próiseáil…", + "video.close": "Dún físeán", + "video.download": "Íoslódáil comhad", "video.exit_fullscreen": "Exit full screen", - "video.expand": "Expand video", + "video.expand": "Leath físeán", "video.fullscreen": "Full screen", - "video.hide": "Hide video", + "video.hide": "Cuir físeán i bhfolach", "video.mute": "Ciúnaigh fuaim", "video.pause": "Cuir ar sos", "video.play": "Cuir ar siúl", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index cc0e47630..078d7701c 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -339,7 +339,7 @@ "lightbox.next": "Air adhart", "lightbox.previous": "Air ais", "limited_account_hint.action": "Seall a’ phròifil co-dhiù", - "limited_account_hint.title": "Chaidh a’ phròifil seo fhalach le maoir an fhrithealaiche agad.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Cuir ris an liosta", "lists.account.remove": "Thoir air falbh on liosta", "lists.delete": "Sguab às an liosta", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 009cb2dad..1f9d462f7 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -1,7 +1,7 @@ { "about.blocks": "Servidores moderados", "about.contact": "Contacto:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon é software libre, de código aberto, e unha marca comercial de Mastodon gGmbH.", "about.domain_blocks.comment": "Razón", "about.domain_blocks.domain": "Dominio", "about.domain_blocks.preamble": "Mastodon de xeito xeral permíteche ver contidos doutros servidores do fediverso e interactuar coas súas usuarias. Estas son as excepcións que se estabeleceron neste servidor en particular.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rexeitar", "follow_requests.unlocked_explanation": "Malia que a túa conta non é privada, a administración de {domain} pensou que quizabes terías que revisar de xeito manual as solicitudes de seguiminto.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Acerca de", + "footer.directory": "Directorio de perfís", + "footer.get_app": "Obtén a app", + "footer.invite": "Convidar persoas", + "footer.keyboard_shortcuts": "Atallos do teclado", + "footer.privacy_policy": "Política de privacidade", + "footer.source_code": "Ver código fonte", "generic.saved": "Gardado", "getting_started.heading": "Primeiros pasos", "hashtag.column_header.tag_mode.all": "e {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Seguinte", "lightbox.previous": "Anterior", "limited_account_hint.action": "Mostrar perfil igualmente", - "limited_account_hint.title": "Este perfil foi agochado pola moderación do teu servidor.", + "limited_account_hint.title": "Este perfil foi agochado pola moderación de {domain}.", "lists.account.add": "Engadir á listaxe", "lists.account.remove": "Eliminar da listaxe", "lists.delete": "Eliminar listaxe", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Faltou ás regras", "report_notification.open": "Abrir a denuncia", "search.placeholder": "Procurar", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Busca ou insire URL", "search_popout.search_format": "Formato de procura avanzada", "search_popout.tips.full_text": "Texto simple devolve toots que ti escribiches, promoviches, marcaches favoritos, ou foches mencionada, así como nomes de usuaria coincidentes, nomes públicos e cancelos.", "search_popout.tips.hashtag": "cancelo", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Preparando OCR…", "upload_modal.preview_label": "Vista previa ({ratio})", "upload_progress.label": "Estase a subir...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Procesando…", "video.close": "Pechar vídeo", "video.download": "Baixar ficheiro", "video.exit_fullscreen": "Saír da pantalla completa", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index f886519e8..c52d763dd 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -339,7 +339,7 @@ "lightbox.next": "הבא", "lightbox.previous": "הקודם", "limited_account_hint.action": "הצג חשבון בכל זאת", - "limited_account_hint.title": "פרופיל זה הוסתר ע\"י מנהלי השרת שלך.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "הוסף לרשימה", "lists.account.remove": "הסר מרשימה", "lists.delete": "מחיקת רשימה", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index a3efc91c6..3698009cc 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -339,7 +339,7 @@ "lightbox.next": "अगला", "lightbox.previous": "पिछला", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "सूची से निकालें", "lists.delete": "सूची हटाएँ", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index c413ef2b6..cba8fa3d9 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -339,7 +339,7 @@ "lightbox.next": "Sljedeće", "lightbox.previous": "Prethodno", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Dodaj na listu", "lists.account.remove": "Ukloni s liste", "lists.delete": "Izbriši listu", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index f5682122a..bced7fc73 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -1,7 +1,7 @@ { "about.blocks": "Moderált kiszolgálók", "about.contact": "Kapcsolat:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "A Mastodon ingyenes, nyílt forráskódú szoftver, a Mastodon gGmbH védejegye.", "about.domain_blocks.comment": "Indoklás", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "A Mastodon általában mindenféle tartalomcserét és interakciót lehetővé tesz bármelyik másik kiszolgálóval a födiverzumban. Ezek azok a kivételek, amelyek a mi kiszolgálónkon érvényben vannak.", @@ -92,11 +92,11 @@ "bundle_modal_error.close": "Bezárás", "bundle_modal_error.message": "Hiba történt a komponens betöltésekor.", "bundle_modal_error.retry": "Próbáld újra", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Mivel a Mastdon decentralizált, létrehozhatsz egy fiókot egy másik kiszolgálón és mégis kapcsolódhatsz ehhez.", + "closed_registrations_modal.description": "Fiók létrehozása a {domain} kiszolgálón jelenleg nem lehetséges, de jó, ha tudod, hogy nem szükséges fiókkal rendelkezni pont a {domain} kiszolgálón, hogy használhasd a Mastodont.", + "closed_registrations_modal.find_another_server": "Másik kiszolgáló keresése", + "closed_registrations_modal.preamble": "A Mastodon decentralizált, így teljesen mindegy, hol hozod létre a fiókodat, követhetsz és kapcsolódhatsz bárkivel ezen a kiszolgálón is. Saját magad is üzemeltethetsz kiszolgálót!", + "closed_registrations_modal.title": "Regisztráció a Mastodonra", "column.about": "Névjegy", "column.blocks": "Letiltott felhasználók", "column.bookmarks": "Könyvjelzők", @@ -259,13 +259,13 @@ "follow_request.authorize": "Engedélyezés", "follow_request.reject": "Elutasítás", "follow_requests.unlocked_explanation": "Bár a fiókod nincs zárolva, a(z) {domain} csapata úgy gondolta, hogy talán kézzel szeretnéd ellenőrizni a fiók követési kéréseit.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Névjegy", + "footer.directory": "Profilok", + "footer.get_app": "Töltsd le az appot", + "footer.invite": "Mások meghívása", + "footer.keyboard_shortcuts": "Billentyűparancsok", + "footer.privacy_policy": "Adatvédelmi szabályzat", + "footer.source_code": "Forráskód megtekintése", "generic.saved": "Elmentve", "getting_started.heading": "Első lépések", "hashtag.column_header.tag_mode.all": "és {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Következő", "lightbox.previous": "Előző", "limited_account_hint.action": "Mindenképpen mutassa a profilt", - "limited_account_hint.title": "Ezt a profilt a kiszolgálód moderátorai elrejtették.", + "limited_account_hint.title": "Ezt a profilt a(z) {domain} moderátorai elrejtették.", "lists.account.add": "Hozzáadás a listához", "lists.account.remove": "Eltávolítás a listából", "lists.delete": "Lista törlése", @@ -382,7 +382,7 @@ "navigation_bar.pins": "Kitűzött bejegyzések", "navigation_bar.preferences": "Beállítások", "navigation_bar.public_timeline": "Föderációs idővonal", - "navigation_bar.search": "Search", + "navigation_bar.search": "Keresés", "navigation_bar.security": "Biztonság", "not_signed_in_indicator.not_signed_in": "Az erőforrás eléréséhez be kell jelentkezned.", "notification.admin.report": "{name} jelentette: {target}", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Szabálysértés", "report_notification.open": "Bejelentés megnyitása", "search.placeholder": "Keresés", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Keresés vagy URL beillesztése", "search_popout.search_format": "Speciális keresés", "search_popout.tips.full_text": "Egyszerű szöveg, mely általad írt, kedvencnek jelölt vagy megtolt bejegyzéseket, rólad szóló megemlítéseket, felhasználói neveket, megjelenített neveket, hashtageket ad majd vissza.", "search_popout.tips.hashtag": "hashtag", @@ -572,7 +572,7 @@ "status.reblogs.empty": "Senki sem tolta még meg ezt a bejegyzést. Ha valaki megteszi, itt fog megjelenni.", "status.redraft": "Törlés és újraírás", "status.remove_bookmark": "Könyvjelző eltávolítása", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Megválaszolva {name} számára", "status.reply": "Válasz", "status.replyAll": "Válasz a beszélgetésre", "status.report": "@{name} bejelentése", @@ -585,7 +585,7 @@ "status.show_more_all": "Többet mindenhol", "status.show_original": "Eredeti mutatása", "status.translate": "Fordítás", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "{lang} nyelvről fordítva {provider} szolgáltatással", "status.uncached_media_warning": "Nem érhető el", "status.unmute_conversation": "Beszélgetés némításának feloldása", "status.unpin": "Kitűzés eltávolítása a profilodról", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "OCR előkészítése…", "upload_modal.preview_label": "Előnézet ({ratio})", "upload_progress.label": "Feltöltés...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Feldolgozás…", "video.close": "Videó bezárása", "video.download": "Fájl letöltése", "video.exit_fullscreen": "Kilépés teljes képernyőből", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index 798153c27..ff246d03f 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -339,7 +339,7 @@ "lightbox.next": "Յաջորդ", "lightbox.previous": "Նախորդ", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Աւելացնել ցանկին", "lists.account.remove": "Հանել ցանկից", "lists.delete": "Ջնջել ցանկը", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index b75a1a332..80642586c 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -1,7 +1,7 @@ { "about.blocks": "Server yang dimoderasi", "about.contact": "Hubungi:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon addalah perangkat lunak bebas dan sumber terbuka, dan adalah merek dagang dari Mastodon gGmbH.", "about.domain_blocks.comment": "Alasan", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon umumnya mengizinkan Anda untuk melihat konten dan berinteraksi dengan pengguna dari server lain di fediverse. Ini adalah pengecualian yang dibuat untuk beberapa server.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Izinkan", "follow_request.reject": "Tolak", "follow_requests.unlocked_explanation": "Meskipun akun Anda tidak dikunci, staf {domain} menyarankan Anda untuk meninjau permintaan mengikuti dari akun-akun ini secara manual.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Tentang", + "footer.directory": "Direktori profil", + "footer.get_app": "Dapatkan aplikasi", + "footer.invite": "Undang orang", + "footer.keyboard_shortcuts": "Pintasan papan ketik", + "footer.privacy_policy": "Kebijakan privasi", + "footer.source_code": "Lihat kode sumber", "generic.saved": "Disimpan", "getting_started.heading": "Mulai", "hashtag.column_header.tag_mode.all": "dan {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Selanjutnya", "lightbox.previous": "Sebelumnya", "limited_account_hint.action": "Tetap tampilkan profil", - "limited_account_hint.title": "Profil ini telah disembunyikan oleh moderator server Anda.", + "limited_account_hint.title": "Profil ini telah disembunyikan oleh moderator {domain}.", "lists.account.add": "Tambah ke daftar", "lists.account.remove": "Hapus dari daftar", "lists.delete": "Hapus daftar", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Pelanggaran peraturan", "report_notification.open": "Buka laporan", "search.placeholder": "Pencarian", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Cari atau ketik URL", "search_popout.search_format": "Format pencarian mahir", "search_popout.tips.full_text": "Teks simpel memberikan kiriman yang Anda telah tulis, favorit, boost, atau status yang menyebut Anda, serta nama pengguna, nama yang ditampilkan, dan tagar yang cocok.", "search_popout.tips.hashtag": "tagar", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Menyiapkan OCR…", "upload_modal.preview_label": "Pratinjau ({ratio})", "upload_progress.label": "Mengunggah...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Memproses…", "video.close": "Tutup video", "video.download": "Unduh berkas", "video.exit_fullscreen": "Keluar dari layar penuh", diff --git a/app/javascript/mastodon/locales/ig.json b/app/javascript/mastodon/locales/ig.json index c2cae1370..207d094b3 100644 --- a/app/javascript/mastodon/locales/ig.json +++ b/app/javascript/mastodon/locales/ig.json @@ -31,14 +31,14 @@ "account.featured_tags.last_status_at": "Last post on {date}", "account.featured_tags.last_status_never": "No posts", "account.featured_tags.title": "{name}'s featured hashtags", - "account.follow": "Follow", + "account.follow": "Soro", "account.followers": "Followers", "account.followers.empty": "No one follows this user yet.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", - "account.follows_you": "Follows you", + "account.follows_you": "Na-eso gị", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -61,7 +61,7 @@ "account.unblock_domain": "Unblock domain {domain}", "account.unblock_short": "Unblock", "account.unendorse": "Don't feature on profile", - "account.unfollow": "Unfollow", + "account.unfollow": "Kwụsị iso", "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", "account.unmute_short": "Unmute", @@ -70,14 +70,14 @@ "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.retention.cohort_size": "Ojiarụ ọhụrụ", "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.", "alert.rate_limited.title": "Rate limited", "alert.unexpected.message": "An unexpected error occurred.", "alert.unexpected.title": "Oops!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", - "audio.hide": "Hide audio", + "audio.hide": "Zoo ụda", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.copy_stacktrace": "Copy error report", @@ -85,28 +85,28 @@ "bundle_column_error.error.title": "Oh, no!", "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", "bundle_column_error.network.title": "Network error", - "bundle_column_error.retry": "Try again", + "bundle_column_error.retry": "Nwaa ọzọ", "bundle_column_error.return": "Go back home", "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", - "bundle_modal_error.retry": "Try again", + "bundle_modal_error.retry": "Nwaa ọzọ", "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", "closed_registrations_modal.find_another_server": "Find another server", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", - "column.blocks": "Blocked users", - "column.bookmarks": "Bookmarks", + "column.about": "Maka", + "column.blocks": "Ojiarụ egbochiri", + "column.bookmarks": "Ebenrụtụakā", "column.community": "Local timeline", "column.direct": "Direct messages", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", "column.follow_requests": "Follow requests", - "column.home": "Home", + "column.home": "Be", "column.lists": "Lists", "column.mutes": "Muted users", "column.notifications": "Notifications", @@ -119,12 +119,12 @@ "column_header.pin": "Pin", "column_header.show_settings": "Show settings", "column_header.unpin": "Unpin", - "column_subheading.settings": "Settings", + "column_subheading.settings": "Mwube", "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Remote only", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "Gbanwee asụsụ", + "compose.language.search": "Chọọ asụsụ...", "compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "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.", @@ -152,9 +152,9 @@ "confirmations.block.message": "Are you sure you want to block {name}?", "confirmations.cancel_follow_request.confirm": "Withdraw request", "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", - "confirmations.delete.confirm": "Delete", + "confirmations.delete.confirm": "Hichapụ", "confirmations.delete.message": "Are you sure you want to delete this status?", - "confirmations.delete_list.confirm": "Delete", + "confirmations.delete_list.confirm": "Hichapụ", "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", "confirmations.discard_edit_media.confirm": "Discard", "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", @@ -167,11 +167,11 @@ "confirmations.mute.message": "Are you sure you want to mute {name}?", "confirmations.redraft.confirm": "Delete & redraft", "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.", - "confirmations.reply.confirm": "Reply", + "confirmations.reply.confirm": "Zaa", "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Unfollow", "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", - "conversation.delete": "Delete conversation", + "conversation.delete": "Hichapụ nkata", "conversation.mark_as_read": "Mark as read", "conversation.open": "View conversation", "conversation.with": "With {names}", @@ -200,7 +200,7 @@ "emoji_button.objects": "Objects", "emoji_button.people": "People", "emoji_button.recent": "Frequently used", - "emoji_button.search": "Search...", + "emoji_button.search": "Chọọ...", "emoji_button.search_results": "Search results", "emoji_button.symbols": "Symbols", "emoji_button.travel": "Travel & Places", @@ -230,7 +230,7 @@ "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", - "errors.unexpected_crash.report_issue": "Report issue", + "errors.unexpected_crash.report_issue": "Kpesa nsogbu", "explore.search_results": "Search results", "explore.suggested_follows": "For you", "explore.title": "Explore", @@ -264,10 +264,10 @@ "footer.get_app": "Get the app", "footer.invite": "Invite people", "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", + "footer.privacy_policy": "Iwu nzuzu", "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.heading": "Getting started", + "getting_started.heading": "Mbido", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -339,10 +339,10 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", - "lists.delete": "Delete list", + "lists.delete": "Hichapụ ndepụta", "lists.edit": "Edit list", "lists.edit.submit": "Change title", "lists.new.create": "Add list", @@ -352,18 +352,18 @@ "lists.replies_policy.none": "No one", "lists.replies_policy.title": "Show replies to:", "lists.search": "Search among people you follow", - "lists.subheading": "Your lists", + "lists.subheading": "Ndepụta gị", "load_pending": "{count, plural, one {# new item} other {# new items}}", - "loading_indicator.label": "Loading...", + "loading_indicator.label": "Na-adọnye...", "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", "missing_indicator.label": "Not found", "missing_indicator.sublabel": "This resource could not be found", "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", - "navigation_bar.about": "About", + "navigation_bar.about": "Maka", "navigation_bar.blocks": "Blocked users", - "navigation_bar.bookmarks": "Bookmarks", + "navigation_bar.bookmarks": "Ebenrụtụakā", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new post", "navigation_bar.direct": "Direct messages", @@ -375,7 +375,7 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.lists": "Lists", + "navigation_bar.lists": "Ndepụta", "navigation_bar.logout": "Logout", "navigation_bar.mutes": "Muted users", "navigation_bar.personal": "Personal", @@ -464,14 +464,14 @@ "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}h", - "relative_time.just_now": "now", + "relative_time.just_now": "kịta", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", - "relative_time.today": "today", + "relative_time.today": "taa", "reply_indicator.cancel": "Kagbuo", "report.block": "Block", "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", - "report.categories.other": "Other", + "report.categories.other": "Ọzọ", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", "report.category.subtitle": "Choose the best match", @@ -518,7 +518,7 @@ "search_popout.tips.hashtag": "hashtag", "search_popout.tips.status": "status", "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", - "search_popout.tips.user": "user", + "search_popout.tips.user": "ojiarụ", "search_results.accounts": "People", "search_results.all": "All", "search_results.hashtags": "Hashtags", @@ -528,7 +528,7 @@ "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", + "server_banner.active_users": "ojiarụ dị ìrè", "server_banner.administered_by": "Administered by:", "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", "server_banner.learn_more": "Learn more", @@ -539,11 +539,11 @@ "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", - "status.bookmark": "Bookmark", + "status.bookmark": "Kee ebenrụtụakā", "status.cancel_reblog_private": "Unboost", "status.cannot_reblog": "This post cannot be boosted", "status.copy": "Copy link to status", - "status.delete": "Delete", + "status.delete": "Hichapụ", "status.detailed_status": "Detailed conversation view", "status.direct": "Direct message @{name}", "status.edit": "Edit", @@ -571,7 +571,7 @@ "status.reblogged_by": "{name} boosted", "status.reblogs.empty": "No one has boosted this post yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", - "status.remove_bookmark": "Remove bookmark", + "status.remove_bookmark": "Wepu ebenrụtụakā", "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", @@ -584,7 +584,7 @@ "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.translate": "Translate", + "status.translate": "Tụgharịa", "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", @@ -595,20 +595,20 @@ "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", - "tabs_bar.home": "Home", + "tabs_bar.home": "Be", "tabs_bar.local_timeline": "Local", - "tabs_bar.notifications": "Notifications", + "tabs_bar.notifications": "Nziọkwà", "time_remaining.days": "{number, plural, one {# day} other {# days}} left", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", "time_remaining.moments": "Moments remaining", "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left", "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.", - "timeline_hint.resources.followers": "Followers", + "timeline_hint.resources.followers": "Ndị na-eso", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older posts", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", - "trends.trending_now": "Trending now", + "trends.trending_now": "Na-ewu ewu kịta", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", "units.short.million": "{count}M", @@ -622,12 +622,12 @@ "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", - "upload_form.undo": "Delete", + "upload_form.undo": "Hichapụ", "upload_form.video_description": "Describe for people with hearing loss or visual impairment", "upload_modal.analyzing_picture": "Analyzing picture…", "upload_modal.apply": "Apply", "upload_modal.applying": "Applying…", - "upload_modal.choose_image": "Choose image", + "upload_modal.choose_image": "Họrọ onyonyo", "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog", "upload_modal.detect_text": "Detect text from picture", "upload_modal.edit_media": "Edit media", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index a467cc323..b13faa61e 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -339,7 +339,7 @@ "lightbox.next": "Nexta", "lightbox.previous": "Antea", "limited_account_hint.action": "Jus montrez profilo", - "limited_account_hint.title": "Ca profilo celesas da jerero di vua servilo.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Insertez a listo", "lists.account.remove": "Efacez de listo", "lists.delete": "Efacez listo", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 168d5ec81..297fa141b 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -1,7 +1,7 @@ { "about.blocks": "Netþjónar með efnisumsjón", "about.contact": "Hafa samband:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon er frjáls hugbúnaður með opinn grunnkóða og er skrásett vörumerki í eigu Mastodon gGmbH.", "about.domain_blocks.comment": "Ástæða", "about.domain_blocks.domain": "Lén", "about.domain_blocks.preamble": "Mastodon leyfir þér almennt að skoða og eiga við efni frá notendum frá hvaða vefþjóni sem er í vefþjónasambandinu. Þetta eru þær undantekningar sem hafa verið gerðar á þessum tiltekna vefþjóni.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Heimila", "follow_request.reject": "Hafna", "follow_requests.unlocked_explanation": "Jafnvel þótt aðgangurinn þinn sé ekki læstur, hafa umsjónarmenn {domain} ímyndað sér að þú gætir viljað yfirfara handvirkt fylgjendabeiðnir frá þessum notendum.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Um hugbúnaðinn", + "footer.directory": "Notandasniðamappa", + "footer.get_app": "Ná í forritið", + "footer.invite": "Bjóða fólki", + "footer.keyboard_shortcuts": "Flýtileiðir á lyklaborði", + "footer.privacy_policy": "Persónuverndarstefna", + "footer.source_code": "Skoða frumkóða", "generic.saved": "Vistað", "getting_started.heading": "Komast í gang", "hashtag.column_header.tag_mode.all": "og {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Næsta", "lightbox.previous": "Fyrra", "limited_account_hint.action": "Birta notandasniðið samt", - "limited_account_hint.title": "Þetta notandasnið hefur verið falið af umsjónarmönnum netþjónsins þíns.", + "limited_account_hint.title": "Þetta notandasnið hefur verið falið af umsjónarmönnum {domain}.", "lists.account.add": "Bæta á lista", "lists.account.remove": "Fjarlægja af lista", "lists.delete": "Eyða lista", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Brot á reglum", "report_notification.open": "Opin kæra", "search.placeholder": "Leita", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Leita eða líma slóð", "search_popout.search_format": "Snið ítarlegrar leitar", "search_popout.tips.full_text": "Einfaldur texti skilar færslum sem þú hefur skrifað, sett í eftirlæti, endurbirt eða verið minnst á þig í, ásamt samsvarandi birtingarnöfnum, notendanöfnum og myllumerkjum.", "search_popout.tips.hashtag": "myllumerki", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Undirbý OCR-ljóslestur…", "upload_modal.preview_label": "Forskoðun ({ratio})", "upload_progress.label": "Er að senda inn...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Meðhöndla…", "video.close": "Loka myndskeiði", "video.download": "Sækja skrá", "video.exit_fullscreen": "Hætta í skjáfylli", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index afed6839d..f59ac0ec2 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -1,7 +1,7 @@ { "about.blocks": "Server moderati", "about.contact": "Contatto:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon è un software open source, gratuito e un marchio di Mastodon gGmbH.", "about.domain_blocks.comment": "Motivo", "about.domain_blocks.domain": "Dominio", "about.domain_blocks.preamble": "Mastodon, generalmente, ti consente di visualizzare i contenuti e interagire con gli utenti da qualsiasi altro server nel fediverso. Queste sono le eccezioni che sono state fatte su questo particolare server.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Autorizza", "follow_request.reject": "Rifiuta", "follow_requests.unlocked_explanation": "Benché il tuo account non sia privato, lo staff di {domain} ha pensato che potresti voler approvare manualmente le richieste di follow da questi account.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Info", + "footer.directory": "Directory dei profili", + "footer.get_app": "Scarica l'app", + "footer.invite": "Invita le persone", + "footer.keyboard_shortcuts": "Scorciatoie da tastiera", + "footer.privacy_policy": "Politica sulla privacy", + "footer.source_code": "Visualizza il codice sorgente", "generic.saved": "Salvato", "getting_started.heading": "Come iniziare", "hashtag.column_header.tag_mode.all": "e {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Successivo", "lightbox.previous": "Precedente", "limited_account_hint.action": "Mostra comunque il profilo", - "limited_account_hint.title": "Questo profilo è stato nascosto dai moderatori del tuo server.", + "limited_account_hint.title": "Questo profilo è stato nascosto dai moderatori di {domain}.", "lists.account.add": "Aggiungi alla lista", "lists.account.remove": "Togli dalla lista", "lists.delete": "Elimina lista", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Violazione delle regole", "report_notification.open": "Apri segnalazione", "search.placeholder": "Cerca", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Cerca o incolla l'URL", "search_popout.search_format": "Formato di ricerca avanzato", "search_popout.tips.full_text": "Testo semplice per trovare gli status che hai scritto, segnato come apprezzati, condiviso o in cui sei stato citato, e inoltre i nomi utente, nomi visualizzati e hashtag che lo contengono.", "search_popout.tips.hashtag": "etichetta", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Preparazione OCR…", "upload_modal.preview_label": "Anteprima ({ratio})", "upload_progress.label": "Invio in corso...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "In elaborazione…", "video.close": "Chiudi video", "video.download": "Scarica file", "video.exit_fullscreen": "Esci da modalità a schermo intero", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 5849a1d38..e0e5b3dcd 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -1,7 +1,7 @@ { "about.blocks": "制限中のサーバー", "about.contact": "連絡先", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon は自由なオープンソースソフトウェアで、Mastodon gGmbH の商標です。", "about.domain_blocks.comment": "制限理由", "about.domain_blocks.domain": "ドメイン", "about.domain_blocks.preamble": "Mastodonでは連合先のどのようなサーバーのユーザーとも交流できます。ただし次のサーバーには例外が設定されています。", @@ -40,7 +40,7 @@ "account.follows.empty": "まだ誰もフォローしていません。", "account.follows_you": "フォローされています", "account.hide_reblogs": "@{name}さんからのブーストを非表示", - "account.joined_short": "参加済み", + "account.joined_short": "登録日", "account.languages": "購読言語の変更", "account.link_verified_on": "このリンクの所有権は{date}に確認されました", "account.locked_info": "このアカウントは承認制アカウントです。相手が承認するまでフォローは完了しません。", @@ -82,7 +82,7 @@ "boost_modal.combo": "次からは{combo}を押せばスキップできます", "bundle_column_error.copy_stacktrace": "エラーレポートをコピー", "bundle_column_error.error.body": "要求されたページをレンダリングできませんでした。コードのバグ、またはブラウザの互換性の問題が原因である可能性があります。", - "bundle_column_error.error.title": "おっと!", + "bundle_column_error.error.title": "あらら……", "bundle_column_error.network.body": "このページを読み込もうとしたときにエラーが発生しました。インターネット接続またはこのサーバーの一時的な問題が発生した可能性があります。", "bundle_column_error.network.title": "ネットワークエラー", "bundle_column_error.retry": "再試行", @@ -237,14 +237,14 @@ "explore.trending_links": "ニュース", "explore.trending_statuses": "投稿", "explore.trending_tags": "ハッシュタグ", - "filter_modal.added.context_mismatch_explanation": "あなたがアクセスした投稿には、コンテキストはフィルターカテゴリが適用されてません。\nコンテキストへのフィルターを適用するには、フィルターを編集してください。", + "filter_modal.added.context_mismatch_explanation": "このフィルターカテゴリーは、あなたがアクセスした投稿のコンテキストには適用されません。\nこの投稿のコンテキストでもフィルターを適用するには、フィルターを編集する必要があります。", "filter_modal.added.context_mismatch_title": "コンテキストが一致しません!", - "filter_modal.added.expired_explanation": "このフィルターカテゴリは有効期限が切れています。適用するには有効期限を更新してください。", + "filter_modal.added.expired_explanation": "このフィルターカテゴリーは有効期限が切れています。適用するには有効期限を更新してください。", "filter_modal.added.expired_title": "フィルターの有効期限が切れています!", "filter_modal.added.review_and_configure": "このフィルターカテゴリーを確認して設定するには、{settings_link}に移動します。", "filter_modal.added.review_and_configure_title": "フィルター設定", "filter_modal.added.settings_link": "設定", - "filter_modal.added.short_explanation": "この投稿は以下のフィルターカテゴリに追加されました: {title}。", + "filter_modal.added.short_explanation": "この投稿は以下のフィルターカテゴリーに追加されました: {title}。", "filter_modal.added.title": "フィルターを追加しました!", "filter_modal.select_filter.context_mismatch": "このコンテキストには当てはまりません", "filter_modal.select_filter.expired": "期限切れ", @@ -259,13 +259,13 @@ "follow_request.authorize": "許可", "follow_request.reject": "拒否", "follow_requests.unlocked_explanation": "あなたのアカウントは承認制ではありませんが、{domain}のスタッフはこれらのアカウントからのフォローリクエストの確認が必要であると判断しました。", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "概要", + "footer.directory": "ディレクトリ", + "footer.get_app": "アプリをダウンロードする", + "footer.invite": "新規ユーザーの招待", + "footer.keyboard_shortcuts": "キーボードショートカット", + "footer.privacy_policy": "プライバシーポリシー", + "footer.source_code": "ソースコードを表示", "generic.saved": "保存しました", "getting_started.heading": "スタート", "hashtag.column_header.tag_mode.all": "と{additional}", @@ -339,7 +339,7 @@ "lightbox.next": "次", "lightbox.previous": "前", "limited_account_hint.action": "構わず表示する", - "limited_account_hint.title": "このプロフィールはサーバーのモデレーターによって非表示になっています。", + "limited_account_hint.title": "このプロフィールは {domain} のモデレーターによって非表示にされています。", "lists.account.add": "リストに追加", "lists.account.remove": "リストから外す", "lists.delete": "リストを削除", @@ -361,7 +361,7 @@ "mute_modal.duration": "ミュートする期間", "mute_modal.hide_notifications": "このユーザーからの通知を隠しますか?", "mute_modal.indefinite": "無期限", - "navigation_bar.about": "概要", + "navigation_bar.about": "About", "navigation_bar.blocks": "ブロックしたユーザー", "navigation_bar.bookmarks": "ブックマーク", "navigation_bar.community_timeline": "ローカルタイムライン", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "ルール違反", "report_notification.open": "通報を開く", "search.placeholder": "検索", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "検索または URL を入力", "search_popout.search_format": "高度な検索フォーマット", "search_popout.tips.full_text": "表示名やユーザー名、ハッシュタグのほか、あなたの投稿やお気に入り、ブーストした投稿、返信に一致する単純なテキスト。", "search_popout.tips.hashtag": "ハッシュタグ", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "OCRの準備中…", "upload_modal.preview_label": "プレビュー ({ratio})", "upload_progress.label": "アップロード中...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "処理中…", "video.close": "動画を閉じる", "video.download": "ダウンロード", "video.exit_fullscreen": "全画面を終了する", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index 4e3b8eb35..d59e1d5d8 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -339,7 +339,7 @@ "lightbox.next": "შემდეგი", "lightbox.previous": "წინა", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "სიაში დამატება", "lists.account.remove": "სიიდან ამოშლა", "lists.delete": "სიის წაშლა", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 8815fd092..ac68de319 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -36,7 +36,7 @@ "account.followers.empty": "Ar tura, ulac yiwen i yeṭṭafaṛen amseqdac-agi.", "account.followers_counter": "{count, plural, one {{count} n umeḍfar} other {{count} n imeḍfaren}}", "account.following": "Following", - "account.following_counter": "{count, plural, one {{counter} yeṭṭafaren} other {{counter} wayeḍ}}", + "account.following_counter": "{count, plural, one {{counter} yettwaḍfaren} other {{counter} yettwaḍfaren}}", "account.follows.empty": "Ar tura, amseqdac-agi ur yeṭṭafaṛ yiwen.", "account.follows_you": "Yeṭṭafaṛ-ik", "account.hide_reblogs": "Ffer ayen i ibeṭṭu @{name}", @@ -44,7 +44,7 @@ "account.languages": "Change subscribed languages", "account.link_verified_on": "Taɣara n useɣwen-a tettwasenqed ass n {date}", "account.locked_info": "Amiḍan-agi uslig isekweṛ. D bab-is kan i izemren ad yeǧǧ, s ufus-is, win ara t-iḍefṛen.", - "account.media": "Amidya", + "account.media": "Timidyatin", "account.mention": "Bder-d @{name}", "account.moved_to": "{name} ibeddel ɣer:", "account.mute": "Sgugem @{name}", @@ -339,7 +339,7 @@ "lightbox.next": "Γer zdat", "lightbox.previous": "Γer deffir", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Rnu ɣer tebdart", "lists.account.remove": "Kkes seg tebdart", "lists.delete": "Kkes tabdart", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index 886b515f5..4d49e7dcf 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -339,7 +339,7 @@ "lightbox.next": "Келесі", "lightbox.previous": "Алдыңғы", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Тізімге қосу", "lists.account.remove": "Тізімнен шығару", "lists.delete": "Тізімді өшіру", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index a92c64030..7525b2b77 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -339,7 +339,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index bac5bb685..30c41fee0 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -1,7 +1,7 @@ { "about.blocks": "제한된 서버들", "about.contact": "연락처:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "마스토돈은 자유 오픈소스 소프트웨어이며, Mastodon gGmbH의 상표입니다", "about.domain_blocks.comment": "사유", "about.domain_blocks.domain": "도메인", "about.domain_blocks.preamble": "마스토돈은 일반적으로 연합우주에 있는 어떤 서버의 사용자와도 게시물을 보고 응답을 할 수 있도록 허용합니다. 다음 항목들은 특정한 서버에 대해 만들어 진 예외사항입니다.", @@ -150,7 +150,7 @@ "confirmations.block.block_and_report": "차단하고 신고하기", "confirmations.block.confirm": "차단", "confirmations.block.message": "정말로 {name}를 차단하시겠습니까?", - "confirmations.cancel_follow_request.confirm": "요청 무시", + "confirmations.cancel_follow_request.confirm": "요청 삭제", "confirmations.cancel_follow_request.message": "정말 {name}님에 대한 팔로우 요청을 취소하시겠습니까?", "confirmations.delete.confirm": "삭제", "confirmations.delete.message": "정말로 이 게시물을 삭제하시겠습니까?", @@ -259,13 +259,13 @@ "follow_request.authorize": "허가", "follow_request.reject": "거부", "follow_requests.unlocked_explanation": "당신의 계정이 잠기지 않았다고 할 지라도, {domain}의 스탭은 당신이 이 계정들로부터의 팔로우 요청을 수동으로 확인하길 원한다고 생각했습니다.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "정보", + "footer.directory": "프로필 책자", + "footer.get_app": "앱 다운로드하기", + "footer.invite": "초대하기", + "footer.keyboard_shortcuts": "키보드 단축키", + "footer.privacy_policy": "개인정보 정책", + "footer.source_code": "소스코드 보기", "generic.saved": "저장됨", "getting_started.heading": "시작", "hashtag.column_header.tag_mode.all": "그리고 {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "다음", "lightbox.previous": "이전", "limited_account_hint.action": "그래도 프로필 보기", - "limited_account_hint.title": "이 프로필은 이 서버의 중재자에 의해 숨겨진 상태입니다.", + "limited_account_hint.title": "이 프로필은 {domain}의 중재자에 의해 숨겨진 상태입니다.", "lists.account.add": "리스트에 추가", "lists.account.remove": "리스트에서 제거", "lists.delete": "리스트 삭제", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "규칙 위반", "report_notification.open": "신고 열기", "search.placeholder": "검색", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "검색하거나 URL 붙여넣기", "search_popout.search_format": "고급 검색 방법", "search_popout.tips.full_text": "단순한 텍스트 검색은 당신이 작성했거나, 관심글로 지정했거나, 부스트했거나, 멘션을 받은 게시글, 그리고 사용자명, 표시되는 이름, 해시태그를 반환합니다.", "search_popout.tips.hashtag": "해시태그", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "OCR 준비 중…", "upload_modal.preview_label": "미리보기 ({ratio})", "upload_progress.label": "업로드 중...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "처리 중...", "video.close": "동영상 닫기", "video.download": "파일 다운로드", "video.exit_fullscreen": "전체화면 나가기", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 700e5a264..34a2ef6ce 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -1,7 +1,7 @@ { "about.blocks": "Rajekarên çavdêrkirî", "about.contact": "Têkilî:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon belaş e, nermalaveke çavkaniya vekirî ye û markeyeke Mastodon gGmbHê ye.", "about.domain_blocks.comment": "Sedem", "about.domain_blocks.domain": "Navper", "about.domain_blocks.preamble": "Mastodon bi gelemperî dihêle ku tu naverokê bibînî û bi bikarhênerên ji rajekareke din a li fendiverse re têkilî dayne. Ev awaretyên ku li ser vê rajekara taybetî hatine çêkirin ev in.", @@ -14,7 +14,7 @@ "about.powered_by": "Medyaya civakî ya nenavendî bi hêzdariya {mastodon}", "about.rules": "Rêbazên rajekar", "account.account_note_header": "Nîşe", - "account.add_or_remove_from_list": "Tevlî bike an rake ji rêzokê", + "account.add_or_remove_from_list": "Li lîsteyan zêde bike yan jî rake", "account.badges.bot": "Bot", "account.badges.group": "Kom", "account.block": "@{name} asteng bike", @@ -86,7 +86,7 @@ "bundle_column_error.network.body": "Di dema hewldana barkirina vê rûpelê de çewtiyek derket. Ev dibe ku ji ber pirsgirêkeke demkî ya girêdana înternetê te be an jî ev rajekar be.", "bundle_column_error.network.title": "Çewtiya torê", "bundle_column_error.retry": "Dîsa biceribîne", - "bundle_column_error.return": "Vegere rûpela sereke", + "bundle_column_error.return": "Vegere serûpelê", "bundle_column_error.routing.body": "Rûpela xwestî nehate dîtin. Tu bawerî ku girêdana di kodika lêgerînê de rast e?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Bigire", @@ -106,8 +106,8 @@ "column.domain_blocks": "Navperên astengkirî", "column.favourites": "Bijarte", "column.follow_requests": "Daxwazên şopandinê", - "column.home": "Rûpela sereke", - "column.lists": "Rêzok", + "column.home": "Serûpel", + "column.lists": "Lîste", "column.mutes": "Bikarhênerên bêdengkirî", "column.notifications": "Agahdarî", "column.pins": "Şandiya derzîkirî", @@ -130,7 +130,7 @@ "compose_form.hashtag_warning": "Ev şandî ji ber ku nehatiye tomarkirin dê di binê hashtagê de neyê tomar kirin. Tenê peyamên gelemperî dikarin bi hashtagê werin lêgerîn.", "compose_form.lock_disclaimer": "Ajimêrê te {locked} nîne. Herkes dikare te bişopîne da ku şandiyên te yên tenê şopînerên te ra xûya dibin bibînin.", "compose_form.lock_disclaimer.lock": "girtî ye", - "compose_form.placeholder": "Çi di hişê te derbas dibe?", + "compose_form.placeholder": "Tu li çi difikirî?", "compose_form.poll.add_option": "Hilbijarekî tevlî bike", "compose_form.poll.duration": "Dema rapirsî yê", "compose_form.poll.option_placeholder": "{number} Hilbijêre", @@ -155,7 +155,7 @@ "confirmations.delete.confirm": "Jê bibe", "confirmations.delete.message": "Ma tu dixwazî vê şandiyê jê bibî?", "confirmations.delete_list.confirm": "Jê bibe", - "confirmations.delete_list.message": "Ma tu dixwazî bi awayekî herdemî vê rêzokê jê bibî?", + "confirmations.delete_list.message": "Tu ji dil dixwazî vê lîsteyê bi awayekî mayînde jê bibî?", "confirmations.discard_edit_media.confirm": "Biavêje", "confirmations.discard_edit_media.message": "Guhertinên neqedandî di danasîna an pêşdîtina medyayê de hene, wan bi her awayî bavêje?", "confirmations.domain_block.confirm": "Hemî navperê asteng bike", @@ -220,8 +220,8 @@ "empty_column.hashtag": "Di vê hashtagê de hêj tiştekî tune.", "empty_column.home": "Demnameya mala we vala ye! Ji bona tijîkirinê bêtir mirovan bişopînin. {suggestions}", "empty_column.home.suggestions": "Hinek pêşniyaran bibîne", - "empty_column.list": "Di vê rêzokê de hîn tiştek tune ye. Gava ku endamên vê rêzokê peyamên nû biweşînin, ew ê li vir xuya bibin.", - "empty_column.lists": "Hîn tu rêzokên te tune ne. Dema yekî çê bikî, ew ê li vir xuya bibe.", + "empty_column.list": "Di vê lîsteyê de hîn tiştek tune ye. Gava ku endamên vê lîsteyê peyamên nû biweşînin, ew ê li virê xuya bibin.", + "empty_column.lists": "Hîn tu lîsteyên te tune ne. Dema yekê çêkî, ew ê li virê xuya bibe.", "empty_column.mutes": "Te tu bikarhêner bêdeng nekiriye.", "empty_column.notifications": "Hêj hişyariyên te tunene. Dema ku mirovên din bi we re têkilî danîn, hûn ê wê li vir bibînin.", "empty_column.public": "Li vir tiştekî tuneye! Ji raya giştî re tiştekî binivîsîne, an ji bo tijîkirinê ji rajekerên din bikarhêneran bi destan bişopînin", @@ -259,13 +259,13 @@ "follow_request.authorize": "Mafê bide", "follow_request.reject": "Nepejirîne", "follow_requests.unlocked_explanation": "Tevlî ku ajimêra te ne kilît kiriye, karmendên {domain} digotin qey tu dixwazî ku pêşdîtina daxwazên şopandinê bi destan bike.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Derbar", + "footer.directory": "Pelrêça profîlan", + "footer.get_app": "Bernamokê bistîne", + "footer.invite": "Mirovan vexwîne", + "footer.keyboard_shortcuts": "Kurteriyên klavyeyê", + "footer.privacy_policy": "Peymana nepeniyê", + "footer.source_code": "Koda çavkanî nîşan bide", "generic.saved": "Tomarkirî", "getting_started.heading": "Destpêkirin", "hashtag.column_header.tag_mode.all": "û {additional}", @@ -300,16 +300,16 @@ "intervals.full.hours": "{number, plural, one {# demjimêr} other {# demjimêr}}\n \n", "intervals.full.minutes": "{number, plural, one {# xulek} other {# xulek}}", "keyboard_shortcuts.back": "Vegere paşê", - "keyboard_shortcuts.blocked": "Rêzoka bikarhênerên astengkirî veke", + "keyboard_shortcuts.blocked": "Lîsteya bikarhênerên astengkirî veke", "keyboard_shortcuts.boost": "Şandiyê bilind bike", "keyboard_shortcuts.column": "Stûna balkişandinê", "keyboard_shortcuts.compose": "Bal bikşîne cîhê nivîsê/textarea", "keyboard_shortcuts.description": "Danasîn", "keyboard_shortcuts.direct": "ji bo vekirina stûnê peyamên rasterast", - "keyboard_shortcuts.down": "Di rêzokê de dakêşe jêr", + "keyboard_shortcuts.down": "Di lîsteyê de dakêşe jêr", "keyboard_shortcuts.enter": "Şandiyê veke", "keyboard_shortcuts.favourite": "Şandiya bijarte", - "keyboard_shortcuts.favourites": "Rêzokên bijarte veke", + "keyboard_shortcuts.favourites": "Lîsteyên bijarte veke", "keyboard_shortcuts.federated": "Demnameya giştî veke", "keyboard_shortcuts.heading": "Kurterêyên klavyeyê", "keyboard_shortcuts.home": "Demnameyê veke", @@ -317,14 +317,14 @@ "keyboard_shortcuts.legend": "Vê çîrokê nîşan bike", "keyboard_shortcuts.local": "Demnameya herêmî veke", "keyboard_shortcuts.mention": "Qala nivîskarî/ê bike", - "keyboard_shortcuts.muted": "Rêzoka bikarhênerên bêdeng kirî veke", + "keyboard_shortcuts.muted": "Lîsteya bikarhênerên bêdengkirî veke", "keyboard_shortcuts.my_profile": "Profîla xwe veke", "keyboard_shortcuts.notifications": "Stûnê agahdariyan veke", "keyboard_shortcuts.open_media": "Medya veke", "keyboard_shortcuts.pinned": "Şandiyên derzîkirî veke", "keyboard_shortcuts.profile": "Profîla nivîskaran veke", "keyboard_shortcuts.reply": "Bersivê bide şandiyê", - "keyboard_shortcuts.requests": "Rêzoka daxwazên şopandinê veke", + "keyboard_shortcuts.requests": "Lîsteya daxwazên şopandinê veke", "keyboard_shortcuts.search": "Bal bide şivika lêgerînê", "keyboard_shortcuts.spoilers": "Zeviya hişyariya naverokê nîşan bide/veşêre", "keyboard_shortcuts.start": "Stûna \"destpêkê\" veke", @@ -332,27 +332,27 @@ "keyboard_shortcuts.toggle_sensitivity": "Medyayê nîşan bide/veşêre", "keyboard_shortcuts.toot": "Dest bi şandiyeke nû bike", "keyboard_shortcuts.unfocus": "Bal nede cîhê nivîsê /lêgerînê", - "keyboard_shortcuts.up": "Di rêzokê de rake jor", + "keyboard_shortcuts.up": "Di lîsteyê de rake jor", "lightbox.close": "Bigire", "lightbox.compress": "Qutîya wêneya nîşan dike bitepisîne", "lightbox.expand": "Qutîya wêneya nîşan dike fireh bike", "lightbox.next": "Pêş", "lightbox.previous": "Paş", "limited_account_hint.action": "Bi heman awayî profîlê nîşan bide", - "limited_account_hint.title": "Ev profîl ji aliyê çavdêriya li ser rajekarê te hatiye veşartin.", - "lists.account.add": "Tevlî rêzokê bike", - "lists.account.remove": "Ji rêzokê rake", - "lists.delete": "Rêzokê jê bibe", - "lists.edit": "Rêzokê serrast bike", + "limited_account_hint.title": "Profîl ji aliyê rêveberên {domain}ê ve hatiye veşartin.", + "lists.account.add": "Li lîsteyê zêde bike", + "lists.account.remove": "Ji lîsteyê rake", + "lists.delete": "Lîsteyê jê bibe", + "lists.edit": "Lîsteyê serrast bike", "lists.edit.submit": "Sernavê biguherîne", - "lists.new.create": "Rêzokê tevlî bike", - "lists.new.title_placeholder": "Sernavê rêzoka nû", + "lists.new.create": "Li lîsteyê zêde bike", + "lists.new.title_placeholder": "Sernavê lîsteya nû", "lists.replies_policy.followed": "Bikarhênereke şopandî", - "lists.replies_policy.list": "Endamên rêzokê", + "lists.replies_policy.list": "Endamên lîsteyê", "lists.replies_policy.none": "Ne yek", "lists.replies_policy.title": "Bersivan nîşan bide:", "lists.search": "Di navbera kesên ku te dişopînin bigere", - "lists.subheading": "Rêzokên te", + "lists.subheading": "Lîsteyên te", "load_pending": "{count, plural, one {# hêmaneke nû} other {#hêmaneke nû}}", "loading_indicator.label": "Tê barkirin...", "media_gallery.toggle_visible": "{number, plural, one {Wêneyê veşêre} other {Wêneyan veşêre}}", @@ -375,7 +375,7 @@ "navigation_bar.filters": "Peyvên bêdengkirî", "navigation_bar.follow_requests": "Daxwazên şopandinê", "navigation_bar.follows_and_followers": "Şopandin û şopîner", - "navigation_bar.lists": "Rêzok", + "navigation_bar.lists": "Lîste", "navigation_bar.logout": "Derkeve", "navigation_bar.mutes": "Bikarhênerên bêdengkirî", "navigation_bar.personal": "Kesanî", @@ -451,12 +451,12 @@ "privacy.public.long": "Ji bo hemûyan xuyabar e", "privacy.public.short": "Gelemperî", "privacy.unlisted.long": "Ji bo hemûyan xuyabar e, lê ji taybetmendiyên vekolînê veqetiya ye", - "privacy.unlisted.short": "Nerêzok", + "privacy.unlisted.short": "Nelîstekirî", "privacy_policy.last_updated": "Rojanekirina dawî {date}", "privacy_policy.title": "Politîka taybetiyê", "refresh": "Nû bike", "regeneration_indicator.label": "Tê barkirin…", - "regeneration_indicator.sublabel": "Naveroka rûpela sereke ya te tê amedekirin!", + "regeneration_indicator.sublabel": "Naveroka serûpela te tê amedekirin!", "relative_time.days": "{number}r", "relative_time.full.days": "{number, plural, one {# roj} other {# roj}} berê", "relative_time.full.hours": "{number, plural, one {# demjimêr} other {# demjimêr}} berê", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Binpêkirina rêzîkê", "report_notification.open": "Ragihandinê veke", "search.placeholder": "Bigere", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Lêgerîn yan jî URLê pê ve bike", "search_popout.search_format": "Dirûva lêgerîna pêşketî", "search_popout.tips.full_text": "Nivîsên hêsan, şandiyên ku te nivîsandiye, bijare kiriye, bilind kiriye an jî yên behsa te kirine û her wiha navê bikarhêneran, navên xûya dike û hashtagan vedigerîne.", "search_popout.tips.hashtag": "hashtag", @@ -595,7 +595,7 @@ "suggestions.dismiss": "Pêşniyarê paşguh bike", "suggestions.header": "Dibe ku bala te bikşîne…", "tabs_bar.federated_timeline": "Giştî", - "tabs_bar.home": "Rûpela sereke", + "tabs_bar.home": "Serûpel", "tabs_bar.local_timeline": "Herêmî", "tabs_bar.notifications": "Agahdarî", "time_remaining.days": "{number, plural, one {# roj} other {# roj}} maye", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "OCR dihê amadekirin…", "upload_modal.preview_label": "Pêşdîtin ({ratio})", "upload_progress.label": "Tê barkirin...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Kar tê kirin…", "video.close": "Vîdyoyê bigire", "video.download": "Pelê daxe", "video.exit_fullscreen": "Ji dîmendera tijî derkeve", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index 2faed5acc..87074f1a3 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -339,7 +339,7 @@ "lightbox.next": "Nessa", "lightbox.previous": "Kynsa", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Keworra dhe rol", "lists.account.remove": "Removya a rol", "lists.delete": "Dilea rol", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 926e074f9..fca865090 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -339,7 +339,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 12da2ea91..bc8672f0a 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -1,7 +1,7 @@ { "about.blocks": "Moderētie serveri", "about.contact": "Kontakts:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon ir bezmaksas atvērtā pirmkoda programmatūra un Mastodon gGmbH preču zīme.", "about.domain_blocks.comment": "Iemesls", "about.domain_blocks.domain": "Domēns", "about.domain_blocks.preamble": "Mastodon parasti ļauj apskatīt saturu un mijiedarboties ar lietotājiem no jebkura cita federācijas servera. Šie ir izņēmumi, kas veikti šajā konkrētajā serverī.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Autorizēt", "follow_request.reject": "Noraidīt", "follow_requests.unlocked_explanation": "Lai gan tavs konts nav bloķēts, {domain} darbinieki iedomājās, ka, iespējams, vēlēsies pārskatīt pieprasījumus no šiem kontiem.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Par", + "footer.directory": "Profilu direktorija", + "footer.get_app": "Iegūt lietotni", + "footer.invite": "Uzaicināt cilvēkus", + "footer.keyboard_shortcuts": "Īsinājumtaustiņi", + "footer.privacy_policy": "Privātuma politika", + "footer.source_code": "Skatīt pirmkodu", "generic.saved": "Saglabāts", "getting_started.heading": "Darba sākšana", "hashtag.column_header.tag_mode.all": "un {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Tālāk", "lightbox.previous": "Iepriekšējais", "limited_account_hint.action": "Tik un tā rādīt profilu", - "limited_account_hint.title": "Tava servera moderatori ir paslēpuši šo profilu.", + "limited_account_hint.title": "{domain} moderatori ir paslēpuši šo profilu.", "lists.account.add": "Pievienot sarakstam", "lists.account.remove": "Noņemt no saraksta", "lists.delete": "Dzēst sarakstu", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Noteikumu pārkāpums", "report_notification.open": "Atvērt ziņojumu", "search.placeholder": "Meklēšana", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Meklēt vai iekopēt URL", "search_popout.search_format": "Paplašināts meklēšanas formāts", "search_popout.tips.full_text": "Vienkāršs teksts atgriež ziņas, kuras esi rakstījis, iecienījis, paaugstinājis vai pieminējis, kā arī atbilstošie lietotājvārdi, parādāmie vārdi un tēmturi.", "search_popout.tips.hashtag": "mirkļbirka", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Sagatavo OCR…", "upload_modal.preview_label": "Priekšskatīt ({ratio})", "upload_progress.label": "Augšupielādē...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Apstrādā…", "video.close": "Aizvērt video", "video.download": "Lejupielādēt datni", "video.exit_fullscreen": "Iziet no pilnekrāna", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index ebdcb8225..8c3509e91 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -339,7 +339,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index bb116e976..e0c253e50 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -339,7 +339,7 @@ "lightbox.next": "അടുത്തത്", "lightbox.previous": "പുറകോട്ട്", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "പട്ടികയിലേക്ക് ചേർക്കുക", "lists.account.remove": "പട്ടികയിൽ നിന്ന് ഒഴിവാക്കുക", "lists.delete": "പട്ടിക ഒഴിവാക്കുക", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index 07d179979..bf7c2d9e7 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -339,7 +339,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 26551104b..36afdc2fb 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -339,7 +339,7 @@ "lightbox.next": "Seterusnya", "lightbox.previous": "Sebelumnya", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Tambah ke senarai", "lists.account.remove": "Buang daripada senarai", "lists.delete": "Padam senarai", diff --git a/app/javascript/mastodon/locales/my.json b/app/javascript/mastodon/locales/my.json index 174769782..ed61123e5 100644 --- a/app/javascript/mastodon/locales/my.json +++ b/app/javascript/mastodon/locales/my.json @@ -339,7 +339,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 8484fb4df..e56666ba6 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -1,7 +1,7 @@ { "about.blocks": "Gemodereerde servers", "about.contact": "Contact:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon is vrije, opensourcesoftware en een handelsmerk van Mastodon gGmbH.", "about.domain_blocks.comment": "Reden", "about.domain_blocks.domain": "Domein", "about.domain_blocks.preamble": "In het algemeen kun je met Mastodon berichten ontvangen van, en interactie hebben met gebruikers van elke server in de fediverse. Dit zijn de uitzonderingen die op deze specifieke server gelden.", @@ -92,7 +92,7 @@ "bundle_modal_error.close": "Sluiten", "bundle_modal_error.message": "Tijdens het laden van dit onderdeel is er iets fout gegaan.", "bundle_modal_error.retry": "Opnieuw proberen", - "closed_registrations.other_server_instructions": "Omdat Mastodon gedecentraliseerd is, kun je op een andere server een account registreren en vanaf daar nog steeds met dit account communiceren.", + "closed_registrations.other_server_instructions": "Omdat Mastodon gedecentraliseerd is, kun je op een andere server een account registreren en vanaf daar nog steeds met deze server communiceren.", "closed_registrations_modal.description": "Momenteel is het niet mogelijk om op {domain} een account aan te maken. Hou echter in gedachte dat om Mastodon te kunnen gebruiken het niet een vereiste is om op {domain} een account aan te maken.", "closed_registrations_modal.find_another_server": "Een andere server zoeken", "closed_registrations_modal.preamble": "Mastodon is gedecentraliseerd. Op welke server je ook een account hebt, je kunt overal vandaan mensen op deze server volgen en er mee interactie hebben. Je kunt zelfs zelf een Mastodon-server hosten!", @@ -259,13 +259,13 @@ "follow_request.authorize": "Goedkeuren", "follow_request.reject": "Afwijzen", "follow_requests.unlocked_explanation": "Ook al is jouw account niet besloten, de medewerkers van {domain} denken dat jij misschien de volgende volgverzoeken handmatig wil controleren.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Over", + "footer.directory": "Gebruikersgids", + "footer.get_app": "App downloaden", + "footer.invite": "Mensen uitnodigen", + "footer.keyboard_shortcuts": "Sneltoetsen", + "footer.privacy_policy": "Privacybeleid", + "footer.source_code": "Broncode bekijken", "generic.saved": "Opgeslagen", "getting_started.heading": "Aan de slag", "hashtag.column_header.tag_mode.all": "en {additional}", @@ -290,7 +290,7 @@ "interaction_modal.description.reply": "Je kunt met een Mastodon-account op dit bericht reageren.", "interaction_modal.on_another_server": "Op een andere server", "interaction_modal.on_this_server": "Op deze server", - "interaction_modal.other_server_instructions": "Kopieer en plak eenvoudig deze URL in het zoekveld van de door jou gebruikte app of in de webinterface van de server waarop je bent ingelogd.", + "interaction_modal.other_server_instructions": "Kopieer en plak deze URL in het zoekveld van de door jou gebruikte app of in het zoekveld van de website van de server waarop je bent ingelogd.", "interaction_modal.preamble": "Mastodon is gedecentraliseerd. Daarom heb je geen account op deze Mastodon-server nodig, wanneer je al een account op een andere Mastodon-server of compatibel platform hebt.", "interaction_modal.title.favourite": "Bericht van {name} als favoriet markeren", "interaction_modal.title.follow": "{name} volgen", @@ -339,7 +339,7 @@ "lightbox.next": "Volgende", "lightbox.previous": "Vorige", "limited_account_hint.action": "Alsnog het profiel tonen", - "limited_account_hint.title": "Dit profiel is door de moderatoren van jouw server verborgen.", + "limited_account_hint.title": "Dit profiel is door de moderatoren van {domain} verborgen.", "lists.account.add": "Aan lijst toevoegen", "lists.account.remove": "Uit lijst verwijderen", "lists.delete": "Lijst verwijderen", @@ -445,7 +445,7 @@ "poll_button.remove_poll": "Poll verwijderen", "privacy.change": "Zichtbaarheid van bericht aanpassen", "privacy.direct.long": "Alleen aan vermelde gebruikers tonen", - "privacy.direct.short": "Alleen aan vermelde gebruikers tonen", + "privacy.direct.short": "Direct bericht", "privacy.private.long": "Alleen aan volgers tonen", "privacy.private.short": "Alleen volgers", "privacy.public.long": "Voor iedereen zichtbaar", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Overtreden regel(s)", "report_notification.open": "Rapportage openen", "search.placeholder": "Zoeken", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Zoek of voer een URL in", "search_popout.search_format": "Geavanceerd zoeken", "search_popout.tips.full_text": "Gebruik gewone tekst om te zoeken in jouw berichten, gebooste berichten, favorieten en in berichten waarin je bent vermeldt, en tevens naar gebruikersnamen, weergavenamen en hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "OCR voorbereiden…", "upload_modal.preview_label": "Voorvertoning ({ratio})", "upload_progress.label": "Uploaden...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Bezig…", "video.close": "Video sluiten", "video.download": "Bestand downloaden", "video.exit_fullscreen": "Volledig scherm sluiten", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 1a4308579..caa409696 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -1,18 +1,18 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Modererte tenarar", + "about.contact": "Kontakt:", + "about.disclaimer": "Mastodon er gratis programvare med open kjeldekode, og eit varemerke frå Mastodon gGmbH.", + "about.domain_blocks.comment": "Årsak", + "about.domain_blocks.domain": "Domene", + "about.domain_blocks.preamble": "Mastodon gjev deg som regel lov til å sjå innhald og samhandla med brukarar frå alle andre tenarar i fødiverset. Dette er unntaka som er valde for akkurat denne tenaren.", + "about.domain_blocks.severity": "Alvorsgrad", + "about.domain_blocks.silenced.explanation": "Du vil vanlegvis ikkje sjå profilar og innhald frå denen tenaren, med mindre du eksplisitt leiter den opp eller velgjer ved å fylgje.", + "about.domain_blocks.silenced.title": "Avgrensa", + "about.domain_blocks.suspended.explanation": "Ingen data frå desse tenarane vert handsama, lagra eller sende til andre, som gjer det umogeleg å samhandla eller kommunisera med andre brukarar frå desse tenarane.", + "about.domain_blocks.suspended.title": "Utvist", + "about.not_available": "Denne informasjonen er ikkje gjort tilgjengeleg på denne tenaren.", + "about.powered_by": "Desentraliserte sosiale medium drive av {mastodon}", + "about.rules": "Tenarreglar", "account.account_note_header": "Merknad", "account.add_or_remove_from_list": "Legg til eller tak vekk frå listene", "account.badges.bot": "Robot", @@ -21,27 +21,27 @@ "account.block_domain": "Skjul alt frå {domain}", "account.blocked": "Blokkert", "account.browse_more_on_origin_server": "Sjå gjennom meir på den opphavlege profilen", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Trekk attende fylgeførespurnad", "account.direct": "Send melding til @{name}", "account.disable_notifications": "Slutt å varsle meg når @{name} legger ut innlegg", "account.domain_blocked": "Domenet er gøymt", "account.edit_profile": "Rediger profil", "account.enable_notifications": "Varsle meg når @{name} legger ut innlegg", "account.endorse": "Framhev på profil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Sist nytta {date}", + "account.featured_tags.last_status_never": "Ingen innlegg", + "account.featured_tags.title": "{name} sine framheva emneknaggar", "account.follow": "Fylg", "account.followers": "Fylgjarar", "account.followers.empty": "Ingen fylgjer denne brukaren enno.", "account.followers_counter": "{count, plural, one {{counter} fylgjar} other {{counter} fylgjarar}}", - "account.following": "Følger", + "account.following": "Fylgjer", "account.following_counter": "{count, plural, one {{counter} fylgjar} other {{counter} fylgjar}}", "account.follows.empty": "Denne brukaren fylgjer ikkje nokon enno.", "account.follows_you": "Fylgjer deg", "account.hide_reblogs": "Gøym fremhevingar frå @{name}", - "account.joined_short": "Joined", - "account.languages": "Change subscribed languages", + "account.joined_short": "Vart med", + "account.languages": "Endre språktingingar", "account.link_verified_on": "Eigarskap for denne lenkja vart sist sjekka {date}", "account.locked_info": "Denne kontoen er privat. Eigaren kan sjølv velja kven som kan fylgja han.", "account.media": "Media", @@ -66,38 +66,38 @@ "account.unmute_notifications": "Vis varsel frå @{name}", "account.unmute_short": "Opphev målbinding", "account_note.placeholder": "Klikk for å leggja til merknad", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Mengda brukarar aktive ved dagar etter registrering", + "admin.dashboard.monthly_retention": "Mengda brukarar aktive ved månader etter registrering", "admin.dashboard.retention.average": "Gjennomsnitt", - "admin.dashboard.retention.cohort": "Sign-up month", + "admin.dashboard.retention.cohort": "Registrert månad", "admin.dashboard.retention.cohort_size": "Nye brukarar", "alert.rate_limited.message": "Ver venleg å prøva igjen etter {retry_time, time, medium}.", "alert.rate_limited.title": "Begrensa rate", "alert.unexpected.message": "Eit uventa problem oppstod.", "alert.unexpected.title": "Oi sann!", "announcement.announcement": "Kunngjering", - "attachments_list.unprocessed": "(unprocessed)", - "audio.hide": "Hide audio", + "attachments_list.unprocessed": "(ubehandla)", + "audio.hide": "Gøym lyd", "autosuggest_hashtag.per_week": "{count} per veke", "boost_modal.combo": "Du kan trykkja {combo} for å hoppa over dette neste gong", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Kopier feilrapport", + "bundle_column_error.error.body": "Den etterspurde sida kan ikke hentast fram. Det kan skuldast ein feil i vår kode eller eit kompatibilitetsproblem.", + "bundle_column_error.error.title": "Ånei!", + "bundle_column_error.network.body": "Det oppsto ein feil då ein forsøkte å laste denne sida. Dette kan skuldast eit midlertidig problem med nettkoplinga eller denne tenaren.", + "bundle_column_error.network.title": "Nettverksfeil", "bundle_column_error.retry": "Prøv igjen", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Gå heim att", + "bundle_column_error.routing.body": "Den etterspurde sida vart ikkje funnen. Er du sikker på at URL-adressa er rett?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Lat att", "bundle_modal_error.message": "Noko gjekk gale under lastinga av denne komponenten.", "bundle_modal_error.retry": "Prøv igjen", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", + "closed_registrations.other_server_instructions": "Sidan Mastodon er desentralisert kan du lage ein brukar på ein anna tenar og framleis interagere med denne.", + "closed_registrations_modal.description": "Oppretting av ein konto på {domain} er ikkje mogleg, men hugs at du ikkje treng ein konto spesifikt på {domain} for å nytte Mastodon.", + "closed_registrations_modal.find_another_server": "Fin ein anna tenar", + "closed_registrations_modal.preamble": "Mastodon er desentralisert, så uansett kvar du lagar kontoen, vil du kunne fylgje og samhandle med alle på denne tenaren. Du kan til og med ha din eigen tenar!", + "closed_registrations_modal.title": "Registrer deg på Mastodon", + "column.about": "Om", "column.blocks": "Blokkerte brukarar", "column.bookmarks": "Bokmerke", "column.community": "Lokal tidsline", @@ -124,7 +124,7 @@ "community.column_settings.media_only": "Berre media", "community.column_settings.remote_only": "Berre eksternt", "compose.language.change": "Byt språk", - "compose.language.search": "Search languages...", + "compose.language.search": "Søk språk...", "compose_form.direct_message_warning_learn_more": "Lær meir", "compose_form.encryption_warning": "Innlegg på Mastodon er ikkje ende-til-ende-krypterte. Ikkje del eventuell sensitiv informasjon via Mastodon.", "compose_form.hashtag_warning": "Dette tutet vert ikkje oppført under nokon emneknagg sidan det ikkje er oppført. Berre offentlege tut kan verta søkt etter med emneknagg.", @@ -137,7 +137,7 @@ "compose_form.poll.remove_option": "Ta vekk dette valet", "compose_form.poll.switch_to_multiple": "Endre avstemninga til å tillate fleirval", "compose_form.poll.switch_to_single": "Endra avstemninga til tillate berre eitt val", - "compose_form.publish": "Publish", + "compose_form.publish": "Publisér", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Lagre endringar", "compose_form.sensitive.hide": "Merk medium som sensitivt", @@ -150,8 +150,8 @@ "confirmations.block.block_and_report": "Blokker & rapporter", "confirmations.block.confirm": "Blokker", "confirmations.block.message": "Er du sikker på at du vil blokkera {name}?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "Trekk attende førespurnad", + "confirmations.cancel_follow_request.message": "Er du sikker på at du vil trekke attende førespurnaden din for å fylgje {name}?", "confirmations.delete.confirm": "Slett", "confirmations.delete.message": "Er du sikker på at du vil sletta denne statusen?", "confirmations.delete_list.confirm": "Slett", @@ -175,22 +175,22 @@ "conversation.mark_as_read": "Merk som lese", "conversation.open": "Sjå samtale", "conversation.with": "Med {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Kopiert", + "copypaste.copy": "Kopiér", "directory.federated": "Frå kjent fedivers", "directory.local": "Berre frå {domain}", "directory.new_arrivals": "Nyankommne", "directory.recently_active": "Nyleg aktive", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "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_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "Dette er dei nylegaste offentlege innlegga frå personar med kontoar frå {domain}.", + "dismissable_banner.dismiss": "Avvis", + "dismissable_banner.explore_links": "Desse nyhendesakene snakkast om av folk på denne og andre tenarar på det desentraliserte nettverket no.", + "dismissable_banner.explore_statuses": "Desse innlegga frå denne tenaren og andre tenarar i det desentraliserte nettverket er i dytten på denne tenaren nett no.", + "dismissable_banner.explore_tags": "Desse emneknaggane er populære blant folk på denne tenaren og andre tenarar i det desentraliserte nettverket nett no.", + "dismissable_banner.public_timeline": "Dette er dei siste offentlege innlegga frå folk på denne tenaren og andre tenarar på det desentraliserte nettverket som denne tenaren veit om.", "embed.instructions": "Bygg inn denne statusen på nettsida di ved å kopiera koden under.", "embed.preview": "Slik bid det å sjå ut:", "emoji_button.activity": "Aktivitet", - "emoji_button.clear": "Clear", + "emoji_button.clear": "Tøm", "emoji_button.custom": "Eige", "emoji_button.flags": "Flagg", "emoji_button.food": "Mat & drikke", @@ -210,12 +210,12 @@ "empty_column.blocks": "Du har ikkje blokkert nokon brukarar enno.", "empty_column.bookmarked_statuses": "Du har ikkje nokon bokmerkte tut enno. Når du bokmerkjer eit, dukkar det opp her.", "empty_column.community": "Den lokale samtiden er tom. Skriv noko offentleg å få ballen til å rulle!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "Du har ingen direktemeldingar enno. Når du sender eller får ei, vil ho dukka opp her.", "empty_column.domain_blocks": "Det er ingen gøymde domene ennå.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "Ingenting trendar nett no. Prøv igjen seinare!", "empty_column.favourited_statuses": "Du har ingen favoritt-tut ennå. Når du merkjer ein som favoritt, så dukkar det opp her.", "empty_column.favourites": "Ingen har merkt dette tutet som favoritt enno. Når nokon gjer det, så dukkar det opp her.", - "empty_column.follow_recommendations": "Ser ut som at det ikke finnes noen forslag for deg. Du kan prøve å bruke søk for å se etter folk du kan vite eller utforske trendende hashtags.", + "empty_column.follow_recommendations": "Det ser ikkje ut til at noko forslag kunne genererast til deg. Prøv søkjefunksjonen for å finna folk du kjenner, eller utforsk populære emneknaggar.", "empty_column.follow_requests": "Du har ingen følgjeførespurnadar ennå. Når du får ein, så vil den dukke opp her.", "empty_column.hashtag": "Det er ingenting i denne emneknaggen ennå.", "empty_column.home": "Heime-tidslinja di er tom! Besøk {public} eller søk for å starte og å møte andre brukarar.", @@ -228,7 +228,7 @@ "error.unexpected_crash.explanation": "På grunn av ein feil i vår kode eller eit nettlesarkompatibilitetsproblem, kunne ikkje denne sida verte vist korrekt.", "error.unexpected_crash.explanation_addons": "Denne siden kunne ikke vises riktig. Denne feilen er sannsynligvis forårsaket av en nettleserutvidelse eller automatiske oversettelsesverktøy.", "error.unexpected_crash.next_steps": "Prøv å lasta inn sida på nytt. Om det ikkje hjelper så kan du framleis nytta Mastodon i ein annan nettlesar eller app.", - "error.unexpected_crash.next_steps_addons": "Prøv å deaktivere dem og laste siden på nytt. Hvis det ikke hjelper, kan du fremdeles bruke Mastodon via en annen nettleser eller en annen app.", + "error.unexpected_crash.next_steps_addons": "Prøv å skru dei av og last inn sida på nytt. Om ikkje det hjelper, kan du framleis bruka Mastodon i ein annan nettlesar eller app.", "errors.unexpected_crash.copy_stacktrace": "Kopier stacktrace til utklippstavla", "errors.unexpected_crash.report_issue": "Rapporter problem", "explore.search_results": "Søkeresultat", @@ -237,35 +237,35 @@ "explore.trending_links": "Nyheiter", "explore.trending_statuses": "Innlegg", "explore.trending_tags": "Emneknaggar", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Denne filterkategorien gjeld ikkje i den samanhengen du har lese dette innlegget. Viss du vil at innlegget skal filtrerast i denne samanhengen òg, må du endra filteret.", + "filter_modal.added.context_mismatch_title": "Konteksten passar ikkje!", + "filter_modal.added.expired_explanation": "Denne filterkategorien har gått ut på dato. Du må endre best før datoen for at den skal gjelde.", + "filter_modal.added.expired_title": "Filteret har gått ut på dato!", + "filter_modal.added.review_and_configure": "For å granske og konfigurere denne filterkategorien, gå til {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filterinnstillingar", + "filter_modal.added.settings_link": "sida med innstillingar", + "filter_modal.added.short_explanation": "Dette innlegget er lagt til i denne filterkategorien: {title}.", + "filter_modal.added.title": "Filteret er lagt til!", + "filter_modal.select_filter.context_mismatch": "gjeld ikkje i denne samanhengen", + "filter_modal.select_filter.expired": "utgått", + "filter_modal.select_filter.prompt_new": "Ny kategori: {name}", + "filter_modal.select_filter.search": "Søk eller opprett", + "filter_modal.select_filter.subtitle": "Bruk ein eksisterande kategori eller opprett ein ny", + "filter_modal.select_filter.title": "Filtrer dette innlegget", + "filter_modal.title.status": "Filtrer eit innlegg", "follow_recommendations.done": "Ferdig", "follow_recommendations.heading": "Fylg folk du ønsker å sjå innlegg frå! Her er nokre forslag.", - "follow_recommendations.lead": "Innlegg fra mennesker du følger vil vises i kronologisk rekkefølge på hjemmefeed. Ikke vær redd for å gjøre feil, du kan slutte å følge folk like enkelt som alt!", + "follow_recommendations.lead": "Innlegg frå folk du fylgjer, kjem kronologisk i heimestraumen din. Ikkje ver redd for å gjera feil, du kan enkelt avfylgja folk når som helst!", "follow_request.authorize": "Autoriser", "follow_request.reject": "Avvis", "follow_requests.unlocked_explanation": "Sjølv om kontoen din ikkje er låst tenkte {domain} tilsette at du ville gå gjennom førespurnadar frå desse kontoane manuelt.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Om", + "footer.directory": "Profilmappe", + "footer.get_app": "Få appen", + "footer.invite": "Inviter folk", + "footer.keyboard_shortcuts": "Snøggtastar", + "footer.privacy_policy": "Personvernsreglar", + "footer.source_code": "Vis kjeldekode", "generic.saved": "Lagra", "getting_started.heading": "Kom i gang", "hashtag.column_header.tag_mode.all": "og {additional}", @@ -284,18 +284,18 @@ "home.column_settings.show_replies": "Vis svar", "home.hide_announcements": "Skjul kunngjeringar", "home.show_announcements": "Vis kunngjeringar", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Med ein konto på Mastodon kan du favorittmerkja dette innlegget for å visa forfattaren at du set pris på det, og for å lagra det til seinare.", + "interaction_modal.description.follow": "Med ein konto på Mastodon kan du fylgje {name} for å sjå innlegga deira i din heimestraum.", + "interaction_modal.description.reblog": "Med ein konto på Mastodon kan du framheve dette innlegget for å dele det med dine eigne fylgjarar.", + "interaction_modal.description.reply": "Med ein konto på Mastodon kan du svare på dette innlegget.", + "interaction_modal.on_another_server": "På ein annan tenar", + "interaction_modal.on_this_server": "På denne tenaren", + "interaction_modal.other_server_instructions": "Berre kopier og lim inn denne URL-en i søkefeltet til din favorittapp eller i søkefeltet på den nettsida der du er logga inn.", + "interaction_modal.preamble": "Sidan Mastodon er desentralisert, kan du bruke ein konto frå ein annan Mastodontenar eller frå ei anna kompatibel plattform dersom du ikkje har konto på denne tenaren.", + "interaction_modal.title.favourite": "Favorittmarker innlegget til {name}", + "interaction_modal.title.follow": "Fylg {name}", + "interaction_modal.title.reblog": "Framhev {name} sitt innlegg", + "interaction_modal.title.reply": "Svar på innlegge til {name}", "intervals.full.days": "{number, plural, one {# dag} other {# dagar}}", "intervals.full.hours": "{number, plural, one {# time} other {# timar}}", "intervals.full.minutes": "{number, plural, one {# minutt} other {# minutt}}", @@ -305,7 +305,7 @@ "keyboard_shortcuts.column": "for å fokusera på ein status i ei av kolonnane", "keyboard_shortcuts.compose": "for å fokusera tekstfeltet for skriving", "keyboard_shortcuts.description": "Skildring", - "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.direct": "for å opna direktemeldingskolonnen", "keyboard_shortcuts.down": "for å flytta seg opp og ned i lista", "keyboard_shortcuts.enter": "for å opna status", "keyboard_shortcuts.favourite": "for å merkja som favoritt", @@ -334,12 +334,12 @@ "keyboard_shortcuts.unfocus": "for å fokusere vekk skrive-/søkefeltet", "keyboard_shortcuts.up": "for å flytta seg opp på lista", "lightbox.close": "Lukk att", - "lightbox.compress": "Komprimer bildevisningsboks", - "lightbox.expand": "Ekspander bildevisning boks", + "lightbox.compress": "Komprimer biletvisningsboksen", + "lightbox.expand": "Utvid biletvisningsboksen", "lightbox.next": "Neste", "lightbox.previous": "Førre", "limited_account_hint.action": "Vis profilen likevel", - "limited_account_hint.title": "Denne profilen har vorte skjult av moderatorane på tenaren din.", + "limited_account_hint.title": "Denne profilen har vorte skjult av moderatorane på {domain}.", "lists.account.add": "Legg til i liste", "lists.account.remove": "Fjern frå liste", "lists.delete": "Slett liste", @@ -347,7 +347,7 @@ "lists.edit.submit": "Endre tittel", "lists.new.create": "Legg til liste", "lists.new.title_placeholder": "Ny listetittel", - "lists.replies_policy.followed": "Enhver fulgt bruker", + "lists.replies_policy.followed": "Alle fylgde brukarar", "lists.replies_policy.list": "Medlem i lista", "lists.replies_policy.none": "Ikkje nokon", "lists.replies_policy.title": "Vis svar på:", @@ -361,7 +361,7 @@ "mute_modal.duration": "Varighet", "mute_modal.hide_notifications": "Gøyme varsel frå denne brukaren?", "mute_modal.indefinite": "På ubestemt tid", - "navigation_bar.about": "About", + "navigation_bar.about": "Om", "navigation_bar.blocks": "Blokkerte brukarar", "navigation_bar.bookmarks": "Bokmerke", "navigation_bar.community_timeline": "Lokal tidsline", @@ -382,11 +382,11 @@ "navigation_bar.pins": "Festa tut", "navigation_bar.preferences": "Innstillingar", "navigation_bar.public_timeline": "Føderert tidsline", - "navigation_bar.search": "Search", + "navigation_bar.search": "Søk", "navigation_bar.security": "Tryggleik", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Du må logga inn for å få tilgang til denne ressursen.", "notification.admin.report": "{name} rapporterte {target}", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.sign_up": "{name} er registrert", "notification.favourite": "{name} merkte statusen din som favoritt", "notification.follow": "{name} fylgde deg", "notification.follow_request": "{name} har bedt om å fylgja deg", @@ -399,12 +399,12 @@ "notifications.clear": "Tøm varsel", "notifications.clear_confirmation": "Er du sikker på at du vil fjerna alle varsla dine for alltid?", "notifications.column_settings.admin.report": "Nye rapportar:", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "Nyleg registrerte:", "notifications.column_settings.alert": "Skrivebordsvarsel", "notifications.column_settings.favourite": "Favorittar:", "notifications.column_settings.filter_bar.advanced": "Vis alle kategoriar", "notifications.column_settings.filter_bar.category": "Snarfilterlinje", - "notifications.column_settings.filter_bar.show_bar": "Show filter bar", + "notifications.column_settings.filter_bar.show_bar": "Vis filterlinja", "notifications.column_settings.follow": "Nye fylgjarar:", "notifications.column_settings.follow_request": "Ny fylgjarførespurnader:", "notifications.column_settings.mention": "Nemningar:", @@ -424,14 +424,14 @@ "notifications.filter.mentions": "Nemningar", "notifications.filter.polls": "Røysteresultat", "notifications.filter.statuses": "Oppdateringer fra folk du følger", - "notifications.grant_permission": "Gi tillatelse.", + "notifications.grant_permission": "Gje løyve.", "notifications.group": "{count} varsel", "notifications.mark_as_read": "Merk alle varsler som lest", - "notifications.permission_denied": "Skrivebordsvarsler er ikke tilgjengelige på grunn av tidligere nektet nettlesertillatelser", - "notifications.permission_denied_alert": "Skrivebordsvarsler kan ikke aktiveres, ettersom lesertillatelse har blitt nektet før", - "notifications.permission_required": "Skrivebordsvarsler er utilgjengelige fordi nødvendige rettigheter ikke er gitt.", + "notifications.permission_denied": "Skrivebordsvarsel er ikkje tilgjengelege på grunn av at nettlesaren tidlegare ikkje har fått naudsynte rettar til å vise dei", + "notifications.permission_denied_alert": "Sidan nettlesaren tidlegare har blitt nekta naudsynte rettar, kan ikkje skrivebordsvarsel aktiverast", + "notifications.permission_required": "Skrivebordsvarsel er utilgjengelege fordi naudsynte rettar ikkje er gitt.", "notifications_permission_banner.enable": "Skru på skrivebordsvarsler", - "notifications_permission_banner.how_to_control": "For å motta varsler når Mastodon ikke er åpne, aktiver desktop varsler. Du kan kontrollere nøyaktig hvilke typer interaksjoner genererer skrivebordsvarsler gjennom {icon} -knappen ovenfor når de er aktivert.", + "notifications_permission_banner.how_to_control": "Aktiver skrivebordsvarsel for å få varsel når Mastodon ikkje er open. Du kan nøye bestemme kva samhandlingar som skal føre til skrivebordsvarsel gjennom {icon}-knappen ovanfor etter at varsel er aktivert.", "notifications_permission_banner.title": "Aldri gå glipp av noe", "picture_in_picture.restore": "Legg den tilbake", "poll.closed": "Lukka", @@ -450,10 +450,10 @@ "privacy.private.short": "Kun fylgjarar", "privacy.public.long": "Synleg for alle", "privacy.public.short": "Offentleg", - "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", + "privacy.unlisted.long": "Synleg for alle, men blir ikkje vist i oppdagsfunksjonar", "privacy.unlisted.short": "Uoppført", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Sist oppdatert {date}", + "privacy_policy.title": "Personvernsreglar", "refresh": "Oppdater", "regeneration_indicator.label": "Lastar…", "regeneration_indicator.sublabel": "Heimetidslinja di vert førebudd!", @@ -483,7 +483,7 @@ "report.forward": "Vidaresend til {target}", "report.forward_hint": "Kontoen er frå ein annan tenar. Vil du senda ein anonymisert kopi av rapporten dit òg?", "report.mute": "Målbind", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.mute_explanation": "Du vil ikkje lenger sjå innlegga deira. Dei kan framleis fylgje deg og sjå innlegga dine, men vil ikkje vite at du har valt å ikkje sjå innlegga deira.", "report.next": "Neste", "report.placeholder": "Tilleggskommentarar", "report.reasons.dislike": "Eg likar det ikkje", @@ -494,14 +494,14 @@ "report.reasons.spam_description": "Skadelege lenker, falskt engasjement og gjentakande svar", "report.reasons.violation": "Det bryt tenaren sine reglar", "report.reasons.violation_description": "Du veit at den bryt spesifikke reglar", - "report.rules.subtitle": "Select all that apply", + "report.rules.subtitle": "Velg det som gjeld", "report.rules.title": "Kva reglar vert brotne?", - "report.statuses.subtitle": "Select all that apply", - "report.statuses.title": "Are there any posts that back up this report?", + "report.statuses.subtitle": "Velg det som gjeld", + "report.statuses.title": "Er det innlegg som støttar opp under denne rapporten?", "report.submit": "Send inn", "report.target": "Rapporterer {target}", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", - "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.take_action": "Dette er dei ulike alternativa for å kontrollere kva du ser på Mastodon:", + "report.thanks.take_action_actionable": "Medan vi undersøker rapporteringa, kan du utføre desse handlingane mot @{name}:", "report.thanks.title": "Vil du ikkje sjå dette?", "report.thanks.title_actionable": "Takk for at du rapporterer, me skal sjå på dette.", "report.unfollow": "Unfollow @{name}", @@ -591,7 +591,7 @@ "status.unpin": "Løys frå profil", "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.target": "Endre abonnerte språk for {target}", "suggestions.dismiss": "Avslå framlegg", "suggestions.header": "Du er kanskje interessert i…", "tabs_bar.federated_timeline": "Føderert", @@ -607,7 +607,7 @@ "timeline_hint.resources.followers": "Fylgjarar", "timeline_hint.resources.follows": "Fylgjer", "timeline_hint.resources.statuses": "Eldre tut", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} folk}} siste {days, plural, one {døgnet} other {{days} dagane}}", "trends.trending_now": "Populært no", "ui.beforeunload": "Kladden din forsvinn om du forlèt Mastodon no.", "units.short.billion": "{count}m.ard", @@ -626,7 +626,7 @@ "upload_form.video_description": "Greit ut for folk med nedsett høyrsel eller syn", "upload_modal.analyzing_picture": "Analyserer bilete…", "upload_modal.apply": "Bruk", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Utfører…", "upload_modal.choose_image": "Vel bilete", "upload_modal.description_placeholder": "Ein rask brun rev hoppar over den late hunden", "upload_modal.detect_text": "Gjenkjenn tekst i biletet", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Førebur OCR…", "upload_modal.preview_label": "Førehandsvis ({ratio})", "upload_progress.label": "Lastar opp...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Handsamar…", "video.close": "Lukk video", "video.download": "Last ned fil", "video.exit_fullscreen": "Lukk fullskjerm", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 13ec6df9a..558f178ed 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -101,7 +101,7 @@ "column.blocks": "Blokkerte brukere", "column.bookmarks": "Bokmerker", "column.community": "Lokal tidslinje", - "column.direct": "Direct messages", + "column.direct": "Direktemeldinger", "column.directory": "Bla gjennom profiler", "column.domain_blocks": "Skjulte domener", "column.favourites": "Likt", @@ -210,7 +210,7 @@ "empty_column.blocks": "Du har ikke blokkert noen brukere enda.", "empty_column.bookmarked_statuses": "Du har ikke bokmerket noen tuter enda. Når du bokmerker en, vil den dukke opp her.", "empty_column.community": "Den lokale tidslinjen er tom. Skriv noe offentlig for å få snøballen til å rulle!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "Du har ingen direktemeldinger enda. Etter du har sendt eller mottatt en, så vil den dukke opp her.", "empty_column.domain_blocks": "Det er ingen skjulte domener enda.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Du har ikke likt noen tuter enda. Når du liker en, vil den dukke opp her.", @@ -305,7 +305,7 @@ "keyboard_shortcuts.column": "å fokusere en status i en av kolonnene", "keyboard_shortcuts.compose": "å fokusere komponeringsfeltet", "keyboard_shortcuts.description": "Beskrivelse", - "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.direct": "for å åpne kolonne med direktemeldinger", "keyboard_shortcuts.down": "for å flytte ned i listen", "keyboard_shortcuts.enter": "å åpne status", "keyboard_shortcuts.favourite": "for å favorittmarkere", @@ -339,7 +339,7 @@ "lightbox.next": "Neste", "lightbox.previous": "Forrige", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Legg til i listen", "lists.account.remove": "Fjern fra listen", "lists.delete": "Slett listen", @@ -366,7 +366,7 @@ "navigation_bar.bookmarks": "Bokmerker", "navigation_bar.community_timeline": "Lokal tidslinje", "navigation_bar.compose": "Skriv en ny tut", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Direktemeldinger", "navigation_bar.discover": "Oppdag", "navigation_bar.domain_blocks": "Skjulte domener", "navigation_bar.edit_profile": "Rediger profil", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 0be16f677..b9943a10f 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -339,7 +339,7 @@ "lightbox.next": "Seguent", "lightbox.previous": "Precedent", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Ajustar a la lista", "lists.account.remove": "Levar de la lista", "lists.delete": "Suprimir la lista", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index dbc568598..0ee86d80c 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -339,7 +339,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 417d79ec6..172281e9d 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -1,10 +1,10 @@ { "about.blocks": "Serwery moderowane", "about.contact": "Kontakt:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon jest darmowym, otwartym oprogramowaniem i znakiem towarowym Mastodon gGmbH.", "about.domain_blocks.comment": "Powód", "about.domain_blocks.domain": "Domena", - "about.domain_blocks.preamble": "Normalnie Mastodon pozwala ci przeglądać i reagować na treści od innych użytkowników z jakiegokolwiek serwera w fediwersum. To są wyjątki, które zostały stworzone na tym konkretnym serwerze.", + "about.domain_blocks.preamble": "Domyślnie Mastodon pozwala ci przeglądać i reagować na treści od innych użytkowników z jakiegokolwiek serwera w fediwersum. Poniżej znajduje się lista wyjątków, które zostały stworzone na tym konkretnym serwerze.", "about.domain_blocks.severity": "Priorytet", "about.domain_blocks.silenced.explanation": "Zazwyczaj nie zobaczysz profili i treści z tego serwera, chyba że wyraźnie go poszukasz lub zdecydujesz się go obserwować.", "about.domain_blocks.silenced.title": "Ograniczone", @@ -31,19 +31,19 @@ "account.featured_tags.last_status_at": "Ostatni post {date}", "account.featured_tags.last_status_never": "Brak postów", "account.featured_tags.title": "Polecane hasztagi {name}", - "account.follow": "Śledź", - "account.followers": "Śledzący", - "account.followers.empty": "Nikt jeszcze nie śledzi tego użytkownika.", - "account.followers_counter": "{count, plural, one {{counter} śledzący} few {{counter} śledzących} many {{counter} śledzących} other {{counter} śledzących}}", - "account.following": "Śledzenie", - "account.following_counter": "{count, plural, one {{counter} śledzony} few {{counter} śledzonych} many {{counter} śledzonych} other {{counter} śledzonych}}", - "account.follows.empty": "Ten użytkownik nie śledzi jeszcze nikogo.", - "account.follows_you": "Śledzi Cię", + "account.follow": "Obserwuj", + "account.followers": "Obserwujący", + "account.followers.empty": "Nikt jeszcze nie obserwuje tego użytkownika.", + "account.followers_counter": "{count, plural, one {{counter} obserwujący} few {{counter} obserwujących} many {{counter} obserwujących} other {{counter} obserwujących}}", + "account.following": "Obserwowani", + "account.following_counter": "{count, plural, one {{counter} obserwowany} few {{counter} obserwowanych} many {{counter} obserwowanych} other {{counter} obserwowanych}}", + "account.follows.empty": "Ten użytkownik nie obserwuje jeszcze nikogo.", + "account.follows_you": "Obserwuje Cię", "account.hide_reblogs": "Ukryj podbicia od @{name}", "account.joined_short": "Dołączył(a)", "account.languages": "Zmień subskrybowane języki", "account.link_verified_on": "Własność tego odnośnika została potwierdzona {date}", - "account.locked_info": "To konto jest prywatne. Właściciel ręcznie wybiera kto może go śledzić.", + "account.locked_info": "To konto jest prywatne. Właściciel ręcznie wybiera kto może go obserwować.", "account.media": "Zawartość multimedialna", "account.mention": "Wspomnij o @{name}", "account.moved_to": "{name} przeniósł(-osła) się do:", @@ -61,7 +61,7 @@ "account.unblock_domain": "Odblokuj domenę {domain}", "account.unblock_short": "Odblokuj", "account.unendorse": "Przestań polecać", - "account.unfollow": "Przestań śledzić", + "account.unfollow": "Przestań obserwować", "account.unmute": "Cofnij wyciszenie @{name}", "account.unmute_notifications": "Cofnij wyciszenie powiadomień od @{name}", "account.unmute_short": "Włącz dźwięki", @@ -97,7 +97,7 @@ "closed_registrations_modal.find_another_server": "Znajdź inny serwer", "closed_registrations_modal.preamble": "Mastodon jest zdecentralizowany, więc bez względu na to, gdzie się zarejestrujesz, będziesz w stanie obserwować i wchodzić w interakcje z innymi osobami na tym serwerze. Możesz nawet uruchomić własny serwer!", "closed_registrations_modal.title": "Rejestracja na Mastodonie", - "column.about": "O...", + "column.about": "O serwerze", "column.blocks": "Zablokowani użytkownicy", "column.bookmarks": "Zakładki", "column.community": "Lokalna oś czasu", @@ -105,7 +105,7 @@ "column.directory": "Przeglądaj profile", "column.domain_blocks": "Ukryte domeny", "column.favourites": "Ulubione", - "column.follow_requests": "Prośby o śledzenie", + "column.follow_requests": "Prośby o obserwację", "column.home": "Strona główna", "column.lists": "Listy", "column.mutes": "Wyciszeni użytkownicy", @@ -128,7 +128,7 @@ "compose_form.direct_message_warning_learn_more": "Dowiedz się więcej", "compose_form.encryption_warning": "Posty na Mastodon nie są szyfrowane end-to-end. Nie udostępniaj żadnych wrażliwych informacji przez Mastodon.", "compose_form.hashtag_warning": "Ten wpis nie będzie widoczny pod podanymi hasztagami, ponieważ jest oznaczony jako niewidoczny. Tylko publiczne wpisy mogą zostać znalezione z użyciem hasztagów.", - "compose_form.lock_disclaimer": "Twoje konto nie jest {locked}. Każdy, kto Cię śledzi, może wyświetlać Twoje wpisy przeznaczone tylko dla śledzących.", + "compose_form.lock_disclaimer": "Twoje konto nie jest {locked}. Każdy, kto Cię obserwuje, może wyświetlać Twoje wpisy przeznaczone tylko dla obserwujących.", "compose_form.lock_disclaimer.lock": "zablokowane", "compose_form.placeholder": "Co Ci chodzi po głowie?", "compose_form.poll.add_option": "Dodaj opcję", @@ -151,7 +151,7 @@ "confirmations.block.confirm": "Zablokuj", "confirmations.block.message": "Czy na pewno chcesz zablokować {name}?", "confirmations.cancel_follow_request.confirm": "Wycofaj żądanie", - "confirmations.cancel_follow_request.message": "Czy na pewno chcesz wycofać zgłoszenie śledzenia {name}?", + "confirmations.cancel_follow_request.message": "Czy na pewno chcesz wycofać prośbę o możliwość obserwacji {name}?", "confirmations.delete.confirm": "Usuń", "confirmations.delete.message": "Czy na pewno chcesz usunąć ten wpis?", "confirmations.delete_list.confirm": "Usuń", @@ -163,14 +163,14 @@ "confirmations.logout.confirm": "Wyloguj", "confirmations.logout.message": "Czy na pewno chcesz się wylogować?", "confirmations.mute.confirm": "Wycisz", - "confirmations.mute.explanation": "To schowa ich i wspominające ich posty, ale wciąż pozwoli im widzieć twoje posty i śledzić cię.", + "confirmations.mute.explanation": "To schowa ich i wspominające ich posty, ale wciąż pozwoli im widzieć twoje posty i obserwować cię.", "confirmations.mute.message": "Czy na pewno chcesz wyciszyć {name}?", "confirmations.redraft.confirm": "Usuń i przeredaguj", "confirmations.redraft.message": "Czy na pewno chcesz usunąć i przeredagować ten wpis? Polubienia i podbicia zostaną utracone, a odpowiedzi do oryginalnego wpisu zostaną osierocone.", "confirmations.reply.confirm": "Odpowiedz", "confirmations.reply.message": "W ten sposób utracisz wpis który obecnie tworzysz. Czy na pewno chcesz to zrobić?", - "confirmations.unfollow.confirm": "Przestań śledzić", - "confirmations.unfollow.message": "Czy na pewno zamierzasz przestać śledzić {name}?", + "confirmations.unfollow.confirm": "Przestań obserwować", + "confirmations.unfollow.message": "Czy na pewno zamierzasz przestać obserwować {name}?", "conversation.delete": "Usuń rozmowę", "conversation.mark_as_read": "Oznacz jako przeczytane", "conversation.open": "Zobacz rozmowę", @@ -216,9 +216,9 @@ "empty_column.favourited_statuses": "Nie dodałeś(-aś) żadnego wpisu do ulubionych. Kiedy to zrobisz, pojawi się on tutaj.", "empty_column.favourites": "Nikt nie dodał tego wpisu do ulubionych. Gdy ktoś to zrobi, pojawi się tutaj.", "empty_column.follow_recommendations": "Wygląda na to, że nie można wygenerować dla Ciebie żadnych sugestii. Możesz spróbować wyszukać osoby, które znasz, lub przeglądać popularne hasztagi.", - "empty_column.follow_requests": "Nie masz żadnych próśb o możliwość śledzenia. Kiedy ktoś utworzy ją, pojawi się tutaj.", + "empty_column.follow_requests": "Nie masz żadnych próśb o możliwość obserwacji. Kiedy ktoś utworzy ją, pojawi się tutaj.", "empty_column.hashtag": "Nie ma wpisów oznaczonych tym hasztagiem. Możesz napisać pierwszy(-a).", - "empty_column.home": "Nie śledzisz nikogo. Odwiedź globalną oś czasu lub użyj wyszukiwarki, aby znaleźć interesujące Cię profile.", + "empty_column.home": "Nie obserwujesz nikogo. Odwiedź globalną oś czasu lub użyj wyszukiwarki, aby znaleźć interesujące Cię profile.", "empty_column.home.suggestions": "Zobacz kilka sugestii", "empty_column.list": "Nie ma nic na tej liście. Kiedy członkowie listy dodadzą nowe wpisy, pojawia się one tutaj.", "empty_column.lists": "Nie masz żadnych list. Kiedy utworzysz jedną, pojawi się tutaj.", @@ -254,18 +254,18 @@ "filter_modal.select_filter.title": "Filtruj ten wpis", "filter_modal.title.status": "Filtruj wpis", "follow_recommendations.done": "Gotowe", - "follow_recommendations.heading": "Śledź ludzi, których wpisy chcesz czytać. Oto kilka propozycji.", - "follow_recommendations.lead": "Wpisy osób, które śledzisz będą pojawiać się w porządku chronologicznym na stronie głównej. Nie bój się popełniać błędów, możesz bez problemu przestać śledzić każdego w każdej chwili!", + "follow_recommendations.heading": "Obserwuj ludzi, których wpisy chcesz czytać. Oto kilka propozycji.", + "follow_recommendations.lead": "Wpisy osób, które obserwujesz będą pojawiać się w porządku chronologicznym na stronie głównej. Nie bój się popełniać błędów, możesz bez problemu przestać obserwować każdego w każdej chwili!", "follow_request.authorize": "Autoryzuj", "follow_request.reject": "Odrzuć", - "follow_requests.unlocked_explanation": "Mimo że Twoje konto nie jest zablokowane, zespół {domain} uznał że możesz chcieć ręcznie przejrzeć prośby o możliwość śledzenia.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "follow_requests.unlocked_explanation": "Mimo że Twoje konto nie jest zablokowane, zespół {domain} uznał że możesz chcieć ręcznie przejrzeć prośby o możliwość obserwacji.", + "footer.about": "O serwerze", + "footer.directory": "Katalog profilów", + "footer.get_app": "Pobierz aplikację", + "footer.invite": "Zaproś znajomych", + "footer.keyboard_shortcuts": "Skróty klawiszowe", + "footer.privacy_policy": "Polityka prywatności", + "footer.source_code": "Zobacz kod źródłowy", "generic.saved": "Zapisano", "getting_started.heading": "Rozpocznij", "hashtag.column_header.tag_mode.all": "i {additional}", @@ -324,7 +324,7 @@ "keyboard_shortcuts.pinned": "aby przejść do listy przypiętych wpisów", "keyboard_shortcuts.profile": "aby przejść do profilu autora wpisu", "keyboard_shortcuts.reply": "aby odpowiedzieć", - "keyboard_shortcuts.requests": "aby przejść do listy próśb o możliwość śledzenia", + "keyboard_shortcuts.requests": "aby przejść do listy próśb o możliwość obserwacji", "keyboard_shortcuts.search": "aby przejść do pola wyszukiwania", "keyboard_shortcuts.spoilers": "aby pokazać/ukryć pole CW", "keyboard_shortcuts.start": "aby otworzyć kolumnę „Rozpocznij”", @@ -339,7 +339,7 @@ "lightbox.next": "Następne", "lightbox.previous": "Poprzednie", "limited_account_hint.action": "Pokaż profil mimo wszystko", - "limited_account_hint.title": "Ten profil został ukryty przez moderatorów Twojego serwera.", + "limited_account_hint.title": "Ten profil został ukryty przez moderatorów {domain}.", "lists.account.add": "Dodaj do listy", "lists.account.remove": "Usunąć z listy", "lists.delete": "Usuń listę", @@ -351,7 +351,7 @@ "lists.replies_policy.list": "Członkowie listy", "lists.replies_policy.none": "Nikt", "lists.replies_policy.title": "Pokazuj odpowiedzi dla:", - "lists.search": "Szukaj wśród osób które śledzisz", + "lists.search": "Szukaj wśród osób które obserwujesz", "lists.subheading": "Twoje listy", "load_pending": "{count, plural, one {# nowa pozycja} other {nowe pozycje}}", "loading_indicator.label": "Ładowanie…", @@ -361,7 +361,7 @@ "mute_modal.duration": "Czas", "mute_modal.hide_notifications": "Chcesz ukryć powiadomienia od tego użytkownika?", "mute_modal.indefinite": "Nieokreślony", - "navigation_bar.about": "O...", + "navigation_bar.about": "O serwerze", "navigation_bar.blocks": "Zablokowani użytkownicy", "navigation_bar.bookmarks": "Zakładki", "navigation_bar.community_timeline": "Lokalna oś czasu", @@ -373,8 +373,8 @@ "navigation_bar.explore": "Odkrywaj", "navigation_bar.favourites": "Ulubione", "navigation_bar.filters": "Wyciszone słowa", - "navigation_bar.follow_requests": "Prośby o śledzenie", - "navigation_bar.follows_and_followers": "Śledzeni i śledzący", + "navigation_bar.follow_requests": "Prośby o obserwację", + "navigation_bar.follows_and_followers": "Obserwowani i obserwujący", "navigation_bar.lists": "Listy", "navigation_bar.logout": "Wyloguj", "navigation_bar.mutes": "Wyciszeni użytkownicy", @@ -388,8 +388,8 @@ "notification.admin.report": "{name} zgłosił {target}", "notification.admin.sign_up": "Użytkownik {name} zarejestrował się", "notification.favourite": "{name} dodał(a) Twój wpis do ulubionych", - "notification.follow": "{name} zaczął(-ęła) Cię śledzić", - "notification.follow_request": "{name} poprosił(a) o możliwość śledzenia Cię", + "notification.follow": "{name} zaobserwował(a) Cię", + "notification.follow_request": "{name} poprosił(a) o możliwość obserwacji Cię", "notification.mention": "{name} wspomniał(a) o tobie", "notification.own_poll": "Twoje głosowanie zakończyło się", "notification.poll": "Głosowanie w którym brałeś(-aś) udział zakończyło się", @@ -405,8 +405,8 @@ "notifications.column_settings.filter_bar.advanced": "Wyświetl wszystkie kategorie", "notifications.column_settings.filter_bar.category": "Szybkie filtrowanie", "notifications.column_settings.filter_bar.show_bar": "Pokaż filtry", - "notifications.column_settings.follow": "Nowi śledzący:", - "notifications.column_settings.follow_request": "Nowe prośby o możliwość śledzenia:", + "notifications.column_settings.follow": "Nowi obserwujący:", + "notifications.column_settings.follow_request": "Nowe prośby o możliwość obserwacji:", "notifications.column_settings.mention": "Wspomnienia:", "notifications.column_settings.poll": "Wyniki głosowania:", "notifications.column_settings.push": "Powiadomienia push", @@ -420,7 +420,7 @@ "notifications.filter.all": "Wszystkie", "notifications.filter.boosts": "Podbicia", "notifications.filter.favourites": "Ulubione", - "notifications.filter.follows": "Śledzenia", + "notifications.filter.follows": "Obserwacje", "notifications.filter.mentions": "Wspomienia", "notifications.filter.polls": "Wyniki głosowania", "notifications.filter.statuses": "Aktualizacje od osób które obserwujesz", @@ -446,8 +446,8 @@ "privacy.change": "Dostosuj widoczność wpisów", "privacy.direct.long": "Widoczny tylko dla wspomnianych", "privacy.direct.short": "Tylko wspomniane osoby", - "privacy.private.long": "Widoczny tylko dla osób, które Cię śledzą", - "privacy.private.short": "Tylko śledzący", + "privacy.private.long": "Widoczny tylko dla osób, które Cię obserwują", + "privacy.private.short": "Tylko obserwujący", "privacy.public.long": "Widoczne dla każdego", "privacy.public.short": "Publiczny", "privacy.unlisted.long": "Widoczne dla każdego, z wyłączeniem funkcji odkrywania", @@ -470,7 +470,7 @@ "relative_time.today": "dzisiaj", "reply_indicator.cancel": "Anuluj", "report.block": "Zablokuj", - "report.block_explanation": "Nie zobaczysz ich postów. Nie będą mogli zobaczyć Twoich postów ani cię śledzić. Będą mogli domyślić się, że są zablokowani.", + "report.block_explanation": "Nie zobaczysz ich postów. Nie będą mogli zobaczyć Twoich postów ani cię obserwować. Będą mogli domyślić się, że są zablokowani.", "report.categories.other": "Inne", "report.categories.spam": "Spam", "report.categories.violation": "Zawartość narusza co najmniej jedną zasadę serwera", @@ -483,7 +483,7 @@ "report.forward": "Przekaż na {target}", "report.forward_hint": "To konto znajduje się na innej instancji. Czy chcesz wysłać anonimową kopię zgłoszenia rnież na nią?", "report.mute": "Wycisz", - "report.mute_explanation": "Nie zobaczysz ich wpisów. Mimo to będą mogli wciąż śledzić cię i widzieć twoje wpisy, ale nie będą widzieli, że są wyciszeni.", + "report.mute_explanation": "Nie zobaczysz ich wpisów. Mimo to będą mogli wciąż obserwować cię i widzieć twoje wpisy, ale nie będą widzieli, że są wyciszeni.", "report.next": "Dalej", "report.placeholder": "Dodatkowe komentarze", "report.reasons.dislike": "Nie podoba mi się to", @@ -504,15 +504,15 @@ "report.thanks.take_action_actionable": "W trakcie jak będziemy się przyglądać tej sprawie, możesz podjąć akcje przeciwko @{name}:", "report.thanks.title": "Nie chcesz tego widzieć?", "report.thanks.title_actionable": "Dziękujemy za zgłoszenie. Przyjrzymy się tej sprawie.", - "report.unfollow": "Przestań śledzić @{name}", - "report.unfollow_explanation": "Śledzisz to konto. Jeśli nie chcesz już widzieć postów z tego konta w swojej głównej osi czasu, przestań je śledzić.", + "report.unfollow": "Przestań obserwować @{name}", + "report.unfollow_explanation": "Obserwujesz to konto. Jeśli nie chcesz już widzieć postów z tego konta w swojej głównej osi czasu, przestań je obserwować.", "report_notification.attached_statuses": "{count, plural, one {{count} wpis} few {{count} wpisy} many {{counter} wpisów} other {{counter} wpisów}}", "report_notification.categories.other": "Inne", "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Naruszenie zasad", "report_notification.open": "Otwórz raport", "search.placeholder": "Szukaj", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Wyszukaj lub wklej adres", "search_popout.search_format": "Zaawansowane wyszukiwanie", "search_popout.tips.full_text": "Pozwala na wyszukiwanie wpisów które napisałeś(-aś), dodałeś(-aś) do ulubionych lub podbiłeś(-aś), w których o Tobie wspomniano, oraz pasujące nazwy użytkowników, pełne nazwy i hashtagi.", "search_popout.tips.hashtag": "hasztag", @@ -604,8 +604,8 @@ "time_remaining.moments": "Pozostała chwila", "time_remaining.seconds": "{number, plural, one {Pozostała # sekunda} few {Pozostały # sekundy} many {Pozostało # sekund} other {Pozostało # sekund}}", "timeline_hint.remote_resource_not_displayed": "{resource} z innych serwerów nie są wyświetlane.", - "timeline_hint.resources.followers": "Śledzący", - "timeline_hint.resources.follows": "Śledzeni", + "timeline_hint.resources.followers": "Obserwujący", + "timeline_hint.resources.follows": "Obserwowani", "timeline_hint.resources.statuses": "Starsze wpisy", "trends.counter_by_accounts": "{count, plural, one {jedna osoba} few {{count} osoby} many {{count} osób} other {{counter} ludzie}} w ciągu {days, plural, one {ostatniego dnia} other {ostatnich {days} dni}}", "trends.trending_now": "Popularne teraz", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Przygotowywanie OCR…", "upload_modal.preview_label": "Podgląd ({ratio})", "upload_progress.label": "Wysyłanie…", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Przetwarzanie…", "video.close": "Zamknij film", "video.download": "Pobierz plik", "video.exit_fullscreen": "Opuść tryb pełnoekranowy", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index db4367bcd..7e1610e62 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -1,18 +1,18 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", + "about.blocks": "Servidores moderados", + "about.contact": "Contato:", + "about.disclaimer": "Mastodon é um software de código aberto e livre, e uma marca registrada de Mastodon gGmbH.", + "about.domain_blocks.comment": "Motivo", + "about.domain_blocks.domain": "Domínio", + "about.domain_blocks.preamble": "Mastodon geralmente permite que você veja o conteúdo e interaja com usuários de qualquer outra instância no fediverso. Estas são as exceções desta instância em específico.", + "about.domain_blocks.severity": "Gravidade", + "about.domain_blocks.silenced.explanation": "Você geralmente não verá perfis e conteúdo deste servidor, a menos que você o procure explicitamente ou opte por seguir.", + "about.domain_blocks.silenced.title": "Limitado", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", "about.domain_blocks.suspended.title": "Suspended", "about.not_available": "This information has not been made available on this server.", "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.rules": "Regras do servidor", "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Adicionar ou remover de listas", "account.badges.bot": "Robô", @@ -30,7 +30,7 @@ "account.endorse": "Recomendar", "account.featured_tags.last_status_at": "Last post on {date}", "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.title": "Marcadores em destaque de {name}", "account.follow": "Seguir", "account.followers": "Seguidores", "account.followers.empty": "Nada aqui.", @@ -40,8 +40,8 @@ "account.follows.empty": "Nada aqui.", "account.follows_you": "te segue", "account.hide_reblogs": "Ocultar boosts de @{name}", - "account.joined_short": "Joined", - "account.languages": "Change subscribed languages", + "account.joined_short": "Entrou", + "account.languages": "Mudar idiomas inscritos", "account.link_verified_on": "link verificado em {date}", "account.locked_info": "Trancado. Seguir requer aprovação manual do perfil.", "account.media": "Mídia", @@ -77,27 +77,27 @@ "alert.unexpected.title": "Eita!", "announcement.announcement": "Comunicados", "attachments_list.unprocessed": "(não processado)", - "audio.hide": "Hide audio", + "audio.hide": "Ocultar áudio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Pressione {combo} para pular isso na próxima vez", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Copiar erro de informe", + "bundle_column_error.error.body": "A página solicitada não pode ser renderizada. Pode ser devido a um bug em nosso código, ou um problema de compatibilidade do navegador.", + "bundle_column_error.error.title": "Ah, não!", + "bundle_column_error.network.body": "Houve um erro ao tentar carregar esta página. Isso pode ser devido a um problema temporário com sua conexão de internet ou deste servidor.", + "bundle_column_error.network.title": "Erro de rede", "bundle_column_error.retry": "Tente novamente", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", - "bundle_column_error.routing.title": "404", + "bundle_column_error.return": "Voltar à página inicial", + "bundle_column_error.routing.body": "A página solicitada não foi encontrada. Tem certeza de que a URL na barra de endereços está correta?", + "bundle_column_error.routing.title": "Erro 404", "bundle_modal_error.close": "Fechar", "bundle_modal_error.message": "Erro ao carregar este componente.", "bundle_modal_error.retry": "Tente novamente", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", + "closed_registrations.other_server_instructions": "Como o Mastodon é descentralizado, você pode criar uma conta em outra instância e ainda pode interagir com esta.", + "closed_registrations_modal.description": "Não é possível criar uma conta em {domain} no momento, mas atente que você não precisa de uma conta especificamente em {domain} para usar o Mastodon.", + "closed_registrations_modal.find_another_server": "Encontrar outra instância", + "closed_registrations_modal.preamble": "O Mastodon é descentralizado, não importa onde você crie sua conta, você poderá seguir e interagir com qualquer pessoa nesta instância. Você pode até mesmo criar sua própria instância!", + "closed_registrations_modal.title": "Inscrevendo-se no Mastodon", + "column.about": "Sobre", "column.blocks": "Usuários bloqueados", "column.bookmarks": "Salvos", "column.community": "Linha local", @@ -150,8 +150,8 @@ "confirmations.block.block_and_report": "Bloquear e denunciar", "confirmations.block.confirm": "Bloquear", "confirmations.block.message": "Você tem certeza de que deseja bloquear {name}?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "Cancelar a solicitação", + "confirmations.cancel_follow_request.message": "Tem certeza de que deseja cancelar seu pedido para seguir {name}?", "confirmations.delete.confirm": "Excluir", "confirmations.delete.message": "Você tem certeza de que deseja excluir este toot?", "confirmations.delete_list.confirm": "Excluir", @@ -175,18 +175,18 @@ "conversation.mark_as_read": "Marcar como lida", "conversation.open": "Ver conversa", "conversation.with": "Com {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Copiado", + "copypaste.copy": "Copiar", "directory.federated": "Do fediverso conhecido", "directory.local": "Somente de {domain}", "directory.new_arrivals": "Acabaram de chegar", "directory.recently_active": "Ativos recentemente", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "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_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "Estas são as publicações públicas mais recentes das pessoas cujas contas são hospedadas por {domain}.", + "dismissable_banner.dismiss": "Dispensar", + "dismissable_banner.explore_links": "Estas novas histórias estão sendo contadas por pessoas nesta e em outras instâncias da rede descentralizada no momento.", + "dismissable_banner.explore_statuses": "Estas publicações desta e de outras instâncias na rede descentralizada estão ganhando popularidade na instância agora.", + "dismissable_banner.explore_tags": "Estes marcadores estão ganhando popularidade entre pessoas desta e de outras instâncias da rede descentralizada no momento.", + "dismissable_banner.public_timeline": "Estas são as publicações mais recentes de pessoas desta e de outras instâncias da rede descentralizada que esta instância conhece.", "embed.instructions": "Incorpore este toot no seu site ao copiar o código abaixo.", "embed.preview": "Aqui está como vai ficar:", "emoji_button.activity": "Atividade", @@ -237,19 +237,19 @@ "explore.trending_links": "Notícias", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_explanation": "Esta categoria de filtro não se aplica ao contexto no qual você acessou esta publicação. Se quiser que a publicação seja filtrada nesse contexto também, você terá que editar o filtro.", "filter_modal.added.context_mismatch_title": "Context mismatch!", "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", + "filter_modal.added.expired_title": "Filtro expirado!", + "filter_modal.added.review_and_configure": "Para revisar e configurar ainda mais esta categoria de filtro, vá até {settings_link}.", + "filter_modal.added.review_and_configure_title": "Configurações de filtro", + "filter_modal.added.settings_link": "página de configurações", + "filter_modal.added.short_explanation": "Esta publicação foi adicionada à seguinte categoria de filtro: {title}.", + "filter_modal.added.title": "Filtro adicionado!", + "filter_modal.select_filter.context_mismatch": "não se aplica a este contexto", + "filter_modal.select_filter.expired": "expirado", + "filter_modal.select_filter.prompt_new": "Nova categoria: {name}", + "filter_modal.select_filter.search": "Buscar ou criar", "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", "filter_modal.select_filter.title": "Filter this post", "filter_modal.title.status": "Filter a post", @@ -259,13 +259,13 @@ "follow_request.authorize": "Aprovar", "follow_request.reject": "Recusar", "follow_requests.unlocked_explanation": "Apesar de seu perfil não ser trancado, {domain} exige que você revise a solicitação para te seguir destes perfis manualmente.", - "footer.about": "About", + "footer.about": "Sobre", "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.get_app": "Baixe o app", + "footer.invite": "Convidar pessoas", + "footer.keyboard_shortcuts": "Atalhos de teclado", + "footer.privacy_policy": "Política de privacidade", + "footer.source_code": "Exibir código-fonte", "generic.saved": "Salvo", "getting_started.heading": "Primeiros passos", "hashtag.column_header.tag_mode.all": "e {additional}", @@ -288,14 +288,14 @@ "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", + "interaction_modal.on_another_server": "Em um servidor diferente", + "interaction_modal.on_this_server": "Neste servidor", "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.follow": "Seguir {name}", "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.title.reply": "Responder à publicação de {name}", "intervals.full.days": "{number, plural, one {# dia} other {# dias}}", "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", @@ -339,7 +339,7 @@ "lightbox.next": "Próximo", "lightbox.previous": "Anterior", "limited_account_hint.action": "Exibir perfil mesmo assim", - "limited_account_hint.title": "Este perfil foi ocultado pelos moderadores do seu servidor.", + "limited_account_hint.title": "Este perfil foi ocultado pelos moderadores do {domain}.", "lists.account.add": "Adicionar à lista", "lists.account.remove": "Remover da lista", "lists.delete": "Excluir lista", @@ -361,7 +361,7 @@ "mute_modal.duration": "Duração", "mute_modal.hide_notifications": "Ocultar notificações deste usuário?", "mute_modal.indefinite": "Indefinido", - "navigation_bar.about": "About", + "navigation_bar.about": "Sobre", "navigation_bar.blocks": "Usuários bloqueados", "navigation_bar.bookmarks": "Salvos", "navigation_bar.community_timeline": "Linha do tempo local", @@ -382,7 +382,7 @@ "navigation_bar.pins": "Toots fixados", "navigation_bar.preferences": "Preferências", "navigation_bar.public_timeline": "Linha global", - "navigation_bar.search": "Search", + "navigation_bar.search": "Buscar", "navigation_bar.security": "Segurança", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} denunciou {target}", @@ -398,7 +398,7 @@ "notification.update": "{name} editou uma publicação", "notifications.clear": "Limpar notificações", "notifications.clear_confirmation": "Você tem certeza de que deseja limpar todas as suas notificações?", - "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.report": "Novos relatórios:", "notifications.column_settings.admin.sign_up": "Novas inscrições:", "notifications.column_settings.alert": "Notificações no computador", "notifications.column_settings.favourite": "Favoritos:", @@ -452,8 +452,8 @@ "privacy.public.short": "Público", "privacy.unlisted.long": "Visível para todos, mas desativou os recursos de descoberta", "privacy.unlisted.short": "Não-listado", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Última atualização {date}", + "privacy_policy.title": "Política de Privacidade", "refresh": "Atualizar", "regeneration_indicator.label": "Carregando…", "regeneration_indicator.sublabel": "Sua página inicial está sendo preparada!", @@ -506,13 +506,13 @@ "report.thanks.title_actionable": "Obrigado por reportar. Vamos analisar.", "report.unfollow": "Deixar de seguir @{name}", "report.unfollow_explanation": "Você está seguindo esta conta. Para não mais ver os posts dele em sua página inicial, deixe de segui-lo.", - "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.attached_statuses": "{count, plural, one {{count} publicação} other {{count} publicações}} anexada(s)", "report_notification.categories.other": "Outro", "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Violação de regra", "report_notification.open": "Abrir relatório", "search.placeholder": "Pesquisar", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Buscar ou colar URL", "search_popout.search_format": "Formato de pesquisa avançada", "search_popout.tips.full_text": "Texto simples retorna toots que você escreveu, favoritou, deu boost, ou em que foi mencionado, assim como nomes de usuário e de exibição, e hashtags correspondentes.", "search_popout.tips.hashtag": "hashtag", @@ -525,17 +525,17 @@ "search_results.nothing_found": "Não foi possível encontrar nada para estes termos de busca", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Pesquisar toots por seu conteúdo não está ativado nesta instância Mastodon.", - "search_results.title": "Search for {q}", + "search_results.title": "Buscar {q}", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", - "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "server_banner.about_active_users": "Pessoas usando esta instância durante os últimos 30 dias (Usuários Ativos Mensalmente)", + "server_banner.active_users": "usuários ativos", + "server_banner.administered_by": "Administrado por:", + "server_banner.introduction": "{domain} faz parte da rede social descentralizada desenvolvida por {mastodon}.", + "server_banner.learn_more": "Saiba mais", + "server_banner.server_stats": "Estatísticas da instância:", + "sign_in_banner.create_account": "Criar conta", + "sign_in_banner.sign_in": "Entrar", + "sign_in_banner.text": "Entre para seguir perfis ou marcadores, favoritar, compartilhar e responder publicações, interagir a partir da sua conta em uma instância diferente.", "status.admin_account": "Abrir interface de moderação para @{name}", "status.admin_status": "Abrir este toot na interface de moderação", "status.block": "Bloquear @{name}", @@ -551,9 +551,9 @@ "status.edited_x_times": "Editado {count, plural, one {{count} hora} other {{count} vezes}}", "status.embed": "Incorporar", "status.favourite": "Favoritar", - "status.filter": "Filter this post", + "status.filter": "Filtrar esta publicação", "status.filtered": "Filtrado", - "status.hide": "Hide toot", + "status.hide": "Ocultar publicação", "status.history.created": "{name} criou {date}", "status.history.edited": "{name} editou {date}", "status.load_more": "Ver mais", @@ -572,26 +572,26 @@ "status.reblogs.empty": "Nada aqui. Quando alguém der boost, o usuário aparecerá aqui.", "status.redraft": "Excluir e rascunhar", "status.remove_bookmark": "Remover do Salvos", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Em resposta a {name}", "status.reply": "Responder", "status.replyAll": "Responder a conversa", "status.report": "Denunciar @{name}", "status.sensitive_warning": "Mídia sensível", "status.share": "Compartilhar", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Mostrar de qualquer maneira", "status.show_less": "Mostrar menos", "status.show_less_all": "Mostrar menos em tudo", "status.show_more": "Mostrar mais", "status.show_more_all": "Mostrar mais em tudo", - "status.show_original": "Show original", - "status.translate": "Translate", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.show_original": "Mostrar original", + "status.translate": "Traduzir", + "status.translated_from_with": "Traduzido do {lang} usando {provider}", "status.uncached_media_warning": "Não disponível", "status.unmute_conversation": "Dessilenciar conversa", "status.unpin": "Desafixar", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Apenas publicações nos idiomas selecionados irão aparecer na sua página inicial e outras linhas do tempo após a mudança. Selecione nenhum para receber publicações em todos os idiomas.", + "subscribed_languages.save": "Salvar alterações", + "subscribed_languages.target": "Alterar idiomas inscritos para {target}", "suggestions.dismiss": "Ignorar sugestão", "suggestions.header": "Talvez seja do teu interesse…", "tabs_bar.federated_timeline": "Linha global", @@ -607,7 +607,7 @@ "timeline_hint.resources.followers": "Seguidores", "timeline_hint.resources.follows": "Segue", "timeline_hint.resources.statuses": "Toots anteriores", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} pessoa} other {{counter} pessoas}} no(s) último(s) {days, plural, one {dia} other {{days} dias}}", "trends.trending_now": "Em alta agora", "ui.beforeunload": "Seu rascunho será perdido se sair do Mastodon.", "units.short.billion": "{count} bi", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Preparando OCR…", "upload_modal.preview_label": "Prévia ({ratio})", "upload_progress.label": "Enviando...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Processando…", "video.close": "Fechar vídeo", "video.download": "Baixar", "video.exit_fullscreen": "Sair da tela cheia", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index ea60d7622..48b705e08 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -1,7 +1,7 @@ { "about.blocks": "Servidores moderados", "about.contact": "Contacto:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon é um software livre, de código aberto e uma marca registada do Mastodon gGmbH.", "about.domain_blocks.comment": "Motivo", "about.domain_blocks.domain": "Domínio", "about.domain_blocks.preamble": "Mastodon geralmente permite que veja e interaja com o conteúdo de utilizadores de qualquer outra instância no fediverso. Estas são as exceções desta instância em específico.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rejeitar", "follow_requests.unlocked_explanation": "Apesar de a sua não ser privada, a administração de {domain} pensa que poderá querer rever manualmente os pedidos de seguimento dessas contas.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Sobre", + "footer.directory": "Diretório de perfis", + "footer.get_app": "Obtém a aplicação", + "footer.invite": "Convidar pessoas", + "footer.keyboard_shortcuts": "Atalhos do teclado", + "footer.privacy_policy": "Política de privacidade", + "footer.source_code": "Ver código-fonte", "generic.saved": "Salvo", "getting_started.heading": "Primeiros passos", "hashtag.column_header.tag_mode.all": "e {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Próximo", "lightbox.previous": "Anterior", "limited_account_hint.action": "Exibir perfil mesmo assim", - "limited_account_hint.title": "Este perfil foi ocultado pelos moderadores do seu servidor.", + "limited_account_hint.title": "Este perfil foi ocultado pelos moderadores de {domain}.", "lists.account.add": "Adicionar à lista", "lists.account.remove": "Remover da lista", "lists.delete": "Eliminar lista", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Violação de regra", "report_notification.open": "Abrir denúncia", "search.placeholder": "Pesquisar", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Pesquisar ou introduzir URL", "search_popout.search_format": "Formato avançado de pesquisa", "search_popout.tips.full_text": "Texto simples devolve publicações que escreveu, marcou como favorita, partilhou ou em que foi mencionado, tal como nomes de utilizador, alcunhas e hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "A preparar OCR…", "upload_modal.preview_label": "Pré-visualizar ({ratio})", "upload_progress.label": "A enviar...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "A processar…", "video.close": "Fechar vídeo", "video.download": "Descarregar ficheiro", "video.exit_fullscreen": "Sair de full screen", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 2ccd7f6c5..d3531da42 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -339,7 +339,7 @@ "lightbox.next": "Înainte", "lightbox.previous": "Înapoi", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Adaugă în listă", "lists.account.remove": "Elimină din listă", "lists.delete": "Șterge lista", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 985a6bdd2..90ecd65d4 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -1,7 +1,7 @@ { "about.blocks": "Модерируемые серверы", "about.contact": "Контакты:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon — бесплатное программным обеспечением с открытым исходным кодом и торговой маркой Mastodon gGmbH.", "about.domain_blocks.comment": "Причина", "about.domain_blocks.domain": "Домен", "about.domain_blocks.preamble": "Mastodon обычно позволяет просматривать содержимое и взаимодействовать с другими пользователями любых серверов в Федиверсе. Вот исключения, сделанные конкретно для этого сервера.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Авторизовать", "follow_request.reject": "Отказать", "follow_requests.unlocked_explanation": "Этот запрос отправлен с учётной записи, для которой администрация {domain} включила ручную проверку подписок.", - "footer.about": "About", + "footer.about": "О проекте", "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.get_app": "Скачать приложение", + "footer.invite": "Пригласить людей", + "footer.keyboard_shortcuts": "Сочетания клавиш", + "footer.privacy_policy": "Политика конфиденциальности", + "footer.source_code": "Исходный код", "generic.saved": "Сохранено", "getting_started.heading": "Начать", "hashtag.column_header.tag_mode.all": "и {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Далее", "lightbox.previous": "Назад", "limited_account_hint.action": "Все равно показать профиль", - "limited_account_hint.title": "Этот профиль был скрыт модераторами вашего сервера.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Добавить в список", "lists.account.remove": "Убрать из списка", "lists.delete": "Удалить список", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Нарушение правил", "report_notification.open": "Подать жалобу", "search.placeholder": "Поиск", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Поиск или вставка URL-адреса", "search_popout.search_format": "Продвинутый формат поиска", "search_popout.tips.full_text": "Поиск по простому тексту отобразит посты, которые вы написали, добавили в избранное, продвинули или в которых были упомянуты, а также подходящие имена пользователей и хэштеги.", "search_popout.tips.hashtag": "хэштег", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Подготовка распознования…", "upload_modal.preview_label": "Предпросмотр ({ratio})", "upload_progress.label": "Загрузка...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Обработка…", "video.close": "Закрыть видео", "video.download": "Загрузить файл", "video.exit_fullscreen": "Покинуть полноэкранный режим", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index b53a0154f..06aac9ece 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -339,7 +339,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 80879eac0..255ebe131 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -339,7 +339,7 @@ "lightbox.next": "Imbeniente", "lightbox.previous": "Pretzedente", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Agiunghe a sa lista", "lists.account.remove": "Boga dae sa lista", "lists.delete": "Cantzella sa lista", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 8d0bccd16..93032eae5 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -339,7 +339,7 @@ "lightbox.next": "ඊළඟ", "lightbox.previous": "පෙර", "limited_account_hint.action": "කෙසේ හෝ පැතිකඩ පෙන්වන්න", - "limited_account_hint.title": "මෙම පැතිකඩ ඔබගේ සේවාදායකයේ පරිපාලකයින් විසින් සඟවා ඇත.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "ලේඛනයට දමන්න", "lists.account.remove": "ලේඛනයෙන් ඉවතලන්න", "lists.delete": "ලේඛනය මකන්න", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 819315399..36d8c27c7 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -339,7 +339,7 @@ "lightbox.next": "Ďalšie", "lightbox.previous": "Predchádzajúci", "limited_account_hint.action": "Ukáž profil aj tak", - "limited_account_hint.title": "Tento profil bol ukrytý správcami tvojho servera.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Pridaj do zoznamu", "lists.account.remove": "Odober zo zoznamu", "lists.delete": "Vymaž list", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 783da7932..77ede79d2 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -1,7 +1,7 @@ { "about.blocks": "Moderirani strežniki", "about.contact": "Stik:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon je prosto, odprto-kodno programje in blagovna znamka Mastodon gGmbH.", "about.domain_blocks.comment": "Razlog", "about.domain_blocks.domain": "Domena", "about.domain_blocks.preamble": "Mastodon vam splošno omogoča ogled vsebin in interakcijo z uporabniki iz vseh drugih strežnikov v fediverzumu. To so izjeme, opravljene na tem strežniku.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Overi", "follow_request.reject": "Zavrni", "follow_requests.unlocked_explanation": "Čeprav vaš račun ni zaklenjen, zaposleni pri {domain} menijo, da bi morda želeli pregledati zahteve za sledenje teh računov ročno.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "O Mastodonu", + "footer.directory": "Imenik profilov", + "footer.get_app": "Prenesite aplikacijo", + "footer.invite": "Povabite osebe", + "footer.keyboard_shortcuts": "Tipkovne bližnjice", + "footer.privacy_policy": "Pravilnik o zasebnosti", + "footer.source_code": "Pokaži izvorno kodo", "generic.saved": "Shranjeno", "getting_started.heading": "Kako začeti", "hashtag.column_header.tag_mode.all": "in {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Naslednji", "lightbox.previous": "Prejšnji", "limited_account_hint.action": "Vseeno pokaži profil", - "limited_account_hint.title": "Profil so moderatorji vašega strežnika skrili.", + "limited_account_hint.title": "Profil so moderatorji strežnika {domain} skrili.", "lists.account.add": "Dodaj na seznam", "lists.account.remove": "Odstrani s seznama", "lists.delete": "Izbriši seznam", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Kršitev pravila", "report_notification.open": "Odpri prijavo", "search.placeholder": "Iskanje", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Iščite ali prilepite URL", "search_popout.search_format": "Napredna oblika iskanja", "search_popout.tips.full_text": "Enostavno besedilo vrne objave, ki ste jih napisali, vzljubili, izpostavili ali ste bili v njih omenjeni, kot tudi ujemajoča se uporabniška imena, prikazna imena in ključnike.", "search_popout.tips.hashtag": "ključnik", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Priprava optične prepoznave znakov (OCR) ...", "upload_modal.preview_label": "Predogled ({ratio})", "upload_progress.label": "Pošiljanje...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Obdelovanje …", "video.close": "Zapri video", "video.download": "Prenesi datoteko", "video.exit_fullscreen": "Izhod iz celozaslonskega načina", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index f82b49b7f..21442c856 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -1,7 +1,7 @@ { "about.blocks": "Shërbyes të moderuar", "about.contact": "Kontakt:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon-i është software i lirë, me burim të hapët dhe shenjë tregtare e Mastodon gGmbH.", "about.domain_blocks.comment": "Arsye", "about.domain_blocks.domain": "Përkatësi", "about.domain_blocks.preamble": "Mastodon-i ju lë përgjithësisht të shihni lëndë prej përdoruesish dhe të ndërveproni me ta nga cilido shërbyes tjetër qofshin në fedivers. Ka përjashtime që janë bërë në këtë shërbyes të dhënë.", @@ -21,16 +21,16 @@ "account.block_domain": "Blloko përkatësinë {domain}", "account.blocked": "E bllokuar", "account.browse_more_on_origin_server": "Shfletoni më tepër rreth profilit origjinal", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Tërhiq mbrapsht kërkesë për ndjekje", "account.direct": "Mesazh i drejtpërdrejtë për @{name}", "account.disable_notifications": "Resht së njoftuari mua, kur poston @{name}", "account.domain_blocked": "Përkatësia u bllokua", "account.edit_profile": "Përpunoni profilin", "account.enable_notifications": "Njoftomë, kur poston @{name}", "account.endorse": "Pasqyrojeni në profil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Postimi i fundit më {date}", + "account.featured_tags.last_status_never": "Pa postime", + "account.featured_tags.title": "Hashtagë të zgjedhur të {name}", "account.follow": "Ndiqeni", "account.followers": "Ndjekës", "account.followers.empty": "Këtë përdorues ende s’e ndjek kush.", @@ -40,7 +40,7 @@ "account.follows.empty": "Ky përdorues ende s’ndjek kënd.", "account.follows_you": "Ju ndjek", "account.hide_reblogs": "Fshih përforcime nga @{name}", - "account.joined_short": "Joined", + "account.joined_short": "U bë pjesë", "account.languages": "Ndryshoni gjuhë pajtimesh", "account.link_verified_on": "Pronësia e kësaj lidhjeje qe kontrolluar më {date}", "account.locked_info": "Gjendja e privatësisë së kësaj llogarie është caktuar si e kyçur. I zoti merr dorazi në shqyrtim cilët mund ta ndjekin.", @@ -80,23 +80,23 @@ "audio.hide": "Fshihe audion", "autosuggest_hashtag.per_week": "{count} për javë", "boost_modal.combo": "Që kjo të anashkalohet herës tjetër, mund të shtypni {combo}", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Kopjo raportim gabimi", + "bundle_column_error.error.body": "Faqja e kërkuar s’u vizatua dot. Kjo mund të vijë nga një e metë në kodin tonë, ose nga një problem përputhshmërie i shfletuesit.", + "bundle_column_error.error.title": "Oh, mos!", + "bundle_column_error.network.body": "Pati një gabim teksa provohej të ngarkohej kjo faqe. Kjo mund të vijë për shkak të një problemi të përkohshëm me lidhjen tuaj internet ose me këtë shërbyes.", + "bundle_column_error.network.title": "Gabim rrjeti", "bundle_column_error.retry": "Riprovoni", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Shko mbrapsht te kreu", + "bundle_column_error.routing.body": "Faqja e kërkuar s’u gjet dot. Jeni i sigurt se URL-ja te shtylla e adresave është e saktë?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Mbylle", "bundle_modal_error.message": "Diç shkoi ters teksa ngarkohej ky përbërës.", "bundle_modal_error.retry": "Riprovoni", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Ngaqë Mastodon-i është i decentralizuar, mund të krijoni një llogari në një tjetër shërbyes dhe prapë të ndëveproni me këtë këtu.", + "closed_registrations_modal.description": "Krijimi i një llogarie te {domain} aktualisht është i pamundur, por kini parasysh se s’keni nevojë për një llogari posaçërisht në {domain} që të përdorni Mastodon-in.", + "closed_registrations_modal.find_another_server": "Gjeni shërbyes tjetër", + "closed_registrations_modal.preamble": "Mastodon-i është i decentralizuar, ndaj pavarësisht se ku krijoni llogarinë tuaj, do të jeni në gjendje të ndiqni dhe ndërveproni me këdo në këtë shërbyes. Mundeni madje edhe ta strehoni ju vetë!", + "closed_registrations_modal.title": "Po regjistroheni në Mastodon", "column.about": "Mbi", "column.blocks": "Përdorues të bllokuar", "column.bookmarks": "Faqerojtës", @@ -150,8 +150,8 @@ "confirmations.block.block_and_report": "Bllokojeni & Raportojeni", "confirmations.block.confirm": "Bllokoje", "confirmations.block.message": "Jeni i sigurt se doni të bllokohet {name}?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "Tërhiqeni mbrapsht kërkesën", + "confirmations.cancel_follow_request.message": "Jeni i sigurt se doni të tërhiqni mbrapsht kërkesën tuaj për ndjekje të {name}?", "confirmations.delete.confirm": "Fshije", "confirmations.delete.message": "Jeni i sigurt se doni të fshihet kjo gjendje?", "confirmations.delete_list.confirm": "Fshije", @@ -259,13 +259,13 @@ "follow_request.authorize": "Autorizoje", "follow_request.reject": "Hidhe tej", "follow_requests.unlocked_explanation": "Edhe pse llogaria juaj s’është e kyçur, ekipi i {domain} mendoi se mund të donit të shqyrtonit dorazi kërkesa ndjekjeje prej këtyre llogarive.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Mbi", + "footer.directory": "Drejtori profilesh", + "footer.get_app": "Merreni aplikacionin", + "footer.invite": "Ftoni njerëz", + "footer.keyboard_shortcuts": "Shkurtore tastiere", + "footer.privacy_policy": "Rregulla privatësie", + "footer.source_code": "Shihni kodin burim", "generic.saved": "U ruajt", "getting_started.heading": "Si t’ia fillohet", "hashtag.column_header.tag_mode.all": "dhe {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Pasuesja", "lightbox.previous": "E mëparshmja", "limited_account_hint.action": "Shfaqe profilin sido qoftë", - "limited_account_hint.title": "Ky profil është fshehur nga moderatorët e shërbyesit tuaj.", + "limited_account_hint.title": "Ky profil është fshehur nga moderatorët e {domain}.", "lists.account.add": "Shto në listë", "lists.account.remove": "Hiqe nga lista", "lists.delete": "Fshije listën", @@ -382,7 +382,7 @@ "navigation_bar.pins": "Mesazhe të fiksuar", "navigation_bar.preferences": "Parapëlqime", "navigation_bar.public_timeline": "Rrjedhë kohore të federuarish", - "navigation_bar.search": "Search", + "navigation_bar.search": "Kërkoni", "navigation_bar.security": "Siguri", "not_signed_in_indicator.not_signed_in": "Që të përdorni këtë burim, lypset të bëni hyrjen.", "notification.admin.report": "{name} raportoi {target}", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Cenim rregullash", "report_notification.open": "Hape raportimin", "search.placeholder": "Kërkoni", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Kërkoni, ose hidhni një URL", "search_popout.search_format": "Format kërkimi të mëtejshëm", "search_popout.tips.full_text": "Kërkimi për tekst të thjeshtë përgjigjet me mesazhe që keni shkruar, parapëlqyer, përforcuar, ose ku jeni përmendur, si dhe emra përdoruesish, emra ekrani dhe hashtag-ë që kanë përputhje me termin e kërkimit.", "search_popout.tips.hashtag": "hashtag", @@ -572,7 +572,7 @@ "status.reblogs.empty": "Këtë mesazh s’e ka përforcuar njeri deri tani. Kur ta bëjë dikush, kjo do të duket këtu.", "status.redraft": "Fshijeni & rihartojeni", "status.remove_bookmark": "Hiqe faqerojtësin", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Iu përgjigj {name}", "status.reply": "Përgjigjuni", "status.replyAll": "Përgjigjuni rrjedhës", "status.report": "Raportojeni @{name}", @@ -585,7 +585,7 @@ "status.show_more_all": "Shfaq më tepër për të tërë", "status.show_original": "Shfaq origjinalin", "status.translate": "Përktheje", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Përkthyer nga {lang} duke përdorur {provider}", "status.uncached_media_warning": "Jo e passhme", "status.unmute_conversation": "Ktheji zërin bisedës", "status.unpin": "Shfiksoje nga profili", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Po përgatitet OCR-ja…", "upload_modal.preview_label": "Paraparje ({ratio})", "upload_progress.label": "Po ngarkohet…", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Po përpunon…", "video.close": "Mbylle videon", "video.download": "Shkarkoje kartelën", "video.exit_fullscreen": "Dil nga mënyra Sa Krejt Ekrani", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 8df13a0f1..510944d6d 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -339,7 +339,7 @@ "lightbox.next": "Sledeći", "lightbox.previous": "Prethodni", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Dodaj na listu", "lists.account.remove": "Ukloni sa liste", "lists.delete": "Obriši listu", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 4b80f1521..c5e24c1bc 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -339,7 +339,7 @@ "lightbox.next": "Следећи", "lightbox.previous": "Претходни", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Додај на листу", "lists.account.remove": "Уклони са листе", "lists.delete": "Обриши листу", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 91a4a0796..07e75ec44 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -1,36 +1,36 @@ { "about.blocks": "Modererade servrar", "about.contact": "Kontakt:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Skäl", + "about.disclaimer": "Mastodon är fri programvara med öppen källkod och ett varumärke tillhörande Mastodon gGmbH.", + "about.domain_blocks.comment": "Anledning", "about.domain_blocks.domain": "Domän", - "about.domain_blocks.preamble": "Mastodon låter dig i allmänhet visa innehåll från och interagera med användare från någon annan server i fediverse. Dessa är de undantag som har gjorts på just denna server.", + "about.domain_blocks.preamble": "Mastodon låter dig i allmänhet visa innehåll från, och interagera med, användare från andra servrar i fediversumet. Dessa är undantagen som gjorts på just denna server.", "about.domain_blocks.severity": "Allvarlighetsgrad", - "about.domain_blocks.silenced.explanation": "Du kommer i allmänhet inte att se profiler och innehåll från denna server, om du inte uttryckligen slå upp eller välja in det genom att följa.", + "about.domain_blocks.silenced.explanation": "Du kommer i allmänhet inte att se profiler och innehåll från denna server, om du inte uttryckligen slår upp eller samtycker till det genom att följa.", "about.domain_blocks.silenced.title": "Begränsat", - "about.domain_blocks.suspended.explanation": "Ingen data från denna server kommer bearbetas, lagras eller bytas ut vilket omöjliggör kommunikation med användare från denna serverdator.", - "about.domain_blocks.suspended.title": "Suspended", + "about.domain_blocks.suspended.explanation": "Inga data från denna server kommer behandlas, lagras eller bytas ut, vilket omöjliggör kommunikation med användare på denna server.", + "about.domain_blocks.suspended.title": "Avstängd", "about.not_available": "Denna information har inte gjorts tillgänglig på denna server.", - "about.powered_by": "Decentraliserade sociala medier drivna av {mastodon}", + "about.powered_by": "Decentraliserat socialt medium drivet av {mastodon}", "about.rules": "Serverregler", "account.account_note_header": "Anteckning", "account.add_or_remove_from_list": "Lägg till i eller ta bort från listor", "account.badges.bot": "Robot", "account.badges.group": "Grupp", "account.block": "Blockera @{name}", - "account.block_domain": "Dölj allt från {domain}", + "account.block_domain": "Blockera domänen {domain}", "account.blocked": "Blockerad", - "account.browse_more_on_origin_server": "Läs mer på original profilen", - "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "Skicka ett direktmeddelande till @{name}", - "account.disable_notifications": "Sluta meddela mig när @{name} tutar", - "account.domain_blocked": "Domän dold", + "account.browse_more_on_origin_server": "Läs mer på den ursprungliga profilen", + "account.cancel_follow_request": "Återkalla följförfrågan", + "account.direct": "Skicka direktmeddelande till @{name}", + "account.disable_notifications": "Sluta notifiera mig när @{name} gör inlägg", + "account.domain_blocked": "Domän blockerad", "account.edit_profile": "Redigera profil", - "account.enable_notifications": "Meddela mig när @{name} tutar", + "account.enable_notifications": "Notifiera mig när @{name} gör inlägg", "account.endorse": "Visa på profil", "account.featured_tags.last_status_at": "Senaste inlägg den {date}", "account.featured_tags.last_status_never": "Inga inlägg", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.title": "{name}s utvalda hashtags", "account.follow": "Följ", "account.followers": "Följare", "account.followers.empty": "Ingen följer denna användare än.", @@ -39,8 +39,8 @@ "account.following_counter": "{count, plural, one {{counter} Följer} other {{counter} Följer}}", "account.follows.empty": "Denna användare följer inte någon än.", "account.follows_you": "Följer dig", - "account.hide_reblogs": "Dölj knuffar från @{name}", - "account.joined_short": "Joined", + "account.hide_reblogs": "Dölj boostningar från @{name}", + "account.joined_short": "Gick med", "account.languages": "Ändra prenumererade språk", "account.link_verified_on": "Ägarskap för detta konto kontrollerades den {date}", "account.locked_info": "Detta konto har låst integritetsstatus. Ägaren väljer manuellt vem som kan följa.", @@ -55,8 +55,8 @@ "account.report": "Rapportera @{name}", "account.requested": "Inväntar godkännande. Klicka för att avbryta följarförfrågan", "account.share": "Dela @{name}s profil", - "account.show_reblogs": "Visa knuffar från @{name}", - "account.statuses_counter": "{count, plural,one {{counter} Tuta} other {{counter} Tutor}}", + "account.show_reblogs": "Visa boostningar av @{name}", + "account.statuses_counter": "{count, plural, one {{counter} Inlägg} other {{counter} Inlägg}}", "account.unblock": "Avblockera @{name}", "account.unblock_domain": "Sluta dölja {domain}", "account.unblock_short": "Avblockera", @@ -64,7 +64,7 @@ "account.unfollow": "Sluta följ", "account.unmute": "Sluta tysta @{name}", "account.unmute_notifications": "Återaktivera aviseringar från @{name}", - "account.unmute_short": "Unmute", + "account.unmute_short": "Avtysta", "account_note.placeholder": "Klicka för att lägga till anteckning", "admin.dashboard.daily_retention": "Användarlojalitet per dag efter registrering", "admin.dashboard.monthly_retention": "Användarlojalitet per månad efter registrering", @@ -79,25 +79,25 @@ "attachments_list.unprocessed": "(obearbetad)", "audio.hide": "Dölj audio", "autosuggest_hashtag.per_week": "{count} per vecka", - "boost_modal.combo": "Du kan trycka {combo} för att slippa detta nästa gång", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "boost_modal.combo": "Du kan trycka på {combo} för att hoppa över detta nästa gång", + "bundle_column_error.copy_stacktrace": "Kopiera felrapport", + "bundle_column_error.error.body": "Den begärda sidan kunde inte visas. Det kan bero på ett fel i vår kod eller ett problem med webbläsarens kompatibilitet.", + "bundle_column_error.error.title": "Åh nej!", + "bundle_column_error.network.body": "Det uppstod ett fel när denna sida skulle visas. Detta kan bero på ett tillfälligt problem med din internetanslutning eller denna server.", + "bundle_column_error.network.title": "Nätverksfel", "bundle_column_error.retry": "Försök igen", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Tillbaka till startsidan", + "bundle_column_error.routing.body": "Den begärda sidan kunde inte hittas. Är du säker på att URL:en i adressfältet är korrekt?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Stäng", "bundle_modal_error.message": "Något gick fel när denna komponent laddades.", "bundle_modal_error.retry": "Försök igen", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", + "closed_registrations.other_server_instructions": "Eftersom Mastodon är decentraliserat kan du skapa ett konto på en annan server och fortfarande interagera med denna.", + "closed_registrations_modal.description": "Det är för närvarande inte möjligt att skapa ett konto på {domain} men kom ihåg att du inte behöver ett konto specifikt på {domain} för att använda Mastodon.", + "closed_registrations_modal.find_another_server": "Hitta en annan server", + "closed_registrations_modal.preamble": "Mastodon är decentraliserat så oavsett var du skapar ditt konto kommer du att kunna följa och interagera med någon på denna server. Du kan också köra din egen server!", + "closed_registrations_modal.title": "Registrera sig på Mastodon", + "column.about": "Om", "column.blocks": "Blockerade användare", "column.bookmarks": "Bokmärken", "column.community": "Lokal tidslinje", @@ -110,7 +110,7 @@ "column.lists": "Listor", "column.mutes": "Tystade användare", "column.notifications": "Aviseringar", - "column.pins": "Nålade toots", + "column.pins": "Fästa inlägg", "column.public": "Federerad tidslinje", "column_back_button.label": "Tillbaka", "column_header.hide_settings": "Dölj inställningar", @@ -123,11 +123,11 @@ "community.column_settings.local_only": "Endast lokalt", "community.column_settings.media_only": "Endast media", "community.column_settings.remote_only": "Endast fjärr", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "Ändra språk", + "compose.language.search": "Sök språk...", "compose_form.direct_message_warning_learn_more": "Lär dig mer", - "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": "Denna toot kommer inte att visas under någon hashtag eftersom den är onoterad. Endast offentliga toots kan sökas med hashtag.", + "compose_form.encryption_warning": "Inlägg på Mastodon är inte obrutet krypterade. Dela inte någon känslig information på Mastodon.", + "compose_form.hashtag_warning": "Detta inlägg kommer inte listas under någon hashtagg eftersom det är olistat. Endast offentliga inlägg kan eftersökas med hashtagg.", "compose_form.lock_disclaimer": "Ditt konto är inte {locked}. Vem som helst kan följa dig för att se dina inlägg som endast är för följare.", "compose_form.lock_disclaimer.lock": "låst", "compose_form.placeholder": "Vad tänker du på?", @@ -150,10 +150,10 @@ "confirmations.block.block_and_report": "Blockera & rapportera", "confirmations.block.confirm": "Blockera", "confirmations.block.message": "Är du säker på att du vill blockera {name}?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "Återkalla förfrågan", + "confirmations.cancel_follow_request.message": "Är du säker på att du vill återkalla din begäran om att följa {name}?", "confirmations.delete.confirm": "Radera", - "confirmations.delete.message": "Är du säker på att du vill radera denna status?", + "confirmations.delete.message": "Är du säker på att du vill radera detta inlägg?", "confirmations.delete_list.confirm": "Radera", "confirmations.delete_list.message": "Är du säker på att du vill radera denna lista permanent?", "confirmations.discard_edit_media.confirm": "Kasta", @@ -163,10 +163,10 @@ "confirmations.logout.confirm": "Logga ut", "confirmations.logout.message": "Är du säker på att du vill logga ut?", "confirmations.mute.confirm": "Tysta", - "confirmations.mute.explanation": "Detta kommer att dölja poster från dem och poster som nämner dem, men fortfarande tillåta dem att se dina poster och följa dig.", + "confirmations.mute.explanation": "Detta kommer dölja inlägg från dem och inlägg som nämner dem, men de tillåts fortfarande se dina inlägg och följa dig.", "confirmations.mute.message": "Är du säker på att du vill tysta {name}?", "confirmations.redraft.confirm": "Radera & gör om", - "confirmations.redraft.message": "Är du säker på att du vill radera detta meddelande och göra om det? Du kommer förlora alla favoriter, knuffar och svar till det ursprungliga meddelandet.", + "confirmations.redraft.message": "Är du säker på att du vill radera detta inlägg och göra om det? Favoritmarkeringar, boostningar och svar till det ursprungliga inlägget kommer förlora sitt sammanhang.", "confirmations.reply.confirm": "Svara", "confirmations.reply.message": "Om du svarar nu kommer det att ersätta meddelandet du håller på att skapa. Är du säker på att du vill fortsätta?", "confirmations.unfollow.confirm": "Avfölj", @@ -175,22 +175,22 @@ "conversation.mark_as_read": "Markera som läst", "conversation.open": "Visa konversation", "conversation.with": "Med {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", - "directory.federated": "Från känt servernätverk", + "copypaste.copied": "Kopierad", + "copypaste.copy": "Kopiera", + "directory.federated": "Från känt fediversum", "directory.local": "Endast från {domain}", "directory.new_arrivals": "Nyanlända", "directory.recently_active": "Nyligen aktiva", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "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_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", - "embed.instructions": "Lägg in denna status på din webbplats genom att kopiera koden nedan.", + "dismissable_banner.community_timeline": "Dessa är de senaste offentliga inläggen från personer vars konton tillhandahålls av {domain}.", + "dismissable_banner.dismiss": "Avfärda", + "dismissable_banner.explore_links": "Dessa nyheter pratas det om just nu, på denna och på andra servrar i det decentraliserade nätverket.", + "dismissable_banner.explore_statuses": "Dessa inlägg, från denna och andra servrar i det decentraliserade nätverket, pratas det om just nu på denna server.", + "dismissable_banner.explore_tags": "Dessa hashtaggar pratas det om just nu bland folk på denna och andra servrar i det decentraliserade nätverket.", + "dismissable_banner.public_timeline": "Dessa är de senaste offentliga inläggen från personer på denna och andra servrar på det decentraliserade nätverket som denna server känner till.", + "embed.instructions": "Bädda in detta inlägg på din webbplats genom att kopiera koden nedan.", "embed.preview": "Så här kommer det att se ut:", "emoji_button.activity": "Aktivitet", - "emoji_button.clear": "Clear", + "emoji_button.clear": "Rensa", "emoji_button.custom": "Anpassad", "emoji_button.flags": "Flaggor", "emoji_button.food": "Mat & dryck", @@ -208,19 +208,19 @@ "empty_column.account_timeline": "Inga inlägg här!", "empty_column.account_unavailable": "Profilen ej tillgänglig", "empty_column.blocks": "Du har ännu ej blockerat några användare.", - "empty_column.bookmarked_statuses": "Du har inte bokmärkt några tutar än. När du gör ett bokmärke kommer det synas här.", + "empty_column.bookmarked_statuses": "Du har inte bokmärkt några inlägg än. När du bokmärker ett inlägg kommer det synas här.", "empty_column.community": "Den lokala tidslinjen är tom. Skriv något offentligt för att sätta bollen i rullning!", "empty_column.direct": "Du har inga direktmeddelanden. När du skickar eller tar emot ett direktmeddelande kommer det att visas här.", "empty_column.domain_blocks": "Det finns ännu inga dolda domäner.", "empty_column.explore_statuses": "Ingenting är trendigt just nu. Kom tillbaka senare!", - "empty_column.favourited_statuses": "Du har inga favoritmarkerade toots än. När du favoritmarkerar en kommer den visas här.", - "empty_column.favourites": "Ingen har favoritmarkerat den här tooten än. När någon gör det kommer den visas här.", + "empty_column.favourited_statuses": "Du har inga favoritmarkerade inlägg än. När du favoritmarkerar ett inlägg kommer det visas här.", + "empty_column.favourites": "Ingen har favoritmarkerat detta inlägg än. När någon gör det kommer de synas här.", "empty_column.follow_recommendations": "Det ser ut som om inga förslag kan genereras till dig. Du kan prova att använda sök för att leta efter personer som du kanske känner eller utforska trendande hash-taggar.", "empty_column.follow_requests": "Du har inga följarförfrågningar än. När du får en kommer den visas här.", "empty_column.hashtag": "Det finns inget i denna hashtag ännu.", "empty_column.home": "Din hemma-tidslinje är tom! Besök {public} eller använd sökning för att komma igång och träffa andra användare.", "empty_column.home.suggestions": "Se några förslag", - "empty_column.list": "Det finns inget i denna lista än. När medlemmar i denna lista lägger till nya statusar kommer de att visas här.", + "empty_column.list": "Det finns inget i denna lista än. När listmedlemmar publicerar nya inlägg kommer de synas här.", "empty_column.lists": "Du har inga listor än. När skapar en kommer den dyka upp här.", "empty_column.mutes": "Du har ännu inte tystat några användare.", "empty_column.notifications": "Du har inga meddelanden än. Interagera med andra för att starta konversationen.", @@ -237,35 +237,35 @@ "explore.trending_links": "Nyheter", "explore.trending_statuses": "Inlägg", "explore.trending_tags": "Hashtaggar", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Denna filterkategori gäller inte för det sammanhang där du har tillgång till det här inlägget. Om du vill att inlägget ska filtreras även i detta sammanhang måste du redigera filtret.", + "filter_modal.added.context_mismatch_title": "Misspassning av sammanhang!", + "filter_modal.added.expired_explanation": "Denna filterkategori har utgått, du måste ändra utgångsdatum för att den ska kunna tillämpas.", + "filter_modal.added.expired_title": "Utgånget filter!", + "filter_modal.added.review_and_configure": "För att granska och vidare konfigurera denna filterkategorin, gå till {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filterinställningar", + "filter_modal.added.settings_link": "inställningar", + "filter_modal.added.short_explanation": "Inlägget har lagts till i följande filterkategori: {title}.", + "filter_modal.added.title": "Filter tillagt!", + "filter_modal.select_filter.context_mismatch": "gäller inte för detta sammanhang", + "filter_modal.select_filter.expired": "utgånget", + "filter_modal.select_filter.prompt_new": "Ny kategori: {name}", + "filter_modal.select_filter.search": "Sök eller skapa", + "filter_modal.select_filter.subtitle": "Använd en befintlig kategori eller skapa en ny", + "filter_modal.select_filter.title": "Filtrera detta inlägg", + "filter_modal.title.status": "Filtrera ett inlägg", "follow_recommendations.done": "Klar", - "follow_recommendations.heading": "Följ personer som du skulle vilja se inlägg från! Här finns det några förslag.", - "follow_recommendations.lead": "Inlägg från personer du följer kommer att dyka upp i kronologisk ordning i ditt hem-flöde. Var inte rädd för att göra misstag, du kan sluta följa människor lika enkelt när som helst!", + "follow_recommendations.heading": "Följ personer du skulle vilja se inlägg från! Här kommer några förslag.", + "follow_recommendations.lead": "Inlägg från personer du följer kommer att dyka upp i kronologisk ordning i ditt hemflöde. Var inte rädd för att göra misstag, du kan sluta följa folk när som helst!", "follow_request.authorize": "Godkänn", "follow_request.reject": "Avvisa", "follow_requests.unlocked_explanation": "Även om ditt konto inte är låst tror {domain} personalen att du kanske vill granska dessa följares förfrågningar manuellt.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Om", + "footer.directory": "Profilkatalog", + "footer.get_app": "Skaffa appen", + "footer.invite": "Bjud in personer", + "footer.keyboard_shortcuts": "Tangentbordsgenvägar", + "footer.privacy_policy": "Integritetspolicy", + "footer.source_code": "Visa källkod", "generic.saved": "Sparad", "getting_started.heading": "Kom igång", "hashtag.column_header.tag_mode.all": "och {additional}", @@ -277,38 +277,38 @@ "hashtag.column_settings.tag_mode.any": "Någon av dessa", "hashtag.column_settings.tag_mode.none": "Ingen av dessa", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", - "hashtag.follow": "Follow hashtag", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.follow": "Följ hashtagg", + "hashtag.unfollow": "Avfölj hashtagg", "home.column_settings.basic": "Grundläggande", - "home.column_settings.show_reblogs": "Visa knuffar", + "home.column_settings.show_reblogs": "Visa boostningar", "home.column_settings.show_replies": "Visa svar", "home.hide_announcements": "Dölj notiser", "home.show_announcements": "Visa notiser", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favorisera {name}'s inlägg", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Med ett Mastodon-konto kan du favoritmarkera detta inlägg för att visa författaren att du gillar det och för att spara det till senare.", + "interaction_modal.description.follow": "Med ett Mastodon-konto kan du följa {name} för att se deras inlägg i ditt hemflöde.", + "interaction_modal.description.reblog": "Med ett Mastodon-konto kan du boosta detta inlägg för att dela den med dina egna följare.", + "interaction_modal.description.reply": "Med ett Mastodon-konto kan du svara på detta inlägg.", + "interaction_modal.on_another_server": "På en annan server", + "interaction_modal.on_this_server": "På denna server", + "interaction_modal.other_server_instructions": "Kopiera och klistra in denna webbadress i din favoritapps sökfält eller i webbgränssnittet där du är inloggad.", + "interaction_modal.preamble": "Eftersom Mastodon är decentraliserat kan du använda ditt befintliga konto från en annan Mastodonserver, eller annan kompatibel plattform, om du inte har ett konto på denna.", + "interaction_modal.title.favourite": "Favoritmarkera {name}s inlägg", + "interaction_modal.title.follow": "Följ {name}", + "interaction_modal.title.reblog": "Boosta {name}s inlägg", + "interaction_modal.title.reply": "Svara på {name}s inlägg", "intervals.full.days": "{number, plural, one {# dag} other {# dagar}}", "intervals.full.hours": "{number, plural, one {# timme} other {# timmar}}", "intervals.full.minutes": "{number, plural, one {# minut} other {# minuter}}", "keyboard_shortcuts.back": "för att gå bakåt", "keyboard_shortcuts.blocked": "för att öppna listan över blockerade användare", - "keyboard_shortcuts.boost": "för att knuffa", + "keyboard_shortcuts.boost": "Boosta inlägg", "keyboard_shortcuts.column": "för att fokusera en status i en av kolumnerna", "keyboard_shortcuts.compose": "för att fokusera skrivfältet", "keyboard_shortcuts.description": "Beskrivning", "keyboard_shortcuts.direct": "för att öppna Direktmeddelanden", "keyboard_shortcuts.down": "för att flytta nedåt i listan", - "keyboard_shortcuts.enter": "för att öppna en status", - "keyboard_shortcuts.favourite": "för att sätta som favorit", + "keyboard_shortcuts.enter": "Öppna inlägg", + "keyboard_shortcuts.favourite": "Favoritmarkera inlägg", "keyboard_shortcuts.favourites": "för att öppna Favoriter", "keyboard_shortcuts.federated": "Öppna federerad tidslinje", "keyboard_shortcuts.heading": "Tangentbordsgenvägar", @@ -321,16 +321,16 @@ "keyboard_shortcuts.my_profile": "för att öppna din profil", "keyboard_shortcuts.notifications": "för att öppna Meddelanden", "keyboard_shortcuts.open_media": "öppna media", - "keyboard_shortcuts.pinned": "för att öppna nålade inlägg", + "keyboard_shortcuts.pinned": "Öppna listan över fästa inlägg", "keyboard_shortcuts.profile": "för att öppna skaparens profil", - "keyboard_shortcuts.reply": "för att svara", + "keyboard_shortcuts.reply": "Svara på inlägg", "keyboard_shortcuts.requests": "för att öppna Följförfrågningar", "keyboard_shortcuts.search": "för att fokusera sökfältet", "keyboard_shortcuts.spoilers": "visa/dölja CW-fält", "keyboard_shortcuts.start": "för att öppna \"Kom igång\"-kolumnen", "keyboard_shortcuts.toggle_hidden": "för att visa/gömma text bakom CW", "keyboard_shortcuts.toggle_sensitivity": "för att visa/gömma media", - "keyboard_shortcuts.toot": "för att påbörja en helt ny toot", + "keyboard_shortcuts.toot": "Starta nytt inlägg", "keyboard_shortcuts.unfocus": "för att avfokusera skrivfält/sökfält", "keyboard_shortcuts.up": "för att flytta uppåt i listan", "lightbox.close": "Stäng", @@ -338,8 +338,8 @@ "lightbox.expand": "Utöka bildvyrutan", "lightbox.next": "Nästa", "lightbox.previous": "Tidigare", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Visa profil ändå", + "limited_account_hint.title": "Denna profil har dolts av {domain}s moderatorer.", "lists.account.add": "Lägg till i lista", "lists.account.remove": "Ta bort från lista", "lists.delete": "Radera lista", @@ -361,11 +361,11 @@ "mute_modal.duration": "Varaktighet", "mute_modal.hide_notifications": "Dölj aviseringar från denna användare?", "mute_modal.indefinite": "Obestämt", - "navigation_bar.about": "About", + "navigation_bar.about": "Om", "navigation_bar.blocks": "Blockerade användare", "navigation_bar.bookmarks": "Bokmärken", "navigation_bar.community_timeline": "Lokal tidslinje", - "navigation_bar.compose": "Författa ny toot", + "navigation_bar.compose": "Författa nytt inlägg", "navigation_bar.direct": "Direktmeddelanden", "navigation_bar.discover": "Upptäck", "navigation_bar.domain_blocks": "Dolda domäner", @@ -379,26 +379,26 @@ "navigation_bar.logout": "Logga ut", "navigation_bar.mutes": "Tystade användare", "navigation_bar.personal": "Personligt", - "navigation_bar.pins": "Nålade inlägg (toots)", + "navigation_bar.pins": "Fästa inlägg", "navigation_bar.preferences": "Inställningar", "navigation_bar.public_timeline": "Federerad tidslinje", - "navigation_bar.search": "Search", + "navigation_bar.search": "Sök", "navigation_bar.security": "Säkerhet", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", - "notification.admin.report": "{name} reported {target}", + "not_signed_in_indicator.not_signed_in": "Du behöver logga in för att få åtkomst till denna resurs.", + "notification.admin.report": "{name} rapporterade {target}", "notification.admin.sign_up": "{name} registrerade sig", - "notification.favourite": "{name} favoriserade din status", + "notification.favourite": "{name} favoritmarkerade din status", "notification.follow": "{name} följer dig", "notification.follow_request": "{name} har begärt att följa dig", "notification.mention": "{name} nämnde dig", "notification.own_poll": "Din röstning har avslutats", "notification.poll": "En omröstning du röstat i har avslutats", - "notification.reblog": "{name} knuffade din status", - "notification.status": "{name} skrev just", + "notification.reblog": "{name} boostade ditt inlägg", + "notification.status": "{name} publicerade just ett inlägg", "notification.update": "{name} redigerade ett inlägg", "notifications.clear": "Rensa aviseringar", "notifications.clear_confirmation": "Är du säker på att du vill rensa alla dina aviseringar permanent?", - "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.report": "Nya rapporter:", "notifications.column_settings.admin.sign_up": "Nya registreringar:", "notifications.column_settings.alert": "Skrivbordsaviseringar", "notifications.column_settings.favourite": "Favoriter:", @@ -410,7 +410,7 @@ "notifications.column_settings.mention": "Omnämningar:", "notifications.column_settings.poll": "Omröstningsresultat:", "notifications.column_settings.push": "Push-aviseringar", - "notifications.column_settings.reblog": "Knuffar:", + "notifications.column_settings.reblog": "Boostningar:", "notifications.column_settings.show": "Visa i kolumnen", "notifications.column_settings.sound": "Spela upp ljud", "notifications.column_settings.status": "Nya inlägg:", @@ -418,7 +418,7 @@ "notifications.column_settings.unread_notifications.highlight": "Markera o-lästa aviseringar", "notifications.column_settings.update": "Redigeringar:", "notifications.filter.all": "Alla", - "notifications.filter.boosts": "Knuffar", + "notifications.filter.boosts": "Boostningar", "notifications.filter.favourites": "Favoriter", "notifications.filter.follows": "Följer", "notifications.filter.mentions": "Omnämningar", @@ -443,17 +443,17 @@ "poll.votes": "{votes, plural, one {# röst} other {# röster}}", "poll_button.add_poll": "Lägg till en omröstning", "poll_button.remove_poll": "Ta bort omröstning", - "privacy.change": "Justera sekretess", + "privacy.change": "Ändra inläggsintegritet", "privacy.direct.long": "Skicka endast till nämnda användare", - "privacy.direct.short": "Direct", + "privacy.direct.short": "Endast omnämnda personer", "privacy.private.long": "Endast synligt för följare", "privacy.private.short": "Endast följare", "privacy.public.long": "Synlig för alla", "privacy.public.short": "Publik", - "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", + "privacy.unlisted.long": "Synlig för alla, men visas inte i upptäcksfunktioner", "privacy.unlisted.short": "Olistad", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Senast uppdaterad {date}", + "privacy_policy.title": "Integritetspolicy", "refresh": "Läs om", "regeneration_indicator.label": "Laddar…", "regeneration_indicator.sublabel": "Ditt hemmaflöde förbereds!", @@ -470,7 +470,7 @@ "relative_time.today": "idag", "reply_indicator.cancel": "Ångra", "report.block": "Blockera", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.block_explanation": "Du kommer inte se deras inlägg. De kommer inte kunna se dina inlägg eller följa dig. De kommer kunna se att de är blockerade.", "report.categories.other": "Övrigt", "report.categories.spam": "Skräppost", "report.categories.violation": "Innehåll bryter mot en eller flera serverregler", @@ -479,44 +479,44 @@ "report.category.title_account": "profil", "report.category.title_status": "inlägg", "report.close": "Färdig", - "report.comment.title": "Is there anything else you think we should know?", + "report.comment.title": "Finns det något annat vi borde veta?", "report.forward": "Vidarebefordra till {target}", "report.forward_hint": "Kontot är från en annan server. Skicka även en anonymiserad kopia av anmälan dit?", "report.mute": "Tysta", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.mute_explanation": "Du kommer inte se deras inlägg. De kan fortfarande följa dig och se dina inlägg. De kommer inte veta att de är tystade.", "report.next": "Nästa", "report.placeholder": "Ytterligare kommentarer", "report.reasons.dislike": "Jag tycker inte om det", "report.reasons.dislike_description": "Det är inget som du vill se", "report.reasons.other": "Det är något annat", - "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.other_description": "Problemet passar inte in i andra kategorier", "report.reasons.spam": "Det är skräppost", "report.reasons.spam_description": "Skadliga länkar, bedrägligt beteende eller repetitiva svar", "report.reasons.violation": "Det bryter mot serverns regler", "report.reasons.violation_description": "Du är medveten om att det bryter mot specifika regler", - "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", - "report.statuses.subtitle": "Select all that apply", - "report.statuses.title": "Are there any posts that back up this report?", + "report.rules.subtitle": "Välj alla som stämmer", + "report.rules.title": "Vilka regler överträds?", + "report.statuses.subtitle": "Välj alla som stämmer", + "report.statuses.title": "Finns det några inlägg som stöder denna rapport?", "report.submit": "Skicka", "report.target": "Rapporterar {target}", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", - "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.take_action": "Här är dina alternativ för att bestämma vad du ser på Mastodon:", + "report.thanks.take_action_actionable": "Medan vi granskar detta kan du vidta åtgärder mot {name}:", "report.thanks.title": "Vill du inte se det här?", "report.thanks.title_actionable": "Tack för att du rapporterar, vi kommer att titta på detta.", "report.unfollow": "Sluta följ @{username}", - "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", - "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", - "report_notification.categories.spam": "Spam", - "report_notification.categories.violation": "Rule violation", - "report_notification.open": "Open report", + "report.unfollow_explanation": "Du följer detta konto. Avfölj dem för att inte se deras inlägg i ditt hemflöde.", + "report_notification.attached_statuses": "bifogade {count, plural, one {{count} inlägg} other {{count} inlägg}}", + "report_notification.categories.other": "Övrigt", + "report_notification.categories.spam": "Skräppost", + "report_notification.categories.violation": "Regelöverträdelse", + "report_notification.open": "Öppna rapport", "search.placeholder": "Sök", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Sök eller klistra in URL", "search_popout.search_format": "Avancerat sökformat", - "search_popout.tips.full_text": "Enkel text returnerar statusar där du har skrivit, favoriserat, knuffat eller nämnts samt med matchande användarnamn, visningsnamn och hashtags.", + "search_popout.tips.full_text": "Enkel text returnerar inlägg du har skrivit, favoritmarkerat, boostat eller blivit nämnd i, samt matchar användarnamn, visningsnamn och hashtaggar.", "search_popout.tips.hashtag": "hash-tagg", - "search_popout.tips.status": "status", + "search_popout.tips.status": "inlägg", "search_popout.tips.text": "Enkel text returnerar matchande visningsnamn, användarnamn och hashtags", "search_popout.tips.user": "användare", "search_results.accounts": "Människor", @@ -524,25 +524,25 @@ "search_results.hashtags": "Hashtaggar", "search_results.nothing_found": "Kunde inte hitta något för dessa sökord", "search_results.statuses": "Inlägg", - "search_results.statuses_fts_disabled": "Att söka toots med deras innehåll är inte möjligt på denna Mastodon-server.", - "search_results.title": "Search for {q}", + "search_results.statuses_fts_disabled": "Att söka efter inlägg baserat på innehåll är inte aktiverat på denna Mastodon-server.", + "search_results.title": "Sök efter {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", + "server_banner.about_active_users": "Personer som använt denna server de senaste 30 dagarna (månatligt aktiva användare)", + "server_banner.active_users": "aktiva användare", + "server_banner.administered_by": "Administrerad av:", "server_banner.introduction": "{domain} är en del av det decentraliserade sociala nätverket som drivs av {mastodon}.", "server_banner.learn_more": "Lär dig mer", "server_banner.server_stats": "Serverstatistik:", "sign_in_banner.create_account": "Skapa konto", "sign_in_banner.sign_in": "Logga in", - "sign_in_banner.text": "Logga in för att följa profiler eller hashtaggar, favorisera, dela och svara på inlägg eller interagera från ditt konto på en annan server.", + "sign_in_banner.text": "Logga in för att följa profiler eller hashtaggar, favoritmarkera, dela och svara på inlägg eller interagera från ditt konto på en annan server.", "status.admin_account": "Öppet modereringsgränssnitt för @{name}", - "status.admin_status": "Öppna denna status i modereringsgränssnittet", + "status.admin_status": "Öppna detta inlägg i modereringsgränssnittet", "status.block": "Blockera @{name}", "status.bookmark": "Bokmärk", - "status.cancel_reblog_private": "Ta bort knuff", - "status.cannot_reblog": "Detta inlägg kan inte knuffas", - "status.copy": "Kopiera länk till status", + "status.cancel_reblog_private": "Avboosta", + "status.cannot_reblog": "Detta inlägg kan inte boostas", + "status.copy": "Kopiera inläggslänk", "status.delete": "Radera", "status.detailed_status": "Detaljerad samtalsvy", "status.direct": "Direktmeddela @{name}", @@ -553,7 +553,7 @@ "status.favourite": "Favorit", "status.filter": "Filtrera detta inlägg", "status.filtered": "Filtrerat", - "status.hide": "Hide toot", + "status.hide": "Göm inlägg", "status.history.created": "{name} skapade {date}", "status.history.edited": "{name} redigerade {date}", "status.load_more": "Ladda fler", @@ -562,36 +562,36 @@ "status.more": "Mer", "status.mute": "Tysta @{name}", "status.mute_conversation": "Tysta konversation", - "status.open": "Utvidga denna status", + "status.open": "Utvidga detta inlägg", "status.pin": "Fäst i profil", - "status.pinned": "Fäst toot", + "status.pinned": "Fästa inlägg", "status.read_more": "Läs mer", - "status.reblog": "Knuffa", - "status.reblog_private": "Knuffa till de ursprungliga åhörarna", - "status.reblogged_by": "{name} knuffade", - "status.reblogs.empty": "Ingen har favoriserat den här tutningen än. När någon gör det kommer den att synas här.", + "status.reblog": "Boosta", + "status.reblog_private": "Boosta med ursprunglig synlighet", + "status.reblogged_by": "{name} boostade", + "status.reblogs.empty": "Ingen har boostat detta inlägg än. När någon gör det kommer de synas här.", "status.redraft": "Radera & gör om", "status.remove_bookmark": "Ta bort bokmärke", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Svarade på {name}", "status.reply": "Svara", "status.replyAll": "Svara på tråden", "status.report": "Rapportera @{name}", "status.sensitive_warning": "Känsligt innehåll", "status.share": "Dela", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Visa ändå", "status.show_less": "Visa mindre", "status.show_less_all": "Visa mindre för alla", "status.show_more": "Visa mer", "status.show_more_all": "Visa mer för alla", - "status.show_original": "Show original", - "status.translate": "Translate", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.show_original": "Visa original", + "status.translate": "Översätt", + "status.translated_from_with": "Översatt från {lang} med {provider}", "status.uncached_media_warning": "Ej tillgängligt", "status.unmute_conversation": "Öppna konversation", "status.unpin": "Ångra fäst i profil", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Endast inlägg på valda språk kommer att visas på dina hem- och listflöden efter ändringen. Välj ingenting för att se inlägg på alla språk.", + "subscribed_languages.save": "Spara ändringar", + "subscribed_languages.target": "Ändra språkprenumerationer för {target}", "suggestions.dismiss": "Avfärda förslag", "suggestions.header": "Du kanske är intresserad av…", "tabs_bar.federated_timeline": "Federerad", @@ -606,8 +606,8 @@ "timeline_hint.remote_resource_not_displayed": "{resource} från andra servrar visas inte.", "timeline_hint.resources.followers": "Följare", "timeline_hint.resources.follows": "Följer", - "timeline_hint.resources.statuses": "Äldre tutningar", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "timeline_hint.resources.statuses": "Äldre inlägg", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} personer}} senaste {days, plural, one {dygnet} other {{days} dagarna}}", "trends.trending_now": "Trendar nu", "ui.beforeunload": "Ditt utkast kommer att förloras om du lämnar Mastodon.", "units.short.billion": "{count}B", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Förbereder OCR…", "upload_modal.preview_label": "Förhandstitt ({ratio})", "upload_progress.label": "Laddar upp...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Bearbetar…", "video.close": "Stäng video", "video.download": "Ladda ner fil", "video.exit_fullscreen": "Stäng helskärm", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index dbc568598..0ee86d80c 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -339,7 +339,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index bbfd1da79..7d502ae6e 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -339,7 +339,7 @@ "lightbox.next": "அடுத்த", "lightbox.previous": "சென்ற", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "பட்டியலில் சேர்", "lists.account.remove": "பட்டியலில் இருந்து அகற்று", "lists.delete": "பட்டியலை நீக்கு", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 91a529b9d..7d44cbc89 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -339,7 +339,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index e038482cd..a37f95aec 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -339,7 +339,7 @@ "lightbox.next": "తరువాత", "lightbox.previous": "మునుపటి", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "జాబితాకు జోడించు", "lists.account.remove": "జాబితా నుండి తొలగించు", "lists.delete": "జాబితాను తొలగించు", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 174d74d20..603a727bb 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -1,7 +1,7 @@ { "about.blocks": "เซิร์ฟเวอร์ที่มีการควบคุม", "about.contact": "ติดต่อ:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon เป็นซอฟต์แวร์เสรี โอเพนซอร์ส และเครื่องหมายการค้าของ Mastodon gGmbH", "about.domain_blocks.comment": "เหตุผล", "about.domain_blocks.domain": "โดเมน", "about.domain_blocks.preamble": "โดยทั่วไป Mastodon อนุญาตให้คุณดูเนื้อหาจากและโต้ตอบกับผู้ใช้จากเซิร์ฟเวอร์อื่นใดในจักรวาลสหพันธ์ นี่คือข้อยกเว้นที่ทำขึ้นในเซิร์ฟเวอร์นี้โดยเฉพาะ", @@ -40,7 +40,7 @@ "account.follows.empty": "ผู้ใช้นี้ยังไม่ได้ติดตามใคร", "account.follows_you": "ติดตามคุณ", "account.hide_reblogs": "ซ่อนการดันจาก @{name}", - "account.joined_short": "Joined", + "account.joined_short": "เข้าร่วมเมื่อ", "account.languages": "เปลี่ยนภาษาที่บอกรับ", "account.link_verified_on": "ตรวจสอบความเป็นเจ้าของของลิงก์นี้เมื่อ {date}", "account.locked_info": "มีการตั้งสถานะความเป็นส่วนตัวของบัญชีนี้เป็นล็อคอยู่ เจ้าของตรวจทานผู้ที่สามารถติดตามเขาด้วยตนเอง", @@ -94,9 +94,9 @@ "bundle_modal_error.retry": "ลองอีกครั้ง", "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.find_another_server": "ค้นหาเซิร์ฟเวอร์อื่น", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations_modal.title": "การลงทะเบียนใน Mastodon", "column.about": "เกี่ยวกับ", "column.blocks": "ผู้ใช้ที่ปิดกั้นอยู่", "column.bookmarks": "ที่คั่นหน้า", @@ -259,13 +259,13 @@ "follow_request.authorize": "อนุญาต", "follow_request.reject": "ปฏิเสธ", "follow_requests.unlocked_explanation": "แม้ว่าไม่มีการล็อคบัญชีของคุณ พนักงานของ {domain} คิดว่าคุณอาจต้องการตรวจทานคำขอติดตามจากบัญชีเหล่านี้ด้วยตนเอง", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "เกี่ยวกับ", + "footer.directory": "ไดเรกทอรีโปรไฟล์", + "footer.get_app": "รับแอป", + "footer.invite": "เชิญผู้คน", + "footer.keyboard_shortcuts": "แป้นพิมพ์ลัด", + "footer.privacy_policy": "นโยบายความเป็นส่วนตัว", + "footer.source_code": "ดูโค้ดต้นฉบับ", "generic.saved": "บันทึกแล้ว", "getting_started.heading": "เริ่มต้นใช้งาน", "hashtag.column_header.tag_mode.all": "และ {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "ถัดไป", "lightbox.previous": "ก่อนหน้า", "limited_account_hint.action": "แสดงโปรไฟล์ต่อไป", - "limited_account_hint.title": "มีการซ่อนโปรไฟล์นี้โดยผู้ควบคุมของเซิร์ฟเวอร์ของคุณ", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "เพิ่มไปยังรายการ", "lists.account.remove": "เอาออกจากรายการ", "lists.delete": "ลบรายการ", @@ -382,7 +382,7 @@ "navigation_bar.pins": "โพสต์ที่ปักหมุด", "navigation_bar.preferences": "การกำหนดลักษณะ", "navigation_bar.public_timeline": "เส้นเวลาที่ติดต่อกับภายนอก", - "navigation_bar.search": "Search", + "navigation_bar.search": "ค้นหา", "navigation_bar.security": "ความปลอดภัย", "not_signed_in_indicator.not_signed_in": "คุณจำเป็นต้องลงชื่อเข้าเพื่อเข้าถึงทรัพยากรนี้", "notification.admin.report": "{name} ได้รายงาน {target}", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "การละเมิดกฎ", "report_notification.open": "รายงานที่เปิด", "search.placeholder": "ค้นหา", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "ค้นหาหรือวาง URL", "search_popout.search_format": "รูปแบบการค้นหาขั้นสูง", "search_popout.tips.full_text": "ข้อความแบบง่ายส่งคืนโพสต์ที่คุณได้เขียน ชื่นชอบ ดัน หรือได้รับการกล่าวถึง ตลอดจนชื่อผู้ใช้, ชื่อที่แสดง และแฮชแท็กที่ตรงกัน", "search_popout.tips.hashtag": "แฮชแท็ก", @@ -572,7 +572,7 @@ "status.reblogs.empty": "ยังไม่มีใครดันโพสต์นี้ เมื่อใครสักคนดัน เขาจะปรากฏที่นี่", "status.redraft": "ลบแล้วร่างใหม่", "status.remove_bookmark": "เอาที่คั่นหน้าออก", - "status.replied_to": "Replied to {name}", + "status.replied_to": "ตอบกลับ {name}", "status.reply": "ตอบกลับ", "status.replyAll": "ตอบกลับกระทู้", "status.report": "รายงาน @{name}", @@ -585,7 +585,7 @@ "status.show_more_all": "แสดงเพิ่มเติมทั้งหมด", "status.show_original": "แสดงดั้งเดิม", "status.translate": "แปล", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "แปลจาก {lang} โดยใช้ {provider}", "status.uncached_media_warning": "ไม่พร้อมใช้งาน", "status.unmute_conversation": "เลิกซ่อนการสนทนา", "status.unpin": "ถอนหมุดจากโปรไฟล์", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "กำลังเตรียม OCR…", "upload_modal.preview_label": "ตัวอย่าง ({ratio})", "upload_progress.label": "กำลังอัปโหลด...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "กำลังประมวลผล…", "video.close": "ปิดวิดีโอ", "video.download": "ดาวน์โหลดไฟล์", "video.exit_fullscreen": "ออกจากเต็มหน้าจอ", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 934a4f6d0..cb08147a6 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -1,7 +1,7 @@ { "about.blocks": "Denetlenen sunucular", "about.contact": "İletişim:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon özgür, açık kaynak bir yazılımdır ve Mastodon gGmbH şirketinin ticari markasıdır.", "about.domain_blocks.comment": "Gerekçe", "about.domain_blocks.domain": "Alan adı", "about.domain_blocks.preamble": "Mastodon, genel olarak fediverse'teki herhangi bir sunucudan içerik görüntülemenize ve kullanıcılarıyla etkileşim kurmanıza izin verir. Bunlar, bu sunucuda yapılmış olan istisnalardır.", @@ -11,7 +11,7 @@ "about.domain_blocks.suspended.explanation": "Bu sunucudaki hiçbir veri işlenmeyecek, saklanmayacak veya değiş tokuş edilmeyecektir, dolayısıyla bu sunucudaki kullanıcılarla herhangi bir etkileşim veya iletişim imkansız olacaktır.", "about.domain_blocks.suspended.title": "Askıya alındı", "about.not_available": "Bu sunucuda bu bilgi kullanıma sunulmadı.", - "about.powered_by": "{mastodon} destekli ademi merkeziyetçi sosyal medya", + "about.powered_by": "{mastodon} destekli merkeziyetsiz sosyal medya", "about.rules": "Sunucu kuralları", "account.account_note_header": "Not", "account.add_or_remove_from_list": "Listelere ekle veya kaldır", @@ -35,19 +35,19 @@ "account.followers": "Takipçi", "account.followers.empty": "Henüz kimse bu kullanıcıyı takip etmiyor.", "account.followers_counter": "{count, plural, one {{counter} Takipçi} other {{counter} Takipçi}}", - "account.following": "Takip Ediliyor", - "account.following_counter": "{count, plural, one {{counter} Takip Edilen} other {{counter} Takip Edilen}}", - "account.follows.empty": "Bu kullanıcı henüz hiçkimseyi takip etmiyor.", - "account.follows_you": "Seni takip ediyor", + "account.following": "İzleniyor", + "account.following_counter": "{count, plural, one {{counter} İzlenen} other {{counter} İzlenen}}", + "account.follows.empty": "Bu kullanıcı henüz hiçkimseyi izlemiyor.", + "account.follows_you": "Seni izliyor", "account.hide_reblogs": "@{name} kişisinin boostlarını gizle", "account.joined_short": "Katıldı", "account.languages": "Abone olunan dilleri değiştir", - "account.link_verified_on": "Bu bağlantının sahipliği {date} tarihinde kontrol edildi", - "account.locked_info": "Bu hesabın gizlilik durumu gizli olarak ayarlanmış. Sahibi, onu kimin takip edebileceğini manuel olarak onaylıyor.", + "account.link_verified_on": "Bu bağlantının sahipliği {date} tarihinde denetlendi", + "account.locked_info": "Bu hesabın gizlilik durumu kilitli olarak ayarlanmış. Sahibi, onu kimin izleyebileceğini kendi onaylıyor.", "account.media": "Medya", "account.mention": "@{name}'i an", "account.moved_to": "{name} şuraya taşındı:", - "account.mute": "@{name}'i susstur", + "account.mute": "@{name}'i sustur", "account.mute_notifications": "@{name}'in bildirimlerini sustur", "account.muted": "Susturuldu", "account.posts": "Gönderiler", @@ -57,7 +57,7 @@ "account.share": "@{name}'in profilini paylaş", "account.show_reblogs": "@{name} kişisinin boostlarını göster", "account.statuses_counter": "{count, plural, one {{counter} Gönderi} other {{counter} Gönderi}}", - "account.unblock": "@{name} adlı kişinin engelini kaldır", + "account.unblock": "@{name}'in engelini kaldır", "account.unblock_domain": "{domain} alan adının engelini kaldır", "account.unblock_short": "Engeli kaldır", "account.unendorse": "Profilimde öne çıkarma", @@ -259,13 +259,13 @@ "follow_request.authorize": "İzin Ver", "follow_request.reject": "Reddet", "follow_requests.unlocked_explanation": "Hesabınız kilitli olmasa bile, {domain} personeli bu hesaplardan gelen takip isteklerini gözden geçirmek isteyebileceğinizi düşündü.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Hakkında", + "footer.directory": "Profil dizini", + "footer.get_app": "Uygulamayı indir", + "footer.invite": "İnsanları davet et", + "footer.keyboard_shortcuts": "Klavye kısayolları", + "footer.privacy_policy": "Gizlilik politikası", + "footer.source_code": "Kaynak kodu görüntüle", "generic.saved": "Kaydedildi", "getting_started.heading": "Başlarken", "hashtag.column_header.tag_mode.all": "ve {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Sonraki", "lightbox.previous": "Önceki", "limited_account_hint.action": "Yine de profili göster", - "limited_account_hint.title": "Bu profil sunucunuzun moderatörleri tarafından gizlendi.", + "limited_account_hint.title": "Bu profil {domain} moderatörleri tarafından gizlendi.", "lists.account.add": "Listeye ekle", "lists.account.remove": "Listeden kaldır", "lists.delete": "Listeyi sil", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Kural ihlali", "report_notification.open": "Bildirim aç", "search.placeholder": "Ara", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Ara veya URL gir", "search_popout.search_format": "Gelişmiş arama biçimi", "search_popout.tips.full_text": "Basit metin yazdığınız, beğendiğiniz, teşvik ettiğiniz veya söz edilen gönderilerin yanı sıra kullanıcı adlarını, görünen adları ve etiketleri eşleşen gönderileri de döndürür.", "search_popout.tips.hashtag": "etiket", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "OCR hazırlanıyor…", "upload_modal.preview_label": "Ön izleme ({ratio})", "upload_progress.label": "Yükleniyor...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "İşleniyor…", "video.close": "Videoyu kapat", "video.download": "Dosyayı indir", "video.exit_fullscreen": "Tam ekrandan çık", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index 0144053df..f90f40cb1 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -339,7 +339,7 @@ "lightbox.next": "Киләсе", "lightbox.previous": "Алдагы", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Исемлектән бетерергә", "lists.delete": "Delete list", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index dbc568598..0ee86d80c 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -339,7 +339,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index c2db2045b..c9c70b0d3 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -1,7 +1,7 @@ { "about.blocks": "Модеровані сервери", "about.contact": "Kонтакти:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon — це безплатне програмне забезпечення з відкритим вихідним кодом та торгова марка компанії Mastodon GmbH.", "about.domain_blocks.comment": "Причина", "about.domain_blocks.domain": "Домен", "about.domain_blocks.preamble": "Mastodon зазвичай дозволяє вам взаємодіяти з користувачами будь-яких серверів у Федіверсі та переглядати їх вміст. Ось винятки, які було зроблено на цьому конкретному сервері.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Авторизувати", "follow_request.reject": "Відмовити", "follow_requests.unlocked_explanation": "Хоча ваш обліковий запис не заблоковано, персонал {domain} припускає, що, можливо, ви хотіли б переглянути ці запити на підписку.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Про проєкт", + "footer.directory": "Каталог профілів", + "footer.get_app": "Завантажити застосунок", + "footer.invite": "Запросити людей", + "footer.keyboard_shortcuts": "Комбінації клавіш", + "footer.privacy_policy": "Політика приватності", + "footer.source_code": "Перегляд програмного коду", "generic.saved": "Збережено", "getting_started.heading": "Розпочати", "hashtag.column_header.tag_mode.all": "та {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Далі", "lightbox.previous": "Назад", "limited_account_hint.action": "Усе одно показати профіль", - "limited_account_hint.title": "Цей профіль прихований модераторами вашого сервера.", + "limited_account_hint.title": "Цей профіль сховали модератори {domain}.", "lists.account.add": "Додати до списку", "lists.account.remove": "Вилучити зі списку", "lists.delete": "Видалити список", @@ -481,7 +481,7 @@ "report.close": "Готово", "report.comment.title": "Чи є щось, що нам потрібно знати?", "report.forward": "Надіслати до {target}", - "report.forward_hint": "Це акаунт з іншого серверу. Відправити анонімізовану копію скарги і туди?", + "report.forward_hint": "Це обліковий запис з іншого сервера. Відправити анонімізовану копію скарги й туди?", "report.mute": "Нехтувати", "report.mute_explanation": "Ви не побачите їхніх дописів. Вони все ще можуть стежити за вами, бачити ваші дописи та не знатимуть про нехтування.", "report.next": "Далі", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Порушення правил", "report_notification.open": "Відкрити скаргу", "search.placeholder": "Пошук", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Введіть адресу або пошуковий запит", "search_popout.search_format": "Розширений формат пошуку", "search_popout.tips.full_text": "Пошук за текстом знаходить дописи, які ви написали, вподобали, поширили, або в яких вас згадували. Також він знаходить імена користувачів, реальні імена та гештеґи.", "search_popout.tips.hashtag": "хештеґ", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Підготовка OCR…", "upload_modal.preview_label": "Переглянути ({ratio})", "upload_progress.label": "Завантаження...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Обробка…", "video.close": "Закрити відео", "video.download": "Завантажити файл", "video.exit_fullscreen": "Вийти з повноекранного режиму", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index c4d337cef..755dd6ff1 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -339,7 +339,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index af307601d..2251dddb3 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -1,7 +1,7 @@ { - "about.blocks": "Giới hạn chung", + "about.blocks": "Các máy chủ quản trị", "about.contact": "Liên lạc:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon là phần mềm tự do mã nguồn mở, một thương hiệu của Mastodon gGmbH.", "about.domain_blocks.comment": "Lý do", "about.domain_blocks.domain": "Máy chủ", "about.domain_blocks.preamble": "Mastodon cho phép bạn tương tác nội dung và giao tiếp với người dùng từ bất kỳ máy chủ nào khác trong mạng liên hợp. Còn máy chủ này có những ngoại lệ riêng.", @@ -185,7 +185,7 @@ "dismissable_banner.dismiss": "Bỏ qua", "dismissable_banner.explore_links": "Những sự kiện đang được thảo luận nhiều trên máy chủ này và những máy chủ khác thuộc mạng liên hợp của nó.", "dismissable_banner.explore_statuses": "Những tút đang phổ biến trên máy chủ này và những máy chủ khác thuộc mạng liên hợp của nó.", - "dismissable_banner.explore_tags": "Những hashtag đang được sử dụng nhiều trên máy chủ này và và những máy chủ khác thuộc mạng liên hợp của nó.", + "dismissable_banner.explore_tags": "Những hashtag đang được sử dụng nhiều trên máy chủ này và những máy chủ khác thuộc mạng liên hợp của nó.", "dismissable_banner.public_timeline": "Những tút công khai gần đây nhất trên máy chủ này và những máy chủ khác thuộc mạng liên hợp của nó.", "embed.instructions": "Sao chép đoạn mã dưới đây và chèn vào trang web của bạn.", "embed.preview": "Nó sẽ hiển thị như vầy:", @@ -212,10 +212,10 @@ "empty_column.community": "Máy chủ của bạn chưa có tút nào công khai. Bạn hãy thử viết gì đó đi!", "empty_column.direct": "Bạn chưa có tin nhắn riêng nào. Khi bạn gửi hoặc nhận một tin nhắn riêng, nó sẽ xuất hiện ở đây.", "empty_column.domain_blocks": "Chưa ẩn bất kỳ máy chủ nào.", - "empty_column.explore_statuses": "Chưa có xu hướng nào. Kiểm tra lại sau!", + "empty_column.explore_statuses": "Chưa có gì hot. Kiểm tra lại sau!", "empty_column.favourited_statuses": "Bạn chưa thích tút nào. Hãy thử đi, nó sẽ xuất hiện ở đây.", "empty_column.favourites": "Chưa có ai thích tút này.", - "empty_column.follow_recommendations": "Bạn chưa có gợi ý theo dõi nào. Hãy thử tìm kiếm những người thú vị hoặc khám phá những hashtag xu hướng.", + "empty_column.follow_recommendations": "Bạn chưa có gợi ý theo dõi nào. Hãy thử tìm kiếm những người thú vị hoặc khám phá những hashtag nổi bật.", "empty_column.follow_requests": "Bạn chưa có yêu cầu theo dõi nào.", "empty_column.hashtag": "Chưa có bài đăng nào dùng hashtag này.", "empty_column.home": "Bảng tin của bạn đang trống! Hãy theo dõi nhiều người hơn. {suggestions}", @@ -259,13 +259,13 @@ "follow_request.authorize": "Cho phép", "follow_request.reject": "Từ chối", "follow_requests.unlocked_explanation": "Mặc dù tài khoản của bạn đang ở chế độ công khai, quản trị viên của {domain} vẫn tin rằng bạn sẽ muốn xem lại yêu cầu theo dõi từ những người khác.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Giới thiệu", + "footer.directory": "Cộng đồng", + "footer.get_app": "Tải ứng dụng", + "footer.invite": "Mời bạn bè", + "footer.keyboard_shortcuts": "Phím tắt", + "footer.privacy_policy": "Chính sách bảo mật", + "footer.source_code": "Mã nguồn", "generic.saved": "Đã lưu", "getting_started.heading": "Quản lý", "hashtag.column_header.tag_mode.all": "và {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Tiếp", "lightbox.previous": "Trước", "limited_account_hint.action": "Vẫn cứ xem", - "limited_account_hint.title": "Người này bị ẩn bởi kiểm duyệt viên máy chủ.", + "limited_account_hint.title": "Người này đã bị ẩn bởi quản trị viên của {domain}.", "lists.account.add": "Thêm vào danh sách", "lists.account.remove": "Xóa khỏi danh sách", "lists.delete": "Xóa danh sách", @@ -385,8 +385,8 @@ "navigation_bar.search": "Tìm kiếm", "navigation_bar.security": "Bảo mật", "not_signed_in_indicator.not_signed_in": "Bạn cần đăng nhập để truy cập mục này.", - "notification.admin.report": "{name} đã báo cáo {target}", - "notification.admin.sign_up": "{name} đăng ký máy chủ của bạn", + "notification.admin.report": "{name} báo cáo {target}", + "notification.admin.sign_up": "{name} tham gia máy chủ của bạn", "notification.favourite": "{name} thích tút của bạn", "notification.follow": "{name} theo dõi bạn", "notification.follow_request": "{name} yêu cầu theo dõi bạn", @@ -399,7 +399,7 @@ "notifications.clear": "Xóa hết thông báo", "notifications.clear_confirmation": "Bạn thật sự muốn xóa vĩnh viễn tất cả thông báo của mình?", "notifications.column_settings.admin.report": "Báo cáo mới:", - "notifications.column_settings.admin.sign_up": "Lượt đăng ký mới:", + "notifications.column_settings.admin.sign_up": "Người dùng mới:", "notifications.column_settings.alert": "Thông báo trên máy tính", "notifications.column_settings.favourite": "Lượt thích:", "notifications.column_settings.filter_bar.advanced": "Toàn bộ", @@ -411,8 +411,8 @@ "notifications.column_settings.poll": "Kết quả bình chọn:", "notifications.column_settings.push": "Thông báo đẩy", "notifications.column_settings.reblog": "Lượt đăng lại mới:", - "notifications.column_settings.show": "Thông báo trên thanh menu", - "notifications.column_settings.sound": "Kèm theo tiếng \"bíp\"", + "notifications.column_settings.show": "Hiện trên thanh bên", + "notifications.column_settings.sound": "Kèm âm thanh", "notifications.column_settings.status": "Tút mới:", "notifications.column_settings.unread_notifications.category": "Thông báo chưa đọc", "notifications.column_settings.unread_notifications.highlight": "Nổi bật thông báo chưa đọc", @@ -512,12 +512,12 @@ "report_notification.categories.violation": "Vi phạm quy tắc", "report_notification.open": "Mở báo cáo", "search.placeholder": "Tìm kiếm", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Tìm kiếm hoặc nhập URL", "search_popout.search_format": "Gợi ý", - "search_popout.tips.full_text": "Nội dung trả về bao gồm những tút mà bạn đã viết, thích, đăng lại hoặc những tút có nhắc đến bạn. Bạn cũng có thể tìm địa chỉ người dùng, tên hiển thị và hashtag.", + "search_popout.tips.full_text": "Nội dung trả về bao gồm những tút mà bạn đã viết, thích, đăng lại hoặc những tút có nhắc đến bạn. Bạn cũng có thể tìm địa chỉ người dùng, biệt danh và hashtag.", "search_popout.tips.hashtag": "hashtag", "search_popout.tips.status": "tút", - "search_popout.tips.text": "Nội dung trả về là tên người dùng, tên hiển thị và hashtag", + "search_popout.tips.text": "Nội dung trả về là tên người dùng, biệt danh và hashtag", "search_popout.tips.user": "người dùng", "search_results.accounts": "Người dùng", "search_results.all": "Toàn bộ", @@ -608,7 +608,7 @@ "timeline_hint.resources.follows": "Đang theo dõi", "timeline_hint.resources.statuses": "Tút cũ hơn", "trends.counter_by_accounts": "{count, plural, other {{count} lượt}} dùng trong {days, plural, other {{days} ngày}} qua", - "trends.trending_now": "Xu hướng", + "trends.trending_now": "Thịnh hành", "ui.beforeunload": "Bản nháp của bạn sẽ bị mất nếu bạn thoát khỏi Mastodon.", "units.short.billion": "{count}B", "units.short.million": "{count}M", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Đang nhận dạng ký tự…", "upload_modal.preview_label": "Xem trước ({ratio})", "upload_progress.label": "Đang tải lên...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Đang tải lên…", "video.close": "Đóng video", "video.download": "Lưu về máy", "video.exit_fullscreen": "Thoát toàn màn hình", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index da5da985b..0108ab345 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -339,7 +339,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "ⵔⵏⵓ ⵖⵔ ⵜⵍⴳⴰⵎⵜ", "lists.account.remove": "ⴽⴽⵙ ⵙⴳ ⵜⵍⴳⴰⵎⵜ", "lists.delete": "ⴽⴽⵙ ⵜⴰⵍⴳⴰⵎⵜ", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index c8f9b2126..71415d525 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -1,7 +1,7 @@ { "about.blocks": "被限制的服务器", "about.contact": "联系方式:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon是免费,开源的软件,也是Mastodon gmbH的商标。", "about.domain_blocks.comment": "原因", "about.domain_blocks.domain": "域名", "about.domain_blocks.preamble": "通常来说,在 Mastodon 上,你可以浏览联邦宇宙中任何一台服务器上的内容,并且和上面的用户互动。但其中一些在本服务器上被设置为例外。", @@ -40,7 +40,7 @@ "account.follows.empty": "此用户目前尚未关注任何人。", "account.follows_you": "关注了你", "account.hide_reblogs": "隐藏来自 @{name} 的转贴", - "account.joined_short": "Joined", + "account.joined_short": "加入于", "account.languages": "更改订阅语言", "account.link_verified_on": "此链接的所有权已在 {date} 检查", "account.locked_info": "此账户已锁嘟。账户所有者会手动审核关注者。", @@ -95,8 +95,8 @@ "closed_registrations.other_server_instructions": "基于Mastodon去中心化的特性, 你可以在其它服务器上创建账户并与该服务器保持联系.", "closed_registrations_modal.description": "您并不能在 {domain} 上创建账户, 但您无需在 {domain} 上的账户也可以使用Mastodon.", "closed_registrations_modal.find_another_server": "查找另外的服务器", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations_modal.preamble": "Mastodon是分布式的,所以无论您在哪个实例创建帐户,您都可以关注并与本服务器上的任何人交流。 甚至您可以自己搭建实例。", + "closed_registrations_modal.title": "在 Mastodon 注册", "column.about": "关于", "column.blocks": "已屏蔽的用户", "column.bookmarks": "书签", @@ -259,13 +259,13 @@ "follow_request.authorize": "授权", "follow_request.reject": "拒绝", "follow_requests.unlocked_explanation": "尽管你没有锁嘟,但是 {domain} 的工作人员认为你也许会想手动审核审核这些账号的关注请求。", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "关于本站", + "footer.directory": "用户目录", + "footer.get_app": "获取应用程序", + "footer.invite": "邀请", + "footer.keyboard_shortcuts": "快捷键列表", + "footer.privacy_policy": "隐私政策", + "footer.source_code": "查看源代码", "generic.saved": "已保存", "getting_started.heading": "开始使用", "hashtag.column_header.tag_mode.all": "以及 {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "下一个", "lightbox.previous": "上一个", "limited_account_hint.action": "仍然显示个人资料", - "limited_account_hint.title": "此个人资料已被服务器监察员隐藏。", + "limited_account_hint.title": "此账户已被 {domain} 管理员隐藏。", "lists.account.add": "添加到列表", "lists.account.remove": "从列表中移除", "lists.delete": "删除列表", @@ -382,7 +382,7 @@ "navigation_bar.pins": "置顶嘟文", "navigation_bar.preferences": "首选项", "navigation_bar.public_timeline": "跨站公共时间轴", - "navigation_bar.search": "Search", + "navigation_bar.search": "搜索", "navigation_bar.security": "安全", "not_signed_in_indicator.not_signed_in": "您需要登录才能访问此资源。", "notification.admin.report": "{name} 已报告 {target}", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "违反规则", "report_notification.open": "展开报告", "search.placeholder": "搜索", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "搜索或输入链接", "search_popout.search_format": "高级搜索格式", "search_popout.tips.full_text": "输入关键词检索所有你发送、喜欢、转嘟过或提及到你的帖子,以及其他用户公开的用户名、昵称和话题标签。", "search_popout.tips.hashtag": "话题标签", @@ -572,7 +572,7 @@ "status.reblogs.empty": "没有人转嘟过此条嘟文。如果有人转嘟了,就会显示在这里。", "status.redraft": "删除并重新编辑", "status.remove_bookmark": "移除书签", - "status.replied_to": "Replied to {name}", + "status.replied_to": "回复给 {name}", "status.reply": "回复", "status.replyAll": "回复所有人", "status.report": "举报 @{name}", @@ -585,7 +585,7 @@ "status.show_more_all": "显示全部内容", "status.show_original": "显示原文", "status.translate": "翻译", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "使用 {provider} 翻译 {lang} ", "status.uncached_media_warning": "暂不可用", "status.unmute_conversation": "恢复此对话的通知提醒", "status.unpin": "在个人资料页面取消置顶", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "正在准备文字识别…", "upload_modal.preview_label": "预览 ({ratio})", "upload_progress.label": "上传中…", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "正在处理…", "video.close": "关闭视频", "video.download": "下载文件", "video.exit_fullscreen": "退出全屏", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 6ea522ab3..fb277f50f 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -339,7 +339,7 @@ "lightbox.next": "下一頁", "lightbox.previous": "上一頁", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "新增到列表", "lists.account.remove": "從列表刪除", "lists.delete": "刪除列表", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 8ef55acd3..a5c6efb1c 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -1,7 +1,7 @@ { "about.blocks": "受管制的伺服器", "about.contact": "聯絡我們:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon 是一個自由的開源軟體,是 Mastodon gGmbH 的註冊商標。", "about.domain_blocks.comment": "原因", "about.domain_blocks.domain": "網域", "about.domain_blocks.preamble": "Mastodon 一般來說允許您閱讀並和聯邦宇宙上任何伺服器的使用者互動。這些伺服器是這個站台設下的例外。", @@ -259,13 +259,13 @@ "follow_request.authorize": "授權", "follow_request.reject": "拒絕", "follow_requests.unlocked_explanation": "即便您的帳號未被鎖定,{domain} 的管理員認為您可能想要自己審核這些帳號的跟隨請求。", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "關於", + "footer.directory": "個人檔案目錄", + "footer.get_app": "取得應用程式", + "footer.invite": "邀請他人", + "footer.keyboard_shortcuts": "鍵盤快速鍵", + "footer.privacy_policy": "隱私權政策", + "footer.source_code": "檢視原始碼", "generic.saved": "已儲存", "getting_started.heading": "開始使用", "hashtag.column_header.tag_mode.all": "以及 {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "下一步", "lightbox.previous": "上一步", "limited_account_hint.action": "一律顯示個人檔案", - "limited_account_hint.title": "此個人檔案已被您伺服器的管理員隱藏。", + "limited_account_hint.title": "此個人檔案已被 {domain} 的管理員隱藏。", "lists.account.add": "新增至列表", "lists.account.remove": "從列表中移除", "lists.delete": "刪除列表", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "違反規則", "report_notification.open": "開啟檢舉報告", "search.placeholder": "搜尋", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "搜尋或輸入網址", "search_popout.search_format": "進階搜尋格式", "search_popout.tips.full_text": "輸入簡單的文字,搜尋由您撰寫、最愛、轉嘟或提您的嘟文,以及與關鍵詞匹配的使用者名稱、帳號顯示名稱和主題標籤。", "search_popout.tips.hashtag": "主題標籤", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "準備 OCR 中……", "upload_modal.preview_label": "預覽 ({ratio})", "upload_progress.label": "上傳中...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "處理中...", "video.close": "關閉影片", "video.download": "下載檔案", "video.exit_fullscreen": "退出全螢幕", diff --git a/config/locales/activerecord.ast.yml b/config/locales/activerecord.ast.yml index d35b95dfc..96612a071 100644 --- a/config/locales/activerecord.ast.yml +++ b/config/locales/activerecord.ast.yml @@ -3,6 +3,7 @@ ast: activerecord: attributes: user: + email: Direición de corréu electrónicu locale: Locale password: Contraseña user/account: @@ -19,3 +20,7 @@ ast: attributes: website: invalid: nun ye una URL válida + user: + attributes: + email: + unreachable: nun paez qu'esista diff --git a/config/locales/activerecord.cs.yml b/config/locales/activerecord.cs.yml index 5505254e5..a411d270d 100644 --- a/config/locales/activerecord.cs.yml +++ b/config/locales/activerecord.cs.yml @@ -29,6 +29,10 @@ cs: attributes: website: invalid: není platná URL + import: + attributes: + data: + malformed: je chybný status: attributes: reblog: diff --git a/config/locales/activerecord.es-MX.yml b/config/locales/activerecord.es-MX.yml index c7283aafd..534d99117 100644 --- a/config/locales/activerecord.es-MX.yml +++ b/config/locales/activerecord.es-MX.yml @@ -13,22 +13,26 @@ es-MX: user/account: username: Nombre de usuario user/invite_request: - text: Razón + text: Motivo errors: models: account: attributes: username: - invalid: solo puede contener letras, números y guiones bajos + invalid: debe contener sólo letras, números y guiones bajos reserved: está reservado admin/webhook: attributes: url: - invalid: no es una URL válida + invalid: no es una dirección URL válida doorkeeper/application: attributes: website: invalid: no es una URL válida + import: + attributes: + data: + malformed: tiene un formato incorrecto status: attributes: reblog: @@ -39,7 +43,7 @@ es-MX: blocked: utiliza un proveedor de correo no autorizado unreachable: no parece existir role_id: - elevated: no puede ser mayor que tu rol actual + elevated: no puede ser mayor a tu rol actual user_role: attributes: permissions_as_keys: diff --git a/config/locales/activerecord.fi.yml b/config/locales/activerecord.fi.yml index f9798cabe..1ead707f5 100644 --- a/config/locales/activerecord.fi.yml +++ b/config/locales/activerecord.fi.yml @@ -29,6 +29,10 @@ fi: attributes: website: invalid: ei ole kelvollinen URL + import: + attributes: + data: + malformed: on väärin muodostettu status: attributes: reblog: diff --git a/config/locales/activerecord.ga.yml b/config/locales/activerecord.ga.yml index 20a9da24e..64f3e57f8 100644 --- a/config/locales/activerecord.ga.yml +++ b/config/locales/activerecord.ga.yml @@ -1 +1,14 @@ +--- ga: + activerecord: + attributes: + poll: + options: Roghanna + user: + email: Seoladh ríomhphoist + locale: Láthair + password: Pasfhocal + user/account: + username: Ainm úsáideora + user/invite_request: + text: Fáth diff --git a/config/locales/activerecord.hu.yml b/config/locales/activerecord.hu.yml index 44340b3e9..67bad4cb4 100644 --- a/config/locales/activerecord.hu.yml +++ b/config/locales/activerecord.hu.yml @@ -29,6 +29,10 @@ hu: attributes: website: invalid: nem érvényes URL + import: + attributes: + data: + malformed: hibás status: attributes: reblog: diff --git a/config/locales/activerecord.sq.yml b/config/locales/activerecord.sq.yml index a4c8af15f..f2ceee70d 100644 --- a/config/locales/activerecord.sq.yml +++ b/config/locales/activerecord.sq.yml @@ -29,6 +29,10 @@ sq: attributes: website: invalid: s’është URL + import: + attributes: + data: + malformed: janë të keqformuara status: attributes: reblog: diff --git a/config/locales/activerecord.sv.yml b/config/locales/activerecord.sv.yml index 89a757463..5a009becc 100644 --- a/config/locales/activerecord.sv.yml +++ b/config/locales/activerecord.sv.yml @@ -21,6 +21,14 @@ sv: username: invalid: endast bokstäver, siffror och understrykning reserved: är reserverat + admin/webhook: + attributes: + url: + invalid: är inte en giltig URL + doorkeeper/application: + attributes: + website: + invalid: är inte en giltig URL import: attributes: data: @@ -34,3 +42,14 @@ sv: email: blocked: använder en icke tillåten e-postleverantör unreachable: verkar inte existera + role_id: + elevated: kan inte vara högre än din nuvarande roll + user_role: + attributes: + permissions_as_keys: + dangerous: inkludera behörigheter som inte är säkra för grundrollen + elevated: kan inte inkludera behörigheter som din nuvarande roll inte innehar + own_role: kan inte ändras med din nuvarande roll + position: + elevated: kan inte vara högre än din nuvarande roll + own_role: kan inte ändras med din nuvarande roll diff --git a/config/locales/activerecord.th.yml b/config/locales/activerecord.th.yml index 64586f5bb..45d556542 100644 --- a/config/locales/activerecord.th.yml +++ b/config/locales/activerecord.th.yml @@ -29,6 +29,10 @@ th: attributes: website: invalid: ไม่ใช่ URL ที่ถูกต้อง + import: + attributes: + data: + malformed: ผิดรูปแบบ status: attributes: reblog: diff --git a/config/locales/activerecord.zh-CN.yml b/config/locales/activerecord.zh-CN.yml index c46c87451..e36ea6662 100644 --- a/config/locales/activerecord.zh-CN.yml +++ b/config/locales/activerecord.zh-CN.yml @@ -29,6 +29,10 @@ zh-CN: attributes: website: invalid: 非有效网址 + import: + attributes: + data: + malformed: 格式错误 status: attributes: reblog: diff --git a/config/locales/af.yml b/config/locales/af.yml index 038660b7a..7320e4bad 100644 --- a/config/locales/af.yml +++ b/config/locales/af.yml @@ -4,10 +4,16 @@ af: contact_unavailable: NVT hosted_on: Mastodon gehuisves op %{domain} admin: + announcements: + publish: Publiseer + published_msg: Aankondiging was suksesvol gepubliseer! + unpublish: Depubliseer domain_blocks: existing_domain_block: Jy het alreeds strenger perke ingelê op %{name}. trends: only_allowed: Slegs toegelate + preview_card_providers: + title: Publiseerders trending: Gewild webhooks: add_new: Voeg end-punt by diff --git a/config/locales/ast.yml b/config/locales/ast.yml index 30bb52c5a..3f6602e58 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -25,7 +25,8 @@ ast: ip: IP location: local: Llocal - title: Allugamientu + remote: Remotu + title: Llugar most_recent_activity: L'actividá más recién most_recent_ip: La IP más recién protocol: Protocolu @@ -33,9 +34,10 @@ ast: resend_confirmation: already_confirmed: Esti usuariu yá ta confirmáu send: Reunviar les instrucciones - statuses: Estaos + statuses: Artículos title: Cuentes username: Nome d'usuariu + web: Web announcements: destroyed_msg: "¡L'anunciu desanicióse correutamente!" new: @@ -130,7 +132,7 @@ ast: didnt_get_confirmation: "¿Nun recibiesti les instrucciones de confirmación?" dont_have_your_security_key: "¿Nun tienes una clave de seguranza?" forgot_password: "¿Escaeciesti la contraseña?" - login: Aniciar sesión + login: Aniciar la sesión migrate_account: Mudase a otra cuenta migrate_account_html: Si deseyes redirixir esta cuenta a otra, pues
    configuralo equí. providers: @@ -378,7 +380,6 @@ ast: visibilities: private: Namái siguidores private_long: Namái s'amuesen a los siguidores - public_long: Tol mundu puen velos unlisted: Nun llistar unlisted_long: Tol mundu puen velos pero nun se llisten nes llinies temporales públiques statuses_cleanup: @@ -399,8 +400,8 @@ ast: does_not_match_previous_name: nun concasa col nome anterior themes: contrast: Contraste altu - default: Mastodon - mastodon-light: Claridá + default: Mastodon (escuridá) + mastodon-light: Mastodon (claridá) two_factor_authentication: disable: Desactivar enabled: L'autenticación en dos pasos ta activada @@ -419,7 +420,6 @@ ast: none: Alvertencia suspend: Cuenta suspendida welcome: - full_handle_hint: Esto ye lo que-yos diríes a los collacios pa que puean unviate mensaxes o siguite dende otra instancia. subject: Afáyate en Mastodon users: follow_limit_reached: Nun pues siguir a más de %{limit} persones diff --git a/config/locales/br.yml b/config/locales/br.yml index b9bf38886..2de887b6d 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -1,5 +1,7 @@ --- br: + about: + title: Diwar-benn accounts: follow: Heuliañ followers: @@ -8,7 +10,9 @@ br: one: Heulier·ez other: Heulier·ez two: Heulier·ez - following: O heuliañ + following: Koumanantoù + last_active: oberiantiz ziwezhañ + nothing_here: N'eus netra amañ ! posts: few: Toud many: Toud @@ -18,9 +22,13 @@ br: posts_tab_heading: Toudoù admin: accounts: + add_email_domain_block: Stankañ an domani postel + approve: Aprouiñ + are_you_sure: Ha sur oc'h? avatar: Avatar by_domain: Domani change_email: + changed_msg: Chomlec'h postel kemmet ! current_email: Postel bremanel label: Kemm ar postel new_email: Postel nevez @@ -140,7 +148,7 @@ br: invalid_password: Ger-tremen diwiriek date: formats: - default: "%d %b %Y" + default: "%d a viz %b %Y" with_month_name: "%d a viz %B %Y" datetime: distance_in_words: @@ -255,7 +263,9 @@ br: mastodon-light: Mastodoñ (Sklaer) time: formats: - default: "%He%M, %d %b %Y" + default: "%d a viz %b %Y, %H:%M" + month: Miz %b %Y + time: "%H:%M" two_factor_authentication: add: Ouzhpennañ disable: Diweredekaat diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 947329fed..bd778dc5c 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -207,6 +207,7 @@ ca: reject_user: Rebutja l'usuari remove_avatar_user: Eliminar avatar reopen_report: Reobre l'informe + resend_user: Torna a enviar el correu de confirmació reset_password_user: Restableix la contrasenya resolve_report: Resolt l'informe sensitive_account: Marcar els mèdia en el teu compte com a sensibles @@ -265,6 +266,7 @@ ca: reject_user_html: "%{name} ha rebutjat el registre de %{target}" remove_avatar_user_html: "%{name} ha eliminat l'avatar de %{target}" reopen_report_html: "%{name} ha reobert l'informe %{target}" + resend_user_html: "%{name} ha renviat el correu de confirmació per %{target}" reset_password_user_html: "%{name} ha restablert la contrasenya de l'usuari %{target}" resolve_report_html: "%{name} ha resolt l'informe %{target}" sensitive_account_html: "%{name} ha marcat els mèdia de %{target} com a sensibles" @@ -1566,7 +1568,7 @@ ca: change_password: canvia la teva contrasenya details: 'Aquí estan els detalls del inici de sessió:' explanation: Hem detectat un inici de sessió del teu compte des d'una nova adreça IP. - further_actions_html: Si no has estat tu, recomanem que tu %{action} immediatament i activis l'autenticació de dos-factors per a mantenir el teu compte segur. + further_actions_html: Si no has estat tu, et recomanem %{action} immediatament i activis l'autenticació de dos-factors per a mantenir el teu compte segur. subject: S'ha accedit al teu compte des d'una adreça IP nova title: Un nou inici de sessió warning: diff --git a/config/locales/cs.yml b/config/locales/cs.yml index f1a666e74..3ea6442c2 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -737,6 +737,7 @@ cs: deleted: Smazáno favourites: Oblíbené history: Historie verzí + in_reply_to: Odpověď na language: Jazyk media: title: Média diff --git a/config/locales/da.yml b/config/locales/da.yml index 8c6a9c8fd..c2bccb224 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -207,6 +207,7 @@ da: reject_user: Afvis bruger remove_avatar_user: Fjern profilbillede reopen_report: Genåbn anmeldelse + resend_user: Gensend bekræftelsese-mail reset_password_user: Nulstil adgangskode resolve_report: Løs anmeldelse sensitive_account: Gennemtving sensitiv konto @@ -265,6 +266,7 @@ da: reject_user_html: "%{name} afviste tilmelding fra %{target}" remove_avatar_user_html: "%{name} fjernede %{target}s profilbillede" reopen_report_html: "%{name} genåbnede anmeldelsen %{target}" + resend_user_html: "%{name} gensendte bekræftelses-e-mail for %{target}" reset_password_user_html: "%{name} nulstillede adgangskoden for brugeren %{target}" resolve_report_html: "%{name} løste anmeldelsen %{target}" sensitive_account_html: "%{name} markerede %{target}s medier som sensitive" diff --git a/config/locales/de.yml b/config/locales/de.yml index b90d8a606..3944d031c 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -11,7 +11,7 @@ de: followers: one: Follower other: Folgende - following: Folgt + following: Folge ich instance_actor_flash: Dieses Konto ist ein virtueller Akteur, der den Server selbst repräsentiert und nicht ein einzelner Benutzer. Es wird für Föderationszwecke verwendet und sollte nicht gesperrt werden. last_active: zuletzt aktiv link_verified_on: Das Profil mit dieser E-Mail-Adresse wurde bereits am %{date} bestätigt @@ -113,7 +113,7 @@ de: public: Öffentlich push_subscription_expires: PuSH-Abonnement läuft aus redownload: Profil neu laden - redownloaded_msg: Profil von %{username} erfolgreich von Ursprung aktualisiert + redownloaded_msg: Das Profil von %{username} wurde von der Quelle erfolgreich aktualisiert reject: Ablehnen rejected_msg: Anmeldeantrag von %{username} erfolgreich abgelehnt remove_avatar: Profilbild entfernen @@ -121,7 +121,7 @@ de: removed_avatar_msg: Profilbild von %{username} erfolgreich entfernt removed_header_msg: Titelbild von %{username} wurde erfolgreich entfernt resend_confirmation: - already_confirmed: Diese_r Benutzer_in wurde bereits bestätigt + already_confirmed: Dieses Profil wurde bereits bestätigt send: Bestätigungs-E-Mail erneut senden success: Bestätigungs-E-Mail erfolgreich gesendet! reset: Zurücksetzen @@ -201,20 +201,21 @@ de: enable_custom_emoji: Benutzerdefiniertes Emoji aktivieren enable_sign_in_token_auth_user: Zwei-Faktor-Authentisierung (2FA) per E-Mail für diesen Account aktivieren enable_user: Benutzer aktivieren - memorialize_account: Account deaktivieren + memorialize_account: Gedenkkonto promote_user: Benutzer befördern reject_appeal: Einspruch ablehnen reject_user: Benutzer ablehnen remove_avatar_user: Profilbild entfernen reopen_report: Meldung wieder eröffnen + resend_user: Bestätigungs-E-Mail erneut senden reset_password_user: Passwort zurücksetzen resolve_report: Bericht lösen - sensitive_account: Markiere die Medien in deinem Konto als NSFW + sensitive_account: Zwangssensibles Konto silence_account: Konto stummschalten suspend_account: Konto sperren unassigned_report: Meldung widerrufen unblock_email_account: E-Mail Adresse entsperren - unsensitive_account: Markiere die Medien in deinem Konto nicht mehr als NSFW + unsensitive_account: Zwangssensibles Konto rückgängig machen unsilence_account: Konto nicht mehr stummschalten unsuspend_account: Konto nicht mehr sperren update_announcement: Ankündigung aktualisieren @@ -240,7 +241,7 @@ de: create_ip_block_html: "%{name} hat eine Regel für IP %{target} erstellt" create_unavailable_domain_html: "%{name} hat die Lieferung an die Domain %{target} eingestellt" create_user_role_html: "%{name} hat die Rolle %{target} erstellt" - demote_user_html: "%{name} stufte Benutzer_in %{target} herunter" + demote_user_html: "%{name} hat die Nutzungsrechte von %{target} heruntergestuft" destroy_announcement_html: "%{name} hat die neue Ankündigung %{target} gelöscht" destroy_canonical_email_block_html: "%{name} hat die E-Mail mit dem Hash %{target} freigegeben" destroy_custom_emoji_html: "%{name} hat das %{target} Emoji gelöscht" @@ -252,19 +253,20 @@ de: destroy_status_html: "%{name} hat einen Beitrag von %{target} entfernt" destroy_unavailable_domain_html: "%{name} setzte die Lieferung an die Domain %{target} fort" destroy_user_role_html: "%{name} hat die Rolle %{target} gelöscht" - disable_2fa_user_html: "%{name} hat Zwei-Faktor-Anforderung für Benutzer_in %{target} deaktiviert" + disable_2fa_user_html: "%{name} hat die Zwei-Faktor-Authentisierung für %{target} deaktiviert" disable_custom_emoji_html: "%{name} hat das %{target} Emoji deaktiviert" disable_sign_in_token_auth_user_html: "%{name} hat die E-Mail-Token Authentifizierung für %{target} deaktiviert" - disable_user_html: "%{name} hat Zugang von Benutzer_in %{target} deaktiviert" + disable_user_html: "%{name} hat den Zugang für %{target} deaktiviert" enable_custom_emoji_html: "%{name} hat das %{target} Emoji aktiviert" enable_sign_in_token_auth_user_html: "%{name} hat die E-Mail-Token-Authentifizierung für %{target} aktiviert" - enable_user_html: "%{name} hat Zugang von Benutzer_in %{target} aktiviert" + enable_user_html: "%{name} hat den Zugang für %{target} aktiviert" memorialize_account_html: "%{name} hat das Konto von %{target} in eine Gedenkseite umgewandelt" promote_user_html: "%{name} hat %{target} befördert" reject_appeal_html: "%{name} hat die Moderationsbeschlüsse von %{target} abgelehnt" reject_user_html: "%{name} hat die Registrierung von %{target} abgelehnt" remove_avatar_user_html: "%{name} hat das Profilbild von %{target} entfernt" reopen_report_html: "%{name} hat die Meldung %{target} wieder geöffnet" + resend_user_html: "%{name} hat erneut eine Bestätigungs-E-Mail für %{target} gesendet" reset_password_user_html: "%{name} hat das Passwort von %{target} zurückgesetzt" resolve_report_html: "%{name} hat die Meldung %{target} bearbeitet" sensitive_account_html: "%{name} hat die Medien von %{target} mit einer Inhaltswarnung versehen" @@ -272,7 +274,7 @@ de: suspend_account_html: "%{name} hat das Konto von %{target} verbannt" unassigned_report_html: "%{name} hat die Zuweisung der Meldung %{target} entfernt" unblock_email_account_html: "%{name} entsperrte die E-Mail-Adresse von %{target}" - unsensitive_account_html: "%{name} hob die Inhaltswarnung für Medien von %{target} auf" + unsensitive_account_html: "%{name} hat die Inhaltswarnung für Medien von %{target} aufgehoben" unsilence_account_html: "%{name} hat die Stummschaltung von %{target} aufgehoben" unsuspend_account_html: "%{name} hat die Verbannung von %{target} aufgehoben" update_announcement_html: "%{name} aktualisierte Ankündigung %{target}" @@ -378,7 +380,7 @@ de: domain: Domain edit: Domainblockade bearbeiten existing_domain_block: Du hast %{name} bereits stärker eingeschränkt. - existing_domain_block_html: Es gibt schon eine Blockade für %{name}, diese muss erst aufgehoben werden. + existing_domain_block_html: Du hast bereits strengere Beschränkungen für die Domain %{name} verhängt. Du musst diese erst aufheben. new: create: Blockade einrichten hint: Die Domain-Blockade wird nicht verhindern, dass Konteneinträge in der Datenbank erstellt werden. Aber es werden rückwirkend und automatisch alle Moderationsmethoden auf diese Konten angewendet. @@ -557,7 +559,7 @@ de: add_to_report: Mehr zur Meldung hinzufügen are_you_sure: Bist du dir sicher? assign_to_self: Mir zuweisen - assigned: Zugewiesene_r Moderator_in + assigned: Zugewiesene*r Moderator*in by_target_domain: Domain des gemeldeten Kontos category: Kategorie category_description_html: Der Grund, warum dieses Konto und/oder der Inhalt gemeldet wurden, wird in der Kommunikation mit dem gemeldeten Konto zitiert @@ -569,7 +571,7 @@ de: forwarded: Weitergeleitet forwarded_to: Weitergeleitet an %{domain} mark_as_resolved: Als gelöst markieren - mark_as_sensitive: Mit einer Inhaltswarnung (NSFW) versehen + mark_as_sensitive: Mit einer Inhaltswarnung versehen mark_as_unresolved: Als ungelöst markieren no_one_assigned: Niemand notes: @@ -577,7 +579,7 @@ de: create_and_resolve: Mit Kommentar lösen create_and_unresolve: Mit Kommentar wieder öffnen delete: Löschen - placeholder: Beschreibe, welche Maßnahmen ergriffen wurden oder irgendwelche andere Neuigkeiten… + placeholder: Bitte beschreiben, welche Maßnahmen ergriffen wurden oder andere damit verbundene Aktualisierungen … title: Notizen notes_description_html: Zeige und hinterlasse Notizen an andere Moderator_innen und dein zukünftiges Ich quick_actions_description_html: 'Führe eine schnelle Aktion aus oder scrolle nach unten, um gemeldete Inhalte zu sehen:' @@ -597,7 +599,7 @@ de: unassign: Zuweisung entfernen unresolved: Ungelöst updated_at: Aktualisiert - view_profile: Zeige Profil + view_profile: Profil anzeigen roles: add_new: Rolle hinzufügen assigned_users: @@ -684,7 +686,7 @@ de: discovery: follow_recommendations: Folgeempfehlungen preamble: Das Auffinden interessanter Inhalte ist wichtig, um neue Nutzer einzubinden, die Mastodon noch nicht kennen. Bestimmen Sie, wie verschiedene Suchfunktionen auf Ihrem Server funktionieren. - profile_directory: Benutzerverzeichnis + profile_directory: Profilverzeichnis public_timelines: Öffentliche Timelines title: Entdecken trends: Trends @@ -733,9 +735,9 @@ de: actions: delete_statuses: "%{name} hat die Beiträge von %{target} entfernt" disable: "%{name} hat das Konto von %{target} eingefroren" - mark_statuses_as_sensitive: "%{name} hat die Beiträge von %{target} mit einer Inhaltswarnung (NSFW) versehen" + mark_statuses_as_sensitive: "%{name} hat die Beiträge von %{target} mit einer Inhaltswarnung versehen" none: "%{name} hat eine Warnung an %{target} gesendet" - sensitive: "%{name} hat das Profil von %{target} mit einer Inhaltswarnung (NSFW) versehen" + sensitive: "%{name} hat das Profil von %{target} mit einer Inhaltswarnung versehen" silence: "%{name} hat das Konto von %{target} eingeschränkt" suspend: "%{name} hat das Konto von %{target} verbannt" appeal_approved: Einspruch angenommen @@ -851,9 +853,9 @@ de: actions: delete_statuses: deren Beiträge zu löschen disable: deren Konto einzufrieren - mark_statuses_as_sensitive: um die Beiträge des Profils mit einer Inhaltswarnung (NSFW) zu versehen + mark_statuses_as_sensitive: um die Beiträge des Profils mit einer Inhaltswarnung zu versehen none: eine Warnung - sensitive: um das Profil mit einer Inhaltswarnung (NSFW) zu versehen + sensitive: um das Profil mit einer Inhaltswarnung zu versehen silence: deren Konto zu beschränken suspend: deren Konto zu sperren body: "%{target} hat etwas gegen eine Moderationsentscheidung von %{action_taken_by} von %{date}, die %{type} war. Die Person schrieb:" @@ -894,14 +896,14 @@ de: body: Mastodon wurde von Freiwilligen übersetzt. guide_link: https://de.crowdin.com/project/mastodon guide_link_text: Jeder kann etwas dazu beitragen. - sensitive_content: Inhaltswarnung (NSFW) + sensitive_content: Inhaltswarnung toot_layout: Timeline-Layout application_mailer: notification_preferences: Ändere E-Mail-Einstellungen salutation: "%{name}," settings: 'E-Mail-Einstellungen ändern: %{link}' view: 'Ansehen:' - view_profile: Zeige Profil + view_profile: Profil anzeigen view_status: Beitrag öffnen applications: created: Anwendung erfolgreich erstellt @@ -931,7 +933,7 @@ de: migrate_account: Ziehe zu einem anderen Konto um migrate_account_html: Wenn du wünschst, dieses Konto zu einem anderen umzuziehen, kannst du dies hier einstellen. or_log_in_with: Oder anmelden mit - privacy_policy_agreement_html: Ich habe die Datenschutzerklärung gelesen und stimme ihr zu + privacy_policy_agreement_html: Ich habe die Datenschutzbestimmungen gelesen und stimme ihnen zu providers: cas: CAS saml: SAML @@ -969,7 +971,7 @@ de: following: 'Erfolg! Du folgst nun:' post_follow: close: Oder du schließt einfach dieses Fenster. - return: Zeige das Profil + return: Das Benutzerprofil anzeigen web: In der Benutzeroberfläche öffnen title: "%{acct} folgen" challenge: @@ -1038,9 +1040,9 @@ de: title_actions: delete_statuses: Post-Entfernung disable: Einfrieren des Kontos - mark_statuses_as_sensitive: Beiträge mit einer Inhaltswarnung (NSFW) versehen + mark_statuses_as_sensitive: Beiträge mit einer Inhaltswarnung versehen none: Warnung - sensitive: Profil mit einer Inhaltswarnung (NSFW) versehen + sensitive: Profil mit einer Inhaltswarnung versehen silence: Kontobeschränkung suspend: Kontosperre your_appeal_approved: Dein Einspruch wurde angenommen @@ -1071,7 +1073,7 @@ de: date: Datum download: Dein Archiv herunterladen hint_html: Du kannst ein Archiv deiner Beiträge, Listen, hochgeladenen Medien, usw. anfordern. Die exportierten Daten werden in dem ActivityPub-Format gespeichert und können mit jeder passenden Software gelesen werden. Du kannst alle 7 Tage ein Archiv anfordern. - in_progress: Dein persönliches Archiv wird erstellt... + in_progress: Persönliches Archiv wird erstellt … request: Dein Archiv anfordern size: Größe blocks: Blockierte Accounts @@ -1250,7 +1252,7 @@ de: carry_mutes_over_text: Das Profil wurde von %{acct} übertragen – und dieses hattest du stummgeschaltet. copy_account_note_text: 'Dieser Benutzer ist von %{acct} umgezogen, hier sind deine letzten Notizen zu diesem Benutzer:' navigation: - toggle_menu: Menü umschalten + toggle_menu: Menü ein-/ausblenden notification_mailer: admin: report: @@ -1287,7 +1289,7 @@ de: subject: "%{name} bearbeitete einen Beitrag" notifications: email_events: Benachrichtigungen per E-Mail - email_events_hint: Eine E-Mail erhalten, ... + email_events_hint: 'Bitte die Ereignisse auswählen, für die du Benachrichtigungen erhalten möchtest:' other_settings: Weitere Einstellungen number: human: @@ -1409,7 +1411,7 @@ de: view_authentication_history: Authentifizierungsverlauf deines Kontos anzeigen settings: account: Konto - account_settings: Konto & Sicherheit + account_settings: Kontoeinstellungen aliases: Kontoaliase appearance: Aussehen authorized_apps: Autorisierte Anwendungen @@ -1518,7 +1520,7 @@ de: stream_entries: pinned: Angehefteter Beitrag reblogged: teilte - sensitive_content: Inhaltswarnung (NSFW) + sensitive_content: Inhaltswarnung strikes: errors: too_late: Es ist zu spät, um gegen diese Verwarnung Einspruch zu erheben @@ -1601,7 +1603,7 @@ de: silence: Konto limitiert suspend: Konto gesperrt welcome: - edit_profile_action: Profil einstellen + edit_profile_action: Profil einrichten edit_profile_step: Du kannst dein Profil anpassen, indem du einen Avatar oder ein Titelbild hochlädst, deinen Anzeigenamen änderst und viel mehr. Du kannst optional einstellen, ob du Accounts, die dir folgen wollen, akzeptieren musst, bevor sie dies können. explanation: Hier sind ein paar Tipps, um loszulegen final_action: Fang an zu posten diff --git a/config/locales/devise.ast.yml b/config/locales/devise.ast.yml index 687c8e7b2..7429b3014 100644 --- a/config/locales/devise.ast.yml +++ b/config/locales/devise.ast.yml @@ -10,9 +10,9 @@ ast: inactive: Entá nun s'activó la cuenta. last_attempt: Tienes un intentu más enantes de bloquiar la cuenta. locked: La cuenta ta bloquiada. - pending: La cuenta ta entá en revisión. - timeout: La sesión caducó. Volvi aniciar sesión pa siguir. - unauthenticated: Precises aniciar sesión o rexistrate enantes de siguir. + pending: La cuenta sigue en revisión. + timeout: La sesión caducó. Volvi aniciala pa siguir. + unauthenticated: Tienes d'aniciar la sesión o rexistrate enantes de siguir. unconfirmed: Tienes de confirmar la direición de corréu electrónicu enantes de siguir. mailer: confirmation_instructions: @@ -30,9 +30,9 @@ ast: extra: Si nun solicitesti esto, inora esti corréu. La contraseña nun va camudar hasta que nun accedas al enllaz d'enriba y crees una nueva. subject: 'Mastodon: Instrucciones pa reafitar la contraseña' two_factor_disabled: - subject: 'Mastodon: Desactivóse l''autenticación en dos pasos' + subject: 'Mastodon: desactivóse l''autenticación en dos pasos' two_factor_enabled: - subject: 'Mastodon: Activóse l''autenticación en dos pasos' + subject: 'Mastodon: activóse l''autenticación en dos pasos' two_factor_recovery_codes_changed: subject: 'Mastodon: Rexeneráronse los códigos de l''autenticación en dos pasos' unlock_instructions: @@ -43,16 +43,18 @@ ast: updated_not_active: La contraseña camudó con correutamente. registrations: signed_up: "¡Afáyate! Rexistréstite correutamente." - signed_up_but_inactive: Rexistréstite correutamente. Por embargu, nun se pudo aniciar la sesión porque la to cuenta entá nun s'activó. - signed_up_but_locked: Rexistréstite correutamente. Por embargu, nun se pudo aniciar la sesión porque la to cuenta ta bloquiada. + signed_up_but_inactive: Rexistréstite correutamente. Por embargu, nun se pudo aniciar la sesión porque la cuenta entá nun s'activó. + signed_up_but_locked: Rexistréstite correutamente. Por embargu, nun se pudo aniciar la sesión porque la cuenta ta bloquiada. signed_up_but_unconfirmed: Unvióse un mensaxe de confirmación a la direición de corréu. Sigui l'enllaz p'activar la cuenta. Comprueba la carpeta Puxarra si nun recibiesti esti corréu. updated: La cuenta anovóse correutamente. sessions: + already_signed_out: Zarresti la sesión correutamente. signed_in: Aniciesti sesión correutamente. + signed_out: Zarresti la sesión correutamente. unlocks: send_instructions: Nunos minutos vas recibir un corréu coles instrucciones pa cómo desbloquiar la cuenta. Comprueba la carpeta Puxarra si nun lu recibiesti. send_paranoid_instructions: Si esiste la cuenta, nun momentu vas recibir un corréu coles instrucciones pa cómo desbloquiala. Comprueba la carpeta Puxarra si nun recibiesti esti corréu. - unlocked: La cuenta desbloquióse correutamente. Anicia sesión pa siguir. + unlocked: La cuenta desbloquióse correutamente. Anicia la sesión pa siguir. errors: messages: already_confirmed: yá se confirmó, volvi aniciar sesión diff --git a/config/locales/devise.de.yml b/config/locales/devise.de.yml index 4cc829f3b..680b58330 100644 --- a/config/locales/devise.de.yml +++ b/config/locales/devise.de.yml @@ -20,11 +20,11 @@ de: confirmation_instructions: action: E-Mail-Adresse verifizieren action_with_app: Bestätigen und zu %{app} zurückkehren - explanation: Du hast einen Account auf %{host} mit dieser E-Mail-Adresse erstellt. Du bist nur noch einen Klick weit von der Aktivierung entfernt. Wenn du das nicht warst, kannst du diese E-Mail ignorieren. + explanation: Du hast auf %{host} mit dieser E-Mail-Adresse ein Konto erstellt. Du bist nur noch einen Klick von der Aktivierung entfernt. Wenn du das nicht warst, kannst du diese E-Mail ignorieren. explanation_when_pending: Du hast dich für eine Einladung bei %{host} mit dieser E-Mailadresse beworben. Sobald du deine E-Mailadresse bestätigst hast, werden wir deine Anfrage überprüfen. Du kannst dich in dieser Zeit nicht anmelden. Wenn deine Anfrage abgelehnt wird, werden deine Daten entfernt, also wird keine weitere Handlung benötigt. Wenn du das nicht warst, kannst du diese E-Mail ignorieren. extra_html: Bitte lies auch die Regeln des Servers und unsere Nutzungsbedingungen. subject: 'Mastodon: Bestätigung deines Kontos bei %{instance}' - title: Verifiziere E-Mail-Adresse + title: E-Mail-Adresse verifizieren email_changed: explanation: 'Die E-Mail-Adresse deines Accounts wird geändert zu:' extra: Wenn du deine E-Mail-Adresse nicht geändert hast, dann wird es vermutlich so sein, dass jemand Zugriff zu deinem Account erhalten hat. Bitte ändere sofort dein Passwort oder kontaktiere den Administrator des Servers, wenn du dich ausgesperrt hast. @@ -39,7 +39,7 @@ de: explanation: Bestätige deine neue E-Mail-Adresse, um sie zu ändern. extra: Wenn diese Änderung nicht von dir ausgeführt wurde, dann solltest du diese E-Mail ignorieren. Die E-Mail-Adresse für deinen Mastodon-Account wird sich nicht ändern, bis du den obigen Link anklickst. subject: 'Mastodon: Bestätige E-Mail-Adresse für %{instance}' - title: Verifiziere E-Mail-Adresse + title: E-Mail-Adresse verifizieren reset_password_instructions: action: Ändere Passwort explanation: Du hast ein neues Passwort für deinen Account angefragt. diff --git a/config/locales/devise.fi.yml b/config/locales/devise.fi.yml index 7637ae3e1..c5eae0cc5 100644 --- a/config/locales/devise.fi.yml +++ b/config/locales/devise.fi.yml @@ -112,4 +112,4 @@ fi: not_locked: ei ollut lukittu not_saved: one: '1 virhe esti kohteen %{resource} tallennuksen:' - other: "%{count} virhettä esti kohteen %{resource} tallennuksen:" + other: "%{count} virhettä esti kohteen %{resource} tallentamisen:" diff --git a/config/locales/devise.ga.yml b/config/locales/devise.ga.yml index 20a9da24e..6a8e0ec75 100644 --- a/config/locales/devise.ga.yml +++ b/config/locales/devise.ga.yml @@ -1 +1,9 @@ +--- ga: + devise: + mailer: + reset_password_instructions: + action: Athraigh pasfhocal + errors: + messages: + not_found: níor aimsíodh é diff --git a/config/locales/devise.uk.yml b/config/locales/devise.uk.yml index afd83861c..4450a4e26 100644 --- a/config/locales/devise.uk.yml +++ b/config/locales/devise.uk.yml @@ -22,17 +22,17 @@ uk: action_with_app: Підтвердити та повернутися до %{app} explanation: Ви створили обліковий запис на %{host} з цією адресою електронної пошти, і зараз на відстані одного кліку від його активації. Якщо це були не ви, проігноруйте цього листа, будь ласка. explanation_when_pending: Ви подали заявку на запрошення до %{host} з цією адресою електронної пошти. Після підтвердження адреси ми розглянемо вашу заявку. Ви можете увійти, щоб змінити ваші дані або видалити свій обліковий запис, але Ви не зможете отримати доступ до більшості функцій, поки Ваш обліковий запис не буде схвалено. Якщо вашу заявку буде відхилено, ваші дані будуть видалені, тож вам не потрібно буде нічого робити. Якщо це були не ви, просто проігноруйте цей лист. - extra_html: Також перегляньте правила серверу та умови використання. + extra_html: Також перегляньте правила сервера та умови користування. subject: 'Mastodon: Інструкції для підтвердження %{instance}' title: Підтвердити адресу електронної пошти email_changed: explanation: 'Адреса електронної пошти для вашого облікового запису змінюється на:' - extra: Якщо ви не змінювали свою адресу електронної пошти, то хтось вірогідно отримав доступ до вашого облікового запису. Будь ласка, негайно змініть свій пароль або зв'яжіться з адміністратором серверу, якщо ви не маєте доступу до свого облікового запису. + extra: Якщо ви не змінювали свою адресу електронної пошти, то хтось вірогідно отримав доступ до вашого облікового запису. Будь ласка, негайно змініть свій пароль або зв'яжіться з адміністратором сервера, якщо ви не маєте доступу до свого облікового запису. subject: 'Mastodon: адресу електронної пошти змінено' title: Нова адреса електронної пошти password_change: explanation: Пароль до вашого облікового запису був змінений. - extra: Якщо ви не змінювали свій пароль, то хтось вірогідно отримав доступ до вашого облікового запису. Будь ласка, негайно змініть свій пароль або зв'яжіться з адміністратором серверу, якщо ви не маєте доступу до свого облікового запису. + extra: Якщо ви не змінювали свій пароль, то хтось вірогідно отримав доступ до вашого облікового запису. Будь ласка, негайно змініть свій пароль або зв'яжіться з адміністратором сервера, якщо ви не маєте доступу до свого облікового запису. subject: 'Mastodon: Ваш пароль змінений' title: Пароль змінено reconfirmation_instructions: diff --git a/config/locales/doorkeeper.ga.yml b/config/locales/doorkeeper.ga.yml index 20a9da24e..189e43aae 100644 --- a/config/locales/doorkeeper.ga.yml +++ b/config/locales/doorkeeper.ga.yml @@ -1 +1,32 @@ +--- ga: + activerecord: + attributes: + doorkeeper/application: + name: Ainm feidhmchláir + doorkeeper: + applications: + buttons: + authorize: Ceadaigh + destroy: Scrios + edit: Cuir in eagar + confirmations: + destroy: An bhfuil tú cinnte? + index: + name: Ainm + authorizations: + buttons: + deny: Diúltaigh + authorized_applications: + confirmations: + revoke: An bhfuil tú cinnte? + grouped_scopes: + title: + accounts: Cuntais + all: Gach Rud + bookmarks: Leabharmharcanna + conversations: Comhráite + favourites: Roghanna + lists: Liostaí + notifications: Fógraí + statuses: Postálacha diff --git a/config/locales/doorkeeper.ku.yml b/config/locales/doorkeeper.ku.yml index c4e66aef1..fdc1c0da4 100644 --- a/config/locales/doorkeeper.ku.yml +++ b/config/locales/doorkeeper.ku.yml @@ -131,7 +131,7 @@ ku: filters: Parzûn follow: Pêwendî follows: Dişopîne - lists: Rêzok + lists: Lîste media: Pêvekên medya mutes: Bêdengkirin notifications: Agahdarî @@ -163,7 +163,7 @@ ku: read:favourites: bijarteyên xwe bibîne read:filters: parzûnûn xwe bibîne read:follows: ên tu dişopînî bibîne - read:lists: rêzoka xwe bibîne + read:lists: lîsteyên xwe bibîne read:mutes: ajimêrên bêdeng kirî bibîne read:notifications: agahdariyên xwe bibîne read:reports: ragihandinên xwe bibîne @@ -177,7 +177,7 @@ ku: write:favourites: şandiyên bijarte write:filters: parzûnan çê bike write:follows: kesan bişopîne - write:lists: rêzokan çê bike + write:lists: lîsteyan biafirîne write:media: pelên medya bar bike write:mutes: mirovan û axaftinan bêdeng bike write:notifications: agahdariyên xwe pak bike diff --git a/config/locales/doorkeeper.nl.yml b/config/locales/doorkeeper.nl.yml index ac9e97b55..6bd062a17 100644 --- a/config/locales/doorkeeper.nl.yml +++ b/config/locales/doorkeeper.nl.yml @@ -72,7 +72,7 @@ nl: revoke: Weet je het zeker? index: authorized_at: Toestemming verleent op %{date} - description_html: Dit zijn toepassingen die toegang hebben tot uw account via de API. Als er toepassingen tussen staan die u niet herkent of een toepassing zich misdraagt, kunt u de toegang van de toepassing intrekken. + description_html: Dit zijn toepassingen die toegang hebben tot jouw account via de API. Als er toepassingen tussen staan die je niet herkent of een toepassing zich misdraagt, kun je de toegangsrechten van de toepassing intrekken. last_used_at: Voor het laatst gebruikt op %{date} never_used: Nooit gebruikt scopes: Toestemmingen diff --git a/config/locales/doorkeeper.pl.yml b/config/locales/doorkeeper.pl.yml index c508aab94..75af425de 100644 --- a/config/locales/doorkeeper.pl.yml +++ b/config/locales/doorkeeper.pl.yml @@ -130,7 +130,7 @@ pl: favourites: Ulubione filters: Filtry follow: Relacje - follows: Śledzenia + follows: Obserwowani lists: Listy media: Załączniki multimedialne mutes: Wyciszenia @@ -154,7 +154,7 @@ pl: admin:write:accounts: wykonaj działania moderacyjne na kontach admin:write:reports: wykonaj działania moderacyjne na zgłoszeniach crypto: użyj szyfrowania end-to-end - follow: możliwość śledzenia kont + follow: możliwość zarządzania relacjami kont push: otrzymywanie powiadomień push dla Twojego konta read: możliwość odczytu wszystkich danych konta read:accounts: dostęp do informacji o koncie @@ -162,7 +162,7 @@ pl: read:bookmarks: dostęp do zakładek read:favourites: dostęp do listy ulubionych read:filters: dostęp do filtrów - read:follows: dostęp do listy śledzonych + read:follows: dostęp do listy obserwowanych read:lists: dostęp do Twoich list read:mutes: dostęp do listy wyciszonych read:notifications: możliwość odczytu powiadomień @@ -176,7 +176,7 @@ pl: write:conversations: wycisz i usuń konwersacje write:favourites: możliwość dodawnia wpisów do ulubionych write:filters: możliwość tworzenia filtrów - write:follows: możliwość śledzenia ludzi + write:follows: możliwość obserwowania ludzi write:lists: możliwość tworzenia list write:media: możliwość wysyłania zawartości multimedialnej write:mutes: możliwość wyciszania ludzi i konwersacji diff --git a/config/locales/doorkeeper.sv.yml b/config/locales/doorkeeper.sv.yml index 6e0efd6d1..0c934155e 100644 --- a/config/locales/doorkeeper.sv.yml +++ b/config/locales/doorkeeper.sv.yml @@ -5,7 +5,7 @@ sv: doorkeeper/application: name: Applikationsnamn redirect_uri: Omdirigera URI - scopes: Omfattning + scopes: Omfattningar website: Applikationswebbplats errors: models: @@ -15,13 +15,13 @@ sv: fragment_present: kan inte innehålla ett fragment. invalid_uri: måste vara en giltig URI. relative_uri: måste vara en absolut URI. - secured_uri: måste vara en HTTPS/SSL URI. + secured_uri: måste vara en HTTPS/SSL-URI. doorkeeper: applications: buttons: - authorize: Godkänna + authorize: Godkänn cancel: Ångra - destroy: Förstöra + destroy: Förstör edit: Redigera submit: Skicka confirmations: @@ -29,52 +29,54 @@ sv: edit: title: Redigera applikation form: - error: Hoppsan! Kontrollera i formuläret efter eventuella fel + error: Hoppsan! Kolla ditt formulär efter eventuella fel help: - native_redirect_uri: Använd %{native_redirect_uri} för lokalt test - redirect_uri: Använd en per rad URI - scopes: Separera omfattningen med mellanslag. Lämna tomt för att använda standardomfattning. + native_redirect_uri: Använd %{native_redirect_uri} för lokala tester + redirect_uri: Använd en rad per URI + scopes: Separera omfattningar med mellanslag. Lämna tomt för att använda standardomfattningar. index: application: Applikation - callback_url: Återkalls URL + callback_url: URL för återanrop delete: Radera - empty: Du har inga program. + empty: Du har inga applikationer. name: Namn new: Ny applikation - scopes: Omfattning + scopes: Omfattningar show: Visa title: Dina applikationer new: title: Ny applikation show: - actions: Handlingar + actions: Åtgärder application_id: Klientnyckel - callback_urls: Återkalls URLs - scopes: Omfattning - secret: Kundhemlighet - title: 'Program: %{name}' + callback_urls: URL:er för återanrop + scopes: Omfattningar + secret: Klienthemlighet + title: 'Applikation: %{name}' authorizations: buttons: - authorize: Godkänna + authorize: Godkänn deny: Neka error: title: Ett fel har uppstått new: - review_permissions: Förhandsgranska behörigheter + prompt_html: "%{client_name} vill ha behörighet att komma åt ditt konto. Det är en applikation från tredje part. Du bör endast godkänna den om du litar på den." + review_permissions: Granska behörigheter title: Godkännande krävs show: - title: Kopiera denna behörighetskod och klistra in den i programmet. + title: Kopiera denna behörighetskod och klistra in den i applikationen. authorized_applications: buttons: revoke: Återkalla confirmations: revoke: Är du säker? index: - authorized_at: Auktoriserades %{date} + authorized_at: Godkändes den %{date} + description_html: Dessa applikationer har åtkomst till ditt konto genom API:et. Om det finns applikationer du inte känner igen här, eller om en applikation inte fungerar, kan du återkalla dess åtkomst. last_used_at: Användes senast %{date} never_used: Aldrig använd scopes: Behörigheter - superapp: Internt + superapp: Intern title: Dina behöriga ansökningar errors: messages: @@ -111,6 +113,10 @@ sv: destroy: notice: Applikation återkallas. grouped_scopes: + access: + read: Enbart rätt att läsa + read/write: Läs- och skrivbehörighet + write: Enbart rätt att skriva title: accounts: Konton admin/accounts: Administrering av konton @@ -122,9 +128,12 @@ sv: conversations: Konversationer crypto: Ände-till-ände-kryptering favourites: Favoriter + filters: Filter follow: Relationer follows: Följer lists: Listor + media: Mediabilagor + mutes: Tystade användare notifications: Aviseringar push: Push-aviseringar reports: Rapporter @@ -134,18 +143,19 @@ sv: admin: nav: applications: Applikationer - oauth2_provider: OAuth2 leverantör + oauth2_provider: OAuth2-leverantör application: - title: OAuth-behörighet krävs + title: OAuth-godkännande krävs scopes: - admin:read: läs all data på servern - admin:read:accounts: läs känslig information från alla konton - admin:read:reports: läs känslig information från alla rapporter och rapporterade konton + admin:read: läsa all data på servern + admin:read:accounts: läsa känslig information om alla konton + admin:read:reports: läsa känslig information om alla rapporter och rapporterade konton admin:write: ändra all data på servern - admin:write:accounts: utför alla aktiviteter för moderering på konton - admin:write:reports: utför alla aktiviteter för moderering i rapporter - follow: följa, blockera, ta bort blockerade och sluta följa konton - push: ta emot push-aviseringar för ditt konto + admin:write:accounts: utföra modereringsåtgärder på konton + admin:write:reports: utföra modereringsåtgärder på rapporter + crypto: använd obruten kryptering + follow: modifiera kontorelationer + push: ta emot dina push-notiser read: läsa dina kontodata read:accounts: se kontoinformation read:blocks: se dina blockeringar @@ -155,20 +165,21 @@ sv: read:follows: se vem du följer read:lists: se dina listor read:mutes: se dina tystningar - read:notifications: se dina aviseringar + read:notifications: se dina notiser read:reports: se dina rapporter read:search: sök å dina vägnar - read:statuses: se alla statusar - write: posta åt dig + read:statuses: se alla inlägg + write: ändra all din kontodata write:accounts: ändra din profil write:blocks: blockera konton och domäner - write:bookmarks: bokmärkesstatusar - write:favourites: favoritmarkera statusar + write:bookmarks: bokmärka inlägg + write:conversations: tysta och radera konversationer + write:favourites: favoritmarkera inlägg write:filters: skapa filter - write:follows: följ människor + write:follows: följa folk write:lists: skapa listor - write:media: ladda upp mediafiler - write:mutes: tysta människor och konversationer - write:notifications: rensa dina aviseringar - write:reports: rapportera andra människor - write:statuses: publicera statusar + write:media: ladda upp mediefiler + write:mutes: tysta folk och konversationer + write:notifications: rensa dina notiser + write:reports: rapportera andra personer + write:statuses: publicera inlägg diff --git a/config/locales/doorkeeper.uk.yml b/config/locales/doorkeeper.uk.yml index 563d20e32..8c8a03947 100644 --- a/config/locales/doorkeeper.uk.yml +++ b/config/locales/doorkeeper.uk.yml @@ -27,7 +27,7 @@ uk: confirmations: destroy: Ви впевнені? edit: - title: Редагувати додаток + title: Редагувати застосунок form: error: Отакої! Перевірте свою форму на помилки help: @@ -35,24 +35,24 @@ uk: redirect_uri: Використовуйте одну стрічку на URI scopes: Відділяйте області видимості пробілами. Залишайте порожніми, щоб використовувати області видимості за промовчуванням. index: - application: Додаток + application: Застосунок callback_url: URL зворотнього виклику delete: Видалити empty: У вас немає створених додатків. name: Назва - new: Новий додаток + new: Новий застосунок scopes: Області видимості show: Показати title: Ваші додатки new: - title: Новий додаток + title: Новий застосунок show: actions: Дії application_id: Ключ застосунку callback_urls: URL зворотніх викликів scopes: Дозволи secret: Таємниця - title: 'Додаток: %{name}' + title: 'Застосунок: %{name}' authorizations: buttons: authorize: Авторизувати @@ -64,7 +64,7 @@ uk: review_permissions: Переглянути дозволи title: Необхідна авторизація show: - title: Скопіюйте цей код авторизації та вставте його у додаток. + title: Скопіюйте цей код авторизації та вставте його у застосунок. authorized_applications: buttons: revoke: Відкликати авторизацію @@ -104,11 +104,11 @@ uk: flash: applications: create: - notice: Додаток створено. + notice: Застосунок створено. destroy: - notice: Додаток видалено. + notice: Застосунок видалено. update: - notice: Додаток оновлено. + notice: Застосунок оновлено. authorized_applications: destroy: notice: Авторизацію додатка відкликано. @@ -160,7 +160,7 @@ uk: read:accounts: бачити інформацію про облікові записи read:blocks: бачити Ваші блокування read:bookmarks: бачити ваші закладки - read:favourites: бачити Ваші вподобані пости + read:favourites: бачити вподобані дописи read:filters: бачити Ваші фільтри read:follows: бачити Ваші підписки read:lists: бачити Ваші списки @@ -172,7 +172,7 @@ uk: write: змінювати усі дані вашого облікового запису write:accounts: змінювати ваш профіль write:blocks: блокувати облікові записи і домени - write:bookmarks: додавати пости в закладки + write:bookmarks: додавати дописи до закладок write:conversations: нехтувати й видалити бесіди write:favourites: вподобані статуси write:filters: створювати фільтри diff --git a/config/locales/doorkeeper.vi.yml b/config/locales/doorkeeper.vi.yml index 946760d32..b43540257 100644 --- a/config/locales/doorkeeper.vi.yml +++ b/config/locales/doorkeeper.vi.yml @@ -77,7 +77,7 @@ vi: never_used: Chưa dùng scopes: Quyền cho phép superapp: Đang dùng - title: Các ứng dụng đang dùng + title: Các ứng dụng đã dùng errors: messages: access_denied: Chủ sở hữu tài nguyên hoặc máy chủ đã từ chối yêu cầu. diff --git a/config/locales/el.yml b/config/locales/el.yml index c5be24815..9a2510461 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -184,6 +184,7 @@ el: reject_user: Απόρριψη Χρήστη remove_avatar_user: Αφαίρεση Avatar reopen_report: Ξανάνοιγμα Καταγγελίας + resend_user: Επαναποστολή του email επιβεβαίωσης reset_password_user: Επαναφορά Συνθηματικού resolve_report: Επίλυση Καταγγελίας sensitive_account: Σήμανση των πολυμέσων στον λογαριασμό σας ως ευαίσθητων diff --git a/config/locales/eo.yml b/config/locales/eo.yml index f4f4d4819..8138bac59 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -171,6 +171,7 @@ eo: reject_user: Malakcepti Uzanton remove_avatar_user: Forigi la rolfiguron reopen_report: Remalfermi signalon + resend_user: Resendi konfirman retmesaĝon reset_password_user: Restarigi pasvorton resolve_report: Solvitaj reporto sensitive_account: Marki tikla la aŭdovidaĵojn de via konto @@ -214,6 +215,7 @@ eo: reject_user_html: "%{name} malakceptis registriĝon de %{target}" remove_avatar_user_html: "%{name} forigis la rolfiguron de %{target}" reopen_report_html: "%{name} remalfermis signalon %{target}" + resend_user_html: "%{name} resendis konfirman retmesaĝon por %{target}" suspend_account_html: "%{name} suspendis la konton de %{target}" unsuspend_account_html: "%{name} reaktivigis la konton de %{target}" update_announcement_html: "%{name} ĝisdatigis anoncon %{target}" diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 1dbe88ec2..18a2f45d0 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -207,6 +207,7 @@ es-AR: reject_user: Rechazar usuario remove_avatar_user: Quitar avatar reopen_report: Reabrir denuncia + resend_user: Reenviar correo electrónico de confirmación reset_password_user: Cambiar contraseña resolve_report: Resolver denuncia sensitive_account: Forzar cuenta como sensible @@ -265,6 +266,7 @@ es-AR: reject_user_html: "%{name} rechazó el registro de %{target}" remove_avatar_user_html: "%{name} quitó el avatar de %{target}" reopen_report_html: "%{name} reabrió la denuncia %{target}" + resend_user_html: "%{name} reenvió el correo electrónico de confirmación para %{target}" reset_password_user_html: "%{name} cambió la contraseña del usuario %{target}" resolve_report_html: "%{name} resolvió la denuncia %{target}" sensitive_account_html: "%{name} marcó los medios de %{target} como sensibles" diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 382e2c924..efcd8476e 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -1236,6 +1236,8 @@ es-MX: carry_blocks_over_text: Este usuario se mudó desde %{acct}, que habías bloqueado. carry_mutes_over_text: Este usuario se mudó desde %{acct}, que habías silenciado. copy_account_note_text: 'Este usuario se mudó desde %{acct}, aquí estaban tus notas anteriores sobre él:' + navigation: + toggle_menu: Alternar menú notification_mailer: admin: report: diff --git a/config/locales/eu.yml b/config/locales/eu.yml index bec8e5c50..d4a77a992 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -104,10 +104,10 @@ eu: not_subscribed: Harpidetu gabe pending: Berrikusketa egiteke perform_full_suspension: Kanporatu - previous_strikes: Aurreko abisuak + previous_strikes: Aurreko neurriak previous_strikes_description_html: - one: Kontu honek abisu bat dauka. - other: Kontu honek %{count} abisu dauzka. + one: Kontu honen aurka neurri bat hartu da. + other: Kontu honen aurka %{count} neurri hartu dira. promote: Sustatu protocol: Protokoloa public: Publikoa @@ -143,7 +143,7 @@ eu: silence: Isilarazi silenced: Isilarazita statuses: Bidalketa - strikes: Aurreko abisuak + strikes: Aurreko neurriak subscribe: Harpidetu suspend: Kanporatu suspended: Kanporatuta @@ -342,6 +342,18 @@ eu: media_storage: Multimedia biltegiratzea new_users: erabiltzaile berri opened_reports: txosten irekita + pending_appeals_html: + one: Apelazio %{count} zain + other: "%{count} apelazio zain" + pending_reports_html: + one: Txosten %{count} zain + other: "%{count} txosten zain" + pending_tags_html: + one: Traola %{count} zain + other: "%{count} traola zain" + pending_users_html: + one: Erabiltzaile %{count} zain + other: "%{count} erabiltzaile zain" resolved_reports: txosten konponduta software: Softwarea sources: Izen emate jatorriak @@ -390,6 +402,9 @@ eu: view: Ikusi domeinuaren blokeoa email_domain_blocks: add_new: Gehitu berria + attempts_over_week: + one: Izen-emateko saiakera %{count} azken astean + other: Izen-emateko %{count} saiakera azken astean created_msg: Ongi gehitu da e-mail helbidea domeinuen zerrenda beltzera delete: Ezabatu dns: @@ -418,6 +433,9 @@ eu: one: Domeinura entregatzeak arrakastarik gabe huts egiten badu egun %{count} igaro ondoren, ez da entregatzeko saiakera gehiago egingo, ez bada domeinu horretatik entregarik jasotzen. other: Domeinura entregatzeak arrakastarik gabe huts egiten badu %{count} egun igaro ondoren, ez da entregatzeko saiakera gehiago egingo, ez bada domeinu horretatik entregarik jasotzen. failure_threshold_reached: Hutsegite atalasera iritsi da %{date} datan. + failures_recorded: + one: Huts egindako saiakera egun %{count}ean. + other: Huts egindako saiakera %{count} egun desberdinetan. no_failures_recorded: Ez dago hutsegiterik erregistroan. title: Egoera warning: Zerbitzari honetara konektatzeko azken saiakerak huts egin du @@ -529,10 +547,10 @@ eu: action_log: Auditoria-egunkaria action_taken_by: Neurrien hartzailea actions: - delete_description_html: Salatutako bidalketak ezabatuko dira eta abisu bat gordeko da, etorkizunean kontu berarekin elkarrekintzarik baduzu kontuan izan dezazun. - mark_as_sensitive_description_html: Salatutako bidalketetako multimedia edukia hunkigarri bezala eta abisu bat gordeko da, etorkizunean kontu honek arau-hausterik egiten badu kontuan izan dezazun. + delete_description_html: Salatutako bidalketak ezabatuko dira eta neurria gordeko da, etorkizunean kontu berarekin elkarrekintzarik baduzu kontuan izan dezazun. + mark_as_sensitive_description_html: Salatutako bidalketetako multimedia edukia hunkigarri bezala eta neurria gordeko da, etorkizunean kontu honek arau-hausterik egiten badu kontuan izan dezazun. other_description_html: Ikusi kontuaren portaera kontrolatzeko eta salatutako kontuarekin komunikazioa pertsonalizatzeko aukera gehiago. - resolve_description_html: Ez da neurririk hartuko salatutako kontuaren aurka, ez da abisurik gordeko eta salaketa itxiko da. + resolve_description_html: Ez da ekintzarik hartuko salatutako kontuaren aurka, ez da neurria gordeko eta salaketa itxiko da. silence_description_html: Profila dagoeneko jarraitzen dutenei edo eskuz bilatzen dutenei bakarrik agertuko zaie, bere irismena asko mugatuz. Beti bota daiteke atzera. suspend_description_html: Profila eta bere eduki guztiak iritsiezinak bihurtuko dira, ezabatzen den arte. Kontuarekin ezin da interakziorik eduki. Atzera bota daiteke 30 eguneko epean. actions_description_html: Erabaki txosten hau konpontzeko ze ekintza hartu. Salatutako kontuaren aurka zigor ekintza bat hartzen baduzu, eposta jakinarazpen bat bidaliko zaie, Spam kategoria hautatzean ezik. @@ -582,6 +600,9 @@ eu: view_profile: Ikusi profila roles: add_new: Gehitu rola + assigned_users: + one: Erabiltzaile %{count} + other: "%{count} erabiltzaile" categories: administration: Administrazioa devops: Devops @@ -593,6 +614,9 @@ eu: edit: Editatu '%{name}' rola everyone: Baimen lehenetsiak everyone_full_description_html: Hau erabiltzaile guztiei eragiten dien oinarrizko rola da, rol bat esleitu gabekoei ere bai. Gainerako rolek honetatik heredatzen dituzte baimenak. + permissions_count: + one: Baimen %{count} + other: "%{count} baimen" privileges: administrator: Administratzailea administrator_description: Baimen hau duten erabiltzaileak baimen guztien gainetik pasako dira @@ -659,6 +683,7 @@ eu: title: Edukia atxikitzea discovery: follow_recommendations: Jarraitzeko gomendioak + preamble: Eduki interesgarria aurkitzea garrantzitsua da Mastodoneko erabiltzaile berrientzat, behar bada inor ez dutelako ezagutuko. Kontrolatu zure zerbitzariko aurkikuntza-ezaugarriek nola funtzionatzen duten. profile_directory: Profil-direktorioa public_timelines: Denbora-lerro publikoak title: Aurkitzea @@ -754,15 +779,22 @@ eu: pending_review: Berrikusketaren zain preview_card_providers: allowed: Argitaratzaile honen estekak joera izan daitezke + description_html: Hauek dira zure zerbitzarian maiz partekatzen diren esteken domeinuak. Estekak ez dira joeretan publikoki agertuko estekaren domeinua onartu arte. Onartzeak (edo baztertzeak) azpi-domeinuei ere eragiten die. rejected: Argitaratzaile honen estekek ezin dute joera izan title: Argitaratzaileak rejected: Ukatua statuses: allow: Onartu bidalketa allow_account: Onartu egilea + description_html: Hauek dira une honetan asko partekatu eta gogokoak diren bidalketak (zure zerbitzariak ezagutzen dituenak). Erabiltzaile berrientzat eta bueltan itzuli direnentzat lagungarriak izan daitezke nor jarraitu aurkitzeko. Bidalketak ez dira publikoki erakusten zuk egilea onartu arte eta egileak gomendatua izatea onartu arte. Bidalketak banan bana ere onartu edo baztertu ditzakezu. disallow: Ez onartu bidalketa disallow_account: Ez onartu egilea no_status_selected: Ez da joerarik aldatu ez delako bat ere hautatu + not_discoverable: Egileak ez du aukeratu aurkikuntza ezaugarrietan agertzea + shared_by: + one: Behin partekatua edo gogoko egina + other: "%{friendly_count} aldiz partekatua edo gogoko egina" + title: Bidalketen joerak tags: current_score: Uneko emaitza%{score} dashboard: @@ -771,6 +803,7 @@ eu: tag_servers_dimension: Zerbitzari nagusiak tag_servers_measure: zerbitzari desberdin tag_uses_measure: erabilera guztira + description_html: Traola hauek askotan agertzen dira zure zerbitzariak ikusten dituen bidalketetan. Jendea zertaz hitz egiten ari den aurkitzen lagun diezaieke erabiltzaileei. Traolak ez dira publiko egiten onartzen dituzun arte. listable: Gomendatu daiteke no_tag_selected: Ez da etiketarik aldatu ez delako bat ere hautatu not_listable: Ez da gomendatuko @@ -782,6 +815,9 @@ eu: trending_rank: "%{rank}. joera" usable: Erabili daiteke usage_comparison: "%{today} aldiz erabili da gaur, atzo %{yesterday} aldiz" + used_by_over_week: + one: Pertsona batek erabilia azken astean + other: "%{count} pertsonak erabilia azken astean" title: Joerak trending: Joerak warning_presets: @@ -793,12 +829,16 @@ eu: webhooks: add_new: Gehitu amaiera-puntua delete: Ezabatu + description_html: "Webhook batek aukera ematen dio Mastodoni zure aplikazioari aukeratutako gertaeren jakinarazpenak denbora errealean bidaltzeko, zure aplikazioak automatikoki erantzunak abiarazi ditzan." disable: Desgaitu disabled: Desgaituta edit: Editatu amaiera-puntua empty: Ez duzu webhook amaiera-punturik konfiguratu oraindik. enable: Gaitu enabled: Aktiboa + enabled_events: + one: Gaitutako gertaera bat + other: Gaitutako %{count} gertaera events: Gertaerak new: Webhook berria rotate_secret: Biratu sekretua @@ -816,6 +856,9 @@ eu: sensitive: kontua hunkigarri gisa markatzea silence: kontua mugatzea suspend: kontua kanporatzea + body: "%{target} erabiltzaileak apelazioa jarri dio %{action_taken_by} erabiltzaileak %{date}(e)an hartutako %{type} motako erabakiari. Hau idatzi du:" + next_steps: Apelazioa onartu dezakezu moderazio erabakia desegiteko, edo ez ikusia egin. + subject: "%{username} erabiltzailea %{instance} instantziako moderazio erabaki bat apelatzen ari da" new_pending_account: body: Kontu berriaren xehetasunak azpian daude. Eskaera hau onartu edo ukatu dezakezu. subject: Kontu berria berrikusteko %{instance} instantzian (%{username}) @@ -824,10 +867,16 @@ eu: body_remote: "%{domain} domeinuko norbaitek %{target} salatu du" subject: Salaketa berria %{instance} instantzian (#%{id}) new_trends: + body: 'Ondorengo elementuak berrikusi behar dira publikoki bistaratu aurretik:' new_trending_links: title: Esteken joerak + new_trending_statuses: + title: Bidalketen joerak new_trending_tags: + no_approved_tags: Ez dago onartutako traolen joerarik une honetan. + requirements: 'Hautagai hauek joeretan onartutako %{rank}. traola gainditu dezakete: une honetan #%{lowest_tag_name} da, %{lowest_tag_score} puntuazioarekin.' title: Traolak joeran + subject: Joera berriak daude berrikusteko %{instance} instantzian aliases: add_new: Sortu ezizena created_msg: Ongi sortu da ezizena. Orain kontu zaharretik migratzen hasi zaitezke. @@ -862,6 +911,7 @@ eu: warning: Kontuz datu hauekin, ez partekatu inoiz inorekin! your_token: Zure sarbide token-a auth: + apply_for_account: Jarri itxarote-zerrendan change_password: Pasahitza delete_account: Ezabatu kontua delete_account_html: Kontua ezabatu nahi baduzu, jarraitu hemen. Berrestea eskatuko zaizu. @@ -881,6 +931,7 @@ eu: migrate_account: Migratu beste kontu batera migrate_account_html: Kontu hau beste batera birbideratu nahi baduzu, hemen konfiguratu dezakezu. or_log_in_with: Edo hasi saioa honekin + privacy_policy_agreement_html: Pribatutasun politika irakurri dut eta ados nago providers: cas: CAS saml: SAML @@ -888,18 +939,25 @@ eu: registration_closed: "%{instance} instantziak ez du kide berririk onartzen" resend_confirmation: Birbidali berresteko argibideak reset_password: Berrezarri pasahitza + rules: + preamble: Hauek %{domain} instantziako moderatzaileek ezarriak eta betearaziak dira. + title: Oinarrizko arau batzuk. security: Segurtasuna set_new_password: Ezarri pasahitza berria setup: email_below_hint_html: Beheko e-mail helbidea okerra bada, hemen aldatu dezakezu eta baieztapen e-mail berria jaso. email_settings_hint_html: Baieztamen e-maila %{email} helbidera bidali da. E-mail helbide hori zuzena ez bada, kontuaren ezarpenetan aldatu dezakezu. title: Ezarpena + sign_up: + preamble: Mastodon zerbitzari honetako kontu batekin, aukera izango duzu sareko edozein pertsona jarraitzeko, ez dio axola kontua non ostatatua dagoen. + title: "%{domain} zerbitzariko kontua prestatuko dizugu." status: account_status: Kontuaren egoera confirming: E-mail baieztapena osatu bitartean zain. functional: Zure kontua guztiz erabilgarri dago. pending: Zure eskaera gainbegiratzeko dago oraindik. Honek denbora behar lezake. Zure eskaera onartzen bada e-mail bat jasoko duzu. redirecting_to: Zure kontua ez dago aktibo orain %{acct} kontura birbideratzen duelako. + view_strikes: Ikusi zure kontuaren aurkako neurriak too_fast: Formularioa azkarregi bidali duzu, saiatu berriro. use_security_key: Erabili segurtasun gakoa authorize_follow: @@ -960,12 +1018,34 @@ eu: username_unavailable: Zure erabiltzaile-izena ez da eskuragarri egongo disputes: strikes: + action_taken: Ezarritako neurria appeal: Apelazioa + appeal_approved: Neurria behar bezala apelatu da eta jada ez da baliozkoa + appeal_rejected: Apelazioa baztertu da + appeal_submitted_at: Apelazioa bidalita + appealed_msg: Zure apelazioa bidali da. Onartzen bada, jakinaraziko zaizu. appeals: submit: Bidali apelazioa + approve_appeal: Onartu apelazioa + associated_report: Erlazionatutako txostena + created_at: Data + description_html: Hauek dira %{instance} instantziako arduradunek zure kontuaren aurka hartutako ekintzak eta bidali dizkizuten abisuak. recipient: Honi zuzendua + reject_appeal: Baztertu apelazioa + status: "%{id} bidalketa" + status_removed: Bidalketa dagoeneko ezabatu da sistematik + title: "%{date}(e)ko %{action}" title_actions: + delete_statuses: Bidalketa ezabatzea + disable: Kontua blokeatzea + mark_statuses_as_sensitive: Bidalketak hunkigarri gisa markatzea + none: Abisua + sensitive: Kontua hunkigarri gisa markatzea + silence: Kontua mugatzea suspend: Kontua kanporatzea + your_appeal_approved: Zure apelazioa onartu da + your_appeal_pending: Apelazio bat bidali duzu + your_appeal_rejected: Zure apelazioa baztertu da domain_validator: invalid_domain: ez da domeinu izen baliogarria errors: @@ -1014,25 +1094,60 @@ eu: public: Denbora-lerro publikoak thread: Elkarrizketak edit: + add_keyword: Gehitu gako-hitza + keywords: Gako-hitzak + statuses: Banako bidalketak + statuses_hint_html: Iragazki hau hautatutako banako bidalketei aplikatuko zaie, gako-hitzekin bat etorri ala ez. Berrikusi edo kendu bidalketak iragazkitik. title: Editatu iragazkia errors: + deprecated_api_multiple_keywords: Parametro hauek ezin dira aldatu aplikazio honetatik, iragazitako gako-hitz bat baino gehiagori eragiten diotelako. Erabili aplikazio berriago bat edo web interfazea. invalid_context: Testuinguru baliogabe edo hutsa eman da index: + contexts: "%{contexts} testuinguruetako iragazkiak" delete: Ezabatu empty: Ez duzu iragazkirik. + expires_in: "%{distance}(a)n iraungitzen da" + expires_on: "%{date}(a)n iraungitzen da" + keywords: + one: Gako-hitz %{count} + other: "%{count} gako-hitz" + statuses: + one: Bidalketa %{count} + other: "%{count} bidalketa" + statuses_long: + one: Banako bidalketa %{count} ezkutatuta + other: Banako %{count} bidalketa ezkutatuta title: Iragazkiak new: + save: Gorde iragazki berria title: Gehitu iragazki berria + statuses: + back_to_filter: Itzuli iragazkira + batch: + remove: Kendu iragazkitik + index: + hint: Iragazki honek banako bidalketei eragiten die, beste kriterioak badaude ere. Bidalketa gehiago gehitu ditzakezu iragazkira web interfazetik. + title: Iragazitako bidalketak footer: trending_now: Joera orain generic: all: Denak + all_items_on_page_selected_html: + one: Orri honetako elementu %{count} hautatuta. + other: Orri honetako %{count} elementuak hautatuta. + all_matching_items_selected_html: + one: Zure bilaketarekin bat datorren elementu %{count} hautatuta. + other: Zure bilaketarekin bat datozen %{count} elementu hautatuta. changes_saved_msg: Aldaketak ongi gorde dira! copy: Kopiatu delete: Ezabatu + deselect: Desautatu guztiak none: Bat ere ez order_by: Ordenatze-irizpidea save_changes: Gorde aldaketak + select_all_matching_items: + one: Hautatu zure bilaketarekin bat datorren elementu %{count}. + other: Hautatu zure bilaketarekin bat datozen %{count} elementuak. today: gaur validation_errors: one: Zerbait ez dabil ongi! Egiaztatu beheko errorea mesedez @@ -1134,7 +1249,14 @@ eu: carry_blocks_over_text: Erabiltzaile hau %{acct} kontutik dator, zeina blokeatuta daukazun. carry_mutes_over_text: Erabiltzaile hau %{acct} kontutik dator, zeina isilarazita daukazun. copy_account_note_text: 'Erabiltzaile hau %{acct} kontutik dator, hemen berari buruzko zure aurreko oharrak:' + navigation: + toggle_menu: Txandakatu menua notification_mailer: + admin: + report: + subject: "%{name} erabiltzaileak txosten bat bidali du" + sign_up: + subject: "%{name} erabiltzailea erregistratu da" favourite: body: "%{name}(e)k zure bidalketa gogoko du:" subject: "%{name}(e)k zure bidalketa gogoko du" @@ -1161,6 +1283,8 @@ eu: title: Bultzada berria status: subject: "%{name} erabiltzaileak bidalketa egin berri du" + update: + subject: "%{name} erabiltzaileak bidalketa bat editatu du" notifications: email_events: E-mail jakinarazpenentzako gertaerak email_events_hint: 'Hautatu jaso nahi dituzun gertaeren jakinarazpenak:' @@ -1204,6 +1328,8 @@ eu: other: Denetarik posting_defaults: Bidalketarako lehenetsitakoak public_timelines: Denbora-lerro publikoak + privacy_policy: + title: Pribatutasun politika reactions: errors: limit_reached: Erreakzio desberdinen muga gaindituta @@ -1227,6 +1353,14 @@ eu: status: Kontuaren egoera remote_follow: missing_resource: Ezin izan da zure konturako behar den birbideratze URL-a + reports: + errors: + invalid_rules: ez die erreferentzia egiten baliozko arauei + rss: + content_warning: 'Edukiaren abisua:' + descriptions: + account: "@%{acct} kontuaren bidalketa publikoak" + tag: "#%{hashtag} traola duten bidalketa publikoak" scheduled_statuses: over_daily_limit: 'Egun horretarako programatutako bidalketa kopuruaren muga gainditu duzu: %{limit}' over_total_limit: 'Programatutako bidalketa kopuruaren muga gainditu duzu: %{limit}' @@ -1293,6 +1427,7 @@ eu: profile: Profila relationships: Jarraitutakoak eta jarraitzaileak statuses_cleanup: Bidalketak automatikoki ezabatzea + strikes: Moderazio neurriak two_factor_authentication: Bi faktoreetako autentifikazioa webauthn_authentication: Segurtasun gakoak statuses: @@ -1309,14 +1444,17 @@ eu: other: "%{count} bideo" boosted_from_html: "%{acct_link}(e)tik bultzatua" content_warning: 'Edukiaren abisua: %{warning}' + default_language: Interfazearen hizkuntzaren berdina disallowed_hashtags: one: 'debekatutako traola bat zuen: %{tags}' other: 'debekatutako traola hauek zituen: %{tags}' + edited_at_html: Editatua %{date} errors: in_reply_not_found: Erantzuten saiatu zaren bidalketa antza ez da existitzen. open_in_web: Ireki web-ean over_character_limit: "%{max}eko karaktere muga gaindituta" pin_errors: + direct: Aipatutako erabiltzaileentzat soilik ikusgai dauden bidalketak ezin dira finkatu limit: Gehienez finkatu daitekeen bidalketa kopurua finkatu duzu jada ownership: Ezin duzu beste norbaiten bidalketa bat finkatu reblog: Bultzada bat ezin da finkatu @@ -1369,7 +1507,7 @@ eu: '2629746': Hilabete 1 '31556952': Urte 1 '5259492': 2 hilabete - '604800': 1 week + '604800': Aste 1 '63113904': 2 urte '7889238': 3 hilabete min_age_label: Denbora muga @@ -1381,6 +1519,9 @@ eu: pinned: Finkatutako bidalketa reblogged: "(r)en bultzada" sensitive_content: 'Kontuz: Eduki hunkigarria' + strikes: + errors: + too_late: Beranduegi da neurri hau apelatzeko tags: does_not_match_previous_name: ez dator aurreko izenarekin bat themes: @@ -1391,6 +1532,7 @@ eu: formats: default: "%Y(e)ko %b %d, %H:%M" month: "%Y(e)ko %b" + time: "%H:%M" two_factor_authentication: add: Gehitu disable: Desgaitu @@ -1407,27 +1549,63 @@ eu: recovery_instructions_html: Zure telefonora sarbidea galtzen baduzu, beheko berreskuratze kode bat erabili dezakezu kontura berriro sartu ahal izateko. Gore barreskuratze kodeak toki seguruan. Adibidez inprimatu eta dokumentu garrantzitsuekin batera gorde. webauthn: Segurtasun gakoak user_mailer: + appeal_approved: + action: Joan zure kontura + explanation: "%{strike_date}(e)an zure kontuari ezarritako neurriaren aurka %{appeal_date}(e)an jarri zenuen apelazioa onartu da. Zure kontua egoera onean dago berriro." + subject: "%{date}(e)ko zure apelazioa onartu da" + title: Apelazioa onartuta + appeal_rejected: + explanation: "%{strike_date}(e)an zure kontuari ezarritako neurriaren aurka %{appeal_date}(e)an jarri zenuen apelazioa baztertu da." + subject: "%{date}(e)ko zure apelazioa baztertu da" + title: Apelazioa baztertuta backup_ready: explanation: Zure Mastodon kontuaren babes-kopia osoa eskatu duzu. Deskargatzeko prest dago! subject: Zure artxiboa deskargatzeko prest dago title: Artxiboa jasotzea + suspicious_sign_in: + change_password: aldatu pasahitza + details: 'Hemen daude saio hasieraren xehetasunak:' + explanation: Zure kontuan IP helbide berri batetik saioa hasi dela detektatu dugu. + further_actions_html: Ez bazara zu izan, lehenbailehen %{action} gomendatzen dizugu eta bi faktoreko autentifikazioa gaitzea zure kontua seguru mantentzeko. + subject: Zure kontura sarbidea egon da IP helbide berri batetik + title: Saio hasiera berria warning: + appeal: Bidali apelazioa + appeal_description: Hau errore bat dela uste baduzu, apelazio bat bidali diezaiekezu %{instance} instantziako arduradunei. + categories: + spam: Spama + violation: Edukiak komunitatearen gidalerro hauek urratzen ditu explanation: + delete_statuses: Zure bidalketetako batzuk komunitatearen gidalerro bat edo gehiago urratzen dituztela aurkitu da eta ondorioz %{instance} instantziako moderatzaileek ezabatu egin dituzte. + disable: Ezin duzu zure kontua erabili, baina zure profilak eta beste datuek hor diraute. Zure datuen babeskopia eskatu dezakezu, kontuaren ezarpenak aldatu edo kontua ezabatu. + mark_statuses_as_sensitive: Zure bidalketetako batzuk hunkigarri bezala markatu dituzte %{instance} instantziako moderatzaileek. Horrek esan nahi du jendeak klik egin beharko duela bidalketetako multimedia edukian aurrebista bistaratzeko. Etorkizunean zuk zeuk markatu ditzakezu multimediak hunkigarri bezala. + sensitive: Hemendik aurrera, igotzen dituzun multimedia fitxategi guztiak hunkigarri gisa markatuko dira eta abisuan klik egin beharko da ikusteko. + silence: Zure kontua erabili dezakezu oraindik, baina dagoeneko jarraitzen zaituen jendeak soilik ikusi ahal izango ditu zure bidalketak zerbitzari honetan, eta aurkikuntza-ezaugarrietatik baztertua izango zara. Hala ere, besteek eskuz jarrai zaitzakete oraindik. suspend: Ezin duzu zure kontua erabili, eta zure profila eta beste datuak ez daude eskuragarri jada. Hala ere, saioa hasi dezakezu zure datuen babeskopia eskatzeko, 30 egun inguru barru behin betiko ezabatu aurretik. Zure oinarrizko informazioa gordeko da kanporatzea saihestea eragozteko. + reason: 'Arrazoia:' + statuses: 'Aipatutako bidalketak:' subject: + delete_statuses: "%{acct} zerbitzarian zure bidalketak ezabatu dira" disable: Zure %{acct} kontua izoztu da + mark_statuses_as_sensitive: "%{acct} zerbitzarian zure bidalketak hunkigarri gisa markatu dira" none: "%{acct} konturako abisua" + sensitive: "%{acct} zerbitzarian zure bidalketak hunkigarri gisa markatuko dira hemendik aurrera" silence: Zure %{acct} kontua murriztu da suspend: Zure %{acct} kontua kanporatua izan da title: + delete_statuses: Bidalketak ezabatuta disable: Kontu izoztua + mark_statuses_as_sensitive: Bidalketak hunkigarri gisa markatuta none: Abisua + sensitive: Kontua hunkigarri gisa markatuta silence: Kontu murriztua suspend: Kontu kanporatua welcome: edit_profile_action: Ezarri profila + edit_profile_step: Pertsonalizatu profila abatar bat igoz, zure pantaila-izena aldatuz eta gehiago. Jarraitzaile berriak onartu aurretik berrikusi nahi badituzu, kontuari giltzarrapoa jarri diezaiokezu. explanation: Hona hasteko aholku batzuk final_action: Hasi bidalketak argitaratzen + final_step: 'Hasi argitaratzen! Jarraitzailerik ez baduzu ere zure bidalketa publikoak besteek ikusi ditzakete, esaterako denbora-lerro lokalean eta traoletan. Zure burua aurkeztu nahi baduzu #aurkezpenak traola erabili zenezake.' full_handle: Zure erabiltzaile-izen osoa full_handle_hint: Hau da lagunei esango zeniekeena beste zerbitzari batetik zu jarraitzeko edo zuri mezuak bidaltzeko. subject: Ongi etorri Mastodon-era diff --git a/config/locales/fi.yml b/config/locales/fi.yml index c7ab01ab0..1033da490 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -207,6 +207,7 @@ fi: reject_user: Hylkää käyttäjä remove_avatar_user: Profiilikuvan poisto reopen_report: Uudelleenavaa raportti + resend_user: Lähetä vahvistusviesti uudelleen reset_password_user: Nollaa salasana resolve_report: Selvitä raportti sensitive_account: Pakotus arkaluontoiseksi tiliksi @@ -265,6 +266,7 @@ fi: reject_user_html: "%{name} hylkäsi käyttäjän rekisteröitymisen kohteesta %{target}" remove_avatar_user_html: "%{name} poisti käyttäjän %{target} profiilikuvan" reopen_report_html: "%{name} avasi uudelleen raportin %{target}" + resend_user_html: "%{name} lähetti vahvistusviestin sähköpostitse käyttäjälle %{target}" reset_password_user_html: "%{name} palautti käyttäjän %{target} salasanan" resolve_report_html: "%{name} ratkaisi raportin %{target}" sensitive_account_html: "%{name} merkitsi %{target} median arkaluonteiseksi" @@ -885,11 +887,11 @@ fi: hint_html: Jos haluat siirtyä toisesta tilistä tähän tiliin, voit luoda aliasin, joka on pakollinen, ennen kuin voit siirtää seuraajia vanhasta tilistä tähän tiliin. Tämä toiminto on itsessään vaaraton ja palautuva. Tilin siirtyminen aloitetaan vanhalta tililtä. remove: Poista aliaksen linkitys appearance: - advanced_web_interface: Edistynyt web-käyttöliittymä + advanced_web_interface: Edistynyt selainkäyttöliittymä advanced_web_interface_hint: 'Jos haluat käyttää koko näytön leveyttä, edistyneen web-käyttöliittymän avulla voit määrittää useita eri sarakkeita näyttämään niin paljon tietoa samanaikaisesti kuin haluat: Koti, ilmoitukset, yhdistetty aikajana, mikä tahansa määrä luetteloita ja aihetunnisteita.' animations_and_accessibility: Animaatiot ja saavutettavuus confirmation_dialogs: Vahvistusvalinnat - discovery: Löytö + discovery: Löydöt localization: body: Mastodonin ovat kääntäneet vapaaehtoiset. guide_link: https://crowdin.com/project/mastodon @@ -1249,6 +1251,8 @@ fi: carry_blocks_over_text: Tämä käyttäjä siirtyi paikasta %{acct}, jonka olit estänyt. carry_mutes_over_text: Tämä käyttäjä siirtyi paikasta %{acct}, jonka mykistit. copy_account_note_text: 'Tämä käyttäjä siirtyi paikasta %{acct}, tässä olivat aiemmat muistiinpanosi niistä:' + navigation: + toggle_menu: Avaa/sulje valikko notification_mailer: admin: report: @@ -1482,12 +1486,12 @@ fi: enabled: Poista vanhat viestit automaattisesti enabled_hint: Poistaa viestit automaattisesti, kun ne saavuttavat tietyn ikärajan, elleivät ne täsmää yhtä alla olevista poikkeuksista exceptions: Poikkeukset - explanation: Koska viestien poistaminen on kallista toimintaa. Tämä tehdään hitaasti ajan mittaan, kun palvelin ei ole muuten kiireinen. Tästä syystä viestejäsi voidaan poistaa jonkin aikaa myöhemmin, kun ne ovat saavuttaneet ikärajan. + explanation: Koska viestien poistaminen on kallista toimintaa, sitä tehdään hitaasti ajan mittaan, kun palvelin ei ole muutoin kiireinen. Viestejäsi voidaankin siis poistaa myös viiveellä verrattuna niille määrittämääsi aikarajaan. ignore_favs: Ohita suosikit ignore_reblogs: Ohita tehostukset interaction_exceptions: Poikkeukset, jotka perustuvat vuorovaikutukseen interaction_exceptions_explanation: Huomaa, että ei ole takeita viestien poistamiselle, jos ne alittavat suosikki- tai tehostusrajan sen jälkeen, kun ne on kerran ylitetty. - keep_direct: Säilytä suorat viestit + keep_direct: Säilytä yksityisviestit keep_direct_hint: Ei poista mitään sinun suoria viestejä keep_media: Säilytä viestit, joissa on liitetiedostoja keep_media_hint: Ei poista viestejä, joissa on liitteitä @@ -1495,7 +1499,7 @@ fi: keep_pinned_hint: Ei poista mitään kiinnitettyä viestiä keep_polls: Säilytä äänestykset keep_polls_hint: Ei poista yhtäkään äänestystä - keep_self_bookmark: Säilytä lisäämäsi viestit kirjanmerkkeihin + keep_self_bookmark: Säilytä kirjanmerkkeihin lisäämäsi viestit keep_self_bookmark_hint: Ei poista viestejäsi, jos olet lisännyt ne kirjanmerkkeihin keep_self_fav: Säilyttää viestit suosikeissa keep_self_fav_hint: Ei poista omia viestejäsi, jos olet lisännyt ne suosikkeihin diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 4a519c107..416d4a1eb 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -174,6 +174,7 @@ fr: confirm_user: Confirmer l’utilisateur create_account_warning: Créer une alerte create_announcement: Créer une annonce + create_canonical_email_block: Créer un blocage de domaine de courriel create_custom_emoji: Créer des émojis personnalisés create_domain_allow: Créer un domaine autorisé create_domain_block: Créer un blocage de domaine @@ -183,6 +184,7 @@ fr: create_user_role: Créer le rôle demote_user: Rétrograder l’utilisateur·ice destroy_announcement: Supprimer l’annonce + destroy_canonical_email_block: Supprimer le blocage de domaine de courriel destroy_custom_emoji: Supprimer des émojis personnalisés destroy_domain_allow: Supprimer le domaine autorisé destroy_domain_block: Supprimer le blocage de domaine @@ -205,6 +207,7 @@ fr: reject_user: Rejeter l’utilisateur remove_avatar_user: Supprimer l’avatar reopen_report: Rouvrir le signalement + resend_user: Renvoyer l'e-mail de confirmation reset_password_user: Réinitialiser le mot de passe resolve_report: Résoudre le signalement sensitive_account: Marquer les médias de votre compte comme sensibles @@ -240,6 +243,8 @@ fr: create_user_role_html: "%{name} a créé le rôle %{target}" demote_user_html: "%{name} a rétrogradé l'utilisateur·rice %{target}" destroy_announcement_html: "%{name} a supprimé l'annonce %{target}" + destroy_canonical_email_block_html: "%{name} a débloqué l'email avec le hash %{target}" + destroy_custom_emoji_html: "%{name} a supprimé l'émoji %{target}" destroy_domain_allow_html: "%{name} a rejeté la fédération avec le domaine %{target}" destroy_domain_block_html: "%{name} a débloqué le domaine %{target}" destroy_email_domain_block_html: "%{name} a débloqué le domaine de courriel %{target}" @@ -247,6 +252,7 @@ fr: destroy_ip_block_html: "%{name} a supprimé la règle pour l'IP %{target}" destroy_status_html: "%{name} a supprimé le message de %{target}" destroy_unavailable_domain_html: "%{name} a repris la livraison au domaine %{target}" + destroy_user_role_html: "%{name} a supprimé le rôle %{target}" disable_2fa_user_html: "%{name} a désactivé l'authentification à deux facteurs pour l'utilisateur·rice %{target}" disable_custom_emoji_html: "%{name} a désactivé l'émoji %{target}" disable_sign_in_token_auth_user_html: "%{name} a désactivé l'authentification basée sur les jetons envoyés par courriel pour %{target}" @@ -260,6 +266,7 @@ fr: reject_user_html: "%{name} a rejeté l’inscription de %{target}" remove_avatar_user_html: "%{name} a supprimé l'avatar de %{target}" reopen_report_html: "%{name} a rouvert le signalement %{target}" + resend_user_html: "%{name} a renvoyé l'e-mail de confirmation pour %{target}" reset_password_user_html: "%{name} a réinitialisé le mot de passe de l'utilisateur·rice %{target}" resolve_report_html: "%{name} a résolu le signalement %{target}" sensitive_account_html: "%{name} a marqué le média de %{target} comme sensible" @@ -273,6 +280,7 @@ fr: update_announcement_html: "%{name} a mis à jour l'annonce %{target}" update_custom_emoji_html: "%{name} a mis à jour l'émoji %{target}" update_domain_block_html: "%{name} a mis à jour le blocage de domaine pour %{target}" + update_ip_block_html: "%{name} a modifié la règle pour l'IP %{target}" update_status_html: "%{name} a mis à jour le message de %{target}" update_user_role_html: "%{name} a changé le rôle %{target}" empty: Aucun journal trouvé. @@ -318,6 +326,7 @@ fr: listed: Listé new: title: Ajouter un nouvel émoji personnalisé + no_emoji_selected: Aucun émoji n’a été modifié, car aucun n’a été sélectionné not_permitted: Vous n’êtes pas autorisé à effectuer cette action overwrite: Écraser shortcode: Raccourci @@ -662,9 +671,18 @@ fr: settings: about: manage_rules: Gérer les règles du serveur + preamble: Fournissez des informations détaillées sur le fonctionnement, la modération et le financement du serveur. + rules_hint: Il y a un espace dédié pour les règles auxquelles vos utilisateurs sont invités à adhérer. title: À propos appearance: + preamble: Personnaliser l'interface web de Mastodon. title: Apparence + branding: + preamble: L'image de marque de votre serveur la différencie des autres serveurs du réseau. Ces informations peuvent être affichées dans nombre d'environnements, tels que l'interface web de Mastodon, les applications natives, dans les aperçus de liens sur d'autres sites Web et dans les applications de messagerie, etc. C'est pourquoi il est préférable de garder ces informations claires, courtes et concises. + title: Thème + content_retention: + preamble: Contrôle comment le contenu créé par les utilisateurs est enregistré et stocké dans Mastodon. + title: Rétention du contenu discovery: follow_recommendations: Suivre les recommandations profile_directory: Annuaire des profils @@ -676,6 +694,7 @@ fr: disabled: À personne users: Aux utilisateur·rice·s connecté·e·s localement registrations: + preamble: Affecte qui peut créer un compte sur votre serveur. title: Inscriptions registrations_mode: modes: @@ -696,12 +715,17 @@ fr: report: Signalement deleted: Supprimé favourites: Favoris + history: Historique de version + in_reply_to: Répondre à language: Langue media: title: Médias + metadata: Metadonnés no_status_selected: Aucun message n’a été modifié car aucun n’a été sélectionné open: Ouvrir le message original_status: Message original + reblogs: Partages + status_changed: Publication modifiée title: Messages du compte trending: Tendances visibility: Visibilité @@ -744,6 +768,9 @@ fr: description_html: Ces liens sont actuellement énormément partagés par des comptes dont votre serveur voit les messages. Cela peut aider vos utilisateur⋅rice⋅s à découvrir ce qu'il se passe dans le monde. Aucun lien n'est publiquement affiché tant que vous n'avez pas approuvé le compte qui le publie. Vous pouvez également autoriser ou rejeter les liens individuellement. disallow: Interdire le lien disallow_provider: Interdire l'éditeur + no_link_selected: Aucun lien n'a été changé car aucun n'a été sélectionné + publishers: + no_publisher_selected: Aucun compte publicateur n'a été changé car aucun n'a été sélectionné shared_by_over_week: one: Partagé par %{count} personne au cours de la dernière semaine other: Partagé par %{count} personnes au cours de la dernière semaine @@ -763,6 +790,7 @@ fr: description_html: Voici les messages dont votre serveur a connaissance qui sont beaucoup partagés et mis en favoris en ce moment. Cela peut aider vos utilisateur⋅rice⋅s, néophytes comme aguerri⋅e⋅s, à trouver plus de comptes à suivre. Aucun message n'est publiquement affiché tant que vous n'en avez pas approuvé l'auteur⋅rice, et seulement si icellui permet que son compte soit suggéré aux autres. Vous pouvez également autoriser ou rejeter les messages individuellement. disallow: Proscrire le message disallow_account: Proscrire l'auteur·rice + no_status_selected: Aucune publication en tendance n'a été changée car aucune n'a été sélectionnée not_discoverable: L'auteur⋅rice n'a pas choisi de pouvoir être découvert⋅e shared_by: one: Partagé ou ajouté aux favoris une fois @@ -778,6 +806,7 @@ fr: tag_uses_measure: utilisations totales description_html: Ces hashtags apparaissent actuellement dans de nombreux messages que votre serveur voit. Cela peut aider vos utilisateur⋅rice⋅s à découvrir les sujets dont les gens parlent le plus en ce moment. Aucun hashtag n'est publiquement affiché tant que vous ne l'avez pas approuvé. listable: Peut être suggéré + no_tag_selected: Aucun tag n'a été changé car aucun n'a été sélectionné not_listable: Ne sera pas suggéré not_trendable: N'apparaîtra pas sous les tendances not_usable: Ne peut être utilisé @@ -912,6 +941,7 @@ fr: resend_confirmation: Envoyer à nouveau les consignes de confirmation reset_password: Réinitialiser le mot de passe rules: + preamble: Celles-ci sont définies et appliqués par les modérateurs de %{domain}. title: Quelques règles de base. security: Sécurité set_new_password: Définir le nouveau mot de passe @@ -1098,6 +1128,12 @@ fr: trending_now: Tendance en ce moment generic: all: Tous + all_items_on_page_selected_html: + one: "%{count} élément de cette page est sélectionné." + other: L'ensemble des %{count} éléments de cette page est sélectionné. + all_matching_items_selected_html: + one: "%{count} élément correspondant à votre recherche est sélectionné." + other: L'ensemble des %{count} éléments correspondant à votre recherche est sélectionné. changes_saved_msg: Les modifications ont été enregistrées avec succès ! copy: Copier delete: Supprimer @@ -1105,6 +1141,9 @@ fr: none: Aucun order_by: Classer par save_changes: Enregistrer les modifications + select_all_matching_items: + one: Sélectionnez %{count} élément correspondant à votre recherche. + other: Sélectionnez tous l'ensemble des %{count} éléments correspondant à votre recherche. today: aujourd’hui validation_errors: one: Quelque chose ne va pas ! Veuillez vérifiez l’erreur ci-dessous @@ -1206,6 +1245,8 @@ fr: carry_blocks_over_text: Cet utilisateur que vous aviez bloqué est parti de %{acct}. carry_mutes_over_text: Cet utilisateur que vous aviez masqué est parti de %{acct}. copy_account_note_text: 'Cet·te utilisateur·rice est parti·e de %{acct}, voici vos notes précédentes à son sujet :' + navigation: + toggle_menu: Basculer l'affichage du menu notification_mailer: admin: report: @@ -1557,8 +1598,10 @@ fr: suspend: Compte suspendu welcome: edit_profile_action: Configuration du profil + edit_profile_step: Vous pouvez personnaliser votre profil en téléchargeant une photo de profil, en changant votre nom d'utilisateur, etc. Vous pouvez opter pour le passage en revue de chaque nouvelle demande d'abonnement à chaque fois qu'un utilisateur essaie de s'abonner à votre compte. explanation: Voici quelques conseils pour vous aider à démarrer final_action: Commencez à publier + final_step: 'Commencez à publier ! Même si vous n''avez pas encore d''abonnés, vos publications sont publiques et sont accessibles par les autres, par exemple grâce à la zone horaire locale ou par les hashtags. Vous pouvez vous présenter sur le hashtag #introductions.' full_handle: Votre identifiant complet full_handle_hint: C’est ce que vous diriez à vos ami·e·s pour leur permettre de vous envoyer un message ou vous suivre à partir d’un autre serveur. subject: Bienvenue sur Mastodon diff --git a/config/locales/ga.yml b/config/locales/ga.yml index 14936b4ba..45516c4d5 100644 --- a/config/locales/ga.yml +++ b/config/locales/ga.yml @@ -1,38 +1,144 @@ --- ga: + about: + contact_unavailable: N/B + title: Maidir le accounts: + follow: Lean + following: Ag leanúint + nothing_here: Níl rud ar bith anseo! + posts: + few: Postálacha + many: Postálacha + one: Postáil + other: Postálacha + two: Postálacha posts_tab_heading: Postálacha admin: + account_actions: + action: Déan gníomh + title: Déan modhnóireacht ar %{acct} + account_moderation_notes: + create: Fág nóta accounts: + approve: Faomh are_you_sure: An bhfuil tú cinnte? + avatar: Abhatár + change_email: + current_email: Ríomhphost reatha + label: Athraigh ríomhphost + new_email: Ríomhphost nua + submit: Athraigh ríomhphost + title: Athraigh ríomhphost %{username} + change_role: + changed_msg: D'athraigh ró go rathúil! + label: Athraigh ról + no_role: Níl aon ról ann + title: Athraigh ról %{username} confirm: Deimhnigh confirmed: Deimhnithe confirming: Ag deimhniú + custom: Saincheaptha + delete: Scrios sonraí + deleted: Scriosta + demote: Ísligh + disable: Reoigh + disabled: Reoite + display_name: Ainm taispeána + edit: Cuir in eagar email: Ríomhphost email_status: Stádas ríomhphoist + enabled: Ar chumas followers: Leantóirí + follows: Ag leanúint ip: IP location: all: Uile + promote: Ardaigh public: Poiblí reject: Diúltaigh + role: Ról search: Cuardaigh statuses: Postálacha title: Cuntais + web: Gréasán announcements: live: Beo publish: Foilsigh custom_emojis: delete: Scrios + disable: Díchumasaigh + disabled: Díchumasaithe emoji: Emoji + enable: Cumasaigh list: Liosta + upload: Uaslódáil + dashboard: + software: Bogearraí + title: Deais + website: Suíomh Gréasáin + domain_blocks: + new: + severity: + silence: Ciúnaigh email_domain_blocks: delete: Scrios + follow_recommendations: + status: Stádas instances: + back_to_all: Uile content_policies: policy: Polasaí delivery: all: Uile + unavailable: Níl ar fáil + moderation: + all: Uile + invites: + filter: + all: Uile + available: Ar fáil + ip_blocks: + delete: Scrios + expires_in: + '1209600': Coicís + '15778476': 6 mhí + '2629746': Mí amháin + '31556952': Bliain amháin + '86400': Lá amháin + '94670856': 3 bhliain + relays: + delete: Scrios + disable: Díchumasaigh + disabled: Díchumasaithe + enable: Cumasaigh + enabled: Ar chumas + status: Stádas + reports: + category: Catagóir + no_one_assigned: Duine ar bith + notes: + delete: Scrios + title: Nótaí + status: Stádas + title: Tuairiscí + roles: + delete: Scrios + statuses: + account: Údar + deleted: Scriosta + language: Teanga + open: Oscail postáil + original_status: Bunphostáil + with_media: Le meáin + tags: + review: Stádas athbhreithnithe + trends: + allow: Ceadaigh + disallow: Dícheadaigh + statuses: + allow: Ceadaigh postáil + allow_account: Ceadaigh údar errors: '400': The request you submitted was invalid or malformed. '403': You don't have permission to view this page. diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 75fee0002..3ae0550f3 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -207,6 +207,7 @@ gl: reject_user: Rexeitar Usuaria remove_avatar_user: Eliminar avatar reopen_report: Reabrir denuncia + resend_user: Reenviar o email de confirmación reset_password_user: Restabelecer contrasinal resolve_report: Resolver denuncia sensitive_account: Marca o multimedia da túa conta como sensible @@ -265,6 +266,7 @@ gl: reject_user_html: "%{name} rexeitou o rexistro de %{target}" remove_avatar_user_html: "%{name} eliminou o avatar de %{target}" reopen_report_html: "%{name} reabriu a denuncia %{target}" + resend_user_html: "%{name} reenviou o email de confirmación para %{target}" reset_password_user_html: "%{name} restableceu o contrasinal da usuaria %{target}" resolve_report_html: "%{name} resolveu a denuncia %{target}" sensitive_account_html: "%{name} marcou o multimedia de %{target} como sensible" diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 008026aa4..a588d8587 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -207,6 +207,7 @@ hu: reject_user: Felhasználó Elutasítása remove_avatar_user: Profilkép eltávolítása reopen_report: Jelentés újranyitása + resend_user: Megerősítő e-mail újraküldése reset_password_user: Jelszó visszaállítása resolve_report: Jelentés megoldása sensitive_account: A fiókodban minden média kényesnek jelölése @@ -265,6 +266,7 @@ hu: reject_user_html: "%{name} elutasította %{target} regisztrációját" remove_avatar_user_html: "%{name} törölte %{target} profilképét" reopen_report_html: "%{name} újranyitotta a %{target} bejelentést" + resend_user_html: "%{name} újraküldte %{target} megerősítő e-mailjét" reset_password_user_html: "%{name} visszaállította %{target} felhasználó jelszavát" resolve_report_html: "%{name} megoldotta a %{target} bejelentést" sensitive_account_html: "%{name} kényesnek jelölte %{target} médiatartalmát" @@ -670,13 +672,16 @@ hu: about: manage_rules: Kiszolgáló szabályainak kezelése preamble: Adj meg részletes információkat arról, hogy a kiszolgáló hogyan működik, miként moderálják és finanszírozzák. + rules_hint: Van egy helyünk a szabályoknak, melyeket a felhasználóidnak be kellene tartani. title: Névjegy appearance: preamble: A Mastodon webes felületének testreszabása. title: Megjelenés branding: preamble: A kiszolgáló márkajelzése különbözteti meg a hálózat többi kiszolgálójától. Ez az információ számos környezetben megjelenhet, például a Mastodon webes felületén, natív alkalmazásokban, más weboldalakon és üzenetküldő alkalmazásokban megjelenő hivatkozások előnézetben stb. Ezért a legjobb, ha ez az információ világos, rövid és tömör. + title: Branding content_retention: + preamble: Felhasználók által generált tartalom Mastodonon való tárolásának szabályozása. title: Tartalom megtartása discovery: follow_recommendations: Ajánlottak követése diff --git a/config/locales/id.yml b/config/locales/id.yml index 5daa4addd..a26156ffa 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -204,6 +204,7 @@ id: reject_user: Tolak Pengguna remove_avatar_user: Hapus Avatar reopen_report: Buka Lagi Laporan + resend_user: Kirim Ulang Email Konfirmasi reset_password_user: Atur Ulang Kata sandi resolve_report: Selesaikan Laporan sensitive_account: Tandai media di akun Anda sebagai sensitif @@ -262,6 +263,7 @@ id: reject_user_html: "%{name} menolak pendaftaran dari %{target}" remove_avatar_user_html: "%{name} menghapus avatar %{target}" reopen_report_html: "%{name} membuka ulang laporan %{target}" + resend_user_html: "%{name} mengirim ulang konfirmasi email untuk %{target}" reset_password_user_html: "%{name} mereset kata sandi pengguna %{target}" resolve_report_html: "%{name} menyelesaikan laporan %{target}" sensitive_account_html: "%{name} menandai media %{target} sebagai sensitif" diff --git a/config/locales/is.yml b/config/locales/is.yml index 72ca95e6f..6bad0b97e 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -207,6 +207,7 @@ is: reject_user: Hafna notanda remove_avatar_user: Fjarlægja auðkennismynd reopen_report: Enduropna kæru + resend_user: Endursenda staðfestingarpóst reset_password_user: Endurstilla lykilorð resolve_report: Leysa kæru sensitive_account: Merkja myndefni á aðgangnum þínum sem viðkvæmt @@ -265,6 +266,7 @@ is: reject_user_html: "%{name} hafnaði nýskráningu frá %{target}" remove_avatar_user_html: "%{name} fjarlægði auðkennismynd af %{target}" reopen_report_html: "%{name} enduropnaði kæru %{target}" + resend_user_html: "%{name} endursendi staðfestingarpóst vegna %{target}" reset_password_user_html: "%{name} endurstillti lykilorð fyrir notandann %{target}" resolve_report_html: "%{name} leysti kæru %{target}" sensitive_account_html: "%{name} merkti myndefni frá %{target} sem viðkvæmt" diff --git a/config/locales/it.yml b/config/locales/it.yml index ed71c4026..6fa1e780c 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -207,6 +207,7 @@ it: reject_user: Rifiuta Utente remove_avatar_user: Elimina avatar reopen_report: Riapri report + resend_user: Invia di nuovo l'email di conferma reset_password_user: Reimposta password resolve_report: Risolvi report sensitive_account: Contrassegna il media nel tuo profilo come sensibile @@ -265,6 +266,7 @@ it: reject_user_html: "%{name} ha rifiutato la registrazione da %{target}" remove_avatar_user_html: "%{name} ha rimosso l'immagine profilo di %{target}" reopen_report_html: "%{name} ha riaperto il rapporto %{target}" + resend_user_html: "%{name} inviata nuovamente l'email di conferma per %{target}" reset_password_user_html: "%{name} ha reimpostato la password dell'utente %{target}" resolve_report_html: "%{name} ha risolto il rapporto %{target}" sensitive_account_html: "%{name} ha segnato il media di %{target} come sensibile" diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 5ee19aa6b..9d0a3c0ca 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -204,6 +204,7 @@ ja: reject_user: ユーザーを拒否 remove_avatar_user: アイコンを削除 reopen_report: 未解決に戻す + resend_user: 確認メールを再送信する reset_password_user: パスワードをリセット resolve_report: 通報を解決済みにする sensitive_account: アカウントのメディアを閲覧注意にマーク @@ -262,6 +263,7 @@ ja: reject_user_html: "%{target}から登録された%{name}さんを拒否しました" remove_avatar_user_html: "%{name}さんが%{target}さんのアイコンを削除しました" reopen_report_html: "%{name}さんが通報 %{target}を未解決に戻しました" + resend_user_html: "%{name} が %{target} の確認メールを再送信しました" reset_password_user_html: "%{name}さんが%{target}さんのパスワードをリセットしました" resolve_report_html: "%{name}さんが通報 %{target}を解決済みにしました" sensitive_account_html: "%{name}さんが%{target}さんのメディアを閲覧注意にマークしました" @@ -812,6 +814,7 @@ ja: webhooks: add_new: エンドポイントを追加 delete: 削除 + description_html: "Webhook により、Mastodon は選択されたイベントのリアルタイム通知をアプリケーションにプッシュします。これにより、アプリケーションは自動的に処理を行うことができます。" disable: 無効化 disabled: 無効 edit: エンドポイントを編集 @@ -822,7 +825,8 @@ ja: other: "%{count}件の有効なイベント" events: イベント new: 新しいwebhook - rotate_secret: シークレットをローテーションする + rotate_secret: シークレットをローテートする + secret: シークレットに署名 status: ステータス title: Webhooks webhook: Webhook @@ -836,6 +840,7 @@ ja: sensitive: アカウントを閲覧注意にする silence: アカウントを制限する suspend: アカウントを停止する + body: "%{target} は %{date} に行われた %{action_taken_by} による %{type} のモデレーション判定に不服を申し立てています。内容は次の通りです:" next_steps: モデレーションの決定を取り消すために申し立てを承認するか、無視することができます。 subject: "%{instance}で%{username}さんからモデレーションへの申し立てが届きました。" new_pending_account: @@ -853,6 +858,7 @@ ja: title: トレンド投稿 new_trending_tags: no_approved_tags: 承認されたトレンドハッシュタグはありません。 + requirements: 'これらの候補はいずれも %{rank} 位の承認済みトレンドハッシュタグのスコアを上回ります。現在 #%{lowest_tag_name} のスコアは %{lowest_tag_score} です。' title: トレンドハッシュタグ subject: "%{instance}で新しいトレンドが審査待ちです" aliases: @@ -1075,6 +1081,7 @@ ja: add_keyword: キーワードを追加 keywords: キーワード statuses: 個別の投稿 + statuses_hint_html: このフィルタは、以下のキーワードにマッチするかどうかに関わらず、個々の投稿を選択して適用されます。 フィルターを確認または投稿を削除。 title: フィルターを編集 errors: deprecated_api_multiple_keywords: これらのパラメータは複数のフィルタキーワードに適用されるため、このアプリケーションから変更できません。 最新のアプリケーションまたはWebインターフェースを使用してください。 @@ -1106,6 +1113,10 @@ ja: trending_now: トレンドタグ generic: all: すべて + all_items_on_page_selected_html: + other: このページの %{count} 件すべてが選択されています。 + all_matching_items_selected_html: + other: 検索条件に一致する %{count} 件すべてが選択されています。 changes_saved_msg: 正常に変更されました! copy: コピー delete: 削除 @@ -1114,7 +1125,7 @@ ja: order_by: 並び順 save_changes: 変更を保存 select_all_matching_items: - other: 検索条件に一致するすべての %{count} 個の項目を選択 + other: 検索条件に一致する %{count} 件をすべて選択 today: 今日 validation_errors: other: エラーが発生しました! 以下の%{count}件のエラーを確認してください @@ -1215,7 +1226,7 @@ ja: carry_mutes_over_text: このユーザーは、あなたがミュートしていた%{acct}から引っ越しました。 copy_account_note_text: このユーザーは%{acct}から引っ越しました。これは以前のメモです。 navigation: - toggle_menu: メニューを表示 + toggle_menu: メニューを表示 / 非表示 notification_mailer: admin: report: @@ -1562,8 +1573,8 @@ ja: welcome: edit_profile_action: プロフィールを設定 edit_profile_step: |- - プロフィール画像をアップロードしたり、ディスプレイネームを変更したりして、プロフィールをカスタマイズできます。 - 新しいフォロワーのフォローリクエストを承認される前に、新しいフォロワーの確認をオプトインすることができます。 + プロフィール画像をアップロードしたり、表示名を変更したりして、プロフィールをカスタマイズできます。 + 新しいフォロワーからフォローリクエストを承認する前に、オプトインで確認できます。 explanation: 始めるにあたってのアドバイスです final_action: 始めましょう final_step: 'さあ、始めましょう! たとえフォロワーがまだいなくても、あなたの公開した投稿はローカルタイムラインやハッシュタグなどを通じて誰かの目にとまるはずです。自己紹介をしたいときには #introductions ハッシュタグが便利かもしれません。' diff --git a/config/locales/kab.yml b/config/locales/kab.yml index 2ae6a455a..1cd5d72d6 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -598,7 +598,7 @@ kab: setup: Sbadu pagination: newer: Amaynut - next: Wayed + next: Γer zdat older: Aqbuṛ prev: Win iɛeddan preferences: @@ -672,6 +672,7 @@ kab: preferences: Imenyafen profile: Ameγnu relationships: Imeḍfaṛen akked wid i teṭṭafaṛeḍ + statuses_cleanup: Tukksa tawurmant n tsuffaɣ two_factor_authentication: Asesteb s snat n tarrayin webauthn_authentication: Tisura n teɣlist statuses: diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 3ad38d6cb..f37f3ec46 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -204,6 +204,7 @@ ko: reject_user: 사용자 거부 remove_avatar_user: 아바타 지우기 reopen_report: 신고 다시 열기 + resend_user: 확인 메일 다시 보내기 reset_password_user: 암호 재설정 resolve_report: 신고 처리 sensitive_account: 당신의 계정의 미디어를 민감함으로 표시 @@ -262,6 +263,7 @@ ko: reject_user_html: "%{name} 님이 %{target}의 가입을 거부했습니다" remove_avatar_user_html: "%{name} 님이 %{target}의 아바타를 지웠습니다" reopen_report_html: "%{name} 님이 신고 %{target}을 다시 열었습니다" + resend_user_html: "%{name} 님이 %{target} 님에 대한 확인 메일을 다시 보냈습니다" reset_password_user_html: "%{name} 님이 사용자 %{target}의 암호를 초기화했습니다" resolve_report_html: "%{name} 님이 신고 %{target}를 처리됨으로 변경하였습니다" sensitive_account_html: "%{name} 님이 %{target}의 미디어를 민감함으로 표시했습니다" diff --git a/config/locales/ku.yml b/config/locales/ku.yml index f3094f46e..af0fea556 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -207,6 +207,7 @@ ku: reject_user: Bikarhêner nepejirîne remove_avatar_user: Avatarê rake reopen_report: Ragihandina ji nû ve veke + resend_user: E-nameya pejirandinê dîsa bişîne reset_password_user: Borînpeyvê ji nû ve saz bike resolve_report: Ragihandinê çareser bike sensitive_account: Ajimêra hêz-hestiyar @@ -265,6 +266,7 @@ ku: reject_user_html: "%{name} tomarkirina ji %{target} nepejirand" remove_avatar_user_html: "%{name} avatara bikarhêner %{target} rakir" reopen_report_html: "%{name} ragihandina %{target} ji nû ve vekir" + resend_user_html: "%{name} e-nameya pejirandinê dîsa bişîne ji bo %{target}" reset_password_user_html: "%{name} borînpeyva bikarhêner %{target} ji nû ve saz kir" resolve_report_html: "%{name} ragihandina %{target} çareser kir" sensitive_account_html: "%{name} medyayê %{target} wekî hestiyarî nîşan kir" @@ -320,8 +322,8 @@ ku: enabled: Çalakkirî enabled_msg: Ev hestok bi serkeftî hate çalak kirin image_hint: Mezinahiya PNG an jî GIF digîheje heya %{size} - list: Rêzok - listed: Rêzokkirî + list: Lîste + listed: Lîstekirî new: title: Hestokên kesane yên nû lê zêde bike no_emoji_selected: Tu emojî nehatin hilbijartin ji ber vê tu şandî jî nehatin guhertin @@ -331,8 +333,8 @@ ku: shortcode_hint: Herê kêm 2 tîp, tenê tîpên alfahejmarî û yên bin xêzkirî title: Hestokên kesane uncategorized: Bêbeş - unlist: Dervî rêzokê - unlisted: Nerêzokkirî + unlist: Bêlîste + unlisted: Nelîstekirî update_failed_msg: Ev hestok nehate rojanekirin updated_msg: Emojî bi awayekî serkeftî hate rojanekirin! upload: Bar bike @@ -391,11 +393,11 @@ ku: suspend: Dur bike title: Astengkirina navpera nû obfuscate: Navê navperê biveşêre - obfuscate_hint: Heke rêzoka sînorên navperê were çalakkirin navê navperê di rêzokê de bi qismî veşêre + obfuscate_hint: Heke lîsteya sînorên navperê were çalakkirin navê navperê di lîsteyê de bi qismî veşêre private_comment: Şîroveya taybet private_comment_hint: Derbarê sînorkirina vê navperê da ji bo bikaranîna hundirîn a moderatoran şîrove bikin. public_comment: Şîroveya gelemperî - public_comment_hint: Heke reklamkirina rêzoka sînorên navperê çalak be, derbarê sînorkirina vê navperê da ji bo raya giştî şîrove bikin. + public_comment_hint: Heke reklamkirina lîsteya sînorên navperê çalak be, derbarê sînorkirina vê navperê da ji bo raya giştî şîrove bikin. reject_media: Pelên medyayê red bike reject_media_hint: Pelên medyayê herêmî hatine tomarkirin radike û di pêşerojê de daxistinê red dike. Ji bo rawstandinê ne girîng e reject_reports: Ragihandinan red bike @@ -1071,7 +1073,7 @@ ku: bookmarks: Şûnpel csv: CSV domain_blocks: Navperên astengkirî - lists: Rêzok + lists: Lîste mutes: Te bêdeng kir storage: Bîrdanaka medyayê featured_tags: @@ -1082,7 +1084,7 @@ ku: filters: contexts: account: Profîl - home: Serrûpel û rêzok + home: Serûpel û lîste notifications: Agahdarî public: Demnameya gelemperî thread: Axaftin @@ -1149,20 +1151,20 @@ ku: invalid_markup: 'di nav de nîşana HTML a nederbasdar heye: %{error}' imports: errors: - over_rows_processing_limit: ji %{count} zêdetir rêzok hene + over_rows_processing_limit: ji %{count} zêdetir lîste hene modes: merge: Bi hev re bike merge_long: Tomarên heyî bigire û yên nû lê zêde bike overwrite: Bi ser de binivsîne overwrite_long: Tomarkirinên heyî bi yên nû re biguherîne - preface: Tu dikarî têxistin ê daneyên bike ku te ji rajekareke din derxistî ye wek rêzoka kesên ku tu dişopîne an jî asteng dike. + preface: Tu dikarî têxistin ê daneyên bike ku te ji rajekareke din derxistî ye wek lîsteya kesên ku tu dişopîne an jî asteng dike. success: Daneyên te bi serkeftî hat barkirin û di dema xwe de were pêvajotin types: - blocking: Rêzoka astengkirinê + blocking: Lîsteya antengkiriyan bookmarks: Şûnpel - domain_blocking: Rêzoka navperên astengkirî - following: Rêzoka yên dişopînin - muting: Rêzoka bêdengiyê + domain_blocking: Lîsteya domaînên astengkirî + following: Lîsteyan şopîneran + muting: Lîsteya bêdengkiriyan upload: Bar bike invites: delete: Neçalak bike @@ -1471,7 +1473,7 @@ ku: private_long: Tenê bo şopîneran nîşan bide public: Gelemperî public_long: Herkes dikare bibîne - unlisted: Nerêzokkirî + unlisted: Nelîstekirî unlisted_long: Herkes dikare bibîne, lê di demnameya gelemperî de nayê rêz kirin statuses_cleanup: enabled: Şandiyên berê bi xweberî va jê bibe diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 57647b142..903b30295 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -210,6 +210,7 @@ lv: reject_user: Noraidīt lietotāju remove_avatar_user: Noņemt Avatāru reopen_report: Atkārtoti Atvērt Ziņojumu + resend_user: Atkārtoti nosūtīt Apstiprinājuma Pastu reset_password_user: Atiestatīt Paroli resolve_report: Atrisināt Ziņojumu sensitive_account: Piespiedu sensitīvizēt kontu @@ -268,6 +269,7 @@ lv: reject_user_html: "%{name} noraidīja reģistrēšanos no %{target}" remove_avatar_user_html: "%{name} noņēma %{target} avatāru" reopen_report_html: "%{name} atkārtoti atvēra ziņojumu %{target}" + resend_user_html: "%{name} atkārtoti nosūtīja apstiprinājuma e-pastu %{target}" reset_password_user_html: "%{name} atiestatīja paroli lietotājam %{target}" resolve_report_html: "%{name} atrisināja ziņojumu %{target}" sensitive_account_html: "%{name} atzīmēja %{target} mediju kā sensitīvu" diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 207376776..153655430 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -58,7 +58,7 @@ nl: demote: Degraderen destroyed_msg: De verwijdering van de gegevens van %{username} staat nu in de wachtrij disable: Bevriezen - disable_sign_in_token_auth: E-mail token authenticatie uitschakelen + disable_sign_in_token_auth: Verificatie met een toegangscode via e-mail uitschakelen disable_two_factor_authentication: 2FA uitschakelen disabled: Bevroren display_name: Weergavenaam @@ -67,7 +67,7 @@ nl: email: E-mail email_status: E-mailstatus enable: Ontdooien - enable_sign_in_token_auth: E-mail token authenticatie inschakelen + enable_sign_in_token_auth: Verificatie met een toegangscode via e-mail inschakelen enabled: Ingeschakeld enabled_msg: Het ontdooien van het account van %{username} is geslaagd followers: Volgers @@ -122,7 +122,7 @@ nl: removed_header_msg: Het verwijderen van de omslagfoto van %{username} is geslaagd resend_confirmation: already_confirmed: Deze gebruiker is al bevestigd - send: Verzend bevestigingsmail opnieuw + send: Bevestigingsmail opnieuw verzenden success: Bevestigingsmail succesvol verzonden! reset: Opnieuw reset_password: Wachtwoord opnieuw instellen @@ -196,8 +196,10 @@ nl: destroy_user_role: Rol permanent verwijderen disable_2fa_user: Tweestapsverificatie uitschakelen disable_custom_emoji: Lokale emojij uitschakelen + disable_sign_in_token_auth_user: Verificatie met een toegangscode via e-mail voor de gebruiker uitschakelen disable_user: Gebruiker uitschakelen enable_custom_emoji: Lokale emoji inschakelen + enable_sign_in_token_auth_user: Verificatie met een toegangscode via e-mail voor de gebruiker inschakelen enable_user: Gebruiker inschakelen memorialize_account: Het account in een In memoriam veranderen promote_user: Gebruiker promoveren @@ -205,6 +207,7 @@ nl: reject_user: Gebruiker afwijzen remove_avatar_user: Avatar verwijderen reopen_report: Rapportage heropenen + resend_user: Bevestigingsmail opnieuw verzenden reset_password_user: Wachtwoord opnieuw instellen resolve_report: Rapportage oplossen sensitive_account: De media in jouw account als gevoelig markeren @@ -252,8 +255,10 @@ nl: destroy_user_role_html: "%{name} verwijderde de rol %{target}" disable_2fa_user_html: De vereiste tweestapsverificatie voor %{target} is door %{name} uitgeschakeld disable_custom_emoji_html: Emoji %{target} is door %{name} uitgeschakeld + disable_sign_in_token_auth_user_html: "%{name} heeft verificatie met een toegangscode via e-mail uitgeschakeld voor %{target}" disable_user_html: Inloggen voor %{target} is door %{name} uitgeschakeld enable_custom_emoji_html: Emoji %{target} is door %{name} ingeschakeld + enable_sign_in_token_auth_user_html: "%{name} heeft verificatie met een toegangscode via e-mail ingeschakeld voor %{target}" enable_user_html: Inloggen voor %{target} is door %{name} ingeschakeld memorialize_account_html: Het account %{target} is door %{name} in een In memoriam veranderd promote_user_html: Gebruiker %{target} is door %{name} gepromoveerd @@ -261,12 +266,14 @@ nl: reject_user_html: "%{name} heeft de registratie van %{target} afgewezen" remove_avatar_user_html: "%{name} verwijderde de avatar van %{target}" reopen_report_html: "%{name} heeft rapportage %{target} heropend" + resend_user_html: "%{name} heeft de bevestigingsmail voor %{target} opnieuw verzonden" reset_password_user_html: Wachtwoord van gebruiker %{target} is door %{name} opnieuw ingesteld resolve_report_html: "%{name} heeft rapportage %{target} opgelost" sensitive_account_html: "%{name} markeerde de media van %{target} als gevoelig" silence_account_html: Account %{target} is door %{name} beperkt suspend_account_html: Account %{target} is door %{name} opgeschort unassigned_report_html: "%{name} heeft het toewijzen van rapportage %{target} ongedaan gemaakt" + unblock_email_account_html: "%{name} deblokkeerde het e-mailadres van %{target}" unsensitive_account_html: "%{name} markeerde media van %{target} als niet gevoelig" unsilence_account_html: Beperking van account %{target} is door %{name} opgeheven unsuspend_account_html: Opschorten van account %{target} is door %{name} opgeheven @@ -372,6 +379,7 @@ nl: destroyed_msg: Domeinblokkade is ongedaan gemaakt domain: Domein edit: Domeinblokkade bewerken + existing_domain_block: Je hebt al strengere limieten opgelegd aan %{name}. existing_domain_block_html: Jij hebt al strengere beperkingen opgelegd aan %{name}, je moet het domein eerst deblokkeren. new: create: Blokkade aanmaken @@ -409,6 +417,7 @@ nl: create: Blokkeren resolve: Domein opzoeken title: Nieuw e-maildomein blokkeren + no_email_domain_block_selected: Er werden geen e-maildomeinblokkades gewijzigd, omdat er geen enkele werd geselecteerd resolved_dns_records_hint_html: De domeinnaam slaat op de volgende MX-domeinen die uiteindelijk verantwoordelijk zijn voor het accepteren van e-mail. Het blokkeren van een MX-domein blokkeert aanmeldingen van elk e-mailadres dat hetzelfde MX-domein gebruikt, zelfs als de zichtbare domeinnaam anders is. Pas op dat u geen grote e-mailproviders blokkeert. resolved_through_html: Geblokkeerd via %{domain} title: Geblokkeerde e-maildomeinen @@ -422,6 +431,7 @@ nl: unsuppress: Account weer aanbevelen instances: availability: + failure_threshold_reached: Foutieve drempelwaarde bereikt op %{date}. failures_recorded: one: Mislukte poging op %{count} dag. other: Mislukte pogingen op %{count} verschillende dagen. @@ -432,6 +442,7 @@ nl: back_to_limited: Beperkt back_to_warning: Waarschuwing by_domain: Domein + confirm_purge: Weet je zeker dat je de gegevens van dit domein permanent wilt verwijderen? content_policies: comment: Interne reden description_html: Je kunt het beleid bepalen dat op de accounts van dit domein en alle subdomeinen van toepassing is. @@ -462,6 +473,7 @@ nl: delivery_available: Bezorging is mogelijk delivery_error_days: Dagen met bezorgfouten delivery_error_hint: Wanneer de bezorging voor %{count} dagen niet mogelijk is, wordt de bezorging automatisch als niet beschikbaar gemarkeerd. + destroyed_msg: Gegevens van %{domain} staan nu in de wachtrij voor aanstaande verwijdering. empty: Geen domeinen gevonden. known_accounts: one: "%{count} bekend account" @@ -473,12 +485,14 @@ nl: private_comment: Privé-opmerking public_comment: Openbare opmerking purge: Volledig verwijderen + purge_description_html: Als je denkt dat dit domein definitief offline is, kunt je alle accountrecords en bijbehorende gegevens van dit domein verwijderen. Dit kan een tijdje duren. title: Federatie total_blocked_by_us: Door ons geblokkeerd total_followed_by_them: Door hun gevolgd total_followed_by_us: Door ons gevolgd total_reported: Rapportages over hun total_storage: Mediabijlagen + totals_time_period_hint_html: De hieronder getoonde totalen bevatten gegevens sinds het begin. invites: deactivate_all: Alles deactiveren filter: @@ -531,6 +545,10 @@ nl: other: "%{count} opmerkingen" action_log: Auditlog action_taken_by: Actie uitgevoerd door + actions: + delete_description_html: De gerapporteerde berichten worden verwijderd en er wordt een overtreding geregistreerd om toekomstige overtredingen van hetzelfde account sneller af te kunnen handelen. + mark_as_sensitive_description_html: De media in de gerapporteerde berichten worden gemarkeerd als gevoelig en er wordt een overtreding geregistreerd om toekomstige overtredingen van hetzelfde account sneller af te kunnen handelen. + silence_description_html: Het profiel zal alleen zichtbaar zijn voor diegenen die het al volgen of het handmatig opzoeken, waardoor het bereik ernstig wordt beperkt. Kan altijd worden teruggedraaid. add_to_report: Meer aan de rapportage toevoegen are_you_sure: Weet je het zeker? assign_to_self: Aan mij toewijzen @@ -539,6 +557,7 @@ nl: category: Category comment: none: Geen + comment_description_html: 'Om meer informatie te verstrekken, schreef %{name}:' created_at: Gerapporteerd op delete_and_resolve: Bericht verwijderen forwarded: Doorgestuurd @@ -554,6 +573,8 @@ nl: delete: Verwijderen placeholder: Beschrijf welke acties zijn ondernomen of andere gerelateerde opmerkingen… title: Opmerkingen + notes_description_html: Bekijk en laat opmerkingen achter voor andere moderatoren en voor jouw toekomstige zelf + quick_actions_description_html: 'Onderneem een snelle actie of scroll naar beneden om de gerapporteerde inhoud te zien:' remote_user_placeholder: de externe gebruiker van %{instance} reopen: Rapportage heropenen report: 'Rapportage #%{id}' @@ -582,6 +603,7 @@ nl: moderation: Moderatie special: Speciaal delete: Verwijderen + description_html: Met gebruikersrollen kunt je aanpassen op welke functies en gebieden van Mastodon jouw gebruikers toegang hebben. edit: Rol '%{name}' bewerken everyone: Standaardrechten everyone_full_description_html: Dit is de basisrol die van toepassing is op alle gebruikers, zelfs voor diegenen zonder toegewezen rol. Alle andere rollen hebben de rechten van deze rol als minimum. @@ -590,25 +612,45 @@ nl: other: "%{count} rechten" privileges: administrator: Beheerder + administrator_description: Deze gebruikers hebben volledige rechten en kun dus overal bij delete_user_data: Gebruikersgegevens verwijderen + delete_user_data_description: Staat gebruikers toe om de gegevens van andere gebruikers zonder vertraging te verwijderen invite_users: Gebruikers uitnodigen + invite_users_description: Staat gebruikers toe om nieuwe mensen voor de server uit te nodigen manage_announcements: Aankondigingen beheren + manage_announcements_description: Staat gebruikers toe om mededelingen op de server te beheren manage_appeals: Bezwaren afhandelen + manage_appeals_description: Staat gebruikers toe om bewaren tegen moderatie-acties te beoordelen manage_blocks: Blokkades beheren + manage_blocks_description: Staat gebruikers toe om e-mailproviders en IP-adressen te blokkeren manage_custom_emojis: Lokale emoji's beheren + manage_custom_emojis_description: Staat gebruikers toe om lokale emoji's op de server te beheren manage_federation: Federatie beheren + manage_federation_description: Staat gebruikers toe om federatie met andere domeinen te blokkeren of toe te staan en om de bezorging te bepalen manage_invites: Uitnodigingen beheren + manage_invites_description: Staat gebruikers toe om uitnodigingslinks te bekijken en te deactiveren manage_reports: Rapportages afhandelen + manage_reports_description: Sta gebruikers toe om rapporten te bekijken om actie tegen hen te nemen manage_roles: Rollen beheren + manage_roles_description: Staat gebruikers toe om rollen te beheren en toe te wijzen die minder rechten hebben dan hun eigen rol(len) manage_rules: Serverregels wijzigen + manage_rules_description: Staat gebruikers toe om serverregels te wijzigen manage_settings: Server-instellingen wijzigen + manage_settings_description: Staat gebruikers toe de instellingen van de site te wijzigen manage_taxonomies: Trends en hashtags beheren + manage_taxonomies_description: Staat gebruikers toe om trending inhoud te bekijken en om hashtag-instellingen bij te werken manage_user_access: Gebruikerstoegang beheren + manage_user_access_description: Staat gebruikers toe om tweestapsverificatie van andere gebruikers uit te schakelen, om hun e-mailadres te wijzigen en om hun wachtwoord opnieuw in te stellen manage_users: Gebruikers beheren + manage_users_description: Staat gebruikers toe om gebruikersdetails van anderen te bekijken en moderatie-acties tegen hen uit te voeren manage_webhooks: Webhooks beheren + manage_webhooks_description: Staat gebruikers toe om webhooks voor beheertaken in te stellen view_audit_log: Auditlog bekijken + view_audit_log_description: Staat gebruikers toe om een geschiedenis van beheeracties op de server te bekijken view_dashboard: Dashboard bekijken + view_dashboard_description: Geeft gebruikers toegang tot het dashboard en verschillende statistieken view_devops: Devops + view_devops_description: Geeft gebruikers toegang tot de dashboards van Sidekiq en pgHero title: Rollen rules: add_new: Regel toevoegen @@ -620,6 +662,8 @@ nl: settings: about: manage_rules: Serverregels beheren + preamble: Geef uitgebreide informatie over hoe de server wordt beheerd, gemodereerd en gefinancierd. + rules_hint: Er is een speciaal gebied voor regels waaraan uw gebruikers zich dienen te houden. title: Over appearance: preamble: Mastodons webomgeving aanpassen. @@ -679,7 +723,11 @@ nl: with_media: Met media strikes: actions: - delete_statuses: "%{name} heeft de toots van %{target} verwijderd" + delete_statuses: "%{name} heeft de berichten van %{target} verwijderd" + disable: Account %{target} is door %{name} bevroren + mark_statuses_as_sensitive: "%{name} markeerde de berichten van %{target} als gevoelig" + none: "%{name} verzond een waarschuwing naar %{target}" + sensitive: "%{name} markeerde het account van %{target} als gevoelig" silence: "%{name} beperkte het account %{target}" suspend: "%{name} schortte het account %{target} op" appeal_approved: Bezwaar ingediend @@ -687,6 +735,8 @@ nl: system_checks: database_schema_check: message_html: Niet alle databasemigraties zijn voltooid. Je moet deze uitvoeren om er voor te zorgen dat de applicatie blijft werken zoals het hoort + elasticsearch_running_check: + message_html: Kon geen verbinding maken met Elasticsearch. Controleer dat Elasticsearch wordt uitgevoerd of schakel full-text-zoeken uit elasticsearch_version_check: message_html: 'Incompatibele Elasticsearch-versie: %{value}' version_comparison: Je gebruikt Elasticsearch %{running_version}, maar %{required_version} is vereist @@ -721,6 +771,7 @@ nl: pending_review: In afwachting van beoordeling preview_card_providers: allowed: Links van deze website kunnen trending worden + description_html: Dit zijn domeinen waarvan links vaak worden gedeeld op jouw server. Links zullen niet in het openbaar verlopen, maar niet als het domein van de link wordt goedgekeurd. Jouw goedkeuring (of afwijzing) strekt zich uit tot subdomeinen. rejected: Links naar deze nieuwssite kunnen niet trending worden title: Websites rejected: Afgekeurd @@ -731,6 +782,9 @@ nl: disallow_account: Account afkeuren no_status_selected: Er werden geen trending berichten gewijzigd, omdat er geen enkele werd geselecteerd not_discoverable: Gebruiker heeft geen toestemming gegeven om vindbaar te zijn + shared_by: + one: Een keer gedeeld of als favoriet gemarkeerd + other: "%{friendly_count} keer gedeeld of als favoriet gemarkeerd" title: Trending berichten tags: current_score: Huidige score is %{score} @@ -745,10 +799,15 @@ nl: not_listable: Wordt niet aanbevolen not_trendable: Zal niet onder trends verschijnen not_usable: Kan niet worden gebruikt + peaked_on_and_decaying: Piekte op %{date} en is nu weer op diens retour title: Trending hashtags trendable: Kan onder trends verschijnen trending_rank: 'Trending #%{rank}' usable: Kan worden gebruikt + usage_comparison: "%{today} keer vandaag gebruikt, vergeleken met %{yesterday} keer gisteren" + used_by_over_week: + one: Door één persoon tijdens de afgelopen week gebruikt + other: Door %{count} mensen tijdens de afgelopen week gebruikt title: Trends trending: Trending warning_presets: @@ -763,6 +822,7 @@ nl: disable: Uitschakelen disabled: Uitgeschakeld edit: Eindpunt bewerken + empty: Je hebt nog geen webhook-eindpunten geconfigureerd. enable: Inschakelen enabled: Ingeschakeld enabled_events: @@ -796,11 +856,13 @@ nl: body_remote: Iemand van %{domain} heeft %{target} gerapporteerd subject: Nieuwe rapportage op %{instance} (#%{id}) new_trends: + body: 'De volgende items moeten worden beoordeeld voordat ze openbaar kunnen worden getoond:' new_trending_links: title: Trending links new_trending_statuses: title: Trending berichten new_trending_tags: + no_approved_tags: Op dit moment zijn er geen goedgekeurde hashtags. title: Trending hashtags subject: Nieuwe trends te beoordelen op %{instance} aliases: @@ -1052,7 +1114,7 @@ nl: batch: remove: Uit het filter verwijderen index: - hint: Dit filter is van toepassing om individuele berichten te selecteren, ongeacht andere critiria. Je kunt in de webomgeving meer berichten aan dit filter toevoegen. + hint: Dit filter is van toepassing om individuele berichten te selecteren, ongeacht andere criteria. Je kunt in de webomgeving meer berichten aan dit filter toevoegen. title: Gefilterde berichten footer: trending_now: Trends @@ -1175,6 +1237,8 @@ nl: carry_blocks_over_text: Deze gebruiker is verhuisd vanaf %{acct}. Je hebt dat account geblokkeerd. carry_mutes_over_text: Deze gebruiker is verhuisd vanaf %{acct}. Je hebt dat account genegeerd. copy_account_note_text: 'Deze gebruiker is verhuisd vanaf %{acct}. Je hebt de volgende opmerkingen over dat account gemaakt:' + navigation: + toggle_menu: Menu tonen/verbergen notification_mailer: admin: report: @@ -1250,7 +1314,7 @@ nl: too_many_options: kan niet meer dan %{max} items bevatten preferences: other: Overig - posting_defaults: Standaardinstellingen voor posten + posting_defaults: Standaardinstellingen voor berichten public_timelines: Openbare tijdlijnen privacy_policy: title: Privacybeleid diff --git a/config/locales/nn.yml b/config/locales/nn.yml index b989db081..068e5d5ff 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -5,13 +5,14 @@ nn: contact_missing: Ikkje sett contact_unavailable: I/T hosted_on: "%{domain} er vert for Mastodon" + title: Om accounts: follow: Fylg followers: one: Fylgjar other: Fylgjarar following: Fylgjer - instance_actor_flash: Denne kontoen er en virtuell figur som brukes til å representere selve serveren og ikke noen individuell bruker. Den brukes til forbundsformål og bør ikke oppheves. + instance_actor_flash: Denne kontoen er ein virtuell figur som nyttast som representant for tenaren, og ikkje som individuell brukar. Den nyttast til forbundsformål og bør ikkje suspenderast. last_active: sist aktiv link_verified_on: Eigarskap for denne lenkja vart sist sjekka %{date} nothing_here: Her er det ingenting! @@ -32,29 +33,32 @@ nn: accounts: add_email_domain_block: Gøym e-postdomene approve: Godtak - approved_msg: Godkjent %{username} sin registreringsapplikasjon + approved_msg: Godkjende %{username} sin registreringssøknad are_you_sure: Er du sikker? avatar: Bilete by_domain: Domene change_email: + changed_msg: Konto-e-posten er endra! current_email: Noverande e-post label: Byt e-post new_email: Ny e-post submit: Byt e-post title: Byt e-post for %{username} change_role: + changed_msg: Rolle endra! label: Endre rolle no_role: Inga rolle title: Endre rolle for %{username} confirm: Stadfest confirmed: Stadfesta confirming: Stadfestar + custom: Tilpassa delete: Slett data deleted: Sletta demote: Degrader - destroyed_msg: "%{username} sine data er nå i kø for å bli slettet minimum" + destroyed_msg: "%{username} sine data er no i slettekøa" disable: Slå av - disable_sign_in_token_auth: Deaktiver e-post token autentisering + disable_sign_in_token_auth: Slå av e-post token autentisering disable_two_factor_authentication: Slå av 2FA disabled: Slege av display_name: Synleg namn @@ -63,14 +67,14 @@ nn: email: E-post email_status: E-poststatus enable: Slå på - enable_sign_in_token_auth: Aktiver godkjenning av e-post token + enable_sign_in_token_auth: Slå på e-post token autentisering enabled: Aktivert - enabled_msg: Frossent %{username} sin konto + enabled_msg: Gjenaktiverte %{username} sin konto followers: Fylgjarar follows: Fylgje header: Overskrift inbox_url: Innbokslenkje - invite_request_text: Begrunnelse for å bli med + invite_request_text: Grunngjeving for å bli med invited_by: Innboden av ip: IP-adresse joined: Vart med @@ -82,12 +86,13 @@ nn: login_status: Innlogginsstatus media_attachments: Medievedlegg memorialize: Gjør om til et minne - memorialized: Minnet - memorialized_msg: Vellykket gjort av %{username} til en minnestedet + memorialized: Minna + memorialized_msg: Endra %{username} til ei minneside moderation: active: Aktiv all: Alle pending: Ventar på svar + silenced: Avgrensa suspended: Utvist title: Moderasjon moderation_notes: Moderasjonsmerknader @@ -95,21 +100,26 @@ nn: most_recent_ip: Nyast IP no_account_selected: Ingen kontoar vart endra sidan ingen var valde no_limits_imposed: Ingen grenser sett + no_role_assigned: Inga rolle tildelt not_subscribed: Ikkje tinga pending: Ventar på gjennomgang perform_full_suspension: Utvis + previous_strikes: Tidlegare prikkar + previous_strikes_description_html: + one: Denne kontoen har ein prikk. + other: Denne kontoen har %{count} prikkar. promote: Frem protocol: Protokoll public: Offentleg push_subscription_expires: PuSH-abonnent utløper redownload: Last inn profil på nytt - redownloaded_msg: Oppdatert %{username} sin profil fra opprinnelse + redownloaded_msg: Oppdaterte %{username} sin profil frå opphavstenar reject: Avvis - rejected_msg: Vellykket avvist %{username} sin registreringsapplikasjon + rejected_msg: Avviste %{username} sin registreringssøknad remove_avatar: Fjern bilete remove_header: Fjern overskrift - removed_avatar_msg: Fjernet %{username} sitt avatarbilde - removed_header_msg: Fjernet %{username} sin topptekst bilde + removed_avatar_msg: Fjerna %{username} sitt avatarbilete + removed_header_msg: Fjerna %{username} sitt toppbilete resend_confirmation: already_confirmed: Denne brukaren er allereie stadfesta send: Send stadfestings-e-posten på nytt @@ -124,7 +134,8 @@ nn: security_measures: only_password: Kun passord password_and_2fa: Passord og 2FA - sensitized: Merket som følsom + sensitive: Tving sensitiv + sensitized: Avmerka som følsom shared_inbox_url: Delt Innboks URL show: created_reports: Rapportar frå denne kontoen @@ -132,12 +143,17 @@ nn: silence: Togn silenced: Dempa statuses: Statusar + strikes: Tidlegare prikkar subscribe: Ting + suspend: Utvis og slett kontodata for godt suspended: Utvist - suspension_irreversible: Dataene fra denne kontoen har blitt ikke reverserbart slettet. Du kan oppheve suspenderingen av kontoen for å gjøre den brukbart, men den vil ikke gjenopprette alle data den tidligere har hatt. - suspension_reversible_hint_html: Kontoen har blitt suspendert, og dataene vil bli fullstendig fjernet den %{date}. Frem til da kan kontoen gjenopprettes uten negative effekter. Hvis du ønsker å fjerne alle kontoens data umiddelbart, kan du gjøre det nedenfor. + suspension_irreversible: Data frå denne kontoen har blitt ikkje-reverserbart sletta. Du kan oppheve suspenderinga av kontoen for å bruke den, men det vil ikkje gjenopprette alle data den tidligare har hatt. + suspension_reversible_hint_html: Kontoen har blitt suspendert, og data vil bli fullstendig fjerna den %{date}. Fram til då kan kontoen gjenopprettes uten negative effekter. Om du ynskjer å fjerne kontodata no, kan du gjere det nedanfor. title: Kontoar + unblock_email: Avblokker e-postadresse + unblocked_email_msg: Avblokkerte %{username} si e-postadresse unconfirmed_email: E-post utan stadfesting + undo_sensitized: Gjør om tving sensitiv undo_silenced: Angr målbinding undo_suspension: Angr utvising unsilenced_msg: Opphevde vellykket begrensningen av %{username} sin konto @@ -150,50 +166,97 @@ nn: whitelisted: Kvitlista action_logs: action_types: - approve_user: Godkjenn bruker + approve_appeal: Godkjenn appell + approve_user: Godkjenn brukar assigned_to_self_report: Tilordne rapport change_email_user: Byt e-post for brukar + change_role_user: Endre brukarrolle confirm_user: Stadfest brukar create_account_warning: Opprett åtvaring create_announcement: Opprett lysing + create_canonical_email_block: Opprett e-post-blokkering create_custom_emoji: Opprett tilpassa emoji create_domain_allow: Opprett domene tillatt create_domain_block: Opprett domene-blokk create_email_domain_block: Opprett e-post domeneblokk create_ip_block: Opprett IP-regel + create_unavailable_domain: Opprett utilgjengeleg domene + create_user_role: Opprett rolle demote_user: Degrader brukar destroy_announcement: Slett lysinga + destroy_canonical_email_block: Slett e-post-blokkering destroy_custom_emoji: Slett tilpassa emoji destroy_domain_allow: Slett domenegodkjenning destroy_domain_block: Slett domenesperring destroy_email_domain_block: Slett e-postdomenesperring + destroy_instance: Slett domene destroy_ip_block: Slett IP-regel destroy_status: Slett status + destroy_unavailable_domain: Slett utilgjengeleg domene + destroy_user_role: Øydelegg rolle disable_2fa_user: Skruv av 2FA disable_custom_emoji: Skruv av tilpassa emoji + disable_sign_in_token_auth_user: Slå av e-post tokenautentisering for brukar disable_user: Skruv av brukar enable_custom_emoji: Skruv på tilpassa emoji + enable_sign_in_token_auth_user: Slå på e-post tokenautentisering for brukar enable_user: Skruv på brukar + memorialize_account: Opprett minnekonto promote_user: Forfrem brukar - reject_user: Avvis bruker + reject_appeal: Avvis appell + reject_user: Avvis brukar remove_avatar_user: Fjern avatar reopen_report: Opn rapport opp att + resend_user: Send stadfestings-epost på ny reset_password_user: Tilbakestill passord resolve_report: Løs rapport + sensitive_account: Tvangsfølsom konto silence_account: Demp konto suspend_account: Suspender kontoen + unassigned_report: Fjern tilordna rapport + unblock_email_account: Avblokker e-postadresse + unsensitive_account: Angre tvangsfølsom konto + unsilence_account: Angre avgrensing av konto unsuspend_account: Opphev suspensjonen av kontoen update_announcement: Oppdater kunngjøringen update_custom_emoji: Oppdater tilpassa emoji + update_domain_block: Oppdater domene-sperring + update_ip_block: Oppdater IP-regel update_status: Oppdater tut + update_user_role: Oppdater rolla actions: - approve_user_html: "%{name} godkjente registrering fra %{target}" - create_custom_emoji_html: "%{name} lastet opp ny emoji %{target}" - create_domain_allow_html: "%{name} tillatt føderasjon med domenet %{target}" - create_domain_block_html: "%{name} blokkert domene %{target}" - create_email_domain_block_html: "%{name} blokkert e-post domene %{target}" - create_ip_block_html: "%{name} opprettet regel for IP %{target}" + approve_appeal_html: "%{name} godkjende klagen frå %{target} på modereringa" + approve_user_html: "%{name} godkjende registreringa til %{target}" + assigned_to_self_report_html: "%{name} tildelte rapport %{target} til seg sjølv" + change_email_user_html: "%{name} endra e-postadressa til brukaren %{target}" + change_role_user_html: "%{name} endra rolla til %{target}" + confirm_user_html: "%{name} stadfesta e-postadressa til brukaren %{target}" + create_account_warning_html: "%{name} sende ei åtvaring til %{target}" + create_announcement_html: "%{name} oppretta ei ny kunngjering %{target}" + create_canonical_email_block_html: "%{name} blokkerte e-post med hash %{target}" + create_custom_emoji_html: "%{name} lasta opp ein ny emoji %{target}" + create_domain_allow_html: "%{name} tillot føderasjon med domenet %{target}" + create_domain_block_html: "%{name} blokkerte domenet %{target}" + create_email_domain_block_html: "%{name} blokkerte e-postdomenet %{target}" + create_ip_block_html: "%{name} oppretta ein regel for IP-en %{target}" + create_unavailable_domain_html: "%{name} stogga levering til domenet %{target}" + create_user_role_html: "%{name} oppretta rolla %{target}" + demote_user_html: "%{name} degraderte brukaren %{target}" + destroy_announcement_html: "%{name} sletta kunngjeringa %{target}" + destroy_canonical_email_block_html: "%{name} avblokkerte e-post med hash %{target}" + destroy_custom_emoji_html: "%{name} sletta emojien %{target}" + destroy_domain_allow_html: "%{name} forbydde føderasjon med domenet %{target}" + destroy_domain_block_html: "%{name} avblokkerte domenet %{target}" + destroy_email_domain_block_html: "%{name} avblokkerte e-postdomenet %{target}" + destroy_instance_html: "%{name} tømde domenet %{target}" + destroy_ip_block_html: "%{name} sletta ein regel for IP-en %{target}" + destroy_status_html: "%{name} fjerna innlegget frå %{target}" + destroy_unavailable_domain_html: "%{name} tok opp att levering til domenet %{target}" + destroy_user_role_html: "%{name} sletta rolla %{target}" + disable_2fa_user_html: "%{name} tok vekk krav om tofaktorautentisering for brukaren %{target}" + disable_custom_emoji_html: "%{name} deaktiverte emojien %{target}" reject_user_html: "%{name} avslo registrering fra %{target}" + reset_password_user_html: "%{name} tilbakestilte passordet for brukaren %{target}" silence_account_html: "%{name} begrenset %{target} sin konto" empty: Ingen loggar funne. filter_by_action: Sorter etter handling @@ -233,10 +296,12 @@ nn: enable: Slå på enabled: Slege på enabled_msg: Aktiverte kjensleteikn + image_hint: PNG eller GIF opp til %{size} list: Oppfør listed: Oppført new: title: Legg til eige kjensleteikn + no_emoji_selected: Ingen emojiar vart endra sidan ingen vart valde not_permitted: Du har ikkje løyve til å utføra denne handlinga overwrite: Skriv over shortcode: Stuttkode @@ -249,7 +314,7 @@ nn: updated_msg: Kjensleteiknet er oppdatert! upload: Last opp dashboard: - active_users: aktive brukere + active_users: aktive brukarar interactions: interaksjoner media_storage: Medialagring new_users: nye brukere @@ -303,6 +368,7 @@ nn: new: create: Legg til domene title: Ny blokkeringsoppføring av e-postdomene + resolved_through_html: Løyst gjennom %{domain} title: Blokkerte e-postadresser follow_recommendations: description_html: "Følg anbefalinger hjelper nye brukere med å finne interessant innhold. Når en bruker ikke har kommunisert med andre nok til å danne personlig tilpassede følger anbefalinger, anbefales disse kontoene i stedet. De beregnes daglig på nytt fra en blanding av kontoer der de høyeste engasjementene er og med høyest lokal tilhenger for et gitt språk." @@ -944,10 +1010,33 @@ nn: public_long: Alle kan sjå unlisted: Ikkje oppført unlisted_long: Alle kan sjå, men ikkje oppført på offentlege tidsliner + statuses_cleanup: + keep_pinned: Behald festa innlegg + keep_pinned_hint: Sletter ingen av dine festa innlegg + keep_polls: Behald røystingar + keep_polls_hint: Sletter ingen av dine røystingar + keep_self_bookmark: Behald bokmerka innlegg + keep_self_bookmark_hint: Sletter ikkje dine eigne innlegg om du har bokmerka dei + keep_self_fav: Behald innlegg som favoritt + keep_self_fav_hint: Sletter ikkje dine eigne innlegg om du har favorittmerka dei + min_age: + '1209600': 2 veker + '15778476': 6 månader + '2629746': 1 månad + '31556952': 1 år + '5259492': 2 månader + '604800': 1 veke + '63113904': 2 år + '7889238': 3 månader + min_age_label: Aldersterskel + min_favs_hint: Sletter ingen av dine innlegg som har mottatt minst dette antalet favorittmerkingar. Lat vere blank for å slette innlegg uavhengig av antal favorittmerkingar stream_entries: pinned: Festa tut reblogged: framheva sensitive_content: Følsomt innhold + strikes: + errors: + too_late: Det er for seint å klage på denne prikken tags: does_not_match_previous_name: stemmar ikkje med det førre namnet themes: @@ -974,10 +1063,36 @@ nn: recovery_instructions_html: Hvis du skulle miste tilgang til telefonen din, kan du bruke en av gjenopprettingskodene nedenfor til å gjenopprette tilgang til din konto. Oppbevar gjenopprettingskodene sikkert, for eksempel ved å skrive dem ut og gjemme dem på et lurt sted bare du vet om. webauthn: Sikkerhetsnøkler user_mailer: + appeal_approved: + action: Gå til din konto + explanation: Apellen på prikken mot din kontor på %{strike_date} som du la inn på %{appeal_date} har blitt godkjend. Din konto er nok ein gong i god stand. + title: Anke godkjend + appeal_rejected: + title: Anke avvist backup_ready: explanation: Du ba om en fullstendig sikkerhetskopi av Mastodon-kontoen din. Den er nå klar for nedlasting! subject: Arkivet ditt er klart til å lastes ned + suspicious_sign_in: + change_password: endre passord + details: 'Her er påloggingsdetaljane:' + explanation: Vi har oppdaga ei pålogging til din konto frå ei ny IP-adresse. + further_actions_html: Om dette ikkje var deg, tilrår vi at du %{action} no og aktiverar 2-trinnsinnlogging for å halde kontoen din sikker. + subject: Din konto er opna frå ei ny IP-adresse + title: Ei ny pålogging warning: + appeal: Send inn anke + appeal_description: Om du meiner dette er ein feil, kan du sende inn ei klage til gjengen i %{instance}. + categories: + spam: Søppelpost + violation: Innhald bryter følgjande retningslinjer + explanation: + delete_statuses: Nokre av innlegga dine er bryt éin eller fleire retningslinjer, og har så blitt fjerna av moderatorene på %{instance}. + disable: Du kan ikkje lenger bruke kontoen, men profilen din og andre data er intakt. Du kan be om ein sikkerhetskopi av dine data, endre kontoinnstillingar eller slette din konto. + sensitive: Frå no av vil alle dine opplasta mediefiler bli markert som sensitive og skjult bak ei klikk-åtvaring. + silence: Medan kontoen din er avgrensa, vil berre folk som allereie fylgjer deg sjå dine tutar på denne tenaren, og du kan bli ekskludert fra diverse offentlige oppføringer. Andre kan framleis fylgje deg manuelt. + suspend: Du kan ikkje lenger bruke kontoen din, og profilen og andre data er ikkje lenger tilgjengelege. Du kan framleis logge inn for å be om ein sikkerheitskopi av data før dei blir fullstendig sletta om omtrent 30 dagar, men vi beheld nokre grunnleggjande data for å forhindre deg å omgå suspenderinga. + reason: 'Årsak:' + statuses: 'Innlegg sitert:' subject: disable: Kontoen din, %{acct}, har blitt fryst none: Åtvaring for %{acct} diff --git a/config/locales/no.yml b/config/locales/no.yml index 09dcc93c7..7c3867994 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -170,6 +170,7 @@ reject_user: Avvis bruker remove_avatar_user: Fjern Avatar reopen_report: Gjenåpne rapporten + resend_user: Send e-post med bekreftelse på nytt reset_password_user: Tilbakestill passord resolve_report: Løs rapport silence_account: Demp konto diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 5a6dd0ecb..4698bedc2 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -7,19 +7,19 @@ pl: hosted_on: Mastodon uruchomiony na %{domain} title: O nas accounts: - follow: Śledź + follow: Obserwuj followers: few: śledzących many: śledzących one: śledzący - other: Śledzących - following: śledzonych + other: obserwujących + following: Obserwowanych instance_actor_flash: To konto jest wirtualnym profilem używanym do reprezentowania samego serwera, a nie żadnego indywidualnego użytkownika. Jest ono stosowane do celów federacji i nie powinien być zawieszany. last_active: ostatnio aktywny(-a) link_verified_on: Własność tego odnośnika została sprawdzona %{date} nothing_here: Niczego tu nie ma! pin_errors: - following: Musisz śledzić osobę, którą chcesz polecać + following: Musisz obserwować osobę, którą chcesz polecać posts: few: wpisy many: wpisów @@ -74,8 +74,8 @@ pl: enable_sign_in_token_auth: Włącz uwierzytelnianie tokenu e-mail enabled: Aktywowano enabled_msg: Pomyślnie odblokowano konto %{username} - followers: Śledzący - follows: Śledzeni + followers: Obserwujący + follows: Obserwowani header: Nagłówek inbox_url: Adres skrzynki invite_request_text: Powody rejestracji @@ -213,6 +213,7 @@ pl: reject_user: Odrzuć użytkownika remove_avatar_user: Usuń awatar reopen_report: Otwórz zgłoszenie ponownie + resend_user: Wyślij ponownie e-mail potwierdzający reset_password_user: Resetuj hasło resolve_report: Rozwiąż zgłoszenie sensitive_account: Oznacz zawartość multimedialną swojego konta jako wrażliwą @@ -271,6 +272,7 @@ pl: reject_user_html: "%{name} odrzucił rejestrację od %{target}" remove_avatar_user_html: "%{name} usunął(-ęła) awatar użytkownikowi %{target}" reopen_report_html: "%{name} otworzył(a) ponownie zgłoszenie %{target}" + resend_user_html: "%{name} ponownie wysłał(a) e-mail z potwierdzeniem dla %{target}" reset_password_user_html: "%{name} przywrócił(a) hasło użytkownikowi %{target}" resolve_report_html: "%{name} rozwiązał(a) zgłoszenie %{target}" sensitive_account_html: "%{name} oznaczył(a) zawartość multimedialną %{target} jako wrażliwą" @@ -397,7 +399,7 @@ pl: create: Utwórz blokadę hint: Blokada domen nie zabroni tworzenia wpisów kont w bazie danych, ale pozwoli na automatyczną moderację kont do nich należących. severity: - desc_html: "Wyciszenie uczyni wpisy użytkownika widoczne tylko dla osób, które go śledzą. Zawieszenie spowoduje usunięcie całej zawartości dodanej przez użytkownika. Użyj Żadne, jeżeli chcesz jedynie odrzucać zawartość multimedialną." + desc_html: "Wyciszenie uczyni wpisy użytkownika widoczne tylko dla osób, które go obserwują. Zawieszenie spowoduje usunięcie całej zawartości dodanej przez użytkownika. Użyj Żadne, jeżeli chcesz jedynie odrzucać zawartość multimedialną." noop: Nic nie rób silence: Wycisz suspend: Zawieś @@ -436,13 +438,13 @@ pl: resolved_through_html: Rozwiązano przez %{domain} title: Blokowanie domen e-mail follow_recommendations: - description_html: "Polecane śledzenia pomagają nowym użytkownikom szybko odnaleźć interesujące treści. Jeżeli użytkownik nie wchodził w interakcje z innymi wystarczająco często, aby powstały spersonalizowane rekomendacje, polecane są te konta. Są one obliczane każdego dnia na podstawie kombinacji kont o największej liczbie niedawnej aktywności i największej liczbie lokalnych obserwatorów dla danego języka." + description_html: "Polecane obserwacje pomagają nowym użytkownikom szybko odnaleźć interesujące treści. Jeżeli użytkownik nie wchodził w interakcje z innymi wystarczająco często, aby powstały spersonalizowane rekomendacje, polecane są te konta. Są one obliczane każdego dnia na podstawie kombinacji kont o największej liczbie niedawnej aktywności i największej liczbie lokalnych obserwatorów dla danego języka." language: Dla języka status: Stan - suppress: Usuń polecenie śledzenia + suppress: Usuń polecenie obserwacji suppressed: Usunięto title: Polecane konta - unsuppress: Przywróć polecenie śledzenia konta + unsuppress: Przywróć polecenie obserwacji konta instances: availability: description_html: @@ -476,10 +478,10 @@ pl: reason: Powód publiczny title: Polityki zawartości dashboard: - instance_accounts_dimension: Najczęściej śledzone konta + instance_accounts_dimension: Najczęściej obserwowane konta instance_accounts_measure: przechowywane konta - instance_followers_measure: nasi śledzący tam - instance_follows_measure: ich śledzący tutaj + instance_followers_measure: nasi obserwujący tam + instance_follows_measure: ich obserwujący tutaj instance_languages_dimension: Najpopularniejsze języki instance_media_attachments_measure: przechowywane załączniki multimedialne instance_reports_measure: zgłoszenia dotyczące ich @@ -511,8 +513,8 @@ pl: purge_description_html: Jeśli uważasz, że ta domena została zamknięta na dobre, możesz usunąć wszystkie rejestry konta i powiązane dane z tej domeny z pamięci. Proces ten może chwilę potrwać. title: Znane instancje total_blocked_by_us: Zablokowane przez nas - total_followed_by_them: Śledzeni przez nich - total_followed_by_us: Śledzeni przez nas + total_followed_by_them: Obserwowani przez nich + total_followed_by_us: Obserwowani przez nas total_reported: Zgłoszenia dotyczące ich total_storage: Załączniki multimedialne totals_time_period_hint_html: Poniższe sumy zawierają dane od początku serwera. @@ -544,7 +546,7 @@ pl: relays: add_new: Dodaj nowy delete: Usuń - description_html: "Przekaźnik federacji jest pośredniczącym serwerem wymieniającym duże ilości publicznych wpisów pomiędzy serwerami które subskrybują je i publikują na nich. Pomaga to małym i średnim instancją poznawać nową zawartość z Fediwersum, co w innym przypadku wymagałoby od użytkowników ręcznego śledzenia osób z innych serwerów." + description_html: "Przekaźnik federacji jest pośredniczącym serwerem wymieniającym duże ilości publicznych wpisów pomiędzy serwerami które subskrybują je i publikują na nich. Pomaga to małym i średnim instancją poznawać nową zawartość z Fediwersum, co w innym przypadku wymagałoby od użytkowników ręcznej obserwacji osób z innych serwerów." disable: Wyłącz disabled: Wyłączony enable: Włącz @@ -710,7 +712,7 @@ pl: preamble: Kontroluj, jak treści generowane przez użytkownika są przechowywane w Mastodon. title: Retencja treści discovery: - follow_recommendations: Postępuj zgodnie z zaleceniami + follow_recommendations: Polecane konta preamble: Prezentowanie interesujących treści ma kluczowe znaczenie dla nowych użytkowników, którzy mogą nie znać nikogo z Mastodona. Kontroluj, jak różne funkcje odkrywania działają na Twoim serwerze. profile_directory: Katalog profilów public_timelines: Publiczne osie czasu @@ -816,7 +818,7 @@ pl: statuses: allow: Zezwól na post allow_account: Zezwól na autora - description_html: Są to wpisy, o których Twój serwer wie i które są obecnie często udostępniane i dodawane do ulubionych. Może to pomóc nowym i powracającym użytkownikom znaleźć więcej osób do śledzenia. Żadne posty nie są wyświetlane publicznie, dopóki nie zatwierdzisz autora, a autor ustawi zezwolenie na wyświetlanie się w katalogu. Możesz również zezwolić lub odrzucić poszczególne posty. + description_html: Są to wpisy, o których Twój serwer wie i które są obecnie często udostępniane i dodawane do ulubionych. Może to pomóc nowym i powracającym użytkownikom znaleźć więcej osób do obserwacji. Żadne posty nie są wyświetlane publicznie, dopóki nie zatwierdzisz autora, a autor ustawi zezwolenie na wyświetlanie się w katalogu. Możesz również zezwolić lub odrzucić poszczególne posty. disallow: Nie zezwalaj na post disallow_account: Nie zezwalaj na autora no_status_selected: Żadne popularne wpisy nie zostały zmienione, ponieważ żadnych nie wybrano @@ -954,7 +956,7 @@ pl: description: prefix_invited_by_user: "@%{name} zaprasza Cię do dołączenia na ten serwer Mastodona!" prefix_sign_up: Zarejestruj się na Mastodon już dziś! - suffix: Mając konto, możesz śledzić ludzi, publikować wpisy i wymieniać się wiadomościami z użytkownikami innych serwerów Mastodona i nie tylko! + suffix: Mając konto, możesz obserwować ludzi, publikować wpisy i wymieniać się wiadomościami z użytkownikami innych serwerów Mastodona i nie tylko! didnt_get_confirmation: Nie otrzymałeś(-aś) instrukcji weryfikacji? dont_have_your_security_key: Nie masz klucza bezpieczeństwa? forgot_password: Nie pamiętasz hasła? @@ -997,17 +999,17 @@ pl: too_fast: Zbyt szybko przesłano formularz, spróbuj ponownie. use_security_key: Użyj klucza bezpieczeństwa authorize_follow: - already_following: Już śledzisz to konto - already_requested: Już wysłałeś(-aś) prośbę o możliwość śledzenia tego konta + already_following: Już obserwujesz to konto + already_requested: Już wysłałeś(-aś) prośbę o możliwość obserwowania tego konta error: Niestety, podczas sprawdzania zdalnego konta wystąpił błąd - follow: Śledź - follow_request: 'Wysłano prośbę o pozwolenie na śledzenie:' - following: 'Pomyślnie! Od teraz śledzisz:' + follow: Obsewuj + follow_request: 'Wysłano prośbę o możliwość obserwowania:' + following: 'Pomyślnie! Od teraz obserwujesz:' post_follow: close: Ewentualnie, możesz po prostu zamknąć tę stronę. return: Pokaż stronę użytkownika web: Przejdź do sieci - title: Śledź %{acct} + title: Obserwuj %{acct} challenge: confirm: Kontynuuj hint_html: "Informacja: Nie będziemy prosić Cię o ponowne podanie hasła przez następną godzinę." @@ -1212,13 +1214,13 @@ pl: merge_long: Zachowaj obecne wpisy i dodaj nowe overwrite: Nadpisz overwrite_long: Zastąp obecne wpisy nowymi - preface: Możesz zaimportować pewne dane (np. lista kont, które śledzisz lub blokujesz) do swojego konta na tym serwerze, korzystając z danych wyeksportowanych z innego serwera. + preface: Możesz zaimportować pewne dane (np. lista kont, które obserwujesz lub blokujesz) do swojego konta na tym serwerze, korzystając z danych wyeksportowanych z innego serwera. success: Twoje dane zostały załadowane i zostaną niebawem przetworzone types: blocking: Lista blokowanych bookmarks: Zakładki domain_blocking: Lista zablokowanych domen - following: Lista śledzonych + following: Lista obserwowanych muting: Lista wyciszonych upload: Załaduj invites: @@ -1267,7 +1269,7 @@ pl: migrations: acct: nazwa@domena nowego konta cancel: Anuluj przekierowanie - cancel_explanation: Anulowanie przekierowania aktywuje Twoje obecne konto ponownie, ale nie przeniesie z powrotem śledzących, których przeniesiono na tamto konto. + cancel_explanation: Anulowanie przekierowania aktywuje Twoje obecne konto ponownie, ale nie przeniesie z powrotem obserwujących, których przeniesiono na tamto konto. cancelled_msg: Pomyślnie anulowano przekierowanie. errors: already_moved: jest tym samym kontem, na które już się przeniosłeś(-aś) @@ -1275,10 +1277,10 @@ pl: move_to_self: nie może być bieżącym kontem not_found: nie mogło zostać odnalezione on_cooldown: Nie możesz teraz przenieść konta - followers_count: Śledzący w chwili przenoszenia + followers_count: Obserwujący w chwili przenoszenia incoming_migrations: Przenoszenie z innego konta incoming_migrations_html: Aby przenieść się z innego konta na to, musisz najpierw utworzyć alias konta. - moved_msg: Twoje konto przekierowuje teraz na %{acct}, a śledzący są przenoszeni. + moved_msg: Twoje konto przekierowuje teraz na %{acct}, a obserwujący są przenoszeni. not_redirecting: Twoje konto nie przekierowuje obecnie na żadne inne konto. on_cooldown: Ostatnio przeniosłeś(-aś) swoje konto. Ta funkcja będzie dostępna ponownie za %{count} dni. past_migrations: Poprzednie migracje @@ -1291,7 +1293,7 @@ pl: before: 'Zanim kontynuujesz, przeczytaj uważnie te uwagi:' cooldown: Po przeniesieniu się, istnieje okres przez który nie możesz ponownie się przenieść disabled_account: Twoje obecne konto nie będzie później całkowicie użyteczne. Możesz jednak uzyskać dostęp do eksportu danych i ponownie aktywować je. - followers: To działanie przeniesie wszystkich Twoich śledzących z obecnego konta na nowe + followers: To działanie przeniesie wszystkich Twoich obserwujących z obecnego konta na nowe only_redirect_html: Możesz też po prostu skonfigurować przekierowanie na swój profil. other_data: Żadne inne dane nie zostaną automatycznie przeniesione redirect: Twoje obecne konto zostanie uaktualnione o informację o przeniesieniu i wyłączone z wyszukiwania @@ -1314,14 +1316,14 @@ pl: subject: "%{name} lubi Twój wpis" title: Nowe polubienie follow: - body: "%{name} Cię śledzi!" - subject: "%{name} Cię śledzi" - title: Nowy śledzący + body: "%{name} Cię obserwuje!" + subject: "%{name} Cię obserwuje" + title: Nowy obserwujący follow_request: - action: Zarządzaj prośbami o możliwość śledzenia - body: "%{name} poprosił(a) o możliwość śledzenia Cię" - subject: 'Prośba o możliwość śledzenia: %{name}' - title: Nowa prośba o możliwość śledzenia + action: Zarządzaj prośbami o możliwość obserwacji + body: "%{name} poprosił(a) o możliwość obserwowania Cię" + subject: 'Prośba o możliwość obserwowania: %{name}' + title: Nowa prośba o możliwość obsewowania mention: action: Odpowiedz body: "%{name} wspomniał(a) o Tobie w:" @@ -1389,9 +1391,9 @@ pl: relationships: activity: Aktywność konta dormant: Uśpione - follow_selected_followers: Zacznij śledzić wybranych śledzących - followers: Śledzący - following: Śledzeni + follow_selected_followers: Zacznij obserwować wybranych obserwujących + followers: Obserwujący + following: Obserwowani invited: Zaproszeni last_active: Ostatnia aktywność most_recent: Ostatnie @@ -1399,9 +1401,9 @@ pl: mutual: Wspólna primary: Jednostronna relationship: Relacja - remove_selected_domains: Usuń wszystkich śledzących z zaznaczonych domen - remove_selected_followers: Usuń zaznaczonych śledzących - remove_selected_follows: Przestań śledzić zaznaczonych użytkowników + remove_selected_domains: Usuń wszystkich obserwujących z zaznaczonych domen + remove_selected_followers: Usuń zaznaczonych obserwujących + remove_selected_follows: Przestań obserwować zaznaczonych użytkowników status: Stan konta remote_follow: missing_resource: Nie udało się znaleźć adresu przekierowania z Twojej domeny @@ -1477,7 +1479,7 @@ pl: notifications: Powiadomienia preferences: Preferencje profile: Profil - relationships: Śledzeni i śledzący + relationships: Obserwowani i obserwujący statuses_cleanup: Automatyczne usuwanie posta strikes: Ostrzeżenia moderacyjne two_factor_authentication: Uwierzytelnianie dwuetapowe @@ -1538,8 +1540,8 @@ pl: title: '%{name}: "%{quote}"' visibilities: direct: Bezpośredni - private: Tylko dla śledzących - private_long: Widoczne tylko dla osób, które Cię śledzą + private: Tylko dla obserwujących + private_long: Widoczne tylko dla osób, które Cię obserwują public: Publiczne public_long: Widoczne dla wszystkich użytkowników unlisted: Niewypisane @@ -1644,7 +1646,7 @@ pl: disable: Nie możesz już używać swojego konta, ale Twój profil i inne dane pozostają nienaruszone. Możesz poprosić o kopię swoich danych, zmienić ustawienia konta lub usunąć swoje konto. mark_statuses_as_sensitive: Niektóre z Twoich postów zostały oznaczone jako wrażliwe przez moderatorów %{instance}. Oznacza to, że ludzie będą musieli dotknąć mediów w postach przed wyświetleniem podglądu. Możesz oznaczyć media jako wrażliwe podczas publikowania w przyszłości. sensitive: Od teraz wszystkie przesłane pliki multimedialne będą oznaczone jako wrażliwe i ukryte za ostrzeżeniem kliknięcia. - silence: Kiedy Twoje konto jest ograniczone, tylko osoby, które je śledzą, będą widzieć Twoje wpisy. Może ono też przestać być widoczne w funkcjach odkrywania. Inni wciąż mogą zacząć Cię śledzić. + silence: Kiedy Twoje konto jest ograniczone, tylko osoby, które je obserwują, będą widzieć Twoje wpisy. Może ono też przestać być widoczne w funkcjach odkrywania. Inni wciąż mogą zacząć Cię obserwować. suspend: Nie możesz już używać Twojego konta, a Twój profil i inne dane nie są już dostępne. Zanim w pełni usuniemy Twoje dane po około 30 dniach, możesz nadal zalogować się, aby uzyskać ich kopię. Zachowamy pewne podstawowe dane, aby zapobiegać obchodzeniu przez Ciebie zawieszenia. reason: 'Powód:' statuses: 'Cytowane posty:' @@ -1666,16 +1668,16 @@ pl: suspend: Konto zawieszone welcome: edit_profile_action: Skonfiguruj profil - edit_profile_step: Możesz dostosować profil wysyłając awatar, zmieniając wyświetlaną nazwę i o wiele więcej. Jeżeli chcesz, możesz również włączyć przeglądanie i ręczne akceptowanie nowych zgłoszeń śledzenia Twojego profilu. + edit_profile_step: Możesz dostosować profil wysyłając awatar, zmieniając wyświetlaną nazwę i o wiele więcej. Jeżeli chcesz, możesz również włączyć przeglądanie i ręczne akceptowanie nowych próśb o możliwość obserwacji Twojego profilu. explanation: Kilka wskazówek, które pomogą Ci rozpocząć final_action: Zacznij pisać - final_step: 'Zacznij tworzyć! Nawet jeżeli nikt Cię nie śledzi, Twoje publiczne wiadomości będą widziane przez innych, na przykład na lokalnej osi czasu i w hashtagach. Możesz też utworzyć wpis wprowadzający używając hashtagu #introductions.' + final_step: 'Zacznij tworzyć! Nawet jeżeli nikt Cię nie obserwuje, Twoje publiczne wiadomości będą widziane przez innych, na przykład na lokalnej osi czasu i w hashtagach. Możesz też utworzyć wpis wprowadzający używając hashtagu #introductions.' full_handle: Twój pełny adres - full_handle_hint: Ten adres możesz podać znajomym, aby mogli skontaktować się z Tobą lub zacząć śledzić z innego serwera. + full_handle_hint: Ten adres możesz podać znajomym, aby mogli skontaktować się z Tobą lub zacząć obserwować z innego serwera. subject: Witaj w Mastodonie title: Witaj na pokładzie, %{name}! users: - follow_limit_reached: Nie możesz śledzić więcej niż %{limit} osób + follow_limit_reached: Nie możesz obserwować więcej niż %{limit} osób invalid_otp_token: Kod uwierzytelniający jest niepoprawny otp_lost_help_html: Jeżeli utracisz dostęp do obu, możesz skontaktować się z %{email} seamless_external_login: Zalogowano z użyciem zewnętrznej usługi, więc ustawienia hasła i adresu e-mail nie są dostępne. diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 032187a34..4b6206f20 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -702,6 +702,7 @@ pt-BR: language: Idioma media: title: Mídia + metadata: Metadados no_status_selected: Nenhum status foi modificado porque nenhum estava selecionado title: Toots da conta with_media: Com mídia diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index d1f29a92b..8413c642a 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -207,6 +207,7 @@ pt-PT: reject_user: Rejeitar Utilizador remove_avatar_user: Remover Imagem de Perfil reopen_report: Reabrir Denúncia + resend_user: Reenviar E-mail de Confirmação reset_password_user: Repor Password resolve_report: Resolver Denúncia sensitive_account: Marcar a media na sua conta como sensível @@ -265,6 +266,7 @@ pt-PT: reject_user_html: "%{name} rejeitou a inscrição de %{target}" remove_avatar_user_html: "%{name} removeu a imagem de perfil de %{target}" reopen_report_html: "%{name} reabriu a denúncia %{target}" + resend_user_html: "%{name} reenviou e-mail de confirmação para %{target}" reset_password_user_html: "%{name} restabeleceu a palavra-passe do utilizador %{target}" resolve_report_html: "%{name} resolveu a denúncia %{target}" sensitive_account_html: "%{name} marcou a media de %{target} como sensível" diff --git a/config/locales/simple_form.af.yml b/config/locales/simple_form.af.yml index a52c53eba..82dffa42f 100644 --- a/config/locales/simple_form.af.yml +++ b/config/locales/simple_form.af.yml @@ -2,6 +2,8 @@ af: simple_form: hints: + announcement: + scheduled_at: Los blanko om die aankondiging onmiddelik te publiseer webhook: events: Kies gebeurtenisse om te stuur url: Waarheen gebeurtenisse gestuur sal word diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml index 1ed63a99a..0c1a3dcc8 100644 --- a/config/locales/simple_form.ar.yml +++ b/config/locales/simple_form.ar.yml @@ -65,8 +65,6 @@ ar: domain: سيكون بإمكان هذا النطاق جلب البيانات من هذا الخادم ومعالجة وتخزين البيانات الواردة منه email_domain_block: with_dns_records: سوف تُبذل محاولة لحل سجلات DNS الخاصة بالنطاق المعني، كما ستُمنع النتائج - featured_tag: - name: 'رُبَّما تريد·ين استخدام واحد مِن بين هذه:' form_admin_settings: site_contact_username: كيف يمكن للناس أن يصلوا إليك في ماستدون. form_challenge: diff --git a/config/locales/simple_form.ast.yml b/config/locales/simple_form.ast.yml index 7c5400f94..b22fc9ee5 100644 --- a/config/locales/simple_form.ast.yml +++ b/config/locales/simple_form.ast.yml @@ -13,7 +13,7 @@ ast: setting_show_application: L'aplicación qu'uses pa espublizar apaez na vista detallada de los tos artículos username: El nome d'usuariu va ser únicu en %{domain} featured_tag: - name: 'Quiciabes quieras usar unu d''estos:' + name: 'Equí hai dalgunes de les etiquetes qu''usesti apocayá:' form_challenge: current_password: Tas entrando nuna área segura imports: diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index a21fd78cd..2fd51bfea 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -36,7 +36,7 @@ ca: context: Un o diversos contextos en què s'ha d'aplicar el filtre current_password: Per motius de seguretat, introdueix la contrasenya del compte actual current_username: Per confirmar-ho, introdueix el nom d'usuari del compte actual - digest: Només s'envia després d'un llarg període d'inactivitat amb un resum de les mencions que has rebut en la teva absència + digest: Només s'envia després d'un llarg període d'inactivitat i només si has rebut algun missatge personal durant la teva absència discoverable: Permet que el teu compte sigui descobert per desconeguts a través de recomanacions, etiquetes i altres característiques email: Se t'enviarà un correu electrònic de confirmació fields: Pots tenir fins a 4 elements que es mostren com a taula al teu perfil @@ -67,9 +67,9 @@ ca: domain: Aquest pot ser el nom del domini que es mostra en l'adreça de correu o el registre MX que utilitza. Es revisaran ql registrar-se. with_dns_records: Es procurarà resoldre els registres DNS del domini determinat i els resultats també es llistaran a la llista negra featured_tag: - name: 'És possible que vulguis utilitzar una d''aquestes:' + name: 'Aquí estan algunes de les etiquetes que més has usat recentment:' filters: - action: Tria quina acció cal executar quan una publicació coincideixi amb el filtre + action: Tria quina acció cal executar quan un apunt coincideixi amb el filtre actions: hide: Ocultar completament el contingut filtrat, comportant-se com si no existís warn: Oculta el contingut filtrat rera un avís mencionant el títol del filtre @@ -246,6 +246,12 @@ ca: site_extended_description: Descripció ampliada site_short_description: Descripció del servidor site_terms: Política de Privacitat + site_title: Nom del servidor + theme: Tema per defecte + thumbnail: Miniatura del servidor + timeline_preview: Permet l'accés no autenticat a les línies de temps públiques + trendable_by_default: Permet tendències sense revisió prèvia + trends: Activa les tendències interactions: must_be_follower: Bloqueja les notificacions de persones que no em segueixen must_be_following: Bloqueja les notificacions de persones no seguides diff --git a/config/locales/simple_form.ckb.yml b/config/locales/simple_form.ckb.yml index 32fda85a4..9ce9ac065 100644 --- a/config/locales/simple_form.ckb.yml +++ b/config/locales/simple_form.ckb.yml @@ -57,8 +57,6 @@ ckb: domain: ئەم دۆمەینە دەتوانێت دراوە لە ئەم ڕاژە وەربگرێت و دراوەی ئەم دۆمەینە لێرە ڕێکدەخرین و پاشکەوت دەکرێن email_domain_block: with_dns_records: هەوڵێک بۆ چارەسەرکردنی تۆمارەکانی DNSی دۆمەین دراوە کە ئەنجامەکان بلۆک دەکرێت - featured_tag: - name: 'لەوانەیە بتەوێت یەکێک لەمانە بەکاربهێنیت:' form_challenge: current_password: تۆ دەچیتە ناو ناوچەی پارێزراو imports: diff --git a/config/locales/simple_form.co.yml b/config/locales/simple_form.co.yml index 576feb031..79e5837d4 100644 --- a/config/locales/simple_form.co.yml +++ b/config/locales/simple_form.co.yml @@ -55,8 +55,6 @@ co: domain: Stu duminiu puderà ricuperà i dati di stu servore è i dati ch'affaccanu da quallà saranu trattati è cunservati email_domain_block: with_dns_records: Un tintativu di cunsultà i dati DNS di u duminiu sarà fattu, è i risultati saranu ancu messi nant'à a lista nera - featured_tag: - name: 'Pudete vulè utilizà unu di quelli:' form_challenge: current_password: Entrate in in una zona sicurizata imports: diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index a7dce2b67..afa12a1d2 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -66,8 +66,6 @@ cs: email_domain_block: domain: Toto může být doménové jméno, které je v e-mailové adrese nebo MX záznam, který používá. Budou zkontrolovány při registraci. with_dns_records: Dojde k pokusu o překlad DNS záznamů dané domény a výsledky budou rovněž zablokovány - featured_tag: - name: 'Nejspíš budete chtít použít jeden z těchto:' filters: action: Vyberte jakou akci provést, když příspěvek odpovídá filtru actions: @@ -81,10 +79,12 @@ cs: custom_css: Můžete použít vlastní styly ve verzi Mastodonu. media_cache_retention_period: Stažené mediální soubory budou po zadaném počtu dní odstraněny, pokud je nastavena kladná hodnota, a na požádání znovu staženy. profile_directory: Adresář profilu obsahuje seznam všech uživatelů, kteří se přihlásili, aby mohli být nalezeni. + require_invite_text: Pokud přihlášení vyžaduje ruční schválení, měl by být textový vstup „Proč se chcete připojit?“ povinný spíše než volitelný site_contact_username: Jak vás lidé mohou oslovit na Mastodon. site_extended_description: Jakékoli další informace, které mohou být užitečné pro návštěvníky a vaše uživatele. Může být strukturováno pomocí Markdown syntaxe. site_terms: Použijte vlastní zásady ochrany osobních údajů nebo ponechte prázdné pro použití výchozího nastavení. Může být strukturováno pomocí Markdown syntaxe. thumbnail: Přibližně 2:1 obrázek zobrazený vedle informací o vašem serveru. + trends: Trendy zobrazují, které příspěvky, hashtagy a zprávy získávají na serveru pozornost. form_challenge: current_password: Vstupujete do zabezpečeného prostoru imports: diff --git a/config/locales/simple_form.cy.yml b/config/locales/simple_form.cy.yml index b0217cfe3..111429257 100644 --- a/config/locales/simple_form.cy.yml +++ b/config/locales/simple_form.cy.yml @@ -56,8 +56,6 @@ cy: email_domain_block: domain: Gall hwn fod yr enw parth sy'n ymddangos yn y cyfeiriad e-bost neu'r cofnod MX y mae'n ei ddefnyddio. Byddant yn cael eu gwirio wrth gofrestru. with_dns_records: Bydd ceisiad i adfer cofnodau DNS y parth penodol yn cael ei wneud, a bydd y canlyniadau hefyd yn cael ei gosbrestru - featured_tag: - name: 'Efallai hoffech defnyddio un o''r rhain:' form_challenge: current_password: Rydych chi'n mynd i mewn i ardal sicr imports: diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index 0c63e5133..b5cb9c6a2 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -66,8 +66,6 @@ da: email_domain_block: domain: Dette kan være domænenavnet vist i den benyttede i e-mailadresse eller MX-post. Begge tjekkes under tilmelding. with_dns_records: Et forsøg på at opløse det givne domænes DNS-poster foretages, og resultaterne blokeres ligeledes - featured_tag: - name: 'Et af flg. ønskes måske anvendt:' filters: action: Vælg handlingen til eksekvering, når et indlæg matcher filteret actions: diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index 20600c878..8fe509cb8 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -8,7 +8,7 @@ de: acct: Gib den benutzernamen@domain des Kontos an, zu dem du umziehen möchtest account_warning_preset: text: Du kannst Beitragssyntax benutzen, wie z.B. URLs, Hashtags und Erwähnungen - title: Freiwillige Angabe. Die Accounts können dies nicht sehen + title: Optional. Für den Empfänger nicht sichtbar admin_account_action: include_statuses: Der Benutzer wird sehen, welche Beiträge diese Maßnahme verursacht haben send_email_notification: Benutzer_in wird Bescheid gegeben, was mit dem Konto geschehen ist @@ -67,7 +67,7 @@ de: domain: Dies kann der Domänenname sein, der in der E-Mail-Adresse oder dem von ihm verwendeten MX-Eintrag angezeigt wird. Er wird bei der Anmeldung überprüft. with_dns_records: Ein Versuch, die DNS-Einträge der Domain aufzulösen, wurde unternommen, und diese Ergebnisse werden unter anderem auch blockiert featured_tag: - name: 'Du möchtest vielleicht einen von diesen benutzen:' + name: 'Hier sind ein paar Hashtags, die du in letzter Zeit am häufigsten genutzt hast:' filters: action: Wählen Sie, welche Aktion ausgeführt werden soll, wenn ein Beitrag dem Filter entspricht actions: @@ -123,7 +123,7 @@ de: color: Die Farbe, die für die Rolle im gesamten UI verwendet wird, als RGB im Hexformat highlighted: Dies macht die Rolle öffentlich sichtbar name: Öffentlicher Name der Rolle, wenn die Rolle als Abzeichen angezeigt werden soll - permissions_as_keys: Benutzer mit dieser Rolle haben Zugriff auf... + permissions_as_keys: Benutzer mit dieser Rolle haben Zugriff auf … position: Die höhere Rolle entscheidet über die Konfliktlösung in bestimmten Situationen. Bestimmte Aktionen können nur in Rollen mit geringerer Priorität ausgeführt werden webhook: events: Zu sendende Ereignisse auswählen @@ -148,7 +148,7 @@ de: types: disable: Deaktivieren none: Nichts tun - sensitive: Inhaltswarnung (NSFW) + sensitive: Inhaltswarnung silence: Stummschalten suspend: Deaktivieren und Benutzerdaten unwiderruflich löschen warning_preset_id: Benutze eine Warnungsvorlage @@ -236,7 +236,7 @@ de: custom_css: Benutzerdefiniertes CSS mascot: Benutzerdefiniertes Maskottchen (Legacy) media_cache_retention_period: Aufbewahrungsfrist für den Medien-Cache - profile_directory: Benutzerliste aktivieren + profile_directory: Profilverzeichnis aktivieren registrations_mode: Wer kann sich registrieren require_invite_text: Grund für den Beitritt verlangen show_domain_blocks: Zeige Domain-Blockaden diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml index 9ef776059..c68fd4799 100644 --- a/config/locales/simple_form.el.yml +++ b/config/locales/simple_form.el.yml @@ -63,7 +63,7 @@ el: email_domain_block: with_dns_records: Θα γίνει απόπειρα ανάλυσης των εγγραφών DNS του τομέα και τα αποτελέσματα θα μπουν και αυτά σε μαύρη λίστα featured_tag: - name: 'Ίσως να θες να χρησιμοποιήσεις μια από αυτές:' + name: 'Εδώ είναι μερικά από τα hashtags που χρησιμοποιήσατε περισσότερο πρόσφατα:' form_challenge: current_password: Μπαίνεις σε ασφαλή περιοχή imports: diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml index 507650674..48e2c780e 100644 --- a/config/locales/simple_form.eo.yml +++ b/config/locales/simple_form.eo.yml @@ -60,8 +60,6 @@ eo: whole_word: Kiam la vorto aŭ frazo estas nur litera aŭ cifera, ĝi estos uzata nur se ĝi kongruas kun la tuta vorto domain_allow: domain: Ĉi tiu domajno povos akiri datumon de ĉi tiu servilo kaj envenanta datumo estos prilaborita kaj konservita - featured_tag: - name: 'Vi povus uzi iun el la jenaj:' filters: actions: warn: Kaŝi la enhavon filtritan malantaŭ averto mencianta la nomon de la filtro diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml index 49b09ace4..39c5e9674 100644 --- a/config/locales/simple_form.es-AR.yml +++ b/config/locales/simple_form.es-AR.yml @@ -67,7 +67,7 @@ es-AR: domain: Este puede ser el nombre de dominio que aparece en la dirección de correo electrónico o el registro MX que se use. Se revisarán al registrarse. with_dns_records: Se hará un intento de resolver los registros DNS del dominio dado y los resultados serán también bloqueados featured_tag: - name: 'Puede que quieras usar una de estas:' + name: 'Acá tenés algunas de las etiquetas que más usaste recientemente:' filters: action: Elegir qué acción realizar cuando un mensaje coincide con el filtro actions: diff --git a/config/locales/simple_form.es-MX.yml b/config/locales/simple_form.es-MX.yml index 80d5b83fe..e5db78c4d 100644 --- a/config/locales/simple_form.es-MX.yml +++ b/config/locales/simple_form.es-MX.yml @@ -66,8 +66,6 @@ es-MX: email_domain_block: domain: Este puede ser el nombre de dominio que se muestra en al dirección de correo o el registro MX que utiliza. Se comprobarán al registrarse. with_dns_records: Se hará un intento de resolver los registros DNS del dominio dado y los resultados serán también puestos en lista negra - featured_tag: - name: 'Puede que quieras usar uno de estos:' filters: action: Elegir qué acción realizar cuando una publicación coincide con el filtro actions: @@ -75,8 +73,25 @@ es-MX: warn: Ocultar el contenido filtrado detrás de una advertencia mencionando el título del filtro form_admin_settings: backups_retention_period: Mantener los archivos de usuario generados durante el número de días especificado. + bootstrap_timeline_accounts: Estas cuentas aparecerán en la parte superior de las recomendaciones de los nuevos usuarios. + closed_registrations_message: Mostrado cuando los registros están cerrados content_cache_retention_period: Las publicaciones de otros servidores se eliminarán después del número especificado de días cuando se establezca un valor positivo. Esto puede ser irreversible. + custom_css: Puedes aplicar estilos personalizados a la versión web de Mastodon. + mascot: Reemplaza la ilustración en la interfaz web avanzada. media_cache_retention_period: Los archivos multimedia descargados se eliminarán después del número especificado de días cuando se establezca un valor positivo, y se redescargarán bajo demanda. + profile_directory: El directorio de perfiles lista a todos los usuarios que han optado por que su cuenta pueda ser descubierta. + require_invite_text: Cuando los registros requieren aprobación manual, hace obligatoria la entrada de texto "¿Por qué quieres unirte?" en lugar de opcional + site_contact_email: Cómo la gente puede ponerse en contacto contigo para consultas legales o de ayuda. + site_contact_username: Cómo puede contactarte la gente en Mastodon. + site_extended_description: Cualquier información adicional que pueda ser útil para los visitantes y sus usuarios. Se puede estructurar con formato Markdown. + site_short_description: Una breve descripción para ayudar a identificar su servidor de forma única. ¿Quién lo administra, a quién va dirigido? + site_terms: Utiliza tu propia política de privacidad o déjala en blanco para usar la predeterminada Puede estructurarse con formato Markdown. + site_title: Cómo puede referirse la gente a tu servidor además de por el nombre de dominio. + theme: El tema que los visitantes no registrados y los nuevos usuarios ven. + thumbnail: Una imagen de aproximadamente 2:1 se muestra junto a la información de tu servidor. + timeline_preview: Los visitantes no registrados podrán navegar por los mensajes públicos más recientes disponibles en el servidor. + trendable_by_default: Omitir la revisión manual del contenido en tendencia. Los elementos individuales aún podrán eliminarse de las tendencias. + trends: Las tendencias muestran qué mensajes, etiquetas y noticias están ganando tracción en tu servidor. form_challenge: current_password: Estás entrando en un área segura imports: @@ -213,8 +228,28 @@ es-MX: warn: Ocultar con una advertencia form_admin_settings: backups_retention_period: Período de retención del archivo de usuario + bootstrap_timeline_accounts: Recomendar siempre estas cuentas a nuevos usuarios + closed_registrations_message: Mensaje personalizado cuando los registros no están disponibles content_cache_retention_period: Período de retención de caché de contenido + custom_css: CSS personalizado + mascot: Mascota personalizada (legado) media_cache_retention_period: Período de retención de caché multimedia + profile_directory: Habilitar directorio de perfiles + registrations_mode: Quién puede registrarse + require_invite_text: Requerir una razón para unirse + show_domain_blocks: Mostrar dominios bloqueados + show_domain_blocks_rationale: Mostrar por qué se bloquearon los dominios + site_contact_email: Dirección de correo electrónico de contacto + site_contact_username: Nombre de usuario de contacto + site_extended_description: Descripción extendida + site_short_description: Descripción del servidor + site_terms: Política de Privacidad + site_title: Nombre del servidor + theme: Tema por defecto + thumbnail: Miniatura del servidor + timeline_preview: Permitir el acceso no autenticado a las líneas de tiempo públicas + trendable_by_default: Permitir tendencias sin revisión previa + trends: Habilitar tendencias interactions: must_be_follower: Bloquear notificaciones de personas que no te siguen must_be_following: Bloquear notificaciones de personas que no sigues diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index 8df08dc8d..2fe4d033d 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -66,8 +66,6 @@ es: email_domain_block: domain: Este puede ser el nombre de dominio que aparece en la dirección de correo electrónico o el registro MX que utiliza. Se comprobarán al registrarse. with_dns_records: Se hará un intento de resolver los registros DNS del dominio dado y los resultados serán también puestos en lista negra - featured_tag: - name: 'Puede que quieras usar uno de estos:' filters: action: Elegir qué acción realizar cuando una publicación coincide con el filtro actions: diff --git a/config/locales/simple_form.et.yml b/config/locales/simple_form.et.yml index d2e51b209..b2009500d 100644 --- a/config/locales/simple_form.et.yml +++ b/config/locales/simple_form.et.yml @@ -55,8 +55,6 @@ et: domain: See domeen saab tõmmata andmeid sellelt serverilt ning sissetulevad andmed sellelt domeenilt töödeldakse ning salvestatakse email_domain_block: with_dns_records: Proovitakse ka üles vaadata selle domeeni DNS kirjed ning selle vastused samuti keelatakse - featured_tag: - name: 'Äkki soovite kasutada mõnda neist:' form_challenge: current_password: Te sisenete turvalisele alale imports: diff --git a/config/locales/simple_form.eu.yml b/config/locales/simple_form.eu.yml index 353f37688..44f25f2c4 100644 --- a/config/locales/simple_form.eu.yml +++ b/config/locales/simple_form.eu.yml @@ -28,7 +28,7 @@ eu: starts_at: Aukerakoa. Zure iragarpena denbora-tarte batera lotuta dagoenerako text: Tootetako sintaxia erabili dezakezu. Kontuan izan iragarpenak erabiltzailearen pantailan hartuko duen neurria appeal: - text: Abisu bati errekurtsoa behin bakarrik jarri diezaiokezu + text: Neurri bati apelazioa behin bakarrik jarri diezaiokezu defaults: autofollow: Gonbidapena erabiliz izena ematen dutenek automatikoki jarraituko dizute avatar: PNG, GIF edo JPG. Gehienez %{size}. %{dimensions}px neurrira eskalatuko da @@ -66,8 +66,6 @@ eu: email_domain_block: domain: Hau eposta helbidean agertzen den domeinu-izena edo MX erregistroak erabiltzen duena izan daiteke. Izen-ematean egiaztatuko dira. with_dns_records: Emandako domeinuaren DNS erregistroak ebazteko saiakera bat egingo da eta emaitzak ere zerrenda beltzean sartuko dira - featured_tag: - name: 'Hauetakoren bat erabili zenezake:' filters: action: Aukeratu ze ekintza burutu behar den bidalketa bat iragazkiarekin bat datorrenean actions: diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml index e3b4921cd..b74b08e9a 100644 --- a/config/locales/simple_form.fa.yml +++ b/config/locales/simple_form.fa.yml @@ -65,8 +65,6 @@ fa: email_domain_block: domain: این می‌تواند نام دامنه‌ای باشد که در نشانی رایانامه یا رکورد MX استفاده می‌شود. پس از ثبت نام بررسی خواهند شد. with_dns_records: تلاشی برای resolve کردن رکوردهای ساناد دامنهٔ داده‌شده انجام شده و نتیجه نیز مسدود خواهد شد - featured_tag: - name: 'شاید بخواهید چنین چیزهایی را به کار ببرید:' form_challenge: current_password: شما در حال ورود به یک منطقهٔ‌ حفاظت‌شده هستید imports: diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index 2a0765cff..218113d32 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -67,7 +67,7 @@ fi: domain: Tämä voi olla se verkkotunnus, joka näkyy sähköpostiosoitteessa tai MX tietueessa jota se käyttää. Ne tarkistetaan rekisteröitymisen yhteydessä. with_dns_records: Annetun verkkotunnuksen DNS-tietueet yritetään ratkaista ja tulokset myös estetään featured_tag: - name: 'Voit halutessasi käyttää jotakin näistä:' + name: 'Tässä muutamia aihetunnisteita, joita käytit viime aikoina:' filters: action: Valitse, mikä toiminto suoritetaan, kun viesti vastaa suodatinta actions: @@ -99,7 +99,7 @@ fi: imports: data: Toisesta Mastodon-instanssista tuotu CSV-tiedosto invite_request: - text: Tämä auttaa meitä arvioimaan sovellustasi + text: Tämä auttaa meitä arvioimaan hakemustasi ip_block: comment: Valinnainen. Muista miksi lisäsit tämän säännön. expires_in: IP-osoitteet ovat rajallinen resurssi, joskus niitä jaetaan ja vaihtavat usein omistajaa. Tästä syystä epämääräisiä IP-lohkoja ei suositella. @@ -187,7 +187,7 @@ fi: otp_attempt: Kaksivaiheisen tunnistuksen koodi password: Salasana phrase: Avainsana tai lause - setting_advanced_layout: Ota käyttöön edistynyt web käyttöliittymä + setting_advanced_layout: Ota käyttöön edistynyt selainkäyttöliittymä setting_aggregate_reblogs: Ryhmitä boostaukset aikajanalla setting_always_send_emails: Lähetä aina sähköposti-ilmoituksia setting_auto_play_gif: Toista GIF-animaatiot automaattisesti diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index 7d2fe2c5f..774c5f502 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -3,7 +3,7 @@ fr: simple_form: hints: account_alias: - acct: Spécifiez l’identifiant@domaine du compte que vous souhaitez migrer + acct: Spécifiez l’identifiant@domaine du compte que vous souhaitez faire migrer account_migration: acct: Spécifiez l’identifiant@domaine du compte vers lequel vous souhaitez déménager account_warning_preset: @@ -12,7 +12,7 @@ fr: admin_account_action: include_statuses: L’utilisateur·rice verra quels messages sont la source de l’action de modération ou de l’avertissement send_email_notification: L’utilisateur recevra une explication de ce qu’il s’est passé avec son compte - text_html: Optionnel. Vous pouvez utilisez la syntaxe des messages. Vous pouvez ajouter des modèles d’avertissement pour économiser du temps + text_html: Facultatif. Vous pouvez utiliser la syntaxe des publications. Vous pouvez ajouter des présélections d'attention pour gagner du temps type_html: Choisir que faire avec %{acct} types: disable: Empêcher l’utilisateur·rice d’utiliser son compte, mais ne pas supprimer ou masquer son contenu. @@ -20,29 +20,29 @@ fr: sensitive: Forcer toutes les pièces jointes de cet·te utilisateur·rice à être signalées comme sensibles. silence: Empêcher l’utilisateur·rice de poster avec une visibilité publique, cacher ses messages et ses notifications aux personnes qui ne les suivent pas. suspend: Empêcher toute interaction depuis ou vers ce compte et supprimer son contenu. Réversible dans les 30 jours. - warning_preset_id: Optionnel. Vous pouvez toujours ajouter un texte personnalisé à la fin de la présélection + warning_preset_id: Facultatif. Vous pouvez toujours ajouter un texte personnalisé à la fin de la présélection announcement: - all_day: Si coché, seules les dates de l’intervalle de temps seront affichées - ends_at: Optionnel. L’annonce sera automatiquement dépubliée à ce moment + all_day: Coché, seules les dates de l’intervalle de temps seront affichées + ends_at: Facultatif. La fin de l'annonce surviendra automatiquement à ce moment scheduled_at: Laisser vide pour publier l’annonce immédiatement - starts_at: Optionnel. Si votre annonce est liée à une période spécifique + starts_at: Facultatif. Si votre annonce est liée à une période spécifique text: Vous pouvez utiliser la syntaxe des messages. Veuillez prendre en compte l’espace que l'annonce prendra sur l’écran de l'utilisateur·rice appeal: text: Vous ne pouvez faire appel d'une sanction qu'une seule fois defaults: autofollow: Les personnes qui s’inscrivent grâce à l’invitation vous suivront automatiquement avatar: Au format PNG, GIF ou JPG. %{size} maximum. Sera réduit à %{dimensions}px - bot: Ce compte exécute principalement des actions automatisées et pourrait ne pas être surveillé + bot: Signale aux autres que ce compte exécute principalement des actions automatisées et pourrait ne pas être surveillé context: Un ou plusieurs contextes où le filtre devrait s’appliquer - current_password: Pour des raisons de sécurité, veuillez saisir le mot de passe du compte courant - current_username: Pour confirmer, veuillez saisir le nom d'utilisateur du compte courant - digest: Uniquement envoyé après une longue période d’inactivité et uniquement si vous avez reçu des messages personnels pendant votre absence - discoverable: Permettre à votre compte d’être découvert par des inconnus par le biais de recommandations, de tendances et d’autres fonctionnalités + current_password: Par mesure de sécurité, veuillez saisir le mot de passe de ce compte + current_username: Pour confirmer, veuillez saisir le nom d'utilisateur de ce compte + digest: Uniquement envoyé après une longue période d’inactivité en cas de messages personnels reçus pendant votre absence + discoverable: Permet à votre compte d’être découvert par des inconnus par le biais de recommandations, de tendances et autres fonctionnalités email: Vous recevrez un courriel de confirmation fields: Vous pouvez avoir jusqu’à 4 éléments affichés en tant que tableau sur votre profil header: Au format PNG, GIF ou JPG. %{size} maximum. Sera réduit à %{dimensions}px - inbox_url: Copiez l’URL depuis la page d’accueil du relais que vous souhaitez utiliser - irreversible: Les messages filtrés disparaîtront pour toujours, même si le filtre est supprimé plus tard + inbox_url: Copiez l’URL depuis la page d’accueil du relai que vous souhaitez utiliser + irreversible: Les messages filtrés disparaîtront irrévocablement, même si le filtre est supprimé plus tard locale: La langue de l’interface, des courriels et des notifications locked: Nécessite que vous approuviez manuellement chaque abonné·e password: Utilisez au moins 8 caractères @@ -67,12 +67,16 @@ fr: domain: Cela peut être le nom de domaine qui apparaît dans l'adresse courriel ou l'enregistrement MX qu'il utilise. Une vérification sera faite à l'inscription. with_dns_records: Une tentative de résolution des enregistrements DNS du domaine donné sera effectuée et les résultats seront également mis sur liste noire featured_tag: - name: 'Vous pourriez vouloir utiliser l’un d’entre eux :' + name: 'Voici quelques hashtags que vous avez utilisés récemment :' filters: action: Choisir l'action à effectuer quand un message correspond au filtre actions: hide: Cacher complètement le contenu filtré, faire comme s'il n'existait pas warn: Cacher le contenu filtré derrière un avertissement mentionnant le nom du filtre + form_admin_settings: + closed_registrations_message: Affiché lorsque les inscriptions sont fermées + site_contact_username: Comment les gens peuvent vous conracter sur Mastodon. + theme: Thème que verront les utilisateur·rice·s déconnecté·e·s ainsi que les nouveaux·elles utilisateur·rice·s. form_challenge: current_password: Vous entrez une zone sécurisée imports: @@ -214,6 +218,8 @@ fr: media_cache_retention_period: Durée de rétention des médias dans le cache profile_directory: Activer l’annuaire des profils registrations_mode: Qui peut s’inscrire + require_invite_text: Exiger une raison pour s’inscrire + show_domain_blocks_rationale: Montrer pourquoi les domaines ont été bloqués site_extended_description: Description étendue site_short_description: Description du serveur site_terms: Politique de confidentialité diff --git a/config/locales/simple_form.gd.yml b/config/locales/simple_form.gd.yml index 5a23f5f85..0f4528af8 100644 --- a/config/locales/simple_form.gd.yml +++ b/config/locales/simple_form.gd.yml @@ -25,7 +25,7 @@ gd: all_day: Nuair a bhios cromag ris, cha nochd ach cinn-latha na rainse-ama ends_at: Roghainneil. Thèid am brath-fios a neo-fhoillseachadh gu fèin-obrachail aig an àm ud scheduled_at: Fàg seo bàn airson am brath-fios fhoillseachadh sa bhad - starts_at: Roghainnean. Cleachd seo airson am brath-fios a chuingeachadh rè ama shònraichte + starts_at: Roghainneil. Cleachd seo airson am brath-fios a chuingeachadh rè ama shònraichte text: "’S urrainn dhut co-chàradh puist a chleachdadh. Thoir an aire air am meud a chaitheas am brath-fios air sgrìn an luchd-chleachdaidh" appeal: text: Chan urrainn dhut ath-thagradh a dhèanamh air rabhadh ach aon turas @@ -66,8 +66,6 @@ gd: email_domain_block: domain: Seo ainm na h-àrainne a nochdas san t-seòladh puist-d no sa chlàr MX a chleachdas e. Thèid an dearbhadh aig àm a’ chlàraidh. with_dns_records: Thèid oidhirp a dhèanamh air fuasgladh clàran DNS na h-àrainne a chaidh a thoirt seachad agus thèid na toraidhean a bhacadh cuideachd - featured_tag: - name: 'Mholamaid fear dhe na tagaichean seo:' filters: action: Tagh na thachras nuair a bhios post a’ maidseadh na criathraige actions: diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml index d351ff412..9aa9c5745 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -66,8 +66,6 @@ gl: email_domain_block: domain: Este pode ser o nome de dominio que aparece no enderezo de email ou o rexistro MX que utiliza. Será comprobado no momento do rexistro. with_dns_records: Vaise facer un intento de resolver os rexistros DNS proporcionados e os resultados tamén irán a lista de bloqueo - featured_tag: - name: 'Poderías usar algún destos:' filters: action: Elixe a acción a realizar cando algunha publicación coincida co filtro actions: diff --git a/config/locales/simple_form.he.yml b/config/locales/simple_form.he.yml index 22b5d8480..e3dc99761 100644 --- a/config/locales/simple_form.he.yml +++ b/config/locales/simple_form.he.yml @@ -66,8 +66,6 @@ he: email_domain_block: domain: זה יכול להיות שם הדומיין המופיע בכתובת הדוא"ל או רשומת ה-MX בה הוא משתמש. הם ייבדקו בהרשמה. with_dns_records: ייעשה נסיון למצוא את רשומות ה-DNS של דומיין נתון והתוצאות ייחסמו גם הן - featured_tag: - name: 'אולי תרצה/י להשתמש באחד מאלה:' filters: action: בחרו איזו פעולה לבצע כאשר פוסט מתאים למסנן actions: @@ -154,7 +152,7 @@ he: email: כתובת דוא"ל expires_in: תפוגה לאחר fields: מטא-נתונים על הפרופיל - header: ראשה + header: כותרת honeypot: "%{label} (לא למלא)" inbox_url: קישורית לתיבת ממסר irreversible: הסרה במקום הסתרה diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index d39f8fe09..be1ba159f 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -67,7 +67,7 @@ hu: domain: Ez lehet az e-mail címben szereplő domain név vagy az MX rekord, melyet ez használ. Ezeket feliratkozáskor ellenőrizzük. with_dns_records: Megpróbáljuk a megadott domain DNS rekordjait lekérni, és az eredményeket hozzáadjuk a tiltólistához featured_tag: - name: 'Ezeket esetleg használhatod:' + name: 'Itt vannak azok a hashtagek, melyeket legutóbb használtál:' filters: action: A végrehajtandó műveletet, ha a bejegyzés megfelel a szűrőnek actions: @@ -75,10 +75,21 @@ hu: warn: A szűrt tartalom a szűrő címét említő figyelmeztetés mögé rejtése form_admin_settings: backups_retention_period: Az előállított felhasználói archívumok megtartása a megadott napokig. + bootstrap_timeline_accounts: Ezek a fiókok ki lesznek tűzve az új felhasználók követési javaslatainak élére. + closed_registrations_message: Akkor jelenik meg, amikor a regisztráció le van zárva content_cache_retention_period: A más kiszolgálókról származó bejegyzések megadott számú nap után törölve lesznek, ha pozitív értékre van állítva. Ez lehet, hogy nem fordítható vissza. + custom_css: A Mastodon webes verziójában használhatsz egyedi stílusokat. + mascot: Felülvágja a haladó webes felületen található illusztrációt. media_cache_retention_period: A letöltött médiafájlok megadott számú nap után törölve lesznek, ha pozitív értékre van állítva, és igény szerint újból le lesznek töltve. + profile_directory: A profilok jegyzéke minden olyan felhasználót felsorol, akik engedélyezték a felfedezhetőségüket. + require_invite_text: Ha a regisztrációhoz manuális jóváhagyásra van szükség, akkor a „Miért akarsz csatlakozni?” válasz kitöltése legyen kötelező, és ne opcionális + site_contact_email: Hogyan érhetnek el jogi vagy támogatási kérésekkel. + site_contact_username: Hogyan érhetnek el Mastodonon. + site_extended_description: Bármilyen egyéb információ, mely hasznos lehet a látogatóid vagy felhasználóid számára. Markdown szintaxis használható. site_short_description: Rövid leírás, amely segíthet a kiszolgálód egyedi azonosításában. Ki futtatja, kinek készült? + site_terms: Használd a saját adatvédelmi irányelveidet, vagy hagyd üresen az alapértelmezett használatához. Markdown szintaxis használható. site_title: Hogyan hivatkozhatnak mások a kiszolgálódra a domain nevén kívül. + theme: A téma, melyet a kijelentkezett látogatók és az új felhasználók látnak. thumbnail: Egy durván 2:1 arányú kép, amely a kiszolgálóinformációk mellett jelenik meg. timeline_preview: A kijelentkezett látogatók továbbra is böngészhetik a kiszolgáló legfrissebb nyilvános bejegyzéseit. trendable_by_default: Kézi felülvizsgálat kihagyása a felkapott tartalmaknál. Az egyes elemek utólag távolíthatók el a trendek közül. @@ -219,6 +230,7 @@ hu: warn: Elrejtés figyelmeztetéssel form_admin_settings: backups_retention_period: Felhasználói archívum megtartási időszaka + bootstrap_timeline_accounts: Mindig javasoljuk ezeket a fiókokat az új felhasználók számára closed_registrations_message: A feliratkozáskor megjelenő egyéni üzenet nem érhető el content_cache_retention_period: Tartalom-gyorsítótár megtartási időszaka custom_css: Egyéni CSS @@ -229,6 +241,8 @@ hu: require_invite_text: Indok megkövetelése a csatlakozáshoz show_domain_blocks: Domain tiltások megjelenitése show_domain_blocks_rationale: A domainok blokkolásának okának megjelenítése + site_contact_email: Kapcsolattartó e-mail + site_contact_username: Kapcsolattartó felhasználóneve site_extended_description: Bővített leírás site_short_description: Kiszolgáló leírása site_terms: Adatvédelmi szabályzat diff --git a/config/locales/simple_form.hy.yml b/config/locales/simple_form.hy.yml index 94b0096fa..b95502155 100644 --- a/config/locales/simple_form.hy.yml +++ b/config/locales/simple_form.hy.yml @@ -55,8 +55,6 @@ hy: domain: Այս տիրոյթը կարող է ստանալ տուեալներ այս սպասարկչից եւ ստացուող տուեալները կարող են օգտագործուել եւ պահուել email_domain_block: with_dns_records: Այս տիրոյթի DNS գրառումները կը տարրալուծուեն եւ արդիւնքները նոյնպէս կուղարկուեն սեւ ցուցակ - featured_tag: - name: Գուցէ ցանկանաս օգտագործել սրանցից մէկը․ form_challenge: current_password: Մուտք ես գործել ապահով տարածք imports: diff --git a/config/locales/simple_form.id.yml b/config/locales/simple_form.id.yml index 1637b7b04..196222e22 100644 --- a/config/locales/simple_form.id.yml +++ b/config/locales/simple_form.id.yml @@ -66,8 +66,6 @@ id: email_domain_block: domain: Ini bisa berupa nama domain yang tampil di alamat email atau data MX yang memakainya. Mereka akan diperiksa saat mendaftar. with_dns_records: Usaha untuk menyelesaikan data DNS domain yang diberikan akan dilakukan dan hasilnya akan masuk daftar hitam - featured_tag: - name: 'Anda mungkin ingin pakai salah satu dari ini:' filters: action: Pilih tindakan apa yang dilakukan ketika sebuah kiriman cocok dengan saringan actions: diff --git a/config/locales/simple_form.io.yml b/config/locales/simple_form.io.yml index 7cde207ac..42c95a9ae 100644 --- a/config/locales/simple_form.io.yml +++ b/config/locales/simple_form.io.yml @@ -66,8 +66,6 @@ io: 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: 'Vu forsan volas uzar 1 de co:' filters: action: Selektez ago kande posto parigas filtrilo actions: diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml index 50019ecb6..64cc2e602 100644 --- a/config/locales/simple_form.is.yml +++ b/config/locales/simple_form.is.yml @@ -67,7 +67,7 @@ is: domain: Þetta getur verið lénið sem birtist í tölvupóstfanginu eða MX-færslunni sem það notar. Þetta verður yfirfarið við nýskráningu. with_dns_records: Tilraun verður gerð til að leysa DNS-færslur uppgefins léns og munu niðurstöðurnar einnig verða útilokaðar featured_tag: - name: 'Þú gætir viljað nota eitt af þessum:' + name: 'Hér eru nokkur af þeim myllumerkjum sem þú hefur notað nýlega:' filters: action: Veldu hvaða aðgerð á að framkvæma þegar færsla samsvarar síunni actions: diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml index 408eeedd2..dd9207b44 100644 --- a/config/locales/simple_form.it.yml +++ b/config/locales/simple_form.it.yml @@ -67,7 +67,7 @@ it: domain: Questo può essere il nome di dominio che appare nell'indirizzo e-mail o nel record MX che utilizza. Verranno controllati al momento dell'iscrizione. with_dns_records: Sarà effettuato un tentativo di risolvere i record DNS del dominio in questione e i risultati saranno inseriti anche nella blacklist featured_tag: - name: 'Eccone alcuni che potresti usare:' + name: 'Ecco alcuni degli hashtag che hai usato di più recentemente:' filters: action: Scegli quale azione eseguire quando un post corrisponde al filtro actions: diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index b948217fe..deb85676a 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -67,11 +67,12 @@ ja: domain: 電子メールアドレスのドメイン名、または使用されるMXレコードを指定できます。新規登録時にチェックされます。 with_dns_records: 指定したドメインのDNSレコードを取得し、その結果もメールドメインブロックに登録されます featured_tag: - name: 'これらを使うといいかもしれません:' + name: '最近使用したハッシュタグ:' filters: action: 投稿がフィルタに一致したときに実行するアクションを選択します actions: hide: フィルタリングされたコンテンツを完全に隠し、存在しないかのようにします + warn: フィルタリングされたコンテンツを、フィルタータイトルの警告の後ろに隠します。 form_admin_settings: backups_retention_period: 生成されたユーザーのアーカイブを指定した日数の間保持します。 bootstrap_timeline_accounts: これらのアカウントは、新しいユーザーのフォロー推奨の一番上にピン留めされます。 @@ -80,13 +81,17 @@ ja: custom_css: ウェブ版の Mastodon でカスタムスタイルを適用できます。 mascot: 上級者向けWebインターフェースのイラストを上書きします。 media_cache_retention_period: 正の値に設定されている場合、ダウンロードされたメディアファイルは指定された日数の後に削除され、リクエストに応じて再ダウンロードされます。 - profile_directory: プロファイルディレクトリには、検出可能にオプトイン設定したすべてのユーザーが一覧に表示されます。 + profile_directory: ディレクトリには、掲載する設定をしたすべてのユーザーが一覧表示されます。 require_invite_text: アカウント登録が承認制の場合、「意気込みをお聞かせください」のテキストを必須入力にする site_contact_email: 法律またはサポートに関する問い合わせ先 site_contact_username: マストドンでの連絡方法 site_extended_description: 訪問者やユーザーに役立つかもしれない任意の追加情報。Mastodon 構文が使用できます。 site_short_description: 誰が運営しているのか、誰に向けたものなのかなど、サーバーを特定する短い説明。 site_terms: 独自のプライバシーポリシーを使用するか、空白にしてデフォルトのプライバシーポリシーを使用します。Mastodon 構文が使用できます。 + site_title: ドメイン名以外でサーバーを参照する方法です。 + theme: ログインしていない人と新規ユーザーに表示されるテーマ。 + thumbnail: サーバー情報と共に表示される、アスペクト比が約 2:1 の画像。 + timeline_preview: ログアウトした人は、サーバー上で利用可能な最新の公開投稿を閲覧することができます。 trendable_by_default: トレンドコンテンツの手動レビューをスキップする。個々のコンテンツは後でトレンドから削除できます。 trends: トレンドは、サーバー上でどの投稿、ハッシュタグ、ニュース記事が人気を集めているかを示します。 form_challenge: @@ -119,6 +124,7 @@ ja: highlighted: これによりロールが公開されます。 name: ロールのバッジを表示する際の表示名 permissions_as_keys: このロールを持つユーザーは次の機能にアクセスできます + position: 特定の状況では、より高いロールが競合の解決を決定します。特定のアクションは優先順位が低いロールでのみ実行できます。 webhook: events: 送信するイベントを選択 url: イベントの送信先 @@ -230,9 +236,9 @@ ja: custom_css: カスタムCSS mascot: カスタムマスコット(レガシー) media_cache_retention_period: メディアキャッシュの保持期間 - profile_directory: プロファイル ディレクトリを有効設定にする - registrations_mode: 新規登録が可能な方 - require_invite_text: 参加する理由を提出してください。 + profile_directory: ディレクトリを有効にする + registrations_mode: 新規登録が可能な人 + require_invite_text: 意気込み理由の入力を必須にする。 show_domain_blocks: ドメインブロックを表示 show_domain_blocks_rationale: ドメインがブロックされた理由を表示 site_contact_email: 連絡先メールアドレス diff --git a/config/locales/simple_form.kab.yml b/config/locales/simple_form.kab.yml index 380356059..ae18d2a42 100644 --- a/config/locales/simple_form.kab.yml +++ b/config/locales/simple_form.kab.yml @@ -21,8 +21,6 @@ kab: setting_display_media_show_all: Ffer yal tikkelt teywalt yettwacreḍ d tanafrit setting_hide_network: Wid i teṭṭafaṛeḍ d wid i k-yeṭṭafaṛen ur d-ttwaseknen ara deg umaγnu-inek username: Isem-ik n umseqdac ad yili d ayiwen, ulac am netta deg %{domain} - featured_tag: - name: 'Ahat ad tebγuḍ ad tesqedceḍ yiwen gar-asen:' imports: data: Afaylu CSV id yusan seg uqeddac-nniḍen n Maṣṭudun ip_block: diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index f64f3d548..d2d244b53 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -67,7 +67,7 @@ ko: domain: 이메일에 표시되는 도메인 네임이거나 그것이 사용하는 MX 레코드일 수 있습니다. 가입시에 검증됩니다. with_dns_records: 입력한 도메인의 DNS를 조회를 시도하여 나온 값도 차단됩니다 featured_tag: - name: '이것들을 사용하면 좋을 것 같습니다:' + name: '이것들은 최근에 많이 쓰인 해시태그들입니다:' filters: action: 게시물이 필터에 걸러질 때 어떤 동작을 수행할 지 고르세요 actions: @@ -88,7 +88,11 @@ ko: site_extended_description: 방문자와 사용자에게 유용할 수 있는 추가정보들. 마크다운 문법을 사용할 수 있습니다. site_short_description: 이 서버를 특별하게 구분할 수 있는 짧은 설명. 누가 운영하고, 누구를 위한 것인가요? site_terms: 자신만의 개인정보 정책을 사용하거나 비워두는 것으로 기본값을 사용할 수 있습니다. 마크다운 문법을 사용할 수 있습니다. + site_title: 사람들이 이 서버를 도메인 네임 대신에 부를 이름. theme: 로그인 하지 않은 사용자나 새로운 사용자가 보게 될 테마. + thumbnail: 대략 2:1 비율의 이미지가 서버 정보 옆에 표시됩니다. + timeline_preview: 로그아웃 한 사용자들이 이 서버에 있는 최신 공개글들을 볼 수 있게 합니다. + trendable_by_default: 유행하는 콘텐츠에 대한 수동 승인을 건너뜁니다. 이 설정이 적용된 이후에도 각각의 항목들을 삭제할 수 있습니다. form_challenge: current_password: 당신은 보안 구역에 진입하고 있습니다 imports: diff --git a/config/locales/simple_form.ku.yml b/config/locales/simple_form.ku.yml index 678d91933..e85d156bf 100644 --- a/config/locales/simple_form.ku.yml +++ b/config/locales/simple_form.ku.yml @@ -69,7 +69,7 @@ ku: domain: Ev dikare bibe navê navparek ku di navnîşana e-nameyê de an tomara MX ya ku ew bi kar tîne de xuya dike. Ew ê di dema tomarkirinê de werin kontrolkirin. with_dns_records: Hewl tê dayîn ku tomarên DNSê yên li qada jê re hatine dayîn were çareserkirin û encamên wê jî were astengkirin featured_tag: - name: 'Belkî tu yekê bi kar bînî çi van:' + name: 'Li virê çend haştag hene ku te demên dawî bi kar anîne:' filters: action: Hilbijêre ku dema şandiyek bi parzûnê re lihevhatî be bila kîjan çalakî were pêkanîn actions: @@ -84,6 +84,12 @@ ku: mascot: Îlustrasyona navrûyê webê yê pêşketî bêbandor dike. media_cache_retention_period: Pelên medyayê yên daxistî wê piştî çend rojên diyarkirî dema ku li ser nirxek erênî were danîn werin jêbirin, û li gorî daxwazê ​​ji nû ve werin daxistin. profile_directory: Pelrêça profîlê hemû bikarhênerên keşfbûnê hilbijartine lîste dike. + require_invite_text: Heke ji bo qeydkirinê pejirandina bi destan hewce bike, Nivîsa "Hûn çima dixwazin tevlê bibin?" li şûna vebijarkî bike mecbûrî + site_contact_email: Mirov dikarin ji bo pirsên qanûnî yan jî yên piştgiriyê çawa xwe digihînin te. + site_contact_username: Mirov dikarin li ser Mastodonê xwe çawa xwe bigihînin te. + site_extended_description: Her zanyariyek daxwazî dibe ku bibe alîkar bo mêvan û bikarhêneran re. Û dikarin bi hevoksaziya Markdown re werin sazkirin. + site_short_description: Danasîneke kurt ji bo ku bibe alîkar ku rajekara te ya bêhempa werê naskirin. Kî bi rê ve dibe, ji bo kê ye? + site_terms: Politîka taybetiyê ya xwe bi kar bîne an jî vala bihêle da ku berdest werê bikaranîn. Dikare bi hevoksaziya Markdown ve werê sazkirin. form_challenge: current_password: Tu dikevî qadeke ewledar imports: @@ -228,6 +234,9 @@ ku: registrations_mode: Kî dikare tomar bibe require_invite_text: Ji bo tevlêbûnê sedemek pêdivî ye show_domain_blocks: Astengkirinên navperê nîşan bide + site_contact_email: Bi me re biaxive bi riya e-name + site_contact_username: Bi bikarhêner re têkeve têkiliyê + site_extended_description: Danasîna berferhkirî site_short_description: Danasîna rajekar site_terms: Politîka taybetiyê site_title: Navê rajekar diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml index 4529d2c5d..7f31232a1 100644 --- a/config/locales/simple_form.lv.yml +++ b/config/locales/simple_form.lv.yml @@ -67,7 +67,7 @@ lv: domain: Tas var būt domēna nosaukums, kas tiek parādīts e-pasta adresē vai izmantotajā MX ierakstā. Tie tiks pārbaudīti reģistrācijas laikā. with_dns_records: Tiks mēģināts atrisināt dotā domēna DNS ierakstus, un rezultāti arī tiks bloķēti featured_tag: - name: 'Iespējams, vēlēsies izmantot kādu no šīm:' + name: 'Šeit ir daži no pēdējiem lietotajiem tēmturiem:' filters: action: Izvēlies, kuru darbību veikt, ja ziņa atbilst filtram actions: diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index 5a73d0005..0ee48f6a0 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -66,7 +66,7 @@ nl: email_domain_block: with_dns_records: Er wordt een poging gewaagd om de desbetreffende DNS-records op te zoeken, waarna de resultaten ook worden geblokkeerd featured_tag: - name: 'Je wilt misschien een van deze gebruiken:' + name: 'Hier zijn enkele van de hashtags die je onlangs hebt gebruikt:' filters: action: Kies welke acties uitgevoerd moeten wanneer een bericht overeenkomt met het filter actions: @@ -77,15 +77,17 @@ nl: bootstrap_timeline_accounts: Deze accounts worden bovenaan de aanbevelingen aan nieuwe gebruikers getoond. Meerdere gebruikersnamen met komma's scheiden. closed_registrations_message: Weergegeven wanneer registratie van nieuwe accounts is uitgeschakeld content_cache_retention_period: 'Berichten van andere servers worden na het opgegeven aantal dagen verwijderd. Let op: Dit is onomkeerbaar.' - custom_css: Je kunt aangepaste stijlen toepassen op de webversie van Mastodon. - mascot: Overschrijft de illustratie in de geavanceerde webinterface. + custom_css: Je kunt aangepaste CSS toepassen op de webversie van deze Mastodon-server. + mascot: Overschrijft de illustratie in de geavanceerde webomgeving. media_cache_retention_period: Mediabestanden die van andere servers zijn gedownload worden na het opgegeven aantal dagen verwijderd en worden op verzoek opnieuw gedownload. profile_directory: De gebruikersgids bevat een lijst van alle gebruikers die ervoor gekozen hebben om ontdekt te kunnen worden. require_invite_text: Maak het invullen van "Waarom wil je je hier registreren?" verplicht in plaats van optioneel, wanneer registraties handmatig moeten worden goedgekeurd - site_contact_email: Hoe mensen je kunnen bereiken voor juridische of ondersteunende onderzoeken. - site_contact_username: Hoe mensen je kunnen bereiken op Mastodon. - site_title: Hoe mensen naar uw server kunnen verwijzen naast de domeinnaam. + site_contact_email: Hoe mensen je kunnen bereiken voor juridische vragen of support. + site_contact_username: Hoe mensen je op Mastodon kunnen bereiken. + site_terms: Gebruik uw eigen privacybeleid of laat leeg om de standaardwaarde te gebruiken. Kan worden gestructureerd met Markdown syntax. + site_title: Hoe mensen buiten de domeinnaam naar je server kunnen verwijzen. theme: Thema die (niet ingelogde) bezoekers en nieuwe gebruikers zien. + thumbnail: Een afbeelding van ongeveer een verhouding van 2:1 die naast jouw serverinformatie wordt getoond. timeline_preview: Bezoekers (die niet zijn ingelogd) kunnen de meest recente, op de server aanwezige openbare berichten bekijken. trendable_by_default: Handmatige beoordeling van trends overslaan. Individuele items kunnen later alsnog worden afgekeurd. trends: Trends laten zien welke berichten, hashtags en nieuwsberichten op jouw server aan populariteit winnen. @@ -115,6 +117,7 @@ nl: chosen_languages: Alleen berichten in de aangevinkte talen worden op de openbare tijdlijnen getoond role: De rol bepaalt welke rechten een gebruiker heeft user_role: + color: Kleur die gebruikt wordt voor de rol in de UI, als RGB in hexadecimale formaat highlighted: Dit maakt de rol openbaar zichtbaar name: Openbare naam van de rol, wanneer de rol als badge op profielpagina's wordt getoond permissions_as_keys: Gebruikers met deze rol hebben toegang tot... diff --git a/config/locales/simple_form.nn.yml b/config/locales/simple_form.nn.yml index 71734509b..a38b1e67c 100644 --- a/config/locales/simple_form.nn.yml +++ b/config/locales/simple_form.nn.yml @@ -62,7 +62,7 @@ nn: email_domain_block: with_dns_records: Eit forsøk på å løysa gjeve domene som DNS-data vil vera gjord og resultata vert svartelista featured_tag: - name: 'Kanskje du vil nytta ein av desse:' + name: 'Her er nokre av dei mest brukte hashtaggane dine i det siste:' form_challenge: current_password: Du går inn i eit trygt område imports: diff --git a/config/locales/simple_form.no.yml b/config/locales/simple_form.no.yml index 7f1b8cbac..5196fb2c2 100644 --- a/config/locales/simple_form.no.yml +++ b/config/locales/simple_form.no.yml @@ -61,8 +61,6 @@ domain: Dette domenet vil være i stand til å hente data fra denne serveren og dets innkommende data vil bli prosessert og lagret email_domain_block: with_dns_records: Et forsøk på å løse det gitte domenets DNS-poster vil bli gjort, og resultatene vil også bli svartelistet - featured_tag: - name: 'Du vil kanskje ønske å bruke en av disse:' form_challenge: current_password: Du går inn i et sikkert område imports: diff --git a/config/locales/simple_form.oc.yml b/config/locales/simple_form.oc.yml index 0ae0bb365..0f9abd7bf 100644 --- a/config/locales/simple_form.oc.yml +++ b/config/locales/simple_form.oc.yml @@ -55,8 +55,6 @@ oc: domain: Aqueste domeni poirà recuperar las donadas d’aqueste servidor estant e las donadas venent d’aqueste domeni seràn tractadas e gardadas email_domain_block: with_dns_records: Un ensag de resolucion dels enregistraments DNS del domeni donat serà realizat e los resultats seràn tanben meses en lista negra - featured_tag: - name: 'Benlèu que volètz utilizar una d’aquestas causas :' form_challenge: current_password: Dintratz dins una zòna segura imports: diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index 4d44bbe64..b660f4d89 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -30,7 +30,7 @@ pl: appeal: text: Możesz wysłać odwołanie do ostrzeżenia tylko raz defaults: - autofollow: Osoby, które zarejestrują się z Twojego zaproszenia automatycznie zaczną Cię śledzić + autofollow: Osoby, które zarejestrują się z Twojego zaproszenia automatycznie zaczną Cię obserwować avatar: PNG, GIF lub JPG. Maksymalnie %{size}. Zostanie zmniejszony do %{dimensions}px bot: To konto wykonuje głównie zautomatyzowane działania i może nie być monitorowane context: Jedno lub wiele miejsc, w których filtr zostanie zastosowany @@ -44,7 +44,7 @@ pl: inbox_url: Skopiuj adres ze strony głównej przekaźnika, którego chcesz użyć irreversible: Filtrowane wpisy znikną bezpowrotnie, nawet gdy filtr zostanie usunięty locale: Język interfejsu, wiadomości e-mail i powiadomieniach push - locked: Musisz akceptować prośby o śledzenie + locked: Musisz akceptować prośby o możliwość obserwacji password: Użyj co najmniej 8 znaków phrase: Zostanie wykryte nawet, gdy znajduje się za ostrzeżeniem o zawartości scopes: Wybór API, do których aplikacja będzie miała dostęp. Jeżeli wybierzesz nadrzędny zakres, nie musisz wybierać jego elementów. @@ -54,7 +54,7 @@ pl: setting_display_media_default: Ukrywaj zawartość multimedialną oznaczoną jako wrażliwa setting_display_media_hide_all: Zawsze ukrywaj zawartość multimedialną setting_display_media_show_all: Zawsze pokazuj zawartość multimedialną - setting_hide_network: Informacje o tym, kto Cię śledzi i kogo śledzisz nie będą widoczne + setting_hide_network: Informacje o tym, kto Cię obserwuje i kogo obserwujesz nie będą widoczne setting_noindex: Wpływa na widoczność strony profilu i Twoich wpisów setting_show_application: W informacjach o wpisie będzie widoczna informacja o aplikacji, z której został wysłany setting_use_blurhash: Gradienty są oparte na kolorach ukrywanej zawartości, ale uniewidaczniają wszystkie szczegóły @@ -67,7 +67,7 @@ pl: domain: To może być nazwa domeny, która pojawia się w adresie e-mail lub rekordzie MX, którego używa. Zostaną one sprawdzone przy rejestracji. with_dns_records: Zostanie wykonana próba rozwiązania rekordów DNS podanej domeny, a wyniki również zostaną dodane na czarną listę featured_tag: - name: 'Sugerujemy użycie jednego z następujących:' + name: 'Oto niektóre hasztagi, których były ostatnio przez ciebie użyte:' filters: action: Wybierz akcję do wykonania, gdy post pasuje do filtra actions: @@ -75,7 +75,7 @@ pl: warn: Ukryj filtrowaną zawartość za ostrzeżeniem wskazującym tytuł filtra form_admin_settings: backups_retention_period: Zachowaj wygenerowane archiwa użytkownika przez określoną liczbę dni. - bootstrap_timeline_accounts: Te konta zostaną przypięte na górze rekomendacji śledzenia nowych użytkowników. + bootstrap_timeline_accounts: Te konta zostaną przypięte na górze rekomendacji obserwacji nowych użytkowników. closed_registrations_message: Wyświetlane po zamknięciu rejestracji content_cache_retention_period: Posty z innych serwerów zostaną usunięte po określonej liczbie dni, kiedy liczba jest ustawiona na wartość dodatnią. Może to być nieodwracalne. custom_css: Możesz zastosować niestandardowe style w internetowej wersji Mastodon. @@ -161,7 +161,7 @@ pl: appeal: text: Wyjaśnij, dlaczego ta decyzja powinna zostać cofnięta defaults: - autofollow: Zapraszaj do śledzenia swojego konta + autofollow: Zapraszaj do obserwacji swojego konta avatar: Awatar bot: To konto jest prowadzone przez bota chosen_languages: Filtrowanie języków @@ -210,7 +210,7 @@ pl: setting_system_font_ui: Używaj domyślnej czcionki systemu setting_theme: Motyw strony setting_trends: Pokazuj dzisiejsze „Na czasie” - setting_unfollow_modal: Pytaj o potwierdzenie przed cofnięciem śledzenia + setting_unfollow_modal: Pytaj o potwierdzenie przed cofnięciem obserwacji setting_use_blurhash: Pokazuj kolorowe gradienty dla ukrytej zawartości multimedialnej setting_use_pending_items: Tryb spowolniony severity: Priorytet @@ -253,9 +253,9 @@ pl: trendable_by_default: Zezwalaj na trendy bez wcześniejszego przeglądu trends: Włącz trendy interactions: - must_be_follower: Nie wyświetlaj powiadomień od osób, które Cię nie śledzą - must_be_following: Nie wyświetlaj powiadomień od osób, których nie śledzisz - must_be_following_dm: Nie wyświetlaj wiadomości bezpośrednich od osób, których nie śledzisz + must_be_follower: Nie wyświetlaj powiadomień od osób, które Cię nie obserwują + must_be_following: Nie wyświetlaj powiadomień od osób, których nie obserwujesz + must_be_following_dm: Nie wyświetlaj wiadomości bezpośrednich od osób, których nie obserwujesz invite: comment: Komentarz invite_request: @@ -272,8 +272,8 @@ pl: appeal: Ktoś odwołuje się od decyzji moderatora digest: Wysyłaj podsumowania e-mailem favourite: Powiadamiaj mnie e-mailem, gdy ktoś polubi mój wpis - follow: Powiadamiaj mnie e-mailem, gdy ktoś zacznie mnie śledzić - follow_request: Powiadamiaj mnie e-mailem, gdy ktoś poprosi o pozwolenie na śledzenie mnie + follow: Powiadamiaj mnie e-mailem, gdy ktoś zaobserwuje mnie + follow_request: Powiadamiaj mnie e-mailem, gdy ktoś poprosi o pozwolenie na obserwowanie mnie mention: Powiadamiaj mnie e-mailem, gdy ktoś o mnie wspomni pending_account: Wyślij e-mail kiedy nowe konto potrzebuje recenzji reblog: Powiadamiaj mnie e-mailem, gdy ktoś podbije mój wpis diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml index f2b81b9bd..ce4d0d713 100644 --- a/config/locales/simple_form.pt-BR.yml +++ b/config/locales/simple_form.pt-BR.yml @@ -66,8 +66,6 @@ pt-BR: email_domain_block: domain: Este pode ser o nome de domínio que aparece no endereço de e-mail ou no registro MX que ele utiliza. Eles serão verificados após a inscrição. with_dns_records: Será feita uma tentativa de resolver os registros DNS do domínio em questão e os resultados também serão colocados na lista negra - featured_tag: - name: 'Você pode querer usar um destes:' filters: action: Escolher qual ação executar quando um post corresponder ao filtro actions: diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml index 4fa667ddd..211a2fac4 100644 --- a/config/locales/simple_form.pt-PT.yml +++ b/config/locales/simple_form.pt-PT.yml @@ -67,7 +67,7 @@ pt-PT: domain: Este pode ser o nome de domínio que aparece no endereço de e-mail ou o registo MX por ele utilizado. Eles serão verificados aquando da inscrição. with_dns_records: Será feita uma tentativa de resolver os registos DNS do domínio em questão e os resultados também serão colocados na lista negra featured_tag: - name: 'Poderás querer usar um destes:' + name: 'Aqui estão algumas das hashtags que utilizou recentemente:' filters: action: Escolha qual a ação a executar quando uma publicação corresponde ao filtro actions: diff --git a/config/locales/simple_form.ro.yml b/config/locales/simple_form.ro.yml index 1f0fee419..c7339008a 100644 --- a/config/locales/simple_form.ro.yml +++ b/config/locales/simple_form.ro.yml @@ -55,8 +55,6 @@ ro: domain: Acest domeniu va putea prelua date de pe acest server și datele primite de la el vor fi procesate și stocate email_domain_block: with_dns_records: Se va face o încercare de a rezolva înregistrările DNS ale domeniului dat și rezultatele vor fi de asemenea afișate pe lista neagră - featured_tag: - name: 'S-ar putea să vreți să folosiți unul dintre acestea:' form_challenge: current_password: Ați intrat într-o zonă securizată imports: diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml index bb304a9e4..a941fb354 100644 --- a/config/locales/simple_form.ru.yml +++ b/config/locales/simple_form.ru.yml @@ -66,8 +66,6 @@ ru: email_domain_block: domain: Это может быть доменное имя, которое отображается в адресе электронной почты или используемая MX запись. Они будут проверяться при регистрации. with_dns_records: Будет сделана попытка разрешить DNS-записи данного домена и результаты также будут внесены в чёрный список - featured_tag: - name: 'Возможно, вы захотите добавить что-то из этого:' filters: action: Выберите действие, которое нужно выполнить, когда сообщение соответствует фильтру actions: diff --git a/config/locales/simple_form.sc.yml b/config/locales/simple_form.sc.yml index b894bc912..96c31c374 100644 --- a/config/locales/simple_form.sc.yml +++ b/config/locales/simple_form.sc.yml @@ -61,8 +61,6 @@ sc: domain: Custu domìniu at a pòdere recuperare datos dae custu serbidore e is datos in intrada dae cue ant a èssere protzessados e archiviados email_domain_block: with_dns_records: S'at a fàghere unu tentativu de risòlvere is registros DNS de su domìniu e fintzas is risultados ant a èssere blocados - featured_tag: - name: 'Forsis boles impreare unu de custos:' form_challenge: current_password: Ses intrende in un'àrea segura imports: diff --git a/config/locales/simple_form.si.yml b/config/locales/simple_form.si.yml index e2ada04aa..829d42e4c 100644 --- a/config/locales/simple_form.si.yml +++ b/config/locales/simple_form.si.yml @@ -66,8 +66,6 @@ si: email_domain_block: domain: මෙය විද්‍යුත් තැපැල් ලිපිනයේ හෝ එය භාවිතා කරන MX වාර්තාවේ පෙන්වන ඩොමේන් නාමය විය හැක. ලියාපදිංචි වූ පසු ඒවා පරීක්ෂා කරනු ලැබේ. with_dns_records: ලබා දී ඇති වසමේ DNS වාර්තා විසඳීමට උත්සාහ කරන අතර ප්‍රතිඵල ද අවහිර කරනු ලැබේ - featured_tag: - name: 'ඔබට මේවායින් එකක් භාවිතා කිරීමට අවශ්‍ය විය හැකිය:' filters: action: පළ කිරීමක් පෙරහනට ගැළපෙන විට සිදු කළ යුතු ක්‍රියාව තෝරන්න actions: diff --git a/config/locales/simple_form.sk.yml b/config/locales/simple_form.sk.yml index bd482f778..85c47dae9 100644 --- a/config/locales/simple_form.sk.yml +++ b/config/locales/simple_form.sk.yml @@ -46,8 +46,6 @@ sk: whole_word: Ak je kľúčové slovo, alebo fráza poskladaná iba s písmen a čísel, bude použité iba ak sa zhoduje s celým výrazom domain_allow: domain: Táto doména bude schopná získavať dáta z tohto servera, a prichádzajúce dáta ním budú spracovávané a uložené - featured_tag: - name: 'Možno by si chcel/a použiť niektoré z týchto:' form_challenge: current_password: Vstupuješ do zabezpečenej časti imports: diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml index 51a21ff06..c7ef18b3a 100644 --- a/config/locales/simple_form.sl.yml +++ b/config/locales/simple_form.sl.yml @@ -67,7 +67,7 @@ sl: domain: To je lahko ime domene, ki se pokaže v e-poštnem naslovu, ali zapis MX, ki ga uporablja. Ob prijavi bo preverjeno. with_dns_records: Poskus razrešitve zapisov DNS danih domen bo izveden in rezultati bodo prav tako blokirani featured_tag: - name: 'Morda boste želeli uporabiti eno od teh:' + name: 'Tukaj je nekaj ključnikov, ki ste jih nedavno uporabili:' filters: action: Izberite, kako naj se program vede, ko se objava sklada s filtrom actions: diff --git a/config/locales/simple_form.sq.yml b/config/locales/simple_form.sq.yml index bc0890e0d..24212621b 100644 --- a/config/locales/simple_form.sq.yml +++ b/config/locales/simple_form.sq.yml @@ -66,8 +66,6 @@ sq: email_domain_block: domain: Ky mund të jetë emri i përkatësisë që shfaqet te adresa email, ose zëri MX që përdor. Do të kontrollohen gjatë regjistrimit. with_dns_records: Do të bëhet një përpjekje për ftillimin e zërave DNS të përkatësisë së dhënë dhe do të futen në listë bllokimesh edhe përfundimet - featured_tag: - name: 'Mund të doni të përdorni një nga këto:' filters: action: Zgjidhni cili veprim të kryhet, kur një postim ka përputhje me një filtër actions: @@ -75,8 +73,25 @@ sq: warn: Fshihe lëndën e filtruar pas një sinjalizimi që përmend titullin e filtrit form_admin_settings: backups_retention_period: Mbaji arkivat e prodhuara të përdoruesve për aq ditë sa numri i dhënë. + bootstrap_timeline_accounts: Këto llogari do të fiksohen në krye të rekomandimeve për ndjekje nga përdorues të rinj. + closed_registrations_message: Shfaqur kur mbyllen dritare regjistrimesh content_cache_retention_period: Postimet prej shërbyesve të tjerë do të fshihen pas numrit të dhënë të ditëve, kur këtij i jepet një vlerë pozitive. Kjo mund të jetë e pakthyeshme. + custom_css: Stile vetjakë mund të aplikoni në versionin web të Mastodon-it. + mascot: Anashkalon ilustrimin te ndërfaqja web e thelluar. media_cache_retention_period: Kartelat media të shkarkuara do të fshihen pas numrit të dhënë të ditëve, kur këtij i jepet një vlerë pozitive dhe rishkarkohen po u kërkua. + profile_directory: Drejtoria e profileve paraqet krejt përdoruesit që kanë zgjedhur të jenë të zbulueshëm. + require_invite_text: Kur regjistrimet lypin miratim dorazi, bëje tekstin “Përse doni të bëheni pjesë?” të detyrueshëm, në vend se opsional + site_contact_email: Si mund të lidhen me ju njerëzit, për çështje ligjore, ose për asistencë. + site_contact_username: Si mund të lidhen njerëzit me ju në Mastodon. + site_extended_description: Çfarëdo hollësie shtesë që mund të jetë e dobishme për vizitorët dhe përdoruesit tuaj. Mund të hartohet me sintaksë Markdown. + site_short_description: Një përshkrim i shkurtër për të ndihmuar identifikimin unik të shërbyesit tuaj. Kush e mban në punë, për kë është? + site_terms: Përdorni rregullat tuaja të privatësisë, ose lëreni të zbrazët që të përdoren ato parazgjedhje. Mund të hartohet me sintaksë Markdown. + site_title: Si mund t’i referohen njerëzit shërbyesit tuaj, përveç emrit të tij të përkatësisë. + theme: Temë që shohin vizitorët që kanë bërë daljen dhe përdorues të rinj. + thumbnail: Një figurë afërsisht 2:1 e shfaqur tok me hollësi mbi shërbyesin tuaj. + timeline_preview: Vizitorët që kanë bërë daljen do të jenë në gjendje të shfletojnë psotimet më të freskëta publike të passhme në shërbyes. + trendable_by_default: Anashkalo shqyrtim dorazi lënde në modë. Gjëra individuale prapë mund të hiqen nga lëndë në modë pas publikimi. + trends: Gjërat në modë shfaqin cilat postime, hashtagë dhe histori të reja po tërheqin vëmendjen në shërbyesin tuaj. form_challenge: current_password: Po hyni në një zonë të sigurt imports: @@ -213,8 +228,28 @@ sq: warn: Fshihe me një sinjalizim form_admin_settings: backups_retention_period: Periudhë mbajtjeje arkivash përdoruesish + bootstrap_timeline_accounts: Rekomandoju përherë këto llogari përdoruesve të rinj + closed_registrations_message: Mesazh vetjak për pamundësi regjistrimesh të reja content_cache_retention_period: Periudhë mbajtjeje lënde fshehtine + custom_css: CSS Vetjake + mascot: Simbol vetjak (e dikurshme) media_cache_retention_period: Periudhë mbajtjeje lënde media + profile_directory: Aktivizo drejtori profilesh + registrations_mode: Kush mund të regjistrohet + require_invite_text: Kërko një arsye për pjesëmarrje + show_domain_blocks: Shfaq bllokime përkatësish + show_domain_blocks_rationale: Shfaq pse janë bllokuar përkatësitë + site_contact_email: Email kontakti + site_contact_username: Emër përdoruesi kontakti + site_extended_description: Përshkrim i zgjeruar + site_short_description: Përshkrim shërbyesi + site_terms: Rregulla Privatësie + site_title: Emër shërbyesi + theme: Temë parazgjedhje + thumbnail: Miniaturë shërbyesi + timeline_preview: Lejo hyrje pa mirëfilltësim te rrjedha kohore publike + trendable_by_default: Lejoni gjëra në modë pa shqyrtim paraprak + trends: Aktivizo gjëra në modë interactions: must_be_follower: Blloko njoftime nga jo-ndjekës must_be_following: Blloko njoftime nga persona që s’i ndiqni diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml index 282c0ce70..108430917 100644 --- a/config/locales/simple_form.sv.yml +++ b/config/locales/simple_form.sv.yml @@ -5,73 +5,129 @@ sv: account_alias: acct: Ange användarnamn@domän för kontot som du vill flytta från account_migration: - acct: Ange användarnamn@domän för kontot du flyttar till + acct: Ange användarnamn@domän för kontot du vill flytta till account_warning_preset: text: Du kan använda inläggssyntax som webbadresser, hashtaggar och omnämnanden title: Valfri. Inte synlig för mottagaren admin_account_action: - include_statuses: Användaren ser de toots som orsakat moderering eller varning - send_email_notification: Användaren kommer att få en förklaring av vad som hände med sitt konto - text_html: Extra. Du kan använda toot syntax. Du kan lägga till förvalda varningar för att spara tid + include_statuses: Användaren ser vilka inlägg som orsakat modereringsåtgärd eller varning + send_email_notification: Användaren kommer få en förklaring på vad som hände med deras konto + text_html: Valfri. Du kan använda inläggssyntax. Du kan lägga till förvalda varningar för att spara tid type_html: Välj vad du vill göra med %{acct} types: - disable: Förhindra användaren från att använda sitt konto, men ta inte bort eller dölj innehållet. - none: Använd det här för att skicka en varning till användaren, utan att trigga någon annan åtgärd. - sensitive: Tvinga denna användares alla mediebilagor att flaggas som känsliga. - warning_preset_id: Extra. Du kan lägga till valfri text i slutet av förinställningen + disable: Förhindra användaren från att använda sitt konto, men radera eller dölj inte innehållet. + none: Använd det här för att skicka en varning till användaren, utan att vidta någon ytterligare åtgärd. + sensitive: Tvinga alla denna användares mediebilagor till att flaggas som känsliga. + silence: Hindra användaren från att kunna göra offentliga inlägg, göm deras inlägg och notiser från folk som inte följer dem. + suspend: Hindra all interaktion från eller till detta konto och radera allt dess innehåll. Går att ångra inom 30 dagar. + warning_preset_id: Valfri. Du kan lägga till anpassad text i slutet av förinställningen announcement: all_day: När det är markerat visas endast datum för tidsintervallet - ends_at: Frivillig. Meddelandet kommer automatiskt att publiceras just nu - scheduled_at: Lämna tomt för att publicera meddelandet omedelbart - starts_at: Valfritt. Om ditt meddelande är bundet till ett visst tidsintervall + ends_at: Valfri. Kungörelsen kommer automatiskt avpubliceras vid denna tidpunkt + scheduled_at: Lämna tomt för att publicera kungörelsen omedelbart + starts_at: Valfritt. Om din kungörelse är bunden till ett visst tidsintervall + text: Du kan använda inläggssyntax. Håll i åtanke hur mycket plats din kungörelse tar upp på användarnas skärmar appeal: text: Du kan endast överklaga en varning en gång defaults: autofollow: Användarkonton som skapas genom din inbjudan kommer automatiskt följa dig avatar: PNG, GIF eller JPG. Högst %{size}. Kommer att skalas ner till %{dimensions}px bot: Detta konto utför huvudsakligen automatiserade åtgärder och kanske inte övervakas + context: Ett eller fler sammanhang där filtret ska tillämpas + current_password: Av säkerhetsskäl krävs lösenordet till det nuvarande kontot + current_username: Ange det nuvarande kontots användarnamn för att bekräfta digest: Skickas endast efter en lång period av inaktivitet och endast om du har fått några personliga meddelanden i din frånvaro + discoverable: Tillåt att ditt konto upptäcks av främlingar genom rekommendationer, trender och andra funktioner email: Du kommer att få ett bekräftelsemeddelande via e-post fields: Du kan ha upp till 4 objekt visade som en tabell på din profil header: PNG, GIF eller JPG. Högst %{size}. Kommer att skalas ner till %{dimensions}px + inbox_url: Kopiera webbadressen från hemsidan av det ombud du vill använda irreversible: Filtrerade inlägg kommer att försvinna oåterkalleligt, även om filter tas bort senare locale: Språket för användargränssnittet, e-postmeddelanden och push-aviseringar locked: Kräver att du manuellt godkänner följare password: Använd minst 8 tecken + phrase: Matchas oavsett användande i text eller innehållsvarning för ett inlägg + scopes: 'Vilka API: er applikationen kommer tillåtas åtkomst till. Om du väljer en omfattning på högstanivån behöver du inte välja individuella sådana.' + setting_aggregate_reblogs: Visa inte nya boostningar för inlägg som nyligen blivit boostade (påverkar endast nymottagna boostningar) + setting_always_send_emails: E-postnotiser kommer vanligtvis inte skickas när du aktivt använder Mastodon + setting_default_sensitive: Känslig media döljs som standard och kan visas med ett klick setting_display_media_default: Dölj media markerad som känslig setting_display_media_hide_all: Dölj alltid all media setting_display_media_show_all: Visa alltid media markerad som känslig setting_hide_network: Vem du följer och vilka som följer dig kommer inte att visas på din profilsida setting_noindex: Påverkar din offentliga profil och statussidor + setting_show_application: Applikationen du använder för att göra inlägg kommer visas i detaljvyn för dina inlägg + setting_use_blurhash: Gradienter är baserade på färgerna av de dolda objekten men fördunklar alla detaljer + setting_use_pending_items: Dölj tidslinjeuppdateringar bakom ett klick istället för att automatiskt bläddra i flödet username: Ditt användarnamn måste vara unikt på %{domain} + whole_word: När sökordet eller frasen endast är alfanumerisk, kommer det endast att tillämpas om det matchar hela ordet + domain_allow: + domain: Denna domän kommer att kunna hämta data från denna server och inkommande data från den kommer att behandlas och lagras email_domain_block: - with_dns_records: Ett försök att lösa den givna domänens DNS-poster kommer att göras och resultaten kommer också att blockeras + domain: Detta kan vara domännamnet som dyker upp i e-postadressen eller MX-posten som används. De kommer kontrolleras vid registrering. + with_dns_records: Ett försök att slå upp den angivna domänens DNS-poster kommer att göras och resultaten kommer också att blockeras featured_tag: - name: 'Du kan vilja använda en av dessa:' + name: 'Här är några av de hashtaggar du använt nyligen:' + filters: + action: Välj vilken åtgärd som ska utföras när ett inlägg matchar filtret + actions: + hide: Dölj det filtrerade innehållet helt (beter sig som om det inte fanns) + warn: Dölj det filtrerade innehållet bakom en varning som visar filtrets rubrik + form_admin_settings: + backups_retention_period: Behåll genererade användararkiv i det angivna antalet dagar. + bootstrap_timeline_accounts: Dessa konton kommer fästas högst upp i nya användares följrekommendationer. + closed_registrations_message: Visas när nyregistreringar är avstängda + content_cache_retention_period: Inlägg från andra servrar kommer att raderas efter det angivna antalet dagar när detta är inställt på ett positivt värde. Åtgärden kan vara oåterkallelig. + custom_css: Du kan använda anpassade stilar på webbversionen av Mastodon. + mascot: Åsidosätter illustrationen i det avancerade webbgränssnittet. + media_cache_retention_period: Nedladdade mediefiler kommer raderas efter det angivna antalet dagar, om inställt till ett positivt värde, och laddas ned på nytt vid behov. + profile_directory: Profilkatalogen visar alla användare som har samtyckt till att bli upptäckbara. + require_invite_text: Gör fältet "Varför vill du gå med?" obligatoriskt när nyregistreringar kräver manuellt godkännande + site_contact_email: Hur människor kan nå dig för juridiska spörsmål eller supportfrågor. + site_contact_username: Hur folk kan nå dig på Mastodon. + site_extended_description: Eventuell övrig information som kan vara användbar för besökare och dina användare. Kan struktureras med Markdown-syntax. + site_short_description: En kort beskrivning för att unikt identifiera din server. Vem är det som driver den, vilka är den till för? + site_terms: Använd din egen sekretesspolicy eller lämna tomt för att använda standardinställningen. Kan struktureras med Markdown-syntax. + site_title: Hur folk kan hänvisa till din server förutom med dess domännamn. + theme: Tema som utloggade besökare och nya användare ser. + thumbnail: En bild i cirka 2:1-proportioner som visas tillsammans med din serverinformation. + timeline_preview: Utloggade besökare kommer kunna bläddra bland de senaste offentliga inläggen som finns på servern. + trendable_by_default: Hoppa över manuell granskning av trendande innehåll. Enskilda objekt kan ändå raderas från trender retroaktivt. + trends: Trender visar vilka inlägg, hashtaggar och nyheter det pratas om på din server. form_challenge: current_password: Du går in i ett säkert område imports: - data: CSV-fil som exporteras från en annan Mastodon-instans + data: CSV-fil som exporterats från en annan Mastodon-server invite_request: - text: Det här kommer att hjälpa oss att granska din ansökan + text: Detta kommer hjälpa oss att granska din ansökan ip_block: comment: Valfritt. Kom ihåg varför du lade till denna regel. expires_in: IP-adresser är en ändlig resurs, de delas ibland och byter ofta händer. Av den här anledningen så rekommenderas inte IP-blockeringar på obestämd tid. - ip: Ange en IPv4 eller IPv6-adress. Du kan blockera hela intervall med hjälp av CIDR-syntax. Var försiktig så att du inte låser ut dig själv! + ip: Ange en IPv4- eller IPv6-adress. Du kan blockera hela intervall med hjälp av CIDR-syntax. Var försiktig så att du inte låser ute dig själv! severities: no_access: Blockera åtkomst till alla resurser - sign_up_block: Nya registreringar inte möjligt + sign_up_block: Nyregistreringar kommer inte vara möjliga sign_up_requires_approval: Nya registreringar kräver ditt godkännande severity: Välj vad som ska hända med förfrågningar från denna IP rule: - text: Beskriv en kort och enkel regel för användare på denna server + text: Beskriv en regel eller ett krav för användare av denna server. Försök hålla det kort och koncist sessions: - otp: 'Ange tvåfaktorkoden genererad från din telefonapp eller använd någon av dina återställningskoder:' - webauthn: Om det är en USB-nyckel se till att sätta in den och, om nödvändigt, knacka på den. + otp: 'Ange tvåfaktorskoden som genererades av din telefonapp, eller använd någon av dina återställningskoder:' + webauthn: Om det är en USB-nyckel se till att sätta in den och, om nödvändigt, tryck på den. tag: - name: Du kan bara ändra bokstävernas typ av variant, till exempel för att göra det mer läsbart + name: Du kan bara ändra skriftläget av bokstäverna, till exempel, för att göra det mer läsbart user: - chosen_languages: När aktiverat så visas bara inlägg i dina valda språk i den offentliga tidslinjen + chosen_languages: Vid aktivering visas bara inlägg på dina valda språk i offentliga tidslinjer + role: Rollen bestämmer vilka behörigheter användaren har + user_role: + color: Färgen som ska användas för rollen i användargränssnittet, som RGB i hex-format + highlighted: Detta gör rollen synlig offentligt + name: Offentligt namn på rollen, om rollen är inställd på att visas som ett emblem + permissions_as_keys: Användare med denna roll kommer ha tillgång till... + position: Högre roll avgör konfliktlösning i vissa situationer. Vissa åtgärder kan endast utföras på roller med lägre prioritet + webhook: + events: Välj händelser att skicka + url: Dit händelser kommer skickas labels: account: fields: @@ -86,15 +142,15 @@ sv: title: Rubrik admin_account_action: include_statuses: Inkludera rapporterade inlägg i e-postmeddelandet - send_email_notification: Meddela användaren via e-post + send_email_notification: Notifiera användaren via e-post text: Anpassad varning type: Åtgärd types: - disable: Inaktivera inloggning - none: Gör ingenting + disable: Frys + none: Skicka en varning sensitive: Känslig silence: Tysta - suspend: Stäng av + suspend: Pausa warning_preset_id: Använd en förinställd varning announcement: all_day: Heldagsevenemang @@ -102,6 +158,8 @@ sv: scheduled_at: Schemalägg publicering starts_at: Evenemangets början text: Kungörelse + appeal: + text: Redogör anledningen till att detta beslut bör upphävas defaults: autofollow: Bjud in till att följa ditt konto avatar: Profilbild @@ -109,35 +167,36 @@ sv: chosen_languages: Filtrera språk confirm_new_password: Bekräfta nytt lösenord confirm_password: Bekräfta lösenord - context: Filter sammanhang + context: Filtrera sammanhang current_password: Nuvarande lösenord data: Data - discoverable: Lista detta konto i katalogen + discoverable: Föreslå konto för andra display_name: Visningsnamn email: E-postadress - expires_in: Förfaller efter + expires_in: Utgår efter fields: Profil-metadata - header: Bakgrundsbild + header: Sidhuvud honeypot: "%{label} (fyll inte i)" - inbox_url: URL för reläinkorg + inbox_url: Webbadress för ombudsinkorg irreversible: Släng istället för att dölja - locale: Språk - locked: Lås konto - max_uses: Högst antal användningar + locale: Språk för gränssnittet + locked: Kräv följförfrågningar + max_uses: Max antal användningar new_password: Nytt lösenord note: Biografi otp_attempt: Tvåfaktorskod password: Lösenord - phrase: Nyckelord eller fras + phrase: Nyckelord eller -fras setting_advanced_layout: Aktivera avancerat webbgränssnitt - setting_aggregate_reblogs: Gruppera knuffar i tidslinjer - setting_auto_play_gif: Spela upp animerade GIF-bilder automatiskt - setting_boost_modal: Visa bekräftelsedialog innan du knuffar - setting_crop_images: Beskär bilder i icke-utökade tutningar till 16x9 - setting_default_language: Språk - setting_default_privacy: Postintegritet + setting_aggregate_reblogs: Gruppera boostningar i tidslinjer + setting_always_send_emails: Skicka alltid e-postnotiser + setting_auto_play_gif: Spela upp GIF:ar automatiskt + setting_boost_modal: Visa bekräftelsedialog innan boostningar + setting_crop_images: Beskär bilder i icke-utökade inlägg till 16x9 + setting_default_language: Inläggsspråk + setting_default_privacy: Inläggsintegritet setting_default_sensitive: Markera alltid media som känsligt - setting_delete_modal: Visa bekräftelsedialog innan du raderar en toot + setting_delete_modal: Visa bekräftelsedialog innan radering av inlägg setting_disable_swiping: Inaktivera svepande rörelser setting_display_media: Mediavisning setting_display_media_default: Standard @@ -156,6 +215,7 @@ sv: setting_use_pending_items: Långsamt läge severity: Strikthet sign_in_token_attempt: Säkerhetskod + title: Rubrik type: Importtyp username: Användarnamn username_or_email: Användarnamn eller e-mail @@ -164,11 +224,37 @@ sv: with_dns_records: Inkludera MX-poster och IP-adresser för domänen featured_tag: name: Hashtag + filters: + actions: + hide: Dölj helt + warn: Dölj med en varning form_admin_settings: + backups_retention_period: Lagringsperiod för användararkivet + bootstrap_timeline_accounts: Rekommendera alltid dessa konton till nya användare + closed_registrations_message: Anpassat meddelande när nyregistreringar inte är tillgängliga + content_cache_retention_period: Tid för bibehållande av innehållscache + custom_css: Anpassad CSS + mascot: Anpassad maskot (tekniskt arv) + media_cache_retention_period: Tid för bibehållande av mediecache + profile_directory: Aktivera profilkatalog + registrations_mode: Vem kan registrera sig + require_invite_text: Kräv anledning för att gå med + show_domain_blocks: Visa domänblockeringar + show_domain_blocks_rationale: Visa varför domäner blockerades + site_contact_email: Kontakt via e-post + site_contact_username: Användarnamn för kontakt + site_extended_description: Utökad beskrivning + site_short_description: Serverbeskrivning site_terms: Integritetspolicy + site_title: Servernamn + theme: Standardtema + thumbnail: Serverns tumnagelbild + timeline_preview: Tillåt oautentiserad åtkomst till offentliga tidslinjer + trendable_by_default: Tillåt trender utan föregående granskning + trends: Aktivera trender interactions: - must_be_follower: Blockera aviseringar från icke-följare - must_be_following: Blockera aviseringar från personer du inte följer + must_be_follower: Blockera notiser från icke-följare + must_be_following: Blockera notiser från personer du inte följer must_be_following_dm: Blockera direktmeddelanden från personer du inte följer invite: comment: Kommentar @@ -183,25 +269,40 @@ sv: sign_up_requires_approval: Begränsa registreringar severity: Regel notification_emails: - digest: Skicka sammandrag via e-post - favourite: Skicka e-post när någon favoriserar din status - follow: Skicka e-post när någon följer dig - follow_request: Skicka e-post när någon begär att följa dig - mention: Skicka e-post när någon nämner dig - pending_account: Nytt konto behöver granskas - reblog: Skicka e-post när någon knuffar din status + appeal: Någon överklagar ett moderatorbeslut + digest: Skicka e-postsammandrag + favourite: Någon favoritmarkerar ditt inlägg + follow: Någon följt dig + follow_request: Någon begärt att följa dig + mention: Någon nämnt dig + pending_account: Ett nytt konto behöver granskas + reblog: Någon boostar ditt inlägg + report: En ny rapport har skickats + trending_tag: En ny trend kräver granskning rule: text: Regel tag: - listable: Tillåt att denna hashtag visas i sökningar och förslag - name: Hashtag - trendable: Tillåt att denna hashtag visas under trender - usable: Tillåt tutningar att använda denna hashtag + listable: Tillåt denna hashtagg att visas i sökningar och förslag + name: Hashtagg + trendable: Tillåt denna hashtagg att visas under trender + usable: Tillåt inlägg att använda denna hashtagg + user: + role: Roll + user_role: + color: Emblemsfärg + highlighted: Visa roll som emblem på användarprofiler + name: Namn + permissions_as_keys: Behörigheter + position: Prioritet + webhook: + events: Aktiverade händelser + url: Slutpunkts-URL 'no': Nej + not_recommended: Rekommenderas inte recommended: Rekommenderad required: mark: "*" - text: obligatorisk + text: krävs title: sessions: webauthn: Använd en av dina säkerhetsnycklar för att logga in diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index 1d5c810cd..a17d62a9b 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -66,13 +66,13 @@ th: email_domain_block: domain: สิ่งนี้สามารถเป็นชื่อโดเมนที่ปรากฏในที่อยู่อีเมลหรือระเบียน MX ที่โดเมนใช้ จะตรวจสอบโดเมนเมื่อลงทะเบียน with_dns_records: จะทำการพยายามแปลงที่อยู่ระเบียน DNS ของโดเมนที่กำหนดและจะปิดกั้นผลลัพธ์เช่นกัน - featured_tag: - name: 'คุณอาจต้องการใช้หนึ่งในนี้:' filters: action: เลือกว่าการกระทำใดที่จะทำเมื่อโพสต์ตรงกับตัวกรอง actions: hide: ซ่อนเนื้อหาที่กรองอยู่อย่างสมบูรณ์ ทำเสมือนว่าไม่มีเนื้อหาอยู่ warn: ซ่อนเนื้อหาที่กรองอยู่หลังคำเตือนที่กล่าวถึงชื่อเรื่องของตัวกรอง + form_admin_settings: + closed_registrations_message: แสดงเมื่อมีการปิดการลงทะเบียน form_challenge: current_password: คุณกำลังเข้าสู่พื้นที่ปลอดภัย imports: diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml index fa9620476..838317e20 100644 --- a/config/locales/simple_form.tr.yml +++ b/config/locales/simple_form.tr.yml @@ -66,8 +66,6 @@ tr: email_domain_block: domain: Bu e-posta adresinde görünen veya kullanılan MX kaydındaki alan adı olabilir. Kayıt sırasında denetleneceklerdir. with_dns_records: Belirli bir alanın DNS kayıtlarını çözmeyi deneyecek ve sonuçlar kara listeye eklenecek - featured_tag: - name: 'Bunlardan birini kullanmak isteyebilirsiniz:' filters: action: Bir gönderi filtreyle eşleştiğinde hangi eylemin yapılacağını seçin actions: diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index 506197b22..756fd0795 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -26,7 +26,7 @@ uk: ends_at: Необов'язково. Оголошення буде автоматично знято з публікації scheduled_at: Залиште поля незаповненими, щоб опублікувати оголошення відразу starts_at: Необов'язково. У разі якщо оголошення прив'язується до певного періоду часу - text: Ви можете використовувати той же синтаксис, що і в постах. Будьте завбачливі щодо місця, яке займе оголошення на екрані користувачів + text: Ви можете використовувати той же синтаксис, що і в дописах. Будьте завбачливі щодо місця, яке займе оголошення на екрані користувачів appeal: text: Ви можете оскаржити рішення лише один раз defaults: @@ -44,7 +44,7 @@ uk: inbox_url: Скопіюйте інтернет-адресу з титульної сторінки ретранслятора irreversible: Відсіяні дмухи зникнуть назавжди, навіть якщо фільтр потім буде знято locale: Мова інтерфейсу, електронних листів та push-сповіщень - locked: Буде вимагати від Вас самостійного підтверждення підписників, змінить приватність постів за замовчуванням на "тільки для підписників" + locked: Вручну контролюйте, хто може слідкувати за вами, затверджуючи запити на стеження password: Не менше 8 символів phrase: Шукає без врахування регістру у тексті дмуха або у його попередженні про вміст scopes: Які API додатку буде дозволено використовувати. Якщо ви виберете самий верхній, нижчестоящі будуть обрані автоматично. @@ -62,12 +62,12 @@ uk: username: Ваше ім'я користувача буде унікальним у %{domain} whole_word: Якщо пошукове слово або фраза містить лише літери та цифри, воно має збігатися цілком domain_allow: - domain: Цей домен зможе отримувати дані з цього серверу. Вхідні дані будуть оброблені та збережені + domain: Цей домен зможе отримувати дані з цього сервера. Вхідні дані будуть оброблені та збережені email_domain_block: domain: Це може бути доменне ім'я, яке відображується в адресі електронної пошти, або використовуваний запис MX. Вони будуть перевірятися при реєстрації. with_dns_records: Спроба визначення DNS-записів заданого домену буде здійснена, а результати також будуть занесені до чорного списку featured_tag: - name: 'Можливо, ви захочете використовувати один з цих:' + name: 'Ось деякі використані останнім часом хештеґи:' filters: action: Виберіть дію для виконання коли допис збігається з фільтром actions: @@ -192,9 +192,9 @@ uk: setting_always_send_emails: Завжди надсилати сповіщення електронною поштою setting_auto_play_gif: Автоматично відтворювати анімовані GIF setting_boost_modal: Відображати діалог підтвердження під час передмухування - setting_crop_images: Обрізати зображення в нерозкритих постах до 16x9 + setting_crop_images: Обрізати зображення в нерозкритих дописах до 16x9 setting_default_language: Мова дмухів - setting_default_privacy: Видимість постів + setting_default_privacy: Видимість дописів setting_default_sensitive: Позначити медіа як дражливе setting_delete_modal: Показувати діалог підтвердження під час видалення дмуху setting_disable_swiping: Вимкнути рух проведення diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml index e7f83892d..7f4de3df2 100644 --- a/config/locales/simple_form.vi.yml +++ b/config/locales/simple_form.vi.yml @@ -31,16 +31,16 @@ vi: text: Bạn chỉ có thể khiếu nại mỗi lần một cảnh cáo defaults: autofollow: Những người đăng ký sẽ tự động theo dõi bạn - avatar: PNG, GIF hoặc JPG. Kích cỡ tối đa %{size}. Sẽ bị nén xuống %{dimensions}px + avatar: PNG, GIF hoặc JPG, tối đa %{size}. Sẽ bị nén xuống %{dimensions}px bot: Tài khoản này tự động thực hiện các hành động và không được quản lý bởi người thật context: Chọn một hoặc nhiều nơi mà bộ lọc sẽ áp dụng current_password: Vì mục đích bảo mật, vui lòng nhập mật khẩu của tài khoản hiện tại current_username: Để xác nhận, vui lòng nhập tên người dùng của tài khoản hiện tại digest: Chỉ gửi sau một thời gian dài không hoạt động hoặc khi bạn nhận được tin nhắn (trong thời gian vắng mặt) - discoverable: Cho phép tài khoản của bạn xuất hiện trong gợi ý theo dõi, xu hướng và những tính năng khác + discoverable: Cho phép tài khoản của bạn xuất hiện trong gợi ý theo dõi, thịnh hành và những tính năng khác email: Bạn sẽ được gửi một email xác nhận fields: Được phép thêm tối đa 4 mục trên trang hồ sơ của bạn - header: PNG, GIF hoặc JPG. Kích cỡ tối đa %{size}. Sẽ bị nén xuống %{dimensions}px + header: PNG, GIF hoặc JPG, tối đa %{size}. Sẽ bị nén xuống %{dimensions}px inbox_url: Sao chép URL của máy chủ mà bạn muốn dùng irreversible: Các tút đã lọc sẽ không thể phục hồi, kể cả sau khi xóa bộ lọc locale: Ngôn ngữ của giao diện, email và thông báo đẩy @@ -51,10 +51,10 @@ vi: setting_aggregate_reblogs: Nếu một tút đã được đăng lại thì những lượt đăng lại sau sẽ không hiện trên bảng tin nữa setting_always_send_emails: Bình thường thì email thông báo sẽ không gửi khi bạn đang dùng Mastodon setting_default_sensitive: Mặc định là nội dung nhạy cảm và chỉ hiện nếu nhấn vào - setting_display_media_default: Làm mờ những thứ được đánh dấu là nhạy cảm - setting_display_media_hide_all: Không hiển thị + setting_display_media_default: Làm mờ nội dung nhạy cảm + setting_display_media_hide_all: Ẩn setting_display_media_show_all: Luôn hiển thị - setting_hide_network: Ẩn những người bạn theo dõi và những người theo dõi bạn trên trang hồ sơ + setting_hide_network: Ẩn những người bạn theo dõi và những người theo dõi bạn setting_noindex: Ảnh hưởng đến trang cá nhân và tút của bạn setting_show_application: Tên ứng dụng bạn dùng để đăng tút sẽ hiện trong chi tiết của tút setting_use_blurhash: Lớp phủ mờ dựa trên màu sắc của hình ảnh nhạy cảm @@ -67,7 +67,7 @@ vi: domain: Phân tích tên miền thành các tên miền MX sau, các tên miền này chịu trách nhiệm cuối cùng trong chấp nhận email. Giá trị MX sẽ chặn đăng ký từ bất kỳ địa chỉ email nào sử dụng cùng một giá trị MX, ngay cả khi tên miền hiển thị là khác. with_dns_records: Nếu DNS có vấn đề, nó sẽ bị đưa vào danh sách cấm featured_tag: - name: 'Những hashtag gợi ý cho bạn:' + name: 'Các hashtag mà bạn đã sử dụng gần đây:' filters: action: Chọn hành động sẽ thực hiện khi một tút khớp với bộ lọc actions: @@ -93,7 +93,7 @@ vi: thumbnail: 'Một hình ảnh tỉ lệ 2: 1 được hiển thị cùng với thông tin máy chủ của bạn.' timeline_preview: Khách truy cập đã đăng xuất sẽ có thể xem các tút công khai gần đây nhất trên máy chủ. trendable_by_default: Bỏ qua việc duyệt thủ công nội dung thịnh hành. Các mục riêng lẻ vẫn có thể bị xóa khỏi xu hướng sau này. - trends: Xu hướng hiển thị tút, hashtag và tin tức nào đang thu hút thảo luận trên máy chủ của bạn. + trends: Hiển thị những tút, hashtag và tin tức đang được thảo luận nhiều trên máy chủ của bạn. form_challenge: current_password: Biểu mẫu này an toàn imports: @@ -171,7 +171,7 @@ vi: current_password: Mật khẩu hiện tại data: Dữ liệu discoverable: Đề xuất tài khoản - display_name: Tên hiển thị + display_name: Biệt danh email: Địa chỉ email expires_in: Hết hạn sau fields: Metadata @@ -209,7 +209,7 @@ vi: setting_show_application: Hiện ứng dụng đã dùng để đăng tút setting_system_font_ui: Dùng phông chữ mặc định của hệ thống setting_theme: Giao diện - setting_trends: Hiển thị xu hướng hôm nay + setting_trends: Hiển thị thịnh hành hôm nay setting_unfollow_modal: Yêu cầu xác nhận trước khi ngưng theo dõi ai đó setting_use_blurhash: Làm mờ trước ảnh/video nhạy cảm setting_use_pending_items: Không tự động cập nhật bảng tin @@ -250,8 +250,8 @@ vi: theme: Chủ đề mặc định thumbnail: Hình thu nhỏ của máy chủ timeline_preview: Cho phép truy cập vào dòng thời gian công khai - trendable_by_default: Cho phép xu hướng mà không cần xem xét trước - trends: Bật xu hướng + trendable_by_default: Cho phép thịnh hành mà không cần duyệt trước + trends: Bật thịnh hành interactions: must_be_follower: Chặn thông báo từ những người không theo dõi bạn must_be_following: Chặn thông báo từ những người bạn không theo dõi @@ -278,13 +278,13 @@ vi: pending_account: Phê duyệt tài khoản mới reblog: Ai đó đăng lại tút của bạn report: Ai đó gửi báo cáo - trending_tag: Phê duyệt xu hướng mới + trending_tag: Phê duyệt nội dung nổi bật mới rule: text: Quy tắc tag: listable: Cho phép xuất hiện trong tìm kiếm và đề xuất name: Hashtag - trendable: Cho phép xuất hiện trong xu hướng + trendable: Cho phép hashtag này thịnh hành usable: Cho phép dùng trong tút user: role: Vai trò diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index ad36ddf6e..793a39b00 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -67,7 +67,7 @@ zh-CN: domain: 这可以是电子邮件地址的域名或它使用的 MX 记录所指向的域名。用户注册时,系统会对此检查。 with_dns_records: Mastodon 会尝试解析所给域名的 DNS 记录,然后把解析结果一并封禁 featured_tag: - name: 你可能想要使用以下之一: + name: 以下是您最近使用的主题标签: filters: action: 选择在帖子匹配过滤器时要执行的操作 actions: diff --git a/config/locales/simple_form.zh-HK.yml b/config/locales/simple_form.zh-HK.yml index 412b1a769..24533e604 100644 --- a/config/locales/simple_form.zh-HK.yml +++ b/config/locales/simple_form.zh-HK.yml @@ -61,8 +61,6 @@ zh-HK: domain: 此網域將能從此站獲取資料,而此站發出的數據也會被處理和存儲。 email_domain_block: with_dns_records: Mastodon 會嘗試解析所給域名的 DNS 記錄,然後與解析結果一併封禁 - featured_tag: - name: 你可能想使用其中一個: form_challenge: current_password: 你正要進入安全區域 imports: diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index ee12f0252..efb8a7a78 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -67,7 +67,7 @@ zh-TW: domain: 這可以是顯示在電子郵件中的網域名稱,或是其使用的 MX 紀錄。其將在註冊時檢查。 with_dns_records: Mastodon 會嘗試解析所給域名的 DNS 記錄,解析結果一致者將一併封鎖 featured_tag: - name: 您可能想使用其中一個: + name: 這些是您最近使用的一些主題標籤: filters: action: 請選擇當嘟文符合該過濾器時將被執行之動作 actions: diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 01fe28255..5f46aa9e4 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -213,6 +213,7 @@ sl: reject_user: Zavrni uporabnika remove_avatar_user: Odstrani avatar reopen_report: Ponovno odpri prijavo + resend_user: Ponovno pošlji potrditveno e-pošto reset_password_user: Ponastavi geslo resolve_report: Razreši prijavo sensitive_account: Občutljivi račun @@ -271,6 +272,7 @@ sl: reject_user_html: "%{name} je zavrnil/a registracijo iz %{target}" remove_avatar_user_html: "%{name} je odstranil podobo (avatar) uporabnika %{target}" reopen_report_html: "%{name} je ponovno odprl/a prijavo %{target}" + resend_user_html: "%{name} je ponovno poslal_a potrditveno e-sporočilo za %{target}" reset_password_user_html: "%{name} je ponastavil/a geslo uporabnika %{target}" resolve_report_html: "%{name} je razrešil/a prijavo %{target}" sensitive_account_html: "%{name} je označil/a medije računa %{target}'s kot občutljive" diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 8010f4930..36ebb26ec 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -207,6 +207,7 @@ sq: reject_user: Hidhe Poshtë Përdoruesin remove_avatar_user: Hiqe Avatarin reopen_report: Rihape Raportimin + resend_user: Ridërgo Email Ripohimi reset_password_user: Ricaktoni Fjalëkalimin resolve_report: Zgjidhe Raportimin sensitive_account: I vini shenjë si rezervat medias në llogarinë tuaj @@ -265,6 +266,7 @@ sq: reject_user_html: "%{name} hodhi poshtë regjistrimin nga %{target}" remove_avatar_user_html: "%{name} hoqi avatarin e %{target}" reopen_report_html: "%{name} rihapi raportimin %{target}" + resend_user_html: "%{name} ridërgoi email ripohimi për %{target}" reset_password_user_html: "%{name} ricaktoi fjalëkalimi për përdoruesin %{target}" resolve_report_html: "%{name} zgjidhi raportimin %{target}" sensitive_account_html: "%{name} i vuri shenjë si rezervat medias në %{target}" @@ -664,29 +666,67 @@ sq: empty: S’janë përcaktuar ende rregulla shërbyesi. title: Rregulla shërbyesi settings: + about: + manage_rules: Administroni rregulla shërbyesi + preamble: Jepni informacion të hollësishëm rreth se si mbahet në punë, si moderohet dhe si financohet shërbyesi. + rules_hint: Ka një zonë enkas për rregulla me të cilat pritet që përdoruesit tuaj të pajtohen. + title: Mbi + appearance: + preamble: Përshtatni ndërfaqen web të Mastodon-it. + title: Dukje + branding: + preamble: Elementët e markës të shërbyesit tuaj e dallojnë atë nga shërbyes të tjerë në rrjet. Këto hollësi mund të shfaqen në një larmi mjedisesh, bie fjala, në ndërfaqen web të Mastodon-it, aplikacione për platforma të ndryshme, në paraparje lidhjesh në sajte të tjerë dhe brenda aplikacionesh për shkëmbim mesazhesh, e me radhë. Për këtë arsyes, më e mira është që këto hollësi të jenë të qarta, të shkurtra dhe të kursyera. + title: Elementë marke + content_retention: + preamble: Kontrolloni se si depozitohen në Mastodon lënda e prodhuar nga përdoruesit. + title: Mbajtje lënde + discovery: + follow_recommendations: Rekomandime ndjekjeje + preamble: Shpërfaqja e lëndës interesante është me rëndësi kyçe për mirëseardhjen e përdoruesve të rinj që mund të mos njohin njeri në Mastodon. Kontrolloni se si funksionojnë në shërbyesin tuaj veçori të ndryshme zbulimi. + profile_directory: Drejtori profilesh + public_timelines: Rrjedha kohore publike + title: Zbulim + trends: Në modë domain_blocks: all: Për këdo disabled: Për askënd users: Për përdorues vendorë që kanë bërë hyrjen + registrations: + preamble: Kontrolloni cilët mund të krijojnë llogari në shërbyesin tuaj. + title: Regjistrime registrations_mode: modes: approved: Për regjistrim, lypset miratimi none: S’mund të regjistrohet ndokush open: Mund të regjistrohet gjithkush + title: Rregullime Shërbyesi site_uploads: delete: Fshi kartelën e ngarkuar destroyed_msg: Ngarkimi në sajt u fshi me sukses! statuses: + account: Autor + application: Aplikacion back_to_account: Mbrapsht te faqja e llogarisë back_to_report: Mbrapsht te faqja e raportimit batch: remove_from_report: Hiqe prej raportimit report: Raportojeni deleted: E fshirë + favourites: Të parapëlqyer + history: Historik versioni + in_reply_to: Përgjigje për + language: Gjuhë media: title: Media + metadata: Tejtëdhëna no_status_selected: S’u ndryshua ndonjë gjendje, ngaqë s’u përzgjodh ndonjë e tillë + open: Hape postimin + original_status: Postim origjinal + reblogs: Riblogime + status_changed: Postimi ndryshoi title: Gjendje llogarish + trending: Në modë + visibility: Dukshmëri with_media: Me media strikes: actions: @@ -1206,6 +1246,8 @@ sq: carry_blocks_over_text: Ky përdorues lëvizi prej %{acct}, të cilin e keni bllokuar. carry_mutes_over_text: Ky përdorues lëvizi prej %{acct}, që e keni heshtuar. copy_account_note_text: 'Ky përdorues ka ikur prej %{acct}, ja ku janë shënimet tuaja të mëparshme mbi të:' + navigation: + toggle_menu: Shfaq/Fshih menunë notification_mailer: admin: report: diff --git a/config/locales/sv.yml b/config/locales/sv.yml index df7d27efd..079244484 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -1,7 +1,7 @@ --- sv: about: - about_mastodon_html: Mastodon är ett socialt nätverk baserat på öppna webbprotokoll och gratis, öppen källkodsprogramvara. Det är decentraliserat som e-post. + about_mastodon_html: 'Framtidens sociala medium: Ingen reklam. Ingen övervakning. Etisk design och decentralisering! Äg din data med Mastodon!' contact_missing: Inte inställd contact_unavailable: Ej tillämplig hosted_on: Mastodon-värd på %{domain} @@ -19,9 +19,9 @@ sv: pin_errors: following: Du måste vara följare av den person du vill godkänna posts: - one: Tuta - other: Tutor - posts_tab_heading: Tutor + one: Inlägg + other: Inlägg + posts_tab_heading: Inlägg admin: account_actions: action: Utför åtgärd @@ -33,15 +33,22 @@ sv: accounts: add_email_domain_block: Blockera e-postdomän approve: Godkänn + approved_msg: "%{username}s registreringsansökan godkändes" are_you_sure: Är du säker? avatar: Profilbild by_domain: Domän change_email: - current_email: Nuvarande E-postadress - label: Byt E-postadress - new_email: Ny E-postadress - submit: Byt E-postadress - title: Byt E-postadress för %{username} + changed_msg: E-postadressen har ändrats! + current_email: Nuvarande e-postadress + label: Byt e-postadress + new_email: Ny e-postadress + submit: Byt e-postadress + title: Byt e-postadress för %{username} + change_role: + changed_msg: Rollen har ändrats! + label: Ändra roll + no_role: Ingen roll + title: Ändra roll för %{username} confirm: Bekräfta confirmed: Bekräftad confirming: Bekräftande @@ -51,6 +58,7 @@ sv: demote: Degradera destroyed_msg: "%{username}'s data har nu lagts till kön för att raderas omedelbart" disable: inaktivera + disable_sign_in_token_auth: Inaktivera autentisering med e-post-token disable_two_factor_authentication: Inaktivera 2FA disabled: inaktiverad display_name: Visningsnamn @@ -59,6 +67,7 @@ sv: email: E-post email_status: E-poststatus enable: Aktivera + enable_sign_in_token_auth: Aktivera autentisering med e-post-token enabled: Aktiverad enabled_msg: Uppfrysningen av %{username}'s konto lyckades followers: Följare @@ -83,6 +92,7 @@ sv: active: Aktiv all: Alla pending: Väntande + silenced: Begränsad suspended: Avstängd title: Moderering moderation_notes: Moderation anteckning @@ -90,6 +100,7 @@ sv: most_recent_ip: Senaste IP no_account_selected: Inga konton har ändrats och inget har valts no_limits_imposed: Inga begränsningar har införts + no_role_assigned: Ingen roll tilldelad not_subscribed: Inte prenumererat pending: Inväntar granskning perform_full_suspension: Utför full avstängning @@ -102,9 +113,13 @@ sv: public: Offentlig push_subscription_expires: PuSH-prenumerationen löper ut redownload: Uppdatera profil + redownloaded_msg: Uppdaterade %{username}s profil från server reject: Förkasta + rejected_msg: Avvisade %{username}s registreringsansökan remove_avatar: Ta bort avatar remove_header: Ta bort rubrik + removed_avatar_msg: Tog bort %{username}s profilbild + removed_header_msg: Tog bort %{username}s sidhuvudsbild resend_confirmation: already_confirmed: Den här användaren är redan bekräftad send: Skicka om e-postbekräftelse @@ -112,6 +127,7 @@ sv: reset: Återställ reset_password: Återställ lösenord resubscribe: Starta en ny prenumeration + role: Roll search: Sök search_same_email_domain: Andra användare med samma e-postdomän search_same_ip: Annan användare med samma IP-adress @@ -126,18 +142,23 @@ sv: targeted_reports: Anmälningar gjorda om detta konto silence: Tystnad silenced: Tystad / Tystat - statuses: Status + statuses: Inlägg strikes: Föregående varningar subscribe: Prenumerera suspend: Stäng av suspended: Avstängd / Avstängt + suspension_irreversible: All data som tillhör detta konto har permanent raderats. Du kan låsa upp och återanvända kontot, men ingen data kommer att finnas kvar. + suspension_reversible_hint_html: Kontot har låsts, och all data som tillhör det kommer att raderas permanent den %{date}. Tills dess kan kontot återställas utan dataförlust. Om du vill radera all kontodata redan nu, kan du göra detta nedan. title: Konton unblock_email: Avblockera e-postadress unblocked_email_msg: "%{username}s e-postadress avblockerad" - unconfirmed_email: Obekräftad E-postadress + unconfirmed_email: Obekräftad e-postadress + undo_sensitized: Ångra tvinga känsligt undo_silenced: Ångra tystnad undo_suspension: Ångra avstängning + unsilenced_msg: Begränsningen borttagen för %{username}s konto unsubscribe: Avsluta prenumeration + unsuspended_msg: Låste upp %{username}s konto username: Användarnamn view_domain: Visa sammanfattning för domän warn: Varna @@ -149,27 +170,36 @@ sv: approve_user: Godkänn användare assigned_to_self_report: Tilldela anmälan change_email_user: Ändra e-post för användare + change_role_user: Ändra roll för användaren confirm_user: Bekräfta användare create_account_warning: Skapa varning - create_announcement: Skapa ett anslag + create_announcement: Skapa kungörelse + create_canonical_email_block: Skapa e-postblockering create_custom_emoji: Skapa egen emoji create_domain_allow: Skapa tillåten domän create_domain_block: Skapa blockerad domän + create_email_domain_block: Skapa blockering av e-postdomän create_ip_block: Skapa IP-regel create_unavailable_domain: Skapa otillgänglig domän + create_user_role: Skapa roll demote_user: Degradera användare - destroy_announcement: Ta bort anslag + destroy_announcement: Radera kungörelse + destroy_canonical_email_block: Radera e-postblockering destroy_custom_emoji: Radera egen emoji destroy_domain_allow: Ta bort tillåten domän destroy_domain_block: Ta bort blockerad domän + destroy_email_domain_block: Radera blockering av e-postdomän destroy_instance: Rensa domänen destroy_ip_block: Radera IP-regel - destroy_status: Ta bort status + destroy_status: Radera inlägg destroy_unavailable_domain: Ta bort otillgänglig domän + destroy_user_role: Förstör roll disable_2fa_user: Inaktivera 2FA disable_custom_emoji: Inaktivera egna emojis + disable_sign_in_token_auth_user: Inaktivera autentisering med e-post-token för användare disable_user: Inaktivera användare enable_custom_emoji: Aktivera egna emojis + enable_sign_in_token_auth_user: Aktivera autentisering med e-post-token för användare enable_user: Aktivera användare memorialize_account: Minnesmärk konto promote_user: Befordra användare @@ -177,6 +207,7 @@ sv: reject_user: Avvisa användare remove_avatar_user: Ta bort avatar reopen_report: Öppna rapporten igen + resend_user: Skicka bekräftelse på nytt reset_password_user: Återställ lösenord resolve_report: Lös rapport sensitive_account: Markera mediet i ditt konto som känsligt @@ -184,61 +215,95 @@ sv: suspend_account: Stäng av konto unassigned_report: Återkalla rapport unblock_email_account: Avblockera e-postadress + unsensitive_account: Ångra tvinga känsligt konto + unsilence_account: Ångra begränsa konto unsuspend_account: Återaktivera konto - update_announcement: Uppdatera meddelande + update_announcement: Uppdatera kungörelse update_custom_emoji: Uppdatera egna emojis update_domain_block: Uppdatera blockerad domän - update_status: Uppdatera status + update_ip_block: Uppdatera IP-regel + update_status: Uppdatera inlägg + update_user_role: Uppdatera roll actions: + approve_appeal_html: "%{name} godkände överklagande av modereringsbeslut från %{target}" + approve_user_html: "%{name} godkände registrering från %{target}" + assigned_to_self_report_html: "%{name} tilldelade rapporten %{target} till sig själva" + change_email_user_html: "%{name} bytte e-postadress för användare %{target}" + change_role_user_html: "%{name} ändrade roll för %{target}" + confirm_user_html: "%{name} bekräftade e-postadress för användare %{target}" create_account_warning_html: "%{name} skickade en varning till %{target}" - create_announcement_html: "%{name} skapade tillkännagivande %{target}" + create_announcement_html: "%{name} skapade kungörelsen %{target}" + create_canonical_email_block_html: "%{name} blockerade e-post med hashen %{target}" create_custom_emoji_html: "%{name} laddade upp ny emoji %{target}" + create_domain_allow_html: "%{name} vitlistade domän %{target}" create_domain_block_html: "%{name} blockerade domänen %{target}" - create_email_domain_block_html: "%{name} svartlistade e-postdomän %{target}" + create_email_domain_block_html: "%{name} blockerade e-postdomänen %{target}" create_ip_block_html: "%{name} skapade regel för IP %{target}" + create_unavailable_domain_html: "%{name} stoppade leverans till domänen %{target}" + create_user_role_html: "%{name} skapade rollen %{target}" + demote_user_html: "%{name} nedgraderade användare %{target}" + destroy_announcement_html: "%{name} raderade kungörelsen %{target}" + destroy_canonical_email_block_html: "%{name} avblockerade e-post med hashen %{target}" + destroy_custom_emoji_html: "%{name} raderade emoji %{target}" + destroy_domain_allow_html: "%{name} raderade domän %{target} från vitlistan" destroy_domain_block_html: "%{name} avblockerade domänen %{target}" - destroy_email_domain_block_html: "%{name} avblockerade e-postdomän %{target}" + destroy_email_domain_block_html: "%{name} avblockerade e-postdomänen %{target}" + destroy_instance_html: "%{name} rensade domän %{target}" destroy_ip_block_html: "%{name} tog bort regel för IP %{target}" destroy_status_html: "%{name} tog bort inlägget av %{target}" + destroy_unavailable_domain_html: "%{name} återupptog leverans till domänen %{target}" + destroy_user_role_html: "%{name} raderade rollen %{target}" + disable_2fa_user_html: "%{name} inaktiverade tvåfaktorsautentiseringskrav för användaren %{target}" disable_custom_emoji_html: "%{name} inaktiverade emoji %{target}" + disable_sign_in_token_auth_user_html: "%{name} inaktiverade e-posttokenautentisering för %{target}" disable_user_html: "%{name} stängde av inloggning för användaren %{target}" enable_custom_emoji_html: "%{name} aktiverade emoji %{target}" + enable_sign_in_token_auth_user_html: "%{name} aktiverade e-posttokenautentisering för %{target}" enable_user_html: "%{name} aktiverade inloggning för användaren %{target}" memorialize_account_html: "%{name} gjorde %{target}'s konto till en minnessida" promote_user_html: "%{name} befordrade användaren %{target}" + reject_appeal_html: "%{name} avvisade överklagande av modereringsbeslut från %{target}" + reject_user_html: "%{name} avvisade registrering från %{target}" remove_avatar_user_html: "%{name} tog bort %{target}'s avatar" reopen_report_html: "%{name} öppnade rapporten igen %{target}" + resend_user_html: "%{name} skickade bekräftelsemail för %{target} på nytt" reset_password_user_html: "%{name} återställ användarens lösenord %{target}" resolve_report_html: "%{name} löste rapporten %{target}" sensitive_account_html: "%{name} markerade %{target}'s media som känsligt" silence_account_html: "%{name} begränsade %{target}'s konto" suspend_account_html: "%{name} stängde av %{target}'s konto" + unassigned_report_html: "%{name} tog bort tilldelning av rapporten %{target}" + unblock_email_account_html: "%{name} avblockerade %{target}s e-postadress" unsensitive_account_html: "%{name} avmarkerade %{target}'s media som känsligt" + unsilence_account_html: "%{name} tog bort begränsning av %{target}s konto" unsuspend_account_html: "%{name} tog bort avstängningen av %{target}'s konto" - update_announcement_html: "%{name} uppdaterade tillkännagivandet %{target}" + update_announcement_html: "%{name} uppdaterade kungörelsen %{target}" update_custom_emoji_html: "%{name} uppdaterade emoji %{target}" update_domain_block_html: "%{name} uppdaterade domän-block för %{target}" + update_ip_block_html: "%{name} ändrade regel för IP %{target}" update_status_html: "%{name} uppdaterade inlägget av %{target}" + update_user_role_html: "%{name} ändrade rollen %{target}" empty: Inga loggar hittades. filter_by_action: Filtrera efter åtgärd filter_by_user: Filtrera efter användare title: Revisionslogg announcements: - destroyed_msg: Borttagning av tillkännagivandet lyckades! + destroyed_msg: Kungörelsen raderades! edit: - title: Redigera tillkännagivande - empty: Inga tillkännagivanden hittades. + title: Redigera kungörelse + empty: Inga kungörelser hittades. live: Direkt new: - create: Skapa tillkännagivande - title: Nytt tillkännagivande + create: Skapa kungörelse + title: Ny kungörelse publish: Publicera - published_msg: Publiceringen av tillkännagivandet lyckades! - scheduled_for: Schemalagd för %{time} - scheduled_msg: Tillkännagivandet schemalades för publicering! - title: Tillkännagivanden + published_msg: Publicerade kungörelsen! + scheduled_for: Schemalagd till %{time} + scheduled_msg: Kungörelsen schemalades för publicering! + title: Kungörelser unpublish: Avpublicera - updated_msg: Uppdatering av tillkännagivandet lyckades! + unpublished_msg: Kungörelsen raderades! + updated_msg: Kungörelsen uppdaterades! custom_emojis: assign_category: Tilldela kategori by_domain: Domän @@ -261,6 +326,7 @@ sv: listed: Noterade new: title: Lägg till ny egen emoji + no_emoji_selected: Inga emojier ändrades eftersom inga valdes not_permitted: Du har inte behörighet att utföra denna åtgärd overwrite: Skriva över shortcode: Kortkod @@ -277,9 +343,26 @@ sv: interactions: interaktioner media_storage: Medialagring new_users: nya användare + opened_reports: öppnade rapporter + pending_appeals_html: + one: "%{count} väntande överklagan" + other: "%{count} väntande överklaganden" + pending_reports_html: + one: "%{count} väntande rapport" + other: "%{count} väntande rapporter" + pending_tags_html: + one: "%{count} väntande hashtagg" + other: "%{count} väntande hashtaggar" + pending_users_html: + one: "%{count} väntande användare" + other: "%{count} väntande användare" + resolved_reports: lösta rapporter software: Programvara + sources: Registreringskällor space: Utrymmesutnyttjande / Utrymmesanvändning title: Kontrollpanel + top_languages: Mest aktiva språk + top_servers: Mest aktiva servrar website: Hemsida disputes: appeals: @@ -296,10 +379,11 @@ sv: destroyed_msg: Domänblockering har återtagits domain: Domän edit: Ändra domänblock + existing_domain_block: Du har redan satt strängare gränser för %{name}. existing_domain_block_html: Du har redan satt begränsningar för %{name} så avblockera användaren först. new: create: Skapa block - hint: Domänblocket hindrar inte skapandet av kontoposter i databasen, men kommer retroaktivt, automatiskt att tillämpa specifika modereringsmetoder på dessa konton. + hint: Domänblockeringen hindrar inte skapandet av kontoposter i databasen, men kommer retroaktivt och automatiskt tillämpa specifika modereringsmetoder på dessa konton. severity: desc_html: "Tysta ner kommer att göra kontoinlägg osynliga för alla som inte följer dem. Suspendera kommer ta bort allt av kontots innehåll, media och profildata. Använd Ingen om du bara vill avvisa mediefiler." noop: Ingen @@ -311,6 +395,7 @@ sv: private_comment: Privat kommentar private_comment_hint: Kommentar för moderatorer om denna domänbegränsning. public_comment: Offentlig kommentar + public_comment_hint: Kommentar om denna domänbegränsning för allmänheten, om listan över domänbegränsningar är publik. reject_media: Avvisa mediafiler reject_media_hint: Raderar lokalt lagrade mediefiler och förhindrar möjligheten att ladda ner något i framtiden. Irrelevant för suspensioner reject_reports: Avvisa rapporter @@ -319,19 +404,30 @@ sv: view: Visa domänblock email_domain_blocks: add_new: Lägg till ny - created_msg: E-postdomän har lagts till i domänblockslistan utan problem + attempts_over_week: + one: "%{count} försök under den senaste veckan" + other: "%{count} registreringsförsök under den senaste veckan" + created_msg: Blockerade e-postdomänen delete: Radera + dns: + types: + mx: MX-post domain: Domän new: create: Skapa domän - title: Ny E-postdomänblocklistningsinmatning - title: E-postdomänblock + resolve: Slå upp domän + title: Blockera ny e-postdomän + no_email_domain_block_selected: Inga blockeringar av e-postdomäner ändrades eftersom inga valdes + resolved_through_html: Uppslagen genom %{domain} + title: Blockerade e-postdomäner follow_recommendations: + description_html: "Följrekommendationer hjälper nya användare att snabbt hitta intressant innehåll. När en användare inte har interagerat med andra tillräckligt mycket för att forma personliga följrekommendationer, rekommenderas istället dessa konton. De beräknas om varje dag från en mix av konton med nylig aktivitet och högst antal följare för ett givet språk." language: För språket status: Status title: Följ rekommendationer instances: availability: + title: Tillgänglighet warning: Det senaste försöket att ansluta till denna värddator har misslyckats back_to_all: Alla back_to_limited: Begränsat @@ -339,18 +435,32 @@ sv: by_domain: Domän content_policies: policies: + reject_reports: Avvisa rapporter silence: Gräns policy: Policy reason: Offentlig orsak title: Riktlinjer för innehåll + dashboard: + instance_accounts_dimension: Mest följda konton + instance_accounts_measure: lagrade konton + instance_followers_measure: våra följare där + instance_follows_measure: sina följare här + instance_languages_dimension: Mest använda språk + instance_media_attachments_measure: lagrade mediebilagor + instance_reports_measure: rapporter om dem + instance_statuses_measure: sparade inlägg delivery: all: Alla clear: Rensa leverans-fel + failing: Misslyckas restart: Starta om leverans stop: Stoppa leverans unavailable: Ej tillgänglig delivery_available: Leverans är tillgängligt empty: Inga domäner hittades. + known_accounts: + one: "%{count} känt konto" + other: "%{count} kända konton" moderation: all: Alla limited: Begränsad @@ -392,13 +502,17 @@ sv: relays: add_new: Lägg till nytt relä delete: Radera + description_html: Ett federeringsombud är en mellanliggande server som utbyter höga antal offentliga inlägg mellan servrar som prenumererar på och publicerar till det. Det kan hjälpa små och medelstora servrar upptäcka innehåll från fediversumet, vilket annars skulle kräva att lokala användare manuellt följer personer på fjärrservrar. disable: Inaktivera disabled: Inaktiverad enable: Aktivera - enable_hint: När den är aktiverad kommer din server att prenumerera på alla publika toots från detta relay, och kommer att börja skicka serverns publika toots till den. + enable_hint: Vid aktivering kommer din server börja prenumerera på alla offentliga inlägg från detta ombud, och kommer börja sända denna servers offentliga inlägg till den. enabled: Aktivera + inbox_url: Ombuds-URL + pending: Väntar på ombudets godkännande save_and_enable: Spara och aktivera setup: Konfigurera en relä-anslutning + signatures_not_enabled: Ombud fungerar inte korrekt medan säkert läge eller begränsat federeringsläge är aktiverade status: Status title: Relä report_notes: @@ -410,7 +524,13 @@ sv: notes: one: "%{count} anteckning" other: "%{count} anteckningar" + action_log: Granskningslogg action_taken_by: Åtgärder vidtagna av + actions: + delete_description_html: De rapporterade inläggen kommer raderas och en prick kommer registreras för att hjälpa dig eskalera framtida överträdelser av samma konto. + mark_as_sensitive_description_html: Medierna i de rapporterade inläggen kommer markeras som känsliga och en prick kommer registreras för att hjälpa dig eskalera framtida överträdelser av samma konto. + suspend_description_html: Profilen och allt dess innehåll kommer att bli oåtkomligt tills det slutligen raderas. Det kommer inte vara möjligt att interagera med kontot. Går att ångra inom 30 dagar. + add_to_report: Lägg till mer i rapporten are_you_sure: Är du säker? assign_to_self: Tilldela till mig assigned: Tilldelad moderator @@ -419,6 +539,7 @@ sv: comment: none: Ingen created_at: Anmäld + delete_and_resolve: Ta bort inlägg forwarded: Vidarebefordrad forwarded_to: Vidarebefordrad till %{domain} mark_as_resolved: Markera som löst @@ -431,19 +552,79 @@ sv: delete: Radera placeholder: Beskriv vilka åtgärder som vidtagits eller andra uppdateringar till den här anmälan. title: Anteckningar + remote_user_placeholder: fjärranvändaren från %{instance} reopen: Återuppta anmälan report: 'Rapport #%{id}' reported_account: Anmält konto reported_by: Anmäld av resolved: Löst resolved_msg: Anmälan har lösts framgångsrikt! + skip_to_actions: Hoppa till åtgärder status: Status + statuses: Rapporterat innehåll target_origin: Ursprung för anmält konto title: Anmälningar unassign: Otilldela unresolved: Olösta updated_at: Uppdaterad view_profile: Visa profil + roles: + add_new: Lägg till roll + assigned_users: + one: "%{count} användare" + other: "%{count} användare" + categories: + administration: Administration + devops: Devops + invites: Inbjudningar + moderation: Moderering + special: Särskild + delete: Ta bort + description_html: Med användarroller kan du anpassa vilka funktioner och områden dina användare kan komma åt i Mastodon. + edit: Redigera roll för '%{name}' + everyone: Standardbehörigheter + everyone_full_description_html: Detta är den grundroll som påverkar alla användare, även de utan särskilt tilldelad roll. Alla andra roller ärver behörigheter från denna. + permissions_count: + one: "%{count} behörighet" + other: "%{count} behörigheter" + privileges: + administrator: Administratör + delete_user_data: Ta bort användardata + delete_user_data_description: Tillåter användare att omedelbart radera andra användares data + invite_users: Bjud in användare + invite_users_description: Tillåter användare att bjuda in nya personer till servern + manage_announcements: Hantera kungörelser + manage_announcements_description: Tillåt användare att hantera kungörelser på servern + manage_appeals: Hantera överklaganden + manage_appeals_description: Tillåter användare att granska överklaganden av modereringsåtgärder + manage_blocks_description: Tillåter användare att blockera e-postleverantörer och IP-adresser + manage_custom_emojis: Hantera egna emojier + manage_custom_emojis_description: Tillåter användare att hantera egna emojier på servern + manage_federation: Hantera federering + manage_federation_description: Tillåter användare att blockera eller tillåta federering med andra domäner, samt kontrollera levererbarhet + manage_invites: Hantera inbjudningar + manage_invites_description: Tillåter användare att granska och inaktivera inbjudningslänkar + manage_reports: Hantera rapporter + manage_reports_description: Tillåter användare att granska rapporter och utföra modereringsåtgärder på dessa + manage_roles: Hantera roller + manage_roles_description: Tillåter användare att hantera och tilldela roller underordnade deras + manage_rules: Hantera regler + manage_rules_description: Tillåter användare att ändra serverregler + manage_settings: Hantera inställningar + manage_settings_description: Tillåter användare att ändra webbplatsinställningar + manage_taxonomies: Hantera taxonomier + manage_taxonomies_description: Tillåter användare att granska trendande innehåll och uppdatera inställningar för hashtaggar + manage_user_access: Hantera användaråtkomst + manage_user_access_description: Tillåter användare att inaktivera andra användares tvåfaktorsautentisering, ändra deras e-postadress samt återställa deras lösenord + manage_users: Hantera användare + manage_users_description: Tillåter användare att granska användares data och utföra modereringsåtgärder på dessa + manage_webhooks: Hantera webhooks + manage_webhooks_description: Tillåter användare att konfigurera webhooks för administrativa händelser + view_audit_log: Visa granskningsloggen + view_audit_log_description: Tillåter användare att se historiken över administrativa åtgärder på servern + view_dashboard: Visa instrumentpanel + view_devops: Devops + title: Roller rules: add_new: Lägg till regel delete: Radera @@ -451,58 +632,187 @@ sv: title: Serverns regler settings: about: + manage_rules: Hantera serverregler title: Om + appearance: + preamble: Anpassa Mastodons webbgränssnitt. + title: Utseende + branding: + title: Profilering + content_retention: + preamble: Kontrollera hur användargenererat innehåll lagras i Mastodon. + title: Bibehållande av innehåll + discovery: + profile_directory: Profilkatalog + trends: Trender domain_blocks: all: Till alla disabled: För ingen users: För inloggade lokala användare + registrations: + title: Registreringar registrations_mode: modes: approved: Godkännande krävs för registrering none: Ingen kan registrera open: Alla kan registrera + title: Serverinställningar site_uploads: delete: Radera uppladdad fil statuses: + application: Applikation back_to_account: Tillbaka till kontosidan + back_to_report: Tillbaka till rapportsidan batch: + remove_from_report: Ta bort från rapport report: Rapportera deleted: Raderad + favourites: Favoriter + history: Versionshistorik + in_reply_to: Svarar på + language: Språk media: title: Media - title: Kontostatus + metadata: Metadata + open: Öppna inlägg + title: Kontoinlägg + trending: Trendande + visibility: Synlighet with_media: med media strikes: actions: delete_statuses: "%{name} raderade %{target}s inlägg" disable: "%{name} frös %{target}s konto" + sensitive: "%{name} markerade %{target}s konto som känsligt" silence: "%{name} begränsade %{target}s konto" + suspend: "%{name} stängde av %{target}s konto" appeal_approved: Överklagad + appeal_pending: Överklagande väntar system_checks: + database_schema_check: + message_html: Det finns väntande databasmigreringar. Vänligen kör dem för att säkerställa att programmet beter sig som förväntat + elasticsearch_running_check: + message_html: Kunde inte ansluta till Elasticsearch. Kontrollera att det körs, eller inaktivera fulltextsökning + elasticsearch_version_check: + message_html: 'Inkompatibel Elasticsearch-version: %{value}' + version_comparison: Elasticsearch %{running_version} körs medan %{required_version} krävs rules_check: action: Hantera serverregler message_html: Du har inte definierat några serverregler. + sidekiq_process_check: + message_html: Ingen Sidekiq-process körs för kön/köerna %{value}. Vänligen kontrollera din Sidekiq-konfiguration + tags: + review: Granskningsstatus + updated_msg: Hashtagg-inställningarna har uppdaterats title: Administration trends: allow: Tillåt approved: Godkänd + disallow: Neka + links: + allow: Tillåt länk + allow_provider: Tillåt utgivare + description_html: Detta är länkar som för närvarande delas mycket av konton som din server ser inlägg från. Det kan hjälpa dina användare att ta reda på vad som händer i världen. Inga länkar visas offentligt tills du godkänner utgivaren. Du kan också tillåta eller avvisa enskilda länkar. + disallow: Blockera länk + disallow_provider: Blockera utgivare + no_link_selected: Inga länkar ändrades eftersom inga valdes + publishers: + no_publisher_selected: Inga utgivare ändrades eftersom inga valdes + shared_by_over_week: + one: Delad av en person under den senaste veckan + other: Delad av %{count} personer under den senaste veckan + title: Trendande länkar + usage_comparison: Delade %{today} gånger idag, jämfört med %{yesterday} igår + only_allowed: Endast tillåtna + pending_review: Väntar på granskning + preview_card_providers: + allowed: Länkar från denna utgivare kan trenda + description_html: Detta är domäner från vilka länkar ofta delas på din server. Länkar kommer inte att trenda offentligt om inte deras domän godkänns. Ditt godkännande (eller avslag) omfattar underdomäner. + rejected: Länkar från denna utgivare kommer inte att trenda + title: Utgivare + rejected: Avvisade statuses: - allow: Godkänn inlägg + allow: Tillåt inlägg allow_account: Godkänn författare + description_html: Detta är inlägg som din server vet om som för närvarande delas och favoriseras mycket just nu. Det kan hjälpa dina nya och återvändande användare att hitta fler människor att följa. Inga inlägg visas offentligt förrän du godkänner författaren, och författaren tillåter att deras konto föreslås till andra. Du kan också tillåta eller avvisa enskilda inlägg. + disallow: Tillåt inte inlägg + disallow_account: Tillåt inte författare + no_status_selected: Inga trendande inlägg ändrades eftersom inga valdes + not_discoverable: Författaren har valt att inte vara upptäckbar + shared_by: + one: Delad eller favoritmarkerad en gång + other: Delade och favoritmarkerade %{friendly_count} gånger + title: Trendande inlägg + tags: + current_score: Nuvarande poäng %{score} + dashboard: + tag_accounts_measure: unika användningar + tag_languages_dimension: Mest använda språk + tag_servers_dimension: Mest använda servrar + tag_servers_measure: olika servrar + tag_uses_measure: total användning + description_html: Detta är hashtaggar som just nu visas i många inlägg som din server ser. Det kan hjälpa dina användare att ta reda på vad människor talar mest om för tillfället. Inga hashtaggar visas offentligt tills du godkänner dem. + listable: Kan föreslås + no_tag_selected: Inga taggar ändrades eftersom inga valdes + not_listable: Kommer ej föreslås + not_trendable: Kommer ej visas under trender + not_usable: Kan inte användas + peaked_on_and_decaying: Nådde sin höjdpunkt %{date}, faller nu + title: Trendande hashtaggar + trendable: Kan visas under trender + trending_rank: 'Trendande #%{rank}' + usable: Kan användas + usage_comparison: Använd %{today} gånger idag, jämfört med %{yesterday} igår + used_by_over_week: + one: Använd av en person under den senaste veckan + other: Använd av %{count} personer under den senaste veckan title: Trender + trending: Trendande warning_presets: add_new: Lägg till ny delete: Radera + edit_preset: Redigera varningsförval + empty: Du har inte definierat några varningsförval ännu. + title: Hantera varningsförval + webhooks: + add_new: Lägg till slutpunkt + delete: Ta bort + description_html: En webhook gör det möjligt för Mastodon att skicka realtidsaviseringar om valda händelser till din egen applikation så att den automatiskt kan utlösa händelser. + disable: Inaktivera + disabled: Inaktiverad + edit: Redigera slutpunkt + empty: Du har inte några webhook-slutpunkter konfigurerade ännu. + enable: Aktivera + enabled: Aktiv + enabled_events: + one: 1 aktiverad händelse + other: "%{count} aktiverade händelser" + events: Händelser + new: Ny webhook + rotate_secret: Rotera hemlighet + secret: Signeringshemlighet + status: Status + title: Webhooks + webhook: Webhook admin_mailer: new_appeal: actions: + delete_statuses: att radera deras inlägg none: en varning new_report: body: "%{reporter} har rapporterat %{target}" body_remote: Någon från %{domain} har rapporterat %{target} subject: Ny rapport för %{instance} (#%{id}) + new_trends: + new_trending_links: + title: Trendande länkar + new_trending_statuses: + title: Trendande inlägg + new_trending_tags: + title: Trendande hashtaggar aliases: add_new: Skapa alias + empty: Du har inga alias. remove: Avlänka alias appearance: advanced_web_interface: Avancerat webbgränssnitt @@ -514,13 +824,14 @@ sv: guide_link: https://crowdin.com/project/mastodon guide_link_text: Alla kan bidra. sensitive_content: Känsligt innehåll + toot_layout: Inläggslayout application_mailer: notification_preferences: Ändra e-postinställningar salutation: "%{name}," settings: 'Ändra e-postinställningar: %{link}' view: 'Granska:' view_profile: Visa profil - view_status: Visa status + view_status: Visa inlägg applications: created: Ansökan är framgångsrikt skapad destroyed: Ansökan är framgångsrikt borttagen @@ -553,10 +864,12 @@ sv: registration_closed: "%{instance} accepterar inte nya medlemmar" resend_confirmation: Skicka instruktionerna om bekräftelse igen reset_password: Återställ lösenord + rules: + title: Några grundregler. security: Säkerhet set_new_password: Skriv in nytt lösenord setup: - email_settings_hint_html: Bekräftelsemeddelandet skickades till %{email}. Om den e-postadressen inte stämmer så kan du ändra den i kontoinställningarna. + email_settings_hint_html: E-postmeddelande för verifiering skickades till %{email}. Om e-postadressen inte stämmer kan du ändra den i kontoinställningarna. title: Ställ in status: account_status: Kontostatus @@ -622,6 +935,12 @@ sv: status: 'Inlägg #%{id}' title_actions: none: Varning + sensitive: Märkning av konto som känslig + silence: Begränsning av konto + suspend: Avstängning av konto + your_appeal_approved: Din överklagan har godkänts + your_appeal_pending: Du har lämnat in en överklagan + your_appeal_rejected: Din överklagan har avvisats domain_validator: invalid_domain: är inte ett giltigt domännamn errors: @@ -637,15 +956,16 @@ sv: '500': content: Vi är ledsna, men något gick fel från vårat håll. title: Den här sidan är inte korrekt - '503': The page could not be served due to a temporary server failure. + '503': Sidan kunde inte visas på grund av ett tillfälligt serverfel. noscript_html: För att använda Mastodon webbapplikationen, vänligen aktivera JavaScript. Alternativt kan du prova en av inhemska appar för Mastodon för din plattform. existing_username_validator: + not_found: kunde inte hitta en lokal användare med det användarnamnet not_found_multiple: kunde inte hitta %{usernames} exports: archive_takeout: date: Datum download: Ladda ner ditt arkiv - hint_html: Du kan begära ett arkiv av dina toots och uppladdad media. Den exporterade datan kommer att vara i ActivityPub-format och läsbar av kompatibel programvara. Du kan begära ett arkiv var sjunde dag. + hint_html: Du kan begära ett arkiv av dina inlägg och uppladdad media. Den exporterade datan kommer att vara i ActivityPub-format och läsbar av kompatibel programvara. Du kan begära ett arkiv var sjunde dag. in_progress: Kompilerar ditt arkiv... request: Efterfråga ditt arkiv size: Storlek @@ -658,6 +978,9 @@ sv: storage: Medialagring featured_tags: add_new: Lägg till ny + errors: + limit: Du har redan det maximala antalet utvalda hashtaggar + hint_html: "Vad är utvalda hashtaggar? De visas tydligt på din offentliga profil och låter andra bläddra bland dina offentliga inlägg specifikt under dessa hashtaggar. De är ett bra verktyg för att hålla reda på kreativa arbeten eller långsiktiga projekt." filters: contexts: account: Profiler @@ -666,26 +989,66 @@ sv: public: Publika tidslinjer thread: Konversationer edit: + add_keyword: Lägg till nyckelord + keywords: Nyckelord + statuses: Individuella inlägg + statuses_hint_html: Detta filter gäller för att välja enskilda inlägg oavsett om de matchar sökorden nedan. Granska eller ta bort inlägg från filtret. title: Redigera filter + errors: + deprecated_api_multiple_keywords: Dessa parametrar kan inte ändras från denna applikation eftersom de gäller mer än ett filtersökord. Använd en nyare applikation eller webbgränssnittet. + invalid_context: Ingen eller ogiltig kontext angiven index: + contexts: Filter i %{contexts} delete: Radera empty: Du har inga filter. + expires_in: Förfaller om %{distance} + expires_on: Förfaller på %{date} + keywords: + one: "%{count} nyckelord" + other: "%{count} nyckelord" + statuses: + one: "%{count} inlägg" + other: "%{count} inlägg" + statuses_long: + one: "%{count} enskilt inlägg dolt" + other: "%{count} enskilda inlägg dolda" title: Filter new: + save: Spara nytt filter title: Lägg till nytt filter + statuses: + back_to_filter: Tillbaka till filter + batch: + remove: Ta bort från filter + index: + hint: Detta filter gäller för att välja enskilda inlägg oavsett andra kriterier. Du kan lägga till fler inlägg till detta filter från webbgränssnittet. + title: Filtrerade inlägg footer: trending_now: Trendar nu generic: all: Alla + all_items_on_page_selected_html: + one: "%{count} objekt på denna sida valt." + other: "%{count} objekt på denna sida valda." + all_matching_items_selected_html: + one: "%{count} objekt som matchar din sökning är valt." + other: "%{count} objekt som matchar din sökning är valda." changes_saved_msg: Ändringar sparades framgångsrikt! copy: Kopiera delete: Radera + deselect: Avmarkera alla + none: Ingen order_by: Sortera efter save_changes: Spara ändringar + select_all_matching_items: + one: Välj %{count} objekt som matchar din sökning. + other: Välj alla %{count} objekt som matchar din sökning. today: idag validation_errors: one: Något är inte riktigt rätt ännu! Kontrollera felet nedan other: Något är inte riktigt rätt ännu! Kontrollera dom %{count} felen nedan + html_validator: + invalid_markup: 'innehåller ogiltig HTML: %{error}' imports: errors: over_rows_processing_limit: innehåller fler än %{count} rader @@ -699,6 +1062,7 @@ sv: types: blocking: Lista av blockerade bookmarks: Bokmärken + domain_blocking: Domänblockeringslista following: Lista av följare muting: Lista av nertystade upload: Ladda upp @@ -729,18 +1093,25 @@ sv: limit: Du har nått det maximala antalet listor login_activities: authentication_methods: + otp: tvåfaktorsautentiseringsapp password: lösenord - sign_in_token: säkerhetskod för e-post + sign_in_token: e-postsäkerhetskod webauthn: säkerhetsnycklar description_html: Om du ser aktivitet som du inte känner igen, överväg att byta ditt lösenord och aktivera tvåfaktor-autentisering. + empty: Ingen autentiseringshistorik tillgänglig + failed_sign_in_html: Misslyckat inloggningsförsök med %{method} från %{ip} (%{browser}) + successful_sign_in_html: Lyckad inloggning med %{method} från %{ip} (%{browser}) + title: Autentiseringshistorik media_attachments: validations: - images_and_video: Det går inte att bifoga en video till en status som redan innehåller bilder + images_and_video: Det går inte att bifoga en video till ett inlägg som redan innehåller bilder + not_ready: Kan inte bifoga filer som inte har behandlats färdigt. Försök igen om ett ögonblick! too_many: Det går inte att bifoga mer än 4 filer migrations: acct: användarnamn@domän av det nya kontot cancel: Avbryt omdirigering cancel_explanation: Avstängning av omdirigeringen kommer att återaktivera ditt nuvarande konto, men kommer inte att återskapa följare som har flyttats till det kontot. + cancelled_msg: Avbröt omdirigeringen. errors: already_moved: är samma konto som du redan har flyttat till missing_also_known_as: är inte ett alias för det här kontot @@ -761,21 +1132,29 @@ sv: warning: backreference_required: Det nya kontot måste först vara konfigurerat till att bakåt-referera till det här before: 'Vänligen läs dessa anteckningar noggrant innan du fortsätter:' + cooldown: Efter flytten följer en vänteperiod under vilken du inte kan flytta igen + disabled_account: Ditt nuvarande konto kommer inte att kunna användas fullt ut efteråt. Du kommer dock att ha tillgång till dataexport samt återaktivering. followers: Den här åtgärden kommer att flytta alla följare från det nuvarande kontot till det nya kontot + only_redirect_html: Alternativt kan du bara sätta upp en omdirigering på din profil. other_data: Ingen annan data kommer att flyttas automatiskt + redirect: Ditt nuvarande kontos profil kommer att uppdateras med ett meddelande om omdirigering och uteslutas från sökningar moderation: title: Moderera move_handler: carry_blocks_over_text: Den här användaren flyttades från %{acct} som du hade blockerat. carry_mutes_over_text: Den här användaren flyttade från %{acct} som du hade tystat. copy_account_note_text: 'Den här användaren flyttade från %{acct}, här var dina föregående anteckningar om dem:' + navigation: + toggle_menu: Växla meny notification_mailer: admin: + report: + subject: "%{name} skickade in en rapport" sign_up: subject: "%{name} registrerade sig" favourite: - body: 'Din status favoriserades av %{name}:' - subject: "%{name} favoriserade din status" + body: 'Din status favoritmarkerades av %{name}:' + subject: "%{name} favoritmarkerade din status" title: Ny favorit follow: body: "%{name} följer nu dig!" @@ -794,15 +1173,15 @@ sv: poll: subject: En undersökning av %{name} har avslutats reblog: - body: 'Din status knuffades av %{name}:' - subject: "%{name} knuffade din status" - title: Ny knuff + body: 'Ditt inlägg boostades av %{name}:' + subject: "%{name} boostade ditt inlägg" + title: Ny boostning status: - subject: "%{name} publicerade nyss" + subject: "%{name} publicerade just ett inlägg" update: subject: "%{name} redigerade ett inlägg" notifications: - email_events: Händelser för e-postaviseringar + email_events: Händelser för e-postnotiser email_events_hint: 'Välj händelser som du vill ta emot aviseringar för:' other_settings: Andra aviseringsinställningar number: @@ -816,6 +1195,7 @@ sv: thousand: K trillion: T otp_authentication: + code_hint: Ange koden som genererats av din autentiseringsapp för att bekräfta enable: Aktivera instructions_html: "Skanna den här QR-koden i Google Authenticator eller en liknande TOTP-app i din telefon. Från och med nu så kommer den appen att generera symboler som du måste skriva in när du ska logga in." setup: Konfigurera @@ -838,6 +1218,7 @@ sv: too_many_options: kan inte innehålla mer än %{max} objekt preferences: other: Annat + posting_defaults: Standardinställningar för inlägg public_timelines: Publika tidslinjer privacy_policy: title: Integritetspolicy @@ -863,6 +1244,8 @@ sv: status: Kontostatus remote_follow: missing_resource: Det gick inte att hitta den begärda omdirigeringsadressen för ditt konto + rss: + content_warning: 'Innehållsvarning:' sessions: activity: Senaste aktivitet browser: Webbläsare @@ -920,7 +1303,7 @@ sv: preferences: Inställningar profile: Profil relationships: Följer och följare - statuses_cleanup: Automatisk borttagning av inlägg + statuses_cleanup: Automatisk radering av inlägg two_factor_authentication: Tvåfaktorsautentisering webauthn_authentication: Säkerhetsnycklar statuses: @@ -935,7 +1318,7 @@ sv: video: one: "%{count} video" other: "%{count} videor" - boosted_from_html: Boosted från %{acct_link} + boosted_from_html: Boostad från %{acct_link} content_warning: 'Innehållsvarning: %{warning}' default_language: Samma som användargränssnittet disallowed_hashtags: @@ -943,14 +1326,14 @@ sv: other: 'innehöll de otillåtna hashtagarna: %{tags}' edited_at_html: 'Ändrad: %{date}' errors: - in_reply_not_found: Statusen du försöker svara på existerar inte. + in_reply_not_found: Inlägget du försöker svara på verkar inte existera. open_in_web: Öppna på webben over_character_limit: teckengräns på %{max} har överskridits pin_errors: direct: Inlägg som endast är synliga för nämnda användare kan inte fästas - limit: Du har redan fäst det maximala antalet toots - ownership: Någon annans toot kan inte fästas - reblog: Knuffar kan inte fästas + limit: Du har redan fäst det maximala antalet inlägg + ownership: Någon annans inlägg kan inte fästas + reblog: En boost kan inte fästas poll: total_people: one: "%{count} person" @@ -977,18 +1360,20 @@ sv: enabled: Ta automatiskt bort gamla inlägg exceptions: Undantag ignore_favs: Bortse från favoriter + ignore_reblogs: Ignorera boostningar interaction_exceptions: Undantag baserat på interaktioner + interaction_exceptions_explanation: Observera att det inte finns någon garanti att inlägg blir raderade om de går under favorit- eller boosttröskeln efter att en gång ha gått över dem. keep_direct: Behåll direktmeddelanden keep_direct_hint: Tar inte bort någon av dina direktmeddelanden - keep_media: Behåll inlägg med media-bilagor - keep_media_hint: Tar inte bort någon av dina inlägg som har media-bilagor - keep_pinned: Behåll fästade inlägg - keep_pinned_hint: Tar inte bort någon av dina fästade inlägg + keep_media: Behåll inlägg med mediebilagor + keep_media_hint: Tar inte bort någon av dina inlägg som har mediebilagor + keep_pinned: Behåll fästa inlägg + keep_pinned_hint: Raderar inte något av dina fästa inlägg keep_polls: Behåll undersökningar keep_polls_hint: Tar inte bort någon av dina undersökningar - keep_self_bookmark: Behåller inlägg som du har bokmärkt + keep_self_bookmark: Behåll inlägg du har bokmärkt keep_self_bookmark_hint: Tar inte bort dina egna inlägg om du har bokmärkt dem - keep_self_fav: Behåll inlägg som du har favorit-märkt + keep_self_fav: Behåll inlägg du favoritmarkerat min_age: '1209600': 2 veckor '15778476': 6 månader @@ -999,8 +1384,10 @@ sv: '63113904': 2 år '7889238': 3 månader min_age_label: Åldersgräns + min_reblogs: Behåll boostade inlägg i minst + min_reblogs_hint: Raderar inte något av dina inlägg som har blivit boostat minst detta antal gånger. Lämna tomt för att radera inlägg oavsett antal boostningar stream_entries: - pinned: Fäst toot + pinned: Fäst inlägg reblogged: boostad sensitive_content: Känsligt innehåll strikes: @@ -1042,6 +1429,8 @@ sv: change_password: Ändra ditt lösenord title: En ny inloggning warning: + categories: + spam: Skräppost reason: 'Anledning:' statuses: 'Inlägg citerades:' subject: @@ -1058,7 +1447,7 @@ sv: welcome: edit_profile_action: Profilinställning explanation: Här är några tips för att komma igång - final_action: Börja posta + final_action: Börja göra inlägg full_handle: Ditt fullständiga användarnamn/mastodonadress full_handle_hint: Det här är vad du skulle berätta för dina vänner så att de kan meddela eller följa dig från en annan instans. subject: Välkommen till Mastodon @@ -1067,7 +1456,7 @@ sv: follow_limit_reached: Du kan inte följa fler än %{limit} personer invalid_otp_token: Ogiltig tvåfaktorskod otp_lost_help_html: Om du förlorat åtkomst till båda kan du komma i kontakt med %{email} - seamless_external_login: Du är inloggad via en extern tjänst, så lösenord och e-postinställningar är inte tillgängliga. + seamless_external_login: Du är inloggad via en extern tjänst, inställningar för lösenord och e-post är därför inte tillgängliga. signed_in_as: 'Inloggad som:' verification: verification: Bekräftelse diff --git a/config/locales/th.yml b/config/locales/th.yml index f809ba73f..d55e99625 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -204,6 +204,7 @@ th: reject_user: ปฏิเสธผู้ใช้ remove_avatar_user: เอาภาพประจำตัวออก reopen_report: เปิดรายงานใหม่ + resend_user: ส่งจดหมายยืนยันใหม่ reset_password_user: ตั้งรหัสผ่านใหม่ resolve_report: แก้ปัญหารายงาน sensitive_account: บังคับให้บัญชีละเอียดอ่อน @@ -262,6 +263,7 @@ th: reject_user_html: "%{name} ได้ปฏิเสธการลงทะเบียนจาก %{target}" remove_avatar_user_html: "%{name} ได้เอาภาพประจำตัวของ %{target} ออก" reopen_report_html: "%{name} ได้เปิดรายงาน %{target} ใหม่" + resend_user_html: "%{name} ได้ส่งอีเมลยืนยันสำหรับ %{target} ใหม่" reset_password_user_html: "%{name} ได้ตั้งรหัสผ่านของผู้ใช้ %{target} ใหม่" resolve_report_html: "%{name} ได้แก้ปัญหารายงาน %{target}" sensitive_account_html: "%{name} ได้ทำเครื่องหมายสื่อของ %{target} ว่าละเอียดอ่อน" @@ -692,6 +694,7 @@ th: open: เปิดโพสต์ original_status: โพสต์ดั้งเดิม reblogs: การดัน + status_changed: เปลี่ยนโพสต์แล้ว title: โพสต์ของบัญชี trending: กำลังนิยม visibility: การมองเห็น @@ -1163,6 +1166,8 @@ th: carry_blocks_over_text: ผู้ใช้นี้ได้ย้ายจาก %{acct} ซึ่งคุณได้ปิดกั้น carry_mutes_over_text: ผู้ใช้นี้ได้ย้ายจาก %{acct} ซึ่งคุณได้ซ่อน copy_account_note_text: 'ผู้ใช้นี้ได้ย้ายจาก %{acct} นี่คือหมายเหตุก่อนหน้านี้ของคุณเกี่ยวกับผู้ใช้:' + navigation: + toggle_menu: เปิด/ปิดเมนู notification_mailer: admin: report: diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 2c4285ca7..e46a88fce 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -207,6 +207,7 @@ tr: reject_user: Kullanıcıyı Reddet remove_avatar_user: Profil Resmini Kaldır reopen_report: Şikayeti Tekrar Aç + resend_user: Doğrulama E-postasını Tekrar Gönder reset_password_user: Parolayı Sıfırla resolve_report: Şikayeti Çöz sensitive_account: Hesabınızdaki medyayı hassas olarak işaretleyin @@ -265,6 +266,7 @@ tr: reject_user_html: "%{name}, %{target} konumundan kaydı reddetti" remove_avatar_user_html: "%{name}, %{target} kullanıcısının avatarını kaldırdı" reopen_report_html: "%{name}, %{target} şikayetini yeniden açtı" + resend_user_html: "%{name}, %{target} için doğrulama e-postasını tekrar gönderdi" reset_password_user_html: "%{name}, %{target} kullanıcısının parolasını sıfırladı" resolve_report_html: "%{name}, %{target} şikayetini çözdü" sensitive_account_html: "%{name}, %{target} kullanıcısının medyasını hassas olarak işaretledi" diff --git a/config/locales/uk.yml b/config/locales/uk.yml index ba380339a..7c4702966 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -197,7 +197,7 @@ uk: destroy_email_domain_block: Видалити блокування поштового домену destroy_instance: Очистити домен destroy_ip_block: Видалити правило IP - destroy_status: Видалити пост + destroy_status: Видалити допис destroy_unavailable_domain: Видалити недоступний домен destroy_user_role: Знищити роль disable_2fa_user: Вимкнути 2FA @@ -213,6 +213,7 @@ uk: reject_user: Відхилити користувача remove_avatar_user: Видалити аватар reopen_report: Поновити скаргу + resend_user: Повторне підтвердження пошти reset_password_user: Скинути пароль resolve_report: Розв'язати скаргу sensitive_account: Позначити делікатним медіа вашого облікового запису @@ -271,6 +272,7 @@ uk: reject_user_html: "%{name} відхиляє реєстрацію від %{target}" remove_avatar_user_html: "%{name} прибирає аватар %{target}" reopen_report_html: "%{name} знову відкриває звіт %{target}" + resend_user_html: "%{name} було надіслано листа з підтвердженням для %{target}" reset_password_user_html: "%{name} скидає пароль користувача %{target}" resolve_report_html: "%{name} розв'язує скаргу %{target}" sensitive_account_html: "%{name} позначає медіа від %{target} делікатним" @@ -397,7 +399,7 @@ uk: create: Створити блокування hint: Блокування домену не завадить створенню нових облікових записів у базі даних, але ретроактивно та автоматично застосує до них конкретні методи модерації. severity: - desc_html: "Глушення зробить пости облікового запису невидимими для всіх, окрім його підписників. Заморожування видалить увесь контент, медіа та дані профілю облікового запису. Якщо ви хочете лише заборонити медіафайли, оберіть Нічого." + desc_html: "Глушення зробить дописи облікового запису невидимими для всіх, окрім його підписників. Заморожування видалить усі матеріали, медіа та дані профілю облікового запису. Якщо ви хочете лише заборонити медіафайли, оберіть Нічого." noop: Нічого silence: Глушення suspend: Блокування @@ -792,7 +794,7 @@ uk: links: allow: Дозволити посилання allow_provider: Дозволити публікатора - description_html: Це посилання, з яких наразі багаторазово поширюються записи, з яких Ваш сервер бачить пости. Це може допомогти вашим користувачам дізнатися, що відбувається в світі. Посилання не відображається публічно, поки ви не затверджуєте його публікацію. Ви також можете дозволити або відхилити окремі посилання. + description_html: Це посилання, з яких наразі багаторазово поширюються записи, з яких ваш сервер бачить дописи. Це може допомогти вашим користувачам дізнатися, що відбувається у світі. Посилання не показується публічно, поки ви не затверджуєте його публікацію. Ви також можете дозволити або відхилити окремі посилання. disallow: Заборонити посилання disallow_provider: Заборонити публікатора no_link_selected: Жодне посилання не було змінено, оскільки жодне не було вибрано @@ -954,7 +956,7 @@ uk: description: prefix_invited_by_user: "@%{name} запрошує вас приєднатися до цього сервера Mastodon!" prefix_sign_up: Зареєструйтеся на Mastodon сьогодні! - suffix: Маючи обліковий запис, ви зможете підписуватися на людей, публікувати пости та листуватися з користувачами будь-якого сервера Mastodon! + suffix: Маючи обліковий запис, ви зможете підписуватися на людей, публікувати дописи та листуватися з користувачами будь-якого сервера Mastodon! didnt_get_confirmation: Ви не отримали інструкції з підтвердження? dont_have_your_security_key: Не маєте ключа безпеки? forgot_password: Забули пароль? @@ -1044,7 +1046,7 @@ uk: warning: before: 'До того як продовжити, будь ласка уважно прочитайте це:' caches: Інформація, кешована іншими серверами, може залишитися - data_removal: Ваші пости та інші дані будуть видалені назавжди + data_removal: Ваші дописи й інші дані будуть вилучені назавжди email_change_html: Ви можете змінити вашу електронну адресу, не видаляючи ваш обліковий запис email_contact_html: Якщо його все ще немає, ви можете написали до %{email} для допомоги email_reconfirmation_html: Якщо ви не отримали електронного листа з підтвердженням, ви можете запросити його знову @@ -1106,7 +1108,7 @@ uk: archive_takeout: date: Дата download: Завантажити ваш архів - hint_html: Ви можете зробити запит на архів ваших постів та вивантаженого медіа контенту. Завантажені дані будуть у форматі ActivityPub, доступні для читання будь-яким сумісним програмним забезпеченням. Ви можете робити запит на архів кожні 7 днів. + hint_html: Ви можете зробити запит на архів ваших дописів та вивантаженого медіавмісту. Експортовані дані будуть у форматі ActivityPub, доступні для читання будь-яким сумісним програмним забезпеченням. Ви можете робити запит на архів що 7 днів. in_progress: Збираємо ваш архів... request: Зробити запит на архів size: Розмір @@ -1121,7 +1123,7 @@ uk: add_new: Додати новий errors: limit: Ви досягли максимальної кількості хештеґів - hint_html: "Що таке виділені хештеґи? Це ті, що відображаються ни видному місці у вашому публічному профілі. Вони дають змогу людям фільтрувати ваші публічні пости за цими хештеґами. Це дуже корисно для відстеження мистецьких творів та довготривалих проектів." + hint_html: "Що таке виділені хештеґи? Це ті, що показуються на видному місці у вашому загальнодоступному профілі. Вони дають змогу людям фільтрувати ваші загальнодоступні дописи за цими хештеґами. Це дуже корисно для стеження з мистецькими творами та довготривалими проєктами." filters: contexts: account: Профілі @@ -1355,7 +1357,7 @@ uk: code_hint: Для підтверждення введіть код, згенерований додатком аутентифікатора description_html: При увімкненні двофакторної аутентифікації, вхід буде вимагати від Вас використання Вашого телефона для генерації вхідного коду. enable: Увімкнути - instructions_html: "Відскануйте цей QR-код за допомогою Google Authenticator чи іншого TOTP-додатку на Вашому телефоні. Відтепер додаток буде генерувати коди, які буде необхідно ввести для входу." + instructions_html: "Скануйте цей QR-код за допомогою Google Authenticator чи іншого TOTP-застосунку на своєму телефоні. Відтепер застосунок генеруватиме коди, які буде необхідно ввести для входу." manual_instructions: 'Якщо ви не можете сканувати QR-код і потрібно ввести його вручну, ось він:' setup: Налаштувати wrong_code: Введений код неправильний! Чи правильно встановлений час на сервері та пристрої? @@ -1378,7 +1380,7 @@ uk: too_many_options: не може мати більше ніж %{max} варіантів preferences: other: Інше - posting_defaults: Промовчання для постів + posting_defaults: Усталені налаштування дописів public_timelines: Глобальні стрічки privacy_policy: title: Політика конфіденційності @@ -1515,9 +1517,9 @@ uk: over_character_limit: перевищено ліміт символів %{max} pin_errors: direct: Не можливо прикріпити дописи, які видимі лише згаданим користувачам - limit: Ви вже закріпили максимальну кількість постів - ownership: Не можна закріпити чужий пост - reblog: Не можна закріпити просунутий пост + limit: Ви вже закріпили максимальну кількість дописів + ownership: Не можна закріпити чужий допис + reblog: Не можна закріпити просунутий допис poll: total_people: few: "%{count} людей" @@ -1580,7 +1582,7 @@ uk: min_reblogs: Залишати дописи передмухнуті більше ніж min_reblogs_hint: Не видаляти ваших дописів, що були передмухнуті більш ніж вказану кількість разів. Залиште порожнім, щоб видаляти дописи, попри кількість їхніх передмухів stream_entries: - pinned: Закріплений пост + pinned: Закріплений допис reblogged: поширив sensitive_content: Дражливий зміст strikes: @@ -1668,7 +1670,7 @@ uk: edit_profile_action: Налаштувати профіль edit_profile_step: Ви можете налаштувати свій профіль, завантаживши зображення профілю, змінивши відображуване ім'я та інше. Ви можете включити для перегляду нових підписників до того, як вони матимуть змогу підписатися на вас. explanation: Ось декілька порад для початку - final_action: Почати постити + final_action: Почати писати final_step: 'Почніть дописувати! Навіть не підписавшись на вас, інші зможуть побачити ваші пости, наприклад, у локальній стрічці та у хештеґах. Якщо ви хочете представитися, можете скористатися хештеґом #introductions.' full_handle: Ваше звернення full_handle_hint: Те, що ви хочете сказати друзям, щоб вони могли написати вам або підписатися з інших сайтів. diff --git a/config/locales/vi.yml b/config/locales/vi.yml index d032691bf..a4c2595ad 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -59,7 +59,7 @@ vi: disable_sign_in_token_auth: Vô hiệu hóa xác minh bằng email disable_two_factor_authentication: Vô hiệu hóa xác minh 2 bước disabled: Tạm khóa - display_name: Tên hiển thị + display_name: Biệt danh domain: Máy chủ edit: Chỉnh sửa email: Email @@ -204,6 +204,7 @@ vi: reject_user: Từ chối người dùng remove_avatar_user: Xóa ảnh đại diện reopen_report: Mở lại báo cáo + resend_user: Gửi lại email xác nhận reset_password_user: Đặt lại mật khẩu resolve_report: Xử lý báo cáo sensitive_account: Áp đặt nhạy cảm @@ -262,6 +263,7 @@ vi: reject_user_html: "%{name} đã từ chối đăng ký từ %{target}" remove_avatar_user_html: "%{name} đã xóa ảnh đại diện của %{target}" reopen_report_html: "%{name} mở lại báo cáo %{target}" + resend_user_html: "%{name} gửi lại email xác nhận cho %{target}" reset_password_user_html: "%{name} đã đặt lại mật khẩu của %{target}" resolve_report_html: "%{name} đã xử lý báo cáo %{target}" sensitive_account_html: "%{name} đánh dấu nội dung của %{target} là nhạy cảm" @@ -631,7 +633,7 @@ vi: manage_settings: Quản lý thiết lập manage_settings_description: Cho phép thay đổi thiết lập máy chủ manage_taxonomies: Quản lý phân loại - manage_taxonomies_description: Cho phép đánh giá nội dung xu hướng và cập nhật cài đặt hashtag + manage_taxonomies_description: Cho phép đánh giá nội dung thịnh hành và cập nhật cài đặt hashtag manage_user_access: Quản lý người dùng truy cập manage_user_access_description: Cho phép vô hiệu hóa xác thực hai bước của người dùng khác, thay đổi địa chỉ email và đặt lại mật khẩu của họ manage_users: Quản lý người dùng @@ -673,7 +675,7 @@ vi: profile_directory: Cộng đồng public_timelines: Bảng tin title: Khám phá - trends: Xu hướng + trends: Thịnh hành domain_blocks: all: Tới mọi người disabled: Không ai @@ -712,7 +714,7 @@ vi: reblogs: Lượt đăng lại status_changed: Tút đã thay đổi title: Toàn bộ tút - trending: Xu hướng + trending: Thịnh hành visibility: Hiển thị with_media: Có media strikes: @@ -758,14 +760,14 @@ vi: no_publisher_selected: Không có nguồn đăng nào thay đổi vì không có nguồn đăng nào được chọn shared_by_over_week: other: "%{count} người chia sẻ tuần rồi" - title: Liên kết xu hướng + title: Liên kết nổi bật usage_comparison: Chia sẻ %{today} lần hôm nay, so với %{yesterday} lần hôm qua only_allowed: Chỉ cho phép pending_review: Đang chờ preview_card_providers: - allowed: Liên kết từ nguồn đăng này có thể thành xu hướng - description_html: Đây là những nguồn mà từ đó các liên kết thường được chia sẻ trên máy chủ của bạn. Các liên kết sẽ không được trở thành xu hướng trừ khi bạn cho phép nguồn. Sự cho phép (hoặc cấm) của bạn áp dụng luôn cho các tên miền phụ. - rejected: Liên kết từ nguồn đăng không thể thành xu hướng + allowed: Liên kết từ nguồn đăng này có thể nổi bật + description_html: Đây là những nguồn mà từ đó các liên kết thường được chia sẻ trên máy chủ của bạn. Các liên kết sẽ không thể thịnh hành trừ khi bạn cho phép nguồn. Sự cho phép (hoặc cấm) của bạn áp dụng luôn cho các tên miền phụ. + rejected: Liên kết từ nguồn đăng không thể nổi bật title: Nguồn đăng rejected: Đã cấm statuses: @@ -778,7 +780,7 @@ vi: not_discoverable: Tác giả đã chọn không tham gia mục khám phá shared_by: other: Được thích và đăng lại %{friendly_count} lần - title: Tút xu hướng + title: Tút nổi bật tags: current_score: Chỉ số gần đây %{score} dashboard: @@ -791,18 +793,18 @@ vi: listable: Có thể đề xuất no_tag_selected: Không có hashtag thịnh hành nào thay đổi vì không có hashtag nào được chọn not_listable: Không thể đề xuất - not_trendable: Không xuất hiện xu hướng + not_trendable: Không cho thịnh hành not_usable: Không được phép dùng peaked_on_and_decaying: Đỉnh điểm %{date}, giờ đang giảm - title: Hashtag xu hướng - trendable: Có thể trở thành xu hướng - trending_rank: 'Xu hướng #%{rank}' + title: Hashtag nổi bật + trendable: Cho phép thịnh hành + trending_rank: 'Nổi bật #%{rank}' usable: Có thể dùng usage_comparison: Dùng %{today} lần hôm nay, so với %{yesterday} hôm qua used_by_over_week: other: "%{count} người dùng tuần rồi" title: Xu hướng - trending: Xu hướng + trending: Thịnh hành warning_presets: add_new: Thêm mới delete: Xóa bỏ @@ -851,14 +853,14 @@ vi: new_trends: body: 'Các mục sau đây cần được xem xét trước khi chúng hiển thị công khai:' new_trending_links: - title: Liên kết xu hướng + title: Liên kết nổi bật new_trending_statuses: - title: Tút xu hướng + title: Tút nổi bật new_trending_tags: - no_approved_tags: Hiện tại không có hashtag xu hướng nào được duyệt. - requirements: 'Bất kỳ ứng cử viên nào vượt qua #%{rank} duyệt hashtag xu hướng, với hiện tại là "%{lowest_tag_name}" với điểm số %{lowest_tag_score}.' - title: Hashtag xu hướng - subject: Xu hướng mới chờ duyệt trên %{instance} + no_approved_tags: Hiện tại không có hashtag nổi bật nào được duyệt. + requirements: 'Bất kỳ ứng cử viên nào vượt qua #%{rank} duyệt hashtag nổi bật, với hiện tại là "%{lowest_tag_name}" với điểm số %{lowest_tag_score}.' + title: Hashtag nổi bật + subject: Nội dung nổi bật chờ duyệt trên %{instance} aliases: add_new: Kết nối tài khoản created_msg: Tạo thành công một tên hiển thị mới. Bây giờ bạn có thể bắt đầu di chuyển từ tài khoản cũ. @@ -1108,7 +1110,7 @@ vi: hint: Bộ lọc này áp dụng để chọn các tút riêng lẻ bất kể các tiêu chí khác. Bạn có thể thêm các tút khác vào bộ lọc này từ giao diện web. title: Những tút đã lọc footer: - trending_now: Xu hướng + trending_now: Thịnh hành generic: all: Tất cả all_items_on_page_selected_html: @@ -1380,13 +1382,13 @@ vi: revoke: Gỡ revoke_success: Gỡ phiên thành công title: Phiên - view_authentication_history: Xem lại lịch sử đăng nhập tài khoản của bạn + view_authentication_history: Xem lại lịch sử đăng nhập settings: account: Bảo mật account_settings: Cài đặt tài khoản aliases: Kết nối tài khoản appearance: Giao diện - authorized_apps: App đã dùng + authorized_apps: Ứng dụng back: Quay lại Mastodon delete: Xóa tài khoản development: Lập trình @@ -1570,7 +1572,7 @@ vi: suspend: Tài khoản bị vô hiệu hóa welcome: edit_profile_action: Cài đặt trang hồ sơ - edit_profile_step: Bạn có thể chỉnh sửa trang hồ sơ của mình bằng cách tải lên ảnh đại diện, ảnh bìa, thay đổi tên hiển thị và hơn thế nữa. Bạn cũng có thể tự phê duyệt những người theo dõi mới. + edit_profile_step: Bạn có thể chỉnh sửa trang hồ sơ của mình bằng cách tải lên ảnh đại diện, ảnh bìa, đổi biệt danh và hơn thế nữa. Bạn cũng có thể tự phê duyệt những người theo dõi mới. explanation: Dưới đây là một số mẹo để giúp bạn bắt đầu final_action: Viết tút mới final_step: 'Viết tút mới! Ngay cả khi chưa có người theo dõi, người khác vẫn có thể xem tút công khai của bạn trên bảng tin máy chủ và qua hashtag. Hãy giới thiệu bản thân với hashtag #introductions.' diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 92ae4cbe7..d0b3b1550 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -204,6 +204,7 @@ zh-CN: reject_user: 拒绝用户 remove_avatar_user: 移除头像 reopen_report: 重开举报 + resend_user: 重新发送确认电子邮件 reset_password_user: 重置密码 resolve_report: 处理举报 sensitive_account: 将你账号中的媒体标记为敏感内容 @@ -262,6 +263,7 @@ zh-CN: reject_user_html: "%{name} 拒绝了用户 %{target} 的注册" remove_avatar_user_html: "%{name} 删除了 %{target} 的头像" reopen_report_html: "%{name} 重开了举报 %{target}" + resend_user_html: "%{name} 给 %{target} 发送了重新确认电子邮件" reset_password_user_html: "%{name} 重置了用户 %{target} 的密码" resolve_report_html: "%{name} 处理了举报 %{target}" sensitive_account_html: "%{name} 将 %{target} 的媒体标记为敏感内容" @@ -1223,6 +1225,8 @@ zh-CN: carry_blocks_over_text: 这个用户迁移自你屏蔽过的 %{acct} carry_mutes_over_text: 这个用户迁移自你隐藏过的 %{acct} copy_account_note_text: 这个用户迁移自 %{acct},你曾为其添加备注: + navigation: + toggle_menu: 切换菜单 notification_mailer: admin: report: diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 88447d186..f7ace47af 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -204,6 +204,7 @@ zh-TW: reject_user: 回絕使用者 remove_avatar_user: 刪除大頭貼 reopen_report: 重開舉報 + resend_user: 重新發送驗證信 reset_password_user: 重設密碼 resolve_report: 消除舉報 sensitive_account: 把您的帳號的媒體標記為敏感內容 @@ -262,6 +263,7 @@ zh-TW: reject_user_html: "%{name} 回絕了從 %{target} 而來的註冊" remove_avatar_user_html: "%{name} 移除了 %{target} 的大頭貼" reopen_report_html: "%{name} 重新開啟 %{target} 的檢舉" + resend_user_html: "%{name} 已重新發送驗證信給 %{target}" reset_password_user_html: "%{name} 重新設定了使用者 %{target} 的密碼" resolve_report_html: "%{name} 處理了 %{target} 的檢舉" sensitive_account_html: "%{name} 將 %{target} 的媒體檔案標記為敏感內容" From 9616f5bb2248b4bf8f1e51130af1f19a94abf6db Mon Sep 17 00:00:00 2001 From: Claire Date: Sat, 5 Nov 2022 13:43:37 +0100 Subject: [PATCH 647/652] Fix compose form submission reloading web interface (#19762) * Fix compose form submission reloading web interface Fix regression introduced by #19742 * Fix various compose form buttons being handled like submit buttons * Fix coding style issue * Fix missing onClick prop check --- .../__tests__/__snapshots__/button-test.js.snap | 7 +++++++ app/javascript/mastodon/components/button.js | 6 +++++- app/javascript/mastodon/components/icon_button.js | 1 + app/javascript/mastodon/components/load_more.js | 2 +- .../features/compose/components/compose_form.js | 11 +++++++---- .../compose/components/emoji_picker_dropdown.js | 12 ++++++------ .../features/compose/components/language_dropdown.js | 2 +- .../features/compose/components/poll_form.js | 2 +- .../features/compose/components/text_icon_button.js | 1 + .../mastodon/features/compose/components/upload.js | 6 +++--- app/javascript/mastodon/features/favourites/index.js | 2 +- .../mastodon/features/filters/select_filter.js | 2 +- .../mastodon/features/home_timeline/index.js | 1 + .../mastodon/features/list_timeline/index.js | 4 ++-- app/javascript/mastodon/features/reblogs/index.js | 2 +- .../mastodon/features/status/components/card.js | 2 +- app/javascript/mastodon/features/status/index.js | 2 +- 17 files changed, 41 insertions(+), 24 deletions(-) diff --git a/app/javascript/mastodon/components/__tests__/__snapshots__/button-test.js.snap b/app/javascript/mastodon/components/__tests__/__snapshots__/button-test.js.snap index 86fbba917..bfc091d45 100644 --- a/app/javascript/mastodon/components/__tests__/__snapshots__/button-test.js.snap +++ b/app/javascript/mastodon/components/__tests__/__snapshots__/button-test.js.snap @@ -4,6 +4,7 @@ exports[` @@ -53,6 +59,7 @@ exports[` diff --git a/app/javascript/mastodon/components/button.js b/app/javascript/mastodon/components/button.js index bcb855c7c..42ce01f38 100644 --- a/app/javascript/mastodon/components/button.js +++ b/app/javascript/mastodon/components/button.js @@ -16,8 +16,12 @@ export default class Button extends React.PureComponent { children: PropTypes.node, }; + static defaultProps = { + type: 'button', + }; + handleClick = (e) => { - if (!this.props.disabled) { + if (!this.props.disabled && this.props.onClick) { this.props.onClick(e); } } diff --git a/app/javascript/mastodon/components/icon_button.js b/app/javascript/mastodon/components/icon_button.js index 47945c475..8fd9e10c0 100644 --- a/app/javascript/mastodon/components/icon_button.js +++ b/app/javascript/mastodon/components/icon_button.js @@ -141,6 +141,7 @@ export default class IconButton extends React.PureComponent { return ( ); diff --git a/app/javascript/mastodon/features/compose/components/compose_form.js b/app/javascript/mastodon/features/compose/components/compose_form.js index 9f5c3b314..6a65f44da 100644 --- a/app/javascript/mastodon/features/compose/components/compose_form.js +++ b/app/javascript/mastodon/features/compose/components/compose_form.js @@ -93,7 +93,7 @@ class ComposeForm extends ImmutablePureComponent { return !(isSubmitting || isUploading || isChangingUpload || length(fulltext) > 500 || (isOnlyWhitespace && !anyMedia)); } - handleSubmit = () => { + handleSubmit = (e) => { if (this.props.text !== this.autosuggestTextarea.textarea.value) { // Something changed the text inside the textarea (e.g. browser extensions like Grammarly) // Update the state to match the current text @@ -105,6 +105,10 @@ class ComposeForm extends ImmutablePureComponent { } this.props.onSubmit(this.context.router ? this.context.router.history : null); + + if (e) { + e.preventDefault(); + } } onSuggestionsClearRequested = () => { @@ -217,7 +221,7 @@ class ComposeForm extends ImmutablePureComponent { } return ( -
    + @@ -280,9 +284,8 @@ class ComposeForm extends ImmutablePureComponent {
    - - - - - + + + + + +
    ); } diff --git a/app/javascript/mastodon/features/compose/components/language_dropdown.js b/app/javascript/mastodon/features/compose/components/language_dropdown.js index 0af3db7a4..e48fa60ff 100644 --- a/app/javascript/mastodon/features/compose/components/language_dropdown.js +++ b/app/javascript/mastodon/features/compose/components/language_dropdown.js @@ -227,7 +227,7 @@ class LanguageDropdownMenu extends React.PureComponent {
    - +
    diff --git a/app/javascript/mastodon/features/compose/components/poll_form.js b/app/javascript/mastodon/features/compose/components/poll_form.js index db49f90eb..ede29b8a0 100644 --- a/app/javascript/mastodon/features/compose/components/poll_form.js +++ b/app/javascript/mastodon/features/compose/components/poll_form.js @@ -157,7 +157,7 @@ class PollForm extends ImmutablePureComponent {
    - + {/* eslint-disable-next-line jsx-a11y/no-onchange */} - +
    diff --git a/app/javascript/mastodon/features/home_timeline/index.js b/app/javascript/mastodon/features/home_timeline/index.js index 838ed7dd8..749a47e76 100644 --- a/app/javascript/mastodon/features/home_timeline/index.js +++ b/app/javascript/mastodon/features/home_timeline/index.js @@ -126,6 +126,7 @@ class HomeTimeline extends React.PureComponent { if (hasAnnouncements) { announcementsButton = ( -
    diff --git a/app/javascript/mastodon/features/reblogs/index.js b/app/javascript/mastodon/features/reblogs/index.js index 70d338ef1..36ca11d1a 100644 --- a/app/javascript/mastodon/features/reblogs/index.js +++ b/app/javascript/mastodon/features/reblogs/index.js @@ -68,7 +68,7 @@ class Reblogs extends ImmutablePureComponent { showBackButton multiColumn={multiColumn} extraButton={( - + )} /> diff --git a/app/javascript/mastodon/features/status/components/card.js b/app/javascript/mastodon/features/status/components/card.js index 3d81bcb29..82537dd5d 100644 --- a/app/javascript/mastodon/features/status/components/card.js +++ b/app/javascript/mastodon/features/status/components/card.js @@ -247,7 +247,7 @@ export default class Card extends React.PureComponent { {revealed && (
    - + {horizontal && }
    diff --git a/app/javascript/mastodon/features/status/index.js b/app/javascript/mastodon/features/status/index.js index 02f390c6a..c0ba1f2d6 100644 --- a/app/javascript/mastodon/features/status/index.js +++ b/app/javascript/mastodon/features/status/index.js @@ -619,7 +619,7 @@ class Status extends ImmutablePureComponent { showBackButton multiColumn={multiColumn} extraButton={( - + )} /> From c95d9aab56dcde8c183f15d565cd1e8746d42c48 Mon Sep 17 00:00:00 2001 From: Sunny Ripert Date: Sat, 5 Nov 2022 13:43:47 +0100 Subject: [PATCH 648/652] Fix JavaScript console error on upload editing status (#19769) --- app/javascript/mastodon/features/compose/components/upload.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/features/compose/components/upload.js b/app/javascript/mastodon/features/compose/components/upload.js index 44bf9a24a..0b2dcf08f 100644 --- a/app/javascript/mastodon/features/compose/components/upload.js +++ b/app/javascript/mastodon/features/compose/components/upload.js @@ -17,7 +17,7 @@ export default class Upload extends ImmutablePureComponent { media: ImmutablePropTypes.map.isRequired, onUndo: PropTypes.func.isRequired, onOpenFocalPoint: PropTypes.func.isRequired, - isEditingStatus: PropTypes.func.isRequired, + isEditingStatus: PropTypes.bool.isRequired, }; handleUndoClick = e => { From 887976814a2639a666896ae94b14c64e2834e26d Mon Sep 17 00:00:00 2001 From: Sunny Ripert Date: Sat, 5 Nov 2022 13:45:06 +0100 Subject: [PATCH 649/652] Fix JavaScript console warning when loading notifications (#19772) --- app/javascript/mastodon/features/notifications/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/features/notifications/index.js b/app/javascript/mastodon/features/notifications/index.js index f1bc5f160..826a7e9ad 100644 --- a/app/javascript/mastodon/features/notifications/index.js +++ b/app/javascript/mastodon/features/notifications/index.js @@ -58,7 +58,7 @@ const getNotifications = createSelector([ const mapStateToProps = state => ({ showFilterBar: state.getIn(['settings', 'notifications', 'quickFilter', 'show']), notifications: getNotifications(state), - isLoading: state.getIn(['notifications', 'isLoading'], true), + isLoading: state.getIn(['notifications', 'isLoading'], 0) > 0, isUnread: state.getIn(['notifications', 'unread']) > 0 || state.getIn(['notifications', 'pendingItems']).size > 0, hasMore: state.getIn(['notifications', 'hasMore']), numPending: state.getIn(['notifications', 'pendingItems'], ImmutableList()).size, From 29604763d7e8b639a21afeb6c8d8386d2226ddc8 Mon Sep 17 00:00:00 2001 From: Yarden Shoham Date: Sat, 5 Nov 2022 18:27:44 +0200 Subject: [PATCH 650/652] Remove broken link references to bug bounty program (#19779) The link https://app.intigriti.com/programs/mastodon/mastodonio/detail no longer works * Closes #19491 Signed-off-by: Yarden Shoham Signed-off-by: Yarden Shoham --- .github/ISSUE_TEMPLATE/config.yml | 5 +---- SECURITY.md | 4 +--- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 7c0dbaf67..fd62889d0 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -2,7 +2,4 @@ blank_issues_enabled: false contact_links: - name: GitHub Discussions url: https://github.com/mastodon/mastodon/discussions - about: Please ask and answer questions here. - - name: Bug Bounty Program - url: https://app.intigriti.com/programs/mastodon/mastodonio/detail - about: Please report security vulnerabilities here. + about: Please ask and answer questions here. \ No newline at end of file diff --git a/SECURITY.md b/SECURITY.md index 62e23f736..9a72f3640 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,6 +1,6 @@ # Security Policy -If you believe you've identified a security vulnerability in Mastodon (a bug that allows something to happen that shouldn't be possible), you should submit the report through our [Bug Bounty Program][bug-bounty]. Alternatively, you can reach us at . +If you believe you've identified a security vulnerability in Mastodon (a bug that allows something to happen that shouldn't be possible), you can reach us at . You should *not* report such issues on GitHub or in other public spaces to give us time to publish a fix for the issue without exposing Mastodon's users to increased risk. @@ -16,5 +16,3 @@ A "vulnerability in Mastodon" is a vulnerability in the code distributed through | 3.4.x | Yes | | 3.3.x | No | | < 3.3 | No | - -[bug-bounty]: https://app.intigriti.com/programs/mastodon/mastodonio/detail From 0498b106c9d632d761dc556e9d471eb6aec846c5 Mon Sep 17 00:00:00 2001 From: Alex Nordlund Date: Sat, 5 Nov 2022 17:29:20 +0100 Subject: [PATCH 651/652] Add S3 existing secret to sidekiq (#19778) --- chart/templates/deployment-sidekiq.yaml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/chart/templates/deployment-sidekiq.yaml b/chart/templates/deployment-sidekiq.yaml index 56ba257b5..4b108d79d 100644 --- a/chart/templates/deployment-sidekiq.yaml +++ b/chart/templates/deployment-sidekiq.yaml @@ -82,6 +82,18 @@ spec: secretKeyRef: name: {{ template "mastodon.redis.secretName" . }} key: redis-password + {{- if (and .Values.mastodon.s3.enabled .Values.mastodon.s3.existingSecret) }} + - name: "AWS_SECRET_ACCESS_KEY" + valueFrom: + secretKeyRef: + name: {{ .Values.mastodon.s3.existingSecret }} + key: AWS_SECRET_ACCESS_KEY + - name: "AWS_ACCESS_KEY_ID" + valueFrom: + secretKeyRef: + name: {{ .Values.mastodon.s3.existingSecret }} + key: AWS_ACCESS_KEY_ID + {{- end -}} {{- if .Values.mastodon.smtp.existingSecret }} - name: "SMTP_LOGIN" valueFrom: From 312d616371096235f1f317041300b8220c447613 Mon Sep 17 00:00:00 2001 From: Claire Date: Sat, 5 Nov 2022 18:28:13 +0100 Subject: [PATCH 652/652] Change sign-in banner to reflect disabled or moved account status (#19773) --- app/helpers/application_helper.rb | 5 + .../mastodon/containers/mastodon.js | 2 + .../ui/components/disabled_account_banner.js | 92 +++++++++++++++++++ .../ui/components/navigation_panel.js | 5 +- app/javascript/mastodon/initial_state.js | 4 + .../styles/mastodon/components.scss | 14 +++ app/presenters/initial_state_presenter.rb | 3 +- app/serializers/initial_state_serializer.rb | 5 + 8 files changed, 127 insertions(+), 3 deletions(-) create mode 100644 app/javascript/mastodon/features/ui/components/disabled_account_banner.js diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 8706f5c2a..4c20f1e14 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -211,6 +211,11 @@ module ApplicationHelper state_params[:admin] = Account.find_local(Setting.site_contact_username.strip.gsub(/\A@/, '')) end + if user_signed_in? && !current_user.functional? + state_params[:disabled_account] = current_account + state_params[:moved_to_account] = current_account.moved_to_account + end + if single_user_mode? state_params[:owner] = Account.local.without_suspended.where('id > 0').first end diff --git a/app/javascript/mastodon/containers/mastodon.js b/app/javascript/mastodon/containers/mastodon.js index 730695c49..724719f74 100644 --- a/app/javascript/mastodon/containers/mastodon.js +++ b/app/javascript/mastodon/containers/mastodon.js @@ -28,6 +28,7 @@ store.dispatch(fetchCustomEmojis()); const createIdentityContext = state => ({ signedIn: !!state.meta.me, accountId: state.meta.me, + disabledAccountId: state.meta.disabled_account_id, accessToken: state.meta.access_token, permissions: state.role ? state.role.permissions : 0, }); @@ -42,6 +43,7 @@ export default class Mastodon extends React.PureComponent { identity: PropTypes.shape({ signedIn: PropTypes.bool.isRequired, accountId: PropTypes.string, + disabledAccountId: PropTypes.string, accessToken: PropTypes.string, }).isRequired, }; diff --git a/app/javascript/mastodon/features/ui/components/disabled_account_banner.js b/app/javascript/mastodon/features/ui/components/disabled_account_banner.js new file mode 100644 index 000000000..c9845d917 --- /dev/null +++ b/app/javascript/mastodon/features/ui/components/disabled_account_banner.js @@ -0,0 +1,92 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { connect } from 'react-redux'; +import { Link } from 'react-router-dom'; +import { FormattedMessage, defineMessages, injectIntl } from 'react-intl'; +import { disabledAccountId, movedToAccountId, domain } from 'mastodon/initial_state'; +import { openModal } from 'mastodon/actions/modal'; +import { logOut } from 'mastodon/utils/log_out'; + +const messages = defineMessages({ + logoutMessage: { id: 'confirmations.logout.message', defaultMessage: 'Are you sure you want to log out?' }, + logoutConfirm: { id: 'confirmations.logout.confirm', defaultMessage: 'Log out' }, +}); + +const mapStateToProps = (state) => ({ + disabledAcct: state.getIn(['accounts', disabledAccountId, 'acct']), + movedToAcct: movedToAccountId ? state.getIn(['accounts', movedToAccountId, 'acct']) : undefined, +}); + +const mapDispatchToProps = (dispatch, { intl }) => ({ + onLogout () { + dispatch(openModal('CONFIRM', { + message: intl.formatMessage(messages.logoutMessage), + confirm: intl.formatMessage(messages.logoutConfirm), + closeWhenConfirm: false, + onConfirm: () => logOut(), + })); + }, +}); + +export default @injectIntl +@connect(mapStateToProps, mapDispatchToProps) +class DisabledAccountBanner extends React.PureComponent { + + static propTypes = { + disabledAcct: PropTypes.string.isRequired, + movedToAcct: PropTypes.string, + onLogout: PropTypes.func.isRequired, + intl: PropTypes.object.isRequired, + }; + + handleLogOutClick = e => { + e.preventDefault(); + e.stopPropagation(); + + this.props.onLogout(); + + return false; + } + + render () { + const { disabledAcct, movedToAcct } = this.props; + + const disabledAccountLink = ( + + {disabledAcct}@{domain} + + ); + + return ( +
    +

    + {movedToAcct ? ( + {movedToAcct.includes('@') ? movedToAcct : `${movedToAcct}@{domain}`}, + }} + /> + ) : ( + + )} +

    + + + + +
    + ); + } + +}; diff --git a/app/javascript/mastodon/features/ui/components/navigation_panel.js b/app/javascript/mastodon/features/ui/components/navigation_panel.js index 4e9e39e2f..9a9309be0 100644 --- a/app/javascript/mastodon/features/ui/components/navigation_panel.js +++ b/app/javascript/mastodon/features/ui/components/navigation_panel.js @@ -5,6 +5,7 @@ import { Link } from 'react-router-dom'; import Logo from 'mastodon/components/logo'; import { timelinePreview, showTrends } from 'mastodon/initial_state'; import ColumnLink from './column_link'; +import DisabledAccountBanner from './disabled_account_banner'; import FollowRequestsColumnLink from './follow_requests_column_link'; import ListPanel from './list_panel'; import NotificationsCounterIcon from './notifications_counter_icon'; @@ -41,7 +42,7 @@ class NavigationPanel extends React.Component { render () { const { intl } = this.props; - const { signedIn } = this.context.identity; + const { signedIn, disabledAccountId } = this.context.identity; return (
    @@ -74,7 +75,7 @@ class NavigationPanel extends React.Component { {!signedIn && (

    - + { disabledAccountId ? : }
    )} diff --git a/app/javascript/mastodon/initial_state.js b/app/javascript/mastodon/initial_state.js index bb05dafdf..62fd4ac72 100644 --- a/app/javascript/mastodon/initial_state.js +++ b/app/javascript/mastodon/initial_state.js @@ -54,6 +54,7 @@ * @property {boolean} crop_images * @property {boolean=} delete_modal * @property {boolean=} disable_swiping + * @property {string=} disabled_account_id * @property {boolean} display_media * @property {string} domain * @property {boolean=} expand_spoilers @@ -61,6 +62,7 @@ * @property {string} locale * @property {string | null} mascot * @property {string=} me + * @property {string=} moved_to_account_id * @property {string=} owner * @property {boolean} profile_directory * @property {boolean} registrations_open @@ -104,6 +106,7 @@ export const boostModal = getMeta('boost_modal'); export const cropImages = getMeta('crop_images'); export const deleteModal = getMeta('delete_modal'); export const disableSwiping = getMeta('disable_swiping'); +export const disabledAccountId = getMeta('disabled_account_id'); export const displayMedia = getMeta('display_media'); export const domain = getMeta('domain'); export const expandSpoilers = getMeta('expand_spoilers'); @@ -111,6 +114,7 @@ export const forceSingleColumn = !getMeta('advanced_layout'); export const limitedFederationMode = getMeta('limited_federation_mode'); export const mascot = getMeta('mascot'); export const me = getMeta('me'); +export const movedToAccountId = getMeta('moved_to_account_id'); export const owner = getMeta('owner'); export const profile_directory = getMeta('profile_directory'); export const reduceMotion = getMeta('reduce_motion'); diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 2edb10857..542a2ce1b 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -742,6 +742,20 @@ p { color: $darker-text-color; margin-bottom: 20px; + + a { + color: $secondary-text-color; + text-decoration: none; + unicode-bidi: isolate; + + &:hover { + text-decoration: underline; + + .fa { + color: lighten($dark-text-color, 7%); + } + } + } } .button { diff --git a/app/presenters/initial_state_presenter.rb b/app/presenters/initial_state_presenter.rb index ed0479211..b87cff51e 100644 --- a/app/presenters/initial_state_presenter.rb +++ b/app/presenters/initial_state_presenter.rb @@ -2,7 +2,8 @@ class InitialStatePresenter < ActiveModelSerializers::Model attributes :settings, :push_subscription, :token, - :current_account, :admin, :owner, :text, :visibility + :current_account, :admin, :owner, :text, :visibility, + :disabled_account, :moved_to_account def role current_account&.user_role diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb index 02e45a92e..89f468ab5 100644 --- a/app/serializers/initial_state_serializer.rb +++ b/app/serializers/initial_state_serializer.rb @@ -57,6 +57,9 @@ class InitialStateSerializer < ActiveModel::Serializer store[:crop_images] = Setting.crop_images end + store[:disabled_account_id] = object.disabled_account.id.to_s if object.disabled_account + store[:moved_to_account_id] = object.moved_to_account.id.to_s if object.moved_to_account + if Rails.configuration.x.single_user_mode store[:owner] = object.owner&.id&.to_s end @@ -85,6 +88,8 @@ class InitialStateSerializer < ActiveModel::Serializer store[object.current_account.id.to_s] = ActiveModelSerializers::SerializableResource.new(object.current_account, serializer: REST::AccountSerializer) if object.current_account store[object.admin.id.to_s] = ActiveModelSerializers::SerializableResource.new(object.admin, serializer: REST::AccountSerializer) if object.admin store[object.owner.id.to_s] = ActiveModelSerializers::SerializableResource.new(object.owner, serializer: REST::AccountSerializer) if object.owner + store[object.disabled_account.id.to_s] = ActiveModelSerializers::SerializableResource.new(object.disabled_account, serializer: REST::AccountSerializer) if object.disabled_account + store[object.moved_to_account.id.to_s] = ActiveModelSerializers::SerializableResource.new(object.moved_to_account, serializer: REST::AccountSerializer) if object.moved_to_account store end

    dMh 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�N?1m^o)bvl%g-z? z{2b&5++9aGcilz?r}>oir0GO9u1fp5 z9tS#bY-b4@9XKz2mkkj$U-r1I&ZKoyuQ&?2nO^OVBSRyT6^%S2B;|KP_`JbZ7UYH8 z1=Q=NVVnoHll)zNM?t<9(P1rri%z~j4#7#ig35@q(5ker5Ju<709s+I2qi?D>uOc} zzyAK0aba}mx$G1?;@Jt;C70HDk)s-!Gbh@|jp#u^b;jTmfh=b)T*AXoK8>}5Z*Z$W zJ0PgR1^q$B0aP@2>bB-zRxo`#*CPJ@H7ySDBAAFrWRJdh@f;id^g@pAaFp7a1N!!1 z*3xCfGFqy(L&^StP@eb|7zCf*dtP23j^mZ+5c3?bG`6G^mkW1Z4?iZvuvu+HudDAH zAG~~4E{1*4*^ddDPuDj}F$wg?Y{U}@J`^oZVZD9r7!u><{?1`lVgYG$4)K~+3UF*6 zld+$T<&EdM${X75RU*PB?_c?qg zo7nx7$rby&iwvKOaAloT%04JJoM@y<(>?*8LrYds{@TtzBgBSg1MjRt&^wCQ)0A=o zNjoEahKbO49;De58<_Ltnf?4CbuP+j3yZ< zOKIqI-+uDUh5ACvo(vqJg7znx<|HdyA#9;}~)5z=W#31bv`!2F;>8@mr z4nB&9&h~b6>0soiZ`XJh-j+W4S)oFGG9dTO%% zMZ()}+=a^*&*7K;T_;(7B?K&SO5AJ(F9`j{=W45?h@(iDXZoBF01}~K^2Z>=Vyw4^~lCJK9wQFD`euzH3j zxScsH@Tq}Apa}^ahTFLl&U@T_WX~ckQ7Xem&n^_mp|07HS7#DMd62RX_2(9Zf^J5> zw%YiywI2zeG`I}6V=Ln)^Oy-EADd5U8!4Ccr8*z2p*12%0smHKAU!*cMVlm|<>)dc zws3~7{hW|^Y~qRI{y~PeePuC9^3)=7V<+j?0M*`;Vm|U)l=xCCgKD?o$%s4h@l)q< z>Cysh8K=|P`cetvKBcK4Vw|C#?C`(&&@r69IFEgU1+1y5i7?=@9S|-6AY~+%j1zMC z34L~9cNNjdYyfz_+k2$f(J#`;7KD<(;AC-->#bkyi#Ra)V~Ts~rQI@Kk-TznpnMn) zeM<@LC`O_iuu(l}ps`Jy!~)i$`3j@gN#MY(HfO(X~Z( zXZSIt(OSL=-?Xr~>R@C0%j-jXw&6#=|2>#pGlj2y`uA|pXFnq3B4p!sHYUm%EkC>Q zvb*d0W$AVENC)eOXl#nwtnJ6Gi~XICv(wX4*uQr-_6`0f2MdPRRT*oy#yF$FY8k(b zJ94d*Y)1Eb^4~Sm{kq||TE;3#tj<=8SbO&+zvf!XGEzn@4EHYVb?xhR?8W+RdvW3N z6+C?8#E=SW$aVW0Q7`KiGpjoaLm@-)5ZLP~u#uLY)x@&K3rv%VK%DVdss zv1=TH-U-&=3)`q1mb9LhK1TFfS=q}8BdgU@*-kiu1%jH>IUpir!ANekNJ3EgmC}E7 zvkdg+G8BBun2BCdWZ_6MGPW>)--RW4v9@pPA0v;t7C|QC4S{ZHJ860{j7cDq!HMEU z%28j3LW{Ve#2-zpj_6I;j^YRb$pZklZE$J&u>Q)z5}thOG?rN>jZk#F1E~Ga1h~P| zk^pRyc!_IiGzmYC@G^NMd{w@B?~_IpP_tYtYm|PL+%+p z?MrFD1~Z~h=H3plT^&2x4RuYI!Zyv1%(o{b{?$dc=vdXdA*A5F5DvzWi?#8>Z8W&Z zx{gxU7U`b*IIgqtSlXdz=^&va`%%2>Etbdb0Lv8@PZ&BKPWMo)cgXp1A&UQq zrXDAJPmbV$xHtRpC59!#+t>R#8$^@D>2tcB&}?s;KEuFGG$N}D5fbBv}>0?6jE^*uo!z#bG9t47UYlB6Bt zk(isrBvo69g)EfJ(IcGpmlsC}cCNE|5eeQ6ynO|*(@WqQ8>HTB^cRgbPiy$Li(^86 zyQ4||;-ac!p$}8*tA+;$%x(SL1`GB$p9uiptdB~KD@W^)#hwtJ(0 znE#60Qhqi~Y#BquDF^+8b$$vHo2^Xnw57jPdlR>0`>x3CM#vM+7*=7aU;rbN#o=G~ zFmQSP3XVQ~4rk6?4Dl>Iau5hRcP3YJo)afJLCN3`;*M<5b#5L!G%!AY&!e?*-}I^* z6buDAvET+p-`;0-XkhGj`SNiSCQ;{*j@D&}Yju|AVQE-@FRyJ3Ab%w@z_it zQa`OBn`uhhR>xDbyRP$9ho@=6)pWMcAK+w(e(j5$?$zC z;uDQYUcYRN@#8z-ccj{1UevALcTv2091dlU#zh1=W$;;%bZoz&K<4aqHgzWs&9CarYCW2u4wc8hQE3x zQVEWBXHjDxsZW%9kdeFP$0k>$4p#Y;z5GC62kKf_z&jrTZta^SyrAFWD?_k5V84`a zNm{LK$>uLQ_L@dUN4$ZJ;+$c8+Qba&oVkf7sjmXC@;3KE8InMPAF<4TN3djbKkW|| zc(6Rk`y(B7B7@lAw!#fzx+L?`{31@Cy@1naFDW_^ADM32gqQ=|C>SCc5!`Ej!xnN< zcphiYUBdm39Ipq}oAz&aoks_6{Hs(9ua653#CBqJH-ywW%Con)sDG!k<|%ncozNB; z2UgyuJt~oXDUcze;k9q-{i|^@Mx*$(@?`Zk)*CL7t$g2MMXRaxe8zvZkBk=H{=R2f z2u~|7)(#Lld1_pwQEIaXZ+EmQ@OD@1;1Bq?w67zwg4Lc?1H7n*;RztLbQZIgCJHo5 zw$iX=-*JHkC3I~+i0Enic5#?{Utec-1-vggsmtWcX?Jq=jkz%Gb1G^VWfM_sOhJvMIKI2aQ*j|t5y zYU42$CFeHp#Kzq>Vt!!}-+c0^c0iBLdurzv7IiG<01D>C(IiphHh7Y@5s?foH8fby zqbkoDUD$;ImH$vDuWYB$jeRXk%8=!A(eqYwBd0G8WS4q1@~{DLIWu=GRNg>AekJG% zvD7sieKS2(-ohG>BRLW0GAtZtZI;>*`cukUgEg^XVvLNetquWQmnVtfAuCtoQzNIW zj}D->;KiQI9!JV<;}ebC9LP$-?gFQ(nu3?#GeywhH19CEuU;X%c=-y>5B@YAEsdtZ zO7={a4rq{$i=XO_Wa_vMmpCY;$H7$x^Vrc-ICkP3c5mN^n+|MkX?Mvosk^2XikJR1 zrKrP29ZQ^0J1H&uAwc~zn=gyL`9a%+F zWFJWn7|)&-2R$^S{u0Fs;O7qn{Pnm(ioTZ5j~CrN75Zt==OzgM+yD3heByKW;mDCk z@tZ&U6ZnDu?I$s_W;T&ae~uFaoXRpz%n+hobdg;w4p16{<9R9?hkW1nvX%6(Jf^0m zuwn4Ge%;y*hKG;}xsj;y93wT?G1^@vQX>|)As)mW6qqBLr`P~AJlz~R(uYQj*yw2U zCm6ZZ98Vn$RX7mV=w|h4=>)K?99B`b^Yp0Mgq&t!x%R2-Mo5(aFG&j4Nna34R!`aYVMV6!R3wD$%2u z6gHS>?zJz-@z$MEr}jEI?CPszZDDbc#0?g(*obG11H>IJx>vH9EpbulcD6)|S2?Eb zOkcR?FF0=h*m&?4H37sS&&`Qdh5W)?c1U zYy$q(IQb_zG_vjAwHZJB=iY|N!D7}IKlU5A|4W}y-&Wf`1bAOFyzMQ%lq15E_Z?3B z#RVA)Yyaz$9!ow1ve>adghD|)`Y%byP$lSoN9@>vRyLVvSU=i%PIa_PBTqlLFT3%q~rS{4q=ULIzd>v8z$GdOYf0<5?+y3Y(n-pi7V=8%KW;CEg8phr=BFrB7w3rY8Eo+jE^K=+m9Nw2~j5!NcM^=!tuau zAMC5c+pBY@2VC|51zVVh2ib6UR zcL;aIMLJ08xByE9JPBj%E`7oY93!`t8z>Y$sld-lL_^}j$N~XhqG;hI4hNsQ&A*t} z_)d?Pq;N{|5z6)>cw75^;(daE58!=>fHx($87*5E`+&v2S&Z8=pS*;WTuW%~;S>3z z6weV41n`vbv}1tQIHrw&R&yW4d=?{RZ7A_WS5t~tYj4?4OS0G)$?TYqXYATD3upaB z+brufQGBqYEdJ1HZ?tk zb!*pQ$M$Ww>Cge(e8a)|dUYXdwG0d6B~w;k<9kt->O8EC8#kF+F(*=7-(SjoqZ(i5 zw(P{FeK*(7oOeHZbT~$nrcl~hQshb+zG>jmKk{`ei>u}?isv#8kcaa|ZY2^IVXj3v zp4vUb0k|MUb}|z(%DQHuqNU$W^&MY>+Tt0S4Gn_L(-1nVS(ubC?LqhKVcHyJ1P6k9 zWsVb72|)}X*H02OCPAdPtYlHyF4hSg>zeRYRw=BcP6Dr?%@PMr#|B>UFtE0?an8Cw z$^|{?BN%cjre*!8aze+U{U$h(Dj?X==*q=QSL$EvTV94qS4|+nC-<2IcJRptBP!6( zt}T689zAjrcisKy;2VYsyzXTOU8-#Pbe%7@V#&5HFyUn^c_!1F0yuje@v?R$WPbCV z)WdOGuOAGCR4tySAt8M`5?SnZ2A8!%@Q?Hjh6f>+j+6|a9iA@M=2jm<**BU`GC2U_ zP3Q@3)|WiJ&NAd4V)GJB5;ESR{tx(Aw6d3Ct|SWr8M-+dqa=z|Z$h+gCKE#^(b4h?n)fv~;Qe=#swzJ5HafJ~ynN z#gBaNJF#|l8V}!d7w-D-ueNQR$llQ8Km)rIEjk>&sns+o@KY?e9{=O3H7sbr^ zBl(*;67zzegnWKN`W}`hHFDG9xrCJ4 zTF*yFwO43 z2`Q9Lw#tPI_s#WVM@|hEu@`NJ@rBzAr8!yVyd*Bw(Zgv#b;G91>-Ok>~P-MH!Cer(#b@#^o$dLbAN0}Zh#BbTMWz2;s20x=dAJg7;<0~<VV!GE)PC`|J|Ir=C8GD+`PDc~O=|sn}l-vc>Y$&_ju3Fx$>gA+@~B&oAINKK`|O zu>JP8+<{FS<_fZKk#bfibt!eMjz+wP%MJi`ke~oQD-_bCpe~M^j6OLiO*`s{eKK0R z+4h)vEYnJ)AaUgfzwYd{h>Dj@AI%=wE*jJ#no(blU@UAYR-$$rUkGrc_>SeGkd}=S z4&;vEJ2(k%$Fk@E?UMbVV61eSj_r%`(-u3a+hw(qzNL8J@SYuSXDnEQhHPR;b@Z)jpYVWN5B)!OYSs(B7NmTmcC&RHZjX*Xail3MsCp-Xc z*9cdBmSR7HYg!^cc8r3Ni2~|TEJm-CTiF?2*HYhTu=>U^O898m%j0xJ&$i`Qns3vd z(XwNE2hF%)-!}Z<_q+u&(^L4&hkgO~e&Lfnd?H`z#D*12w1c!;gzB@k#MASv|E<{0 zuN>0sWR9)ev{8U3vokxMXg=)ZrQq6*M{Fd?`Wc{gXyB>?`8RG@j~fo|$IhMG&4I|z zS7EG{mteUjyWt3{<#{a6(QeG@7h5-P-aL9(<`uKe;ma{e6BF3;vbWY74XR%wyt24B zj5zAB*$={Deinc!pfE2X0m4uV2=etoc>s7oy2WKfmjbxZR21bhPzP$O`H|4Qvc-Ph zvwF!(Ie$huaOAO;m!-=IJP`7BMaZts#PVQnLYMNo!|{zF)s7^2?Z}$vsL_qx4cPD@ zNt>Y#f0u=fjIG=fM*5hH@KzrnJjB0YCU+G!wpF?qeVUk3^h9ukF^fEARJ}ogsGd+oQb8ED6u!$@n55koRqJ?c}SbQy?uxg8efQoOk zw5nIB|LuSNRDBTrYwp~Sm*28GNuo*NlcH#Mg!!(e^ch6}DGHWTWW$7>`XmP*`I~}z zHubFh&+dUh(&wPA^AZ`JauUL4ETeUjr#!B_@| zXE|vdd|%d3G89HviRETY-9pr8{7HK(?u_C7BAXIoZ{#I&&lEj;{{W$qgQXQn$@18S9Gg|t7;e4^ypl_ab6RY zuN*RGqiPEgv<wuVUdZK?n3U3HHHO)El;c4}I~sFf@Fi_46RS3I zw5;!?JtXel9UJkZ-~ZlvLjUroejA_u&7XI=`l?S&|A`nIQ6*_qvQ$Z&PIh1ZP z9-3I>PER(nxwE5$m-YWpUQ zbY~%~q^DjXj2>Kc46SqhEJ0WHa&10Ir( z#dV(piyeRb5`N<6eh>3k7V(-p58(Z8dztEN)WZv=o&s4SUECm};4@Br+%?~@;}x(Y zm?$=ew8`;$Hd0#~uxO!#MrPX#9X^3oE1{ipv4jy>^E0Hr0dGH{?1gls@L)=GXwB8@%!t`vWg zX7sC%HumCvPsJFve7Zg-+d4a1A4WR^rCp<#A=O4Beq0~wesKR@?B2ce>L2jF;?n2M z)pGrmm%6X6GyR{B1;Xcf7ulwb8|#Ivu6TKfvKe!wrNi5C+w1Gk>emPt7MJQlRnDVL z$?}Ej#?FOyF0TGzNyyO24qtaPxr5Il#QxG-BVUwTX+^kOG$Sp$08vC($i-F$?ocSg z7j^B<9Uwf<$-YL%Mh9z~22d{kNc=`d7&#SPW5=*dHuM{Nu~Mu1q&!mXf{e>gSo?tm zP?qOKxvLS|#YD@;)Pa*&Bf--l>b^oq1RB|2`42`;>Uc$VltY5;e=xB$VTEGN${QcP z;{@@G$Bv$?4{_hKeIsUPrqHFOT5nR^BR)+^7yS~K-^)OOEF`cZeXKl7OUpQYbO9g! zCnCgq6Xa-Qz} z`nFcf9n3FDU-y03_iNb~az9(!%KGM0;*YcNH>5>jeMBFIS9?F2J;SlBNm@Xu-PmxY zu$_?o6om8%C6Y^DHseY(zRPdhsxmQ{&Hv6{eIIsj-+(hGp2DyF+y4U#^Yb0NfVRFM zWgktqgVS?(W_wOxBwY?9r{MB0xOwzhE>57O4QpOEX> zLxi2%w_)GjU6`Jl#`9PDdg*mm#(sbw7w&~ruC}kPvW>3!;>rswR7XRA1@Imz|mv(sdsApm72W%GVz} zipy6P@ygrw)`!blXicLNQ92E<(pf&`!B5KGq=i-&8zh&`E#b(0mvQ8g3;3De`UI8- z*8Y}P9>Smh;Ohn77+>B~NI(8oxzR<-oBtu9ANeS1YijgKQyn}TDrJ9@ldXZab}7kc z;V8jtaM@An9u%Tqni}@F`1RDNQv=#x(V@a#_OQFV38A@)Vkg3twCzH!-@V{v=mvqf z4@M>OX>ObDlO5lDCk2oUs4x>6V8$hj(b3A|eF$&I0L_aLk26Sk+E?UA{A+iIP)moM zR7j-N*NqRoO}d^M#daf=wX1~7_{TBXjn#l&3LpQXE@;%rWH} zhBGc%iO%KfYP0!9%1wf!-d7i2tC(O<^L2L~!2j^)-;Sxt3EcJ3|Ax|y1|awH^mSzbWq9!PvZLH?cYFD*}xcusUJ=x9*0%BN#b$VPP4c`rJeHKy%~%Z5>0z!C?8>4jI8QV#N^9 zi2@8k{n=v+IQrlvEG;tbKK2;C`tXyrGu_fe!jl6ThgR(#0D#DDq-aOi z9Zhn2Se^O?h0Gp6ZZ8gKaEqbk%mUO7jQU&Y%!`^HCv7a`Dao03p0IEzyOf0sGFx0* zpK*-*rmbu-V!v4`eY~Tdk=rU>OptyZ)_EH?*QH|nza2MZkI^(K923bVB!e%J;TCC{TKeET;@MmB6% zk3;+Rwg)7ymTOfQ*GG9CuUT*j-JH)U?EHWavYH6S`k;9hajO9&Z*qN5jsLV`bYg*oS_X%E8yAC ztn1j%#a0J9C#(6$=;aFe+fr0U^E?;e+D}2Wn)9-@R_^4wlddU0C&Pd?xy?yn~($0KuWsc;@ONW)& ztQ|xkeUQf(5}9=y7wpjA*R%Reo@^|LW#G`hnIv``iN=|Z0vGtkaU=U+CinQg$zx>k zUh3~r-^uiE>Z16Jb^{hCKa|In=AKcqW2x9Bm}XZRg+AhdZ&Wh74cj=;nGEfCw@=20 z3X*KyybeG1KYtLLH_YMbBah+Ne)^waadDx=g`iU!@2t<|xKOq~DL8E(O8O80L7xnc z?Wb&@wO&4gN}cr=QT)`k?Z#JPYRxR3IB^Ci&R#(C(5uE- zvb5mXhxq{Mab8r%b90a&k)9mNMc{|e18n4=a=rq@Iaiby+j)rr{d%A!YuDy~<*~2iIv}KF?G)3}Nqt7o)=|L2 z@{aj+5ZZ@apiPR74en?VjAFsY4moZ8Fv(k9TYJm87?+B05{eu~gcnhcZKh@Qcv;`;yh^F8HbzQv_?XFMvty&g zv)7h)G#-ot8{3_npRJGB!0UO#{>~^VI6&K?!=$h;N*F6k2gizj(<}2|e3i6yvGyT{ z70V$xYZ~$E`jlJ)QJi%5ueyCN{_YRG57UD=>)W@GzN=4%S*dOuN$Cvk0m8CEm=Toa9ETE?|=v$*ll z0jycG2HkrntEF64ZFJq1=WKzAuv(tmvVF%6>>T`U-@d*6+q`LWz4%UJEn1dmL*^(W z0@keCgpE57VR2~*_dRiZ1Pe`>P0q#0f3=Uqn9p)tk0rHyEF9~}LAP02jCgkn>AAQ4 zWSIF^16dwEPl9`$5QctpO~U;0UgtV+`q^9&md8j27PRe7s`gJ1lRlJ-R4fE3<#Qw| zqF+(8JLc@Q)z$fceZCasvsQ+d25JAv9GS)Hoy~E0RH^(&Hop;qNgkt%mX7Ii64xI7 zufSPma#3#<_vHIslUqu{6FM=JX9uxj9tE5|^I>U$arB|fxc8A`xNvbEFS}t6rWXf` zKg;pUC2)$eqHm3BWwCT@Fp=TcB-0h2g~3AGkq0i~)Zqm+z+AX=8Nc|6&(-fwzvD#o|3U6PQ&TRD=;_Srb@ zB0XY1TUZp@D1iau{z(a*#mU=a3AsQkDy5j~>mSzk6kJ>WrLi)KFAn}Z6vn6>wnTHy z(9RuoxsW6KfVFuX@0|Ku^Df6{<`?Rz>nOx`wvS~#j^-Lm&yKJ5zPkE>Kl5h1>y5)# z34izJ{sm4Qe^T)%m1r&{$A_Iv7EVG)e@ggL|CIVfac##*JIXiwIna;bV<_qmwsbbo zdoIVp(X+6gPZTAh&`wgmx!E;1uy4=c3$`_QNtGA;>tN5aJa776MZPQ6VNCd5x{TFg z$~BIsnZaUJwQ#j_w2-xT?;hN6@DO(G+J$xN)&*x|l`=DV?MLorQEXyz3OjFqLw$YU zlgBhwQXiTdi*c4lZPamW5d6Fo&5xt&!HxX|KN9?G@$-Rim&6(w?O9JYkCVj6=oHCa z-6;MX=ObLg5p<>9E#H=gndB*<;ow-b2gI8;^$U5z22sShdf`XIKGdzn0n(7Rc9C(_ z$}Vln8dlK~!byL&upHaj#+qD&iVp6#KC`)->N|iLUc?u9NxVYJ$eOmiu9_xnqcxyT z40Up-J_i@4k6x)?$9we5Q+53v`}bn;(r}j(C4ywhcj9kV{5O@ce3I7U!cr~gli$3A z%jcH|#?`6iFMsm$`07JXV9m@F{+AzoZ~e7)lb*Zi# zb6wGkhvaBPu?|ybv9dVHBR%ThNPU#qRSw`Bz#^d2*9Ve0v=_ePPpK?fzvZC4&ySIe z6kJENte%8?+>XY&h^DQNXg0MGJsv||FRT3RPz}!o*-E;U#`W>XQ%-5i`e>XT`i{b} zxbrL5JBR<#U;mTXw0;gJk3NB4|93x*g)8&WdT?rsOr}gnADg7)Ea7$689WzoJe;kG z@?8NNsOK1`61^+r&sZc-23;jH* zn$${ZjS2sPh>bCP{9Kmj!DiJDQEc6^1^f5y!|vU?2jkbQ*pW4^JR>+7UJn0n? z!IxorZUde=a}KA@U+l(L^DG+9OBA!I;YWm`If4X{hIY6EYXswRXY%uq%wOF+Bqlez zqb!<-Sm+SS4PhfTdNlA9<2998&LXd6ou2o+O)ULZ->4fkzA|kr7_w})$qj_+tmkHl zZ^Z%o+(81f#TCAHuO5=7V|NBhdoh+1^+&K~dI~SUac>QK z=J*1RJ$kv`p#>vM!zbGHp#`^xwd!A+vu120pBPwd@e1So=>;5r>~g(ub@It8SXx|G zkk!9W9zTVj|LAAyLGaygx(#oC{mm_3YZ=)It?}U~`=UC=NS~}N!fhVRI^TI`+i&@^ z0VVQ!7f7V&TNx4Hq99WvH&k6rLF>|7m(D1W@LCc}%gewHR=0Q89MJUfY}=%#G@XbC z0vSpj+14>i@|EL@45Wo+6WJx3vA~dY?4&C3d<4Y)v;(u%+s2@LRWkBv79(ZdVtyLF zIX+(2NQ{2kc3k1)PtwVBvT^78CAIgNd{PboPM?lHg}9k*wM6;=^vK6{?;y9(F(*o7 zm7fi72p%@p;`yMHIJU9ZGHSDM_F6`n^@rv8id*;MfBN3H*K^t*|K2a-p|5=&&!%`; zDeWIJ0wTLb<5TupxrDQE9hDB(j%Hn}m4y;IGWKL0F#Z@Ak7P*uSk$)=(5pVHpQ=A} zVBg?Nw;8OK7kXi=mKS?@iThYQ#a3rzZQisAhYlXZwr$(Se67%w(MpD1^e3#_wg($` z9m3+^S?`-q9P^6+@MEoPkh^r6#SEZ(=5=aWd_XM*G%)Ra#=$txf(|Kis)|Q9QWg^Y zT;32REzrDN&PzkRL3$pP{49-DPD!u17I-oru;)-A)3>>9=&;vO+P0O4;C``LPNMCi zp|m6Pwb}&*t*4&fwd~paE|2z-yNH@Lm)`{Om+tJN&IWz?QFEhWP6{muOpHT}vR1B|G9Xq0#bGRHpN+Qs}|r)u{!XeBw%drqsg^pTa%&AHn7gYq4wd#v#>Z z8Z2-v;)#1N;=;+r0h~=z{jx;okm%^t;eC{vHdl*-#jVP&+qZKQe&jE`bF{UULoSh@n>u#(k{l6^CGr;_Vc;XrX#H8y zwe^u#%d{<@{H&@d_~iHQCbnVy=53Kb+*|%^@L6%;5HGuDM7Hp|0VttG2Fu4mA5N#a z)+dGsBHL=e*gq8TEk9Wo#cD>&!&1?97KaRPdB+LANOy@tA%)ndHl|B`$Lq|FM$-ec zUt^4l#JBdaGDmi2#Qx_{w&q^;JBA-$HJ^xY+^@U+o@C_fczb*(Tu(P1>7offSAeCO}OPDt{df;%*Ki0mqt_ z^B8NeW|xtjvl}_m*BD27a)cupbmAxiQr^}^lAdA6Wac#%bOjF{!AhRWUIg{4b}+uO zNr?413t8*>pi8hsfS-4(em9#1_ykENwy z-B%xa9H-A+!cBX2V8^Bn3U6tiarEKKcm%GqMk?U(2*M`n7S_}2l5}e)4khz+-CzoD zcaJ@MK%k&aO-iPXklBO-`f;&xM}u)6b$z^a_gUf@=~=qhTr_<$Fw$O;tusCvo(ujj z$Df6wF?dVaqgW~RF_<=aV0f9Qr^kv;*UAN2Ha@AqBf{~%%KKLaQ5r`gT6$+0LfM9L zv8scCv9V$Myrpdm73(P+v&+SQaYE?#Ujr9Y9IqcmG0W)Uv4dgpujJ9SR)0ITuE&r4 zjSpgKY7%#U_G9?MM}OVn+52o9i)7@24oGCrW7fw+w(C|ep0OJ2HyN8i^&6*h;I$(dD5CNy>psX&2Twi6J*Ti1buV#w!qL0lneSIC; zVeQ=9U?KhxHf`J(?#9XvZI26K`%SOL`42~+LwQYtp?I*DrG^o(G_qyu66!wN9bqK( z63@iO*yQ9k`k44_evyz&pr~JUWN-R^Fbx+E9A@P zmT>&>d0e@;tnmNfEBDp|&zo<*sa}YZG#cTTmzHti6yxHlrMhmgP>zWy8mz(({-!4| zJv%W-wucs>!GhA{L?>h|%U~&RxhBY1SXjpVg=H*W8T<_v$kd9t?FmWOzWd?B_&2}x zvHI>Uuek~T^Y^|JesJ%slJr{zX?fUza#)+&UfP_X6J{wv+pprNEDPGrzh8go2yWWHy*_7*l-vlVs@tjQv|7$A!RLT3Dc!Ulai{XOCItOK=}Zn% z`=ql72`Ums%G*8olhQaEXwg%r2U4q>wjLQ;ws?BJKDuV1leC+rtK+A$Y;)KAt1T_< z)7Q_UcbE`8$1l1!ec|61PT z!bIbrwX>H&za%QJy8f2)Vneai2ja2Hj!8PkGM`%eNq=fQAKMhtusaWdcfR3Py#FnC z;6tCh2fzN){|8?2t?$9M-3MI%fxI5=QMdBhvED{V>}w9&q8J6@Sh4*rkCQST1b9f~ zDvht*$ZTnI%99j@a^I1@;XqadvRA)OxNq-nJbC!&AU9gT^HyFeiy<$xBHufCsTPh# ztCwK8PUB!|Y6^Sz?#0ZB6F7D16c!g3doc2BYW?Qy(0nKTsNvv`P@K>@YOk(xsDV4Nyy1L zewfPyI@?^sm*6yPX*xr1%|HRMP2 zVd~OKWlxaZNs_2IE^xc!EZCd0pixHK4_7A`X` z4;G>>3}~M|as^Kh7RQc1HjiTuU#@x8e-B>9Qx6UQjy-Z2#~;01|BB$Hvr9F8HXd^; zxv#x6zkvVq!=J{{6KAk~ZVi6oZ-3Wd^?xo*N+Y_`;F_}LNbsf4frKDXkiAyZ{oAG1 z+Wv45lC~Zc;p%)+PSCN@K>3BPj_R=!XYr#y@!xRo!%x+{%G%I=0(L;rOE{4Xx}Mtm z=oPXkWXQlroy~W48`ZkA#+-CLCpaXe)qPRR!m2(y!-z#cl(fcQ*t0M`maG*#A5s(| zs&Mi(ZPDv^Hg-9r2tk)axQ<6o$H$zP7Y3h`Yry-nGzR$bK>y2-{gn+5a(Z}48(d#c z0Ufz;mW_v&pO&+13)voht0m{9P8Qjxv<#7LDg29ncz}?{wjE)}_yw?W)9@!{*X-N7 zI96kuTbb9anZn=u;rC(N=5;uA>#e}xyU&% zohN#D!|-nKG^{+$ET)n1hq=#u*0f98S`LJK436p=nj6-y!>%3M2VWqH4fZdE9Z{>h zzWU4R!lH?jReL$ zl-N)u-6jvtZpUshq11IGsu=$8YEf9wkh^K5EbUm&9Og?^rJl#w>EZAMFL^!~83b00 z3=uhzl9q>(iCEgN!5Qji=R0=uqg=pgZHw-@AMFLV!uyEn+<>IZ}=i#ah1AAmq+=Bqt)`|mY#)? zbV$H7Kgyu(tA(BbC`{^Q0@Zej!Oex!3wY|0d2t|n2XXf!PvG%mCvj-!Hr%{trxR3n zFnz7+Nc>GO+-uKGUA5Xtu>&kk$-il>jPs$-eFdMn=Yd+czx93Z#w%~z>w+?(8@*oS zgPI+GMqHxKkp-8OLt@zl5G$V@6k-|J$xEu;^R^FdRDk=;mmb1{j~>UV#}{zw$UK^F z6XHTn7JF|`?(sg?=baQgTU$qY$4=_F02_7kXb_{IJ@ZrM6K%1Mf*rFnA7wF};mCn3 z;;aWb3jJtxkN8=8X&K1e>(ccF3S~zC4=1BuB5vv(mp}R2f*y}Gw%M^KYL5yB_qI=S0Y8+9C>>WJ z+Bw0Od5)Azw@R#JJR~2Lvb{83BYE>zmzBN8lrLm zis1=`v;~fR4b#bBc_&5g27=+y$|V?)QKiHiNxLG;v2P@Tj2meyx$wpUS;d)tz_ZSm?({*OM*1Xs00u@b&2b!p|GeIu%bgwJBVRmF_ssBlTXg$ zShaYyxa?S0i$S0K+I^T`Sj6jZJ%lx*a~NEwMf@vtx-L}B)Ul%>p>4fwtIDy{XYrpt z`q_FH*6la$#9#Z~x23S&h#UrWxh_gsqdQ$^^`nG76?ogh3uP#0)k3XhG4DD`_sO9wWd0hA$X*gZlg-;R?h^!WPwr_O(kCUaq??Q- zE;`C^@tG=e3EJus^*ei?M=N^!u$&Y+8~4AOD5H#fV7p1D^8y+E9;2VGmqy~oF&W|L zzQdx9(%9?ZJ-xVOuR(S;&-ga{=2DE<{?74I{|Knm9Jel(m7$|XF zZjFPNe^A%t0x$bjsLqkv+AJX1>E{E1TTHY#1RE&i9x}RGuN%xKWxuK+bYNsVlqkU) z)?Zmz!aWZj!Q7e|tQ|~775>>{3xoK&;$qKxmxK(GHj8UbLta~ZbbcY&K45*o1_z0s z;dFq*)b-k@QC}Rwu%o1X$00ZSx+yz3y|1loo>w%$6RgLqt!+Ia8{9awxqcOt+A%@< zSNAg659A*O@^K&!6wl085Rl$hF#IyRczhc1@@H9Y}oJf$gV_{f%)Mpke8k*r4`V{~2Wf7!TP z_O>3`v$-d$vtttk-_8%woX))xO-@YU;QqbO_`z?rtd{GptiC3CeU@wNm$|vQdJ$`- z3-ZDMa>MFCCLc7+TDbx} z`efb;s_0N7~_^tGx zdn?}YEw?x@JJ>*7drgKzkf)K|Q;VaI__jPHUw!@uJGyewLIw;BEQxm2S=iF^{yb$x>CnU|pm`vmMF|b5 zo5d?n;PI|KAH#Ok_x-`fx{OIZzi3@0&yJ37Q#Rp_g6(&i?wyjUm+wp)9j}_8()>gWX6n_LVNm@Ye z!%h}DjwMaEapv4@*o!Q zNak~)r`ug6h&I2d*X9M%H$a&8xpS!mW3s|ZA2Gti%Di~*Bk3|K`c!UKW%F3?;?4_K_JDqJ8-lPC2K~V zBhm@T?8Oe(!+062Pbh%9d}R@5&R@dj^>dh>`oG$H4{*zpt332yH}t)IZ|9sRXCV}3 zgd|Whk`N&Au(7agY#iWwwhZ4RJR9DJ!R86`FxY%H&jFKc83P7HvJgQ=ponsqktS+# z&rGN3oa0?Sd!JLgR@~>#XhP3SSAVz9-c_qsUaRWVsa?As%y{7(aD4yyw69;Xi@wzA z-71`LEWeVFX|n<3hmZ=N$#3J5MwH^@MFM8LZ8Q2=pA4U`*Sg7KUHeP?pl|(*B#k^> zUX$Quye49ZX!i_<`p;r=oNndhA!>VKw$yzin$!auQOV#ldDR3)^zeQh_lxj(56DYq zlW05ueBSD_k<}imtEDeLB}~K4F`; zOxL+RW4I`uo3dj0GHlwkQN0!Vd0#H=)Ontk#oCqeye`ix|6aT-)6>(~ym=F5XJ!}K zW9SDfHeZ1yOPAyDiBs5n@K{T-e5qzTp+L=_1;)0iF^Y7~RpZA9$n890bdS?@_{`*i z1VJ^P*a6bevb-r=rH#e46%Klgc616Ddw7AOTcogf2+)ralBZepRCu@Z0mYvfMAdmu z=pRF6BZmSeg=73`oJd-d78WwT zD{yzT5%3^B`_AN&wjfjA+)s2Bga1zt7OVC?aAvT0bqc4BUBE)(%$DH2yY}MNdv{{P zs^xg~O;@`Kq5NtPIl3$)p!F}ftYAtF1vq`c)Rpar_Uy<1^DFPc{v*dRKf44!@qKT_ zRomA)4phQ`Od#xdh`%0}nrQl3^%6tsC9CW;<&keoOl+ESHPlys!0O5AmSNA)Zl z{2cl>IV!TA4Ry^$Kjkv%+dP2tM?FAvSPP+_U;CR*Zeq`n>iz zOEvOS?@6p$%M~2&mUhcym!L}o&PZC@fiD(pcTQ@+-2LyK$N@7 zwyePqfA^a(vt$bQeeu)y;Cp`2$OVVJU?$Vn=kKxno`UsP>!(p4g3Sk7Um0ER9iHc` zO~O!s&%=6~WQ7sqqM$9xQ84XNjy0=SV*Oy;eZiDxU`NPvt~@UmJ)Q%0eJ1q$Eckaw z@hOq@iOJGD61`)`_I5|s;tFAMdIrlk?r1kzJpA}U|Hv3a?HFo4yZp%#6WpUuc1Mqz zTXQ`2w4bc$H23B0h4S$_R~Y`lbifUG9UiXyMvqR0kEh9NLVeUxlW=uzyb}5xJ5eBw zqmwlNO&Ne6oAWu1(2KlhkGATD6yEIkGkq>*OuxfPLT6NcAS`U>0^IRz{XohhZ6bYg zLh{0}>t4zZhK-^8)(Kg}K*2>?Zfn18F&9CsaN=KF`Nz3a3wZqDGuZXzlQ=P0NZ^23 z4mvlbIkf$M{Kcnndhq$zUh^`nU9l`Q92;DcNjm|x6LWd3f+OH9qS3T8&p&_sj{ETa zKmR{)-(!!r3n>5QhyNO0`PEl+K{osw{%>sJCcQfDtQF%cf{i)!CvM)q}N*S;e-bM^wZtzC_Yi3!zu?({ zw6u}5N%^#gYK&Dv`>0Og#ZzSC5tUA{sMR|gjDXjBZDRzvLtIB5=#zV`%k>%gTx=aF zGbw&84lh^rRfPB{j15j&Bps=fNcI}{vEMU%tPPWEmC!yQYI7eMzP;aBSXTO$@{r*x z;<0?axA~^;aZ&27;@x$YPb<%mhwM>Oe?E}Zfwh&Tl|7CIK~wgy`q$S!*IIwD_fb3) zjL{?2MHd=J6r(aZ>+$|Zhbw^Di)vgQ3~7h$s+~#na@#hZSCy&lv%WT6D56Q8zngVVlk7m)XDk{ z>(*k;s#R`>{H5{&DVG-Yo}M!9H0p8i&yf;x{Ve%Z^H#!bTedE85o^ff>h0IJpAYXn z1YTI^9>;156|j*w#2!P}TwrL_PvS_aYq+u?Wa)Ic%in15>Ba~%*m3eHd6f9<;!NN8 z*v-i};8Orma9#AG77C?o0#>~ZQS?=|33P0C&XKvu#>(h`b9)_)|7EVC##K(nZ8Gyd zs<>LcNP0r$M&Dc!UZ6WLd95R^?}{{@WI>e!kXptc>RlSP_W*xtl9veCoaN1 zJeD^&sB;$<@V-yohIjq<_hRS1gIF>>iGTThZ^O60<)xUM@VjTmO(JvZwFia$?c|nJ zJExe(Qy;>4Tsrt_UF4AHsf(OC;~|sf?g#e{77iz{Y0XO4wy?m1MXaKwsu#cp1}Qog z!Um#*$O1&_4bZYixDeLIej53d^wEe$bbb$lHURF+m9tZOcf1E_KyR8 z5b%SZc69jSonIcG=L-p3pN=DZmMa@ql=SP%v({Eota_doS2F!%zFh3wod5Wv|L`ri z{)&w_ed+{$_dotP&YV1<__MgAy)EV}M-Hv({iWa@HwR!xBg!(ePyN47k2V*{`YdK` zi|1dyWPp2n%iJaD#^bk_#Eu=ZZ!|76_TIdC16HkEflKA$D~wC!Ia!|QBF@FIkoaU4 z(Jr!ux7nq$*s^&urbchPAC^4puf6<5povNBKXL-6&RuYiXSIj3lNh52dI4y3&7*4; z3ERy*MZfMdnY7qBgaRAUVKEqXix!4AHvL=iSdR-N_$Tp+g3qWxMGn&KFn!tROWLLTFnTO?T~}iV!&=v9@2wpSsqWs{y?h$k%Q;XjUeVUar?q9b zD8_zXi81n6p4Cn~j_0WnJV$5={){d1vRRg7Oi(O_cy+JT9E)5P7H^lqp)X z=&*qQ`u>mM*vT{a=C64%uH3x7gDC%#!;GXYi*NlvA@%gHIBLtj!$@BUr<_^>XThU%wjv=ACcHJHP$w++%EVqFw4Zpq0}t@a)>F3=$@vnsd-wU-M~1b7YwAV7&Ts5%LcE0yO)=(Ul&>iAWy=zA0;_~6_*mm`)_Owb~49F((2X9XlX}@IJ2qu zv04v|w_y&KKSl>g8DiZ;@7fmC$V|c2CP`I98Z5CTq=t%m$Y@Umgk{mp3EZJ#j=A>eEXi8pC9D2 zP2Ce6evPeGEM2u8^Q$-E#F?`=bo@kHr^XY8+9eb{0@aO8Tw%Dt2)J@Ec`CvPM>MZe zV>d$`8m`6wGaz*12buAK)Q6(oep0>e>IDrp%oQEEGmWT!o+|5#zB{t=I_b-n_Ysg< z5F*Wwl}Fi5+)Dtv+pOS?WV7=uR)kEQ=_kSDZnCzWjBgOad55JH5#&GzYU*JW(*g)BHjVeCB!$jf^11PAg@{ohIa_dhLFpNy5%8S-Sb9e0c8Qk;0KFkk% zWqxi}wGS_8U?Yemm@g7pnl%WcuOm_d^!i+6=UAVt`cMx($)n^o(zX5KRVYzH-~X@a zP{4=m5$j6#fx;f;34Lw(u>AT#fE~VwFA8YOglTxsv$%;>^+=mje*s zhvH51SD>STCi6cXg&B_=jWO<;3|obg3x+J_HLY^(GgqJgk>C{p{+u`J^7)%zeI35zt+xz*$U2XY{QiH%eYbrQ97ImP zjraV~G@u#|0G? z)Pt*e{AT->O<(y=tg$;X#(Clky^Pb}rE+nUi`X<&p$(}DDp2Nt`qR(i4RQ#uvk&TS3<+D6= zxLmrS>YI{%&V2wdb~kc~w-9pF&0N*{=8baA?yKfdytlpTCAfOaI%K%m{a>*Lc_ZOs zF`Nx4Jbw5Xe)jj?j~{*a@8gb#9&2}6z5TVf;3vQ9+whWWw`0Y+X}@~h_14C+P?2O7 z4+p&^3?u&%;9=_j_KO-JwvEK0F?%{TK>?9XBscK^)G{bIp!4Y7LwIP{L0rCh9hT3| zgcugiFQ|yf0?XdlfF1XERIQIaCr+$D68xqwCpaZO>-T*)BRE@!q@Bm~i}{3N zbq)-afwA^@?E2G7qKjvHfiw8(XsDA$nWU8S8!TDFPFX{_9IMSK0omXgymq{i&wlwF3U!AYqwY>3&o9H+s6zmKE*1HCYdTjD1jx{<_SG{S zJ7-ij63SP*(17p&`OY6G(NUlW(qv%gZjkiI@ahP}`f2;f*s!pp3puZ|3&oNziO11m zKTm3|Cu*m#TgQ+_&iI{=de}?b;nP0+hf9SI~aq0}Vu3v?J{eONt{^{G_f|WCKSh{=?)3X!EWU~%pDMymU zII0UrPA4avF#Vz0^#5dV=!t8LOY)WJFLG{epGwurm^q=8<4a%Oh4U9KVB4D2?PClO zbV_N@VCyM_@$J;pW|N}*BvWVmqX)(&4U4nf+ucaR&tcC#-(F0cwKoEu7e^!a^$7ns z*eao=1%N#;iq!UiJwvTzxEl~8}ON~kDkAe;VH#Ki|9WtW}}kz?~BoG z8&|b&d8(h3$`kSL>--KqKYszD zEELn>Mfco!S(c_3<=p9*s&g6oa(u1&_VMlMR~MV0eU zj_MftJTlTW`sN+>@y!U9%;d&}CqeB*>tqXfw|bq@#v0z)9RgBa&E)Wb-TU$G|MhWP zSYZ5(*S!K8SNmV_IOq%LNw94LviJG<{^hedhwFR0YD!NExQpb9 zJriM#gpK9nRF5(CVXZwEPQu4{GM}$r&j~N=aAh5%IYABFA_Y*ep+DjtYKpe z0WTF-m7g3g-NqgE`uJ~w<{)ASdE81q;vO(mZB6CT+Sh(stgQN0O>v;}KAbQ(5zvx6 za=?Gh%hhWn?aYRNk97UM&IsO)d_I1yOnr5A)R6kG*A=F4$chtvFQMY|kF;&r(3XeK z`?%1bLmJ=snj7&QZ@UHW{{2tlqwoDyT=UXblIP?0DDp z59DWPIVibTW1#3O`EvE}x}-=RQTleESsv^Vr06nw=PG^0@-90Q=X0obk;v*a=tBvu za=`{h`4^kHj!>wTx#+k&xw`;>-<*8TFMkV{wau?%JSKB3;0j( z{Re??rkVji!&;VS%{H@+IzY~831w40hH%q*LLob(f7e%Z9M;YQZmB|lF3 z$XXJV!T?tNgD8Y|a*em}RF`PTV3&NlL{tka)f=ku8Sx z?63|8Y|VeI_g=|Ce_6u`Ex`J;T=@0A6#0e3B=zp|e#~c|uK;$zos+x~$qm6xZ@+S z>J3|aY&>pMmsE6rAhv_eosmsA;9s_m*IDJH=sBWe`$@c3Cz^wJA+9gC$G#VF9Q$y5 zpZjhHHvrtQe(k{i(|Byxp21vd%vR`Uszl!)o-^gi@Eym^rE;mfu*>4(V(HSQSi5c= z_U_%={U9#OlKGWbwrK}W3>L8N+kF6A*7QF@t@64^NAgR)<&MpT{Q_?X10G$=N8bue zS+FSdWnVWIh<1`Z8U|VL#70=ldv~9hAex(X{0Lq!(j5hZVmICey6JSsevDOYaXc<& z2hGbx6UjulTaFb=N@hDJi5|u5WQUO#TDEM#Q}v5?5?wKS!U8z>Y#E2=oN#ep9wH0)(>s$!ETZkKKN6d;QqsNANxW;n(om7hQ`NUA`4t z)~~|mRVy(+JA>(|sgCQu^uysbtA0FK**JFU3?A8k2wxg3R(GvdwtyS6zoUzVt?1wqY%3f&`}FXZ!fz426zlVJ*+u&XqD*we^5;s726=aASnu z@{B}=N}Cmg&Kvfu7oUhYX|MSGH6^qT9X*MiyAEN^vN>#7y++B+5(`&Kv0qerMjZWq(NxJ@>9&gqj_vfCridXX!!$*B3U&SNk9xTA_`m=a>QF6sOTi2~!y$t{A2fqd1 z{bRp@J$oO;um05c;~)OyyD>92FY=epnjSy*(D89)dA7Ef80Buv*h}KEIHCb)-9@;w zn22(Qq!Hcw%wzeg)<@!Vl;E*4$lO@!?L0!q7O;BdiouUe(|Gi;-8g;b44(D!OfOzN z>kDSjChbe*Qn?sQo(r?Ga^*^#Iei+34j=Z|1~I;N$4%IK*Jtq1o&$KzO;^^1qw+a| z?Q-NOE!ah?A->TkYmQ4FyUU79@+U#a?rteebYl?r&C}u3WXFb5NeLVW{CB7$y&xWe zt;NXnFEYt=O9D93Lr239uw$T;6&khxMstIRwq4kXU^~58n~xgZ?mdmB>x)F+wn$x& z8N`(>S<7!}v7sgXorJ$zSvwk>&#~Gf?L;O91Z?I@3RgmBDg%n@9(nu#{?q$Dh_mM} z;PRJVfs;p0;K7F;#{;__$K+taXyssmV&ke6xN_?{T(@-#UiVekV8z_h(Sp__@`nR_ zXq*@%pd%+v;hsnL;ERJrt54kZ0CpcdjAJLyv@7e45!S9;hMTXu9N+wk7vtuuFUQi^ zB_YP4F&T5KreNRtVBzg`<<>7S$e@WPyqw^(^%gej*M}=g9^|mq63I8td9q-Nc(D`e z2Or&!{fCa>rpvcr)v~3q@^o~VLpyl6Y#w6;PXSMwe@g9H+DePvz1I0tLI*)zZX^4+ zQQXHC*&n8Vh70KT!@eY9<&k|e-WFdUJ#3fzW98FYzsTVqeI;?H{ecCPrUS6BPygd| zmGAzYA6Z{{AANbXvEuE>N*lQ!<_kbTyi>!{>)TyJi>w2z?D=AtzF%A}vvw(UvXAxy zf1mrgf5cSwSj=J<0-DxOE1%iREbJ0jZMSuv%RI)Lx>vvKO8nz@ycR$Ci+_qQe(X>2 z$v^o`y#Cw1tLuk=Zbp?|OYMuEzLd1uM=K*8Nq9>5uBV`uugH9)<%v0n zcE!_Ydf}Y#iP6S;N;1ZctMrt$$3D}Sb0wGkb6FtzN~ezmW<~oE=TiN z^tyHHaAJ_Z&YnH%+E;A33X@Yy+JoGi-KJCJOkP$WHIK3wA4tQ=-811COKkHq^cVPo zoBh}lKXUn@|@b>Hu1Ck>Nq~ld`zS#zy_s_&S1-i-C55$I=SrkTxhd3+n@< zGvS{qq&e^$nIEcL8U(+ z@Jk52!Pu56UeyM;xs>!fQ1x#`i>i*4e9*mhV*Qot@v6V^ z%C>&rgZuEvmmb06J0Hi111E6zBYSYy&fWN9x*h-d5B~xy=I5|^?Fy`(pU3nlQMAm{ z@Z^{Y@-B1Y>}fo-`v49dJBj0`PPdN@Hf3V4NVav|s&=>6>tB35UViOmSiNi>lamul zSagc2qE9WE!0fU~#jZ1H` zfu-*QqA9oD^=SLn${p+1wSx;1Tn*>t8CvfZF&|K{!`h5Li6xSw_O5Udj>@lYi||El z=-Sx9_VMj~l)G!G1N-HR5c{{sJ#6XYTjG!~yhs@k(CzcFh$b73bsL9qO9753cA)CH z!!U|ktxTF`yo)3D``81c{v6VZbug}91Y6;? zk8{u`!!?BG1d<)Sh_;PQZzGAVFW*{Ujq;0^yWc;C*HeQW{at_kRru5wAH*Mh_J^A?Yrx7BcFYm^|>Nxkd9H$Qi?c}VX@mYV$_^YwR=o%N@r~a6@RGwUU zF8c3N%k%W~G}f+JgT4Fqw%=W4E}UPz5mU2sICK0E_8dNrt!r2M@meHeHD8kVqfU0L zEdU)JMmQU^Fc5g4S|v+0PN|psr*x%!hQy;{|y=tNvVd33#7_zjS_47YJG5w0w8G3LohD z8{QQNo80R0=5MNhJzO zI{}Z3X8FksE+L``v**K4er0>)1rc9nn?))hAOQ zK1P3RWw8_C0T$!?Y~b1H0|~AI9er`_i^Hf`tNOUn=f>HR4kqZ&5e0X-i0xu?xz_VlGMc-T1aT6$XN;~%lje9&qk+p%eJH)YxU4F1LUeiJ_S z`3G?1(0=^Zzx!wSu7CdXn4Mpyaz?!4tk7Y{ht&y%wJ}C{M*=?(`*_rsLr!@t&EiAk z;@Xctx{oeVJlTafpAY01;H9CE7bu+ad`JYe?O4+uh`ezo7~@7~Yh;k^g3ZLomVIHGz)Zv@^u-!p?wl-un<5svYrdKSZ`q|w2OG~>n@ ziJxPhi;R#VI;xYhcm3FpEjHU_dWpt)$!DqSo(xO2&XO1UlmQpr)fNmFEn0K&9B zfnct|{W?K_R&HY>gGcGW;G%%0+!1HkRXDxNQA8T)lMz=4NJwt8b`NS0kgFf~mT}f6G=+wF_eQjZQ%9w^0B}YK+`5EN>mO^Au;n_(89zpp@e#FY+J097#Dx6Bi8HwSfxUwT#|hlHbxWwd8kDTF zZ3oE#UC&Eq1I=69ChzjcFg&Kr28(IegM#NU+wCInvvxRI@$S5O74O24yxI83bS3Fa z+;Dg`Uv}J}1Sim+CnXk__>ud#)usK6`clAiUw#6#T`7d~Up74s?UT`CZ8BeYjxaV4 z#5Rb(#9N-Sx|kCWoBO-R;(a3W$#^GFmdAMv9}*_>f0+lf{+ZuIaq8RreV;th0z_Y& zU3bMs{LAlqD}Laoe;2oY_$pjrJJPe`eo%4l{5hOGcdlLBI(6za zPM<#0o(XUh~qr)wK&3BK8)zPxr|NTJfc_llz2GM2YWtLku(|paB{;#bU?b( zF)EKN6k*$}&nWo-x1cC_1~jj3=b1@a(L5oHYBqWiir@g3tb?Ip+Z-t)hwNl^R4T(q z2qmFr@#&|2^N+CWz!9w3wiYk_rkAz}z)Jei7aqdi!9vBg+c)8RzvYeXg2n3P^X*?& zB8BCtF?%RS^KE~dZ9W@bmad$DeZ+w~yt-cEhrur=khLy`mlN5_pKR$dCL)I*!L^5t zuHo)0X6t}C-CWLb=hy5zbPSK}JB*dfmtyPs)d2=gv-z6{@NxogC+e|{^?(rjSH*6> zoY?lrXER?0Dxa}GRcmC)zYkAFQ^IF{Yv~~2FW*@(epgk5PuoK7M9iZfA$#*axuU5Wk7i1Z6j=4<6tk%jOPD|| zxj0f_Brjy-k$u%T!#*#|U1*lK^2WPzU4&H!jthAC);cLuIe*E@YUdH9!JPxfS_V@M zDT16c+C@w|rdxQ(`%$GDvx0?mrS1{$kopn2lZ&m&4nkfl3kSB8bUS$I$AK-Jy(I6P z%$JA%+DCqjI$@t;qH&z)iU|*uY1K{ zqA{(IN!$?~CxEGw)DYZKEBcIwlay;B`7I4?a4W@SZq>t2b}J++fnl0ZrQ<(DEbTt@0#o7wRy8A5S^7)nR`!r37CVC-Olp8#6I3ZGkK{IOs9F zW`!?{2a8X_%h(!cs|;5IL5`z-Ou60Sv+OF3+^?fNQm<`{aA=o!pK9#eKpY>7%~PJr z5MnX$W${tMM}M5K!z24!d9*(>?BW%TxVJipH5$bP^|Z6|u?(-q=^^@jwCHSlFmC?% z_k1(9Y*>jS`}g3tf9{{*?3q&?j9n0kY@Wrvn(!c&Bhyjl@3LL?bG%X>d6l;uW--O) z6zdDNPUa!)V_Ls{oT4Buhc}9;ehHz940_x~hF_W|$bzotvA( zhV^T4#g1*beDJqv<9f`@%-~XaAr;2cUly5v=qt-p*g2lxca>cIk*&Q*;0wVSbY z#af&=eHM>Bene|}fZi@%={c0i-=eXrk0({)b2K)P#v3iVMDwPy$kzPFs4k##+(-_I zx3qPOIFc=n$M3L$>#Z6yC=^qVW8_h?U{1o?dZll`A68CPb^|(W9wCWbC>oD3!WGSN zs1uA7d{;fXSdd^8(^d4!H4A;Q;J;L{|54l0wuhuESsD89eN_Eg{o8}?Nf47Z?ch0x z4|qKW>To_p(WGRAe*y+s>3H=?a2DW)D@XMdL z2geT_$Jg9+72fjln<^iPlUSNjo1DT^ETg*ihUAXR=Iw)=B!i-U8y7)vk7_NSF!wewaDq4Lmwj?iT~j`P=T4lzuz;(#Y-o4FW%jNW-&^ zw^PB#2@IJl6~Ku#D7dzDnIC1oC2>T2S}%|AAi=lT64AGQlf__p1dbiHxbT>|A?|Vl zP5-Vh9&>NotUm!hCvkG`d5oz=xv4MCVjA{A&e~4KJEJ(w;?wdF@ocXN2=h~x+p{d5 z>CxBfwn&CPuZZEt7fyL27YE*+K1OA2R0ne(otFOEaTLz!=^YiV3(pOrVFPSS>EXTGj zn{d??m*dL8qSfY28?b8S@^<%CL)-dzUmVH0EbfYywEt6zN!qp90XAIBTG#5LS=?)M zF(F=5bE#Y^PrfW>lmcGZk28)h&7;OER;*A9-V;+xuxjfy?OAub4;@wcp}i)NGe~3v zsvi^#IKvl|p}vL9;I-q8%G*@wjvK>ErOQ+lUTT`;U1sc9Q}n_4JgnQ;ummo=TNANL~q5Oerz!ElHrM=l5J@cr;9H&5{^7I{I;=K3L0_<<<6!iabjzPRN9l zr_SKkyB}-suHU{n#4jh|U4(WLMfQp~(HJAW$0dIAlk7zTQ?-xRab)j|cS#Q+jJ7=l z-RKwkJ{h%NdwWS-ns2X5%VQQd*3Y6vCq{pK$!i7>y;-rqAi>QEKTo8L>(giVEXM6& z+7V3-DP=xYG{n8MBfOa%Y#$1)`(WYt;GTGJnE;tzXZG+9Q`y+jJlVoy`bfT_HrXEO z%;M~$W6%8S^Qm$E8I4ske#hhB_J@b>{6AiSkACic{NA74iueA)PvNFlya79|eQ`){ z*ee=^;yfVxRY;F3(`BTS*avl;gw=S9$NE?$)mxV=2X?fG)UT#de;Yrxa0o}xkrw;A zjIhdI><8rf==)|8+9P-9B1(a`2<)(PPJP;>5}J>?nEeO!Td3Vqy|AgL&h! z!GhR|<;&XhteW{+?A!iPXRq%nzm*}%Cq;IjBdxu?4s0AZFBMw7YGwP^oR_tC-~NFv zj^R?dR4$cgw={XT*@boF$PxAE^ZKh_irsg90*~%L+`hbFYVZS%e5+b_=8i}x_EEAH zq||Z$d{prSK}W)H+=q3FZ$HZh5wgT&U4aw4vq^aB@OsO)&_Te$u+OMtco6)kK3p{8 zc+5%fM})h_>DZ409Y2L7>(d4~!i|@rABCsK4;{yszPt-dXQpxaruCv1%yr4Iv0c%_zr3G;15f$^ z(4Rzfz1NH7%i0b-FqYrq!CoGA{WzdyWdS)q#=xK+x|!|b2!)E9*t7fX6xl`g)3Vf9 zwf>wZOoH{zn6~FSTac6e^Sl#bjO`<3iVjkjbh3B^ET58h|6+wcUtLTY2Os$YF9O=; zU`Bjykj59i$b!aLbY(3#fRhWmCtj$i-RKZNi3nP0>5)$1HTHt)c274y^QFL^BG^dj5)e8XdS zwU072fuLy%31}Iy(T{AAJ}s_12K58J zjOxRs-_oVCxZ<*HI5Akz+kfC-yQrrY^PaWh{qj<|R4y97cp4AKZx-8^%`d}|qeoEW zUA^PR_B`kPM~>s@$un5He9q@{p&EInPxOX9H73Y@hL>oZmE!{iG-N{L5ig1k2V)*V zJwh0c9qh*%waCF<#&8@E^gG^7(k*QSgbRVNIOR13vcuVzVg`^N3sr&RVGz%Tnu zl=|ikgI~CJCw}l3eiNU(^8qYbI*pgS^(DCBbvL#Xj}~c%e|U3r?@`?UnftJ0dJ1p< zx?2Vd6-!{JZPpp(WDSWTqDkYhT|Xu#{|ZJ@Qw?BlwEL>I>xodN{JxqfAw~B*lBLr2 zJOi9MsKgcZl@qB_LjtP}IEz!3idXl_oG#Xx?tA|u`*Gm#32a%r3L950Pw~lG#`xkA zF0`I}P;kJj^hX*ST$z1*JN4FUzs_L2-`H#0r|N+MToL~suF#EQ7KRUxDKC`vw{PRK z`jFPsTFZ43e}Rv9(6QD3Xrk388$1-^?8npR?d<-14w5vq&HC|TEMFSFPcJ(ANckz$ zd+Ei!6zx?Eqq7Z*m?87oKM9b$sr5g`7mriJ z+AFuM!@u~RZ)|tT+<)6A@S)%Pm3F2;>J#dp4Ak{3avd5o?({Jl9uxjDM|84lnFr+@LEBi<;sBrKjo__TDOkNU2hKN-6<%}I740sy zsi|o^yM=M7JXZ_h=_^m6Uo7T4t_>L=A)T3JD>1irGftg7kKG54 zYF5gB9ONB_dqIQ~$s{A2OUC7NJH`?Gm`4&&(CYFsi)Iom(U^G;>-uaQC>JDnXz{S` z)5*oc%tA1md)=8{?D_0;BL<>!PomA@mOPQ=SqQ8iQ8WTc+f7K?@V1l#rFuM$Ds2TX zyOEqf4FBuqKvp(^-=5oL^(pn^4x%r31Ojr58U4ZguB;%58?k?M_G0JK4z}QFb>I9t z^amgN9DeAR--8Es?;kAs%;Sykd^4_n<#mH!$R=8h?bdg(tlZq+^`X0P_S9Lt>V~V@ z-B*YRDF*Gr6sLV6hZ|R{qfSgVJFuq0)NdynZFguUU5RO?M=D+{=GPU;xx9eUxSs)=2Tl>;YHB&FtI&+Am|=e zX2N*OW2BsRNOk=IKVI4GahVR)d7Wg?X~Ai!_gvmiu#oLtPQ3<@@;lC72aQK|MK|a zohFpf%y^C9>i_btU*}P-%X!y5IKf#tfZ=3_rH_Yk{*n7ke;&+y7b4$yUDTzOZ+y*7 z_?zE!bGx(V&wk@S;I@zciOV%!Rv*Kj4_56mZ(2M>PKnDd{=nhS^=N%N<`06B=Er-2 zrYFZ0PI;>oD2Xlf;IXtgX|vd>-Rw_)lDBvavGmDd*MC`Gn}dCQY!4|b2mLJ`+1K7n zK4IwEd4jYUi@S(Uv&*b`V`6hw*yTI6w2v50JO$^4T`DiM!gx-U#VkVcvm;Bhm_D;a zzieUo`t9v^*@yNVKs3KQ8(Hu(hHgV|KN&NJ0{|SEPx8IKgM^9k=73=ZZzyCU{-LY018yKzB4H-T7=t1oK z(!-dWU4p;+=2y4R4`+-?7UJI+^IrXhds-Mv<|i>dJ29dgP0uP8c2ND?WeWi8;ADNi zCEuTWQYW+$AHZR9(S70i>K>F@Axl;gmK-)H&YJtP=Puy$cRkY9+7V%2e1~0jX1lw7safVl^hSz&J@i-<2`DJ8EY)>!+QU?SLMm?Mv^qD z&ycwv-f23XZ*u>m!$#=WSF_vtC;qQ*#??F4#j%mK~TsN+0 zAN6?aorR^;o}NZ-pNc*9Pg``%Q7?@3qtdUFVYEweer^uiw{FJe+qbrdzY{%CEk0k% zB|Tg!wtOW%A^OUL+b1Tle8qAVcWbX4p5wUl@xwTG?n2j_k|d$V1QN|WYGXeJB0$CL z5tg%^*A^J(jA z#u?R{1_P>X8|iq8XcRgnelmGDpfd5j|NhtTo)3Q(7kB|zy!;Bh;k*9|)?Kzv7)1Qi zG$PiVZ*a$--;T2<&*E!txC$@6ayzoZiWT{3?=)mo@B3xAhRn`2yRSxG8!esL$sKz6 zkLdSbOB^zwJglF9Cizpr0Fw6zTZV&OzN3Wa2#=i9SzgL@voLzs{d)#qcqVb})=lj% zkr4et&oBwp@{5EY*~i)L|dzo#5)y2_1S-m-dz)^}!CO6VYg*Y&J;h578mL$I{t#dPU! zy3XdK$onF>bFGuY7x@v3|1p-HTrgd?dih`x>#dkyI)gnA--|!|rGJHmg$o9=$3=^z z7iZaeFL7nQVBsaM4A#OAVJYQ1vTt9T^oeLpSxmmN{fF1_uG>DIIjAE;Es6uHPwRo> zc(=F^;*+_Cd-W3KU^p5S%3WY0`Wkn8AI*?z3> zVknGDWpU+&qp7b%Qqk9JOIf~rxq4&j@(nvMIX#1;Cr{z@xpNLhmqREXi_|sMJ{Hc8 zE2Dam1iQnk8R3FOftQbtb-BkTFGE|>B!N_pr`f>G1|b!`IiN#OJD}veC>nFZYpy)X zgX$@O2aLYS%S-|AgyFrrW{HHD zVmz_Qlbygsfu{qSUAw%uMw6cvw$J5_BO@;se-K-vPwq`ZyPEUS9@&po%jR(9=JoLV zVYGhBjeWMo@&;qxFH8sqV0kL}qJD8`f7Ny4*%MQ~5( zAN(o67x5j%q@+dW4+*Xee~nZqPMUvjdCiUZfxq`x+8-u9_P$@kpZ@p%Kjhu&?1{(+ zc)rKwL{r7U8zWYROt;qGDfvUsClcDy_BAf^bLXtCDY@2G_Ao%CKl!2! zPdn-p>D&4(5X+(|>OPUb_}!wE#*M_9jR6+6Uh6z>aY=tDZ$`WJ>MOBs-I~Fd>Iqyb zi!2xI&b6nXuZvakwmb)R6wVA5jOUilb@y{C*I|CmW}G^64towAYZV;MQCQ^Jk(h3A zh4b;Q=4gyIg6Ldb&Ky#7sp6tSS0v0V=c&9+qjpj#6|XRT?ARTRMe=dMXt!GG3G8u` z!Ak~K0mdlnHT&^7Dhm>CfeY~4MVGQW%#Q7L2U}@y_N1Ku4j=pRIof$gRtCY4v=8YS0*|z8TV}(zpT+h-OO5@AL%GWbgE?T>Y zGVsIsW%J$b11TW|>%r@Dzw<6eWo+{Vs>oar?X)_Q9d4n}f>D2MT zek^h{Nb^;IvxCAR>4|GH$SL4e4zRYr8ZQe!}&yU~wKsy`2#?0#ZDyk@>eELPuza(rlZ)3? ztJ;sH4^;>oXHdN}IW!(iN5Vw?ZJyF`u46!YRF)&i;LLLYcmAw#k@KA>$BpypjHit6 z!mW*eR`gh5Clmja*jieX0NBhT#z^d!3vkpg z!WY5y`D~>EM7p#*!n83wU5mBy5$At`&r5T&)A;Eh{8qgFmTPd~+}ZX#tS@}<4~H*& zF*K|``sy<|N}uRc;_LHyTWtR*mv9fPr73kiq)qTI6Ywv%VEDWNNExWJkM%bS`Vc(t zvQI=y^6&EsJAN%q`?y~gBY@3$ns)x!pv-Slubk3p>p0IJl2;omo^pkkpFXc~*e}!F z1WjPs@@2Su$F}y6cl$)c^P)T#7B?=Hi>CB@3nkZM%ILervibSJ4=}^W2x;)y9OT~M zdF;RuoIQU*?+9U$%LdnFF{W*2lQT@x<58W>DeAF7A%`4K6cR%H63?+%EOE2RO{`GC zqETZ*k7}b_4L0L#U=F!ct@M?8;T{^LZb7!QkrzI%MtNM?i$&kUw|r}(otwzja4B5-MqwaY|+;g^va8c zo?9^$;^L&Ib)1Ml?c8KAXg$~|%&<>kmTU> zz)wE&rJYzhGd)A)9~^F8G<<2x9;~q3^CGDE zgrEId?O{2@=wmn1R|FryRGU)RPvRcph;uI{q+%@?A)X5(cs80 zhVcD9%}Kq*73B(h&pmi-F6^VD^QT_GL%?s2H?|Z5J^3n*iYS))*9$3tn{yHgt}XZ=q1zs7GcMQ~3j`AD7P752epbd$xx}EsUz=#G|U94zT-o z?#Hfsc4Ni-QoQ5!Uo$!kPyZq~E}fL=S>Gf;U-KgHX{gER2`rf-)a2nOkrKZPG=sZb zYo}x(^8p0-ERM(r<2DZ4?DcqTl3xz}v@dx_lro)|JfhkW z+*|L-Xj`9&1}9xFzuHx5Brry{lRAiKSY63}(Wkx63mHC0wM2aQUNAVcR{Qcz_^eD> z90PG)K+yi8YqsE5e)4a(kBT>MB>cr6{Vwc#etB!LILwBiLYo0}-9vobQgk89iectAi~_Z)gyU6}0m zNkZ=XHa7xZCV3tCNQ8UH7X`AA`;2nF#o3%Gw`%2z_K^44rL%Ze3gIa#PZ^?1O6^t`$YW@tOb|#~!%%Oko3kx$ z|G@3-?yEPw>?T~kajih(5ogz&v|A>t(a7P^9D31a<|f)jEUz<-OF4$a8`09&r0yx@ zvC3F<9pSE%Acha#2wzq^?AO1`ExNZj038gRv{^m><>&9m`STZW)zejqiy3xJVM<1-@E%$GaC$c?@|Gi!NV^G6F$r162F)-us%DPN{ z2;ee5AyqTv(rQA!iAxt9^Zn=9`CLm1i@uKR$$}p!JjpAA1x5}yx3Lz%S$Nrxl6EA# zME+=DhPbM>BRv59c_WMMTt^y5f%QbCx$$Q@-Q$Lhrc4h`wUbX`(2a8$H_~F=3*`mW!h38Uv z+RF><5znQA#o_Wc!s*#LtlD~Yd%bhtq4u+l?U71Ye0Eym`Vozrb}ZBRMAvucRJd z?74S0mMxvZ+h2Ec_ndy@tQ=fdMZ|Bfi0Cv{Mu(zdwBVX^$ib@@p` z6_$cl`*t6o@(sj^Dwkd2(HbO2H`Zv2p6Koh5c^wTjk=-b$lemI>lgegop7phKq)sEgt)2ky7m+R{ zb_)l@@AJK=?c@5AsnPn7a2)ora!C2)UtjEHHYC%U*;D$f#TOMVKc#IxN5!zx zW-R!Qd=ZLYz#sJNDaF3({m8b-zLg^_bCyr6pYj+QQC_sLi_4w9&yWTyzWV6cQhG)^ zZDc=6==-s^zx3%W;?2_ihOfI3|KAUM3zkex;=$WLi(mY)@5YhC2Ljyj;z^Ak{eq2R z;V4IC_Riu;?u3EC5zS8`7|)ykv~)ebd>rIO;%NJp%~-p7ReMgBrh2Jd zDldTYG%emvO;2NHW@bcV0&6aRQG0ps?#G8`IMOH{$*^dvZy}>QSlIK>D zMaaQ8J_3@D3r0J33U2jSANz64KK2)nAA*U|r{%ZsVc73@=7d0plAspF&{4enn(g}Sdhl~a7`mNKMlwnpNG9Z)BS{Do*|WW7ha$vpeW2(~ z!ji1B_(Vk%KJu)u_K#|RM&*+c6wwwv5^2wmiwwA=+4`WKt?&`pUS39etMTy$6or%Mb2t7p|HE+$H}KtLKH> zYdg3z~ESyY2*4{9*JXe&qb3y|tuGmf) zY}B{EUlxN1>$#_`+-G^q!en;OVx84hp6g^?rYr90V^4-7MU^@jedKz@A^Dd+R4{PD zXJ7vGJtRzILvpw|=vNp0^Yiec{3Kx{4_0mjFhFd3>#wq&%sr6j-@bg}>%IN@`be1Q zKC@q63|XECer#&qO!ysdy#@dDyWfP_nJL`)slULl{mc(z_wHRdf8m1DACIA<`HeK8 z$9J2%>%r$9Ph>}lGxBu+y<>>%8@J{-GQaA>(}&OUBze<%XNM#9wzyc|w|)`pg+MMA ztqsZ1uv}?BW@Yz^yXHTFA2TgZ{lAs8-zRE21>+$heh3~0FDtz5TM9RAz`C`ojW<8R z@=WjIx>PQer=mPfJHwhsb(bz3o`co=*uHY}m6)DghJA;QVgJz+ZJ3Q4qbd3$pZD0p zFye#F#kHNEHHf>sT6hZv>?q0|Y}9TlWL_#4WIiP1VeeNOGtVaK+n0Y6`nG>Q&c zHi~lpuKoDb-8=EB>o3QuWpmw|1FcM*?z!@-ayfe*97!pcXmI*NY}f9ZG#s*YU3fI@ zoY57|C~ZV$(2Cr{`Z5f^(jWYIr{UCGkp<6&Z!+{jy1tWdgm9u+Z7%;X`lN2p;jqVp zpML=RAKH%%t5@LfzUkHN?kj?KGVdhpm_ne8?4AssQs+PG7n|u>8vIR!lQiA4PLwpy zq;RsB{zw@!-kq__p=qW)3Z^bd9gTdKN{p9XJ3AN(`2Z-Lq(#X^CuhPJ?s^pa4jjk& zRm*VI=JgIY8K0;@&FvQ;O;OU-9C2`MC$MB>lKk4f8Xv*>2^?o}9SM3`!}?y*m47-!M`jIDyjec&43Ywv%nvkO zLN<2DKGFCyH8p|n`#Z14-+9|B+C!;t`|uy&fBpJ@!b1=5#Oc##0>3aaK-<8!MY%%% zFWYiF0Ms~P`;MzG_^b?4IyNnq2ahcNvBGI=J-qZ)^uOIUklexaZ! zp0iXrxXarXra+*FuB7i{l1&D)+>yeoOVvmi+)JwBqfXBGkgq?MD_}jqDnDk zPRLqDl@x8gMkmSY!f5AAEO?dU+MdAzBj0Pq_7a!O{QeK{L(KSj=^K)prB4#I+}Rd#3kEn9jkUjLE*M7k$xkqRDL*? z13FbmamRvYrIP8&@=@Wa!(jQO9u1r(rE^<2}M-7vQAF*xcV`L1u?He#l;5hy1XQ zz1TP7IIQ`m&!e@^3?cL*f3r)b@T2d13*PWG*W%piQ~2Z`{1R^e^VWBOAk`94qNW#q!gihcsMAXE0CS zFj&A^yLL66aJjU2b*b2LG4IHGhWvGA$&&6IEFOHnUAA^>tC#zB?;qx`5gRU_Fw`6W z)R*%Sa5>mKd}|@;{KlfLv`aee9E*L<>E>P{F?TzY?Dx(Q9y|8J@G0||U}yL_x{!~~ zb*K$5Hb<9!;jSj5qqd$9o`*HmiykYB9nPFTkB@xmJ{&)F8sGei8wc}{C0!pb^bwDp zetfTbQ#_J~Z}m!=A4#)=k@$qLStu$S2*b2AB7YE_)MJ2D>2~l`?IrJ(m?I&i9}0BJ zmnNWTu#{QqfvUfxvPSoY2Xu4?Efa_yYZ_ADdF#VC_V_WZT{Vxt_olA}h1zCULrJ}E z@57*B^kgxa;twunS4_c9Eh1R!$Prx`=+bD`fYC%v_O*D+bj&8P$RXK$!bleJE*&ew zVc{Y8@(}e(>PGV4loKb<;1geXpuN8Ny35;N;H~~G)sA-ai|vG}5&EzTQkLghe7&w= zBZKBf+X2C6=1Y-ZA;FR4tFFz)j;EugliIB9*#eHYvXx)+5#jK~`+9#5>cJzw)I@yM z`#A0*{ZooV*I8V$E#tWlU!Sc@pK-d4dfD8x*dp~%?j!xk=(Ikc$(iG^S>%cFC?g`H zFZt`w>vkmR=OfZrxw5es#cYH#yMLnolZ_MhN0>-v4sgXh`-N44wYSdMO8!S5%%0i<-39%=F~S)YKHFr>AlH z=mC7;cYYRo@BGVFFS`yL!NKDvJ(t1{{Hms^|nY8*)W0$oJjNXh56;A?;%%s> zPk=iUOXBEWH~EpT$-4bZxc{Esc;qyZ)>lX_5Z%8`9XaL-@f(+=+c;LWeW zdg&ArF&4A2nT-S6sflPK-y#D7$)uD9>m^H+I-#+nVfATua@l0e2ogB@{8G!GWsB-t<(|;@_?BP5CDT5vlQL>r7M>h0TBeAa zmm&Iu;fV|$PWs4PW!p;|2eH&ozg|l?`{f%webIx*@~GS6ydL=>VD|*V`C|Q~gdReQ z)+ek_%lgds&>1w&y#JBh)%_-pdfubKTO&8CRn3^BG ze(7D`fo&UC;lz;x_@n>uLpZ$mQ5-mM5WDy8!`ZXvLVr>G!RLQDenfKVdcWJo>dpRX zK1#-AV}t%jb}ire42j(pC+$`?>Ayhk6B#Ck9|NFx&I=`<5sZ!4EJs9mtbENZIg>e) zMZ!uyjeHJ44$Sg)@)5s0!0UnnzUn-yIlE``#*J9HVny;}@d~c-V_)2Eb^!c zXd2;QldN5?L!4VM>Z@Q_d5AnjXb8kiwzEZ08sKp<3CGZW!*=-h0u3@ z__l{}bl*{2zG)ra^zxga2jF-zq8J0IL6{wD5RjsUZH?%`h_MW`Gcz}V=_L~`7$u!b zPd~0AxlojuO|9NJ<)=Hk_(UXsm1L(k3j27N=z1uRKeIyeQ6$jIXc3+Ih!Vl-67ZhP z`23xZw7amHL;km|TW#=VJx7|Ks0&yOp9JzxQgT7@o1e2$q?fWqwvhMPfT|OIwDT$O zahTvvWYBov@JI@t4-R}a_8*Ox9q%xBD2z`ZKQc?mcwq+<>0;;wkw3@&r1eaw_OS4! zP2=J*vBv>T+3xL1A+8}rUo1<=NG{#xzoc6}A|5SHy?+lXKgzz5F0G$g8kP?ZaC%)x z3FE#Mo}G+VUg=HN*KEI16Y0;&S=-q8NYShH74F~xDQ!eA;xFR0;6M)!TSwxcfd~$c zzCVkD5)W_6i>}#>ANhyhfK|)qaNw~A@R48tS)4v`qYwtwP2;#D#IdMj(#|PZ!AM+v zMcOi^W8=q4&{-uC38HJNbURx(0M*#vBHl4)cIF|EYX4RkTd{oU48Gy!>)Q8o8}5{9&M3l}{c+uZiy9vB5rzD?b; zhKq37g`%{umS6e=8w8}gd6~(>$bKC<@;)$boGpvN5^upb(Ge#ds>co<$Cv-|o>o!c z`Sq{D`jyKK)46)=VBTNIIYvCNb4W=FG`D;TcDIW)WJIT4Yv^baCMP()FU+($)>0J2 zQ4(21{JJ_y`e+@Dw@M#=Ti?{3IeP(r`S}Oh7UrgX)p{Zv<=W7Q?^nM+#eRYfk%G{J9TG{1k8`^~k-w<2pM~^wEskqcMyf zm-#-j$@Q^u z(^ts+9==Oc-SllF+F_76@t zY#w_e{EcsX8UD%N|0|eTGKKqZ{RlqsJ3o)}XHVnsk)wF{(Oozv7O^T_eXdrdcLey<|Iio73ZR?pZn2IJL6Zb52Qt1o)l_BGO6Ed2h z_7AF_QooC2&uSu?cG6gCs~zh9K)?M7UPlyMXE65BwXB~?Xg&PYKK;>3VSft!(!%Gw z6P)@S*QO&b~hBsZCjbS#pB?cHkLItC|r`y znRXFtbNiOUr@m0$^nBgvbP+GiUA&wi0 zx5?G!QI&H=B8uS1!j3BCqhNBEkRIQBrInjX|G~vwJNM$V_wK}vJ2v5l?Hl~qH0qp< zcUhg<2}K^ImAyO?8tRRZj{EAZdO@Ggjz(V;2vGP^j~BvUccy0V4@xF@ACmszj4kC7 zG!%cPSf2zCE*!ctf}I#Drf@Z6`RLvwc<}QNV#)L*{`zZf#@y^o#H%7(oNV z2#FT&Oe$2my2t_LL}7B8Ff%*RwKKFqIGidK?tu8w4{1yarR7np#j9)CB@~TO7e6u5 zE^g0((tH*UHLfa!b)ga+D#-zUNi)g= zz<6C|pS71hgUZ4co!O}D_hn0?w)MqHrKj_G7Ke4bv5V4{Pg0*5AF*v~#^C^G<`1kq zD~bC#;4Qb!@W1{BBe^&k`20ut8c)(4yd;bgW z|J(=LwxdUnVfUVWVDmVm&3RcIWO)F9v4hu_%~PcKj&qd%j53?1lgHTbDvKG9OGcb* z<1{~bU(~zXq+LDc#qfkMPgp+mCj~m;fDcOf(hKYTkD5#SOE~EpmbRwJsqN%d=9k%h z`$v?})G@#T{^iT&v1#K5P_N~lOkq4V<*DZDX)Mo`g}F;R;J%`A;llaB;?=v_N7~n{ zSdN!ndtLj(N>iF~>guh-Gn8(7;8C1AccHzOJ936&YQM|kbsxGwQv+fx|y7j;WNvR#0Ix%FZ>)oc?KW);(eH& zoW$E+c@rjRbbJu`T*-l4?KRa;MTZ3(Yx+e8os9@;@rp#fWLTap#iA|B>!se(E$G~f z17xF-vFJnTodO<%()A(qzAaJt7*(1Uk>bnTt8?9q(@LF6`6q^gP{+xI3k$gQPjAEd zGv{#gwU^^fFS}7O8W%%N)$1Ur#?p&06@%UTg3&}pQ)hFtbmb%_rlJEd%XOL38%GSL z9OP;=q+Z4uwn?6|2?ufs(po~D)=524M-_^f$T>(!z^;$J@B4M1g)KCvpS^u2PM$tD zSP9>P^@Bkn$%%@VEY0~>G@;vEU<6ow+pyN!A3#vY21jj^w5{Eb-25FLE}M zd}{pOmcy3*-5Hf02l~}AM~PGNB{|>#*3#7VTK8J#v7WUpG<}ahqR-v`G6z|%8S%Mr z8dr%-7I#3L1$Dl#Umzu3I|+(y7xUy{{oW~`7ya(CTG;WYcm-1Y-b1~uEzU|c?x%A* zqvl=Dm&R7FDdET3h+WT^Pl-3mMU?Q*h;t8I8@pUk>{cuwdA69^ex@PwpW1^v+eZ4Z z@-V#r>k(`C|JuQi8~^dgz8$Z6$rU(v_B8(2Fa02>%jm9Rh%^ISR|}lvkI$Lt-!@ungNY) zsXT?{Vp(W=4%+p?xpVm9pZ^Z-|NMss3m+4B{fl3Wxh2hGxOL{db?q9=&Md*c!^iRX zk>hRrPQc_flWdelNHx{ZMXF04R4(f}9PIhXcCCc-3zHZf3~7F|{H5}!94lcsy9mkp4iC6@tEdxO~S9)%L#*bf?1<|{K3bu z=gYg=ZU1k7&CQr!I%DyNh2bage&F?A?WG`n19orpQ*-{+WCuk7yzm>@%}hAhqE)=v ziI&$fo5@8^3t|896GA}Z=M*-YJcU8FNSd;Tt!v)e@rhd>Y_D&=<}xguolfypEc#}0 zY626JdKUyaSjusjmRvLa2|0tI1V(<=dR92&1J9$r`YWH*h4nLkrE$v%H7Arae~4_% z=<|t~zW3Mu{1IcSI*fcZiz_R)^`R)Hq|VTbV|dr62kxo2kCF8GV-}wlt`wb@cx-$} zUxqDx-&g7|+DW1D_0gC26kO|QviTZezO{DL#l}tyNnwwiUrQnL9Zve#n2k#8f1Hjt z71BSpWUr%sl_nwMxqL2mtXaQ$9zXL>zO_Bv{p{(J`1AkvQ`o=r%WeDKefx3v=rKh# z)4j!8>IwaR;Pp%Ds`ig{HiWbKVDUd3PX!m5wt_42U+;euv~kEEFy4Q4?9|0NZ$AoS zOkPK0HKjB;%&}P<_xYTy&v=8OMPu3}zXTsY2zUp)Oi_v3IL!~%SG-QR-NCha(}s38 z)X~d733$ zFF9&9yhb{+?$s@54eB4E7V=5Cc_gbF%Z*(Kek`(WN)+L{4AVj2?;XfYvs^$eI|Hr!(E;_&pE!nb zem$z6sKAU1=NEA22k*d{lV|bDo36yyebu!J$q*{~;$|msp3{;dD)ERVV{B9BjWJ3& z11Xla2e@0F$XwZCRjhkk$U51JamrX3!bESeB8Ah^;^317w67oHjQlK$<(h;^(ah=Q z_oeLGcLaCby9+bZlX&UXm%+Z?*#%&bttKZctUbMDm|)5tx(uh!Sy1v6%GBe*K=l43 z5^XAIk?TwMsbm<4WfnR&CZ#`!kZg*L34N0>ejyPr_w%`}E@DSMQ|o zKH~L}QI6s#-hokdP^@76fkIrChV?kzX8lNxVSTX|>4O}_ez_rNMTG-CBb)a5TIH1z zyUFY&AB&^}PsAT9{7re$HCynne(+ndcGVmX@7akz`!D|zCyyM!`Sa(oYtKHMJarm< zg&hsag|4RrPL2z4KB?DATB;bIh(D+JOy0BgwHWtU8#Ra*8yB@-afBoO!^sz&@cH0(Qw{1J*C|CX_Cnj*^mQC&V zn7bd{ixa2M3}aZZ9-T838%z=Wme!lDSPj{>CE&0ehMT z<@qs^$>zM4E(ux;cUG5OfP?8@KF=>K;Ez9hcMJcT7hO5Xc~doqk7R4{qh5ontO_X! z*rFGyd&@w%EqWy(E8B5(^l5cRnzxXKaf--SjNP73(yRd8U*PMOzkG}B@m@2CZ&=U^(XaKA0@|cCa34A@}X(O^4fZP-N1e9bNA!m(Noy5ehn_$xGwCiHSE8b(Uc57WBrjc5h6=T znY30Yl*N0Iwh=p-tu!>I9gZ*W(~;h5Y~{9**vau;bnDw=AIp511I{A9)EH|V=m!}) zK7s(YcsY?P>ZeP;U8QG4iJOCddMBOMDFXQ-yI6m_=b2v<~|NLw_M=ya|dCiIn zH_|-^^rOgdKqDOXaC2oNYxjg+;YFh9NU}z)A}+9j(~IGWOE; u{SIgCMh3aG8^ovdy)5HcLP9lN`~L>gWvJK1v6svM0000Lc*Dc-h_F-qbhq1aef135gN4F=3NIVs~-l2IzL}A+d#V$;W zk~5?@t9wQ5H>zxKVC@S!zE=2z|BH+Y^GmYKM+6QpS+tLvD_BP3wFSrJb(3z@ZhE8I zBi25p+{S7`{T;noyWQOPTrha{^OufmS=*Y*fK#X6%{1IBSTpzU&m2Y(1_ov;PZ!6K z3dSS_)*dFeMWRdtt zE4%mKcbrt?k!Zx-lwe|9KkNVJ)i*Ubnr==xo*tiD)_(cvw+Gh!x1WBwmAmTtV`Fh^ zFRzJ_nVpNzylLlZOwf?&RN9@PBExlTL4b|ozd0=;C+8n^k>Of$>S&jjM`)ztwB-un zQ`hZcE4p&!)hh+>+UD(oMW(N$Un$0}S-F$-(^ix1#}q=NtJ$Z#%*byxnfpsm5*2&YLVn0N4B#4yLRp4#QOs5 z^@Yvy@-x~U5;K_Je=3>1V8hDOhiB``W{BMWkXFrZQud}|>T-S7-k|rlKN`JlI`vLY zB4nYH95&K0@xhsCO|CXAcqf*@Cft`6hetxjRz>lx?9cSYD* zu*_YY9Om!m`20&tXueR%r1UjXIt!8wH&n&(TYVK@Bc*uy0K*dlty_~D?O3Z9owfXU z%u&7W*sGJOFJk6xs48H!YCkSzxBJEXLtowt>)z`zmD=}Mv8VCW3sKF(koK3oqAEvI zKZGj(Yg{k3>R|X=rrPK03hS(L`7g28)%>zr@;Hmle!Je1sgG`m|4UVC{o0DPCUW`}|m>)%44ASIzmzcj=C{pHF?}{`QcK z?5;Q0zyD^arhW9<&SEy^c@VB5wI=g|{qzjMF(~)ZQ-*7WhBY!FiF3-?E6se9eA~Bhva@lA0Op z=X={Khfeo5ylGZ3Ww}Xzh4vYJSte(5T0RfkEX)PfbKy(G_5}X7F_Nb6Mw< G&;$T^-EgD; literal 2199 zcmbVOYg7|w8V*&fB8W(ot2joA*d_NH6Nwr~Vj>p-qvDDlCz$~v4^~MLK&*hmkRSwt zbJrok#^a3JB`W4~3D^w@ zmctxS8p>osvQQ$6Ndt)tsRxA!GFUJXWu&3MWqTD z9yE~d#TI(e*?a+m;vt;nij`UvQp%87+j7kI443|wT#mN}fl!r3qEbc9c0oY63RP*t zRcgT7`+d~`H$O-wSDJ)tO@;apHy_c+V-Q%VQ7M4;ndZnp;ROX@daxkGgNR@e6B!5; zN`zo3oycH;3?>7VvZP=rVTKR?zZoQBPLWOR@;~h}E5drxwEZ{?*x}Mz0jnCZ@))!YW{JOTixX`06>k@EmepE+#x_Eiq?RAn)_<*}y(l>ER;5yNf?h}&H zGB>rj+$V46XT1*{Y)6VLlUVwHU1L6@w7EycbbMp;NK>5PptY)X&yc1pkfHW(w%f}1 z_gB?@)|WY$hd-SU?D{?j8qc9y(7X?Sy`U4aZHnbj*VC><6^xImwYkW8>mS& zN5khGgNcVkovxyhZec}F#ihx+fk7|K@$)7P(tqyHIPz4xyDT9lC!Ta~e&>xdj~^72 z6E&IH`i+EIyd+fD+}_Aj9xrb_dwzrKZFQHOXwiccwkL3`TQN@tw<-Ja#zhyUrPOVX z^>t>$^X7x?*E@h3G$0LJnALE${(Rz#qKVSEKz?`wZ^x4ewtH%i`#y2fz86Dq>j3trtn zT)mqma($oUzbs@mQusP zEaTtgQjWmrT>q_6(7Ds8z!^5!i+MMEf8p(44XhO<2)Ip-LYH~d$D_GTUtJWLYm%n) z8NS{&x3`~4N!Mpwph%k<^ z#rf#feFe9kO&l%+$hT4)Pb6P4*FR%l3!V0=*hl*9C*lv}yOBAGn~Q`mDV^3~gUg(@ zmKOHsygD8N8Qhj}{nnTTh7W)XcdaZ-?hbxjziwSgpWboX%k0V&*1c8h8MMydv!)_{ zw6H9@$(6}QPhL(px?i}f7@qfaZeU4nOJQ4Pwo%U+voE=DYES!53MKcezM|G>yAg`n z>ALF0bK{T{$eVfe$%>81D+s^; zG9nqYIk)ww^YE8Nc}Y&D`GN5Yw-MSm4jU=(YFYe*uMpfu8^X diff --git a/app/javascript/images/void.png b/app/javascript/images/void.png index d730666880b736f0dc2d16343bac0bd91b221126..c2b803c13273c87888b717b68ab8dde7cd59f1cb 100644 GIT binary patch delta 62 zcmZ3-7%)M?f`f^Hfq^L?;uVk*_jGX#sbEaDXy*F2xQTJ9+vCM6B@EADWdK}L#ix!7fqSs-p diff --git a/lib/assets/wordmark.dark.png b/lib/assets/wordmark.dark.png index defe50178180a8e2db9c3b5fd26d0c8f4c042d38..6772b3318dc35c3ac8d615d4f9fcca6d7cb03900 100644 GIT binary patch literal 6753 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 diff --git a/lib/assets/wordmark.light.png b/lib/assets/wordmark.light.png index d4485c0fb276fc079c89b4ad8d609699e5e2af03..6d95088a480ef81f52aa0da240b99c0a591cec6f 100644 GIT binary patch literal 6613 zcmV;`87k(9P)h!wXufQ z#z(_;kSrt&>tKxM#oAy9-NJ?C6~!3in6NY-kk^cfHNg+?T99mNJ)UDrt>rzHIx)sL zCahE`xx?C6aciS<@n8JJnCKil?>sqk$}Ng9#xY?@4?m!{XdTsB$2J=i6F&SP;M3x&96}rp-W8`VY{Ll+f2ByJ7z&Iu>vDK|Bw_-%<8Xb*-&^7I~ zHu}3_*|C=|8IU*#2s{joW5N=X>z;g3>&Q%_BSHy^TQ^cgvFy<6P&a`eF^&nxByn*_ z!XFwpvKxewBHCUlxk+Wk*d4F|Bw-vAjtNUJ>qI^`PWY&C!$QfR!|ha7jNJ{wF-e6u zCd>xH@8SpX5D2A!6RDsW$AocA{Fvt*d%`%OEg+O)G2;aJ;pUhyj)}jjTUTz@Zg7%z zLXtYjbwWF|md6z1m@tlsUor)Q6?7mdsf-GSIxEI8VH^`br1gpC@WXc;B-K&e1WtUa z7{`QhOtO1AaI!l{c9AdlcKPGi$@24$!{w(RhRCl!kCFfWSu9S0BWZS@xpQog-+!HS z_CCKKEWiFVT5|liQrv>a#0{Jrtunqx;48=p9t7ZDco*)0%-CJD+o#K6l8#G4QcCAb|e@t-*wV&ECrnZHN;W_s@Szm);MclaM`)vGm?)UmG{Z8LxBI%&~-oQoaJr)US)sg2tp z4(!B{VJedxY=Jni1yg-oCSC9@#Gy~n6JBO8esTDDJ61uN1TYI*AdZybHq@_zGD*h{ zNQfRljY^J6_GHh<-z|QVKW(ElZ8Fr^FI!YpJl8p%tZmYtIJ$HvRZ#vTXH#<7IhNO>w_mJBx%-JRhjruv?Cbl98p=J=aLOgP< zM`dyq#6y4aNts0B7DyO8;P66m5H~_RvKzg_P$up1BgA9-aa0(}WEOTq9D5lt<&?>; zZy|ott;=lBzS(tZAI_<)_5XL9NoS~MDSV3>uuX65fOza9$7PZW34@~|yi8(nKO~Hv zad0PG0M|o2wi;_ZERzmc1qqWfoak|xY=wAa*&(l&u%j%2xKx<4MaGVNMh5h~R)!6_ zTc&3J>}+=W__rk(i1zfG-8J#FgSMG5;eF4yiN&xB08N?H#0E$h>_fK*E|Xgz zRp4O+VVi}Jh@vl(rYM4hSs4nPlu7uNqR+u)lDn(NjNF~#(!jpgNql^xgEk%r1f_l3 zJjtEBI^_Aynhf{+ixmvUN_N_(|JddZY0`L*evV!-T0oOHd<5}fnVbR%qqh-^z%rQ! zsX~ijlhG*kd6~rHLr4`V#z5bd3GgcZo$0x|@>~{4&+g|`_yOwG?IL-T*ILg{8~bM1 zzF4da`P(*!47fFH+r)BcavsE|W%3CmjDAJy2rH9*H~^_aWf%ob>R=_r=Vfv!q>2@x zuJ6hO=nX<<=4`)kM$Qg#A$82_Mz`p8I{YZ>ZFKH%YzPaPPK({py*;;KyAwVq~n3vMt@ z@+PgZ+D5IKtyTY6ZsYyikwxyr75|!1IBkne81>TMiiy?m75@K$KvbpMXxym33>|Pg z+gN$fHpY#7UO2VKjG*c>D-L@fv^>}OFmlik|Cv|}z#^>oxJ(8pW?h5w5{2_C_>22q zw208Vx#mJF{DS33MKao=2PR-CezL!f+9++YAELAoOEBmVcaqh|6x@%JFqBEq^2oRp zFXLnkLWvklji zltC2U#}SIt7)w#=QJG{be#shGTnPRIgAAUr)bQ#sx7md9l>1)}r{dKmuhEXF>F!m}Qg$p*z@)dm({`%d5j z{Iu=wQ7GcVKQ6i(89wM9_55K2?=qgB(6Fx*PTguWH*M_O!V!wi9bd+uy?4(=n%R$_ zvRnaCcogx_W-5w3D3jw9E7?sFg-@^n#~><94|=Q#o1A2^8oVhqX^3|q3TGSaD0eAO zqfUZ0vAEa6GSPlr79#*n1}aY%BxQ=p|zf+#Pult(1vVVfWx@}Nu-AqwZhHi^n3(90c{ z$r9LPCdAM}P$pBiZGgDYv)kE58|QQw|NU0={EqF9GZ__f{ z=m(%h^YK>mYu9RTFds-A{i=HY;C?q7&qplE%SDPgli?!K_}O8ZbcQHw$N8uazn96$ ziurTlB2ye(h>yZf#UC*-aFJBUW%7>V6j56^i0bJEJsg$En+PROKn&ap%4EvcJrGwi z#=I+>0xIXusG#)faiR6>W=%#IeKQg}{Ml-L>lT?t^8g$e zq`6#FH#-HDILB&!*UqOJ&97ObmCbzZskC-DWE8jUo&%SuiTw^2EiQqCU>6?8iRk2) zGEwZ*uZPRbh8Wm^LnTk~E}VLBnK_Qiq?=;SaJbC-iZv%L%48-&$tjw<&?uA5We`6w zEtBM~3$5n&>~@yf+LgLptmaRg@QI5usjm17XAoTHEr(^&47(tXe2P<1FM`V?pjf0g z6)w{gVkiN>&jQ86KwYPoqcX`*+=Uhom$_K6K-Wc?q$89Zr7Dxc$(xHIkxx-3T^3r+ z@14BZXnvyxy{zVEk9Sfg?e#l4r@7qmQ-e={IJO-ZqILw9Nkhf#)^M4i;x_LT92CVn zXKsM&M5EL}nfw`I;61ob7R12Mj>=?cn9F3-PKXaE%4C7n{61!7!sqB?GoLc~*hQIi zS1dsDB4;`-lK`%Ocwhy_MOc}%Qp~Of*I8}5BT~G*^I~|BP4;D?KGpXGTxWn{k)e~9 zV}-X&CT-dRiF}GONm^hrUr{Cv`dH1+9_OS?`YPW4;6?tdC=*Qzm$BWESl!-QzunyvZIT2DOZ51UL1K0T#VqheGpS$#n{G7(c%dzGv-t*!*y&(oR z`?E|YZu|}61DZ0in%}2~qD(C2XODGKCW(rjQ7l|%iKQO;!*$v^x|?gN;%U#p zD!MiMJ-?R8r;rHuN0}U)-TK8(P7;N!+A?vF`k0Q#9K8D?y-Lf3C?4~D5nN^_#K8V? zO7~dBIsaI=%#n`Dq_<*DGF;|4h=F_kSti-*--Y-=LIcAxNt|yppE9|`v`nn#XOH>N zRhfJOG4LE*X1IO@yz|t+MBIg9h|)a~P$thp419+mT;(ZD1mB%H#uAWs97Fe6|?F< zn_-Ii-=T(s1%IzY3{66L`B*V$BwXZS#}9hE+QB2?HAz(5_^=bz{CQ-Owf5mZ%EWhN z(m?rY(^C*inqz$!%A^-Q!~wK`CZ|J;7|d3jLhAr+qOigG{owj6f*9J38jg;t)}k>& z$uSV6(GE}7mLV0ksflkOhVBRPW0_>Gxtl@}KVT=WC=>O3%H(3hGU;VApE7auphrTU zSIjC#4s6m4pFuni=>Cp-BMeLlo{rMM;7ve2Av7 zNf!2cP$tn>p?sid8nj8kdk}?GAD7A6n<0@;Q6`<|S7yi3ulDYb7j!wh}6lF5kW~l-Xv7}kXJRNW$8Lzy)2as+>OGF(6?{MIp-}Z^Mf)vNmc{H#$9%Y=|zh@}#|kB4zB z?!fcvUod@{MBzH+U!A|;T#P_FG(&fc$5L!lKBnFz*FYTDR7nZ$4e@)p247-zh>JT9 zAW?Dp>;s6Ut#}D{;yOHpcO5QH9UZ18R`16u{D7U15PXQBugfGqea-p#8LPzyRAmy0 zpFeZdyROS5h&Le-=o!U&hj6+SCMk4ZCW>dBh2I6xq%TS#5kp@lQFt3t#fs4b#Ls1t zwt8-U`fBlmg!+bM(rIo)e*Vmn`Z6&{C+zWAnP}ELxYipcX@rt6lt~b;LaNXQh=Dej z`npUAX@~8QDs%>j&&#ABWA*X*>8r#C6lF3e5@{Ybt%u?v9G9lzDNSM72O&<5W zObBU+pCDCW6`I2)ad^+yWkSeU9Dr1TyAb&QQ6_1tX8chmJ}(nOmO;W`o1-#`$CqI~ zm5>Zg`k~B4nHZ!a)X)CoLj1tEOghev$j_fS z{B653(I?mO%cWjGLlDZun-%bndvrY@6QL#^H=)d`O!SGxc_@ZBbO1|G4PK-U?s0r- z@?;SEGO2^;;)62Lrxor)S%~M2aOENqQI?0;ga!YT>^xc@uuy4Ef)7?g6-&Gz{SQd$#St*}e<9P1~UD8Jk7Vwr$(C zZQI7Cj&-)}_nv%bbNjWM|8M3$F-FfbA^D%%T{9E_1W`|Sz0}kFoF?C^Dy1h-01!lO zcl~}@DBAaEZxvJkuwHlVyq>PQ_BDEUqc!W(tDpjap03)yk|zIhyXt$YAOnD&?yBqS zFr`9QS9vlOYyfy=QeWBatZHAP&)igPMHO@a;B?ex^JkEf(^=g{H46Z6Q`L{$R7L-v zQTZsrUU?-&eBD0s;vKW^tmjP?Nl=YfW`oHlV$y%qOzMR zuBe(7063lHkee*&e-(Y~CW{Ac6su3Jni&9?p% z62*Q=|7rBKlPuor#)})Qw%RLGDgeMQ*@@zLPQ0jn?j@(Ac&Qu~rEerX%KJ*{bK<2F z-FRUQGnJiD0r)dunH08i;sxz_!!lgK+(dv4j)R`YoE0RaDmmCP+Z0)zXDEtc~pQGa6nWMx(v?oqp=u&x`=Zzs#< zU>WddjvMre!W~XLf3F=cJSL~TKj?wRbsE=~rEsMkFP<%j$2*DQ0dk)^$o*|7ua4G~ z!;qb<%ww9_NfiL#|KoP#pO+!4eJxpBSOpgV!09L)?e{W~R~uWX-~s@+iQEECd+sYq z`&a&E6>I$9b6-klSjNyI%137Ci79MjC@hb)gLJ8sGei8} z)(8LqJ%Q6Yc!AwIs7EAY@F{t`J<_eiZD!n?PW?lxM+(!pM&AOB+splJVH*R-%HhpY zUi$LakGFn!U{(bH@Ska3Gm#A5D=ZnlBiuLA^YYl9WenaYuUxMC{&`%JZXLWq4)6WG zXQdaUPygv-jOa1}0O$#9W8fgm7|;QVWimbhfYmZ!%MkvQW%8c@0L+&D6|I*3f~3cI zER*pG02;p!NgMq~$w2;^W%8c@0MbUUVMY6%mGoH5Z0VgvjS>LBhx3tsONMi03@wtE z)6rf>jV=HHbFu8CjR9>(`yRETy?T^Zv7@~^n6d2CYIFktI4zkat#Ia~bfmW?>G9kv zvgA&-Lw(`Kt0*=0007L8w?sPP?VXNf?w3B4w9kDlJ!3^PhuM)#%Rx#{sDc9k(D>VV zGn!e>3VYjI;b+fIhcgeQ!`>T`{+E4VM!W$zyeu8^c1y4PY}}0w&Y+qP0H9~3r>0#e znNclNIqcvqGL}hBBRI_?e{xurvSw004XoZDyJx T1COH_00000NkvXXu0mjfse6&T literal 8625 zcmX9^1yCGavt`lX!2$$_4ess^i+;!^Xo3WHx3G9{cMB5S-E|4JxCa&w?(PyE`Cm=d z%v5#H>D#CKPTi{0;p+c^urc0aARr)MD=NrpA|L<~U*FB&puXO5cp-kT57e*9AX$W$ ze^+j2@vE5{K~Yxfqvwy~EUzD*`jh>;+p5XherC$+q5$)312LFeKqPLQ10^PeL=<@H z4FA#7PqloQigyZE&V&CTiN+)Vy>t4!@org?tLi8$u#TmD%v{Ey+F^{Um@ISW+S~24 z{PD!5BzEl?uyXq;%Oh3Tt!z9GhPOGeKP?-W-8CVlGzDf6Mlice`ZGnT>Ya_hJ{I1)Z0y`xE-!n&>0%{SiMDttk&4kS8q@tZDlx1EaE3JwmnXYiIR>`g(mW z2$w&asv0tq3jO0~I!J5e-{Vz`R4vaMnUBsKAwL*1mn9mz36*#^tG>>et54`7C(Bmz zUZ*O_VC!-9DG8MUo zFaEbBgP@u7)iLDNQAKNb>!952FiYflL@E}AuP;TN4N!RvQgV8^ISwxc7nilQY&!|w z0Df=}nMgAw#?!gw6%^R>mYge1%`~aAp;zi6KNJm8ad>js>ypQGk{7F7q(O&Gj}{ie zNgJ`bD)t9mef4p7Qzo&cjZT;wVLu!IFNjgd73Fm`6_~p5uFp6t2(Oq^ws|!M)TdQ{wWUBt=Sa-2Qhi6YG#~CB##%iJ$1V7C=!F_dp@YMS|!abs9Y8;SqkMixv2uHct)Jz9@8;|8O-qu+)r9jh- z$9`2corB^!VR$cIn0fNhcD_x_tWx*)JYXu~@h3}P(UZExoPM^D-an4As!C?g{X|4x z8m1@m-AMH|V_0#Xya&H%@zD<6&i!!|bRMQ0HhuCup8J4VWGTpb5}en$bq1OJUTfmU z5cK%!K+cvR#=ox3QQn2x&q<0w!LRO!FqE-|klN1{`7c0^eag^6tqAUH#L@=7dA0n$ z@?i9;7i9UXAUO_*@W?)WwzOTUIb8AG;YV!;^T(UQS$dYqwiwyGu#FA&q?D^)ml$;W zF1zDyACGiYxm%Hr85DsLmip6)2~B9smH3-@RCj{={(Wk$QkswR)TK|_h&cd}uZb02 z5dl4tAS1s5WGOyP10xiCKXsx^*Vba>JtT7E2GB77EbY7rkuz0yjB<;)3RSqoi?H$kq)kY9J#WNV$V%UwqxfQkPpb&$HtETG;$HDJ)6 z1N>u#LU1;B!r924n#rS>H!BFcD_N^DlQ3Exrsc}=PmDI3{d%DSD`@xxh7&#ob$i!5)A5}E~-E6}DM(?C)| zut(xvN&5gBWmOu+i)6;a7y`KSaMQdQkzUt^f)#$YlrW)Ip;j?0d#oWZ1D;4*bFjCB z5q%}ri=nY^BL%U<&uA}1$D61L!mh0njBaJuS04Os0lu+}@wpWMduc-DdPaXP6W4ep ztx7ZsQ{FL5NOuaZ#Tu+wnUa>QIDo$&&2hM9$n`*wceAyzamnj2s}@qblRWu6$Ac?K zRrAHQoZ<}a$o5W~nqxNq`XyE~JqqzJnOAtd8Rpq3G>Lb2tDaj3>kiW$OfrU2C0Wr@ zB1o#S!yhQVOFPk*@bI#$l+I|xdPa668c7{AV;EpFB>w!Lx|uV7-W#R*BM)ZhFPiMZ zk)@xt@4rMF7Fp@~Stp8kUXQulxenzF{eHBy*cLYMI(GeC;Z0|kGsmazc|V88Plyf^ zhlWa;W1Ej7Y<+0h7Sci#4P-2CASI}S$|S*Lk2*UZX_Q4hbgVg2pGeaC7srD=fOSt7 zE_tPO512;6H+5*dFtUL<9A)oy6w?dSLtW(7)l?dcbJNIU^9^!SIH$fGVx8%|o{Qbk z`uZVWQxHp@c!S~KRkM7p{c{v+^@PCe+^6#$ed1cL%fKX`2e-x!@n;CXgRW7fS|7xh z2u?VW;y`!!15MwuoJpGw$(Qg6aAz!Q_k!QTk=JAg_CNacob9L#De`&3s9gv=!Y=HU zsVEVtmH5MmR0J5*u@@lfjQ0uQp*zZFITQX$Bd_Xb8koX`W`YodmM!x`+&%yAz@c%i zO{o9iGD>s3`O4wDs<9K`D|LriQ@}(b?<*mP9tzv#tL$s>c=+T@7)VYh24GO;z`|T5 z&EIe5%ymYUvSd5lxV5uA79wpLYi%3zK!z?F375AQCOo5_GFametKeq~F1nHdqUS3q}cQ$@TmVJM8G_XowhSnjSr948{f9tyx~^g*bD%!uXPfPcQlyqbRV80P%d3)|6l zlZsHiK3~GJyuT`i-7i7+(*9?e^-NU`)3%dBwFbG%Rc8aU$}UY>x~_|T&-{>Wzsg8n zKknpioU)bnBH1K_^RNx}D9hhQMV-cCY-6g*TQR8q<1=83c}&H|6!qE8d2@>JdnPPP zZaV3dZp1(!`0nV9<+;?j9CVFyX|gF=`i4#$;k0kkkKYrz0+l#^2xzL;>W)N-^z9Wn zHEhhJ1xzkl>|Zc=Z8y%8R#v`Q@x9;is`&C^-t^VH@7Ctd=q4JWLg(7=^h5U@i3`Xzv@juem4R+uSExR7gZ{s8_ z*^gMoQwAx!`)x9IX0Ycn2#(86aZZUX{DG@}cLl#Kws2&oO}Mx)H&-=RCxOq#(CmJ= zbTq@e-is>yt6t;qLF=9NsDR-kfxSFDjTsmNoS#D!pIiQ6kQ37P`A0BTAQc(J zoxzc1W50)9_s9o30RsT0QcWu>gT46+kRjJzk%-lcS~=A`djxv@8`QPfq@yA@VR!h?>vSRSR7N=J-n{X zTw-(uOl7L(P~ED)x$qp8*Ycr%mv^Jl73n5F&h8BS%kHj9^5jpZf+UI*wz0^NYokvUQlS!5@RAp@jjm3- z@OD9jR(1>8Q#Eyq04``w4e`Q4(!s;ci{t_NC%iff53)Kmo8j9yo02&*Vmog@|7{&1 zp}&Oz$>=;0OVqg7a}x3X;`UO&Vs*tL6g-hJn09?Ema-YL9IH8|zoFm6zR|e9tEo#g zASKClRU$$aP2c_bk(pkN~YBCq(2>@cq~(dRCjF7eww>vi&;`(WDnth2g@kM z$qkeOTuaq{*Das4)IS~EruX*@$S&P~Ma=OIilid3ZKXAt(vi#E5waN;8YKvIj+pjL zM@*Xet-6Rc_1nc9A2a#Wi%AZa&jn*d9()N67Wr>k$Y55zIq1oE=VyR<&fHT!e=V!W zJtyd!7)n>0xFXd$OhY+NxeM|H(6DU0|EPO4=(C3n_YX2uaJdCpIuSa|eEsuQ|2^QV zvDxC@1ENm$24^N7I!mTi{vU-x1xeO!>IhSI{Jz^a=>)V7unV{mbr^>?R{|e3g&B;; zSc%Ay#*xB20@+A>!&g{HQbOw93VL}ecadkN38bDliViCzGQGcZWj!^f^Ew=diXKV{ zeT7$HPY%W-WXpTh5j|>5|Ng9-((tUcelyZMD)8bCT8`2jE?IeA!Ywd79f@8-wOlGf z3qoBrV)cFz*Pbp~Sg7X$Qx+kvCm?KeMHSegCyF{?aFduCbYq2-vL16O|I`TGx;%&+ z{c$OVWEa;G)e4g}`T`a2l17D6htpRBJ3oA*+&NeGeZE&i+v^T^zeOrgYY@bZP>-&U z^b*V%ntKWr3A;6#F^wGiS#xUstRKjcW%tXrwLTySAj(_V#G07BGKL6JR{mCN2=|8` zYinmR-ShW<*b6`A1yMo_AG=G;pVjorD-9*F2~R(rfNu zsHeNS4e=3|NIxFw;jI#WfjU2nBK95^l-)Mzexe$ug|&Wal<-GuOJ*A>@XKMrt{~`- zlfu5G*LmdQ(~s)X4Sgn~zuB=%Z9LSc0)HI{Sebak>NoftE#|qD;AL>=tPx1>JHn^?LJYX3cmKN(Qffmc+nR zvIH+j8;DJ8j?NfZNUl+Z*o&m|vLNc{sNJzMoSV}Nz^;*vgwL;bW?3t{mavQ7CfO;p^DfF2|V zg>!xIHaR7S21yy!OiQX(aN*BIwFM@kWz>@^ewiLv(|#` ze_t-&aulH}h$TW~jhkMOZcf+8LUxmBSKY}npO$AEvO}K_B~~;=iuTXT?}}=Y*jAyo zpJ*(j)Lqh;gLd8|mG#YJ=qUrv;;9C{+jdhM7pdTfZ|rr;T)Or`g4i?bTE~oeO03!7 zpfdq;PW-+WeBJ5^cJ$A@u26{A3DStqMDOz0Ba~2rCt5c=@9y{KBOQ3rnz8teGFqk{ zeQA{siLGvFLsgbznmXFKNit7AWO+VQ)KkJzB5#WrU%ocBQ6GBtU;;Rn&CL; zU!T$(&6M(iVMOK}b4}~@-UC6d1$v2m$tw-9)WBMk<22vUBCT|6m8FK{XOW1z8uRnX z*?}s$3z<~ewJxGBUq#EKtWJ$0_ z;=oZkHMG$z{x`zslEH~OP;K~Wv(Jc?2IIHOBK zV-`NNv$!ipxi@^*D634qZ!$w)+_t`e@?d*q3Lw4s9gk=J(c(213 znj>DAE}7&jI7O?GZfK{-I6MCqaqkdO>S_0%T-rcLd|6amZh~}hxE@fEl(8m6Mzlh& zvFNfR95dsk#a{whiGIX>EXLfdbdHy6{q^;IxG$x<#o#V!_AOIsCBw{a726H!3#zTy zh%%=KR~J+>hnj$PCS0efC!}`W>Z2L^yAoUSqAeGy6wYgHs(=-E@>p72&5@*L-xG_b z&Vd?oefw)F*QTikMmYTBAj#mo82|zyhsGJP{j@V4>4hJd&eT2R> zrKjNa@rs+}LP6b4L#+(1{T)azO^)`IyIDFs!~5YT*~y4}2kxPc#LvrA|?S(EHq#UvA#di;~O zPBda`VVKa+@$F9iDf4JuX~s_KLBtW=a^$Rz&^yIHtB$!bN-gm1 z5@H|4(=7~2Sdd2zlQd6&UH=-uR!Z zz%L`faM4*c)TiYhs0mDS#1^5ICzD#yu<+Fp9x5_rCb=tp`FXUFo(3EolG? z9`T=(FwBGGH18GGfurCrVM!qVpM))4e=U`S#tbLO;;-(d%-1RdsAj3$V4WuAA;kO1_D%c;?I*f|~aEOu0_ls34YB8tFAo zy>o-9@WCqTiSq>QIA8b2ZM+TH2bTC#H#OJp++!}> z^~eOY_|858Y2U85mq|DKB|ZOnt?QgmeghqqYd2|!Z=`TBlz;XYg=kM-bV%6Kbdin% zdoKe$N6mU2IJF%$&hdJ_7_BjQbJVw#%B0LW>)q0!boVW93p<=Af#ja(Dvsj??S)*5 zRpZPu%kwM+rFUq1LRxq1OnDZ*tA-Kl&)z9CZJ7z}u@Kq3tuE!m#L+@f!#ocvxxTb;6BK3 z(P!lXF({(x%rxpJg(|k0f>5|KMb8LHH|T1cz8gH~15pnP9F^V0OVP26*AqposN z_F=#$yrvft{E5WKLe;nBx2!jLvhCUOeiY4baab%(-Q7H7kNprKXzh*fQfO9nG{$ZD z5~js%t=6d$+r^?M-iC&ixbTdXo?3Jj-lWi;Y!#8+N!=5jErl)GkG@c!(`Y17*pEKL zWUZ?;fC$;U<#y*23#x1cG8-u~10HWeg35nz6ixyO78%rWhC zmih0)Pd$@L?39fu@{AmMeX&o0XEuG06F01WA2x{04%UsNd#ATJ*qYMA1>$zOBA)B` z!fdW4!W?4hxkVxQ2<)JdueA8A0>MY9&@lyr>eIK!ww2`RrC*}FXNDB!m8I^dX-vA@R@>DE0t= zfOq@LPun~G!pw2E2>NEqsS@;dqyyzXRm(eDsZuwO<4jNo?VyAmJ}9P{Y5zy7btV&5 zxOf%pMOaVn#1i#Eb;1Qg&?xa9z6nbLHUt3cc5i^(rAyX|^l^72iEYxx6fEyKedZ;Q z)HerhPA_A%=JD+g5Ls*){bCO?icFTWUw3JKMS%wn5JSGso*`0O#nbq2g11USYiHof zb2uV!ZcyFS@xZ@>gipcx{8JdBXXcSba+78B*0M19UL@>u2qd*SUdo%G4($x!Znyy1 zre62l`bPfUl-)8Ga+?M7dBO@u3LjZ%VWN0je!^K$;2@HVeF1R*Z9S8~Ur(2!He|T9 zcd@e8`>t|%t7Oc-?NL+c68&%EEL?M>0H2+AhC^JjV#1~tsrb*ggVtj7aYB3l)P!&K zOtq0Gf$68}AsZu|Dwz60uL4EnPXx(cVvH3Ad*d4bB_P=^Q|Q$@{sRgE<+tG9-X;g@ z9bavXZ78Gk-@Jl^A=aw!vN&%_cc12Ic&K?+&3DyE9XSf#Nc9CNTj^K1#>}$9rMbZ< zBCpPtwX+UT?~z9PsnV;Saq}LP5J2Xrw6l0tDp5S}Yb2q2`8IF!gJBww+e-tkt znFm{@6}oN>n__3|GsZ|+lWlox)(9KXl#pWh$=l`G@61{u@eqG<5+slD38Pom`}WS! ztIy{o?MnVd88ColIMpSrAw)R)ws6*1l8Q~vPlW|hPu32h6X))84}RqpgKw5WUH$QR zKSu{=pDxwE`h~1i1Y&|9&S|^em~KdufRtSj5UDS6Cg z{HIhp{$7|-F8p_!dVT~EA>T}&`=ncLQ?6^)?^XB0CycWuD?^7*dv@z~NPa>85&G(C zYjqkQ%m(n``53-dZQ&4Z6289ymiSWm)1si0zC(tgbJ4-6z~@!}3Z=6+(zyMSPY+rt zy?9Q{KY1$ECDC zE=!=R&VN;mm(gS<@c;E|QD2fHW>R=xvlN2?mr8u4(BU87@BUldyNvwLz!jM7i)%^o z^9?w{l4sz9g6pd-MY%o&9lF(wHvUP^kZM~?^p03-Kcbmk$Sa_{@Lw0R5$1R3*_#W=e!fy`I|p!+%ZFXqLxm1yXg5zZuGnEfLGd%z$Es*ELlfSv&rGn&yl=Q5n4b=r-~30BJr}O5R(UCgwsLUP4Pob#=X$(i=(QT!LA`xp>Jxk(+75w|#xDTus%X3l3YmO$}k% z&pF!gZuH5N1IM}l@x-do4(Mi3QuFnm^yJM)*!9_d%^!!lh8wSFl$;kn|BXbCBb+;w z*OE@~bzDI2-z4N4K?!YUO#IgedL&xzMI3@&<3q#R zw*VR2hEy9!p@>?R*KASCKlGTC2sr_UN_JtVzbJb9A^|c-jbuzVd=G8Kt3uYA%Ypy& zRpo)Ui6dA*q+aQB*~F!~#Oz+8ZL>qT8OC3A?a7DQQXW*TKDMaWXbrBk*ie$|V>sx} zEow$73;QafjsxlU&$NTNQl`W;vL{N$=F5}Us3|aA-Zj{!1x1x;7uo^uI!P{YgWbod zNwcGjcjn<`v&1h7Bm@GyW)|kJBi$Q{n`1D^1h_s$$u=FPh$O8! z&o;yyJMjaXk1G$-)t1TN_y42uU$&ULFMxs0IXs8*RoyBWL3PsflDaJc43Qbw)&~|e0QD%I7T11D>m_F25!{KXo5c*h&F1m5z zmmV;&Q%7qI7GHBxQB|~m@L0n}wf7VbnE5jk_O}kwVhz(#H5zHL+7PzaHVc1i9*34T zYdu!8vZ*8ow()`1YkD{FT9fI@G^g5D3(K^ENMw3~cTMbC=l0-P{((4tirw;u`u0N(mUo-|w@HG*US82fbvQ!O7h1=M%%;hI{ydV7E-50(`=zy( zlLD_q85}ccx*X+jlx^uFjpr=ps6XqCq{ziRL2HpgPw({;=duX;K#vS;OP3-nvWWCX z7&)i+Q=%iXu;M0j{>Gb2FK5nc5^s8Vyi@oB1^5PB zmeG1Z0rFOZo=jYtlSu9}?2SVSGnY4_2-nb=Vs$-|2XMQi73#ZJ<%e+n43)c#AjIkXXgxZC52%i8X`WV6@USgzW-5YHS%sYU){V4epe{D?25si zgu_YSus&y6QxA@Hn4@l5OAj;FX?OANVa^)$3*?g}GNy0yM>!IH{@r(%Zy|5H6a6MK zpbG?0B18IrE*V`QfYCRL_w;7>a;kUrsgDA2)T7}FC=hfPS*3@p!|q4?eX*iLIv}ps z^i>MHKmc)F`6cT#0*7)C*#LVf_~g6k=EB1mC?~_*onv`h4?zq<3qd@kbJ}_c(#!#* z^$^4`G+jZqo*c^&-l{Kv84K-Mi|k6>K%BZCT#r3}r9ww{K{ca)m;wyGv+Cbd&ARlg zm+Ys#hN9{IkTCbuLLA{=c2;Z(0SL0np7pzo#i4s#u2g6&1U$i4-G2<5vABfqoeUK@ zWC7;hI_sVSGV5^e-F2@m9!5j3K%6NAVO`7`DlUcq=H5C8pR~R@6yzt}$P$9EF2!b8 zE(9ch!z_Kaw;7E~a^!V}B?KW{iFI-af-o#+4?zfq<&-4^`NvX{BWYTO=TE7tFFEwY8=sXMqVLvQ| z$$bA~{#aJ5S4ZB=w+~s>jFc+Yddxt6wjONEgy&FpE=wEhy!Xx;J<18j`hRDO+}ZFe zEKz&da|>ww4I4%o(fJ!pfU#RbLRTyx+W1E#S#k^R85hR{;P0@+FXEFc==?Kodqkpt zC)o9~&GNxfY+wIr1)a6_5*xQwwhTF2G9oj&qZ6tU0SOnG3THbOMdWhy+03J5GH!qz zYvA}S(5eUb{2LB-yJ|(^LGgV4kut&e=!8n#s%!Uu1y_FNc4T0)Epk`5vA`z?;Zxih z+S>|}h{Q3M|7#zfVr~;>>#-9=J~+33q$I{9;-ohTR-{?DE`j(7Liv(4B08l_+R;Gq za0i9;%b+KSd`E%xn#k#-8-)A{%cWB%NUGk`UO~`F0umUju-Pf1*|X6U8StBQ=^L#% zxlELh?IMw!jSu~V{}xN6S+va3tSs5wLd$Un7#gi!y3ZxPW-TiLv20IaG6Uj&(uPm2 z1*=#*AA&N=u>H8rbalgKR3vAEogL+Q6S;b1OhOwI#vG#I6fQ(9@botYLk&83GRgP3 z#P1CU)RB`fg+l|n-ANBTYr<1uZU|Ja=tUmA2K^M_TOrXvn#fc_vG6r(g0zrIVey4% zBG@$+&)W&lL}u{mAD$MkHJr+SSUUd5+=OQ#r=5c18_q<^CkX17(leT3Rc{KAPcY5u ziw!s6|4#*0V|5CY15&fTpnRbtps9dt{dEIr6fC<6#MUz`z1k^Y-VP`(@?F2ES8ocM z-|XEBda5uG1>h41N#v1?46y&D-o9?Fnkq&EROjD-UpY)p0<~2$e$JhLwphDGc7UyB z+&!JbALl}SQ4>Cv$qKs zZ-G}dS{#&J9oH6k5-QXY!Q-ca*F!kssg4K^&!gPc$68}?%Vxj|!W5Uou zH!ifnI?y;G6#dk4emxy=5I<=;(k!*%C8_neK*#Fk@{n4ODCpFFu{@;KBMhCHIG=Gx zXDWOXo+74Y=0ip#!cfexXdW^m@d3%7NZ(PMMU)K4!IV7@8Ig#BXt_j&j(%k!4lhFD z_Sv3aMHsvhnl7n-Gd;S61|8~H(6y2eN#ny%{lOvm$xQg&D~ zbW^77RfLx#;S7QJUahBjtQ7iH!J-)WJ_T%`IfBB=nt6$g0-##Hi^A+gtgKfTRSF+; z&*^%+QAQHEprBc_!x!7%`z0w?ku-bU>}yltpu7Kj=;iExyWqw6l=ZyeWZ}jSHWsf$ zRcSYB&#Cn7pRJ_LPXvz>4X5%rC}g*F%!SljlsM6dgW0<+BLnh-@inEI8_D-WcCA-P&!0ePE_HH(*%SlFs%bYC@ zeKXqPRasw@x+<;1EM>+&_v3u2by<4rFqfz}Nr5~Baf%w5h?Y~7$V5z>U_vf}Qy63- zN=`61Y>9Mwgg7zhDV;R>rf9z1 z4!MY8FZ7_h($S$nwqZiSeFDc_S3#;JEOhBT0}>|RFy6ZtMHV> zzxLoj000000LcHf5mZ%GRaI40RaI40RaI3cRaI40RaI40RaI40RaI40RRyG(D0ABy R`WOHJ002ovPDHLkV1nTfYD544 delta 3240 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 aKlKDDv{C;e+@b6M0000fO0{ySNQSVa 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 literal 20552 zcmdpdWm8^xuI`RhQIf$xB|(LQgTs)Ml~jX+LjeEp0epD3kb3KIz6&ZdSv5sC zI3IdAxbF}+xW{+X_d_^14|X`XV`Dftfebh}Lg$aTL2we|JK z$43Vz$GMrQUq2eIuCL$T-au58heyZXGs-3gy49_{y;5t$l=YoriojxmKt^F=0bMF3 zKTf-19$CR0+Lw;B)BEjOS2-xG_AfRm4u`e zu!$%rmcD7$z8N&XsZ_j$PrP;SzAc=+ZCt+XTt3$Re)H&m%UgUKJ9@i%e0zL(v+8_1 zzI&tP6lK!#6AtK1Y@270vnm_ik#I_pG;rbj>LZ^#=U+B5xPDpQ*y51Yr5je+J~q3v zws5iYTTt2f@xQD0RfL0gS5s1l6Wd?5{GVbfFCz&TfkZC*t{}V1DM}&lAYkDVlYA_h zyo7^8#PHG3aaS|(qH=b1vb3?cpmO(iwxF`Iu@v~`;7nz1;%@RT;o!clrfSMH(lMa_ zc8d~0uts>`jlpCi+YTiZ=~kc5f4p?-a?G|2cIcrCtqw`w6E0R2<0N|*`_S#Yz+7!BP~RsE~7Y@PI6)xwgo zVdEU#=Y8cWvECGwUd<1+DolS|N%#42p`&NexKb4zjyNCov1S#?p_2?0E?N1e^>GY8{TXUjX#X=-O?gX_OV){0|;3QP0)zK0Q*to_ejJM$lOSJ z0qm!rW{C=#W%FN+S48#G0QYE3M?EVTnlr!46C`)6Ap!Q?P2xV#5Of~_ko&Ma`p93q zI_+jQz|L&G%oJ7s;>f06Wyu9jbz2#F+9mRp*q7Ju#{mm|nNipNtZ=iY(1^mVzaCN$ z!Vb8g&_EV3#!)(S6xu?G~(&W7E zBU|D{F~5~J{cl!eF4lcdeh7AY9u<@u`rPiUr7KfztS9pg(`_B&EI|mT&zje@vK^W? zezt^}^ZbTj0BuY5e2#0YrUabj1zokOGzVD_eybpjOChmpW1=DQC9DqqheK*H?c;tj zTOrZe!He`u!>K4KtynkCo_jO}RPe#ZSO*t_1e?2fml2Uo!yfSko;3&#LjVpkZn1^nF)f?1RR`PqnxC;#<$h8uE;=K?bZuYeYL~S75hmnc3?~(d{Qrc4ma%& zEZ%eW9XU+@*w~;UaTrY{|ww^9e#ZLMPZk<(&#f!Pz?<`m@{$2ZBw|tug zDvWrjp+y zsN~2n5hex@2gbdgGR-i~d;!Xy}7$|zF}Z@!%3Lgow}TZqv7k&aEma27&KIXTGnug#1? zJ2IhYoAlf??)TWSFzw0;=Pv=<2^!+B;wjD=h^e05ZW09i>^`Ef?N}Hd ztrkHKj-oEQ!H91uvSp@I-3qw2AK$dXG`0;b>xdsE+!R3gXM+Lh|&WKNp9m9)FIBYaLj z_|k4~IW%uSUTg=Ush3H9-B-m;7psnsjjx3V{juJn{A5Be6 zzN$?lo?>&)C8(WC8AZ87l-gAKrO1w3$|yt@fJh)ap7w+m*imViJ8lj9YNp|SPN%~< zF>ymI%1|#g0IdM(A0$HEm=S;|`tzn00(t>o)w$(Gx@wIT+#RL-h#JHOXA?l~gz6ea zuL|k>p|bVdM@}>?jeZ%rmATlWypnt9I@C6eKzPPNF2}7(mA|jVDa(q%A2zjP3#eoT z5N9Gk!zA>movp?qB&d6ff>qJs*-O+C%yk>0%jAl2jynECJ*y)3=8tw7Z-oLxoPr*F zL_SXQ83fDvW#kcC5G*1UswD~~Cwg-UKoFAU|0-xcspVxQBfmo!Yz$PPl< z3^^wa52AkIKfeJWXavvakRtMsTwPslswRrY2ytiCS$arlqSD-Z;{<#(1#99FTdGN} zJt#CZVvv|AoURDaec^3O^YPQ&%Sjtz4!%}f?>*?eU^VFW+Z($pU`l5*D5Qu^*lZ=`UqHGR>ku3*N41Ww~#~(oIPvz#Rw8=O_D!l zpJq4hq;g1d#rXwMqGr3>mkr?#7p?{q62cD>Dh%x5M3)e*@5K>fB6vuo4q`~CNw6_a zCnO`%EI>&2-%F9C41dZ|*?#KRGulW&CQYf~zdexFR*k9sN`WusAv^i;B^7U^NM#lQ zrg=QB$0zP!Y`x5wK+{{-Xjtj*)y^l1F1=|)qWG2DD34BbDu|Oy7CvRaxLvlmL|^nb z{hRIBSm7Y>A#?m-5M7n6H2w7h+?RoP#hKWXrP>%sp)}8jmgCpJyuZ0s$(A&k0r!{F zf!%)D91_uJ2gB$nTZ0qrJBPA@EA zhd>Fl3dFH>3Jd)1BKQGrSIpfTQCzjFSX|@xMO!WDxah{yL%1C7Y<7VtZt$xs@~aR_ zV)4YS`N0R!@!i3*IC$xeRp7(k**t7FG1a6z>O#H+x`X`2^(Vo(H=PS5t8 z)6*zu0M^QMW-HDlB6l)oGdP!4O-C$1>;33WHuHk3HP=TowS)OeY-xQIE_m*BxNAS+CPAMqaMrlN!0T6LMj+})CLzNQ0hO=Kc*@cysL4wIdyT$dbTa#`ilhqF7v=1e} zGpclh#T4aj*Q5{02Ef6R;0|Ov8mb6(Za+y4wj0exx&Q@wti!stfajG+uF`*vA&4dx zCMM8@$G!CMcnaZw=Ya)vZRNu2`^z1fcfI)CzSxHVYXv4Gxif!%_A3!vx9u=Sl1NxM zU{L%8LloEDTd@WpM1*---sEhAyD$JE)3Se8(PKw+a?H$saYeq^$gR%P9!PK z0PkzWdSbY&-a+Hr-%p)`%WQDTyH+ESW%~Z@XQOEMiROw++=`9inpD6fUTGQNe@!OD zl@qi|;}IB|D^@g&WBm*}p$sU7@c_v}O3t1z`DFNR-1khOcrb-EwKiT z%H(FDnQ5M&n%9^Q{|PU7qr>B#Pn@N;dksPifo9c4U}^F4YH9Ia3FQ2O=i}`Vv)1q| zhp+H2be3gKNZD{RD|{TElbge-IKcW~8DV}?;bsn@QdG}kI!PN{Sq&&H|Cb^efYK_X z0Gw%&?;o7MvF~$^pc)X$w9)nFw$U-Ymb}T7Z(~oPh9E)lq5Ea9@&{&pR{yNbR1(TGO<-=2zq8#QX z!gO6osYa->s5J0#P-SHm=H3e~&pp+)_!qnr>f^TNa=aj|jTxRTv*aXafjiQkgFitl56nyQ#Mn2c%+YYvW0XM!#dz z!!fToq|a6;qJzw*#PrOWSy~gf#pS%&zlNg6E3rVK`j9+CY&9~-EUc1YGy^YhPsc7# zm-&oS5>%lL5F4~#@idCnE8&)Bf>D2?^lz=blkM(I29v3FN|&ak1Wv%61;abI8Q~Jg`N4dNFT{P z#hT_h0ZU!|9h3QVGfSs)1k8x8N$1+PZTlUMJ-YlNj6xT~nKZdD(>?{DAe{P5h-T&S0H^D=$!xEubFM4#pzGVL!yfln_vFYdc z6nA*`w6o>)mz(`;8-1(on^RH{c2oo;E3CnH5k;5?>TDFZ81;OqqBTCy*+@~-Xbmx> zq&V%2|Erl$rv2o*>q1FMaUru@@)E*#Awua-{rF5jG7`N+DYALx?!M*wwh``?|NAa6 zUIde>SdwPIKVMTPt^a8GGZ8d#N?yj+!;H%meapugy;wDqN4}x9TBa)IIShhLt^9bn zzRmQf!|;Nfl7fPajH1Vq|J&W|jv#onOW8@344KiT27PbqB`>~V=|Xhf>?YFUa3TDc z;N}B{Dgc^ttsCm6p=kXw!0tIE0ySEXIQ`XL!^K9%Y4yiI*P(Tdtc4OZ3O*#VAM6YX z!Mc$9?JAjfI8Zi_sjN3c&{*AqIVr7&cB(7&btkyjia|MLS@2d z1UwsvyM%}@jbyiqd9#P`;h5}3$zF%#yk5GYry=V-FnIe(8@X4;|6;>x$@pgg?p+=s z8)p2uN6>)x#R1=i=&Dgr19#nKSoh(Y|3@fnxiBPQ?8fvX4$2@Abh3#L+(4b_|4TRZ zeZMzYGD1{}Tc~`R2<=!z{zG5sKD@ZVin#N&^G}+lpuH{gcl&wwcyl@YtIYp0s_@}f zIC5aK2Q6TqaBBO zsD7`2UmH4FN1+#8tR}vcEYtgFKe2@P?w?JV!DM&3MQC%$ykKlOVh#x(KCa@y*TQ`| z`W(m4$7YZ2qR8-%*B_r}t{9Xl-j)JiE&>yF*P>hu$$y%ytHObvuKr8Vu^i%IuB(PU zCF3&dLihuP0|>9pq1#8?RCrDh-sx`o`CKSd(Dx3JGMkWjLL@m&B8WR0Xjt3-(cS&} zfn08T({DLY3hwb>GT0_-yl<>0j!Y?Tb9PC`@-Q_t;pw+gPaCx@0o1G3X|?Uo!JY4E zbndjBZx`PaGk8WT;y}yaTruJU4c^{pC6`ZaG%=@HfI3p9qFbrP2~p;Yvz#>=9rWcz z*!a&wU<fk!_UQp_IiN3$mf5Jj=>{zVZ;R>ZwK&CjnPkRPxG2+ zv7f^eO3T6?WXh?cx0Q~=gyQ<#mBWJbVi4yazdrxfZ6R_vGa1(9A^_2s1Y8!^w5!v# zw8uOwy&XWS-!F_MYOH2sH8RsS)_C8}33yuh8biq0z^%Edc3yEhOBPaVG8ALgS!Po21YL z2BxDy);3k`$q^1)G3(C|SOfVXCqTHXfGtI82A5^*K7<Px?0Gx1oH zj2$8=Xf5)m3HIv3eg~Cg;ls1Kb?p1_;$h)b;Kii}zrWN74KLrt(L9cGn-akTf?=g@}hU{>r6{F^HXCt8jQ(!emyu6ojm>el_|a0+-EqO+x2U5 z2n^mVDFZVcW3miO$sti{1hbYHl41?{VX!O*L_IKbcHCjs_P!2<-N=iF;1Z*Y6FG=J zxc*o}-F7F0Wc<6nVsKDrlb*KbJKih2ee+5Afh3Lw3TLcZzs#&)c`T$^`_i>;20l|Z z{7(^>^auFoA0Yfkbq~65tHVk{JD`*Wf;ve=-=1~% z^h1e!=y0G9W7VEFfsAxA-N;Tf?j!WZGL*r9u1gy86%hfy@$Ub=;b8;+c$-+6i+l`- z2^nh+f$gbS$g1~8dYMh#n8O?}Xm4LTRJ0+6LT^^+;Mn78k(WS2->@MMQC{${{q@8> zJ%hkM&~+U3^;mEshi>nOnV@ho>%>ZUjx@=9FFhtX0)CAx+E0qWTSllh_Uqyn(2;eGZ+R{c$E&fiwx0@G%lwRGM zENagHatEk1GI`!iB%0pxLi=h}KVq-m0Uvi)$g!Z>j<$EBZa$Y<<&!jE@J7rsaudjH z_IEvY2ZdyW`B!XRz6tM%j(Ccp@=TKVv7MkNgeSa-U0t!PP`ejlZwt8BYkT49h9!18qL$G8<(p_;VXTT!dhI7_atO z2N8T#GSY`}&$>V9yqW9!oJ_T=m@HuRJ;&;0G#+M#lP1ISpDq7c7U|}_$gK1XQm^*` zlPGxV+irvZ=d(N-&sACnfDPwe0CQ#Qe}s|1$>Yp)t&FPE7r@b!u-I+WEsGNfC6ho` zx7woRZ5qRuMc#E9JaQh?t~Gq8#HQt{vVuisbaitGmJcye&kF&1t(gG845}Vd|2H(k z@i1%-LM@ggJ}!!KRo-<<0jgczysSz}sILg*)e0nlhX8r4BfVWs8+eqh`m!53-R(7d z_+&;15qZSz1A^zsXlPkaunLc(zCJXR|KpDIq5i7qFvNte+lvO7UsPWA3Jwt;5s8}+ zNW$o6lwxhCk2`h2qkFm)`Rrsl5O5IQ1qZ&Zi1mN#L-stsmAXej%EPAq)J1_BYE1Y+ zJAk>dA4-gUfGq(?JT+>WMtrD-r9{JAh@fwoaTTcW;P{`1Lw)=G+r7inw~JvRTY_CQ zmA+0Q929obJrw&_E^Ls~7==B@USP8hjnm8aSUfhQ8;ft0T96C`vDTBWn(r=(KnKf! zAg}s-rb7gFbd#O2bEN}okG=H!zCnuUY=$y4*XOx!#vbTkq?0&n3T&JkXU1lh%X!Ks zY}9EM5^Q}!8epMQNV7sphRv)aK)A=&n&X3&DuAOEVqk8`@dqP!#h2{#0duX!|Fzz! zhQPaX6CYXyj@E`yOF;2!AI&%b3sI`rPV6}!XA-iCE#M(|$k1s=*uSV_9uBaJp!f>_ ziBN}w1@(Y7bLl@9VB_@Xj>N?Enj4leG@AMLQ5G;Z6t>6}u#ayL)~DD=Y(`HE#*`?W zprZZ3*CYTSzo4Y->zE1&WF8~|SnaK-JP3)4xBaL<2XOwY=vLI31U2|gDVdkSpp%ZPV>V|$o0n2ZqqwJkA%7Ae~0 zzavO{L7eOR9z=z$Q_%I;!IlrrKqfv8s^0z2&zEM3-OoBkfFl#g)-{!hteNF%m;Be@ z)?Kz>?7-D5zryf31VGn|^S7UEltKg-r${0I>Rmw&jNY4GtDg2R#NcrsYnWNAgs8NT zE+TkPR;E;wCP(GNX+k0*v_JK419*6Q z5Ewrj0+gKV4IeZT@uaELG|G<6xgE(|8Id0^XERIk`3N!!-Jg5ojA4DMD`4H#Lh~Q& zlOO*EZm!#RA< zEk*=r_3eF4NTfe-aaC>4-ewt%YL|Sxo;(c;v^AtFI$>Xa90k-~u=x?dO!Qyfne)*w zm|@g5^9QPH3`wf4vxT}i(*X6g6 zxz(hG+}k=QK$y85TXPR!@lqJ*H_^avpmlbQlbHPMM1HNqtInRcJvPzub(9XB+=bU^ z1}CS#!eLok0pa~y6xy3gOa#!Et$?hpKJ7g0DC;?=L$ZA{Re*)rl#aWqzvB>GL}_Ve z@rLxF5oz|Ex{pik#toN7)L73?nu^8UDy{~S|ET0jfXKpb;=j7} zWKQTy^|$dV&Z}lXNCf_9V!0ll6x5heIZyrU?dkC1?e%5MA?Y@|y_PU@u7qN?XC1XE zHlfpc%qa}qS!WLsfdE~j;=*ktt@)d0%(`sKe=pz{>D`2Y++Di$vUqsj2|D%V^@jsd zFHb%vLaI%^>r6F|?xlC&eCEaaacTz5Y9ZKdWMk?&Sl{Xy(6DBPx$?C}5R7WI?QXaj z{KJ{=^DY&h{lYN1@|{+ZAqelN(zZN|Mw7{M{APnvfBNX{`SdZzcy^CZ0y-$wy@yt} zawgepTrLO}qPuYha73V`e|m|HxT;2kW(=aBFji`gxs{xrDkNI->VMX*Y(a#Z$>o0Y z-<5*h?xAf|_;`x8t3O0ak9Y>B$^S{li{YhG zLk5UhG7=J17^g>Vo8ZKutEMaL`?hIAQZvsvtj{NT$icbp9NlAjX3CpK83b+qJ|m9U z@1PWH?Q1z=!a)I*%B&MS8!%-Dg=o&<_PEnvLgDD~`x#$kCWEY*(HEK?3;oULb0_PQ zS+PJ~x{1hrwk;4Q;QM$P!b(WC$Sy_Z@Srzd`!GmgP(#!aH0tj5htgA0 z#wN*G8EZfrhvF%64TpX==5dF#VIENSCA}>y0 z3+(!O8QWGP+L^6=5<@5E??Z6sI34-TsC*5bDOY{vV3#Fk;*CEbS>P}eq>Kc>fN<#F>Heucrsq)0B=Dy0{tYEd-Q6L$vbD@8|(VbNK=Iw zus*;x0{-UetP6g-+7Izkx%~UmyWOp>hfbrRvW`15Tij~`M5T}*^JR25dud%NUeh~v zgb(?Y$#XVi&Aks*_gsXVsqsA*UtD_f^=!JvolB1Z_8#?Td*zG1z3hbdcWJ-gb!}`~ zE&C1{ZoN~YUesCnHt|0R#H^pK_!cR4g)Oxq=RvAeL|JUa#|1Ty;xP#}&3R$K6+yqZ z-X2O8#F>*N->2axU$#dTL~v3#P=?D25!5pYf+nzURKiwg8@-AHi&i}T@ZzDTnx(De zMs6v^%gjK29*4)716pQ-5)zi42W@oX?~H$9G%loCU}fLr`tk9R*t%%A(_~wZSs~h{ zv@p`ROZ#*HtI>EYTF#n}`N6XDFM~E6TGrKw*yA+cvhUi`(u_QP9oUJ2tGgE&P;T@} z)X2XJ;&ck02xEh=pnh;r50~c?qQ(5t4U9fg_1s!%c9nek_=V~|c6U~gY^(rz4sX*! zzzgNTELMIz7KqNdla0B&1zT?m0Cfu17v@d5oJOr-8O>u@%bW6w-VYg+%1Yw-OsuGk zhrtPOp;IU%=W4K8s&fYk;c7$tg zF+X>I_!xZ2P3}LL$yH+7Fgu6NV@sEuk*|N(^L#mHpMJ)c=xDD*ZpQ2YqD2O()p+E7 z2g-PWRJC-?hm3TJjZ$ySnZ`{Cl}W0V`yIMVR#uEI4w~)RrsvBoJ^c3<*F__`f2$?8 zi`<=L%%HqT0&QJF6W%-@M`N-dgjT|+ye`e51jyoy=`T0q=|<6(6;(`j6WW{|dF|JG zSe5cwi32zMl~W`;F(owEIQNpWjQ47sIEwM@^|DeznffV)fmBYOSLQ)Y=J@>?oyrM6 z^f^28LY?Nvn>zA3-@XVPk^oDki=YN0xfgI|E$KN>1Z) z>}zD#g>>1g>dK`fNz$J9jTxu-62(^MCua@93q;SSZ&g)-TNcoEm{9lupFj{t*9ag= zn0x6s|1ED<$@}JVlCDT+K%*)q<&T1;=Qn2QMzIp(Fr+P@U!}I!+!GKR1&n1{mXdLJE|w>LHOzmH z3grh7qM-t@l?Y{Y!YNhpKM0URBJ78WXrqS1Ay(w#YHxQP)beH(EIQH~vI>428QC8nlv^%{(6JV9QqH*y2fA2pnuRS=SYP5&s%jl}%M7LGJ6b5jj&Pfph1=M6)Y>(*oxfqjSa@bqWLe6@X@vuV zsezyWMgdJ^>C*(>>}|~aZA{lDThn%b?kH*V(emHo6jFg{bGlyy?M%9VcS)jSNg)@% zC!mZj0#R_>`AFUNpqq%AoC2f!!^^~1*R<~ul}88XtQY)^rJ9pctYjB%FM_QpPC880 zcwHy|7f1pgVLyKk;DZ}Ue@YK%@i;2$1O-sxec_~4W9p6D4&SLkZU+!cgT5zhQ_X9& zua1imk1-)qx9H^jRz0l2Uy1#$rEN~fN`gwQ!5gFB^Y*$!`EoS=^>=D`-tnHU2d4>e zp=j%@d#-Wj4>3ieDBpIt1JJc1-8#?-F8aKx-dtje_kVEeK_r-W@-p@D6IfWb7;s)g9$U8g@$ z;ZxIktV-%f@v(mK9cw$>%d0Y~JEPNV`v%Hi0n5n@@qrw{ERCg8R0I0|IiS`0X72_I z^(C;1uIcEP>`4jJ^If;;ZvS`U)T7^#J&)u6$%6;1g;#U?&x93wH}dH{`%F_9-t#<* zp!@bXn09v%jzuZr^PJKBn#lBTD7=SxS>O6aJH{wiEtdB}OLjiyS&|T~#_{yCo(V1$ zwVdv*YTQ=6j4q!mCOD;#&FB}2?pw?p-5lc(G1P}nTcZNY_uqUSJHxI^8vy~H6dk8@ zZJ#?3@ECX5#lCQKyG$h~bhsJ)bqD3zR7Q|(lPx3C`JL=Qw=kYl{=zkpxw@=bre z8YYT4w?gm2)78qUo3h}x!e}XEu2*B$(8x~LvHVSVv`b??m|Cmv6fEkKPk)Tdn8c_M zY5KjODtMc^`4LG2lnpk_NuzG$-26pM#>QfJ9;Ncb*o;8Wf@)D3iH1Y`cIL6%EL*|cH-^;g?sy$m@JV%@$woPFh z>wr+AN7r%gm=(2(@_stj!OX&nBSWB?b=-92H4|GI!wk1Jsgc3^BJ9sy3pck`R5FN! zJs;_?m=R@e`ha$?EQ|u^9y%&deEw@ql!|+39}5H5cjQc4>+L(NUmril6-F^pEH2g6 zJEDKgiq`hQ8OVZm4n!X%G2%kF)myV3vT8?=T%zp!YG>)I{DGI2(N#C#|4n(lzOkXn_$`FN=?4X~jJruN^|GTISyUxFfGb z*IQaOR6H(wZ#Qd=?gqu#F)(JFIDAiB)wr(r)U+6QW$Qm1hi>N||0fk}b0H>NCLPhE z5@BmsL{sIn-8-}z*n!A%ywI+TGl|#KM6W=5+bp>Vg6bm*w1@@XBRohEgay``(aLh4 z`c-!o{PT!Jd*_0n2{kRL^xj+lj1H`E4C|IEEmnhJO`3Y>^Alg$B(9PESZ9c8NS!PZ zP9!8@B3sI7*w8jF8&ZkrOuN}YexQebjSxT`Eu=!8Hs>7p2PCw#WSVDO7}r%Ce}=6C z{oCJ|(BBR>esN4ZemOD$1VrkcdCEgaY041&B?8zO_#78W3$2j$sWly1HC(11xNS=c z4Nvzc0-iv~p%R)V0oPlt?Wp0UHqKZ)F1@t@Yk@`7ZSg4h3t=KW4WKI0Fs;>w>^Xb(5F@j`@ra1vC?Hrop`K9 z(dr}K;c`jUiR3p%IW3%)CyzJ+G$|_XOA0%-n8n4VwzjsVH-ewg)Y{V@9tVr~qLMuZ z-Ki}kgq5sF)GFc{M^4uoOKIhI1KX-|42r%N6LX$=|6nfoNQ>_5-|=Yw1vRc0g_GOC zA4NHso08mDq8fc?WOJ4W#$;c9Jt&T!nqp)AvBTrHZ$*2?hXRH^+prasQ&y0Hp^r8n%;px{S z=Q<=H-EwM*VDwF)GZcE<(9<4Vd@X_8LU7%lETfe00Rdk?T2i^^URPa0t@@HiU<6>& zV2Twv;L=MB2j%66W3vZJSHCYCwPwX1~lOGRp>wP zPno%x;HoKW6@xt0majEg9NY-gx+0X~30pCR!%}O9VJiA4-EA19Nz?R$TR4hJc5^Q1 zp_4#%^TYN=??o&bU~eP~^M*o%3X^$}9*{3r5YjxF_jW`I1#r1HsAkTz!~_g2bAJt_Kj;odmwyV8Oi3NN6Pqf)!MyoJ3v=L>6;+-nw$4VvSqY(AzSj$LA zQiEFX{gN9B{;o2S-yf*4f9ui_ii6s1@)Q!!T1|0dBCruq9qv;P3?B!l#;`nYHUS$| zq6gwz2>#18Ab&>gKPZ;b4lDe+GWapFVxcL9vk=f>6KkxaX+Bu{vK&4=57;7*rE2-L zpm|kv-z&S*1Gcq(f1P;UPKJntTv96?T#OtndyaLsQVt^?Vy8w+9q3<2Cx+g_r3-a# z0`hr=4@WtUi`I3!JNc`ReUPUj1+tu|JC67yFrc2LRnY>QbwwZpcJo_eres8nZd z4hGGd$_LrUy=N2$8B3FUpHn>rPV=G*#pXg5g}hG}%2=|_$AF_}A-LF!4Sisc4!dbY zgA250pV~rtu|S@{M2DJ;cznckja8cK#+ui@@aB8k98yDet-_qvl5fkN#_L!T5LMAy z@jxZ&*1~J@6Ph6u|#+23S&XNVS)uL$ziu}X*wd47<2D80VMxXE`^LEoj*cKDh5>T+YvPuuLnCzXqh?I`cFam1|C*MeAYdf+#==krWO5eh z21jd;$nv1_F9!2#<>sKz0-!4$K|P?Z#a7%jEWj;+ z@4#*cAF_^*!(`KC)3ubu|9Wzl>T76`ivLBPk08v^06^ke} zi=Iz$;kjaDE^{>HP{JM_|Fe*xj_jL7?g7(!p_V%cM}bh`*y?U1RIO4Aza>9fXB|Jb z1bo$P`AVA1(;5 z7iZ(kMGIK_3PKdz8Mp!}svBGkr>5S(KcSZ~xHCvpQF=+|W@J(JeZ(fLTvpY|uEIo? zocko8xGBGRw>?%_3dOjURaQQX#Go^&3Ygh&K@OTY2lh4}e#KtjKW1l^oU6#uiO~|Z zEKehDmTWR32Nrd4{3@Ts{K6(c?bOQWt78_vSiZC6X|3&2hwuj#go9e*ZpuLdy-1dk z2tk%$;B)E#@|O+gtc$Z;ymHz(E)c&Lzmx?{0#oq2>Z52N|9os22#ScmIEHO`+L$CD z`y4-%g-Ytz{?g)?wl#)$;)N0uZXdX69X6EyRHPIuk1wt+BpnYimo0l`w*t9JZmc^J z5Pc!#rlXM_AxHXdhusdgzIv9Ndszsp%mQIRV3DGFhVF}*QY`#vkhKrt;O5@rQZKUD z?!0*3u6XEfp8ZyeecNTN|q=A!Zw?@gaQ!(ixy%DN=7=g3@Aik zWt~i@=x&yS6l7St2&sg%ThDO;=%z=vlz#R$KF+O+PzmriOmkySVDW%YRm`*V4PuY< zndh^iyS=b2K(Baj?z$3NoRVkFTx^$!HV#cO;%((+(!$&z_~294IU3Ywkv$K?gv1a> zfY-~@Q&}n4GMprj)-(M3H|qVtWF;?#woi}RB`x@lL&9qKicU3j6@^AUd1TPv2>@?K zhYo?3l*4{rWz;A)mtbm7Pt%aIxMNDUkWx`LK*^^p!@%~G0pr_n*n$al%679{XG<9C zc;hmO0PMF8ELLJ`=YkdQ!HqZaw=xkTwF0pB|72gu1PoqmF!a@ zdTvy2Y`%Nl2f|*JjzXIs=IS~}HW80vjDj2xC9f;E1a|)$+vI^F9}`=jj!&Ow!tDiZ z4`H%vTg4)Z;f8a#igk{nTvu#MzC?w)fCWqB>5;Gx*5OJuk%$F0KNz%ZSKBDZD#>a+ z1a@lSA@@JXIW%XugLZ~|rc%6GI|GLOA#*BvWVRpeRf4GiYVZYBbH?71PrN^E#I+Vw zcGAtwwrObCho_}17~lQ2F7w}1KYz}Rb+=en^>FX+fWcGrAwy=qIoQV*;>$L$QWU&37vlvz5J zTJ%v;&f)H+iiolc{uNz;!|^4^ZB@{9x4ngc^8dnuI^som;wEKqXd3=_n5gM4A>`o< zWmG|^CXaB(pss#2*I=xFOZsWYyO6;FYG}eOESCt*56(#U7*pNwFjZm6$xDj?!~Mte zZ<&OlS7ofw1`YbLL821q6rSXDOlr|T;#I!z-5|5kmB7oo()1U{888^phoKo@^Yb&x z9D#Txr_?J8>BH7I4c4?P4tfc5R@k>koZUYI=_m~x9W0wkhuG z?FOms2u@?&tY1^AefN}gB%0;azRjQnl%k@Bmh&rea<|*8%U-ydXFp`{EY;U0eo#(p zwa!8mFg7K*Nvg;jScZxWg~}>T*P@qI89Bh^R6!;9q`3$~pEk(7o`kwOV-y=@shVLX zhVZ4bngIL7*aO7{?Fxaja@*_G!a)MUJm$Jmd&kE|43a}`TYll8^c$`_y+!m`&YeH7 zgO;1f+SYK?1Z}_7lt|5^dqXOfKzeKS>GOWWgygt4qya7boS)Uk-}(UEyFR5#SFKC4lqH~#?~g_T{<|H_bEjs+!RTDHu`;`SnvWpep`yf9OHbg}?dk_xXlY6b zytoKoesnVpazzw25Rt%jf11K-bMy_&RWrC~9=EUg81+oVgTDy4aW)hB`sL$UtUH}~ zFO3LBN3frp@5$rM$)=G~QuP1G0-NO!0jpAd(bwm6!40EK$y@_JM-xe>n&7lA$bTFc z0eikb8b)y?aT}X!LQ!&X?4E}m{zYdS>GilCbt2N28|D_Z$&LQeMR32l-4oq3!^RO_ zYb5n$VSq+He_?Wz4)nn}8d`M-_^tC9m$Qw1x4qKFa2`f8dA$j2(6sP@bM=P zDp!kclZbuqoyuA`s_t}tD$5UiwK-Clgw5jgGs-pn)|;-tJIG}eHw5<(KY)$PCMTa77sTOABTkG>fI%HxZF~0YeY5yJL)V4mfVLBo6!C1g*DNahiTC_=Tgs+GMhnQ zmt1^C&4PPs*^;~<{yZRliJr}t1xI~ABIJftc0}zP!K05kmVI~D+@TAJ8?XF@ST%p8 zR@I)`P%#57_h=k6J>co`JhuTG5he2=KY}<4-Q|0M;e$}MorYcwQfNqHbEwMk{-h~( z$F~N~CLue$wveMNey$ViQtR0&Kb{JzZ}0HTiVXdMt}#>Knt5Jqu5UGcXbK`GLb*M( zrFs1(WNx-u?6Ogf242wRQV!tX3$E5LBE1fGcu`JAGrdw!udk)9=;%{gN>UitvG$E7 z-Y(Q$E?T+-M4i_L*ELC}&~F&Dq>gn0-)ju9nR+C==m5@w!Y}!7@-3lU#D8St5>Aa2 z6=ce4=<@65#zcVYrqV*cVq2(x6DiF0eIsRno1u%=TP-|V-hQ-|o?FK(;Unrvrc~zY z&d#zmW+-oIS?xN_L0B*py3AR3-1XN?h#h6G7k-$^sBw2BI1W~s=Lx6%OEfI0qKy-dgq<6X=u!B%hHpoppL5(l041noBYENv-!DZRpbbHd+z^tCP< zwufTFrB25GVMMMG! zA`ub&^yFNgi?h~${a@|1*V^yg%$keY^Ujkp^@@Kg9W+-nD`>HnY)_?;-az8ACYn4i z0X3Sv`K608U3!X8JYvhub|cXPrF+5Y5)zX9bNoiL4<5kCsxG6so14l-UX$io1Xn+< zNCIBx66SifO6ks))cP?0-@=`Ogn?)WzpJSVuH+7=JU|DQ^KwZQvlV`dh{Hzv)R2UI z9*tDZ1Qw2OAnJ+y(l;PQTr1w9J)w)ecKtnVQy~O?ZRp3*jOtc(ARr;QAzm>CtC&CP z)7mW}RMp*Wt62PCHL+$#3ugLe^b9DWZu3|lf1$;#;tr(6KxV2(r1qIv6*L|rUeb-k zmDV(8_YxF7tY;eaxRS5Svo_eO8z|(gIJ8)i)u%UU?geEvvY3@29QEU}<78m);sn{| zZNbM^UCQV>k)BSW?VUf@3slK@D%1~%HF4QdTcY@k!Pl!6m#s>t`uZXRT@oT@C+jZg zw{>(Ix!z!NBGbQRxkMitGXx%X?EG((3%v$%KlxPNNY9(q)GPKC7`kDTqOx7(HZWOH zU&br~3N(>ww5*7WVGj28aiz#qkB~4W>Wa9?65_eMaW@iGmamao-QZ4)kppjg@`|1d z&sWv*(BI#M@h-V=SDhT)Au;&0NRZCb?&F%pUBm6c)f=mJaDiB%BZRHl&D)!pXUzg- z!3yo14%h6;l8KrgNdy0!4)@wC=V3IZajKp~BZ=Q#`iET8J;9()-cWIDvSJ@ zGB+8gVSDKy2K}m|0HjK3gG5O{g}0z4e(|FRYV{z3Q3h?aB%s!p!ER*ARS8xnf!W2{ zT2^4r{PKsah@U^U^3VJ_u&H|7yRdES()z*T%Ap^jyrp1ana*J`N|Kkyhb>l(Z)=yH zLtd0Ops_aay~&Hfh)z=NJJA_2{Wek8Z+gW;P0Mw)@~xh3)Nxq{hy zL%JHyP9_ohPNUNSfEo^DmDID|K^Kxx~A=7Bs-Lg8Kd<9UQ;L! z^UgRw*G_ag=V`2StcLb4?djx%P;`R|i7l%)>M!wizv&%(e!mrT9aRf;>rz9n0frb~ z65NF#OD>_JNhI8u6&)kPShHWQn{gDNA`QJqQWL9e zeoD*deA{~j?*dfFZXUALz0h`t`?z#lZXpPB{1U1JnMxGw=w6}p-IT6)p7fK??yAX! z2g&2_s4p&a!FoOE5plHln!*jhguO;DK(h;oCBd7`oSW3AbS@(`QVWl>YlFF6jPQtKm^Sq1>S3OQ|6qp0Mu zG!vGL7E5F&%Yc#6$7#IRCPb3cwqj2gP zXf0ok@-qNLZFd_0(m0A-Z zvB89*E5-NOyJ3}ReNI^j>`4abl5N>47RF74&EOjGL`8r_QFbF=d(M-jBM>C!_jeBr zO7aQF77kwjSf6)?;ALP&KkkXAfes?Ct4IdpiP2_YzN(xz0!aoVhJ-|8*{6_;&%C}n z?UWdsy-5;2CY>KHoc|G8_;WwcHIDoSJRmYjbSGV<8!%+d4A2+M(`>K-&z6; zkVu`YMM*~a&tx$?{00G<5gzX53OeY3*V$r08FH6Z6y?vt3_dOArkHhFV3)_`emn`( zAUJ|+HxRZt{U%`{Gmp|{5q z*z^r%NuRz-)9=D&uCxdgcHC{Y7J}j2Rb^03(e5U5k;tXohT!C|{dJ=O)lu;}-ld1D zue{tw!#ls<`ogAmYj6I2kD{S4ym8mzTE1t%N5lL(Wo*Li#CjjU%4#nm0{rY;ryB;+ zc_vN4AiME7Pl5q+v{X?adVf7uh#*J3Ym&xISOT+#?GGss3=8dxPsx*aculefFX<16 zvzFpAL0qmyO$DNOS%ads!6ldn-ZFCFuez?|IIIndr>Ua3PAnyiT)imY1Sxv+peP%Wv6bM_jK$Tw4~N! zK;oKci0qsoI_T_2@iAU!9?}^0#Mj{lB3l*Pt)Wsp?rrW;BsUUDE9sk?XKgt6xZZg4 zZ?GO=^U9uXs3_=GGvGkT^qgOun8Tf>mgb(`Uf`w=T^LKIymnN`CGy2GUhd5p-4^TU z7<}Ef+gFOy=tBk*s0@dvCoN2 zBfY>Sf}_sVZ2+4Kwn?|*_)Y*OyIT`;>5i(4+VGcQ$vP-{Pgq>EM@VFjW)!s^8Wn)K z7L7%s2pff*L^kdfv7J;9yzsT>ha%iff0uR?F{nF{tYC%PCIQS=EvnK_g># zFW4X%h!4eew<<@9_EIfN3K-eNF`}w|*GY~#0hie^*)gkhxQ*$a_#d?2kj&)BohLTT z0(d8Kwqjn*1JD1UjH>EqeOdh`b_6D^~`mC$5fV(T&z?w z`kM8Iw@qL$U;0VABx^ZGMGZjyx8z|SJHs>5T`AsR)%C^`8D~a-A3K)cgC*~?vH73F zds|sYqmmdWf!gwnM-)&HOIvTV=_$T^qw6Iih3xM}X|l!XV7cU@K5mKIoW0+l5|dMi zBi(8G*|~F|4L8a0mTm>U^zskXh4|F@_AeRLndYZ(-IGwgc*UK-IpzA|%uhp{4?70{ z`H}-cCD_c)aQ0r`6U2DUg_KD$Zyvyu_Kdg1aM=ecf29~t*;(4<3yUScL(bjzr`j+b z9-3FLYqH3;^C@^%**pT&VZXoKymIRd5VH_eQ+c+)d#Wbw#*y(-E->1p7T`Ws3s1suUl!(_GX6Zucd zt%QFJ5}Ge;_(t+=op*Y_n3r!+mM1lIqWQVuoj#osDqv~s%OF70AgLDWD%w|7)mALZ zKjfeOsmYCWNS64V#PjJC*CQ^8fXADOu#sp_pptrCJ4@)M+1m;8NA_3m&rk-ySX`P8 zyWTlavtbKPfS>I&qXF^j=2wm%e**$`GCPEW0@v!}#yXmtDH(g@w=Af^axIR}Z}~;l ze85ntx1YGx{!-oqMhTsN* zAPMd^hRnbtreXUylQd0_%h(NG|2oex`xsSbjN})-Mf@4JaGFY3BnRvSC|O>KgV9$u zTj|pMu z%oz&;E`TtH17+n^hJtba#ED_p*b$;g0h{R2wV<&cvFBBq!uB)T_TO( z*ZX=`_hTUM`s1^&nRtm{jqt5P#zVIG{9Vps)A)_RXUy9fHIj3dGzafYgs7@(CKs0Q zIc5xLLgA{6iV#BH2l8c)ioz|;3j(mx|E?vioAOxMu#anne9Y*#I$6eqHQb3{;&^!e zYY0RCDJ*HK^UwXR*a09B9LU7Aosx>g*hezyZQfd*;oi*Sl(G^Mg+MAHl#thunp(;z rEj2ZHC1ouorNL_f>iM;tsNzycj}FH`=)up0 z4rGF+lVL7w zjPJBplxg#Jh=0c|sP#JdLA(xe_yH@J{kHbZ-%~oSq;>HHq(@tsI#MMw4d#k&#yTDcDR_ zUv|#8T1WE^zKxF|mJXJ4?7s!Xa+I~tI*_fIXz|0hgcS} z_W2YNz`342&4~`g@&c+^2jE)I;AhJy^Af}|*?+c=KmvI#qhE7)4#G9Q0vkgd7D+O~ zlPH^3Md9v#|IN^kyB<4pCe1fJ z4=A%^X@7hJ3FP&heLN9jc@*i`jjMT*MI~qD7eo5w0>$e$SFTz$@ho$vQmh$vfb_|B zihfQFvD}_GR&mECits17@I14V=2rMBaV$?e7*#$g{sbx64@edLoXnBvuNk{xao7Bc zilXw}Atl>I^9tUxz*{V90d%;cfhK-~l;jsQ6o36Y%DW&kJG49xKN~0-*%%U>zF!-9 zZl9LD#BWE8Lz#pF1ca=P^y`S+tL@2I=Yaj)=LUHCd$~b^kO;&#&;;^sc9^9nI z*?-|TY@}#!|BR2WE$wTuF&QsJ@5G?uVD6z@Ed7Mt6_@-V?uIzLjlmGF#Q(s0$`#|B z*a;WoP5flMiHps)Ih8BC^)tRg--~(?KQf%!<-5RCefTyxwP{;CPDiE41~-RfI0aLb zFz_i&TasbRP>oNP<5T!8SONnDwmX0&aeoUW!=sq2jNe|ihIG-vxmX>OAyu|9nJIfN zI*=~5Mq1`QIEb?#3NM&42Ve(mZtQ>qaF%uvWy%aC{R)$e&VZEc3`~=#BK#Gx6TW~1 z@)dT*;Q0P)+>F>0uR(hB8urFaNGHU91sj+H8{i;Zis$edeltG9bGX#(vjJvDBP0nC lF=E7s5hF&77%^hR_zUge9)e`--A@1j002ovPDHLkV1mCt0r>y` literal 1380 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+yeRz_>QRC&U%V)zC2?MMEM4Dto3h z10$@jB*-tAfsu)sg_Vt+gOiJwk6%zoSX4}0LQ+avPF_J-MO95*SKrXc*u>P#+``hz z+Sbm|$=Suz%iG7-&p#kAC^{xKEk zf<=p$tysNw{f13jw(s1vXWxN?M~|O4b?*Gd%U5sSx^wTrqbJW^ynOxk{m0K=zyJLG z_iE)+cLoNg8=fwXArYK!5B_x)E|p>b@csLaY~|_E9;z=KF3E*Ortv%X^l+Uy)qcjo zdx?U3;}qA8oJ))=cWk`-JOAD1yKnbN-@d!>Z^WLs8{6O4AKaA7{lDv#W$DZ3Mz2rV z$JVTNf5>UEGum|9%Dbm5D{TG-_ZZyl-^;6OeC)k*$Myfx-wU?$Uwo5)B`+-sG+_vmCb$I%`L@$ z_+E?2Z1G$hSnQwFv*;SL!`|Ho&Ey~YPQUev@y(}0W?P+@vL-(YW{71iyTKsz`O3C= z?%i9wb7dUtTeF#8nK^%9wD3Rcd${74V(WLdBkdyB8TK4DSS+Bv()Nv8bMT@SybizT zC2<_M&tuG-dtkA~%@1dTukyx*}GizJk|z ziEY>Bj1>VX4K~g@Gk!E2vgTM}uc0Owv3y6h$@ZfG*&H#;Bf=_XFG^7~I2~cHkZ^ag zMXPF;v%xXR*TNEeManmL7IFDT9SskX%j5qdh=m%?*YjyZL^*y z%vs`zbJiA3e7atvv+PYMP>EwBB6D@HejwN*qzlC${w(!1^_5NT0v+(BE zQ&0VRbEKi^V_om9_5KTczv{jg<5zThuk?D~<_noq_DP>tayrlZ>zrap+RS~e(|2E3 z_leK~#7F?b-v3TwNH(@o)XvR&Co3YTGu0 z+P1B*wr$&PP}^PO?Y~~{@XWdQ?n!>};CW`Q-kdKyw364+3BGk87+}Tlze1wPX|)38 zL!voj;a?v>4yzO}8xoI`RtWzKBoW!nUcfX+B959l{7(=YWPdhm0h1v%IAq4~KSJz~ z(QE}wfY@Q5nZo}7aX@;r6fg$jfSqOt|2@PBX^dXLNQe`*8ae#85En>g)B=V;Tws$C z!+!&Dp%g|6?~joX7g~=1okIHIS7b+Z48cx>Lfj}4hcE{9kQ;x%-yI=+@iQ``GWuc@ z0wEd-#cm8iO@HLTukf=a?B6Jl9$1BE5EBW+CiF)Yq;mXhZ5|sw7H|b(LE-SC0N)}I z3u+wwFlY|3kb&`?2pd2wpjTp7gX$0y>t@R(u>!<|I@og)R0d)qEgZQMEDAA!M$X(0 z=Z6?rZC5-KwG;I7;(U9o`$FksnkS z@H0dsSydO13!;&_stafW(a2=g1~|Z#R5)QQU+iqM*AA zC=Q87FdD)D zfk9tW666=mz{teR!pg?Z$<4#ZFCZu+EFvlZXk=z? zVQpjQ~S4m2uQO1WXE-JY5_^A~??;><#x$ zWMF@Ae{SxI6^5-7#AZ+GTo`26b;>-trN&=UaM77t@B7Q&?Rz$&*_tQSEnIea5SWk6CzZ7e7`$^Jb|wyRvu5)r2JeXtu-$ zhS7Eo@#1^g7UWKh)4p)^WSRTIm50jSFI?VS_xD23vUpLeGUFEli@d`nzLcq737R>1 z^3$nohfTA)!`nA!ws@93*Sov^nxt#;)*8$Co(Hc+@A_Od`PZwf?2rF4oa%WjyWyP0 zHr+XiGR6#f7w#zESar|eOAg6jW-(OL$n;8S%m62X}M43^zaQ_%Cu5FB(nL6)l?l1 zl@-@mJM&iYIzAG)y3QeKT9)^Oh-J6JJ#q}1SXw6aEMj+xWV<3^z_T#$*PfTI&x3!R zamtvN8`ghd+k4g9I?gXdZLhUGu!>lEoULWskL%kne~?4 diff --git a/public/web-push-icon_reblog.png b/public/web-push-icon_reblog.png index 0f555ed09fc89386be9f11d86a4d8b3bb034733d..4a7104bf38d00b5c22aed25477488a35e63d45c3 100644 GIT binary patch delta 576 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 z